k0ntext 3.2.1 → 3.3.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 (39) hide show
  1. package/dist/cli/index.js +28 -2
  2. package/dist/cli/index.js.map +1 -1
  3. package/dist/cli/repl/core/parser.d.ts +84 -0
  4. package/dist/cli/repl/core/parser.d.ts.map +1 -0
  5. package/dist/cli/repl/core/parser.js +309 -0
  6. package/dist/cli/repl/core/parser.js.map +1 -0
  7. package/dist/cli/repl/core/session.d.ts +124 -0
  8. package/dist/cli/repl/core/session.d.ts.map +1 -0
  9. package/dist/cli/repl/core/session.js +196 -0
  10. package/dist/cli/repl/core/session.js.map +1 -0
  11. package/dist/cli/repl/index.d.ts +56 -0
  12. package/dist/cli/repl/index.d.ts.map +1 -0
  13. package/dist/cli/repl/index.js +468 -0
  14. package/dist/cli/repl/index.js.map +1 -0
  15. package/dist/cli/repl/init/wizard.d.ts +61 -0
  16. package/dist/cli/repl/init/wizard.d.ts.map +1 -0
  17. package/dist/cli/repl/init/wizard.js +245 -0
  18. package/dist/cli/repl/init/wizard.js.map +1 -0
  19. package/dist/cli/repl/tui/theme.d.ts +109 -0
  20. package/dist/cli/repl/tui/theme.d.ts.map +1 -0
  21. package/dist/cli/repl/tui/theme.js +225 -0
  22. package/dist/cli/repl/tui/theme.js.map +1 -0
  23. package/dist/cli/repl/update/checker.d.ts +64 -0
  24. package/dist/cli/repl/update/checker.d.ts.map +1 -0
  25. package/dist/cli/repl/update/checker.js +166 -0
  26. package/dist/cli/repl/update/checker.js.map +1 -0
  27. package/dist/db/client.d.ts +1 -0
  28. package/dist/db/client.d.ts.map +1 -1
  29. package/dist/db/client.js +2 -1
  30. package/dist/db/client.js.map +1 -1
  31. package/package.json +4 -1
  32. package/src/cli/index.ts +28 -2
  33. package/src/cli/repl/core/parser.ts +373 -0
  34. package/src/cli/repl/core/session.ts +269 -0
  35. package/src/cli/repl/index.ts +554 -0
  36. package/src/cli/repl/init/wizard.ts +300 -0
  37. package/src/cli/repl/tui/theme.ts +276 -0
  38. package/src/cli/repl/update/checker.ts +209 -0
  39. package/src/db/client.ts +9 -7
@@ -0,0 +1,468 @@
1
+ /**
2
+ * K0ntext REPL Shell
3
+ *
4
+ * Interactive shell for managing k0ntext context
5
+ */
6
+ import readline from 'readline';
7
+ import { REPLSessionManager } from './core/session.js';
8
+ import { REPLCommandParser } from './core/parser.js';
9
+ import { InitWizard } from './init/wizard.js';
10
+ import { UpdateChecker } from './update/checker.js';
11
+ import { K0NTEXT_THEME } from './tui/theme.js';
12
+ import { createIntelligentAnalyzer } from '../../analyzer/intelligent-analyzer.js';
13
+ import { DatabaseClient } from '../../db/client.js';
14
+ /**
15
+ * K0ntext REPL Shell
16
+ */
17
+ export class REPLShell {
18
+ session;
19
+ parser;
20
+ updateChecker;
21
+ projectRoot;
22
+ version;
23
+ readline;
24
+ isActive = false;
25
+ noTUI;
26
+ constructor(options) {
27
+ this.projectRoot = options.projectRoot;
28
+ this.version = options.version;
29
+ this.noTUI = options.noTUI || false;
30
+ this.session = new REPLSessionManager(this.projectRoot);
31
+ this.parser = new REPLCommandParser();
32
+ this.updateChecker = new UpdateChecker(options.version);
33
+ // Create readline interface
34
+ this.readline = readline.createInterface({
35
+ input: process.stdin,
36
+ output: process.stdout,
37
+ prompt: this.getPrompt()
38
+ });
39
+ this.setupEventHandlers();
40
+ this.registerCommands();
41
+ }
42
+ /**
43
+ * Get the command prompt
44
+ */
45
+ getPrompt() {
46
+ const isInit = this.session.isInitialized();
47
+ const symbol = isInit ? '█' : '?';
48
+ return K0NTEXT_THEME.primary(`k0ntext${symbol} `);
49
+ }
50
+ /**
51
+ * Setup event handlers
52
+ */
53
+ setupEventHandlers() {
54
+ this.readline.on('line', async (input) => {
55
+ if (!this.isActive)
56
+ return;
57
+ const trimmed = input.trim();
58
+ if (!trimmed) {
59
+ this.readline.prompt();
60
+ return;
61
+ }
62
+ // Handle exit commands
63
+ if (trimmed.toLowerCase() === 'exit' || trimmed.toLowerCase() === 'quit') {
64
+ await this.stop();
65
+ return;
66
+ }
67
+ // Parse and execute command
68
+ const parsed = this.parser.parse(trimmed);
69
+ if (parsed) {
70
+ const startTime = Date.now();
71
+ const result = await this.parser.execute(parsed);
72
+ const duration = Date.now() - startTime;
73
+ this.session.addCommand(trimmed, result.output, duration);
74
+ if (result.output) {
75
+ console.log('');
76
+ console.log(result.output);
77
+ }
78
+ if (result.error) {
79
+ console.log('');
80
+ console.log(K0NTEXT_THEME.error(`✖ ${result.error}`));
81
+ }
82
+ }
83
+ else {
84
+ console.log(K0NTEXT_THEME.warning('\n⚠ Invalid command. Type "help" for available commands.'));
85
+ }
86
+ this.readline.prompt();
87
+ });
88
+ this.readline.on('SIGINT', async () => {
89
+ console.log('');
90
+ console.log(K0NTEXT_THEME.warning('\n⚠ Use "exit" to quit the REPL.'));
91
+ this.readline.prompt();
92
+ });
93
+ this.readline.on('close', async () => {
94
+ await this.stop();
95
+ });
96
+ }
97
+ /**
98
+ * Register REPL-specific commands
99
+ */
100
+ registerCommands() {
101
+ // Stats command
102
+ this.parser.registerCommand({
103
+ name: 'stats',
104
+ description: 'Show database and session statistics',
105
+ usage: 'stats',
106
+ examples: ['stats'],
107
+ handler: async () => {
108
+ const db = new DatabaseClient(this.projectRoot);
109
+ const dbStats = db.getStats();
110
+ const sessionStats = this.session.getStats();
111
+ const duration = this.session.getDuration();
112
+ const output = [
113
+ '',
114
+ K0NTEXT_THEME.header('━━━ Database Statistics ━━━'),
115
+ ` ${K0NTEXT_THEME.cyan('•')} Context Items: ${dbStats.items}`,
116
+ ` ${K0NTEXT_THEME.cyan('•')} Relations: ${dbStats.relations}`,
117
+ ` ${K0NTEXT_THEME.cyan('•')} Git Commits: ${dbStats.commits}`,
118
+ ` ${K0NTEXT_THEME.cyan('•')} Embeddings: ${dbStats.embeddings}`,
119
+ ` ${K0NTEXT_THEME.cyan('•')} Tool Configs: ${dbStats.toolConfigs}`,
120
+ ` ${K0NTEXT_THEME.cyan('•')} Database Path: ${dbStats.path || '.k0ntext.db'}`,
121
+ '',
122
+ K0NTEXT_THEME.header('━━━ Session Statistics ━━━'),
123
+ ` ${K0NTEXT_THEME.cyan('•')} Duration: ${duration.human}`,
124
+ ` ${K0NTEXT_THEME.cyan('•')} Commands Run: ${sessionStats.commandsExecuted}`,
125
+ ` ${K0NTEXT_THEME.cyan('•')} Searches: ${sessionStats.searchesPerformed}`,
126
+ ` ${K0NTEXT_THEME.cyan('•')} Files Indexed: ${sessionStats.filesIndexed}`,
127
+ ` ${K0NTEXT_THEME.cyan('•')} Embeddings: ${sessionStats.embeddingsGenerated}`,
128
+ ''
129
+ ];
130
+ db.close();
131
+ return { success: true, output: output.join('\n') };
132
+ }
133
+ });
134
+ // Index command
135
+ this.parser.registerCommand({
136
+ name: 'index',
137
+ description: 'Index codebase into database',
138
+ usage: 'index [options]',
139
+ examples: ['index', 'index --code', 'index --all'],
140
+ handler: async (args, flags) => {
141
+ const analyzer = createIntelligentAnalyzer(this.projectRoot);
142
+ const db = new DatabaseClient(this.projectRoot);
143
+ let indexedCount = 0;
144
+ try {
145
+ const [docs, code, tools] = await Promise.all([
146
+ analyzer.discoverDocs(),
147
+ analyzer.discoverCode(),
148
+ analyzer.discoverToolConfigs()
149
+ ]);
150
+ const docsCount = docs.length;
151
+ const codeCount = Math.min(code.length, 500); // Limit for now
152
+ const toolsCount = tools.length;
153
+ // Index docs
154
+ for (const doc of docs) {
155
+ const content = require('fs').readFileSync(doc.path, 'utf-8').slice(0, 50000);
156
+ db.upsertItem({
157
+ type: 'doc',
158
+ name: require('path').basename(doc.relativePath),
159
+ content,
160
+ filePath: doc.relativePath,
161
+ metadata: { size: doc.size }
162
+ });
163
+ indexedCount++;
164
+ }
165
+ // Index code
166
+ for (const codeFile of code.slice(0, 500)) {
167
+ const content = require('fs').existsSync(codeFile.path)
168
+ ? require('fs').readFileSync(codeFile.path, 'utf-8').slice(0, 20000)
169
+ : '';
170
+ if (content) {
171
+ db.upsertItem({
172
+ type: 'code',
173
+ name: require('path').basename(codeFile.relativePath),
174
+ content,
175
+ filePath: codeFile.relativePath,
176
+ metadata: { size: codeFile.size }
177
+ });
178
+ indexedCount++;
179
+ }
180
+ }
181
+ // Index tools
182
+ for (const tool of tools) {
183
+ const content = require('fs').existsSync(tool.path)
184
+ ? require('fs').readFileSync(tool.path, 'utf-8').slice(0, 50000)
185
+ : '';
186
+ if (content) {
187
+ db.upsertItem({
188
+ type: 'tool_config',
189
+ name: `${tool.tool}:${require('path').basename(tool.relativePath)}`,
190
+ content,
191
+ filePath: tool.relativePath,
192
+ metadata: { tool: tool.tool, size: tool.size }
193
+ });
194
+ indexedCount++;
195
+ }
196
+ }
197
+ this.session.updateStats({
198
+ filesIndexed: this.session.getStats().filesIndexed + indexedCount
199
+ });
200
+ const output = [
201
+ '',
202
+ K0NTEXT_THEME.success('✓ Indexing complete'),
203
+ ` ${K0NTEXT_THEME.cyan('•')} Documents: ${docsCount}`,
204
+ ` ${K0NTEXT_THEME.cyan('•')} Code Files: ${codeCount}`,
205
+ ` ${K0NTEXT_THEME.cyan('•')} Tool Configs: ${toolsCount}`,
206
+ ` ${K0NTEXT_THEME.cyan('•')} Total Indexed: ${indexedCount}`,
207
+ ''
208
+ ];
209
+ db.close();
210
+ return { success: true, output: output.join('\n') };
211
+ }
212
+ catch (error) {
213
+ db.close();
214
+ return {
215
+ success: false,
216
+ error: error instanceof Error ? error.message : String(error)
217
+ };
218
+ }
219
+ }
220
+ });
221
+ // Search command
222
+ this.parser.registerCommand({
223
+ name: 'search',
224
+ description: 'Search indexed content',
225
+ usage: 'search <query>',
226
+ examples: ['search auth', 'search "user login"'],
227
+ completions: () => [],
228
+ handler: async (args) => {
229
+ const query = args.join(' ');
230
+ if (!query) {
231
+ return {
232
+ success: false,
233
+ error: 'Please provide a search query'
234
+ };
235
+ }
236
+ const db = new DatabaseClient(this.projectRoot);
237
+ const results = db.searchText(query);
238
+ this.session.updateStats({
239
+ searchesPerformed: this.session.getStats().searchesPerformed + 1
240
+ });
241
+ if (results.length === 0) {
242
+ db.close();
243
+ return {
244
+ success: true,
245
+ output: K0NTEXT_THEME.dim('\nNo results found.')
246
+ };
247
+ }
248
+ const output = [
249
+ '',
250
+ K0NTEXT_THEME.header(`━━━ Search Results: "${query}" ━━━`),
251
+ ''
252
+ ];
253
+ for (let i = 0; i < Math.min(results.length, 10); i++) {
254
+ const result = results[i];
255
+ output.push(` ${K0NTEXT_THEME.primary(`${i + 1}.`)} ${result.name} [${result.type}]`);
256
+ if (result.filePath) {
257
+ output.push(` ${K0NTEXT_THEME.dim(result.filePath)}`);
258
+ }
259
+ }
260
+ if (results.length > 10) {
261
+ output.push(` ${K0NTEXT_THEME.dim(`... and ${results.length - 10} more`)}`);
262
+ }
263
+ output.push('');
264
+ db.close();
265
+ return { success: true, output: output.join('\n') };
266
+ }
267
+ });
268
+ // Init command (re-run wizard)
269
+ this.parser.registerCommand({
270
+ name: 'init',
271
+ description: 'Re-run initialization wizard',
272
+ usage: 'init',
273
+ examples: ['init'],
274
+ handler: async () => {
275
+ const wizard = new InitWizard(this.projectRoot);
276
+ const config = await wizard.run();
277
+ if (config) {
278
+ this.session.setInitialized(config.apiKey, config.projectType);
279
+ this.session.updateConfig({
280
+ apiKey: config.apiKey,
281
+ projectType: config.projectType,
282
+ aiTools: config.aiTools,
283
+ features: config.features
284
+ });
285
+ wizard.showSuccess(config);
286
+ }
287
+ return { success: true };
288
+ }
289
+ });
290
+ // Update command
291
+ this.parser.registerCommand({
292
+ name: 'update',
293
+ description: 'Check for k0ntext updates',
294
+ usage: 'update',
295
+ examples: ['update'],
296
+ handler: async () => {
297
+ const hasUpdate = await this.updateChecker.checkAndPrompt();
298
+ return {
299
+ success: true,
300
+ output: hasUpdate ? '' : K0NTEXT_THEME.success('\n✓ Already on latest version')
301
+ };
302
+ }
303
+ });
304
+ // Drift command
305
+ this.parser.registerCommand({
306
+ name: 'drift',
307
+ description: 'Check for documentation drift',
308
+ usage: 'drift',
309
+ examples: ['drift'],
310
+ handler: async () => {
311
+ const db = new DatabaseClient(this.projectRoot);
312
+ const items = db.getAllItems();
313
+ const now = new Date();
314
+ const driftDays = 7;
315
+ const driftThreshold = new Date(now.getTime() - driftDays * 24 * 60 * 60 * 1000);
316
+ const drifted = items.filter(item => {
317
+ if (!item.updatedAt)
318
+ return false;
319
+ const updated = new Date(item.updatedAt);
320
+ return updated < driftThreshold;
321
+ });
322
+ db.close();
323
+ const output = [
324
+ '',
325
+ K0NTEXT_THEME.header('━━━ Documentation Drift Check ━━━'),
326
+ ''
327
+ ];
328
+ if (drifted.length === 0) {
329
+ output.push(K0NTEXT_THEME.success('✓ All context files are up to date'));
330
+ }
331
+ else {
332
+ output.push(K0NTEXT_THEME.warning(`⚠ Found ${drifted.length} files that may be out of sync:`));
333
+ output.push('');
334
+ for (const item of drifted.slice(0, 10)) {
335
+ output.push(` ${K0NTEXT_THEME.primary('•')} ${item.name} ${K0NTEXT_THEME.dim(`(${item.updatedAt})`)}`);
336
+ }
337
+ if (drifted.length > 10) {
338
+ output.push(` ${K0NTEXT_THEME.dim(`... and ${drifted.length - 10} more`)}`);
339
+ }
340
+ output.push('');
341
+ output.push(K0NTEXT_THEME.info('Run "index" to update your context.'));
342
+ }
343
+ output.push('');
344
+ return { success: true, output: output.join('\n') };
345
+ }
346
+ });
347
+ // Config command
348
+ this.parser.registerCommand({
349
+ name: 'config',
350
+ description: 'View or set configuration',
351
+ usage: 'config [get|set|list] [key] [value]',
352
+ examples: ['config list', 'config get projectType', 'config set projectType webapp'],
353
+ handler: async (args) => {
354
+ const action = args[0] || 'list';
355
+ const state = this.session.getState();
356
+ if (action === 'list') {
357
+ const output = [
358
+ '',
359
+ K0NTEXT_THEME.header('━━━ Configuration ━━━'),
360
+ '',
361
+ ` ${K0NTEXT_THEME.cyan('projectType:')} ${state.config.projectType || 'not set'}`,
362
+ ` ${K0NTEXT_THEME.cyan('apiKey:')} ${state.config.apiKey ? '✓ set' : '○ not set'}`,
363
+ ` ${K0NTEXT_THEME.cyan('aiTools:')} ${state.config.aiTools.join(', ') || 'none'}`,
364
+ ` ${K0NTEXT_THEME.cyan('features:')} ${state.config.features.join(', ') || 'none'}`,
365
+ ` ${K0NTEXT_THEME.cyan('autoUpdate:')} ${state.config.autoUpdate}`,
366
+ ''
367
+ ];
368
+ return { success: true, output: output.join('\n') };
369
+ }
370
+ if (action === 'get') {
371
+ const key = args[1];
372
+ if (!key)
373
+ return { success: false, error: 'Please specify a key' };
374
+ const value = state.config[key];
375
+ return { success: true, output: `${key}: ${value || 'not set'}` };
376
+ }
377
+ if (action === 'set') {
378
+ const key = args[1];
379
+ const value = args.slice(2).join(' ');
380
+ if (!key || !value)
381
+ return { success: false, error: 'Usage: config set <key> <value>' };
382
+ this.session.updateConfig({ [key]: value });
383
+ return { success: true, output: K0NTEXT_THEME.success(`✓ Set ${key} = ${value}`) };
384
+ }
385
+ return { success: false, error: 'Unknown action. Use: get, set, or list' };
386
+ }
387
+ });
388
+ }
389
+ /**
390
+ * Start the REPL
391
+ */
392
+ async start() {
393
+ this.isActive = true;
394
+ // Show banner
395
+ this.showBanner();
396
+ // Check for updates
397
+ if (this.session.getState().config.autoUpdate) {
398
+ await this.updateChecker.showNotification({ showIfCurrent: false, checkInterval: 24 * 60 * 60 * 1000 });
399
+ }
400
+ // Check if initialized
401
+ if (!this.session.isInitialized()) {
402
+ console.log('');
403
+ console.log(K0NTEXT_THEME.info('🔧 First-time setup detected. Running initialization wizard...\n'));
404
+ const wizard = new InitWizard(this.projectRoot);
405
+ const config = await wizard.run();
406
+ if (config) {
407
+ this.session.setInitialized(config.apiKey, config.projectType);
408
+ this.session.updateConfig({
409
+ apiKey: config.apiKey,
410
+ projectType: config.projectType,
411
+ aiTools: config.aiTools,
412
+ features: config.features
413
+ });
414
+ wizard.showSuccess(config);
415
+ }
416
+ else {
417
+ console.log(K0NTEXT_THEME.info('\n✓ Skipping initialization. You can run "init" later.\n'));
418
+ }
419
+ }
420
+ // Show project stats if initialized
421
+ if (this.session.isInitialized()) {
422
+ const analyzer = createIntelligentAnalyzer(this.projectRoot);
423
+ const analysis = await analyzer.analyze();
424
+ console.log('');
425
+ console.log(K0NTEXT_THEME.header('━━━ Project Overview ━━━'));
426
+ console.log(` ${K0NTEXT_THEME.primary('Type:')} ${this.session.getState().config.projectType}`);
427
+ console.log(` ${K0NTEXT_THEME.primary('Docs:')} ${analysis.existingContext.files.filter(f => f.type === 'doc').length}`);
428
+ console.log(` ${K0NTEXT_THEME.primary('Code:')} ${analysis.existingContext.files.filter(f => f.type === 'code').length}`);
429
+ console.log(` ${K0NTEXT_THEME.primary('Tech:')} ${analysis.techStack.languages.slice(0, 3).join(', ')}`);
430
+ }
431
+ console.log('');
432
+ console.log(K0NTEXT_THEME.dim('Type "help" for available commands, "exit" to quit.'));
433
+ // Start readline
434
+ this.readline.prompt();
435
+ }
436
+ /**
437
+ * Stop the REPL
438
+ */
439
+ async stop() {
440
+ this.isActive = false;
441
+ this.session.end();
442
+ this.readline.close();
443
+ console.log('');
444
+ console.log(K0NTEXT_THEME.success('✓ Session saved. Goodbye!'));
445
+ }
446
+ /**
447
+ * Show welcome banner
448
+ */
449
+ showBanner() {
450
+ const { supportsColor } = K0NTEXT_THEME.detectCapabilities();
451
+ if (!supportsColor) {
452
+ console.log(`\n K0ntext v${this.version}\n`);
453
+ return;
454
+ }
455
+ console.log('');
456
+ console.log(K0NTEXT_THEME.box(`K0NTEXT v${this.version}`, `${K0NTEXT_THEME.dim('Interactive shell for AI context engineering')}
457
+ ${K0NTEXT_THEME.dim('Type "help" for commands, "exit" to quit')}`, 'primary'));
458
+ console.log('');
459
+ }
460
+ }
461
+ /**
462
+ * Create and start a REPL shell
463
+ */
464
+ export async function startREPL(projectRoot = process.cwd(), version, noTUI = false) {
465
+ const shell = new REPLShell({ projectRoot, version, noTUI });
466
+ await shell.start();
467
+ }
468
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/repl/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Init Wizard
3
+ *
4
+ * Interactive wizard for initializing k0ntext configuration
5
+ */
6
+ import { ProjectType } from '../core/session.js';
7
+ /**
8
+ * Wizard configuration result
9
+ */
10
+ export interface WizardConfig {
11
+ apiKey: string;
12
+ projectType: ProjectType;
13
+ aiTools: string[];
14
+ features: string[];
15
+ generateEmbeddings: boolean;
16
+ }
17
+ /**
18
+ * Init Wizard
19
+ */
20
+ export declare class InitWizard {
21
+ private projectRoot;
22
+ private hasExistingKey;
23
+ constructor(projectRoot: string);
24
+ /**
25
+ * Run the complete wizard
26
+ */
27
+ run(): Promise<WizardConfig | null>;
28
+ /**
29
+ * Show welcome message
30
+ */
31
+ private showWelcome;
32
+ /**
33
+ * Step 1: API Key
34
+ */
35
+ private stepApiKey;
36
+ /**
37
+ * Step 2: Project Type
38
+ */
39
+ private stepProjectType;
40
+ /**
41
+ * Step 3: AI Tools
42
+ */
43
+ private stepAITools;
44
+ /**
45
+ * Step 4: Features
46
+ */
47
+ private stepFeatures;
48
+ /**
49
+ * Step 5: Embeddings
50
+ */
51
+ private stepEmbeddings;
52
+ /**
53
+ * Show summary and confirm
54
+ */
55
+ private showSummary;
56
+ /**
57
+ * Show success message
58
+ */
59
+ showSuccess(config: WizardConfig): void;
60
+ }
61
+ //# sourceMappingURL=wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../../../src/cli/repl/init/wizard.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGjD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,kBAAkB,EAAE,OAAO,CAAC;CAC7B;AAuCD;;GAEG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAU;gBAEpB,WAAW,EAAE,MAAM;IAK/B;;OAEG;IACG,GAAG,IAAI,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC;IAwCzC;;OAEG;IACH,OAAO,CAAC,WAAW;IAgBnB;;OAEG;YACW,UAAU;IA2CxB;;OAEG;YACW,eAAe;IAiB7B;;OAEG;YACW,WAAW;IAkBzB;;OAEG;YACW,YAAY;IAkB1B;;OAEG;YACW,cAAc;IAe5B;;OAEG;YACW,WAAW;IAsBzB;;OAEG;IACH,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI;CAYxC"}