@scriptc/compiler 0.3.4 → 0.3.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.
Files changed (219) hide show
  1. package/ambient/scriptc-node-fallback.d.ts +131 -10
  2. package/dist/backend/llvm/array-search.js +1 -1
  3. package/dist/backend/llvm/array-search.js.map +1 -1
  4. package/dist/backend/llvm/call-lifetimes.d.ts +6 -0
  5. package/dist/backend/llvm/call-lifetimes.js +19 -0
  6. package/dist/backend/llvm/call-lifetimes.js.map +1 -1
  7. package/dist/backend/llvm/constant-callbacks.d.ts +2 -21
  8. package/dist/backend/llvm/constant-callbacks.js +36 -219
  9. package/dist/backend/llvm/constant-callbacks.js.map +1 -1
  10. package/dist/backend/llvm/constant-callbacks.test.js +22 -0
  11. package/dist/backend/llvm/constant-callbacks.test.js.map +1 -1
  12. package/dist/backend/llvm/dense-array-access.d.ts +9 -0
  13. package/dist/backend/llvm/dense-array-access.js +27 -1
  14. package/dist/backend/llvm/dense-array-access.js.map +1 -1
  15. package/dist/backend/llvm/dyn.d.ts +6 -0
  16. package/dist/backend/llvm/dyn.js +40 -6
  17. package/dist/backend/llvm/dyn.js.map +1 -1
  18. package/dist/backend/llvm/emitter.d.ts +75 -1
  19. package/dist/backend/llvm/emitter.js +408 -38
  20. package/dist/backend/llvm/emitter.js.map +1 -1
  21. package/dist/backend/llvm/expr-async.js +17 -7
  22. package/dist/backend/llvm/expr-async.js.map +1 -1
  23. package/dist/backend/llvm/expr-bytes.js +1 -1
  24. package/dist/backend/llvm/expr-callbacks.d.ts +11 -0
  25. package/dist/backend/llvm/expr-callbacks.js +53 -0
  26. package/dist/backend/llvm/expr-callbacks.js.map +1 -1
  27. package/dist/backend/llvm/expr-calls.js +88 -2
  28. package/dist/backend/llvm/expr-calls.js.map +1 -1
  29. package/dist/backend/llvm/expr-containers.js +50 -27
  30. package/dist/backend/llvm/expr-containers.js.map +1 -1
  31. package/dist/backend/llvm/expr-primitives.js +9 -1
  32. package/dist/backend/llvm/expr-primitives.js.map +1 -1
  33. package/dist/backend/llvm/expr-stream-bridges.js +4 -0
  34. package/dist/backend/llvm/expr-stream-bridges.js.map +1 -1
  35. package/dist/backend/llvm/integer-clones.d.ts +103 -0
  36. package/dist/backend/llvm/integer-clones.js +1336 -0
  37. package/dist/backend/llvm/integer-clones.js.map +1 -0
  38. package/dist/backend/llvm/integer-clones.test.d.ts +1 -0
  39. package/dist/backend/llvm/integer-clones.test.js +219 -0
  40. package/dist/backend/llvm/integer-clones.test.js.map +1 -0
  41. package/dist/backend/llvm/lib-datagram.js +14 -0
  42. package/dist/backend/llvm/lib-datagram.js.map +1 -1
  43. package/dist/backend/llvm/lib-dispatch.js +4 -0
  44. package/dist/backend/llvm/lib-dispatch.js.map +1 -1
  45. package/dist/backend/llvm/lib-process.js +24 -0
  46. package/dist/backend/llvm/lib-process.js.map +1 -1
  47. package/dist/backend/llvm/lib-shared.js +34 -2
  48. package/dist/backend/llvm/lib-shared.js.map +1 -1
  49. package/dist/backend/llvm/lib-tls.js +6 -0
  50. package/dist/backend/llvm/lib-tls.js.map +1 -1
  51. package/dist/backend/llvm/local-array-reads.js +1 -1
  52. package/dist/backend/llvm/local-array-reads.js.map +1 -1
  53. package/dist/backend/llvm/map-entry-fusion.d.ts +28 -0
  54. package/dist/backend/llvm/map-entry-fusion.js +233 -0
  55. package/dist/backend/llvm/map-entry-fusion.js.map +1 -0
  56. package/dist/backend/llvm/map-entry-fusion.test.d.ts +1 -0
  57. package/dist/backend/llvm/map-entry-fusion.test.js +183 -0
  58. package/dist/backend/llvm/map-entry-fusion.test.js.map +1 -0
  59. package/dist/backend/llvm/map-number-lookup.d.ts +2 -0
  60. package/dist/backend/llvm/map-number-lookup.js +1 -1
  61. package/dist/backend/llvm/map-number-lookup.js.map +1 -1
  62. package/dist/backend/llvm/map-number-lookup.test.js +10 -11
  63. package/dist/backend/llvm/map-number-lookup.test.js.map +1 -1
  64. package/dist/backend/llvm/map-read-lifetimes.d.ts +2 -0
  65. package/dist/backend/llvm/map-read-lifetimes.js +3 -0
  66. package/dist/backend/llvm/map-read-lifetimes.js.map +1 -1
  67. package/dist/backend/llvm/map-read-lifetimes.test.js +2 -2
  68. package/dist/backend/llvm/publish.d.ts +16 -0
  69. package/dist/backend/llvm/publish.js +81 -10
  70. package/dist/backend/llvm/publish.js.map +1 -1
  71. package/dist/backend/llvm/publish.test.d.ts +1 -0
  72. package/dist/backend/llvm/publish.test.js +94 -0
  73. package/dist/backend/llvm/publish.test.js.map +1 -0
  74. package/dist/backend/llvm/record-results.js +76 -2
  75. package/dist/backend/llvm/record-results.js.map +1 -1
  76. package/dist/backend/llvm/record-sources.d.ts +7 -0
  77. package/dist/backend/llvm/record-sources.js +14 -0
  78. package/dist/backend/llvm/record-sources.js.map +1 -0
  79. package/dist/backend/llvm/shapes.d.ts +9 -3
  80. package/dist/backend/llvm/shapes.js +18 -14
  81. package/dist/backend/llvm/shapes.js.map +1 -1
  82. package/dist/backend/llvm/shapes.test.js +5 -3
  83. package/dist/backend/llvm/shapes.test.js.map +1 -1
  84. package/dist/backend/llvm/string-lifetimes.test.js +75 -1
  85. package/dist/backend/llvm/string-lifetimes.test.js.map +1 -1
  86. package/dist/backend/llvm/walkers.d.ts +17 -0
  87. package/dist/backend/llvm/walkers.js +123 -0
  88. package/dist/backend/llvm/walkers.js.map +1 -1
  89. package/dist/backend/native/contracts.d.ts +2 -1
  90. package/dist/backend/native/executable.js +3 -1
  91. package/dist/backend/native/executable.js.map +1 -1
  92. package/dist/backend/runtime-abi.d.ts +2 -2
  93. package/dist/backend/runtime-abi.js +2 -2
  94. package/dist/backend/runtime-pack-targets.test.js +1 -1
  95. package/dist/backend/runtime-pack.test.js +1 -1
  96. package/dist/frontend/lowering/builtin-calls.js +3 -0
  97. package/dist/frontend/lowering/builtin-calls.js.map +1 -1
  98. package/dist/frontend/lowering/builtins/callable-aliases.js +54 -8
  99. package/dist/frontend/lowering/builtins/callable-aliases.js.map +1 -1
  100. package/dist/frontend/lowering/builtins/child-process-async.d.ts +8 -6
  101. package/dist/frontend/lowering/builtins/child-process-async.js +45 -29
  102. package/dist/frontend/lowering/builtins/child-process-async.js.map +1 -1
  103. package/dist/frontend/lowering/builtins/filesystem-calls.d.ts +2 -0
  104. package/dist/frontend/lowering/builtins/filesystem-calls.js +5 -0
  105. package/dist/frontend/lowering/builtins/filesystem-calls.js.map +1 -1
  106. package/dist/frontend/lowering/builtins/filesystem.js +60 -0
  107. package/dist/frontend/lowering/builtins/filesystem.js.map +1 -1
  108. package/dist/frontend/lowering/builtins/fs-streams.d.ts +26 -0
  109. package/dist/frontend/lowering/builtins/fs-streams.js +131 -0
  110. package/dist/frontend/lowering/builtins/fs-streams.js.map +1 -0
  111. package/dist/frontend/lowering/builtins/module-calls.js +5 -1
  112. package/dist/frontend/lowering/builtins/module-calls.js.map +1 -1
  113. package/dist/frontend/lowering/class-dynamic-dispatch.js +150 -8
  114. package/dist/frontend/lowering/class-dynamic-dispatch.js.map +1 -1
  115. package/dist/frontend/lowering/containers/bytes.js +33 -12
  116. package/dist/frontend/lowering/containers/bytes.js.map +1 -1
  117. package/dist/frontend/lowering/devirtualize.js +20 -7
  118. package/dist/frontend/lowering/devirtualize.js.map +1 -1
  119. package/dist/frontend/lowering/lower-calls.js +58 -3
  120. package/dist/frontend/lowering/lower-calls.js.map +1 -1
  121. package/dist/frontend/lowering/lower-classes.js +7 -0
  122. package/dist/frontend/lowering/lower-classes.js.map +1 -1
  123. package/dist/frontend/lowering/lower-dgram.js +55 -15
  124. package/dist/frontend/lowering/lower-dgram.js.map +1 -1
  125. package/dist/frontend/lowering/lower-event-emitter.d.ts +9 -1
  126. package/dist/frontend/lowering/lower-event-emitter.js +78 -0
  127. package/dist/frontend/lowering/lower-event-emitter.js.map +1 -1
  128. package/dist/frontend/lowering/lower-exprs.d.ts +4 -0
  129. package/dist/frontend/lowering/lower-exprs.js +132 -58
  130. package/dist/frontend/lowering/lower-exprs.js.map +1 -1
  131. package/dist/frontend/lowering/lower-inspect.js +26 -0
  132. package/dist/frontend/lowering/lower-inspect.js.map +1 -1
  133. package/dist/frontend/lowering/lower-server.d.ts +2 -1
  134. package/dist/frontend/lowering/lower-server.js +73 -5
  135. package/dist/frontend/lowering/lower-server.js.map +1 -1
  136. package/dist/frontend/lowering/lower-stmts.js +12 -6
  137. package/dist/frontend/lowering/lower-stmts.js.map +1 -1
  138. package/dist/frontend/lowering/lower-stream.js +8 -0
  139. package/dist/frontend/lowering/lower-stream.js.map +1 -1
  140. package/dist/frontend/lowering/lowerer.d.ts +3 -1
  141. package/dist/frontend/lowering/lowerer.js +2 -2
  142. package/dist/frontend/lowering/lowerer.js.map +1 -1
  143. package/dist/frontend/lowering/record-sources.d.ts +15 -0
  144. package/dist/frontend/lowering/record-sources.js +46 -0
  145. package/dist/frontend/lowering/record-sources.js.map +1 -0
  146. package/dist/frontend/lowering/surfaces.js +33 -1
  147. package/dist/frontend/lowering/surfaces.js.map +1 -1
  148. package/dist/frontend/type-mapper.d.ts +3 -0
  149. package/dist/frontend/type-mapper.js +53 -0
  150. package/dist/frontend/type-mapper.js.map +1 -1
  151. package/dist/ir/analysis.d.ts +10 -0
  152. package/dist/ir/analysis.js +35 -0
  153. package/dist/ir/analysis.js.map +1 -1
  154. package/dist/ir/analysis.test.js +69 -1
  155. package/dist/ir/analysis.test.js.map +1 -1
  156. package/dist/ir/builtin-effects.js +36 -0
  157. package/dist/ir/builtin-effects.js.map +1 -1
  158. package/dist/ir/builtin-signatures.d.ts +1 -1
  159. package/dist/ir/builtin-signatures.js +91 -7
  160. package/dist/ir/builtin-signatures.js.map +1 -1
  161. package/dist/ir/capture-values.d.ts +107 -0
  162. package/dist/ir/capture-values.js +850 -0
  163. package/dist/ir/capture-values.js.map +1 -0
  164. package/dist/ir/capture-values.test.d.ts +1 -0
  165. package/dist/ir/capture-values.test.js +268 -0
  166. package/dist/ir/capture-values.test.js.map +1 -0
  167. package/dist/ir/field-values.d.ts +16 -0
  168. package/dist/ir/field-values.js +128 -0
  169. package/dist/ir/field-values.js.map +1 -0
  170. package/dist/ir/field-values.test.d.ts +1 -0
  171. package/dist/ir/field-values.test.js +160 -0
  172. package/dist/ir/field-values.test.js.map +1 -0
  173. package/dist/ir/final-fields.d.ts +4 -1
  174. package/dist/ir/final-fields.js +11 -3
  175. package/dist/ir/final-fields.js.map +1 -1
  176. package/dist/ir/function-references.test.js +1 -1
  177. package/dist/ir/function-references.test.js.map +1 -1
  178. package/dist/ir/init-only-globals.d.ts +16 -0
  179. package/dist/ir/init-only-globals.js +121 -0
  180. package/dist/ir/init-only-globals.js.map +1 -0
  181. package/dist/ir/init-only-globals.test.d.ts +1 -0
  182. package/dist/ir/init-only-globals.test.js +115 -0
  183. package/dist/ir/init-only-globals.test.js.map +1 -0
  184. package/dist/ir/initializer-bindings.d.ts +18 -1
  185. package/dist/ir/initializer-bindings.js +91 -1
  186. package/dist/ir/initializer-bindings.js.map +1 -1
  187. package/dist/ir/initializer-bindings.test.js +57 -2
  188. package/dist/ir/initializer-bindings.test.js.map +1 -1
  189. package/dist/ir/int32-slots.d.ts +22 -0
  190. package/dist/ir/int32-slots.js +376 -13
  191. package/dist/ir/int32-slots.js.map +1 -1
  192. package/dist/ir/int32-slots.test.js +91 -8
  193. package/dist/ir/int32-slots.test.js.map +1 -1
  194. package/dist/ir/integer-loop-facts.d.ts +19 -1
  195. package/dist/ir/integer-loop-facts.js +155 -7
  196. package/dist/ir/integer-loop-facts.js.map +1 -1
  197. package/dist/ir/integer-ranges.d.ts +8 -5
  198. package/dist/ir/integer-ranges.js +147 -55
  199. package/dist/ir/integer-ranges.js.map +1 -1
  200. package/dist/ir/integer-ranges.test.js +225 -7
  201. package/dist/ir/integer-ranges.test.js.map +1 -1
  202. package/dist/ir/ir.d.ts +9 -1
  203. package/dist/ir/ir.js.map +1 -1
  204. package/dist/ir/property-bags.d.ts +14 -0
  205. package/dist/ir/property-bags.js +121 -0
  206. package/dist/ir/property-bags.js.map +1 -0
  207. package/dist/ir/receiver-readers.d.ts +21 -0
  208. package/dist/ir/receiver-readers.js +217 -0
  209. package/dist/ir/receiver-readers.js.map +1 -0
  210. package/dist/ir/runtime-features.js +6 -1
  211. package/dist/ir/runtime-features.js.map +1 -1
  212. package/dist/ir/validate.js +26 -0
  213. package/dist/ir/validate.js.map +1 -1
  214. package/dist/ir/validate.test.js +21 -0
  215. package/dist/ir/validate.test.js.map +1 -1
  216. package/dist/library/int-infer.js +3 -0
  217. package/dist/library/int-infer.js.map +1 -1
  218. package/package.json +20 -20
  219. package/surface-manifest.json +28 -2
@@ -1 +1 @@
1
- {"version":3,"file":"integer-ranges.js","sourceRoot":"","sources":["../../src/ir/integer-ranges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integer-ranges.js","sourceRoot":"","sources":["../../src/ir/integer-ranges.ts"],"names":[],"mappings":"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"}
@@ -12,6 +12,13 @@ const bin = (op, left, right) => ({
12
12
  right,
13
13
  type: F64,
14
14
  });
15
+ const unaryMinus = (operand) => ({
16
+ loc,
17
+ kind: "unary",
18
+ op: "-",
19
+ operand,
20
+ type: F64,
21
+ });
15
22
  const assign = (value) => ({ loc, kind: "assign", localId: "x", value });
16
23
  const fn = (body, boxed = false) => ({
17
24
  loc,
@@ -190,12 +197,13 @@ test("labeled exits and do-while conditions cannot lend facts to skipped paths",
190
197
  body: [observe(firstBody)],
191
198
  },
192
199
  ]));
193
- // The break skips `x = 1`; both writes are non-negative int32 literals,
194
- // so the join keeps only the closed range (int32 and uint32 at once),
195
- // never the skipped path's fact.
196
- expect(ranges.get(afterBlock)).toEqual(INT32_AND_UINT32);
197
- // Likewise the condition's `x = 0` does not reach the first iteration.
198
- expect(ranges.get(firstBody)).toEqual(INT32_AND_UINT32);
200
+ // The break skips `x = 1`; both writes are literals, so the join keeps
201
+ // only the closed range of the entry value and the block's write, never
202
+ // the skipped path's fact (`x === 1`).
203
+ expect(ranges.get(afterBlock)).toEqual({ min: 1, max: 100 });
204
+ // Likewise the condition's `x = 0` does not reach the first iteration:
205
+ // the body sees the entry range joined with that write.
206
+ expect(ranges.get(firstBody)).toEqual({ min: 0, max: 100 });
199
207
  });
200
208
  test("unit induction is exact but loop-carried assignments remain unknown", () => {
201
209
  const counter = ref(), carried = ref("state"), after = ref();
@@ -319,8 +327,11 @@ test("int32-closed locals keep the int32 range across loops and switches", () =>
319
327
  const closedRanges = analyzeIntegerRanges(closed.f);
320
328
  expect(closedRanges.get(closed.inside)).toEqual(INT32);
321
329
  expect(closedRanges.get(closed.after)).toEqual(INT32);
322
- const unsigned = loop(bin(">>>", ref(), num(0)));
330
+ const unsigned = loop(bin(">>>", ref("unknown"), num(0)));
323
331
  expect(analyzeIntegerRanges(unsigned.f).get(unsigned.after)).toEqual(UINT32);
332
+ // `x >>> 0` of a local that only ever holds non-negative int32s is one.
333
+ const identity = loop(bin(">>>", ref(), num(0)));
334
+ expect(analyzeIntegerRanges(identity.f).get(identity.after)).toEqual(INT32_AND_UINT32);
324
335
  for (const write of [bin("+", ref(), num(1)), bin("/", ref(), num(2))]) {
325
336
  const open = loop(write);
326
337
  expect(analyzeIntegerRanges(open.f).get(open.after), write.kind).toBeNull();
@@ -402,6 +413,213 @@ test("uint32-closed locals keep the uint32 range across loop back edges", () =>
402
413
  expect(result.ranges.get(result.after)).toBeNull();
403
414
  }
404
415
  });
416
+ test("arithmetic-closed loop-carried locals keep exact ranges across back edges", () => {
417
+ // n = unknown & 3; v = start;
418
+ // for (let i = 0; i < 100000; i++) { v = write(v); observe(v) } observe(v)
419
+ const set = (localId, value) => ({ loc, kind: "assign", localId, value });
420
+ const loop = (start, write) => {
421
+ const inside = ref("v"), after = ref("v"), value = write(ref("v"));
422
+ const f = fn([
423
+ set("n", bin("&", ref("unknown"), num(3))),
424
+ set("v", start),
425
+ {
426
+ loc,
427
+ kind: "for",
428
+ init: { loc, kind: "varDecl", localId: "i", init: num(0) },
429
+ cond: condition("<", ref("i"), num(100000)),
430
+ update: set("i", bin("+", ref("i"), num(1))),
431
+ body: [observe(inside), set("v", value)],
432
+ },
433
+ observe(after),
434
+ ]);
435
+ for (const id of ["v", "i", "n"])
436
+ f.locals.push({ id, name: id, type: F64, mutable: true });
437
+ const ranges = analyzeIntegerRanges(f);
438
+ return { inside: ranges.get(inside), after: ranges.get(after), value: ranges.get(value) };
439
+ };
440
+ const M = 1000003;
441
+ // The 41-closures kernel: the dividend is a non-negative exact integer.
442
+ const hash = loop(num(7), (v) => bin("%", bin("+", bin("*", v, num(31)), ref("n")), num(M)));
443
+ expect(hash).toEqual({
444
+ inside: { min: 0, max: M - 1 },
445
+ after: { min: 0, max: M - 1 },
446
+ value: { min: 0, max: M - 1 },
447
+ });
448
+ // The counter's header range holds at every read in the body.
449
+ const counted = loop(num(0), (v) => bin("%", bin("+", bin("*", v, num(31)), ref("i")), num(M)));
450
+ expect(counted.inside).toEqual({ min: 0, max: M - 1 });
451
+ // A wrap counter, and a product that crosses 2^31 but stays exact.
452
+ expect(loop(num(0), (v) => bin("%", bin("+", v, num(1)), num(10))).after).toEqual({
453
+ min: 0,
454
+ max: 9,
455
+ });
456
+ const wide = loop(num(1), (v) => bin("%", bin("+", bin("*", v, num(31)), ref("n")), num(2 ** 31)));
457
+ expect(wide.after).toEqual({ min: 0, max: 2 ** 31 - 1 });
458
+ // Unary minus of a value that cannot be zero stays exact, also into
459
+ // negative ranges (closed under int32 rather than the non-negative bound).
460
+ expect(loop(num(1), (v) => unaryMinus(unaryMinus(bin("+", bin("%", v, num(7)), num(1))))).after).toEqual({ min: 1, max: 7 });
461
+ expect(loop(num(-1), (v) => unaryMinus(bin("+", bin("&", v, num(7)), num(1)))).after).toEqual({
462
+ min: -8,
463
+ max: -1,
464
+ });
465
+ // Writes that could leave the bound, produce -0, NaN, a fraction or an
466
+ // inexact product, and entries outside it, leave the local unknown.
467
+ const open = [
468
+ [
469
+ "negative dividend (-0)",
470
+ num(7),
471
+ (v) => bin("%", bin("-", bin("*", v, num(31)), ref("n")), num(M)),
472
+ ],
473
+ ["growth", num(7), (v) => bin("+", bin("*", v, num(31)), ref("n"))],
474
+ ["unknown divisor", num(7), (v) => bin("%", v, ref("unknown"))],
475
+ ["zero divisor (NaN)", num(7), (v) => bin("%", v, num(0))],
476
+ ["fraction divisor", num(7), (v) => bin("%", v, num(2.5))],
477
+ ["negated remainder (-0)", num(7), (v) => unaryMinus(bin("%", v, num(7)))],
478
+ ["inexact product", num(7), (v) => bin("%", bin("*", v, num(2 ** 30)), num(M))],
479
+ ["negative entry", num(-1), (v) => bin("%", bin("+", bin("*", v, num(31)), ref("n")), num(M))],
480
+ ["fraction entry", num(0.5), (v) => bin("%", bin("+", v, num(1)), num(10))],
481
+ ["unknown entry", ref("unknown"), (v) => bin("%", bin("+", v, num(1)), num(10))],
482
+ ["infinite entry", num(Infinity), (v) => bin("%", bin("+", v, num(1)), num(10))],
483
+ ["division", num(7), (v) => bin("%", bin("/", v, num(2)), num(10))],
484
+ ];
485
+ for (const [label, start, write] of open) {
486
+ const result = loop(start, write);
487
+ expect(result.inside, label).toBeNull();
488
+ expect(result.after, label).toBeNull();
489
+ }
490
+ });
491
+ test("a loop-invariant positive step bounds the counter of a limited loop", () => {
492
+ // s = (unknown & 7) + 1; for (let j = s * 2; j <= 1000; j += s) observe(j)
493
+ const set = (localId, value) => ({ loc, kind: "assign", localId, value });
494
+ const loop = (step, update = (j) => bin("+", j, ref("s")), body = []) => {
495
+ const inside = ref("j"), next = update(ref("j"));
496
+ const f = fn([
497
+ set("s", step),
498
+ {
499
+ loc,
500
+ kind: "for",
501
+ init: { loc, kind: "varDecl", localId: "j", init: bin("*", ref("s"), num(2)) },
502
+ cond: condition("<=", ref("j"), num(1000)),
503
+ update: set("j", next),
504
+ body: [observe(inside), ...body],
505
+ },
506
+ ]);
507
+ for (const id of ["s", "j"])
508
+ f.locals.push({ id, name: id, type: F64, mutable: true });
509
+ const ranges = analyzeIntegerRanges(f);
510
+ return { inside: ranges.get(inside), next: ranges.get(next) };
511
+ };
512
+ const positive = bin("+", bin("&", ref("unknown"), num(7)), num(1));
513
+ expect(loop(positive)).toEqual({ inside: { min: 2, max: 1000 }, next: { min: 3, max: 1008 } });
514
+ // Early exits only shorten the walk.
515
+ const exits = {
516
+ loc,
517
+ kind: "if",
518
+ cond: condition("===", ref("unknown"), num(0)),
519
+ then: [{ loc, kind: "break" }],
520
+ else_: [{ loc, kind: "continue" }],
521
+ };
522
+ expect(loop(positive, undefined, [exits]).inside).toEqual({ min: 2, max: 1000 });
523
+ // A step that can be zero, negative or a fraction, a step the body
524
+ // writes, and a subtracted positive step, prove nothing.
525
+ const open = [
526
+ ["zero step", bin("&", ref("unknown"), num(7)), undefined, []],
527
+ ["negative step", unaryMinus(positive), undefined, []],
528
+ ["fraction step", num(0.5), undefined, []],
529
+ ["unknown step", ref("unknown"), undefined, []],
530
+ ["written step", positive, undefined, [set("s", num(1))]],
531
+ ["subtracted step", positive, (j) => bin("-", j, ref("s")), []],
532
+ ];
533
+ for (const [label, step, update, body] of open)
534
+ expect(loop(step, update, body).inside, label).toBeNull();
535
+ });
536
+ test("a while condition bounds a counter the loop only increments", () => {
537
+ // it = start; while (unknown <= 4 && it < MAX) { observe(it); it++ } observe(it)
538
+ const set = (localId, value) => ({ loc, kind: "assign", localId, value });
539
+ const bump = (op = "+") => ({
540
+ loc,
541
+ kind: "exprStmt",
542
+ expr: { loc, kind: "incDec", op, prefix: false, localId: "it", type: F64 },
543
+ });
544
+ const and = (left, right) => ({
545
+ loc,
546
+ kind: "logical",
547
+ op: "&&",
548
+ left,
549
+ right,
550
+ type: BOOL,
551
+ });
552
+ const run = (options = {}) => {
553
+ const inside = ref("it"), after = ref("it");
554
+ const f = fn([
555
+ set("max", num(300)),
556
+ set("it", options.start ?? num(0)),
557
+ ...(options.before ?? []),
558
+ {
559
+ loc,
560
+ kind: "while",
561
+ cond: options.cond ??
562
+ and(condition("<=", ref("unknown"), num(4)), condition("<", ref("it"), ref("max"))),
563
+ body: options.body ?? [observe(inside), bump()],
564
+ },
565
+ observe(after),
566
+ ]);
567
+ for (const id of ["it", "max"])
568
+ f.locals.push({ id, name: id, type: F64, mutable: true });
569
+ const ranges = analyzeIntegerRanges(f);
570
+ return { inside: ranges.get(inside), after: ranges.get(after) };
571
+ };
572
+ expect(run()).toEqual({ inside: { min: 0, max: 299 }, after: { min: 0, max: 300 } });
573
+ // `MAX > it`, an inclusive bound, two increments per pass and an early exit.
574
+ expect(run({ cond: condition(">", ref("max"), ref("it")) }).after).toEqual({ min: 0, max: 300 });
575
+ expect(run({ cond: condition("<=", ref("it"), num(10)) }).after).toEqual({ min: 0, max: 11 });
576
+ const twice = [observe(ref("it")), bump(), set("it", bin("+", ref("it"), num(2)))];
577
+ expect(run({ body: twice }).after).toEqual({ min: 0, max: 302 });
578
+ const exit = {
579
+ loc,
580
+ kind: "if",
581
+ cond: condition("===", ref("unknown"), num(0)),
582
+ then: [{ loc, kind: "break" }],
583
+ else_: null,
584
+ };
585
+ expect(run({ body: [exit, bump()] }).after).toEqual({ min: 0, max: 300 });
586
+ // A start above the bound stays the entry value.
587
+ expect(run({ start: num(500) }).after).toEqual({ min: 500, max: 500 });
588
+ // Decrements, fractional or variable steps, increments in a nested loop,
589
+ // writes in the condition, a bound the loop writes, a disjunction, and an
590
+ // unknown start prove nothing.
591
+ const nested = {
592
+ loc,
593
+ kind: "while",
594
+ cond: condition("<", ref("unknown"), num(3)),
595
+ body: [bump()],
596
+ };
597
+ const counted = { loc, kind: "incDec", op: "+", prefix: false, localId: "it", type: F64 };
598
+ const open = [
599
+ ["decrement", { body: [bump("-")] }],
600
+ ["fraction step", { body: [set("it", bin("+", ref("it"), num(0.5)))] }],
601
+ ["variable step", { body: [set("it", bin("+", ref("it"), ref("unknown")))] }],
602
+ ["nested increment", { body: [nested] }],
603
+ ["condition write", { cond: condition("<", counted, ref("max")), body: [] }],
604
+ ["written bound", { body: [bump(), set("max", num(1e12))] }],
605
+ [
606
+ "disjunction",
607
+ {
608
+ cond: {
609
+ loc,
610
+ kind: "logical",
611
+ op: "||",
612
+ left: condition("<=", ref("unknown"), num(4)),
613
+ right: condition("<", ref("it"), ref("max")),
614
+ type: BOOL,
615
+ },
616
+ },
617
+ ],
618
+ ["unknown start", { start: ref("unknown") }],
619
+ ];
620
+ for (const [label, options] of open)
621
+ expect(run(options).after, label).toBeNull();
622
+ });
405
623
  test("whole-program slot facts seed parameters, field reads and call results", () => {
406
624
  const field = {
407
625
  loc,
@@ -1 +1 @@
1
- {"version":3,"file":"integer-ranges.test.js","sourceRoot":"","sources":["../../src/ir/integer-ranges.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,GAGb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAA6C,MAAM,SAAS,CAAC;AAEvF,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAClD,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACnF,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACrF,MAAM,GAAG,GAAG,CAAC,EAA0C,EAAE,IAAY,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC;IAChG,GAAG;IACH,IAAI,EAAE,KAAK;IACX,EAAE;IACF,IAAI;IACJ,KAAK;IACL,IAAI,EAAE,GAAG;CACV,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,MAAM,EAAE,GAAG,CAAC,IAAc,EAAE,KAAK,GAAG,KAAK,EAAc,EAAE,CAAC,CAAC;IACzD,GAAG;IACH,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,EAAE;IACV,UAAU,EAAE,GAAG;IACf,MAAM,EAAE;QACN,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;KAC7F;IACD,IAAI;CACL,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC9E,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC;QACX,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;KACzC,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACjF,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC1E,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9F,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAClG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACpF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iFAAiF,EAAE,GAAG,EAAE;IAC3F,MAAM,GAAG,GAAG,GAAW,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACnF,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE;QACrC,MAAM,CAAC,SAAS,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QACrD,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE;KAC3C,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,MAAM,CACJ,oBAAoB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CACzF,KAAK,CACN,CACF,CAAC,QAAQ,EAAE,CAAC;AACf,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2EAA2E,EAAE,GAAG,EAAE;IACrF,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,KAAK,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACjG,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QACxD,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;QACtC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;KACvF,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACnF,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;QACvC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrB;YACE,GAAG;YACH,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;SAC3E;KACF,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,CAChB,EAA0C,EAC1C,IAAY,EACZ,KAAa,EACL,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,MAAM,OAAO,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACpF,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AACpD,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AAC3C,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AAErD,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC9E,MAAM,MAAM,GAAG,GAAG,EAAE,EAClB,MAAM,GAAG,GAAG,EAAE,CAAC;IACjB,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC;YACE,GAAG;YACH,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACxB;QACD,OAAO,CAAC,MAAM,CAAC;KAChB,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACjF,MAAM,MAAM,GAAG,GAAG,EAAE,EAClB,KAAK,GAAG,GAAG,EAAE,EACb,IAAI,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,KAAK,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC1F,MAAM,OAAO,GAAW;QACtB,GAAG;QACH,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACb,IAAI,EAAE,GAAG;KACV,CAAC;IACF,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC;QACd,OAAO,CAAC;YACN,GAAG;YACH,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;YAClC,IAAI,EAAE,GAAG;SACV,CAAC;QACF,OAAO,CAAC,IAAI,CAAC;KACd,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IACtB,MAAM,MAAM,GAAW;QACrB,GAAG;QACH,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;QAChB,IAAI,EAAE,GAAG;KACV,CAAC;IACF,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd;YACE,GAAG;YACH,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC;YACnC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxB,KAAK,EAAE,IAAI;SACZ;KACF,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0EAA0E,EAAE,GAAG,EAAE;IACpF,MAAM,UAAU,GAAG,GAAG,EAAE,EACtB,SAAS,GAAG,GAAG,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB;YACE,GAAG;YACH,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,IAAI,EAAE;gBACJ;oBACE,GAAG;oBACH,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC3C,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;oBAC7C,KAAK,EAAE,IAAI;iBACZ;gBACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACf;SACF;QACD,OAAO,CAAC,UAAU,CAAC;QACnB;YACE,GAAG;YACH,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS,CACb,GAAG,EACH,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EACnE,GAAG,CAAC,CAAC,CAAC,CAAC,CACR;YACD,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAC3B;KACF,CAAC,CACH,CAAC;IACF,wEAAwE;IACxE,sEAAsE;IACtE,iCAAiC;IACjC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACzD,uEAAuE;IACvE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,OAAO,GAAG,GAAG,EAAE,EACnB,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,EACtB,KAAK,GAAG,GAAG,EAAE,CAAC;IAChB,MAAM,CAAC,GAAG,EAAE,CAAC;QACX;YACE,GAAG;YACH,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;YAC1D,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,EAAE;gBACJ,OAAO,CAAC,OAAO,CAAC;gBAChB,OAAO,CAAC,OAAO,CAAC;gBAChB,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;aACzD;SACF;QACD,OAAO,CAAC,KAAK,CAAC;KACf,CAAC,CAAC;IACH,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0EAA0E,EAAE,GAAG,EAAE;IACpF,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,EAC5B,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,EACxB,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,MAAM,IAAI,GAA6B;QACrC,GAAG;QACH,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;QAC1D,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,EAAE;YACJ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YACpF;gBACE,GAAG;gBACH,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3C,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBACjC,KAAK,EAAE,IAAI;aACZ;YACD,OAAO,CAAC,OAAO,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC;YACf,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE;SACxF;KACF,CAAC;IACF,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,MAAM,CAAC,IAAI,CACX,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CACrF,CAAC;IACF,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAChE,KAAK,MAAM,QAAQ,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAU,EAAE,CAAC;QAC9E,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAA8B,CAAC,IAAI,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAgC,CAAC;QACtD,IAAI,QAAQ,KAAK,UAAU;YAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,IAAI,QAAQ,KAAK,QAAQ;YACvB,IAAI,CAAC,CAAC,CAAC,GAAG;gBACR,GAAG;gBACH,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,EAAE,CAAC,MAAM,CAAC;aACf,CAAC;QACJ,IAAI,QAAQ,KAAK,UAAU;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAkC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxF,IAAI,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAkC,CAAC;QAC7D,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnF,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;IACvF,MAAM,WAAW,GAAG,GAAG,EAAE,EACvB,UAAU,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd;YACE,GAAG;YACH,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,KAAK,EAAE,IAAI;SACZ;QACD,OAAO,CAAC,WAAW,CAAC;QACpB;YACE,GAAG;YACH,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,EAAE;gBACJ;oBACE,GAAG;oBACH,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,CAAC,MAAM,CAAC;oBAChB,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;iBAChE;aACF;YACD,KAAK,EAAE,IAAI;SACZ;QACD,OAAO,CAAC,UAAU,CAAC;KACpB,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC9E,MAAM,IAAI,GAAG,CAAC,KAAa,EAAoD,EAAE;QAC/E,MAAM,MAAM,GAAG,GAAG,EAAE,EAClB,KAAK,GAAG,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACd;gBACE,GAAG;gBACH,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;aACvC;YACD,OAAO,CAAC,KAAK,CAAC;SACf,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC9B,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,oBAAoB,CACnC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd;YACE,GAAG;YACH,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzD,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;aACxC;SACQ;QACX,OAAO,CAAC,WAAW,CAAC;KACrB,CAAC,CACH,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,gFAAgF;IAChF,MAAM,IAAI,GAAG,CAAC,KAAoB,EAAE,MAAgB,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,EACvB,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAChC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC;YACvD,GAAG;YACH,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,KAAK;SACN,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC;gBACE,GAAG;gBACH,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC1D,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,EAAE;oBACJ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;iBAC5C;aACF;YACD,OAAO,CAAC,KAAK,CAAC;SACf,CAAC,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;YACrC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,0DAA0D;IAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,yEAAyE;IACzE,oBAAoB;IACpB,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IACD,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,IAAI,GAAqC;QAC7C,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QACf,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;QACvB,CAAC,IAAI,EAAE,IAAI,CAAC;KACb,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;IAClF,MAAM,KAAK,GAAW;QACpB,GAAG;QACH,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;QACpF,SAAS,EAAE,GAAG;QACd,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,GAAG;KACV,CAAC;IACF,MAAM,MAAM,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAClF,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,GAAe;QACpB,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAChD,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KAC3D,CAAC;IACF,MAAM,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,EAAE;QACrC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;KACrD,CAAC,CAAC;IACH,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;IACvF,MAAM,IAAI,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACzE,MAAM,IAAI,GAAG,CAAC,MAA2C,EAAE,IAAI,GAAa,EAAE,EAAU,EAAE,CAAC,CAAC;QAC1F,GAAG;QACH,IAAI,EAAE,cAAc;QACpB,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,IAAI;QACJ,IAAI,EAAE,GAAG;KACV,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CACpE,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAChE,yBAAyB;IACzB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,MAAM,OAAO,GAA+D;IAC1E,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK;IAClC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK;IAClC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK;IAClC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK;IACpC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK;IACpC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK;CACvC,CAAC;AAEF,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,MAAM,GAAmC;QAC7C,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAClB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAClB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;QACpB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAClB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;QACpB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;QACpB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QACnB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACnB,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACpB,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QACtC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QAClC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QACtC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QAC5C,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QACrC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QAC5B,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;KAClC,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,CAAC,CAAC;QACF,GAAG;QACH,CAAC,GAAG;QACJ,GAAG;QACH,QAAQ;QACR,CAAC,QAAQ;QACT,CAAC,IAAI,EAAE;QACP,CAAC,IAAI,EAAE;QACP,CAAC,IAAI,EAAE,GAAG,CAAC;QACX,CAAC,IAAI,EAAE,GAAG,CAAC;KACZ,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,OAAuB,EAAY,EAAE;QACpD,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE;YAAE,KAAK,IAAI,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE;gBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;IACrE,CAAC,CAAC;IACF,MAAM,QAAQ,GAAqB,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACzF,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAgB;QAClD,KAAK,MAAM,IAAI,IAAI,QAAQ;YACzB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;oBAC3B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACjC,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;4BACnE,MAAM,IAAI,KAAK,CACb,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,MAAM,aAAa,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAChI,CAAC;oBACN,CAAC;YACL,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACpD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnF,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnF,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3D,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QAChB,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;KACjB,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACnE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAChB,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9D,gEAAgE;IAChE,MAAM,MAAM,GAAW;QACrB,GAAG;QACH,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;QAC7D,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,GAAG;KACV,CAAC;IACF,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,oBAAoB,CACnC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnF,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,CAAC,EAAa,EAAE,IAAY,EAAE,KAAa,EAAE,EAAE,CAC9D,sBAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAA6B,CAAC,CAAC;IAC3E,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7C,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAChD,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"integer-ranges.test.js","sourceRoot":"","sources":["../../src/ir/integer-ranges.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,YAAY,GAGb,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAA6C,MAAM,SAAS,CAAC;AAEvF,MAAM,GAAG,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AAClD,MAAM,GAAG,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACnF,MAAM,GAAG,GAAG,CAAC,OAAO,GAAG,GAAG,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACrF,MAAM,GAAG,GAAG,CAAC,EAA0C,EAAE,IAAY,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC;IAChG,GAAG;IACH,IAAI,EAAE,KAAK;IACX,EAAE;IACF,IAAI;IACJ,KAAK;IACL,IAAI,EAAE,GAAG;CACV,CAAC,CAAC;AACH,MAAM,UAAU,GAAG,CAAC,OAAe,EAAU,EAAE,CAAC,CAAC;IAC/C,GAAG;IACH,IAAI,EAAE,OAAO;IACb,EAAE,EAAE,GAAG;IACP,OAAO;IACP,IAAI,EAAE,GAAG;CACV,CAAC,CAAC;AACH,MAAM,MAAM,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;AACzF,MAAM,EAAE,GAAG,CAAC,IAAc,EAAE,KAAK,GAAG,KAAK,EAAc,EAAE,CAAC,CAAC;IACzD,GAAG;IACH,IAAI,EAAE,GAAG;IACT,MAAM,EAAE,EAAE;IACV,UAAU,EAAE,GAAG;IACf,MAAM,EAAE;QACN,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;KAC7F;IACD,IAAI;CACL,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC9E,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC,MAAM,CAAC,GAAG,CAAC;QACX,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE;KACzC,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACvE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACjF,KAAK,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,QAAQ,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC1E,MAAM,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,MAAM,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9F,CAAC;IACD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,oBAAoB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;IAClG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACpF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACzC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,iFAAiF,EAAE,GAAG,EAAE;IAC3F,MAAM,GAAG,GAAG,GAAW,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,MAAM,IAAI,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACnF,MAAM,SAAS,GAAG,GAAG,EAAE,CAAC;IACxB,MAAM,UAAU,GAAG,GAAG,EAAE,CAAC;IACzB,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE;QACrC,MAAM,CAAC,SAAS,CAAC;QACjB,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE;QACrD,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE;KAC3C,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC1D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC1C,MAAM,CACJ,oBAAoB,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,CACzF,KAAK,CACN,CACF,CAAC,QAAQ,EAAE,CAAC;AACf,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2EAA2E,EAAE,GAAG,EAAE;IACrF,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,KAAK,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IACjG,MAAM,KAAK,GAAG,GAAG,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE;QACxD,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE;QACtC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE;KACvF,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACnF,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,MAAM,EAAE;QACvC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACrB;YACE,GAAG;YACH,IAAI,EAAE,QAAQ;YACd,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;SAC3E;KACF,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxC,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,CAChB,EAA0C,EAC1C,IAAY,EACZ,KAAa,EACL,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AACjE,MAAM,OAAO,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACpF,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AACpD,MAAM,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AAC3C,MAAM,gBAAgB,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC;AAErD,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC9E,MAAM,MAAM,GAAG,GAAG,EAAE,EAClB,MAAM,GAAG,GAAG,EAAE,CAAC;IACjB,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACxC;YACE,GAAG;YACH,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC1D,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACxB;QACD,OAAO,CAAC,MAAM,CAAC;KAChB,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC3D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,uEAAuE,EAAE,GAAG,EAAE;IACjF,MAAM,MAAM,GAAG,GAAG,EAAE,EAClB,KAAK,GAAG,GAAG,EAAE,EACb,IAAI,GAAG,GAAG,EAAE,CAAC;IACf,MAAM,KAAK,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAC1F,MAAM,OAAO,GAAW;QACtB,GAAG;QACH,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC3C,IAAI,EAAE,KAAK;QACX,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;QACb,IAAI,EAAE,GAAG;KACV,CAAC;IACF,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC;QACd,OAAO,CAAC;YACN,GAAG;YACH,IAAI,EAAE,SAAS;YACf,EAAE,EAAE,IAAI;YACR,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC;YACjB,KAAK,EAAE,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;YAClC,IAAI,EAAE,GAAG;SACV,CAAC;QACF,OAAO,CAAC,IAAI,CAAC;KACd,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC;IACtB,MAAM,MAAM,GAAW;QACrB,GAAG;QACH,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;QAChB,IAAI,EAAE,GAAG;KACV,CAAC;IACF,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd;YACE,GAAG;YACH,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,CAAC;YACnC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACxB,KAAK,EAAE,IAAI;SACZ;KACF,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0EAA0E,EAAE,GAAG,EAAE;IACpF,MAAM,UAAU,GAAG,GAAG,EAAE,EACtB,SAAS,GAAG,GAAG,EAAE,CAAC;IACpB,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB;YACE,GAAG;YACH,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,CAAC,MAAM,CAAC;YAChB,IAAI,EAAE;gBACJ;oBACE,GAAG;oBACH,IAAI,EAAE,IAAI;oBACV,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC3C,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;oBAC7C,KAAK,EAAE,IAAI;iBACZ;gBACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;aACf;SACF;QACD,OAAO,CAAC,UAAU,CAAC;QACnB;YACE,GAAG;YACH,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,SAAS,CACb,GAAG,EACH,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,EACnE,GAAG,CAAC,CAAC,CAAC,CAAC,CACR;YACD,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;SAC3B;KACF,CAAC,CACH,CAAC;IACF,uEAAuE;IACvE,wEAAwE;IACxE,uCAAuC;IACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC7D,uEAAuE;IACvE,wDAAwD;IACxD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,MAAM,OAAO,GAAG,GAAG,EAAE,EACnB,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,EACtB,KAAK,GAAG,GAAG,EAAE,CAAC;IAChB,MAAM,CAAC,GAAG,EAAE,CAAC;QACX;YACE,GAAG;YACH,IAAI,EAAE,KAAK;YACX,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;YAC1D,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;YACpC,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,EAAE;gBACJ,OAAO,CAAC,OAAO,CAAC;gBAChB,OAAO,CAAC,OAAO,CAAC;gBAChB,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;aACzD;SACF;QACD,OAAO,CAAC,KAAK,CAAC;KACf,CAAC,CAAC;IACH,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IACxE,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AACvC,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0EAA0E,EAAE,GAAG,EAAE;IACpF,MAAM,MAAM,GAAG,GAAG,CAAC,UAAU,CAAC,EAC5B,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,EACxB,aAAa,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAC3B,MAAM,IAAI,GAA6B;QACrC,GAAG;QACH,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;QAC1D,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACxC,IAAI,EAAE;YACJ,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;YACpF;gBACE,GAAG;gBACH,IAAI,EAAE,IAAI;gBACV,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC3C,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;gBACjC,KAAK,EAAE,IAAI;aACZ;YACD,OAAO,CAAC,OAAO,CAAC;YAChB,OAAO,CAAC,MAAM,CAAC;YACf,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE;SACxF;KACF,CAAC;IACF,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC;IAClF,CAAC,CAAC,MAAM,CAAC,IAAI,CACX,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CACrF,CAAC;IACF,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IACxD,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IACjE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAChE,KAAK,MAAM,QAAQ,IAAI,CAAC,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAU,EAAE,CAAC;QAC9E,MAAM,OAAO,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;QACnC,MAAM,IAAI,GAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAA8B,CAAC,IAAI,CAAC;QAChE,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,CAAgC,CAAC;QACtD,IAAI,QAAQ,KAAK,UAAU;YAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAChF,IAAI,QAAQ,KAAK,QAAQ;YACvB,IAAI,CAAC,CAAC,CAAC,GAAG;gBACR,GAAG;gBACH,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,EAAE,CAAC,MAAM,CAAC;aACf,CAAC;QACJ,IAAI,QAAQ,KAAK,UAAU;YACxB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAkC,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QACxF,IAAI,QAAQ,KAAK,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,CAAC,CAAkC,CAAC;QAC7D,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnF,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;IACvF,MAAM,WAAW,GAAG,GAAG,EAAE,EACvB,UAAU,GAAG,GAAG,EAAE,CAAC;IACrB,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd;YACE,GAAG;YACH,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9C,KAAK,EAAE,IAAI;SACZ;QACD,OAAO,CAAC,WAAW,CAAC;QACpB;YACE,GAAG;YACH,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,EAAE;gBACJ;oBACE,GAAG;oBACH,IAAI,EAAE,OAAO;oBACb,MAAM,EAAE,CAAC,MAAM,CAAC;oBAChB,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;iBAChE;aACF;YACD,KAAK,EAAE,IAAI;SACZ;QACD,OAAO,CAAC,UAAU,CAAC;KACpB,CAAC,CACH,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC5D,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC5C,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,oEAAoE,EAAE,GAAG,EAAE;IAC9E,MAAM,IAAI,GAAG,CAAC,KAAa,EAAoD,EAAE;QAC/E,MAAM,MAAM,GAAG,GAAG,EAAE,EAClB,KAAK,GAAG,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,EAAE,CAAC;YACX,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACd;gBACE,GAAG;gBACH,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;aACvC;YACD,OAAO,CAAC,KAAK,CAAC;SACf,CAAC,CAAC;QACH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAC9B,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrD,MAAM,YAAY,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACvD,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1D,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7E,wEAAwE;IACxE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjD,MAAM,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvF,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;QACzB,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC9E,CAAC;IACD,MAAM,WAAW,GAAG,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,oBAAoB,CACnC,EAAE,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QACd;YACE,GAAG;YACH,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC;YACpB,KAAK,EAAE;gBACL,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;gBACzD,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE;aACxC;SACQ;QACX,OAAO,CAAC,WAAW,CAAC;KACrB,CAAC,CACH,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACnD,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,gFAAgF;IAChF,MAAM,IAAI,GAAG,CAAC,KAAoB,EAAE,MAAgB,EAAE,EAAE;QACtD,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,EACvB,GAAG,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAChC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC;QACrB,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC;YACvD,GAAG;YACH,IAAI,EAAE,QAAQ;YACd,OAAO;YACP,KAAK;SACN,CAAC,CAAC;QACH,MAAM,CAAC,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YACrC;gBACE,GAAG;gBACH,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC1D,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBACxC,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,EAAE;oBACJ,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC5C,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;oBACnC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;iBAC5C;aACF;YACD,OAAO,CAAC,KAAK,CAAC;SACf,CAAC,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;YACrC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,EAAE,oBAAoB,CAAC,CAAC,CAAC,EAAE,CAAC;IACjE,CAAC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAChC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACzD,0DAA0D;IAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC;IAC/E,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACxD,yEAAyE;IACzE,oBAAoB;IACpB,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5C,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IACD,uEAAuE;IACvE,wEAAwE;IACxE,MAAM,IAAI,GAAqC;QAC7C,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;QACzB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QACf,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC;QACvB,CAAC,IAAI,EAAE,IAAI,CAAC;KACb,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACjD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QACpD,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrD,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,2EAA2E,EAAE,GAAG,EAAE;IACrF,8BAA8B;IAC9B,2EAA2E;IAC3E,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,CAAC,KAAa,EAAE,KAA4B,EAAE,EAAE;QAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EACrB,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,EAChB,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC1C,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC;YACf;gBACE,GAAG;gBACH,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC1D,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;gBAC3C,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC5C,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;aACzC;YACD,OAAO,CAAC,KAAK,CAAC;SACf,CAAC,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;YAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5F,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAC5F,CAAC,CAAC;IACF,MAAM,CAAC,GAAG,OAAO,CAAC;IAClB,wEAAwE;IACxE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC;QACnB,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE;QAC9B,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE;QAC7B,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE;KAC9B,CAAC,CAAC;IACH,8DAA8D;IAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvD,mEAAmE;IACnE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QAChF,GAAG,EAAE,CAAC;QACN,GAAG,EAAE,CAAC;KACP,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAC9B,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CACjE,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACzD,oEAAoE;IACpE,2EAA2E;IAC3E,MAAM,CACJ,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CACzF,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9B,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;QAC5F,GAAG,EAAE,CAAC,CAAC;QACP,GAAG,EAAE,CAAC,CAAC;KACR,CAAC,CAAC;IACH,uEAAuE;IACvE,oEAAoE;IACpE,MAAM,IAAI,GAA8C;QACtD;YACE,wBAAwB;YACxB,GAAG,CAAC,CAAC,CAAC;YACN,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;SAClE;QACD,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACnE,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;QAC/D,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1D,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1D,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1E,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/E,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC9F,CAAC,gBAAgB,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3E,CAAC,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC,gBAAgB,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;KACpE,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;QACxC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,qEAAqE,EAAE,GAAG,EAAE;IAC/E,2EAA2E;IAC3E,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,CACX,IAAY,EACZ,MAAM,GAA0B,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAC5D,IAAI,GAAa,EAAE,EACnB,EAAE;QACF,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EACrB,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;YACd;gBACE,GAAG;gBACH,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE;gBAC9E,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC1C,MAAM,EAAE,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;gBACtB,IAAI,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC;aACjC;SACF,CAAC,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC;YAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QACvF,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAChE,CAAC,CAAC;IACF,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACpE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/F,qCAAqC;IACrC,MAAM,KAAK,GAAW;QACpB,GAAG;QACH,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC9B,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;KACnC,CAAC;IACF,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;IACjF,mEAAmE;IACnE,yDAAyD;IACzD,MAAM,IAAI,GAAsE;QAC9E,CAAC,WAAW,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QAC9D,CAAC,eAAe,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QACtD,CAAC,eAAe,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QAC1C,CAAC,cAAc,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QAC/C,CAAC,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzD,CAAC,iBAAiB,EAAE,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC;KAChE,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,IAAI;QAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6DAA6D,EAAE,GAAG,EAAE;IACvE,iFAAiF;IACjF,MAAM,GAAG,GAAG,CAAC,OAAe,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAClG,MAAM,IAAI,GAAG,CAAC,EAAE,GAAc,GAAG,EAAU,EAAE,CAAC,CAAC;QAC7C,GAAG;QACH,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;KAC3E,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,KAAa,EAAU,EAAE,CAAC,CAAC;QACpD,GAAG;QACH,IAAI,EAAE,SAAS;QACf,EAAE,EAAE,IAAI;QACR,IAAI;QACJ,KAAK;QACL,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,CACV,OAAO,GAKH,EAAE,EACN,EAAE;QACF,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,EACtB,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,MAAM,CAAC,GAAG,EAAE,CAAC;YACX,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACpB,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC;YAClC,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;YACzB;gBACE,GAAG;gBACH,IAAI,EAAE,OAAO;gBACb,IAAI,EACF,OAAO,CAAC,IAAI;oBACZ,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBACrF,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC;aAChD;YACD,OAAO,CAAC,KAAK,CAAC;SACf,CAAC,CAAC;QACH,KAAK,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;YAAE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1F,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;QACvC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IAClE,CAAC,CAAC;IACF,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;IACrF,6EAA6E;IAC7E,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACjG,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAC9F,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACnF,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACjE,MAAM,IAAI,GAAW;QACnB,GAAG;QACH,IAAI,EAAE,IAAI;QACV,IAAI,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC9C,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC9B,KAAK,EAAE,IAAI;KACZ,CAAC;IACF,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IAC1E,iDAAiD;IACjD,MAAM,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACvE,yEAAyE;IACzE,0EAA0E;IAC1E,+BAA+B;IAC/B,MAAM,MAAM,GAAW;QACrB,GAAG;QACH,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;QAC5C,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;KACf,CAAC;IACF,MAAM,OAAO,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAClG,MAAM,IAAI,GAA0C;QAClD,CAAC,WAAW,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QACpC,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,CAAC,kBAAkB,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QACxC,CAAC,iBAAiB,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC5E,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D;YACE,aAAa;YACb;gBACE,IAAI,EAAE;oBACJ,GAAG;oBACH,IAAI,EAAE,SAAS;oBACf,EAAE,EAAE,IAAI;oBACR,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC7C,KAAK,EAAE,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;oBAC5C,IAAI,EAAE,IAAI;iBACX;aACF;SACF;QACD,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;KAC7C,CAAC;IACF,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,IAAI;QAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC;AACpF,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,wEAAwE,EAAE,GAAG,EAAE;IAClF,MAAM,KAAK,GAAW;QACpB,GAAG;QACH,IAAI,EAAE,UAAU;QAChB,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,EAAE;QACpF,SAAS,EAAE,GAAG;QACd,KAAK,EAAE,OAAO;QACd,IAAI,EAAE,GAAG;KACV,CAAC;IACF,MAAM,MAAM,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;IAClF,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,MAAM,CAAC,GAAe;QACpB,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACxD,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAChD,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;KAC3D,CAAC;IACF,MAAM,KAAK,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5F,MAAM,MAAM,GAAG,oBAAoB,CAAC,CAAC,EAAE;QACrC,MAAM,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QAC/B,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,KAAK,GAAG,IAAI,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAClF,IAAI,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;KACrD,CAAC,CAAC;IACH,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;AACpG,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,6EAA6E,EAAE,GAAG,EAAE;IACvF,MAAM,IAAI,GAAW,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;IACzE,MAAM,IAAI,GAAG,CAAC,MAA2C,EAAE,IAAI,GAAa,EAAE,EAAU,EAAE,CAAC,CAAC;QAC1F,GAAG;QACH,IAAI,EAAE,cAAc;QACpB,MAAM;QACN,QAAQ,EAAE,IAAI;QACd,IAAI;QACJ,IAAI,EAAE,GAAG;KACV,CAAC,CAAC;IACH,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IACnF,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,oBAAoB,CACjC,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CACpE,CAAC;IACF,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAChE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;IAChE,yBAAyB;IACzB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACpC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AAChE,CAAC,CAAC,CAAC;AAEH,MAAM,OAAO,GAA+D;IAC1E,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK;IAClC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK;IAClC,GAAG,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,GAAG,KAAK;IAClC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK;IACpC,IAAI,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,IAAI,KAAK;IACpC,KAAK,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,KAAK;CACvC,CAAC;AAEF,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,MAAM,GAAmC;QAC7C,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAClB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAClB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE;QACpB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QAClB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;QACpB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE;QACpB,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;QACnB,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE;QACnB,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE;QACpB,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QACtC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QAClC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QACtC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE;QAC5C,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QACrC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;QAC5B,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE;KAClC,CAAC;IACF,MAAM,QAAQ,GAAG;QACf,CAAC,CAAC;QACF,GAAG;QACH,CAAC,GAAG;QACJ,GAAG;QACH,QAAQ;QACR,CAAC,QAAQ;QACT,CAAC,IAAI,EAAE;QACP,CAAC,IAAI,EAAE;QACP,CAAC,IAAI,EAAE,GAAG,CAAC;QACX,CAAC,IAAI,EAAE,GAAG,CAAC;KACZ,CAAC;IACF,MAAM,OAAO,GAAG,CAAC,OAAuB,EAAY,EAAE;QACpD,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,CAAC,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3E,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;QAClF,IAAI,GAAG,GAAG,GAAG,IAAI,EAAE;YAAE,KAAK,IAAI,KAAK,GAAG,GAAG,EAAE,KAAK,IAAI,GAAG,EAAE,KAAK,EAAE;gBAAE,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,GAAG,IAAI,KAAK,IAAI,GAAG,CAAC,CAAC;IACrE,CAAC,CAAC;IACF,MAAM,QAAQ,GAAqB,CAAC,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACzF,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAgB;QAClD,KAAK,MAAM,IAAI,IAAI,QAAQ;YACzB,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;gBAC7B,MAAM,KAAK,GAAG,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC;oBAC3B,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;wBACjC,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,MAAM,GAAG,KAAK,CAAC,GAAG,IAAI,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;4BACnE,MAAM,IAAI,KAAK,CACb,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,MAAM,aAAa,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAChI,CAAC;oBACN,CAAC;YACL,CAAC;AACP,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0CAA0C,EAAE,GAAG,EAAE;IACpD,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;IACnC,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACnD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACpD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnF,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnF,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;IACnE,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IAC3E,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QAC3D,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;QAChB,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC;KACjB,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACnE,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACf,GAAG,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KAChB,CAAC,CAAC;IACH,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC9D,gEAAgE;IAChE,MAAM,MAAM,GAAW;QACrB,GAAG;QACH,IAAI,EAAE,cAAc;QACpB,MAAM,EAAE,QAAQ;QAChB,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE;QAC7D,IAAI,EAAE,EAAE;QACR,IAAI,EAAE,GAAG;KACV,CAAC;IACF,MAAM,SAAS,GAAG,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,oBAAoB,CACnC,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,SAAS,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CACnF,CAAC;IACF,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;IACtE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,mEAAmE,EAAE,GAAG,EAAE;IAC7E,MAAM,CAAC,GAAG,GAAG,EAAE,CAAC;IAChB,MAAM,QAAQ,GAAG,CAAC,EAAa,EAAE,IAAY,EAAE,KAAa,EAAE,EAAE,CAC9D,sBAAsB,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAA6B,CAAC,CAAC;IAC3E,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC9C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC5C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7C,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7C,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAChD,CAAC,CAAC,CAAC"}