@@ -1,9626 +0,0 @@
1−(function(scope){
2−'use strict';
3−
4−function F(arity, fun, wrapper) {
5− wrapper.a = arity;
6− wrapper.f = fun;
7− return wrapper;
8−}
9−
10−function F2(fun) {
11− return F(2, fun, function(a) { return function(b) { return fun(a,b); }; })
12−}
13−function F3(fun) {
14− return F(3, fun, function(a) {
15− return function(b) { return function(c) { return fun(a, b, c); }; };
16− });
17−}
18−function F4(fun) {
19− return F(4, fun, function(a) { return function(b) { return function(c) {
20− return function(d) { return fun(a, b, c, d); }; }; };
21− });
22−}
23−function F5(fun) {
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); }; }; }; };
26− });
27−}
28−function F6(fun) {
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); }; }; }; }; };
32− });
33−}
34−function F7(fun) {
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); }; }; }; }; }; };
38− });
39−}
40−function F8(fun) {
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); }; }; }; }; }; }; };
45− });
46−}
47−function F9(fun) {
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); }; }; }; }; }; }; }; };
52− });
53−}
54−
55−function A2(fun, a, b) {
56− return fun.a === 2 ? fun.f(a, b) : fun(a)(b);
57−}
58−function A3(fun, a, b, c) {
59− return fun.a === 3 ? fun.f(a, b, c) : fun(a)(b)(c);
60−}
61−function A4(fun, a, b, c, d) {
62− return fun.a === 4 ? fun.f(a, b, c, d) : fun(a)(b)(c)(d);
63−}
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);
66−}
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);
69−}
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);
72−}
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);
75−}
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);
78−}
79−
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.');
81−
82−
83−var _JsArray_empty = [];
84−
85−function _JsArray_singleton(value)
86−{
87− return [value];
88−}
89−
90−function _JsArray_length(array)
91−{
92− return array.length;
93−}
94−
95−var _JsArray_initialize = F3(function(size, offset, func)
96−{
97− var result = new Array(size);
98−
99− for (var i = 0; i < size; i++)
100− {
101− result[i] = func(offset + i);
102− }
103−
104− return result;
105−});
106−
107−var _JsArray_initializeFromList = F2(function (max, ls)
108−{
109− var result = new Array(max);
110−
111− for (var i = 0; i < max && ls.b; i++)
112− {
113− result[i] = ls.a;
114− ls = ls.b;
115− }
116−
117− result.length = i;
118− return _Utils_Tuple2(result, ls);
119−});
120−
121−var _JsArray_unsafeGet = F2(function(index, array)
122−{
123− return array[index];
124−});
125−
126−var _JsArray_unsafeSet = F3(function(index, value, array)
127−{
128− var length = array.length;
129− var result = new Array(length);
130−
131− for (var i = 0; i < length; i++)
132− {
133− result[i] = array[i];
134− }
135−
136− result[index] = value;
137− return result;
138−});
139−
140−var _JsArray_push = F2(function(value, array)
141−{
142− var length = array.length;
143− var result = new Array(length + 1);
144−
145− for (var i = 0; i < length; i++)
146− {
147− result[i] = array[i];
148− }
149−
150− result[length] = value;
151− return result;
152−});
153−
154−var _JsArray_foldl = F3(function(func, acc, array)
155−{
156− var length = array.length;
157−
158− for (var i = 0; i < length; i++)
159− {
160− acc = A2(func, array[i], acc);
161− }
162−
163− return acc;
164−});
165−
166−var _JsArray_foldr = F3(function(func, acc, array)
167−{
168− for (var i = array.length - 1; i >= 0; i--)
169− {
170− acc = A2(func, array[i], acc);
171− }
172−
173− return acc;
174−});
175−
176−var _JsArray_map = F2(function(func, array)
177−{
178− var length = array.length;
179− var result = new Array(length);
180−
181− for (var i = 0; i < length; i++)
182− {
183− result[i] = func(array[i]);
184− }
185−
186− return result;
187−});
188−
189−var _JsArray_indexedMap = F3(function(func, offset, array)
190−{
191− var length = array.length;
192− var result = new Array(length);
193−
194− for (var i = 0; i < length; i++)
195− {
196− result[i] = A2(func, offset + i, array[i]);
197− }
198−
199− return result;
200−});
201−
202−var _JsArray_slice = F3(function(from, to, array)
203−{
204− return array.slice(from, to);
205−});
206−
207−var _JsArray_appendN = F3(function(n, dest, source)
208−{
209− var destLen = dest.length;
210− var itemsToCopy = n - destLen;
211−
212− if (itemsToCopy > source.length)
213− {
214− itemsToCopy = source.length;
215− }
216−
217− var size = destLen + itemsToCopy;
218− var result = new Array(size);
219−
220− for (var i = 0; i < destLen; i++)
221− {
222− result[i] = dest[i];
223− }
224−
225− for (var i = 0; i < itemsToCopy; i++)
226− {
227− result[i + destLen] = source[i];
228− }
229−
230− return result;
231−});
232−
233−
234−
235−// LOG
236−
237−
238−var _Debug_log = F2(function(tag, value)
239−{
240− console.log(tag + ': ' + _Debug_toString(value));
241− return value;
242−});
243−
244−
245−// TODOS
246−
247−function _Debug_todo(moduleName, region)
248−{
249− return function(message) {
250− _Debug_crash(8, moduleName, region, message);
251− };
252−}
253−
254−function _Debug_todoCase(moduleName, region, value)
255−{
256− return function(message) {
257− _Debug_crash(9, moduleName, region, value, message);
258− };
259−}
260−
261−
262−// TO STRING
263−
264−
265−function _Debug_toString(value)
266−{
267− return _Debug_toAnsiString(false, value);
268−}
269−
270−function _Debug_toAnsiString(ansi, value)
271−{
272− if (typeof value === 'function')
273− {
274− return _Debug_internalColor(ansi, '<function>');
275− }
276−
277− if (typeof value === 'boolean')
278− {
279− return _Debug_ctorColor(ansi, value ? 'True' : 'False');
280− }
281−
282− if (typeof value === 'number')
283− {
284− return _Debug_numberColor(ansi, value + '');
285− }
286−
287− if (value instanceof String)
288− {
289− return _Debug_charColor(ansi, "'" + _Debug_addSlashes(value, true) + "'");
290− }
291−
292− if (typeof value === 'string')
293− {
294− return _Debug_stringColor(ansi, '"' + _Debug_addSlashes(value, false) + '"');
295− }
296−
297− if (typeof value === 'object' && '$' in value)
298− {
299− var tag = value.$;
300−
301− if (typeof tag === 'number')
302− {
303− return _Debug_internalColor(ansi, '<internals>');
304− }
305−
306− if (tag[0] === '#')
307− {
308− var output = [];
309− for (var k in value)
310− {
311− if (k === '$') continue;
312− output.push(_Debug_toAnsiString(ansi, value[k]));
313− }
314− return '(' + output.join(',') + ')';
315− }
316−
317− if (tag === 'Set_elm_builtin')
318− {
319− return _Debug_ctorColor(ansi, 'Set')
320− + _Debug_fadeColor(ansi, '.fromList') + ' '
321− + _Debug_toAnsiString(ansi, $elm$core$Set$toList(value));
322− }
323−
324− if (tag === 'RBNode_elm_builtin' || tag === 'RBEmpty_elm_builtin')
325− {
326− return _Debug_ctorColor(ansi, 'Dict')
327− + _Debug_fadeColor(ansi, '.fromList') + ' '
328− + _Debug_toAnsiString(ansi, $elm$core$Dict$toList(value));
329− }
330−
331− if (tag === 'Array_elm_builtin')
332− {
333− return _Debug_ctorColor(ansi, 'Array')
334− + _Debug_fadeColor(ansi, '.fromList') + ' '
335− + _Debug_toAnsiString(ansi, $elm$core$Array$toList(value));
336− }
337−
338− if (tag === '::' || tag === '[]')
339− {
340− var output = '[';
341−
342− value.b && (output += _Debug_toAnsiString(ansi, value.a), value = value.b)
343−
344− for (; value.b; value = value.b) // WHILE_CONS
345− {
346− output += ',' + _Debug_toAnsiString(ansi, value.a);
347− }
348− return output + ']';
349− }
350−
351− var output = '';
352− for (var i in value)
353− {
354− if (i === '$') continue;
355− var str = _Debug_toAnsiString(ansi, value[i]);
356− var c0 = str[0];
357− var parenless = c0 === '{' || c0 === '(' || c0 === '[' || c0 === '<' || c0 === '"' || str.indexOf(' ') < 0;
358− output += ' ' + (parenless ? str : '(' + str + ')');
359− }
360− return _Debug_ctorColor(ansi, tag) + output;
361− }
362−
363− if (typeof DataView === 'function' && value instanceof DataView)
364− {
365− return _Debug_stringColor(ansi, '<' + value.byteLength + ' bytes>');
366− }
367−
368− if (typeof File !== 'undefined' && value instanceof File)
369− {
370− return _Debug_internalColor(ansi, '<' + value.name + '>');
371− }
372−
373− if (typeof value === 'object')
374− {
375− var output = [];
376− for (var key in value)
377− {
378− var field = key[0] === '_' ? key.slice(1) : key;
379− output.push(_Debug_fadeColor(ansi, field) + ' = ' + _Debug_toAnsiString(ansi, value[key]));
380− }
381− if (output.length === 0)
382− {
383− return '{}';
384− }
385− return '{ ' + output.join(', ') + ' }';
386− }
387−
388− return _Debug_internalColor(ansi, '<internals>');
389−}
390−
391−function _Debug_addSlashes(str, isChar)
392−{
393− var s = str
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');
400−
401− if (isChar)
402− {
403− return s.replace(/\'/g, '\\\'');
404− }
405− else
406− {
407− return s.replace(/\"/g, '\\"');
408− }
409−}
410−
411−function _Debug_ctorColor(ansi, string)
412−{
413− return ansi ? '\x1b[96m' + string + '\x1b[0m' : string;
414−}
415−
416−function _Debug_numberColor(ansi, string)
417−{
418− return ansi ? '\x1b[95m' + string + '\x1b[0m' : string;
419−}
420−
421−function _Debug_stringColor(ansi, string)
422−{
423− return ansi ? '\x1b[93m' + string + '\x1b[0m' : string;
424−}
425−
426−function _Debug_charColor(ansi, string)
427−{
428− return ansi ? '\x1b[92m' + string + '\x1b[0m' : string;
429−}
430−
431−function _Debug_fadeColor(ansi, string)
432−{
433− return ansi ? '\x1b[37m' + string + '\x1b[0m' : string;
434−}
435−
436−function _Debug_internalColor(ansi, string)
437−{
438− return ansi ? '\x1b[36m' + string + '\x1b[0m' : string;
439−}
440−
441−function _Debug_toHexDigit(n)
442−{
443− return String.fromCharCode(n < 10 ? 48 + n : 55 + n);
444−}
445−
446−
447−// CRASH
448−
449−
450−
451−
452−function _Debug_crash(identifier, fact1, fact2, fact3, fact4)
453−{
454− switch(identifier)
455− {
456− case 0:
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.');
458−
459− case 1:
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.');
461−
462− case 2:
463− var jsonErrorString = fact1;
464− throw new Error('Problem with the flags given to your Elm program on initialization.\n\n' + jsonErrorString);
465−
466− case 3:
467− var portName = fact1;
468− throw new Error('There can only be one port named `' + portName + '`, but your program has multiple.');
469−
470− case 4:
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);
474−
475− case 5:
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.');
477−
478− case 6:
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!');
481−
482− case 8:
483− var moduleName = fact1;
484− var region = fact2;
485− var message = fact3;
486− throw new Error('TODO in module `' + moduleName + '` ' + _Debug_regionToString(region) + '\n\n' + message);
487−
488− case 9:
489− var moduleName = fact1;
490− var region = fact2;
491− var value = fact3;
492− var message = fact4;
493− throw new Error(
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 ')
498− );
499−
500− case 10:
501− throw new Error('Bug in https://github.com/elm/virtual-dom/issues');
502−
503− case 11:
504− throw new Error('Cannot perform mod 0. Division by zero error.');
505− }
506−}
507−
508−function _Debug_regionToString(region)
509−{
510− if (region.start.line === region.end.line)
511− {
512− return 'on line ' + region.start.line;
513− }
514− return 'on lines ' + region.start.line + ' through ' + region.end.line;
515−}
516−
517−
518−
519−// EQUALITY
520−
521−function _Utils_eq(x, y)
522−{
523− for (
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)
527− )
528− {}
529−
530− return isEqual;
531−}
532−
533−function _Utils_eqHelp(x, y, depth, stack)
534−{
535− if (x === y)
536− {
537− return true;
538− }
539−
540− if (typeof x !== 'object' || x === null || y === null)
541− {
542− typeof x === 'function' && _Debug_crash(5);
543− return false;
544− }
545−
546− if (depth > 100)
547− {
548− stack.push(_Utils_Tuple2(x,y));
549− return true;
550− }
551−
552− /**/
553− if (x.$ === 'Set_elm_builtin')
554− {
555− x = $elm$core$Set$toList(x);
556− y = $elm$core$Set$toList(y);
557− }
558− if (x.$ === 'RBNode_elm_builtin' || x.$ === 'RBEmpty_elm_builtin')
559− {
560− x = $elm$core$Dict$toList(x);
561− y = $elm$core$Dict$toList(y);
562− }
563− //*/
564−
565− /**_UNUSED/
566− if (x.$ < 0)
567− {
568− x = $elm$core$Dict$toList(x);
569− y = $elm$core$Dict$toList(y);
570− }
571− //*/
572−
573− for (var key in x)
574− {
575− if (!_Utils_eqHelp(x[key], y[key], depth + 1, stack))
576− {
577− return false;
578− }
579− }
580− return true;
581−}
582−
583−var _Utils_equal = F2(_Utils_eq);
584−var _Utils_notEqual = F2(function(a, b) { return !_Utils_eq(a,b); });
585−
586−
587−
588−// COMPARISONS
589−
590−// Code in Generate/JavaScript.hs, Basics.js, and List.js depends on
591−// the particular integer values assigned to LT, EQ, and GT.
592−
593−function _Utils_cmp(x, y, ord)
594−{
595− if (typeof x !== 'object')
596− {
597− return x === y ? /*EQ*/ 0 : x < y ? /*LT*/ -1 : /*GT*/ 1;
598− }
599−
600− /**/
601− if (x instanceof String)
602− {
603− var a = x.valueOf();
604− var b = y.valueOf();
605− return a === b ? 0 : a < b ? -1 : 1;
606− }
607− //*/
608−
609− /**_UNUSED/
610− if (typeof x.$ === 'undefined')
611− //*/
612− /**/
613− if (x.$[0] === '#')
614− //*/
615− {
616− return (ord = _Utils_cmp(x.a, y.a))
617− ? ord
618− : (ord = _Utils_cmp(x.b, y.b))
619− ? ord
620− : _Utils_cmp(x.c, y.c);
621− }
622−
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);
626−}
627−
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; });
632−
633−var _Utils_compare = F2(function(x, y)
634−{
635− var n = _Utils_cmp(x, y);
636− return n < 0 ? $elm$core$Basics$LT : n ? $elm$core$Basics$GT : $elm$core$Basics$EQ;
637−});
638−
639−
640−// COMMON VALUES
641−
642−var _Utils_Tuple0 = { $: '#0' };
643−
644−function _Utils_Tuple2(a, b) { return { $: '#2', a: a, b: b }; }
645−
646−function _Utils_Tuple3(a, b, c) { return { $: '#3', a: a, b: b, c: c }; }
647−
648−function _Utils_chr(c) { return new String(c); }
649−
650−
651−// RECORDS
652−
653−function _Utils_update(oldRecord, updatedFields)
654−{
655− var newRecord = {};
656−
657− for (var key in oldRecord)
658− {
659− newRecord[key] = oldRecord[key];
660− }
661−
662− for (var key in updatedFields)
663− {
664− newRecord[key] = updatedFields[key];
665− }
666−
667− return newRecord;
668−}
669−
670−
671−// APPEND
672−
673−var _Utils_append = F2(_Utils_ap);
674−
675−function _Utils_ap(xs, ys)
676−{
677− // append Strings
678− if (typeof xs === 'string')
679− {
680− return xs + ys;
681− }
682−
683− // append Lists
684− if (!xs.b)
685− {
686− return ys;
687− }
688− var root = _List_Cons(xs.a, ys);
689− xs = xs.b
690− for (var curr = root; xs.b; xs = xs.b) // WHILE_CONS
691− {
692− curr = curr.b = _List_Cons(xs.a, ys);
693− }
694− return root;
695−}
696−
697−
698−
699−var _List_Nil = { $: '[]' };
700−
701−function _List_Cons(hd, tl) { return { $: '::', a: hd, b: tl }; }
702−
703−
704−var _List_cons = F2(_List_Cons);
705−
706−function _List_fromArray(arr)
707−{
708− var out = _List_Nil;
709− for (var i = arr.length; i--; )
710− {
711− out = _List_Cons(arr[i], out);
712− }
713− return out;
714−}
715−
716−function _List_toArray(xs)
717−{
718− for (var out = []; xs.b; xs = xs.b) // WHILE_CONS
719− {
720− out.push(xs.a);
721− }
722− return out;
723−}
724−
725−var _List_map2 = F3(function(f, xs, ys)
726−{
727− for (var arr = []; xs.b && ys.b; xs = xs.b, ys = ys.b) // WHILE_CONSES
728− {
729− arr.push(A2(f, xs.a, ys.a));
730− }
731− return _List_fromArray(arr);
732−});
733−
734−var _List_map3 = F4(function(f, xs, ys, zs)
735−{
736− for (var arr = []; xs.b && ys.b && zs.b; xs = xs.b, ys = ys.b, zs = zs.b) // WHILE_CONSES
737− {
738− arr.push(A3(f, xs.a, ys.a, zs.a));
739− }
740− return _List_fromArray(arr);
741−});
742−
743−var _List_map4 = F5(function(f, ws, xs, ys, zs)
744−{
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
746− {
747− arr.push(A4(f, ws.a, xs.a, ys.a, zs.a));
748− }
749− return _List_fromArray(arr);
750−});
751−
752−var _List_map5 = F6(function(f, vs, ws, xs, ys, zs)
753−{
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
755− {
756− arr.push(A5(f, vs.a, ws.a, xs.a, ys.a, zs.a));
757− }
758− return _List_fromArray(arr);
759−});
760−
761−var _List_sortBy = F2(function(f, xs)
762−{
763− return _List_fromArray(_List_toArray(xs).sort(function(a, b) {
764− return _Utils_cmp(f(a), f(b));
765− }));
766−});
767−
768−var _List_sortWith = F2(function(f, xs)
769−{
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;
773− }));
774−});
775−
776−
777−
778−// MATH
779−
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);
786−
787−var _Basics_remainderBy = F2(function(b, a) { return a % b; });
788−
789−// https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/divmodnote-letter.pdf
790−var _Basics_modBy = F2(function(modulus, x)
791−{
792− var answer = x % modulus;
793− return modulus === 0
794− ? _Debug_crash(11)
795− :
796− ((answer > 0 && modulus < 0) || (answer < 0 && modulus > 0))
797− ? answer + modulus
798− : answer;
799−});
800−
801−
802−// TRIGONOMETRY
803−
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);
813−
814−
815−// MORE MATH
816−
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; }
820−
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;
827−
828−
829−// BOOLEANS
830−
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; });
835−
836−
837−
838−var _String_cons = F2(function(chr, str)
839−{
840− return chr + str;
841−});
842−
843−function _String_uncons(string)
844−{
845− var word = string.charCodeAt(0);
846− return !isNaN(word)
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))
851− )
852− : $elm$core$Maybe$Nothing;
853−}
854−
855−var _String_append = F2(function(a, b)
856−{
857− return a + b;
858−});
859−
860−function _String_length(str)
861−{
862− return str.length;
863−}
864−
865−var _String_map = F2(function(func, string)
866−{
867− var len = string.length;
868− var array = new Array(len);
869− var i = 0;
870− while (i < len)
871− {
872− var word = string.charCodeAt(i);
873− if (0xD800 <= word && word <= 0xDBFF)
874− {
875− array[i] = func(_Utils_chr(string[i] + string[i+1]));
876− i += 2;
877− continue;
878− }
879− array[i] = func(_Utils_chr(string[i]));
880− i++;
881− }
882− return array.join('');
883−});
884−
885−var _String_filter = F2(function(isGood, str)
886−{
887− var arr = [];
888− var len = str.length;
889− var i = 0;
890− while (i < len)
891− {
892− var char = str[i];
893− var word = str.charCodeAt(i);
894− i++;
895− if (0xD800 <= word && word <= 0xDBFF)
896− {
897− char += str[i];
898− i++;
899− }
900−
901− if (isGood(_Utils_chr(char)))
902− {
903− arr.push(char);
904− }
905− }
906− return arr.join('');
907−});
908−
909−function _String_reverse(str)
910−{
911− var len = str.length;
912− var arr = new Array(len);
913− var i = 0;
914− while (i < len)
915− {
916− var word = str.charCodeAt(i);
917− if (0xD800 <= word && word <= 0xDBFF)
918− {
919− arr[len - i] = str[i + 1];
920− i++;
921− arr[len - i] = str[i - 1];
922− i++;
923− }
924− else
925− {
926− arr[len - i] = str[i];
927− i++;
928− }
929− }
930− return arr.join('');
931−}
932−
933−var _String_foldl = F3(function(func, state, string)
934−{
935− var len = string.length;
936− var i = 0;
937− while (i < len)
938− {
939− var char = string[i];
940− var word = string.charCodeAt(i);
941− i++;
942− if (0xD800 <= word && word <= 0xDBFF)
943− {
944− char += string[i];
945− i++;
946− }
947− state = A2(func, _Utils_chr(char), state);
948− }
949− return state;
950−});
951−
952−var _String_foldr = F3(function(func, state, string)
953−{
954− var i = string.length;
955− while (i--)
956− {
957− var char = string[i];
958− var word = string.charCodeAt(i);
959− if (0xDC00 <= word && word <= 0xDFFF)
960− {
961− i--;
962− char = string[i] + char;
963− }
964− state = A2(func, _Utils_chr(char), state);
965− }
966− return state;
967−});
968−
969−var _String_split = F2(function(sep, str)
970−{
971− return str.split(sep);
972−});
973−
974−var _String_join = F2(function(sep, strs)
975−{
976− return strs.join(sep);
977−});
978−
979−var _String_slice = F3(function(start, end, str) {
980− return str.slice(start, end);
981−});
982−
983−function _String_trim(str)
984−{
985− return str.trim();
986−}
987−
988−function _String_trimLeft(str)
989−{
990− return str.replace(/^\s+/, '');
991−}
992−
993−function _String_trimRight(str)
994−{
995− return str.replace(/\s+$/, '');
996−}
997−
998−function _String_words(str)
999−{
1000− return _List_fromArray(str.trim().split(/\s+/g));
1001−}
1002−
1003−function _String_lines(str)
1004−{
1005− return _List_fromArray(str.split(/\r\n|\r|\n/g));
1006−}
1007−
1008−function _String_toUpper(str)
1009−{
1010− return str.toUpperCase();
1011−}
1012−
1013−function _String_toLower(str)
1014−{
1015− return str.toLowerCase();
1016−}
1017−
1018−var _String_any = F2(function(isGood, string)
1019−{
1020− var i = string.length;
1021− while (i--)
1022− {
1023− var char = string[i];
1024− var word = string.charCodeAt(i);
1025− if (0xDC00 <= word && word <= 0xDFFF)
1026− {
1027− i--;
1028− char = string[i] + char;
1029− }
1030− if (isGood(_Utils_chr(char)))
1031− {
1032− return true;
1033− }
1034− }
1035− return false;
1036−});
1037−
1038−var _String_all = F2(function(isGood, string)
1039−{
1040− var i = string.length;
1041− while (i--)
1042− {
1043− var char = string[i];
1044− var word = string.charCodeAt(i);
1045− if (0xDC00 <= word && word <= 0xDFFF)
1046− {
1047− i--;
1048− char = string[i] + char;
1049− }
1050− if (!isGood(_Utils_chr(char)))
1051− {
1052− return false;
1053− }
1054− }
1055− return true;
1056−});
1057−
1058−var _String_contains = F2(function(sub, str)
1059−{
1060− return str.indexOf(sub) > -1;
1061−});
1062−
1063−var _String_startsWith = F2(function(sub, str)
1064−{
1065− return str.indexOf(sub) === 0;
1066−});
1067−
1068−var _String_endsWith = F2(function(sub, str)
1069−{
1070− return str.length >= sub.length &&
1071− str.lastIndexOf(sub) === str.length - sub.length;
1072−});
1073−
1074−var _String_indexes = F2(function(sub, str)
1075−{
1076− var subLen = sub.length;
1077−
1078− if (subLen < 1)
1079− {
1080− return _List_Nil;
1081− }
1082−
1083− var i = 0;
1084− var is = [];
1085−
1086− while ((i = str.indexOf(sub, i)) > -1)
1087− {
1088− is.push(i);
1089− i = i + subLen;
1090− }
1091−
1092− return _List_fromArray(is);
1093−});
1094−
1095−
1096−// TO STRING
1097−
1098−function _String_fromNumber(number)
1099−{
1100− return number + '';
1101−}
1102−
1103−
1104−// INT CONVERSIONS
1105−
1106−function _String_toInt(str)
1107−{
1108− var total = 0;
1109− var code0 = str.charCodeAt(0);
1110− var start = code0 == 0x2B /* + */ || code0 == 0x2D /* - */ ? 1 : 0;
1111−
1112− for (var i = start; i < str.length; ++i)
1113− {
1114− var code = str.charCodeAt(i);
1115− if (code < 0x30 || 0x39 < code)
1116− {
1117− return $elm$core$Maybe$Nothing;
1118− }
1119− total = 10 * total + code - 0x30;
1120− }
1121−
1122− return i == start
1123− ? $elm$core$Maybe$Nothing
1124− : $elm$core$Maybe$Just(code0 == 0x2D ? -total : total);
1125−}
1126−
1127−
1128−// FLOAT CONVERSIONS
1129−
1130−function _String_toFloat(s)
1131−{
1132− // check if it is a hex, octal, or binary number
1133− if (s.length === 0 || /[\sxbo]/.test(s))
1134− {
1135− return $elm$core$Maybe$Nothing;
1136− }
1137− var n = +s;
1138− // faster isNaN check
1139− return n === n ? $elm$core$Maybe$Just(n) : $elm$core$Maybe$Nothing;
1140−}
1141−
1142−function _String_fromList(chars)
1143−{
1144− return _List_toArray(chars).join('');
1145−}
1146−
1147−
1148−
1149−
1150−function _Char_toCode(char)
1151−{
1152− var code = char.charCodeAt(0);
1153− if (0xD800 <= code && code <= 0xDBFF)
1154− {
1155− return (code - 0xD800) * 0x400 + char.charCodeAt(1) - 0xDC00 + 0x10000
1156− }
1157− return code;
1158−}
1159−
1160−function _Char_fromCode(code)
1161−{
1162− return _Utils_chr(
1163− (code < 0 || 0x10FFFF < code)
1164− ? '\uFFFD'
1165− :
1166− (code <= 0xFFFF)
1167− ? String.fromCharCode(code)
1168− :
1169− (code -= 0x10000,
1170− String.fromCharCode(Math.floor(code / 0x400) + 0xD800, code % 0x400 + 0xDC00)
1171− )
1172− );
1173−}
1174−
1175−function _Char_toUpper(char)
1176−{
1177− return _Utils_chr(char.toUpperCase());
1178−}
1179−
1180−function _Char_toLower(char)
1181−{
1182− return _Utils_chr(char.toLowerCase());
1183−}
1184−
1185−function _Char_toLocaleUpper(char)
1186−{
1187− return _Utils_chr(char.toLocaleUpperCase());
1188−}
1189−
1190−function _Char_toLocaleLower(char)
1191−{
1192− return _Utils_chr(char.toLocaleLowerCase());
1193−}
1194−
1195−
1196−
1197−/**/
1198−function _Json_errorToString(error)
1199−{
1200− return $elm$json$Json$Decode$errorToString(error);
1201−}
1202−//*/
1203−
1204−
1205−// CORE DECODERS
1206−
1207−function _Json_succeed(msg)
1208−{
1209− return {
1210− $: 0,
1211− a: msg
1212− };
1213−}
1214−
1215−function _Json_fail(msg)
1216−{
1217− return {
1218− $: 1,
1219− a: msg
1220− };
1221−}
1222−
1223−function _Json_decodePrim(decoder)
1224−{
1225− return { $: 2, b: decoder };
1226−}
1227−
1228−var _Json_decodeInt = _Json_decodePrim(function(value) {
1229− return (typeof value !== 'number')
1230− ? _Json_expecting('an INT', value)
1231− :
1232− (-2147483647 < value && value < 2147483647 && (value | 0) === value)
1233− ? $elm$core$Result$Ok(value)
1234− :
1235− (isFinite(value) && !(value % 1))
1236− ? $elm$core$Result$Ok(value)
1237− : _Json_expecting('an INT', value);
1238−});
1239−
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);
1244−});
1245−
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);
1250−});
1251−
1252−var _Json_decodeValue = _Json_decodePrim(function(value) {
1253− return $elm$core$Result$Ok(_Json_wrap(value));
1254−});
1255−
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);
1262−});
1263−
1264−function _Json_decodeList(decoder) { return { $: 3, b: decoder }; }
1265−function _Json_decodeArray(decoder) { return { $: 4, b: decoder }; }
1266−
1267−function _Json_decodeNull(value) { return { $: 5, c: value }; }
1268−
1269−var _Json_decodeField = F2(function(field, decoder)
1270−{
1271− return {
1272− $: 6,
1273− d: field,
1274− b: decoder
1275− };
1276−});
1277−
1278−var _Json_decodeIndex = F2(function(index, decoder)
1279−{
1280− return {
1281− $: 7,
1282− e: index,
1283− b: decoder
1284− };
1285−});
1286−
1287−function _Json_decodeKeyValuePairs(decoder)
1288−{
1289− return {
1290− $: 8,
1291− b: decoder
1292− };
1293−}
1294−
1295−function _Json_mapMany(f, decoders)
1296−{
1297− return {
1298− $: 9,
1299− f: f,
1300− g: decoders
1301− };
1302−}
1303−
1304−var _Json_andThen = F2(function(callback, decoder)
1305−{
1306− return {
1307− $: 10,
1308− b: decoder,
1309− h: callback
1310− };
1311−});
1312−
1313−function _Json_oneOf(decoders)
1314−{
1315− return {
1316− $: 11,
1317− g: decoders
1318− };
1319−}
1320−
1321−
1322−// DECODING OBJECTS
1323−
1324−var _Json_map1 = F2(function(f, d1)
1325−{
1326− return _Json_mapMany(f, [d1]);
1327−});
1328−
1329−var _Json_map2 = F3(function(f, d1, d2)
1330−{
1331− return _Json_mapMany(f, [d1, d2]);
1332−});
1333−
1334−var _Json_map3 = F4(function(f, d1, d2, d3)
1335−{
1336− return _Json_mapMany(f, [d1, d2, d3]);
1337−});
1338−
1339−var _Json_map4 = F5(function(f, d1, d2, d3, d4)
1340−{
1341− return _Json_mapMany(f, [d1, d2, d3, d4]);
1342−});
1343−
1344−var _Json_map5 = F6(function(f, d1, d2, d3, d4, d5)
1345−{
1346− return _Json_mapMany(f, [d1, d2, d3, d4, d5]);
1347−});
1348−
1349−var _Json_map6 = F7(function(f, d1, d2, d3, d4, d5, d6)
1350−{
1351− return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6]);
1352−});
1353−
1354−var _Json_map7 = F8(function(f, d1, d2, d3, d4, d5, d6, d7)
1355−{
1356− return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7]);
1357−});
1358−
1359−var _Json_map8 = F9(function(f, d1, d2, d3, d4, d5, d6, d7, d8)
1360−{
1361− return _Json_mapMany(f, [d1, d2, d3, d4, d5, d6, d7, d8]);
1362−});
1363−
1364−
1365−// DECODE
1366−
1367−var _Json_runOnString = F2(function(decoder, string)
1368−{
1369− try
1370− {
1371− var value = JSON.parse(string);
1372− return _Json_runHelp(decoder, value);
1373− }
1374− catch (e)
1375− {
1376− return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'This is not valid JSON! ' + e.message, _Json_wrap(string)));
1377− }
1378−});
1379−
1380−var _Json_run = F2(function(decoder, value)
1381−{
1382− return _Json_runHelp(decoder, _Json_unwrap(value));
1383−});
1384−
1385−function _Json_runHelp(decoder, value)
1386−{
1387− switch (decoder.$)
1388− {
1389− case 2:
1390− return decoder.b(value);
1391−
1392− case 5:
1393− return (value === null)
1394− ? $elm$core$Result$Ok(decoder.c)
1395− : _Json_expecting('null', value);
1396−
1397− case 3:
1398− if (!_Json_isArray(value))
1399− {
1400− return _Json_expecting('a LIST', value);
1401− }
1402− return _Json_runArrayDecoder(decoder.b, value, _List_fromArray);
1403−
1404− case 4:
1405− if (!_Json_isArray(value))
1406− {
1407− return _Json_expecting('an ARRAY', value);
1408− }
1409− return _Json_runArrayDecoder(decoder.b, value, _Json_toElmArray);
1410−
1411− case 6:
1412− var field = decoder.d;
1413− if (typeof value !== 'object' || value === null || !(field in value))
1414− {
1415− return _Json_expecting('an OBJECT with a field named `' + field + '`', value);
1416− }
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));
1419−
1420− case 7:
1421− var index = decoder.e;
1422− if (!_Json_isArray(value))
1423− {
1424− return _Json_expecting('an ARRAY', value);
1425− }
1426− if (index >= value.length)
1427− {
1428− return _Json_expecting('a LONGER array. Need index ' + index + ' but only see ' + value.length + ' entries', value);
1429− }
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));
1432−
1433− case 8:
1434− if (typeof value !== 'object' || value === null || _Json_isArray(value))
1435− {
1436− return _Json_expecting('an OBJECT', value);
1437− }
1438−
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)
1442− {
1443− if (Object.prototype.hasOwnProperty.call(value, key))
1444− {
1445− var result = _Json_runHelp(decoder.b, value[key]);
1446− if (!$elm$core$Result$isOk(result))
1447− {
1448− return $elm$core$Result$Err(A2($elm$json$Json$Decode$Field, key, result.a));
1449− }
1450− keyValuePairs = _List_Cons(_Utils_Tuple2(key, result.a), keyValuePairs);
1451− }
1452− }
1453− return $elm$core$Result$Ok($elm$core$List$reverse(keyValuePairs));
1454−
1455− case 9:
1456− var answer = decoder.f;
1457− var decoders = decoder.g;
1458− for (var i = 0; i < decoders.length; i++)
1459− {
1460− var result = _Json_runHelp(decoders[i], value);
1461− if (!$elm$core$Result$isOk(result))
1462− {
1463− return result;
1464− }
1465− answer = answer(result.a);
1466− }
1467− return $elm$core$Result$Ok(answer);
1468−
1469− case 10:
1470− var result = _Json_runHelp(decoder.b, value);
1471− return (!$elm$core$Result$isOk(result))
1472− ? result
1473− : _Json_runHelp(decoder.h(result.a), value);
1474−
1475− case 11:
1476− var errors = _List_Nil;
1477− for (var temp = decoder.g; temp.b; temp = temp.b) // WHILE_CONS
1478− {
1479− var result = _Json_runHelp(temp.a, value);
1480− if ($elm$core$Result$isOk(result))
1481− {
1482− return result;
1483− }
1484− errors = _List_Cons(result.a, errors);
1485− }
1486− return $elm$core$Result$Err($elm$json$Json$Decode$OneOf($elm$core$List$reverse(errors)));
1487−
1488− case 1:
1489− return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, decoder.a, _Json_wrap(value)));
1490−
1491− case 0:
1492− return $elm$core$Result$Ok(decoder.a);
1493− }
1494−}
1495−
1496−function _Json_runArrayDecoder(decoder, value, toElmValue)
1497−{
1498− var len = value.length;
1499− var array = new Array(len);
1500− for (var i = 0; i < len; i++)
1501− {
1502− var result = _Json_runHelp(decoder, value[i]);
1503− if (!$elm$core$Result$isOk(result))
1504− {
1505− return $elm$core$Result$Err(A2($elm$json$Json$Decode$Index, i, result.a));
1506− }
1507− array[i] = result.a;
1508− }
1509− return $elm$core$Result$Ok(toElmValue(array));
1510−}
1511−
1512−function _Json_isArray(value)
1513−{
1514− return Array.isArray(value) || (typeof FileList !== 'undefined' && value instanceof FileList);
1515−}
1516−
1517−function _Json_toElmArray(array)
1518−{
1519− return A2($elm$core$Array$initialize, array.length, function(i) { return array[i]; });
1520−}
1521−
1522−function _Json_expecting(type, value)
1523−{
1524− return $elm$core$Result$Err(A2($elm$json$Json$Decode$Failure, 'Expecting ' + type, _Json_wrap(value)));
1525−}
1526−
1527−
1528−// EQUALITY
1529−
1530−function _Json_equality(x, y)
1531−{
1532− if (x === y)
1533− {
1534− return true;
1535− }
1536−
1537− if (x.$ !== y.$)
1538− {
1539− return false;
1540− }
1541−
1542− switch (x.$)
1543− {
1544− case 0:
1545− case 1:
1546− return x.a === y.a;
1547−
1548− case 2:
1549− return x.b === y.b;
1550−
1551− case 5:
1552− return x.c === y.c;
1553−
1554− case 3:
1555− case 4:
1556− case 8:
1557− return _Json_equality(x.b, y.b);
1558−
1559− case 6:
1560− return x.d === y.d && _Json_equality(x.b, y.b);
1561−
1562− case 7:
1563− return x.e === y.e && _Json_equality(x.b, y.b);
1564−
1565− case 9:
1566− return x.f === y.f && _Json_listEquality(x.g, y.g);
1567−
1568− case 10:
1569− return x.h === y.h && _Json_equality(x.b, y.b);
1570−
1571− case 11:
1572− return _Json_listEquality(x.g, y.g);
1573− }
1574−}
1575−
1576−function _Json_listEquality(aDecoders, bDecoders)
1577−{
1578− var len = aDecoders.length;
1579− if (len !== bDecoders.length)
1580− {
1581− return false;
1582− }
1583− for (var i = 0; i < len; i++)
1584− {
1585− if (!_Json_equality(aDecoders[i], bDecoders[i]))
1586− {
1587− return false;
1588− }
1589− }
1590− return true;
1591−}
1592−
1593−
1594−// ENCODE
1595−
1596−var _Json_encode = F2(function(indentLevel, value)
1597−{
1598− return JSON.stringify(_Json_unwrap(value), null, indentLevel) + '';
1599−});
1600−
1601−function _Json_wrap(value) { return { $: 0, a: value }; }
1602−function _Json_unwrap(value) { return value.a; }
1603−
1604−
1605−function _Json_emptyArray() { return []; }
1606−function _Json_emptyObject() { return {}; }
1607−
1608−var _Json_addField = F3(function(key, value, object)
1609−{
1610− var unwrapped = _Json_unwrap(value);
1611− if (!(key === 'toJSON' && typeof unwrapped === 'function'))
1612− {
1613− object[key] = unwrapped;
1614− }
1615− return object;
1616−});
1617−
1618−function _Json_addEntry(func)
1619−{
1620− return F2(function(entry, array)
1621− {
1622− array.push(_Json_unwrap(func(entry)));
1623− return array;
1624− });
1625−}
1626−
1627−var _Json_encodeNull = _Json_wrap(null);
1628−
1629−
1630−
1631−// TASKS
1632−
1633−function _Scheduler_succeed(value)
1634−{
1635− return {
1636− $: 0,
1637− a: value
1638− };
1639−}
1640−
1641−function _Scheduler_fail(error)
1642−{
1643− return {
1644− $: 1,
1645− a: error
1646− };
1647−}
1648−
1649−function _Scheduler_binding(callback)
1650−{
1651− return {
1652− $: 2,
1653− b: callback,
1654− c: null
1655− };
1656−}
1657−
1658−var _Scheduler_andThen = F2(function(callback, task)
1659−{
1660− return {
1661− $: 3,
1662− b: callback,
1663− d: task
1664− };
1665−});
1666−
1667−var _Scheduler_onError = F2(function(callback, task)
1668−{
1669− return {
1670− $: 4,
1671− b: callback,
1672− d: task
1673− };
1674−});
1675−
1676−function _Scheduler_receive(callback)
1677−{
1678− return {
1679− $: 5,
1680− b: callback
1681− };
1682−}
1683−
1684−
1685−// PROCESSES
1686−
1687−var _Scheduler_guid = 0;
1688−
1689−function _Scheduler_rawSpawn(task)
1690−{
1691− var proc = {
1692− $: 0,
1693− e: _Scheduler_guid++,
1694− f: task,
1695− g: null,
1696− h: []
1697− };
1698−
1699− _Scheduler_enqueue(proc);
1700−
1701− return proc;
1702−}
1703−
1704−function _Scheduler_spawn(task)
1705−{
1706− return _Scheduler_binding(function(callback) {
1707− callback(_Scheduler_succeed(_Scheduler_rawSpawn(task)));
1708− });
1709−}
1710−
1711−function _Scheduler_rawSend(proc, msg)
1712−{
1713− proc.h.push(msg);
1714− _Scheduler_enqueue(proc);
1715−}
1716−
1717−var _Scheduler_send = F2(function(proc, msg)
1718−{
1719− return _Scheduler_binding(function(callback) {
1720− _Scheduler_rawSend(proc, msg);
1721− callback(_Scheduler_succeed(_Utils_Tuple0));
1722− });
1723−});
1724−
1725−function _Scheduler_kill(proc)
1726−{
1727− return _Scheduler_binding(function(callback) {
1728− var task = proc.f;
1729− if (task.$ === 2 && task.c)
1730− {
1731− task.c();
1732− }
1733−
1734− proc.f = null;
1735−
1736− callback(_Scheduler_succeed(_Utils_Tuple0));
1737− });
1738−}
1739−
1740−
1741−/* STEP PROCESSES
1742−
1743−type alias Process =
1744− { $ : tag
1745− , id : unique_id
1746− , root : Task
1747− , stack : null | { $: SUCCEED | FAIL, a: callback, b: stack }
1748− , mailbox : [msg]
1749− }
1750−
1751−*/
1752−
1753−
1754−var _Scheduler_working = false;
1755−var _Scheduler_queue = [];
1756−
1757−
1758−function _Scheduler_enqueue(proc)
1759−{
1760− _Scheduler_queue.push(proc);
1761− if (_Scheduler_working)
1762− {
1763− return;
1764− }
1765− _Scheduler_working = true;
1766− while (proc = _Scheduler_queue.shift())
1767− {
1768− _Scheduler_step(proc);
1769− }
1770− _Scheduler_working = false;
1771−}
1772−
1773−
1774−function _Scheduler_step(proc)
1775−{
1776− while (proc.f)
1777− {
1778− var rootTag = proc.f.$;
1779− if (rootTag === 0 || rootTag === 1)
1780− {
1781− while (proc.g && proc.g.$ !== rootTag)
1782− {
1783− proc.g = proc.g.i;
1784− }
1785− if (!proc.g)
1786− {
1787− return;
1788− }
1789− proc.f = proc.g.b(proc.f.a);
1790− proc.g = proc.g.i;
1791− }
1792− else if (rootTag === 2)
1793− {
1794− proc.f.c = proc.f.b(function(newRoot) {
1795− proc.f = newRoot;
1796− _Scheduler_enqueue(proc);
1797− });
1798− return;
1799− }
1800− else if (rootTag === 5)
1801− {
1802− if (proc.h.length === 0)
1803− {
1804− return;
1805− }
1806− proc.f = proc.f.b(proc.h.shift());
1807− }
1808− else // if (rootTag === 3 || rootTag === 4)
1809− {
1810− proc.g = {
1811− $: rootTag === 3 ? 0 : 1,
1812− b: proc.f.b,
1813− i: proc.g
1814− };
1815− proc.f = proc.f.d;
1816− }
1817− }
1818−}
1819−
1820−
1821−
1822−function _Process_sleep(time)
1823−{
1824− return _Scheduler_binding(function(callback) {
1825− var id = setTimeout(function() {
1826− callback(_Scheduler_succeed(_Utils_Tuple0));
1827− }, time);
1828−
1829− return function() { clearTimeout(id); };
1830− });
1831−}
1832−
1833−
1834−
1835−
1836−// PROGRAMS
1837−
1838−
1839−var _Platform_worker = F4(function(impl, flagDecoder, debugMetadata, args)
1840−{
1841− return _Platform_initialize(
1842− flagDecoder,
1843− args,
1844− impl.init,
1845− impl.update,
1846− impl.subscriptions,
1847− function() { return function() {} }
1848− );
1849−});
1850−
1851−
1852−
1853−// INITIALIZE A PROGRAM
1854−
1855−
1856−function _Platform_initialize(flagDecoder, args, init, update, subscriptions, stepperBuilder)
1857−{
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) /**/);
1860− var managers = {};
1861− var initPair = init(result.a);
1862− var model = initPair.a;
1863− var stepper = stepperBuilder(sendToApp, model);
1864− var ports = _Platform_setupEffects(managers, sendToApp);
1865−
1866− function sendToApp(msg, viewMetadata)
1867− {
1868− var pair = A2(update, msg, model);
1869− stepper(model = pair.a, viewMetadata);
1870− _Platform_enqueueEffects(managers, pair.b, subscriptions(model));
1871− }
1872−
1873− _Platform_enqueueEffects(managers, initPair.b, subscriptions(model));
1874−
1875− return ports ? { ports: ports } : {};
1876−}
1877−
1878−
1879−
1880−// TRACK PRELOADS
1881−//
1882−// This is used by code in elm/browser and elm/http
1883−// to register any HTTP requests that are triggered by init.
1884−//
1885−
1886−
1887−var _Platform_preload;
1888−
1889−
1890−function _Platform_registerPreload(url)
1891−{
1892− _Platform_preload.add(url);
1893−}
1894−
1895−
1896−
1897−// EFFECT MANAGERS
1898−
1899−
1900−var _Platform_effectManagers = {};
1901−
1902−
1903−function _Platform_setupEffects(managers, sendToApp)
1904−{
1905− var ports;
1906−
1907− // setup all necessary effect managers
1908− for (var key in _Platform_effectManagers)
1909− {
1910− var manager = _Platform_effectManagers[key];
1911−
1912− if (manager.a)
1913− {
1914− ports = ports || {};
1915− ports[key] = manager.a(key, sendToApp);
1916− }
1917−
1918− managers[key] = _Platform_instantiateManager(manager, sendToApp);
1919− }
1920−
1921− return ports;
1922−}
1923−
1924−
1925−function _Platform_createManager(init, onEffects, onSelfMsg, cmdMap, subMap)
1926−{
1927− return {
1928− b: init,
1929− c: onEffects,
1930− d: onSelfMsg,
1931− e: cmdMap,
1932− f: subMap
1933− };
1934−}
1935−
1936−
1937−function _Platform_instantiateManager(info, sendToApp)
1938−{
1939− var router = {
1940− g: sendToApp,
1941− h: undefined
1942− };
1943−
1944− var onEffects = info.c;
1945− var onSelfMsg = info.d;
1946− var cmdMap = info.e;
1947− var subMap = info.f;
1948−
1949− function loop(state)
1950− {
1951− return A2(_Scheduler_andThen, loop, _Scheduler_receive(function(msg)
1952− {
1953− var value = msg.a;
1954−
1955− if (msg.$ === 0)
1956− {
1957− return A3(onSelfMsg, router, value, state);
1958− }
1959−
1960− return cmdMap && subMap
1961− ? A4(onEffects, router, value.i, value.j, state)
1962− : A3(onEffects, router, cmdMap ? value.i : value.j, state);
1963− }));
1964− }
1965−
1966− return router.h = _Scheduler_rawSpawn(A2(_Scheduler_andThen, loop, info.b));
1967−}
1968−
1969−
1970−
1971−// ROUTING
1972−
1973−
1974−var _Platform_sendToApp = F2(function(router, msg)
1975−{
1976− return _Scheduler_binding(function(callback)
1977− {
1978− router.g(msg);
1979− callback(_Scheduler_succeed(_Utils_Tuple0));
1980− });
1981−});
1982−
1983−
1984−var _Platform_sendToSelf = F2(function(router, msg)
1985−{
1986− return A2(_Scheduler_send, router.h, {
1987− $: 0,
1988− a: msg
1989− });
1990−});
1991−
1992−
1993−
1994−// BAGS
1995−
1996−
1997−function _Platform_leaf(home)
1998−{
1999− return function(value)
2000− {
2001− return {
2002− $: 1,
2003− k: home,
2004− l: value
2005− };
2006− };
2007−}
2008−
2009−
2010−function _Platform_batch(list)
2011−{
2012− return {
2013− $: 2,
2014− m: list
2015− };
2016−}
2017−
2018−
2019−var _Platform_map = F2(function(tagger, bag)
2020−{
2021− return {
2022− $: 3,
2023− n: tagger,
2024− o: bag
2025− }
2026−});
2027−
2028−
2029−
2030−// PIPE BAGS INTO EFFECT MANAGERS
2031−//
2032−// Effects must be queued!
2033−//
2034−// Say your init contains a synchronous command, like Time.now or Time.here
2035−//
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)
2039−//
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:
2043−//
2044−// https://github.com/elm/core/issues/980
2045−// https://github.com/elm/core/pull/981
2046−// https://github.com/elm/compiler/issues/1776
2047−//
2048−// The queue is necessary to avoid ordering issues for synchronous commands.
2049−
2050−
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.
2054−//
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.
2058−//
2059−var _Platform_effectsQueue = [];
2060−var _Platform_effectsActive = false;
2061−
2062−
2063−function _Platform_enqueueEffects(managers, cmdBag, subBag)
2064−{
2065− _Platform_effectsQueue.push({ p: managers, q: cmdBag, r: subBag });
2066−
2067− if (_Platform_effectsActive) return;
2068−
2069− _Platform_effectsActive = true;
2070− for (var fx; fx = _Platform_effectsQueue.shift(); )
2071− {
2072− _Platform_dispatchEffects(fx.p, fx.q, fx.r);
2073− }
2074− _Platform_effectsActive = false;
2075−}
2076−
2077−
2078−function _Platform_dispatchEffects(managers, cmdBag, subBag)
2079−{
2080− var effectsDict = {};
2081− _Platform_gatherEffects(true, cmdBag, effectsDict, null);
2082− _Platform_gatherEffects(false, subBag, effectsDict, null);
2083−
2084− for (var home in managers)
2085− {
2086− _Scheduler_rawSend(managers[home], {
2087− $: 'fx',
2088− a: effectsDict[home] || { i: _List_Nil, j: _List_Nil }
2089− });
2090− }
2091−}
2092−
2093−
2094−function _Platform_gatherEffects(isCmd, bag, effectsDict, taggers)
2095−{
2096− switch (bag.$)
2097− {
2098− case 1:
2099− var home = bag.k;
2100− var effect = _Platform_toEffect(isCmd, home, taggers, bag.l);
2101− effectsDict[home] = _Platform_insert(isCmd, effect, effectsDict[home]);
2102− return;
2103−
2104− case 2:
2105− for (var list = bag.m; list.b; list = list.b) // WHILE_CONS
2106− {
2107− _Platform_gatherEffects(isCmd, list.a, effectsDict, taggers);
2108− }
2109− return;
2110−
2111− case 3:
2112− _Platform_gatherEffects(isCmd, bag.o, effectsDict, {
2113− s: bag.n,
2114− t: taggers
2115− });
2116− return;
2117− }
2118−}
2119−
2120−
2121−function _Platform_toEffect(isCmd, home, taggers, value)
2122−{
2123− function applyTaggers(x)
2124− {
2125− for (var temp = taggers; temp; temp = temp.t)
2126− {
2127− x = temp.s(x);
2128− }
2129− return x;
2130− }
2131−
2132− var map = isCmd
2133− ? _Platform_effectManagers[home].e
2134− : _Platform_effectManagers[home].f;
2135−
2136− return A2(map, applyTaggers, value)
2137−}
2138−
2139−
2140−function _Platform_insert(isCmd, newEffect, effects)
2141−{
2142− effects = effects || { i: _List_Nil, j: _List_Nil };
2143−
2144− isCmd
2145− ? (effects.i = _List_Cons(newEffect, effects.i))
2146− : (effects.j = _List_Cons(newEffect, effects.j));
2147−
2148− return effects;
2149−}
2150−
2151−
2152−
2153−// PORTS
2154−
2155−
2156−function _Platform_checkPortName(name)
2157−{
2158− if (_Platform_effectManagers[name])
2159− {
2160− _Debug_crash(3, name)
2161− }
2162−}
2163−
2164−
2165−
2166−// OUTGOING PORTS
2167−
2168−
2169−function _Platform_outgoingPort(name, converter)
2170−{
2171− _Platform_checkPortName(name);
2172− _Platform_effectManagers[name] = {
2173− e: _Platform_outgoingPortMap,
2174− u: converter,
2175− a: _Platform_setupOutgoingPort
2176− };
2177− return _Platform_leaf(name);
2178−}
2179−
2180−
2181−var _Platform_outgoingPortMap = F2(function(tagger, value) { return value; });
2182−
2183−
2184−function _Platform_setupOutgoingPort(name)
2185−{
2186− var subs = [];
2187− var converter = _Platform_effectManagers[name].u;
2188−
2189− // CREATE MANAGER
2190−
2191− var init = _Process_sleep(0);
2192−
2193− _Platform_effectManagers[name].b = init;
2194− _Platform_effectManagers[name].c = F3(function(router, cmdList, state)
2195− {
2196− for ( ; cmdList.b; cmdList = cmdList.b) // WHILE_CONS
2197− {
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++)
2202− {
2203− currentSubs[i](value);
2204− }
2205− }
2206− return init;
2207− });
2208−
2209− // PUBLIC API
2210−
2211− function subscribe(callback)
2212− {
2213− subs.push(callback);
2214− }
2215−
2216− function unsubscribe(callback)
2217− {
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);
2222− if (index >= 0)
2223− {
2224− subs.splice(index, 1);
2225− }
2226− }
2227−
2228− return {
2229− subscribe: subscribe,
2230− unsubscribe: unsubscribe
2231− };
2232−}
2233−
2234−
2235−
2236−// INCOMING PORTS
2237−
2238−
2239−function _Platform_incomingPort(name, converter)
2240−{
2241− _Platform_checkPortName(name);
2242− _Platform_effectManagers[name] = {
2243− f: _Platform_incomingPortMap,
2244− u: converter,
2245− a: _Platform_setupIncomingPort
2246− };
2247− return _Platform_leaf(name);
2248−}
2249−
2250−
2251−var _Platform_incomingPortMap = F2(function(tagger, finalTagger)
2252−{
2253− return function(value)
2254− {
2255− return tagger(finalTagger(value));
2256− };
2257−});
2258−
2259−
2260−function _Platform_setupIncomingPort(name, sendToApp)
2261−{
2262− var subs = _List_Nil;
2263− var converter = _Platform_effectManagers[name].u;
2264−
2265− // CREATE MANAGER
2266−
2267− var init = _Scheduler_succeed(null);
2268−
2269− _Platform_effectManagers[name].b = init;
2270− _Platform_effectManagers[name].c = F3(function(router, subList, state)
2271− {
2272− subs = subList;
2273− return init;
2274− });
2275−
2276− // PUBLIC API
2277−
2278− function send(incomingValue)
2279− {
2280− var result = A2(_Json_run, converter, _Json_wrap(incomingValue));
2281−
2282− $elm$core$Result$isOk(result) || _Debug_crash(4, name, result.a);
2283−
2284− var value = result.a;
2285− for (var temp = subs; temp.b; temp = temp.b) // WHILE_CONS
2286− {
2287− sendToApp(temp.a(value));
2288− }
2289− }
2290−
2291− return { send: send };
2292−}
2293−
2294−
2295−
2296−// EXPORT ELM MODULES
2297−//
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.
2300−//
2301−
2302−
2303−
2304−
2305−function _Platform_mergeExportsProd(obj, exports)
2306−{
2307− for (var name in exports)
2308− {
2309− (name in obj)
2310− ? (name == 'init')
2311− ? _Debug_crash(6)
2312− : _Platform_mergeExportsProd(obj[name], exports[name])
2313− : (obj[name] = exports[name]);
2314− }
2315−}
2316−
2317−
2318−function _Platform_export(exports)
2319−{
2320− scope['Elm']
2321− ? _Platform_mergeExportsDebug('Elm', scope['Elm'], exports)
2322− : scope['Elm'] = exports;
2323−}
2324−
2325−
2326−function _Platform_mergeExportsDebug(moduleName, obj, exports)
2327−{
2328− for (var name in exports)
2329− {
2330− (name in obj)
2331− ? (name == 'init')
2332− ? _Debug_crash(6, moduleName)
2333− : _Platform_mergeExportsDebug(moduleName + '.' + name, obj[name], exports[name])
2334− : (obj[name] = exports[name]);
2335− }
2336−}
2337−
2338−
2339−
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);
2350−}
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); }
2365− return meta;
2366−}
2367−
2368−
2369−// HELPERS
2370−
2371−
2372−
2373−
2374−
2375−function _VirtualDom_appendChild(parent, child)
2376−{
2377− _Lynx_appendChild(parent, child);
2378−}
2379−
2380−var _VirtualDom_init = F4(function(virtualNode, flagDecoder, debugMetadata, args)
2381−{
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);
2386− return {};
2387−});
2388−
2389−
2390−
2391−// TEXT
2392−
2393−
2394−function _VirtualDom_text(string)
2395−{
2396− return {
2397− $: 0,
2398− a: string
2399− };
2400−}
2401−
2402−
2403−
2404−// NODE
2405−
2406−
2407−var _VirtualDom_nodeNS = F2(function(namespace, tag)
2408−{
2409− return F2(function(factList, kidList)
2410− {
2411− for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS
2412− {
2413− var kid = kidList.a;
2414− descendantsCount += (kid.b || 0);
2415− kids.push(kid);
2416− }
2417− descendantsCount += kids.length;
2418−
2419− return {
2420− $: 1,
2421− c: tag,
2422− d: _VirtualDom_organizeFacts(factList),
2423− e: kids,
2424− f: namespace,
2425− b: descendantsCount
2426− };
2427− });
2428−});
2429−
2430−
2431−var _VirtualDom_node = _VirtualDom_nodeNS(undefined);
2432−
2433−
2434−
2435−// KEYED NODE
2436−
2437−
2438−var _VirtualDom_keyedNodeNS = F2(function(namespace, tag)
2439−{
2440− return F2(function(factList, kidList)
2441− {
2442− for (var kids = [], descendantsCount = 0; kidList.b; kidList = kidList.b) // WHILE_CONS
2443− {
2444− var kid = kidList.a;
2445− descendantsCount += (kid.b.b || 0);
2446− kids.push(kid);
2447− }
2448− descendantsCount += kids.length;
2449−
2450− return {
2451− $: 2,
2452− c: tag,
2453− d: _VirtualDom_organizeFacts(factList),
2454− e: kids,
2455− f: namespace,
2456− b: descendantsCount
2457− };
2458− });
2459−});
2460−
2461−
2462−var _VirtualDom_keyedNode = _VirtualDom_keyedNodeNS(undefined);
2463−
2464−
2465−
2466−// CUSTOM
2467−
2468−
2469−function _VirtualDom_custom(factList, model, render, diff)
2470−{
2471− return {
2472− $: 3,
2473− d: _VirtualDom_organizeFacts(factList),
2474− g: model,
2475− h: render,
2476− i: diff
2477− };
2478−}
2479−
2480−
2481−
2482−// MAP
2483−
2484−
2485−var _VirtualDom_map = F2(function(tagger, node)
2486−{
2487− return {
2488− $: 4,
2489− j: tagger,
2490− k: node,
2491− b: 1 + (node.b || 0)
2492− };
2493−});
2494−
2495−
2496−
2497−// LAZY
2498−
2499−
2500−function _VirtualDom_thunk(refs, thunk)
2501−{
2502− return {
2503− $: 5,
2504− l: refs,
2505− m: thunk,
2506− k: undefined
2507− };
2508−}
2509−
2510−var _VirtualDom_lazy = F2(function(func, a)
2511−{
2512− return _VirtualDom_thunk([func, a], function() {
2513− return func(a);
2514− });
2515−});
2516−
2517−var _VirtualDom_lazy2 = F3(function(func, a, b)
2518−{
2519− return _VirtualDom_thunk([func, a, b], function() {
2520− return A2(func, a, b);
2521− });
2522−});
2523−
2524−var _VirtualDom_lazy3 = F4(function(func, a, b, c)
2525−{
2526− return _VirtualDom_thunk([func, a, b, c], function() {
2527− return A3(func, a, b, c);
2528− });
2529−});
2530−
2531−var _VirtualDom_lazy4 = F5(function(func, a, b, c, d)
2532−{
2533− return _VirtualDom_thunk([func, a, b, c, d], function() {
2534− return A4(func, a, b, c, d);
2535− });
2536−});
2537−
2538−var _VirtualDom_lazy5 = F6(function(func, a, b, c, d, e)
2539−{
2540− return _VirtualDom_thunk([func, a, b, c, d, e], function() {
2541− return A5(func, a, b, c, d, e);
2542− });
2543−});
2544−
2545−var _VirtualDom_lazy6 = F7(function(func, a, b, c, d, e, f)
2546−{
2547− return _VirtualDom_thunk([func, a, b, c, d, e, f], function() {
2548− return A6(func, a, b, c, d, e, f);
2549− });
2550−});
2551−
2552−var _VirtualDom_lazy7 = F8(function(func, a, b, c, d, e, f, g)
2553−{
2554− return _VirtualDom_thunk([func, a, b, c, d, e, f, g], function() {
2555− return A7(func, a, b, c, d, e, f, g);
2556− });
2557−});
2558−
2559−var _VirtualDom_lazy8 = F9(function(func, a, b, c, d, e, f, g, h)
2560−{
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);
2563− });
2564−});
2565−
2566−
2567−
2568−// FACTS
2569−
2570−
2571−var _VirtualDom_on = F2(function(key, handler)
2572−{
2573− return {
2574− $: 'a0',
2575− n: key,
2576− o: handler
2577− };
2578−});
2579−var _VirtualDom_style = F2(function(key, value)
2580−{
2581− return {
2582− $: 'a1',
2583− n: key,
2584− o: value
2585− };
2586−});
2587−var _VirtualDom_property = F2(function(key, value)
2588−{
2589− return {
2590− $: 'a2',
2591− n: key,
2592− o: value
2593− };
2594−});
2595−var _VirtualDom_attribute = F2(function(key, value)
2596−{
2597− return {
2598− $: 'a3',
2599− n: key,
2600− o: value
2601− };
2602−});
2603−var _VirtualDom_attributeNS = F3(function(namespace, key, value)
2604−{
2605− return {
2606− $: 'a4',
2607− n: key,
2608− o: { f: namespace, o: value }
2609− };
2610−});
2611−
2612−
2613−
2614−// XSS ATTACK VECTOR CHECKS
2615−//
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
2619−// so freaky.
2620−//
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.
2626−
2627−
2628−
2629−
2630−
2631−function _VirtualDom_noScript(tag)
2632−{
2633− return tag;
2634−}
2635−
2636−function _VirtualDom_noOnOrFormAction(key)
2637−{
2638− return key;
2639−}
2640−
2641−function _VirtualDom_noInnerHtmlOrFormAction(key)
2642−{
2643− return key;
2644−}
2645−
2646−function _VirtualDom_noJavaScriptUri(value)
2647−{
2648− return value;
2649−}
2650−
2651−function _VirtualDom_noJavaScriptOrHtmlUri(value)
2652−{
2653− return value;
2654−}
2655−
2656−function _VirtualDom_noJavaScriptOrHtmlJson(value)
2657−{
2658− return value;
2659−}
2660−
2661−
2662−
2663−// MAP FACTS
2664−
2665−
2666−var _VirtualDom_mapAttribute = F2(function(func, attr)
2667−{
2668− return (attr.$ === 'a0')
2669− ? A2(_VirtualDom_on, attr.n, _VirtualDom_mapHandler(func, attr.o))
2670− : attr;
2671−});
2672−
2673−function _VirtualDom_mapHandler(func, handler)
2674−{
2675− var tag = $lynxjs_elm$virtual_dom$VirtualDom$toHandlerInt(handler);
2676−
2677− // 0 = Normal
2678− // 1 = MayStopPropagation
2679− // 2 = MayPreventDefault
2680− // 3 = Custom
2681−
2682− return {
2683− $: handler.$,
2684− a:
2685− !tag
2686− ? A2($elm$json$Json$Decode$map, func, handler.a)
2687− :
2688− A3($elm$json$Json$Decode$map2,
2689− tag < 3
2690− ? _VirtualDom_mapEventTuple
2691− : _VirtualDom_mapEventRecord,
2692− $elm$json$Json$Decode$succeed(func),
2693− handler.a
2694− )
2695− };
2696−}
2697−
2698−var _VirtualDom_mapEventTuple = F2(function(func, tuple)
2699−{
2700− return _Utils_Tuple2(func(tuple.a), tuple.b);
2701−});
2702−
2703−var _VirtualDom_mapEventRecord = F2(function(func, record)
2704−{
2705− return {
2706− message: func(record.message),
2707− stopPropagation: record.stopPropagation,
2708− preventDefault: record.preventDefault
2709− }
2710−});
2711−
2712−
2713−
2714−// ORGANIZE FACTS
2715−
2716−
2717−function _VirtualDom_organizeFacts(factList)
2718−{
2719− for (var facts = {}; factList.b; factList = factList.b) // WHILE_CONS
2720− {
2721− var entry = factList.a;
2722−
2723− var tag = entry.$;
2724− var key = entry.n;
2725− var value = entry.o;
2726−
2727− if (tag === 'a2')
2728− {
2729− (key === 'className')
2730− ? _VirtualDom_addClass(facts, key, _Json_unwrap(value))
2731− : facts[key] = _Json_unwrap(value);
2732−
2733− continue;
2734− }
2735−
2736− var subFacts = facts[tag] || (facts[tag] = {});
2737− (tag === 'a3' && key === 'class')
2738− ? _VirtualDom_addClass(subFacts, key, value)
2739− : subFacts[key] = value;
2740− }
2741−
2742− return facts;
2743−}
2744−
2745−function _VirtualDom_addClass(object, key, newClass)
2746−{
2747− var classes = object[key];
2748− object[key] = classes ? classes + ' ' + newClass : newClass;
2749−}
2750−
2751−
2752−
2753−// RENDER
2754−
2755−
2756−function _VirtualDom_render(vNode, eventNode)
2757−{
2758− var tag = vNode.$;
2759−
2760− if (tag === 5)
2761− {
2762− return _VirtualDom_render(vNode.k || (vNode.k = vNode.m()), eventNode);
2763− }
2764−
2765− if (tag === 0)
2766− {
2767− return _Lynx_createRawText(vNode.a);
2768− }
2769−
2770− if (tag === 4)
2771− {
2772− var subNode = vNode.k;
2773− var tagger = vNode.j;
2774−
2775− while (subNode.$ === 4)
2776− {
2777− typeof tagger !== 'object'
2778− ? tagger = [tagger, subNode.j]
2779− : tagger.push(subNode.j);
2780−
2781− subNode = subNode.k;
2782− }
2783−
2784− var subEventRoot = { j: tagger, p: eventNode };
2785− var domNode = _VirtualDom_render(subNode, subEventRoot);
2786− _VirtualDom_getMeta(domNode).elm_event_node_ref = subEventRoot;
2787− return domNode;
2788− }
2789−
2790− if (tag === 3)
2791− {
2792− var domNode = vNode.h(vNode.g);
2793− _VirtualDom_applyFacts(domNode, eventNode, vNode.d);
2794− return domNode;
2795− }
2796−
2797− // at this point `tag` must be 1 or 2
2798−
2799− var domNode = _Lynx_createElement(vNode.c);
2800−
2801− _VirtualDom_applyFacts(domNode, eventNode, vNode.d);
2802−
2803− for (var kids = vNode.e, i = 0; i < kids.length; i++)
2804− {
2805− var kid = tag === 1 ? kids[i] : kids[i].b;
2806− if (kid.$ === 0)
2807− {
2808− _Lynx_appendChild(domNode, _Lynx_createRawText(kid.a));
2809− }
2810− else
2811− {
2812− _VirtualDom_appendChild(domNode, _VirtualDom_render(kid, eventNode));
2813− }
2814− }
2815−
2816− return domNode;
2817−}
2818−
2819−
2820−
2821−// APPLY FACTS
2822−
2823−
2824−function _VirtualDom_applyFacts(domNode, eventNode, facts)
2825−{
2826− for (var key in facts)
2827− {
2828− var value = facts[key];
2829−
2830− key === 'a1'
2831− ? _VirtualDom_applyStyles(domNode, value)
2832− :
2833− key === 'a0'
2834− ? _VirtualDom_applyEvents(domNode, eventNode, value)
2835− :
2836− key === 'a3'
2837− ? _VirtualDom_applyAttrs(domNode, value)
2838− :
2839− key === 'a4'
2840− ? _VirtualDom_applyAttrsNS(domNode, value)
2841− :
2842− (key !== 'value' && key !== 'checked' || domNode[key] !== value) && _Lynx_setAttribute(domNode, key === 'className' ? 'class' : key, String(value));
2843− }
2844−}
2845−
2846−
2847−
2848−// APPLY STYLES
2849−
2850−
2851−function _VirtualDom_applyStyles(domNode, styles)
2852−{
2853− _Lynx_setInlineStyles(domNode, styles);
2854−}
2855−
2856−
2857−
2858−// APPLY ATTRS
2859−
2860−
2861−function _VirtualDom_applyAttrs(domNode, attrs)
2862−{
2863− for (var key in attrs)
2864− {
2865− var value = attrs[key];
2866− if (typeof value !== 'undefined')
2867− {
2868− _Lynx_setAttribute(domNode, key, value);
2869− }
2870− }
2871−}
2872−
2873−
2874−
2875−// APPLY NAMESPACED ATTRS
2876−
2877−
2878−function _VirtualDom_applyAttrsNS(domNode, nsAttrs)
2879−{
2880− for (var key in nsAttrs)
2881− {
2882− var pair = nsAttrs[key];
2883− var value = pair.o;
2884−
2885− if (typeof value !== 'undefined')
2886− {
2887− _Lynx_setAttribute(domNode, key, value);
2888− }
2889− }
2890−}
2891−
2892−
2893−
2894−// APPLY EVENTS
2895−
2896−
2897−function _VirtualDom_applyEvents(domNode, eventNode, events)
2898−{
2899− var meta = _VirtualDom_getMeta(domNode);
2900− var allCallbacks = meta.elmFs || (meta.elmFs = {});
2901−
2902− for (var key in events)
2903− {
2904− var newHandler = events[key];
2905− var oldCallback = allCallbacks[key];
2906−
2907− if (!newHandler)
2908− {
2909− allCallbacks[key] = undefined;
2910− continue;
2911− }
2912−
2913− if (oldCallback)
2914− {
2915− var oldHandler = oldCallback.q;
2916− if (oldHandler.$ === newHandler.$)
2917− {
2918− oldCallback.q = newHandler;
2919− continue;
2920− }
2921− }
2922−
2923− oldCallback = _VirtualDom_makeCallback(eventNode, newHandler);
2924− allCallbacks[key] = oldCallback;
2925−
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 });
2930− }
2931−}
2932−
2933−function _VirtualDom_mapEventName(name)
2934−{
2935− switch (name)
2936− {
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;
2943− }
2944−}
2945−
2946−
2947−
2948−// PASSIVE EVENTS
2949−
2950−
2951−
2952−// EVENT HANDLERS
2953−
2954−
2955−function _VirtualDom_makeCallback(eventNode, initialHandler)
2956−{
2957− function callback(event)
2958− {
2959− var handler = callback.q;
2960− var result = _Json_runHelp(handler.a, event);
2961−
2962− if (!$elm$core$Result$isOk(result))
2963− {
2964− return;
2965− }
2966−
2967− var tag = $lynxjs_elm$virtual_dom$VirtualDom$toHandlerInt(handler);
2968−
2969− // 0 = Normal
2970− // 1 = MayStopPropagation
2971− // 2 = MayPreventDefault
2972− // 3 = Custom
2973−
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;
2978− var tagger;
2979− var i;
2980− while (tagger = currentEventNode.j)
2981− {
2982− if (typeof tagger == 'function')
2983− {
2984− message = tagger(message);
2985− }
2986− else
2987− {
2988− for (var i = tagger.length; i--; )
2989− {
2990− message = tagger[i](message);
2991− }
2992− }
2993− currentEventNode = currentEventNode.p;
2994− }
2995− currentEventNode(message, stopPropagation); // stopPropagation implies isSync
2996− }
2997−
2998− callback.q = initialHandler;
2999−
3000− return callback;
3001−}
3002−
3003−function _VirtualDom_equalEvents(x, y)
3004−{
3005− return x.$ == y.$ && _Json_equality(x.a, y.a);
3006−}
3007−
3008−
3009−
3010−// DIFF
3011−
3012−
3013−// TODO: Should we do patches like in iOS?
3014−//
3015−// type Patch
3016−// = At Int Patch
3017−// | Batch (List Patch)
3018−// | Change ...
3019−//
3020−// How could it not be better?
3021−//
3022−function _VirtualDom_diff(x, y)
3023−{
3024− var patches = [];
3025− _VirtualDom_diffHelp(x, y, patches, 0);
3026− return patches;
3027−}
3028−
3029−
3030−function _VirtualDom_pushPatch(patches, type, index, data)
3031−{
3032− var patch = {
3033− $: type,
3034− r: index,
3035− s: data,
3036− t: undefined,
3037− u: undefined
3038− };
3039− patches.push(patch);
3040− return patch;
3041−}
3042−
3043−
3044−function _VirtualDom_diffHelp(x, y, patches, index)
3045−{
3046− if (x === y)
3047− {
3048− return;
3049− }
3050−
3051− var xType = x.$;
3052− var yType = y.$;
3053−
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)
3057− {
3058− if (xType === 1 && yType === 2)
3059− {
3060− y = _VirtualDom_dekey(y);
3061− yType = 1;
3062− }
3063− else
3064− {
3065− _VirtualDom_pushPatch(patches, 0, index, y);
3066− return;
3067− }
3068− }
3069−
3070− // Now we know that both nodes are the same $.
3071− switch (yType)
3072− {
3073− case 5:
3074− var xRefs = x.l;
3075− var yRefs = y.l;
3076− var i = xRefs.length;
3077− var same = i === yRefs.length;
3078− while (same && i--)
3079− {
3080− same = xRefs[i] === yRefs[i];
3081− }
3082− if (same)
3083− {
3084− y.k = x.k;
3085− return;
3086− }
3087− y.k = y.m();
3088− var subPatches = [];
3089− _VirtualDom_diffHelp(x.k, y.k, subPatches, 0);
3090− subPatches.length > 0 && _VirtualDom_pushPatch(patches, 1, index, subPatches);
3091− return;
3092−
3093− case 4:
3094− // gather nested taggers
3095− var xTaggers = x.j;
3096− var yTaggers = y.j;
3097− var nesting = false;
3098−
3099− var xSubNode = x.k;
3100− while (xSubNode.$ === 4)
3101− {
3102− nesting = true;
3103−
3104− typeof xTaggers !== 'object'
3105− ? xTaggers = [xTaggers, xSubNode.j]
3106− : xTaggers.push(xSubNode.j);
3107−
3108− xSubNode = xSubNode.k;
3109− }
3110−
3111− var ySubNode = y.k;
3112− while (ySubNode.$ === 4)
3113− {
3114− nesting = true;
3115−
3116− typeof yTaggers !== 'object'
3117− ? yTaggers = [yTaggers, ySubNode.j]
3118− : yTaggers.push(ySubNode.j);
3119−
3120− ySubNode = ySubNode.k;
3121− }
3122−
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)
3126− {
3127− _VirtualDom_pushPatch(patches, 0, index, y);
3128− return;
3129− }
3130−
3131− // check if taggers are "the same"
3132− if (nesting ? !_VirtualDom_pairwiseRefEqual(xTaggers, yTaggers) : xTaggers !== yTaggers)
3133− {
3134− _VirtualDom_pushPatch(patches, 2, index, yTaggers);
3135− }
3136−
3137− // diff everything below the taggers
3138− _VirtualDom_diffHelp(xSubNode, ySubNode, patches, index + 1);
3139− return;
3140−
3141− case 0:
3142− if (x.a !== y.a)
3143− {
3144− _VirtualDom_pushPatch(patches, 3, index, y.a);
3145− }
3146− return;
3147−
3148− case 1:
3149− _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKids);
3150− return;
3151−
3152− case 2:
3153− _VirtualDom_diffNodes(x, y, patches, index, _VirtualDom_diffKeyedKids);
3154− return;
3155−
3156− case 3:
3157− if (x.h !== y.h)
3158− {
3159− _VirtualDom_pushPatch(patches, 0, index, y);
3160− return;
3161− }
3162−
3163− var factsDiff = _VirtualDom_diffFacts(x.d, y.d);
3164− factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);
3165−
3166− var patch = y.i(x.g, y.g);
3167− patch && _VirtualDom_pushPatch(patches, 5, index, patch);
3168−
3169− return;
3170− }
3171−}
3172−
3173−// assumes the incoming arrays are the same length
3174−function _VirtualDom_pairwiseRefEqual(as, bs)
3175−{
3176− for (var i = 0; i < as.length; i++)
3177− {
3178− if (as[i] !== bs[i])
3179− {
3180− return false;
3181− }
3182− }
3183−
3184− return true;
3185−}
3186−
3187−function _VirtualDom_diffNodes(x, y, patches, index, diffKids)
3188−{
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)
3192− {
3193− _VirtualDom_pushPatch(patches, 0, index, y);
3194− return;
3195− }
3196−
3197− var factsDiff = _VirtualDom_diffFacts(x.d, y.d);
3198− factsDiff && _VirtualDom_pushPatch(patches, 4, index, factsDiff);
3199−
3200− diffKids(x, y, patches, index);
3201−}
3202−
3203−
3204−
3205−// DIFF FACTS
3206−
3207−
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)
3212−{
3213− var diff;
3214−
3215− // look for changes and removals
3216− for (var xKey in x)
3217− {
3218− if (xKey === 'a1' || xKey === 'a0' || xKey === 'a3' || xKey === 'a4')
3219− {
3220− var subDiff = _VirtualDom_diffFacts(x[xKey], y[xKey] || {}, xKey);
3221− if (subDiff)
3222− {
3223− diff = diff || {};
3224− diff[xKey] = subDiff;
3225− }
3226− continue;
3227− }
3228−
3229− // remove if not in the new facts
3230− if (!(xKey in y))
3231− {
3232− diff = diff || {};
3233− diff[xKey] =
3234− !category
3235− ? (typeof x[xKey] === 'string' ? '' : null)
3236− :
3237− (category === 'a1')
3238− ? ''
3239− :
3240− (category === 'a0' || category === 'a3')
3241− ? undefined
3242− :
3243− { f: x[xKey].f, o: undefined };
3244−
3245− continue;
3246− }
3247−
3248− var xValue = x[xKey];
3249− var yValue = y[xKey];
3250−
3251− // reference equal, so don't worry about it
3252− if (xValue === yValue && xKey !== 'value' && xKey !== 'checked'
3253− || category === 'a0' && _VirtualDom_equalEvents(xValue, yValue))
3254− {
3255− continue;
3256− }
3257−
3258− diff = diff || {};
3259− diff[xKey] = yValue;
3260− }
3261−
3262− // add new stuff
3263− for (var yKey in y)
3264− {
3265− if (!(yKey in x))
3266− {
3267− diff = diff || {};
3268− diff[yKey] = y[yKey];
3269− }
3270− }
3271−
3272− return diff;
3273−}
3274−
3275−
3276−
3277−// DIFF KIDS
3278−
3279−
3280−function _VirtualDom_diffKids(xParent, yParent, patches, index)
3281−{
3282− var xKids = xParent.e;
3283− var yKids = yParent.e;
3284−
3285− var xLen = xKids.length;
3286− var yLen = yKids.length;
3287−
3288− // FIGURE OUT IF THERE ARE INSERTS OR REMOVALS
3289−
3290− if (xLen > yLen)
3291− {
3292− _VirtualDom_pushPatch(patches, 6, index, {
3293− v: yLen,
3294− i: xLen - yLen
3295− });
3296− }
3297− else if (xLen < yLen)
3298− {
3299− _VirtualDom_pushPatch(patches, 7, index, {
3300− v: xLen,
3301− e: yKids
3302− });
3303− }
3304−
3305− // PAIRWISE DIFF EVERYTHING ELSE
3306−
3307− for (var minLen = xLen < yLen ? xLen : yLen, i = 0; i < minLen; i++)
3308− {
3309− var xKid = xKids[i];
3310− _VirtualDom_diffHelp(xKid, yKids[i], patches, ++index);
3311− index += xKid.b || 0;
3312− }
3313−}
3314−
3315−
3316−
3317−// KEYED DIFF
3318−
3319−
3320−function _VirtualDom_diffKeyedKids(xParent, yParent, patches, rootIndex)
3321−{
3322− var localPatches = [];
3323−
3324− var changes = {}; // Dict String Entry
3325− var inserts = []; // Array { index : Int, entry : Entry }
3326− // type Entry = { tag : String, vnode : VNode, index : Int, data : _ }
3327−
3328− var xKids = xParent.e;
3329− var yKids = yParent.e;
3330− var xLen = xKids.length;
3331− var yLen = yKids.length;
3332− var xIndex = 0;
3333− var yIndex = 0;
3334−
3335− var index = rootIndex;
3336−
3337− while (xIndex < xLen && yIndex < yLen)
3338− {
3339− var x = xKids[xIndex];
3340− var y = yKids[yIndex];
3341−
3342− var xKey = x.a;
3343− var yKey = y.a;
3344− var xNode = x.b;
3345− var yNode = y.b;
3346−
3347− var newMatch = undefined;
3348− var oldMatch = undefined;
3349−
3350− // check if keys match
3351−
3352− if (xKey === yKey)
3353− {
3354− index++;
3355− _VirtualDom_diffHelp(xNode, yNode, localPatches, index);
3356− index += xNode.b || 0;
3357−
3358− xIndex++;
3359− yIndex++;
3360− continue;
3361− }
3362−
3363− // look ahead 1 to detect insertions and removals.
3364−
3365− var xNext = xKids[xIndex + 1];
3366− var yNext = yKids[yIndex + 1];
3367−
3368− if (xNext)
3369− {
3370− var xNextKey = xNext.a;
3371− var xNextNode = xNext.b;
3372− oldMatch = yKey === xNextKey;
3373− }
3374−
3375− if (yNext)
3376− {
3377− var yNextKey = yNext.a;
3378− var yNextNode = yNext.b;
3379− newMatch = xKey === yNextKey;
3380− }
3381−
3382−
3383− // swap x and y
3384− if (newMatch && oldMatch)
3385− {
3386− index++;
3387− _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);
3388− _VirtualDom_insertNode(changes, localPatches, xKey, yNode, yIndex, inserts);
3389− index += xNode.b || 0;
3390−
3391− index++;
3392− _VirtualDom_removeNode(changes, localPatches, xKey, xNextNode, index);
3393− index += xNextNode.b || 0;
3394−
3395− xIndex += 2;
3396− yIndex += 2;
3397− continue;
3398− }
3399−
3400− // insert y
3401− if (newMatch)
3402− {
3403− index++;
3404− _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);
3405− _VirtualDom_diffHelp(xNode, yNextNode, localPatches, index);
3406− index += xNode.b || 0;
3407−
3408− xIndex += 1;
3409− yIndex += 2;
3410− continue;
3411− }
3412−
3413− // remove x
3414− if (oldMatch)
3415− {
3416− index++;
3417− _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);
3418− index += xNode.b || 0;
3419−
3420− index++;
3421− _VirtualDom_diffHelp(xNextNode, yNode, localPatches, index);
3422− index += xNextNode.b || 0;
3423−
3424− xIndex += 2;
3425− yIndex += 1;
3426− continue;
3427− }
3428−
3429− // remove x, insert y
3430− if (xNext && xNextKey === yNextKey)
3431− {
3432− index++;
3433− _VirtualDom_removeNode(changes, localPatches, xKey, xNode, index);
3434− _VirtualDom_insertNode(changes, localPatches, yKey, yNode, yIndex, inserts);
3435− index += xNode.b || 0;
3436−
3437− index++;
3438− _VirtualDom_diffHelp(xNextNode, yNextNode, localPatches, index);
3439− index += xNextNode.b || 0;
3440−
3441− xIndex += 2;
3442− yIndex += 2;
3443− continue;
3444− }
3445−
3446− break;
3447− }
3448−
3449− // eat up any remaining nodes with removeNode and insertNode
3450−
3451− while (xIndex < xLen)
3452− {
3453− index++;
3454− var x = xKids[xIndex];
3455− var xNode = x.b;
3456− _VirtualDom_removeNode(changes, localPatches, x.a, xNode, index);
3457− index += xNode.b || 0;
3458− xIndex++;
3459− }
3460−
3461− while (yIndex < yLen)
3462− {
3463− var endInserts = endInserts || [];
3464− var y = yKids[yIndex];
3465− _VirtualDom_insertNode(changes, localPatches, y.a, y.b, undefined, endInserts);
3466− yIndex++;
3467− }
3468−
3469− if (localPatches.length > 0 || inserts.length > 0 || endInserts)
3470− {
3471− _VirtualDom_pushPatch(patches, 8, rootIndex, {
3472− w: localPatches,
3473− x: inserts,
3474− y: endInserts
3475− });
3476− }
3477−}
3478−
3479−
3480−
3481−// CHANGES FROM KEYED DIFF
3482−
3483−
3484−var _VirtualDom_POSTFIX = '_elmW6BL';
3485−
3486−
3487−function _VirtualDom_insertNode(changes, localPatches, key, vnode, yIndex, inserts)
3488−{
3489− var entry = changes[key];
3490−
3491− // never seen this key before
3492− if (!entry)
3493− {
3494− entry = {
3495− c: 0,
3496− z: vnode,
3497− r: yIndex,
3498− s: undefined
3499− };
3500−
3501− inserts.push({ r: yIndex, A: entry });
3502− changes[key] = entry;
3503−
3504− return;
3505− }
3506−
3507− // this key was removed earlier, a match!
3508− if (entry.c === 1)
3509− {
3510− inserts.push({ r: yIndex, A: entry });
3511−
3512− entry.c = 2;
3513− var subPatches = [];
3514− _VirtualDom_diffHelp(entry.z, vnode, subPatches, entry.r);
3515− entry.r = yIndex;
3516− entry.s.s = {
3517− w: subPatches,
3518− A: entry
3519− };
3520−
3521− return;
3522− }
3523−
3524− // this key has already been inserted or moved, a duplicate!
3525− _VirtualDom_insertNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, yIndex, inserts);
3526−}
3527−
3528−
3529−function _VirtualDom_removeNode(changes, localPatches, key, vnode, index)
3530−{
3531− var entry = changes[key];
3532−
3533− // never seen this key before
3534− if (!entry)
3535− {
3536− var patch = _VirtualDom_pushPatch(localPatches, 9, index, undefined);
3537−
3538− changes[key] = {
3539− c: 1,
3540− z: vnode,
3541− r: index,
3542− s: patch
3543− };
3544−
3545− return;
3546− }
3547−
3548− // this key was inserted earlier, a match!
3549− if (entry.c === 0)
3550− {
3551− entry.c = 2;
3552− var subPatches = [];
3553− _VirtualDom_diffHelp(vnode, entry.z, subPatches, index);
3554−
3555− _VirtualDom_pushPatch(localPatches, 9, index, {
3556− w: subPatches,
3557− A: entry
3558− });
3559−
3560− return;
3561− }
3562−
3563− // this key has already been removed or moved, a duplicate!
3564− _VirtualDom_removeNode(changes, localPatches, key + _VirtualDom_POSTFIX, vnode, index);
3565−}
3566−
3567−
3568−
3569−// ADD DOM NODES
3570−//
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.
3575−
3576−
3577−function _VirtualDom_addDomNodes(domNode, vNode, patches, eventNode)
3578−{
3579− _VirtualDom_addDomNodesHelp(domNode, vNode, patches, 0, 0, vNode.b, eventNode);
3580−}
3581−
3582−
3583−// assumes `patches` is non-empty and indexes increase monotonically.
3584−function _VirtualDom_addDomNodesHelp(domNode, vNode, patches, i, low, high, eventNode)
3585−{
3586− var patch = patches[i];
3587− var index = patch.r;
3588−
3589− while (index === low)
3590− {
3591− var patchType = patch.$;
3592−
3593− if (patchType === 1)
3594− {
3595− _VirtualDom_addDomNodes(domNode, vNode.k, patch.s, eventNode);
3596− }
3597− else if (patchType === 8)
3598− {
3599− patch.t = domNode;
3600− patch.u = eventNode;
3601−
3602− var subPatches = patch.s.w;
3603− if (subPatches.length > 0)
3604− {
3605− _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);
3606− }
3607− }
3608− else if (patchType === 9)
3609− {
3610− patch.t = domNode;
3611− patch.u = eventNode;
3612−
3613− var data = patch.s;
3614− if (data)
3615− {
3616− data.A.s = domNode;
3617− var subPatches = data.w;
3618− if (subPatches.length > 0)
3619− {
3620− _VirtualDom_addDomNodesHelp(domNode, vNode, subPatches, 0, low, high, eventNode);
3621− }
3622− }
3623− }
3624− else
3625− {
3626− patch.t = domNode;
3627− patch.u = eventNode;
3628− }
3629−
3630− i++;
3631−
3632− if (!(patch = patches[i]) || (index = patch.r) > high)
3633− {
3634− return i;
3635− }
3636− }
3637−
3638− var tag = vNode.$;
3639−
3640− if (tag === 4)
3641− {
3642− var subNode = vNode.k;
3643−
3644− while (subNode.$ === 4)
3645− {
3646− subNode = subNode.k;
3647− }
3648−
3649− return _VirtualDom_addDomNodesHelp(domNode, subNode, patches, i, low + 1, high, _VirtualDom_getMeta(domNode).elm_event_node_ref);
3650− }
3651−
3652− // tag must be 1 or 2 at this point
3653−
3654− var vKids = vNode.e;
3655− var childNodes = _Lynx_getChildren(domNode);
3656− for (var j = 0; j < vKids.length; j++)
3657− {
3658− low++;
3659− var vKid = tag === 1 ? vKids[j] : vKids[j].b;
3660− var nextLow = low + (vKid.b || 0);
3661− if (low <= index && index <= nextLow)
3662− {
3663− i = _VirtualDom_addDomNodesHelp(childNodes[j], vKid, patches, i, low, nextLow, eventNode);
3664− if (!(patch = patches[i]) || (index = patch.r) > high)
3665− {
3666− return i;
3667− }
3668− }
3669− low = nextLow;
3670− }
3671− return i;
3672−}
3673−
3674−
3675−
3676−// APPLY PATCHES
3677−
3678−
3679−function _VirtualDom_applyPatches(rootDomNode, oldVirtualNode, patches, eventNode)
3680−{
3681− if (patches.length === 0)
3682− {
3683− return rootDomNode;
3684− }
3685−
3686− _VirtualDom_addDomNodes(rootDomNode, oldVirtualNode, patches, eventNode);
3687− return _VirtualDom_applyPatchesHelp(rootDomNode, patches);
3688−}
3689−
3690−function _VirtualDom_applyPatchesHelp(rootDomNode, patches)
3691−{
3692− for (var i = 0; i < patches.length; i++)
3693− {
3694− var patch = patches[i];
3695− var localDomNode = patch.t
3696− var newNode = _VirtualDom_applyPatch(localDomNode, patch);
3697− if (localDomNode === rootDomNode)
3698− {
3699− rootDomNode = newNode;
3700− }
3701− }
3702− return rootDomNode;
3703−}
3704−
3705−function _VirtualDom_applyPatch(domNode, patch)
3706−{
3707− switch (patch.$)
3708− {
3709− case 0:
3710− return _VirtualDom_applyPatchRedraw(domNode, patch.s, patch.u);
3711−
3712− case 4:
3713− _VirtualDom_applyFacts(domNode, patch.u, patch.s);
3714− return domNode;
3715−
3716− case 3:
3717− _Lynx_setAttribute(domNode, 'text', patch.s);
3718− return domNode;
3719−
3720− case 1:
3721− return _VirtualDom_applyPatchesHelp(domNode, patch.s);
3722−
3723− case 2:
3724− if (_VirtualDom_getMeta(domNode).elm_event_node_ref)
3725− {
3726− _VirtualDom_getMeta(domNode).elm_event_node_ref.j = patch.s;
3727− }
3728− else
3729− {
3730− _VirtualDom_getMeta(domNode).elm_event_node_ref = { j: patch.s, p: patch.u };
3731− }
3732− return domNode;
3733−
3734− case 6:
3735− var data = patch.s;
3736− for (var i = 0; i < data.i; i++)
3737− {
3738− var children = _Lynx_getChildren(domNode);
3739− _Lynx_removeElement(domNode, children[data.v]);
3740− }
3741− return domNode;
3742−
3743− case 7:
3744− var data = patch.s;
3745− var kids = data.e;
3746− for (var i = data.v; i < kids.length; i++)
3747− {
3748− _Lynx_appendChild(domNode, _VirtualDom_render(kids[i], patch.u));
3749− }
3750− return domNode;
3751−
3752− case 9:
3753− var data = patch.s;
3754− if (!data)
3755− {
3756− _Lynx_removeElement(_Lynx_getParent(domNode), domNode);
3757− return domNode;
3758− }
3759− var entry = data.A;
3760− if (typeof entry.r !== 'undefined')
3761− {
3762− _Lynx_removeElement(_Lynx_getParent(domNode), domNode);
3763− }
3764− entry.s = _VirtualDom_applyPatchesHelp(domNode, data.w);
3765− return domNode;
3766−
3767− case 8:
3768− return _VirtualDom_applyPatchReorder(domNode, patch);
3769−
3770− case 5:
3771− return patch.s(domNode);
3772−
3773− default:
3774− throw new Error('VirtualDom: unknown patch type');
3775− }
3776−}
3777−
3778−
3779−function _VirtualDom_applyPatchRedraw(domNode, vNode, eventNode)
3780−{
3781− var parentNode = _Lynx_getParent(domNode);
3782− var newNode = _VirtualDom_render(vNode, eventNode);
3783−
3784− if (!_VirtualDom_getMeta(newNode).elm_event_node_ref)
3785− {
3786− _VirtualDom_getMeta(newNode).elm_event_node_ref = _VirtualDom_getMeta(domNode).elm_event_node_ref;
3787− }
3788−
3789− if (parentNode && newNode !== domNode)
3790− {
3791− _Lynx_replaceElement(parentNode, newNode, domNode);
3792− }
3793− return newNode;
3794−}
3795−
3796−
3797−function _VirtualDom_applyPatchReorder(domNode, patch)
3798−{
3799− var data = patch.s;
3800−
3801− // remove end inserts
3802− var endInsertNodes = _VirtualDom_applyPatchReorderEndInsertsHelp(data.y, patch);
3803−
3804− // removals
3805− domNode = _VirtualDom_applyPatchesHelp(domNode, data.w);
3806−
3807− // inserts
3808− var inserts = data.x;
3809− for (var i = 0; i < inserts.length; i++)
3810− {
3811− var insert = inserts[i];
3812− var entry = insert.A;
3813− var node = entry.c === 2
3814− ? entry.s
3815− : _VirtualDom_render(entry.z, patch.u);
3816− var children = _Lynx_getChildren(domNode);
3817− _Lynx_insertBefore(domNode, node, children[insert.r]);
3818− }
3819−
3820− // add end inserts
3821− if (endInsertNodes)
3822− {
3823− for (var i = 0; i < endInsertNodes.length; i++)
3824− {
3825− _Lynx_appendChild(domNode, endInsertNodes[i]);
3826− }
3827− }
3828−
3829− return domNode;
3830−}
3831−
3832−
3833−function _VirtualDom_applyPatchReorderEndInsertsHelp(endInserts, patch)
3834−{
3835− if (!endInserts)
3836− {
3837− return;
3838− }
3839−
3840− var nodes = [];
3841− for (var i = 0; i < endInserts.length; i++)
3842− {
3843− var insert = endInserts[i];
3844− var entry = insert.A;
3845− nodes.push(entry.c === 2
3846− ? entry.s
3847− : _VirtualDom_render(entry.z, patch.u)
3848− );
3849− }
3850− return nodes;
3851−}
3852−
3853−
3854−function _VirtualDom_dekey(keyedNode)
3855−{
3856− var keyedKids = keyedNode.e;
3857− var len = keyedKids.length;
3858− var kids = new Array(len);
3859− for (var i = 0; i < len; i++)
3860− {
3861− kids[i] = keyedKids[i].b;
3862− }
3863−
3864− return {
3865− $: 1,
3866− c: keyedNode.c,
3867− d: keyedNode.d,
3868− e: kids,
3869− f: keyedNode.f,
3870− b: keyedNode.b
3871− };
3872−}
3873−
3874−
3875−
3876−// LYNXJS PAPI WRAPPERS
3877−var _Browser_lynx = (typeof globalThis !== 'undefined' ? globalThis : scope);
3878−function _Browser_newPage() {
3879− return _Browser_lynx['page'];
3880−}
3881−function _Browser_flush() {
3882− var fn = _Browser_lynx['_' + '_FlushElementTree'];
3883− if (typeof fn === 'function') { fn(); }
3884−}
3885−
3886−
3887−
3888−// ELEMENT
3889−
3890−
3891−var _Browser_element = F4(function(impl, flagDecoder, debugMetadata, args)
3892−{
3893− return _Platform_initialize(
3894− flagDecoder,
3895− args,
3896− impl.init,
3897− impl.update,
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);
3905− _Browser_flush();
3906−
3907− return _Browser_makeAnimator(initialModel, function(model)
3908− {
3909− var nextNode = view(model);
3910− var patches = _VirtualDom_diff(currNode, nextNode);
3911− currDomNode = _VirtualDom_applyPatches(currDomNode, currNode, patches, sendToApp);
3912− currNode = nextNode;
3913− _Browser_flush();
3914− });
3915− }
3916− );
3917−});
3918−
3919−
3920−
3921−// DOCUMENT
3922−
3923−
3924−var _Browser_document = F4(function(impl, flagDecoder, debugMetadata, args)
3925−{
3926− return _Platform_initialize(
3927− flagDecoder,
3928− args,
3929− impl.init,
3930− impl.update,
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);
3939− _Browser_flush();
3940−
3941− return _Browser_makeAnimator(initialModel, function(model)
3942− {
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;
3948− _Browser_flush();
3949− });
3950− }
3951− );
3952−});
3953−
3954−
3955−
3956−// ANIMATION
3957−
3958−
3959−var _Browser_cancelAnimationFrame =
3960− function(id) { clearTimeout(id); };
3961−
3962−var _Browser_requestAnimationFrame =
3963− function(callback) { return setTimeout(callback, 1000 / 60); };
3964−
3965−
3966−function _Browser_makeAnimator(model, draw)
3967−{
3968− draw(model);
3969−
3970− var state = 0;
3971−
3972− function updateIfNeeded()
3973− {
3974− state = state === 1
3975− ? 0
3976− : ( _Browser_requestAnimationFrame(updateIfNeeded), draw(model), 1 );
3977− }
3978−
3979− return function(nextModel, isSync)
3980− {
3981− model = nextModel;
3982−
3983− isSync
3984− ? ( draw(model),
3985− state === 2 && (state = 1)
3986− )
3987− : ( state === 0 && _Browser_requestAnimationFrame(updateIfNeeded),
3988− state = 2
3989− );
3990− };
3991−}
3992−
3993−
3994−
3995−// APPLICATION
3996−
3997−
3998−function _Browser_application(impl)
3999−{
4000− return _Browser_document({
4001− init: function(flags)
4002− {
4003− return A3(impl.init, flags, _Browser_fakeUrl(), {});
4004− },
4005− view: impl.view,
4006− update: impl.update,
4007− subscriptions: impl.subscriptions
4008− });
4009−}
4010−
4011−function _Browser_fakeUrl()
4012−{
4013− return {
4014− protocol: { $: 0 },
4015− host: 'localhost',
4016− port_: { $: 1 },
4017− path: '/',
4018− query: { $: 1 },
4019− fragment: { $: 1 }
4020− };
4021−}
4022−
4023−
4024−
4025−var _Browser_go = F2(function(key, n)
4026−{
4027− return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {
4028− // no-op in LynxJS
4029− key();
4030− }));
4031−});
4032−
4033−var _Browser_pushUrl = F2(function(key, url)
4034−{
4035− return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {
4036− // no-op in LynxJS
4037− key();
4038− }));
4039−});
4040−
4041−var _Browser_replaceUrl = F2(function(key, url)
4042−{
4043− return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function() {
4044− // no-op in LynxJS
4045− key();
4046− }));
4047−});
4048−
4049−
4050−
4051−// GLOBAL EVENTS
4052−
4053−
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;
4057−
4058−var _Browser_on = F3(function(node, eventName, sendToSelf)
4059−{
4060− return _Scheduler_spawn(_Scheduler_binding(function(callback)
4061− {
4062− return function() {};
4063− }));
4064−});
4065−
4066−var _Browser_decodeEvent = F2(function(decoder, event)
4067−{
4068− var result = _Json_runHelp(decoder, event);
4069− return $elm$core$Result$isOk(result) ? $elm$core$Maybe$Just(result.a) : $elm$core$Maybe$Nothing;
4070−});
4071−
4072−
4073−
4074−// PAGE VISIBILITY
4075−
4076−
4077−function _Browser_visibilityInfo()
4078−{
4079− return (typeof _VirtualDom_doc.hidden !== 'undefined')
4080− ? { hidden: 'hidden', change: 'visibilitychange' }
4081− :
4082− (typeof _VirtualDom_doc.mozHidden !== 'undefined')
4083− ? { hidden: 'mozHidden', change: 'mozvisibilitychange' }
4084− :
4085− (typeof _VirtualDom_doc.msHidden !== 'undefined')
4086− ? { hidden: 'msHidden', change: 'msvisibilitychange' }
4087− :
4088− (typeof _VirtualDom_doc.webkitHidden !== 'undefined')
4089− ? { hidden: 'webkitHidden', change: 'webkitvisibilitychange' }
4090− : { hidden: 'hidden', change: 'visibilitychange' };
4091−}
4092−
4093−
4094−
4095−// ANIMATION FRAMES
4096−
4097−
4098−function _Browser_rAF()
4099−{
4100− return _Scheduler_binding(function(callback)
4101− {
4102− var id = _Browser_requestAnimationFrame(function() {
4103− callback(_Scheduler_succeed(Date.now()));
4104− });
4105−
4106− return function() {
4107− _Browser_cancelAnimationFrame(id);
4108− };
4109− });
4110−}
4111−
4112−
4113−function _Browser_now()
4114−{
4115− return _Scheduler_binding(function(callback)
4116− {
4117− callback(_Scheduler_succeed(Date.now()));
4118− });
4119−}
4120−
4121−
4122−
4123−// DOM STUFF
4124−
4125−
4126−function _Browser_withNode(id, doStuff)
4127−{
4128− return _Scheduler_binding(function(callback)
4129− {
4130− callback(_Scheduler_fail($lynxjs_elm$browser$Browser$Dom$NotFound(id)));
4131− });
4132−}
4133−
4134−
4135−function _Browser_withWindow(doStuff)
4136−{
4137− return _Scheduler_binding(function(callback)
4138− {
4139− _Browser_requestAnimationFrame(function() {
4140− callback(_Scheduler_succeed(doStuff()));
4141− });
4142− });
4143−}
4144−
4145−
4146−// FOCUS and BLUR
4147−
4148−
4149−var _Browser_call = F2(function(functionName, id)
4150−{
4151− return _Browser_withNode(id, function(node) {
4152− node[functionName]();
4153− return _Utils_Tuple0;
4154− });
4155−});
4156−
4157−
4158−
4159−// WINDOW VIEWPORT
4160−
4161−
4162−function _Browser_getViewport()
4163−{
4164− return {
4165− scene: _Browser_getScene(),
4166− viewport: {
4167− x: _Browser_window.pageXOffset,
4168− y: _Browser_window.pageYOffset,
4169− width: _Browser_doc.documentElement.clientWidth,
4170− height: _Browser_doc.documentElement.clientHeight
4171− }
4172− };
4173−}
4174−
4175−function _Browser_getScene()
4176−{
4177− var body = _Browser_doc.body;
4178− var elem = _Browser_doc.documentElement;
4179− return {
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)
4182− };
4183−}
4184−
4185−var _Browser_setViewport = F2(function(x, y)
4186−{
4187− return _Browser_withWindow(function()
4188− {
4189− _Browser_window.scroll(x, y);
4190− return _Utils_Tuple0;
4191− });
4192−});
4193−
4194−
4195−
4196−// ELEMENT VIEWPORT
4197−
4198−
4199−function _Browser_getViewportOf(id)
4200−{
4201− return _Browser_withNode(id, function(node)
4202− {
4203− return {
4204− scene: {
4205− width: node.scrollWidth,
4206− height: node.scrollHeight
4207− },
4208− viewport: {
4209− x: node.scrollLeft,
4210− y: node.scrollTop,
4211− width: node.clientWidth,
4212− height: node.clientHeight
4213− }
4214− };
4215− });
4216−}
4217−
4218−
4219−var _Browser_setViewportOf = F3(function(id, x, y)
4220−{
4221− return _Browser_withNode(id, function(node)
4222− {
4223− node.scrollLeft = x;
4224− node.scrollTop = y;
4225− return _Utils_Tuple0;
4226− });
4227−});
4228−
4229−
4230−
4231−// ELEMENT
4232−
4233−
4234−function _Browser_getElement(id)
4235−{
4236− return _Browser_withNode(id, function(node)
4237− {
4238− var rect = node.getBoundingClientRect();
4239− var x = _Browser_window.pageXOffset;
4240− var y = _Browser_window.pageYOffset;
4241− return {
4242− scene: _Browser_getScene(),
4243− viewport: {
4244− x: x,
4245− y: y,
4246− width: _Browser_doc.documentElement.clientWidth,
4247− height: _Browser_doc.documentElement.clientHeight
4248− },
4249− element: {
4250− x: x + rect.left,
4251− y: y + rect.top,
4252− width: rect.width,
4253− height: rect.height
4254− }
4255− };
4256− });
4257−}
4258−
4259−
4260−
4261−// LOAD and RELOAD
4262−
4263−
4264−function _Browser_reload(skipCache)
4265−{
4266− return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)
4267− {
4268− // no-op in LynxJS
4269− }));
4270−}
4271−
4272−function _Browser_load(url)
4273−{
4274− return A2($elm$core$Task$perform, $elm$core$Basics$never, _Scheduler_binding(function(callback)
4275− {
4276− try
4277− {
4278− // no-op in LynxJS
4279− }
4280− catch(err)
4281− {
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.
4284− // no-op in LynxJS
4285− }
4286− }));
4287−}
4288−
4289−
4290−
4291−var _Bitwise_and = F2(function(a, b)
4292−{
4293− return a & b;
4294−});
4295−
4296−var _Bitwise_or = F2(function(a, b)
4297−{
4298− return a | b;
4299−});
4300−
4301−var _Bitwise_xor = F2(function(a, b)
4302−{
4303− return a ^ b;
4304−});
4305−
4306−function _Bitwise_complement(a)
4307−{
4308− return ~a;
4309−};
4310−
4311−var _Bitwise_shiftLeftBy = F2(function(offset, a)
4312−{
4313− return a << offset;
4314−});
4315−
4316−var _Bitwise_shiftRightBy = F2(function(offset, a)
4317−{
4318− return a >> offset;
4319−});
4320−
4321−var _Bitwise_shiftRightZfBy = F2(function(offset, a)
4322−{
4323− return a >>> offset;
4324−});
4325−
4326−
4327−
4328−function _Time_now(millisToPosix)
4329−{
4330− return _Scheduler_binding(function(callback)
4331− {
4332− callback(_Scheduler_succeed(millisToPosix(Date.now())));
4333− });
4334−}
4335−
4336−var _Time_setInterval = F2(function(interval, task)
4337−{
4338− return _Scheduler_binding(function(callback)
4339− {
4340− var id = setInterval(function() { _Scheduler_rawSpawn(task); }, interval);
4341− return function() { clearInterval(id); };
4342− });
4343−});
4344−
4345−function _Time_here()
4346−{
4347− return _Scheduler_binding(function(callback)
4348− {
4349− callback(_Scheduler_succeed(
4350− A2($elm$time$Time$customZone, -(new Date().getTimezoneOffset()), _List_Nil)
4351− ));
4352− });
4353−}
4354−
4355−
4356−function _Time_getZoneName()
4357−{
4358− return _Scheduler_binding(function(callback)
4359− {
4360− try
4361− {
4362− var name = $elm$time$Time$Name(Intl.DateTimeFormat().resolvedOptions().timeZone);
4363− }
4364− catch (e)
4365− {
4366− var name = $elm$time$Time$Offset(new Date().getTimezoneOffset());
4367− }
4368− callback(_Scheduler_succeed(name));
4369− });
4370−}
4371−
4372−
4373−// BYTES
4374−
4375−function _Bytes_width(bytes)
4376−{
4377− return bytes.byteLength;
4378−}
4379−
4380−var _Bytes_getHostEndianness = F2(function(le, be)
4381−{
4382− return _Scheduler_binding(function(callback)
4383− {
4384− callback(_Scheduler_succeed(new Uint8Array(new Uint32Array([1]))[0] === 1 ? le : be));
4385− });
4386−});
4387−
4388−
4389−// ENCODERS
4390−
4391−function _Bytes_encode(encoder)
4392−{
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;
4396−}
4397−
4398−
4399−// SIGNED INTEGERS
4400−
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; });
4404−
4405−
4406−// UNSIGNED INTEGERS
4407−
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; });
4411−
4412−
4413−// FLOATS
4414−
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; });
4417−
4418−
4419−// BYTES
4420−
4421−var _Bytes_write_bytes = F3(function(mb, offset, bytes)
4422−{
4423− for (var i = 0, len = bytes.byteLength, limit = len - 4; i <= limit; i += 4)
4424− {
4425− mb.setUint32(offset + i, bytes.getUint32(i));
4426− }
4427− for (; i < len; i++)
4428− {
4429− mb.setUint8(offset + i, bytes.getUint8(i));
4430− }
4431− return offset + len;
4432−});
4433−
4434−
4435−// STRINGS
4436−
4437−function _Bytes_getStringWidth(string)
4438−{
4439− for (var width = 0, i = 0; i < string.length; i++)
4440− {
4441− var code = string.charCodeAt(i);
4442− width +=
4443− (code < 0x80) ? 1 :
4444− (code < 0x800) ? 2 :
4445− (code < 0xD800 || 0xDBFF < code) ? 3 : (i++, 4);
4446− }
4447− return width;
4448−}
4449−
4450−var _Bytes_write_string = F3(function(mb, offset, string)
4451−{
4452− for (var i = 0; i < string.length; i++)
4453− {
4454− var code = string.charCodeAt(i);
4455− offset +=
4456− (code < 0x80)
4457− ? (mb.setUint8(offset, code)
4458− , 1
4459− )
4460− :
4461− (code < 0x800)
4462− ? (mb.setUint16(offset, 0xC080 /* 0b1100000010000000 */
4463− | (code >>> 6 & 0x1F /* 0b00011111 */) << 8
4464− | code & 0x3F /* 0b00111111 */)
4465− , 2
4466− )
4467− :
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 */)
4474− , 3
4475− )
4476− :
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 */)
4483− , 4
4484− );
4485− }
4486− return offset;
4487−});
4488−
4489−
4490−// DECODER
4491−
4492−var _Bytes_decode = F2(function(decoder, bytes)
4493−{
4494− try {
4495− return $elm$core$Maybe$Just(A2(decoder, bytes, 0).b);
4496− } catch(e) {
4497− return $elm$core$Maybe$Nothing;
4498− }
4499−});
4500−
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)); });
4509−
4510−var _Bytes_read_bytes = F3(function(len, bytes, offset)
4511−{
4512− return _Utils_Tuple2(offset + len, new DataView(bytes.buffer, bytes.byteOffset + offset, len));
4513−});
4514−
4515−var _Bytes_read_string = F3(function(len, bytes, offset)
4516−{
4517− var string = '';
4518− var end = offset + len;
4519− for (; offset < end;)
4520− {
4521− var byte = bytes.getUint8(offset++);
4522− string +=
4523− (byte < 128)
4524− ? String.fromCharCode(byte)
4525− :
4526− ((byte & 0xE0 /* 0b11100000 */) === 0xC0 /* 0b11000000 */)
4527− ? String.fromCharCode((byte & 0x1F /* 0b00011111 */) << 6 | bytes.getUint8(offset++) & 0x3F /* 0b00111111 */)
4528− :
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 */
4534− )
4535− :
4536− (byte =
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 */
4541− ) - 0x10000
4542− , String.fromCharCode(Math.floor(byte / 0x400) + 0xD800, byte % 0x400 + 0xDC00)
4543− );
4544− }
4545− return _Utils_Tuple2(offset, string);
4546−});
4547−
4548−var _Bytes_decodeFailure = F2(function() { throw 0; });
4549−
4550−
4551−
4552−// SEND REQUEST
4553−
4554−var _Http_toTask = F3(function(router, toTask, request)
4555−{
4556− return _Scheduler_binding(function(callback)
4557− {
4558− function done(response) {
4559− callback(toTask(request.expect.a(response)));
4560− }
4561−
4562− var controller = new AbortController();
4563− var isAborted = false;
4564−
4565− // Timeout
4566− var timeoutMs = request.timeout.a || 0;
4567− var timeoutId = 0;
4568− if (timeoutMs > 0)
4569− {
4570− timeoutId = setTimeout(function() {
4571− isAborted = true;
4572− controller.abort();
4573− done($lynxjs_elm$http$Http$Timeout_);
4574− }, timeoutMs);
4575− }
4576−
4577− // Headers
4578− var headers = {};
4579− for (var h = request.headers; h.b; h = h.b) // WHILE_CONS
4580− {
4581− headers[h.a.a] = h.a.b;
4582− }
4583− if (request.body.a)
4584− {
4585− headers['Content-Type'] = request.body.a;
4586− }
4587−
4588− // Options
4589− var options = {
4590− method: request.method,
4591− headers: headers,
4592− signal: controller.signal
4593− };
4594− if (request.body.b)
4595− {
4596− options.body = request.body.b;
4597− }
4598−
4599− // Validate URL
4600− var url = request.url;
4601− try { new URL(url, 'http://localhost'); }
4602− catch (e) { return done($lynxjs_elm$http$Http$BadUrl_(url)); }
4603−
4604− // Fetch
4605− fetch(url, options).then(function(response)
4606− {
4607− var bodyPromise = request.expect.b === 'arraybuffer'
4608− ? response.arrayBuffer()
4609− : response.text();
4610−
4611− return bodyPromise.then(function(body)
4612− {
4613− if (timeoutId) { clearTimeout(timeoutId); }
4614−
4615− var metadata = {
4616− url: response.url || url,
4617− statusCode: response.status,
4618− statusText: response.statusText,
4619− headers: _Http_parseHeaders(response.headers)
4620− };
4621−
4622− var toBody = request.expect.c;
4623− done(A2(
4624− 200 <= response.status && response.status < 300 ? $lynxjs_elm$http$Http$GoodStatus_ : $lynxjs_elm$http$Http$BadStatus_,
4625− metadata,
4626− toBody(body)
4627− ));
4628− });
4629− }).catch(function(e)
4630− {
4631− if (timeoutId) { clearTimeout(timeoutId); }
4632− if (!isAborted)
4633− {
4634− done($lynxjs_elm$http$Http$NetworkError_);
4635− }
4636− });
4637−
4638− // Tracker
4639− $elm$core$Maybe$isJust(request.tracker) && _Http_track(router, controller, request.tracker.a);
4640−
4641− return function() { isAborted = true; controller.abort(); };
4642− });
4643−});
4644−
4645−
4646−// HEADERS
4647−
4648−function _Http_parseHeaders(headers)
4649−{
4650− var dict = $elm$core$Dict$empty;
4651− headers.forEach(function(value, key)
4652− {
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
4656− : value
4657− );
4658− }, dict);
4659− });
4660− return dict;
4661−}
4662−
4663−
4664−// EXPECT
4665−
4666−var _Http_expect = F3(function(type, toBody, toValue)
4667−{
4668− return {
4669− $: 0,
4670− b: type,
4671− c: toBody,
4672− a: toValue
4673− };
4674−});
4675−
4676−var _Http_mapExpect = F2(function(func, expect)
4677−{
4678− return {
4679− $: 0,
4680− b: expect.b,
4681− c: expect.c,
4682− a: function(x) { return func(expect.a(x)); }
4683− };
4684−});
4685−
4686−function _Http_toDataView(arrayBuffer)
4687−{
4688− return _Bytes_wrap(new DataView(arrayBuffer));
4689−}
4690−
4691−
4692−// BODY and PARTS
4693−
4694−var _Http_emptyBody = { $: 0 };
4695−var _Http_pair = F2(function(a, b) { return { $: 0, a: a, b: b }; });
4696−
4697−function _Http_toFormData(parts)
4698−{
4699− for (var formData = new FormData(); parts.b; parts = parts.b) // WHILE_CONS
4700− {
4701− var part = parts.a;
4702− formData.append(part.a, part.b);
4703− }
4704− return formData;
4705−}
4706−
4707−var _Http_bytesToBlob = F2(function(mime, bytes)
4708−{
4709− return new Blob([bytes], { type: mime });
4710−});
4711−
4712−
4713−// PROGRESS
4714−
4715−function _Http_track(router, controller, tracker)
4716−{
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.
4720−}
4721−
4722−
4723−
4724−// NOBLE/CURVES BUNDLE (https://github.com/paulmillr/noble-curves, MIT License)
4725−// Embedded: @noble/curves 2.0.1 - secp256k1, ed25519, x25519, P-256
4726−
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:
4729−
4730−@noble/hashes/utils.js:
4731− (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4732−
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) *)
4743−*/
4744−/*! Bundled license information:
4745−
4746−@noble/hashes/utils.js:
4747− (*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) *)
4748−
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) *)
4758−*/
4759−
4760−
4761−// UTILS
4762−
4763−var _Crypto_toHex = _Crypto_noble.bytesToHex;
4764−var _Crypto_fromHex = _Crypto_noble.hexToBytes;
4765−
4766−
4767−// DER CODEC (for ECDSA signatures: secp256k1, P-256)
4768−
4769−function _Crypto_bigintToBytes(n, len)
4770−{
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);
4775−}
4776−
4777−function _Crypto_bytesToBigint(bytes)
4778−{
4779− return BigInt('0x' + _Crypto_toHex(bytes));
4780−}
4781−
4782−function _Crypto_compactToDer(compactHex, byteLen)
4783−{
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
4789− var i = 0;
4790− while (i < b.length - 1 && b[i] === 0) { i++; }
4791− b = b.slice(i);
4792− if (b[0] & 0x80) {
4793− var padded = new Uint8Array(b.length + 1);
4794− padded[0] = 0;
4795− padded.set(b, 1);
4796− b = padded;
4797− }
4798− return b;
4799− }
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);
4804− var pos = 0;
4805− der[pos++] = 0x30;
4806− der[pos++] = totalLen;
4807− der[pos++] = 0x02;
4808− der[pos++] = rEnc.length;
4809− der.set(rEnc, pos); pos += rEnc.length;
4810− der[pos++] = 0x02;
4811− der[pos++] = sEnc.length;
4812− der.set(sEnc, pos);
4813− return _Crypto_toHex(der);
4814−}
4815−
4816−function _Crypto_derToCompact(derHex, byteLen)
4817−{
4818− var der = _Crypto_fromHex(derHex);
4819− if (der[0] !== 0x30) { return null; }
4820− var pos = 2;
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);
4836− compact.set(r, 0);
4837− compact.set(s, byteLen);
4838− return _Crypto_toHex(compact);
4839−}
4840−
4841−
4842−// SECP256K1
4843−
4844−function _Crypto_secp256k1PrivateKeyFromHex(hex)
4845−{
4846− try {
4847− _Crypto_noble.secp256k1.getPublicKey(_Crypto_fromHex(hex));
4848− return $elm$core$Maybe$Just(hex);
4849− } catch (e) {
4850− return $elm$core$Maybe$Nothing;
4851− }
4852−}
4853−
4854−function _Crypto_secp256k1PrivateKeyToHex(key)
4855−{
4856− return key;
4857−}
4858−
4859−function _Crypto_secp256k1PublicKeyFromHex(hex)
4860−{
4861− try {
4862− _Crypto_noble.secp256k1.Point.fromHex(hex);
4863− return $elm$core$Maybe$Just(hex);
4864− } catch (e) {
4865− return $elm$core$Maybe$Nothing;
4866− }
4867−}
4868−
4869−function _Crypto_secp256k1PublicKeyToHex(key)
4870−{
4871− return key;
4872−}
4873−
4874−function _Crypto_secp256k1SignatureFromCompactHex(hex)
4875−{
4876− try {
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);
4881− } catch (e) {
4882− return $elm$core$Maybe$Nothing;
4883− }
4884−}
4885−
4886−function _Crypto_secp256k1SignatureFromDerHex(hex)
4887−{
4888− try {
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);
4893− } catch (e) {
4894− return $elm$core$Maybe$Nothing;
4895− }
4896−}
4897−
4898−function _Crypto_secp256k1SignatureToCompactHex(sig)
4899−{
4900− return sig;
4901−}
4902−
4903−function _Crypto_secp256k1SignatureToDerHex(compactHex)
4904−{
4905− return _Crypto_compactToDer(compactHex, 32);
4906−}
4907−
4908−function _Crypto_secp256k1GetPublicKey(privKey)
4909−{
4910− return _Crypto_toHex(_Crypto_noble.secp256k1.getPublicKey(_Crypto_fromHex(privKey)));
4911−}
4912−
4913−var _Crypto_secp256k1Sign = F2(function(msgHash, privKey)
4914−{
4915− var sig = _Crypto_noble.secp256k1.sign(_Crypto_fromHex(msgHash), _Crypto_fromHex(privKey));
4916− return _Crypto_toHex(sig);
4917−});
4918−
4919−var _Crypto_secp256k1Verify = F3(function(sig, msgHash, pubKey)
4920−{
4921− try {
4922− return _Crypto_noble.secp256k1.verify(
4923− _Crypto_fromHex(sig),
4924− _Crypto_fromHex(msgHash),
4925− _Crypto_fromHex(pubKey)
4926− );
4927− } catch (e) {
4928− return false;
4929− }
4930−});
4931−
4932−var _Crypto_secp256k1GetSharedSecret = F2(function(privKey, pubKey)
4933−{
4934− return _Crypto_toHex(_Crypto_noble.secp256k1.getSharedSecret(_Crypto_fromHex(privKey), _Crypto_fromHex(pubKey)));
4935−});
4936−
4937−
4938−// ED25519
4939−
4940−function _Crypto_ed25519PrivateKeyFromHex(hex)
4941−{
4942− try {
4943− _Crypto_noble.ed25519.getPublicKey(_Crypto_fromHex(hex));
4944− return $elm$core$Maybe$Just(hex);
4945− } catch (e) {
4946− return $elm$core$Maybe$Nothing;
4947− }
4948−}
4949−
4950−function _Crypto_ed25519PrivateKeyToHex(key)
4951−{
4952− return key;
4953−}
4954−
4955−function _Crypto_ed25519PublicKeyFromHex(hex)
4956−{
4957− try {
4958− _Crypto_noble.ed25519.Point.fromHex(hex);
4959− return $elm$core$Maybe$Just(hex);
4960− } catch (e) {
4961− return $elm$core$Maybe$Nothing;
4962− }
4963−}
4964−
4965−function _Crypto_ed25519PublicKeyToHex(key)
4966−{
4967− return key;
4968−}
4969−
4970−function _Crypto_ed25519SignatureFromHex(hex)
4971−{
4972− try {
4973− var bytes = _Crypto_fromHex(hex);
4974− if (bytes.length !== 64) { return $elm$core$Maybe$Nothing; }
4975− return $elm$core$Maybe$Just(hex);
4976− } catch (e) {
4977− return $elm$core$Maybe$Nothing;
4978− }
4979−}
4980−
4981−function _Crypto_ed25519SignatureToHex(sig)
4982−{
4983− return sig;
4984−}
4985−
4986−function _Crypto_ed25519GetPublicKey(privKey)
4987−{
4988− return _Crypto_toHex(_Crypto_noble.ed25519.getPublicKey(_Crypto_fromHex(privKey)));
4989−}
4990−
4991−var _Crypto_ed25519Sign = F2(function(msg, privKey)
4992−{
4993− return _Crypto_toHex(_Crypto_noble.ed25519.sign(_Crypto_fromHex(msg), _Crypto_fromHex(privKey)));
4994−});
4995−
4996−var _Crypto_ed25519Verify = F3(function(sig, msg, pubKey)
4997−{
4998− try {
4999− return _Crypto_noble.ed25519.verify(
5000− _Crypto_fromHex(sig),
5001− _Crypto_fromHex(msg),
5002− _Crypto_fromHex(pubKey)
5003− );
5004− } catch (e) {
5005− return false;
5006− }
5007−});
5008−
5009−
5010−// X25519 (Diffie-Hellman)
5011−
5012−function _Crypto_x25519PrivateKeyFromHex(hex)
5013−{
5014− try {
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);
5019− } catch (e) {
5020− return $elm$core$Maybe$Nothing;
5021− }
5022−}
5023−
5024−function _Crypto_x25519PrivateKeyToHex(key)
5025−{
5026− return key;
5027−}
5028−
5029−function _Crypto_x25519PublicKeyFromHex(hex)
5030−{
5031− try {
5032− var bytes = _Crypto_fromHex(hex);
5033− if (bytes.length !== 32) { return $elm$core$Maybe$Nothing; }
5034− return $elm$core$Maybe$Just(hex);
5035− } catch (e) {
5036− return $elm$core$Maybe$Nothing;
5037− }
5038−}
5039−
5040−function _Crypto_x25519PublicKeyToHex(key)
5041−{
5042− return key;
5043−}
5044−
5045−function _Crypto_x25519GetPublicKey(privKey)
5046−{
5047− return _Crypto_toHex(_Crypto_noble.x25519.getPublicKey(_Crypto_fromHex(privKey)));
5048−}
5049−
5050−var _Crypto_x25519GetSharedSecret = F2(function(privKey, pubKey)
5051−{
5052− return _Crypto_toHex(_Crypto_noble.x25519.getSharedSecret(_Crypto_fromHex(privKey), _Crypto_fromHex(pubKey)));
5053−});
5054−
5055−
5056−// P-256 (secp256r1)
5057−
5058−function _Crypto_p256PrivateKeyFromHex(hex)
5059−{
5060− try {
5061− _Crypto_noble.p256.getPublicKey(_Crypto_fromHex(hex));
5062− return $elm$core$Maybe$Just(hex);
5063− } catch (e) {
5064− return $elm$core$Maybe$Nothing;
5065− }
5066−}
5067−
5068−function _Crypto_p256PrivateKeyToHex(key)
5069−{
5070− return key;
5071−}
5072−
5073−function _Crypto_p256PublicKeyFromHex(hex)
5074−{
5075− try {
5076− _Crypto_noble.p256.Point.fromHex(hex);
5077− return $elm$core$Maybe$Just(hex);
5078− } catch (e) {
5079− return $elm$core$Maybe$Nothing;
5080− }
5081−}
5082−
5083−function _Crypto_p256PublicKeyToHex(key)
5084−{
5085− return key;
5086−}
5087−
5088−function _Crypto_p256SignatureFromCompactHex(hex)
5089−{
5090− try {
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);
5095− } catch (e) {
5096− return $elm$core$Maybe$Nothing;
5097− }
5098−}
5099−
5100−function _Crypto_p256SignatureFromDerHex(hex)
5101−{
5102− try {
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);
5107− } catch (e) {
5108− return $elm$core$Maybe$Nothing;
5109− }
5110−}
5111−
5112−function _Crypto_p256SignatureToCompactHex(sig)
5113−{
5114− return sig;
5115−}
5116−
5117−function _Crypto_p256SignatureToDerHex(compactHex)
5118−{
5119− return _Crypto_compactToDer(compactHex, 32);
5120−}
5121−
5122−function _Crypto_p256GetPublicKey(privKey)
5123−{
5124− return _Crypto_toHex(_Crypto_noble.p256.getPublicKey(_Crypto_fromHex(privKey)));
5125−}
5126−
5127−var _Crypto_p256Sign = F2(function(msgHash, privKey)
5128−{
5129− var sig = _Crypto_noble.p256.sign(_Crypto_fromHex(msgHash), _Crypto_fromHex(privKey));
5130− return _Crypto_toHex(sig);
5131−});
5132−
5133−var _Crypto_p256Verify = F3(function(sig, msgHash, pubKey)
5134−{
5135− try {
5136− return _Crypto_noble.p256.verify(
5137− _Crypto_fromHex(sig),
5138− _Crypto_fromHex(msgHash),
5139− _Crypto_fromHex(pubKey)
5140− );
5141− } catch (e) {
5142− return false;
5143− }
5144−});
5145−
5146−var _Crypto_p256GetSharedSecret = F2(function(privKey, pubKey)
5147−{
5148− return _Crypto_toHex(_Crypto_noble.p256.getSharedSecret(_Crypto_fromHex(privKey), _Crypto_fromHex(pubKey)));
5149−});
5150−
5151−
5152−// NOBLE/CIPHERS BUNDLE (https://github.com/paulmillr/noble-ciphers, MIT License)
5153−// Embedded: @noble/ciphers - AES-GCM, ChaCha20-Poly1305, XChaCha20-Poly1305
5154−
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:
5157−
5158−@noble/ciphers/utils.js:
5159− (*! noble-ciphers - MIT License (c) 2023 Paul Miller (paulmillr.com) *)
5160−*/
5161−
5162−
5163−// CIPHER FUNCTIONS
5164−
5165−function _Crypto_cipherKeyFromHex(hex)
5166−{
5167− try {
5168− var bytes = _Crypto_fromHex(hex);
5169− if (bytes.length !== 32) { return $elm$core$Maybe$Nothing; }
5170− return $elm$core$Maybe$Just(hex);
5171− } catch (e) {
5172− return $elm$core$Maybe$Nothing;
5173− }
5174−}
5175−
5176−function _Crypto_cipherKeyToHex(key)
5177−{
5178− return key;
5179−}
5180−
5181−function _Crypto_cipherNonce12FromHex(hex)
5182−{
5183− try {
5184− var bytes = _Crypto_fromHex(hex);
5185− if (bytes.length !== 12) { return $elm$core$Maybe$Nothing; }
5186− return $elm$core$Maybe$Just(hex);
5187− } catch (e) {
5188− return $elm$core$Maybe$Nothing;
5189− }
5190−}
5191−
5192−function _Crypto_cipherNonce12ToHex(nonce)
5193−{
5194− return nonce;
5195−}
5196−
5197−function _Crypto_cipherNonce24FromHex(hex)
5198−{
5199− try {
5200− var bytes = _Crypto_fromHex(hex);
5201− if (bytes.length !== 24) { return $elm$core$Maybe$Nothing; }
5202− return $elm$core$Maybe$Just(hex);
5203− } catch (e) {
5204− return $elm$core$Maybe$Nothing;
5205− }
5206−}
5207−
5208−function _Crypto_cipherNonce24ToHex(nonce)
5209−{
5210− return nonce;
5211−}
5212−
5213−
5214−// AES-256-GCM
5215−
5216−var _Crypto_aesGcmEncrypt = F3(function(key, nonce, plaintext)
5217−{
5218− var cipher = _Crypto_ciphers.gcm(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5219− return _Crypto_toHex(cipher.encrypt(_Crypto_fromHex(plaintext)));
5220−});
5221−
5222−var _Crypto_aesGcmDecrypt = F3(function(key, nonce, ciphertext)
5223−{
5224− try {
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))));
5227− } catch (e) {
5228− return $elm$core$Maybe$Nothing;
5229− }
5230−});
5231−
5232−
5233−// CHACHA20-POLY1305
5234−
5235−var _Crypto_chacha20Encrypt = F3(function(key, nonce, plaintext)
5236−{
5237− var cipher = _Crypto_ciphers.chacha20poly1305(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5238− return _Crypto_toHex(cipher.encrypt(_Crypto_fromHex(plaintext)));
5239−});
5240−
5241−var _Crypto_chacha20Decrypt = F3(function(key, nonce, ciphertext)
5242−{
5243− try {
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))));
5246− } catch (e) {
5247− return $elm$core$Maybe$Nothing;
5248− }
5249−});
5250−
5251−
5252−// XCHACHA20-POLY1305
5253−
5254−var _Crypto_xchacha20Encrypt = F3(function(key, nonce, plaintext)
5255−{
5256− var cipher = _Crypto_ciphers.xchacha20poly1305(_Crypto_fromHex(key), _Crypto_fromHex(nonce));
5257− return _Crypto_toHex(cipher.encrypt(_Crypto_fromHex(plaintext)));
5258−});
5259−
5260−var _Crypto_xchacha20Decrypt = F3(function(key, nonce, ciphertext)
5261−{
5262− try {
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))));
5265− } catch (e) {
5266− return $elm$core$Maybe$Nothing;
5267− }
5268−});
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) {
5274− var tree = _v0.c;
5275− var tail = _v0.d;
5276− var helper = F2(
5277− function (node, acc) {
5278− if (node.$ === 'SubTree') {
5279− var subTree = node.a;
5280− return A3($elm$core$Elm$JsArray$foldr, helper, acc, subTree);
5281− } else {
5282− var values = node.a;
5283− return A3($elm$core$Elm$JsArray$foldr, func, acc, values);
5284− }
5285− });
5286− return A3(
5287− $elm$core$Elm$JsArray$foldr,
5288− helper,
5289− A3($elm$core$Elm$JsArray$foldr, func, baseCase, tail),
5290− tree);
5291− });
5292−var $elm$core$Array$toList = function (array) {
5293− return A3($elm$core$Array$foldr, $elm$core$List$cons, _List_Nil, array);
5294−};
5295−var $elm$core$Dict$foldr = F3(
5296− function (func, acc, t) {
5297− foldr:
5298− while (true) {
5299− if (t.$ === 'RBEmpty_elm_builtin') {
5300− return acc;
5301− } else {
5302− var key = t.b;
5303− var value = t.c;
5304− var left = t.d;
5305− var right = t.e;
5306− var $temp$func = func,
5307− $temp$acc = A3(
5308− func,
5309− key,
5310− value,
5311− A3($elm$core$Dict$foldr, func, acc, right)),
5312− $temp$t = left;
5313− func = $temp$func;
5314− acc = $temp$acc;
5315− t = $temp$t;
5316− continue foldr;
5317− }
5318− }
5319− });
5320−var $elm$core$Dict$toList = function (dict) {
5321− return A3(
5322− $elm$core$Dict$foldr,
5323− F3(
5324− function (key, value, list) {
5325− return A2(
5326− $elm$core$List$cons,
5327− _Utils_Tuple2(key, value),
5328− list);
5329− }),
5330− _List_Nil,
5331− dict);
5332−};
5333−var $elm$core$Dict$keys = function (dict) {
5334− return A3(
5335− $elm$core$Dict$foldr,
5336− F3(
5337− function (key, value, keyList) {
5338− return A2($elm$core$List$cons, key, keyList);
5339− }),
5340− _List_Nil,
5341− dict);
5342−};
5343−var $elm$core$Set$toList = function (_v0) {
5344− var dict = _v0.a;
5345− return $elm$core$Dict$keys(dict);
5346−};
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};
5352−};
5353−var $elm$json$Json$Decode$Failure = F2(
5354− function (a, b) {
5355− return {$: 'Failure', a: a, b: b};
5356− });
5357−var $elm$json$Json$Decode$Field = F2(
5358− function (a, b) {
5359− return {$: 'Field', a: a, b: b};
5360− });
5361−var $elm$json$Json$Decode$Index = F2(
5362− function (a, b) {
5363− return {$: 'Index', a: a, b: b};
5364− });
5365−var $elm$core$Result$Ok = function (a) {
5366− return {$: 'Ok', a: a};
5367−};
5368−var $elm$json$Json$Decode$OneOf = function (a) {
5369− return {$: 'OneOf', a: a};
5370−};
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};
5375−};
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) {
5384− return A2(
5385− _String_join,
5386− sep,
5387− _List_toArray(chunks));
5388− });
5389−var $elm$core$String$split = F2(
5390− function (sep, string) {
5391− return _List_fromArray(
5392− A2(_String_split, sep, string));
5393− });
5394−var $elm$json$Json$Decode$indent = function (str) {
5395− return A2(
5396− $elm$core$String$join,
5397− '\n ',
5398− A2($elm$core$String$split, '\n', str));
5399−};
5400−var $elm$core$List$foldl = F3(
5401− function (func, acc, list) {
5402− foldl:
5403− while (true) {
5404− if (!list.b) {
5405− return acc;
5406− } else {
5407− var x = list.a;
5408− var xs = list.b;
5409− var $temp$func = func,
5410− $temp$acc = A2(func, x, acc),
5411− $temp$list = xs;
5412− func = $temp$func;
5413− acc = $temp$acc;
5414− list = $temp$list;
5415− continue foldl;
5416− }
5417− }
5418− });
5419−var $elm$core$List$length = function (xs) {
5420− return A3(
5421− $elm$core$List$foldl,
5422− F2(
5423− function (_v0, i) {
5424− return i + 1;
5425− }),
5426− 0,
5427− xs);
5428−};
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) {
5434− rangeHelp:
5435− while (true) {
5436− if (_Utils_cmp(lo, hi) < 1) {
5437− var $temp$lo = lo,
5438− $temp$hi = hi - 1,
5439− $temp$list = A2($elm$core$List$cons, hi, list);
5440− lo = $temp$lo;
5441− hi = $temp$hi;
5442− list = $temp$list;
5443− continue rangeHelp;
5444− } else {
5445− return list;
5446− }
5447− }
5448− });
5449−var $elm$core$List$range = F2(
5450− function (lo, hi) {
5451− return A3($elm$core$List$rangeHelp, lo, hi, _List_Nil);
5452− });
5453−var $elm$core$List$indexedMap = F2(
5454− function (f, xs) {
5455− return A3(
5456− $elm$core$List$map2,
5457− f,
5458− A2(
5459− $elm$core$List$range,
5460− 0,
5461− $elm$core$List$length(xs) - 1),
5462− xs);
5463− });
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);
5468−};
5469−var $elm$core$Char$isUpper = function (_char) {
5470− var code = $elm$core$Char$toCode(_char);
5471− return (code <= 90) && (65 <= code);
5472−};
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);
5476−};
5477−var $elm$core$Char$isDigit = function (_char) {
5478− var code = $elm$core$Char$toCode(_char);
5479− return (code <= 57) && (48 <= code);
5480−};
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));
5483−};
5484−var $elm$core$List$reverse = function (list) {
5485− return A3($elm$core$List$foldl, $elm$core$List$cons, _List_Nil, list);
5486−};
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))));
5492− });
5493−var $elm$json$Json$Decode$errorToString = function (error) {
5494− return A2($elm$json$Json$Decode$errorToStringHelp, error, _List_Nil);
5495−};
5496−var $elm$json$Json$Decode$errorToStringHelp = F2(
5497− function (error, context) {
5498− errorToStringHelp:
5499− while (true) {
5500− switch (error.$) {
5501− case 'Field':
5502− var f = error.a;
5503− var err = error.b;
5504− var isSimple = function () {
5505− var _v1 = $elm$core$String$uncons(f);
5506− if (_v1.$ === 'Nothing') {
5507− return false;
5508− } else {
5509− var _v2 = _v1.a;
5510− var _char = _v2.a;
5511− var rest = _v2.b;
5512− return $elm$core$Char$isAlpha(_char) && A2($elm$core$String$all, $elm$core$Char$isAlphaNum, rest);
5513− }
5514− }();
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;
5521− case 'Index':
5522− var i = error.a;
5523− var err = error.b;
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;
5530− case 'OneOf':
5531− var errors = error.a;
5532− if (!errors.b) {
5533− return 'Ran into a Json.Decode.oneOf with no possibilities' + function () {
5534− if (!context.b) {
5535− return '!';
5536− } else {
5537− return ' at json' + A2(
5538− $elm$core$String$join,
5539− '',
5540− $elm$core$List$reverse(context));
5541− }
5542− }();
5543− } else {
5544− if (!errors.b.b) {
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;
5551− } else {
5552− var starter = function () {
5553− if (!context.b) {
5554− return 'Json.Decode.oneOf';
5555− } else {
5556− return 'The Json.Decode.oneOf at json' + A2(
5557− $elm$core$String$join,
5558− '',
5559− $elm$core$List$reverse(context));
5560− }
5561− }();
5562− var introduction = starter + (' failed in the following ' + ($elm$core$String$fromInt(
5563− $elm$core$List$length(errors)) + ' ways:'));
5564− return A2(
5565− $elm$core$String$join,
5566− '\n\n',
5567− A2(
5568− $elm$core$List$cons,
5569− introduction,
5570− A2($elm$core$List$indexedMap, $elm$json$Json$Decode$errorOneOf, errors)));
5571− }
5572− }
5573− default:
5574− var msg = error.a;
5575− var json = error.b;
5576− var introduction = function () {
5577− if (!context.b) {
5578− return 'Problem with the given value:\n\n';
5579− } else {
5580− return 'Problem with the value at json' + (A2(
5581− $elm$core$String$join,
5582− '',
5583− $elm$core$List$reverse(context)) + ':\n\n ');
5584− }
5585− }();
5586− return introduction + ($elm$json$Json$Decode$indent(
5587− A2($elm$json$Json$Encode$encode, 4, json)) + ('\n\n' + msg));
5588− }
5589− }
5590− });
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};
5595− });
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);
5602− });
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};
5610−};
5611−var $elm$core$Basics$apL = F2(
5612− function (f, x) {
5613− return f(x);
5614− });
5615−var $elm$core$Basics$apR = F2(
5616− function (x, f) {
5617− return f(x);
5618− });
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(
5624− function (x, y) {
5625− return (_Utils_cmp(x, y) > 0) ? x : y;
5626− });
5627−var $elm$core$Basics$mul = _Basics_mul;
5628−var $elm$core$Array$SubTree = function (a) {
5629− return {$: 'SubTree', a: a};
5630−};
5631−var $elm$core$Elm$JsArray$initializeFromList = _JsArray_initializeFromList;
5632−var $elm$core$Array$compressNodes = F2(
5633− function (nodes, acc) {
5634− compressNodes:
5635− while (true) {
5636− var _v0 = A2($elm$core$Elm$JsArray$initializeFromList, $elm$core$Array$branchFactor, nodes);
5637− var node = _v0.a;
5638− var remainingNodes = _v0.b;
5639− var newAcc = A2(
5640− $elm$core$List$cons,
5641− $elm$core$Array$SubTree(node),
5642− acc);
5643− if (!remainingNodes.b) {
5644− return $elm$core$List$reverse(newAcc);
5645− } else {
5646− var $temp$nodes = remainingNodes,
5647− $temp$acc = newAcc;
5648− nodes = $temp$nodes;
5649− acc = $temp$acc;
5650− continue compressNodes;
5651− }
5652− }
5653− });
5654−var $elm$core$Tuple$first = function (_v0) {
5655− var x = _v0.a;
5656− return x;
5657−};
5658−var $elm$core$Array$treeFromBuilder = F2(
5659− function (nodeList, nodeListSize) {
5660− treeFromBuilder:
5661− while (true) {
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;
5665− } else {
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;
5671− }
5672− }
5673− });
5674−var $elm$core$Array$builderToArray = F2(
5675− function (reverseNodeList, builder) {
5676− if (!builder.nodeListSize) {
5677− return A4(
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,
5682− builder.tail);
5683− } else {
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);
5689− return A4(
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),
5693− tree,
5694− builder.tail);
5695− }
5696− });
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) {
5701− initializeHelp:
5702− while (true) {
5703− if (fromIndex < 0) {
5704− return A2(
5705− $elm$core$Array$builderToArray,
5706− false,
5707− {nodeList: nodeList, nodeListSize: (len / $elm$core$Array$branchFactor) | 0, tail: tail});
5708− } else {
5709− var leaf = $elm$core$Array$Leaf(
5710− A3($elm$core$Elm$JsArray$initialize, $elm$core$Array$branchFactor, fromIndex, fn));
5711− var $temp$fn = fn,
5712− $temp$fromIndex = fromIndex - $elm$core$Array$branchFactor,
5713− $temp$len = len,
5714− $temp$nodeList = A2($elm$core$List$cons, leaf, nodeList),
5715− $temp$tail = tail;
5716− fn = $temp$fn;
5717− fromIndex = $temp$fromIndex;
5718− len = $temp$len;
5719− nodeList = $temp$nodeList;
5720− tail = $temp$tail;
5721− continue initializeHelp;
5722− }
5723− }
5724− });
5725−var $elm$core$Basics$remainderBy = _Basics_remainderBy;
5726−var $elm$core$Array$initialize = F2(
5727− function (len, fn) {
5728− if (len <= 0) {
5729− return $elm$core$Array$empty;
5730− } else {
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);
5735− }
5736− });
5737−var $elm$core$Basics$True = {$: 'True'};
5738−var $elm$core$Result$isOk = function (result) {
5739− if (result.$ === 'Ok') {
5740− return true;
5741− } else {
5742− return false;
5743− }
5744−};
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.$) {
5750− case 'Normal':
5751− return 0;
5752− case 'MayStopPropagation':
5753− return 1;
5754− case 'MayPreventDefault':
5755− return 2;
5756− default:
5757− return 3;
5758− }
5759−};
5760−var $elm$core$Basics$identity = function (x) {
5761− return x;
5762−};
5763−var $lynxjs_elm$browser$Browser$Dom$NotFound = function (a) {
5764− return {$: 'NotFound', a: a};
5765−};
5766−var $elm$core$Basics$never = function (_v0) {
5767− never:
5768− while (true) {
5769− var nvr = _v0.a;
5770− var $temp$_v0 = nvr;
5771− _v0 = $temp$_v0;
5772− continue never;
5773− }
5774−};
5775−var $elm$core$Task$Perform = function (a) {
5776− return {$: 'Perform', a: a};
5777−};
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) {
5782− if (!ls.b) {
5783− return acc;
5784− } else {
5785− var a = ls.a;
5786− var r1 = ls.b;
5787− if (!r1.b) {
5788− return A2(fn, a, acc);
5789− } else {
5790− var b = r1.a;
5791− var r2 = r1.b;
5792− if (!r2.b) {
5793− return A2(
5794− fn,
5795− a,
5796− A2(fn, b, acc));
5797− } else {
5798− var c = r2.a;
5799− var r3 = r2.b;
5800− if (!r3.b) {
5801− return A2(
5802− fn,
5803− a,
5804− A2(
5805− fn,
5806− b,
5807− A2(fn, c, acc)));
5808− } else {
5809− var d = r3.a;
5810− var r4 = r3.b;
5811− var res = (ctr > 500) ? A3(
5812− $elm$core$List$foldl,
5813− fn,
5814− acc,
5815− $elm$core$List$reverse(r4)) : A4($elm$core$List$foldrHelper, fn, acc, ctr + 1, r4);
5816− return A2(
5817− fn,
5818− a,
5819− A2(
5820− fn,
5821− b,
5822− A2(
5823− fn,
5824− c,
5825− A2(fn, d, res))));
5826− }
5827− }
5828− }
5829− }
5830− });
5831−var $elm$core$List$foldr = F3(
5832− function (fn, acc, ls) {
5833− return A4($elm$core$List$foldrHelper, fn, acc, 0, ls);
5834− });
5835−var $elm$core$List$map = F2(
5836− function (f, xs) {
5837− return A3(
5838− $elm$core$List$foldr,
5839− F2(
5840− function (x, acc) {
5841− return A2(
5842− $elm$core$List$cons,
5843− f(x),
5844− acc);
5845− }),
5846− _List_Nil,
5847− xs);
5848− });
5849−var $elm$core$Task$andThen = _Scheduler_andThen;
5850−var $elm$core$Task$map = F2(
5851− function (func, taskA) {
5852− return A2(
5853− $elm$core$Task$andThen,
5854− function (a) {
5855− return $elm$core$Task$succeed(
5856− func(a));
5857− },
5858− taskA);
5859− });
5860−var $elm$core$Task$map2 = F3(
5861− function (func, taskA, taskB) {
5862− return A2(
5863− $elm$core$Task$andThen,
5864− function (a) {
5865− return A2(
5866− $elm$core$Task$andThen,
5867− function (b) {
5868− return $elm$core$Task$succeed(
5869− A2(func, a, b));
5870− },
5871− taskB);
5872− },
5873− taskA);
5874− });
5875−var $elm$core$Task$sequence = function (tasks) {
5876− return A3(
5877− $elm$core$List$foldr,
5878− $elm$core$Task$map2($elm$core$List$cons),
5879− $elm$core$Task$succeed(_List_Nil),
5880− tasks);
5881−};
5882−var $elm$core$Platform$sendToApp = _Platform_sendToApp;
5883−var $elm$core$Task$spawnCmd = F2(
5884− function (router, _v0) {
5885− var task = _v0.a;
5886− return _Scheduler_spawn(
5887− A2(
5888− $elm$core$Task$andThen,
5889− $elm$core$Platform$sendToApp(router),
5890− task));
5891− });
5892−var $elm$core$Task$onEffects = F3(
5893− function (router, commands, state) {
5894− return A2(
5895− $elm$core$Task$map,
5896− function (_v0) {
5897− return _Utils_Tuple0;
5898− },
5899− $elm$core$Task$sequence(
5900− A2(
5901− $elm$core$List$map,
5902− $elm$core$Task$spawnCmd(router),
5903− commands)));
5904− });
5905−var $elm$core$Task$onSelfMsg = F3(
5906− function (_v0, _v1, _v2) {
5907− return $elm$core$Task$succeed(_Utils_Tuple0);
5908− });
5909−var $elm$core$Task$cmdMap = F2(
5910− function (tagger, _v0) {
5911− var task = _v0.a;
5912− return $elm$core$Task$Perform(
5913− A2($elm$core$Task$map, tagger, task));
5914− });
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)));
5922− });
5923−var $lynxjs_elm$browser$Browser$element = _Browser_element;
5924−var $author$project$Main$GotSeed = function (a) {
5925− return {$: 'GotSeed', a: a};
5926−};
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};
5932−};
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};
5936−};
5937−var $elm$random$Random$Seed = F2(
5938− function (a, b) {
5939− return {$: 'Seed', a: a, b: b};
5940− });
5941−var $elm$core$Bitwise$shiftRightZfBy = _Bitwise_shiftRightZfBy;
5942−var $elm$random$Random$next = function (_v0) {
5943− var state0 = _v0.a;
5944− var incr = _v0.b;
5945− return A2($elm$random$Random$Seed, ((state0 * 1664525) + incr) >>> 0, incr);
5946−};
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;
5951− var incr = _v0.b;
5952− var state2 = (state1 + x) >>> 0;
5953− return $elm$random$Random$next(
5954− A2($elm$random$Random$Seed, state2, incr));
5955−};
5956−var $elm$time$Time$Name = function (a) {
5957− return {$: 'Name', a: a};
5958−};
5959−var $elm$time$Time$Offset = function (a) {
5960− return {$: 'Offset', a: a};
5961−};
5962−var $elm$time$Time$Zone = F2(
5963− function (a, b) {
5964− return {$: 'Zone', a: a, b: b};
5965− });
5966−var $elm$time$Time$customZone = $elm$time$Time$Zone;
5967−var $elm$time$Time$Posix = function (a) {
5968− return {$: 'Posix', a: a};
5969−};
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;
5974− return millis;
5975−};
5976−var $elm$random$Random$init = A2(
5977− $elm$core$Task$andThen,
5978− function (time) {
5979− return $elm$core$Task$succeed(
5980− $elm$random$Random$initialSeed(
5981− $elm$time$Time$posixToMillis(time)));
5982− },
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);
5988− });
5989−var $elm$random$Random$onEffects = F3(
5990− function (router, commands, seed) {
5991− if (!commands.b) {
5992− return $elm$core$Task$succeed(seed);
5993− } else {
5994− var generator = commands.a.a;
5995− var rest = commands.b;
5996− var _v1 = A2($elm$random$Random$step, generator, seed);
5997− var value = _v1.a;
5998− var newSeed = _v1.b;
5999− return A2(
6000− $elm$core$Task$andThen,
6001− function (_v2) {
6002− return A3($elm$random$Random$onEffects, router, rest, newSeed);
6003− },
6004− A2($elm$core$Platform$sendToApp, router, value));
6005− }
6006− });
6007−var $elm$random$Random$onSelfMsg = F3(
6008− function (_v0, _v1, seed) {
6009− return $elm$core$Task$succeed(seed);
6010− });
6011−var $elm$random$Random$Generator = function (a) {
6012− return {$: 'Generator', a: a};
6013−};
6014−var $elm$random$Random$map = F2(
6015− function (func, _v0) {
6016− var genA = _v0.a;
6017− return $elm$random$Random$Generator(
6018− function (seed0) {
6019− var _v1 = genA(seed0);
6020− var a = _v1.a;
6021− var seed1 = _v1.b;
6022− return _Utils_Tuple2(
6023− func(a),
6024− seed1);
6025− });
6026− });
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));
6032− });
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)));
6040− });
6041−var $elm$core$String$fromList = _String_fromList;
6042−var $elm$random$Random$listHelp = F4(
6043− function (revList, n, gen, seed) {
6044− listHelp:
6045− while (true) {
6046− if (n < 1) {
6047− return _Utils_Tuple2(revList, seed);
6048− } else {
6049− var _v0 = gen(seed);
6050− var value = _v0.a;
6051− var newSeed = _v0.b;
6052− var $temp$revList = A2($elm$core$List$cons, value, revList),
6053− $temp$n = n - 1,
6054− $temp$gen = gen,
6055− $temp$seed = newSeed;
6056− revList = $temp$revList;
6057− n = $temp$n;
6058− gen = $temp$gen;
6059− seed = $temp$seed;
6060− continue listHelp;
6061− }
6062− }
6063− });
6064−var $elm$random$Random$list = F2(
6065− function (n, _v0) {
6066− var gen = _v0.a;
6067− return $elm$random$Random$Generator(
6068− function (seed) {
6069− return A4($elm$random$Random$listHelp, _List_Nil, n, gen, seed);
6070− });
6071− });
6072−var $elm$core$Char$fromCode = _Char_fromCode;
6073−var $elm$core$Bitwise$and = _Bitwise_and;
6074−var $elm$core$Basics$negate = function (n) {
6075− return -n;
6076−};
6077−var $elm$core$Bitwise$xor = _Bitwise_xor;
6078−var $elm$random$Random$peel = function (_v0) {
6079− var state = _v0.a;
6080− var word = (state ^ (state >>> ((state >>> 28) + 4))) * 277803737;
6081− return ((word >>> 22) ^ word) >>> 0;
6082−};
6083−var $elm$random$Random$int = F2(
6084− function (a, b) {
6085− return $elm$random$Random$Generator(
6086− function (seed0) {
6087− var _v0 = (_Utils_cmp(a, b) < 0) ? _Utils_Tuple2(a, b) : _Utils_Tuple2(b, a);
6088− var lo = _v0.a;
6089− var hi = _v0.b;
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));
6095− } else {
6096− var threshhold = (((-range) >>> 0) % range) >>> 0;
6097− var accountForBias = function (seed) {
6098− accountForBias:
6099− while (true) {
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;
6104− seed = $temp$seed;
6105− continue accountForBias;
6106− } else {
6107− return _Utils_Tuple2((x % range) + lo, seedN);
6108− }
6109− }
6110− };
6111− return accountForBias(seed0);
6112− }
6113− });
6114− });
6115−var $author$project$Main$randomHexChar = A2(
6116− $elm$random$Random$map,
6117− function (n) {
6118− return (n < 10) ? $elm$core$Char$fromCode(n + 48) : $elm$core$Char$fromCode((n - 10) + 97);
6119− },
6120− A2($elm$random$Random$int, 0, 15));
6121−var $author$project$Main$randomHexString = function (byteCount) {
6122− return A2(
6123− $elm$random$Random$map,
6124− $elm$core$String$fromList,
6125− A2($elm$random$Random$list, byteCount * 2, $author$project$Main$randomHexChar));
6126−};
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},
6130− A2(
6131− $elm$random$Random$generate,
6132− $author$project$Main$GotSeed,
6133− $author$project$Main$randomHexString(32)));
6134−};
6135−var $author$project$Main$GotTime = function (a) {
6136− return {$: 'GotTime', a: a};
6137−};
6138−var $author$project$Main$PollTick = function (a) {
6139− return {$: 'PollTick', a: a};
6140−};
6141−var $elm$core$Platform$Sub$batch = _Platform_batch;
6142−var $elm$time$Time$Every = F2(
6143− function (a, b) {
6144− return {$: 'Every', a: a, b: b};
6145− });
6146−var $elm$time$Time$State = F2(
6147− function (taggers, processes) {
6148− return {processes: processes, taggers: taggers};
6149− });
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) {
6155− get:
6156− while (true) {
6157− if (dict.$ === 'RBEmpty_elm_builtin') {
6158− return $elm$core$Maybe$Nothing;
6159− } else {
6160− var key = dict.b;
6161− var value = dict.c;
6162− var left = dict.d;
6163− var right = dict.e;
6164− var _v1 = A2($elm$core$Basics$compare, targetKey, key);
6165− switch (_v1.$) {
6166− case 'LT':
6167− var $temp$targetKey = targetKey,
6168− $temp$dict = left;
6169− targetKey = $temp$targetKey;
6170− dict = $temp$dict;
6171− continue get;
6172− case 'EQ':
6173− return $elm$core$Maybe$Just(value);
6174− default:
6175− var $temp$targetKey = targetKey,
6176− $temp$dict = right;
6177− targetKey = $temp$targetKey;
6178− dict = $temp$dict;
6179− continue get;
6180− }
6181− }
6182− }
6183− });
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};
6188− });
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')) {
6193− var _v1 = right.a;
6194− var rK = right.b;
6195− var rV = right.c;
6196− var rLeft = right.d;
6197− var rRight = right.e;
6198− if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) {
6199− var _v3 = left.a;
6200− var lK = left.b;
6201− var lV = left.c;
6202− var lLeft = left.d;
6203− var lRight = left.e;
6204− return A5(
6205− $elm$core$Dict$RBNode_elm_builtin,
6206− $elm$core$Dict$Red,
6207− key,
6208− value,
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));
6211− } else {
6212− return A5(
6213− $elm$core$Dict$RBNode_elm_builtin,
6214− color,
6215− rK,
6216− rV,
6217− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, left, rLeft),
6218− rRight);
6219− }
6220− } else {
6221− if ((((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Red')) && (left.d.$ === 'RBNode_elm_builtin')) && (left.d.a.$ === 'Red')) {
6222− var _v5 = left.a;
6223− var lK = left.b;
6224− var lV = left.c;
6225− var _v6 = left.d;
6226− var _v7 = _v6.a;
6227− var llK = _v6.b;
6228− var llV = _v6.c;
6229− var llLeft = _v6.d;
6230− var llRight = _v6.e;
6231− var lRight = left.e;
6232− return A5(
6233− $elm$core$Dict$RBNode_elm_builtin,
6234− $elm$core$Dict$Red,
6235− lK,
6236− lV,
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));
6239− } else {
6240− return A5($elm$core$Dict$RBNode_elm_builtin, color, key, value, left, right);
6241− }
6242− }
6243− });
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);
6248− } else {
6249− var nColor = dict.a;
6250− var nKey = dict.b;
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);
6255− switch (_v1.$) {
6256− case 'LT':
6257− return A5(
6258− $elm$core$Dict$balance,
6259− nColor,
6260− nKey,
6261− nValue,
6262− A3($elm$core$Dict$insertHelp, key, value, nLeft),
6263− nRight);
6264− case 'EQ':
6265− return A5($elm$core$Dict$RBNode_elm_builtin, nColor, nKey, value, nLeft, nRight);
6266− default:
6267− return A5(
6268− $elm$core$Dict$balance,
6269− nColor,
6270− nKey,
6271− nValue,
6272− nLeft,
6273− A3($elm$core$Dict$insertHelp, key, value, nRight));
6274− }
6275− }
6276− });
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')) {
6281− var _v1 = _v0.a;
6282− var k = _v0.b;
6283− var v = _v0.c;
6284− var l = _v0.d;
6285− var r = _v0.e;
6286− return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);
6287− } else {
6288− var x = _v0;
6289− return x;
6290− }
6291− });
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') {
6298− return A3(
6299− $elm$core$Dict$insert,
6300− interval,
6301− _List_fromArray(
6302− [tagger]),
6303− state);
6304− } else {
6305− var taggers = _v1.a;
6306− return A3(
6307− $elm$core$Dict$insert,
6308− interval,
6309− A2($elm$core$List$cons, tagger, taggers),
6310− state);
6311− }
6312− });
6313−var $elm$core$Process$kill = _Scheduler_kill;
6314−var $elm$core$Dict$foldl = F3(
6315− function (func, acc, dict) {
6316− foldl:
6317− while (true) {
6318− if (dict.$ === 'RBEmpty_elm_builtin') {
6319− return acc;
6320− } else {
6321− var key = dict.b;
6322− var value = dict.c;
6323− var left = dict.d;
6324− var right = dict.e;
6325− var $temp$func = func,
6326− $temp$acc = A3(
6327− func,
6328− key,
6329− value,
6330− A3($elm$core$Dict$foldl, func, acc, left)),
6331− $temp$dict = right;
6332− func = $temp$func;
6333− acc = $temp$acc;
6334− dict = $temp$dict;
6335− continue foldl;
6336− }
6337− }
6338− });
6339−var $elm$core$Dict$merge = F6(
6340− function (leftStep, bothStep, rightStep, leftDict, rightDict, initialResult) {
6341− var stepState = F3(
6342− function (rKey, rValue, _v0) {
6343− stepState:
6344− while (true) {
6345− var list = _v0.a;
6346− var result = _v0.b;
6347− if (!list.b) {
6348− return _Utils_Tuple2(
6349− list,
6350− A3(rightStep, rKey, rValue, result));
6351− } else {
6352− var _v2 = list.a;
6353− var lKey = _v2.a;
6354− var lValue = _v2.b;
6355− var rest = list.b;
6356− if (_Utils_cmp(lKey, rKey) < 0) {
6357− var $temp$rKey = rKey,
6358− $temp$rValue = rValue,
6359− $temp$_v0 = _Utils_Tuple2(
6360− rest,
6361− A3(leftStep, lKey, lValue, result));
6362− rKey = $temp$rKey;
6363− rValue = $temp$rValue;
6364− _v0 = $temp$_v0;
6365− continue stepState;
6366− } else {
6367− if (_Utils_cmp(lKey, rKey) > 0) {
6368− return _Utils_Tuple2(
6369− list,
6370− A3(rightStep, rKey, rValue, result));
6371− } else {
6372− return _Utils_Tuple2(
6373− rest,
6374− A4(bothStep, lKey, lValue, rValue, result));
6375− }
6376− }
6377− }
6378− }
6379− });
6380− var _v3 = A3(
6381− $elm$core$Dict$foldl,
6382− stepState,
6383− _Utils_Tuple2(
6384− $elm$core$Dict$toList(leftDict),
6385− initialResult),
6386− rightDict);
6387− var leftovers = _v3.a;
6388− var intermediateResult = _v3.b;
6389− return A3(
6390− $elm$core$List$foldl,
6391− F2(
6392− function (_v4, result) {
6393− var k = _v4.a;
6394− var v = _v4.b;
6395− return A3(leftStep, k, v, result);
6396− }),
6397− intermediateResult,
6398− leftovers);
6399− });
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);
6407− } else {
6408− var interval = intervals.a;
6409− var rest = intervals.b;
6410− var spawnTimer = $elm$core$Process$spawn(
6411− A2(
6412− $elm$time$Time$setInterval,
6413− interval,
6414− A2($elm$core$Platform$sendToSelf, router, interval)));
6415− var spawnRest = function (id) {
6416− return A3(
6417− $elm$time$Time$spawnHelp,
6418− router,
6419− rest,
6420− A3($elm$core$Dict$insert, interval, id, processes));
6421− };
6422− return A2($elm$core$Task$andThen, spawnRest, spawnTimer);
6423− }
6424− });
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;
6432− var kills = _v7.c;
6433− return _Utils_Tuple3(
6434− spawns,
6435− existing,
6436− A2(
6437− $elm$core$Task$andThen,
6438− function (_v5) {
6439− return kills;
6440− },
6441− $elm$core$Process$kill(id)));
6442− });
6443− var newTaggers = A3($elm$core$List$foldl, $elm$time$Time$addMySub, $elm$core$Dict$empty, subs);
6444− var leftStep = F3(
6445− function (interval, taggers, _v4) {
6446− var spawns = _v4.a;
6447− var existing = _v4.b;
6448− var kills = _v4.c;
6449− return _Utils_Tuple3(
6450− A2($elm$core$List$cons, interval, spawns),
6451− existing,
6452− kills);
6453− });
6454− var bothStep = F4(
6455− function (interval, taggers, id, _v3) {
6456− var spawns = _v3.a;
6457− var existing = _v3.b;
6458− var kills = _v3.c;
6459− return _Utils_Tuple3(
6460− spawns,
6461− A3($elm$core$Dict$insert, interval, id, existing),
6462− kills);
6463− });
6464− var _v1 = A6(
6465− $elm$core$Dict$merge,
6466− leftStep,
6467− bothStep,
6468− rightStep,
6469− newTaggers,
6470− processes,
6471− _Utils_Tuple3(
6472− _List_Nil,
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;
6478− return A2(
6479− $elm$core$Task$andThen,
6480− function (newProcesses) {
6481− return $elm$core$Task$succeed(
6482− A2($elm$time$Time$State, newTaggers, newProcesses));
6483− },
6484− A2(
6485− $elm$core$Task$andThen,
6486− function (_v2) {
6487− return A3($elm$time$Time$spawnHelp, router, spawnList, existingDict);
6488− },
6489− killTask));
6490− });
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);
6496− } else {
6497− var taggers = _v0.a;
6498− var tellTaggers = function (time) {
6499− return $elm$core$Task$sequence(
6500− A2(
6501− $elm$core$List$map,
6502− function (tagger) {
6503− return A2(
6504− $elm$core$Platform$sendToApp,
6505− router,
6506− tagger(time));
6507− },
6508− taggers));
6509− };
6510− return A2(
6511− $elm$core$Task$andThen,
6512− function (_v1) {
6513− return $elm$core$Task$succeed(state);
6514− },
6515− A2($elm$core$Task$andThen, tellTaggers, $elm$time$Time$now));
6516− }
6517− });
6518−var $elm$core$Basics$composeL = F3(
6519− function (g, f, x) {
6520− return g(
6521− f(x));
6522− });
6523−var $elm$time$Time$subMap = F2(
6524− function (f, _v0) {
6525− var interval = _v0.a;
6526− var tagger = _v0.b;
6527− return A2(
6528− $elm$time$Time$Every,
6529− interval,
6530− A2($elm$core$Basics$composeL, f, tagger));
6531− });
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));
6538− });
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(
6543− _List_fromArray(
6544− [
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)
6547− ]));
6548−};
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};
6553−};
6554−var $author$project$Main$GotAck = function (a) {
6555− return {$: 'GotAck', a: a};
6556−};
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.$) {
6561− case 'I8':
6562− return 1;
6563− case 'I16':
6564− return 2;
6565− case 'I32':
6566− return 4;
6567− case 'U8':
6568− return 1;
6569− case 'U16':
6570− return 2;
6571− case 'U32':
6572− return 4;
6573− case 'F32':
6574− return 4;
6575− case 'F64':
6576− return 8;
6577− case 'Seq':
6578− var w = builder.a;
6579− return w;
6580− case 'Utf8':
6581− var w = builder.a;
6582− return w;
6583− default:
6584− var bs = builder.a;
6585− return _Bytes_width(bs);
6586− }
6587−};
6588−var $elm$bytes$Bytes$LE = {$: 'LE'};
6589−var $elm$bytes$Bytes$Encode$write = F3(
6590− function (builder, mb, offset) {
6591− switch (builder.$) {
6592− case 'I8':
6593− var n = builder.a;
6594− return A3(_Bytes_write_i8, mb, offset, n);
6595− case 'I16':
6596− var e = builder.a;
6597− var n = builder.b;
6598− return A4(
6599− _Bytes_write_i16,
6600− mb,
6601− offset,
6602− n,
6603− _Utils_eq(e, $elm$bytes$Bytes$LE));
6604− case 'I32':
6605− var e = builder.a;
6606− var n = builder.b;
6607− return A4(
6608− _Bytes_write_i32,
6609− mb,
6610− offset,
6611− n,
6612− _Utils_eq(e, $elm$bytes$Bytes$LE));
6613− case 'U8':
6614− var n = builder.a;
6615− return A3(_Bytes_write_u8, mb, offset, n);
6616− case 'U16':
6617− var e = builder.a;
6618− var n = builder.b;
6619− return A4(
6620− _Bytes_write_u16,
6621− mb,
6622− offset,
6623− n,
6624− _Utils_eq(e, $elm$bytes$Bytes$LE));
6625− case 'U32':
6626− var e = builder.a;
6627− var n = builder.b;
6628− return A4(
6629− _Bytes_write_u32,
6630− mb,
6631− offset,
6632− n,
6633− _Utils_eq(e, $elm$bytes$Bytes$LE));
6634− case 'F32':
6635− var e = builder.a;
6636− var n = builder.b;
6637− return A4(
6638− _Bytes_write_f32,
6639− mb,
6640− offset,
6641− n,
6642− _Utils_eq(e, $elm$bytes$Bytes$LE));
6643− case 'F64':
6644− var e = builder.a;
6645− var n = builder.b;
6646− return A4(
6647− _Bytes_write_f64,
6648− mb,
6649− offset,
6650− n,
6651− _Utils_eq(e, $elm$bytes$Bytes$LE));
6652− case 'Seq':
6653− var bs = builder.b;
6654− return A3($elm$bytes$Bytes$Encode$writeSequence, bs, mb, offset);
6655− case 'Utf8':
6656− var s = builder.b;
6657− return A3(_Bytes_write_string, mb, offset, s);
6658− default:
6659− var bs = builder.a;
6660− return A3(_Bytes_write_bytes, mb, offset, bs);
6661− }
6662− });
6663−var $elm$bytes$Bytes$Encode$writeSequence = F3(
6664− function (builders, mb, offset) {
6665− writeSequence:
6666− while (true) {
6667− if (!builders.b) {
6668− return offset;
6669− } else {
6670− var b = builders.a;
6671− var bs = builders.b;
6672− var $temp$builders = bs,
6673− $temp$mb = mb,
6674− $temp$offset = A3($elm$bytes$Bytes$Encode$write, b, mb, offset);
6675− builders = $temp$builders;
6676− mb = $temp$mb;
6677− offset = $temp$offset;
6678− continue writeSequence;
6679− }
6680− }
6681− });
6682−var $lynxjs_elm$http$Http$BadStatus_ = F2(
6683− function (a, b) {
6684− return {$: 'BadStatus_', a: a, b: b};
6685− });
6686−var $lynxjs_elm$http$Http$BadUrl_ = function (a) {
6687− return {$: 'BadUrl_', a: a};
6688−};
6689−var $lynxjs_elm$http$Http$GoodStatus_ = F2(
6690− function (a, b) {
6691− return {$: 'GoodStatus_', a: a, b: b};
6692− });
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') {
6697− return true;
6698− } else {
6699− return false;
6700− }
6701−};
6702−var $elm$core$Dict$getMin = function (dict) {
6703− getMin:
6704− while (true) {
6705− if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {
6706− var left = dict.d;
6707− var $temp$dict = left;
6708− dict = $temp$dict;
6709− continue getMin;
6710− } else {
6711− return dict;
6712− }
6713− }
6714−};
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')) {
6718− var clr = dict.a;
6719− var k = dict.b;
6720− var v = dict.c;
6721− var _v1 = dict.d;
6722− var lClr = _v1.a;
6723− var lK = _v1.b;
6724− var lV = _v1.c;
6725− var lLeft = _v1.d;
6726− var lRight = _v1.e;
6727− var _v2 = dict.e;
6728− var rClr = _v2.a;
6729− var rK = _v2.b;
6730− var rV = _v2.c;
6731− var rLeft = _v2.d;
6732− var _v3 = rLeft.a;
6733− var rlK = rLeft.b;
6734− var rlV = rLeft.c;
6735− var rlL = rLeft.d;
6736− var rlR = rLeft.e;
6737− var rRight = _v2.e;
6738− return A5(
6739− $elm$core$Dict$RBNode_elm_builtin,
6740− $elm$core$Dict$Red,
6741− rlK,
6742− rlV,
6743− A5(
6744− $elm$core$Dict$RBNode_elm_builtin,
6745− $elm$core$Dict$Black,
6746− k,
6747− v,
6748− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, lK, lV, lLeft, lRight),
6749− rlL),
6750− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, rK, rV, rlR, rRight));
6751− } else {
6752− var clr = dict.a;
6753− var k = dict.b;
6754− var v = dict.c;
6755− var _v4 = dict.d;
6756− var lClr = _v4.a;
6757− var lK = _v4.b;
6758− var lV = _v4.c;
6759− var lLeft = _v4.d;
6760− var lRight = _v4.e;
6761− var _v5 = dict.e;
6762− var rClr = _v5.a;
6763− var rK = _v5.b;
6764− var rV = _v5.c;
6765− var rLeft = _v5.d;
6766− var rRight = _v5.e;
6767− if (clr.$ === 'Black') {
6768− return A5(
6769− $elm$core$Dict$RBNode_elm_builtin,
6770− $elm$core$Dict$Black,
6771− k,
6772− v,
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));
6775− } else {
6776− return A5(
6777− $elm$core$Dict$RBNode_elm_builtin,
6778− $elm$core$Dict$Black,
6779− k,
6780− v,
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));
6783− }
6784− }
6785− } else {
6786− return dict;
6787− }
6788−};
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')) {
6792− var clr = dict.a;
6793− var k = dict.b;
6794− var v = dict.c;
6795− var _v1 = dict.d;
6796− var lClr = _v1.a;
6797− var lK = _v1.b;
6798− var lV = _v1.c;
6799− var _v2 = _v1.d;
6800− var _v3 = _v2.a;
6801− var llK = _v2.b;
6802− var llV = _v2.c;
6803− var llLeft = _v2.d;
6804− var llRight = _v2.e;
6805− var lRight = _v1.e;
6806− var _v4 = dict.e;
6807− var rClr = _v4.a;
6808− var rK = _v4.b;
6809− var rV = _v4.c;
6810− var rLeft = _v4.d;
6811− var rRight = _v4.e;
6812− return A5(
6813− $elm$core$Dict$RBNode_elm_builtin,
6814− $elm$core$Dict$Red,
6815− lK,
6816− lV,
6817− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, llK, llV, llLeft, llRight),
6818− A5(
6819− $elm$core$Dict$RBNode_elm_builtin,
6820− $elm$core$Dict$Black,
6821− k,
6822− v,
6823− lRight,
6824− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, rK, rV, rLeft, rRight)));
6825− } else {
6826− var clr = dict.a;
6827− var k = dict.b;
6828− var v = dict.c;
6829− var _v5 = dict.d;
6830− var lClr = _v5.a;
6831− var lK = _v5.b;
6832− var lV = _v5.c;
6833− var lLeft = _v5.d;
6834− var lRight = _v5.e;
6835− var _v6 = dict.e;
6836− var rClr = _v6.a;
6837− var rK = _v6.b;
6838− var rV = _v6.c;
6839− var rLeft = _v6.d;
6840− var rRight = _v6.e;
6841− if (clr.$ === 'Black') {
6842− return A5(
6843− $elm$core$Dict$RBNode_elm_builtin,
6844− $elm$core$Dict$Black,
6845− k,
6846− v,
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));
6849− } else {
6850− return A5(
6851− $elm$core$Dict$RBNode_elm_builtin,
6852− $elm$core$Dict$Black,
6853− k,
6854− v,
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));
6857− }
6858− }
6859− } else {
6860− return dict;
6861− }
6862−};
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')) {
6866− var _v1 = left.a;
6867− var lK = left.b;
6868− var lV = left.c;
6869− var lLeft = left.d;
6870− var lRight = left.e;
6871− return A5(
6872− $elm$core$Dict$RBNode_elm_builtin,
6873− color,
6874− lK,
6875− lV,
6876− lLeft,
6877− A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Red, key, value, lRight, right));
6878− } else {
6879− _v2$2:
6880− while (true) {
6881− if ((right.$ === 'RBNode_elm_builtin') && (right.a.$ === 'Black')) {
6882− if (right.d.$ === 'RBNode_elm_builtin') {
6883− if (right.d.a.$ === 'Black') {
6884− var _v3 = right.a;
6885− var _v4 = right.d;
6886− var _v5 = _v4.a;
6887− return $elm$core$Dict$moveRedRight(dict);
6888− } else {
6889− break _v2$2;
6890− }
6891− } else {
6892− var _v6 = right.a;
6893− var _v7 = right.d;
6894− return $elm$core$Dict$moveRedRight(dict);
6895− }
6896− } else {
6897− break _v2$2;
6898− }
6899− }
6900− return dict;
6901− }
6902− });
6903−var $elm$core$Dict$removeMin = function (dict) {
6904− if ((dict.$ === 'RBNode_elm_builtin') && (dict.d.$ === 'RBNode_elm_builtin')) {
6905− var color = dict.a;
6906− var key = dict.b;
6907− var value = dict.c;
6908− var left = dict.d;
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')) {
6914− var _v3 = lLeft.a;
6915− return A5(
6916− $elm$core$Dict$RBNode_elm_builtin,
6917− color,
6918− key,
6919− value,
6920− $elm$core$Dict$removeMin(left),
6921− right);
6922− } else {
6923− var _v4 = $elm$core$Dict$moveRedLeft(dict);
6924− if (_v4.$ === 'RBNode_elm_builtin') {
6925− var nColor = _v4.a;
6926− var nKey = _v4.b;
6927− var nValue = _v4.c;
6928− var nLeft = _v4.d;
6929− var nRight = _v4.e;
6930− return A5(
6931− $elm$core$Dict$balance,
6932− nColor,
6933− nKey,
6934− nValue,
6935− $elm$core$Dict$removeMin(nLeft),
6936− nRight);
6937− } else {
6938− return $elm$core$Dict$RBEmpty_elm_builtin;
6939− }
6940− }
6941− } else {
6942− return A5(
6943− $elm$core$Dict$RBNode_elm_builtin,
6944− color,
6945− key,
6946− value,
6947− $elm$core$Dict$removeMin(left),
6948− right);
6949− }
6950− } else {
6951− return $elm$core$Dict$RBEmpty_elm_builtin;
6952− }
6953−};
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;
6958− } else {
6959− var color = dict.a;
6960− var key = dict.b;
6961− var value = dict.c;
6962− var left = dict.d;
6963− var right = dict.e;
6964− if (_Utils_cmp(targetKey, key) < 0) {
6965− if ((left.$ === 'RBNode_elm_builtin') && (left.a.$ === 'Black')) {
6966− var _v4 = left.a;
6967− var lLeft = left.d;
6968− if ((lLeft.$ === 'RBNode_elm_builtin') && (lLeft.a.$ === 'Red')) {
6969− var _v6 = lLeft.a;
6970− return A5(
6971− $elm$core$Dict$RBNode_elm_builtin,
6972− color,
6973− key,
6974− value,
6975− A2($elm$core$Dict$removeHelp, targetKey, left),
6976− right);
6977− } else {
6978− var _v7 = $elm$core$Dict$moveRedLeft(dict);
6979− if (_v7.$ === 'RBNode_elm_builtin') {
6980− var nColor = _v7.a;
6981− var nKey = _v7.b;
6982− var nValue = _v7.c;
6983− var nLeft = _v7.d;
6984− var nRight = _v7.e;
6985− return A5(
6986− $elm$core$Dict$balance,
6987− nColor,
6988− nKey,
6989− nValue,
6990− A2($elm$core$Dict$removeHelp, targetKey, nLeft),
6991− nRight);
6992− } else {
6993− return $elm$core$Dict$RBEmpty_elm_builtin;
6994− }
6995− }
6996− } else {
6997− return A5(
6998− $elm$core$Dict$RBNode_elm_builtin,
6999− color,
7000− key,
7001− value,
7002− A2($elm$core$Dict$removeHelp, targetKey, left),
7003− right);
7004− }
7005− } else {
7006− return A2(
7007− $elm$core$Dict$removeHelpEQGT,
7008− targetKey,
7009− A7($elm$core$Dict$removeHelpPrepEQGT, targetKey, dict, color, key, value, left, right));
7010− }
7011− }
7012− });
7013−var $elm$core$Dict$removeHelpEQGT = F2(
7014− function (targetKey, dict) {
7015− if (dict.$ === 'RBNode_elm_builtin') {
7016− var color = dict.a;
7017− var key = dict.b;
7018− var value = dict.c;
7019− var left = dict.d;
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;
7026− return A5(
7027− $elm$core$Dict$balance,
7028− color,
7029− minKey,
7030− minValue,
7031− left,
7032− $elm$core$Dict$removeMin(right));
7033− } else {
7034− return $elm$core$Dict$RBEmpty_elm_builtin;
7035− }
7036− } else {
7037− return A5(
7038− $elm$core$Dict$balance,
7039− color,
7040− key,
7041− value,
7042− left,
7043− A2($elm$core$Dict$removeHelp, targetKey, right));
7044− }
7045− } else {
7046− return $elm$core$Dict$RBEmpty_elm_builtin;
7047− }
7048− });
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')) {
7053− var _v1 = _v0.a;
7054− var k = _v0.b;
7055− var v = _v0.c;
7056− var l = _v0.d;
7057− var r = _v0.e;
7058− return A5($elm$core$Dict$RBNode_elm_builtin, $elm$core$Dict$Black, k, v, l, r);
7059− } else {
7060− var x = _v0;
7061− return x;
7062− }
7063− });
7064−var $elm$core$Dict$update = F3(
7065− function (targetKey, alter, dictionary) {
7066− var _v0 = alter(
7067− A2($elm$core$Dict$get, targetKey, dictionary));
7068− if (_v0.$ === 'Just') {
7069− var value = _v0.a;
7070− return A3($elm$core$Dict$insert, targetKey, value, dictionary);
7071− } else {
7072− return A2($elm$core$Dict$remove, targetKey, dictionary);
7073− }
7074− });
7075−var $elm$core$Basics$composeR = F3(
7076− function (f, g, x) {
7077− return g(
7078− f(x));
7079− });
7080−var $lynxjs_elm$http$Http$expectStringResponse = F2(
7081− function (toMsg, toResult) {
7082− return A3(
7083− _Http_expect,
7084− '',
7085− $elm$core$Basics$identity,
7086− A2($elm$core$Basics$composeR, toResult, toMsg));
7087− });
7088−var $elm$core$Result$mapError = F2(
7089− function (f, result) {
7090− if (result.$ === 'Ok') {
7091− var v = result.a;
7092− return $elm$core$Result$Ok(v);
7093− } else {
7094− var e = result.a;
7095− return $elm$core$Result$Err(
7096− f(e));
7097− }
7098− });
7099−var $lynxjs_elm$http$Http$BadBody = function (a) {
7100− return {$: 'BadBody', a: a};
7101−};
7102−var $lynxjs_elm$http$Http$BadStatus = function (a) {
7103− return {$: 'BadStatus', a: a};
7104−};
7105−var $lynxjs_elm$http$Http$BadUrl = function (a) {
7106− return {$: 'BadUrl', a: a};
7107−};
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.$) {
7113− case 'BadUrl_':
7114− var url = response.a;
7115− return $elm$core$Result$Err(
7116− $lynxjs_elm$http$Http$BadUrl(url));
7117− case 'Timeout_':
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);
7121− case 'BadStatus_':
7122− var metadata = response.a;
7123− return $elm$core$Result$Err(
7124− $lynxjs_elm$http$Http$BadStatus(metadata.statusCode));
7125− default:
7126− var body = response.b;
7127− return A2(
7128− $elm$core$Result$mapError,
7129− $lynxjs_elm$http$Http$BadBody,
7130− toResult(body));
7131− }
7132− });
7133−var $lynxjs_elm$http$Http$expectJson = F2(
7134− function (toMsg, decoder) {
7135− return A2(
7136− $lynxjs_elm$http$Http$expectStringResponse,
7137− toMsg,
7138− $lynxjs_elm$http$Http$resolve(
7139− function (string) {
7140− return A2(
7141− $elm$core$Result$mapError,
7142− $elm$json$Json$Decode$errorToString,
7143− A2($elm$json$Json$Decode$decodeString, decoder, string));
7144− }));
7145− });
7146−var $elm$json$Json$Decode$field = _Json_decodeField;
7147−var $lynxjs_elm$http$Http$Header = F2(
7148− function (a, b) {
7149− return {$: 'Header', a: a, b: b};
7150− });
7151−var $lynxjs_elm$http$Http$header = $lynxjs_elm$http$Http$Header;
7152−var $lynxjs_elm$http$Http$jsonBody = function (value) {
7153− return A2(
7154− _Http_pair,
7155− 'application/json',
7156− A2($elm$json$Json$Encode$encode, 0, value));
7157−};
7158−var $elm$json$Json$Encode$list = F2(
7159− function (func, entries) {
7160− return _Json_wrap(
7161− A3(
7162− $elm$core$List$foldl,
7163− _Json_addEntry(func),
7164− _Json_emptyArray(_Utils_Tuple0),
7165− entries));
7166− });
7167−var $elm$json$Json$Encode$object = function (pairs) {
7168− return _Json_wrap(
7169− A3(
7170− $elm$core$List$foldl,
7171− F2(
7172− function (_v0, obj) {
7173− var k = _v0.a;
7174− var v = _v0.b;
7175− return A3(_Json_addField, k, v, obj);
7176− }),
7177− _Json_emptyObject(_Utils_Tuple0),
7178− pairs));
7179−};
7180−var $lynxjs_elm$http$Http$Request = function (a) {
7181− return {$: 'Request', a: a};
7182−};
7183−var $lynxjs_elm$http$Http$State = F2(
7184− function (reqs, subs) {
7185− return {reqs: reqs, subs: subs};
7186− });
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) {
7191− updateReqs:
7192− while (true) {
7193− if (!cmds.b) {
7194− return $elm$core$Task$succeed(reqs);
7195− } else {
7196− var cmd = cmds.a;
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,
7204− $temp$reqs = reqs;
7205− router = $temp$router;
7206− cmds = $temp$cmds;
7207− reqs = $temp$reqs;
7208− continue updateReqs;
7209− } else {
7210− var pid = _v2.a;
7211− return A2(
7212− $elm$core$Task$andThen,
7213− function (_v3) {
7214− return A3(
7215− $lynxjs_elm$http$Http$updateReqs,
7216− router,
7217− otherCmds,
7218− A2($elm$core$Dict$remove, tracker, reqs));
7219− },
7220− $elm$core$Process$kill(pid));
7221− }
7222− } else {
7223− var req = cmd.a;
7224− return A2(
7225− $elm$core$Task$andThen,
7226− function (pid) {
7227− var _v4 = req.tracker;
7228− if (_v4.$ === 'Nothing') {
7229− return A3($lynxjs_elm$http$Http$updateReqs, router, otherCmds, reqs);
7230− } else {
7231− var tracker = _v4.a;
7232− return A3(
7233− $lynxjs_elm$http$Http$updateReqs,
7234− router,
7235− otherCmds,
7236− A3($elm$core$Dict$insert, tracker, pid, reqs));
7237− }
7238− },
7239− $elm$core$Process$spawn(
7240− A3(
7241− _Http_toTask,
7242− router,
7243− $elm$core$Platform$sendToApp(router),
7244− req)));
7245− }
7246− }
7247− }
7248− });
7249−var $lynxjs_elm$http$Http$onEffects = F4(
7250− function (router, cmds, subs, state) {
7251− return A2(
7252− $elm$core$Task$andThen,
7253− function (reqs) {
7254− return $elm$core$Task$succeed(
7255− A2($lynxjs_elm$http$Http$State, reqs, subs));
7256− },
7257− A3($lynxjs_elm$http$Http$updateReqs, router, cmds, state.reqs));
7258− });
7259−var $elm$core$List$maybeCons = F3(
7260− function (f, mx, xs) {
7261− var _v0 = f(mx);
7262− if (_v0.$ === 'Just') {
7263− var x = _v0.a;
7264− return A2($elm$core$List$cons, x, xs);
7265− } else {
7266− return xs;
7267− }
7268− });
7269−var $elm$core$List$filterMap = F2(
7270− function (f, xs) {
7271− return A3(
7272− $elm$core$List$foldr,
7273− $elm$core$List$maybeCons(f),
7274− _List_Nil,
7275− xs);
7276− });
7277−var $lynxjs_elm$http$Http$maybeSend = F4(
7278− function (router, desiredTracker, progress, _v0) {
7279− var actualTracker = _v0.a;
7280− var toMsg = _v0.b;
7281− return _Utils_eq(desiredTracker, actualTracker) ? $elm$core$Maybe$Just(
7282− A2(
7283− $elm$core$Platform$sendToApp,
7284− router,
7285− toMsg(progress))) : $elm$core$Maybe$Nothing;
7286− });
7287−var $lynxjs_elm$http$Http$onSelfMsg = F3(
7288− function (router, _v0, state) {
7289− var tracker = _v0.a;
7290− var progress = _v0.b;
7291− return A2(
7292− $elm$core$Task$andThen,
7293− function (_v1) {
7294− return $elm$core$Task$succeed(state);
7295− },
7296− $elm$core$Task$sequence(
7297− A2(
7298− $elm$core$List$filterMap,
7299− A3($lynxjs_elm$http$Http$maybeSend, router, tracker, progress),
7300− state.subs)));
7301− });
7302−var $lynxjs_elm$http$Http$Cancel = function (a) {
7303− return {$: 'Cancel', a: a};
7304−};
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);
7310− } else {
7311− var r = cmd.a;
7312− return $lynxjs_elm$http$Http$Request(
7313− {
7314− allowCookiesFromOtherDomains: r.allowCookiesFromOtherDomains,
7315− body: r.body,
7316− expect: A2(_Http_mapExpect, func, r.expect),
7317− headers: r.headers,
7318− method: r.method,
7319− timeout: r.timeout,
7320− tracker: r.tracker,
7321− url: r.url
7322− });
7323− }
7324− });
7325−var $lynxjs_elm$http$Http$MySub = F2(
7326− function (a, b) {
7327− return {$: 'MySub', a: a, b: b};
7328− });
7329−var $lynxjs_elm$http$Http$subMap = F2(
7330− function (func, _v0) {
7331− var tracker = _v0.a;
7332− var toMsg = _v0.b;
7333− return A2(
7334− $lynxjs_elm$http$Http$MySub,
7335− tracker,
7336− A2($elm$core$Basics$composeR, toMsg, func));
7337− });
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}));
7345−};
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(
7350− {
7351− body: $lynxjs_elm$http$Http$jsonBody(
7352− $elm$json$Json$Encode$object(
7353− _List_fromArray(
7354− [
7355− _Utils_Tuple2(
7356− 'messageIds',
7357− A2($elm$json$Json$Encode$list, $elm$json$Json$Encode$string, messageIds))
7358− ]))),
7359− expect: A2(
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(
7364− [
7365− A2($lynxjs_elm$http$Http$header, 'Authorization', 'Bearer ' + token)
7366− ]),
7367− method: 'POST',
7368− timeout: $elm$core$Maybe$Just(5000),
7369− tracker: $elm$core$Maybe$Nothing,
7370− url: serverUrl + '/messages/ack'
7371− });
7372− });
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) {
7385− switch (n) {
7386− case 0:
7387− return _Utils_chr('0');
7388− case 1:
7389− return _Utils_chr('1');
7390− case 2:
7391− return _Utils_chr('2');
7392− case 3:
7393− return _Utils_chr('3');
7394− case 4:
7395− return _Utils_chr('4');
7396− case 5:
7397− return _Utils_chr('5');
7398− case 6:
7399− return _Utils_chr('6');
7400− case 7:
7401− return _Utils_chr('7');
7402− case 8:
7403− return _Utils_chr('8');
7404− case 9:
7405− return _Utils_chr('9');
7406− case 10:
7407− return _Utils_chr('a');
7408− case 11:
7409− return _Utils_chr('b');
7410− case 12:
7411− return _Utils_chr('c');
7412− case 13:
7413− return _Utils_chr('d');
7414− case 14:
7415− return _Utils_chr('e');
7416− default:
7417− return _Utils_chr('f');
7418− }
7419−};
7420−var $author$project$Main$charToHexBytes = function (c) {
7421− var code = $elm$core$Char$toCode(c);
7422− if (code < 128) {
7423− return _List_fromArray(
7424− [
7425− $author$project$Main$nibbleToHex((code / 16) | 0),
7426− $author$project$Main$nibbleToHex(
7427− A2($elm$core$Basics$modBy, 16, code))
7428− ]);
7429− } else {
7430− if (code < 2048) {
7431− var b2 = 128 + A2($elm$core$Basics$modBy, 64, code);
7432− var b1 = 192 + ((code / 64) | 0);
7433− return _List_fromArray(
7434− [
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))
7441− ]);
7442− } else {
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(
7447− [
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))
7457− ]);
7458− }
7459− }
7460−};
7461−var $elm$core$List$append = F2(
7462− function (xs, ys) {
7463− if (!ys.b) {
7464− return xs;
7465− } else {
7466− return A3($elm$core$List$foldr, $elm$core$List$cons, ys, xs);
7467− }
7468− });
7469−var $elm$core$List$concat = function (lists) {
7470− return A3($elm$core$List$foldr, $elm$core$List$append, _List_Nil, lists);
7471−};
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));
7476− });
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);
7480−};
7481−var $author$project$Main$textToHex = function (str) {
7482− return $elm$core$String$fromList(
7483− A2(
7484− $elm$core$List$concatMap,
7485− $author$project$Main$charToHexBytes,
7486− $elm$core$String$toList(str)));
7487−};
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') {
7504− var key = _v1.a;
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(
7511− _Utils_ap(
7512− ephPubHex,
7513− _Utils_ap(
7514− nonceHex,
7515− _Utils_ap(
7516− ciphertextHex,
7517− _Utils_ap(senderPubHex, sigHex)))));
7518− } else {
7519− return $elm$core$Maybe$Nothing;
7520− }
7521− } else {
7522− return $elm$core$Maybe$Nothing;
7523− }
7524− });
7525−var $lynxjs_elm$crypto$Crypto$Ed25519$getPublicKey = _Crypto_ed25519GetPublicKey;
7526−var $author$project$Main$httpErrorToString = function (err) {
7527− switch (err.$) {
7528− case 'BadUrl':
7529− var url = err.a;
7530− return 'Bad URL: ' + url;
7531− case 'Timeout':
7532− return 'Request timed out';
7533− case 'NetworkError':
7534− return 'Network error';
7535− case 'BadStatus':
7536− var code = err.a;
7537− return 'Server error: ' + $elm$core$String$fromInt(code);
7538− default:
7539− var msg_ = err.a;
7540− return 'Bad response: ' + msg_;
7541− }
7542−};
7543−var $elm$json$Json$Encode$int = _Json_wrap;
7544−var $elm$core$List$isEmpty = function (xs) {
7545− if (!xs.b) {
7546− return true;
7547− } else {
7548− return false;
7549− }
7550−};
7551−var $elm$core$String$isEmpty = function (string) {
7552− return string === '';
7553−};
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);
7558− });
7559−var $author$project$Main$GotLookup = function (a) {
7560− return {$: 'GotLookup', a: a};
7561−};
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});
7566−};
7567−var $author$project$Main$LookupResponse = F2(
7568− function (pubkey, online) {
7569− return {online: online, pubkey: pubkey};
7570− });
7571−var $author$project$Main$lookupDecoder = function (pubkey) {
7572− return A2(
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));
7576−};
7577−var $author$project$Main$lookupPresence = F2(
7578− function (serverUrl, pubkey) {
7579− return $lynxjs_elm$http$Http$get(
7580− {
7581− expect: A2(
7582− $lynxjs_elm$http$Http$expectJson,
7583− $author$project$Main$GotLookup,
7584− $author$project$Main$lookupDecoder(pubkey)),
7585− url: serverUrl + ('/lookup/' + pubkey)
7586− });
7587− });
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(
7593− f(value));
7594− } else {
7595− return $elm$core$Maybe$Nothing;
7596− }
7597− });
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)) {
7604− var edHex = _v0.a;
7605− var _v1 = _v0.b;
7606− var xHex = _v1.a;
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;
7609− } else {
7610− return $elm$core$Maybe$Nothing;
7611− }
7612−};
7613−var $author$project$Main$GotPoll = function (a) {
7614− return {$: 'GotPoll', a: a};
7615−};
7616−var $author$project$Main$PollResponse = F2(
7617− function (events, cursor) {
7618− return {cursor: cursor, events: events};
7619− });
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};
7624− });
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,
7636− A2(
7637− $elm$json$Json$Decode$field,
7638− 'events',
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(
7644− {
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(
7648− [
7649− A2($lynxjs_elm$http$Http$header, 'Authorization', 'Bearer ' + token)
7650− ]),
7651− method: 'GET',
7652− timeout: $elm$core$Maybe$Just(10000),
7653− tracker: $elm$core$Maybe$Nothing,
7654− url: serverUrl + '/poll'
7655− });
7656− });
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) {
7661− decodeUtf8Help:
7662− while (true) {
7663− if (!bytes.b) {
7664− return $elm$core$Maybe$Just(acc);
7665− } else {
7666− var b = bytes.a;
7667− var rest = bytes.b;
7668− if (b < 128) {
7669− var $temp$bytes = rest,
7670− $temp$acc = A2(
7671− $elm$core$List$cons,
7672− $elm$core$Char$fromCode(b),
7673− acc);
7674− bytes = $temp$bytes;
7675− acc = $temp$acc;
7676− continue decodeUtf8Help;
7677− } else {
7678− if ((b >= 192) && (b < 224)) {
7679− if (rest.b) {
7680− var b2 = rest.a;
7681− var rest2 = rest.b;
7682− var code = ((b - 192) * 64) + (b2 - 128);
7683− var $temp$bytes = rest2,
7684− $temp$acc = A2(
7685− $elm$core$List$cons,
7686− $elm$core$Char$fromCode(code),
7687− acc);
7688− bytes = $temp$bytes;
7689− acc = $temp$acc;
7690− continue decodeUtf8Help;
7691− } else {
7692− return $elm$core$Maybe$Nothing;
7693− }
7694− } else {
7695− if ((b >= 224) && (b < 240)) {
7696− if (rest.b && rest.b.b) {
7697− var b2 = rest.a;
7698− var _v3 = rest.b;
7699− var b3 = _v3.a;
7700− var rest3 = _v3.b;
7701− var code = (((b - 224) * 4096) + ((b2 - 128) * 64)) + (b3 - 128);
7702− var $temp$bytes = rest3,
7703− $temp$acc = A2(
7704− $elm$core$List$cons,
7705− $elm$core$Char$fromCode(code),
7706− acc);
7707− bytes = $temp$bytes;
7708− acc = $temp$acc;
7709− continue decodeUtf8Help;
7710− } else {
7711− return $elm$core$Maybe$Nothing;
7712− }
7713− } else {
7714− if (b >= 240) {
7715− if ((rest.b && rest.b.b) && rest.b.b.b) {
7716− var b2 = rest.a;
7717− var _v5 = rest.b;
7718− var b3 = _v5.a;
7719− var _v6 = _v5.b;
7720− var b4 = _v6.a;
7721− var rest4 = _v6.b;
7722− var code = ((((b - 240) * 262144) + ((b2 - 128) * 4096)) + ((b3 - 128) * 64)) + (b4 - 128);
7723− var $temp$bytes = rest4,
7724− $temp$acc = A2(
7725− $elm$core$List$cons,
7726− $elm$core$Char$fromCode(code),
7727− acc);
7728− bytes = $temp$bytes;
7729− acc = $temp$acc;
7730− continue decodeUtf8Help;
7731− } else {
7732− return $elm$core$Maybe$Nothing;
7733− }
7734− } else {
7735− return $elm$core$Maybe$Nothing;
7736− }
7737− }
7738− }
7739− }
7740− }
7741− }
7742− });
7743−var $author$project$Main$decodeUtf8Bytes = function (bytes) {
7744− return A2(
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));
7748−};
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));
7752−};
7753−var $elm$core$Maybe$map2 = F3(
7754− function (func, ma, mb) {
7755− if (ma.$ === 'Nothing') {
7756− return $elm$core$Maybe$Nothing;
7757− } else {
7758− var a = ma.a;
7759− if (mb.$ === 'Nothing') {
7760− return $elm$core$Maybe$Nothing;
7761− } else {
7762− var b = mb.a;
7763− return $elm$core$Maybe$Just(
7764− A2(func, a, b));
7765− }
7766− }
7767− });
7768−var $author$project$Main$pairUp = function (list) {
7769− if (list.b && list.b.b) {
7770− var a = list.a;
7771− var _v1 = list.b;
7772− var b = _v1.a;
7773− var rest = _v1.b;
7774− return A2(
7775− $elm$core$List$cons,
7776− _Utils_Tuple2(a, b),
7777− $author$project$Main$pairUp(rest));
7778− } else {
7779− return _List_Nil;
7780− }
7781−};
7782−var $author$project$Main$hexToBytes = function (hex) {
7783− var chars = $elm$core$String$toList(hex);
7784− var pairs = $author$project$Main$pairUp(chars);
7785− return A2(
7786− $elm$core$List$filterMap,
7787− function (_v0) {
7788− var hi = _v0.a;
7789− var lo = _v0.b;
7790− return A3(
7791− $elm$core$Maybe$map2,
7792− F2(
7793− function (h, l) {
7794− return (h * 16) + l;
7795− }),
7796− $author$project$Main$hexCharToInt(hi),
7797− $author$project$Main$hexCharToInt(lo));
7798− },
7799− pairs);
7800−};
7801−var $elm$core$Maybe$withDefault = F2(
7802− function (_default, maybe) {
7803− if (maybe.$ === 'Just') {
7804− var value = maybe.a;
7805− return value;
7806− } else {
7807− return _default;
7808− }
7809− });
7810−var $author$project$Main$hexToText = function (hex) {
7811− return A2(
7812− $elm$core$Maybe$withDefault,
7813− '',
7814− $author$project$Main$decodeUtf8Bytes(
7815− $author$project$Main$hexToBytes(hex)));
7816−};
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;
7827− } else {
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;
7838− var sig = _v0.b.a;
7839− if (!A3($lynxjs_elm$crypto$Crypto$Ed25519$verify, sig, ciphertextHex, senderEdPub)) {
7840− return $elm$core$Maybe$Nothing;
7841− } else {
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') {
7851− var key = _v2.a;
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(
7856− _Utils_Tuple2(
7857− senderEdPubHex,
7858− $author$project$Main$hexToText(plaintextHex)));
7859− } else {
7860− return $elm$core$Maybe$Nothing;
7861− }
7862− } else {
7863− return $elm$core$Maybe$Nothing;
7864− }
7865− } else {
7866− return $elm$core$Maybe$Nothing;
7867− }
7868− }
7869− } else {
7870− return $elm$core$Maybe$Nothing;
7871− }
7872− }
7873− });
7874−var $author$project$Main$Envelope = F4(
7875− function (toKey, fromKey, encryptedBlob, timestamp) {
7876− return {encryptedBlob: encryptedBlob, fromKey: fromKey, timestamp: timestamp, toKey: toKey};
7877− });
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) {
7889− var dict = _v0.a;
7890− return $elm$core$Set$Set_elm_builtin(
7891− A3($elm$core$Dict$insert, key, _Utils_Tuple0, dict));
7892− });
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') {
7897− return true;
7898− } else {
7899− return false;
7900− }
7901− });
7902−var $elm$core$Set$member = F2(
7903− function (key, _v0) {
7904− var dict = _v0.a;
7905− return A2($elm$core$Dict$member, key, dict);
7906− });
7907−var $author$project$Main$MessagePayload = F4(
7908− function (type_, id, timestamp, body) {
7909− return {body: body, id: id, timestamp: timestamp, type_: type_};
7910− });
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) {
7920− return A3(
7921− $elm$core$List$foldl,
7922− F2(
7923− function (event, _v0) {
7924− var msgs = _v0.a;
7925− var seen = _v0.b;
7926− var acks = _v0.c;
7927− if (event.eventType !== 'message') {
7928− return _Utils_Tuple3(msgs, seen, acks);
7929− } else {
7930− var _v1 = A2($elm$json$Json$Decode$decodeString, $author$project$Main$envelopeDecoder, event.payload);
7931− if (_v1.$ === 'Err') {
7932− return _Utils_Tuple3(
7933− msgs,
7934− seen,
7935− A2($elm$core$List$cons, event.id, acks));
7936− } else {
7937− var envelope = _v1.a;
7938− if (_Utils_eq(envelope.fromKey, myEdHex)) {
7939− return _Utils_Tuple3(
7940− msgs,
7941− seen,
7942− A2($elm$core$List$cons, event.id, acks));
7943− } else {
7944− var _v2 = A2($author$project$Main$decryptMessage, xPriv, envelope.encryptedBlob);
7945− if (_v2.$ === 'Nothing') {
7946− return _Utils_Tuple3(
7947− msgs,
7948− seen,
7949− A2($elm$core$List$cons, event.id, acks));
7950− } else {
7951− var _v3 = _v2.a;
7952− var senderPub = _v3.a;
7953− var json = _v3.b;
7954− var _v4 = A2($elm$json$Json$Decode$decodeString, $author$project$Main$messagePayloadDecoder, json);
7955− if (_v4.$ === 'Err') {
7956− return _Utils_Tuple3(
7957− msgs,
7958− seen,
7959− A2($elm$core$List$cons, event.id, acks));
7960− } else {
7961− var payload = _v4.a;
7962− return A2($elm$core$Set$member, payload.id, seen) ? _Utils_Tuple3(
7963− msgs,
7964− seen,
7965− A2($elm$core$List$cons, event.id, acks)) : _Utils_Tuple3(
7966− A2(
7967− $elm$core$List$cons,
7968− _Utils_Tuple2(
7969− senderPub,
7970− {body: payload.body, id: payload.id, outgoing: false, timestamp: payload.timestamp}),
7971− msgs),
7972− A2($elm$core$Set$insert, payload.id, seen),
7973− A2($elm$core$List$cons, event.id, acks));
7974− }
7975− }
7976− }
7977− }
7978− }
7979− }),
7980− _Utils_Tuple3(_List_Nil, seenIds, _List_Nil),
7981− events);
7982− });
7983−var $author$project$Main$GotChallenge = function (a) {
7984− return {$: 'GotChallenge', a: a};
7985−};
7986−var $author$project$Main$ChallengeResponse = function (challenge) {
7987− return {challenge: challenge};
7988−};
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});
7996−};
7997−var $author$project$Main$requestChallenge = F2(
7998− function (serverUrl, pubkey) {
7999− return $lynxjs_elm$http$Http$post(
8000− {
8001− body: $lynxjs_elm$http$Http$jsonBody(
8002− $elm$json$Json$Encode$object(
8003− _List_fromArray(
8004− [
8005− _Utils_Tuple2(
8006− 'pubkey',
8007− $elm$json$Json$Encode$string(pubkey))
8008− ]))),
8009− expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotChallenge, $author$project$Main$challengeDecoder),
8010− url: serverUrl + '/auth/challenge'
8011− });
8012− });
8013−var $author$project$Main$GotSendResult = function (a) {
8014− return {$: 'GotSendResult', a: a};
8015−};
8016−var $author$project$Main$SendResponse = F2(
8017− function (status, messageId) {
8018− return {messageId: messageId, status: status};
8019− });
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(
8028− {
8029− body: $lynxjs_elm$http$Http$jsonBody(
8030− $elm$json$Json$Encode$object(
8031− _List_fromArray(
8032− [
8033− _Utils_Tuple2(
8034− 'to',
8035− $elm$json$Json$Encode$string(to)),
8036− _Utils_Tuple2(
8037− 'encryptedBlob',
8038− $elm$json$Json$Encode$string(encryptedBlob)),
8039− _Utils_Tuple2(
8040− 'timestamp',
8041− $elm$json$Json$Encode$int(timestamp))
8042− ]))),
8043− expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotSendResult, $author$project$Main$sendDecoder),
8044− headers: _List_fromArray(
8045− [
8046− A2($lynxjs_elm$http$Http$header, 'Authorization', 'Bearer ' + token)
8047− ]),
8048− method: 'POST',
8049− timeout: $elm$core$Maybe$Just(10000),
8050− tracker: $elm$core$Maybe$Nothing,
8051− url: serverUrl + '/messages/'
8052− });
8053− });
8054−var $elm$core$String$trim = _String_trim;
8055−var $author$project$Main$GotVerify = function (a) {
8056− return {$: 'GotVerify', a: a};
8057−};
8058−var $author$project$Main$VerifyResponse = F2(
8059− function (token, expiresAt) {
8060− return {expiresAt: expiresAt, token: token};
8061− });
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(
8070− {
8071− body: $lynxjs_elm$http$Http$jsonBody(
8072− $elm$json$Json$Encode$object(
8073− _List_fromArray(
8074− [
8075− _Utils_Tuple2(
8076− 'pubkey',
8077− $elm$json$Json$Encode$string(pubkey)),
8078− _Utils_Tuple2(
8079− 'challenge',
8080− $elm$json$Json$Encode$string(challenge)),
8081− _Utils_Tuple2(
8082− 'signature',
8083− $elm$json$Json$Encode$string(signature))
8084− ]))),
8085− expect: A2($lynxjs_elm$http$Http$expectJson, $author$project$Main$GotVerify, $author$project$Main$verifyDecoder),
8086− url: serverUrl + '/auth/verify'
8087− });
8088− });
8089−var $author$project$Main$update = F2(
8090− function (msg, model) {
8091− switch (msg.$) {
8092− case 'GotSeed':
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(
8097− _Utils_update(
8098− model,
8099− {
8100− edPriv: edPriv,
8101− edPub: A2($elm$core$Maybe$map, $lynxjs_elm$crypto$Crypto$Ed25519$getPublicKey, edPriv),
8102− xPriv: xPriv,
8103− xPub: A2($elm$core$Maybe$map, $lynxjs_elm$crypto$Crypto$X25519$getPublicKey, xPriv)
8104− }),
8105− $elm$core$Platform$Cmd$none);
8106− case 'GotTime':
8107− var posix = msg.a;
8108− return _Utils_Tuple2(
8109− _Utils_update(
8110− model,
8111− {
8112− currentTime: ($elm$time$Time$posixToMillis(posix) / 1000) | 0
8113− }),
8114− $elm$core$Platform$Cmd$none);
8115− case 'Connect':
8116− var _v1 = model.edPub;
8117− if (_v1.$ === 'Just') {
8118− var pub = _v1.a;
8119− return _Utils_Tuple2(
8120− _Utils_update(
8121− model,
8122− {connecting: true, error: $elm$core$Maybe$Nothing}),
8123− A2(
8124− $author$project$Main$requestChallenge,
8125− model.serverUrl,
8126− $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(pub)));
8127− } else {
8128− return _Utils_Tuple2(
8129− _Utils_update(
8130− model,
8131− {
8132− error: $elm$core$Maybe$Just('No identity keypair')
8133− }),
8134− $elm$core$Platform$Cmd$none);
8135− }
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(
8145− model,
8146− A4(
8147− $author$project$Main$verifyAuth,
8148− model.serverUrl,
8149− A2(
8150− $elm$core$Maybe$withDefault,
8151− '',
8152− A2($elm$core$Maybe$map, $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex, model.edPub)),
8153− resp.challenge,
8154− $lynxjs_elm$crypto$Crypto$Ed25519$signatureToHex(sig)));
8155− } else {
8156− return _Utils_Tuple2(
8157− _Utils_update(
8158− model,
8159− {connecting: false}),
8160− $elm$core$Platform$Cmd$none);
8161− }
8162− } else {
8163− var err = _v2.a.a;
8164− return _Utils_Tuple2(
8165− _Utils_update(
8166− model,
8167− {
8168− connecting: false,
8169− error: $elm$core$Maybe$Just(
8170− $author$project$Main$httpErrorToString(err))
8171− }),
8172− $elm$core$Platform$Cmd$none);
8173− }
8174− case 'GotVerify':
8175− var result = msg.a;
8176− if (result.$ === 'Ok') {
8177− var resp = result.a;
8178− return (resp.token !== '') ? _Utils_Tuple2(
8179− _Utils_update(
8180− model,
8181− {authToken: resp.token, connecting: false, screen: $author$project$Main$ContactsScreen}),
8182− $elm$core$Platform$Cmd$none) : _Utils_Tuple2(
8183− _Utils_update(
8184− model,
8185− {
8186− connecting: false,
8187− error: $elm$core$Maybe$Just('Authentication failed')
8188− }),
8189− $elm$core$Platform$Cmd$none);
8190− } else {
8191− var err = result.a;
8192− return _Utils_Tuple2(
8193− _Utils_update(
8194− model,
8195− {
8196− connecting: false,
8197− error: $elm$core$Maybe$Just(
8198− $author$project$Main$httpErrorToString(err))
8199− }),
8200− $elm$core$Platform$Cmd$none);
8201− }
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(
8205− _Utils_update(
8206− model,
8207− {sending: true}),
8208− A2(
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') {
8221− var c = contact.a;
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,
8228− 0,
8229− $elm$json$Json$Encode$object(
8230− _List_fromArray(
8231− [
8232− _Utils_Tuple2(
8233− 'type',
8234− $elm$json$Json$Encode$string('text')),
8235− _Utils_Tuple2(
8236− 'id',
8237− $elm$json$Json$Encode$string(msgId)),
8238− _Utils_Tuple2(
8239− 'timestamp',
8240− $elm$json$Json$Encode$int(timestamp)),
8241− _Utils_Tuple2(
8242− 'body',
8243− $elm$json$Json$Encode$string(model.draft))
8244− ])));
8245− var existing = A2(
8246− $elm$core$Maybe$withDefault,
8247− _List_Nil,
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(
8254− _Utils_update(
8255− model,
8256− {
8257− draft: '',
8258− messages: A3(
8259− $elm$core$Dict$insert,
8260− recipientEdHex,
8261− _Utils_ap(
8262− existing,
8263− _List_fromArray(
8264− [outMsg])),
8265− model.messages)
8266− }),
8267− A5($author$project$Main$sendMessageHttp, model.serverUrl, model.authToken, recipientEdHex, blobHex, timestamp));
8268− } else {
8269− return _Utils_Tuple2(
8270− _Utils_update(
8271− model,
8272− {
8273− error: $elm$core$Maybe$Just('Encryption failed'),
8274− sending: false
8275− }),
8276− $elm$core$Platform$Cmd$none);
8277− }
8278− } else {
8279− return _Utils_Tuple2(
8280− _Utils_update(
8281− model,
8282− {
8283− error: $elm$core$Maybe$Just('Contact not found'),
8284− sending: false
8285− }),
8286− $elm$core$Platform$Cmd$none);
8287− }
8288− } else {
8289− return _Utils_Tuple2(
8290− _Utils_update(
8291− model,
8292− {
8293− error: $elm$core$Maybe$Just('No identity'),
8294− sending: false
8295− }),
8296− $elm$core$Platform$Cmd$none);
8297− }
8298− case 'GotSendResult':
8299− var result = msg.a;
8300− if (result.$ === 'Ok') {
8301− return _Utils_Tuple2(
8302− _Utils_update(
8303− model,
8304− {sending: false}),
8305− $elm$core$Platform$Cmd$none);
8306− } else {
8307− var err = result.a;
8308− return _Utils_Tuple2(
8309− _Utils_update(
8310− model,
8311− {
8312− error: $elm$core$Maybe$Just(
8313− $author$project$Main$httpErrorToString(err)),
8314− sending: false
8315− }),
8316− $elm$core$Platform$Cmd$none);
8317− }
8318− case 'PollTick':
8319− var posix = msg.a;
8320− var t = ($elm$time$Time$posixToMillis(posix) / 1000) | 0;
8321− return (model.authToken !== '') ? _Utils_Tuple2(
8322− _Utils_update(
8323− model,
8324− {currentTime: t}),
8325− A2($author$project$Main$pollMessages, model.serverUrl, model.authToken)) : _Utils_Tuple2(
8326− _Utils_update(
8327− model,
8328− {currentTime: t}),
8329− $elm$core$Platform$Cmd$none);
8330− case 'GotPoll':
8331− var result = msg.a;
8332− var _v8 = _Utils_Tuple3(result, model.xPriv, model.edPub);
8333− _v8$2:
8334− while (true) {
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,
8348− F2(
8349− function (_v11, dict) {
8350− var from = _v11.a;
8351− var chatMsg = _v11.b;
8352− return A3(
8353− $elm$core$Dict$update,
8354− from,
8355− function (existing) {
8356− if (existing.$ === 'Just') {
8357− var c = existing.a;
8358− return $elm$core$Maybe$Just(
8359− _Utils_update(
8360− c,
8361− {lastMessage: chatMsg.body, lastTime: chatMsg.timestamp}));
8362− } else {
8363− return $elm$core$Maybe$Just(
8364− {
8365− edPubHex: from,
8366− lastMessage: chatMsg.body,
8367− lastTime: chatMsg.timestamp,
8368− name: A2($elm$core$String$left, 8, from) + '...',
8369− online: true,
8370− xPubHex: ''
8371− });
8372− }
8373− },
8374− dict);
8375− }),
8376− model.contacts,
8377− newMessages);
8378− var updatedMessages = A3(
8379− $elm$core$List$foldl,
8380− F2(
8381− function (_v10, dict) {
8382− var from = _v10.a;
8383− var chatMsg = _v10.b;
8384− var existing = A2(
8385− $elm$core$Maybe$withDefault,
8386− _List_Nil,
8387− A2($elm$core$Dict$get, from, dict));
8388− return A3(
8389− $elm$core$Dict$insert,
8390− from,
8391− _Utils_ap(
8392− existing,
8393− _List_fromArray(
8394− [chatMsg])),
8395− dict);
8396− }),
8397− model.messages,
8398− newMessages);
8399− return _Utils_Tuple2(
8400− _Utils_update(
8401− model,
8402− {contacts: updatedContacts, messages: updatedMessages, seenIds: newSeenIds}),
8403− ackCmd);
8404− } else {
8405− break _v8$2;
8406− }
8407− } else {
8408− if ((_v8.a.a.$ === 'BadStatus') && (_v8.a.a.a === 401)) {
8409− return _Utils_Tuple2(
8410− _Utils_update(
8411− model,
8412− {
8413− authToken: '',
8414− error: $elm$core$Maybe$Just('Session expired, please reconnect'),
8415− screen: $author$project$Main$SetupScreen
8416− }),
8417− $elm$core$Platform$Cmd$none);
8418− } else {
8419− break _v8$2;
8420− }
8421− }
8422− }
8423− return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8424− case 'GotAck':
8425− return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8426− case 'AddContact':
8427− if ($elm$core$String$isEmpty(model.addIdentity)) {
8428− return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8429− } else {
8430− var _v13 = $author$project$Main$parseIdentity(model.addIdentity);
8431− if (_v13.$ === 'Just') {
8432− var _v14 = _v13.a;
8433− var edHex = _v14.a;
8434− var xHex = _v14.b;
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(
8438− _Utils_update(
8439− model,
8440− {
8441− addIdentity: '',
8442− addName: '',
8443− contacts: A3($elm$core$Dict$insert, edHex, contact, model.contacts),
8444− screen: $author$project$Main$ContactsScreen
8445− }),
8446− A2($author$project$Main$lookupPresence, model.serverUrl, edHex));
8447− } else {
8448− return _Utils_Tuple2(
8449− _Utils_update(
8450− model,
8451− {
8452− error: $elm$core$Maybe$Just('Invalid identity. Expected: <ed25519_hex>.<x25519_hex>')
8453− }),
8454− $elm$core$Platform$Cmd$none);
8455− }
8456− }
8457− case 'GotLookup':
8458− var result = msg.a;
8459− if (result.$ === 'Ok') {
8460− var resp = result.a;
8461− return _Utils_Tuple2(
8462− _Utils_update(
8463− model,
8464− {
8465− contacts: A3(
8466− $elm$core$Dict$update,
8467− resp.pubkey,
8468− $elm$core$Maybe$map(
8469− function (c) {
8470− return _Utils_update(
8471− c,
8472− {online: resp.online});
8473− }),
8474− model.contacts)
8475− }),
8476− $elm$core$Platform$Cmd$none);
8477− } else {
8478− return _Utils_Tuple2(model, $elm$core$Platform$Cmd$none);
8479− }
8480− case 'Navigate':
8481− var screen = msg.a;
8482− return _Utils_Tuple2(
8483− _Utils_update(
8484− model,
8485− {screen: screen}),
8486− $elm$core$Platform$Cmd$none);
8487− case 'OpenChat':
8488− var edPubHex = msg.a;
8489− return _Utils_Tuple2(
8490− _Utils_update(
8491− model,
8492− {activeChat: edPubHex, draft: '', screen: $author$project$Main$ChatScreen}),
8493− $elm$core$Platform$Cmd$none);
8494− case 'UpdateDraft':
8495− var text = msg.a;
8496− return _Utils_Tuple2(
8497− _Utils_update(
8498− model,
8499− {draft: text}),
8500− $elm$core$Platform$Cmd$none);
8501− case 'UpdateServerUrl':
8502− var text = msg.a;
8503− return _Utils_Tuple2(
8504− _Utils_update(
8505− model,
8506− {serverUrl: text}),
8507− $elm$core$Platform$Cmd$none);
8508− case 'UpdateAddIdentity':
8509− var text = msg.a;
8510− return _Utils_Tuple2(
8511− _Utils_update(
8512− model,
8513− {addIdentity: text}),
8514− $elm$core$Platform$Cmd$none);
8515− case 'UpdateAddName':
8516− var text = msg.a;
8517− return _Utils_Tuple2(
8518− _Utils_update(
8519− model,
8520− {addName: text}),
8521− $elm$core$Platform$Cmd$none);
8522− case 'UpdateDisplayName':
8523− var text = msg.a;
8524− return _Utils_Tuple2(
8525− _Utils_update(
8526− model,
8527− {displayName: text}),
8528− $elm$core$Platform$Cmd$none);
8529− default:
8530− return _Utils_Tuple2(
8531− _Utils_update(
8532− model,
8533− {error: $elm$core$Maybe$Nothing}),
8534− $elm$core$Platform$Cmd$none);
8535− }
8536− });
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) {
8545− switch (a.$) {
8546− case 'Start':
8547− return 'flex-start';
8548− case 'Center':
8549− return 'center';
8550− case 'End':
8551− return 'flex-end';
8552− case 'SpaceBetween':
8553− return 'space-between';
8554− case 'SpaceAround':
8555− return 'space-around';
8556− case 'SpaceEvenly':
8557− return 'space-evenly';
8558− case 'Stretch':
8559− return 'stretch';
8560− default:
8561− return 'baseline';
8562− }
8563−};
8564−var $lynxjs_elm$ui$Lynx$Attributes$alignItems = function (a) {
8565− return A2(
8566− $lynxjs_elm$ui$Lynx$Attributes$style,
8567− 'alignItems',
8568− $lynxjs_elm$ui$Lynx$Attributes$alignmentToString(a));
8569−};
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) {
8573− return A2(
8574− $lynxjs_elm$virtual_dom$VirtualDom$style,
8575− key,
8576− $elm$core$String$fromInt(val));
8577− });
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) {
8580− return A2(
8581− $lynxjs_elm$ui$Lynx$Attributes$style,
8582− 'flexDirection',
8583− function () {
8584− switch (d.$) {
8585− case 'Row':
8586− return 'row';
8587− case 'Column':
8588− return 'column';
8589− case 'RowReverse':
8590− return 'row-reverse';
8591− default:
8592− return 'column-reverse';
8593− }
8594− }());
8595−};
8596−var $lynxjs_elm$ui$Lynx$Attributes$pxStyle = F2(
8597− function (key, val) {
8598− return A2(
8599− $lynxjs_elm$virtual_dom$VirtualDom$style,
8600− key,
8601− $elm$core$String$fromInt(val) + 'px');
8602− });
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};
8606−};
8607−var $lynxjs_elm$virtual_dom$VirtualDom$on = _VirtualDom_on;
8608−var $lynxjs_elm$ui$Lynx$Events$onTap = function (msg) {
8609− return A2(
8610− $lynxjs_elm$virtual_dom$VirtualDom$on,
8611− 'tap',
8612− $lynxjs_elm$virtual_dom$VirtualDom$Normal(
8613− $elm$json$Json$Decode$succeed(msg)));
8614−};
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));
8622−};
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) {
8628− return A2(
8629− $lynxjs_elm$ui$Lynx$view,
8630− _List_fromArray(
8631− [
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)
8640− ]),
8641− _List_fromArray(
8642− [
8643− A2(
8644− $lynxjs_elm$ui$Lynx$text,
8645− _List_fromArray(
8646− [
8647− $lynxjs_elm$ui$Lynx$Attributes$color('#f85149'),
8648− $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
8649− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
8650− ]),
8651− _List_fromArray(
8652− [
8653− $lynxjs_elm$ui$Lynx$textContent(err)
8654− ])),
8655− A2(
8656− $lynxjs_elm$ui$Lynx$text,
8657− _List_fromArray(
8658− [
8659− $lynxjs_elm$ui$Lynx$Attributes$color('#f85149'),
8660− $lynxjs_elm$ui$Lynx$Attributes$fontSize(16)
8661− ]),
8662− _List_fromArray(
8663− [
8664− $lynxjs_elm$ui$Lynx$textContent('x')
8665− ]))
8666− ]));
8667−};
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};
8672−};
8673−var $author$project$Main$UpdateAddIdentity = function (a) {
8674− return {$: 'UpdateAddIdentity', a: a};
8675−};
8676−var $author$project$Main$UpdateAddName = function (a) {
8677− return {$: 'UpdateAddName', a: a};
8678−};
8679−var $lynxjs_elm$ui$Lynx$Attributes$marginBottom = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('marginBottom');
8680−var $author$project$Main$fieldLabel = function (text) {
8681− return A2(
8682− $lynxjs_elm$ui$Lynx$text,
8683− _List_fromArray(
8684− [
8685− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
8686− $lynxjs_elm$ui$Lynx$Attributes$fontSize(13),
8687− $lynxjs_elm$ui$Lynx$Attributes$marginBottom(6)
8688− ]),
8689− _List_fromArray(
8690− [
8691− $lynxjs_elm$ui$Lynx$textContent(text)
8692− ]));
8693−};
8694−var $lynxjs_elm$ui$Lynx$Attributes$fontWeight = function (w) {
8695− return A2(
8696− $lynxjs_elm$ui$Lynx$Attributes$style,
8697− 'fontWeight',
8698− function () {
8699− if (w.$ === 'Normal') {
8700− return 'normal';
8701− } else {
8702− return 'bold';
8703− }
8704− }());
8705−};
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) {
8710− return A2(
8711− $lynxjs_elm$ui$Lynx$view,
8712− _List_fromArray(
8713− [
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)
8720− ]),
8721− _List_fromArray(
8722− [
8723− A2(
8724− $lynxjs_elm$ui$Lynx$text,
8725− _List_fromArray(
8726− [
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)
8730− ]),
8731− _List_fromArray(
8732− [
8733− $lynxjs_elm$ui$Lynx$textContent(text)
8734− ]))
8735− ]));
8736− });
8737−var $lynxjs_elm$ui$Lynx$Attributes$height = $lynxjs_elm$ui$Lynx$Attributes$pxStyle('height');
8738−var $author$project$Main$spacer = function (px) {
8739− return A2(
8740− $lynxjs_elm$ui$Lynx$view,
8741− _List_fromArray(
8742− [
8743− $lynxjs_elm$ui$Lynx$Attributes$height(px)
8744− ]),
8745− _List_Nil);
8746−};
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);
8753− });
8754−var $lynxjs_elm$ui$Lynx$Events$onInput = function (tagger) {
8755− return A2(
8756− $lynxjs_elm$virtual_dom$VirtualDom$on,
8757− 'input',
8758− $lynxjs_elm$virtual_dom$VirtualDom$Normal(
8759− A2(
8760− $elm$json$Json$Decode$map,
8761− tagger,
8762− A2(
8763− $elm$json$Json$Decode$at,
8764− _List_fromArray(
8765− ['detail', 'value']),
8766− $elm$json$Json$Decode$string))));
8767−};
8768−var $lynxjs_elm$virtual_dom$VirtualDom$attribute = F2(
8769− function (key, value) {
8770− return A2(
8771− _VirtualDom_attribute,
8772− _VirtualDom_noOnOrFormAction(key),
8773− _VirtualDom_noJavaScriptOrHtmlUri(value));
8774− });
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) {
8779− return A2(
8780− $lynxjs_elm$ui$Lynx$input,
8781− _List_fromArray(
8782− [
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)
8794− ]),
8795− _List_Nil);
8796−};
8797−var $author$project$Main$viewAddContact = function (model) {
8798− return A2(
8799− $lynxjs_elm$ui$Lynx$view,
8800− _List_fromArray(
8801− [
8802− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
8803− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
8804− ]),
8805− _List_fromArray(
8806− [
8807− A2(
8808− $lynxjs_elm$ui$Lynx$view,
8809− _List_fromArray(
8810− [
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')
8818− ]),
8819− _List_fromArray(
8820− [
8821− A2(
8822− $lynxjs_elm$ui$Lynx$view,
8823− _List_fromArray(
8824− [
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)
8830− ]),
8831− _List_fromArray(
8832− [
8833− A2(
8834− $lynxjs_elm$ui$Lynx$text,
8835− _List_fromArray(
8836− [
8837− $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
8838− $lynxjs_elm$ui$Lynx$Attributes$fontSize(20)
8839− ]),
8840− _List_fromArray(
8841− [
8842− $lynxjs_elm$ui$Lynx$textContent('<')
8843− ]))
8844− ])),
8845− A2(
8846− $lynxjs_elm$ui$Lynx$text,
8847− _List_fromArray(
8848− [
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)
8852− ]),
8853− _List_fromArray(
8854− [
8855− $lynxjs_elm$ui$Lynx$textContent('Add Contact')
8856− ]))
8857− ])),
8858− A2(
8859− $lynxjs_elm$ui$Lynx$view,
8860− _List_fromArray(
8861− [
8862− $lynxjs_elm$ui$Lynx$Attributes$padding(24),
8863− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column)
8864− ]),
8865− _List_fromArray(
8866− [
8867− $author$project$Main$fieldLabel('Identity string'),
8868− A2(
8869− $lynxjs_elm$ui$Lynx$text,
8870− _List_fromArray(
8871− [
8872− $lynxjs_elm$ui$Lynx$Attributes$color('#6e7681'),
8873− $lynxjs_elm$ui$Lynx$Attributes$fontSize(12),
8874− $lynxjs_elm$ui$Lynx$Attributes$marginBottom(8)
8875− ]),
8876− _List_fromArray(
8877− [
8878− $lynxjs_elm$ui$Lynx$textContent('Paste the <ed25519>.<x25519> identity from your contact')
8879− ])),
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')
8888− ]))
8889− ]));
8890−};
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};
8895−};
8896−var $lynxjs_elm$ui$Lynx$Attributes$Vertical = {$: 'Vertical'};
8897−var $lynxjs_elm$ui$Lynx$Attributes$justifyContent = function (a) {
8898− return A2(
8899− $lynxjs_elm$ui$Lynx$Attributes$style,
8900− 'justifyContent',
8901− $lynxjs_elm$ui$Lynx$Attributes$alignmentToString(a));
8902−};
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) {
8905− return A2(
8906− $lynxjs_elm$ui$Lynx$Attributes$attr,
8907− 'scroll-direction',
8908− function () {
8909− if (d.$ === 'Vertical') {
8910− return 'vertical';
8911− } else {
8912− return 'horizontal';
8913− }
8914− }());
8915−};
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) {
8918− return A2(
8919− $lynxjs_elm$ui$Lynx$Attributes$style,
8920− 'textAlign',
8921− function () {
8922− switch (a.$) {
8923− case 'Left':
8924− return 'left';
8925− case 'Right':
8926− return 'right';
8927− case 'TextCenter':
8928− return 'center';
8929− default:
8930− return 'justify';
8931− }
8932− }());
8933−};
8934−var $elm$core$String$right = F2(
8935− function (n, string) {
8936− return (n < 1) ? '' : A3(
8937− $elm$core$String$slice,
8938− -n,
8939− $elm$core$String$length(string),
8940− string);
8941− });
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;
8944−};
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) {
8949− return A2(
8950− $lynxjs_elm$ui$Lynx$view,
8951− _List_fromArray(
8952− [
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)
8957− ]),
8958− _List_fromArray(
8959− [
8960− A2(
8961− $lynxjs_elm$ui$Lynx$view,
8962− _List_fromArray(
8963− [
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)
8972− ]),
8973− _List_fromArray(
8974− [
8975− A2(
8976− $lynxjs_elm$ui$Lynx$text,
8977− _List_fromArray(
8978− [
8979− $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
8980− $lynxjs_elm$ui$Lynx$Attributes$fontSize(15)
8981− ]),
8982− _List_fromArray(
8983− [
8984− $lynxjs_elm$ui$Lynx$textContent(chatMsg.body)
8985− ]))
8986− ]))
8987− ]));
8988−};
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),
8994− A2(
8995− $elm$core$Maybe$map,
8996− function ($) {
8997− return $.name;
8998− },
8999− A2($elm$core$Dict$get, model.activeChat, model.contacts)));
9000− var chatMessages = A2(
9001− $elm$core$Maybe$withDefault,
9002− _List_Nil,
9003− A2($elm$core$Dict$get, model.activeChat, model.messages));
9004− return A2(
9005− $lynxjs_elm$ui$Lynx$view,
9006− _List_fromArray(
9007− [
9008− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
9009− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9010− ]),
9011− _List_fromArray(
9012− [
9013− A2(
9014− $lynxjs_elm$ui$Lynx$view,
9015− _List_fromArray(
9016− [
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')
9024− ]),
9025− _List_fromArray(
9026− [
9027− A2(
9028− $lynxjs_elm$ui$Lynx$view,
9029− _List_fromArray(
9030− [
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)
9036− ]),
9037− _List_fromArray(
9038− [
9039− A2(
9040− $lynxjs_elm$ui$Lynx$text,
9041− _List_fromArray(
9042− [
9043− $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
9044− $lynxjs_elm$ui$Lynx$Attributes$fontSize(20)
9045− ]),
9046− _List_fromArray(
9047− [
9048− $lynxjs_elm$ui$Lynx$textContent('<')
9049− ]))
9050− ])),
9051− A2(
9052− $lynxjs_elm$ui$Lynx$text,
9053− _List_fromArray(
9054− [
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)
9059− ]),
9060− _List_fromArray(
9061− [
9062− $lynxjs_elm$ui$Lynx$textContent(contactName)
9063− ]))
9064− ])),
9065− A2(
9066− $lynxjs_elm$ui$Lynx$scrollView,
9067− _List_fromArray(
9068− [
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)
9075− ]),
9076− $elm$core$List$isEmpty(chatMessages) ? _List_fromArray(
9077− [
9078− A2(
9079− $lynxjs_elm$ui$Lynx$view,
9080− _List_fromArray(
9081− [
9082− $lynxjs_elm$ui$Lynx$Attributes$alignItems($lynxjs_elm$ui$Lynx$Attributes$Center),
9083− $lynxjs_elm$ui$Lynx$Attributes$paddingTop(80)
9084− ]),
9085− _List_fromArray(
9086− [
9087− A2(
9088− $lynxjs_elm$ui$Lynx$text,
9089− _List_fromArray(
9090− [
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)
9094− ]),
9095− _List_fromArray(
9096− [
9097− $lynxjs_elm$ui$Lynx$textContent('No messages yet. Say hello!')
9098− ]))
9099− ]))
9100− ]) : A2($elm$core$List$map, $author$project$Main$viewMessage, chatMessages)),
9101− A2(
9102− $lynxjs_elm$ui$Lynx$view,
9103− _List_fromArray(
9104− [
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')
9112− ]),
9113− _List_fromArray(
9114− [
9115− A2(
9116− $lynxjs_elm$ui$Lynx$input,
9117− _List_fromArray(
9118− [
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)
9131− ]),
9132− _List_Nil),
9133− A2(
9134− $lynxjs_elm$ui$Lynx$view,
9135− _List_fromArray(
9136− [
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)
9147− ]),
9148− _List_fromArray(
9149− [
9150− A2(
9151− $lynxjs_elm$ui$Lynx$text,
9152− _List_fromArray(
9153− [
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)
9157− ]),
9158− _List_fromArray(
9159− [
9160− $lynxjs_elm$ui$Lynx$textContent('^')
9161− ]))
9162− ]))
9163− ]))
9164− ]));
9165−};
9166−var $author$project$Main$AddContactScreen = {$: 'AddContactScreen'};
9167−var $elm$core$Dict$isEmpty = function (dict) {
9168− if (dict.$ === 'RBEmpty_elm_builtin') {
9169− return true;
9170− } else {
9171− return false;
9172− }
9173−};
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) {
9177− return A3(
9178− $elm$core$Dict$foldr,
9179− F3(
9180− function (key, value, valueList) {
9181− return A2($elm$core$List$cons, value, valueList);
9182− }),
9183− _List_Nil,
9184− dict);
9185−};
9186−var $author$project$Main$OpenChat = function (a) {
9187− return {$: 'OpenChat', a: a};
9188−};
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) {
9192− return A2(
9193− $lynxjs_elm$ui$Lynx$view,
9194− _List_fromArray(
9195− [
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)
9206− ]),
9207− _List_fromArray(
9208− [
9209− A2(
9210− $lynxjs_elm$ui$Lynx$view,
9211− _List_fromArray(
9212− [
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)
9220− ]),
9221− _List_fromArray(
9222− [
9223− A2(
9224− $lynxjs_elm$ui$Lynx$text,
9225− _List_fromArray(
9226− [
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)
9230− ]),
9231− _List_fromArray(
9232− [
9233− $lynxjs_elm$ui$Lynx$textContent(
9234− $elm$core$String$toUpper(
9235− A2($elm$core$String$left, 1, contact.name)))
9236− ]))
9237− ])),
9238− A2(
9239− $lynxjs_elm$ui$Lynx$view,
9240− _List_fromArray(
9241− [
9242− $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9243− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column)
9244− ]),
9245− _List_fromArray(
9246− [
9247− A2(
9248− $lynxjs_elm$ui$Lynx$view,
9249− _List_fromArray(
9250− [
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)
9253− ]),
9254− _List_fromArray(
9255− [
9256− A2(
9257− $lynxjs_elm$ui$Lynx$text,
9258− _List_fromArray(
9259− [
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)
9264− ]),
9265− _List_fromArray(
9266− [
9267− $lynxjs_elm$ui$Lynx$textContent(contact.name)
9268− ])),
9269− contact.online ? A2(
9270− $lynxjs_elm$ui$Lynx$view,
9271− _List_fromArray(
9272− [
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)
9278− ]),
9279− _List_Nil) : A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil)
9280− ])),
9281− $elm$core$String$isEmpty(contact.lastMessage) ? A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil) : A2(
9282− $lynxjs_elm$ui$Lynx$text,
9283− _List_fromArray(
9284− [
9285− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9286− $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9287− $lynxjs_elm$ui$Lynx$Attributes$marginTop(2)
9288− ]),
9289− _List_fromArray(
9290− [
9291− $lynxjs_elm$ui$Lynx$textContent(
9292− A2($elm$core$String$left, 50, contact.lastMessage))
9293− ]))
9294− ]))
9295− ]));
9296−};
9297−var $author$project$Main$viewContacts = function (model) {
9298− return A2(
9299− $lynxjs_elm$ui$Lynx$view,
9300− _List_fromArray(
9301− [
9302− $lynxjs_elm$ui$Lynx$Attributes$flexDirection($lynxjs_elm$ui$Lynx$Attributes$Column),
9303− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9304− ]),
9305− _List_fromArray(
9306− [
9307− A2(
9308− $lynxjs_elm$ui$Lynx$view,
9309− _List_fromArray(
9310− [
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')
9318− ]),
9319− _List_fromArray(
9320− [
9321− A2(
9322− $lynxjs_elm$ui$Lynx$text,
9323− _List_fromArray(
9324− [
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)
9329− ]),
9330− _List_fromArray(
9331− [
9332− $lynxjs_elm$ui$Lynx$textContent('Messages')
9333− ])),
9334− A2(
9335− $lynxjs_elm$ui$Lynx$view,
9336− _List_fromArray(
9337− [
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)
9342− ]),
9343− _List_fromArray(
9344− [
9345− A2(
9346− $lynxjs_elm$ui$Lynx$text,
9347− _List_fromArray(
9348− [
9349− $lynxjs_elm$ui$Lynx$Attributes$color('#58a6ff'),
9350− $lynxjs_elm$ui$Lynx$Attributes$fontSize(28)
9351− ]),
9352− _List_fromArray(
9353− [
9354− $lynxjs_elm$ui$Lynx$textContent('+')
9355− ]))
9356− ]))
9357− ])),
9358− $elm$core$Dict$isEmpty(model.contacts) ? A2(
9359− $lynxjs_elm$ui$Lynx$view,
9360− _List_fromArray(
9361− [
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)
9366− ]),
9367− _List_fromArray(
9368− [
9369− A2(
9370− $lynxjs_elm$ui$Lynx$text,
9371− _List_fromArray(
9372− [
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)
9376− ]),
9377− _List_fromArray(
9378− [
9379− $lynxjs_elm$ui$Lynx$textContent('No conversations yet')
9380− ])),
9381− $author$project$Main$spacer(8),
9382− A2(
9383− $lynxjs_elm$ui$Lynx$text,
9384− _List_fromArray(
9385− [
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)
9389− ]),
9390− _List_fromArray(
9391− [
9392− $lynxjs_elm$ui$Lynx$textContent('Tap + to add a contact')
9393− ]))
9394− ])) : A2(
9395− $lynxjs_elm$ui$Lynx$scrollView,
9396− _List_fromArray(
9397− [
9398− $lynxjs_elm$ui$Lynx$Attributes$flex(1),
9399− $lynxjs_elm$ui$Lynx$Attributes$scrollDirection($lynxjs_elm$ui$Lynx$Attributes$Vertical)
9400− ]),
9401− A2(
9402− $elm$core$List$map,
9403− $author$project$Main$viewContactRow,
9404− A2(
9405− $elm$core$List$sortBy,
9406− function (c) {
9407− return -c.lastTime;
9408− },
9409− $elm$core$Dict$values(model.contacts)))),
9410− function () {
9411− var _v0 = model.edPub;
9412− if (_v0.$ === 'Just') {
9413− var pub = _v0.a;
9414− return A2(
9415− $lynxjs_elm$ui$Lynx$view,
9416− _List_fromArray(
9417− [
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)
9425− ]),
9426− _List_fromArray(
9427− [
9428− A2(
9429− $lynxjs_elm$ui$Lynx$view,
9430− _List_fromArray(
9431− [
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)
9437− ]),
9438− _List_Nil),
9439− A2(
9440− $lynxjs_elm$ui$Lynx$text,
9441− _List_fromArray(
9442− [
9443− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9444− $lynxjs_elm$ui$Lynx$Attributes$fontSize(11),
9445− $lynxjs_elm$ui$Lynx$Attributes$flex(1)
9446− ]),
9447− _List_fromArray(
9448− [
9449− $lynxjs_elm$ui$Lynx$textContent(
9450− $author$project$Main$truncateKey(
9451− $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(pub)))
9452− ]))
9453− ]));
9454− } else {
9455− return A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil);
9456− }
9457− }()
9458− ]));
9459−};
9460−var $author$project$Main$Connect = {$: 'Connect'};
9461−var $author$project$Main$UpdateDisplayName = function (a) {
9462− return {$: 'UpdateDisplayName', a: a};
9463−};
9464−var $author$project$Main$UpdateServerUrl = function (a) {
9465− return {$: 'UpdateServerUrl', a: a};
9466−};
9467−var $author$project$Main$disabledButton = function (text) {
9468− return A2(
9469− $lynxjs_elm$ui$Lynx$view,
9470− _List_fromArray(
9471− [
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)
9477− ]),
9478− _List_fromArray(
9479− [
9480− A2(
9481− $lynxjs_elm$ui$Lynx$text,
9482− _List_fromArray(
9483− [
9484− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9485− $lynxjs_elm$ui$Lynx$Attributes$fontSize(16)
9486− ]),
9487− _List_fromArray(
9488− [
9489− $lynxjs_elm$ui$Lynx$textContent(text)
9490− ]))
9491− ]));
9492−};
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')) {
9497− var edP = _v0.a.a;
9498− var xP = _v0.b.a;
9499− return $lynxjs_elm$crypto$Crypto$Ed25519$publicKeyToHex(edP) + ('.' + $lynxjs_elm$crypto$Crypto$X25519$publicKeyToHex(xP));
9500− } else {
9501− return '';
9502− }
9503− }();
9504− return A2(
9505− $lynxjs_elm$ui$Lynx$view,
9506− _List_fromArray(
9507− [
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)
9512− ]),
9513− _List_fromArray(
9514− [
9515− A2(
9516− $lynxjs_elm$ui$Lynx$text,
9517− _List_fromArray(
9518− [
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)
9524− ]),
9525− _List_fromArray(
9526− [
9527− $lynxjs_elm$ui$Lynx$textContent('Skrepka')
9528− ])),
9529− A2(
9530− $lynxjs_elm$ui$Lynx$text,
9531− _List_fromArray(
9532− [
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)
9537− ]),
9538− _List_fromArray(
9539− [
9540− $lynxjs_elm$ui$Lynx$textContent('Encrypted messaging, no accounts')
9541− ])),
9542− $author$project$Main$fieldLabel('Your identity (share this with contacts)'),
9543− $elm$core$String$isEmpty(identityStr) ? A2(
9544− $lynxjs_elm$ui$Lynx$text,
9545− _List_fromArray(
9546− [
9547− $lynxjs_elm$ui$Lynx$Attributes$color('#8b949e'),
9548− $lynxjs_elm$ui$Lynx$Attributes$fontSize(14),
9549− $lynxjs_elm$ui$Lynx$Attributes$marginBottom(24)
9550− ]),
9551− _List_fromArray(
9552− [
9553− $lynxjs_elm$ui$Lynx$textContent('Generating keypair...')
9554− ])) : A2(
9555− $lynxjs_elm$ui$Lynx$view,
9556− _List_fromArray(
9557− [
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)
9562− ]),
9563− _List_fromArray(
9564− [
9565− A2(
9566− $lynxjs_elm$ui$Lynx$text,
9567− _List_fromArray(
9568− [
9569− $lynxjs_elm$ui$Lynx$Attributes$color('#c9d1d9'),
9570− $lynxjs_elm$ui$Lynx$Attributes$fontSize(11)
9571− ]),
9572− _List_fromArray(
9573− [
9574− $lynxjs_elm$ui$Lynx$textContent(identityStr)
9575− ]))
9576− ])),
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'))
9586− ]));
9587−};
9588−var $author$project$Main$view = function (model) {
9589− return A2(
9590− $lynxjs_elm$ui$Lynx$view,
9591− _List_fromArray(
9592− [
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')
9596− ]),
9597− _List_fromArray(
9598− [
9599− function () {
9600− var _v0 = model.error;
9601− if (_v0.$ === 'Just') {
9602− var err = _v0.a;
9603− return $author$project$Main$errorBanner(err);
9604− } else {
9605− return A2($lynxjs_elm$ui$Lynx$view, _List_Nil, _List_Nil);
9606− }
9607− }(),
9608− function () {
9609− var _v1 = model.screen;
9610− switch (_v1.$) {
9611− case 'SetupScreen':
9612− return $author$project$Main$viewSetup(model);
9613− case 'ContactsScreen':
9614− return $author$project$Main$viewContacts(model);
9615− case 'ChatScreen':
9616− return $author$project$Main$viewChat(model);
9617− default:
9618− return $author$project$Main$viewAddContact(model);
9619− }
9620− }()
9621− ]));
9622−};
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));