@phosphor-dom/sentinel-ai 0.3.0 → 0.4.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 (64) hide show
  1. package/dist/cli/commands/agents.d.ts.map +1 -1
  2. package/dist/cli/commands/agents.js +10 -5
  3. package/dist/cli/commands/agents.js.map +1 -1
  4. package/dist/cli/commands/dashboard.js +43 -41
  5. package/dist/cli/commands/dashboard.js.map +1 -1
  6. package/dist/cli/commands/events.d.ts.map +1 -1
  7. package/dist/cli/commands/events.js +5 -7
  8. package/dist/cli/commands/events.js.map +1 -1
  9. package/dist/cli/commands/report.d.ts.map +1 -1
  10. package/dist/cli/commands/report.js +5 -4
  11. package/dist/cli/commands/report.js.map +1 -1
  12. package/dist/cli/commands/scan.d.ts +1 -1
  13. package/dist/cli/commands/scan.d.ts.map +1 -1
  14. package/dist/cli/commands/scan.js +16 -12
  15. package/dist/cli/commands/scan.js.map +1 -1
  16. package/dist/cli/index.js +25 -26
  17. package/dist/cli/index.js.map +1 -1
  18. package/dist/cli/utils/format.d.ts +13 -0
  19. package/dist/cli/utils/format.d.ts.map +1 -1
  20. package/dist/cli/utils/format.js +66 -16
  21. package/dist/cli/utils/format.js.map +1 -1
  22. package/dist/core/correlation-engine.js +1 -1
  23. package/dist/core/correlation-engine.js.map +1 -1
  24. package/dist/core/event-bus.d.ts +1 -1
  25. package/dist/core/event-bus.d.ts.map +1 -1
  26. package/dist/core/inter-agent-communication.d.ts +1 -1
  27. package/dist/core/inter-agent-communication.d.ts.map +1 -1
  28. package/dist/core/inter-agent-communication.js +1 -1
  29. package/dist/core/inter-agent-communication.js.map +1 -1
  30. package/dist/core/orchestrator.d.ts +9 -5
  31. package/dist/core/orchestrator.d.ts.map +1 -1
  32. package/dist/core/orchestrator.js +254 -13
  33. package/dist/core/orchestrator.js.map +1 -1
  34. package/dist/core/provider-abstraction.d.ts +7 -0
  35. package/dist/core/provider-abstraction.d.ts.map +1 -1
  36. package/dist/core/provider-abstraction.js +118 -5
  37. package/dist/core/provider-abstraction.js.map +1 -1
  38. package/dist/index.d.ts +25 -25
  39. package/dist/index.d.ts.map +1 -1
  40. package/dist/index.js +15 -15
  41. package/dist/index.js.map +1 -1
  42. package/dist/mcp/client.d.ts +1 -1
  43. package/dist/mcp/client.d.ts.map +1 -1
  44. package/dist/mcp/index.d.ts +5 -5
  45. package/dist/mcp/index.d.ts.map +1 -1
  46. package/dist/mcp/index.js +5 -5
  47. package/dist/mcp/index.js.map +1 -1
  48. package/dist/mcp/server.d.ts +1 -1
  49. package/dist/mcp/server.d.ts.map +1 -1
  50. package/dist/mcp/tools.d.ts +1 -1
  51. package/dist/mcp/tools.d.ts.map +1 -1
  52. package/dist/mcp/tools.js +416 -57
  53. package/dist/mcp/tools.js.map +1 -1
  54. package/dist/skills/builtins.d.ts +1 -1
  55. package/dist/skills/builtins.d.ts.map +1 -1
  56. package/dist/skills/index.d.ts +3 -3
  57. package/dist/skills/index.d.ts.map +1 -1
  58. package/dist/skills/index.js +2 -2
  59. package/dist/skills/index.js.map +1 -1
  60. package/dist/skills/registry.d.ts +1 -1
  61. package/dist/skills/registry.d.ts.map +1 -1
  62. package/dist/skills/registry.js +1 -1
  63. package/dist/skills/registry.js.map +1 -1
  64. package/package.json +1 -1
package/dist/mcp/tools.js CHANGED
@@ -1,100 +1,459 @@
1
+ const COMMON_SUBDOMAINS = ["www", "api", "mail", "admin", "blog", "dev", "staging", "cdn", "app", "portal", "docs", "support", "status", "ws", "webmail", "remote", "vpn", "git", "jenkins", "grafana", "prometheus"];
2
+ async function exec(cmd, args, timeout = 10000) {
3
+ try {
4
+ const { execSync } = await import("node:child_process");
5
+ const { execPath } = await import("node:process");
6
+ const result = execSync(`"${cmd}" ${args.join(" ")}`, { encoding: "utf-8", timeout, windowsHide: true });
7
+ return result?.trim() || "";
8
+ }
9
+ catch {
10
+ return "";
11
+ }
12
+ }
13
+ async function fetchJson(url, timeout = 8000) {
14
+ try {
15
+ const controller = new AbortController();
16
+ const id = setTimeout(() => controller.abort(), timeout);
17
+ const res = await fetch(url, { signal: controller.signal });
18
+ clearTimeout(id);
19
+ if (!res.ok)
20
+ return null;
21
+ return await res.json();
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
1
27
  export function createReconTools(server) {
2
28
  server.registerTool({
3
29
  name: "dns_lookup",
4
- description: "Enumerate DNS records for a domain",
5
- inputSchema: { type: "object", properties: { domain: { type: "string", description: "Target domain" }, recordType: { type: "string", description: "Record type (A, AAAA, MX, NS, TXT, etc.)" } }, required: ["domain"] },
6
- }, async (args) => ({
7
- content: [{ type: "text", text: JSON.stringify({ domain: args.domain, records: ["192.0.2.1", "198.51.100.1"] }) }],
8
- isError: false,
9
- }));
30
+ description: "Enumerate DNS records for a domain using Node.js dns module",
31
+ inputSchema: { type: "object", properties: { domain: { type: "string", description: "Target domain" }, recordType: { type: "string", description: "Record type (A, AAAA, MX, NS, TXT, CNAME)" } }, required: ["domain"] },
32
+ }, async (args) => {
33
+ const domain = args.domain;
34
+ const recordType = args.recordType || "A";
35
+ try {
36
+ const dns = await import("node:dns/promises");
37
+ let records;
38
+ switch (recordType.toUpperCase()) {
39
+ case "A":
40
+ records = await dns.resolve4(domain);
41
+ break;
42
+ case "AAAA":
43
+ records = await dns.resolve6(domain);
44
+ break;
45
+ case "MX":
46
+ records = await dns.resolveMx(domain);
47
+ break;
48
+ case "NS":
49
+ records = await dns.resolveNs(domain);
50
+ break;
51
+ case "TXT":
52
+ records = await dns.resolveTxt(domain);
53
+ break;
54
+ case "CNAME":
55
+ records = await dns.resolveCname(domain);
56
+ break;
57
+ default:
58
+ records = await dns.resolve4(domain);
59
+ break;
60
+ }
61
+ return { content: [{ type: "text", text: JSON.stringify({ domain, recordType, records }, null, 2) }], isError: false };
62
+ }
63
+ catch (err) {
64
+ return { content: [{ type: "text", text: JSON.stringify({ domain, recordType, error: err instanceof Error ? err.message : "Lookup failed", records: [] }) }], isError: false };
65
+ }
66
+ });
10
67
  server.registerTool({
11
68
  name: "whois_query",
12
- description: "Perform WHOIS lookup on a domain",
69
+ description: "Perform WHOIS lookup on a domain via raw TCP to whois.iana.org",
13
70
  inputSchema: { type: "object", properties: { domain: { type: "string", description: "Target domain" } }, required: ["domain"] },
14
- }, async (args) => ({
15
- content: [{ type: "text", text: JSON.stringify({ domain: args.domain, registrar: "Example Registrar", created: "2020-01-01", expires: "2025-01-01" }) }],
16
- isError: false,
17
- }));
71
+ }, async (args) => {
72
+ const domain = args.domain;
73
+ try {
74
+ const net = await import("node:net");
75
+ const whoisData = await new Promise((resolve, reject) => {
76
+ const client = net.createConnection(43, "whois.iana.org", () => { client.write(`${domain}\r\n`); });
77
+ let data = "";
78
+ client.on("data", (chunk) => { data += chunk.toString(); });
79
+ client.on("end", () => resolve(data));
80
+ client.on("error", reject);
81
+ client.setTimeout(8000, () => { client.destroy(); reject(new Error("timeout")); });
82
+ });
83
+ const lines = whoisData.split("\n").filter((l) => l.trim()).slice(0, 30);
84
+ return { content: [{ type: "text", text: JSON.stringify({ domain, whois: lines }, null, 2) }], isError: false };
85
+ }
86
+ catch {
87
+ return { content: [{ type: "text", text: JSON.stringify({ domain, whois: "WHOIS lookup unavailable" }) }], isError: false };
88
+ }
89
+ });
18
90
  server.registerTool({
19
91
  name: "subdomain_discover",
20
- description: "Discover subdomains of a domain",
92
+ description: "Discover common subdomains via DNS resolution",
21
93
  inputSchema: { type: "object", properties: { domain: { type: "string", description: "Parent domain" } }, required: ["domain"] },
22
- }, async (args) => ({
23
- content: [{ type: "text", text: JSON.stringify({ domain: args.domain, subdomains: ["www", "api", "mail", "admin"].map((s) => `${s}.${args.domain}`) }) }],
24
- isError: false,
25
- }));
94
+ }, async (args) => {
95
+ const domain = args.domain;
96
+ try {
97
+ const dns = await import("node:dns/promises");
98
+ const found = [];
99
+ const batchSize = 5;
100
+ for (let i = 0; i < COMMON_SUBDOMAINS.length; i += batchSize) {
101
+ const batch = COMMON_SUBDOMAINS.slice(i, i + batchSize);
102
+ const results = await Promise.allSettled(batch.map(async (sub) => {
103
+ try {
104
+ await dns.resolve4(`${sub}.${domain}`);
105
+ return `${sub}.${domain}`;
106
+ }
107
+ catch {
108
+ return null;
109
+ }
110
+ }));
111
+ for (const r of results) {
112
+ if (r.status === "fulfilled" && r.value)
113
+ found.push(r.value);
114
+ }
115
+ }
116
+ return { content: [{ type: "text", text: JSON.stringify({ domain, subdomains: found }, null, 2) }], isError: false };
117
+ }
118
+ catch {
119
+ return { content: [{ type: "text", text: JSON.stringify({ domain, subdomains: [] }) }], isError: false };
120
+ }
121
+ });
26
122
  }
27
123
  export function createInfrastructureTools(server) {
28
124
  server.registerTool({
29
125
  name: "port_scan",
30
- description: "Scan open ports on a target",
31
- inputSchema: { type: "object", properties: { target: { type: "string", description: "Target IP or hostname" }, ports: { type: "string", description: "Port range (e.g. 1-1000)" } }, required: ["target"] },
32
- }, async (args) => ({
33
- content: [{ type: "text", text: JSON.stringify({ target: args.target, openPorts: [{ port: 80, service: "http" }, { port: 443, service: "https" }] }) }],
34
- isError: false,
35
- }));
126
+ description: "Scan open TCP ports on a target using Node.js net module",
127
+ inputSchema: { type: "object", properties: { target: { type: "string", description: "Target IP or hostname" }, ports: { type: "string", description: "Port range (e.g. 22,80,443 or 1-1000)" } }, required: ["target"] },
128
+ }, async (args) => {
129
+ const target = args.target;
130
+ const portArg = args.ports || "22,80,443,8080";
131
+ const ports = [];
132
+ for (const part of portArg.split(",")) {
133
+ const trimmed = part.trim();
134
+ if (trimmed.includes("-")) {
135
+ const [start, end] = trimmed.split("-").map(Number);
136
+ for (let p = start; p <= end; p++)
137
+ ports.push(p);
138
+ }
139
+ else {
140
+ ports.push(Number(trimmed));
141
+ }
142
+ }
143
+ const commonPorts = ports.slice(0, 30);
144
+ try {
145
+ const net = await import("node:net");
146
+ const openPorts = [];
147
+ for (const port of commonPorts) {
148
+ try {
149
+ await new Promise((resolve, reject) => {
150
+ const sock = new net.Socket();
151
+ sock.setTimeout(1500);
152
+ sock.on("connect", () => { sock.destroy(); resolve(); });
153
+ sock.on("error", () => reject());
154
+ sock.on("timeout", () => { sock.destroy(); reject(); });
155
+ sock.connect(port, target);
156
+ });
157
+ openPorts.push({ port, service: port === 80 ? "http" : port === 443 ? "https" : port === 22 ? "ssh" : port === 21 ? "ftp" : port === 3306 ? "mysql" : port === 5432 ? "postgresql" : port === 6379 ? "redis" : port === 27017 ? "mongodb" : port === 8080 ? "http-proxy" : port === 8443 ? "https-alt" : "unknown" });
158
+ }
159
+ catch { /* port closed */ }
160
+ }
161
+ return { content: [{ type: "text", text: JSON.stringify({ target, scanned: commonPorts.length, openPorts }, null, 2) }], isError: false };
162
+ }
163
+ catch (err) {
164
+ return { content: [{ type: "text", text: JSON.stringify({ target, error: err instanceof Error ? err.message : "Scan failed", openPorts: [] }) }], isError: false };
165
+ }
166
+ });
36
167
  server.registerTool({
37
168
  name: "tls_analyze",
38
- description: "Analyze TLS configuration of a host",
169
+ description: "Analyze TLS configuration using Node.js tls module",
39
170
  inputSchema: { type: "object", properties: { host: { type: "string" }, port: { type: "number", description: "Default 443" } }, required: ["host"] },
40
- }, async (args) => ({
41
- content: [{ type: "text", text: JSON.stringify({ host: args.host, tlsVersion: "TLS 1.3", ciphers: ["TLS_AES_256_GCM_SHA384"], certificate: { issuer: "CA", expiry: "2025-12-31" } }) }],
42
- isError: false,
43
- }));
171
+ }, async (args) => {
172
+ const host = args.host;
173
+ const port = args.port || 443;
174
+ try {
175
+ const tls = await import("node:tls");
176
+ const x509 = await import("node:crypto");
177
+ const cert = await new Promise((resolve, reject) => {
178
+ const socket = tls.connect(port, host, { rejectUnauthorized: false }, () => {
179
+ const c = socket.getPeerCertificate();
180
+ socket.end();
181
+ resolve({
182
+ subject: c.subject,
183
+ issuer: c.issuer,
184
+ validFrom: c.valid_from,
185
+ validTo: c.valid_to,
186
+ fingerprint: c.fingerprint,
187
+ serialNumber: c.serialNumber,
188
+ subjectaltname: c.subjectaltname,
189
+ bits: c.bits,
190
+ });
191
+ });
192
+ socket.setTimeout(8000, () => { socket.destroy(); reject(new Error("timeout")); });
193
+ socket.on("error", reject);
194
+ });
195
+ return { content: [{ type: "text", text: JSON.stringify({ host, port, certificate: cert }, null, 2) }], isError: false };
196
+ }
197
+ catch (err) {
198
+ return { content: [{ type: "text", text: JSON.stringify({ host, port, error: err instanceof Error ? err.message : "TLS analysis failed" }) }], isError: false };
199
+ }
200
+ });
44
201
  }
45
202
  export function createWebSecurityTools(server) {
46
203
  server.registerTool({
47
204
  name: "http_scan",
48
- description: "Audit HTTP security headers",
205
+ description: "Audit HTTP security headers by making a HEAD request",
49
206
  inputSchema: { type: "object", properties: { url: { type: "string" } }, required: ["url"] },
50
- }, async (args) => ({
51
- content: [{ type: "text", text: JSON.stringify({ url: args.url, headers: { "Strict-Transport-Security": "missing", "X-Frame-Options": "DENY", "Content-Security-Policy": "missing" }, vulnerabilities: ["Missing HSTS", "Missing CSP"] }) }],
52
- isError: false,
53
- }));
207
+ }, async (args) => {
208
+ const url = args.url.replace(/\/$/, "");
209
+ try {
210
+ const res = await fetch(url, { method: "HEAD", redirect: "manual", signal: AbortSignal.timeout(8000) });
211
+ const headers = {};
212
+ res.headers.forEach((v, k) => { headers[k] = v; });
213
+ const vulns = [];
214
+ const securityHeaders = {
215
+ "strict-transport-security": { description: "HTTP Strict Transport Security", expected: "present" },
216
+ "x-frame-options": { description: "Clickjacking protection", expected: "DENY or SAMEORIGIN" },
217
+ "x-content-type-options": { description: "MIME type sniffing protection", expected: "nosniff" },
218
+ "content-security-policy": { description: "Content Security Policy", expected: "present" },
219
+ "x-xss-protection": { description: "XSS filter", expected: "1; mode=block" },
220
+ "referrer-policy": { description: "Referrer Policy", expected: "present" },
221
+ "permissions-policy": { description: "Permissions Policy", expected: "present" },
222
+ "access-control-allow-origin": { description: "CORS header", expected: "should be restricted" },
223
+ };
224
+ for (const [header, info] of Object.entries(securityHeaders)) {
225
+ if (!headers[header])
226
+ vulns.push(`Missing ${info.description} (${header})`);
227
+ }
228
+ const server = headers["server"] || "unknown";
229
+ const poweredBy = headers["x-powered-by"] || "";
230
+ if (poweredBy)
231
+ vulns.push(`Server header exposes: ${poweredBy}`);
232
+ return { content: [{ type: "text", text: JSON.stringify({ url, status: res.status, headers, vulnerabilities: vulns, server }, null, 2) }], isError: false };
233
+ }
234
+ catch {
235
+ return { content: [{ type: "text", text: JSON.stringify({ url, error: "HTTP scan failed - target may be unreachable" }) }], isError: false };
236
+ }
237
+ });
54
238
  server.registerTool({
55
239
  name: "jwt_decode",
56
- description: "Decode and analyze a JWT token",
240
+ description: "Decode and analyze a JWT token without verification",
57
241
  inputSchema: { type: "object", properties: { token: { type: "string" } }, required: ["token"] },
58
- }, async (args) => ({
59
- content: [{ type: "text", text: JSON.stringify({ header: { alg: "HS256" }, payload: { sub: "user", role: "admin" }, signature: "valid", issues: ["Weak algorithm HS256", "No expiry claim"] }) }],
60
- isError: false,
61
- }));
242
+ }, async (args) => {
243
+ const token = args.token;
244
+ try {
245
+ const parts = token.split(".");
246
+ if (parts.length !== 3)
247
+ return { content: [{ type: "text", text: JSON.stringify({ error: "Invalid JWT format: expected 3 parts" }) }], isError: false };
248
+ const decode = (s) => JSON.parse(Buffer.from(s.replace(/-/g, "+").replace(/_/g, "/"), "base64").toString("utf-8"));
249
+ const header = decode(parts[0]);
250
+ const payload = decode(parts[1]);
251
+ const issues = [];
252
+ if (header.alg === "none")
253
+ issues.push("Algorithm is 'none' - security risk");
254
+ if (header.alg === "HS256")
255
+ issues.push("Weak symmetric algorithm HS256 - prefer RS256 or EdDSA");
256
+ if (!payload.exp)
257
+ issues.push("No expiry claim (exp)");
258
+ if (!payload.iat)
259
+ issues.push("No issued-at claim (iat)");
260
+ if (payload.role === "admin" || payload.role === "administrator")
261
+ issues.push("Admin role found in token payload");
262
+ return { content: [{ type: "text", text: JSON.stringify({ header, payload, issues }, null, 2) }], isError: false };
263
+ }
264
+ catch (err) {
265
+ return { content: [{ type: "text", text: JSON.stringify({ error: `JWT decode failed: ${err instanceof Error ? err.message : "invalid token"}` }) }], isError: false };
266
+ }
267
+ });
62
268
  }
63
269
  export function createCodeAuditTools(server) {
64
270
  server.registerTool({
65
271
  name: "sast_scan",
66
- description: "Run static analysis on a repository",
272
+ description: "Run basic static analysis on a repository path using pattern matching",
67
273
  inputSchema: { type: "object", properties: { repoPath: { type: "string" } }, required: ["repoPath"] },
68
- }, async (args) => ({
69
- content: [{ type: "text", text: JSON.stringify({ findings: [{ rule: "no-sql-injection", severity: "high", file: "src/api/user.ts", line: 42 }] }) }],
70
- isError: false,
71
- }));
274
+ }, async (args) => {
275
+ const repoPath = args.repoPath;
276
+ const patterns = [
277
+ { pattern: "eval(", severity: "high", rule: "eval-use", languages: ["js", "ts", "py"] },
278
+ { pattern: "exec(", severity: "high", rule: "exec-use", languages: ["js", "ts", "py", "rb"] },
279
+ { pattern: "SELECT.*FROM.*WHERE.*=.*\\+", severity: "high", rule: "sql-injection", languages: ["js", "ts", "py", "java", "go"] },
280
+ { pattern: "innerHTML", severity: "medium", rule: "dom-xss", languages: ["js", "ts"] },
281
+ { pattern: "localStorage", severity: "low", rule: "client-storage", languages: ["js", "ts"] },
282
+ { pattern: "console.log", severity: "info", rule: "debug-log", languages: ["js", "ts", "py", "go"] },
283
+ { pattern: "TODO", severity: "info", rule: "todo", languages: ["*"] },
284
+ { pattern: "FIXME", severity: "info", rule: "fixme", languages: ["*"] },
285
+ { pattern: "password", severity: "medium", rule: "password-reference", languages: ["*"] },
286
+ { pattern: "apiKey", severity: "medium", rule: "apikey-reference", languages: ["js", "ts"] },
287
+ ];
288
+ const findings = [];
289
+ try {
290
+ const fs = await import("node:fs");
291
+ const path = await import("node:path");
292
+ if (!fs.existsSync(repoPath))
293
+ return { content: [{ type: "text", text: JSON.stringify({ repoPath, error: "Path does not exist" }) }], isError: false };
294
+ const extensions = [".js", ".ts", ".py", ".java", ".go", ".rb", ".php", ".cs", ".rs"];
295
+ const files = [];
296
+ function walk(dir) {
297
+ try {
298
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
299
+ for (const entry of entries) {
300
+ if (entry.name.startsWith(".") || entry.name === "node_modules" || entry.name === "dist" || entry.name === ".git")
301
+ continue;
302
+ const full = path.join(dir, entry.name);
303
+ if (entry.isDirectory())
304
+ walk(full);
305
+ else if (entry.isFile() && extensions.includes(path.extname(entry.name)))
306
+ files.push(full);
307
+ }
308
+ }
309
+ catch { /* skip unreadable */ }
310
+ }
311
+ walk(repoPath);
312
+ const scannedFiles = files.slice(0, 100);
313
+ for (const file of scannedFiles) {
314
+ try {
315
+ const content = fs.readFileSync(file, "utf-8");
316
+ const lines = content.split("\n");
317
+ for (const p of patterns) {
318
+ if (p.languages[0] !== "*") {
319
+ const ext = path.extname(file).slice(1);
320
+ const langMap = { js: "js", ts: "ts", jsx: "js", tsx: "ts", py: "py", java: "java", go: "go", rb: "rb", php: "php", cs: "cs", rs: "rs" };
321
+ if (!p.languages.includes(langMap[ext] || ""))
322
+ continue;
323
+ }
324
+ for (let i = 0; i < lines.length; i++) {
325
+ if (lines[i].toLowerCase().includes(p.pattern.toLowerCase())) {
326
+ findings.push({ rule: p.rule, severity: p.severity, file, line: i + 1, snippet: lines[i].trim().slice(0, 100) });
327
+ }
328
+ }
329
+ }
330
+ }
331
+ catch { /* skip unreadable */ }
332
+ }
333
+ return { content: [{ type: "text", text: JSON.stringify({ repoPath, filesScanned: scannedFiles.length, totalFindings: findings.length, findings: findings.slice(0, 50) }, null, 2) }], isError: false };
334
+ }
335
+ catch (err) {
336
+ return { content: [{ type: "text", text: JSON.stringify({ repoPath, error: err instanceof Error ? err.message : "SAST scan failed", findings: [] }) }], isError: false };
337
+ }
338
+ });
72
339
  server.registerTool({
73
340
  name: "secret_scan",
74
- description: "Scan for secrets in a repository",
341
+ description: "Scan for potential secrets in a repository",
75
342
  inputSchema: { type: "object", properties: { repoPath: { type: "string" } }, required: ["repoPath"] },
76
- }, async (args) => ({
77
- content: [{ type: "text", text: JSON.stringify({ secrets: [{ type: "AWS Key", file: ".env", line: 3 }] }) }],
78
- isError: false,
79
- }));
343
+ }, async (args) => {
344
+ const repoPath = args.repoPath;
345
+ const secretPatterns = [
346
+ { regex: /(?:AKIA[0-9A-Z]{16})/, type: "AWS Access Key" },
347
+ { regex: /(?:sk-[a-zA-Z0-9]{20,})/, type: "OpenAI API Key" },
348
+ { regex: /(?:ghp_[a-zA-Z0-9]{36})/, type: "GitHub PAT" },
349
+ { regex: /(?:gho_[a-zA-Z0-9]{36})/, type: "GitHub OAuth" },
350
+ { regex: /(?:xox[abp]-[a-zA-Z0-9]{10,})/, type: "Slack Token" },
351
+ { regex: /-----BEGIN (?:RSA |EC |)?PRIVATE KEY-----/, type: "Private Key" },
352
+ { regex: /(?:password\s*[=:]\s*['"][^'"]{6,}['"])/i, type: "Hardcoded Password" },
353
+ { regex: /(?:api[_-]?key\s*[=:]\s*['"][a-zA-Z0-9]{16,}['"])/i, type: "API Key" },
354
+ { regex: /(?:secret\s*[=:]\s*['"][a-zA-Z0-9]{16,}['"])/i, type: "Secret" },
355
+ ];
356
+ const secrets = [];
357
+ try {
358
+ const fs = await import("node:fs");
359
+ const path = await import("node:path");
360
+ if (!fs.existsSync(repoPath))
361
+ return { content: [{ type: "text", text: JSON.stringify({ repoPath, error: "Path does not exist" }) }], isError: false };
362
+ const files = [];
363
+ function walk(dir) {
364
+ try {
365
+ const entries = fs.readdirSync(dir, { withFileTypes: true });
366
+ for (const entry of entries) {
367
+ if (entry.name.startsWith(".") || entry.name === "node_modules" || entry.name === "dist" || entry.name === ".git")
368
+ continue;
369
+ const full = path.join(dir, entry.name);
370
+ if (entry.isDirectory())
371
+ walk(full);
372
+ else if (entry.isFile())
373
+ files.push(full);
374
+ }
375
+ }
376
+ catch { /* skip */ }
377
+ }
378
+ walk(repoPath);
379
+ const scannedFiles = files.slice(0, 200);
380
+ for (const file of scannedFiles) {
381
+ try {
382
+ const content = fs.readFileSync(file, "utf-8");
383
+ const lines = content.split("\n");
384
+ for (let i = 0; i < lines.length; i++) {
385
+ for (const p of secretPatterns) {
386
+ if (p.regex.test(lines[i])) {
387
+ secrets.push({ type: p.type, file, line: i + 1, snippet: lines[i].trim().slice(0, 100) });
388
+ }
389
+ }
390
+ }
391
+ }
392
+ catch { /* skip */ }
393
+ }
394
+ return { content: [{ type: "text", text: JSON.stringify({ repoPath, filesScanned: scannedFiles.length, secretsFound: secrets.length, secrets: secrets.slice(0, 30) }, null, 2) }], isError: false };
395
+ }
396
+ catch (err) {
397
+ return { content: [{ type: "text", text: JSON.stringify({ repoPath, error: err instanceof Error ? err.message : "Secret scan failed", secrets: [] }) }], isError: false };
398
+ }
399
+ });
80
400
  }
81
401
  export function createCveTools(server) {
82
402
  server.registerTool({
83
403
  name: "cve_lookup",
84
- description: "Look up CVE details",
404
+ description: "Look up CVE details via NVD API",
85
405
  inputSchema: { type: "object", properties: { cveId: { type: "string", description: "CVE identifier (e.g. CVE-2024-1234)" } }, required: ["cveId"] },
86
- }, async (args) => ({
87
- content: [{ type: "text", text: JSON.stringify({ cveId: args.cveId, cvss: 8.5, severity: "high", description: "Example vulnerability", affected: ["package@1.0.0"], exploitAvailable: true }) }],
88
- isError: false,
89
- }));
406
+ }, async (args) => {
407
+ const cveId = args.cveId.toUpperCase().trim();
408
+ if (!/^CVE-\d{4}-\d{4,}$/i.test(cveId)) {
409
+ return { content: [{ type: "text", text: JSON.stringify({ error: "Invalid CVE format. Expected CVE-YYYY-NNNN" }) }], isError: false };
410
+ }
411
+ const raw = await fetchJson(`https://services.nvd.nist.gov/rest/json/cves/2.0?cveId=${cveId}`);
412
+ const vulnList = raw?.vulnerabilities?.filter(Boolean);
413
+ if (vulnList?.[0]?.cve) {
414
+ const cve = vulnList[0].cve;
415
+ const metrics = cve.metrics;
416
+ const cvssData = (metrics?.["cvssMetricV31"]?.[0]?.cvssData ||
417
+ metrics?.["cvssMetricV30"]?.[0]?.cvssData ||
418
+ metrics?.["cvssMetricV2"]?.[0]?.cvssData);
419
+ const descriptions = cve.descriptions;
420
+ const refs = cve.references;
421
+ return { content: [{ type: "text", text: JSON.stringify({
422
+ cveId,
423
+ published: cve.published || "unknown",
424
+ lastModified: cve.lastModified || "unknown",
425
+ sourceIdentifier: cve.sourceIdentifier || "unknown",
426
+ description: descriptions?.find((d) => d.lang === "en")?.value || "No description available",
427
+ cvss: cvssData?.baseScore || "N/A",
428
+ severity: cvssData?.baseSeverity || "N/A",
429
+ vectorString: cvssData?.vectorString || "N/A",
430
+ weaknesses: cve.weaknesses?.map((w) => w.description?.[0]?.value).filter(Boolean) || [],
431
+ references: refs?.slice(0, 5).map((r) => r.url) || [],
432
+ }, null, 2) }], isError: false };
433
+ }
434
+ return { content: [{ type: "text", text: JSON.stringify({ cveId, error: "CVE not found in NVD database" }) }], isError: false };
435
+ });
90
436
  server.registerTool({
91
437
  name: "epss_query",
92
- description: "Query EPSS probability score for a CVE",
438
+ description: "Query EPSS probability score for a CVE via FIRST API",
93
439
  inputSchema: { type: "object", properties: { cveId: { type: "string" } }, required: ["cveId"] },
94
- }, async (args) => ({
95
- content: [{ type: "text", text: JSON.stringify({ cveId: args.cveId, epss: 0.85, percentile: 0.95 }) }],
96
- isError: false,
97
- }));
440
+ }, async (args) => {
441
+ const cveId = args.cveId.toUpperCase().trim();
442
+ if (!/^CVE-\d{4}-\d{4,}$/i.test(cveId)) {
443
+ return { content: [{ type: "text", text: JSON.stringify({ error: "Invalid CVE format" }) }], isError: false };
444
+ }
445
+ const raw = await fetchJson(`https://api.first.org/data/v1/epss?cve=${cveId}`);
446
+ const epssList = raw?.data?.filter(Boolean);
447
+ if (epssList?.[0]) {
448
+ const entry = epssList[0];
449
+ return { content: [{ type: "text", text: JSON.stringify({
450
+ cveId,
451
+ epss: parseFloat(entry.epss || "0"),
452
+ percentile: parseFloat(entry.percentile || "0"),
453
+ }, null, 2) }], isError: false };
454
+ }
455
+ return { content: [{ type: "text", text: JSON.stringify({ cveId, epss: 0, percentile: 0, note: "No EPSS data available" }) }], isError: false };
456
+ });
98
457
  }
99
458
  export function registerAllTools(server) {
100
459
  createReconTools(server);
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAGA,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAA;AAErN,KAAK,UAAU,IAAI,CAAC,GAAW,EAAE,IAAc,EAAE,OAAO,GAAG,KAAK;IAC9D,IAAI,CAAC;QACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAA;QACvD,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,CAAA;QACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,GAAG,KAAK,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAA;QACxG,OAAO,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,OAAO,GAAG,IAAI;IAClD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAA;QACxC,MAAM,EAAE,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAA;QACxD,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAA;QAC3D,YAAY,CAAC,EAAE,CAAC,CAAA;QAChB,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAA;QACxB,OAAO,MAAM,GAAG,CAAC,IAAI,EAA6B,CAAA;IACpD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,6DAA6D;QAC1E,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;KAC1N,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAA;QACpC,MAAM,UAAU,GAAI,IAAI,CAAC,UAAqB,IAAI,GAAG,CAAA;QACrD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;YAC7C,IAAI,OAAgB,CAAA;YACpB,QAAQ,UAAU,CAAC,WAAW,EAAE,EAAE,CAAC;gBACjC,KAAK,GAAG;oBAAE,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAK;gBACrD,KAAK,MAAM;oBAAE,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAK;gBACxD,KAAK,IAAI;oBAAE,OAAO,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAK;gBACvD,KAAK,IAAI;oBAAE,OAAO,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAK;gBACvD,KAAK,KAAK;oBAAE,OAAO,GAAG,MAAM,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAK;gBACzD,KAAK,OAAO;oBAAE,OAAO,GAAG,MAAM,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAK;gBAC7D;oBAAS,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAAC,MAAK;YACtD,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACxH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAChL,CAAC;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,gEAAgE;QAC7E,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;KAChI,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAA;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;YACpC,MAAM,SAAS,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC9D,MAAM,MAAM,GAAG,GAAG,CAAC,gBAAgB,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,MAAM,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;gBAClG,IAAI,IAAI,GAAG,EAAE,CAAA;gBACb,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;gBAC1D,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAA;gBACrC,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;gBAC1B,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;YACnF,CAAC,CAAC,CAAA;YACF,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YACxE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACjH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC7H,CAAC;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,+CAA+C;QAC5D,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;KAChI,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAA;QACpC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAA;YAC7C,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,MAAM,SAAS,GAAG,CAAC,CAAA;YACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;gBAC7D,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,CAAA;gBACvD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;oBACtB,IAAI,CAAC;wBACH,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC,CAAA;wBACtC,OAAO,GAAG,GAAG,IAAI,MAAM,EAAE,CAAA;oBAC3B,CAAC;oBAAC,MAAM,CAAC;wBAAC,OAAO,IAAI,CAAA;oBAAC,CAAC;gBACzB,CAAC,CAAC,CACH,CAAA;gBACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;oBACxB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW,IAAI,CAAC,CAAC,KAAK;wBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;gBAC9D,CAAC;YACH,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACtH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC1G,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,0DAA0D;QACvE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;KACzN,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,MAAM,GAAG,IAAI,CAAC,MAAgB,CAAA;QACpC,MAAM,OAAO,GAAI,IAAI,CAAC,KAAgB,IAAI,gBAAgB,CAAA;QAC1D,MAAM,KAAK,GAAa,EAAE,CAAA;QAC1B,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;gBACnD,KAAK,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE;oBAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;YAClD,CAAC;iBAAM,CAAC;gBACN,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;YACpC,MAAM,SAAS,GAAwC,EAAE,CAAA;YACzD,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,IAAI,CAAC;oBACH,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;wBAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAA;wBAC7B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAA;wBACrB,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;wBACvD,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAA;wBAChC,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAA,CAAC,CAAC,CAAC,CAAA;wBACtD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;oBAC5B,CAAC,CAAC,CAAA;oBACF,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,CAAA;gBACvT,CAAC;gBAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC/B,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC3I,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACpK,CAAC;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,oDAAoD;QACjE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE;KACpJ,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAA;QAChC,MAAM,IAAI,GAAI,IAAI,CAAC,IAAe,IAAI,GAAG,CAAA;QACzC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAA;YACpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAA;YACxC,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAA0B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1E,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,kBAAkB,EAAE,KAAK,EAAE,EAAE,GAAG,EAAE;oBACzE,MAAM,CAAC,GAAG,MAAM,CAAC,kBAAkB,EAAE,CAAA;oBACrC,MAAM,CAAC,GAAG,EAAE,CAAA;oBACZ,OAAO,CAAC;wBACN,OAAO,EAAE,CAAC,CAAC,OAAO;wBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,SAAS,EAAE,CAAC,CAAC,UAAU;wBACvB,OAAO,EAAE,CAAC,CAAC,QAAQ;wBACnB,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,YAAY,EAAE,CAAC,CAAC,YAAY;wBAC5B,cAAc,EAAE,CAAC,CAAC,cAAc;wBAChC,IAAI,EAAE,CAAC,CAAC,IAAI;qBACb,CAAC,CAAA;gBACJ,CAAC,CAAC,CAAA;gBACF,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;gBACjF,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;YAC5B,CAAC,CAAC,CAAA;YACF,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC1H,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,qBAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACjK,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,MAAiB;IACtD,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,sDAAsD;QACnE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,KAAK,CAAC,EAAE;KAC5F,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,GAAG,GAAI,IAAI,CAAC,GAAc,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACnD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACvG,MAAM,OAAO,GAA2B,EAAE,CAAA;YAC1C,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA,CAAC,CAAC,CAAC,CAAA;YACjD,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,MAAM,eAAe,GAA8D;gBACjF,2BAA2B,EAAE,EAAE,WAAW,EAAE,gCAAgC,EAAE,QAAQ,EAAE,SAAS,EAAE;gBACnG,iBAAiB,EAAE,EAAE,WAAW,EAAE,yBAAyB,EAAE,QAAQ,EAAE,oBAAoB,EAAE;gBAC7F,wBAAwB,EAAE,EAAE,WAAW,EAAE,+BAA+B,EAAE,QAAQ,EAAE,SAAS,EAAE;gBAC/F,yBAAyB,EAAE,EAAE,WAAW,EAAE,yBAAyB,EAAE,QAAQ,EAAE,SAAS,EAAE;gBAC1F,kBAAkB,EAAE,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,EAAE;gBAC5E,iBAAiB,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,QAAQ,EAAE,SAAS,EAAE;gBAC1E,oBAAoB,EAAE,EAAE,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE;gBAChF,6BAA6B,EAAE,EAAE,WAAW,EAAE,aAAa,EAAE,QAAQ,EAAE,sBAAsB,EAAE;aAChG,CAAA;YACD,KAAK,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC7D,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;oBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,KAAK,MAAM,GAAG,CAAC,CAAA;YAC7E,CAAC;YACD,MAAM,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAA;YAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAA;YAC/C,IAAI,SAAS;gBAAE,KAAK,CAAC,IAAI,CAAC,0BAA0B,SAAS,EAAE,CAAC,CAAA;YAChE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC7J,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC9I,CAAC;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,qDAAqD;QAClE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;KAChG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAAG,IAAI,CAAC,KAAe,CAAA;QAClC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sCAAsC,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;YACvJ,MAAM,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAA;YAC1H,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAC/B,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;YAChC,MAAM,MAAM,GAAa,EAAE,CAAA;YAC3B,IAAI,MAAM,CAAC,GAAG,KAAK,MAAM;gBAAE,MAAM,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAA;YAC7E,IAAI,MAAM,CAAC,GAAG,KAAK,OAAO;gBAAE,MAAM,CAAC,IAAI,CAAC,wDAAwD,CAAC,CAAA;YACjG,IAAI,CAAC,OAAO,CAAC,GAAG;gBAAE,MAAM,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAA;YACtD,IAAI,CAAC,OAAO,CAAC,GAAG;gBAAE,MAAM,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAA;YACzD,IAAI,OAAO,CAAC,IAAI,KAAK,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,eAAe;gBAAE,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAA;YAClH,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACpH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,sBAAsB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACvK,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAiB;IACpD,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EAAE,uEAAuE;QACpF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;KACtG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAkB,CAAA;QACxC,MAAM,QAAQ,GAA+E;YAC3F,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACvF,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YAC7F,EAAE,OAAO,EAAE,6BAA6B,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;YAChI,EAAE,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;YACtF,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;YAC7F,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE;YACpG,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE;YACrE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE;YACvE,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE;YACzF,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE;SAC7F,CAAA;QACD,MAAM,QAAQ,GAAsF,EAAE,CAAA;QACtG,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;YAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;YACtJ,MAAM,UAAU,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YACrF,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,SAAS,IAAI,CAAC,GAAW;gBACvB,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;4BAAE,SAAQ;wBAC3H,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;wBACvC,IAAI,KAAK,CAAC,WAAW,EAAE;4BAAE,IAAI,CAAC,IAAI,CAAC,CAAA;6BAC9B,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC5F,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;YACnC,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,CAAA;YACd,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACxC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;oBAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBACjC,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;wBACzB,IAAI,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE,CAAC;4BAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;4BACvC,MAAM,OAAO,GAA2B,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAA;4BAChK,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;gCAAE,SAAQ;wBACzD,CAAC;wBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;4BACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gCAC7D,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;4BAClH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,qBAAqB,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,aAAa,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACzM,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC1K,CAAC;IACH,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,4CAA4C;QACzD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,UAAU,CAAC,EAAE;KACtG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAkB,CAAA;QACxC,MAAM,cAAc,GAAsC;YACxD,EAAE,KAAK,EAAE,sBAAsB,EAAE,IAAI,EAAE,gBAAgB,EAAE;YACzD,EAAE,KAAK,EAAE,yBAAyB,EAAE,IAAI,EAAE,gBAAgB,EAAE;YAC5D,EAAE,KAAK,EAAE,yBAAyB,EAAE,IAAI,EAAE,YAAY,EAAE;YACxD,EAAE,KAAK,EAAE,yBAAyB,EAAE,IAAI,EAAE,cAAc,EAAE;YAC1D,EAAE,KAAK,EAAE,+BAA+B,EAAE,IAAI,EAAE,aAAa,EAAE;YAC/D,EAAE,KAAK,EAAE,2CAA2C,EAAE,IAAI,EAAE,aAAa,EAAE;YAC3E,EAAE,KAAK,EAAE,0CAA0C,EAAE,IAAI,EAAE,oBAAoB,EAAE;YACjF,EAAE,KAAK,EAAE,oDAAoD,EAAE,IAAI,EAAE,SAAS,EAAE;YAChF,EAAE,KAAK,EAAE,+CAA+C,EAAE,IAAI,EAAE,QAAQ,EAAE;SAC3E,CAAA;QACD,MAAM,OAAO,GAAoE,EAAE,CAAA;QACnF,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAA;YAClC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAA;YACtC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;YACtJ,MAAM,KAAK,GAAa,EAAE,CAAA;YAC1B,SAAS,IAAI,CAAC,GAAW;gBACvB,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;wBAC5B,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;4BAAE,SAAQ;wBAC3H,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;wBACvC,IAAI,KAAK,CAAC,WAAW,EAAE;4BAAE,IAAI,CAAC,IAAI,CAAC,CAAA;6BAC9B,IAAI,KAAK,CAAC,MAAM,EAAE;4BAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBAC3C,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC;YACD,IAAI,CAAC,QAAQ,CAAC,CAAA;YACd,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;YACxC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;gBAChC,IAAI,CAAC;oBACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;oBAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;oBACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBACtC,KAAK,MAAM,CAAC,IAAI,cAAc,EAAE,CAAC;4BAC/B,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gCAC3B,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;4BAC3F,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,YAAY,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACrM,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC3K,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAiB;IAC9C,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,iCAAiC;QAC9C,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;KACpJ,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;QACzD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,4CAA4C,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QACvI,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,0DAA0D,KAAK,EAAE,CAAC,CAAA;QAC9F,MAAM,QAAQ,GAAI,GAAG,EAAE,eAA8D,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QACtG,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,GAA8B,CAAA;YACtD,MAAM,OAAO,GAAG,GAAG,CAAC,OAA8C,CAAA;YAClE,MAAM,QAAQ,GAAG,CAAE,OAAO,EAAE,CAAC,eAAe,CAAoC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ;gBAC5F,OAAO,EAAE,CAAC,eAAe,CAAoC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ;gBAC5E,OAAO,EAAE,CAAC,cAAc,CAAoC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAwC,CAAA;YACtH,MAAM,YAAY,GAAG,GAAG,CAAC,YAAkE,CAAA;YAC3F,MAAM,IAAI,GAAG,GAAG,CAAC,UAAgD,CAAA;YACjE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK;4BACL,SAAS,EAAG,GAAG,CAAC,SAAoB,IAAI,SAAS;4BACjD,YAAY,EAAG,GAAG,CAAC,YAAuB,IAAI,SAAS;4BACvD,gBAAgB,EAAG,GAAG,CAAC,gBAA2B,IAAI,SAAS;4BAC/D,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,0BAA0B;4BAC5F,IAAI,EAAE,QAAQ,EAAE,SAAS,IAAI,KAAK;4BAClC,QAAQ,EAAE,QAAQ,EAAE,YAAY,IAAI,KAAK;4BACzC,YAAY,EAAE,QAAQ,EAAE,YAAY,IAAI,KAAK;4BAC7C,UAAU,EAAG,GAAG,CAAC,UAA+D,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;4BAC7I,UAAU,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE;yBACtD,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAClC,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,+BAA+B,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IACjI,CAAC,CACF,CAAA;IAED,MAAM,CAAC,YAAY,CACjB;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,sDAAsD;QACnE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE;KAChG,EACD,KAAK,EAAE,IAAI,EAAE,EAAE;QACb,MAAM,KAAK,GAAI,IAAI,CAAC,KAAgB,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAA;QACzD,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACvC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAC/G,CAAC;QACD,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,0CAA0C,KAAK,EAAE,CAAC,CAAA;QAC9E,MAAM,QAAQ,GAAI,GAAG,EAAE,IAAkD,EAAE,MAAM,CAAC,OAAO,CAAC,CAAA;QAC1F,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClB,MAAM,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAA;YACzB,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACtD,KAAK;4BACL,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,IAAI,IAAI,GAAG,CAAC;4BACnC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,UAAU,IAAI,GAAG,CAAC;yBAChD,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;QAClC,CAAC;QACD,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IACjJ,CAAC,CACF,CAAA;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,gBAAgB,CAAC,MAAM,CAAC,CAAA;IACxB,yBAAyB,CAAC,MAAM,CAAC,CAAA;IACjC,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAC9B,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC5B,cAAc,CAAC,MAAM,CAAC,CAAA;AACxB,CAAC"}
@@ -1,3 +1,3 @@
1
- import type { SkillDefinition } from "./types";
1
+ import type { SkillDefinition } from "./types.js";
2
2
  export declare const BUILTIN_SKILLS: SkillDefinition[];
3
3
  //# sourceMappingURL=builtins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/skills/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAE9C,eAAO,MAAM,cAAc,EAAE,eAAe,EAsT3C,CAAA"}
1
+ {"version":3,"file":"builtins.d.ts","sourceRoot":"","sources":["../../src/skills/builtins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,cAAc,EAAE,eAAe,EAsT3C,CAAA"}
@@ -1,5 +1,5 @@
1
- import { SkillRegistry } from "./registry";
2
- export { SkillRegistry } from "./registry";
3
- export type { SkillDefinition, SkillOperation, SkillManifest, SkillCategory } from "./types";
1
+ import { SkillRegistry } from "./registry.js";
2
+ export { SkillRegistry } from "./registry.js";
3
+ export type { SkillDefinition, SkillOperation, SkillManifest, SkillCategory } from "./types.js";
4
4
  export declare function createSkillRegistry(): SkillRegistry;
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC1C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5F,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAC7C,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/F,wBAAgB,mBAAmB,IAAI,aAAa,CAEnD"}
@@ -1,5 +1,5 @@
1
- import { SkillRegistry } from "./registry";
2
- export { SkillRegistry } from "./registry";
1
+ import { SkillRegistry } from "./registry.js";
2
+ export { SkillRegistry } from "./registry.js";
3
3
  export function createSkillRegistry() {
4
4
  return new SkillRegistry();
5
5
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE1C,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAG1C,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,aAAa,EAAE,CAAA;AAC5B,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAA;AAG7C,MAAM,UAAU,mBAAmB;IACjC,OAAO,IAAI,aAAa,EAAE,CAAA;AAC5B,CAAC"}