wasm-game-ts 0.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.
Files changed (52) hide show
  1. package/README.md +57 -0
  2. package/dist/hash.d.ts +3 -0
  3. package/dist/hash.d.ts.map +1 -0
  4. package/dist/hash.js +15 -0
  5. package/dist/hash.js.map +1 -0
  6. package/dist/index.d.ts +7 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +7 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/inputs.d.ts +61 -0
  11. package/dist/inputs.d.ts.map +1 -0
  12. package/dist/inputs.js +143 -0
  13. package/dist/inputs.js.map +1 -0
  14. package/dist/keycodes.d.ts +3 -0
  15. package/dist/keycodes.d.ts.map +1 -0
  16. package/dist/keycodes.js +73 -0
  17. package/dist/keycodes.js.map +1 -0
  18. package/dist/package.d.ts +45 -0
  19. package/dist/package.d.ts.map +1 -0
  20. package/dist/package.js +765 -0
  21. package/dist/package.js.map +1 -0
  22. package/dist/types.d.ts +104 -0
  23. package/dist/types.d.ts.map +1 -0
  24. package/dist/types.js +13 -0
  25. package/dist/types.js.map +1 -0
  26. package/dist/wasm-game.d.ts +22 -0
  27. package/dist/wasm-game.d.ts.map +1 -0
  28. package/dist/wasm-game.js +164 -0
  29. package/dist/wasm-game.js.map +1 -0
  30. package/dist/worker/assets/OFL.txt +88 -0
  31. package/dist/worker/assets/PressStart2P-Regular.ttf +0 -0
  32. package/dist/worker/fonts.d.ts +2 -0
  33. package/dist/worker/fonts.d.ts.map +1 -0
  34. package/dist/worker/fonts.js +159 -0
  35. package/dist/worker/fonts.js.map +1 -0
  36. package/dist/worker/renderer.d.ts +34 -0
  37. package/dist/worker/renderer.d.ts.map +1 -0
  38. package/dist/worker/renderer.js +504 -0
  39. package/dist/worker/renderer.js.map +1 -0
  40. package/dist/worker/snapshotter.d.ts +17 -0
  41. package/dist/worker/snapshotter.d.ts.map +1 -0
  42. package/dist/worker/snapshotter.js +190 -0
  43. package/dist/worker/snapshotter.js.map +1 -0
  44. package/dist/worker/wasm-host.d.ts +18 -0
  45. package/dist/worker/wasm-host.d.ts.map +1 -0
  46. package/dist/worker/wasm-host.js +42 -0
  47. package/dist/worker/wasm-host.js.map +1 -0
  48. package/dist/worker/worker.d.ts +2 -0
  49. package/dist/worker/worker.d.ts.map +1 -0
  50. package/dist/worker/worker.js +311 -0
  51. package/dist/worker/worker.js.map +1 -0
  52. package/package.json +33 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fonts.js","sourceRoot":"","sources":["../../src/worker/fonts.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ export declare enum DrawCmd {
2
+ DrawLine = 1,
3
+ DrawRectangle = 2,
4
+ SetCamera = 3,
5
+ DrawText = 4,
6
+ DrawRectangleLines = 5,
7
+ DrawArc = 6,
8
+ DrawCircle = 7,
9
+ DrawCircleLines = 8,
10
+ DrawEllipse = 9,
11
+ DrawEllipseLines = 10,
12
+ DrawPoly = 11,
13
+ DrawPolyLines = 12,
14
+ DrawHexagon = 13,
15
+ DrawTriangle = 14,
16
+ DrawTriangleLines = 15
17
+ }
18
+ export interface RendererOptions {
19
+ width: number;
20
+ height: number;
21
+ autoClear: boolean;
22
+ }
23
+ export declare class Renderer2D {
24
+ private readonly canvas;
25
+ private readonly ctx;
26
+ private w;
27
+ private h;
28
+ private readonly autoClear;
29
+ private readonly textDecoder;
30
+ constructor(canvas: OffscreenCanvas, opts: RendererOptions);
31
+ resize(width: number, height: number): void;
32
+ render(renderBytes: Uint8Array): void;
33
+ }
34
+ //# sourceMappingURL=renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/worker/renderer.ts"],"names":[],"mappings":"AAcA,oBAAY,OAAO;IACjB,QAAQ,IAAI;IACZ,aAAa,IAAI;IACjB,SAAS,IAAI;IACb,QAAQ,IAAI;IAEZ,kBAAkB,IAAI;IACtB,OAAO,IAAI;IACX,UAAU,IAAI;IACd,eAAe,IAAI;IACnB,WAAW,IAAI;IACf,gBAAgB,KAAK;IACrB,QAAQ,KAAK;IACb,aAAa,KAAK;IAClB,WAAW,KAAK;IAChB,YAAY,KAAK;IACjB,iBAAiB,KAAK;CACvB;AAkVD,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,UAAU;IACrB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAkB;IACzC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoC;IACxD,OAAO,CAAC,CAAC,CAAS;IAClB,OAAO,CAAC,CAAC,CAAS;IAClB,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAU;IAEpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;gBAE5C,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,eAAe;IAsB1D,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;IAa3C,MAAM,CAAC,WAAW,EAAE,UAAU,GAAG,IAAI;CAwPtC"}
@@ -0,0 +1,504 @@
1
+ // Render command buffer decoder + Canvas2D renderer (OffscreenCanvas).
2
+ //
3
+ // This renderer is intentionally aligned to the OLD SimpleRenderer behavior:
4
+ // - Start each frame with identity transform (no implicit default camera)
5
+ // - If autoClear: fill opaque black background (not clearRect)
6
+ // - Camera only changes when SetCamera command appears
7
+ // - Text uses the same font stack and rgba conversion as before
8
+ // - RectangleLines uses a filled-rect border (closer to old canvasPrimitives)
9
+ // - Arc uses `sides` to approximate (old renderer forwarded sides to geom)
10
+ //
11
+ // IMPORTANT: Command IDs + binary layouts are defined here; Rust must match.
12
+ const DEG2RAD = Math.PI / 180.0;
13
+ export var DrawCmd;
14
+ (function (DrawCmd) {
15
+ DrawCmd[DrawCmd["DrawLine"] = 1] = "DrawLine";
16
+ DrawCmd[DrawCmd["DrawRectangle"] = 2] = "DrawRectangle";
17
+ DrawCmd[DrawCmd["SetCamera"] = 3] = "SetCamera";
18
+ DrawCmd[DrawCmd["DrawText"] = 4] = "DrawText";
19
+ DrawCmd[DrawCmd["DrawRectangleLines"] = 5] = "DrawRectangleLines";
20
+ DrawCmd[DrawCmd["DrawArc"] = 6] = "DrawArc";
21
+ DrawCmd[DrawCmd["DrawCircle"] = 7] = "DrawCircle";
22
+ DrawCmd[DrawCmd["DrawCircleLines"] = 8] = "DrawCircleLines";
23
+ DrawCmd[DrawCmd["DrawEllipse"] = 9] = "DrawEllipse";
24
+ DrawCmd[DrawCmd["DrawEllipseLines"] = 10] = "DrawEllipseLines";
25
+ DrawCmd[DrawCmd["DrawPoly"] = 11] = "DrawPoly";
26
+ DrawCmd[DrawCmd["DrawPolyLines"] = 12] = "DrawPolyLines";
27
+ DrawCmd[DrawCmd["DrawHexagon"] = 13] = "DrawHexagon";
28
+ DrawCmd[DrawCmd["DrawTriangle"] = 14] = "DrawTriangle";
29
+ DrawCmd[DrawCmd["DrawTriangleLines"] = 15] = "DrawTriangleLines";
30
+ })(DrawCmd || (DrawCmd = {}));
31
+ class BinReader {
32
+ constructor(bytes) {
33
+ this.bytes = bytes;
34
+ this.off = 0;
35
+ this.view = new DataView(bytes.buffer, bytes.byteOffset, bytes.byteLength);
36
+ }
37
+ get remaining() {
38
+ return this.bytes.byteLength - this.off;
39
+ }
40
+ u8() {
41
+ const v = this.view.getUint8(this.off);
42
+ this.off += 1;
43
+ return v;
44
+ }
45
+ i32() {
46
+ const v = this.view.getInt32(this.off, true);
47
+ this.off += 4;
48
+ return v;
49
+ }
50
+ u32() {
51
+ const v = this.view.getUint32(this.off, true);
52
+ this.off += 4;
53
+ return v;
54
+ }
55
+ f32() {
56
+ const v = this.view.getFloat32(this.off, true);
57
+ this.off += 4;
58
+ return v;
59
+ }
60
+ bytesSlice(len) {
61
+ const start = this.off;
62
+ const end = start + len;
63
+ this.off = end;
64
+ return new Uint8Array(this.view.buffer, this.view.byteOffset + start, len);
65
+ }
66
+ }
67
+ /* -------------------------------------------------------------------------- */
68
+ /* Old-style helpers */
69
+ /* -------------------------------------------------------------------------- */
70
+ // Old renderer conversion (truncate via |0, do not round).
71
+ function rgbaCss(r, g, b, a) {
72
+ return `rgba(${(r * 255) | 0}, ${(g * 255) | 0}, ${(b * 255) | 0}, ${a})`;
73
+ }
74
+ function resetTransform(ctx) {
75
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
76
+ }
77
+ function applyCamera(ctx, canvasW, canvasH, x, y, zoom, rot) {
78
+ // Old renderer:
79
+ // ctx.resetTransform();
80
+ // ctx.translate(w/2, h/2);
81
+ // ctx.rotate(rot);
82
+ // ctx.scale(zoom, zoom);
83
+ // ctx.translate(-x, -y);
84
+ resetTransform(ctx);
85
+ ctx.translate(canvasW * 0.5, canvasH * 0.5);
86
+ ctx.rotate(rot);
87
+ ctx.scale(zoom, zoom);
88
+ ctx.translate(-x, -y);
89
+ }
90
+ // This matches the old canvasPrimitives-style rectangle outline more closely than strokeRect.
91
+ // It draws the border entirely "inside" the rect bounds (top/bot/left/right strips).
92
+ function drawRectangleLines(ctx, x, y, w, h, thick, color) {
93
+ if (!Number.isFinite(thick) || thick <= 0)
94
+ return;
95
+ ctx.fillStyle = color;
96
+ const t = thick;
97
+ // Top
98
+ ctx.fillRect(x, y, w, t);
99
+ // Bottom
100
+ ctx.fillRect(x, y + h - t, w, t);
101
+ // Left
102
+ ctx.fillRect(x, y, t, h);
103
+ // Right
104
+ ctx.fillRect(x + w - t, y, t, h);
105
+ }
106
+ function drawCircle(ctx, x, y, radius, color) {
107
+ ctx.beginPath();
108
+ ctx.arc(x, y, radius, 0, Math.PI * 2);
109
+ ctx.fillStyle = color;
110
+ ctx.fill();
111
+ }
112
+ function drawCircleLines(ctx, x, y, radius, thick, color) {
113
+ if (!Number.isFinite(thick) || thick <= 0)
114
+ return;
115
+ ctx.beginPath();
116
+ ctx.arc(x, y, radius, 0, Math.PI * 2);
117
+ ctx.lineWidth = thick;
118
+ ctx.strokeStyle = color;
119
+ ctx.stroke();
120
+ }
121
+ // Approximate the arc by a polyline with `sides` segments (old renderer forwarded `sides`).
122
+ function drawArc(ctx, x, y, radius, rotationDeg, arcDeg, sides, thick, color) {
123
+ if (!Number.isFinite(thick) || thick <= 0)
124
+ return;
125
+ const segs = (sides | 0) > 0 ? (sides | 0) : 1;
126
+ const a0 = rotationDeg * DEG2RAD;
127
+ const a1 = (rotationDeg + arcDeg) * DEG2RAD;
128
+ const step = (a1 - a0) / segs;
129
+ ctx.beginPath();
130
+ for (let i = 0; i <= segs; i++) {
131
+ const a = a0 + step * i;
132
+ const px = x + radius * Math.cos(a);
133
+ const py = y + radius * Math.sin(a);
134
+ if (i === 0)
135
+ ctx.moveTo(px, py);
136
+ else
137
+ ctx.lineTo(px, py);
138
+ }
139
+ ctx.lineWidth = thick;
140
+ ctx.strokeStyle = color;
141
+ ctx.stroke();
142
+ }
143
+ function drawEllipse(ctx, x, y, rx, ry, rotationDeg, color) {
144
+ ctx.beginPath();
145
+ ctx.ellipse(x, y, rx, ry, rotationDeg * DEG2RAD, 0, Math.PI * 2);
146
+ ctx.fillStyle = color;
147
+ ctx.fill();
148
+ }
149
+ function drawEllipseLines(ctx, x, y, rx, ry, rotationDeg, thick, color) {
150
+ if (!Number.isFinite(thick) || thick <= 0)
151
+ return;
152
+ ctx.beginPath();
153
+ ctx.ellipse(x, y, rx, ry, rotationDeg * DEG2RAD, 0, Math.PI * 2);
154
+ ctx.lineWidth = thick;
155
+ ctx.strokeStyle = color;
156
+ ctx.stroke();
157
+ }
158
+ function drawPoly(ctx, x, y, sides, radius, rotationDeg, color) {
159
+ const n = sides | 0;
160
+ if (n < 3)
161
+ return;
162
+ const rot = rotationDeg * DEG2RAD;
163
+ ctx.beginPath();
164
+ for (let i = 0; i < n; i++) {
165
+ const a = rot + (i * 2 * Math.PI) / n;
166
+ const px = x + radius * Math.cos(a);
167
+ const py = y + radius * Math.sin(a);
168
+ if (i === 0)
169
+ ctx.moveTo(px, py);
170
+ else
171
+ ctx.lineTo(px, py);
172
+ }
173
+ ctx.closePath();
174
+ ctx.fillStyle = color;
175
+ ctx.fill();
176
+ }
177
+ function drawPolyLines(ctx, x, y, sides, radius, rotationDeg, thick, color) {
178
+ const n = sides | 0;
179
+ if (n < 3)
180
+ return;
181
+ if (!Number.isFinite(thick) || thick <= 0)
182
+ return;
183
+ const rot = rotationDeg * DEG2RAD;
184
+ ctx.beginPath();
185
+ for (let i = 0; i < n; i++) {
186
+ const a = rot + (i * 2 * Math.PI) / n;
187
+ const px = x + radius * Math.cos(a);
188
+ const py = y + radius * Math.sin(a);
189
+ if (i === 0)
190
+ ctx.moveTo(px, py);
191
+ else
192
+ ctx.lineTo(px, py);
193
+ }
194
+ ctx.closePath();
195
+ ctx.lineWidth = thick;
196
+ ctx.strokeStyle = color;
197
+ ctx.stroke();
198
+ }
199
+ function drawHexagon(ctx, x, y, radius, vertical, border, borderColor, fillColor) {
200
+ const baseDeg = vertical ? -90 : -60;
201
+ const base = baseDeg * DEG2RAD;
202
+ ctx.beginPath();
203
+ for (let i = 0; i < 6; i++) {
204
+ const a = base + (i * 2 * Math.PI) / 6;
205
+ const px = x + radius * Math.cos(a);
206
+ const py = y + radius * Math.sin(a);
207
+ if (i === 0)
208
+ ctx.moveTo(px, py);
209
+ else
210
+ ctx.lineTo(px, py);
211
+ }
212
+ ctx.closePath();
213
+ ctx.fillStyle = fillColor;
214
+ ctx.fill();
215
+ if (Number.isFinite(border) && border > 0) {
216
+ ctx.lineWidth = border;
217
+ ctx.strokeStyle = borderColor;
218
+ ctx.stroke();
219
+ }
220
+ }
221
+ function drawTriangle(ctx, x1, y1, x2, y2, x3, y3, color) {
222
+ ctx.beginPath();
223
+ ctx.moveTo(x1, y1);
224
+ ctx.lineTo(x2, y2);
225
+ ctx.lineTo(x3, y3);
226
+ ctx.closePath();
227
+ ctx.fillStyle = color;
228
+ ctx.fill();
229
+ }
230
+ function drawTriangleLines(ctx, x1, y1, x2, y2, x3, y3, thick, color) {
231
+ if (!Number.isFinite(thick) || thick <= 0)
232
+ return;
233
+ ctx.beginPath();
234
+ ctx.moveTo(x1, y1);
235
+ ctx.lineTo(x2, y2);
236
+ ctx.lineTo(x3, y3);
237
+ ctx.closePath();
238
+ ctx.lineWidth = thick;
239
+ ctx.strokeStyle = color;
240
+ ctx.stroke();
241
+ }
242
+ export class Renderer2D {
243
+ constructor(canvas, opts) {
244
+ this.textDecoder = new TextDecoder('utf-8');
245
+ this.canvas = canvas;
246
+ this.w = opts.width;
247
+ this.h = opts.height;
248
+ this.autoClear = opts.autoClear;
249
+ this.canvas.width = this.w;
250
+ this.canvas.height = this.h;
251
+ const ctx = this.canvas.getContext('2d', { alpha: false });
252
+ if (!ctx)
253
+ throw new Error('Could not get 2D context from OffscreenCanvas');
254
+ this.ctx = ctx;
255
+ // Old renderer did not explicitly set these every frame; we keep defaults stable here.
256
+ this.ctx.imageSmoothingEnabled = false;
257
+ this.ctx.textAlign = 'left';
258
+ this.ctx.textBaseline = 'top';
259
+ // Old behavior: no implicit camera at start; start as identity.
260
+ resetTransform(this.ctx);
261
+ }
262
+ resize(width, height) {
263
+ this.w = width;
264
+ this.h = height;
265
+ this.canvas.width = width;
266
+ this.canvas.height = height;
267
+ // Resizing resets context state; re-apply stable settings.
268
+ this.ctx.imageSmoothingEnabled = false;
269
+ this.ctx.textAlign = 'left';
270
+ this.ctx.textBaseline = 'top';
271
+ resetTransform(this.ctx);
272
+ }
273
+ render(renderBytes) {
274
+ const ctx = this.ctx;
275
+ // OLD: ctx.resetTransform(); if (clear) fill black bg
276
+ resetTransform(ctx);
277
+ if (this.autoClear) {
278
+ ctx.fillStyle = 'black';
279
+ ctx.fillRect(0, 0, this.w, this.h);
280
+ }
281
+ const r = new BinReader(renderBytes);
282
+ while (r.remaining > 0) {
283
+ const cmd = r.u8();
284
+ switch (cmd) {
285
+ case DrawCmd.SetCamera: {
286
+ const x = r.f32();
287
+ const y = r.f32();
288
+ const zoom = r.f32();
289
+ const rot = r.f32(); // radians
290
+ applyCamera(ctx, this.w, this.h, x, y, zoom, rot);
291
+ break;
292
+ }
293
+ case DrawCmd.DrawLine: {
294
+ const x1 = r.f32();
295
+ const y1 = r.f32();
296
+ const x2 = r.f32();
297
+ const y2 = r.f32();
298
+ const thick = r.f32();
299
+ const rr = r.f32();
300
+ const gg = r.f32();
301
+ const bb = r.f32();
302
+ const aa = r.f32();
303
+ ctx.lineWidth = thick;
304
+ ctx.strokeStyle = rgbaCss(rr, gg, bb, aa);
305
+ ctx.beginPath();
306
+ ctx.moveTo(x1, y1);
307
+ ctx.lineTo(x2, y2);
308
+ ctx.stroke();
309
+ break;
310
+ }
311
+ case DrawCmd.DrawRectangle: {
312
+ const x = r.f32();
313
+ const y = r.f32();
314
+ const w = r.f32();
315
+ const h = r.f32();
316
+ const rr = r.f32();
317
+ const gg = r.f32();
318
+ const bb = r.f32();
319
+ const aa = r.f32();
320
+ ctx.fillStyle = rgbaCss(rr, gg, bb, aa);
321
+ ctx.fillRect(x, y, w, h);
322
+ break;
323
+ }
324
+ case DrawCmd.DrawRectangleLines: {
325
+ const x = r.f32();
326
+ const y = r.f32();
327
+ const w = r.f32();
328
+ const h = r.f32();
329
+ const thick = r.f32();
330
+ const rr = r.f32();
331
+ const gg = r.f32();
332
+ const bb = r.f32();
333
+ const aa = r.f32();
334
+ drawRectangleLines(ctx, x, y, w, h, thick, rgbaCss(rr, gg, bb, aa));
335
+ break;
336
+ }
337
+ case DrawCmd.DrawCircle: {
338
+ const x = r.f32();
339
+ const y = r.f32();
340
+ const radius = r.f32();
341
+ const rr = r.f32();
342
+ const gg = r.f32();
343
+ const bb = r.f32();
344
+ const aa = r.f32();
345
+ drawCircle(ctx, x, y, radius, rgbaCss(rr, gg, bb, aa));
346
+ break;
347
+ }
348
+ case DrawCmd.DrawCircleLines: {
349
+ const x = r.f32();
350
+ const y = r.f32();
351
+ const radius = r.f32();
352
+ const thick = r.f32();
353
+ const rr = r.f32();
354
+ const gg = r.f32();
355
+ const bb = r.f32();
356
+ const aa = r.f32();
357
+ drawCircleLines(ctx, x, y, radius, thick, rgbaCss(rr, gg, bb, aa));
358
+ break;
359
+ }
360
+ case DrawCmd.DrawArc: {
361
+ const x = r.f32();
362
+ const y = r.f32();
363
+ const radius = r.f32();
364
+ const rotationDeg = r.f32();
365
+ const arcDeg = r.f32();
366
+ const sides = r.i32();
367
+ const thick = r.f32();
368
+ const rr = r.f32();
369
+ const gg = r.f32();
370
+ const bb = r.f32();
371
+ const aa = r.f32();
372
+ drawArc(ctx, x, y, radius, rotationDeg, arcDeg, sides, thick, rgbaCss(rr, gg, bb, aa));
373
+ break;
374
+ }
375
+ case DrawCmd.DrawEllipse: {
376
+ const x = r.f32();
377
+ const y = r.f32();
378
+ const rx = r.f32();
379
+ const ry = r.f32();
380
+ const rotationDeg = r.f32();
381
+ const rr = r.f32();
382
+ const gg = r.f32();
383
+ const bb = r.f32();
384
+ const aa = r.f32();
385
+ drawEllipse(ctx, x, y, rx, ry, rotationDeg, rgbaCss(rr, gg, bb, aa));
386
+ break;
387
+ }
388
+ case DrawCmd.DrawEllipseLines: {
389
+ const x = r.f32();
390
+ const y = r.f32();
391
+ const rx = r.f32();
392
+ const ry = r.f32();
393
+ const rotationDeg = r.f32();
394
+ const thick = r.f32();
395
+ const rr = r.f32();
396
+ const gg = r.f32();
397
+ const bb = r.f32();
398
+ const aa = r.f32();
399
+ drawEllipseLines(ctx, x, y, rx, ry, rotationDeg, thick, rgbaCss(rr, gg, bb, aa));
400
+ break;
401
+ }
402
+ case DrawCmd.DrawPoly: {
403
+ const x = r.f32();
404
+ const y = r.f32();
405
+ const sides = r.i32();
406
+ const radius = r.f32();
407
+ const rotationDeg = r.f32();
408
+ const rr = r.f32();
409
+ const gg = r.f32();
410
+ const bb = r.f32();
411
+ const aa = r.f32();
412
+ drawPoly(ctx, x, y, sides, radius, rotationDeg, rgbaCss(rr, gg, bb, aa));
413
+ break;
414
+ }
415
+ case DrawCmd.DrawPolyLines: {
416
+ const x = r.f32();
417
+ const y = r.f32();
418
+ const sides = r.i32();
419
+ const radius = r.f32();
420
+ const rotationDeg = r.f32();
421
+ const thick = r.f32();
422
+ const rr = r.f32();
423
+ const gg = r.f32();
424
+ const bb = r.f32();
425
+ const aa = r.f32();
426
+ drawPolyLines(ctx, x, y, sides, radius, rotationDeg, thick, rgbaCss(rr, gg, bb, aa));
427
+ break;
428
+ }
429
+ case DrawCmd.DrawHexagon: {
430
+ const x = r.f32();
431
+ const y = r.f32();
432
+ const radius = r.f32();
433
+ const vertical = r.i32(); // 1 = pointy-top
434
+ const border = r.f32();
435
+ const fr = r.f32();
436
+ const fg = r.f32();
437
+ const fb = r.f32();
438
+ const fa = r.f32();
439
+ const br = r.f32();
440
+ const bg = r.f32();
441
+ const bb = r.f32();
442
+ const ba = r.f32();
443
+ const fill = rgbaCss(fr, fg, fb, fa);
444
+ const borderCol = rgbaCss(br, bg, bb, ba);
445
+ drawHexagon(ctx, x, y, radius, vertical === 1, border, borderCol, fill);
446
+ break;
447
+ }
448
+ case DrawCmd.DrawTriangle: {
449
+ const x1 = r.f32();
450
+ const y1 = r.f32();
451
+ const x2 = r.f32();
452
+ const y2 = r.f32();
453
+ const x3 = r.f32();
454
+ const y3 = r.f32();
455
+ const rr = r.f32();
456
+ const gg = r.f32();
457
+ const bb = r.f32();
458
+ const aa = r.f32();
459
+ drawTriangle(ctx, x1, y1, x2, y2, x3, y3, rgbaCss(rr, gg, bb, aa));
460
+ break;
461
+ }
462
+ case DrawCmd.DrawTriangleLines: {
463
+ const x1 = r.f32();
464
+ const y1 = r.f32();
465
+ const x2 = r.f32();
466
+ const y2 = r.f32();
467
+ const x3 = r.f32();
468
+ const y3 = r.f32();
469
+ const thick = r.f32();
470
+ const rr = r.f32();
471
+ const gg = r.f32();
472
+ const bb = r.f32();
473
+ const aa = r.f32();
474
+ drawTriangleLines(ctx, x1, y1, x2, y2, x3, y3, thick, rgbaCss(rr, gg, bb, aa));
475
+ break;
476
+ }
477
+ case DrawCmd.DrawText: {
478
+ const x = r.f32();
479
+ const y = r.f32();
480
+ const size = r.f32();
481
+ const rr = r.f32();
482
+ const gg = r.f32();
483
+ const bb = r.f32();
484
+ const aa = r.f32();
485
+ const len = r.u32();
486
+ const bytes = r.bytesSlice(len);
487
+ const text = this.textDecoder.decode(bytes);
488
+ ctx.fillStyle = rgbaCss(rr, gg, bb, aa);
489
+ ctx.font = `${size}px "Press Start 2P", "VT323", "Courier New", monospace`;
490
+ ctx.textBaseline = 'top';
491
+ ctx.fillText(text, x, y);
492
+ break;
493
+ }
494
+ default: {
495
+ // Unknown command: stop parsing (prevents infinite loops).
496
+ // eslint-disable-next-line no-console
497
+ console.warn('Unknown draw command id:', cmd, 'at byte offset', r.off - 1);
498
+ return;
499
+ }
500
+ }
501
+ }
502
+ }
503
+ }
504
+ //# sourceMappingURL=renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"renderer.js","sourceRoot":"","sources":["../../src/worker/renderer.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,iEAAiE;AACjE,yDAAyD;AACzD,kEAAkE;AAClE,gFAAgF;AAChF,6EAA6E;AAC7E,EAAE;AACF,6EAA6E;AAE7E,MAAM,OAAO,GAAG,IAAI,CAAC,EAAE,GAAG,KAAK,CAAC;AAEhC,MAAM,CAAN,IAAY,OAiBX;AAjBD,WAAY,OAAO;IACjB,6CAAY,CAAA;IACZ,uDAAiB,CAAA;IACjB,+CAAa,CAAA;IACb,6CAAY,CAAA;IAEZ,iEAAsB,CAAA;IACtB,2CAAW,CAAA;IACX,iDAAc,CAAA;IACd,2DAAmB,CAAA;IACnB,mDAAe,CAAA;IACf,8DAAqB,CAAA;IACrB,8CAAa,CAAA;IACb,wDAAkB,CAAA;IAClB,oDAAgB,CAAA;IAChB,sDAAiB,CAAA;IACjB,gEAAsB,CAAA;AACxB,CAAC,EAjBW,OAAO,KAAP,OAAO,QAiBlB;AAED,MAAM,SAAS;IAIb,YAA6B,KAAiB;QAAjB,UAAK,GAAL,KAAK,CAAY;QAF9C,QAAG,GAAG,CAAC,CAAC;QAGN,IAAI,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC7E,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC;IAC1C,CAAC;IAED,EAAE;QACA,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAED,GAAG;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QACd,OAAO,CAAC,CAAC;IACX,CAAC;IAED,UAAU,CAAC,GAAW;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;QACvB,MAAM,GAAG,GAAG,KAAK,GAAG,GAAG,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,EAAE,GAAG,CAAC,CAAC;IAC7E,CAAC;CACF;AAED,gFAAgF;AAChF,iFAAiF;AACjF,gFAAgF;AAEhF,2DAA2D;AAC3D,SAAS,OAAO,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;IACzD,OAAO,QAAQ,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC;AAC5E,CAAC;AAED,SAAS,cAAc,CAAC,GAAsC;IAC5D,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,WAAW,CAClB,GAAsC,EACtC,OAAe,EACf,OAAe,EACf,CAAS,EACT,CAAS,EACT,IAAY,EACZ,GAAW;IAEX,gBAAgB;IAChB,wBAAwB;IACxB,2BAA2B;IAC3B,mBAAmB;IACnB,yBAAyB;IACzB,yBAAyB;IACzB,cAAc,CAAC,GAAG,CAAC,CAAC;IACpB,GAAG,CAAC,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE,OAAO,GAAG,GAAG,CAAC,CAAC;IAC5C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChB,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACtB,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;AACxB,CAAC;AAED,8FAA8F;AAC9F,qFAAqF;AACrF,SAAS,kBAAkB,CACzB,GAAsC,EACtC,CAAS,EACT,CAAS,EACT,CAAS,EACT,CAAS,EACT,KAAa,EACb,KAAa;IAEb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO;IAElD,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IAEtB,MAAM,CAAC,GAAG,KAAK,CAAC;IAEhB,MAAM;IACN,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,SAAS;IACT,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACjC,OAAO;IACP,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;IACzB,QAAQ;IACR,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,UAAU,CACjB,GAAsC,EACtC,CAAS,EACT,CAAS,EACT,MAAc,EACd,KAAa;IAEb,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACtC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,IAAI,EAAE,CAAC;AACb,CAAC;AAED,SAAS,eAAe,CACtB,GAAsC,EACtC,CAAS,EACT,CAAS,EACT,MAAc,EACd,KAAa,EACb,KAAa;IAEb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO;IAClD,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACtC,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;IACxB,GAAG,CAAC,MAAM,EAAE,CAAC;AACf,CAAC;AAED,4FAA4F;AAC5F,SAAS,OAAO,CACd,GAAsC,EACtC,CAAS,EACT,CAAS,EACT,MAAc,EACd,WAAmB,EACnB,MAAc,EACd,KAAa,EACb,KAAa,EACb,KAAa;IAEb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO;IAElD,MAAM,IAAI,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/C,MAAM,EAAE,GAAG,WAAW,GAAG,OAAO,CAAC;IACjC,MAAM,EAAE,GAAG,CAAC,WAAW,GAAG,MAAM,CAAC,GAAG,OAAO,CAAC;IAC5C,MAAM,IAAI,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC;IAE9B,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,CAAC,CAAC;QACxB,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;;YAC3B,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;IACxB,GAAG,CAAC,MAAM,EAAE,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAClB,GAAsC,EACtC,CAAS,EACT,CAAS,EACT,EAAU,EACV,EAAU,EACV,WAAmB,EACnB,KAAa;IAEb,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,IAAI,EAAE,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CACvB,GAAsC,EACtC,CAAS,EACT,CAAS,EACT,EAAU,EACV,EAAU,EACV,WAAmB,EACnB,KAAa,EACb,KAAa;IAEb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO;IAClD,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,GAAG,OAAO,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IACjE,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;IACxB,GAAG,CAAC,MAAM,EAAE,CAAC;AACf,CAAC;AAED,SAAS,QAAQ,CACf,GAAsC,EACtC,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,WAAmB,EACnB,KAAa;IAEb,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO;IAElB,MAAM,GAAG,GAAG,WAAW,GAAG,OAAO,CAAC;IAElC,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;;YAC3B,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,IAAI,EAAE,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CACpB,GAAsC,EACtC,CAAS,EACT,CAAS,EACT,KAAa,EACb,MAAc,EACd,WAAmB,EACnB,KAAa,EACb,KAAa;IAEb,MAAM,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,GAAG,CAAC;QAAE,OAAO;IAClB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO;IAElD,MAAM,GAAG,GAAG,WAAW,GAAG,OAAO,CAAC;IAElC,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACtC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;;YAC3B,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;IACxB,GAAG,CAAC,MAAM,EAAE,CAAC;AACf,CAAC;AAED,SAAS,WAAW,CAClB,GAAsC,EACtC,CAAS,EACT,CAAS,EACT,MAAc,EACd,QAAiB,EACjB,MAAc,EACd,WAAmB,EACnB,SAAiB;IAEjB,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACrC,MAAM,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC;IAE/B,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;QACvC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,MAAM,EAAE,GAAG,CAAC,GAAG,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,CAAC,KAAK,CAAC;YAAE,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;;YAC3B,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1B,CAAC;IACD,GAAG,CAAC,SAAS,EAAE,CAAC;IAEhB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,IAAI,EAAE,CAAC;IAEX,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;QACvB,GAAG,CAAC,WAAW,GAAG,WAAW,CAAC;QAC9B,GAAG,CAAC,MAAM,EAAE,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,GAAsC,EACtC,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,KAAa;IAEb,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnB,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,IAAI,EAAE,CAAC;AACb,CAAC;AAED,SAAS,iBAAiB,CACxB,GAAsC,EACtC,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,EAAU,EACV,KAAa,EACb,KAAa;IAEb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO;IAClD,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;IACnB,GAAG,CAAC,SAAS,EAAE,CAAC;IAChB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;IACtB,GAAG,CAAC,WAAW,GAAG,KAAK,CAAC;IACxB,GAAG,CAAC,MAAM,EAAE,CAAC;AACf,CAAC;AAYD,MAAM,OAAO,UAAU;IASrB,YAAY,MAAuB,EAAE,IAAqB;QAFzC,gBAAW,GAAG,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC;QAGtD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACpB,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEhC,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;QAC3B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;QAE5B,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC3E,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QAEf,uFAAuF;QACvF,IAAI,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;QAE9B,gEAAgE;QAChE,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,KAAa,EAAE,MAAc;QAClC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;QACf,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC;QAChB,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QAE5B,2DAA2D;QAC3D,IAAI,CAAC,GAAG,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACvC,IAAI,CAAC,GAAG,CAAC,SAAS,GAAG,MAAM,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;QAC9B,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3B,CAAC;IAED,MAAM,CAAC,WAAuB;QAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QAErB,sDAAsD;QACtD,cAAc,CAAC,GAAG,CAAC,CAAC;QAEpB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC;YACxB,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;QAED,MAAM,CAAC,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,CAAC;QAErC,OAAO,CAAC,CAAC,SAAS,GAAG,CAAC,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;YAEnB,QAAQ,GAAG,EAAE,CAAC;gBACZ,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;oBACvB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACrB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,UAAU;oBAC/B,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;oBAClD,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEnB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC;oBACtB,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC1C,GAAG,CAAC,SAAS,EAAE,CAAC;oBAChB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBACnB,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBACnB,GAAG,CAAC,MAAM,EAAE,CAAC;oBACb,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;oBAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEnB,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBACxC,GAAG,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACzB,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAChC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEnB,kBAAkB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACpE,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC;oBACxB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEnB,UAAU,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACvD,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC;oBAC7B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEnB,eAAe,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACnE,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;oBACrB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC5B,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEnB,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACvF,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEnB,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACrE,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC;oBAC9B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEnB,gBAAgB,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACjF,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACtB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC5B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEnB,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACzE,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC;oBAC3B,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,WAAW,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC5B,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEnB,aAAa,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACrF,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,iBAAiB;oBAC3C,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAEvB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAC/E,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAE/E,MAAM,IAAI,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBACrC,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBAE1C,WAAW,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;oBACxE,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;oBAC1B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAE/E,YAAY,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACnE,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC;oBAC/B,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACvC,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACtB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAAC,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAE/E,iBAAiB,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC/E,MAAM;gBACR,CAAC;gBAED,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;oBACtB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBAClB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACrB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,EAAE,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACnB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;oBACpB,MAAM,KAAK,GAAG,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAChC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAE5C,GAAG,CAAC,SAAS,GAAG,OAAO,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;oBACxC,GAAG,CAAC,IAAI,GAAG,GAAG,IAAI,wDAAwD,CAAC;oBAC3E,GAAG,CAAC,YAAY,GAAG,KAAK,CAAC;oBACzB,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;oBACzB,MAAM;gBACR,CAAC;gBAED,OAAO,CAAC,CAAC,CAAC;oBACR,2DAA2D;oBAC3D,sCAAsC;oBACtC,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;oBAC3E,OAAO;gBACT,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { WasmSnapshot } from '../types.js';
2
+ export declare class WasmSnapshotter {
3
+ private readonly instance;
4
+ private readonly module;
5
+ private readonly funcList;
6
+ private readonly funcIndexByFunc;
7
+ private readonly globals_num;
8
+ private readonly globals_i64;
9
+ private readonly globals_funcref;
10
+ private readonly tables;
11
+ private readonly memories;
12
+ constructor(instance: WebAssembly.Instance, module: WebAssembly.Module);
13
+ createSnapshot(): WasmSnapshot;
14
+ loadSnapshot(snap: WasmSnapshot): void;
15
+ private gatherExports;
16
+ }
17
+ //# sourceMappingURL=snapshotter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshotter.d.ts","sourceRoot":"","sources":["../../src/worker/snapshotter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAIhD,qBAAa,eAAe;IAYxB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM;IAZzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;IAC3C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA6B;IAE7D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4B;IACxD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA4B;IAE5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA4B;gBAGlC,QAAQ,EAAE,WAAW,CAAC,QAAQ,EAC9B,MAAM,EAAE,WAAW,CAAC,MAAM;IAK7C,cAAc,IAAI,YAAY;IAuE9B,YAAY,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;IAgEtC,OAAO,CAAC,aAAa;CA4DtB"}