@mcampa/ai-context-mcp 0.0.1 → 0.0.2-beta.357ea87

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/dist/handlers.js CHANGED
@@ -1,28 +1,72 @@
1
- import * as fs from "fs";
2
- import * as path from "path";
3
- import { COLLECTION_LIMIT_MESSAGE, } from "@mcampa/ai-context-core";
4
- import { ensureAbsolutePath, truncateContent, trackCodebasePath, } from "./utils.js";
1
+ import * as crypto from "node:crypto";
2
+ import * as fs from "node:fs";
3
+ import * as path from "node:path";
4
+ import { COLLECTION_LIMIT_MESSAGE, Context, } from "@mcampa/ai-context-core";
5
+ import { ensureAbsolutePath, trackCodebasePath, truncateContent, } from "./utils.js";
5
6
  export class ToolHandlers {
6
7
  constructor(context, snapshotManager) {
8
+ this.contextCache = new Map();
7
9
  this.indexingStats = null;
8
- this.context = context;
10
+ this.baseContext = context;
9
11
  this.snapshotManager = snapshotManager;
10
12
  this.currentWorkspace = process.cwd();
11
13
  console.log(`[WORKSPACE] Current workspace: ${this.currentWorkspace}`);
12
14
  }
13
15
  /**
14
- * Sync indexed codebases from Zilliz Cloud collections
15
- * This method fetches all collections from the vector database,
16
+ * Generate a consistent context name from a codebase path
17
+ */
18
+ getContextNameForPath(codebasePath) {
19
+ // Use a hash of the path to create a unique but consistent name
20
+ const hash = crypto
21
+ .createHash("sha256")
22
+ .update(codebasePath)
23
+ .digest("hex")
24
+ .substring(0, 16);
25
+ return `codebase_${hash}`;
26
+ }
27
+ /**
28
+ * Get or create a Context instance for a specific codebase path
29
+ */
30
+ getContextForPath(codebasePath) {
31
+ if (this.contextCache.has(codebasePath)) {
32
+ return this.contextCache.get(codebasePath);
33
+ }
34
+ const contextName = this.getContextNameForPath(codebasePath);
35
+ const context = new Context({
36
+ name: contextName,
37
+ embedding: this.baseContext.getEmbedding(),
38
+ vectorDatabase: this.baseContext.getVectorDatabase(),
39
+ });
40
+ this.contextCache.set(codebasePath, context);
41
+ console.log(`[CONTEXT] Created new context for ${codebasePath} with name: ${contextName}`);
42
+ return context;
43
+ }
44
+ /**
45
+ * Legacy getter for backward compatibility - returns the base context
46
+ */
47
+ get context() {
48
+ return this.baseContext;
49
+ }
50
+ /**
51
+ * Register an existing context for a specific codebase path.
52
+ * This is useful for testing when the context is created externally.
53
+ */
54
+ registerContextForPath(codebasePath, context) {
55
+ this.contextCache.set(codebasePath, context);
56
+ }
57
+ /**
58
+ * Sync indexed codebases from vector database collections
59
+ * This method fetches all collections from the vector database (Milvus, Zilliz, or Qdrant),
16
60
  * gets the first document from each collection to extract codebasePath from metadata,
17
61
  * and updates the snapshot with discovered codebases.
18
62
  *
19
- * Logic: Compare mcp-codebase-snapshot.json with zilliz cloud collections
63
+ * Logic: Compare mcp-codebase-snapshot.json with vector database collections
20
64
  * - If local snapshot has extra directories (not in cloud), remove them
21
65
  * - If local snapshot is missing directories (exist in cloud), ignore them
22
66
  */
23
67
  async syncIndexedCodebasesFromCloud() {
24
68
  try {
25
- console.log(`[SYNC-CLOUD] 🔄 Syncing indexed codebases from Zilliz Cloud...`);
69
+ console.log(`[SYNC-CLOUD] 🔄 Syncing indexed codebases from vector database...`);
26
70
  // Get all collections using the interface method
27
71
  const vectorDb = this.context.getVectorDatabase();
28
72
  // Use the new listCollections method from the interface
@@ -60,10 +104,15 @@ export class ToolHandlers {
60
104
  1);
61
105
  if (results && results.length > 0) {
62
106
  const firstResult = results[0];
63
- const metadataStr = firstResult.metadata;
64
- if (metadataStr && typeof metadataStr === "string") {
107
+ const metadataValue = firstResult.metadata;
108
+ if (metadataValue) {
65
109
  try {
66
- const metadata = JSON.parse(metadataStr);
110
+ // Handle both string and object metadata
111
+ // query() method already parses JSON for Qdrant, returns object
112
+ // For Milvus, it might still be a string
113
+ const metadata = typeof metadataValue === "string"
114
+ ? JSON.parse(metadataValue)
115
+ : metadataValue;
67
116
  const codebasePath = metadata.codebasePath;
68
117
  if (codebasePath && typeof codebasePath === "string") {
69
118
  console.log(`[SYNC-CLOUD] 📍 Found codebase path: ${codebasePath} in collection: ${collectionName}`);
@@ -86,9 +135,7 @@ export class ToolHandlers {
86
135
  }
87
136
  }
88
137
  catch (collectionError) {
89
- console.warn(`[SYNC-CLOUD] ⚠️ Error checking collection ${collectionName}:`, collectionError instanceof Error
90
- ? collectionError.message
91
- : String(collectionError));
138
+ console.warn(`[SYNC-CLOUD] ⚠️ Error checking collection ${collectionName}:`, String(collectionError));
92
139
  // Continue with next collection
93
140
  }
94
141
  }
@@ -97,9 +144,17 @@ export class ToolHandlers {
97
144
  const localCodebases = new Set(this.snapshotManager.getIndexedCodebases());
98
145
  console.log(`[SYNC-CLOUD] 📊 Found ${localCodebases.size} local codebases in snapshot`);
99
146
  let hasChanges = false;
147
+ // Get currently indexing codebases to avoid removing them during background indexing
148
+ const indexingCodebases = this.snapshotManager.getIndexingCodebases();
100
149
  // Remove local codebases that don't exist in cloud
150
+ // BUT skip codebases that are currently being indexed (their collections may be empty)
101
151
  for (const localCodebase of localCodebases) {
102
152
  if (!cloudCodebases.has(localCodebase)) {
153
+ // Skip if this codebase is currently being indexed
154
+ if (indexingCodebases.includes(localCodebase)) {
155
+ console.log(`[SYNC-CLOUD] ⏭️ Skipping removal of ${localCodebase} (currently indexing)`);
156
+ continue;
157
+ }
103
158
  this.snapshotManager.removeIndexedCodebase(localCodebase);
104
159
  hasChanges = true;
105
160
  console.log(`[SYNC-CLOUD] ➖ Removed local codebase (not in cloud): ${localCodebase}`);
@@ -181,9 +236,10 @@ export class ToolHandlers {
181
236
  isError: true,
182
237
  };
183
238
  }
184
- //Check if the snapshot and cloud index are in sync
239
+ // Check if the snapshot and cloud index are in sync
240
+ const contextForPath = this.getContextForPath(absolutePath);
185
241
  if (this.snapshotManager.getIndexedCodebases().includes(absolutePath) !==
186
- (await this.context.hasIndex())) {
242
+ (await contextForPath.hasIndex())) {
187
243
  console.warn(`[INDEX-VALIDATION] ❌ Snapshot and cloud index mismatch: ${absolutePath}`);
188
244
  }
189
245
  // Check if already indexed (unless force is true)
@@ -205,9 +261,9 @@ export class ToolHandlers {
205
261
  console.log(`[FORCE-REINDEX] 🔄 Removing '${absolutePath}' from indexed list for re-indexing`);
206
262
  this.snapshotManager.removeIndexedCodebase(absolutePath);
207
263
  }
208
- if (await this.context.hasIndex()) {
264
+ if (await contextForPath.hasIndex()) {
209
265
  console.log(`[FORCE-REINDEX] 🔄 Clearing index for '${absolutePath}'`);
210
- await this.context.clearIndex(absolutePath);
266
+ await contextForPath.clearIndex(absolutePath);
211
267
  }
212
268
  }
213
269
  // CRITICAL: Pre-index collection creation validation
@@ -238,9 +294,7 @@ export class ToolHandlers {
238
294
  content: [
239
295
  {
240
296
  type: "text",
241
- text: `Error validating collection creation: ${validationError instanceof Error
242
- ? validationError.message
243
- : String(validationError)}`,
297
+ text: `Error validating collection creation: ${String(validationError)}`,
244
298
  },
245
299
  ],
246
300
  isError: true,
@@ -260,10 +314,7 @@ export class ToolHandlers {
260
314
  const currentStatus = this.snapshotManager.getCodebaseStatus(absolutePath);
261
315
  if (currentStatus === "indexfailed") {
262
316
  const failedInfo = this.snapshotManager.getCodebaseInfo(absolutePath);
263
- const errorMessage = failedInfo?.status === "indexfailed"
264
- ? failedInfo.errorMessage
265
- : "Unknown error";
266
- console.log(`[BACKGROUND-INDEX] Retrying indexing for previously failed codebase. Previous error: ${errorMessage}`);
317
+ console.log(`[BACKGROUND-INDEX] Retrying indexing for previously failed codebase. Previous error: ${failedInfo?.errorMessage || "Unknown error"}`);
267
318
  }
268
319
  // Set to indexing status and save snapshot immediately
269
320
  this.snapshotManager.setCodebaseIndexing(absolutePath, 0);
@@ -328,9 +379,9 @@ export class ToolHandlers {
328
379
  const synchronizer = new FileSynchronizer(absolutePath, ignorePatterns);
329
380
  await synchronizer.initialize();
330
381
  // Store synchronizer in the context (let context manage collection names)
331
- await this.context.getPreparedCollection(absolutePath);
332
- const collectionName = this.context.getCollectionName();
333
- this.context.setSynchronizer(collectionName, synchronizer);
382
+ await contextForThisTask.getPreparedCollection(absolutePath);
383
+ const collectionName = contextForThisTask.getCollectionName();
384
+ contextForThisTask.setSynchronizer(collectionName, synchronizer);
334
385
  if (contextForThisTask !== this.context) {
335
386
  contextForThisTask.setSynchronizer(collectionName, synchronizer);
336
387
  }
@@ -415,12 +466,101 @@ export class ToolHandlers {
415
466
  }
416
467
  trackCodebasePath(absolutePath);
417
468
  // Check if this codebase is indexed or being indexed
418
- const isIndexed = this.snapshotManager
469
+ // IMPORTANT: Check both snapshot AND actual vector database collection
470
+ // to handle cases where snapshot is out of sync with cloud state
471
+ const isIndexedInSnapshot = this.snapshotManager
419
472
  .getIndexedCodebases()
420
473
  .includes(absolutePath);
421
474
  const isIndexing = this.snapshotManager
422
475
  .getIndexingCodebases()
423
476
  .includes(absolutePath);
477
+ const searchContext = this.getContextForPath(absolutePath);
478
+ const hasVectorCollection = await searchContext.hasIndex();
479
+ // Recovery logic for out-of-sync state between snapshot and vector database
480
+ //
481
+ // This can occur when:
482
+ // 1. Snapshot file was manually deleted or corrupted
483
+ // 2. MCP server restarted before saving snapshot after indexing
484
+ // 3. Multiple MCP instances accessing the same vector database
485
+ // 4. User switched between different machines with shared cloud vector DB
486
+ //
487
+ // Strategy:
488
+ // - Detect: Collection exists in vector DB but snapshot doesn't know about it
489
+ // - Recover: Query vector DB for actual statistics and sync to snapshot
490
+ // - Result: User can search immediately without re-indexing
491
+ if (hasVectorCollection && !isIndexedInSnapshot && !isIndexing) {
492
+ console.log(`[SEARCH] Collection exists for '${absolutePath}' but not in snapshot - syncing state`);
493
+ try {
494
+ // Try to retrieve actual statistics from vector database
495
+ // This queries the collection to count unique files and total chunks
496
+ const stats = await searchContext.getCollectionStats(absolutePath);
497
+ if (stats) {
498
+ console.log(`[SEARCH] Retrieved actual stats from vector DB: ${stats.indexedFiles} files, ${stats.totalChunks} chunks`);
499
+ this.snapshotManager.setCodebaseIndexed(absolutePath, {
500
+ indexedFiles: stats.indexedFiles,
501
+ totalChunks: stats.totalChunks,
502
+ status: "completed",
503
+ });
504
+ // Save snapshot with error handling
505
+ try {
506
+ this.snapshotManager.saveCodebaseSnapshot();
507
+ console.log(`[SEARCH] Successfully synced snapshot state for '${absolutePath}'`);
508
+ }
509
+ catch (saveError) {
510
+ console.error(`[SEARCH] Failed to save snapshot after sync: ${saveError}`);
511
+ // Continue with search since vector DB is the source of truth
512
+ }
513
+ }
514
+ else {
515
+ // Collection exists but stats query returned null (expected errors like collection not loaded)
516
+ // Return error to user instead of using placeholder values
517
+ return {
518
+ content: [
519
+ {
520
+ type: "text",
521
+ text: `Error: Collection exists for '${absolutePath}' but statistics could not be retrieved from the vector database.\n\n` +
522
+ `This may indicate:\n` +
523
+ ` - Collection is not loaded or in an invalid state\n` +
524
+ ` - Vector database connectivity issues\n` +
525
+ `\n` +
526
+ `Recommended actions:\n` +
527
+ ` 1. Try searching again in a moment\n` +
528
+ ` 2. If the problem persists, re-index the codebase:\n` +
529
+ ` index_codebase(path='${absolutePath}', force=true)\n` +
530
+ ` 3. Check your vector database connection settings`,
531
+ },
532
+ ],
533
+ isError: true,
534
+ };
535
+ }
536
+ }
537
+ catch (error) {
538
+ // Unexpected error from getCollectionStats (network failure, auth error, etc.)
539
+ console.error(`[SEARCH] Failed to retrieve collection stats during recovery:`, error);
540
+ return {
541
+ content: [
542
+ {
543
+ type: "text",
544
+ text: `Error: Failed to sync codebase '${absolutePath}' from vector database.\n\n` +
545
+ `Error: ${error instanceof Error ? error.message : String(error)}\n\n` +
546
+ `This may indicate:\n` +
547
+ ` - Network connectivity issues with the vector database\n` +
548
+ ` - Authentication or permission problems\n` +
549
+ ` - Vector database service unavailable\n` +
550
+ `\n` +
551
+ `Recommended actions:\n` +
552
+ ` 1. Check your MILVUS_ADDRESS and MILVUS_TOKEN settings\n` +
553
+ ` 2. Verify network connectivity to the database\n` +
554
+ ` 3. Check the logs above for detailed error information\n` +
555
+ ` 4. Try re-indexing: index_codebase(path='${absolutePath}', force=true)`,
556
+ },
557
+ ],
558
+ isError: true,
559
+ };
560
+ }
561
+ }
562
+ // Use the combined check: either in snapshot OR has actual collection
563
+ const isIndexed = isIndexedInSnapshot || hasVectorCollection;
424
564
  if (!isIndexed && !isIndexing) {
425
565
  return {
426
566
  content: [
@@ -445,7 +585,7 @@ export class ToolHandlers {
445
585
  console.log(`[SEARCH] 🧠 Using embedding provider: ${embeddingProvider.getProvider()} for search`);
446
586
  console.log(`[SEARCH] 🔍 Generating embeddings for query using ${embeddingProvider.getProvider()}...`);
447
587
  // Build filter expression from extensionFilter list
448
- let filterExpr = undefined;
588
+ let filterExpr;
449
589
  if (Array.isArray(extensionFilter) && extensionFilter.length > 0) {
450
590
  const cleaned = extensionFilter
451
591
  .filter((v) => typeof v === "string")
@@ -467,7 +607,7 @@ export class ToolHandlers {
467
607
  filterExpr = `fileExtension in [${quoted}]`;
468
608
  }
469
609
  // Search in the specified codebase
470
- const searchResults = await this.context.semanticSearch(query, Math.min(resultLimit, 50), 0.3, filterExpr);
610
+ const searchResults = await searchContext.semanticSearch(query, Math.min(resultLimit, 50), 0.3, filterExpr);
471
611
  console.log(`[SEARCH] ✅ Search completed! Found ${searchResults.length} results using ${embeddingProvider.getProvider()} embeddings`);
472
612
  if (searchResults.length === 0) {
473
613
  let noResultsMessage = `No results found for query: "${query}" in codebase '${absolutePath}'`;
@@ -542,26 +682,26 @@ export class ToolHandlers {
542
682
  }
543
683
  async handleClearIndex(args) {
544
684
  const { path: codebasePath } = args;
545
- if (this.snapshotManager.getIndexedCodebases().length === 0 &&
546
- this.snapshotManager.getIndexingCodebases().length === 0) {
685
+ if (!codebasePath) {
547
686
  return {
548
687
  content: [
549
688
  {
550
689
  type: "text",
551
- text: "No codebases are currently indexed or being indexed.",
690
+ text: "Error: Path is required for clear_index operation.",
552
691
  },
553
692
  ],
693
+ isError: true,
554
694
  };
555
695
  }
556
- if (!codebasePath) {
696
+ if (this.snapshotManager.getIndexedCodebases().length === 0 &&
697
+ this.snapshotManager.getIndexingCodebases().length === 0) {
557
698
  return {
558
699
  content: [
559
700
  {
560
701
  type: "text",
561
- text: "Error: Path is required for clearing index.",
702
+ text: "No codebases are currently indexed or being indexed.",
562
703
  },
563
704
  ],
564
- isError: true,
565
705
  };
566
706
  }
567
707
  try {
@@ -717,19 +857,21 @@ export class ToolHandlers {
717
857
  let statusMessage = "";
718
858
  switch (status) {
719
859
  case "indexed":
720
- if (info && info.status === "indexed") {
860
+ if (info && "indexedFiles" in info) {
861
+ const indexedInfo = info;
721
862
  statusMessage = `✅ Codebase '${absolutePath}' is fully indexed and ready for search.`;
722
- statusMessage += `\n📊 Statistics: ${info.indexedFiles} files, ${info.totalChunks} chunks`;
723
- statusMessage += `\n📅 Status: ${info.indexStatus}`;
724
- statusMessage += `\n🕐 Last updated: ${new Date(info.lastUpdated).toLocaleString()}`;
863
+ statusMessage += `\n📊 Statistics: ${indexedInfo.indexedFiles} files, ${indexedInfo.totalChunks} chunks`;
864
+ statusMessage += `\n📅 Status: ${indexedInfo.indexStatus}`;
865
+ statusMessage += `\n🕐 Last updated: ${new Date(indexedInfo.lastUpdated).toLocaleString()}`;
725
866
  }
726
867
  else {
727
868
  statusMessage = `✅ Codebase '${absolutePath}' is fully indexed and ready for search.`;
728
869
  }
729
870
  break;
730
871
  case "indexing":
731
- if (info && info.status === "indexing") {
732
- const progressPercentage = info.indexingPercentage || 0;
872
+ if (info && "indexingPercentage" in info) {
873
+ const indexingInfo = info;
874
+ const progressPercentage = indexingInfo.indexingPercentage || 0;
733
875
  statusMessage = `🔄 Codebase '${absolutePath}' is currently being indexed. Progress: ${progressPercentage.toFixed(1)}%`;
734
876
  // Add more detailed status based on progress
735
877
  if (progressPercentage < 10) {
@@ -739,20 +881,21 @@ export class ToolHandlers {
739
881
  statusMessage +=
740
882
  " (Processing files and generating embeddings...)";
741
883
  }
742
- statusMessage += `\n🕐 Last updated: ${new Date(info.lastUpdated).toLocaleString()}`;
884
+ statusMessage += `\n🕐 Last updated: ${new Date(indexingInfo.lastUpdated).toLocaleString()}`;
743
885
  }
744
886
  else {
745
887
  statusMessage = `🔄 Codebase '${absolutePath}' is currently being indexed.`;
746
888
  }
747
889
  break;
748
890
  case "indexfailed":
749
- if (info && info.status === "indexfailed") {
891
+ if (info && "errorMessage" in info) {
892
+ const failedInfo = info;
750
893
  statusMessage = `❌ Codebase '${absolutePath}' indexing failed.`;
751
- statusMessage += `\n🚨 Error: ${info.errorMessage}`;
752
- if (info.lastAttemptedPercentage !== undefined) {
753
- statusMessage += `\n📊 Failed at: ${info.lastAttemptedPercentage.toFixed(1)}% progress`;
894
+ statusMessage += `\n🚨 Error: ${failedInfo.errorMessage}`;
895
+ if (failedInfo.lastAttemptedPercentage !== undefined) {
896
+ statusMessage += `\n📊 Failed at: ${failedInfo.lastAttemptedPercentage.toFixed(1)}% progress`;
754
897
  }
755
- statusMessage += `\n🕐 Failed at: ${new Date(info.lastUpdated).toLocaleString()}`;
898
+ statusMessage += `\n🕐 Failed at: ${new Date(failedInfo.lastUpdated).toLocaleString()}`;
756
899
  statusMessage += `\n💡 You can retry indexing by running the index_codebase command again.`;
757
900
  }
758
901
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../src/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EACL,wBAAwB,EACxB,OAAO,GAER,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,eAAe,GAChB,MAAM,YAAY,CAAC;AA0BpB,MAAM,OAAO,YAAY;IAQvB,YAAY,OAAgB,EAAE,eAAgC;QANtD,iBAAY,GAAyB,IAAI,GAAG,EAAE,CAAC;QAE/C,kBAAa,GACnB,IAAI,CAAC;QAIL,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,kCAAkC,IAAI,CAAC,gBAAgB,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,qBAAqB,CAAC,YAAoB;QAChD,gEAAgE;QAChE,MAAM,IAAI,GAAG,MAAM;aAChB,UAAU,CAAC,QAAQ,CAAC;aACpB,MAAM,CAAC,YAAY,CAAC;aACpB,MAAM,CAAC,KAAK,CAAC;aACb,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpB,OAAO,YAAY,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,YAAoB;QAC5C,IAAI,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACxC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAE,CAAC;QAC9C,CAAC;QAED,MAAM,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;QAC7D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;YAC1B,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;YAC1C,cAAc,EAAE,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE;SACrD,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CACT,qCAAqC,YAAY,eAAe,WAAW,EAAE,CAC9E,CAAC;QACF,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAY,OAAO;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;;OAGG;IACI,sBAAsB,CAAC,YAAoB,EAAE,OAAgB;QAClE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,6BAA6B;QACzC,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CACT,mEAAmE,CACpE,CAAC;YAEF,iDAAiD;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAElD,wDAAwD;YACxD,MAAM,WAAW,GAAG,MAAM,QAAQ,CAAC,eAAe,EAAE,CAAC;YAErD,OAAO,CAAC,GAAG,CACT,yBAAyB,WAAW,CAAC,MAAM,8BAA8B,CAC1E,CAAC;YAEF,IAAI,WAAW,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;gBAC5D,yDAAyD;gBACzD,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC;gBAClE,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,GAAG,CACT,4BAA4B,cAAc,CAAC,MAAM,8CAA8C,CAChG,CAAC;oBACF,KAAK,MAAM,YAAY,IAAI,cAAc,EAAE,CAAC;wBAC1C,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;wBACzD,OAAO,CAAC,GAAG,CACT,0CAA0C,YAAY,EAAE,CACzD,CAAC;oBACJ,CAAC;oBACD,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;oBAC5C,OAAO,CAAC,GAAG,CACT,6DAA6D,CAC9D,CAAC;gBACJ,CAAC;gBACD,OAAO;YACT,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;YAEzC,0CAA0C;YAC1C,KAAK,MAAM,cAAc,IAAI,WAAW,EAAE,CAAC;gBACzC,IAAI,CAAC;oBACH,sGAAsG;oBACtG,IACE,CAAC,cAAc,CAAC,UAAU,CAAC,cAAc,CAAC;wBAC1C,CAAC,cAAc,CAAC,UAAU,CAAC,qBAAqB,CAAC,EACjD,CAAC;wBACD,OAAO,CAAC,GAAG,CACT,kDAAkD,cAAc,EAAE,CACnE,CAAC;wBACF,SAAS;oBACX,CAAC;oBAED,OAAO,CAAC,GAAG,CAAC,wCAAwC,cAAc,EAAE,CAAC,CAAC;oBAEtE,2CAA2C;oBAC3C,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,KAAK,CAClC,cAAc,EACd,EAAE,EAAE,kCAAkC;oBACtC,CAAC,UAAU,CAAC,EAAE,4BAA4B;oBAC1C,CAAC,CACF,CAAC;oBAEF,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAClC,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;wBAC/B,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC;wBAE3C,IAAI,aAAa,EAAE,CAAC;4BAClB,IAAI,CAAC;gCACH,yCAAyC;gCACzC,gEAAgE;gCAChE,yCAAyC;gCACzC,MAAM,QAAQ,GACZ,OAAO,aAAa,KAAK,QAAQ;oCAC/B,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC;oCAC3B,CAAC,CAAC,aAAa,CAAC;gCACpB,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAC;gCAE3C,IAAI,YAAY,IAAI,OAAO,YAAY,KAAK,QAAQ,EAAE,CAAC;oCACrD,OAAO,CAAC,GAAG,CACT,wCAAwC,YAAY,mBAAmB,cAAc,EAAE,CACxF,CAAC;oCACF,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;gCACnC,CAAC;qCAAM,CAAC;oCACN,OAAO,CAAC,IAAI,CACV,sEAAsE,cAAc,EAAE,CACvF,CAAC;gCACJ,CAAC;4BACH,CAAC;4BAAC,OAAO,UAAU,EAAE,CAAC;gCACpB,OAAO,CAAC,IAAI,CACV,iEAAiE,cAAc,GAAG,EAClF,UAAU,CACX,CAAC;4BACJ,CAAC;wBACH,CAAC;6BAAM,CAAC;4BACN,OAAO,CAAC,IAAI,CACV,qDAAqD,cAAc,EAAE,CACtE,CAAC;wBACJ,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,OAAO,CAAC,GAAG,CACT,+BAA+B,cAAc,WAAW,CACzD,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,OAAO,eAAe,EAAE,CAAC;oBACzB,OAAO,CAAC,IAAI,CACV,8CAA8C,cAAc,GAAG,EAC/D,MAAM,CAAC,eAAe,CAAC,CACxB,CAAC;oBACF,gCAAgC;gBAClC,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CACT,yBAAyB,cAAc,CAAC,IAAI,2BAA2B,CACxE,CAAC;YAEF,8BAA8B;YAC9B,MAAM,cAAc,GAAG,IAAI,GAAG,CAC5B,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAC3C,CAAC;YACF,OAAO,CAAC,GAAG,CACT,yBAAyB,cAAc,CAAC,IAAI,8BAA8B,CAC3E,CAAC;YAEF,IAAI,UAAU,GAAG,KAAK,CAAC;YAEvB,qFAAqF;YACrF,MAAM,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;YAEtE,mDAAmD;YACnD,uFAAuF;YACvF,KAAK,MAAM,aAAa,IAAI,cAAc,EAAE,CAAC;gBAC3C,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,aAAa,CAAC,EAAE,CAAC;oBACvC,mDAAmD;oBACnD,IAAI,iBAAiB,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;wBAC9C,OAAO,CAAC,GAAG,CACT,wCAAwC,aAAa,uBAAuB,CAC7E,CAAC;wBACF,SAAS;oBACX,CAAC;oBAED,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,aAAa,CAAC,CAAC;oBAC1D,UAAU,GAAG,IAAI,CAAC;oBAClB,OAAO,CAAC,GAAG,CACT,yDAAyD,aAAa,EAAE,CACzE,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,wFAAwF;YACxF,OAAO,CAAC,GAAG,CACT,6FAA6F,CAC9F,CAAC;YAEF,IAAI,UAAU,EAAE,CAAC;gBACf,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC;YACvE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CACT,2DAA2D,CAC5D,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;QAClE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,oDAAoD,EACpD,MAAM,CAAC,KAAK,CAAC,CACd,CAAC;YACF,gEAAgE;QAClE,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,mBAAmB,CAAC,IAAuB;QACtD,MAAM,EACJ,IAAI,EAAE,YAAY,EAClB,KAAK,EACL,QAAQ,EACR,gBAAgB,EAChB,cAAc,GACf,GAAG,IAAI,CAAC;QACT,MAAM,YAAY,GAAG,KAAK,IAAI,KAAK,CAAC;QACpC,MAAM,YAAY,GAAG,QAAQ,IAAI,KAAK,CAAC,CAAC,iBAAiB;QACzD,MAAM,oBAAoB,GAAG,gBAAgB,IAAI,EAAE,CAAC;QACpD,MAAM,oBAAoB,GAAG,cAAc,IAAI,EAAE,CAAC;QAElD,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;YAE3C,8BAA8B;YAC9B,IAAI,YAAY,KAAK,KAAK,IAAI,YAAY,KAAK,WAAW,EAAE,CAAC;gBAC3D,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,iCAAiC,YAAY,kCAAkC;yBACtF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YACD,kEAAkE;YAClE,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAEtD,uBAAuB;YACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gBAAgB,YAAY,sCAAsC,YAAY,GAAG;yBACxF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,4BAA4B;YAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gBAAgB,YAAY,sBAAsB;yBACzD;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,4BAA4B;YAC5B,IAAI,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;gBACvE,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,aAAa,YAAY,2EAA2E;yBAC3G;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,oDAAoD;YACpD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAC5D,IACE,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC;gBACjE,CAAC,MAAM,cAAc,CAAC,QAAQ,EAAE,CAAC,EACjC,CAAC;gBACD,OAAO,CAAC,IAAI,CACV,2DAA2D,YAAY,EAAE,CAC1E,CAAC;YACJ,CAAC;YAED,kDAAkD;YAClD,IACE,CAAC,YAAY;gBACb,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EACjE,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,aAAa,YAAY,mDAAmD;yBACnF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,8DAA8D;YAC9D,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBACtE,OAAO,CAAC,GAAG,CACT,gCAAgC,YAAY,qCAAqC,CAClF,CAAC;oBACF,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;gBAC3D,CAAC;gBACD,IAAI,MAAM,cAAc,CAAC,QAAQ,EAAE,EAAE,CAAC;oBACpC,OAAO,CAAC,GAAG,CACT,0CAA0C,YAAY,GAAG,CAC1D,CAAC;oBACF,MAAM,cAAc,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBAChD,CAAC;YACH,CAAC;YAED,qDAAqD;YACrD,IAAI,CAAC;gBACH,OAAO,CAAC,GAAG,CACT,iEAAiE,CAClE,CAAC;gBACF,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,OAAO;qBAC3C,iBAAiB,EAAE;qBACnB,oBAAoB,EAAE,CAAC;gBAE1B,IAAI,CAAC,mBAAmB,EAAE,CAAC;oBACzB,OAAO,CAAC,KAAK,CACX,4DAA4D,YAAY,EAAE,CAC3E,CAAC;oBAEF,0EAA0E;oBAC1E,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,wBAAwB;6BAC/B;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBAED,OAAO,CAAC,GAAG,CACT,gEAAgE,CACjE,CAAC;YACJ,CAAC;YAAC,OAAO,eAAe,EAAE,CAAC;gBACzB,0CAA0C;gBAC1C,OAAO,CAAC,KAAK,CACX,6DAA6D,EAC7D,eAAe,CAChB,CAAC;gBACF,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,yCAAyC,MAAM,CAAC,eAAe,CAAC,EAAE;yBACzE;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,oCAAoC;YACpC,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CACT,8BAA8B,oBAAoB,CAAC,MAAM,uBAAuB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClH,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,mBAAmB,CAAC,oBAAoB,CAAC,CAAC;YACzD,CAAC;YAED,8EAA8E;YAC9E,IAAI,oBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,OAAO,CAAC,GAAG,CACT,4BAA4B,oBAAoB,CAAC,MAAM,4BAA4B,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACrH,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,oBAAoB,CAAC,CAAC;YAC7D,CAAC;YAED,yDAAyD;YACzD,MAAM,aAAa,GACjB,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACvD,IAAI,aAAa,KAAK,aAAa,EAAE,CAAC;gBACpC,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CACrD,YAAY,CACN,CAAC;gBACT,OAAO,CAAC,GAAG,CACT,wFAAwF,UAAU,EAAE,YAAY,IAAI,eAAe,EAAE,CACtI,CAAC;YACJ,CAAC;YAED,uDAAuD;YACvD,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;YAC1D,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;YAE5C,sCAAsC;YACtC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEhC,kDAAkD;YAClD,IAAI,CAAC,uBAAuB,CAAC,YAAY,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;YAEvE,MAAM,QAAQ,GACZ,YAAY,KAAK,YAAY;gBAC3B,CAAC,CAAC,uBAAuB,YAAY,oCAAoC,YAAY,GAAG;gBACxF,CAAC,CAAC,EAAE,CAAC;YAET,MAAM,aAAa,GACjB,oBAAoB,CAAC,MAAM,GAAG,CAAC;gBAC7B,CAAC,CAAC,WAAW,oBAAoB,CAAC,MAAM,uBAAuB,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBAChG,CAAC,CAAC,EAAE,CAAC;YAET,MAAM,UAAU,GACd,oBAAoB,CAAC,MAAM,GAAG,CAAC;gBAC7B,CAAC,CAAC,WAAW,oBAAoB,CAAC,MAAM,4BAA4B,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACrG,CAAC,CAAC,EAAE,CAAC;YAET,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,6CAA6C,YAAY,WAAW,YAAY,CAAC,WAAW,EAAE,aAAa,QAAQ,GAAG,aAAa,GAAG,UAAU,+JAA+J;qBACtT;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uDAAuD;YACvD,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;YAEtD,6DAA6D;YAC7D,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,4BAA4B,MAAM,CAAC,KAAK,CAAC,EAAE;qBAClD;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB,CACnC,YAAoB,EACpB,YAAqB,EACrB,YAAoB;QAEpB,MAAM,YAAY,GAAG,YAAY,CAAC;QAClC,IAAI,YAAY,GAAG,CAAC,CAAC,CAAC,4BAA4B;QAElD,IAAI,CAAC;YACH,OAAO,CAAC,GAAG,CACT,wDAAwD,YAAY,EAAE,CACvE,CAAC;YAEF,iFAAiF;YACjF,IAAI,YAAY,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CACT,8FAA8F,CAC/F,CAAC;YACJ,CAAC;YAED,kDAAkD;YAClD,MAAM,kBAAkB,GAAG,IAAI,CAAC,OAAO,CAAC;YACxC,IAAI,YAAY,KAAK,KAAK,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CACV,wCAAwC,YAAY,2CAA2C,CAChG,CAAC;YACJ,CAAC;YAED,8EAA8E;YAC9E,MAAM,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;YAEzD,iGAAiG;YACjG,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;YACrE,MAAM,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;YAC9D,OAAO,CAAC,GAAG,CACT,6CAA6C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACzE,CAAC;YACF,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;YACxE,MAAM,YAAY,CAAC,UAAU,EAAE,CAAC;YAEhC,0EAA0E;YAC1E,MAAM,kBAAkB,CAAC,qBAAqB,CAAC,YAAY,CAAC,CAAC;YAC7D,MAAM,cAAc,GAAG,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;YAC9D,kBAAkB,CAAC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YACjE,IAAI,kBAAkB,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;gBACxC,kBAAkB,CAAC,eAAe,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YACnE,CAAC;YAED,OAAO,CAAC,GAAG,CACT,6CAA6C,YAAY,kBAAkB,YAAY,EAAE,CAC1F,CAAC;YAEF,qDAAqD;YACrD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CACT,mDAAmD,iBAAiB,CAAC,WAAW,EAAE,oBAAoB,iBAAiB,CAAC,YAAY,EAAE,EAAE,CACzI,CAAC;YAEF,oEAAoE;YACpE,OAAO,CAAC,GAAG,CACT,8DAA8D,CAC/D,CAAC;YACF,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,aAAa,CAClD,YAAY,EACZ,CAAC,QAAQ,EAAE,EAAE;gBACX,uDAAuD;gBACvD,IAAI,CAAC,eAAe,CAAC,mBAAmB,CACtC,YAAY,EACZ,QAAQ,CAAC,UAAU,CACpB,CAAC;gBAEF,2EAA2E;gBAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC/B,IAAI,WAAW,GAAG,YAAY,IAAI,IAAI,EAAE,CAAC;oBACvC,qBAAqB;oBACrB,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;oBAC5C,YAAY,GAAG,WAAW,CAAC;oBAC3B,OAAO,CAAC,GAAG,CACT,oDAAoD,QAAQ,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CACtF,CAAC;gBACJ,CAAC;gBAED,OAAO,CAAC,GAAG,CACT,gCAAgC,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,UAAU,MAAM,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,GAAG,CACnH,CAAC;YACJ,CAAC,CACF,CAAC;YACF,OAAO,CAAC,GAAG,CACT,gEAAgE,KAAK,CAAC,YAAY,aAAa,KAAK,CAAC,WAAW,EAAE,CACnH,CAAC;YAEF,0DAA0D;YAC1D,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAC7D,IAAI,CAAC,aAAa,GAAG;gBACnB,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC;YAEF,8CAA8C;YAC9C,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;YAE5C,IAAI,OAAO,GAAG,sCAAsC,YAAY,WAAW,YAAY,CAAC,WAAW,EAAE,uBAAuB,KAAK,CAAC,YAAY,WAAW,KAAK,CAAC,WAAW,UAAU,CAAC;YACrL,IAAI,KAAK,CAAC,MAAM,KAAK,eAAe,EAAE,CAAC;gBACrC,OAAO,IAAI,6GAA6G,CAAC;YAC3H,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;QAC/C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CACX,gDAAgD,YAAY,GAAG,EAC/D,KAAK,CACN,CAAC;YAEF,kCAAkC;YAClC,MAAM,YAAY,GAChB,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,YAAY,CAAC,CAAC;YAEzD,uDAAuD;YACvD,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,sBAAsB,CACzC,YAAY,EACZ,YAAY,EACZ,YAAY,CACb,CAAC;YACF,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;YAE5C,iFAAiF;YACjF,OAAO,CAAC,KAAK,CACX,0CAA0C,YAAY,KAAK,YAAY,EAAE,CAC1E,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,IAAoB;QAChD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,KAAK,GAAG,EAAE,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QACxE,MAAM,WAAW,GAAG,KAAK,IAAI,EAAE,CAAC;QAEhC,IAAI,CAAC;YACH,0CAA0C;YAC1C,MAAM,IAAI,CAAC,6BAA6B,EAAE,CAAC;YAE3C,kEAAkE;YAClE,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAEtD,uBAAuB;YACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gBAAgB,YAAY,sCAAsC,YAAY,GAAG;yBACxF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,4BAA4B;YAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gBAAgB,YAAY,sBAAsB;yBACzD;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAEhC,qDAAqD;YACrD,uEAAuE;YACvE,iEAAiE;YACjE,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe;iBAC7C,mBAAmB,EAAE;iBACrB,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe;iBACpC,oBAAoB,EAAE;iBACtB,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1B,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YAC3D,MAAM,mBAAmB,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,CAAC;YAE3D,4EAA4E;YAC5E,EAAE;YACF,uBAAuB;YACvB,qDAAqD;YACrD,gEAAgE;YAChE,+DAA+D;YAC/D,0EAA0E;YAC1E,EAAE;YACF,YAAY;YACZ,8EAA8E;YAC9E,wEAAwE;YACxE,4DAA4D;YAC5D,IAAI,mBAAmB,IAAI,CAAC,mBAAmB,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC/D,OAAO,CAAC,GAAG,CACT,mCAAmC,YAAY,uCAAuC,CACvF,CAAC;gBAEF,IAAI,CAAC;oBACH,yDAAyD;oBACzD,qEAAqE;oBACrE,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;oBAEnE,IAAI,KAAK,EAAE,CAAC;wBACV,OAAO,CAAC,GAAG,CACT,mDAAmD,KAAK,CAAC,YAAY,WAAW,KAAK,CAAC,WAAW,SAAS,CAC3G,CAAC;wBACF,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,YAAY,EAAE;4BACpD,YAAY,EAAE,KAAK,CAAC,YAAY;4BAChC,WAAW,EAAE,KAAK,CAAC,WAAW;4BAC9B,MAAM,EAAE,WAAW;yBACpB,CAAC,CAAC;wBAEH,oCAAoC;wBACpC,IAAI,CAAC;4BACH,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;4BAC5C,OAAO,CAAC,GAAG,CACT,oDAAoD,YAAY,GAAG,CACpE,CAAC;wBACJ,CAAC;wBAAC,OAAO,SAAS,EAAE,CAAC;4BACnB,OAAO,CAAC,KAAK,CACX,gDAAgD,SAAS,EAAE,CAC5D,CAAC;4BACF,8DAA8D;wBAChE,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,+FAA+F;wBAC/F,2DAA2D;wBAC3D,OAAO;4BACL,OAAO,EAAE;gCACP;oCACE,IAAI,EAAE,MAAM;oCACZ,IAAI,EACF,iCAAiC,YAAY,uEAAuE;wCACpH,sBAAsB;wCACtB,uDAAuD;wCACvD,2CAA2C;wCAC3C,IAAI;wCACJ,wBAAwB;wCACxB,wCAAwC;wCACxC,wDAAwD;wCACxD,6BAA6B,YAAY,kBAAkB;wCAC3D,qDAAqD;iCACxD;6BACF;4BACD,OAAO,EAAE,IAAI;yBACd,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,+EAA+E;oBAC/E,OAAO,CAAC,KAAK,CACX,+DAA+D,EAC/D,KAAK,CACN,CAAC;oBAEF,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EACF,mCAAmC,YAAY,6BAA6B;oCAC5E,UAAU,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM;oCACtE,sBAAsB;oCACtB,4DAA4D;oCAC5D,6CAA6C;oCAC7C,2CAA2C;oCAC3C,IAAI;oCACJ,wBAAwB;oCACxB,4DAA4D;oCAC5D,oDAAoD;oCACpD,4DAA4D;oCAC5D,8CAA8C,YAAY,gBAAgB;6BAC7E;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,sEAAsE;YACtE,MAAM,SAAS,GAAG,mBAAmB,IAAI,mBAAmB,CAAC;YAE7D,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC9B,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,oBAAoB,YAAY,wEAAwE;yBAC/G;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,oDAAoD;YACpD,IAAI,qBAAqB,GAAG,EAAE,CAAC;YAC/B,IAAI,UAAU,EAAE,CAAC;gBACf,qBAAqB,GAAG,wJAAwJ,CAAC;YACnL,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,mCAAmC,YAAY,EAAE,CAAC,CAAC;YAC/D,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,GAAG,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CACT,6BAA6B,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CACxE,CAAC;YAEF,mDAAmD;YACnD,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CACT,yCAAyC,iBAAiB,CAAC,WAAW,EAAE,aAAa,CACtF,CAAC;YACF,OAAO,CAAC,GAAG,CACT,qDAAqD,iBAAiB,CAAC,WAAW,EAAE,KAAK,CAC1F,CAAC;YAEF,oDAAoD;YACpD,IAAI,UAA8B,CAAC;YACnC,IAAI,KAAK,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjE,MAAM,OAAO,GAAG,eAAe;qBAC5B,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;qBAC5C,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBAC5B,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACvC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,CAC5B,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CACrE,CAAC;gBACF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACvB,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAM;gCACZ,IAAI,EAAE,sDAAsD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,4CAA4C;6BAChI;yBACF;wBACD,OAAO,EAAE,IAAI;qBACd,CAAC;gBACJ,CAAC;gBACD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC/D,UAAU,GAAG,qBAAqB,MAAM,GAAG,CAAC;YAC9C,CAAC;YAED,mCAAmC;YACnC,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,cAAc,CACtD,KAAK,EACL,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,EACzB,GAAG,EACH,UAAU,CACX,CAAC;YAEF,OAAO,CAAC,GAAG,CACT,sCAAsC,aAAa,CAAC,MAAM,kBAAkB,iBAAiB,CAAC,WAAW,EAAE,aAAa,CACzH,CAAC;YAEF,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBAC/B,IAAI,gBAAgB,GAAG,gCAAgC,KAAK,kBAAkB,YAAY,GAAG,CAAC;gBAC9F,IAAI,UAAU,EAAE,CAAC;oBACf,gBAAgB,IAAI,+IAA+I,CAAC;gBACtK,CAAC;gBACD,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gBAAgB;yBACvB;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,iBAAiB;YACjB,MAAM,gBAAgB,GAAG,aAAa;iBACnC,GAAG,CAAC,CAAC,MAA4B,EAAE,KAAa,EAAE,EAAE;gBACnD,MAAM,QAAQ,GAAG,GAAG,MAAM,CAAC,YAAY,IAAI,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAChF,MAAM,OAAO,GAAG,eAAe,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBACtD,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAEjD,OAAO,CACL,GAAG,KAAK,GAAG,CAAC,mBAAmB,MAAM,CAAC,QAAQ,MAAM,YAAY,KAAK;oBACrE,gBAAgB,QAAQ,IAAI;oBAC5B,YAAY,KAAK,GAAG,CAAC,IAAI;oBACzB,uBAAuB,MAAM,CAAC,QAAQ,KAAK,OAAO,YAAY,CAC/D,CAAC;YACJ,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAAC;YAEd,IAAI,aAAa,GAAG,SAAS,aAAa,CAAC,MAAM,wBAAwB,KAAK,kBAAkB,YAAY,IAAI,qBAAqB,OAAO,gBAAgB,EAAE,CAAC;YAE/J,IAAI,UAAU,EAAE,CAAC;gBACf,aAAa,IAAI,iHAAiH,CAAC;YACrI,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,aAAa;qBACpB;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8CAA8C;YAC9C,4EAA4E;YAC5E,MAAM,YAAY,GAChB,OAAO,KAAK,KAAK,QAAQ;gBACvB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,KAAK,YAAY,KAAK;oBACtB,CAAC,CAAC,KAAK,CAAC,OAAO;oBACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEtB,IACE,YAAY,KAAK,wBAAwB;gBACzC,YAAY,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAC/C,CAAC;gBACD,+DAA+D;gBAC/D,qEAAqE;gBACrE,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,wBAAwB;yBAC/B;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,YAAY,uDAAuD;qBACnG;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,gBAAgB,CAAC,IAAoB;QAChD,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAEpC,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,oDAAoD;qBAC3D;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;QAED,IACE,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,MAAM,KAAK,CAAC;YACvD,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC,MAAM,KAAK,CAAC,EACxD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,sDAAsD;qBAC7D;iBACF;aACF,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,kEAAkE;YAClE,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAEtD,uBAAuB;YACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gBAAgB,YAAY,sCAAsC,YAAY,GAAG;yBACxF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,4BAA4B;YAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gBAAgB,YAAY,sBAAsB;yBACzD;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,qDAAqD;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe;iBACnC,mBAAmB,EAAE;iBACrB,QAAQ,CAAC,YAAY,CAAC,CAAC;YAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,eAAe;iBACpC,oBAAoB,EAAE;iBACtB,QAAQ,CAAC,YAAY,CAAC,CAAC;YAE1B,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC9B,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,oBAAoB,YAAY,oCAAoC;yBAC3E;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,8BAA8B,YAAY,EAAE,CAAC,CAAC;YAE1D,IAAI,CAAC;gBACH,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBAC5C,OAAO,CAAC,GAAG,CAAC,2CAA2C,YAAY,EAAE,CAAC,CAAC;YACzE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,MAAM,QAAQ,GAAG,mBAAmB,YAAY,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;gBACrE,OAAO,CAAC,KAAK,CAAC,WAAW,QAAQ,EAAE,CAAC,CAAC;gBACrC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,QAAQ;yBACf;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,uDAAuD;YACvD,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,YAAY,CAAC,CAAC;YAE5D,uDAAuD;YACvD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,qCAAqC;YACrC,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC;YAE5C,IAAI,UAAU,GAAG,kCAAkC,YAAY,GAAG,CAAC;YAEnE,MAAM,gBAAgB,GACpB,IAAI,CAAC,eAAe,CAAC,mBAAmB,EAAE,CAAC,MAAM,CAAC;YACpD,MAAM,iBAAiB,GACrB,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC,MAAM,CAAC;YAErD,IAAI,gBAAgB,GAAG,CAAC,IAAI,iBAAiB,GAAG,CAAC,EAAE,CAAC;gBAClD,UAAU,IAAI,KAAK,gBAAgB,kCAAkC,iBAAiB,8BAA8B,CAAC;YACvH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,UAAU;qBACjB;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,8CAA8C;YAC9C,4EAA4E;YAC5E,MAAM,YAAY,GAChB,OAAO,KAAK,KAAK,QAAQ;gBACvB,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,KAAK,YAAY,KAAK;oBACtB,CAAC,CAAC,KAAK,CAAC,OAAO;oBACf,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAEtB,IACE,YAAY,KAAK,wBAAwB;gBACzC,YAAY,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAC/C,CAAC;gBACD,+DAA+D;gBAC/D,qEAAqE;gBACrE,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,wBAAwB;yBAC/B;qBACF;iBACF,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,yBAAyB,YAAY,EAAE;qBAC9C;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;IAEM,KAAK,CAAC,uBAAuB,CAAC,IAA2B;QAC9D,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAEpC,IAAI,CAAC;YACH,iCAAiC;YACjC,MAAM,YAAY,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;YAEtD,uBAAuB;YACvB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBACjC,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gBAAgB,YAAY,sCAAsC,YAAY,GAAG;yBACxF;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,4BAA4B;YAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YACvC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,gBAAgB,YAAY,sBAAsB;yBACzD;qBACF;oBACD,OAAO,EAAE,IAAI;iBACd,CAAC;YACJ,CAAC;YAED,gDAAgD;YAChD,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;YACpE,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;YAEhE,IAAI,aAAa,GAAG,EAAE,CAAC;YAEvB,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,SAAS;oBACZ,IAAI,IAAI,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;wBACnC,MAAM,WAAW,GAAG,IAAI,CAAC;wBACzB,aAAa,GAAG,eAAe,YAAY,0CAA0C,CAAC;wBACtF,aAAa,IAAI,oBAAoB,WAAW,CAAC,YAAY,WAAW,WAAW,CAAC,WAAW,SAAS,CAAC;wBACzG,aAAa,IAAI,gBAAgB,WAAW,CAAC,WAAW,EAAE,CAAC;wBAC3D,aAAa,IAAI,sBAAsB,IAAI,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC9F,CAAC;yBAAM,CAAC;wBACN,aAAa,GAAG,eAAe,YAAY,0CAA0C,CAAC;oBACxF,CAAC;oBACD,MAAM;gBAER,KAAK,UAAU;oBACb,IAAI,IAAI,IAAI,oBAAoB,IAAI,IAAI,EAAE,CAAC;wBACzC,MAAM,YAAY,GAAG,IAAI,CAAC;wBAC1B,MAAM,kBAAkB,GAAG,YAAY,CAAC,kBAAkB,IAAI,CAAC,CAAC;wBAChE,aAAa,GAAG,gBAAgB,YAAY,2CAA2C,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;wBAExH,6CAA6C;wBAC7C,IAAI,kBAAkB,GAAG,EAAE,EAAE,CAAC;4BAC5B,aAAa,IAAI,oCAAoC,CAAC;wBACxD,CAAC;6BAAM,IAAI,kBAAkB,GAAG,GAAG,EAAE,CAAC;4BACpC,aAAa;gCACX,kDAAkD,CAAC;wBACvD,CAAC;wBACD,aAAa,IAAI,sBAAsB,IAAI,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;oBAC/F,CAAC;yBAAM,CAAC;wBACN,aAAa,GAAG,gBAAgB,YAAY,+BAA+B,CAAC;oBAC9E,CAAC;oBACD,MAAM;gBAER,KAAK,aAAa;oBAChB,IAAI,IAAI,IAAI,cAAc,IAAI,IAAI,EAAE,CAAC;wBACnC,MAAM,UAAU,GAAG,IAAI,CAAC;wBACxB,aAAa,GAAG,eAAe,YAAY,oBAAoB,CAAC;wBAChE,aAAa,IAAI,eAAe,UAAU,CAAC,YAAY,EAAE,CAAC;wBAC1D,IAAI,UAAU,CAAC,uBAAuB,KAAK,SAAS,EAAE,CAAC;4BACrD,aAAa,IAAI,mBAAmB,UAAU,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC;wBAChG,CAAC;wBACD,aAAa,IAAI,mBAAmB,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC;wBACxF,aAAa,IAAI,0EAA0E,CAAC;oBAC9F,CAAC;yBAAM,CAAC;wBACN,aAAa,GAAG,eAAe,YAAY,4CAA4C,CAAC;oBAC1F,CAAC;oBACD,MAAM;gBAER,KAAK,WAAW,CAAC;gBACjB;oBACE,aAAa,GAAG,eAAe,YAAY,yEAAyE,CAAC;oBACrH,MAAM;YACV,CAAC;YAED,MAAM,QAAQ,GACZ,YAAY,KAAK,YAAY;gBAC3B,CAAC,CAAC,uBAAuB,YAAY,oCAAoC,YAAY,GAAG;gBACxF,CAAC,CAAC,EAAE,CAAC;YAET,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,aAAa,GAAG,QAAQ;qBAC/B;iBACF;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAM;wBACZ,IAAI,EAAE,kCAAkC,MAAM,CAAC,KAAK,CAAC,EAAE;qBACxD;iBACF;gBACD,OAAO,EAAE,IAAI;aACd,CAAC;QACJ,CAAC;IACH,CAAC;CACF"}
package/dist/index.js CHANGED
@@ -1,26 +1,25 @@
1
1
  #!/usr/bin/env node
2
2
  // CRITICAL: Redirect console outputs to stderr IMMEDIATELY to avoid interfering with MCP JSON protocol
3
3
  // Only MCP protocol messages should go to stdout
4
- const _originalConsoleLog = console.log;
5
- const _originalConsoleWarn = console.warn;
6
- console.log = (...args) => {
7
- process.stderr.write("[LOG] " + args.join(" ") + "\n");
8
- };
9
- console.warn = (...args) => {
10
- process.stderr.write("[WARN] " + args.join(" ") + "\n");
11
- };
12
4
  // console.error already goes to stderr by default
13
5
  import { Server } from "@modelcontextprotocol/sdk/server/index.js";
14
6
  import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
15
- import { ListToolsRequestSchema, CallToolRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
16
- import { Context } from "@mcampa/ai-context-core";
17
- import { MilvusVectorDatabase } from "@mcampa/ai-context-core";
7
+ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js";
8
+ import { Context, LibSQLVectorDatabase, MilvusVectorDatabase, QdrantVectorDatabase, VectorDatabaseFactory, VectorDatabaseType, } from "@mcampa/ai-context-core";
18
9
  // Import our modular components
19
10
  import { createMcpConfig, logConfigurationSummary, showHelpMessage, } from "./config.js";
20
11
  import { createEmbeddingInstance, logEmbeddingProviderInfo, } from "./embedding.js";
12
+ import { ToolHandlers } from "./handlers.js";
21
13
  import { SnapshotManager } from "./snapshot.js";
22
14
  import { SyncManager } from "./sync.js";
23
- import { ToolHandlers } from "./handlers.js";
15
+ const _originalConsoleLog = console.log;
16
+ const _originalConsoleWarn = console.warn;
17
+ console.log = (...args) => {
18
+ process.stderr.write(`[LOG] ${args.join(" ")}\n`);
19
+ };
20
+ console.warn = (...args) => {
21
+ process.stderr.write(`[WARN] ${args.join(" ")}\n`);
22
+ };
24
23
  class ContextMcpServer {
25
24
  constructor(config) {
26
25
  // Initialize MCP server
@@ -37,11 +36,72 @@ class ContextMcpServer {
37
36
  console.log(`[EMBEDDING] Using model: ${config.embeddingModel}`);
38
37
  const embedding = createEmbeddingInstance(config);
39
38
  logEmbeddingProviderInfo(config, embedding);
40
- // Initialize vector database
41
- const vectorDatabase = new MilvusVectorDatabase({
42
- address: config.milvusAddress,
43
- ...(config.milvusToken && { token: config.milvusToken }),
44
- });
39
+ // Initialize vector database based on configuration
40
+ // Auto-select FAISS if no external database is configured and FAISS is available
41
+ let vectorDatabase;
42
+ const hasExternalDb = config.milvusAddress || config.milvusToken || config.qdrantUrl;
43
+ const faissAvailable = VectorDatabaseFactory.isFaissAvailable();
44
+ if (!hasExternalDb && !config.vectorDbType) {
45
+ // Default to FAISS for zero-config local development (if available)
46
+ if (faissAvailable) {
47
+ console.log("[VECTORDB] No external vector database configured, using FAISS (local file-based)");
48
+ vectorDatabase = VectorDatabaseFactory.create(VectorDatabaseType.FAISS_LOCAL, {
49
+ storageDir: process.env.FAISS_STORAGE_DIR,
50
+ });
51
+ }
52
+ else {
53
+ // FAISS not available, require explicit configuration
54
+ console.error("[VECTORDB] ❌ No vector database configured and FAISS is not available.");
55
+ console.error("[VECTORDB] Please configure one of the following:");
56
+ console.error("[VECTORDB] - MILVUS_ADDRESS or MILVUS_TOKEN for Milvus");
57
+ console.error("[VECTORDB] - QDRANT_URL for Qdrant");
58
+ throw new Error("No vector database configured. FAISS native bindings are not available in this environment. " +
59
+ "Please set MILVUS_ADDRESS/MILVUS_TOKEN or QDRANT_URL to use an external vector database.");
60
+ }
61
+ }
62
+ else if (config.vectorDbType === "faiss-local") {
63
+ if (!faissAvailable) {
64
+ throw new Error("FAISS vector database was explicitly requested but native bindings are not available. " +
65
+ "Please use VECTOR_DB_TYPE=milvus or VECTOR_DB_TYPE=qdrant instead.");
66
+ }
67
+ console.log("[VECTORDB] Using FAISS (local file-based)");
68
+ vectorDatabase = VectorDatabaseFactory.create(VectorDatabaseType.FAISS_LOCAL, {
69
+ storageDir: process.env.FAISS_STORAGE_DIR,
70
+ });
71
+ }
72
+ else if (config.vectorDbType === "qdrant") {
73
+ // Parse Qdrant URL to get address for gRPC
74
+ const qdrantUrl = config.qdrantUrl || "http://localhost:6333";
75
+ const url = new URL(qdrantUrl.startsWith("http") ? qdrantUrl : `http://${qdrantUrl}`);
76
+ // For Qdrant gRPC, we need host:port format.
77
+ // Auto-convert default REST port (6333) to default gRPC port (6334).
78
+ let grpcPort = url.port || "6334";
79
+ if (grpcPort === "6333") {
80
+ console.log("[VECTORDB] Qdrant REST port 6333 detected, switching to gRPC port 6334.");
81
+ grpcPort = "6334";
82
+ }
83
+ const grpcAddress = `${url.hostname}:${grpcPort}`;
84
+ console.log(`[VECTORDB] Qdrant gRPC address: ${grpcAddress}`);
85
+ vectorDatabase = new QdrantVectorDatabase({
86
+ address: grpcAddress,
87
+ ...(config.qdrantApiKey && { apiKey: config.qdrantApiKey }),
88
+ });
89
+ }
90
+ else if (config.vectorDbType === "libsql") {
91
+ // LibSQL local database - pure JavaScript, no native bindings required
92
+ console.log("[VECTORDB] Using LibSQL (local file-based, pure JS)");
93
+ vectorDatabase = new LibSQLVectorDatabase({
94
+ storageDir: process.env.LIBSQL_STORAGE_DIR,
95
+ });
96
+ }
97
+ else {
98
+ // Default to Milvus
99
+ console.log(`[VECTORDB] Using Milvus: ${config.milvusAddress || "default"}`);
100
+ vectorDatabase = new MilvusVectorDatabase({
101
+ address: config.milvusAddress,
102
+ ...(config.milvusToken && { token: config.milvusToken }),
103
+ });
104
+ }
45
105
  // Initialize Claude Context
46
106
  this.context = new Context({
47
107
  embedding,