statecli-mcp-server 0.1.2 → 0.3.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.
- package/README.md +334 -153
- package/dist/cross-file-impact.d.ts +85 -0
- package/dist/cross-file-impact.d.ts.map +1 -0
- package/dist/cross-file-impact.js +338 -0
- package/dist/cross-file-impact.js.map +1 -0
- package/dist/dependency-tracker.d.ts +78 -0
- package/dist/dependency-tracker.d.ts.map +1 -0
- package/dist/dependency-tracker.js +334 -0
- package/dist/dependency-tracker.js.map +1 -0
- package/dist/enhanced-mcp-server.d.ts +50 -0
- package/dist/enhanced-mcp-server.d.ts.map +1 -0
- package/dist/enhanced-mcp-server.js +664 -0
- package/dist/enhanced-mcp-server.js.map +1 -0
- package/dist/error-recovery.d.ts +66 -0
- package/dist/error-recovery.d.ts.map +1 -0
- package/dist/error-recovery.js +210 -0
- package/dist/error-recovery.js.map +1 -0
- package/dist/file-tracker.d.ts +81 -0
- package/dist/file-tracker.d.ts.map +1 -0
- package/dist/file-tracker.js +252 -0
- package/dist/file-tracker.js.map +1 -0
- package/dist/git-integration.d.ts +95 -0
- package/dist/git-integration.d.ts.map +1 -0
- package/dist/git-integration.js +219 -0
- package/dist/git-integration.js.map +1 -0
- package/dist/index-enhanced.d.ts +12 -0
- package/dist/index-enhanced.d.ts.map +1 -0
- package/dist/index-enhanced.js +27 -0
- package/dist/index-enhanced.js.map +1 -0
- package/dist/rollback-preview.d.ts +77 -0
- package/dist/rollback-preview.d.ts.map +1 -0
- package/dist/rollback-preview.js +244 -0
- package/dist/rollback-preview.js.map +1 -0
- package/dist/session-memory.d.ts +85 -0
- package/dist/session-memory.d.ts.map +1 -0
- package/dist/session-memory.js +325 -0
- package/dist/session-memory.js.map +1 -0
- package/dist/test-awareness.d.ts +85 -0
- package/dist/test-awareness.d.ts.map +1 -0
- package/dist/test-awareness.js +329 -0
- package/dist/test-awareness.js.map +1 -0
- package/dist/types.d.ts +11 -8
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
|
@@ -0,0 +1,334 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Dependency Tracker - Understand code dependencies
|
|
4
|
+
*
|
|
5
|
+
* Analyzes imports/exports to understand what code depends on what.
|
|
6
|
+
*/
|
|
7
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
8
|
+
if (k2 === undefined) k2 = k;
|
|
9
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
10
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
11
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
12
|
+
}
|
|
13
|
+
Object.defineProperty(o, k2, desc);
|
|
14
|
+
}) : (function(o, m, k, k2) {
|
|
15
|
+
if (k2 === undefined) k2 = k;
|
|
16
|
+
o[k2] = m[k];
|
|
17
|
+
}));
|
|
18
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
19
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
20
|
+
}) : function(o, v) {
|
|
21
|
+
o["default"] = v;
|
|
22
|
+
});
|
|
23
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
24
|
+
var ownKeys = function(o) {
|
|
25
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
26
|
+
var ar = [];
|
|
27
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
28
|
+
return ar;
|
|
29
|
+
};
|
|
30
|
+
return ownKeys(o);
|
|
31
|
+
};
|
|
32
|
+
return function (mod) {
|
|
33
|
+
if (mod && mod.__esModule) return mod;
|
|
34
|
+
var result = {};
|
|
35
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
36
|
+
__setModuleDefault(result, mod);
|
|
37
|
+
return result;
|
|
38
|
+
};
|
|
39
|
+
})();
|
|
40
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
41
|
+
exports.DependencyTracker = void 0;
|
|
42
|
+
const fs = __importStar(require("fs"));
|
|
43
|
+
const path = __importStar(require("path"));
|
|
44
|
+
class DependencyTracker {
|
|
45
|
+
statecli;
|
|
46
|
+
projectPath;
|
|
47
|
+
graph;
|
|
48
|
+
fileExtensions;
|
|
49
|
+
constructor(statecli, projectPath = '.', options) {
|
|
50
|
+
this.statecli = statecli;
|
|
51
|
+
this.projectPath = path.resolve(projectPath);
|
|
52
|
+
this.fileExtensions = options?.extensions || ['.ts', '.tsx', '.js', '.jsx', '.py', '.java'];
|
|
53
|
+
this.graph = { files: new Map(), edges: [] };
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Build dependency graph for the project
|
|
57
|
+
*/
|
|
58
|
+
buildGraph(rootDir) {
|
|
59
|
+
const startDir = rootDir || this.projectPath;
|
|
60
|
+
this.graph = { files: new Map(), edges: [] };
|
|
61
|
+
this.scanDirectory(startDir);
|
|
62
|
+
this.buildReverseLinks();
|
|
63
|
+
// Track graph build in StateCLI
|
|
64
|
+
this.statecli.track('dependency', 'graph', {
|
|
65
|
+
fileCount: this.graph.files.size,
|
|
66
|
+
edgeCount: this.graph.edges.length,
|
|
67
|
+
timestamp: new Date().toISOString()
|
|
68
|
+
}, 'dependency-tracker');
|
|
69
|
+
return this.graph;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Analyze impact of changing a file
|
|
73
|
+
*/
|
|
74
|
+
analyzeImpact(filePath) {
|
|
75
|
+
const normalizedPath = this.normalizePath(filePath);
|
|
76
|
+
const node = this.graph.files.get(normalizedPath);
|
|
77
|
+
if (!node) {
|
|
78
|
+
// File not in graph, try to rebuild
|
|
79
|
+
this.buildGraph();
|
|
80
|
+
}
|
|
81
|
+
const directDependents = this.getDirectDependents(normalizedPath);
|
|
82
|
+
const transitiveDependents = this.getTransitiveDependents(normalizedPath);
|
|
83
|
+
// Calculate risk level
|
|
84
|
+
const totalImpact = transitiveDependents.length;
|
|
85
|
+
let riskLevel;
|
|
86
|
+
let recommendation;
|
|
87
|
+
if (totalImpact === 0) {
|
|
88
|
+
riskLevel = 'low';
|
|
89
|
+
recommendation = 'No other files depend on this. Safe to modify.';
|
|
90
|
+
}
|
|
91
|
+
else if (totalImpact <= 3) {
|
|
92
|
+
riskLevel = 'low';
|
|
93
|
+
recommendation = `${totalImpact} files may be affected. Review changes carefully.`;
|
|
94
|
+
}
|
|
95
|
+
else if (totalImpact <= 10) {
|
|
96
|
+
riskLevel = 'medium';
|
|
97
|
+
recommendation = `${totalImpact} files may be affected. Consider creating a checkpoint first.`;
|
|
98
|
+
}
|
|
99
|
+
else if (totalImpact <= 25) {
|
|
100
|
+
riskLevel = 'high';
|
|
101
|
+
recommendation = `${totalImpact} files may be affected. Test thoroughly before committing.`;
|
|
102
|
+
}
|
|
103
|
+
else {
|
|
104
|
+
riskLevel = 'critical';
|
|
105
|
+
recommendation = `${totalImpact} files may be affected. This is a core file - proceed with extreme caution.`;
|
|
106
|
+
}
|
|
107
|
+
// Track analysis
|
|
108
|
+
this.statecli.track('dependency', 'impact-analysis', {
|
|
109
|
+
file: normalizedPath,
|
|
110
|
+
directCount: directDependents.length,
|
|
111
|
+
transitiveCount: transitiveDependents.length,
|
|
112
|
+
riskLevel
|
|
113
|
+
}, 'dependency-tracker');
|
|
114
|
+
return {
|
|
115
|
+
changedFile: normalizedPath,
|
|
116
|
+
directDependents,
|
|
117
|
+
transitiveDependents,
|
|
118
|
+
riskLevel,
|
|
119
|
+
recommendation
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Get what a file depends on
|
|
124
|
+
*/
|
|
125
|
+
getDependencies(filePath) {
|
|
126
|
+
const normalizedPath = this.normalizePath(filePath);
|
|
127
|
+
const node = this.graph.files.get(normalizedPath);
|
|
128
|
+
return node?.dependsOn || [];
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get what depends on a file
|
|
132
|
+
*/
|
|
133
|
+
getDependents(filePath) {
|
|
134
|
+
const normalizedPath = this.normalizePath(filePath);
|
|
135
|
+
const node = this.graph.files.get(normalizedPath);
|
|
136
|
+
return node?.dependedBy || [];
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Find circular dependencies
|
|
140
|
+
*/
|
|
141
|
+
findCircularDependencies() {
|
|
142
|
+
const cycles = [];
|
|
143
|
+
const visited = new Set();
|
|
144
|
+
const recursionStack = new Set();
|
|
145
|
+
const dfs = (file, path) => {
|
|
146
|
+
visited.add(file);
|
|
147
|
+
recursionStack.add(file);
|
|
148
|
+
path.push(file);
|
|
149
|
+
const node = this.graph.files.get(file);
|
|
150
|
+
if (node) {
|
|
151
|
+
for (const dep of node.dependsOn) {
|
|
152
|
+
if (!visited.has(dep)) {
|
|
153
|
+
dfs(dep, [...path]);
|
|
154
|
+
}
|
|
155
|
+
else if (recursionStack.has(dep)) {
|
|
156
|
+
// Found cycle
|
|
157
|
+
const cycleStart = path.indexOf(dep);
|
|
158
|
+
cycles.push(path.slice(cycleStart));
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
recursionStack.delete(file);
|
|
163
|
+
};
|
|
164
|
+
for (const file of this.graph.files.keys()) {
|
|
165
|
+
if (!visited.has(file)) {
|
|
166
|
+
dfs(file, []);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
return cycles;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Get dependency tree as a string for display
|
|
173
|
+
*/
|
|
174
|
+
getDependencyTree(filePath, maxDepth = 3) {
|
|
175
|
+
const normalizedPath = this.normalizePath(filePath);
|
|
176
|
+
const lines = [normalizedPath];
|
|
177
|
+
const buildTree = (file, depth, prefix) => {
|
|
178
|
+
if (depth >= maxDepth)
|
|
179
|
+
return;
|
|
180
|
+
const node = this.graph.files.get(file);
|
|
181
|
+
if (!node)
|
|
182
|
+
return;
|
|
183
|
+
const deps = node.dependsOn;
|
|
184
|
+
for (let i = 0; i < deps.length; i++) {
|
|
185
|
+
const isLast = i === deps.length - 1;
|
|
186
|
+
const connector = isLast ? '└── ' : '├── ';
|
|
187
|
+
const newPrefix = isLast ? ' ' : '│ ';
|
|
188
|
+
lines.push(`${prefix}${connector}${path.basename(deps[i])}`);
|
|
189
|
+
buildTree(deps[i], depth + 1, prefix + newPrefix);
|
|
190
|
+
}
|
|
191
|
+
};
|
|
192
|
+
buildTree(normalizedPath, 0, '');
|
|
193
|
+
return lines.join('\n');
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Get most depended-upon files (core files)
|
|
197
|
+
*/
|
|
198
|
+
getCoreFiles(limit = 10) {
|
|
199
|
+
const counts = [];
|
|
200
|
+
for (const [file, node] of this.graph.files) {
|
|
201
|
+
counts.push({
|
|
202
|
+
file,
|
|
203
|
+
dependentCount: node.dependedBy.length
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
return counts
|
|
207
|
+
.sort((a, b) => b.dependentCount - a.dependentCount)
|
|
208
|
+
.slice(0, limit);
|
|
209
|
+
}
|
|
210
|
+
scanDirectory(dir) {
|
|
211
|
+
try {
|
|
212
|
+
const entries = fs.readdirSync(dir, { withFileTypes: true });
|
|
213
|
+
for (const entry of entries) {
|
|
214
|
+
const fullPath = path.join(dir, entry.name);
|
|
215
|
+
if (entry.isDirectory()) {
|
|
216
|
+
// Skip common non-source directories
|
|
217
|
+
if (!['node_modules', '.git', 'dist', 'build', '__pycache__', '.next'].includes(entry.name)) {
|
|
218
|
+
this.scanDirectory(fullPath);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
else if (entry.isFile() && this.fileExtensions.some(ext => entry.name.endsWith(ext))) {
|
|
222
|
+
this.analyzeFile(fullPath);
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
catch (error) {
|
|
227
|
+
// Directory might not be readable
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
analyzeFile(filePath) {
|
|
231
|
+
try {
|
|
232
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
233
|
+
const normalizedPath = this.normalizePath(filePath);
|
|
234
|
+
const imports = [];
|
|
235
|
+
const exports = [];
|
|
236
|
+
// Parse imports/requires
|
|
237
|
+
const importPatterns = [
|
|
238
|
+
/import\s+.*?\s+from\s+['"](.+?)['"]/g,
|
|
239
|
+
/import\s+['"](.+?)['"]/g,
|
|
240
|
+
/require\s*\(\s*['"](.+?)['"]\s*\)/g,
|
|
241
|
+
/from\s+(\S+)\s+import/g // Python
|
|
242
|
+
];
|
|
243
|
+
for (const pattern of importPatterns) {
|
|
244
|
+
let match;
|
|
245
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
246
|
+
const importPath = this.resolveImportPath(normalizedPath, match[1]);
|
|
247
|
+
if (importPath) {
|
|
248
|
+
imports.push(importPath);
|
|
249
|
+
this.graph.edges.push({
|
|
250
|
+
source: normalizedPath,
|
|
251
|
+
target: importPath,
|
|
252
|
+
type: 'import'
|
|
253
|
+
});
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
// Parse exports
|
|
258
|
+
const exportPattern = /export\s+(?:default\s+)?(?:class|function|const|let|var|interface|type)\s+(\w+)/g;
|
|
259
|
+
let match;
|
|
260
|
+
while ((match = exportPattern.exec(content)) !== null) {
|
|
261
|
+
exports.push(match[1]);
|
|
262
|
+
}
|
|
263
|
+
this.graph.files.set(normalizedPath, {
|
|
264
|
+
path: normalizedPath,
|
|
265
|
+
imports,
|
|
266
|
+
exports,
|
|
267
|
+
dependsOn: imports,
|
|
268
|
+
dependedBy: [] // Will be filled by buildReverseLinks
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
catch (error) {
|
|
272
|
+
// File might not be readable
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
buildReverseLinks() {
|
|
276
|
+
for (const [file, node] of this.graph.files) {
|
|
277
|
+
for (const dep of node.dependsOn) {
|
|
278
|
+
const depNode = this.graph.files.get(dep);
|
|
279
|
+
if (depNode && !depNode.dependedBy.includes(file)) {
|
|
280
|
+
depNode.dependedBy.push(file);
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
resolveImportPath(fromFile, importPath) {
|
|
286
|
+
// Handle relative imports
|
|
287
|
+
if (importPath.startsWith('.')) {
|
|
288
|
+
const dir = path.dirname(fromFile);
|
|
289
|
+
let resolved = path.resolve(dir, importPath);
|
|
290
|
+
// Try adding extensions
|
|
291
|
+
for (const ext of this.fileExtensions) {
|
|
292
|
+
if (fs.existsSync(resolved + ext)) {
|
|
293
|
+
return this.normalizePath(resolved + ext);
|
|
294
|
+
}
|
|
295
|
+
// Try index file
|
|
296
|
+
const indexPath = path.join(resolved, `index${ext}`);
|
|
297
|
+
if (fs.existsSync(indexPath)) {
|
|
298
|
+
return this.normalizePath(indexPath);
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
// Check if it exists as-is
|
|
302
|
+
if (fs.existsSync(resolved)) {
|
|
303
|
+
return this.normalizePath(resolved);
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Non-relative imports (node_modules, etc.) - skip
|
|
307
|
+
return null;
|
|
308
|
+
}
|
|
309
|
+
normalizePath(filePath) {
|
|
310
|
+
return path.relative(this.projectPath, filePath).replace(/\\/g, '/');
|
|
311
|
+
}
|
|
312
|
+
getDirectDependents(filePath) {
|
|
313
|
+
const node = this.graph.files.get(filePath);
|
|
314
|
+
return node?.dependedBy || [];
|
|
315
|
+
}
|
|
316
|
+
getTransitiveDependents(filePath, visited = new Set()) {
|
|
317
|
+
if (visited.has(filePath))
|
|
318
|
+
return [];
|
|
319
|
+
visited.add(filePath);
|
|
320
|
+
const direct = this.getDirectDependents(filePath);
|
|
321
|
+
const transitive = [...direct];
|
|
322
|
+
for (const dep of direct) {
|
|
323
|
+
const nested = this.getTransitiveDependents(dep, visited);
|
|
324
|
+
for (const n of nested) {
|
|
325
|
+
if (!transitive.includes(n)) {
|
|
326
|
+
transitive.push(n);
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
return transitive;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
exports.DependencyTracker = DependencyTracker;
|
|
334
|
+
//# sourceMappingURL=dependency-tracker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-tracker.js","sourceRoot":"","sources":["../src/dependency-tracker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced MCP Server - All advanced StateCLI tools
|
|
3
|
+
*
|
|
4
|
+
* Includes: file tracking, error recovery, session memory, git integration
|
|
5
|
+
*/
|
|
6
|
+
import { StateCLIConfig } from './types';
|
|
7
|
+
export declare class EnhancedStateCLIMCPServer {
|
|
8
|
+
private server;
|
|
9
|
+
private statecli;
|
|
10
|
+
private fileTracker;
|
|
11
|
+
private errorRecovery;
|
|
12
|
+
private sessionMemory;
|
|
13
|
+
private gitIntegration;
|
|
14
|
+
private testAwareness;
|
|
15
|
+
private dependencyTracker;
|
|
16
|
+
private rollbackPreview;
|
|
17
|
+
private crossFileImpact;
|
|
18
|
+
constructor(config?: Partial<StateCLIConfig>);
|
|
19
|
+
private setupHandlers;
|
|
20
|
+
private handleReplay;
|
|
21
|
+
private handleUndo;
|
|
22
|
+
private handleCheckpoint;
|
|
23
|
+
private handleLog;
|
|
24
|
+
private handleTrack;
|
|
25
|
+
private handleTrackFile;
|
|
26
|
+
private handleFileHistory;
|
|
27
|
+
private handleAnalyzeError;
|
|
28
|
+
private handleAutoRecover;
|
|
29
|
+
private handleSafeExecute;
|
|
30
|
+
private handleMemoryQuery;
|
|
31
|
+
private handleRecentActivity;
|
|
32
|
+
private handleSessionInfo;
|
|
33
|
+
private handleGitStatus;
|
|
34
|
+
private handleGitHistory;
|
|
35
|
+
private handleGitCheckpoint;
|
|
36
|
+
private handleRunTests;
|
|
37
|
+
private handleTestImpact;
|
|
38
|
+
private handleSuggestTests;
|
|
39
|
+
private handleAnalyzeDependencies;
|
|
40
|
+
private handleDependencyTree;
|
|
41
|
+
private handleFindCircular;
|
|
42
|
+
private handlePreviewUndo;
|
|
43
|
+
private handleSimulateUndo;
|
|
44
|
+
private handlePredictImpact;
|
|
45
|
+
private handleIsSafe;
|
|
46
|
+
private handleSafeChangeOrder;
|
|
47
|
+
run(): Promise<void>;
|
|
48
|
+
close(): void;
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=enhanced-mcp-server.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"enhanced-mcp-server.d.ts","sourceRoot":"","sources":["../src/enhanced-mcp-server.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAkBH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AA4VzC,qBAAa,yBAAyB;IACpC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAAgB;IACrC,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,eAAe,CAAkB;IACzC,OAAO,CAAC,eAAe,CAAkB;gBAE7B,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC;IAmB5C,OAAO,CAAC,aAAa;IA6FrB,OAAO,CAAC,YAAY;IAKpB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,SAAS;IAKjB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,eAAe;IAKvB,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,kBAAkB;IAO1B,OAAO,CAAC,iBAAiB;IAMzB,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,oBAAoB;IAK5B,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,eAAe;IAgBvB,OAAO,CAAC,gBAAgB;IAMxB,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,yBAAyB;IAMjC,OAAO,CAAC,oBAAoB;IAM5B,OAAO,CAAC,kBAAkB;IAe1B,OAAO,CAAC,iBAAiB;IAKzB,OAAO,CAAC,kBAAkB;IAM1B,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,qBAAqB;IAMvB,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;IAM1B,KAAK,IAAI,IAAI;CAId"}
|