@claude-flow/mcp 3.0.0-alpha.1

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 (92) hide show
  1. package/.agentic-flow/intelligence.json +16 -0
  2. package/README.md +428 -0
  3. package/__tests__/integration.test.ts +449 -0
  4. package/__tests__/mcp.test.ts +641 -0
  5. package/dist/connection-pool.d.ts +36 -0
  6. package/dist/connection-pool.d.ts.map +1 -0
  7. package/dist/connection-pool.js +273 -0
  8. package/dist/connection-pool.js.map +1 -0
  9. package/dist/index.d.ts +75 -0
  10. package/dist/index.d.ts.map +1 -0
  11. package/dist/index.js +85 -0
  12. package/dist/index.js.map +1 -0
  13. package/dist/oauth.d.ts +146 -0
  14. package/dist/oauth.d.ts.map +1 -0
  15. package/dist/oauth.js +318 -0
  16. package/dist/oauth.js.map +1 -0
  17. package/dist/prompt-registry.d.ts +90 -0
  18. package/dist/prompt-registry.d.ts.map +1 -0
  19. package/dist/prompt-registry.js +209 -0
  20. package/dist/prompt-registry.js.map +1 -0
  21. package/dist/rate-limiter.d.ts +86 -0
  22. package/dist/rate-limiter.d.ts.map +1 -0
  23. package/dist/rate-limiter.js +197 -0
  24. package/dist/rate-limiter.js.map +1 -0
  25. package/dist/resource-registry.d.ts +144 -0
  26. package/dist/resource-registry.d.ts.map +1 -0
  27. package/dist/resource-registry.js +405 -0
  28. package/dist/resource-registry.js.map +1 -0
  29. package/dist/sampling.d.ts +102 -0
  30. package/dist/sampling.d.ts.map +1 -0
  31. package/dist/sampling.js +268 -0
  32. package/dist/sampling.js.map +1 -0
  33. package/dist/schema-validator.d.ts +30 -0
  34. package/dist/schema-validator.d.ts.map +1 -0
  35. package/dist/schema-validator.js +182 -0
  36. package/dist/schema-validator.js.map +1 -0
  37. package/dist/server.d.ts +122 -0
  38. package/dist/server.d.ts.map +1 -0
  39. package/dist/server.js +829 -0
  40. package/dist/server.js.map +1 -0
  41. package/dist/session-manager.d.ts +55 -0
  42. package/dist/session-manager.d.ts.map +1 -0
  43. package/dist/session-manager.js +252 -0
  44. package/dist/session-manager.js.map +1 -0
  45. package/dist/task-manager.d.ts +81 -0
  46. package/dist/task-manager.d.ts.map +1 -0
  47. package/dist/task-manager.js +337 -0
  48. package/dist/task-manager.js.map +1 -0
  49. package/dist/tool-registry.d.ts +88 -0
  50. package/dist/tool-registry.d.ts.map +1 -0
  51. package/dist/tool-registry.js +353 -0
  52. package/dist/tool-registry.js.map +1 -0
  53. package/dist/transport/http.d.ts +55 -0
  54. package/dist/transport/http.d.ts.map +1 -0
  55. package/dist/transport/http.js +446 -0
  56. package/dist/transport/http.js.map +1 -0
  57. package/dist/transport/index.d.ts +50 -0
  58. package/dist/transport/index.d.ts.map +1 -0
  59. package/dist/transport/index.js +181 -0
  60. package/dist/transport/index.js.map +1 -0
  61. package/dist/transport/stdio.d.ts +43 -0
  62. package/dist/transport/stdio.d.ts.map +1 -0
  63. package/dist/transport/stdio.js +194 -0
  64. package/dist/transport/stdio.js.map +1 -0
  65. package/dist/transport/websocket.d.ts +65 -0
  66. package/dist/transport/websocket.d.ts.map +1 -0
  67. package/dist/transport/websocket.js +314 -0
  68. package/dist/transport/websocket.js.map +1 -0
  69. package/dist/types.d.ts +473 -0
  70. package/dist/types.d.ts.map +1 -0
  71. package/dist/types.js +40 -0
  72. package/dist/types.js.map +1 -0
  73. package/package.json +42 -0
  74. package/src/connection-pool.ts +344 -0
  75. package/src/index.ts +253 -0
  76. package/src/oauth.ts +447 -0
  77. package/src/prompt-registry.ts +296 -0
  78. package/src/rate-limiter.ts +266 -0
  79. package/src/resource-registry.ts +530 -0
  80. package/src/sampling.ts +363 -0
  81. package/src/schema-validator.ts +213 -0
  82. package/src/server.ts +1134 -0
  83. package/src/session-manager.ts +339 -0
  84. package/src/task-manager.ts +427 -0
  85. package/src/tool-registry.ts +475 -0
  86. package/src/transport/http.ts +532 -0
  87. package/src/transport/index.ts +233 -0
  88. package/src/transport/stdio.ts +252 -0
  89. package/src/transport/websocket.ts +396 -0
  90. package/src/types.ts +664 -0
  91. package/tsconfig.json +20 -0
  92. package/vitest.config.ts +13 -0
@@ -0,0 +1,405 @@
1
+ /**
2
+ * @claude-flow/mcp - Resource Registry
3
+ *
4
+ * MCP 2025-11-25 compliant resource management
5
+ * Supports: list, read, subscribe, templates, pagination
6
+ */
7
+ import { EventEmitter } from 'events';
8
+ export class ResourceRegistry extends EventEmitter {
9
+ logger;
10
+ resources = new Map();
11
+ templates = new Map();
12
+ handlers = new Map();
13
+ subscriptions = new Map();
14
+ cache = new Map();
15
+ subscriptionCounter = 0;
16
+ options;
17
+ constructor(logger, options = {}) {
18
+ super();
19
+ this.logger = logger;
20
+ this.options = {
21
+ enableSubscriptions: options.enableSubscriptions ?? true,
22
+ maxSubscriptionsPerResource: options.maxSubscriptionsPerResource ?? 100,
23
+ cacheEnabled: options.cacheEnabled ?? true,
24
+ cacheTTL: options.cacheTTL ?? 60000, // 1 minute default
25
+ maxCacheSize: options.maxCacheSize ?? 1000, // SECURITY: Default max 1000 entries
26
+ };
27
+ }
28
+ /**
29
+ * Register a static resource
30
+ */
31
+ registerResource(resource, handler) {
32
+ if (this.resources.has(resource.uri)) {
33
+ this.logger.warn('Resource already registered', { uri: resource.uri });
34
+ return false;
35
+ }
36
+ this.resources.set(resource.uri, resource);
37
+ this.handlers.set(resource.uri, handler);
38
+ this.logger.debug('Resource registered', { uri: resource.uri, name: resource.name });
39
+ this.emit('resource:registered', { uri: resource.uri });
40
+ this.emitListChanged();
41
+ return true;
42
+ }
43
+ /**
44
+ * Register a resource template (dynamic URIs)
45
+ */
46
+ registerTemplate(template, handler) {
47
+ if (this.templates.has(template.uriTemplate)) {
48
+ this.logger.warn('Template already registered', { template: template.uriTemplate });
49
+ return false;
50
+ }
51
+ this.templates.set(template.uriTemplate, template);
52
+ this.handlers.set(template.uriTemplate, handler);
53
+ this.logger.debug('Resource template registered', { template: template.uriTemplate });
54
+ this.emit('template:registered', { template: template.uriTemplate });
55
+ return true;
56
+ }
57
+ /**
58
+ * Unregister a resource
59
+ */
60
+ unregisterResource(uri) {
61
+ if (!this.resources.has(uri)) {
62
+ return false;
63
+ }
64
+ this.resources.delete(uri);
65
+ this.handlers.delete(uri);
66
+ this.cache.delete(uri);
67
+ // Cancel subscriptions for this resource
68
+ const subs = this.subscriptions.get(uri) || [];
69
+ for (const sub of subs) {
70
+ this.emit('subscription:cancelled', { subscriptionId: sub.id, uri });
71
+ }
72
+ this.subscriptions.delete(uri);
73
+ this.logger.debug('Resource unregistered', { uri });
74
+ this.emit('resource:unregistered', { uri });
75
+ this.emitListChanged();
76
+ return true;
77
+ }
78
+ /**
79
+ * List resources with pagination
80
+ */
81
+ list(cursor, pageSize = 50) {
82
+ const allResources = Array.from(this.resources.values());
83
+ let startIndex = 0;
84
+ if (cursor) {
85
+ const decoded = this.decodeCursor(cursor);
86
+ startIndex = decoded.offset;
87
+ }
88
+ const endIndex = Math.min(startIndex + pageSize, allResources.length);
89
+ const resources = allResources.slice(startIndex, endIndex);
90
+ const result = { resources };
91
+ if (endIndex < allResources.length) {
92
+ result.nextCursor = this.encodeCursor({ offset: endIndex });
93
+ }
94
+ return result;
95
+ }
96
+ /**
97
+ * Read resource content
98
+ */
99
+ async read(uri) {
100
+ // Check cache first
101
+ if (this.options.cacheEnabled) {
102
+ const cached = this.cache.get(uri);
103
+ if (cached && Date.now() - cached.cachedAt < cached.ttl) {
104
+ this.logger.debug('Resource cache hit', { uri });
105
+ return { contents: cached.content };
106
+ }
107
+ }
108
+ // Find handler (exact match or template match)
109
+ let handler = this.handlers.get(uri);
110
+ if (!handler) {
111
+ handler = this.findTemplateHandler(uri);
112
+ }
113
+ if (!handler) {
114
+ throw new Error(`Resource not found: ${uri}`);
115
+ }
116
+ const contents = await handler(uri);
117
+ // Cache the result with size limit (LRU eviction)
118
+ if (this.options.cacheEnabled) {
119
+ // SECURITY: Enforce max cache size to prevent memory exhaustion
120
+ if (this.cache.size >= this.options.maxCacheSize) {
121
+ // Remove oldest entry (first entry in Map iteration order)
122
+ const oldestKey = this.cache.keys().next().value;
123
+ if (oldestKey) {
124
+ this.cache.delete(oldestKey);
125
+ this.logger.debug('Cache evicted oldest entry', { uri: oldestKey });
126
+ }
127
+ }
128
+ this.cache.set(uri, {
129
+ content: contents,
130
+ cachedAt: Date.now(),
131
+ ttl: this.options.cacheTTL,
132
+ });
133
+ }
134
+ this.emit('resource:read', { uri, contentCount: contents.length });
135
+ return { contents };
136
+ }
137
+ /**
138
+ * Subscribe to resource updates
139
+ */
140
+ subscribe(uri, callback) {
141
+ if (!this.options.enableSubscriptions) {
142
+ throw new Error('Subscriptions are disabled');
143
+ }
144
+ const existingSubs = this.subscriptions.get(uri) || [];
145
+ if (existingSubs.length >= this.options.maxSubscriptionsPerResource) {
146
+ throw new Error(`Maximum subscriptions reached for resource: ${uri}`);
147
+ }
148
+ const subscriptionId = `sub-${++this.subscriptionCounter}-${Date.now()}`;
149
+ const subscription = {
150
+ id: subscriptionId,
151
+ uri,
152
+ callback,
153
+ createdAt: new Date(),
154
+ };
155
+ existingSubs.push(subscription);
156
+ this.subscriptions.set(uri, existingSubs);
157
+ this.logger.debug('Subscription created', { subscriptionId, uri });
158
+ this.emit('subscription:created', { subscriptionId, uri });
159
+ return subscriptionId;
160
+ }
161
+ /**
162
+ * Unsubscribe from resource updates
163
+ */
164
+ unsubscribe(subscriptionId) {
165
+ for (const [uri, subs] of this.subscriptions) {
166
+ const index = subs.findIndex((s) => s.id === subscriptionId);
167
+ if (index !== -1) {
168
+ subs.splice(index, 1);
169
+ if (subs.length === 0) {
170
+ this.subscriptions.delete(uri);
171
+ }
172
+ this.logger.debug('Subscription removed', { subscriptionId, uri });
173
+ this.emit('subscription:removed', { subscriptionId, uri });
174
+ return true;
175
+ }
176
+ }
177
+ return false;
178
+ }
179
+ /**
180
+ * Notify subscribers of resource update
181
+ */
182
+ async notifyUpdate(uri) {
183
+ const subs = this.subscriptions.get(uri);
184
+ if (!subs || subs.length === 0) {
185
+ return;
186
+ }
187
+ // Invalidate cache
188
+ this.cache.delete(uri);
189
+ // Read fresh content
190
+ const { contents } = await this.read(uri);
191
+ // Notify all subscribers
192
+ for (const sub of subs) {
193
+ try {
194
+ sub.callback(uri, contents);
195
+ }
196
+ catch (error) {
197
+ this.logger.error('Subscription callback error', { subscriptionId: sub.id, error });
198
+ }
199
+ }
200
+ this.emit('resource:updated', { uri, subscriberCount: subs.length });
201
+ }
202
+ /**
203
+ * Get resource by URI
204
+ */
205
+ getResource(uri) {
206
+ return this.resources.get(uri);
207
+ }
208
+ /**
209
+ * Check if resource exists
210
+ */
211
+ hasResource(uri) {
212
+ return this.resources.has(uri) || this.matchesTemplate(uri);
213
+ }
214
+ /**
215
+ * Get resource count
216
+ */
217
+ getResourceCount() {
218
+ return this.resources.size;
219
+ }
220
+ /**
221
+ * Get all templates
222
+ */
223
+ getTemplates() {
224
+ return Array.from(this.templates.values());
225
+ }
226
+ /**
227
+ * Get subscription count for a resource
228
+ */
229
+ getSubscriptionCount(uri) {
230
+ return this.subscriptions.get(uri)?.length || 0;
231
+ }
232
+ /**
233
+ * Get stats
234
+ */
235
+ getStats() {
236
+ let totalSubscriptions = 0;
237
+ for (const subs of this.subscriptions.values()) {
238
+ totalSubscriptions += subs.length;
239
+ }
240
+ return {
241
+ totalResources: this.resources.size,
242
+ totalTemplates: this.templates.size,
243
+ totalSubscriptions,
244
+ cacheSize: this.cache.size,
245
+ };
246
+ }
247
+ /**
248
+ * Clear cache
249
+ */
250
+ clearCache() {
251
+ this.cache.clear();
252
+ this.logger.debug('Resource cache cleared');
253
+ }
254
+ /**
255
+ * Find handler for template URI
256
+ */
257
+ findTemplateHandler(uri) {
258
+ for (const [template, handler] of this.handlers) {
259
+ if (this.matchesTemplate(uri, template)) {
260
+ return handler;
261
+ }
262
+ }
263
+ return undefined;
264
+ }
265
+ /**
266
+ * Escape regex metacharacters to prevent ReDoS attacks
267
+ * SECURITY: Critical for preventing regex denial of service
268
+ */
269
+ escapeRegex(str) {
270
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
271
+ }
272
+ /**
273
+ * Check if URI matches any template
274
+ * SECURITY: Uses escaped regex to prevent ReDoS
275
+ */
276
+ matchesTemplate(uri, template) {
277
+ if (template) {
278
+ // SECURITY: Escape regex metacharacters before converting template
279
+ // First extract placeholders, escape the rest, then add placeholder pattern
280
+ const escaped = this.escapeRegex(template);
281
+ // Replace escaped placeholder braces with the pattern
282
+ const pattern = escaped.replace(/\\\{[^}]+\\\}/g, '[^/]+');
283
+ try {
284
+ const regex = new RegExp('^' + pattern + '$');
285
+ return regex.test(uri);
286
+ }
287
+ catch {
288
+ // Invalid regex pattern - return false safely
289
+ return false;
290
+ }
291
+ }
292
+ for (const t of this.templates.keys()) {
293
+ const escaped = this.escapeRegex(t);
294
+ const pattern = escaped.replace(/\\\{[^}]+\\\}/g, '[^/]+');
295
+ try {
296
+ const regex = new RegExp('^' + pattern + '$');
297
+ if (regex.test(uri)) {
298
+ return true;
299
+ }
300
+ }
301
+ catch {
302
+ // Skip invalid patterns
303
+ continue;
304
+ }
305
+ }
306
+ return false;
307
+ }
308
+ /**
309
+ * Encode cursor for pagination
310
+ */
311
+ encodeCursor(data) {
312
+ return Buffer.from(JSON.stringify(data)).toString('base64');
313
+ }
314
+ /**
315
+ * Decode cursor for pagination
316
+ */
317
+ decodeCursor(cursor) {
318
+ try {
319
+ return JSON.parse(Buffer.from(cursor, 'base64').toString('utf-8'));
320
+ }
321
+ catch {
322
+ return { offset: 0 };
323
+ }
324
+ }
325
+ /**
326
+ * Emit listChanged notification
327
+ */
328
+ emitListChanged() {
329
+ this.emit('resources:listChanged');
330
+ }
331
+ }
332
+ export function createResourceRegistry(logger, options) {
333
+ return new ResourceRegistry(logger, options);
334
+ }
335
+ /**
336
+ * Helper to create a static text resource
337
+ */
338
+ export function createTextResource(uri, name, text, options) {
339
+ const resource = {
340
+ uri,
341
+ name,
342
+ description: options?.description,
343
+ mimeType: options?.mimeType || 'text/plain',
344
+ annotations: options?.annotations,
345
+ };
346
+ const handler = async () => [
347
+ {
348
+ uri,
349
+ mimeType: options?.mimeType || 'text/plain',
350
+ text,
351
+ },
352
+ ];
353
+ return { resource, handler };
354
+ }
355
+ /**
356
+ * Helper to create a file resource
357
+ * SECURITY: Validates path to prevent path traversal attacks
358
+ */
359
+ export function createFileResource(uri, name, filePath, options) {
360
+ const resource = {
361
+ uri,
362
+ name,
363
+ description: options?.description,
364
+ mimeType: options?.mimeType || 'application/octet-stream',
365
+ };
366
+ const handler = async () => {
367
+ const fs = await import('fs/promises');
368
+ const path = await import('path');
369
+ // SECURITY: Normalize and validate the path
370
+ const normalizedPath = path.normalize(filePath);
371
+ // Prevent path traversal
372
+ if (normalizedPath.includes('..') || normalizedPath.includes('\0')) {
373
+ throw new Error('Invalid file path: path traversal detected');
374
+ }
375
+ // Prevent access to sensitive system paths
376
+ const blockedPaths = ['/etc/', '/proc/', '/sys/', '/dev/', '/root/', '/var/log/'];
377
+ const lowerPath = normalizedPath.toLowerCase();
378
+ for (const blocked of blockedPaths) {
379
+ if (lowerPath.startsWith(blocked) || lowerPath.includes('/.')) {
380
+ throw new Error('Access to system paths is not allowed');
381
+ }
382
+ }
383
+ // If allowedBasePaths specified, validate against them
384
+ if (options?.allowedBasePaths && options.allowedBasePaths.length > 0) {
385
+ const resolvedPath = path.resolve(normalizedPath);
386
+ const isAllowed = options.allowedBasePaths.some((basePath) => {
387
+ const resolvedBase = path.resolve(basePath);
388
+ return resolvedPath.startsWith(resolvedBase);
389
+ });
390
+ if (!isAllowed) {
391
+ throw new Error('File path is outside allowed directories');
392
+ }
393
+ }
394
+ const content = await fs.readFile(normalizedPath);
395
+ return [
396
+ {
397
+ uri,
398
+ mimeType: options?.mimeType || 'application/octet-stream',
399
+ blob: content.toString('base64'),
400
+ },
401
+ ];
402
+ };
403
+ return { resource, handler };
404
+ }
405
+ //# sourceMappingURL=resource-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-registry.js","sourceRoot":"","sources":["../src/resource-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * @claude-flow/mcp - Sampling (Server-Initiated LLM)
3
+ *
4
+ * MCP 2025-11-25 compliant sampling for server-initiated LLM calls
5
+ */
6
+ import { EventEmitter } from 'events';
7
+ import type { ModelPreferences, CreateMessageRequest, CreateMessageResult, ILogger } from './types.js';
8
+ /**
9
+ * External LLM provider interface
10
+ */
11
+ export interface LLMProvider {
12
+ name: string;
13
+ createMessage(request: CreateMessageRequest): Promise<CreateMessageResult>;
14
+ isAvailable(): Promise<boolean>;
15
+ }
16
+ /**
17
+ * Sampling configuration
18
+ */
19
+ export interface SamplingConfig {
20
+ /** Default model preferences */
21
+ defaultModelPreferences?: ModelPreferences;
22
+ /** Maximum tokens for any request */
23
+ maxTokensLimit?: number;
24
+ /** Default temperature */
25
+ defaultTemperature?: number;
26
+ /** Timeout for LLM calls (ms) */
27
+ timeout?: number;
28
+ /** Enable request logging */
29
+ enableLogging?: boolean;
30
+ }
31
+ /**
32
+ * Sampling request context
33
+ */
34
+ export interface SamplingContext {
35
+ sessionId: string;
36
+ serverId?: string;
37
+ metadata?: Record<string, unknown>;
38
+ }
39
+ export declare class SamplingManager extends EventEmitter {
40
+ private readonly logger;
41
+ private readonly config;
42
+ private providers;
43
+ private defaultProvider?;
44
+ private requestCount;
45
+ private totalTokens;
46
+ constructor(logger: ILogger, config?: Partial<SamplingConfig>);
47
+ /**
48
+ * Register an LLM provider
49
+ */
50
+ registerProvider(provider: LLMProvider, isDefault?: boolean): void;
51
+ /**
52
+ * Unregister a provider
53
+ */
54
+ unregisterProvider(name: string): boolean;
55
+ /**
56
+ * Create a message (sampling/createMessage)
57
+ */
58
+ createMessage(request: CreateMessageRequest, context?: SamplingContext): Promise<CreateMessageResult>;
59
+ /**
60
+ * Check if sampling is available
61
+ */
62
+ isAvailable(): Promise<boolean>;
63
+ /**
64
+ * Get available providers
65
+ */
66
+ getProviders(): string[];
67
+ /**
68
+ * Get stats
69
+ */
70
+ getStats(): {
71
+ requestCount: number;
72
+ totalTokens: number;
73
+ providerCount: number;
74
+ defaultProvider?: string;
75
+ };
76
+ /**
77
+ * Validate sampling request
78
+ */
79
+ private validateRequest;
80
+ /**
81
+ * Select provider based on preferences
82
+ */
83
+ private selectProvider;
84
+ /**
85
+ * Apply default values to request
86
+ */
87
+ private applyDefaults;
88
+ /**
89
+ * Call with timeout
90
+ */
91
+ private callWithTimeout;
92
+ }
93
+ export declare function createSamplingManager(logger: ILogger, config?: Partial<SamplingConfig>): SamplingManager;
94
+ /**
95
+ * Create a mock LLM provider for testing
96
+ */
97
+ export declare function createMockProvider(name?: string): LLMProvider;
98
+ /**
99
+ * Create an Anthropic provider (requires API key)
100
+ */
101
+ export declare function createAnthropicProvider(apiKey: string): LLMProvider;
102
+ //# sourceMappingURL=sampling.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sampling.d.ts","sourceRoot":"","sources":["../src/sampling.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAEV,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EAEnB,OAAO,EACR,MAAM,YAAY,CAAC;AAEpB;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC3E,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,gCAAgC;IAChC,uBAAuB,CAAC,EAAE,gBAAgB,CAAC;IAC3C,qCAAqC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0BAA0B;IAC1B,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,iCAAiC;IACjC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6BAA6B;IAC7B,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAcD,qBAAa,eAAgB,SAAQ,YAAY;IAQ7C,OAAO,CAAC,QAAQ,CAAC,MAAM;IAPzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,YAAY,CAAK;IACzB,OAAO,CAAC,WAAW,CAAK;gBAGL,MAAM,EAAE,OAAO,EAChC,MAAM,GAAE,OAAO,CAAC,cAAc,CAAM;IAMtC;;OAEG;IACH,gBAAgB,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,GAAE,OAAe,GAAG,IAAI;IASzE;;OAEG;IACH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAQzC;;OAEG;IACG,aAAa,CACjB,OAAO,EAAE,oBAAoB,EAC7B,OAAO,CAAC,EAAE,eAAe,GACxB,OAAO,CAAC,mBAAmB,CAAC;IAwE/B;;OAEG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IAcrC;;OAEG;IACH,YAAY,IAAI,MAAM,EAAE;IAIxB;;OAEG;IACH,QAAQ,IAAI;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,aAAa,EAAE,MAAM,CAAC;QACtB,eAAe,CAAC,EAAE,MAAM,CAAC;KAC1B;IASD;;OAEG;IACH,OAAO,CAAC,eAAe;IAcvB;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;YACW,eAAe;CAQ9B;AAED,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,OAAO,EACf,MAAM,CAAC,EAAE,OAAO,CAAC,cAAc,CAAC,GAC/B,eAAe,CAEjB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAe,GAAG,WAAW,CAqBrE;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,CA2CnE"}