@bytecodealliance/jco 1.0.2 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/obj/wasm-tools.js CHANGED
@@ -46,14 +46,48 @@ async function fetchCompile (url) {
46
46
 
47
47
  function getErrorPayload(e) {
48
48
  if (e && hasOwnProperty.call(e, 'payload')) return e.payload;
49
+ if (e instanceof Error) throw e;
49
50
  return e;
50
51
  }
51
52
 
53
+ const handleTables = [];
54
+
52
55
  const hasOwnProperty = Object.prototype.hasOwnProperty;
53
56
 
54
57
  const instantiateCore = WebAssembly.instantiate;
55
58
 
56
- const resourceHandleSymbol = Symbol('resource');
59
+ const T_FLAG = 1 << 30;
60
+
61
+ function rscTableCreateOwn (table, rep) {
62
+ if (rep === 0) throw new TypeError('Invalid rep');
63
+ const free = table[0] & ~T_FLAG;
64
+ if (free === 0) {
65
+ table.push(0);
66
+ table.push(rep | T_FLAG);
67
+ return (table.length >> 1) - 1;
68
+ }
69
+ table[0] = table[free << 1];
70
+ table[free << 1] = 0;
71
+ table[(free << 1) + 1] = rep | T_FLAG;
72
+ return free;
73
+ }
74
+
75
+ function rscTableRemove (table, handle) {
76
+ const scope = table[handle << 1];
77
+ const val = table[(handle << 1) + 1];
78
+ const own = (val & T_FLAG) !== 0;
79
+ const rep = val & ~T_FLAG;
80
+ if (val === 0 || (scope & T_FLAG) !== 0) throw new TypeError('Invalid handle');
81
+ table[handle << 1] = table[0] | T_FLAG;
82
+ table[0] = handle | T_FLAG;
83
+ return { rep, scope, own };
84
+ }
85
+
86
+ const symbolCabiDispose = Symbol.for('cabiDispose');
87
+
88
+ const symbolRscHandle = Symbol('handle');
89
+
90
+ const symbolRscRep = Symbol.for('cabiRep');
57
91
 
58
92
  const symbolDispose = Symbol.dispose || Symbol.for('dispose');
59
93
 
@@ -96,18 +130,26 @@ function utf8Encode(s, realloc, memory) {
96
130
 
97
131
  let exports0;
98
132
  let exports1;
133
+ const handleTable2 = [T_FLAG, 0];
134
+ const captureTable2= new Map();
135
+ let captureCnt2 = 0;
136
+ handleTables[2] = handleTable2;
99
137
 
100
- function trampoline7() {
138
+ function trampoline5() {
101
139
  const ret = getStderr();
102
140
  if (!(ret instanceof OutputStream)) {
103
- throw new Error('Resource error: Not a valid "OutputStream" resource.');
141
+ throw new TypeError('Resource error: Not a valid "OutputStream" resource.');
142
+ }
143
+ var handle0 = ret[symbolRscHandle];
144
+ if (!handle0) {
145
+ const rep = ret[symbolRscRep] || ++captureCnt2;
146
+ captureTable2.set(rep, ret);
147
+ handle0 = rscTableCreateOwn(handleTable2, rep);
104
148
  }
105
- var handle0 = handleCnt2++;
106
- handleTable2.set(handle0, { rep: ret, own: true });
107
149
  return handle0;
108
150
  }
109
151
 
110
- function trampoline8(arg0) {
152
+ function trampoline6(arg0) {
111
153
  let variant0;
112
154
  switch (arg0) {
113
155
  case 0: {
@@ -130,27 +172,45 @@ function trampoline8(arg0) {
130
172
  }
131
173
  exit(variant0);
132
174
  }
175
+ const handleTable1 = [T_FLAG, 0];
176
+ const captureTable1= new Map();
177
+ let captureCnt1 = 0;
178
+ handleTables[1] = handleTable1;
133
179
 
134
- function trampoline9() {
180
+ function trampoline7() {
135
181
  const ret = getStdin();
136
182
  if (!(ret instanceof InputStream)) {
137
- throw new Error('Resource error: Not a valid "InputStream" resource.');
183
+ throw new TypeError('Resource error: Not a valid "InputStream" resource.');
184
+ }
185
+ var handle0 = ret[symbolRscHandle];
186
+ if (!handle0) {
187
+ const rep = ret[symbolRscRep] || ++captureCnt1;
188
+ captureTable1.set(rep, ret);
189
+ handle0 = rscTableCreateOwn(handleTable1, rep);
138
190
  }
139
- var handle0 = handleCnt1++;
140
- handleTable1.set(handle0, { rep: ret, own: true });
141
191
  return handle0;
142
192
  }
143
193
 
144
- function trampoline10() {
194
+ function trampoline8() {
145
195
  const ret = getStdout();
146
196
  if (!(ret instanceof OutputStream)) {
147
- throw new Error('Resource error: Not a valid "OutputStream" resource.');
197
+ throw new TypeError('Resource error: Not a valid "OutputStream" resource.');
198
+ }
199
+ var handle0 = ret[symbolRscHandle];
200
+ if (!handle0) {
201
+ const rep = ret[symbolRscRep] || ++captureCnt2;
202
+ captureTable2.set(rep, ret);
203
+ handle0 = rscTableCreateOwn(handleTable2, rep);
148
204
  }
149
- var handle0 = handleCnt2++;
150
- handleTable2.set(handle0, { rep: ret, own: true });
151
205
  return handle0;
152
206
  }
153
207
  let exports2;
208
+ let memory0;
209
+ let realloc0;
210
+ const handleTable5 = [T_FLAG, 0];
211
+ const captureTable5= new Map();
212
+ let captureCnt5 = 0;
213
+ handleTables[5] = handleTable5;
154
214
 
155
215
  function trampoline11(arg0) {
156
216
  const ret = getDirectories();
@@ -161,10 +221,14 @@ function trampoline11(arg0) {
161
221
  const e = vec3[i];
162
222
  const base = result3 + i * 12;var [tuple0_0, tuple0_1] = e;
163
223
  if (!(tuple0_0 instanceof Descriptor)) {
164
- throw new Error('Resource error: Not a valid "Descriptor" resource.');
224
+ throw new TypeError('Resource error: Not a valid "Descriptor" resource.');
225
+ }
226
+ var handle1 = tuple0_0[symbolRscHandle];
227
+ if (!handle1) {
228
+ const rep = tuple0_0[symbolRscRep] || ++captureCnt5;
229
+ captureTable5.set(rep, tuple0_0);
230
+ handle1 = rscTableCreateOwn(handleTable5, rep);
165
231
  }
166
- var handle1 = handleCnt5++;
167
- handleTable5.set(handle1, { rep: tuple0_0, own: true });
168
232
  dataView(memory0).setInt32(base + 0, handle1, true);
169
233
  var ptr2 = utf8Encode(tuple0_1, realloc0, memory0);
170
234
  var len2 = utf8EncodedLen;
@@ -174,183 +238,192 @@ function trampoline11(arg0) {
174
238
  dataView(memory0).setInt32(arg0 + 4, len3, true);
175
239
  dataView(memory0).setInt32(arg0 + 0, result3, true);
176
240
  }
177
- let memory0;
178
- let realloc0;
179
241
 
180
242
  function trampoline12(arg0, arg1, arg2) {
181
243
  var handle1 = arg0;
182
- var rsc0 = handleTable5.get(handle1).rep;
244
+ var rep2 = handleTable5[(handle1 << 1) + 1] & ~T_FLAG;
245
+ var rsc0 = captureTable5.get(rep2);
246
+ if (!rsc0) {
247
+ rsc0 = Object.create(Descriptor.prototype);
248
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
249
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
250
+ }
183
251
  let ret;
184
252
  try {
185
- ret = { tag: 'ok', val: Descriptor.prototype.readViaStream.call(rsc0, BigInt.asUintN(64, arg1)) };
253
+ ret = { tag: 'ok', val: rsc0.readViaStream(BigInt.asUintN(64, arg1))};
186
254
  } catch (e) {
187
255
  ret = { tag: 'err', val: getErrorPayload(e) };
188
256
  }
189
- var variant4 = ret;
190
- switch (variant4.tag) {
257
+ rsc0[symbolRscHandle] = null;
258
+ var variant5 = ret;
259
+ switch (variant5.tag) {
191
260
  case 'ok': {
192
- const e = variant4.val;
261
+ const e = variant5.val;
193
262
  dataView(memory0).setInt8(arg2 + 0, 0, true);
194
263
  if (!(e instanceof InputStream)) {
195
- throw new Error('Resource error: Not a valid "InputStream" resource.');
264
+ throw new TypeError('Resource error: Not a valid "InputStream" resource.');
265
+ }
266
+ var handle3 = e[symbolRscHandle];
267
+ if (!handle3) {
268
+ const rep = e[symbolRscRep] || ++captureCnt1;
269
+ captureTable1.set(rep, e);
270
+ handle3 = rscTableCreateOwn(handleTable1, rep);
196
271
  }
197
- var handle2 = handleCnt1++;
198
- handleTable1.set(handle2, { rep: e, own: true });
199
- dataView(memory0).setInt32(arg2 + 4, handle2, true);
272
+ dataView(memory0).setInt32(arg2 + 4, handle3, true);
200
273
  break;
201
274
  }
202
275
  case 'err': {
203
- const e = variant4.val;
276
+ const e = variant5.val;
204
277
  dataView(memory0).setInt8(arg2 + 0, 1, true);
205
- var val3 = e;
206
- let enum3;
207
- switch (val3) {
278
+ var val4 = e;
279
+ let enum4;
280
+ switch (val4) {
208
281
  case 'access': {
209
- enum3 = 0;
282
+ enum4 = 0;
210
283
  break;
211
284
  }
212
285
  case 'would-block': {
213
- enum3 = 1;
286
+ enum4 = 1;
214
287
  break;
215
288
  }
216
289
  case 'already': {
217
- enum3 = 2;
290
+ enum4 = 2;
218
291
  break;
219
292
  }
220
293
  case 'bad-descriptor': {
221
- enum3 = 3;
294
+ enum4 = 3;
222
295
  break;
223
296
  }
224
297
  case 'busy': {
225
- enum3 = 4;
298
+ enum4 = 4;
226
299
  break;
227
300
  }
228
301
  case 'deadlock': {
229
- enum3 = 5;
302
+ enum4 = 5;
230
303
  break;
231
304
  }
232
305
  case 'quota': {
233
- enum3 = 6;
306
+ enum4 = 6;
234
307
  break;
235
308
  }
236
309
  case 'exist': {
237
- enum3 = 7;
310
+ enum4 = 7;
238
311
  break;
239
312
  }
240
313
  case 'file-too-large': {
241
- enum3 = 8;
314
+ enum4 = 8;
242
315
  break;
243
316
  }
244
317
  case 'illegal-byte-sequence': {
245
- enum3 = 9;
318
+ enum4 = 9;
246
319
  break;
247
320
  }
248
321
  case 'in-progress': {
249
- enum3 = 10;
322
+ enum4 = 10;
250
323
  break;
251
324
  }
252
325
  case 'interrupted': {
253
- enum3 = 11;
326
+ enum4 = 11;
254
327
  break;
255
328
  }
256
329
  case 'invalid': {
257
- enum3 = 12;
330
+ enum4 = 12;
258
331
  break;
259
332
  }
260
333
  case 'io': {
261
- enum3 = 13;
334
+ enum4 = 13;
262
335
  break;
263
336
  }
264
337
  case 'is-directory': {
265
- enum3 = 14;
338
+ enum4 = 14;
266
339
  break;
267
340
  }
268
341
  case 'loop': {
269
- enum3 = 15;
342
+ enum4 = 15;
270
343
  break;
271
344
  }
272
345
  case 'too-many-links': {
273
- enum3 = 16;
346
+ enum4 = 16;
274
347
  break;
275
348
  }
276
349
  case 'message-size': {
277
- enum3 = 17;
350
+ enum4 = 17;
278
351
  break;
279
352
  }
280
353
  case 'name-too-long': {
281
- enum3 = 18;
354
+ enum4 = 18;
282
355
  break;
283
356
  }
284
357
  case 'no-device': {
285
- enum3 = 19;
358
+ enum4 = 19;
286
359
  break;
287
360
  }
288
361
  case 'no-entry': {
289
- enum3 = 20;
362
+ enum4 = 20;
290
363
  break;
291
364
  }
292
365
  case 'no-lock': {
293
- enum3 = 21;
366
+ enum4 = 21;
294
367
  break;
295
368
  }
296
369
  case 'insufficient-memory': {
297
- enum3 = 22;
370
+ enum4 = 22;
298
371
  break;
299
372
  }
300
373
  case 'insufficient-space': {
301
- enum3 = 23;
374
+ enum4 = 23;
302
375
  break;
303
376
  }
304
377
  case 'not-directory': {
305
- enum3 = 24;
378
+ enum4 = 24;
306
379
  break;
307
380
  }
308
381
  case 'not-empty': {
309
- enum3 = 25;
382
+ enum4 = 25;
310
383
  break;
311
384
  }
312
385
  case 'not-recoverable': {
313
- enum3 = 26;
386
+ enum4 = 26;
314
387
  break;
315
388
  }
316
389
  case 'unsupported': {
317
- enum3 = 27;
390
+ enum4 = 27;
318
391
  break;
319
392
  }
320
393
  case 'no-tty': {
321
- enum3 = 28;
394
+ enum4 = 28;
322
395
  break;
323
396
  }
324
397
  case 'no-such-device': {
325
- enum3 = 29;
398
+ enum4 = 29;
326
399
  break;
327
400
  }
328
401
  case 'overflow': {
329
- enum3 = 30;
402
+ enum4 = 30;
330
403
  break;
331
404
  }
332
405
  case 'not-permitted': {
333
- enum3 = 31;
406
+ enum4 = 31;
334
407
  break;
335
408
  }
336
409
  case 'pipe': {
337
- enum3 = 32;
410
+ enum4 = 32;
338
411
  break;
339
412
  }
340
413
  case 'read-only': {
341
- enum3 = 33;
414
+ enum4 = 33;
342
415
  break;
343
416
  }
344
417
  case 'invalid-seek': {
345
- enum3 = 34;
418
+ enum4 = 34;
346
419
  break;
347
420
  }
348
421
  case 'text-file-busy': {
349
- enum3 = 35;
422
+ enum4 = 35;
350
423
  break;
351
424
  }
352
425
  case 'cross-device': {
353
- enum3 = 36;
426
+ enum4 = 36;
354
427
  break;
355
428
  }
356
429
  default: {
@@ -358,10 +431,10 @@ function trampoline12(arg0, arg1, arg2) {
358
431
  console.error(e);
359
432
  }
360
433
 
361
- throw new TypeError(`"${val3}" is not one of the cases of error-code`);
434
+ throw new TypeError(`"${val4}" is not one of the cases of error-code`);
362
435
  }
363
436
  }
364
- dataView(memory0).setInt8(arg2 + 4, enum3, true);
437
+ dataView(memory0).setInt8(arg2 + 4, enum4, true);
365
438
  break;
366
439
  }
367
440
  default: {
@@ -372,178 +445,189 @@ function trampoline12(arg0, arg1, arg2) {
372
445
 
373
446
  function trampoline13(arg0, arg1, arg2) {
374
447
  var handle1 = arg0;
375
- var rsc0 = handleTable5.get(handle1).rep;
448
+ var rep2 = handleTable5[(handle1 << 1) + 1] & ~T_FLAG;
449
+ var rsc0 = captureTable5.get(rep2);
450
+ if (!rsc0) {
451
+ rsc0 = Object.create(Descriptor.prototype);
452
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
453
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
454
+ }
376
455
  let ret;
377
456
  try {
378
- ret = { tag: 'ok', val: Descriptor.prototype.writeViaStream.call(rsc0, BigInt.asUintN(64, arg1)) };
457
+ ret = { tag: 'ok', val: rsc0.writeViaStream(BigInt.asUintN(64, arg1))};
379
458
  } catch (e) {
380
459
  ret = { tag: 'err', val: getErrorPayload(e) };
381
460
  }
382
- var variant4 = ret;
383
- switch (variant4.tag) {
461
+ rsc0[symbolRscHandle] = null;
462
+ var variant5 = ret;
463
+ switch (variant5.tag) {
384
464
  case 'ok': {
385
- const e = variant4.val;
465
+ const e = variant5.val;
386
466
  dataView(memory0).setInt8(arg2 + 0, 0, true);
387
467
  if (!(e instanceof OutputStream)) {
388
- throw new Error('Resource error: Not a valid "OutputStream" resource.');
468
+ throw new TypeError('Resource error: Not a valid "OutputStream" resource.');
389
469
  }
390
- var handle2 = handleCnt2++;
391
- handleTable2.set(handle2, { rep: e, own: true });
392
- dataView(memory0).setInt32(arg2 + 4, handle2, true);
470
+ var handle3 = e[symbolRscHandle];
471
+ if (!handle3) {
472
+ const rep = e[symbolRscRep] || ++captureCnt2;
473
+ captureTable2.set(rep, e);
474
+ handle3 = rscTableCreateOwn(handleTable2, rep);
475
+ }
476
+ dataView(memory0).setInt32(arg2 + 4, handle3, true);
393
477
  break;
394
478
  }
395
479
  case 'err': {
396
- const e = variant4.val;
480
+ const e = variant5.val;
397
481
  dataView(memory0).setInt8(arg2 + 0, 1, true);
398
- var val3 = e;
399
- let enum3;
400
- switch (val3) {
482
+ var val4 = e;
483
+ let enum4;
484
+ switch (val4) {
401
485
  case 'access': {
402
- enum3 = 0;
486
+ enum4 = 0;
403
487
  break;
404
488
  }
405
489
  case 'would-block': {
406
- enum3 = 1;
490
+ enum4 = 1;
407
491
  break;
408
492
  }
409
493
  case 'already': {
410
- enum3 = 2;
494
+ enum4 = 2;
411
495
  break;
412
496
  }
413
497
  case 'bad-descriptor': {
414
- enum3 = 3;
498
+ enum4 = 3;
415
499
  break;
416
500
  }
417
501
  case 'busy': {
418
- enum3 = 4;
502
+ enum4 = 4;
419
503
  break;
420
504
  }
421
505
  case 'deadlock': {
422
- enum3 = 5;
506
+ enum4 = 5;
423
507
  break;
424
508
  }
425
509
  case 'quota': {
426
- enum3 = 6;
510
+ enum4 = 6;
427
511
  break;
428
512
  }
429
513
  case 'exist': {
430
- enum3 = 7;
514
+ enum4 = 7;
431
515
  break;
432
516
  }
433
517
  case 'file-too-large': {
434
- enum3 = 8;
518
+ enum4 = 8;
435
519
  break;
436
520
  }
437
521
  case 'illegal-byte-sequence': {
438
- enum3 = 9;
522
+ enum4 = 9;
439
523
  break;
440
524
  }
441
525
  case 'in-progress': {
442
- enum3 = 10;
526
+ enum4 = 10;
443
527
  break;
444
528
  }
445
529
  case 'interrupted': {
446
- enum3 = 11;
530
+ enum4 = 11;
447
531
  break;
448
532
  }
449
533
  case 'invalid': {
450
- enum3 = 12;
534
+ enum4 = 12;
451
535
  break;
452
536
  }
453
537
  case 'io': {
454
- enum3 = 13;
538
+ enum4 = 13;
455
539
  break;
456
540
  }
457
541
  case 'is-directory': {
458
- enum3 = 14;
542
+ enum4 = 14;
459
543
  break;
460
544
  }
461
545
  case 'loop': {
462
- enum3 = 15;
546
+ enum4 = 15;
463
547
  break;
464
548
  }
465
549
  case 'too-many-links': {
466
- enum3 = 16;
550
+ enum4 = 16;
467
551
  break;
468
552
  }
469
553
  case 'message-size': {
470
- enum3 = 17;
554
+ enum4 = 17;
471
555
  break;
472
556
  }
473
557
  case 'name-too-long': {
474
- enum3 = 18;
558
+ enum4 = 18;
475
559
  break;
476
560
  }
477
561
  case 'no-device': {
478
- enum3 = 19;
562
+ enum4 = 19;
479
563
  break;
480
564
  }
481
565
  case 'no-entry': {
482
- enum3 = 20;
566
+ enum4 = 20;
483
567
  break;
484
568
  }
485
569
  case 'no-lock': {
486
- enum3 = 21;
570
+ enum4 = 21;
487
571
  break;
488
572
  }
489
573
  case 'insufficient-memory': {
490
- enum3 = 22;
574
+ enum4 = 22;
491
575
  break;
492
576
  }
493
577
  case 'insufficient-space': {
494
- enum3 = 23;
578
+ enum4 = 23;
495
579
  break;
496
580
  }
497
581
  case 'not-directory': {
498
- enum3 = 24;
582
+ enum4 = 24;
499
583
  break;
500
584
  }
501
585
  case 'not-empty': {
502
- enum3 = 25;
586
+ enum4 = 25;
503
587
  break;
504
588
  }
505
589
  case 'not-recoverable': {
506
- enum3 = 26;
590
+ enum4 = 26;
507
591
  break;
508
592
  }
509
593
  case 'unsupported': {
510
- enum3 = 27;
594
+ enum4 = 27;
511
595
  break;
512
596
  }
513
597
  case 'no-tty': {
514
- enum3 = 28;
598
+ enum4 = 28;
515
599
  break;
516
600
  }
517
601
  case 'no-such-device': {
518
- enum3 = 29;
602
+ enum4 = 29;
519
603
  break;
520
604
  }
521
605
  case 'overflow': {
522
- enum3 = 30;
606
+ enum4 = 30;
523
607
  break;
524
608
  }
525
609
  case 'not-permitted': {
526
- enum3 = 31;
610
+ enum4 = 31;
527
611
  break;
528
612
  }
529
613
  case 'pipe': {
530
- enum3 = 32;
614
+ enum4 = 32;
531
615
  break;
532
616
  }
533
617
  case 'read-only': {
534
- enum3 = 33;
618
+ enum4 = 33;
535
619
  break;
536
620
  }
537
621
  case 'invalid-seek': {
538
- enum3 = 34;
622
+ enum4 = 34;
539
623
  break;
540
624
  }
541
625
  case 'text-file-busy': {
542
- enum3 = 35;
626
+ enum4 = 35;
543
627
  break;
544
628
  }
545
629
  case 'cross-device': {
546
- enum3 = 36;
630
+ enum4 = 36;
547
631
  break;
548
632
  }
549
633
  default: {
@@ -551,10 +635,10 @@ function trampoline13(arg0, arg1, arg2) {
551
635
  console.error(e);
552
636
  }
553
637
 
554
- throw new TypeError(`"${val3}" is not one of the cases of error-code`);
638
+ throw new TypeError(`"${val4}" is not one of the cases of error-code`);
555
639
  }
556
640
  }
557
- dataView(memory0).setInt8(arg2 + 4, enum3, true);
641
+ dataView(memory0).setInt8(arg2 + 4, enum4, true);
558
642
  break;
559
643
  }
560
644
  default: {
@@ -565,178 +649,189 @@ function trampoline13(arg0, arg1, arg2) {
565
649
 
566
650
  function trampoline14(arg0, arg1) {
567
651
  var handle1 = arg0;
568
- var rsc0 = handleTable5.get(handle1).rep;
652
+ var rep2 = handleTable5[(handle1 << 1) + 1] & ~T_FLAG;
653
+ var rsc0 = captureTable5.get(rep2);
654
+ if (!rsc0) {
655
+ rsc0 = Object.create(Descriptor.prototype);
656
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
657
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
658
+ }
569
659
  let ret;
570
660
  try {
571
- ret = { tag: 'ok', val: Descriptor.prototype.appendViaStream.call(rsc0) };
661
+ ret = { tag: 'ok', val: rsc0.appendViaStream()};
572
662
  } catch (e) {
573
663
  ret = { tag: 'err', val: getErrorPayload(e) };
574
664
  }
575
- var variant4 = ret;
576
- switch (variant4.tag) {
665
+ rsc0[symbolRscHandle] = null;
666
+ var variant5 = ret;
667
+ switch (variant5.tag) {
577
668
  case 'ok': {
578
- const e = variant4.val;
669
+ const e = variant5.val;
579
670
  dataView(memory0).setInt8(arg1 + 0, 0, true);
580
671
  if (!(e instanceof OutputStream)) {
581
- throw new Error('Resource error: Not a valid "OutputStream" resource.');
672
+ throw new TypeError('Resource error: Not a valid "OutputStream" resource.');
673
+ }
674
+ var handle3 = e[symbolRscHandle];
675
+ if (!handle3) {
676
+ const rep = e[symbolRscRep] || ++captureCnt2;
677
+ captureTable2.set(rep, e);
678
+ handle3 = rscTableCreateOwn(handleTable2, rep);
582
679
  }
583
- var handle2 = handleCnt2++;
584
- handleTable2.set(handle2, { rep: e, own: true });
585
- dataView(memory0).setInt32(arg1 + 4, handle2, true);
680
+ dataView(memory0).setInt32(arg1 + 4, handle3, true);
586
681
  break;
587
682
  }
588
683
  case 'err': {
589
- const e = variant4.val;
684
+ const e = variant5.val;
590
685
  dataView(memory0).setInt8(arg1 + 0, 1, true);
591
- var val3 = e;
592
- let enum3;
593
- switch (val3) {
686
+ var val4 = e;
687
+ let enum4;
688
+ switch (val4) {
594
689
  case 'access': {
595
- enum3 = 0;
690
+ enum4 = 0;
596
691
  break;
597
692
  }
598
693
  case 'would-block': {
599
- enum3 = 1;
694
+ enum4 = 1;
600
695
  break;
601
696
  }
602
697
  case 'already': {
603
- enum3 = 2;
698
+ enum4 = 2;
604
699
  break;
605
700
  }
606
701
  case 'bad-descriptor': {
607
- enum3 = 3;
702
+ enum4 = 3;
608
703
  break;
609
704
  }
610
705
  case 'busy': {
611
- enum3 = 4;
706
+ enum4 = 4;
612
707
  break;
613
708
  }
614
709
  case 'deadlock': {
615
- enum3 = 5;
710
+ enum4 = 5;
616
711
  break;
617
712
  }
618
713
  case 'quota': {
619
- enum3 = 6;
714
+ enum4 = 6;
620
715
  break;
621
716
  }
622
717
  case 'exist': {
623
- enum3 = 7;
718
+ enum4 = 7;
624
719
  break;
625
720
  }
626
721
  case 'file-too-large': {
627
- enum3 = 8;
722
+ enum4 = 8;
628
723
  break;
629
724
  }
630
725
  case 'illegal-byte-sequence': {
631
- enum3 = 9;
726
+ enum4 = 9;
632
727
  break;
633
728
  }
634
729
  case 'in-progress': {
635
- enum3 = 10;
730
+ enum4 = 10;
636
731
  break;
637
732
  }
638
733
  case 'interrupted': {
639
- enum3 = 11;
734
+ enum4 = 11;
640
735
  break;
641
736
  }
642
737
  case 'invalid': {
643
- enum3 = 12;
738
+ enum4 = 12;
644
739
  break;
645
740
  }
646
741
  case 'io': {
647
- enum3 = 13;
742
+ enum4 = 13;
648
743
  break;
649
744
  }
650
745
  case 'is-directory': {
651
- enum3 = 14;
746
+ enum4 = 14;
652
747
  break;
653
748
  }
654
749
  case 'loop': {
655
- enum3 = 15;
750
+ enum4 = 15;
656
751
  break;
657
752
  }
658
753
  case 'too-many-links': {
659
- enum3 = 16;
754
+ enum4 = 16;
660
755
  break;
661
756
  }
662
757
  case 'message-size': {
663
- enum3 = 17;
758
+ enum4 = 17;
664
759
  break;
665
760
  }
666
761
  case 'name-too-long': {
667
- enum3 = 18;
762
+ enum4 = 18;
668
763
  break;
669
764
  }
670
765
  case 'no-device': {
671
- enum3 = 19;
766
+ enum4 = 19;
672
767
  break;
673
768
  }
674
769
  case 'no-entry': {
675
- enum3 = 20;
770
+ enum4 = 20;
676
771
  break;
677
772
  }
678
773
  case 'no-lock': {
679
- enum3 = 21;
774
+ enum4 = 21;
680
775
  break;
681
776
  }
682
777
  case 'insufficient-memory': {
683
- enum3 = 22;
778
+ enum4 = 22;
684
779
  break;
685
780
  }
686
781
  case 'insufficient-space': {
687
- enum3 = 23;
782
+ enum4 = 23;
688
783
  break;
689
784
  }
690
785
  case 'not-directory': {
691
- enum3 = 24;
786
+ enum4 = 24;
692
787
  break;
693
788
  }
694
789
  case 'not-empty': {
695
- enum3 = 25;
790
+ enum4 = 25;
696
791
  break;
697
792
  }
698
793
  case 'not-recoverable': {
699
- enum3 = 26;
794
+ enum4 = 26;
700
795
  break;
701
796
  }
702
797
  case 'unsupported': {
703
- enum3 = 27;
798
+ enum4 = 27;
704
799
  break;
705
800
  }
706
801
  case 'no-tty': {
707
- enum3 = 28;
802
+ enum4 = 28;
708
803
  break;
709
804
  }
710
805
  case 'no-such-device': {
711
- enum3 = 29;
806
+ enum4 = 29;
712
807
  break;
713
808
  }
714
809
  case 'overflow': {
715
- enum3 = 30;
810
+ enum4 = 30;
716
811
  break;
717
812
  }
718
813
  case 'not-permitted': {
719
- enum3 = 31;
814
+ enum4 = 31;
720
815
  break;
721
816
  }
722
817
  case 'pipe': {
723
- enum3 = 32;
818
+ enum4 = 32;
724
819
  break;
725
820
  }
726
821
  case 'read-only': {
727
- enum3 = 33;
822
+ enum4 = 33;
728
823
  break;
729
824
  }
730
825
  case 'invalid-seek': {
731
- enum3 = 34;
826
+ enum4 = 34;
732
827
  break;
733
828
  }
734
829
  case 'text-file-busy': {
735
- enum3 = 35;
830
+ enum4 = 35;
736
831
  break;
737
832
  }
738
833
  case 'cross-device': {
739
- enum3 = 36;
834
+ enum4 = 36;
740
835
  break;
741
836
  }
742
837
  default: {
@@ -744,10 +839,10 @@ function trampoline14(arg0, arg1) {
744
839
  console.error(e);
745
840
  }
746
841
 
747
- throw new TypeError(`"${val3}" is not one of the cases of error-code`);
842
+ throw new TypeError(`"${val4}" is not one of the cases of error-code`);
748
843
  }
749
844
  }
750
- dataView(memory0).setInt8(arg1 + 4, enum3, true);
845
+ dataView(memory0).setInt8(arg1 + 4, enum4, true);
751
846
  break;
752
847
  }
753
848
  default: {
@@ -758,51 +853,58 @@ function trampoline14(arg0, arg1) {
758
853
 
759
854
  function trampoline15(arg0, arg1) {
760
855
  var handle1 = arg0;
761
- var rsc0 = handleTable5.get(handle1).rep;
856
+ var rep2 = handleTable5[(handle1 << 1) + 1] & ~T_FLAG;
857
+ var rsc0 = captureTable5.get(rep2);
858
+ if (!rsc0) {
859
+ rsc0 = Object.create(Descriptor.prototype);
860
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
861
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
862
+ }
762
863
  let ret;
763
864
  try {
764
- ret = { tag: 'ok', val: Descriptor.prototype.getType.call(rsc0) };
865
+ ret = { tag: 'ok', val: rsc0.getType()};
765
866
  } catch (e) {
766
867
  ret = { tag: 'err', val: getErrorPayload(e) };
767
868
  }
768
- var variant4 = ret;
769
- switch (variant4.tag) {
869
+ rsc0[symbolRscHandle] = null;
870
+ var variant5 = ret;
871
+ switch (variant5.tag) {
770
872
  case 'ok': {
771
- const e = variant4.val;
873
+ const e = variant5.val;
772
874
  dataView(memory0).setInt8(arg1 + 0, 0, true);
773
- var val2 = e;
774
- let enum2;
775
- switch (val2) {
875
+ var val3 = e;
876
+ let enum3;
877
+ switch (val3) {
776
878
  case 'unknown': {
777
- enum2 = 0;
879
+ enum3 = 0;
778
880
  break;
779
881
  }
780
882
  case 'block-device': {
781
- enum2 = 1;
883
+ enum3 = 1;
782
884
  break;
783
885
  }
784
886
  case 'character-device': {
785
- enum2 = 2;
887
+ enum3 = 2;
786
888
  break;
787
889
  }
788
890
  case 'directory': {
789
- enum2 = 3;
891
+ enum3 = 3;
790
892
  break;
791
893
  }
792
894
  case 'fifo': {
793
- enum2 = 4;
895
+ enum3 = 4;
794
896
  break;
795
897
  }
796
898
  case 'symbolic-link': {
797
- enum2 = 5;
899
+ enum3 = 5;
798
900
  break;
799
901
  }
800
902
  case 'regular-file': {
801
- enum2 = 6;
903
+ enum3 = 6;
802
904
  break;
803
905
  }
804
906
  case 'socket': {
805
- enum2 = 7;
907
+ enum3 = 7;
806
908
  break;
807
909
  }
808
910
  default: {
@@ -810,164 +912,164 @@ function trampoline15(arg0, arg1) {
810
912
  console.error(e);
811
913
  }
812
914
 
813
- throw new TypeError(`"${val2}" is not one of the cases of descriptor-type`);
915
+ throw new TypeError(`"${val3}" is not one of the cases of descriptor-type`);
814
916
  }
815
917
  }
816
- dataView(memory0).setInt8(arg1 + 1, enum2, true);
918
+ dataView(memory0).setInt8(arg1 + 1, enum3, true);
817
919
  break;
818
920
  }
819
921
  case 'err': {
820
- const e = variant4.val;
922
+ const e = variant5.val;
821
923
  dataView(memory0).setInt8(arg1 + 0, 1, true);
822
- var val3 = e;
823
- let enum3;
824
- switch (val3) {
924
+ var val4 = e;
925
+ let enum4;
926
+ switch (val4) {
825
927
  case 'access': {
826
- enum3 = 0;
928
+ enum4 = 0;
827
929
  break;
828
930
  }
829
931
  case 'would-block': {
830
- enum3 = 1;
932
+ enum4 = 1;
831
933
  break;
832
934
  }
833
935
  case 'already': {
834
- enum3 = 2;
936
+ enum4 = 2;
835
937
  break;
836
938
  }
837
939
  case 'bad-descriptor': {
838
- enum3 = 3;
940
+ enum4 = 3;
839
941
  break;
840
942
  }
841
943
  case 'busy': {
842
- enum3 = 4;
944
+ enum4 = 4;
843
945
  break;
844
946
  }
845
947
  case 'deadlock': {
846
- enum3 = 5;
948
+ enum4 = 5;
847
949
  break;
848
950
  }
849
951
  case 'quota': {
850
- enum3 = 6;
952
+ enum4 = 6;
851
953
  break;
852
954
  }
853
955
  case 'exist': {
854
- enum3 = 7;
956
+ enum4 = 7;
855
957
  break;
856
958
  }
857
959
  case 'file-too-large': {
858
- enum3 = 8;
960
+ enum4 = 8;
859
961
  break;
860
962
  }
861
963
  case 'illegal-byte-sequence': {
862
- enum3 = 9;
964
+ enum4 = 9;
863
965
  break;
864
966
  }
865
967
  case 'in-progress': {
866
- enum3 = 10;
968
+ enum4 = 10;
867
969
  break;
868
970
  }
869
971
  case 'interrupted': {
870
- enum3 = 11;
972
+ enum4 = 11;
871
973
  break;
872
974
  }
873
975
  case 'invalid': {
874
- enum3 = 12;
976
+ enum4 = 12;
875
977
  break;
876
978
  }
877
979
  case 'io': {
878
- enum3 = 13;
980
+ enum4 = 13;
879
981
  break;
880
982
  }
881
983
  case 'is-directory': {
882
- enum3 = 14;
984
+ enum4 = 14;
883
985
  break;
884
986
  }
885
987
  case 'loop': {
886
- enum3 = 15;
988
+ enum4 = 15;
887
989
  break;
888
990
  }
889
991
  case 'too-many-links': {
890
- enum3 = 16;
992
+ enum4 = 16;
891
993
  break;
892
994
  }
893
995
  case 'message-size': {
894
- enum3 = 17;
996
+ enum4 = 17;
895
997
  break;
896
998
  }
897
999
  case 'name-too-long': {
898
- enum3 = 18;
1000
+ enum4 = 18;
899
1001
  break;
900
1002
  }
901
1003
  case 'no-device': {
902
- enum3 = 19;
1004
+ enum4 = 19;
903
1005
  break;
904
1006
  }
905
1007
  case 'no-entry': {
906
- enum3 = 20;
1008
+ enum4 = 20;
907
1009
  break;
908
1010
  }
909
1011
  case 'no-lock': {
910
- enum3 = 21;
1012
+ enum4 = 21;
911
1013
  break;
912
1014
  }
913
1015
  case 'insufficient-memory': {
914
- enum3 = 22;
1016
+ enum4 = 22;
915
1017
  break;
916
1018
  }
917
1019
  case 'insufficient-space': {
918
- enum3 = 23;
1020
+ enum4 = 23;
919
1021
  break;
920
1022
  }
921
1023
  case 'not-directory': {
922
- enum3 = 24;
1024
+ enum4 = 24;
923
1025
  break;
924
1026
  }
925
1027
  case 'not-empty': {
926
- enum3 = 25;
1028
+ enum4 = 25;
927
1029
  break;
928
1030
  }
929
1031
  case 'not-recoverable': {
930
- enum3 = 26;
1032
+ enum4 = 26;
931
1033
  break;
932
1034
  }
933
1035
  case 'unsupported': {
934
- enum3 = 27;
1036
+ enum4 = 27;
935
1037
  break;
936
1038
  }
937
1039
  case 'no-tty': {
938
- enum3 = 28;
1040
+ enum4 = 28;
939
1041
  break;
940
1042
  }
941
1043
  case 'no-such-device': {
942
- enum3 = 29;
1044
+ enum4 = 29;
943
1045
  break;
944
1046
  }
945
1047
  case 'overflow': {
946
- enum3 = 30;
1048
+ enum4 = 30;
947
1049
  break;
948
1050
  }
949
1051
  case 'not-permitted': {
950
- enum3 = 31;
1052
+ enum4 = 31;
951
1053
  break;
952
1054
  }
953
1055
  case 'pipe': {
954
- enum3 = 32;
1056
+ enum4 = 32;
955
1057
  break;
956
1058
  }
957
1059
  case 'read-only': {
958
- enum3 = 33;
1060
+ enum4 = 33;
959
1061
  break;
960
1062
  }
961
1063
  case 'invalid-seek': {
962
- enum3 = 34;
1064
+ enum4 = 34;
963
1065
  break;
964
1066
  }
965
1067
  case 'text-file-busy': {
966
- enum3 = 35;
1068
+ enum4 = 35;
967
1069
  break;
968
1070
  }
969
1071
  case 'cross-device': {
970
- enum3 = 36;
1072
+ enum4 = 36;
971
1073
  break;
972
1074
  }
973
1075
  default: {
@@ -975,10 +1077,10 @@ function trampoline15(arg0, arg1) {
975
1077
  console.error(e);
976
1078
  }
977
1079
 
978
- throw new TypeError(`"${val3}" is not one of the cases of error-code`);
1080
+ throw new TypeError(`"${val4}" is not one of the cases of error-code`);
979
1081
  }
980
1082
  }
981
- dataView(memory0).setInt8(arg1 + 1, enum3, true);
1083
+ dataView(memory0).setInt8(arg1 + 1, enum4, true);
982
1084
  break;
983
1085
  }
984
1086
  default: {
@@ -986,181 +1088,196 @@ function trampoline15(arg0, arg1) {
986
1088
  }
987
1089
  }
988
1090
  }
1091
+ const handleTable6 = [T_FLAG, 0];
1092
+ const captureTable6= new Map();
1093
+ let captureCnt6 = 0;
1094
+ handleTables[6] = handleTable6;
989
1095
 
990
1096
  function trampoline16(arg0, arg1) {
991
1097
  var handle1 = arg0;
992
- var rsc0 = handleTable5.get(handle1).rep;
1098
+ var rep2 = handleTable5[(handle1 << 1) + 1] & ~T_FLAG;
1099
+ var rsc0 = captureTable5.get(rep2);
1100
+ if (!rsc0) {
1101
+ rsc0 = Object.create(Descriptor.prototype);
1102
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
1103
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
1104
+ }
993
1105
  let ret;
994
1106
  try {
995
- ret = { tag: 'ok', val: Descriptor.prototype.readDirectory.call(rsc0) };
1107
+ ret = { tag: 'ok', val: rsc0.readDirectory()};
996
1108
  } catch (e) {
997
1109
  ret = { tag: 'err', val: getErrorPayload(e) };
998
1110
  }
999
- var variant4 = ret;
1000
- switch (variant4.tag) {
1111
+ rsc0[symbolRscHandle] = null;
1112
+ var variant5 = ret;
1113
+ switch (variant5.tag) {
1001
1114
  case 'ok': {
1002
- const e = variant4.val;
1115
+ const e = variant5.val;
1003
1116
  dataView(memory0).setInt8(arg1 + 0, 0, true);
1004
1117
  if (!(e instanceof DirectoryEntryStream)) {
1005
- throw new Error('Resource error: Not a valid "DirectoryEntryStream" resource.');
1118
+ throw new TypeError('Resource error: Not a valid "DirectoryEntryStream" resource.');
1119
+ }
1120
+ var handle3 = e[symbolRscHandle];
1121
+ if (!handle3) {
1122
+ const rep = e[symbolRscRep] || ++captureCnt6;
1123
+ captureTable6.set(rep, e);
1124
+ handle3 = rscTableCreateOwn(handleTable6, rep);
1006
1125
  }
1007
- var handle2 = handleCnt6++;
1008
- handleTable6.set(handle2, { rep: e, own: true });
1009
- dataView(memory0).setInt32(arg1 + 4, handle2, true);
1126
+ dataView(memory0).setInt32(arg1 + 4, handle3, true);
1010
1127
  break;
1011
1128
  }
1012
1129
  case 'err': {
1013
- const e = variant4.val;
1130
+ const e = variant5.val;
1014
1131
  dataView(memory0).setInt8(arg1 + 0, 1, true);
1015
- var val3 = e;
1016
- let enum3;
1017
- switch (val3) {
1132
+ var val4 = e;
1133
+ let enum4;
1134
+ switch (val4) {
1018
1135
  case 'access': {
1019
- enum3 = 0;
1136
+ enum4 = 0;
1020
1137
  break;
1021
1138
  }
1022
1139
  case 'would-block': {
1023
- enum3 = 1;
1140
+ enum4 = 1;
1024
1141
  break;
1025
1142
  }
1026
1143
  case 'already': {
1027
- enum3 = 2;
1144
+ enum4 = 2;
1028
1145
  break;
1029
1146
  }
1030
1147
  case 'bad-descriptor': {
1031
- enum3 = 3;
1148
+ enum4 = 3;
1032
1149
  break;
1033
1150
  }
1034
1151
  case 'busy': {
1035
- enum3 = 4;
1152
+ enum4 = 4;
1036
1153
  break;
1037
1154
  }
1038
1155
  case 'deadlock': {
1039
- enum3 = 5;
1156
+ enum4 = 5;
1040
1157
  break;
1041
1158
  }
1042
1159
  case 'quota': {
1043
- enum3 = 6;
1160
+ enum4 = 6;
1044
1161
  break;
1045
1162
  }
1046
1163
  case 'exist': {
1047
- enum3 = 7;
1164
+ enum4 = 7;
1048
1165
  break;
1049
1166
  }
1050
1167
  case 'file-too-large': {
1051
- enum3 = 8;
1168
+ enum4 = 8;
1052
1169
  break;
1053
1170
  }
1054
1171
  case 'illegal-byte-sequence': {
1055
- enum3 = 9;
1172
+ enum4 = 9;
1056
1173
  break;
1057
1174
  }
1058
1175
  case 'in-progress': {
1059
- enum3 = 10;
1176
+ enum4 = 10;
1060
1177
  break;
1061
1178
  }
1062
1179
  case 'interrupted': {
1063
- enum3 = 11;
1180
+ enum4 = 11;
1064
1181
  break;
1065
1182
  }
1066
1183
  case 'invalid': {
1067
- enum3 = 12;
1184
+ enum4 = 12;
1068
1185
  break;
1069
1186
  }
1070
1187
  case 'io': {
1071
- enum3 = 13;
1188
+ enum4 = 13;
1072
1189
  break;
1073
1190
  }
1074
1191
  case 'is-directory': {
1075
- enum3 = 14;
1192
+ enum4 = 14;
1076
1193
  break;
1077
1194
  }
1078
1195
  case 'loop': {
1079
- enum3 = 15;
1196
+ enum4 = 15;
1080
1197
  break;
1081
1198
  }
1082
1199
  case 'too-many-links': {
1083
- enum3 = 16;
1200
+ enum4 = 16;
1084
1201
  break;
1085
1202
  }
1086
1203
  case 'message-size': {
1087
- enum3 = 17;
1204
+ enum4 = 17;
1088
1205
  break;
1089
1206
  }
1090
1207
  case 'name-too-long': {
1091
- enum3 = 18;
1208
+ enum4 = 18;
1092
1209
  break;
1093
1210
  }
1094
1211
  case 'no-device': {
1095
- enum3 = 19;
1212
+ enum4 = 19;
1096
1213
  break;
1097
1214
  }
1098
1215
  case 'no-entry': {
1099
- enum3 = 20;
1216
+ enum4 = 20;
1100
1217
  break;
1101
1218
  }
1102
1219
  case 'no-lock': {
1103
- enum3 = 21;
1220
+ enum4 = 21;
1104
1221
  break;
1105
1222
  }
1106
1223
  case 'insufficient-memory': {
1107
- enum3 = 22;
1224
+ enum4 = 22;
1108
1225
  break;
1109
1226
  }
1110
1227
  case 'insufficient-space': {
1111
- enum3 = 23;
1228
+ enum4 = 23;
1112
1229
  break;
1113
1230
  }
1114
1231
  case 'not-directory': {
1115
- enum3 = 24;
1232
+ enum4 = 24;
1116
1233
  break;
1117
1234
  }
1118
1235
  case 'not-empty': {
1119
- enum3 = 25;
1236
+ enum4 = 25;
1120
1237
  break;
1121
1238
  }
1122
1239
  case 'not-recoverable': {
1123
- enum3 = 26;
1240
+ enum4 = 26;
1124
1241
  break;
1125
1242
  }
1126
1243
  case 'unsupported': {
1127
- enum3 = 27;
1244
+ enum4 = 27;
1128
1245
  break;
1129
1246
  }
1130
1247
  case 'no-tty': {
1131
- enum3 = 28;
1248
+ enum4 = 28;
1132
1249
  break;
1133
1250
  }
1134
1251
  case 'no-such-device': {
1135
- enum3 = 29;
1252
+ enum4 = 29;
1136
1253
  break;
1137
1254
  }
1138
1255
  case 'overflow': {
1139
- enum3 = 30;
1256
+ enum4 = 30;
1140
1257
  break;
1141
1258
  }
1142
1259
  case 'not-permitted': {
1143
- enum3 = 31;
1260
+ enum4 = 31;
1144
1261
  break;
1145
1262
  }
1146
1263
  case 'pipe': {
1147
- enum3 = 32;
1264
+ enum4 = 32;
1148
1265
  break;
1149
1266
  }
1150
1267
  case 'read-only': {
1151
- enum3 = 33;
1268
+ enum4 = 33;
1152
1269
  break;
1153
1270
  }
1154
1271
  case 'invalid-seek': {
1155
- enum3 = 34;
1272
+ enum4 = 34;
1156
1273
  break;
1157
1274
  }
1158
1275
  case 'text-file-busy': {
1159
- enum3 = 35;
1276
+ enum4 = 35;
1160
1277
  break;
1161
1278
  }
1162
1279
  case 'cross-device': {
1163
- enum3 = 36;
1280
+ enum4 = 36;
1164
1281
  break;
1165
1282
  }
1166
1283
  default: {
@@ -1168,10 +1285,10 @@ function trampoline16(arg0, arg1) {
1168
1285
  console.error(e);
1169
1286
  }
1170
1287
 
1171
- throw new TypeError(`"${val3}" is not one of the cases of error-code`);
1288
+ throw new TypeError(`"${val4}" is not one of the cases of error-code`);
1172
1289
  }
1173
1290
  }
1174
- dataView(memory0).setInt8(arg1 + 4, enum3, true);
1291
+ dataView(memory0).setInt8(arg1 + 4, enum4, true);
1175
1292
  break;
1176
1293
  }
1177
1294
  default: {
@@ -1182,249 +1299,256 @@ function trampoline16(arg0, arg1) {
1182
1299
 
1183
1300
  function trampoline17(arg0, arg1) {
1184
1301
  var handle1 = arg0;
1185
- var rsc0 = handleTable5.get(handle1).rep;
1302
+ var rep2 = handleTable5[(handle1 << 1) + 1] & ~T_FLAG;
1303
+ var rsc0 = captureTable5.get(rep2);
1304
+ if (!rsc0) {
1305
+ rsc0 = Object.create(Descriptor.prototype);
1306
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
1307
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
1308
+ }
1186
1309
  let ret;
1187
1310
  try {
1188
- ret = { tag: 'ok', val: Descriptor.prototype.stat.call(rsc0) };
1311
+ ret = { tag: 'ok', val: rsc0.stat()};
1189
1312
  } catch (e) {
1190
1313
  ret = { tag: 'err', val: getErrorPayload(e) };
1191
1314
  }
1192
- var variant11 = ret;
1193
- switch (variant11.tag) {
1315
+ rsc0[symbolRscHandle] = null;
1316
+ var variant12 = ret;
1317
+ switch (variant12.tag) {
1194
1318
  case 'ok': {
1195
- const e = variant11.val;
1319
+ const e = variant12.val;
1196
1320
  dataView(memory0).setInt8(arg1 + 0, 0, true);
1197
- var {type: v2_0, linkCount: v2_1, size: v2_2, dataAccessTimestamp: v2_3, dataModificationTimestamp: v2_4, statusChangeTimestamp: v2_5 } = e;
1198
- var val3 = v2_0;
1199
- let enum3;
1200
- switch (val3) {
1321
+ var {type: v3_0, linkCount: v3_1, size: v3_2, dataAccessTimestamp: v3_3, dataModificationTimestamp: v3_4, statusChangeTimestamp: v3_5 } = e;
1322
+ var val4 = v3_0;
1323
+ let enum4;
1324
+ switch (val4) {
1201
1325
  case 'unknown': {
1202
- enum3 = 0;
1326
+ enum4 = 0;
1203
1327
  break;
1204
1328
  }
1205
1329
  case 'block-device': {
1206
- enum3 = 1;
1330
+ enum4 = 1;
1207
1331
  break;
1208
1332
  }
1209
1333
  case 'character-device': {
1210
- enum3 = 2;
1334
+ enum4 = 2;
1211
1335
  break;
1212
1336
  }
1213
1337
  case 'directory': {
1214
- enum3 = 3;
1338
+ enum4 = 3;
1215
1339
  break;
1216
1340
  }
1217
1341
  case 'fifo': {
1218
- enum3 = 4;
1342
+ enum4 = 4;
1219
1343
  break;
1220
1344
  }
1221
1345
  case 'symbolic-link': {
1222
- enum3 = 5;
1346
+ enum4 = 5;
1223
1347
  break;
1224
1348
  }
1225
1349
  case 'regular-file': {
1226
- enum3 = 6;
1350
+ enum4 = 6;
1227
1351
  break;
1228
1352
  }
1229
1353
  case 'socket': {
1230
- enum3 = 7;
1354
+ enum4 = 7;
1231
1355
  break;
1232
1356
  }
1233
1357
  default: {
1234
- if ((v2_0) instanceof Error) {
1235
- console.error(v2_0);
1358
+ if ((v3_0) instanceof Error) {
1359
+ console.error(v3_0);
1236
1360
  }
1237
1361
 
1238
- throw new TypeError(`"${val3}" is not one of the cases of descriptor-type`);
1362
+ throw new TypeError(`"${val4}" is not one of the cases of descriptor-type`);
1239
1363
  }
1240
1364
  }
1241
- dataView(memory0).setInt8(arg1 + 8, enum3, true);
1242
- dataView(memory0).setBigInt64(arg1 + 16, toUint64(v2_1), true);
1243
- dataView(memory0).setBigInt64(arg1 + 24, toUint64(v2_2), true);
1244
- var variant5 = v2_3;
1245
- if (variant5 === null || variant5=== undefined) {
1365
+ dataView(memory0).setInt8(arg1 + 8, enum4, true);
1366
+ dataView(memory0).setBigInt64(arg1 + 16, toUint64(v3_1), true);
1367
+ dataView(memory0).setBigInt64(arg1 + 24, toUint64(v3_2), true);
1368
+ var variant6 = v3_3;
1369
+ if (variant6 === null || variant6=== undefined) {
1246
1370
  dataView(memory0).setInt8(arg1 + 32, 0, true);
1247
1371
  } else {
1248
- const e = variant5;
1372
+ const e = variant6;
1249
1373
  dataView(memory0).setInt8(arg1 + 32, 1, true);
1250
- var {seconds: v4_0, nanoseconds: v4_1 } = e;
1251
- dataView(memory0).setBigInt64(arg1 + 40, toUint64(v4_0), true);
1252
- dataView(memory0).setInt32(arg1 + 48, toUint32(v4_1), true);
1374
+ var {seconds: v5_0, nanoseconds: v5_1 } = e;
1375
+ dataView(memory0).setBigInt64(arg1 + 40, toUint64(v5_0), true);
1376
+ dataView(memory0).setInt32(arg1 + 48, toUint32(v5_1), true);
1253
1377
  }
1254
- var variant7 = v2_4;
1255
- if (variant7 === null || variant7=== undefined) {
1378
+ var variant8 = v3_4;
1379
+ if (variant8 === null || variant8=== undefined) {
1256
1380
  dataView(memory0).setInt8(arg1 + 56, 0, true);
1257
1381
  } else {
1258
- const e = variant7;
1382
+ const e = variant8;
1259
1383
  dataView(memory0).setInt8(arg1 + 56, 1, true);
1260
- var {seconds: v6_0, nanoseconds: v6_1 } = e;
1261
- dataView(memory0).setBigInt64(arg1 + 64, toUint64(v6_0), true);
1262
- dataView(memory0).setInt32(arg1 + 72, toUint32(v6_1), true);
1384
+ var {seconds: v7_0, nanoseconds: v7_1 } = e;
1385
+ dataView(memory0).setBigInt64(arg1 + 64, toUint64(v7_0), true);
1386
+ dataView(memory0).setInt32(arg1 + 72, toUint32(v7_1), true);
1263
1387
  }
1264
- var variant9 = v2_5;
1265
- if (variant9 === null || variant9=== undefined) {
1388
+ var variant10 = v3_5;
1389
+ if (variant10 === null || variant10=== undefined) {
1266
1390
  dataView(memory0).setInt8(arg1 + 80, 0, true);
1267
1391
  } else {
1268
- const e = variant9;
1392
+ const e = variant10;
1269
1393
  dataView(memory0).setInt8(arg1 + 80, 1, true);
1270
- var {seconds: v8_0, nanoseconds: v8_1 } = e;
1271
- dataView(memory0).setBigInt64(arg1 + 88, toUint64(v8_0), true);
1272
- dataView(memory0).setInt32(arg1 + 96, toUint32(v8_1), true);
1394
+ var {seconds: v9_0, nanoseconds: v9_1 } = e;
1395
+ dataView(memory0).setBigInt64(arg1 + 88, toUint64(v9_0), true);
1396
+ dataView(memory0).setInt32(arg1 + 96, toUint32(v9_1), true);
1273
1397
  }
1274
1398
  break;
1275
1399
  }
1276
1400
  case 'err': {
1277
- const e = variant11.val;
1401
+ const e = variant12.val;
1278
1402
  dataView(memory0).setInt8(arg1 + 0, 1, true);
1279
- var val10 = e;
1280
- let enum10;
1281
- switch (val10) {
1403
+ var val11 = e;
1404
+ let enum11;
1405
+ switch (val11) {
1282
1406
  case 'access': {
1283
- enum10 = 0;
1407
+ enum11 = 0;
1284
1408
  break;
1285
1409
  }
1286
1410
  case 'would-block': {
1287
- enum10 = 1;
1411
+ enum11 = 1;
1288
1412
  break;
1289
1413
  }
1290
1414
  case 'already': {
1291
- enum10 = 2;
1415
+ enum11 = 2;
1292
1416
  break;
1293
1417
  }
1294
1418
  case 'bad-descriptor': {
1295
- enum10 = 3;
1419
+ enum11 = 3;
1296
1420
  break;
1297
1421
  }
1298
1422
  case 'busy': {
1299
- enum10 = 4;
1423
+ enum11 = 4;
1300
1424
  break;
1301
1425
  }
1302
1426
  case 'deadlock': {
1303
- enum10 = 5;
1427
+ enum11 = 5;
1304
1428
  break;
1305
1429
  }
1306
1430
  case 'quota': {
1307
- enum10 = 6;
1431
+ enum11 = 6;
1308
1432
  break;
1309
1433
  }
1310
1434
  case 'exist': {
1311
- enum10 = 7;
1435
+ enum11 = 7;
1312
1436
  break;
1313
1437
  }
1314
1438
  case 'file-too-large': {
1315
- enum10 = 8;
1439
+ enum11 = 8;
1316
1440
  break;
1317
1441
  }
1318
1442
  case 'illegal-byte-sequence': {
1319
- enum10 = 9;
1443
+ enum11 = 9;
1320
1444
  break;
1321
1445
  }
1322
1446
  case 'in-progress': {
1323
- enum10 = 10;
1447
+ enum11 = 10;
1324
1448
  break;
1325
1449
  }
1326
1450
  case 'interrupted': {
1327
- enum10 = 11;
1451
+ enum11 = 11;
1328
1452
  break;
1329
1453
  }
1330
1454
  case 'invalid': {
1331
- enum10 = 12;
1455
+ enum11 = 12;
1332
1456
  break;
1333
1457
  }
1334
1458
  case 'io': {
1335
- enum10 = 13;
1459
+ enum11 = 13;
1336
1460
  break;
1337
1461
  }
1338
1462
  case 'is-directory': {
1339
- enum10 = 14;
1463
+ enum11 = 14;
1340
1464
  break;
1341
1465
  }
1342
1466
  case 'loop': {
1343
- enum10 = 15;
1467
+ enum11 = 15;
1344
1468
  break;
1345
1469
  }
1346
1470
  case 'too-many-links': {
1347
- enum10 = 16;
1471
+ enum11 = 16;
1348
1472
  break;
1349
1473
  }
1350
1474
  case 'message-size': {
1351
- enum10 = 17;
1475
+ enum11 = 17;
1352
1476
  break;
1353
1477
  }
1354
1478
  case 'name-too-long': {
1355
- enum10 = 18;
1479
+ enum11 = 18;
1356
1480
  break;
1357
1481
  }
1358
1482
  case 'no-device': {
1359
- enum10 = 19;
1483
+ enum11 = 19;
1360
1484
  break;
1361
1485
  }
1362
1486
  case 'no-entry': {
1363
- enum10 = 20;
1487
+ enum11 = 20;
1364
1488
  break;
1365
1489
  }
1366
1490
  case 'no-lock': {
1367
- enum10 = 21;
1491
+ enum11 = 21;
1368
1492
  break;
1369
1493
  }
1370
1494
  case 'insufficient-memory': {
1371
- enum10 = 22;
1495
+ enum11 = 22;
1372
1496
  break;
1373
1497
  }
1374
1498
  case 'insufficient-space': {
1375
- enum10 = 23;
1499
+ enum11 = 23;
1376
1500
  break;
1377
1501
  }
1378
1502
  case 'not-directory': {
1379
- enum10 = 24;
1503
+ enum11 = 24;
1380
1504
  break;
1381
1505
  }
1382
1506
  case 'not-empty': {
1383
- enum10 = 25;
1507
+ enum11 = 25;
1384
1508
  break;
1385
1509
  }
1386
1510
  case 'not-recoverable': {
1387
- enum10 = 26;
1511
+ enum11 = 26;
1388
1512
  break;
1389
1513
  }
1390
1514
  case 'unsupported': {
1391
- enum10 = 27;
1515
+ enum11 = 27;
1392
1516
  break;
1393
1517
  }
1394
1518
  case 'no-tty': {
1395
- enum10 = 28;
1519
+ enum11 = 28;
1396
1520
  break;
1397
1521
  }
1398
1522
  case 'no-such-device': {
1399
- enum10 = 29;
1523
+ enum11 = 29;
1400
1524
  break;
1401
1525
  }
1402
1526
  case 'overflow': {
1403
- enum10 = 30;
1527
+ enum11 = 30;
1404
1528
  break;
1405
1529
  }
1406
1530
  case 'not-permitted': {
1407
- enum10 = 31;
1531
+ enum11 = 31;
1408
1532
  break;
1409
1533
  }
1410
1534
  case 'pipe': {
1411
- enum10 = 32;
1535
+ enum11 = 32;
1412
1536
  break;
1413
1537
  }
1414
1538
  case 'read-only': {
1415
- enum10 = 33;
1539
+ enum11 = 33;
1416
1540
  break;
1417
1541
  }
1418
1542
  case 'invalid-seek': {
1419
- enum10 = 34;
1543
+ enum11 = 34;
1420
1544
  break;
1421
1545
  }
1422
1546
  case 'text-file-busy': {
1423
- enum10 = 35;
1547
+ enum11 = 35;
1424
1548
  break;
1425
1549
  }
1426
1550
  case 'cross-device': {
1427
- enum10 = 36;
1551
+ enum11 = 36;
1428
1552
  break;
1429
1553
  }
1430
1554
  default: {
@@ -1432,10 +1556,10 @@ function trampoline17(arg0, arg1) {
1432
1556
  console.error(e);
1433
1557
  }
1434
1558
 
1435
- throw new TypeError(`"${val10}" is not one of the cases of error-code`);
1559
+ throw new TypeError(`"${val11}" is not one of the cases of error-code`);
1436
1560
  }
1437
1561
  }
1438
- dataView(memory0).setInt8(arg1 + 8, enum10, true);
1562
+ dataView(memory0).setInt8(arg1 + 8, enum11, true);
1439
1563
  break;
1440
1564
  }
1441
1565
  default: {
@@ -1446,258 +1570,265 @@ function trampoline17(arg0, arg1) {
1446
1570
 
1447
1571
  function trampoline18(arg0, arg1, arg2, arg3, arg4) {
1448
1572
  var handle1 = arg0;
1449
- var rsc0 = handleTable5.get(handle1).rep;
1573
+ var rep2 = handleTable5[(handle1 << 1) + 1] & ~T_FLAG;
1574
+ var rsc0 = captureTable5.get(rep2);
1575
+ if (!rsc0) {
1576
+ rsc0 = Object.create(Descriptor.prototype);
1577
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
1578
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
1579
+ }
1450
1580
  if ((arg1 & 4294967294) !== 0) {
1451
1581
  throw new TypeError('flags have extraneous bits set');
1452
1582
  }
1453
- var flags2 = {
1583
+ var flags3 = {
1454
1584
  symlinkFollow: Boolean(arg1 & 1),
1455
1585
  };
1456
- var ptr3 = arg2;
1457
- var len3 = arg3;
1458
- var result3 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr3, len3));
1586
+ var ptr4 = arg2;
1587
+ var len4 = arg3;
1588
+ var result4 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr4, len4));
1459
1589
  let ret;
1460
1590
  try {
1461
- ret = { tag: 'ok', val: Descriptor.prototype.statAt.call(rsc0, flags2, result3) };
1591
+ ret = { tag: 'ok', val: rsc0.statAt(flags3, result4)};
1462
1592
  } catch (e) {
1463
1593
  ret = { tag: 'err', val: getErrorPayload(e) };
1464
1594
  }
1465
- var variant13 = ret;
1466
- switch (variant13.tag) {
1595
+ rsc0[symbolRscHandle] = null;
1596
+ var variant14 = ret;
1597
+ switch (variant14.tag) {
1467
1598
  case 'ok': {
1468
- const e = variant13.val;
1599
+ const e = variant14.val;
1469
1600
  dataView(memory0).setInt8(arg4 + 0, 0, true);
1470
- var {type: v4_0, linkCount: v4_1, size: v4_2, dataAccessTimestamp: v4_3, dataModificationTimestamp: v4_4, statusChangeTimestamp: v4_5 } = e;
1471
- var val5 = v4_0;
1472
- let enum5;
1473
- switch (val5) {
1601
+ var {type: v5_0, linkCount: v5_1, size: v5_2, dataAccessTimestamp: v5_3, dataModificationTimestamp: v5_4, statusChangeTimestamp: v5_5 } = e;
1602
+ var val6 = v5_0;
1603
+ let enum6;
1604
+ switch (val6) {
1474
1605
  case 'unknown': {
1475
- enum5 = 0;
1606
+ enum6 = 0;
1476
1607
  break;
1477
1608
  }
1478
1609
  case 'block-device': {
1479
- enum5 = 1;
1610
+ enum6 = 1;
1480
1611
  break;
1481
1612
  }
1482
1613
  case 'character-device': {
1483
- enum5 = 2;
1614
+ enum6 = 2;
1484
1615
  break;
1485
1616
  }
1486
1617
  case 'directory': {
1487
- enum5 = 3;
1618
+ enum6 = 3;
1488
1619
  break;
1489
1620
  }
1490
1621
  case 'fifo': {
1491
- enum5 = 4;
1622
+ enum6 = 4;
1492
1623
  break;
1493
1624
  }
1494
1625
  case 'symbolic-link': {
1495
- enum5 = 5;
1626
+ enum6 = 5;
1496
1627
  break;
1497
1628
  }
1498
1629
  case 'regular-file': {
1499
- enum5 = 6;
1630
+ enum6 = 6;
1500
1631
  break;
1501
1632
  }
1502
1633
  case 'socket': {
1503
- enum5 = 7;
1634
+ enum6 = 7;
1504
1635
  break;
1505
1636
  }
1506
1637
  default: {
1507
- if ((v4_0) instanceof Error) {
1508
- console.error(v4_0);
1638
+ if ((v5_0) instanceof Error) {
1639
+ console.error(v5_0);
1509
1640
  }
1510
1641
 
1511
- throw new TypeError(`"${val5}" is not one of the cases of descriptor-type`);
1642
+ throw new TypeError(`"${val6}" is not one of the cases of descriptor-type`);
1512
1643
  }
1513
1644
  }
1514
- dataView(memory0).setInt8(arg4 + 8, enum5, true);
1515
- dataView(memory0).setBigInt64(arg4 + 16, toUint64(v4_1), true);
1516
- dataView(memory0).setBigInt64(arg4 + 24, toUint64(v4_2), true);
1517
- var variant7 = v4_3;
1518
- if (variant7 === null || variant7=== undefined) {
1645
+ dataView(memory0).setInt8(arg4 + 8, enum6, true);
1646
+ dataView(memory0).setBigInt64(arg4 + 16, toUint64(v5_1), true);
1647
+ dataView(memory0).setBigInt64(arg4 + 24, toUint64(v5_2), true);
1648
+ var variant8 = v5_3;
1649
+ if (variant8 === null || variant8=== undefined) {
1519
1650
  dataView(memory0).setInt8(arg4 + 32, 0, true);
1520
1651
  } else {
1521
- const e = variant7;
1652
+ const e = variant8;
1522
1653
  dataView(memory0).setInt8(arg4 + 32, 1, true);
1523
- var {seconds: v6_0, nanoseconds: v6_1 } = e;
1524
- dataView(memory0).setBigInt64(arg4 + 40, toUint64(v6_0), true);
1525
- dataView(memory0).setInt32(arg4 + 48, toUint32(v6_1), true);
1654
+ var {seconds: v7_0, nanoseconds: v7_1 } = e;
1655
+ dataView(memory0).setBigInt64(arg4 + 40, toUint64(v7_0), true);
1656
+ dataView(memory0).setInt32(arg4 + 48, toUint32(v7_1), true);
1526
1657
  }
1527
- var variant9 = v4_4;
1528
- if (variant9 === null || variant9=== undefined) {
1658
+ var variant10 = v5_4;
1659
+ if (variant10 === null || variant10=== undefined) {
1529
1660
  dataView(memory0).setInt8(arg4 + 56, 0, true);
1530
1661
  } else {
1531
- const e = variant9;
1662
+ const e = variant10;
1532
1663
  dataView(memory0).setInt8(arg4 + 56, 1, true);
1533
- var {seconds: v8_0, nanoseconds: v8_1 } = e;
1534
- dataView(memory0).setBigInt64(arg4 + 64, toUint64(v8_0), true);
1535
- dataView(memory0).setInt32(arg4 + 72, toUint32(v8_1), true);
1664
+ var {seconds: v9_0, nanoseconds: v9_1 } = e;
1665
+ dataView(memory0).setBigInt64(arg4 + 64, toUint64(v9_0), true);
1666
+ dataView(memory0).setInt32(arg4 + 72, toUint32(v9_1), true);
1536
1667
  }
1537
- var variant11 = v4_5;
1538
- if (variant11 === null || variant11=== undefined) {
1668
+ var variant12 = v5_5;
1669
+ if (variant12 === null || variant12=== undefined) {
1539
1670
  dataView(memory0).setInt8(arg4 + 80, 0, true);
1540
1671
  } else {
1541
- const e = variant11;
1672
+ const e = variant12;
1542
1673
  dataView(memory0).setInt8(arg4 + 80, 1, true);
1543
- var {seconds: v10_0, nanoseconds: v10_1 } = e;
1544
- dataView(memory0).setBigInt64(arg4 + 88, toUint64(v10_0), true);
1545
- dataView(memory0).setInt32(arg4 + 96, toUint32(v10_1), true);
1674
+ var {seconds: v11_0, nanoseconds: v11_1 } = e;
1675
+ dataView(memory0).setBigInt64(arg4 + 88, toUint64(v11_0), true);
1676
+ dataView(memory0).setInt32(arg4 + 96, toUint32(v11_1), true);
1546
1677
  }
1547
1678
  break;
1548
1679
  }
1549
1680
  case 'err': {
1550
- const e = variant13.val;
1681
+ const e = variant14.val;
1551
1682
  dataView(memory0).setInt8(arg4 + 0, 1, true);
1552
- var val12 = e;
1553
- let enum12;
1554
- switch (val12) {
1683
+ var val13 = e;
1684
+ let enum13;
1685
+ switch (val13) {
1555
1686
  case 'access': {
1556
- enum12 = 0;
1687
+ enum13 = 0;
1557
1688
  break;
1558
1689
  }
1559
1690
  case 'would-block': {
1560
- enum12 = 1;
1691
+ enum13 = 1;
1561
1692
  break;
1562
1693
  }
1563
1694
  case 'already': {
1564
- enum12 = 2;
1695
+ enum13 = 2;
1565
1696
  break;
1566
1697
  }
1567
1698
  case 'bad-descriptor': {
1568
- enum12 = 3;
1699
+ enum13 = 3;
1569
1700
  break;
1570
1701
  }
1571
1702
  case 'busy': {
1572
- enum12 = 4;
1703
+ enum13 = 4;
1573
1704
  break;
1574
1705
  }
1575
1706
  case 'deadlock': {
1576
- enum12 = 5;
1707
+ enum13 = 5;
1577
1708
  break;
1578
1709
  }
1579
1710
  case 'quota': {
1580
- enum12 = 6;
1711
+ enum13 = 6;
1581
1712
  break;
1582
1713
  }
1583
1714
  case 'exist': {
1584
- enum12 = 7;
1715
+ enum13 = 7;
1585
1716
  break;
1586
1717
  }
1587
1718
  case 'file-too-large': {
1588
- enum12 = 8;
1719
+ enum13 = 8;
1589
1720
  break;
1590
1721
  }
1591
1722
  case 'illegal-byte-sequence': {
1592
- enum12 = 9;
1723
+ enum13 = 9;
1593
1724
  break;
1594
1725
  }
1595
1726
  case 'in-progress': {
1596
- enum12 = 10;
1727
+ enum13 = 10;
1597
1728
  break;
1598
1729
  }
1599
1730
  case 'interrupted': {
1600
- enum12 = 11;
1731
+ enum13 = 11;
1601
1732
  break;
1602
1733
  }
1603
1734
  case 'invalid': {
1604
- enum12 = 12;
1735
+ enum13 = 12;
1605
1736
  break;
1606
1737
  }
1607
1738
  case 'io': {
1608
- enum12 = 13;
1739
+ enum13 = 13;
1609
1740
  break;
1610
1741
  }
1611
1742
  case 'is-directory': {
1612
- enum12 = 14;
1743
+ enum13 = 14;
1613
1744
  break;
1614
1745
  }
1615
1746
  case 'loop': {
1616
- enum12 = 15;
1747
+ enum13 = 15;
1617
1748
  break;
1618
1749
  }
1619
1750
  case 'too-many-links': {
1620
- enum12 = 16;
1751
+ enum13 = 16;
1621
1752
  break;
1622
1753
  }
1623
1754
  case 'message-size': {
1624
- enum12 = 17;
1755
+ enum13 = 17;
1625
1756
  break;
1626
1757
  }
1627
1758
  case 'name-too-long': {
1628
- enum12 = 18;
1759
+ enum13 = 18;
1629
1760
  break;
1630
1761
  }
1631
1762
  case 'no-device': {
1632
- enum12 = 19;
1763
+ enum13 = 19;
1633
1764
  break;
1634
1765
  }
1635
1766
  case 'no-entry': {
1636
- enum12 = 20;
1767
+ enum13 = 20;
1637
1768
  break;
1638
1769
  }
1639
1770
  case 'no-lock': {
1640
- enum12 = 21;
1771
+ enum13 = 21;
1641
1772
  break;
1642
1773
  }
1643
1774
  case 'insufficient-memory': {
1644
- enum12 = 22;
1775
+ enum13 = 22;
1645
1776
  break;
1646
1777
  }
1647
1778
  case 'insufficient-space': {
1648
- enum12 = 23;
1779
+ enum13 = 23;
1649
1780
  break;
1650
1781
  }
1651
1782
  case 'not-directory': {
1652
- enum12 = 24;
1783
+ enum13 = 24;
1653
1784
  break;
1654
1785
  }
1655
1786
  case 'not-empty': {
1656
- enum12 = 25;
1787
+ enum13 = 25;
1657
1788
  break;
1658
1789
  }
1659
1790
  case 'not-recoverable': {
1660
- enum12 = 26;
1791
+ enum13 = 26;
1661
1792
  break;
1662
1793
  }
1663
1794
  case 'unsupported': {
1664
- enum12 = 27;
1795
+ enum13 = 27;
1665
1796
  break;
1666
1797
  }
1667
1798
  case 'no-tty': {
1668
- enum12 = 28;
1799
+ enum13 = 28;
1669
1800
  break;
1670
1801
  }
1671
1802
  case 'no-such-device': {
1672
- enum12 = 29;
1803
+ enum13 = 29;
1673
1804
  break;
1674
1805
  }
1675
1806
  case 'overflow': {
1676
- enum12 = 30;
1807
+ enum13 = 30;
1677
1808
  break;
1678
1809
  }
1679
1810
  case 'not-permitted': {
1680
- enum12 = 31;
1811
+ enum13 = 31;
1681
1812
  break;
1682
1813
  }
1683
1814
  case 'pipe': {
1684
- enum12 = 32;
1815
+ enum13 = 32;
1685
1816
  break;
1686
1817
  }
1687
1818
  case 'read-only': {
1688
- enum12 = 33;
1819
+ enum13 = 33;
1689
1820
  break;
1690
1821
  }
1691
1822
  case 'invalid-seek': {
1692
- enum12 = 34;
1823
+ enum13 = 34;
1693
1824
  break;
1694
1825
  }
1695
1826
  case 'text-file-busy': {
1696
- enum12 = 35;
1827
+ enum13 = 35;
1697
1828
  break;
1698
1829
  }
1699
1830
  case 'cross-device': {
1700
- enum12 = 36;
1831
+ enum13 = 36;
1701
1832
  break;
1702
1833
  }
1703
1834
  default: {
@@ -1705,10 +1836,10 @@ function trampoline18(arg0, arg1, arg2, arg3, arg4) {
1705
1836
  console.error(e);
1706
1837
  }
1707
1838
 
1708
- throw new TypeError(`"${val12}" is not one of the cases of error-code`);
1839
+ throw new TypeError(`"${val13}" is not one of the cases of error-code`);
1709
1840
  }
1710
1841
  }
1711
- dataView(memory0).setInt8(arg4 + 8, enum12, true);
1842
+ dataView(memory0).setInt8(arg4 + 8, enum13, true);
1712
1843
  break;
1713
1844
  }
1714
1845
  default: {
@@ -1719,20 +1850,26 @@ function trampoline18(arg0, arg1, arg2, arg3, arg4) {
1719
1850
 
1720
1851
  function trampoline19(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
1721
1852
  var handle1 = arg0;
1722
- var rsc0 = handleTable5.get(handle1).rep;
1853
+ var rep2 = handleTable5[(handle1 << 1) + 1] & ~T_FLAG;
1854
+ var rsc0 = captureTable5.get(rep2);
1855
+ if (!rsc0) {
1856
+ rsc0 = Object.create(Descriptor.prototype);
1857
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
1858
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
1859
+ }
1723
1860
  if ((arg1 & 4294967294) !== 0) {
1724
1861
  throw new TypeError('flags have extraneous bits set');
1725
1862
  }
1726
- var flags2 = {
1863
+ var flags3 = {
1727
1864
  symlinkFollow: Boolean(arg1 & 1),
1728
1865
  };
1729
- var ptr3 = arg2;
1730
- var len3 = arg3;
1731
- var result3 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr3, len3));
1866
+ var ptr4 = arg2;
1867
+ var len4 = arg3;
1868
+ var result4 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr4, len4));
1732
1869
  if ((arg4 & 4294967280) !== 0) {
1733
1870
  throw new TypeError('flags have extraneous bits set');
1734
1871
  }
1735
- var flags4 = {
1872
+ var flags5 = {
1736
1873
  create: Boolean(arg4 & 1),
1737
1874
  directory: Boolean(arg4 & 2),
1738
1875
  exclusive: Boolean(arg4 & 4),
@@ -1741,7 +1878,7 @@ function trampoline19(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
1741
1878
  if ((arg5 & 4294967232) !== 0) {
1742
1879
  throw new TypeError('flags have extraneous bits set');
1743
1880
  }
1744
- var flags5 = {
1881
+ var flags6 = {
1745
1882
  read: Boolean(arg5 & 1),
1746
1883
  write: Boolean(arg5 & 2),
1747
1884
  fileIntegritySync: Boolean(arg5 & 4),
@@ -1751,175 +1888,180 @@ function trampoline19(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
1751
1888
  };
1752
1889
  let ret;
1753
1890
  try {
1754
- ret = { tag: 'ok', val: Descriptor.prototype.openAt.call(rsc0, flags2, result3, flags4, flags5) };
1891
+ ret = { tag: 'ok', val: rsc0.openAt(flags3, result4, flags5, flags6)};
1755
1892
  } catch (e) {
1756
1893
  ret = { tag: 'err', val: getErrorPayload(e) };
1757
1894
  }
1758
- var variant8 = ret;
1759
- switch (variant8.tag) {
1895
+ rsc0[symbolRscHandle] = null;
1896
+ var variant9 = ret;
1897
+ switch (variant9.tag) {
1760
1898
  case 'ok': {
1761
- const e = variant8.val;
1899
+ const e = variant9.val;
1762
1900
  dataView(memory0).setInt8(arg6 + 0, 0, true);
1763
1901
  if (!(e instanceof Descriptor)) {
1764
- throw new Error('Resource error: Not a valid "Descriptor" resource.');
1902
+ throw new TypeError('Resource error: Not a valid "Descriptor" resource.');
1903
+ }
1904
+ var handle7 = e[symbolRscHandle];
1905
+ if (!handle7) {
1906
+ const rep = e[symbolRscRep] || ++captureCnt5;
1907
+ captureTable5.set(rep, e);
1908
+ handle7 = rscTableCreateOwn(handleTable5, rep);
1765
1909
  }
1766
- var handle6 = handleCnt5++;
1767
- handleTable5.set(handle6, { rep: e, own: true });
1768
- dataView(memory0).setInt32(arg6 + 4, handle6, true);
1910
+ dataView(memory0).setInt32(arg6 + 4, handle7, true);
1769
1911
  break;
1770
1912
  }
1771
1913
  case 'err': {
1772
- const e = variant8.val;
1914
+ const e = variant9.val;
1773
1915
  dataView(memory0).setInt8(arg6 + 0, 1, true);
1774
- var val7 = e;
1775
- let enum7;
1776
- switch (val7) {
1916
+ var val8 = e;
1917
+ let enum8;
1918
+ switch (val8) {
1777
1919
  case 'access': {
1778
- enum7 = 0;
1920
+ enum8 = 0;
1779
1921
  break;
1780
1922
  }
1781
1923
  case 'would-block': {
1782
- enum7 = 1;
1924
+ enum8 = 1;
1783
1925
  break;
1784
1926
  }
1785
1927
  case 'already': {
1786
- enum7 = 2;
1928
+ enum8 = 2;
1787
1929
  break;
1788
1930
  }
1789
1931
  case 'bad-descriptor': {
1790
- enum7 = 3;
1932
+ enum8 = 3;
1791
1933
  break;
1792
1934
  }
1793
1935
  case 'busy': {
1794
- enum7 = 4;
1936
+ enum8 = 4;
1795
1937
  break;
1796
1938
  }
1797
1939
  case 'deadlock': {
1798
- enum7 = 5;
1940
+ enum8 = 5;
1799
1941
  break;
1800
1942
  }
1801
1943
  case 'quota': {
1802
- enum7 = 6;
1944
+ enum8 = 6;
1803
1945
  break;
1804
1946
  }
1805
1947
  case 'exist': {
1806
- enum7 = 7;
1948
+ enum8 = 7;
1807
1949
  break;
1808
1950
  }
1809
1951
  case 'file-too-large': {
1810
- enum7 = 8;
1952
+ enum8 = 8;
1811
1953
  break;
1812
1954
  }
1813
1955
  case 'illegal-byte-sequence': {
1814
- enum7 = 9;
1956
+ enum8 = 9;
1815
1957
  break;
1816
1958
  }
1817
1959
  case 'in-progress': {
1818
- enum7 = 10;
1960
+ enum8 = 10;
1819
1961
  break;
1820
1962
  }
1821
1963
  case 'interrupted': {
1822
- enum7 = 11;
1964
+ enum8 = 11;
1823
1965
  break;
1824
1966
  }
1825
1967
  case 'invalid': {
1826
- enum7 = 12;
1968
+ enum8 = 12;
1827
1969
  break;
1828
1970
  }
1829
1971
  case 'io': {
1830
- enum7 = 13;
1972
+ enum8 = 13;
1831
1973
  break;
1832
1974
  }
1833
1975
  case 'is-directory': {
1834
- enum7 = 14;
1976
+ enum8 = 14;
1835
1977
  break;
1836
1978
  }
1837
1979
  case 'loop': {
1838
- enum7 = 15;
1980
+ enum8 = 15;
1839
1981
  break;
1840
1982
  }
1841
1983
  case 'too-many-links': {
1842
- enum7 = 16;
1984
+ enum8 = 16;
1843
1985
  break;
1844
1986
  }
1845
1987
  case 'message-size': {
1846
- enum7 = 17;
1988
+ enum8 = 17;
1847
1989
  break;
1848
1990
  }
1849
1991
  case 'name-too-long': {
1850
- enum7 = 18;
1992
+ enum8 = 18;
1851
1993
  break;
1852
1994
  }
1853
1995
  case 'no-device': {
1854
- enum7 = 19;
1996
+ enum8 = 19;
1855
1997
  break;
1856
1998
  }
1857
1999
  case 'no-entry': {
1858
- enum7 = 20;
2000
+ enum8 = 20;
1859
2001
  break;
1860
2002
  }
1861
2003
  case 'no-lock': {
1862
- enum7 = 21;
2004
+ enum8 = 21;
1863
2005
  break;
1864
2006
  }
1865
2007
  case 'insufficient-memory': {
1866
- enum7 = 22;
2008
+ enum8 = 22;
1867
2009
  break;
1868
2010
  }
1869
2011
  case 'insufficient-space': {
1870
- enum7 = 23;
2012
+ enum8 = 23;
1871
2013
  break;
1872
2014
  }
1873
2015
  case 'not-directory': {
1874
- enum7 = 24;
2016
+ enum8 = 24;
1875
2017
  break;
1876
2018
  }
1877
2019
  case 'not-empty': {
1878
- enum7 = 25;
2020
+ enum8 = 25;
1879
2021
  break;
1880
2022
  }
1881
2023
  case 'not-recoverable': {
1882
- enum7 = 26;
2024
+ enum8 = 26;
1883
2025
  break;
1884
2026
  }
1885
2027
  case 'unsupported': {
1886
- enum7 = 27;
2028
+ enum8 = 27;
1887
2029
  break;
1888
2030
  }
1889
2031
  case 'no-tty': {
1890
- enum7 = 28;
2032
+ enum8 = 28;
1891
2033
  break;
1892
2034
  }
1893
2035
  case 'no-such-device': {
1894
- enum7 = 29;
2036
+ enum8 = 29;
1895
2037
  break;
1896
2038
  }
1897
2039
  case 'overflow': {
1898
- enum7 = 30;
2040
+ enum8 = 30;
1899
2041
  break;
1900
2042
  }
1901
2043
  case 'not-permitted': {
1902
- enum7 = 31;
2044
+ enum8 = 31;
1903
2045
  break;
1904
2046
  }
1905
2047
  case 'pipe': {
1906
- enum7 = 32;
2048
+ enum8 = 32;
1907
2049
  break;
1908
2050
  }
1909
2051
  case 'read-only': {
1910
- enum7 = 33;
2052
+ enum8 = 33;
1911
2053
  break;
1912
2054
  }
1913
2055
  case 'invalid-seek': {
1914
- enum7 = 34;
2056
+ enum8 = 34;
1915
2057
  break;
1916
2058
  }
1917
2059
  case 'text-file-busy': {
1918
- enum7 = 35;
2060
+ enum8 = 35;
1919
2061
  break;
1920
2062
  }
1921
2063
  case 'cross-device': {
1922
- enum7 = 36;
2064
+ enum8 = 36;
1923
2065
  break;
1924
2066
  }
1925
2067
  default: {
@@ -1927,10 +2069,10 @@ function trampoline19(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
1927
2069
  console.error(e);
1928
2070
  }
1929
2071
 
1930
- throw new TypeError(`"${val7}" is not one of the cases of error-code`);
2072
+ throw new TypeError(`"${val8}" is not one of the cases of error-code`);
1931
2073
  }
1932
2074
  }
1933
- dataView(memory0).setInt8(arg6 + 4, enum7, true);
2075
+ dataView(memory0).setInt8(arg6 + 4, enum8, true);
1934
2076
  break;
1935
2077
  }
1936
2078
  default: {
@@ -1941,175 +2083,182 @@ function trampoline19(arg0, arg1, arg2, arg3, arg4, arg5, arg6) {
1941
2083
 
1942
2084
  function trampoline20(arg0, arg1) {
1943
2085
  var handle1 = arg0;
1944
- var rsc0 = handleTable5.get(handle1).rep;
2086
+ var rep2 = handleTable5[(handle1 << 1) + 1] & ~T_FLAG;
2087
+ var rsc0 = captureTable5.get(rep2);
2088
+ if (!rsc0) {
2089
+ rsc0 = Object.create(Descriptor.prototype);
2090
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
2091
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
2092
+ }
1945
2093
  let ret;
1946
2094
  try {
1947
- ret = { tag: 'ok', val: Descriptor.prototype.metadataHash.call(rsc0) };
2095
+ ret = { tag: 'ok', val: rsc0.metadataHash()};
1948
2096
  } catch (e) {
1949
2097
  ret = { tag: 'err', val: getErrorPayload(e) };
1950
2098
  }
1951
- var variant4 = ret;
1952
- switch (variant4.tag) {
2099
+ rsc0[symbolRscHandle] = null;
2100
+ var variant5 = ret;
2101
+ switch (variant5.tag) {
1953
2102
  case 'ok': {
1954
- const e = variant4.val;
2103
+ const e = variant5.val;
1955
2104
  dataView(memory0).setInt8(arg1 + 0, 0, true);
1956
- var {lower: v2_0, upper: v2_1 } = e;
1957
- dataView(memory0).setBigInt64(arg1 + 8, toUint64(v2_0), true);
1958
- dataView(memory0).setBigInt64(arg1 + 16, toUint64(v2_1), true);
2105
+ var {lower: v3_0, upper: v3_1 } = e;
2106
+ dataView(memory0).setBigInt64(arg1 + 8, toUint64(v3_0), true);
2107
+ dataView(memory0).setBigInt64(arg1 + 16, toUint64(v3_1), true);
1959
2108
  break;
1960
2109
  }
1961
2110
  case 'err': {
1962
- const e = variant4.val;
2111
+ const e = variant5.val;
1963
2112
  dataView(memory0).setInt8(arg1 + 0, 1, true);
1964
- var val3 = e;
1965
- let enum3;
1966
- switch (val3) {
2113
+ var val4 = e;
2114
+ let enum4;
2115
+ switch (val4) {
1967
2116
  case 'access': {
1968
- enum3 = 0;
2117
+ enum4 = 0;
1969
2118
  break;
1970
2119
  }
1971
2120
  case 'would-block': {
1972
- enum3 = 1;
2121
+ enum4 = 1;
1973
2122
  break;
1974
2123
  }
1975
2124
  case 'already': {
1976
- enum3 = 2;
2125
+ enum4 = 2;
1977
2126
  break;
1978
2127
  }
1979
2128
  case 'bad-descriptor': {
1980
- enum3 = 3;
2129
+ enum4 = 3;
1981
2130
  break;
1982
2131
  }
1983
2132
  case 'busy': {
1984
- enum3 = 4;
2133
+ enum4 = 4;
1985
2134
  break;
1986
2135
  }
1987
2136
  case 'deadlock': {
1988
- enum3 = 5;
2137
+ enum4 = 5;
1989
2138
  break;
1990
2139
  }
1991
2140
  case 'quota': {
1992
- enum3 = 6;
2141
+ enum4 = 6;
1993
2142
  break;
1994
2143
  }
1995
2144
  case 'exist': {
1996
- enum3 = 7;
2145
+ enum4 = 7;
1997
2146
  break;
1998
2147
  }
1999
2148
  case 'file-too-large': {
2000
- enum3 = 8;
2149
+ enum4 = 8;
2001
2150
  break;
2002
2151
  }
2003
2152
  case 'illegal-byte-sequence': {
2004
- enum3 = 9;
2153
+ enum4 = 9;
2005
2154
  break;
2006
2155
  }
2007
2156
  case 'in-progress': {
2008
- enum3 = 10;
2157
+ enum4 = 10;
2009
2158
  break;
2010
2159
  }
2011
2160
  case 'interrupted': {
2012
- enum3 = 11;
2161
+ enum4 = 11;
2013
2162
  break;
2014
2163
  }
2015
2164
  case 'invalid': {
2016
- enum3 = 12;
2165
+ enum4 = 12;
2017
2166
  break;
2018
2167
  }
2019
2168
  case 'io': {
2020
- enum3 = 13;
2169
+ enum4 = 13;
2021
2170
  break;
2022
2171
  }
2023
2172
  case 'is-directory': {
2024
- enum3 = 14;
2173
+ enum4 = 14;
2025
2174
  break;
2026
2175
  }
2027
2176
  case 'loop': {
2028
- enum3 = 15;
2177
+ enum4 = 15;
2029
2178
  break;
2030
2179
  }
2031
2180
  case 'too-many-links': {
2032
- enum3 = 16;
2181
+ enum4 = 16;
2033
2182
  break;
2034
2183
  }
2035
2184
  case 'message-size': {
2036
- enum3 = 17;
2185
+ enum4 = 17;
2037
2186
  break;
2038
2187
  }
2039
2188
  case 'name-too-long': {
2040
- enum3 = 18;
2189
+ enum4 = 18;
2041
2190
  break;
2042
2191
  }
2043
2192
  case 'no-device': {
2044
- enum3 = 19;
2193
+ enum4 = 19;
2045
2194
  break;
2046
2195
  }
2047
2196
  case 'no-entry': {
2048
- enum3 = 20;
2197
+ enum4 = 20;
2049
2198
  break;
2050
2199
  }
2051
2200
  case 'no-lock': {
2052
- enum3 = 21;
2201
+ enum4 = 21;
2053
2202
  break;
2054
2203
  }
2055
2204
  case 'insufficient-memory': {
2056
- enum3 = 22;
2205
+ enum4 = 22;
2057
2206
  break;
2058
2207
  }
2059
2208
  case 'insufficient-space': {
2060
- enum3 = 23;
2209
+ enum4 = 23;
2061
2210
  break;
2062
2211
  }
2063
2212
  case 'not-directory': {
2064
- enum3 = 24;
2213
+ enum4 = 24;
2065
2214
  break;
2066
2215
  }
2067
2216
  case 'not-empty': {
2068
- enum3 = 25;
2217
+ enum4 = 25;
2069
2218
  break;
2070
2219
  }
2071
2220
  case 'not-recoverable': {
2072
- enum3 = 26;
2221
+ enum4 = 26;
2073
2222
  break;
2074
2223
  }
2075
2224
  case 'unsupported': {
2076
- enum3 = 27;
2225
+ enum4 = 27;
2077
2226
  break;
2078
2227
  }
2079
2228
  case 'no-tty': {
2080
- enum3 = 28;
2229
+ enum4 = 28;
2081
2230
  break;
2082
2231
  }
2083
2232
  case 'no-such-device': {
2084
- enum3 = 29;
2233
+ enum4 = 29;
2085
2234
  break;
2086
2235
  }
2087
2236
  case 'overflow': {
2088
- enum3 = 30;
2237
+ enum4 = 30;
2089
2238
  break;
2090
2239
  }
2091
2240
  case 'not-permitted': {
2092
- enum3 = 31;
2241
+ enum4 = 31;
2093
2242
  break;
2094
2243
  }
2095
2244
  case 'pipe': {
2096
- enum3 = 32;
2245
+ enum4 = 32;
2097
2246
  break;
2098
2247
  }
2099
2248
  case 'read-only': {
2100
- enum3 = 33;
2249
+ enum4 = 33;
2101
2250
  break;
2102
2251
  }
2103
2252
  case 'invalid-seek': {
2104
- enum3 = 34;
2253
+ enum4 = 34;
2105
2254
  break;
2106
2255
  }
2107
2256
  case 'text-file-busy': {
2108
- enum3 = 35;
2257
+ enum4 = 35;
2109
2258
  break;
2110
2259
  }
2111
2260
  case 'cross-device': {
2112
- enum3 = 36;
2261
+ enum4 = 36;
2113
2262
  break;
2114
2263
  }
2115
2264
  default: {
@@ -2117,10 +2266,10 @@ function trampoline20(arg0, arg1) {
2117
2266
  console.error(e);
2118
2267
  }
2119
2268
 
2120
- throw new TypeError(`"${val3}" is not one of the cases of error-code`);
2269
+ throw new TypeError(`"${val4}" is not one of the cases of error-code`);
2121
2270
  }
2122
2271
  }
2123
- dataView(memory0).setInt8(arg1 + 8, enum3, true);
2272
+ dataView(memory0).setInt8(arg1 + 8, enum4, true);
2124
2273
  break;
2125
2274
  }
2126
2275
  default: {
@@ -2131,184 +2280,191 @@ function trampoline20(arg0, arg1) {
2131
2280
 
2132
2281
  function trampoline21(arg0, arg1, arg2, arg3, arg4) {
2133
2282
  var handle1 = arg0;
2134
- var rsc0 = handleTable5.get(handle1).rep;
2283
+ var rep2 = handleTable5[(handle1 << 1) + 1] & ~T_FLAG;
2284
+ var rsc0 = captureTable5.get(rep2);
2285
+ if (!rsc0) {
2286
+ rsc0 = Object.create(Descriptor.prototype);
2287
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
2288
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
2289
+ }
2135
2290
  if ((arg1 & 4294967294) !== 0) {
2136
2291
  throw new TypeError('flags have extraneous bits set');
2137
2292
  }
2138
- var flags2 = {
2293
+ var flags3 = {
2139
2294
  symlinkFollow: Boolean(arg1 & 1),
2140
2295
  };
2141
- var ptr3 = arg2;
2142
- var len3 = arg3;
2143
- var result3 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr3, len3));
2296
+ var ptr4 = arg2;
2297
+ var len4 = arg3;
2298
+ var result4 = utf8Decoder.decode(new Uint8Array(memory0.buffer, ptr4, len4));
2144
2299
  let ret;
2145
2300
  try {
2146
- ret = { tag: 'ok', val: Descriptor.prototype.metadataHashAt.call(rsc0, flags2, result3) };
2301
+ ret = { tag: 'ok', val: rsc0.metadataHashAt(flags3, result4)};
2147
2302
  } catch (e) {
2148
2303
  ret = { tag: 'err', val: getErrorPayload(e) };
2149
2304
  }
2150
- var variant6 = ret;
2151
- switch (variant6.tag) {
2305
+ rsc0[symbolRscHandle] = null;
2306
+ var variant7 = ret;
2307
+ switch (variant7.tag) {
2152
2308
  case 'ok': {
2153
- const e = variant6.val;
2309
+ const e = variant7.val;
2154
2310
  dataView(memory0).setInt8(arg4 + 0, 0, true);
2155
- var {lower: v4_0, upper: v4_1 } = e;
2156
- dataView(memory0).setBigInt64(arg4 + 8, toUint64(v4_0), true);
2157
- dataView(memory0).setBigInt64(arg4 + 16, toUint64(v4_1), true);
2311
+ var {lower: v5_0, upper: v5_1 } = e;
2312
+ dataView(memory0).setBigInt64(arg4 + 8, toUint64(v5_0), true);
2313
+ dataView(memory0).setBigInt64(arg4 + 16, toUint64(v5_1), true);
2158
2314
  break;
2159
2315
  }
2160
2316
  case 'err': {
2161
- const e = variant6.val;
2317
+ const e = variant7.val;
2162
2318
  dataView(memory0).setInt8(arg4 + 0, 1, true);
2163
- var val5 = e;
2164
- let enum5;
2165
- switch (val5) {
2319
+ var val6 = e;
2320
+ let enum6;
2321
+ switch (val6) {
2166
2322
  case 'access': {
2167
- enum5 = 0;
2323
+ enum6 = 0;
2168
2324
  break;
2169
2325
  }
2170
2326
  case 'would-block': {
2171
- enum5 = 1;
2327
+ enum6 = 1;
2172
2328
  break;
2173
2329
  }
2174
2330
  case 'already': {
2175
- enum5 = 2;
2331
+ enum6 = 2;
2176
2332
  break;
2177
2333
  }
2178
2334
  case 'bad-descriptor': {
2179
- enum5 = 3;
2335
+ enum6 = 3;
2180
2336
  break;
2181
2337
  }
2182
2338
  case 'busy': {
2183
- enum5 = 4;
2339
+ enum6 = 4;
2184
2340
  break;
2185
2341
  }
2186
2342
  case 'deadlock': {
2187
- enum5 = 5;
2343
+ enum6 = 5;
2188
2344
  break;
2189
2345
  }
2190
2346
  case 'quota': {
2191
- enum5 = 6;
2347
+ enum6 = 6;
2192
2348
  break;
2193
2349
  }
2194
2350
  case 'exist': {
2195
- enum5 = 7;
2351
+ enum6 = 7;
2196
2352
  break;
2197
2353
  }
2198
2354
  case 'file-too-large': {
2199
- enum5 = 8;
2355
+ enum6 = 8;
2200
2356
  break;
2201
2357
  }
2202
2358
  case 'illegal-byte-sequence': {
2203
- enum5 = 9;
2359
+ enum6 = 9;
2204
2360
  break;
2205
2361
  }
2206
2362
  case 'in-progress': {
2207
- enum5 = 10;
2363
+ enum6 = 10;
2208
2364
  break;
2209
2365
  }
2210
2366
  case 'interrupted': {
2211
- enum5 = 11;
2367
+ enum6 = 11;
2212
2368
  break;
2213
2369
  }
2214
2370
  case 'invalid': {
2215
- enum5 = 12;
2371
+ enum6 = 12;
2216
2372
  break;
2217
2373
  }
2218
2374
  case 'io': {
2219
- enum5 = 13;
2375
+ enum6 = 13;
2220
2376
  break;
2221
2377
  }
2222
2378
  case 'is-directory': {
2223
- enum5 = 14;
2379
+ enum6 = 14;
2224
2380
  break;
2225
2381
  }
2226
2382
  case 'loop': {
2227
- enum5 = 15;
2383
+ enum6 = 15;
2228
2384
  break;
2229
2385
  }
2230
2386
  case 'too-many-links': {
2231
- enum5 = 16;
2387
+ enum6 = 16;
2232
2388
  break;
2233
2389
  }
2234
2390
  case 'message-size': {
2235
- enum5 = 17;
2391
+ enum6 = 17;
2236
2392
  break;
2237
2393
  }
2238
2394
  case 'name-too-long': {
2239
- enum5 = 18;
2395
+ enum6 = 18;
2240
2396
  break;
2241
2397
  }
2242
2398
  case 'no-device': {
2243
- enum5 = 19;
2399
+ enum6 = 19;
2244
2400
  break;
2245
2401
  }
2246
2402
  case 'no-entry': {
2247
- enum5 = 20;
2403
+ enum6 = 20;
2248
2404
  break;
2249
2405
  }
2250
2406
  case 'no-lock': {
2251
- enum5 = 21;
2407
+ enum6 = 21;
2252
2408
  break;
2253
2409
  }
2254
2410
  case 'insufficient-memory': {
2255
- enum5 = 22;
2411
+ enum6 = 22;
2256
2412
  break;
2257
2413
  }
2258
2414
  case 'insufficient-space': {
2259
- enum5 = 23;
2415
+ enum6 = 23;
2260
2416
  break;
2261
2417
  }
2262
2418
  case 'not-directory': {
2263
- enum5 = 24;
2419
+ enum6 = 24;
2264
2420
  break;
2265
2421
  }
2266
2422
  case 'not-empty': {
2267
- enum5 = 25;
2423
+ enum6 = 25;
2268
2424
  break;
2269
2425
  }
2270
2426
  case 'not-recoverable': {
2271
- enum5 = 26;
2427
+ enum6 = 26;
2272
2428
  break;
2273
2429
  }
2274
2430
  case 'unsupported': {
2275
- enum5 = 27;
2431
+ enum6 = 27;
2276
2432
  break;
2277
2433
  }
2278
2434
  case 'no-tty': {
2279
- enum5 = 28;
2435
+ enum6 = 28;
2280
2436
  break;
2281
2437
  }
2282
2438
  case 'no-such-device': {
2283
- enum5 = 29;
2439
+ enum6 = 29;
2284
2440
  break;
2285
2441
  }
2286
2442
  case 'overflow': {
2287
- enum5 = 30;
2443
+ enum6 = 30;
2288
2444
  break;
2289
2445
  }
2290
2446
  case 'not-permitted': {
2291
- enum5 = 31;
2447
+ enum6 = 31;
2292
2448
  break;
2293
2449
  }
2294
2450
  case 'pipe': {
2295
- enum5 = 32;
2451
+ enum6 = 32;
2296
2452
  break;
2297
2453
  }
2298
2454
  case 'read-only': {
2299
- enum5 = 33;
2455
+ enum6 = 33;
2300
2456
  break;
2301
2457
  }
2302
2458
  case 'invalid-seek': {
2303
- enum5 = 34;
2459
+ enum6 = 34;
2304
2460
  break;
2305
2461
  }
2306
2462
  case 'text-file-busy': {
2307
- enum5 = 35;
2463
+ enum6 = 35;
2308
2464
  break;
2309
2465
  }
2310
2466
  case 'cross-device': {
2311
- enum5 = 36;
2467
+ enum6 = 36;
2312
2468
  break;
2313
2469
  }
2314
2470
  default: {
@@ -2316,10 +2472,10 @@ function trampoline21(arg0, arg1, arg2, arg3, arg4) {
2316
2472
  console.error(e);
2317
2473
  }
2318
2474
 
2319
- throw new TypeError(`"${val5}" is not one of the cases of error-code`);
2475
+ throw new TypeError(`"${val6}" is not one of the cases of error-code`);
2320
2476
  }
2321
2477
  }
2322
- dataView(memory0).setInt8(arg4 + 8, enum5, true);
2478
+ dataView(memory0).setInt8(arg4 + 8, enum6, true);
2323
2479
  break;
2324
2480
  }
2325
2481
  default: {
@@ -2330,228 +2486,235 @@ function trampoline21(arg0, arg1, arg2, arg3, arg4) {
2330
2486
 
2331
2487
  function trampoline22(arg0, arg1) {
2332
2488
  var handle1 = arg0;
2333
- var rsc0 = handleTable6.get(handle1).rep;
2489
+ var rep2 = handleTable6[(handle1 << 1) + 1] & ~T_FLAG;
2490
+ var rsc0 = captureTable6.get(rep2);
2491
+ if (!rsc0) {
2492
+ rsc0 = Object.create(DirectoryEntryStream.prototype);
2493
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
2494
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
2495
+ }
2334
2496
  let ret;
2335
2497
  try {
2336
- ret = { tag: 'ok', val: DirectoryEntryStream.prototype.readDirectoryEntry.call(rsc0) };
2498
+ ret = { tag: 'ok', val: rsc0.readDirectoryEntry()};
2337
2499
  } catch (e) {
2338
2500
  ret = { tag: 'err', val: getErrorPayload(e) };
2339
2501
  }
2340
- var variant7 = ret;
2341
- switch (variant7.tag) {
2502
+ rsc0[symbolRscHandle] = null;
2503
+ var variant8 = ret;
2504
+ switch (variant8.tag) {
2342
2505
  case 'ok': {
2343
- const e = variant7.val;
2506
+ const e = variant8.val;
2344
2507
  dataView(memory0).setInt8(arg1 + 0, 0, true);
2345
- var variant5 = e;
2346
- if (variant5 === null || variant5=== undefined) {
2508
+ var variant6 = e;
2509
+ if (variant6 === null || variant6=== undefined) {
2347
2510
  dataView(memory0).setInt8(arg1 + 4, 0, true);
2348
2511
  } else {
2349
- const e = variant5;
2512
+ const e = variant6;
2350
2513
  dataView(memory0).setInt8(arg1 + 4, 1, true);
2351
- var {type: v2_0, name: v2_1 } = e;
2352
- var val3 = v2_0;
2353
- let enum3;
2354
- switch (val3) {
2514
+ var {type: v3_0, name: v3_1 } = e;
2515
+ var val4 = v3_0;
2516
+ let enum4;
2517
+ switch (val4) {
2355
2518
  case 'unknown': {
2356
- enum3 = 0;
2519
+ enum4 = 0;
2357
2520
  break;
2358
2521
  }
2359
2522
  case 'block-device': {
2360
- enum3 = 1;
2523
+ enum4 = 1;
2361
2524
  break;
2362
2525
  }
2363
2526
  case 'character-device': {
2364
- enum3 = 2;
2527
+ enum4 = 2;
2365
2528
  break;
2366
2529
  }
2367
2530
  case 'directory': {
2368
- enum3 = 3;
2531
+ enum4 = 3;
2369
2532
  break;
2370
2533
  }
2371
2534
  case 'fifo': {
2372
- enum3 = 4;
2535
+ enum4 = 4;
2373
2536
  break;
2374
2537
  }
2375
2538
  case 'symbolic-link': {
2376
- enum3 = 5;
2539
+ enum4 = 5;
2377
2540
  break;
2378
2541
  }
2379
2542
  case 'regular-file': {
2380
- enum3 = 6;
2543
+ enum4 = 6;
2381
2544
  break;
2382
2545
  }
2383
2546
  case 'socket': {
2384
- enum3 = 7;
2547
+ enum4 = 7;
2385
2548
  break;
2386
2549
  }
2387
2550
  default: {
2388
- if ((v2_0) instanceof Error) {
2389
- console.error(v2_0);
2551
+ if ((v3_0) instanceof Error) {
2552
+ console.error(v3_0);
2390
2553
  }
2391
2554
 
2392
- throw new TypeError(`"${val3}" is not one of the cases of descriptor-type`);
2555
+ throw new TypeError(`"${val4}" is not one of the cases of descriptor-type`);
2393
2556
  }
2394
2557
  }
2395
- dataView(memory0).setInt8(arg1 + 8, enum3, true);
2396
- var ptr4 = utf8Encode(v2_1, realloc0, memory0);
2397
- var len4 = utf8EncodedLen;
2398
- dataView(memory0).setInt32(arg1 + 16, len4, true);
2399
- dataView(memory0).setInt32(arg1 + 12, ptr4, true);
2558
+ dataView(memory0).setInt8(arg1 + 8, enum4, true);
2559
+ var ptr5 = utf8Encode(v3_1, realloc0, memory0);
2560
+ var len5 = utf8EncodedLen;
2561
+ dataView(memory0).setInt32(arg1 + 16, len5, true);
2562
+ dataView(memory0).setInt32(arg1 + 12, ptr5, true);
2400
2563
  }
2401
2564
  break;
2402
2565
  }
2403
2566
  case 'err': {
2404
- const e = variant7.val;
2567
+ const e = variant8.val;
2405
2568
  dataView(memory0).setInt8(arg1 + 0, 1, true);
2406
- var val6 = e;
2407
- let enum6;
2408
- switch (val6) {
2569
+ var val7 = e;
2570
+ let enum7;
2571
+ switch (val7) {
2409
2572
  case 'access': {
2410
- enum6 = 0;
2573
+ enum7 = 0;
2411
2574
  break;
2412
2575
  }
2413
2576
  case 'would-block': {
2414
- enum6 = 1;
2577
+ enum7 = 1;
2415
2578
  break;
2416
2579
  }
2417
2580
  case 'already': {
2418
- enum6 = 2;
2581
+ enum7 = 2;
2419
2582
  break;
2420
2583
  }
2421
2584
  case 'bad-descriptor': {
2422
- enum6 = 3;
2585
+ enum7 = 3;
2423
2586
  break;
2424
2587
  }
2425
2588
  case 'busy': {
2426
- enum6 = 4;
2589
+ enum7 = 4;
2427
2590
  break;
2428
2591
  }
2429
2592
  case 'deadlock': {
2430
- enum6 = 5;
2593
+ enum7 = 5;
2431
2594
  break;
2432
2595
  }
2433
2596
  case 'quota': {
2434
- enum6 = 6;
2597
+ enum7 = 6;
2435
2598
  break;
2436
2599
  }
2437
2600
  case 'exist': {
2438
- enum6 = 7;
2601
+ enum7 = 7;
2439
2602
  break;
2440
2603
  }
2441
2604
  case 'file-too-large': {
2442
- enum6 = 8;
2605
+ enum7 = 8;
2443
2606
  break;
2444
2607
  }
2445
2608
  case 'illegal-byte-sequence': {
2446
- enum6 = 9;
2609
+ enum7 = 9;
2447
2610
  break;
2448
2611
  }
2449
2612
  case 'in-progress': {
2450
- enum6 = 10;
2613
+ enum7 = 10;
2451
2614
  break;
2452
2615
  }
2453
2616
  case 'interrupted': {
2454
- enum6 = 11;
2617
+ enum7 = 11;
2455
2618
  break;
2456
2619
  }
2457
2620
  case 'invalid': {
2458
- enum6 = 12;
2621
+ enum7 = 12;
2459
2622
  break;
2460
2623
  }
2461
2624
  case 'io': {
2462
- enum6 = 13;
2625
+ enum7 = 13;
2463
2626
  break;
2464
2627
  }
2465
2628
  case 'is-directory': {
2466
- enum6 = 14;
2629
+ enum7 = 14;
2467
2630
  break;
2468
2631
  }
2469
2632
  case 'loop': {
2470
- enum6 = 15;
2633
+ enum7 = 15;
2471
2634
  break;
2472
2635
  }
2473
2636
  case 'too-many-links': {
2474
- enum6 = 16;
2637
+ enum7 = 16;
2475
2638
  break;
2476
2639
  }
2477
2640
  case 'message-size': {
2478
- enum6 = 17;
2641
+ enum7 = 17;
2479
2642
  break;
2480
2643
  }
2481
2644
  case 'name-too-long': {
2482
- enum6 = 18;
2645
+ enum7 = 18;
2483
2646
  break;
2484
2647
  }
2485
2648
  case 'no-device': {
2486
- enum6 = 19;
2649
+ enum7 = 19;
2487
2650
  break;
2488
2651
  }
2489
2652
  case 'no-entry': {
2490
- enum6 = 20;
2653
+ enum7 = 20;
2491
2654
  break;
2492
2655
  }
2493
2656
  case 'no-lock': {
2494
- enum6 = 21;
2657
+ enum7 = 21;
2495
2658
  break;
2496
2659
  }
2497
2660
  case 'insufficient-memory': {
2498
- enum6 = 22;
2661
+ enum7 = 22;
2499
2662
  break;
2500
2663
  }
2501
2664
  case 'insufficient-space': {
2502
- enum6 = 23;
2665
+ enum7 = 23;
2503
2666
  break;
2504
2667
  }
2505
2668
  case 'not-directory': {
2506
- enum6 = 24;
2669
+ enum7 = 24;
2507
2670
  break;
2508
2671
  }
2509
2672
  case 'not-empty': {
2510
- enum6 = 25;
2673
+ enum7 = 25;
2511
2674
  break;
2512
2675
  }
2513
2676
  case 'not-recoverable': {
2514
- enum6 = 26;
2677
+ enum7 = 26;
2515
2678
  break;
2516
2679
  }
2517
2680
  case 'unsupported': {
2518
- enum6 = 27;
2681
+ enum7 = 27;
2519
2682
  break;
2520
2683
  }
2521
2684
  case 'no-tty': {
2522
- enum6 = 28;
2685
+ enum7 = 28;
2523
2686
  break;
2524
2687
  }
2525
2688
  case 'no-such-device': {
2526
- enum6 = 29;
2689
+ enum7 = 29;
2527
2690
  break;
2528
2691
  }
2529
2692
  case 'overflow': {
2530
- enum6 = 30;
2693
+ enum7 = 30;
2531
2694
  break;
2532
2695
  }
2533
2696
  case 'not-permitted': {
2534
- enum6 = 31;
2697
+ enum7 = 31;
2535
2698
  break;
2536
2699
  }
2537
2700
  case 'pipe': {
2538
- enum6 = 32;
2701
+ enum7 = 32;
2539
2702
  break;
2540
2703
  }
2541
2704
  case 'read-only': {
2542
- enum6 = 33;
2705
+ enum7 = 33;
2543
2706
  break;
2544
2707
  }
2545
2708
  case 'invalid-seek': {
2546
- enum6 = 34;
2709
+ enum7 = 34;
2547
2710
  break;
2548
2711
  }
2549
2712
  case 'text-file-busy': {
2550
- enum6 = 35;
2713
+ enum7 = 35;
2551
2714
  break;
2552
2715
  }
2553
2716
  case 'cross-device': {
2554
- enum6 = 36;
2717
+ enum7 = 36;
2555
2718
  break;
2556
2719
  }
2557
2720
  default: {
@@ -2559,10 +2722,10 @@ function trampoline22(arg0, arg1) {
2559
2722
  console.error(e);
2560
2723
  }
2561
2724
 
2562
- throw new TypeError(`"${val6}" is not one of the cases of error-code`);
2725
+ throw new TypeError(`"${val7}" is not one of the cases of error-code`);
2563
2726
  }
2564
2727
  }
2565
- dataView(memory0).setInt8(arg1 + 4, enum6, true);
2728
+ dataView(memory0).setInt8(arg1 + 4, enum7, true);
2566
2729
  break;
2567
2730
  }
2568
2731
  default: {
@@ -2570,166 +2733,177 @@ function trampoline22(arg0, arg1) {
2570
2733
  }
2571
2734
  }
2572
2735
  }
2736
+ const handleTable0 = [T_FLAG, 0];
2737
+ const captureTable0= new Map();
2738
+ let captureCnt0 = 0;
2739
+ handleTables[0] = handleTable0;
2573
2740
 
2574
2741
  function trampoline23(arg0, arg1) {
2575
2742
  var handle1 = arg0;
2576
- var rsc0 = handleTable0.get(handle1).rep;
2743
+ var rep2 = handleTable0[(handle1 << 1) + 1] & ~T_FLAG;
2744
+ var rsc0 = captureTable0.get(rep2);
2745
+ if (!rsc0) {
2746
+ rsc0 = Object.create(Error$1.prototype);
2747
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
2748
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
2749
+ }
2577
2750
  const ret = filesystemErrorCode(rsc0);
2578
- var variant3 = ret;
2579
- if (variant3 === null || variant3=== undefined) {
2751
+ rsc0[symbolRscHandle] = null;
2752
+ var variant4 = ret;
2753
+ if (variant4 === null || variant4=== undefined) {
2580
2754
  dataView(memory0).setInt8(arg1 + 0, 0, true);
2581
2755
  } else {
2582
- const e = variant3;
2756
+ const e = variant4;
2583
2757
  dataView(memory0).setInt8(arg1 + 0, 1, true);
2584
- var val2 = e;
2585
- let enum2;
2586
- switch (val2) {
2758
+ var val3 = e;
2759
+ let enum3;
2760
+ switch (val3) {
2587
2761
  case 'access': {
2588
- enum2 = 0;
2762
+ enum3 = 0;
2589
2763
  break;
2590
2764
  }
2591
2765
  case 'would-block': {
2592
- enum2 = 1;
2766
+ enum3 = 1;
2593
2767
  break;
2594
2768
  }
2595
2769
  case 'already': {
2596
- enum2 = 2;
2770
+ enum3 = 2;
2597
2771
  break;
2598
2772
  }
2599
2773
  case 'bad-descriptor': {
2600
- enum2 = 3;
2774
+ enum3 = 3;
2601
2775
  break;
2602
2776
  }
2603
2777
  case 'busy': {
2604
- enum2 = 4;
2778
+ enum3 = 4;
2605
2779
  break;
2606
2780
  }
2607
2781
  case 'deadlock': {
2608
- enum2 = 5;
2782
+ enum3 = 5;
2609
2783
  break;
2610
2784
  }
2611
2785
  case 'quota': {
2612
- enum2 = 6;
2786
+ enum3 = 6;
2613
2787
  break;
2614
2788
  }
2615
2789
  case 'exist': {
2616
- enum2 = 7;
2790
+ enum3 = 7;
2617
2791
  break;
2618
2792
  }
2619
2793
  case 'file-too-large': {
2620
- enum2 = 8;
2794
+ enum3 = 8;
2621
2795
  break;
2622
2796
  }
2623
2797
  case 'illegal-byte-sequence': {
2624
- enum2 = 9;
2798
+ enum3 = 9;
2625
2799
  break;
2626
2800
  }
2627
2801
  case 'in-progress': {
2628
- enum2 = 10;
2802
+ enum3 = 10;
2629
2803
  break;
2630
2804
  }
2631
2805
  case 'interrupted': {
2632
- enum2 = 11;
2806
+ enum3 = 11;
2633
2807
  break;
2634
2808
  }
2635
2809
  case 'invalid': {
2636
- enum2 = 12;
2810
+ enum3 = 12;
2637
2811
  break;
2638
2812
  }
2639
2813
  case 'io': {
2640
- enum2 = 13;
2814
+ enum3 = 13;
2641
2815
  break;
2642
2816
  }
2643
2817
  case 'is-directory': {
2644
- enum2 = 14;
2818
+ enum3 = 14;
2645
2819
  break;
2646
2820
  }
2647
2821
  case 'loop': {
2648
- enum2 = 15;
2822
+ enum3 = 15;
2649
2823
  break;
2650
2824
  }
2651
2825
  case 'too-many-links': {
2652
- enum2 = 16;
2826
+ enum3 = 16;
2653
2827
  break;
2654
2828
  }
2655
2829
  case 'message-size': {
2656
- enum2 = 17;
2830
+ enum3 = 17;
2657
2831
  break;
2658
2832
  }
2659
2833
  case 'name-too-long': {
2660
- enum2 = 18;
2834
+ enum3 = 18;
2661
2835
  break;
2662
2836
  }
2663
2837
  case 'no-device': {
2664
- enum2 = 19;
2838
+ enum3 = 19;
2665
2839
  break;
2666
2840
  }
2667
2841
  case 'no-entry': {
2668
- enum2 = 20;
2842
+ enum3 = 20;
2669
2843
  break;
2670
2844
  }
2671
2845
  case 'no-lock': {
2672
- enum2 = 21;
2846
+ enum3 = 21;
2673
2847
  break;
2674
2848
  }
2675
2849
  case 'insufficient-memory': {
2676
- enum2 = 22;
2850
+ enum3 = 22;
2677
2851
  break;
2678
2852
  }
2679
2853
  case 'insufficient-space': {
2680
- enum2 = 23;
2854
+ enum3 = 23;
2681
2855
  break;
2682
2856
  }
2683
2857
  case 'not-directory': {
2684
- enum2 = 24;
2858
+ enum3 = 24;
2685
2859
  break;
2686
2860
  }
2687
2861
  case 'not-empty': {
2688
- enum2 = 25;
2862
+ enum3 = 25;
2689
2863
  break;
2690
2864
  }
2691
2865
  case 'not-recoverable': {
2692
- enum2 = 26;
2866
+ enum3 = 26;
2693
2867
  break;
2694
2868
  }
2695
2869
  case 'unsupported': {
2696
- enum2 = 27;
2870
+ enum3 = 27;
2697
2871
  break;
2698
2872
  }
2699
2873
  case 'no-tty': {
2700
- enum2 = 28;
2874
+ enum3 = 28;
2701
2875
  break;
2702
2876
  }
2703
2877
  case 'no-such-device': {
2704
- enum2 = 29;
2878
+ enum3 = 29;
2705
2879
  break;
2706
2880
  }
2707
2881
  case 'overflow': {
2708
- enum2 = 30;
2882
+ enum3 = 30;
2709
2883
  break;
2710
2884
  }
2711
2885
  case 'not-permitted': {
2712
- enum2 = 31;
2886
+ enum3 = 31;
2713
2887
  break;
2714
2888
  }
2715
2889
  case 'pipe': {
2716
- enum2 = 32;
2890
+ enum3 = 32;
2717
2891
  break;
2718
2892
  }
2719
2893
  case 'read-only': {
2720
- enum2 = 33;
2894
+ enum3 = 33;
2721
2895
  break;
2722
2896
  }
2723
2897
  case 'invalid-seek': {
2724
- enum2 = 34;
2898
+ enum3 = 34;
2725
2899
  break;
2726
2900
  }
2727
2901
  case 'text-file-busy': {
2728
- enum2 = 35;
2902
+ enum3 = 35;
2729
2903
  break;
2730
2904
  }
2731
2905
  case 'cross-device': {
2732
- enum2 = 36;
2906
+ enum3 = 36;
2733
2907
  break;
2734
2908
  }
2735
2909
  default: {
@@ -2737,50 +2911,61 @@ function trampoline23(arg0, arg1) {
2737
2911
  console.error(e);
2738
2912
  }
2739
2913
 
2740
- throw new TypeError(`"${val2}" is not one of the cases of error-code`);
2914
+ throw new TypeError(`"${val3}" is not one of the cases of error-code`);
2741
2915
  }
2742
2916
  }
2743
- dataView(memory0).setInt8(arg1 + 1, enum2, true);
2917
+ dataView(memory0).setInt8(arg1 + 1, enum3, true);
2744
2918
  }
2745
2919
  }
2746
2920
 
2747
2921
  function trampoline24(arg0, arg1, arg2) {
2748
2922
  var handle1 = arg0;
2749
- var rsc0 = handleTable1.get(handle1).rep;
2923
+ var rep2 = handleTable1[(handle1 << 1) + 1] & ~T_FLAG;
2924
+ var rsc0 = captureTable1.get(rep2);
2925
+ if (!rsc0) {
2926
+ rsc0 = Object.create(InputStream.prototype);
2927
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
2928
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
2929
+ }
2750
2930
  let ret;
2751
2931
  try {
2752
- ret = { tag: 'ok', val: InputStream.prototype.read.call(rsc0, BigInt.asUintN(64, arg1)) };
2932
+ ret = { tag: 'ok', val: rsc0.read(BigInt.asUintN(64, arg1))};
2753
2933
  } catch (e) {
2754
2934
  ret = { tag: 'err', val: getErrorPayload(e) };
2755
2935
  }
2756
- var variant5 = ret;
2757
- switch (variant5.tag) {
2936
+ rsc0[symbolRscHandle] = null;
2937
+ var variant6 = ret;
2938
+ switch (variant6.tag) {
2758
2939
  case 'ok': {
2759
- const e = variant5.val;
2940
+ const e = variant6.val;
2760
2941
  dataView(memory0).setInt8(arg2 + 0, 0, true);
2761
- var val2 = e;
2762
- var len2 = val2.byteLength;
2763
- var ptr2 = realloc0(0, 0, 1, len2 * 1);
2764
- var src2 = new Uint8Array(val2.buffer || val2, val2.byteOffset, len2 * 1);
2765
- (new Uint8Array(memory0.buffer, ptr2, len2 * 1)).set(src2);
2766
- dataView(memory0).setInt32(arg2 + 8, len2, true);
2767
- dataView(memory0).setInt32(arg2 + 4, ptr2, true);
2942
+ var val3 = e;
2943
+ var len3 = val3.byteLength;
2944
+ var ptr3 = realloc0(0, 0, 1, len3 * 1);
2945
+ var src3 = new Uint8Array(val3.buffer || val3, val3.byteOffset, len3 * 1);
2946
+ (new Uint8Array(memory0.buffer, ptr3, len3 * 1)).set(src3);
2947
+ dataView(memory0).setInt32(arg2 + 8, len3, true);
2948
+ dataView(memory0).setInt32(arg2 + 4, ptr3, true);
2768
2949
  break;
2769
2950
  }
2770
2951
  case 'err': {
2771
- const e = variant5.val;
2952
+ const e = variant6.val;
2772
2953
  dataView(memory0).setInt8(arg2 + 0, 1, true);
2773
- var variant4 = e;
2774
- switch (variant4.tag) {
2954
+ var variant5 = e;
2955
+ switch (variant5.tag) {
2775
2956
  case 'last-operation-failed': {
2776
- const e = variant4.val;
2957
+ const e = variant5.val;
2777
2958
  dataView(memory0).setInt8(arg2 + 4, 0, true);
2778
2959
  if (!(e instanceof Error$1)) {
2779
- throw new Error('Resource error: Not a valid "Error" resource.');
2960
+ throw new TypeError('Resource error: Not a valid "Error" resource.');
2780
2961
  }
2781
- var handle3 = handleCnt0++;
2782
- handleTable0.set(handle3, { rep: e, own: true });
2783
- dataView(memory0).setInt32(arg2 + 8, handle3, true);
2962
+ var handle4 = e[symbolRscHandle];
2963
+ if (!handle4) {
2964
+ const rep = e[symbolRscRep] || ++captureCnt0;
2965
+ captureTable0.set(rep, e);
2966
+ handle4 = rscTableCreateOwn(handleTable0, rep);
2967
+ }
2968
+ dataView(memory0).setInt32(arg2 + 8, handle4, true);
2784
2969
  break;
2785
2970
  }
2786
2971
  case 'closed': {
@@ -2788,7 +2973,7 @@ function trampoline24(arg0, arg1, arg2) {
2788
2973
  break;
2789
2974
  }
2790
2975
  default: {
2791
- throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant4.tag)}\` (received \`${variant4}\`) specified for \`StreamError\``);
2976
+ throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant5.tag)}\` (received \`${variant5}\`) specified for \`StreamError\``);
2792
2977
  }
2793
2978
  }
2794
2979
  break;
@@ -2801,41 +2986,52 @@ function trampoline24(arg0, arg1, arg2) {
2801
2986
 
2802
2987
  function trampoline25(arg0, arg1, arg2) {
2803
2988
  var handle1 = arg0;
2804
- var rsc0 = handleTable1.get(handle1).rep;
2989
+ var rep2 = handleTable1[(handle1 << 1) + 1] & ~T_FLAG;
2990
+ var rsc0 = captureTable1.get(rep2);
2991
+ if (!rsc0) {
2992
+ rsc0 = Object.create(InputStream.prototype);
2993
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
2994
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
2995
+ }
2805
2996
  let ret;
2806
2997
  try {
2807
- ret = { tag: 'ok', val: InputStream.prototype.blockingRead.call(rsc0, BigInt.asUintN(64, arg1)) };
2998
+ ret = { tag: 'ok', val: rsc0.blockingRead(BigInt.asUintN(64, arg1))};
2808
2999
  } catch (e) {
2809
3000
  ret = { tag: 'err', val: getErrorPayload(e) };
2810
3001
  }
2811
- var variant5 = ret;
2812
- switch (variant5.tag) {
3002
+ rsc0[symbolRscHandle] = null;
3003
+ var variant6 = ret;
3004
+ switch (variant6.tag) {
2813
3005
  case 'ok': {
2814
- const e = variant5.val;
3006
+ const e = variant6.val;
2815
3007
  dataView(memory0).setInt8(arg2 + 0, 0, true);
2816
- var val2 = e;
2817
- var len2 = val2.byteLength;
2818
- var ptr2 = realloc0(0, 0, 1, len2 * 1);
2819
- var src2 = new Uint8Array(val2.buffer || val2, val2.byteOffset, len2 * 1);
2820
- (new Uint8Array(memory0.buffer, ptr2, len2 * 1)).set(src2);
2821
- dataView(memory0).setInt32(arg2 + 8, len2, true);
2822
- dataView(memory0).setInt32(arg2 + 4, ptr2, true);
3008
+ var val3 = e;
3009
+ var len3 = val3.byteLength;
3010
+ var ptr3 = realloc0(0, 0, 1, len3 * 1);
3011
+ var src3 = new Uint8Array(val3.buffer || val3, val3.byteOffset, len3 * 1);
3012
+ (new Uint8Array(memory0.buffer, ptr3, len3 * 1)).set(src3);
3013
+ dataView(memory0).setInt32(arg2 + 8, len3, true);
3014
+ dataView(memory0).setInt32(arg2 + 4, ptr3, true);
2823
3015
  break;
2824
3016
  }
2825
3017
  case 'err': {
2826
- const e = variant5.val;
3018
+ const e = variant6.val;
2827
3019
  dataView(memory0).setInt8(arg2 + 0, 1, true);
2828
- var variant4 = e;
2829
- switch (variant4.tag) {
3020
+ var variant5 = e;
3021
+ switch (variant5.tag) {
2830
3022
  case 'last-operation-failed': {
2831
- const e = variant4.val;
3023
+ const e = variant5.val;
2832
3024
  dataView(memory0).setInt8(arg2 + 4, 0, true);
2833
3025
  if (!(e instanceof Error$1)) {
2834
- throw new Error('Resource error: Not a valid "Error" resource.');
3026
+ throw new TypeError('Resource error: Not a valid "Error" resource.');
2835
3027
  }
2836
- var handle3 = handleCnt0++;
2837
- handleTable0.set(handle3, { rep: e, own: true });
2838
- dataView(memory0).setInt32(arg2 + 8, handle3, true);
3028
+ var handle4 = e[symbolRscHandle];
3029
+ if (!handle4) {
3030
+ const rep = e[symbolRscRep] || ++captureCnt0;
3031
+ captureTable0.set(rep, e);
3032
+ handle4 = rscTableCreateOwn(handleTable0, rep);
3033
+ }
3034
+ dataView(memory0).setInt32(arg2 + 8, handle4, true);
2839
3035
  break;
2840
3036
  }
2841
3037
  case 'closed': {
@@ -2843,7 +3039,7 @@ function trampoline25(arg0, arg1, arg2) {
2843
3039
  break;
2844
3040
  }
2845
3041
  default: {
2846
- throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant4.tag)}\` (received \`${variant4}\`) specified for \`StreamError\``);
3042
+ throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant5.tag)}\` (received \`${variant5}\`) specified for \`StreamError\``);
2847
3043
  }
2848
3044
  }
2849
3045
  break;
@@ -2856,35 +3052,46 @@ function trampoline25(arg0, arg1, arg2) {
2856
3052
 
2857
3053
  function trampoline26(arg0, arg1) {
2858
3054
  var handle1 = arg0;
2859
- var rsc0 = handleTable2.get(handle1).rep;
3055
+ var rep2 = handleTable2[(handle1 << 1) + 1] & ~T_FLAG;
3056
+ var rsc0 = captureTable2.get(rep2);
3057
+ if (!rsc0) {
3058
+ rsc0 = Object.create(OutputStream.prototype);
3059
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
3060
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
3061
+ }
2860
3062
  let ret;
2861
3063
  try {
2862
- ret = { tag: 'ok', val: OutputStream.prototype.checkWrite.call(rsc0) };
3064
+ ret = { tag: 'ok', val: rsc0.checkWrite()};
2863
3065
  } catch (e) {
2864
3066
  ret = { tag: 'err', val: getErrorPayload(e) };
2865
3067
  }
2866
- var variant4 = ret;
2867
- switch (variant4.tag) {
3068
+ rsc0[symbolRscHandle] = null;
3069
+ var variant5 = ret;
3070
+ switch (variant5.tag) {
2868
3071
  case 'ok': {
2869
- const e = variant4.val;
3072
+ const e = variant5.val;
2870
3073
  dataView(memory0).setInt8(arg1 + 0, 0, true);
2871
3074
  dataView(memory0).setBigInt64(arg1 + 8, toUint64(e), true);
2872
3075
  break;
2873
3076
  }
2874
3077
  case 'err': {
2875
- const e = variant4.val;
3078
+ const e = variant5.val;
2876
3079
  dataView(memory0).setInt8(arg1 + 0, 1, true);
2877
- var variant3 = e;
2878
- switch (variant3.tag) {
3080
+ var variant4 = e;
3081
+ switch (variant4.tag) {
2879
3082
  case 'last-operation-failed': {
2880
- const e = variant3.val;
3083
+ const e = variant4.val;
2881
3084
  dataView(memory0).setInt8(arg1 + 8, 0, true);
2882
3085
  if (!(e instanceof Error$1)) {
2883
- throw new Error('Resource error: Not a valid "Error" resource.');
3086
+ throw new TypeError('Resource error: Not a valid "Error" resource.');
3087
+ }
3088
+ var handle3 = e[symbolRscHandle];
3089
+ if (!handle3) {
3090
+ const rep = e[symbolRscRep] || ++captureCnt0;
3091
+ captureTable0.set(rep, e);
3092
+ handle3 = rscTableCreateOwn(handleTable0, rep);
2884
3093
  }
2885
- var handle2 = handleCnt0++;
2886
- handleTable0.set(handle2, { rep: e, own: true });
2887
- dataView(memory0).setInt32(arg1 + 12, handle2, true);
3094
+ dataView(memory0).setInt32(arg1 + 12, handle3, true);
2888
3095
  break;
2889
3096
  }
2890
3097
  case 'closed': {
@@ -2892,7 +3099,7 @@ function trampoline26(arg0, arg1) {
2892
3099
  break;
2893
3100
  }
2894
3101
  default: {
2895
- throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant3.tag)}\` (received \`${variant3}\`) specified for \`StreamError\``);
3102
+ throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant4.tag)}\` (received \`${variant4}\`) specified for \`StreamError\``);
2896
3103
  }
2897
3104
  }
2898
3105
  break;
@@ -2905,37 +3112,48 @@ function trampoline26(arg0, arg1) {
2905
3112
 
2906
3113
  function trampoline27(arg0, arg1, arg2, arg3) {
2907
3114
  var handle1 = arg0;
2908
- var rsc0 = handleTable2.get(handle1).rep;
2909
- var ptr2 = arg1;
2910
- var len2 = arg2;
2911
- var result2 = new Uint8Array(memory0.buffer.slice(ptr2, ptr2 + len2 * 1));
3115
+ var rep2 = handleTable2[(handle1 << 1) + 1] & ~T_FLAG;
3116
+ var rsc0 = captureTable2.get(rep2);
3117
+ if (!rsc0) {
3118
+ rsc0 = Object.create(OutputStream.prototype);
3119
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
3120
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
3121
+ }
3122
+ var ptr3 = arg1;
3123
+ var len3 = arg2;
3124
+ var result3 = new Uint8Array(memory0.buffer.slice(ptr3, ptr3 + len3 * 1));
2912
3125
  let ret;
2913
3126
  try {
2914
- ret = { tag: 'ok', val: OutputStream.prototype.write.call(rsc0, result2) };
3127
+ ret = { tag: 'ok', val: rsc0.write(result3)};
2915
3128
  } catch (e) {
2916
3129
  ret = { tag: 'err', val: getErrorPayload(e) };
2917
3130
  }
2918
- var variant5 = ret;
2919
- switch (variant5.tag) {
3131
+ rsc0[symbolRscHandle] = null;
3132
+ var variant6 = ret;
3133
+ switch (variant6.tag) {
2920
3134
  case 'ok': {
2921
- const e = variant5.val;
3135
+ const e = variant6.val;
2922
3136
  dataView(memory0).setInt8(arg3 + 0, 0, true);
2923
3137
  break;
2924
3138
  }
2925
3139
  case 'err': {
2926
- const e = variant5.val;
3140
+ const e = variant6.val;
2927
3141
  dataView(memory0).setInt8(arg3 + 0, 1, true);
2928
- var variant4 = e;
2929
- switch (variant4.tag) {
3142
+ var variant5 = e;
3143
+ switch (variant5.tag) {
2930
3144
  case 'last-operation-failed': {
2931
- const e = variant4.val;
3145
+ const e = variant5.val;
2932
3146
  dataView(memory0).setInt8(arg3 + 4, 0, true);
2933
3147
  if (!(e instanceof Error$1)) {
2934
- throw new Error('Resource error: Not a valid "Error" resource.');
3148
+ throw new TypeError('Resource error: Not a valid "Error" resource.');
3149
+ }
3150
+ var handle4 = e[symbolRscHandle];
3151
+ if (!handle4) {
3152
+ const rep = e[symbolRscRep] || ++captureCnt0;
3153
+ captureTable0.set(rep, e);
3154
+ handle4 = rscTableCreateOwn(handleTable0, rep);
2935
3155
  }
2936
- var handle3 = handleCnt0++;
2937
- handleTable0.set(handle3, { rep: e, own: true });
2938
- dataView(memory0).setInt32(arg3 + 8, handle3, true);
3156
+ dataView(memory0).setInt32(arg3 + 8, handle4, true);
2939
3157
  break;
2940
3158
  }
2941
3159
  case 'closed': {
@@ -2943,7 +3161,7 @@ function trampoline27(arg0, arg1, arg2, arg3) {
2943
3161
  break;
2944
3162
  }
2945
3163
  default: {
2946
- throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant4.tag)}\` (received \`${variant4}\`) specified for \`StreamError\``);
3164
+ throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant5.tag)}\` (received \`${variant5}\`) specified for \`StreamError\``);
2947
3165
  }
2948
3166
  }
2949
3167
  break;
@@ -2956,37 +3174,48 @@ function trampoline27(arg0, arg1, arg2, arg3) {
2956
3174
 
2957
3175
  function trampoline28(arg0, arg1, arg2, arg3) {
2958
3176
  var handle1 = arg0;
2959
- var rsc0 = handleTable2.get(handle1).rep;
2960
- var ptr2 = arg1;
2961
- var len2 = arg2;
2962
- var result2 = new Uint8Array(memory0.buffer.slice(ptr2, ptr2 + len2 * 1));
3177
+ var rep2 = handleTable2[(handle1 << 1) + 1] & ~T_FLAG;
3178
+ var rsc0 = captureTable2.get(rep2);
3179
+ if (!rsc0) {
3180
+ rsc0 = Object.create(OutputStream.prototype);
3181
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
3182
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
3183
+ }
3184
+ var ptr3 = arg1;
3185
+ var len3 = arg2;
3186
+ var result3 = new Uint8Array(memory0.buffer.slice(ptr3, ptr3 + len3 * 1));
2963
3187
  let ret;
2964
3188
  try {
2965
- ret = { tag: 'ok', val: OutputStream.prototype.blockingWriteAndFlush.call(rsc0, result2) };
3189
+ ret = { tag: 'ok', val: rsc0.blockingWriteAndFlush(result3)};
2966
3190
  } catch (e) {
2967
3191
  ret = { tag: 'err', val: getErrorPayload(e) };
2968
3192
  }
2969
- var variant5 = ret;
2970
- switch (variant5.tag) {
3193
+ rsc0[symbolRscHandle] = null;
3194
+ var variant6 = ret;
3195
+ switch (variant6.tag) {
2971
3196
  case 'ok': {
2972
- const e = variant5.val;
3197
+ const e = variant6.val;
2973
3198
  dataView(memory0).setInt8(arg3 + 0, 0, true);
2974
3199
  break;
2975
3200
  }
2976
3201
  case 'err': {
2977
- const e = variant5.val;
3202
+ const e = variant6.val;
2978
3203
  dataView(memory0).setInt8(arg3 + 0, 1, true);
2979
- var variant4 = e;
2980
- switch (variant4.tag) {
3204
+ var variant5 = e;
3205
+ switch (variant5.tag) {
2981
3206
  case 'last-operation-failed': {
2982
- const e = variant4.val;
3207
+ const e = variant5.val;
2983
3208
  dataView(memory0).setInt8(arg3 + 4, 0, true);
2984
3209
  if (!(e instanceof Error$1)) {
2985
- throw new Error('Resource error: Not a valid "Error" resource.');
3210
+ throw new TypeError('Resource error: Not a valid "Error" resource.');
3211
+ }
3212
+ var handle4 = e[symbolRscHandle];
3213
+ if (!handle4) {
3214
+ const rep = e[symbolRscRep] || ++captureCnt0;
3215
+ captureTable0.set(rep, e);
3216
+ handle4 = rscTableCreateOwn(handleTable0, rep);
2986
3217
  }
2987
- var handle3 = handleCnt0++;
2988
- handleTable0.set(handle3, { rep: e, own: true });
2989
- dataView(memory0).setInt32(arg3 + 8, handle3, true);
3218
+ dataView(memory0).setInt32(arg3 + 8, handle4, true);
2990
3219
  break;
2991
3220
  }
2992
3221
  case 'closed': {
@@ -2994,7 +3223,7 @@ function trampoline28(arg0, arg1, arg2, arg3) {
2994
3223
  break;
2995
3224
  }
2996
3225
  default: {
2997
- throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant4.tag)}\` (received \`${variant4}\`) specified for \`StreamError\``);
3226
+ throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant5.tag)}\` (received \`${variant5}\`) specified for \`StreamError\``);
2998
3227
  }
2999
3228
  }
3000
3229
  break;
@@ -3007,34 +3236,45 @@ function trampoline28(arg0, arg1, arg2, arg3) {
3007
3236
 
3008
3237
  function trampoline29(arg0, arg1) {
3009
3238
  var handle1 = arg0;
3010
- var rsc0 = handleTable2.get(handle1).rep;
3239
+ var rep2 = handleTable2[(handle1 << 1) + 1] & ~T_FLAG;
3240
+ var rsc0 = captureTable2.get(rep2);
3241
+ if (!rsc0) {
3242
+ rsc0 = Object.create(OutputStream.prototype);
3243
+ Object.defineProperty(rsc0, symbolRscHandle, { writable: true, value: handle1});
3244
+ Object.defineProperty(rsc0, symbolRscRep, { writable: true, value: rep2});
3245
+ }
3011
3246
  let ret;
3012
3247
  try {
3013
- ret = { tag: 'ok', val: OutputStream.prototype.blockingFlush.call(rsc0) };
3248
+ ret = { tag: 'ok', val: rsc0.blockingFlush()};
3014
3249
  } catch (e) {
3015
3250
  ret = { tag: 'err', val: getErrorPayload(e) };
3016
3251
  }
3017
- var variant4 = ret;
3018
- switch (variant4.tag) {
3252
+ rsc0[symbolRscHandle] = null;
3253
+ var variant5 = ret;
3254
+ switch (variant5.tag) {
3019
3255
  case 'ok': {
3020
- const e = variant4.val;
3256
+ const e = variant5.val;
3021
3257
  dataView(memory0).setInt8(arg1 + 0, 0, true);
3022
3258
  break;
3023
3259
  }
3024
3260
  case 'err': {
3025
- const e = variant4.val;
3261
+ const e = variant5.val;
3026
3262
  dataView(memory0).setInt8(arg1 + 0, 1, true);
3027
- var variant3 = e;
3028
- switch (variant3.tag) {
3263
+ var variant4 = e;
3264
+ switch (variant4.tag) {
3029
3265
  case 'last-operation-failed': {
3030
- const e = variant3.val;
3266
+ const e = variant4.val;
3031
3267
  dataView(memory0).setInt8(arg1 + 4, 0, true);
3032
3268
  if (!(e instanceof Error$1)) {
3033
- throw new Error('Resource error: Not a valid "Error" resource.');
3269
+ throw new TypeError('Resource error: Not a valid "Error" resource.');
3270
+ }
3271
+ var handle3 = e[symbolRscHandle];
3272
+ if (!handle3) {
3273
+ const rep = e[symbolRscRep] || ++captureCnt0;
3274
+ captureTable0.set(rep, e);
3275
+ handle3 = rscTableCreateOwn(handleTable0, rep);
3034
3276
  }
3035
- var handle2 = handleCnt0++;
3036
- handleTable0.set(handle2, { rep: e, own: true });
3037
- dataView(memory0).setInt32(arg1 + 8, handle2, true);
3277
+ dataView(memory0).setInt32(arg1 + 8, handle3, true);
3038
3278
  break;
3039
3279
  }
3040
3280
  case 'closed': {
@@ -3042,7 +3282,7 @@ function trampoline29(arg0, arg1) {
3042
3282
  break;
3043
3283
  }
3044
3284
  default: {
3045
- throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant3.tag)}\` (received \`${variant3}\`) specified for \`StreamError\``);
3285
+ throw new TypeError(`invalid variant tag value \`${JSON.stringify(variant4.tag)}\` (received \`${variant4}\`) specified for \`StreamError\``);
3046
3286
  }
3047
3287
  }
3048
3288
  break;
@@ -3084,6 +3324,10 @@ function trampoline31(arg0) {
3084
3324
  dataView(memory0).setInt32(arg0 + 4, len3, true);
3085
3325
  dataView(memory0).setInt32(arg0 + 0, result3, true);
3086
3326
  }
3327
+ const handleTable3 = [T_FLAG, 0];
3328
+ const captureTable3= new Map();
3329
+ let captureCnt3 = 0;
3330
+ handleTables[3] = handleTable3;
3087
3331
 
3088
3332
  function trampoline32(arg0) {
3089
3333
  const ret = getTerminalStdin();
@@ -3094,13 +3338,21 @@ function trampoline32(arg0) {
3094
3338
  const e = variant1;
3095
3339
  dataView(memory0).setInt8(arg0 + 0, 1, true);
3096
3340
  if (!(e instanceof TerminalInput)) {
3097
- throw new Error('Resource error: Not a valid "TerminalInput" resource.');
3341
+ throw new TypeError('Resource error: Not a valid "TerminalInput" resource.');
3342
+ }
3343
+ var handle0 = e[symbolRscHandle];
3344
+ if (!handle0) {
3345
+ const rep = e[symbolRscRep] || ++captureCnt3;
3346
+ captureTable3.set(rep, e);
3347
+ handle0 = rscTableCreateOwn(handleTable3, rep);
3098
3348
  }
3099
- var handle0 = handleCnt3++;
3100
- handleTable3.set(handle0, { rep: e, own: true });
3101
3349
  dataView(memory0).setInt32(arg0 + 4, handle0, true);
3102
3350
  }
3103
3351
  }
3352
+ const handleTable4 = [T_FLAG, 0];
3353
+ const captureTable4= new Map();
3354
+ let captureCnt4 = 0;
3355
+ handleTables[4] = handleTable4;
3104
3356
 
3105
3357
  function trampoline33(arg0) {
3106
3358
  const ret = getTerminalStdout();
@@ -3111,10 +3363,14 @@ function trampoline33(arg0) {
3111
3363
  const e = variant1;
3112
3364
  dataView(memory0).setInt8(arg0 + 0, 1, true);
3113
3365
  if (!(e instanceof TerminalOutput)) {
3114
- throw new Error('Resource error: Not a valid "TerminalOutput" resource.');
3366
+ throw new TypeError('Resource error: Not a valid "TerminalOutput" resource.');
3367
+ }
3368
+ var handle0 = e[symbolRscHandle];
3369
+ if (!handle0) {
3370
+ const rep = e[symbolRscRep] || ++captureCnt4;
3371
+ captureTable4.set(rep, e);
3372
+ handle0 = rscTableCreateOwn(handleTable4, rep);
3115
3373
  }
3116
- var handle0 = handleCnt4++;
3117
- handleTable4.set(handle0, { rep: e, own: true });
3118
3374
  dataView(memory0).setInt32(arg0 + 4, handle0, true);
3119
3375
  }
3120
3376
  }
@@ -3128,10 +3384,14 @@ function trampoline34(arg0) {
3128
3384
  const e = variant1;
3129
3385
  dataView(memory0).setInt8(arg0 + 0, 1, true);
3130
3386
  if (!(e instanceof TerminalOutput)) {
3131
- throw new Error('Resource error: Not a valid "TerminalOutput" resource.');
3387
+ throw new TypeError('Resource error: Not a valid "TerminalOutput" resource.');
3388
+ }
3389
+ var handle0 = e[symbolRscHandle];
3390
+ if (!handle0) {
3391
+ const rep = e[symbolRscRep] || ++captureCnt4;
3392
+ captureTable4.set(rep, e);
3393
+ handle0 = rscTableCreateOwn(handleTable4, rep);
3132
3394
  }
3133
- var handle0 = handleCnt4++;
3134
- handleTable4.set(handle0, { rep: e, own: true });
3135
3395
  dataView(memory0).setInt32(arg0 + 4, handle0, true);
3136
3396
  }
3137
3397
  }
@@ -3139,74 +3399,100 @@ let exports3;
3139
3399
  let realloc1;
3140
3400
  let postReturn0;
3141
3401
  let postReturn1;
3402
+ let postReturn2;
3403
+ let postReturn3;
3404
+ let postReturn4;
3405
+ let postReturn5;
3406
+ let postReturn6;
3142
3407
  function trampoline0(handle) {
3143
- const handleEntry = handleTable6.get(handle);
3144
- if (!handleEntry) {
3145
- throw new Error(`Resource error: Invalid handle ${handle}`);
3146
- }
3147
- handleTable6.delete(handle);
3148
- if (handleEntry.own && handleEntry.rep[symbolDispose]) {
3149
- handleEntry.rep[symbolDispose]();
3408
+ const handleEntry = rscTableRemove(handleTable6, handle);
3409
+ if (handleEntry.own) {
3410
+
3411
+ const rsc = captureTable6.get(handleEntry.rep);
3412
+ if (rsc) {
3413
+ if (rsc[symbolDispose]) rsc[symbolDispose]();
3414
+ captureTable6.delete(handleEntry.rep);
3415
+ } else if (DirectoryEntryStream[symbolCabiDispose]) {
3416
+ DirectoryEntryStream[symbolCabiDispose](handleEntry.rep);
3417
+ }
3150
3418
  }
3151
3419
  }
3152
3420
  function trampoline1(handle) {
3153
- const handleEntry = handleTable0.get(handle);
3154
- if (!handleEntry) {
3155
- throw new Error(`Resource error: Invalid handle ${handle}`);
3156
- }
3157
- handleTable0.delete(handle);
3158
- if (handleEntry.own && handleEntry.rep[symbolDispose]) {
3159
- handleEntry.rep[symbolDispose]();
3421
+ const handleEntry = rscTableRemove(handleTable0, handle);
3422
+ if (handleEntry.own) {
3423
+
3424
+ const rsc = captureTable0.get(handleEntry.rep);
3425
+ if (rsc) {
3426
+ if (rsc[symbolDispose]) rsc[symbolDispose]();
3427
+ captureTable0.delete(handleEntry.rep);
3428
+ } else if (Error$1[symbolCabiDispose]) {
3429
+ Error$1[symbolCabiDispose](handleEntry.rep);
3430
+ }
3160
3431
  }
3161
3432
  }
3162
3433
  function trampoline2(handle) {
3163
- const handleEntry = handleTable1.get(handle);
3164
- if (!handleEntry) {
3165
- throw new Error(`Resource error: Invalid handle ${handle}`);
3166
- }
3167
- handleTable1.delete(handle);
3168
- if (handleEntry.own && handleEntry.rep[symbolDispose]) {
3169
- handleEntry.rep[symbolDispose]();
3434
+ const handleEntry = rscTableRemove(handleTable1, handle);
3435
+ if (handleEntry.own) {
3436
+
3437
+ const rsc = captureTable1.get(handleEntry.rep);
3438
+ if (rsc) {
3439
+ if (rsc[symbolDispose]) rsc[symbolDispose]();
3440
+ captureTable1.delete(handleEntry.rep);
3441
+ } else if (InputStream[symbolCabiDispose]) {
3442
+ InputStream[symbolCabiDispose](handleEntry.rep);
3443
+ }
3170
3444
  }
3171
3445
  }
3172
3446
  function trampoline3(handle) {
3173
- const handleEntry = handleTable2.get(handle);
3174
- if (!handleEntry) {
3175
- throw new Error(`Resource error: Invalid handle ${handle}`);
3176
- }
3177
- handleTable2.delete(handle);
3178
- if (handleEntry.own && handleEntry.rep[symbolDispose]) {
3179
- handleEntry.rep[symbolDispose]();
3447
+ const handleEntry = rscTableRemove(handleTable2, handle);
3448
+ if (handleEntry.own) {
3449
+
3450
+ const rsc = captureTable2.get(handleEntry.rep);
3451
+ if (rsc) {
3452
+ if (rsc[symbolDispose]) rsc[symbolDispose]();
3453
+ captureTable2.delete(handleEntry.rep);
3454
+ } else if (OutputStream[symbolCabiDispose]) {
3455
+ OutputStream[symbolCabiDispose](handleEntry.rep);
3456
+ }
3180
3457
  }
3181
3458
  }
3182
3459
  function trampoline4(handle) {
3183
- const handleEntry = handleTable5.get(handle);
3184
- if (!handleEntry) {
3185
- throw new Error(`Resource error: Invalid handle ${handle}`);
3186
- }
3187
- handleTable5.delete(handle);
3188
- if (handleEntry.own && handleEntry.rep[symbolDispose]) {
3189
- handleEntry.rep[symbolDispose]();
3460
+ const handleEntry = rscTableRemove(handleTable5, handle);
3461
+ if (handleEntry.own) {
3462
+
3463
+ const rsc = captureTable5.get(handleEntry.rep);
3464
+ if (rsc) {
3465
+ if (rsc[symbolDispose]) rsc[symbolDispose]();
3466
+ captureTable5.delete(handleEntry.rep);
3467
+ } else if (Descriptor[symbolCabiDispose]) {
3468
+ Descriptor[symbolCabiDispose](handleEntry.rep);
3469
+ }
3190
3470
  }
3191
3471
  }
3192
- function trampoline5(handle) {
3193
- const handleEntry = handleTable3.get(handle);
3194
- if (!handleEntry) {
3195
- throw new Error(`Resource error: Invalid handle ${handle}`);
3196
- }
3197
- handleTable3.delete(handle);
3198
- if (handleEntry.own && handleEntry.rep[symbolDispose]) {
3199
- handleEntry.rep[symbolDispose]();
3472
+ function trampoline9(handle) {
3473
+ const handleEntry = rscTableRemove(handleTable3, handle);
3474
+ if (handleEntry.own) {
3475
+
3476
+ const rsc = captureTable3.get(handleEntry.rep);
3477
+ if (rsc) {
3478
+ if (rsc[symbolDispose]) rsc[symbolDispose]();
3479
+ captureTable3.delete(handleEntry.rep);
3480
+ } else if (TerminalInput[symbolCabiDispose]) {
3481
+ TerminalInput[symbolCabiDispose](handleEntry.rep);
3482
+ }
3200
3483
  }
3201
3484
  }
3202
- function trampoline6(handle) {
3203
- const handleEntry = handleTable4.get(handle);
3204
- if (!handleEntry) {
3205
- throw new Error(`Resource error: Invalid handle ${handle}`);
3206
- }
3207
- handleTable4.delete(handle);
3208
- if (handleEntry.own && handleEntry.rep[symbolDispose]) {
3209
- handleEntry.rep[symbolDispose]();
3485
+ function trampoline10(handle) {
3486
+ const handleEntry = rscTableRemove(handleTable4, handle);
3487
+ if (handleEntry.own) {
3488
+
3489
+ const rsc = captureTable4.get(handleEntry.rep);
3490
+ if (rsc) {
3491
+ if (rsc[symbolDispose]) rsc[symbolDispose]();
3492
+ captureTable4.delete(handleEntry.rep);
3493
+ } else if (TerminalOutput[symbolCabiDispose]) {
3494
+ TerminalOutput[symbolCabiDispose](handleEntry.rep);
3495
+ }
3210
3496
  }
3211
3497
  }
3212
3498
 
@@ -3282,7 +3568,7 @@ function print(arg0) {
3282
3568
  throw new TypeError('invalid variant discriminant for expected');
3283
3569
  }
3284
3570
  }
3285
- postReturn0(ret);
3571
+ postReturn1(ret);
3286
3572
  if (variant3.tag === 'err') {
3287
3573
  throw new ComponentError(variant3.val);
3288
3574
  }
@@ -3355,7 +3641,7 @@ function componentNew(arg0, arg1) {
3355
3641
  throw new TypeError('invalid variant discriminant for expected');
3356
3642
  }
3357
3643
  }
3358
- postReturn0(ret);
3644
+ postReturn2(ret);
3359
3645
  if (variant8.tag === 'err') {
3360
3646
  throw new ComponentError(variant8.val);
3361
3647
  }
@@ -3396,7 +3682,7 @@ function componentWit(arg0) {
3396
3682
  throw new TypeError('invalid variant discriminant for expected');
3397
3683
  }
3398
3684
  }
3399
- postReturn0(ret);
3685
+ postReturn3(ret);
3400
3686
  if (variant3.tag === 'err') {
3401
3687
  throw new ComponentError(variant3.val);
3402
3688
  }
@@ -3557,7 +3843,7 @@ function componentEmbed(arg0) {
3557
3843
  throw new TypeError('invalid variant discriminant for expected');
3558
3844
  }
3559
3845
  }
3560
- postReturn0(ret);
3846
+ postReturn4(ret);
3561
3847
  if (variant23.tag === 'err') {
3562
3848
  throw new ComponentError(variant23.val);
3563
3849
  }
@@ -3666,7 +3952,7 @@ function metadataShow(arg0) {
3666
3952
  throw new TypeError('invalid variant discriminant for expected');
3667
3953
  }
3668
3954
  }
3669
- postReturn1(ret);
3955
+ postReturn5(ret);
3670
3956
  if (variant11.tag === 'err') {
3671
3957
  throw new ComponentError(variant11.val);
3672
3958
  }
@@ -3735,33 +4021,19 @@ function metadataAdd(arg0, arg1) {
3735
4021
  throw new TypeError('invalid variant discriminant for expected');
3736
4022
  }
3737
4023
  }
3738
- postReturn0(ret);
4024
+ postReturn6(ret);
3739
4025
  if (variant10.tag === 'err') {
3740
4026
  throw new ComponentError(variant10.val);
3741
4027
  }
3742
4028
  return variant10.val;
3743
4029
  }
3744
- const handleTable0= new Map();
3745
- let handleCnt0 = 0;
3746
- const handleTable1= new Map();
3747
- let handleCnt1 = 0;
3748
- const handleTable2= new Map();
3749
- let handleCnt2 = 0;
3750
- const handleTable3= new Map();
3751
- let handleCnt3 = 0;
3752
- const handleTable4= new Map();
3753
- let handleCnt4 = 0;
3754
- const handleTable5= new Map();
3755
- let handleCnt5 = 0;
3756
- const handleTable6= new Map();
3757
- let handleCnt6 = 0;
3758
4030
 
3759
4031
  let _initialized = false;
3760
4032
  export const $init = (async() => {
3761
4033
  const module0 = fetchCompile(new URL('./wasm-tools.core.wasm', import.meta.url));
3762
4034
  const module1 = fetchCompile(new URL('./wasm-tools.core2.wasm', import.meta.url));
3763
- const module2 = base64Compile('AGFzbQEAAAABaw9gAX8AYAN/fn8AYAJ/fwBgBX9/f39/AGAHf39/f39/fwBgBH9/f38AYAJ+fwBgCX9/f39/fn5/fwF/YAV/f39+fwF/YAV/f39/fwF/YAJ/fwF/YAR/f39/AX9gAX8Bf2ADf39/AX9gAX8AAyYlAAEBAgICAgMEAgMCAgEBAgUFAgYAAAAABwgJCgoLCwoKDAoNDgQFAXABJSUHuwEmATAAAAExAAEBMgACATMAAwE0AAQBNQAFATYABgE3AAcBOAAIATkACQIxMAAKAjExAAsCMTIADAIxMwANAjE0AA4CMTUADwIxNgAQAjE3ABECMTgAEgIxOQATAjIwABQCMjEAFQIyMgAWAjIzABcCMjQAGAIyNQAZAjI2ABoCMjcAGwIyOAAcAjI5AB0CMzAAHgIzMQAfAjMyACACMzMAIQIzNAAiAjM1ACMCMzYAJAgkaW1wb3J0cwEACvkDJQkAIABBABEAAAsNACAAIAEgAkEBEQEACw0AIAAgASACQQIRAQALCwAgACABQQMRAgALCwAgACABQQQRAgALCwAgACABQQURAgALCwAgACABQQYRAgALEQAgACABIAIgAyAEQQcRAwALFQAgACABIAIgAyAEIAUgBkEIEQQACwsAIAAgAUEJEQIACxEAIAAgASACIAMgBEEKEQMACwsAIAAgAUELEQIACwsAIAAgAUEMEQIACw0AIAAgASACQQ0RAQALDQAgACABIAJBDhEBAAsLACAAIAFBDxECAAsPACAAIAEgAiADQRARBQALDwAgACABIAIgA0EREQUACwsAIAAgAUESEQIACwsAIAAgAUETEQYACwkAIABBFBEAAAsJACAAQRURAAALCQAgAEEWEQAACwkAIABBFxEAAAsZACAAIAEgAiADIAQgBSAGIAcgCEEYEQcACxEAIAAgASACIAMgBEEZEQgACxEAIAAgASACIAMgBEEaEQkACwsAIAAgAUEbEQoACwsAIAAgAUEcEQoACw8AIAAgASACIANBHRELAAsPACAAIAEgAiADQR4RCwALCwAgACABQR8RCgALCwAgACABQSARCgALCQAgAEEhEQwACwsAIAAgAUEiEQoACw0AIAAgASACQSMRDQALCQAgAEEkEQ4ACwAuCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BjAuMjEuMACAEQRuYW1lABMSd2l0LWNvbXBvbmVudDpzaGltAeMQJQA3aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3ByZW9wZW5zQDAuMi4wLWdldC1kaXJlY3RvcmllcwFHaW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzQDAuMi4wLVttZXRob2RdZGVzY3JpcHRvci5yZWFkLXZpYS1zdHJlYW0CSGluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlc0AwLjIuMC1bbWV0aG9kXWRlc2NyaXB0b3Iud3JpdGUtdmlhLXN0cmVhbQNJaW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzQDAuMi4wLVttZXRob2RdZGVzY3JpcHRvci5hcHBlbmQtdmlhLXN0cmVhbQRAaW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzQDAuMi4wLVttZXRob2RdZGVzY3JpcHRvci5nZXQtdHlwZQVGaW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzQDAuMi4wLVttZXRob2RdZGVzY3JpcHRvci5yZWFkLWRpcmVjdG9yeQY8aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzQDAuMi4wLVttZXRob2RdZGVzY3JpcHRvci5zdGF0Bz9pbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXNAMC4yLjAtW21ldGhvZF1kZXNjcmlwdG9yLnN0YXQtYXQIP2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlc0AwLjIuMC1bbWV0aG9kXWRlc2NyaXB0b3Iub3Blbi1hdAlFaW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzQDAuMi4wLVttZXRob2RdZGVzY3JpcHRvci5tZXRhZGF0YS1oYXNoCkhpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXNAMC4yLjAtW21ldGhvZF1kZXNjcmlwdG9yLm1ldGFkYXRhLWhhc2gtYXQLWGluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlc0AwLjIuMC1bbWV0aG9kXWRpcmVjdG9yeS1lbnRyeS1zdHJlYW0ucmVhZC1kaXJlY3RvcnktZW50cnkMOmluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlc0AwLjIuMC1maWxlc3lzdGVtLWVycm9yLWNvZGUNOGluZGlyZWN0LXdhc2k6aW8vc3RyZWFtc0AwLjIuMC1bbWV0aG9kXWlucHV0LXN0cmVhbS5yZWFkDkFpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXNAMC4yLjAtW21ldGhvZF1pbnB1dC1zdHJlYW0uYmxvY2tpbmctcmVhZA9AaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zQDAuMi4wLVttZXRob2Rdb3V0cHV0LXN0cmVhbS5jaGVjay13cml0ZRA6aW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zQDAuMi4wLVttZXRob2Rdb3V0cHV0LXN0cmVhbS53cml0ZRFNaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zQDAuMi4wLVttZXRob2Rdb3V0cHV0LXN0cmVhbS5ibG9ja2luZy13cml0ZS1hbmQtZmx1c2gSQ2luZGlyZWN0LXdhc2k6aW8vc3RyZWFtc0AwLjIuMC1bbWV0aG9kXW91dHB1dC1zdHJlYW0uYmxvY2tpbmctZmx1c2gTMmluZGlyZWN0LXdhc2k6cmFuZG9tL3JhbmRvbUAwLjIuMC1nZXQtcmFuZG9tLWJ5dGVzFDNpbmRpcmVjdC13YXNpOmNsaS9lbnZpcm9ubWVudEAwLjIuMC1nZXQtZW52aXJvbm1lbnQVOWluZGlyZWN0LXdhc2k6Y2xpL3Rlcm1pbmFsLXN0ZGluQDAuMi4wLWdldC10ZXJtaW5hbC1zdGRpbhY7aW5kaXJlY3Qtd2FzaTpjbGkvdGVybWluYWwtc3Rkb3V0QDAuMi4wLWdldC10ZXJtaW5hbC1zdGRvdXQXO2luZGlyZWN0LXdhc2k6Y2xpL3Rlcm1pbmFsLXN0ZGVyckAwLjIuMC1nZXQtdGVybWluYWwtc3RkZXJyGCZhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXBhdGhfb3BlbhknYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9yZWFkZGlyGi5hZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXBhdGhfZmlsZXN0YXRfZ2V0GydhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLXJhbmRvbV9nZXQcLGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfZmlsZXN0YXRfZ2V0HSRhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX3JlYWQeJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfd3JpdGUfKGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9nZXQgLmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZW52aXJvbl9zaXplc19nZXQhJWFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfY2xvc2UiK2FkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9nZXQjMGFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcHJlc3RhdF9kaXJfbmFtZSQmYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wcm9jX2V4aXQ');
3764
- const module3 = base64Compile('AGFzbQEAAAABaw9gAX8AYAN/fn8AYAJ/fwBgBX9/f39/AGAHf39/f39/fwBgBH9/f38AYAJ+fwBgCX9/f39/fn5/fwF/YAV/f39+fwF/YAV/f39/fwF/YAJ/fwF/YAR/f39/AX9gAX8Bf2ADf39/AX9gAX8AAuQBJgABMAAAAAExAAEAATIAAQABMwACAAE0AAIAATUAAgABNgACAAE3AAMAATgABAABOQACAAIxMAADAAIxMQACAAIxMgACAAIxMwABAAIxNAABAAIxNQACAAIxNgAFAAIxNwAFAAIxOAACAAIxOQAGAAIyMAAAAAIyMQAAAAIyMgAAAAIyMwAAAAIyNAAHAAIyNQAIAAIyNgAJAAIyNwAKAAIyOAAKAAIyOQALAAIzMAALAAIzMQAKAAIzMgAKAAIzMwAMAAIzNAAKAAIzNQANAAIzNgAOAAgkaW1wb3J0cwFwASUlCSsBAEEACyUAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkAC4JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQGMC4yMS4wABwEbmFtZQAVFHdpdC1jb21wb25lbnQ6Zml4dXBz');
4035
+ const module2 = base64Compile('AGFzbQEAAAABaw9gAX8AYAN/fn8AYAJ/fwBgBX9/f39/AGAHf39/f39/fwBgBH9/f38AYAJ+fwBgCX9/f39/fn5/fwF/YAV/f39+fwF/YAV/f39/fwF/YAJ/fwF/YAR/f39/AX9gAX8Bf2ADf39/AX9gAX8AAyYlAAEBAgICAgMEAgMCAgEBAgUFAgYAAAAABwgJCgoLCwoKDAoNDgQFAXABJSUHuwEmATAAAAExAAEBMgACATMAAwE0AAQBNQAFATYABgE3AAcBOAAIATkACQIxMAAKAjExAAsCMTIADAIxMwANAjE0AA4CMTUADwIxNgAQAjE3ABECMTgAEgIxOQATAjIwABQCMjEAFQIyMgAWAjIzABcCMjQAGAIyNQAZAjI2ABoCMjcAGwIyOAAcAjI5AB0CMzAAHgIzMQAfAjMyACACMzMAIQIzNAAiAjM1ACMCMzYAJAgkaW1wb3J0cwEACvkDJQkAIABBABEAAAsNACAAIAEgAkEBEQEACw0AIAAgASACQQIRAQALCwAgACABQQMRAgALCwAgACABQQQRAgALCwAgACABQQURAgALCwAgACABQQYRAgALEQAgACABIAIgAyAEQQcRAwALFQAgACABIAIgAyAEIAUgBkEIEQQACwsAIAAgAUEJEQIACxEAIAAgASACIAMgBEEKEQMACwsAIAAgAUELEQIACwsAIAAgAUEMEQIACw0AIAAgASACQQ0RAQALDQAgACABIAJBDhEBAAsLACAAIAFBDxECAAsPACAAIAEgAiADQRARBQALDwAgACABIAIgA0EREQUACwsAIAAgAUESEQIACwsAIAAgAUETEQYACwkAIABBFBEAAAsJACAAQRURAAALCQAgAEEWEQAACwkAIABBFxEAAAsZACAAIAEgAiADIAQgBSAGIAcgCEEYEQcACxEAIAAgASACIAMgBEEZEQgACxEAIAAgASACIAMgBEEaEQkACwsAIAAgAUEbEQoACwsAIAAgAUEcEQoACw8AIAAgASACIANBHRELAAsPACAAIAEgAiADQR4RCwALCwAgACABQR8RCgALCwAgACABQSARCgALCQAgAEEhEQwACwsAIAAgAUEiEQoACw0AIAAgASACQSMRDQALCQAgAEEkEQ4ACwAvCXByb2R1Y2VycwEMcHJvY2Vzc2VkLWJ5AQ13aXQtY29tcG9uZW50BzAuMjAxLjAAgBEEbmFtZQATEndpdC1jb21wb25lbnQ6c2hpbQHjECUAN2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS9wcmVvcGVuc0AwLjIuMC1nZXQtZGlyZWN0b3JpZXMBR2luZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlc0AwLjIuMC1bbWV0aG9kXWRlc2NyaXB0b3IucmVhZC12aWEtc3RyZWFtAkhpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXNAMC4yLjAtW21ldGhvZF1kZXNjcmlwdG9yLndyaXRlLXZpYS1zdHJlYW0DSWluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlc0AwLjIuMC1bbWV0aG9kXWRlc2NyaXB0b3IuYXBwZW5kLXZpYS1zdHJlYW0EQGluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlc0AwLjIuMC1bbWV0aG9kXWRlc2NyaXB0b3IuZ2V0LXR5cGUFRmluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlc0AwLjIuMC1bbWV0aG9kXWRlc2NyaXB0b3IucmVhZC1kaXJlY3RvcnkGPGluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlc0AwLjIuMC1bbWV0aG9kXWRlc2NyaXB0b3Iuc3RhdAc/aW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzQDAuMi4wLVttZXRob2RdZGVzY3JpcHRvci5zdGF0LWF0CD9pbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXNAMC4yLjAtW21ldGhvZF1kZXNjcmlwdG9yLm9wZW4tYXQJRWluZGlyZWN0LXdhc2k6ZmlsZXN5c3RlbS90eXBlc0AwLjIuMC1bbWV0aG9kXWRlc2NyaXB0b3IubWV0YWRhdGEtaGFzaApIaW5kaXJlY3Qtd2FzaTpmaWxlc3lzdGVtL3R5cGVzQDAuMi4wLVttZXRob2RdZGVzY3JpcHRvci5tZXRhZGF0YS1oYXNoLWF0C1hpbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXNAMC4yLjAtW21ldGhvZF1kaXJlY3RvcnktZW50cnktc3RyZWFtLnJlYWQtZGlyZWN0b3J5LWVudHJ5DDppbmRpcmVjdC13YXNpOmZpbGVzeXN0ZW0vdHlwZXNAMC4yLjAtZmlsZXN5c3RlbS1lcnJvci1jb2RlDThpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXNAMC4yLjAtW21ldGhvZF1pbnB1dC1zdHJlYW0ucmVhZA5BaW5kaXJlY3Qtd2FzaTppby9zdHJlYW1zQDAuMi4wLVttZXRob2RdaW5wdXQtc3RyZWFtLmJsb2NraW5nLXJlYWQPQGluZGlyZWN0LXdhc2k6aW8vc3RyZWFtc0AwLjIuMC1bbWV0aG9kXW91dHB1dC1zdHJlYW0uY2hlY2std3JpdGUQOmluZGlyZWN0LXdhc2k6aW8vc3RyZWFtc0AwLjIuMC1bbWV0aG9kXW91dHB1dC1zdHJlYW0ud3JpdGURTWluZGlyZWN0LXdhc2k6aW8vc3RyZWFtc0AwLjIuMC1bbWV0aG9kXW91dHB1dC1zdHJlYW0uYmxvY2tpbmctd3JpdGUtYW5kLWZsdXNoEkNpbmRpcmVjdC13YXNpOmlvL3N0cmVhbXNAMC4yLjAtW21ldGhvZF1vdXRwdXQtc3RyZWFtLmJsb2NraW5nLWZsdXNoEzJpbmRpcmVjdC13YXNpOnJhbmRvbS9yYW5kb21AMC4yLjAtZ2V0LXJhbmRvbS1ieXRlcxQzaW5kaXJlY3Qtd2FzaTpjbGkvZW52aXJvbm1lbnRAMC4yLjAtZ2V0LWVudmlyb25tZW50FTlpbmRpcmVjdC13YXNpOmNsaS90ZXJtaW5hbC1zdGRpbkAwLjIuMC1nZXQtdGVybWluYWwtc3RkaW4WO2luZGlyZWN0LXdhc2k6Y2xpL3Rlcm1pbmFsLXN0ZG91dEAwLjIuMC1nZXQtdGVybWluYWwtc3Rkb3V0FztpbmRpcmVjdC13YXNpOmNsaS90ZXJtaW5hbC1zdGRlcnJAMC4yLjAtZ2V0LXRlcm1pbmFsLXN0ZGVychgmYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wYXRoX29wZW4ZJ2FkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtZmRfcmVhZGRpchouYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1wYXRoX2ZpbGVzdGF0X2dldBsnYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1yYW5kb21fZ2V0HCxhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX2ZpbGVzdGF0X2dldB0kYWRhcHQtd2FzaV9zbmFwc2hvdF9wcmV2aWV3MS1mZF9yZWFkHiVhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX3dyaXRlHyhhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWVudmlyb25fZ2V0IC5hZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWVudmlyb25fc2l6ZXNfZ2V0ISVhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX2Nsb3NlIithZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX3ByZXN0YXRfZ2V0IzBhZGFwdC13YXNpX3NuYXBzaG90X3ByZXZpZXcxLWZkX3ByZXN0YXRfZGlyX25hbWUkJmFkYXB0LXdhc2lfc25hcHNob3RfcHJldmlldzEtcHJvY19leGl0');
4036
+ const module3 = base64Compile('AGFzbQEAAAABaw9gAX8AYAN/fn8AYAJ/fwBgBX9/f39/AGAHf39/f39/fwBgBH9/f38AYAJ+fwBgCX9/f39/fn5/fwF/YAV/f39+fwF/YAV/f39/fwF/YAJ/fwF/YAR/f39/AX9gAX8Bf2ADf39/AX9gAX8AAuQBJgABMAAAAAExAAEAATIAAQABMwACAAE0AAIAATUAAgABNgACAAE3AAMAATgABAABOQACAAIxMAADAAIxMQACAAIxMgACAAIxMwABAAIxNAABAAIxNQACAAIxNgAFAAIxNwAFAAIxOAACAAIxOQAGAAIyMAAAAAIyMQAAAAIyMgAAAAIyMwAAAAIyNAAHAAIyNQAIAAIyNgAJAAIyNwAKAAIyOAAKAAIyOQALAAIzMAALAAIzMQAKAAIzMgAKAAIzMwAMAAIzNAAKAAIzNQANAAIzNgAOAAgkaW1wb3J0cwFwASUlCSsBAEEACyUAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHyAhIiMkAC8JcHJvZHVjZXJzAQxwcm9jZXNzZWQtYnkBDXdpdC1jb21wb25lbnQHMC4yMDEuMAAcBG5hbWUAFRR3aXQtY29tcG9uZW50OmZpeHVwcw');
3765
4037
  ({ exports: exports0 } = await instantiateCore(await module2));
3766
4038
  ({ exports: exports1 } = await instantiateCore(await module0, {
3767
4039
  wasi_snapshot_preview1: {
@@ -3791,22 +4063,22 @@ export const $init = (async() => {
3791
4063
  'get-environment': exports0['20'],
3792
4064
  },
3793
4065
  'wasi:cli/exit@0.2.0': {
3794
- exit: trampoline8,
4066
+ exit: trampoline6,
3795
4067
  },
3796
4068
  'wasi:cli/stderr@0.2.0': {
3797
- 'get-stderr': trampoline7,
4069
+ 'get-stderr': trampoline5,
3798
4070
  },
3799
4071
  'wasi:cli/stdin@0.2.0': {
3800
- 'get-stdin': trampoline9,
4072
+ 'get-stdin': trampoline7,
3801
4073
  },
3802
4074
  'wasi:cli/stdout@0.2.0': {
3803
- 'get-stdout': trampoline10,
4075
+ 'get-stdout': trampoline8,
3804
4076
  },
3805
4077
  'wasi:cli/terminal-input@0.2.0': {
3806
- '[resource-drop]terminal-input': trampoline5,
4078
+ '[resource-drop]terminal-input': trampoline9,
3807
4079
  },
3808
4080
  'wasi:cli/terminal-output@0.2.0': {
3809
- '[resource-drop]terminal-output': trampoline6,
4081
+ '[resource-drop]terminal-output': trampoline10,
3810
4082
  },
3811
4083
  'wasi:cli/terminal-stderr@0.2.0': {
3812
4084
  'get-terminal-stderr': exports0['23'],
@@ -3898,8 +4170,13 @@ export const $init = (async() => {
3898
4170
  },
3899
4171
  }));
3900
4172
  realloc1 = exports1.cabi_realloc;
3901
- postReturn0 = exports1['cabi_post_local:wasm-tools/tools#component-embed'];
3902
- postReturn1 = exports1['cabi_post_local:wasm-tools/tools#metadata-show'];
4173
+ postReturn0 = exports1['cabi_post_local:wasm-tools/tools#parse'];
4174
+ postReturn1 = exports1['cabi_post_local:wasm-tools/tools#print'];
4175
+ postReturn2 = exports1['cabi_post_local:wasm-tools/tools#component-new'];
4176
+ postReturn3 = exports1['cabi_post_local:wasm-tools/tools#component-wit'];
4177
+ postReturn4 = exports1['cabi_post_local:wasm-tools/tools#component-embed'];
4178
+ postReturn5 = exports1['cabi_post_local:wasm-tools/tools#metadata-show'];
4179
+ postReturn6 = exports1['cabi_post_local:wasm-tools/tools#metadata-add'];
3903
4180
  _initialized = true;
3904
4181
  })();
3905
4182
  const tools = {