ctxpool 0.1.1 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. package/README.md +107 -99
  2. package/dist/cli.js +336 -183
  3. package/dist/cli.js.map +1 -1
  4. package/dist/clipboard.js +8 -10
  5. package/dist/clipboard.js.map +1 -1
  6. package/dist/format.d.ts +32 -0
  7. package/dist/format.js +110 -0
  8. package/dist/format.js.map +1 -0
  9. package/dist/handoff.d.ts +18 -13
  10. package/dist/handoff.js +495 -706
  11. package/dist/handoff.js.map +1 -1
  12. package/dist/mcp.js +99 -221
  13. package/dist/mcp.js.map +1 -1
  14. package/dist/pack.d.ts +14 -0
  15. package/dist/pack.js +121 -0
  16. package/dist/pack.js.map +1 -0
  17. package/dist/paths.d.ts +15 -0
  18. package/dist/paths.js +35 -5
  19. package/dist/paths.js.map +1 -1
  20. package/dist/redact.d.ts +6 -0
  21. package/dist/redact.js +85 -0
  22. package/dist/redact.js.map +1 -0
  23. package/dist/repo.d.ts +6 -1
  24. package/dist/repo.js +109 -123
  25. package/dist/repo.js.map +1 -1
  26. package/dist/session.d.ts +45 -1
  27. package/dist/session.js +1307 -302
  28. package/dist/session.js.map +1 -1
  29. package/dist/store.d.ts +14 -6
  30. package/dist/store.js +90 -115
  31. package/dist/store.js.map +1 -1
  32. package/dist/text.d.ts +6 -0
  33. package/dist/text.js +25 -0
  34. package/dist/text.js.map +1 -0
  35. package/dist/types.d.ts +92 -7
  36. package/dist/ui.d.ts +10 -1
  37. package/dist/ui.js +355 -382
  38. package/dist/ui.js.map +1 -1
  39. package/dist/util.d.ts +10 -1
  40. package/dist/util.js +40 -10
  41. package/dist/util.js.map +1 -1
  42. package/dist/verify.d.ts +16 -0
  43. package/dist/verify.js +74 -0
  44. package/dist/verify.js.map +1 -0
  45. package/dist/version.d.ts +1 -0
  46. package/dist/version.js +4 -0
  47. package/dist/version.js.map +1 -0
  48. package/dist-web/assets/Geist-Variable-B48wpBRb.woff2 +0 -0
  49. package/dist-web/assets/GeistMono-Variable-BRXCGrxA.woff2 +0 -0
  50. package/dist-web/assets/antigravity-Vc0oU6JN.svg +1 -0
  51. package/dist-web/assets/contextpool-mark-4vSRiUeZ.svg +1 -0
  52. package/dist-web/assets/index-BztZuBPJ.js +21 -0
  53. package/dist-web/assets/index-LvoT6mmM.css +2 -0
  54. package/dist-web/index.html +4 -3
  55. package/package.json +18 -17
  56. package/dist/logs.d.ts +0 -9
  57. package/dist/logs.js +0 -82
  58. package/dist/logs.js.map +0 -1
  59. package/dist-web/assets/contextpool-mark-Bu_00i5t.svg +0 -16
  60. package/dist-web/assets/index-BfHRocKl.js +0 -14
  61. package/dist-web/assets/index-l1QjYqDb.css +0 -2
package/dist/cli.js CHANGED
@@ -1,217 +1,370 @@
1
1
  #!/usr/bin/env node
2
2
  import { existsSync, mkdirSync, writeFileSync } from "node:fs";
3
- import { dirname, join } from "node:path";
4
- import { Command } from "commander";
3
+ import { basename, dirname, join } from "node:path";
4
+ import { spawn } from "node:child_process";
5
+ import { Command, InvalidArgumentError, Option } from "commander";
5
6
  import { copyToClipboard } from "./clipboard.js";
7
+ import { glyph, heading, line, note, plural, print, printError, relativeTime, rows, style, table, tildePath } from "./format.js";
6
8
  import { buildTeamTimelineExport, createHandoff } from "./handoff.js";
7
- import { discoverAgentSignals } from "./logs.js";
8
- import { ensureCtxDirs } from "./paths.js";
9
- import { startMcpServer } from "./mcp.js";
9
+ import { DEFAULT_CONFIG, ensureCtxDirs, getCtxPaths, loadConfig } from "./paths.js";
10
+ import { gitTopLevel } from "./repo.js";
11
+ import { listSessionCandidates, SOURCE_AGENTS, sourceLabel, sourceSessionDirs } from "./session.js";
10
12
  import { openStore } from "./store.js";
11
- import { startUi } from "./ui.js";
13
+ import { formatTokens } from "./text.js";
14
+ import { CtxError } from "./util.js";
15
+ import { VERSION } from "./version.js";
12
16
  const program = new Command();
13
17
  program
14
18
  .name("ctxpool")
15
- .description("Local-first handoff packets for AI coding agents.")
16
- .version("0.1.1");
17
- program.command("init").description("Create the local ContextPool store.").action(async () => {
18
- const paths = ensureCtxDirs();
19
- if (!existsSync(paths.configPath)) {
20
- writeFileSync(paths.configPath, JSON.stringify({
21
- version: 1,
22
- ui: { host: "127.0.0.1", port: 4377 },
23
- ollama: { model: process.env.CTXPOOL_OLLAMA_MODEL || "llama3.1" }
24
- }, null, 2));
25
- }
26
- const store = await openStore();
27
- store.close();
28
- console.log(`ContextPool initialized at ${paths.home}`);
29
- });
19
+ .description("Hand off AI coding sessions between Codex, Claude, Gemini, Antigravity, and any MCP-capable agent.")
20
+ .version(VERSION, "-v, --version", "Show the version")
21
+ .helpOption("-h, --help", "Show help")
22
+ .helpCommand(false)
23
+ .showHelpAfterError(style.dim("(run ctxpool --help for usage)"))
24
+ .configureHelp({
25
+ sortSubcommands: false,
26
+ styleTitle: (text) => style.bold(text),
27
+ styleDescriptionText: (text) => style.dim(text),
28
+ styleOptionTerm: (text) => text,
29
+ styleSubcommandTerm: (text) => text
30
+ })
31
+ .configureOutput({ outputError: (text, write) => write(`${style.red(text.trimEnd())}\n`) })
32
+ .addHelpText("after", [
33
+ "",
34
+ style.bold("Examples:"),
35
+ ` ctxpool handoff ${style.dim("Hand off the latest session in this repo")}`,
36
+ ` ctxpool handoff --from codex ${style.dim("Choose when several agents were active")}`,
37
+ ` ctxpool sessions ${style.dim("See which sessions ContextPool can read")}`,
38
+ ` ctxpool ui ${style.dim("Browse handoffs in the browser")}`,
39
+ ""
40
+ ].join("\n"));
41
+ program.action(() => program.help());
42
+ const fromOption = () => new Option("--from <agent>", "Source agent").choices(["auto", ...SOURCE_AGENTS]).default("auto");
43
+ const budgetOption = () => new Option("--budget <tokens>", "Token budget for the transcript excerpt").argParser(positiveInt);
30
44
  program
31
45
  .command("handoff")
32
- .description("Capture repo/task state and create a handoff packet.")
33
- .option("--task <task>", "Task name. Defaults to git branch or repo name.")
34
- .option("--from <agent>", "Source agent to export from: auto, codex, claude.", "auto")
35
- .option("--session <id-or-path>", "Specific source session id or JSONL path.")
36
- .option("--no-transcript", "Do not include the transcript excerpt in the markdown.")
37
- .option("--to <agent>", "Target agent label, e.g. claude, codex, cursor.")
38
- .option("--budget <tokens>", "Reserved for future token budgeting.", parseInt)
39
- .option("--open", "Start the local observability UI after creating the handoff.")
40
- .option("--no-ollama", "Skip optional Ollama enhancement.")
46
+ .description("Capture the current session and copy a handoff to the clipboard")
47
+ .option("--task <name>", "Task name (defaults to the branch or repo name)")
48
+ .addOption(fromOption())
49
+ .option("--session <id|path>", "Use a specific session id or session file")
50
+ .option("--to <agent>", "Name the agent that will pick this up")
51
+ .option("--no-transcript", "Leave the recent transcript out of the handoff")
52
+ .addOption(budgetOption())
53
+ .option("--ollama", "Ask a local Ollama model to phrase the next action")
54
+ .addOption(new Option("--no-ollama").hideHelp())
55
+ .option("--open", "Open the UI afterwards")
56
+ .option("--json", "Print machine-readable output")
41
57
  .action(async (options) => {
42
- ensureCtxDirs();
43
- const packet = await createHandoff({
44
- task: options.task,
45
- from: options.from,
46
- session: options.session,
47
- includeTranscript: options.transcript,
48
- to: options.to,
49
- budget: options.budget,
50
- useOllama: options.ollama
51
- });
52
- const store = await openStore();
53
- store.saveHandoff(packet);
54
- store.close();
58
+ const packet = await capture(options);
55
59
  const copied = copyToClipboard(packet.markdown);
56
- printHandoffResult(packet.task, packet.markdownPath, copied, packet.sections.nextBestAction);
57
- if (options.open) {
58
- await startUi();
59
- }
60
- });
61
- program
62
- .command("ui")
63
- .description("Start the local context builder UI.")
64
- .option("--host <host>", "Host to bind.", "127.0.0.1")
65
- .option("--port <port>", "Port to bind.", (value) => parseInt(value, 10))
66
- .action(async (options) => {
67
- await startUi(options);
60
+ if (options.json)
61
+ return printJson({ ...packetJson(packet), copied });
62
+ printHandoff(packet, copied ? "copied" : "saved");
63
+ if (options.open)
64
+ await runUi({ open: true });
68
65
  });
69
66
  program
70
67
  .command("capture")
71
- .description("Capture current repo/task state without copying to clipboard.")
72
- .option("--task <task>", "Task name. Defaults to git branch or repo name.")
73
- .option("--from <agent>", "Source agent to export from: auto, codex, claude.", "auto")
74
- .option("--session <id-or-path>", "Specific source session id or JSONL path.")
75
- .option("--no-transcript", "Do not include the transcript excerpt in the markdown.")
76
- .option("--no-ollama", "Skip optional Ollama enhancement.")
68
+ .description("Capture the current session without touching the clipboard")
69
+ .option("--task <name>", "Task name (defaults to the branch or repo name)")
70
+ .addOption(fromOption())
71
+ .option("--session <id|path>", "Use a specific session id or session file")
72
+ .option("--no-transcript", "Leave the recent transcript out of the handoff")
73
+ .addOption(budgetOption())
74
+ .option("--ollama", "Ask a local Ollama model to phrase the next action")
75
+ .addOption(new Option("--no-ollama").hideHelp())
76
+ .option("--json", "Print machine-readable output")
77
77
  .action(async (options) => {
78
- const packet = await createHandoff({
79
- task: options.task,
80
- from: options.from,
81
- session: options.session,
82
- includeTranscript: options.transcript,
83
- useOllama: options.ollama
84
- });
85
- const store = await openStore();
86
- store.saveHandoff(packet);
87
- store.close();
88
- console.log(`Captured ${packet.task}`);
89
- console.log(`Saved: ${packet.markdownPath}`);
90
- });
91
- const importCommand = program.command("import").description("Inspect local agent logs.");
92
- importCommand
93
- .command("codex")
94
- .description("Inspect recent Codex logs.")
95
- .option("--path <path>", "Codex sessions directory.")
96
- .option("--latest", "Only inspect the latest files.", true)
97
- .action((options) => {
98
- const signals = discoverAgentSignals({ codexPath: options.path, claudePath: "/__ctxpool_skip_claude__", latest: options.latest });
99
- printSignals(signals);
78
+ const packet = await capture(options);
79
+ if (options.json)
80
+ return printJson(packetJson(packet));
81
+ printHandoff(packet, "captured");
100
82
  });
101
- importCommand
102
- .command("claude")
103
- .description("Inspect recent Claude Code logs.")
104
- .option("--path <path>", "Claude projects directory.")
105
- .option("--latest", "Only inspect the latest files.", true)
83
+ program
84
+ .command("sessions")
85
+ .description("List the Codex, Claude, Gemini, and Antigravity sessions ContextPool can read")
86
+ .addOption(fromOption())
87
+ .option("--all", "Include sessions from other folders")
88
+ .option("-n, --limit <count>", "How many to show", positiveInt, 10)
89
+ .option("--json", "Print machine-readable output")
106
90
  .action((options) => {
107
- const signals = discoverAgentSignals({ codexPath: "/__ctxpool_skip_codex__", claudePath: options.path, latest: options.latest });
108
- printSignals(signals);
109
- });
110
- program.command("tasks").description("List known handoff tasks.").action(async () => {
111
- const store = await openStore();
112
- try {
113
- const tasks = store.listTasks();
114
- if (tasks.length === 0) {
115
- console.log("No handoff tasks found. Run `ctxpool handoff` first.");
116
- return;
117
- }
118
- for (const task of tasks) {
119
- console.log(`${task.task}\t${task.handoffCount} handoff(s)\tlatest ${task.latestAt}`);
120
- }
121
- }
122
- finally {
123
- store.close();
91
+ const cwd = process.cwd();
92
+ const repoRoot = gitTopLevel(cwd);
93
+ const candidates = listSessionCandidates({ cwd, repoRoot, from: options.from });
94
+ const visible = (options.all ? candidates : candidates.filter((candidate) => candidate.matchedCwd)).slice(0, options.limit);
95
+ if (options.json)
96
+ return printJson(visible);
97
+ const place = basename(repoRoot || cwd);
98
+ if (!visible.length) {
99
+ return print([
100
+ heading("No sessions here", place),
101
+ "",
102
+ note(candidates.length ? "Other folders have sessions. Run `ctxpool sessions --all` to see them." : `Looked in ${Object.values(sourceSessionDirs()).map(tildePath).join(", ")}.`)
103
+ ]);
124
104
  }
105
+ const pick = visible.find((candidate) => candidate.matchedCwd);
106
+ print([
107
+ heading("Sessions", options.all ? "all folders" : place),
108
+ "",
109
+ ...table(visible.map((candidate) => [
110
+ candidate === pick ? glyph.active : " ",
111
+ sourceLabel(candidate.source),
112
+ truncateCell(candidate.title || style.dim("Untitled"), 44),
113
+ style.dim(relativeTime(candidate.updatedAt)),
114
+ style.dim(candidate.id.slice(0, 8)),
115
+ ...(options.all ? [style.dim(candidate.matchedCwd ? "this repo" : tildePath(candidate.cwd || "unknown"))] : [])
116
+ ])),
117
+ "",
118
+ pick ? note("● is what `ctxpool handoff` will use.") : note("None of these ran in this folder. Pass --session <id> to pick one.")
119
+ ]);
125
120
  });
126
- program.command("status").description("Show local ContextPool status.").action(async () => {
127
- const store = await openStore();
128
- try {
129
- const status = store.getStatus();
130
- console.log(`Home: ${status.home}`);
131
- console.log(`Database: ${status.dbPath}`);
132
- console.log(`Team exports: ${status.teamExportsDir}`);
133
- console.log(`Tasks: ${status.taskCount}`);
134
- console.log(`Handoffs: ${status.handoffCount}`);
135
- }
136
- finally {
137
- store.close();
121
+ program
122
+ .command("tasks")
123
+ .description("List tasks with saved handoffs")
124
+ .option("--json", "Print machine-readable output")
125
+ .action((options) => withStore((store) => {
126
+ const tasks = store.listTasks();
127
+ if (options.json)
128
+ return printJson(tasks);
129
+ if (!tasks.length)
130
+ return print([heading("No handoffs yet"), "", note("Run `ctxpool handoff` in a repo where you've used Codex, Claude, Gemini, or Antigravity.")]);
131
+ print([
132
+ heading("Tasks"),
133
+ "",
134
+ ...table(tasks.map((task) => [task.task, style.dim(plural(task.handoffCount, "handoff")), style.dim(relativeTime(task.latestAt))]))
135
+ ]);
136
+ }));
137
+ program
138
+ .command("show")
139
+ .description("Print a saved handoff")
140
+ .argument("[task]", "Task name, or `latest`", "latest")
141
+ .option("--task <name>", "Task name")
142
+ .option("--id <id>", "A specific handoff id instead of a task's latest")
143
+ .option("--json", "Print the full packet as JSON")
144
+ .action((target, options) => withStore((store) => {
145
+ if (options.id) {
146
+ const handoff = store.getHandoffById(options.id);
147
+ if (!handoff)
148
+ throw new CtxError(`No handoff with id "${options.id}".`, "Pass a task name instead. `ctxpool tasks` lists them.");
149
+ if (options.json)
150
+ return printJson(handoff);
151
+ return void process.stdout.write(`${handoff.markdown}\n`);
138
152
  }
153
+ const task = options.task || (target === "latest" ? undefined : target);
154
+ const handoff = store.getLatestHandoff(task);
155
+ if (!handoff)
156
+ throw new CtxError(task ? `No handoff found for "${task}".` : "No handoffs yet.", "Run `ctxpool handoff` to capture one, or `ctxpool tasks` to list tasks.");
157
+ if (options.json)
158
+ return printJson(handoff);
159
+ process.stdout.write(`${handoff.markdown}\n`);
160
+ }));
161
+ program
162
+ .command("status")
163
+ .description("Show where ContextPool keeps data and what it can see")
164
+ .option("--json", "Print machine-readable output")
165
+ .action((options) => withStore((store) => {
166
+ const status = store.getStatus();
167
+ const dirs = sourceSessionDirs();
168
+ const agents = Object.fromEntries(SOURCE_AGENTS.map((source) => [source, existsSync(dirs[source])]));
169
+ if (options.json)
170
+ return printJson({ version: VERSION, ...status, agents });
171
+ print([
172
+ heading("ContextPool", VERSION),
173
+ "",
174
+ ...rows([
175
+ ["Store", tildePath(status.home)],
176
+ ["Tasks", String(status.taskCount)],
177
+ ["Handoffs", String(status.handoffCount)],
178
+ ["Packs", String(status.packCount)],
179
+ ["Agents", SOURCE_AGENTS.map((source) => `${agents[source] ? glyph.ok : glyph.idle} ${sourceLabel(source)}`).join(" ")]
180
+ ])
181
+ ]);
182
+ }));
183
+ program
184
+ .command("init")
185
+ .description("Create the local store and config")
186
+ .action(() => withStore(() => {
187
+ const paths = ensureCtxDirs();
188
+ if (!existsSync(paths.configPath))
189
+ writeFileSync(paths.configPath, `${JSON.stringify(DEFAULT_CONFIG, null, 2)}\n`, { mode: 0o600 });
190
+ print([line(`${glyph.ok} ContextPool is ready`), note(` ${tildePath(paths.home)}`), "", note("Next: run `ctxpool handoff` in a repo where you've used Codex, Claude, Gemini, or Antigravity.")]);
191
+ }));
192
+ program
193
+ .command("ui")
194
+ .description("Browse handoffs and build context packs in your browser")
195
+ .option("--host <host>", "Host to bind")
196
+ .option("--port <port>", "Port to bind", positiveInt)
197
+ .option("--open", "Open the browser")
198
+ .action((options) => runUi(options));
199
+ const team = program.command("team").description("Share handoffs with a team");
200
+ team
201
+ .command("export")
202
+ .description("Write the latest handoff as a redacted, sync-ready JSON packet")
203
+ .option("--task <name>", "Task name")
204
+ .option("--out <path>", "Output file")
205
+ .option("--include-transcript", "Include the raw transcript", false)
206
+ .option("--json", "Print machine-readable output")
207
+ .action((options) => withStore((store) => {
208
+ const paths = ensureCtxDirs();
209
+ const handoff = store.getLatestHandoff(options.task);
210
+ if (!handoff)
211
+ throw new CtxError(options.task ? `No handoff found for "${options.task}".` : "No handoffs yet.", "Run `ctxpool handoff` first.");
212
+ const exported = buildTeamTimelineExport(handoff, { includeRawTranscript: options.includeTranscript });
213
+ const outPath = options.out || join(paths.teamExportsDir, exported.task, `${exported.id}.json`);
214
+ mkdirSync(dirname(outPath), { recursive: true });
215
+ writeFileSync(outPath, JSON.stringify(exported, null, 2), { encoding: "utf8", mode: 0o600 });
216
+ if (options.json)
217
+ return printJson({ task: exported.task, path: outPath, transcript: exported.engineeringMemory?.teamSync.rawTranscript });
218
+ print([
219
+ line(`${glyph.ok} ${style.bold("Team export ready")}`),
220
+ "",
221
+ ...rows([
222
+ ["Task", exported.task],
223
+ ["Transcript", exported.engineeringMemory?.teamSync.rawTranscript === "included" ? `${glyph.warn} included` : "excluded"],
224
+ ["Secrets", "redacted"],
225
+ ["Saved", tildePath(outPath)]
226
+ ])
227
+ ]);
228
+ }));
229
+ const mcp = program
230
+ .command("mcp")
231
+ .description("Serve handoffs to agents over MCP")
232
+ .addHelpText("after", [
233
+ "",
234
+ style.bold("Connect an agent:"),
235
+ " claude mcp add contextpool -- npx -y ctxpool mcp start",
236
+ " codex mcp add contextpool -- npx -y ctxpool mcp start",
237
+ " gemini mcp add -s user contextpool npx -y ctxpool mcp start",
238
+ ""
239
+ ].join("\n"));
240
+ mcp.action(() => mcp.help());
241
+ mcp
242
+ .command("start")
243
+ .description("Start the stdio MCP server")
244
+ .action(async () => {
245
+ const { startMcpServer } = await import("./mcp.js");
246
+ await startMcpServer();
139
247
  });
140
- const show = program.command("show").description("Show saved handoffs.");
141
- show.command("latest").description("Print the latest handoff packet.").option("--task <task>", "Task name.").action(async (options) => {
142
- const store = await openStore();
143
- try {
144
- const handoff = store.getLatestHandoff(options.task);
145
- if (!handoff) {
146
- console.error("No handoff found. Run `ctxpool handoff` first.");
147
- process.exitCode = 1;
148
- return;
149
- }
150
- console.log(handoff.markdown);
248
+ program.parseAsync(process.argv).catch((error) => {
249
+ if (error instanceof CtxError) {
250
+ printError(error.message, error.hint);
151
251
  }
152
- finally {
153
- store.close();
252
+ else {
253
+ printError(error instanceof Error ? error.message : String(error), process.env.CTXPOOL_DEBUG ? undefined : "Set CTXPOOL_DEBUG=1 for details.");
254
+ if (process.env.CTXPOOL_DEBUG && error instanceof Error && error.stack)
255
+ process.stderr.write(`${error.stack}\n`);
154
256
  }
257
+ process.exitCode = 1;
155
258
  });
156
- const team = program.command("team").description("Prepare local handoffs for a future ContextPool Team Timeline.");
157
- team
158
- .command("export")
159
- .description("Export the latest handoff as a redacted, sync-ready team timeline packet.")
160
- .option("--task <task>", "Task name.")
161
- .option("--out <path>", "Output JSON path.")
162
- .option("--include-transcript", "Include raw transcript entries in the export.", false)
163
- .action(async (options) => {
164
- const paths = ensureCtxDirs();
259
+ // ---------------------------------------------------------------------------
260
+ async function capture(options) {
261
+ const config = loadConfig();
262
+ const packet = await createHandoff({
263
+ task: options.task,
264
+ from: options.from,
265
+ session: options.session,
266
+ includeTranscript: options.transcript,
267
+ to: options.to,
268
+ budget: options.budget,
269
+ useOllama: options.ollama ?? config.ollama.enabled,
270
+ ollamaModel: config.ollama.model
271
+ });
272
+ await withStore((store) => store.saveHandoff(packet));
273
+ return packet;
274
+ }
275
+ function printHandoff(packet, outcome) {
276
+ const summary = packet.handoffSummary;
277
+ const session = packet.sourceSession;
278
+ const stats = summary.repoStats;
279
+ const checks = summary.verification.commands
280
+ .slice(-3)
281
+ .map((command) => `${command.status === "passed" ? glyph.ok : command.status === "failed" ? glyph.fail : glyph.unknown} ${truncateCell(command.command, 60)}`);
282
+ const repoLine = [
283
+ basename(packet.repo.repoPath),
284
+ packet.repo.isGitRepo ? `${packet.repo.branch} @ ${packet.repo.commit}` : "not a git repo",
285
+ stats.dirtyFiles ? `${plural(stats.dirtyFiles, "file")} ${style.green(`+${stats.additions}`)} ${style.red(`-${stats.deletions}`)}` : "clean"
286
+ ].join(style.dim(" · "));
287
+ const footer = outcome === "copied"
288
+ ? `${glyph.ok} Copied to clipboard ${style.dim(`· ~${formatTokens(packet.tokenEstimate || 0)} tokens`)}`
289
+ : outcome === "saved"
290
+ ? `${glyph.warn} Clipboard unavailable ${style.dim("· saved to disk")}`
291
+ : `${glyph.ok} Saved ${style.dim(`· ~${formatTokens(packet.tokenEstimate || 0)} tokens`)}`;
292
+ print([
293
+ heading(outcome === "captured" ? "Captured" : "Handoff ready"),
294
+ "",
295
+ ...rows([
296
+ ["Task", packet.task],
297
+ ["Source", session ? [sourceLabel(session.source), session.threadName, relativeTime(session.updatedAt)].filter(Boolean).join(style.dim(" · ")) : undefined],
298
+ ["Repo", repoLine],
299
+ ["Phase", summary.workPhase],
300
+ ...checks.map((check, index) => [index === 0 ? "Checks" : "", check]),
301
+ ...(checks.length ? [] : [["Checks", style.dim("none recorded")]]),
302
+ ["Next", summary.nextAction]
303
+ ]),
304
+ session && !session.matchedCwd ? ["", line(`${glyph.warn} ${style.dim(`This session ran in ${tildePath(session.cwd || "another folder")}, not here.`)}`)].join("\n") : undefined,
305
+ "",
306
+ line(footer),
307
+ note(` ${tildePath(packet.markdownPath)}`)
308
+ ]);
309
+ }
310
+ function packetJson(packet) {
311
+ const summary = packet.handoffSummary;
312
+ return {
313
+ id: packet.id,
314
+ task: packet.task,
315
+ path: packet.markdownPath,
316
+ tokens: packet.tokenEstimate,
317
+ phase: summary.workPhase,
318
+ nextAction: summary.nextAction,
319
+ verification: summary.verification,
320
+ source: packet.sourceSession ? { agent: packet.sourceSession.source, id: packet.sourceSession.id, title: packet.sourceSession.threadName } : undefined
321
+ };
322
+ }
323
+ async function runUi(options) {
324
+ const config = loadConfig();
325
+ const { startUi } = await import("./ui.js");
326
+ const ui = await startUi({ host: options.host || config.ui.host, port: options.port ?? config.ui.port, fallback: options.port === undefined });
327
+ const exposed = !["127.0.0.1", "localhost", "::1"].includes(ui.host);
328
+ print([
329
+ heading("ContextPool UI"),
330
+ "",
331
+ ...rows([
332
+ ["Local", ui.url],
333
+ ["Store", tildePath(getCtxPaths().home)]
334
+ ]),
335
+ exposed ? ["", line(`${glyph.warn} ${style.dim("Bound beyond localhost. Anyone on this network can read your handoffs.")}`)].join("\n") : undefined,
336
+ "",
337
+ note("Press Ctrl+C to stop.")
338
+ ]);
339
+ if (options.open)
340
+ openBrowser(ui.url);
341
+ const stop = () => void ui.close().then(() => process.exit(0));
342
+ process.once("SIGINT", stop);
343
+ process.once("SIGTERM", stop);
344
+ }
345
+ function openBrowser(url) {
346
+ const [cmd, args] = process.platform === "darwin" ? ["open", [url]] : process.platform === "win32" ? ["cmd", ["/c", "start", "", url]] : ["xdg-open", [url]];
347
+ spawn(cmd, args, { stdio: "ignore", detached: true }).on("error", () => undefined).unref();
348
+ }
349
+ async function withStore(fn) {
165
350
  const store = await openStore();
166
351
  try {
167
- const handoff = store.getLatestHandoff(options.task);
168
- if (!handoff) {
169
- console.error("No handoff found. Run `ctxpool handoff` first.");
170
- process.exitCode = 1;
171
- return;
172
- }
173
- const exported = buildTeamTimelineExport(handoff, { includeRawTranscript: options.includeTranscript });
174
- const outPath = options.out || join(paths.teamExportsDir, exported.task, `${exported.id}.json`);
175
- mkdirSync(dirname(outPath), { recursive: true });
176
- writeFileSync(outPath, JSON.stringify(exported, null, 2), "utf8");
177
- console.log("ContextPool team timeline export created");
178
- console.log("");
179
- console.log(`Task: ${exported.task}`);
180
- console.log(`Saved: ${outPath}`);
181
- console.log(`Raw transcript: ${exported.engineeringMemory?.teamSync.rawTranscript || "excluded"}`);
182
- console.log(`Sync mode: ${exported.engineeringMemory?.teamSync.mode || "sync-ready"}`);
352
+ return fn(store);
183
353
  }
184
354
  finally {
185
355
  store.close();
186
356
  }
187
- });
188
- const mcp = program.command("mcp").description("Run the ContextPool MCP server.");
189
- mcp.command("start").description("Start the stdio MCP server.").action(async () => {
190
- await startMcpServer();
191
- });
192
- program.parseAsync(process.argv).catch((error) => {
193
- console.error(error instanceof Error ? error.message : String(error));
194
- process.exit(1);
195
- });
196
- function printHandoffResult(task, markdownPath, copied, nextBestAction) {
197
- console.log("ContextPool handoff created");
198
- console.log("");
199
- console.log(`Task: ${task}`);
200
- console.log(`Copied: ${copied ? "yes" : "no"}`);
201
- console.log(`Saved: ${markdownPath}`);
202
- console.log("");
203
- console.log("Next best action:");
204
- console.log(nextBestAction);
205
357
  }
206
- function printSignals(signals) {
207
- if (signals.length === 0) {
208
- console.log("No relevant agent log signals found.");
209
- return;
210
- }
211
- for (const signal of signals) {
212
- console.log(`${signal.source}: ${signal.path}`);
213
- for (const snippet of signal.snippets.slice(0, 8))
214
- console.log(` - ${snippet}`);
215
- }
358
+ function printJson(value) {
359
+ process.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
360
+ }
361
+ function positiveInt(value) {
362
+ const parsed = Number(value);
363
+ if (!Number.isInteger(parsed) || parsed <= 0)
364
+ throw new InvalidArgumentError("Expected a positive whole number.");
365
+ return parsed;
366
+ }
367
+ function truncateCell(text, max) {
368
+ return text.length > max ? `${text.slice(0, max - 1)}…` : text;
216
369
  }
217
370
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACjI,OAAO,EAAE,uBAAuB,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AACxC,OAAO,EAAE,qBAAqB,EAAE,aAAa,EAAE,WAAW,EAAE,iBAAiB,EAAoB,MAAM,cAAc,CAAC;AACtH,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,oGAAoG,CAAC;KACjH,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,kBAAkB,CAAC;KACrD,UAAU,CAAC,YAAY,EAAE,WAAW,CAAC;KACrC,WAAW,CAAC,KAAK,CAAC;KAClB,kBAAkB,CAAC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;KAC/D,aAAa,CAAC;IACb,eAAe,EAAE,KAAK;IACtB,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;IACtC,oBAAoB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC;IAC/C,eAAe,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI;IAC/B,mBAAmB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI;CACpC,CAAC;KACD,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;KAC1F,WAAW,CACV,OAAO,EACP;IACE,EAAE;IACF,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;IACvB,mCAAmC,KAAK,CAAC,GAAG,CAAC,0CAA0C,CAAC,EAAE;IAC1F,mCAAmC,KAAK,CAAC,GAAG,CAAC,wCAAwC,CAAC,EAAE;IACxF,mCAAmC,KAAK,CAAC,GAAG,CAAC,yCAAyC,CAAC,EAAE;IACzF,mCAAmC,KAAK,CAAC,GAAG,CAAC,gCAAgC,CAAC,EAAE;IAChF,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AAEJ,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;AAErC,MAAM,UAAU,GAAG,GAAG,EAAE,CACtB,IAAI,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,aAAa,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AACnG,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,IAAI,MAAM,CAAC,mBAAmB,EAAE,yCAAyC,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;AAc7H,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,iEAAiE,CAAC;KAC9E,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;KAC1E,SAAS,CAAC,UAAU,EAAE,CAAC;KACvB,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,CAAC;KAC1E,MAAM,CAAC,cAAc,EAAE,uCAAuC,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,SAAS,CAAC,YAAY,EAAE,CAAC;KACzB,MAAM,CAAC,UAAU,EAAE,oDAAoD,CAAC;KACxE,SAAS,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;KAC/C,MAAM,CAAC,QAAQ,EAAE,wBAAwB,CAAC;KAC1C,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;IACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAChD,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACtE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAClD,IAAI,OAAO,CAAC,IAAI;QAAE,MAAM,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,4DAA4D,CAAC;KACzE,MAAM,CAAC,eAAe,EAAE,iDAAiD,CAAC;KAC1E,SAAS,CAAC,UAAU,EAAE,CAAC;KACvB,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,CAAC;KAC1E,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;KAC3E,SAAS,CAAC,YAAY,EAAE,CAAC;KACzB,MAAM,CAAC,UAAU,EAAE,oDAAoD,CAAC;KACxE,SAAS,CAAC,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,QAAQ,EAAE,CAAC;KAC/C,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;KACjD,MAAM,CAAC,KAAK,EAAE,OAAuB,EAAE,EAAE;IACxC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,YAAY,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,UAAU,CAAC;KACnB,WAAW,CAAC,+EAA+E,CAAC;KAC5F,SAAS,CAAC,UAAU,EAAE,CAAC;KACvB,MAAM,CAAC,OAAO,EAAE,qCAAqC,CAAC;KACtD,MAAM,CAAC,qBAAqB,EAAE,kBAAkB,EAAE,WAAW,EAAE,EAAE,CAAC;KAClE,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;KACjD,MAAM,CAAC,CAAC,OAA4E,EAAE,EAAE;IACvF,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAC1B,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,UAAU,GAAG,qBAAqB,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAChF,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5H,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;IAE5C,MAAM,KAAK,GAAG,QAAQ,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC;IACxC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;YACX,OAAO,CAAC,kBAAkB,EAAE,KAAK,CAAC;YAClC,EAAE;YACF,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,wEAAwE,CAAC,CAAC,CAAC,aAAa,MAAM,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;SAClL,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC/D,KAAK,CAAC;QACJ,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC;QACxD,EAAE;QACF,GAAG,KAAK,CACN,OAAO,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC;YACzB,SAAS,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;YACvC,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC;YAC7B,YAAY,CAAC,SAAS,CAAC,KAAK,IAAI,KAAK,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;YAC1D,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;YAC5C,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACnC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAChH,CAAC,CACH;QACD,EAAE;QACF,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,oEAAoE,CAAC;KAClI,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;KACjD,MAAM,CAAC,CAAC,OAA2B,EAAE,EAAE,CACtC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;IAClB,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IAChC,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC,KAAK,CAAC,CAAC;IAC1C,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,0FAA0F,CAAC,CAAC,CAAC,CAAC;IACpK,KAAK,CAAC;QACJ,OAAO,CAAC,OAAO,CAAC;QAChB,EAAE;QACF,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;KACpI,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,uBAAuB,CAAC;KACpC,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,EAAE,QAAQ,CAAC;KACtD,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC;KACpC,MAAM,CAAC,WAAW,EAAE,kDAAkD,CAAC;KACvE,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;KACjD,MAAM,CAAC,CAAC,MAAc,EAAE,OAAuD,EAAE,EAAE,CAClF,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;IAClB,IAAI,OAAO,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,QAAQ,CAAC,uBAAuB,OAAO,CAAC,EAAE,IAAI,EAAE,uDAAuD,CAAC,CAAC;QACjI,IAAI,OAAO,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;QAC5C,OAAO,KAAK,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IAC5D,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC7C,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,IAAI,IAAI,CAAC,CAAC,CAAC,kBAAkB,EAAE,yEAAyE,CAAC,CAAC;IAC3K,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC,OAAO,CAAC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;AAChD,CAAC,CAAC,CACH,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,uDAAuD,CAAC;KACpE,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;KACjD,MAAM,CAAC,CAAC,OAA2B,EAAE,EAAE,CACtC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;IAClB,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;IACjC,MAAM,IAAI,GAAG,iBAAiB,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACrG,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5E,KAAK,CAAC;QACJ,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC;QAC/B,EAAE;QACF,GAAG,IAAI,CAAC;YACN,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACjC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,CAAC,UAAU,EAAE,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YACzC,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACnC,CAAC,QAAQ,EAAE,aAAa,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC1H,CAAC;KACH,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,GAAG,EAAE,CACX,SAAS,CAAC,GAAG,EAAE;IACb,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC;QAAE,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACpI,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,uBAAuB,CAAC,EAAE,IAAI,CAAC,KAAK,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,gGAAgG,CAAC,CAAC,CAAC,CAAC;AACpM,CAAC,CAAC,CACH,CAAC;AAEJ,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,WAAW,CAAC,yDAAyD,CAAC;KACtE,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC;KACvC,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,WAAW,CAAC;KACpD,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC;KACpC,MAAM,CAAC,CAAC,OAAyD,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;AAEzF,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,4BAA4B,CAAC,CAAC;AAC/E,IAAI;KACD,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC;KACpC,MAAM,CAAC,cAAc,EAAE,aAAa,CAAC;KACrC,MAAM,CAAC,sBAAsB,EAAE,4BAA4B,EAAE,KAAK,CAAC;KACnE,MAAM,CAAC,QAAQ,EAAE,+BAA+B,CAAC;KACjD,MAAM,CAAC,CAAC,OAAoF,EAAE,EAAE,CAC/F,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;IAClB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACrD,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,yBAAyB,OAAO,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,kBAAkB,EAAE,8BAA8B,CAAC,CAAC;IAChJ,MAAM,QAAQ,GAAG,uBAAuB,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,OAAO,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvG,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,IAAI,EAAE,GAAG,QAAQ,CAAC,EAAE,OAAO,CAAC,CAAC;IAChG,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7F,IAAI,OAAO,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC3I,KAAK,CAAC;QACJ,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC;QACtD,EAAE;QACF,GAAG,IAAI,CAAC;YACN,CAAC,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC;YACvB,CAAC,YAAY,EAAE,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,CAAC,aAAa,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC;YACzH,CAAC,SAAS,EAAE,UAAU,CAAC;YACvB,CAAC,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;SAC9B,CAAC;KACH,CAAC,CAAC;AACL,CAAC,CAAC,CACH,CAAC;AAEJ,MAAM,GAAG,GAAG,OAAO;KAChB,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,mCAAmC,CAAC;KAChD,WAAW,CACV,OAAO,EACP;IACE,EAAE;IACF,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC;IAC/B,0DAA0D;IAC1D,yDAAyD;IACzD,+DAA+D;IAC/D,EAAE;CACH,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;AACJ,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;AAC7B,GAAG;KACA,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;IACxD,IAAI,KAAK,YAAY,QAAQ,EAAE,CAAC;QAC9B,UAAU,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,UAAU,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC;QAC/I,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,KAAK;YAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAC;IACnH,CAAC;IACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;AACvB,CAAC,CAAC,CAAC;AAEH,8EAA8E;AAE9E,KAAK,UAAU,OAAO,CAAC,OAAuB;IAC5C,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC;QACjC,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,iBAAiB,EAAE,OAAO,CAAC,UAAU;QACrC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO;QAClD,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;KACjC,CAAC,CAAC;IACH,MAAM,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,MAAqB,EAAE,OAAwC;IACnF,MAAM,OAAO,GAAG,MAAM,CAAC,cAAe,CAAC;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC;IAChC,MAAM,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,QAAQ;SACzC,KAAK,CAAC,CAAC,CAAC,CAAC;SACT,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,YAAY,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;IACjK,MAAM,QAAQ,GAAG;QACf,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC9B,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,MAAM,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,gBAAgB;QAC1F,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO;KAC7I,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzB,MAAM,MAAM,GACV,OAAO,KAAK,QAAQ;QAClB,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,wBAAwB,KAAK,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;QACxG,CAAC,CAAC,OAAO,KAAK,OAAO;YACnB,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,0BAA0B,KAAK,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE;YACvE,CAAC,CAAC,GAAG,KAAK,CAAC,EAAE,UAAU,KAAK,CAAC,GAAG,CAAC,MAAM,YAAY,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;IAEjG,KAAK,CAAC;QACJ,OAAO,CAAC,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC;QAC9D,EAAE;QACF,GAAG,IAAI,CAAC;YACN,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3J,CAAC,MAAM,EAAE,QAAQ,CAAC;YAClB,CAAC,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC;YAC5B,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAoB,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC;YACvF,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAqB,CAAC,CAAC;YACtF,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC;SAC7B,CAAC;QACF,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,uBAAuB,SAAS,CAAC,OAAO,CAAC,GAAG,IAAI,gBAAgB,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QAChL,EAAE;QACF,IAAI,CAAC,MAAM,CAAC;QACZ,IAAI,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;KAC5C,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,MAAqB;IACvC,MAAM,OAAO,GAAG,MAAM,CAAC,cAAe,CAAC;IACvC,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,IAAI,EAAE,MAAM,CAAC,YAAY;QACzB,MAAM,EAAE,MAAM,CAAC,aAAa;QAC5B,KAAK,EAAE,OAAO,CAAC,SAAS;QACxB,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,YAAY,EAAE,OAAO,CAAC,YAAY;QAClC,MAAM,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,aAAa,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,SAAS;KACvJ,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,OAAyD;IAC5E,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC,CAAC;IAC/I,MAAM,OAAO,GAAG,CAAC,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IACrE,KAAK,CAAC;QACJ,OAAO,CAAC,gBAAgB,CAAC;QACzB,EAAE;QACF,GAAG,IAAI,CAAC;YACN,CAAC,OAAO,EAAE,EAAE,CAAC,GAAG,CAAC;YACjB,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;SACzC,CAAC;QACF,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,wEAAwE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;QACnJ,EAAE;QACF,IAAI,CAAC,uBAAuB,CAAC;KAC9B,CAAC,CAAC;IACH,IAAI,OAAO,CAAC,IAAI;QAAE,WAAW,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC7J,KAAK,CAAC,GAAG,EAAE,IAAgB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC;AACzG,CAAC;AAED,KAAK,UAAU,SAAS,CAAI,EAAuD;IACjF,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;YAAS,CAAC;QACT,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;AACH,CAAC;AAED,SAAS,SAAS,CAAC,KAAc;IAC/B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,WAAW,CAAC,KAAa;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;QAAE,MAAM,IAAI,oBAAoB,CAAC,mCAAmC,CAAC,CAAC;IAClH,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY,EAAE,GAAW;IAC7C,OAAO,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AACjE,CAAC"}