@memlab/mcp-server 2.3.0 → 2.52.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 (205) hide show
  1. package/README.md +18 -14
  2. package/bin/.eslintrc.js +26 -0
  3. package/bin/memlab-cli.js +313 -0
  4. package/dist/artifact-classes.d.ts +86 -0
  5. package/dist/artifact-classes.d.ts.map +1 -0
  6. package/dist/artifact-classes.js +261 -0
  7. package/dist/artifact-classes.js.map +1 -0
  8. package/dist/capture-mode.d.ts +60 -0
  9. package/dist/capture-mode.d.ts.map +1 -0
  10. package/dist/capture-mode.js +39 -0
  11. package/dist/capture-mode.js.map +1 -0
  12. package/dist/guardrail.d.ts.map +1 -1
  13. package/dist/guardrail.js +13 -0
  14. package/dist/guardrail.js.map +1 -1
  15. package/dist/heap-state.d.ts +96 -2
  16. package/dist/heap-state.d.ts.map +1 -1
  17. package/dist/heap-state.js +197 -2
  18. package/dist/heap-state.js.map +1 -1
  19. package/dist/index.js +41 -1
  20. package/dist/index.js.map +1 -1
  21. package/dist/progress.d.ts +25 -0
  22. package/dist/progress.d.ts.map +1 -0
  23. package/dist/progress.js +46 -0
  24. package/dist/progress.js.map +1 -0
  25. package/dist/result-handles.d.ts +11 -0
  26. package/dist/result-handles.d.ts.map +1 -0
  27. package/dist/result-handles.js +77 -0
  28. package/dist/result-handles.js.map +1 -0
  29. package/dist/string-index.d.ts +55 -0
  30. package/dist/string-index.d.ts.map +1 -0
  31. package/dist/string-index.js +91 -0
  32. package/dist/string-index.js.map +1 -0
  33. package/dist/tool-registry.d.ts +42 -0
  34. package/dist/tool-registry.d.ts.map +1 -0
  35. package/dist/tool-registry.js +20 -0
  36. package/dist/tool-registry.js.map +1 -0
  37. package/dist/tools/analyze-run.d.ts +12 -0
  38. package/dist/tools/analyze-run.d.ts.map +1 -0
  39. package/dist/tools/analyze-run.js +343 -0
  40. package/dist/tools/analyze-run.js.map +1 -0
  41. package/dist/tools/app-heap.d.ts +12 -0
  42. package/dist/tools/app-heap.d.ts.map +1 -0
  43. package/dist/tools/app-heap.js +140 -0
  44. package/dist/tools/app-heap.js.map +1 -0
  45. package/dist/tools/auto-investigate.d.ts.map +1 -1
  46. package/dist/tools/auto-investigate.js +91 -49
  47. package/dist/tools/auto-investigate.js.map +1 -1
  48. package/dist/tools/batch.d.ts +12 -0
  49. package/dist/tools/batch.d.ts.map +1 -0
  50. package/dist/tools/batch.js +168 -0
  51. package/dist/tools/batch.js.map +1 -0
  52. package/dist/tools/cache-analysis.d.ts.map +1 -1
  53. package/dist/tools/cache-analysis.js +156 -5
  54. package/dist/tools/cache-analysis.js.map +1 -1
  55. package/dist/tools/class-histogram.d.ts.map +1 -1
  56. package/dist/tools/class-histogram.js +14 -3
  57. package/dist/tools/class-histogram.js.map +1 -1
  58. package/dist/tools/collection-trend.d.ts +55 -0
  59. package/dist/tools/collection-trend.d.ts.map +1 -0
  60. package/dist/tools/collection-trend.js +315 -0
  61. package/dist/tools/collection-trend.js.map +1 -0
  62. package/dist/tools/detached-dom.d.ts +2 -0
  63. package/dist/tools/detached-dom.d.ts.map +1 -1
  64. package/dist/tools/detached-dom.js +291 -20
  65. package/dist/tools/detached-dom.js.map +1 -1
  66. package/dist/tools/dev-artifacts.d.ts +62 -6
  67. package/dist/tools/dev-artifacts.d.ts.map +1 -1
  68. package/dist/tools/dev-artifacts.js +466 -23
  69. package/dist/tools/dev-artifacts.js.map +1 -1
  70. package/dist/tools/diff-snapshots.d.ts.map +1 -1
  71. package/dist/tools/diff-snapshots.js +101 -44
  72. package/dist/tools/diff-snapshots.js.map +1 -1
  73. package/dist/tools/dominator-attribution.d.ts +12 -0
  74. package/dist/tools/dominator-attribution.d.ts.map +1 -0
  75. package/dist/tools/dominator-attribution.js +189 -0
  76. package/dist/tools/dominator-attribution.js.map +1 -0
  77. package/dist/tools/dominator-chain.d.ts +12 -0
  78. package/dist/tools/dominator-chain.d.ts.map +1 -0
  79. package/dist/tools/dominator-chain.js +92 -0
  80. package/dist/tools/dominator-chain.js.map +1 -0
  81. package/dist/tools/duplicate-objects.d.ts +12 -0
  82. package/dist/tools/duplicate-objects.d.ts.map +1 -0
  83. package/dist/tools/duplicate-objects.js +172 -0
  84. package/dist/tools/duplicate-objects.js.map +1 -0
  85. package/dist/tools/duplicated-strings.d.ts.map +1 -1
  86. package/dist/tools/duplicated-strings.js +46 -38
  87. package/dist/tools/duplicated-strings.js.map +1 -1
  88. package/dist/tools/eval.d.ts +1 -0
  89. package/dist/tools/eval.d.ts.map +1 -1
  90. package/dist/tools/eval.js +787 -30
  91. package/dist/tools/eval.js.map +1 -1
  92. package/dist/tools/explain-delta.d.ts +12 -0
  93. package/dist/tools/explain-delta.d.ts.map +1 -0
  94. package/dist/tools/explain-delta.js +170 -0
  95. package/dist/tools/explain-delta.js.map +1 -0
  96. package/dist/tools/find-nodes-by-class.d.ts.map +1 -1
  97. package/dist/tools/find-nodes-by-class.js +112 -13
  98. package/dist/tools/find-nodes-by-class.js.map +1 -1
  99. package/dist/tools/finding-index.d.ts +22 -0
  100. package/dist/tools/finding-index.d.ts.map +1 -0
  101. package/dist/tools/finding-index.js +247 -0
  102. package/dist/tools/finding-index.js.map +1 -0
  103. package/dist/tools/for-each.d.ts.map +1 -1
  104. package/dist/tools/for-each.js +15 -3
  105. package/dist/tools/for-each.js.map +1 -1
  106. package/dist/tools/get-references.d.ts.map +1 -1
  107. package/dist/tools/get-references.js +35 -6
  108. package/dist/tools/get-references.js.map +1 -1
  109. package/dist/tools/get-referrers.d.ts.map +1 -1
  110. package/dist/tools/get-referrers.js +52 -6
  111. package/dist/tools/get-referrers.js.map +1 -1
  112. package/dist/tools/hunt-report.d.ts +12 -0
  113. package/dist/tools/hunt-report.d.ts.map +1 -0
  114. package/dist/tools/hunt-report.js +186 -0
  115. package/dist/tools/hunt-report.js.map +1 -0
  116. package/dist/tools/hypothesis.d.ts +12 -0
  117. package/dist/tools/hypothesis.d.ts.map +1 -0
  118. package/dist/tools/hypothesis.js +221 -0
  119. package/dist/tools/hypothesis.js.map +1 -0
  120. package/dist/tools/intern-opportunities.d.ts.map +1 -1
  121. package/dist/tools/intern-opportunities.js +721 -75
  122. package/dist/tools/intern-opportunities.js.map +1 -1
  123. package/dist/tools/ladder.d.ts +33 -0
  124. package/dist/tools/ladder.d.ts.map +1 -0
  125. package/dist/tools/ladder.js +266 -0
  126. package/dist/tools/ladder.js.map +1 -0
  127. package/dist/tools/largest-objects.d.ts.map +1 -1
  128. package/dist/tools/largest-objects.js +43 -16
  129. package/dist/tools/largest-objects.js.map +1 -1
  130. package/dist/tools/leak-report.d.ts +12 -0
  131. package/dist/tools/leak-report.d.ts.map +1 -0
  132. package/dist/tools/leak-report.js +256 -0
  133. package/dist/tools/leak-report.js.map +1 -0
  134. package/dist/tools/load-snapshot.d.ts +78 -0
  135. package/dist/tools/load-snapshot.d.ts.map +1 -1
  136. package/dist/tools/load-snapshot.js +519 -29
  137. package/dist/tools/load-snapshot.js.map +1 -1
  138. package/dist/tools/map-entries.d.ts +12 -0
  139. package/dist/tools/map-entries.d.ts.map +1 -0
  140. package/dist/tools/map-entries.js +139 -0
  141. package/dist/tools/map-entries.js.map +1 -0
  142. package/dist/tools/match-object.d.ts +12 -0
  143. package/dist/tools/match-object.d.ts.map +1 -0
  144. package/dist/tools/match-object.js +165 -0
  145. package/dist/tools/match-object.js.map +1 -0
  146. package/dist/tools/object-shape.d.ts.map +1 -1
  147. package/dist/tools/object-shape.js +92 -30
  148. package/dist/tools/object-shape.js.map +1 -1
  149. package/dist/tools/population-diff.d.ts +57 -0
  150. package/dist/tools/population-diff.d.ts.map +1 -0
  151. package/dist/tools/population-diff.js +338 -0
  152. package/dist/tools/population-diff.js.map +1 -0
  153. package/dist/tools/quick-diagnosis.d.ts.map +1 -1
  154. package/dist/tools/quick-diagnosis.js +12 -4
  155. package/dist/tools/quick-diagnosis.js.map +1 -1
  156. package/dist/tools/retainer-layers.d.ts +23 -0
  157. package/dist/tools/retainer-layers.d.ts.map +1 -0
  158. package/dist/tools/retainer-layers.js +179 -0
  159. package/dist/tools/retainer-layers.js.map +1 -0
  160. package/dist/tools/retainer-summary.d.ts +1 -0
  161. package/dist/tools/retainer-summary.d.ts.map +1 -1
  162. package/dist/tools/retainer-summary.js +128 -32
  163. package/dist/tools/retainer-summary.js.map +1 -1
  164. package/dist/tools/retainer-trace.d.ts.map +1 -1
  165. package/dist/tools/retainer-trace.js +105 -25
  166. package/dist/tools/retainer-trace.js.map +1 -1
  167. package/dist/tools/search-nodes.d.ts.map +1 -1
  168. package/dist/tools/search-nodes.js +5 -1
  169. package/dist/tools/search-nodes.js.map +1 -1
  170. package/dist/tools/search-strings.d.ts.map +1 -1
  171. package/dist/tools/search-strings.js +53 -7
  172. package/dist/tools/search-strings.js.map +1 -1
  173. package/dist/tools/sequence-analysis.d.ts +49 -0
  174. package/dist/tools/sequence-analysis.d.ts.map +1 -1
  175. package/dist/tools/sequence-analysis.js +268 -78
  176. package/dist/tools/sequence-analysis.js.map +1 -1
  177. package/dist/tools/shape-histogram.d.ts.map +1 -1
  178. package/dist/tools/shape-histogram.js +9 -2
  179. package/dist/tools/shape-histogram.js.map +1 -1
  180. package/dist/tools/sliced-strings.d.ts.map +1 -1
  181. package/dist/tools/sliced-strings.js +22 -4
  182. package/dist/tools/sliced-strings.js.map +1 -1
  183. package/dist/tools/snapshot-header.d.ts +28 -0
  184. package/dist/tools/snapshot-header.d.ts.map +1 -0
  185. package/dist/tools/snapshot-header.js +111 -0
  186. package/dist/tools/snapshot-header.js.map +1 -0
  187. package/dist/tools/string-patterns.d.ts.map +1 -1
  188. package/dist/tools/string-patterns.js +5 -4
  189. package/dist/tools/string-patterns.js.map +1 -1
  190. package/dist/tools/tools-index.d.ts +12 -0
  191. package/dist/tools/tools-index.d.ts.map +1 -0
  192. package/dist/tools/tools-index.js +342 -0
  193. package/dist/tools/tools-index.js.map +1 -0
  194. package/dist/tools/verify-fix.d.ts +23 -0
  195. package/dist/tools/verify-fix.d.ts.map +1 -0
  196. package/dist/tools/verify-fix.js +211 -0
  197. package/dist/tools/verify-fix.js.map +1 -0
  198. package/dist/tools/weakmap-entries.d.ts.map +1 -1
  199. package/dist/tools/weakmap-entries.js +6 -1
  200. package/dist/tools/weakmap-entries.js.map +1 -1
  201. package/dist/utils.d.ts +204 -1
  202. package/dist/utils.d.ts.map +1 -1
  203. package/dist/utils.js +478 -8
  204. package/dist/utils.js.map +1 -1
  205. package/package.json +5 -4
package/dist/utils.js CHANGED
@@ -7,7 +7,7 @@
7
7
  * @format
8
8
  * @oncall memory_lab
9
9
  */
10
- import { getSnapshotMetadata, getSessionConfig, shouldEmitHeader, } from './heap-state.js';
10
+ import { getSnapshotMetadata, getSessionConfig, isLightSnapshot, shouldEmitHeader, } from './heap-state.js';
11
11
  // ScanTimeoutError / makeScanBudget moved to analysis-budget.ts (shared, no
12
12
  // import cycle). Re-exported here so existing `from '../utils.js'` imports in
13
13
  // the tools keep working unchanged.
@@ -59,6 +59,36 @@ export function truncateDomToTag(name) {
59
59
  }
60
60
  return `${detached}<${tag}>`;
61
61
  }
62
+ // Marker left in place of elided C++ template arguments. Distinctive enough to
63
+ // detect when rendering a legend, and short enough to be worth the swap.
64
+ export const BLINK_TEMPLATE_ELISION = '<…>';
65
+ // A Blink/cppgc type name carries its whole template instantiation, and one hop
66
+ // of a retainer trace can be 400+ tokens of
67
+ // `blink::HeapHashTableBacking<blink::HashTable<cppgc::internal::BasicMember<…>>>`.
68
+ // The information a reader acts on is the OUTER type; the arguments are noise
69
+ // that crowds out the rest of the trace. Collapse everything from the first `<`
70
+ // to the matching final `>` into one marker, keeping any suffix after it.
71
+ //
72
+ // Deliberately conservative: only applied to `::`-qualified C++ names (so a JS
73
+ // class that happens to contain `<` is untouched), and only when the name is
74
+ // long enough for the elision to be worth it — abbreviating
75
+ // `blink::Foo<Bar>` into something barely shorter just costs information.
76
+ const CPP_TEMPLATE_MIN_LEN = 48;
77
+ export function abbreviateBlinkTypeName(name) {
78
+ if (name.length < CPP_TEMPLATE_MIN_LEN)
79
+ return name;
80
+ if (!name.includes('::') || !name.includes('<'))
81
+ return name;
82
+ const open = name.indexOf('<');
83
+ const close = name.lastIndexOf('>');
84
+ if (close <= open)
85
+ return name;
86
+ const head = name.slice(0, open);
87
+ const tail = name.slice(close + 1);
88
+ const abbreviated = `${head}${BLINK_TEMPLATE_ELISION}${tail}`;
89
+ // Never let the "abbreviation" be longer than what it replaced.
90
+ return abbreviated.length < name.length ? abbreviated : name;
91
+ }
62
92
  export function truncateNodeName(name, type, selfSize, maxLen = 150, aggressiveDom = false) {
63
93
  if (type === 'string' ||
64
94
  type === 'concatenated string' ||
@@ -83,9 +113,10 @@ export function truncateNodeName(name, type, selfSize, maxLen = 150, aggressiveD
83
113
  }
84
114
  return name;
85
115
  }
86
- if (name.length <= maxLen)
87
- return name;
88
- return `${name.slice(0, maxLen)}…`;
116
+ const abbreviated = abbreviateBlinkTypeName(name);
117
+ if (abbreviated.length <= maxLen)
118
+ return abbreviated;
119
+ return `${abbreviated.slice(0, maxLen)}…`;
89
120
  }
90
121
  export function serializeNodeSummary(node) {
91
122
  return {
@@ -153,11 +184,21 @@ const NODE_NAME_BLOCK_LIST = new Set([
153
184
  '(External strings)',
154
185
  '(Builtins)',
155
186
  ]);
156
- export function isNodeWorthInspecting(node) {
187
+ /**
188
+ * Whether a node is worth showing in a default "interesting objects" listing.
189
+ *
190
+ * `NODE_TYPE_BLOCK_LIST` exists to keep noise out of the DEFAULT view — it is not
191
+ * meant to make those types unreachable. When a caller explicitly asks for one
192
+ * of them (e.g. `largest_objects({node_type: 'array'})`), honour the request:
193
+ * otherwise the filter silently returns zero rows for `array`, `native`, `code`,
194
+ * `synthetic` and `hidden`, which reads as "there are none" on a heap that
195
+ * plainly contains 100k+ of them.
196
+ */
197
+ export function isNodeWorthInspecting(node, opts) {
157
198
  if (node.id <= 3) {
158
199
  return false;
159
200
  }
160
- if (NODE_TYPE_BLOCK_LIST.has(node.type)) {
201
+ if (!opts?.allowBlockedTypes && NODE_TYPE_BLOCK_LIST.has(node.type)) {
161
202
  return false;
162
203
  }
163
204
  if (NODE_NAME_BLOCK_LIST.has(node.name)) {
@@ -248,6 +289,56 @@ export function filterLargestObjects(snapshot, filter, limit) {
248
289
  });
249
290
  return result;
250
291
  }
292
+ /**
293
+ * Collapse heap nodes that are merely different VIEWS of the same dominator
294
+ * subtree (e.g. on a single in-flight request: Client → Request → closure →
295
+ * Promise → Context → Map all reporting the SAME retained size). Without this,
296
+ * `largest_objects` returns ~20 rows that are all one subtree — pure noise and
297
+ * wasted tokens (feedback §A.2).
298
+ *
299
+ * Two nodes are treated as the same subtree ONLY when (a) their retained sizes
300
+ * are within `epsilon` of each other AND (b) one dominates the other within a
301
+ * bounded dominator walk — so unrelated objects that merely share a byte count
302
+ * are never collapsed. `candidates` must be pre-sorted by retained size desc;
303
+ * the highest dominator (ancestor) is kept as the representative, annotated with
304
+ * `mergedCount` = how many views were folded into it.
305
+ */
306
+ export function collapseDominatorSubtrees(candidates, limit, opts = {}) {
307
+ const epsilon = opts.epsilon ?? 0.99;
308
+ const maxWalk = opts.maxWalk ?? 200;
309
+ const dominates = (ancestor, n) => {
310
+ let cur = n.dominatorNode ?? null;
311
+ let steps = 0;
312
+ while (cur && steps++ < maxWalk) {
313
+ if (cur.id === ancestor.id)
314
+ return true;
315
+ cur = cur.dominatorNode ?? null;
316
+ }
317
+ return false;
318
+ };
319
+ const kept = [];
320
+ for (const c of candidates) {
321
+ let merged = false;
322
+ for (const k of kept) {
323
+ const lo = Math.min(c.retainedSize, k.node.retainedSize);
324
+ const hi = Math.max(c.retainedSize, k.node.retainedSize);
325
+ const nearEqual = hi > 0 && lo / hi >= epsilon;
326
+ if (nearEqual && (dominates(k.node, c) || dominates(c, k.node))) {
327
+ // Same subtree: prefer the higher (ancestor) node as the representative.
328
+ if (dominates(c, k.node)) {
329
+ k.node = c;
330
+ }
331
+ k.mergedCount++;
332
+ merged = true;
333
+ break;
334
+ }
335
+ }
336
+ if (!merged) {
337
+ kept.push({ node: c, mergedCount: 0 });
338
+ }
339
+ }
340
+ return kept.slice(0, limit);
341
+ }
251
342
  export function queryNodes(snapshot, filter, opts) {
252
343
  const { limit, offset, outputMode, budget } = opts;
253
344
  let timedOut = false;
@@ -363,6 +454,159 @@ export function boundedDominatorRetainedSize(ids, snapshot, maxWalk = 500) {
363
454
  }
364
455
  return { retained, exact };
365
456
  }
457
+ /**
458
+ * Collect the object-valued slots of a Map/Set/WeakMap backing store, sorted by
459
+ * their true FixedArray slot index.
460
+ *
461
+ * V8 stores entries in an OrderedHashMap/OrderedHashSet reachable via the
462
+ * `table` (or `backing_store`) edge. Browser (Chromium) snapshots type the
463
+ * key/value slot edges as `internal` with a numeric name (the array index);
464
+ * Node snapshots type them `element`. The header counts and hash-chain links are
465
+ * inline SMIs, which emit NO edge at all — so the slot indices are NOT
466
+ * contiguous, and the GAPS are meaningful (they mark SMI-valued or deleted
467
+ * slots). Returning the slots WITH their indices lets callers pair by index
468
+ * instead of by position, which is what makes the pairing correct when some
469
+ * values are SMIs (see `enumerateMapEntries`).
470
+ */
471
+ export function collectBackingSlots(node) {
472
+ const out = [];
473
+ for (const edge of node.references) {
474
+ const eName = String(edge.name_or_index);
475
+ if (eName !== 'table' && eName !== 'backing_store')
476
+ continue;
477
+ const backing = edge.toNode;
478
+ for (const te of backing.references) {
479
+ // Skip the backing store's hidden-class pointer and any hidden edges; the
480
+ // remaining element/internal edges are the real key/value slots.
481
+ if (te.type === 'hidden' || String(te.name_or_index) === 'map')
482
+ continue;
483
+ const idx = Number(te.name_or_index);
484
+ if (!Number.isFinite(idx))
485
+ continue;
486
+ const target = te.toNode;
487
+ // `the_hole` marks a deleted/empty backing-store slot; oddball roots
488
+ // (id<=3) are not real entries. Do NOT skip `undefined`: an explicit
489
+ // `undefined` value/element is a real entry, and dropping it would make it
490
+ // indistinguishable from an inline-primitive gap (mis-reported as absent).
491
+ if (target.id <= 3 || target.name === 'the_hole') {
492
+ continue;
493
+ }
494
+ out.push({ idx, node: target });
495
+ }
496
+ break;
497
+ }
498
+ out.sort((a, b) => a.idx - b.idx);
499
+ return out;
500
+ }
501
+ /**
502
+ * Enumerate a Map/WeakMap's (key, value) entries.
503
+ *
504
+ * V8 lays each entry out as consecutive slots `[key, value, chain]` (the chain
505
+ * link is an inline SMI, so it emits no edge). We therefore pair a key with the
506
+ * value in the immediately-following slot INDEX (`key.idx + 1`). When no slot
507
+ * exists at `key.idx + 1`, the value was an inline SMI/primitive and we emit
508
+ * `value: null` — instead of mispairing the key with the NEXT entry's key, which
509
+ * is what naive "consecutive object edges = key,value" pairing does whenever a
510
+ * Map has SMI values (a real correctness bug on browser heaps).
511
+ */
512
+ export function enumerateMapEntries(node) {
513
+ const slots = collectBackingSlots(node);
514
+ const entries = [];
515
+ let i = 0;
516
+ while (i < slots.length) {
517
+ const key = slots[i];
518
+ const next = slots[i + 1];
519
+ if (next && next.idx === key.idx + 1) {
520
+ entries.push({ key: key.node, value: next.node });
521
+ i += 2;
522
+ }
523
+ else {
524
+ // Value slot absent at key.idx+1 → the value was an inline SMI/primitive.
525
+ entries.push({ key: key.node, value: null });
526
+ i += 1;
527
+ }
528
+ }
529
+ return entries;
530
+ }
531
+ /** Enumerate a Set's elements (every occupied backing-store slot). */
532
+ export function enumerateSetElements(node) {
533
+ return collectBackingSlots(node).map(s => s.node);
534
+ }
535
+ /**
536
+ * Property names that identify an individual record rather than describe its
537
+ * content — always unique per instance, so INCLUDING them in a content
538
+ * signature defeats duplicate detection (every record looks distinct). Excluded
539
+ * by default from `objectContentSignature`. `id`/`__id`/`__ref` are Relay/GraphQL
540
+ * data-id fields; `key`/`clientMutationId` are common per-instance keys.
541
+ */
542
+ export const IDENTITY_PROPS = new Set([
543
+ 'id',
544
+ '__id',
545
+ '__ref',
546
+ 'key',
547
+ 'clientMutationId',
548
+ ]);
549
+ /**
550
+ * A stable, shallow content signature for an object: the sorted set of property
551
+ * names, each annotated with its scalar value (strings capped) or a marker for
552
+ * object/array-valued properties. Two objects with the same signature are
553
+ * structurally identical at one level — the basis for duplicate-record
554
+ * detection (`memlab_duplicate_objects`) and ad-hoc dedup checks in eval.
555
+ *
556
+ * By default per-instance identity fields (`IDENTITY_PROPS`: id/__id/__ref/…) are
557
+ * EXCLUDED so records that differ only by their data-id still collapse together
558
+ * — pass `ignoreProps` to override the set (e.g. `new Set()` to include them).
559
+ *
560
+ * String, boolean, null and object-valued properties are captured (objects
561
+ * generically as `o`, so nested content is not compared).
562
+ *
563
+ * Caveat — numeric values are NOT captured: the V8 heap-snapshot format does not
564
+ * store the actual value of a number field (SMI nodes are `smi number`,
565
+ * heap-numbers are `heap number` — the IEEE-754/int value is not accessible; see
566
+ * `tools/get-value.ts`). A numeric property therefore contributes only a generic
567
+ * `<name>=n` marker, so two objects differing ONLY in a numeric field hash to the
568
+ * same signature and are reported as duplicates. Treat numeric-heavy records
569
+ * accordingly (or compare their values via another tool).
570
+ */
571
+ export function objectContentSignature(node, opts = {}) {
572
+ const maxLen = opts.maxStringLen ?? 40;
573
+ const ignore = opts.ignoreProps ?? IDENTITY_PROPS;
574
+ const parts = [];
575
+ for (const edge of node.references) {
576
+ // Hidden-class ("map") and other internal edges are already excluded by the
577
+ // `edge.type !== 'property'` guard above, so no explicit `map` name skip is
578
+ // needed (it would only hide a legitimate user property literally named "map").
579
+ if (edge.type !== 'property')
580
+ continue;
581
+ const name = String(edge.name_or_index);
582
+ if (name === '__proto__')
583
+ continue;
584
+ if (ignore.has(name))
585
+ continue;
586
+ const t = edge.toNode;
587
+ if (t.isString) {
588
+ const v = t.toStringNode()?.stringValue ?? '';
589
+ parts.push(`${name}=s:${v.length > maxLen ? v.slice(0, maxLen) : v}`);
590
+ }
591
+ else if (t.type === 'number' || t.name === 'heap number') {
592
+ // Numeric values are NOT recoverable from the snapshot format (SMI /
593
+ // heap-number nodes carry no value — see get-value.ts), so we can only
594
+ // record that the property is a number, not distinguish by value.
595
+ parts.push(`${name}=n`);
596
+ }
597
+ else if (t.name === 'true' ||
598
+ t.name === 'false' ||
599
+ t.name === 'null' ||
600
+ t.name === 'undefined') {
601
+ parts.push(`${name}=${t.name}`);
602
+ }
603
+ else {
604
+ parts.push(`${name}=o`);
605
+ }
606
+ }
607
+ parts.sort();
608
+ return parts.join('|');
609
+ }
366
610
  /**
367
611
  * Best-effort detection of which app a Node snapshot came from, by tallying the
368
612
  * `/app(s)/<name>/` segment in bundle paths embedded throughout the heap (string
@@ -477,7 +721,195 @@ export function formatNodeInline(id, name, type, selfSize) {
477
721
  const displayName = selfSize != null ? truncateNodeName(name, type, selfSize, 80) : name;
478
722
  return `@${id} ${displayName} (${type})`;
479
723
  }
724
+ /**
725
+ * Collapse runs of consecutive same-class hops in a retainer path into a single
726
+ * step tagged with `repeatCount`.
727
+ *
728
+ * Linked structures (a React hook update queue's `pending → .next → .next → …`,
729
+ * intrusive lists, promise chains) produce paths that are hundreds of identical
730
+ * `Object → Object → Object` hops long. Rendering every hop costs thousands of
731
+ * tokens and tells the reader nothing the count doesn't: the interesting part is
732
+ * the chain's head, its length, and where it attaches. This keeps the first hop
733
+ * of each run (so the edge into the run is preserved) and folds the rest.
734
+ *
735
+ * Only runs of at least `minRun` are collapsed, so ordinary short paths render
736
+ * exactly as before.
737
+ */
738
+ export function collapseRepeatedRuns(steps, minRun = 3) {
739
+ if (steps.length < minRun)
740
+ return steps;
741
+ const key = (s) => `${s.type}::${s.name}`;
742
+ const out = [];
743
+ // The final step is the node the caller asked about. Never fold it into a
744
+ // run, or the trace stops showing the object under investigation and the
745
+ // "← retained object" marker lands on a summarised run instead.
746
+ const foldLimit = steps.length - 1;
747
+ let i = 0;
748
+ while (i < foldLimit) {
749
+ let j = i + 1;
750
+ while (j < foldLimit && key(steps[j]) === key(steps[i]))
751
+ j++;
752
+ const run = j - i;
753
+ if (run >= minRun) {
754
+ // Keep the first hop (carries the edge into the run) and the last hop's
755
+ // identity is the same class, so one step with a count is lossless enough.
756
+ out.push({ ...steps[i], repeatCount: run });
757
+ }
758
+ else {
759
+ for (let k = i; k < j; k++)
760
+ out.push(steps[k]);
761
+ }
762
+ i = j;
763
+ }
764
+ out.push(steps[foldLimit]);
765
+ return out;
766
+ }
767
+ /**
768
+ * Collapse runs of an identical rendered label, for formatters that have already
769
+ * reduced each hop to a string. Mirrors `collapseRepeatedRuns` for chain-style
770
+ * (`A → B → C`) renderers.
771
+ */
772
+ export function collapseRepeatedLabels(labels, minRun = 3) {
773
+ if (labels.length < minRun)
774
+ return labels;
775
+ const out = [];
776
+ // Mirror collapseRepeatedRuns: the last label is the target, keep it intact.
777
+ const foldLimit = labels.length - 1;
778
+ let i = 0;
779
+ while (i < foldLimit) {
780
+ let j = i + 1;
781
+ while (j < foldLimit && labels[j] === labels[i])
782
+ j++;
783
+ const run = j - i;
784
+ out.push(run >= minRun ? `${labels[i]} ×${run}` : labels[i]);
785
+ for (let k = i + 1; k < j && run < minRun; k++)
786
+ out.push(labels[k]);
787
+ i = j;
788
+ }
789
+ out.push(labels[foldLimit]);
790
+ return out;
791
+ }
792
+ /**
793
+ * One-line note describing what a tool's thresholds excluded from its own
794
+ * output. Printing this everywhere a default threshold exists prevents the
795
+ * failure mode where a tool reports "0" or "none found" and the reader takes it
796
+ * as "there is nothing there", when in fact everything interesting was below the
797
+ * cutoff. (A `dev_artifacts` run reporting `0 B` dev-only — because every
798
+ * console-retained string was under the 512 KB default — nearly landed a
799
+ * measurement artifact in a diff as a production leak.)
800
+ */
801
+ export function describeSkipped(examined, skipped, thresholdLabel) {
802
+ if (skipped <= 0) {
803
+ return `_Examined all ${formatNumber(examined)} candidates; no ${thresholdLabel} filter excluded anything._`;
804
+ }
805
+ return `_Examined ${formatNumber(examined)} candidates; **${formatNumber(skipped)} were skipped by ${thresholdLabel}** and are NOT reflected in the rows above. Lower it if you expect something smaller._`;
806
+ }
807
+ function formatEdgeLabel(name) {
808
+ const trimmed = name.length > 40 ? `${name.slice(0, 39)}…` : name;
809
+ if (/^\d+$/.test(trimmed))
810
+ return `[${trimmed}]`; // array / element index
811
+ if (/^[A-Za-z_$][\w$]*$/.test(trimmed))
812
+ return `.${trimmed}`; // property
813
+ return trimmed; // synthetic edge (e.g. "[entry]", "<symbol>")
814
+ }
815
+ function retainerMarker(i, len) {
816
+ if (i === 0)
817
+ return ' ← GC root';
818
+ if (i === len - 1)
819
+ return ' ← retained object';
820
+ return '';
821
+ }
822
+ /**
823
+ * Deep-trace fallback: a flat "ladder" with a constant left margin. Each node
824
+ * sits at column 0 and a `↓` connector line carries the edge label / elision
825
+ * note between nodes. Reads top→down = "retains", same as the indented tree, but
826
+ * the indentation never grows — so a 20-hop chain still fits an 80-column
827
+ * terminal where the nested tree would push the leaf off the right edge.
828
+ */
829
+ function formatRetainerLadder(steps, showSizes) {
830
+ const lines = [];
831
+ for (let i = 0; i < steps.length; i++) {
832
+ const s = steps[i];
833
+ if (i > 0) {
834
+ // The connector carries the elision note (if any) and the edge that the
835
+ // parent holds this node through — always show the edge when we have it.
836
+ const parts = [' ↓'];
837
+ if (s.collapsedBefore && s.collapsedBefore > 0) {
838
+ parts.push(`… ${s.collapsedNote ?? `${s.collapsedBefore} internal node(s)`} …`);
839
+ }
840
+ if (s.edgeName != null) {
841
+ parts.push(formatEdgeLabel(s.edgeName));
842
+ }
843
+ lines.push(parts.join(' '));
844
+ }
845
+ const size = showSizes && s.retainedSize != null
846
+ ? ` — ${formatBytes(s.retainedSize)}`
847
+ : '';
848
+ const nodeStr = formatNodeInline(s.id, s.name, s.type, s.selfSize);
849
+ const repeat = s.repeatCount && s.repeatCount > 1
850
+ ? ` ×${s.repeatCount} (chain of identical hops)`
851
+ : '';
852
+ lines.push(`${nodeStr}${repeat}${size}${retainerMarker(i, steps.length)}`);
853
+ }
854
+ return lines.join('\n');
855
+ }
856
+ /**
857
+ * Render a retainer path so it reads in a single, unambiguous direction: the GC
858
+ * root is at the top, and **every node is retained by the one above it**. The
859
+ * edge that connects a parent to its child is embedded in the connector
860
+ * (`└─ .prop →` / `└─ [2] →`, ladder: `↓ .prop`), and sizes as `— <bytes>`.
861
+ *
862
+ * Shallow chains use a nested indented tree (one indent level = one hop).
863
+ * **Deep chains automatically switch to a flat `↓` ladder** (controlled by
864
+ * `maxTreeDepth`, default 8) so growing indentation never pushes the leaf node
865
+ * off the right edge of a narrow terminal.
866
+ *
867
+ * This deliberately avoids the older inline style that mixed `←` (retained-by)
868
+ * and `→` (references) arrows on the same line, which made the direction of a
869
+ * trace genuinely hard to read in analysis output and diff summaries. Always
870
+ * prefer this renderer when presenting a retainer chain to a human.
871
+ */
872
+ export function formatRetainerTree(steps, opts = {}) {
873
+ const { showSizes = true, maxTreeDepth = 8 } = opts;
874
+ if (steps.length === 0)
875
+ return '';
876
+ // Past this depth the nested indentation gets too wide for a narrow terminal,
877
+ // so fall back to the constant-margin ladder (user feedback).
878
+ if (steps.length > maxTreeDepth) {
879
+ return formatRetainerLadder(steps, showSizes);
880
+ }
881
+ const lines = [];
882
+ for (let i = 0; i < steps.length; i++) {
883
+ const s = steps[i];
884
+ const isRoot = i === 0;
885
+ const pad = isRoot ? '' : ' '.repeat(2 + 3 * (i - 1));
886
+ if (s.collapsedBefore && s.collapsedBefore > 0) {
887
+ lines.push(`${pad}└─ … ${s.collapsedNote ?? `${s.collapsedBefore} internal node(s)`} …`);
888
+ }
889
+ // Embed the edge the parent holds this node through directly in the
890
+ // connector (`└─ .prop →`, `└─ [2] →`) — it's the most actionable part of
891
+ // the trace, and keeping it on the connector reads as "parent --edge--> child".
892
+ const connector = isRoot
893
+ ? ''
894
+ : s.edgeName != null
895
+ ? `└─ ${formatEdgeLabel(s.edgeName)} → `
896
+ : '└─ ';
897
+ const size = showSizes && s.retainedSize != null
898
+ ? ` — ${formatBytes(s.retainedSize)}`
899
+ : '';
900
+ const nodeStr = formatNodeInline(s.id, s.name, s.type, s.selfSize);
901
+ const repeat = s.repeatCount && s.repeatCount > 1
902
+ ? ` ×${s.repeatCount} (chain of identical hops)`
903
+ : '';
904
+ lines.push(`${pad}${connector}${nodeStr}${repeat}${size}${retainerMarker(i, steps.length)}`);
905
+ }
906
+ return lines.join('\n');
907
+ }
480
908
  export function formatNodeSummaryTable(nodes) {
909
+ // On a light load there is no dominator pass, so every `retainedSize` reads
910
+ // 0. Printing "0 B" in a Retained Size column is a wrong answer wearing the
911
+ // costume of a right one; say the number does not exist instead.
912
+ const light = isLightSnapshot();
481
913
  const headers = ['ID', 'Name', 'Type', 'Self Size', 'Retained Size'];
482
914
  const rightCols = new Set([3, 4]);
483
915
  const rows = nodes.map(n => [
@@ -485,9 +917,22 @@ export function formatNodeSummaryTable(nodes) {
485
917
  n.name,
486
918
  n.type,
487
919
  formatBytes(n.self_size),
488
- formatBytes(n.retained_size),
920
+ light ? 'n/a (light)' : formatBytes(n.retained_size),
489
921
  ]);
490
- return markdownTable(headers, rows, rightCols);
922
+ return markdownTable(headers, rows, rightCols) + blinkLegend(rows.flat());
923
+ }
924
+ /**
925
+ * Legend for elided C++ template arguments, emitted only when something in the
926
+ * rendered output actually carries the marker — an unconditional legend is the
927
+ * same token tax the abbreviation exists to remove.
928
+ */
929
+ export function blinkLegend(rendered) {
930
+ for (const cell of rendered) {
931
+ if (typeof cell === 'string' && cell.includes(BLINK_TEMPLATE_ELISION)) {
932
+ return `\n\n_\`${BLINK_TEMPLATE_ELISION}\` = C++ template arguments elided; the outer type is what identifies the object. Use \`memlab_get_node\` for the full instantiated name._`;
933
+ }
934
+ }
935
+ return '';
491
936
  }
492
937
  export function formatQueryNodesResult(result, offset) {
493
938
  const partial = result.timed_out
@@ -510,6 +955,31 @@ export function formatQueryNodesResult(result, offset) {
510
955
  }
511
956
  return `Total matching nodes: ${formatNumber(result.total_count)}${partial}`;
512
957
  }
958
+ /**
959
+ * Build a name filter from a caller-supplied pattern.
960
+ *
961
+ * Interpreted as a case-insensitive regular expression, falling back to a plain
962
+ * case-insensitive substring test when the pattern is not valid regex — so a
963
+ * literal like `blink::UndoStep` works without escaping and a real pattern
964
+ * still works. An empty/absent pattern matches everything.
965
+ *
966
+ * Why this exists: answering "is `blink::UndoStep` present?" previously meant
967
+ * `class_histogram({node_type: "native", limit: 200})` and reading ~4 KB of
968
+ * table for one row. Filtering at the source is the difference between a
969
+ * yes/no answer and a page of output.
970
+ */
971
+ export function makeNamePatternTest(pattern) {
972
+ if (pattern == null || pattern.length === 0)
973
+ return () => true;
974
+ try {
975
+ const re = new RegExp(pattern, 'i');
976
+ return (name) => re.test(name);
977
+ }
978
+ catch {
979
+ const needle = pattern.toLowerCase();
980
+ return (name) => name.toLowerCase().includes(needle);
981
+ }
982
+ }
513
983
  export function snapshotHeader() {
514
984
  const meta = getSnapshotMetadata();
515
985
  if (!meta)
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,EACL,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,4EAA4E;AAC5E,8EAA8E;AAC9E,oCAAoC;AACpC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,YAAY,GACb,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,gBAAgB,EAAE,cAAc,EAAC,CAAC;AAgC1C,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAC9D,IAAI,CAAC,UAAU;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,GAAG,UAAU,CAAC;IAC9C,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACjE,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,MAAM,IAAI,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7C,OAAO,GAAG,MAAM,UAAU,IAAI,MAAM,SAAS,CAAC,MAAM,GAAG,CAAC,UAAU,KAAK,EAAE,CAAC;AAC5E,CAAC;AAED,SAAS,sBAAsB,CAAC,IAAY,EAAE,MAAc;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,GAAG,GAAG,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;IAEnE,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QACtC,OAAO,GAAG,QAAQ,IAAI,GAAG,IAAI,SAAS,GAAG,CAAC;IAC5C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,MAAM,mBAAmB,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5D,MAAM,GAAG,GACP,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;QACzC,mBAAmB,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,EAAE,CAAC;IACL,IAAI,CAAC,GAAG;QAAE,OAAO,IAAI,CAAC;IAEtB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACnD,IAAI,MAAM;QAAE,OAAO,GAAG,QAAQ,IAAI,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;IAEtD,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IACvC,IAAI,EAAE;QAAE,OAAO,GAAG,QAAQ,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;IAE9C,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAC;IACrD,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC;QACxE,OAAO,GAAG,QAAQ,IAAI,GAAG,gBAAgB,UAAU,IAAI,CAAC;IAC1D,CAAC;IAED,OAAO,GAAG,QAAQ,IAAI,GAAG,GAAG,CAAC;AAC/B,CAAC;AAED,+EAA+E;AAC/E,yEAAyE;AACzE,MAAM,CAAC,MAAM,sBAAsB,GAAG,KAAK,CAAC;AAE5C,gFAAgF;AAChF,4CAA4C;AAC5C,oFAAoF;AACpF,8EAA8E;AAC9E,gFAAgF;AAChF,0EAA0E;AAC1E,EAAE;AACF,+EAA+E;AAC/E,6EAA6E;AAC7E,4DAA4D;AAC5D,0EAA0E;AAC1E,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC,MAAM,UAAU,uBAAuB,CAAC,IAAY;IAClD,IAAI,IAAI,CAAC,MAAM,GAAG,oBAAoB;QAAE,OAAO,IAAI,CAAC;IACpD,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;IACnC,MAAM,WAAW,GAAG,GAAG,IAAI,GAAG,sBAAsB,GAAG,IAAI,EAAE,CAAC;IAC9D,gEAAgE;IAChE,OAAO,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,IAAY,EACZ,IAAY,EACZ,QAAgB,EAChB,MAAM,GAAG,GAAG,EACZ,aAAa,GAAG,KAAK;IAErB,IACE,IAAI,KAAK,QAAQ;QACjB,IAAI,KAAK,qBAAqB;QAC9B,IAAI,KAAK,eAAe,EACxB,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,WAAW,CAAC,QAAQ,CAAC,SAAS,CAAC;IACtE,CAAC;IAED,MAAM,SAAS,GACb,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACtB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAChC,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,aAAa;YAAE,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC;QACjD,IAAI,IAAI,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;YACzB,IAAI,SAAS,GAAG,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACrD,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM;gBAAE,OAAO,SAAS,CAAC;YACjD,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,WAAW,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAClD,IAAI,WAAW,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,WAAW,CAAC;IACrD,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAe;IAClD,OAAO;QACL,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;QAC5D,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,YAAY;KACjC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,MAAM,MAAM,GAAe;QACzB,EAAE,EAAE,IAAI,CAAC,EAAE;QACX,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;QAC5D,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,aAAa,EAAE,IAAI,CAAC,YAAY;QAChC,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,YAAY,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,IAAI,IAAI;QAC5C,QAAQ,EAAE,IAAI;KACf,CAAC;IAEF,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;IAC1B,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,CAAC,QAAQ,GAAG;YAChB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACpC,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,CAAC;YAChC,MAAM,CAAC,YAAY,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QACrC,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,OAAO,EAAE,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC;KAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAe;IACnD,OAAO;QACL,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;QACrC,SAAS,EAAE,IAAI,CAAC,IAAI;QACpB,SAAS,EAAE,oBAAoB,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC/C,CAAC;AACJ,CAAC;AAED,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,OAAO;IACP,QAAQ;IACR,MAAM;IACN,WAAW;IACX,QAAQ;CACT,CAAC,CAAC;AAEH,MAAM,oBAAoB,GAAG,IAAI,GAAG,CAAC;IACnC,wBAAwB;IACxB,kBAAkB;IAClB,oBAAoB;IACpB,YAAY;CACb,CAAC,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAe,EACf,IAAoC;IAEpC,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,iBAAiB,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAwB,IAAI,GAAG,CAAC;IACpE,WAAW;IACX,UAAU;IACV,WAAW;IACX,IAAI;IACJ,UAAU;IACV,WAAW;IACX,WAAW;IACX,YAAY;IACZ,aAAa;IACb,YAAY;IACZ,aAAa;IACb,WAAW;IACX,WAAW;IACX,QAAQ;CACT,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAAe;IAC1D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACjC,IAAI,GAAG,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACtC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;YACrC,IACE,IAAI,CAAC,IAAI,KAAK,UAAU;gBACxB,yBAAyB,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EACzD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAChE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;IACjC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACxE,OAAO,CACL,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QAChC,gDAAgD,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3D,+BAA+B,CAAC,IAAI,CAAC,IAAI,CAAC,CAC3C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,QAAuB,EACvB,MAAoC,EACpC,KAAa;IAEb,IAAI,MAAM,GAAgB,EAAE,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;YAClB,OAAO;QACT,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/B,IAAI,CAAS,CAAC;QACd,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;gBAC9B,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IAClC,CAAC,CAAC,CAAC;IACH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,yBAAyB,CACvC,UAAuB,EACvB,KAAa,EACb,OAA6C,EAAE;IAE/C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC;IACrC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC;IACpC,MAAM,SAAS,GAAG,CAAC,QAAmB,EAAE,CAAY,EAAW,EAAE;QAC/D,IAAI,GAAG,GAAqB,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC;QACpD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,GAAG,IAAI,KAAK,EAAE,GAAG,OAAO,EAAE,CAAC;YAChC,IAAI,GAAG,CAAC,EAAE,KAAK,QAAQ,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC;YACxC,GAAG,GAAG,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC;QAClC,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC,CAAC;IACF,MAAM,IAAI,GAAkD,EAAE,CAAC;IAC/D,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzD,MAAM,SAAS,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,OAAO,CAAC;YAC/C,IAAI,SAAS,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAChE,yEAAyE;gBACzE,IAAI,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC;gBACb,CAAC;gBACD,CAAC,CAAC,WAAW,EAAE,CAAC;gBAChB,MAAM,GAAG,IAAI,CAAC;gBACd,MAAM;YACR,CAAC;QACH,CAAC;QACD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,IAAI,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAC,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAWD,MAAM,UAAU,UAAU,CACxB,QAAuB,EACvB,MAAoC,EACpC,IAKC;IAED,MAAM,EAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAC,GAAG,IAAI,CAAC;IACjD,IAAI,QAAQ,GAAG,KAAK,CAAC;IAErB,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,CAAC;YACH,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAC5B,MAAM,EAAE,IAAI,EAAE,CAAC;gBACf,IAAI,MAAM,CAAC,IAAI,CAAC;oBAAE,KAAK,EAAE,CAAC;YAC5B,CAAC,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,YAAY,gBAAgB;gBAAE,QAAQ,GAAG,IAAI,CAAC;;gBAC9C,MAAM,CAAC,CAAC;QACf,CAAC;QACD,OAAO,EAAC,WAAW,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,IAAI,SAAS,EAAC,CAAC;IAChE,CAAC;IAED,0DAA0D;IAC1D,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,IAAI,CAAC;QACH,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAC5B,MAAM,EAAE,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;gBAAE,OAAO;YAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;YAC/B,IAAI,CAAS,CAAC;YACd,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;gBACxC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,CAAC;oBACnC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;oBAC9B,MAAM;gBACR,CAAC;YACH,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;gBACV,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,IAAI,CAAC,YAAY,gBAAgB;YAAE,QAAQ,GAAG,IAAI,CAAC;;YAC9C,MAAM,CAAC,CAAC;IACf,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC;IAClC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC;IAEpD,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACzB,OAAO;YACL,WAAW;YACX,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1B,SAAS,EAAE,QAAQ,IAAI,SAAS;SACjC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,WAAW;QACX,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,oBAAoB,CAAC;QACvC,SAAS,EAAE,QAAQ,IAAI,SAAS;KACjC,CAAC;AACJ,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,4BAA4B,CAC1C,GAAkB,EAClB,QAAuB,EACvB,OAAO,GAAG,GAAG;IAEb,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,KAAK,GAAG,IAAI,CAAC;IACjB,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,YAAY,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,GAAG,GAAqB,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC;QACvD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,OAAO,GAAG,EAAE,CAAC;YACX,IAAI,KAAK,IAAI,OAAO,EAAE,CAAC;gBACrB,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;YACD,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE;gBAAE,MAAM,CAAC,eAAe;YAC9C,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;gBACpB,SAAS,GAAG,IAAI,CAAC;gBACjB,MAAM;YACR,CAAC;YACD,MAAM,IAAI,GAAqB,GAAG,CAAC,aAAa,IAAI,IAAI,CAAC;YACzD,IAAI,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE;gBAAE,MAAM,CAAC,iBAAiB;YACxD,GAAG,GAAG,IAAI,CAAC;YACX,KAAK,EAAE,CAAC;QACV,CAAC;QACD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,QAAQ,IAAI,IAAI,CAAC,YAAY,CAAC;YAC9B,IAAI,SAAS;gBAAE,KAAK,GAAG,KAAK,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC;AAC3B,CAAC;AAoBD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,MAAM,GAAG,GAAkB,EAAE,CAAC;IAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACzC,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,eAAe;YAAE,SAAS;QAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5B,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;YACpC,0EAA0E;YAC1E,iEAAiE;YACjE,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,KAAK;gBAAE,SAAS;YACzE,MAAM,GAAG,GAAG,MAAM,CAAC,EAAE,CAAC,aAAa,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;gBAAE,SAAS;YACpC,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC;YACzB,qEAAqE;YACrE,qEAAqE;YACrE,2EAA2E;YAC3E,2EAA2E;YAC3E,IAAI,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACjD,SAAS;YACX,CAAC;YACD,GAAG,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC;QAChC,CAAC;QACD,MAAM;IACR,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;IAClC,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAAe;IACjD,MAAM,KAAK,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,OAAO,GAAsB,EAAE,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,EAAC,CAAC,CAAC;YAChD,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;aAAM,CAAC;YACN,0EAA0E;YAC1E,OAAO,CAAC,IAAI,CAAC,EAAC,GAAG,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAC,CAAC,CAAC;YAC3C,CAAC,IAAI,CAAC,CAAC;QACT,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,oBAAoB,CAAC,IAAe;IAClD,OAAO,mBAAmB,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACpD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,cAAc,GAAwB,IAAI,GAAG,CAAC;IACzD,IAAI;IACJ,MAAM;IACN,OAAO;IACP,KAAK;IACL,kBAAkB;CACnB,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAe,EACf,OAAmE,EAAE;IAErE,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,IAAI,cAAc,CAAC;IAClD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,4EAA4E;QAC5E,4EAA4E;QAC5E,gFAAgF;QAChF,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU;YAAE,SAAS;QACvC,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QACxC,IAAI,IAAI,KAAK,WAAW;YAAE,SAAS;QACnC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,SAAS;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtB,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,WAAW,IAAI,EAAE,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;aAAM,IAAI,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;YAC3D,qEAAqE;YACrE,uEAAuE;YACvE,kEAAkE;YAClE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QAC1B,CAAC;aAAM,IACL,CAAC,CAAC,IAAI,KAAK,MAAM;YACjB,CAAC,CAAC,IAAI,KAAK,OAAO;YAClB,CAAC,CAAC,IAAI,KAAK,MAAM;YACjB,CAAC,CAAC,IAAI,KAAK,WAAW,EACtB,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,KAAK,CAAC,IAAI,EAAE,CAAC;IACb,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,QAAuB;IACnD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,EAAE,GAAG,mCAAmC,CAAC;IAC/C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC;QACnB,cAAc;QACd,MAAM;QACN,KAAK;QACL,OAAO;QACP,KAAK;QACL,UAAU;QACV,QAAQ;QACR,QAAQ;KACT,CAAC,CAAC;IACH,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO;QACjD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,CAAC;YAAE,OAAO;QACf,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO;QAC1B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IACH,IAAI,IAAI,GAAkB,IAAI,CAAC;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;YACd,IAAI,GAAG,CAAC,CAAC;YACT,KAAK,GAAG,CAAC,CAAC;QACZ,CAAC;IACH,CAAC;IACD,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAClC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,2BAA2B,CACzC,KAA+C;IAE/C,IAAI,UAAU,GAAG,KAAK,CAAC;IACvB,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,SAAS;YAAE,UAAU,GAAG,IAAI,CAAC;QAC1D,IAAI,wCAAwC,CAAC,IAAI,CAAC,CAAC,CAAC;YAAE,UAAU,GAAG,IAAI,CAAC;QACxE,IAAI,oCAAoC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YACpE,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;IACD,4EAA4E;IAC5E,iCAAiC;IACjC,MAAM,eAAe,GAAG,KAAK,CAAC,IAAI,CAChC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kBAAkB,IAAI,CAAC,CAAC,QAAQ,KAAK,UAAU,CAChE,CAAC;IACF,IAAI,UAAU,IAAI,eAAe,EAAE,CAAC;QAClC,OAAO,wKAAwK,CAAC;IAClL,CAAC;IACD,IAAI,OAAO,IAAI,eAAe,EAAE,CAAC;QAC/B,OAAO,0FAA0F,CAAC;IACpG,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACvD,IAAI,KAAK,GAAG,IAAI;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IACtC,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI;QAAE,OAAO,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IAClE,IAAI,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI;QAC5B,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;IACpD,OAAO,GAAG,CAAC,KAAK,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,CAAS;IACpC,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,OAAiB,EACjB,IAAgB,EAChB,UAAwB;IAExB,wBAAwB;IACxB,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAClC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAC1D,CAAC;IAEF,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,CAAS,EAAE,KAAe,EAAE,EAAE,CACpD,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAEtC,MAAM,UAAU,GACd,IAAI;QACJ,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;QACxE,IAAI,CAAC;IACP,MAAM,aAAa,GACjB,GAAG;QACH,MAAM;aACH,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACZ,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CACjE;aACA,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aACtC,IAAI,CAAC,GAAG,CAAC;QACZ,GAAG,CAAC;IACN,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CACxB,GAAG,CAAC,EAAE,CACJ,IAAI;QACJ,GAAG;aACA,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;aAC1D,IAAI,CAAC,KAAK,CAAC;QACd,IAAI,CACP,CAAC;IAEF,OAAO,CAAC,UAAU,EAAE,aAAa,EAAE,GAAG,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,EAAU,EACV,IAAY,EACZ,IAAY,EACZ,QAAiB;IAEjB,MAAM,WAAW,GACf,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACvE,OAAO,IAAI,EAAE,IAAI,WAAW,KAAK,IAAI,GAAG,CAAC;AAC3C,CAAC;AAyBD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAyB,EACzB,MAAM,GAAG,CAAC;IAEV,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,GAAG,GAAG,CAAC,CAAmB,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC5D,MAAM,GAAG,GAAuB,EAAE,CAAC;IACnC,0EAA0E;IAC1E,yEAAyE;IACzE,gEAAgE;IAChE,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,GAAG,SAAS,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;QAC7D,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YAClB,wEAAwE;YACxE,2EAA2E;YAC3E,GAAG,CAAC,IAAI,CAAC,EAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAC,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;gBAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,CAAC;QACD,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAgB,EAAE,MAAM,GAAG,CAAC;IACjE,IAAI,MAAM,CAAC,MAAM,GAAG,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,6EAA6E;IAC7E,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IACpC,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,SAAS,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,GAAG,SAAS,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;YAAE,CAAC,EAAE,CAAC;QACrD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC7D,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,MAAM,EAAE,CAAC,EAAE;YAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC,GAAG,CAAC,CAAC;IACR,CAAC;IACD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,eAAe,CAC7B,QAAgB,EAChB,OAAe,EACf,cAAsB;IAEtB,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;QACjB,OAAO,iBAAiB,YAAY,CAAC,QAAQ,CAAC,mBAAmB,cAAc,6BAA6B,CAAC;IAC/G,CAAC;IACD,OAAO,aAAa,YAAY,CAAC,QAAQ,CAAC,kBAAkB,YAAY,CAAC,OAAO,CAAC,oBAAoB,cAAc,wFAAwF,CAAC;AAC9M,CAAC;AAED,SAAS,eAAe,CAAC,IAAY;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAClE,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,OAAO,GAAG,CAAC,CAAC,wBAAwB;IAC1E,IAAI,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,WAAW;IACzE,OAAO,OAAO,CAAC,CAAC,8CAA8C;AAChE,CAAC;AAED,SAAS,cAAc,CAAC,CAAS,EAAE,GAAW;IAC5C,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACnC,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;QAAE,OAAO,sBAAsB,CAAC;IACjD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;;;;GAMG;AACH,SAAS,oBAAoB,CAC3B,KAAyB,EACzB,SAAkB;IAElB,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACV,wEAAwE;YACxE,yEAAyE;YACzE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC;YACtB,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;gBAC/C,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,CAAC,eAAe,mBAAmB,IAAI,CACpE,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;gBACvB,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC1C,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,CAAC;QACD,MAAM,IAAI,GACR,SAAS,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI;YACjC,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;YACtC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,MAAM,GACV,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,4BAA4B;YACjD,CAAC,CAAC,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CAAC,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAyB,EACzB,OAAqD,EAAE;IAEvD,MAAM,EAAC,SAAS,GAAG,IAAI,EAAE,YAAY,GAAG,CAAC,EAAC,GAAG,IAAI,CAAC;IAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,8EAA8E;IAC9E,8DAA8D;IAC9D,IAAI,KAAK,CAAC,MAAM,GAAG,YAAY,EAAE,CAAC;QAChC,OAAO,oBAAoB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAChD,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACnB,MAAM,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC;QACvB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACtD,IAAI,CAAC,CAAC,eAAe,IAAI,CAAC,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YAC/C,KAAK,CAAC,IAAI,CACR,GAAG,GAAG,QAAQ,CAAC,CAAC,aAAa,IAAI,GAAG,CAAC,CAAC,eAAe,mBAAmB,IAAI,CAC7E,CAAC;QACJ,CAAC;QACD,oEAAoE;QACpE,0EAA0E;QAC1E,gFAAgF;QAChF,MAAM,SAAS,GAAG,MAAM;YACtB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI;gBAClB,CAAC,CAAC,MAAM,eAAe,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK;gBACxC,CAAC,CAAC,KAAK,CAAC;QACZ,MAAM,IAAI,GACR,SAAS,IAAI,CAAC,CAAC,YAAY,IAAI,IAAI;YACjC,CAAC,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,EAAE;YACtC,CAAC,CAAC,EAAE,CAAC;QACT,MAAM,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,MAAM,GACV,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,WAAW,GAAG,CAAC;YAChC,CAAC,CAAC,MAAM,CAAC,CAAC,WAAW,4BAA4B;YACjD,CAAC,CAAC,EAAE,CAAC;QACT,KAAK,CAAC,IAAI,CACR,GAAG,GAAG,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,GAAG,cAAc,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CACjF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,KAAoB;IACzD,4EAA4E;IAC5E,4EAA4E;IAC5E,iEAAiE;IACjE,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;IAChC,MAAM,OAAO,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IACrE,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,CAAC,EAAE,EAAE;QACV,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI;QACN,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QACxB,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,CAAC;KACrD,CAAC,CAAC;IACH,OAAO,aAAa,CAAC,OAAO,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;AAC5E,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,QAA0B;IACpD,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,CAAC;YACtE,OAAO,UAAU,sBAAsB,4IAA4I,CAAC;QACtL,CAAC;IACH,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,MAAwB,EACxB,MAAe;IAEf,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS;QAC9B,CAAC,CAAC,kMAAkM;QACpM,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE,CAAC;QACzB,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,mCAAmC,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,OAAO,EAAE,CAAC;QAC1F,CAAC;QACD,MAAM,KAAK,GAAG,CAAC,UAAU,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrE,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACpC,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG;YACZ,UAAU,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,cAAc,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,MAAM,IAAI,CAAC,GAAG;SAClH,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,QAAQ,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;IACpC,CAAC;IACD,OAAO,yBAAyB,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,GAAG,OAAO,EAAE,CAAC;AAC/E,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,mBAAmB,CACjC,OAA2B;IAE3B,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,EAAE,CAAC,IAAI,CAAC;IAC/D,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,IAAY,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;AACH,CAAC;AAED,MAAM,UAAU,cAAc;IAC5B,MAAM,IAAI,GAAG,mBAAmB,EAAE,CAAC;IACnC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IACrB,MAAM,QAAQ,GACZ,IAAI,CAAC,GAAG,KAAK,SAAS;QACpB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,MAAM;YACnB,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,SAAS,CAAC;IAClB,OAAO,eAAe,IAAI,CAAC,QAAQ,KAAK,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,QAAQ,GAAG,CAAC;AAC7H,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,EAAC,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAe,EAAE,IAAI,EAAC,CAAC,EAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,MAAM,MAAM,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC1D,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IACpD,OAAO,EAAC,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,EAAC,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB;IACnC,OAAO,gBAAgB,EAAE,CAAC,mBAAmB,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC7D,OAAO;QACL,OAAO,EAAE,CAAC,EAAC,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,UAAU,GAAG,EAAE,EAAC,CAAC;QACzD,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}