@@ -1,9626 +0,0 @@
4−function F(arity, fun, wrapper) {
11− return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })
14− return F(3, fun, function(a) {
15− return function(b) { return function(c) { return fun(a, b, c); }; };
19− return F(4, fun, function(a) { return function(b) { return function(c) {
20− return function(d) { return fun(a, b, c, d); }; }; };
24− return F(5, fun, function(a) { return function(b) { return function(c) {
25− return function(d) { return function(e) { return fun(a, b, c, d, e); }; }; }; };
29− return F(6, fun, function(a) { return function(b) { return function(c) {
30− return function(d) { return function(e) { return function(f) {
31− return fun(a, b, c, d, e, f); }; }; }; }; };
35− return F(7, fun, function(a) { return function(b) { return function(c) {
36− return function(d) { return function(e) { return function(f) {
37− return function(g) { return fun(a, b, c, d, e, f, g); }; }; }; }; }; };
41− return F(8, fun, function(a) { return function(b) { return function(c) {
42− return function(d) { return function(e) { return function(f) {
43− return function(g) { return function(h) {
44− return fun(a, b, c, d, e, f, g, h); }; }; }; }; }; }; };
48− return F(9, fun, function(a) { return function(b) { return function(c) {
49− return function(d) { return function(e) { return function(f) {
50− return function(g) { return function(h) { return function(i) {
51− return fun(a, b, c, d, e, f, g, h, i); }; }; }; }; }; }; }; };
55−function A2(fun, a, b) {
56− return fun.a === 2 ? fun.f(a, b) : fun(a)(b);
58−function A3(fun, a, b, c) {
59− return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);
61−function A4(fun, a, b, c, d) {
62− return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);
64−function A5(fun, a, b, c, d, e) {
65− return fun.a === 5 ? fun.f(a, b, c, d, e) : fun(a)(b)(c)(d)(e);
67−function A6(fun, a, b, c, d, e, f) {
68− return fun.a === 6 ? fun.f(a, b, c, d, e, f) : fun(a)(b)(c)(d)(e)(f);
70−function A7(fun, a, b, c, d, e, f, g) {
71− return fun.a === 7 ? fun.f(a, b, c, d, e, f, g) : fun(a)(b)(c)(d)(e)(f)(g);
73−function A8(fun, a, b, c, d, e, f, g, h) {
74− return fun.a === 8 ? fun.f(a, b, c, d, e, f, g, h) : fun(a)(b)(c)(d)(e)(f)(g)(h);
76−function A9(fun, a, b, c, d, e, f, g, h, i) {
77− return fun.a === 9 ? fun.f(a, b, c, d, e, f, g, h, i) : fun(a)(b)(c)(d)(e)(f)(g)(h)(i);
80−console.warn('Compiled in DEV mode. Follow the advice at https://elm-lang.org/0.19.1/optimize for better performance and smaller assets.');
83−var _JsArray_empty = [];
85−function _JsArray_singleton(value)
90−function _JsArray_length(array)
95−var _JsArray_initialize = F3(function(size, offset, func)
97− var result = new Array(size);
99− for (var i = 0; i < size; i++)
101− result[i] = func(offset + i);
107−var _JsArray_initializeFromList = F2(function (max, ls)
109− var result = new Array(max);
111− for (var i = 0; i < max && ls.b; i++)
118− return _Utils_Tuple2(result, ls);
121−var _JsArray_unsafeGet = F2(function(index, array)
123− return array[index];
126−var _JsArray_unsafeSet = F3(function(index, value, array)
128− var length = array.length;
129− var result = new Array(length);
131− for (var i = 0; i < length; i++)
133− result[i] = array[i];
136− result[index] = value;
140−var _JsArray_push = F2(function(value, array)
142− var length = array.length;
143− var result = new Array(length + 1);
145− for (var i = 0; i < length; i++)
147− result[i] = array[i];
150− result[length] = value;
154−var _JsArray_foldl = F3(function(func, acc, array)
156− var length = array.length;
158− for (var i = 0; i < length; i++)
160− acc = A2(func, array[i], acc);
166−var _JsArray_foldr = F3(function(func, acc, array)
168− for (var i = array.length - 1; i >= 0; i--)
170− acc = A2(func, array[i], acc);
176−var _JsArray_map = F2(function(func, array)
178− var length = array.length;
179− var result = new Array(length);
181− for (var i = 0; i < length; i++)
183− result[i] = func(array[i]);
189−var _JsArray_indexedMap = F3(function(func, offset, array)
191− var length = array.length;
192− var result = new Array(length);
194− for (var i = 0; i < length; i++)
196− result[i] = A2(func, offset + i, array[i]);
202−var _JsArray_slice = F3(function(from, to, array)
204− return array.slice(from, to);
207−var _JsArray_appendN = F3(function(n, dest, source)
209− var destLen = dest.length;
210− var itemsToCopy = n - destLen;
212− if (itemsToCopy > source.length)
214− itemsToCopy = source.length;
217− var size = destLen + itemsToCopy;
218− var result = new Array(size);
220− for (var i = 0; i < destLen; i++)
222− result[i] = dest[i];
225− for (var i = 0; i < itemsToCopy; i++)
227− result[i + destLen] = source[i];
238−var _Debug_log = F2(function(tag, value)
240− console.log(tag + ': ' + _Debug_toString(value));
247−function _Debug_todo(moduleName, region)
249− return function(message) {
250− _Debug_crash(8, moduleName, region, message);
254−function _Debug_todoCase(moduleName, region, value)
256− return function(message) {
257− _Debug_crash(9, moduleName, region, value, message);
265−function _Debug_toString(value)
267− return _Debug_toAnsiString(false, value);
270−function _Debug_toAnsiString(ansi, value)
272− if (typeof value === 'function')
274− return _Debug_internalColor(ansi, '<function>');
277− if (typeof value === 'boolean')
279− return _Debug_ctorColor(ansi, value ? 'True' : 'False');
282− if (typeof value === 'number')
284− return _Debug_numberColor(ansi, value + '');
287− if (value instanceof String)
289− return _Debug_charColor(ansi, "'" + _Debug_addSlashes(value, true) + "'");
292− if (typeof value === 'string')
294− return _Debug_stringColor(ansi, '"' + _Debug_addSlashes(value, false) + '"');
297− if (typeof value === 'object' && '$' in value)
301− if (typeof tag === 'number')
303− return _Debug_internalColor(ansi, '<internals>');
309− for (var k in value)
311− if (k === '$') continue;
312− output.push(_Debug_toAnsiString(ansi, value[k]));
314− return '(' + output.join(',') + ')';
317− if (tag === 'Set_elm_builtin')
319− return _Debug_ctorColor(ansi, 'Set')
320− + _Debug_fadeColor(ansi, '.fromList') + ' '
321− + _Debug_toAnsiString(ansi, $elm$core$Set$toList(value));
324− if (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin')
326− return _Debug_ctorColor(ansi, 'Dict')
327− + _Debug_fadeColor(ansi, '.fromList') + ' '
328− + _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value));
331− if (tag === 'Array_elm_builtin')
333− return _Debug_ctorColor(ansi, 'Array')
334− + _Debug_fadeColor(ansi, '.fromList') + ' '
335− + _Debug_toAnsiString(ansi, $elm$core$Array$toList(value));
338− if (tag === '::' || tag === '[]')
342− value.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b)
344− for (; value.b; value = value.b) // WHILE_CONS
346− output += ',' + _Debug_toAnsiString(ansi, value.a);
348− return output + ']';
352− for (var i in value)
354− if (i === '$') continue;
355− var str = _Debug_toAnsiString(ansi, value[i]);
357− var parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '"' || str.indexOf(' ') < 0;
358− output += ' ' + (parenless ? str : '(' + str + ')');
360− return _Debug_ctorColor(ansi, tag) + output;
363− if (typeof DataView === 'function' && value instanceof DataView)
365− return _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>');
368− if (typeof File !== 'undefined' && value instanceof File)
370− return _Debug_internalColor(ansi, '<' + value.name + '>');
373− if (typeof value === 'object')
376− for (var key in value)
378− var field = key[0] === '_' ? key.slice(1) : key;
379− output.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key]));
381− if (output.length === 0)
385− return '{ ' + output.join(', ') + ' }';
388− return _Debug_internalColor(ansi, '<internals>');
391−function _Debug_addSlashes(str, isChar)
394− .replace(/\\/g, '\\\\')
395− .replace(/\n/g, '\\n')
396− .replace(/\t/g, '\\t')
397− .replace(/\r/g, '\\r')
398− .replace(/\v/g, '\\v')
399− .replace(/\0/g, '\\0');
403− return s.replace(/\'/g, '\\\'');
407− return s.replace(/\"/g, '\\"');
411−function _Debug_ctorColor(ansi, string)
413− return ansi ? '\x1b[96m' + string + '\x1b[0m' : string;
416−function _Debug_numberColor(ansi, string)
418− return ansi ? '\x1b[95m' + string + '\x1b[0m' : string;
421−function _Debug_stringColor(ansi, string)
423− return ansi ? '\x1b[93m' + string + '\x1b[0m' : string;
426−function _Debug_charColor(ansi, string)
428− return ansi ? '\x1b[92m' + string + '\x1b[0m' : string;
431−function _Debug_fadeColor(ansi, string)
433− return ansi ? '\x1b[37m' + string + '\x1b[0m' : string;
436−function _Debug_internalColor(ansi, string)
438− return ansi ? '\x1b[36m' + string + '\x1b[0m' : string;
441−function _Debug_toHexDigit(n)
443− return String.fromCharCode(n < 10 ? 48 + n : 55 + n);
452−function _Debug_crash(identifier, fact1, fact2, fact3, fact4)
457− throw new Error('What node should I take over? In JavaScript I need something like:\n\n Elm.Main.init({\n node: document.getElementById("elm-node")\n })\n\nYou need to do this with any Browser.sandbox or Browser.element program.');
460− throw new Error('Browser.application programs cannot handle URLs like this:\n\n ' + document.location.href + '\n\nWhat is the root? The root of your file system? Try looking at this program with `elm reactor` or some other server.');
463− var jsonErrorString = fact1;
464− throw new Error('Problem with the flags given to your Elm program on initialization.\n\n' + jsonErrorString);
467− var portName = fact1;
468− throw new Error('There can only be one port named `' + portName + '`, but your program has multiple.');
471− var portName = fact1;
472− var problem = fact2;
473− throw new Error('Trying to send an unexpected type of value through port `' + portName + '`:\n' + problem);
476− throw new Error('Trying to use `(==)` on functions.\nThere is no way to know if functions are "the same" in the Elm sense.\nRead more about this at https://package.elm-lang.org/packages/elm/core/latest/Basics#== which describes why it is this way and what the better version will look like.');
479− var moduleName = fact1;
480− throw new Error('Your page is loading multiple Elm scripts with a module named ' + moduleName + '. Maybe a duplicate script is getting loaded accidentally? If not, rename one of them so I know which is which!');
483− var moduleName = fact1;
485− var message = fact3;
486− throw new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\n\n' + message);
489− var moduleName = fact1;
492− var message = fact4;
494− 'TODO in module `' + moduleName + '` from the `case` expression '
495− + _Debug_regionToString(region) + '\n\nIt received the following value:\n\n '
496− + _Debug_toString(value).replace('\n', '\n ')
497− + '\n\nBut the branch that handles it says:\n\n ' + message.replace('\n', '\n ')
501− throw new Error('Bug in https://github.com/elm/virtual-dom/issues');
504− throw new Error('Cannot perform mod 0. Division by zero error.');
508−function _Debug_regionToString(region)
510− if (region.start.line === region.end.line)
512− return 'on line ' + region.start.line;
514− return 'on lines ' + region.start.line + ' through ' + region.end.line;
521−function _Utils_eq(x, y)
524− var pair, stack = [], isEqual = _Utils_eqHelp(x, y, 0, stack);
525− isEqual && (pair = stack.pop());
526− isEqual = _Utils_eqHelp(pair.a, pair.b, 0, stack)
533−function _Utils_eqHelp(x, y, depth, stack)
540− if (typeof x !== 'object' || x === null || y === null)
542− typeof x === 'function' && _Debug_crash(5);
548− stack.push(_Utils_Tuple2(x,y));
553− if (x.$ === 'Set_elm_builtin')
555− x = $elm$core$Set$toList(x);
556− y = $elm$core$Set$toList(y);
558− if (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin')
560− x = $elm$core$Dict$toList(x);
561− y = $elm$core$Dict$toList(y);
568− x = $elm$core$Dict$toList(x);
569− y = $elm$core$Dict$toList(y);
575− if (!_Utils_eqHelp(x[key], y[key], depth + 1, stack))
583−var _Utils_equal = F2(_Utils_eq);
584−var _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); });
590−// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on
591−// the particular integer values assigned to LT, EQ, and GT.
593−function _Utils_cmp(x, y, ord)
595− if (typeof x !== 'object')
597− return x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;
601− if (x instanceof String)
603− var a = x.valueOf();
604− var b = y.valueOf();
605− return a === b ? 0 : a < b ? -1 : 1;
610− if (typeof x.$ === 'undefined')
616− return (ord = _Utils_cmp(x.a, y.a))
618− : (ord = _Utils_cmp(x.b, y.b))
620− : _Utils_cmp(x.c, y.c);
623− // traverse conses until end of a list or a mismatch
624− for (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {} // WHILE_CONSES
625− return ord || (x.b ? /*GT*/ 1 : y.b ? /*LT*/ -1 : /*EQ*/ 0);
628−var _Utils_lt = F2(function(a, b) { return _Utils_cmp(a, b) < 0; });
629−var _Utils_le = F2(function(a, b) { return _Utils_cmp(a, b) < 1; });
630−var _Utils_gt = F2(function(a, b) { return _Utils_cmp(a, b) > 0; });
631−var _Utils_ge = F2(function(a, b) { return _Utils_cmp(a, b) >= 0; });
633−var _Utils_compare = F2(function(x, y)
635− var n = _Utils_cmp(x, y);
636− return n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ;
642−var _Utils_Tuple0 = { $: '#0' };
644−function _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; }
646−function _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }
648−function _Utils_chr(c) { return new String(c); }
653−function _Utils_update(oldRecord, updatedFields)
657− for (var key in oldRecord)
659− newRecord[key] = oldRecord[key];
662− for (var key in updatedFields)
664− newRecord[key] = updatedFields[key];
673−var _Utils_append = F2(_Utils_ap);
675−function _Utils_ap(xs, ys)
678− if (typeof xs === 'string')
688− var root = _List_Cons(xs.a, ys);
690− for (var curr = root; xs.b; xs = xs.b) // WHILE_CONS
692− curr = curr.b = _List_Cons(xs.a, ys);
699−var _List_Nil = { $: '[]' };
701−function _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; }
704−var _List_cons = F2(_List_Cons);
706−function _List_fromArray(arr)
708− var out = _List_Nil;
709− for (var i = arr.length; i--; )
711− out = _List_Cons(arr[i], out);
716−function _List_toArray(xs)
718− for (var out = []; xs.b; xs = xs.b) // WHILE_CONS
725−var _List_map2 = F3(function(f, xs, ys)
727− for (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES
729− arr.push(A2(f, xs.a, ys.a));
731− return _List_fromArray(arr);
734−var _List_map3 = F4(function(f, xs, ys, zs)
736− for (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES
738− arr.push(A3(f, xs.a, ys.a, zs.a));
740− return _List_fromArray(arr);
743−var _List_map4 = F5(function(f, ws, xs, ys, zs)
745− for (var arr = []; ws.b && xs.b && ys.b && zs.b; ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES
747− arr.push(A4(f, ws.a, xs.a, ys.a, zs.a));
749− return _List_fromArray(arr);
752−var _List_map5 = F6(function(f, vs, ws, xs, ys, zs)
754− for (var arr = []; vs.b && ws.b && xs.b && ys.b && zs.b; vs = vs.b, ws = ws.b, xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES
756− arr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a));
758− return _List_fromArray(arr);
761−var _List_sortBy = F2(function(f, xs)
763− return _List_fromArray(_List_toArray(xs).sort(function(a, b) {
764− return _Utils_cmp(f(a), f(b));
768−var _List_sortWith = F2(function(f, xs)
770− return _List_fromArray(_List_toArray(xs).sort(function(a, b) {
771− var ord = A2(f, a, b);
772− return ord === $elm$core$Basics$EQ ? 0 : ord === $elm$core$Basics$LT ? -1 : 1;
780−var _Basics_add = F2(function(a, b) { return a + b; });
781−var _Basics_sub = F2(function(a, b) { return a - b; });
782−var _Basics_mul = F2(function(a, b) { return a * b; });
783−var _Basics_fdiv = F2(function(a, b) { return a / b; });
784−var _Basics_idiv = F2(function(a, b) { return (a / b) | 0; });
785−var _Basics_pow = F2(Math.pow);
787−var _Basics_remainderBy = F2(function(b, a) { return a % b; });
789−// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf
790−var _Basics_modBy = F2(function(modulus, x)
792− var answer = x % modulus;
793− return modulus === 0
796− ((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0))
804−var _Basics_pi = Math.PI;
805−var _Basics_e = Math.E;
806−var _Basics_cos = Math.cos;
807−var _Basics_sin = Math.sin;
808−var _Basics_tan = Math.tan;
809−var _Basics_acos = Math.acos;
810−var _Basics_asin = Math.asin;
811−var _Basics_atan = Math.atan;
812−var _Basics_atan2 = F2(Math.atan2);
817−function _Basics_toFloat(x) { return x; }
818−function _Basics_truncate(n) { return n | 0; }
819−function _Basics_isInfinite(n) { return n === Infinity || n === -Infinity; }
821−var _Basics_ceiling = Math.ceil;
822−var _Basics_floor = Math.floor;
823−var _Basics_round = Math.round;
824−var _Basics_sqrt = Math.sqrt;
825−var _Basics_log = Math.log;
826−var _Basics_isNaN = isNaN;
831−function _Basics_not(bool) { return !bool; }
832−var _Basics_and = F2(function(a, b) { return a && b; });
833−var _Basics_or = F2(function(a, b) { return a || b; });
834−var _Basics_xor = F2(function(a, b) { return a !== b; });
838−var _String_cons = F2(function(chr, str)
843−function _String_uncons(string)
845− var word = string.charCodeAt(0);
847− ? $elm$core$Maybe$Just(
848− 0xD800 <= word && word <= 0xDBFF
849− ? _Utils_Tuple2(_Utils_chr(string[0] + string[1]), string.slice(2))
850− : _Utils_Tuple2(_Utils_chr(string[0]), string.slice(1))
852− : $elm$core$Maybe$Nothing;
855−var _String_append = F2(function(a, b)
860−function _String_length(str)
865−var _String_map = F2(function(func, string)
867− var len = string.length;
868− var array = new Array(len);
872− var word = string.charCodeAt(i);
873− if (0xD800 <= word && word <= 0xDBFF)
875− array[i] = func(_Utils_chr(string[i] + string[i+1]));
879− array[i] = func(_Utils_chr(string[i]));
882− return array.join('');
885−var _String_filter = F2(function(isGood, str)
888− var len = str.length;
893− var word = str.charCodeAt(i);
895− if (0xD800 <= word && word <= 0xDBFF)
901− if (isGood(_Utils_chr(char)))
906− return arr.join('');
909−function _String_reverse(str)
911− var len = str.length;
912− var arr = new Array(len);
916− var word = str.charCodeAt(i);
917− if (0xD800 <= word && word <= 0xDBFF)
919− arr[len - i] = str[i + 1];
921− arr[len - i] = str[i - 1];
926− arr[len - i] = str[i];
930− return arr.join('');
933−var _String_foldl = F3(function(func, state, string)
935− var len = string.length;
939− var char = string[i];
940− var word = string.charCodeAt(i);
942− if (0xD800 <= word && word <= 0xDBFF)
947− state = A2(func, _Utils_chr(char), state);
952−var _String_foldr = F3(function(func, state, string)
954− var i = string.length;
957− var char = string[i];
958− var word = string.charCodeAt(i);
959− if (0xDC00 <= word && word <= 0xDFFF)
962− char = string[i] + char;
964− state = A2(func, _Utils_chr(char), state);
969−var _String_split = F2(function(sep, str)
971− return str.split(sep);
974−var _String_join = F2(function(sep, strs)
976− return strs.join(sep);
979−var _String_slice = F3(function(start, end, str) {
980− return str.slice(start, end);
983−function _String_trim(str)
988−function _String_trimLeft(str)
990− return str.replace(/^\s+/, '');
993−function _String_trimRight(str)
995− return str.replace(/\s+$/, '');
998−function _String_words(str)
1000− return _List_fromArray(str.trim().split(/\s+/g));
1003−function _String_lines(str)
1005− return _List_fromArray(str.split(/\r\n|\r|\n/g));
1008−function _String_toUpper(str)
1010− return str.toUpperCase();
1013−function _String_toLower(str)
1015− return str.toLowerCase();
1018−var _String_any = F2(function(isGood, string)
1020− var i = string.length;
1023− var char = string[i];
1024− var word = string.charCodeAt(i);
1025− if (0xDC00 <= word && word <= 0xDFFF)
1028− char = string[i] + char;
1030− if (isGood(_Utils_chr(char)))
1038−var _String_all = F2(function(isGood, string)
1040− var i = string.length;
1043− var char = string[i];
1044− var word = string.charCodeAt(i);
1045− if (0xDC00 <= word && word <= 0xDFFF)
1048− char = string[i] + char;
1050− if (!isGood(_Utils_chr(char)))
1058−var _String_contains = F2(function(sub, str)
1060− return str.indexOf(sub) > -1;
1063−var _String_startsWith = F2(function(sub, str)
1065− return str.indexOf(sub) === 0;
1068−var _String_endsWith = F2(function(sub, str)
1070− return str.length >= sub.length &&
1071− str.lastIndexOf(sub) === str.length - sub.length;
1074−var _String_indexes = F2(function(sub, str)
1076− var subLen = sub.length;
1086− while ((i = str.indexOf(sub, i)) > -1)
1092− return _List_fromArray(is);
1098−function _String_fromNumber(number)
1100− return number + '';
1106−function _String_toInt(str)
1109− var code0 = str.charCodeAt(0);
1110− var start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0;
1112− for (var i = start; i < str.length; ++i)
1114− var code = str.charCodeAt(i);
1115− if (code < 0x30 || 0x39 < code)
1117− return $elm$core$Maybe$Nothing;
1119− total = 10 * total + code - 0x30;
1123− ? $elm$core$Maybe$Nothing
1124− : $elm$core$Maybe$Just(code0 == 0x2D ? -total : total);
1128−// FLOAT CONVERSIONS
1130−function _String_toFloat(s)
1132− // check if it is a hex, octal, or binary number
1133− if (s.length === 0 || /[\sxbo]/.test(s))
1135− return $elm$core$Maybe$Nothing;
1138− // faster isNaN check
1139− return n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing;
1142−function _String_fromList(chars)
1144− return _List_toArray(chars).join('');
1150−function _Char_toCode(char)
1152− var code = char.charCodeAt(0);
1153− if (0xD800 <= code && code <= 0xDBFF)
1155− return (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000
1160−function _Char_fromCode(code)
1163− (code < 0 || 0x10FFFF < code)
1167− ? String.fromCharCode(code)
1170− String.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00)
1175−function _Char_toUpper(char)
1177− return _Utils_chr(char.toUpperCase());
1180−function _Char_toLower(char)
1182− return _Utils_chr(char.toLowerCase());
1185−function _Char_toLocaleUpper(char)
1187− return _Utils_chr(char.toLocaleUpperCase());
1190−function _Char_toLocaleLower(char)
1192− return _Utils_chr(char.toLocaleLowerCase());
1198−function _Json_errorToString(error)
1200− return $elm$json$Json$Decode$errorToString(error);
1207−function _Json_succeed(msg)
1215−function _Json_fail(msg)
1223−function _Json_decodePrim(decoder)
1225− return { $: 2, b: decoder };
1228−var _Json_decodeInt = _Json_decodePrim(function(value) {
1229− return (typeof value !== 'number')
1230− ? _Json_expecting('an INT', value)
1232− (-2147483647 < value && value < 2147483647 && (value | 0) === value)
1233− ? $elm$core$Result$Ok(value)
1235− (isFinite(value) && !(value % 1))
1236− ? $elm$core$Result$Ok(value)
1237− : _Json_expecting('an INT', value);
1240−var _Json_decodeBool = _Json_decodePrim(function(value) {
1241− return (typeof value === 'boolean')
1242− ? $elm$core$Result$Ok(value)
1243− : _Json_expecting('a BOOL', value);
1246−var _Json_decodeFloat = _Json_decodePrim(function(value) {
1247− return (typeof value === 'number')
1248− ? $elm$core$Result$Ok(value)
1249− : _Json_expecting('a FLOAT', value);
1252−var _Json_decodeValue = _Json_decodePrim(function(value) {
1253− return $elm$core$Result$Ok(_Json_wrap(value));
1256−var _Json_decodeString = _Json_decodePrim(function(value) {
1257− return (typeof value === 'string')
1258− ? $elm$core$Result$Ok(value)
1259− : (value instanceof String)
1260− ? $elm$core$Result$Ok(value + '')
1261− : _Json_expecting('a STRING', value);
1264−function _Json_decodeList(decoder) { return { $: 3, b: decoder }; }
1265−function _Json_decodeArray(decoder) { return { $: 4, b: decoder }; }
1267−function _Json_decodeNull(value) { return { $: 5, c: value }; }
1269−var _Json_decodeField = F2(function(field, decoder)
1278−var _Json_decodeIndex = F2(function(index, decoder)
1287−function _Json_decodeKeyValuePairs(decoder)
1295−function _Json_mapMany(f, decoders)
1304−var _Json_andThen = F2(function(callback, decoder)
1313−function _Json_oneOf(decoders)
1324−var _Json_map1 = F2(function(f, d1)
1326− return _Json_mapMany(f, [d1]);
1329−var _Json_map2 = F3(function(f, d1, d2)
1331− return _Json_mapMany(f, [d1, d2]);
1334−var _Json_map3 = F4(function(f, d1, d2, d3)
1336− return _Json_mapMany(f, [d1, d2, d3]);
1339−var _Json_map4 = F5(function(f, d1, d2, d3, d4)
1341− return _Json_mapMany(f, [d1, d2, d3, d4]);
1344−var _Json_map5 = F6(function(f, d1, d2, d3, d4, d5)
1346− return _Json_mapMany(f, [d1, d2, d3, d4, d5]);
1349−var _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6)
1351− return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]);
1354−var _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7)
1356− return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);
1359−var _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8)
1361− return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);
1367−var _Json_runOnString = F2(function(decoder, string)
1371− var value = JSON.parse(string);
1372− return _Json_runHelp(decoder, value);
1376− return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string)));
1380−var _Json_run = F2(function(decoder, value)
1382− return _Json_runHelp(decoder, _Json_unwrap(value));
1385−function _Json_runHelp(decoder, value)
1390− return decoder.b(value);
1393− return (value === null)
1394− ? $elm$core$Result$Ok(decoder.c)
1395− : _Json_expecting('null', value);
1398− if (!_Json_isArray(value))
1400− return _Json_expecting('a LIST', value);
1402− return _Json_runArrayDecoder(decoder.b, value, _List_fromArray);
1405− if (!_Json_isArray(value))
1407− return _Json_expecting('an ARRAY', value);
1409− return _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray);
1412− var field = decoder.d;
1413− if (typeof value !== 'object' || value === null || !(field in value))
1415− return _Json_expecting('an OBJECT with a field named `' + field + '`', value);
1417− var result = _Json_runHelp(decoder.b, value[field]);
1418− return ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, field, result.a));
1421− var index = decoder.e;
1422− if (!_Json_isArray(value))
1424− return _Json_expecting('an ARRAY', value);
1426− if (index >= value.length)
1428− return _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value);
1430− var result = _Json_runHelp(decoder.b, value[index]);
1431− return ($elm$core$Result$isOk(result)) ? result : $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, index, result.a));
1434− if (typeof value !== 'object' || value === null || _Json_isArray(value))
1436− return _Json_expecting('an OBJECT', value);
1439− var keyValuePairs = _List_Nil;
1440− // TODO test perf of Object.keys and switch when support is good enough
1441− for (var key in value)
1443− if (Object.prototype.hasOwnProperty.call(value, key))
1445− var result = _Json_runHelp(decoder.b, value[key]);
1446− if (!$elm$core$Result$isOk(result))
1448− return $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a));
1450− keyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs);
1453− return $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs));
1456− var answer = decoder.f;
1457− var decoders = decoder.g;
1458− for (var i = 0; i < decoders.length; i++)
1460− var result = _Json_runHelp(decoders[i], value);
1461− if (!$elm$core$Result$isOk(result))
1465− answer = answer(result.a);
1467− return $elm$core$Result$Ok(answer);
1470− var result = _Json_runHelp(decoder.b, value);
1471− return (!$elm$core$Result$isOk(result))
1473− : _Json_runHelp(decoder.h(result.a), value);
1476− var errors = _List_Nil;
1477− for (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS
1479− var result = _Json_runHelp(temp.a, value);
1480− if ($elm$core$Result$isOk(result))
1484− errors = _List_Cons(result.a, errors);
1486− return $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors)));
1489− return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value)));
1492− return $elm$core$Result$Ok(decoder.a);
1496−function _Json_runArrayDecoder(decoder, value, toElmValue)
1498− var len = value.length;
1499− var array = new Array(len);
1500− for (var i = 0; i < len; i++)
1502− var result = _Json_runHelp(decoder, value[i]);
1503− if (!$elm$core$Result$isOk(result))
1505− return $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a));
1507− array[i] = result.a;
1509− return $elm$core$Result$Ok(toElmValue(array));
1512−function _Json_isArray(value)
1514− return Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);
1517−function _Json_toElmArray(array)
1519− return A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; });
1522−function _Json_expecting(type, value)
1524− return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value)));
1530−function _Json_equality(x, y)
1546− return x.a === y.a;
1549− return x.b === y.b;
1552− return x.c === y.c;
1557− return _Json_equality(x.b, y.b);
1560− return x.d === y.d && _Json_equality(x.b, y.b);
1563− return x.e === y.e && _Json_equality(x.b, y.b);
1566− return x.f === y.f && _Json_listEquality(x.g, y.g);
1569− return x.h === y.h && _Json_equality(x.b, y.b);
1572− return _Json_listEquality(x.g, y.g);
1576−function _Json_listEquality(aDecoders, bDecoders)
1578− var len = aDecoders.length;
1579− if (len !== bDecoders.length)
1583− for (var i = 0; i < len; i++)
1585− if (!_Json_equality(aDecoders[i], bDecoders[i]))
1596−var _Json_encode = F2(function(indentLevel, value)
1598− return JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';
1601−function _Json_wrap(value) { return { $: 0, a: value }; }
1602−function _Json_unwrap(value) { return value.a; }
1605−function _Json_emptyArray() { return []; }
1606−function _Json_emptyObject() { return {}; }
1608−var _Json_addField = F3(function(key, value, object)
1610− var unwrapped = _Json_unwrap(value);
1611− if (!(key === 'toJSON' && typeof unwrapped === 'function'))
1613− object[key] = unwrapped;
1618−function _Json_addEntry(func)
1620− return F2(function(entry, array)
1622− array.push(_Json_unwrap(func(entry)));
1627−var _Json_encodeNull = _Json_wrap(null);
1633−function _Scheduler_succeed(value)
1641−function _Scheduler_fail(error)
1649−function _Scheduler_binding(callback)
1658−var _Scheduler_andThen = F2(function(callback, task)
1667−var _Scheduler_onError = F2(function(callback, task)
1676−function _Scheduler_receive(callback)
1687−var _Scheduler_guid = 0;
1689−function _Scheduler_rawSpawn(task)
1693− e: _Scheduler_guid++,
1699− _Scheduler_enqueue(proc);
1704−function _Scheduler_spawn(task)
1706− return _Scheduler_binding(function(callback) {
1707− callback(_Scheduler_succeed(_Scheduler_rawSpawn(task)));
1711−function _Scheduler_rawSend(proc, msg)
1714− _Scheduler_enqueue(proc);
1717−var _Scheduler_send = F2(function(proc, msg)
1719− return _Scheduler_binding(function(callback) {
1720− _Scheduler_rawSend(proc, msg);
1721− callback(_Scheduler_succeed(_Utils_Tuple0));
1725−function _Scheduler_kill(proc)
1727− return _Scheduler_binding(function(callback) {
1729− if (task.$ === 2 && task.c)
1736− callback(_Scheduler_succeed(_Utils_Tuple0));
1743−type alias Process =
1747− , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack }
1754−var _Scheduler_working = false;
1755−var _Scheduler_queue = [];
1758−function _Scheduler_enqueue(proc)
1760− _Scheduler_queue.push(proc);
1761− if (_Scheduler_working)
1765− _Scheduler_working = true;
1766− while (proc = _Scheduler_queue.shift())
1768− _Scheduler_step(proc);
1770− _Scheduler_working = false;
1774−function _Scheduler_step(proc)
1778− var rootTag = proc.f.$;
1779− if (rootTag === 0 || rootTag === 1)
1781− while (proc.g && proc.g.$ !== rootTag)
1789− proc.f = proc.g.b(proc.f.a);
1792− else if (rootTag === 2)
1794− proc.f.c = proc.f.b(function(newRoot) {
1796− _Scheduler_enqueue(proc);
1800− else if (rootTag === 5)
1802− if (proc.h.length === 0)
1806− proc.f = proc.f.b(proc.h.shift());
1808− else // if (rootTag === 3 || rootTag === 4)
1811− $: rootTag === 3 ? 0 : 1,
1822−function _Process_sleep(time)
1824− return _Scheduler_binding(function(callback) {
1825− var id = setTimeout(function() {
1826− callback(_Scheduler_succeed(_Utils_Tuple0));
1829− return function() { clearTimeout(id); };
1839−var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)
1841− return _Platform_initialize(
1846− impl.subscriptions,
1847− function() { return function() {} }
1853−// INITIALIZE A PROGRAM
1856−function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
1858− var result = A2(_Json_run, flagDecoder, _Json_wrap(args ? args['flags'] : undefined));
1859− $elm$core$Result$isOk(result) || _Debug_crash(2 /**/, _Json_errorToString(result.a) /**/);
1861− var initPair = init(result.a);
1862− var model = initPair.a;
1863− var stepper = stepperBuilder(sendToApp, model);
1864− var ports = _Platform_setupEffects(managers, sendToApp);
1866− function sendToApp(msg, viewMetadata)
1868− var pair = A2(update, msg, model);
1869− stepper(model = pair.a, viewMetadata);
1870− _Platform_enqueueEffects(managers, pair.b, subscriptions(model));
1873− _Platform_enqueueEffects(managers, initPair.b, subscriptions(model));
1875− return ports ? { ports: ports } : {};
1882−// This is used by code in elm/browser and elm/http
1883−// to register any HTTP requests that are triggered by init.
1887−var _Platform_preload;
1890−function _Platform_registerPreload(url)
1892− _Platform_preload.add(url);
1900−var _Platform_effectManagers = {};
1903−function _Platform_setupEffects(managers, sendToApp)
1907− // setup all necessary effect managers
1908− for (var key in _Platform_effectManagers)
1910− var manager = _Platform_effectManagers[key];
1914− ports = ports || {};
1915− ports[key] = manager.a(key, sendToApp);
1918− managers[key] = _Platform_instantiateManager(manager, sendToApp);
1925−function _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap)
1937−function _Platform_instantiateManager(info, sendToApp)
1944− var onEffects = info.c;
1945− var onSelfMsg = info.d;
1946− var cmdMap = info.e;
1947− var subMap = info.f;
1949− function loop(state)
1951− return A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg)
1957− return A3(onSelfMsg, router, value, state);
1960− return cmdMap && subMap
1961− ? A4(onEffects, router, value.i, value.j, state)
1962− : A3(onEffects, router, cmdMap ? value.i : value.j, state);
1966− return router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b));
1974−var _Platform_sendToApp = F2(function(router, msg)
1976− return _Scheduler_binding(function(callback)
1979− callback(_Scheduler_succeed(_Utils_Tuple0));
1984−var _Platform_sendToSelf = F2(function(router, msg)
1986− return A2(_Scheduler_send, router.h, {
1997−function _Platform_leaf(home)
1999− return function(value)
2010−function _Platform_batch(list)
2019−var _Platform_map = F2(function(tagger, bag)
2030−// PIPE BAGS INTO EFFECT MANAGERS
2032−// Effects must be queued!
2034−// Say your init contains a synchronous command, like Time.now or Time.here
2036−// - This will produce a batch of effects (FX_1)
2037−// - The synchronous task triggers the subsequent `update` call
2038−// - This will produce a batch of effects (FX_2)
2040−// If we just start dispatching FX_2, subscriptions from FX_2 can be processed
2041−// before subscriptions from FX_1. No good! Earlier versions of this code had
2042−// this problem, leading to these reports:
2044−// https://github.com/elm/core/issues/980
2045−// https://github.com/elm/core/pull/981
2046−// https://github.com/elm/compiler/issues/1776
2048−// The queue is necessary to avoid ordering issues for synchronous commands.
2051−// Why use true/false here? Why not just check the length of the queue?
2052−// The goal is to detect "are we currently dispatching effects?" If we
2053−// are, we need to bail and let the ongoing while loop handle things.
2055−// Now say the queue has 1 element. When we dequeue the final element,
2056−// the queue will be empty, but we are still actively dispatching effects.
2057−// So you could get queue jumping in a really tricky category of cases.
2059−var _Platform_effectsQueue = [];
2060−var _Platform_effectsActive = false;
2063−function _Platform_enqueueEffects(managers, cmdBag, subBag)
2065− _Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag });
2067− if (_Platform_effectsActive) return;
2069− _Platform_effectsActive = true;
2070− for (var fx; fx = _Platform_effectsQueue.shift(); )
2072− _Platform_dispatchEffects(fx.p, fx.q, fx.r);
2074− _Platform_effectsActive = false;
2078−function _Platform_dispatchEffects(managers, cmdBag, subBag)
2080− var effectsDict = {};
2081− _Platform_gatherEffects(true, cmdBag, effectsDict, null);
2082− _Platform_gatherEffects(false, subBag, effectsDict, null);
2084− for (var home in managers)
2086− _Scheduler_rawSend(managers[home], {
2088− a: effectsDict[home] || { i: _List_Nil, j: _List_Nil }
2094−function _Platform_gatherEffects(isCmd, bag, effectsDict, taggers)
2100− var effect = _Platform_toEffect(isCmd, home, taggers, bag.l);
2101− effectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]);
2105− for (var list = bag.m; list.b; list = list.b) // WHILE_CONS
2107− _Platform_gatherEffects(isCmd, list.a, effectsDict, taggers);
2112− _Platform_gatherEffects(isCmd, bag.o, effectsDict, {
2121−function _Platform_toEffect(isCmd, home, taggers, value)
2123− function applyTaggers(x)
2125− for (var temp = taggers; temp; temp = temp.t)
2133− ? _Platform_effectManagers[home].e
2134− : _Platform_effectManagers[home].f;
2136− return A2(map, applyTaggers, value)
2140−function _Platform_insert(isCmd, newEffect, effects)
2142− effects = effects || { i: _List_Nil, j: _List_Nil };
2145− ? (effects.i = _List_Cons(newEffect, effects.i))
2146− : (effects.j = _List_Cons(newEffect, effects.j));
2156−function _Platform_checkPortName(name)
2158− if (_Platform_effectManagers[name])
2160− _Debug_crash(3, name)
2169−function _Platform_outgoingPort(name, converter)
2171− _Platform_checkPortName(name);
2172− _Platform_effectManagers[name] = {
2173− e: _Platform_outgoingPortMap,
2175− a: _Platform_setupOutgoingPort
2177− return _Platform_leaf(name);
2181−var _Platform_outgoingPortMap = F2(function(tagger, value) { return value; });
2184−function _Platform_setupOutgoingPort(name)
2187− var converter = _Platform_effectManagers[name].u;
2191− var init = _Process_sleep(0);
2193− _Platform_effectManagers[name].b = init;
2194− _Platform_effectManagers[name].c = F3(function(router, cmdList, state)
2196− for ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS
2198− // grab a separate reference to subs in case unsubscribe is called
2199− var currentSubs = subs;
2200− var value = _Json_unwrap(converter(cmdList.a));
2201− for (var i = 0; i < currentSubs.length; i++)
2203− currentSubs[i](value);
2211− function subscribe(callback)
2213− subs.push(callback);
2216− function unsubscribe(callback)
2218− // copy subs into a new array in case unsubscribe is called within a
2219− // subscribed callback
2220− subs = subs.slice();
2221− var index = subs.indexOf(callback);
2224− subs.splice(index, 1);
2229− subscribe: subscribe,
2230− unsubscribe: unsubscribe
2239−function _Platform_incomingPort(name, converter)
2241− _Platform_checkPortName(name);
2242− _Platform_effectManagers[name] = {
2243− f: _Platform_incomingPortMap,
2245− a: _Platform_setupIncomingPort
2247− return _Platform_leaf(name);
2251−var _Platform_incomingPortMap = F2(function(tagger, finalTagger)
2253− return function(value)
2255− return tagger(finalTagger(value));
2260−function _Platform_setupIncomingPort(name, sendToApp)
2262− var subs = _List_Nil;
2263− var converter = _Platform_effectManagers[name].u;
2267− var init = _Scheduler_succeed(null);
2269− _Platform_effectManagers[name].b = init;
2270− _Platform_effectManagers[name].c = F3(function(router, subList, state)
2278− function send(incomingValue)
2280− var result = A2(_Json_run, converter, _Json_wrap(incomingValue));
2282− $elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a);
2284− var value = result.a;
2285− for (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS
2287− sendToApp(temp.a(value));
2291− return { send: send };
2296−// EXPORT ELM MODULES
2298−// Have DEBUG and PROD versions so that we can (1) give nicer errors in
2299−// debug mode and (2) not pay for the bits needed for that in prod mode.
2305−function _Platform_mergeExportsProd(obj, exports)
2307− for (var name in exports)
2312− : _Platform_mergeExportsProd(obj[name], exports[name])
2313− : (obj[name] = exports[name]);
2318−function _Platform_export(exports)
2321− ? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)
2322− : scope['Elm'] = exports;
2326−function _Platform_mergeExportsDebug(moduleName, obj, exports)
2328− for (var name in exports)
2332− ? _Debug_crash(6, moduleName)
2333− : _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name])
2334− : (obj[name] = exports[name]);
2340−var _Lynx_g = (typeof globalThis !== 'undefined' ? globalThis : scope);
2341−function _Lynx_papi(name) { return _Lynx_g['_' + '_' + name] || function() {}; }
2342−var _Lynx_createViewFn = _Lynx_papi('CreateView');
2343−var _Lynx_createTextFn = _Lynx_papi('CreateText');
2344−var _Lynx_createImageFn = _Lynx_papi('CreateImage');
2345−function _Lynx_createElement(tag) {
2346− var pId = (_Lynx_g['native'] && _Lynx_g['native']['currentPageId']) || 0;
2347− return (tag === 'text' ? _Lynx_createTextFn
2348− : tag === 'image' ? _Lynx_createImageFn
2349− : _Lynx_createViewFn)(pId);
2351−var _Lynx_createRawText = _Lynx_papi('CreateRawText');
2352−var _Lynx_appendChild = _Lynx_papi('AppendElement');
2353−var _Lynx_removeElement = _Lynx_papi('RemoveElement');
2354−var _Lynx_replaceElement = _Lynx_papi('ReplaceElement');
2355−var _Lynx_insertBefore = _Lynx_papi('InsertElementBefore');
2356−var _Lynx_setAttribute = _Lynx_papi('SetAttribute');
2357−var _Lynx_getChildren = _Lynx_papi('GetChildren');
2358−var _Lynx_getParent = _Lynx_papi('GetParent');
2359−var _Lynx_addEvent = _Lynx_papi('AddEvent');
2360−var _Lynx_setInlineStyles = _Lynx_papi('SetInlineStyles');
2361−var _VirtualDom_elementMeta = new WeakMap();
2362−function _VirtualDom_getMeta(el) {
2363− var meta = _VirtualDom_elementMeta.get(el);
2364− if (!meta) { meta = {}; _VirtualDom_elementMeta.set(el, meta); }
2375−function _VirtualDom_appendChild(parent, child)
2377− _Lynx_appendChild(parent, child);
2380−var _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args)
2382− // NOTE: this function needs _Platform_export available to work
2383− var rootPage = args['node'] || _Lynx_g['page'];
2384− var tree = _VirtualDom_render(virtualNode, function() {});
2385− _Lynx_appendChild(rootPage, tree);
2394−function _VirtualDom_text(string)
2407−var _VirtualDom_nodeNS = F2(function(namespace, tag)
2409− return F2(function(factList, kidList)
2411− for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS
2413− var kid = kidList.a;
2414− descendantsCount += (kid.b || 0);
2417− descendantsCount += kids.length;
2422− d: _VirtualDom_organizeFacts(factList),
2425− b: descendantsCount
2431−var _VirtualDom_node = _VirtualDom_nodeNS(undefined);
2438−var _VirtualDom_keyedNodeNS = F2(function(namespace, tag)
2440− return F2(function(factList, kidList)
2442− for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS
2444− var kid = kidList.a;
2445− descendantsCount += (kid.b.b || 0);
2448− descendantsCount += kids.length;
2453− d: _VirtualDom_organizeFacts(factList),
2456− b: descendantsCount
2462−var _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined);
2469−function _VirtualDom_custom(factList, model, render, diff)
2473− d: _VirtualDom_organizeFacts(factList),
2485−var _VirtualDom_map = F2(function(tagger, node)
2491− b: 1 + (node.b || 0)
2500−function _VirtualDom_thunk(refs, thunk)
2510−var _VirtualDom_lazy = F2(function(func, a)
2512− return _VirtualDom_thunk([func, a], function() {
2517−var _VirtualDom_lazy2 = F3(function(func, a, b)
2519− return _VirtualDom_thunk([func, a, b], function() {
2520− return A2(func, a, b);
2524−var _VirtualDom_lazy3 = F4(function(func, a, b, c)
2526− return _VirtualDom_thunk([func, a, b, c], function() {
2527− return A3(func, a, b, c);
2531−var _VirtualDom_lazy4 = F5(function(func, a, b, c, d)
2533− return _VirtualDom_thunk([func, a, b, c, d], function() {
2534− return A4(func, a, b, c, d);
2538−var _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e)
2540− return _VirtualDom_thunk([func, a, b, c, d, e], function() {
2541− return A5(func, a, b, c, d, e);
2545−var _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f)
2547− return _VirtualDom_thunk([func, a, b, c, d, e, f], function() {
2548− return A6(func, a, b, c, d, e, f);
2552−var _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g)
2554− return _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() {
2555− return A7(func, a, b, c, d, e, f, g);
2559−var _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h)
2561− return _VirtualDom_thunk([func, a, b, c, d, e, f, g, h], function() {
2562− return A8(func, a, b, c, d, e, f, g, h);
2571−var _VirtualDom_on = F2(function(key, handler)
2579−var _VirtualDom_style = F2(function(key, value)
2587−var _VirtualDom_property = F2(function(key, value)
2595−var _VirtualDom_attribute = F2(function(key, value)
2603−var _VirtualDom_attributeNS = F3(function(namespace, key, value)
2608− o: { f: namespace, o: value }
2614−// XSS ATTACK VECTOR CHECKS
2616−// For some reason, tabs can appear in href protocols and it still works.
2617−// So '\tjava\tSCRIPT:alert("!!!")' and 'javascript:alert("!!!")' are the same
2618−// in practice. That is why _VirtualDom_RE_js and _VirtualDom_RE_js_html look
2621−// Pulling the regular expressions out to the top level gives a slight speed
2622−// boost in small benchmarks (4-10%) but hoisting values to reduce allocation
2623−// can be unpredictable in large programs where JIT may have a harder time with
2624−// functions are not fully self-contained. The benefit is more that the js and
2625−// js_html ones are so weird that I prefer to see them near each other.
2631−function _VirtualDom_noScript(tag)
2636−function _VirtualDom_noOnOrFormAction(key)
2641−function _VirtualDom_noInnerHtmlOrFormAction(key)
2646−function _VirtualDom_noJavaScriptUri(value)
2651−function _VirtualDom_noJavaScriptOrHtmlUri(value)
2656−function _VirtualDom_noJavaScriptOrHtmlJson(value)
2666−var _VirtualDom_mapAttribute = F2(function(func, attr)
2668− return (attr.$ === 'a0')
2669− ? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o))
2673−function _VirtualDom_mapHandler(func, handler)
2675− var tag = $lynxjs_elm$virtual_dom$VirtualDom$toHandlerInt(handler);
2678− // 1 = MayStopPropagation
2679− // 2 = MayPreventDefault
2686− ? A2($elm$json$Json$Decode$map, func, handler.a)
2688− A3($elm$json$Json$Decode$map2,
2690− ? _VirtualDom_mapEventTuple
2691− : _VirtualDom_mapEventRecord,
2692− $elm$json$Json$Decode$succeed(func),
2698−var _VirtualDom_mapEventTuple = F2(function(func, tuple)
2700− return _Utils_Tuple2(func(tuple.a), tuple.b);
2703−var _VirtualDom_mapEventRecord = F2(function(func, record)
2706− message: func(record.message),
2707− stopPropagation: record.stopPropagation,
2708− preventDefault: record.preventDefault
2717−function _VirtualDom_organizeFacts(factList)
2719− for (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS
2721− var entry = factList.a;
2725− var value = entry.o;
2729− (key === 'className')
2730− ? _VirtualDom_addClass(facts, key, _Json_unwrap(value))
2731− : facts[key] = _Json_unwrap(value);
2736− var subFacts = facts[tag] || (facts[tag] = {});
2737− (tag === 'a3' && key === 'class')
2738− ? _VirtualDom_addClass(subFacts, key, value)
2739− : subFacts[key] = value;
2745−function _VirtualDom_addClass(object, key, newClass)
2747− var classes = object[key];
2748− object[key] = classes ? classes + ' ' + newClass : newClass;
2756−function _VirtualDom_render(vNode, eventNode)
2762− return _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode);
2767− return _Lynx_createRawText(vNode.a);
2772− var subNode = vNode.k;
2773− var tagger = vNode.j;
2775− while (subNode.$ === 4)
2777− typeof tagger !== 'object'
2778− ? tagger = [tagger, subNode.j]
2779− : tagger.push(subNode.j);
2781− subNode = subNode.k;
2784− var subEventRoot = { j: tagger, p: eventNode };
2785− var domNode = _VirtualDom_render(subNode, subEventRoot);
2786− _VirtualDom_getMeta(domNode).elm_event_node_ref = subEventRoot;
2792− var domNode = vNode.h(vNode.g);
2793− _VirtualDom_applyFacts(domNode, eventNode, vNode.d);
2797− // at this point `tag` must be 1 or 2
2799− var domNode = _Lynx_createElement(vNode.c);
2801− _VirtualDom_applyFacts(domNode, eventNode, vNode.d);
2803− for (var kids = vNode.e, i = 0; i < kids.length; i++)
2805− var kid = tag === 1 ? kids[i] : kids[i].b;
2808− _Lynx_appendChild(domNode, _Lynx_createRawText(kid.a));
2812− _VirtualDom_appendChild(domNode, _VirtualDom_render(kid, eventNode));
2824−function _VirtualDom_applyFacts(domNode, eventNode, facts)
2826− for (var key in facts)
2828− var value = facts[key];
2831− ? _VirtualDom_applyStyles(domNode, value)
2834− ? _VirtualDom_applyEvents(domNode, eventNode, value)
2837− ? _VirtualDom_applyAttrs(domNode, value)
2840− ? _VirtualDom_applyAttrsNS(domNode, value)
2842− (key !== 'value' && key !== 'checked' || domNode[key] !== value) && _Lynx_setAttribute(domNode, key === 'className' ? 'class' : key, String(value));
2851−function _VirtualDom_applyStyles(domNode, styles)
2853− _Lynx_setInlineStyles(domNode, styles);
2861−function _VirtualDom_applyAttrs(domNode, attrs)
2863− for (var key in attrs)
2865− var value = attrs[key];
2866− if (typeof value !== 'undefined')
2868− _Lynx_setAttribute(domNode, key, value);
2875−// APPLY NAMESPACED ATTRS
2878−function _VirtualDom_applyAttrsNS(domNode, nsAttrs)
2880− for (var key in nsAttrs)
2882− var pair = nsAttrs[key];
2883− var value = pair.o;
2885− if (typeof value !== 'undefined')
2887− _Lynx_setAttribute(domNode, key, value);
2897−function _VirtualDom_applyEvents(domNode, eventNode, events)
2899− var meta = _VirtualDom_getMeta(domNode);
2900− var allCallbacks = meta.elmFs || (meta.elmFs = {});
2902− for (var key in events)
2904− var newHandler = events[key];
2905− var oldCallback = allCallbacks[key];
2909− allCallbacks[key] = undefined;
2915− var oldHandler = oldCallback.q;
2916− if (oldHandler.$ === newHandler.$)
2918− oldCallback.q = newHandler;
2923− oldCallback = _VirtualDom_makeCallback(eventNode, newHandler);
2924− allCallbacks[key] = oldCallback;
2926− var lynxEventName = _VirtualDom_mapEventName(key);
2927− var handlerType = $lynxjs_elm$virtual_dom$VirtualDom$toHandlerInt(newHandler);
2928− var prefix = (handlerType === 1) ? 'catch' : 'bind';
2929− _Lynx_addEvent(domNode, 'catchEvent', lynxEventName, { type: 'worklet', value: oldCallback });
2933−function _VirtualDom_mapEventName(name)
2937− case 'click': return 'tap';
2938− case 'dblclick': return 'tap';
2939− case 'mousedown': return 'touchstart';
2940− case 'mousemove': return 'touchmove';
2941− case 'mouseup': return 'touchend';
2942− default: return name;
2955−function _VirtualDom_makeCallback(eventNode, initialHandler)
2957− function callback(event)
2959− var handler = callback.q;
2960− var result = _Json_runHelp(handler.a, event);
2962− if (!$elm$core$Result$isOk(result))
2967− var tag = $lynxjs_elm$virtual_dom$VirtualDom$toHandlerInt(handler);
2970− // 1 = MayStopPropagation
2971− // 2 = MayPreventDefault
2974− var value = result.a;
2975− var message = !tag ? value : tag < 3 ? value.a : value.message;
2976− var stopPropagation = tag == 1 ? value.b : tag == 3 && value.stopPropagation;
2977− var currentEventNode = eventNode;
2980− while (tagger = currentEventNode.j)
2982− if (typeof tagger == 'function')
2984− message = tagger(message);
2988− for (var i = tagger.length; i--; )
2990− message = tagger[i](message);
2993− currentEventNode = currentEventNode.p;
2995− currentEventNode(message, stopPropagation); // stopPropagation implies isSync
2998− callback.q = initialHandler;
3003−function _VirtualDom_equalEvents(x, y)
3005− return x.$ == y.$ && _Json_equality(x.a, y.a);
3013−// TODO: Should we do patches like in iOS?
3017−// | Batch (List Patch)
3020−// How could it not be better?
3022−function _VirtualDom_diff(x, y)
3025− _VirtualDom_diffHelp(x, y, patches, 0);
3030−function _VirtualDom_pushPatch(patches, type, index, data)
3039− patches.push(patch);
3044−function _VirtualDom_diffHelp(x, y, patches, index)
3054− // Bail if you run into different types of nodes. Implies that the
3055− // structure has changed significantly and it's not worth a diff.
3056− if (xType !== yType)
3058− if (xType === 1 && yType === 2)
3060− y = _VirtualDom_dekey(y);
3065− _VirtualDom_pushPatch(patches, 0, index, y);
3070− // Now we know that both nodes are the same $.
3076− var i = xRefs.length;
3077− var same = i === yRefs.length;
3078− while (same && i--)
3080− same = xRefs[i] === yRefs[i];
3088− var subPatches = [];
3089− _VirtualDom_diffHelp(x.k, y.k, subPatches, 0);
3090− subPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches);
3094− // gather nested taggers
3095− var xTaggers = x.j;
3096− var yTaggers = y.j;
3097− var nesting = false;
3099− var xSubNode = x.k;
3100− while (xSubNode.$ === 4)
3104− typeof xTaggers !== 'object'
3105− ? xTaggers = [xTaggers, xSubNode.j]
3106− : xTaggers.push(xSubNode.j);
3108− xSubNode = xSubNode.k;
3111− var ySubNode = y.k;
3112− while (ySubNode.$ === 4)
3116− typeof yTaggers !== 'object'
3117− ? yTaggers = [yTaggers, ySubNode.j]
3118− : yTaggers.push(ySubNode.j);
3120− ySubNode = ySubNode.k;
3123− // Just bail if different numbers of taggers. This implies the
3124− // structure of the virtual DOM has changed.
3125− if (nesting && xTaggers.length !== yTaggers.length)
3127− _VirtualDom_pushPatch(patches, 0, index, y);
3131− // check if taggers are "the same"
3132− if (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers)
3134− _VirtualDom_pushPatch(patches, 2, index, yTaggers);
3137− // diff everything below the taggers
3138− _VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1);
3144− _VirtualDom_pushPatch(patches, 3, index, y.a);
3149− _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids);
3153− _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids);
3159− _VirtualDom_pushPatch(patches, 0, index, y);
3163− var factsDiff = _VirtualDom_diffFacts(x.d, y.d);
3164− factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);
3166− var patch = y.i(x.g, y.g);
3167− patch && _VirtualDom_pushPatch(patches, 5, index, patch);
3173−// assumes the incoming arrays are the same length
3174−function _VirtualDom_pairwiseRefEqual(as, bs)
3176− for (var i = 0; i < as.length; i++)
3178− if (as[i] !== bs[i])
3187−function _VirtualDom_diffNodes(x, y, patches, index, diffKids)
3189− // Bail if obvious indicators have changed. Implies more serious
3190− // structural changes such that it's not worth it to diff.
3191− if (x.c !== y.c || x.f !== y.f)
3193− _VirtualDom_pushPatch(patches, 0, index, y);
3197− var factsDiff = _VirtualDom_diffFacts(x.d, y.d);
3198− factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);
3200− diffKids(x, y, patches, index);
3208−// TODO Instead of creating a new diff object, it's possible to just test if
3209−// there *is* a diff. During the actual patch, do the diff again and make the
3210−// modifications directly. This way, there's no new allocations. Worth it?
3211−function _VirtualDom_diffFacts(x, y, category)
3215− // look for changes and removals
3216− for (var xKey in x)
3218− if (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4')
3220− var subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey);
3224− diff[xKey] = subDiff;
3229− // remove if not in the new facts
3235− ? (typeof x[xKey] === 'string' ? '' : null)
3237− (category === 'a1')
3240− (category === 'a0' || category === 'a3')
3243− { f: x[xKey].f, o: undefined };
3248− var xValue = x[xKey];
3249− var yValue = y[xKey];
3251− // reference equal, so don't worry about it
3252− if (xValue === yValue && xKey !== 'value' && xKey !== 'checked'
3253− || category === 'a0' && _VirtualDom_equalEvents(xValue, yValue))
3259− diff[xKey] = yValue;
3263− for (var yKey in y)
3268− diff[yKey] = y[yKey];
3280−function _VirtualDom_diffKids(xParent, yParent, patches, index)
3282− var xKids = xParent.e;
3283− var yKids = yParent.e;
3285− var xLen = xKids.length;
3286− var yLen = yKids.length;
3288− // FIGURE OUT IF THERE ARE INSERTS OR REMOVALS
3292− _VirtualDom_pushPatch(patches, 6, index, {
3297− else if (xLen < yLen)
3299− _VirtualDom_pushPatch(patches, 7, index, {
3305− // PAIRWISE DIFF EVERYTHING ELSE
3307− for (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++)
3309− var xKid = xKids[i];
3310− _VirtualDom_diffHelp(xKid, yKids[i], patches, ++index);
3311− index += xKid.b || 0;
3320−function _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex)
3322− var localPatches = [];
3324− var changes = {}; // Dict String Entry
3325− var inserts = []; // Array { index : Int, entry : Entry }
3326− // type Entry = { tag : String, vnode : VNode, index : Int, data : _ }
3328− var xKids = xParent.e;
3329− var yKids = yParent.e;
3330− var xLen = xKids.length;
3331− var yLen = yKids.length;
3335− var index = rootIndex;
3337− while (xIndex < xLen && yIndex < yLen)
3339− var x = xKids[xIndex];
3340− var y = yKids[yIndex];
3347− var newMatch = undefined;
3348− var oldMatch = undefined;
3350− // check if keys match
3355− _VirtualDom_diffHelp(xNode, yNode, localPatches, index);
3356− index += xNode.b || 0;
3363− // look ahead 1 to detect insertions and removals.
3365− var xNext = xKids[xIndex + 1];
3366− var yNext = yKids[yIndex + 1];
3370− var xNextKey = xNext.a;
3371− var xNextNode = xNext.b;
3372− oldMatch = yKey === xNextKey;
3377− var yNextKey = yNext.a;
3378− var yNextNode = yNext.b;
3379− newMatch = xKey === yNextKey;
3384− if (newMatch && oldMatch)
3387− _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);
3388− _VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts);
3389− index += xNode.b || 0;
3392− _VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index);
3393− index += xNextNode.b || 0;
3404− _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);
3405− _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);
3406− index += xNode.b || 0;
3417− _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);
3418− index += xNode.b || 0;
3421− _VirtualDom_diffHelp(xNextNode, yNode, localPatches, index);
3422− index += xNextNode.b || 0;
3429− // remove x, insert y
3430− if (xNext && xNextKey === yNextKey)
3433− _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);
3434− _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);
3435− index += xNode.b || 0;
3438− _VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index);
3439− index += xNextNode.b || 0;
3449− // eat up any remaining nodes with removeNode and insertNode
3451− while (xIndex < xLen)
3454− var x = xKids[xIndex];
3456− _VirtualDom_removeNode(changes, localPatches, x.a, xNode, index);
3457− index += xNode.b || 0;
3461− while (yIndex < yLen)
3463− var endInserts = endInserts || [];
3464− var y = yKids[yIndex];
3465− _VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts);
3469− if (localPatches.length > 0 || inserts.length > 0 || endInserts)
3471− _VirtualDom_pushPatch(patches, 8, rootIndex, {
3481−// CHANGES FROM KEYED DIFF
3484−var _VirtualDom_POSTFIX = '_elmW6BL';
3487−function _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts)
3489− var entry = changes[key];
3491− // never seen this key before
3501− inserts.push({ r: yIndex, A: entry });
3502− changes[key] = entry;
3507− // this key was removed earlier, a match!
3510− inserts.push({ r: yIndex, A: entry });
3513− var subPatches = [];
3514− _VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r);
3524− // this key has already been inserted or moved, a duplicate!
3525− _VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts);
3529−function _VirtualDom_removeNode(changes, localPatches, key, vnode, index)
3531− var entry = changes[key];
3533− // never seen this key before
3536− var patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined);
3548− // this key was inserted earlier, a match!
3552− var subPatches = [];
3553− _VirtualDom_diffHelp(vnode, entry.z, subPatches, index);
3555− _VirtualDom_pushPatch(localPatches, 9, index, {
3563− // this key has already been removed or moved, a duplicate!
3564− _VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index);
3571−// Each DOM node has an "index" assigned in order of traversal. It is important
3572−// to minimize our crawl over the actual DOM, so these indexes (along with the
3573−// descendantsCount of virtual nodes) let us skip touching entire subtrees of
3574−// the DOM if we know there are no patches there.
3577−function _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode)
3579− _VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode);
3583−// assumes `patches` is non-empty and indexes increase monotonically.
3584−function _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)
3586− var patch = patches[i];
3587− var index = patch.r;
3589− while (index === low)
3591− var patchType = patch.$;
3593− if (patchType === 1)
3595− _VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode);
3597− else if (patchType === 8)
3600− patch.u = eventNode;
3602− var subPatches = patch.s.w;
3603− if (subPatches.length > 0)
3605− _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);
3608− else if (patchType === 9)
3611− patch.u = eventNode;
3613− var data = patch.s;
3616− data.A.s = domNode;
3617− var subPatches = data.w;
3618− if (subPatches.length > 0)
3620− _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);
3627− patch.u = eventNode;
3632− if (!(patch = patches[i]) || (index = patch.r) > high)
3642− var subNode = vNode.k;
3644− while (subNode.$ === 4)
3646− subNode = subNode.k;
3649− return _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, _VirtualDom_getMeta(domNode).elm_event_node_ref);
3652− // tag must be 1 or 2 at this point
3654− var vKids = vNode.e;
3655− var childNodes = _Lynx_getChildren(domNode);
3656− for (var j = 0; j < vKids.length; j++)
3659− var vKid = tag === 1 ? vKids[j] : vKids[j].b;
3660− var nextLow = low + (vKid.b || 0);
3661− if (low <= index && index <= nextLow)
3663− i = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode);
3664− if (!(patch = patches[i]) || (index = patch.r) > high)
3679−function _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)
3681− if (patches.length === 0)
3683− return rootDomNode;
3686− _VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);
3687− return _VirtualDom_applyPatchesHelp(rootDomNode, patches);
3690−function _VirtualDom_applyPatchesHelp(rootDomNode, patches)
3692− for (var i = 0; i < patches.length; i++)
3694− var patch = patches[i];
3695− var localDomNode = patch.t
3696− var newNode = _VirtualDom_applyPatch(localDomNode, patch);
3697− if (localDomNode === rootDomNode)
3699− rootDomNode = newNode;
3702− return rootDomNode;
3705−function _VirtualDom_applyPatch(domNode, patch)
3710− return _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u);
3713− _VirtualDom_applyFacts(domNode, patch.u, patch.s);
3717− _Lynx_setAttribute(domNode, 'text', patch.s);
3721− return _VirtualDom_applyPatchesHelp(domNode, patch.s);
3724− if (_VirtualDom_getMeta(domNode).elm_event_node_ref)
3726− _VirtualDom_getMeta(domNode).elm_event_node_ref.j = patch.s;
3730− _VirtualDom_getMeta(domNode).elm_event_node_ref = { j: patch.s, p: patch.u };
3735− var data = patch.s;
3736− for (var i = 0; i < data.i; i++)
3738− var children = _Lynx_getChildren(domNode);
3739− _Lynx_removeElement(domNode, children[data.v]);
3744− var data = patch.s;
3746− for (var i = data.v; i < kids.length; i++)
3748− _Lynx_appendChild(domNode, _VirtualDom_render(kids[i], patch.u));
3753− var data = patch.s;
3756− _Lynx_removeElement(_Lynx_getParent(domNode), domNode);
3759− var entry = data.A;
3760− if (typeof entry.r !== 'undefined')
3762− _Lynx_removeElement(_Lynx_getParent(domNode), domNode);
3764− entry.s = _VirtualDom_applyPatchesHelp(domNode, data.w);
3768− return _VirtualDom_applyPatchReorder(domNode, patch);
3771− return patch.s(domNode);
3774− throw new Error('VirtualDom: unknown patch type');
3779−function _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode)
3781− var parentNode = _Lynx_getParent(domNode);
3782− var newNode = _VirtualDom_render(vNode, eventNode);
3784− if (!_VirtualDom_getMeta(newNode).elm_event_node_ref)
3786− _VirtualDom_getMeta(newNode).elm_event_node_ref = _VirtualDom_getMeta(domNode).elm_event_node_ref;
3789− if (parentNode && newNode !== domNode)
3791− _Lynx_replaceElement(parentNode, newNode, domNode);
3797−function _VirtualDom_applyPatchReorder(domNode, patch)
3799− var data = patch.s;
3801− // remove end inserts
3802− var endInsertNodes = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch);
3805− domNode = _VirtualDom_applyPatchesHelp(domNode, data.w);
3808− var inserts = data.x;
3809− for (var i = 0; i < inserts.length; i++)
3811− var insert = inserts[i];
3812− var entry = insert.A;
3813− var node = entry.c === 2
3815− : _VirtualDom_render(entry.z, patch.u);
3816− var children = _Lynx_getChildren(domNode);
3817− _Lynx_insertBefore(domNode, node, children[insert.r]);
3821− if (endInsertNodes)
3823− for (var i = 0; i < endInsertNodes.length; i++)
3825− _Lynx_appendChild(domNode, endInsertNodes[i]);
3833−function _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch)
3841− for (var i = 0; i < endInserts.length; i++)
3843− var insert = endInserts[i];
3844− var entry = insert.A;
3845− nodes.push(entry.c === 2
3847− : _VirtualDom_render(entry.z, patch.u)
3854−function _VirtualDom_dekey(keyedNode)
3856− var keyedKids = keyedNode.e;
3857− var len = keyedKids.length;
3858− var kids = new Array(len);
3859− for (var i = 0; i < len; i++)
3861− kids[i] = keyedKids[i].b;
3876−// LYNXJS PAPI WRAPPERS
3877−var _Browser_lynx = (typeof globalThis !== 'undefined' ? globalThis : scope);
3878−function _Browser_newPage() {
3879− return _Browser_lynx['page'];
3881−function _Browser_flush() {
3882− var fn = _Browser_lynx['_' + '_FlushElementTree'];
3883− if (typeof fn === 'function') { fn(); }
3891−var _Browser_element = F4(function(impl, flagDecoder, debugMetadata, args)
3893− return _Platform_initialize(
3898− impl.subscriptions,
3899− function(sendToApp, initialModel) {
3900− var view = impl.view;
3901− var domNode = args['node'] || _Browser_newPage();
3902− var currNode = view(initialModel);
3903− var currDomNode = _VirtualDom_render(currNode, sendToApp);
3904− _VirtualDom_appendChild(domNode, currDomNode);
3907− return _Browser_makeAnimator(initialModel, function(model)
3909− var nextNode = view(model);
3910− var patches = _VirtualDom_diff(currNode, nextNode);
3911− currDomNode = _VirtualDom_applyPatches(currDomNode, currNode, patches, sendToApp);
3912− currNode = nextNode;
3924−var _Browser_document = F4(function(impl, flagDecoder, debugMetadata, args)
3926− return _Platform_initialize(
3931− impl.subscriptions,
3932− function(sendToApp, initialModel) {
3933− var view = impl.view;
3934− var rootNode = args['node'] || _Browser_newPage();
3935− var doc = view(initialModel);
3936− var currNode = _VirtualDom_node('view')(_List_Nil)(doc.body);
3937− var currDomNode = _VirtualDom_render(currNode, sendToApp);
3938− _VirtualDom_appendChild(rootNode, currDomNode);
3941− return _Browser_makeAnimator(initialModel, function(model)
3943− var doc = view(model);
3944− var nextNode = _VirtualDom_node('view')(_List_Nil)(doc.body);
3945− var patches = _VirtualDom_diff(currNode, nextNode);
3946− currDomNode = _VirtualDom_applyPatches(currDomNode, currNode, patches, sendToApp);
3947− currNode = nextNode;
3959−var _Browser_cancelAnimationFrame =
3960− function(id) { clearTimeout(id); };
3962−var _Browser_requestAnimationFrame =
3963− function(callback) { return setTimeout(callback, 1000 / 60); };
3966−function _Browser_makeAnimator(model, draw)
3972− function updateIfNeeded()
3974− state = state === 1
3976− : ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 );
3979− return function(nextModel, isSync)
3985− state === 2 && (state = 1)
3987− : ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded),
3998−function _Browser_application(impl)
4000− return _Browser_document({
4001− init: function(flags)
4003− return A3(impl.init, flags, _Browser_fakeUrl(), {});
4006− update: impl.update,
4007− subscriptions: impl.subscriptions
4011−function _Browser_fakeUrl()
4014− protocol: { $: 0 },
4025−var _Browser_go = F2(function(key, n)
4027− return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {
4033−var _Browser_pushUrl = F2(function(key, url)
4035− return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {
4041−var _Browser_replaceUrl = F2(function(key, url)
4043− return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {
4054−var _Browser_fakeNode = { addEventListener: function() {}, removeEventListener: function() {} };
4055−var _Browser_doc = typeof document !== 'undefined' ? document : _Browser_fakeNode;
4056−var _Browser_window = typeof window !== 'undefined' ? window : _Browser_fakeNode;
4058−var _Browser_on = F3(function(node, eventName, sendToSelf)
4060− return _Scheduler_spawn(_Scheduler_binding(function(callback)
4062− return function() {};
4066−var _Browser_decodeEvent = F2(function(decoder, event)
4068− var result = _Json_runHelp(decoder, event);
4069− return $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing;
4077−function _Browser_visibilityInfo()
4079− return (typeof _VirtualDom_doc.hidden !== 'undefined')
4080− ? { hidden: 'hidden', change: 'visibilitychange' }
4082− (typeof _VirtualDom_doc.mozHidden !== 'undefined')
4083− ? { hidden: 'mozHidden', change: 'mozvisibilitychange' }
4085− (typeof _VirtualDom_doc.msHidden !== 'undefined')
4086− ? { hidden: 'msHidden', change: 'msvisibilitychange' }
4088− (typeof _VirtualDom_doc.webkitHidden !== 'undefined')
4089− ? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' }
4090− : { hidden: 'hidden', change: 'visibilitychange' };
4098−function _Browser_rAF()
4100− return _Scheduler_binding(function(callback)
4102− var id = _Browser_requestAnimationFrame(function() {
4103− callback(_Scheduler_succeed(Date.now()));
4106− return function() {
4107− _Browser_cancelAnimationFrame(id);
4113−function _Browser_now()
4115− return _Scheduler_binding(function(callback)
4117− callback(_Scheduler_succeed(Date.now()));
4126−function _Browser_withNode(id, doStuff)
4128− return _Scheduler_binding(function(callback)
4130− callback(_Scheduler_fail($lynxjs_elm$browser$Browser$Dom$NotFound(id)));
4135−function _Browser_withWindow(doStuff)
4137− return _Scheduler_binding(function(callback)
4139− _Browser_requestAnimationFrame(function() {
4140− callback(_Scheduler_succeed(doStuff()));
4149−var _Browser_call = F2(function(functionName, id)
4151− return _Browser_withNode(id, function(node) {
4152− node[functionName]();
4153− return _Utils_Tuple0;
4162−function _Browser_getViewport()
4165− scene: _Browser_getScene(),
4167− x: _Browser_window.pageXOffset,
4168− y: _Browser_window.pageYOffset,
4169− width: _Browser_doc.documentElement.clientWidth,
4170− height: _Browser_doc.documentElement.clientHeight
4175−function _Browser_getScene()
4177− var body = _Browser_doc.body;
4178− var elem = _Browser_doc.documentElement;
4180− width: Math.max(body.scrollWidth, body.offsetWidth, elem.scrollWidth, elem.offsetWidth, elem.clientWidth),
4181− height: Math.max(body.scrollHeight, body.offsetHeight, elem.scrollHeight, elem.offsetHeight, elem.clientHeight)
4185−var _Browser_setViewport = F2(function(x, y)
4187− return _Browser_withWindow(function()
4189− _Browser_window.scroll(x, y);
4190− return _Utils_Tuple0;
4199−function _Browser_getViewportOf(id)
4201− return _Browser_withNode(id, function(node)
4205− width: node.scrollWidth,
4206− height: node.scrollHeight
4209− x: node.scrollLeft,
4211− width: node.clientWidth,
4212− height: node.clientHeight
4219−var _Browser_setViewportOf = F3(function(id, x, y)
4221− return _Browser_withNode(id, function(node)
4223− node.scrollLeft = x;
4224− node.scrollTop = y;
4225− return _Utils_Tuple0;
4234−function _Browser_getElement(id)
4236− return _Browser_withNode(id, function(node)
4238− var rect = node.getBoundingClientRect();
4239− var x = _Browser_window.pageXOffset;
4240− var y = _Browser_window.pageYOffset;
4242− scene: _Browser_getScene(),
4246− width: _Browser_doc.documentElement.clientWidth,
4247− height: _Browser_doc.documentElement.clientHeight
4253− height: rect.height
4264−function _Browser_reload(skipCache)
4266− return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)
4272−function _Browser_load(url)
4274− return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)
4282− // Only Firefox can throw a NS_ERROR_MALFORMED_URI exception here.
4283− // Other browsers reload the page, so let's be consistent about that.
4291−var _Bitwise_and = F2(function(a, b)
4296−var _Bitwise_or = F2(function(a, b)
4301−var _Bitwise_xor = F2(function(a, b)
4306−function _Bitwise_complement(a)
4311−var _Bitwise_shiftLeftBy = F2(function(offset, a)
4313− return a << offset;
4316−var _Bitwise_shiftRightBy = F2(function(offset, a)
4318− return a >> offset;
4321−var _Bitwise_shiftRightZfBy = F2(function(offset, a)
4323− return a >>> offset;
4328−function _Time_now(millisToPosix)
4330− return _Scheduler_binding(function(callback)
4332− callback(_Scheduler_succeed(millisToPosix(Date.now())));
4336−var _Time_setInterval = F2(function(interval, task)
4338− return _Scheduler_binding(function(callback)
4340− var id = setInterval(function() { _Scheduler_rawSpawn(task); }, interval);
4341− return function() { clearInterval(id); };
4345−function _Time_here()
4347− return _Scheduler_binding(function(callback)
4349− callback(_Scheduler_succeed(
4350− A2($elm$time$Time$customZone, -(new Date().getTimezoneOffset()), _List_Nil)
4356−function _Time_getZoneName()
4358− return _Scheduler_binding(function(callback)
4362− var name = $elm$time$Time$Name(Intl.DateTimeFormat().resolvedOptions().timeZone);
4366− var name = $elm$time$Time$Offset(new Date().getTimezoneOffset());
4368− callback(_Scheduler_succeed(name));
4375−function _Bytes_width(bytes)
4377− return bytes.byteLength;
4380−var _Bytes_getHostEndianness = F2(function(le, be)
4382− return _Scheduler_binding(function(callback)
4384− callback(_Scheduler_succeed(new Uint8Array(new Uint32Array([1]))[0] === 1 ? le : be));
4391−function _Bytes_encode(encoder)
4393− var mutableBytes = new DataView(new ArrayBuffer($elm$bytes$Bytes$Encode$getWidth(encoder)));
4394− $elm$bytes$Bytes$Encode$write(encoder)(mutableBytes)(0);
4395− return mutableBytes;
4401−var _Bytes_write_i8 = F3(function(mb, i, n) { mb.setInt8(i, n); return i + 1; });
4402−var _Bytes_write_i16 = F4(function(mb, i, n, isLE) { mb.setInt16(i, n, isLE); return i + 2; });
4403−var _Bytes_write_i32 = F4(function(mb, i, n, isLE) { mb.setInt32(i, n, isLE); return i + 4; });
4406−// UNSIGNED INTEGERS
4408−var _Bytes_write_u8 = F3(function(mb, i, n) { mb.setUint8(i, n); return i + 1 ;});
4409−var _Bytes_write_u16 = F4(function(mb, i, n, isLE) { mb.setUint16(i, n, isLE); return i + 2; });
4410−var _Bytes_write_u32 = F4(function(mb, i, n, isLE) { mb.setUint32(i, n, isLE); return i + 4; });
4415−var _Bytes_write_f32 = F4(function(mb, i, n, isLE) { mb.setFloat32(i, n, isLE); return i + 4; });
4416−var _Bytes_write_f64 = F4(function(mb, i, n, isLE) { mb.setFloat64(i, n, isLE); return i + 8; });
4421−var _Bytes_write_bytes = F3(function(mb, offset, bytes)
4423− for (var i = 0, len = bytes.byteLength, limit = len - 4; i <= limit; i += 4)
4425− mb.setUint32(offset + i, bytes.getUint32(i));
4427− for (; i < len; i++)
4429− mb.setUint8(offset + i, bytes.getUint8(i));
4431− return offset + len;
4437−function _Bytes_getStringWidth(string)
4439− for (var width = 0, i = 0; i < string.length; i++)
4441− var code = string.charCodeAt(i);
4443− (code < 0x80) ? 1 :
4444− (code < 0x800) ? 2 :
4445− (code < 0xD800 || 0xDBFF < code) ? 3 : (i++, 4);
4450−var _Bytes_write_string = F3(function(mb, offset, string)
4452− for (var i = 0; i < string.length; i++)
4454− var code = string.charCodeAt(i);
4457− ? (mb.setUint8(offset, code)
4462− ? (mb.setUint16(offset, 0xC080 /* 0b1100000010000000 */
4463− | (code >>> 6 & 0x1F /* 0b00011111 */) << 8
4464− | code & 0x3F /* 0b00111111 */)
4468− (code < 0xD800 || 0xDBFF < code)
4469− ? (mb.setUint16(offset, 0xE080 /* 0b1110000010000000 */
4470− | (code >>> 12 & 0xF /* 0b00001111 */) << 8
4471− | code >>> 6 & 0x3F /* 0b00111111 */)
4472− , mb.setUint8(offset + 2, 0x80 /* 0b10000000 */
4473− | code & 0x3F /* 0b00111111 */)
4477− (code = (code - 0xD800) * 0x400 + string.charCodeAt(++i) - 0xDC00 + 0x10000
4478− , mb.setUint32(offset, 0xF0808080 /* 0b11110000100000001000000010000000 */
4479− | (code >>> 18 & 0x7 /* 0b00000111 */) << 24
4480− | (code >>> 12 & 0x3F /* 0b00111111 */) << 16
4481− | (code >>> 6 & 0x3F /* 0b00111111 */) << 8
4482− | code & 0x3F /* 0b00111111 */)
4492−var _Bytes_decode = F2(function(decoder, bytes)
4495− return $elm$core$Maybe$Just(A2(decoder, bytes, 0).b);
4497− return $elm$core$Maybe$Nothing;
4501−var _Bytes_read_i8 = F2(function( bytes, offset) { return _Utils_Tuple2(offset + 1, bytes.getInt8(offset)); });
4502−var _Bytes_read_i16 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 2, bytes.getInt16(offset, isLE)); });
4503−var _Bytes_read_i32 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 4, bytes.getInt32(offset, isLE)); });
4504−var _Bytes_read_u8 = F2(function( bytes, offset) { return _Utils_Tuple2(offset + 1, bytes.getUint8(offset)); });
4505−var _Bytes_read_u16 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 2, bytes.getUint16(offset, isLE)); });
4506−var _Bytes_read_u32 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 4, bytes.getUint32(offset, isLE)); });
4507−var _Bytes_read_f32 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 4, bytes.getFloat32(offset, isLE)); });
4508−var _Bytes_read_f64 = F3(function(isLE, bytes, offset) { return _Utils_Tuple2(offset + 8, bytes.getFloat64(offset, isLE)); });
4510−var _Bytes_read_bytes = F3(function(len, bytes, offset)
4512− return _Utils_Tuple2(offset + len, new DataView(bytes.buffer, bytes.byteOffset + offset, len));
4515−var _Bytes_read_string = F3(function(len, bytes, offset)
4518− var end = offset + len;
4519− for (; offset < end;)
4521− var byte = bytes.getUint8(offset++);
4524− ? String.fromCharCode(byte)
4526− ((byte & 0xE0 /* 0b11100000 */) === 0xC0 /* 0b11000000 */)
4527− ? String.fromCharCode((byte & 0x1F /* 0b00011111 */) << 6 | bytes.getUint8(offset++) & 0x3F /* 0b00111111 */)
4529− ((byte & 0xF0 /* 0b11110000 */) === 0xE0 /* 0b11100000 */)
4530− ? String.fromCharCode(
4531− (byte & 0xF /* 0b00001111 */) << 12
4532− | (bytes.getUint8(offset++) & 0x3F /* 0b00111111 */) << 6
4533− | bytes.getUint8(offset++) & 0x3F /* 0b00111111 */
4537− ((byte & 0x7 /* 0b00000111 */) << 18
4538− | (bytes.getUint8(offset++) & 0x3F /* 0b00111111 */) << 12
4539− | (bytes.getUint8(offset++) & 0x3F /* 0b00111111 */) << 6
4540− | bytes.getUint8(offset++) & 0x3F /* 0b00111111 */
4542− , String.fromCharCode(Math.floor(byte / 0x400) + 0xD800, byte % 0x400 + 0xDC00)
4545− return _Utils_Tuple2(offset, string);
4548−var _Bytes_decodeFailure = F2(function() { throw 0; });
4554−var _Http_toTask = F3(function(router, toTask, request)
4556− return _Scheduler_binding(function(callback)
4558− function done(response) {
4559− callback(toTask(request.expect.a(response)));
4562− var controller = new AbortController();
4563− var isAborted = false;
4566− var timeoutMs = request.timeout.a || 0;
4570− timeoutId = setTimeout(function() {
4572− controller.abort();
4573− done($lynxjs_elm$http$Http$Timeout_);
4579− for (var h = request.headers; h.b; h = h.b) // WHILE_CONS
4581− headers[h.a.a] = h.a.b;
4583− if (request.body.a)
4585− headers['Content-Type'] = request.body.a;
4590− method: request.method,
4592− signal: controller.signal
4594− if (request.body.b)
4596− options.body = request.body.b;
4600− var url = request.url;
4601− try { new URL(url, 'http://localhost'); }
4602− catch (e) { return done($lynxjs_elm$http$Http$BadUrl_(url)); }
4605− fetch(url, options).then(function(response)
4607− var bodyPromise = request.expect.b === 'arraybuffer'
4608− ? response.arrayBuffer()
4611− return bodyPromise.then(function(body)
4613− if (timeoutId) { clearTimeout(timeoutId); }
4616− url: response.url || url,
4617− statusCode: response.status,
4618− statusText: response.statusText,
4619− headers: _Http_parseHeaders(response.headers)
4622− var toBody = request.expect.c;
4624− 200 <= response.status && response.status < 300 ? $lynxjs_elm$http$Http$GoodStatus_ : $lynxjs_elm$http$Http$BadStatus_,
4629− }).catch(function(e)
4631− if (timeoutId) { clearTimeout(timeoutId); }
4634− done($lynxjs_elm$http$Http$NetworkError_);
4639− $elm$core$Maybe$isJust(request.tracker) && _Http_track(router, controller, request.tracker.a);
4641− return function() { isAborted = true; controller.abort(); };
4648−function _Http_parseHeaders(headers)
4650− var dict = $elm$core$Dict$empty;
4651− headers.forEach(function(value, key)
4653− dict = A3($elm$core$Dict$update, key, function(oldValue) {
4654− return $elm$core$Maybe$Just($elm$core$Maybe$isJust(oldValue)
4655− ? value + ', ' + oldValue.a
4666−var _Http_expect = F3(function(type, toBody, toValue)
4676−var _Http_mapExpect = F2(function(func, expect)
4682− a: function(x) { return func(expect.a(x)); }
4686−function _Http_toDataView(arrayBuffer)
4688− return _Bytes_wrap(new DataView(arrayBuffer));
4694−var _Http_emptyBody = { $: 0 };
4695−var _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; });
4697−function _Http_toFormData(parts)
4699− for (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS
4701− var part = parts.a;
4702− formData.append(part.a, part.b);
4707−var _Http_bytesToBlob = F2(function(mime, bytes)
4709− return new Blob([bytes], { type: mime });
4715−function _Http_track(router, controller, tracker)
4717− // fetch does not support upload/download progress events natively.
4718− // Progress subscriptions will not fire, but the tracker still enables
4719− // cancellation via Http.cancel.
4724−// NOBLE/CURVES BUNDLE (https://github.com/paulmillr/noble-curves, MIT License)
4725−// Embedded: @noble/curves 2.0.1 - secp256k1, ed25519, x25519, P-256
4727−var _Crypto_noble=(()=>{var ie=Object.defineProperty;var Nn=Object.getOwnPropertyDescriptor;var Dn=Object.getOwnPropertyNames;var Zn=Object.prototype.hasOwnProperty;var Cn=(e,t)=>{for(var r in t)ie(e,r,{get:t[r],enumerable:!0})},Vn=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of Dn(t))!Zn.call(e,o)&&o!==r&&ie(e,o,{get:()=>t[o],enumerable:!(n=Nn(t,o))||n.enumerable});return e};var Mn=e=>Vn(ie({},"a",{value:!0}),e);var Er={};Cn(Er,{bytesToHex:()=>nt,ed25519:()=>Ln,hexToBytes:()=>rt,p256:()=>qn,secp256k1:()=>Sn,x25519:()=>Un});function wt(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function ot(e,t=""){if(!Number.isSafeInteger(e)||e<0){let r=t&&`"${t}" `;throw new Error(`${r}expected integer >= 0, got ${e}`)}}function N(e,t,r=""){let n=wt(e),o=e?.length,f=t!==void 0;if(!n||f&&o!==t){let i=r&&`"${r}" `,c=f?` of length ${t}`:"",s=n?`length=${o}`:`type=${typeof e}`;throw new Error(i+"expected Uint8Array"+c+", got "+s)}return e}function Wt(e){if(typeof e!="function"||typeof e.create!="function")throw new Error("Hash must wrapped by utils.createHasher");ot(e.outputLen),ot(e.blockLen)}function Rt(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function Ve(e,t){N(e,void 0,"digestInto() output");let r=t.outputLen;if(e.length<r)throw new Error('"digestInto() output" expected to be of length >='+r)}function at(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function $t(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}function et(e,t){return e<<32-t|e>>>t}var Me=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",kn=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function nt(e){if(N(e),Me)return e.toHex();let t="";for(let r=0;r<e.length;r++)t+=kn[e[r]];return t}var ct={_0:48,_9:57,A:65,F:70,a:97,f:102};function Ce(e){if(e>=ct._0&&e<=ct._9)return e-ct._0;if(e>=ct.A&&e<=ct.F)return e-(ct.A-10);if(e>=ct.a&&e<=ct.f)return e-(ct.a-10)}function rt(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);if(Me)return Uint8Array.fromHex(e);let t=e.length,r=t/2;if(t%2)throw new Error("hex string expected, got unpadded hex of length "+t);let n=new Uint8Array(r);for(let o=0,f=0;o<r;o++,f+=2){let i=Ce(e.charCodeAt(f)),c=Ce(e.charCodeAt(f+1));if(i===void 0||c===void 0){let s=e[f]+e[f+1];throw new Error('hex string expected, got non-hex character "'+s+'" at index '+f)}n[o]=i*16+c}return n}function tt(...e){let t=0;for(let n=0;n<e.length;n++){let o=e[n];N(o),t+=o.length}let r=new Uint8Array(t);for(let n=0,o=0;n<e.length;n++){let f=e[n];r.set(f,o),o+=f.length}return r}function ce(e,t={}){let r=(o,f)=>e(f).update(o).digest(),n=e(void 0);return r.outputLen=n.outputLen,r.blockLen=n.blockLen,r.create=o=>e(o),Object.assign(r,t),Object.freeze(r)}function ht(e=32){let t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof t?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return t.getRandomValues(new Uint8Array(e))}var ae=e=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,e])});function ke(e,t,r){return e&t^~e&r}function Ye(e,t,r){return e&t^e&r^t&r}var Ct=class{blockLen;outputLen;padOffset;isLE;buffer;view;finished=!1;length=0;pos=0;destroyed=!1;constructor(t,r,n,o){this.blockLen=t,this.outputLen=r,this.padOffset=n,this.isLE=o,this.buffer=new Uint8Array(t),this.view=$t(this.buffer)}update(t){Rt(this),N(t);let{view:r,buffer:n,blockLen:o}=this,f=t.length;for(let i=0;i<f;){let c=Math.min(o-this.pos,f-i);if(c===o){let s=$t(t);for(;o<=f-i;i+=o)this.process(s,i);continue}n.set(t.subarray(i,i+c),this.pos),this.pos+=c,i+=c,this.pos===o&&(this.process(r,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Rt(this),Ve(t,this),this.finished=!0;let{buffer:r,view:n,blockLen:o,isLE:f}=this,{pos:i}=this;r[i++]=128,at(this.buffer.subarray(i)),this.padOffset>o-i&&(this.process(n,0),i=0);for(let x=i;x<o;x++)r[x]=0;n.setBigUint64(o-8,BigInt(this.length*8),f),this.process(n,0);let c=$t(t),s=this.outputLen;if(s%4)throw new Error("_sha2: outputLen must be aligned to 32bit");let l=s/4,h=this.get();if(l>h.length)throw new Error("_sha2: outputLen bigger than state");for(let x=0;x<l;x++)c.setUint32(4*x,h[x],f)}digest(){let{buffer:t,outputLen:r}=this;this.digestInto(t);let n=t.slice(0,r);return this.destroy(),n}_cloneInto(t){t||=new this.constructor,t.set(...this.get());let{blockLen:r,buffer:n,length:o,finished:f,destroyed:i,pos:c}=this;return t.destroyed=i,t.finished=f,t.length=o,t.pos=c,o%r&&t.buffer.set(n),t}clone(){return this._cloneInto()}},dt=Uint32Array.from([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]);var Q=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]);var Pt=BigInt(4294967295),Xe=BigInt(32);function Yn(e,t=!1){return t?{h:Number(e&Pt),l:Number(e>>Xe&Pt)}:{h:Number(e>>Xe&Pt)|0,l:Number(e&Pt)|0}}function Ge(e,t=!1){let r=e.length,n=new Uint32Array(r),o=new Uint32Array(r);for(let f=0;f<r;f++){let{h:i,l:c}=Yn(e[f],t);[n[f],o[f]]=[i,c]}return[n,o]}var de=(e,t,r)=>e>>>r,ue=(e,t,r)=>e<<32-r|t>>>r,Bt=(e,t,r)=>e>>>r|t<<32-r,Et=(e,t,r)=>e<<32-r|t>>>r,Vt=(e,t,r)=>e<<64-r|t>>>r-32,Mt=(e,t,r)=>e>>>r-32|t<<64-r;function ft(e,t,r,n){let o=(t>>>0)+(n>>>0);return{h:e+r+(o/2**32|0)|0,l:o|0}}var Ke=(e,t,r)=>(e>>>0)+(t>>>0)+(r>>>0),je=(e,t,r,n)=>t+r+n+(e/2**32|0)|0,ze=(e,t,r,n)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0),We=(e,t,r,n,o)=>t+r+n+o+(e/2**32|0)|0,$e=(e,t,r,n,o)=>(e>>>0)+(t>>>0)+(r>>>0)+(n>>>0)+(o>>>0),Pe=(e,t,r,n,o,f)=>t+r+n+o+f+(e/2**32|0)|0;var Gn=Uint32Array.from([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),bt=new Uint32Array(64),le=class extends Ct{constructor(t){super(64,t,8,!1)}get(){let{A:t,B:r,C:n,D:o,E:f,F:i,G:c,H:s}=this;return[t,r,n,o,f,i,c,s]}set(t,r,n,o,f,i,c,s){this.A=t|0,this.B=r|0,this.C=n|0,this.D=o|0,this.E=f|0,this.F=i|0,this.G=c|0,this.H=s|0}process(t,r){for(let x=0;x<16;x++,r+=4)bt[x]=t.getUint32(r,!1);for(let x=16;x<64;x++){let v=bt[x-15],E=bt[x-2],w=et(v,7)^et(v,18)^v>>>3,L=et(E,17)^et(E,19)^E>>>10;bt[x]=L+bt[x-7]+w+bt[x-16]|0}let{A:n,B:o,C:f,D:i,E:c,F:s,G:l,H:h}=this;for(let x=0;x<64;x++){let v=et(c,6)^et(c,11)^et(c,25),E=h+v+ke(c,s,l)+Gn[x]+bt[x]|0,L=(et(n,2)^et(n,13)^et(n,22))+Ye(n,o,f)|0;h=l,l=s,s=c,c=i+E|0,i=f,f=o,o=n,n=E+L|0}n=n+this.A|0,o=o+this.B|0,f=f+this.C|0,i=i+this.D|0,c=c+this.E|0,s=s+this.F|0,l=l+this.G|0,h=h+this.H|0,this.set(n,o,f,i,c,s,l,h)}roundClean(){at(bt)}destroy(){this.set(0,0,0,0,0,0,0,0),at(this.buffer)}},he=class extends le{A=dt[0]|0;B=dt[1]|0;C=dt[2]|0;D=dt[3]|0;E=dt[4]|0;F=dt[5]|0;G=dt[6]|0;H=dt[7]|0;constructor(){super(32)}};var Qe=Ge(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(e=>BigInt(e))),Kn=Qe[0],jn=Qe[1],xt=new Uint32Array(80),mt=new Uint32Array(80),be=class extends Ct{constructor(t){super(128,t,16,!1)}get(){let{Ah:t,Al:r,Bh:n,Bl:o,Ch:f,Cl:i,Dh:c,Dl:s,Eh:l,El:h,Fh:x,Fl:v,Gh:E,Gl:w,Hh:L,Hl:y}=this;return[t,r,n,o,f,i,c,s,l,h,x,v,E,w,L,y]}set(t,r,n,o,f,i,c,s,l,h,x,v,E,w,L,y){this.Ah=t|0,this.Al=r|0,this.Bh=n|0,this.Bl=o|0,this.Ch=f|0,this.Cl=i|0,this.Dh=c|0,this.Dl=s|0,this.Eh=l|0,this.El=h|0,this.Fh=x|0,this.Fl=v|0,this.Gh=E|0,this.Gl=w|0,this.Hh=L|0,this.Hl=y|0}process(t,r){for(let p=0;p<16;p++,r+=4)xt[p]=t.getUint32(r),mt[p]=t.getUint32(r+=4);for(let p=16;p<80;p++){let T=xt[p-15]|0,D=mt[p-15]|0,V=Bt(T,D,1)^Bt(T,D,8)^de(T,D,7),k=Et(T,D,1)^Et(T,D,8)^ue(T,D,7),B=xt[p-2]|0,b=mt[p-2]|0,q=Bt(B,b,19)^Vt(B,b,61)^de(B,b,6),Z=Et(B,b,19)^Mt(B,b,61)^ue(B,b,6),O=ze(k,Z,mt[p-7],mt[p-16]),u=We(O,V,q,xt[p-7],xt[p-16]);xt[p]=u|0,mt[p]=O|0}let{Ah:n,Al:o,Bh:f,Bl:i,Ch:c,Cl:s,Dh:l,Dl:h,Eh:x,El:v,Fh:E,Fl:w,Gh:L,Gl:y,Hh:g,Hl:R}=this;for(let p=0;p<80;p++){let T=Bt(x,v,14)^Bt(x,v,18)^Vt(x,v,41),D=Et(x,v,14)^Et(x,v,18)^Mt(x,v,41),V=x&E^~x&L,k=v&w^~v&y,B=$e(R,D,k,jn[p],mt[p]),b=Pe(B,g,T,V,Kn[p],xt[p]),q=B|0,Z=Bt(n,o,28)^Vt(n,o,34)^Vt(n,o,39),O=Et(n,o,28)^Mt(n,o,34)^Mt(n,o,39),u=n&f^n&c^f&c,a=o&i^o&s^i&s;g=L|0,R=y|0,L=E|0,y=w|0,E=x|0,w=v|0,{h:x,l:v}=ft(l|0,h|0,b|0,q|0),l=c|0,h=s|0,c=f|0,s=i|0,f=n|0,i=o|0;let d=Ke(q,O,a);n=je(d,b,Z,u),o=d|0}({h:n,l:o}=ft(this.Ah|0,this.Al|0,n|0,o|0)),{h:f,l:i}=ft(this.Bh|0,this.Bl|0,f|0,i|0),{h:c,l:s}=ft(this.Ch|0,this.Cl|0,c|0,s|0),{h:l,l:h}=ft(this.Dh|0,this.Dl|0,l|0,h|0),{h:x,l:v}=ft(this.Eh|0,this.El|0,x|0,v|0),{h:E,l:w}=ft(this.Fh|0,this.Fl|0,E|0,w|0),{h:L,l:y}=ft(this.Gh|0,this.Gl|0,L|0,y|0),{h:g,l:R}=ft(this.Hh|0,this.Hl|0,g|0,R|0),this.set(n,o,f,i,c,s,l,h,x,v,E,w,L,y,g,R)}roundClean(){at(xt,mt)}destroy(){at(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}},xe=class extends be{Ah=Q[0]|0;Al=Q[1]|0;Bh=Q[2]|0;Bl=Q[3]|0;Ch=Q[4]|0;Cl=Q[5]|0;Dh=Q[6]|0;Dl=Q[7]|0;Eh=Q[8]|0;El=Q[9]|0;Fh=Q[10]|0;Fl=Q[11]|0;Gh=Q[12]|0;Gl=Q[13]|0;Hh=Q[14]|0;Hl=Q[15]|0;constructor(){super(64)}};var Qt=ce(()=>new he,ae(1));var me=ce(()=>new xe,ae(3));var pe=BigInt(0),ge=BigInt(1);function ut(e,t=""){if(typeof e!="boolean"){let r=t&&`"${t}" `;throw new Error(r+"expected boolean, got type="+typeof e)}return e}function Je(e){if(typeof e=="bigint"){if(!Jt(e))throw new Error("positive bigint expected, got "+e)}else ot(e);return e}function kt(e){let t=Je(e).toString(16);return t.length&1?"0"+t:t}function Fe(e){if(typeof e!="string")throw new Error("hex string expected, got "+typeof e);return e===""?pe:BigInt("0x"+e)}function Ot(e){return Fe(nt(e))}function st(e){return Fe(nt(vt(N(e)).reverse()))}function Ft(e,t){ot(t),e=Je(e);let r=rt(e.toString(16).padStart(t*2,"0"));if(r.length!==t)throw new Error("number too large");return r}function Yt(e,t){return Ft(e,t).reverse()}function vt(e){return Uint8Array.from(e)}var Jt=e=>typeof e=="bigint"&&pe<=e;function zn(e,t,r){return Jt(e)&&Jt(t)&&Jt(r)&&t<=e&&e<r}function gt(e,t,r,n){if(!zn(t,r,n))throw new Error("expected valid "+e+": "+r+" <= n < "+n+", got "+t)}function ye(e){let t;for(t=0;e>pe;e>>=ge,t+=1);return t}var Xt=e=>(ge<<BigInt(e))-ge;function tn(e,t,r){if(ot(e,"hashLen"),ot(t,"qByteLen"),typeof r!="function")throw new Error("hmacFn must be a function");let n=y=>new Uint8Array(y),o=Uint8Array.of(),f=Uint8Array.of(0),i=Uint8Array.of(1),c=1e3,s=n(e),l=n(e),h=0,x=()=>{s.fill(1),l.fill(0),h=0},v=(...y)=>r(l,tt(s,...y)),E=(y=o)=>{l=v(f,y),s=v(),y.length!==0&&(l=v(i,y),s=v())},w=()=>{if(h++>=c)throw new Error("drbg: tried max amount of iterations");let y=0,g=[];for(;y<t;){s=v();let R=s.slice();g.push(R),y+=s.length}return tt(...g)};return(y,g)=>{x(),E(y);let R;for(;!(R=g(w()));)E();return x(),R}}function it(e,t={},r={}){if(!e||typeof e!="object")throw new Error("expected valid options object");function n(f,i,c){let s=e[f];if(c&&s===void 0)return;let l=typeof s;if(l!==i||s===null)throw new Error(`param "${f}" is invalid: expected ${i}, got ${l}`)}let o=(f,i)=>Object.entries(f).forEach(([c,s])=>n(c,s,i));o(t,!1),o(r,!0)}function Ht(e){let t=new WeakMap;return(r,...n)=>{let o=t.get(r);if(o!==void 0)return o;let f=e(r,...n);return t.set(r,f),f}}var J=BigInt(0),$=BigInt(1),St=BigInt(2),rn=BigInt(3),on=BigInt(4),fn=BigInt(5),Wn=BigInt(7),sn=BigInt(8),$n=BigInt(9),cn=BigInt(16);function j(e,t){let r=e%t;return r>=J?r:t+r}function G(e,t,r){let n=e;for(;t-- >J;)n*=n,n%=r;return n}function en(e,t){if(e===J)throw new Error("invert: expected non-zero number");if(t<=J)throw new Error("invert: expected positive modulus, got "+t);let r=j(e,t),n=t,o=J,f=$,i=$,c=J;for(;r!==J;){let l=n/r,h=n%r,x=o-i*l,v=f-c*l;n=r,r=h,o=i,f=c,i=x,c=v}if(n!==$)throw new Error("invert: does not exist");return j(o,t)}function Be(e,t,r){if(!e.eql(e.sqr(t),r))throw new Error("Cannot find square root")}function an(e,t){let r=(e.ORDER+$)/on,n=e.pow(t,r);return Be(e,n,t),n}function Pn(e,t){let r=(e.ORDER-fn)/sn,n=e.mul(t,St),o=e.pow(n,r),f=e.mul(t,o),i=e.mul(e.mul(f,St),o),c=e.mul(f,e.sub(i,e.ONE));return Be(e,c,t),c}function Qn(e){let t=Tt(e),r=dn(e),n=r(t,t.neg(t.ONE)),o=r(t,n),f=r(t,t.neg(n)),i=(e+Wn)/cn;return(c,s)=>{let l=c.pow(s,i),h=c.mul(l,n),x=c.mul(l,o),v=c.mul(l,f),E=c.eql(c.sqr(h),s),w=c.eql(c.sqr(x),s);l=c.cmov(l,h,E),h=c.cmov(v,x,w);let L=c.eql(c.sqr(h),s),y=c.cmov(l,h,L);return Be(c,y,s),y}}function dn(e){if(e<rn)throw new Error("sqrt is not defined for small field");let t=e-$,r=0;for(;t%St===J;)t/=St,r++;let n=St,o=Tt(e);for(;nn(o,n)===1;)if(n++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(r===1)return an;let f=o.pow(n,t),i=(t+$)/St;return function(s,l){if(s.is0(l))return l;if(nn(s,l)!==1)throw new Error("Cannot find square root");let h=r,x=s.mul(s.ONE,f),v=s.pow(l,t),E=s.pow(l,i);for(;!s.eql(v,s.ONE);){if(s.is0(v))return s.ZERO;let w=1,L=s.sqr(v);for(;!s.eql(L,s.ONE);)if(w++,L=s.sqr(L),w===h)throw new Error("Cannot find square root");let y=$<<BigInt(h-w-1),g=s.pow(x,y);h=w,x=s.sqr(g),v=s.mul(v,x),E=s.mul(E,g)}return E}}function Jn(e){return e%on===rn?an:e%sn===fn?Pn:e%cn===$n?Qn(e):dn(e)}var un=(e,t)=>(j(e,t)&$)===$,Fn=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Ee(e){let t={ORDER:"bigint",BYTES:"number",BITS:"number"},r=Fn.reduce((n,o)=>(n[o]="function",n),t);return it(e,r),e}function tr(e,t,r){if(r<J)throw new Error("invalid exponent, negatives unsupported");if(r===J)return e.ONE;if(r===$)return t;let n=e.ONE,o=t;for(;r>J;)r&$&&(n=e.mul(n,o)),o=e.sqr(o),r>>=$;return n}function Gt(e,t,r=!1){let n=new Array(t.length).fill(r?e.ZERO:void 0),o=t.reduce((i,c,s)=>e.is0(c)?i:(n[s]=i,e.mul(i,c)),e.ONE),f=e.inv(o);return t.reduceRight((i,c,s)=>e.is0(c)?i:(n[s]=e.mul(i,n[s]),e.mul(i,c)),f),n}function nn(e,t){let r=(e.ORDER-$)/St,n=e.pow(t,r),o=e.eql(n,e.ONE),f=e.eql(n,e.ZERO),i=e.eql(n,e.neg(e.ONE));if(!o&&!f&&!i)throw new Error("invalid Legendre symbol result");return o?1:f?0:-1}function er(e,t){t!==void 0&&ot(t);let r=t!==void 0?t:e.toString(2).length,n=Math.ceil(r/8);return{nBitLength:r,nByteLength:n}}var we=class{ORDER;BITS;BYTES;isLE;ZERO=J;ONE=$;_lengths;_sqrt;_mod;constructor(t,r={}){if(t<=J)throw new Error("invalid field: expected ORDER > 0, got "+t);let n;this.isLE=!1,r!=null&&typeof r=="object"&&(typeof r.BITS=="number"&&(n=r.BITS),typeof r.sqrt=="function"&&(this.sqrt=r.sqrt),typeof r.isLE=="boolean"&&(this.isLE=r.isLE),r.allowedLengths&&(this._lengths=r.allowedLengths?.slice()),typeof r.modFromBytes=="boolean"&&(this._mod=r.modFromBytes));let{nBitLength:o,nByteLength:f}=er(t,n);if(f>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=t,this.BITS=o,this.BYTES=f,this._sqrt=void 0,Object.preventExtensions(this)}create(t){return j(t,this.ORDER)}isValid(t){if(typeof t!="bigint")throw new Error("invalid field element: expected bigint, got "+typeof t);return J<=t&&t<this.ORDER}is0(t){return t===J}isValidNot0(t){return!this.is0(t)&&this.isValid(t)}isOdd(t){return(t&$)===$}neg(t){return j(-t,this.ORDER)}eql(t,r){return t===r}sqr(t){return j(t*t,this.ORDER)}add(t,r){return j(t+r,this.ORDER)}sub(t,r){return j(t-r,this.ORDER)}mul(t,r){return j(t*r,this.ORDER)}pow(t,r){return tr(this,t,r)}div(t,r){return j(t*en(r,this.ORDER),this.ORDER)}sqrN(t){return t*t}addN(t,r){return t+r}subN(t,r){return t-r}mulN(t,r){return t*r}inv(t){return en(t,this.ORDER)}sqrt(t){return this._sqrt||(this._sqrt=Jn(this.ORDER)),this._sqrt(this,t)}toBytes(t){return this.isLE?Yt(t,this.BYTES):Ft(t,this.BYTES)}fromBytes(t,r=!1){N(t);let{_lengths:n,BYTES:o,isLE:f,ORDER:i,_mod:c}=this;if(n){if(!n.includes(t.length)||t.length>o)throw new Error("Field.fromBytes: expected "+n+" bytes, got "+t.length);let l=new Uint8Array(o);l.set(t,f?0:l.length-t.length),t=l}if(t.length!==o)throw new Error("Field.fromBytes: expected "+o+" bytes, got "+t.length);let s=f?st(t):Ot(t);if(c&&(s=j(s,i)),!r&&!this.isValid(s))throw new Error("invalid field element: outside of range 0..ORDER");return s}invertBatch(t){return Gt(this,t)}cmov(t,r,n){return n?r:t}};function Tt(e,t={}){return new we(e,t)}function ln(e){if(typeof e!="bigint")throw new Error("field order must be bigint");let t=e.toString(2).length;return Math.ceil(t/8)}function ve(e){let t=ln(e);return t+Math.ceil(t/2)}function Se(e,t,r=!1){N(e);let n=e.length,o=ln(t),f=ve(t);if(n<16||n<f||n>1024)throw new Error("expected "+f+"-1024 bytes of input, got "+n);let i=r?st(e):Ot(e),c=j(i,t-$)+$;return r?Yt(c,o):Ft(c,o)}var Lt=BigInt(0),_t=BigInt(1);function Kt(e,t){let r=t.negate();return e?r:t}function It(e,t){let r=Gt(e.Fp,t.map(n=>n.Z));return t.map((n,o)=>e.fromAffine(n.toAffine(r[o])))}function mn(e,t){if(!Number.isSafeInteger(e)||e<=0||e>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+e)}function _e(e,t){mn(e,t);let r=Math.ceil(t/e)+1,n=2**(e-1),o=2**e,f=Xt(e),i=BigInt(e);return{windows:r,windowSize:n,mask:f,maxNumber:o,shiftBy:i}}function hn(e,t,r){let{windowSize:n,mask:o,maxNumber:f,shiftBy:i}=r,c=Number(e&o),s=e>>i;c>n&&(c-=f,s+=_t);let l=t*n,h=l+Math.abs(c)-1,x=c===0,v=c<0,E=t%2!==0;return{nextN:s,offset:h,isZero:x,isNeg:v,isNegF:E,offsetF:l}}var Ie=new WeakMap,gn=new WeakMap;function Ae(e){return gn.get(e)||1}function bn(e){if(e!==Lt)throw new Error("invalid wNAF")}var Ut=class{BASE;ZERO;Fn;bits;constructor(t,r){this.BASE=t.BASE,this.ZERO=t.ZERO,this.Fn=t.Fn,this.bits=r}_unsafeLadder(t,r,n=this.ZERO){let o=t;for(;r>Lt;)r&_t&&(n=n.add(o)),o=o.double(),r>>=_t;return n}precomputeWindow(t,r){let{windows:n,windowSize:o}=_e(r,this.bits),f=[],i=t,c=i;for(let s=0;s<n;s++){c=i,f.push(c);for(let l=1;l<o;l++)c=c.add(i),f.push(c);i=c.double()}return f}wNAF(t,r,n){if(!this.Fn.isValid(n))throw new Error("invalid scalar");let o=this.ZERO,f=this.BASE,i=_e(t,this.bits);for(let c=0;c<i.windows;c++){let{nextN:s,offset:l,isZero:h,isNeg:x,isNegF:v,offsetF:E}=hn(n,c,i);n=s,h?f=f.add(Kt(v,r[E])):o=o.add(Kt(x,r[l]))}return bn(n),{p:o,f}}wNAFUnsafe(t,r,n,o=this.ZERO){let f=_e(t,this.bits);for(let i=0;i<f.windows&&n!==Lt;i++){let{nextN:c,offset:s,isZero:l,isNeg:h}=hn(n,i,f);if(n=c,!l){let x=r[s];o=o.add(h?x.negate():x)}}return bn(n),o}getPrecomputes(t,r,n){let o=Ie.get(r);return o||(o=this.precomputeWindow(r,t),t!==1&&(typeof n=="function"&&(o=n(o)),Ie.set(r,o))),o}cached(t,r,n){let o=Ae(t);return this.wNAF(o,this.getPrecomputes(o,t,n),r)}unsafe(t,r,n,o){let f=Ae(t);return f===1?this._unsafeLadder(t,r,o):this.wNAFUnsafe(f,this.getPrecomputes(f,t,n),r,o)}createCache(t,r){mn(r,this.bits),gn.set(t,r),Ie.delete(t)}hasCache(t){return Ae(t)!==1}};function pn(e,t,r,n){let o=t,f=e.ZERO,i=e.ZERO;for(;r>Lt||n>Lt;)r&_t&&(f=f.add(o)),n&_t&&(i=i.add(o)),o=o.double(),r>>=_t,n>>=_t;return{p1:f,p2:i}}function xn(e,t,r){if(t){if(t.ORDER!==e)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Ee(t),t}else return Tt(e,{isLE:r})}function te(e,t,r={},n){if(n===void 0&&(n=e==="edwards"),!t||typeof t!="object")throw new Error(`expected valid ${e} CURVE object`);for(let s of["p","n","h"]){let l=t[s];if(!(typeof l=="bigint"&&l>Lt))throw new Error(`CURVE.${s} must be positive bigint`)}let o=xn(t.p,r.Fp,n),f=xn(t.n,r.Fn,n),c=["Gx","Gy","a",e==="weierstrass"?"b":"d"];for(let s of c)if(!o.isValid(t[s]))throw new Error(`CURVE.${s} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:o,Fn:f}}function qt(e,t){return function(n){let o=e(n);return{secretKey:o,publicKey:t(o)}}}var ee=class{oHash;iHash;blockLen;outputLen;finished=!1;destroyed=!1;constructor(t,r){if(Wt(t),N(r,void 0,"key"),this.iHash=t.create(),typeof this.iHash.update!="function")throw new Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let n=this.blockLen,o=new Uint8Array(n);o.set(r.length>n?t.create().update(r).digest():r);for(let f=0;f<o.length;f++)o[f]^=54;this.iHash.update(o),this.oHash=t.create();for(let f=0;f<o.length;f++)o[f]^=106;this.oHash.update(o),at(o)}update(t){return Rt(this),this.iHash.update(t),this}digestInto(t){Rt(this),N(t,this.outputLen,"output"),this.finished=!0,this.iHash.digestInto(t),this.oHash.update(t),this.oHash.digestInto(t),this.destroy()}digest(){let t=new Uint8Array(this.oHash.outputLen);return this.digestInto(t),t}_cloneInto(t){t||=Object.create(Object.getPrototypeOf(this),{});let{oHash:r,iHash:n,finished:o,destroyed:f,blockLen:i,outputLen:c}=this;return t=t,t.finished=o,t.destroyed=f,t.blockLen=i,t.outputLen=c,t.oHash=r._cloneInto(t.oHash),t.iHash=n._cloneInto(t.iHash),t}clone(){return this._cloneInto()}destroy(){this.destroyed=!0,this.oHash.destroy(),this.iHash.destroy()}},Re=(e,t,r)=>new ee(e,t).update(r).digest();Re.create=(e,t)=>new ee(e,t);var yn=(e,t)=>(e+(e>=0?t:-t)/wn)/t;function nr(e,t,r){let[[n,o],[f,i]]=t,c=yn(i*e,r),s=yn(-o*e,r),l=e-c*n-s*f,h=-c*o-s*i,x=l<lt,v=h<lt;x&&(l=-l),v&&(h=-h);let E=Xt(Math.ceil(ye(r)/2))+Nt;if(l<lt||l>=E||h<lt||h>=E)throw new Error("splitScalar (endomorphism): failed, k="+e);return{k1neg:x,k1:l,k2neg:v,k2:h}}function He(e){if(!["compact","recovered","der"].includes(e))throw new Error('Signature format must be "compact", "recovered", or "der"');return e}function Oe(e,t){let r={};for(let n of Object.keys(t))r[n]=e[n]===void 0?t[n]:e[n];return ut(r.lowS,"lowS"),ut(r.prehash,"prehash"),r.format!==void 0&&He(r.format),r}var Te=class extends Error{constructor(t=""){super(t)}},pt={Err:Te,_tlv:{encode:(e,t)=>{let{Err:r}=pt;if(e<0||e>256)throw new r("tlv.encode: wrong tag");if(t.length&1)throw new r("tlv.encode: unpadded data");let n=t.length/2,o=kt(n);if(o.length/2&128)throw new r("tlv.encode: long form length too big");let f=n>127?kt(o.length/2|128):"";return kt(e)+f+o+t},decode(e,t){let{Err:r}=pt,n=0;if(e<0||e>256)throw new r("tlv.encode: wrong tag");if(t.length<2||t[n++]!==e)throw new r("tlv.decode: wrong tlv");let o=t[n++],f=!!(o&128),i=0;if(!f)i=o;else{let s=o&127;if(!s)throw new r("tlv.decode(long): indefinite length not supported");if(s>4)throw new r("tlv.decode(long): byte length is too big");let l=t.subarray(n,n+s);if(l.length!==s)throw new r("tlv.decode: length bytes not complete");if(l[0]===0)throw new r("tlv.decode(long): zero leftmost byte");for(let h of l)i=i<<8|h;if(n+=s,i<128)throw new r("tlv.decode(long): not minimal encoding")}let c=t.subarray(n,n+i);if(c.length!==i)throw new r("tlv.decode: wrong value length");return{v:c,l:t.subarray(n+i)}}},_int:{encode(e){let{Err:t}=pt;if(e<lt)throw new t("integer: negative integers are not allowed");let r=kt(e);if(Number.parseInt(r[0],16)&8&&(r="00"+r),r.length&1)throw new t("unexpected DER parsing assertion: unpadded hex");return r},decode(e){let{Err:t}=pt;if(e[0]&128)throw new t("invalid signature integer: negative");if(e[0]===0&&!(e[1]&128))throw new t("invalid signature integer: unnecessary leading zero");return Ot(e)}},toSig(e){let{Err:t,_int:r,_tlv:n}=pt,o=N(e,void 0,"signature"),{v:f,l:i}=n.decode(48,o);if(i.length)throw new t("invalid signature: left bytes after parsing");let{v:c,l:s}=n.decode(2,f),{v:l,l:h}=n.decode(2,s);if(h.length)throw new t("invalid signature: left bytes after parsing");return{r:r.decode(c),s:r.decode(l)}},hexFromSig(e){let{_tlv:t,_int:r}=pt,n=t.encode(2,r.encode(e.r)),o=t.encode(2,r.encode(e.s)),f=n+o;return t.encode(48,f)}},lt=BigInt(0),Nt=BigInt(1),wn=BigInt(2),ne=BigInt(3),rr=BigInt(4);function re(e,t={}){let r=te("weierstrass",e,t),{Fp:n,Fn:o}=r,f=r.CURVE,{h:i,n:c}=f;it(t,{},{allowInfinityPoint:"boolean",clearCofactor:"function",isTorsionFree:"function",fromBytes:"function",toBytes:"function",endo:"object"});let{endo:s}=t;if(s&&(!n.is0(f.a)||typeof s.beta!="bigint"||!Array.isArray(s.basises)))throw new Error('invalid endo: expected "beta": bigint and "basises": array');let l=En(n,o);function h(){if(!n.isOdd)throw new Error("compression is not supported: Field does not have .isOdd()")}function x(O,u,a){let{x:d,y:m}=u.toAffine(),I=n.toBytes(d);if(ut(a,"isCompressed"),a){h();let S=!n.isOdd(m);return tt(Bn(S),I)}else return tt(Uint8Array.of(4),I,n.toBytes(m))}function v(O){N(O,void 0,"Point");let{publicKey:u,publicKeyUncompressed:a}=l,d=O.length,m=O[0],I=O.subarray(1);if(d===u&&(m===2||m===3)){let S=n.fromBytes(I);if(!n.isValid(S))throw new Error("bad point: is not on curve, wrong x");let A=L(S),_;try{_=n.sqrt(A)}catch(K){let M=K instanceof Error?": "+K.message:"";throw new Error("bad point: is not on curve, sqrt error"+M)}h();let H=n.isOdd(_);return(m&1)===1!==H&&(_=n.neg(_)),{x:S,y:_}}else if(d===a&&m===4){let S=n.BYTES,A=n.fromBytes(I.subarray(0,S)),_=n.fromBytes(I.subarray(S,S*2));if(!y(A,_))throw new Error("bad point: is not on curve");return{x:A,y:_}}else throw new Error(`bad point: got length ${d}, expected compressed=${u} or uncompressed=${a}`)}let E=t.toBytes||x,w=t.fromBytes||v;function L(O){let u=n.sqr(O),a=n.mul(u,O);return n.add(n.add(a,n.mul(O,f.a)),f.b)}function y(O,u){let a=n.sqr(u),d=L(O);return n.eql(a,d)}if(!y(f.Gx,f.Gy))throw new Error("bad curve params: generator point");let g=n.mul(n.pow(f.a,ne),rr),R=n.mul(n.sqr(f.b),BigInt(27));if(n.is0(n.add(g,R)))throw new Error("bad curve params: a or b");function p(O,u,a=!1){if(!n.isValid(u)||a&&n.is0(u))throw new Error(`bad point coordinate ${O}`);return u}function T(O){if(!(O instanceof b))throw new Error("Weierstrass Point expected")}function D(O){if(!s||!s.basises)throw new Error("no endo");return nr(O,s.basises,o.ORDER)}let V=Ht((O,u)=>{let{X:a,Y:d,Z:m}=O;if(n.eql(m,n.ONE))return{x:a,y:d};let I=O.is0();u==null&&(u=I?n.ONE:n.inv(m));let S=n.mul(a,u),A=n.mul(d,u),_=n.mul(m,u);if(I)return{x:n.ZERO,y:n.ZERO};if(!n.eql(_,n.ONE))throw new Error("invZ was invalid");return{x:S,y:A}}),k=Ht(O=>{if(O.is0()){if(t.allowInfinityPoint&&!n.is0(O.Y))return;throw new Error("bad point: ZERO")}let{x:u,y:a}=O.toAffine();if(!n.isValid(u)||!n.isValid(a))throw new Error("bad point: x or y not field elements");if(!y(u,a))throw new Error("bad point: equation left != right");if(!O.isTorsionFree())throw new Error("bad point: not in prime-order subgroup");return!0});function B(O,u,a,d,m){return a=new b(n.mul(a.X,O),a.Y,a.Z),u=Kt(d,u),a=Kt(m,a),u.add(a)}class b{static BASE=new b(f.Gx,f.Gy,n.ONE);static ZERO=new b(n.ZERO,n.ONE,n.ZERO);static Fp=n;static Fn=o;X;Y;Z;constructor(u,a,d){this.X=p("x",u),this.Y=p("y",a,!0),this.Z=p("z",d),Object.freeze(this)}static CURVE(){return f}static fromAffine(u){let{x:a,y:d}=u||{};if(!u||!n.isValid(a)||!n.isValid(d))throw new Error("invalid affine point");if(u instanceof b)throw new Error("projective point not allowed");return n.is0(a)&&n.is0(d)?b.ZERO:new b(a,d,n.ONE)}static fromBytes(u){let a=b.fromAffine(w(N(u,void 0,"point")));return a.assertValidity(),a}static fromHex(u){return b.fromBytes(rt(u))}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(u=8,a=!0){return Z.createCache(this,u),a||this.multiply(ne),this}assertValidity(){k(this)}hasEvenY(){let{y:u}=this.toAffine();if(!n.isOdd)throw new Error("Field doesn't support isOdd");return!n.isOdd(u)}equals(u){T(u);let{X:a,Y:d,Z:m}=this,{X:I,Y:S,Z:A}=u,_=n.eql(n.mul(a,A),n.mul(I,m)),H=n.eql(n.mul(d,A),n.mul(S,m));return _&&H}negate(){return new b(this.X,n.neg(this.Y),this.Z)}double(){let{a:u,b:a}=f,d=n.mul(a,ne),{X:m,Y:I,Z:S}=this,A=n.ZERO,_=n.ZERO,H=n.ZERO,U=n.mul(m,m),K=n.mul(I,I),M=n.mul(S,S),C=n.mul(m,I);return C=n.add(C,C),H=n.mul(m,S),H=n.add(H,H),A=n.mul(u,H),_=n.mul(d,M),_=n.add(A,_),A=n.sub(K,_),_=n.add(K,_),_=n.mul(A,_),A=n.mul(C,A),H=n.mul(d,H),M=n.mul(u,M),C=n.sub(U,M),C=n.mul(u,C),C=n.add(C,H),H=n.add(U,U),U=n.add(H,U),U=n.add(U,M),U=n.mul(U,C),_=n.add(_,U),M=n.mul(I,S),M=n.add(M,M),U=n.mul(M,C),A=n.sub(A,U),H=n.mul(M,K),H=n.add(H,H),H=n.add(H,H),new b(A,_,H)}add(u){T(u);let{X:a,Y:d,Z:m}=this,{X:I,Y:S,Z:A}=u,_=n.ZERO,H=n.ZERO,U=n.ZERO,K=f.a,M=n.mul(f.b,ne),C=n.mul(a,I),Y=n.mul(d,S),z=n.mul(m,A),F=n.add(a,d),X=n.add(I,S);F=n.mul(F,X),X=n.add(C,Y),F=n.sub(F,X),X=n.add(a,m);let W=n.add(I,A);return X=n.mul(X,W),W=n.add(C,z),X=n.sub(X,W),W=n.add(d,m),_=n.add(S,A),W=n.mul(W,_),_=n.add(Y,z),W=n.sub(W,_),U=n.mul(K,X),_=n.mul(M,z),U=n.add(_,U),_=n.sub(Y,U),U=n.add(Y,U),H=n.mul(_,U),Y=n.add(C,C),Y=n.add(Y,C),z=n.mul(K,z),X=n.mul(M,X),Y=n.add(Y,z),z=n.sub(C,z),z=n.mul(K,z),X=n.add(X,z),C=n.mul(Y,X),H=n.add(H,C),C=n.mul(W,X),_=n.mul(F,_),_=n.sub(_,C),C=n.mul(F,Y),U=n.mul(W,U),U=n.add(U,C),new b(_,H,U)}subtract(u){return this.add(u.negate())}is0(){return this.equals(b.ZERO)}multiply(u){let{endo:a}=t;if(!o.isValidNot0(u))throw new Error("invalid scalar: out of range");let d,m,I=S=>Z.cached(this,S,A=>It(b,A));if(a){let{k1neg:S,k1:A,k2neg:_,k2:H}=D(u),{p:U,f:K}=I(A),{p:M,f:C}=I(H);m=K.add(C),d=B(a.beta,U,M,S,_)}else{let{p:S,f:A}=I(u);d=S,m=A}return It(b,[d,m])[0]}multiplyUnsafe(u){let{endo:a}=t,d=this;if(!o.isValid(u))throw new Error("invalid scalar: out of range");if(u===lt||d.is0())return b.ZERO;if(u===Nt)return d;if(Z.hasCache(this))return this.multiply(u);if(a){let{k1neg:m,k1:I,k2neg:S,k2:A}=D(u),{p1:_,p2:H}=pn(b,d,I,A);return B(a.beta,_,H,m,S)}else return Z.unsafe(d,u)}toAffine(u){return V(this,u)}isTorsionFree(){let{isTorsionFree:u}=t;return i===Nt?!0:u?u(b,this):Z.unsafe(this,c).is0()}clearCofactor(){let{clearCofactor:u}=t;return i===Nt?this:u?u(b,this):this.multiplyUnsafe(i)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}toBytes(u=!0){return ut(u,"isCompressed"),this.assertValidity(),E(b,this,u)}toHex(u=!0){return nt(this.toBytes(u))}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let q=o.BITS,Z=new Ut(b,t.endo?Math.ceil(q/2):q);return b.BASE.precompute(8),b}function Bn(e){return Uint8Array.of(e?2:3)}function En(e,t){return{secretKey:t.BYTES,publicKey:1+e.BYTES,publicKeyUncompressed:1+2*e.BYTES,publicKeyHasPrefix:!0,signature:2*t.BYTES}}function or(e,t={}){let{Fn:r}=e,n=t.randomBytes||ht,o=Object.assign(En(e.Fp,r),{seed:ve(r.ORDER)});function f(E){try{let w=r.fromBytes(E);return r.isValidNot0(w)}catch{return!1}}function i(E,w){let{publicKey:L,publicKeyUncompressed:y}=o;try{let g=E.length;return w===!0&&g!==L||w===!1&&g!==y?!1:!!e.fromBytes(E)}catch{return!1}}function c(E=n(o.seed)){return Se(N(E,o.seed,"seed"),r.ORDER)}function s(E,w=!0){return e.BASE.multiply(r.fromBytes(E)).toBytes(w)}function l(E){let{secretKey:w,publicKey:L,publicKeyUncompressed:y}=o;if(!wt(E)||"_lengths"in r&&r._lengths||w===L)return;let g=N(E,void 0,"key").length;return g===L||g===y}function h(E,w,L=!0){if(l(E)===!0)throw new Error("first arg must be private key");if(l(w)===!1)throw new Error("second arg must be public key");let y=r.fromBytes(E);return e.fromBytes(w).multiply(y).toBytes(L)}let x={isValidSecretKey:f,isValidPublicKey:i,randomSecretKey:c},v=qt(c,s);return Object.freeze({getPublicKey:s,getSharedSecret:h,keygen:v,Point:e,utils:x,lengths:o})}function oe(e,t,r={}){Wt(t),it(r,{},{hmac:"function",lowS:"boolean",randomBytes:"function",bits2int:"function",bits2int_modN:"function"}),r=Object.assign({},r);let n=r.randomBytes||ht,o=r.hmac||((a,d)=>Re(t,a,d)),{Fp:f,Fn:i}=e,{ORDER:c,BITS:s}=i,{keygen:l,getPublicKey:h,getSharedSecret:x,utils:v,lengths:E}=or(e,r),w={prehash:!0,lowS:typeof r.lowS=="boolean"?r.lowS:!0,format:"compact",extraEntropy:!1},L=c*wn<f.ORDER;function y(a){let d=c>>Nt;return a>d}function g(a,d){if(!i.isValidNot0(d))throw new Error(`invalid signature ${a}: out of range 1..Point.Fn.ORDER`);return d}function R(){if(L)throw new Error('"recovered" sig type is not supported for cofactor >2 curves')}function p(a,d){He(d);let m=E.signature,I=d==="compact"?m:d==="recovered"?m+1:void 0;return N(a,I)}class T{r;s;recovery;constructor(d,m,I){if(this.r=g("r",d),this.s=g("s",m),I!=null){if(R(),![0,1,2,3].includes(I))throw new Error("invalid recovery id");this.recovery=I}Object.freeze(this)}static fromBytes(d,m=w.format){p(d,m);let I;if(m==="der"){let{r:H,s:U}=pt.toSig(N(d));return new T(H,U)}m==="recovered"&&(I=d[0],m="compact",d=d.subarray(1));let S=E.signature/2,A=d.subarray(0,S),_=d.subarray(S,S*2);return new T(i.fromBytes(A),i.fromBytes(_),I)}static fromHex(d,m){return this.fromBytes(rt(d),m)}assertRecovery(){let{recovery:d}=this;if(d==null)throw new Error("invalid recovery id: must be present");return d}addRecoveryBit(d){return new T(this.r,this.s,d)}recoverPublicKey(d){let{r:m,s:I}=this,S=this.assertRecovery(),A=S===2||S===3?m+c:m;if(!f.isValid(A))throw new Error("invalid recovery id: sig.r+curve.n != R.x");let _=f.toBytes(A),H=e.fromBytes(tt(Bn((S&1)===0),_)),U=i.inv(A),K=V(N(d,void 0,"msgHash")),M=i.create(-K*U),C=i.create(I*U),Y=e.BASE.multiplyUnsafe(M).add(H.multiplyUnsafe(C));if(Y.is0())throw new Error("invalid recovery: point at infinify");return Y.assertValidity(),Y}hasHighS(){return y(this.s)}toBytes(d=w.format){if(He(d),d==="der")return rt(pt.hexFromSig(this));let{r:m,s:I}=this,S=i.toBytes(m),A=i.toBytes(I);return d==="recovered"?(R(),tt(Uint8Array.of(this.assertRecovery()),S,A)):tt(S,A)}toHex(d){return nt(this.toBytes(d))}}let D=r.bits2int||function(d){if(d.length>8192)throw new Error("input is too large");let m=Ot(d),I=d.length*8-s;return I>0?m>>BigInt(I):m},V=r.bits2int_modN||function(d){return i.create(D(d))},k=Xt(s);function B(a){return gt("num < 2^"+s,a,lt,k),i.toBytes(a)}function b(a,d){return N(a,void 0,"message"),d?N(t(a),void 0,"prehashed message"):a}function q(a,d,m){let{lowS:I,prehash:S,extraEntropy:A}=Oe(m,w);a=b(a,S);let _=V(a),H=i.fromBytes(d);if(!i.isValidNot0(H))throw new Error("invalid private key");let U=[B(H),B(_)];if(A!=null&&A!==!1){let Y=A===!0?n(E.secretKey):A;U.push(N(Y,void 0,"extraEntropy"))}let K=tt(...U),M=_;function C(Y){let z=D(Y);if(!i.isValidNot0(z))return;let F=i.inv(z),X=e.BASE.multiply(z).toAffine(),W=i.create(X.x);if(W===lt)return;let At=i.create(F*i.create(M+W*H));if(At===lt)return;let zt=(X.x===W?0:2)|Number(X.y&Nt),Zt=At;return I&&y(At)&&(Zt=i.neg(At),zt^=1),new T(W,Zt,L?void 0:zt)}return{seed:K,k2sig:C}}function Z(a,d,m={}){let{seed:I,k2sig:S}=q(a,d,m);return tn(t.outputLen,i.BYTES,o)(I,S).toBytes(m.format)}function O(a,d,m,I={}){let{lowS:S,prehash:A,format:_}=Oe(I,w);if(m=N(m,void 0,"publicKey"),d=b(d,A),!wt(a)){let H=a instanceof T?", use sig.toBytes()":"";throw new Error("verify expects Uint8Array signature"+H)}p(a,_);try{let H=T.fromBytes(a,_),U=e.fromBytes(m);if(S&&H.hasHighS())return!1;let{r:K,s:M}=H,C=V(d),Y=i.inv(M),z=i.create(C*Y),F=i.create(K*Y),X=e.BASE.multiplyUnsafe(z).add(U.multiplyUnsafe(F));return X.is0()?!1:i.create(X.x)===K}catch{return!1}}function u(a,d,m={}){let{prehash:I}=Oe(m,w);return d=b(d,I),T.fromBytes(a,"recovered").recoverPublicKey(d).toBytes()}return Object.freeze({keygen:l,getPublicKey:h,getSharedSecret:x,utils:v,lengths:E,Point:e,sign:Z,verify:O,recoverPublicKey:u,Signature:T,hash:t})}var Ue={p:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:BigInt(1),a:BigInt(0),b:BigInt(7),Gx:BigInt("0x79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798"),Gy:BigInt("0x483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8")},sr={beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),basises:[[BigInt("0x3086d221a7d46bcde86c90e49284eb15"),-BigInt("0xe4437ed6010e88286f547fa90abfe4c3")],[BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),BigInt("0x3086d221a7d46bcde86c90e49284eb15")]]};var vn=BigInt(2);function ir(e){let t=Ue.p,r=BigInt(3),n=BigInt(6),o=BigInt(11),f=BigInt(22),i=BigInt(23),c=BigInt(44),s=BigInt(88),l=e*e*e%t,h=l*l*e%t,x=G(h,r,t)*h%t,v=G(x,r,t)*h%t,E=G(v,vn,t)*l%t,w=G(E,o,t)*E%t,L=G(w,f,t)*w%t,y=G(L,c,t)*L%t,g=G(y,s,t)*y%t,R=G(g,c,t)*L%t,p=G(R,r,t)*h%t,T=G(p,i,t)*w%t,D=G(T,n,t)*l%t,V=G(D,vn,t);if(!Le.eql(Le.sqr(V),e))throw new Error("Cannot find square root");return V}var Le=Tt(Ue.p,{sqrt:ir}),cr=re(Ue,{Fp:Le,endo:sr}),Sn=oe(cr,Qt);var yt=BigInt(0),P=BigInt(1),qe=BigInt(2),ar=BigInt(8);function dr(e,t,r,n){let o=e.sqr(r),f=e.sqr(n),i=e.add(e.mul(t.a,o),f),c=e.add(e.ONE,e.mul(t.d,e.mul(o,f)));return e.eql(i,c)}function _n(e,t={}){let r=te("edwards",e,t,t.FpFnLE),{Fp:n,Fn:o}=r,f=r.CURVE,{h:i}=f;it(t,{},{uvRatio:"function"});let c=qe<<BigInt(o.BYTES*8)-P,s=y=>n.create(y),l=t.uvRatio||((y,g)=>{try{return{isValid:!0,value:n.sqrt(n.div(y,g))}}catch{return{isValid:!1,value:yt}}});if(!dr(n,f,f.Gx,f.Gy))throw new Error("bad curve params: generator point");function h(y,g,R=!1){let p=R?P:yt;return gt("coordinate "+y,g,p,c),g}function x(y){if(!(y instanceof w))throw new Error("EdwardsPoint expected")}let v=Ht((y,g)=>{let{X:R,Y:p,Z:T}=y,D=y.is0();g==null&&(g=D?ar:n.inv(T));let V=s(R*g),k=s(p*g),B=n.mul(T,g);if(D)return{x:yt,y:P};if(B!==P)throw new Error("invZ was invalid");return{x:V,y:k}}),E=Ht(y=>{let{a:g,d:R}=f;if(y.is0())throw new Error("bad point: ZERO");let{X:p,Y:T,Z:D,T:V}=y,k=s(p*p),B=s(T*T),b=s(D*D),q=s(b*b),Z=s(k*g),O=s(b*s(Z+B)),u=s(q+s(R*s(k*B)));if(O!==u)throw new Error("bad point: equation left != right (1)");let a=s(p*T),d=s(D*V);if(a!==d)throw new Error("bad point: equation left != right (2)");return!0});class w{static BASE=new w(f.Gx,f.Gy,P,s(f.Gx*f.Gy));static ZERO=new w(yt,P,P,yt);static Fp=n;static Fn=o;X;Y;Z;T;constructor(g,R,p,T){this.X=h("x",g),this.Y=h("y",R),this.Z=h("z",p,!0),this.T=h("t",T),Object.freeze(this)}static CURVE(){return f}static fromAffine(g){if(g instanceof w)throw new Error("extended point not allowed");let{x:R,y:p}=g||{};return h("x",R),h("y",p),new w(R,p,P,s(R*p))}static fromBytes(g,R=!1){let p=n.BYTES,{a:T,d:D}=f;g=vt(N(g,p,"point")),ut(R,"zip215");let V=vt(g),k=g[p-1];V[p-1]=k&-129;let B=st(V),b=R?c:n.ORDER;gt("point.y",B,yt,b);let q=s(B*B),Z=s(q-P),O=s(D*q-T),{isValid:u,value:a}=l(Z,O);if(!u)throw new Error("bad point: invalid y coordinate");let d=(a&P)===P,m=(k&128)!==0;if(!R&&a===yt&&m)throw new Error("bad point: x=0 and x_0=1");return m!==d&&(a=s(-a)),w.fromAffine({x:a,y:B})}static fromHex(g,R=!1){return w.fromBytes(rt(g),R)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(g=8,R=!0){return L.createCache(this,g),R||this.multiply(qe),this}assertValidity(){E(this)}equals(g){x(g);let{X:R,Y:p,Z:T}=this,{X:D,Y:V,Z:k}=g,B=s(R*k),b=s(D*T),q=s(p*k),Z=s(V*T);return B===b&&q===Z}is0(){return this.equals(w.ZERO)}negate(){return new w(s(-this.X),this.Y,this.Z,s(-this.T))}double(){let{a:g}=f,{X:R,Y:p,Z:T}=this,D=s(R*R),V=s(p*p),k=s(qe*s(T*T)),B=s(g*D),b=R+p,q=s(s(b*b)-D-V),Z=B+V,O=Z-k,u=B-V,a=s(q*O),d=s(Z*u),m=s(q*u),I=s(O*Z);return new w(a,d,I,m)}add(g){x(g);let{a:R,d:p}=f,{X:T,Y:D,Z:V,T:k}=this,{X:B,Y:b,Z:q,T:Z}=g,O=s(T*B),u=s(D*b),a=s(k*p*Z),d=s(V*q),m=s((T+D)*(B+b)-O-u),I=d-a,S=d+a,A=s(u-R*O),_=s(m*I),H=s(S*A),U=s(m*A),K=s(I*S);return new w(_,H,K,U)}subtract(g){return this.add(g.negate())}multiply(g){if(!o.isValidNot0(g))throw new Error("invalid scalar: expected 1 <= sc < curve.n");let{p:R,f:p}=L.cached(this,g,T=>It(w,T));return It(w,[R,p])[0]}multiplyUnsafe(g,R=w.ZERO){if(!o.isValid(g))throw new Error("invalid scalar: expected 0 <= sc < curve.n");return g===yt?w.ZERO:this.is0()||g===P?this:L.unsafe(this,g,p=>It(w,p),R)}isSmallOrder(){return this.multiplyUnsafe(i).is0()}isTorsionFree(){return L.unsafe(this,f.n).is0()}toAffine(g){return v(this,g)}clearCofactor(){return i===P?this:this.multiplyUnsafe(i)}toBytes(){let{x:g,y:R}=this.toAffine(),p=n.toBytes(R);return p[p.length-1]|=g&P?128:0,p}toHex(){return nt(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}}let L=new Ut(w,o.BITS);return w.BASE.precompute(8),w}function In(e,t,r={}){if(typeof t!="function")throw new Error('"hash" function param is required');it(r,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",mapToCurve:"function"});let{prehash:n}=r,{BASE:o,Fp:f,Fn:i}=e,c=r.randomBytes||ht,s=r.adjustScalarBytes||(B=>B),l=r.domain||((B,b,q)=>{if(ut(q,"phflag"),b.length||q)throw new Error("Contexts/pre-hash are not supported");return B});function h(B){return i.create(st(B))}function x(B){let b=p.secretKey;N(B,p.secretKey,"secretKey");let q=N(t(B),2*b,"hashedSecretKey"),Z=s(q.slice(0,b)),O=q.slice(b,2*b),u=h(Z);return{head:Z,prefix:O,scalar:u}}function v(B){let{head:b,prefix:q,scalar:Z}=x(B),O=o.multiply(Z),u=O.toBytes();return{head:b,prefix:q,scalar:Z,point:O,pointBytes:u}}function E(B){return v(B).pointBytes}function w(B=Uint8Array.of(),...b){let q=tt(...b);return h(t(l(q,N(B,void 0,"context"),!!n)))}function L(B,b,q={}){B=N(B,void 0,"message"),n&&(B=n(B));let{prefix:Z,scalar:O,pointBytes:u}=v(b),a=w(q.context,Z,B),d=o.multiply(a).toBytes(),m=w(q.context,d,u,B),I=i.create(a+m*O);if(!i.isValid(I))throw new Error("sign failed: invalid s");let S=tt(d,i.toBytes(I));return N(S,p.signature,"result")}let y={zip215:!0};function g(B,b,q,Z=y){let{context:O,zip215:u}=Z,a=p.signature;B=N(B,a,"signature"),b=N(b,void 0,"message"),q=N(q,p.publicKey,"publicKey"),u!==void 0&&ut(u,"zip215"),n&&(b=n(b));let d=a/2,m=B.subarray(0,d),I=st(B.subarray(d,a)),S,A,_;try{S=e.fromBytes(q,u),A=e.fromBytes(m,u),_=o.multiplyUnsafe(I)}catch{return!1}if(!u&&S.isSmallOrder())return!1;let H=w(O,A.toBytes(),S.toBytes(),b);return A.add(S.multiplyUnsafe(H)).subtract(_).clearCofactor().is0()}let R=f.BYTES,p={secretKey:R,publicKey:R,signature:2*R,seed:R};function T(B=c(p.seed)){return N(B,p.seed,"seed")}function D(B){return wt(B)&&B.length===i.BYTES}function V(B,b){try{return!!e.fromBytes(B,b)}catch{return!1}}let k={getExtendedPublicKey:v,randomSecretKey:T,isValidSecretKey:D,isValidPublicKey:V,toMontgomery(B){let{y:b}=e.fromBytes(B),q=p.publicKey,Z=q===32;if(!Z&&q!==57)throw new Error("only defined for 25519 and 448");let O=Z?f.div(P+b,P-b):f.div(b-P,b+P);return f.toBytes(O)},toMontgomerySecret(B){let b=p.secretKey;N(B,b);let q=t(B.subarray(0,b));return s(q).subarray(0,b)}};return Object.freeze({keygen:qt(T,E),getPublicKey:E,sign:L,verify:g,utils:k,Point:e,lengths:p})}var jt=BigInt(0),Dt=BigInt(1),fe=BigInt(2);function ur(e){return it(e,{adjustScalarBytes:"function",powPminus2:"function"}),Object.freeze({...e})}function An(e){let t=ur(e),{P:r,type:n,adjustScalarBytes:o,powPminus2:f,randomBytes:i}=t,c=n==="x25519";if(!c&&n!=="x448")throw new Error("invalid type");let s=i||ht,l=c?255:448,h=c?32:56,x=BigInt(c?9:5),v=BigInt(c?121665:39081),E=c?fe**BigInt(254):fe**BigInt(447),w=c?BigInt(8)*fe**BigInt(251)-Dt:BigInt(4)*fe**BigInt(445)-Dt,L=E+w+Dt,y=a=>j(a,r),g=R(x);function R(a){return Yt(y(a),h)}function p(a){let d=vt(N(a,h,"uCoordinate"));return c&&(d[31]&=127),y(st(d))}function T(a){return st(o(vt(N(a,h,"scalar"))))}function D(a,d){let m=q(p(d),T(a));if(m===jt)throw new Error("invalid private or public key received");return R(m)}function V(a){return D(a,g)}let k=V,B=D;function b(a,d,m){let I=y(a*(d-m));return d=y(d-I),m=y(m+I),{x_2:d,x_3:m}}function q(a,d){gt("u",a,jt,r),gt("scalar",d,E,L);let m=d,I=a,S=Dt,A=jt,_=a,H=Dt,U=jt;for(let M=BigInt(l-1);M>=jt;M--){let C=m>>M&Dt;U^=C,{x_2:S,x_3:_}=b(U,S,_),{x_2:A,x_3:H}=b(U,A,H),U=C;let Y=S+A,z=y(Y*Y),F=S-A,X=y(F*F),W=z-X,At=_+H,zt=_-H,Zt=y(zt*Y),Ne=y(At*F),De=Zt+Ne,Ze=Zt-Ne;_=y(De*De),H=y(I*y(Ze*Ze)),S=y(z*X),A=y(W*(z+y(v*W)))}({x_2:S,x_3:_}=b(U,S,_)),{x_2:A,x_3:H}=b(U,A,H);let K=f(A);return y(S*K)}let Z={secretKey:h,publicKey:h,seed:h},O=(a=s(h))=>(N(a,Z.seed,"seed"),a),u={randomSecretKey:O};return Object.freeze({keygen:qt(O,k),getSharedSecret:B,getPublicKey:k,scalarMult:D,scalarMultBase:V,utils:u,GuBytes:g.slice(),lengths:Z})}var lr=BigInt(1),Rn=BigInt(2),hr=BigInt(3),br=BigInt(5),xr=BigInt(8),se=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),mr={p:se,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:xr,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function Hn(e){let t=BigInt(10),r=BigInt(20),n=BigInt(40),o=BigInt(80),f=se,c=e*e%f*e%f,s=G(c,Rn,f)*c%f,l=G(s,lr,f)*e%f,h=G(l,br,f)*l%f,x=G(h,t,f)*h%f,v=G(x,r,f)*x%f,E=G(v,n,f)*v%f,w=G(E,o,f)*E%f,L=G(w,o,f)*E%f,y=G(L,t,f)*h%f;return{pow_p_5_8:G(y,Rn,f)*e%f,b2:c}}function Tn(e){return e[0]&=248,e[31]&=127,e[31]|=64,e}var On=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function gr(e,t){let r=se,n=j(t*t*t,r),o=j(n*n*t,r),f=Hn(e*o).pow_p_5_8,i=j(e*n*f,r),c=j(t*i*i,r),s=i,l=j(i*On,r),h=c===e,x=c===j(-e,r),v=c===j(-e*On,r);return h&&(i=s),(x||v)&&(i=l),un(i,r)&&(i=j(-i,r)),{isValid:h||x,value:i}}var pr=_n(mr,{uvRatio:gr});function yr(e){return In(pr,me,Object.assign({adjustScalarBytes:Tn},e))}var Ln=yr({});var Un=(()=>{let e=se;return An({P:e,type:"x25519",powPminus2:t=>{let{pow_p_5_8:r,b2:n}=Hn(t);return j(G(r,hr,e)*n,e)},adjustScalarBytes:Tn})})();var wr={p:BigInt("0xffffffff00000001000000000000000000000000ffffffffffffffffffffffff"),n:BigInt("0xffffffff00000000ffffffffffffffffbce6faada7179e84f3b9cac2fc632551"),h:BigInt(1),a:BigInt("0xffffffff00000001000000000000000000000000fffffffffffffffffffffffc"),b:BigInt("0x5ac635d8aa3a93e7b3ebbd55769886bc651d06b0cc53b0f63bce3c3e27d2604b"),Gx:BigInt("0x6b17d1f2e12c4247f8bce6e563a440f277037d812deb33a0f4a13945d898c296"),Gy:BigInt("0x4fe342e2fe1a7f9b8ee7eb4a7c0f9e162bce33576b315ececbb6406837bf51f5")};var Br=re(wr),qn=oe(Br,Qt);return Mn(Er);})();
4728−/*! Bundled license information:
4730−@noble/hashes/utils.js:
4731− (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4733−@noble/curves/utils.js:
4734−@noble/curves/abstract/modular.js:
4735−@noble/curves/abstract/curve.js:
4736−@noble/curves/abstract/weierstrass.js:
4737−@noble/curves/secp256k1.js:
4738−@noble/curves/abstract/edwards.js:
4739−@noble/curves/abstract/montgomery.js:
4740−@noble/curves/ed25519.js:
4741−@noble/curves/nist.js:
4742− (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4744−/*! Bundled license information:
4746−@noble/hashes/utils.js:
4747− (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4749−@noble/curves/utils.js:
4750−@noble/curves/abstract/modular.js:
4751−@noble/curves/abstract/curve.js:
4752−@noble/curves/abstract/weierstrass.js:
4753−@noble/curves/secp256k1.js:
4754−@noble/curves/abstract/edwards.js:
4755−@noble/curves/ed25519.js:
4756−@noble/curves/nist.js:
4757− (*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4763−var _Crypto_toHex = _Crypto_noble.bytesToHex;
4764−var _Crypto_fromHex = _Crypto_noble.hexToBytes;
4767−// DER CODEC (for ECDSA signatures: secp256k1, P-256)
4769−function _Crypto_bigintToBytes(n, len)
4771− var hex = n.toString(16);
4772− if (hex.length % 2) { hex = '0' + hex; }
4773− while (hex.length < len * 2) { hex = '00' + hex; }
4774− return _Crypto_fromHex(hex);
4777−function _Crypto_bytesToBigint(bytes)
4779− return BigInt('0x' + _Crypto_toHex(bytes));
4782−function _Crypto_compactToDer(compactHex, byteLen)
4784− var bytes = _Crypto_fromHex(compactHex);
4785− var r = bytes.slice(0, byteLen);
4786− var s = bytes.slice(byteLen);
4787− function encodeInt(b) {
4788− // Strip leading zeros, then add back if high bit set
4790− while (i < b.length - 1 && b[i] === 0) { i++; }
4793− var padded = new Uint8Array(b.length + 1);
4800− var rEnc = encodeInt(r);
4801− var sEnc = encodeInt(s);
4802− var totalLen = 2 + rEnc.length + 2 + sEnc.length;
4803− var der = new Uint8Array(2 + totalLen);
4806− der[pos++] = totalLen;
4808− der[pos++] = rEnc.length;
4809− der.set(rEnc, pos); pos += rEnc.length;
4811− der[pos++] = sEnc.length;
4812− der.set(sEnc, pos);
4813− return _Crypto_toHex(der);
4816−function _Crypto_derToCompact(derHex, byteLen)
4818− var der = _Crypto_fromHex(derHex);
4819− if (der[0] !== 0x30) { return null; }
4821− if (der[pos] !== 0x02) { return null; }
4822− var rLen = der[pos + 1]; pos += 2;
4823− var rBytes = der.slice(pos, pos + rLen); pos += rLen;
4824− if (der[pos] !== 0x02) { return null; }
4825− var sLen = der[pos + 1]; pos += 2;
4826− var sBytes = der.slice(pos, pos + sLen);
4827− // Remove leading zero padding
4828− while (rBytes.length > byteLen) { rBytes = rBytes.slice(1); }
4829− while (sBytes.length > byteLen) { sBytes = sBytes.slice(1); }
4830− // Pad to fixed width
4831− var r = new Uint8Array(byteLen);
4832− var s = new Uint8Array(byteLen);
4833− r.set(rBytes, byteLen - rBytes.length);
4834− s.set(sBytes, byteLen - sBytes.length);
4835− var compact = new Uint8Array(byteLen * 2);
4837− compact.set(s, byteLen);
4838− return _Crypto_toHex(compact);
4844−function _Crypto_secp256k1PrivateKeyFromHex(hex)
4847− _Crypto_noble.secp256k1.getPublicKey(_Crypto_fromHex(hex));
4848− return $elm$core$Maybe$Just(hex);
4850− return $elm$core$Maybe$Nothing;
4854−function _Crypto_secp256k1PrivateKeyToHex(key)
4859−function _Crypto_secp256k1PublicKeyFromHex(hex)
4862− _Crypto_noble.secp256k1.Point.fromHex(hex);
4863− return $elm$core$Maybe$Just(hex);
4865− return $elm$core$Maybe$Nothing;
4869−function _Crypto_secp256k1PublicKeyToHex(key)
4874−function _Crypto_secp256k1SignatureFromCompactHex(hex)
4877− var bytes = _Crypto_fromHex(hex);
4878− if (bytes.length !== 64) { return $elm$core$Maybe$Nothing; }
4879− _Crypto_noble.secp256k1.Signature.fromHex(hex);
4880− return $elm$core$Maybe$Just(hex);
4882− return $elm$core$Maybe$Nothing;
4886−function _Crypto_secp256k1SignatureFromDerHex(hex)
4889− var compact = _Crypto_derToCompact(hex, 32);
4890− if (!compact) { return $elm$core$Maybe$Nothing; }
4891− _Crypto_noble.secp256k1.Signature.fromHex(compact);
4892− return $elm$core$Maybe$Just(compact);
4894− return $elm$core$Maybe$Nothing;
4898−function _Crypto_secp256k1SignatureToCompactHex(sig)
4903−function _Crypto_secp256k1SignatureToDerHex(compactHex)
4905− return _Crypto_compactToDer(compactHex, 32);
4908−function _Crypto_secp256k1GetPublicKey(privKey)
4910− return _Crypto_toHex(_Crypto_noble.secp256k1.getPublicKey(_Crypto_fromHex(privKey)));
4913−var _Crypto_secp256k1Sign = F2(function(msgHash, privKey)
4915− var sig = _Crypto_noble.secp256k1.sign(_Crypto_fromHex(msgHash), _Crypto_fromHex(privKey));
4916− return _Crypto_toHex(sig);
4919−var _Crypto_secp256k1Verify = F3(function(sig, msgHash, pubKey)
4922− return _Crypto_noble.secp256k1.verify(
4923− _Crypto_fromHex(sig),
4924− _Crypto_fromHex(msgHash),
4925− _Crypto_fromHex(pubKey)
4932−var _Crypto_secp256k1GetSharedSecret = F2(function(privKey, pubKey)
4934− return _Crypto_toHex(_Crypto_noble.secp256k1.getSharedSecret(_Crypto_fromHex(privKey), _Crypto_fromHex(pubKey)));
4940−function _Crypto_ed25519PrivateKeyFromHex(hex)
4943− _Crypto_noble.ed25519.getPublicKey(_Crypto_fromHex(hex));
4944− return $elm$core$Maybe$Just(hex);
4946− return $elm$core$Maybe$Nothing;
4950−function _Crypto_ed25519PrivateKeyToHex(key)
4955−function _Crypto_ed25519PublicKeyFromHex(hex)
4958− _Crypto_noble.ed25519.Point.fromHex(hex);
4959− return $elm$core$Maybe$Just(hex);
4961− return $elm$core$Maybe$Nothing;
4965−function _Crypto_ed25519PublicKeyToHex(key)
4970−function _Crypto_ed25519SignatureFromHex(hex)
4973− var bytes = _Crypto_fromHex(hex);
4974− if (bytes.length !== 64) { return $elm$core$Maybe$Nothing; }
4975− return $elm$core$Maybe$Just(hex);
4977− return $elm$core$Maybe$Nothing;
4981−function _Crypto_ed25519SignatureToHex(sig)
4986−function _Crypto_ed25519GetPublicKey(privKey)
4988− return _Crypto_toHex(_Crypto_noble.ed25519.getPublicKey(_Crypto_fromHex(privKey)));
4991−var _Crypto_ed25519Sign = F2(function(msg, privKey)
4993− return _Crypto_toHex(_Crypto_noble.ed25519.sign(_Crypto_fromHex(msg), _Crypto_fromHex(privKey)));
4996−var _Crypto_ed25519Verify = F3(function(sig, msg, pubKey)
4999− return _Crypto_noble.ed25519.verify(
5000− _Crypto_fromHex(sig),
5001− _Crypto_fromHex(msg),
5002− _Crypto_fromHex(pubKey)
5010−// X25519 (Diffie-Hellman)
5012−function _Crypto_x25519PrivateKeyFromHex(hex)
5015− var bytes = _Crypto_fromHex(hex);
5016− if (bytes.length !== 32) { return $elm$core$Maybe$Nothing; }
5017− _Crypto_noble.x25519.getPublicKey(bytes);
5018− return $elm$core$Maybe$Just(hex);
5020− return $elm$core$Maybe$Nothing;
5024−function _Crypto_x25519PrivateKeyToHex(key)
5029−function _Crypto_x25519PublicKeyFromHex(hex)
5032− var bytes = _Crypto_fromHex(hex);
5033− if (bytes.length !== 32) { return $elm$core$Maybe$Nothing; }
5034− return $elm$core$Maybe$Just(hex);
5036− return $elm$core$Maybe$Nothing;
5040−function _Crypto_x25519PublicKeyToHex(key)
5045−function _Crypto_x25519GetPublicKey(privKey)
5047− return _Crypto_toHex(_Crypto_noble.x25519.getPublicKey(_Crypto_fromHex(privKey)));
5050−var _Crypto_x25519GetSharedSecret = F2(function(privKey, pubKey)
5052− return _Crypto_toHex(_Crypto_noble.x25519.getSharedSecret(_Crypto_fromHex(privKey), _Crypto_fromHex(pubKey)));
5056−// P-256 (secp256r1)
5058−function _Crypto_p256PrivateKeyFromHex(hex)
5061− _Crypto_noble.p256.getPublicKey(_Crypto_fromHex(hex));
5062− return $elm$core$Maybe$Just(hex);
5064− return $elm$core$Maybe$Nothing;
5068−function _Crypto_p256PrivateKeyToHex(key)
5073−function _Crypto_p256PublicKeyFromHex(hex)
5076− _Crypto_noble.p256.Point.fromHex(hex);
5077− return $elm$core$Maybe$Just(hex);
5079− return $elm$core$Maybe$Nothing;
5083−function _Crypto_p256PublicKeyToHex(key)
5088−function _Crypto_p256SignatureFromCompactHex(hex)
5091− var bytes = _Crypto_fromHex(hex);
5092− if (bytes.length !== 64) { return $elm$core$Maybe$Nothing; }
5093− _Crypto_noble.p256.Signature.fromHex(hex);
5094− return $elm$core$Maybe$Just(hex);
5096− return $elm$core$Maybe$Nothing;
5100−function _Crypto_p256SignatureFromDerHex(hex)
5103− var compact = _Crypto_derToCompact(hex, 32);
5104− if (!compact) { return $elm$core$Maybe$Nothing; }
5105− _Crypto_noble.p256.Signature.fromHex(compact);
5106− return $elm$core$Maybe$Just(compact);
5108− return $elm$core$Maybe$Nothing;
5112−function _Crypto_p256SignatureToCompactHex(sig)
5117−function _Crypto_p256SignatureToDerHex(compactHex)
5119− return _Crypto_compactToDer(compactHex, 32);
5122−function _Crypto_p256GetPublicKey(privKey)
5124− return _Crypto_toHex(_Crypto_noble.p256.getPublicKey(_Crypto_fromHex(privKey)));
5127−var _Crypto_p256Sign = F2(function(msgHash, privKey)
5129− var sig = _Crypto_noble.p256.sign(_Crypto_fromHex(msgHash), _Crypto_fromHex(privKey));
5130− return _Crypto_toHex(sig);
5133−var _Crypto_p256Verify = F3(function(sig, msgHash, pubKey)
5136− return _Crypto_noble.p256.verify(
5137− _Crypto_fromHex(sig),
5138− _Crypto_fromHex(msgHash),
5139− _Crypto_fromHex(pubKey)
5146−var _Crypto_p256GetSharedSecret = F2(function(privKey, pubKey)
5148− return _Crypto_toHex(_Crypto_noble.p256.getSharedSecret(_Crypto_fromHex(privKey), _Crypto_fromHex(pubKey)));
5152−// NOBLE/CIPHERS BUNDLE (https://github.com/paulmillr/noble-ciphers, MIT License)
5153−// Embedded: @noble/ciphers - AES-GCM, ChaCha20-Poly1305, XChaCha20-Poly1305
5155−var _Crypto_ciphers =(()=>{var _t=Object.defineProperty;var de=Object.getOwnPropertyDescriptor;var we=Object.getOwnPropertyNames;var be=Object.prototype.hasOwnProperty;var xe=(e,t)=>{for(var n in t)_t(e,n,{get:t[n],enumerable:!0})},me=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of we(t))!be.call(e,o)&&o!==n&&_t(e,o,{get:()=>t[o],enumerable:!(r=de(t,o))||r.enumerable});return e};var Le=e=>me(_t({},"_"+"_esModule",{value:!0}),e);var Ge={};xe(Ge,{cbc:()=>ne,cfb:()=>re,chacha20poly1305:()=>pe,ctr:()=>Gt,ecb:()=>ee,gcm:()=>oe,managedNonce:()=>Vt,randomBytes:()=>xt,siv:()=>se,xchacha20poly1305:()=>ye});function Ee(e){return e instanceof Uint8Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint8Array"}function yt(e){if(typeof e!="boolean")throw new Error(`boolean expected, not ${e}`)}function ht(e){if(!Number.isSafeInteger(e)||e<0)throw new Error("positive integer expected, got "+e)}function E(e,t,n=""){let r=Ee(e),o=e?.length,s=t!==void 0;if(!r||s&&o!==t){let i=n&&`"${n}" `,c=s?` of length ${t}`:"",f=r?`length=${o}`:`type=${typeof e}`;throw new Error(i+"expected Uint8Array"+c+", got "+f)}return e}function et(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")}function gt(e,t){E(e,void 0,"output");let n=t.outputLen;if(e.length<n)throw new Error("digestInto() expects output buffer of length at least "+n)}function dt(e){return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}function A(e){return new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4))}function B(...e){for(let t=0;t<e.length;t++)e[t].fill(0)}function at(e){return new DataView(e.buffer,e.byteOffset,e.byteLength)}var Ue=new Uint8Array(new Uint32Array([287454020]).buffer)[0]===68;function vt(e,t){return e.buffer===t.buffer&&e.byteOffset<t.byteOffset+t.byteLength&&t.byteOffset<e.byteOffset+e.byteLength}function pt(e,t){if(vt(e,t)&&e.byteOffset<t.byteOffset)throw new Error("complex overlap of input and output is not supported")}function Ct(...e){let t=0;for(let r=0;r<e.length;r++){let o=e[r];E(o),t+=o.length}let n=new Uint8Array(t);for(let r=0,o=0;r<e.length;r++){let s=e[r];n.set(s,o),o+=s.length}return n}function jt(e,t){if(t==null||typeof t!="object")throw new Error("options must be defined");return Object.assign(e,t)}function wt(e,t){if(e.length!==t.length)return!1;let n=0;for(let r=0;r<e.length;r++)n|=e[r]^t[r];return n===0}var D=(e,t)=>{function n(r,...o){if(E(r,void 0,"key"),!Ue)throw new Error("Non little-endian hardware is not yet supported");if(e.nonceLength!==void 0){let h=o[0];E(h,e.varSizeNonce?void 0:e.nonceLength,"nonce")}let s=e.tagLength;s&&o[1]!==void 0&&E(o[1],void 0,"AAD");let i=t(r,...o),c=(h,a)=>{if(a!==void 0){if(h!==2)throw new Error("cipher output not supported");E(a,void 0,"output")}},f=!1;return{encrypt(h,a){if(f)throw new Error("cannot encrypt() twice with same key + nonce");return f=!0,E(h),c(i.encrypt.length,a),i.encrypt(h,a)},decrypt(h,a){if(E(h),s&&h.length<s)throw new Error('"ciphertext" expected length bigger than tagLength='+s);return c(i.decrypt.length,a),i.decrypt(h,a)}}}return Object.assign(n,e),n};function Q(e,t,n=!0){if(t===void 0)return new Uint8Array(e);if(t.length!==e)throw new Error('"output" expected Uint8Array of length '+e+", got: "+t.length);if(n&&!Z(t))throw new Error("invalid output, must be aligned");return t}function bt(e,t,n){yt(n);let r=new Uint8Array(16),o=at(r);return o.setBigUint64(0,BigInt(t),n),o.setBigUint64(8,BigInt(e),n),r}function Z(e){return e.byteOffset%4===0}function z(e){return Uint8Array.from(e)}function xt(e=32){let t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof t?.getRandomValues!="function")throw new Error("crypto.getRandomValues must be defined");return t.getRandomValues(new Uint8Array(e))}function Vt(e,t=xt){let{nonceLength:n}=e;ht(n);let r=(o,s)=>{let i=Ct(o,s);return s.fill(0),i};return((o,...s)=>({encrypt(i){E(i);let c=t(n),f=e(o,c,...s).encrypt(i);return f instanceof Promise?f.then(l=>r(c,l)):r(c,f)},decrypt(i){E(i);let c=i.subarray(0,n),f=i.subarray(n);return e(o,c,...s).decrypt(f)}}))}var tt=16,Tt=new Uint8Array(16),G=A(Tt),Ae=225,Be=(e,t,n,r)=>{let o=r&1;return{s3:n<<31|r>>>1,s2:t<<31|n>>>1,s1:e<<31|t>>>1,s0:e>>>1^Ae<<24&-(o&1)}},F=e=>(e>>>0&255)<<24|(e>>>8&255)<<16|(e>>>16&255)<<8|e>>>24&255|0;function _e(e){e.reverse();let t=e[15]&1,n=0;for(let r=0;r<e.length;r++){let o=e[r];e[r]=o>>>1|n,n=(o&1)<<7}return e[0]^=-t&225,e}var ve=e=>e>64*1024?8:e>1024?4:2,mt=class{blockLen=tt;outputLen=tt;s0=0;s1=0;s2=0;s3=0;finished=!1;t;W;windowSize;constructor(t,n){E(t,16,"key"),t=z(t);let r=at(t),o=r.getUint32(0,!1),s=r.getUint32(4,!1),i=r.getUint32(8,!1),c=r.getUint32(12,!1),f=[];for(let u=0;u<128;u++)f.push({s0:F(o),s1:F(s),s2:F(i),s3:F(c)}),{s0:o,s1:s,s2:i,s3:c}=Be(o,s,i,c);let l=ve(n||1024);if(![1,2,4,8].includes(l))throw new Error("ghash: invalid window size, expected 2, 4 or 8");this.W=l;let a=128/l,p=this.windowSize=2**l,g=[];for(let u=0;u<a;u++)for(let y=0;y<p;y++){let d=0,w=0,b=0,U=0;for(let L=0;L<l;L++){if(!(y>>>l-L-1&1))continue;let{s0:v,s1:j,s2:V,s3:_}=f[l*u+L];d^=v,w^=j,b^=V,U^=_}g.push({s0:d,s1:w,s2:b,s3:U})}this.t=g}_updateBlock(t,n,r,o){t^=this.s0,n^=this.s1,r^=this.s2,o^=this.s3;let{W:s,t:i,windowSize:c}=this,f=0,l=0,h=0,a=0,p=(1<<s)-1,g=0;for(let u of[t,n,r,o])for(let y=0;y<4;y++){let d=u>>>8*y&255;for(let w=8/s-1;w>=0;w--){let b=d>>>s*w&p,{s0:U,s1:L,s2:C,s3:v}=i[g*c+b];f^=U,l^=L,h^=C,a^=v,g+=1}}this.s0=f,this.s1=l,this.s2=h,this.s3=a}update(t){et(this),E(t),t=z(t);let n=A(t),r=Math.floor(t.length/tt),o=t.length%tt;for(let s=0;s<r;s++)this._updateBlock(n[s*4+0],n[s*4+1],n[s*4+2],n[s*4+3]);return o&&(Tt.set(t.subarray(r*tt)),this._updateBlock(G[0],G[1],G[2],G[3]),B(G)),this}destroy(){let{t}=this;for(let n of t)n.s0=0,n.s1=0,n.s2=0,n.s3=0}digestInto(t){et(this),gt(t,this),this.finished=!0;let{s0:n,s1:r,s2:o,s3:s}=this,i=A(t);return i[0]=n,i[1]=r,i[2]=o,i[3]=s,t}digest(){let t=new Uint8Array(tt);return this.digestInto(t),this.destroy(),t}},St=class extends mt{constructor(t,n){E(t);let r=_e(z(t));super(r,n),B(r)}update(t){et(this),E(t),t=z(t);let n=A(t),r=t.length%tt,o=Math.floor(t.length/tt);for(let s=0;s<o;s++)this._updateBlock(F(n[s*4+3]),F(n[s*4+2]),F(n[s*4+1]),F(n[s*4+0]));return r&&(Tt.set(t.subarray(o*tt)),this._updateBlock(F(G[3]),F(G[2]),F(G[1]),F(G[0])),B(G)),this}digestInto(t){et(this),gt(t,this),this.finished=!0;let{s0:n,s1:r,s2:o,s3:s}=this,i=A(t);return i[0]=n,i[1]=r,i[2]=o,i[3]=s,t.reverse()}};function Ht(e){let t=(r,o)=>e(o,r.length).update(r).digest(),n=e(new Uint8Array(16),0);return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=(r,o)=>e(r,o),t}var It=Ht((e,t)=>new mt(e,t)),Ce=Ht((e,t)=>new St(e,t));var R=16,Nt=4,Lt=new Uint8Array(R);var Se=283;function $t(e){if(![16,24,32].includes(e.length))throw new Error('"aes key" expected Uint8Array of length 16/24/32, got length='+e.length)}function Mt(e){return e<<1^Se&-(e>>7)}function ut(e,t){let n=0;for(;t>0;t>>=1)n^=e&-(t&1),e=Mt(e);return n}var Te=(e,t,n=1)=>{if(!Number.isSafeInteger(n))throw new Error("incBytes: wrong carry "+n);E(e);for(let r=0;r<e.length;r++){let o=t?r:e.length-1-r;n=n+(e[o]&255)|0,e[o]=n&255,n>>>=8}},kt=(()=>{let e=new Uint8Array(256);for(let n=0,r=1;n<256;n++,r^=Mt(r))e[n]=r;let t=new Uint8Array(256);t[0]=99;for(let n=0;n<255;n++){let r=e[255-n];r|=r<<8,t[e[n]]=(r^r>>4^r>>5^r>>6^r>>7^99)&255}return B(e),t})(),Ie=kt.map((e,t)=>kt.indexOf(t)),Ke=e=>e<<24|e>>>8,Kt=e=>e<<8|e>>>24;function Zt(e,t){if(e.length!==256)throw new Error("Wrong sbox length");let n=new Uint32Array(256).map((l,h)=>t(e[h])),r=n.map(Kt),o=r.map(Kt),s=o.map(Kt),i=new Uint32Array(256*256),c=new Uint32Array(256*256),f=new Uint16Array(256*256);for(let l=0;l<256;l++)for(let h=0;h<256;h++){let a=l*256+h;i[a]=n[l]^r[h],c[a]=o[l]^s[h],f[a]=e[l]<<8|e[h]}return{sbox:e,sbox2:f,T0:n,T1:r,T2:o,T3:s,T01:i,T23:c}}var Pt=Zt(kt,e=>ut(e,3)<<24|e<<16|e<<8|ut(e,2)),Ft=Zt(Ie,e=>ut(e,11)<<24|ut(e,13)<<16|ut(e,9)<<8|ut(e,14)),Oe=(()=>{let e=new Uint8Array(16);for(let t=0,n=1;t<16;t++,n=Mt(n))e[t]=n;return e})();function rt(e){E(e);let t=e.length;$t(e);let{sbox2:n}=Pt,r=[];Z(e)||r.push(e=z(e));let o=A(e),s=o.length,i=f=>J(n,f,f,f,f),c=new Uint32Array(t+28);c.set(o);for(let f=s;f<c.length;f++){let l=c[f-1];f%s===0?l=i(Ke(l))^Oe[f/s-1]:s>6&&f%s===4&&(l=i(l)),c[f]=c[f-s]^l}return B(...r),c}function Yt(e){let t=rt(e),n=t.slice(),r=t.length,{sbox2:o}=Pt,{T0:s,T1:i,T2:c,T3:f}=Ft;for(let l=0;l<r;l+=4)for(let h=0;h<4;h++)n[l+h]=t[r-l-4+h];B(t);for(let l=4;l<r-4;l++){let h=n[l],a=J(o,h,h,h,h);n[l]=s[a&255]^i[a>>>8&255]^c[a>>>16&255]^f[a>>>24]}return n}function nt(e,t,n,r,o,s){return e[n<<8&65280|r>>>8&255]^t[o>>>8&65280|s>>>24&255]}function J(e,t,n,r,o){return e[t&255|n&65280]|e[r>>>16&255|o>>>16&65280]<<16}function Y(e,t,n,r,o){let{sbox2:s,T01:i,T23:c}=Pt,f=0;t^=e[f++],n^=e[f++],r^=e[f++],o^=e[f++];let l=e.length/4-2;for(let u=0;u<l;u++){let y=e[f++]^nt(i,c,t,n,r,o),d=e[f++]^nt(i,c,n,r,o,t),w=e[f++]^nt(i,c,r,o,t,n),b=e[f++]^nt(i,c,o,t,n,r);t=y,n=d,r=w,o=b}let h=e[f++]^J(s,t,n,r,o),a=e[f++]^J(s,n,r,o,t),p=e[f++]^J(s,r,o,t,n),g=e[f++]^J(s,o,t,n,r);return{s0:h,s1:a,s2:p,s3:g}}function Qt(e,t,n,r,o){let{sbox2:s,T01:i,T23:c}=Ft,f=0;t^=e[f++],n^=e[f++],r^=e[f++],o^=e[f++];let l=e.length/4-2;for(let u=0;u<l;u++){let y=e[f++]^nt(i,c,t,o,r,n),d=e[f++]^nt(i,c,n,t,o,r),w=e[f++]^nt(i,c,r,n,t,o),b=e[f++]^nt(i,c,o,r,n,t);t=y,n=d,r=w,o=b}let h=e[f++]^J(s,t,o,r,n),a=e[f++]^J(s,n,t,o,r),p=e[f++]^J(s,r,n,t,o),g=e[f++]^J(s,o,r,n,t);return{s0:h,s1:a,s2:p,s3:g}}function ke(e,t,n,r){E(t,R,"nonce"),E(n);let o=n.length;r=Q(o,r),pt(n,r);let s=t,i=A(s),{s0:c,s1:f,s2:l,s3:h}=Y(e,i[0],i[1],i[2],i[3]),a=A(n),p=A(r);for(let u=0;u+4<=a.length;u+=4)p[u+0]=a[u+0]^c,p[u+1]=a[u+1]^f,p[u+2]=a[u+2]^l,p[u+3]=a[u+3]^h,Te(s,!1,1),{s0:c,s1:f,s2:l,s3:h}=Y(e,i[0],i[1],i[2],i[3]);let g=R*Math.floor(a.length/Nt);if(g<o){let u=new Uint32Array([c,f,l,h]),y=dt(u);for(let d=g,w=0;d<o;d++,w++)r[d]=n[d]^y[w];B(u)}return r}function Et(e,t,n,r,o){E(n,R,"nonce"),E(r),o=Q(r.length,o);let s=n,i=A(s),c=at(s),f=A(r),l=A(o),h=t?0:12,a=r.length,p=c.getUint32(h,t),{s0:g,s1:u,s2:y,s3:d}=Y(e,i[0],i[1],i[2],i[3]);for(let b=0;b+4<=f.length;b+=4)l[b+0]=f[b+0]^g,l[b+1]=f[b+1]^u,l[b+2]=f[b+2]^y,l[b+3]=f[b+3]^d,p=p+1>>>0,c.setUint32(h,p,t),{s0:g,s1:u,s2:y,s3:d}=Y(e,i[0],i[1],i[2],i[3]);let w=R*Math.floor(f.length/Nt);if(w<a){let b=new Uint32Array([g,u,y,d]),U=dt(b);for(let L=w,C=0;L<a;L++,C++)o[L]=r[L]^U[C];B(b)}return o}var Gt=D({blockSize:16,nonceLength:16},function(t,n){function r(o,s){if(E(o),s!==void 0&&(E(s),!Z(s)))throw new Error("unaligned destination");let i=rt(t),c=z(n),f=[i,c];Z(o)||f.push(o=z(o));let l=ke(i,c,o,s);return B(...f),l}return{encrypt:(o,s)=>r(o,s),decrypt:(o,s)=>r(o,s)}});function Jt(e){if(E(e),e.length%R!==0)throw new Error("aes-(cbc/ecb).decrypt ciphertext should consist of blocks with size "+R)}function Xt(e,t,n){E(e);let r=e.length,o=r%R;if(!t&&o!==0)throw new Error("aec/(cbc-ecb): unpadded plaintext with disabled padding");Z(e)||(e=z(e));let s=A(e);if(t){let c=R-o;c||(c=R),r=r+c}n=Q(r,n),pt(e,n);let i=A(n);return{b:s,o:i,out:n}}function Dt(e,t){if(!t)return e;let n=e.length;if(!n)throw new Error("aes/pcks5: empty ciphertext not allowed");let r=e[n-1];if(r<=0||r>16)throw new Error("aes/pcks5: wrong padding");let o=e.subarray(0,-r);for(let s=0;s<r;s++)if(e[n-s-1]!==r)throw new Error("aes/pcks5: wrong padding");return o}function te(e){let t=new Uint8Array(16),n=A(t);t.set(e);let r=R-e.length;for(let o=R-r;o<R;o++)t[o]=r;return n}var ee=D({blockSize:16},function(t,n={}){let r=!n.disablePadding;return{encrypt(o,s){let{b:i,o:c,out:f}=Xt(o,r,s),l=rt(t),h=0;for(;h+4<=i.length;){let{s0:a,s1:p,s2:g,s3:u}=Y(l,i[h+0],i[h+1],i[h+2],i[h+3]);c[h++]=a,c[h++]=p,c[h++]=g,c[h++]=u}if(r){let a=te(o.subarray(h*4)),{s0:p,s1:g,s2:u,s3:y}=Y(l,a[0],a[1],a[2],a[3]);c[h++]=p,c[h++]=g,c[h++]=u,c[h++]=y}return B(l),f},decrypt(o,s){Jt(o);let i=Yt(t);s=Q(o.length,s);let c=[i];Z(o)||c.push(o=z(o)),pt(o,s);let f=A(o),l=A(s);for(let h=0;h+4<=f.length;){let{s0:a,s1:p,s2:g,s3:u}=Qt(i,f[h+0],f[h+1],f[h+2],f[h+3]);l[h++]=a,l[h++]=p,l[h++]=g,l[h++]=u}return B(...c),Dt(s,r)}}}),ne=D({blockSize:16,nonceLength:16},function(t,n,r={}){let o=!r.disablePadding;return{encrypt(s,i){let c=rt(t),{b:f,o:l,out:h}=Xt(s,o,i),a=n,p=[c];Z(a)||p.push(a=z(a));let g=A(a),u=g[0],y=g[1],d=g[2],w=g[3],b=0;for(;b+4<=f.length;)u^=f[b+0],y^=f[b+1],d^=f[b+2],w^=f[b+3],{s0:u,s1:y,s2:d,s3:w}=Y(c,u,y,d,w),l[b++]=u,l[b++]=y,l[b++]=d,l[b++]=w;if(o){let U=te(s.subarray(b*4));u^=U[0],y^=U[1],d^=U[2],w^=U[3],{s0:u,s1:y,s2:d,s3:w}=Y(c,u,y,d,w),l[b++]=u,l[b++]=y,l[b++]=d,l[b++]=w}return B(...p),h},decrypt(s,i){Jt(s);let c=Yt(t),f=n,l=[c];Z(f)||l.push(f=z(f));let h=A(f);i=Q(s.length,i),Z(s)||l.push(s=z(s)),pt(s,i);let a=A(s),p=A(i),g=h[0],u=h[1],y=h[2],d=h[3];for(let w=0;w+4<=a.length;){let b=g,U=u,L=y,C=d;g=a[w+0],u=a[w+1],y=a[w+2],d=a[w+3];let{s0:v,s1:j,s2:V,s3:_}=Qt(c,g,u,y,d);p[w++]=v^b,p[w++]=j^U,p[w++]=V^L,p[w++]=_^C}return B(...l),Dt(i,o)}}}),re=D({blockSize:16,nonceLength:16},function(t,n){function r(o,s,i){E(o);let c=o.length;if(i=Q(c,i),vt(o,i))throw new Error("overlapping src and dst not supported.");let f=rt(t),l=n,h=[f];Z(l)||h.push(l=z(l)),Z(o)||h.push(o=z(o));let a=A(o),p=A(i),g=s?p:a,u=A(l),y=u[0],d=u[1],w=u[2],b=u[3];for(let L=0;L+4<=a.length;){let{s0:C,s1:v,s2:j,s3:V}=Y(f,y,d,w,b);p[L+0]=a[L+0]^C,p[L+1]=a[L+1]^v,p[L+2]=a[L+2]^j,p[L+3]=a[L+3]^V,y=g[L++],d=g[L++],w=g[L++],b=g[L++]}let U=R*Math.floor(a.length/Nt);if(U<c){({s0:y,s1:d,s2:w,s3:b}=Y(f,y,d,w,b));let L=dt(new Uint32Array([y,d,w,b]));for(let C=U,v=0;C<c;C++,v++)i[C]=o[C]^L[v];B(L)}return B(...h),i}return{encrypt:(o,s)=>r(o,!0,s),decrypt:(o,s)=>r(o,!1,s)}});function Ne(e,t,n,r,o){let s=o?o.length:0,i=e.create(n,r.length+s);o&&i.update(o);let c=bt(8*r.length,8*s,t);i.update(r),i.update(c);let f=i.digest();return B(c),f}var oe=D({blockSize:16,nonceLength:12,tagLength:16,varSizeNonce:!0},function(t,n,r){if(n.length<8)throw new Error("aes/gcm: invalid nonce length");let o=16;function s(c,f,l){let h=Ne(It,!1,c,l,r);for(let a=0;a<f.length;a++)h[a]^=f[a];return h}function i(){let c=rt(t),f=Lt.slice(),l=Lt.slice();if(Et(c,!1,l,l,f),n.length===12)l.set(n);else{let a=Lt.slice();at(a).setBigUint64(8,BigInt(n.length*8),!1);let g=It.create(f).update(n).update(a);g.digestInto(l),g.destroy()}let h=Et(c,!1,l,Lt);return{xk:c,authKey:f,counter:l,tagMask:h}}return{encrypt(c){let{xk:f,authKey:l,counter:h,tagMask:a}=i(),p=new Uint8Array(c.length+o),g=[f,l,h,a];Z(c)||g.push(c=z(c)),Et(f,!1,h,c,p.subarray(0,c.length));let u=s(l,a,p.subarray(0,p.length-o));return g.push(u),p.set(u,c.length),B(...g),p},decrypt(c){let{xk:f,authKey:l,counter:h,tagMask:a}=i(),p=[f,l,a,h];Z(c)||p.push(c=z(c));let g=c.subarray(0,-o),u=c.subarray(-o),y=s(l,a,g);if(p.push(y),!wt(y,u))throw new Error("aes/gcm: invalid ghash tag");let d=Et(f,!1,h,g);return B(...p),d}}});function Me(e){return e instanceof Uint32Array||ArrayBuffer.isView(e)&&e.constructor.name==="Uint32Array"}function Ot(e,t){if(E(t,16,"block"),!Me(e))throw new Error("_encryptBlock accepts result of expandKeyLE");let n=A(t),{s0:r,s1:o,s2:s,s3:i}=Y(e,n[0],n[1],n[2],n[3]);return n[0]=r,n[1]=o,n[2]=s,n[3]=i,t}function qt(e){let t=0;for(let n=R-1;n>=0;n--){let r=(e[n]&128)>>>7;e[n]=e[n]<<1|t,t=r}return t&&(e[R-1]^=135),e}function Ut(e,t){if(e.length!==t.length)throw new Error("xorBlock: blocks must have same length");for(let n=0;n<e.length;n++)e[n]=e[n]^t[n];return e}var At=class{buffer;destroyed;k1;k2;xk;constructor(t){E(t),$t(t),this.xk=rt(t),this.buffer=new Uint8Array(0),this.destroyed=!1;let n=new Uint8Array(R);Ot(this.xk,n),this.k1=qt(n),this.k2=qt(new Uint8Array(this.k1))}update(t){let{destroyed:n,buffer:r}=this;if(n)throw new Error("CMAC instance was destroyed");E(t);let o=new Uint8Array(r.length+t.length);return o.set(r),o.set(t,r.length),this.buffer=o,this}digest(){if(this.destroyed)throw new Error("CMAC instance was destroyed");let{buffer:t}=this,n=t.length,r=Math.ceil(n/R),o;r===0?(r=1,o=!1):o=n%R===0;let s=(r-1)*R,i=t.subarray(s),c;if(o)c=Ut(new Uint8Array(i),this.k1);else{let l=new Uint8Array(R);l.set(i),l[i.length]=128,c=Ut(l,this.k2)}let f=new Uint8Array(R);for(let l=0;l<r-1;l++){let h=t.subarray(l*R,(l+1)*R);Ut(f,h),Ot(this.xk,f)}return Ut(f,c),Ot(this.xk,f),B(c),f}destroy(){let{buffer:t,destroyed:n,xk:r,k1:o,k2:s}=this;n||(this.destroyed=!0,B(t,r,o,s))}},Pe=(e,t)=>new At(e).update(t).digest();Pe.create=e=>new At(e);var se=()=>{throw new Error('"siv" from v1 is now "gcmsiv"')};var ie=e=>Uint8Array.from(e.split(""),t=>t.charCodeAt(0)),ze=ie("expand 16-byte k"),Re=ie("expand 32-byte k"),We=A(ze),je=A(Re);function x(e,t){return e<<t|e>>>32-t}function zt(e){return e.byteOffset%4===0}var Bt=64,Ve=16,fe=2**32-1,ce=Uint32Array.of();function He(e,t,n,r,o,s,i,c){let f=o.length,l=new Uint8Array(Bt),h=A(l),a=zt(o)&&zt(s),p=a?A(o):ce,g=a?A(s):ce;for(let u=0;u<f;i++){if(e(t,n,r,h,i,c),i>=fe)throw new Error("arx: counter overflow");let y=Math.min(Bt,f-u);if(a&&y===Bt){let d=u/4;if(u%4!==0)throw new Error("arx: invalid block position");for(let w=0,b;w<Ve;w++)b=d+w,g[b]=p[b]^h[w];u+=Bt;continue}for(let d=0,w;d<y;d++)w=u+d,s[w]=o[w]^l[d];u+=y}}function Rt(e,t){let{allowShortKeys:n,extendNonceFn:r,counterLength:o,counterRight:s,rounds:i}=jt({allowShortKeys:!1,counterLength:8,counterRight:!1,rounds:20},t);if(typeof e!="function")throw new Error("core must be a function");return ht(o),ht(i),yt(s),yt(n),(c,f,l,h,a=0)=>{E(c,void 0,"key"),E(f,void 0,"nonce"),E(l,void 0,"data");let p=l.length;if(h===void 0&&(h=new Uint8Array(p)),E(h,void 0,"output"),ht(a),a<0||a>=fe)throw new Error("arx: counter overflow");if(h.length<p)throw new Error(`arx: output (${h.length}) is shorter than data (${p})`);let g=[],u=c.length,y,d;if(u===32)g.push(y=z(c)),d=je;else if(u===16&&n)y=new Uint8Array(32),y.set(c),y.set(c,16),d=We,g.push(y);else throw E(c,32,"arx key"),new Error("invalid key size");zt(f)||g.push(f=z(f));let w=A(y);if(r){if(f.length!==24)throw new Error("arx: extended nonce must be 24 bytes");r(d,w,A(f.subarray(0,16)),w),f=f.subarray(16)}let b=16-o;if(b!==f.length)throw new Error(`arx: nonce must be ${b} or 16 bytes`);if(b!==12){let L=new Uint8Array(12);L.set(f,s?0:12-f.length),f=L,g.push(f)}let U=A(f);return He(e,d,w,U,l,h,a,i),B(...g),h}}function $(e,t){return e[t++]&255|(e[t++]&255)<<8}var Wt=class{blockLen=16;outputLen=16;buffer=new Uint8Array(16);r=new Uint16Array(10);h=new Uint16Array(10);pad=new Uint16Array(8);pos=0;finished=!1;constructor(t){t=z(E(t,32,"key"));let n=$(t,0),r=$(t,2),o=$(t,4),s=$(t,6),i=$(t,8),c=$(t,10),f=$(t,12),l=$(t,14);this.r[0]=n&8191,this.r[1]=(n>>>13|r<<3)&8191,this.r[2]=(r>>>10|o<<6)&7939,this.r[3]=(o>>>7|s<<9)&8191,this.r[4]=(s>>>4|i<<12)&255,this.r[5]=i>>>1&8190,this.r[6]=(i>>>14|c<<2)&8191,this.r[7]=(c>>>11|f<<5)&8065,this.r[8]=(f>>>8|l<<8)&8191,this.r[9]=l>>>5&127;for(let h=0;h<8;h++)this.pad[h]=$(t,16+2*h)}process(t,n,r=!1){let o=r?0:2048,{h:s,r:i}=this,c=i[0],f=i[1],l=i[2],h=i[3],a=i[4],p=i[5],g=i[6],u=i[7],y=i[8],d=i[9],w=$(t,n+0),b=$(t,n+2),U=$(t,n+4),L=$(t,n+6),C=$(t,n+8),v=$(t,n+10),j=$(t,n+12),V=$(t,n+14),_=s[0]+(w&8191),S=s[1]+((w>>>13|b<<3)&8191),T=s[2]+((b>>>10|U<<6)&8191),I=s[3]+((U>>>7|L<<9)&8191),K=s[4]+((L>>>4|C<<12)&8191),O=s[5]+(C>>>1&8191),k=s[6]+((C>>>14|v<<2)&8191),N=s[7]+((v>>>11|j<<5)&8191),M=s[8]+((j>>>8|V<<8)&8191),P=s[9]+(V>>>5|o),m=0,H=m+_*c+S*(5*d)+T*(5*y)+I*(5*u)+K*(5*g);m=H>>>13,H&=8191,H+=O*(5*p)+k*(5*a)+N*(5*h)+M*(5*l)+P*(5*f),m+=H>>>13,H&=8191;let q=m+_*f+S*c+T*(5*d)+I*(5*y)+K*(5*u);m=q>>>13,q&=8191,q+=O*(5*g)+k*(5*p)+N*(5*a)+M*(5*h)+P*(5*l),m+=q>>>13,q&=8191;let W=m+_*l+S*f+T*c+I*(5*d)+K*(5*y);m=W>>>13,W&=8191,W+=O*(5*u)+k*(5*g)+N*(5*p)+M*(5*a)+P*(5*h),m+=W>>>13,W&=8191;let X=m+_*h+S*l+T*f+I*c+K*(5*d);m=X>>>13,X&=8191,X+=O*(5*y)+k*(5*u)+N*(5*g)+M*(5*p)+P*(5*a),m+=X>>>13,X&=8191;let ot=m+_*a+S*h+T*l+I*f+K*c;m=ot>>>13,ot&=8191,ot+=O*(5*d)+k*(5*y)+N*(5*u)+M*(5*g)+P*(5*p),m+=ot>>>13,ot&=8191;let st=m+_*p+S*a+T*h+I*l+K*f;m=st>>>13,st&=8191,st+=O*c+k*(5*d)+N*(5*y)+M*(5*u)+P*(5*g),m+=st>>>13,st&=8191;let ct=m+_*g+S*p+T*a+I*h+K*l;m=ct>>>13,ct&=8191,ct+=O*f+k*c+N*(5*d)+M*(5*y)+P*(5*u),m+=ct>>>13,ct&=8191;let it=m+_*u+S*g+T*p+I*a+K*h;m=it>>>13,it&=8191,it+=O*l+k*f+N*c+M*(5*d)+P*(5*y),m+=it>>>13,it&=8191;let ft=m+_*y+S*u+T*g+I*p+K*a;m=ft>>>13,ft&=8191,ft+=O*h+k*l+N*f+M*c+P*(5*d),m+=ft>>>13,ft&=8191;let lt=m+_*d+S*y+T*u+I*g+K*p;m=lt>>>13,lt&=8191,lt+=O*a+k*h+N*l+M*f+P*c,m+=lt>>>13,lt&=8191,m=(m<<2)+m|0,m=m+H|0,H=m&8191,m=m>>>13,q+=m,s[0]=H,s[1]=q,s[2]=W,s[3]=X,s[4]=ot,s[5]=st,s[6]=ct,s[7]=it,s[8]=ft,s[9]=lt}finalize(){let{h:t,pad:n}=this,r=new Uint16Array(10),o=t[1]>>>13;t[1]&=8191;for(let c=2;c<10;c++)t[c]+=o,o=t[c]>>>13,t[c]&=8191;t[0]+=o*5,o=t[0]>>>13,t[0]&=8191,t[1]+=o,o=t[1]>>>13,t[1]&=8191,t[2]+=o,r[0]=t[0]+5,o=r[0]>>>13,r[0]&=8191;for(let c=1;c<10;c++)r[c]=t[c]+o,o=r[c]>>>13,r[c]&=8191;r[9]-=8192;let s=(o^1)-1;for(let c=0;c<10;c++)r[c]&=s;s=~s;for(let c=0;c<10;c++)t[c]=t[c]&s|r[c];t[0]=(t[0]|t[1]<<13)&65535,t[1]=(t[1]>>>3|t[2]<<10)&65535,t[2]=(t[2]>>>6|t[3]<<7)&65535,t[3]=(t[3]>>>9|t[4]<<4)&65535,t[4]=(t[4]>>>12|t[5]<<1|t[6]<<14)&65535,t[5]=(t[6]>>>2|t[7]<<11)&65535,t[6]=(t[7]>>>5|t[8]<<8)&65535,t[7]=(t[8]>>>8|t[9]<<5)&65535;let i=t[0]+n[0];t[0]=i&65535;for(let c=1;c<8;c++)i=(t[c]+n[c]|0)+(i>>>16)|0,t[c]=i&65535;B(r)}update(t){et(this),E(t),t=z(t);let{buffer:n,blockLen:r}=this,o=t.length;for(let s=0;s<o;){let i=Math.min(r-this.pos,o-s);if(i===r){for(;r<=o-s;s+=r)this.process(t,s);continue}n.set(t.subarray(s,s+i),this.pos),this.pos+=i,s+=i,this.pos===r&&(this.process(n,0,!1),this.pos=0)}return this}destroy(){B(this.h,this.r,this.buffer,this.pad)}digestInto(t){et(this),gt(t,this),this.finished=!0;let{buffer:n,h:r}=this,{pos:o}=this;if(o){for(n[o++]=1;o<16;o++)n[o]=0;this.process(n,0,!0)}this.finalize();let s=0;for(let i=0;i<8;i++)t[s++]=r[i]>>>0,t[s++]=r[i]>>>8;return t}digest(){let{buffer:t,outputLen:n}=this;this.digestInto(t);let r=t.slice(0,n);return this.destroy(),r}};function qe(e){let t=(r,o)=>e(o).update(r).digest(),n=e(new Uint8Array(32));return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=r=>e(r),t}var le=qe(e=>new Wt(e));function ue(e,t,n,r,o,s=20){let i=e[0],c=e[1],f=e[2],l=e[3],h=t[0],a=t[1],p=t[2],g=t[3],u=t[4],y=t[5],d=t[6],w=t[7],b=o,U=n[0],L=n[1],C=n[2],v=i,j=c,V=f,_=l,S=h,T=a,I=p,K=g,O=u,k=y,N=d,M=w,P=b,m=U,H=L,q=C;for(let X=0;X<s;X+=2)v=v+S|0,P=x(P^v,16),O=O+P|0,S=x(S^O,12),v=v+S|0,P=x(P^v,8),O=O+P|0,S=x(S^O,7),j=j+T|0,m=x(m^j,16),k=k+m|0,T=x(T^k,12),j=j+T|0,m=x(m^j,8),k=k+m|0,T=x(T^k,7),V=V+I|0,H=x(H^V,16),N=N+H|0,I=x(I^N,12),V=V+I|0,H=x(H^V,8),N=N+H|0,I=x(I^N,7),_=_+K|0,q=x(q^_,16),M=M+q|0,K=x(K^M,12),_=_+K|0,q=x(q^_,8),M=M+q|0,K=x(K^M,7),v=v+T|0,q=x(q^v,16),N=N+q|0,T=x(T^N,12),v=v+T|0,q=x(q^v,8),N=N+q|0,T=x(T^N,7),j=j+I|0,P=x(P^j,16),M=M+P|0,I=x(I^M,12),j=j+I|0,P=x(P^j,8),M=M+P|0,I=x(I^M,7),V=V+K|0,m=x(m^V,16),O=O+m|0,K=x(K^O,12),V=V+K|0,m=x(m^V,8),O=O+m|0,K=x(K^O,7),_=_+S|0,H=x(H^_,16),k=k+H|0,S=x(S^k,12),_=_+S|0,H=x(H^_,8),k=k+H|0,S=x(S^k,7);let W=0;r[W++]=i+v|0,r[W++]=c+j|0,r[W++]=f+V|0,r[W++]=l+_|0,r[W++]=h+S|0,r[W++]=a+T|0,r[W++]=p+I|0,r[W++]=g+K|0,r[W++]=u+O|0,r[W++]=y+k|0,r[W++]=d+N|0,r[W++]=w+M|0,r[W++]=b+P|0,r[W++]=U+m|0,r[W++]=L+H|0,r[W++]=C+q|0}function $e(e,t,n,r){let o=e[0],s=e[1],i=e[2],c=e[3],f=t[0],l=t[1],h=t[2],a=t[3],p=t[4],g=t[5],u=t[6],y=t[7],d=n[0],w=n[1],b=n[2],U=n[3];for(let C=0;C<20;C+=2)o=o+f|0,d=x(d^o,16),p=p+d|0,f=x(f^p,12),o=o+f|0,d=x(d^o,8),p=p+d|0,f=x(f^p,7),s=s+l|0,w=x(w^s,16),g=g+w|0,l=x(l^g,12),s=s+l|0,w=x(w^s,8),g=g+w|0,l=x(l^g,7),i=i+h|0,b=x(b^i,16),u=u+b|0,h=x(h^u,12),i=i+h|0,b=x(b^i,8),u=u+b|0,h=x(h^u,7),c=c+a|0,U=x(U^c,16),y=y+U|0,a=x(a^y,12),c=c+a|0,U=x(U^c,8),y=y+U|0,a=x(a^y,7),o=o+l|0,U=x(U^o,16),u=u+U|0,l=x(l^u,12),o=o+l|0,U=x(U^o,8),u=u+U|0,l=x(l^u,7),s=s+h|0,d=x(d^s,16),y=y+d|0,h=x(h^y,12),s=s+h|0,d=x(d^s,8),y=y+d|0,h=x(h^y,7),i=i+a|0,w=x(w^i,16),p=p+w|0,a=x(a^p,12),i=i+a|0,w=x(w^i,8),p=p+w|0,a=x(a^p,7),c=c+f|0,b=x(b^c,16),g=g+b|0,f=x(f^g,12),c=c+f|0,b=x(b^c,8),g=g+b|0,f=x(f^g,7);let L=0;r[L++]=o,r[L++]=s,r[L++]=i,r[L++]=c,r[L++]=d,r[L++]=w,r[L++]=b,r[L++]=U}var Ze=Rt(ue,{counterRight:!1,counterLength:4,allowShortKeys:!1}),Fe=Rt(ue,{counterRight:!1,counterLength:8,extendNonceFn:$e,allowShortKeys:!1});var Ye=new Uint8Array(16),he=(e,t)=>{e.update(t);let n=t.length%16;n&&e.update(Ye.subarray(n))},Qe=new Uint8Array(32);function ae(e,t,n,r,o){o!==void 0&&E(o,void 0,"AAD");let s=e(t,n,Qe),i=bt(r.length,o?o.length:0,!0),c=le.create(s);o&&he(c,o),he(c,r),c.update(i);let f=c.digest();return B(s,i),f}var ge=e=>(t,n,r)=>({encrypt(s,i){let c=s.length;i=Q(c+16,i,!1),i.set(s);let f=i.subarray(0,-16);e(t,n,f,f,1);let l=ae(e,t,n,f,r);return i.set(l,c),B(l),i},decrypt(s,i){i=Q(s.length-16,i,!1);let c=s.subarray(0,-16),f=s.subarray(-16),l=ae(e,t,n,c,r);if(!wt(f,l))throw new Error("invalid tag");return i.set(s.subarray(0,-16)),e(t,n,i,i,1),B(l),i}}),pe=D({blockSize:64,nonceLength:12,tagLength:16},ge(Ze)),ye=D({blockSize:64,nonceLength:24,tagLength:16},ge(Fe));return Le(Ge);})();
5156−/*! Bundled license information:
5158−@noble/ciphers/utils.js:
5159− (*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) *)
5165−function _Crypto_cipherKeyFromHex(hex)
5168− var bytes = _Crypto_fromHex(hex);
5169− if (bytes.length !== 32) { return $elm$core$Maybe$Nothing; }
5170− return $elm$core$Maybe$Just(hex);
5172− return $elm$core$Maybe$Nothing;
5176−function _Crypto_cipherKeyToHex(key)
5181−function _Crypto_cipherNonce12FromHex(hex)
5184− var bytes = _Crypto_fromHex(hex);
5185− if (bytes.length !== 12) { return $elm$core$Maybe$Nothing; }
5186− return $elm$core$Maybe$Just(hex);
5188− return $elm$core$Maybe$Nothing;
5192−function _Crypto_cipherNonce12ToHex(nonce)
5197−function _Crypto_cipherNonce24FromHex(hex)
5200− var bytes = _Crypto_fromHex(hex);
5201− if (bytes.length !== 24) { return $elm$core$Maybe$Nothing; }
5202− return $elm$core$Maybe$Just(hex);
5204− return $elm$core$Maybe$Nothing;
5208−function _Crypto_cipherNonce24ToHex(nonce)
5216−var _Crypto_aesGcmEncrypt = F3(function(key, nonce, plaintext)
5218− var cipher = _Crypto_ciphers.gcm(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5219− return _Crypto_toHex(cipher.encrypt(_Crypto_fromHex(plaintext)));
5222−var _Crypto_aesGcmDecrypt = F3(function(key, nonce, ciphertext)
5225− var cipher = _Crypto_ciphers.gcm(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5226− return $elm$core$Maybe$Just(_Crypto_toHex(cipher.decrypt(_Crypto_fromHex(ciphertext))));
5228− return $elm$core$Maybe$Nothing;
5233−// CHACHA20-POLY1305
5235−var _Crypto_chacha20Encrypt = F3(function(key, nonce, plaintext)
5237− var cipher = _Crypto_ciphers.chacha20poly1305(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5238− return _Crypto_toHex(cipher.encrypt(_Crypto_fromHex(plaintext)));
5241−var _Crypto_chacha20Decrypt = F3(function(key, nonce, ciphertext)
5244− var cipher = _Crypto_ciphers.chacha20poly1305(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5245− return $elm$core$Maybe$Just(_Crypto_toHex(cipher.decrypt(_Crypto_fromHex(ciphertext))));
5247− return $elm$core$Maybe$Nothing;
5252−// XCHACHA20-POLY1305
5254−var _Crypto_xchacha20Encrypt = F3(function(key, nonce, plaintext)
5256− var cipher = _Crypto_ciphers.xchacha20poly1305(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5257− return _Crypto_toHex(cipher.encrypt(_Crypto_fromHex(plaintext)));
5260−var _Crypto_xchacha20Decrypt = F3(function(key, nonce, ciphertext)
5263− var cipher = _Crypto_ciphers.xchacha20poly1305(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5264− return $elm$core$Maybe$Just(_Crypto_toHex(cipher.decrypt(_Crypto_fromHex(ciphertext))));
5266− return $elm$core$Maybe$Nothing;
5269−function _Utils_cmp(x, y, ord) {if (typeof x !== 'object') {return x === y ? 0 : x < y ? -1 : 1; }if (x instanceof String) {var a = x.valueOf(); var b = y.valueOf();return a === b ? 0 : a < b ? -1 : 1; }if (typeof x.$ === 'undefined' || (typeof x.$ === 'string' && x.$[0] === '#')) {var keys = Object.keys(x).sort();for (var i = 0; i < keys.length; i++) {var k = keys[i];if (k === '$') continue;ord = _Utils_cmp(x[k], y[k]);if (ord) return ord; }return 0; }if (x.$ === '::' || x.$ === '[]') {for (; x.b && y.b && !(ord = _Utils_cmp(x.a, y.a)); x = x.b, y = y.b) {}return ord || (x.b ? 1 : y.b ? -1 : 0); }if (x.$ !== y.$) {return x.$ < y.$ ? -1 : 1; }var keys = Object.keys(x);for (var i = 0; i < keys.length; i++) {var k = keys[i];if (k === '$') continue;ord = _Utils_cmp(x[k], y[k]);if (ord) return ord; }return 0; }
5270−var $elm$core$List$cons = _List_cons;
5271−var $elm$core$Elm$JsArray$foldr = _JsArray_foldr;
5272−var $elm$core$Array$foldr = F3(
5273− function (func, baseCase, _v0) {
5277− function (node, acc) {
5278− if (node.$ === 'SubTree') {
5279− var subTree = node.a;
5280− return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);
5282− var values = node.a;
5283− return A3($elm$core$Elm$JsArray$foldr, func, acc, values);
5287− $elm$core$Elm$JsArray$foldr,
5289− A3($elm$core$Elm$JsArray$foldr, func, baseCase, tail),
5292−var $elm$core$Array$toList = function (array) {
5293− return A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array);
5295−var $elm$core$Dict$foldr = F3(
5296− function (func, acc, t) {
5299− if (t.$ === 'RBEmpty_elm_builtin') {
5306− var $temp$func = func,
5311− A3($elm$core$Dict$foldr, func, acc, right)),
5320−var $elm$core$Dict$toList = function (dict) {
5322− $elm$core$Dict$foldr,
5324− function (key, value, list) {
5326− $elm$core$List$cons,
5327− _Utils_Tuple2(key, value),
5333−var $elm$core$Dict$keys = function (dict) {
5335− $elm$core$Dict$foldr,
5337− function (key, value, keyList) {
5338− return A2($elm$core$List$cons, key, keyList);
5343−var $elm$core$Set$toList = function (_v0) {
5345− return $elm$core$Dict$keys(dict);
5347−var $elm$core$Basics$EQ = {$: 'EQ'};
5348−var $elm$core$Basics$GT = {$: 'GT'};
5349−var $elm$core$Basics$LT = {$: 'LT'};
5350−var $elm$core$Result$Err = function (a) {
5351− return {$: 'Err', a: a};
5353−var $elm$json$Json$Decode$Failure = F2(
5355− return {$: 'Failure', a: a, b: b};
5357−var $elm$json$Json$Decode$Field = F2(
5359− return {$: 'Field', a: a, b: b};
5361−var $elm$json$Json$Decode$Index = F2(
5363− return {$: 'Index', a: a, b: b};
5365−var $elm$core$Result$Ok = function (a) {
5366− return {$: 'Ok', a: a};
5368−var $elm$json$Json$Decode$OneOf = function (a) {
5369− return {$: 'OneOf', a: a};
5371−var $elm$core$Basics$False = {$: 'False'};
5372−var $elm$core$Basics$add = _Basics_add;
5373−var $elm$core$Maybe$Just = function (a) {
5374− return {$: 'Just', a: a};
5376−var $elm$core$Maybe$Nothing = {$: 'Nothing'};
5377−var $elm$core$String$all = _String_all;
5378−var $elm$core$Basics$and = _Basics_and;
5379−var $elm$core$Basics$append = _Utils_append;
5380−var $elm$json$Json$Encode$encode = _Json_encode;
5381−var $elm$core$String$fromInt = _String_fromNumber;
5382−var $elm$core$String$join = F2(
5383− function (sep, chunks) {
5387− _List_toArray(chunks));
5389−var $elm$core$String$split = F2(
5390− function (sep, string) {
5391− return _List_fromArray(
5392− A2(_String_split, sep, string));
5394−var $elm$json$Json$Decode$indent = function (str) {
5396− $elm$core$String$join,
5398− A2($elm$core$String$split, '\n', str));
5400−var $elm$core$List$foldl = F3(
5401− function (func, acc, list) {
5409− var $temp$func = func,
5410− $temp$acc = A2(func, x, acc),
5419−var $elm$core$List$length = function (xs) {
5421− $elm$core$List$foldl,
5423− function (_v0, i) {
5429−var $elm$core$List$map2 = _List_map2;
5430−var $elm$core$Basics$le = _Utils_le;
5431−var $elm$core$Basics$sub = _Basics_sub;
5432−var $elm$core$List$rangeHelp = F3(
5433− function (lo, hi, list) {
5436− if (_Utils_cmp(lo, hi) < 1) {
5439− $temp$list = A2($elm$core$List$cons, hi, list);
5443− continue rangeHelp;
5449−var $elm$core$List$range = F2(
5450− function (lo, hi) {
5451− return A3($elm$core$List$rangeHelp, lo, hi, _List_Nil);
5453−var $elm$core$List$indexedMap = F2(
5456− $elm$core$List$map2,
5459− $elm$core$List$range,
5461− $elm$core$List$length(xs) - 1),
5464−var $elm$core$Char$toCode = _Char_toCode;
5465−var $elm$core$Char$isLower = function (_char) {
5466− var code = $elm$core$Char$toCode(_char);
5467− return (97 <= code) && (code <= 122);
5469−var $elm$core$Char$isUpper = function (_char) {
5470− var code = $elm$core$Char$toCode(_char);
5471− return (code <= 90) && (65 <= code);
5473−var $elm$core$Basics$or = _Basics_or;
5474−var $elm$core$Char$isAlpha = function (_char) {
5475− return $elm$core$Char$isLower(_char) || $elm$core$Char$isUpper(_char);
5477−var $elm$core$Char$isDigit = function (_char) {
5478− var code = $elm$core$Char$toCode(_char);
5479− return (code <= 57) && (48 <= code);
5481−var $elm$core$Char$isAlphaNum = function (_char) {
5482− return $elm$core$Char$isLower(_char) || ($elm$core$Char$isUpper(_char) || $elm$core$Char$isDigit(_char));
5484−var $elm$core$List$reverse = function (list) {
5485− return A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list);
5487−var $elm$core$String$uncons = _String_uncons;
5488−var $elm$json$Json$Decode$errorOneOf = F2(
5489− function (i, error) {
5490− return '\n\n(' + ($elm$core$String$fromInt(i + 1) + (') ' + $elm$json$Json$Decode$indent(
5491− $elm$json$Json$Decode$errorToString(error))));
5493−var $elm$json$Json$Decode$errorToString = function (error) {
5494− return A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil);
5496−var $elm$json$Json$Decode$errorToStringHelp = F2(
5497− function (error, context) {
5504− var isSimple = function () {
5505− var _v1 = $elm$core$String$uncons(f);
5506− if (_v1.$ === 'Nothing') {
5512− return $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest);
5515− var fieldName = isSimple ? ('.' + f) : ('[\'' + (f + '\']'));
5516− var $temp$error = err,
5517− $temp$context = A2($elm$core$List$cons, fieldName, context);
5518− error = $temp$error;
5519− context = $temp$context;
5520− continue errorToStringHelp;
5524− var indexName = '[' + ($elm$core$String$fromInt(i) + ']');
5525− var $temp$error = err,
5526− $temp$context = A2($elm$core$List$cons, indexName, context);
5527− error = $temp$error;
5528− context = $temp$context;
5529− continue errorToStringHelp;
5531− var errors = error.a;
5533− return 'Ran into a Json.Decode.oneOf with no possibilities' + function () {
5537− return ' at json' + A2(
5538− $elm$core$String$join,
5540− $elm$core$List$reverse(context));
5545− var err = errors.a;
5546− var $temp$error = err,
5547− $temp$context = context;
5548− error = $temp$error;
5549− context = $temp$context;
5550− continue errorToStringHelp;
5552− var starter = function () {
5554− return 'Json.Decode.oneOf';
5556− return 'The Json.Decode.oneOf at json' + A2(
5557− $elm$core$String$join,
5559− $elm$core$List$reverse(context));
5562− var introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt(
5563− $elm$core$List$length(errors)) + ' ways:'));
5565− $elm$core$String$join,
5568− $elm$core$List$cons,
5570− A2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors)));
5575− var json = error.b;
5576− var introduction = function () {
5578− return 'Problem with the given value:\n\n';
5580− return 'Problem with the value at json' + (A2(
5581− $elm$core$String$join,
5583− $elm$core$List$reverse(context)) + ':\n\n ');
5586− return introduction + ($elm$json$Json$Decode$indent(
5587− A2($elm$json$Json$Encode$encode, 4, json)) + ('\n\n' + msg));
5591−var $elm$core$Array$branchFactor = 32;
5592−var $elm$core$Array$Array_elm_builtin = F4(
5593− function (a, b, c, d) {
5594− return {$: 'Array_elm_builtin', a: a, b: b, c: c, d: d};
5596−var $elm$core$Elm$JsArray$empty = _JsArray_empty;
5597−var $elm$core$Basics$ceiling = _Basics_ceiling;
5598−var $elm$core$Basics$fdiv = _Basics_fdiv;
5599−var $elm$core$Basics$logBase = F2(
5600− function (base, number) {
5601− return _Basics_log(number) / _Basics_log(base);
5603−var $elm$core$Basics$toFloat = _Basics_toFloat;
5604−var $elm$core$Array$shiftStep = $elm$core$Basics$ceiling(
5605− A2($elm$core$Basics$logBase, 2, $elm$core$Array$branchFactor));
5606−var $elm$core$Array$empty = A4($elm$core$Array$Array_elm_builtin, 0, $elm$core$Array$shiftStep, $elm$core$Elm$JsArray$empty, $elm$core$Elm$JsArray$empty);
5607−var $elm$core$Elm$JsArray$initialize = _JsArray_initialize;
5608−var $elm$core$Array$Leaf = function (a) {
5609− return {$: 'Leaf', a: a};
5611−var $elm$core$Basics$apL = F2(
5615−var $elm$core$Basics$apR = F2(
5619−var $elm$core$Basics$eq = _Utils_equal;
5620−var $elm$core$Basics$floor = _Basics_floor;
5621−var $elm$core$Elm$JsArray$length = _JsArray_length;
5622−var $elm$core$Basics$gt = _Utils_gt;
5623−var $elm$core$Basics$max = F2(
5625− return (_Utils_cmp(x, y) > 0) ? x : y;
5627−var $elm$core$Basics$mul = _Basics_mul;
5628−var $elm$core$Array$SubTree = function (a) {
5629− return {$: 'SubTree', a: a};
5631−var $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;
5632−var $elm$core$Array$compressNodes = F2(
5633− function (nodes, acc) {
5636− var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes);
5638− var remainingNodes = _v0.b;
5640− $elm$core$List$cons,
5641− $elm$core$Array$SubTree(node),
5643− if (!remainingNodes.b) {
5644− return $elm$core$List$reverse(newAcc);
5646− var $temp$nodes = remainingNodes,
5647− $temp$acc = newAcc;
5648− nodes = $temp$nodes;
5650− continue compressNodes;
5654−var $elm$core$Tuple$first = function (_v0) {
5658−var $elm$core$Array$treeFromBuilder = F2(
5659− function (nodeList, nodeListSize) {
5662− var newNodeSize = $elm$core$Basics$ceiling(nodeListSize / $elm$core$Array$branchFactor);
5663− if (newNodeSize === 1) {
5664− return A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodeList).a;
5666− var $temp$nodeList = A2($elm$core$Array$compressNodes, nodeList, _List_Nil),
5667− $temp$nodeListSize = newNodeSize;
5668− nodeList = $temp$nodeList;
5669− nodeListSize = $temp$nodeListSize;
5670− continue treeFromBuilder;
5674−var $elm$core$Array$builderToArray = F2(
5675− function (reverseNodeList, builder) {
5676− if (!builder.nodeListSize) {
5678− $elm$core$Array$Array_elm_builtin,
5679− $elm$core$Elm$JsArray$length(builder.tail),
5680− $elm$core$Array$shiftStep,
5681− $elm$core$Elm$JsArray$empty,
5684− var treeLen = builder.nodeListSize * $elm$core$Array$branchFactor;
5685− var depth = $elm$core$Basics$floor(
5686− A2($elm$core$Basics$logBase, $elm$core$Array$branchFactor, treeLen - 1));
5687− var correctNodeList = reverseNodeList ? $elm$core$List$reverse(builder.nodeList) : builder.nodeList;
5688− var tree = A2($elm$core$Array$treeFromBuilder, correctNodeList, builder.nodeListSize);
5690− $elm$core$Array$Array_elm_builtin,
5691− $elm$core$Elm$JsArray$length(builder.tail) + treeLen,
5692− A2($elm$core$Basics$max, 5, depth * $elm$core$Array$shiftStep),
5697−var $elm$core$Basics$idiv = _Basics_idiv;
5698−var $elm$core$Basics$lt = _Utils_lt;
5699−var $elm$core$Array$initializeHelp = F5(
5700− function (fn, fromIndex, len, nodeList, tail) {
5703− if (fromIndex < 0) {
5705− $elm$core$Array$builderToArray,
5707− {nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail});
5709− var leaf = $elm$core$Array$Leaf(
5710− A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));
5712− $temp$fromIndex = fromIndex - $elm$core$Array$branchFactor,
5714− $temp$nodeList = A2($elm$core$List$cons, leaf, nodeList),
5717− fromIndex = $temp$fromIndex;
5719− nodeList = $temp$nodeList;
5721− continue initializeHelp;
5725−var $elm$core$Basics$remainderBy = _Basics_remainderBy;
5726−var $elm$core$Array$initialize = F2(
5727− function (len, fn) {
5729− return $elm$core$Array$empty;
5731− var tailLen = len % $elm$core$Array$branchFactor;
5732− var tail = A3($elm$core$Elm$JsArray$initialize, tailLen, len - tailLen, fn);
5733− var initialFromIndex = (len - tailLen) - $elm$core$Array$branchFactor;
5734− return A5($elm$core$Array$initializeHelp, fn, initialFromIndex, len, _List_Nil, tail);
5737−var $elm$core$Basics$True = {$: 'True'};
5738−var $elm$core$Result$isOk = function (result) {
5739− if (result.$ === 'Ok') {
5745−var $elm$json$Json$Decode$map = _Json_map1;
5746−var $elm$json$Json$Decode$map2 = _Json_map2;
5747−var $elm$json$Json$Decode$succeed = _Json_succeed;
5748−var $lynxjs_elm$virtual_dom$VirtualDom$toHandlerInt = function (handler) {
5749− switch (handler.$) {
5752− case 'MayStopPropagation':
5754− case 'MayPreventDefault':
5760−var $elm$core$Basics$identity = function (x) {
5763−var $lynxjs_elm$browser$Browser$Dom$NotFound = function (a) {
5764− return {$: 'NotFound', a: a};
5766−var $elm$core$Basics$never = function (_v0) {
5770− var $temp$_v0 = nvr;
5775−var $elm$core$Task$Perform = function (a) {
5776− return {$: 'Perform', a: a};
5778−var $elm$core$Task$succeed = _Scheduler_succeed;
5779−var $elm$core$Task$init = $elm$core$Task$succeed(_Utils_Tuple0);
5780−var $elm$core$List$foldrHelper = F4(
5781− function (fn, acc, ctr, ls) {
5788− return A2(fn, a, acc);
5811− var res = (ctr > 500) ? A3(
5812− $elm$core$List$foldl,
5815− $elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4);
5831−var $elm$core$List$foldr = F3(
5832− function (fn, acc, ls) {
5833− return A4($elm$core$List$foldrHelper, fn, acc, 0, ls);
5835−var $elm$core$List$map = F2(
5838− $elm$core$List$foldr,
5840− function (x, acc) {
5842− $elm$core$List$cons,
5849−var $elm$core$Task$andThen = _Scheduler_andThen;
5850−var $elm$core$Task$map = F2(
5851− function (func, taskA) {
5853− $elm$core$Task$andThen,
5855− return $elm$core$Task$succeed(
5860−var $elm$core$Task$map2 = F3(
5861− function (func, taskA, taskB) {
5863− $elm$core$Task$andThen,
5866− $elm$core$Task$andThen,
5868− return $elm$core$Task$succeed(
5875−var $elm$core$Task$sequence = function (tasks) {
5877− $elm$core$List$foldr,
5878− $elm$core$Task$map2($elm$core$List$cons),
5879− $elm$core$Task$succeed(_List_Nil),
5882−var $elm$core$Platform$sendToApp = _Platform_sendToApp;
5883−var $elm$core$Task$spawnCmd = F2(
5884− function (router, _v0) {
5886− return _Scheduler_spawn(
5888− $elm$core$Task$andThen,
5889− $elm$core$Platform$sendToApp(router),
5892−var $elm$core$Task$onEffects = F3(
5893− function (router, commands, state) {
5895− $elm$core$Task$map,
5897− return _Utils_Tuple0;
5899− $elm$core$Task$sequence(
5901− $elm$core$List$map,
5902− $elm$core$Task$spawnCmd(router),
5905−var $elm$core$Task$onSelfMsg = F3(
5906− function (_v0, _v1, _v2) {
5907− return $elm$core$Task$succeed(_Utils_Tuple0);
5909−var $elm$core$Task$cmdMap = F2(
5910− function (tagger, _v0) {
5912− return $elm$core$Task$Perform(
5913− A2($elm$core$Task$map, tagger, task));
5915−_Platform_effectManagers['Task'] = _Platform_createManager($elm$core$Task$init, $elm$core$Task$onEffects, $elm$core$Task$onSelfMsg, $elm$core$Task$cmdMap);
5916−var $elm$core$Task$command = _Platform_leaf('Task');
5917−var $elm$core$Task$perform = F2(
5918− function (toMessage, task) {
5919− return $elm$core$Task$command(
5920− $elm$core$Task$Perform(
5921− A2($elm$core$Task$map, toMessage, task)));
5923−var $lynxjs_elm$browser$Browser$element = _Browser_element;
5924−var $author$project$Main$GotSeed = function (a) {
5925− return {$: 'GotSeed', a: a};
5927−var $author$project$Main$SetupScreen = {$: 'SetupScreen'};
5928−var $elm$core$Dict$RBEmpty_elm_builtin = {$: 'RBEmpty_elm_builtin'};
5929−var $elm$core$Dict$empty = $elm$core$Dict$RBEmpty_elm_builtin;
5930−var $elm$core$Set$Set_elm_builtin = function (a) {
5931− return {$: 'Set_elm_builtin', a: a};
5933−var $elm$core$Set$empty = $elm$core$Set$Set_elm_builtin($elm$core$Dict$empty);
5934−var $elm$random$Random$Generate = function (a) {
5935− return {$: 'Generate', a: a};
5937−var $elm$random$Random$Seed = F2(
5939− return {$: 'Seed', a: a, b: b};
5941−var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy;
5942−var $elm$random$Random$next = function (_v0) {
5943− var state0 = _v0.a;
5945− return A2($elm$random$Random$Seed, ((state0 * 1664525) + incr) >>> 0, incr);
5947−var $elm$random$Random$initialSeed = function (x) {
5948− var _v0 = $elm$random$Random$next(
5949− A2($elm$random$Random$Seed, 0, 1013904223));
5950− var state1 = _v0.a;
5952− var state2 = (state1 + x) >>> 0;
5953− return $elm$random$Random$next(
5954− A2($elm$random$Random$Seed, state2, incr));
5956−var $elm$time$Time$Name = function (a) {
5957− return {$: 'Name', a: a};
5959−var $elm$time$Time$Offset = function (a) {
5960− return {$: 'Offset', a: a};
5962−var $elm$time$Time$Zone = F2(
5964− return {$: 'Zone', a: a, b: b};
5966−var $elm$time$Time$customZone = $elm$time$Time$Zone;
5967−var $elm$time$Time$Posix = function (a) {
5968− return {$: 'Posix', a: a};
5970−var $elm$time$Time$millisToPosix = $elm$time$Time$Posix;
5971−var $elm$time$Time$now = _Time_now($elm$time$Time$millisToPosix);
5972−var $elm$time$Time$posixToMillis = function (_v0) {
5973− var millis = _v0.a;
5976−var $elm$random$Random$init = A2(
5977− $elm$core$Task$andThen,
5979− return $elm$core$Task$succeed(
5980− $elm$random$Random$initialSeed(
5981− $elm$time$Time$posixToMillis(time)));
5983− $elm$time$Time$now);
5984−var $elm$random$Random$step = F2(
5985− function (_v0, seed) {
5986− var generator = _v0.a;
5987− return generator(seed);
5989−var $elm$random$Random$onEffects = F3(
5990− function (router, commands, seed) {
5992− return $elm$core$Task$succeed(seed);
5994− var generator = commands.a.a;
5995− var rest = commands.b;
5996− var _v1 = A2($elm$random$Random$step, generator, seed);
5998− var newSeed = _v1.b;
6000− $elm$core$Task$andThen,
6002− return A3($elm$random$Random$onEffects, router, rest, newSeed);
6004− A2($elm$core$Platform$sendToApp, router, value));
6007−var $elm$random$Random$onSelfMsg = F3(
6008− function (_v0, _v1, seed) {
6009− return $elm$core$Task$succeed(seed);
6011−var $elm$random$Random$Generator = function (a) {
6012− return {$: 'Generator', a: a};
6014−var $elm$random$Random$map = F2(
6015− function (func, _v0) {
6017− return $elm$random$Random$Generator(
6019− var _v1 = genA(seed0);
6022− return _Utils_Tuple2(
6027−var $elm$random$Random$cmdMap = F2(
6028− function (func, _v0) {
6029− var generator = _v0.a;
6030− return $elm$random$Random$Generate(
6031− A2($elm$random$Random$map, func, generator));
6033−_Platform_effectManagers['Random'] = _Platform_createManager($elm$random$Random$init, $elm$random$Random$onEffects, $elm$random$Random$onSelfMsg, $elm$random$Random$cmdMap);
6034−var $elm$random$Random$command = _Platform_leaf('Random');
6035−var $elm$random$Random$generate = F2(
6036− function (tagger, generator) {
6037− return $elm$random$Random$command(
6038− $elm$random$Random$Generate(
6039− A2($elm$random$Random$map, tagger, generator)));
6041−var $elm$core$String$fromList = _String_fromList;
6042−var $elm$random$Random$listHelp = F4(
6043− function (revList, n, gen, seed) {
6047− return _Utils_Tuple2(revList, seed);
6049− var _v0 = gen(seed);
6051− var newSeed = _v0.b;
6052− var $temp$revList = A2($elm$core$List$cons, value, revList),
6055− $temp$seed = newSeed;
6056− revList = $temp$revList;
6064−var $elm$random$Random$list = F2(
6065− function (n, _v0) {
6067− return $elm$random$Random$Generator(
6069− return A4($elm$random$Random$listHelp, _List_Nil, n, gen, seed);
6072−var $elm$core$Char$fromCode = _Char_fromCode;
6073−var $elm$core$Bitwise$and = _Bitwise_and;
6074−var $elm$core$Basics$negate = function (n) {
6077−var $elm$core$Bitwise$xor = _Bitwise_xor;
6078−var $elm$random$Random$peel = function (_v0) {
6080− var word = (state ^ (state >>> ((state >>> 28) + 4))) * 277803737;
6081− return ((word >>> 22) ^ word) >>> 0;
6083−var $elm$random$Random$int = F2(
6085− return $elm$random$Random$Generator(
6087− var _v0 = (_Utils_cmp(a, b) < 0) ? _Utils_Tuple2(a, b) : _Utils_Tuple2(b, a);
6090− var range = (hi - lo) + 1;
6091− if (!((range - 1) & range)) {
6092− return _Utils_Tuple2(
6093− (((range - 1) & $elm$random$Random$peel(seed0)) >>> 0) + lo,
6094− $elm$random$Random$next(seed0));
6096− var threshhold = (((-range) >>> 0) % range) >>> 0;
6097− var accountForBias = function (seed) {
6100− var x = $elm$random$Random$peel(seed);
6101− var seedN = $elm$random$Random$next(seed);
6102− if (_Utils_cmp(x, threshhold) < 0) {
6103− var $temp$seed = seedN;
6105− continue accountForBias;
6107− return _Utils_Tuple2((x % range) + lo, seedN);
6111− return accountForBias(seed0);
6115−var $author$project$Main$randomHexChar = A2(
6116− $elm$random$Random$map,
6118− return (n < 10) ? $elm$core$Char$fromCode(n + 48) : $elm$core$Char$fromCode((n - 10) + 97);
6120− A2($elm$random$Random$int, 0, 15));
6121−var $author$project$Main$randomHexString = function (byteCount) {
6123− $elm$random$Random$map,
6124− $elm$core$String$fromList,
6125− A2($elm$random$Random$list, byteCount * 2, $author$project$Main$randomHexChar));
6127−var $author$project$Main$init = function (_v0) {
6128− return _Utils_Tuple2(
6129− {activeChat: '', addIdentity: '', addName: '', authToken: '', connecting: false, contacts: $elm$core$Dict$empty, currentTime: 0, displayName: '', draft: '', edPriv: $elm$core$Maybe$Nothing, edPub: $elm$core$Maybe$Nothing, error: $elm$core$Maybe$Nothing, messages: $elm$core$Dict$empty, screen: $author$project$Main$SetupScreen, seenIds: $elm$core$Set$empty, sending: false, serverUrl: 'http://localhost:8080', xPriv: $elm$core$Maybe$Nothing, xPub: $elm$core$Maybe$Nothing},
6131− $elm$random$Random$generate,
6132− $author$project$Main$GotSeed,
6133− $author$project$Main$randomHexString(32)));
6135−var $author$project$Main$GotTime = function (a) {
6136− return {$: 'GotTime', a: a};
6138−var $author$project$Main$PollTick = function (a) {
6139− return {$: 'PollTick', a: a};
6141−var $elm$core$Platform$Sub$batch = _Platform_batch;
6142−var $elm$time$Time$Every = F2(
6144− return {$: 'Every', a: a, b: b};
6146−var $elm$time$Time$State = F2(
6147− function (taggers, processes) {
6148− return {processes: processes, taggers: taggers};
6150−var $elm$time$Time$init = $elm$core$Task$succeed(
6151− A2($elm$time$Time$State, $elm$core$Dict$empty, $elm$core$Dict$empty));
6152−var $elm$core$Basics$compare = _Utils_compare;
6153−var $elm$core$Dict$get = F2(
6154− function (targetKey, dict) {
6157− if (dict.$ === 'RBEmpty_elm_builtin') {
6158− return $elm$core$Maybe$Nothing;
6161− var value = dict.c;
6163− var right = dict.e;
6164− var _v1 = A2($elm$core$Basics$compare, targetKey, key);
6167− var $temp$targetKey = targetKey,
6169− targetKey = $temp$targetKey;
6173− return $elm$core$Maybe$Just(value);
6175− var $temp$targetKey = targetKey,
6176− $temp$dict = right;
6177− targetKey = $temp$targetKey;
6184−var $elm$core$Dict$Black = {$: 'Black'};
6185−var $elm$core$Dict$RBNode_elm_builtin = F5(
6186− function (a, b, c, d, e) {
6187− return {$: 'RBNode_elm_builtin', a: a, b: b, c: c, d: d, e: e};
6189−var $elm$core$Dict$Red = {$: 'Red'};
6190−var $elm$core$Dict$balance = F5(
6191− function (color, key, value, left, right) {
6192− if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Red')) {
6196− var rLeft = right.d;
6197− var rRight = right.e;
6198− if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {
6202− var lLeft = left.d;
6203− var lRight = left.e;
6205− $elm$core$Dict$RBNode_elm_builtin,
6206− $elm$core$Dict$Red,
6209− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, lK, lV, lLeft, lRight),
6210− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rLeft, rRight));
6213− $elm$core$Dict$RBNode_elm_builtin,
6217− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft),
6221− if ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) {
6229− var llLeft = _v6.d;
6230− var llRight = _v6.e;
6231− var lRight = left.e;
6233− $elm$core$Dict$RBNode_elm_builtin,
6234− $elm$core$Dict$Red,
6237− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),
6238− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, key, value, lRight, right));
6240− return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);
6244−var $elm$core$Dict$insertHelp = F3(
6245− function (key, value, dict) {
6246− if (dict.$ === 'RBEmpty_elm_builtin') {
6247− return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, $elm$core$Dict$RBEmpty_elm_builtin, $elm$core$Dict$RBEmpty_elm_builtin);
6249− var nColor = dict.a;
6251− var nValue = dict.c;
6252− var nLeft = dict.d;
6253− var nRight = dict.e;
6254− var _v1 = A2($elm$core$Basics$compare, key, nKey);
6258− $elm$core$Dict$balance,
6262− A3($elm$core$Dict$insertHelp, key, value, nLeft),
6265− return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);
6268− $elm$core$Dict$balance,
6273− A3($elm$core$Dict$insertHelp, key, value, nRight));
6277−var $elm$core$Dict$insert = F3(
6278− function (key, value, dict) {
6279− var _v0 = A3($elm$core$Dict$insertHelp, key, value, dict);
6280− if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {
6286− return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);
6292−var $elm$time$Time$addMySub = F2(
6293− function (_v0, state) {
6294− var interval = _v0.a;
6295− var tagger = _v0.b;
6296− var _v1 = A2($elm$core$Dict$get, interval, state);
6297− if (_v1.$ === 'Nothing') {
6299− $elm$core$Dict$insert,
6305− var taggers = _v1.a;
6307− $elm$core$Dict$insert,
6309− A2($elm$core$List$cons, tagger, taggers),
6313−var $elm$core$Process$kill = _Scheduler_kill;
6314−var $elm$core$Dict$foldl = F3(
6315− function (func, acc, dict) {
6318− if (dict.$ === 'RBEmpty_elm_builtin') {
6322− var value = dict.c;
6324− var right = dict.e;
6325− var $temp$func = func,
6330− A3($elm$core$Dict$foldl, func, acc, left)),
6331− $temp$dict = right;
6339−var $elm$core$Dict$merge = F6(
6340− function (leftStep, bothStep, rightStep, leftDict, rightDict, initialResult) {
6341− var stepState = F3(
6342− function (rKey, rValue, _v0) {
6346− var result = _v0.b;
6348− return _Utils_Tuple2(
6350− A3(rightStep, rKey, rValue, result));
6354− var lValue = _v2.b;
6356− if (_Utils_cmp(lKey, rKey) < 0) {
6357− var $temp$rKey = rKey,
6358− $temp$rValue = rValue,
6359− $temp$_v0 = _Utils_Tuple2(
6361− A3(leftStep, lKey, lValue, result));
6363− rValue = $temp$rValue;
6365− continue stepState;
6367− if (_Utils_cmp(lKey, rKey) > 0) {
6368− return _Utils_Tuple2(
6370− A3(rightStep, rKey, rValue, result));
6372− return _Utils_Tuple2(
6374− A4(bothStep, lKey, lValue, rValue, result));
6381− $elm$core$Dict$foldl,
6384− $elm$core$Dict$toList(leftDict),
6387− var leftovers = _v3.a;
6388− var intermediateResult = _v3.b;
6390− $elm$core$List$foldl,
6392− function (_v4, result) {
6395− return A3(leftStep, k, v, result);
6397− intermediateResult,
6400−var $elm$core$Platform$sendToSelf = _Platform_sendToSelf;
6401−var $elm$time$Time$setInterval = _Time_setInterval;
6402−var $elm$core$Process$spawn = _Scheduler_spawn;
6403−var $elm$time$Time$spawnHelp = F3(
6404− function (router, intervals, processes) {
6405− if (!intervals.b) {
6406− return $elm$core$Task$succeed(processes);
6408− var interval = intervals.a;
6409− var rest = intervals.b;
6410− var spawnTimer = $elm$core$Process$spawn(
6412− $elm$time$Time$setInterval,
6414− A2($elm$core$Platform$sendToSelf, router, interval)));
6415− var spawnRest = function (id) {
6417− $elm$time$Time$spawnHelp,
6420− A3($elm$core$Dict$insert, interval, id, processes));
6422− return A2($elm$core$Task$andThen, spawnRest, spawnTimer);
6425−var $elm$time$Time$onEffects = F3(
6426− function (router, subs, _v0) {
6427− var processes = _v0.processes;
6428− var rightStep = F3(
6429− function (_v6, id, _v7) {
6430− var spawns = _v7.a;
6431− var existing = _v7.b;
6433− return _Utils_Tuple3(
6437− $elm$core$Task$andThen,
6441− $elm$core$Process$kill(id)));
6443− var newTaggers = A3($elm$core$List$foldl, $elm$time$Time$addMySub, $elm$core$Dict$empty, subs);
6445− function (interval, taggers, _v4) {
6446− var spawns = _v4.a;
6447− var existing = _v4.b;
6449− return _Utils_Tuple3(
6450− A2($elm$core$List$cons, interval, spawns),
6455− function (interval, taggers, id, _v3) {
6456− var spawns = _v3.a;
6457− var existing = _v3.b;
6459− return _Utils_Tuple3(
6461− A3($elm$core$Dict$insert, interval, id, existing),
6465− $elm$core$Dict$merge,
6473− $elm$core$Dict$empty,
6474− $elm$core$Task$succeed(_Utils_Tuple0)));
6475− var spawnList = _v1.a;
6476− var existingDict = _v1.b;
6477− var killTask = _v1.c;
6479− $elm$core$Task$andThen,
6480− function (newProcesses) {
6481− return $elm$core$Task$succeed(
6482− A2($elm$time$Time$State, newTaggers, newProcesses));
6485− $elm$core$Task$andThen,
6487− return A3($elm$time$Time$spawnHelp, router, spawnList, existingDict);
6491−var $elm$time$Time$onSelfMsg = F3(
6492− function (router, interval, state) {
6493− var _v0 = A2($elm$core$Dict$get, interval, state.taggers);
6494− if (_v0.$ === 'Nothing') {
6495− return $elm$core$Task$succeed(state);
6497− var taggers = _v0.a;
6498− var tellTaggers = function (time) {
6499− return $elm$core$Task$sequence(
6501− $elm$core$List$map,
6502− function (tagger) {
6504− $elm$core$Platform$sendToApp,
6511− $elm$core$Task$andThen,
6513− return $elm$core$Task$succeed(state);
6515− A2($elm$core$Task$andThen, tellTaggers, $elm$time$Time$now));
6518−var $elm$core$Basics$composeL = F3(
6519− function (g, f, x) {
6523−var $elm$time$Time$subMap = F2(
6524− function (f, _v0) {
6525− var interval = _v0.a;
6526− var tagger = _v0.b;
6528− $elm$time$Time$Every,
6530− A2($elm$core$Basics$composeL, f, tagger));
6532−_Platform_effectManagers['Time'] = _Platform_createManager($elm$time$Time$init, $elm$time$Time$onEffects, $elm$time$Time$onSelfMsg, 0, $elm$time$Time$subMap);
6533−var $elm$time$Time$subscription = _Platform_leaf('Time');
6534−var $elm$time$Time$every = F2(
6535− function (interval, tagger) {
6536− return $elm$time$Time$subscription(
6537− A2($elm$time$Time$Every, interval, tagger));
6539−var $elm$core$Basics$neq = _Utils_notEqual;
6540−var $elm$core$Platform$Sub$none = $elm$core$Platform$Sub$batch(_List_Nil);
6541−var $author$project$Main$subscriptions = function (model) {
6542− return $elm$core$Platform$Sub$batch(
6545− (model.authToken !== '') ? A2($elm$time$Time$every, 3000, $author$project$Main$PollTick) : $elm$core$Platform$Sub$none,
6546− A2($elm$time$Time$every, 60000, $author$project$Main$GotTime)
6549−var $author$project$Main$ChatScreen = {$: 'ChatScreen'};
6550−var $author$project$Main$ContactsScreen = {$: 'ContactsScreen'};
6551−var $author$project$Main$GotSendEntropy = function (a) {
6552− return {$: 'GotSendEntropy', a: a};
6554−var $author$project$Main$GotAck = function (a) {
6555− return {$: 'GotAck', a: a};
6557−var $elm$json$Json$Decode$bool = _Json_decodeBool;
6558−var $elm$json$Json$Decode$decodeString = _Json_runOnString;
6559−var $elm$bytes$Bytes$Encode$getWidth = function (builder) {
6560− switch (builder.$) {
6584− var bs = builder.a;
6585− return _Bytes_width(bs);
6588−var $elm$bytes$Bytes$LE = {$: 'LE'};
6589−var $elm$bytes$Bytes$Encode$write = F3(
6590− function (builder, mb, offset) {
6591− switch (builder.$) {
6594− return A3(_Bytes_write_i8, mb, offset, n);
6603− _Utils_eq(e, $elm$bytes$Bytes$LE));
6612− _Utils_eq(e, $elm$bytes$Bytes$LE));
6615− return A3(_Bytes_write_u8, mb, offset, n);
6624− _Utils_eq(e, $elm$bytes$Bytes$LE));
6633− _Utils_eq(e, $elm$bytes$Bytes$LE));
6642− _Utils_eq(e, $elm$bytes$Bytes$LE));
6651− _Utils_eq(e, $elm$bytes$Bytes$LE));
6653− var bs = builder.b;
6654− return A3($elm$bytes$Bytes$Encode$writeSequence, bs, mb, offset);
6657− return A3(_Bytes_write_string, mb, offset, s);
6659− var bs = builder.a;
6660− return A3(_Bytes_write_bytes, mb, offset, bs);
6663−var $elm$bytes$Bytes$Encode$writeSequence = F3(
6664− function (builders, mb, offset) {
6670− var b = builders.a;
6671− var bs = builders.b;
6672− var $temp$builders = bs,
6674− $temp$offset = A3($elm$bytes$Bytes$Encode$write, b, mb, offset);
6675− builders = $temp$builders;
6677− offset = $temp$offset;
6678− continue writeSequence;
6682−var $lynxjs_elm$http$Http$BadStatus_ = F2(
6684− return {$: 'BadStatus_', a: a, b: b};
6686−var $lynxjs_elm$http$Http$BadUrl_ = function (a) {
6687− return {$: 'BadUrl_', a: a};
6689−var $lynxjs_elm$http$Http$GoodStatus_ = F2(
6691− return {$: 'GoodStatus_', a: a, b: b};
6693−var $lynxjs_elm$http$Http$NetworkError_ = {$: 'NetworkError_'};
6694−var $lynxjs_elm$http$Http$Timeout_ = {$: 'Timeout_'};
6695−var $elm$core$Maybe$isJust = function (maybe) {
6696− if (maybe.$ === 'Just') {
6702−var $elm$core$Dict$getMin = function (dict) {
6705− if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {
6707− var $temp$dict = left;
6715−var $elm$core$Dict$moveRedLeft = function (dict) {
6716− if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {
6717− if ((dict.e.d.$ === 'RBNode_elm_builtin') && (dict.e.d.a.$ === 'Red')) {
6726− var lRight = _v1.e;
6737− var rRight = _v2.e;
6739− $elm$core$Dict$RBNode_elm_builtin,
6740− $elm$core$Dict$Red,
6744− $elm$core$Dict$RBNode_elm_builtin,
6745− $elm$core$Dict$Black,
6748− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6750− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight));
6760− var lRight = _v4.e;
6766− var rRight = _v5.e;
6767− if (clr.$ === 'Black') {
6769− $elm$core$Dict$RBNode_elm_builtin,
6770− $elm$core$Dict$Black,
6773− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6774− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
6777− $elm$core$Dict$RBNode_elm_builtin,
6778− $elm$core$Dict$Black,
6781− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6782− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
6789−var $elm$core$Dict$moveRedRight = function (dict) {
6790− if (((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) && (dict.e.$ === 'RBNode_elm_builtin')) {
6791− if ((dict.d.d.$ === 'RBNode_elm_builtin') && (dict.d.d.a.$ === 'Red')) {
6803− var llLeft = _v2.d;
6804− var llRight = _v2.e;
6805− var lRight = _v1.e;
6811− var rRight = _v4.e;
6813− $elm$core$Dict$RBNode_elm_builtin,
6814− $elm$core$Dict$Red,
6817− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),
6819− $elm$core$Dict$RBNode_elm_builtin,
6820− $elm$core$Dict$Black,
6824− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)));
6834− var lRight = _v5.e;
6840− var rRight = _v6.e;
6841− if (clr.$ === 'Black') {
6843− $elm$core$Dict$RBNode_elm_builtin,
6844− $elm$core$Dict$Black,
6847− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6848− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
6851− $elm$core$Dict$RBNode_elm_builtin,
6852− $elm$core$Dict$Black,
6855− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6856− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight));
6863−var $elm$core$Dict$removeHelpPrepEQGT = F7(
6864− function (targetKey, dict, color, key, value, left, right) {
6865− if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {
6869− var lLeft = left.d;
6870− var lRight = left.e;
6872− $elm$core$Dict$RBNode_elm_builtin,
6877− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right));
6881− if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) {
6882− if (right.d.$ === 'RBNode_elm_builtin') {
6883− if (right.d.a.$ === 'Black') {
6887− return $elm$core$Dict$moveRedRight(dict);
6894− return $elm$core$Dict$moveRedRight(dict);
6903−var $elm$core$Dict$removeMin = function (dict) {
6904− if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {
6905− var color = dict.a;
6907− var value = dict.c;
6909− var lColor = left.a;
6910− var lLeft = left.d;
6911− var right = dict.e;
6912− if (lColor.$ === 'Black') {
6913− if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {
6916− $elm$core$Dict$RBNode_elm_builtin,
6920− $elm$core$Dict$removeMin(left),
6923− var _v4 = $elm$core$Dict$moveRedLeft(dict);
6924− if (_v4.$ === 'RBNode_elm_builtin') {
6925− var nColor = _v4.a;
6927− var nValue = _v4.c;
6929− var nRight = _v4.e;
6931− $elm$core$Dict$balance,
6935− $elm$core$Dict$removeMin(nLeft),
6938− return $elm$core$Dict$RBEmpty_elm_builtin;
6943− $elm$core$Dict$RBNode_elm_builtin,
6947− $elm$core$Dict$removeMin(left),
6951− return $elm$core$Dict$RBEmpty_elm_builtin;
6954−var $elm$core$Dict$removeHelp = F2(
6955− function (targetKey, dict) {
6956− if (dict.$ === 'RBEmpty_elm_builtin') {
6957− return $elm$core$Dict$RBEmpty_elm_builtin;
6959− var color = dict.a;
6961− var value = dict.c;
6963− var right = dict.e;
6964− if (_Utils_cmp(targetKey, key) < 0) {
6965− if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) {
6967− var lLeft = left.d;
6968− if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {
6971− $elm$core$Dict$RBNode_elm_builtin,
6975− A2($elm$core$Dict$removeHelp, targetKey, left),
6978− var _v7 = $elm$core$Dict$moveRedLeft(dict);
6979− if (_v7.$ === 'RBNode_elm_builtin') {
6980− var nColor = _v7.a;
6982− var nValue = _v7.c;
6984− var nRight = _v7.e;
6986− $elm$core$Dict$balance,
6990− A2($elm$core$Dict$removeHelp, targetKey, nLeft),
6993− return $elm$core$Dict$RBEmpty_elm_builtin;
6998− $elm$core$Dict$RBNode_elm_builtin,
7002− A2($elm$core$Dict$removeHelp, targetKey, left),
7007− $elm$core$Dict$removeHelpEQGT,
7009− A7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));
7013−var $elm$core$Dict$removeHelpEQGT = F2(
7014− function (targetKey, dict) {
7015− if (dict.$ === 'RBNode_elm_builtin') {
7016− var color = dict.a;
7018− var value = dict.c;
7020− var right = dict.e;
7021− if (_Utils_eq(targetKey, key)) {
7022− var _v1 = $elm$core$Dict$getMin(right);
7023− if (_v1.$ === 'RBNode_elm_builtin') {
7024− var minKey = _v1.b;
7025− var minValue = _v1.c;
7027− $elm$core$Dict$balance,
7032− $elm$core$Dict$removeMin(right));
7034− return $elm$core$Dict$RBEmpty_elm_builtin;
7038− $elm$core$Dict$balance,
7043− A2($elm$core$Dict$removeHelp, targetKey, right));
7046− return $elm$core$Dict$RBEmpty_elm_builtin;
7049−var $elm$core$Dict$remove = F2(
7050− function (key, dict) {
7051− var _v0 = A2($elm$core$Dict$removeHelp, key, dict);
7052− if ((_v0.$ === 'RBNode_elm_builtin') && (_v0.a.$ === 'Red')) {
7058− return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);
7064−var $elm$core$Dict$update = F3(
7065− function (targetKey, alter, dictionary) {
7067− A2($elm$core$Dict$get, targetKey, dictionary));
7068− if (_v0.$ === 'Just') {
7070− return A3($elm$core$Dict$insert, targetKey, value, dictionary);
7072− return A2($elm$core$Dict$remove, targetKey, dictionary);
7075−var $elm$core$Basics$composeR = F3(
7076− function (f, g, x) {
7080−var $lynxjs_elm$http$Http$expectStringResponse = F2(
7081− function (toMsg, toResult) {
7085− $elm$core$Basics$identity,
7086− A2($elm$core$Basics$composeR, toResult, toMsg));
7088−var $elm$core$Result$mapError = F2(
7089− function (f, result) {
7090− if (result.$ === 'Ok') {
7092− return $elm$core$Result$Ok(v);
7095− return $elm$core$Result$Err(
7099−var $lynxjs_elm$http$Http$BadBody = function (a) {
7100− return {$: 'BadBody', a: a};
7102−var $lynxjs_elm$http$Http$BadStatus = function (a) {
7103− return {$: 'BadStatus', a: a};
7105−var $lynxjs_elm$http$Http$BadUrl = function (a) {
7106− return {$: 'BadUrl', a: a};
7108−var $lynxjs_elm$http$Http$NetworkError = {$: 'NetworkError'};
7109−var $lynxjs_elm$http$Http$Timeout = {$: 'Timeout'};
7110−var $lynxjs_elm$http$Http$resolve = F2(
7111− function (toResult, response) {
7112− switch (response.$) {
7114− var url = response.a;
7115− return $elm$core$Result$Err(
7116− $lynxjs_elm$http$Http$BadUrl(url));
7118− return $elm$core$Result$Err($lynxjs_elm$http$Http$Timeout);
7119− case 'NetworkError_':
7120− return $elm$core$Result$Err($lynxjs_elm$http$Http$NetworkError);
7122− var metadata = response.a;
7123− return $elm$core$Result$Err(
7124− $lynxjs_elm$http$Http$BadStatus(metadata.statusCode));
7126− var body = response.b;
7128− $elm$core$Result$mapError,
7129− $lynxjs_elm$http$Http$BadBody,
7133−var $lynxjs_elm$http$Http$expectJson = F2(
7134− function (toMsg, decoder) {
7136− $lynxjs_elm$http$Http$expectStringResponse,
7138− $lynxjs_elm$http$Http$resolve(
7139− function (string) {
7141− $elm$core$Result$mapError,
7142− $elm$json$Json$Decode$errorToString,
7143− A2($elm$json$Json$Decode$decodeString, decoder, string));
7146−var $elm$json$Json$Decode$field = _Json_decodeField;
7147−var $lynxjs_elm$http$Http$Header = F2(
7149− return {$: 'Header', a: a, b: b};
7151−var $lynxjs_elm$http$Http$header = $lynxjs_elm$http$Http$Header;
7152−var $lynxjs_elm$http$Http$jsonBody = function (value) {
7155− 'application/json',
7156− A2($elm$json$Json$Encode$encode, 0, value));
7158−var $elm$json$Json$Encode$list = F2(
7159− function (func, entries) {
7162− $elm$core$List$foldl,
7163− _Json_addEntry(func),
7164− _Json_emptyArray(_Utils_Tuple0),
7167−var $elm$json$Json$Encode$object = function (pairs) {
7170− $elm$core$List$foldl,
7172− function (_v0, obj) {
7175− return A3(_Json_addField, k, v, obj);
7177− _Json_emptyObject(_Utils_Tuple0),
7180−var $lynxjs_elm$http$Http$Request = function (a) {
7181− return {$: 'Request', a: a};
7183−var $lynxjs_elm$http$Http$State = F2(
7184− function (reqs, subs) {
7185− return {reqs: reqs, subs: subs};
7187−var $lynxjs_elm$http$Http$init = $elm$core$Task$succeed(
7188− A2($lynxjs_elm$http$Http$State, $elm$core$Dict$empty, _List_Nil));
7189−var $lynxjs_elm$http$Http$updateReqs = F3(
7190− function (router, cmds, reqs) {
7194− return $elm$core$Task$succeed(reqs);
7197− var otherCmds = cmds.b;
7198− if (cmd.$ === 'Cancel') {
7199− var tracker = cmd.a;
7200− var _v2 = A2($elm$core$Dict$get, tracker, reqs);
7201− if (_v2.$ === 'Nothing') {
7202− var $temp$router = router,
7203− $temp$cmds = otherCmds,
7205− router = $temp$router;
7208− continue updateReqs;
7212− $elm$core$Task$andThen,
7215− $lynxjs_elm$http$Http$updateReqs,
7218− A2($elm$core$Dict$remove, tracker, reqs));
7220− $elm$core$Process$kill(pid));
7225− $elm$core$Task$andThen,
7227− var _v4 = req.tracker;
7228− if (_v4.$ === 'Nothing') {
7229− return A3($lynxjs_elm$http$Http$updateReqs, router, otherCmds, reqs);
7231− var tracker = _v4.a;
7233− $lynxjs_elm$http$Http$updateReqs,
7236− A3($elm$core$Dict$insert, tracker, pid, reqs));
7239− $elm$core$Process$spawn(
7243− $elm$core$Platform$sendToApp(router),
7249−var $lynxjs_elm$http$Http$onEffects = F4(
7250− function (router, cmds, subs, state) {
7252− $elm$core$Task$andThen,
7254− return $elm$core$Task$succeed(
7255− A2($lynxjs_elm$http$Http$State, reqs, subs));
7257− A3($lynxjs_elm$http$Http$updateReqs, router, cmds, state.reqs));
7259−var $elm$core$List$maybeCons = F3(
7260− function (f, mx, xs) {
7262− if (_v0.$ === 'Just') {
7264− return A2($elm$core$List$cons, x, xs);
7269−var $elm$core$List$filterMap = F2(
7272− $elm$core$List$foldr,
7273− $elm$core$List$maybeCons(f),
7277−var $lynxjs_elm$http$Http$maybeSend = F4(
7278− function (router, desiredTracker, progress, _v0) {
7279− var actualTracker = _v0.a;
7281− return _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just(
7283− $elm$core$Platform$sendToApp,
7285− toMsg(progress))) : $elm$core$Maybe$Nothing;
7287−var $lynxjs_elm$http$Http$onSelfMsg = F3(
7288− function (router, _v0, state) {
7289− var tracker = _v0.a;
7290− var progress = _v0.b;
7292− $elm$core$Task$andThen,
7294− return $elm$core$Task$succeed(state);
7296− $elm$core$Task$sequence(
7298− $elm$core$List$filterMap,
7299− A3($lynxjs_elm$http$Http$maybeSend, router, tracker, progress),
7302−var $lynxjs_elm$http$Http$Cancel = function (a) {
7303− return {$: 'Cancel', a: a};
7305−var $lynxjs_elm$http$Http$cmdMap = F2(
7306− function (func, cmd) {
7307− if (cmd.$ === 'Cancel') {
7308− var tracker = cmd.a;
7309− return $lynxjs_elm$http$Http$Cancel(tracker);
7312− return $lynxjs_elm$http$Http$Request(
7314− allowCookiesFromOtherDomains: r.allowCookiesFromOtherDomains,
7316− expect: A2(_Http_mapExpect, func, r.expect),
7317− headers: r.headers,
7319− timeout: r.timeout,
7320− tracker: r.tracker,
7325−var $lynxjs_elm$http$Http$MySub = F2(
7327− return {$: 'MySub', a: a, b: b};
7329−var $lynxjs_elm$http$Http$subMap = F2(
7330− function (func, _v0) {
7331− var tracker = _v0.a;
7334− $lynxjs_elm$http$Http$MySub,
7336− A2($elm$core$Basics$composeR, toMsg, func));
7338−_Platform_effectManagers['Http'] = _Platform_createManager($lynxjs_elm$http$Http$init, $lynxjs_elm$http$Http$onEffects, $lynxjs_elm$http$Http$onSelfMsg, $lynxjs_elm$http$Http$cmdMap, $lynxjs_elm$http$Http$subMap);
7339−var $lynxjs_elm$http$Http$command = _Platform_leaf('Http');
7340−var $lynxjs_elm$http$Http$subscription = _Platform_leaf('Http');
7341−var $lynxjs_elm$http$Http$request = function (r) {
7342− return $lynxjs_elm$http$Http$command(
7343− $lynxjs_elm$http$Http$Request(
7344− {allowCookiesFromOtherDomains: false, body: r.body, expect: r.expect, headers: r.headers, method: r.method, timeout: r.timeout, tracker: r.tracker, url: r.url}));
7346−var $elm$json$Json$Encode$string = _Json_wrap;
7347−var $author$project$Main$ackMessages = F3(
7348− function (serverUrl, token, messageIds) {
7349− return $lynxjs_elm$http$Http$request(
7351− body: $lynxjs_elm$http$Http$jsonBody(
7352− $elm$json$Json$Encode$object(
7357− A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, messageIds))
7360− $lynxjs_elm$http$Http$expectJson,
7361− $author$project$Main$GotAck,
7362− A2($elm$json$Json$Decode$field, 'ok', $elm$json$Json$Decode$bool)),
7363− headers: _List_fromArray(
7365− A2($lynxjs_elm$http$Http$header, 'Authorization', 'Bearer ' + token)
7368− timeout: $elm$core$Maybe$Just(5000),
7369− tracker: $elm$core$Maybe$Nothing,
7370− url: serverUrl + '/messages/ack'
7373−var $lynxjs_elm$crypto$Crypto$X25519$getPublicKey = _Crypto_x25519GetPublicKey;
7374−var $lynxjs_elm$crypto$Crypto$X25519$getSharedSecret = _Crypto_x25519GetSharedSecret;
7375−var $lynxjs_elm$crypto$Crypto$Cipher$keyFromHex = _Crypto_cipherKeyFromHex;
7376−var $lynxjs_elm$crypto$Crypto$Cipher$nonce24FromHex = _Crypto_cipherNonce24FromHex;
7377−var $lynxjs_elm$crypto$Crypto$X25519$privateKeyFromHex = _Crypto_x25519PrivateKeyFromHex;
7378−var $lynxjs_elm$crypto$Crypto$X25519$publicKeyFromHex = _Crypto_x25519PublicKeyFromHex;
7379−var $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex = _Crypto_ed25519PublicKeyToHex;
7380−var $lynxjs_elm$crypto$Crypto$X25519$publicKeyToHex = _Crypto_x25519PublicKeyToHex;
7381−var $lynxjs_elm$crypto$Crypto$Ed25519$sign = _Crypto_ed25519Sign;
7382−var $lynxjs_elm$crypto$Crypto$Ed25519$signatureToHex = _Crypto_ed25519SignatureToHex;
7383−var $elm$core$Basics$modBy = _Basics_modBy;
7384−var $author$project$Main$nibbleToHex = function (n) {
7387− return _Utils_chr('0');
7389− return _Utils_chr('1');
7391− return _Utils_chr('2');
7393− return _Utils_chr('3');
7395− return _Utils_chr('4');
7397− return _Utils_chr('5');
7399− return _Utils_chr('6');
7401− return _Utils_chr('7');
7403− return _Utils_chr('8');
7405− return _Utils_chr('9');
7407− return _Utils_chr('a');
7409− return _Utils_chr('b');
7411− return _Utils_chr('c');
7413− return _Utils_chr('d');
7415− return _Utils_chr('e');
7417− return _Utils_chr('f');
7420−var $author$project$Main$charToHexBytes = function (c) {
7421− var code = $elm$core$Char$toCode(c);
7423− return _List_fromArray(
7425− $author$project$Main$nibbleToHex((code / 16) | 0),
7426− $author$project$Main$nibbleToHex(
7427− A2($elm$core$Basics$modBy, 16, code))
7431− var b2 = 128 + A2($elm$core$Basics$modBy, 64, code);
7432− var b1 = 192 + ((code / 64) | 0);
7433− return _List_fromArray(
7435− $author$project$Main$nibbleToHex((b1 / 16) | 0),
7436− $author$project$Main$nibbleToHex(
7437− A2($elm$core$Basics$modBy, 16, b1)),
7438− $author$project$Main$nibbleToHex((b2 / 16) | 0),
7439− $author$project$Main$nibbleToHex(
7440− A2($elm$core$Basics$modBy, 16, b2))
7443− var b3 = 128 + A2($elm$core$Basics$modBy, 64, code);
7444− var b2 = 128 + A2($elm$core$Basics$modBy, 64, (code / 64) | 0);
7445− var b1 = 224 + ((code / 4096) | 0);
7446− return _List_fromArray(
7448− $author$project$Main$nibbleToHex((b1 / 16) | 0),
7449− $author$project$Main$nibbleToHex(
7450− A2($elm$core$Basics$modBy, 16, b1)),
7451− $author$project$Main$nibbleToHex((b2 / 16) | 0),
7452− $author$project$Main$nibbleToHex(
7453− A2($elm$core$Basics$modBy, 16, b2)),
7454− $author$project$Main$nibbleToHex((b3 / 16) | 0),
7455− $author$project$Main$nibbleToHex(
7456− A2($elm$core$Basics$modBy, 16, b3))
7461−var $elm$core$List$append = F2(
7462− function (xs, ys) {
7466− return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs);
7469−var $elm$core$List$concat = function (lists) {
7470− return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists);
7472−var $elm$core$List$concatMap = F2(
7473− function (f, list) {
7474− return $elm$core$List$concat(
7475− A2($elm$core$List$map, f, list));
7477−var $elm$core$String$foldr = _String_foldr;
7478−var $elm$core$String$toList = function (string) {
7479− return A3($elm$core$String$foldr, $elm$core$List$cons, _List_Nil, string);
7481−var $author$project$Main$textToHex = function (str) {
7482− return $elm$core$String$fromList(
7484− $elm$core$List$concatMap,
7485− $author$project$Main$charToHexBytes,
7486− $elm$core$String$toList(str)));
7488−var $lynxjs_elm$crypto$Crypto$Cipher$xchacha20Encrypt = _Crypto_xchacha20Encrypt;
7489−var $author$project$Main$encryptMessage = F6(
7490− function (edPriv, edPub, recipientXPubHex, ephSeedHex, nonceHex, plaintextJson) {
7491− var _v0 = _Utils_Tuple3(
7492− $lynxjs_elm$crypto$Crypto$X25519$privateKeyFromHex(ephSeedHex),
7493− $lynxjs_elm$crypto$Crypto$X25519$publicKeyFromHex(recipientXPubHex),
7494− $lynxjs_elm$crypto$Crypto$Cipher$nonce24FromHex(nonceHex));
7495− if (((_v0.a.$ === 'Just') && (_v0.b.$ === 'Just')) && (_v0.c.$ === 'Just')) {
7496− var ephPriv = _v0.a.a;
7497− var recipientXPub = _v0.b.a;
7498− var nonce = _v0.c.a;
7499− var sharedSecretHex = A2($lynxjs_elm$crypto$Crypto$X25519$getSharedSecret, ephPriv, recipientXPub);
7500− var ephPub = $lynxjs_elm$crypto$Crypto$X25519$getPublicKey(ephPriv);
7501− var ephPubHex = $lynxjs_elm$crypto$Crypto$X25519$publicKeyToHex(ephPub);
7502− var _v1 = $lynxjs_elm$crypto$Crypto$Cipher$keyFromHex(sharedSecretHex);
7503− if (_v1.$ === 'Just') {
7505− var senderPubHex = $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(edPub);
7506− var plaintextHex = $author$project$Main$textToHex(plaintextJson);
7507− var ciphertextHex = A3($lynxjs_elm$crypto$Crypto$Cipher$xchacha20Encrypt, key, nonce, plaintextHex);
7508− var sig = A2($lynxjs_elm$crypto$Crypto$Ed25519$sign, ciphertextHex, edPriv);
7509− var sigHex = $lynxjs_elm$crypto$Crypto$Ed25519$signatureToHex(sig);
7510− return $elm$core$Maybe$Just(
7517− _Utils_ap(senderPubHex, sigHex)))));
7519− return $elm$core$Maybe$Nothing;
7522− return $elm$core$Maybe$Nothing;
7525−var $lynxjs_elm$crypto$Crypto$Ed25519$getPublicKey = _Crypto_ed25519GetPublicKey;
7526−var $author$project$Main$httpErrorToString = function (err) {
7530− return 'Bad URL: ' + url;
7532− return 'Request timed out';
7533− case 'NetworkError':
7534− return 'Network error';
7537− return 'Server error: ' + $elm$core$String$fromInt(code);
7540− return 'Bad response: ' + msg_;
7543−var $elm$json$Json$Encode$int = _Json_wrap;
7544−var $elm$core$List$isEmpty = function (xs) {
7551−var $elm$core$String$isEmpty = function (string) {
7552− return string === '';
7554−var $elm$core$String$slice = _String_slice;
7555−var $elm$core$String$left = F2(
7556− function (n, string) {
7557− return (n < 1) ? '' : A3($elm$core$String$slice, 0, n, string);
7559−var $author$project$Main$GotLookup = function (a) {
7560− return {$: 'GotLookup', a: a};
7562−var $lynxjs_elm$http$Http$emptyBody = _Http_emptyBody;
7563−var $lynxjs_elm$http$Http$get = function (r) {
7564− return $lynxjs_elm$http$Http$request(
7565− {body: $lynxjs_elm$http$Http$emptyBody, expect: r.expect, headers: _List_Nil, method: 'GET', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url});
7567−var $author$project$Main$LookupResponse = F2(
7568− function (pubkey, online) {
7569− return {online: online, pubkey: pubkey};
7571−var $author$project$Main$lookupDecoder = function (pubkey) {
7573− $elm$json$Json$Decode$map,
7574− $author$project$Main$LookupResponse(pubkey),
7575− A2($elm$json$Json$Decode$field, 'online', $elm$json$Json$Decode$bool));
7577−var $author$project$Main$lookupPresence = F2(
7578− function (serverUrl, pubkey) {
7579− return $lynxjs_elm$http$Http$get(
7582− $lynxjs_elm$http$Http$expectJson,
7583− $author$project$Main$GotLookup,
7584− $author$project$Main$lookupDecoder(pubkey)),
7585− url: serverUrl + ('/lookup/' + pubkey)
7588−var $elm$core$Maybe$map = F2(
7589− function (f, maybe) {
7590− if (maybe.$ === 'Just') {
7591− var value = maybe.a;
7592− return $elm$core$Maybe$Just(
7595− return $elm$core$Maybe$Nothing;
7598−var $elm$core$Platform$Cmd$batch = _Platform_batch;
7599−var $elm$core$Platform$Cmd$none = $elm$core$Platform$Cmd$batch(_List_Nil);
7600−var $elm$core$String$length = _String_length;
7601−var $author$project$Main$parseIdentity = function (str) {
7602− var _v0 = A2($elm$core$String$split, '.', str);
7603− if ((_v0.b && _v0.b.b) && (!_v0.b.b.b)) {
7607− return (($elm$core$String$length(edHex) === 64) && ($elm$core$String$length(xHex) === 64)) ? $elm$core$Maybe$Just(
7608− _Utils_Tuple2(edHex, xHex)) : $elm$core$Maybe$Nothing;
7610− return $elm$core$Maybe$Nothing;
7613−var $author$project$Main$GotPoll = function (a) {
7614− return {$: 'GotPoll', a: a};
7616−var $author$project$Main$PollResponse = F2(
7617− function (events, cursor) {
7618− return {cursor: cursor, events: events};
7620−var $elm$json$Json$Decode$list = _Json_decodeList;
7621−var $author$project$Main$PollEvent = F3(
7622− function (id, eventType, payload) {
7623− return {eventType: eventType, id: id, payload: payload};
7625−var $elm$json$Json$Decode$map3 = _Json_map3;
7626−var $elm$json$Json$Decode$string = _Json_decodeString;
7627−var $author$project$Main$pollEventDecoder = A4(
7628− $elm$json$Json$Decode$map3,
7629− $author$project$Main$PollEvent,
7630− A2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$string),
7631− A2($elm$json$Json$Decode$field, 'eventType', $elm$json$Json$Decode$string),
7632− A2($elm$json$Json$Decode$field, 'payload', $elm$json$Json$Decode$string));
7633−var $author$project$Main$pollDecoder = A3(
7634− $elm$json$Json$Decode$map2,
7635− $author$project$Main$PollResponse,
7637− $elm$json$Json$Decode$field,
7639− $elm$json$Json$Decode$list($author$project$Main$pollEventDecoder)),
7640− A2($elm$json$Json$Decode$field, 'cursor', $elm$json$Json$Decode$string));
7641−var $author$project$Main$pollMessages = F2(
7642− function (serverUrl, token) {
7643− return $lynxjs_elm$http$Http$request(
7645− body: $lynxjs_elm$http$Http$emptyBody,
7646− expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotPoll, $author$project$Main$pollDecoder),
7647− headers: _List_fromArray(
7649− A2($lynxjs_elm$http$Http$header, 'Authorization', 'Bearer ' + token)
7652− timeout: $elm$core$Maybe$Just(10000),
7653− tracker: $elm$core$Maybe$Nothing,
7654− url: serverUrl + '/poll'
7657−var $lynxjs_elm$crypto$Crypto$Ed25519$privateKeyFromHex = _Crypto_ed25519PrivateKeyFromHex;
7658−var $elm$core$Basics$ge = _Utils_ge;
7659−var $author$project$Main$decodeUtf8Help = F2(
7660− function (bytes, acc) {
7664− return $elm$core$Maybe$Just(acc);
7667− var rest = bytes.b;
7669− var $temp$bytes = rest,
7671− $elm$core$List$cons,
7672− $elm$core$Char$fromCode(b),
7674− bytes = $temp$bytes;
7676− continue decodeUtf8Help;
7678− if ((b >= 192) && (b < 224)) {
7681− var rest2 = rest.b;
7682− var code = ((b - 192) * 64) + (b2 - 128);
7683− var $temp$bytes = rest2,
7685− $elm$core$List$cons,
7686− $elm$core$Char$fromCode(code),
7688− bytes = $temp$bytes;
7690− continue decodeUtf8Help;
7692− return $elm$core$Maybe$Nothing;
7695− if ((b >= 224) && (b < 240)) {
7696− if (rest.b && rest.b.b) {
7701− var code = (((b - 224) * 4096) + ((b2 - 128) * 64)) + (b3 - 128);
7702− var $temp$bytes = rest3,
7704− $elm$core$List$cons,
7705− $elm$core$Char$fromCode(code),
7707− bytes = $temp$bytes;
7709− continue decodeUtf8Help;
7711− return $elm$core$Maybe$Nothing;
7715− if ((rest.b && rest.b.b) && rest.b.b.b) {
7722− var code = ((((b - 240) * 262144) + ((b2 - 128) * 4096)) + ((b3 - 128) * 64)) + (b4 - 128);
7723− var $temp$bytes = rest4,
7725− $elm$core$List$cons,
7726− $elm$core$Char$fromCode(code),
7728− bytes = $temp$bytes;
7730− continue decodeUtf8Help;
7732− return $elm$core$Maybe$Nothing;
7735− return $elm$core$Maybe$Nothing;
7743−var $author$project$Main$decodeUtf8Bytes = function (bytes) {
7745− $elm$core$Maybe$map,
7746− A2($elm$core$Basics$composeR, $elm$core$List$reverse, $elm$core$String$fromList),
7747− A2($author$project$Main$decodeUtf8Help, bytes, _List_Nil));
7749−var $author$project$Main$hexCharToInt = function (c) {
7750− var code = $elm$core$Char$toCode(c);
7751− return ((code >= 48) && (code <= 57)) ? $elm$core$Maybe$Just(code - 48) : (((code >= 97) && (code <= 102)) ? $elm$core$Maybe$Just(code - 87) : (((code >= 65) && (code <= 70)) ? $elm$core$Maybe$Just(code - 55) : $elm$core$Maybe$Nothing));
7753−var $elm$core$Maybe$map2 = F3(
7754− function (func, ma, mb) {
7755− if (ma.$ === 'Nothing') {
7756− return $elm$core$Maybe$Nothing;
7759− if (mb.$ === 'Nothing') {
7760− return $elm$core$Maybe$Nothing;
7763− return $elm$core$Maybe$Just(
7768−var $author$project$Main$pairUp = function (list) {
7769− if (list.b && list.b.b) {
7775− $elm$core$List$cons,
7776− _Utils_Tuple2(a, b),
7777− $author$project$Main$pairUp(rest));
7782−var $author$project$Main$hexToBytes = function (hex) {
7783− var chars = $elm$core$String$toList(hex);
7784− var pairs = $author$project$Main$pairUp(chars);
7786− $elm$core$List$filterMap,
7791− $elm$core$Maybe$map2,
7794− return (h * 16) + l;
7796− $author$project$Main$hexCharToInt(hi),
7797− $author$project$Main$hexCharToInt(lo));
7801−var $elm$core$Maybe$withDefault = F2(
7802− function (_default, maybe) {
7803− if (maybe.$ === 'Just') {
7804− var value = maybe.a;
7810−var $author$project$Main$hexToText = function (hex) {
7812− $elm$core$Maybe$withDefault,
7814− $author$project$Main$decodeUtf8Bytes(
7815− $author$project$Main$hexToBytes(hex)));
7817−var $elm$core$Basics$not = _Basics_not;
7818−var $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyFromHex = _Crypto_ed25519PublicKeyFromHex;
7819−var $lynxjs_elm$crypto$Crypto$Ed25519$signatureFromHex = _Crypto_ed25519SignatureFromHex;
7820−var $lynxjs_elm$crypto$Crypto$Ed25519$verify = _Crypto_ed25519Verify;
7821−var $lynxjs_elm$crypto$Crypto$Cipher$xchacha20Decrypt = _Crypto_xchacha20Decrypt;
7822−var $author$project$Main$decryptMessage = F2(
7823− function (xPriv, blob) {
7824− var hexLen = $elm$core$String$length(blob);
7825− if (hexLen < 304) {
7826− return $elm$core$Maybe$Nothing;
7828− var sigHex = A3($elm$core$String$slice, hexLen - 128, hexLen, blob);
7829− var senderEdPubHex = A3($elm$core$String$slice, hexLen - 192, hexLen - 128, blob);
7830− var nonceHex = A3($elm$core$String$slice, 64, 112, blob);
7831− var ephPubHex = A3($elm$core$String$slice, 0, 64, blob);
7832− var ciphertextHex = A3($elm$core$String$slice, 112, hexLen - 192, blob);
7833− var _v0 = _Utils_Tuple2(
7834− $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyFromHex(senderEdPubHex),
7835− $lynxjs_elm$crypto$Crypto$Ed25519$signatureFromHex(sigHex));
7836− if ((_v0.a.$ === 'Just') && (_v0.b.$ === 'Just')) {
7837− var senderEdPub = _v0.a.a;
7839− if (!A3($lynxjs_elm$crypto$Crypto$Ed25519$verify, sig, ciphertextHex, senderEdPub)) {
7840− return $elm$core$Maybe$Nothing;
7842− var _v1 = _Utils_Tuple2(
7843− $lynxjs_elm$crypto$Crypto$X25519$publicKeyFromHex(ephPubHex),
7844− $lynxjs_elm$crypto$Crypto$Cipher$nonce24FromHex(nonceHex));
7845− if ((_v1.a.$ === 'Just') && (_v1.b.$ === 'Just')) {
7846− var ephPub = _v1.a.a;
7847− var nonce = _v1.b.a;
7848− var sharedSecretHex = A2($lynxjs_elm$crypto$Crypto$X25519$getSharedSecret, xPriv, ephPub);
7849− var _v2 = $lynxjs_elm$crypto$Crypto$Cipher$keyFromHex(sharedSecretHex);
7850− if (_v2.$ === 'Just') {
7852− var _v3 = A3($lynxjs_elm$crypto$Crypto$Cipher$xchacha20Decrypt, key, nonce, ciphertextHex);
7853− if (_v3.$ === 'Just') {
7854− var plaintextHex = _v3.a;
7855− return $elm$core$Maybe$Just(
7858− $author$project$Main$hexToText(plaintextHex)));
7860− return $elm$core$Maybe$Nothing;
7863− return $elm$core$Maybe$Nothing;
7866− return $elm$core$Maybe$Nothing;
7870− return $elm$core$Maybe$Nothing;
7874−var $author$project$Main$Envelope = F4(
7875− function (toKey, fromKey, encryptedBlob, timestamp) {
7876− return {encryptedBlob: encryptedBlob, fromKey: fromKey, timestamp: timestamp, toKey: toKey};
7878−var $elm$json$Json$Decode$int = _Json_decodeInt;
7879−var $elm$json$Json$Decode$map4 = _Json_map4;
7880−var $author$project$Main$envelopeDecoder = A5(
7881− $elm$json$Json$Decode$map4,
7882− $author$project$Main$Envelope,
7883− A2($elm$json$Json$Decode$field, 'toKey', $elm$json$Json$Decode$string),
7884− A2($elm$json$Json$Decode$field, 'fromKey', $elm$json$Json$Decode$string),
7885− A2($elm$json$Json$Decode$field, 'encryptedBlob', $elm$json$Json$Decode$string),
7886− A2($elm$json$Json$Decode$field, 'timestamp', $elm$json$Json$Decode$int));
7887−var $elm$core$Set$insert = F2(
7888− function (key, _v0) {
7890− return $elm$core$Set$Set_elm_builtin(
7891− A3($elm$core$Dict$insert, key, _Utils_Tuple0, dict));
7893−var $elm$core$Dict$member = F2(
7894− function (key, dict) {
7895− var _v0 = A2($elm$core$Dict$get, key, dict);
7896− if (_v0.$ === 'Just') {
7902−var $elm$core$Set$member = F2(
7903− function (key, _v0) {
7905− return A2($elm$core$Dict$member, key, dict);
7907−var $author$project$Main$MessagePayload = F4(
7908− function (type_, id, timestamp, body) {
7909− return {body: body, id: id, timestamp: timestamp, type_: type_};
7911−var $author$project$Main$messagePayloadDecoder = A5(
7912− $elm$json$Json$Decode$map4,
7913− $author$project$Main$MessagePayload,
7914− A2($elm$json$Json$Decode$field, 'type', $elm$json$Json$Decode$string),
7915− A2($elm$json$Json$Decode$field, 'id', $elm$json$Json$Decode$string),
7916− A2($elm$json$Json$Decode$field, 'timestamp', $elm$json$Json$Decode$int),
7917− A2($elm$json$Json$Decode$field, 'body', $elm$json$Json$Decode$string));
7918−var $author$project$Main$processEvents = F4(
7919− function (xPriv, myEdHex, events, seenIds) {
7921− $elm$core$List$foldl,
7923− function (event, _v0) {
7927− if (event.eventType !== 'message') {
7928− return _Utils_Tuple3(msgs, seen, acks);
7930− var _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Main$envelopeDecoder, event.payload);
7931− if (_v1.$ === 'Err') {
7932− return _Utils_Tuple3(
7935− A2($elm$core$List$cons, event.id, acks));
7937− var envelope = _v1.a;
7938− if (_Utils_eq(envelope.fromKey, myEdHex)) {
7939− return _Utils_Tuple3(
7942− A2($elm$core$List$cons, event.id, acks));
7944− var _v2 = A2($author$project$Main$decryptMessage, xPriv, envelope.encryptedBlob);
7945− if (_v2.$ === 'Nothing') {
7946− return _Utils_Tuple3(
7949− A2($elm$core$List$cons, event.id, acks));
7952− var senderPub = _v3.a;
7954− var _v4 = A2($elm$json$Json$Decode$decodeString, $author$project$Main$messagePayloadDecoder, json);
7955− if (_v4.$ === 'Err') {
7956− return _Utils_Tuple3(
7959− A2($elm$core$List$cons, event.id, acks));
7961− var payload = _v4.a;
7962− return A2($elm$core$Set$member, payload.id, seen) ? _Utils_Tuple3(
7965− A2($elm$core$List$cons, event.id, acks)) : _Utils_Tuple3(
7967− $elm$core$List$cons,
7970− {body: payload.body, id: payload.id, outgoing: false, timestamp: payload.timestamp}),
7972− A2($elm$core$Set$insert, payload.id, seen),
7973− A2($elm$core$List$cons, event.id, acks));
7980− _Utils_Tuple3(_List_Nil, seenIds, _List_Nil),
7983−var $author$project$Main$GotChallenge = function (a) {
7984− return {$: 'GotChallenge', a: a};
7986−var $author$project$Main$ChallengeResponse = function (challenge) {
7987− return {challenge: challenge};
7989−var $author$project$Main$challengeDecoder = A2(
7990− $elm$json$Json$Decode$map,
7991− $author$project$Main$ChallengeResponse,
7992− A2($elm$json$Json$Decode$field, 'challenge', $elm$json$Json$Decode$string));
7993−var $lynxjs_elm$http$Http$post = function (r) {
7994− return $lynxjs_elm$http$Http$request(
7995− {body: r.body, expect: r.expect, headers: _List_Nil, method: 'POST', timeout: $elm$core$Maybe$Nothing, tracker: $elm$core$Maybe$Nothing, url: r.url});
7997−var $author$project$Main$requestChallenge = F2(
7998− function (serverUrl, pubkey) {
7999− return $lynxjs_elm$http$Http$post(
8001− body: $lynxjs_elm$http$Http$jsonBody(
8002− $elm$json$Json$Encode$object(
8007− $elm$json$Json$Encode$string(pubkey))
8009− expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotChallenge, $author$project$Main$challengeDecoder),
8010− url: serverUrl + '/auth/challenge'
8013−var $author$project$Main$GotSendResult = function (a) {
8014− return {$: 'GotSendResult', a: a};
8016−var $author$project$Main$SendResponse = F2(
8017− function (status, messageId) {
8018− return {messageId: messageId, status: status};
8020−var $author$project$Main$sendDecoder = A3(
8021− $elm$json$Json$Decode$map2,
8022− $author$project$Main$SendResponse,
8023− A2($elm$json$Json$Decode$field, 'status', $elm$json$Json$Decode$string),
8024− A2($elm$json$Json$Decode$field, 'messageId', $elm$json$Json$Decode$string));
8025−var $author$project$Main$sendMessageHttp = F5(
8026− function (serverUrl, token, to, encryptedBlob, timestamp) {
8027− return $lynxjs_elm$http$Http$request(
8029− body: $lynxjs_elm$http$Http$jsonBody(
8030− $elm$json$Json$Encode$object(
8035− $elm$json$Json$Encode$string(to)),
8038− $elm$json$Json$Encode$string(encryptedBlob)),
8041− $elm$json$Json$Encode$int(timestamp))
8043− expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotSendResult, $author$project$Main$sendDecoder),
8044− headers: _List_fromArray(
8046− A2($lynxjs_elm$http$Http$header, 'Authorization', 'Bearer ' + token)
8049− timeout: $elm$core$Maybe$Just(10000),
8050− tracker: $elm$core$Maybe$Nothing,
8051− url: serverUrl + '/messages/'
8054−var $elm$core$String$trim = _String_trim;
8055−var $author$project$Main$GotVerify = function (a) {
8056− return {$: 'GotVerify', a: a};
8058−var $author$project$Main$VerifyResponse = F2(
8059− function (token, expiresAt) {
8060− return {expiresAt: expiresAt, token: token};
8062−var $author$project$Main$verifyDecoder = A3(
8063− $elm$json$Json$Decode$map2,
8064− $author$project$Main$VerifyResponse,
8065− A2($elm$json$Json$Decode$field, 'token', $elm$json$Json$Decode$string),
8066− A2($elm$json$Json$Decode$field, 'expiresAt', $elm$json$Json$Decode$int));
8067−var $author$project$Main$verifyAuth = F4(
8068− function (serverUrl, pubkey, challenge, signature) {
8069− return $lynxjs_elm$http$Http$post(
8071− body: $lynxjs_elm$http$Http$jsonBody(
8072− $elm$json$Json$Encode$object(
8077− $elm$json$Json$Encode$string(pubkey)),
8080− $elm$json$Json$Encode$string(challenge)),
8083− $elm$json$Json$Encode$string(signature))
8085− expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotVerify, $author$project$Main$verifyDecoder),
8086− url: serverUrl + '/auth/verify'
8089−var $author$project$Main$update = F2(
8090− function (msg, model) {
8093− var seedHex = msg.a;
8094− var xPriv = $lynxjs_elm$crypto$Crypto$X25519$privateKeyFromHex(seedHex);
8095− var edPriv = $lynxjs_elm$crypto$Crypto$Ed25519$privateKeyFromHex(seedHex);
8096− return _Utils_Tuple2(
8101− edPub: A2($elm$core$Maybe$map, $lynxjs_elm$crypto$Crypto$Ed25519$getPublicKey, edPriv),
8103− xPub: A2($elm$core$Maybe$map, $lynxjs_elm$crypto$Crypto$X25519$getPublicKey, xPriv)
8105− $elm$core$Platform$Cmd$none);
8108− return _Utils_Tuple2(
8112− currentTime: ($elm$time$Time$posixToMillis(posix) / 1000) | 0
8114− $elm$core$Platform$Cmd$none);
8116− var _v1 = model.edPub;
8117− if (_v1.$ === 'Just') {
8119− return _Utils_Tuple2(
8122− {connecting: true, error: $elm$core$Maybe$Nothing}),
8124− $author$project$Main$requestChallenge,
8126− $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(pub)));
8128− return _Utils_Tuple2(
8132− error: $elm$core$Maybe$Just('No identity keypair')
8134− $elm$core$Platform$Cmd$none);
8136− case 'GotChallenge':
8137− var result = msg.a;
8138− var _v2 = _Utils_Tuple2(result, model.edPriv);
8139− if (_v2.a.$ === 'Ok') {
8140− if (_v2.b.$ === 'Just') {
8141− var resp = _v2.a.a;
8142− var priv = _v2.b.a;
8143− var sig = A2($lynxjs_elm$crypto$Crypto$Ed25519$sign, resp.challenge, priv);
8144− return _Utils_Tuple2(
8147− $author$project$Main$verifyAuth,
8150− $elm$core$Maybe$withDefault,
8152− A2($elm$core$Maybe$map, $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex, model.edPub)),
8154− $lynxjs_elm$crypto$Crypto$Ed25519$signatureToHex(sig)));
8156− return _Utils_Tuple2(
8159− {connecting: false}),
8160− $elm$core$Platform$Cmd$none);
8164− return _Utils_Tuple2(
8169− error: $elm$core$Maybe$Just(
8170− $author$project$Main$httpErrorToString(err))
8172− $elm$core$Platform$Cmd$none);
8175− var result = msg.a;
8176− if (result.$ === 'Ok') {
8177− var resp = result.a;
8178− return (resp.token !== '') ? _Utils_Tuple2(
8181− {authToken: resp.token, connecting: false, screen: $author$project$Main$ContactsScreen}),
8182− $elm$core$Platform$Cmd$none) : _Utils_Tuple2(
8187− error: $elm$core$Maybe$Just('Authentication failed')
8189− $elm$core$Platform$Cmd$none);
8191− var err = result.a;
8192− return _Utils_Tuple2(
8197− error: $elm$core$Maybe$Just(
8198− $author$project$Main$httpErrorToString(err))
8200− $elm$core$Platform$Cmd$none);
8202− case 'PrepareSend':
8203− return $elm$core$String$isEmpty(
8204− $elm$core$String$trim(model.draft)) ? _Utils_Tuple2(model, $elm$core$Platform$Cmd$none) : _Utils_Tuple2(
8209− $elm$random$Random$generate,
8210− $author$project$Main$GotSendEntropy,
8211− $author$project$Main$randomHexString(72)));
8212− case 'GotSendEntropy':
8213− var entropyHex = msg.a;
8214− var _v4 = _Utils_Tuple2(model.edPriv, model.edPub);
8215− if ((_v4.a.$ === 'Just') && (_v4.b.$ === 'Just')) {
8216− var edPriv = _v4.a.a;
8217− var edPub = _v4.b.a;
8218− var recipientEdHex = model.activeChat;
8219− var contact = A2($elm$core$Dict$get, recipientEdHex, model.contacts);
8220− if (contact.$ === 'Just') {
8222− var timestamp = model.currentTime;
8223− var nonceHex = A3($elm$core$String$slice, 96, 144, entropyHex);
8224− var msgId = A2($elm$core$String$left, 32, entropyHex);
8225− var outMsg = {body: model.draft, id: msgId, outgoing: true, timestamp: timestamp};
8226− var plaintextJson = A2(
8227− $elm$json$Json$Encode$encode,
8229− $elm$json$Json$Encode$object(
8234− $elm$json$Json$Encode$string('text')),
8237− $elm$json$Json$Encode$string(msgId)),
8240− $elm$json$Json$Encode$int(timestamp)),
8243− $elm$json$Json$Encode$string(model.draft))
8246− $elm$core$Maybe$withDefault,
8248− A2($elm$core$Dict$get, recipientEdHex, model.messages));
8249− var ephSeedHex = A3($elm$core$String$slice, 32, 96, entropyHex);
8250− var blob = A6($author$project$Main$encryptMessage, edPriv, edPub, c.xPubHex, ephSeedHex, nonceHex, plaintextJson);
8251− if (blob.$ === 'Just') {
8252− var blobHex = blob.a;
8253− return _Utils_Tuple2(
8259− $elm$core$Dict$insert,
8267− A5($author$project$Main$sendMessageHttp, model.serverUrl, model.authToken, recipientEdHex, blobHex, timestamp));
8269− return _Utils_Tuple2(
8273− error: $elm$core$Maybe$Just('Encryption failed'),
8276− $elm$core$Platform$Cmd$none);
8279− return _Utils_Tuple2(
8283− error: $elm$core$Maybe$Just('Contact not found'),
8286− $elm$core$Platform$Cmd$none);
8289− return _Utils_Tuple2(
8293− error: $elm$core$Maybe$Just('No identity'),
8296− $elm$core$Platform$Cmd$none);
8298− case 'GotSendResult':
8299− var result = msg.a;
8300− if (result.$ === 'Ok') {
8301− return _Utils_Tuple2(
8305− $elm$core$Platform$Cmd$none);
8307− var err = result.a;
8308− return _Utils_Tuple2(
8312− error: $elm$core$Maybe$Just(
8313− $author$project$Main$httpErrorToString(err)),
8316− $elm$core$Platform$Cmd$none);
8320− var t = ($elm$time$Time$posixToMillis(posix) / 1000) | 0;
8321− return (model.authToken !== '') ? _Utils_Tuple2(
8325− A2($author$project$Main$pollMessages, model.serverUrl, model.authToken)) : _Utils_Tuple2(
8329− $elm$core$Platform$Cmd$none);
8331− var result = msg.a;
8332− var _v8 = _Utils_Tuple3(result, model.xPriv, model.edPub);
8335− if (_v8.a.$ === 'Ok') {
8336− if ((_v8.b.$ === 'Just') && (_v8.c.$ === 'Just')) {
8337− var resp = _v8.a.a;
8338− var xPriv = _v8.b.a;
8339− var edPub = _v8.c.a;
8340− var myEdHex = $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(edPub);
8341− var _v9 = A4($author$project$Main$processEvents, xPriv, myEdHex, resp.events, model.seenIds);
8342− var newMessages = _v9.a;
8343− var newSeenIds = _v9.b;
8344− var ackIds = _v9.c;
8345− var ackCmd = $elm$core$List$isEmpty(ackIds) ? $elm$core$Platform$Cmd$none : A3($author$project$Main$ackMessages, model.serverUrl, model.authToken, ackIds);
8346− var updatedContacts = A3(
8347− $elm$core$List$foldl,
8349− function (_v11, dict) {
8351− var chatMsg = _v11.b;
8353− $elm$core$Dict$update,
8355− function (existing) {
8356− if (existing.$ === 'Just') {
8357− var c = existing.a;
8358− return $elm$core$Maybe$Just(
8361− {lastMessage: chatMsg.body, lastTime: chatMsg.timestamp}));
8363− return $elm$core$Maybe$Just(
8366− lastMessage: chatMsg.body,
8367− lastTime: chatMsg.timestamp,
8368− name: A2($elm$core$String$left, 8, from) + '...',
8378− var updatedMessages = A3(
8379− $elm$core$List$foldl,
8381− function (_v10, dict) {
8383− var chatMsg = _v10.b;
8385− $elm$core$Maybe$withDefault,
8387− A2($elm$core$Dict$get, from, dict));
8389− $elm$core$Dict$insert,
8399− return _Utils_Tuple2(
8402− {contacts: updatedContacts, messages: updatedMessages, seenIds: newSeenIds}),
8408− if ((_v8.a.a.$ === 'BadStatus') && (_v8.a.a.a === 401)) {
8409− return _Utils_Tuple2(
8414− error: $elm$core$Maybe$Just('Session expired, please reconnect'),
8415− screen: $author$project$Main$SetupScreen
8417− $elm$core$Platform$Cmd$none);
8423− return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8425− return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8427− if ($elm$core$String$isEmpty(model.addIdentity)) {
8428− return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8430− var _v13 = $author$project$Main$parseIdentity(model.addIdentity);
8431− if (_v13.$ === 'Just') {
8433− var edHex = _v14.a;
8435− var name = $elm$core$String$isEmpty(model.addName) ? (A2($elm$core$String$left, 8, edHex) + '...') : model.addName;
8436− var contact = {edPubHex: edHex, lastMessage: '', lastTime: 0, name: name, online: false, xPubHex: xHex};
8437− return _Utils_Tuple2(
8443− contacts: A3($elm$core$Dict$insert, edHex, contact, model.contacts),
8444− screen: $author$project$Main$ContactsScreen
8446− A2($author$project$Main$lookupPresence, model.serverUrl, edHex));
8448− return _Utils_Tuple2(
8452− error: $elm$core$Maybe$Just('Invalid identity. Expected: <ed25519_hex>.<x25519_hex>')
8454− $elm$core$Platform$Cmd$none);
8458− var result = msg.a;
8459− if (result.$ === 'Ok') {
8460− var resp = result.a;
8461− return _Utils_Tuple2(
8466− $elm$core$Dict$update,
8468− $elm$core$Maybe$map(
8470− return _Utils_update(
8472− {online: resp.online});
8476− $elm$core$Platform$Cmd$none);
8478− return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8481− var screen = msg.a;
8482− return _Utils_Tuple2(
8486− $elm$core$Platform$Cmd$none);
8488− var edPubHex = msg.a;
8489− return _Utils_Tuple2(
8492− {activeChat: edPubHex, draft: '', screen: $author$project$Main$ChatScreen}),
8493− $elm$core$Platform$Cmd$none);
8494− case 'UpdateDraft':
8496− return _Utils_Tuple2(
8500− $elm$core$Platform$Cmd$none);
8501− case 'UpdateServerUrl':
8503− return _Utils_Tuple2(
8506− {serverUrl: text}),
8507− $elm$core$Platform$Cmd$none);
8508− case 'UpdateAddIdentity':
8510− return _Utils_Tuple2(
8513− {addIdentity: text}),
8514− $elm$core$Platform$Cmd$none);
8515− case 'UpdateAddName':
8517− return _Utils_Tuple2(
8521− $elm$core$Platform$Cmd$none);
8522− case 'UpdateDisplayName':
8524− return _Utils_Tuple2(
8527− {displayName: text}),
8528− $elm$core$Platform$Cmd$none);
8530− return _Utils_Tuple2(
8533− {error: $elm$core$Maybe$Nothing}),
8534− $elm$core$Platform$Cmd$none);
8537−var $lynxjs_elm$ui$Lynx$Attributes$Column = {$: 'Column'};
8538−var $lynxjs_elm$virtual_dom$VirtualDom$style = _VirtualDom_style;
8539−var $lynxjs_elm$ui$Lynx$Attributes$style = $lynxjs_elm$virtual_dom$VirtualDom$style;
8540−var $lynxjs_elm$ui$Lynx$Attributes$backgroundColor = $lynxjs_elm$ui$Lynx$Attributes$style('backgroundColor');
8541−var $lynxjs_elm$ui$Lynx$Attributes$Center = {$: 'Center'};
8542−var $author$project$Main$DismissError = {$: 'DismissError'};
8543−var $lynxjs_elm$ui$Lynx$Attributes$Row = {$: 'Row'};
8544−var $lynxjs_elm$ui$Lynx$Attributes$alignmentToString = function (a) {
8547− return 'flex-start';
8552− case 'SpaceBetween':
8553− return 'space-between';
8554− case 'SpaceAround':
8555− return 'space-around';
8556− case 'SpaceEvenly':
8557− return 'space-evenly';
8564−var $lynxjs_elm$ui$Lynx$Attributes$alignItems = function (a) {
8566− $lynxjs_elm$ui$Lynx$Attributes$style,
8568− $lynxjs_elm$ui$Lynx$Attributes$alignmentToString(a));
8570−var $lynxjs_elm$ui$Lynx$Attributes$color = $lynxjs_elm$ui$Lynx$Attributes$style('color');
8571−var $lynxjs_elm$ui$Lynx$Attributes$intStyle = F2(
8572− function (key, val) {
8574− $lynxjs_elm$virtual_dom$VirtualDom$style,
8576− $elm$core$String$fromInt(val));
8578−var $lynxjs_elm$ui$Lynx$Attributes$flex = $lynxjs_elm$ui$Lynx$Attributes$intStyle('flex');
8579−var $lynxjs_elm$ui$Lynx$Attributes$flexDirection = function (d) {
8581− $lynxjs_elm$ui$Lynx$Attributes$style,
8590− return 'row-reverse';
8592− return 'column-reverse';
8596−var $lynxjs_elm$ui$Lynx$Attributes$pxStyle = F2(
8597− function (key, val) {
8599− $lynxjs_elm$virtual_dom$VirtualDom$style,
8601− $elm$core$String$fromInt(val) + 'px');
8603−var $lynxjs_elm$ui$Lynx$Attributes$fontSize = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('fontSize');
8604−var $lynxjs_elm$virtual_dom$VirtualDom$Normal = function (a) {
8605− return {$: 'Normal', a: a};
8607−var $lynxjs_elm$virtual_dom$VirtualDom$on = _VirtualDom_on;
8608−var $lynxjs_elm$ui$Lynx$Events$onTap = function (msg) {
8610− $lynxjs_elm$virtual_dom$VirtualDom$on,
8612− $lynxjs_elm$virtual_dom$VirtualDom$Normal(
8613− $elm$json$Json$Decode$succeed(msg)));
8615−var $lynxjs_elm$ui$Lynx$Attributes$paddingBottom = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('paddingBottom');
8616−var $lynxjs_elm$ui$Lynx$Attributes$paddingLeft = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('paddingLeft');
8617−var $lynxjs_elm$ui$Lynx$Attributes$paddingRight = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('paddingRight');
8618−var $lynxjs_elm$ui$Lynx$Attributes$paddingTop = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('paddingTop');
8619−var $lynxjs_elm$virtual_dom$VirtualDom$node = function (tag) {
8620− return _VirtualDom_node(
8621− _VirtualDom_noScript(tag));
8623−var $lynxjs_elm$ui$Lynx$text = $lynxjs_elm$virtual_dom$VirtualDom$node('text');
8624−var $lynxjs_elm$virtual_dom$VirtualDom$text = _VirtualDom_text;
8625−var $lynxjs_elm$ui$Lynx$textContent = $lynxjs_elm$virtual_dom$VirtualDom$text;
8626−var $lynxjs_elm$ui$Lynx$view = $lynxjs_elm$virtual_dom$VirtualDom$node('view');
8627−var $author$project$Main$errorBanner = function (err) {
8629− $lynxjs_elm$ui$Lynx$view,
8632− $lynxjs_elm$ui$Lynx$Events$onTap($author$project$Main$DismissError),
8633− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#3d1114'),
8634− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(10),
8635− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(10),
8636− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(16),
8637− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(16),
8638− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
8639− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center)
8644− $lynxjs_elm$ui$Lynx$text,
8647− $lynxjs_elm$ui$Lynx$Attributes$color('#f85149'),
8648− $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
8649− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
8653− $lynxjs_elm$ui$Lynx$textContent(err)
8656− $lynxjs_elm$ui$Lynx$text,
8659− $lynxjs_elm$ui$Lynx$Attributes$color('#f85149'),
8660− $lynxjs_elm$ui$Lynx$Attributes$fontSize(16)
8664− $lynxjs_elm$ui$Lynx$textContent('x')
8668−var $author$project$Main$AddContact = {$: 'AddContact'};
8669−var $lynxjs_elm$ui$Lynx$Attributes$Bold = {$: 'Bold'};
8670−var $author$project$Main$Navigate = function (a) {
8671− return {$: 'Navigate', a: a};
8673−var $author$project$Main$UpdateAddIdentity = function (a) {
8674− return {$: 'UpdateAddIdentity', a: a};
8676−var $author$project$Main$UpdateAddName = function (a) {
8677− return {$: 'UpdateAddName', a: a};
8679−var $lynxjs_elm$ui$Lynx$Attributes$marginBottom = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('marginBottom');
8680−var $author$project$Main$fieldLabel = function (text) {
8682− $lynxjs_elm$ui$Lynx$text,
8685− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
8686− $lynxjs_elm$ui$Lynx$Attributes$fontSize(13),
8687− $lynxjs_elm$ui$Lynx$Attributes$marginBottom(6)
8691− $lynxjs_elm$ui$Lynx$textContent(text)
8694−var $lynxjs_elm$ui$Lynx$Attributes$fontWeight = function (w) {
8696− $lynxjs_elm$ui$Lynx$Attributes$style,
8699− if (w.$ === 'Normal') {
8706−var $lynxjs_elm$ui$Lynx$Attributes$padding = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('padding');
8707−var $lynxjs_elm$ui$Lynx$Attributes$borderRadius = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('borderRadius');
8708−var $author$project$Main$primaryButton = F2(
8709− function (msg, text) {
8711− $lynxjs_elm$ui$Lynx$view,
8714− $lynxjs_elm$ui$Lynx$Events$onTap(msg),
8715− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#58a6ff'),
8716− $lynxjs_elm$ui$Lynx$Attributes$borderRadius(8),
8717− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(14),
8718− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(14),
8719− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center)
8724− $lynxjs_elm$ui$Lynx$text,
8727− $lynxjs_elm$ui$Lynx$Attributes$color('#ffffff'),
8728− $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
8729− $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold)
8733− $lynxjs_elm$ui$Lynx$textContent(text)
8737−var $lynxjs_elm$ui$Lynx$Attributes$height = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('height');
8738−var $author$project$Main$spacer = function (px) {
8740− $lynxjs_elm$ui$Lynx$view,
8743− $lynxjs_elm$ui$Lynx$Attributes$height(px)
8747−var $lynxjs_elm$ui$Lynx$Attributes$borderColor = $lynxjs_elm$ui$Lynx$Attributes$style('borderColor');
8748−var $lynxjs_elm$ui$Lynx$Attributes$borderWidth = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('borderWidth');
8749−var $lynxjs_elm$ui$Lynx$input = $lynxjs_elm$virtual_dom$VirtualDom$node('input');
8750−var $elm$json$Json$Decode$at = F2(
8751− function (fields, decoder) {
8752− return A3($elm$core$List$foldr, $elm$json$Json$Decode$field, decoder, fields);
8754−var $lynxjs_elm$ui$Lynx$Events$onInput = function (tagger) {
8756− $lynxjs_elm$virtual_dom$VirtualDom$on,
8758− $lynxjs_elm$virtual_dom$VirtualDom$Normal(
8760− $elm$json$Json$Decode$map,
8763− $elm$json$Json$Decode$at,
8765− ['detail', 'value']),
8766− $elm$json$Json$Decode$string))));
8768−var $lynxjs_elm$virtual_dom$VirtualDom$attribute = F2(
8769− function (key, value) {
8771− _VirtualDom_attribute,
8772− _VirtualDom_noOnOrFormAction(key),
8773− _VirtualDom_noJavaScriptOrHtmlUri(value));
8775−var $lynxjs_elm$ui$Lynx$Attributes$attr = $lynxjs_elm$virtual_dom$VirtualDom$attribute;
8776−var $lynxjs_elm$ui$Lynx$Attributes$placeholder = $lynxjs_elm$ui$Lynx$Attributes$attr('placeholder');
8777−var $lynxjs_elm$ui$Lynx$Attributes$value = $lynxjs_elm$ui$Lynx$Attributes$attr('value');
8778−var $author$project$Main$textInput = function (config) {
8780− $lynxjs_elm$ui$Lynx$input,
8783− $lynxjs_elm$ui$Lynx$Events$onInput(config.onInput),
8784− $lynxjs_elm$ui$Lynx$Attributes$value(config.value),
8785− $lynxjs_elm$ui$Lynx$Attributes$placeholder(config.placeholder),
8786− $lynxjs_elm$ui$Lynx$Attributes$height(44),
8787− $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
8788− $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
8789− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22'),
8790− $lynxjs_elm$ui$Lynx$Attributes$borderWidth(1),
8791− $lynxjs_elm$ui$Lynx$Attributes$borderColor('#30363d'),
8792− $lynxjs_elm$ui$Lynx$Attributes$borderRadius(8),
8793− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(12)
8797−var $author$project$Main$viewAddContact = function (model) {
8799− $lynxjs_elm$ui$Lynx$view,
8802− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
8803− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
8808− $lynxjs_elm$ui$Lynx$view,
8811− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
8812− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
8813− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(12),
8814− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(12),
8815− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(16),
8816− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(16),
8817− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22')
8822− $lynxjs_elm$ui$Lynx$view,
8825− $lynxjs_elm$ui$Lynx$Events$onTap(
8826− $author$project$Main$Navigate($author$project$Main$ContactsScreen)),
8827− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(12),
8828− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(4),
8829− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(4)
8834− $lynxjs_elm$ui$Lynx$text,
8837− $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
8838− $lynxjs_elm$ui$Lynx$Attributes$fontSize(20)
8842− $lynxjs_elm$ui$Lynx$textContent('<')
8846− $lynxjs_elm$ui$Lynx$text,
8849− $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
8850− $lynxjs_elm$ui$Lynx$Attributes$fontSize(18),
8851− $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold)
8855− $lynxjs_elm$ui$Lynx$textContent('Add Contact')
8859− $lynxjs_elm$ui$Lynx$view,
8862− $lynxjs_elm$ui$Lynx$Attributes$padding(24),
8863− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column)
8867− $author$project$Main$fieldLabel('Identity string'),
8869− $lynxjs_elm$ui$Lynx$text,
8872− $lynxjs_elm$ui$Lynx$Attributes$color('#6e7681'),
8873− $lynxjs_elm$ui$Lynx$Attributes$fontSize(12),
8874− $lynxjs_elm$ui$Lynx$Attributes$marginBottom(8)
8878− $lynxjs_elm$ui$Lynx$textContent('Paste the <ed25519>.<x25519> identity from your contact')
8880− $author$project$Main$textInput(
8881− {onInput: $author$project$Main$UpdateAddIdentity, placeholder: 'abc123...def456.ghi789...jkl012', value: model.addIdentity}),
8882− $author$project$Main$spacer(20),
8883− $author$project$Main$fieldLabel('Name'),
8884− $author$project$Main$textInput(
8885− {onInput: $author$project$Main$UpdateAddName, placeholder: 'Display name (optional)', value: model.addName}),
8886− $author$project$Main$spacer(32),
8887− A2($author$project$Main$primaryButton, $author$project$Main$AddContact, 'Add Contact')
8891−var $author$project$Main$PrepareSend = {$: 'PrepareSend'};
8892−var $lynxjs_elm$ui$Lynx$Attributes$TextCenter = {$: 'TextCenter'};
8893−var $author$project$Main$UpdateDraft = function (a) {
8894− return {$: 'UpdateDraft', a: a};
8896−var $lynxjs_elm$ui$Lynx$Attributes$Vertical = {$: 'Vertical'};
8897−var $lynxjs_elm$ui$Lynx$Attributes$justifyContent = function (a) {
8899− $lynxjs_elm$ui$Lynx$Attributes$style,
8901− $lynxjs_elm$ui$Lynx$Attributes$alignmentToString(a));
8903−var $lynxjs_elm$ui$Lynx$Attributes$marginLeft = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('marginLeft');
8904−var $lynxjs_elm$ui$Lynx$Attributes$scrollDirection = function (d) {
8906− $lynxjs_elm$ui$Lynx$Attributes$attr,
8907− 'scroll-direction',
8909− if (d.$ === 'Vertical') {
8912− return 'horizontal';
8916−var $lynxjs_elm$ui$Lynx$scrollView = $lynxjs_elm$virtual_dom$VirtualDom$node('scroll-view');
8917−var $lynxjs_elm$ui$Lynx$Attributes$textAlign = function (a) {
8919− $lynxjs_elm$ui$Lynx$Attributes$style,
8934−var $elm$core$String$right = F2(
8935− function (n, string) {
8936− return (n < 1) ? '' : A3(
8937− $elm$core$String$slice,
8939− $elm$core$String$length(string),
8942−var $author$project$Main$truncateKey = function (key) {
8943− return ($elm$core$String$length(key) > 16) ? (A2($elm$core$String$left, 8, key) + ('...' + A2($elm$core$String$right, 8, key))) : key;
8945−var $lynxjs_elm$ui$Lynx$Attributes$End = {$: 'End'};
8946−var $lynxjs_elm$ui$Lynx$Attributes$Start = {$: 'Start'};
8947−var $lynxjs_elm$ui$Lynx$Attributes$maxWidth = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('maxWidth');
8948−var $author$project$Main$viewMessage = function (chatMsg) {
8950− $lynxjs_elm$ui$Lynx$view,
8953− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
8954− $lynxjs_elm$ui$Lynx$Attributes$justifyContent(
8955− chatMsg.outgoing ? $lynxjs_elm$ui$Lynx$Attributes$End : $lynxjs_elm$ui$Lynx$Attributes$Start),
8956− $lynxjs_elm$ui$Lynx$Attributes$marginBottom(6)
8961− $lynxjs_elm$ui$Lynx$view,
8964− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor(
8965− chatMsg.outgoing ? '#1a3a5c' : '#21262d'),
8966− $lynxjs_elm$ui$Lynx$Attributes$borderRadius(16),
8967− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(10),
8968− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(10),
8969− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(14),
8970− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(14),
8971− $lynxjs_elm$ui$Lynx$Attributes$maxWidth(280)
8976− $lynxjs_elm$ui$Lynx$text,
8979− $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
8980− $lynxjs_elm$ui$Lynx$Attributes$fontSize(15)
8984− $lynxjs_elm$ui$Lynx$textContent(chatMsg.body)
8989−var $lynxjs_elm$ui$Lynx$Attributes$width = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('width');
8990−var $author$project$Main$viewChat = function (model) {
8991− var contactName = A2(
8992− $elm$core$Maybe$withDefault,
8993− $author$project$Main$truncateKey(model.activeChat),
8995− $elm$core$Maybe$map,
8999− A2($elm$core$Dict$get, model.activeChat, model.contacts)));
9000− var chatMessages = A2(
9001− $elm$core$Maybe$withDefault,
9003− A2($elm$core$Dict$get, model.activeChat, model.messages));
9005− $lynxjs_elm$ui$Lynx$view,
9008− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
9009− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9014− $lynxjs_elm$ui$Lynx$view,
9017− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9018− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9019− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(12),
9020− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(12),
9021− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(16),
9022− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(16),
9023− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22')
9028− $lynxjs_elm$ui$Lynx$view,
9031− $lynxjs_elm$ui$Lynx$Events$onTap(
9032− $author$project$Main$Navigate($author$project$Main$ContactsScreen)),
9033− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(12),
9034− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(4),
9035− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(4)
9040− $lynxjs_elm$ui$Lynx$text,
9043− $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
9044− $lynxjs_elm$ui$Lynx$Attributes$fontSize(20)
9048− $lynxjs_elm$ui$Lynx$textContent('<')
9052− $lynxjs_elm$ui$Lynx$text,
9055− $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9056− $lynxjs_elm$ui$Lynx$Attributes$fontSize(18),
9057− $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold),
9058− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9062− $lynxjs_elm$ui$Lynx$textContent(contactName)
9066− $lynxjs_elm$ui$Lynx$scrollView,
9069− $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9070− $lynxjs_elm$ui$Lynx$Attributes$scrollDirection($lynxjs_elm$ui$Lynx$Attributes$Vertical),
9071− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(12),
9072− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(12),
9073− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(16),
9074− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(16)
9076− $elm$core$List$isEmpty(chatMessages) ? _List_fromArray(
9079− $lynxjs_elm$ui$Lynx$view,
9082− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9083− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(80)
9088− $lynxjs_elm$ui$Lynx$text,
9091− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9092− $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9093− $lynxjs_elm$ui$Lynx$Attributes$textAlign($lynxjs_elm$ui$Lynx$Attributes$TextCenter)
9097− $lynxjs_elm$ui$Lynx$textContent('No messages yet. Say hello!')
9100− ]) : A2($elm$core$List$map, $author$project$Main$viewMessage, chatMessages)),
9102− $lynxjs_elm$ui$Lynx$view,
9105− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9106− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9107− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(8),
9108− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(8),
9109− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(12),
9110− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(12),
9111− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22')
9116− $lynxjs_elm$ui$Lynx$input,
9119− $lynxjs_elm$ui$Lynx$Events$onInput($author$project$Main$UpdateDraft),
9120− $lynxjs_elm$ui$Lynx$Attributes$value(model.draft),
9121− $lynxjs_elm$ui$Lynx$Attributes$placeholder('Message...'),
9122− $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9123− $lynxjs_elm$ui$Lynx$Attributes$height(40),
9124− $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
9125− $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9126− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#0d1117'),
9127− $lynxjs_elm$ui$Lynx$Attributes$borderWidth(1),
9128− $lynxjs_elm$ui$Lynx$Attributes$borderColor('#30363d'),
9129− $lynxjs_elm$ui$Lynx$Attributes$borderRadius(20),
9130− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(16)
9134− $lynxjs_elm$ui$Lynx$view,
9137− $lynxjs_elm$ui$Lynx$Events$onTap($author$project$Main$PrepareSend),
9138− $lynxjs_elm$ui$Lynx$Attributes$marginLeft(8),
9139− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor(
9140− (model.sending || $elm$core$String$isEmpty(
9141− $elm$core$String$trim(model.draft))) ? '#30363d' : '#58a6ff'),
9142− $lynxjs_elm$ui$Lynx$Attributes$borderRadius(20),
9143− $lynxjs_elm$ui$Lynx$Attributes$width(40),
9144− $lynxjs_elm$ui$Lynx$Attributes$height(40),
9145− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9146− $lynxjs_elm$ui$Lynx$Attributes$justifyContent($lynxjs_elm$ui$Lynx$Attributes$Center)
9151− $lynxjs_elm$ui$Lynx$text,
9154− $lynxjs_elm$ui$Lynx$Attributes$color('#ffffff'),
9155− $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
9156− $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold)
9160− $lynxjs_elm$ui$Lynx$textContent('^')
9166−var $author$project$Main$AddContactScreen = {$: 'AddContactScreen'};
9167−var $elm$core$Dict$isEmpty = function (dict) {
9168− if (dict.$ === 'RBEmpty_elm_builtin') {
9174−var $lynxjs_elm$ui$Lynx$Attributes$marginRight = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('marginRight');
9175−var $elm$core$List$sortBy = _List_sortBy;
9176−var $elm$core$Dict$values = function (dict) {
9178− $elm$core$Dict$foldr,
9180− function (key, value, valueList) {
9181− return A2($elm$core$List$cons, value, valueList);
9186−var $author$project$Main$OpenChat = function (a) {
9187− return {$: 'OpenChat', a: a};
9189−var $lynxjs_elm$ui$Lynx$Attributes$marginTop = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('marginTop');
9190−var $elm$core$String$toUpper = _String_toUpper;
9191−var $author$project$Main$viewContactRow = function (contact) {
9193− $lynxjs_elm$ui$Lynx$view,
9196− $lynxjs_elm$ui$Lynx$Events$onTap(
9197− $author$project$Main$OpenChat(contact.edPubHex)),
9198− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9199− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9200− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(14),
9201− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(14),
9202− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(20),
9203− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(20),
9204− $lynxjs_elm$ui$Lynx$Attributes$borderColor('#21262d'),
9205− $lynxjs_elm$ui$Lynx$Attributes$borderWidth(1)
9210− $lynxjs_elm$ui$Lynx$view,
9213− $lynxjs_elm$ui$Lynx$Attributes$width(44),
9214− $lynxjs_elm$ui$Lynx$Attributes$height(44),
9215− $lynxjs_elm$ui$Lynx$Attributes$borderRadius(22),
9216− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#30363d'),
9217− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9218− $lynxjs_elm$ui$Lynx$Attributes$justifyContent($lynxjs_elm$ui$Lynx$Attributes$Center),
9219− $lynxjs_elm$ui$Lynx$Attributes$marginRight(12)
9224− $lynxjs_elm$ui$Lynx$text,
9227− $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
9228− $lynxjs_elm$ui$Lynx$Attributes$fontSize(18),
9229− $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold)
9233− $lynxjs_elm$ui$Lynx$textContent(
9234− $elm$core$String$toUpper(
9235− A2($elm$core$String$left, 1, contact.name)))
9239− $lynxjs_elm$ui$Lynx$view,
9242− $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9243− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column)
9248− $lynxjs_elm$ui$Lynx$view,
9251− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9252− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center)
9257− $lynxjs_elm$ui$Lynx$text,
9260− $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9261− $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
9262− $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold),
9263− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9267− $lynxjs_elm$ui$Lynx$textContent(contact.name)
9269− contact.online ? A2(
9270− $lynxjs_elm$ui$Lynx$view,
9273− $lynxjs_elm$ui$Lynx$Attributes$width(8),
9274− $lynxjs_elm$ui$Lynx$Attributes$height(8),
9275− $lynxjs_elm$ui$Lynx$Attributes$borderRadius(4),
9276− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#3fb950'),
9277− $lynxjs_elm$ui$Lynx$Attributes$marginLeft(8)
9279− _List_Nil) : A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil)
9281− $elm$core$String$isEmpty(contact.lastMessage) ? A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil) : A2(
9282− $lynxjs_elm$ui$Lynx$text,
9285− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9286− $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9287− $lynxjs_elm$ui$Lynx$Attributes$marginTop(2)
9291− $lynxjs_elm$ui$Lynx$textContent(
9292− A2($elm$core$String$left, 50, contact.lastMessage))
9297−var $author$project$Main$viewContacts = function (model) {
9299− $lynxjs_elm$ui$Lynx$view,
9302− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
9303− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9308− $lynxjs_elm$ui$Lynx$view,
9311− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9312− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9313− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(16),
9314− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(16),
9315− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(20),
9316− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(20),
9317− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22')
9322− $lynxjs_elm$ui$Lynx$text,
9325− $lynxjs_elm$ui$Lynx$Attributes$fontSize(20),
9326− $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold),
9327− $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9328− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9332− $lynxjs_elm$ui$Lynx$textContent('Messages')
9335− $lynxjs_elm$ui$Lynx$view,
9338− $lynxjs_elm$ui$Lynx$Events$onTap(
9339− $author$project$Main$Navigate($author$project$Main$AddContactScreen)),
9340− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(12),
9341− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(4)
9346− $lynxjs_elm$ui$Lynx$text,
9349− $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
9350− $lynxjs_elm$ui$Lynx$Attributes$fontSize(28)
9354− $lynxjs_elm$ui$Lynx$textContent('+')
9358− $elm$core$Dict$isEmpty(model.contacts) ? A2(
9359− $lynxjs_elm$ui$Lynx$view,
9362− $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9363− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9364− $lynxjs_elm$ui$Lynx$Attributes$justifyContent($lynxjs_elm$ui$Lynx$Attributes$Center),
9365− $lynxjs_elm$ui$Lynx$Attributes$padding(40)
9370− $lynxjs_elm$ui$Lynx$text,
9373− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9374− $lynxjs_elm$ui$Lynx$Attributes$fontSize(16),
9375− $lynxjs_elm$ui$Lynx$Attributes$textAlign($lynxjs_elm$ui$Lynx$Attributes$TextCenter)
9379− $lynxjs_elm$ui$Lynx$textContent('No conversations yet')
9381− $author$project$Main$spacer(8),
9383− $lynxjs_elm$ui$Lynx$text,
9386− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9387− $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9388− $lynxjs_elm$ui$Lynx$Attributes$textAlign($lynxjs_elm$ui$Lynx$Attributes$TextCenter)
9392− $lynxjs_elm$ui$Lynx$textContent('Tap + to add a contact')
9395− $lynxjs_elm$ui$Lynx$scrollView,
9398− $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9399− $lynxjs_elm$ui$Lynx$Attributes$scrollDirection($lynxjs_elm$ui$Lynx$Attributes$Vertical)
9402− $elm$core$List$map,
9403− $author$project$Main$viewContactRow,
9405− $elm$core$List$sortBy,
9407− return -c.lastTime;
9409− $elm$core$Dict$values(model.contacts)))),
9411− var _v0 = model.edPub;
9412− if (_v0.$ === 'Just') {
9415− $lynxjs_elm$ui$Lynx$view,
9418− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(10),
9419− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(10),
9420− $lynxjs_elm$ui$Lynx$Attributes$paddingLeft(20),
9421− $lynxjs_elm$ui$Lynx$Attributes$paddingRight(20),
9422− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22'),
9423− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Row),
9424− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center)
9429− $lynxjs_elm$ui$Lynx$view,
9432− $lynxjs_elm$ui$Lynx$Attributes$width(8),
9433− $lynxjs_elm$ui$Lynx$Attributes$height(8),
9434− $lynxjs_elm$ui$Lynx$Attributes$borderRadius(4),
9435− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#3fb950'),
9436− $lynxjs_elm$ui$Lynx$Attributes$marginRight(8)
9440− $lynxjs_elm$ui$Lynx$text,
9443− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9444− $lynxjs_elm$ui$Lynx$Attributes$fontSize(11),
9445− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9449− $lynxjs_elm$ui$Lynx$textContent(
9450− $author$project$Main$truncateKey(
9451− $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(pub)))
9455− return A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil);
9460−var $author$project$Main$Connect = {$: 'Connect'};
9461−var $author$project$Main$UpdateDisplayName = function (a) {
9462− return {$: 'UpdateDisplayName', a: a};
9464−var $author$project$Main$UpdateServerUrl = function (a) {
9465− return {$: 'UpdateServerUrl', a: a};
9467−var $author$project$Main$disabledButton = function (text) {
9469− $lynxjs_elm$ui$Lynx$view,
9472− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#30363d'),
9473− $lynxjs_elm$ui$Lynx$Attributes$borderRadius(8),
9474− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(14),
9475− $lynxjs_elm$ui$Lynx$Attributes$paddingBottom(14),
9476− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center)
9481− $lynxjs_elm$ui$Lynx$text,
9484− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9485− $lynxjs_elm$ui$Lynx$Attributes$fontSize(16)
9489− $lynxjs_elm$ui$Lynx$textContent(text)
9493−var $author$project$Main$viewSetup = function (model) {
9494− var identityStr = function () {
9495− var _v0 = _Utils_Tuple2(model.edPub, model.xPub);
9496− if ((_v0.a.$ === 'Just') && (_v0.b.$ === 'Just')) {
9499− return $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(edP) + ('.' + $lynxjs_elm$crypto$Crypto$X25519$publicKeyToHex(xP));
9505− $lynxjs_elm$ui$Lynx$view,
9508− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
9509− $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9510− $lynxjs_elm$ui$Lynx$Attributes$padding(24),
9511− $lynxjs_elm$ui$Lynx$Attributes$justifyContent($lynxjs_elm$ui$Lynx$Attributes$Center)
9516− $lynxjs_elm$ui$Lynx$text,
9519− $lynxjs_elm$ui$Lynx$Attributes$fontSize(36),
9520− $lynxjs_elm$ui$Lynx$Attributes$fontWeight($lynxjs_elm$ui$Lynx$Attributes$Bold),
9521− $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
9522− $lynxjs_elm$ui$Lynx$Attributes$textAlign($lynxjs_elm$ui$Lynx$Attributes$TextCenter),
9523− $lynxjs_elm$ui$Lynx$Attributes$marginBottom(8)
9527− $lynxjs_elm$ui$Lynx$textContent('Skrepka')
9530− $lynxjs_elm$ui$Lynx$text,
9533− $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9534− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9535− $lynxjs_elm$ui$Lynx$Attributes$textAlign($lynxjs_elm$ui$Lynx$Attributes$TextCenter),
9536− $lynxjs_elm$ui$Lynx$Attributes$marginBottom(32)
9540− $lynxjs_elm$ui$Lynx$textContent('Encrypted messaging, no accounts')
9542− $author$project$Main$fieldLabel('Your identity (share this with contacts)'),
9543− $elm$core$String$isEmpty(identityStr) ? A2(
9544− $lynxjs_elm$ui$Lynx$text,
9547− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9548− $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9549− $lynxjs_elm$ui$Lynx$Attributes$marginBottom(24)
9553− $lynxjs_elm$ui$Lynx$textContent('Generating keypair...')
9555− $lynxjs_elm$ui$Lynx$view,
9558− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#161b22'),
9559− $lynxjs_elm$ui$Lynx$Attributes$borderRadius(8),
9560− $lynxjs_elm$ui$Lynx$Attributes$padding(12),
9561− $lynxjs_elm$ui$Lynx$Attributes$marginBottom(24)
9566− $lynxjs_elm$ui$Lynx$text,
9569− $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9570− $lynxjs_elm$ui$Lynx$Attributes$fontSize(11)
9574− $lynxjs_elm$ui$Lynx$textContent(identityStr)
9577− $author$project$Main$fieldLabel('Relay server'),
9578− $author$project$Main$textInput(
9579− {onInput: $author$project$Main$UpdateServerUrl, placeholder: 'http://relay.example.com:8080', value: model.serverUrl}),
9580− $author$project$Main$spacer(24),
9581− $author$project$Main$fieldLabel('Display name (optional)'),
9582− $author$project$Main$textInput(
9583− {onInput: $author$project$Main$UpdateDisplayName, placeholder: 'Anonymous', value: model.displayName}),
9584− $author$project$Main$spacer(32),
9585− model.connecting ? $author$project$Main$disabledButton('Connecting...') : (_Utils_eq(model.edPriv, $elm$core$Maybe$Nothing) ? $author$project$Main$disabledButton('Generating keys...') : A2($author$project$Main$primaryButton, $author$project$Main$Connect, 'Connect to Server'))
9588−var $author$project$Main$view = function (model) {
9590− $lynxjs_elm$ui$Lynx$view,
9593− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
9594− $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9595− $lynxjs_elm$ui$Lynx$Attributes$backgroundColor('#0d1117')
9600− var _v0 = model.error;
9601− if (_v0.$ === 'Just') {
9603− return $author$project$Main$errorBanner(err);
9605− return A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil);
9609− var _v1 = model.screen;
9611− case 'SetupScreen':
9612− return $author$project$Main$viewSetup(model);
9613− case 'ContactsScreen':
9614− return $author$project$Main$viewContacts(model);
9616− return $author$project$Main$viewChat(model);
9618− return $author$project$Main$viewAddContact(model);
9623−var $author$project$Main$main = $lynxjs_elm$browser$Browser$element(
9624− {init: $author$project$Main$init, subscriptions: $author$project$Main$subscriptions, update: $author$project$Main$update, view: $author$project$Main$view});
9625−_Platform_export({'Main':{'init':$author$project$Main$main(
9626− $elm$json$Json$Decode$succeed(_Utils_Tuple0))(0)}});}(globalThis));