edgeflowjs 0.1.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 (98) hide show
  1. package/README.md +473 -0
  2. package/dist/backends/index.d.ts +13 -0
  3. package/dist/backends/index.d.ts.map +1 -0
  4. package/dist/backends/index.js +32 -0
  5. package/dist/backends/index.js.map +1 -0
  6. package/dist/backends/onnx.d.ts +46 -0
  7. package/dist/backends/onnx.d.ts.map +1 -0
  8. package/dist/backends/onnx.js +249 -0
  9. package/dist/backends/onnx.js.map +1 -0
  10. package/dist/backends/wasm.d.ts +78 -0
  11. package/dist/backends/wasm.d.ts.map +1 -0
  12. package/dist/backends/wasm.js +358 -0
  13. package/dist/backends/wasm.js.map +1 -0
  14. package/dist/backends/webgpu.d.ts +143 -0
  15. package/dist/backends/webgpu.d.ts.map +1 -0
  16. package/dist/backends/webgpu.js +326 -0
  17. package/dist/backends/webgpu.js.map +1 -0
  18. package/dist/backends/webnn.d.ts +115 -0
  19. package/dist/backends/webnn.d.ts.map +1 -0
  20. package/dist/backends/webnn.js +202 -0
  21. package/dist/backends/webnn.js.map +1 -0
  22. package/dist/core/index.d.ts +9 -0
  23. package/dist/core/index.d.ts.map +1 -0
  24. package/dist/core/index.js +14 -0
  25. package/dist/core/index.js.map +1 -0
  26. package/dist/core/memory.d.ts +234 -0
  27. package/dist/core/memory.d.ts.map +1 -0
  28. package/dist/core/memory.js +554 -0
  29. package/dist/core/memory.js.map +1 -0
  30. package/dist/core/runtime.d.ts +129 -0
  31. package/dist/core/runtime.d.ts.map +1 -0
  32. package/dist/core/runtime.js +352 -0
  33. package/dist/core/runtime.js.map +1 -0
  34. package/dist/core/scheduler.d.ts +118 -0
  35. package/dist/core/scheduler.d.ts.map +1 -0
  36. package/dist/core/scheduler.js +600 -0
  37. package/dist/core/scheduler.js.map +1 -0
  38. package/dist/core/tensor.d.ts +149 -0
  39. package/dist/core/tensor.d.ts.map +1 -0
  40. package/dist/core/tensor.js +719 -0
  41. package/dist/core/tensor.js.map +1 -0
  42. package/dist/core/types.d.ts +367 -0
  43. package/dist/core/types.d.ts.map +1 -0
  44. package/dist/core/types.js +54 -0
  45. package/dist/core/types.js.map +1 -0
  46. package/dist/edgeflow.browser.js +5601 -0
  47. package/dist/edgeflow.browser.js.map +7 -0
  48. package/dist/edgeflow.browser.min.js +19 -0
  49. package/dist/edgeflow.browser.min.js.map +7 -0
  50. package/dist/index.d.ts +71 -0
  51. package/dist/index.d.ts.map +1 -0
  52. package/dist/index.js +158 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/pipelines/base.d.ts +122 -0
  55. package/dist/pipelines/base.d.ts.map +1 -0
  56. package/dist/pipelines/base.js +155 -0
  57. package/dist/pipelines/base.js.map +1 -0
  58. package/dist/pipelines/feature-extraction.d.ts +68 -0
  59. package/dist/pipelines/feature-extraction.d.ts.map +1 -0
  60. package/dist/pipelines/feature-extraction.js +197 -0
  61. package/dist/pipelines/feature-extraction.js.map +1 -0
  62. package/dist/pipelines/image-classification.d.ts +61 -0
  63. package/dist/pipelines/image-classification.d.ts.map +1 -0
  64. package/dist/pipelines/image-classification.js +140 -0
  65. package/dist/pipelines/image-classification.js.map +1 -0
  66. package/dist/pipelines/index.d.ts +58 -0
  67. package/dist/pipelines/index.d.ts.map +1 -0
  68. package/dist/pipelines/index.js +72 -0
  69. package/dist/pipelines/index.js.map +1 -0
  70. package/dist/pipelines/text-classification.d.ts +71 -0
  71. package/dist/pipelines/text-classification.d.ts.map +1 -0
  72. package/dist/pipelines/text-classification.js +175 -0
  73. package/dist/pipelines/text-classification.js.map +1 -0
  74. package/dist/tools/index.d.ts +143 -0
  75. package/dist/tools/index.d.ts.map +1 -0
  76. package/dist/tools/index.js +294 -0
  77. package/dist/tools/index.js.map +1 -0
  78. package/dist/utils/cache.d.ts +162 -0
  79. package/dist/utils/cache.d.ts.map +1 -0
  80. package/dist/utils/cache.js +443 -0
  81. package/dist/utils/cache.js.map +1 -0
  82. package/dist/utils/index.d.ts +8 -0
  83. package/dist/utils/index.d.ts.map +1 -0
  84. package/dist/utils/index.js +12 -0
  85. package/dist/utils/index.js.map +1 -0
  86. package/dist/utils/model-loader.d.ts +107 -0
  87. package/dist/utils/model-loader.d.ts.map +1 -0
  88. package/dist/utils/model-loader.js +694 -0
  89. package/dist/utils/model-loader.js.map +1 -0
  90. package/dist/utils/preprocessor.d.ts +147 -0
  91. package/dist/utils/preprocessor.d.ts.map +1 -0
  92. package/dist/utils/preprocessor.js +423 -0
  93. package/dist/utils/preprocessor.js.map +1 -0
  94. package/dist/utils/tokenizer.d.ts +140 -0
  95. package/dist/utils/tokenizer.d.ts.map +1 -0
  96. package/dist/utils/tokenizer.js +397 -0
  97. package/dist/utils/tokenizer.js.map +1 -0
  98. package/package.json +87 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,352 @@
1
+ /**
2
+ * edgeFlow.js - Runtime Management
3
+ *
4
+ * Manages runtime backends and automatic selection.
5
+ * Provides unified interface for different compute backends.
6
+ */
7
+ import { EdgeFlowError, ErrorCodes, } from './types.js';
8
+ import { getScheduler } from './scheduler.js';
9
+ import { getMemoryManager } from './memory.js';
10
+ // ============================================================================
11
+ // Runtime Registry
12
+ // ============================================================================
13
+ /**
14
+ * Registered runtime factories
15
+ */
16
+ const runtimeFactories = new Map();
17
+ /**
18
+ * Cached runtime instances
19
+ */
20
+ const runtimeInstances = new Map();
21
+ /**
22
+ * Runtime priority order (higher priority first)
23
+ */
24
+ const RUNTIME_PRIORITY = ['webgpu', 'webnn', 'wasm'];
25
+ // ============================================================================
26
+ // Runtime Manager
27
+ // ============================================================================
28
+ /**
29
+ * RuntimeManager - Manages runtime selection and lifecycle
30
+ *
31
+ * Features:
32
+ * - Automatic best runtime selection
33
+ * - Runtime registration
34
+ * - Capability detection
35
+ * - Fallback handling
36
+ */
37
+ export class RuntimeManager {
38
+ static instance = null;
39
+ listeners = new Map();
40
+ defaultRuntime = 'auto';
41
+ constructor() { }
42
+ /**
43
+ * Get singleton instance
44
+ */
45
+ static getInstance() {
46
+ if (!RuntimeManager.instance) {
47
+ RuntimeManager.instance = new RuntimeManager();
48
+ }
49
+ return RuntimeManager.instance;
50
+ }
51
+ /**
52
+ * Register a runtime factory
53
+ */
54
+ register(type, factory) {
55
+ runtimeFactories.set(type, factory);
56
+ }
57
+ /**
58
+ * Get a runtime instance
59
+ */
60
+ async getRuntime(type = 'auto') {
61
+ if (type === 'auto') {
62
+ return this.getBestRuntime();
63
+ }
64
+ // Check if already instantiated
65
+ let runtime = runtimeInstances.get(type);
66
+ if (runtime) {
67
+ return runtime;
68
+ }
69
+ // Create new instance
70
+ const factory = runtimeFactories.get(type);
71
+ if (!factory) {
72
+ throw new EdgeFlowError(`Runtime '${type}' is not registered`, ErrorCodes.RUNTIME_NOT_AVAILABLE, { runtime: type });
73
+ }
74
+ runtime = factory();
75
+ // Check availability
76
+ const available = await runtime.isAvailable();
77
+ if (!available) {
78
+ throw new EdgeFlowError(`Runtime '${type}' is not available in this environment`, ErrorCodes.RUNTIME_NOT_AVAILABLE, { runtime: type });
79
+ }
80
+ // Initialize
81
+ try {
82
+ await runtime.initialize();
83
+ }
84
+ catch (error) {
85
+ throw new EdgeFlowError(`Failed to initialize runtime '${type}': ${error instanceof Error ? error.message : String(error)}`, ErrorCodes.RUNTIME_INIT_FAILED, { runtime: type, error });
86
+ }
87
+ runtimeInstances.set(type, runtime);
88
+ this.emit('runtime:ready', { runtime: type });
89
+ return runtime;
90
+ }
91
+ /**
92
+ * Get the best available runtime
93
+ */
94
+ async getBestRuntime() {
95
+ for (const type of RUNTIME_PRIORITY) {
96
+ try {
97
+ // Check if already available
98
+ const existing = runtimeInstances.get(type);
99
+ if (existing) {
100
+ return existing;
101
+ }
102
+ // Try to create and initialize
103
+ const factory = runtimeFactories.get(type);
104
+ if (!factory)
105
+ continue;
106
+ const runtime = factory();
107
+ const available = await runtime.isAvailable();
108
+ if (available) {
109
+ await runtime.initialize();
110
+ runtimeInstances.set(type, runtime);
111
+ this.emit('runtime:ready', { runtime: type });
112
+ return runtime;
113
+ }
114
+ }
115
+ catch {
116
+ // Try next runtime
117
+ continue;
118
+ }
119
+ }
120
+ throw new EdgeFlowError('No runtime available. Please ensure WebGPU, WebNN, or WASM is supported.', ErrorCodes.RUNTIME_NOT_AVAILABLE, { triedRuntimes: RUNTIME_PRIORITY });
121
+ }
122
+ /**
123
+ * Check which runtimes are available
124
+ */
125
+ async detectAvailableRuntimes() {
126
+ const results = new Map();
127
+ for (const type of RUNTIME_PRIORITY) {
128
+ const factory = runtimeFactories.get(type);
129
+ if (!factory) {
130
+ results.set(type, false);
131
+ continue;
132
+ }
133
+ try {
134
+ const runtime = factory();
135
+ results.set(type, await runtime.isAvailable());
136
+ }
137
+ catch {
138
+ results.set(type, false);
139
+ }
140
+ }
141
+ return results;
142
+ }
143
+ /**
144
+ * Get capabilities of a runtime
145
+ */
146
+ async getCapabilities(type) {
147
+ const runtime = await this.getRuntime(type);
148
+ return runtime.capabilities;
149
+ }
150
+ /**
151
+ * Set default runtime
152
+ */
153
+ setDefaultRuntime(type) {
154
+ this.defaultRuntime = type;
155
+ }
156
+ /**
157
+ * Get default runtime type
158
+ */
159
+ getDefaultRuntimeType() {
160
+ return this.defaultRuntime;
161
+ }
162
+ /**
163
+ * Dispose a specific runtime
164
+ */
165
+ disposeRuntime(type) {
166
+ const runtime = runtimeInstances.get(type);
167
+ if (runtime) {
168
+ runtime.dispose();
169
+ runtimeInstances.delete(type);
170
+ }
171
+ }
172
+ /**
173
+ * Dispose all runtimes
174
+ */
175
+ disposeAll() {
176
+ for (const [type, runtime] of runtimeInstances) {
177
+ runtime.dispose();
178
+ runtimeInstances.delete(type);
179
+ }
180
+ }
181
+ /**
182
+ * Add event listener
183
+ */
184
+ on(event, listener) {
185
+ let listeners = this.listeners.get(event);
186
+ if (!listeners) {
187
+ listeners = new Set();
188
+ this.listeners.set(event, listeners);
189
+ }
190
+ listeners.add(listener);
191
+ }
192
+ /**
193
+ * Remove event listener
194
+ */
195
+ off(event, listener) {
196
+ const listeners = this.listeners.get(event);
197
+ if (listeners) {
198
+ listeners.delete(listener);
199
+ }
200
+ }
201
+ /**
202
+ * Emit event
203
+ */
204
+ emit(type, data) {
205
+ const event = {
206
+ type,
207
+ timestamp: Date.now(),
208
+ data,
209
+ };
210
+ const listeners = this.listeners.get(type);
211
+ if (listeners) {
212
+ for (const listener of listeners) {
213
+ try {
214
+ listener(event);
215
+ }
216
+ catch (error) {
217
+ console.error('Error in event listener:', error);
218
+ }
219
+ }
220
+ }
221
+ }
222
+ }
223
+ // ============================================================================
224
+ // Model Loader
225
+ // ============================================================================
226
+ /**
227
+ * Model instance counter
228
+ */
229
+ let modelIdCounter = 0;
230
+ /**
231
+ * Generate unique model ID
232
+ */
233
+ function generateModelId() {
234
+ return `model_${++modelIdCounter}_${Date.now().toString(36)}`;
235
+ }
236
+ /**
237
+ * LoadedModelImpl - Implementation of LoadedModel interface
238
+ */
239
+ export class LoadedModelImpl {
240
+ id;
241
+ metadata;
242
+ runtime;
243
+ _isLoaded = true;
244
+ _dispose;
245
+ constructor(metadata, runtime, dispose) {
246
+ this.id = generateModelId();
247
+ this.metadata = metadata;
248
+ this.runtime = runtime;
249
+ this._dispose = dispose;
250
+ }
251
+ get isLoaded() {
252
+ return this._isLoaded;
253
+ }
254
+ dispose() {
255
+ if (this._isLoaded) {
256
+ this._isLoaded = false;
257
+ this._dispose();
258
+ getMemoryManager().untrack(this.id);
259
+ }
260
+ }
261
+ }
262
+ // ============================================================================
263
+ // Model Loading Functions
264
+ // ============================================================================
265
+ /**
266
+ * Load model from URL with advanced loading support
267
+ * (caching, sharding, resume download)
268
+ */
269
+ export async function loadModel(url, options = {}) {
270
+ const manager = RuntimeManager.getInstance();
271
+ const runtime = await manager.getRuntime(options.runtime ?? 'auto');
272
+ // Import model loader dynamically to avoid circular dependencies
273
+ const { loadModelData } = await import('../utils/model-loader.js');
274
+ // Use advanced model loader with caching and resume support
275
+ const modelData = await loadModelData(url, {
276
+ cache: options.cache ?? true,
277
+ resumable: options.resumable ?? true,
278
+ chunkSize: options.chunkSize,
279
+ forceDownload: options.forceDownload,
280
+ onProgress: options.onProgress ? (progress) => {
281
+ options.onProgress(progress.percent / 100);
282
+ } : undefined,
283
+ });
284
+ // Load into runtime
285
+ const model = await runtime.loadModel(modelData, options);
286
+ return model;
287
+ }
288
+ /**
289
+ * Load model from ArrayBuffer
290
+ */
291
+ export async function loadModelFromBuffer(data, options = {}) {
292
+ const manager = RuntimeManager.getInstance();
293
+ const runtime = await manager.getRuntime(options.runtime ?? 'auto');
294
+ return runtime.loadModel(data, options);
295
+ }
296
+ // ============================================================================
297
+ // Inference Functions
298
+ // ============================================================================
299
+ /**
300
+ * Run inference on a model
301
+ */
302
+ export async function runInference(model, inputs) {
303
+ if (!model.isLoaded) {
304
+ throw new EdgeFlowError('Model has been disposed', ErrorCodes.MODEL_NOT_LOADED, { modelId: model.id });
305
+ }
306
+ const manager = RuntimeManager.getInstance();
307
+ const runtime = await manager.getRuntime(model.runtime);
308
+ // Use scheduler for execution
309
+ const scheduler = getScheduler();
310
+ const task = scheduler.schedule(model.id, () => runtime.run(model, inputs));
311
+ return task.wait();
312
+ }
313
+ /**
314
+ * Run inference with batch processing
315
+ */
316
+ export async function runBatchInference(model, batches) {
317
+ const scheduler = getScheduler();
318
+ const manager = RuntimeManager.getInstance();
319
+ const runtime = await manager.getRuntime(model.runtime);
320
+ // Schedule all batches
321
+ const tasks = batches.map(inputs => scheduler.schedule(model.id, () => runtime.run(model, inputs)));
322
+ // Wait for all to complete
323
+ return Promise.all(tasks.map(task => task.wait()));
324
+ }
325
+ // ============================================================================
326
+ // Convenience Functions
327
+ // ============================================================================
328
+ /**
329
+ * Get runtime manager instance
330
+ */
331
+ export function getRuntimeManager() {
332
+ return RuntimeManager.getInstance();
333
+ }
334
+ /**
335
+ * Register a runtime
336
+ */
337
+ export function registerRuntime(type, factory) {
338
+ RuntimeManager.getInstance().register(type, factory);
339
+ }
340
+ /**
341
+ * Get the best available runtime
342
+ */
343
+ export async function getBestRuntime() {
344
+ return RuntimeManager.getInstance().getBestRuntime();
345
+ }
346
+ /**
347
+ * Check available runtimes
348
+ */
349
+ export async function getAvailableRuntimes() {
350
+ return RuntimeManager.getInstance().detectAvailableRuntimes();
351
+ }
352
+ //# sourceMappingURL=runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/core/runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,118 @@
1
+ /**
2
+ * edgeFlow.js - Inference Scheduler
3
+ *
4
+ * Task scheduler for managing concurrent inference execution.
5
+ * Supports priority queues, model-level isolation, and batch processing.
6
+ */
7
+ import { InferenceTask, TaskPriority, SchedulerOptions, EventType, EventListener } from './types.js';
8
+ /**
9
+ * InferenceScheduler - Manages concurrent task execution
10
+ *
11
+ * Features:
12
+ * - Priority-based task scheduling
13
+ * - Model-level concurrency control
14
+ * - Optional batch processing
15
+ * - Task cancellation
16
+ * - Event emission
17
+ */
18
+ export declare class InferenceScheduler {
19
+ private readonly options;
20
+ private readonly queues;
21
+ private readonly runningTasks;
22
+ private readonly allTasks;
23
+ private readonly batchers;
24
+ private readonly listeners;
25
+ private globalRunningCount;
26
+ private isProcessing;
27
+ private disposed;
28
+ constructor(options?: SchedulerOptions);
29
+ /**
30
+ * Get or create queue for a model
31
+ */
32
+ private getQueue;
33
+ /**
34
+ * Get or create running set for a model
35
+ */
36
+ private getRunningSet;
37
+ /**
38
+ * Check if we can start a new task for a model
39
+ */
40
+ private canStartTask;
41
+ /**
42
+ * Process pending tasks
43
+ */
44
+ private processQueue;
45
+ /**
46
+ * Schedule a task for execution
47
+ */
48
+ schedule<T>(modelId: string, executor: () => Promise<T>, priority?: TaskPriority): InferenceTask<T>;
49
+ /**
50
+ * Schedule with timeout
51
+ */
52
+ scheduleWithTimeout<T>(modelId: string, executor: () => Promise<T>, timeout?: number, priority?: TaskPriority): InferenceTask<T>;
53
+ /**
54
+ * Schedule multiple tasks and wait for all
55
+ */
56
+ scheduleAll<T>(tasks: Array<{
57
+ modelId: string;
58
+ executor: () => Promise<T>;
59
+ priority?: TaskPriority;
60
+ }>): Promise<T[]>;
61
+ /**
62
+ * Get task by ID
63
+ */
64
+ getTask(taskId: string): InferenceTask | undefined;
65
+ /**
66
+ * Cancel a task
67
+ */
68
+ cancelTask(taskId: string): boolean;
69
+ /**
70
+ * Cancel all tasks for a model
71
+ */
72
+ cancelAllForModel(modelId: string): number;
73
+ /**
74
+ * Get statistics
75
+ */
76
+ getStats(): {
77
+ totalTasks: number;
78
+ pendingTasks: number;
79
+ runningTasks: number;
80
+ completedTasks: number;
81
+ failedTasks: number;
82
+ cancelledTasks: number;
83
+ queuedByModel: Record<string, number>;
84
+ };
85
+ /**
86
+ * Add event listener
87
+ */
88
+ on<T = unknown>(event: EventType, listener: EventListener<T>): void;
89
+ /**
90
+ * Remove event listener
91
+ */
92
+ off<T = unknown>(event: EventType, listener: EventListener<T>): void;
93
+ /**
94
+ * Emit event
95
+ */
96
+ private emit;
97
+ /**
98
+ * Clear completed/failed/cancelled tasks from history
99
+ */
100
+ clearHistory(): void;
101
+ /**
102
+ * Dispose the scheduler
103
+ */
104
+ dispose(): void;
105
+ }
106
+ /**
107
+ * Get the global scheduler instance
108
+ */
109
+ export declare function getScheduler(): InferenceScheduler;
110
+ /**
111
+ * Set the global scheduler instance
112
+ */
113
+ export declare function setScheduler(scheduler: InferenceScheduler): void;
114
+ /**
115
+ * Configure the global scheduler
116
+ */
117
+ export declare function configureScheduler(options: SchedulerOptions): void;
118
+ //# sourceMappingURL=scheduler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/core/scheduler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,YAAY,EAEZ,gBAAgB,EAGhB,SAAS,EACT,aAAa,EAEd,MAAM,YAAY,CAAC;AAuTpB;;;;;;;;;GASG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA6B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA+C;IACtE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAuC;IACpE,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAgC;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmD;IAC5E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAiD;IAC3E,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,OAAO,GAAE,gBAAqB;IAI1C;;OAEG;IACH,OAAO,CAAC,QAAQ;IAShB;;OAEG;IACH,OAAO,CAAC,aAAa;IASrB;;OAEG;IACH,OAAO,CAAC,YAAY;IAapB;;OAEG;YACW,YAAY;IAuE1B;;OAEG;IACH,QAAQ,CAAC,CAAC,EACR,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,QAAQ,GAAE,YAAuB,GAChC,aAAa,CAAC,CAAC,CAAC;IA2BnB;;OAEG;IACH,mBAAmB,CAAC,CAAC,EACnB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC1B,OAAO,GAAE,MAAoC,EAC7C,QAAQ,GAAE,YAAuB,GAChC,aAAa,CAAC,CAAC,CAAC;IA0BnB;;OAEG;IACG,WAAW,CAAC,CAAC,EACjB,KAAK,EAAE,KAAK,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,CAAC;QAC3B,QAAQ,CAAC,EAAE,YAAY,CAAC;KACzB,CAAC,GACD,OAAO,CAAC,CAAC,EAAE,CAAC;IAQf;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIlD;;OAEG;IACH,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAenC;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAgB1C;;OAEG;IACH,QAAQ,IAAI;QACV,UAAU,EAAE,MAAM,CAAC;QACnB,YAAY,EAAE,MAAM,CAAC;QACrB,YAAY,EAAE,MAAM,CAAC;QACrB,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,MAAM,CAAC;QACpB,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;KACvC;IAsCD;;OAEG;IACH,EAAE,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IASnE;;OAEG;IACH,GAAG,CAAC,CAAC,GAAG,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,IAAI;IAOpE;;OAEG;IACH,OAAO,CAAC,IAAI;IAmBZ;;OAEG;IACH,YAAY,IAAI,IAAI;IAYpB;;OAEG;IACH,OAAO,IAAI,IAAI;CAsBhB;AAQD;;GAEG;AACH,wBAAgB,YAAY,IAAI,kBAAkB,CAKjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,kBAAkB,GAAG,IAAI,CAKhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,gBAAgB,GAAG,IAAI,CAElE"}