@microdelta/history 0.2.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/README.md +5 -4
  2. package/dist/api/history.alpha.d.ts +2 -2
  3. package/dist/api/history.root.raw.alpha.d.ts +50 -4
  4. package/dist/api/history.root.raw.beta.d.ts +6 -0
  5. package/dist/api/history.root.raw.public.d.ts +6 -0
  6. package/dist/api/history.root.raw.untrimmed.d.ts +50 -4
  7. package/dist/api/history.shared.alpha.d.ts +50 -4
  8. package/dist/api/history.shared.beta.d.ts +6 -0
  9. package/dist/api/history.shared.public.d.ts +6 -0
  10. package/dist/api/history.shared.untrimmed.d.ts +50 -4
  11. package/dist/api/history.untrimmed.d.ts +2 -2
  12. package/dist/src/durable/contracts.d.ts +4 -2
  13. package/dist/src/durable/contracts.d.ts.map +1 -1
  14. package/dist/src/durable/errors.d.ts +20 -4
  15. package/dist/src/durable/errors.d.ts.map +1 -1
  16. package/dist/src/durable/errors.js +13 -8
  17. package/dist/src/durable/errors.js.map +1 -1
  18. package/dist/src/durable/index.d.ts.map +1 -1
  19. package/dist/src/durable/index.js +80 -72
  20. package/dist/src/durable/index.js.map +1 -1
  21. package/dist/src/durable/schema.d.ts +13 -11
  22. package/dist/src/durable/schema.d.ts.map +1 -1
  23. package/dist/src/durable/schema.js +32 -23
  24. package/dist/src/durable/schema.js.map +1 -1
  25. package/dist/src/durable/selected-index.d.ts.map +1 -1
  26. package/dist/src/durable/selected-index.js +16 -4
  27. package/dist/src/durable/selected-index.js.map +1 -1
  28. package/dist/src/durable/sqlite-boundary.d.ts +11 -0
  29. package/dist/src/durable/sqlite-boundary.d.ts.map +1 -0
  30. package/dist/src/durable/sqlite-boundary.js +79 -0
  31. package/dist/src/durable/sqlite-boundary.js.map +1 -0
  32. package/dist/src/index.d.ts +2 -2
  33. package/dist/src/index.d.ts.map +1 -1
  34. package/dist/src/index.js +1 -1
  35. package/dist/src/index.js.map +1 -1
  36. package/package.json +3 -3
@@ -1,13 +1,18 @@
1
1
  /**
2
- * Distinct failure classes of the durable History authority. Diagnostics must
3
- * distinguish stale ownership, conflicting execution identity, invalid
4
- * lifecycle transitions, unsupported storage, journal compare-and-set
5
- * conflicts, undeclared journal record versions and integrity failures rather
6
- * than report a generic miss (execution.md, required validation fixtures).
7
- * None of these classes extends `TypeError`, so a reader never mistakes a
8
- * storage failure for Value's rejection of a selection's shape.
9
- * @packageDocumentation
2
+ * A History-owned SQLite operation exhausted Machine's bounded busy wait.
3
+ * The exact host failure is retained as `cause`, so callers can distinguish
4
+ * contention from corruption or a stale writer without losing host detail.
5
+ * History wraps only failures raised at its SQLite capability boundary, never
6
+ * an application callback that happened to throw a Machine busy error.
7
+ * @alpha
10
8
  */
9
+ export class HistoryBusyError extends Error {
10
+ /** Create History's boundary failure while retaining the original host error. */
11
+ constructor(message, cause) {
12
+ super(message, { cause });
13
+ this.name = 'HistoryBusyError';
14
+ }
15
+ }
11
16
  /**
12
17
  * The store's contents contradict History's invariants or the caller's exact
13
18
  * reference: a malformed, missing or wrong-scope reference, a dangling
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/durable/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,6DAA6D;IAC7D,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,2DAA2D;IAC3D,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,oEAAoE;IACpE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,uEAAuE;IACvE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,wEAAwE;IACxE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,wDAAwD;IACxD,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,oEAAoE;IACpE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,sEAAsE;IACtE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/durable/errors.ts"],"names":[],"mappings":"AAaA;;;;;;;GAOG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAIzC,iFAAiF;IACjF,YAAmB,OAAe,EAAE,KAAsB;QACxD,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,6DAA6D;IAC7D,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,2DAA2D;IAC3D,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IACzC,oEAAoE;IACpE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;IACjC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,uEAAuE;IACvE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,wEAAwE;IACxE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;GAIG;AACH,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,wDAAwD;IACxD,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;IAClC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,oBAAqB,SAAQ,KAAK;IAC7C,oEAAoE;IACpE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,sBAAsB,CAAC;IACrC,CAAC;CACF;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAC5C,sEAAsE;IACtE,YAAmB,OAAe;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/durable/index.ts"],"names":[],"mappings":"AAyCA,OAAO,KAAK,EAQV,eAAe,EACf,sBAAsB,EAiBvB,MAAM,gBAAgB,CAAC;AAyDxB;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAguBnF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/durable/index.ts"],"names":[],"mappings":"AAwCA,OAAO,KAAK,EAQV,eAAe,EACf,sBAAsB,EAiBvB,MAAM,gBAAgB,CAAC;AA2DxB;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,sBAAsB,GAAG,eAAe,CAwwBnF"}
@@ -1,46 +1,10 @@
1
- /**
2
- * History's durable SQLite authority: the single consistency owner for
3
- * attempts, the single logical writer, atomic publication, current pointers,
4
- * immutable completed results, separate acceptance records, recorded
5
- * promotions and Run Supervision's operation journal (PUB-001–004,
6
- * RES-002–007, ARC-007, RUN-011/012/017). It owns every SQL statement and
7
- * lifecycle decision over injected Machine capabilities; Node access stays in
8
- * the host adapter.
9
- *
10
- * Every record lives in one environment namespace of one analysis. A result
11
- * is admissible in the environment that published it and, only through a
12
- * recorded promotion, in another environment of the same analysis: there it
13
- * may be a candidate, a dependency or an acceptance target, while keeping its
14
- * own exact reference, and nothing else crosses environments.
15
- *
16
- * Transition and recovery outcomes (each row is one IMMEDIATE transaction):
17
- *
18
- * | Transition | Durable change | Death before commit | Death after commit |
19
- * | --- | --- | --- | --- |
20
- * | acquire | new holder, fence + 1, expiry | no change | lease held until expiry |
21
- * | renew | later expiry; fence unchanged | lease unchanged | lease extended |
22
- * | release | no holder; fence unchanged | lease held until expiry | next grant needs no expiry |
23
- * | allocate | attempt counter + 1, `allocated` attempt with key and intent | identity never issued | identity consumed, no result |
24
- * | stage | `staged` content and dependencies | attempt stays `allocated` | candidate evidence only, never a result |
25
- * | publish | result, index, provenance, `completed`, current pointer | attempt stays `staged` | complete result; recover by key |
26
- * | abandon | `failed`/`interrupted` with evidence | attempt unchanged | attempt ended without result |
27
- * | accept | acceptance record in the accepting environment naming an existing result | no change | record retained; result untouched |
28
- * | promote | promotion record naming exact results for a target environment | no change, identity never issued | results admitted there; nothing else changes |
29
- * | journal commit | one immutable revision per write (see `journal.ts`) | no revision, no sequence issued | every revision durable |
30
- *
31
- * It decides no reuse eligibility or freshness and interprets no provenance,
32
- * promotion evidence or journal record.
33
- * This is single-file process-termination scope, not a concurrency, power-loss
34
- * or distributed-time guarantee.
35
- * @packageDocumentation
36
- */
37
- import { SqliteBusyError } from '@microdelta/machine';
38
1
  import { decodeSnapshot, encodeSnapshot } from '@microdelta/value';
39
- import { AttemptConflictError, AttemptStateError, HistoryClockError, HistoryIntegrityError, StaleWriterError, } from './errors.js';
2
+ import { AttemptConflictError, AttemptStateError, HistoryClockError, HistoryBusyError, HistoryIntegrityError, StaleWriterError, } from './errors.js';
40
3
  import { parseReference, referenceFor } from './locator.js';
41
4
  import { createJournalStore } from './journal.js';
42
5
  import { historyScope, integer, loadRecord, requireName, requireNonnegative, requirePositive, safeSum, storeRecord, text } from './records.js';
43
6
  import { initializeSchema } from './schema.js';
7
+ import { isHistorySqliteBoundaryBusy, openHistorySqlite } from './sqlite-boundary.js';
44
8
  import { buildIndex, createSelectedIndex, indexVersion } from './selected-index.js';
45
9
  /** Identity tag for embedded SQL; the text is passed through unchanged. */
46
10
  const sql = String.raw;
@@ -79,15 +43,22 @@ function attemptState(row) {
79
43
  export function openDurableHistory(options) {
80
44
  const logicalStore = requireName(options.logicalStore, 'logicalStore');
81
45
  const clock = options.clock;
82
- const connection = options.sqlite.openSqlite(options.location);
83
- try {
84
- initializeSchema(connection, logicalStore);
85
- }
86
- catch (error) {
87
- connection.close();
88
- throw error;
46
+ const connection = openHistorySqlite(options.sqlite, options.location);
47
+ /** Close a partly opened History handle without hiding the original opening failure. */
48
+ function duringOpening(operation) {
49
+ try {
50
+ return operation();
51
+ }
52
+ catch (error) {
53
+ try {
54
+ connection.close();
55
+ }
56
+ catch { /* The opening failure is the diagnostic owed to the caller. */ }
57
+ throw error;
58
+ }
89
59
  }
90
- const statements = {
60
+ duringOpening(() => initializeSchema(connection, logicalStore));
61
+ const statements = duringOpening(() => ({
91
62
  writer: connection.prepare(sql `/* writer */ SELECT last_fence, holder, expires_at, time_high_water FROM history_writer WHERE singleton = 1`),
92
63
  observeTime: connection.prepare(sql `/* writer */ UPDATE history_writer SET time_high_water = ? WHERE singleton = 1`),
93
64
  // Only a grant writes the fence. Renewal and release leave last_fence as
@@ -126,13 +97,23 @@ export function openDurableHistory(options) {
126
97
  FROM history_results r LEFT JOIN history_attempts a ON a.attempt_id = r.result_id WHERE r.result_id = ?`),
127
98
  envelope: connection.prepare(sql `/* envelope */ SELECT result_id, analysis, environment, subject, version, publication, encoding, index_version,
128
99
  provenance_format, provenance_version, provenance FROM history_results WHERE result_id = ?`),
129
- // Results admissible in the subject's environment: published there, or named by a promotion into it.
130
- candidates: connection.prepare(sql `/* candidates */ SELECT result_id, analysis, environment, subject, version, publication, encoding, index_version,
131
- provenance_format, provenance_version, provenance FROM history_results r
132
- WHERE r.analysis = ? AND r.subject = ? AND r.version = ?
133
- AND (r.environment = ? OR EXISTS (SELECT 1 FROM history_promotion_results pr JOIN history_promotions p ON p.promotion_id = pr.promotion_id
134
- WHERE pr.result_id = r.result_id AND p.analysis = r.analysis AND p.environment = ?))
135
- ORDER BY publication DESC`),
100
+ // The local arm seeks the complete subject index. The promotion arm must
101
+ // visit target promotions before their results: its CROSS JOIN order avoids
102
+ // an analysis-wide result scan when no promotion exists. UNION removes a
103
+ // result admitted twice while retaining every distinct eligible result.
104
+ candidates: connection.prepare(sql `/* candidates */ WITH requested(analysis, environment, subject, version) AS (VALUES (?, ?, ?, ?))
105
+ SELECT * FROM (
106
+ SELECT r.result_id, r.analysis, r.environment, r.subject, r.version, r.publication, r.encoding, r.index_version,
107
+ r.provenance_format, r.provenance_version, r.provenance FROM requested s JOIN history_results r
108
+ ON r.analysis = s.analysis AND r.environment = s.environment AND r.subject = s.subject AND r.version = s.version
109
+ UNION
110
+ SELECT r.result_id, r.analysis, r.environment, r.subject, r.version, r.publication, r.encoding, r.index_version,
111
+ r.provenance_format, r.provenance_version, r.provenance FROM requested s CROSS JOIN history_promotions p
112
+ CROSS JOIN history_promotion_results pr CROSS JOIN history_results r
113
+ WHERE p.analysis = s.analysis AND p.environment = s.environment
114
+ AND pr.promotion_id = p.promotion_id AND r.result_id = pr.result_id
115
+ AND r.analysis = s.analysis AND r.subject = s.subject AND r.version = s.version
116
+ ) ORDER BY publication DESC`),
136
117
  dependencies: connection.prepare(sql `/* envelope */ SELECT d.position, d.dependency_id, r.result_id AS present, r.analysis, r.environment
137
118
  FROM history_dependencies d LEFT JOIN history_results r ON r.result_id = d.dependency_id WHERE d.attempt_id = ? ORDER BY d.position`),
138
119
  current: connection.prepare(sql `/* current */ SELECT c.result_id, r.result_id AS present
@@ -141,6 +122,10 @@ export function openDurableHistory(options) {
141
122
  insertAcceptance: connection.prepare(sql `/* accept */ INSERT INTO history_acceptances (acceptance_id, result_id, environment, fence, evidence_format, evidence_version, evidence)
142
123
  VALUES (?, ?, ?, ?, ?, ?, ?)`),
143
124
  insertAcceptanceDependency: connection.prepare(sql `/* accept */ INSERT INTO history_acceptance_dependencies (acceptance_id, position, dependency_id) VALUES (?, ?, ?)`),
125
+ // An insertion is acknowledged by its exact identity within the intended result and environment, never by a history scan or newest-row guess.
126
+ acceptanceById: connection.prepare(sql `/* acceptance */ SELECT acceptance_id, result_id, environment, fence, evidence_format, evidence_version, evidence FROM history_acceptances
127
+ WHERE acceptance_id = ? AND result_id = ? AND environment = ?`),
128
+ // Explicit historical inspection remains complete and ordered, independently of the acknowledgement hot path.
144
129
  acceptances: connection.prepare(sql `/* acceptance */ SELECT acceptance_id, environment, fence, evidence_format, evidence_version, evidence FROM history_acceptances
145
130
  WHERE result_id = ? AND environment = ? ORDER BY acceptance_id`),
146
131
  acceptanceDependencies: connection.prepare(sql `/* acceptance */ SELECT d.position, d.dependency_id, r.result_id AS present, r.analysis, r.environment
@@ -157,7 +142,7 @@ export function openDurableHistory(options) {
157
142
  ORDER BY p.promotion_id`),
158
143
  promotionResults: connection.prepare(sql `/* promotion */ SELECT pr.position, pr.result_id, r.result_id AS present, r.analysis, r.environment
159
144
  FROM history_promotion_results pr LEFT JOIN history_results r ON r.result_id = pr.result_id WHERE pr.promotion_id = ? ORDER BY pr.position`),
160
- };
145
+ }));
161
146
  /**
162
147
  * Resolve an exact reference to a completed result of this store: the
163
148
  * locator grammar, logical store, analysis, environment, existence,
@@ -187,7 +172,7 @@ export function openDurableHistory(options) {
187
172
  }
188
173
  return { resultId: parts.resultId, scope: { analysis: parts.analysis, environment: parts.environment } };
189
174
  }
190
- const index = createSelectedIndex(connection, options.sha256, (reference) => resolveResult(reference).resultId);
175
+ const index = duringOpening(() => createSelectedIndex(connection, options.sha256, (reference) => resolveResult(reference).resultId));
191
176
  /** Issue the exact reference for a stored result row. */
192
177
  function referenceOf(resultId, scope) {
193
178
  return referenceFor({ logicalStore, analysis: scope.analysis, environment: scope.environment, resultId });
@@ -242,8 +227,8 @@ export function openDurableHistory(options) {
242
227
  * of a valid host reading and the persisted high-water, which is then
243
228
  * persisted. A host failure or invalid reading aborts the transaction.
244
229
  */
245
- function observeTime(writer) {
246
- const reading = clock.currentEpochMilliseconds();
230
+ function observeTime(writer, readClock = () => clock.currentEpochMilliseconds()) {
231
+ const reading = readClock();
247
232
  if (!Number.isSafeInteger(reading) || reading < 0) {
248
233
  throw new HistoryClockError(`Clock reading ${String(reading)} is not a nonnegative safe integer of epoch milliseconds`);
249
234
  }
@@ -267,7 +252,7 @@ export function openDurableHistory(options) {
267
252
  writer = recorded.holder === null ? undefined : Object.freeze({ holder: recorded.holder, fence: recorded.lastFence, expiresAt: recorded.expiresAt });
268
253
  }
269
254
  catch (error) {
270
- if (!(error instanceof SqliteBusyError)) {
255
+ if (!isHistorySqliteBoundaryBusy(error)) {
271
256
  throw error;
272
257
  }
273
258
  }
@@ -275,15 +260,28 @@ export function openDurableHistory(options) {
275
260
  }
276
261
  /**
277
262
  * Run a lease operation that a waiter repeats, reporting SQLite contention
278
- * as History's typed outcome. Only the host's busy failure qualifies, and it
279
- * guarantees the transaction changed nothing; every other failure is thrown.
263
+ * as History's typed outcome. A clock callback's exact exception remains a
264
+ * callback failure even if it contains a busy error from this or another
265
+ * History handle; only boundary errors outside that callback qualify.
280
266
  */
281
267
  function orContended(operation) {
268
+ let callbackFailed = false;
269
+ let callbackError;
270
+ const readClock = () => {
271
+ try {
272
+ return clock.currentEpochMilliseconds();
273
+ }
274
+ catch (error) {
275
+ callbackFailed = true;
276
+ callbackError = error;
277
+ throw error;
278
+ }
279
+ };
282
280
  try {
283
- return operation();
281
+ return operation(readClock);
284
282
  }
285
283
  catch (error) {
286
- if (!(error instanceof SqliteBusyError)) {
284
+ if ((callbackFailed && error === callbackError) || !isHistorySqliteBoundaryBusy(error)) {
287
285
  throw error;
288
286
  }
289
287
  return contention(error);
@@ -295,13 +293,13 @@ export function openDurableHistory(options) {
295
293
  * `operation` runs. A stale lease commits only the time observation and then
296
294
  * fails with {@link StaleWriterError}; any other failure rolls everything back.
297
295
  */
298
- function asHolder(presented, operation) {
296
+ function asHolder(presented, operation, readClock = () => clock.currentEpochMilliseconds()) {
299
297
  const lease = leaseArgument(presented);
300
298
  let outcome;
301
299
  let stale;
302
300
  connection.transaction(() => {
303
301
  const writer = readWriter();
304
- const now = observeTime(writer);
302
+ const now = observeTime(writer, readClock);
305
303
  if (writer.holder !== lease.holder || writer.lastFence !== lease.fence) {
306
304
  stale = `Writer lease ${lease.holder}/${String(lease.fence)} is not the current holder`;
307
305
  }
@@ -319,7 +317,7 @@ export function openDurableHistory(options) {
319
317
  return outcome.value;
320
318
  }
321
319
  /** Run Supervision's journal ports share this connection and writer check. */
322
- const journals = createJournalStore(connection, asHolder);
320
+ const journals = duringOpening(() => createJournalStore(connection, asHolder));
323
321
  /** Read one attempt row by identity inside the caller's transaction. */
324
322
  function requireAttemptRow(attemptId) {
325
323
  const row = statements.attemptById.get(attemptId);
@@ -521,9 +519,9 @@ export function openDurableHistory(options) {
521
519
  const holder = requireName(request.holder, 'holder');
522
520
  const leaseMilliseconds = requirePositive(request.leaseMilliseconds, 'leaseMilliseconds');
523
521
  let acquisition;
524
- const busy = orContended(() => connection.transaction(() => {
522
+ const busy = orContended((readClock) => connection.transaction(() => {
525
523
  const writer = readWriter();
526
- const now = observeTime(writer);
524
+ const now = observeTime(writer, readClock);
527
525
  if (writer.holder !== null && writer.expiresAt > now) {
528
526
  acquisition = Object.freeze({ kind: 'held', holder: writer.holder, expiresAt: writer.expiresAt });
529
527
  return undefined;
@@ -544,11 +542,13 @@ export function openDurableHistory(options) {
544
542
  },
545
543
  renewWriter(lease, leaseMilliseconds) {
546
544
  const duration = requirePositive(leaseMilliseconds, 'leaseMilliseconds');
547
- return orContended(() => asHolder(lease, (now) => {
545
+ // Read caller-owned lease properties before classifying storage contention.
546
+ const presented = leaseArgument(lease);
547
+ return orContended((readClock) => asHolder(presented, (now) => {
548
548
  const expiresAt = safeSum(now, duration, 'lease expiry');
549
549
  statements.extendHolder.run(expiresAt);
550
- return Object.freeze({ kind: 'renewed', lease: Object.freeze({ holder: lease.holder, fence: lease.fence, expiresAt }) });
551
- }));
550
+ return Object.freeze({ kind: 'renewed', lease: Object.freeze({ holder: presented.holder, fence: presented.fence, expiresAt }) });
551
+ }, readClock));
552
552
  },
553
553
  releaseWriter(lease) {
554
554
  asHolder(lease, (now) => {
@@ -657,7 +657,7 @@ export function openDurableHistory(options) {
657
657
  },
658
658
  findCandidates(presented) {
659
659
  const subject = versionedSubject(presented);
660
- return Object.freeze(statements.candidates.all(subject.analysis, subject.subject, subject.version, subject.environment, subject.environment).map(envelopeOf));
660
+ return Object.freeze(statements.candidates.all(subject.analysis, subject.environment, subject.subject, subject.version).map(envelopeOf));
661
661
  },
662
662
  readCurrent(presented) {
663
663
  const subject = scopedSubject(presented);
@@ -700,10 +700,18 @@ export function openDurableHistory(options) {
700
700
  dependencies.forEach((dependencyId, position) => {
701
701
  statements.insertAcceptanceDependency.run(acceptanceId, position, dependencyId);
702
702
  });
703
- const row = statements.acceptances.all(resultId, scope.environment).find((candidate) => candidate.acceptance_id === acceptanceId);
703
+ const row = statements.acceptanceById.get(acceptanceId, resultId, scope.environment);
704
704
  if (row === undefined) {
705
705
  throw new HistoryIntegrityError('Recorded acceptance is not readable');
706
706
  }
707
+ // The returned row must attest to this transaction's inserted identity, scope, fence, and evidence;
708
+ // a stale or mis-scoped row is not a successful acceptance even if the backend returned one row.
709
+ if (integer(row, 'acceptance_id') !== acceptanceId || integer(row, 'result_id') !== resultId
710
+ || text(row, 'environment') !== scope.environment || integer(row, 'fence') !== lease.fence
711
+ || text(row, 'evidence_format') !== evidence.format || integer(row, 'evidence_version') !== evidence.formatVersion
712
+ || text(row, 'evidence') !== evidence.content) {
713
+ throw new HistoryIntegrityError('Recorded acceptance readback does not match the inserted record');
714
+ }
707
715
  return acceptanceOf(row, referenceOf(resultId, published), scope);
708
716
  });
709
717
  },
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/durable/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/durable/index.ts"],"names":[],"mappings":"AAqCA,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AA8BnE,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,eAAe,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC;AAC/I,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACtF,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAEpF,2EAA2E;AAC3E,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;AAEvB,sEAAsE;AACtE,MAAM,eAAe,GAAG,MAAM,CAAC;AAU/B,mDAAmD;AACnD,SAAS,aAAa,CAAC,KAAqB;IAC1C,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,WAAW,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,EAAE,OAAO,EAAE,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;AAC3K,CAAC;AAED,sDAAsD;AACtD,SAAS,gBAAgB,CAAC,KAAwB;IAChD,OAAO,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;AACzF,CAAC;AAED,4CAA4C;AAC5C,SAAS,cAAc,CAAC,KAAsB;IAC5C,OAAO,EAAE,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,YAAY,CAAC,EAAE,YAAY,EAAE,WAAW,CAAC,KAAK,CAAC,YAAY,EAAE,cAAc,CAAC,EAAE,CAAC;AAChK,CAAC;AAED,2FAA2F;AAC3F,SAAS,aAAa,CAAC,KAAmB;IACxC,OAAO,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,KAAK,EAAE,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,kBAAkB,CAAC,KAAK,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC;AACnL,CAAC;AAED,qCAAqC;AACrC,SAAS,YAAY,CAAC,GAAe;IACnC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;QAC1H,MAAM,IAAI,qBAAqB,CAAC,oCAAoC,KAAK,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAA+B;IAChE,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACvE,MAAM,KAAK,GAAqB,OAAO,CAAC,KAAK,CAAC;IAC9C,MAAM,UAAU,GAAsB,iBAAiB,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC1F,wFAAwF;IACxF,SAAS,aAAa,CAAI,SAAkB;QAC1C,IAAI,CAAC;YACH,OAAO,SAAS,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC;gBAAC,UAAU,CAAC,KAAK,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,+DAA+D,CAAC,CAAC;YACrG,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,aAAa,CAAC,GAAG,EAAE,CAAC,gBAAgB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC,CAAC;IAEhE,MAAM,UAAU,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QACtC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,6GAA6G,CAAC;QAC5I,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,gFAAgF,CAAC;QACpH,yEAAyE;QACzE,0EAA0E;QAC1E,yEAAyE;QACzE,yEAAyE;QACzE,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,uGAAuG,CAAC;QACzI,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,2EAA2E,CAAC;QAChH,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,0FAA0F,CAAC;QAC9H,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,kIAAkI,CAAC;QACpK,kBAAkB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,kFAAkF,CAAC;QAC7H,sBAAsB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,qFAAqF,CAAC;QACpI,qBAAqB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,mFAAmF,CAAC;QACjI,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,mFAAmF,CAAC;QAChI,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,yHAAyH,CAAC;QAC9J,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,mEAAmE,CAAC;QACvG,aAAa,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;;mDAEU,CAAC;QAChD,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;;mDAEW,CAAC;QAChD,gBAAgB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,qGAAqG,CAAC;QAC9I,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;;qDAEa,CAAC;QAClD,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;;gDAEK,CAAC;QAC7C,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;gGAC0D,CAAC;QAC7F,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;;gEAEsB,CAAC;QAC7D,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;8GACyE,CAAC;QAC3G,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;iGAC6D,CAAC;QAC9F,yEAAyE;QACzE,4EAA4E;QAC5E,yEAAyE;QACzE,wEAAwE;QACxE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;;;;;;;;;;;;kCAYJ,CAAC;QAC/B,YAAY,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;0IACkG,CAAC;QACvI,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;;mEAEgC,CAAC;QAChE,gBAAgB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;mCACT,CAAC;QAChC,0BAA0B,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,oHAAoH,CAAC;QACvK,8IAA8I;QAC9I,cAAc,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;oEAC0B,CAAC;QACjE,8GAA8G;QAC9G,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;qEAC8B,CAAC;QAClE,sBAAsB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;wJACsG,CAAC;QACrJ,QAAQ,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;8EAC0C,CAAC;QAC3E,eAAe,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;mCACR,CAAC;QAChC,qBAAqB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,0GAA0G,CAAC;QACxJ,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,yEAAyE,CAAC;QAC3G,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA,+GAA+G,CAAC;QAClJ,gBAAgB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;;8BAEd,CAAC;QAC3B,gBAAgB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAA;iJACqG,CAAC;KAC/I,CAAC,CAAC,CAAC;IAEJ;;;;;OAKG;IACH,SAAS,aAAa,CAAC,SAAoC,EAAE,aAA6B;QACxF,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;QACxC,IAAI,KAAK,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YACxC,MAAM,IAAI,qBAAqB,CAAC,iEAAiE,CAAC,CAAC;QACrG,CAAC;QACD,IAAI,aAAa,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,aAAa,CAAC,QAAQ,IAAI,KAAK,CAAC,WAAW,KAAK,aAAa,CAAC,WAAW,CAAC,EAAE,CAAC;YAClI,MAAM,IAAI,qBAAqB,CAAC,2EAA2E,CAAC,CAAC;QAC/G,CAAC;QACD,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACrD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,qBAAqB,CAAC,kCAAkC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YAC7E,MAAM,IAAI,qBAAqB,CAAC,mEAAmE,CAAC,CAAC;QACvG,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,KAAK,eAAe,IAAI,GAAG,CAAC,aAAa,KAAK,YAAY,EAAE,CAAC;YAC3E,MAAM,IAAI,qBAAqB,CAAC,2CAA2C,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,MAAM,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;QACnJ,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;YAC9B,MAAM,IAAI,qBAAqB,CAAC,oDAAoD,CAAC,CAAC;QACxF,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;IAC3G,CAAC;IAED,MAAM,KAAK,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,mBAAmB,CAAC,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErI,yDAAyD;IACzD,SAAS,WAAW,CAAC,QAAgB,EAAE,KAAoB;QACzD,OAAO,YAAY,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,yFAAyF;IACzF,SAAS,cAAc,CAAC,QAAgB,EAAE,KAAoB;QAC5D,OAAO,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,KAAK,SAAS,CAAC;IAC5F,CAAC;IAED;;;;;OAKG;IACH,SAAS,iBAAiB,CAAC,SAAoC,EAAE,KAAoB;QACnF,MAAM,QAAQ,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC;QACjC,IAAI,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC;YACxI,MAAM,IAAI,qBAAqB,CAC7B,oBAAoB,SAAS,CAAC,OAAO,qCAAqC,KAAK,CAAC,WAAW,gBAAgB,KAAK,CAAC,QAAQ,8DAA8D,CACxL,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED;;;;OAIG;IACH,SAAS,eAAe,CAAC,SAAoC,EAAE,QAAgB,EAAE,SAAwB,EAAE,WAAmB;QAC5H,IAAI,WAAW,KAAK,SAAS,CAAC,WAAW,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;QAC5D,IAAI,CAAC,cAAc,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,qBAAqB,CAC7B,oBAAoB,SAAS,CAAC,OAAO,qCAAqC,WAAW,gBAAgB,SAAS,CAAC,QAAQ,8DAA8D,CACtL,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qCAAqC;IACrC,SAAS,UAAU;QACjB,MAAM,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACpC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,qBAAqB,CAAC,+BAA+B,CAAC,CAAC;QACnE,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QAC1B,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YAClD,MAAM,IAAI,qBAAqB,CAAC,mCAAmC,CAAC,CAAC;QACvE,CAAC;QACD,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC,EAAE,CAAC;IAClK,CAAC;IAED;;;;OAIG;IACH,SAAS,WAAW,CAAC,MAAkB,EAAE,YAA0B,GAAG,EAAE,CAAC,KAAK,CAAC,wBAAwB,EAAE;QACvG,MAAM,OAAO,GAAG,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;YAClD,MAAM,IAAI,iBAAiB,CAAC,iBAAiB,MAAM,CAAC,OAAO,CAAC,0DAA0D,CAAC,CAAC;QAC1H,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,GAAG,KAAK,MAAM,CAAC,aAAa,EAAE,CAAC;YACjC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED;;;;;;OAMG;IACH,SAAS,UAAU,CAAC,IAAsB;QACxC,IAAI,MAAgC,CAAC;QACrC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAC;YAC9B,MAAM,GAAG,QAAQ,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,KAAK,EAAE,QAAQ,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC;QACvJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;gBACxC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED;;;;;OAKG;IACH,SAAS,WAAW,CAAI,SAAyC;QAC/D,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,aAAsB,CAAC;QAC3B,MAAM,SAAS,GAAG,GAAW,EAAE;YAC7B,IAAI,CAAC;gBACH,OAAO,KAAK,CAAC,wBAAwB,EAAE,CAAC;YAC1C,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,cAAc,GAAG,IAAI,CAAC;gBACtB,aAAa,GAAG,KAAK,CAAC;gBACtB,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC;YACH,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,IAAI,CAAC,cAAc,IAAI,KAAK,KAAK,aAAa,CAAC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvF,MAAM,KAAK,CAAC;YACd,CAAC;YACD,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,SAAS,QAAQ,CAAI,SAAuB,EAAE,SAA6B,EAAE,YAA0B,GAAG,EAAE,CAAC,KAAK,CAAC,wBAAwB,EAAE;QAC3I,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;QACvC,IAAI,OAA0C,CAAC;QAC/C,IAAI,KAAyB,CAAC;QAC9B,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE;YAC1B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,KAAK,KAAK,CAAC,KAAK,EAAE,CAAC;gBACvE,KAAK,GAAG,gBAAgB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC;YAC1F,CAAC;iBAAM,IAAI,MAAM,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC;gBACnC,KAAK,GAAG,gBAAgB,KAAK,CAAC,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YACvG,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,CAAC;YACD,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,IAAI,gBAAgB,CAAC,KAAK,IAAI,6BAA6B,CAAC,CAAC;QACrE,CAAC;QACD,OAAO,OAAO,CAAC,KAAK,CAAC;IACvB,CAAC;IAED,8EAA8E;IAC9E,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAE/E,wEAAwE;IACxE,SAAS,iBAAiB,CAAC,SAAiB;QAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAClD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,iBAAiB,CAAC,mBAAmB,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAED,yDAAyD;IACzD,SAAS,SAAS,CAAC,GAAe;QAChC,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;QACzF,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,UAAU,GAAG,GAAG,CAAC,WAAW,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;QACjF,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,EAAE,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAClI,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,GAAG,KAAK;YACR,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC;YAC7B,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC;YAChC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC;YACpC,YAAY,EAAE,IAAI,CAAC,GAAG,EAAE,eAAe,CAAC;YACxC,SAAS;YACT,KAAK;YACL,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC;YAC/C,UAAU;YACV,MAAM,EAAE,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;YACpE,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,SAAS,kBAAkB,CAAC,YAAoB,EAAE,GAAe,EAAE,KAAoB;QACrF,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;QAC7F,IAAI,SAAS,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC;YAClF,MAAM,IAAI,qBAAqB,CAAC,+BAA+B,MAAM,CAAC,YAAY,CAAC,mCAAmC,CAAC,CAAC;QAC1H,CAAC;QACD,MAAM,KAAK,GAAG,WAAW,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACnD,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;;OAIG;IACH,SAAS,cAAc,CAAC,IAA2B,EAAE,KAAoB;QACvE,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YAC9C,IAAI,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC1C,MAAM,IAAI,qBAAqB,CAAC,iDAAiD,CAAC,CAAC;YACrF,CAAC;YACD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;YACnD,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBACzB,MAAM,IAAI,qBAAqB,CAAC,+BAA+B,MAAM,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YACrG,CAAC;YACD,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,GAAG,CAAC,WAAW,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC7E,OAAO,kBAAkB,CAAC,YAAY,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;YACtD,CAAC;YACD,+GAA+G;YAC/G,MAAM,SAAS,GAAG,WAAW,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YACnD,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,kFAAkF;IAClF,SAAS,UAAU,CAAC,GAAe;QACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC;QACzF,wEAAwE;QACxE,iFAAiF;QACjF,aAAa,CAAC,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;QACnD,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,GAAG,KAAK;YACR,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC;YAC7B,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC;YAChC,SAAS,EAAE,WAAW,CAAC,QAAQ,EAAE,KAAK,CAAC;YACvC,SAAS,EAAE,QAAQ;YACnB,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,aAAa,CAAC;YACxC,QAAQ,EAAE,eAAe;YACzB,UAAU,EAAE,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,GAAG,CAAC,kBAAkB,EAAE,GAAG,CAAC,UAAU,EAAE,YAAY,CAAC;YACnG,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC;SAC3E,CAAC,CAAC;IACL,CAAC;IAED,mHAAmH;IACnH,SAAS,aAAa,CAAC,UAAgD,EAAE,KAAoB;QAC3F,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC;IACrF,CAAC;IAED;;;;;;;;OAQG;IACH,SAAS,eAAe,CAAC,OAAuB;QAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;YAC5B,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,SAAS,EAAE,CAAC;YACrE,MAAM,IAAI,qBAAqB,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,OAAO,CAAC,KAAK,6BAA6B,CAAC,CAAC;QACrI,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,2CAA2C;IAC3C,SAAS,UAAU,CAAC,OAAuB;QACzC,QAAQ,OAAO,CAAC,KAAK,EAAE,CAAC;YACtB,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC;YACxD,KAAK,QAAQ,CAAC;YACd,KAAK,aAAa;gBAChB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC,CAAC;YAC1D,KAAK,WAAW;gBACd,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBAC5B,MAAM,IAAI,qBAAqB,CAAC,2CAA2C,CAAC,CAAC;gBAC/E,CAAC;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;YAClF,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,UAAU,GAAU,OAAO,CAAC,KAAK,CAAC;gBACxC,OAAO,UAAU,CAAC;YACpB,CAAC;QACH,CAAC;IACH,CAAC;IAED,0FAA0F;IAC1F,SAAS,mBAAmB,CAAC,OAAuB,EAAE,OAAwB;QAC5E,IAAI,OAAO,CAAC,YAAY,KAAK,OAAO,CAAC,YAAY,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YACzF,MAAM,IAAI,oBAAoB,CAAC,eAAe,OAAO,CAAC,UAAU,6DAA6D,CAAC,CAAC;QACjI,CAAC;IACH,CAAC;IAED,0FAA0F;IAC1F,SAAS,YAAY,CAAC,GAAe,EAAE,SAAoC,EAAE,KAAoB;QAC/F,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC;YACnD,MAAM,IAAI,qBAAqB,CAAC,qBAAqB,MAAM,CAAC,YAAY,CAAC,iCAAiC,CAAC,CAAC;QAC9G,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,YAAY;YACZ,SAAS;YACT,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;YAC5B,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,QAAQ,EAAE,qBAAqB,CAAC;YACpG,YAAY,EAAE,cAAc,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,KAAK,CAAC;SACzF,CAAC,CAAC;IACL,CAAC;IAED,wCAAwC;IACxC,SAAS,aAAa;QACpB,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC;QACvC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,MAAM,IAAI,qBAAqB,CAAC,iCAAiC,CAAC,CAAC;QACrE,CAAC;QACD,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC;YACzC,eAAe,EAAE,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC;YACjD,cAAc,EAAE,OAAO,CAAC,GAAG,EAAE,iBAAiB,CAAC;YAC/C,aAAa,EAAE,OAAO,CAAC,GAAG,EAAE,gBAAgB,CAAC;SAC9C,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,SAAS,WAAW,CAAC,GAAe;QAClC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;QACzG,MAAM,UAAU,GAAG,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;YACtF,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAC7C,IAAI,OAAO,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBACtE,MAAM,IAAI,qBAAqB,CAAC,oBAAoB,MAAM,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC;YACvH,CAAC;YACD,MAAM,SAAS,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC;YACjG,IAAI,SAAS,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,IAAI,SAAS,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC3F,MAAM,IAAI,qBAAqB,CAAC,oBAAoB,MAAM,CAAC,WAAW,CAAC,iBAAiB,MAAM,CAAC,QAAQ,CAAC,8CAA8C,CAAC,CAAC;YAC1J,CAAC;YACD,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/C,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;QACH,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,qBAAqB,CAAC,oBAAoB,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;QAC7F,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC;YACnB,WAAW;YACX,MAAM;YACN,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC;YAC5B,QAAQ,EAAE,UAAU,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,CAAC,gBAAgB,EAAE,GAAG,CAAC,QAAQ,EAAE,oBAAoB,CAAC;YACnG,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC;SACtC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAoB;QAC/B,YAAY;QACZ,MAAM,EAAE,KAAK,CAAC,MAAM;QAEpB,aAAa,CAAC,OAAkC;YAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACrD,MAAM,iBAAiB,GAAG,eAAe,CAAC,OAAO,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;YAC1F,IAAI,WAA2C,CAAC;YAChD,MAAM,IAAI,GAAG,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,EAAE;gBAClE,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;gBAC5B,MAAM,GAAG,GAAG,WAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC3C,IAAI,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,SAAS,GAAG,GAAG,EAAE,CAAC;oBACrD,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;oBAClG,OAAO,SAAS,CAAC;gBACnB,CAAC;gBACD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,EAAE,cAAc,CAAC,CAAC;gBAC3D,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,iBAAiB,EAAE,cAAc,CAAC,CAAC;gBAClE,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;gBACnD,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;gBACtG,OAAO,SAAS,CAAC;YACnB,CAAC,CAAC,CAAC,CAAC;YACJ,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC;YACd,CAAC;YACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,CAAC,CAAC;YAC5E,CAAC;YACD,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,WAAW,CAAC,KAAmB,EAAE,iBAAyB;YACxD,MAAM,QAAQ,GAAG,eAAe,CAAC,iBAAiB,EAAE,mBAAmB,CAAC,CAAC;YACzE,4EAA4E;YAC5E,MAAM,SAAS,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACvC,OAAO,WAAW,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,GAAG,EAAkB,EAAE;gBAC5E,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;gBACzD,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACvC,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;YACnI,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC;QACjB,CAAC;QAED,aAAa,CAAC,KAAmB;YAC/B,QAAQ,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,EAAE;gBACtB,iEAAiE;gBACjE,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAClC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,aAAa;YACX,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;YAC5B,OAAO,MAAM,CAAC,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC;QAC7I,CAAC;QAED,eAAe,CAAC,KAAmB,EAAE,SAA0B;YAC7D,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YAC1C,OAAO,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC1B,MAAM,QAAQ,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;gBACzH,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACpC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;oBACtC,OAAO,eAAe,CAAC,OAAO,CAAC,CAAC;gBAClC,CAAC;gBACD,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,kBAAkB,CAAC,CAAC;gBAC9E,UAAU,CAAC,kBAAkB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC7C,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;gBACxK,OAAO,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,YAAY,CAAC,KAAmB,EAAE,OAAsB;YACtD,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAClE,MAAM,OAAO,GAAG,cAAc,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAChD,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC9C,MAAM,IAAI,SAAS,CAAC,yDAAyD,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YAC7C,OAAO,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC1B,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACzE,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;oBAClC,MAAM,IAAI,iBAAiB,CAAC,WAAW,MAAM,CAAC,SAAS,CAAC,gCAAgC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC3G,CAAC;gBACD,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;gBACxD,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,aAAa,EAAE,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBACjH,YAAY,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE;oBAC9C,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;gBACrE,CAAC,CAAC,CAAC;gBACH,OAAO,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,cAAc,CAAC,KAAmB,EAAE,WAAmB;YACrD,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;YAC5D,OAAO,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC1B,MAAM,GAAG,GAAG,iBAAiB,CAAC,SAAS,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChD,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,EAAE,CAAC;oBAClC,wFAAwF;oBACxF,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;wBAC5B,MAAM,IAAI,qBAAqB,CAAC,qBAAqB,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;oBACpG,CAAC;oBACD,OAAO,OAAO,CAAC,MAAM,CAAC;gBACxB,CAAC;gBACD,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC/B,MAAM,IAAI,iBAAiB,CAAC,WAAW,MAAM,CAAC,SAAS,CAAC,mCAAmC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC9G,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC;gBAC5C,MAAM,IAAI,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;gBACrC,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC9C,MAAM,IAAI,qBAAqB,CAAC,wCAAwC,CAAC,CAAC;gBAC5E,CAAC;gBACD,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC9C,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,eAAe,EAAE,CAAC,EAAE,sBAAsB,CAAC,CAAC;gBACxF,UAAU,CAAC,sBAAsB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACnD,UAAU,CAAC,YAAY,CAAC,GAAG,CACzB,SAAS,EAAE,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAC5G,eAAe,EAAE,YAAY,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,0BAA0B,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE,2BAA2B,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,mBAAmB,CAAC,CACzJ,CAAC;gBACF,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAC9B,IAAI,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,OAAO,KAAK,CAAC,EAAE,CAAC;oBACzE,MAAM,IAAI,qBAAqB,CAAC,WAAW,MAAM,CAAC,SAAS,CAAC,mCAAmC,CAAC,CAAC;gBACnG,CAAC;gBACD,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAC7F,OAAO,WAAW,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;QACL,CAAC;QAED,cAAc,CAAC,KAAmB,EAAE,OAAwB;YAC1D,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;YAClE,MAAM,OAAO,GAAY,OAAO,CAAC,OAAO,CAAC;YACzC,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,aAAa,EAAE,CAAC;gBACtD,MAAM,IAAI,SAAS,CAAC,gEAAgE,CAAC,CAAC;YACxF,CAAC;YACD,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;YACnE,OAAO,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC1B,MAAM,OAAO,GAAG,eAAe,CAAC,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;gBACzE,IAAI,OAAO,CAAC,KAAK,KAAK,WAAW,IAAI,OAAO,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAChE,MAAM,IAAI,iBAAiB,CAAC,WAAW,MAAM,CAAC,SAAS,CAAC,mCAAmC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC9G,CAAC;gBACD,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;gBAC1H,OAAO,SAAS,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;YACjD,CAAC,CAAC,CAAC;QACL,CAAC;QAED,cAAc,CAAC,SAA0B;YACvC,MAAM,OAAO,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;YAC1C,MAAM,GAAG,GAAG,UAAU,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;YACpH,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;YAC/B,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YACtC,OAAO,UAAU,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,cAAc,CAAC,SAA4B;YACzC,MAAM,OAAO,GAAG,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC5C,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC;QAC3I,CAAC;QAED,WAAW,CAAC,SAAyB;YACnC,MAAM,OAAO,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;YACzC,MAAM,GAAG,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YAC3F,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,IAAI,GAAG,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;gBACzB,MAAM,IAAI,qBAAqB,CAAC,uDAAuD,CAAC,CAAC;YAC3F,CAAC;YACD,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,OAAO,CAAC,CAAC;YAClE,sGAAsG;YACtG,aAAa,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,YAAY,CAAC,SAAoC;YAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;YAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9C,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,MAAM,IAAI,qBAAqB,CAAC,kCAAkC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC;YACzF,CAAC;YACD,OAAO,UAAU,CAAC,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,YAAY,CAAC,SAAoC;YAC/C,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;YAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChC,CAAC;QAED,gBAAgB,CAAC,KAAmB,EAAE,OAA2B;YAC/D,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;YACtE,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,WAAW,CAAC,OAAO,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;YAC/E,OAAO,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC1B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACxE,6FAA6F;gBAC7F,MAAM,KAAK,GAAG,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;gBACnF,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;gBACtD,MAAM,YAAY,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,cAAc,EAAE,CAAC,EAAE,qBAAqB,CAAC,CAAC;gBACvF,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gBACnD,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACnJ,YAAY,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE;oBAC9C,UAAU,CAAC,0BAA0B,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAClF,CAAC,CAAC,CAAC;gBACH,MAAM,GAAG,GAAG,UAAU,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC;gBACrF,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtB,MAAM,IAAI,qBAAqB,CAAC,qCAAqC,CAAC,CAAC;gBACzE,CAAC;gBACD,oGAAoG;gBACpG,iGAAiG;gBACjG,IAAI,OAAO,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE,WAAW,CAAC,KAAK,QAAQ;uBACvF,IAAI,CAAC,GAAG,EAAE,aAAa,CAAC,KAAK,KAAK,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,KAAK,CAAC,KAAK;uBACvF,IAAI,CAAC,GAAG,EAAE,iBAAiB,CAAC,KAAK,QAAQ,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,EAAE,kBAAkB,CAAC,KAAK,QAAQ,CAAC,aAAa;uBAC/G,IAAI,CAAC,GAAG,EAAE,UAAU,CAAC,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;oBAChD,MAAM,IAAI,qBAAqB,CAAC,iEAAiE,CAAC,CAAC;gBACrG,CAAC;gBACD,OAAO,YAAY,CAAC,GAAG,EAAE,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;QACL,CAAC;QAED,eAAe,CAAC,SAAoC,EAAE,oBAA4B;YAChF,MAAM,WAAW,GAAG,WAAW,CAAC,oBAAoB,EAAE,wBAAwB,CAAC,CAAC;YAChF,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,KAAK,GAAG,eAAe,CAAC,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;YAC3E,MAAM,KAAK,GAAG,WAAW,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC9H,CAAC;QAED,cAAc,CAAC,KAAmB,EAAE,OAA0B;YAC5D,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YAC5C,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,CAAC,QAAQ,EAAE,oBAAoB,CAAC,CAAC;YACrE,MAAM,SAAS,GAAY,OAAO,CAAC,UAAU,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACxD,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAC;YACnF,CAAC;YACD,MAAM,UAAU,GAAG,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;YAC3C,OAAO,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE;gBAC1B,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE;oBAC7C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,aAAa,CAAC,SAAS,CAAC,CAAC;oBAChE,8GAA8G;oBAC9G,IAAI,SAAS,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC;wBAC3C,MAAM,IAAI,qBAAqB,CAAC,oBAAoB,SAAS,CAAC,OAAO,gEAAgE,CAAC,CAAC;oBACzI,CAAC;oBACD,IAAI,SAAS,CAAC,WAAW,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC;wBACjD,MAAM,IAAI,qBAAqB,CAAC,oBAAoB,SAAS,CAAC,OAAO,qBAAqB,MAAM,CAAC,WAAW,8DAA8D,CAAC,CAAC;oBAC9K,CAAC;oBACD,OAAO,QAAQ,CAAC;gBAClB,CAAC,CAAC,CAAC;gBACH,IAAI,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;oBACjD,MAAM,IAAI,SAAS,CAAC,sDAAsD,CAAC,CAAC;gBAC9E,CAAC;gBACD,MAAM,WAAW,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,aAAa,EAAE,CAAC,EAAE,oBAAoB,CAAC,CAAC;gBACpF,UAAU,CAAC,oBAAoB,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBACjD,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACzJ,SAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;oBACvC,UAAU,CAAC,qBAAqB,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;gBACH,MAAM,GAAG,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;gBAClD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;oBACtB,MAAM,IAAI,qBAAqB,CAAC,oCAAoC,CAAC,CAAC;gBACxE,CAAC;gBACD,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,cAAc,CAAC,KAAsB;YACnC,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC1C,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;gBAClC,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;YACxG,CAAC;YACD,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YACpD,OAAO,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC;QACxH,CAAC;QAED,WAAW,CAAC,WAAgC;YAC1C,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACpC,CAAC;QAED,KAAK;YACH,UAAU,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;KACF,CAAC;IACF,OAAO,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC"}
@@ -9,24 +9,26 @@
9
9
  *
10
10
  * Immutability of completed history is enforced in storage by triggers:
11
11
  * results, their generated index, dependencies, acceptance records, promotion
12
- * records, journal revisions and the identity row cannot be updated or
13
- * deleted, and attempts, current pointers and writer/sequence rows cannot be
14
- * deleted. No reclamation exists (RES-006).
12
+ * records, journal revisions and the identity row cannot be updated,
13
+ * deleted or replaced through insert conflicts. Attempts, current pointers
14
+ * and writer/sequence rows cannot be deleted. No reclamation exists (RES-006).
15
15
  *
16
- * Version 2 namespaces acceptance records by the environment that recorded
17
- * them and adds recorded promotions and Run Supervision's operation journal
18
- * (RUN-011/012/017). Version 1 files, written before those records existed,
19
- * are rejected by their recorded version like any other unsupported version:
20
- * the repository's storage policy is to reject incompatible formats
21
- * explicitly and never migrate stored data by guessing (execution.md PUB-004,
22
- * experiments.md EXP-2 gate), and no migration is authorized.
16
+ * Version 3 adds insert-conflict guards to every immutable table, including
17
+ * primary and secondary unique identities. They reject SQLite REPLACE before
18
+ * its implicit deletion, independently of recursive_triggers. Composite-key
19
+ * immutable tables have no hidden rowid that could bypass their declared keys.
20
+ * Version 2 added
21
+ * environment-scoped acceptances, promotions and the operation journal; both
22
+ * version 1 and version 2 files are now rejected by their recorded version.
23
+ * No migration is authorized: incompatible formats are rejected explicitly
24
+ * rather than guessed (execution.md PUB-004, experiments.md EXP-2 gate).
23
25
  * @packageDocumentation
24
26
  */
25
27
  import type { ISqliteConnection } from '@microdelta/machine';
26
28
  /** The schema identity recorded in every durable History file. */
27
29
  export declare const schemaName = "microdelta.history.durable";
28
30
  /** The only schema version this implementation reads or writes. */
29
- export declare const schemaVersion = 2;
31
+ export declare const schemaVersion = 3;
30
32
  /**
31
33
  * Create the schema in one transaction when the database has no objects,
32
34
  * then validate it. Validation requires exactly the expected objects with
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/durable/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAc,MAAM,qBAAqB,CAAC;AAOzE,kEAAkE;AAClE,eAAO,MAAM,UAAU,+BAA+B,CAAC;AAEvD,mEAAmE;AACnE,eAAO,MAAM,aAAa,IAAI,CAAC;AA8P/B;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAsB1F"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/durable/schema.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAc,MAAM,qBAAqB,CAAC;AAOzE,kEAAkE;AAClE,eAAO,MAAM,UAAU,+BAA+B,CAAC;AAEvD,mEAAmE;AACnE,eAAO,MAAM,aAAa,IAAI,CAAC;AAuQ/B;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAsB1F"}
@@ -4,21 +4,27 @@ const sql = String.raw;
4
4
  /** The schema identity recorded in every durable History file. */
5
5
  export const schemaName = 'microdelta.history.durable';
6
6
  /** The only schema version this implementation reads or writes. */
7
- export const schemaVersion = 2;
8
- /** Tables whose rows may never be updated or deleted once written. */
9
- const immutableTables = [
10
- 'history_identity',
11
- 'history_results',
12
- 'history_dependencies',
13
- 'history_nodes',
14
- 'history_edges',
15
- 'history_addresses',
16
- 'history_acceptances',
17
- 'history_acceptance_dependencies',
18
- 'history_promotions',
19
- 'history_promotion_results',
20
- 'history_journal',
21
- ];
7
+ export const schemaVersion = 3;
8
+ /**
9
+ * Unique identities that could displace immutable history during INSERT OR
10
+ * REPLACE. Every primary key and independent secondary UNIQUE key must appear:
11
+ * SQLite's implicit replacement deletes do not run delete triggers unless the
12
+ * caller enables recursive_triggers. BEFORE INSERT therefore owns this guard.
13
+ * The result scope UNIQUE includes result_id and is covered by its primary key.
14
+ */
15
+ const immutableKeys = {
16
+ history_identity: [['singleton']],
17
+ history_results: [['result_id'], ['publication']],
18
+ history_dependencies: [['attempt_id', 'position']],
19
+ history_nodes: [['result_id', 'node_id']],
20
+ history_edges: [['result_id', 'parent_node', 'edge_kind', 'edge_key']],
21
+ history_addresses: [['result_id', 'address']],
22
+ history_acceptances: [['acceptance_id']],
23
+ history_acceptance_dependencies: [['acceptance_id', 'position']],
24
+ history_promotions: [['promotion_id']],
25
+ history_promotion_results: [['promotion_id', 'position'], ['promotion_id', 'result_id']],
26
+ history_journal: [['analysis', 'environment', 'collection', 'journal_key', 'revision'], ['sequence']],
27
+ };
22
28
  /** Tables whose rows may change state but are never deleted. */
23
29
  const retainedTables = ['history_writer', 'history_sequences', 'history_attempts', 'history_current'];
24
30
  /**
@@ -109,7 +115,7 @@ const schemaObjects = [
109
115
  position INTEGER NOT NULL CHECK (position >= 0),
110
116
  dependency_id INTEGER NOT NULL REFERENCES history_results (result_id),
111
117
  PRIMARY KEY (attempt_id, position)
112
- ) STRICT`,
118
+ ) STRICT, WITHOUT ROWID`,
113
119
  // The generated selected index: one row per node of the canonical payload.
114
120
  // Only `scalar` holds author data; everything else is shape or digest.
115
121
  sql `CREATE TABLE history_nodes (
@@ -130,7 +136,7 @@ const schemaObjects = [
130
136
  AND prototype IS NULL AND prototype_node IS NULL AND terminal IS NULL)
131
137
  OR (kind = 'record' AND scalar IS NULL AND array_length IS NULL AND own_keys IS NOT NULL
132
138
  AND prototype IS NOT NULL AND terminal IS NOT NULL AND (prototype = 'custom') = (prototype_node IS NOT NULL)))
133
- ) STRICT`,
139
+ ) STRICT, WITHOUT ROWID`,
134
140
  // Structural slots: own record members and present array elements.
135
141
  sql `CREATE TABLE history_edges (
136
142
  result_id INTEGER NOT NULL REFERENCES history_results (result_id),
@@ -140,7 +146,7 @@ const schemaObjects = [
140
146
  position INTEGER NOT NULL,
141
147
  child_node INTEGER NOT NULL,
142
148
  PRIMARY KEY (result_id, parent_node, edge_kind, edge_key)
143
- ) STRICT`,
149
+ ) STRICT, WITHOUT ROWID`,
144
150
  // Every reachable structured address, with its node and MDO1 value digest.
145
151
  sql `CREATE TABLE history_addresses (
146
152
  result_id INTEGER NOT NULL REFERENCES history_results (result_id),
@@ -150,7 +156,7 @@ const schemaObjects = [
150
156
  value_fingerprint TEXT,
151
157
  PRIMARY KEY (result_id, address),
152
158
  CHECK ((address = '[]') = (value_fingerprint IS NULL))
153
- ) STRICT`,
159
+ ) STRICT, WITHOUT ROWID`,
154
160
  // The latest publication of each scoped subject; acceptance never moves it.
155
161
  sql `CREATE TABLE history_current (
156
162
  analysis TEXT NOT NULL,
@@ -178,7 +184,7 @@ const schemaObjects = [
178
184
  position INTEGER NOT NULL CHECK (position >= 0),
179
185
  dependency_id INTEGER NOT NULL REFERENCES history_results (result_id),
180
186
  PRIMARY KEY (acceptance_id, position)
181
- ) STRICT`,
187
+ ) STRICT, WITHOUT ROWID`,
182
188
  // Recorded promotions (RUN-017): each admits exact results of other
183
189
  // environments into its target environment, with the promoter's evidence.
184
190
  sql `CREATE TABLE history_promotions (
@@ -197,7 +203,7 @@ const schemaObjects = [
197
203
  result_id INTEGER NOT NULL REFERENCES history_results (result_id),
198
204
  PRIMARY KEY (promotion_id, position),
199
205
  UNIQUE (promotion_id, result_id)
200
- ) STRICT`,
206
+ ) STRICT, WITHOUT ROWID`,
201
207
  sql `CREATE INDEX history_promotion_results_by_result ON history_promotion_results (result_id, promotion_id)`,
202
208
  // Run Supervision's operation journal: immutable revisions of opaque owner
203
209
  // records per environment namespace, owner-named collection and key. The
@@ -216,8 +222,11 @@ const schemaObjects = [
216
222
  format_version INTEGER NOT NULL CHECK (format_version > 0),
217
223
  content TEXT NOT NULL,
218
224
  PRIMARY KEY (analysis, environment, collection, journal_key, revision)
219
- ) STRICT`,
220
- ...immutableTables.flatMap((table) => [
225
+ ) STRICT, WITHOUT ROWID`,
226
+ ...Object.entries(immutableKeys).flatMap(([table, keys]) => [
227
+ sql `CREATE TRIGGER ${table}_immutable_insert BEFORE INSERT ON ${table}
228
+ WHEN EXISTS (SELECT 1 FROM ${table} WHERE ${keys.map((key) => `(${key.map((column) => `${column} = NEW.${column}`).join(' AND ')})`).join(' OR ')})
229
+ BEGIN SELECT RAISE(ABORT, '${table} rows are immutable history'); END`,
221
230
  sql `CREATE TRIGGER ${table}_immutable_update BEFORE UPDATE ON ${table}
222
231
  BEGIN SELECT RAISE(ABORT, '${table} rows are immutable history'); END`,
223
232
  sql `CREATE TRIGGER ${table}_immutable_delete BEFORE DELETE ON ${table}