@kimesh/auto-import 0.0.1
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/README.md +3 -0
- package/dist/builder-CnceYcPH.mjs +4 -0
- package/dist/builder-c6-47OHx.mjs +614 -0
- package/dist/builder-c6-47OHx.mjs.map +1 -0
- package/dist/index.d.mts +417 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +961 -0
- package/dist/index.mjs.map +1 -0
- package/dist/oxc-scanner-DrjjlY9k.mjs +195 -0
- package/dist/oxc-scanner-DrjjlY9k.mjs.map +1 -0
- package/dist/oxc-scanner-g5pD6w1O.mjs +3 -0
- package/package.json +41 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,417 @@
|
|
|
1
|
+
import MagicString from "magic-string";
|
|
2
|
+
import { Plugin, PluginOption } from "vite";
|
|
3
|
+
import { ComponentResolver } from "unplugin-vue-components";
|
|
4
|
+
|
|
5
|
+
//#region src/types.d.ts
|
|
6
|
+
/**
|
|
7
|
+
* @kimesh/auto-import - Type Definitions
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Import entry in the registry
|
|
11
|
+
*/
|
|
12
|
+
interface ImportEntry {
|
|
13
|
+
/** Export name (e.g., 'Button', 'useAuth') */
|
|
14
|
+
name: string;
|
|
15
|
+
/** Optional alias (import { x as alias }) */
|
|
16
|
+
as?: string;
|
|
17
|
+
/** Import source path */
|
|
18
|
+
from: string;
|
|
19
|
+
/** Import type */
|
|
20
|
+
type: 'component' | 'composable' | 'utility' | 'preset' | 'store';
|
|
21
|
+
/** Layer name or 'app' */
|
|
22
|
+
layer: string;
|
|
23
|
+
/** Priority (lower = higher priority) */
|
|
24
|
+
priority: number;
|
|
25
|
+
/** Is default export? */
|
|
26
|
+
isDefault: boolean;
|
|
27
|
+
/** Is type-only import? */
|
|
28
|
+
isType: boolean;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Conflict information
|
|
32
|
+
*/
|
|
33
|
+
interface ConflictReport {
|
|
34
|
+
/** Conflicting name */
|
|
35
|
+
name: string;
|
|
36
|
+
/** Winning import entry */
|
|
37
|
+
winner: ImportEntry;
|
|
38
|
+
/** Losing import entries */
|
|
39
|
+
losers: ImportEntry[];
|
|
40
|
+
/** Suggestion for resolution */
|
|
41
|
+
suggestion?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Export information from scanned file
|
|
45
|
+
*/
|
|
46
|
+
interface ExportInfo {
|
|
47
|
+
/** Export name */
|
|
48
|
+
name: string;
|
|
49
|
+
/** Is default export? */
|
|
50
|
+
isDefault: boolean;
|
|
51
|
+
/** Is type-only export? */
|
|
52
|
+
isType: boolean;
|
|
53
|
+
/** Start position in source */
|
|
54
|
+
start: number;
|
|
55
|
+
/** End position in source */
|
|
56
|
+
end: number;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Scan result for a single file
|
|
60
|
+
*/
|
|
61
|
+
interface ScanResult {
|
|
62
|
+
/** File path */
|
|
63
|
+
filePath: string;
|
|
64
|
+
/** Content hash for cache invalidation */
|
|
65
|
+
fileHash: string;
|
|
66
|
+
/** Extracted exports */
|
|
67
|
+
exports: ExportInfo[];
|
|
68
|
+
/** Parse time in ms */
|
|
69
|
+
parseTime: number;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Import preset definition
|
|
73
|
+
*/
|
|
74
|
+
interface ImportPreset {
|
|
75
|
+
/** Preset name */
|
|
76
|
+
name: string;
|
|
77
|
+
/** Import source */
|
|
78
|
+
from: string;
|
|
79
|
+
/** Imports to include */
|
|
80
|
+
imports: Array<string | {
|
|
81
|
+
name: string;
|
|
82
|
+
type?: boolean;
|
|
83
|
+
as?: string;
|
|
84
|
+
}>;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Auto-import configuration
|
|
88
|
+
*/
|
|
89
|
+
interface AutoImportConfig {
|
|
90
|
+
/** Component directories to scan */
|
|
91
|
+
components?: {
|
|
92
|
+
dirs?: string[];
|
|
93
|
+
prefix?: string | false;
|
|
94
|
+
extensions?: string[];
|
|
95
|
+
};
|
|
96
|
+
/** Composable directories to scan */
|
|
97
|
+
composables?: {
|
|
98
|
+
dirs?: string[];
|
|
99
|
+
extensions?: string[];
|
|
100
|
+
};
|
|
101
|
+
/** Utility directories to scan */
|
|
102
|
+
utils?: {
|
|
103
|
+
dirs?: string[];
|
|
104
|
+
extensions?: string[];
|
|
105
|
+
};
|
|
106
|
+
/** Store directories to scan */
|
|
107
|
+
stores?: {
|
|
108
|
+
dirs?: string[];
|
|
109
|
+
};
|
|
110
|
+
/** Presets to enable */
|
|
111
|
+
presets?: Array<'vue' | 'vue-router' | 'tanstack-query' | 'pinia' | 'kimesh' | ImportPreset>;
|
|
112
|
+
/** Additional imports */
|
|
113
|
+
imports?: Array<{
|
|
114
|
+
from: string;
|
|
115
|
+
imports: string[];
|
|
116
|
+
}>;
|
|
117
|
+
/** Output directory for generated types */
|
|
118
|
+
dts?: string | false;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Layer auto-import source
|
|
122
|
+
*/
|
|
123
|
+
interface LayerAutoImportSource {
|
|
124
|
+
/** Layer name */
|
|
125
|
+
layer: string;
|
|
126
|
+
/** Layer priority */
|
|
127
|
+
priority: number;
|
|
128
|
+
/** Layer root path */
|
|
129
|
+
layerPath: string;
|
|
130
|
+
/** Config for this layer */
|
|
131
|
+
config: AutoImportConfig;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Import registry
|
|
135
|
+
*/
|
|
136
|
+
interface ImportRegistry {
|
|
137
|
+
/** All resolved imports */
|
|
138
|
+
imports: Map<string, ImportEntry>;
|
|
139
|
+
/** Components map (for Vue template auto-import) */
|
|
140
|
+
components: Map<string, ImportEntry>;
|
|
141
|
+
/** Conflicts detected */
|
|
142
|
+
conflicts: ConflictReport[];
|
|
143
|
+
/** Stats */
|
|
144
|
+
stats: {
|
|
145
|
+
totalScanned: number;
|
|
146
|
+
componentsCount: number;
|
|
147
|
+
composablesCount: number;
|
|
148
|
+
utilitiesCount: number;
|
|
149
|
+
presetsCount: number;
|
|
150
|
+
conflictsCount: number;
|
|
151
|
+
scanTimeMs: number;
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Unresolved reference in source code
|
|
156
|
+
*/
|
|
157
|
+
interface UnresolvedReference {
|
|
158
|
+
/** Identifier name */
|
|
159
|
+
name: string;
|
|
160
|
+
/** Position in source */
|
|
161
|
+
start: number;
|
|
162
|
+
/** End position */
|
|
163
|
+
end: number;
|
|
164
|
+
/** Is it used as a type? */
|
|
165
|
+
isType: boolean;
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Transform result
|
|
169
|
+
*/
|
|
170
|
+
interface TransformResult {
|
|
171
|
+
/** Transformed code */
|
|
172
|
+
code: string;
|
|
173
|
+
/** Source map */
|
|
174
|
+
map?: any;
|
|
175
|
+
/** Injected imports */
|
|
176
|
+
injectedImports: Array<{
|
|
177
|
+
name: string;
|
|
178
|
+
from: string;
|
|
179
|
+
}>;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Resolved layer info for generating .d.ts files
|
|
183
|
+
*/
|
|
184
|
+
interface ResolvedLayerInfo {
|
|
185
|
+
/** Layer name */
|
|
186
|
+
name: string;
|
|
187
|
+
/** Layer root path */
|
|
188
|
+
path: string;
|
|
189
|
+
/** Is this the host app? */
|
|
190
|
+
isApp: boolean;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Vite plugin options
|
|
194
|
+
*/
|
|
195
|
+
interface AutoImportPluginOptions {
|
|
196
|
+
/** Layer sources to scan (static) */
|
|
197
|
+
sources?: LayerAutoImportSource[];
|
|
198
|
+
/** Layer sources getter (lazy evaluation for async resolution) */
|
|
199
|
+
getSources?: () => LayerAutoImportSource[];
|
|
200
|
+
/** Resolved layers to generate .d.ts files into their .kimesh directories (static) */
|
|
201
|
+
layers?: ResolvedLayerInfo[];
|
|
202
|
+
/** Resolved layers getter (lazy evaluation for async resolution) */
|
|
203
|
+
getLayers?: () => ResolvedLayerInfo[];
|
|
204
|
+
/** Include patterns */
|
|
205
|
+
include?: string[];
|
|
206
|
+
/** Exclude patterns */
|
|
207
|
+
exclude?: string[];
|
|
208
|
+
/** Output directory for .d.ts files */
|
|
209
|
+
dts?: string | false;
|
|
210
|
+
/** Enable debug logging */
|
|
211
|
+
debug?: boolean;
|
|
212
|
+
}
|
|
213
|
+
//#endregion
|
|
214
|
+
//#region src/scanner/oxc-scanner.d.ts
|
|
215
|
+
declare class OxcExportScanner {
|
|
216
|
+
private cache;
|
|
217
|
+
scanFile(filePath: string): Promise<ScanResult>;
|
|
218
|
+
scanFiles(filePaths: string[]): Promise<ScanResult[]>;
|
|
219
|
+
private scanTsFile;
|
|
220
|
+
private scanVueFile;
|
|
221
|
+
private extractExports;
|
|
222
|
+
private extractNamedExports;
|
|
223
|
+
private extractDefaultExport;
|
|
224
|
+
private extractDeclarationNames;
|
|
225
|
+
private extractDefineExposeExports;
|
|
226
|
+
private walkAST;
|
|
227
|
+
private componentNameFromPath;
|
|
228
|
+
private hashContent;
|
|
229
|
+
invalidate(filePath: string): void;
|
|
230
|
+
clearCache(): void;
|
|
231
|
+
getCacheStats(): {
|
|
232
|
+
size: number;
|
|
233
|
+
version: string;
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
//#endregion
|
|
237
|
+
//#region src/scanner/reference-detector.d.ts
|
|
238
|
+
/**
|
|
239
|
+
* Reference detector using scope analysis
|
|
240
|
+
*/
|
|
241
|
+
declare class ReferenceDetector {
|
|
242
|
+
/**
|
|
243
|
+
* Detect unresolved references in TypeScript/JavaScript code
|
|
244
|
+
*/
|
|
245
|
+
detectInScript(code: string, filePath: string): UnresolvedReference[];
|
|
246
|
+
/**
|
|
247
|
+
* Detect unresolved references in Vue SFC
|
|
248
|
+
*/
|
|
249
|
+
detectInVue(code: string, filePath: string): UnresolvedReference[];
|
|
250
|
+
/**
|
|
251
|
+
* Detect unresolved references in parsed AST
|
|
252
|
+
*/
|
|
253
|
+
private detectInAST;
|
|
254
|
+
/**
|
|
255
|
+
* Collect all declared identifiers in the scope
|
|
256
|
+
*/
|
|
257
|
+
private collectDeclarations;
|
|
258
|
+
/**
|
|
259
|
+
* Collect names from binding patterns
|
|
260
|
+
*/
|
|
261
|
+
private collectPatternNames;
|
|
262
|
+
/**
|
|
263
|
+
* Find references to undeclared identifiers
|
|
264
|
+
*/
|
|
265
|
+
private findUnresolvedReferences;
|
|
266
|
+
/**
|
|
267
|
+
* Check if identifier is a property access (obj.prop)
|
|
268
|
+
*/
|
|
269
|
+
private isPropertyAccess;
|
|
270
|
+
/**
|
|
271
|
+
* Check if identifier is a property key ({ key: value })
|
|
272
|
+
*/
|
|
273
|
+
private isPropertyKey;
|
|
274
|
+
/**
|
|
275
|
+
* Check if identifier is a label reference
|
|
276
|
+
*/
|
|
277
|
+
private isLabelReference;
|
|
278
|
+
/**
|
|
279
|
+
* Check if identifier is in type context
|
|
280
|
+
*/
|
|
281
|
+
private isTypeContext;
|
|
282
|
+
/**
|
|
283
|
+
* Properties to skip when recursing
|
|
284
|
+
*/
|
|
285
|
+
private shouldSkipProperty;
|
|
286
|
+
}
|
|
287
|
+
//#endregion
|
|
288
|
+
//#region src/registry/builder.d.ts
|
|
289
|
+
declare class RegistryBuilder {
|
|
290
|
+
private scanner;
|
|
291
|
+
private resolver;
|
|
292
|
+
build(sources: LayerAutoImportSource[]): Promise<ImportRegistry>;
|
|
293
|
+
private extractComponents;
|
|
294
|
+
private calculateStats;
|
|
295
|
+
private logBuildResults;
|
|
296
|
+
private processLayerSource;
|
|
297
|
+
private processPresets;
|
|
298
|
+
private processComponents;
|
|
299
|
+
private resolveComponentName;
|
|
300
|
+
private processDirectories;
|
|
301
|
+
private processAdditionalImports;
|
|
302
|
+
private scanDirectory;
|
|
303
|
+
private scanDirectoryRecursive;
|
|
304
|
+
invalidate(filePath: string): void;
|
|
305
|
+
clearCache(): void;
|
|
306
|
+
}
|
|
307
|
+
//#endregion
|
|
308
|
+
//#region src/registry/conflict-resolver.d.ts
|
|
309
|
+
declare class ConflictResolver {
|
|
310
|
+
private imports;
|
|
311
|
+
private resolved;
|
|
312
|
+
private conflicts;
|
|
313
|
+
addImport(entry: ImportEntry): void;
|
|
314
|
+
resolve(): {
|
|
315
|
+
resolved: Map<string, ImportEntry>;
|
|
316
|
+
conflicts: ConflictReport[];
|
|
317
|
+
};
|
|
318
|
+
private generateSuggestion;
|
|
319
|
+
getConflicts(): ConflictReport[];
|
|
320
|
+
hasConflict(name: string): boolean;
|
|
321
|
+
getConflict(name: string): ConflictReport | undefined;
|
|
322
|
+
clear(): void;
|
|
323
|
+
}
|
|
324
|
+
//#endregion
|
|
325
|
+
//#region src/script/injector.d.ts
|
|
326
|
+
interface InjectionResult {
|
|
327
|
+
code: string;
|
|
328
|
+
map: ReturnType<MagicString["generateMap"]>;
|
|
329
|
+
count: number;
|
|
330
|
+
}
|
|
331
|
+
declare class ImportInjector {
|
|
332
|
+
inject(code: string, imports: ImportEntry[], isVue: boolean): InjectionResult | null;
|
|
333
|
+
generateImportStatements(imports: ImportEntry[]): string;
|
|
334
|
+
private groupImportsBySource;
|
|
335
|
+
private categorizeImports;
|
|
336
|
+
findImportInsertionPoint(code: string, isVue: boolean): number;
|
|
337
|
+
private findVueScriptInsertionPoint;
|
|
338
|
+
private findJsInsertionPoint;
|
|
339
|
+
extractExistingImports(code: string, isVue: boolean): Set<string>;
|
|
340
|
+
private extractVueScriptContent;
|
|
341
|
+
}
|
|
342
|
+
//#endregion
|
|
343
|
+
//#region src/script/plugin.d.ts
|
|
344
|
+
interface ScriptPluginOptions extends AutoImportPluginOptions {
|
|
345
|
+
onRegistryUpdate?: (registry: ImportRegistry) => void;
|
|
346
|
+
}
|
|
347
|
+
declare function createScriptPlugin(options: ScriptPluginOptions): Plugin;
|
|
348
|
+
//#endregion
|
|
349
|
+
//#region src/template/resolver.d.ts
|
|
350
|
+
interface KimeshResolverOptions {
|
|
351
|
+
getRegistry: () => ImportRegistry | null;
|
|
352
|
+
debug?: boolean;
|
|
353
|
+
}
|
|
354
|
+
declare function createKimeshResolver(options: KimeshResolverOptions): ComponentResolver;
|
|
355
|
+
//#endregion
|
|
356
|
+
//#region src/template/plugin.d.ts
|
|
357
|
+
interface TemplatePluginOptions {
|
|
358
|
+
getRegistry: () => ImportRegistry | null;
|
|
359
|
+
dts?: string | false;
|
|
360
|
+
debug?: boolean;
|
|
361
|
+
}
|
|
362
|
+
declare function createTemplatePlugin(options: TemplatePluginOptions): Plugin;
|
|
363
|
+
//#endregion
|
|
364
|
+
//#region src/presets/index.d.ts
|
|
365
|
+
/**
|
|
366
|
+
* Vue core preset
|
|
367
|
+
*/
|
|
368
|
+
declare const vuePreset: ImportPreset;
|
|
369
|
+
/**
|
|
370
|
+
* Vue Router preset
|
|
371
|
+
*/
|
|
372
|
+
declare const vueRouterPreset: ImportPreset;
|
|
373
|
+
/**
|
|
374
|
+
* TanStack Vue Query preset
|
|
375
|
+
*/
|
|
376
|
+
declare const tanstackQueryPreset: ImportPreset;
|
|
377
|
+
/**
|
|
378
|
+
* Pinia preset
|
|
379
|
+
*/
|
|
380
|
+
declare const piniaPreset: ImportPreset;
|
|
381
|
+
/**
|
|
382
|
+
* Kimesh runtime preset
|
|
383
|
+
*/
|
|
384
|
+
declare const kimeshPreset: ImportPreset;
|
|
385
|
+
/**
|
|
386
|
+
* All built-in presets
|
|
387
|
+
*/
|
|
388
|
+
declare const builtinPresets: Record<string, ImportPreset>;
|
|
389
|
+
/**
|
|
390
|
+
* Normalize preset configuration to ImportPreset
|
|
391
|
+
*/
|
|
392
|
+
declare function normalizePreset(preset: string | ImportPreset): ImportPreset | null;
|
|
393
|
+
/**
|
|
394
|
+
* Get all enabled presets from configuration
|
|
395
|
+
*/
|
|
396
|
+
declare function resolvePresets(presets: Array<string | ImportPreset> | undefined): ImportPreset[];
|
|
397
|
+
//#endregion
|
|
398
|
+
//#region src/types/generator.d.ts
|
|
399
|
+
declare function generateDtsFiles(registry: ImportRegistry, outputDir: string): Promise<void>;
|
|
400
|
+
declare function generateSourceDts(source: string, entries: ImportEntry[]): string;
|
|
401
|
+
//#endregion
|
|
402
|
+
//#region src/vite/plugin.d.ts
|
|
403
|
+
declare function autoImportPlugin(options: AutoImportPluginOptions): PluginOption[];
|
|
404
|
+
declare const kimeshAutoImport: typeof autoImportPlugin;
|
|
405
|
+
//#endregion
|
|
406
|
+
//#region src/index.d.ts
|
|
407
|
+
/**
|
|
408
|
+
* Build import registry from sources (convenience function)
|
|
409
|
+
*/
|
|
410
|
+
declare function buildImportRegistry(sources: LayerAutoImportSource[]): Promise<ImportRegistry>;
|
|
411
|
+
/**
|
|
412
|
+
* Scan exports from a file (convenience function)
|
|
413
|
+
*/
|
|
414
|
+
declare function scanExports(filePath: string): Promise<ScanResult>;
|
|
415
|
+
//#endregion
|
|
416
|
+
export { type AutoImportConfig, type AutoImportPluginOptions, type ConflictReport, ConflictResolver, type ExportInfo, type ImportEntry, ImportInjector, type ImportPreset, type ImportRegistry, type InjectionResult, type KimeshResolverOptions, type LayerAutoImportSource, OxcExportScanner, ReferenceDetector, RegistryBuilder, type ResolvedLayerInfo, type ScanResult, type ScriptPluginOptions, type TemplatePluginOptions, type TransformResult, type UnresolvedReference, autoImportPlugin, autoImportPlugin as default, buildImportRegistry, builtinPresets, createTemplatePlugin as createComponentsPlugin, createTemplatePlugin, createKimeshResolver, createScriptPlugin, generateDtsFiles as generateDts, generateDtsFiles, generateSourceDts, kimeshAutoImport, kimeshPreset, normalizePreset, piniaPreset, resolvePresets, scanExports, tanstackQueryPreset, vuePreset, vueRouterPreset };
|
|
417
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/types.ts","../src/scanner/oxc-scanner.ts","../src/scanner/reference-detector.ts","../src/registry/builder.ts","../src/registry/conflict-resolver.ts","../src/script/injector.ts","../src/script/plugin.ts","../src/template/resolver.ts","../src/template/plugin.ts","../src/presets/index.ts","../src/types/generator.ts","../src/vite/plugin.ts","../src/index.ts"],"mappings":";;;;;;AAOA;AA6BA;;AA7BA;AA6BA;UA7BiB,WAAA;EAAA;EAAA,IAAA;EAAA;EAAA,EAAA;EAAA;EAAA,IAAA;EAAA;EAAA,IAAA;EAAA;EAAA,KAAA;EAAA;EAAA,QAAA;EAAA;EAAA,SAAA;EAAA;EAAA,MAAA;AAAA;AAAA;AA6BjB;AAiBA;AA9CiB,UA6BA,cAAA;EAAA;EAAA,IAAA;EAAA;EAAA,MAAA,EAKP,WAAA;EAAA;EAAA,MAAA,EAGA,WAAA;EAAA;EAAA,UAAA;AAAA;AAAA;AASV;AAoBA;AA7BU,UASO,UAAA;EAAA;EAAA,IAAA;EAAA;EAAA,SAAA;EAAA;EAAA,MAAA;EAAA;EAAA,KAAA;EAAA;EAAA,GAAA;AAAA;AAAA;AAoBjB;AAiBA;AArCiB,UAoBA,UAAA;EAAA;EAAA,QAAA;EAAA;EAAA,QAAA;EAAA;EAAA,OAAA,EAQN,UAAA;EAAA;EAAA,SAAA;AAAA;AAAA;AASX;AAcA;AAvBW,UASM,YAAA;EAAA;EAAA,IAAA;EAAA;EAAA,IAAA;EAAA;EAAA,OAAA,EAQN,KAAA;IAAA,IAAA;IAAA,IAAA;IAAA,EAAA;EAAA;AAAA;AAAA;AAMX;;AANW,UAMM,gBAAA;EAAA;EAAA,UAAA;IAAA,IAAA;IAAA,MAAA;IAAA,UAAA;EAAA;EAAA;EAAA,WAAA;IAAA,IAAA;IAAA,UAAA;EAAA;EAAA;EAAA,KAAA;IAAA,IAAA;IAAA,UAAA;EAAA;EAAA;EAAA,MAAA;IAAA,IAAA;EAAA;EAAA;EAAA,OAAA,GA0BL,KAAA,gEAAqE,YAAA;EAAA;EAAA,OAAA,GAGrE,KAAA;IAAA,IAAA;IAAA,OAAA;EAAA;EAAA;EAAA,GAAA;AAAA;AAAA;;AASZ;AATY,UASK,qBAAA;EAAA;EAAA,KAAA;EAAA;EAAA,QAAA;EAAA;EAAA,SAAA;EAAA;EAAA,MAAA,EAWP,gBAAA;AAAA;AAAA;AAMV;;AANU,UAMO,cAAA;EAAA;EAAA,OAAA,EAEN,GAAA,SAAY,WAAA;EAAA;EAAA,UAAA,EAGT,GAAA,SAAY,WAAA;EAAA;EAAA,SAAA,EAGb,cAAA;EAAA;EAAA,KAAA;IAAA,YAAA;IAAA,eAAA;IAAA,gBAAA;IAAA,cAAA;IAAA,YAAA;IAAA,cAAA;IAAA,UAAA;EAAA;AAAA;AAAA;;AAiBb;AAjBa,UAiBI,mBAAA;EAAA;EAAA,IAAA;EAAA;EAAA,KAAA;EAAA;EAAA,GAAA;EAAA;EAAA,MAAA;AAAA;AAAA;AAiBjB;AAcA;AA/BiB,UAiBA,eAAA;EAAA;EAAA,IAAA;EAAA;EAAA,GAAA;EAAA;EAAA,eAAA,EAQE,KAAA;IAAA,IAAA;IAAA,IAAA;EAAA;AAAA;AAAA;AAMnB;AAYA;AAlBmB,UAMF,iBAAA;EAAA;EAAA,IAAA;EAAA;EAAA,IAAA;EAAA;EAAA,KAAA;AAAA;AAAA;AAYjB;;AAZiB,UAYA,uBAAA;EAAA;EAAA,OAAA,GAEL,qBAAA;EAAA;EAAA,UAAA,SAGS,qBAAA;EAAA;EAAA,MAAA,GAGV,iBAAA;EAAA;EAAA,SAAA,SAGS,iBAAA;EAAA;EAAA,OAAA;EAAA;EAAA,OAAA;EAAA;EAAA,GAAA;EAAA;EAAA,KAAA;AAAA;;;cCzNP,gBAAA;EAAA,QAAA,KAAA;EAAA,SAAA,QAAA,WAGuB,OAAA,CAAQ,UAAA;EAAA,UAAA,SAAA,aAqCJ,OAAA,CAAQ,UAAA;EAAA,QAAA,UAAA;EAAA,QAAA,WAAA;EAAA,QAAA,cAAA;EAAA,QAAA,mBAAA;EAAA,QAAA,oBAAA;EAAA,QAAA,uBAAA;EAAA,QAAA,0BAAA;EAAA,QAAA,OAAA;EAAA,QAAA,qBAAA;EAAA,QAAA,WAAA;EAAA,WAAA,QAAA;EAAA,WAAA;EAAA,cAAA;IAAA,IAAA;IAAA,OAAA;EAAA;AAAA;;;;ACLhD;;cAAa,iBAAA;EAAA;;;EAAA,eAAA,IAAA,UAAA,QAAA,WAIqC,mBAAA;EAAA;;;EAAA,YAAA,IAAA,UAAA,QAAA,WAmBH,mBAAA;EAAA;;;EAAA,QAAA,WAAA;EAAA;;;EAAA,QAAA,mBAAA;EAAA;;;EAAA,QAAA,mBAAA;EAAA;;;EAAA,QAAA,wBAAA;EAAA;;;EAAA,QAAA,gBAAA;EAAA;;;EAAA,QAAA,aAAA;EAAA;;;EAAA,QAAA,gBAAA;EAAA;;;EAAA,QAAA,aAAA;EAAA;;;EAAA,QAAA,kBAAA;AAAA;;;cCrDlC,eAAA;EAAA,QAAA,OAAA;EAAA,QAAA,QAAA;EAAA,MAAA,OAAA,EAIU,qBAAA,KAA0B,OAAA,CAAQ,cAAA;EAAA,QAAA,iBAAA;EAAA,QAAA,cAAA;EAAA,QAAA,eAAA;EAAA,QAAA,kBAAA;EAAA,QAAA,cAAA;EAAA,QAAA,iBAAA;EAAA,QAAA,oBAAA;EAAA,QAAA,kBAAA;EAAA,QAAA,wBAAA;EAAA,QAAA,aAAA;EAAA,QAAA,sBAAA;EAAA,WAAA,QAAA;EAAA,WAAA;AAAA;;;cCpB5C,gBAAA;EAAA,QAAA,OAAA;EAAA,QAAA,QAAA;EAAA,QAAA,SAAA;EAAA,UAAA,KAAA,EAKM,WAAA;EAAA,QAAA;IAAA,QAAA,EAMM,GAAA,SAAY,WAAA;IAAA,SAAA,EAAyB,cAAA;EAAA;EAAA,QAAA,kBAAA;EAAA,aAAA,GAkD5C,cAAA;EAAA,YAAA,IAAA;EAAA,YAAA,IAAA,WAQW,cAAA;EAAA,MAAA;AAAA;;;UCtEZ,eAAA;EAAA,IAAA;EAAA,GAAA,EAEV,UAAA,CAAW,WAAA;EAAA,KAAA;AAAA;AAAA,cAIL,cAAA;EAAA,OAAA,IAAA,UAAA,OAAA,EAGA,WAAA,IAAA,KAAA,YAER,eAAA;EAAA,yBAAA,OAAA,EAe+B,WAAA;EAAA,QAAA,oBAAA;EAAA,QAAA,iBAAA;EAAA,yBAAA,IAAA,UAAA,KAAA;EAAA,QAAA,2BAAA;EAAA,QAAA,oBAAA;EAAA,uBAAA,IAAA,UAAA,KAAA,YAkGoB,GAAA;EAAA,QAAA,uBAAA;AAAA;;;UCxGvC,mBAAA,SAA4B,uBAAA;EAAA,gBAAA,IAAA,QAAA,EACb,cAAA;AAAA;AAAA,iBAoBhB,kBAAA,CAAA,OAAA,EAA4B,mBAAA,GAAsB,MAAA;;;UCrCjD,qBAAA;EAAA,WAAA,QACI,cAAA;EAAA,KAAA;AAAA;AAAA,iBAgBL,oBAAA,CAAA,OAAA,EACL,qBAAA,GACR,iBAAA;;;UClBc,qBAAA;EAAA,WAAA,QACI,cAAA;EAAA,GAAA;EAAA,KAAA;AAAA;AAAA,iBAWL,oBAAA,CAAA,OAAA,EAA8B,qBAAA,GAAwB,MAAA;;;;ACftE;AAgFA;cAhFa,SAAA,EAAW,YAAA;AAAA;AAgFxB;AA8BA;AA9GwB,cAgFX,eAAA,EAAiB,YAAA;AAAA;AA8B9B;AA8BA;AA5D8B,cA8BjB,mBAAA,EAAqB,YAAA;AAAA;AA8BlC;AA2BA;AAzDkC,cA8BrB,WAAA,EAAa,YAAA;AAAA;AA2B1B;AAyBA;AApD0B,cA2Bb,YAAA,EAAc,YAAA;AAAA;AAyB3B;AAWA;AApC2B,cAyBd,cAAA,EAAgB,MAAA,SAAe,YAAA;AAAA;AAW5C;AAUA;AArB4C,iBAW5B,eAAA,CAAA,MAAA,WAAiC,YAAA,GAAe,YAAA;AAAA;AAUhE;;AAVgE,iBAUhD,cAAA,CAAA,OAAA,EACL,KAAA,UAAe,YAAA,gBACvB,YAAA;;;iBCrNmB,gBAAA,CAAA,QAAA,EACV,cAAA,EAAA,SAAA,WAET,OAAA;AAAA,iBAkJa,iBAAA,CAAA,MAAA,UAAA,OAAA,EAA2C,WAAA;;;iBChJ3C,gBAAA,CAAA,OAAA,EACL,uBAAA,GACR,YAAA;AAAA,cAqBU,gBAAA,SAAgB,gBAAA;;;;ACoD7B;;iBAAsB,mBAAA,CAAA,OAAA,EAAmB,qBAAA,KACW,OAAA,CAAF,cAAA;AAAA;;;AAAA,iBAU5B,WAAA,CAAA,QAAA,WAA4B,OAAA,CAAjB,UAAA"}
|