smesh_lol_web_common_marmot.mjs raw
1 // Package smesh.lol/web/common/marmot
2 // Generated by MoxieJS — Moxie JavaScript backend
3
4 import * as $rt from './$runtime/index.mjs';
5
6 import * as errors from './errors.mjs';
7 import * as smesh$lol$web$common$crypto$chacha20poly1305 from './smesh_lol_web_common_crypto_chacha20poly1305.mjs';
8 import * as smesh$lol$web$common$helpers from './smesh_lol_web_common_helpers.mjs';
9 import * as smesh$lol$web$common$jsbridge$schnorr from './smesh_lol_web_common_jsbridge_schnorr.mjs';
10 import * as smesh$lol$web$common$jsbridge$subtle from './smesh_lol_web_common_jsbridge_subtle.mjs';
11 import * as smesh$lol$web$common$mls from './smesh_lol_web_common_mls.mjs';
12 import * as smesh$lol$web$common$nostr from './smesh_lol_web_common_nostr.mjs';
13
14 // Package-level variables
15 export let exporterLabel = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
16 export let exporterContext = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
17
18 $rt.types.registerType('smesh.lol/web/common/marmot.NostrGroupData', {
19 id: 'smesh.lol/web/common/marmot.NostrGroupData',
20 kind: 'struct',
21 methods: new Map(),
22 fields: [
23 { name: 'Version', type: 'uint16', tag: '', embedded: false },
24 { name: 'NostrGroupID', type: '[32]byte', tag: '', embedded: false },
25 { name: 'Name', type: 'string', tag: '', embedded: false },
26 { name: 'Description', type: 'string', tag: '', embedded: false },
27 { name: 'AdminPubkeys', type: '[][]byte', tag: '', embedded: false },
28 { name: 'Relays', type: '[]string', tag: '', embedded: false },
29 ],
30 zero: () => ({ Version: 0, NostrGroupID: $rt.builtin.makeSlice(32, 32, 0), Name: '', Description: '', AdminPubkeys: null, Relays: null }),
31 });
32 $rt.types.registerType('smesh.lol/web/common/marmot.GroupState', {
33 id: 'smesh.lol/web/common/marmot.GroupState',
34 kind: 'struct',
35 methods: new Map(),
36 fields: [
37 { name: 'Group', type: '*smesh.lol/web/common/mls.Group', tag: '', embedded: false },
38 { name: 'MLSGroupID', type: '[]byte', tag: '', embedded: false },
39 { name: 'NostrGroupID', type: '[]byte', tag: '', embedded: false },
40 { name: 'PeerPub', type: '[]byte', tag: '', embedded: false },
41 ],
42 zero: () => ({ Group: null, MLSGroupID: null, NostrGroupID: null, PeerPub: null }),
43 });
44 export function init() {
45 exporterLabel.$set('marmot');
46 exporterContext.$set('group-event');
47 return;
48 }
49
50 export function DecodeVarint(b) {
51 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90, $t90_91;
52 let $block = 0;
53 while (true) {
54 switch ($block) {
55 case 0: {
56 $t0_1 = $rt.builtin.len(b);
57 $t1_2 = ($t0_1 === 0);
58 if ($t1_2) {
59 $block = 1; break;
60 }
61 else {
62 $block = 2; break;
63 }
64 break;
65 }
66 case 1: {
67 $t2_3 = errors.New('marmot: unexpected end of data');
68 return [0n, 0, $t2_3];
69 break;
70 }
71 case 2: {
72 $t3_4 = b.addr(0);
73 $t4_5 = $t3_4.$get();
74 $t5_6 = (($t4_5 & 0xFF) >> 6);
75 $t6_7 = ($t5_6 === 0);
76 if ($t6_7) {
77 $block = 3; break;
78 }
79 else {
80 $block = 5; break;
81 }
82 break;
83 }
84 case 3: {
85 $t7_8 = b.addr(0);
86 $t8_9 = $t7_8.$get();
87 $t9_10 = ($t8_9 & 63);
88 $t10_11 = BigInt.asUintN(64, BigInt($t9_10));
89 return [$t10_11, 1, null];
90 break;
91 }
92 case 4: {
93 $t11_12 = $rt.builtin.len(b);
94 $t12_13 = ($t11_12 < 2);
95 if ($t12_13) {
96 $block = 8; break;
97 }
98 else {
99 $block = 9; break;
100 }
101 break;
102 }
103 case 5: {
104 $t13_14 = ($t5_6 === 1);
105 if ($t13_14) {
106 $block = 4; break;
107 }
108 else {
109 $block = 7; break;
110 }
111 break;
112 }
113 case 6: {
114 $t14_15 = $rt.builtin.len(b);
115 $t15_16 = ($t14_15 < 4);
116 if ($t15_16) {
117 $block = 12; break;
118 }
119 else {
120 $block = 13; break;
121 }
122 break;
123 }
124 case 7: {
125 $t16_17 = ($t5_6 === 2);
126 if ($t16_17) {
127 $block = 6; break;
128 }
129 else {
130 $block = 11; break;
131 }
132 break;
133 }
134 case 8: {
135 $t17_18 = errors.New('marmot: truncated 2-byte varint');
136 return [0n, 0, $t17_18];
137 break;
138 }
139 case 9: {
140 $t18_19 = b.addr(0);
141 $t19_20 = $t18_19.$get();
142 $t20_21 = ($t19_20 & 63);
143 $t21_22 = BigInt.asUintN(64, BigInt($t20_21));
144 $t22_23 = BigInt.asUintN(64, $t21_22 << BigInt(8));
145 $t23_24 = b.addr(1);
146 $t24_25 = $t23_24.$get();
147 $t25_26 = BigInt.asUintN(64, BigInt($t24_25));
148 $t26_27 = BigInt.asUintN(64, $t22_23 + $t25_26);
149 return [$t26_27, 2, null];
150 break;
151 }
152 case 10: {
153 $t27_28 = $rt.builtin.len(b);
154 $t28_29 = ($t27_28 < 8);
155 if ($t28_29) {
156 $block = 15; break;
157 }
158 else {
159 $block = 16; break;
160 }
161 break;
162 }
163 case 11: {
164 $t29_30 = ($t5_6 === 3);
165 if ($t29_30) {
166 $block = 10; break;
167 }
168 else {
169 $block = 14; break;
170 }
171 break;
172 }
173 case 12: {
174 $t30_31 = errors.New('marmot: truncated 4-byte varint');
175 return [0n, 0, $t30_31];
176 break;
177 }
178 case 13: {
179 $t31_32 = b.addr(0);
180 $t32_33 = $t31_32.$get();
181 $t33_34 = ($t32_33 & 63);
182 $t34_35 = BigInt.asUintN(64, BigInt($t33_34));
183 $t35_36 = BigInt.asUintN(64, $t34_35 << BigInt(24));
184 $t36_37 = b.addr(1);
185 $t37_38 = $t36_37.$get();
186 $t38_39 = BigInt.asUintN(64, BigInt($t37_38));
187 $t39_40 = BigInt.asUintN(64, $t38_39 << BigInt(16));
188 $t40_41 = BigInt.asUintN(64, $t35_36 + $t39_40);
189 $t41_42 = b.addr(2);
190 $t42_43 = $t41_42.$get();
191 $t43_44 = BigInt.asUintN(64, BigInt($t42_43));
192 $t44_45 = BigInt.asUintN(64, $t43_44 << BigInt(8));
193 $t45_46 = BigInt.asUintN(64, $t40_41 + $t44_45);
194 $t46_47 = b.addr(3);
195 $t47_48 = $t46_47.$get();
196 $t48_49 = BigInt.asUintN(64, BigInt($t47_48));
197 $t49_50 = BigInt.asUintN(64, $t45_46 + $t48_49);
198 return [$t49_50, 4, null];
199 break;
200 }
201 case 14: {
202 $t50_51 = errors.New('marmot: varint prefix unreachable');
203 return [0n, 0, $t50_51];
204 break;
205 }
206 case 15: {
207 $t51_52 = errors.New('marmot: truncated 8-byte varint');
208 return [0n, 0, $t51_52];
209 break;
210 }
211 case 16: {
212 $t52_53 = b.addr(0);
213 $t53_54 = $t52_53.$get();
214 $t54_55 = ($t53_54 & 63);
215 $t55_56 = BigInt.asUintN(64, BigInt($t54_55));
216 $t56_57 = BigInt.asUintN(64, $t55_56 << BigInt(56));
217 $t57_58 = b.addr(1);
218 $t58_59 = $t57_58.$get();
219 $t59_60 = BigInt.asUintN(64, BigInt($t58_59));
220 $t60_61 = BigInt.asUintN(64, $t59_60 << BigInt(48));
221 $t61_62 = BigInt.asUintN(64, $t56_57 + $t60_61);
222 $t62_63 = b.addr(2);
223 $t63_64 = $t62_63.$get();
224 $t64_65 = BigInt.asUintN(64, BigInt($t63_64));
225 $t65_66 = BigInt.asUintN(64, $t64_65 << BigInt(40));
226 $t66_67 = BigInt.asUintN(64, $t61_62 + $t65_66);
227 $t67_68 = b.addr(3);
228 $t68_69 = $t67_68.$get();
229 $t69_70 = BigInt.asUintN(64, BigInt($t68_69));
230 $t70_71 = BigInt.asUintN(64, $t69_70 << BigInt(32));
231 $t71_72 = BigInt.asUintN(64, $t66_67 + $t70_71);
232 $t72_73 = b.addr(4);
233 $t73_74 = $t72_73.$get();
234 $t74_75 = BigInt.asUintN(64, BigInt($t73_74));
235 $t75_76 = BigInt.asUintN(64, $t74_75 << BigInt(24));
236 $t76_77 = BigInt.asUintN(64, $t71_72 + $t75_76);
237 $t77_78 = b.addr(5);
238 $t78_79 = $t77_78.$get();
239 $t79_80 = BigInt.asUintN(64, BigInt($t78_79));
240 $t80_81 = BigInt.asUintN(64, $t79_80 << BigInt(16));
241 $t81_82 = BigInt.asUintN(64, $t76_77 + $t80_81);
242 $t82_83 = b.addr(6);
243 $t83_84 = $t82_83.$get();
244 $t84_85 = BigInt.asUintN(64, BigInt($t83_84));
245 $t85_86 = BigInt.asUintN(64, $t84_85 << BigInt(8));
246 $t86_87 = BigInt.asUintN(64, $t81_82 + $t85_86);
247 $t87_88 = b.addr(7);
248 $t88_89 = $t87_88.$get();
249 $t89_90 = BigInt.asUintN(64, BigInt($t88_89));
250 $t90_91 = BigInt.asUintN(64, $t86_87 + $t89_90);
251 return [$t90_91, 8, null];
252 break;
253 }
254 }
255 }
256 }
257
258 export function EncodeVarint(v, b) {
259 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61;
260 let $block = 0;
261 while (true) {
262 switch ($block) {
263 case 0: {
264 $t0_1 = (v <= 63n);
265 if ($t0_1) {
266 $block = 1; break;
267 }
268 else {
269 $block = 3; break;
270 }
271 break;
272 }
273 case 1: {
274 $t1_2 = $rt.builtin.len(b);
275 $t2_3 = ($t1_2 < 1);
276 if ($t2_3) {
277 $block = 4; break;
278 }
279 else {
280 $block = 5; break;
281 }
282 break;
283 }
284 case 2: {
285 $t3_4 = $rt.builtin.len(b);
286 $t4_5 = ($t3_4 < 2);
287 if ($t4_5) {
288 $block = 8; break;
289 }
290 else {
291 $block = 9; break;
292 }
293 break;
294 }
295 case 3: {
296 $t5_6 = (v <= 16383n);
297 if ($t5_6) {
298 $block = 2; break;
299 }
300 else {
301 $block = 7; break;
302 }
303 break;
304 }
305 case 4: {
306 $t6_7 = errors.New('marmot: varint buffer too small');
307 return [0, $t6_7];
308 break;
309 }
310 case 5: {
311 $t7_8 = (Number(v) & 0xFF);
312 $t8_9 = b.addr(0);
313 $t8_9.$set($t7_8);
314 return [1, null];
315 break;
316 }
317 case 6: {
318 $t9_10 = $rt.builtin.len(b);
319 $t10_11 = ($t9_10 < 4);
320 if ($t10_11) {
321 $block = 12; break;
322 }
323 else {
324 $block = 13; break;
325 }
326 break;
327 }
328 case 7: {
329 $t11_12 = (v <= 1073741823n);
330 if ($t11_12) {
331 $block = 6; break;
332 }
333 else {
334 $block = 11; break;
335 }
336 break;
337 }
338 case 8: {
339 $t12_13 = errors.New('marmot: varint buffer too small');
340 return [0, $t12_13];
341 break;
342 }
343 case 9: {
344 $t13_14 = (v >> BigInt(8));
345 $t14_15 = BigInt.asUintN(64, 64n + $t13_14);
346 $t15_16 = (Number($t14_15) & 0xFF);
347 $t16_17 = b.addr(0);
348 $t16_17.$set($t15_16);
349 $t17_18 = (Number(v) & 0xFF);
350 $t18_19 = b.addr(1);
351 $t18_19.$set($t17_18);
352 return [2, null];
353 break;
354 }
355 case 10: {
356 $t19_20 = $rt.builtin.len(b);
357 $t20_21 = ($t19_20 < 8);
358 if ($t20_21) {
359 $block = 15; break;
360 }
361 else {
362 $block = 16; break;
363 }
364 break;
365 }
366 case 11: {
367 $t21_22 = (v <= 4611686018427387903n);
368 if ($t21_22) {
369 $block = 10; break;
370 }
371 else {
372 $block = 14; break;
373 }
374 break;
375 }
376 case 12: {
377 $t22_23 = errors.New('marmot: varint buffer too small');
378 return [0, $t22_23];
379 break;
380 }
381 case 13: {
382 $t23_24 = (v >> BigInt(24));
383 $t24_25 = BigInt.asUintN(64, 128n + $t23_24);
384 $t25_26 = (Number($t24_25) & 0xFF);
385 $t26_27 = b.addr(0);
386 $t26_27.$set($t25_26);
387 $t27_28 = (v >> BigInt(16));
388 $t28_29 = (Number($t27_28) & 0xFF);
389 $t29_30 = b.addr(1);
390 $t29_30.$set($t28_29);
391 $t30_31 = (v >> BigInt(8));
392 $t31_32 = (Number($t30_31) & 0xFF);
393 $t32_33 = b.addr(2);
394 $t32_33.$set($t31_32);
395 $t33_34 = (Number(v) & 0xFF);
396 $t34_35 = b.addr(3);
397 $t34_35.$set($t33_34);
398 return [4, null];
399 break;
400 }
401 case 14: {
402 $t35_36 = errors.New('marmot: value exceeds QUIC varint max (2^62-1)');
403 return [0, $t35_36];
404 break;
405 }
406 case 15: {
407 $t36_37 = errors.New('marmot: varint buffer too small');
408 return [0, $t36_37];
409 break;
410 }
411 case 16: {
412 $t37_38 = (v >> BigInt(56));
413 $t38_39 = BigInt.asUintN(64, 192n + $t37_38);
414 $t39_40 = (Number($t38_39) & 0xFF);
415 $t40_41 = b.addr(0);
416 $t40_41.$set($t39_40);
417 $t41_42 = (v >> BigInt(48));
418 $t42_43 = (Number($t41_42) & 0xFF);
419 $t43_44 = b.addr(1);
420 $t43_44.$set($t42_43);
421 $t44_45 = (v >> BigInt(40));
422 $t45_46 = (Number($t44_45) & 0xFF);
423 $t46_47 = b.addr(2);
424 $t46_47.$set($t45_46);
425 $t47_48 = (v >> BigInt(32));
426 $t48_49 = (Number($t47_48) & 0xFF);
427 $t49_50 = b.addr(3);
428 $t49_50.$set($t48_49);
429 $t50_51 = (v >> BigInt(24));
430 $t51_52 = (Number($t50_51) & 0xFF);
431 $t52_53 = b.addr(4);
432 $t52_53.$set($t51_52);
433 $t53_54 = (v >> BigInt(16));
434 $t54_55 = (Number($t53_54) & 0xFF);
435 $t55_56 = b.addr(5);
436 $t55_56.$set($t54_55);
437 $t56_57 = (v >> BigInt(8));
438 $t57_58 = (Number($t56_57) & 0xFF);
439 $t58_59 = b.addr(6);
440 $t58_59.$set($t57_58);
441 $t59_60 = (Number(v) & 0xFF);
442 $t60_61 = b.addr(7);
443 $t60_61.$set($t59_60);
444 return [8, null];
445 break;
446 }
447 }
448 }
449 }
450
451 export function appendQuicVec(dst, data) {
452 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
453 let $block = 0;
454 while (true) {
455 switch ($block) {
456 case 0: {
457 $t0_1 = { $value: $rt.builtin.makeSlice(8, 8, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
458 $t1_2 = $rt.builtin.len(data);
459 $t2_3 = BigInt.asUintN(64, BigInt($t1_2));
460 $t3_4 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
461 $t4_5 = EncodeVarint($t2_3, $t3_4);
462 $t5_6 = $t4_5[0];
463 $t6_7 = $t4_5[1];
464 $t7_8 = ($t6_7 !== null);
465 if ($t7_8) {
466 $block = 1; break;
467 }
468 else {
469 $block = 2; break;
470 }
471 break;
472 }
473 case 1: {
474 $t8_9 = $rt.types.methodCall($t6_7, 'Error', []);
475 $t9_10 = ('marmot: appendQuicVec: ' + $t8_9);
476 $t10_11 = $rt.types.makeInterface('string', $t9_10);
477 $rt.runtime.panic($t10_11);
478 break;
479 }
480 case 2: {
481 $t11_12 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, $t5_6, undefined);
482 $t12_13 = $rt.builtin.appendSlice(dst, $t11_12);
483 $t13_14 = $rt.builtin.appendSlice($t12_13, data);
484 return $t13_14;
485 break;
486 }
487 }
488 }
489 }
490
491 export function readQuicVec(data) {
492 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14;
493 let $block = 0;
494 while (true) {
495 switch ($block) {
496 case 0: {
497 $t0_1 = DecodeVarint(data);
498 $t1_2 = $t0_1[0];
499 $t2_3 = $t0_1[1];
500 $t3_4 = $t0_1[2];
501 $t4_5 = ($t3_4 !== null);
502 if ($t4_5) {
503 $block = 1; break;
504 }
505 else {
506 $block = 2; break;
507 }
508 break;
509 }
510 case 1: {
511 return [null, null, $t3_4];
512 break;
513 }
514 case 2: {
515 $t5_6 = ($t1_2 > 2147483647n);
516 if ($t5_6) {
517 $block = 3; break;
518 }
519 else {
520 $block = 4; break;
521 }
522 break;
523 }
524 case 3: {
525 $t6_7 = errors.New('marmot: varint length exceeds int32');
526 return [null, null, $t6_7];
527 break;
528 }
529 case 4: {
530 $t7_8 = Number($t1_2);
531 $t8_9 = $rt.builtin.sliceSlice(data, $t2_3, undefined, undefined);
532 $t9_10 = $rt.builtin.len($t8_9);
533 $t10_11 = ($t9_10 < $t7_8);
534 if ($t10_11) {
535 $block = 5; break;
536 }
537 else {
538 $block = 6; break;
539 }
540 break;
541 }
542 case 5: {
543 $t11_12 = errors.New('marmot: data too short');
544 return [null, null, $t11_12];
545 break;
546 }
547 case 6: {
548 $t12_13 = $rt.builtin.sliceSlice($t8_9, undefined, $t7_8, undefined);
549 $t13_14 = $rt.builtin.sliceSlice($t8_9, $t7_8, undefined, undefined);
550 return [$t12_13, $t13_14, null];
551 break;
552 }
553 }
554 }
555 }
556
557 export function NewNostrGroupData(name, adminPub, relays) {
558 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13;
559 $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
560 $t1_2 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
561 $t2_3 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t1_2);
562 $t3_4 = { $value: { Version: 0, NostrGroupID: $rt.builtin.makeSlice(32, 32, 0), Name: '', Description: '', AdminPubkeys: null, Relays: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
563 $t4_5 = { $get() { return $t3_4.$get().Version; }, $set(v) { const obj = $t3_4.$get(); obj.Version = v; $t3_4.$set(obj); } };
564 $t5_6 = { $get() { return $t3_4.$get().NostrGroupID; }, $set(v) { const obj = $t3_4.$get(); obj.NostrGroupID = v; $t3_4.$set(obj); } };
565 $t6_7 = $t0_1.$get();
566 $t7_8 = { $get() { return $t3_4.$get().Name; }, $set(v) { const obj = $t3_4.$get(); obj.Name = v; $t3_4.$set(obj); } };
567 $t8_9 = { $get() { return $t3_4.$get().AdminPubkeys; }, $set(v) { const obj = $t3_4.$get(); obj.AdminPubkeys = v; $t3_4.$set(obj); } };
568 $t9_10 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
569 $t10_11 = $t9_10.$get().addr(0);
570 $t10_11.$set(adminPub);
571 $t11_12 = $rt.builtin.sliceSlice($t9_10.$get(), undefined, undefined, undefined);
572 $t12_13 = { $get() { return $t3_4.$get().Relays; }, $set(v) { const obj = $t3_4.$get(); obj.Relays = v; $t3_4.$set(obj); } };
573 $t4_5.$set(2);
574 $t5_6.$set($rt.builtin.cloneValue($t6_7));
575 $t7_8.$set(name);
576 $t8_9.$set($t11_12);
577 $t12_13.$set(relays);
578 return $t3_4;
579 }
580
581 export function UnmarshalNostrGroupData(data) {
582 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67, $t67_68, $t68_69, $t69_70, $t70_71, $t71_72, $t72_73, $t73_74, $t74_75, $t75_76, $t76_77, $t77_78, $t78_79, $t79_80, $t80_81, $t81_82, $t82_83, $t83_84, $t84_85, $t85_86, $t86_87, $t87_88, $t88_89, $t89_90;
583 let $block = 0;
584 while (true) {
585 switch ($block) {
586 case 0: {
587 $t0_1 = $rt.builtin.len(data);
588 $t1_2 = ($t0_1 < 34);
589 if ($t1_2) {
590 $block = 1; break;
591 }
592 else {
593 $block = 2; break;
594 }
595 break;
596 }
597 case 1: {
598 $t2_3 = errors.New('marmot: extension data too short');
599 return [null, $t2_3];
600 break;
601 }
602 case 2: {
603 $t3_4 = { $value: { Version: 0, NostrGroupID: $rt.builtin.makeSlice(32, 32, 0), Name: '', Description: '', AdminPubkeys: null, Relays: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
604 $t4_5 = data.addr(0);
605 $t5_6 = $t4_5.$get();
606 $t6_7 = ($t5_6 & 0xFFFF);
607 $t7_8 = (($t6_7 << 8) & 0xFFFF);
608 $t8_9 = data.addr(1);
609 $t9_10 = $t8_9.$get();
610 $t10_11 = ($t9_10 & 0xFFFF);
611 $t11_12 = (($t7_8 + $t10_11) & 0xFFFF);
612 $t12_13 = { $get() { return $t3_4.$get().Version; }, $set(v) { const obj = $t3_4.$get(); obj.Version = v; $t3_4.$set(obj); } };
613 $t12_13.$set($t11_12);
614 $t13_14 = { $get() { return $t3_4.$get().NostrGroupID; }, $set(v) { const obj = $t3_4.$get(); obj.NostrGroupID = v; $t3_4.$set(obj); } };
615 $t14_15 = $rt.builtin.sliceSlice($t13_14.$get(), undefined, undefined, undefined);
616 $t15_16 = $rt.builtin.sliceSlice(data, 2, 34, undefined);
617 $t16_17 = $rt.builtin.copy($t14_15, $t15_16);
618 $t17_18 = $rt.builtin.sliceSlice(data, 34, undefined, undefined);
619 $t18_19 = readQuicVec($t17_18);
620 $t19_20 = $t18_19[0];
621 $t20_21 = $t18_19[1];
622 $t21_22 = $t18_19[2];
623 $t22_23 = ($t21_22 !== null);
624 if ($t22_23) {
625 $block = 3; break;
626 }
627 else {
628 $block = 4; break;
629 }
630 break;
631 }
632 case 3: {
633 $t23_24 = $rt.types.methodCall($t21_22, 'Error', []);
634 $t24_25 = ('marmot: read name: ' + $t23_24);
635 $t25_26 = errors.New($t24_25);
636 return [null, $t25_26];
637 break;
638 }
639 case 4: {
640 $t26_27 = { $get() { return $t3_4.$get().Name; }, $set(v) { const obj = $t3_4.$get(); obj.Name = v; $t3_4.$set(obj); } };
641 $t26_27.$set($t19_20);
642 $t27_28 = readQuicVec($t20_21);
643 $t28_29 = $t27_28[0];
644 $t29_30 = $t27_28[1];
645 $t30_31 = $t27_28[2];
646 $t31_32 = ($t30_31 !== null);
647 if ($t31_32) {
648 $block = 5; break;
649 }
650 else {
651 $block = 6; break;
652 }
653 break;
654 }
655 case 5: {
656 $t32_33 = $rt.types.methodCall($t30_31, 'Error', []);
657 $t33_34 = ('marmot: read description: ' + $t32_33);
658 $t34_35 = errors.New($t33_34);
659 return [null, $t34_35];
660 break;
661 }
662 case 6: {
663 $t35_36 = { $get() { return $t3_4.$get().Description; }, $set(v) { const obj = $t3_4.$get(); obj.Description = v; $t3_4.$set(obj); } };
664 $t35_36.$set($t28_29);
665 $t36_37 = readQuicVec($t29_30);
666 $t37_38 = $t36_37[0];
667 $t38_39 = $t36_37[1];
668 $t39_40 = $t36_37[2];
669 $t40_41 = ($t39_40 !== null);
670 if ($t40_41) {
671 $block = 7; break;
672 }
673 else {
674 $block = 8; break;
675 }
676 break;
677 }
678 case 7: {
679 $t41_42 = $rt.types.methodCall($t39_40, 'Error', []);
680 $t42_43 = ('marmot: read admin_pubkeys: ' + $t41_42);
681 $t43_44 = errors.New($t42_43);
682 return [null, $t43_44];
683 break;
684 }
685 case 8: {
686 $t44_45 = $rt.builtin.len($t37_38);
687 $t45_46 = ($t44_45 % 32);
688 $t46_47 = ($t45_46 !== 0);
689 if ($t46_47) {
690 $block = 9; break;
691 }
692 else {
693 $block = 10; break;
694 }
695 break;
696 }
697 case 9: {
698 $t47_48 = errors.New('marmot: admin_pubkeys length not multiple of 32');
699 return [null, $t47_48];
700 break;
701 }
702 case 10: {
703 $t48_49 = 0;
704 $block = 11; break;
705 break;
706 }
707 case 11: {
708 $t49_50 = $rt.builtin.len($t37_38);
709 $t50_51 = ($t48_49 < $t49_50);
710 if ($t50_51) {
711 $block = 12; break;
712 }
713 else {
714 $block = 13; break;
715 }
716 break;
717 }
718 case 12: {
719 $t51_52 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
720 $t52_53 = $rt.builtin.sliceSlice($t51_52.$get(), undefined, 32, undefined);
721 $t53_54 = ($t48_49 + 32);
722 $t54_55 = $rt.builtin.sliceSlice($t37_38, $t48_49, $t53_54, undefined);
723 $t55_56 = $rt.builtin.copy($t52_53, $t54_55);
724 $t56_57 = { $get() { return $t3_4.$get().AdminPubkeys; }, $set(v) { const obj = $t3_4.$get(); obj.AdminPubkeys = v; $t3_4.$set(obj); } };
725 $t57_58 = $t56_57.$get();
726 $t58_59 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
727 $t59_60 = $t58_59.$get().addr(0);
728 $t59_60.$set($t52_53);
729 $t60_61 = $rt.builtin.sliceSlice($t58_59.$get(), undefined, undefined, undefined);
730 $t61_62 = $rt.builtin.appendSlice($t57_58, $t60_61);
731 $t62_63 = { $get() { return $t3_4.$get().AdminPubkeys; }, $set(v) { const obj = $t3_4.$get(); obj.AdminPubkeys = v; $t3_4.$set(obj); } };
732 $t62_63.$set($t61_62);
733 $t63_64 = ($t48_49 + 32);
734 $t48_49 = $t63_64;
735 $block = 11; break;
736 break;
737 }
738 case 13: {
739 $t64_65 = readQuicVec($t38_39);
740 $t65_66 = $t64_65[0];
741 $t66_67 = $t64_65[1];
742 $t67_68 = $t64_65[2];
743 $t68_69 = ($t67_68 !== null);
744 if ($t68_69) {
745 $block = 14; break;
746 }
747 else {
748 $t77_78 = $t65_66;
749 $block = 17; break;
750 }
751 break;
752 }
753 case 14: {
754 $t69_70 = $rt.types.methodCall($t67_68, 'Error', []);
755 $t70_71 = ('marmot: read relays: ' + $t69_70);
756 $t71_72 = errors.New($t70_71);
757 return [null, $t71_72];
758 break;
759 }
760 case 15: {
761 $t72_73 = readQuicVec($t77_78);
762 $t73_74 = $t72_73[0];
763 $t74_75 = $t72_73[1];
764 $t75_76 = $t72_73[2];
765 $t76_77 = ($t75_76 !== null);
766 if ($t76_77) {
767 $block = 18; break;
768 }
769 else {
770 $block = 19; break;
771 }
772 break;
773 }
774 case 16: {
775 return [$t3_4, null];
776 break;
777 }
778 case 17: {
779 $t78_79 = $rt.builtin.len($t77_78);
780 $t79_80 = ($t78_79 > 0);
781 if ($t79_80) {
782 $block = 15; break;
783 }
784 else {
785 $block = 16; break;
786 }
787 break;
788 }
789 case 18: {
790 $t80_81 = $rt.types.methodCall($t75_76, 'Error', []);
791 $t81_82 = ('marmot: read relay url: ' + $t80_81);
792 $t82_83 = errors.New($t81_82);
793 return [null, $t82_83];
794 break;
795 }
796 case 19: {
797 $t83_84 = { $get() { return $t3_4.$get().Relays; }, $set(v) { const obj = $t3_4.$get(); obj.Relays = v; $t3_4.$set(obj); } };
798 $t84_85 = $t83_84.$get();
799 $t85_86 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
800 $t86_87 = $t85_86.$get().addr(0);
801 $t86_87.$set($t73_74);
802 $t87_88 = $rt.builtin.sliceSlice($t85_86.$get(), undefined, undefined, undefined);
803 $t88_89 = $rt.builtin.appendSlice($t84_85, $t87_88);
804 $t89_90 = { $get() { return $t3_4.$get().Relays; }, $set(v) { const obj = $t3_4.$get(); obj.Relays = v; $t3_4.$set(obj); } };
805 $t89_90.$set($t88_89);
806 $t77_78 = $t74_75;
807 $block = 17; break;
808 break;
809 }
810 }
811 }
812 }
813
814 export function DMGroupID(pubA, pubB) {
815 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10;
816 let $block = 0;
817 while (true) {
818 switch ($block) {
819 case 0: {
820 $t0_1 = bytesLess(pubA, pubB);
821 if ($t0_1) {
822 $block = 1; break;
823 }
824 else {
825 $block = 3; break;
826 }
827 break;
828 }
829 case 1: {
830 $t1_2 = pubA;
831 $t2_3 = pubB;
832 $block = 2; break;
833 break;
834 }
835 case 2: {
836 $t3_4 = $rt.builtin.len($t1_2);
837 $t4_5 = $rt.builtin.len($t2_3);
838 $t5_6 = ($t3_4 + $t4_5);
839 $t6_7 = $rt.builtin.makeSlice(0, $t5_6, 0);
840 $t7_8 = $rt.builtin.appendSlice($t6_7, $t1_2);
841 $t8_9 = $rt.builtin.appendSlice($t7_8, $t2_3);
842 $t9_10 = smesh$lol$web$common$jsbridge$schnorr.SHA256Sum($t8_9);
843 return $t9_10;
844 break;
845 }
846 case 3: {
847 $t1_2 = pubB;
848 $t2_3 = pubA;
849 $block = 2; break;
850 break;
851 }
852 }
853 }
854 }
855
856 export function bytesLess(a, b) {
857 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21;
858 let $block = 0;
859 while (true) {
860 switch ($block) {
861 case 0: {
862 $t0_1 = $rt.builtin.len(a);
863 $t1_2 = $rt.builtin.len(b);
864 $t2_3 = ($t1_2 < $t0_1);
865 if ($t2_3) {
866 $block = 1; break;
867 }
868 else {
869 $t4_5 = $t0_1;
870 $block = 2; break;
871 }
872 break;
873 }
874 case 1: {
875 $t3_4 = $rt.builtin.len(b);
876 $t4_5 = $t3_4;
877 $block = 2; break;
878 break;
879 }
880 case 2: {
881 $t5_6 = 0;
882 $block = 3; break;
883 break;
884 }
885 case 3: {
886 $t6_7 = ($t5_6 < $t4_5);
887 if ($t6_7) {
888 $block = 4; break;
889 }
890 else {
891 $block = 5; break;
892 }
893 break;
894 }
895 case 4: {
896 $t7_8 = a.addr($t5_6);
897 $t8_9 = $t7_8.$get();
898 $t9_10 = b.addr($t5_6);
899 $t10_11 = $t9_10.$get();
900 $t11_12 = ($t8_9 !== $t10_11);
901 if ($t11_12) {
902 $block = 6; break;
903 }
904 else {
905 $block = 7; break;
906 }
907 break;
908 }
909 case 5: {
910 $t12_13 = $rt.builtin.len(a);
911 $t13_14 = $rt.builtin.len(b);
912 $t14_15 = ($t12_13 < $t13_14);
913 return $t14_15;
914 break;
915 }
916 case 6: {
917 $t15_16 = a.addr($t5_6);
918 $t16_17 = $t15_16.$get();
919 $t17_18 = b.addr($t5_6);
920 $t18_19 = $t17_18.$get();
921 $t19_20 = ($t16_17 < $t18_19);
922 return $t19_20;
923 break;
924 }
925 case 7: {
926 $t20_21 = ($t5_6 + 1);
927 $t5_6 = $t20_21;
928 $block = 3; break;
929 break;
930 }
931 }
932 }
933 }
934
935 export function GenerateKeyPackage(nostrPub, nowUnix) {
936 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15;
937 $t0_1 = smesh$lol$web$common$mls.NewBasicCredential(nostrPub);
938 $t1_2 = { $value: { CapabilityExtensions: null, LeafExtensions: null, KeyPackageExtensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
939 $t2_3 = { $get() { return $t1_2.$get().CapabilityExtensions; }, $set(v) { const obj = $t1_2.$get(); obj.CapabilityExtensions = v; $t1_2.$set(obj); } };
940 $t3_4 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
941 $t4_5 = $t3_4.$get().addr(0);
942 $t4_5.$set(10);
943 $t5_6 = $t3_4.$get().addr(1);
944 $t5_6.$set(62190);
945 $t6_7 = $rt.builtin.sliceSlice($t3_4.$get(), undefined, undefined, undefined);
946 $t7_8 = { $get() { return $t1_2.$get().KeyPackageExtensions; }, $set(v) { const obj = $t1_2.$get(); obj.KeyPackageExtensions = v; $t1_2.$set(obj); } };
947 $t8_9 = { $value: $rt.builtin.makeSlice(1, 1, { extensionType: 0, extensionData: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
948 $t9_10 = $t8_9.$get().addr(0);
949 $t10_11 = smesh$lol$web$common$mls.NewExtension(10, null);
950 $t9_10.$set($rt.builtin.cloneValue($t10_11));
951 $t11_12 = $rt.builtin.sliceSlice($t8_9.$get(), undefined, undefined, undefined);
952 $t2_3.$set($t6_7);
953 $t7_8.$set($t11_12);
954 $t12_13 = smesh$lol$web$common$mls.GenerateKeyPairPackageWithOptions(3, $t0_1, $t1_2, nowUnix);
955 $t13_14 = $t12_13[0];
956 $t14_15 = $t12_13[1];
957 return [$t13_14, $t14_15];
958 }
959
960 export function KeyPackageToEvent(kpp, seckey, nowUnix, relays) {
961 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52, $t52_53, $t53_54, $t54_55, $t55_56, $t56_57, $t57_58, $t58_59, $t59_60, $t60_61, $t61_62, $t62_63, $t63_64, $t64_65, $t65_66, $t66_67;
962 let $block = 0;
963 while (true) {
964 switch ($block) {
965 case 0: {
966 $t0_1 = { $get() { return kpp.$get().Public; }, $set(v) { const obj = kpp.$get(); obj.Public = v; kpp.$set(obj); } };
967 $t1_2 = smesh$lol$web$common$mls.KeyPackage$RawBytes($t0_1);
968 $t2_3 = smesh$lol$web$common$helpers.Base64Encode($t1_2);
969 $t3_4 = { $get() { return kpp.$get().Public; }, $set(v) { const obj = kpp.$get(); obj.Public = v; kpp.$set(obj); } };
970 $t4_5 = smesh$lol$web$common$mls.KeyPackage$GenerateRef($t3_4);
971 $t5_6 = $t4_5[0];
972 $t6_7 = $t4_5[1];
973 $t7_8 = ($t6_7 !== null);
974 if ($t7_8) {
975 $block = 1; break;
976 }
977 else {
978 $block = 2; break;
979 }
980 break;
981 }
982 case 1: {
983 $t8_9 = $rt.types.methodCall($t6_7, 'Error', []);
984 $t9_10 = ('marmot: generate key package ref: ' + $t8_9);
985 $t10_11 = errors.New($t9_10);
986 return [null, $t10_11];
987 break;
988 }
989 case 2: {
990 $t11_12 = $t5_6;
991 $t12_13 = smesh$lol$web$common$helpers.HexEncode($t11_12);
992 $t13_14 = { $value: $rt.builtin.makeSlice(5, 5, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
993 $t14_15 = $t13_14.$get().addr(0);
994 $t15_16 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
995 $t16_17 = $t15_16.$get().addr(0);
996 $t16_17.$set('mls_protocol_version');
997 $t17_18 = $t15_16.$get().addr(1);
998 $t17_18.$set('1.0');
999 $t18_19 = $rt.builtin.sliceSlice($t15_16.$get(), undefined, undefined, undefined);
1000 $t14_15.$set($t18_19);
1001 $t19_20 = $t13_14.$get().addr(1);
1002 $t20_21 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1003 $t21_22 = $t20_21.$get().addr(0);
1004 $t21_22.$set('mls_ciphersuite');
1005 $t22_23 = $t20_21.$get().addr(1);
1006 $t22_23.$set('0x0003');
1007 $t23_24 = $rt.builtin.sliceSlice($t20_21.$get(), undefined, undefined, undefined);
1008 $t19_20.$set($t23_24);
1009 $t24_25 = $t13_14.$get().addr(2);
1010 $t25_26 = { $value: $rt.builtin.makeSlice(3, 3, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1011 $t26_27 = $t25_26.$get().addr(0);
1012 $t26_27.$set('mls_extensions');
1013 $t27_28 = $t25_26.$get().addr(1);
1014 $t27_28.$set('0x000a');
1015 $t28_29 = $t25_26.$get().addr(2);
1016 $t28_29.$set('0xf2ee');
1017 $t29_30 = $rt.builtin.sliceSlice($t25_26.$get(), undefined, undefined, undefined);
1018 $t24_25.$set($t29_30);
1019 $t30_31 = $t13_14.$get().addr(3);
1020 $t31_32 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1021 $t32_33 = $t31_32.$get().addr(0);
1022 $t32_33.$set('encoding');
1023 $t33_34 = $t31_32.$get().addr(1);
1024 $t33_34.$set('base64');
1025 $t34_35 = $rt.builtin.sliceSlice($t31_32.$get(), undefined, undefined, undefined);
1026 $t30_31.$set($t34_35);
1027 $t35_36 = $t13_14.$get().addr(4);
1028 $t36_37 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1029 $t37_38 = $t36_37.$get().addr(0);
1030 $t37_38.$set('i');
1031 $t38_39 = $t36_37.$get().addr(1);
1032 $t38_39.$set($t12_13);
1033 $t39_40 = $rt.builtin.sliceSlice($t36_37.$get(), undefined, undefined, undefined);
1034 $t35_36.$set($t39_40);
1035 $t40_41 = $rt.builtin.sliceSlice($t13_14.$get(), undefined, undefined, undefined);
1036 $t41_42 = $rt.builtin.len(relays);
1037 $t42_43 = ($t41_42 > 0);
1038 if ($t42_43) {
1039 $block = 3; break;
1040 }
1041 else {
1042 $t55_56 = $t40_41;
1043 $block = 4; break;
1044 }
1045 break;
1046 }
1047 case 3: {
1048 $t43_44 = $rt.builtin.len(relays);
1049 $t44_45 = ($t43_44 + 1);
1050 $t45_46 = $rt.builtin.makeSlice(0, $t44_45, '');
1051 $t46_47 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1052 $t47_48 = $t46_47.$get().addr(0);
1053 $t47_48.$set('relays');
1054 $t48_49 = $rt.builtin.sliceSlice($t46_47.$get(), undefined, undefined, undefined);
1055 $t49_50 = $rt.builtin.appendSlice($t45_46, $t48_49);
1056 $t50_51 = $rt.builtin.appendSlice($t49_50, relays);
1057 $t51_52 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1058 $t52_53 = $t51_52.$get().addr(0);
1059 $t52_53.$set($t50_51);
1060 $t53_54 = $rt.builtin.sliceSlice($t51_52.$get(), undefined, undefined, undefined);
1061 $t54_55 = $rt.builtin.appendSlice($t40_41, $t53_54);
1062 $t55_56 = $t54_55;
1063 $block = 4; break;
1064 break;
1065 }
1066 case 4: {
1067 $t56_57 = { $value: { ID: '', PubKey: '', CreatedAt: 0n, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1068 $t57_58 = { $get() { return $t56_57.$get().CreatedAt; }, $set(v) { const obj = $t56_57.$get(); obj.CreatedAt = v; $t56_57.$set(obj); } };
1069 $t58_59 = { $get() { return $t56_57.$get().Kind; }, $set(v) { const obj = $t56_57.$get(); obj.Kind = v; $t56_57.$set(obj); } };
1070 $t59_60 = { $get() { return $t56_57.$get().Tags; }, $set(v) { const obj = $t56_57.$get(); obj.Tags = v; $t56_57.$set(obj); } };
1071 $t60_61 = { $get() { return $t56_57.$get().Content; }, $set(v) { const obj = $t56_57.$get(); obj.Content = v; $t56_57.$set(obj); } };
1072 $t57_58.$set(nowUnix);
1073 $t58_59.$set(443);
1074 $t59_60.$set($t55_56);
1075 $t60_61.$set($t2_3);
1076 $t61_62 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1077 $t62_63 = $rt.builtin.sliceSlice($t61_62.$get(), undefined, undefined, undefined);
1078 $t63_64 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t62_63);
1079 $t64_65 = $t61_62.$get();
1080 $t65_66 = smesh$lol$web$common$nostr.Event$Sign($t56_57, seckey, $t64_65);
1081 if ($t65_66) {
1082 $block = 6; break;
1083 }
1084 else {
1085 $block = 5; break;
1086 }
1087 break;
1088 }
1089 case 5: {
1090 $t66_67 = errors.New('marmot: sign key package event');
1091 return [null, $t66_67];
1092 break;
1093 }
1094 case 6: {
1095 return [$t56_57, null];
1096 break;
1097 }
1098 }
1099 }
1100 }
1101
1102 export function EventToKeyPackage(ev) {
1103 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25;
1104 let $block = 0;
1105 while (true) {
1106 switch ($block) {
1107 case 0: {
1108 $t0_1 = { $get() { return ev.$get().Kind; }, $set(v) { const obj = ev.$get(); obj.Kind = v; ev.$set(obj); } };
1109 $t1_2 = $t0_1.$get();
1110 $t2_3 = ($t1_2 !== 443);
1111 if ($t2_3) {
1112 $block = 1; break;
1113 }
1114 else {
1115 $block = 2; break;
1116 }
1117 break;
1118 }
1119 case 1: {
1120 $t3_4 = errors.New('marmot: expected kind 443');
1121 return [null, $t3_4];
1122 break;
1123 }
1124 case 2: {
1125 $t4_5 = { $get() { return ev.$get().Content; }, $set(v) { const obj = ev.$get(); obj.Content = v; ev.$set(obj); } };
1126 $t5_6 = $t4_5.$get();
1127 $t6_7 = { $get() { return ev.$get().Tags; }, $set(v) { const obj = ev.$get(); obj.Tags = v; ev.$set(obj); } };
1128 $t7_8 = $t6_7.$get();
1129 $t8_9 = smesh$lol$web$common$nostr.Tags$GetFirst($t7_8, 'encoding');
1130 $t9_10 = ($t8_9 !== null);
1131 if ($t9_10) {
1132 $block = 5; break;
1133 }
1134 else {
1135 $t14_15 = $t5_6;
1136 $block = 4; break;
1137 }
1138 break;
1139 }
1140 case 3: {
1141 $t10_11 = { $get() { return ev.$get().Content; }, $set(v) { const obj = ev.$get(); obj.Content = v; ev.$set(obj); } };
1142 $t11_12 = $t10_11.$get();
1143 $t12_13 = smesh$lol$web$common$helpers.Base64Decode($t11_12);
1144 $t13_14 = $rt.builtin.stringEqual($t12_13, null);
1145 if ($t13_14) {
1146 $block = 6; break;
1147 }
1148 else {
1149 $block = 7; break;
1150 }
1151 break;
1152 }
1153 case 4: {
1154 $t15_16 = smesh$lol$web$common$mls.UnmarshalRawKeyPackage($t14_15);
1155 $t16_17 = $t15_16[0];
1156 $t17_18 = $t15_16[1];
1157 $t18_19 = ($t17_18 !== null);
1158 if ($t18_19) {
1159 $block = 8; break;
1160 }
1161 else {
1162 $block = 9; break;
1163 }
1164 break;
1165 }
1166 case 5: {
1167 $t19_20 = smesh$lol$web$common$nostr.Tag$Value($t8_9);
1168 $t20_21 = $rt.builtin.stringEqual($t19_20, 'base64');
1169 if ($t20_21) {
1170 $block = 3; break;
1171 }
1172 else {
1173 $t14_15 = $t5_6;
1174 $block = 4; break;
1175 }
1176 break;
1177 }
1178 case 6: {
1179 $t21_22 = errors.New('marmot: base64 decode key package');
1180 return [null, $t21_22];
1181 break;
1182 }
1183 case 7: {
1184 $t14_15 = $t12_13;
1185 $block = 4; break;
1186 break;
1187 }
1188 case 8: {
1189 $t22_23 = $rt.types.methodCall($t17_18, 'Error', []);
1190 $t23_24 = ('marmot: unmarshal key package: ' + $t22_23);
1191 $t24_25 = errors.New($t23_24);
1192 return [null, $t24_25];
1193 break;
1194 }
1195 case 9: {
1196 return [$t16_17, null];
1197 break;
1198 }
1199 }
1200 }
1201 }
1202
1203 export function CreateDMGroup(selfKPP, peerKP, selfPub, peerPub, name, relays) {
1204 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50, $t50_51, $t51_52;
1205 let $block = 0;
1206 while (true) {
1207 switch ($block) {
1208 case 0: {
1209 $t0_1 = DMGroupID(selfPub, peerPub);
1210 $t1_2 = $t0_1;
1211 $t2_3 = NewNostrGroupData(name, selfPub, relays);
1212 $t3_4 = NostrGroupData$MarshalBytes($t2_3);
1213 $t4_5 = $t3_4[0];
1214 $t5_6 = $t3_4[1];
1215 $t6_7 = ($t5_6 !== null);
1216 if ($t6_7) {
1217 $block = 1; break;
1218 }
1219 else {
1220 $block = 2; break;
1221 }
1222 break;
1223 }
1224 case 1: {
1225 $t7_8 = $rt.types.methodCall($t5_6, 'Error', []);
1226 $t8_9 = ('marmot: marshal nostr group data: ' + $t7_8);
1227 $t9_10 = errors.New($t8_9);
1228 return [null, null, $t9_10];
1229 break;
1230 }
1231 case 2: {
1232 $t10_11 = smesh$lol$web$common$mls.NewExtension(62190, $t4_5);
1233 $t11_12 = { $value: { Extensions: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1234 $t12_13 = { $get() { return $t11_12.$get().Extensions; }, $set(v) { const obj = $t11_12.$get(); obj.Extensions = v; $t11_12.$set(obj); } };
1235 $t13_14 = { $value: $rt.builtin.makeSlice(1, 1, { extensionType: 0, extensionData: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1236 $t14_15 = $t13_14.$get().addr(0);
1237 $t14_15.$set($rt.builtin.cloneValue($t10_11));
1238 $t15_16 = $rt.builtin.sliceSlice($t13_14.$get(), undefined, undefined, undefined);
1239 $t12_13.$set($t15_16);
1240 $t16_17 = smesh$lol$web$common$mls.CreateGroupWithOptions($t1_2, selfKPP, $t11_12);
1241 $t17_18 = $t16_17[0];
1242 $t18_19 = $t16_17[1];
1243 $t19_20 = ($t18_19 !== null);
1244 if ($t19_20) {
1245 $block = 3; break;
1246 }
1247 else {
1248 $block = 4; break;
1249 }
1250 break;
1251 }
1252 case 3: {
1253 $t20_21 = $rt.types.methodCall($t18_19, 'Error', []);
1254 $t21_22 = ('marmot: create group: ' + $t20_21);
1255 $t22_23 = errors.New($t21_22);
1256 return [null, null, $t22_23];
1257 break;
1258 }
1259 case 4: {
1260 $t23_24 = { $value: $rt.builtin.makeSlice(1, 1, { version: 0, cipherSuite: 0, initKey: null, leafNode: { encryptionKey: null, signatureKey: null, credential: { credentialType: 0, identity: null, certificates: null }, capabilities: { versions: null, cipherSuites: null, extensions: null, proposals: null, credentials: null }, leafNodeSource: 0, lifetime: null, parentHash: null, extensions: null, signature: null }, extensions: null, signature: null }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1261 $t24_25 = $t23_24.$get().addr(0);
1262 $t25_26 = peerKP.$get();
1263 $t24_25.$set($rt.builtin.cloneValue($t25_26));
1264 $t26_27 = $rt.builtin.sliceSlice($t23_24.$get(), undefined, undefined, undefined);
1265 $t27_28 = smesh$lol$web$common$mls.Group$CreateWelcome($t17_18, $t26_27);
1266 $t28_29 = $t27_28[0];
1267 $t29_30 = $t27_28[1];
1268 $t30_31 = $t27_28[2];
1269 $t31_32 = ($t30_31 !== null);
1270 if ($t31_32) {
1271 $block = 5; break;
1272 }
1273 else {
1274 $block = 6; break;
1275 }
1276 break;
1277 }
1278 case 5: {
1279 $t32_33 = $rt.types.methodCall($t30_31, 'Error', []);
1280 $t33_34 = ('marmot: create welcome: ' + $t32_33);
1281 $t34_35 = errors.New($t33_34);
1282 return [null, null, $t34_35];
1283 break;
1284 }
1285 case 6: {
1286 $t35_36 = smesh$lol$web$common$mls.Group$UnmarshalAndProcessMessage($t17_18, $t29_30);
1287 $t36_37 = $t35_36[0];
1288 $t37_38 = $t35_36[1];
1289 $t38_39 = $t35_36[2];
1290 $t39_40 = ($t38_39 !== null);
1291 if ($t39_40) {
1292 $block = 7; break;
1293 }
1294 else {
1295 $block = 8; break;
1296 }
1297 break;
1298 }
1299 case 7: {
1300 $t40_41 = $rt.types.methodCall($t38_39, 'Error', []);
1301 $t41_42 = ('marmot: process own commit: ' + $t40_41);
1302 $t42_43 = errors.New($t41_42);
1303 return [null, null, $t42_43];
1304 break;
1305 }
1306 case 8: {
1307 $t43_44 = { $value: { Group: null, MLSGroupID: null, NostrGroupID: null, PeerPub: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1308 $t44_45 = { $get() { return $t43_44.$get().Group; }, $set(v) { const obj = $t43_44.$get(); obj.Group = v; $t43_44.$set(obj); } };
1309 $t45_46 = { $get() { return $t43_44.$get().MLSGroupID; }, $set(v) { const obj = $t43_44.$get(); obj.MLSGroupID = v; $t43_44.$set(obj); } };
1310 $t46_47 = smesh$lol$web$common$mls.Group$GroupID($t17_18);
1311 $t47_48 = $t46_47;
1312 $t48_49 = { $get() { return $t43_44.$get().NostrGroupID; }, $set(v) { const obj = $t43_44.$get(); obj.NostrGroupID = v; $t43_44.$set(obj); } };
1313 $t49_50 = { $get() { return $t2_3.$get().NostrGroupID; }, $set(v) { const obj = $t2_3.$get(); obj.NostrGroupID = v; $t2_3.$set(obj); } };
1314 $t50_51 = $rt.builtin.sliceSlice($t49_50.$get(), undefined, undefined, undefined);
1315 $t51_52 = { $get() { return $t43_44.$get().PeerPub; }, $set(v) { const obj = $t43_44.$get(); obj.PeerPub = v; $t43_44.$set(obj); } };
1316 $t44_45.$set($t17_18);
1317 $t45_46.$set($t47_48);
1318 $t48_49.$set($t50_51);
1319 $t51_52.$set(peerPub);
1320 return [$t43_44, $t28_29, null];
1321 break;
1322 }
1323 }
1324 }
1325 }
1326
1327 export function JoinDMGroup(welcome, selfKPP, peerPub, nowUnix) {
1328 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22;
1329 let $block = 0;
1330 while (true) {
1331 switch ($block) {
1332 case 0: {
1333 $t0_1 = smesh$lol$web$common$mls.GroupFromWelcomeAt(welcome, selfKPP, nowUnix);
1334 $t1_2 = $t0_1[0];
1335 $t2_3 = $t0_1[1];
1336 $t3_4 = ($t2_3 !== null);
1337 if ($t3_4) {
1338 $block = 1; break;
1339 }
1340 else {
1341 $block = 2; break;
1342 }
1343 break;
1344 }
1345 case 1: {
1346 $t4_5 = $rt.types.methodCall($t2_3, 'Error', []);
1347 $t5_6 = ('marmot: join from welcome: ' + $t4_5);
1348 $t6_7 = errors.New($t5_6);
1349 return [null, $t6_7];
1350 break;
1351 }
1352 case 2: {
1353 $t7_8 = { $value: { Group: null, MLSGroupID: null, NostrGroupID: null, PeerPub: null }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1354 $t8_9 = { $get() { return $t7_8.$get().Group; }, $set(v) { const obj = $t7_8.$get(); obj.Group = v; $t7_8.$set(obj); } };
1355 $t9_10 = { $get() { return $t7_8.$get().MLSGroupID; }, $set(v) { const obj = $t7_8.$get(); obj.MLSGroupID = v; $t7_8.$set(obj); } };
1356 $t10_11 = smesh$lol$web$common$mls.Group$GroupID($t1_2);
1357 $t11_12 = $t10_11;
1358 $t12_13 = { $get() { return $t7_8.$get().PeerPub; }, $set(v) { const obj = $t7_8.$get(); obj.PeerPub = v; $t7_8.$set(obj); } };
1359 $t8_9.$set($t1_2);
1360 $t9_10.$set($t11_12);
1361 $t12_13.$set(peerPub);
1362 $t13_14 = smesh$lol$web$common$mls.Group$FindGroupContextExtension($t1_2, 62190);
1363 $t14_15 = !$rt.builtin.stringEqual($t13_14, null);
1364 if ($t14_15) {
1365 $block = 3; break;
1366 }
1367 else {
1368 $block = 4; break;
1369 }
1370 break;
1371 }
1372 case 3: {
1373 $t15_16 = UnmarshalNostrGroupData($t13_14);
1374 $t16_17 = $t15_16[0];
1375 $t17_18 = $t15_16[1];
1376 $t18_19 = ($t17_18 === null);
1377 if ($t18_19) {
1378 $block = 5; break;
1379 }
1380 else {
1381 $block = 4; break;
1382 }
1383 break;
1384 }
1385 case 4: {
1386 return [$t7_8, null];
1387 break;
1388 }
1389 case 5: {
1390 $t19_20 = { $get() { return $t16_17.$get().NostrGroupID; }, $set(v) { const obj = $t16_17.$get(); obj.NostrGroupID = v; $t16_17.$set(obj); } };
1391 $t20_21 = $rt.builtin.sliceSlice($t19_20.$get(), undefined, undefined, undefined);
1392 $t21_22 = { $get() { return $t7_8.$get().NostrGroupID; }, $set(v) { const obj = $t7_8.$get(); obj.NostrGroupID = v; $t7_8.$set(obj); } };
1393 $t21_22.$set($t20_21);
1394 $block = 4; break;
1395 break;
1396 }
1397 }
1398 }
1399 }
1400
1401 export function WelcomeToRumor(welcome, senderPub, nowUnix, kpEventID, relays) {
1402 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42;
1403 let $block = 0;
1404 while (true) {
1405 switch ($block) {
1406 case 0: {
1407 $t0_1 = smesh$lol$web$common$mls.Welcome$Bytes(welcome);
1408 $t1_2 = smesh$lol$web$common$helpers.Base64Encode($t0_1);
1409 $t2_3 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1410 $t3_4 = $t2_3.$get().addr(0);
1411 $t4_5 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1412 $t5_6 = $t4_5.$get().addr(0);
1413 $t5_6.$set('encoding');
1414 $t6_7 = $t4_5.$get().addr(1);
1415 $t6_7.$set('base64');
1416 $t7_8 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
1417 $t3_4.$set($t7_8);
1418 $t8_9 = $rt.builtin.sliceSlice($t2_3.$get(), undefined, undefined, undefined);
1419 $t9_10 = !$rt.builtin.stringEqual(kpEventID, '');
1420 if ($t9_10) {
1421 $block = 1; break;
1422 }
1423 else {
1424 $t18_19 = $t8_9;
1425 $block = 2; break;
1426 }
1427 break;
1428 }
1429 case 1: {
1430 $t10_11 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1431 $t11_12 = $t10_11.$get().addr(0);
1432 $t11_12.$set('e');
1433 $t12_13 = $t10_11.$get().addr(1);
1434 $t12_13.$set(kpEventID);
1435 $t13_14 = $rt.builtin.sliceSlice($t10_11.$get(), undefined, undefined, undefined);
1436 $t14_15 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1437 $t15_16 = $t14_15.$get().addr(0);
1438 $t15_16.$set($t13_14);
1439 $t16_17 = $rt.builtin.sliceSlice($t14_15.$get(), undefined, undefined, undefined);
1440 $t17_18 = $rt.builtin.appendSlice($t8_9, $t16_17);
1441 $t18_19 = $t17_18;
1442 $block = 2; break;
1443 break;
1444 }
1445 case 2: {
1446 $t19_20 = $rt.builtin.len(relays);
1447 $t20_21 = ($t19_20 > 0);
1448 if ($t20_21) {
1449 $block = 3; break;
1450 }
1451 else {
1452 $t33_34 = $t18_19;
1453 $block = 4; break;
1454 }
1455 break;
1456 }
1457 case 3: {
1458 $t21_22 = $rt.builtin.len(relays);
1459 $t22_23 = ($t21_22 + 1);
1460 $t23_24 = $rt.builtin.makeSlice(0, $t22_23, '');
1461 $t24_25 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1462 $t25_26 = $t24_25.$get().addr(0);
1463 $t25_26.$set('relays');
1464 $t26_27 = $rt.builtin.sliceSlice($t24_25.$get(), undefined, undefined, undefined);
1465 $t27_28 = $rt.builtin.appendSlice($t23_24, $t26_27);
1466 $t28_29 = $rt.builtin.appendSlice($t27_28, relays);
1467 $t29_30 = { $value: $rt.builtin.makeSlice(1, 1, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1468 $t30_31 = $t29_30.$get().addr(0);
1469 $t30_31.$set($t28_29);
1470 $t31_32 = $rt.builtin.sliceSlice($t29_30.$get(), undefined, undefined, undefined);
1471 $t32_33 = $rt.builtin.appendSlice($t18_19, $t31_32);
1472 $t33_34 = $t32_33;
1473 $block = 4; break;
1474 break;
1475 }
1476 case 4: {
1477 $t34_35 = { $value: { ID: '', PubKey: '', CreatedAt: 0n, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1478 $t35_36 = { $get() { return $t34_35.$get().PubKey; }, $set(v) { const obj = $t34_35.$get(); obj.PubKey = v; $t34_35.$set(obj); } };
1479 $t36_37 = smesh$lol$web$common$helpers.HexEncode(senderPub);
1480 $t37_38 = { $get() { return $t34_35.$get().CreatedAt; }, $set(v) { const obj = $t34_35.$get(); obj.CreatedAt = v; $t34_35.$set(obj); } };
1481 $t38_39 = { $get() { return $t34_35.$get().Kind; }, $set(v) { const obj = $t34_35.$get(); obj.Kind = v; $t34_35.$set(obj); } };
1482 $t39_40 = { $get() { return $t34_35.$get().Tags; }, $set(v) { const obj = $t34_35.$get(); obj.Tags = v; $t34_35.$set(obj); } };
1483 $t40_41 = { $get() { return $t34_35.$get().Content; }, $set(v) { const obj = $t34_35.$get(); obj.Content = v; $t34_35.$set(obj); } };
1484 $t35_36.$set($t36_37);
1485 $t37_38.$set(nowUnix);
1486 $t38_39.$set(444);
1487 $t39_40.$set($t33_34);
1488 $t40_41.$set($t1_2);
1489 $t41_42 = smesh$lol$web$common$nostr.Event$ComputeID($t34_35);
1490 return $t34_35;
1491 break;
1492 }
1493 }
1494 }
1495 }
1496
1497 export function RumorToWelcome(ev) {
1498 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25;
1499 let $block = 0;
1500 while (true) {
1501 switch ($block) {
1502 case 0: {
1503 $t0_1 = { $get() { return ev.$get().Kind; }, $set(v) { const obj = ev.$get(); obj.Kind = v; ev.$set(obj); } };
1504 $t1_2 = $t0_1.$get();
1505 $t2_3 = ($t1_2 !== 444);
1506 if ($t2_3) {
1507 $block = 1; break;
1508 }
1509 else {
1510 $block = 2; break;
1511 }
1512 break;
1513 }
1514 case 1: {
1515 $t3_4 = errors.New('marmot: expected kind 444');
1516 return [null, $t3_4];
1517 break;
1518 }
1519 case 2: {
1520 $t4_5 = { $get() { return ev.$get().Content; }, $set(v) { const obj = ev.$get(); obj.Content = v; ev.$set(obj); } };
1521 $t5_6 = $t4_5.$get();
1522 $t6_7 = { $get() { return ev.$get().Tags; }, $set(v) { const obj = ev.$get(); obj.Tags = v; ev.$set(obj); } };
1523 $t7_8 = $t6_7.$get();
1524 $t8_9 = smesh$lol$web$common$nostr.Tags$GetFirst($t7_8, 'encoding');
1525 $t9_10 = ($t8_9 !== null);
1526 if ($t9_10) {
1527 $block = 5; break;
1528 }
1529 else {
1530 $t14_15 = $t5_6;
1531 $block = 4; break;
1532 }
1533 break;
1534 }
1535 case 3: {
1536 $t10_11 = { $get() { return ev.$get().Content; }, $set(v) { const obj = ev.$get(); obj.Content = v; ev.$set(obj); } };
1537 $t11_12 = $t10_11.$get();
1538 $t12_13 = smesh$lol$web$common$helpers.Base64Decode($t11_12);
1539 $t13_14 = $rt.builtin.stringEqual($t12_13, null);
1540 if ($t13_14) {
1541 $block = 6; break;
1542 }
1543 else {
1544 $block = 7; break;
1545 }
1546 break;
1547 }
1548 case 4: {
1549 $t15_16 = smesh$lol$web$common$mls.UnmarshalWelcome($t14_15);
1550 $t16_17 = $t15_16[0];
1551 $t17_18 = $t15_16[1];
1552 $t18_19 = ($t17_18 !== null);
1553 if ($t18_19) {
1554 $block = 8; break;
1555 }
1556 else {
1557 $block = 9; break;
1558 }
1559 break;
1560 }
1561 case 5: {
1562 $t19_20 = smesh$lol$web$common$nostr.Tag$Value($t8_9);
1563 $t20_21 = $rt.builtin.stringEqual($t19_20, 'base64');
1564 if ($t20_21) {
1565 $block = 3; break;
1566 }
1567 else {
1568 $t14_15 = $t5_6;
1569 $block = 4; break;
1570 }
1571 break;
1572 }
1573 case 6: {
1574 $t21_22 = errors.New('marmot: base64 decode welcome');
1575 return [null, $t21_22];
1576 break;
1577 }
1578 case 7: {
1579 $t14_15 = $t12_13;
1580 $block = 4; break;
1581 break;
1582 }
1583 case 8: {
1584 $t22_23 = $rt.types.methodCall($t17_18, 'Error', []);
1585 $t23_24 = ('marmot: unmarshal welcome: ' + $t22_23);
1586 $t24_25 = errors.New($t23_24);
1587 return [null, $t24_25];
1588 break;
1589 }
1590 case 9: {
1591 return [$t16_17, null];
1592 break;
1593 }
1594 }
1595 }
1596 }
1597
1598 export function DeriveExporterSecret(group) {
1599 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
1600 $t0_1 = exporterLabel.$get();
1601 $t1_2 = exporterContext.$get();
1602 $t2_3 = smesh$lol$web$common$mls.Group$DeriveExporter(group, $t0_1, $t1_2, 32);
1603 $t3_4 = $t2_3[0];
1604 $t4_5 = $t2_3[1];
1605 return [$t3_4, $t4_5];
1606 }
1607
1608 export function MessageToEvent(nostrGroupID, mlsCiphertext, exporterSecret, nowUnix) {
1609 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47;
1610 let $block = 0;
1611 while (true) {
1612 switch ($block) {
1613 case 0: {
1614 $t0_1 = $rt.builtin.len(exporterSecret);
1615 $t1_2 = ($t0_1 !== 32);
1616 if ($t1_2) {
1617 $block = 1; break;
1618 }
1619 else {
1620 $block = 2; break;
1621 }
1622 break;
1623 }
1624 case 1: {
1625 $t2_3 = errors.New('marmot: exporter secret must be 32 bytes');
1626 return [null, $t2_3];
1627 break;
1628 }
1629 case 2: {
1630 $t3_4 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1631 $t4_5 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1632 $t5_6 = $rt.builtin.sliceSlice($t3_4.$get(), undefined, undefined, undefined);
1633 $t6_7 = $rt.builtin.copy($t5_6, exporterSecret);
1634 $t7_8 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
1635 $t8_9 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t7_8);
1636 $t9_10 = $t3_4.$get();
1637 $t10_11 = $t4_5.$get();
1638 $t11_12 = smesh$lol$web$common$crypto$chacha20poly1305.Seal($t9_10, $t10_11, mlsCiphertext, null);
1639 $t12_13 = $rt.builtin.len($t11_12);
1640 $t13_14 = (12 + $t12_13);
1641 $t14_15 = $rt.builtin.makeSlice(0, $t13_14, 0);
1642 $t15_16 = $rt.builtin.sliceSlice($t4_5.$get(), undefined, undefined, undefined);
1643 $t16_17 = $rt.builtin.appendSlice($t14_15, $t15_16);
1644 $t17_18 = $rt.builtin.appendSlice($t16_17, $t11_12);
1645 $t18_19 = smesh$lol$web$common$helpers.Base64Encode($t17_18);
1646 $t19_20 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1647 $t20_21 = $rt.builtin.sliceSlice($t19_20.$get(), undefined, undefined, undefined);
1648 $t21_22 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t20_21);
1649 $t22_23 = { $value: { ID: '', PubKey: '', CreatedAt: 0n, Kind: 0, Tags: null, Content: '', Sig: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1650 $t23_24 = { $get() { return $t22_23.$get().CreatedAt; }, $set(v) { const obj = $t22_23.$get(); obj.CreatedAt = v; $t22_23.$set(obj); } };
1651 $t24_25 = { $get() { return $t22_23.$get().Kind; }, $set(v) { const obj = $t22_23.$get(); obj.Kind = v; $t22_23.$set(obj); } };
1652 $t25_26 = { $get() { return $t22_23.$get().Tags; }, $set(v) { const obj = $t22_23.$get(); obj.Tags = v; $t22_23.$set(obj); } };
1653 $t26_27 = { $value: $rt.builtin.makeSlice(2, 2, null), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1654 $t27_28 = $t26_27.$get().addr(0);
1655 $t28_29 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1656 $t29_30 = $t28_29.$get().addr(0);
1657 $t29_30.$set('h');
1658 $t30_31 = $t28_29.$get().addr(1);
1659 $t31_32 = smesh$lol$web$common$helpers.HexEncode(nostrGroupID);
1660 $t30_31.$set($t31_32);
1661 $t32_33 = $rt.builtin.sliceSlice($t28_29.$get(), undefined, undefined, undefined);
1662 $t27_28.$set($t32_33);
1663 $t33_34 = $t26_27.$get().addr(1);
1664 $t34_35 = { $value: $rt.builtin.makeSlice(2, 2, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1665 $t35_36 = $t34_35.$get().addr(0);
1666 $t35_36.$set('encoding');
1667 $t36_37 = $t34_35.$get().addr(1);
1668 $t36_37.$set('base64');
1669 $t37_38 = $rt.builtin.sliceSlice($t34_35.$get(), undefined, undefined, undefined);
1670 $t33_34.$set($t37_38);
1671 $t38_39 = $rt.builtin.sliceSlice($t26_27.$get(), undefined, undefined, undefined);
1672 $t39_40 = { $get() { return $t22_23.$get().Content; }, $set(v) { const obj = $t22_23.$get(); obj.Content = v; $t22_23.$set(obj); } };
1673 $t23_24.$set(nowUnix);
1674 $t24_25.$set(445);
1675 $t25_26.$set($t38_39);
1676 $t39_40.$set($t18_19);
1677 $t40_41 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1678 $t41_42 = $rt.builtin.sliceSlice($t40_41.$get(), undefined, undefined, undefined);
1679 $t42_43 = smesh$lol$web$common$jsbridge$subtle.RandomBytes($t41_42);
1680 $t43_44 = $t19_20.$get();
1681 $t44_45 = $t40_41.$get();
1682 $t45_46 = smesh$lol$web$common$nostr.Event$Sign($t22_23, $t43_44, $t44_45);
1683 if ($t45_46) {
1684 $block = 4; break;
1685 }
1686 else {
1687 $block = 3; break;
1688 }
1689 break;
1690 }
1691 case 3: {
1692 $t46_47 = errors.New('marmot: sign group message');
1693 return [null, $t46_47];
1694 break;
1695 }
1696 case 4: {
1697 return [$t22_23, null];
1698 break;
1699 }
1700 }
1701 }
1702 }
1703
1704 export function EventToMessage(ev, exporterSecret) {
1705 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38;
1706 let $block = 0;
1707 while (true) {
1708 switch ($block) {
1709 case 0: {
1710 $t0_1 = { $get() { return ev.$get().Kind; }, $set(v) { const obj = ev.$get(); obj.Kind = v; ev.$set(obj); } };
1711 $t1_2 = $t0_1.$get();
1712 $t2_3 = ($t1_2 !== 445);
1713 if ($t2_3) {
1714 $block = 1; break;
1715 }
1716 else {
1717 $block = 2; break;
1718 }
1719 break;
1720 }
1721 case 1: {
1722 $t3_4 = errors.New('marmot: expected kind 445');
1723 return [null, null, $t3_4];
1724 break;
1725 }
1726 case 2: {
1727 $t4_5 = $rt.builtin.len(exporterSecret);
1728 $t5_6 = ($t4_5 !== 32);
1729 if ($t5_6) {
1730 $block = 3; break;
1731 }
1732 else {
1733 $block = 4; break;
1734 }
1735 break;
1736 }
1737 case 3: {
1738 $t6_7 = errors.New('marmot: exporter secret must be 32 bytes');
1739 return [null, null, $t6_7];
1740 break;
1741 }
1742 case 4: {
1743 $t7_8 = { $get() { return ev.$get().Tags; }, $set(v) { const obj = ev.$get(); obj.Tags = v; ev.$set(obj); } };
1744 $t8_9 = $t7_8.$get();
1745 $t9_10 = smesh$lol$web$common$nostr.Tags$GetFirst($t8_9, 'h');
1746 $t10_11 = ($t9_10 === null);
1747 if ($t10_11) {
1748 $block = 5; break;
1749 }
1750 else {
1751 $block = 6; break;
1752 }
1753 break;
1754 }
1755 case 5: {
1756 $t11_12 = errors.New('marmot: missing \'h\' tag');
1757 return [null, null, $t11_12];
1758 break;
1759 }
1760 case 6: {
1761 $t12_13 = smesh$lol$web$common$nostr.Tag$Value($t9_10);
1762 $t13_14 = smesh$lol$web$common$helpers.HexDecode($t12_13);
1763 $t14_15 = $rt.builtin.stringEqual($t13_14, null);
1764 if ($t14_15) {
1765 $block = 7; break;
1766 }
1767 else {
1768 $block = 8; break;
1769 }
1770 break;
1771 }
1772 case 7: {
1773 $t15_16 = errors.New('marmot: decode group ID');
1774 return [null, null, $t15_16];
1775 break;
1776 }
1777 case 8: {
1778 $t16_17 = { $get() { return ev.$get().Content; }, $set(v) { const obj = ev.$get(); obj.Content = v; ev.$set(obj); } };
1779 $t17_18 = $t16_17.$get();
1780 $t18_19 = smesh$lol$web$common$helpers.Base64Decode($t17_18);
1781 $t19_20 = $rt.builtin.stringEqual($t18_19, null);
1782 if ($t19_20) {
1783 $block = 9; break;
1784 }
1785 else {
1786 $block = 10; break;
1787 }
1788 break;
1789 }
1790 case 9: {
1791 $t20_21 = errors.New('marmot: base64 decode content');
1792 return [null, null, $t20_21];
1793 break;
1794 }
1795 case 10: {
1796 $t21_22 = $rt.builtin.len($t18_19);
1797 $t22_23 = ($t21_22 < 12);
1798 if ($t22_23) {
1799 $block = 11; break;
1800 }
1801 else {
1802 $block = 12; break;
1803 }
1804 break;
1805 }
1806 case 11: {
1807 $t23_24 = errors.New('marmot: content too short');
1808 return [null, null, $t23_24];
1809 break;
1810 }
1811 case 12: {
1812 $t24_25 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1813 $t25_26 = { $value: $rt.builtin.makeSlice(12, 12, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1814 $t26_27 = $rt.builtin.sliceSlice($t24_25.$get(), undefined, undefined, undefined);
1815 $t27_28 = $rt.builtin.copy($t26_27, exporterSecret);
1816 $t28_29 = $rt.builtin.sliceSlice($t25_26.$get(), undefined, undefined, undefined);
1817 $t29_30 = $rt.builtin.sliceSlice($t18_19, undefined, 12, undefined);
1818 $t30_31 = $rt.builtin.copy($t28_29, $t29_30);
1819 $t31_32 = $t24_25.$get();
1820 $t32_33 = $t25_26.$get();
1821 $t33_34 = $rt.builtin.sliceSlice($t18_19, 12, undefined, undefined);
1822 $t34_35 = smesh$lol$web$common$crypto$chacha20poly1305.Open($t31_32, $t32_33, $t33_34, null);
1823 $t35_36 = $t34_35[0];
1824 $t36_37 = $t34_35[1];
1825 if ($t36_37) {
1826 $block = 14; break;
1827 }
1828 else {
1829 $block = 13; break;
1830 }
1831 break;
1832 }
1833 case 13: {
1834 $t37_38 = errors.New('marmot: chacha20poly1305 open failed');
1835 return [null, null, $t37_38];
1836 break;
1837 }
1838 case 14: {
1839 return [$t13_14, $t35_36, null];
1840 break;
1841 }
1842 }
1843 }
1844 }
1845
1846 export function NostrGroupData$MarshalBytes(d) {
1847 let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11, $t11_12, $t12_13, $t13_14, $t14_15, $t15_16, $t16_17, $t17_18, $t18_19, $t19_20, $t20_21, $t21_22, $t22_23, $t23_24, $t24_25, $t25_26, $t26_27, $t27_28, $t28_29, $t29_30, $t30_31, $t31_32, $t32_33, $t33_34, $t34_35, $t35_36, $t36_37, $t37_38, $t38_39, $t39_40, $t40_41, $t41_42, $t42_43, $t43_44, $t44_45, $t45_46, $t46_47, $t47_48, $t48_49, $t49_50;
1848 let $block = 0;
1849 while (true) {
1850 switch ($block) {
1851 case 0: {
1852 $t0_1 = { $get() { return d.$get().Version; }, $set(v) { const obj = d.$get(); obj.Version = v; d.$set(obj); } };
1853 $t1_2 = $t0_1.$get();
1854 $t2_3 = (($t1_2 & 0xFFFF) >> 8);
1855 $t3_4 = ($t2_3 & 0xFF);
1856 $t4_5 = { $get() { return d.$get().Version; }, $set(v) { const obj = d.$get(); obj.Version = v; d.$set(obj); } };
1857 $t5_6 = $t4_5.$get();
1858 $t6_7 = ($t5_6 & 0xFF);
1859 $t7_8 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1860 $t8_9 = $t7_8.$get().addr(0);
1861 $t8_9.$set($t3_4);
1862 $t9_10 = $t7_8.$get().addr(1);
1863 $t9_10.$set($t6_7);
1864 $t10_11 = $rt.builtin.sliceSlice($t7_8.$get(), undefined, undefined, undefined);
1865 $t11_12 = $rt.builtin.appendSlice(null, $t10_11);
1866 $t12_13 = { $get() { return d.$get().NostrGroupID; }, $set(v) { const obj = d.$get(); obj.NostrGroupID = v; d.$set(obj); } };
1867 $t13_14 = $rt.builtin.sliceSlice($t12_13.$get(), undefined, undefined, undefined);
1868 $t14_15 = $rt.builtin.appendSlice($t11_12, $t13_14);
1869 $t15_16 = { $get() { return d.$get().Name; }, $set(v) { const obj = d.$get(); obj.Name = v; d.$set(obj); } };
1870 $t16_17 = $t15_16.$get();
1871 $t17_18 = appendQuicVec($t14_15, $t16_17);
1872 $t18_19 = { $get() { return d.$get().Description; }, $set(v) { const obj = d.$get(); obj.Description = v; d.$set(obj); } };
1873 $t19_20 = $t18_19.$get();
1874 $t20_21 = appendQuicVec($t17_18, $t19_20);
1875 $t21_22 = { $get() { return d.$get().AdminPubkeys; }, $set(v) { const obj = d.$get(); obj.AdminPubkeys = v; d.$set(obj); } };
1876 $t22_23 = $t21_22.$get();
1877 $t23_24 = $rt.builtin.len($t22_23);
1878 $t24_25 = null;
1879 $t25_26 = -1;
1880 $block = 1; break;
1881 break;
1882 }
1883 case 1: {
1884 $t26_27 = ($t25_26 + 1);
1885 $t27_28 = ($t26_27 < $t23_24);
1886 if ($t27_28) {
1887 $block = 2; break;
1888 }
1889 else {
1890 $block = 3; break;
1891 }
1892 break;
1893 }
1894 case 2: {
1895 $t28_29 = $t22_23.addr($t26_27);
1896 $t29_30 = $t28_29.$get();
1897 $t30_31 = $rt.builtin.len($t29_30);
1898 $t31_32 = ($t30_31 !== 32);
1899 if ($t31_32) {
1900 $block = 4; break;
1901 }
1902 else {
1903 $block = 5; break;
1904 }
1905 break;
1906 }
1907 case 3: {
1908 $t32_33 = appendQuicVec($t20_21, $t24_25);
1909 $t33_34 = { $get() { return d.$get().Relays; }, $set(v) { const obj = d.$get(); obj.Relays = v; d.$set(obj); } };
1910 $t34_35 = $t33_34.$get();
1911 $t35_36 = $rt.builtin.len($t34_35);
1912 $t38_39 = null;
1913 $t39_40 = -1;
1914 $block = 6; break;
1915 break;
1916 }
1917 case 4: {
1918 $t36_37 = errors.New('marmot: admin pubkey must be 32 bytes');
1919 return [null, $t36_37];
1920 break;
1921 }
1922 case 5: {
1923 $t37_38 = $rt.builtin.appendSlice($t24_25, $t29_30);
1924 $t24_25 = $t37_38;
1925 $t25_26 = $t26_27;
1926 $block = 1; break;
1927 break;
1928 }
1929 case 6: {
1930 $t40_41 = ($t39_40 + 1);
1931 $t41_42 = ($t40_41 < $t35_36);
1932 if ($t41_42) {
1933 $block = 7; break;
1934 }
1935 else {
1936 $block = 8; break;
1937 }
1938 break;
1939 }
1940 case 7: {
1941 $t42_43 = $t34_35.addr($t40_41);
1942 $t43_44 = $t42_43.$get();
1943 $t44_45 = appendQuicVec($t38_39, $t43_44);
1944 $t38_39 = $t44_45;
1945 $t39_40 = $t40_41;
1946 $block = 6; break;
1947 break;
1948 }
1949 case 8: {
1950 $t45_46 = appendQuicVec($t32_33, $t38_39);
1951 $t46_47 = appendQuicVec($t45_46, null);
1952 $t47_48 = appendQuicVec($t46_47, null);
1953 $t48_49 = appendQuicVec($t47_48, null);
1954 $t49_50 = appendQuicVec($t48_49, null);
1955 return [$t49_50, null];
1956 break;
1957 }
1958 }
1959 }
1960 }
1961
1962 $rt.types.getType('smesh.lol/web/common/marmot.NostrGroupData')?.methods?.set('MarshalBytes', NostrGroupData$MarshalBytes);
1963