@bilig/core 0.11.8 → 0.11.10
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/dist/csv.js +1 -1
- package/dist/csv.js.map +1 -1
- package/dist/engine/engine-runtime-base.js +1 -0
- package/dist/engine/engine-runtime-base.js.map +1 -1
- package/dist/engine/live.js +1 -0
- package/dist/engine/live.js.map +1 -1
- package/dist/engine/services/formula-graph-service.js +4 -0
- package/dist/engine/services/formula-graph-service.js.map +1 -1
- package/dist/engine/services/operation-batch-applier.js +17 -2
- package/dist/engine/services/operation-batch-applier.js.map +1 -1
- package/dist/engine/services/recalc-cycle-evaluation.d.ts +18 -0
- package/dist/engine/services/recalc-cycle-evaluation.js +87 -0
- package/dist/engine/services/recalc-cycle-evaluation.js.map +1 -0
- package/dist/engine/services/recalc-service.d.ts +1 -0
- package/dist/engine/services/recalc-service.js +170 -49
- package/dist/engine/services/recalc-service.js.map +1 -1
- package/dist/engine-metadata-utils.d.ts +3 -1
- package/dist/engine-metadata-utils.js +50 -1
- package/dist/engine-metadata-utils.js.map +1 -1
- package/dist/engine-snapshot-utils.js +6 -0
- package/dist/engine-snapshot-utils.js.map +1 -1
- package/dist/engine.js +3 -3
- package/dist/engine.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/snapshot/runtime-image.js +9 -6
- package/dist/snapshot/runtime-image.js.map +1 -1
- package/dist/workbook-axis-entry-store.js +7 -53
- package/dist/workbook-axis-entry-store.js.map +1 -1
- package/dist/workbook-axis-records.d.ts +1 -0
- package/dist/workbook-axis-records.js +17 -32
- package/dist/workbook-axis-records.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
export function buildCycleEvaluationNodes(args) {
|
|
2
|
+
const nodeIndexByKey = new Map();
|
|
3
|
+
const nodeIndexByCell = new Map();
|
|
4
|
+
const dirtyFormulaOrder = new Map();
|
|
5
|
+
const nodes = [];
|
|
6
|
+
let hasCycleMembers = false;
|
|
7
|
+
for (let orderedIndex = 0; orderedIndex < args.orderedCount; orderedIndex += 1) {
|
|
8
|
+
const cellIndex = args.ordered[orderedIndex];
|
|
9
|
+
if (!args.formulas.has(cellIndex)) {
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
dirtyFormulaOrder.set(cellIndex, orderedIndex);
|
|
13
|
+
const cycleGroupId = args.cycleGroupIds[cellIndex] ?? -1;
|
|
14
|
+
const kind = cycleGroupId >= 0 ? 'cycle' : 'formula';
|
|
15
|
+
const key = kind === 'cycle' ? `cycle:${cycleGroupId}` : `formula:${cellIndex}`;
|
|
16
|
+
let nodeIndex = nodeIndexByKey.get(key);
|
|
17
|
+
if (nodeIndex === undefined) {
|
|
18
|
+
nodeIndex = nodes.length;
|
|
19
|
+
nodeIndexByKey.set(key, nodeIndex);
|
|
20
|
+
nodes.push({
|
|
21
|
+
kind,
|
|
22
|
+
order: orderedIndex,
|
|
23
|
+
formulaCellIndices: [],
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (kind === 'cycle') {
|
|
27
|
+
hasCycleMembers = true;
|
|
28
|
+
}
|
|
29
|
+
nodes[nodeIndex].formulaCellIndices.push(cellIndex);
|
|
30
|
+
nodeIndexByCell.set(cellIndex, nodeIndex);
|
|
31
|
+
}
|
|
32
|
+
if (!hasCycleMembers) {
|
|
33
|
+
return undefined;
|
|
34
|
+
}
|
|
35
|
+
nodes.forEach((node) => {
|
|
36
|
+
node.formulaCellIndices.sort((left, right) => (dirtyFormulaOrder.get(left) ?? 0) - (dirtyFormulaOrder.get(right) ?? 0));
|
|
37
|
+
});
|
|
38
|
+
const outgoing = nodes.map(() => new Set());
|
|
39
|
+
const indegree = new Int32Array(nodes.length);
|
|
40
|
+
for (let nodeIndex = 0; nodeIndex < nodes.length; nodeIndex += 1) {
|
|
41
|
+
const node = nodes[nodeIndex];
|
|
42
|
+
for (let formulaIndex = 0; formulaIndex < node.formulaCellIndices.length; formulaIndex += 1) {
|
|
43
|
+
const formula = args.formulas.get(node.formulaCellIndices[formulaIndex]);
|
|
44
|
+
if (!formula) {
|
|
45
|
+
continue;
|
|
46
|
+
}
|
|
47
|
+
args.forEachFormulaDependencyCell(formula.cellIndex, (dependencyCellIndex) => {
|
|
48
|
+
const dependencyNodeIndex = nodeIndexByCell.get(dependencyCellIndex);
|
|
49
|
+
if (dependencyNodeIndex === undefined || dependencyNodeIndex === nodeIndex || outgoing[dependencyNodeIndex].has(nodeIndex)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
outgoing[dependencyNodeIndex]?.add(nodeIndex);
|
|
53
|
+
indegree[nodeIndex] = (indegree[nodeIndex] ?? 0) + 1;
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
const ready = [];
|
|
58
|
+
const visited = new Uint8Array(nodes.length);
|
|
59
|
+
for (let nodeIndex = 0; nodeIndex < nodes.length; nodeIndex += 1) {
|
|
60
|
+
if (indegree[nodeIndex] === 0) {
|
|
61
|
+
ready.push(nodeIndex);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
ready.sort((left, right) => nodes[left].order - nodes[right].order);
|
|
65
|
+
const orderedNodes = [];
|
|
66
|
+
while (ready.length > 0) {
|
|
67
|
+
const nodeIndex = ready.shift();
|
|
68
|
+
if (visited[nodeIndex] === 1) {
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
visited[nodeIndex] = 1;
|
|
72
|
+
orderedNodes.push(nodes[nodeIndex]);
|
|
73
|
+
for (const dependentNodeIndex of outgoing[nodeIndex]) {
|
|
74
|
+
indegree[dependentNodeIndex] = (indegree[dependentNodeIndex] ?? 0) - 1;
|
|
75
|
+
if (indegree[dependentNodeIndex] === 0) {
|
|
76
|
+
ready.push(dependentNodeIndex);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
ready.sort((left, right) => nodes[left].order - nodes[right].order);
|
|
80
|
+
}
|
|
81
|
+
if (orderedNodes.length === nodes.length) {
|
|
82
|
+
return orderedNodes;
|
|
83
|
+
}
|
|
84
|
+
const remaining = nodes.filter((_node, nodeIndex) => visited[nodeIndex] === 0).toSorted((left, right) => left.order - right.order);
|
|
85
|
+
return [...orderedNodes, ...remaining];
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=recalc-cycle-evaluation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"recalc-cycle-evaluation.js","sourceRoot":"","sources":["../../../src/engine/services/recalc-cycle-evaluation.ts"],"names":[],"mappings":"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"}
|
|
@@ -86,4 +86,5 @@ export declare function createEngineRecalcService(args: {
|
|
|
86
86
|
readonly evaluateDirectLookupFormula: (cellIndex: number) => number[] | undefined;
|
|
87
87
|
readonly evaluateUnsupportedFormula: (cellIndex: number) => number[];
|
|
88
88
|
readonly materializePivot: (pivot: WorkbookPivotRecord) => number[];
|
|
89
|
+
readonly forEachFormulaDependencyCell: (cellIndex: number, fn: (dependencyCellIndex: number) => void) => void;
|
|
89
90
|
}): EngineRecalcService;
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import { Effect } from 'effect';
|
|
2
2
|
import { ErrorCode, FormulaMode, ValueTag, } from '@bilig/protocol';
|
|
3
3
|
import { makeCellKey } from '../../workbook-store.js';
|
|
4
|
-
import { errorValue } from '../../engine-value-utils.js';
|
|
4
|
+
import { areCellValuesEqual, emptyValue, errorValue } from '../../engine-value-utils.js';
|
|
5
5
|
import { EngineRecalcError } from '../errors.js';
|
|
6
6
|
import { parseCellAddress, utcDateToExcelSerial } from '@bilig/formula';
|
|
7
|
+
import { buildCycleEvaluationNodes } from './recalc-cycle-evaluation.js';
|
|
7
8
|
const TRACKED_CELL_PATCH_LIMIT = 64;
|
|
9
|
+
const DEFAULT_ITERATION_COUNT = 100;
|
|
10
|
+
const DEFAULT_ITERATION_DELTA = 0.001;
|
|
8
11
|
function createRecalcVolatileState(now) {
|
|
9
12
|
return {
|
|
10
13
|
nowSerial: utcDateToExcelSerial(now()),
|
|
@@ -130,6 +133,14 @@ export function createEngineRecalcService(args) {
|
|
|
130
133
|
let jsCount = 0;
|
|
131
134
|
let pendingKernelSyncCount = deferredKernelSyncCount;
|
|
132
135
|
const volatileState = createRecalcVolatileState(args.now);
|
|
136
|
+
const calculationSettings = args.state.workbook.getCalculationSettings();
|
|
137
|
+
const iterationEnabled = calculationSettings.iterate === true;
|
|
138
|
+
const rawIterationCount = calculationSettings.iterateCount;
|
|
139
|
+
const iterationCount = typeof rawIterationCount === 'number' && Number.isSafeInteger(rawIterationCount) && rawIterationCount > 0
|
|
140
|
+
? rawIterationCount
|
|
141
|
+
: DEFAULT_ITERATION_COUNT;
|
|
142
|
+
const parsedIterationDelta = typeof calculationSettings.iterateDelta === 'string' ? Number(calculationSettings.iterateDelta) : Number.NaN;
|
|
143
|
+
const iterationDelta = Number.isFinite(parsedIterationDelta) ? Math.abs(parsedIterationDelta) : DEFAULT_ITERATION_DELTA;
|
|
133
144
|
let wasmProgramFlushed = false;
|
|
134
145
|
const ensureWasmProgramFlushed = () => {
|
|
135
146
|
if (wasmProgramFlushed) {
|
|
@@ -253,23 +264,71 @@ export function createEngineRecalcService(args) {
|
|
|
253
264
|
pendingKernelSync[pendingKernelSyncCount] = cellIndex;
|
|
254
265
|
pendingKernelSyncCount += 1;
|
|
255
266
|
};
|
|
256
|
-
const
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
267
|
+
const noteQueuedSpillChanges = (changedCellIndices) => {
|
|
268
|
+
noteSpillChanges(changedCellIndices);
|
|
269
|
+
for (let spillIndex = 0; spillIndex < changedCellIndices.length; spillIndex += 1) {
|
|
270
|
+
queueKernelSync(changedCellIndices[spillIndex]);
|
|
271
|
+
}
|
|
272
|
+
};
|
|
273
|
+
const flushPendingWasmBatch = () => {
|
|
274
|
+
wasmCount += flushWasmBatch(wasmBatchCount, wasmBatchHasVolatile, wasmBatchRandCount);
|
|
275
|
+
wasmBatchCount = 0;
|
|
276
|
+
wasmBatchHasVolatile = false;
|
|
277
|
+
wasmBatchRandCount = 0;
|
|
278
|
+
};
|
|
279
|
+
const readStoredValue = (cellIndex) => args.state.workbook.cellStore.getValue(cellIndex, (id) => (id === 0 ? '' : args.state.strings.get(id)));
|
|
280
|
+
const clearDerivedFormulaFlags = (cellIndex) => {
|
|
281
|
+
const currentFlags = args.state.workbook.cellStore.flags[cellIndex] ?? 0;
|
|
282
|
+
const nextFlags = currentFlags & ~(64 /* CellFlags.SpillChild */ | 128 /* CellFlags.PivotOutput */);
|
|
283
|
+
if (nextFlags === currentFlags) {
|
|
284
|
+
return false;
|
|
285
|
+
}
|
|
286
|
+
args.state.workbook.cellStore.flags[cellIndex] = nextFlags;
|
|
287
|
+
return true;
|
|
288
|
+
};
|
|
289
|
+
const hasCycleDependency = (cellIndex) => {
|
|
290
|
+
let found = false;
|
|
291
|
+
args.forEachFormulaDependencyCell(cellIndex, (dependencyCellIndex) => {
|
|
292
|
+
if (!found && ((args.state.workbook.cellStore.flags[dependencyCellIndex] ?? 0) & 8 /* CellFlags.InCycle */) !== 0) {
|
|
293
|
+
found = true;
|
|
261
294
|
}
|
|
295
|
+
});
|
|
296
|
+
return found;
|
|
297
|
+
};
|
|
298
|
+
const materializeCycleFormulaError = (cellIndex) => {
|
|
299
|
+
const beforeValue = readStoredValue(cellIndex);
|
|
300
|
+
const spillChanges = args.clearOwnedSpill(cellIndex);
|
|
301
|
+
const flagsChanged = clearDerivedFormulaFlags(cellIndex);
|
|
302
|
+
const nextValue = errorValue(ErrorCode.Cycle);
|
|
303
|
+
if (!flagsChanged && spillChanges.length === 0 && areCellValuesEqual(beforeValue, nextValue)) {
|
|
304
|
+
return;
|
|
262
305
|
}
|
|
263
|
-
|
|
306
|
+
args.state.workbook.cellStore.setValue(cellIndex, nextValue);
|
|
307
|
+
args.state.workbook.notifyCellValueWritten(cellIndex);
|
|
308
|
+
queueKernelSync(cellIndex);
|
|
309
|
+
noteQueuedSpillChanges(spillChanges);
|
|
264
310
|
};
|
|
265
|
-
const
|
|
311
|
+
const seedCycleFormulaCell = (cellIndex) => {
|
|
312
|
+
const currentValue = readStoredValue(cellIndex);
|
|
313
|
+
if (currentValue.tag !== ValueTag.Error || currentValue.code !== ErrorCode.Cycle) {
|
|
314
|
+
return;
|
|
315
|
+
}
|
|
266
316
|
const spillChanges = args.clearOwnedSpill(cellIndex);
|
|
267
|
-
|
|
317
|
+
clearDerivedFormulaFlags(cellIndex);
|
|
318
|
+
args.state.workbook.cellStore.setValue(cellIndex, emptyValue());
|
|
319
|
+
args.state.workbook.notifyCellValueWritten(cellIndex);
|
|
268
320
|
queueKernelSync(cellIndex);
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
321
|
+
noteQueuedSpillChanges(spillChanges);
|
|
322
|
+
};
|
|
323
|
+
const cycleIterationDrift = (beforeValue, afterValue) => {
|
|
324
|
+
if (beforeValue.tag === ValueTag.Number && afterValue.tag === ValueTag.Number) {
|
|
325
|
+
if (Object.is(beforeValue.value, afterValue.value)) {
|
|
326
|
+
return 0;
|
|
327
|
+
}
|
|
328
|
+
const drift = Math.abs(afterValue.value - beforeValue.value);
|
|
329
|
+
return Number.isFinite(drift) ? drift : Number.POSITIVE_INFINITY;
|
|
272
330
|
}
|
|
331
|
+
return areCellValuesEqual(beforeValue, afterValue) ? 0 : Number.POSITIVE_INFINITY;
|
|
273
332
|
};
|
|
274
333
|
const evaluateWasmSpillFormula = (cellIndex, formula) => {
|
|
275
334
|
ensureWasmProgramFlushed();
|
|
@@ -305,37 +364,25 @@ export function createEngineRecalcService(args) {
|
|
|
305
364
|
};
|
|
306
365
|
args.state.workbook.cellStore.setValue(cellIndex, spillMaterialization.ownerValue, spillMaterialization.ownerValue.tag === ValueTag.String ? args.state.strings.intern(spillMaterialization.ownerValue.value) : 0);
|
|
307
366
|
queueKernelSync(cellIndex);
|
|
308
|
-
|
|
309
|
-
queueKernelSync(spillMaterialization.changedCellIndices[spillIndex]);
|
|
310
|
-
}
|
|
311
|
-
noteSpillChanges(spillMaterialization.changedCellIndices);
|
|
367
|
+
noteQueuedSpillChanges(spillMaterialization.changedCellIndices);
|
|
312
368
|
return 1;
|
|
313
369
|
};
|
|
314
|
-
|
|
315
|
-
args.
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
continue;
|
|
320
|
-
}
|
|
321
|
-
if (((args.state.workbook.cellStore.flags[cellIndex] ?? 0) & 8 /* CellFlags.InCycle */) !== 0) {
|
|
322
|
-
continue;
|
|
370
|
+
const evaluateFormulaCell = (cellIndex, formula, options) => {
|
|
371
|
+
if (options.treatCycleFormulaAsError && ((args.state.workbook.cellStore.flags[cellIndex] ?? 0) & 8 /* CellFlags.InCycle */) !== 0) {
|
|
372
|
+
jsCount += 1;
|
|
373
|
+
materializeCycleFormulaError(cellIndex);
|
|
374
|
+
return;
|
|
323
375
|
}
|
|
324
|
-
if (hasCycleDependency(
|
|
376
|
+
if (options.allowCycleDependencyError && hasCycleDependency(cellIndex)) {
|
|
325
377
|
jsCount += 1;
|
|
326
|
-
|
|
327
|
-
|
|
378
|
+
materializeCycleFormulaError(cellIndex);
|
|
379
|
+
return;
|
|
328
380
|
}
|
|
329
381
|
if (formula.directLookup !== undefined ||
|
|
330
382
|
formula.directAggregate !== undefined ||
|
|
331
383
|
formula.directScalar !== undefined ||
|
|
332
384
|
formula.directCriteria !== undefined) {
|
|
333
|
-
|
|
334
|
-
wasmCount += flushWasmBatch(wasmBatchCount, wasmBatchHasVolatile, wasmBatchRandCount);
|
|
335
|
-
wasmBatchCount = 0;
|
|
336
|
-
wasmBatchHasVolatile = false;
|
|
337
|
-
wasmBatchRandCount = 0;
|
|
338
|
-
}
|
|
385
|
+
flushPendingWasmBatch();
|
|
339
386
|
args.checkEvaluationBudget();
|
|
340
387
|
const directLookupChanges = args.evaluateDirectLookupFormula(cellIndex);
|
|
341
388
|
args.checkEvaluationBudget();
|
|
@@ -348,38 +395,112 @@ export function createEngineRecalcService(args) {
|
|
|
348
395
|
(formula.directScalar !== undefined || formula.directAggregate !== undefined)) {
|
|
349
396
|
jsCount += 1;
|
|
350
397
|
}
|
|
351
|
-
|
|
398
|
+
noteQueuedSpillChanges(directLookupChanges);
|
|
352
399
|
queueKernelSync(cellIndex);
|
|
353
|
-
|
|
400
|
+
return;
|
|
354
401
|
}
|
|
355
402
|
}
|
|
356
|
-
if (formula.compiled.mode === FormulaMode.WasmFastPath && args.state.wasm.ready) {
|
|
403
|
+
if (!options.forceJs && formula.compiled.mode === FormulaMode.WasmFastPath && args.state.wasm.ready) {
|
|
357
404
|
if (formula.compiled.producesSpill) {
|
|
358
|
-
|
|
359
|
-
wasmBatchCount = 0;
|
|
360
|
-
wasmBatchHasVolatile = false;
|
|
361
|
-
wasmBatchRandCount = 0;
|
|
405
|
+
flushPendingWasmBatch();
|
|
362
406
|
wasmCount += evaluateWasmSpillFormula(cellIndex, formula);
|
|
363
|
-
|
|
407
|
+
return;
|
|
364
408
|
}
|
|
365
409
|
wasmBatch[wasmBatchCount] = cellIndex;
|
|
366
410
|
wasmBatchCount += 1;
|
|
367
411
|
wasmBatchHasVolatile = wasmBatchHasVolatile || formula.compiled.volatile;
|
|
368
412
|
wasmBatchRandCount += formula.compiled.randCallCount;
|
|
369
|
-
|
|
413
|
+
return;
|
|
370
414
|
}
|
|
371
|
-
|
|
372
|
-
wasmBatchCount = 0;
|
|
373
|
-
wasmBatchHasVolatile = false;
|
|
374
|
-
wasmBatchRandCount = 0;
|
|
415
|
+
flushPendingWasmBatch();
|
|
375
416
|
jsCount += 1;
|
|
376
417
|
args.checkEvaluationBudget();
|
|
377
418
|
const spillChanges = args.evaluateUnsupportedFormula(cellIndex);
|
|
378
419
|
args.checkEvaluationBudget();
|
|
379
|
-
|
|
420
|
+
noteQueuedSpillChanges(spillChanges);
|
|
380
421
|
queueKernelSync(cellIndex);
|
|
422
|
+
};
|
|
423
|
+
const evaluateCycleNode = (node) => {
|
|
424
|
+
for (let formulaIndex = 0; formulaIndex < node.formulaCellIndices.length; formulaIndex += 1) {
|
|
425
|
+
seedCycleFormulaCell(node.formulaCellIndices[formulaIndex]);
|
|
426
|
+
}
|
|
427
|
+
const previousValues = node.formulaCellIndices.map((cellIndex) => readStoredValue(cellIndex));
|
|
428
|
+
for (let iterationIndex = 0; iterationIndex < iterationCount; iterationIndex += 1) {
|
|
429
|
+
args.checkEvaluationBudget();
|
|
430
|
+
for (let formulaIndex = 0; formulaIndex < node.formulaCellIndices.length; formulaIndex += 1) {
|
|
431
|
+
const cellIndex = node.formulaCellIndices[formulaIndex];
|
|
432
|
+
const formula = args.state.formulas.get(cellIndex);
|
|
433
|
+
if (!formula) {
|
|
434
|
+
continue;
|
|
435
|
+
}
|
|
436
|
+
evaluateFormulaCell(cellIndex, formula, {
|
|
437
|
+
allowCycleDependencyError: false,
|
|
438
|
+
treatCycleFormulaAsError: false,
|
|
439
|
+
forceJs: true,
|
|
440
|
+
});
|
|
441
|
+
}
|
|
442
|
+
let converged = true;
|
|
443
|
+
for (let formulaIndex = 0; formulaIndex < node.formulaCellIndices.length; formulaIndex += 1) {
|
|
444
|
+
const cellIndex = node.formulaCellIndices[formulaIndex];
|
|
445
|
+
const currentValue = readStoredValue(cellIndex);
|
|
446
|
+
if (cycleIterationDrift(previousValues[formulaIndex], currentValue) > iterationDelta) {
|
|
447
|
+
converged = false;
|
|
448
|
+
}
|
|
449
|
+
previousValues[formulaIndex] = currentValue;
|
|
450
|
+
}
|
|
451
|
+
if (converged) {
|
|
452
|
+
break;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
};
|
|
456
|
+
const cycleEvaluationNodes = iterationEnabled
|
|
457
|
+
? buildCycleEvaluationNodes({
|
|
458
|
+
ordered,
|
|
459
|
+
orderedCount,
|
|
460
|
+
formulas: args.state.formulas,
|
|
461
|
+
cycleGroupIds: args.state.workbook.cellStore.cycleGroupIds,
|
|
462
|
+
forEachFormulaDependencyCell: args.forEachFormulaDependencyCell,
|
|
463
|
+
})
|
|
464
|
+
: undefined;
|
|
465
|
+
if (cycleEvaluationNodes) {
|
|
466
|
+
for (let nodeIndex = 0; nodeIndex < cycleEvaluationNodes.length; nodeIndex += 1) {
|
|
467
|
+
args.checkEvaluationBudget();
|
|
468
|
+
const node = cycleEvaluationNodes[nodeIndex];
|
|
469
|
+
if (node.kind === 'cycle') {
|
|
470
|
+
flushPendingWasmBatch();
|
|
471
|
+
evaluateCycleNode(node);
|
|
472
|
+
continue;
|
|
473
|
+
}
|
|
474
|
+
for (let formulaIndex = 0; formulaIndex < node.formulaCellIndices.length; formulaIndex += 1) {
|
|
475
|
+
const cellIndex = node.formulaCellIndices[formulaIndex];
|
|
476
|
+
const formula = args.state.formulas.get(cellIndex);
|
|
477
|
+
if (!formula) {
|
|
478
|
+
continue;
|
|
479
|
+
}
|
|
480
|
+
evaluateFormulaCell(cellIndex, formula, {
|
|
481
|
+
allowCycleDependencyError: false,
|
|
482
|
+
treatCycleFormulaAsError: false,
|
|
483
|
+
forceJs: false,
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
}
|
|
488
|
+
else {
|
|
489
|
+
for (let index = 0; index < orderedCount; index += 1) {
|
|
490
|
+
args.checkEvaluationBudget();
|
|
491
|
+
const cellIndex = ordered[index];
|
|
492
|
+
const formula = args.state.formulas.get(cellIndex);
|
|
493
|
+
if (!formula) {
|
|
494
|
+
continue;
|
|
495
|
+
}
|
|
496
|
+
evaluateFormulaCell(cellIndex, formula, {
|
|
497
|
+
allowCycleDependencyError: !iterationEnabled,
|
|
498
|
+
treatCycleFormulaAsError: !iterationEnabled,
|
|
499
|
+
forceJs: false,
|
|
500
|
+
});
|
|
501
|
+
}
|
|
381
502
|
}
|
|
382
|
-
|
|
503
|
+
flushPendingWasmBatch();
|
|
383
504
|
args.setDeferredKernelSyncCount(pendingKernelSyncCount);
|
|
384
505
|
deferredKernelSyncCount = pendingKernelSyncCount;
|
|
385
506
|
if (spillChangedRoots.length === 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recalc-service.js","sourceRoot":"","sources":["../../../src/engine/services/recalc-service.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"recalc-service.js","sourceRoot":"","sources":["../../../src/engine/services/recalc-service.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EACL,SAAS,EACT,WAAW,EACX,QAAQ,GAMT,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AAErD,OAAO,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAExF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AAGvE,OAAO,EAAE,yBAAyB,EAA4B,MAAM,8BAA8B,CAAA;AAElG,MAAM,wBAAwB,GAAG,EAAE,CAAA;AACnC,MAAM,uBAAuB,GAAG,GAAG,CAAA;AACnC,MAAM,uBAAuB,GAAG,KAAK,CAAA;AAmCrC,SAAS,yBAAyB,CAAC,GAAe;IAChD,OAAO;QACL,SAAS,EAAE,oBAAoB,CAAC,GAAG,EAAE,CAAC;QACtC,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,CAAC;KAChB,CAAA;AACH,CAAC;AAED,SAAS,0BAA0B,CAAC,KAA0B,EAAE,KAAa,EAAE,MAAoB;IACjG,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,GAAG,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC,MAAM,CAAA;IACrE,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QAChB,OAAM;IACR,CAAC;IACD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAA;IACnC,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,KAA0B,EAAE,KAAa,EAAE,MAAoB;IAClG,0BAA0B,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,CAAA;IACvF,KAAK,CAAC,YAAY,IAAI,KAAK,CAAA;IAC3B,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;AAClC,CAAC;AAED,SAAS,eAAe,CAAC,OAAgC,EAAE,YAAoB;IAC7E,IAAI,OAAO,YAAY,WAAW,EAAE,CAAC;QACnC,OAAO,OAAO,CAAA;IAChB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,YAAY,CAAC,CAAA;IAC1C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACnC,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,IAsDzC;IACC,MAAM,6BAA6B,GAAG,CAAC,OAAgC,EAAsC,EAAE,CAC7G,OAAO,CAAC,MAAM,IAAI,wBAAwB;QACxC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE;YAClC,YAAY,EAAE,OAAO;YACrB,iBAAiB,EAAE,EAAE;YACrB,eAAe,EAAE,EAAE;YACnB,kBAAkB,EAAE,EAAE;SACvB,CAAC;QACJ,CAAC,CAAC,SAAS,CAAA;IAEf,MAAM,kBAAkB,GAAG,CAAC,KAA0B,EAAE,OAAgC,EAAW,EAAE;QACnG,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACvE,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACtF,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAClF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACvD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAE,CAAA;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;YACjE,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,UAAU,CAAC,EAAE,EAAE,CAAC;gBACvD,SAAQ;YACV,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;YAC/D,MAAM,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;YAChF,MAAM,GAAG,GAAG,QAAQ,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;YAChF,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,IAAI,GAAG,IAAI,UAAU,CAAC,GAAG,IAAI,GAAG,IAAI,QAAQ,CAAC,GAAG,EAAE,CAAC;gBACjG,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,CAAC,OAAgC,EAAE,QAAiB,EAAO,EAAE;QACvF,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAA;QAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YAC/D,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA;QAC/B,CAAC;QAED,MAAM,kBAAkB,GAAa,EAAE,CAAA;QACvC,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAA;QACrC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAE,CAAA;YAC5B,IAAI,CAAC,QAAQ,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE,CAAC;gBACrD,SAAQ;YACV,CAAC;YACD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAA;YACjD,KAAK,IAAI,WAAW,GAAG,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,EAAE,CAAC;gBAC9E,MAAM,SAAS,GAAG,YAAY,CAAC,WAAW,CAAE,CAAA;gBAC5C,IAAI,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC/B,SAAQ;gBACV,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;gBAC1B,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACpC,CAAC;QACH,CAAC;QAED,OAAO,kBAAkB,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAA;IACxG,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,CAC1B,YAAqC,EACrC,eAAwC,EACxC,cAGC,EACI,EAAE;QACP,MAAM,OAAO,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;QACrC,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAA;QACnC,IAAI,CAAC;YACH,IAAI,CAAC,qBAAqB,EAAE,CAAA;YAC5B,IAAI,CAAC,2BAA2B,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC,CAAA;YACxE,IAAI,iBAAiB,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAA;YACnD,IAAI,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;YACnC,IAAI,uBAAuB,GAAG,IAAI,CAAC,0BAA0B,EAAE,CAAA;YAC/D,IAAI,uBAAuB,GAAG,IAAI,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAA;YACnE,MAAM,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,EAAE,CAAA;YAC/D,IAAI,uBAAuB,KAAK,WAAW,EAAE,CAAC;gBAC5C,uBAAuB,GAAG,CAAC,CAAA;gBAC3B,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAChC,CAAC;YACD,IAAI,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,CAAA;YACxD,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,uBAAuB,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;gBAChE,MAAM,SAAS,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAA;gBAC1C,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC5B,sBAAsB,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAA;gBAC7D,CAAC;YACH,CAAC;YACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAA;YACnE,CAAC;YAED,MAAM,eAAe,GAAG,CAAC,GAAG,YAAY,CAAC,CAAA;YACzC,MAAM,UAAU,GAAa,EAAE,CAAA;YAC/B,IAAI,iBAAiB,GAAmC,IAAI,CAAA;YAC5D,IAAI,sBAAsB,GAAG,CAAC,CAAA;YAC9B,IAAI,qBAAqB,GAAG,cAAc,CAAA;YAC1C,IAAI,SAAS,GAAG,CAAC,GAAG,YAAY,CAAC,CAAA;YACjC,IAAI,eAAe,GAAG,CAAC,GAAG,eAAe,CAAC,CAAA;YAC1C,IAAI,iBAAiB,GAAG,CAAC,CAAA;YACzB,IAAI,oBAAoB,GAAG,CAAC,CAAA;YAC5B,IAAI,SAAS,GAAG,CAAC,CAAA;YACjB,IAAI,OAAO,GAAG,CAAC,CAAA;YACf,IAAI,sBAAsB,GAAG,uBAAuB,CAAA;YACpD,MAAM,aAAa,GAAG,yBAAyB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YACzD,MAAM,mBAAmB,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,EAAE,CAAA;YACxE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,OAAO,KAAK,IAAI,CAAA;YAC7D,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,YAAY,CAAA;YAC1D,MAAM,cAAc,GAClB,OAAO,iBAAiB,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,iBAAiB,CAAC,IAAI,iBAAiB,GAAG,CAAC;gBACvG,CAAC,CAAC,iBAAiB;gBACnB,CAAC,CAAC,uBAAuB,CAAA;YAC7B,MAAM,oBAAoB,GACxB,OAAO,mBAAmB,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;YAC9G,MAAM,cAAc,GAAW,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,uBAAuB,CAAA;YAC/H,IAAI,kBAAkB,GAAG,KAAK,CAAA;YAC9B,MAAM,wBAAwB,GAAG,GAAS,EAAE;gBAC1C,IAAI,kBAAkB,EAAE,CAAC;oBACvB,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC,oBAAoB,EAAE,CAAA;gBAC3B,kBAAkB,GAAG,IAAI,CAAA;YAC3B,CAAC,CAAA;YAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5D,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;oBAC/D,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAE,CAAA;oBACzC,IAAI,sBAAsB,CAAC,SAAS,CAAC,KAAK,uBAAuB,EAAE,CAAC;wBAClE,SAAQ;oBACV,CAAC;oBACD,sBAAsB,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAA;oBAC3D,iBAAiB,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAA;oBACrD,sBAAsB,IAAI,CAAC,CAAA;gBAC7B,CAAC;gBACD,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAA;gBACtD,WAAW,CAAC,iBAAiB,GAAG,CAAC,CAAA;gBACjC,WAAW,CAAC,cAAc,GAAG,CAAC,CAAA;gBAC9B,WAAW,CAAC,gBAAgB,GAAG,CAAC,CAAA;gBAChC,WAAW,CAAC,eAAe,GAAG,CAAC,CAAA;gBAC/B,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,CAAA;gBACtD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;gBACtC,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,CAAA;gBACvD,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA;YAC/B,CAAC;YAED,MAAM,cAAc,GAAG,CAAC,UAAkB,EAAE,WAAoB,EAAE,SAAiB,EAAU,EAAE;gBAC7F,IAAI,UAAU,KAAK,CAAC,EAAE,CAAC;oBACrB,OAAO,CAAC,CAAA;gBACV,CAAC;gBACD,wBAAwB,EAAE,CAAA;gBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAA;gBACnH,sBAAsB,GAAG,CAAC,CAAA;gBAC1B,uBAAuB,GAAG,CAAC,CAAA;gBAC3B,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAA;gBAClC,uBAAuB,IAAI,CAAC,CAAA;gBAC5B,IAAI,uBAAuB,KAAK,WAAW,EAAE,CAAC;oBAC5C,uBAAuB,GAAG,CAAC,CAAA;oBAC3B,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBAChC,CAAC;gBACD,IAAI,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,CAAA;gBACxD,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;oBAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,2BAA2B,CAAC,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;gBAChH,CAAC;gBACD,MAAM,YAAY,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;gBACtD,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;gBACtC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;gBACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CACzG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,CAAC,CACtD,CAAA;gBACD,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAA;gBACtC,OAAO,UAAU,CAAA;YACnB,CAAC,CAAA;YAED,OAAO,qBAAqB,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,qBAAqB,EAAE,CAAA;gBAC5B,IAAI,OAAgC,CAAA;gBACpC,IAAI,YAAoB,CAAA;gBACxB,IAAI,eAAe,GAAG,CAAC,CAAA;gBACvB,IAAI,qBAAqB,EAAE,CAAC;oBAC1B,OAAO,GAAG,qBAAqB,CAAC,yBAAyB,CAAA;oBACzD,YAAY,GAAG,qBAAqB,CAAC,mBAAmB,CAAA;oBACxD,qBAAqB,GAAG,SAAS,CAAA;gBACnC,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,SAAS,CAAC,CAAA;oBAC7D,OAAO,GAAG,SAAS,CAAC,yBAAyB,CAAA;oBAC7C,YAAY,GAAG,SAAS,CAAC,mBAAmB,CAAA;oBAC5C,eAAe,GAAG,SAAS,CAAC,eAAe,CAAA;gBAC7C,CAAC;gBACD,iBAAiB,IAAI,YAAY,CAAA;gBACjC,oBAAoB,IAAI,eAAe,CAAA;gBACvC,IAAI,iBAAiB,KAAK,IAAI,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC1D,iBAAiB,GAAG,OAAO,CAAA;oBAC3B,sBAAsB,GAAG,YAAY,CAAA;gBACvC,CAAC;qBAAM,CAAC;oBACN,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;wBAC/B,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,sBAAsB,EAAE,YAAY,IAAI,CAAC,EAAE,CAAC;4BACpF,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;4BACjD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;gCAC5B,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;4BAC5B,CAAC;wBACH,CAAC;wBACD,iBAAiB,GAAG,IAAI,CAAA;wBACxB,sBAAsB,GAAG,CAAC,CAAA;oBAC5B,CAAC;oBACD,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,YAAY,EAAE,YAAY,IAAI,CAAC,EAAE,CAAC;wBAC1E,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAE,CAAC,CAAA;oBACzC,CAAC;gBACH,CAAC;gBAED,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;oBAC/D,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAE,CAAA;oBACzC,IAAI,sBAAsB,CAAC,SAAS,CAAC,KAAK,uBAAuB,EAAE,CAAC;wBAClE,SAAQ;oBACV,CAAC;oBACD,sBAAsB,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAA;oBAC3D,iBAAiB,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAA;oBACrD,sBAAsB,IAAI,CAAC,CAAA;gBAC7B,CAAC;gBAED,IAAI,cAAc,GAAG,CAAC,CAAA;gBACtB,IAAI,oBAAoB,GAAG,KAAK,CAAA;gBAChC,IAAI,kBAAkB,GAAG,CAAC,CAAA;gBAC1B,MAAM,iBAAiB,GAAa,EAAE,CAAA;gBACtC,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAU,CAAA;gBAC1C,MAAM,gBAAgB,GAAG,CAAC,kBAAqC,EAAQ,EAAE;oBACvE,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;wBACjF,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,UAAU,CAAE,CAAA;wBACxD,IAAI,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;4BAC3C,SAAQ;wBACV,CAAC;wBACD,gBAAgB,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAA;wBACtC,iBAAiB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;oBAC1C,CAAC;gBACH,CAAC,CAAA;gBACD,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAQ,EAAE;oBAClD,IAAI,sBAAsB,CAAC,SAAS,CAAC,KAAK,uBAAuB,EAAE,CAAC;wBAClE,OAAM;oBACR,CAAC;oBACD,sBAAsB,CAAC,SAAS,CAAC,GAAG,uBAAuB,CAAA;oBAC3D,iBAAiB,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAA;oBACrD,sBAAsB,IAAI,CAAC,CAAA;gBAC7B,CAAC,CAAA;gBACD,MAAM,sBAAsB,GAAG,CAAC,kBAAqC,EAAQ,EAAE;oBAC7E,gBAAgB,CAAC,kBAAkB,CAAC,CAAA;oBACpC,KAAK,IAAI,UAAU,GAAG,CAAC,EAAE,UAAU,GAAG,kBAAkB,CAAC,MAAM,EAAE,UAAU,IAAI,CAAC,EAAE,CAAC;wBACjF,eAAe,CAAC,kBAAkB,CAAC,UAAU,CAAE,CAAC,CAAA;oBAClD,CAAC;gBACH,CAAC,CAAA;gBACD,MAAM,qBAAqB,GAAG,GAAS,EAAE;oBACvC,SAAS,IAAI,cAAc,CAAC,cAAc,EAAE,oBAAoB,EAAE,kBAAkB,CAAC,CAAA;oBACrF,cAAc,GAAG,CAAC,CAAA;oBAClB,oBAAoB,GAAG,KAAK,CAAA;oBAC5B,kBAAkB,GAAG,CAAC,CAAA;gBACxB,CAAC,CAAA;gBACD,MAAM,eAAe,GAAG,CAAC,SAAiB,EAAa,EAAE,CACvD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;gBACzG,MAAM,wBAAwB,GAAG,CAAC,SAAiB,EAAW,EAAE;oBAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;oBACxE,MAAM,SAAS,GAAG,YAAY,GAAG,CAAC,CAAC,+DAA4C,CAAC,CAAA;oBAChF,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;wBAC/B,OAAO,KAAK,CAAA;oBACd,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,SAAS,CAAA;oBAC1D,OAAO,IAAI,CAAA;gBACb,CAAC,CAAA;gBACD,MAAM,kBAAkB,GAAG,CAAC,SAAiB,EAAW,EAAE;oBACxD,IAAI,KAAK,GAAG,KAAK,CAAA;oBACjB,IAAI,CAAC,4BAA4B,CAAC,SAAS,EAAE,CAAC,mBAAmB,EAAE,EAAE;wBACnE,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,4BAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;4BAC1G,KAAK,GAAG,IAAI,CAAA;wBACd,CAAC;oBACH,CAAC,CAAC,CAAA;oBACF,OAAO,KAAK,CAAA;gBACd,CAAC,CAAA;gBACD,MAAM,4BAA4B,GAAG,CAAC,SAAiB,EAAQ,EAAE;oBAC/D,MAAM,WAAW,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;oBAC9C,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;oBACpD,MAAM,YAAY,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAA;oBACxD,MAAM,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;oBAC7C,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,kBAAkB,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;wBAC7F,OAAM;oBACR,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAA;oBAC5D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAA;oBACrD,eAAe,CAAC,SAAS,CAAC,CAAA;oBAC1B,sBAAsB,CAAC,YAAY,CAAC,CAAA;gBACtC,CAAC,CAAA;gBACD,MAAM,oBAAoB,GAAG,CAAC,SAAiB,EAAQ,EAAE;oBACvD,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;oBAC/C,IAAI,YAAY,CAAC,GAAG,KAAK,QAAQ,CAAC,KAAK,IAAI,YAAY,CAAC,IAAI,KAAK,SAAS,CAAC,KAAK,EAAE,CAAC;wBACjF,OAAM;oBACR,CAAC;oBACD,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAA;oBACpD,wBAAwB,CAAC,SAAS,CAAC,CAAA;oBACnC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;oBAC/D,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,SAAS,CAAC,CAAA;oBACrD,eAAe,CAAC,SAAS,CAAC,CAAA;oBAC1B,sBAAsB,CAAC,YAAY,CAAC,CAAA;gBACtC,CAAC,CAAA;gBACD,MAAM,mBAAmB,GAAG,CAAC,WAAsB,EAAE,UAAqB,EAAU,EAAE;oBACpF,IAAI,WAAW,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAM,IAAI,UAAU,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAM,EAAE,CAAC;wBAC9E,IAAI,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;4BACnD,OAAO,CAAC,CAAA;wBACV,CAAC;wBACD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,CAAA;wBAC5D,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAA;oBAClE,CAAC;oBACD,OAAO,kBAAkB,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,iBAAiB,CAAA;gBACnF,CAAC,CAAA;gBACD,MAAM,wBAAwB,GAAG,CAAC,SAAiB,EAAE,OAAuB,EAAU,EAAE;oBACtF,wBAAwB,EAAE,CAAA;oBAC1B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC,QAAQ,CAAC,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAA;oBACnH,sBAAsB,GAAG,CAAC,CAAA;oBAC1B,uBAAuB,GAAG,CAAC,CAAA;oBAC3B,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAA;oBAClC,uBAAuB,IAAI,CAAC,CAAA;oBAC5B,IAAI,uBAAuB,KAAK,WAAW,EAAE,CAAC;wBAC5C,uBAAuB,GAAG,CAAC,CAAA;wBAC3B,sBAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;oBAChC,CAAC;oBACD,IAAI,CAAC,0BAA0B,CAAC,uBAAuB,CAAC,CAAA;oBACxD,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;wBAC9B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,aAAa,CAAC,SAAS,CAAC,CAAA;wBAChE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CACxC,2BAA2B,CAAC,aAAa,EAAE,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,CACxF,CAAA;oBACH,CAAC;oBACD,MAAM,YAAY,GAAG,WAAW,CAAC,EAAE,CAAC,SAAS,CAAC,CAAA;oBAC9C,IAAI,CAAC,qBAAqB,EAAE,CAAA;oBAC5B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;oBACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,gBAAgB,EAAE,EAAE,CAChH,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAC7D,CAAA;oBACD,IAAI,CAAC,qBAAqB,EAAE,CAAA;oBAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;oBACtE,MAAM,oBAAoB,GAAG,KAAK;wBAChC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE;4BAC/B,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,IAAI,EAAE,KAAK,CAAC,IAAI;4BAChB,MAAM,EAAE,KAAK,CAAC,MAAM;yBACrB,CAAC;wBACJ,CAAC,CAAC;4BACE,kBAAkB,EAAE,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC;4BACnD,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;yBAClG,CAAA;oBACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CACpC,SAAS,EACT,oBAAoB,CAAC,UAAU,EAC/B,oBAAoB,CAAC,UAAU,CAAC,GAAG,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAC/H,CAAA;oBACD,eAAe,CAAC,SAAS,CAAC,CAAA;oBAC1B,sBAAsB,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,CAAA;oBAC/D,OAAO,CAAC,CAAA;gBACV,CAAC,CAAA;gBAED,MAAM,mBAAmB,GAAG,CAC1B,SAAiB,EACjB,OAAuB,EACvB,OAIC,EACK,EAAE;oBACR,IAAI,OAAO,CAAC,wBAAwB,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,4BAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC1H,OAAO,IAAI,CAAC,CAAA;wBACZ,4BAA4B,CAAC,SAAS,CAAC,CAAA;wBACvC,OAAM;oBACR,CAAC;oBACD,IAAI,OAAO,CAAC,yBAAyB,IAAI,kBAAkB,CAAC,SAAS,CAAC,EAAE,CAAC;wBACvE,OAAO,IAAI,CAAC,CAAA;wBACZ,4BAA4B,CAAC,SAAS,CAAC,CAAA;wBACvC,OAAM;oBACR,CAAC;oBACD,IACE,OAAO,CAAC,YAAY,KAAK,SAAS;wBAClC,OAAO,CAAC,eAAe,KAAK,SAAS;wBACrC,OAAO,CAAC,YAAY,KAAK,SAAS;wBAClC,OAAO,CAAC,cAAc,KAAK,SAAS,EACpC,CAAC;wBACD,qBAAqB,EAAE,CAAA;wBACvB,IAAI,CAAC,qBAAqB,EAAE,CAAA;wBAC5B,MAAM,mBAAmB,GAAG,IAAI,CAAC,2BAA2B,CAAC,SAAS,CAAC,CAAA;wBACvE,IAAI,CAAC,qBAAqB,EAAE,CAAA;wBAC5B,IAAI,mBAAmB,KAAK,SAAS,EAAE,CAAC;4BACtC,IACE,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,YAAY;gCAClD,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,EAC7E,CAAC;gCACD,SAAS,IAAI,CAAC,CAAA;4BAChB,CAAC;iCAAM,IACL,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,YAAY;gCAClD,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,EAC7E,CAAC;gCACD,OAAO,IAAI,CAAC,CAAA;4BACd,CAAC;4BACD,sBAAsB,CAAC,mBAAmB,CAAC,CAAA;4BAC3C,eAAe,CAAC,SAAS,CAAC,CAAA;4BAC1B,OAAM;wBACR,CAAC;oBACH,CAAC;oBACD,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK,WAAW,CAAC,YAAY,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;wBACpG,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;4BACnC,qBAAqB,EAAE,CAAA;4BACvB,SAAS,IAAI,wBAAwB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;4BACzD,OAAM;wBACR,CAAC;wBACD,SAAS,CAAC,cAAc,CAAC,GAAG,SAAS,CAAA;wBACrC,cAAc,IAAI,CAAC,CAAA;wBACnB,oBAAoB,GAAG,oBAAoB,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAA;wBACxE,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAA;wBACpD,OAAM;oBACR,CAAC;oBACD,qBAAqB,EAAE,CAAA;oBACvB,OAAO,IAAI,CAAC,CAAA;oBACZ,IAAI,CAAC,qBAAqB,EAAE,CAAA;oBAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAA;oBAC/D,IAAI,CAAC,qBAAqB,EAAE,CAAA;oBAC5B,sBAAsB,CAAC,YAAY,CAAC,CAAA;oBACpC,eAAe,CAAC,SAAS,CAAC,CAAA;gBAC5B,CAAC,CAAA;gBACD,MAAM,iBAAiB,GAAG,CAAC,IAAyB,EAAQ,EAAE;oBAC5D,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,EAAE,CAAC;wBAC5F,oBAAoB,CAAC,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAE,CAAC,CAAA;oBAC9D,CAAC;oBACD,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAA;oBAC7F,KAAK,IAAI,cAAc,GAAG,CAAC,EAAE,cAAc,GAAG,cAAc,EAAE,cAAc,IAAI,CAAC,EAAE,CAAC;wBAClF,IAAI,CAAC,qBAAqB,EAAE,CAAA;wBAC5B,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,EAAE,CAAC;4BAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAE,CAAA;4BACxD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;4BAClD,IAAI,CAAC,OAAO,EAAE,CAAC;gCACb,SAAQ;4BACV,CAAC;4BACD,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE;gCACtC,yBAAyB,EAAE,KAAK;gCAChC,wBAAwB,EAAE,KAAK;gCAC/B,OAAO,EAAE,IAAI;6BACd,CAAC,CAAA;wBACJ,CAAC;wBAED,IAAI,SAAS,GAAG,IAAI,CAAA;wBACpB,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,EAAE,CAAC;4BAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAE,CAAA;4BACxD,MAAM,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAA;4BAC/C,IAAI,mBAAmB,CAAC,cAAc,CAAC,YAAY,CAAE,EAAE,YAAY,CAAC,GAAG,cAAc,EAAE,CAAC;gCACtF,SAAS,GAAG,KAAK,CAAA;4BACnB,CAAC;4BACD,cAAc,CAAC,YAAY,CAAC,GAAG,YAAY,CAAA;wBAC7C,CAAC;wBACD,IAAI,SAAS,EAAE,CAAC;4BACd,MAAK;wBACP,CAAC;oBACH,CAAC;gBACH,CAAC,CAAA;gBACD,MAAM,oBAAoB,GAAG,gBAAgB;oBAC3C,CAAC,CAAC,yBAAyB,CAAC;wBACxB,OAAO;wBACP,YAAY;wBACZ,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ;wBAC7B,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,aAAa;wBAC1D,4BAA4B,EAAE,IAAI,CAAC,4BAA4B;qBAChE,CAAC;oBACJ,CAAC,CAAC,SAAS,CAAA;gBAEb,IAAI,oBAAoB,EAAE,CAAC;oBACzB,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,oBAAoB,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;wBAChF,IAAI,CAAC,qBAAqB,EAAE,CAAA;wBAC5B,MAAM,IAAI,GAAG,oBAAoB,CAAC,SAAS,CAAE,CAAA;wBAC7C,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;4BAC1B,qBAAqB,EAAE,CAAA;4BACvB,iBAAiB,CAAC,IAAI,CAAC,CAAA;4BACvB,SAAQ;wBACV,CAAC;wBACD,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,EAAE,CAAC;4BAC5F,MAAM,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAE,CAAA;4BACxD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;4BAClD,IAAI,CAAC,OAAO,EAAE,CAAC;gCACb,SAAQ;4BACV,CAAC;4BACD,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE;gCACtC,yBAAyB,EAAE,KAAK;gCAChC,wBAAwB,EAAE,KAAK;gCAC/B,OAAO,EAAE,KAAK;6BACf,CAAC,CAAA;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,YAAY,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;wBACrD,IAAI,CAAC,qBAAqB,EAAE,CAAA;wBAC5B,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAE,CAAA;wBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;wBAClD,IAAI,CAAC,OAAO,EAAE,CAAC;4BACb,SAAQ;wBACV,CAAC;wBACD,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE;4BACtC,yBAAyB,EAAE,CAAC,gBAAgB;4BAC5C,wBAAwB,EAAE,CAAC,gBAAgB;4BAC3C,OAAO,EAAE,KAAK;yBACf,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;gBAED,qBAAqB,EAAE,CAAA;gBACvB,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,CAAA;gBACvD,uBAAuB,GAAG,sBAAsB,CAAA;gBAEhD,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACnC,MAAK;gBACP,CAAC;gBACD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;oBAC/B,KAAK,IAAI,YAAY,GAAG,CAAC,EAAE,YAAY,GAAG,sBAAsB,EAAE,YAAY,IAAI,CAAC,EAAE,CAAC;wBACpF,MAAM,SAAS,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAA;wBACjD,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;4BAC5B,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;wBAC5B,CAAC;oBACH,CAAC;oBACD,iBAAiB,GAAG,IAAI,CAAA;oBACxB,sBAAsB,GAAG,CAAC,CAAA;gBAC5B,CAAC;gBACD,eAAe,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAAC,CAAA;gBAC1C,SAAS,GAAG,iBAAiB,CAAA;gBAC7B,eAAe,GAAG,iBAAiB,CAAA;YACrC,CAAC;YAED,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAA;YACtD,WAAW,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;YACjD,WAAW,CAAC,cAAc,GAAG,OAAO,CAAA;YACpC,WAAW,CAAC,gBAAgB,GAAG,SAAS,CAAA;YACxC,WAAW,CAAC,eAAe,GAAG,oBAAoB,CAAA;YAClD,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,CAAA;YACtD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;YACtC,IAAI,CAAC,0BAA0B,CAAC,sBAAsB,CAAC,CAAA;YACvD,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;gBAC/B,OAAO,iBAAiB,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;oBAC5D,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE;oBACxB,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAChC,eAAe,EACf,eAAe,CAAC,iBAAiB,EAAE,sBAAsB,CAAC,EAC1D,sBAAsB,CACvB,CAAA;YACP,CAAC;YACD,OAAO,iBAAiB,KAAK,CAAC,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC;gBAC5D,CAAC,CAAC,IAAI,CAAC,eAAe,EAAE;gBACxB,CAAC,CAAC,IAAI,CAAC,6BAA6B,CAAC,eAAe,EAAE,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,UAAU,CAAC,MAAM,CAAC,CAAA;QAC1G,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,mBAAmB,EAAE,CAAA;QAC5B,CAAC;IACH,CAAC,CAAA;IAED,MAAM,WAAW,GAAG,CAAC,YAAqC,EAAE,kBAA2C,YAAY,EAAO,EAAE,CAC1H,mBAAmB,CAAC,YAAY,EAAE,eAAe,CAAC,CAAA;IAEpD,MAAM,qBAAqB,GAAG,CAC5B,YAAqC,EACrC,yBAAkD,EAClD,mBAA2B,EAC3B,kBAA2C,YAAY,EAClD,EAAE,CACP,mBAAmB,CAAC,YAAY,EAAE,eAAe,EAAE;QACjD,yBAAyB;QACzB,mBAAmB;KACpB,CAAC,CAAA;IAEJ,MAAM,qBAAqB,GAAG,CAAC,WAAgB,EAAE,cAAc,GAAG,KAAK,EAAO,EAAE;QAC9E,IAAI,SAAS,GAAG,WAAW,CAAA;QAC3B,IAAI,OAAO,GAAG,WAAW,CAAA;QACzB,IAAI,QAAQ,GAAG,cAAc,CAAA;QAE7B,KAAK,IAAI,SAAS,GAAG,CAAC,EAAE,SAAS,GAAG,CAAC,EAAE,SAAS,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;YAC3D,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC9B,MAAK;YACP,CAAC;YACD,SAAS,GAAG,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,YAAY,CAAC,CAAA;YAClG,OAAO,GAAG,WAAW,CAAC,YAAY,EAAE,YAAY,CAAC,CAAA;YACjD,SAAS,GAAG,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YACxF,QAAQ,GAAG,KAAK,CAAA;QAClB,CAAC;QAED,OAAO,SAAS,CAAA;IAClB,CAAC,CAAA;IAED,OAAO;QACL,qBAAqB,CAAC,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,eAAe,GAAG,YAAY;YAChH,OAAO,MAAM,CAAC,GAAG,CAAC;gBAChB,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,YAAY,EAAE,yBAAyB,EAAE,mBAAmB,EAAE,eAAe,CAAC;gBAC/G,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,iBAAiB,CAAC;oBACpB,OAAO,EAAE,sEAAsE;oBAC/E,KAAK;iBACN,CAAC;aACL,CAAC,CAAA;QACJ,CAAC;QACD,WAAW,CAAC,YAAY,EAAE,eAAe,GAAG,YAAY;YACtD,OAAO,MAAM,CAAC,GAAG,CAAC;gBAChB,GAAG,EAAE,GAAG,EAAE,CAAC,WAAW,CAAC,YAAY,EAAE,eAAe,CAAC;gBACrD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,iBAAiB,CAAC;oBACpB,OAAO,EAAE,sCAAsC;oBAC/C,KAAK;iBACN,CAAC;aACL,CAAC,CAAA;QACJ,CAAC;QACD,qBAAqB,CAAC,WAAW,EAAE,cAAc,GAAG,KAAK;YACvD,OAAO,MAAM,CAAC,GAAG,CAAC;gBAChB,GAAG,EAAE,GAAG,EAAE,CAAC,qBAAqB,CAAC,WAAW,EAAE,cAAc,CAAC;gBAC7D,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,iBAAiB,CAAC;oBACpB,OAAO,EAAE,mCAAmC;oBAC5C,KAAK;iBACN,CAAC;aACL,CAAC,CAAA;QACJ,CAAC;QACD,cAAc;YACZ,OAAO,MAAM,CAAC,GAAG,CAAC;gBAChB,GAAG,EAAE,GAAG,EAAE;oBACR,IAAI,CAAC,uBAAuB,EAAE,CAAA;oBAC9B,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,CAAC;wBACrC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,WAAW,GAAG,CAAC;qBACtE,CAAC,CAAA;oBACF,IAAI,mBAAmB,GAAG,CAAC,CAAA;oBAC3B,IAAI,oBAAoB,GAAG,CAAC,CAAA;oBAC5B,IAAI,sBAAsB,GAAG,IAAI,CAAA;oBACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE;wBACjD,mBAAmB,GAAG,IAAI,CAAC,kBAAkB,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAA;wBAC7E,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAA;wBAChF,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;4BACjH,sBAAsB,GAAG,KAAK,CAAA;wBAChC,CAAC;oBACH,CAAC,CAAC,CAAA;oBACF,MAAM,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC,CAAC,EAAE,mBAAmB,CAAC,CAAA;oBACvE,IAAI,gBAAqB,CAAA;oBACzB,IAAI,sBAAsB,EAAE,CAAC;wBAC3B,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,CAAA;wBACzD,gBAAgB,GAAG,qBAAqB,CACtC,aAAa,EACb,gBAAgB,CAAC,yBAAyB,EAC1C,gBAAgB,CAAC,mBAAmB,EACpC,IAAI,CAAC,eAAe,EAAE,CACvB,CAAA;oBACH,CAAC;yBAAM,CAAC;wBACN,gBAAgB,GAAG,WAAW,CAAC,aAAa,EAAE,IAAI,CAAC,eAAe,EAAE,CAAC,CAAA;oBACvE,CAAC;oBACD,MAAM,YAAY,GAAG,qBAAqB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAA;oBAClE,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;oBAC5E,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAA;oBACtD,WAAW,CAAC,OAAO,IAAI,CAAC,CAAA;oBACxB,WAAW,CAAC,iBAAiB,GAAG,mBAAmB,CAAA;oBACnD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;oBACtC,MAAM,KAAK,GAEP;wBACF,IAAI,EAAE,OAAO;wBACb,YAAY,EAAE,OAAO;wBACrB,kBAAkB,EAAE,OAAO;wBAC3B,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;wBAC/C,iBAAiB,EAAE,EAAE;wBACrB,eAAe,EAAE,EAAE;wBACnB,kBAAkB,EAAE,EAAE;wBACtB,OAAO,EAAE,WAAW;wBACpB,oBAAoB;qBACrB,CAAA;oBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAA;oBACzG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;wBAC5C,MAAM,OAAO,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAA;wBACtD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;4BAC5B,IAAI,EAAE,OAAO;4BACb,YAAY,EAAE,OAAO;4BACrB,kBAAkB,EAAE,OAAO;4BAC3B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC/B,iBAAiB,EAAE,EAAE;4BACrB,eAAe,EAAE,EAAE;4BACnB,kBAAkB,EAAE,EAAE;4BACtB,OAAO,EAAE,WAAW;4BACpB,oBAAoB;yBACrB,CAAC,CAAA;oBACJ,CAAC;oBACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC5B,CAAC;gBACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,iBAAiB,CAAC;oBACpB,OAAO,EAAE,oCAAoC;oBAC7C,KAAK;iBACN,CAAC;aACL,CAAC,CAAA;QACJ,CAAC;QACD,gBAAgB,CAAC,YAAY;YAC3B,OAAO,MAAM,CAAC,GAAG,CAAC;gBAChB,GAAG,EAAE,GAAG,EAAE;oBACR,IAAI,CAAC,uBAAuB,EAAE,CAAA;oBAC9B,IAAI,iBAAiB,GAAG,CAAC,CAAA;oBACzB,IAAI,oBAAoB,GAAG,CAAC,CAAA;oBAE5B,KAAK,MAAM,MAAM,IAAI,YAAY,EAAE,CAAC;wBAClC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;wBAC5D,IAAI,CAAC,KAAK,EAAE,CAAC;4BACX,SAAQ;wBACV,CAAC;wBAED,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;4BAC/D,KAAK,IAAI,GAAG,GAAG,MAAM,CAAC,QAAQ,EAAE,GAAG,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;gCAC/D,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;gCACzF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;oCAC5B,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAA;oCACvE,oBAAoB,GAAG,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAA;gCAClF,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;oBAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAA;oBACrF,MAAM,YAAY,GAAG,qBAAqB,CAAC,WAAW,CAAC,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,EAAE,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,KAAK,CAAC,CAAA;oBAClI,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,oBAAoB,CAAC,CAAA;oBAC5E,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,CAAA;oBACtD,WAAW,CAAC,OAAO,IAAI,CAAC,CAAA;oBACxB,WAAW,CAAC,iBAAiB,GAAG,iBAAiB,CAAA;oBACjD,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAA;oBACtC,MAAM,KAAK,GAEP;wBACF,IAAI,EAAE,OAAO;wBACb,YAAY,EAAE,OAAO;wBACrB,kBAAkB,EAAE,OAAO;wBAC3B,YAAY,EAAE,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC;wBAC/C,iBAAiB,EAAE,EAAE;wBACrB,eAAe,EAAE,EAAE;wBACnB,kBAAkB,EAAE,EAAE;wBACtB,OAAO,EAAE,WAAW;wBACpB,oBAAoB;qBACrB,CAAA;oBACD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,CAAA;oBACzG,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,mBAAmB,EAAE,EAAE,CAAC;wBAC5C,MAAM,OAAO,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAA;wBACtD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;4BAC5B,IAAI,EAAE,OAAO;4BACb,YAAY,EAAE,OAAO;4BACrB,kBAAkB,EAAE,OAAO;4BAC3B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;4BAC/B,iBAAiB,EAAE,EAAE;4BACrB,eAAe,EAAE,EAAE;4BACnB,kBAAkB,EAAE,EAAE;4BACtB,OAAO,EAAE,WAAW;4BACpB,oBAAoB;yBACrB,CAAC,CAAA;oBACJ,CAAC;oBACD,OAAO,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;gBAC5B,CAAC;gBACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,iBAAiB,CAAC;oBACpB,OAAO,EAAE,qCAAqC;oBAC9C,KAAK;iBACN,CAAC;aACL,CAAC,CAAA;QACJ,CAAC;QACD,uBAAuB;YACrB,OAAO,MAAM,CAAC,GAAG,CAAC;gBAChB,GAAG,EAAE,GAAG,EAAE;oBACR,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,EAAE,CAAA;oBAC9C,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;wBACtC,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,WAAW,CAAC,MAAM,CAAA;oBAC5C,CAAC,CAAC,CAAA;oBACF,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA;oBACvD,MAAM,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;oBAElE,IAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAA;oBACrC,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA;oBACzD,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAA;oBAEtE,MAAM,KAAK,GAAa,EAAE,CAAA;oBAC1B,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;oBACnG,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,GAAG,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;oBAEvG,KAAK,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;wBACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;wBAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;4BACd,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,wCAAwC,CAAC,CAAA;4BAC3D,SAAQ;wBACV,CAAC;wBACD,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;4BACpE,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,QAAQ,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;wBAClG,CAAC;oBACH,CAAC;oBAED,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;wBAClC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;4BACrB,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,wCAAwC,CAAC,CAAA;wBAC7D,CAAC;oBACH,CAAC;oBAED,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,CAAA;gBACpD,CAAC;gBACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,IAAI,iBAAiB,CAAC;oBACpB,OAAO,EAAE,0CAA0C;oBACnD,KAAK;iBACN,CAAC;aACL,CAAC,CAAA;QACJ,CAAC;QACD,4BAA4B,EAAE,qBAAqB;QACnD,kBAAkB,EAAE,WAAW;QAC/B,wBAAwB,EAAE,qBAAqB;KAChD,CAAA;AACH,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type CellValue, type WorkbookDefinedNameValueSnapshot } from '@bilig/protocol';
|
|
1
|
+
import { type CellValue, type WorkbookCalculationSettingsSnapshot, type WorkbookDefinedNameValueSnapshot } from '@bilig/protocol';
|
|
2
2
|
import { type FormulaNode, type ReferenceOperand } from '@bilig/formula';
|
|
3
3
|
import type { StringPool } from './string-pool.js';
|
|
4
4
|
export interface MetadataResolutionContext {
|
|
@@ -7,6 +7,8 @@ export interface MetadataResolutionContext {
|
|
|
7
7
|
resolveSpillReference: (sheetName: string | undefined, address: string) => FormulaNode | undefined;
|
|
8
8
|
}
|
|
9
9
|
export type MetadataFormulaValueContext = 'scalar' | 'array';
|
|
10
|
+
export declare function normalizeWorkbookCalculationSettings(settings: Partial<WorkbookCalculationSettingsSnapshot>, base?: WorkbookCalculationSettingsSnapshot): WorkbookCalculationSettingsSnapshot;
|
|
11
|
+
export declare function calculationSettingsEqual(left: WorkbookCalculationSettingsSnapshot, right: WorkbookCalculationSettingsSnapshot): boolean;
|
|
10
12
|
export declare function definedNameValuesEqual(left: WorkbookDefinedNameValueSnapshot, right: WorkbookDefinedNameValueSnapshot): boolean;
|
|
11
13
|
export declare function definedNameValueToCellValue(input: WorkbookDefinedNameValueSnapshot, stringPool: StringPool): CellValue;
|
|
12
14
|
export declare function definedNameValueToReferenceOperand(input: WorkbookDefinedNameValueSnapshot): ReferenceOperand | undefined;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ErrorCode } from '@bilig/protocol';
|
|
1
|
+
import { ErrorCode, } from '@bilig/protocol';
|
|
2
2
|
import { parseCellAddress, parseFormula, renameFormulaSheetReferences } from '@bilig/formula';
|
|
3
3
|
import { errorValue, literalToValue } from './engine-value-utils.js';
|
|
4
4
|
import { normalizeDefinedName, normalizeWorkbookObjectName } from './workbook-store.js';
|
|
@@ -193,6 +193,55 @@ function maybeImplicitIntersectRangeName(node, valueContext) {
|
|
|
193
193
|
args: [node],
|
|
194
194
|
};
|
|
195
195
|
}
|
|
196
|
+
function hasOwnCalculationSetting(settings, key) {
|
|
197
|
+
return Object.hasOwn(settings, key);
|
|
198
|
+
}
|
|
199
|
+
export function normalizeWorkbookCalculationSettings(settings, base) {
|
|
200
|
+
const normalized = {
|
|
201
|
+
mode: settings.mode ?? base?.mode ?? 'automatic',
|
|
202
|
+
compatibilityMode: settings.compatibilityMode ?? base?.compatibilityMode ?? 'excel-modern',
|
|
203
|
+
};
|
|
204
|
+
const dateSystem = hasOwnCalculationSetting(settings, 'dateSystem') ? settings.dateSystem : base?.dateSystem;
|
|
205
|
+
if (dateSystem !== undefined) {
|
|
206
|
+
normalized.dateSystem = dateSystem;
|
|
207
|
+
}
|
|
208
|
+
const iterate = hasOwnCalculationSetting(settings, 'iterate') ? settings.iterate : base?.iterate;
|
|
209
|
+
if (iterate !== undefined) {
|
|
210
|
+
normalized.iterate = iterate;
|
|
211
|
+
}
|
|
212
|
+
const iterateCount = hasOwnCalculationSetting(settings, 'iterateCount') ? settings.iterateCount : base?.iterateCount;
|
|
213
|
+
if (iterateCount !== undefined) {
|
|
214
|
+
normalized.iterateCount = iterateCount;
|
|
215
|
+
}
|
|
216
|
+
const iterateDelta = hasOwnCalculationSetting(settings, 'iterateDelta') ? settings.iterateDelta : base?.iterateDelta;
|
|
217
|
+
if (iterateDelta !== undefined) {
|
|
218
|
+
normalized.iterateDelta = iterateDelta;
|
|
219
|
+
}
|
|
220
|
+
const fullPrecision = hasOwnCalculationSetting(settings, 'fullPrecision') ? settings.fullPrecision : base?.fullPrecision;
|
|
221
|
+
if (fullPrecision !== undefined) {
|
|
222
|
+
normalized.fullPrecision = fullPrecision;
|
|
223
|
+
}
|
|
224
|
+
const fullCalcOnLoad = hasOwnCalculationSetting(settings, 'fullCalcOnLoad') ? settings.fullCalcOnLoad : base?.fullCalcOnLoad;
|
|
225
|
+
if (fullCalcOnLoad !== undefined) {
|
|
226
|
+
normalized.fullCalcOnLoad = fullCalcOnLoad;
|
|
227
|
+
}
|
|
228
|
+
const concurrentCalc = hasOwnCalculationSetting(settings, 'concurrentCalc') ? settings.concurrentCalc : base?.concurrentCalc;
|
|
229
|
+
if (concurrentCalc !== undefined) {
|
|
230
|
+
normalized.concurrentCalc = concurrentCalc;
|
|
231
|
+
}
|
|
232
|
+
return normalized;
|
|
233
|
+
}
|
|
234
|
+
export function calculationSettingsEqual(left, right) {
|
|
235
|
+
return (left.mode === right.mode &&
|
|
236
|
+
(left.compatibilityMode ?? 'excel-modern') === (right.compatibilityMode ?? 'excel-modern') &&
|
|
237
|
+
left.dateSystem === right.dateSystem &&
|
|
238
|
+
left.iterate === right.iterate &&
|
|
239
|
+
left.iterateCount === right.iterateCount &&
|
|
240
|
+
left.iterateDelta === right.iterateDelta &&
|
|
241
|
+
left.fullPrecision === right.fullPrecision &&
|
|
242
|
+
left.fullCalcOnLoad === right.fullCalcOnLoad &&
|
|
243
|
+
left.concurrentCalc === right.concurrentCalc);
|
|
244
|
+
}
|
|
196
245
|
export function definedNameValuesEqual(left, right) {
|
|
197
246
|
if (left === right) {
|
|
198
247
|
return true;
|