@neuralnomads/codenomad-dev 0.20.1-dev-20261013-8552a8f2 → 0.20.1-dev-20261013-13bb7ff5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -148,7 +148,7 @@ Remote Control reaches CodeNomad from anywhere without an inbound port, VPN or L
148
148
  - **Transport**: CodeNomad claims a random route on the device's shared [OpenTunnel](https://github.com/anomalyco/opentunnel) identity (the default profile, also used by `opencode pair --remote`). The relay forwards ciphertext only; the TLS certificate and its private key stay on this machine. The relay can still observe hostnames, connection timing and sizes. `CODENOMAD_REMOTE_CONTROL_API` selects a self-hosted OpenTunnel API.
149
149
  - **Authorization**: Every remote request must carry a paired device's credential, even with `--dangerously-skip-auth`; password login and the token bootstrap are not available remotely. Device credentials are stored hashed in `~/.config/codenomad/remote-control-devices.json`, expire after 30 days without use and can be revoked from Settings, which also ends that device's open streams.
150
150
  - **Surface**: Remote Control management, desktop window, SideCar, preview and automation endpoints stay host-only, and remote requests never receive loopback privileges.
151
- - **Lifetime**: Remote Control stops with the backend. Desktop apps keep the backend running after the last window closes only while Remote Control is enabled.
151
+ - **Lifetime**: Remote Control stops with the backend. Closing the last desktop window quits the app and its backend, Remote Control included; an enabled Remote Control resumes at the next launch.
152
152
 
153
153
  ### Self-Signed Certificates
154
154
 
@@ -278,13 +278,18 @@ export class RecurringDayFixture {
278
278
  async flush() { for (let n = 0; n < 4; n++)
279
279
  await new Promise(resolve => setTimeout(resolve, 1)); }
280
280
  // Bounded real-time wait for asynchronous storage/admission I/O; virtual time never moves here.
281
+ // Date.now is the virtual clock, so the deadline uses the monotonic real clock.
281
282
  async until(predicate, message, timeoutMs = 5_000) {
282
- const deadline = Date.now() + timeoutMs;
283
+ const deadline = performance.now() + timeoutMs;
283
284
  while (!await predicate()) {
284
- assert(Date.now() < deadline, message);
285
+ assert(performance.now() < deadline, message);
285
286
  await this.flush();
286
287
  }
287
288
  }
289
+ /** Every running Job is parked in a virtual sleep, so no background write is in flight. */
290
+ async quiescent(message = "background Jobs settled") {
291
+ await this.until(() => [...this.jobs.values()].filter(job => job.status === "running").length <= this.sleepers.size, message);
292
+ }
288
293
  async advance(to) {
289
294
  assert(to >= this.now);
290
295
  await this.flush();
@@ -1 +1 @@
1
- {"version":3,"file":"recurring-day-fixture.js","sourceRoot":"","sources":["../../../src/opencode/missions/recurring-day-fixture.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert/strict\"\nimport { execFileSync } from \"node:child_process\"\nimport { createHash, createHmac } from \"node:crypto\"\nimport { realpathSync } from \"node:fs\"\nimport { mkdir, mkdtemp, rm, writeFile } from \"node:fs/promises\"\nimport { tmpdir } from \"node:os\"\nimport path from \"node:path\"\nimport { DatabaseSync } from \"node:sqlite\"\nimport Fastify from \"fastify\"\nimport type { Plugin } from \"@opencode/plugin/effect\"\nimport { Location } from \"@opencode/schema/location\"\nimport { Session } from \"@opencode/schema/session\"\nimport { SessionInbox } from \"@opencode/schema/session-inbox\"\nimport { SessionMessage } from \"@opencode/schema/session-message\"\nimport { Form } from \"@opencode/schema/form\"\nimport { Clock, Context, Duration, Effect, Exit, Fiber, RcMap, Schema, Scope, Stream } from \"effect\"\nimport { canonicalAuthority } from \"../../missions/authority-protocol\"\nimport { physical } from \"../../missions/physical-path\"\nimport { readFamilyAuthorityIdentity } from \"../../workspaces/family-authority-claim\"\nimport { AUTOMATION_BRIDGE_PATH, createAutomationBridgeRegistration, publishAutomationBridge } from \"../automation-plugin\"\nimport { CODENOMAD_MISSIONS_RPC_ID } from \"../../missions/rpc\"\nimport { recurrenceConfigDigest, recurrenceScheduleID } from \"./native-recurrence-create\"\nimport { desktopPlugin } from \"./managed-owner-plugin\"\nimport { acquireNativeRecurrenceStore } from \"./native-recurrence-storage\"\nimport { nativeRecurrenceDue } from \"./native-recurrence-due\"\n\nexport const DAY = 86_400_000\nexport const START = Date.parse(\"2026-10-08T00:00:00Z\")\nexport const DUE = START + (8 * 60 + 15) * 60_000\ntype Handler = (input: unknown, context: unknown) => Effect.Effect<unknown, unknown>\ntype NativeTool = { name: string; options?: { namespace?: string }; execute: Handler }\ntype Job = { id: string; type: string; status: string; metadata?: Record<string, unknown>; run: Effect.Effect<string, unknown>; fiber?: Fiber.Fiber<string, unknown> }\ntype SessionInfo = typeof Session.Info.Type\ntype MessageInfo = typeof SessionMessage.Info.Type\nexport type Schedule = {\n id: string; title: string; revision: number; clock: { time: string; zone: string }; nextDueAt: number\n state: \"paused\" | \"running\" | \"interrupted\" | \"stopped\"; interruptionReason?: string | null\n pending: null | { status: string; reason?: string; trigger?: string }\n latestResult: null | { passageID: string; outcome: string; reason?: string; trigger?: string }\n history: Array<{ passageID: string; outcome: string; reason?: string; trigger?: string }>; actions: string[]\n lastError?: { code: string; at: number }\n}\n\n/** Offline native boundaries only. No recurrence runner, settlement policy or journal event producer lives here.\n * Entry point under test: managed-owner-plugin.desktopPlugin(...).effect(ctx), registering\n * recurrenceCreate / recurrenceControl / recurrenceSnapshot on codenomad.missions.\n * Spec-only wire shapes are deliberately confined to create(), control(), snapshot(). */\nexport class RecurringDayFixture {\n now = START\n autoDeliver = true\n wakeups = 0\n private wakeTimes: number[] = []\n /** `before-message`: a transient native admission refusal; nothing is admitted. */\n crash: \"after-pending\" | \"after-create\" | \"before-message\" | \"after-message\" | undefined\n /** Consecutive hits of `crash` before it clears. */\n crashRepeat = 1\n crashHits = 0\n /** Native Job.start failure: `absent` registers nothing, `registered` fails after the Job runs. */\n jobStartFailure: \"absent\" | \"registered\" | undefined\n /** Transiently fails a native read of the daily schedule Job when this returns true. */\n failScheduleJobRead: (() => boolean) | undefined\n /** Fresh native first admissions (a re-admitted ID after pruning counts again). */\n admissions = 0\n readonly tools = new Map<string, NativeTool>()\n readonly calls: Array<{ name: string; sessionID: string }> = []\n readonly jobs = new Map<string, Job>()\n readonly forms = new Map<string, typeof Form.Info.Type>()\n readonly permissions: unknown[] = []\n readonly shells: unknown[] = []\n readonly background: unknown[] = []\n readonly errors: unknown[] = []\n private handlers = new Map<string, Record<string, Handler>>()\n private hooks: Array<(event: unknown) => Effect.Effect<unknown, unknown>> = []\n private sleepers = new Set<{ at: number; wake: () => void }>()\n private busListeners = new Set<(event: unknown) => Effect.Effect<void>>()\n private scope!: Scope.Closeable\n private graph!: Context.Context<never>\n private ctx!: Plugin.Context\n private db!: DatabaseSync\n private root!: string\n private originalNow = Date.now\n private originalLocal = process.env.LOCALAPPDATA\n private bridge = Fastify({ logger: false })\n private registration = createAutomationBridgeRegistration(\"http://127.0.0.1:1\")\n private removeBridge?: () => Promise<void>\n private serial = 0\n private id = \"\"\n private config!: Record<string, unknown>\n private profileSource!: { profileID: string; executionHost: string; configYamlPath: string }\n private profileScope!: { channel: string; configIdentity: string; key: string }\n\n static async open() {\n const fixture = new RecurringDayFixture()\n try { await fixture.initialize(); return fixture }\n catch (error) { await fixture.close(); throw error }\n }\n\n private key(key: string) {\n return `plugin:${Array.from(\"codenomad.missions\").map(c => c.charCodeAt(0).toString(16).padStart(4, \"0\")).join(\"\")}:${key}`\n }\n private get(key: string): unknown {\n const row = this.db.prepare(\"SELECT value FROM kv WHERE key=?\").get(this.key(key)) as { value: string } | undefined\n return row && JSON.parse(row.value)\n }\n private put(key: string, value: unknown) {\n this.db.prepare(\"INSERT INTO kv VALUES(?,?,?,?) ON CONFLICT(key) DO UPDATE SET value=excluded.value,time_updated=excluded.time_updated\")\n .run(this.key(key), JSON.stringify(value), this.now, this.now)\n }\n private async initialize() {\n const parent = path.join(tmpdir(), \"opencode\")\n await mkdir(parent, { recursive: true })\n this.root = await mkdtemp(path.join(parent, \"recurring-day-\"))\n process.env.LOCALAPPDATA = this.root // Never discover the person's real bridge registration.\n Date.now = () => this.now\n execFileSync(\"git\", [\"init\", \"-q\", this.root])\n this.root = realpathSync(this.root)\n this.db = new DatabaseSync(path.join(this.root, \"service.sqlite\"))\n this.db.exec(`CREATE TABLE kv(key TEXT PRIMARY KEY,value TEXT NOT NULL,time_created INTEGER NOT NULL,time_updated INTEGER NOT NULL);\n CREATE TABLE session_v2(id TEXT PRIMARY KEY,parent_id TEXT,project_id TEXT,directory TEXT,workspace_id TEXT,metadata TEXT,time_suspended INTEGER);\n CREATE TABLE fixture_session(id TEXT PRIMARY KEY,info TEXT,active INTEGER);\n CREATE TABLE event_sequence(aggregate_id TEXT PRIMARY KEY,seq INTEGER,owner_id TEXT);\n CREATE TABLE event(id TEXT PRIMARY KEY,aggregate_id TEXT,seq INTEGER,type TEXT,data TEXT);\n CREATE TABLE session_message(id TEXT PRIMARY KEY,session_id TEXT,type TEXT,data TEXT,seq INTEGER);\n CREATE TABLE session_inbox(session_id TEXT,id TEXT,payload TEXT);\n CREATE TABLE session_pending(session_id TEXT);`)\n const configYamlPath = path.join(this.root, \"profile.yaml\")\n await writeFile(configYamlPath, \"server:\\n environmentVariables: {}\\n\")\n this.profileScope = { channel: \"day-test\", configIdentity: configYamlPath,\n key: createHash(\"sha256\").update(`day-test\\0${configYamlPath}`).digest(\"hex\") }\n this.profileSource = { profileID: this.profileScope.key, executionHost: \"local\", configYamlPath }\n const selected = { agent: \"worker\", model: { providerID: \"fake\", id: \"offline\" } }\n this.config = { title: \"Daily offline review\", template: \"custom\", consigne: \"Read, run a shell and report the result\",\n clock: { time: \"08:15\", zone: \"UTC\" }, profileID: this.profileScope.key, executionHost: \"local\",\n roots: [{ mode: \"git\", directory: this.root, checkout: physical(this.root), family: await readFamilyAuthorityIdentity(this.root) }],\n profiles: { coordinator: selected, roles: { specialist: selected } }, taskMode: \"native\", watchedConversationIDs: [] }\n this.bridge.post(AUTOMATION_BRIDGE_PATH, async (request, reply) => {\n if (request.headers[\"x-codenomad-automation-token\"] !== this.registration.token) return reply.code(401).send({})\n const body = request.body as { mode: string; command: { sessionID: string } }\n assert.equal(body.mode, \"recurrence-control-verify\")\n return { result: { admitted: body.command.sessionID === \"offline-human-cookie\" } }\n })\n // Authenticated backend boundary stand-in; signing/verification still use the real private bridge.\n this.bridge.post(\"/day-test/control\", async (request, reply) => {\n if (request.headers.cookie !== \"session=offline-human-cookie\") return reply.code(401).send({})\n const identity = { ...(request.body as object), sessionID: \"offline-human-cookie\", workspaceID: \"owned\",\n location: { directory: this.root }, profileSource: this.profileSource, issuedAt: this.now }\n const body = { ...identity, digest: createHash(\"sha256\").update(canonicalAuthority(identity)).digest(\"hex\") }\n const proof = createHmac(\"sha256\", this.registration.token).update(canonicalAuthority(body)).digest(\"hex\")\n return await this.rpc((request.body as { action: string }).action === \"run-now\" ? \"recurrenceRunNow\" : \"recurrenceControl\", { ...body, proof })\n })\n await this.bridge.listen({ host: \"127.0.0.1\", port: 0 })\n this.registration.url = `http://127.0.0.1:${(this.bridge.server.address() as { port: number }).port}${AUTOMATION_BRIDGE_PATH}`\n this.removeBridge = await publishAutomationBridge(this.registration)\n await this.boot()\n }\n\n private async boot() {\n this.scope = await Effect.runPromise(Scope.make())\n const tag = (name: string) => Context.Service<never, unknown>(name)\n const location = Schema.decodeUnknownSync(Location.Info)({ directory: this.root,\n project: { id: \"day-test\", directory: this.root, canonical: this.root } })\n const fixture = this\n const tx = tag(\"@day-test/Transaction\")\n let committedPending = false\n const sql = Object.assign(() => {}, { transactionService: tx,\n unsafe: (query: string, params: readonly unknown[]) => ({ withoutTransform: Effect.sync(() => {\n const statement = this.db.prepare(query)\n if (/^(INSERT|UPDATE|DELETE)/.test(query)) {\n statement.run(...params as [])\n if (this.crash === \"after-pending\" && query.startsWith(\"UPDATE kv SET value=?\")\n && typeof params[0] === \"string\" && JSON.parse(params[0]).pending) committedPending = true\n return []\n }\n return statement.all(...params as [])\n }) }) })\n const database = { db: { $client: sql, transaction: <A>(callback: () => Effect.Effect<A, unknown>) => Effect.promise(async () => {\n this.db.exec(\"BEGIN IMMEDIATE\")\n let result: A\n try { result = await Effect.runPromiseWith(this.graph)(callback().pipe(Effect.provideService(tx, {}))); this.db.exec(\"COMMIT\") }\n catch (error) { this.db.exec(\"ROLLBACK\"); throw error }\n if (committedPending) { committedPending = false; this.fail(\"after-pending\") }\n return result\n }) } }\n const storage = { get: (key: string) => Effect.sync(() => this.get(key)),\n set: (key: string, value: unknown) => Effect.sync(() => this.put(key, value)),\n remove: (key: string) => Effect.sync(() => { this.db.prepare(\"DELETE FROM kv WHERE key=?\").run(this.key(key)) }),\n scan: ({ prefix, after, limit = 100 }: { prefix: string; after?: string; limit?: number }) => Effect.sync(() => {\n const rows = this.db.prepare(\"SELECT key,value FROM kv WHERE substr(key,1,?)=? AND key>? ORDER BY key LIMIT ?\")\n .all(this.key(prefix).length, this.key(prefix), this.key(after ?? prefix), limit + 1) as Array<{ key: string; value: string }>\n const entries = rows.slice(0, limit).map(row => ({ key: row.key.slice(this.key(\"\").length), value: JSON.parse(row.value) }))\n return { entries, ...(rows.length > limit ? { next: entries.at(-1)!.key } : {}) }\n }) }\n const native = {\n get: (id: string) => Effect.sync(() => this.session(id)),\n create: (input: Record<string, unknown>) => Effect.sync(() => this.createSession(input)),\n prompt: (input: Record<string, unknown>) => Effect.sync(() => this.admit(input, \"user\")),\n synthetic: (input: Record<string, unknown>) => Effect.sync(() => this.admit(input, \"synthetic\")),\n message: (input: { messageID: string }) => Effect.sync(() => this.message(input.messageID)),\n messages: (input: { sessionID: string }) => Effect.sync(() => this.messages(input.sessionID)),\n inbox: (id: string) => Effect.sync(() => this.db.prepare(\"SELECT payload FROM session_inbox WHERE session_id=?\").all(id)\n .map(row => Schema.decodeUnknownSync(SessionInbox.Info)(JSON.parse(String(row.payload))))),\n // Native Session.active is SessionExecution.active: an Effect of the running ID set.\n active: Effect.sync(() => new Set(this.db.prepare(\"SELECT id FROM fixture_session WHERE active=1\").all().map(row => String(row.id)))),\n list: () => Effect.sync(() => ({ data: this.sessions })),\n interrupt: (id: string) => Effect.sync(() => { this.idle(id); return true }),\n cancelInbox: (input: { sessionID: string }) => Effect.sync(() => { this.db.prepare(\"DELETE FROM session_inbox WHERE session_id=?\").run(input.sessionID) }),\n environment: (input: { variables?: unknown }) => Effect.succeed(input.variables ?? {}),\n }\n const job = { get: (id: string) => id.startsWith(\"codenomad.missions.recurrence:\") && this.failScheduleJobRead?.()\n ? Effect.die(new Error(\"Injected native Job read failure\")) : Effect.sync(() => this.jobs.get(id)),\n start: (input: Job) => Effect.suspend(() => {\n if (this.jobStartFailure === \"absent\") return Effect.die(new Error(\"Injected native Job start failure\"))\n const old = this.jobs.get(input.id)\n if (old?.status === \"running\") return Effect.succeed(old)\n const record = { ...input, status: \"running\" }\n this.jobs.set(input.id, record)\n record.fiber = Effect.runForkWith(this.graph)(input.run.pipe(Effect.provideService(Clock.Clock, this.clock)))\n void Effect.runPromise(Fiber.await(record.fiber)).then(exit => {\n record.status = Exit.isSuccess(exit) ? \"completed\" : \"error\"\n if (Exit.isFailure(exit)) this.errors.push(exit.cause)\n })\n return this.jobStartFailure === \"registered\" ? Effect.die(new Error(\"Injected native Job start reply failure\")) : Effect.succeed(record)\n }), cancel: (id: string) => Effect.promise(async () => {\n const record = this.jobs.get(id)\n if (record?.fiber) await Effect.runPromise(Fiber.interrupt(record.fiber))\n this.jobs.delete(id)\n return record\n }), pendingBackground: Effect.sync(() => this.background) }\n // Native 2.0.26 shape: a borrowed Location graph holds Location services only; Database,\n // Session, Job and Bus are process-global and appear only in plugin/RPC contexts.\n const locationGraph = Context.make(tag(\"@opencode/Location\"), location).pipe(\n Context.add(tag(\"@opencode/Form\"), { list: () => Effect.sync(() => [...this.forms.values()]),\n state: (id: string) => Effect.sync(() => ({ status: this.forms.has(id) ? \"pending\" : \"answered\" })),\n reply: (input: { id: string; answer: unknown }) => Effect.sync(() => {\n Schema.decodeUnknownSync(Form.Answer)(input.answer)\n assert(this.forms.delete(input.id), \"native Form must still be pending\")\n }) }),\n Context.add(tag(\"@opencode/Permission\"), { list: () => Effect.sync(() => this.permissions) }),\n Context.add(tag(\"@opencode/Shell\"), { list: () => Effect.sync(() => this.shells) }))\n this.graph = Context.merge(locationGraph, Context.make(tag(\"@opencode/storage/Database\"), database).pipe(\n Context.add(tag(\"@opencode/Session\"), native), Context.add(tag(\"@opencode/Job\"), job),\n Context.add(tag(\"@opencode/Bus\"), { publish: () => Effect.void, listen: (listener: (event: unknown) => Effect.Effect<void>) =>\n Effect.sync(() => { this.busListeners.add(listener); return Effect.sync(() => { this.busListeners.delete(listener) }) }) }), Context.add(Clock.Clock, this.clock)))\n const map = await Effect.runPromise(RcMap.make({ idleTimeToLive: Infinity, lookup: () => Effect.sync(() => locationGraph) })\n .pipe(Effect.provideService(Scope.Scope, this.scope)))\n this.graph = Context.add(this.graph, tag(\"@opencode/example/LocationServiceMap\"), { rcMap: map,\n contextEffect: (ref: Location.Ref) => RcMap.get(map, ref), contextEffectOption: (ref: Location.Ref) => RcMap.getOption(map, ref) })\n await Effect.runPromise(Effect.scoped(RcMap.get(map, Schema.decodeUnknownSync(Location.Ref)({ directory: this.root }))))\n const registration = () => ({ dispose: Effect.void })\n const rpc = Object.assign(() => { throw new Error(\"Unexpected cross-plugin RPC\") }, {\n register: (definition: { id: string }, handlers: Record<string, Handler>) => Effect.sync(() => {\n this.handlers.set(definition.id, handlers)\n return { dispose: Effect.sync(() => { this.handlers.delete(definition.id) }), events: { emit: () => Effect.void } }\n }) })\n // Unused plugin domains are fail-fast, not permissive native API emulations.\n const unsupported = (name: string): unknown => new Proxy(() => Effect.die(new Error(`Unimplemented native fixture API: ${name}`)), {\n get: (_target, key) => key === \"then\" ? undefined : unsupported(`${name}.${String(key)}`),\n })\n const unusedDomains = Object.fromEntries([\"agent\", \"aisdk\", \"command\", \"experimental\", \"generate\", \"model\", \"provider\",\n \"integration\", \"mcp\", \"plugin\", \"permission\", \"reference\", \"skill\", \"vcs\", \"websearch\", \"worktree\", \"shell\"]\n .map(name => [name, unsupported(name)]))\n const host = new Proxy({ ...unusedDomains, location, storage, rpc, session: { ...native,\n get: (input: { sessionID: string }) => native.get(input.sessionID),\n interrupt: (input: { sessionID: string }) => Effect.sync(() => { this.idle(input.sessionID); return { interrupted: true } }),\n hook: (_name: string, callback: (event: unknown) => Effect.Effect<unknown, unknown>) => Effect.sync(() => { this.hooks.push(callback); return registration() }),\n }, tool: { transform: (callback: (draft: unknown) => void) => Effect.sync(() => {\n callback({ namespace: () => {}, list: () => [...this.tools.values()], get: (name: string) => this.tools.get(name),\n add: (tool: NativeTool) => this.tools.set(`${tool.options?.namespace ?? \"mission\"}_${tool.name}`, tool) })\n return registration()\n }) }, event: { subscribe: () => Stream.empty }, options: {}, app: {} }, {\n get: (target, key) => key in target ? Reflect.get(target, key) : unsupported(String(key)),\n })\n this.ctx = host as unknown as Plugin.Context\n await Effect.runPromiseWith(Context.add(this.graph, Scope.Scope, this.scope))(\n desktopPlugin(path.join(fixture.root, \"absent-backend-presence\")).effect(this.ctx))\n }\n\n private clock: Clock.Clock = {\n currentTimeMillisUnsafe: () => this.now, currentTimeMillis: Effect.sync(() => this.now),\n currentTimeNanosUnsafe: () => BigInt(this.now) * 1_000_000n, currentTimeNanos: Effect.sync(() => BigInt(this.now) * 1_000_000n),\n monotonicTimeNanosUnsafe: () => BigInt(this.now) * 1_000_000n, monotonicTimeNanos: Effect.sync(() => BigInt(this.now) * 1_000_000n),\n sleep: duration => Effect.callback<void>(resume => {\n const sleeper = { at: this.now + Duration.toMillis(duration), wake: () => {\n // The journey spans 32+ hours; measure the requested per-virtual-day\n // ceiling, not its total duration. Keep the maximum monotonic for Pause.\n this.wakeTimes = this.wakeTimes.filter(at => at > this.now - DAY)\n this.wakeTimes.push(this.now)\n this.wakeups = Math.max(this.wakeups, this.wakeTimes.length)\n resume(Effect.void)\n } }\n this.sleepers.add(sleeper)\n return Effect.sync(() => { this.sleepers.delete(sleeper) })\n }),\n }\n async flush() { for (let n = 0; n < 4; n++) await new Promise<void>(resolve => setTimeout(resolve, 1)) }\n // Bounded real-time wait for asynchronous storage/admission I/O; virtual time never moves here.\n async until(predicate: () => boolean | Promise<boolean>, message: string, timeoutMs = 5_000) {\n const deadline = Date.now() + timeoutMs\n while (!await predicate()) {\n assert(Date.now() < deadline, message)\n await this.flush()\n }\n }\n async advance(to: number) {\n assert(to >= this.now)\n await this.flush()\n while (true) {\n const next = Math.min(...[...this.sleepers].map(s => s.at))\n if (next > to) break\n this.now = next\n for (const sleeper of [...this.sleepers]) if (sleeper.at <= next) { this.sleepers.delete(sleeper); sleeper.wake() }\n await this.flush()\n assert(this.wakeups < 3000, \"virtual day runner is spinning\")\n }\n this.now = to\n await this.flush()\n }\n private fail(point: NonNullable<RecurringDayFixture[\"crash\"]>) {\n if (this.crash !== point) return\n if (--this.crashRepeat <= 0) { this.crash = undefined; this.crashRepeat = 1 }\n this.crashHits++\n throw new Error(`Injected crash ${point}`)\n }\n private event(sessionID: string, type: string, data: object = {}) {\n const old = this.db.prepare(\"SELECT seq FROM event_sequence WHERE aggregate_id=?\").get(sessionID)\n const seq = Number(old?.seq ?? -1) + 1\n this.db.prepare(\"INSERT INTO event VALUES(?,?,?,?,?)\").run(`evt_${sessionID}_${seq}`, sessionID, seq, type, JSON.stringify({ sessionID, ...data }))\n this.db.prepare(\"INSERT INTO event_sequence VALUES(?,?,NULL) ON CONFLICT(aggregate_id) DO UPDATE SET seq=excluded.seq\").run(sessionID, seq)\n }\n get sessions(): SessionInfo[] { return this.db.prepare(\"SELECT info FROM fixture_session\").all().map(row => Schema.decodeUnknownSync(Session.Info)(JSON.parse(String(row.info)))) }\n get coordinators() { return this.sessions.filter(s => !s.parentID && !(this.config.watchedConversationIDs as string[]).includes(s.id)) }\n get starts(): MessageInfo[] { return this.db.prepare(\"SELECT data FROM session_message WHERE type IN ('user','synthetic')\").all().map(row => Schema.decodeUnknownSync(SessionMessage.Info)(JSON.parse(String(row.data)))) }\n private session(id: string): SessionInfo {\n const row = this.db.prepare(\"SELECT info FROM fixture_session WHERE id=?\").get(id)\n if (!row) throw new Error(`Native session missing: ${id}`)\n return Schema.decodeUnknownSync(Session.Info)(JSON.parse(String(row.info)))\n }\n private message(id: string): MessageInfo | undefined {\n const row = this.db.prepare(\"SELECT data FROM session_message WHERE id=?\").get(id)\n return row && Schema.decodeUnknownSync(SessionMessage.Info)(JSON.parse(String(row.data)))\n }\n private messages(id: string): MessageInfo[] {\n return this.db.prepare(\"SELECT data FROM session_message WHERE session_id=? ORDER BY seq\").all(id).map(row => Schema.decodeUnknownSync(SessionMessage.Info)(JSON.parse(String(row.data))))\n }\n /** An ordinary user conversation to watch; created before any passage exists. */\n watch(id: string) {\n const info = Schema.decodeUnknownSync(Session.Info)({ id, title: \"Watched\", location: { directory: this.root }, projectID: \"day-test\",\n agent: \"worker\", model: { providerID: \"fake\", id: \"offline\" },\n time: { created: this.now, updated: this.now }, cost: 0, tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } } })\n this.db.prepare(\"INSERT INTO fixture_session VALUES(?,?,0)\").run(id, JSON.stringify(Schema.encodeSync(Session.Info)(info)))\n this.db.prepare(\"INSERT INTO session_v2 VALUES(?,?,?,?,NULL,?,NULL)\").run(id, null, \"day-test\", this.root, \"{}\")\n this.config.watchedConversationIDs = [id]\n }\n /** Native history pruning: a delivered message disappears; native admission would accept its ID again. */\n pruneMessage(id: string) { this.db.prepare(\"DELETE FROM session_message WHERE id=?\").run(id) }\n deleteSession(id: string) {\n this.db.prepare(\"DELETE FROM fixture_session WHERE id=?\").run(id)\n this.db.prepare(\"DELETE FROM session_v2 WHERE id=?\").run(id)\n }\n private createSession(input: Record<string, unknown>) {\n assert.equal(typeof input.id, \"string\", \"passage caller reserves the native session ID before create\")\n if (!input.parentID) this.assertWriteAhead(String(input.id))\n const old = this.sessions.find(s => s.id === input.id)\n if (old) return old\n const info = Schema.decodeUnknownSync(Session.Info)({ ...input, location: { directory: this.root }, projectID: \"day-test\",\n time: { created: this.now, updated: this.now }, cost: 0, tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } } })\n this.db.prepare(\"INSERT INTO fixture_session VALUES(?,?,0)\").run(info.id, JSON.stringify(Schema.encodeSync(Session.Info)(info)))\n this.db.prepare(\"INSERT INTO session_v2 VALUES(?,?,?,?,NULL,?,NULL)\").run(info.id, info.parentID ?? null, \"day-test\", this.root, JSON.stringify(info.metadata ?? {}))\n this.event(info.id, \"session.created.1\")\n this.fail(\"after-create\")\n return info\n }\n private admit(input: Record<string, unknown>, type: \"user\" | \"synthetic\") {\n const sessionID = String(input.sessionID), id = String(input.id)\n assert.equal(typeof input.id, \"string\", \"caller message ID required\")\n this.assertWriteAhead(id)\n this.session(sessionID)\n this.fail(\"before-message\")\n const payload = { text: input.text, ...(type === \"synthetic\" ? { description: input.description ?? \"Daily passage\", metadata: input.metadata ?? {} } : {}) }\n const old = this.db.prepare(\"SELECT payload FROM session_inbox WHERE id=?\").get(id)\n if (old) return Schema.decodeUnknownSync(SessionInbox.Info)(JSON.parse(String(old.payload)))\n if (this.message(id)) return Schema.decodeUnknownSync(SessionInbox.Info)({ id, sessionID, type, payload, delivery: \"queue\", time: { created: this.now } })\n const item = Schema.decodeUnknownSync(SessionInbox.Info)({ id, sessionID, type, payload, delivery: \"queue\", time: { created: this.now } })\n this.db.prepare(\"INSERT INTO session_inbox VALUES(?,?,?)\").run(sessionID, id, JSON.stringify(Schema.encodeSync(SessionInbox.Info)(item)))\n this.admissions++\n this.event(sessionID, \"session.inbox.enqueued.1\", { inboxID: id, item: { type, payload } })\n if (this.autoDeliver) this.deliver(sessionID)\n this.fail(\"after-message\")\n return item\n }\n deliver(sessionID: string) {\n const rows = this.db.prepare(\"SELECT id,payload FROM session_inbox WHERE session_id=?\").all(sessionID)\n for (const row of rows) {\n const item = JSON.parse(String(row.payload))\n const info = Schema.decodeUnknownSync(SessionMessage.Info)({ id: row.id, type: item.type, ...item.payload, time: { created: this.now } })\n this.db.prepare(\"INSERT INTO session_message VALUES(?,?,?,?,?)\").run(String(row.id), sessionID, item.type, JSON.stringify(Schema.encodeSync(SessionMessage.Info)(info)), this.messages(sessionID).length)\n this.event(sessionID, \"session.inbox.delivered.1\", { inboxID: row.id })\n }\n this.db.prepare(\"DELETE FROM session_inbox WHERE session_id=?\").run(sessionID)\n this.db.prepare(\"UPDATE fixture_session SET active=1 WHERE id=?\").run(sessionID)\n this.event(sessionID, \"session.execution.started.1\")\n }\n private assertWriteAhead(nativeID: string) {\n const docs = this.db.prepare(\"SELECT value FROM kv WHERE json_extract(value,'$.id')=?\").all(this.id)\n .map(row => JSON.parse(String(row.value)))\n assert(docs.some(doc => doc.pending && JSON.stringify(doc.pending).includes(nativeID)),\n `native effect ${nativeID} must follow durable pending identity CAS`)\n }\n idle(id: string, failed = false) {\n this.db.prepare(\"UPDATE fixture_session SET active=0 WHERE id=?\").run(id)\n // Native 2.0.26 shape: no persisted terminal event, only the durable idle projection.\n const info = Schema.decodeUnknownSync(SessionMessage.Info)({ id: `msg_idle_${++this.serial}`, type: \"idle\",\n outcome: failed ? \"failed\" : \"succeeded\", time: { created: this.now } })\n this.db.prepare(\"INSERT INTO session_message VALUES(?,?,?,?,?)\").run(info.id, id, \"idle\",\n JSON.stringify(Schema.encodeSync(SessionMessage.Info)(info)), this.messages(id).length)\n // Native Bus listeners run inline during publish (session.execution terminal payloads).\n for (const listener of this.busListeners) Effect.runSync(listener({ type: failed ? \"session.execution.failed\" : \"session.execution.succeeded\" }))\n }\n async model(options: { child?: boolean; report?: boolean; keepActive?: boolean; failed?: boolean } = {}) {\n const coordinator = this.coordinators.at(-1)!\n assert(coordinator, \"coordinator prompt must arrive before scripted model work\")\n const available: Record<string, unknown> = { read: {}, shell: {}, ...Object.fromEntries(this.tools) }\n const event = { sessionID: coordinator.id, system: [], tools: available }\n for (const hook of this.hooks) await Effect.runPromiseWith(this.graph)(hook(event))\n for (const name of [\"read\", \"shell\"]) { assert(name in available, `${name} cannot be whitelisted away`); this.calls.push({ name, sessionID: coordinator.id }) }\n if (options.child) {\n const child = this.createSession({ id: `ses_child_${++this.serial}`, parentID: coordinator.id })\n this.calls.push({ name: \"subagent\", sessionID: child.id }); this.idle(child.id)\n }\n if (options.report !== false) {\n await this.tool(\"mission_inspect\", {}, coordinator.id)\n await this.tool(\"mission_report\", { outcome: \"completed\", summary: \"Read and shell work completed\", final: true }, coordinator.id)\n }\n if (!options.keepActive) this.idle(coordinator.id, options.failed)\n await this.flush()\n }\n private async tool(name: string, input: unknown, sessionID: string) {\n const tool = this.tools.get(name)\n assert(tool, `backend-independent real ${name} registration missing`)\n this.calls.push({ name, sessionID })\n return Effect.runPromiseWith(this.graph)(tool.execute(input, { sessionID, messageID: `msg_model_${this.serial}`,\n id: `call_${++this.serial}`, progress: () => Effect.void, signal: new AbortController().signal }))\n }\n pendingForm() {\n const form = Schema.decodeUnknownSync(Form.Info)({ id: \"frm_day\", sessionID: this.coordinators.at(-1)!.id,\n title: \"Confirm review\", fields: [{ key: \"ok\", type: \"boolean\", required: true }] })\n this.forms.set(form.id, form)\n return form.id\n }\n async answerForm(id: string) {\n const form = Context.get(this.graph, Context.Service<never, {\n reply(input: { id: string; answer: unknown }): Effect.Effect<void>\n }>(\"@opencode/Form\"))\n await Effect.runPromise(form.reply({ id, answer: { ok: true } }))\n await this.flush()\n }\n async rpc(method: string, input: unknown = {}) {\n const handler = this.handlers.get(CODENOMAD_MISSIONS_RPC_ID)?.[method]\n assert(handler, `real plugin RPC ${method} missing without CodeNomad presence`)\n return Effect.runPromiseWith(Context.add(this.graph, Scope.Scope, this.scope))(handler(input, {\n error: (_type: string, message: string) => new Error(message), signal: new AbortController().signal,\n }))\n }\n async create() {\n const requestID = \"create_day_test\"\n this.id = recurrenceScheduleID(\"day-test\", this.root, requestID)\n const digest = recurrenceConfigDigest(this.config)\n const identity = { sessionID: \"offline-human-cookie\", workspaceID: \"owned\", location: { directory: this.root },\n scheduleID: this.id, requestID, expectedRevision: 0, action: \"create\", configDigest: digest,\n profileSource: this.profileSource, issuedAt: this.now }\n const body = { ...identity, digest: createHash(\"sha256\").update(canonicalAuthority(identity)).digest(\"hex\") }\n const transport = { ...body, proof: createHmac(\"sha256\", this.registration.token).update(canonicalAuthority(body)).digest(\"hex\") }\n await this.rpc(\"recurrenceCreate\", { id: this.id, requestID, config: this.config,\n digest, directory: this.root, scope: this.profileScope, executionHost: \"local\", transport })\n return this.snapshot()\n }\n async snapshot(): Promise<Schedule> {\n const response = await this.rpc(\"recurrenceSnapshot\") as { schedules: Schedule[] }\n const schedule = response.schedules.find(s => s.id === this.id)\n assert(schedule, \"created schedule must be present in real snapshot\")\n return schedule\n }\n /** `identity` pins an exact request, e.g. one sent with a stale revision. */\n async control(action: \"play\" | \"pause\" | \"stop\" | \"resume\" | \"run-now\" | \"check\", statusCode = 200,\n identity: { requestID?: string; expectedRevision?: number } = {}) {\n const schedule = await this.snapshot()\n const response = await this.bridge.inject({ method: \"POST\", url: \"/day-test/control\", headers: { cookie: \"session=offline-human-cookie\" },\n payload: { scheduleID: this.id, action, requestID: identity.requestID ?? `human_${++this.serial}`,\n expectedRevision: identity.expectedRevision ?? schedule.revision } })\n assert.equal(response.statusCode, statusCode, `${action}: ${response.body}`)\n await this.flush()\n return this.snapshot()\n }\n async document() {\n const store = await Effect.runPromiseWith(this.graph)(acquireNativeRecurrenceStore(this.ctx))\n return store.read(this.id) // Real recurrence store, read only; no fixture-side lifecycle/reserve/finish shortcut.\n }\n /** Crash stand-in: the durable bytes a lost write would have left behind. */\n rewriteDocument(change: (doc: Record<string, any>) => void) {\n const key = this.db.prepare(\"SELECT key FROM kv WHERE json_extract(value,'$.id')=?\").get(this.id) as { key: string }\n const doc = JSON.parse(String((this.db.prepare(\"SELECT value FROM kv WHERE key=?\").get(key.key) as { value: string }).value))\n change(doc)\n this.db.prepare(\"UPDATE kv SET value=? WHERE key=?\").run(JSON.stringify(doc), key.key)\n }\n /** One due wake exactly as a Job of that role invokes it, in the native graph. */\n async wake(settleOnly: boolean) {\n const doc = await this.document()\n const due = nativeRecurrenceDue(this.ctx, { projectID: \"day-test\", projectCanonical: this.root, directory: this.root,\n scheduleID: this.id, profileID: this.profileScope.key, executionHost: \"local\", profileSource: doc!.profileSource, settleOnly })\n return Effect.runPromiseWith(Context.add(this.graph, Scope.Scope, this.scope))(\n Effect.scoped(due(this.id, () => true, new AbortController().signal)))\n }\n async restart() {\n for (const job of this.jobs.values()) if (job.fiber) await Effect.runPromise(Fiber.interrupt(job.fiber))\n this.jobs.clear(); this.sleepers.clear()\n await Effect.runPromise(Scope.close(this.scope, Exit.void))\n this.handlers.clear(); this.tools.clear(); this.hooks = []\n this.forms.clear(); this.permissions.length = 0; this.shells.length = 0; this.background.length = 0\n await this.boot() // SQLite sessions/messages/calendar retained; never rearm from the fixture.\n }\n async close() {\n try {\n for (const job of this.jobs.values()) if (job.fiber) await Effect.runPromise(Fiber.interrupt(job.fiber))\n if (this.scope) await Effect.runPromise(Scope.close(this.scope, Exit.void))\n await this.removeBridge?.()\n await this.bridge.close()\n this.db?.close()\n if (this.root) await rm(this.root, { recursive: true, force: true })\n } finally {\n Date.now = this.originalNow\n if (this.originalLocal === undefined) delete process.env.LOCALAPPDATA\n else process.env.LOCALAPPDATA = this.originalLocal\n }\n }\n}\n"]}
1
+ {"version":3,"file":"recurring-day-fixture.js","sourceRoot":"","sources":["../../../src/opencode/missions/recurring-day-fixture.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AACtC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,OAAO,MAAM,SAAS,CAAA;AAE7B,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAA;AACpD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AACpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAA;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAA;AACvD,OAAO,EAAE,2BAA2B,EAAE,MAAM,yCAAyC,CAAA;AACrF,OAAO,EAAE,sBAAsB,EAAE,kCAAkC,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAA;AAC1H,OAAO,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAA;AACzF,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAA;AACtD,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAA;AAC1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAA;AAE7D,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAAA;AAC7B,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,sBAAsB,CAAC,CAAA;AACvD,MAAM,CAAC,MAAM,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAA;AAejD;;;yFAGyF;AACzF,MAAM,OAAO,mBAAmB;IAAhC;QACE,QAAG,GAAG,KAAK,CAAA;QACX,gBAAW,GAAG,IAAI,CAAA;QAClB,YAAO,GAAG,CAAC,CAAA;QACH,cAAS,GAAa,EAAE,CAAA;QAGhC,oDAAoD;QACpD,gBAAW,GAAG,CAAC,CAAA;QACf,cAAS,GAAG,CAAC,CAAA;QAKb,mFAAmF;QACnF,eAAU,GAAG,CAAC,CAAA;QACL,UAAK,GAAG,IAAI,GAAG,EAAsB,CAAA;QACrC,UAAK,GAA+C,EAAE,CAAA;QACtD,SAAI,GAAG,IAAI,GAAG,EAAe,CAAA;QAC7B,UAAK,GAAG,IAAI,GAAG,EAAiC,CAAA;QAChD,gBAAW,GAAc,EAAE,CAAA;QAC3B,WAAM,GAAc,EAAE,CAAA;QACtB,eAAU,GAAc,EAAE,CAAA;QAC1B,WAAM,GAAc,EAAE,CAAA;QACvB,aAAQ,GAAG,IAAI,GAAG,EAAmC,CAAA;QACrD,UAAK,GAA+D,EAAE,CAAA;QACtE,aAAQ,GAAG,IAAI,GAAG,EAAoC,CAAA;QACtD,iBAAY,GAAG,IAAI,GAAG,EAA2C,CAAA;QAMjE,gBAAW,GAAG,IAAI,CAAC,GAAG,CAAA;QACtB,kBAAa,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;QACxC,WAAM,GAAG,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;QACnC,iBAAY,GAAG,kCAAkC,CAAC,oBAAoB,CAAC,CAAA;QAEvE,WAAM,GAAG,CAAC,CAAA;QACV,OAAE,GAAG,EAAE,CAAA;QA+LP,UAAK,GAAgB;YAC3B,uBAAuB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC;YACvF,sBAAsB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAU,EAAE,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAU,CAAC;YAC/H,wBAAwB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAU,EAAE,kBAAkB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,QAAU,CAAC;YACnI,KAAK,EAAE,QAAQ,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAO,MAAM,CAAC,EAAE;gBAChD,MAAM,OAAO,GAAG,EAAE,EAAE,EAAE,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE;wBACvE,qEAAqE;wBACrE,yEAAyE;wBACzE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,CAAA;wBACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;wBAC7B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;wBAC5D,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;oBACrB,CAAC,EAAE,CAAA;gBACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;gBAC1B,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;YAC7D,CAAC,CAAC;SACH,CAAA;IAsPH,CAAC;IAhcC,MAAM,CAAC,KAAK,CAAC,IAAI;QACf,MAAM,OAAO,GAAG,IAAI,mBAAmB,EAAE,CAAA;QACzC,IAAI,CAAC;YAAC,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC;YAAC,OAAO,OAAO,CAAA;QAAC,CAAC;QAClD,OAAO,KAAK,EAAE,CAAC;YAAC,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;YAAC,MAAM,KAAK,CAAA;QAAC,CAAC;IACtD,CAAC;IAEO,GAAG,CAAC,GAAW;QACrB,OAAO,UAAU,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAA;IAC7H,CAAC;IACO,GAAG,CAAC,GAAW;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAkC,CAAA;QACnH,OAAO,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACrC,CAAC;IACO,GAAG,CAAC,GAAW,EAAE,KAAc;QACrC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uHAAuH,CAAC;aACrI,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAA;IAClE,CAAC;IACO,KAAK,CAAC,UAAU;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAU,CAAC,CAAA;QAC9C,MAAM,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;QAC9D,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAA,CAAC,wDAAwD;QAC7F,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAA;QACzB,YAAY,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC9C,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnC,IAAI,CAAC,EAAE,GAAG,IAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAA;QAClE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC;;;;;;;qDAOoC,CAAC,CAAA;QAClD,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QAC3D,MAAM,SAAS,CAAC,cAAc,EAAE,uCAAuC,CAAC,CAAA;QACxE,IAAI,CAAC,YAAY,GAAG,EAAE,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc;YACvE,GAAG,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,aAAa,cAAc,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;QACjF,IAAI,CAAC,aAAa,GAAG,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,cAAc,EAAE,CAAA;QACjG,MAAM,QAAQ,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,CAAA;QAClF,IAAI,CAAC,MAAM,GAAG,EAAE,KAAK,EAAE,sBAAsB,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,yCAAyC;YACpH,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO;YAC/F,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,2BAA2B,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACnI,QAAQ,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE,EAAE,EAAE,CAAA;QACxH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAChE,IAAI,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,KAAK;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAChH,MAAM,IAAI,GAAG,OAAO,CAAC,IAAwD,CAAA;YAC7E,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,2BAA2B,CAAC,CAAA;YACpD,OAAO,EAAE,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,sBAAsB,EAAE,EAAE,CAAA;QACpF,CAAC,CAAC,CAAA;QACF,mGAAmG;QACnG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAC7D,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,8BAA8B;gBAAE,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YAC9F,MAAM,QAAQ,GAAG,EAAE,GAAI,OAAO,CAAC,IAAe,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,OAAO;gBACrG,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAA;YAC7F,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;YAC7G,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;YACzG,OAAO,MAAM,IAAI,CAAC,GAAG,CAAE,OAAO,CAAC,IAA2B,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,mBAAmB,EAAE,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;QAClJ,CAAC,CAAC,CAAA;QACF,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;QACxD,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,oBAAqB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAuB,CAAC,IAAI,GAAG,sBAAsB,EAAE,CAAA;QAC9H,IAAI,CAAC,YAAY,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QACpE,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;IACnB,CAAC;IAEO,KAAK,CAAC,IAAI;QAChB,IAAI,CAAC,KAAK,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAClD,MAAM,GAAG,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAiB,IAAI,CAAC,CAAA;QACnE,MAAM,QAAQ,GAAG,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI;YAC7E,OAAO,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;QAC5E,MAAM,OAAO,GAAG,IAAI,CAAA;QACpB,MAAM,EAAE,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAA;QACvC,IAAI,gBAAgB,GAAG,KAAK,CAAA;QAC5B,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAE,CAAC,EAAE,EAAE,kBAAkB,EAAE,EAAE;YAC1D,MAAM,EAAE,CAAC,KAAa,EAAE,MAA0B,EAAE,EAAE,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC3F,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;oBACxC,IAAI,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC1C,SAAS,CAAC,GAAG,CAAC,GAAG,MAAY,CAAC,CAAA;wBAC9B,IAAI,IAAI,CAAC,KAAK,KAAK,eAAe,IAAI,KAAK,CAAC,UAAU,CAAC,uBAAuB,CAAC;+BAC1E,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO;4BAAE,gBAAgB,GAAG,IAAI,CAAA;wBAC5F,OAAO,EAAE,CAAA;oBACX,CAAC;oBACD,OAAO,SAAS,CAAC,GAAG,CAAC,GAAG,MAAY,CAAC,CAAA;gBACvC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;QACV,MAAM,QAAQ,GAAG,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,CAAI,QAAyC,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;oBAC9H,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAA;oBAC/B,IAAI,MAAS,CAAA;oBACb,IAAI,CAAC;wBAAC,MAAM,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;wBAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;oBAAC,CAAC;oBAChI,OAAO,KAAK,EAAE,CAAC;wBAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;wBAAC,MAAM,KAAK,CAAA;oBAAC,CAAC;oBACvD,IAAI,gBAAgB,EAAE,CAAC;wBAAC,gBAAgB,GAAG,KAAK,CAAC;wBAAC,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;oBAAC,CAAC;oBAC9E,OAAO,MAAM,CAAA;gBACf,CAAC,CAAC,EAAE,EAAE,CAAA;QACN,MAAM,OAAO,GAAG,EAAE,GAAG,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACtE,GAAG,EAAE,CAAC,GAAW,EAAE,KAAc,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAC7E,MAAM,EAAE,CAAC,GAAW,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4BAA4B,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC;YAChH,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,EAAsD,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC7G,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iFAAiF,CAAC;qBAC5G,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,MAAM,CAAC,EAAE,KAAK,GAAG,CAAC,CAA0C,CAAA;gBAChI,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;gBAC5H,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;YACnF,CAAC,CAAC,EAAE,CAAA;QACN,MAAM,MAAM,GAAG;YACb,GAAG,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACxD,MAAM,EAAE,CAAC,KAA8B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YACxF,MAAM,EAAE,CAAC,KAA8B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YACxF,SAAS,EAAE,CAAC,KAA8B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAChG,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC3F,QAAQ,EAAE,CAAC,KAA4B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC7F,KAAK,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sDAAsD,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;iBACrH,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5F,qFAAqF;YACrF,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrI,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxD,SAAS,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,CAAA,CAAC,CAAC,CAAC;YAC5E,WAAW,EAAE,CAAC,KAA4B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA,CAAC,CAAC,CAAC;YAC1J,WAAW,EAAE,CAAC,KAA8B,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,SAAS,IAAI,EAAE,CAAC;SACvF,CAAA;QACD,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,gCAAgC,CAAC,IAAI,IAAI,CAAC,mBAAmB,EAAE,EAAE;gBAC9G,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACpG,KAAK,EAAE,CAAC,KAAU,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;gBACzC,IAAI,IAAI,CAAC,eAAe,KAAK,QAAQ;oBAAE,OAAO,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC,CAAA;gBACxG,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACnC,IAAI,GAAG,EAAE,MAAM,KAAK,SAAS;oBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBACzD,MAAM,MAAM,GAAG,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;gBAC9C,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,CAAC,CAAA;gBAC/B,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;gBAC7G,KAAK,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;oBAC5D,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAA;oBAC5D,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;wBAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;gBACxD,CAAC,CAAC,CAAA;gBACF,OAAO,IAAI,CAAC,eAAe,KAAK,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YAC1I,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE;gBACpD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBAChC,IAAI,MAAM,EAAE,KAAK;oBAAE,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;gBACzE,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;gBACpB,OAAO,MAAM,CAAA;YACf,CAAC,CAAC,EAAE,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAA;QAC7D,yFAAyF;QACzF,kFAAkF;QAClF,MAAM,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC1F,KAAK,EAAE,CAAC,EAAU,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;YACnG,KAAK,EAAE,CAAC,KAAsC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBAClE,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;gBACnD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,mCAAmC,CAAC,CAAA;YAC1E,CAAC,CAAC,EAAE,CAAC,EACP,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAC7F,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAA;QACtF,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,EAAE,QAAQ,CAAC,CAAC,IAAI,CACtG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,CAAC,EACrF,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,QAAiD,EAAE,EAAE,CAC5H,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACvK,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;aACzH,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QACxD,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,sCAAsC,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG;YAC5F,aAAa,EAAE,CAAC,GAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,mBAAmB,EAAE,CAAC,GAAiB,EAAE,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;QACrI,MAAM,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,MAAM,CAAC,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QACxH,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAA;QACrD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAA,CAAC,CAAC,EAAE;YAClF,QAAQ,EAAE,CAAC,UAA0B,EAAE,QAAiC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;gBAC5F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,QAAQ,CAAC,CAAA;gBAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAA;YACrH,CAAC,CAAC;SAAE,CAAC,CAAA;QACP,6EAA6E;QAC7E,MAAM,WAAW,GAAG,CAAC,IAAY,EAAW,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,qCAAqC,IAAI,EAAE,CAAC,CAAC,EAAE;YACjI,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,IAAI,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;SAC1F,CAAC,CAAA;QACF,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU;YACpH,aAAa,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC;aAC3G,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;QAC1C,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,EAAE,GAAG,MAAM;gBACrF,GAAG,EAAE,CAAC,KAA4B,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC;gBAClE,SAAS,EAAE,CAAC,KAA4B,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAA,CAAC,CAAC,CAAC;gBAC5H,IAAI,EAAE,CAAC,KAAa,EAAE,QAA6D,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,YAAY,EAAE,CAAA,CAAC,CAAC,CAAC;aAChK,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,CAAC,QAAkC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE;oBAC7E,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;wBAC/G,GAAG,EAAE,CAAC,IAAgB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,SAAS,IAAI,SAAS,IAAI,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;oBAC5G,OAAO,YAAY,EAAE,CAAA;gBACvB,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,EAAE;YACtE,GAAG,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;SAC1F,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,GAAG,IAAiC,CAAA;QAC5C,MAAM,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAC3E,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;IACvF,CAAC;IAmBD,KAAK,CAAC,KAAK,KAAK,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QAAE,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC;IACxG,gGAAgG;IAChG,gFAAgF;IAChF,KAAK,CAAC,KAAK,CAAC,SAA2C,EAAE,OAAe,EAAE,SAAS,GAAG,KAAK;QACzF,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS,CAAA;QAC9C,OAAO,CAAC,MAAM,SAAS,EAAE,EAAE,CAAC;YAC1B,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAA;YAC7C,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QACpB,CAAC;IACH,CAAC;IACD,2FAA2F;IAC3F,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,yBAAyB;QACjD,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IAC/H,CAAC;IACD,KAAK,CAAC,OAAO,CAAC,EAAU;QACtB,MAAM,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAA;QACtB,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAClB,OAAO,IAAI,EAAE,CAAC;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;YAC3D,IAAI,IAAI,GAAG,EAAE;gBAAE,MAAK;YACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAA;YACf,KAAK,MAAM,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAAE,IAAI,OAAO,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;oBAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAAC,OAAO,CAAC,IAAI,EAAE,CAAA;gBAAC,CAAC;YACnH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;YAClB,MAAM,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,EAAE,gCAAgC,CAAC,CAAA;QAC/D,CAAC;QACD,IAAI,CAAC,GAAG,GAAG,EAAE,CAAA;QACb,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IACO,IAAI,CAAC,KAAgD;QAC3D,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE,OAAM;QAChC,IAAI,EAAE,IAAI,CAAC,WAAW,IAAI,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YAAC,IAAI,CAAC,WAAW,GAAG,CAAC,CAAA;QAAC,CAAC;QAC7E,IAAI,CAAC,SAAS,EAAE,CAAA;QAChB,MAAM,IAAI,KAAK,CAAC,kBAAkB,KAAK,EAAE,CAAC,CAAA;IAC5C,CAAC;IACO,KAAK,CAAC,SAAiB,EAAE,IAAY,EAAE,OAAe,EAAE;QAC9D,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qDAAqD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACjG,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACtC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qCAAqC,CAAC,CAAC,GAAG,CAAC,OAAO,SAAS,IAAI,GAAG,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC,CAAA;QACnJ,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,sGAAsG,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;IAC7I,CAAC;IACD,IAAI,QAAQ,KAAoB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC;IACnL,IAAI,YAAY,KAAK,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAE,IAAI,CAAC,MAAM,CAAC,sBAAmC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA,CAAC,CAAC;IACxI,IAAI,MAAM,KAAoB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,qEAAqE,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA,CAAC,CAAC;IACnN,OAAO,CAAC,EAAU;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClF,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAA;QAC1D,OAAO,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC7E,CAAC;IACO,OAAO,CAAC,EAAU;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QAClF,OAAO,GAAG,IAAI,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IAC3F,CAAC;IACO,QAAQ,CAAC,EAAU;QACzB,OAAO,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kEAAkE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5L,CAAC;IACD,iFAAiF;IACjF,KAAK,CAAC,EAAU;QACd,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU;YACnI,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE;YAC7D,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QACzI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC3H,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAChH,IAAI,CAAC,MAAM,CAAC,sBAAsB,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3C,CAAC;IACD,0GAA0G;IAC1G,YAAY,CAAC,EAAU,IAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA,CAAC,CAAC;IAC9F,aAAa,CAAC,EAAU;QACtB,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,wCAAwC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACjE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC9D,CAAC;IACO,aAAa,CAAC,KAA8B;QAClD,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,6DAA6D,CAAC,CAAA;QACtG,IAAI,CAAC,KAAK,CAAC,QAAQ;YAAE,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAA;QAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAA;QACtD,IAAI,GAAG;YAAE,OAAO,GAAG,CAAA;QACnB,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,UAAU;YACvH,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAA;QACzI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAChI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,oDAAoD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,CAAA;QACrK,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,mBAAmB,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACzB,OAAO,IAAI,CAAA;IACb,CAAC;IACO,KAAK,CAAC,KAA8B,EAAE,IAA0B;QACtE,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAChE,MAAM,CAAC,KAAK,CAAC,OAAO,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,4BAA4B,CAAC,CAAA;QACrE,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAA;QACzB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QACvB,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;QAC3B,MAAM,OAAO,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,eAAe,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAA;QAC5J,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACnF,IAAI,GAAG;YAAE,OAAO,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAA;QAC5F,IAAI,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAAE,OAAO,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1J,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1I,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yCAAyC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACzI,IAAI,CAAC,UAAU,EAAE,CAAA;QACjB,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,0BAA0B,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,CAAC,CAAA;QAC3F,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;QAC7C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC1B,OAAO,IAAI,CAAA;IACb,CAAC;IACD,OAAO,CAAC,SAAiB;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACtG,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAA;YAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;YACzI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAA;YACzM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,2BAA2B,EAAE,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;QACzE,CAAC;QACD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC9E,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAChF,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAA;IACtD,CAAC;IACO,gBAAgB,CAAC,QAAgB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;aACjG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,IAAI,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,EACpF,iBAAiB,QAAQ,2CAA2C,CAAC,CAAA;IACzE,CAAC;IACD,IAAI,CAAC,EAAU,EAAE,MAAM,GAAG,KAAK;QAC7B,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gDAAgD,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACzE,sFAAsF;QACtF,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM;YACxG,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QAC1E,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,+CAA+C,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,EAAE,MAAM,EACtF,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;QACzF,wFAAwF;QACxF,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,YAAY;YAAE,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,6BAA6B,EAAE,CAAC,CAAC,CAAA;IACnJ,CAAC;IACD,KAAK,CAAC,KAAK,CAAC,UAAyF,EAAE;QACrG,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAA;QAC7C,MAAM,CAAC,WAAW,EAAE,2DAA2D,CAAC,CAAA;QAChF,MAAM,SAAS,GAA4B,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAA;QACrG,MAAM,KAAK,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAA;QACzE,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK;YAAE,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QACnF,KAAK,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;YAAC,MAAM,CAAC,IAAI,IAAI,SAAS,EAAE,GAAG,IAAI,6BAA6B,CAAC,CAAC;YAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAA;QAAC,CAAC;QAC/J,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,CAAA;YAChG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACjF,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;YAC7B,MAAM,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;YACtD,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,+BAA+B,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,EAAE,CAAC,CAAA;QACpI,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,UAAU;YAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,OAAO,CAAC,MAAM,CAAC,CAAA;QAClE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IACO,KAAK,CAAC,IAAI,CAAC,IAAY,EAAE,KAAc,EAAE,SAAiB;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACjC,MAAM,CAAC,IAAI,EAAE,4BAA4B,IAAI,uBAAuB,CAAC,CAAA;QACrE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;QACpC,OAAO,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,IAAI,CAAC,MAAM,EAAE;YAC7G,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IACtG,CAAC;IACD,WAAW;QACT,MAAM,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,EAAE;YACvG,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;QACtF,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QAC7B,OAAO,IAAI,CAAC,EAAE,CAAA;IAChB,CAAC;IACD,KAAK,CAAC,UAAU,CAAC,EAAU;QACzB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,OAAO,CAEjD,gBAAgB,CAAC,CAAC,CAAA;QACrB,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;QACjE,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;IACpB,CAAC;IACD,KAAK,CAAC,GAAG,CAAC,MAAc,EAAE,QAAiB,EAAE;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,yBAAyB,CAAC,EAAE,CAAC,MAAM,CAAC,CAAA;QACtE,MAAM,CAAC,OAAO,EAAE,mBAAmB,MAAM,qCAAqC,CAAC,CAAA;QAC/E,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE;YAC5F,KAAK,EAAE,CAAC,KAAa,EAAE,OAAe,EAAE,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM;SACpG,CAAC,CAAC,CAAA;IACL,CAAC;IACD,KAAK,CAAC,MAAM;QACV,MAAM,SAAS,GAAG,iBAAiB,CAAA;QACnC,IAAI,CAAC,EAAE,GAAG,oBAAoB,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;QAChE,MAAM,MAAM,GAAG,sBAAsB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAClD,MAAM,QAAQ,GAAG,EAAE,SAAS,EAAE,sBAAsB,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE;YAC5G,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM;YAC3F,aAAa,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,IAAI,CAAC,GAAG,EAAE,CAAA;QACzD,MAAM,IAAI,GAAG,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;QAC7G,MAAM,SAAS,GAAG,EAAE,GAAG,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;QAClI,MAAM,IAAI,CAAC,GAAG,CAAC,kBAAkB,EAAE,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM;YAC9E,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAA;QAC9F,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,oBAAoB,CAA8B,CAAA;QAClF,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC,CAAA;QAC/D,MAAM,CAAC,QAAQ,EAAE,mDAAmD,CAAC,CAAA;QACrE,OAAO,QAAQ,CAAA;IACjB,CAAC;IACD,6EAA6E;IAC7E,KAAK,CAAC,OAAO,CAAC,MAAkE,EAAE,UAAU,GAAG,GAAG,EAChG,WAA8D,EAAE;QAChE,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACtC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,mBAAmB,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,8BAA8B,EAAE;YACvI,OAAO,EAAE,EAAE,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,IAAI,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE;gBAC/F,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAA;QACzE,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,KAAK,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5E,MAAM,IAAI,CAAC,KAAK,EAAE,CAAA;QAClB,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;IACxB,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAA;QAC7F,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA,CAAC,uFAAuF;IACpH,CAAC;IACD,6EAA6E;IAC7E,eAAe,CAAC,MAA0C;QACxD,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,uDAAuD,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAoB,CAAA;QACpH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,kCAAkC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAuB,CAAC,KAAK,CAAC,CAAC,CAAA;QAC7H,MAAM,CAAC,GAAG,CAAC,CAAA;QACX,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAA;IACxF,CAAC;IACD,kFAAkF;IAClF,KAAK,CAAC,IAAI,CAAC,UAAmB;QAC5B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,EAAE,CAAA;QACjC,MAAM,GAAG,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,gBAAgB,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,IAAI;YAClH,UAAU,EAAE,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,EAAE,aAAa,EAAE,GAAI,CAAC,aAAa,EAAE,UAAU,EAAE,CAAC,CAAA;QACjI,OAAO,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5E,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC1E,CAAC;IACD,KAAK,CAAC,OAAO;QACX,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,IAAI,GAAG,CAAC,KAAK;gBAAE,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;QACxG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;QACxC,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;QAC3D,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAA;QAC1D,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAAC,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAA;QACnG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA,CAAC,4EAA4E;IAChG,CAAC;IACD,KAAK,CAAC,KAAK;QACT,IAAI,CAAC;YACH,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,IAAI,GAAG,CAAC,KAAK;oBAAE,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;YACxG,IAAI,IAAI,CAAC,KAAK;gBAAE,MAAM,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;YAC3E,MAAM,IAAI,CAAC,YAAY,EAAE,EAAE,CAAA;YAC3B,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;YACzB,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,CAAA;YAChB,IAAI,IAAI,CAAC,IAAI;gBAAE,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACtE,CAAC;gBAAS,CAAC;YACT,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,CAAA;YAC3B,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAA;;gBAChE,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAA;QACpD,CAAC;IACH,CAAC;CACF","sourcesContent":["import assert from \"node:assert/strict\"\nimport { execFileSync } from \"node:child_process\"\nimport { createHash, createHmac } from \"node:crypto\"\nimport { realpathSync } from \"node:fs\"\nimport { mkdir, mkdtemp, rm, writeFile } from \"node:fs/promises\"\nimport { tmpdir } from \"node:os\"\nimport path from \"node:path\"\nimport { DatabaseSync } from \"node:sqlite\"\nimport Fastify from \"fastify\"\nimport type { Plugin } from \"@opencode/plugin/effect\"\nimport { Location } from \"@opencode/schema/location\"\nimport { Session } from \"@opencode/schema/session\"\nimport { SessionInbox } from \"@opencode/schema/session-inbox\"\nimport { SessionMessage } from \"@opencode/schema/session-message\"\nimport { Form } from \"@opencode/schema/form\"\nimport { Clock, Context, Duration, Effect, Exit, Fiber, RcMap, Schema, Scope, Stream } from \"effect\"\nimport { canonicalAuthority } from \"../../missions/authority-protocol\"\nimport { physical } from \"../../missions/physical-path\"\nimport { readFamilyAuthorityIdentity } from \"../../workspaces/family-authority-claim\"\nimport { AUTOMATION_BRIDGE_PATH, createAutomationBridgeRegistration, publishAutomationBridge } from \"../automation-plugin\"\nimport { CODENOMAD_MISSIONS_RPC_ID } from \"../../missions/rpc\"\nimport { recurrenceConfigDigest, recurrenceScheduleID } from \"./native-recurrence-create\"\nimport { desktopPlugin } from \"./managed-owner-plugin\"\nimport { acquireNativeRecurrenceStore } from \"./native-recurrence-storage\"\nimport { nativeRecurrenceDue } from \"./native-recurrence-due\"\n\nexport const DAY = 86_400_000\nexport const START = Date.parse(\"2026-10-08T00:00:00Z\")\nexport const DUE = START + (8 * 60 + 15) * 60_000\ntype Handler = (input: unknown, context: unknown) => Effect.Effect<unknown, unknown>\ntype NativeTool = { name: string; options?: { namespace?: string }; execute: Handler }\ntype Job = { id: string; type: string; status: string; metadata?: Record<string, unknown>; run: Effect.Effect<string, unknown>; fiber?: Fiber.Fiber<string, unknown> }\ntype SessionInfo = typeof Session.Info.Type\ntype MessageInfo = typeof SessionMessage.Info.Type\nexport type Schedule = {\n id: string; title: string; revision: number; clock: { time: string; zone: string }; nextDueAt: number\n state: \"paused\" | \"running\" | \"interrupted\" | \"stopped\"; interruptionReason?: string | null\n pending: null | { status: string; reason?: string; trigger?: string }\n latestResult: null | { passageID: string; outcome: string; reason?: string; trigger?: string }\n history: Array<{ passageID: string; outcome: string; reason?: string; trigger?: string }>; actions: string[]\n lastError?: { code: string; at: number }\n}\n\n/** Offline native boundaries only. No recurrence runner, settlement policy or journal event producer lives here.\n * Entry point under test: managed-owner-plugin.desktopPlugin(...).effect(ctx), registering\n * recurrenceCreate / recurrenceControl / recurrenceSnapshot on codenomad.missions.\n * Spec-only wire shapes are deliberately confined to create(), control(), snapshot(). */\nexport class RecurringDayFixture {\n now = START\n autoDeliver = true\n wakeups = 0\n private wakeTimes: number[] = []\n /** `before-message`: a transient native admission refusal; nothing is admitted. */\n crash: \"after-pending\" | \"after-create\" | \"before-message\" | \"after-message\" | undefined\n /** Consecutive hits of `crash` before it clears. */\n crashRepeat = 1\n crashHits = 0\n /** Native Job.start failure: `absent` registers nothing, `registered` fails after the Job runs. */\n jobStartFailure: \"absent\" | \"registered\" | undefined\n /** Transiently fails a native read of the daily schedule Job when this returns true. */\n failScheduleJobRead: (() => boolean) | undefined\n /** Fresh native first admissions (a re-admitted ID after pruning counts again). */\n admissions = 0\n readonly tools = new Map<string, NativeTool>()\n readonly calls: Array<{ name: string; sessionID: string }> = []\n readonly jobs = new Map<string, Job>()\n readonly forms = new Map<string, typeof Form.Info.Type>()\n readonly permissions: unknown[] = []\n readonly shells: unknown[] = []\n readonly background: unknown[] = []\n readonly errors: unknown[] = []\n private handlers = new Map<string, Record<string, Handler>>()\n private hooks: Array<(event: unknown) => Effect.Effect<unknown, unknown>> = []\n private sleepers = new Set<{ at: number; wake: () => void }>()\n private busListeners = new Set<(event: unknown) => Effect.Effect<void>>()\n private scope!: Scope.Closeable\n private graph!: Context.Context<never>\n private ctx!: Plugin.Context\n private db!: DatabaseSync\n private root!: string\n private originalNow = Date.now\n private originalLocal = process.env.LOCALAPPDATA\n private bridge = Fastify({ logger: false })\n private registration = createAutomationBridgeRegistration(\"http://127.0.0.1:1\")\n private removeBridge?: () => Promise<void>\n private serial = 0\n private id = \"\"\n private config!: Record<string, unknown>\n private profileSource!: { profileID: string; executionHost: string; configYamlPath: string }\n private profileScope!: { channel: string; configIdentity: string; key: string }\n\n static async open() {\n const fixture = new RecurringDayFixture()\n try { await fixture.initialize(); return fixture }\n catch (error) { await fixture.close(); throw error }\n }\n\n private key(key: string) {\n return `plugin:${Array.from(\"codenomad.missions\").map(c => c.charCodeAt(0).toString(16).padStart(4, \"0\")).join(\"\")}:${key}`\n }\n private get(key: string): unknown {\n const row = this.db.prepare(\"SELECT value FROM kv WHERE key=?\").get(this.key(key)) as { value: string } | undefined\n return row && JSON.parse(row.value)\n }\n private put(key: string, value: unknown) {\n this.db.prepare(\"INSERT INTO kv VALUES(?,?,?,?) ON CONFLICT(key) DO UPDATE SET value=excluded.value,time_updated=excluded.time_updated\")\n .run(this.key(key), JSON.stringify(value), this.now, this.now)\n }\n private async initialize() {\n const parent = path.join(tmpdir(), \"opencode\")\n await mkdir(parent, { recursive: true })\n this.root = await mkdtemp(path.join(parent, \"recurring-day-\"))\n process.env.LOCALAPPDATA = this.root // Never discover the person's real bridge registration.\n Date.now = () => this.now\n execFileSync(\"git\", [\"init\", \"-q\", this.root])\n this.root = realpathSync(this.root)\n this.db = new DatabaseSync(path.join(this.root, \"service.sqlite\"))\n this.db.exec(`CREATE TABLE kv(key TEXT PRIMARY KEY,value TEXT NOT NULL,time_created INTEGER NOT NULL,time_updated INTEGER NOT NULL);\n CREATE TABLE session_v2(id TEXT PRIMARY KEY,parent_id TEXT,project_id TEXT,directory TEXT,workspace_id TEXT,metadata TEXT,time_suspended INTEGER);\n CREATE TABLE fixture_session(id TEXT PRIMARY KEY,info TEXT,active INTEGER);\n CREATE TABLE event_sequence(aggregate_id TEXT PRIMARY KEY,seq INTEGER,owner_id TEXT);\n CREATE TABLE event(id TEXT PRIMARY KEY,aggregate_id TEXT,seq INTEGER,type TEXT,data TEXT);\n CREATE TABLE session_message(id TEXT PRIMARY KEY,session_id TEXT,type TEXT,data TEXT,seq INTEGER);\n CREATE TABLE session_inbox(session_id TEXT,id TEXT,payload TEXT);\n CREATE TABLE session_pending(session_id TEXT);`)\n const configYamlPath = path.join(this.root, \"profile.yaml\")\n await writeFile(configYamlPath, \"server:\\n environmentVariables: {}\\n\")\n this.profileScope = { channel: \"day-test\", configIdentity: configYamlPath,\n key: createHash(\"sha256\").update(`day-test\\0${configYamlPath}`).digest(\"hex\") }\n this.profileSource = { profileID: this.profileScope.key, executionHost: \"local\", configYamlPath }\n const selected = { agent: \"worker\", model: { providerID: \"fake\", id: \"offline\" } }\n this.config = { title: \"Daily offline review\", template: \"custom\", consigne: \"Read, run a shell and report the result\",\n clock: { time: \"08:15\", zone: \"UTC\" }, profileID: this.profileScope.key, executionHost: \"local\",\n roots: [{ mode: \"git\", directory: this.root, checkout: physical(this.root), family: await readFamilyAuthorityIdentity(this.root) }],\n profiles: { coordinator: selected, roles: { specialist: selected } }, taskMode: \"native\", watchedConversationIDs: [] }\n this.bridge.post(AUTOMATION_BRIDGE_PATH, async (request, reply) => {\n if (request.headers[\"x-codenomad-automation-token\"] !== this.registration.token) return reply.code(401).send({})\n const body = request.body as { mode: string; command: { sessionID: string } }\n assert.equal(body.mode, \"recurrence-control-verify\")\n return { result: { admitted: body.command.sessionID === \"offline-human-cookie\" } }\n })\n // Authenticated backend boundary stand-in; signing/verification still use the real private bridge.\n this.bridge.post(\"/day-test/control\", async (request, reply) => {\n if (request.headers.cookie !== \"session=offline-human-cookie\") return reply.code(401).send({})\n const identity = { ...(request.body as object), sessionID: \"offline-human-cookie\", workspaceID: \"owned\",\n location: { directory: this.root }, profileSource: this.profileSource, issuedAt: this.now }\n const body = { ...identity, digest: createHash(\"sha256\").update(canonicalAuthority(identity)).digest(\"hex\") }\n const proof = createHmac(\"sha256\", this.registration.token).update(canonicalAuthority(body)).digest(\"hex\")\n return await this.rpc((request.body as { action: string }).action === \"run-now\" ? \"recurrenceRunNow\" : \"recurrenceControl\", { ...body, proof })\n })\n await this.bridge.listen({ host: \"127.0.0.1\", port: 0 })\n this.registration.url = `http://127.0.0.1:${(this.bridge.server.address() as { port: number }).port}${AUTOMATION_BRIDGE_PATH}`\n this.removeBridge = await publishAutomationBridge(this.registration)\n await this.boot()\n }\n\n private async boot() {\n this.scope = await Effect.runPromise(Scope.make())\n const tag = (name: string) => Context.Service<never, unknown>(name)\n const location = Schema.decodeUnknownSync(Location.Info)({ directory: this.root,\n project: { id: \"day-test\", directory: this.root, canonical: this.root } })\n const fixture = this\n const tx = tag(\"@day-test/Transaction\")\n let committedPending = false\n const sql = Object.assign(() => {}, { transactionService: tx,\n unsafe: (query: string, params: readonly unknown[]) => ({ withoutTransform: Effect.sync(() => {\n const statement = this.db.prepare(query)\n if (/^(INSERT|UPDATE|DELETE)/.test(query)) {\n statement.run(...params as [])\n if (this.crash === \"after-pending\" && query.startsWith(\"UPDATE kv SET value=?\")\n && typeof params[0] === \"string\" && JSON.parse(params[0]).pending) committedPending = true\n return []\n }\n return statement.all(...params as [])\n }) }) })\n const database = { db: { $client: sql, transaction: <A>(callback: () => Effect.Effect<A, unknown>) => Effect.promise(async () => {\n this.db.exec(\"BEGIN IMMEDIATE\")\n let result: A\n try { result = await Effect.runPromiseWith(this.graph)(callback().pipe(Effect.provideService(tx, {}))); this.db.exec(\"COMMIT\") }\n catch (error) { this.db.exec(\"ROLLBACK\"); throw error }\n if (committedPending) { committedPending = false; this.fail(\"after-pending\") }\n return result\n }) } }\n const storage = { get: (key: string) => Effect.sync(() => this.get(key)),\n set: (key: string, value: unknown) => Effect.sync(() => this.put(key, value)),\n remove: (key: string) => Effect.sync(() => { this.db.prepare(\"DELETE FROM kv WHERE key=?\").run(this.key(key)) }),\n scan: ({ prefix, after, limit = 100 }: { prefix: string; after?: string; limit?: number }) => Effect.sync(() => {\n const rows = this.db.prepare(\"SELECT key,value FROM kv WHERE substr(key,1,?)=? AND key>? ORDER BY key LIMIT ?\")\n .all(this.key(prefix).length, this.key(prefix), this.key(after ?? prefix), limit + 1) as Array<{ key: string; value: string }>\n const entries = rows.slice(0, limit).map(row => ({ key: row.key.slice(this.key(\"\").length), value: JSON.parse(row.value) }))\n return { entries, ...(rows.length > limit ? { next: entries.at(-1)!.key } : {}) }\n }) }\n const native = {\n get: (id: string) => Effect.sync(() => this.session(id)),\n create: (input: Record<string, unknown>) => Effect.sync(() => this.createSession(input)),\n prompt: (input: Record<string, unknown>) => Effect.sync(() => this.admit(input, \"user\")),\n synthetic: (input: Record<string, unknown>) => Effect.sync(() => this.admit(input, \"synthetic\")),\n message: (input: { messageID: string }) => Effect.sync(() => this.message(input.messageID)),\n messages: (input: { sessionID: string }) => Effect.sync(() => this.messages(input.sessionID)),\n inbox: (id: string) => Effect.sync(() => this.db.prepare(\"SELECT payload FROM session_inbox WHERE session_id=?\").all(id)\n .map(row => Schema.decodeUnknownSync(SessionInbox.Info)(JSON.parse(String(row.payload))))),\n // Native Session.active is SessionExecution.active: an Effect of the running ID set.\n active: Effect.sync(() => new Set(this.db.prepare(\"SELECT id FROM fixture_session WHERE active=1\").all().map(row => String(row.id)))),\n list: () => Effect.sync(() => ({ data: this.sessions })),\n interrupt: (id: string) => Effect.sync(() => { this.idle(id); return true }),\n cancelInbox: (input: { sessionID: string }) => Effect.sync(() => { this.db.prepare(\"DELETE FROM session_inbox WHERE session_id=?\").run(input.sessionID) }),\n environment: (input: { variables?: unknown }) => Effect.succeed(input.variables ?? {}),\n }\n const job = { get: (id: string) => id.startsWith(\"codenomad.missions.recurrence:\") && this.failScheduleJobRead?.()\n ? Effect.die(new Error(\"Injected native Job read failure\")) : Effect.sync(() => this.jobs.get(id)),\n start: (input: Job) => Effect.suspend(() => {\n if (this.jobStartFailure === \"absent\") return Effect.die(new Error(\"Injected native Job start failure\"))\n const old = this.jobs.get(input.id)\n if (old?.status === \"running\") return Effect.succeed(old)\n const record = { ...input, status: \"running\" }\n this.jobs.set(input.id, record)\n record.fiber = Effect.runForkWith(this.graph)(input.run.pipe(Effect.provideService(Clock.Clock, this.clock)))\n void Effect.runPromise(Fiber.await(record.fiber)).then(exit => {\n record.status = Exit.isSuccess(exit) ? \"completed\" : \"error\"\n if (Exit.isFailure(exit)) this.errors.push(exit.cause)\n })\n return this.jobStartFailure === \"registered\" ? Effect.die(new Error(\"Injected native Job start reply failure\")) : Effect.succeed(record)\n }), cancel: (id: string) => Effect.promise(async () => {\n const record = this.jobs.get(id)\n if (record?.fiber) await Effect.runPromise(Fiber.interrupt(record.fiber))\n this.jobs.delete(id)\n return record\n }), pendingBackground: Effect.sync(() => this.background) }\n // Native 2.0.26 shape: a borrowed Location graph holds Location services only; Database,\n // Session, Job and Bus are process-global and appear only in plugin/RPC contexts.\n const locationGraph = Context.make(tag(\"@opencode/Location\"), location).pipe(\n Context.add(tag(\"@opencode/Form\"), { list: () => Effect.sync(() => [...this.forms.values()]),\n state: (id: string) => Effect.sync(() => ({ status: this.forms.has(id) ? \"pending\" : \"answered\" })),\n reply: (input: { id: string; answer: unknown }) => Effect.sync(() => {\n Schema.decodeUnknownSync(Form.Answer)(input.answer)\n assert(this.forms.delete(input.id), \"native Form must still be pending\")\n }) }),\n Context.add(tag(\"@opencode/Permission\"), { list: () => Effect.sync(() => this.permissions) }),\n Context.add(tag(\"@opencode/Shell\"), { list: () => Effect.sync(() => this.shells) }))\n this.graph = Context.merge(locationGraph, Context.make(tag(\"@opencode/storage/Database\"), database).pipe(\n Context.add(tag(\"@opencode/Session\"), native), Context.add(tag(\"@opencode/Job\"), job),\n Context.add(tag(\"@opencode/Bus\"), { publish: () => Effect.void, listen: (listener: (event: unknown) => Effect.Effect<void>) =>\n Effect.sync(() => { this.busListeners.add(listener); return Effect.sync(() => { this.busListeners.delete(listener) }) }) }), Context.add(Clock.Clock, this.clock)))\n const map = await Effect.runPromise(RcMap.make({ idleTimeToLive: Infinity, lookup: () => Effect.sync(() => locationGraph) })\n .pipe(Effect.provideService(Scope.Scope, this.scope)))\n this.graph = Context.add(this.graph, tag(\"@opencode/example/LocationServiceMap\"), { rcMap: map,\n contextEffect: (ref: Location.Ref) => RcMap.get(map, ref), contextEffectOption: (ref: Location.Ref) => RcMap.getOption(map, ref) })\n await Effect.runPromise(Effect.scoped(RcMap.get(map, Schema.decodeUnknownSync(Location.Ref)({ directory: this.root }))))\n const registration = () => ({ dispose: Effect.void })\n const rpc = Object.assign(() => { throw new Error(\"Unexpected cross-plugin RPC\") }, {\n register: (definition: { id: string }, handlers: Record<string, Handler>) => Effect.sync(() => {\n this.handlers.set(definition.id, handlers)\n return { dispose: Effect.sync(() => { this.handlers.delete(definition.id) }), events: { emit: () => Effect.void } }\n }) })\n // Unused plugin domains are fail-fast, not permissive native API emulations.\n const unsupported = (name: string): unknown => new Proxy(() => Effect.die(new Error(`Unimplemented native fixture API: ${name}`)), {\n get: (_target, key) => key === \"then\" ? undefined : unsupported(`${name}.${String(key)}`),\n })\n const unusedDomains = Object.fromEntries([\"agent\", \"aisdk\", \"command\", \"experimental\", \"generate\", \"model\", \"provider\",\n \"integration\", \"mcp\", \"plugin\", \"permission\", \"reference\", \"skill\", \"vcs\", \"websearch\", \"worktree\", \"shell\"]\n .map(name => [name, unsupported(name)]))\n const host = new Proxy({ ...unusedDomains, location, storage, rpc, session: { ...native,\n get: (input: { sessionID: string }) => native.get(input.sessionID),\n interrupt: (input: { sessionID: string }) => Effect.sync(() => { this.idle(input.sessionID); return { interrupted: true } }),\n hook: (_name: string, callback: (event: unknown) => Effect.Effect<unknown, unknown>) => Effect.sync(() => { this.hooks.push(callback); return registration() }),\n }, tool: { transform: (callback: (draft: unknown) => void) => Effect.sync(() => {\n callback({ namespace: () => {}, list: () => [...this.tools.values()], get: (name: string) => this.tools.get(name),\n add: (tool: NativeTool) => this.tools.set(`${tool.options?.namespace ?? \"mission\"}_${tool.name}`, tool) })\n return registration()\n }) }, event: { subscribe: () => Stream.empty }, options: {}, app: {} }, {\n get: (target, key) => key in target ? Reflect.get(target, key) : unsupported(String(key)),\n })\n this.ctx = host as unknown as Plugin.Context\n await Effect.runPromiseWith(Context.add(this.graph, Scope.Scope, this.scope))(\n desktopPlugin(path.join(fixture.root, \"absent-backend-presence\")).effect(this.ctx))\n }\n\n private clock: Clock.Clock = {\n currentTimeMillisUnsafe: () => this.now, currentTimeMillis: Effect.sync(() => this.now),\n currentTimeNanosUnsafe: () => BigInt(this.now) * 1_000_000n, currentTimeNanos: Effect.sync(() => BigInt(this.now) * 1_000_000n),\n monotonicTimeNanosUnsafe: () => BigInt(this.now) * 1_000_000n, monotonicTimeNanos: Effect.sync(() => BigInt(this.now) * 1_000_000n),\n sleep: duration => Effect.callback<void>(resume => {\n const sleeper = { at: this.now + Duration.toMillis(duration), wake: () => {\n // The journey spans 32+ hours; measure the requested per-virtual-day\n // ceiling, not its total duration. Keep the maximum monotonic for Pause.\n this.wakeTimes = this.wakeTimes.filter(at => at > this.now - DAY)\n this.wakeTimes.push(this.now)\n this.wakeups = Math.max(this.wakeups, this.wakeTimes.length)\n resume(Effect.void)\n } }\n this.sleepers.add(sleeper)\n return Effect.sync(() => { this.sleepers.delete(sleeper) })\n }),\n }\n async flush() { for (let n = 0; n < 4; n++) await new Promise<void>(resolve => setTimeout(resolve, 1)) }\n // Bounded real-time wait for asynchronous storage/admission I/O; virtual time never moves here.\n // Date.now is the virtual clock, so the deadline uses the monotonic real clock.\n async until(predicate: () => boolean | Promise<boolean>, message: string, timeoutMs = 5_000) {\n const deadline = performance.now() + timeoutMs\n while (!await predicate()) {\n assert(performance.now() < deadline, message)\n await this.flush()\n }\n }\n /** Every running Job is parked in a virtual sleep, so no background write is in flight. */\n async quiescent(message = \"background Jobs settled\") {\n await this.until(() => [...this.jobs.values()].filter(job => job.status === \"running\").length <= this.sleepers.size, message)\n }\n async advance(to: number) {\n assert(to >= this.now)\n await this.flush()\n while (true) {\n const next = Math.min(...[...this.sleepers].map(s => s.at))\n if (next > to) break\n this.now = next\n for (const sleeper of [...this.sleepers]) if (sleeper.at <= next) { this.sleepers.delete(sleeper); sleeper.wake() }\n await this.flush()\n assert(this.wakeups < 3000, \"virtual day runner is spinning\")\n }\n this.now = to\n await this.flush()\n }\n private fail(point: NonNullable<RecurringDayFixture[\"crash\"]>) {\n if (this.crash !== point) return\n if (--this.crashRepeat <= 0) { this.crash = undefined; this.crashRepeat = 1 }\n this.crashHits++\n throw new Error(`Injected crash ${point}`)\n }\n private event(sessionID: string, type: string, data: object = {}) {\n const old = this.db.prepare(\"SELECT seq FROM event_sequence WHERE aggregate_id=?\").get(sessionID)\n const seq = Number(old?.seq ?? -1) + 1\n this.db.prepare(\"INSERT INTO event VALUES(?,?,?,?,?)\").run(`evt_${sessionID}_${seq}`, sessionID, seq, type, JSON.stringify({ sessionID, ...data }))\n this.db.prepare(\"INSERT INTO event_sequence VALUES(?,?,NULL) ON CONFLICT(aggregate_id) DO UPDATE SET seq=excluded.seq\").run(sessionID, seq)\n }\n get sessions(): SessionInfo[] { return this.db.prepare(\"SELECT info FROM fixture_session\").all().map(row => Schema.decodeUnknownSync(Session.Info)(JSON.parse(String(row.info)))) }\n get coordinators() { return this.sessions.filter(s => !s.parentID && !(this.config.watchedConversationIDs as string[]).includes(s.id)) }\n get starts(): MessageInfo[] { return this.db.prepare(\"SELECT data FROM session_message WHERE type IN ('user','synthetic')\").all().map(row => Schema.decodeUnknownSync(SessionMessage.Info)(JSON.parse(String(row.data)))) }\n private session(id: string): SessionInfo {\n const row = this.db.prepare(\"SELECT info FROM fixture_session WHERE id=?\").get(id)\n if (!row) throw new Error(`Native session missing: ${id}`)\n return Schema.decodeUnknownSync(Session.Info)(JSON.parse(String(row.info)))\n }\n private message(id: string): MessageInfo | undefined {\n const row = this.db.prepare(\"SELECT data FROM session_message WHERE id=?\").get(id)\n return row && Schema.decodeUnknownSync(SessionMessage.Info)(JSON.parse(String(row.data)))\n }\n private messages(id: string): MessageInfo[] {\n return this.db.prepare(\"SELECT data FROM session_message WHERE session_id=? ORDER BY seq\").all(id).map(row => Schema.decodeUnknownSync(SessionMessage.Info)(JSON.parse(String(row.data))))\n }\n /** An ordinary user conversation to watch; created before any passage exists. */\n watch(id: string) {\n const info = Schema.decodeUnknownSync(Session.Info)({ id, title: \"Watched\", location: { directory: this.root }, projectID: \"day-test\",\n agent: \"worker\", model: { providerID: \"fake\", id: \"offline\" },\n time: { created: this.now, updated: this.now }, cost: 0, tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } } })\n this.db.prepare(\"INSERT INTO fixture_session VALUES(?,?,0)\").run(id, JSON.stringify(Schema.encodeSync(Session.Info)(info)))\n this.db.prepare(\"INSERT INTO session_v2 VALUES(?,?,?,?,NULL,?,NULL)\").run(id, null, \"day-test\", this.root, \"{}\")\n this.config.watchedConversationIDs = [id]\n }\n /** Native history pruning: a delivered message disappears; native admission would accept its ID again. */\n pruneMessage(id: string) { this.db.prepare(\"DELETE FROM session_message WHERE id=?\").run(id) }\n deleteSession(id: string) {\n this.db.prepare(\"DELETE FROM fixture_session WHERE id=?\").run(id)\n this.db.prepare(\"DELETE FROM session_v2 WHERE id=?\").run(id)\n }\n private createSession(input: Record<string, unknown>) {\n assert.equal(typeof input.id, \"string\", \"passage caller reserves the native session ID before create\")\n if (!input.parentID) this.assertWriteAhead(String(input.id))\n const old = this.sessions.find(s => s.id === input.id)\n if (old) return old\n const info = Schema.decodeUnknownSync(Session.Info)({ ...input, location: { directory: this.root }, projectID: \"day-test\",\n time: { created: this.now, updated: this.now }, cost: 0, tokens: { input: 0, output: 0, reasoning: 0, cache: { read: 0, write: 0 } } })\n this.db.prepare(\"INSERT INTO fixture_session VALUES(?,?,0)\").run(info.id, JSON.stringify(Schema.encodeSync(Session.Info)(info)))\n this.db.prepare(\"INSERT INTO session_v2 VALUES(?,?,?,?,NULL,?,NULL)\").run(info.id, info.parentID ?? null, \"day-test\", this.root, JSON.stringify(info.metadata ?? {}))\n this.event(info.id, \"session.created.1\")\n this.fail(\"after-create\")\n return info\n }\n private admit(input: Record<string, unknown>, type: \"user\" | \"synthetic\") {\n const sessionID = String(input.sessionID), id = String(input.id)\n assert.equal(typeof input.id, \"string\", \"caller message ID required\")\n this.assertWriteAhead(id)\n this.session(sessionID)\n this.fail(\"before-message\")\n const payload = { text: input.text, ...(type === \"synthetic\" ? { description: input.description ?? \"Daily passage\", metadata: input.metadata ?? {} } : {}) }\n const old = this.db.prepare(\"SELECT payload FROM session_inbox WHERE id=?\").get(id)\n if (old) return Schema.decodeUnknownSync(SessionInbox.Info)(JSON.parse(String(old.payload)))\n if (this.message(id)) return Schema.decodeUnknownSync(SessionInbox.Info)({ id, sessionID, type, payload, delivery: \"queue\", time: { created: this.now } })\n const item = Schema.decodeUnknownSync(SessionInbox.Info)({ id, sessionID, type, payload, delivery: \"queue\", time: { created: this.now } })\n this.db.prepare(\"INSERT INTO session_inbox VALUES(?,?,?)\").run(sessionID, id, JSON.stringify(Schema.encodeSync(SessionInbox.Info)(item)))\n this.admissions++\n this.event(sessionID, \"session.inbox.enqueued.1\", { inboxID: id, item: { type, payload } })\n if (this.autoDeliver) this.deliver(sessionID)\n this.fail(\"after-message\")\n return item\n }\n deliver(sessionID: string) {\n const rows = this.db.prepare(\"SELECT id,payload FROM session_inbox WHERE session_id=?\").all(sessionID)\n for (const row of rows) {\n const item = JSON.parse(String(row.payload))\n const info = Schema.decodeUnknownSync(SessionMessage.Info)({ id: row.id, type: item.type, ...item.payload, time: { created: this.now } })\n this.db.prepare(\"INSERT INTO session_message VALUES(?,?,?,?,?)\").run(String(row.id), sessionID, item.type, JSON.stringify(Schema.encodeSync(SessionMessage.Info)(info)), this.messages(sessionID).length)\n this.event(sessionID, \"session.inbox.delivered.1\", { inboxID: row.id })\n }\n this.db.prepare(\"DELETE FROM session_inbox WHERE session_id=?\").run(sessionID)\n this.db.prepare(\"UPDATE fixture_session SET active=1 WHERE id=?\").run(sessionID)\n this.event(sessionID, \"session.execution.started.1\")\n }\n private assertWriteAhead(nativeID: string) {\n const docs = this.db.prepare(\"SELECT value FROM kv WHERE json_extract(value,'$.id')=?\").all(this.id)\n .map(row => JSON.parse(String(row.value)))\n assert(docs.some(doc => doc.pending && JSON.stringify(doc.pending).includes(nativeID)),\n `native effect ${nativeID} must follow durable pending identity CAS`)\n }\n idle(id: string, failed = false) {\n this.db.prepare(\"UPDATE fixture_session SET active=0 WHERE id=?\").run(id)\n // Native 2.0.26 shape: no persisted terminal event, only the durable idle projection.\n const info = Schema.decodeUnknownSync(SessionMessage.Info)({ id: `msg_idle_${++this.serial}`, type: \"idle\",\n outcome: failed ? \"failed\" : \"succeeded\", time: { created: this.now } })\n this.db.prepare(\"INSERT INTO session_message VALUES(?,?,?,?,?)\").run(info.id, id, \"idle\",\n JSON.stringify(Schema.encodeSync(SessionMessage.Info)(info)), this.messages(id).length)\n // Native Bus listeners run inline during publish (session.execution terminal payloads).\n for (const listener of this.busListeners) Effect.runSync(listener({ type: failed ? \"session.execution.failed\" : \"session.execution.succeeded\" }))\n }\n async model(options: { child?: boolean; report?: boolean; keepActive?: boolean; failed?: boolean } = {}) {\n const coordinator = this.coordinators.at(-1)!\n assert(coordinator, \"coordinator prompt must arrive before scripted model work\")\n const available: Record<string, unknown> = { read: {}, shell: {}, ...Object.fromEntries(this.tools) }\n const event = { sessionID: coordinator.id, system: [], tools: available }\n for (const hook of this.hooks) await Effect.runPromiseWith(this.graph)(hook(event))\n for (const name of [\"read\", \"shell\"]) { assert(name in available, `${name} cannot be whitelisted away`); this.calls.push({ name, sessionID: coordinator.id }) }\n if (options.child) {\n const child = this.createSession({ id: `ses_child_${++this.serial}`, parentID: coordinator.id })\n this.calls.push({ name: \"subagent\", sessionID: child.id }); this.idle(child.id)\n }\n if (options.report !== false) {\n await this.tool(\"mission_inspect\", {}, coordinator.id)\n await this.tool(\"mission_report\", { outcome: \"completed\", summary: \"Read and shell work completed\", final: true }, coordinator.id)\n }\n if (!options.keepActive) this.idle(coordinator.id, options.failed)\n await this.flush()\n }\n private async tool(name: string, input: unknown, sessionID: string) {\n const tool = this.tools.get(name)\n assert(tool, `backend-independent real ${name} registration missing`)\n this.calls.push({ name, sessionID })\n return Effect.runPromiseWith(this.graph)(tool.execute(input, { sessionID, messageID: `msg_model_${this.serial}`,\n id: `call_${++this.serial}`, progress: () => Effect.void, signal: new AbortController().signal }))\n }\n pendingForm() {\n const form = Schema.decodeUnknownSync(Form.Info)({ id: \"frm_day\", sessionID: this.coordinators.at(-1)!.id,\n title: \"Confirm review\", fields: [{ key: \"ok\", type: \"boolean\", required: true }] })\n this.forms.set(form.id, form)\n return form.id\n }\n async answerForm(id: string) {\n const form = Context.get(this.graph, Context.Service<never, {\n reply(input: { id: string; answer: unknown }): Effect.Effect<void>\n }>(\"@opencode/Form\"))\n await Effect.runPromise(form.reply({ id, answer: { ok: true } }))\n await this.flush()\n }\n async rpc(method: string, input: unknown = {}) {\n const handler = this.handlers.get(CODENOMAD_MISSIONS_RPC_ID)?.[method]\n assert(handler, `real plugin RPC ${method} missing without CodeNomad presence`)\n return Effect.runPromiseWith(Context.add(this.graph, Scope.Scope, this.scope))(handler(input, {\n error: (_type: string, message: string) => new Error(message), signal: new AbortController().signal,\n }))\n }\n async create() {\n const requestID = \"create_day_test\"\n this.id = recurrenceScheduleID(\"day-test\", this.root, requestID)\n const digest = recurrenceConfigDigest(this.config)\n const identity = { sessionID: \"offline-human-cookie\", workspaceID: \"owned\", location: { directory: this.root },\n scheduleID: this.id, requestID, expectedRevision: 0, action: \"create\", configDigest: digest,\n profileSource: this.profileSource, issuedAt: this.now }\n const body = { ...identity, digest: createHash(\"sha256\").update(canonicalAuthority(identity)).digest(\"hex\") }\n const transport = { ...body, proof: createHmac(\"sha256\", this.registration.token).update(canonicalAuthority(body)).digest(\"hex\") }\n await this.rpc(\"recurrenceCreate\", { id: this.id, requestID, config: this.config,\n digest, directory: this.root, scope: this.profileScope, executionHost: \"local\", transport })\n return this.snapshot()\n }\n async snapshot(): Promise<Schedule> {\n const response = await this.rpc(\"recurrenceSnapshot\") as { schedules: Schedule[] }\n const schedule = response.schedules.find(s => s.id === this.id)\n assert(schedule, \"created schedule must be present in real snapshot\")\n return schedule\n }\n /** `identity` pins an exact request, e.g. one sent with a stale revision. */\n async control(action: \"play\" | \"pause\" | \"stop\" | \"resume\" | \"run-now\" | \"check\", statusCode = 200,\n identity: { requestID?: string; expectedRevision?: number } = {}) {\n const schedule = await this.snapshot()\n const response = await this.bridge.inject({ method: \"POST\", url: \"/day-test/control\", headers: { cookie: \"session=offline-human-cookie\" },\n payload: { scheduleID: this.id, action, requestID: identity.requestID ?? `human_${++this.serial}`,\n expectedRevision: identity.expectedRevision ?? schedule.revision } })\n assert.equal(response.statusCode, statusCode, `${action}: ${response.body}`)\n await this.flush()\n return this.snapshot()\n }\n async document() {\n const store = await Effect.runPromiseWith(this.graph)(acquireNativeRecurrenceStore(this.ctx))\n return store.read(this.id) // Real recurrence store, read only; no fixture-side lifecycle/reserve/finish shortcut.\n }\n /** Crash stand-in: the durable bytes a lost write would have left behind. */\n rewriteDocument(change: (doc: Record<string, any>) => void) {\n const key = this.db.prepare(\"SELECT key FROM kv WHERE json_extract(value,'$.id')=?\").get(this.id) as { key: string }\n const doc = JSON.parse(String((this.db.prepare(\"SELECT value FROM kv WHERE key=?\").get(key.key) as { value: string }).value))\n change(doc)\n this.db.prepare(\"UPDATE kv SET value=? WHERE key=?\").run(JSON.stringify(doc), key.key)\n }\n /** One due wake exactly as a Job of that role invokes it, in the native graph. */\n async wake(settleOnly: boolean) {\n const doc = await this.document()\n const due = nativeRecurrenceDue(this.ctx, { projectID: \"day-test\", projectCanonical: this.root, directory: this.root,\n scheduleID: this.id, profileID: this.profileScope.key, executionHost: \"local\", profileSource: doc!.profileSource, settleOnly })\n return Effect.runPromiseWith(Context.add(this.graph, Scope.Scope, this.scope))(\n Effect.scoped(due(this.id, () => true, new AbortController().signal)))\n }\n async restart() {\n for (const job of this.jobs.values()) if (job.fiber) await Effect.runPromise(Fiber.interrupt(job.fiber))\n this.jobs.clear(); this.sleepers.clear()\n await Effect.runPromise(Scope.close(this.scope, Exit.void))\n this.handlers.clear(); this.tools.clear(); this.hooks = []\n this.forms.clear(); this.permissions.length = 0; this.shells.length = 0; this.background.length = 0\n await this.boot() // SQLite sessions/messages/calendar retained; never rearm from the fixture.\n }\n async close() {\n try {\n for (const job of this.jobs.values()) if (job.fiber) await Effect.runPromise(Fiber.interrupt(job.fiber))\n if (this.scope) await Effect.runPromise(Scope.close(this.scope, Exit.void))\n await this.removeBridge?.()\n await this.bridge.close()\n this.db?.close()\n if (this.root) await rm(this.root, { recursive: true, force: true })\n } finally {\n Date.now = this.originalNow\n if (this.originalLocal === undefined) delete process.env.LOCALAPPDATA\n else process.env.LOCALAPPDATA = this.originalLocal\n }\n }\n}\n"]}
@@ -194,9 +194,9 @@ test("E. Pause cancels wakeups and future admissions; Stop is terminal", async (
194
194
  assert.equal(f.wakeups, wakes, "Pause cancels the Job rather than leaving polling behind");
195
195
  assert.equal(f.starts.length, 0);
196
196
  await f.control("play");
197
- // Play admits the passage missed while paused, in background writes. Stop is a
198
- // later human action at the settled revision, not a race with that admission.
199
- await f.until(async () => Boolean((await f.document())?.pending?.admission), "missed passage admitted");
197
+ // Play wakes the schedule Job, which may admit the passage missed while paused
198
+ // in background writes. Stop is a later human action at the settled revision.
199
+ await f.quiescent();
200
200
  assert.equal((await f.control("stop")).state, "stopped");
201
201
  const count = f.starts.length;
202
202
  await f.advance(DUE + 2 * DAY);
@@ -1 +1 @@
1
- {"version":3,"file":"recurring-day.e2e.test.js","sourceRoot":"","sources":["../../../src/opencode/missions/recurring-day.e2e.test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert/strict\"\nimport childProcess from \"node:child_process\"\nimport { syncBuiltinESMExports } from \"node:module\"\nimport test from \"node:test\"\nimport { DAY, DUE, RecurringDayFixture } from \"./recurring-day-fixture\"\n\n// Run with: node --import tsx --test src/opencode/missions/recurring-day.e2e.test.ts\n// All model-produced business state goes through registered real mission_* tools.\n// The fixture never appends journal events, fabricates final reports or calls recurrence reserve/finish.\n\ntest(\"A. Full day: paused create, due work, real tools, archive and a distinct next day\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n const created = await f.create()\n assert.equal(created.title, \"Daily offline review\")\n assert.equal(created.state, \"paused\")\n assert.equal(f.jobs.size, 0)\n assert.equal(f.coordinators.length, 0)\n assert.equal((await f.control(\"play\")).state, \"running\")\n await f.advance(DUE - 1)\n assert.equal(f.starts.length, 0)\n await f.advance(DUE)\n assert.equal(f.coordinators.length, 1)\n assert.equal(f.starts.length, 1)\n const firstSession = f.coordinators[0].id, firstMessage = f.starts[0].id\n const pending = await f.document()\n assert(pending?.pending, \"real native CAS persisted pending\")\n await f.model({ child: true })\n // The native execution terminal wakes settlement after a short debounce, not the hourly wake.\n await f.advance(DUE + 5_000)\n const settled = await f.snapshot()\n assert.equal(settled.pending, null)\n assert.equal(settled.latestResult?.outcome, \"completed\")\n assert.equal(settled.history.length, 1)\n assert.equal(settled.nextDueAt, DUE + DAY)\n assert.deepEqual(f.calls.map(c => c.name), [\"read\", \"shell\", \"subagent\", \"mission_inspect\", \"mission_report\"])\n assert.equal(f.sessions.length, 2)\n assert.equal(f.sessions.find(s => s.parentID)?.parentID, firstSession)\n await f.advance(DUE + DAY)\n assert.equal(f.coordinators.length, 2)\n assert.equal(f.starts.length, 2)\n assert.notEqual(f.coordinators[1].id, firstSession)\n assert.notEqual(f.starts[1].id, firstMessage)\n // Hourly ceiling (24) + the due wake + one post-event settlement debounce.\n assert(f.wakeups <= 26, `no per-minute polling: ${f.wakeups} wakes in ~one day`)\n await f.model()\n await f.advance(DUE + DAY + 3_600_000)\n assert.equal((await f.snapshot()).history.length, 2)\n assert.notEqual((await f.snapshot()).history[0].passageID, (await f.snapshot()).history[1].passageID)\n})\n\ntest(\"B. Restart pending: Interrupted, explicit Resume reconciles without another start\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n await f.model({ report: false, keepActive: true })\n const before = await f.document(), ids = f.starts.map(m => m.id)\n await f.restart()\n const interrupted = await f.snapshot()\n assert.equal(interrupted.state, \"interrupted\")\n assert(interrupted.interruptionReason)\n assert(interrupted.pending)\n assert.deepEqual((await f.document())?.pending, before?.pending)\n assert.equal(f.jobs.size, 0, \"plugin startup must not silently rearm\")\n assert(interrupted.actions.includes(\"resume\"))\n await f.control(\"resume\")\n assert.deepEqual(f.starts.map(m => m.id), ids)\n assert.equal(f.coordinators.length, 1)\n await f.model(); await f.advance(DUE + 3_600_000)\n assert.equal((await f.snapshot()).latestResult?.outcome, \"completed\")\n await f.advance(DUE + DAY)\n assert.equal(f.starts.length, 2)\n assert.equal(f.coordinators.length, 2)\n})\n\ntest(\"C. Crash boundaries: pending CAS, native create and admission reconcile under the original identities only\", async t => {\n for (const point of [\"after-pending\", \"after-create\", \"after-message\"] as const) {\n await t.test(point, async () => {\n const f = await RecurringDayFixture.open()\n try {\n await f.create(); await f.control(\"play\")\n f.crash = point\n await f.advance(DUE)\n assert.equal(f.crashHits, 1, \"failpoint must actually run\")\n const before = await f.document()\n assert(before?.pending, \"write-ahead pending survives failure\")\n const passage = before.pending.passage\n assert.equal(f.coordinators.length, point === \"after-pending\" ? 0 : 1)\n assert.equal(f.starts.length, point === \"after-message\" ? 1 : 0)\n await f.restart(); await f.control(\"resume\")\n await f.advance(DUE + 3_600_000)\n // Resume never invents a new identity: the original session/message is admitted\n // at most once (native first admission wins), never a second coordinator message.\n assert.deepEqual(f.coordinators.map(s => s.id), [passage.coordinatorSessionID])\n assert.deepEqual(f.starts.map(m => m.id), [passage.messageID], \"one original start message, no resend\")\n await f.model(); await f.advance(DUE + 2 * 3_600_000)\n assert.equal((await f.snapshot()).latestResult?.outcome, \"completed\")\n assert.equal(f.starts.length, 1)\n } finally { await f.close() }\n })\n }\n})\n\ntest(\"C2. A transient admission failure retries the same identities on a later wake, without Resume\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n f.crash = \"after-create\"\n await f.advance(DUE)\n const passage = (await f.document())!.pending!.passage\n assert.equal(f.starts.length, 0)\n assert.equal((await f.snapshot()).state, \"running\", \"a failed admission does not end the Job\")\n await f.advance(DUE + 3_600_000)\n assert.deepEqual(f.coordinators.map(s => s.id), [passage.coordinatorSessionID])\n assert.deepEqual(f.starts.map(m => m.id), [passage.messageID])\n await f.model(); await f.advance(DUE + 2 * 3_600_000)\n assert.equal((await f.snapshot()).latestResult?.outcome, \"completed\")\n})\n\ntest(\"C4. A recorded admission is never re-sent when its start message later disappears natively\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n const pending = (await f.document())!.pending!\n assert(pending.admission, \"admission recorded\")\n assert.equal(f.admissions, 1)\n f.pruneMessage(pending.passage.messageID)\n assert.equal(f.starts.length, 0, \"the delivered start message is gone from native history\")\n await f.advance(DUE + 3_600_000)\n assert.equal(f.admissions, 1, \"absence after a recorded admission is history, never a resend\")\n await f.model(); await f.advance(DUE + 3_600_000 + 5_000)\n const settled = await f.snapshot()\n assert.equal(settled.pending, null, \"settles by family quiescence without the pruned message\")\n assert.equal(settled.latestResult?.outcome, \"completed\")\n assert.equal(f.admissions, 1)\n assert.equal(f.coordinators.length, 1)\n})\n\ntest(\"C3. A deleted watched conversation archives failed/not-started and unblocks later days and Run now\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n f.watch(\"ses_watched_source\")\n await f.create(); await f.control(\"play\")\n f.deleteSession(\"ses_watched_source\")\n await f.advance(DUE)\n assert.equal(f.starts.length, 0, \"no start message can be built\")\n await f.advance(DUE + 3_600_000)\n const archived = await f.snapshot()\n assert.equal(archived.pending, null, \"a stuck passage no longer blocks the schedule\")\n assert.equal(archived.latestResult?.outcome, \"failed\")\n assert.equal((archived.latestResult as { reason?: string }).reason, \"not-started\")\n assert.equal(f.coordinators.length, 1, \"the coordinator session is kept as-is\")\n const doc = (await f.document())!\n assert.equal(doc.lastDaily?.at, DUE, \"the scheduled day is settled normally\")\n assert.deepEqual(doc.cursors, [], \"cursors never advance for an unstarted passage\")\n assert(archived.actions.includes(\"run-now\"))\n assert.equal(archived.nextDueAt, DUE + DAY)\n assert.equal(f.starts.length, 0)\n})\n\ntest(\"D. Run now has distinct IDs and leaves the daily civil-day schedule untouched\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n const before = await f.snapshot()\n await f.control(\"run-now\")\n assert.equal(f.starts.length, 1)\n const manualMessage = f.starts[0].id, manualSession = f.coordinators[0].id\n await f.model(); await f.advance(f.now + 3_600_000)\n assert.equal((await f.snapshot()).nextDueAt, before.nextDueAt)\n assert.equal((await f.document())?.lastDaily, null, \"manual passage cannot consume the daily high-water mark\")\n await f.advance(DUE)\n assert.equal(f.starts.length, 2)\n assert.notEqual(f.starts[1].id, manualMessage)\n assert.notEqual(f.coordinators[1].id, manualSession)\n})\n\ntest(\"E. Pause cancels wakeups and future admissions; Stop is terminal\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n assert.equal((await f.control(\"pause\")).state, \"paused\")\n const wakes = f.wakeups\n await f.advance(DUE + DAY)\n assert.equal(f.wakeups, wakes, \"Pause cancels the Job rather than leaving polling behind\")\n assert.equal(f.starts.length, 0)\n await f.control(\"play\")\n // Play admits the passage missed while paused, in background writes. Stop is a\n // later human action at the settled revision, not a race with that admission.\n await f.until(async () => Boolean((await f.document())?.pending?.admission), \"missed passage admitted\")\n assert.equal((await f.control(\"stop\")).state, \"stopped\")\n const count = f.starts.length\n await f.advance(DUE + 2 * DAY)\n assert.equal(f.starts.length, count)\n const stopped = await f.snapshot()\n assert.deepEqual(stopped.actions, [])\n await assert.rejects(f.control(\"play\"))\n await assert.rejects(f.control(\"resume\"))\n await assert.rejects(f.control(\"run-now\"))\n})\n\nconst settleJobs = (f: RecurringDayFixture) => [...f.jobs.values()].filter(job => job.type === \"codenomad.missions.recurrence.settle\" && job.status === \"running\")\n\ntest(\"K. Run now on an Interrupted schedule is observed by a settlement-only Job until it settles\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n await f.restart()\n assert.equal((await f.snapshot()).state, \"interrupted\")\n await f.control(\"run-now\")\n assert.equal(f.starts.length, 1)\n assert.equal(settleJobs(f).length, 1, \"no live schedule Job, so the observer starts regardless of stored state\")\n assert.equal(dailyJobs(f).length, 0, \"Run now never rearms daily scheduling\")\n await f.model(); await f.advance(f.now + 3_600_000)\n const settled = await f.snapshot()\n assert.equal(settled.latestResult?.outcome, \"completed\")\n assert.equal(settled.latestResult?.trigger, \"manual\")\n assert.equal(settled.state, \"interrupted\")\n assert.equal(settleJobs(f).length, 0, \"observer exits once settled\")\n})\n\ntest(\"L. Stop keeps a settlement-only observer until the pending passage archives; the schedule stays terminal\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n await f.model({ report: false, keepActive: true })\n const form = f.pendingForm() // Stop interrupts the coordinator; the open Form keeps the family unsettled.\n const stopped = await f.control(\"stop\")\n assert.equal(stopped.state, \"stopped\")\n assert(stopped.pending, \"Stop never clears live work\")\n assert.equal(dailyJobs(f).length, 0)\n assert.equal(settleJobs(f).length, 1)\n await f.answerForm(form)\n await f.advance(DUE + 3_600_000)\n const archived = await f.snapshot()\n assert.equal(archived.pending, null)\n assert.equal(archived.latestResult?.outcome, \"ended-without-report\")\n assert.equal(archived.state, \"stopped\")\n assert.deepEqual(archived.actions, [])\n assert.equal(settleJobs(f).length, 0)\n await f.advance(DUE + DAY)\n assert.equal(f.starts.length, 1)\n})\n\ntest(\"L2. After a restart, a stopped schedule's pending passage offers Check, which only observes it\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n await f.model({ report: false, keepActive: true })\n f.pendingForm(); await f.control(\"stop\"); await f.restart()\n const parked = await f.snapshot()\n assert.equal(parked.state, \"stopped\")\n assert.deepEqual(parked.actions, [\"check\"])\n assert.equal(parked.pending?.status, \"running\")\n assert.equal(f.jobs.size, 0, \"reads never restart the observer\")\n // Stop already interrupted the coordinator and the restart cleared the Form,\n // so the Check-started observer can settle the family on its first wake.\n await f.control(\"check\"); await f.advance(DUE + 3_600_000)\n assert.equal(settleJobs(f).length, 0, \"the observer exits once settled\")\n const archived = await f.snapshot()\n assert.equal(archived.pending, null)\n assert.equal(archived.latestResult?.outcome, \"ended-without-report\")\n assert.equal(archived.state, \"stopped\")\n assert.equal(f.starts.length, 1)\n})\n\ntest(\"M. Transient wake failures warn without ending the Job; starting is not uncertain while observed\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n f.crash = \"before-message\"\n await f.advance(DUE)\n assert.equal(f.starts.length, 0)\n const starting = await f.snapshot()\n assert.equal(starting.state, \"running\")\n assert.equal(starting.pending?.status, \"starting\", \"a live Job is still handling the unadmitted passage\")\n assert.equal(starting.pending?.trigger, \"daily\")\n f.crash = \"before-message\"\n await f.advance(DUE + 3_600_000)\n const warned = await f.snapshot()\n assert.equal(warned.state, \"running\", \"one transient failure does not interrupt scheduling\")\n assert.equal(warned.interruptionReason, undefined)\n assert.equal(warned.lastError?.code, \"admission-failed\")\n assert.equal(warned.pending?.status, \"uncertain\")\n assert.equal(warned.pending?.reason, \"admission-failing\")\n assert.equal(dailyJobs(f).length, 1)\n await f.advance(DUE + 3_600_000 + 31_000)\n const recovered = await f.snapshot()\n assert.equal(recovered.lastError, undefined, \"the next successful wake clears the warning\")\n assert.equal(recovered.pending?.status, \"running\")\n assert.equal(f.starts.length, 1)\n await f.restart()\n assert.equal((await f.snapshot()).pending?.status, \"running\", \"admitted work is not uncertain\")\n})\n\ntest(\"M2. An unadmitted passage without any live observer is uncertain (not observed)\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n f.crash = \"after-create\"\n await f.advance(DUE)\n await f.restart()\n const parked = await f.snapshot()\n assert.equal(parked.pending?.status, \"uncertain\")\n assert.equal(parked.pending?.reason, \"not-observed\")\n})\n\nconst dailyJobs = (f: RecurringDayFixture) => [...f.jobs.values()].filter(job => job.type === \"codenomad.missions.recurrence\" && job.status === \"running\")\n\ntest(\"G. Run now on a paused schedule settles through a reconcile-only observer, never daily work\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create()\n assert.equal((await f.control(\"run-now\")).state, \"paused\")\n assert.equal(f.starts.length, 1)\n assert.equal(dailyJobs(f).length, 0, \"Run now never arms daily scheduling\")\n await f.model()\n await f.advance(f.now + 3_600_000)\n const settled = await f.snapshot()\n assert.equal(settled.state, \"paused\")\n assert.equal(settled.pending, null)\n assert.equal(settled.latestResult?.outcome, \"completed\")\n assert.equal([...f.jobs.values()].filter(job => job.status === \"running\").length, 0, \"observer exits once settled\")\n await f.advance(DUE + DAY)\n assert.equal(f.starts.length, 1, \"still paused: no daily passage\")\n assert.deepEqual(settled.actions.includes(\"check\"), false)\n})\n\ntest(\"H. Restart while paused with a pending manual passage exposes Check passage, reconcile-only\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"run-now\")\n await f.model({ report: false, keepActive: true })\n const ids = f.starts.map(m => m.id)\n await f.restart()\n const parked = await f.snapshot()\n assert.equal(parked.state, \"paused\")\n assert(parked.pending)\n assert.equal(f.jobs.size, 0, \"plugin startup must not silently rearm the observer\")\n assert(parked.actions.includes(\"check\"))\n const checked = await f.control(\"check\")\n assert.equal(checked.state, \"paused\")\n assert.equal(checked.actions.includes(\"check\"), false, \"observer already running\")\n assert.equal(dailyJobs(f).length, 0)\n assert.deepEqual(f.starts.map(m => m.id), ids, \"check never resends\")\n await f.model(); await f.advance(f.now + 3_600_000)\n const settled = await f.snapshot()\n assert.equal(settled.latestResult?.outcome, \"completed\")\n assert.equal(settled.state, \"paused\")\n await f.advance(DUE + DAY)\n assert.equal(f.starts.length, 1)\n assert.equal(f.coordinators.length, 1)\n})\n\n/** A loaded Windows host can exceed the 3 s spawnSync timeout of a synchronous\n * Git placement read; make that deterministic for every synchronous git spawn. */\nfunction timeOutSynchronousGit() {\n const original = childProcess.execFileSync\n let attempts = 0\n childProcess.execFileSync = ((file: string, ...rest: unknown[]) => {\n if (file === \"git\") { attempts++; throw Object.assign(new Error(\"spawnSync git ETIMEDOUT\"), { code: \"ETIMEDOUT\" }) }\n return (original as (...args: unknown[]) => unknown)(file, ...rest)\n }) as typeof original\n syncBuiltinESMExports()\n return { attempts: () => attempts, restore: () => { childProcess.execFileSync = original; syncBuiltinESMExports() } }\n}\n\ntest(\"H2. Check after restart, Play and Pause stay admitted when synchronous Git spawns time out\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"run-now\")\n await f.model({ report: false, keepActive: true })\n await f.restart()\n const git = timeOutSynchronousGit(); t.after(git.restore)\n const checked = await f.control(\"check\")\n assert.equal(checked.state, \"paused\")\n assert.equal(checked.actions.includes(\"check\"), false, \"observer restarted\")\n await f.model(); await f.advance(f.now + 3_600_000)\n assert.equal((await f.snapshot()).latestResult?.outcome, \"completed\")\n assert.equal((await f.control(\"play\")).state, \"running\")\n assert.equal((await f.control(\"pause\")).state, \"paused\")\n assert.equal(git.attempts(), 0, \"control fences reread captured routing inputs instead of spawning Git synchronously\")\n assert.equal(f.starts.length, 1)\n})\n\ntest(\"I. Seventy sequential daily passages never exhaust the passage business cache\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n for (let day = 0; day < 70; day++) {\n await f.advance(DUE + day * DAY)\n await f.until(() => f.starts.length >= day + 1, `day ${day} admitted`)\n assert.equal(f.starts.length, day + 1, `day ${day} admitted once`)\n await f.model()\n await f.advance(DUE + day * DAY + 3_600_000)\n await f.until(async () => (await f.snapshot()).pending === null, `day ${day} settled`)\n }\n const done = await f.snapshot()\n assert.equal(done.history.length, 30)\n assert.equal(f.errors.length, 0)\n})\n\ntest(\"F2. A native terminal failure without a final report archives failed with one start and no retry\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n await f.model({ report: false, failed: true })\n await f.advance(DUE + 5_000)\n const settled = await f.snapshot()\n assert.equal(settled.pending, null)\n assert.equal(settled.latestResult?.outcome, \"failed\")\n assert.equal(f.starts.length, 1)\n assert.equal(f.coordinators.length, 1)\n await f.advance(DUE + 3_600_000)\n assert.equal(f.starts.length, 1, \"Missions never retries or replays a failed passage\")\n assert.equal((await f.snapshot()).nextDueAt, DUE + DAY)\n})\n\ntest(\"F. Pending Form prevents settlement; idle without report is not completed\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n const form = f.pendingForm()\n await f.model()\n await f.advance(DUE + 3_600_000)\n assert((await f.snapshot()).pending)\n assert.equal((await f.snapshot()).history.length, 0)\n await f.answerForm(form)\n await f.advance(DUE + 2 * 3_600_000)\n assert.equal((await f.snapshot()).latestResult?.outcome, \"completed\")\n await f.advance(DUE + DAY)\n await f.model({ report: false })\n await f.advance(DUE + DAY + 3_600_000)\n const ended = await f.snapshot()\n assert.equal(ended.pending, null)\n assert.equal(ended.latestResult?.outcome, \"ended-without-report\")\n assert.equal(ended.history.length, 2)\n})\n"]}
1
+ {"version":3,"file":"recurring-day.e2e.test.js","sourceRoot":"","sources":["../../../src/opencode/missions/recurring-day.e2e.test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert/strict\"\nimport childProcess from \"node:child_process\"\nimport { syncBuiltinESMExports } from \"node:module\"\nimport test from \"node:test\"\nimport { DAY, DUE, RecurringDayFixture } from \"./recurring-day-fixture\"\n\n// Run with: node --import tsx --test src/opencode/missions/recurring-day.e2e.test.ts\n// All model-produced business state goes through registered real mission_* tools.\n// The fixture never appends journal events, fabricates final reports or calls recurrence reserve/finish.\n\ntest(\"A. Full day: paused create, due work, real tools, archive and a distinct next day\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n const created = await f.create()\n assert.equal(created.title, \"Daily offline review\")\n assert.equal(created.state, \"paused\")\n assert.equal(f.jobs.size, 0)\n assert.equal(f.coordinators.length, 0)\n assert.equal((await f.control(\"play\")).state, \"running\")\n await f.advance(DUE - 1)\n assert.equal(f.starts.length, 0)\n await f.advance(DUE)\n assert.equal(f.coordinators.length, 1)\n assert.equal(f.starts.length, 1)\n const firstSession = f.coordinators[0].id, firstMessage = f.starts[0].id\n const pending = await f.document()\n assert(pending?.pending, \"real native CAS persisted pending\")\n await f.model({ child: true })\n // The native execution terminal wakes settlement after a short debounce, not the hourly wake.\n await f.advance(DUE + 5_000)\n const settled = await f.snapshot()\n assert.equal(settled.pending, null)\n assert.equal(settled.latestResult?.outcome, \"completed\")\n assert.equal(settled.history.length, 1)\n assert.equal(settled.nextDueAt, DUE + DAY)\n assert.deepEqual(f.calls.map(c => c.name), [\"read\", \"shell\", \"subagent\", \"mission_inspect\", \"mission_report\"])\n assert.equal(f.sessions.length, 2)\n assert.equal(f.sessions.find(s => s.parentID)?.parentID, firstSession)\n await f.advance(DUE + DAY)\n assert.equal(f.coordinators.length, 2)\n assert.equal(f.starts.length, 2)\n assert.notEqual(f.coordinators[1].id, firstSession)\n assert.notEqual(f.starts[1].id, firstMessage)\n // Hourly ceiling (24) + the due wake + one post-event settlement debounce.\n assert(f.wakeups <= 26, `no per-minute polling: ${f.wakeups} wakes in ~one day`)\n await f.model()\n await f.advance(DUE + DAY + 3_600_000)\n assert.equal((await f.snapshot()).history.length, 2)\n assert.notEqual((await f.snapshot()).history[0].passageID, (await f.snapshot()).history[1].passageID)\n})\n\ntest(\"B. Restart pending: Interrupted, explicit Resume reconciles without another start\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n await f.model({ report: false, keepActive: true })\n const before = await f.document(), ids = f.starts.map(m => m.id)\n await f.restart()\n const interrupted = await f.snapshot()\n assert.equal(interrupted.state, \"interrupted\")\n assert(interrupted.interruptionReason)\n assert(interrupted.pending)\n assert.deepEqual((await f.document())?.pending, before?.pending)\n assert.equal(f.jobs.size, 0, \"plugin startup must not silently rearm\")\n assert(interrupted.actions.includes(\"resume\"))\n await f.control(\"resume\")\n assert.deepEqual(f.starts.map(m => m.id), ids)\n assert.equal(f.coordinators.length, 1)\n await f.model(); await f.advance(DUE + 3_600_000)\n assert.equal((await f.snapshot()).latestResult?.outcome, \"completed\")\n await f.advance(DUE + DAY)\n assert.equal(f.starts.length, 2)\n assert.equal(f.coordinators.length, 2)\n})\n\ntest(\"C. Crash boundaries: pending CAS, native create and admission reconcile under the original identities only\", async t => {\n for (const point of [\"after-pending\", \"after-create\", \"after-message\"] as const) {\n await t.test(point, async () => {\n const f = await RecurringDayFixture.open()\n try {\n await f.create(); await f.control(\"play\")\n f.crash = point\n await f.advance(DUE)\n assert.equal(f.crashHits, 1, \"failpoint must actually run\")\n const before = await f.document()\n assert(before?.pending, \"write-ahead pending survives failure\")\n const passage = before.pending.passage\n assert.equal(f.coordinators.length, point === \"after-pending\" ? 0 : 1)\n assert.equal(f.starts.length, point === \"after-message\" ? 1 : 0)\n await f.restart(); await f.control(\"resume\")\n await f.advance(DUE + 3_600_000)\n // Resume never invents a new identity: the original session/message is admitted\n // at most once (native first admission wins), never a second coordinator message.\n assert.deepEqual(f.coordinators.map(s => s.id), [passage.coordinatorSessionID])\n assert.deepEqual(f.starts.map(m => m.id), [passage.messageID], \"one original start message, no resend\")\n await f.model(); await f.advance(DUE + 2 * 3_600_000)\n assert.equal((await f.snapshot()).latestResult?.outcome, \"completed\")\n assert.equal(f.starts.length, 1)\n } finally { await f.close() }\n })\n }\n})\n\ntest(\"C2. A transient admission failure retries the same identities on a later wake, without Resume\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n f.crash = \"after-create\"\n await f.advance(DUE)\n const passage = (await f.document())!.pending!.passage\n assert.equal(f.starts.length, 0)\n assert.equal((await f.snapshot()).state, \"running\", \"a failed admission does not end the Job\")\n await f.advance(DUE + 3_600_000)\n assert.deepEqual(f.coordinators.map(s => s.id), [passage.coordinatorSessionID])\n assert.deepEqual(f.starts.map(m => m.id), [passage.messageID])\n await f.model(); await f.advance(DUE + 2 * 3_600_000)\n assert.equal((await f.snapshot()).latestResult?.outcome, \"completed\")\n})\n\ntest(\"C4. A recorded admission is never re-sent when its start message later disappears natively\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n const pending = (await f.document())!.pending!\n assert(pending.admission, \"admission recorded\")\n assert.equal(f.admissions, 1)\n f.pruneMessage(pending.passage.messageID)\n assert.equal(f.starts.length, 0, \"the delivered start message is gone from native history\")\n await f.advance(DUE + 3_600_000)\n assert.equal(f.admissions, 1, \"absence after a recorded admission is history, never a resend\")\n await f.model(); await f.advance(DUE + 3_600_000 + 5_000)\n const settled = await f.snapshot()\n assert.equal(settled.pending, null, \"settles by family quiescence without the pruned message\")\n assert.equal(settled.latestResult?.outcome, \"completed\")\n assert.equal(f.admissions, 1)\n assert.equal(f.coordinators.length, 1)\n})\n\ntest(\"C3. A deleted watched conversation archives failed/not-started and unblocks later days and Run now\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n f.watch(\"ses_watched_source\")\n await f.create(); await f.control(\"play\")\n f.deleteSession(\"ses_watched_source\")\n await f.advance(DUE)\n assert.equal(f.starts.length, 0, \"no start message can be built\")\n await f.advance(DUE + 3_600_000)\n const archived = await f.snapshot()\n assert.equal(archived.pending, null, \"a stuck passage no longer blocks the schedule\")\n assert.equal(archived.latestResult?.outcome, \"failed\")\n assert.equal((archived.latestResult as { reason?: string }).reason, \"not-started\")\n assert.equal(f.coordinators.length, 1, \"the coordinator session is kept as-is\")\n const doc = (await f.document())!\n assert.equal(doc.lastDaily?.at, DUE, \"the scheduled day is settled normally\")\n assert.deepEqual(doc.cursors, [], \"cursors never advance for an unstarted passage\")\n assert(archived.actions.includes(\"run-now\"))\n assert.equal(archived.nextDueAt, DUE + DAY)\n assert.equal(f.starts.length, 0)\n})\n\ntest(\"D. Run now has distinct IDs and leaves the daily civil-day schedule untouched\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n const before = await f.snapshot()\n await f.control(\"run-now\")\n assert.equal(f.starts.length, 1)\n const manualMessage = f.starts[0].id, manualSession = f.coordinators[0].id\n await f.model(); await f.advance(f.now + 3_600_000)\n assert.equal((await f.snapshot()).nextDueAt, before.nextDueAt)\n assert.equal((await f.document())?.lastDaily, null, \"manual passage cannot consume the daily high-water mark\")\n await f.advance(DUE)\n assert.equal(f.starts.length, 2)\n assert.notEqual(f.starts[1].id, manualMessage)\n assert.notEqual(f.coordinators[1].id, manualSession)\n})\n\ntest(\"E. Pause cancels wakeups and future admissions; Stop is terminal\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n assert.equal((await f.control(\"pause\")).state, \"paused\")\n const wakes = f.wakeups\n await f.advance(DUE + DAY)\n assert.equal(f.wakeups, wakes, \"Pause cancels the Job rather than leaving polling behind\")\n assert.equal(f.starts.length, 0)\n await f.control(\"play\")\n // Play wakes the schedule Job, which may admit the passage missed while paused\n // in background writes. Stop is a later human action at the settled revision.\n await f.quiescent()\n assert.equal((await f.control(\"stop\")).state, \"stopped\")\n const count = f.starts.length\n await f.advance(DUE + 2 * DAY)\n assert.equal(f.starts.length, count)\n const stopped = await f.snapshot()\n assert.deepEqual(stopped.actions, [])\n await assert.rejects(f.control(\"play\"))\n await assert.rejects(f.control(\"resume\"))\n await assert.rejects(f.control(\"run-now\"))\n})\n\nconst settleJobs = (f: RecurringDayFixture) => [...f.jobs.values()].filter(job => job.type === \"codenomad.missions.recurrence.settle\" && job.status === \"running\")\n\ntest(\"K. Run now on an Interrupted schedule is observed by a settlement-only Job until it settles\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n await f.restart()\n assert.equal((await f.snapshot()).state, \"interrupted\")\n await f.control(\"run-now\")\n assert.equal(f.starts.length, 1)\n assert.equal(settleJobs(f).length, 1, \"no live schedule Job, so the observer starts regardless of stored state\")\n assert.equal(dailyJobs(f).length, 0, \"Run now never rearms daily scheduling\")\n await f.model(); await f.advance(f.now + 3_600_000)\n const settled = await f.snapshot()\n assert.equal(settled.latestResult?.outcome, \"completed\")\n assert.equal(settled.latestResult?.trigger, \"manual\")\n assert.equal(settled.state, \"interrupted\")\n assert.equal(settleJobs(f).length, 0, \"observer exits once settled\")\n})\n\ntest(\"L. Stop keeps a settlement-only observer until the pending passage archives; the schedule stays terminal\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n await f.model({ report: false, keepActive: true })\n const form = f.pendingForm() // Stop interrupts the coordinator; the open Form keeps the family unsettled.\n const stopped = await f.control(\"stop\")\n assert.equal(stopped.state, \"stopped\")\n assert(stopped.pending, \"Stop never clears live work\")\n assert.equal(dailyJobs(f).length, 0)\n assert.equal(settleJobs(f).length, 1)\n await f.answerForm(form)\n await f.advance(DUE + 3_600_000)\n const archived = await f.snapshot()\n assert.equal(archived.pending, null)\n assert.equal(archived.latestResult?.outcome, \"ended-without-report\")\n assert.equal(archived.state, \"stopped\")\n assert.deepEqual(archived.actions, [])\n assert.equal(settleJobs(f).length, 0)\n await f.advance(DUE + DAY)\n assert.equal(f.starts.length, 1)\n})\n\ntest(\"L2. After a restart, a stopped schedule's pending passage offers Check, which only observes it\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n await f.model({ report: false, keepActive: true })\n f.pendingForm(); await f.control(\"stop\"); await f.restart()\n const parked = await f.snapshot()\n assert.equal(parked.state, \"stopped\")\n assert.deepEqual(parked.actions, [\"check\"])\n assert.equal(parked.pending?.status, \"running\")\n assert.equal(f.jobs.size, 0, \"reads never restart the observer\")\n // Stop already interrupted the coordinator and the restart cleared the Form,\n // so the Check-started observer can settle the family on its first wake.\n await f.control(\"check\"); await f.advance(DUE + 3_600_000)\n assert.equal(settleJobs(f).length, 0, \"the observer exits once settled\")\n const archived = await f.snapshot()\n assert.equal(archived.pending, null)\n assert.equal(archived.latestResult?.outcome, \"ended-without-report\")\n assert.equal(archived.state, \"stopped\")\n assert.equal(f.starts.length, 1)\n})\n\ntest(\"M. Transient wake failures warn without ending the Job; starting is not uncertain while observed\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n f.crash = \"before-message\"\n await f.advance(DUE)\n assert.equal(f.starts.length, 0)\n const starting = await f.snapshot()\n assert.equal(starting.state, \"running\")\n assert.equal(starting.pending?.status, \"starting\", \"a live Job is still handling the unadmitted passage\")\n assert.equal(starting.pending?.trigger, \"daily\")\n f.crash = \"before-message\"\n await f.advance(DUE + 3_600_000)\n const warned = await f.snapshot()\n assert.equal(warned.state, \"running\", \"one transient failure does not interrupt scheduling\")\n assert.equal(warned.interruptionReason, undefined)\n assert.equal(warned.lastError?.code, \"admission-failed\")\n assert.equal(warned.pending?.status, \"uncertain\")\n assert.equal(warned.pending?.reason, \"admission-failing\")\n assert.equal(dailyJobs(f).length, 1)\n await f.advance(DUE + 3_600_000 + 31_000)\n const recovered = await f.snapshot()\n assert.equal(recovered.lastError, undefined, \"the next successful wake clears the warning\")\n assert.equal(recovered.pending?.status, \"running\")\n assert.equal(f.starts.length, 1)\n await f.restart()\n assert.equal((await f.snapshot()).pending?.status, \"running\", \"admitted work is not uncertain\")\n})\n\ntest(\"M2. An unadmitted passage without any live observer is uncertain (not observed)\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n f.crash = \"after-create\"\n await f.advance(DUE)\n await f.restart()\n const parked = await f.snapshot()\n assert.equal(parked.pending?.status, \"uncertain\")\n assert.equal(parked.pending?.reason, \"not-observed\")\n})\n\nconst dailyJobs = (f: RecurringDayFixture) => [...f.jobs.values()].filter(job => job.type === \"codenomad.missions.recurrence\" && job.status === \"running\")\n\ntest(\"G. Run now on a paused schedule settles through a reconcile-only observer, never daily work\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create()\n assert.equal((await f.control(\"run-now\")).state, \"paused\")\n assert.equal(f.starts.length, 1)\n assert.equal(dailyJobs(f).length, 0, \"Run now never arms daily scheduling\")\n await f.model()\n await f.advance(f.now + 3_600_000)\n const settled = await f.snapshot()\n assert.equal(settled.state, \"paused\")\n assert.equal(settled.pending, null)\n assert.equal(settled.latestResult?.outcome, \"completed\")\n assert.equal([...f.jobs.values()].filter(job => job.status === \"running\").length, 0, \"observer exits once settled\")\n await f.advance(DUE + DAY)\n assert.equal(f.starts.length, 1, \"still paused: no daily passage\")\n assert.deepEqual(settled.actions.includes(\"check\"), false)\n})\n\ntest(\"H. Restart while paused with a pending manual passage exposes Check passage, reconcile-only\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"run-now\")\n await f.model({ report: false, keepActive: true })\n const ids = f.starts.map(m => m.id)\n await f.restart()\n const parked = await f.snapshot()\n assert.equal(parked.state, \"paused\")\n assert(parked.pending)\n assert.equal(f.jobs.size, 0, \"plugin startup must not silently rearm the observer\")\n assert(parked.actions.includes(\"check\"))\n const checked = await f.control(\"check\")\n assert.equal(checked.state, \"paused\")\n assert.equal(checked.actions.includes(\"check\"), false, \"observer already running\")\n assert.equal(dailyJobs(f).length, 0)\n assert.deepEqual(f.starts.map(m => m.id), ids, \"check never resends\")\n await f.model(); await f.advance(f.now + 3_600_000)\n const settled = await f.snapshot()\n assert.equal(settled.latestResult?.outcome, \"completed\")\n assert.equal(settled.state, \"paused\")\n await f.advance(DUE + DAY)\n assert.equal(f.starts.length, 1)\n assert.equal(f.coordinators.length, 1)\n})\n\n/** A loaded Windows host can exceed the 3 s spawnSync timeout of a synchronous\n * Git placement read; make that deterministic for every synchronous git spawn. */\nfunction timeOutSynchronousGit() {\n const original = childProcess.execFileSync\n let attempts = 0\n childProcess.execFileSync = ((file: string, ...rest: unknown[]) => {\n if (file === \"git\") { attempts++; throw Object.assign(new Error(\"spawnSync git ETIMEDOUT\"), { code: \"ETIMEDOUT\" }) }\n return (original as (...args: unknown[]) => unknown)(file, ...rest)\n }) as typeof original\n syncBuiltinESMExports()\n return { attempts: () => attempts, restore: () => { childProcess.execFileSync = original; syncBuiltinESMExports() } }\n}\n\ntest(\"H2. Check after restart, Play and Pause stay admitted when synchronous Git spawns time out\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"run-now\")\n await f.model({ report: false, keepActive: true })\n await f.restart()\n const git = timeOutSynchronousGit(); t.after(git.restore)\n const checked = await f.control(\"check\")\n assert.equal(checked.state, \"paused\")\n assert.equal(checked.actions.includes(\"check\"), false, \"observer restarted\")\n await f.model(); await f.advance(f.now + 3_600_000)\n assert.equal((await f.snapshot()).latestResult?.outcome, \"completed\")\n assert.equal((await f.control(\"play\")).state, \"running\")\n assert.equal((await f.control(\"pause\")).state, \"paused\")\n assert.equal(git.attempts(), 0, \"control fences reread captured routing inputs instead of spawning Git synchronously\")\n assert.equal(f.starts.length, 1)\n})\n\ntest(\"I. Seventy sequential daily passages never exhaust the passage business cache\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\")\n for (let day = 0; day < 70; day++) {\n await f.advance(DUE + day * DAY)\n await f.until(() => f.starts.length >= day + 1, `day ${day} admitted`)\n assert.equal(f.starts.length, day + 1, `day ${day} admitted once`)\n await f.model()\n await f.advance(DUE + day * DAY + 3_600_000)\n await f.until(async () => (await f.snapshot()).pending === null, `day ${day} settled`)\n }\n const done = await f.snapshot()\n assert.equal(done.history.length, 30)\n assert.equal(f.errors.length, 0)\n})\n\ntest(\"F2. A native terminal failure without a final report archives failed with one start and no retry\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n await f.model({ report: false, failed: true })\n await f.advance(DUE + 5_000)\n const settled = await f.snapshot()\n assert.equal(settled.pending, null)\n assert.equal(settled.latestResult?.outcome, \"failed\")\n assert.equal(f.starts.length, 1)\n assert.equal(f.coordinators.length, 1)\n await f.advance(DUE + 3_600_000)\n assert.equal(f.starts.length, 1, \"Missions never retries or replays a failed passage\")\n assert.equal((await f.snapshot()).nextDueAt, DUE + DAY)\n})\n\ntest(\"F. Pending Form prevents settlement; idle without report is not completed\", async t => {\n const f = await RecurringDayFixture.open(); t.after(() => f.close())\n await f.create(); await f.control(\"play\"); await f.advance(DUE)\n const form = f.pendingForm()\n await f.model()\n await f.advance(DUE + 3_600_000)\n assert((await f.snapshot()).pending)\n assert.equal((await f.snapshot()).history.length, 0)\n await f.answerForm(form)\n await f.advance(DUE + 2 * 3_600_000)\n assert.equal((await f.snapshot()).latestResult?.outcome, \"completed\")\n await f.advance(DUE + DAY)\n await f.model({ report: false })\n await f.advance(DUE + DAY + 3_600_000)\n const ended = await f.snapshot()\n assert.equal(ended.pending, null)\n assert.equal(ended.latestResult?.outcome, \"ended-without-report\")\n assert.equal(ended.history.length, 2)\n})\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@neuralnomads/codenomad-dev",
3
- "version": "0.20.1-dev-20261013-8552a8f2",
3
+ "version": "0.20.1-dev-20261013-13bb7ff5",
4
4
  "description": "CodeNomad Server",
5
5
  "license": "MIT",
6
6
  "author": {
package/public/index.html CHANGED
@@ -30,8 +30,8 @@
30
30
  <link rel="modulepreload" crossorigin href="/assets/git-diff-vendor-CT8HfOQw.js">
31
31
  <link rel="modulepreload" crossorigin href="/assets/monaco-viewer-eklBYEnl.js">
32
32
  <link rel="modulepreload" crossorigin href="/assets/index-BxWe0Uqz.js">
33
- <link rel="stylesheet" crossorigin href="/assets/index-Dfop51mV.css">
34
33
  <link rel="stylesheet" crossorigin href="/assets/git-diff-vendor-HAZkIolJ.css">
34
+ <link rel="stylesheet" crossorigin href="/assets/index-Dfop51mV.css">
35
35
  <link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script>
36
36
  <meta name="theme-color" content="#1a1a1a">
37
37
  <link rel="icon" href="/favicon.ico" sizes="48x48">
@@ -21,8 +21,8 @@
21
21
  <link rel="modulepreload" crossorigin href="/assets/monaco-viewer-eklBYEnl.js">
22
22
  <link rel="modulepreload" crossorigin href="/assets/index-BxWe0Uqz.js">
23
23
  <link rel="modulepreload" crossorigin href="/assets/CodeNomad-Icon-DTDWwXip.js">
24
- <link rel="stylesheet" crossorigin href="/assets/git-diff-vendor-HAZkIolJ.css">
25
24
  <link rel="stylesheet" crossorigin href="/assets/index-Dfop51mV.css">
25
+ <link rel="stylesheet" crossorigin href="/assets/git-diff-vendor-HAZkIolJ.css">
26
26
  <link rel="stylesheet" crossorigin href="/assets/loading-CdhHiSED.css">
27
27
  <link rel="manifest" href="/manifest.webmanifest"><script id="vite-plugin-pwa:register-sw" src="/registerSW.js"></script>
28
28
  <meta name="theme-color" content="#1a1a1a">
package/public/sw.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sw.js","sources":["../../../../../../../tmp/a28eaf5c098c9304d6c3e43ddb483abb/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-routing/registerRoute.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheableResponsePlugin as workbox_cacheable_response_CacheableResponsePlugin} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-cacheable-response/CacheableResponsePlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"ui-version.json\",\n \"revision\": \"2e5e4160bf242bdb8c80188033300194\"\n },\n {\n \"url\": \"registerSW.js\",\n \"revision\": \"1872c500de691dce40960bb85481de07\"\n },\n {\n \"url\": \"pwa-64x64.png\",\n \"revision\": \"55fc93ef82eddd32757c324c67f4d8f1\"\n },\n {\n \"url\": \"pwa-512x512.png\",\n \"revision\": \"d8a4783526b318a4a52001e9c9211042\"\n },\n {\n \"url\": \"pwa-192x192.png\",\n \"revision\": \"7d5867127ea8948a52f4eb886da6fca9\"\n },\n {\n \"url\": \"monaco.worker.js\",\n \"revision\": \"47d7f51fe40cc40367130f6c0e059886\"\n },\n {\n \"url\": \"maskable-icon-512x512.png\",\n \"revision\": \"976548c7ab2d6651e02451cffe3439ec\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"3587c37712635a9f01cc4906c536d9a9\"\n },\n {\n \"url\": \"logo.png\",\n \"revision\": \"c88fc77a366f290821abc617e67e6674\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"62e8e3f28a97401e2932f62503cbdd6b\"\n },\n {\n \"url\": \"apple-touch-icon-180x180.png\",\n \"revision\": \"8252a341f68ec24937e6aaa5d422f87e\"\n },\n {\n \"url\": \"assets/zig-VOosw3JB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/zenscript-DVFEvuxE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/yaml-Buea-lGh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/xsl-CtQFsRM5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/xml-sdJ4AIDG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wolfram-lXgVvXCa.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wit-5i3qLPDT.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wikitext-BhOHFoWU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wgsl-Dx-B1_4e.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wenyan-BV7otONQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wasm-MzD3tlZU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wasm-CG6Dc4jp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vyper-CDx5xZoG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-vine-_Ih-lPRR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-html-DAAvJJDi.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-CCoi5OLL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-light-CVO1_9PV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-dark-D0r3Knsf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-black-Bkuqu6BP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/viml-CJc9bBzg.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vhdl-CeAyd5Ju.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vesper-DU1UobuO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/verilog-BQ8w6xss.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vb-D17OF-Vu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vala-CsfeWuGM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/v-BcVCzyr7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/unified-picker-BwjqyDlk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typst-DHCkPAjA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typespec-Df68jz8_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typescript-BPQ3VLAy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/twig-CO9l9SDP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/turtle-BsS91CYL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tsx-COt5Ahok.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tsv-B_m7g4N7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ts-tags-zn1MmPIZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tool-call-DeDRkAku.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/toml-vGWfd6FD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tokyo-night-hegEt444.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tex-Cppo0RY3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/terraform-BETggiCN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/terminal-square-DFF5a_FV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/templ-W15q3VgB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tcl-dwOrl1Do.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tasl-QIJgUcNo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/talonscript-CkByrt1z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/systemd-4A_iFExJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/system-verilog-CnnmHF94.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/synthwave-84-CbfX1IO0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/swift-Dg5xB15N.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/svelte-3Dk4HxPD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/stylus-BEDo0Tqx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/stata-BH5u7GGu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/startup-state-settings-view-DqRmvm8-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/startup-state-settings-card-CVHmCXgV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ssh-config-_ykCGR6B.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sql-BLtJtn59.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/splunk-BtCnVYZw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sparql-rVzFXLq3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/soy-Brmx7dQM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solidity-BbcW6ACK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solarized-light-L9t79GZl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solarized-dark-DXbdFlpD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/snazzy-light-Bw305WKR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/smalltalk-BERRCDM3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/slack-ochin-DqwNpetd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/slack-dark-BthQWCQV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shellsession-BADoaaVG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shellscript-Yzrsuije.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shaderlab-Dg9Lc6iA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sdbl-DVxCFoDh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scss-OYdSNvt2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scheme-C98Dy4si.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scala-C151Ov-r.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sass-Cj5Yp3dK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sas-cz2c8ADy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rust-B1yitclQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ruby-BvKwtOVI.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rst-B0xPkSld.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rosmsg-BJDFO7_C.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-moon-NleAzG8P.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-dawn-CnK8MTSM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-BHrmToEH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/riscv-BM1_JUlF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rel-C3B-1QV4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/regexp-CDVJQ6XC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/reg-C-SQnVFl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/red-bN70gL4F.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/razor-WgofotgN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/raku-DXvB9xmW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/racket-BqYA7rlc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/r-DiinP2Uv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qss-IeuSbFQv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qmldir-C8lEn-DE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qml-3beO22l8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/python-B6aJPvgy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/purescript-CklMAg4u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/puppet-BMWR74SV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pug-CGlum2m_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/proto-DyJlTyXw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/prolog-CbFg5uaA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/prisma-Dd19v3D-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/powershell-Dpen1YoG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/powerquery-CEu0bR-o.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/postcss-CXtECtnM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/polar-C0HS_06l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/poimandres-CS3Unz2-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/po-BTJTHyun.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/plsql-ChMvpjG-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/plastic-3e1v2bzS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pkl-u5AG7uiY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/php-CDn_0X-4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/perl-C0TMdlhV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pascal-D93ZcfNL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/opener-startup-state-settings-card-BJJijlkm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/one-light-PoHY5YXO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/one-dark-pro-DVMEJ2y_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ocaml-C0hk2d4L.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/objective-cpp-CLxacb5B.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/objective-c-DXmwc3jG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nushell-C-sUppwS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nord-Ddv68eIx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nix-BbRYJGeE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nim-CVrawwO9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/night-owl-C39BiMTA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nginx-DknmC5AR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nextflow-CUEJCptM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/narrat-DRg8JJMk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/move-Bu9oaDYs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/monokai-D4h5O-jR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/monaco-viewer-eklBYEnl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mojo-1DNp92w6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mipsasm-CKIfxQSi.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/min-light-CTRr51gU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/min-dark-CafNBF8u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mermaid-DKYwYmdq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mdx-Cmh6b_Ma.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mdc-DUICxH0z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/matlab-D7o27uSR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-palenight-Csfq5Kiy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-ocean-CyktbL80.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-lighter-B0m2ddpp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-darker-BfHTSMKl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-D5KoaKCx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/marko-CPi9NSCl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/markdown-DHabnhSd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/markdown-Cvjx9yec.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/make-CHLpvVh8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/main-D0S9BHco.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/luau-CXu1NL6O.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lua-BbnMAYS6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/logo-BtOb2qkB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/log-2UxHyX5q.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/loading-Cggpynt6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/loading-CdhHiSED.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/llvm-BtvRca6l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/liquid-DYVedYrR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/light-plus-B7mTdjB0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/less-B1dDrJ26.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lean-DP1Csr6i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/latex-BUKiar2Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/laserwave-DUszq2jm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kusto-BvAqAH-y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kotlin-BdnUsdx6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kdl-DV7GczEv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-wave-DWedfzmr.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-lotus-CfQXZHmo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-dragon-CkXjmgJE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/julia-C8NyazO9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsx-g9-lgVsj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jssm-C2t-YnRu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonnet-DFQXde-d.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonl-DcaNXYhu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonc-Des-eS-w.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/json5-C9tS-k6U.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/json-Cp-IABpG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jison-wvAkD_A8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jinja-4LBKfQ-Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/javascript-wDzz0qaB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/java-CylS5w8V.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ini-BEwlwnbL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-UcHguEbk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Dm2uwghH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Dfop51mV.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DZjUvA62.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DVD7NKCX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CvTVaeoE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CVekf-uV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CJYJi5Mj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CFrXract.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-BxWe0Uqz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-BlG33iiq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-BD_2I9ks.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-3XY6czLC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/imba-DGztddWO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hy-DFXneXwc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hxml-Bvhsp5Yf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hurl-irOxFIW8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/http-jrhK8wxY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/html-derivative-BFtXZ54Q.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/html-GMplVEZG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/houston-DnULxvSX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hlsl-D3lLCCz7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hjson-D5-asLiD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/highlight-vendor-8FKMu9os.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hcl-BWvSN4gD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haxe-CzTSHFRz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haskell-Df6bDoY_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/handlebars-BL8al0AC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haml-B8DHNrY2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hack-CaT9iCJl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-soft-hJgmCMqR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-medium-DRw_LuNl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-hard-CH1njM8p.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-soft-CVdnzihN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-medium-GsRaNv29.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-hard-CFHQjOhq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/groovy-gcz8RCvz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/graphql-ChdNCCLP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/go-Dn2_MT6a.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gnuplot-DdkO51Og.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glsl-DplSGwfg.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glimmer-ts-U6CK756n.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glimmer-js-Rg0-pVw9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gleam-BspZqrRM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-high-contrast-BfjtVDDH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-default-D7oLnXFd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-DAi9KRSo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-high-contrast-E3gJ1_iC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-dimmed-DH5Ifo-i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-default-Cuk6v7N8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-DHJKELXO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-rebase-r7XF79zn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-diff-vendor-HAZkIolJ.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-diff-vendor-CT8HfOQw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-commit-F4YmCXRG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gherkin-DyxjwDmM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/genie-D0YGMca9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdshader-DkwncUOv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdscript-DTMYz4Jt.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdresource-B7Tvp0Sc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fsharp-CXgrBDvD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fortran-free-form-D22FLkUw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fortran-fixed-form-BZjJHVRy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fluent-C4IJs8-o.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fish-BvzEVeQv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fennel-BYunw83y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fast-diff-vendor-DgdwVvTQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/everforest-light-C8M2exoo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/everforest-dark-BgDCqdQA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/erlang-DsQrWhSR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/erb-BOJIQeun.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/emacs-lisp-C9XAeP06.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/elm-DbKCFpqz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/elixir-CDX3lj18.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edge-BkV0erSs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dream-maker-BtqSS_iP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dracula-soft-BXkSAIEj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dracula-BzJJZx-M.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dotenv-Da5cRb03.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/docker-BcOcwvcX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/diff-viewer-CwexrVWR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/diff-D97Zzqfu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/desktop-BmXAJ9_W.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dax-CEL-wOlO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dart-CF10PKvl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dark-plus-eOWES_5F.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/d-85-TOEBH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cypher-COkxafJQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cue-D82EKSYY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/csv-fuZLfV_i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/css-DPfMkruS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/csharp-CX12Zw3r.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/crystal-tKQVLTB8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cpp-CofmeUqb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/coq-DkFqJrB1.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-lisp-Cg-RD9OK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/coffee-Ch7k5sss.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/codeql-DsOJ9woJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/codeowners-Bp6g37R7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cobol-nwyudZeR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cmake-D1j8_8rp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/clojure-P80f7IUj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/client-state-owner-commands-eF8o01bj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/client-state-BuuW23XK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/client-state-B5fEQGqM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/clarity-D53aC0YG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-mocha-D87Tk5Gz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-macchiato-DQyhUUbL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-latte-C9dUb6Cb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-frappe-DFWUc33u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cairo-KRGpt6FW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cadence-Bv_4Rxtq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/c-BIGW1oBm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bundle-full-Cw7Z25xn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bsl-BO_Y6i37.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/blade-DVc8C-J4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bicep-Bmn6On1c.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bibtex-CHM0blh-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/berry-D08WgyRC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/beancount-k_qm7-4y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bat-BkioyH1T.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ballerina-BFfxhgS-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ayu-dark-Cv9koXgw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/awk-DMzUqQB5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/aurora-x-D-2ljcwZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/astro-CbQHKStN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/asm-D_Q5rh1f.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/asciidoc-Dv7Oe6Be.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ara-BRHolxvo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/applescript-Co6uUVPk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apl-dKokRX4l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apex-DhZLUxFE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apache-Pmp26Uib.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ansi-Bn1IjLoh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/angular-ts-BwZT4LLn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/angular-html-CU67Zn6k.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/andromeeda-C-Jbm3Hp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ada-bCR0ucgS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/actionscript-3-CfeIJUat.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/abap-BdImnpbu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/StatusTab-DnFBRo-2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-DWFBv043.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-BF-4gkZK.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size3-Regular-DgpXs0kz.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size3-Regular-CTq5MqoE.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-oD1tc_U0.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-B7gKUWhC.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-Dbsnue_I.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-C195tn64.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-D5yQViql.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-D3wIWfF6.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-C5JkGWo-.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-DN2j7dab.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-t53AETM-.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-flOr_0UB.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-DA0__PXp.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-ypZvNtVU.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-Dr94JaBh.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-B22Nviop.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-BMLOBm91.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-3WenGoN9.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-SpSLRI95.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-waoOVXN0.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-Jm3AIy58.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-Cx986IdX.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-CB_wures.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-BsDP51OF.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-DRggAlZN.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-DMm9YOAa.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/FilesPanel-DnVndeY9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CodeNomad-Icon-bmTWNPXy.png\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CodeNomad-Icon-DTDWwXip.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/App-jVoiaLtK.js\",\n \"revision\": null\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"4f4aaad9542bc67e284999ba91ccc883\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\n\n\n\nworkbox_routing_registerRoute(({ url, request }) => {\n if (url.pathname.startsWith(\"/api/\")) return false;\n if (request.destination === \"document\") return false;\n return [\"script\", \"style\", \"image\", \"font\"].includes(request.destination);\n }, new workbox_strategies_CacheFirst({ \"cacheName\":\"asset-cache\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 200, maxAgeSeconds: 2592000 }), new workbox_cacheable_response_CacheableResponsePlugin({ statuses: [ 0, 200 ] })] }), 'GET');\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox_routing_registerRoute","request","pathname","startsWith","destination","includes","workbox_strategies_CacheFirst","cacheName","plugins","workbox_expiration_ExpirationPlugin","maxEntries","maxAgeSeconds","workbox_cacheable_response_CacheableResponsePlugin","statuses"],"mappings":"inBAyBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,wDACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAIAC,EAAAA,cAA8B,EAAGH,MAAKI,cACpBJ,EAAIK,SAASC,WAAW,WACA,aAAxBF,EAAQG,aACL,CAAC,SAAU,QAAS,QAAS,QAAQC,SAASJ,EAAQG,cAC5D,IAAIE,EAAAA,WAA8B,CAAEC,UAAY,cAAeC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,IAAKC,cAAe,SAAY,IAAIC,EAAAA,wBAAmD,CAAEC,SAAU,CAAE,EAAG,UAAc"}
1
+ {"version":3,"file":"sw.js","sources":["../../../../../../../tmp/7e22d9b4b696f7598f992871541b50c4/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-routing/registerRoute.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheableResponsePlugin as workbox_cacheable_response_CacheableResponsePlugin} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-cacheable-response/CacheableResponsePlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {clientsClaim as workbox_core_clientsClaim} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-core/clientsClaim.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-precaching/precacheAndRoute.mjs';\nimport {cleanupOutdatedCaches as workbox_precaching_cleanupOutdatedCaches} from '/home/runner/work/CodeNomad/CodeNomad/node_modules/workbox-precaching/cleanupOutdatedCaches.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\n\n\n\n\nself.skipWaiting();\n\nworkbox_core_clientsClaim();\n\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"ui-version.json\",\n \"revision\": \"2e5e4160bf242bdb8c80188033300194\"\n },\n {\n \"url\": \"registerSW.js\",\n \"revision\": \"1872c500de691dce40960bb85481de07\"\n },\n {\n \"url\": \"pwa-64x64.png\",\n \"revision\": \"55fc93ef82eddd32757c324c67f4d8f1\"\n },\n {\n \"url\": \"pwa-512x512.png\",\n \"revision\": \"d8a4783526b318a4a52001e9c9211042\"\n },\n {\n \"url\": \"pwa-192x192.png\",\n \"revision\": \"7d5867127ea8948a52f4eb886da6fca9\"\n },\n {\n \"url\": \"monaco.worker.js\",\n \"revision\": \"47d7f51fe40cc40367130f6c0e059886\"\n },\n {\n \"url\": \"maskable-icon-512x512.png\",\n \"revision\": \"976548c7ab2d6651e02451cffe3439ec\"\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"3587c37712635a9f01cc4906c536d9a9\"\n },\n {\n \"url\": \"logo.png\",\n \"revision\": \"c88fc77a366f290821abc617e67e6674\"\n },\n {\n \"url\": \"favicon.ico\",\n \"revision\": \"62e8e3f28a97401e2932f62503cbdd6b\"\n },\n {\n \"url\": \"apple-touch-icon-180x180.png\",\n \"revision\": \"8252a341f68ec24937e6aaa5d422f87e\"\n },\n {\n \"url\": \"assets/zig-VOosw3JB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/zenscript-DVFEvuxE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/yaml-Buea-lGh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/xsl-CtQFsRM5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/xml-sdJ4AIDG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wolfram-lXgVvXCa.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wit-5i3qLPDT.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wikitext-BhOHFoWU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wgsl-Dx-B1_4e.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wenyan-BV7otONQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wasm-MzD3tlZU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/wasm-CG6Dc4jp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vyper-CDx5xZoG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-vine-_Ih-lPRR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-html-DAAvJJDi.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vue-CCoi5OLL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-light-CVO1_9PV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-dark-D0r3Knsf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vitesse-black-Bkuqu6BP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/viml-CJc9bBzg.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vhdl-CeAyd5Ju.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vesper-DU1UobuO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/verilog-BQ8w6xss.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vb-D17OF-Vu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/vala-CsfeWuGM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/v-BcVCzyr7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/unified-picker-BwjqyDlk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typst-DHCkPAjA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typespec-Df68jz8_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/typescript-BPQ3VLAy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/twig-CO9l9SDP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/turtle-BsS91CYL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tsx-COt5Ahok.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tsv-B_m7g4N7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ts-tags-zn1MmPIZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tool-call-DeDRkAku.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/toml-vGWfd6FD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tokyo-night-hegEt444.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tex-Cppo0RY3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/terraform-BETggiCN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/terminal-square-DFF5a_FV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/templ-W15q3VgB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tcl-dwOrl1Do.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/tasl-QIJgUcNo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/talonscript-CkByrt1z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/systemd-4A_iFExJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/system-verilog-CnnmHF94.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/synthwave-84-CbfX1IO0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/swift-Dg5xB15N.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/svelte-3Dk4HxPD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/stylus-BEDo0Tqx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/stata-BH5u7GGu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/startup-state-settings-view-DqRmvm8-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/startup-state-settings-card-CVHmCXgV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ssh-config-_ykCGR6B.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sql-BLtJtn59.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/splunk-BtCnVYZw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sparql-rVzFXLq3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/soy-Brmx7dQM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solidity-BbcW6ACK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solarized-light-L9t79GZl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/solarized-dark-DXbdFlpD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/snazzy-light-Bw305WKR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/smalltalk-BERRCDM3.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/slack-ochin-DqwNpetd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/slack-dark-BthQWCQV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shellsession-BADoaaVG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shellscript-Yzrsuije.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/shaderlab-Dg9Lc6iA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sdbl-DVxCFoDh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scss-OYdSNvt2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scheme-C98Dy4si.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/scala-C151Ov-r.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sass-Cj5Yp3dK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/sas-cz2c8ADy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rust-B1yitclQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ruby-BvKwtOVI.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rst-B0xPkSld.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rosmsg-BJDFO7_C.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-moon-NleAzG8P.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-dawn-CnK8MTSM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rose-pine-BHrmToEH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/riscv-BM1_JUlF.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/rel-C3B-1QV4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/regexp-CDVJQ6XC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/reg-C-SQnVFl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/red-bN70gL4F.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/razor-WgofotgN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/raku-DXvB9xmW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/racket-BqYA7rlc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/r-DiinP2Uv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qss-IeuSbFQv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qmldir-C8lEn-DE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/qml-3beO22l8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/python-B6aJPvgy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/purescript-CklMAg4u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/puppet-BMWR74SV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pug-CGlum2m_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/proto-DyJlTyXw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/prolog-CbFg5uaA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/prisma-Dd19v3D-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/powershell-Dpen1YoG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/powerquery-CEu0bR-o.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/postcss-CXtECtnM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/polar-C0HS_06l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/poimandres-CS3Unz2-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/po-BTJTHyun.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/plsql-ChMvpjG-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/plastic-3e1v2bzS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pkl-u5AG7uiY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/php-CDn_0X-4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/perl-C0TMdlhV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/pascal-D93ZcfNL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/opener-startup-state-settings-card-BJJijlkm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/one-light-PoHY5YXO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/one-dark-pro-DVMEJ2y_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ocaml-C0hk2d4L.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/objective-cpp-CLxacb5B.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/objective-c-DXmwc3jG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nushell-C-sUppwS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nord-Ddv68eIx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nix-BbRYJGeE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nim-CVrawwO9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/night-owl-C39BiMTA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nginx-DknmC5AR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/nextflow-CUEJCptM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/narrat-DRg8JJMk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/move-Bu9oaDYs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/monokai-D4h5O-jR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/monaco-viewer-eklBYEnl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mojo-1DNp92w6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mipsasm-CKIfxQSi.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/min-light-CTRr51gU.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/min-dark-CafNBF8u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mermaid-DKYwYmdq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mdx-Cmh6b_Ma.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/mdc-DUICxH0z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/matlab-D7o27uSR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-palenight-Csfq5Kiy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-ocean-CyktbL80.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-lighter-B0m2ddpp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-darker-BfHTSMKl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/material-theme-D5KoaKCx.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/marko-CPi9NSCl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/markdown-DHabnhSd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/markdown-Cvjx9yec.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/make-CHLpvVh8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/main-D0S9BHco.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/luau-CXu1NL6O.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lua-BbnMAYS6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/logo-BtOb2qkB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/log-2UxHyX5q.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/loading-Cggpynt6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/loading-CdhHiSED.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/llvm-BtvRca6l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/liquid-DYVedYrR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/light-plus-B7mTdjB0.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/less-B1dDrJ26.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/lean-DP1Csr6i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/latex-BUKiar2Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/laserwave-DUszq2jm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kusto-BvAqAH-y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kotlin-BdnUsdx6.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kdl-DV7GczEv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-wave-DWedfzmr.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-lotus-CfQXZHmo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/kanagawa-dragon-CkXjmgJE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/julia-C8NyazO9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsx-g9-lgVsj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jssm-C2t-YnRu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonnet-DFQXde-d.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonl-DcaNXYhu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jsonc-Des-eS-w.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/json5-C9tS-k6U.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/json-Cp-IABpG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jison-wvAkD_A8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/jinja-4LBKfQ-Z.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/javascript-wDzz0qaB.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/java-CylS5w8V.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ini-BEwlwnbL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-UcHguEbk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Dm2uwghH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-Dfop51mV.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DZjUvA62.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-DVD7NKCX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CvTVaeoE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CVekf-uV.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CJYJi5Mj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-CFrXract.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-BxWe0Uqz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-BlG33iiq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-BD_2I9ks.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/index-3XY6czLC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/imba-DGztddWO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hy-DFXneXwc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hxml-Bvhsp5Yf.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hurl-irOxFIW8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/http-jrhK8wxY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/html-derivative-BFtXZ54Q.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/html-GMplVEZG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/houston-DnULxvSX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hlsl-D3lLCCz7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hjson-D5-asLiD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/highlight-vendor-8FKMu9os.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hcl-BWvSN4gD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haxe-CzTSHFRz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haskell-Df6bDoY_.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/handlebars-BL8al0AC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/haml-B8DHNrY2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/hack-CaT9iCJl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-soft-hJgmCMqR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-medium-DRw_LuNl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-light-hard-CH1njM8p.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-soft-CVdnzihN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-medium-GsRaNv29.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gruvbox-dark-hard-CFHQjOhq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/groovy-gcz8RCvz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/graphql-ChdNCCLP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/go-Dn2_MT6a.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gnuplot-DdkO51Og.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glsl-DplSGwfg.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glimmer-ts-U6CK756n.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/glimmer-js-Rg0-pVw9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gleam-BspZqrRM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-high-contrast-BfjtVDDH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-default-D7oLnXFd.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-light-DAi9KRSo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-high-contrast-E3gJ1_iC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-dimmed-DH5Ifo-i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-default-Cuk6v7N8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/github-dark-DHJKELXO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-rebase-r7XF79zn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-diff-vendor-HAZkIolJ.css\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-diff-vendor-CT8HfOQw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/git-commit-F4YmCXRG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gherkin-DyxjwDmM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/genie-D0YGMca9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdshader-DkwncUOv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdscript-DTMYz4Jt.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/gdresource-B7Tvp0Sc.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fsharp-CXgrBDvD.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fortran-free-form-D22FLkUw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fortran-fixed-form-BZjJHVRy.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fluent-C4IJs8-o.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fish-BvzEVeQv.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fennel-BYunw83y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/fast-diff-vendor-DgdwVvTQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/everforest-light-C8M2exoo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/everforest-dark-BgDCqdQA.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/erlang-DsQrWhSR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/erb-BOJIQeun.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/emacs-lisp-C9XAeP06.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/elm-DbKCFpqz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/elixir-CDX3lj18.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/edge-BkV0erSs.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dream-maker-BtqSS_iP.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dracula-soft-BXkSAIEj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dracula-BzJJZx-M.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dotenv-Da5cRb03.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/docker-BcOcwvcX.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/diff-viewer-CwexrVWR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/diff-D97Zzqfu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/desktop-BmXAJ9_W.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dax-CEL-wOlO.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dart-CF10PKvl.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/dark-plus-eOWES_5F.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/d-85-TOEBH.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cypher-COkxafJQ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cue-D82EKSYY.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/csv-fuZLfV_i.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/css-DPfMkruS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/csharp-CX12Zw3r.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/crystal-tKQVLTB8.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cpp-CofmeUqb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/coq-DkFqJrB1.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/common-lisp-Cg-RD9OK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/coffee-Ch7k5sss.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/codeql-DsOJ9woJ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/codeowners-Bp6g37R7.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cobol-nwyudZeR.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cmake-D1j8_8rp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/clojure-P80f7IUj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/client-state-owner-commands-eF8o01bj.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/client-state-BuuW23XK.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/client-state-B5fEQGqM.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/clarity-D53aC0YG.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-mocha-D87Tk5Gz.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-macchiato-DQyhUUbL.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-latte-C9dUb6Cb.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/catppuccin-frappe-DFWUc33u.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cairo-KRGpt6FW.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/cadence-Bv_4Rxtq.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/c-BIGW1oBm.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bundle-full-Cw7Z25xn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bsl-BO_Y6i37.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/blade-DVc8C-J4.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bicep-Bmn6On1c.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bibtex-CHM0blh-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/berry-D08WgyRC.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/beancount-k_qm7-4y.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/bat-BkioyH1T.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ballerina-BFfxhgS-.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ayu-dark-Cv9koXgw.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/awk-DMzUqQB5.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/aurora-x-D-2ljcwZ.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/astro-CbQHKStN.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/asm-D_Q5rh1f.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/asciidoc-Dv7Oe6Be.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ara-BRHolxvo.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/applescript-Co6uUVPk.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apl-dKokRX4l.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apex-DhZLUxFE.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/apache-Pmp26Uib.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ansi-Bn1IjLoh.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/angular-ts-BwZT4LLn.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/angular-html-CU67Zn6k.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/andromeeda-C-Jbm3Hp.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/ada-bCR0ucgS.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/actionscript-3-CfeIJUat.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/abap-BdImnpbu.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/StatusTab-DnFBRo-2.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-D3Ib7_Hf.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-CO6r4hn1.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Typewriter-Regular-C0xS9mPB.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-Dl5lxZxV.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-DWFBv043.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size4-Regular-BF-4gkZK.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size3-Regular-DgpXs0kz.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size3-Regular-CTq5MqoE.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-oD1tc_U0.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-Dy4dx90m.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size2-Regular-B7gKUWhC.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-mCD8mA8B.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-Dbsnue_I.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Size1-Regular-C195tn64.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-D5yQViql.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-D3wIWfF6.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Script-Regular-C5JkGWo-.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-DDBCnlJ7.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-CS6fqUqJ.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Regular-BNo7hRIc.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-YYjJ1zSn.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-DN2j7dab.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Italic-C3H0VqGB.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-DbIhKOiC.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-D1sUS0GD.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_SansSerif-Bold-CFMepnvq.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-t53AETM-.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-flOr_0UB.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-Italic-DA0__PXp.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-iY-2wyZ7.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-CZnvNsCZ.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Math-BoldItalic-B3XSjfu4.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-ypZvNtVU.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-Dr94JaBh.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Regular-B22Nviop.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-NWA7e6Wa.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-BMLOBm91.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Italic-3WenGoN9.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-SpSLRI95.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-DzxPMmG6.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-BoldItalic-DxDJ3AOS.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-waoOVXN0.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-Jm3AIy58.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Main-Bold-Cx986IdX.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-Dxdc4cR9.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-CTYiF6lA.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Regular-CB_wures.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-CL6g_b3V.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-BsDP51OF.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Fraktur-Bold-BdnERNNW.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-wX97UBjC.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-Di6jR-x-.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Regular-CTRA-rTL.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-Dq_IR9rO.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-BEiXGLvX.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_Caligraphic-Bold-ATXxdsX0.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-DRggAlZN.ttf\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-DMm9YOAa.woff\",\n \"revision\": null\n },\n {\n \"url\": \"assets/KaTeX_AMS-Regular-BQhdFMY1.woff2\",\n \"revision\": null\n },\n {\n \"url\": \"assets/FilesPanel-DnVndeY9.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CodeNomad-Icon-bmTWNPXy.png\",\n \"revision\": null\n },\n {\n \"url\": \"assets/CodeNomad-Icon-DTDWwXip.js\",\n \"revision\": null\n },\n {\n \"url\": \"assets/App-jVoiaLtK.js\",\n \"revision\": null\n },\n {\n \"url\": \"manifest.webmanifest\",\n \"revision\": \"4f4aaad9542bc67e284999ba91ccc883\"\n }\n], {});\nworkbox_precaching_cleanupOutdatedCaches();\n\n\n\nworkbox_routing_registerRoute(({ url, request }) => {\n if (url.pathname.startsWith(\"/api/\")) return false;\n if (request.destination === \"document\") return false;\n return [\"script\", \"style\", \"image\", \"font\"].includes(request.destination);\n }, new workbox_strategies_CacheFirst({ \"cacheName\":\"asset-cache\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 200, maxAgeSeconds: 2592000 }), new workbox_cacheable_response_CacheableResponsePlugin({ statuses: [ 0, 200 ] })] }), 'GET');\n\n\n\n\n"],"names":["self","skipWaiting","workbox_core_clientsClaim","workbox_precaching_precacheAndRoute","url","revision","workbox_precaching_cleanupOutdatedCaches","workbox_routing_registerRoute","request","pathname","startsWith","destination","includes","workbox_strategies_CacheFirst","cacheName","plugins","workbox_expiration_ExpirationPlugin","maxEntries","maxAgeSeconds","workbox_cacheable_response_CacheableResponsePlugin","statuses"],"mappings":"inBAyBAA,KAAKC,cAELC,EAAAA,eAQAC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,gBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,kBACPC,SAAY,oCAEd,CACED,IAAO,mBACPC,SAAY,oCAEd,CACED,IAAO,4BACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,WACPC,SAAY,oCAEd,CACED,IAAO,cACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,wDACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,mCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,wBACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,6BACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,2BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,8BACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,iCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,4BACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,kCACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,0BACPC,SAAY,MAEd,CACED,IAAO,+BACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,sCACPC,SAAY,MAEd,CACED,IAAO,uCACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,4CACPC,SAAY,MAEd,CACED,IAAO,2CACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,gDACPC,SAAY,MAEd,CACED,IAAO,kDACPC,SAAY,MAEd,CACED,IAAO,iDACPC,SAAY,MAEd,CACED,IAAO,+CACPC,SAAY,MAEd,CACED,IAAO,8CACPC,SAAY,MAEd,CACED,IAAO,6CACPC,SAAY,MAEd,CACED,IAAO,wCACPC,SAAY,MAEd,CACED,IAAO,yCACPC,SAAY,MAEd,CACED,IAAO,0CACPC,SAAY,MAEd,CACED,IAAO,gCACPC,SAAY,MAEd,CACED,IAAO,qCACPC,SAAY,MAEd,CACED,IAAO,oCACPC,SAAY,MAEd,CACED,IAAO,yBACPC,SAAY,MAEd,CACED,IAAO,uBACPC,SAAY,qCAEb,CAAE,GACLC,EAAAA,wBAIAC,EAAAA,cAA8B,EAAGH,MAAKI,cACpBJ,EAAIK,SAASC,WAAW,WACA,aAAxBF,EAAQG,aACL,CAAC,SAAU,QAAS,QAAS,QAAQC,SAASJ,EAAQG,cAC5D,IAAIE,EAAAA,WAA8B,CAAEC,UAAY,cAAeC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,IAAKC,cAAe,SAAY,IAAIC,EAAAA,wBAAmD,CAAEC,SAAU,CAAE,EAAG,UAAc"}