comfyui-node 1.6.0 → 1.6.2
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/dist/.tsbuildinfo +1 -1
- package/dist/call-wrapper.js +856 -856
- package/dist/index.d.ts +13 -13
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -7
- package/dist/index.js.map +1 -1
- package/dist/multipool/client-registry.d.ts +33 -0
- package/dist/multipool/client-registry.d.ts.map +1 -0
- package/dist/multipool/client-registry.js +153 -0
- package/dist/multipool/client-registry.js.map +1 -0
- package/dist/multipool/helpers.d.ts +5 -0
- package/dist/multipool/helpers.d.ts.map +1 -0
- package/dist/multipool/helpers.js +53 -0
- package/dist/multipool/helpers.js.map +1 -0
- package/dist/multipool/index.d.ts +3 -0
- package/dist/multipool/index.d.ts.map +1 -0
- package/dist/multipool/index.js +3 -0
- package/dist/multipool/index.js.map +1 -0
- package/dist/multipool/interfaces.d.ts +13 -0
- package/dist/multipool/interfaces.d.ts.map +1 -0
- package/dist/multipool/interfaces.js +2 -0
- package/dist/multipool/interfaces.js.map +1 -0
- package/dist/multipool/job-profiler.d.ts +128 -0
- package/dist/multipool/job-profiler.d.ts.map +1 -0
- package/dist/multipool/job-profiler.js +222 -0
- package/dist/multipool/job-profiler.js.map +1 -0
- package/dist/multipool/job-queue-processor.d.ts +28 -0
- package/dist/multipool/job-queue-processor.d.ts.map +1 -0
- package/dist/multipool/job-queue-processor.js +197 -0
- package/dist/multipool/job-queue-processor.js.map +1 -0
- package/dist/multipool/job-state-registry.d.ts +67 -0
- package/dist/multipool/job-state-registry.d.ts.map +1 -0
- package/dist/multipool/job-state-registry.js +283 -0
- package/dist/multipool/job-state-registry.js.map +1 -0
- package/dist/multipool/logger.d.ts +30 -0
- package/dist/multipool/logger.d.ts.map +1 -0
- package/dist/multipool/logger.js +75 -0
- package/dist/multipool/logger.js.map +1 -0
- package/dist/multipool/multi-workflow-pool.d.ts +43 -0
- package/dist/multipool/multi-workflow-pool.d.ts.map +1 -0
- package/dist/multipool/multi-workflow-pool.js +314 -0
- package/dist/multipool/multi-workflow-pool.js.map +1 -0
- package/dist/multipool/pool-event-manager.d.ts +11 -0
- package/dist/multipool/pool-event-manager.d.ts.map +1 -0
- package/dist/multipool/pool-event-manager.js +28 -0
- package/dist/multipool/pool-event-manager.js.map +1 -0
- package/dist/multipool/tests/error-classification-tests.d.ts +2 -0
- package/dist/multipool/tests/error-classification-tests.d.ts.map +1 -0
- package/dist/multipool/tests/error-classification-tests.js +374 -0
- package/dist/multipool/tests/error-classification-tests.js.map +1 -0
- package/dist/multipool/tests/job-state-registry.d.ts +17 -0
- package/dist/multipool/tests/job-state-registry.d.ts.map +1 -0
- package/dist/multipool/tests/job-state-registry.js +24 -0
- package/dist/multipool/tests/job-state-registry.js.map +1 -0
- package/dist/multipool/tests/multipool-basic.d.ts +12 -0
- package/dist/multipool/tests/multipool-basic.d.ts.map +1 -0
- package/dist/multipool/tests/multipool-basic.js +142 -0
- package/dist/multipool/tests/multipool-basic.js.map +1 -0
- package/dist/multipool/tests/profiling-demo.d.ts +7 -0
- package/dist/multipool/tests/profiling-demo.d.ts.map +1 -0
- package/dist/multipool/tests/profiling-demo.js +88 -0
- package/dist/multipool/tests/profiling-demo.js.map +1 -0
- package/dist/multipool/tests/prompt-generator.d.ts +10 -0
- package/dist/multipool/tests/prompt-generator.d.ts.map +1 -0
- package/dist/multipool/tests/prompt-generator.js +26 -0
- package/dist/multipool/tests/prompt-generator.js.map +1 -0
- package/dist/multipool/tests/test-helpers.d.ts +4 -0
- package/dist/multipool/tests/test-helpers.d.ts.map +1 -0
- package/dist/multipool/tests/test-helpers.js +10 -0
- package/dist/multipool/tests/test-helpers.js.map +1 -0
- package/dist/multipool/tests/two-stage-edit-simulation.d.ts +32 -0
- package/dist/multipool/tests/two-stage-edit-simulation.d.ts.map +1 -0
- package/dist/multipool/tests/two-stage-edit-simulation.js +299 -0
- package/dist/multipool/tests/two-stage-edit-simulation.js.map +1 -0
- package/dist/multipool/workflow.d.ts +179 -0
- package/dist/multipool/workflow.d.ts.map +1 -0
- package/dist/multipool/workflow.js +334 -0
- package/dist/multipool/workflow.js.map +1 -0
- package/dist/pool/SmartPool.d.ts +143 -143
- package/dist/pool/SmartPool.d.ts.map +1 -1
- package/dist/pool/SmartPool.js +676 -676
- package/dist/pool/SmartPool.js.map +1 -1
- package/dist/pool/SmartPoolV2.d.ts +119 -119
- package/dist/pool/SmartPoolV2.js +586 -586
- package/dist/pool/WorkflowPool.d.ts +202 -202
- package/dist/pool/WorkflowPool.d.ts.map +1 -1
- package/dist/pool/WorkflowPool.js +845 -840
- package/dist/pool/WorkflowPool.js.map +1 -1
- package/dist/pool/client/ClientManager.d.ts +86 -86
- package/dist/pool/client/ClientManager.js +215 -215
- package/dist/pool/index.d.ts +9 -11
- package/dist/pool/index.d.ts.map +1 -1
- package/dist/pool/index.js +3 -5
- package/dist/pool/index.js.map +1 -1
- package/package.json +1 -1
package/dist/pool/SmartPool.d.ts
CHANGED
|
@@ -1,144 +1,144 @@
|
|
|
1
|
-
import { WorkflowAffinity } from "./types/affinity.js";
|
|
2
|
-
import { JobId, JobRecord } from "./types/job.js";
|
|
3
|
-
import { ComfyApi } from "
|
|
4
|
-
import { Workflow } from "
|
|
5
|
-
import { TypedEventTarget } from "
|
|
6
|
-
interface SmartPoolOptions {
|
|
7
|
-
connectionTimeoutMs: number;
|
|
8
|
-
}
|
|
9
|
-
interface PoolEvent {
|
|
10
|
-
type: string;
|
|
11
|
-
promptId: string;
|
|
12
|
-
clientId: string;
|
|
13
|
-
workflowHash: string;
|
|
14
|
-
data?: any;
|
|
15
|
-
}
|
|
16
|
-
interface ClientQueueState {
|
|
17
|
-
queuedJobs: number;
|
|
18
|
-
runningJobs: number;
|
|
19
|
-
}
|
|
20
|
-
interface ServerPerformanceMetrics {
|
|
21
|
-
clientId: string;
|
|
22
|
-
totalJobsCompleted: number;
|
|
23
|
-
totalExecutionTimeMs: number;
|
|
24
|
-
averageExecutionTimeMs: number;
|
|
25
|
-
lastJobDurationMs?: number;
|
|
26
|
-
}
|
|
27
|
-
interface SmartPoolEventMap extends Record<string, CustomEvent<any>> {
|
|
28
|
-
"job:queued": CustomEvent<{
|
|
29
|
-
job: JobRecord;
|
|
30
|
-
}>;
|
|
31
|
-
"job:accepted": CustomEvent<{
|
|
32
|
-
job: JobRecord;
|
|
33
|
-
}>;
|
|
34
|
-
"job:started": CustomEvent<{
|
|
35
|
-
job: JobRecord;
|
|
36
|
-
}>;
|
|
37
|
-
"job:completed": CustomEvent<{
|
|
38
|
-
job: JobRecord;
|
|
39
|
-
}>;
|
|
40
|
-
"job:failed": CustomEvent<{
|
|
41
|
-
job: JobRecord;
|
|
42
|
-
willRetry?: boolean;
|
|
43
|
-
}>;
|
|
44
|
-
}
|
|
45
|
-
export declare class SmartPool extends TypedEventTarget<SmartPoolEventMap> {
|
|
46
|
-
clientMap: Map<string, ComfyApi>;
|
|
47
|
-
clientQueueStates: Map<string, ClientQueueState>;
|
|
48
|
-
jobStore: Map<JobId, JobRecord>;
|
|
49
|
-
affinities: Map<string, WorkflowAffinity>;
|
|
50
|
-
serverPerformance: Map<string, ServerPerformanceMetrics>;
|
|
51
|
-
private queueAdapter;
|
|
52
|
-
private processingNextJob;
|
|
53
|
-
private options;
|
|
54
|
-
hooks: {
|
|
55
|
-
any?: (event: PoolEvent) => void;
|
|
56
|
-
[key: string]: ((event: PoolEvent) => void) | undefined;
|
|
57
|
-
};
|
|
58
|
-
constructor(clients: (ComfyApi | string)[], options?: Partial<SmartPoolOptions>);
|
|
59
|
-
emitLegacy(event: PoolEvent): void;
|
|
60
|
-
/**
|
|
61
|
-
* Adds an event listener for the specified event type.
|
|
62
|
-
* Properly typed wrapper around EventTarget.addEventListener.
|
|
63
|
-
*/
|
|
64
|
-
on<K extends keyof SmartPoolEventMap>(type: K, handler: (ev: SmartPoolEventMap[K]) => void, options?: AddEventListenerOptions | boolean): () => void;
|
|
65
|
-
/**
|
|
66
|
-
* Removes an event listener for the specified event type.
|
|
67
|
-
* Properly typed wrapper around EventTarget.removeEventListener.
|
|
68
|
-
*/
|
|
69
|
-
off<K extends keyof SmartPoolEventMap>(type: K, handler: (ev: SmartPoolEventMap[K]) => void, options?: EventListenerOptions | boolean): void;
|
|
70
|
-
/**
|
|
71
|
-
* Adds a one-time event listener for the specified event type.
|
|
72
|
-
*/
|
|
73
|
-
once<K extends keyof SmartPoolEventMap>(type: K, handler: (ev: SmartPoolEventMap[K]) => void, options?: AddEventListenerOptions | boolean): () => void;
|
|
74
|
-
connect(): Promise<void>;
|
|
75
|
-
shutdown(): void;
|
|
76
|
-
syncQueueStates(): Promise<void>;
|
|
77
|
-
addJob(jobId: JobId, jobRecord: JobRecord): void;
|
|
78
|
-
getJob(jobId: JobId): JobRecord | undefined;
|
|
79
|
-
removeJob(jobId: JobId): void;
|
|
80
|
-
setAffinity(workflow: object, affinity: Omit<WorkflowAffinity, "workflowHash">): void;
|
|
81
|
-
getAffinity(workflowHash: string): WorkflowAffinity | undefined;
|
|
82
|
-
removeAffinity(workflowHash: string): void;
|
|
83
|
-
/**
|
|
84
|
-
* Track server performance metrics for job execution
|
|
85
|
-
*/
|
|
86
|
-
private updateServerPerformance;
|
|
87
|
-
/**
|
|
88
|
-
* Get server performance metrics
|
|
89
|
-
*/
|
|
90
|
-
getServerPerformance(clientId: string): ServerPerformanceMetrics | undefined;
|
|
91
|
-
/**
|
|
92
|
-
* Get sorted list of servers by performance (fastest first) within a given set
|
|
93
|
-
*/
|
|
94
|
-
sortServersByPerformance(serverIds: string[]): string[];
|
|
95
|
-
/**
|
|
96
|
-
* Enqueue a workflow for execution by the pool.
|
|
97
|
-
* Auto-triggers processing via setImmediate (batteries included).
|
|
98
|
-
*/
|
|
99
|
-
enqueue(workflow: Workflow<any>, opts?: {
|
|
100
|
-
preferredClientIds?: string[];
|
|
101
|
-
priority?: number;
|
|
102
|
-
}): Promise<JobId>;
|
|
103
|
-
/**
|
|
104
|
-
* Entry point for queue processing with deduplication guard.
|
|
105
|
-
* Prevents concurrent processing of jobs.
|
|
106
|
-
* Poll-based approach: check idle servers, collect compatible jobs, enqueue only when slots available.
|
|
107
|
-
*/
|
|
108
|
-
private processNextJobQueued;
|
|
109
|
-
/**
|
|
110
|
-
* Find servers that are currently idle (no running or pending jobs)
|
|
111
|
-
*/
|
|
112
|
-
private findIdleServers;
|
|
113
|
-
/**
|
|
114
|
-
* Assign compatible jobs from our queue to idle servers
|
|
115
|
-
* Returns number of jobs assigned
|
|
116
|
-
*/
|
|
117
|
-
private assignJobsToIdleServers;
|
|
118
|
-
/**
|
|
119
|
-
* Check if a job is compatible with a server
|
|
120
|
-
*/
|
|
121
|
-
private isJobCompatibleWithServer;
|
|
122
|
-
/**
|
|
123
|
-
* Enqueue a job on a specific server
|
|
124
|
-
* Returns true if successful, false if failed
|
|
125
|
-
*/
|
|
126
|
-
private enqueueJobOnServer;
|
|
127
|
-
/**
|
|
128
|
-
* Retrieve images from a completed job's execution.
|
|
129
|
-
*/
|
|
130
|
-
getJobOutputImages(jobId: JobId, nodeId?: string): Promise<Array<{
|
|
131
|
-
filename: string;
|
|
132
|
-
blob: Blob;
|
|
133
|
-
}>>;
|
|
134
|
-
executeImmediate(workflow: Workflow<any>, opts: {
|
|
135
|
-
preferableClientIds?: string[];
|
|
136
|
-
}): Promise<any>;
|
|
137
|
-
/**
|
|
138
|
-
* Build the return value for executeImmediate() with images and blob.
|
|
139
|
-
*/
|
|
140
|
-
private buildExecuteImmediateResult;
|
|
141
|
-
private waitForExecutionCompletion;
|
|
142
|
-
}
|
|
143
|
-
export {};
|
|
1
|
+
import { WorkflowAffinity } from "./types/affinity.js";
|
|
2
|
+
import { JobId, JobRecord } from "./types/job.js";
|
|
3
|
+
import { ComfyApi } from "../client.js";
|
|
4
|
+
import { Workflow } from "../workflow.js";
|
|
5
|
+
import { TypedEventTarget } from "../typed-event-target.js";
|
|
6
|
+
interface SmartPoolOptions {
|
|
7
|
+
connectionTimeoutMs: number;
|
|
8
|
+
}
|
|
9
|
+
interface PoolEvent {
|
|
10
|
+
type: string;
|
|
11
|
+
promptId: string;
|
|
12
|
+
clientId: string;
|
|
13
|
+
workflowHash: string;
|
|
14
|
+
data?: any;
|
|
15
|
+
}
|
|
16
|
+
interface ClientQueueState {
|
|
17
|
+
queuedJobs: number;
|
|
18
|
+
runningJobs: number;
|
|
19
|
+
}
|
|
20
|
+
interface ServerPerformanceMetrics {
|
|
21
|
+
clientId: string;
|
|
22
|
+
totalJobsCompleted: number;
|
|
23
|
+
totalExecutionTimeMs: number;
|
|
24
|
+
averageExecutionTimeMs: number;
|
|
25
|
+
lastJobDurationMs?: number;
|
|
26
|
+
}
|
|
27
|
+
interface SmartPoolEventMap extends Record<string, CustomEvent<any>> {
|
|
28
|
+
"job:queued": CustomEvent<{
|
|
29
|
+
job: JobRecord;
|
|
30
|
+
}>;
|
|
31
|
+
"job:accepted": CustomEvent<{
|
|
32
|
+
job: JobRecord;
|
|
33
|
+
}>;
|
|
34
|
+
"job:started": CustomEvent<{
|
|
35
|
+
job: JobRecord;
|
|
36
|
+
}>;
|
|
37
|
+
"job:completed": CustomEvent<{
|
|
38
|
+
job: JobRecord;
|
|
39
|
+
}>;
|
|
40
|
+
"job:failed": CustomEvent<{
|
|
41
|
+
job: JobRecord;
|
|
42
|
+
willRetry?: boolean;
|
|
43
|
+
}>;
|
|
44
|
+
}
|
|
45
|
+
export declare class SmartPool extends TypedEventTarget<SmartPoolEventMap> {
|
|
46
|
+
clientMap: Map<string, ComfyApi>;
|
|
47
|
+
clientQueueStates: Map<string, ClientQueueState>;
|
|
48
|
+
jobStore: Map<JobId, JobRecord>;
|
|
49
|
+
affinities: Map<string, WorkflowAffinity>;
|
|
50
|
+
serverPerformance: Map<string, ServerPerformanceMetrics>;
|
|
51
|
+
private queueAdapter;
|
|
52
|
+
private processingNextJob;
|
|
53
|
+
private options;
|
|
54
|
+
hooks: {
|
|
55
|
+
any?: (event: PoolEvent) => void;
|
|
56
|
+
[key: string]: ((event: PoolEvent) => void) | undefined;
|
|
57
|
+
};
|
|
58
|
+
constructor(clients: (ComfyApi | string)[], options?: Partial<SmartPoolOptions>);
|
|
59
|
+
emitLegacy(event: PoolEvent): void;
|
|
60
|
+
/**
|
|
61
|
+
* Adds an event listener for the specified event type.
|
|
62
|
+
* Properly typed wrapper around EventTarget.addEventListener.
|
|
63
|
+
*/
|
|
64
|
+
on<K extends keyof SmartPoolEventMap>(type: K, handler: (ev: SmartPoolEventMap[K]) => void, options?: AddEventListenerOptions | boolean): () => void;
|
|
65
|
+
/**
|
|
66
|
+
* Removes an event listener for the specified event type.
|
|
67
|
+
* Properly typed wrapper around EventTarget.removeEventListener.
|
|
68
|
+
*/
|
|
69
|
+
off<K extends keyof SmartPoolEventMap>(type: K, handler: (ev: SmartPoolEventMap[K]) => void, options?: EventListenerOptions | boolean): void;
|
|
70
|
+
/**
|
|
71
|
+
* Adds a one-time event listener for the specified event type.
|
|
72
|
+
*/
|
|
73
|
+
once<K extends keyof SmartPoolEventMap>(type: K, handler: (ev: SmartPoolEventMap[K]) => void, options?: AddEventListenerOptions | boolean): () => void;
|
|
74
|
+
connect(): Promise<void>;
|
|
75
|
+
shutdown(): void;
|
|
76
|
+
syncQueueStates(): Promise<void>;
|
|
77
|
+
addJob(jobId: JobId, jobRecord: JobRecord): void;
|
|
78
|
+
getJob(jobId: JobId): JobRecord | undefined;
|
|
79
|
+
removeJob(jobId: JobId): void;
|
|
80
|
+
setAffinity(workflow: object, affinity: Omit<WorkflowAffinity, "workflowHash">): void;
|
|
81
|
+
getAffinity(workflowHash: string): WorkflowAffinity | undefined;
|
|
82
|
+
removeAffinity(workflowHash: string): void;
|
|
83
|
+
/**
|
|
84
|
+
* Track server performance metrics for job execution
|
|
85
|
+
*/
|
|
86
|
+
private updateServerPerformance;
|
|
87
|
+
/**
|
|
88
|
+
* Get server performance metrics
|
|
89
|
+
*/
|
|
90
|
+
getServerPerformance(clientId: string): ServerPerformanceMetrics | undefined;
|
|
91
|
+
/**
|
|
92
|
+
* Get sorted list of servers by performance (fastest first) within a given set
|
|
93
|
+
*/
|
|
94
|
+
sortServersByPerformance(serverIds: string[]): string[];
|
|
95
|
+
/**
|
|
96
|
+
* Enqueue a workflow for execution by the pool.
|
|
97
|
+
* Auto-triggers processing via setImmediate (batteries included).
|
|
98
|
+
*/
|
|
99
|
+
enqueue(workflow: Workflow<any>, opts?: {
|
|
100
|
+
preferredClientIds?: string[];
|
|
101
|
+
priority?: number;
|
|
102
|
+
}): Promise<JobId>;
|
|
103
|
+
/**
|
|
104
|
+
* Entry point for queue processing with deduplication guard.
|
|
105
|
+
* Prevents concurrent processing of jobs.
|
|
106
|
+
* Poll-based approach: check idle servers, collect compatible jobs, enqueue only when slots available.
|
|
107
|
+
*/
|
|
108
|
+
private processNextJobQueued;
|
|
109
|
+
/**
|
|
110
|
+
* Find servers that are currently idle (no running or pending jobs)
|
|
111
|
+
*/
|
|
112
|
+
private findIdleServers;
|
|
113
|
+
/**
|
|
114
|
+
* Assign compatible jobs from our queue to idle servers
|
|
115
|
+
* Returns number of jobs assigned
|
|
116
|
+
*/
|
|
117
|
+
private assignJobsToIdleServers;
|
|
118
|
+
/**
|
|
119
|
+
* Check if a job is compatible with a server
|
|
120
|
+
*/
|
|
121
|
+
private isJobCompatibleWithServer;
|
|
122
|
+
/**
|
|
123
|
+
* Enqueue a job on a specific server
|
|
124
|
+
* Returns true if successful, false if failed
|
|
125
|
+
*/
|
|
126
|
+
private enqueueJobOnServer;
|
|
127
|
+
/**
|
|
128
|
+
* Retrieve images from a completed job's execution.
|
|
129
|
+
*/
|
|
130
|
+
getJobOutputImages(jobId: JobId, nodeId?: string): Promise<Array<{
|
|
131
|
+
filename: string;
|
|
132
|
+
blob: Blob;
|
|
133
|
+
}>>;
|
|
134
|
+
executeImmediate(workflow: Workflow<any>, opts: {
|
|
135
|
+
preferableClientIds?: string[];
|
|
136
|
+
}): Promise<any>;
|
|
137
|
+
/**
|
|
138
|
+
* Build the return value for executeImmediate() with images and blob.
|
|
139
|
+
*/
|
|
140
|
+
private buildExecuteImmediateResult;
|
|
141
|
+
private waitForExecutionCompletion;
|
|
142
|
+
}
|
|
143
|
+
export {};
|
|
144
144
|
//# sourceMappingURL=SmartPool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SmartPool.d.ts","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAiC,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"SmartPool.d.ts","sourceRoot":"","sources":["../../src/pool/SmartPool.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,SAAS,EAAiC,MAAM,gBAAgB,CAAC;AAEjF,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAE5D,UAAU,gBAAgB;IACxB,mBAAmB,EAAE,MAAM,CAAC;CAC7B;AAMD,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ;AAED,UAAU,gBAAgB;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,wBAAwB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,UAAU,iBAAkB,SAAQ,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IAClE,YAAY,EAAE,WAAW,CAAC;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC9C,cAAc,EAAE,WAAW,CAAC;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAChD,aAAa,EAAE,WAAW,CAAC;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IAC/C,eAAe,EAAE,WAAW,CAAC;QAAE,GAAG,EAAE,SAAS,CAAA;KAAE,CAAC,CAAC;IACjD,YAAY,EAAE,WAAW,CAAC;QAAE,GAAG,EAAE,SAAS,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpE;AAED,qBAAa,SAAU,SAAQ,gBAAgB,CAAC,iBAAiB,CAAC;IAGhE,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAa;IAG7C,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAG7D,QAAQ,EAAE,GAAG,CAAC,KAAK,EAAE,SAAS,CAAC,CAAa;IAG5C,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAa;IAGtD,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAE,wBAAwB,CAAC,CAAa;IAGrE,OAAO,CAAC,YAAY,CAAqB;IAGzC,OAAO,CAAC,iBAAiB,CAAS;IAGlC,OAAO,CAAC,OAAO,CAAmB;IAGlC,KAAK,EAAE;QACL,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;QACjC,CAAC,GAAG,EAAE,MAAM,GAAG,CAAC,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;KACzD,CAAM;gBAEK,OAAO,EAAE,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC;IAuB/E,UAAU,CAAC,KAAK,EAAE,SAAS;IAU3B;;;OAGG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,iBAAiB,EAClC,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAC3C,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO;IAM7C;;;OAGG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACnC,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAC3C,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO;IAK1C;;OAEG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,iBAAiB,EACpC,IAAI,EAAE,CAAC,EACP,OAAO,EAAE,CAAC,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,KAAK,IAAI,EAC3C,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO;IAKvC,OAAO;IA8Cb,QAAQ;IAUF,eAAe;IAmBrB,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS;IAKzC,MAAM,CAAC,KAAK,EAAE,KAAK,GAAG,SAAS,GAAG,SAAS;IAK3C,SAAS,CAAC,KAAK,EAAE,KAAK;IAKtB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC;IAS9E,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS;IAK/D,cAAc,CAAC,YAAY,EAAE,MAAM;IAInC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAoB/B;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS;IAI5E;;OAEG;IACH,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IAcvD;;;OAGG;IACG,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,EAAE;QAC5C,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;QAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,OAAO,CAAC,KAAK,CAAC;IAiDlB;;;;OAIG;YACW,oBAAoB;IAoClC;;OAEG;IACH,OAAO,CAAC,eAAe;IAevB;;;OAGG;YACW,uBAAuB;IAwFrC;;OAEG;IACH,OAAO,CAAC,yBAAyB;IAgBjC;;;OAGG;YACW,kBAAkB;IAsEhC;;OAEG;IACG,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC,CAAC;IAyDnG,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE;QACpD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;KAChC,GAAG,OAAO,CAAC,GAAG,CAAC;IA6ChB;;OAEG;YACW,2BAA2B;YAyB3B,0BAA0B;CA2GzC"}
|