@actuarial-ts/core 0.8.0 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -6,13 +6,13 @@ The package is designed to support the actuary's compliance with the ASOPs; it d
6
6
 
7
7
  SDK 0.8 adds versioned loss history, irregular period and exposure contracts,
8
8
  population statistics, shared financial terms, and deterministic recipe and
9
- scenario execution. See the [0.8 adoption guide](https://github.com/yerromnitsuj/actng/blob/v0.8.0/docs/migrations/0.8-reusable-customization.md)
10
- and [customization reference](https://github.com/yerromnitsuj/actng/blob/v0.8.0/docs/reference/reusable-customization.md).
9
+ scenario execution. See the [0.8 adoption guide](https://github.com/yerromnitsuj/actng/blob/v0.8.1/docs/migrations/0.8-reusable-customization.md)
10
+ and [customization reference](https://github.com/yerromnitsuj/actng/blob/v0.8.1/docs/reference/reusable-customization.md).
11
11
 
12
12
  ## Install
13
13
 
14
14
  ```bash
15
- npm install @actuarial-ts/core@0.8.0
15
+ npm install @actuarial-ts/core@0.8.1
16
16
  ```
17
17
 
18
18
  ESM, TypeScript-first, zero runtime dependencies, Node 20+.
@@ -114,8 +114,8 @@ ordinary preparation. These functions do not issue review or execution receipts.
114
114
 
115
115
  These are lower-level calculation APIs. For a host import or analysis boundary
116
116
  that enforces both review and metric execution policy, use the validated gateway
117
- in `@actuarial-ts/data`. The runnable [compact adoption guide](https://github.com/yerromnitsuj/actng/blob/v0.8.0/docs/migrations/0.7-compact-diagnostics.md)
118
- covers the complete workflow and [streamed replay](https://github.com/yerromnitsuj/actng/blob/v0.8.0/docs/reference/diagnostic-replay-stream.md).
117
+ in `@actuarial-ts/data`. The runnable [compact adoption guide](https://github.com/yerromnitsuj/actng/blob/v0.8.1/docs/migrations/0.7-compact-diagnostics.md)
118
+ covers the complete workflow and [streamed replay](https://github.com/yerromnitsuj/actng/blob/v0.8.1/docs/reference/diagnostic-replay-stream.md).
119
119
 
120
120
  The six built-in formulas are basis-independent. The factory creates ten count instances plus six per amount basis (`10 + 6 × basisCount`): one basis produces 16, two produce 22. A `$250K`, primary, gross, net, or ceded calculation is represented by caller-declared amount measures and a structured `AmountBasisDefinition`; it does not need a separate capped formula. Claim-level caps use `claim-layer` derivations before aggregation. Pre-limited external values record their source/transformation instead of implying the SDK recreated an unavailable claim-level operation.
121
121
 
@@ -132,7 +132,7 @@ numeric exposure values. This is a bounded capacity, not an unlimited scale clai
132
132
 
133
133
  Compilation validates the whole graph atomically: IDs, sources, role types, compatibility groups, development semantics, derivation acyclicity, expression limits, rule operands, basis/population references, and period coordinates. Authentic compiled/prepared objects are owner-branded and frozen. Formula, calculation, definition, preparation, and result identities are deterministic FNV-1a/JCS integrity aids—not cryptographic signatures.
134
134
 
135
- See the generated [formula and instance catalog](https://github.com/yerromnitsuj/actng/blob/v0.8.0/docs/reference/diagnostic-formulas.md) and [0.6 migration guide](https://github.com/yerromnitsuj/actng/blob/v0.8.0/docs/migrations/0.6-generalized-diagnostics.md).
135
+ See the generated [formula and instance catalog](https://github.com/yerromnitsuj/actng/blob/v0.8.1/docs/reference/diagnostic-formulas.md) and [0.6 migration guide](https://github.com/yerromnitsuj/actng/blob/v0.8.1/docs/migrations/0.6-generalized-diagnostics.md).
136
136
 
137
137
  ## Main method families
138
138
 
@@ -0,0 +1,6 @@
1
+ import type { AnalysisResult, AnalysisScenarioDifference } from "./customizationContracts.js";
2
+ /** Matches exact coordinates and retains unmatched values from both results. */
3
+ export declare function compareAnalysisResults(baseline: AnalysisResult, scenario: AnalysisResult): readonly AnalysisScenarioDifference[];
4
+ /** Internal roll-forward alignment: evaluation is the comparison axis, not a join key. */
5
+ export declare function compareAnalysisEvaluations(baseline: AnalysisResult, scenario: AnalysisResult, priorEvaluationDate: string, currentEvaluationDate: string): readonly AnalysisScenarioDifference[];
6
+ //# sourceMappingURL=analysisComparison.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysisComparison.d.ts","sourceRoot":"","sources":["../src/analysisComparison.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EAEd,0BAA0B,EAE3B,MAAM,6BAA6B,CAAC;AAmDrC,gFAAgF;AAChF,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,EAAE,cAAc,GAAG,SAAS,0BAA0B,EAAE,CAEhI;AAED,0FAA0F;AAC1F,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,cAAc,EACxB,QAAQ,EAAE,cAAc,EACxB,mBAAmB,EAAE,MAAM,EAC3B,qBAAqB,EAAE,MAAM,GAC5B,SAAS,0BAA0B,EAAE,CAEvC"}
@@ -0,0 +1,52 @@
1
+ import { canonicalJson } from "./canonical.js";
2
+ import { snapshotDiagnosticJson } from "./diagnosticRuntime.js";
3
+ import { DiagnosticValidationError } from "./types.js";
4
+ function indexValues(result, omitted) {
5
+ const indexed = new Map();
6
+ for (const value of result.values) {
7
+ const coordinates = Object.fromEntries(Object.entries(value.coordinates).filter(([name]) => !omitted.has(name)));
8
+ const key = canonicalJson([value.measureId, coordinates]);
9
+ if (indexed.has(key))
10
+ throw new DiagnosticValidationError([{
11
+ domain: "configuration", code: "incompatible-semantics", path: "$.values",
12
+ message: "Comparison coordinates must identify one value per measure on each side",
13
+ }]);
14
+ indexed.set(key, value);
15
+ }
16
+ return indexed;
17
+ }
18
+ function compare(baseline, scenario, omitted, evaluationPair) {
19
+ const left = indexValues(baseline, omitted);
20
+ const right = indexValues(scenario, omitted);
21
+ const keys = [...new Set([...left.keys(), ...right.keys()])].sort();
22
+ return snapshotDiagnosticJson(keys.map((key) => {
23
+ const before = left.get(key);
24
+ const after = right.get(key);
25
+ const value = before ?? after;
26
+ if (before !== undefined && after !== undefined && before.unit !== after.unit)
27
+ throw new DiagnosticValidationError([{
28
+ domain: "configuration", code: "incompatible-semantics", path: `$.values.${value.measureId}.unit`,
29
+ message: `Cannot compare ${before.unit} with ${after.unit}`,
30
+ }]);
31
+ const baselineValue = before?.status === "available" ? before.value : null;
32
+ const scenarioValue = after?.status === "available" ? after.value : null;
33
+ const difference = baselineValue === null || scenarioValue === null ? null : scenarioValue - baselineValue;
34
+ const absoluteDifference = difference !== null && Number.isFinite(difference) ? difference : null;
35
+ const percentage = absoluteDifference === null || baselineValue === null || baselineValue === 0
36
+ ? null : absoluteDifference / baselineValue;
37
+ const percentageDifference = percentage !== null && Number.isFinite(percentage) ? percentage : null;
38
+ const coordinates = evaluationPair === undefined
39
+ ? value.coordinates
40
+ : { ...Object.fromEntries(Object.entries(value.coordinates).filter(([name]) => name !== "evaluationDate")), ...evaluationPair };
41
+ return { measureId: value.measureId, unit: value.unit, coordinates, baselineValue, scenarioValue, absoluteDifference, percentageDifference };
42
+ }));
43
+ }
44
+ /** Matches exact coordinates and retains unmatched values from both results. */
45
+ export function compareAnalysisResults(baseline, scenario) {
46
+ return compare(baseline, scenario, new Set());
47
+ }
48
+ /** Internal roll-forward alignment: evaluation is the comparison axis, not a join key. */
49
+ export function compareAnalysisEvaluations(baseline, scenario, priorEvaluationDate, currentEvaluationDate) {
50
+ return compare(baseline, scenario, new Set(["evaluationDate", "originLabel"]), { priorEvaluationDate, currentEvaluationDate });
51
+ }
52
+ //# sourceMappingURL=analysisComparison.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysisComparison.js","sourceRoot":"","sources":["../src/analysisComparison.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
- import type { AnalysisDefinition, AnalysisRecipe, AnalysisResult, AnalysisScenario, AnalysisScenarioGrid, AnalysisScenarioDifference, AnalysisScenarioRun, AnalysisRollForward, AnalysisScenarioBridgeStep, AnalysisResultCache, CustomizationResourceLimits, CustomizationExposureObservation, ExposureAllocationTarget, ExposureRevisionSelection, HistoricalDatasetInput } from "./customizationContracts.js";
1
+ import type { AnalysisDefinition, AnalysisRecipe, AnalysisResult, AnalysisScenario, AnalysisScenarioGrid, AnalysisScenarioRun, AnalysisRollForward, AnalysisScenarioBridgeStep, AnalysisResultCache, CustomizationResourceLimits, CustomizationExposureObservation, ExposureAllocationTarget, ExposureRevisionSelection, HistoricalDatasetInput } from "./customizationContracts.js";
2
+ export { compareAnalysisResults } from "./analysisComparison.js";
2
3
  /** Executes the closed, deterministic recipe vocabulary over loss history and exposure inputs. */
3
4
  export declare function runAnalysisRecipe(input: {
4
5
  readonly history: HistoricalDatasetInput;
@@ -10,7 +11,6 @@ export declare function runAnalysisRecipe(input: {
10
11
  readonly evaluationDate?: string;
11
12
  }): AnalysisResult;
12
13
  export declare function applyAnalysisScenario(definition: AnalysisDefinition, scenario: AnalysisScenario): AnalysisDefinition;
13
- export declare function compareAnalysisResults(baseline: AnalysisResult, scenario: AnalysisResult): readonly AnalysisScenarioDifference[];
14
14
  /** Runs a bounded list of controlled scenarios against one immutable baseline. */
15
15
  export declare function runAnalysisScenarios(input: {
16
16
  readonly history: HistoricalDatasetInput;
@@ -1 +1 @@
1
- {"version":3,"file":"analysisRecipe.d.ts","sourceRoot":"","sources":["../src/analysisRecipe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysisRecipe.d.ts","sourceRoot":"","sources":["../src/analysisRecipe.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,9 @@
1
1
  import { canonicalJson, fnv1a64 } from "./canonical.js";
2
+ import { CORE_PACKAGE_VERSION } from "./version.js";
2
3
  import { calculateAnalysisStatistic } from "./descriptiveStatistics.js";
4
+ import { calculateRecipeExposureRatio } from "./analysisRecipeStatistics.js";
5
+ import { compareAnalysisEvaluations, compareAnalysisResults } from "./analysisComparison.js";
6
+ export { compareAnalysisResults } from "./analysisComparison.js";
3
7
  import { isDiagnosticToken, snapshotDiagnosticJson } from "./diagnosticRuntime.js";
4
8
  import { earnAndAllocateExposure } from "./exposureEarning.js";
5
9
  import { selectExposureRevisions, selectExposureValuation } from "./exposureRevisions.js";
@@ -133,7 +137,9 @@ export function runAnalysisRecipe(input) {
133
137
  const reportingPopulation = reportingSelection.matches;
134
138
  const reportingKeys = new Set(reportingPopulation.map(key));
135
139
  let effective = financialPopulation;
136
- let financialExecutionFindings = [...financialSelection.findings];
140
+ // A conflicted or incomplete history cannot authorize arithmetic over the
141
+ // surviving subset as though it were the complete financial population.
142
+ let financialExecutionFindings = [...prepared.findings, ...financialSelection.findings];
137
143
  const reportingExecutionFindings = [...reportingSelection.findings];
138
144
  const financialStep = input.recipe.steps.find((step) => step.kind === "apply-financial-terms");
139
145
  if (financialStep?.kind === "apply-financial-terms") {
@@ -141,7 +147,7 @@ export function runAnalysisRecipe(input) {
141
147
  const applied = applyFinancialTerms({
142
148
  observations: financialPopulation,
143
149
  terms,
144
- completeFinancialPopulation: true,
150
+ completeFinancialPopulation: financialExecutionFindings.length === 0,
145
151
  measureDefinitions: input.definition.measures,
146
152
  reportingClaims: reportingPopulation.map((observation) => ({ sourceNamespace: observation.sourceNamespace, claimId: observation.claimId })),
147
153
  });
@@ -176,7 +182,7 @@ export function runAnalysisRecipe(input) {
176
182
  amountMeasureId: pipelineStep.amountMeasureId,
177
183
  inputUnit: input.definition.measures.find((measure) => measure.statistic.kind === "sum" && measure.statistic.measureId === pipelineStep.amountMeasureId)?.unit ?? "unknown-unit",
178
184
  stages,
179
- completeFinancialPopulation: true,
185
+ completeFinancialPopulation: financialExecutionFindings.length === 0,
180
186
  reportingClaims: reportingPopulation.map((observation) => ({ sourceNamespace: observation.sourceNamespace, claimId: observation.claimId })),
181
187
  });
182
188
  if (applied.status === "available") {
@@ -241,6 +247,10 @@ export function runAnalysisRecipe(input) {
241
247
  group.observations.push(observation);
242
248
  }
243
249
  const measureIds = new Set(input.recipe.steps.filter((step) => step.kind === "calculate").flatMap((step) => step.measureIds));
250
+ // When preparation excluded every observation, retain visible unavailable
251
+ // output instead of hiding the preparation findings in an empty result.
252
+ if (groups.size === 0 && prepared.findings.length > 0)
253
+ groups.set("unassigned", { label: "Unavailable history", observations: [] });
244
254
  const values = [];
245
255
  for (const [originId, group] of [...groups].sort(([left], [right]) => left.localeCompare(right))) {
246
256
  for (const measure of input.definition.measures.filter((candidate) => measureIds.has(candidate.id))) {
@@ -285,29 +295,18 @@ export function runAnalysisRecipe(input) {
285
295
  }
286
296
  let statistic;
287
297
  if (measure.statistic.kind === "ratio" && exposedByTarget.get(originId)?.has(measure.statistic.denominatorMeasureId)) {
288
- const ratio = measure.statistic;
289
- const numerator = measureObservations.reduce((total, observation) => {
290
- const value = observation.measures[ratio.numeratorMeasureId];
291
- return total + (typeof value === "number" ? value : 0);
292
- }, 0);
293
- const denominator = exposedByTarget.get(originId).get(ratio.denominatorMeasureId);
294
- const seed = measureObservations[0];
295
- if (seed === undefined) {
296
- statistic = calculateAnalysisStatistic({ measure, observations: [], selection: { kind: "all-observations" } });
297
- }
298
- else {
299
- const synthetic = snapshotDiagnosticJson({ ...seed, measures: {
300
- [ratio.numeratorMeasureId]: numerator,
301
- [ratio.denominatorMeasureId]: denominator,
302
- } });
303
- statistic = calculateAnalysisStatistic({ measure, observations: [synthetic], selection: { kind: "all-observations" } });
304
- }
298
+ statistic = calculateRecipeExposureRatio({
299
+ measure,
300
+ observations: measureObservations,
301
+ selection: { kind: "evaluation-date", evaluationDate, observationSelection: input.definition.period.observationSelection },
302
+ exposure: exposedByTarget.get(originId).get(measure.statistic.denominatorMeasureId),
303
+ });
305
304
  }
306
305
  else {
307
306
  statistic = calculateAnalysisStatistic({
308
307
  measure,
309
308
  observations: measureObservations,
310
- selection: { kind: "evaluation-date", evaluationDate, observationSelection: "exact" },
309
+ selection: { kind: "evaluation-date", evaluationDate, observationSelection: input.definition.period.observationSelection },
311
310
  });
312
311
  }
313
312
  values.push({
@@ -348,11 +347,14 @@ export function runAnalysisRecipe(input) {
348
347
  }
349
348
  }
350
349
  const calculationInput = {
350
+ corePackageVersion: CORE_PACKAGE_VERSION,
351
351
  historyRevisionId: prepared.calculationRevisionId,
352
+ historyFindings: prepared.findings,
352
353
  definition: input.definition,
353
354
  recipe: input.recipe,
354
355
  evaluationDate,
355
356
  exposureRevisionIds: exposureCalculationRevisions.sort(),
357
+ exposureTargets: input.exposureTargets ?? [],
356
358
  };
357
359
  const lineageInput = {
358
360
  historyRevisionId: prepared.lineageRevisionId,
@@ -384,14 +386,15 @@ export function applyAnalysisScenario(definition, scenario) {
384
386
  if (scenarioIssues.length > 0)
385
387
  throw new DiagnosticValidationError(scenarioIssues);
386
388
  let reportingPredicate = definition.scopes.reporting.predicate;
389
+ for (const change of scenario.changes)
390
+ if (change.kind === "reporting-predicate")
391
+ reportingPredicate = change.predicate;
387
392
  const terms = definition.financialTerms.map((term) => {
388
393
  let current = term;
389
394
  for (const change of scenario.changes) {
390
- if (change.kind === "reporting-predicate")
391
- reportingPredicate = change.predicate;
392
- else if (change.termId === term.id && change.kind === "financial-term-limit")
395
+ if (change.kind === "financial-term-limit" && change.termId === term.id)
393
396
  current = { ...current, limit: change.limit };
394
- else if (change.termId === term.id && change.kind === "financial-term-attachment")
397
+ else if (change.kind === "financial-term-attachment" && change.termId === term.id)
395
398
  current = current.kind === "policy-aggregate" ? { ...current, deductible: change.amount } : { ...current, attachment: change.amount };
396
399
  }
397
400
  return current;
@@ -403,34 +406,6 @@ export function applyAnalysisScenario(definition, scenario) {
403
406
  financialTerms: terms,
404
407
  });
405
408
  }
406
- export function compareAnalysisResults(baseline, scenario) {
407
- const scenarioValues = new Map(scenario.values.map((value) => [canonicalJson([value.measureId, value.coordinates]), value]));
408
- return snapshotDiagnosticJson(baseline.values.map((value) => {
409
- const compared = scenarioValues.get(canonicalJson([value.measureId, value.coordinates]));
410
- if (compared !== undefined && compared.unit !== value.unit)
411
- throw new DiagnosticValidationError([{
412
- domain: "configuration",
413
- code: "incompatible-semantics",
414
- path: `$.values.${value.measureId}.unit`,
415
- message: `Cannot compare ${value.unit} with ${compared.unit}`,
416
- }]);
417
- const baselineValue = value.value;
418
- const scenarioValue = compared?.value ?? null;
419
- const absoluteDifference = baselineValue === null || scenarioValue === null ? null : scenarioValue - baselineValue;
420
- const percentageDifference = absoluteDifference === null || baselineValue === null || baselineValue === 0
421
- ? null
422
- : absoluteDifference / baselineValue;
423
- return {
424
- measureId: value.measureId,
425
- unit: value.unit,
426
- coordinates: value.coordinates,
427
- baselineValue,
428
- scenarioValue,
429
- absoluteDifference,
430
- percentageDifference,
431
- };
432
- }));
433
- }
434
409
  /** Runs a bounded list of controlled scenarios against one immutable baseline. */
435
410
  export function runAnalysisScenarios(input) {
436
411
  const maximumActiveScenarios = maximumActiveScenarioLimit(input.limits);
@@ -559,7 +534,7 @@ export function runAnalysisScenarioGrid(input) {
559
534
  }
560
535
  /** Complete dependency identity for exact full-result reuse, including lineage. */
561
536
  export function analysisRecipeDependencyIdentity(input) {
562
- return `fnv1a64-jcs-v1:${fnv1a64(canonicalJson({ kind: "analysis-recipe-dependencies", input }))}`;
537
+ return `fnv1a64-jcs-v1:${fnv1a64(canonicalJson({ kind: "analysis-recipe-dependencies", corePackageVersion: CORE_PACKAGE_VERSION, input }))}`;
563
538
  }
564
539
  /** Uses caller-owned cache storage; a hit is returned only for the complete dependency identity. */
565
540
  export function runAnalysisRecipeCached(input) {
@@ -590,7 +565,7 @@ export function rollForwardAnalysisRecipe(input) {
590
565
  currentEvaluationDate,
591
566
  priorResult,
592
567
  currentResult,
593
- differences: compareAnalysisResults(priorResult, currentResult),
568
+ differences: compareAnalysisEvaluations(priorResult, currentResult, priorEvaluationDate, currentEvaluationDate),
594
569
  });
595
570
  }
596
571
  /** Applies explicitly ordered, one-change scenario steps and reports each incremental bridge. */
@@ -1 +1 @@
1
- {"version":3,"file":"analysisRecipe.js","sourceRoot":"","sources":["../src/analysisRecipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAuBxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAkC,MAAM,YAAY,CAAC;AAEvF,SAAS,GAAG,CAAC,WAA0C;IACrD,OAAO,aAAa,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CACnB,MAAsB,EACtB,UAA8B,EAC9B,OAA+B;IAE/B,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,IAAI,MAAM,CAAC,oBAAoB,KAAK,UAAU,CAAC,EAAE;QAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAC;IAClL,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,iBAAiB;QAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC,CAAC;IACrJ,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,WAAW,CAAC,CAAC,CAAC;IACpJ,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,SAAS,GAAqC;QAClD,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,uBAAuB,EAAE,CAAC;QAC1B,0BAA0B,EAAE,CAAC;QAC7B,SAAS,EAAE,CAAC;KACb,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,kBAAkB,KAAK,GAAG,EAAE,OAAO,EAAE,eAAe,IAAI,CAAC,IAAI,mCAAmC,EAAE,CAAC,CAAC;QAClL,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,UAAU;YAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,kBAAkB,KAAK,GAAG,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAC;QAChK,IAAI,KAAK,KAAK,SAAS;YAAE,UAAU,GAAG,KAAK,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO,CAAC,SAAS;YACjF,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,qBAAqB,EAAE,OAAO,EAAE,qDAAqD,EAAE,CAAC,CAAC;QAC1L,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,KAAK,UAAU,CAAC,EAAE;YAC/E,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC,CAAC;QACtL,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;YAC3B,YAAY,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;YAC3B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;oBAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,cAAc,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;YACvJ,CAAC,CAAC,CAAC;QACL,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;YAC/B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBACrC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;oBAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,sBAAsB,EAAE,OAAO,EAAE,4BAA4B,EAAE,EAAE,EAAE,CAAC,CAAC;YACxK,CAAC,CAAC,CAAC;QACL,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB;YACvC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC1B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;oBAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3J,CAAC,CAAC,CAAC;QACL,IAAI,IAAI,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnJ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,YAAY,EAAE,OAAO,EAAE,oCAAoC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3L,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,uBAAuB,IAAI,IAAI,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAC,MAAM,GAAG,CAAC;QAC7H,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC,CAAC;IAC5J,IAAI,CAAC,YAAY;QACf,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAC;IAC1I,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CACjB,YAAsD,EACtD,cAAsB,EACtB,IAAqC;IAErC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,KAAK,cAAc,CAAC,CAAC;IACjH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyC,CAAC;IAClE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,WAAW,CAAC,cAAc,GAAG,cAAc;YAAE,SAAS;QAC1D,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc;YAAE,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC1H,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,YAAsD;IACvE,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2C,CAAC;IAClE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;;YACjE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAClB,UAA8B,EAC9B,KAAgD,EAChD,YAAsD,EACtD,cAA6E;IAE7E,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAqC,EAAE,CAAC;IACtD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,qBAAqB,CAAC;YACvC,KAAK;YACL,WAAW;YACX,YAAY,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;YACxD,UAAU,EAAE,UAAU,CAAC,UAAU;SAClC,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACzD,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,YAAsD;IAC/E,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/I,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,iBAAiB,CAAC,KAQjC;IACC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACjH,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjH,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjH,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACvD,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACvD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,IAAI,SAAS,GAAG,mBAAmB,CAAC;IACpC,IAAI,0BAA0B,GAA8C,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC7G,MAAM,0BAA0B,GAA8C,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE/G,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC;IAC/F,IAAI,aAAa,EAAE,IAAI,KAAK,uBAAuB,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC,CAAC;QACjH,MAAM,OAAO,GAAG,mBAAmB,CAAC;YAClC,YAAY,EAAE,mBAAmB;YACjC,KAAK;YACL,2BAA2B,EAAE,IAAI;YACjC,kBAAkB,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;YAC7C,eAAe,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,eAAe,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5I,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACzH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/F,OAAO,OAAO,EAAE,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,CAAC,CAAC,CACH,CAAC;YACF,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAClD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC/C,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO,WAAW,CAAC;gBAC7C,MAAM,QAAQ,GAAG,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAC7C,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1E,OAAO,sBAAsB,CAAC,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC;;YAAM,0BAA0B,GAAG,CAAC,GAAG,0BAA0B,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAC;IACjG,IAAI,YAAY,EAAE,IAAI,KAAK,0BAA0B,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACnG,OAAO,UAAU,KAAK,SAAS;gBAC7B,CAAC,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC,EAAE;gBACpH,CAAC,CAAC,EAAE,IAAI,EAAE,YAAqB,EAAE,UAAU,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,sBAAsB,CAAC;YACrC,YAAY,EAAE,mBAAmB;YACjC,eAAe,EAAE,YAAY,CAAC,eAAe;YAC7C,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,KAAK,YAAY,CAAC,eAAe,CAAC,EAAE,IAAI,IAAI,cAAc;YAChL,MAAM;YACN,2BAA2B,EAAE,IAAI;YACjC,eAAe,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,eAAe,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5I,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpI,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAClD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;gBACnD,OAAO,YAAY,KAAK,SAAS;oBAC/B,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,sBAAsB,CAAC,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YACtI,CAAC,CAAC,CAAC;QACL,CAAC;;YAAM,0BAA0B,GAAG,CAAC,GAAG,0BAA0B,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC/D,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAA4C,CAAC;IACtF,MAAM,4BAA4B,GAAa,EAAE,CAAC;IAClD,MAAM,wBAAwB,GAAa,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;YAAE,SAAS;QAC5C,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACvF,IAAI,UAAU,KAAK,SAAS;gBAAE,SAAS;YACvC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,UAAU,CAAC,OAAO,CAAE,CAAC;YACzG,MAAM,eAAe,GAAG,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAChE,MAAM,SAAS,GAAG,uBAAuB,CAAC,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YACzK,eAAe,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,uBAAuB,CAAC;gBACxC,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,SAAS,EAAE,KAAK,CAAC,yBAAyB,IAAI,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,kBAAkB,EAAE,UAAU,EAAE;aACrH,CAAC,CAAC;YACH,eAAe,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5C,4BAA4B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAC9E,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACtE,KAAK,MAAM,WAAW,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC,CAAC;gBACjH,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACzC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAkB,CAAC;oBACvF,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC7D,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YACD,yBAAyB,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4E,CAAC;IACnG,MAAM,cAAc,GAA8F,EAAE,CAAC;IACrH,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3G,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtF,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;gBAAE,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;;YACtG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAClG,CAAC;IACF,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjG,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpG,IAAI,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAC1F,CAAC,CAAC,KAAK,CAAC,YAAY;gBACpB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,iBAAiB,GAAqC,EAAE,CAAC;YAC/D,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;gBACjC,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE;oBAC/D,MAAM,UAAU,GAAG,qBAAqB,CAAC;wBACvC,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAU,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;wBAChI,WAAW;wBACX,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;wBACnD,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;qBACxC,CAAC,CAAC;oBACH,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI;wBAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBAChH,OAAO,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC;gBACxC,CAAC,CAAC,CAAC;YACL,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO;gBACzD,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE;gBAC7E,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBACtF,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,CAAC,GAAG,0BAA0B,EAAE,GAAG,0BAA0B,CAAC,CAAC;YACnE,MAAM,gBAAgB,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,iBAAiB,EAAE,GAAG,gBAAgB,CAAC,CAAC;YACvF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC;oBACV,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,WAAW,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE;oBACnE,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,aAAa;oBACrB,wBAAwB,EAAE,CAAC;oBAC3B,oBAAoB,EAAE,mBAAmB,CAAC,MAAM;oBAChD,KAAK,EAAE,IAAI;oBACX,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,IAAI;oBACjB,QAAQ,EAAE,gBAAgB;iBAC3B,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,IAAI,SAAS,CAAC;YACd,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACrH,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC;gBAChC,MAAM,SAAS,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,EAAE;oBAClE,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;oBAC7D,OAAO,KAAK,GAAG,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBACzD,CAAC,EAAE,CAAC,CAAC,CAAC;gBACN,MAAM,WAAW,GAAG,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAE,CAAC;gBACpF,MAAM,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACvB,SAAS,GAAG,0BAA0B,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;gBACjH,CAAC;qBAAM,CAAC;oBACR,MAAM,SAAS,GAAG,sBAAsB,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE;4BAC5D,CAAC,KAAK,CAAC,kBAAkB,CAAC,EAAE,SAAS;4BACrC,CAAC,KAAK,CAAC,oBAAoB,CAAC,EAAE,WAAW;yBAC1C,EAAE,CAAC,CAAC;oBACL,SAAS,GAAG,0BAA0B,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,EAAE,CAAC,CAAC;gBACxH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,0BAA0B,CAAC;oBACrC,OAAO;oBACP,YAAY,EAAE,mBAAmB;oBACjC,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,OAAO,EAAE;iBACtF,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE;gBACnE,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,wBAAwB,EAAE,SAAS,CAAC,wBAAwB;gBAC5D,oBAAoB,EAAE,SAAS,CAAC,oBAAoB;gBACpD,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,QAAQ,EAAE,SAAS,CAAC,QAAQ;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpG,MAAM,cAAc,GAAG,cAAc;iBAClC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;iBACtI,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAC1C,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,cAAc,EAAE;gBAC1F,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,aAAa;gBACrB,wBAAwB,EAAE,CAAC;gBAC3B,oBAAoB,EAAE,cAAc,CAAC,MAAM;gBAC3C,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,IAAI;gBACjB,QAAQ,EAAE,cAAc;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,gBAAgB,GAAG;QACvB,iBAAiB,EAAE,QAAQ,CAAC,qBAAqB;QACjD,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,cAAc;QACd,mBAAmB,EAAE,4BAA4B,CAAC,IAAI,EAAE;KACzD,CAAC;IACF,MAAM,YAAY,GAAG;QACnB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,mBAAmB,EAAE,wBAAwB,CAAC,IAAI,EAAE;QACpD,mBAAmB,EAAE,kBAAkB,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,EAAE;KAClF,CAAC;IACF,OAAO,sBAAsB,CAAC;QAC5B,qBAAqB,EAAE,oBAAoB;QAC3C,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,oBAAoB,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;QACzC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;QACzB,mBAAmB,EAAE,YAAY,CAAC,mBAAmB;QACrD,eAAe,EAAE,kBAAkB,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE;QACzE,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,UAA8B,EAC9B,QAA0B;IAE1B,MAAM,cAAc,GAAgC,EAAE,CAAC;IACvD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACrI,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACzD,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC;YAC/G,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,sBAAsB,KAAK,UAAU,EAAE,OAAO,EAAE,0BAA0B,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/K,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5H,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,KAAK,SAAS,EAAE,OAAO,EAAE,qDAAqD,EAAE,CAAC,CAAC;QACvL,IAAI,MAAM,CAAC,IAAI,KAAK,2BAA2B,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3G,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,KAAK,UAAU,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC,CAAC;IACrL,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,cAAc,CAAC,CAAC;IACnF,IAAI,kBAAkB,GAAsB,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;IAClF,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnD,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB;gBAAE,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC;iBAC5E,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB;gBAAE,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;iBACvH,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,IAAI,KAAK,2BAA2B;gBAC/E,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1I,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,sBAAsB,CAAC;QAC5B,GAAG,UAAU;QACb,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,aAAa,QAAQ,CAAC,EAAE,EAAE;QACxD,MAAM,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE;QAC9G,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,QAAwB,EACxB,QAAwB;IAExB,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7H,OAAO,sBAAsB,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QAC1D,MAAM,QAAQ,GAAG,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;QACzF,IAAI,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YACxD,MAAM,IAAI,yBAAyB,CAAC,CAAC;oBACnC,MAAM,EAAE,eAAe;oBACvB,IAAI,EAAE,wBAAwB;oBAC9B,IAAI,EAAE,YAAY,KAAK,CAAC,SAAS,OAAO;oBACxC,OAAO,EAAE,kBAAkB,KAAK,CAAC,IAAI,SAAS,QAAQ,CAAC,IAAI,EAAE;iBAC9D,CAAC,CAAC,CAAC;QACN,MAAM,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC;QAClC,MAAM,aAAa,GAAG,QAAQ,EAAE,KAAK,IAAI,IAAI,CAAC;QAC9C,MAAM,kBAAkB,GAAG,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,aAAa,GAAG,aAAa,CAAC;QACnH,MAAM,oBAAoB,GACxB,kBAAkB,KAAK,IAAI,IAAI,aAAa,KAAK,IAAI,IAAI,aAAa,KAAK,CAAC;YAC1E,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,kBAAkB,GAAG,aAAa,CAAC;QACzC,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,aAAa;YACb,aAAa;YACb,kBAAkB;YAClB,oBAAoB;SACrB,CAAC;IACJ,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,KAUpC;IACC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,sBAAsB;QACjD,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,iDAAiD,sBAAsB,EAAE;aACnF,CAAC,CAAC,CAAC;IACN,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM;QACzF,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,6BAA6B;aACvC,CAAC,CAAC,CAAC;IACN,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACzG,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1F,GAAG,CAAC,KAAK,CAAC,yBAAyB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,EAAE,CAAC;QACxH,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;KACxF,CAAC;IACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAChF,OAAO,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7D,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,qBAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/G,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;IACpG,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA8B;IAC1D,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACxE,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,0BAA0B,CACjC,MAAmE;IAEnE,MAAM,OAAO,GAAG,MAAM,EAAE,sBAAsB,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAC/C,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,iCAAiC;gBACvC,OAAO,EAAE,wDAAwD;aAClE,CAAC,CAAC,CAAC;IACN,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,0BAA0B,CACxC,IAA0B,EAC1B,MAAmE;IAEnE,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,IAAI,sBAA8B,CAAC;IACnC,IAAI,CAAC;QACH,sBAAsB,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAyB;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7E,sBAAsB,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;IAC9H,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,CAAC;IAC/I,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;QACrE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC,CAAC;IACxI,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,eAAe,SAAS,GAAG,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAC;QACpI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAC;QAC1J,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM;YAC/E,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,EAAE,OAAO,EAAE,wDAAwD,EAAE,CAAC,CAAC;QAC7J,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;YAC3C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,IAAI,YAAY,WAAW,MAAM,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAC;QAChK,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/H,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,EAAE,OAAO,EAAE,2EAA2E,EAAE,CAAC,CAAC;QAC1L,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,MAAM,EAAE,EAAE,CAAC,CAAC;QACjI,IAAI,MAAM,KAAK,SAAS;YAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBACpE,OAAO,GAAG,sBAAsB,GAAG,CAAC,CAAC;;gBAClC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,sBAAsB,GAAG,CAAC,IAAI,OAAO,GAAG,sBAAsB;QAChE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,wDAAwD,sBAAsB,EAAE,EAAE,CAAC,CAAC;IACrL,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAEnE,IAAI,YAAY,GAA+F,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1I,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACjF,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACpD,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;SAChG,CAAC,CAAC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC7C,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAC,CAAC,CAAC;IACJ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4DAA4D;aACtE,CAAC,CAAC,CAAC;IACN,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,uBAAuB,CACrC,KAEC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IAClC,OAAO,oBAAoB,CAAC;QAC1B,GAAG,MAAM;QACT,SAAS,EAAE,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;KAC1D,CAAC,CAAC;AACL,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gCAAgC,CAAC,KAA8C;IAC7F,OAAO,kBAAkB,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;AACrG,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,uBAAuB,CAAC,KAEvC;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,kBAAkB,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,SAAS;QACxB,OAAO,sBAAsB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9F,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,sBAAsB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,yBAAyB,CAAC,KAGzC;IACC,IAAI,KAAK,CAAC,qBAAqB,IAAI,KAAK,CAAC,mBAAmB;QAC1D,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,sEAAsE;aAChF,CAAC,CAAC,CAAC;IACN,MAAM,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IACxE,MAAM,WAAW,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC1F,MAAM,aAAa,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC9F,OAAO,sBAAsB,CAAC;QAC5B,IAAI,EAAE,cAAc;QACpB,mBAAmB;QACnB,qBAAqB;QACrB,WAAW;QACX,aAAa;QACb,WAAW,EAAE,sBAAsB,CAAC,WAAW,EAAE,aAAa,CAAC;KAChE,CAAC,CAAC;AACL,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,yBAAyB,CAAC,KAGzC;IACC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,sBAAsB;QACjD,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa;gBACtE,OAAO,EAAE,kDAAkD,sBAAsB,EAAE;aACpF,CAAC,CAAC,CAAC;IACN,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAG,QAAQ,CAAC;IACrB,IAAI,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAAC;IAC3C,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAC/B,MAAM,IAAI,yBAAyB,CAAC,CAAC;oBACnC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,eAAe,QAAQ,CAAC,EAAE,UAAU;oBAClG,OAAO,EAAE,sDAAsD;iBAChE,CAAC,CAAC,CAAC;QACN,mBAAmB,GAAG,qBAAqB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,uBAAuB,EAAE,KAAK,CAAC,mBAAmB;YAClD,MAAM;YACN,WAAW,EAAE,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC;SACnD,CAAC,CAAC;QACH,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;IACD,OAAO,sBAAsB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,CAAC"}
1
+ {"version":3,"file":"analysisRecipe.js","sourceRoot":"","sources":["../src/analysisRecipe.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAsBpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,4BAA4B,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACnF,OAAO,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAC1F,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,yBAAyB,EAAkC,MAAM,YAAY,CAAC;AAEvF,SAAS,GAAG,CAAC,WAA0C;IACrD,OAAO,aAAa,CAAC,CAAC,WAAW,CAAC,eAAe,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,YAAY,CACnB,MAAsB,EACtB,UAA8B,EAC9B,OAA+B;IAE/B,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,IAAI,MAAM,CAAC,oBAAoB,KAAK,UAAU,CAAC,EAAE;QAC/C,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,4BAA4B,EAAE,IAAI,EAAE,+BAA+B,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAC;IAClL,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,KAAK,iBAAiB;QAC7C,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,wCAAwC,EAAE,CAAC,CAAC;IACrJ,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,iBAAiB,EAAE,gBAAgB,EAAE,eAAe,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,WAAW,CAAC,CAAC,CAAC;IACpJ,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC;IACpB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,MAAM,SAAS,GAAqC;QAClD,iBAAiB,EAAE,CAAC;QACpB,gBAAgB,EAAE,CAAC;QACnB,eAAe,EAAE,CAAC;QAClB,uBAAuB,EAAE,CAAC;QAC1B,0BAA0B,EAAE,CAAC;QAC7B,SAAS,EAAE,CAAC;KACb,CAAC;IACF,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;QACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,kBAAkB,KAAK,GAAG,EAAE,OAAO,EAAE,eAAe,IAAI,CAAC,IAAI,mCAAmC,EAAE,CAAC,CAAC;QAClL,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,GAAG,UAAU;YAC3C,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,kBAAkB,KAAK,GAAG,EAAE,OAAO,EAAE,yCAAyC,EAAE,CAAC,CAAC;QAChK,IAAI,KAAK,KAAK,SAAS;YAAE,UAAU,GAAG,KAAK,CAAC;QAC5C,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,KAAK,OAAO,CAAC,SAAS;YACjF,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,qBAAqB,EAAE,OAAO,EAAE,qDAAqD,EAAE,CAAC,CAAC;QAC1L,IAAI,IAAI,CAAC,IAAI,KAAK,gBAAgB,IAAI,IAAI,CAAC,oBAAoB,KAAK,UAAU,CAAC,EAAE;YAC/E,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,wBAAwB,EAAE,OAAO,EAAE,8CAA8C,EAAE,CAAC,CAAC;QACtL,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;YAC3B,YAAY,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW;YAC3B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC7B,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;oBAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,cAAc,EAAE,OAAO,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,CAAC;YACvJ,CAAC,CAAC,CAAC;QACL,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;YAC/B,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBACrC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;oBAC9D,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,sBAAsB,EAAE,OAAO,EAAE,4BAA4B,EAAE,EAAE,EAAE,CAAC,CAAC;YACxK,CAAC,CAAC,CAAC;QACL,IAAI,IAAI,CAAC,IAAI,KAAK,uBAAuB;YACvC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC1B,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC;oBAC3D,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,WAAW,EAAE,OAAO,EAAE,0BAA0B,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3J,CAAC,CAAC,CAAC;QACL,IAAI,IAAI,CAAC,IAAI,KAAK,0BAA0B,EAAE,CAAC;YAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACnJ,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE;gBAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;oBAAE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,kBAAkB,KAAK,YAAY,EAAE,OAAO,EAAE,oCAAoC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC3L,CAAC,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,uBAAuB,IAAI,IAAI,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAC,MAAM,GAAG,CAAC;QAC7H,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,+CAA+C,EAAE,CAAC,CAAC;IAC5J,IAAI,CAAC,YAAY;QACf,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,gBAAgB,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAC;IAC1I,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,UAAU,CACjB,YAAsD,EACtD,cAAsB,EACtB,IAAqC;IAErC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,KAAK,cAAc,CAAC,CAAC;IACjH,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyC,CAAC;IAClE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,IAAI,WAAW,CAAC,cAAc,GAAG,cAAc;YAAE,SAAS;QAC1D,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3C,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,cAAc,GAAG,WAAW,CAAC,cAAc;YAAE,QAAQ,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAC1H,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,YAAsD;IACvE,MAAM,MAAM,GAAG,IAAI,GAAG,EAA2C,CAAC;IAClE,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,cAAc,GAAG,GAAG,CAAC,WAAW,CAAC,CAAC;QACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5C,IAAI,QAAQ,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;;YACjE,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAClC,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAClB,UAA8B,EAC9B,KAAgD,EAChD,YAAsD,EACtD,cAA6E;IAE7E,MAAM,OAAO,GAAoC,EAAE,CAAC;IACpD,MAAM,QAAQ,GAAqC,EAAE,CAAC;IACtD,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;QACvC,MAAM,UAAU,GAAG,qBAAqB,CAAC;YACvC,KAAK;YACL,WAAW;YACX,YAAY,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;YACxD,UAAU,EAAE,UAAU,CAAC,UAAU;SAClC,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,OAAO,KAAK,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aACzD,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI;YAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IAC9G,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,YAAsD;IAC/E,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;AAC/I,CAAC;AAED,kGAAkG;AAClG,MAAM,UAAU,iBAAiB,CAAC,KAQjC;IACC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IAC3E,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACnE,MAAM,QAAQ,GAAG,wBAAwB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACzD,MAAM,cAAc,GAAG,KAAK,CAAC,cAAc,IAAI,iBAAiB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACxF,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,YAAY,EAAE,cAAc,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;IACjH,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACnD,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjH,MAAM,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjH,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACvD,MAAM,mBAAmB,GAAG,kBAAkB,CAAC,OAAO,CAAC;IACvD,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,IAAI,SAAS,GAAG,mBAAmB,CAAC;IACpC,0EAA0E;IAC1E,wEAAwE;IACxE,IAAI,0BAA0B,GAA8C,CAAC,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACnI,MAAM,0BAA0B,GAA8C,CAAC,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAE/G,MAAM,aAAa,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC;IAC/F,IAAI,aAAa,EAAE,IAAI,KAAK,uBAAuB,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC,CAAC;QACjH,MAAM,OAAO,GAAG,mBAAmB,CAAC;YAClC,YAAY,EAAE,mBAAmB;YACjC,KAAK;YACL,2BAA2B,EAAE,0BAA0B,CAAC,MAAM,KAAK,CAAC;YACpE,kBAAkB,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ;YAC7C,eAAe,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,eAAe,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5I,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;YACzH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAC9B,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;gBACrB,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC/F,OAAO,OAAO,EAAE,SAAS,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAChF,CAAC,CAAC,CACH,CAAC;YACF,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAClD,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;gBAC/C,IAAI,MAAM,KAAK,SAAS;oBAAE,OAAO,WAAW,CAAC;gBAC7C,MAAM,QAAQ,GAAG,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC;gBAC7C,gBAAgB,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC1E,OAAO,sBAAsB,CAAC,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC9D,CAAC,CAAC,CAAC;QACL,CAAC;;YAAM,0BAA0B,GAAG,CAAC,GAAG,0BAA0B,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,0BAA0B,CAAC,CAAC;IACjG,IAAI,YAAY,EAAE,IAAI,KAAK,0BAA0B,EAAE,CAAC;QACtD,MAAM,MAAM,GAAG,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE;YAC9C,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACnG,OAAO,UAAU,KAAK,SAAS;gBAC7B,CAAC,CAAC,EAAE,IAAI,EAAE,OAAgB,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAE,CAAC,EAAE;gBACpH,CAAC,CAAC,EAAE,IAAI,EAAE,YAAqB,EAAE,UAAU,EAAE,CAAC;QAClD,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,sBAAsB,CAAC;YACrC,YAAY,EAAE,mBAAmB;YACjC,eAAe,EAAE,YAAY,CAAC,eAAe;YAC7C,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,KAAK,IAAI,OAAO,CAAC,SAAS,CAAC,SAAS,KAAK,YAAY,CAAC,eAAe,CAAC,EAAE,IAAI,IAAI,cAAc;YAChL,MAAM;YACN,2BAA2B,EAAE,0BAA0B,CAAC,MAAM,KAAK,CAAC;YACpE,eAAe,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,EAAE,eAAe,EAAE,WAAW,CAAC,eAAe,EAAE,OAAO,EAAE,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;SAC5I,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpI,SAAS,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAClD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;gBACnD,OAAO,YAAY,KAAK,SAAS;oBAC/B,CAAC,CAAC,WAAW;oBACb,CAAC,CAAC,sBAAsB,CAAC,EAAE,GAAG,WAAW,EAAE,QAAQ,EAAE,EAAE,GAAG,WAAW,CAAC,QAAQ,EAAE,CAAC,YAAY,CAAC,eAAe,CAAC,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;YACtI,CAAC,CAAC,CAAC;QACL,CAAC;;YAAM,0BAA0B,GAAG,CAAC,GAAG,0BAA0B,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC3F,CAAC;IAED,MAAM,eAAe,GAAG,IAAI,GAAG,EAA+B,CAAC;IAC/D,MAAM,yBAAyB,GAAG,IAAI,GAAG,EAA4C,CAAC;IACtF,MAAM,4BAA4B,GAAa,EAAE,CAAC;IAClD,MAAM,wBAAwB,GAAa,EAAE,CAAC;IAC9C,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,IAAI,KAAK,eAAe;YAAE,SAAS;QAC5C,KAAK,MAAM,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;YACvF,IAAI,UAAU,KAAK,SAAS;gBAAE,SAAS;YACvC,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,EAAE,KAAK,UAAU,CAAC,OAAO,CAAE,CAAC;YACzG,MAAM,eAAe,GAAG,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC;YAChE,MAAM,SAAS,GAAG,uBAAuB,CAAC,EAAE,YAAY,EAAE,CAAC,KAAK,CAAC,oBAAoB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC;YACzK,eAAe,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,SAAS,GAAG,uBAAuB,CAAC;gBACxC,YAAY,EAAE,SAAS,CAAC,YAAY;gBACpC,SAAS,EAAE,KAAK,CAAC,yBAAyB,IAAI,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,kBAAkB,EAAE,UAAU,EAAE;aACrH,CAAC,CAAC;YACH,eAAe,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;YAC5C,4BAA4B,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,qBAAqB,EAAE,CAAC,CAAC;YAC9E,wBAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,SAAS,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACtE,KAAK,MAAM,WAAW,IAAI,SAAS,CAAC,YAAY,EAAE,CAAC;gBACjD,MAAM,MAAM,GAAG,uBAAuB,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE,EAAE,CAAC,CAAC;gBACjH,eAAe,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACzC,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;oBAC5C,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,IAAI,GAAG,EAAkB,CAAC;oBACvF,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;oBAC7D,eAAe,CAAC,GAAG,CAAC,UAAU,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACrD,CAAC;YACH,CAAC;YACD,yBAAyB,CAAC,GAAG,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;QACrD,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4E,CAAC;IACnG,MAAM,cAAc,GAA8F,EAAE,CAAC;IACrH,KAAK,MAAM,WAAW,IAAI,SAAS,EAAE,CAAC;QACpC,MAAM,MAAM,GAAG,oBAAoB,CAAC,WAAW,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3G,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,EAAE,CAAC;YACtF,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI;gBAAE,cAAc,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;YAC3F,SAAS;QACX,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC1C,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;;YACtG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC5C,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,GAAG,CACxB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAClG,CAAC;IACF,0EAA0E;IAC1E,wEAAwE;IACxE,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;QACnD,MAAM,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IAC/E,MAAM,MAAM,GAA0B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QACjG,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpG,IAAI,mBAAmB,GAAG,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBAC1F,CAAC,CAAC,KAAK,CAAC,YAAY;gBACpB,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpF,MAAM,iBAAiB,GAAqC,EAAE,CAAC;YAC/D,IAAI,OAAO,CAAC,SAAS,KAAK,SAAS;gBACjC,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE;oBAC/D,MAAM,UAAU,GAAG,qBAAqB,CAAC;wBACvC,KAAK,EAAE,EAAE,EAAE,EAAE,WAAW,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,SAAU,EAAE,cAAc,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE;wBAChI,WAAW;wBACX,YAAY,EAAE,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,EAAE;wBACnD,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,UAAU;qBACxC,CAAC,CAAC;oBACH,IAAI,UAAU,CAAC,OAAO,KAAK,SAAS,IAAI,UAAU,CAAC,OAAO,KAAK,IAAI;wBAAE,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;oBAChH,OAAO,UAAU,CAAC,OAAO,KAAK,OAAO,CAAC;gBACxC,CAAC,CAAC,CAAC;YACL,MAAM,gBAAgB,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO;gBACzD,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,IAAI,EAAE;gBAC7E,CAAC,CAAC,EAAE,CAAC;YACP,MAAM,aAAa,GAAG,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE;gBACtF,CAAC,CAAC,0BAA0B;gBAC5B,CAAC,CAAC,CAAC,GAAG,0BAA0B,EAAE,GAAG,0BAA0B,CAAC,CAAC;YACnE,MAAM,gBAAgB,GAAG,CAAC,GAAG,aAAa,EAAE,GAAG,iBAAiB,EAAE,GAAG,gBAAgB,CAAC,CAAC;YACvF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,IAAI,CAAC;oBACV,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,WAAW,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE;oBACnE,KAAK,EAAE,IAAI;oBACX,MAAM,EAAE,aAAa;oBACrB,wBAAwB,EAAE,CAAC;oBAC3B,oBAAoB,EAAE,mBAAmB,CAAC,MAAM;oBAChD,KAAK,EAAE,IAAI;oBACX,SAAS,EAAE,IAAI;oBACf,WAAW,EAAE,IAAI;oBACjB,QAAQ,EAAE,gBAAgB;iBAC3B,CAAC,CAAC;gBACH,SAAS;YACX,CAAC;YACD,IAAI,SAAS,CAAC;YACd,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO,IAAI,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,CAAC;gBACrH,SAAS,GAAG,4BAA4B,CAAC;oBACvC,OAAO;oBACP,YAAY,EAAE,mBAAmB;oBACjC,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,EAAE;oBAC1H,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,QAAQ,CAAE,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAE;iBACtF,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,SAAS,GAAG,0BAA0B,CAAC;oBACrC,OAAO;oBACP,YAAY,EAAE,mBAAmB;oBACjC,SAAS,EAAE,EAAE,IAAI,EAAE,iBAAiB,EAAE,cAAc,EAAE,oBAAoB,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,oBAAoB,EAAE;iBAC3H,CAAC,CAAC;YACL,CAAC;YACD,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,cAAc,EAAE;gBACnE,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,MAAM,EAAE,SAAS,CAAC,MAAM;gBACxB,wBAAwB,EAAE,SAAS,CAAC,wBAAwB;gBAC5D,oBAAoB,EAAE,SAAS,CAAC,oBAAoB;gBACpD,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,SAAS,CAAC,SAAS;gBAC9B,WAAW,EAAE,SAAS,CAAC,WAAW;gBAClC,QAAQ,EAAE,SAAS,CAAC,QAAQ;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YACpG,MAAM,cAAc,GAAG,cAAc;iBAClC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,iBAAiB,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;iBACtI,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;YACjC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC;gBAAE,SAAS;YAC1C,MAAM,CAAC,IAAI,CAAC;gBACV,SAAS,EAAE,OAAO,CAAC,EAAE;gBACrB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,WAAW,EAAE,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,oBAAoB,EAAE,cAAc,EAAE;gBAC1F,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,aAAa;gBACrB,wBAAwB,EAAE,CAAC;gBAC3B,oBAAoB,EAAE,cAAc,CAAC,MAAM;gBAC3C,KAAK,EAAE,IAAI;gBACX,SAAS,EAAE,IAAI;gBACf,WAAW,EAAE,IAAI;gBACjB,QAAQ,EAAE,cAAc;aACzB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,MAAM,gBAAgB,GAAG;QACvB,kBAAkB,EAAE,oBAAoB;QACxC,iBAAiB,EAAE,QAAQ,CAAC,qBAAqB;QACjD,eAAe,EAAE,QAAQ,CAAC,QAAQ;QAClC,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,cAAc;QACd,mBAAmB,EAAE,4BAA4B,CAAC,IAAI,EAAE;QACxD,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE;KAC7C,CAAC;IACF,MAAM,YAAY,GAAG;QACnB,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,mBAAmB,EAAE,wBAAwB,CAAC,IAAI,EAAE;QACpD,mBAAmB,EAAE,kBAAkB,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,CAAC,EAAE;KAClF,CAAC;IACF,OAAO,sBAAsB,CAAC;QAC5B,qBAAqB,EAAE,oBAAoB;QAC3C,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB;QAC7C,oBAAoB,EAAE,KAAK,CAAC,UAAU,CAAC,EAAE;QACzC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE;QACzB,mBAAmB,EAAE,YAAY,CAAC,mBAAmB;QACrD,eAAe,EAAE,kBAAkB,OAAO,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC,EAAE;QACzE,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,UAA8B,EAC9B,QAA0B;IAE1B,MAAM,cAAc,GAAgC,EAAE,CAAC;IACvD,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACrI,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;QACzD,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,KAAK,MAAM,CAAC,MAAM,CAAC;YAC/G,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,sBAAsB,KAAK,UAAU,EAAE,OAAO,EAAE,0BAA0B,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC/K,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5H,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,KAAK,SAAS,EAAE,OAAO,EAAE,qDAAqD,EAAE,CAAC,CAAC;QACvL,IAAI,MAAM,CAAC,IAAI,KAAK,2BAA2B,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YAC3G,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,sBAAsB,KAAK,UAAU,EAAE,OAAO,EAAE,gDAAgD,EAAE,CAAC,CAAC;IACrL,CAAC;IACD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,cAAc,CAAC,CAAC;IACnF,IAAI,kBAAkB,GAAsB,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC;IAClF,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO;QACnC,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB;YAAE,kBAAkB,GAAG,MAAM,CAAC,SAAS,CAAC;IACnF,MAAM,KAAK,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACnD,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,KAAK,MAAM,MAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,IAAI,KAAK,sBAAsB,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE;gBAAE,OAAO,GAAG,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,CAAC;iBAClH,IAAI,MAAM,CAAC,IAAI,KAAK,2BAA2B,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,EAAE;gBAC/E,OAAO,GAAG,OAAO,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC;QAC1I,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC,CAAC;IACH,OAAO,sBAAsB,CAAC;QAC5B,GAAG,UAAU;QACb,OAAO,EAAE,GAAG,UAAU,CAAC,OAAO,aAAa,QAAQ,CAAC,EAAE,EAAE;QACxD,MAAM,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,kBAAkB,EAAE,EAAE;QAC9G,cAAc,EAAE,KAAK;KACtB,CAAC,CAAC;AACL,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,oBAAoB,CAAC,KAUpC;IACC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,sBAAsB;QACjD,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,iDAAiD,sBAAsB,EAAE;aACnF,CAAC,CAAC,CAAC;IACN,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC,MAAM;QACzF,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,6BAA6B;aACvC,CAAC,CAAC,CAAC;IACN,MAAM,MAAM,GAAG;QACb,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,GAAG,CAAC,KAAK,CAAC,oBAAoB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,oBAAoB,EAAE,KAAK,CAAC,oBAAoB,EAAE,CAAC;QACzG,GAAG,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,CAAC,eAAe,EAAE,CAAC;QAC1F,GAAG,CAAC,KAAK,CAAC,yBAAyB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,KAAK,CAAC,yBAAyB,EAAE,CAAC;QACxH,GAAG,CAAC,KAAK,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC;KACxF,CAAC;IACF,MAAM,QAAQ,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;IAChF,OAAO,sBAAsB,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE;QAC7D,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,qBAAqB,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/G,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,sBAAsB,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAC;IACpG,CAAC,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,oBAAoB,CAAC,MAA8B;IAC1D,IAAI,MAAM,CAAC,IAAI,KAAK,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACxE,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,0BAA0B,CACjC,MAAmE;IAEnE,MAAM,OAAO,GAAG,MAAM,EAAE,sBAAsB,CAAC;IAC/C,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAC/C,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,kBAAkB;gBACxB,IAAI,EAAE,iCAAiC;gBACvC,OAAO,EAAE,wDAAwD;aAClE,CAAC,CAAC,CAAC;IACN,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,sFAAsF;AACtF,MAAM,UAAU,0BAA0B,CACxC,IAA0B,EAC1B,MAAmE;IAEnE,MAAM,MAAM,GAAgC,EAAE,CAAC;IAC/C,IAAI,sBAA8B,CAAC;IACnC,IAAI,CAAC;QACH,sBAAsB,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAC9D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,yBAAyB;YAAE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7E,sBAAsB,GAAG,CAAC,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,CAAC;IAC9H,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QACxB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,CAAC;IAC/I,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM;QACrE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,uCAAuC,EAAE,CAAC,CAAC;IACxI,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE;QACpC,MAAM,IAAI,GAAG,eAAe,SAAS,GAAG,CAAC;QACzC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,CAAC;YAC7B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,IAAI,KAAK,EAAE,OAAO,EAAE,kCAAkC,EAAE,CAAC,CAAC;QACpI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAC3B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC,CAAC;QAC1J,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM;YAC/E,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,EAAE,OAAO,EAAE,wDAAwD,EAAE,CAAC,CAAC;QAC7J,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,WAAW,EAAE,EAAE;YAC3C,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,IAAI,YAAY,WAAW,MAAM,EAAE,OAAO,EAAE,oCAAoC,EAAE,CAAC,CAAC;QAChK,CAAC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/H,IAAI,OAAO,CAAC,IAAI,GAAG,CAAC;YAClB,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,GAAG,IAAI,UAAU,EAAE,OAAO,EAAE,2EAA2E,EAAE,CAAC,CAAC;QAC1L,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC;YACjD,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,OAAO,EAAE,6BAA6B,MAAM,EAAE,EAAE,CAAC,CAAC;QACjI,IAAI,MAAM,KAAK,SAAS;YAAE,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;gBACpE,OAAO,GAAG,sBAAsB,GAAG,CAAC,CAAC;;gBAClC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;IACH,IAAI,sBAAsB,GAAG,CAAC,IAAI,OAAO,GAAG,sBAAsB;QAChE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,wDAAwD,sBAAsB,EAAE,EAAE,CAAC,CAAC;IACrL,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,yBAAyB,CAAC,MAAM,CAAC,CAAC;IAEnE,IAAI,YAAY,GAA+F,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;IAC1I,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC7B,YAAY,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACjF,GAAG,EAAE,CAAC,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;YACpD,OAAO,EAAE,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC;SAChG,CAAC,CAAC,CAAC,CAAC;IACP,CAAC;IACD,MAAM,SAAS,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,GAAG,IAAI,CAAC,EAAE,IAAI,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;QAC7C,OAAO,EAAE,WAAW,CAAC,OAAO;KAC7B,CAAC,CAAC,CAAC;IACJ,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/D,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,4DAA4D;aACtE,CAAC,CAAC,CAAC;IACN,OAAO,sBAAsB,CAAC,SAAS,CAAC,CAAC;AAC3C,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,uBAAuB,CACrC,KAEC;IAED,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IAClC,OAAO,oBAAoB,CAAC;QAC1B,GAAG,MAAM;QACT,SAAS,EAAE,0BAA0B,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;KAC1D,CAAC,CAAC;AACL,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,gCAAgC,CAAC,KAA8C;IAC7F,OAAO,kBAAkB,OAAO,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;AAC/I,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,uBAAuB,CAAC,KAEvC;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;IACrC,MAAM,kBAAkB,GAAG,gCAAgC,CAAC,QAAQ,CAAC,CAAC;IACtE,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IAC/C,IAAI,QAAQ,KAAK,SAAS;QACxB,OAAO,sBAAsB,CAAC,EAAE,WAAW,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC9F,MAAM,MAAM,GAAG,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IAC3C,KAAK,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACtC,OAAO,sBAAsB,CAAC,EAAE,WAAW,EAAE,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,CAAC,CAAC;AACrF,CAAC;AAED,yFAAyF;AACzF,MAAM,UAAU,yBAAyB,CAAC,KAGzC;IACC,IAAI,KAAK,CAAC,qBAAqB,IAAI,KAAK,CAAC,mBAAmB;QAC1D,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe;gBACvB,IAAI,EAAE,gBAAgB;gBACtB,IAAI,EAAE,yBAAyB;gBAC/B,OAAO,EAAE,sEAAsE;aAChF,CAAC,CAAC,CAAC;IACN,MAAM,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IACxE,MAAM,WAAW,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,mBAAmB,EAAE,CAAC,CAAC;IAC1F,MAAM,aAAa,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,cAAc,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC9F,OAAO,sBAAsB,CAAC;QAC5B,IAAI,EAAE,cAAc;QACpB,mBAAmB;QACnB,qBAAqB;QACrB,WAAW;QACX,aAAa;QACb,WAAW,EAAE,0BAA0B,CAAC,WAAW,EAAE,aAAa,EAAE,mBAAmB,EAAE,qBAAqB,CAAC;KAChH,CAAC,CAAC;AACL,CAAC;AAED,iGAAiG;AACjG,MAAM,UAAU,yBAAyB,CAAC,KAGzC;IACC,MAAM,sBAAsB,GAAG,0BAA0B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACxE,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,sBAAsB;QACjD,MAAM,IAAI,yBAAyB,CAAC,CAAC;gBACnC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,aAAa;gBACtE,OAAO,EAAE,kDAAkD,sBAAsB,EAAE;aACpF,CAAC,CAAC,CAAC;IACN,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,CAAC;IACxD,MAAM,QAAQ,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC3C,IAAI,KAAK,GAAG,QAAQ,CAAC;IACrB,IAAI,mBAAmB,GAAG,KAAK,CAAC,UAAU,CAAC;IAC3C,MAAM,KAAK,GAAiC,EAAE,CAAC;IAC/C,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,QAAQ,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAC/B,MAAM,IAAI,yBAAyB,CAAC,CAAC;oBACnC,MAAM,EAAE,eAAe,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,eAAe,QAAQ,CAAC,EAAE,UAAU;oBAClG,OAAO,EAAE,sDAAsD;iBAChE,CAAC,CAAC,CAAC;QACN,mBAAmB,GAAG,qBAAqB,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,iBAAiB,CAAC,EAAE,GAAG,MAAM,EAAE,UAAU,EAAE,mBAAmB,EAAE,CAAC,CAAC;QACjF,KAAK,CAAC,IAAI,CAAC;YACT,UAAU,EAAE,QAAQ,CAAC,EAAE;YACvB,uBAAuB,EAAE,KAAK,CAAC,mBAAmB;YAClD,MAAM;YACN,WAAW,EAAE,sBAAsB,CAAC,KAAK,EAAE,MAAM,CAAC;SACnD,CAAC,CAAC;QACH,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;IACD,OAAO,sBAAsB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;AACrD,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { AnalysisMeasureDefinitionV1, AnalysisObservationSelection, AnalysisStatisticResult, PreparedHistoricalObservation } from "./customizationContracts.js";
2
+ /** A separate exposure population contributes its denominator once per origin. */
3
+ export declare function calculateRecipeExposureRatio(input: {
4
+ readonly measure: AnalysisMeasureDefinitionV1;
5
+ readonly observations: readonly PreparedHistoricalObservation[];
6
+ readonly selection: Extract<AnalysisObservationSelection, {
7
+ kind: "evaluation-date";
8
+ }>;
9
+ readonly exposure: number;
10
+ }): AnalysisStatisticResult;
11
+ //# sourceMappingURL=analysisRecipeStatistics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysisRecipeStatistics.d.ts","sourceRoot":"","sources":["../src/analysisRecipeStatistics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,EACvB,6BAA6B,EAC9B,MAAM,6BAA6B,CAAC;AAIrC,kFAAkF;AAClF,wBAAgB,4BAA4B,CAAC,KAAK,EAAE;IAClD,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAChE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC,4BAA4B,EAAE;QAAE,IAAI,EAAE,iBAAiB,CAAA;KAAE,CAAC,CAAC;IACvF,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,GAAG,uBAAuB,CA2C1B"}
@@ -0,0 +1,49 @@
1
+ import { calculateAnalysisStatistic } from "./descriptiveStatistics.js";
2
+ import { snapshotDiagnosticJson } from "./diagnosticRuntime.js";
3
+ /** A separate exposure population contributes its denominator once per origin. */
4
+ export function calculateRecipeExposureRatio(input) {
5
+ const { measure, observations, selection, exposure } = input;
6
+ if (measure.statistic.kind !== "ratio")
7
+ throw new Error("An exposure ratio requires a ratio statistic");
8
+ const numerator = calculateAnalysisStatistic({
9
+ measure: { ...measure, statistic: { kind: "sum", measureId: measure.statistic.numeratorMeasureId } },
10
+ observations,
11
+ selection,
12
+ });
13
+ // Unknown amounts cannot be treated as zeros while the complete exposure
14
+ // population still contributes to the denominator.
15
+ if (numerator.status !== "available" || numerator.excludedObservations > 0) {
16
+ return snapshotDiagnosticJson({
17
+ ...numerator,
18
+ value: null,
19
+ status: "unavailable",
20
+ numerator: numerator.value,
21
+ denominator: exposure,
22
+ findings: [...numerator.findings, {
23
+ capability: "descriptive-statistics",
24
+ code: "missing-prerequisite",
25
+ path: "$.measure.statistic.numeratorMeasureId",
26
+ message: "An exposure ratio requires observed numerator amounts for the selected population",
27
+ }],
28
+ });
29
+ }
30
+ const aggregate = {
31
+ ...observations[0],
32
+ evaluationDate: selection.evaluationDate,
33
+ measures: {
34
+ [measure.statistic.numeratorMeasureId]: numerator.value,
35
+ [measure.statistic.denominatorMeasureId]: exposure,
36
+ },
37
+ };
38
+ const ratio = calculateAnalysisStatistic({
39
+ measure,
40
+ observations: [aggregate],
41
+ selection: { ...selection, observationSelection: "exact" },
42
+ });
43
+ return snapshotDiagnosticJson({
44
+ ...ratio,
45
+ contributingObservations: numerator.contributingObservations,
46
+ excludedObservations: numerator.excludedObservations,
47
+ });
48
+ }
49
+ //# sourceMappingURL=analysisRecipeStatistics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analysisRecipeStatistics.js","sourceRoot":"","sources":["../src/analysisRecipeStatistics.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,kFAAkF;AAClF,MAAM,UAAU,4BAA4B,CAAC,KAK5C;IACC,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC7D,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,KAAK,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;IACxG,MAAM,SAAS,GAAG,0BAA0B,CAAC;QAC3C,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC,kBAAkB,EAAE,EAAE;QACpG,YAAY;QACZ,SAAS;KACV,CAAC,CAAC;IACH,yEAAyE;IACzE,mDAAmD;IACnD,IAAI,SAAS,CAAC,MAAM,KAAK,WAAW,IAAI,SAAS,CAAC,oBAAoB,GAAG,CAAC,EAAE,CAAC;QAC3E,OAAO,sBAAsB,CAAC;YAC5B,GAAG,SAAS;YACZ,KAAK,EAAE,IAAI;YACX,MAAM,EAAE,aAAsB;YAC9B,SAAS,EAAE,SAAS,CAAC,KAAK;YAC1B,WAAW,EAAE,QAAQ;YACrB,QAAQ,EAAE,CAAC,GAAG,SAAS,CAAC,QAAQ,EAAE;oBAChC,UAAU,EAAE,wBAAiC;oBAC7C,IAAI,EAAE,sBAA+B;oBACrC,IAAI,EAAE,wCAAwC;oBAC9C,OAAO,EAAE,mFAAmF;iBAC7F,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IACD,MAAM,SAAS,GAAkC;QAC/C,GAAG,YAAY,CAAC,CAAC,CAAE;QACnB,cAAc,EAAE,SAAS,CAAC,cAAc;QACxC,QAAQ,EAAE;YACR,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,CAAC,EAAE,SAAS,CAAC,KAAK;YACvD,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,CAAC,EAAE,QAAQ;SACnD;KACF,CAAC;IACF,MAAM,KAAK,GAAG,0BAA0B,CAAC;QACvC,OAAO;QACP,YAAY,EAAE,CAAC,SAAS,CAAC;QACzB,SAAS,EAAE,EAAE,GAAG,SAAS,EAAE,oBAAoB,EAAE,OAAO,EAAE;KAC3D,CAAC,CAAC;IACH,OAAO,sBAAsB,CAAC;QAC5B,GAAG,KAAK;QACR,wBAAwB,EAAE,SAAS,CAAC,wBAAwB;QAC5D,oBAAoB,EAAE,SAAS,CAAC,oBAAoB;KACrD,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"descriptiveStatistics.d.ts","sourceRoot":"","sources":["../src/descriptiveStatistics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,EAGvB,6BAA6B,EAC9B,MAAM,6BAA6B,CAAC;AAgHrC,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAChE,QAAQ,CAAC,SAAS,EAAE,4BAA4B,CAAC;CAClD,GAAG,uBAAuB,CAmM1B"}
1
+ {"version":3,"file":"descriptiveStatistics.d.ts","sourceRoot":"","sources":["../src/descriptiveStatistics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,2BAA2B,EAC3B,4BAA4B,EAC5B,uBAAuB,EAGvB,6BAA6B,EAC9B,MAAM,6BAA6B,CAAC;AAiHrC,yFAAyF;AACzF,wBAAgB,0BAA0B,CAAC,KAAK,EAAE;IAChD,QAAQ,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,SAAS,6BAA6B,EAAE,CAAC;IAChE,QAAQ,CAAC,SAAS,EAAE,4BAA4B,CAAC;CAClD,GAAG,uBAAuB,CAmM1B"}
@@ -69,13 +69,13 @@ function hfType7(values, probability) {
69
69
  const fraction = index - lower;
70
70
  return sorted[lower] + fraction * (sorted[Math.min(lower + 1, sorted.length - 1)] - sorted[lower]);
71
71
  }
72
- function durationValue(observation, statistic) {
72
+ function durationValue(observation, statistic, evaluationDate) {
73
73
  const start = statistic.start === "accident-date" ? observation.accidentDate : observation.reportDate;
74
74
  const closed = observation.dimensions.closedDate;
75
75
  const end = statistic.end === "report-date"
76
76
  ? observation.reportDate
77
77
  : statistic.end === "evaluation-date"
78
- ? observation.evaluationDate
78
+ ? evaluationDate
79
79
  : typeof closed === "string" && isRealIsoDate(closed)
80
80
  ? closed
81
81
  : null;
@@ -156,7 +156,7 @@ export function calculateAnalysisStatistic(input) {
156
156
  if (statistic.kind === "duration") {
157
157
  const values = observations
158
158
  .filter((observation) => statistic.population !== "closed-only" || observation.status === "closed")
159
- .map((observation) => durationValue(observation, statistic))
159
+ .map((observation) => durationValue(observation, statistic, selection.kind === "evaluation-date" ? selection.evaluationDate : observation.evaluationDate))
160
160
  .filter((value) => value !== null);
161
161
  if (values.length === 0)
162
162
  return unavailable(measure, input.observations.length, [finding("No observations have the required duration endpoints")]);
@@ -183,7 +183,7 @@ export function calculateAnalysisStatistic(input) {
183
183
  const start = statistic.start === "accident-date" ? observation.accidentDate : observation.reportDate;
184
184
  const suppliedClosedDate = observation.dimensions.closedDate;
185
185
  const isObservedEvent = observation.status === "closed" && typeof suppliedClosedDate === "string" && isRealIsoDate(suppliedClosedDate);
186
- const end = isObservedEvent ? suppliedClosedDate : observation.evaluationDate;
186
+ const end = isObservedEvent ? suppliedClosedDate : selection.kind === "evaluation-date" ? selection.evaluationDate : observation.evaluationDate;
187
187
  if (start === null || !isRealIsoDate(end))
188
188
  continue;
189
189
  const duration = daysBetweenIsoDates(start, end);
@@ -1 +1 @@
1
- {"version":3,"file":"descriptiveStatistics.js","sourceRoot":"","sources":["../src/descriptiveStatistics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"descriptiveStatistics.js","sourceRoot":"","sources":["../src/descriptiveStatistics.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  /** This package's runtime version. A test pins it to package.json. */
2
- export declare const CORE_PACKAGE_VERSION = "0.8.0";
2
+ export declare const CORE_PACKAGE_VERSION = "0.8.1";
3
3
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,3 +1,3 @@
1
1
  /** This package's runtime version. A test pins it to package.json. */
2
- export const CORE_PACKAGE_VERSION = "0.8.0";
2
+ export const CORE_PACKAGE_VERSION = "0.8.1";
3
3
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actuarial-ts/core",
3
- "version": "0.8.0",
3
+ "version": "0.8.1",
4
4
  "description": "Pure, zero-dependency P&C actuarial math for TypeScript: reserving, generalized definition-driven diagnostics, trends, limits, discounting, and seeded stochastic methods with published-value validation.",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",
@@ -0,0 +1,71 @@
1
+ import { canonicalJson } from "./canonical.js";
2
+ import type {
3
+ AnalysisResult,
4
+ AnalysisResultValue,
5
+ AnalysisScenarioDifference,
6
+ HistoricalScalar,
7
+ } from "./customizationContracts.js";
8
+ import { snapshotDiagnosticJson } from "./diagnosticRuntime.js";
9
+ import { DiagnosticValidationError } from "./types.js";
10
+
11
+ function indexValues(result: AnalysisResult, omitted: ReadonlySet<string>): Map<string, AnalysisResultValue> {
12
+ const indexed = new Map<string, AnalysisResultValue>();
13
+ for (const value of result.values) {
14
+ const coordinates = Object.fromEntries(Object.entries(value.coordinates).filter(([name]) => !omitted.has(name)));
15
+ const key = canonicalJson([value.measureId, coordinates]);
16
+ if (indexed.has(key))
17
+ throw new DiagnosticValidationError([{
18
+ domain: "configuration", code: "incompatible-semantics", path: "$.values",
19
+ message: "Comparison coordinates must identify one value per measure on each side",
20
+ }]);
21
+ indexed.set(key, value);
22
+ }
23
+ return indexed;
24
+ }
25
+
26
+ function compare(
27
+ baseline: AnalysisResult,
28
+ scenario: AnalysisResult,
29
+ omitted: ReadonlySet<string>,
30
+ evaluationPair?: { readonly priorEvaluationDate: string; readonly currentEvaluationDate: string },
31
+ ): readonly AnalysisScenarioDifference[] {
32
+ const left = indexValues(baseline, omitted);
33
+ const right = indexValues(scenario, omitted);
34
+ const keys = [...new Set([...left.keys(), ...right.keys()])].sort();
35
+ return snapshotDiagnosticJson(keys.map((key) => {
36
+ const before = left.get(key);
37
+ const after = right.get(key);
38
+ const value = before ?? after!;
39
+ if (before !== undefined && after !== undefined && before.unit !== after.unit)
40
+ throw new DiagnosticValidationError([{
41
+ domain: "configuration", code: "incompatible-semantics", path: `$.values.${value.measureId}.unit`,
42
+ message: `Cannot compare ${before.unit} with ${after.unit}`,
43
+ }]);
44
+ const baselineValue = before?.status === "available" ? before.value : null;
45
+ const scenarioValue = after?.status === "available" ? after.value : null;
46
+ const difference = baselineValue === null || scenarioValue === null ? null : scenarioValue - baselineValue;
47
+ const absoluteDifference = difference !== null && Number.isFinite(difference) ? difference : null;
48
+ const percentage = absoluteDifference === null || baselineValue === null || baselineValue === 0
49
+ ? null : absoluteDifference / baselineValue;
50
+ const percentageDifference = percentage !== null && Number.isFinite(percentage) ? percentage : null;
51
+ const coordinates: Readonly<Record<string, HistoricalScalar>> = evaluationPair === undefined
52
+ ? value.coordinates
53
+ : { ...Object.fromEntries(Object.entries(value.coordinates).filter(([name]) => name !== "evaluationDate")), ...evaluationPair };
54
+ return { measureId: value.measureId, unit: value.unit, coordinates, baselineValue, scenarioValue, absoluteDifference, percentageDifference };
55
+ }));
56
+ }
57
+
58
+ /** Matches exact coordinates and retains unmatched values from both results. */
59
+ export function compareAnalysisResults(baseline: AnalysisResult, scenario: AnalysisResult): readonly AnalysisScenarioDifference[] {
60
+ return compare(baseline, scenario, new Set());
61
+ }
62
+
63
+ /** Internal roll-forward alignment: evaluation is the comparison axis, not a join key. */
64
+ export function compareAnalysisEvaluations(
65
+ baseline: AnalysisResult,
66
+ scenario: AnalysisResult,
67
+ priorEvaluationDate: string,
68
+ currentEvaluationDate: string,
69
+ ): readonly AnalysisScenarioDifference[] {
70
+ return compare(baseline, scenario, new Set(["evaluationDate", "originLabel"]), { priorEvaluationDate, currentEvaluationDate });
71
+ }
@@ -1,4 +1,5 @@
1
1
  import { canonicalJson, fnv1a64 } from "./canonical.js";
2
+ import { CORE_PACKAGE_VERSION } from "./version.js";
2
3
  import type {
3
4
  AnalysisDefinition,
4
5
  AnalysisPredicate,
@@ -8,7 +9,6 @@ import type {
8
9
  AnalysisScenario,
9
10
  AnalysisScenarioChange,
10
11
  AnalysisScenarioGrid,
11
- AnalysisScenarioDifference,
12
12
  AnalysisScenarioRun,
13
13
  AnalysisRollForward,
14
14
  AnalysisScenarioBridgeStep,
@@ -22,6 +22,9 @@ import type {
22
22
  PreparedHistoricalObservation,
23
23
  } from "./customizationContracts.js";
24
24
  import { calculateAnalysisStatistic } from "./descriptiveStatistics.js";
25
+ import { calculateRecipeExposureRatio } from "./analysisRecipeStatistics.js";
26
+ import { compareAnalysisEvaluations, compareAnalysisResults } from "./analysisComparison.js";
27
+ export { compareAnalysisResults } from "./analysisComparison.js";
25
28
  import { isDiagnosticToken, snapshotDiagnosticJson } from "./diagnosticRuntime.js";
26
29
  import { earnAndAllocateExposure } from "./exposureEarning.js";
27
30
  import { selectExposureRevisions, selectExposureValuation } from "./exposureRevisions.js";
@@ -173,7 +176,9 @@ export function runAnalysisRecipe(input: {
173
176
  const reportingPopulation = reportingSelection.matches;
174
177
  const reportingKeys = new Set(reportingPopulation.map(key));
175
178
  let effective = financialPopulation;
176
- let financialExecutionFindings: readonly CustomizationCapabilityFinding[] = [...financialSelection.findings];
179
+ // A conflicted or incomplete history cannot authorize arithmetic over the
180
+ // surviving subset as though it were the complete financial population.
181
+ let financialExecutionFindings: readonly CustomizationCapabilityFinding[] = [...prepared.findings, ...financialSelection.findings];
177
182
  const reportingExecutionFindings: readonly CustomizationCapabilityFinding[] = [...reportingSelection.findings];
178
183
 
179
184
  const financialStep = input.recipe.steps.find((step) => step.kind === "apply-financial-terms");
@@ -182,7 +187,7 @@ export function runAnalysisRecipe(input: {
182
187
  const applied = applyFinancialTerms({
183
188
  observations: financialPopulation,
184
189
  terms,
185
- completeFinancialPopulation: true,
190
+ completeFinancialPopulation: financialExecutionFindings.length === 0,
186
191
  measureDefinitions: input.definition.measures,
187
192
  reportingClaims: reportingPopulation.map((observation) => ({ sourceNamespace: observation.sourceNamespace, claimId: observation.claimId })),
188
193
  });
@@ -216,7 +221,7 @@ export function runAnalysisRecipe(input: {
216
221
  amountMeasureId: pipelineStep.amountMeasureId,
217
222
  inputUnit: input.definition.measures.find((measure) => measure.statistic.kind === "sum" && measure.statistic.measureId === pipelineStep.amountMeasureId)?.unit ?? "unknown-unit",
218
223
  stages,
219
- completeFinancialPopulation: true,
224
+ completeFinancialPopulation: financialExecutionFindings.length === 0,
220
225
  reportingClaims: reportingPopulation.map((observation) => ({ sourceNamespace: observation.sourceNamespace, claimId: observation.claimId })),
221
226
  });
222
227
  if (applied.status === "available") {
@@ -278,6 +283,10 @@ export function runAnalysisRecipe(input: {
278
283
  const measureIds = new Set(
279
284
  input.recipe.steps.filter((step) => step.kind === "calculate").flatMap((step) => step.measureIds),
280
285
  );
286
+ // When preparation excluded every observation, retain visible unavailable
287
+ // output instead of hiding the preparation findings in an empty result.
288
+ if (groups.size === 0 && prepared.findings.length > 0)
289
+ groups.set("unassigned", { label: "Unavailable history", observations: [] });
281
290
  const values: AnalysisResultValue[] = [];
282
291
  for (const [originId, group] of [...groups].sort(([left], [right]) => left.localeCompare(right))) {
283
292
  for (const measure of input.definition.measures.filter((candidate) => measureIds.has(candidate.id))) {
@@ -321,27 +330,17 @@ export function runAnalysisRecipe(input: {
321
330
  }
322
331
  let statistic;
323
332
  if (measure.statistic.kind === "ratio" && exposedByTarget.get(originId)?.has(measure.statistic.denominatorMeasureId)) {
324
- const ratio = measure.statistic;
325
- const numerator = measureObservations.reduce((total, observation) => {
326
- const value = observation.measures[ratio.numeratorMeasureId];
327
- return total + (typeof value === "number" ? value : 0);
328
- }, 0);
329
- const denominator = exposedByTarget.get(originId)!.get(ratio.denominatorMeasureId)!;
330
- const seed = measureObservations[0];
331
- if (seed === undefined) {
332
- statistic = calculateAnalysisStatistic({ measure, observations: [], selection: { kind: "all-observations" } });
333
- } else {
334
- const synthetic = snapshotDiagnosticJson({ ...seed, measures: {
335
- [ratio.numeratorMeasureId]: numerator,
336
- [ratio.denominatorMeasureId]: denominator,
337
- } });
338
- statistic = calculateAnalysisStatistic({ measure, observations: [synthetic], selection: { kind: "all-observations" } });
339
- }
333
+ statistic = calculateRecipeExposureRatio({
334
+ measure,
335
+ observations: measureObservations,
336
+ selection: { kind: "evaluation-date", evaluationDate, observationSelection: input.definition.period.observationSelection },
337
+ exposure: exposedByTarget.get(originId)!.get(measure.statistic.denominatorMeasureId)!,
338
+ });
340
339
  } else {
341
340
  statistic = calculateAnalysisStatistic({
342
341
  measure,
343
342
  observations: measureObservations,
344
- selection: { kind: "evaluation-date", evaluationDate, observationSelection: "exact" },
343
+ selection: { kind: "evaluation-date", evaluationDate, observationSelection: input.definition.period.observationSelection },
345
344
  });
346
345
  }
347
346
  values.push({
@@ -381,11 +380,14 @@ export function runAnalysisRecipe(input: {
381
380
  }
382
381
  }
383
382
  const calculationInput = {
383
+ corePackageVersion: CORE_PACKAGE_VERSION,
384
384
  historyRevisionId: prepared.calculationRevisionId,
385
+ historyFindings: prepared.findings,
385
386
  definition: input.definition,
386
387
  recipe: input.recipe,
387
388
  evaluationDate,
388
389
  exposureRevisionIds: exposureCalculationRevisions.sort(),
390
+ exposureTargets: input.exposureTargets ?? [],
389
391
  };
390
392
  const lineageInput = {
391
393
  historyRevisionId: prepared.lineageRevisionId,
@@ -420,12 +422,13 @@ export function applyAnalysisScenario(
420
422
  }
421
423
  if (scenarioIssues.length > 0) throw new DiagnosticValidationError(scenarioIssues);
422
424
  let reportingPredicate: AnalysisPredicate = definition.scopes.reporting.predicate;
425
+ for (const change of scenario.changes)
426
+ if (change.kind === "reporting-predicate") reportingPredicate = change.predicate;
423
427
  const terms = definition.financialTerms.map((term) => {
424
428
  let current = term;
425
429
  for (const change of scenario.changes) {
426
- if (change.kind === "reporting-predicate") reportingPredicate = change.predicate;
427
- else if (change.termId === term.id && change.kind === "financial-term-limit") current = { ...current, limit: change.limit };
428
- else if (change.termId === term.id && change.kind === "financial-term-attachment")
430
+ if (change.kind === "financial-term-limit" && change.termId === term.id) current = { ...current, limit: change.limit };
431
+ else if (change.kind === "financial-term-attachment" && change.termId === term.id)
429
432
  current = current.kind === "policy-aggregate" ? { ...current, deductible: change.amount } : { ...current, attachment: change.amount };
430
433
  }
431
434
  return current;
@@ -438,39 +441,6 @@ export function applyAnalysisScenario(
438
441
  });
439
442
  }
440
443
 
441
- export function compareAnalysisResults(
442
- baseline: AnalysisResult,
443
- scenario: AnalysisResult,
444
- ): readonly AnalysisScenarioDifference[] {
445
- const scenarioValues = new Map(scenario.values.map((value) => [canonicalJson([value.measureId, value.coordinates]), value]));
446
- return snapshotDiagnosticJson(baseline.values.map((value) => {
447
- const compared = scenarioValues.get(canonicalJson([value.measureId, value.coordinates]));
448
- if (compared !== undefined && compared.unit !== value.unit)
449
- throw new DiagnosticValidationError([{
450
- domain: "configuration",
451
- code: "incompatible-semantics",
452
- path: `$.values.${value.measureId}.unit`,
453
- message: `Cannot compare ${value.unit} with ${compared.unit}`,
454
- }]);
455
- const baselineValue = value.value;
456
- const scenarioValue = compared?.value ?? null;
457
- const absoluteDifference = baselineValue === null || scenarioValue === null ? null : scenarioValue - baselineValue;
458
- const percentageDifference =
459
- absoluteDifference === null || baselineValue === null || baselineValue === 0
460
- ? null
461
- : absoluteDifference / baselineValue;
462
- return {
463
- measureId: value.measureId,
464
- unit: value.unit,
465
- coordinates: value.coordinates,
466
- baselineValue,
467
- scenarioValue,
468
- absoluteDifference,
469
- percentageDifference,
470
- };
471
- }));
472
- }
473
-
474
444
  /** Runs a bounded list of controlled scenarios against one immutable baseline. */
475
445
  export function runAnalysisScenarios(input: {
476
446
  readonly history: HistoricalDatasetInput;
@@ -618,7 +588,7 @@ export function runAnalysisScenarioGrid(
618
588
 
619
589
  /** Complete dependency identity for exact full-result reuse, including lineage. */
620
590
  export function analysisRecipeDependencyIdentity(input: Parameters<typeof runAnalysisRecipe>[0]): string {
621
- return `fnv1a64-jcs-v1:${fnv1a64(canonicalJson({ kind: "analysis-recipe-dependencies", input }))}`;
591
+ return `fnv1a64-jcs-v1:${fnv1a64(canonicalJson({ kind: "analysis-recipe-dependencies", corePackageVersion: CORE_PACKAGE_VERSION, input }))}`;
622
592
  }
623
593
 
624
594
  /** Uses caller-owned cache storage; a hit is returned only for the complete dependency identity. */
@@ -656,7 +626,7 @@ export function rollForwardAnalysisRecipe(input: Parameters<typeof runAnalysisRe
656
626
  currentEvaluationDate,
657
627
  priorResult,
658
628
  currentResult,
659
- differences: compareAnalysisResults(priorResult, currentResult),
629
+ differences: compareAnalysisEvaluations(priorResult, currentResult, priorEvaluationDate, currentEvaluationDate),
660
630
  });
661
631
  }
662
632
 
@@ -0,0 +1,59 @@
1
+ import type {
2
+ AnalysisMeasureDefinitionV1,
3
+ AnalysisObservationSelection,
4
+ AnalysisStatisticResult,
5
+ PreparedHistoricalObservation,
6
+ } from "./customizationContracts.js";
7
+ import { calculateAnalysisStatistic } from "./descriptiveStatistics.js";
8
+ import { snapshotDiagnosticJson } from "./diagnosticRuntime.js";
9
+
10
+ /** A separate exposure population contributes its denominator once per origin. */
11
+ export function calculateRecipeExposureRatio(input: {
12
+ readonly measure: AnalysisMeasureDefinitionV1;
13
+ readonly observations: readonly PreparedHistoricalObservation[];
14
+ readonly selection: Extract<AnalysisObservationSelection, { kind: "evaluation-date" }>;
15
+ readonly exposure: number;
16
+ }): AnalysisStatisticResult {
17
+ const { measure, observations, selection, exposure } = input;
18
+ if (measure.statistic.kind !== "ratio") throw new Error("An exposure ratio requires a ratio statistic");
19
+ const numerator = calculateAnalysisStatistic({
20
+ measure: { ...measure, statistic: { kind: "sum", measureId: measure.statistic.numeratorMeasureId } },
21
+ observations,
22
+ selection,
23
+ });
24
+ // Unknown amounts cannot be treated as zeros while the complete exposure
25
+ // population still contributes to the denominator.
26
+ if (numerator.status !== "available" || numerator.excludedObservations > 0) {
27
+ return snapshotDiagnosticJson({
28
+ ...numerator,
29
+ value: null,
30
+ status: "unavailable" as const,
31
+ numerator: numerator.value,
32
+ denominator: exposure,
33
+ findings: [...numerator.findings, {
34
+ capability: "descriptive-statistics" as const,
35
+ code: "missing-prerequisite" as const,
36
+ path: "$.measure.statistic.numeratorMeasureId",
37
+ message: "An exposure ratio requires observed numerator amounts for the selected population",
38
+ }],
39
+ });
40
+ }
41
+ const aggregate: PreparedHistoricalObservation = {
42
+ ...observations[0]!,
43
+ evaluationDate: selection.evaluationDate,
44
+ measures: {
45
+ [measure.statistic.numeratorMeasureId]: numerator.value,
46
+ [measure.statistic.denominatorMeasureId]: exposure,
47
+ },
48
+ };
49
+ const ratio = calculateAnalysisStatistic({
50
+ measure,
51
+ observations: [aggregate],
52
+ selection: { ...selection, observationSelection: "exact" },
53
+ });
54
+ return snapshotDiagnosticJson({
55
+ ...ratio,
56
+ contributingObservations: numerator.contributingObservations,
57
+ excludedObservations: numerator.excludedObservations,
58
+ });
59
+ }
@@ -101,6 +101,7 @@ function hfType7(values: readonly number[], probability: number): number {
101
101
  function durationValue(
102
102
  observation: PreparedHistoricalObservation,
103
103
  statistic: Extract<AnalysisMeasureDefinitionV1["statistic"], { kind: "duration" }>,
104
+ evaluationDate: string,
104
105
  ): number | null {
105
106
  const start = statistic.start === "accident-date" ? observation.accidentDate : observation.reportDate;
106
107
  const closed = observation.dimensions.closedDate;
@@ -108,7 +109,7 @@ function durationValue(
108
109
  statistic.end === "report-date"
109
110
  ? observation.reportDate
110
111
  : statistic.end === "evaluation-date"
111
- ? observation.evaluationDate
112
+ ? evaluationDate
112
113
  : typeof closed === "string" && isRealIsoDate(closed)
113
114
  ? closed
114
115
  : null;
@@ -198,7 +199,7 @@ export function calculateAnalysisStatistic(input: {
198
199
  if (statistic.kind === "duration") {
199
200
  const values = observations
200
201
  .filter((observation) => statistic.population !== "closed-only" || observation.status === "closed")
201
- .map((observation) => durationValue(observation, statistic))
202
+ .map((observation) => durationValue(observation, statistic, selection.kind === "evaluation-date" ? selection.evaluationDate : observation.evaluationDate))
202
203
  .filter((value): value is number => value !== null);
203
204
  if (values.length === 0)
204
205
  return unavailable(measure, input.observations.length, [finding("No observations have the required duration endpoints")]);
@@ -226,7 +227,7 @@ export function calculateAnalysisStatistic(input: {
226
227
  const start = statistic.start === "accident-date" ? observation.accidentDate : observation.reportDate;
227
228
  const suppliedClosedDate = observation.dimensions.closedDate;
228
229
  const isObservedEvent = observation.status === "closed" && typeof suppliedClosedDate === "string" && isRealIsoDate(suppliedClosedDate);
229
- const end = isObservedEvent ? suppliedClosedDate : observation.evaluationDate;
230
+ const end = isObservedEvent ? suppliedClosedDate : selection.kind === "evaluation-date" ? selection.evaluationDate : observation.evaluationDate;
230
231
  if (start === null || !isRealIsoDate(end)) continue;
231
232
  const duration = daysBetweenIsoDates(start, end);
232
233
  if (duration < 0) continue;
package/src/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  /** This package's runtime version. A test pins it to package.json. */
2
- export const CORE_PACKAGE_VERSION = "0.8.0";
2
+ export const CORE_PACKAGE_VERSION = "0.8.1";