skill-creator 0.0.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 (55) hide show
  1. package/README.md +53 -0
  2. package/dist/cli.d.ts +8 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +378 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/core/chromaSearch.d.ts +24 -0
  7. package/dist/core/chromaSearch.d.ts.map +1 -0
  8. package/dist/core/chromaSearch.js +192 -0
  9. package/dist/core/chromaSearch.js.map +1 -0
  10. package/dist/core/contentManager.d.ts +40 -0
  11. package/dist/core/contentManager.d.ts.map +1 -0
  12. package/dist/core/contentManager.js +355 -0
  13. package/dist/core/contentManager.js.map +1 -0
  14. package/dist/core/runScript.d.ts +5 -0
  15. package/dist/core/runScript.d.ts.map +1 -0
  16. package/dist/core/runScript.js +220 -0
  17. package/dist/core/runScript.js.map +1 -0
  18. package/dist/core/searchEngine.d.ts +25 -0
  19. package/dist/core/searchEngine.d.ts.map +1 -0
  20. package/dist/core/searchEngine.js +198 -0
  21. package/dist/core/searchEngine.js.map +1 -0
  22. package/dist/core/simpleSearch.d.ts +21 -0
  23. package/dist/core/simpleSearch.d.ts.map +1 -0
  24. package/dist/core/simpleSearch.js +113 -0
  25. package/dist/core/simpleSearch.js.map +1 -0
  26. package/dist/core/skillCreator.d.ts +16 -0
  27. package/dist/core/skillCreator.d.ts.map +1 -0
  28. package/dist/core/skillCreator.js +291 -0
  29. package/dist/core/skillCreator.js.map +1 -0
  30. package/dist/core/templateManager.d.ts +28 -0
  31. package/dist/core/templateManager.d.ts.map +1 -0
  32. package/dist/core/templateManager.js +612 -0
  33. package/dist/core/templateManager.js.map +1 -0
  34. package/dist/core/unifiedSearch.d.ts +23 -0
  35. package/dist/core/unifiedSearch.d.ts.map +1 -0
  36. package/dist/core/unifiedSearch.js +46 -0
  37. package/dist/core/unifiedSearch.js.map +1 -0
  38. package/dist/index.d.ts +10 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +9 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/types/index.d.ts +86 -0
  43. package/dist/types/index.d.ts.map +1 -0
  44. package/dist/types/index.js +5 -0
  45. package/dist/types/index.js.map +1 -0
  46. package/dist/utils/config.d.ts +47 -0
  47. package/dist/utils/config.d.ts.map +1 -0
  48. package/dist/utils/config.js +69 -0
  49. package/dist/utils/config.js.map +1 -0
  50. package/dist/utils/package.d.ts +57 -0
  51. package/dist/utils/package.d.ts.map +1 -0
  52. package/dist/utils/package.js +170 -0
  53. package/dist/utils/package.js.map +1 -0
  54. package/package.json +57 -0
  55. package/templates/skill-creator.md +182 -0
package/README.md ADDED
@@ -0,0 +1,53 @@
1
+ # Skill Creator v2.0
2
+
3
+ A TypeScript/Node.js tool for creating claude-code-skills with intelligent documentation management.
4
+
5
+ ## Features
6
+
7
+ - šŸš€ Generate skills with proper folder naming (`package@version` format)
8
+ - šŸ“š Download and slice documentation from Context7
9
+ - šŸ” ChromaDB-powered semantic search
10
+ - šŸ’¾ Dynamic content management with deduplication
11
+ - šŸ› ļø Modern TypeScript/Node.js implementation
12
+
13
+ ## Installation
14
+
15
+ ```bash
16
+ npm install -g skill-creator
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ```bash
22
+ # Create a new skill
23
+ skill-creator tanstack-router
24
+
25
+ # With specific Context7 ID
26
+ skill-creator @tanstack/react-router --context7-id /tanstack/router
27
+
28
+ # In current directory
29
+ skill-creator zod --storage project
30
+ ```
31
+
32
+ ## Development
33
+
34
+ ```bash
35
+ # Install dependencies
36
+ npm install
37
+
38
+ # Development mode
39
+ npm run dev
40
+
41
+ # Build
42
+ npm run build
43
+
44
+ # Test
45
+ npm test
46
+
47
+ # Lint
48
+ npm run lint
49
+ ```
50
+
51
+ ## License
52
+
53
+ MIT
package/dist/cli.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI interface for skill creator
4
+ */
5
+ import { Command } from 'commander';
6
+ declare const program: Command;
7
+ export { program };
8
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOnC,QAAA,MAAM,OAAO,SAAgB,CAAA;AA8a7B,OAAO,EAAE,OAAO,EAAE,CAAA"}
package/dist/cli.js ADDED
@@ -0,0 +1,378 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI interface for skill creator
4
+ */
5
+ import { Command } from 'commander';
6
+ import gradient from 'gradient-string';
7
+ import inquirer from 'inquirer';
8
+ import { SkillCreator } from './core/skillCreator.js';
9
+ import { PackageUtils } from './utils/package.js';
10
+ const program = new Command();
11
+ program
12
+ .name('skill-creator')
13
+ .description('Create claude-code-skills with documentation management')
14
+ .version('2.0.0');
15
+ program
16
+ .argument('<package_name>', 'Package name to create documentation skill for (e.g., tanstack-router)')
17
+ .option('-p, --path <path>', 'Output path (default: current directory)', '.')
18
+ .option('-d, --description <description>', 'Description of the skill')
19
+ .option('-c, --context7-id <id>', 'Context7 library ID (e.g., /tanstack/router/docs)')
20
+ .option('--no-init-docs', 'Skip initial documentation download')
21
+ .option('-s, --storage <storage>', 'Where to store the skill', 'project')
22
+ .option('--package-version <version>', 'Specific version to use')
23
+ .option('--no-interactive', 'Skip interactive prompts')
24
+ .option('--search', 'Enable interactive package search')
25
+ .action(async (packageName, options, _command) => {
26
+ // Validate package name
27
+ if (!packageName || packageName.trim().length === 0) {
28
+ console.error('āŒ Error: Package name is required');
29
+ process.exit(1);
30
+ }
31
+ console.log(gradient('cyan', 'magenta')('\nšŸ” Searching for package:'));
32
+ console.log(gradient('yellow', 'orange')(packageName));
33
+ console.log(gradient('cyan', 'magenta')('='.repeat(50)));
34
+ let selectedPackage = { name: packageName, version: options.packageVersion };
35
+ // If not a valid package name or search is enabled, search for suggestions
36
+ if (!PackageUtils.validatePackageName(packageName) || options.search) {
37
+ const suggestions = await PackageUtils.suggestPackages(packageName, { limit: 10 });
38
+ if (suggestions.length === 0) {
39
+ console.error(`āŒ No packages found for "${packageName}"`);
40
+ process.exit(1);
41
+ }
42
+ if (suggestions.length > 1 && !options.noInteractive) {
43
+ console.log(`\nšŸ“¦ Found ${suggestions.length} package(s):`);
44
+ const choices = suggestions.map((pkg) => ({
45
+ name: `${pkg.name} (${pkg.version}) - ${pkg.description.slice(0, 80)}${pkg.description.length > 80 ? '...' : ''}`,
46
+ value: pkg.name,
47
+ short: pkg.name,
48
+ }));
49
+ const { selectedPkg } = await inquirer.prompt([
50
+ {
51
+ type: 'list',
52
+ name: 'selectedPkg',
53
+ message: 'Select a package:',
54
+ choices,
55
+ pageSize: 10,
56
+ },
57
+ ]);
58
+ selectedPackage.name = selectedPkg;
59
+ selectedPackage.version = await PackageUtils.getPackageVersion(selectedPkg) || suggestions.find(s => s.name === selectedPkg)?.version;
60
+ }
61
+ else {
62
+ selectedPackage.name = suggestions[0].name;
63
+ selectedPackage.version = suggestions[0].version;
64
+ }
65
+ }
66
+ // Get version if not specified
67
+ if (!selectedPackage.version) {
68
+ selectedPackage.version = await PackageUtils.getPackageVersion(selectedPackage.name);
69
+ }
70
+ if (!selectedPackage.version) {
71
+ console.warn(`āš ļø Could not determine version for ${selectedPackage.name}`);
72
+ }
73
+ console.log(gradient('green', 'cyan')(`\nāœ… Selected package: ${selectedPackage.name}@${selectedPackage.version || 'latest'}`));
74
+ // Ask for storage location if not specified
75
+ let storage = options.storage;
76
+ let path = options.path;
77
+ if (!options.noInteractive && !options.storage) {
78
+ const { storageLocation } = await inquirer.prompt([
79
+ {
80
+ type: 'list',
81
+ name: 'storageLocation',
82
+ message: 'Where would you like to store this skill?',
83
+ choices: [
84
+ {
85
+ name: 'šŸ“ Current project (./.claude/skills/)',
86
+ value: 'project',
87
+ },
88
+ {
89
+ name: 'šŸ  User directory (~/.claude/skills/)',
90
+ value: 'user',
91
+ },
92
+ ],
93
+ default: 'project',
94
+ },
95
+ ]);
96
+ storage = storageLocation;
97
+ if (storage === 'project' && path === '.') {
98
+ const { useDefaultPath } = await inquirer.prompt([
99
+ {
100
+ type: 'confirm',
101
+ name: 'useDefaultPath',
102
+ message: 'Use current directory for skill storage?',
103
+ default: true,
104
+ },
105
+ ]);
106
+ if (!useDefaultPath) {
107
+ const { customPath } = await inquirer.prompt([
108
+ {
109
+ type: 'input',
110
+ name: 'customPath',
111
+ message: 'Enter custom path:',
112
+ default: './',
113
+ },
114
+ ]);
115
+ path = customPath;
116
+ }
117
+ }
118
+ }
119
+ console.log(gradient('cyan', 'magenta')('\nšŸ“ Creating skill...'));
120
+ console.log(gradient('cyan', 'magenta')('='.repeat(50)));
121
+ const creator = new SkillCreator();
122
+ // Create skill folder name
123
+ const skillName = PackageUtils.createSkillFolderName(selectedPackage.name, selectedPackage.version ?? '1.0.0');
124
+ console.log(`\nšŸ“ Skill folder name: ${skillName}`);
125
+ // Create skill
126
+ const createOptions = {
127
+ packageName: selectedPackage.name,
128
+ path,
129
+ description: options.description,
130
+ context7Id: options.context7Id,
131
+ noInitDocs: options.noInitDocs,
132
+ storage,
133
+ version: selectedPackage.version,
134
+ };
135
+ const result = await creator.createSkill(createOptions);
136
+ // Print result
137
+ if (result.created) {
138
+ console.log(gradient('green', 'cyan')(`\nāœ… ${result.message}`));
139
+ if (result.docsInitialized) {
140
+ console.log(`āœ… Documentation downloaded and indexed`);
141
+ }
142
+ console.log(`\nšŸ“‹ Next steps:`);
143
+ console.log(`1. cd ${result.skillPath}`);
144
+ console.log(`2. npm install`);
145
+ if (!result.docsInitialized) {
146
+ console.log(`\nšŸ“š To initialize documentation:`);
147
+ console.log(` Option A: Use Context7 (requires MCP)`);
148
+ console.log(` - First, resolve library ID with AI help or Context7 search`);
149
+ console.log(` - Update config.json with the correct context7_library_id`);
150
+ console.log(` - Run: npm run update-context7`);
151
+ console.log(`\n Option B: Add documentation manually`);
152
+ console.log(` - Run: npm run add -- --title 'Topic' --content 'Your content'`);
153
+ }
154
+ console.log(`\n3. npm run build-index`);
155
+ console.log(`4. npm run search -- --query 'test query'`);
156
+ if (options.context7Id) {
157
+ console.log(`\nšŸ’” Note: Context7 library ID set to: ${options.context7Id}`);
158
+ console.log(` If this is incorrect, edit config.json and update context7_library_id`);
159
+ }
160
+ }
161
+ else {
162
+ console.error(`āŒ ${result.message}`);
163
+ process.exit(1);
164
+ }
165
+ });
166
+ // Add init command to install subagents
167
+ program
168
+ .command('init')
169
+ .description('Install skill-creator as subagent in ~/.claude/agents/')
170
+ .action(async () => {
171
+ const { homedir } = await import('node:os');
172
+ const { join } = await import('node:path');
173
+ const { mkdirSync, writeFileSync } = await import('node:fs');
174
+ const agentsDir = join(homedir(), '.claude', 'agents');
175
+ const skillCreatorDir = join(agentsDir, 'skill-creator');
176
+ // Create directories
177
+ mkdirSync(agentsDir, { recursive: true });
178
+ mkdirSync(skillCreatorDir, { recursive: true });
179
+ // Create subagent manifest
180
+ const manifest = {
181
+ name: 'skill-creator',
182
+ version: '2.0.0',
183
+ description: 'Claude Code skill creation agent',
184
+ main: process.cwd(),
185
+ commands: [
186
+ 'search',
187
+ 'get-name',
188
+ 'download-context7',
189
+ 'addSkill'
190
+ ]
191
+ };
192
+ writeFileSync(join(skillCreatorDir, 'manifest.json'), JSON.stringify(manifest, null, 2));
193
+ console.log(gradient('green', 'cyan')('\nāœ… Skill-creator subagent installed successfully!'));
194
+ console.log(`šŸ“ Location: ${skillCreatorDir}`);
195
+ });
196
+ // Add search command for package searching
197
+ program
198
+ .command('search')
199
+ .argument('<keywords>', 'Search keywords for npm packages')
200
+ .option('-l, --limit <limit>', 'Number of results to show', '10')
201
+ .action(async (keywords, options) => {
202
+ // Handle multiple keywords by splitting
203
+ const query = keywords;
204
+ console.log(gradient('cyan', 'magenta')('\nšŸ” Searching npm packages...'));
205
+ console.log(gradient('yellow', 'orange')(query));
206
+ console.log(gradient('cyan', 'magenta')('='.repeat(50)));
207
+ const suggestions = await PackageUtils.suggestPackages(query, {
208
+ limit: parseInt(options.limit)
209
+ });
210
+ if (suggestions.length === 0) {
211
+ console.error(`āŒ No packages found for "${query}"`);
212
+ return;
213
+ }
214
+ console.log(`\nšŸ“¦ Found ${suggestions.length} package(s):`);
215
+ suggestions.forEach((pkg, index) => {
216
+ console.log(`\n${index + 1}. ${gradient('green', 'cyan')(pkg.name)} (${pkg.version})`);
217
+ console.log(` ${pkg.description.slice(0, 100)}${pkg.description.length > 100 ? '...' : ''}`);
218
+ console.log(` šŸ‘¤ ${pkg.publisher} | ⭐ ${pkg.score.toFixed(2)}`);
219
+ });
220
+ });
221
+ // Add get-name command to generate skill name
222
+ program
223
+ .command('get-name')
224
+ .argument('<package_name>', 'Package name')
225
+ .option('-v, --version <version>', 'Specific version')
226
+ .action(async (packageName, options) => {
227
+ const version = options.version || await PackageUtils.getPackageVersion(packageName);
228
+ if (!version) {
229
+ console.error(`āŒ Could not determine version for ${packageName}`);
230
+ process.exit(1);
231
+ }
232
+ const skillName = PackageUtils.createSkillFolderName(packageName, version);
233
+ console.log(gradient('green', 'cyan')(`\nāœ… Skill name: ${skillName}`));
234
+ console.log(` Package: ${packageName}@${version}`);
235
+ });
236
+ // Add download-context7 command
237
+ program
238
+ .command('download-context7')
239
+ .argument('<package_name>', 'Package name')
240
+ .argument('<context7_id>', 'Context7 library ID')
241
+ .option('-f, --force', 'Force update even if up to date')
242
+ .option('-s, --storage <storage>', 'Storage location (project|user)', 'project')
243
+ .action(async (packageName, context7Id, options) => {
244
+ console.log(gradient('cyan', 'magenta')('\nšŸ“„ Downloading Context7 documentation...'));
245
+ console.log(`Package: ${packageName}`);
246
+ console.log(`Context7 ID: ${context7Id}`);
247
+ // Find existing skill
248
+ const { join } = await import('node:path');
249
+ const { homedir } = await import('node:os');
250
+ const baseDir = options.storage === 'user'
251
+ ? join(homedir(), '.claude', 'skills')
252
+ : join(process.cwd(), '.claude', 'skills');
253
+ // Find skill directory
254
+ const { readdirSync } = await import('node:fs');
255
+ const dirs = readdirSync(baseDir, { withFileTypes: true })
256
+ .filter(dirent => dirent.isDirectory())
257
+ .map(dirent => dirent.name)
258
+ .filter(name => name.includes(packageName.replace(/[^a-z0-9]/gi, '')));
259
+ if (dirs.length === 0) {
260
+ console.error(`āŒ No skill found for package ${packageName}`);
261
+ console.log(`šŸ’” Create a skill first with: skill-creator ${packageName}`);
262
+ process.exit(1);
263
+ }
264
+ const skillDir = join(baseDir, dirs[0]);
265
+ // Change to skill directory and run update script
266
+ const { chdir } = await import('node:process');
267
+ const originalCwd = process.cwd();
268
+ chdir(skillDir);
269
+ try {
270
+ const { runScript } = await import('./core/runScript.js');
271
+ const args = ['--force'];
272
+ await runScript('update-context7', args);
273
+ }
274
+ finally {
275
+ chdir(originalCwd);
276
+ }
277
+ console.log(gradient('green', 'cyan')('\nāœ… Documentation downloaded and sliced!'));
278
+ });
279
+ // Add search-in-skill command
280
+ program
281
+ .command('search-in-skill')
282
+ .argument('<package_name>', 'Package name')
283
+ .argument('<query>', 'Search query')
284
+ .action(async (packageName, query) => {
285
+ console.log(gradient('cyan', 'magenta')('\nšŸ” Searching in skill...'));
286
+ console.log(`Package: ${packageName}`);
287
+ console.log(`Query: ${query}`);
288
+ // Find skill directory
289
+ const { join, dirname } = await import('node:path');
290
+ const { homedir } = await import('node:os');
291
+ const { readdirSync } = await import('node:fs');
292
+ const baseDir = join(process.cwd(), '.claude', 'skills');
293
+ const dirs = readdirSync(baseDir, { withFileTypes: true })
294
+ .filter(dirent => dirent.isDirectory())
295
+ .map(dirent => dirent.name)
296
+ .filter(name => name.includes(packageName.replace(/[^a-z0-9]/gi, '')));
297
+ if (dirs.length === 0) {
298
+ console.error(`āŒ No skill found for package ${packageName}`);
299
+ process.exit(1);
300
+ }
301
+ const skillDir = join(baseDir, dirs[0]);
302
+ // Change to skill directory and run search script
303
+ const { chdir } = await import('node:process');
304
+ const originalCwd = process.cwd();
305
+ chdir(skillDir);
306
+ try {
307
+ const { runScript } = await import('./core/runScript.js');
308
+ const args = ['--query', query];
309
+ await runScript('search', args);
310
+ }
311
+ finally {
312
+ chdir(originalCwd);
313
+ }
314
+ });
315
+ // Add add-skill-content command
316
+ program
317
+ .command('addSkill')
318
+ .argument('<package_name>', 'Package name')
319
+ .option('-t, --title <title>', 'Content title')
320
+ .option('-c, --content <content>', 'Content text')
321
+ .option('-f, --file <file>', 'Read content from file')
322
+ .action(async (packageName, options) => {
323
+ if (!options.title && !options.file) {
324
+ console.error('āŒ Please provide either --title or --file');
325
+ process.exit(1);
326
+ }
327
+ console.log(gradient('cyan', 'magenta')('\nšŸ“ Adding content to skill...'));
328
+ console.log(`Package: ${packageName}`);
329
+ // Find skill directory
330
+ const { join, dirname } = await import('node:path');
331
+ const { homedir } = await import('node:os');
332
+ const { readdirSync } = await import('node:fs');
333
+ const baseDir = join(process.cwd(), '.claude', 'skills');
334
+ const dirs = readdirSync(baseDir, { withFileTypes: true })
335
+ .filter(dirent => dirent.isDirectory())
336
+ .map(dirent => dirent.name)
337
+ .filter(name => name.includes(packageName.replace(/[^a-z0-9]/gi, '')));
338
+ if (dirs.length === 0) {
339
+ console.error(`āŒ No skill found for package ${packageName}`);
340
+ process.exit(1);
341
+ }
342
+ const skillDir = join(baseDir, dirs[0]);
343
+ // Change to skill directory and run add script
344
+ const { chdir } = await import('node:process');
345
+ const originalCwd = process.cwd();
346
+ chdir(skillDir);
347
+ try {
348
+ const { runScript } = await import('./core/runScript.js');
349
+ const args = [];
350
+ if (options.title)
351
+ args.push('--title', options.title);
352
+ if (options.content)
353
+ args.push('--content', options.content);
354
+ if (options.file)
355
+ args.push('--file', options.file);
356
+ await runScript('add', args);
357
+ }
358
+ finally {
359
+ chdir(originalCwd);
360
+ }
361
+ console.log(gradient('green', 'cyan')('\nāœ… Content added successfully!'));
362
+ });
363
+ // Add sub-commands for script execution
364
+ program
365
+ .command('run-script')
366
+ .argument('<script>', 'Script to run (search, add, update-context7, build-index, list-content)')
367
+ .allowUnknownOption(true)
368
+ .action(async (script) => {
369
+ const { runScript } = await import('./core/runScript.js');
370
+ await runScript(script, process.argv.slice(4));
371
+ });
372
+ // Export for testing
373
+ export { program };
374
+ // Run CLI if this file is executed directly
375
+ if (import.meta.url === `file://${process.argv[1]}`) {
376
+ program.parse();
377
+ }
378
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * ChromaDB-based search engine with default embeddings
3
+ */
4
+ import type { SearchResult } from '../types/index.js';
5
+ export interface ChromaSearchOptions {
6
+ dbPath: string;
7
+ collectionName: string;
8
+ }
9
+ export declare class ChromaSearchEngine {
10
+ private db;
11
+ private options;
12
+ private embeddingFunction;
13
+ constructor(options: ChromaSearchOptions);
14
+ initialize(): Promise<void>;
15
+ buildIndex(referencesDir: string, hashFile: string): Promise<void>;
16
+ search(query: string, topK?: number, where?: Record<string, any>): Promise<SearchResult[]>;
17
+ searchByPriority(query: string, topK?: number): Promise<SearchResult[]>;
18
+ getStats(): Promise<{
19
+ totalDocuments: number;
20
+ }>;
21
+ private initializeIfNeeded;
22
+ private splitIntoSections;
23
+ }
24
+ //# sourceMappingURL=chromaSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chromaSearch.d.ts","sourceRoot":"","sources":["../../src/core/chromaSearch.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAErD,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAA;IACd,cAAc,EAAE,MAAM,CAAA;CACvB;AAED,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,EAAE,CAAmB;IAC7B,OAAO,CAAC,OAAO,CAAqB;IACpC,OAAO,CAAC,iBAAiB,CAAwC;gBAErD,OAAO,EAAE,mBAAmB;IAIlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAe3B,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+FlE,MAAM,CACV,KAAK,EAAE,MAAM,EACb,IAAI,GAAE,MAAU,EAChB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAC1B,OAAO,CAAC,YAAY,EAAE,CAAC;IAoCpB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAY1E,QAAQ,IAAI,OAAO,CAAC;QAAE,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;YAiBvC,kBAAkB;IAOhC,OAAO,CAAC,iBAAiB;CA2B1B"}