sw.mjs raw

   1  // Package sw
   2  // Generated by TinyJS — TinyGo JavaScript backend
   3  
   4  import * as $rt from './$runtime/index.mjs';
   5  
   6  import * as common$crypto$sha256 from './common_crypto_sha256.mjs';
   7  import * as common$helpers from './common_helpers.mjs';
   8  import * as common$jsbridge$bc from './common_jsbridge_bc.mjs';
   9  import * as common$jsbridge$sw from './common_jsbridge_sw.mjs';
  10  
  11  // Package-level variables
  12  export let bus = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  13  export let relayReady = { $value: false, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  14  export let relayQueue = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  15  export let myPubkey = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
  16  export let pendingSentDMs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  17  export let mlsRelays = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  18  export let marmotSubs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  19  export let sentDMDedup = { $value: $rt.builtin.makeSlice(32, 32, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
  20  export let sentDMIdx = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  21  export let appFiles = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  22  export let currentVersion = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
  23  export let refreshing = { $value: false, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  24  export let cryptoCBs = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  25  export let nextCryptoID = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
  26  
  27  $rt.types.registerType('sw.pendingSentDM', {
  28    id: 'sw.pendingSentDM',
  29    kind: 'struct',
  30    methods: new Map(),
  31    fields: [
  32      { name: 'recipient', type: 'string', tag: '', embedded: false },
  33      { name: 'content', type: 'string', tag: '', embedded: false },
  34    ],
  35    zero: () => ({ recipient: '', content: '' }),
  36  });
  37  $rt.types.registerType('sw.DMRecord', {
  38    id: 'sw.DMRecord',
  39    kind: 'struct',
  40    methods: new Map(),
  41    fields: [
  42      { name: 'ID', type: 'string', tag: '', embedded: false },
  43      { name: 'Peer', type: 'string', tag: '', embedded: false },
  44      { name: 'From', type: 'string', tag: '', embedded: false },
  45      { name: 'Content', type: 'string', tag: '', embedded: false },
  46      { name: 'CreatedAt', type: 'int64', tag: '', embedded: false },
  47      { name: 'Protocol', type: 'string', tag: '', embedded: false },
  48      { name: 'EventID', type: 'string', tag: '', embedded: false },
  49    ],
  50    zero: () => ({ ID: '', Peer: '', From: '', Content: '', CreatedAt: 0, Protocol: '', EventID: '' }),
  51  });
  52  $rt.types.registerType('sw.mw', {
  53    id: 'sw.mw',
  54    kind: 'struct',
  55    methods: new Map(),
  56    fields: [
  57      { name: 's', type: 'string', tag: '', embedded: false },
  58      { name: 'i', type: 'int', tag: '', embedded: false },
  59    ],
  60    zero: () => ({ s: '', i: 0 }),
  61  });
  62  export function init() {
  63    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;
  64    $t0_1 = { $value: $rt.builtin.makeSlice(43, 43, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
  65    $t1_2 = $t0_1.$get().addr(0);
  66    $t1_2.$set('/');
  67    $t2_3 = $t0_1.$get().addr(1);
  68    $t2_3.$set('/$entry.mjs');
  69    $t3_4 = $t0_1.$get().addr(2);
  70    $t3_4.$set('/smesh3.mjs');
  71    $t4_5 = $t0_1.$get().addr(3);
  72    $t4_5.$set('/common_crypto_secp256k1.mjs');
  73    $t5_6 = $t0_1.$get().addr(4);
  74    $t5_6.$set('/common_crypto_sha256.mjs');
  75    $t6_7 = $t0_1.$get().addr(5);
  76    $t6_7.$set('/common_helpers.mjs');
  77    $t7_8 = $t0_1.$get().addr(6);
  78    $t7_8.$set('/common_jsbridge_dom.mjs');
  79    $t8_9 = $t0_1.$get().addr(7);
  80    $t8_9.$set('/common_jsbridge_localstorage.mjs');
  81    $t9_10 = $t0_1.$get().addr(8);
  82    $t9_10.$set('/common_jsbridge_signer.mjs');
  83    $t10_11 = $t0_1.$get().addr(9);
  84    $t10_11.$set('/common_nostr.mjs');
  85    $t11_12 = $t0_1.$get().addr(10);
  86    $t11_12.$set('/$runtime/index.mjs');
  87    $t12_13 = $t0_1.$get().addr(11);
  88    $t12_13.$set('/$runtime/runtime.mjs');
  89    $t13_14 = $t0_1.$get().addr(12);
  90    $t13_14.$set('/$runtime/goroutine.mjs');
  91    $t14_15 = $t0_1.$get().addr(13);
  92    $t14_15.$set('/$runtime/channel.mjs');
  93    $t15_16 = $t0_1.$get().addr(14);
  94    $t15_16.$set('/$runtime/builtin.mjs');
  95    $t16_17 = $t0_1.$get().addr(15);
  96    $t16_17.$set('/$runtime/types.mjs');
  97    $t17_18 = $t0_1.$get().addr(16);
  98    $t17_18.$set('/$runtime/sync.mjs');
  99    $t18_19 = $t0_1.$get().addr(17);
 100    $t18_19.$set('/$runtime/dom.mjs');
 101    $t19_20 = $t0_1.$get().addr(18);
 102    $t19_20.$set('/$runtime/localstorage.mjs');
 103    $t20_21 = $t0_1.$get().addr(19);
 104    $t20_21.$set('/$runtime/signer.mjs');
 105    $t21_22 = $t0_1.$get().addr(20);
 106    $t21_22.$set('/$wasm/secp256k1.mjs');
 107    $t22_23 = $t0_1.$get().addr(21);
 108    $t22_23.$set('/$wasm/secp256k1.wasm');
 109    $t23_24 = $t0_1.$get().addr(22);
 110    $t23_24.$set('/smesh-loader.svg');
 111    $t24_25 = $t0_1.$get().addr(23);
 112    $t24_25.$set('/$sw/$entry.mjs');
 113    $t25_26 = $t0_1.$get().addr(24);
 114    $t25_26.$set('/$sw/sw.mjs');
 115    $t26_27 = $t0_1.$get().addr(25);
 116    $t26_27.$set('/$sw/common_jsbridge_sw.mjs');
 117    $t27_28 = $t0_1.$get().addr(26);
 118    $t27_28.$set('/$sw/common_jsbridge_bc.mjs');
 119    $t28_29 = $t0_1.$get().addr(27);
 120    $t28_29.$set('/$sw/common_jsbridge_subtle.mjs');
 121    $t29_30 = $t0_1.$get().addr(28);
 122    $t29_30.$set('/$sw/common_crypto_secp256k1.mjs');
 123    $t30_31 = $t0_1.$get().addr(29);
 124    $t30_31.$set('/$sw/common_crypto_sha256.mjs');
 125    $t31_32 = $t0_1.$get().addr(30);
 126    $t31_32.$set('/$sw/common_helpers.mjs');
 127    $t32_33 = $t0_1.$get().addr(31);
 128    $t32_33.$set('/$sw/$runtime/index.mjs');
 129    $t33_34 = $t0_1.$get().addr(32);
 130    $t33_34.$set('/$sw/$runtime/runtime.mjs');
 131    $t34_35 = $t0_1.$get().addr(33);
 132    $t34_35.$set('/$sw/$runtime/goroutine.mjs');
 133    $t35_36 = $t0_1.$get().addr(34);
 134    $t35_36.$set('/$sw/$runtime/channel.mjs');
 135    $t36_37 = $t0_1.$get().addr(35);
 136    $t36_37.$set('/$sw/$runtime/builtin.mjs');
 137    $t37_38 = $t0_1.$get().addr(36);
 138    $t37_38.$set('/$sw/$runtime/types.mjs');
 139    $t38_39 = $t0_1.$get().addr(37);
 140    $t38_39.$set('/$sw/$runtime/sync.mjs');
 141    $t39_40 = $t0_1.$get().addr(38);
 142    $t39_40.$set('/$sw/$runtime/sw.mjs');
 143    $t40_41 = $t0_1.$get().addr(39);
 144    $t40_41.$set('/$sw/$runtime/subtle.mjs');
 145    $t41_42 = $t0_1.$get().addr(40);
 146    $t41_42.$set('/$sw/$runtime/crypto.mjs');
 147    $t42_43 = $t0_1.$get().addr(41);
 148    $t42_43.$set('/$sw/$runtime/ws.mjs');
 149    $t43_44 = $t0_1.$get().addr(42);
 150    $t43_44.$set('/$sw/$runtime/bc.mjs');
 151    $t44_45 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
 152    appFiles.$set($t44_45);
 153    return;
 154  }
 155  
 156  export function connectBus() {
 157    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9, $t9_10, $t10_11;
 158    let $block = 0;
 159    while (true) {
 160      switch ($block) {
 161        case 0: {
 162          $t0_1 = broadcastToClients('["SW_LOG","shell","bus connecting vv0.65.57"]');
 163          $t1_2 = common$jsbridge$bc.Open('smesh-bus', connectBus$1);
 164          bus.$set($t1_2);
 165          $t2_3 = bus.$get();
 166          $t3_4 = jstr('v0.65.57');
 167          $t4_5 = ('{"from":"shell","to":"*","msg":["PING",' + $t3_4);
 168          $t5_6 = ($t4_5 + ']}');
 169          $t6_7 = common$jsbridge$bc.Send($t2_3, $t5_6);
 170          $t7_8 = myPubkey.$get();
 171          $t8_9 = ($t7_8 === '');
 172          if ($t8_9) {
 173            $block = 1; break;
 174          }
 175          else {
 176            $block = 2; break;
 177          }
 178          break;
 179        }
 180        case 1: {
 181          $t9_10 = broadcastToClients('["NEED_IDENTITY"]');
 182          $block = 2; break;
 183          break;
 184        }
 185        case 2: {
 186          $t10_11 = common$jsbridge$sw.SetTimeout(30000, connectBus$2);
 187          return;
 188          break;
 189        }
 190      }
 191    }
 192  }
 193  
 194  function connectBus$1(msg) {
 195    let $t0_1;
 196    $t0_1 = onBusMessage(msg);
 197    return;
 198  }
 199  
 200  function connectBus$2() {
 201    let $t0_1, $t1_2, $t2_3;
 202    let $block = 0;
 203    while (true) {
 204      switch ($block) {
 205        case 0: {
 206          $t0_1 = relayReady.$get();
 207          if ($t0_1) {
 208            $block = 2; break;
 209          }
 210          else {
 211            $block = 1; break;
 212          }
 213          break;
 214        }
 215        case 1: {
 216          $t1_2 = common$jsbridge$sw.Log('shell: relay SW not responding after 30s');
 217          $t2_3 = broadcastToClients('["SW_STATUS","relay-timeout"]');
 218          $block = 2; break;
 219          break;
 220        }
 221        case 2: {
 222          return;
 223          break;
 224        }
 225      }
 226    }
 227  }
 228  
 229  export function busSend(to, msg) {
 230    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;
 231    let $block = 0;
 232    while (true) {
 233      switch ($block) {
 234        case 0: {
 235          $t0_1 = jstr(to);
 236          $t1_2 = ('{"from":"shell","to":' + $t0_1);
 237          $t2_3 = ($t1_2 + ',"msg":');
 238          $t3_4 = ($t2_3 + msg);
 239          $t4_5 = ($t3_4 + '}');
 240          $t5_6 = (to === 'relay');
 241          if ($t5_6) {
 242            $block = 3; break;
 243          }
 244          else {
 245            $block = 2; break;
 246          }
 247          break;
 248        }
 249        case 1: {
 250          $t6_7 = relayQueue.$get();
 251          $t7_8 = $rt.builtin.len($t6_7);
 252          $t8_9 = ($t7_8 >= 256);
 253          if ($t8_9) {
 254            $block = 4; break;
 255          }
 256          else {
 257            $block = 5; break;
 258          }
 259          break;
 260        }
 261        case 2: {
 262          $t9_10 = bus.$get();
 263          $t10_11 = common$jsbridge$bc.Send($t9_10, $t4_5);
 264          return;
 265          break;
 266        }
 267        case 3: {
 268          $t11_12 = relayReady.$get();
 269          if ($t11_12) {
 270            $block = 2; break;
 271          }
 272          else {
 273            $block = 1; break;
 274          }
 275          break;
 276        }
 277        case 4: {
 278          $t12_13 = relayQueue.$get();
 279          $t13_14 = $rt.builtin.sliceSlice($t12_13, 1, undefined, undefined);
 280          relayQueue.$set($t13_14);
 281          $block = 5; break;
 282          break;
 283        }
 284        case 5: {
 285          $t14_15 = relayQueue.$get();
 286          $t15_16 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
 287          $t16_17 = $t15_16.$get().addr(0);
 288          $t16_17.$set($t4_5);
 289          $t17_18 = $rt.builtin.sliceSlice($t15_16.$get(), undefined, undefined, undefined);
 290          $t18_19 = $rt.builtin.appendSlice($t14_15, $t17_18);
 291          relayQueue.$set($t18_19);
 292          return;
 293          break;
 294        }
 295      }
 296    }
 297  }
 298  
 299  export function flushQueue(to) {
 300    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;
 301    let $block = 0;
 302    while (true) {
 303      switch ($block) {
 304        case 0: {
 305          $t0_1 = (to !== 'relay');
 306          if ($t0_1) {
 307            $block = 1; break;
 308          }
 309          else {
 310            $block = 2; break;
 311          }
 312          break;
 313        }
 314        case 1: {
 315          return;
 316          break;
 317        }
 318        case 2: {
 319          $t1_2 = relayQueue.$get();
 320          $t2_3 = $rt.builtin.len($t1_2);
 321          $t3_4 = ($t2_3 > 0);
 322          relayReady.$set(true);
 323          $t4_5 = relayQueue.$get();
 324          $t5_6 = $rt.builtin.len($t4_5);
 325          $t6_7 = -1;
 326          $block = 3; break;
 327          break;
 328        }
 329        case 3: {
 330          $t7_8 = ($t6_7 + 1);
 331          $t8_9 = ($t7_8 < $t5_6);
 332          if ($t8_9) {
 333            $block = 4; break;
 334          }
 335          else {
 336            $block = 5; break;
 337          }
 338          break;
 339        }
 340        case 4: {
 341          $t9_10 = $t4_5.addr($t7_8);
 342          $t10_11 = $t9_10.$get();
 343          $t11_12 = bus.$get();
 344          $t12_13 = common$jsbridge$bc.Send($t11_12, $t10_11);
 345          $t6_7 = $t7_8;
 346          $block = 3; break;
 347          break;
 348        }
 349        case 5: {
 350          relayQueue.$set(null);
 351          if ($t3_4) {
 352            $block = 7; break;
 353          }
 354          else {
 355            $block = 6; break;
 356          }
 357          break;
 358        }
 359        case 6: {
 360          $t13_14 = broadcastToClients('["RESUB"]');
 361          $block = 7; break;
 362          break;
 363        }
 364        case 7: {
 365          return;
 366          break;
 367        }
 368      }
 369    }
 370  }
 371  
 372  export function onBusMessage(raw) {
 373    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;
 374    let $block = 0;
 375    while (true) {
 376      switch ($block) {
 377        case 0: {
 378          $t0_1 = jsonField(raw, 'from');
 379          $t1_2 = ($t0_1 === 'shell');
 380          if ($t1_2) {
 381            $block = 1; break;
 382          }
 383          else {
 384            $block = 2; break;
 385          }
 386          break;
 387        }
 388        case 1: {
 389          return;
 390          break;
 391        }
 392        case 2: {
 393          $t2_3 = jsonField(raw, 'to');
 394          $t3_4 = ($t2_3 !== 'shell');
 395          if ($t3_4) {
 396            $block = 5; break;
 397          }
 398          else {
 399            $block = 4; break;
 400          }
 401          break;
 402        }
 403        case 3: {
 404          return;
 405          break;
 406        }
 407        case 4: {
 408          $t4_5 = jsonFieldRaw(raw, 'msg');
 409          $t5_6 = ($t4_5 === '');
 410          if ($t5_6) {
 411            $block = 6; break;
 412          }
 413          else {
 414            $block = 7; break;
 415          }
 416          break;
 417        }
 418        case 5: {
 419          $t6_7 = ($t2_3 !== '*');
 420          if ($t6_7) {
 421            $block = 3; break;
 422          }
 423          else {
 424            $block = 4; break;
 425          }
 426          break;
 427        }
 428        case 6: {
 429          return;
 430          break;
 431        }
 432        case 7: {
 433          $t7_8 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 434          $t8_9 = newMW($t4_5);
 435          $t7_8.$set($rt.builtin.cloneValue($t8_9));
 436          $t9_10 = mw$str($t7_8);
 437          $t10_11 = ($t9_10 === 'READY');
 438          if ($t10_11) {
 439            $block = 8; break;
 440          }
 441          else {
 442            $block = 9; break;
 443          }
 444          break;
 445        }
 446        case 8: {
 447          $t11_12 = mw$str($t7_8);
 448          $t12_13 = ('["SW_LOG","shell","READY from ' + $t0_1);
 449          $t13_14 = ($t12_13 + ' v=');
 450          $t14_15 = ($t13_14 + $t11_12);
 451          $t15_16 = ($t14_15 + '"]');
 452          $t16_17 = broadcastToClients($t15_16);
 453          $t17_18 = ($t11_12 !== '');
 454          if ($t17_18) {
 455            $block = 12; break;
 456          }
 457          else {
 458            $block = 11; break;
 459          }
 460          break;
 461        }
 462        case 9: {
 463          $t18_19 = ($t0_1 === 'relay');
 464          if ($t18_19) {
 465            $block = 15; break;
 466          }
 467          else {
 468            $block = 14; break;
 469          }
 470          break;
 471        }
 472        case 10: {
 473          $t19_20 = ('shell: version mismatch from ' + $t0_1);
 474          $t20_21 = ($t19_20 + ': ');
 475          $t21_22 = ($t20_21 + $t11_12);
 476          $t22_23 = ($t21_22 + ' != ');
 477          $t23_24 = ($t22_23 + 'v0.65.57');
 478          $t24_25 = common$jsbridge$sw.Log($t23_24);
 479          $t25_26 = jstr($t0_1);
 480          $t26_27 = ('["FORCE_UPDATE_SW",' + $t25_26);
 481          $t27_28 = ($t26_27 + ']');
 482          $t28_29 = broadcastToClients($t27_28);
 483          return;
 484          break;
 485        }
 486        case 11: {
 487          $t29_30 = flushQueue($t0_1);
 488          return;
 489          break;
 490        }
 491        case 12: {
 492          $t30_31 = ($t11_12 !== 'v0.65.57');
 493          if ($t30_31) {
 494            $block = 10; break;
 495          }
 496          else {
 497            $block = 11; break;
 498          }
 499          break;
 500        }
 501        case 13: {
 502          $t31_32 = flushQueue('relay');
 503          $block = 14; break;
 504          break;
 505        }
 506        case 14: {
 507          $t32_33 = ($t9_10 !== 'LOG');
 508          if ($t32_33) {
 509            $block = 20; break;
 510          }
 511          else {
 512            $block = 17; break;
 513          }
 514          break;
 515        }
 516        case 15: {
 517          $t33_34 = relayReady.$get();
 518          if ($t33_34) {
 519            $block = 14; break;
 520          }
 521          else {
 522            $block = 13; break;
 523          }
 524          break;
 525        }
 526        case 16: {
 527          $t34_35 = ('shell: bus ' + $t0_1);
 528          $t35_36 = ($t34_35 + '→');
 529          $t36_37 = ($t35_36 + $t9_10);
 530          $t37_38 = common$jsbridge$sw.Log($t36_37);
 531          $block = 17; break;
 532          break;
 533        }
 534        case 17: {
 535          $t38_39 = ($t9_10 === 'LOG');
 536          if ($t38_39) {
 537            $block = 22; break;
 538          }
 539          else {
 540            $block = 24; break;
 541          }
 542          break;
 543        }
 544        case 18: {
 545          $t39_40 = ($t9_10 !== 'FWD_BATCH');
 546          if ($t39_40) {
 547            $block = 16; break;
 548          }
 549          else {
 550            $block = 17; break;
 551          }
 552          break;
 553        }
 554        case 19: {
 555          $t40_41 = ($t9_10 !== 'FWD_ALL');
 556          if ($t40_41) {
 557            $block = 18; break;
 558          }
 559          else {
 560            $block = 17; break;
 561          }
 562          break;
 563        }
 564        case 20: {
 565          $t41_42 = ($t9_10 !== 'FWD');
 566          if ($t41_42) {
 567            $block = 19; break;
 568          }
 569          else {
 570            $block = 17; break;
 571          }
 572          break;
 573        }
 574        case 21: {
 575          return;
 576          break;
 577        }
 578        case 22: {
 579          $t42_43 = mw$str($t7_8);
 580          $t43_44 = mw$str($t7_8);
 581          $t44_45 = jstr($t42_43);
 582          $t45_46 = ('["SW_LOG",' + $t44_45);
 583          $t46_47 = ($t45_46 + ',');
 584          $t47_48 = jstr($t43_44);
 585          $t48_49 = ($t46_47 + $t47_48);
 586          $t49_50 = ($t48_49 + ']');
 587          $t50_51 = broadcastToClients($t49_50);
 588          return;
 589          break;
 590        }
 591        case 23: {
 592          $t51_52 = mw$str($t7_8);
 593          $t52_53 = mw$raw($t7_8);
 594          $t53_54 = dispatchFwd($t51_52, $t52_53);
 595          $block = 21; break;
 596          break;
 597        }
 598        case 24: {
 599          $t54_55 = ($t9_10 === 'FWD');
 600          if ($t54_55) {
 601            $block = 23; break;
 602          }
 603          else {
 604            $block = 26; break;
 605          }
 606          break;
 607        }
 608        case 25: {
 609          $t55_56 = mw$raw($t7_8);
 610          $t56_57 = broadcastToClients($t55_56);
 611          $block = 21; break;
 612          break;
 613        }
 614        case 26: {
 615          $t57_58 = ($t9_10 === 'FWD_ALL');
 616          if ($t57_58) {
 617            $block = 25; break;
 618          }
 619          else {
 620            $block = 28; break;
 621          }
 622          break;
 623        }
 624        case 27: {
 625          $t58_59 = dispatchFwdBatch($t4_5);
 626          $block = 21; break;
 627          break;
 628        }
 629        case 28: {
 630          $t59_60 = ($t9_10 === 'FWD_BATCH');
 631          if ($t59_60) {
 632            $block = 27; break;
 633          }
 634          else {
 635            $block = 30; break;
 636          }
 637          break;
 638        }
 639        case 29: {
 640          $t60_61 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
 641          $t61_62 = mw$str($t7_8);
 642          $t60_61.$set($t61_62);
 643          $t62_63 = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 644          $t63_64 = mw$num($t7_8);
 645          $t64_65 = $t63_64;
 646          $t62_63.$set($t64_65);
 647          $t65_66 = mw$str($t7_8);
 648          $t66_67 = mw$str($t7_8);
 649          $t67_68 = mw$str($t7_8);
 650          $t68_69 = onBusMessage$1.bind(null, $t60_61, $t62_63);
 651          $t69_70 = cryptoProxy($t65_66, $t66_67, $t67_68, $t68_69);
 652          $block = 21; break;
 653          break;
 654        }
 655        case 30: {
 656          $t70_71 = ($t9_10 === 'CRYPTO_REQ');
 657          if ($t70_71) {
 658            $block = 29; break;
 659          }
 660          else {
 661            $block = 32; break;
 662          }
 663          break;
 664        }
 665        case 31: {
 666          $t71_72 = mw$str($t7_8);
 667          $t72_73 = jstr($t71_72);
 668          $t73_74 = ('["DM_HISTORY_CLEARED",' + $t72_73);
 669          $t74_75 = ($t73_74 + ']');
 670          $t75_76 = broadcastToClients($t74_75);
 671          $block = 21; break;
 672          break;
 673        }
 674        case 32: {
 675          $t76_77 = ($t9_10 === 'DM_HISTORY_CLEARED');
 676          if ($t76_77) {
 677            $block = 31; break;
 678          }
 679          else {
 680            $block = 21; break;
 681          }
 682          break;
 683        }
 684      }
 685    }
 686  }
 687  
 688  function onBusMessage$1(from, id, result, errMsg) {
 689    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;
 690    $t0_1 = from.$get();
 691    $t1_2 = id.$get();
 692    $t2_3 = $t1_2;
 693    $t3_4 = common$helpers.Itoa($t2_3);
 694    $t4_5 = ('["CRYPTO_RESULT",' + $t3_4);
 695    $t5_6 = ($t4_5 + ',');
 696    $t6_7 = jstr(result);
 697    $t7_8 = ($t5_6 + $t6_7);
 698    $t8_9 = ($t7_8 + ',');
 699    $t9_10 = jstr(errMsg);
 700    $t10_11 = ($t8_9 + $t9_10);
 701    $t11_12 = ($t10_11 + ']');
 702    $t12_13 = busSend($t0_1, $t11_12);
 703    return;
 704  }
 705  
 706  export function dispatchFwd(clientID, innerMsg) {
 707    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
 708    let $block = 0;
 709    while (true) {
 710      switch ($block) {
 711        case 0: {
 712          $t0_1 = (clientID === '');
 713          if ($t0_1) {
 714            $block = 1; break;
 715          }
 716          else {
 717            $block = 3; break;
 718          }
 719          break;
 720        }
 721        case 1: {
 722          $t1_2 = hasMarmotSub(innerMsg);
 723          if ($t1_2) {
 724            $block = 4; break;
 725          }
 726          else {
 727            $block = 5; break;
 728          }
 729          break;
 730        }
 731        case 2: {
 732          return;
 733          break;
 734        }
 735        case 3: {
 736          $t2_3 = sendToClient(clientID, innerMsg);
 737          $block = 2; break;
 738          break;
 739        }
 740        case 4: {
 741          $t3_4 = deliverMarmotEvent(innerMsg);
 742          $block = 2; break;
 743          break;
 744        }
 745        case 5: {
 746          $t4_5 = broadcastToClients(innerMsg);
 747          $block = 2; break;
 748          break;
 749        }
 750      }
 751    }
 752  }
 753  
 754  export function dispatchFwdBatch(raw) {
 755    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;
 756    let $block = 0;
 757    while (true) {
 758      switch ($block) {
 759        case 0: {
 760          $t0_1 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 761          $t1_2 = newMW(raw);
 762          $t0_1.$set($rt.builtin.cloneValue($t1_2));
 763          $t2_3 = mw$str($t0_1);
 764          $t3_4 = mw$sep($t0_1);
 765          $t4_5 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 766          $t5_6 = $t4_5.$get();
 767          $t6_7 = { $get() { return $t0_1.$get().s; }, $set(v) { const obj = $t0_1.$get(); obj.s = v; $t0_1.$set(obj); } };
 768          $t7_8 = $t6_7.$get();
 769          $t8_9 = $rt.builtin.len($t7_8);
 770          $t9_10 = ($t5_6 >= $t8_9);
 771          if ($t9_10) {
 772            $block = 1; break;
 773          }
 774          else {
 775            $block = 3; break;
 776          }
 777          break;
 778        }
 779        case 1: {
 780          return;
 781          break;
 782        }
 783        case 2: {
 784          $t10_11 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 785          $t11_12 = $t10_11.$get();
 786          $t12_13 = ($t11_12 + 1);
 787          $t13_14 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 788          $t13_14.$set($t12_13);
 789          $block = 4; break;
 790          break;
 791        }
 792        case 3: {
 793          $t14_15 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 794          $t15_16 = $t14_15.$get();
 795          $t16_17 = { $get() { return $t0_1.$get().s; }, $set(v) { const obj = $t0_1.$get(); obj.s = v; $t0_1.$set(obj); } };
 796          $t17_18 = $t16_17.$get();
 797          $rt.runtime.boundsCheck($t15_16, $rt.builtin.byteLen($t17_18));
 798          $t18_19 = $rt.builtin.stringByteAt($t17_18, $t15_16);
 799          $t19_20 = ($t18_19 !== 91);
 800          if ($t19_20) {
 801            $block = 1; break;
 802          }
 803          else {
 804            $block = 2; break;
 805          }
 806          break;
 807        }
 808        case 4: {
 809          $t20_21 = mw$sep($t0_1);
 810          $t21_22 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 811          $t22_23 = $t21_22.$get();
 812          $t23_24 = { $get() { return $t0_1.$get().s; }, $set(v) { const obj = $t0_1.$get(); obj.s = v; $t0_1.$set(obj); } };
 813          $t24_25 = $t23_24.$get();
 814          $t25_26 = $rt.builtin.len($t24_25);
 815          $t26_27 = ($t22_23 >= $t25_26);
 816          if ($t26_27) {
 817            $block = 5; break;
 818          }
 819          else {
 820            $block = 7; break;
 821          }
 822          break;
 823        }
 824        case 5: {
 825          return;
 826          break;
 827        }
 828        case 6: {
 829          $t27_28 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 830          $t28_29 = $t27_28.$get();
 831          $t29_30 = { $get() { return $t0_1.$get().s; }, $set(v) { const obj = $t0_1.$get(); obj.s = v; $t0_1.$set(obj); } };
 832          $t30_31 = $t29_30.$get();
 833          $t31_32 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 834          $t32_33 = $t31_32.$get();
 835          $t33_34 = skipval($t30_31, $t32_33);
 836          $t34_35 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 837          $t34_35.$set($t33_34);
 838          $t35_36 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 839          $t36_37 = $t35_36.$get();
 840          $t37_38 = ($t36_37 < 0);
 841          if ($t37_38) {
 842            $block = 5; break;
 843          }
 844          else {
 845            $block = 8; break;
 846          }
 847          break;
 848        }
 849        case 7: {
 850          $t38_39 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 851          $t39_40 = $t38_39.$get();
 852          $t40_41 = { $get() { return $t0_1.$get().s; }, $set(v) { const obj = $t0_1.$get(); obj.s = v; $t0_1.$set(obj); } };
 853          $t41_42 = $t40_41.$get();
 854          $rt.runtime.boundsCheck($t39_40, $rt.builtin.byteLen($t41_42));
 855          $t42_43 = $rt.builtin.stringByteAt($t41_42, $t39_40);
 856          $t43_44 = ($t42_43 === 93);
 857          if ($t43_44) {
 858            $block = 5; break;
 859          }
 860          else {
 861            $block = 6; break;
 862          }
 863          break;
 864        }
 865        case 8: {
 866          $t44_45 = { $get() { return $t0_1.$get().s; }, $set(v) { const obj = $t0_1.$get(); obj.s = v; $t0_1.$set(obj); } };
 867          $t45_46 = $t44_45.$get();
 868          $t46_47 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
 869          $t47_48 = $t46_47.$get();
 870          $t48_49 = $rt.builtin.stringSlice($t45_46, $t28_29, $t47_48);
 871          $t49_50 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 872          $t50_51 = newMW($t48_49);
 873          $t49_50.$set($rt.builtin.cloneValue($t50_51));
 874          $t51_52 = mw$str($t49_50);
 875          $t52_53 = ($t51_52 === 'FWD');
 876          if ($t52_53) {
 877            $block = 9; break;
 878          }
 879          else {
 880            $block = 11; break;
 881          }
 882          break;
 883        }
 884        case 9: {
 885          $t53_54 = mw$str($t49_50);
 886          $t54_55 = mw$raw($t49_50);
 887          $t55_56 = dispatchFwd($t53_54, $t54_55);
 888          $block = 4; break;
 889          break;
 890        }
 891        case 10: {
 892          $t56_57 = mw$raw($t49_50);
 893          $t57_58 = broadcastToClients($t56_57);
 894          $block = 4; break;
 895          break;
 896        }
 897        case 11: {
 898          $t58_59 = ($t51_52 === 'FWD_ALL');
 899          if ($t58_59) {
 900            $block = 10; break;
 901          }
 902          else {
 903            $block = 4; break;
 904          }
 905          break;
 906        }
 907      }
 908    }
 909  }
 910  
 911  export function hasMarmotSub(msg) {
 912    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5;
 913    let $block = 0;
 914    while (true) {
 915      switch ($block) {
 916        case 0: {
 917          $t0_1 = $rt.builtin.len(msg);
 918          $t1_2 = ($t0_1 > 21);
 919          if ($t1_2) {
 920            $block = 1; break;
 921          }
 922          else {
 923            $t4_5 = false;
 924            $block = 2; break;
 925          }
 926          break;
 927        }
 928        case 1: {
 929          $t2_3 = $rt.builtin.stringSlice(msg, undefined, 21);
 930          $t3_4 = ($t2_3 === '["EVENT","marmot-sub-');
 931          $t4_5 = $t3_4;
 932          $block = 2; break;
 933          break;
 934        }
 935        case 2: {
 936          return $t4_5;
 937          break;
 938        }
 939      }
 940    }
 941  }
 942  
 943  export function deliverMarmotEvent(msg) {
 944    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;
 945    $t0_1 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
 946    $t1_2 = newMW(msg);
 947    $t0_1.$set($rt.builtin.cloneValue($t1_2));
 948    $t2_3 = mw$str($t0_1);
 949    $t3_4 = mw$str($t0_1);
 950    $t4_5 = mw$raw($t0_1);
 951    $t5_6 = $rt.builtin.stringSlice($t3_4, 11, undefined);
 952    $t6_7 = ('["MLS_PROXY","deliverEvent",' + $t5_6);
 953    $t7_8 = ($t6_7 + ',');
 954    $t8_9 = jstr($t4_5);
 955    $t9_10 = ($t7_8 + $t8_9);
 956    $t10_11 = ($t9_10 + ']');
 957    $t11_12 = broadcastToClients($t10_11);
 958    return;
 959  }
 960  
 961  export function jsonField(json, key) {
 962    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;
 963    let $block = 0;
 964    while (true) {
 965      switch ($block) {
 966        case 0: {
 967          $t0_1 = jsonFieldRaw(json, key);
 968          $t1_2 = $rt.builtin.len($t0_1);
 969          $t2_3 = ($t1_2 >= 2);
 970          if ($t2_3) {
 971            $block = 4; break;
 972          }
 973          else {
 974            $block = 2; break;
 975          }
 976          break;
 977        }
 978        case 1: {
 979          $t3_4 = $rt.builtin.len($t0_1);
 980          $t4_5 = ($t3_4 - 1);
 981          $t5_6 = $rt.builtin.stringSlice($t0_1, 1, $t4_5);
 982          $t6_7 = jsonUnescape($t5_6);
 983          return $t6_7;
 984          break;
 985        }
 986        case 2: {
 987          return $t0_1;
 988          break;
 989        }
 990        case 3: {
 991          $t7_8 = $rt.builtin.len($t0_1);
 992          $t8_9 = ($t7_8 - 1);
 993          $rt.runtime.boundsCheck($t8_9, $rt.builtin.byteLen($t0_1));
 994          $t9_10 = $rt.builtin.stringByteAt($t0_1, $t8_9);
 995          $t10_11 = ($t9_10 === 34);
 996          if ($t10_11) {
 997            $block = 1; break;
 998          }
 999          else {
1000            $block = 2; break;
1001          }
1002          break;
1003        }
1004        case 4: {
1005          $rt.runtime.boundsCheck(0, $rt.builtin.byteLen($t0_1));
1006          $t11_12 = $rt.builtin.stringByteAt($t0_1, 0);
1007          $t12_13 = ($t11_12 === 34);
1008          if ($t12_13) {
1009            $block = 3; break;
1010          }
1011          else {
1012            $block = 2; break;
1013          }
1014          break;
1015        }
1016      }
1017    }
1018  }
1019  
1020  export function jsonUnescape(s) {
1021    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;
1022    let $block = 0;
1023    while (true) {
1024      switch ($block) {
1025        case 0: {
1026          $t0_1 = $rt.builtin.len(s);
1027          $t1_2 = ($t0_1 === 0);
1028          if ($t1_2) {
1029            $block = 1; break;
1030          }
1031          else {
1032            $block = 2; break;
1033          }
1034          break;
1035        }
1036        case 1: {
1037          return s;
1038          break;
1039        }
1040        case 2: {
1041          $t2_3 = 0;
1042          $block = 3; break;
1043          break;
1044        }
1045        case 3: {
1046          $t3_4 = $rt.builtin.len(s);
1047          $t4_5 = ($t2_3 < $t3_4);
1048          if ($t4_5) {
1049            $block = 4; break;
1050          }
1051          else {
1052            $t7_8 = false;
1053            $block = 5; break;
1054          }
1055          break;
1056        }
1057        case 4: {
1058          $rt.runtime.boundsCheck($t2_3, $rt.builtin.byteLen(s));
1059          $t5_6 = $rt.builtin.stringByteAt(s, $t2_3);
1060          $t6_7 = ($t5_6 === 92);
1061          if ($t6_7) {
1062            $block = 6; break;
1063          }
1064          else {
1065            $block = 7; break;
1066          }
1067          break;
1068        }
1069        case 5: {
1070          if ($t7_8) {
1071            $block = 9; break;
1072          }
1073          else {
1074            $block = 8; break;
1075          }
1076          break;
1077        }
1078        case 6: {
1079          $t7_8 = true;
1080          $block = 5; break;
1081          break;
1082        }
1083        case 7: {
1084          $t8_9 = ($t2_3 + 1);
1085          $t2_3 = $t8_9;
1086          $block = 3; break;
1087          break;
1088        }
1089        case 8: {
1090          return s;
1091          break;
1092        }
1093        case 9: {
1094          $t9_10 = $rt.builtin.len(s);
1095          $t10_11 = $rt.builtin.makeSlice(0, $t9_10, 0);
1096          $t11_12 = $t10_11;
1097          $t12_13 = 0;
1098          $block = 10; break;
1099          break;
1100        }
1101        case 10: {
1102          $t13_14 = $rt.builtin.len(s);
1103          $t14_15 = ($t12_13 < $t13_14);
1104          if ($t14_15) {
1105            $block = 11; break;
1106          }
1107          else {
1108            $block = 12; break;
1109          }
1110          break;
1111        }
1112        case 11: {
1113          $rt.runtime.boundsCheck($t12_13, $rt.builtin.byteLen(s));
1114          $t15_16 = $rt.builtin.stringByteAt(s, $t12_13);
1115          $t16_17 = ($t15_16 === 92);
1116          if ($t16_17) {
1117            $block = 16; break;
1118          }
1119          else {
1120            $block = 15; break;
1121          }
1122          break;
1123        }
1124        case 12: {
1125          $t17_18 = $rt.builtin.bytesToString($t11_12);
1126          return $t17_18;
1127          break;
1128        }
1129        case 13: {
1130          $t18_19 = ($t12_13 + 1);
1131          $rt.runtime.boundsCheck($t18_19, $rt.builtin.byteLen(s));
1132          $t19_20 = $rt.builtin.stringByteAt(s, $t18_19);
1133          $t20_21 = ($t19_20 === 110);
1134          if ($t20_21) {
1135            $block = 18; break;
1136          }
1137          else {
1138            $block = 20; break;
1139          }
1140          break;
1141        }
1142        case 14: {
1143          $t23_24 = ($t22_23 + 1);
1144          $t11_12 = $t21_22;
1145          $t12_13 = $t23_24;
1146          $block = 10; break;
1147          break;
1148        }
1149        case 15: {
1150          $rt.runtime.boundsCheck($t12_13, $rt.builtin.byteLen(s));
1151          $t24_25 = $rt.builtin.stringByteAt(s, $t12_13);
1152          $t25_26 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1153          $t26_27 = $t25_26.$get().addr(0);
1154          $t26_27.$set($t24_25);
1155          $t27_28 = $rt.builtin.sliceSlice($t25_26.$get(), undefined, undefined, undefined);
1156          $t28_29 = $rt.builtin.appendSlice($t11_12, $t27_28);
1157          $t21_22 = $t28_29;
1158          $t22_23 = $t12_13;
1159          $block = 14; break;
1160          break;
1161        }
1162        case 16: {
1163          $t29_30 = ($t12_13 + 1);
1164          $t30_31 = $rt.builtin.len(s);
1165          $t31_32 = ($t29_30 < $t30_31);
1166          if ($t31_32) {
1167            $block = 13; break;
1168          }
1169          else {
1170            $block = 15; break;
1171          }
1172          break;
1173        }
1174        case 17: {
1175          $t33_34 = ($t12_13 + 1);
1176          $t21_22 = $t32_33;
1177          $t22_23 = $t33_34;
1178          $block = 14; break;
1179          break;
1180        }
1181        case 18: {
1182          $t34_35 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1183          $t35_36 = $t34_35.$get().addr(0);
1184          $t35_36.$set(10);
1185          $t36_37 = $rt.builtin.sliceSlice($t34_35.$get(), undefined, undefined, undefined);
1186          $t37_38 = $rt.builtin.appendSlice($t11_12, $t36_37);
1187          $t32_33 = $t37_38;
1188          $block = 17; break;
1189          break;
1190        }
1191        case 19: {
1192          $t38_39 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1193          $t39_40 = $t38_39.$get().addr(0);
1194          $t39_40.$set(9);
1195          $t40_41 = $rt.builtin.sliceSlice($t38_39.$get(), undefined, undefined, undefined);
1196          $t41_42 = $rt.builtin.appendSlice($t11_12, $t40_41);
1197          $t32_33 = $t41_42;
1198          $block = 17; break;
1199          break;
1200        }
1201        case 20: {
1202          $t42_43 = ($t19_20 === 116);
1203          if ($t42_43) {
1204            $block = 19; break;
1205          }
1206          else {
1207            $block = 22; break;
1208          }
1209          break;
1210        }
1211        case 21: {
1212          $t43_44 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1213          $t44_45 = $t43_44.$get().addr(0);
1214          $t44_45.$set(13);
1215          $t45_46 = $rt.builtin.sliceSlice($t43_44.$get(), undefined, undefined, undefined);
1216          $t46_47 = $rt.builtin.appendSlice($t11_12, $t45_46);
1217          $t32_33 = $t46_47;
1218          $block = 17; break;
1219          break;
1220        }
1221        case 22: {
1222          $t47_48 = ($t19_20 === 114);
1223          if ($t47_48) {
1224            $block = 21; break;
1225          }
1226          else {
1227            $block = 24; break;
1228          }
1229          break;
1230        }
1231        case 23: {
1232          $t48_49 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1233          $t49_50 = $t48_49.$get().addr(0);
1234          $t49_50.$set(92);
1235          $t50_51 = $rt.builtin.sliceSlice($t48_49.$get(), undefined, undefined, undefined);
1236          $t51_52 = $rt.builtin.appendSlice($t11_12, $t50_51);
1237          $t32_33 = $t51_52;
1238          $block = 17; break;
1239          break;
1240        }
1241        case 24: {
1242          $t52_53 = ($t19_20 === 92);
1243          if ($t52_53) {
1244            $block = 23; break;
1245          }
1246          else {
1247            $block = 26; break;
1248          }
1249          break;
1250        }
1251        case 25: {
1252          $t53_54 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1253          $t54_55 = $t53_54.$get().addr(0);
1254          $t54_55.$set(34);
1255          $t55_56 = $rt.builtin.sliceSlice($t53_54.$get(), undefined, undefined, undefined);
1256          $t56_57 = $rt.builtin.appendSlice($t11_12, $t55_56);
1257          $t32_33 = $t56_57;
1258          $block = 17; break;
1259          break;
1260        }
1261        case 26: {
1262          $t57_58 = ($t19_20 === 34);
1263          if ($t57_58) {
1264            $block = 25; break;
1265          }
1266          else {
1267            $block = 28; break;
1268          }
1269          break;
1270        }
1271        case 27: {
1272          $t58_59 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1273          $t59_60 = $t58_59.$get().addr(0);
1274          $t59_60.$set(47);
1275          $t60_61 = $rt.builtin.sliceSlice($t58_59.$get(), undefined, undefined, undefined);
1276          $t61_62 = $rt.builtin.appendSlice($t11_12, $t60_61);
1277          $t32_33 = $t61_62;
1278          $block = 17; break;
1279          break;
1280        }
1281        case 28: {
1282          $t62_63 = ($t19_20 === 47);
1283          if ($t62_63) {
1284            $block = 27; break;
1285          }
1286          else {
1287            $block = 29; break;
1288          }
1289          break;
1290        }
1291        case 29: {
1292          $rt.runtime.boundsCheck($t12_13, $rt.builtin.byteLen(s));
1293          $t63_64 = $rt.builtin.stringByteAt(s, $t12_13);
1294          $t64_65 = ($t12_13 + 1);
1295          $rt.runtime.boundsCheck($t64_65, $rt.builtin.byteLen(s));
1296          $t65_66 = $rt.builtin.stringByteAt(s, $t64_65);
1297          $t66_67 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
1298          $t67_68 = $t66_67.$get().addr(0);
1299          $t67_68.$set($t63_64);
1300          $t68_69 = $t66_67.$get().addr(1);
1301          $t68_69.$set($t65_66);
1302          $t69_70 = $rt.builtin.sliceSlice($t66_67.$get(), undefined, undefined, undefined);
1303          $t70_71 = $rt.builtin.appendSlice($t11_12, $t69_70);
1304          $t32_33 = $t70_71;
1305          $block = 17; break;
1306          break;
1307        }
1308      }
1309    }
1310  }
1311  
1312  export function jsonFieldRaw(json, key) {
1313    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;
1314    let $block = 0;
1315    while (true) {
1316      switch ($block) {
1317        case 0: {
1318          $t0_1 = ('"' + key);
1319          $t1_2 = ($t0_1 + '":');
1320          $t2_3 = 0;
1321          $block = 1; break;
1322          break;
1323        }
1324        case 1: {
1325          $t3_4 = $rt.builtin.len(json);
1326          $t4_5 = $rt.builtin.len($t1_2);
1327          $t5_6 = ($t3_4 - $t4_5);
1328          $t6_7 = ($t2_3 <= $t5_6);
1329          if ($t6_7) {
1330            $block = 2; break;
1331          }
1332          else {
1333            $t11_12 = -1;
1334            $block = 3; break;
1335          }
1336          break;
1337        }
1338        case 2: {
1339          $t7_8 = $rt.builtin.len($t1_2);
1340          $t8_9 = ($t2_3 + $t7_8);
1341          $t9_10 = $rt.builtin.stringSlice(json, $t2_3, $t8_9);
1342          $t10_11 = ($t9_10 === $t1_2);
1343          if ($t10_11) {
1344            $block = 4; break;
1345          }
1346          else {
1347            $block = 5; break;
1348          }
1349          break;
1350        }
1351        case 3: {
1352          $t12_13 = ($t11_12 < 0);
1353          if ($t12_13) {
1354            $block = 6; break;
1355          }
1356          else {
1357            $t19_20 = $t11_12;
1358            $block = 9; break;
1359          }
1360          break;
1361        }
1362        case 4: {
1363          $t13_14 = $rt.builtin.len($t1_2);
1364          $t14_15 = ($t2_3 + $t13_14);
1365          $t11_12 = $t14_15;
1366          $block = 3; break;
1367          break;
1368        }
1369        case 5: {
1370          $t15_16 = ($t2_3 + 1);
1371          $t2_3 = $t15_16;
1372          $block = 1; break;
1373          break;
1374        }
1375        case 6: {
1376          return '';
1377          break;
1378        }
1379        case 7: {
1380          $t16_17 = ($t19_20 + 1);
1381          $t19_20 = $t16_17;
1382          $block = 9; break;
1383          break;
1384        }
1385        case 8: {
1386          $t17_18 = $rt.builtin.len(json);
1387          $t18_19 = ($t19_20 >= $t17_18);
1388          if ($t18_19) {
1389            $block = 12; break;
1390          }
1391          else {
1392            $block = 13; break;
1393          }
1394          break;
1395        }
1396        case 9: {
1397          $t20_21 = $rt.builtin.len(json);
1398          $t21_22 = ($t19_20 < $t20_21);
1399          if ($t21_22) {
1400            $block = 10; break;
1401          }
1402          else {
1403            $block = 8; break;
1404          }
1405          break;
1406        }
1407        case 10: {
1408          $rt.runtime.boundsCheck($t19_20, $rt.builtin.byteLen(json));
1409          $t22_23 = $rt.builtin.stringByteAt(json, $t19_20);
1410          $t23_24 = ($t22_23 === 32);
1411          if ($t23_24) {
1412            $block = 7; break;
1413          }
1414          else {
1415            $block = 11; break;
1416          }
1417          break;
1418        }
1419        case 11: {
1420          $rt.runtime.boundsCheck($t19_20, $rt.builtin.byteLen(json));
1421          $t24_25 = $rt.builtin.stringByteAt(json, $t19_20);
1422          $t25_26 = ($t24_25 === 9);
1423          if ($t25_26) {
1424            $block = 7; break;
1425          }
1426          else {
1427            $block = 8; break;
1428          }
1429          break;
1430        }
1431        case 12: {
1432          return '';
1433          break;
1434        }
1435        case 13: {
1436          $t26_27 = skipval(json, $t19_20);
1437          $t27_28 = ($t26_27 < 0);
1438          if ($t27_28) {
1439            $block = 14; break;
1440          }
1441          else {
1442            $block = 15; break;
1443          }
1444          break;
1445        }
1446        case 14: {
1447          return '';
1448          break;
1449        }
1450        case 15: {
1451          $t28_29 = $rt.builtin.stringSlice(json, $t19_20, $t26_27);
1452          return $t28_29;
1453          break;
1454        }
1455      }
1456    }
1457  }
1458  
1459  export function parseTS(s) {
1460    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;
1461    let $block = 0;
1462    while (true) {
1463      switch ($block) {
1464        case 0: {
1465          $t0_1 = 0;
1466          $t1_2 = 0;
1467          $block = 1; break;
1468          break;
1469        }
1470        case 1: {
1471          $t2_3 = $rt.builtin.len(s);
1472          $t3_4 = ($t1_2 < $t2_3);
1473          if ($t3_4) {
1474            $block = 2; break;
1475          }
1476          else {
1477            $block = 3; break;
1478          }
1479          break;
1480        }
1481        case 2: {
1482          $rt.runtime.boundsCheck($t1_2, $rt.builtin.byteLen(s));
1483          $t4_5 = $rt.builtin.stringByteAt(s, $t1_2);
1484          $t5_6 = ($t4_5 >= 48);
1485          if ($t5_6) {
1486            $block = 6; break;
1487          }
1488          else {
1489            $t11_12 = $t0_1;
1490            $block = 5; break;
1491          }
1492          break;
1493        }
1494        case 3: {
1495          return $t0_1;
1496          break;
1497        }
1498        case 4: {
1499          $t6_7 = ($t0_1 * 10);
1500          $rt.runtime.boundsCheck($t1_2, $rt.builtin.byteLen(s));
1501          $t7_8 = $rt.builtin.stringByteAt(s, $t1_2);
1502          $t8_9 = (($t7_8 - 48) & 0xFF);
1503          $t9_10 = $t8_9;
1504          $t10_11 = ($t6_7 + $t9_10);
1505          $t11_12 = $t10_11;
1506          $block = 5; break;
1507          break;
1508        }
1509        case 5: {
1510          $t12_13 = ($t1_2 + 1);
1511          $t0_1 = $t11_12;
1512          $t1_2 = $t12_13;
1513          $block = 1; break;
1514          break;
1515        }
1516        case 6: {
1517          $rt.runtime.boundsCheck($t1_2, $rt.builtin.byteLen(s));
1518          $t13_14 = $rt.builtin.stringByteAt(s, $t1_2);
1519          $t14_15 = ($t13_14 <= 57);
1520          if ($t14_15) {
1521            $block = 4; break;
1522          }
1523          else {
1524            $t11_12 = $t0_1;
1525            $block = 5; break;
1526          }
1527          break;
1528        }
1529      }
1530    }
1531  }
1532  
1533  export function strsJSON(ss) {
1534    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;
1535    let $block = 0;
1536    while (true) {
1537      switch ($block) {
1538        case 0: {
1539          $t0_1 = $rt.builtin.len(ss);
1540          $t1_2 = ($t0_1 === 0);
1541          if ($t1_2) {
1542            $block = 1; break;
1543          }
1544          else {
1545            $block = 2; break;
1546          }
1547          break;
1548        }
1549        case 1: {
1550          return '[]';
1551          break;
1552        }
1553        case 2: {
1554          $t2_3 = $rt.builtin.len(ss);
1555          $t3_4 = '[';
1556          $t4_5 = -1;
1557          $block = 3; break;
1558          break;
1559        }
1560        case 3: {
1561          $t5_6 = ($t4_5 + 1);
1562          $t6_7 = ($t5_6 < $t2_3);
1563          if ($t6_7) {
1564            $block = 4; break;
1565          }
1566          else {
1567            $block = 5; break;
1568          }
1569          break;
1570        }
1571        case 4: {
1572          $t7_8 = ss.addr($t5_6);
1573          $t8_9 = $t7_8.$get();
1574          $t9_10 = ($t5_6 > 0);
1575          if ($t9_10) {
1576            $block = 6; break;
1577          }
1578          else {
1579            $t12_13 = $t3_4;
1580            $block = 7; break;
1581          }
1582          break;
1583        }
1584        case 5: {
1585          $t10_11 = ($t3_4 + ']');
1586          return $t10_11;
1587          break;
1588        }
1589        case 6: {
1590          $t11_12 = ($t3_4 + ',');
1591          $t12_13 = $t11_12;
1592          $block = 7; break;
1593          break;
1594        }
1595        case 7: {
1596          $t13_14 = jstr($t8_9);
1597          $t14_15 = ($t12_13 + $t13_14);
1598          $t3_4 = $t14_15;
1599          $t4_5 = $t5_6;
1600          $block = 3; break;
1601          break;
1602        }
1603      }
1604    }
1605  }
1606  
1607  export function identitySetPubkey(hex) {
1608    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
1609    let $block = 0;
1610    while (true) {
1611      switch ($block) {
1612        case 0: {
1613          $t0_1 = myPubkey.$get();
1614          $t1_2 = ($t0_1 !== '');
1615          if ($t1_2) {
1616            $block = 3; break;
1617          }
1618          else {
1619            $block = 2; break;
1620          }
1621          break;
1622        }
1623        case 1: {
1624          $t2_3 = closeMarmotSubs();
1625          $t3_4 = busSend('relay', '["CLEAR_KEY"]');
1626          $t4_5 = broadcastToClients('["RESUB"]');
1627          $block = 2; break;
1628          break;
1629        }
1630        case 2: {
1631          myPubkey.$set(hex);
1632          return;
1633          break;
1634        }
1635        case 3: {
1636          $t5_6 = myPubkey.$get();
1637          $t6_7 = (hex !== $t5_6);
1638          if ($t6_7) {
1639            $block = 1; break;
1640          }
1641          else {
1642            $block = 2; break;
1643          }
1644          break;
1645        }
1646      }
1647    }
1648  }
1649  
1650  export function identityClearKey() {
1651    let $t0_1;
1652    $t0_1 = closeMarmotSubs();
1653    myPubkey.$set('');
1654    return;
1655  }
1656  
1657  export function closeMarmotSubs() {
1658    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
1659    let $block = 0;
1660    while (true) {
1661      switch ($block) {
1662        case 0: {
1663          $t0_1 = marmotSubs.$get();
1664          $t1_2 = { $entries: [...$t0_1.entries()], $pos: 0, next() { if (this.$pos >= this.$entries.length) return [false, null, null]; const [k, v] = this.$entries[this.$pos++]; return [true, k, v]; } };
1665          $block = 1; break;
1666          break;
1667        }
1668        case 1: {
1669          $t2_3 = $t1_2.next();
1670          $t3_4 = $t2_3[0];
1671          if ($t3_4) {
1672            $block = 2; break;
1673          }
1674          else {
1675            $block = 3; break;
1676          }
1677          break;
1678        }
1679        case 2: {
1680          $t4_5 = $t2_3[1];
1681          $t5_6 = jstr($t4_5);
1682          $t6_7 = ('["CLOSE",' + $t5_6);
1683          $t7_8 = ($t6_7 + ']');
1684          $t8_9 = busSend('relay', $t7_8);
1685          $block = 1; break;
1686          break;
1687        }
1688        case 3: {
1689          marmotSubs.$set(null);
1690          return;
1691          break;
1692        }
1693      }
1694    }
1695  }
1696  
1697  export function markSentDM(peer, content) {
1698    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
1699    $t0_1 = sentDMIdx.$get();
1700    $t1_2 = ($t0_1 % 32);
1701    $t2_3 = (peer + '\0');
1702    $t3_4 = ($t2_3 + content);
1703    $t4_5 = sentDMDedup.$get().addr($t1_2);
1704    $t4_5.$set($t3_4);
1705    $t5_6 = sentDMIdx.$get();
1706    $t6_7 = ($t5_6 + 1);
1707    sentDMIdx.$set($t6_7);
1708    return;
1709  }
1710  
1711  export function isSentDMEcho(peer, content) {
1712    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
1713    let $block = 0;
1714    while (true) {
1715      switch ($block) {
1716        case 0: {
1717          $t0_1 = (peer + '\0');
1718          $t1_2 = ($t0_1 + content);
1719          $t2_3 = sentDMDedup.$get();
1720          $t3_4 = -1;
1721          $block = 1; break;
1722          break;
1723        }
1724        case 1: {
1725          $t4_5 = ($t3_4 + 1);
1726          $t5_6 = ($t4_5 < 32);
1727          if ($t5_6) {
1728            $block = 2; break;
1729          }
1730          else {
1731            $block = 3; break;
1732          }
1733          break;
1734        }
1735        case 2: {
1736          $t6_7 = $t2_3.get($t4_5);
1737          $t7_8 = ($t6_7 === $t1_2);
1738          if ($t7_8) {
1739            $block = 4; break;
1740          }
1741          else {
1742            $t3_4 = $t4_5;
1743            $block = 1; break;
1744          }
1745          break;
1746        }
1747        case 3: {
1748          return false;
1749          break;
1750        }
1751        case 4: {
1752          return true;
1753          break;
1754        }
1755      }
1756    }
1757  }
1758  
1759  export function flushPendingSentDMs() {
1760    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;
1761    let $block = 0;
1762    while (true) {
1763      switch ($block) {
1764        case 0: {
1765          $t0_1 = myPubkey.$get();
1766          $t1_2 = ($t0_1 === '');
1767          if ($t1_2) {
1768            $block = 1; break;
1769          }
1770          else {
1771            $block = 3; break;
1772          }
1773          break;
1774        }
1775        case 1: {
1776          return;
1777          break;
1778        }
1779        case 2: {
1780          $t2_3 = pendingSentDMs.$get();
1781          $t3_4 = $rt.builtin.len($t2_3);
1782          $t7_8 = -1;
1783          $block = 4; break;
1784          break;
1785        }
1786        case 3: {
1787          $t4_5 = pendingSentDMs.$get();
1788          $t5_6 = $rt.builtin.len($t4_5);
1789          $t6_7 = ($t5_6 === 0);
1790          if ($t6_7) {
1791            $block = 1; break;
1792          }
1793          else {
1794            $block = 2; break;
1795          }
1796          break;
1797        }
1798        case 4: {
1799          $t8_9 = ($t7_8 + 1);
1800          $t9_10 = ($t8_9 < $t3_4);
1801          if ($t9_10) {
1802            $block = 5; break;
1803          }
1804          else {
1805            $block = 6; break;
1806          }
1807          break;
1808        }
1809        case 5: {
1810          $t10_11 = $t2_3.addr($t8_9);
1811          $t11_12 = $t10_11.$get();
1812          $t12_13 = { $value: { recipient: '', content: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
1813          $t12_13.$set($rt.builtin.cloneValue($t11_12));
1814          $t13_14 = common$jsbridge$sw.NowSeconds();
1815          $t14_15 = { $get() { return $t12_13.$get().recipient; }, $set(v) { const obj = $t12_13.$get(); obj.recipient = v; $t12_13.$set(obj); } };
1816          $t15_16 = $t14_15.$get();
1817          $t16_17 = myPubkey.$get();
1818          $t17_18 = { $get() { return $t12_13.$get().content; }, $set(v) { const obj = $t12_13.$get(); obj.content = v; $t12_13.$set(obj); } };
1819          $t18_19 = $t17_18.$get();
1820          $t19_20 = makeDMRecord($t15_16, $t16_17, $t18_19, $t13_14, 'marmot', '');
1821          $t20_21 = DMRecord$ToJSON($t19_20);
1822          $t21_22 = ('["SAVE_DM_QUIET",' + $t20_21);
1823          $t22_23 = ($t21_22 + ']');
1824          $t23_24 = busSend('relay', $t22_23);
1825          $t7_8 = $t8_9;
1826          $block = 4; break;
1827          break;
1828        }
1829        case 6: {
1830          pendingSentDMs.$set(null);
1831          return;
1832          break;
1833        }
1834      }
1835    }
1836  }
1837  
1838  export function routeMessage(clientID, w, msgType) {
1839    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, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114, $t114_115, $t115_116, $t116_117, $t117_118, $t118_119, $t119_120, $t120_121, $t121_122, $t122_123, $t123_124, $t124_125, $t125_126, $t126_127, $t127_128, $t128_129, $t129_130, $t130_131, $t131_132, $t132_133, $t133_134, $t134_135, $t135_136, $t136_137, $t137_138, $t138_139, $t139_140, $t140_141, $t141_142, $t142_143, $t143_144, $t144_145, $t145_146, $t146_147, $t147_148, $t148_149, $t149_150, $t150_151, $t151_152, $t152_153, $t153_154, $t154_155, $t155_156, $t156_157, $t157_158, $t158_159, $t159_160, $t160_161, $t161_162, $t162_163, $t163_164, $t164_165, $t165_166, $t166_167, $t167_168, $t168_169, $t169_170, $t170_171, $t171_172, $t172_173, $t173_174, $t174_175, $t175_176, $t176_177, $t177_178, $t178_179, $t179_180, $t180_181, $t181_182, $t182_183, $t183_184, $t184_185, $t185_186, $t186_187, $t187_188, $t188_189, $t189_190, $t190_191, $t191_192, $t192_193, $t193_194, $t194_195, $t195_196, $t196_197, $t197_198, $t198_199, $t199_200, $t200_201, $t201_202, $t202_203, $t203_204, $t204_205, $t205_206, $t206_207, $t207_208, $t208_209, $t209_210, $t210_211, $t211_212, $t212_213, $t213_214, $t214_215, $t215_216, $t216_217, $t217_218, $t218_219, $t219_220, $t220_221, $t221_222, $t222_223, $t223_224, $t224_225, $t225_226, $t226_227, $t227_228, $t228_229, $t229_230, $t230_231, $t231_232, $t232_233, $t233_234, $t234_235, $t235_236, $t236_237, $t237_238, $t238_239, $t239_240, $t240_241, $t241_242, $t242_243, $t243_244, $t244_245, $t245_246, $t246_247, $t247_248, $t248_249, $t249_250, $t250_251, $t251_252, $t252_253, $t253_254, $t254_255, $t255_256, $t256_257, $t257_258, $t258_259, $t259_260, $t260_261, $t261_262, $t262_263;
1840    let $block = 0;
1841    while (true) {
1842      switch ($block) {
1843        case 0: {
1844          $t0_1 = ('shell: page→' + msgType);
1845          $t1_2 = common$jsbridge$sw.Log($t0_1);
1846          $t2_3 = (msgType === 'SET_PUBKEY');
1847          if ($t2_3) {
1848            $block = 2; break;
1849          }
1850          else {
1851            $block = 4; break;
1852          }
1853          break;
1854        }
1855        case 1: {
1856          return;
1857          break;
1858        }
1859        case 2: {
1860          $t3_4 = mw$str(w);
1861          $t4_5 = identitySetPubkey($t3_4);
1862          $t5_6 = jstr($t3_4);
1863          $t6_7 = ('["SET_PUBKEY",' + $t5_6);
1864          $t7_8 = ($t6_7 + ']');
1865          $t8_9 = busSend('relay', $t7_8);
1866          $t9_10 = flushPendingSentDMs();
1867          $block = 1; break;
1868          break;
1869        }
1870        case 3: {
1871          $t10_11 = identityClearKey();
1872          $t11_12 = busSend('relay', '["CLEAR_KEY"]');
1873          $block = 1; break;
1874          break;
1875        }
1876        case 4: {
1877          $t12_13 = (msgType === 'CLEAR_KEY');
1878          if ($t12_13) {
1879            $block = 3; break;
1880          }
1881          else {
1882            $block = 6; break;
1883          }
1884          break;
1885        }
1886        case 5: {
1887          $t13_14 = mw$str(w);
1888          $t14_15 = mw$raw(w);
1889          $t15_16 = jstr(clientID);
1890          $t16_17 = ('["REQ",' + $t15_16);
1891          $t17_18 = ($t16_17 + ',');
1892          $t18_19 = jstr($t13_14);
1893          $t19_20 = ($t17_18 + $t18_19);
1894          $t20_21 = ($t19_20 + ',');
1895          $t21_22 = ($t20_21 + $t14_15);
1896          $t22_23 = ($t21_22 + ']');
1897          $t23_24 = busSend('relay', $t22_23);
1898          $block = 1; break;
1899          break;
1900        }
1901        case 6: {
1902          $t24_25 = (msgType === 'REQ');
1903          if ($t24_25) {
1904            $block = 5; break;
1905          }
1906          else {
1907            $block = 8; break;
1908          }
1909          break;
1910        }
1911        case 7: {
1912          $t25_26 = mw$str(w);
1913          $t26_27 = jstr($t25_26);
1914          $t27_28 = ('["CLOSE",' + $t26_27);
1915          $t28_29 = ($t27_28 + ']');
1916          $t29_30 = busSend('relay', $t28_29);
1917          $block = 1; break;
1918          break;
1919        }
1920        case 8: {
1921          $t30_31 = (msgType === 'CLOSE');
1922          if ($t30_31) {
1923            $block = 7; break;
1924          }
1925          else {
1926            $block = 10; break;
1927          }
1928          break;
1929        }
1930        case 9: {
1931          $t31_32 = mw$raw(w);
1932          $t32_33 = jstr(clientID);
1933          $t33_34 = ('["EVENT",' + $t32_33);
1934          $t34_35 = ($t33_34 + ',');
1935          $t35_36 = ($t34_35 + $t31_32);
1936          $t36_37 = ($t35_36 + ']');
1937          $t37_38 = busSend('relay', $t36_37);
1938          $block = 1; break;
1939          break;
1940        }
1941        case 10: {
1942          $t38_39 = (msgType === 'EVENT');
1943          if ($t38_39) {
1944            $block = 9; break;
1945          }
1946          else {
1947            $block = 12; break;
1948          }
1949          break;
1950        }
1951        case 11: {
1952          $t39_40 = mw$str(w);
1953          $t40_41 = mw$raw(w);
1954          $t41_42 = mw$strs(w);
1955          $t42_43 = jstr(clientID);
1956          $t43_44 = ('["PROXY",' + $t42_43);
1957          $t44_45 = ($t43_44 + ',');
1958          $t45_46 = jstr($t39_40);
1959          $t46_47 = ($t44_45 + $t45_46);
1960          $t47_48 = ($t46_47 + ',');
1961          $t48_49 = ($t47_48 + $t40_41);
1962          $t49_50 = ($t48_49 + ',');
1963          $t50_51 = strsJSON($t41_42);
1964          $t51_52 = ($t49_50 + $t50_51);
1965          $t52_53 = ($t51_52 + ']');
1966          $t53_54 = busSend('relay', $t52_53);
1967          $block = 1; break;
1968          break;
1969        }
1970        case 12: {
1971          $t54_55 = (msgType === 'PROXY');
1972          if ($t54_55) {
1973            $block = 11; break;
1974          }
1975          else {
1976            $block = 14; break;
1977          }
1978          break;
1979        }
1980        case 13: {
1981          $t55_56 = mw$str(w);
1982          $t56_57 = jstr(clientID);
1983          $t57_58 = ('["RELAY_INFO",' + $t56_57);
1984          $t58_59 = ($t57_58 + ',');
1985          $t59_60 = jstr($t55_56);
1986          $t60_61 = ($t58_59 + $t59_60);
1987          $t61_62 = ($t60_61 + ']');
1988          $t62_63 = busSend('relay', $t61_62);
1989          $block = 1; break;
1990          break;
1991        }
1992        case 14: {
1993          $t63_64 = (msgType === 'RELAY_INFO');
1994          if ($t63_64) {
1995            $block = 13; break;
1996          }
1997          else {
1998            $block = 16; break;
1999          }
2000          break;
2001        }
2002        case 15: {
2003          $t64_65 = mw$strs(w);
2004          $t65_66 = strsJSON($t64_65);
2005          $t66_67 = ('["SET_WRITE_RELAYS",' + $t65_66);
2006          $t67_68 = ($t66_67 + ']');
2007          $t68_69 = busSend('relay', $t67_68);
2008          $block = 1; break;
2009          break;
2010        }
2011        case 16: {
2012          $t69_70 = (msgType === 'SET_WRITE_RELAYS');
2013          if ($t69_70) {
2014            $block = 15; break;
2015          }
2016          else {
2017            $block = 18; break;
2018          }
2019          break;
2020        }
2021        case 17: {
2022          $t70_71 = mw$str(w);
2023          $t71_72 = mw$raw(w);
2024          $t72_73 = jstr(clientID);
2025          $t73_74 = ('["SIGN",' + $t72_73);
2026          $t74_75 = ($t73_74 + ',');
2027          $t75_76 = jstr($t70_71);
2028          $t76_77 = ($t74_75 + $t75_76);
2029          $t77_78 = ($t76_77 + ',');
2030          $t78_79 = ($t77_78 + $t71_72);
2031          $t79_80 = ($t78_79 + ']');
2032          $t80_81 = busSend('relay', $t79_80);
2033          $block = 1; break;
2034          break;
2035        }
2036        case 18: {
2037          $t81_82 = (msgType === 'SIGN');
2038          if ($t81_82) {
2039            $block = 17; break;
2040          }
2041          else {
2042            $block = 20; break;
2043          }
2044          break;
2045        }
2046        case 19: {
2047          $t82_83 = mw$str(w);
2048          $t83_84 = mw$strs(w);
2049          $t84_85 = jstr(clientID);
2050          $t85_86 = ('["BROADCAST",' + $t84_85);
2051          $t86_87 = ($t85_86 + ',');
2052          $t87_88 = jstr($t82_83);
2053          $t88_89 = ($t86_87 + $t87_88);
2054          $t89_90 = ($t88_89 + ',');
2055          $t90_91 = strsJSON($t83_84);
2056          $t91_92 = ($t89_90 + $t90_91);
2057          $t92_93 = ($t91_92 + ']');
2058          $t93_94 = busSend('relay', $t92_93);
2059          $block = 1; break;
2060          break;
2061        }
2062        case 20: {
2063          $t94_95 = (msgType === 'BROADCAST');
2064          if ($t94_95) {
2065            $block = 19; break;
2066          }
2067          else {
2068            $block = 22; break;
2069          }
2070          break;
2071        }
2072        case 21: {
2073          $t95_96 = jstr(clientID);
2074          $t96_97 = ('["DM_LIST",' + $t95_96);
2075          $t97_98 = ($t96_97 + ']');
2076          $t98_99 = busSend('relay', $t97_98);
2077          $block = 1; break;
2078          break;
2079        }
2080        case 22: {
2081          $t99_100 = (msgType === 'DM_LIST');
2082          if ($t99_100) {
2083            $block = 21; break;
2084          }
2085          else {
2086            $block = 24; break;
2087          }
2088          break;
2089        }
2090        case 23: {
2091          $t100_101 = mw$str(w);
2092          $t101_102 = mw$num(w);
2093          $t102_103 = $t101_102;
2094          $t103_104 = mw$num(w);
2095          $t104_105 = jstr(clientID);
2096          $t105_106 = ('["DM_HISTORY",' + $t104_105);
2097          $t106_107 = ($t105_106 + ',');
2098          $t107_108 = jstr($t100_101);
2099          $t108_109 = ($t106_107 + $t107_108);
2100          $t109_110 = ($t108_109 + ',');
2101          $t110_111 = $t102_103;
2102          $t111_112 = common$helpers.Itoa($t110_111);
2103          $t112_113 = ($t109_110 + $t111_112);
2104          $t113_114 = ($t112_113 + ',');
2105          $t114_115 = common$helpers.Itoa($t103_104);
2106          $t115_116 = ($t113_114 + $t114_115);
2107          $t116_117 = ($t115_116 + ']');
2108          $t117_118 = busSend('relay', $t116_117);
2109          $block = 1; break;
2110          break;
2111        }
2112        case 24: {
2113          $t118_119 = (msgType === 'DM_HISTORY');
2114          if ($t118_119) {
2115            $block = 23; break;
2116          }
2117          else {
2118            $block = 26; break;
2119          }
2120          break;
2121        }
2122        case 25: {
2123          $t119_120 = mw$str(w);
2124          $t120_121 = jstr($t119_120);
2125          $t121_122 = ('["CLEAR_DM_HISTORY",' + $t120_121);
2126          $t122_123 = ($t121_122 + ']');
2127          $t123_124 = busSend('relay', $t122_123);
2128          $block = 1; break;
2129          break;
2130        }
2131        case 26: {
2132          $t124_125 = (msgType === 'CLEAR_DM_HISTORY');
2133          if ($t124_125) {
2134            $block = 25; break;
2135          }
2136          else {
2137            $block = 28; break;
2138          }
2139          break;
2140        }
2141        case 27: {
2142          $t125_126 = mw$strs(w);
2143          mlsRelays.$set($t125_126);
2144          $t126_127 = strsJSON($t125_126);
2145          $t127_128 = ('["MLS_PROXY","init",' + $t126_127);
2146          $t128_129 = ($t127_128 + ']');
2147          $t129_130 = sendToClient(clientID, $t128_129);
2148          $block = 1; break;
2149          break;
2150        }
2151        case 28: {
2152          $t130_131 = (msgType === 'MLS_INIT');
2153          if ($t130_131) {
2154            $block = 27; break;
2155          }
2156          else {
2157            $block = 30; break;
2158          }
2159          break;
2160        }
2161        case 29: {
2162          $t131_132 = mw$str(w);
2163          $t132_133 = mw$str(w);
2164          $t133_134 = markSentDM($t131_132, $t132_133);
2165          $t134_135 = jstr($t131_132);
2166          $t135_136 = ('["MLS_PROXY","sendDM",' + $t134_135);
2167          $t136_137 = ($t135_136 + ',');
2168          $t137_138 = jstr($t132_133);
2169          $t138_139 = ($t136_137 + $t137_138);
2170          $t139_140 = ($t138_139 + ']');
2171          $t140_141 = sendToClient(clientID, $t139_140);
2172          $t141_142 = myPubkey.$get();
2173          $t142_143 = ($t141_142 === '');
2174          if ($t142_143) {
2175            $block = 33; break;
2176          }
2177          else {
2178            $block = 34; break;
2179          }
2180          break;
2181        }
2182        case 30: {
2183          $t143_144 = (msgType === 'MLS_SEND');
2184          if ($t143_144) {
2185            $block = 29; break;
2186          }
2187          else {
2188            $block = 32; break;
2189          }
2190          break;
2191        }
2192        case 31: {
2193          $t144_145 = sendToClient(clientID, '["MLS_PROXY","subscribe"]');
2194          $block = 1; break;
2195          break;
2196        }
2197        case 32: {
2198          $t145_146 = (msgType === 'MLS_SUB');
2199          if ($t145_146) {
2200            $block = 31; break;
2201          }
2202          else {
2203            $block = 36; break;
2204          }
2205          break;
2206        }
2207        case 33: {
2208          $t146_147 = pendingSentDMs.$get();
2209          $t147_148 = { $value: { recipient: '', content: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2210          $t148_149 = { $get() { return $t147_148.$get().recipient; }, $set(v) { const obj = $t147_148.$get(); obj.recipient = v; $t147_148.$set(obj); } };
2211          $t149_150 = { $get() { return $t147_148.$get().content; }, $set(v) { const obj = $t147_148.$get(); obj.content = v; $t147_148.$set(obj); } };
2212          $t148_149.$set($t131_132);
2213          $t149_150.$set($t132_133);
2214          $t150_151 = $t147_148.$get();
2215          $t151_152 = { $value: $rt.builtin.makeSlice(1, 1, { recipient: '', content: '' }), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2216          $t152_153 = $t151_152.$get().addr(0);
2217          $t152_153.$set($rt.builtin.cloneValue($t150_151));
2218          $t153_154 = $rt.builtin.sliceSlice($t151_152.$get(), undefined, undefined, undefined);
2219          $t154_155 = $rt.builtin.appendSlice($t146_147, $t153_154);
2220          pendingSentDMs.$set($t154_155);
2221          $block = 1; break;
2222          break;
2223        }
2224        case 34: {
2225          $t155_156 = common$jsbridge$sw.NowSeconds();
2226          $t156_157 = myPubkey.$get();
2227          $t157_158 = makeDMRecord($t131_132, $t156_157, $t132_133, $t155_156, 'marmot', '');
2228          $t158_159 = DMRecord$ToJSON($t157_158);
2229          $t159_160 = ('["SAVE_DM_QUIET",' + $t158_159);
2230          $t160_161 = ($t159_160 + ']');
2231          $t161_162 = busSend('relay', $t160_161);
2232          $block = 1; break;
2233          break;
2234        }
2235        case 35: {
2236          $t162_163 = sendToClient(clientID, '["MLS_PROXY","publishKP"]');
2237          $block = 1; break;
2238          break;
2239        }
2240        case 36: {
2241          $t163_164 = (msgType === 'MLS_PUBLISH_KP');
2242          if ($t163_164) {
2243            $block = 35; break;
2244          }
2245          else {
2246            $block = 38; break;
2247          }
2248          break;
2249        }
2250        case 37: {
2251          $t164_165 = sendToClient(clientID, '["MLS_PROXY","listGroups"]');
2252          $block = 1; break;
2253          break;
2254        }
2255        case 38: {
2256          $t165_166 = (msgType === 'MLS_LIST_GROUPS');
2257          if ($t165_166) {
2258            $block = 37; break;
2259          }
2260          else {
2261            $block = 40; break;
2262          }
2263          break;
2264        }
2265        case 39: {
2266          $t166_167 = sendToClient(clientID, '["MLS_PROXY","backupGroups"]');
2267          $block = 1; break;
2268          break;
2269        }
2270        case 40: {
2271          $t167_168 = (msgType === 'MLS_BACKUP');
2272          if ($t167_168) {
2273            $block = 39; break;
2274          }
2275          else {
2276            $block = 42; break;
2277          }
2278          break;
2279        }
2280        case 41: {
2281          $t168_169 = sendToClient(clientID, '["MLS_PROXY","restoreGroups"]');
2282          $block = 1; break;
2283          break;
2284        }
2285        case 42: {
2286          $t169_170 = (msgType === 'MLS_RESTORE');
2287          if ($t169_170) {
2288            $block = 41; break;
2289          }
2290          else {
2291            $block = 44; break;
2292          }
2293          break;
2294        }
2295        case 43: {
2296          $t170_171 = mw$str(w);
2297          $t171_172 = jstr($t170_171);
2298          $t172_173 = ('["MLS_PROXY","ratchetGroup",' + $t171_172);
2299          $t173_174 = ($t172_173 + ']');
2300          $t174_175 = sendToClient(clientID, $t173_174);
2301          $block = 1; break;
2302          break;
2303        }
2304        case 44: {
2305          $t175_176 = (msgType === 'MLS_RATCHET');
2306          if ($t175_176) {
2307            $block = 43; break;
2308          }
2309          else {
2310            $block = 46; break;
2311          }
2312          break;
2313        }
2314        case 45: {
2315          $t176_177 = mw$str(w);
2316          $t177_178 = mw$strs(w);
2317          $t178_179 = $rt.builtin.len($t177_178);
2318          $t179_180 = ($t178_179 === 0);
2319          if ($t179_180) {
2320            $block = 49; break;
2321          }
2322          else {
2323            $t188_189 = $t177_178;
2324            $block = 50; break;
2325          }
2326          break;
2327        }
2328        case 46: {
2329          $t180_181 = (msgType === 'MLS_PUBLISH');
2330          if ($t180_181) {
2331            $block = 45; break;
2332          }
2333          else {
2334            $block = 48; break;
2335          }
2336          break;
2337        }
2338        case 47: {
2339          $t181_182 = mw$str(w);
2340          $t182_183 = mw$raw(w);
2341          $t183_184 = mw$strs(w);
2342          $t184_185 = $rt.builtin.len($t183_184);
2343          $t185_186 = ($t184_185 === 0);
2344          if ($t185_186) {
2345            $block = 55; break;
2346          }
2347          else {
2348            $t207_208 = $t183_184;
2349            $block = 56; break;
2350          }
2351          break;
2352        }
2353        case 48: {
2354          $t186_187 = (msgType === 'MLS_SUBSCRIBE');
2355          if ($t186_187) {
2356            $block = 47; break;
2357          }
2358          else {
2359            $block = 54; break;
2360          }
2361          break;
2362        }
2363        case 49: {
2364          $t187_188 = mlsRelays.$get();
2365          $t188_189 = $t187_188;
2366          $block = 50; break;
2367          break;
2368        }
2369        case 50: {
2370          $t189_190 = $rt.builtin.len($t188_189);
2371          $t190_191 = ($t189_190 > 0);
2372          if ($t190_191) {
2373            $block = 51; break;
2374          }
2375          else {
2376            $block = 52; break;
2377          }
2378          break;
2379        }
2380        case 51: {
2381          $t191_192 = ('["MLS_RELAY_PUBLISH",' + $t176_177);
2382          $t192_193 = ($t191_192 + ',');
2383          $t193_194 = strsJSON($t188_189);
2384          $t194_195 = ($t192_193 + $t193_194);
2385          $t195_196 = ($t194_195 + ']');
2386          $t196_197 = busSend('relay', $t195_196);
2387          $block = 1; break;
2388          break;
2389        }
2390        case 52: {
2391          $t197_198 = ('["EVENT","",' + $t176_177);
2392          $t198_199 = ($t197_198 + ']');
2393          $t199_200 = busSend('relay', $t198_199);
2394          $block = 1; break;
2395          break;
2396        }
2397        case 53: {
2398          $t200_201 = mw$raw(w);
2399          $t201_202 = jsonField($t200_201, 'peer');
2400          $t202_203 = jsonField($t200_201, 'sender');
2401          $t203_204 = jsonField($t200_201, 'content');
2402          $t204_205 = isSentDMEcho($t201_202, $t203_204);
2403          if ($t204_205) {
2404            $block = 63; break;
2405          }
2406          else {
2407            $block = 64; break;
2408          }
2409          break;
2410        }
2411        case 54: {
2412          $t205_206 = (msgType === 'MLS_DM');
2413          if ($t205_206) {
2414            $block = 53; break;
2415          }
2416          else {
2417            $block = 62; break;
2418          }
2419          break;
2420        }
2421        case 55: {
2422          $t206_207 = mlsRelays.$get();
2423          $t207_208 = $t206_207;
2424          $block = 56; break;
2425          break;
2426        }
2427        case 56: {
2428          $t208_209 = ('marmot-sub-' + $t181_182);
2429          $t209_210 = marmotSubs.$get();
2430          $t210_211 = ($t209_210 === null);
2431          if ($t210_211) {
2432            $block = 57; break;
2433          }
2434          else {
2435            $block = 58; break;
2436          }
2437          break;
2438        }
2439        case 57: {
2440          $t211_212 = $rt.builtin.makeMap('string');
2441          marmotSubs.$set($t211_212);
2442          $block = 58; break;
2443          break;
2444        }
2445        case 58: {
2446          $t212_213 = marmotSubs.$get();
2447          $rt.builtin.mapUpdate($t212_213, $t208_209, true);
2448          $t213_214 = $rt.builtin.len($t207_208);
2449          $t214_215 = ($t213_214 > 0);
2450          if ($t214_215) {
2451            $block = 59; break;
2452          }
2453          else {
2454            $block = 60; break;
2455          }
2456          break;
2457        }
2458        case 59: {
2459          $t215_216 = jstr($t208_209);
2460          $t216_217 = ('["PROXY","",' + $t215_216);
2461          $t217_218 = ($t216_217 + ',');
2462          $t218_219 = ($t217_218 + $t182_183);
2463          $t219_220 = ($t218_219 + ',');
2464          $t220_221 = strsJSON($t207_208);
2465          $t221_222 = ($t219_220 + $t220_221);
2466          $t222_223 = ($t221_222 + ']');
2467          $t223_224 = busSend('relay', $t222_223);
2468          $block = 1; break;
2469          break;
2470        }
2471        case 60: {
2472          $t224_225 = jstr($t208_209);
2473          $t225_226 = ('["REQ","",' + $t224_225);
2474          $t226_227 = ($t225_226 + ',');
2475          $t227_228 = ($t226_227 + $t182_183);
2476          $t228_229 = ($t227_228 + ']');
2477          $t229_230 = busSend('relay', $t228_229);
2478          $block = 1; break;
2479          break;
2480        }
2481        case 61: {
2482          $t230_231 = mw$raw(w);
2483          $t231_232 = ('["MLS_GROUPS",' + $t230_231);
2484          $t232_233 = ($t231_232 + ']');
2485          $t233_234 = broadcastToClients($t232_233);
2486          $block = 1; break;
2487          break;
2488        }
2489        case 62: {
2490          $t234_235 = (msgType === 'MLS_GROUPS');
2491          if ($t234_235) {
2492            $block = 61; break;
2493          }
2494          else {
2495            $block = 66; break;
2496          }
2497          break;
2498        }
2499        case 63: {
2500          return;
2501          break;
2502        }
2503        case 64: {
2504          $t235_236 = jsonFieldRaw($t200_201, 'ts');
2505          $t236_237 = parseTS($t235_236);
2506          $t237_238 = jsonField($t200_201, 'source');
2507          $t238_239 = jsonField($t200_201, 'eventId');
2508          $t239_240 = makeDMRecord($t201_202, $t202_203, $t203_204, $t236_237, $t237_238, $t238_239);
2509          $t240_241 = DMRecord$ToJSON($t239_240);
2510          $t241_242 = ('["SAVE_DM_QUIET",' + $t240_241);
2511          $t242_243 = ($t241_242 + ']');
2512          $t243_244 = busSend('relay', $t242_243);
2513          $t244_245 = fwdDM($t240_241);
2514          $block = 1; break;
2515          break;
2516        }
2517        case 65: {
2518          $t245_246 = mw$str(w);
2519          $t246_247 = jstr($t245_246);
2520          $t247_248 = ('["MLS_STATUS",' + $t246_247);
2521          $t248_249 = ($t247_248 + ']');
2522          $t249_250 = broadcastToClients($t248_249);
2523          $block = 1; break;
2524          break;
2525        }
2526        case 66: {
2527          $t250_251 = (msgType === 'MLS_STATUS');
2528          if ($t250_251) {
2529            $block = 65; break;
2530          }
2531          else {
2532            $block = 68; break;
2533          }
2534          break;
2535        }
2536        case 67: {
2537          $t251_252 = mw$num(w);
2538          $t252_253 = $t251_252;
2539          $t253_254 = mw$str(w);
2540          $t254_255 = mw$str(w);
2541          $t255_256 = cryptoCBs.$get();
2542          { const $r = $rt.builtin.mapLookup($t255_256, $t252_253); $t256_257 = [$r.value, $r.ok]; }
2543          $t257_258 = $t256_257[0];
2544          $t258_259 = $t256_257[1];
2545          if ($t258_259) {
2546            $block = 69; break;
2547          }
2548          else {
2549            $block = 1; break;
2550          }
2551          break;
2552        }
2553        case 68: {
2554          $t259_260 = (msgType === 'CRYPTO_RESULT');
2555          if ($t259_260) {
2556            $block = 67; break;
2557          }
2558          else {
2559            $block = 1; break;
2560          }
2561          break;
2562        }
2563        case 69: {
2564          $t260_261 = cryptoCBs.$get();
2565          $t261_262 = $rt.builtin.mapDelete($t260_261, $t252_253);
2566          $t262_263 = $t257_258($t253_254, $t254_255);
2567          $block = 1; break;
2568          break;
2569        }
2570      }
2571    }
2572  }
2573  
2574  export function fwdDM(dmJSON) {
2575    let $t0_1, $t1_2, $t2_3;
2576    $t0_1 = ('["DM_RECEIVED",' + dmJSON);
2577    $t1_2 = ($t0_1 + ']');
2578    $t2_3 = broadcastToClients($t1_2);
2579    return;
2580  }
2581  
2582  export function makeDMRecord(peer, from, content, createdAt, protocol, eventID) {
2583    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
2584    $t0_1 = { $value: { ID: '', Peer: '', From: '', Content: '', CreatedAt: 0, Protocol: '', EventID: '' }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2585    $t1_2 = { $get() { return $t0_1.$get().ID; }, $set(v) { const obj = $t0_1.$get(); obj.ID = v; $t0_1.$set(obj); } };
2586    $t2_3 = dmDedupID(peer, content, createdAt);
2587    $t3_4 = { $get() { return $t0_1.$get().Peer; }, $set(v) { const obj = $t0_1.$get(); obj.Peer = v; $t0_1.$set(obj); } };
2588    $t4_5 = { $get() { return $t0_1.$get().From; }, $set(v) { const obj = $t0_1.$get(); obj.From = v; $t0_1.$set(obj); } };
2589    $t5_6 = { $get() { return $t0_1.$get().Content; }, $set(v) { const obj = $t0_1.$get(); obj.Content = v; $t0_1.$set(obj); } };
2590    $t6_7 = { $get() { return $t0_1.$get().CreatedAt; }, $set(v) { const obj = $t0_1.$get(); obj.CreatedAt = v; $t0_1.$set(obj); } };
2591    $t7_8 = { $get() { return $t0_1.$get().Protocol; }, $set(v) { const obj = $t0_1.$get(); obj.Protocol = v; $t0_1.$set(obj); } };
2592    $t8_9 = { $get() { return $t0_1.$get().EventID; }, $set(v) { const obj = $t0_1.$get(); obj.EventID = v; $t0_1.$set(obj); } };
2593    $t1_2.$set($t2_3);
2594    $t3_4.$set(peer);
2595    $t4_5.$set(from);
2596    $t5_6.$set(content);
2597    $t6_7.$set(createdAt);
2598    $t7_8.$set(protocol);
2599    $t8_9.$set(eventID);
2600    return $t0_1;
2601  }
2602  
2603  export function dmDedupID(peer, content, createdAt) {
2604    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;
2605    $t0_1 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2606    $t1_2 = $rt.builtin.stringToBytes(content);
2607    $t2_3 = common$crypto$sha256.Sum($t1_2);
2608    $t0_1.$set($rt.builtin.cloneValue($t2_3));
2609    $t3_4 = Math.trunc(createdAt / 300);
2610    $t4_5 = common$helpers.Itoa($t3_4);
2611    $t5_6 = { $value: $rt.builtin.makeSlice(32, 32, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
2612    $t6_7 = $rt.builtin.sliceSlice($t0_1.$get(), undefined, undefined, undefined);
2613    $t7_8 = common$helpers.HexEncode($t6_7);
2614    $t8_9 = (peer + $t7_8);
2615    $t9_10 = ($t8_9 + $t4_5);
2616    $t10_11 = $rt.builtin.stringToBytes($t9_10);
2617    $t11_12 = common$crypto$sha256.Sum($t10_11);
2618    $t5_6.$set($rt.builtin.cloneValue($t11_12));
2619    $t12_13 = $rt.builtin.sliceSlice($t5_6.$get(), undefined, undefined, undefined);
2620    $t13_14 = common$helpers.HexEncode($t12_13);
2621    return $t13_14;
2622  }
2623  
2624  export function main() {
2625    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
2626    $t0_1 = initSharedState();
2627    $t1_2 = common$jsbridge$sw.OnInstall(onInstall);
2628    $t2_3 = common$jsbridge$sw.OnActivate(onActivate);
2629    $t3_4 = common$jsbridge$sw.OnFetch(onFetch);
2630    $t4_5 = common$jsbridge$sw.OnMessage(onMessage);
2631    $t5_6 = connectSSE();
2632    $t6_7 = connectBus();
2633    return;
2634  }
2635  
2636  export function onInstall(event) {
2637    let $t0_1;
2638    $t0_1 = common$jsbridge$sw.WaitUntil(event, onInstall$1);
2639    return;
2640  }
2641  
2642  function onInstall$1(done) {
2643    let $t0_1, $t1_2;
2644    $t0_1 = common$jsbridge$sw.SkipWaiting();
2645    $t1_2 = done();
2646    return;
2647  }
2648  
2649  export function onActivate(event) {
2650    let $t0_1;
2651    $t0_1 = common$jsbridge$sw.WaitUntil(event, onActivate$1);
2652    return;
2653  }
2654  
2655  function onActivate$1(done) {
2656    let $t0_1, $t1_2, $t2_3;
2657    $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2658    $t0_1.$set(done);
2659    $t1_2 = onActivate$1$1.bind(null, $t0_1);
2660    $t2_3 = common$jsbridge$sw.CacheDelete('sm3sh', $t1_2);
2661    return;
2662  }
2663  
2664  function onActivate$1$1(done) {
2665    let $t0_1, $t1_2;
2666    $t0_1 = onActivate$1$1$1.bind(null, done);
2667    $t1_2 = common$jsbridge$sw.ClaimClients($t0_1);
2668    return;
2669  }
2670  
2671  function onActivate$1$1$1(done) {
2672    let $t0_1, $t1_2;
2673    $t0_1 = done.$get();
2674    $t1_2 = $t0_1();
2675    return;
2676  }
2677  
2678  export function onFetch(event) {
2679    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;
2680    let $block = 0;
2681    while (true) {
2682      switch ($block) {
2683        case 0: {
2684          $t0_1 = common$jsbridge$sw.GetRequestURL(event);
2685          $t1_2 = common$jsbridge$sw.Origin();
2686          $t2_3 = $rt.builtin.len($t0_1);
2687          $t3_4 = $rt.builtin.len($t1_2);
2688          $t4_5 = ($t2_3 < $t3_4);
2689          if ($t4_5) {
2690            $block = 1; break;
2691          }
2692          else {
2693            $block = 3; break;
2694          }
2695          break;
2696        }
2697        case 1: {
2698          return;
2699          break;
2700        }
2701        case 2: {
2702          $t5_6 = common$jsbridge$sw.GetRequestPath(event);
2703          $t6_7 = ($t5_6 === '/__sse');
2704          if ($t6_7) {
2705            $block = 4; break;
2706          }
2707          else {
2708            $block = 6; break;
2709          }
2710          break;
2711        }
2712        case 3: {
2713          $t7_8 = $rt.builtin.len($t1_2);
2714          $t8_9 = $rt.builtin.stringSlice($t0_1, undefined, $t7_8);
2715          $t9_10 = ($t8_9 !== $t1_2);
2716          if ($t9_10) {
2717            $block = 1; break;
2718          }
2719          else {
2720            $block = 2; break;
2721          }
2722          break;
2723        }
2724        case 4: {
2725          return;
2726          break;
2727        }
2728        case 5: {
2729          $t10_11 = $rt.builtin.len($t5_6);
2730          $t11_12 = ($t10_11 > 4);
2731          if ($t11_12) {
2732            $block = 10; break;
2733          }
2734          else {
2735            $block = 9; break;
2736          }
2737          break;
2738        }
2739        case 6: {
2740          $t12_13 = ($t5_6 === '/__version');
2741          if ($t12_13) {
2742            $block = 4; break;
2743          }
2744          else {
2745            $block = 5; break;
2746          }
2747          break;
2748        }
2749        case 7: {
2750          return;
2751          break;
2752        }
2753        case 8: {
2754          $t13_14 = common$jsbridge$sw.RespondWithCacheFirst(event);
2755          return;
2756          break;
2757        }
2758        case 9: {
2759          $t14_15 = $rt.builtin.len($t5_6);
2760          $t15_16 = ($t14_15 > 6);
2761          if ($t15_16) {
2762            $block = 11; break;
2763          }
2764          else {
2765            $block = 8; break;
2766          }
2767          break;
2768        }
2769        case 10: {
2770          $t16_17 = $rt.builtin.stringSlice($t5_6, undefined, 4);
2771          $t17_18 = ($t16_17 === '/$sw');
2772          if ($t17_18) {
2773            $block = 7; break;
2774          }
2775          else {
2776            $block = 9; break;
2777          }
2778          break;
2779        }
2780        case 11: {
2781          $t18_19 = $rt.builtin.stringSlice($t5_6, undefined, 7);
2782          $t19_20 = ($t18_19 === '/fonts/');
2783          if ($t19_20) {
2784            $block = 7; break;
2785          }
2786          else {
2787            $block = 8; break;
2788          }
2789          break;
2790        }
2791      }
2792    }
2793  }
2794  
2795  export function onMessage(event) {
2796    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;
2797    let $block = 0;
2798    while (true) {
2799      switch ($block) {
2800        case 0: {
2801          $t0_1 = common$jsbridge$sw.GetMessageData(event);
2802          $t1_2 = common$jsbridge$sw.GetMessageClientID(event);
2803          $t2_3 = ($t0_1 === 'activate-update');
2804          if ($t2_3) {
2805            $block = 1; break;
2806          }
2807          else {
2808            $block = 2; break;
2809          }
2810          break;
2811        }
2812        case 1: {
2813          $t3_4 = fullRefresh();
2814          return;
2815          break;
2816        }
2817        case 2: {
2818          $t4_5 = ($t0_1 === 'CLAIM');
2819          if ($t4_5) {
2820            $block = 3; break;
2821          }
2822          else {
2823            $block = 4; break;
2824          }
2825          break;
2826        }
2827        case 3: {
2828          $t5_6 = common$jsbridge$sw.ClaimClients(onMessage$1);
2829          return;
2830          break;
2831        }
2832        case 4: {
2833          $t6_7 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2834          $t7_8 = newMW($t0_1);
2835          $t6_7.$set($rt.builtin.cloneValue($t7_8));
2836          $t8_9 = mw$str($t6_7);
2837          $t9_10 = ($t8_9 === 'SKIP_WAITING');
2838          if ($t9_10) {
2839            $block = 6; break;
2840          }
2841          else {
2842            $block = 7; break;
2843          }
2844          break;
2845        }
2846        case 5: {
2847          return;
2848          break;
2849        }
2850        case 6: {
2851          $t10_11 = common$jsbridge$sw.SkipWaiting();
2852          $block = 5; break;
2853          break;
2854        }
2855        case 7: {
2856          $t11_12 = routeMessage($t1_2, $t6_7, $t8_9);
2857          $block = 5; break;
2858          break;
2859        }
2860      }
2861    }
2862  }
2863  
2864  function onMessage$1() {
2865    return;
2866  }
2867  
2868  export function connectSSE() {
2869    let $t0_1;
2870    $t0_1 = common$jsbridge$sw.SSEConnect('/__sse', connectSSE$1);
2871    return;
2872  }
2873  
2874  function connectSSE$1(data) {
2875    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;
2876    let $block = 0;
2877    while (true) {
2878      switch ($block) {
2879        case 0: {
2880          $t0_1 = jsonFieldRaw(data, 'v');
2881          $t1_2 = ($t0_1 === '');
2882          if ($t1_2) {
2883            $block = 1; break;
2884          }
2885          else {
2886            $t2_3 = $t0_1;
2887            $block = 2; break;
2888          }
2889          break;
2890        }
2891        case 1: {
2892          $t2_3 = data;
2893          $block = 2; break;
2894          break;
2895        }
2896        case 2: {
2897          $t3_4 = ($t2_3 === '');
2898          if ($t3_4) {
2899            $block = 3; break;
2900          }
2901          else {
2902            $block = 4; break;
2903          }
2904          break;
2905        }
2906        case 3: {
2907          return;
2908          break;
2909        }
2910        case 4: {
2911          $t4_5 = currentVersion.$get();
2912          $t5_6 = ($t4_5 === '');
2913          if ($t5_6) {
2914            $block = 5; break;
2915          }
2916          else {
2917            $block = 6; break;
2918          }
2919          break;
2920        }
2921        case 5: {
2922          currentVersion.$set($t2_3);
2923          $t6_7 = populateCache();
2924          return;
2925          break;
2926        }
2927        case 6: {
2928          $t7_8 = currentVersion.$get();
2929          $t8_9 = ($t2_3 !== $t7_8);
2930          if ($t8_9) {
2931            $block = 9; break;
2932          }
2933          else {
2934            $block = 8; break;
2935          }
2936          break;
2937        }
2938        case 7: {
2939          currentVersion.$set($t2_3);
2940          refreshing.$set(true);
2941          $t9_10 = jsonFieldRaw(data, 'files');
2942          $t10_11 = ($t9_10 === '');
2943          if ($t10_11) {
2944            $block = 10; break;
2945          }
2946          else {
2947            $block = 11; break;
2948          }
2949          break;
2950        }
2951        case 8: {
2952          return;
2953          break;
2954        }
2955        case 9: {
2956          $t11_12 = refreshing.$get();
2957          if ($t11_12) {
2958            $block = 8; break;
2959          }
2960          else {
2961            $block = 7; break;
2962          }
2963          break;
2964        }
2965        case 10: {
2966          $t12_13 = fullRefresh();
2967          $block = 8; break;
2968          break;
2969        }
2970        case 11: {
2971          $t13_14 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
2972          $t14_15 = { $get() { return $t13_14.$get().s; }, $set(v) { const obj = $t13_14.$get(); obj.s = v; $t13_14.$set(obj); } };
2973          $t15_16 = { $get() { return $t13_14.$get().i; }, $set(v) { const obj = $t13_14.$get(); obj.i = v; $t13_14.$set(obj); } };
2974          $t14_15.$set($t9_10);
2975          $t15_16.$set(0);
2976          $t16_17 = mw$strs($t13_14);
2977          $t17_18 = $rt.builtin.len($t16_17);
2978          $t18_19 = ($t17_18 === 0);
2979          if ($t18_19) {
2980            $block = 12; break;
2981          }
2982          else {
2983            $block = 13; break;
2984          }
2985          break;
2986        }
2987        case 12: {
2988          $t19_20 = fullRefresh();
2989          $block = 8; break;
2990          break;
2991        }
2992        case 13: {
2993          $t20_21 = smartRefresh($t16_17);
2994          $block = 8; break;
2995          break;
2996        }
2997      }
2998    }
2999  }
3000  
3001  export function categorize(path) {
3002    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
3003    let $block = 0;
3004    while (true) {
3005      switch ($block) {
3006        case 0: {
3007          $t0_1 = $rt.builtin.len(path);
3008          $t1_2 = ($t0_1 > 4);
3009          if ($t1_2) {
3010            $block = 3; break;
3011          }
3012          else {
3013            $block = 2; break;
3014          }
3015          break;
3016        }
3017        case 1: {
3018          return 1;
3019          break;
3020        }
3021        case 2: {
3022          $t2_3 = hasSuffix(path, '.svg');
3023          if ($t2_3) {
3024            $block = 4; break;
3025          }
3026          else {
3027            $block = 8; break;
3028          }
3029          break;
3030        }
3031        case 3: {
3032          $t3_4 = $rt.builtin.stringSlice(path, undefined, 4);
3033          $t4_5 = ($t3_4 === '/$sw');
3034          if ($t4_5) {
3035            $block = 1; break;
3036          }
3037          else {
3038            $block = 2; break;
3039          }
3040          break;
3041        }
3042        case 4: {
3043          return 2;
3044          break;
3045        }
3046        case 5: {
3047          return 0;
3048          break;
3049        }
3050        case 6: {
3051          $t5_6 = hasSuffix(path, '.html');
3052          if ($t5_6) {
3053            $block = 4; break;
3054          }
3055          else {
3056            $block = 5; break;
3057          }
3058          break;
3059        }
3060        case 7: {
3061          $t6_7 = hasSuffix(path, '.woff2');
3062          if ($t6_7) {
3063            $block = 4; break;
3064          }
3065          else {
3066            $block = 6; break;
3067          }
3068          break;
3069        }
3070        case 8: {
3071          $t7_8 = hasSuffix(path, '.css');
3072          if ($t7_8) {
3073            $block = 4; break;
3074          }
3075          else {
3076            $block = 7; break;
3077          }
3078          break;
3079        }
3080      }
3081    }
3082  }
3083  
3084  export function hasSuffix(s, suffix) {
3085    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
3086    let $block = 0;
3087    while (true) {
3088      switch ($block) {
3089        case 0: {
3090          $t0_1 = $rt.builtin.len(s);
3091          $t1_2 = $rt.builtin.len(suffix);
3092          $t2_3 = ($t0_1 >= $t1_2);
3093          if ($t2_3) {
3094            $block = 1; break;
3095          }
3096          else {
3097            $t8_9 = false;
3098            $block = 2; break;
3099          }
3100          break;
3101        }
3102        case 1: {
3103          $t3_4 = $rt.builtin.len(s);
3104          $t4_5 = $rt.builtin.len(suffix);
3105          $t5_6 = ($t3_4 - $t4_5);
3106          $t6_7 = $rt.builtin.stringSlice(s, $t5_6, undefined);
3107          $t7_8 = ($t6_7 === suffix);
3108          $t8_9 = $t7_8;
3109          $block = 2; break;
3110          break;
3111        }
3112        case 2: {
3113          return $t8_9;
3114          break;
3115        }
3116      }
3117    }
3118  }
3119  
3120  export function smartRefresh(files) {
3121    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;
3122    let $block = 0;
3123    while (true) {
3124      switch ($block) {
3125        case 0: {
3126          $t0_1 = { $value: false, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3127          $t0_1.$set(false);
3128          $t1_2 = { $value: false, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3129          $t1_2.$set(false);
3130          $t2_3 = $rt.builtin.len(files);
3131          $t3_4 = null;
3132          $t4_5 = -1;
3133          $block = 1; break;
3134          break;
3135        }
3136        case 1: {
3137          $t5_6 = ($t4_5 + 1);
3138          $t6_7 = ($t5_6 < $t2_3);
3139          if ($t6_7) {
3140            $block = 2; break;
3141          }
3142          else {
3143            $block = 3; break;
3144          }
3145          break;
3146        }
3147        case 2: {
3148          $t7_8 = files.addr($t5_6);
3149          $t8_9 = $t7_8.$get();
3150          $t9_10 = categorize($t8_9);
3151          $t10_11 = ($t9_10 === 0);
3152          if ($t10_11) {
3153            $block = 4; break;
3154          }
3155          else {
3156            $block = 6; break;
3157          }
3158          break;
3159        }
3160        case 3: {
3161          $t11_12 = smartRefresh$1.bind(null, $t0_1, $t1_2);
3162          $t12_13 = $rt.builtin.len($t3_4);
3163          $t13_14 = ($t12_13 > 0);
3164          if ($t13_14) {
3165            $block = 9; break;
3166          }
3167          else {
3168            $block = 11; break;
3169          }
3170          break;
3171        }
3172        case 4: {
3173          $t0_1.$set(true);
3174          $t14_15 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3175          $t15_16 = $t14_15.$get().addr(0);
3176          $t15_16.$set($t8_9);
3177          $t16_17 = $rt.builtin.sliceSlice($t14_15.$get(), undefined, undefined, undefined);
3178          $t17_18 = $rt.builtin.appendSlice($t3_4, $t16_17);
3179          $t3_4 = $t17_18;
3180          $t4_5 = $t5_6;
3181          $block = 1; break;
3182          break;
3183        }
3184        case 5: {
3185          $t1_2.$set(true);
3186          let $phi0 = $t3_4;
3187          let $phi1 = $t5_6;
3188          $t3_4 = $phi0;
3189          $t4_5 = $phi1;
3190          $block = 1; break;
3191          break;
3192        }
3193        case 6: {
3194          $t18_19 = ($t9_10 === 1);
3195          if ($t18_19) {
3196            $block = 5; break;
3197          }
3198          else {
3199            $block = 8; break;
3200          }
3201          break;
3202        }
3203        case 7: {
3204          $t19_20 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
3205          $t20_21 = $t19_20.$get().addr(0);
3206          $t20_21.$set($t8_9);
3207          $t21_22 = $rt.builtin.sliceSlice($t19_20.$get(), undefined, undefined, undefined);
3208          $t22_23 = $rt.builtin.appendSlice($t3_4, $t21_22);
3209          $t3_4 = $t22_23;
3210          $t4_5 = $t5_6;
3211          $block = 1; break;
3212          break;
3213        }
3214        case 8: {
3215          $t23_24 = ($t9_10 === 2);
3216          if ($t23_24) {
3217            $block = 7; break;
3218          }
3219          else {
3220            let $phi0 = $t3_4;
3221            let $phi1 = $t5_6;
3222            $t3_4 = $phi0;
3223            $t4_5 = $phi1;
3224            $block = 1; break;
3225          }
3226          break;
3227        }
3228        case 9: {
3229          $t24_25 = refreshChanged($t3_4, $t11_12);
3230          $block = 10; break;
3231          break;
3232        }
3233        case 10: {
3234          return;
3235          break;
3236        }
3237        case 11: {
3238          $t25_26 = smartRefresh$1();
3239          $block = 10; break;
3240          break;
3241        }
3242      }
3243    }
3244  }
3245  
3246  function smartRefresh$1(needReload, needSWUpdate) {
3247    let $t0_1, $t1_2, $t2_3, $t3_4;
3248    let $block = 0;
3249    while (true) {
3250      switch ($block) {
3251        case 0: {
3252          $t0_1 = needReload.$get();
3253          if ($t0_1) {
3254            $block = 1; break;
3255          }
3256          else {
3257            $block = 3; break;
3258          }
3259          break;
3260        }
3261        case 1: {
3262          $t1_2 = doNavigate();
3263          $block = 2; break;
3264          break;
3265        }
3266        case 2: {
3267          return;
3268          break;
3269        }
3270        case 3: {
3271          $t2_3 = needSWUpdate.$get();
3272          if ($t2_3) {
3273            $block = 4; break;
3274          }
3275          else {
3276            $block = 2; break;
3277          }
3278          break;
3279        }
3280        case 4: {
3281          $t3_4 = broadcastToClients('["FORCE_UPDATE_SW","$sw-relay"]');
3282          $block = 2; break;
3283          break;
3284        }
3285      }
3286    }
3287  }
3288  
3289  export function refreshChanged(files, done) {
3290    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
3291    $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3292    $t0_1.$set(files);
3293    $t1_2 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3294    $t1_2.$set(done);
3295    $t2_3 = { $value: false, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3296    $t2_3.$set(false);
3297    $t3_4 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3298    $t4_5 = refreshChanged$1.bind(null, $t2_3, $t1_2);
3299    $t3_4.$set($t4_5);
3300    $t5_6 = $t3_4.$get();
3301    $t6_7 = common$jsbridge$sw.SetTimeout(5000, $t5_6);
3302    $t7_8 = refreshChanged$2.bind(null, $t0_1, $t3_4);
3303    $t8_9 = common$jsbridge$sw.CacheOpen('smesh', $t7_8);
3304    return;
3305  }
3306  
3307  function refreshChanged$1(once, done) {
3308    let $t0_1, $t1_2, $t2_3;
3309    let $block = 0;
3310    while (true) {
3311      switch ($block) {
3312        case 0: {
3313          $t0_1 = once.$get();
3314          if ($t0_1) {
3315            $block = 1; break;
3316          }
3317          else {
3318            $block = 2; break;
3319          }
3320          break;
3321        }
3322        case 1: {
3323          return;
3324          break;
3325        }
3326        case 2: {
3327          once.$set(true);
3328          refreshing.$set(false);
3329          $t1_2 = done.$get();
3330          $t2_3 = $t1_2();
3331          return;
3332          break;
3333        }
3334      }
3335    }
3336  }
3337  
3338  function refreshChanged$2(files, finish, cache) {
3339    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;
3340    let $block = 0;
3341    while (true) {
3342      switch ($block) {
3343        case 0: {
3344          $t0_1 = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3345          $t0_1.$set(cache);
3346          $t1_2 = files.$get();
3347          $t2_3 = $rt.builtin.len($t1_2);
3348          $t3_4 = $rt.builtin.makeSlice($t2_3, $t2_3, '');
3349          $t4_5 = files.$get();
3350          $t5_6 = $rt.builtin.len($t4_5);
3351          $t6_7 = -1;
3352          $block = 1; break;
3353          break;
3354        }
3355        case 1: {
3356          $t7_8 = ($t6_7 + 1);
3357          $t8_9 = ($t7_8 < $t5_6);
3358          if ($t8_9) {
3359            $block = 2; break;
3360          }
3361          else {
3362            $block = 3; break;
3363          }
3364          break;
3365        }
3366        case 2: {
3367          $t9_10 = $t4_5.addr($t7_8);
3368          $t10_11 = $t9_10.$get();
3369          $t11_12 = ($t10_11 + '?v=');
3370          $t12_13 = currentVersion.$get();
3371          $t13_14 = ($t11_12 + $t12_13);
3372          $t14_15 = $t3_4.addr($t7_8);
3373          $t14_15.$set($t13_14);
3374          $t6_7 = $t7_8;
3375          $block = 1; break;
3376          break;
3377        }
3378        case 3: {
3379          $t15_16 = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3380          $t15_16.$set(0);
3381          $t16_17 = { $value: false, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3382          $t16_17.$set(false);
3383          $t17_18 = refreshChanged$2$1.bind(null, $t15_16, $t0_1, files, $t16_17, finish);
3384          $t18_19 = refreshChanged$2$2.bind(null, $t16_17, $t15_16, finish);
3385          $t19_20 = common$jsbridge$sw.FetchAll($t3_4, $t17_18, $t18_19);
3386          return;
3387          break;
3388        }
3389      }
3390    }
3391  }
3392  
3393  function refreshChanged$2$1(pending, cache, files, fetchesDone, finish, idx, resp, ok) {
3394    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
3395    let $block = 0;
3396    while (true) {
3397      switch ($block) {
3398        case 0: {
3399          if (ok) {
3400            $block = 3; break;
3401          }
3402          else {
3403            $block = 2; break;
3404          }
3405          break;
3406        }
3407        case 1: {
3408          $t0_1 = pending.$get();
3409          $t1_2 = ($t0_1 + 1);
3410          pending.$set($t1_2);
3411          $t2_3 = cache.$get();
3412          $t3_4 = files.$get();
3413          $t4_5 = $t3_4.addr(idx);
3414          $t5_6 = $t4_5.$get();
3415          $t6_7 = refreshChanged$2$1$1.bind(null, pending, fetchesDone, finish);
3416          $t7_8 = common$jsbridge$sw.CachePut($t2_3, $t5_6, resp, $t6_7);
3417          $block = 2; break;
3418          break;
3419        }
3420        case 2: {
3421          return;
3422          break;
3423        }
3424        case 3: {
3425          $t8_9 = common$jsbridge$sw.ResponseOK(resp);
3426          if ($t8_9) {
3427            $block = 1; break;
3428          }
3429          else {
3430            $block = 2; break;
3431          }
3432          break;
3433        }
3434      }
3435    }
3436  }
3437  
3438  function refreshChanged$2$1$1(pending, fetchesDone, finish) {
3439    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
3440    let $block = 0;
3441    while (true) {
3442      switch ($block) {
3443        case 0: {
3444          $t0_1 = pending.$get();
3445          $t1_2 = ($t0_1 - 1);
3446          pending.$set($t1_2);
3447          $t2_3 = fetchesDone.$get();
3448          if ($t2_3) {
3449            $block = 3; break;
3450          }
3451          else {
3452            $block = 2; break;
3453          }
3454          break;
3455        }
3456        case 1: {
3457          $t3_4 = finish.$get();
3458          $t4_5 = $t3_4();
3459          $block = 2; break;
3460          break;
3461        }
3462        case 2: {
3463          return;
3464          break;
3465        }
3466        case 3: {
3467          $t5_6 = pending.$get();
3468          $t6_7 = ($t5_6 === 0);
3469          if ($t6_7) {
3470            $block = 1; break;
3471          }
3472          else {
3473            $block = 2; break;
3474          }
3475          break;
3476        }
3477      }
3478    }
3479  }
3480  
3481  function refreshChanged$2$2(fetchesDone, pending, finish) {
3482    let $t0_1, $t1_2, $t2_3, $t3_4;
3483    let $block = 0;
3484    while (true) {
3485      switch ($block) {
3486        case 0: {
3487          fetchesDone.$set(true);
3488          $t0_1 = pending.$get();
3489          $t1_2 = ($t0_1 === 0);
3490          if ($t1_2) {
3491            $block = 1; break;
3492          }
3493          else {
3494            $block = 2; break;
3495          }
3496          break;
3497        }
3498        case 1: {
3499          $t2_3 = finish.$get();
3500          $t3_4 = $t2_3();
3501          $block = 2; break;
3502          break;
3503        }
3504        case 2: {
3505          return;
3506          break;
3507        }
3508      }
3509    }
3510  }
3511  
3512  export function populateCache() {
3513    let $t0_1;
3514    $t0_1 = cacheAll(populateCache$1);
3515    return;
3516  }
3517  
3518  function populateCache$1() {
3519    return;
3520  }
3521  
3522  export function fullRefresh() {
3523    let $t0_1;
3524    $t0_1 = cacheAll(doNavigate);
3525    return;
3526  }
3527  
3528  export function cacheAll(done) {
3529    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8;
3530    $t0_1 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3531    $t0_1.$set(done);
3532    $t1_2 = { $value: false, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3533    $t1_2.$set(false);
3534    $t2_3 = { $value: null, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3535    $t3_4 = cacheAll$1.bind(null, $t1_2, $t0_1);
3536    $t2_3.$set($t3_4);
3537    $t4_5 = $t2_3.$get();
3538    $t5_6 = common$jsbridge$sw.SetTimeout(8000, $t4_5);
3539    $t6_7 = cacheAll$2.bind(null, $t2_3);
3540    $t7_8 = common$jsbridge$sw.CacheOpen('smesh', $t6_7);
3541    return;
3542  }
3543  
3544  function cacheAll$1(once, done) {
3545    let $t0_1, $t1_2, $t2_3;
3546    let $block = 0;
3547    while (true) {
3548      switch ($block) {
3549        case 0: {
3550          $t0_1 = once.$get();
3551          if ($t0_1) {
3552            $block = 1; break;
3553          }
3554          else {
3555            $block = 2; break;
3556          }
3557          break;
3558        }
3559        case 1: {
3560          return;
3561          break;
3562        }
3563        case 2: {
3564          once.$set(true);
3565          refreshing.$set(false);
3566          $t1_2 = done.$get();
3567          $t2_3 = $t1_2();
3568          return;
3569          break;
3570        }
3571      }
3572    }
3573  }
3574  
3575  function cacheAll$2(finish, cache) {
3576    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;
3577    let $block = 0;
3578    while (true) {
3579      switch ($block) {
3580        case 0: {
3581          $t0_1 = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3582          $t0_1.$set(cache);
3583          $t1_2 = appFiles.$get();
3584          $t2_3 = $rt.builtin.len($t1_2);
3585          $t3_4 = $rt.builtin.makeSlice($t2_3, $t2_3, '');
3586          $t4_5 = appFiles.$get();
3587          $t5_6 = $rt.builtin.len($t4_5);
3588          $t6_7 = -1;
3589          $block = 1; break;
3590          break;
3591        }
3592        case 1: {
3593          $t7_8 = ($t6_7 + 1);
3594          $t8_9 = ($t7_8 < $t5_6);
3595          if ($t8_9) {
3596            $block = 2; break;
3597          }
3598          else {
3599            $block = 3; break;
3600          }
3601          break;
3602        }
3603        case 2: {
3604          $t9_10 = $t4_5.addr($t7_8);
3605          $t10_11 = $t9_10.$get();
3606          $t11_12 = ($t10_11 + '?v=');
3607          $t12_13 = currentVersion.$get();
3608          $t13_14 = ($t11_12 + $t12_13);
3609          $t14_15 = $t3_4.addr($t7_8);
3610          $t14_15.$set($t13_14);
3611          $t6_7 = $t7_8;
3612          $block = 1; break;
3613          break;
3614        }
3615        case 3: {
3616          $t15_16 = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3617          $t15_16.$set(0);
3618          $t16_17 = { $value: false, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3619          $t16_17.$set(false);
3620          $t17_18 = cacheAll$2$1.bind(null, $t15_16, $t0_1, $t16_17, finish);
3621          $t18_19 = cacheAll$2$2.bind(null, $t16_17, $t15_16, finish);
3622          $t19_20 = common$jsbridge$sw.FetchAll($t3_4, $t17_18, $t18_19);
3623          return;
3624          break;
3625        }
3626      }
3627    }
3628  }
3629  
3630  function cacheAll$2$1(pending, cache, fetchesDone, finish, idx, resp, ok) {
3631    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
3632    let $block = 0;
3633    while (true) {
3634      switch ($block) {
3635        case 0: {
3636          if (ok) {
3637            $block = 3; break;
3638          }
3639          else {
3640            $block = 2; break;
3641          }
3642          break;
3643        }
3644        case 1: {
3645          $t0_1 = pending.$get();
3646          $t1_2 = ($t0_1 + 1);
3647          pending.$set($t1_2);
3648          $t2_3 = cache.$get();
3649          $t3_4 = appFiles.$get();
3650          $t4_5 = $t3_4.addr(idx);
3651          $t5_6 = $t4_5.$get();
3652          $t6_7 = cacheAll$2$1$1.bind(null, pending, fetchesDone, finish);
3653          $t7_8 = common$jsbridge$sw.CachePut($t2_3, $t5_6, resp, $t6_7);
3654          $block = 2; break;
3655          break;
3656        }
3657        case 2: {
3658          return;
3659          break;
3660        }
3661        case 3: {
3662          $t8_9 = common$jsbridge$sw.ResponseOK(resp);
3663          if ($t8_9) {
3664            $block = 1; break;
3665          }
3666          else {
3667            $block = 2; break;
3668          }
3669          break;
3670        }
3671      }
3672    }
3673  }
3674  
3675  function cacheAll$2$1$1(pending, fetchesDone, finish) {
3676    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7;
3677    let $block = 0;
3678    while (true) {
3679      switch ($block) {
3680        case 0: {
3681          $t0_1 = pending.$get();
3682          $t1_2 = ($t0_1 - 1);
3683          pending.$set($t1_2);
3684          $t2_3 = fetchesDone.$get();
3685          if ($t2_3) {
3686            $block = 3; break;
3687          }
3688          else {
3689            $block = 2; break;
3690          }
3691          break;
3692        }
3693        case 1: {
3694          $t3_4 = finish.$get();
3695          $t4_5 = $t3_4();
3696          $block = 2; break;
3697          break;
3698        }
3699        case 2: {
3700          return;
3701          break;
3702        }
3703        case 3: {
3704          $t5_6 = pending.$get();
3705          $t6_7 = ($t5_6 === 0);
3706          if ($t6_7) {
3707            $block = 1; break;
3708          }
3709          else {
3710            $block = 2; break;
3711          }
3712          break;
3713        }
3714      }
3715    }
3716  }
3717  
3718  function cacheAll$2$2(fetchesDone, pending, finish) {
3719    let $t0_1, $t1_2, $t2_3, $t3_4;
3720    let $block = 0;
3721    while (true) {
3722      switch ($block) {
3723        case 0: {
3724          fetchesDone.$set(true);
3725          $t0_1 = pending.$get();
3726          $t1_2 = ($t0_1 === 0);
3727          if ($t1_2) {
3728            $block = 1; break;
3729          }
3730          else {
3731            $block = 2; break;
3732          }
3733          break;
3734        }
3735        case 1: {
3736          $t2_3 = finish.$get();
3737          $t3_4 = $t2_3();
3738          $block = 2; break;
3739          break;
3740        }
3741        case 2: {
3742          return;
3743          break;
3744        }
3745      }
3746    }
3747  }
3748  
3749  export function doNavigate() {
3750    let $t0_1;
3751    $t0_1 = common$jsbridge$sw.MatchClients(doNavigate$1);
3752    return;
3753  }
3754  
3755  function doNavigate$1(client) {
3756    let $t0_1;
3757    $t0_1 = common$jsbridge$sw.Navigate(client, '');
3758    return;
3759  }
3760  
3761  export function initSharedState() {
3762    let $t0_1;
3763    $t0_1 = $rt.builtin.makeMap('int');
3764    cryptoCBs.$set($t0_1);
3765    return;
3766  }
3767  
3768  export function cryptoProxy(method, peerPubkey, data, cb) {
3769    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;
3770    $t0_1 = nextCryptoID.$get();
3771    $t1_2 = nextCryptoID.$get();
3772    $t2_3 = ($t1_2 + 1);
3773    nextCryptoID.$set($t2_3);
3774    $t3_4 = cryptoCBs.$get();
3775    $rt.builtin.mapUpdate($t3_4, $t0_1, cb);
3776    $t4_5 = ('shell: crypto→page ' + method);
3777    $t5_6 = ($t4_5 + ' #');
3778    $t6_7 = $t0_1;
3779    $t7_8 = common$helpers.Itoa($t6_7);
3780    $t8_9 = ($t5_6 + $t7_8);
3781    $t9_10 = common$jsbridge$sw.Log($t8_9);
3782    $t10_11 = $t0_1;
3783    $t11_12 = common$helpers.Itoa($t10_11);
3784    $t12_13 = ('["CRYPTO_REQ",' + $t11_12);
3785    $t13_14 = ($t12_13 + ',');
3786    $t14_15 = jstr(method);
3787    $t15_16 = ($t13_14 + $t14_15);
3788    $t16_17 = ($t15_16 + ',');
3789    $t17_18 = jstr(peerPubkey);
3790    $t18_19 = ($t16_17 + $t17_18);
3791    $t19_20 = ($t18_19 + ',');
3792    $t20_21 = jstr(data);
3793    $t21_22 = ($t19_20 + $t20_21);
3794    $t22_23 = ($t21_22 + ']');
3795    $t23_24 = broadcastToClients($t22_23);
3796    $t24_25 = { $value: 0, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3797    $t24_25.$set($t0_1);
3798    $t25_26 = cryptoProxy$1.bind(null, $t24_25);
3799    $t26_27 = common$jsbridge$sw.SetTimeout(15000, $t25_26);
3800    return;
3801  }
3802  
3803  function cryptoProxy$1(capturedID) {
3804    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;
3805    let $block = 0;
3806    while (true) {
3807      switch ($block) {
3808        case 0: {
3809          $t0_1 = cryptoCBs.$get();
3810          $t1_2 = capturedID.$get();
3811          { const $r = $rt.builtin.mapLookup($t0_1, $t1_2); $t2_3 = [$r.value, $r.ok]; }
3812          $t3_4 = $t2_3[0];
3813          $t4_5 = $t2_3[1];
3814          if ($t4_5) {
3815            $block = 1; break;
3816          }
3817          else {
3818            $block = 2; break;
3819          }
3820          break;
3821        }
3822        case 1: {
3823          $t5_6 = cryptoCBs.$get();
3824          $t6_7 = capturedID.$get();
3825          $t7_8 = $rt.builtin.mapDelete($t5_6, $t6_7);
3826          $t8_9 = capturedID.$get();
3827          $t9_10 = $t8_9;
3828          $t10_11 = common$helpers.Itoa($t9_10);
3829          $t11_12 = ('shell: crypto TIMEOUT #' + $t10_11);
3830          $t12_13 = common$jsbridge$sw.Log($t11_12);
3831          $t13_14 = $t3_4('', 'crypto proxy timeout');
3832          $block = 2; break;
3833          break;
3834        }
3835        case 2: {
3836          return;
3837          break;
3838        }
3839      }
3840    }
3841  }
3842  
3843  export function sendToClient(clientID, msg) {
3844    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
3845    let $block = 0;
3846    while (true) {
3847      switch ($block) {
3848        case 0: {
3849          $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
3850          $t0_1.$set(clientID);
3851          $t1_2 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
3852          $t1_2.$set(msg);
3853          $t2_3 = $t0_1.$get();
3854          $t3_4 = ($t2_3 === '');
3855          if ($t3_4) {
3856            $block = 1; break;
3857          }
3858          else {
3859            $block = 2; break;
3860          }
3861          break;
3862        }
3863        case 1: {
3864          $t4_5 = $t1_2.$get();
3865          $t5_6 = broadcastToClients($t4_5);
3866          return;
3867          break;
3868        }
3869        case 2: {
3870          $t6_7 = $t0_1.$get();
3871          $t7_8 = sendToClient$1.bind(null, $t1_2, $t0_1);
3872          $t8_9 = common$jsbridge$sw.GetClientByID($t6_7, $t7_8);
3873          return;
3874          break;
3875        }
3876      }
3877    }
3878  }
3879  
3880  function sendToClient$1(msg, clientID, c, ok) {
3881    let $t0_1, $t1_2, $t2_3, $t3_4, $t4_5, $t5_6, $t6_7, $t7_8, $t8_9;
3882    let $block = 0;
3883    while (true) {
3884      switch ($block) {
3885        case 0: {
3886          if (ok) {
3887            $block = 1; break;
3888          }
3889          else {
3890            $block = 3; break;
3891          }
3892          break;
3893        }
3894        case 1: {
3895          $t0_1 = msg.$get();
3896          $t1_2 = common$jsbridge$sw.PostMessageJSON(c, $t0_1);
3897          $block = 2; break;
3898          break;
3899        }
3900        case 2: {
3901          return;
3902          break;
3903        }
3904        case 3: {
3905          $t2_3 = clientID.$get();
3906          $t3_4 = $rt.builtin.stringSlice($t2_3, undefined, 8);
3907          $t4_5 = ('shell: client gone ' + $t3_4);
3908          $t5_6 = ($t4_5 + '… → broadcast');
3909          $t6_7 = common$jsbridge$sw.Log($t5_6);
3910          $t7_8 = msg.$get();
3911          $t8_9 = broadcastToClients($t7_8);
3912          $block = 2; break;
3913          break;
3914        }
3915      }
3916    }
3917  }
3918  
3919  export function broadcastToClients(msg) {
3920    let $t0_1, $t1_2, $t2_3;
3921    $t0_1 = { $value: '', $get() { return this.$value; }, $set(v) { this.$value = v; } };
3922    $t0_1.$set(msg);
3923    $t1_2 = broadcastToClients$1.bind(null, $t0_1);
3924    $t2_3 = common$jsbridge$sw.MatchClients($t1_2);
3925    return;
3926  }
3927  
3928  function broadcastToClients$1(msg, c) {
3929    let $t0_1, $t1_2;
3930    $t0_1 = msg.$get();
3931    $t1_2 = common$jsbridge$sw.PostMessageJSON(c, $t0_1);
3932    return;
3933  }
3934  
3935  export function jstr(s) {
3936    let $t0_1;
3937    $t0_1 = common$helpers.JsonString(s);
3938    return $t0_1;
3939  }
3940  
3941  export function newMW(s) {
3942    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;
3943    let $block = 0;
3944    while (true) {
3945      switch ($block) {
3946        case 0: {
3947          $t0_1 = { $value: { s: '', i: 0 }, $get() { return this.$value; }, $set(v) { this.$value = v; } };
3948          $t1_2 = { $get() { return $t0_1.$get().s; }, $set(v) { const obj = $t0_1.$get(); obj.s = v; $t0_1.$set(obj); } };
3949          $t1_2.$set(s);
3950          $block = 3; break;
3951          break;
3952        }
3953        case 1: {
3954          $t2_3 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3955          $t3_4 = $t2_3.$get();
3956          $t4_5 = ($t3_4 + 1);
3957          $t5_6 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3958          $t5_6.$set($t4_5);
3959          $block = 3; break;
3960          break;
3961        }
3962        case 2: {
3963          $t6_7 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3964          $t7_8 = $t6_7.$get();
3965          $t8_9 = $rt.builtin.len(s);
3966          $t9_10 = ($t7_8 < $t8_9);
3967          if ($t9_10) {
3968            $block = 5; break;
3969          }
3970          else {
3971            $block = 6; break;
3972          }
3973          break;
3974        }
3975        case 3: {
3976          $t10_11 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3977          $t11_12 = $t10_11.$get();
3978          $t12_13 = $rt.builtin.len(s);
3979          $t13_14 = ($t11_12 < $t12_13);
3980          if ($t13_14) {
3981            $block = 4; break;
3982          }
3983          else {
3984            $block = 2; break;
3985          }
3986          break;
3987        }
3988        case 4: {
3989          $t14_15 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
3990          $t15_16 = $t14_15.$get();
3991          $rt.runtime.boundsCheck($t15_16, $rt.builtin.byteLen(s));
3992          $t16_17 = $rt.builtin.stringByteAt(s, $t15_16);
3993          $t17_18 = ($t16_17 !== 91);
3994          if ($t17_18) {
3995            $block = 1; break;
3996          }
3997          else {
3998            $block = 2; break;
3999          }
4000          break;
4001        }
4002        case 5: {
4003          $t18_19 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
4004          $t19_20 = $t18_19.$get();
4005          $t20_21 = ($t19_20 + 1);
4006          $t21_22 = { $get() { return $t0_1.$get().i; }, $set(v) { const obj = $t0_1.$get(); obj.i = v; $t0_1.$set(obj); } };
4007          $t21_22.$set($t20_21);
4008          $block = 6; break;
4009          break;
4010        }
4011        case 6: {
4012          $t22_23 = $t0_1.$get();
4013          return $t22_23;
4014          break;
4015        }
4016      }
4017    }
4018  }
4019  
4020  export function skipval(s, i) {
4021    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;
4022    let $block = 0;
4023    while (true) {
4024      switch ($block) {
4025        case 0: {
4026          $t0_1 = $rt.builtin.len(s);
4027          $t1_2 = (i >= $t0_1);
4028          if ($t1_2) {
4029            $block = 1; break;
4030          }
4031          else {
4032            $block = 2; break;
4033          }
4034          break;
4035        }
4036        case 1: {
4037          return -1;
4038          break;
4039        }
4040        case 2: {
4041          $rt.runtime.boundsCheck(i, $rt.builtin.byteLen(s));
4042          $t2_3 = $rt.builtin.stringByteAt(s, i);
4043          $t3_4 = ($t2_3 === 34);
4044          if ($t3_4) {
4045            $block = 3; break;
4046          }
4047          else {
4048            $block = 5; break;
4049          }
4050          break;
4051        }
4052        case 3: {
4053          $t4_5 = (i + 1);
4054          $t9_10 = $t4_5;
4055          $block = 8; break;
4056          break;
4057        }
4058        case 4: {
4059          $t5_6 = skipBrack(s, i, 123, 125);
4060          return $t5_6;
4061          break;
4062        }
4063        case 5: {
4064          $t6_7 = ($t2_3 === 123);
4065          if ($t6_7) {
4066            $block = 4; break;
4067          }
4068          else {
4069            $block = 14; break;
4070          }
4071          break;
4072        }
4073        case 6: {
4074          $rt.runtime.boundsCheck($t9_10, $rt.builtin.byteLen(s));
4075          $t7_8 = $rt.builtin.stringByteAt(s, $t9_10);
4076          $t8_9 = ($t7_8 === 92);
4077          if ($t8_9) {
4078            $block = 9; break;
4079          }
4080          else {
4081            $block = 10; break;
4082          }
4083          break;
4084        }
4085        case 7: {
4086          return -1;
4087          break;
4088        }
4089        case 8: {
4090          $t10_11 = $rt.builtin.len(s);
4091          $t11_12 = ($t9_10 < $t10_11);
4092          if ($t11_12) {
4093            $block = 6; break;
4094          }
4095          else {
4096            $block = 7; break;
4097          }
4098          break;
4099        }
4100        case 9: {
4101          $t12_13 = ($t9_10 + 2);
4102          $t9_10 = $t12_13;
4103          $block = 8; break;
4104          break;
4105        }
4106        case 10: {
4107          $rt.runtime.boundsCheck($t9_10, $rt.builtin.byteLen(s));
4108          $t13_14 = $rt.builtin.stringByteAt(s, $t9_10);
4109          $t14_15 = ($t13_14 === 34);
4110          if ($t14_15) {
4111            $block = 11; break;
4112          }
4113          else {
4114            $block = 12; break;
4115          }
4116          break;
4117        }
4118        case 11: {
4119          $t15_16 = ($t9_10 + 1);
4120          return $t15_16;
4121          break;
4122        }
4123        case 12: {
4124          $t16_17 = ($t9_10 + 1);
4125          $t9_10 = $t16_17;
4126          $block = 8; break;
4127          break;
4128        }
4129        case 13: {
4130          $t17_18 = skipBrack(s, i, 91, 93);
4131          return $t17_18;
4132          break;
4133        }
4134        case 14: {
4135          $t18_19 = ($t2_3 === 91);
4136          if ($t18_19) {
4137            $block = 13; break;
4138          }
4139          else {
4140            $block = 16; break;
4141          }
4142          break;
4143        }
4144        case 15: {
4145          $t19_20 = (i + 4);
4146          $t20_21 = $rt.builtin.len(s);
4147          $t21_22 = ($t19_20 <= $t20_21);
4148          if ($t21_22) {
4149            $block = 19; break;
4150          }
4151          else {
4152            $block = 20; break;
4153          }
4154          break;
4155        }
4156        case 16: {
4157          $t22_23 = ($t2_3 === 116);
4158          if ($t22_23) {
4159            $block = 15; break;
4160          }
4161          else {
4162            $block = 18; break;
4163          }
4164          break;
4165        }
4166        case 17: {
4167          $t23_24 = (i + 5);
4168          $t24_25 = $rt.builtin.len(s);
4169          $t25_26 = ($t23_24 <= $t24_25);
4170          if ($t25_26) {
4171            $block = 23; break;
4172          }
4173          else {
4174            $block = 24; break;
4175          }
4176          break;
4177        }
4178        case 18: {
4179          $t26_27 = ($t2_3 === 102);
4180          if ($t26_27) {
4181            $block = 17; break;
4182          }
4183          else {
4184            $block = 22; break;
4185          }
4186          break;
4187        }
4188        case 19: {
4189          $t27_28 = (i + 4);
4190          return $t27_28;
4191          break;
4192        }
4193        case 20: {
4194          return -1;
4195          break;
4196        }
4197        case 21: {
4198          $t28_29 = (i + 4);
4199          $t29_30 = $rt.builtin.len(s);
4200          $t30_31 = ($t28_29 <= $t29_30);
4201          if ($t30_31) {
4202            $block = 25; break;
4203          }
4204          else {
4205            $block = 26; break;
4206          }
4207          break;
4208        }
4209        case 22: {
4210          $t31_32 = ($t2_3 === 110);
4211          if ($t31_32) {
4212            $block = 21; break;
4213          }
4214          else {
4215            $t35_36 = i;
4216            $block = 29; break;
4217          }
4218          break;
4219        }
4220        case 23: {
4221          $t32_33 = (i + 5);
4222          return $t32_33;
4223          break;
4224        }
4225        case 24: {
4226          return -1;
4227          break;
4228        }
4229        case 25: {
4230          $t33_34 = (i + 4);
4231          return $t33_34;
4232          break;
4233        }
4234        case 26: {
4235          return -1;
4236          break;
4237        }
4238        case 27: {
4239          $t34_35 = ($t35_36 + 1);
4240          $t35_36 = $t34_35;
4241          $block = 29; break;
4242          break;
4243        }
4244        case 28: {
4245          return $t35_36;
4246          break;
4247        }
4248        case 29: {
4249          $t36_37 = $rt.builtin.len(s);
4250          $t37_38 = ($t35_36 < $t36_37);
4251          if ($t37_38) {
4252            $block = 34; break;
4253          }
4254          else {
4255            $block = 28; break;
4256          }
4257          break;
4258        }
4259        case 30: {
4260          $rt.runtime.boundsCheck($t35_36, $rt.builtin.byteLen(s));
4261          $t38_39 = $rt.builtin.stringByteAt(s, $t35_36);
4262          $t39_40 = ($t38_39 !== 10);
4263          if ($t39_40) {
4264            $block = 27; break;
4265          }
4266          else {
4267            $block = 28; break;
4268          }
4269          break;
4270        }
4271        case 31: {
4272          $rt.runtime.boundsCheck($t35_36, $rt.builtin.byteLen(s));
4273          $t40_41 = $rt.builtin.stringByteAt(s, $t35_36);
4274          $t41_42 = ($t40_41 !== 32);
4275          if ($t41_42) {
4276            $block = 30; break;
4277          }
4278          else {
4279            $block = 28; break;
4280          }
4281          break;
4282        }
4283        case 32: {
4284          $rt.runtime.boundsCheck($t35_36, $rt.builtin.byteLen(s));
4285          $t42_43 = $rt.builtin.stringByteAt(s, $t35_36);
4286          $t43_44 = ($t42_43 !== 93);
4287          if ($t43_44) {
4288            $block = 31; break;
4289          }
4290          else {
4291            $block = 28; break;
4292          }
4293          break;
4294        }
4295        case 33: {
4296          $rt.runtime.boundsCheck($t35_36, $rt.builtin.byteLen(s));
4297          $t44_45 = $rt.builtin.stringByteAt(s, $t35_36);
4298          $t45_46 = ($t44_45 !== 125);
4299          if ($t45_46) {
4300            $block = 32; break;
4301          }
4302          else {
4303            $block = 28; break;
4304          }
4305          break;
4306        }
4307        case 34: {
4308          $rt.runtime.boundsCheck($t35_36, $rt.builtin.byteLen(s));
4309          $t46_47 = $rt.builtin.stringByteAt(s, $t35_36);
4310          $t47_48 = ($t46_47 !== 44);
4311          if ($t47_48) {
4312            $block = 33; break;
4313          }
4314          else {
4315            $block = 28; break;
4316          }
4317          break;
4318        }
4319      }
4320    }
4321  }
4322  
4323  export function skipBrack(s, i, open, close) {
4324    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;
4325    let $block = 0;
4326    while (true) {
4327      switch ($block) {
4328        case 0: {
4329          $t0_1 = (i + 1);
4330          $t2_3 = $t0_1;
4331          $t3_4 = 1;
4332          $t4_5 = false;
4333          $block = 3; break;
4334          break;
4335        }
4336        case 1: {
4337          if ($t4_5) {
4338            $block = 5; break;
4339          }
4340          else {
4341            $block = 7; break;
4342          }
4343          break;
4344        }
4345        case 2: {
4346          $t1_2 = ($t3_4 !== 0);
4347          if ($t1_2) {
4348            $block = 16; break;
4349          }
4350          else {
4351            $block = 17; break;
4352          }
4353          break;
4354        }
4355        case 3: {
4356          $t5_6 = $rt.builtin.len(s);
4357          $t6_7 = ($t2_3 < $t5_6);
4358          if ($t6_7) {
4359            $block = 4; break;
4360          }
4361          else {
4362            $block = 2; break;
4363          }
4364          break;
4365        }
4366        case 4: {
4367          $t7_8 = ($t3_4 > 0);
4368          if ($t7_8) {
4369            $block = 1; break;
4370          }
4371          else {
4372            $block = 2; break;
4373          }
4374          break;
4375        }
4376        case 5: {
4377          $rt.runtime.boundsCheck($t2_3, $rt.builtin.byteLen(s));
4378          $t8_9 = $rt.builtin.stringByteAt(s, $t2_3);
4379          $t9_10 = ($t8_9 === 92);
4380          if ($t9_10) {
4381            $block = 8; break;
4382          }
4383          else {
4384            $block = 9; break;
4385          }
4386          break;
4387        }
4388        case 6: {
4389          $t13_14 = ($t10_11 + 1);
4390          $t2_3 = $t13_14;
4391          $t3_4 = $t11_12;
4392          $t4_5 = $t12_13;
4393          $block = 3; break;
4394          break;
4395        }
4396        case 7: {
4397          $rt.runtime.boundsCheck($t2_3, $rt.builtin.byteLen(s));
4398          $t14_15 = $rt.builtin.stringByteAt(s, $t2_3);
4399          $t15_16 = ($t14_15 === 34);
4400          if ($t15_16) {
4401            $block = 11; break;
4402          }
4403          else {
4404            $block = 13; break;
4405          }
4406          break;
4407        }
4408        case 8: {
4409          $t16_17 = ($t2_3 + 1);
4410          $t10_11 = $t16_17;
4411          $t11_12 = $t3_4;
4412          $t12_13 = $t4_5;
4413          $block = 6; break;
4414          break;
4415        }
4416        case 9: {
4417          $rt.runtime.boundsCheck($t2_3, $rt.builtin.byteLen(s));
4418          $t17_18 = $rt.builtin.stringByteAt(s, $t2_3);
4419          $t18_19 = ($t17_18 === 34);
4420          if ($t18_19) {
4421            $block = 10; break;
4422          }
4423          else {
4424            $t10_11 = $t2_3;
4425            $t11_12 = $t3_4;
4426            $t12_13 = $t4_5;
4427            $block = 6; break;
4428          }
4429          break;
4430        }
4431        case 10: {
4432          $t10_11 = $t2_3;
4433          $t11_12 = $t3_4;
4434          $t12_13 = false;
4435          $block = 6; break;
4436          break;
4437        }
4438        case 11: {
4439          $t10_11 = $t2_3;
4440          $t11_12 = $t3_4;
4441          $t12_13 = true;
4442          $block = 6; break;
4443          break;
4444        }
4445        case 12: {
4446          $t19_20 = ($t3_4 + 1);
4447          $t10_11 = $t2_3;
4448          $t11_12 = $t19_20;
4449          $t12_13 = $t4_5;
4450          $block = 6; break;
4451          break;
4452        }
4453        case 13: {
4454          $t20_21 = ($t14_15 === open);
4455          if ($t20_21) {
4456            $block = 12; break;
4457          }
4458          else {
4459            $block = 15; break;
4460          }
4461          break;
4462        }
4463        case 14: {
4464          $t21_22 = ($t3_4 - 1);
4465          $t10_11 = $t2_3;
4466          $t11_12 = $t21_22;
4467          $t12_13 = $t4_5;
4468          $block = 6; break;
4469          break;
4470        }
4471        case 15: {
4472          $t22_23 = ($t14_15 === close);
4473          if ($t22_23) {
4474            $block = 14; break;
4475          }
4476          else {
4477            $t10_11 = $t2_3;
4478            $t11_12 = $t3_4;
4479            $t12_13 = $t4_5;
4480            $block = 6; break;
4481          }
4482          break;
4483        }
4484        case 16: {
4485          return -1;
4486          break;
4487        }
4488        case 17: {
4489          return $t2_3;
4490          break;
4491        }
4492      }
4493    }
4494  }
4495  
4496  export function DMRecord$ToJSON(r) {
4497    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;
4498    $t0_1 = { $get() { return r.$get().ID; }, $set(v) { const obj = r.$get(); obj.ID = v; r.$set(obj); } };
4499    $t1_2 = $t0_1.$get();
4500    $t2_3 = jstr($t1_2);
4501    $t3_4 = ('{"id":' + $t2_3);
4502    $t4_5 = ($t3_4 + ',"peer":');
4503    $t5_6 = { $get() { return r.$get().Peer; }, $set(v) { const obj = r.$get(); obj.Peer = v; r.$set(obj); } };
4504    $t6_7 = $t5_6.$get();
4505    $t7_8 = jstr($t6_7);
4506    $t8_9 = ($t4_5 + $t7_8);
4507    $t9_10 = ($t8_9 + ',"from":');
4508    $t10_11 = { $get() { return r.$get().From; }, $set(v) { const obj = r.$get(); obj.From = v; r.$set(obj); } };
4509    $t11_12 = $t10_11.$get();
4510    $t12_13 = jstr($t11_12);
4511    $t13_14 = ($t9_10 + $t12_13);
4512    $t14_15 = ($t13_14 + ',"content":');
4513    $t15_16 = { $get() { return r.$get().Content; }, $set(v) { const obj = r.$get(); obj.Content = v; r.$set(obj); } };
4514    $t16_17 = $t15_16.$get();
4515    $t17_18 = jstr($t16_17);
4516    $t18_19 = ($t14_15 + $t17_18);
4517    $t19_20 = ($t18_19 + ',"created_at":');
4518    $t20_21 = { $get() { return r.$get().CreatedAt; }, $set(v) { const obj = r.$get(); obj.CreatedAt = v; r.$set(obj); } };
4519    $t21_22 = $t20_21.$get();
4520    $t22_23 = common$helpers.Itoa($t21_22);
4521    $t23_24 = ($t19_20 + $t22_23);
4522    $t24_25 = ($t23_24 + ',"protocol":');
4523    $t25_26 = { $get() { return r.$get().Protocol; }, $set(v) { const obj = r.$get(); obj.Protocol = v; r.$set(obj); } };
4524    $t26_27 = $t25_26.$get();
4525    $t27_28 = jstr($t26_27);
4526    $t28_29 = ($t24_25 + $t27_28);
4527    $t29_30 = ($t28_29 + ',"eventId":');
4528    $t30_31 = { $get() { return r.$get().EventID; }, $set(v) { const obj = r.$get(); obj.EventID = v; r.$set(obj); } };
4529    $t31_32 = $t30_31.$get();
4530    $t32_33 = jstr($t31_32);
4531    $t33_34 = ($t29_30 + $t32_33);
4532    $t34_35 = ($t33_34 + '}');
4533    return $t34_35;
4534  }
4535  
4536  $rt.types.getType('sw.DMRecord')?.methods?.set('ToJSON', DMRecord$ToJSON);
4537  export function mw$num(w) {
4538    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;
4539    let $block = 0;
4540    while (true) {
4541      switch ($block) {
4542        case 0: {
4543          $t0_1 = mw$sep(w);
4544          $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4545          $t2_3 = $t1_2.$get();
4546          $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4547          $t4_5 = $t3_4.$get();
4548          $t5_6 = $rt.builtin.len($t4_5);
4549          $t6_7 = ($t2_3 < $t5_6);
4550          if ($t6_7) {
4551            $block = 3; break;
4552          }
4553          else {
4554            $t11_12 = false;
4555            $block = 2; break;
4556          }
4557          break;
4558        }
4559        case 1: {
4560          $t7_8 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4561          $t8_9 = $t7_8.$get();
4562          $t9_10 = ($t8_9 + 1);
4563          $t10_11 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4564          $t10_11.$set($t9_10);
4565          $t11_12 = true;
4566          $block = 2; break;
4567          break;
4568        }
4569        case 2: {
4570          $t31_32 = 0;
4571          $block = 6; break;
4572          break;
4573        }
4574        case 3: {
4575          $t12_13 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4576          $t13_14 = $t12_13.$get();
4577          $t14_15 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4578          $t15_16 = $t14_15.$get();
4579          $rt.runtime.boundsCheck($t13_14, $rt.builtin.byteLen($t15_16));
4580          $t16_17 = $rt.builtin.stringByteAt($t15_16, $t13_14);
4581          $t17_18 = ($t16_17 === 45);
4582          if ($t17_18) {
4583            $block = 1; break;
4584          }
4585          else {
4586            $t11_12 = false;
4587            $block = 2; break;
4588          }
4589          break;
4590        }
4591        case 4: {
4592          $t18_19 = ($t31_32 * 10);
4593          $t19_20 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4594          $t20_21 = $t19_20.$get();
4595          $t21_22 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4596          $t22_23 = $t21_22.$get();
4597          $rt.runtime.boundsCheck($t20_21, $rt.builtin.byteLen($t22_23));
4598          $t23_24 = $rt.builtin.stringByteAt($t22_23, $t20_21);
4599          $t24_25 = (($t23_24 - 48) & 0xFF);
4600          $t25_26 = $t24_25;
4601          $t26_27 = ($t18_19 + $t25_26);
4602          $t27_28 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4603          $t28_29 = $t27_28.$get();
4604          $t29_30 = ($t28_29 + 1);
4605          $t30_31 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4606          $t30_31.$set($t29_30);
4607          $t31_32 = $t26_27;
4608          $block = 6; break;
4609          break;
4610        }
4611        case 5: {
4612          if ($t11_12) {
4613            $block = 9; break;
4614          }
4615          else {
4616            $t51_52 = $t31_32;
4617            $block = 10; break;
4618          }
4619          break;
4620        }
4621        case 6: {
4622          $t32_33 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4623          $t33_34 = $t32_33.$get();
4624          $t34_35 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4625          $t35_36 = $t34_35.$get();
4626          $t36_37 = $rt.builtin.len($t35_36);
4627          $t37_38 = ($t33_34 < $t36_37);
4628          if ($t37_38) {
4629            $block = 8; break;
4630          }
4631          else {
4632            $block = 5; break;
4633          }
4634          break;
4635        }
4636        case 7: {
4637          $t38_39 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4638          $t39_40 = $t38_39.$get();
4639          $t40_41 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4640          $t41_42 = $t40_41.$get();
4641          $rt.runtime.boundsCheck($t39_40, $rt.builtin.byteLen($t41_42));
4642          $t42_43 = $rt.builtin.stringByteAt($t41_42, $t39_40);
4643          $t43_44 = ($t42_43 <= 57);
4644          if ($t43_44) {
4645            $block = 4; break;
4646          }
4647          else {
4648            $block = 5; break;
4649          }
4650          break;
4651        }
4652        case 8: {
4653          $t44_45 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4654          $t45_46 = $t44_45.$get();
4655          $t46_47 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4656          $t47_48 = $t46_47.$get();
4657          $rt.runtime.boundsCheck($t45_46, $rt.builtin.byteLen($t47_48));
4658          $t48_49 = $rt.builtin.stringByteAt($t47_48, $t45_46);
4659          $t49_50 = ($t48_49 >= 48);
4660          if ($t49_50) {
4661            $block = 7; break;
4662          }
4663          else {
4664            $block = 5; break;
4665          }
4666          break;
4667        }
4668        case 9: {
4669          $t50_51 = -$t31_32;
4670          $t51_52 = $t50_51;
4671          $block = 10; break;
4672          break;
4673        }
4674        case 10: {
4675          return $t51_52;
4676          break;
4677        }
4678      }
4679    }
4680  }
4681  
4682  $rt.types.getType('sw.mw')?.methods?.set('num', mw$num);
4683  export function mw$raw(w) {
4684    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;
4685    let $block = 0;
4686    while (true) {
4687      switch ($block) {
4688        case 0: {
4689          $t0_1 = mw$sep(w);
4690          $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4691          $t2_3 = $t1_2.$get();
4692          $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4693          $t4_5 = $t3_4.$get();
4694          $t5_6 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4695          $t6_7 = $t5_6.$get();
4696          $t7_8 = skipval($t4_5, $t6_7);
4697          $t8_9 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4698          $t8_9.$set($t7_8);
4699          $t9_10 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4700          $t10_11 = $t9_10.$get();
4701          $t11_12 = ($t10_11 < 0);
4702          if ($t11_12) {
4703            $block = 1; break;
4704          }
4705          else {
4706            $block = 2; break;
4707          }
4708          break;
4709        }
4710        case 1: {
4711          $t12_13 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4712          $t13_14 = $t12_13.$get();
4713          $t14_15 = $rt.builtin.len($t13_14);
4714          $t15_16 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4715          $t15_16.$set($t14_15);
4716          return '';
4717          break;
4718        }
4719        case 2: {
4720          $t16_17 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4721          $t17_18 = $t16_17.$get();
4722          $t18_19 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4723          $t19_20 = $t18_19.$get();
4724          $t20_21 = $rt.builtin.stringSlice($t17_18, $t2_3, $t19_20);
4725          return $t20_21;
4726          break;
4727        }
4728      }
4729    }
4730  }
4731  
4732  $rt.types.getType('sw.mw')?.methods?.set('raw', mw$raw);
4733  export function mw$sep(w) {
4734    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;
4735    let $block = 0;
4736    while (true) {
4737      switch ($block) {
4738        case 0: {
4739          $block = 3; break;
4740          break;
4741        }
4742        case 1: {
4743          $t0_1 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4744          $t1_2 = $t0_1.$get();
4745          $t2_3 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4746          $t3_4 = $t2_3.$get();
4747          $rt.runtime.boundsCheck($t1_2, $rt.builtin.byteLen($t3_4));
4748          $t4_5 = $rt.builtin.stringByteAt($t3_4, $t1_2);
4749          $t5_6 = ($t4_5 !== 32);
4750          if ($t5_6) {
4751            $block = 8; break;
4752          }
4753          else {
4754            $block = 4; break;
4755          }
4756          break;
4757        }
4758        case 2: {
4759          return;
4760          break;
4761        }
4762        case 3: {
4763          $t6_7 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4764          $t7_8 = $t6_7.$get();
4765          $t8_9 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4766          $t9_10 = $t8_9.$get();
4767          $t10_11 = $rt.builtin.len($t9_10);
4768          $t11_12 = ($t7_8 < $t10_11);
4769          if ($t11_12) {
4770            $block = 1; break;
4771          }
4772          else {
4773            $block = 2; break;
4774          }
4775          break;
4776        }
4777        case 4: {
4778          $t12_13 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4779          $t13_14 = $t12_13.$get();
4780          $t14_15 = ($t13_14 + 1);
4781          $t15_16 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4782          $t15_16.$set($t14_15);
4783          $block = 3; break;
4784          break;
4785        }
4786        case 5: {
4787          $t16_17 = ($t4_5 !== 44);
4788          if ($t16_17) {
4789            $block = 2; break;
4790          }
4791          else {
4792            $block = 4; break;
4793          }
4794          break;
4795        }
4796        case 6: {
4797          $t17_18 = ($t4_5 !== 9);
4798          if ($t17_18) {
4799            $block = 5; break;
4800          }
4801          else {
4802            $block = 4; break;
4803          }
4804          break;
4805        }
4806        case 7: {
4807          $t18_19 = ($t4_5 !== 13);
4808          if ($t18_19) {
4809            $block = 6; break;
4810          }
4811          else {
4812            $block = 4; break;
4813          }
4814          break;
4815        }
4816        case 8: {
4817          $t19_20 = ($t4_5 !== 10);
4818          if ($t19_20) {
4819            $block = 7; break;
4820          }
4821          else {
4822            $block = 4; break;
4823          }
4824          break;
4825        }
4826      }
4827    }
4828  }
4829  
4830  $rt.types.getType('sw.mw')?.methods?.set('sep', mw$sep);
4831  export function mw$str(w) {
4832    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, $t91_92, $t92_93, $t93_94, $t94_95, $t95_96, $t96_97, $t97_98, $t98_99, $t99_100, $t100_101, $t101_102, $t102_103, $t103_104, $t104_105, $t105_106, $t106_107, $t107_108, $t108_109, $t109_110, $t110_111, $t111_112, $t112_113, $t113_114, $t114_115, $t115_116, $t116_117, $t117_118, $t118_119, $t119_120, $t120_121, $t121_122, $t122_123, $t123_124, $t124_125, $t125_126, $t126_127, $t127_128, $t128_129, $t129_130, $t130_131, $t131_132, $t132_133, $t133_134, $t134_135, $t135_136, $t136_137, $t137_138, $t138_139, $t139_140, $t140_141, $t141_142, $t142_143, $t143_144, $t144_145, $t145_146, $t146_147, $t147_148, $t148_149, $t149_150, $t150_151, $t151_152, $t152_153, $t153_154, $t154_155, $t155_156, $t156_157, $t157_158, $t158_159, $t159_160, $t160_161, $t161_162, $t162_163, $t163_164, $t164_165, $t165_166, $t166_167, $t167_168, $t168_169, $t169_170, $t170_171, $t171_172, $t172_173, $t173_174, $t174_175, $t175_176, $t176_177, $t177_178, $t178_179, $t179_180, $t180_181, $t181_182, $t182_183, $t183_184, $t184_185, $t185_186, $t186_187, $t187_188, $t188_189, $t189_190, $t190_191, $t191_192, $t192_193, $t193_194, $t194_195, $t195_196, $t196_197, $t197_198, $t198_199, $t199_200, $t200_201, $t201_202, $t202_203, $t203_204, $t204_205, $t205_206, $t206_207, $t207_208, $t208_209, $t209_210, $t210_211, $t211_212, $t212_213, $t213_214;
4833    let $block = 0;
4834    while (true) {
4835      switch ($block) {
4836        case 0: {
4837          $t0_1 = mw$sep(w);
4838          $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4839          $t2_3 = $t1_2.$get();
4840          $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4841          $t4_5 = $t3_4.$get();
4842          $t5_6 = $rt.builtin.len($t4_5);
4843          $t6_7 = ($t2_3 >= $t5_6);
4844          if ($t6_7) {
4845            $block = 1; break;
4846          }
4847          else {
4848            $block = 3; break;
4849          }
4850          break;
4851        }
4852        case 1: {
4853          return '';
4854          break;
4855        }
4856        case 2: {
4857          $t7_8 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4858          $t8_9 = $t7_8.$get();
4859          $t9_10 = ($t8_9 + 1);
4860          $t10_11 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4861          $t10_11.$set($t9_10);
4862          $t11_12 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4863          $t12_13 = $t11_12.$get();
4864          $t31_32 = null;
4865          $t32_33 = false;
4866          $t33_34 = $t12_13;
4867          $block = 6; break;
4868          break;
4869        }
4870        case 3: {
4871          $t13_14 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4872          $t14_15 = $t13_14.$get();
4873          $t15_16 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4874          $t16_17 = $t15_16.$get();
4875          $rt.runtime.boundsCheck($t14_15, $rt.builtin.byteLen($t16_17));
4876          $t17_18 = $rt.builtin.stringByteAt($t16_17, $t14_15);
4877          $t18_19 = ($t17_18 !== 34);
4878          if ($t18_19) {
4879            $block = 1; break;
4880          }
4881          else {
4882            $block = 2; break;
4883          }
4884          break;
4885        }
4886        case 4: {
4887          $t19_20 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4888          $t20_21 = $t19_20.$get();
4889          $t21_22 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4890          $t22_23 = $t21_22.$get();
4891          $rt.runtime.boundsCheck($t20_21, $rt.builtin.byteLen($t22_23));
4892          $t23_24 = $rt.builtin.stringByteAt($t22_23, $t20_21);
4893          $t24_25 = ($t23_24 === 92);
4894          if ($t24_25) {
4895            $block = 10; break;
4896          }
4897          else {
4898            $block = 9; break;
4899          }
4900          break;
4901        }
4902        case 5: {
4903          $t25_26 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4904          $t26_27 = $t25_26.$get();
4905          $t27_28 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4906          $t28_29 = $t27_28.$get();
4907          $t29_30 = $rt.builtin.len($t28_29);
4908          $t30_31 = ($t26_27 >= $t29_30);
4909          if ($t30_31) {
4910            $block = 43; break;
4911          }
4912          else {
4913            $block = 44; break;
4914          }
4915          break;
4916        }
4917        case 6: {
4918          $t34_35 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4919          $t35_36 = $t34_35.$get();
4920          $t36_37 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4921          $t37_38 = $t36_37.$get();
4922          $t38_39 = $rt.builtin.len($t37_38);
4923          $t39_40 = ($t35_36 < $t38_39);
4924          if ($t39_40) {
4925            $block = 7; break;
4926          }
4927          else {
4928            $block = 5; break;
4929          }
4930          break;
4931        }
4932        case 7: {
4933          $t40_41 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4934          $t41_42 = $t40_41.$get();
4935          $t42_43 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4936          $t43_44 = $t42_43.$get();
4937          $rt.runtime.boundsCheck($t41_42, $rt.builtin.byteLen($t43_44));
4938          $t44_45 = $rt.builtin.stringByteAt($t43_44, $t41_42);
4939          $t45_46 = ($t44_45 !== 34);
4940          if ($t45_46) {
4941            $block = 4; break;
4942          }
4943          else {
4944            $block = 5; break;
4945          }
4946          break;
4947        }
4948        case 8: {
4949          $t46_47 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4950          $t47_48 = $t46_47.$get();
4951          $t48_49 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4952          $t49_50 = $t48_49.$get();
4953          $t50_51 = $rt.builtin.stringSlice($t47_48, $t33_34, $t49_50);
4954          $t51_52 = $rt.builtin.appendString($t31_32, $t50_51);
4955          $t52_53 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4956          $t53_54 = $t52_53.$get();
4957          $t54_55 = ($t53_54 + 1);
4958          $t55_56 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4959          $t55_56.$set($t54_55);
4960          $t56_57 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4961          $t57_58 = $t56_57.$get();
4962          $t58_59 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4963          $t59_60 = $t58_59.$get();
4964          $rt.runtime.boundsCheck($t57_58, $rt.builtin.byteLen($t59_60));
4965          $t60_61 = $rt.builtin.stringByteAt($t59_60, $t57_58);
4966          $t61_62 = ($t60_61 === 34);
4967          if ($t61_62) {
4968            $block = 12; break;
4969          }
4970          else {
4971            $block = 14; break;
4972          }
4973          break;
4974        }
4975        case 9: {
4976          $t62_63 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4977          $t63_64 = $t62_63.$get();
4978          $t64_65 = ($t63_64 + 1);
4979          $t65_66 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4980          $t65_66.$set($t64_65);
4981          let $phi0 = $t31_32;
4982          let $phi1 = $t32_33;
4983          let $phi2 = $t33_34;
4984          $t31_32 = $phi0;
4985          $t32_33 = $phi1;
4986          $t33_34 = $phi2;
4987          $block = 6; break;
4988          break;
4989        }
4990        case 10: {
4991          $t66_67 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
4992          $t67_68 = $t66_67.$get();
4993          $t68_69 = ($t67_68 + 1);
4994          $t69_70 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
4995          $t70_71 = $t69_70.$get();
4996          $t71_72 = $rt.builtin.len($t70_71);
4997          $t72_73 = ($t68_69 < $t71_72);
4998          if ($t72_73) {
4999            $block = 8; break;
5000          }
5001          else {
5002            $block = 9; break;
5003          }
5004          break;
5005        }
5006        case 11: {
5007          $t74_75 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5008          $t75_76 = $t74_75.$get();
5009          $t76_77 = ($t75_76 + 1);
5010          $t77_78 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5011          $t77_78.$set($t76_77);
5012          $t78_79 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5013          $t79_80 = $t78_79.$get();
5014          $t31_32 = $t73_74;
5015          $t32_33 = true;
5016          $t33_34 = $t79_80;
5017          $block = 6; break;
5018          break;
5019        }
5020        case 12: {
5021          $t80_81 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5022          $t81_82 = $t80_81.$get();
5023          $t82_83 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5024          $t83_84 = $t82_83.$get();
5025          $rt.runtime.boundsCheck($t81_82, $rt.builtin.byteLen($t83_84));
5026          $t84_85 = $rt.builtin.stringByteAt($t83_84, $t81_82);
5027          $t85_86 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5028          $t86_87 = $t85_86.$get().addr(0);
5029          $t86_87.$set($t84_85);
5030          $t87_88 = $rt.builtin.sliceSlice($t85_86.$get(), undefined, undefined, undefined);
5031          $t88_89 = $rt.builtin.appendSlice($t51_52, $t87_88);
5032          $t73_74 = $t88_89;
5033          $block = 11; break;
5034          break;
5035        }
5036        case 13: {
5037          $t89_90 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5038          $t90_91 = $t89_90.$get().addr(0);
5039          $t90_91.$set(10);
5040          $t91_92 = $rt.builtin.sliceSlice($t89_90.$get(), undefined, undefined, undefined);
5041          $t92_93 = $rt.builtin.appendSlice($t51_52, $t91_92);
5042          $t73_74 = $t92_93;
5043          $block = 11; break;
5044          break;
5045        }
5046        case 14: {
5047          $t93_94 = ($t60_61 === 92);
5048          if ($t93_94) {
5049            $block = 12; break;
5050          }
5051          else {
5052            $block = 15; break;
5053          }
5054          break;
5055        }
5056        case 15: {
5057          $t94_95 = ($t60_61 === 47);
5058          if ($t94_95) {
5059            $block = 12; break;
5060          }
5061          else {
5062            $block = 16; break;
5063          }
5064          break;
5065        }
5066        case 16: {
5067          $t95_96 = ($t60_61 === 110);
5068          if ($t95_96) {
5069            $block = 13; break;
5070          }
5071          else {
5072            $block = 18; break;
5073          }
5074          break;
5075        }
5076        case 17: {
5077          $t96_97 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5078          $t97_98 = $t96_97.$get().addr(0);
5079          $t97_98.$set(9);
5080          $t98_99 = $rt.builtin.sliceSlice($t96_97.$get(), undefined, undefined, undefined);
5081          $t99_100 = $rt.builtin.appendSlice($t51_52, $t98_99);
5082          $t73_74 = $t99_100;
5083          $block = 11; break;
5084          break;
5085        }
5086        case 18: {
5087          $t100_101 = ($t60_61 === 116);
5088          if ($t100_101) {
5089            $block = 17; break;
5090          }
5091          else {
5092            $block = 20; break;
5093          }
5094          break;
5095        }
5096        case 19: {
5097          $t101_102 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5098          $t102_103 = $t101_102.$get().addr(0);
5099          $t102_103.$set(13);
5100          $t103_104 = $rt.builtin.sliceSlice($t101_102.$get(), undefined, undefined, undefined);
5101          $t104_105 = $rt.builtin.appendSlice($t51_52, $t103_104);
5102          $t73_74 = $t104_105;
5103          $block = 11; break;
5104          break;
5105        }
5106        case 20: {
5107          $t105_106 = ($t60_61 === 114);
5108          if ($t105_106) {
5109            $block = 19; break;
5110          }
5111          else {
5112            $block = 22; break;
5113          }
5114          break;
5115        }
5116        case 21: {
5117          $t106_107 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5118          $t107_108 = $t106_107.$get();
5119          $t108_109 = ($t107_108 + 4);
5120          $t109_110 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5121          $t110_111 = $t109_110.$get();
5122          $t111_112 = $rt.builtin.len($t110_111);
5123          $t112_113 = ($t108_109 < $t111_112);
5124          if ($t112_113) {
5125            $block = 24; break;
5126          }
5127          else {
5128            $block = 25; break;
5129          }
5130          break;
5131        }
5132        case 22: {
5133          $t113_114 = ($t60_61 === 117);
5134          if ($t113_114) {
5135            $block = 21; break;
5136          }
5137          else {
5138            $block = 23; break;
5139          }
5140          break;
5141        }
5142        case 23: {
5143          $t114_115 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5144          $t115_116 = $t114_115.$get();
5145          $t116_117 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5146          $t117_118 = $t116_117.$get();
5147          $rt.runtime.boundsCheck($t115_116, $rt.builtin.byteLen($t117_118));
5148          $t118_119 = $rt.builtin.stringByteAt($t117_118, $t115_116);
5149          $t119_120 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5150          $t120_121 = $t119_120.$get().addr(0);
5151          $t120_121.$set(92);
5152          $t121_122 = $t119_120.$get().addr(1);
5153          $t121_122.$set($t118_119);
5154          $t122_123 = $rt.builtin.sliceSlice($t119_120.$get(), undefined, undefined, undefined);
5155          $t123_124 = $rt.builtin.appendSlice($t51_52, $t122_123);
5156          $t73_74 = $t123_124;
5157          $block = 11; break;
5158          break;
5159        }
5160        case 24: {
5161          $t129_130 = 0;
5162          $t130_131 = 1;
5163          $block = 26; break;
5164          break;
5165        }
5166        case 25: {
5167          $t124_125 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5168          $t125_126 = $t124_125.$get().addr(0);
5169          $t125_126.$set(92);
5170          $t126_127 = $t124_125.$get().addr(1);
5171          $t126_127.$set(117);
5172          $t127_128 = $rt.builtin.sliceSlice($t124_125.$get(), undefined, undefined, undefined);
5173          $t128_129 = $rt.builtin.appendSlice($t51_52, $t127_128);
5174          $t73_74 = $t128_129;
5175          $block = 11; break;
5176          break;
5177        }
5178        case 26: {
5179          $t131_132 = ($t130_131 <= 4);
5180          if ($t131_132) {
5181            $block = 27; break;
5182          }
5183          else {
5184            $block = 28; break;
5185          }
5186          break;
5187        }
5188        case 27: {
5189          $t132_133 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5190          $t133_134 = $t132_133.$get();
5191          $t134_135 = ($t133_134 + $t130_131);
5192          $t135_136 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5193          $t136_137 = $t135_136.$get();
5194          $rt.runtime.boundsCheck($t134_135, $rt.builtin.byteLen($t136_137));
5195          $t137_138 = $rt.builtin.stringByteAt($t136_137, $t134_135);
5196          $t138_139 = ($t129_130 * (2 ** 4));
5197          $t139_140 = ($t137_138 >= 48);
5198          if ($t139_140) {
5199            $block = 32; break;
5200          }
5201          else {
5202            $block = 31; break;
5203          }
5204          break;
5205        }
5206        case 28: {
5207          $t140_141 = ($t129_130 < 128);
5208          if ($t140_141) {
5209            $block = 38; break;
5210          }
5211          else {
5212            $block = 40; break;
5213          }
5214          break;
5215        }
5216        case 29: {
5217          $t141_142 = (($t137_138 - 48) & 0xFF);
5218          $t142_143 = $t141_142;
5219          $t143_144 = $rt.builtin.int64or($t138_139, $t142_143);
5220          $t144_145 = $t143_144;
5221          $block = 30; break;
5222          break;
5223        }
5224        case 30: {
5225          $t145_146 = ($t130_131 + 1);
5226          $t129_130 = $t144_145;
5227          $t130_131 = $t145_146;
5228          $block = 26; break;
5229          break;
5230        }
5231        case 31: {
5232          $t146_147 = ($t137_138 >= 97);
5233          if ($t146_147) {
5234            $block = 35; break;
5235          }
5236          else {
5237            $block = 34; break;
5238          }
5239          break;
5240        }
5241        case 32: {
5242          $t147_148 = ($t137_138 <= 57);
5243          if ($t147_148) {
5244            $block = 29; break;
5245          }
5246          else {
5247            $block = 31; break;
5248          }
5249          break;
5250        }
5251        case 33: {
5252          $t148_149 = (($t137_138 - 97) & 0xFF);
5253          $t149_150 = $t148_149;
5254          $t150_151 = ($t149_150 + 10);
5255          $t151_152 = $rt.builtin.int64or($t138_139, $t150_151);
5256          $t144_145 = $t151_152;
5257          $block = 30; break;
5258          break;
5259        }
5260        case 34: {
5261          $t152_153 = ($t137_138 >= 65);
5262          if ($t152_153) {
5263            $block = 37; break;
5264          }
5265          else {
5266            $t144_145 = $t138_139;
5267            $block = 30; break;
5268          }
5269          break;
5270        }
5271        case 35: {
5272          $t153_154 = ($t137_138 <= 102);
5273          if ($t153_154) {
5274            $block = 33; break;
5275          }
5276          else {
5277            $block = 34; break;
5278          }
5279          break;
5280        }
5281        case 36: {
5282          $t154_155 = (($t137_138 - 65) & 0xFF);
5283          $t155_156 = $t154_155;
5284          $t156_157 = ($t155_156 + 10);
5285          $t157_158 = $rt.builtin.int64or($t138_139, $t156_157);
5286          $t144_145 = $t157_158;
5287          $block = 30; break;
5288          break;
5289        }
5290        case 37: {
5291          $t158_159 = ($t137_138 <= 70);
5292          if ($t158_159) {
5293            $block = 36; break;
5294          }
5295          else {
5296            $t144_145 = $t138_139;
5297            $block = 30; break;
5298          }
5299          break;
5300        }
5301        case 38: {
5302          $t159_160 = ($t129_130 & 0xFF);
5303          $t160_161 = { $value: $rt.builtin.makeSlice(1, 1, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5304          $t161_162 = $t160_161.$get().addr(0);
5305          $t161_162.$set($t159_160);
5306          $t162_163 = $rt.builtin.sliceSlice($t160_161.$get(), undefined, undefined, undefined);
5307          $t163_164 = $rt.builtin.appendSlice($t51_52, $t162_163);
5308          $t164_165 = $t163_164;
5309          $block = 39; break;
5310          break;
5311        }
5312        case 39: {
5313          $t165_166 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5314          $t166_167 = $t165_166.$get();
5315          $t167_168 = ($t166_167 + 4);
5316          $t168_169 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5317          $t168_169.$set($t167_168);
5318          $t73_74 = $t164_165;
5319          $block = 11; break;
5320          break;
5321        }
5322        case 40: {
5323          $t169_170 = ($t129_130 < 2048);
5324          if ($t169_170) {
5325            $block = 41; break;
5326          }
5327          else {
5328            $block = 42; break;
5329          }
5330          break;
5331        }
5332        case 41: {
5333          $t170_171 = Math.trunc($t129_130 / (2 ** 6));
5334          $t171_172 = $rt.builtin.int64or(192, $t170_171);
5335          $t172_173 = ($t171_172 & 0xFF);
5336          $t173_174 = $rt.builtin.int64and($t129_130, 63);
5337          $t174_175 = $rt.builtin.int64or(128, $t173_174);
5338          $t175_176 = ($t174_175 & 0xFF);
5339          $t176_177 = { $value: $rt.builtin.makeSlice(2, 2, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5340          $t177_178 = $t176_177.$get().addr(0);
5341          $t177_178.$set($t172_173);
5342          $t178_179 = $t176_177.$get().addr(1);
5343          $t178_179.$set($t175_176);
5344          $t179_180 = $rt.builtin.sliceSlice($t176_177.$get(), undefined, undefined, undefined);
5345          $t180_181 = $rt.builtin.appendSlice($t51_52, $t179_180);
5346          $t164_165 = $t180_181;
5347          $block = 39; break;
5348          break;
5349        }
5350        case 42: {
5351          $t181_182 = Math.trunc($t129_130 / (2 ** 12));
5352          $t182_183 = $rt.builtin.int64or(224, $t181_182);
5353          $t183_184 = ($t182_183 & 0xFF);
5354          $t184_185 = Math.trunc($t129_130 / (2 ** 6));
5355          $t185_186 = $rt.builtin.int64and($t184_185, 63);
5356          $t186_187 = $rt.builtin.int64or(128, $t185_186);
5357          $t187_188 = ($t186_187 & 0xFF);
5358          $t188_189 = $rt.builtin.int64and($t129_130, 63);
5359          $t189_190 = $rt.builtin.int64or(128, $t188_189);
5360          $t190_191 = ($t189_190 & 0xFF);
5361          $t191_192 = { $value: $rt.builtin.makeSlice(3, 3, 0), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5362          $t192_193 = $t191_192.$get().addr(0);
5363          $t192_193.$set($t183_184);
5364          $t193_194 = $t191_192.$get().addr(1);
5365          $t193_194.$set($t187_188);
5366          $t194_195 = $t191_192.$get().addr(2);
5367          $t194_195.$set($t190_191);
5368          $t195_196 = $rt.builtin.sliceSlice($t191_192.$get(), undefined, undefined, undefined);
5369          $t196_197 = $rt.builtin.appendSlice($t51_52, $t195_196);
5370          $t164_165 = $t196_197;
5371          $block = 39; break;
5372          break;
5373        }
5374        case 43: {
5375          return '';
5376          break;
5377        }
5378        case 44: {
5379          if ($t32_33) {
5380            $block = 45; break;
5381          }
5382          else {
5383            $block = 47; break;
5384          }
5385          break;
5386        }
5387        case 45: {
5388          $t197_198 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5389          $t198_199 = $t197_198.$get();
5390          $t199_200 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5391          $t200_201 = $t199_200.$get();
5392          $t201_202 = $rt.builtin.stringSlice($t198_199, $t33_34, $t200_201);
5393          $t202_203 = $rt.builtin.appendString($t31_32, $t201_202);
5394          $t203_204 = $rt.builtin.bytesToString($t202_203);
5395          $t204_205 = $t203_204;
5396          $block = 46; break;
5397          break;
5398        }
5399        case 46: {
5400          $t205_206 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5401          $t206_207 = $t205_206.$get();
5402          $t207_208 = ($t206_207 + 1);
5403          $t208_209 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5404          $t208_209.$set($t207_208);
5405          return $t204_205;
5406          break;
5407        }
5408        case 47: {
5409          $t209_210 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5410          $t210_211 = $t209_210.$get();
5411          $t211_212 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5412          $t212_213 = $t211_212.$get();
5413          $t213_214 = $rt.builtin.stringSlice($t210_211, $t33_34, $t212_213);
5414          $t204_205 = $t213_214;
5415          $block = 46; break;
5416          break;
5417        }
5418      }
5419    }
5420  }
5421  
5422  $rt.types.getType('sw.mw')?.methods?.set('str', mw$str);
5423  export function mw$strs(w) {
5424    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;
5425    let $block = 0;
5426    while (true) {
5427      switch ($block) {
5428        case 0: {
5429          $t0_1 = mw$sep(w);
5430          $t1_2 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5431          $t2_3 = $t1_2.$get();
5432          $t3_4 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5433          $t4_5 = $t3_4.$get();
5434          $t5_6 = $rt.builtin.len($t4_5);
5435          $t6_7 = ($t2_3 >= $t5_6);
5436          if ($t6_7) {
5437            $block = 1; break;
5438          }
5439          else {
5440            $block = 3; break;
5441          }
5442          break;
5443        }
5444        case 1: {
5445          return null;
5446          break;
5447        }
5448        case 2: {
5449          $t7_8 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5450          $t8_9 = $t7_8.$get();
5451          $t9_10 = ($t8_9 + 1);
5452          $t10_11 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5453          $t10_11.$set($t9_10);
5454          $t17_18 = null;
5455          $block = 4; break;
5456          break;
5457        }
5458        case 3: {
5459          $t11_12 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5460          $t12_13 = $t11_12.$get();
5461          $t13_14 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5462          $t14_15 = $t13_14.$get();
5463          $rt.runtime.boundsCheck($t12_13, $rt.builtin.byteLen($t14_15));
5464          $t15_16 = $rt.builtin.stringByteAt($t14_15, $t12_13);
5465          $t16_17 = ($t15_16 !== 91);
5466          if ($t16_17) {
5467            $block = 1; break;
5468          }
5469          else {
5470            $block = 2; break;
5471          }
5472          break;
5473        }
5474        case 4: {
5475          $t18_19 = mw$sep(w);
5476          $t19_20 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5477          $t20_21 = $t19_20.$get();
5478          $t21_22 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5479          $t22_23 = $t21_22.$get();
5480          $t23_24 = $rt.builtin.len($t22_23);
5481          $t24_25 = ($t20_21 >= $t23_24);
5482          if ($t24_25) {
5483            $block = 5; break;
5484          }
5485          else {
5486            $block = 6; break;
5487          }
5488          break;
5489        }
5490        case 5: {
5491          return $t17_18;
5492          break;
5493        }
5494        case 6: {
5495          $t25_26 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5496          $t26_27 = $t25_26.$get();
5497          $t27_28 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5498          $t28_29 = $t27_28.$get();
5499          $rt.runtime.boundsCheck($t26_27, $rt.builtin.byteLen($t28_29));
5500          $t29_30 = $rt.builtin.stringByteAt($t28_29, $t26_27);
5501          $t30_31 = ($t29_30 === 93);
5502          if ($t30_31) {
5503            $block = 7; break;
5504          }
5505          else {
5506            $block = 8; break;
5507          }
5508          break;
5509        }
5510        case 7: {
5511          $t31_32 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5512          $t32_33 = $t31_32.$get();
5513          $t33_34 = ($t32_33 + 1);
5514          $t34_35 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5515          $t34_35.$set($t33_34);
5516          return $t17_18;
5517          break;
5518        }
5519        case 8: {
5520          $t35_36 = { $get() { return w.$get().i; }, $set(v) { const obj = w.$get(); obj.i = v; w.$set(obj); } };
5521          $t36_37 = $t35_36.$get();
5522          $t37_38 = { $get() { return w.$get().s; }, $set(v) { const obj = w.$get(); obj.s = v; w.$set(obj); } };
5523          $t38_39 = $t37_38.$get();
5524          $rt.runtime.boundsCheck($t36_37, $rt.builtin.byteLen($t38_39));
5525          $t39_40 = $rt.builtin.stringByteAt($t38_39, $t36_37);
5526          $t40_41 = ($t39_40 !== 34);
5527          if ($t40_41) {
5528            $block = 9; break;
5529          }
5530          else {
5531            $block = 10; break;
5532          }
5533          break;
5534        }
5535        case 9: {
5536          return $t17_18;
5537          break;
5538        }
5539        case 10: {
5540          $t41_42 = mw$str(w);
5541          $t42_43 = { $value: $rt.builtin.makeSlice(1, 1, ''), $get() { return this.$value; }, $set(v) { this.$value = v; } };
5542          $t43_44 = $t42_43.$get().addr(0);
5543          $t43_44.$set($t41_42);
5544          $t44_45 = $rt.builtin.sliceSlice($t42_43.$get(), undefined, undefined, undefined);
5545          $t45_46 = $rt.builtin.appendSlice($t17_18, $t44_45);
5546          $t17_18 = $t45_46;
5547          $block = 4; break;
5548          break;
5549        }
5550      }
5551    }
5552  }
5553  
5554  $rt.types.getType('sw.mw')?.methods?.set('strs', mw$strs);
5555