@theihtisham/agent-shadow-brain 2.1.0 → 4.0.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 (116) hide show
  1. package/README.md +443 -602
  2. package/dist/brain/accessibility-checker.d.ts +10 -0
  3. package/dist/brain/accessibility-checker.d.ts.map +1 -0
  4. package/dist/brain/accessibility-checker.js +379 -0
  5. package/dist/brain/accessibility-checker.js.map +1 -0
  6. package/dist/brain/adversarial-defense.d.ts +57 -0
  7. package/dist/brain/adversarial-defense.d.ts.map +1 -0
  8. package/dist/brain/adversarial-defense.js +303 -0
  9. package/dist/brain/adversarial-defense.js.map +1 -0
  10. package/dist/brain/api-contract-analyzer.d.ts +19 -0
  11. package/dist/brain/api-contract-analyzer.d.ts.map +1 -0
  12. package/dist/brain/api-contract-analyzer.js +251 -0
  13. package/dist/brain/api-contract-analyzer.js.map +1 -0
  14. package/dist/brain/ast-analyzer.d.ts +23 -0
  15. package/dist/brain/ast-analyzer.d.ts.map +1 -0
  16. package/dist/brain/ast-analyzer.js +462 -0
  17. package/dist/brain/ast-analyzer.js.map +1 -0
  18. package/dist/brain/code-age-analyzer.d.ts +11 -0
  19. package/dist/brain/code-age-analyzer.d.ts.map +1 -0
  20. package/dist/brain/code-age-analyzer.js +152 -0
  21. package/dist/brain/code-age-analyzer.js.map +1 -0
  22. package/dist/brain/cognitive-load.d.ts +27 -0
  23. package/dist/brain/cognitive-load.d.ts.map +1 -0
  24. package/dist/brain/cognitive-load.js +304 -0
  25. package/dist/brain/cognitive-load.js.map +1 -0
  26. package/dist/brain/config-drift-detector.d.ts +13 -0
  27. package/dist/brain/config-drift-detector.d.ts.map +1 -0
  28. package/dist/brain/config-drift-detector.js +198 -0
  29. package/dist/brain/config-drift-detector.js.map +1 -0
  30. package/dist/brain/cross-agent-protocol.d.ts +48 -0
  31. package/dist/brain/cross-agent-protocol.d.ts.map +1 -0
  32. package/dist/brain/cross-agent-protocol.js +306 -0
  33. package/dist/brain/cross-agent-protocol.js.map +1 -0
  34. package/dist/brain/dead-code-eliminator.d.ts +16 -0
  35. package/dist/brain/dead-code-eliminator.d.ts.map +1 -0
  36. package/dist/brain/dead-code-eliminator.js +359 -0
  37. package/dist/brain/dead-code-eliminator.js.map +1 -0
  38. package/dist/brain/env-analyzer.d.ts +13 -0
  39. package/dist/brain/env-analyzer.d.ts.map +1 -0
  40. package/dist/brain/env-analyzer.js +277 -0
  41. package/dist/brain/env-analyzer.js.map +1 -0
  42. package/dist/brain/i18n-detector.d.ts +12 -0
  43. package/dist/brain/i18n-detector.d.ts.map +1 -0
  44. package/dist/brain/i18n-detector.js +242 -0
  45. package/dist/brain/i18n-detector.js.map +1 -0
  46. package/dist/brain/influence-map.d.ts +31 -0
  47. package/dist/brain/influence-map.d.ts.map +1 -0
  48. package/dist/brain/influence-map.js +375 -0
  49. package/dist/brain/influence-map.js.map +1 -0
  50. package/dist/brain/knowledge-graph.d.ts +56 -0
  51. package/dist/brain/knowledge-graph.d.ts.map +1 -0
  52. package/dist/brain/knowledge-graph.js +427 -0
  53. package/dist/brain/knowledge-graph.js.map +1 -0
  54. package/dist/brain/learning-engine.d.ts +11 -0
  55. package/dist/brain/learning-engine.d.ts.map +1 -1
  56. package/dist/brain/learning-engine.js +44 -1
  57. package/dist/brain/learning-engine.js.map +1 -1
  58. package/dist/brain/license-compliance.d.ts +13 -0
  59. package/dist/brain/license-compliance.d.ts.map +1 -0
  60. package/dist/brain/license-compliance.js +213 -0
  61. package/dist/brain/license-compliance.js.map +1 -0
  62. package/dist/brain/llm-client.d.ts.map +1 -1
  63. package/dist/brain/llm-client.js +3 -0
  64. package/dist/brain/llm-client.js.map +1 -1
  65. package/dist/brain/mutation-advisor.d.ts +11 -0
  66. package/dist/brain/mutation-advisor.d.ts.map +1 -0
  67. package/dist/brain/mutation-advisor.js +154 -0
  68. package/dist/brain/mutation-advisor.js.map +1 -0
  69. package/dist/brain/neural-mesh.d.ts +9 -1
  70. package/dist/brain/neural-mesh.d.ts.map +1 -1
  71. package/dist/brain/neural-mesh.js +75 -16
  72. package/dist/brain/neural-mesh.js.map +1 -1
  73. package/dist/brain/orchestrator.d.ts +71 -2
  74. package/dist/brain/orchestrator.d.ts.map +1 -1
  75. package/dist/brain/orchestrator.js +383 -3
  76. package/dist/brain/orchestrator.js.map +1 -1
  77. package/dist/brain/pattern-memory.d.ts +8 -3
  78. package/dist/brain/pattern-memory.d.ts.map +1 -1
  79. package/dist/brain/pattern-memory.js +71 -3
  80. package/dist/brain/pattern-memory.js.map +1 -1
  81. package/dist/brain/predictive-engine.d.ts +45 -0
  82. package/dist/brain/predictive-engine.d.ts.map +1 -0
  83. package/dist/brain/predictive-engine.js +238 -0
  84. package/dist/brain/predictive-engine.js.map +1 -0
  85. package/dist/brain/security-audit.d.ts +20 -0
  86. package/dist/brain/security-audit.d.ts.map +1 -0
  87. package/dist/brain/security-audit.js +340 -0
  88. package/dist/brain/security-audit.js.map +1 -0
  89. package/dist/brain/self-evolution.d.ts +53 -0
  90. package/dist/brain/self-evolution.d.ts.map +1 -0
  91. package/dist/brain/self-evolution.js +278 -0
  92. package/dist/brain/self-evolution.js.map +1 -0
  93. package/dist/brain/sssp-router.d.ts +58 -0
  94. package/dist/brain/sssp-router.d.ts.map +1 -0
  95. package/dist/brain/sssp-router.js +295 -0
  96. package/dist/brain/sssp-router.js.map +1 -0
  97. package/dist/brain/swarm-intelligence.d.ts +48 -0
  98. package/dist/brain/swarm-intelligence.d.ts.map +1 -0
  99. package/dist/brain/swarm-intelligence.js +215 -0
  100. package/dist/brain/swarm-intelligence.js.map +1 -0
  101. package/dist/brain/turbo-memory.d.ts +56 -0
  102. package/dist/brain/turbo-memory.d.ts.map +1 -0
  103. package/dist/brain/turbo-memory.js +388 -0
  104. package/dist/brain/turbo-memory.js.map +1 -0
  105. package/dist/cli.js +744 -3
  106. package/dist/cli.js.map +1 -1
  107. package/dist/index.d.ts +19 -1
  108. package/dist/index.d.ts.map +1 -1
  109. package/dist/index.js +21 -1
  110. package/dist/index.js.map +1 -1
  111. package/dist/types.d.ts +422 -2
  112. package/dist/types.d.ts.map +1 -1
  113. package/dist/ui/dashboard.d.ts.map +1 -1
  114. package/dist/ui/dashboard.js +20 -3
  115. package/dist/ui/dashboard.js.map +1 -1
  116. package/package.json +16 -7
@@ -0,0 +1,359 @@
1
+ // src/brain/dead-code-eliminator.ts — Dead code path detection
2
+ // v3.0.0 — Identifies unreachable code, unused exports, unused variables, dead branches
3
+ import * as fs from 'fs';
4
+ import * as path from 'path';
5
+ const IGNORE_DIRS = new Set([
6
+ 'node_modules', '.git', 'dist', 'build', 'out', 'coverage', '.next', '.nuxt', '.cache',
7
+ ]);
8
+ const CODE_EXTENSIONS = new Set(['.ts', '.tsx', '.js', '.jsx', '.py', '.rs', '.go', '.java']);
9
+ export class DeadCodeEliminator {
10
+ constructor(projectDir) {
11
+ this.exportedSymbols = new Map();
12
+ this.importedSymbols = new Set();
13
+ this.projectDir = projectDir;
14
+ }
15
+ async analyzeProject(maxFiles = 200) {
16
+ const files = this.collectFiles(this.projectDir, maxFiles);
17
+ const insights = [];
18
+ // Phase 1: Collect all exports and imports
19
+ this.collectExportsImports(files);
20
+ // Phase 2: Per-file analysis
21
+ for (const filePath of files) {
22
+ const relPath = path.relative(this.projectDir, filePath);
23
+ const ext = path.extname(filePath);
24
+ // Dead code after return/throw
25
+ insights.push(...this.detectUnreachableCode(filePath, relPath));
26
+ // Unused exports
27
+ insights.push(...this.detectUnusedExports(filePath, relPath));
28
+ // Unused variables
29
+ if (['.ts', '.tsx', '.js', '.jsx'].includes(ext)) {
30
+ insights.push(...this.detectUnusedVariables(filePath, relPath));
31
+ insights.push(...this.detectUnusedImports(filePath, relPath));
32
+ }
33
+ // Dead branches (always true/false conditions)
34
+ insights.push(...this.detectDeadBranches(filePath, relPath));
35
+ }
36
+ return insights;
37
+ }
38
+ collectExportsImports(files) {
39
+ this.exportedSymbols.clear();
40
+ this.importedSymbols.clear();
41
+ for (const filePath of files) {
42
+ let content;
43
+ try {
44
+ content = fs.readFileSync(filePath, 'utf-8');
45
+ }
46
+ catch {
47
+ continue;
48
+ }
49
+ const relPath = path.relative(this.projectDir, filePath);
50
+ const lines = content.split('\n');
51
+ // Collect exports
52
+ const exportPatterns = [
53
+ /export\s+(?:default\s+)?(?:function|class|const|let|var|interface|type|enum)\s+(\w+)/g,
54
+ /export\s+\{\s*([^}]+)\s*\}/g,
55
+ ];
56
+ for (const pattern of exportPatterns) {
57
+ let match;
58
+ pattern.lastIndex = 0;
59
+ while ((match = pattern.exec(content)) !== null) {
60
+ const line = content.substring(0, match.index).split('\n').length;
61
+ if (pattern.source.includes('\\{')) {
62
+ // Named exports: export { foo, bar }
63
+ const names = match[1].split(',').map(n => n.trim().split(/\s+as\s+/).pop()?.trim()).filter(Boolean);
64
+ for (const name of names) {
65
+ if (!this.exportedSymbols.has(name))
66
+ this.exportedSymbols.set(name, []);
67
+ this.exportedSymbols.get(name).push({ file: relPath, line, name });
68
+ }
69
+ }
70
+ else {
71
+ const name = match[1];
72
+ if (!this.exportedSymbols.has(name))
73
+ this.exportedSymbols.set(name, []);
74
+ this.exportedSymbols.get(name).push({ file: relPath, line, name });
75
+ }
76
+ }
77
+ }
78
+ // Collect imports
79
+ const importPatterns = [
80
+ /import\s+(?:\{([^}]+)\}|(\w+))\s+from/g,
81
+ /import\s*\(\s*['"][^'"]+['"]\s*\)/g, // dynamic imports
82
+ ];
83
+ for (let pi = 0; pi < importPatterns.length; pi++) {
84
+ const pattern = importPatterns[pi];
85
+ pattern.lastIndex = 0;
86
+ let match;
87
+ while ((match = pattern.exec(content)) !== null) {
88
+ if (pi === 0) {
89
+ const namedImports = match[1]; // { foo, bar }
90
+ const defaultImport = match[2]; // foo
91
+ if (namedImports) {
92
+ const names = namedImports.split(',').map(n => {
93
+ const trimmed = n.trim();
94
+ const asParts = trimmed.split(/\s+as\s+/);
95
+ return asParts[0].trim();
96
+ });
97
+ for (const name of names) {
98
+ if (name)
99
+ this.importedSymbols.add(name);
100
+ }
101
+ }
102
+ if (defaultImport)
103
+ this.importedSymbols.add(defaultImport);
104
+ }
105
+ }
106
+ }
107
+ }
108
+ }
109
+ detectUnreachableCode(filePath, relPath) {
110
+ let content;
111
+ try {
112
+ content = fs.readFileSync(filePath, 'utf-8');
113
+ }
114
+ catch {
115
+ return [];
116
+ }
117
+ const insights = [];
118
+ const lines = content.split('\n');
119
+ for (let i = 0; i < lines.length - 1; i++) {
120
+ const line = lines[i].trim();
121
+ // After return, throw, continue, break in same block
122
+ if (/^\s*(return\s|return;|throw\s|continue;|break;|break\s)/.test(line) && !line.startsWith('//')) {
123
+ // Check if next non-empty line is in the same block
124
+ for (let j = i + 1; j < Math.min(i + 5, lines.length); j++) {
125
+ const nextLine = lines[j].trim();
126
+ if (nextLine === '' || nextLine.startsWith('//'))
127
+ continue;
128
+ if (nextLine === '}' || nextLine.startsWith('}'))
129
+ break;
130
+ // Check if this is actually unreachable (same block level)
131
+ if (nextLine.length > 0 && !nextLine.startsWith('case ') && !nextLine.startsWith('default:')) {
132
+ insights.push({
133
+ type: 'dead-code',
134
+ priority: 'high',
135
+ title: `[dead-code] Unreachable code after ${line.split(/\s/)[0]} in ${relPath}`,
136
+ content: `Unreachable code detected in ${relPath}:${j + 1}\n` +
137
+ ` After: ${line}\n` +
138
+ ` Unreachable: ${nextLine}\n` +
139
+ ` Code after return/throw/break/continue will never execute.\n` +
140
+ ` Remove or refactor the dead code.`,
141
+ files: [relPath],
142
+ timestamp: new Date(),
143
+ confidence: 0.92,
144
+ metadata: { line: j + 1, deadCodeType: 'unreachable' },
145
+ });
146
+ break;
147
+ }
148
+ }
149
+ }
150
+ }
151
+ return insights;
152
+ }
153
+ detectUnusedExports(filePath, relPath) {
154
+ const insights = [];
155
+ const ext = path.extname(filePath);
156
+ if (!['.ts', '.tsx', '.js', '.jsx'].includes(ext))
157
+ return insights;
158
+ // Check for index.ts barrel exports — skip these
159
+ if (path.basename(filePath) === 'index.ts' || path.basename(filePath) === 'index.tsx')
160
+ return insights;
161
+ let content;
162
+ try {
163
+ content = fs.readFileSync(filePath, 'utf-8');
164
+ }
165
+ catch {
166
+ return [];
167
+ }
168
+ const exportPattern = /export\s+(?:default\s+)?(?:function|class|const|let|var|interface|type|enum)\s+(\w+)/g;
169
+ let match;
170
+ while ((match = exportPattern.exec(content)) !== null) {
171
+ const name = match[1];
172
+ const line = content.substring(0, match.index).split('\n').length;
173
+ // Check if this export is imported anywhere
174
+ if (!this.importedSymbols.has(name)) {
175
+ // Exclude common patterns that might be used externally
176
+ const commonExports = ['config', 'default', 'App', 'app', 'main', 'handler', 'middleware', 'plugin'];
177
+ if (commonExports.includes(name))
178
+ continue;
179
+ // Skip if it's a type that might be used in declarations
180
+ const isType = /export\s+(?:interface|type)\s+/.test(match[0]);
181
+ if (isType)
182
+ continue; // types might be used implicitly
183
+ insights.push({
184
+ type: 'dead-code',
185
+ priority: 'medium',
186
+ title: `[dead-code] Unused export "${name}" in ${relPath}`,
187
+ content: `Exported symbol \`${name}\` in ${relPath}:${line} is not imported by any other file.\n` +
188
+ ` This could be dead code or an external API. Verify before removing.\n` +
189
+ ` If unused internally, consider removing the export or marking as @internal.`,
190
+ files: [relPath],
191
+ timestamp: new Date(),
192
+ confidence: 0.7, // lower confidence — might be external API
193
+ metadata: { symbol: name, line, deadCodeType: 'unused-export' },
194
+ });
195
+ }
196
+ }
197
+ return insights;
198
+ }
199
+ detectUnusedVariables(filePath, relPath) {
200
+ let content;
201
+ try {
202
+ content = fs.readFileSync(filePath, 'utf-8');
203
+ }
204
+ catch {
205
+ return [];
206
+ }
207
+ const insights = [];
208
+ const lines = content.split('\n');
209
+ // Find variable declarations
210
+ const varPattern = /(?:const|let|var)\s+(\w+)\s*=/g;
211
+ let match;
212
+ while ((match = varPattern.exec(content)) !== null) {
213
+ const name = match[1];
214
+ const line = content.substring(0, match.index).split('\n').length;
215
+ // Skip common patterns
216
+ const skipNames = new Set(['_', 'err', 'error', 'e', 'req', 'res', 'next', 'ctx', 'config', 'options']);
217
+ if (skipNames.has(name))
218
+ continue;
219
+ if (name.startsWith('_'))
220
+ continue; // convention for intentionally unused
221
+ // Count usages (excluding the declaration itself)
222
+ const usagePattern = new RegExp(`\\b${name}\\b`, 'g');
223
+ const usages = content.match(usagePattern);
224
+ if (usages && usages.length <= 1) {
225
+ insights.push({
226
+ type: 'dead-code',
227
+ priority: 'low',
228
+ title: `[dead-code] Unused variable "${name}" in ${relPath}:${line}`,
229
+ content: `Variable \`${name}\` declared in ${relPath}:${line} appears to be unused.\n` +
230
+ ` Consider removing it or prefixing with \`_\` if intentionally unused.`,
231
+ files: [relPath],
232
+ timestamp: new Date(),
233
+ confidence: 0.75,
234
+ metadata: { variable: name, line, deadCodeType: 'unused-variable' },
235
+ });
236
+ }
237
+ }
238
+ return insights;
239
+ }
240
+ detectUnusedImports(filePath, relPath) {
241
+ let content;
242
+ try {
243
+ content = fs.readFileSync(filePath, 'utf-8');
244
+ }
245
+ catch {
246
+ return [];
247
+ }
248
+ const insights = [];
249
+ // Match import statements
250
+ const importRegex = /import\s+\{([^}]+)\}\s+from\s+['"][^'"]+['"]/g;
251
+ let match;
252
+ while ((match = importRegex.exec(content)) !== null) {
253
+ const imports = match[1].split(',').map(s => {
254
+ const parts = s.trim().split(/\s+as\s+/);
255
+ return parts[parts.length - 1].trim();
256
+ });
257
+ for (const name of imports) {
258
+ if (!name)
259
+ continue;
260
+ // Skip type-only imports
261
+ if (content.includes(`import type { ${name}`))
262
+ continue;
263
+ // Count usage in the rest of the file
264
+ const escaped = name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
265
+ const usageRegex = new RegExp(`\\b${escaped}\\b`, 'g');
266
+ const usages = content.match(usageRegex);
267
+ if (usages && usages.length <= 1) {
268
+ const line = content.substring(0, match.index).split('\n').length;
269
+ insights.push({
270
+ type: 'dead-code',
271
+ priority: 'low',
272
+ title: `[dead-code] Unused import "${name}" in ${relPath}:${line}`,
273
+ content: `Import \`${name}\` in ${relPath}:${line} is not used in the file.\n` +
274
+ ` Remove unused imports to keep the codebase clean.`,
275
+ files: [relPath],
276
+ timestamp: new Date(),
277
+ confidence: 0.9,
278
+ metadata: { import: name, line, deadCodeType: 'unused-import' },
279
+ });
280
+ }
281
+ }
282
+ }
283
+ return insights;
284
+ }
285
+ detectDeadBranches(filePath, relPath) {
286
+ let content;
287
+ try {
288
+ content = fs.readFileSync(filePath, 'utf-8');
289
+ }
290
+ catch {
291
+ return [];
292
+ }
293
+ const insights = [];
294
+ const lines = content.split('\n');
295
+ // Detect always-true/false conditions
296
+ const deadConditions = [
297
+ { regex: /\bif\s*\(\s*(true|!\s*false)\s*\)/g, branch: 'always-true' },
298
+ { regex: /\bif\s*\(\s*(false|!\s*true)\s*\)/g, branch: 'always-false' },
299
+ { regex: /\bif\s*\(\s*0\s*\)/g, branch: 'always-false' },
300
+ { regex: /\bif\s*\(\s*1\s*\)/g, branch: 'always-true' },
301
+ { regex: /\bif\s*\(\s*["'][^"']+["']\s*\)/g, branch: 'always-true' },
302
+ { regex: /process\.env\.NODE_ENV\s*===\s*["']test["']/g, branch: 'environmental' },
303
+ ];
304
+ for (let i = 0; i < lines.length; i++) {
305
+ const line = lines[i];
306
+ for (const { regex, branch } of deadConditions) {
307
+ regex.lastIndex = 0;
308
+ if (regex.test(line) && !line.trim().startsWith('//')) {
309
+ insights.push({
310
+ type: 'dead-code',
311
+ priority: branch === 'environmental' ? 'low' : 'high',
312
+ title: `[dead-code] ${branch === 'always-true' ? 'Always-true' : 'Always-false'} branch in ${relPath}:${i + 1}`,
313
+ content: `Condition in ${relPath}:${i + 1} is always ${branch === 'always-true' ? 'true' : 'false'}.\n` +
314
+ ` Line: ${line.trim()}\n` +
315
+ ` ${branch === 'always-true' ? 'The else branch will never execute.' : 'The if branch will never execute.'}\n` +
316
+ ` Consider removing the dead branch or fixing the condition.`,
317
+ files: [relPath],
318
+ timestamp: new Date(),
319
+ confidence: 0.95,
320
+ metadata: { line: i + 1, branchType: branch, deadCodeType: 'dead-branch' },
321
+ });
322
+ }
323
+ }
324
+ }
325
+ return insights;
326
+ }
327
+ collectFiles(dir, maxFiles) {
328
+ const results = [];
329
+ const walk = (currentDir, depth) => {
330
+ if (results.length >= maxFiles || depth > 10)
331
+ return;
332
+ let entries;
333
+ try {
334
+ entries = fs.readdirSync(currentDir, { withFileTypes: true });
335
+ }
336
+ catch {
337
+ return;
338
+ }
339
+ for (const entry of entries) {
340
+ if (results.length >= maxFiles)
341
+ return;
342
+ if (entry.name.startsWith('.'))
343
+ continue;
344
+ const fullPath = path.join(currentDir, entry.name);
345
+ if (entry.isDirectory()) {
346
+ if (IGNORE_DIRS.has(entry.name))
347
+ continue;
348
+ walk(fullPath, depth + 1);
349
+ }
350
+ else if (entry.isFile() && CODE_EXTENSIONS.has(path.extname(entry.name))) {
351
+ results.push(fullPath);
352
+ }
353
+ }
354
+ };
355
+ walk(dir, 0);
356
+ return results;
357
+ }
358
+ }
359
+ //# sourceMappingURL=dead-code-eliminator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dead-code-eliminator.js","sourceRoot":"","sources":["../../src/brain/dead-code-eliminator.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,wFAAwF;AAGxF,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ;CACvF,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAE9F,MAAM,OAAO,kBAAkB;IAK7B,YAAY,UAAkB;QAHtB,oBAAe,GAAgE,IAAI,GAAG,EAAE,CAAC;QACzF,oBAAe,GAAgB,IAAI,GAAG,EAAE,CAAC;QAG/C,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,WAAmB,GAAG;QACzC,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAmB,EAAE,CAAC;QAEpC,2CAA2C;QAC3C,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QAElC,6BAA6B;QAC7B,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YAEnC,+BAA+B;YAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAEhE,iBAAiB;YACjB,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAE9D,mBAAmB;YACnB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjD,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;gBAChE,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;YAChE,CAAC;YAED,+CAA+C;YAC/C,QAAQ,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,kBAAkB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,qBAAqB,CAAC,KAAe;QAC3C,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAC7B,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,IAAI,OAAe,CAAC;YACpB,IAAI,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,SAAS;YAAC,CAAC;YACzE,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAElC,kBAAkB;YAClB,MAAM,cAAc,GAAG;gBACrB,uFAAuF;gBACvF,6BAA6B;aAC9B,CAAC;YAEF,KAAK,MAAM,OAAO,IAAI,cAAc,EAAE,CAAC;gBACrC,IAAI,KAA6B,CAAC;gBAClC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;gBACtB,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAChD,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;oBAClE,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;wBACnC,qCAAqC;wBACrC,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAa,CAAC;wBACjH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;4BACzB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;gCAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;4BACxE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;wBACtE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;wBACtB,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC;4BAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;wBACxE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;oBACtE,CAAC;gBACH,CAAC;YACH,CAAC;YAED,kBAAkB;YAClB,MAAM,cAAc,GAAG;gBACrB,wCAAwC;gBACxC,oCAAoC,EAAE,kBAAkB;aACzD,CAAC;YAEF,KAAK,IAAI,EAAE,GAAG,CAAC,EAAE,EAAE,GAAG,cAAc,CAAC,MAAM,EAAE,EAAE,EAAE,EAAE,CAAC;gBAClD,MAAM,OAAO,GAAG,cAAc,CAAC,EAAE,CAAC,CAAC;gBACnC,OAAO,CAAC,SAAS,GAAG,CAAC,CAAC;gBACtB,IAAI,KAA6B,CAAC;gBAClC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;oBAChD,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;wBACb,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,eAAe;wBAC9C,MAAM,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM;wBACtC,IAAI,YAAY,EAAE,CAAC;4BACjB,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gCAC5C,MAAM,OAAO,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;gCACzB,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gCAC1C,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;4BAC3B,CAAC,CAAC,CAAC;4BACH,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gCACzB,IAAI,IAAI;oCAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;4BAC3C,CAAC;wBACH,CAAC;wBACD,IAAI,aAAa;4BAAE,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC7D,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,QAAgB,EAAE,OAAe;QAC7D,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QAE1E,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAE7B,qDAAqD;YACrD,IAAI,yDAAyD,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnG,oDAAoD;gBACpD,KAAK,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;oBAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;oBACjC,IAAI,QAAQ,KAAK,EAAE,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC;wBAAE,SAAS;oBAC3D,IAAI,QAAQ,KAAK,GAAG,IAAI,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC;wBAAE,MAAM;oBAExD,2DAA2D;oBAC3D,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;wBAC7F,QAAQ,CAAC,IAAI,CAAC;4BACZ,IAAI,EAAE,WAAW;4BACjB,QAAQ,EAAE,MAAM;4BAChB,KAAK,EAAE,sCAAsC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE;4BAChF,OAAO,EACL,gCAAgC,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI;gCACpD,YAAY,IAAI,IAAI;gCACpB,kBAAkB,QAAQ,IAAI;gCAC9B,gEAAgE;gCAChE,qCAAqC;4BACvC,KAAK,EAAE,CAAC,OAAO,CAAC;4BAChB,SAAS,EAAE,IAAI,IAAI,EAAE;4BACrB,UAAU,EAAE,IAAI;4BAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,YAAY,EAAE,aAAa,EAAE;yBACvD,CAAC,CAAC;wBACH,MAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,mBAAmB,CAAC,QAAgB,EAAE,OAAe;QAC3D,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACnC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAC;QAEnE,iDAAiD;QACjD,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,WAAW;YAAE,OAAO,QAAQ,CAAC;QAEvG,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QAE1E,MAAM,aAAa,GAAG,uFAAuF,CAAC;QAC9G,IAAI,KAA6B,CAAC;QAClC,OAAO,CAAC,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAElE,4CAA4C;YAC5C,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACpC,wDAAwD;gBACxD,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;gBACrG,IAAI,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;oBAAE,SAAS;gBAE3C,yDAAyD;gBACzD,MAAM,MAAM,GAAG,gCAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/D,IAAI,MAAM;oBAAE,SAAS,CAAC,iCAAiC;gBAEvD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,8BAA8B,IAAI,QAAQ,OAAO,EAAE;oBAC1D,OAAO,EACL,qBAAqB,IAAI,SAAS,OAAO,IAAI,IAAI,uCAAuC;wBACxF,yEAAyE;wBACzE,+EAA+E;oBACjF,KAAK,EAAE,CAAC,OAAO,CAAC;oBAChB,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,UAAU,EAAE,GAAG,EAAE,2CAA2C;oBAC5D,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE;iBAChE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,qBAAqB,CAAC,QAAgB,EAAE,OAAe;QAC7D,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QAE1E,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,6BAA6B;QAC7B,MAAM,UAAU,GAAG,gCAAgC,CAAC;QACpD,IAAI,KAA6B,CAAC;QAElC,OAAO,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACnD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;YAElE,uBAAuB;YACvB,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC,CAAC;YACxG,IAAI,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YAClC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS,CAAC,sCAAsC;YAE1E,kDAAkD;YAClD,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,MAAM,IAAI,KAAK,EAAE,GAAG,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,KAAK;oBACf,KAAK,EAAE,gCAAgC,IAAI,QAAQ,OAAO,IAAI,IAAI,EAAE;oBACpE,OAAO,EACL,cAAc,IAAI,kBAAkB,OAAO,IAAI,IAAI,0BAA0B;wBAC7E,yEAAyE;oBAC3E,KAAK,EAAE,CAAC,OAAO,CAAC;oBAChB,SAAS,EAAE,IAAI,IAAI,EAAE;oBACrB,UAAU,EAAE,IAAI;oBAChB,QAAQ,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,iBAAiB,EAAE;iBACpE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,mBAAmB,CAAC,QAAgB,EAAE,OAAe;QAC3D,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QAE1E,MAAM,QAAQ,GAAmB,EAAE,CAAC;QAEpC,0BAA0B;QAC1B,MAAM,WAAW,GAAG,+CAA+C,CAAC;QACpE,IAAI,KAA6B,CAAC;QAElC,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBAC1C,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzC,OAAO,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACxC,CAAC,CAAC,CAAC;YAEH,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,IAAI,CAAC,IAAI;oBAAE,SAAS;gBACpB,yBAAyB;gBACzB,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,IAAI,EAAE,CAAC;oBAAE,SAAS;gBAExD,sCAAsC;gBACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;gBAC5D,MAAM,UAAU,GAAG,IAAI,MAAM,CAAC,MAAM,OAAO,KAAK,EAAE,GAAG,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;gBACzC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;oBAClE,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,WAAW;wBACjB,QAAQ,EAAE,KAAK;wBACf,KAAK,EAAE,8BAA8B,IAAI,QAAQ,OAAO,IAAI,IAAI,EAAE;wBAClE,OAAO,EACL,YAAY,IAAI,SAAS,OAAO,IAAI,IAAI,6BAA6B;4BACrE,qDAAqD;wBACvD,KAAK,EAAE,CAAC,OAAO,CAAC;wBAChB,SAAS,EAAE,IAAI,IAAI,EAAE;wBACrB,UAAU,EAAE,GAAG;wBACf,QAAQ,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,eAAe,EAAE;qBAChE,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,kBAAkB,CAAC,QAAgB,EAAE,OAAe;QAC1D,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC;QAAC,CAAC;QAE1E,MAAM,QAAQ,GAAmB,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAElC,sCAAsC;QACtC,MAAM,cAAc,GAAG;YACrB,EAAE,KAAK,EAAE,oCAAoC,EAAE,MAAM,EAAE,aAAa,EAAE;YACtE,EAAE,KAAK,EAAE,oCAAoC,EAAE,MAAM,EAAE,cAAc,EAAE;YACvE,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,cAAc,EAAE;YACxD,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,EAAE,aAAa,EAAE;YACvD,EAAE,KAAK,EAAE,kCAAkC,EAAE,MAAM,EAAE,aAAa,EAAE;YACpE,EAAE,KAAK,EAAE,8CAA8C,EAAE,MAAM,EAAE,eAAe,EAAE;SACnF,CAAC;QAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACtB,KAAK,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;gBAC/C,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;gBACpB,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtD,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,WAAW;wBACjB,QAAQ,EAAE,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;wBACrD,KAAK,EAAE,eAAe,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,cAAc,OAAO,IAAI,CAAC,GAAG,CAAC,EAAE;wBAC/G,OAAO,EACL,gBAAgB,OAAO,IAAI,CAAC,GAAG,CAAC,cAAc,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK;4BAC9F,WAAW,IAAI,CAAC,IAAI,EAAE,IAAI;4BAC1B,KAAK,MAAM,KAAK,aAAa,CAAC,CAAC,CAAC,qCAAqC,CAAC,CAAC,CAAC,mCAAmC,IAAI;4BAC/G,8DAA8D;wBAChE,KAAK,EAAE,CAAC,OAAO,CAAC;wBAChB,SAAS,EAAE,IAAI,IAAI,EAAE;wBACrB,UAAU,EAAE,IAAI;wBAChB,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,aAAa,EAAE;qBAC3E,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,YAAY,CAAC,GAAW,EAAE,QAAgB;QAChD,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,MAAM,IAAI,GAAG,CAAC,UAAkB,EAAE,KAAa,EAAQ,EAAE;YACvD,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ,IAAI,KAAK,GAAG,EAAE;gBAAE,OAAO;YACrD,IAAI,OAAoB,CAAC;YACzB,IAAI,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,UAAU,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO;YAAC,CAAC;YACxF,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,OAAO,CAAC,MAAM,IAAI,QAAQ;oBAAE,OAAO;gBACvC,IAAI,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;oBAAE,SAAS;gBACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACnD,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,IAAI,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;wBAAE,SAAS;oBAC1C,IAAI,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;gBAC5B,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;oBAC3E,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QACF,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACb,OAAO,OAAO,CAAC;IACjB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import { BrainInsight } from '../types.js';
2
+ export declare class EnvAnalyzer {
3
+ private projectDir;
4
+ constructor(projectDir: string);
5
+ analyzeProject(maxFiles?: number): Promise<BrainInsight[]>;
6
+ private analyzeEnvFiles;
7
+ private analyzeCodeFile;
8
+ private crossReferenceEnv;
9
+ private looksLikeSecret;
10
+ private issueToInsight;
11
+ private collectFiles;
12
+ }
13
+ //# sourceMappingURL=env-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env-analyzer.d.ts","sourceRoot":"","sources":["../../src/brain/env-analyzer.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAY,MAAM,aAAa,CAAC;AAQrD,qBAAa,WAAW;IACtB,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,EAAE,MAAM;IAIxB,cAAc,CAAC,QAAQ,GAAE,MAAY,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAwBrE,OAAO,CAAC,eAAe;IAiFvB,OAAO,CAAC,eAAe;IAiEvB,OAAO,CAAC,iBAAiB;IAkDzB,OAAO,CAAC,eAAe;IAWvB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,YAAY;CAqBrB"}