copper3d 3.4.3 → 3.4.5

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.
@@ -18,6 +18,23 @@ export declare class RenderingUtils {
18
18
  private _reusableSliceBuffer;
19
19
  private _reusableBufferWidth;
20
20
  private _reusableBufferHeight;
21
+ /**
22
+ * Per-layer contour cache.
23
+ *
24
+ * Caches the *expensive* part of slice rendering — `getSliceUint8` +
25
+ * `findLabelsInSlice` + `extractLabelContours` (Path2D build) — keyed by
26
+ * `${axis}:${sliceIndex}:${volume.version}`. The contours live in voxel
27
+ * coordinates; zoom only changes the `ctx.scale` transform, so on zoom /
28
+ * recomposite we reuse the cached Path2D and just re-fill, skipping
29
+ * marching-squares entirely. A volume edit bumps its version → cache miss
30
+ * → recompute (correct, automatic). Colors and channel visibility are
31
+ * applied at fill time and intentionally *not* cached, so toggling them
32
+ * needs no recompute.
33
+ *
34
+ * One entry per layer (the current slice). Switching slice/axis or
35
+ * editing overwrites it.
36
+ */
37
+ private _contourCache;
21
38
  constructor(state: CanvasState);
22
39
  /**
23
40
  * Get MaskVolume for a specific layer
@@ -17,6 +17,23 @@ export class RenderingUtils {
17
17
  this._reusableSliceBuffer = null;
18
18
  this._reusableBufferWidth = 0;
19
19
  this._reusableBufferHeight = 0;
20
+ /**
21
+ * Per-layer contour cache.
22
+ *
23
+ * Caches the *expensive* part of slice rendering — `getSliceUint8` +
24
+ * `findLabelsInSlice` + `extractLabelContours` (Path2D build) — keyed by
25
+ * `${axis}:${sliceIndex}:${volume.version}`. The contours live in voxel
26
+ * coordinates; zoom only changes the `ctx.scale` transform, so on zoom /
27
+ * recomposite we reuse the cached Path2D and just re-fill, skipping
28
+ * marching-squares entirely. A volume edit bumps its version → cache miss
29
+ * → recompute (correct, automatic). Colors and channel visibility are
30
+ * applied at fill time and intentionally *not* cached, so toggling them
31
+ * needs no recompute.
32
+ *
33
+ * One entry per layer (the current slice). Switching slice/axis or
34
+ * editing overwrites it.
35
+ */
36
+ this._contourCache = new Map();
20
37
  this.state = state;
21
38
  }
22
39
  // ── Volume Accessor Helpers ──────────────────────────────────────
@@ -115,14 +132,27 @@ export class RenderingUtils {
115
132
  const volume = this.getVolumeForLayer(layer);
116
133
  if (!volume)
117
134
  return;
118
- const channelVis = this.state.gui_states.layerChannel.channelVisibility[layer];
119
- const slice = volume.getSliceUint8(sliceIndex, axis);
120
- const W = slice.width;
121
- const H = slice.height;
122
135
  const stride = volume.getChannels();
123
- const labels = findLabelsInSlice(slice.data, W, H, stride, 0);
124
- if (labels.length === 0)
136
+ const cacheKey = `${axis}:${sliceIndex}:${volume.getVersion()}`;
137
+ // Cache miss → run the expensive extraction once. Hits (zoom,
138
+ // recomposite, contrast toggle) skip straight to the fill below.
139
+ let entry = this._contourCache.get(layer);
140
+ if (!entry || entry.key !== cacheKey) {
141
+ const slice = volume.getSliceUint8(sliceIndex, axis);
142
+ const W = slice.width;
143
+ const H = slice.height;
144
+ const labels = findLabelsInSlice(slice.data, W, H, stride, 0);
145
+ const paths = new Map();
146
+ for (const lbl of labels) {
147
+ paths.set(lbl, extractLabelContours(slice.data, W, H, lbl, stride, 0));
148
+ }
149
+ entry = { key: cacheKey, W, H, labels, paths };
150
+ this._contourCache.set(layer, entry);
151
+ }
152
+ if (entry.labels.length === 0)
125
153
  return;
154
+ const { W, H, labels, paths } = entry;
155
+ const channelVis = this.state.gui_states.layerChannel.channelVisibility[layer];
126
156
  targetCtx.save();
127
157
  // Vector fill — imageSmoothingEnabled is irrelevant here, but keep
128
158
  // it off to match the rest of the pipeline.
@@ -139,8 +169,10 @@ export class RenderingUtils {
139
169
  for (const lbl of labels) {
140
170
  if (channelVis && channelVis[lbl] === false)
141
171
  continue;
172
+ const path = paths.get(lbl);
173
+ if (!path)
174
+ continue;
142
175
  const color = volume.getChannelColor(lbl);
143
- const path = extractLabelContours(slice.data, W, H, lbl, stride, 0);
144
176
  targetCtx.fillStyle =
145
177
  `rgba(${color.r}, ${color.g}, ${color.b}, ${color.a / 255})`;
146
178
  targetCtx.fill(path, 'nonzero');
@@ -158,6 +190,7 @@ export class RenderingUtils {
158
190
  this._reusableSliceBuffer = null;
159
191
  this._reusableBufferWidth = 0;
160
192
  this._reusableBufferHeight = 0;
193
+ this._contourCache.clear();
161
194
  }
162
195
  /**
163
196
  * Apply the same flip transform used by flipDisplayImageByAxis() to any
@@ -1 +1 @@
1
- {"version":3,"file":"RenderingUtils.js","sourceRoot":"","sources":["../../../src/Utils/segmentation/RenderingUtils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RenderingUtils.js","sourceRoot":"","sources":["../../../src/Utils/segmentation/RenderingUtils.ts"],"names":[],"mappings":"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"}
@@ -35,10 +35,18 @@ export interface ContourBBox {
35
35
  /** A single polygon's vertices in voxel-space coordinates. */
36
36
  export type ContourPolygon = ReadonlyArray<readonly [number, number]>;
37
37
  /**
38
- * Emit all per-cell polygons covering the voxels where `labels === targetLabel`.
38
+ * Emit polygons covering the voxels where `labels === targetLabel`.
39
39
  * Pure geometry function — no Canvas dependency. Consumers can build a Path2D
40
40
  * (see {@link extractLabelContours}) or walk the vertex arrays directly
41
41
  * (tests, export, stroke rendering).
42
+ *
43
+ * Boundary cells (marching-squares cases 1–14) emit their cut polygon as
44
+ * usual. Solid interior (case 15) is **coalesced into horizontal run-length
45
+ * rectangles** instead of one unit square per cell, collapsing the subpath
46
+ * count from O(area) to ≈ O(perimeter + rows). The filled region is
47
+ * pixel-identical (contiguous full-cell squares tile exactly into a rectangle
48
+ * with the same TL→TR→BR→BL winding), which is what keeps slice-scrubbing
49
+ * fast on large masks without changing the rendered silhouette.
42
50
  */
43
51
  export declare function extractLabelPolygons(labels: Uint8Array, width: number, height: number, targetLabel: number, stride?: number, channelOffset?: number, bbox?: ContourBBox): ContourPolygon[];
44
52
  /**
@@ -60,10 +60,18 @@ const CELL_POLYGONS = [
60
60
  /* 15 (full) */ [[[0, 0], [1, 0], [1, 1], [0, 1]]],
61
61
  ];
62
62
  /**
63
- * Emit all per-cell polygons covering the voxels where `labels === targetLabel`.
63
+ * Emit polygons covering the voxels where `labels === targetLabel`.
64
64
  * Pure geometry function — no Canvas dependency. Consumers can build a Path2D
65
65
  * (see {@link extractLabelContours}) or walk the vertex arrays directly
66
66
  * (tests, export, stroke rendering).
67
+ *
68
+ * Boundary cells (marching-squares cases 1–14) emit their cut polygon as
69
+ * usual. Solid interior (case 15) is **coalesced into horizontal run-length
70
+ * rectangles** instead of one unit square per cell, collapsing the subpath
71
+ * count from O(area) to ≈ O(perimeter + rows). The filled region is
72
+ * pixel-identical (contiguous full-cell squares tile exactly into a rectangle
73
+ * with the same TL→TR→BR→BL winding), which is what keeps slice-scrubbing
74
+ * fast on large masks without changing the rendered silhouette.
67
75
  */
68
76
  export function extractLabelPolygons(labels, width, height, targetLabel, stride = 1, channelOffset = 0, bbox) {
69
77
  var _a, _b, _c, _d;
@@ -85,7 +93,25 @@ export function extractLabelPolygons(labels, width, height, targetLabel, stride
85
93
  // map to voxel-square CENTERS in render space. Voxel (i, j) occupies
86
94
  // render square [i, i+1] × [j, j+1]; its center is (i+0.5, j+0.5).
87
95
  const SHIFT = 0.5;
96
+ // Emit a single rectangle covering a contiguous run of full (code 15)
97
+ // cells [runStart .. runEnd] on row j. A full cell i covers render square
98
+ // [i+0.5, i+1.5] × [j+0.5, j+1.5]; consecutive full cells tile perfectly,
99
+ // so the run is pixel-identical to the per-cell squares it replaces.
100
+ // Vertices use the same TL→TR→BR→BL (CCW screen-space) winding as the
101
+ // case-15 unit square, so the nonzero fill matches at shared edges.
102
+ const pushFullRun = (runStart, runEnd, j) => {
103
+ const x0 = runStart + SHIFT;
104
+ const x1 = runEnd + 1 + SHIFT;
105
+ const y0 = j + SHIFT;
106
+ const y1 = j + 1 + SHIFT;
107
+ out.push([[x0, y0], [x1, y0], [x1, y1], [x0, y1]]);
108
+ };
88
109
  for (let j = j0; j < j1; j++) {
110
+ // Index where the current contiguous run of full (code 15) cells began,
111
+ // or -1 when no run is open. Coalescing the solid interior into row runs
112
+ // drops the per-cell square count from O(area) to O(rows + perimeter),
113
+ // which is what keeps fast slice-scrubbing smooth on large masks.
114
+ let runStart = -1;
89
115
  for (let i = i0; i < i1; i++) {
90
116
  const tl = sample(i, j);
91
117
  const tr = sample(i + 1, j);
@@ -95,6 +121,17 @@ export function extractLabelPolygons(labels, width, height, targetLabel, stride
95
121
  (tr ? 4 : 0) |
96
122
  (br ? 2 : 0) |
97
123
  (bl ? 1 : 0);
124
+ if (code === 15) {
125
+ // Extend (or open) the current full-cell run; defer emission.
126
+ if (runStart === -1)
127
+ runStart = i;
128
+ continue;
129
+ }
130
+ // Non-full cell ends any open run — flush it as one rectangle.
131
+ if (runStart !== -1) {
132
+ pushFullRun(runStart, i - 1, j);
133
+ runStart = -1;
134
+ }
98
135
  if (code === 0)
99
136
  continue;
100
137
  const polygons = CELL_POLYGONS[code];
@@ -107,6 +144,10 @@ export function extractLabelPolygons(labels, width, height, targetLabel, stride
107
144
  out.push(abs);
108
145
  }
109
146
  }
147
+ // Flush a run that reached the end of the row (last visited cell is i1-1).
148
+ if (runStart !== -1) {
149
+ pushFullRun(runStart, i1 - 1, j);
150
+ }
110
151
  }
111
152
  return out;
112
153
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MarchingSquares.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/MarchingSquares.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MarchingSquares.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/MarchingSquares.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,17 @@ export declare class MaskVolume {
45
45
  private readonly bytesPerSlice;
46
46
  /** Per-channel color map used for colored rendering modes. */
47
47
  private colorMap;
48
+ /**
49
+ * Monotonic data-mutation counter.
50
+ *
51
+ * Incremented by every method that mutates voxel data (not color).
52
+ * Consumers (e.g. the contour cache in RenderingUtils) key cached
53
+ * derivations on this value so an edit automatically invalidates them —
54
+ * it is impossible to forget an invalidation point because every write
55
+ * bumps the version. Color-map changes do **not** bump it (colors are
56
+ * applied at fill time, never cached).
57
+ */
58
+ private version;
48
59
  /**
49
60
  * Create a new MaskVolume.
50
61
  *
@@ -105,6 +116,13 @@ export declare class MaskVolume {
105
116
  * @throws {RangeError} If any coordinate is out of bounds.
106
117
  */
107
118
  setVoxel(x: number, y: number, z: number, value: number, channel?: number): void;
119
+ /**
120
+ * Return the current data-mutation version.
121
+ *
122
+ * Increments on every voxel write. Use as a cache key so derived data
123
+ * (e.g. extracted contours) is invalidated whenever the volume changes.
124
+ */
125
+ getVersion(): number;
108
126
  /**
109
127
  * Update the color for a specific label/channel in the color map.
110
128
  *
@@ -47,6 +47,17 @@ export class MaskVolume {
47
47
  * @throws {RangeError} If any dimension or the channel count is < 1.
48
48
  */
49
49
  constructor(width, height, depth, channels = 1, customColorMap) {
50
+ /**
51
+ * Monotonic data-mutation counter.
52
+ *
53
+ * Incremented by every method that mutates voxel data (not color).
54
+ * Consumers (e.g. the contour cache in RenderingUtils) key cached
55
+ * derivations on this value so an edit automatically invalidates them —
56
+ * it is impossible to forget an invalidation point because every write
57
+ * bumps the version. Color-map changes do **not** bump it (colors are
58
+ * applied at fill time, never cached).
59
+ */
60
+ this.version = 0;
50
61
  if (width < 1 || height < 1 || depth < 1) {
51
62
  throw new RangeError(`Dimensions must be ≥ 1, got (${width}, ${height}, ${depth})`);
52
63
  }
@@ -136,6 +147,16 @@ export class MaskVolume {
136
147
  */
137
148
  setVoxel(x, y, z, value, channel = 0) {
138
149
  this.data[this.getIndex(x, y, z, channel)] = value;
150
+ this.version++;
151
+ }
152
+ /**
153
+ * Return the current data-mutation version.
154
+ *
155
+ * Increments on every voxel write. Use as a cache key so derived data
156
+ * (e.g. extracted contours) is invalidated whenever the volume changes.
157
+ */
158
+ getVersion() {
159
+ return this.version;
139
160
  }
140
161
  // ── Color map management ──────────────────────────────────────────
141
162
  /**
@@ -292,6 +313,7 @@ export class MaskVolume {
292
313
  throw new Error(`ImageData size mismatch: expected ${expectedW}×${expectedH}, ` +
293
314
  `got ${imageData.width}×${imageData.height}`);
294
315
  }
316
+ this.version++;
295
317
  const pixels = imageData.data;
296
318
  const { width, height } = this.dims;
297
319
  const ch = this.numChannels;
@@ -393,6 +415,7 @@ export class MaskVolume {
393
415
  throw new Error(`ImageData size mismatch: expected ${expectedW}×${expectedH}, ` +
394
416
  `got ${imageData.width}×${imageData.height}`);
395
417
  }
418
+ this.version++;
396
419
  // Build RGB→channel lookup map for O(1) reverse lookup
397
420
  const rgbToChannel = this.buildRgbToChannelMap();
398
421
  const pixels = imageData.data;
@@ -657,6 +680,7 @@ export class MaskVolume {
657
680
  throw new Error(`Data length mismatch: expected ${this.data.length}, got ${newData.length}`);
658
681
  }
659
682
  this.data = newData;
683
+ this.version++;
660
684
  }
661
685
  /**
662
686
  * Create an independent deep copy of this volume.
@@ -696,6 +720,7 @@ export class MaskVolume {
696
720
  */
697
721
  clear() {
698
722
  this.data.fill(0);
723
+ this.version++;
699
724
  }
700
725
  /**
701
726
  * Check if the volume contains any non-zero voxel data.
@@ -748,6 +773,7 @@ export class MaskVolume {
748
773
  */
749
774
  clearSlice(sliceIndex, axis = 'z', channel) {
750
775
  this.validateSliceIndex(sliceIndex, axis);
776
+ this.version++;
751
777
  const [sliceW, sliceH] = this.getSliceDimensions(axis);
752
778
  const volData = this.data;
753
779
  const nch = this.numChannels;
@@ -859,6 +885,7 @@ export class MaskVolume {
859
885
  */
860
886
  setSliceUint8(sliceIndex, data, axis = 'z') {
861
887
  this.validateSliceIndex(sliceIndex, axis);
888
+ this.version++;
862
889
  const [sliceW, sliceH] = this.getSliceDimensions(axis);
863
890
  const nch = this.numChannels;
864
891
  const rowStride = this.dims.width * nch;
@@ -1 +1 @@
1
- {"version":3,"file":"MaskVolume.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/MaskVolume.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MaskVolume.js","sourceRoot":"","sources":["../../../../src/Utils/segmentation/core/MaskVolume.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAQH,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAE1D,MAAM,OAAO,UAAU;IAiCrB,sEAAsE;IAEtE;;;;;;;;;;;;OAYG;IACH,YACE,KAAa,EACb,MAAc,EACd,KAAa,EACb,QAAQ,GAAG,CAAC,EACZ,cAAgC;QAhClC;;;;;;;;;WASG;QACK,YAAO,GAAG,CAAC,CAAC;QAwBlB,IAAI,KAAK,GAAG,CAAC,IAAI,MAAM,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE;YACxC,MAAM,IAAI,UAAU,CAClB,gCAAgC,KAAK,KAAK,MAAM,KAAK,KAAK,GAAG,CAC9D,CAAC;SACH;QACD,IAAI,QAAQ,GAAG,CAAC,EAAE;YAChB,MAAM,IAAI,UAAU,CAAC,6BAA6B,QAAQ,EAAE,CAAC,CAAC;SAC/D;QAED,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC5B,IAAI,CAAC,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,CAAC;QAE/C,MAAM,UAAU,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,CAAC;QACrD,IAAI,CAAC,IAAI,GAAG,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,2BAA2B;QAEnE,yDAAyD;QACzD,IAAI,CAAC,QAAQ,GAAG,EAAqB,CAAC;QACtC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;YAClD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvD;QACD,IAAI,cAAc,EAAE;YAClB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE;gBAC7C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD;SACF;IACH,CAAC;IAED,sEAAsE;IAEtE;;;;;;;;;;;;;;;;;;OAkBG;IACK,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,OAAO,GAAG,CAAC;QAC3D,IACE,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;YAC7B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM;YAC9B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;YAC7B,OAAO,GAAG,CAAC,IAAI,OAAO,IAAI,IAAI,CAAC,WAAW,EAC1C;YACA,MAAM,IAAI,UAAU,CAClB,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,OAAO,IAAI;gBACzD,eAAe,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,GAAG,CAC7F,CAAC;SACH;QAED,OAAO,CACL,CAAC,GAAG,IAAI,CAAC,aAAa;YACtB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,WAAW;YACtC,CAAC,GAAG,IAAI,CAAC,WAAW;YACpB,OAAO,CACR,CAAC;IACJ,CAAC;IAED,sEAAsE;IAEtE;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,OAAO,GAAG,CAAC;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,KAAa,EAAE,OAAO,GAAG,CAAC;QAClE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,GAAG,KAAK,CAAC;QACnD,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,qEAAqE;IAErE;;;;;;;;;;OAUG;IACH,eAAe,CAAC,OAAe,EAAE,KAAgB;QAC/C,IAAI,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE;YAC9B,MAAM,IAAI,UAAU,CAClB,0BAA0B,OAAO,qBAAqB,CACvD,CAAC;SACH;QACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED;;;;;;;OAOG;IACH,eAAe,CAAC,OAAe;;QAC7B,MAAM,CAAC,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,mCAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACH,kBAAkB,CAAC,OAAgB;QACjC,IAAI,OAAO,KAAK,SAAS,EAAE;YACzB,MAAM,CAAC,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACvC,IAAI,CAAC;gBAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE;aAAM;YACL,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE;gBAClD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACtB,MAAM,CAAC,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACvD;SACF;IACH,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,MAAM,IAAI,GAAoB,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,qEAAqE;IAErE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,iBAAiB,CACf,UAAkB,EAClB,OAAwB,GAAG,EAC3B,UAA8B,EAAE;QAEhC,yDAAyD;QACzD,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,EACJ,IAAI,GAAG,UAAU,CAAC,SAAS,EAC3B,OAAO,GAAG,CAAC,EACX,QAAQ,GAAG,IAAI,CAAC,QAAQ,EACxB,eAAe,EACf,OAAO,GAAG,GAAG,GACd,GAAG,OAAO,CAAC;QAEZ,gDAAgD;QAChD,MAAM,KAAK,GAAG,eAAe,aAAf,eAAe,cAAf,eAAe,GAAI,IAAI,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAc,CAAC;QAErF,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChE,MAAM,SAAS,GAAG,IAAI,SAAS,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;QACzD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,2BAA2B;QAE1D,QAAQ,IAAI,EAAE;YACZ,KAAK,UAAU,CAAC,SAAS;gBACvB,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;gBACjF,MAAM;YACR,KAAK,UAAU,CAAC,cAAc;gBAC5B,IAAI,CAAC,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACxG,MAAM;YACR,KAAK,UAAU,CAAC,aAAa;gBAC3B,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBACrG,MAAM;YACR,KAAK,UAAU,CAAC,OAAO;gBACrB,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAChG,MAAM;SACT;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,qEAAqE;IAErE;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,qBAAqB,CACnB,UAAkB,EAClB,SAAoB,EACpB,OAAwB,GAAG,EAC3B,OAAO,GAAG,CAAC;QAEX,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE;YACnE,MAAM,IAAI,KAAK,CACb,qCAAqC,SAAS,IAAI,SAAS,IAAI;gBAC/D,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAC7C,CAAC;SACH;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;QAC9B,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QACpC,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1B,IAAI,EAAE,IAAI,CAAC,EAAE;YACX,uEAAuE;YACvE,IAAI,IAAI,KAAK,GAAG,EAAE;gBAChB,sDAAsD;gBACtD,MAAM,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,IAAI,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC,CAAC;aAC7D;iBAAM,IAAI,IAAI,KAAK,GAAG,EAAE;gBACvB,+DAA+D;gBAC/D,MAAM,QAAQ,GAAG,KAAK,GAAG,EAAE,CAAC;gBAC5B,IAAI,EAAE,GAAG,CAAC,CAAC;gBACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;oBAClC,MAAM,QAAQ,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,UAAU,GAAG,KAAK,GAAG,EAAE,CAAC;oBACnE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;oBAC1D,EAAE,IAAI,QAAQ,CAAC;iBAChB;aACF;iBAAM;gBACL,gCAAgC;gBAChC,qEAAqE;gBACrE,gCAAgC;gBAChC,IAAI,EAAE,GAAG,CAAC,CAAC;gBACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;oBAClC,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;oBAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;wBAClC,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,GAAG,KAAK,GAAG,EAAE,GAAG,OAAO,GAAG,UAAU,GAAG,EAAE,CAAC;wBACpE,OAAO,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;wBAC9B,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACtC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACtC,OAAO,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;wBACtC,EAAE,IAAI,CAAC,CAAC;qBACT;iBACF;aACF;SACF;aAAM;YACL,oDAAoD;YACpD,MAAM,SAAS,GAAG,KAAK,GAAG,EAAE,CAAC;YAC7B,IAAI,SAAiB,CAAC;YACtB,IAAI,OAAe,CAAC;YACpB,IAAI,OAAe,CAAC;YACpB,QAAQ,IAAI,EAAE;gBACZ,KAAK,GAAG;oBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;oBACtD,OAAO,GAAG,SAAS,CAAC;oBACpB,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM;gBACR,KAAK,GAAG;oBACN,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;oBAC7C,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;oBAC7B,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM;gBACR,kEAAkE;gBAClE,KAAK,GAAG;oBACN,SAAS,GAAG,UAAU,GAAG,EAAE,GAAG,OAAO,CAAC;oBACtC,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;oBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;oBACvC,MAAM;aACT;YAED,IAAI,EAAE,GAAG,CAAC,CAAC;YACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBAClC,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;gBAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;oBAClC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;oBAC1B,GAAG,IAAI,OAAO,CAAC;oBACf,EAAE,IAAI,CAAC,CAAC;iBACT;aACF;SACF;IACH,CAAC;IAGD,sEAAsE;IAEtE;;;;;;;;;;;;;;;;;OAiBG;IACH,2BAA2B,CACzB,UAAkB,EAClB,SAAoB,EACpB,OAAwB,GAAG,EAC3B,gBAAwB,CAAC,EACzB,cAAwC;;QAExC,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,SAAS,CAAC,KAAK,KAAK,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,SAAS,EAAE;YACnE,MAAM,IAAI,KAAK,CACb,qCAAqC,SAAS,IAAI,SAAS,IAAI;gBAC/D,OAAO,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,MAAM,EAAE,CAC7C,CAAC;SACH;QAED,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,uDAAuD;QACvD,MAAM,YAAY,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAEjD,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC;QAE9B,yEAAyE;QACzE,4EAA4E;QAC5E,yEAAyE;QACzE,2DAA2D;QAC3D,MAAM,eAAe,GAAG,GAAG,CAAC;QAE5B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1B,4EAA4E;QAC5E,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC5C,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;gBAC7B,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;YAClC,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,EAAE,CAAC,EAAE,EAAE;gBAClC,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;gBAE7B,IAAI,KAAK,GAAG,eAAe,EAAE;oBAC3B,yCAAyC;oBACzC,IAAI,cAAc,EAAE;wBAClB,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;wBACnC,IAAI,aAAa,KAAK,CAAC,IAAI,cAAc,CAAC,aAAa,CAAC,KAAK,KAAK,EAAE;4BAClE,GAAG,IAAI,OAAO,CAAC;4BACf,EAAE,IAAI,CAAC,CAAC;4BACR,SAAS;yBACV;qBACF;oBACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;iBAClB;qBAAM;oBACL,yCAAyC;oBACzC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC;oBACrB,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;oBACzB,MAAM,GAAG,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;oBACrC,IAAI,cAAc,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;oBAE3C,gFAAgF;oBAChF,IAAI,cAAc,KAAK,SAAS,EAAE;wBAChC,IAAI,OAAO,GAAG,QAAQ,CAAC;wBACvB,IAAI,WAAW,GAAG,aAAa,CAAC;wBAEhC,iFAAiF;wBACjF,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;4BAC9B,MAAM,CAAC,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;4BACvD,IAAI,CAAC,CAAC;gCAAE,SAAS;4BAEjB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BACnB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BACnB,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;4BACnB,MAAM,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;4BAEzC,IAAI,IAAI,GAAG,OAAO,EAAE;gCAClB,OAAO,GAAG,IAAI,CAAC;gCACf,WAAW,GAAG,EAAE,CAAC;6BAClB;yBACF;wBACD,cAAc,GAAG,WAAW,CAAC;qBAC9B;oBAED,OAAO,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC;iBAC/B;gBAED,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED;;;;;OAKG;IACK,oBAAoB;;QAC1B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;YAC9B,MAAM,KAAK,GAAG,MAAA,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;YAC3D,IAAI,KAAK,EAAE;gBACT,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;gBACvD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;aAClB;SACF;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,qEAAqE;IAErE;;;;;;;;;;;;;OAaG;IACH,oBAAoB,CAClB,UAAkB,EAClB,OAAwB,GAAG,EAC3B,MAAiB,EACjB,cAAwC,EACxC,UAAkB,GAAG;;QAErB,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,CAAC,UAAU,EAAE,WAAW,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,KAAK,KAAK,UAAU,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE;YAChE,MAAM,IAAI,KAAK,CACb,kCAAkC,UAAU,IAAI,WAAW,IAAI;gBAC/D,OAAO,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CACvC,CAAC;SACH;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE/B,qEAAqE;QACrE,0CAA0C;QAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACvC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC5C,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,EAAE,CAAC;gBAC5B,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,EAAE,EAAE;gBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBAExB,IAAI,KAAK,KAAK,CAAC,EAAE;oBACf,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACf,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACpB;qBAAM,IAAI,cAAc,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE;oBACnD,MAAM,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;oBACf,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;oBACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACpB;qBAAM;oBACL,MAAM,KAAK,GAAG,MAAA,MAAA,QAAQ,CAAC,KAAK,CAAC,mCAAI,mBAAmB,CAAC,KAAK,CAAC,mCAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;oBACtF,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACrB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC;iBAChD;gBAED,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED,sEAAsE;IAEtE;;;;OAIG;IACH,aAAa;QACX,yBAAY,IAAI,CAAC,IAAI,EAAG;IAC1B,CAAC;IAED;;;;OAIG;IACH,WAAW;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;;;;;OAOG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;;;;;;;;OAUG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;IAC9B,CAAC;IAED,uEAAuE;IAEvE;;;;;;;;;;;;;;OAcG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,UAAU,CAAC,OAAmB;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACvC,MAAM,IAAI,KAAK,CACb,kCAAkC,IAAI,CAAC,IAAI,CAAC,MAAM,SAAS,OAAO,CAAC,MAAM,EAAE,CAC5E,CAAC;SACH;QACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QACpB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACH,KAAK;QACH,MAAM,IAAI,GAAG,IAAI,UAAU,CACzB,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAChB,IAAI,CAAC,IAAI,CAAC,KAAK,EACf,IAAI,CAAC,WAAW,CACjB,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzB,0BAA0B;QAC1B,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;YAC5C,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACtB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YAC3B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACvD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK;QACH,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO;QACL,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE;gBACtB,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,UAAU,CACR,UAAkB,EAClB,OAAwB,GAAG,EAC3B,OAAgB;QAEhB,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC5C,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;gBAC7B,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,IAAI,OAAO,KAAK,SAAS,EAAE;oBACzB,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;iBAC5B;qBAAM;oBACL,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;wBAC/B,OAAO,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC;qBACvB;iBACF;gBACD,GAAG,IAAI,OAAO,CAAC;aAChB;SACF;IACH,CAAC;IAED,oEAAoE;IAEpE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,aAAa,CACX,UAAkB,EAClB,OAAwB,GAAG;QAE3B,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QAExC,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,yBAAyB;YACzB,MAAM,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;YAC/C,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;SAC1D;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE;YACvB,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,UAAU,GAAG,SAAS,CAAC;gBACvF,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;gBAC9E,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;aAC9B;SACF;aAAM;YACL,qDAAqD;YACrD,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;gBAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,OAAO,GAAG,UAAU,GAAG,GAAG,CAAC;oBAC1F,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;wBAC/B,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;qBACvC;iBACF;aACF;SACF;QAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IACzD,CAAC;IAED;;;;;;;;;;;OAWG;IACH,aAAa,CACX,UAAkB,EAClB,IAAgB,EAChB,OAAwB,GAAG;QAE3B,IAAI,CAAC,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAE1C,IAAI,CAAC,OAAO,EAAE,CAAC;QAEf,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAE1B,IAAI,IAAI,KAAK,GAAG,EAAE;YAChB,yBAAyB;YACzB,MAAM,MAAM,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;YAC/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;SAC9D;aAAM,IAAI,IAAI,KAAK,GAAG,EAAE;YACvB,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,UAAU,GAAG,SAAS,CAAC;gBACvF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC;gBACvE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;aAC9B;SACF;aAAM;YACL,qDAAqD;YACrD,IAAI,GAAG,GAAG,CAAC,CAAC;YACZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;gBAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;gBAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC/B,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,GAAG,OAAO,GAAG,UAAU,GAAG,GAAG,CAAC;oBAC1F,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;wBAC/B,OAAO,CAAC,OAAO,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;qBACrC;iBACF;aACF;SACF;IACH,CAAC;IAED,qEAAqE;IAErE;;;;OAIG;IACK,kBAAkB,CAAC,IAAqB;QAC9C,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3C,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACjC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAChC,iEAAiE;YACjE,mEAAmE;YACnE,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;SAClC;IACH,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CAAC,UAAkB,EAAE,IAAqB;QAClE,MAAM,GAAG,GACP,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC9B,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC/B,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;QAEtB,IAAI,UAAU,GAAG,CAAC,IAAI,UAAU,IAAI,GAAG,EAAE;YACvC,MAAM,IAAI,UAAU,CAClB,eAAe,UAAU,4BAA4B,IAAI,UAAU,GAAG,GAAG,CAAC,GAAG,CAC9E,CAAC;SACH;IACH,CAAC;IAED,qEAAqE;IAErE;;;;;OAKG;IACK,eAAe,CACrB,MAAyB,EACzB,KAAa,EACb,MAAc,EACd,UAAkB,EAClB,IAAqB,EACrB,OAAe;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;gBACtD,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;gBAC7C,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,GAAG,OAAO,CAAC;gBACvC,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;gBACnB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBACvB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC;gBACvB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBACrC,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CACzB,MAAyB,EACzB,KAAa,EACb,MAAc,EACd,UAAkB,EAClB,IAAqB,EACrB,OAAe,EACf,QAAyB,EACzB,OAAe;;QAEf,MAAM,KAAK,GAAG,MAAA,QAAQ,CAAC,OAAO,CAAC,mCAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAC1D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;gBACtD,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;gBAC7C,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,GAAG,OAAO,CAAC;gBACvC,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,KAAK,GAAG,CAAC,EAAE;oBACb,MAAM,SAAS,GAAG,KAAK,GAAG,GAAG,CAAC;oBAC9B,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACrB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;oBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;iBAC5D;qBAAM;oBACL,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACpB;gBACD,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED;;;;OAIG;IACK,kBAAkB,CACxB,MAAyB,EACzB,KAAa,EACb,MAAc,EACd,UAAkB,EAClB,IAAqB,EACrB,QAAyB,EACzB,eAA0B,EAC1B,OAAe;;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC5C,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;gBAC7B,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC9B,IAAI,KAAK,GAAG,KAAK,CAAC;gBAElB,yDAAyD;gBACzD,KAAK,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE;oBACpC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;wBAAE,SAAS;oBAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;oBAC7B,IAAI,KAAK,GAAG,CAAC,EAAE;wBACb,MAAM,KAAK,GAAG,MAAA,MAAA,QAAQ,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;wBAChF,MAAM,SAAS,GAAG,KAAK,GAAG,GAAG,CAAC;wBAC9B,MAAM,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;wBACrB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;wBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;wBACzB,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,CAAC;wBAC3D,KAAK,GAAG,IAAI,CAAC;wBACb,MAAM;qBACP;iBACF;gBAED,IAAI,CAAC,KAAK,EAAE;oBACV,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACpB;gBAED,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;IAED;;;;;OAKG;IACK,aAAa,CACnB,MAAyB,EACzB,KAAa,EACb,MAAc,EACd,UAAkB,EAClB,IAAqB,EACrB,QAAyB,EACzB,eAA0B,EAC1B,OAAe;;QAEf,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QACxC,IAAI,SAAiB,CAAC;QACtB,IAAI,OAAe,CAAC;QACpB,IAAI,OAAe,CAAC;QACpB,QAAQ,IAAI,EAAE;YACZ,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC5C,OAAO,GAAG,SAAS,CAAC;gBACpB,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;gBACnC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7B,OAAO,GAAG,GAAG,CAAC;gBACd,MAAM;YACR,kEAAkE;YAClE,KAAK,GAAG;gBACN,SAAS,GAAG,UAAU,GAAG,GAAG,CAAC;gBAC7B,OAAO,GAAG,SAAS,CAAC,CAAW,QAAQ;gBACvC,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC,CAAE,QAAQ;gBACvC,MAAM;SACT;QAED,IAAI,EAAE,GAAG,CAAC,CAAC;QACX,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,EAAE,CAAC,EAAE,EAAE;YAC/B,IAAI,GAAG,GAAG,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;YAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE;gBAC9B,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,MAAM,GAAG,CAAC,CAAC;gBACf,IAAI,MAAM,GAAG,CAAC,CAAC;gBAEf,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE,EAAE;oBAC/B,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;wBAAE,SAAS;oBAEnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;oBAC7B,IAAI,KAAK,GAAG,CAAC,EAAE;wBACb,MAAM,KAAK,GAAG,MAAA,MAAA,QAAQ,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,EAAE,CAAC,mCAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC;wBAChF,MAAM,SAAS,GAAG,KAAK,GAAG,GAAG,CAAC;wBAC9B,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC;wBAEpD,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC,CAAC,GAAG,KAAK,CAAC;wBAC1B,MAAM,IAAI,KAAK,CAAC;qBACjB;iBACF;gBAED,IAAI,MAAM,GAAG,CAAC,EAAE;oBACd,MAAM,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC/C,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnD,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;oBACnD,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC;iBAC1D;qBAAM;oBACL,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;iBACpB;gBAED,GAAG,IAAI,OAAO,CAAC;gBACf,EAAE,IAAI,CAAC,CAAC;aACT;SACF;IACH,CAAC;CACF"}
@@ -14,7 +14,30 @@ export class ZoomTool extends BaseTool {
14
14
  }
15
15
  // ===== Zoom Wheel =====
16
16
  configMouseZoomWheel() {
17
- let moveDistance = 1;
17
+ // Coalesce multiple wheel events fired within one frame into a single
18
+ // resizePaintArea() call via requestAnimationFrame. Each resize triggers
19
+ // a full display redraw (+ mask recomposite), so without coalescing a
20
+ // fast scroll fires dozens of these per frame. The accumulation is done
21
+ // on the logical zoom (sizeFactor) — not the DOM offsetWidth — so deltas
22
+ // still compound correctly even though the DOM size hasn't updated yet.
23
+ let rafId = null;
24
+ let pending = null;
25
+ const flush = () => {
26
+ rafId = null;
27
+ if (!pending)
28
+ return;
29
+ const p = pending;
30
+ pending = null;
31
+ if (p.recenter) {
32
+ this.callbacks.resetPaintAreaUIPosition();
33
+ }
34
+ else {
35
+ this.callbacks.resetPaintAreaUIPosition(p.l, p.t);
36
+ }
37
+ this.callbacks.resizePaintArea(p.moveDistance);
38
+ this.callbacks.setIsDrawFalse(1000);
39
+ this.ctx.nrrd_states.view.sizeFactor = p.moveDistance;
40
+ };
18
41
  return (e) => {
19
42
  var _a, _b;
20
43
  if ((_a = this.ctx.eventRouter) === null || _a === void 0 ? void 0 : _a.isShiftHeld()) {
@@ -29,36 +52,38 @@ export class ZoomTool extends BaseTool {
29
52
  const delta = e.detail ? e.detail > 0 : e.wheelDelta < 0;
30
53
  this.ctx.protectedData.isDrawing = true;
31
54
  const rect = this.container.getBoundingClientRect();
32
- const ratioL = (e.clientX -
33
- rect.left -
34
- this.mainAreaContainer.offsetLeft -
35
- this.ctx.protectedData.canvases.drawingCanvas.offsetLeft) /
36
- this.ctx.protectedData.canvases.drawingCanvas.offsetWidth;
37
- const ratioT = (e.clientY -
38
- rect.top -
39
- this.mainAreaContainer.offsetTop -
40
- this.ctx.protectedData.canvases.drawingCanvas.offsetTop) /
41
- this.ctx.protectedData.canvases.drawingCanvas.offsetHeight;
55
+ const drawingCanvas = this.ctx.protectedData.canvases.drawingCanvas;
56
+ const ratioL = (e.clientX - rect.left - this.mainAreaContainer.offsetLeft - drawingCanvas.offsetLeft) /
57
+ drawingCanvas.offsetWidth;
58
+ const ratioT = (e.clientY - rect.top - this.mainAreaContainer.offsetTop - drawingCanvas.offsetTop) /
59
+ drawingCanvas.offsetHeight;
42
60
  const ratioDelta = !delta ? 1 + 0.1 : 1 - 0.1;
43
- const w = this.ctx.protectedData.canvases.drawingCanvas.offsetWidth * ratioDelta;
44
- const h = this.ctx.protectedData.canvases.drawingCanvas.offsetHeight * ratioDelta;
45
- const l = Math.round(e.clientX - this.mainAreaContainer.offsetLeft - w * ratioL - rect.left);
46
- const t = Math.round(e.clientY - this.mainAreaContainer.offsetTop - h * ratioT - rect.top);
47
- moveDistance = w / this.ctx.nrrd_states.image.originWidth;
61
+ // Compound from the latest pending target (this frame) or the current
62
+ // committed sizeFactor.
63
+ const base = pending ? pending.moveDistance : this.ctx.nrrd_states.view.sizeFactor;
64
+ let moveDistance = base * ratioDelta;
48
65
  if (moveDistance > 8) {
66
+ // Max zoom: original behaviour clamps without re-laying out.
49
67
  moveDistance = 8;
68
+ this.ctx.nrrd_states.view.sizeFactor = moveDistance;
69
+ this.callbacks.setIsDrawFalse(1000);
70
+ return;
50
71
  }
51
- else if (moveDistance < 1) {
72
+ if (moveDistance < 1) {
52
73
  moveDistance = 1;
53
- this.callbacks.resetPaintAreaUIPosition();
54
- this.callbacks.resizePaintArea(moveDistance);
74
+ pending = { moveDistance, l: 0, t: 0, recenter: true };
55
75
  }
56
76
  else {
57
- this.callbacks.resetPaintAreaUIPosition(l, t);
58
- this.callbacks.resizePaintArea(moveDistance);
77
+ // Target displayed size for this zoom level → keep cursor anchored.
78
+ const w = this.ctx.nrrd_states.image.originWidth * moveDistance;
79
+ const h = this.ctx.nrrd_states.image.originHeight * moveDistance;
80
+ const l = Math.round(e.clientX - this.mainAreaContainer.offsetLeft - w * ratioL - rect.left);
81
+ const t = Math.round(e.clientY - this.mainAreaContainer.offsetTop - h * ratioT - rect.top);
82
+ pending = { moveDistance, l, t, recenter: false };
83
+ }
84
+ if (rafId === null) {
85
+ rafId = requestAnimationFrame(flush);
59
86
  }
60
- this.callbacks.setIsDrawFalse(1000);
61
- this.ctx.nrrd_states.view.sizeFactor = moveDistance;
62
87
  };
63
88
  }
64
89
  }