context-tracker-mcp1.0 1.0.6

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 (40) hide show
  1. package/bin/context-tracker-mcp.cmd +2 -0
  2. package/bin/context-tracker-mcp.js +4 -0
  3. package/dist/config-manager.d.ts +32 -0
  4. package/dist/config-manager.d.ts.map +1 -0
  5. package/dist/config-manager.js +103 -0
  6. package/dist/config-manager.js.map +1 -0
  7. package/dist/context-tracker.d.ts +73 -0
  8. package/dist/context-tracker.d.ts.map +1 -0
  9. package/dist/context-tracker.js +375 -0
  10. package/dist/context-tracker.js.map +1 -0
  11. package/dist/documentation-generator.d.ts +13 -0
  12. package/dist/documentation-generator.d.ts.map +1 -0
  13. package/dist/documentation-generator.js +308 -0
  14. package/dist/documentation-generator.js.map +1 -0
  15. package/dist/error-analyzer.d.ts +21 -0
  16. package/dist/error-analyzer.d.ts.map +1 -0
  17. package/dist/error-analyzer.js +69 -0
  18. package/dist/error-analyzer.js.map +1 -0
  19. package/dist/file-watcher.d.ts +36 -0
  20. package/dist/file-watcher.d.ts.map +1 -0
  21. package/dist/file-watcher.js +225 -0
  22. package/dist/file-watcher.js.map +1 -0
  23. package/dist/index.d.ts +2 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +476 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/mutex.d.ts +137 -0
  28. package/dist/mutex.d.ts.map +1 -0
  29. package/dist/mutex.js +276 -0
  30. package/dist/mutex.js.map +1 -0
  31. package/dist/project-intelligence.d.ts +24 -0
  32. package/dist/project-intelligence.d.ts.map +1 -0
  33. package/dist/project-intelligence.js +101 -0
  34. package/dist/project-intelligence.js.map +1 -0
  35. package/dist/resource-manager.d.ts +33 -0
  36. package/dist/resource-manager.d.ts.map +1 -0
  37. package/dist/resource-manager.js +188 -0
  38. package/dist/resource-manager.js.map +1 -0
  39. package/mcp-config.json +125 -0
  40. package/package.json +56 -0
package/dist/index.js ADDED
@@ -0,0 +1,476 @@
1
+ import { promises as fs } from 'fs';
2
+ import { Server } from '@modelcontextprotocol/sdk/server/index.js';
3
+ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
4
+ import { CallToolRequestSchema, ListToolsRequestSchema, ListResourcesRequestSchema, ReadResourceRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
5
+ import { ContextTracker } from './context-tracker.js';
6
+ import { DocumentationGenerator } from './documentation-generator.js';
7
+ import { FileWatcher } from './file-watcher.js';
8
+ import { ErrorAnalyzer } from './error-analyzer.js';
9
+ import { ProjectIntelligence } from './project-intelligence.js';
10
+ import { ConfigManager } from './config-manager.js';
11
+ const server = new Server({
12
+ name: 'context-tracker-mcp',
13
+ version: '1.0.0',
14
+ }, {
15
+ capabilities: {
16
+ tools: {},
17
+ resources: {},
18
+ },
19
+ });
20
+ const configManager = new ConfigManager();
21
+ const contextTracker = new ContextTracker();
22
+ const docGenerator = new DocumentationGenerator(contextTracker);
23
+ const fileWatcher = new FileWatcher(contextTracker);
24
+ const errorAnalyzer = new ErrorAnalyzer();
25
+ const projectIntel = new ProjectIntelligence('./');
26
+ // Initialize system with configuration
27
+ async function initializeSystem() {
28
+ try {
29
+ const config = await configManager.loadConfig();
30
+ // Initialize file watching with config paths
31
+ await fileWatcher.initialize(config.watchPaths);
32
+ // Auto-detect current work on startup if enabled
33
+ if (config.autoTrack) {
34
+ try {
35
+ // Check if package.json exists before reading
36
+ await fs.access('./package.json');
37
+ const packageJson = await fs.readFile('./package.json', 'utf-8');
38
+ const packageData = JSON.parse(packageJson);
39
+ if (packageData.scripts && packageData.scripts.dev) {
40
+ await contextTracker.trackContext('start', {
41
+ description: `Development session started - Project: ${packageData.name || 'Unknown'}`,
42
+ files: [],
43
+ autoDetected: true,
44
+ config: config
45
+ });
46
+ }
47
+ }
48
+ catch (error) {
49
+ if (error.code !== 'ENOENT') {
50
+ console.error('Failed to auto-detect project:', error);
51
+ }
52
+ // ENOENT means no package.json, which is fine - skip auto-tracking
53
+ }
54
+ }
55
+ console.log('System initialized with config:', config);
56
+ }
57
+ catch (error) {
58
+ console.error('Failed to initialize system:', error);
59
+ }
60
+ }
61
+ // List available tools
62
+ server.setRequestHandler(ListToolsRequestSchema, async () => {
63
+ return {
64
+ tools: [
65
+ {
66
+ name: 'track_context',
67
+ description: 'Track current development context and maintain complete history of your work',
68
+ inputSchema: {
69
+ type: 'object',
70
+ properties: {
71
+ action: {
72
+ type: 'string',
73
+ enum: ['start', 'update', 'complete'],
74
+ description: 'Action to perform'
75
+ },
76
+ description: {
77
+ type: 'string',
78
+ description: 'Description of the current work'
79
+ },
80
+ files: {
81
+ type: 'array',
82
+ items: { type: 'string' },
83
+ description: 'Files being modified'
84
+ }
85
+ },
86
+ required: ['action']
87
+ }
88
+ },
89
+ {
90
+ name: 'get_context_history',
91
+ description: 'Retrieve complete development history with all tracked context entries',
92
+ inputSchema: {
93
+ type: 'object',
94
+ properties: {
95
+ limit: {
96
+ type: 'number',
97
+ description: 'Number of recent entries to retrieve'
98
+ }
99
+ }
100
+ }
101
+ },
102
+ {
103
+ name: 'generate_documentation',
104
+ description: 'Auto-generate comprehensive project documentation from tracked context',
105
+ inputSchema: {
106
+ type: 'object',
107
+ properties: {
108
+ type: {
109
+ type: 'string',
110
+ enum: ['features', 'errors', 'styling', 'complete'],
111
+ description: 'Type of documentation to generate'
112
+ },
113
+ format: {
114
+ type: 'string',
115
+ enum: ['markdown', 'json'],
116
+ description: 'Output format'
117
+ }
118
+ }
119
+ }
120
+ },
121
+ {
122
+ name: 'log_error',
123
+ description: 'Record errors with detailed context and solutions for future reference',
124
+ inputSchema: {
125
+ type: 'object',
126
+ properties: {
127
+ error: {
128
+ type: 'string',
129
+ description: 'Error message'
130
+ },
131
+ solution: {
132
+ type: 'string',
133
+ description: 'How the error was fixed'
134
+ },
135
+ context: {
136
+ type: 'string',
137
+ description: 'Context when error occurred'
138
+ }
139
+ },
140
+ required: ['error', 'solution']
141
+ }
142
+ },
143
+ {
144
+ name: 'smart_context',
145
+ description: 'Get AI-powered context suggestions based on current work patterns',
146
+ inputSchema: {
147
+ type: 'object',
148
+ properties: {
149
+ currentFiles: {
150
+ type: 'array',
151
+ items: { type: 'string' },
152
+ description: 'Currently open files'
153
+ }
154
+ }
155
+ }
156
+ },
157
+ {
158
+ name: 'track_styling',
159
+ description: 'Monitor and record CSS styling changes with element and location tracking',
160
+ inputSchema: {
161
+ type: 'object',
162
+ properties: {
163
+ element: {
164
+ type: 'string',
165
+ description: 'CSS element or component'
166
+ },
167
+ styles: {
168
+ type: 'object',
169
+ description: 'Applied styles'
170
+ },
171
+ location: {
172
+ type: 'string',
173
+ description: 'File location'
174
+ }
175
+ },
176
+ required: ['element', 'styles']
177
+ }
178
+ },
179
+ {
180
+ name: 'analyze_project',
181
+ description: 'Get AI-powered project analysis and recommendations',
182
+ inputSchema: {
183
+ type: 'object',
184
+ properties: {
185
+ includeMetrics: {
186
+ type: 'boolean',
187
+ description: 'Include detailed project metrics'
188
+ }
189
+ }
190
+ }
191
+ },
192
+ {
193
+ name: 'get_error_patterns',
194
+ description: 'Analyze error patterns and get prevention suggestions',
195
+ inputSchema: {
196
+ type: 'object',
197
+ properties: {
198
+ timeframe: {
199
+ type: 'string',
200
+ enum: ['day', 'week', 'month'],
201
+ description: 'Timeframe for analysis'
202
+ }
203
+ }
204
+ }
205
+ },
206
+ {
207
+ name: 'get_config',
208
+ description: 'Get current MCP configuration',
209
+ inputSchema: {
210
+ type: 'object',
211
+ properties: {
212
+ section: {
213
+ type: 'string',
214
+ description: 'Configuration section to retrieve (all if not specified)'
215
+ }
216
+ }
217
+ }
218
+ },
219
+ {
220
+ name: 'update_config',
221
+ description: 'Update MCP configuration settings',
222
+ inputSchema: {
223
+ type: 'object',
224
+ properties: {
225
+ watchPaths: {
226
+ type: 'array',
227
+ items: { type: 'string' },
228
+ description: 'Paths to watch for changes'
229
+ },
230
+ autoTrack: {
231
+ type: 'boolean',
232
+ description: 'Enable automatic context tracking'
233
+ },
234
+ logLevel: {
235
+ type: 'string',
236
+ enum: ['debug', 'info', 'warn', 'error'],
237
+ description: 'Logging level'
238
+ }
239
+ }
240
+ }
241
+ },
242
+ {
243
+ name: 'create_default_config',
244
+ description: 'Create default configuration file',
245
+ inputSchema: {
246
+ type: 'object',
247
+ properties: {
248
+ overwrite: {
249
+ type: 'boolean',
250
+ description: 'Overwrite existing configuration file'
251
+ }
252
+ }
253
+ }
254
+ }
255
+ ]
256
+ };
257
+ });
258
+ // Initialize system
259
+ initializeSystem();
260
+ // Handle tool calls
261
+ server.setRequestHandler(CallToolRequestSchema, async (request) => {
262
+ const { name, arguments: args } = request.params;
263
+ try {
264
+ switch (name) {
265
+ case 'track_context':
266
+ const result = await contextTracker.trackContext(args?.action, args || {});
267
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] };
268
+ case 'get_context_history':
269
+ const history = contextTracker.getHistory(args?.limit);
270
+ return { content: [{ type: 'text', text: JSON.stringify(history, null, 2) }] };
271
+ case 'generate_documentation':
272
+ const docs = await docGenerator.generate(args?.type, args?.format || 'markdown');
273
+ return { content: [{ type: 'text', text: docs }] };
274
+ case 'log_error':
275
+ await contextTracker.logError(args?.error, args?.solution, args?.context);
276
+ return { content: [{ type: 'text', text: 'Error logged successfully' }] };
277
+ case 'track_styling':
278
+ await contextTracker.trackStyling(args?.element, args?.styles, args?.location);
279
+ return { content: [{ type: 'text', text: 'Styling tracked successfully' }] };
280
+ case 'analyze_project':
281
+ const analysis = await projectIntel.analyzeProject();
282
+ return { content: [{ type: 'text', text: JSON.stringify(analysis, null, 2) }] };
283
+ case 'get_error_patterns':
284
+ const errorStats = errorAnalyzer.getErrorStatistics();
285
+ return { content: [{ type: 'text', text: JSON.stringify(errorStats, null, 2) }] };
286
+ case 'get_config':
287
+ const config = await configManager.loadConfig();
288
+ const section = args?.section || 'all';
289
+ if (section === 'all') {
290
+ return { content: [{ type: 'text', text: JSON.stringify(config, null, 2) }] };
291
+ }
292
+ else {
293
+ const sectionConfig = config[section] || {};
294
+ return { content: [{ type: 'text', text: JSON.stringify(sectionConfig, null, 2) }] };
295
+ }
296
+ case 'update_config':
297
+ const updates = args;
298
+ const validation = await configManager.validateConfig(updates);
299
+ if (!validation.isValid) {
300
+ return {
301
+ content: [{
302
+ type: 'text',
303
+ text: `Configuration validation failed: ${validation.errors.join(', ')}`
304
+ }]
305
+ };
306
+ }
307
+ const newConfig = await configManager.updateConfig(updates);
308
+ return { content: [{ type: 'text', text: `Configuration updated successfully. New config: ${JSON.stringify(newConfig, null, 2)}` }] };
309
+ case 'create_default_config':
310
+ const overwrite = args?.overwrite || false;
311
+ if (!overwrite) {
312
+ try {
313
+ await fs.readFile(configManager.getConfigPath());
314
+ return {
315
+ content: [{
316
+ type: 'text',
317
+ text: 'Configuration file already exists. Use overwrite: true to replace it.'
318
+ }]
319
+ };
320
+ }
321
+ catch (err) {
322
+ // Only proceed if file doesn't exist (ENOENT)
323
+ if (err.code !== 'ENOENT') {
324
+ throw err; // Re-throw unexpected errors
325
+ }
326
+ // File doesn't exist, proceed
327
+ }
328
+ }
329
+ await configManager.createDefaultConfig();
330
+ return { content: [{ type: 'text', text: 'Default configuration created successfully.' }] };
331
+ default:
332
+ throw new Error(`Unknown tool: ${name}`);
333
+ }
334
+ }
335
+ catch (error) {
336
+ return {
337
+ content: [
338
+ {
339
+ type: 'text',
340
+ text: JSON.stringify({
341
+ error: error instanceof Error ? error.message : String(error)
342
+ })
343
+ }
344
+ ]
345
+ };
346
+ }
347
+ });
348
+ // List resources
349
+ server.setRequestHandler(ListResourcesRequestSchema, async () => {
350
+ return {
351
+ resources: [
352
+ {
353
+ uri: 'context://history',
354
+ name: 'Complete Context History',
355
+ description: 'Full history of all tracked context and changes',
356
+ mimeType: 'application/json'
357
+ },
358
+ {
359
+ uri: 'context://documentation',
360
+ name: 'Generated Documentation',
361
+ description: 'Comprehensive documentation of the project',
362
+ mimeType: 'text/markdown'
363
+ },
364
+ {
365
+ uri: 'context://errors',
366
+ name: 'Error Log',
367
+ description: 'Complete log of errors and their solutions',
368
+ mimeType: 'application/json'
369
+ },
370
+ {
371
+ uri: 'context://styling',
372
+ name: 'Styling History',
373
+ description: 'History of all styling changes',
374
+ mimeType: 'application/json'
375
+ },
376
+ {
377
+ uri: 'context://health',
378
+ name: 'Health Check',
379
+ description: 'Service health status and uptime',
380
+ mimeType: 'application/json'
381
+ }
382
+ ]
383
+ };
384
+ });
385
+ // Read resources
386
+ server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
387
+ const { uri } = request.params;
388
+ switch (uri) {
389
+ case 'context://history':
390
+ return {
391
+ contents: [
392
+ {
393
+ uri,
394
+ mimeType: 'application/json',
395
+ text: JSON.stringify(await contextTracker.getHistory(), null, 2)
396
+ }
397
+ ]
398
+ };
399
+ case 'context://documentation':
400
+ return {
401
+ contents: [
402
+ {
403
+ uri,
404
+ mimeType: 'text/markdown',
405
+ text: await docGenerator.generate('complete', 'markdown')
406
+ }
407
+ ]
408
+ };
409
+ case 'context://errors':
410
+ return {
411
+ contents: [
412
+ {
413
+ uri,
414
+ mimeType: 'application/json',
415
+ text: JSON.stringify(await contextTracker.getErrorLog(), null, 2)
416
+ }
417
+ ]
418
+ };
419
+ case 'context://styling':
420
+ return {
421
+ contents: [
422
+ {
423
+ uri,
424
+ mimeType: 'application/json',
425
+ text: JSON.stringify(await contextTracker.getStylingHistory(), null, 2)
426
+ }
427
+ ]
428
+ };
429
+ case 'context://health':
430
+ return {
431
+ contents: [
432
+ {
433
+ uri,
434
+ mimeType: 'application/json',
435
+ text: JSON.stringify({
436
+ status: 'healthy',
437
+ uptime: process.uptime(),
438
+ timestamp: new Date().toISOString(),
439
+ version: '1.0.0',
440
+ pid: process.pid
441
+ }, null, 2)
442
+ }
443
+ ]
444
+ };
445
+ default:
446
+ throw new Error(`Unknown resource: ${uri}`);
447
+ }
448
+ });
449
+ async function main() {
450
+ const transport = new StdioServerTransport();
451
+ await server.connect(transport);
452
+ console.error('Context Tracker MCP server running on stdio');
453
+ // Graceful shutdown handlers
454
+ const shutdown = async (signal) => {
455
+ console.error(`Received ${signal}, shutting down gracefully...`);
456
+ try {
457
+ // Stop file watcher
458
+ await fileWatcher.stop();
459
+ // Clean up context tracker (stops cleanup interval)
460
+ await contextTracker.destroy?.();
461
+ console.error('Shutdown complete');
462
+ process.exit(0);
463
+ }
464
+ catch (error) {
465
+ console.error('Error during shutdown:', error);
466
+ process.exit(1);
467
+ }
468
+ };
469
+ process.on('SIGINT', () => shutdown('SIGINT'));
470
+ process.on('SIGTERM', () => shutdown('SIGTERM'));
471
+ }
472
+ main().catch((error) => {
473
+ console.error('Server error:', error);
474
+ process.exit(1);
475
+ });
476
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * Mutex implementation for concurrency control
3
+ * Prevents race conditions in critical sections
4
+ */
5
+ export declare class Mutex {
6
+ private locked;
7
+ private queue;
8
+ private name;
9
+ constructor(name?: string);
10
+ /**
11
+ * Acquire the mutex lock
12
+ * Returns a promise that resolves when the lock is acquired
13
+ */
14
+ acquire(): Promise<void>;
15
+ /**
16
+ * Release the mutex lock
17
+ * Allows the next waiting operation to proceed
18
+ */
19
+ release(): void;
20
+ /**
21
+ * Check if the mutex is currently locked
22
+ */
23
+ isLocked(): boolean;
24
+ /**
25
+ * Get the number of operations waiting for the lock
26
+ */
27
+ getQueueLength(): number;
28
+ /**
29
+ * Execute a function with automatic lock acquisition and release
30
+ * This is the recommended way to use the mutex
31
+ */
32
+ withLock<T>(fn: () => Promise<T>): Promise<T>;
33
+ /**
34
+ * Try to acquire the lock without blocking
35
+ * Returns true if lock was acquired, false otherwise
36
+ */
37
+ tryAcquire(): boolean;
38
+ /**
39
+ * Get mutex statistics for monitoring
40
+ */
41
+ getStats(): {
42
+ name: string;
43
+ locked: boolean;
44
+ queueLength: number;
45
+ isContended: boolean;
46
+ };
47
+ }
48
+ /**
49
+ * Read-Write Lock implementation
50
+ * Allows multiple concurrent readers but exclusive writers
51
+ */
52
+ export declare class ReadWriteLock {
53
+ private readers;
54
+ private writer;
55
+ private readQueue;
56
+ private writeQueue;
57
+ private name;
58
+ constructor(name?: string);
59
+ /**
60
+ * Acquire read lock
61
+ * Multiple readers can hold the lock simultaneously
62
+ */
63
+ acquireRead(): Promise<void>;
64
+ /**
65
+ * Release read lock
66
+ */
67
+ releaseRead(): void;
68
+ /**
69
+ * Acquire write lock
70
+ * Only one writer can hold the lock, and no readers
71
+ */
72
+ acquireWrite(): Promise<void>;
73
+ /**
74
+ * Release write lock
75
+ */
76
+ releaseWrite(): void;
77
+ /**
78
+ * Execute a function with automatic read lock acquisition and release
79
+ */
80
+ withReadLock<T>(fn: () => T | Promise<T>): Promise<T>;
81
+ /**
82
+ * Execute a function with automatic write lock acquisition and release
83
+ */
84
+ withWriteLock<T>(fn: () => T | Promise<T>): Promise<T>;
85
+ /**
86
+ * Get lock statistics
87
+ */
88
+ getStats(): {
89
+ name: string;
90
+ readers: number;
91
+ writer: boolean;
92
+ readQueueLength: number;
93
+ writeQueueLength: number;
94
+ isContended: boolean;
95
+ };
96
+ }
97
+ /**
98
+ * Semaphore implementation for limiting concurrent operations
99
+ * Useful for resource pooling and rate limiting
100
+ */
101
+ export declare class Semaphore {
102
+ private permits;
103
+ private queue;
104
+ private name;
105
+ constructor(permits: number, name?: string);
106
+ /**
107
+ * Acquire a permit
108
+ */
109
+ acquire(): Promise<void>;
110
+ /**
111
+ * Release a permit
112
+ */
113
+ release(): void;
114
+ /**
115
+ * Execute a function with automatic permit acquisition and release
116
+ */
117
+ withPermit<T>(fn: () => Promise<T>): Promise<T>;
118
+ /**
119
+ * Get available permits
120
+ */
121
+ availablePermits(): number;
122
+ /**
123
+ * Get queue length
124
+ */
125
+ getQueueLength(): number;
126
+ /**
127
+ * Get semaphore statistics
128
+ */
129
+ getStats(): {
130
+ name: string;
131
+ availablePermits: number;
132
+ queueLength: number;
133
+ totalPermits: number;
134
+ isContended: boolean;
135
+ };
136
+ }
137
+ //# sourceMappingURL=mutex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mutex.d.ts","sourceRoot":"","sources":["../src/mutex.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,KAAK;IAChB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,GAAE,MAAkB;IAIpC;;;OAGG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;;OAGG;IACH,OAAO,IAAI,IAAI;IAYf;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;;OAGG;IACG,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASnD;;;OAGG;IACH,UAAU,IAAI,OAAO;IAQrB;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,OAAO,CAAC;KACtB;CAQF;AAED;;;GAGG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,OAAO,CAAK;IACpB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,SAAS,CAAyB;IAC1C,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,IAAI,CAAS;gBAET,IAAI,GAAE,MAAqB;IAIvC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC;IAWlC;;OAEG;IACH,WAAW,IAAI,IAAI;IASnB;;;OAGG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAWnC;;OAEG;IACH,YAAY,IAAI,IAAI;IAgBpB;;OAEG;IACG,YAAY,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAS3D;;OAEG;IACG,aAAa,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAS5D;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,OAAO,CAAC;QAChB,eAAe,EAAE,MAAM,CAAC;QACxB,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,OAAO,CAAC;KACtB;CAUF;AAED;;;GAGG;AACH,qBAAa,SAAS;IACpB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAyB;IACtC,OAAO,CAAC,IAAI,CAAS;gBAET,OAAO,EAAE,MAAM,EAAE,IAAI,GAAE,MAA4B;IAK/D;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAW9B;;OAEG;IACH,OAAO,IAAI,IAAI;IASf;;OAEG;IACG,UAAU,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASrD;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACH,QAAQ,IAAI;QACV,IAAI,EAAE,MAAM,CAAC;QACb,gBAAgB,EAAE,MAAM,CAAC;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;KACtB;CASF"}