@danielsimonjr/memory-mcp 0.48.0 → 9.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +22 -0
- package/README.md +2000 -194
- package/dist/__tests__/file-path.test.js +7 -11
- package/dist/__tests__/knowledge-graph.test.js +3 -8
- package/dist/core/EntityManager.d.ts +266 -0
- package/dist/core/EntityManager.d.ts.map +1 -0
- package/dist/core/EntityManager.js +85 -133
- package/dist/core/GraphEventEmitter.d.ts +202 -0
- package/dist/core/GraphEventEmitter.d.ts.map +1 -0
- package/dist/core/GraphEventEmitter.js +346 -0
- package/dist/core/GraphStorage.d.ts +395 -0
- package/dist/core/GraphStorage.d.ts.map +1 -0
- package/dist/core/GraphStorage.js +643 -31
- package/dist/core/GraphTraversal.d.ts +141 -0
- package/dist/core/GraphTraversal.d.ts.map +1 -0
- package/dist/core/GraphTraversal.js +573 -0
- package/dist/core/HierarchyManager.d.ts +111 -0
- package/dist/core/HierarchyManager.d.ts.map +1 -0
- package/dist/{features → core}/HierarchyManager.js +14 -9
- package/dist/core/ManagerContext.d.ts +72 -0
- package/dist/core/ManagerContext.d.ts.map +1 -0
- package/dist/core/ManagerContext.js +118 -0
- package/dist/core/ObservationManager.d.ts +85 -0
- package/dist/core/ObservationManager.d.ts.map +1 -0
- package/dist/core/ObservationManager.js +51 -57
- package/dist/core/RelationManager.d.ts +131 -0
- package/dist/core/RelationManager.d.ts.map +1 -0
- package/dist/core/RelationManager.js +31 -7
- package/dist/core/SQLiteStorage.d.ts +354 -0
- package/dist/core/SQLiteStorage.d.ts.map +1 -0
- package/dist/core/SQLiteStorage.js +917 -0
- package/dist/core/StorageFactory.d.ts +45 -0
- package/dist/core/StorageFactory.d.ts.map +1 -0
- package/dist/core/StorageFactory.js +64 -0
- package/dist/core/TransactionManager.d.ts +464 -0
- package/dist/core/TransactionManager.d.ts.map +1 -0
- package/dist/core/TransactionManager.js +490 -13
- package/dist/core/index.d.ts +17 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +12 -2
- package/dist/features/AnalyticsManager.d.ts +44 -0
- package/dist/features/AnalyticsManager.d.ts.map +1 -0
- package/dist/features/AnalyticsManager.js +3 -2
- package/dist/features/ArchiveManager.d.ts +133 -0
- package/dist/features/ArchiveManager.d.ts.map +1 -0
- package/dist/features/ArchiveManager.js +221 -14
- package/dist/features/CompressionManager.d.ts +117 -0
- package/dist/features/CompressionManager.d.ts.map +1 -0
- package/dist/features/CompressionManager.js +189 -20
- package/dist/features/IOManager.d.ts +225 -0
- package/dist/features/IOManager.d.ts.map +1 -0
- package/dist/features/IOManager.js +1041 -0
- package/dist/features/StreamingExporter.d.ts +123 -0
- package/dist/features/StreamingExporter.d.ts.map +1 -0
- package/dist/features/StreamingExporter.js +203 -0
- package/dist/features/TagManager.d.ts +147 -0
- package/dist/features/TagManager.d.ts.map +1 -0
- package/dist/features/index.d.ts +12 -0
- package/dist/features/index.d.ts.map +1 -0
- package/dist/features/index.js +5 -6
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +10 -10
- package/dist/memory.jsonl +1 -26
- package/dist/search/BasicSearch.d.ts +51 -0
- package/dist/search/BasicSearch.d.ts.map +1 -0
- package/dist/search/BasicSearch.js +9 -3
- package/dist/search/BooleanSearch.d.ts +98 -0
- package/dist/search/BooleanSearch.d.ts.map +1 -0
- package/dist/search/BooleanSearch.js +156 -9
- package/dist/search/EmbeddingService.d.ts +178 -0
- package/dist/search/EmbeddingService.d.ts.map +1 -0
- package/dist/search/EmbeddingService.js +358 -0
- package/dist/search/FuzzySearch.d.ts +118 -0
- package/dist/search/FuzzySearch.d.ts.map +1 -0
- package/dist/search/FuzzySearch.js +241 -25
- package/dist/search/QueryCostEstimator.d.ts +111 -0
- package/dist/search/QueryCostEstimator.d.ts.map +1 -0
- package/dist/search/QueryCostEstimator.js +355 -0
- package/dist/search/RankedSearch.d.ts +71 -0
- package/dist/search/RankedSearch.d.ts.map +1 -0
- package/dist/search/RankedSearch.js +54 -6
- package/dist/search/SavedSearchManager.d.ts +79 -0
- package/dist/search/SavedSearchManager.d.ts.map +1 -0
- package/dist/search/SearchFilterChain.d.ts +120 -0
- package/dist/search/SearchFilterChain.d.ts.map +1 -0
- package/dist/search/SearchFilterChain.js +2 -4
- package/dist/search/SearchManager.d.ts +326 -0
- package/dist/search/SearchManager.d.ts.map +1 -0
- package/dist/search/SearchManager.js +148 -0
- package/dist/search/SearchSuggestions.d.ts +27 -0
- package/dist/search/SearchSuggestions.d.ts.map +1 -0
- package/dist/search/SearchSuggestions.js +1 -1
- package/dist/search/SemanticSearch.d.ts +149 -0
- package/dist/search/SemanticSearch.d.ts.map +1 -0
- package/dist/search/SemanticSearch.js +323 -0
- package/dist/search/TFIDFEventSync.d.ts +85 -0
- package/dist/search/TFIDFEventSync.d.ts.map +1 -0
- package/dist/search/TFIDFEventSync.js +133 -0
- package/dist/search/TFIDFIndexManager.d.ts +151 -0
- package/dist/search/TFIDFIndexManager.d.ts.map +1 -0
- package/dist/search/TFIDFIndexManager.js +232 -17
- package/dist/search/VectorStore.d.ts +235 -0
- package/dist/search/VectorStore.d.ts.map +1 -0
- package/dist/search/VectorStore.js +311 -0
- package/dist/search/index.d.ts +21 -0
- package/dist/search/index.d.ts.map +1 -0
- package/dist/search/index.js +12 -0
- package/dist/server/MCPServer.d.ts +21 -0
- package/dist/server/MCPServer.d.ts.map +1 -0
- package/dist/server/MCPServer.js +4 -4
- package/dist/server/responseCompressor.d.ts +94 -0
- package/dist/server/responseCompressor.d.ts.map +1 -0
- package/dist/server/responseCompressor.js +127 -0
- package/dist/server/toolDefinitions.d.ts +27 -0
- package/dist/server/toolDefinitions.d.ts.map +1 -0
- package/dist/server/toolDefinitions.js +188 -17
- package/dist/server/toolHandlers.d.ts +41 -0
- package/dist/server/toolHandlers.d.ts.map +1 -0
- package/dist/server/toolHandlers.js +467 -75
- package/dist/types/index.d.ts +13 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +1 -1
- package/dist/types/types.d.ts +1654 -0
- package/dist/types/types.d.ts.map +1 -0
- package/dist/types/types.js +9 -0
- package/dist/utils/compressedCache.d.ts +192 -0
- package/dist/utils/compressedCache.d.ts.map +1 -0
- package/dist/utils/compressedCache.js +309 -0
- package/dist/utils/compressionUtil.d.ts +214 -0
- package/dist/utils/compressionUtil.d.ts.map +1 -0
- package/dist/utils/compressionUtil.js +247 -0
- package/dist/utils/constants.d.ts +245 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +124 -0
- package/dist/utils/entityUtils.d.ts +321 -0
- package/dist/utils/entityUtils.d.ts.map +1 -0
- package/dist/utils/entityUtils.js +434 -4
- package/dist/utils/errors.d.ts +95 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +24 -0
- package/dist/utils/formatters.d.ts +145 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/{paginationUtils.js → formatters.js} +54 -3
- package/dist/utils/index.d.ts +23 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +69 -31
- package/dist/utils/indexes.d.ts +270 -0
- package/dist/utils/indexes.d.ts.map +1 -0
- package/dist/utils/indexes.js +526 -0
- package/dist/utils/logger.d.ts +24 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/operationUtils.d.ts +124 -0
- package/dist/utils/operationUtils.d.ts.map +1 -0
- package/dist/utils/operationUtils.js +175 -0
- package/dist/utils/parallelUtils.d.ts +72 -0
- package/dist/utils/parallelUtils.d.ts.map +1 -0
- package/dist/utils/parallelUtils.js +169 -0
- package/dist/utils/schemas.d.ts +374 -0
- package/dist/utils/schemas.d.ts.map +1 -0
- package/dist/utils/schemas.js +302 -2
- package/dist/utils/searchAlgorithms.d.ts +99 -0
- package/dist/utils/searchAlgorithms.d.ts.map +1 -0
- package/dist/utils/searchAlgorithms.js +167 -0
- package/dist/utils/searchCache.d.ts +108 -0
- package/dist/utils/searchCache.d.ts.map +1 -0
- package/dist/utils/taskScheduler.d.ts +290 -0
- package/dist/utils/taskScheduler.d.ts.map +1 -0
- package/dist/utils/taskScheduler.js +466 -0
- package/dist/workers/index.d.ts +12 -0
- package/dist/workers/index.d.ts.map +1 -0
- package/dist/workers/index.js +9 -0
- package/dist/workers/levenshteinWorker.d.ts +60 -0
- package/dist/workers/levenshteinWorker.d.ts.map +1 -0
- package/dist/workers/levenshteinWorker.js +98 -0
- package/package.json +17 -4
- package/dist/__tests__/edge-cases/edge-cases.test.js +0 -406
- package/dist/__tests__/integration/workflows.test.js +0 -449
- package/dist/__tests__/performance/benchmarks.test.js +0 -413
- package/dist/__tests__/unit/core/EntityManager.test.js +0 -334
- package/dist/__tests__/unit/core/GraphStorage.test.js +0 -205
- package/dist/__tests__/unit/core/RelationManager.test.js +0 -274
- package/dist/__tests__/unit/features/CompressionManager.test.js +0 -350
- package/dist/__tests__/unit/search/BasicSearch.test.js +0 -311
- package/dist/__tests__/unit/search/BooleanSearch.test.js +0 -432
- package/dist/__tests__/unit/search/FuzzySearch.test.js +0 -448
- package/dist/__tests__/unit/search/RankedSearch.test.js +0 -379
- package/dist/__tests__/unit/utils/levenshtein.test.js +0 -77
- package/dist/core/KnowledgeGraphManager.js +0 -423
- package/dist/features/BackupManager.js +0 -311
- package/dist/features/ExportManager.js +0 -305
- package/dist/features/ImportExportManager.js +0 -50
- package/dist/features/ImportManager.js +0 -328
- package/dist/memory-saved-searches.jsonl +0 -0
- package/dist/memory-tag-aliases.jsonl +0 -0
- package/dist/types/analytics.types.js +0 -6
- package/dist/types/entity.types.js +0 -7
- package/dist/types/import-export.types.js +0 -7
- package/dist/types/search.types.js +0 -7
- package/dist/types/tag.types.js +0 -6
- package/dist/utils/dateUtils.js +0 -89
- package/dist/utils/filterUtils.js +0 -155
- package/dist/utils/levenshtein.js +0 -62
- package/dist/utils/pathUtils.js +0 -115
- package/dist/utils/responseFormatter.js +0 -55
- package/dist/utils/tagUtils.js +0 -107
- package/dist/utils/tfidf.js +0 -90
- package/dist/utils/validationHelper.js +0 -99
- package/dist/utils/validationUtils.js +0 -109
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Graph Traversal
|
|
3
|
+
*
|
|
4
|
+
* Phase 4 Sprints 6-8: Graph traversal algorithms for knowledge graph analysis.
|
|
5
|
+
* Includes BFS, DFS, shortest path, all paths, connected components, and centrality.
|
|
6
|
+
*
|
|
7
|
+
* @module core/GraphTraversal
|
|
8
|
+
*/
|
|
9
|
+
import type { Relation, TraversalOptions, TraversalResult, PathResult, ConnectedComponentsResult, CentralityResult } from '../types/index.js';
|
|
10
|
+
import type { GraphStorage } from './GraphStorage.js';
|
|
11
|
+
/**
|
|
12
|
+
* Graph traversal algorithms for knowledge graph analysis.
|
|
13
|
+
*
|
|
14
|
+
* Provides BFS, DFS, shortest path finding, connected component detection,
|
|
15
|
+
* and centrality metrics for analyzing graph structure.
|
|
16
|
+
*/
|
|
17
|
+
export declare class GraphTraversal {
|
|
18
|
+
private storage;
|
|
19
|
+
constructor(storage: GraphStorage);
|
|
20
|
+
/**
|
|
21
|
+
* Get neighbors of a node based on traversal direction and filters.
|
|
22
|
+
*
|
|
23
|
+
* @param entityName - Entity to get neighbors for
|
|
24
|
+
* @param options - Traversal options
|
|
25
|
+
* @returns Array of neighbor entity names with their relations
|
|
26
|
+
*/
|
|
27
|
+
getNeighborsWithRelations(entityName: string, options?: TraversalOptions): Array<{
|
|
28
|
+
neighbor: string;
|
|
29
|
+
relation: Relation;
|
|
30
|
+
}>;
|
|
31
|
+
/**
|
|
32
|
+
* Breadth-First Search traversal starting from a given entity.
|
|
33
|
+
*
|
|
34
|
+
* @param startEntity - Entity name to start traversal from
|
|
35
|
+
* @param options - Traversal options
|
|
36
|
+
* @returns Traversal result with visited nodes, depths, and parent pointers
|
|
37
|
+
*/
|
|
38
|
+
bfs(startEntity: string, options?: TraversalOptions): TraversalResult;
|
|
39
|
+
/**
|
|
40
|
+
* Depth-First Search traversal starting from a given entity.
|
|
41
|
+
*
|
|
42
|
+
* @param startEntity - Entity name to start traversal from
|
|
43
|
+
* @param options - Traversal options
|
|
44
|
+
* @returns Traversal result with visited nodes, depths, and parent pointers
|
|
45
|
+
*/
|
|
46
|
+
dfs(startEntity: string, options?: TraversalOptions): TraversalResult;
|
|
47
|
+
/**
|
|
48
|
+
* Find the shortest path between two entities using BFS.
|
|
49
|
+
*
|
|
50
|
+
* @param source - Source entity name
|
|
51
|
+
* @param target - Target entity name
|
|
52
|
+
* @param options - Traversal options
|
|
53
|
+
* @returns PathResult if path exists, null otherwise
|
|
54
|
+
*/
|
|
55
|
+
findShortestPath(source: string, target: string, options?: TraversalOptions): Promise<PathResult | null>;
|
|
56
|
+
/**
|
|
57
|
+
* Reconstruct path from parent pointers.
|
|
58
|
+
*/
|
|
59
|
+
private reconstructPath;
|
|
60
|
+
/**
|
|
61
|
+
* Find all paths between two entities up to a maximum depth.
|
|
62
|
+
*
|
|
63
|
+
* Phase 9B: Supports cancellation via AbortSignal in options.
|
|
64
|
+
*
|
|
65
|
+
* @param source - Source entity name
|
|
66
|
+
* @param target - Target entity name
|
|
67
|
+
* @param maxDepth - Maximum path length (default: 5)
|
|
68
|
+
* @param options - Traversal options (includes signal for cancellation)
|
|
69
|
+
* @returns Array of PathResult objects for all found paths
|
|
70
|
+
* @throws {OperationCancelledError} If operation is cancelled via signal (Phase 9B)
|
|
71
|
+
*/
|
|
72
|
+
findAllPaths(source: string, target: string, maxDepth?: number, options?: TraversalOptions & {
|
|
73
|
+
signal?: AbortSignal;
|
|
74
|
+
}): Promise<PathResult[]>;
|
|
75
|
+
/**
|
|
76
|
+
* Find all connected components in the graph.
|
|
77
|
+
*
|
|
78
|
+
* Uses BFS to find all weakly connected components (treating the graph as undirected).
|
|
79
|
+
*
|
|
80
|
+
* @returns ConnectedComponentsResult with all components
|
|
81
|
+
*/
|
|
82
|
+
findConnectedComponents(): Promise<ConnectedComponentsResult>;
|
|
83
|
+
/**
|
|
84
|
+
* Calculate degree centrality for all entities.
|
|
85
|
+
*
|
|
86
|
+
* Degree centrality is the number of connections an entity has,
|
|
87
|
+
* normalized by the maximum possible connections.
|
|
88
|
+
*
|
|
89
|
+
* @param direction - Direction to count: 'in', 'out', or 'both' (default)
|
|
90
|
+
* @param topN - Number of top entities to return (default: 10)
|
|
91
|
+
* @returns CentralityResult with scores and top entities
|
|
92
|
+
*/
|
|
93
|
+
calculateDegreeCentrality(direction?: 'in' | 'out' | 'both', topN?: number): Promise<CentralityResult>;
|
|
94
|
+
/**
|
|
95
|
+
* Calculate betweenness centrality for all entities.
|
|
96
|
+
*
|
|
97
|
+
* Betweenness centrality measures how often a node appears on shortest paths
|
|
98
|
+
* between other nodes. Uses Brandes' algorithm for efficiency.
|
|
99
|
+
*
|
|
100
|
+
* @param options - Configuration options
|
|
101
|
+
* @param options.topN - Number of top entities to return (default: 10)
|
|
102
|
+
* @param options.chunkSize - Yield control every N vertices (default: 50)
|
|
103
|
+
* @param options.onProgress - Progress callback (0.0 to 1.0)
|
|
104
|
+
* @param options.approximate - Use approximation for faster results (default: false)
|
|
105
|
+
* @param options.sampleRate - Sample rate for approximation (default: 0.2)
|
|
106
|
+
* @returns CentralityResult with scores and top entities
|
|
107
|
+
*/
|
|
108
|
+
calculateBetweennessCentrality(options?: {
|
|
109
|
+
topN?: number;
|
|
110
|
+
chunkSize?: number;
|
|
111
|
+
onProgress?: (progress: number) => void;
|
|
112
|
+
approximate?: boolean;
|
|
113
|
+
sampleRate?: number;
|
|
114
|
+
}): Promise<CentralityResult>;
|
|
115
|
+
/**
|
|
116
|
+
* Sample entities randomly for approximation algorithms.
|
|
117
|
+
*
|
|
118
|
+
* @param entities - Array of entities to sample from
|
|
119
|
+
* @param sampleSize - Number of entities to sample
|
|
120
|
+
* @returns Array of sampled entities
|
|
121
|
+
*/
|
|
122
|
+
private sampleEntities;
|
|
123
|
+
/**
|
|
124
|
+
* Calculate PageRank centrality for all entities.
|
|
125
|
+
*
|
|
126
|
+
* PageRank measures importance based on incoming connections from
|
|
127
|
+
* other important nodes. Uses iterative power method.
|
|
128
|
+
*
|
|
129
|
+
* @param dampingFactor - Damping factor (default: 0.85)
|
|
130
|
+
* @param maxIterations - Maximum iterations (default: 100)
|
|
131
|
+
* @param tolerance - Convergence tolerance (default: 1e-6)
|
|
132
|
+
* @param topN - Number of top entities to return (default: 10)
|
|
133
|
+
* @returns CentralityResult with scores and top entities
|
|
134
|
+
*/
|
|
135
|
+
calculatePageRank(dampingFactor?: number, maxIterations?: number, tolerance?: number, topN?: number): Promise<CentralityResult>;
|
|
136
|
+
/**
|
|
137
|
+
* Get top N entities from a scores map.
|
|
138
|
+
*/
|
|
139
|
+
private getTopEntities;
|
|
140
|
+
}
|
|
141
|
+
//# sourceMappingURL=GraphTraversal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GraphTraversal.d.ts","sourceRoot":"","sources":["../../src/core/GraphTraversal.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAEV,QAAQ,EACR,gBAAgB,EAChB,eAAe,EACf,UAAU,EACV,yBAAyB,EACzB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAatD;;;;;GAKG;AACH,qBAAa,cAAc;IACb,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAIzC;;;;;;OAMG;IACH,yBAAyB,CACvB,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,gBAAqB,GAC7B,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,QAAQ,CAAA;KAAE,CAAC;IA4ClD;;;;;;OAMG;IACH,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,eAAe;IAwCzE;;;;;;OAMG;IACH,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,GAAE,gBAAqB,GAAG,eAAe;IA8CzE;;;;;;;OAOG;IACG,gBAAgB,CACpB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA6C7B;;OAEG;IACH,OAAO,CAAC,eAAe;IA2BvB;;;;;;;;;;;OAWG;IACG,YAAY,CAChB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,MAAU,EACpB,OAAO,GAAE,gBAAgB,GAAG;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAO,GACxD,OAAO,CAAC,UAAU,EAAE,CAAC;IAkExB;;;;;;OAMG;IACG,uBAAuB,IAAI,OAAO,CAAC,yBAAyB,CAAC;IA0CnE;;;;;;;;;OASG;IACG,yBAAyB,CAC7B,SAAS,GAAE,IAAI,GAAG,KAAK,GAAG,MAAe,EACzC,IAAI,GAAE,MAAW,GAChB,OAAO,CAAC,gBAAgB,CAAC;IA+B5B;;;;;;;;;;;;;OAaG;IACG,8BAA8B,CAClC,OAAO,GAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;QACxC,WAAW,CAAC,EAAE,OAAO,CAAC;QACtB,UAAU,CAAC,EAAE,MAAM,CAAC;KAChB,GACL,OAAO,CAAC,gBAAgB,CAAC;IAiH5B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAUtB;;;;;;;;;;;OAWG;IACG,iBAAiB,CACrB,aAAa,GAAE,MAAa,EAC5B,aAAa,GAAE,MAAY,EAC3B,SAAS,GAAE,MAAa,EACxB,IAAI,GAAE,MAAW,GAChB,OAAO,CAAC,gBAAgB,CAAC;IA0E5B;;OAEG;IACH,OAAO,CAAC,cAAc;CASvB"}
|