@calliopelabs/cli 0.4.6 → 0.6.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.
Files changed (112) hide show
  1. package/README.md +258 -105
  2. package/dist/branching.d.ts +56 -0
  3. package/dist/branching.d.ts.map +1 -0
  4. package/dist/branching.js +211 -0
  5. package/dist/branching.js.map +1 -0
  6. package/dist/cli.d.ts.map +1 -1
  7. package/dist/cli.js +235 -2
  8. package/dist/cli.js.map +1 -1
  9. package/dist/completion.d.ts +75 -0
  10. package/dist/completion.d.ts.map +1 -0
  11. package/dist/completion.js +234 -0
  12. package/dist/completion.js.map +1 -0
  13. package/dist/config.d.ts +36 -0
  14. package/dist/config.d.ts.map +1 -1
  15. package/dist/config.js +90 -0
  16. package/dist/config.js.map +1 -1
  17. package/dist/diff.d.ts +73 -0
  18. package/dist/diff.d.ts.map +1 -0
  19. package/dist/diff.js +317 -0
  20. package/dist/diff.js.map +1 -0
  21. package/dist/errors.d.ts +41 -0
  22. package/dist/errors.d.ts.map +1 -0
  23. package/dist/errors.js +199 -0
  24. package/dist/errors.js.map +1 -0
  25. package/dist/file-watcher.d.ts +91 -0
  26. package/dist/file-watcher.d.ts.map +1 -0
  27. package/dist/file-watcher.js +269 -0
  28. package/dist/file-watcher.js.map +1 -0
  29. package/dist/files.d.ts +49 -0
  30. package/dist/files.d.ts.map +1 -0
  31. package/dist/files.js +191 -0
  32. package/dist/files.js.map +1 -0
  33. package/dist/fuzzy-search.d.ts +75 -0
  34. package/dist/fuzzy-search.d.ts.map +1 -0
  35. package/dist/fuzzy-search.js +240 -0
  36. package/dist/fuzzy-search.js.map +1 -0
  37. package/dist/hooks.d.ts +79 -0
  38. package/dist/hooks.d.ts.map +1 -0
  39. package/dist/hooks.js +271 -0
  40. package/dist/hooks.js.map +1 -0
  41. package/dist/keyboard.d.ts +57 -0
  42. package/dist/keyboard.d.ts.map +1 -0
  43. package/dist/keyboard.js +265 -0
  44. package/dist/keyboard.js.map +1 -0
  45. package/dist/markdown.d.ts +14 -0
  46. package/dist/markdown.d.ts.map +1 -0
  47. package/dist/markdown.js +248 -0
  48. package/dist/markdown.js.map +1 -0
  49. package/dist/mcp.d.ts +90 -0
  50. package/dist/mcp.d.ts.map +1 -0
  51. package/dist/mcp.js +290 -0
  52. package/dist/mcp.js.map +1 -0
  53. package/dist/memory.d.ts +104 -0
  54. package/dist/memory.d.ts.map +1 -0
  55. package/dist/memory.js +394 -0
  56. package/dist/memory.js.map +1 -0
  57. package/dist/model-router.d.ts +67 -0
  58. package/dist/model-router.d.ts.map +1 -0
  59. package/dist/model-router.js +289 -0
  60. package/dist/model-router.js.map +1 -0
  61. package/dist/parallel-tools.d.ts +51 -0
  62. package/dist/parallel-tools.d.ts.map +1 -0
  63. package/dist/parallel-tools.js +278 -0
  64. package/dist/parallel-tools.js.map +1 -0
  65. package/dist/project-config.d.ts +84 -0
  66. package/dist/project-config.d.ts.map +1 -0
  67. package/dist/project-config.js +250 -0
  68. package/dist/project-config.js.map +1 -0
  69. package/dist/providers.d.ts +10 -2
  70. package/dist/providers.d.ts.map +1 -1
  71. package/dist/providers.js +240 -38
  72. package/dist/providers.js.map +1 -1
  73. package/dist/risk.d.ts +31 -0
  74. package/dist/risk.d.ts.map +1 -0
  75. package/dist/risk.js +367 -0
  76. package/dist/risk.js.map +1 -0
  77. package/dist/sandbox.d.ts +49 -0
  78. package/dist/sandbox.d.ts.map +1 -0
  79. package/dist/sandbox.js +347 -0
  80. package/dist/sandbox.js.map +1 -0
  81. package/dist/skills.d.ts +71 -0
  82. package/dist/skills.d.ts.map +1 -0
  83. package/dist/skills.js +383 -0
  84. package/dist/skills.js.map +1 -0
  85. package/dist/storage.d.ts +139 -0
  86. package/dist/storage.d.ts.map +1 -0
  87. package/dist/storage.js +508 -0
  88. package/dist/storage.js.map +1 -0
  89. package/dist/streaming.d.ts +94 -0
  90. package/dist/streaming.d.ts.map +1 -0
  91. package/dist/streaming.js +305 -0
  92. package/dist/streaming.js.map +1 -0
  93. package/dist/summarization.d.ts +76 -0
  94. package/dist/summarization.d.ts.map +1 -0
  95. package/dist/summarization.js +242 -0
  96. package/dist/summarization.js.map +1 -0
  97. package/dist/themes.d.ts +110 -0
  98. package/dist/themes.d.ts.map +1 -0
  99. package/dist/themes.js +329 -0
  100. package/dist/themes.js.map +1 -0
  101. package/dist/tools.d.ts.map +1 -1
  102. package/dist/tools.js +335 -1
  103. package/dist/tools.js.map +1 -1
  104. package/dist/types.d.ts +56 -1
  105. package/dist/types.d.ts.map +1 -1
  106. package/dist/types.js +105 -0
  107. package/dist/types.js.map +1 -1
  108. package/dist/ui-cli.d.ts +9 -2
  109. package/dist/ui-cli.d.ts.map +1 -1
  110. package/dist/ui-cli.js +1315 -220
  111. package/dist/ui-cli.js.map +1 -1
  112. package/package.json +1 -1
package/dist/memory.js ADDED
@@ -0,0 +1,394 @@
1
+ /**
2
+ * Calliope CLI - Memory System
3
+ *
4
+ * Persistent memory across sessions using CALLIOPE.md files.
5
+ * Supports project-level and global memories.
6
+ *
7
+ * Format (human-readable markdown):
8
+ * ```
9
+ * # Project Memory
10
+ *
11
+ * ## Context
12
+ * - Key fact about the project
13
+ * - Another important detail
14
+ *
15
+ * ## Preferences
16
+ * - User prefers functional components
17
+ * - Always use TypeScript
18
+ *
19
+ * ## History
20
+ * - 2025-01-09: Implemented auth system
21
+ * - 2025-01-08: Set up project structure
22
+ * ```
23
+ */
24
+ import * as fs from 'fs';
25
+ import * as path from 'path';
26
+ import * as os from 'os';
27
+ // ============================================================================
28
+ // Paths
29
+ // ============================================================================
30
+ const GLOBAL_MEMORY_DIR = path.join(os.homedir(), '.calliope-cli', 'memory');
31
+ const MEMORY_FILENAME = 'CALLIOPE.md';
32
+ /**
33
+ * Find project memory file (searches up directory tree)
34
+ */
35
+ export function findProjectMemory(startDir) {
36
+ let currentDir = startDir;
37
+ while (currentDir !== path.dirname(currentDir)) {
38
+ const memoryPath = path.join(currentDir, MEMORY_FILENAME);
39
+ if (fs.existsSync(memoryPath)) {
40
+ return memoryPath;
41
+ }
42
+ currentDir = path.dirname(currentDir);
43
+ }
44
+ return null;
45
+ }
46
+ /**
47
+ * Get global memory file path
48
+ */
49
+ export function getGlobalMemoryPath() {
50
+ if (!fs.existsSync(GLOBAL_MEMORY_DIR)) {
51
+ fs.mkdirSync(GLOBAL_MEMORY_DIR, { recursive: true });
52
+ }
53
+ return path.join(GLOBAL_MEMORY_DIR, 'global.md');
54
+ }
55
+ // ============================================================================
56
+ // Parsing
57
+ // ============================================================================
58
+ /**
59
+ * Parse CALLIOPE.md file into Memory object
60
+ */
61
+ export function parseMemoryFile(content) {
62
+ const memory = {
63
+ context: [],
64
+ preferences: [],
65
+ history: [],
66
+ notes: [],
67
+ };
68
+ let currentSection = null;
69
+ for (const line of content.split('\n')) {
70
+ const trimmed = line.trim();
71
+ // Section headers
72
+ if (trimmed.startsWith('## ')) {
73
+ const section = trimmed.slice(3).toLowerCase();
74
+ if (section === 'context')
75
+ currentSection = 'context';
76
+ else if (section === 'preferences')
77
+ currentSection = 'preferences';
78
+ else if (section === 'history')
79
+ currentSection = 'history';
80
+ else if (section === 'notes')
81
+ currentSection = 'notes';
82
+ else
83
+ currentSection = null;
84
+ continue;
85
+ }
86
+ // Skip main title and empty lines
87
+ if (trimmed.startsWith('# ') || !trimmed) {
88
+ continue;
89
+ }
90
+ // List items
91
+ if (currentSection && trimmed.startsWith('- ')) {
92
+ memory[currentSection].push(trimmed.slice(2));
93
+ }
94
+ }
95
+ return memory;
96
+ }
97
+ /**
98
+ * Format Memory object as markdown
99
+ */
100
+ export function formatMemoryFile(memory, title = 'Project Memory') {
101
+ const lines = [`# ${title}`, ''];
102
+ if (memory.context.length > 0) {
103
+ lines.push('## Context', '');
104
+ for (const item of memory.context) {
105
+ lines.push(`- ${item}`);
106
+ }
107
+ lines.push('');
108
+ }
109
+ if (memory.preferences.length > 0) {
110
+ lines.push('## Preferences', '');
111
+ for (const item of memory.preferences) {
112
+ lines.push(`- ${item}`);
113
+ }
114
+ lines.push('');
115
+ }
116
+ if (memory.history.length > 0) {
117
+ lines.push('## History', '');
118
+ for (const item of memory.history) {
119
+ lines.push(`- ${item}`);
120
+ }
121
+ lines.push('');
122
+ }
123
+ if (memory.notes.length > 0) {
124
+ lines.push('## Notes', '');
125
+ for (const item of memory.notes) {
126
+ lines.push(`- ${item}`);
127
+ }
128
+ lines.push('');
129
+ }
130
+ return lines.join('\n');
131
+ }
132
+ // ============================================================================
133
+ // Memory Operations
134
+ // ============================================================================
135
+ /**
136
+ * Load memory from file
137
+ */
138
+ export function loadMemory(filePath) {
139
+ if (!fs.existsSync(filePath)) {
140
+ return { context: [], preferences: [], history: [], notes: [] };
141
+ }
142
+ const content = fs.readFileSync(filePath, 'utf-8');
143
+ return parseMemoryFile(content);
144
+ }
145
+ /**
146
+ * Save memory to file
147
+ */
148
+ export function saveMemory(filePath, memory, title) {
149
+ const dir = path.dirname(filePath);
150
+ if (!fs.existsSync(dir)) {
151
+ fs.mkdirSync(dir, { recursive: true });
152
+ }
153
+ fs.writeFileSync(filePath, formatMemoryFile(memory, title));
154
+ }
155
+ /**
156
+ * Get project memory for current directory
157
+ */
158
+ export function getProjectMemory(dir) {
159
+ const memoryPath = findProjectMemory(dir);
160
+ if (!memoryPath) {
161
+ return { context: [], preferences: [], history: [], notes: [] };
162
+ }
163
+ return loadMemory(memoryPath);
164
+ }
165
+ /**
166
+ * Get global memory
167
+ */
168
+ export function getGlobalMemory() {
169
+ return loadMemory(getGlobalMemoryPath());
170
+ }
171
+ /**
172
+ * Add entry to memory
173
+ */
174
+ export function addMemoryEntry(filePath, entry, title) {
175
+ const memory = loadMemory(filePath);
176
+ let content = entry.content;
177
+ if (entry.type === 'history' && entry.timestamp) {
178
+ content = `${entry.timestamp}: ${content}`;
179
+ }
180
+ switch (entry.type) {
181
+ case 'context':
182
+ if (!memory.context.includes(content)) {
183
+ memory.context.push(content);
184
+ }
185
+ break;
186
+ case 'preference':
187
+ if (!memory.preferences.includes(content)) {
188
+ memory.preferences.push(content);
189
+ }
190
+ break;
191
+ case 'history':
192
+ memory.history.push(content);
193
+ break;
194
+ case 'note':
195
+ memory.notes.push(content);
196
+ break;
197
+ }
198
+ saveMemory(filePath, memory, title);
199
+ }
200
+ /**
201
+ * Remove entry from memory
202
+ */
203
+ export function removeMemoryEntry(filePath, type, content, title) {
204
+ const memory = loadMemory(filePath);
205
+ const section = type === 'preference' ? 'preferences' : `${type}s`;
206
+ const index = memory[section].findIndex(item => item.toLowerCase().includes(content.toLowerCase()));
207
+ if (index === -1)
208
+ return false;
209
+ memory[section].splice(index, 1);
210
+ saveMemory(filePath, memory, title);
211
+ return true;
212
+ }
213
+ /**
214
+ * Initialize project memory file
215
+ */
216
+ export function initProjectMemory(dir, projectName) {
217
+ const memoryPath = path.join(dir, MEMORY_FILENAME);
218
+ const memory = {
219
+ context: [
220
+ `Project: ${projectName || path.basename(dir)}`,
221
+ ],
222
+ preferences: [],
223
+ history: [
224
+ `${new Date().toISOString().split('T')[0]}: Initialized project memory`,
225
+ ],
226
+ notes: [],
227
+ };
228
+ saveMemory(memoryPath, memory, 'Project Memory');
229
+ return memoryPath;
230
+ }
231
+ // ============================================================================
232
+ // Standard Context Files
233
+ // ============================================================================
234
+ /**
235
+ * Standard files that provide project context
236
+ * These are loaded automatically when found in the project root
237
+ */
238
+ const CONTEXT_FILES = [
239
+ { name: 'CALLIOPE.md', label: 'Memory', maxLines: 100 },
240
+ { name: 'CLAUDE.md', label: 'Claude Context', maxLines: 100 },
241
+ { name: 'README.md', label: 'README', maxLines: 50 },
242
+ { name: 'SPEC.md', label: 'Specification', maxLines: 100 },
243
+ { name: 'TODO.md', label: 'TODO', maxLines: 50 },
244
+ { name: 'ARCHITECTURE.md', label: 'Architecture', maxLines: 100 },
245
+ { name: 'CONTRIBUTING.md', label: 'Contributing', maxLines: 50 },
246
+ { name: 'DESIGN.md', label: 'Design', maxLines: 100 },
247
+ { name: 'NOTES.md', label: 'Notes', maxLines: 50 },
248
+ { name: 'CONTEXT.md', label: 'Context', maxLines: 100 },
249
+ { name: '.cursorrules', label: 'Cursor Rules', maxLines: 100 },
250
+ { name: '.github/copilot-instructions.md', label: 'Copilot Instructions', maxLines: 100 },
251
+ ];
252
+ /**
253
+ * Find and load context from standard files
254
+ */
255
+ export function loadContextFiles(dir) {
256
+ const results = [];
257
+ for (const file of CONTEXT_FILES) {
258
+ const filePath = path.join(dir, file.name);
259
+ if (fs.existsSync(filePath)) {
260
+ try {
261
+ const content = fs.readFileSync(filePath, 'utf-8');
262
+ const lines = content.split('\n');
263
+ const truncated = lines.slice(0, file.maxLines).join('\n');
264
+ const suffix = lines.length > file.maxLines ? `\n... (${lines.length - file.maxLines} more lines)` : '';
265
+ results.push({
266
+ name: file.name,
267
+ label: file.label,
268
+ content: truncated + suffix,
269
+ });
270
+ }
271
+ catch {
272
+ // Skip files we can't read
273
+ }
274
+ }
275
+ }
276
+ return results;
277
+ }
278
+ /**
279
+ * Get list of context files that exist in directory
280
+ */
281
+ export function listContextFiles(dir) {
282
+ return CONTEXT_FILES
283
+ .map(f => path.join(dir, f.name))
284
+ .filter(p => fs.existsSync(p));
285
+ }
286
+ // ============================================================================
287
+ // Memory Context for LLM
288
+ // ============================================================================
289
+ /**
290
+ * Build memory context string for system prompt
291
+ */
292
+ export function buildMemoryContext(dir) {
293
+ const projectMemory = getProjectMemory(dir);
294
+ const globalMemory = getGlobalMemory();
295
+ const contextFiles = loadContextFiles(dir);
296
+ const parts = [];
297
+ // Global preferences first
298
+ if (globalMemory.preferences.length > 0) {
299
+ parts.push('Global preferences:');
300
+ for (const pref of globalMemory.preferences) {
301
+ parts.push(`- ${pref}`);
302
+ }
303
+ parts.push('');
304
+ }
305
+ // Project context from CALLIOPE.md
306
+ if (projectMemory.context.length > 0) {
307
+ parts.push('Project context:');
308
+ for (const ctx of projectMemory.context) {
309
+ parts.push(`- ${ctx}`);
310
+ }
311
+ parts.push('');
312
+ }
313
+ // Project preferences
314
+ if (projectMemory.preferences.length > 0) {
315
+ parts.push('Project preferences:');
316
+ for (const pref of projectMemory.preferences) {
317
+ parts.push(`- ${pref}`);
318
+ }
319
+ parts.push('');
320
+ }
321
+ // Recent history (last 5)
322
+ const recentHistory = projectMemory.history.slice(-5);
323
+ if (recentHistory.length > 0) {
324
+ parts.push('Recent history:');
325
+ for (const hist of recentHistory) {
326
+ parts.push(`- ${hist}`);
327
+ }
328
+ parts.push('');
329
+ }
330
+ // Context from other files (excluding CALLIOPE.md which we already parsed)
331
+ for (const file of contextFiles) {
332
+ if (file.name === 'CALLIOPE.md')
333
+ continue;
334
+ parts.push(`--- ${file.label} (${file.name}) ---`);
335
+ parts.push(file.content);
336
+ parts.push('');
337
+ }
338
+ return parts.join('\n');
339
+ }
340
+ /**
341
+ * Build compact context summary (for token-limited situations)
342
+ */
343
+ export function buildCompactContext(dir) {
344
+ const projectMemory = getProjectMemory(dir);
345
+ const parts = [];
346
+ if (projectMemory.context.length > 0) {
347
+ parts.push('Context: ' + projectMemory.context.join('; '));
348
+ }
349
+ if (projectMemory.preferences.length > 0) {
350
+ parts.push('Prefs: ' + projectMemory.preferences.join('; '));
351
+ }
352
+ return parts.join('\n');
353
+ }
354
+ /**
355
+ * Auto-extract potential memories from conversation
356
+ * Returns suggestions for memories to add
357
+ */
358
+ export function suggestMemories(content) {
359
+ const suggestions = [];
360
+ // Look for patterns that suggest preferences
361
+ const prefPatterns = [
362
+ /(?:always|prefer|use|want)\s+(?:to\s+)?(.+?)(?:\.|$)/gi,
363
+ /(?:don't|never|avoid)\s+(.+?)(?:\.|$)/gi,
364
+ ];
365
+ for (const pattern of prefPatterns) {
366
+ let match;
367
+ while ((match = pattern.exec(content)) !== null) {
368
+ if (match[1].length > 10 && match[1].length < 100) {
369
+ suggestions.push({
370
+ type: 'preference',
371
+ content: match[1].trim(),
372
+ });
373
+ }
374
+ }
375
+ }
376
+ // Look for patterns that suggest context
377
+ const contextPatterns = [
378
+ /(?:this project|the codebase|this repo)\s+(?:is|uses|has)\s+(.+?)(?:\.|$)/gi,
379
+ /(?:we're using|built with|powered by)\s+(.+?)(?:\.|$)/gi,
380
+ ];
381
+ for (const pattern of contextPatterns) {
382
+ let match;
383
+ while ((match = pattern.exec(content)) !== null) {
384
+ if (match[1].length > 5 && match[1].length < 100) {
385
+ suggestions.push({
386
+ type: 'context',
387
+ content: match[1].trim(),
388
+ });
389
+ }
390
+ }
391
+ }
392
+ return suggestions;
393
+ }
394
+ //# sourceMappingURL=memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.js","sourceRoot":"","sources":["../src/memory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Calliope CLI - Multi-Model Router
3
+ *
4
+ * Intelligently routes requests to different models based on task complexity.
5
+ */
6
+ import type { LLMProvider } from './types.js';
7
+ export type TaskComplexity = 'trivial' | 'simple' | 'moderate' | 'complex' | 'expert';
8
+ export interface ModelTier {
9
+ name: string;
10
+ provider: LLMProvider;
11
+ model: string;
12
+ maxTokens: number;
13
+ costPer1kInput: number;
14
+ costPer1kOutput: number;
15
+ }
16
+ export interface RoutingConfig {
17
+ enabled: boolean;
18
+ tiers: {
19
+ fast: ModelTier;
20
+ balanced: ModelTier;
21
+ smart: ModelTier;
22
+ };
23
+ autoRoute: boolean;
24
+ defaultTier: 'fast' | 'balanced' | 'smart';
25
+ }
26
+ export interface RouteDecision {
27
+ tier: 'fast' | 'balanced' | 'smart';
28
+ model: ModelTier;
29
+ reason: string;
30
+ complexity: TaskComplexity;
31
+ confidence: number;
32
+ }
33
+ /**
34
+ * Analyze task complexity from user message
35
+ */
36
+ export declare function analyzeComplexity(message: string, context?: {
37
+ messageCount?: number;
38
+ hasCode?: boolean;
39
+ fileCount?: number;
40
+ toolsUsed?: string[];
41
+ }): {
42
+ complexity: TaskComplexity;
43
+ confidence: number;
44
+ signals: string[];
45
+ };
46
+ /**
47
+ * Route request to appropriate model tier
48
+ */
49
+ export declare function routeRequest(message: string, provider: LLMProvider, context?: {
50
+ messageCount?: number;
51
+ hasCode?: boolean;
52
+ fileCount?: number;
53
+ toolsUsed?: string[];
54
+ }): RouteDecision;
55
+ /**
56
+ * Get model tier for provider
57
+ */
58
+ export declare function getModelTier(provider: LLMProvider, tier: 'fast' | 'balanced' | 'smart'): ModelTier;
59
+ /**
60
+ * Get all tiers for a provider
61
+ */
62
+ export declare function getAllTiers(provider: LLMProvider): RoutingConfig['tiers'];
63
+ /**
64
+ * Check if provider supports routing
65
+ */
66
+ export declare function supportsRouting(provider: LLMProvider): boolean;
67
+ //# sourceMappingURL=model-router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-router.d.ts","sourceRoot":"","sources":["../src/model-router.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAO9C,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;AAEtF,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE;QACL,IAAI,EAAE,SAAS,CAAC;QAChB,QAAQ,EAAE,SAAS,CAAC;QACpB,KAAK,EAAE,SAAS,CAAC;KAClB,CAAC;IACF,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;CAC5C;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAC;IACpC,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,cAAc,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;CACpB;AA8ID;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG;IAAE,UAAU,EAAE,cAAc,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,EAAE,CAAA;CAAE,CA2FxE;AAMD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,WAAW,EACrB,OAAO,CAAC,EAAE;IACR,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GACA,aAAa,CA+Bf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,QAAQ,EAAE,WAAW,EACrB,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,GAClC,SAAS,CAGX;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,aAAa,CAAC,OAAO,CAAC,CAEzE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,OAAO,CAE9D"}