@nahisaho/yata-scale 1.8.5

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 (158) hide show
  1. package/README.md +66 -0
  2. package/dist/CacheManager.d.ts +107 -0
  3. package/dist/CacheManager.d.ts.map +1 -0
  4. package/dist/CacheManager.js +343 -0
  5. package/dist/CacheManager.js.map +1 -0
  6. package/dist/IndexManager.d.ts +103 -0
  7. package/dist/IndexManager.d.ts.map +1 -0
  8. package/dist/IndexManager.js +385 -0
  9. package/dist/IndexManager.js.map +1 -0
  10. package/dist/MigrationHelper.d.ts +91 -0
  11. package/dist/MigrationHelper.d.ts.map +1 -0
  12. package/dist/MigrationHelper.js +220 -0
  13. package/dist/MigrationHelper.js.map +1 -0
  14. package/dist/QueryCoordinator.d.ts +76 -0
  15. package/dist/QueryCoordinator.d.ts.map +1 -0
  16. package/dist/QueryCoordinator.js +298 -0
  17. package/dist/QueryCoordinator.js.map +1 -0
  18. package/dist/ShardManager.d.ts +48 -0
  19. package/dist/ShardManager.d.ts.map +1 -0
  20. package/dist/ShardManager.js +193 -0
  21. package/dist/ShardManager.js.map +1 -0
  22. package/dist/SyncController.d.ts +102 -0
  23. package/dist/SyncController.d.ts.map +1 -0
  24. package/dist/SyncController.js +286 -0
  25. package/dist/SyncController.js.map +1 -0
  26. package/dist/YataScaleManager.d.ts +75 -0
  27. package/dist/YataScaleManager.d.ts.map +1 -0
  28. package/dist/YataScaleManager.js +265 -0
  29. package/dist/YataScaleManager.js.map +1 -0
  30. package/dist/cache/CacheManager.d.ts +116 -0
  31. package/dist/cache/CacheManager.d.ts.map +1 -0
  32. package/dist/cache/CacheManager.js +286 -0
  33. package/dist/cache/CacheManager.js.map +1 -0
  34. package/dist/cache/InvalidationManager.d.ts +91 -0
  35. package/dist/cache/InvalidationManager.d.ts.map +1 -0
  36. package/dist/cache/InvalidationManager.js +155 -0
  37. package/dist/cache/InvalidationManager.js.map +1 -0
  38. package/dist/cache/L1Cache.d.ts +97 -0
  39. package/dist/cache/L1Cache.d.ts.map +1 -0
  40. package/dist/cache/L1Cache.js +225 -0
  41. package/dist/cache/L1Cache.js.map +1 -0
  42. package/dist/cache/L2Cache.d.ts +93 -0
  43. package/dist/cache/L2Cache.d.ts.map +1 -0
  44. package/dist/cache/L2Cache.js +248 -0
  45. package/dist/cache/L2Cache.js.map +1 -0
  46. package/dist/cache/L3Cache.d.ts +101 -0
  47. package/dist/cache/L3Cache.d.ts.map +1 -0
  48. package/dist/cache/L3Cache.js +229 -0
  49. package/dist/cache/L3Cache.js.map +1 -0
  50. package/dist/cache/index.d.ts +12 -0
  51. package/dist/cache/index.d.ts.map +1 -0
  52. package/dist/cache/index.js +11 -0
  53. package/dist/cache/index.js.map +1 -0
  54. package/dist/errors.d.ts +255 -0
  55. package/dist/errors.d.ts.map +1 -0
  56. package/dist/errors.js +515 -0
  57. package/dist/errors.js.map +1 -0
  58. package/dist/index/BPlusTreeIndex.d.ts +101 -0
  59. package/dist/index/BPlusTreeIndex.d.ts.map +1 -0
  60. package/dist/index/BPlusTreeIndex.js +310 -0
  61. package/dist/index/BPlusTreeIndex.js.map +1 -0
  62. package/dist/index/BloomFilter.d.ts +85 -0
  63. package/dist/index/BloomFilter.d.ts.map +1 -0
  64. package/dist/index/BloomFilter.js +215 -0
  65. package/dist/index/BloomFilter.js.map +1 -0
  66. package/dist/index/FullTextIndex.d.ts +87 -0
  67. package/dist/index/FullTextIndex.d.ts.map +1 -0
  68. package/dist/index/FullTextIndex.js +213 -0
  69. package/dist/index/FullTextIndex.js.map +1 -0
  70. package/dist/index/GraphIndex.d.ts +116 -0
  71. package/dist/index/GraphIndex.d.ts.map +1 -0
  72. package/dist/index/GraphIndex.js +308 -0
  73. package/dist/index/GraphIndex.js.map +1 -0
  74. package/dist/index/IndexManager.d.ts +105 -0
  75. package/dist/index/IndexManager.d.ts.map +1 -0
  76. package/dist/index/IndexManager.js +287 -0
  77. package/dist/index/IndexManager.js.map +1 -0
  78. package/dist/index/index.d.ts +12 -0
  79. package/dist/index/index.d.ts.map +1 -0
  80. package/dist/index/index.js +11 -0
  81. package/dist/index/index.js.map +1 -0
  82. package/dist/index.d.ts +12 -0
  83. package/dist/index.d.ts.map +1 -0
  84. package/dist/index.js +12 -0
  85. package/dist/index.js.map +1 -0
  86. package/dist/query/DistributedExecutor.d.ts +78 -0
  87. package/dist/query/DistributedExecutor.d.ts.map +1 -0
  88. package/dist/query/DistributedExecutor.js +232 -0
  89. package/dist/query/DistributedExecutor.js.map +1 -0
  90. package/dist/query/QueryCoordinator.d.ts +98 -0
  91. package/dist/query/QueryCoordinator.d.ts.map +1 -0
  92. package/dist/query/QueryCoordinator.js +246 -0
  93. package/dist/query/QueryCoordinator.js.map +1 -0
  94. package/dist/query/QueryPlanner.d.ts +88 -0
  95. package/dist/query/QueryPlanner.d.ts.map +1 -0
  96. package/dist/query/QueryPlanner.js +235 -0
  97. package/dist/query/QueryPlanner.js.map +1 -0
  98. package/dist/query/WorkerPool.d.ts +108 -0
  99. package/dist/query/WorkerPool.d.ts.map +1 -0
  100. package/dist/query/WorkerPool.js +195 -0
  101. package/dist/query/WorkerPool.js.map +1 -0
  102. package/dist/query/index.d.ts +11 -0
  103. package/dist/query/index.d.ts.map +1 -0
  104. package/dist/query/index.js +10 -0
  105. package/dist/query/index.js.map +1 -0
  106. package/dist/shard/GraphPartitionStrategy.d.ts +65 -0
  107. package/dist/shard/GraphPartitionStrategy.d.ts.map +1 -0
  108. package/dist/shard/GraphPartitionStrategy.js +208 -0
  109. package/dist/shard/GraphPartitionStrategy.js.map +1 -0
  110. package/dist/shard/HashPartitionStrategy.d.ts +56 -0
  111. package/dist/shard/HashPartitionStrategy.d.ts.map +1 -0
  112. package/dist/shard/HashPartitionStrategy.js +169 -0
  113. package/dist/shard/HashPartitionStrategy.js.map +1 -0
  114. package/dist/shard/RangePartitionStrategy.d.ts +63 -0
  115. package/dist/shard/RangePartitionStrategy.d.ts.map +1 -0
  116. package/dist/shard/RangePartitionStrategy.js +157 -0
  117. package/dist/shard/RangePartitionStrategy.js.map +1 -0
  118. package/dist/shard/Rebalancer.d.ts +70 -0
  119. package/dist/shard/Rebalancer.d.ts.map +1 -0
  120. package/dist/shard/Rebalancer.js +184 -0
  121. package/dist/shard/Rebalancer.js.map +1 -0
  122. package/dist/shard/ShardManager.d.ts +123 -0
  123. package/dist/shard/ShardManager.d.ts.map +1 -0
  124. package/dist/shard/ShardManager.js +353 -0
  125. package/dist/shard/ShardManager.js.map +1 -0
  126. package/dist/shard/ShardRouter.d.ts +102 -0
  127. package/dist/shard/ShardRouter.d.ts.map +1 -0
  128. package/dist/shard/ShardRouter.js +181 -0
  129. package/dist/shard/ShardRouter.js.map +1 -0
  130. package/dist/shard/index.d.ts +13 -0
  131. package/dist/shard/index.d.ts.map +1 -0
  132. package/dist/shard/index.js +12 -0
  133. package/dist/shard/index.js.map +1 -0
  134. package/dist/sync/ConflictResolver.d.ts +71 -0
  135. package/dist/sync/ConflictResolver.d.ts.map +1 -0
  136. package/dist/sync/ConflictResolver.js +214 -0
  137. package/dist/sync/ConflictResolver.js.map +1 -0
  138. package/dist/sync/SyncController.d.ts +150 -0
  139. package/dist/sync/SyncController.d.ts.map +1 -0
  140. package/dist/sync/SyncController.js +304 -0
  141. package/dist/sync/SyncController.js.map +1 -0
  142. package/dist/sync/VectorClock.d.ts +102 -0
  143. package/dist/sync/VectorClock.d.ts.map +1 -0
  144. package/dist/sync/VectorClock.js +189 -0
  145. package/dist/sync/VectorClock.js.map +1 -0
  146. package/dist/sync/WALManager.d.ts +120 -0
  147. package/dist/sync/WALManager.d.ts.map +1 -0
  148. package/dist/sync/WALManager.js +240 -0
  149. package/dist/sync/WALManager.js.map +1 -0
  150. package/dist/sync/index.d.ts +11 -0
  151. package/dist/sync/index.d.ts.map +1 -0
  152. package/dist/sync/index.js +10 -0
  153. package/dist/sync/index.js.map +1 -0
  154. package/dist/types.d.ts +323 -0
  155. package/dist/types.d.ts.map +1 -0
  156. package/dist/types.js +7 -0
  157. package/dist/types.js.map +1 -0
  158. package/package.json +86 -0
@@ -0,0 +1,308 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Graph Index
3
+ *
4
+ * Graph-specific indexes for efficient traversal
5
+ */
6
+ /**
7
+ * Graph index for efficient traversal operations
8
+ */
9
+ export class GraphIndex {
10
+ // Adjacency lists
11
+ outgoing = new Map();
12
+ incoming = new Map();
13
+ // Type indexes
14
+ byType = new Map();
15
+ // Edge storage
16
+ edges = new Map();
17
+ constructor() { }
18
+ /**
19
+ * Add an edge to the index
20
+ */
21
+ addEdge(edge) {
22
+ // Store edge
23
+ this.edges.set(edge.id, edge);
24
+ // Add to outgoing adjacency
25
+ if (!this.outgoing.has(edge.sourceId)) {
26
+ this.outgoing.set(edge.sourceId, new Map());
27
+ }
28
+ this.outgoing.get(edge.sourceId).set(edge.targetId, edge);
29
+ // Add to incoming adjacency
30
+ if (!this.incoming.has(edge.targetId)) {
31
+ this.incoming.set(edge.targetId, new Map());
32
+ }
33
+ this.incoming.get(edge.targetId).set(edge.sourceId, edge);
34
+ // Add to type index
35
+ if (!this.byType.has(edge.type)) {
36
+ this.byType.set(edge.type, new Set());
37
+ }
38
+ this.byType.get(edge.type).add(edge.id);
39
+ }
40
+ /**
41
+ * Add edge from relationship
42
+ */
43
+ addRelationship(rel) {
44
+ this.addEdge({
45
+ id: rel.id,
46
+ sourceId: rel.sourceId,
47
+ targetId: rel.targetId,
48
+ type: rel.type,
49
+ weight: rel.metadata.weight,
50
+ });
51
+ }
52
+ /**
53
+ * Remove an edge
54
+ */
55
+ removeEdge(edgeId) {
56
+ const edge = this.edges.get(edgeId);
57
+ if (!edge) {
58
+ return false;
59
+ }
60
+ // Remove from adjacency lists
61
+ this.outgoing.get(edge.sourceId)?.delete(edge.targetId);
62
+ this.incoming.get(edge.targetId)?.delete(edge.sourceId);
63
+ // Remove from type index
64
+ this.byType.get(edge.type)?.delete(edge.id);
65
+ // Remove from storage
66
+ this.edges.delete(edgeId);
67
+ return true;
68
+ }
69
+ /**
70
+ * Get outgoing edges from a node
71
+ */
72
+ getOutgoingEdges(nodeId) {
73
+ const edges = this.outgoing.get(nodeId);
74
+ return edges ? [...edges.values()] : [];
75
+ }
76
+ /**
77
+ * Get incoming edges to a node
78
+ */
79
+ getIncomingEdges(nodeId) {
80
+ const edges = this.incoming.get(nodeId);
81
+ return edges ? [...edges.values()] : [];
82
+ }
83
+ /**
84
+ * Get all edges for a node (both directions)
85
+ */
86
+ getAllEdges(nodeId) {
87
+ return [...this.getOutgoingEdges(nodeId), ...this.getIncomingEdges(nodeId)];
88
+ }
89
+ /**
90
+ * Get outgoing neighbors
91
+ */
92
+ getOutgoingNeighbors(nodeId) {
93
+ const edges = this.outgoing.get(nodeId);
94
+ return edges ? [...edges.keys()] : [];
95
+ }
96
+ /**
97
+ * Get incoming neighbors
98
+ */
99
+ getIncomingNeighbors(nodeId) {
100
+ const edges = this.incoming.get(nodeId);
101
+ return edges ? [...edges.keys()] : [];
102
+ }
103
+ /**
104
+ * Get neighbors within k hops
105
+ */
106
+ getNeighbors(nodeId, depth, direction = 'both') {
107
+ const visited = new Set();
108
+ const queue = [{ node: nodeId, dist: 0 }];
109
+ while (queue.length > 0) {
110
+ const { node, dist } = queue.shift();
111
+ if (dist > depth || visited.has(node)) {
112
+ continue;
113
+ }
114
+ visited.add(node);
115
+ if (dist < depth) {
116
+ const neighbors = [];
117
+ if (direction === 'outgoing' || direction === 'both') {
118
+ neighbors.push(...this.getOutgoingNeighbors(node));
119
+ }
120
+ if (direction === 'incoming' || direction === 'both') {
121
+ neighbors.push(...this.getIncomingNeighbors(node));
122
+ }
123
+ for (const neighbor of neighbors) {
124
+ if (!visited.has(neighbor)) {
125
+ queue.push({ node: neighbor, dist: dist + 1 });
126
+ }
127
+ }
128
+ }
129
+ }
130
+ visited.delete(nodeId);
131
+ return visited;
132
+ }
133
+ /**
134
+ * Find shortest path using BFS
135
+ */
136
+ findShortestPath(source, target, maxDepth = 10) {
137
+ if (source === target) {
138
+ return { nodes: [source], edges: [], length: 0, weight: 0 };
139
+ }
140
+ const visited = new Set();
141
+ const queue = [
142
+ { node: source, path: [source], edges: [], weight: 0 },
143
+ ];
144
+ while (queue.length > 0) {
145
+ const { node, path, edges, weight } = queue.shift();
146
+ if (path.length > maxDepth + 1) {
147
+ continue;
148
+ }
149
+ if (visited.has(node)) {
150
+ continue;
151
+ }
152
+ visited.add(node);
153
+ const outEdges = this.getOutgoingEdges(node);
154
+ for (const edge of outEdges) {
155
+ if (edge.targetId === target) {
156
+ return {
157
+ nodes: [...path, target],
158
+ edges: [...edges, edge.id],
159
+ length: path.length,
160
+ weight: weight + (edge.weight ?? 1),
161
+ };
162
+ }
163
+ if (!visited.has(edge.targetId)) {
164
+ queue.push({
165
+ node: edge.targetId,
166
+ path: [...path, edge.targetId],
167
+ edges: [...edges, edge.id],
168
+ weight: weight + (edge.weight ?? 1),
169
+ });
170
+ }
171
+ }
172
+ }
173
+ return null;
174
+ }
175
+ /**
176
+ * Find all paths (up to maxPaths)
177
+ */
178
+ *findAllPaths(source, target, maxDepth = 10, maxPaths = 100) {
179
+ let pathCount = 0;
180
+ const stack = [
181
+ { node: source, path: [source], edges: [], weight: 0, visited: new Set([source]) },
182
+ ];
183
+ while (stack.length > 0 && pathCount < maxPaths) {
184
+ const { node, path, edges, weight, visited } = stack.pop();
185
+ if (path.length > maxDepth + 1) {
186
+ continue;
187
+ }
188
+ if (node === target && path.length > 1) {
189
+ yield {
190
+ nodes: path,
191
+ edges,
192
+ length: path.length - 1,
193
+ weight,
194
+ };
195
+ pathCount++;
196
+ continue;
197
+ }
198
+ const outEdges = this.getOutgoingEdges(node);
199
+ for (const edge of outEdges) {
200
+ if (!visited.has(edge.targetId)) {
201
+ const newVisited = new Set(visited);
202
+ newVisited.add(edge.targetId);
203
+ stack.push({
204
+ node: edge.targetId,
205
+ path: [...path, edge.targetId],
206
+ edges: [...edges, edge.id],
207
+ weight: weight + (edge.weight ?? 1),
208
+ visited: newVisited,
209
+ });
210
+ }
211
+ }
212
+ }
213
+ }
214
+ /**
215
+ * Get edges by type
216
+ */
217
+ getEdgesByType(type) {
218
+ const edgeIds = this.byType.get(type);
219
+ if (!edgeIds) {
220
+ return [];
221
+ }
222
+ const result = [];
223
+ for (const id of edgeIds) {
224
+ const edge = this.edges.get(id);
225
+ if (edge) {
226
+ result.push(edge);
227
+ }
228
+ }
229
+ return result;
230
+ }
231
+ /**
232
+ * Check if edge exists between two nodes
233
+ */
234
+ hasEdge(sourceId, targetId) {
235
+ return this.outgoing.get(sourceId)?.has(targetId) ?? false;
236
+ }
237
+ /**
238
+ * Get edge between two nodes
239
+ */
240
+ getEdge(sourceId, targetId) {
241
+ return this.outgoing.get(sourceId)?.get(targetId);
242
+ }
243
+ /**
244
+ * Get node degree
245
+ */
246
+ getDegree(nodeId, direction = 'total') {
247
+ const inDegree = this.incoming.get(nodeId)?.size ?? 0;
248
+ const outDegree = this.outgoing.get(nodeId)?.size ?? 0;
249
+ switch (direction) {
250
+ case 'in':
251
+ return inDegree;
252
+ case 'out':
253
+ return outDegree;
254
+ case 'total':
255
+ return inDegree + outDegree;
256
+ }
257
+ }
258
+ /**
259
+ * Clear the index
260
+ */
261
+ clear() {
262
+ this.outgoing.clear();
263
+ this.incoming.clear();
264
+ this.byType.clear();
265
+ this.edges.clear();
266
+ }
267
+ /**
268
+ * Get edge count
269
+ */
270
+ get size() {
271
+ return this.edges.size;
272
+ }
273
+ /**
274
+ * Get node count
275
+ */
276
+ get nodeCount() {
277
+ const nodes = new Set();
278
+ for (const edge of this.edges.values()) {
279
+ nodes.add(edge.sourceId);
280
+ nodes.add(edge.targetId);
281
+ }
282
+ return nodes.size;
283
+ }
284
+ /**
285
+ * Get index statistics
286
+ */
287
+ getStats() {
288
+ return {
289
+ name: 'graph',
290
+ type: 'graph',
291
+ entryCount: this.edges.size,
292
+ sizeBytes: this.estimateSize(),
293
+ hitRate: 0,
294
+ lastUpdated: new Date(),
295
+ };
296
+ }
297
+ /**
298
+ * Estimate memory size
299
+ */
300
+ estimateSize() {
301
+ // Rough estimate
302
+ return (this.edges.size * 100 + // Edge storage
303
+ this.outgoing.size * 50 + // Outgoing adjacency
304
+ this.incoming.size * 50 // Incoming adjacency
305
+ );
306
+ }
307
+ }
308
+ //# sourceMappingURL=GraphIndex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphIndex.js","sourceRoot":"","sources":["../../src/index/GraphIndex.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * @nahisaho/yata-scale - Index Manager
3
+ *
4
+ * Manages all indexes for a shard
5
+ */
6
+ import { type Result } from 'neverthrow';
7
+ import type { IndexConfig, IndexStats, Entity, Relationship } from '../types.js';
8
+ import { IndexError, IndexNotFoundError } from '../errors.js';
9
+ import { GraphIndex } from './GraphIndex.js';
10
+ import { BloomFilter } from './BloomFilter.js';
11
+ /**
12
+ * Index manager for coordinating multiple indexes
13
+ */
14
+ export declare class IndexManager {
15
+ private indexes;
16
+ private entityIndex;
17
+ private bloomFilter;
18
+ private graphIndex;
19
+ constructor();
20
+ /**
21
+ * Create a new index
22
+ */
23
+ createIndex(config: IndexConfig): Result<void, IndexError>;
24
+ /**
25
+ * Create index by type
26
+ */
27
+ private createIndexByType;
28
+ /**
29
+ * Drop an index
30
+ */
31
+ dropIndex(name: string): Result<void, IndexNotFoundError>;
32
+ /**
33
+ * Index an entity
34
+ */
35
+ indexEntity(entity: Entity): void;
36
+ /**
37
+ * Index entity in a custom index
38
+ */
39
+ private indexEntityInCustomIndex;
40
+ /**
41
+ * Remove entity from indexes
42
+ */
43
+ removeEntity(entityId: string): void;
44
+ /**
45
+ * Remove entity from custom index
46
+ */
47
+ private removeEntityFromCustomIndex;
48
+ /**
49
+ * Index a relationship
50
+ */
51
+ indexRelationship(relationship: Relationship): void;
52
+ /**
53
+ * Remove a relationship from indexes
54
+ */
55
+ removeRelationship(relationshipId: string): void;
56
+ /**
57
+ * Check if entity might exist (using bloom filter)
58
+ */
59
+ mightExist(entityId: string): boolean;
60
+ /**
61
+ * Get entity by ID
62
+ */
63
+ getEntity(entityId: string): Entity | undefined;
64
+ /**
65
+ * Search by attribute using B+Tree index
66
+ */
67
+ searchByAttribute(indexName: string, value: string): Result<string[], IndexNotFoundError>;
68
+ /**
69
+ * Full-text search
70
+ */
71
+ searchFullText(indexName: string, query: string, limit?: number): Result<string[], IndexNotFoundError>;
72
+ /**
73
+ * Get graph index
74
+ */
75
+ getGraphIndex(): GraphIndex;
76
+ /**
77
+ * Get bloom filter
78
+ */
79
+ getBloomFilter(): BloomFilter;
80
+ /**
81
+ * Extract key from entity for indexing
82
+ */
83
+ private extractKey;
84
+ /**
85
+ * Extract text content for full-text indexing
86
+ */
87
+ private extractTextContent;
88
+ /**
89
+ * Get all index statistics
90
+ */
91
+ getAllStats(): IndexStats[];
92
+ /**
93
+ * Clear all indexes
94
+ */
95
+ clear(): void;
96
+ /**
97
+ * Get entity count
98
+ */
99
+ get entityCount(): number;
100
+ /**
101
+ * Get relationship count
102
+ */
103
+ get relationshipCount(): number;
104
+ }
105
+ //# sourceMappingURL=IndexManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IndexManager.d.ts","sourceRoot":"","sources":["../../src/index/IndexManager.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAW,KAAK,MAAM,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EAEV,MAAM,EACN,YAAY,EACb,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAG9D,OAAO,EAAE,UAAU,EAAa,MAAM,iBAAiB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAU/C;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAwC;IACvD,OAAO,CAAC,WAAW,CAAiC;IACpD,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,UAAU,CAAa;;IAY/B;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC;IAoB1D;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAoBzB;;OAEG;IACH,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,IAAI,EAAE,kBAAkB,CAAC;IASzD;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAajC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA8BhC;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAYpC;;OAEG;IACH,OAAO,CAAC,2BAA2B;IAgBnC;;OAEG;IACH,iBAAiB,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI;IAWnD;;OAEG;IACH,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI;IAIhD;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAI/C;;OAEG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,MAAM,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC;IAWvC;;OAEG;IACH,cAAc,CACZ,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,KAAK,GAAE,MAAW,GACjB,MAAM,CAAC,MAAM,EAAE,EAAE,kBAAkB,CAAC;IAWvC;;OAEG;IACH,aAAa,IAAI,UAAU;IAI3B;;OAEG;IACH,cAAc,IAAI,WAAW;IAI7B;;OAEG;IACH,OAAO,CAAC,UAAU;IAiBlB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAe1B;;OAEG;IACH,WAAW,IAAI,UAAU,EAAE;IAgB3B;;OAEG;IACH,KAAK,IAAI,IAAI;IAYb;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,IAAI,iBAAiB,IAAI,MAAM,CAE9B;CACF"}