@pentoshi/clai 4.11.20 → 4.11.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/agent/parser/parse-entry.js +30 -2
- package/dist/agent/parser/parse-entry.js.map +1 -1
- package/dist/agent/parser/vendor-protocols.d.ts +12 -0
- package/dist/agent/parser/vendor-protocols.js +105 -0
- package/dist/agent/parser/vendor-protocols.js.map +1 -1
- package/dist/agent/subagents/read-only-tools.d.ts +2 -0
- package/dist/agent/subagents/read-only-tools.js +61 -457
- package/dist/agent/subagents/read-only-tools.js.map +1 -1
- package/dist/agent/subagents/tools.js +1 -1
- package/dist/agent/subagents/tools.js.map +1 -1
- package/dist/agent/subagents/worker.js +2 -2
- package/dist/agent/tool-call-parser.js +6 -0
- package/dist/agent/tool-call-parser.js.map +1 -1
- package/dist/agent/tool-history.js +30 -16
- package/dist/agent/tool-history.js.map +1 -1
- package/dist/agent/turn/loop/run-rounds.js +2 -1
- package/dist/agent/turn/loop/run-rounds.js.map +1 -1
- package/dist/llm/adapters/openai-tools.js +19 -10
- package/dist/llm/adapters/openai-tools.js.map +1 -1
- package/dist/llm/artifacts/replay-selection.js +11 -5
- package/dist/llm/artifacts/replay-selection.js.map +1 -1
- package/dist/llm/capability/tool-dialect.js +2 -1
- package/dist/llm/capability/tool-dialect.js.map +1 -1
- package/dist/llm/explabs.js +0 -3
- package/dist/llm/explabs.js.map +1 -1
- package/dist/llm/free.d.ts +1 -1
- package/dist/llm/free.js +109 -20
- package/dist/llm/free.js.map +1 -1
- package/dist/llm/provider-model-layers.js +4 -0
- package/dist/llm/provider-model-layers.js.map +1 -1
- package/dist/llm/provider-profile-layers.js +42 -0
- package/dist/llm/provider-profile-layers.js.map +1 -1
- package/dist/llm/routing/error-classification.js +3 -1
- package/dist/llm/routing/error-classification.js.map +1 -1
- package/dist/llm/tool-protocol.js +4 -14
- package/dist/llm/tool-protocol.js.map +1 -1
- package/dist/llm/wire/capability-errors.js +6 -3
- package/dist/llm/wire/capability-errors.js.map +1 -1
- package/dist/llm/wire/chat-body.js +8 -13
- package/dist/llm/wire/chat-body.js.map +1 -1
- package/dist/prompts/embedded.js +1 -1
- package/dist/prompts/embedded.js.map +1 -1
- package/dist/prompts/system.agent.md +7 -1
- package/dist/tools/definitions/subagents.js +2 -2
- package/dist/tools/definitions/subagents.js.map +1 -1
- package/dist/ui-core/rendering/incremental-strip.js +2 -2
- package/dist/ui-core/rendering/incremental-strip.js.map +1 -1
- package/dist/ui-core/rendering/strip-tool-surfaces.js +76 -0
- package/dist/ui-core/rendering/strip-tool-surfaces.js.map +1 -1
- package/dist/version.generated.d.ts +2 -2
- package/dist/version.generated.js +2 -2
- package/package.json +1 -1
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { isAbsolute, relative, resolve, sep } from "node:path";
|
|
1
|
+
import { isAbsolute, resolve } from "node:path";
|
|
3
2
|
import { TOOL_DEFINITIONS } from "../../tools/definitions.js";
|
|
4
|
-
import { globToPathRegExp } from "../../tools/fs/search.js";
|
|
5
3
|
export const TOOL_OUTPUT_LIMIT = 12_000;
|
|
6
4
|
const fields = {
|
|
7
|
-
"fs.read": ["path", "offset", "limit", "startLine", "endLine", "maxBytes"],
|
|
5
|
+
"fs.read": ["path", "offset", "limit", "startLine", "endLine", "pattern", "context", "maxMatches", "caseInsensitive", "maxBytes"],
|
|
8
6
|
"fs.list": ["path", "maxEntries"],
|
|
9
|
-
"fs.search": ["path", "pattern", "glob", "maxMatches", "caseInsensitive", "fixedString", "hidden", "timeoutMs"],
|
|
7
|
+
"fs.search": ["path", "pattern", "glob", "maxMatches", "maxPerFile", "caseInsensitive", "fixedString", "hidden", "timeoutMs"],
|
|
10
8
|
"web.search": ["query", "maxResults", "timeoutMs"],
|
|
11
9
|
"web.fetch": ["url", "maxBytes", "timeoutMs", "responseMode", "responsePart"],
|
|
12
10
|
"http.fetch": ["url", "maxBytes", "timeoutMs", "responseMode", "responsePart"],
|
|
@@ -18,25 +16,29 @@ const fields = {
|
|
|
18
16
|
"wordlist.find": ["query", "expand"],
|
|
19
17
|
"skill.load": ["name"],
|
|
20
18
|
"skill.list": ["query"],
|
|
21
|
-
"shell.exec": ["command", "timeoutMs"],
|
|
19
|
+
"shell.exec": ["command", "cwd", "timeoutMs"],
|
|
22
20
|
};
|
|
23
21
|
const descriptions = {
|
|
24
|
-
"fs.read": "Read a text file
|
|
25
|
-
"fs.list": "List directory entries
|
|
26
|
-
"fs.search": "
|
|
22
|
+
"fs.read": "Read a text file with numbered lines.",
|
|
23
|
+
"fs.list": "List directory entries.",
|
|
24
|
+
"fs.search": "Search file contents by pattern.",
|
|
27
25
|
"web.search": "Search the web for current information.",
|
|
28
26
|
"web.fetch": "Fetch a public URL as readable text.",
|
|
29
|
-
"http.fetch": "GET-only HTTP evidence for public targets.
|
|
30
|
-
"pdf.read": "Extract text from a PDF
|
|
31
|
-
"image.view": "View image bytes for a file
|
|
32
|
-
"image.ocr": "OCR text from an image file
|
|
27
|
+
"http.fetch": "GET-only HTTP evidence for public targets.",
|
|
28
|
+
"pdf.read": "Extract text from a PDF with bounded paging.",
|
|
29
|
+
"image.view": "View image bytes for a file.",
|
|
30
|
+
"image.ocr": "OCR text from an image file.",
|
|
33
31
|
"sysinfo": "OS and environment facts.",
|
|
34
32
|
"tool.check": "Check tool availability on PATH.",
|
|
35
33
|
"wordlist.find": "Locate wordlists on disk.",
|
|
36
34
|
"skill.load": "Read one skill's instructions.",
|
|
37
35
|
"skill.list": "List installed skills.",
|
|
38
|
-
"shell.exec": "
|
|
36
|
+
"shell.exec": "Shell command execution for search and inspection.",
|
|
39
37
|
};
|
|
38
|
+
export const READ_ONLY_TOOL_NAMES = new Set(Object.keys(fields));
|
|
39
|
+
export function isSubagentBlockedTool(name) {
|
|
40
|
+
return !READ_ONLY_TOOL_NAMES.has(name);
|
|
41
|
+
}
|
|
40
42
|
export const READ_ONLY_TOOLS = TOOL_DEFINITIONS
|
|
41
43
|
.filter((tool) => Object.hasOwn(fields, tool.name))
|
|
42
44
|
.map((tool) => ({
|
|
@@ -59,466 +61,68 @@ export function boundedOutput(text) {
|
|
|
59
61
|
? text.slice(0, TOOL_OUTPUT_LIMIT - suffix.length) + suffix
|
|
60
62
|
: text;
|
|
61
63
|
}
|
|
62
|
-
function inside(root, path) {
|
|
63
|
-
const rel = relative(root, path);
|
|
64
|
-
return rel === "" || (!isAbsolute(rel) && rel !== ".." && !rel.startsWith(`..${sep}`));
|
|
65
|
-
}
|
|
66
64
|
export async function confinedPath(root, value = ".") {
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
const
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
if (
|
|
76
|
-
|
|
77
|
-
return
|
|
78
|
-
}
|
|
79
|
-
function number(args, key, fallback, max, min = 1) {
|
|
80
|
-
const value = args[key] ?? fallback;
|
|
81
|
-
if (typeof value !== "number" || !Number.isSafeInteger(value) || value < min) {
|
|
82
|
-
throw new Error(`Invalid ${key}`);
|
|
83
|
-
}
|
|
84
|
-
return Math.min(value, max);
|
|
85
|
-
}
|
|
86
|
-
function string(args, key, max = 2048) {
|
|
87
|
-
const value = args[key];
|
|
88
|
-
if (typeof value !== "string" || !value.trim() || value.length > max || value.includes("\0")) {
|
|
89
|
-
throw new Error(`Invalid ${key}`);
|
|
90
|
-
}
|
|
91
|
-
return value;
|
|
92
|
-
}
|
|
93
|
-
function optionalString(args, key, max = 2048) {
|
|
94
|
-
if (args[key] === undefined)
|
|
95
|
-
return undefined;
|
|
96
|
-
return string(args, key, max);
|
|
97
|
-
}
|
|
98
|
-
function optionalBoolean(args, key) {
|
|
99
|
-
if (args[key] === undefined)
|
|
100
|
-
return undefined;
|
|
101
|
-
if (typeof args[key] !== "boolean")
|
|
102
|
-
throw new Error(`Invalid ${key}`);
|
|
103
|
-
return args[key];
|
|
104
|
-
}
|
|
105
|
-
function optionalNumber(args, key, max, min = 1) {
|
|
106
|
-
if (args[key] === undefined)
|
|
107
|
-
return undefined;
|
|
108
|
-
return number({ ...args, [key]: args[key] }, key, args[key], max, min);
|
|
109
|
-
}
|
|
110
|
-
function optionalEnum(args, key, allowed) {
|
|
111
|
-
if (args[key] === undefined)
|
|
112
|
-
return undefined;
|
|
113
|
-
if (typeof args[key] !== "string" || !allowed.includes(args[key]))
|
|
114
|
-
throw new Error(`Invalid ${key}`);
|
|
115
|
-
return args[key];
|
|
116
|
-
}
|
|
117
|
-
function stringList(value, key, min, max, itemMax = 2048) {
|
|
118
|
-
if (!Array.isArray(value) || value.length < min || value.length > max)
|
|
119
|
-
throw new Error(`Invalid ${key}`);
|
|
120
|
-
return value.map((entry) => {
|
|
121
|
-
if (typeof entry !== "string" || !entry.trim() || entry.length > itemMax || entry.includes("\0"))
|
|
122
|
-
throw new Error(`Invalid ${key}`);
|
|
123
|
-
return entry;
|
|
124
|
-
});
|
|
125
|
-
}
|
|
126
|
-
const GIT_ALWAYS_MUTATING_SUBCOMMANDS = new Set([
|
|
127
|
-
"add", "am", "apply", "bisect", "cherry-pick", "clean", "clone", "commit",
|
|
128
|
-
"fetch", "gc", "merge", "mv", "pull", "push", "rebase", "revert", "rm",
|
|
129
|
-
"reset", "restore", "stash", "switch", "update-ref",
|
|
130
|
-
]);
|
|
131
|
-
const SHELL_FIRST_ALLOW = new Set([
|
|
132
|
-
"grep", "egrep", "fgrep", "rg", "ag", "ack",
|
|
133
|
-
"find", "ls", "dir", "cat", "head", "tail", "wc",
|
|
134
|
-
"sort", "uniq", "cut", "tr", "file", "stat", "du",
|
|
135
|
-
"git", "python3", "python", "node", "jq",
|
|
136
|
-
"diff", "cmp", "comm", "strings", "xxd", "od",
|
|
137
|
-
"pwd", "printf", "echo", "true", "false", "date", "uname",
|
|
138
|
-
"whoami", "id", "readlink", "realpath", "basename", "dirname", "which",
|
|
139
|
-
]);
|
|
140
|
-
const SHELL_CONTENT_DENY = [
|
|
141
|
-
/-delete\b/, /-exec(dir)?\b/, /-ok\b/, /-fls\b/, /-fprint\b/,
|
|
142
|
-
/\b(?:rm|rmdir|mv|cp|install|mkdir|mktemp|touch|tee|dd|unlink|chmod|chown|ln|truncate)\b/,
|
|
143
|
-
/\b(?:npm|pnpm|yarn|bun)\s+(?:install|ci|add|remove|uninstall|update|link|publish|pack)\b/,
|
|
144
|
-
/\b(?:curl|wget|nc|netcat|socat|ssh|scp|rsync|ftp|telnet)\b/,
|
|
145
|
-
/subprocess/, /os\.system/, /os\.popen/, /os\.exec\w*\b/, /os\.spawn\w*\b/,
|
|
146
|
-
/os\.remove/, /os\.unlink/, /os\.rmdir/, /os\.mkdir/, /os\.rename/, /os\.replace/,
|
|
147
|
-
/os\.chmod/, /os\.chown/, /os\.symlink/, /os\.link/, /os\.truncate/, /os\.write/,
|
|
148
|
-
/os\.environ/, /getenv/, /shutil/, /socket/, /urllib/, /requests/, /http\.client/,
|
|
149
|
-
/ftplib/, /smtplib/, /telnetlib/, /child_process/, /process\.env/,
|
|
150
|
-
/require\s*\(\s*['"]fs['"]\s*\)/, /from\s+['"]fs['"]/, /import\s*\(\s*['"]fs['"]/,
|
|
151
|
-
/writefilesync/, /appendfilesync/, /mkdirsync/, /rmsync/, /unlinksync/, /rmdirsync/,
|
|
152
|
-
/renamesync/, /chmodsync/, /chownsync/, /truncatesync/, /createwritestream/,
|
|
153
|
-
/write_text/, /write_bytes/, /__import__/, /getattr\s*\(/, /setattr\s*\(/, /delattr\s*\(/,
|
|
154
|
-
/globals\s*\(/, /locals\s*\(/, /compile\s*\(/, /\beval\s*\(/, /\bexec\s*\(/,
|
|
155
|
-
/\binput\s*\(/, /\bfetch\s*\(/, /o_wronly/, /o_rdwr/, /o_creat/,
|
|
156
|
-
/ld_preload/, /ld_library_path/, /pythonpath/, /pythonhome/, /node_options/,
|
|
157
|
-
/open\s*\([^,]+,\s*['"][^'"]*[wax+]/,
|
|
158
|
-
];
|
|
159
|
-
function stripQuoted(command) {
|
|
160
|
-
let out = "";
|
|
161
|
-
let quote = "";
|
|
162
|
-
for (let i = 0; i < command.length; i++) {
|
|
163
|
-
const ch = command[i];
|
|
164
|
-
if (quote) {
|
|
165
|
-
if (ch === "\\")
|
|
166
|
-
i++;
|
|
167
|
-
else if (ch === quote)
|
|
168
|
-
quote = "";
|
|
169
|
-
out += " ";
|
|
170
|
-
}
|
|
171
|
-
else if (ch === "'" || ch === '"') {
|
|
172
|
-
quote = ch;
|
|
173
|
-
out += " ";
|
|
174
|
-
}
|
|
175
|
-
else if (ch === "\\") {
|
|
176
|
-
i++;
|
|
177
|
-
out += " ";
|
|
178
|
-
}
|
|
179
|
-
else
|
|
180
|
-
out += ch;
|
|
181
|
-
}
|
|
182
|
-
return out;
|
|
183
|
-
}
|
|
184
|
-
function denyShellStructure(visible) {
|
|
185
|
-
if (/`|\$\(|\$\{/.test(visible))
|
|
186
|
-
throw new Error("Command denied: shell expansion is not allowed");
|
|
187
|
-
if (/[><]/.test(visible))
|
|
188
|
-
throw new Error("Command denied: redirection is not allowed");
|
|
189
|
-
}
|
|
190
|
-
function denyShellContent(lower) {
|
|
191
|
-
if (SHELL_CONTENT_DENY.some((pattern) => pattern.test(lower)))
|
|
192
|
-
throw new Error("Command denied: mutating, network, or environment access is not allowed");
|
|
193
|
-
}
|
|
194
|
-
function shellSegments(visible) {
|
|
195
|
-
const segments = [];
|
|
196
|
-
let start = 0;
|
|
197
|
-
for (let index = 0; index < visible.length; index += 1) {
|
|
198
|
-
const separator = visible[index];
|
|
199
|
-
if (separator !== "|" && separator !== ";" && separator !== "&" && separator !== "\n" && separator !== "\r")
|
|
200
|
-
continue;
|
|
201
|
-
const segment = visible.slice(start, index).trim();
|
|
202
|
-
if (segment)
|
|
203
|
-
segments.push(segment);
|
|
204
|
-
if ((separator === "|" || separator === "&") && visible[index + 1] === separator)
|
|
205
|
-
index += 1;
|
|
206
|
-
start = index + 1;
|
|
207
|
-
}
|
|
208
|
-
const tail = visible.slice(start).trim();
|
|
209
|
-
if (tail)
|
|
210
|
-
segments.push(tail);
|
|
211
|
-
return segments;
|
|
212
|
-
}
|
|
213
|
-
function assertGitSegment(tokens, segment) {
|
|
214
|
-
const subcommand = tokens[1]?.toLowerCase();
|
|
215
|
-
if (!subcommand)
|
|
216
|
-
return;
|
|
217
|
-
if (GIT_ALWAYS_MUTATING_SUBCOMMANDS.has(subcommand)) {
|
|
218
|
-
throw new Error("Command denied: git state changes are not allowed for context gathering");
|
|
219
|
-
}
|
|
220
|
-
const args = tokens.slice(2);
|
|
221
|
-
if (subcommand === "branch" || subcommand === "tag") {
|
|
222
|
-
if (args.some((token) => !token.startsWith("-"))) {
|
|
223
|
-
throw new Error("Command denied: git state changes are not allowed for context gathering");
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
if (subcommand === "remote" && args.some((token) => !["-v", "--verbose"].includes(token))) {
|
|
227
|
-
throw new Error("Command denied: git remote changes are not allowed for context gathering");
|
|
228
|
-
}
|
|
229
|
-
if (subcommand === "config" && !args.some((token) => ["--get", "--get-all", "--get-regexp", "--list", "-l", "--show-origin", "--show-scope", "--name-only"].includes(token))) {
|
|
230
|
-
throw new Error("Command denied: git config changes are not allowed for context gathering");
|
|
231
|
-
}
|
|
232
|
-
if (/\b(?:-d|-D|--delete|--move|--set-upstream-to)\b/.test(segment)) {
|
|
233
|
-
throw new Error("Command denied: git state changes are not allowed for context gathering");
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
function assertShellSegment(segment) {
|
|
237
|
-
const tokens = segment.trim().split(/\s+/).filter(Boolean);
|
|
238
|
-
const first = tokens[0]?.toLowerCase();
|
|
239
|
-
if (!first || !SHELL_FIRST_ALLOW.has(first))
|
|
240
|
-
throw new Error("Command denied: use a read-only search or inspection command");
|
|
241
|
-
if (first === "git")
|
|
242
|
-
assertGitSegment(tokens, segment);
|
|
243
|
-
if (first === "find" && /-(delete|exec(dir)?|ok|fls|fprint)\b/.test(segment))
|
|
244
|
-
throw new Error("Command denied: find may not modify or execute");
|
|
245
|
-
if (first === "sort" && /-o\b|--output\b/.test(segment))
|
|
246
|
-
throw new Error("Command denied: sort may not write files");
|
|
65
|
+
const p = typeof value === "string" && value.trim() ? value.trim() : ".";
|
|
66
|
+
return isAbsolute(p) ? resolve(p) : resolve(root, p);
|
|
67
|
+
}
|
|
68
|
+
function prepareFsRead(root, args) {
|
|
69
|
+
const rawPath = typeof args.path === "string" && args.path.trim() ? args.path.trim() : ".";
|
|
70
|
+
const path = isAbsolute(rawPath) ? resolve(rawPath) : resolve(root, rawPath);
|
|
71
|
+
const maxBytes = typeof args.maxBytes === "number" ? Math.min(args.maxBytes, TOOL_OUTPUT_LIMIT) : TOOL_OUTPUT_LIMIT;
|
|
72
|
+
const safe = { ...args, path, maxBytes };
|
|
73
|
+
if (typeof args.limit === "number")
|
|
74
|
+
safe.limit = Math.min(Math.max(1, args.limit), 300);
|
|
75
|
+
return safe;
|
|
247
76
|
}
|
|
248
|
-
|
|
249
|
-
const raw =
|
|
77
|
+
function prepareShellExec(root, args) {
|
|
78
|
+
const raw = typeof args.command === "string" ? args.command.trim() : "";
|
|
250
79
|
if (!raw)
|
|
251
80
|
throw new Error("Invalid command");
|
|
252
|
-
const
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
return { command: raw, cwd
|
|
258
|
-
}
|
|
259
|
-
function publicUrl(value, maxBytesFallback) {
|
|
260
|
-
const href = new URL(string({ url: value }, "url", 4096)).href;
|
|
261
|
-
const parsed = new URL(href);
|
|
262
|
-
if (!["https:", "http:"].includes(parsed.protocol) || parsed.username || parsed.password)
|
|
263
|
-
throw new Error("Only public HTTP(S) web URLs without credentials are allowed");
|
|
264
|
-
return { url: parsed.href, maxBytes: maxBytesFallback, timeoutMs: 15_000 };
|
|
265
|
-
}
|
|
266
|
-
async function prepareFsRead(root, args) {
|
|
267
|
-
if (args.path === undefined)
|
|
268
|
-
throw new Error("fs.read requires path");
|
|
269
|
-
const path = await confinedPath(root, args.path);
|
|
270
|
-
const offset = number(args, "offset", number(args, "startLine", 1, 10_000_000), 10_000_000, 0) || 1;
|
|
271
|
-
const limit = number(args, "limit", 200, 300);
|
|
272
|
-
const end = number(args, "endLine", offset + limit - 1, 10_000_300);
|
|
273
|
-
if (end < offset)
|
|
274
|
-
throw new Error("endLine precedes offset");
|
|
275
|
-
return { path, offset, limit: Math.min(limit, end - offset + 1), maxBytes: number(args, "maxBytes", TOOL_OUTPUT_LIMIT, TOOL_OUTPUT_LIMIT) };
|
|
276
|
-
}
|
|
277
|
-
async function prepareFsList(root, args) {
|
|
278
|
-
return { path: await confinedPath(root, args.path), maxEntries: number(args, "maxEntries", 100, 200) };
|
|
279
|
-
}
|
|
280
|
-
async function prepareFsSearch(root, args) {
|
|
281
|
-
const safe = {
|
|
282
|
-
path: await confinedPath(root, args.path), pattern: string(args, "pattern"),
|
|
283
|
-
maxMatches: number(args, "maxMatches", 30, 100),
|
|
284
|
-
maxPerFile: 1, context: 0, filesOnly: true,
|
|
285
|
-
timeoutMs: number(args, "timeoutMs", 2000, 2000),
|
|
286
|
-
};
|
|
287
|
-
for (const key of ["caseInsensitive", "fixedString", "hidden"]) {
|
|
288
|
-
if (args[key] !== undefined && typeof args[key] !== "boolean")
|
|
289
|
-
throw new Error(`Invalid ${key}`);
|
|
290
|
-
safe[key] = args[key] ?? false;
|
|
291
|
-
}
|
|
292
|
-
if (args.glob !== undefined)
|
|
293
|
-
safe.glob = string(args, "glob", 256);
|
|
294
|
-
return safe;
|
|
295
|
-
}
|
|
296
|
-
function prepareWebSearch(args) {
|
|
297
|
-
return { query: string(args, "query"), maxResults: number(args, "maxResults", 5, 5), timeoutMs: number(args, "timeoutMs", 15_000, 30_000) };
|
|
298
|
-
}
|
|
299
|
-
function prepareWebFetch(args) {
|
|
300
|
-
const base = publicUrl(args.url, number(args, "maxBytes", 65_536, 65_536));
|
|
301
|
-
base.timeoutMs = number(args, "timeoutMs", 15_000, 30_000);
|
|
302
|
-
const safe = { url: base.url, maxBytes: base.maxBytes, timeoutMs: base.timeoutMs };
|
|
303
|
-
const mode = optionalEnum(args, "responseMode", ["readable", "raw"]);
|
|
304
|
-
if (mode !== undefined)
|
|
305
|
-
safe.responseMode = mode;
|
|
306
|
-
const part = optionalEnum(args, "responsePart", ["full", "headers", "body"]);
|
|
307
|
-
if (part !== undefined)
|
|
308
|
-
safe.responsePart = part;
|
|
309
|
-
return safe;
|
|
310
|
-
}
|
|
311
|
-
function prepareHttpFetch(args) {
|
|
312
|
-
return prepareWebFetch(args);
|
|
313
|
-
}
|
|
314
|
-
async function preparePdfRead(root, args) {
|
|
315
|
-
const safe = { path: await confinedPath(root, args.path) };
|
|
316
|
-
const first = optionalNumber(args, "firstPage", 500, 1);
|
|
317
|
-
if (first !== undefined)
|
|
318
|
-
safe.firstPage = first;
|
|
319
|
-
const last = optionalNumber(args, "lastPage", 500, 1);
|
|
320
|
-
if (last !== undefined)
|
|
321
|
-
safe.lastPage = last;
|
|
322
|
-
const pages = optionalNumber(args, "maxPages", 50, 1);
|
|
323
|
-
if (pages !== undefined)
|
|
324
|
-
safe.maxPages = pages;
|
|
325
|
-
else
|
|
326
|
-
safe.maxPages = 50;
|
|
327
|
-
const chars = optionalNumber(args, "maxChars", 50_000, 1000);
|
|
328
|
-
if (chars !== undefined)
|
|
329
|
-
safe.maxChars = chars;
|
|
330
|
-
if (safe.firstPage !== undefined && safe.lastPage !== undefined && safe.lastPage < safe.firstPage)
|
|
331
|
-
throw new Error("lastPage precedes firstPage");
|
|
332
|
-
return safe;
|
|
333
|
-
}
|
|
334
|
-
async function prepareImageView(root, args) {
|
|
335
|
-
const hasPath = args.path !== undefined;
|
|
336
|
-
const hasPaths = args.paths !== undefined;
|
|
337
|
-
if (!hasPath && !hasPaths)
|
|
338
|
-
throw new Error("image.view requires path or paths");
|
|
339
|
-
const safe = {};
|
|
340
|
-
if (hasPath)
|
|
341
|
-
safe.path = await confinedPath(root, args.path);
|
|
342
|
-
if (hasPaths) {
|
|
343
|
-
const paths = stringList(args.paths, "paths", 1, 4, 4096);
|
|
344
|
-
const confined = [];
|
|
345
|
-
for (const entry of paths)
|
|
346
|
-
confined.push(await confinedPath(root, entry));
|
|
347
|
-
safe.paths = confined;
|
|
348
|
-
}
|
|
349
|
-
return safe;
|
|
350
|
-
}
|
|
351
|
-
async function prepareImageOcr(root, args) {
|
|
352
|
-
const safe = { path: await confinedPath(root, args.path) };
|
|
353
|
-
const lang = optionalString(args, "lang", 64);
|
|
354
|
-
if (lang !== undefined)
|
|
355
|
-
safe.lang = lang;
|
|
356
|
-
const psm = optionalNumber(args, "psm", 13, 0);
|
|
357
|
-
if (psm !== undefined)
|
|
358
|
-
safe.psm = psm;
|
|
359
|
-
const preprocess = optionalBoolean(args, "preprocess");
|
|
360
|
-
if (preprocess !== undefined)
|
|
361
|
-
safe.preprocess = preprocess;
|
|
362
|
-
return safe;
|
|
363
|
-
}
|
|
364
|
-
function prepareToolCheck(args) {
|
|
365
|
-
return { tools: stringList(args.tools, "tools", 1, 20, 256) };
|
|
366
|
-
}
|
|
367
|
-
function prepareWordlistFind(args) {
|
|
368
|
-
const safe = { query: string(args, "query") };
|
|
369
|
-
const expand = optionalBoolean(args, "expand");
|
|
370
|
-
if (expand !== undefined)
|
|
371
|
-
safe.expand = expand;
|
|
372
|
-
return safe;
|
|
373
|
-
}
|
|
374
|
-
function prepareSkillLoad(args) {
|
|
375
|
-
return { name: string(args, "name", 256) };
|
|
376
|
-
}
|
|
377
|
-
function prepareSkillList(args) {
|
|
378
|
-
const query = optionalString(args, "query", 256);
|
|
379
|
-
return query === undefined ? {} : { query };
|
|
81
|
+
const rawCwd = typeof args.cwd === "string" && args.cwd.trim() ? args.cwd.trim() : "";
|
|
82
|
+
const cwd = rawCwd ? (isAbsolute(rawCwd) ? resolve(rawCwd) : resolve(root, rawCwd)) : root;
|
|
83
|
+
const timeoutMs = typeof args.timeoutMs === "number" && args.timeoutMs > 0
|
|
84
|
+
? Math.min(args.timeoutMs, 60_000)
|
|
85
|
+
: 30_000;
|
|
86
|
+
return { ...args, command: raw, cwd, timeoutMs, background: "never" };
|
|
380
87
|
}
|
|
381
88
|
export async function prepareReadOnlyCall(root, call) {
|
|
382
|
-
|
|
383
|
-
if (!Object.hasOwn(fields, call.name) || !allowed)
|
|
89
|
+
if (!READ_ONLY_TOOL_NAMES.has(call.name)) {
|
|
384
90
|
throw new Error(`Tool denied: ${call.name}`);
|
|
385
|
-
if (!call.args || typeof call.args !== "object" || Array.isArray(call.args))
|
|
386
|
-
throw new Error("Invalid tool arguments");
|
|
387
|
-
for (const key of Object.keys(call.args)) {
|
|
388
|
-
if (!allowed.includes(key))
|
|
389
|
-
throw new Error(`Argument denied: ${call.name}.${key}`);
|
|
390
91
|
}
|
|
391
|
-
const args = call.args;
|
|
92
|
+
const args = call.args && typeof call.args === "object" && !Array.isArray(call.args) ? { ...call.args } : {};
|
|
392
93
|
switch (call.name) {
|
|
393
|
-
case "fs.read": return { name: call.name, args:
|
|
394
|
-
case "
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
case "wordlist.find": return { name: call.name, args: prepareWordlistFind(args) };
|
|
405
|
-
case "skill.load": return { name: call.name, args: prepareSkillLoad(args) };
|
|
406
|
-
case "skill.list": return { name: call.name, args: prepareSkillList(args) };
|
|
407
|
-
case "shell.exec": return { name: call.name, args: await prepareShellExec(root, args) };
|
|
408
|
-
default: throw new Error(`Tool denied: ${call.name}`);
|
|
94
|
+
case "fs.read": return { name: call.name, args: prepareFsRead(root, args) };
|
|
95
|
+
case "shell.exec": return { name: call.name, args: prepareShellExec(root, args) };
|
|
96
|
+
default: {
|
|
97
|
+
if (typeof args.path === "string" && args.path.trim()) {
|
|
98
|
+
args.path = isAbsolute(args.path) ? resolve(args.path) : resolve(root, args.path);
|
|
99
|
+
}
|
|
100
|
+
if (Array.isArray(args.paths)) {
|
|
101
|
+
args.paths = args.paths.map((p) => typeof p === "string" && p.trim() ? (isAbsolute(p) ? resolve(p) : resolve(root, p)) : p);
|
|
102
|
+
}
|
|
103
|
+
return { name: call.name, args };
|
|
104
|
+
}
|
|
409
105
|
}
|
|
410
106
|
}
|
|
411
|
-
const excluded = new Set([".git", ".hg", ".svn", "node_modules", "dist", "build", "out", "target", "coverage", ".next", ".venv", "__pycache__"]);
|
|
412
|
-
async function confineViewPaths(root, args) {
|
|
413
|
-
const safe = { ...args };
|
|
414
|
-
if (args.path !== undefined)
|
|
415
|
-
safe.path = await confinedPath(root, args.path);
|
|
416
|
-
if (args.paths !== undefined) {
|
|
417
|
-
const confined = [];
|
|
418
|
-
for (const entry of args.paths)
|
|
419
|
-
confined.push(await confinedPath(root, entry));
|
|
420
|
-
safe.paths = confined;
|
|
421
|
-
}
|
|
422
|
-
return safe;
|
|
423
|
-
}
|
|
424
107
|
export async function executeReadOnlyCall(root, call, execute, options) {
|
|
425
108
|
options.signal?.throwIfAborted();
|
|
426
|
-
if (!
|
|
109
|
+
if (!READ_ONLY_TOOL_NAMES.has(call.name)) {
|
|
427
110
|
throw new Error(`Tool denied: ${call.name}`);
|
|
428
|
-
if (call.name !== "fs.search") {
|
|
429
|
-
let safe = call;
|
|
430
|
-
if (call.name.startsWith("fs.") || call.name === "pdf.read" || call.name === "image.ocr") {
|
|
431
|
-
safe = { ...call, args: { ...call.args, path: await confinedPath(root, call.args.path) } };
|
|
432
|
-
}
|
|
433
|
-
else if (call.name === "image.view") {
|
|
434
|
-
safe = { ...call, args: await confineViewPaths(root, call.args) };
|
|
435
|
-
}
|
|
436
|
-
if (safe.name === "fs.read") {
|
|
437
|
-
const stat = await lstat(String(safe.args.path));
|
|
438
|
-
if (!stat.isFile() && !stat.isDirectory())
|
|
439
|
-
throw new Error("Only regular files and directories are readable");
|
|
440
|
-
if (stat.isFile() && stat.size > 2 * 1024 * 1024) {
|
|
441
|
-
throw new Error("File exceeds the child 2 MiB read limit; report this coverage gap for parent inspection");
|
|
442
|
-
}
|
|
443
|
-
}
|
|
444
|
-
options.signal?.throwIfAborted();
|
|
445
|
-
const result = await execute(safe, options);
|
|
446
|
-
options.signal?.throwIfAborted();
|
|
447
|
-
return { ...result, output: boundedOutput(result.output) };
|
|
448
111
|
}
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
if (glob && !matcher)
|
|
455
|
-
throw new Error("Invalid search glob");
|
|
456
|
-
const start = String(call.args.path);
|
|
457
|
-
const collect = async (path, depth) => {
|
|
458
|
-
options.signal?.throwIfAborted();
|
|
459
|
-
if (entries >= 2048 || files.length >= 64 || depth > 16) {
|
|
460
|
-
gaps.add("Search traversal limit reached; narrow path/glob for remaining coverage.");
|
|
461
|
-
return;
|
|
462
|
-
}
|
|
463
|
-
entries += 1;
|
|
464
|
-
const stat = await lstat(path);
|
|
465
|
-
if (stat.isSymbolicLink())
|
|
466
|
-
return;
|
|
467
|
-
await confinedPath(root, path);
|
|
468
|
-
if (stat.isFile()) {
|
|
469
|
-
const rel = relative(start, path) || relative(root, path);
|
|
470
|
-
if (stat.size <= 1_048_576 && (!matcher || matcher.test(rel) !== glob.startsWith("!")))
|
|
471
|
-
files.push(path);
|
|
472
|
-
}
|
|
473
|
-
else if (stat.isDirectory()) {
|
|
474
|
-
const dir = await opendir(path);
|
|
475
|
-
for await (const entry of dir) {
|
|
476
|
-
options.signal?.throwIfAborted();
|
|
477
|
-
if (entries >= 2048 || files.length >= 64) {
|
|
478
|
-
gaps.add("Search traversal limit reached; narrow path/glob for remaining coverage.");
|
|
479
|
-
break;
|
|
480
|
-
}
|
|
481
|
-
entries += 1;
|
|
482
|
-
if (entry.isSymbolicLink()) {
|
|
483
|
-
await confinedPath(root, resolve(path, entry.name));
|
|
484
|
-
continue;
|
|
485
|
-
}
|
|
486
|
-
if (excluded.has(entry.name) || (!call.args.hidden && entry.name.startsWith(".")))
|
|
487
|
-
continue;
|
|
488
|
-
await collect(resolve(path, entry.name), depth + 1);
|
|
489
|
-
}
|
|
112
|
+
let safe = call;
|
|
113
|
+
if (call.args && typeof call.args === "object" && !Array.isArray(call.args)) {
|
|
114
|
+
const args = { ...call.args };
|
|
115
|
+
if (typeof args.path === "string" && args.path.trim()) {
|
|
116
|
+
args.path = isAbsolute(args.path) ? resolve(args.path) : resolve(root, args.path);
|
|
490
117
|
}
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
let output = "";
|
|
494
|
-
let ok = true;
|
|
495
|
-
let scanned = 0;
|
|
496
|
-
let matched = 0;
|
|
497
|
-
for (const file of files) {
|
|
498
|
-
options.signal?.throwIfAborted();
|
|
499
|
-
const path = await confinedPath(root, file);
|
|
500
|
-
if (!(await lstat(path)).isFile())
|
|
501
|
-
throw new Error("Search target is no longer a regular file");
|
|
502
|
-
options.signal?.throwIfAborted();
|
|
503
|
-
const { glob: _glob, ...args } = call.args;
|
|
504
|
-
const result = await execute({ name: call.name, args: { ...args, path } }, options);
|
|
505
|
-
options.signal?.throwIfAborted();
|
|
506
|
-
scanned += 1;
|
|
507
|
-
ok = ok && result.ok;
|
|
508
|
-
if (!result.ok || !/^# no matches$/m.test(result.output)) {
|
|
509
|
-
output += `${result.output}\n`;
|
|
510
|
-
if (result.ok)
|
|
511
|
-
matched += 1;
|
|
512
|
-
}
|
|
513
|
-
if (matched >= Number(call.args.maxMatches)) {
|
|
514
|
-
gaps.add("Match limit reached; remaining files were not searched.");
|
|
515
|
-
break;
|
|
516
|
-
}
|
|
517
|
-
if (output.length >= TOOL_OUTPUT_LIMIT - 1000) {
|
|
518
|
-
gaps.add("Search output limit reached; remaining files were not searched.");
|
|
519
|
-
break;
|
|
118
|
+
if (Array.isArray(args.paths)) {
|
|
119
|
+
args.paths = args.paths.map((p) => typeof p === "string" && p.trim() ? (isAbsolute(p) ? resolve(p) : resolve(root, p)) : p);
|
|
520
120
|
}
|
|
121
|
+
safe = { ...call, args };
|
|
521
122
|
}
|
|
522
|
-
|
|
123
|
+
options.signal?.throwIfAborted();
|
|
124
|
+
const result = await execute(safe, options);
|
|
125
|
+
options.signal?.throwIfAborted();
|
|
126
|
+
return { ...result, output: boundedOutput(result.output) };
|
|
523
127
|
}
|
|
524
128
|
//# sourceMappingURL=read-only-tools.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"read-only-tools.js","sourceRoot":"","sources":["../../../src/agent/subagents/read-only-tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAI5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC;AACxC,MAAM,MAAM,GAAsC;IAChD,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC;IAC1E,SAAS,EAAE,CAAC,MAAM,EAAE,YAAY,CAAC;IACjC,WAAW,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,CAAC;IAC/G,YAAY,EAAE,CAAC,OAAO,EAAE,YAAY,EAAE,WAAW,CAAC;IAClD,WAAW,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC;IAC7E,YAAY,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,CAAC;IAC9E,UAAU,EAAE,CAAC,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,CAAC;IACrE,YAAY,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;IAC/B,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC;IAClD,SAAS,EAAE,EAAE;IACb,YAAY,EAAE,CAAC,OAAO,CAAC;IACvB,eAAe,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;IACpC,YAAY,EAAE,CAAC,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,OAAO,CAAC;IACvB,YAAY,EAAE,CAAC,SAAS,EAAE,WAAW,CAAC;CACvC,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,SAAS,EAAE,4IAA4I;IACvJ,SAAS,EAAE,oCAAoC;IAC/C,WAAW,EAAE,2JAA2J;IACxK,YAAY,EAAE,yCAAyC;IACvD,WAAW,EAAE,sCAAsC;IACnD,YAAY,EAAE,2FAA2F;IACzG,UAAU,EAAE,yDAAyD;IACrE,YAAY,EAAE,yCAAyC;IACvD,WAAW,EAAE,yCAAyC;IACtD,SAAS,EAAE,2BAA2B;IACtC,YAAY,EAAE,kCAAkC;IAChD,eAAe,EAAE,2BAA2B;IAC5C,YAAY,EAAE,gCAAgC;IAC9C,YAAY,EAAE,wBAAwB;IACtC,YAAY,EAAE,iPAAiP;CAChQ,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAqB,gBAAgB;KAC9D,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;KAClD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IACd,GAAG,IAAI;IACP,WAAW,EAAE,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,WAAW;IACxD,UAAU,EAAE;QACV,GAAG,IAAI,CAAC,UAAU;QAClB,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;aACtE,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;aACnD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,EAAE;YACrB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,GAAG,MAAiC,CAAC;YAC7E,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QACL,oBAAoB,EAAE,KAAK;KAC5B;CACF,CAAC,CAAC,CAAC;AAEN,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,MAAM,MAAM,GAAG,kFAAkF,CAAC;IAClG,OAAO,IAAI,CAAC,MAAM,GAAG,iBAAiB;QACpC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM;QAC3D,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,MAAM,CAAC,IAAY,EAAE,IAAY;IACxC,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjC,OAAO,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,KAAK,IAAI,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;AACzF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,IAAY,EAAE,QAAiB,GAAG;IACnE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;QACjG,MAAM,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACtF,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IACpG,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,MAAM,CAAC,IAA6B,EAAE,GAAW,EAAE,QAAgB,EAAE,GAAW,EAAE,GAAG,GAAG,CAAC;IAChG,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,CAAC;IACpC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,GAAG,EAAE,CAAC;QAC7E,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,MAAM,CAAC,IAA6B,EAAE,GAAW,EAAE,GAAG,GAAG,IAAI;IACpE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7F,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,cAAc,CAAC,IAA6B,EAAE,GAAW,EAAE,GAAG,GAAG,IAAI;IAC5E,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,eAAe,CAAC,IAA6B,EAAE,GAAW;IACjE,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACtE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,cAAc,CAAC,IAA6B,EAAE,GAAW,EAAE,GAAW,EAAE,GAAG,GAAG,CAAC;IACtF,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,OAAO,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,CAAW,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACnF,CAAC;AAED,SAAS,YAAY,CAAC,IAA6B,EAAE,GAAW,EAAE,OAA0B;IAC1F,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC9C,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACrG,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAS,UAAU,CAAC,KAAc,EAAE,GAAW,EAAE,GAAW,EAAE,GAAW,EAAE,OAAO,GAAG,IAAI;IACvF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;IACzG,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACzB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;QACpI,OAAO,KAAK,CAAC;IACf,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,+BAA+B,GAAG,IAAI,GAAG,CAAC;IAC9C,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;IACzE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI;IACtE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY;CACpD,CAAC,CAAC;AAEH,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IAChC,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK;IAC3C,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI;IAChD,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI;IACjD,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI;IACxC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI;IAC7C,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;IACzD,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO;CACvE,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAsB;IAC5C,WAAW,EAAE,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW;IAC5D,yFAAyF;IACzF,0FAA0F;IAC1F,4DAA4D;IAC5D,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,eAAe,EAAE,gBAAgB;IAC1E,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa;IACjF,WAAW,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW;IAChF,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,cAAc;IACjF,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,cAAc;IACjE,gCAAgC,EAAE,mBAAmB,EAAE,0BAA0B;IACjF,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW;IACnF,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,cAAc,EAAE,mBAAmB;IAC3E,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,cAAc;IACzF,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa;IAC3E,cAAc,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS;IAC/D,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,YAAY,EAAE,cAAc;IAC3E,oCAAoC;CACrC,CAAC;AAEF,SAAS,WAAW,CAAC,OAAe;IAClC,IAAI,GAAG,GAAG,EAAE,CAAC;IACb,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,EAAE,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;QACvB,IAAI,KAAK,EAAE,CAAC;YACV,IAAI,EAAE,KAAK,IAAI;gBAAE,CAAC,EAAE,CAAC;iBAChB,IAAI,EAAE,KAAK,KAAK;gBAAE,KAAK,GAAG,EAAE,CAAC;YAClC,GAAG,IAAI,GAAG,CAAC;QACb,CAAC;aAAM,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,KAAK,GAAG,EAAE,CAAC;YACpC,KAAK,GAAG,EAAE,CAAC;YACX,GAAG,IAAI,GAAG,CAAC;QACb,CAAC;aAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;YACvB,CAAC,EAAE,CAAC;YACJ,GAAG,IAAI,GAAG,CAAC;QACb,CAAC;;YAAM,GAAG,IAAI,EAAE,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACnG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;AAC1F,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,kBAAkB,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;AAC5J,CAAC;AAED,SAAS,aAAa,CAAC,OAAe;IACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI;YAAE,SAAS;QACtH,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,OAAO;YAAE,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpC,IAAI,CAAC,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,CAAC,IAAI,OAAO,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,SAAS;YAAE,KAAK,IAAI,CAAC,CAAC;QAC7F,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IACzC,IAAI,IAAI;QAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB,CAAC,MAAyB,EAAE,OAAe;IAClE,MAAM,UAAU,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,UAAU;QAAE,OAAO;IACxB,IAAI,+BAA+B,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC7B,IAAI,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,KAAK,EAAE,CAAC;QACpD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IACD,IAAI,UAAU,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC1F,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,IAAI,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;QAC7K,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,iDAAiD,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;IAC7F,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;IACvC,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC7H,IAAI,KAAK,KAAK,KAAK;QAAE,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvD,IAAI,KAAK,KAAK,MAAM,IAAI,sCAAsC,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAChJ,IAAI,KAAK,KAAK,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;AACvH,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAA6B;IACzE,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACjD,IAAI,CAAC,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC7C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC5B,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IACpC,KAAK,MAAM,OAAO,IAAI,aAAa,CAAC,OAAO,CAAC;QAAE,kBAAkB,CAAC,OAAO,CAAC,CAAC;IAC1E,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;AACzI,CAAC;AAED,SAAS,SAAS,CAAC,KAAc,EAAE,gBAAwB;IACzD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/D,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAC1K,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,IAA6B;IACtE,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACpG,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,MAAM,GAAG,KAAK,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;IACpE,IAAI,GAAG,GAAG,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC7D,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,iBAAiB,CAAC,EAAE,CAAC;AAC9I,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,IAAY,EAAE,IAA6B;IACtE,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;AACzG,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,IAA6B;IACxE,MAAM,IAAI,GAA4B;QACpC,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC;QAC3E,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,CAAC;QAC/C,UAAU,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,SAAS,EAAE,IAAI;QAC1C,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC;KACjD,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,CAAC,iBAAiB,EAAE,aAAa,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC/D,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS,IAAI,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC;QACjG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC;IACjC,CAAC;IACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IACnE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,IAA6B;IACrD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AAC9I,CAAC;AAED,SAAS,eAAe,CAAC,IAA6B;IACpD,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3E,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3D,MAAM,IAAI,GAA4B,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC;IAC5G,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC;IACrE,IAAI,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACjD,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,EAAE,cAAc,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IAC7E,IAAI,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IACjD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,IAA6B;IACrD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,IAA6B;IACvE,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACpF,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACxD,IAAI,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAChD,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC;IACtD,IAAI,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IAC7C,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACtD,IAAI,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;;QAC1C,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;IACxB,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC7D,IAAI,KAAK,KAAK,SAAS;QAAE,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IAC/C,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAK,IAAI,CAAC,QAAmB,GAAI,IAAI,CAAC,SAAoB;QAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;IAC1K,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAA6B;IACzE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC;IACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC;IAC1C,IAAI,CAAC,OAAO,IAAI,CAAC,QAAQ;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAChF,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,IAAI,OAAO;QAAE,IAAI,CAAC,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7D,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;QAC1D,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,KAAK;YAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY,EAAE,IAA6B;IACxE,MAAM,IAAI,GAA4B,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACpF,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;IAC9C,IAAI,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACzC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IAC/C,IAAI,GAAG,KAAK,SAAS;QAAE,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACtC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IACvD,IAAI,UAAU,KAAK,SAAS;QAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,IAA6B;IACrD,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC;AAChE,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA6B;IACxD,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,CAAC;IACvE,MAAM,MAAM,GAAG,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,MAAM,KAAK,SAAS;QAAE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IAC/C,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAC,IAA6B;IACrD,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,EAAE,CAAC;AAC7C,CAAC;AAED,SAAS,gBAAgB,CAAC,IAA6B;IACrD,MAAM,KAAK,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IACjD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;AAC9C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAc;IACpE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAChG,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACvH,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC;IACtF,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;IACvB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,KAAK,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAClF,KAAK,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAClF,KAAK,WAAW,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACtF,KAAK,YAAY,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,KAAK,WAAW,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1E,KAAK,YAAY,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,KAAK,UAAU,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACpF,KAAK,YAAY,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACxF,KAAK,WAAW,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACtF,KAAK,SAAS,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QACrD,KAAK,YAAY,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,KAAK,eAAe,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,mBAAmB,CAAC,IAAI,CAAC,EAAE,CAAC;QAClF,KAAK,YAAY,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,KAAK,YAAY,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC5E,KAAK,YAAY,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACxF,OAAO,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACxD,CAAC;AACH,CAAC;AAGD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAEjJ,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,IAA6B;IACzE,MAAM,IAAI,GAA4B,EAAE,GAAG,IAAI,EAAE,CAAC;IAClD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,IAAI,CAAC,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7E,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAiB;YAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3F,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAc,EAAE,OAAyB,EAAE,OAAuB;IACxH,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;IACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACpF,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACzF,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAC7F,CAAC;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACtC,IAAI,GAAG,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACpE,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACjD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;YAC9G,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBACjD,MAAM,IAAI,KAAK,CAAC,yFAAyF,CAAC,CAAC;YAC7G,CAAC;QACH,CAAC;QACD,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC5C,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,OAAO,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;IAC7D,CAAC;IACD,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAS,CAAC,mEAAmE,CAAC,CAAC,CAAC;IACpG,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7E,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACjG,IAAI,IAAI,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,OAAO,GAAG,KAAK,EAAE,IAAY,EAAE,KAAa,EAAiB,EAAE;QACnE,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,IAAI,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,IAAI,KAAK,GAAG,EAAE,EAAE,CAAC;YACxD,IAAI,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;YACrF,OAAO;QACT,CAAC;QACD,OAAO,IAAI,CAAC,CAAC;QACb,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,cAAc,EAAE;YAAE,OAAO;QAClC,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC1D,IAAI,IAAI,CAAC,IAAI,IAAI,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5G,CAAC;aAAM,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YAC9B,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;YAChC,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,EAAE,CAAC;gBAC9B,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;gBACjC,IAAI,OAAO,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;oBAC1C,IAAI,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;oBACrF,MAAM;gBACR,CAAC;gBACD,OAAO,IAAI,CAAC,CAAC;gBACb,IAAI,KAAK,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC3B,MAAM,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;oBACpD,SAAS;gBACX,CAAC;gBACD,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;oBAAE,SAAS;gBAC5F,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;IACH,CAAC,CAAC;IACF,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACxB,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,IAAI,EAAE,GAAG,IAAI,CAAC;IACd,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC5C,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAChG,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,CAAC;QACpF,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,CAAC;QACb,EAAE,GAAG,EAAE,IAAI,MAAM,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC;YAC/B,IAAI,MAAM,CAAC,EAAE;gBAAE,OAAO,IAAI,CAAC,CAAC;QAC9B,CAAC;QACD,IAAI,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACpE,MAAM;QACR,CAAC;QACD,IAAI,MAAM,CAAC,MAAM,IAAI,iBAAiB,GAAG,IAAI,EAAE,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YAC5E,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,CAAC,WAAW,OAAO,WAAW,OAAO,sEAAsE,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,kCAAkC,EAAE,CAAC,EAAE,CAAC;AACzN,CAAC"}
|
|
1
|
+
{"version":3,"file":"read-only-tools.js","sourceRoot":"","sources":["../../../src/agent/subagents/read-only-tools.ts"],"names":[],"mappings":"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"}
|