instar 0.28.84 → 0.28.86
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/commands/intent.d.ts.map +1 -1
- package/dist/commands/intent.js +29 -2
- package/dist/commands/intent.js.map +1 -1
- package/dist/commands/server.d.ts.map +1 -1
- package/dist/commands/server.js +14 -0
- package/dist/commands/server.js.map +1 -1
- package/dist/core/DecisionJournal.d.ts +66 -3
- package/dist/core/DecisionJournal.d.ts.map +1 -1
- package/dist/core/DecisionJournal.js +116 -3
- package/dist/core/DecisionJournal.js.map +1 -1
- package/dist/core/DispatchExecutor.d.ts +74 -1
- package/dist/core/DispatchExecutor.d.ts.map +1 -1
- package/dist/core/DispatchExecutor.js +120 -1
- package/dist/core/DispatchExecutor.js.map +1 -1
- package/dist/core/EvolutionManager.d.ts +60 -0
- package/dist/core/EvolutionManager.d.ts.map +1 -1
- package/dist/core/EvolutionManager.js +118 -0
- package/dist/core/EvolutionManager.js.map +1 -1
- package/dist/core/InitiativeTracker.d.ts +256 -14
- package/dist/core/InitiativeTracker.d.ts.map +1 -1
- package/dist/core/InitiativeTracker.js +826 -34
- package/dist/core/InitiativeTracker.js.map +1 -1
- package/dist/core/LearnSkillBridge.d.ts +119 -0
- package/dist/core/LearnSkillBridge.d.ts.map +1 -0
- package/dist/core/LearnSkillBridge.js +160 -0
- package/dist/core/LearnSkillBridge.js.map +1 -0
- package/dist/core/types.d.ts +34 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/server/routes.d.ts.map +1 -1
- package/dist/server/routes.js +131 -14
- package/dist/server/routes.js.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.d.ts +32 -0
- package/dist/threadline/ThreadlineMCPServer.d.ts.map +1 -1
- package/dist/threadline/ThreadlineMCPServer.js +82 -5
- package/dist/threadline/ThreadlineMCPServer.js.map +1 -1
- package/dist/threadline/mcp-stdio-entry.js +56 -0
- package/dist/threadline/mcp-stdio-entry.js.map +1 -1
- package/package.json +1 -1
- package/src/data/builtin-manifest.json +47 -47
- package/upgrades/0.28.85.md +64 -0
- package/upgrades/0.28.86.md +86 -0
- package/upgrades/side-effects/0.28.83.md +27 -0
- package/upgrades/side-effects/project-scope-phase1a-pr1.md +232 -0
- package/upgrades/side-effects/taskflow-phase4.md +377 -0
- package/upgrades/side-effects/threadline-discover-relay-and-trust.md +122 -0
- package/upgrades/side-effects/wikiclaim-evidence-phase2.md +148 -0
- package/upgrades/side-effects/wikiclaim-evidence-phase3.md +125 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { TaskFlowRegistry } from '../tasks/TaskFlowRegistry.js';
|
|
1
2
|
export type InitiativePhaseStatus = 'pending' | 'in-progress' | 'done' | 'blocked';
|
|
2
3
|
export interface InitiativePhase {
|
|
3
4
|
/** Stable identifier within this initiative (e.g. 'phase-a'). */
|
|
@@ -12,7 +13,35 @@ export interface InitiativePhase {
|
|
|
12
13
|
/** ISO timestamp when status first became 'done'. */
|
|
13
14
|
completedAt?: string;
|
|
14
15
|
}
|
|
15
|
-
export type InitiativeStatus = 'active' | 'completed' | 'archived' | 'abandoned';
|
|
16
|
+
export type InitiativeStatus = 'active' | 'completed' | 'archived' | 'abandoned' | 'paused' | 'halted' | 'awaiting-user';
|
|
17
|
+
export type InitiativeKind = 'task' | 'project';
|
|
18
|
+
export type PipelineStage = 'outline' | 'spec-drafted' | 'spec-converged' | 'approved' | 'building' | 'merged' | 'regressed' | 'skipped';
|
|
19
|
+
export type RoundStatus = 'pending' | 'ready' | 'in-progress' | 'partially-complete' | 'complete' | 'complete-with-skips' | 'failed' | 'regressed';
|
|
20
|
+
export interface InitiativeRound {
|
|
21
|
+
name: string;
|
|
22
|
+
/** Child initiative IDs in this round. */
|
|
23
|
+
itemIds: string[];
|
|
24
|
+
status: RoundStatus;
|
|
25
|
+
/** ISO; populated when prior round completes and this one becomes ready. */
|
|
26
|
+
autoAdvanceAt?: string;
|
|
27
|
+
completedAt?: string;
|
|
28
|
+
haltedAt?: string;
|
|
29
|
+
haltReason?: string;
|
|
30
|
+
/** Counter; round-runner caps this at 3. */
|
|
31
|
+
resumeAttempts?: number;
|
|
32
|
+
/** Cached drift verdict from the most recent attempt. Typed in Phase 1b. */
|
|
33
|
+
lastDriftVerdict?: unknown;
|
|
34
|
+
}
|
|
35
|
+
export interface InitiativeConflictPatch {
|
|
36
|
+
patchId: string;
|
|
37
|
+
recordId: string;
|
|
38
|
+
path: string;
|
|
39
|
+
oursValue: unknown;
|
|
40
|
+
theirsValue: unknown;
|
|
41
|
+
baseValue?: unknown;
|
|
42
|
+
losingMachineId: string;
|
|
43
|
+
capturedAt: string;
|
|
44
|
+
}
|
|
16
45
|
export interface InitiativeLink {
|
|
17
46
|
type: 'spec' | 'pr' | 'commit' | 'topic' | 'doc' | 'other';
|
|
18
47
|
label: string;
|
|
@@ -42,6 +71,53 @@ export interface Initiative {
|
|
|
42
71
|
links: InitiativeLink[];
|
|
43
72
|
createdAt: string;
|
|
44
73
|
updatedAt: string;
|
|
74
|
+
/** Distinguishes leaf work items ('task') from rollups ('project').
|
|
75
|
+
* Immutable after creation. Defaults to 'task' when omitted. */
|
|
76
|
+
kind?: InitiativeKind;
|
|
77
|
+
/** Bumped on backfill / migration. */
|
|
78
|
+
schemaVersion?: number;
|
|
79
|
+
/** Optimistic concurrency counter. Increments on every successful write.
|
|
80
|
+
* Starts at 1 on create. */
|
|
81
|
+
version?: number;
|
|
82
|
+
/** Back-pointer to a project that lists this child in `rounds[].itemIds`. */
|
|
83
|
+
parentProjectId?: string;
|
|
84
|
+
pipelineStage?: PipelineStage;
|
|
85
|
+
/** Relative to repo root; required for stages ≥ 'spec-drafted'. */
|
|
86
|
+
specPath?: string;
|
|
87
|
+
/** Required for stages = 'building' or 'merged'. */
|
|
88
|
+
prNumber?: number;
|
|
89
|
+
/** GitHub-reported merge commit; recorded at building → merged. */
|
|
90
|
+
mergeCommitOid?: string;
|
|
91
|
+
/** ISO; last revalidation against origin/main. */
|
|
92
|
+
ciCheckedAt?: string;
|
|
93
|
+
skippedAt?: string;
|
|
94
|
+
skippedBy?: string;
|
|
95
|
+
skippedReason?: string;
|
|
96
|
+
/** Recorded on skipped → outline reverse transition. */
|
|
97
|
+
unskippedAt?: string;
|
|
98
|
+
/** Default true at runtime; false marks infrastructure-of-tracker specs. */
|
|
99
|
+
driftCheck?: boolean;
|
|
100
|
+
rounds?: InitiativeRound[];
|
|
101
|
+
/** Paths jailed to project-root allowlist. */
|
|
102
|
+
sourceDocs?: string[];
|
|
103
|
+
/** Default true at runtime. */
|
|
104
|
+
autoAdvance?: boolean;
|
|
105
|
+
/** For round-complete and halt notifications. */
|
|
106
|
+
telegramTopicId?: string;
|
|
107
|
+
/** Current round owner (Phase 1.5). */
|
|
108
|
+
ownerMachineId?: string;
|
|
109
|
+
/** Absolute path to the target source repo; required for projects. */
|
|
110
|
+
targetRepoPath?: string;
|
|
111
|
+
/** Increments on each auto-advance without ack; pauses project at ≥ 2. */
|
|
112
|
+
unacknowledgedAdvanceCount?: number;
|
|
113
|
+
/** Populated when user acks the first-launch digest. */
|
|
114
|
+
firstLaunchAckAt?: string;
|
|
115
|
+
/** Highest round index acked. */
|
|
116
|
+
lastAckedRoundIndex?: number;
|
|
117
|
+
/** Populated by git-sync conflict handler (Phase 1.12). */
|
|
118
|
+
awaitingReconciliation?: InitiativeConflictPatch[];
|
|
119
|
+
/** For cache invalidation on drift-prompt edits. */
|
|
120
|
+
driftPromptTemplateVersion?: number;
|
|
45
121
|
}
|
|
46
122
|
export interface InitiativeCreateInput {
|
|
47
123
|
id: string;
|
|
@@ -58,6 +134,22 @@ export interface InitiativeCreateInput {
|
|
|
58
134
|
needsUser?: boolean;
|
|
59
135
|
needsUserReason?: string;
|
|
60
136
|
blockers?: string[];
|
|
137
|
+
/** Defaults to 'task' if omitted. Immutable after creation. */
|
|
138
|
+
kind?: InitiativeKind;
|
|
139
|
+
parentProjectId?: string;
|
|
140
|
+
pipelineStage?: PipelineStage;
|
|
141
|
+
specPath?: string;
|
|
142
|
+
prNumber?: number;
|
|
143
|
+
mergeCommitOid?: string;
|
|
144
|
+
ciCheckedAt?: string;
|
|
145
|
+
driftCheck?: boolean;
|
|
146
|
+
rounds?: InitiativeRound[];
|
|
147
|
+
sourceDocs?: string[];
|
|
148
|
+
autoAdvance?: boolean;
|
|
149
|
+
telegramTopicId?: string;
|
|
150
|
+
ownerMachineId?: string;
|
|
151
|
+
targetRepoPath?: string;
|
|
152
|
+
driftPromptTemplateVersion?: number;
|
|
61
153
|
}
|
|
62
154
|
export interface InitiativeUpdateInput {
|
|
63
155
|
title?: string;
|
|
@@ -68,6 +160,62 @@ export interface InitiativeUpdateInput {
|
|
|
68
160
|
needsUserReason?: string | null;
|
|
69
161
|
blockers?: string[];
|
|
70
162
|
links?: InitiativeLink[];
|
|
163
|
+
/** Optimistic concurrency guard. When provided, must equal the current
|
|
164
|
+
* `version` or update() throws `OccVersionMismatchError`. Backward
|
|
165
|
+
* compatible: callers that omit ifMatch get unconditional writes. */
|
|
166
|
+
ifMatch?: number;
|
|
167
|
+
/** Presence triggers immutability check: any value that differs from
|
|
168
|
+
* the current `kind` throws `KindImmutableError`. */
|
|
169
|
+
kind?: InitiativeKind;
|
|
170
|
+
/** Set to a project id to attach; set to null to clear. Bidirectional
|
|
171
|
+
* validation against the named project's `rounds[].itemIds` runs on set. */
|
|
172
|
+
parentProjectId?: string | null;
|
|
173
|
+
pipelineStage?: PipelineStage;
|
|
174
|
+
specPath?: string | null;
|
|
175
|
+
prNumber?: number | null;
|
|
176
|
+
mergeCommitOid?: string | null;
|
|
177
|
+
ciCheckedAt?: string | null;
|
|
178
|
+
skippedAt?: string | null;
|
|
179
|
+
skippedBy?: string | null;
|
|
180
|
+
skippedReason?: string | null;
|
|
181
|
+
unskippedAt?: string | null;
|
|
182
|
+
driftCheck?: boolean;
|
|
183
|
+
rounds?: InitiativeRound[];
|
|
184
|
+
sourceDocs?: string[];
|
|
185
|
+
autoAdvance?: boolean;
|
|
186
|
+
telegramTopicId?: string | null;
|
|
187
|
+
ownerMachineId?: string | null;
|
|
188
|
+
targetRepoPath?: string;
|
|
189
|
+
unacknowledgedAdvanceCount?: number;
|
|
190
|
+
firstLaunchAckAt?: string | null;
|
|
191
|
+
lastAckedRoundIndex?: number;
|
|
192
|
+
awaitingReconciliation?: InitiativeConflictPatch[];
|
|
193
|
+
driftPromptTemplateVersion?: number;
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Thrown by `update()` when the caller supplied `ifMatch` and it didn't
|
|
197
|
+
* equal the current `version`. The HTTP layer (Phase 1.3) translates this
|
|
198
|
+
* to a 409 response with body `{ currentVersion }`.
|
|
199
|
+
*/
|
|
200
|
+
export declare class OccVersionMismatchError extends Error {
|
|
201
|
+
readonly currentVersion: number;
|
|
202
|
+
constructor(message: string, currentVersion: number);
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Thrown by `update()` when the caller attempted to change `kind`. The
|
|
206
|
+
* `kind` field is set at creation time and never changes thereafter.
|
|
207
|
+
*/
|
|
208
|
+
export declare class KindImmutableError extends Error {
|
|
209
|
+
constructor(message?: string);
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Thrown by `update()` when setting `parentProjectId` and the named parent
|
|
213
|
+
* either doesn't exist, isn't a `kind: 'project'` initiative, or doesn't
|
|
214
|
+
* list this child in any of its `rounds[].itemIds`. Bidirectional check
|
|
215
|
+
* keeps the parent/child relationship internally consistent.
|
|
216
|
+
*/
|
|
217
|
+
export declare class InvalidParentProjectError extends Error {
|
|
218
|
+
constructor(message: string);
|
|
71
219
|
}
|
|
72
220
|
export interface DigestItem {
|
|
73
221
|
initiativeId: string;
|
|
@@ -84,30 +232,124 @@ export interface Digest {
|
|
|
84
232
|
* active initiative triggers a 'stale' flag).
|
|
85
233
|
*/
|
|
86
234
|
export declare const STALE_THRESHOLD_MS: number;
|
|
235
|
+
/**
|
|
236
|
+
* TaskFlow controller identity for InitiativeTracker (Phase 4 migration).
|
|
237
|
+
* Every initiative's flow is owned by this controllerId; the registry uses
|
|
238
|
+
* it for OCC scope checks. Single instance per server process.
|
|
239
|
+
*/
|
|
240
|
+
export declare const INITIATIVE_TASKFLOW_CONTROLLER_ID = "InitiativeTracker";
|
|
87
241
|
export declare class InitiativeTracker {
|
|
88
242
|
private readonly filePath;
|
|
243
|
+
/** In-process cache. Authoritative when TaskFlow is not wired; otherwise
|
|
244
|
+
* a read-side projection of TaskFlow's stateJson. */
|
|
89
245
|
private readonly initiatives;
|
|
246
|
+
private taskFlowRegistry;
|
|
247
|
+
private taskFlowControllerInstanceId;
|
|
248
|
+
private digestCacheInvalidator;
|
|
90
249
|
constructor(stateDir: string);
|
|
91
|
-
|
|
92
|
-
|
|
250
|
+
/**
|
|
251
|
+
* Register a callback invoked once after every successful mutating call
|
|
252
|
+
* (`create`, `update`, `setPhaseStatus`, `remove`). The default is a
|
|
253
|
+
* no-op so legacy callers see no change. PR 3 wires the real cache
|
|
254
|
+
* invalidator.
|
|
255
|
+
*/
|
|
256
|
+
setDigestCacheInvalidator(fn: () => void): void;
|
|
257
|
+
/**
|
|
258
|
+
* Wire a TaskFlow registry to make TaskFlow the source of truth.
|
|
259
|
+
* Idempotent — safe to call multiple times. After wiring, all reads come
|
|
260
|
+
* from TaskFlow and all writes go through TaskFlow APIs. The legacy JSON
|
|
261
|
+
* file is no longer written.
|
|
262
|
+
*
|
|
263
|
+
* Callers are expected to call `migrateExistingToTaskFlow()` after this
|
|
264
|
+
* to backfill any initiatives that were loaded from the legacy file.
|
|
265
|
+
*/
|
|
266
|
+
setTaskFlowRegistry(registry: TaskFlowRegistry, controllerInstanceId: string): void;
|
|
267
|
+
/** True when TaskFlow is wired and authoritative. */
|
|
268
|
+
isTaskFlowEnabled(): boolean;
|
|
269
|
+
private taskFlowPrincipal;
|
|
270
|
+
private loadFromDisk;
|
|
271
|
+
private saveToDisk;
|
|
272
|
+
private initiativeFromFlow;
|
|
273
|
+
private refreshCacheFromTaskFlow;
|
|
274
|
+
/**
|
|
275
|
+
* Layer TaskFlow data on top of the existing cache without clearing it.
|
|
276
|
+
* Used during `setTaskFlowRegistry` so legacy-loaded initiatives are
|
|
277
|
+
* preserved as backfill candidates while any pre-existing TaskFlow
|
|
278
|
+
* records take precedence.
|
|
279
|
+
*/
|
|
280
|
+
private layerCacheFromTaskFlow;
|
|
281
|
+
/**
|
|
282
|
+
* A flow is "tombstoned" when remove() marked it as removed before
|
|
283
|
+
* cancelling. The marker lives in stateJson._removed and is the
|
|
284
|
+
* single signal that a flow's owning Initiative should be hidden from
|
|
285
|
+
* list() / get(). We can't delete TaskFlow records from this layer, so
|
|
286
|
+
* the marker is the durable equivalent of deletion.
|
|
287
|
+
*/
|
|
288
|
+
private isTombstoned;
|
|
289
|
+
private waitJsonForInitiative;
|
|
290
|
+
/** Determine the desired TaskFlow status for an Initiative. */
|
|
291
|
+
private desiredFlowStatus;
|
|
292
|
+
/**
|
|
293
|
+
* Persist an Initiative through TaskFlow. Walks the flow state machine
|
|
294
|
+
* to the desired target (running / waiting / succeeded / failed /
|
|
295
|
+
* cancelled), updating `stateJson` along the way so reads see the latest
|
|
296
|
+
* shape. Returns the Initiative as projected from TaskFlow after
|
|
297
|
+
* transitions settle.
|
|
298
|
+
*/
|
|
299
|
+
private persistThroughTaskFlow;
|
|
300
|
+
/**
|
|
301
|
+
* Patch a running flow's stateJson without changing its observable
|
|
302
|
+
* status. Uses a brief setFlowWaiting → resumeFlow round-trip (the only
|
|
303
|
+
* atomic state-bearing transitions for `running` flows that accept
|
|
304
|
+
* `statePatch`). The wait kind `'human-review'` with a sentinel question
|
|
305
|
+
* is used; the wait is consumed in the same call, so no external
|
|
306
|
+
* observer sees `waiting`.
|
|
307
|
+
*/
|
|
308
|
+
private patchStateJson;
|
|
309
|
+
private findFlowIdForInitiative;
|
|
310
|
+
private logTaskFlowError;
|
|
311
|
+
/**
|
|
312
|
+
* Backfill all initiatives currently in the in-memory cache (loaded from
|
|
313
|
+
* legacy JSON in the constructor) into TaskFlow. Idempotent via
|
|
314
|
+
* `findIdempotent`. Safe to call multiple times.
|
|
315
|
+
*/
|
|
316
|
+
migrateExistingToTaskFlow(): Promise<{
|
|
317
|
+
created: number;
|
|
318
|
+
alreadyExisted: number;
|
|
319
|
+
advanced: number;
|
|
320
|
+
skipped: number;
|
|
321
|
+
}>;
|
|
93
322
|
list(filter?: {
|
|
94
323
|
status?: InitiativeStatus;
|
|
95
324
|
}): Initiative[];
|
|
96
325
|
get(id: string): Initiative | undefined;
|
|
97
|
-
create(input: InitiativeCreateInput): Initiative
|
|
98
|
-
update(id: string, input: InitiativeUpdateInput): Initiative
|
|
326
|
+
create(input: InitiativeCreateInput): Promise<Initiative>;
|
|
327
|
+
update(id: string, input: InitiativeUpdateInput): Promise<Initiative>;
|
|
328
|
+
/**
|
|
329
|
+
* Verify that `parentId` names an existing `kind: 'project'` initiative
|
|
330
|
+
* AND that one of its rounds lists `childId` in itemIds. Throws
|
|
331
|
+
* `InvalidParentProjectError` on any failure. Used by `update()` when
|
|
332
|
+
* a child's `parentProjectId` is set to a non-null value.
|
|
333
|
+
*/
|
|
334
|
+
private assertValidParentProject;
|
|
335
|
+
setPhaseStatus(id: string, phaseId: string, status: InitiativePhaseStatus): Promise<Initiative>;
|
|
336
|
+
remove(id: string): Promise<boolean>;
|
|
99
337
|
/**
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
*
|
|
103
|
-
*
|
|
338
|
+
* One-time backfill helper for TaskFlow-enabled installs: scans all
|
|
339
|
+
* records, identifies those missing `kind`, and updates them through
|
|
340
|
+
* TaskFlow. Idempotent — running twice produces no change after the
|
|
341
|
+
* first pass. The legacy-JSON path runs an equivalent backfill inside
|
|
342
|
+
* `loadFromDisk()` on first load.
|
|
343
|
+
*
|
|
344
|
+
* Returns counts so callers can log/observe what happened.
|
|
104
345
|
*/
|
|
105
|
-
|
|
106
|
-
|
|
346
|
+
backfillKindAndSchema(): Promise<{
|
|
347
|
+
backfilled: number;
|
|
348
|
+
scanned: number;
|
|
349
|
+
}>;
|
|
107
350
|
/**
|
|
108
|
-
* Scan active initiatives for anything actionable.
|
|
109
|
-
*
|
|
110
|
-
* means "quiet day, don't spam the user."
|
|
351
|
+
* Scan active initiatives for anything actionable. Empty items[] means
|
|
352
|
+
* "quiet day, don't spam the user."
|
|
111
353
|
*/
|
|
112
354
|
digest(now?: Date): Digest;
|
|
113
355
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InitiativeTracker.d.ts","sourceRoot":"","sources":["../../src/core/InitiativeTracker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InitiativeTracker.d.ts","sourceRoot":"","sources":["../../src/core/InitiativeTracker.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAQrE,MAAM,MAAM,qBAAqB,GAAG,SAAS,GAAG,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,EAAE,EAAE,MAAM,CAAC;IACX,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,iDAAiD;IACjD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,qBAAqB,CAAC;IAC9B,4DAA4D;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qDAAqD;IACrD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,gBAAgB,GACxB,QAAQ,GACR,WAAW,GACX,UAAU,GACV,WAAW,GACX,QAAQ,GACR,QAAQ,GACR,eAAe,CAAC;AAEpB,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhD,MAAM,MAAM,aAAa,GACrB,SAAS,GACT,cAAc,GACd,gBAAgB,GAChB,UAAU,GACV,UAAU,GACV,QAAQ,GACR,WAAW,GACX,SAAS,CAAC;AAEd,MAAM,MAAM,WAAW,GACnB,SAAS,GACT,OAAO,GACP,aAAa,GACb,oBAAoB,GACpB,UAAU,GACV,qBAAqB,GACrB,QAAQ,GACR,WAAW,CAAC;AAEhB,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,0CAA0C;IAC1C,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,MAAM,EAAE,WAAW,CAAC;IACpB,4EAA4E;IAC5E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,CAAC;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAU;IACzB,yCAAyC;IACzC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,gBAAgB,CAAC;IACzB,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,6EAA6E;IAC7E,iBAAiB,EAAE,MAAM,CAAC;IAC1B,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,SAAS,EAAE,OAAO,CAAC;IACnB,+CAA+C;IAC/C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,0EAA0E;IAC1E,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAOlB;qEACiE;IACjE,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,sCAAsC;IACtC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB;iCAC6B;IAC7B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6EAA6E;IAC7E,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oDAAoD;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4EAA4E;IAC5E,UAAU,CAAC,EAAE,OAAO,CAAC;IAGrB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,8CAA8C;IAC9C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,+BAA+B;IAC/B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,iDAAiD;IACjD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,uCAAuC;IACvC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0EAA0E;IAC1E,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,wDAAwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iCAAiC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,sBAAsB,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACnD,oDAAoD;IACpD,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,qBAAqB,CAAA;KAAE,CAAC,CAAC;IAC9F,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IAGpB,+DAA+D;IAC/D,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IAGzB;;0EAEsE;IACtE,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;0DACsD;IACtD,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB;iFAC6E;IAC7E,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,sBAAsB,CAAC,EAAE,uBAAuB,EAAE,CAAC;IACnD,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED;;;;GAIG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IAChD,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;gBACpB,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM;CAKpD;AAED;;;GAGG;AACH,qBAAa,kBAAmB,SAAQ,KAAK;gBAC/B,OAAO,SAAkD;CAItE;AAED;;;;;GAKG;AACH,qBAAa,yBAA0B,SAAQ,KAAK;gBACtC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,GAAG,YAAY,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;IACvE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,QAA0B,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,iCAAiC,sBAAsB,CAAC;AAuDrE,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC;yDACqD;IACrD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiC;IAG7D,OAAO,CAAC,gBAAgB,CAAiC;IACzD,OAAO,CAAC,4BAA4B,CAAuB;IAM3D,OAAO,CAAC,sBAAsB,CAAwB;gBAE1C,QAAQ,EAAE,MAAM;IAK5B;;;;;OAKG;IACH,yBAAyB,CAAC,EAAE,EAAE,MAAM,IAAI,GAAG,IAAI;IAI/C;;;;;;;;OAQG;IACH,mBAAmB,CACjB,QAAQ,EAAE,gBAAgB,EAC1B,oBAAoB,EAAE,MAAM,GAC3B,IAAI;IASP,qDAAqD;IACrD,iBAAiB,IAAI,OAAO;IAI5B,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,YAAY;IAgCpB,OAAO,CAAC,UAAU;IAYlB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,wBAAwB;IAgBhC;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAgB9B;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,qBAAqB;IAU7B,+DAA+D;IAC/D,OAAO,CAAC,iBAAiB;IAgBzB;;;;;;OAMG;YACW,sBAAsB;IAyIpC;;;;;;;OAOG;YACW,cAAc;IA8B5B,OAAO,CAAC,uBAAuB;IAW/B,OAAO,CAAC,gBAAgB;IAaxB;;;;OAIG;IACG,yBAAyB,IAAI,OAAO,CAAC;QACzC,OAAO,EAAE,MAAM,CAAC;QAChB,cAAc,EAAE,MAAM,CAAC;QACvB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IA+CF,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,gBAAgB,CAAA;KAAE,GAAG,UAAU,EAAE;IAO1D,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAiBjC,MAAM,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IA+EzD,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC;IA0H3E;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IAqB1B,cAAc,CAClB,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,UAAU,CAAC;IAiChB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA2E1C;;;;;;;;OAQG;IACG,qBAAqB,IAAI,OAAO,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAgC/E;;;OAGG;IACH,MAAM,CAAC,GAAG,GAAE,IAAiB,GAAG,MAAM;CAyDvC"}
|