@context-action/core 0.0.3 → 0.0.5
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 +272 -0
- package/dist/index.cjs +929 -284
- package/dist/index.d.cts +214 -226
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.ts +214 -226
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +926 -275
- package/dist/index.js.map +1 -1
- package/package.json +14 -12
package/dist/index.d.cts
CHANGED
|
@@ -1,244 +1,232 @@
|
|
|
1
|
-
//#region src/
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
*/
|
|
5
|
-
declare enum LogLevel {
|
|
6
|
-
TRACE = 0,
|
|
7
|
-
DEBUG = 1,
|
|
8
|
-
INFO = 2,
|
|
9
|
-
WARN = 3,
|
|
10
|
-
ERROR = 4,
|
|
11
|
-
FATAL = 5,
|
|
12
|
-
}
|
|
13
|
-
/**
|
|
14
|
-
* Logger interface for custom logger implementations
|
|
15
|
-
*/
|
|
16
|
-
interface Logger {
|
|
17
|
-
trace(message: string, ...args: any[]): void;
|
|
18
|
-
debug(message: string, ...args: any[]): void;
|
|
19
|
-
info(message: string, ...args: any[]): void;
|
|
20
|
-
warn(message: string, ...args: any[]): void;
|
|
21
|
-
error(message: string, ...args: any[]): void;
|
|
22
|
-
fatal(message: string, ...args: any[]): void;
|
|
1
|
+
//#region src/types.d.ts
|
|
2
|
+
interface ActionPayloadMap {
|
|
3
|
+
[actionName: string]: unknown;
|
|
23
4
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
info(message: string, ...args: any[]): void;
|
|
35
|
-
warn(message: string, ...args: any[]): void;
|
|
36
|
-
error(message: string, ...args: any[]): void;
|
|
37
|
-
fatal(message: string, ...args: any[]): void;
|
|
38
|
-
setLevel(level: LogLevel): void;
|
|
5
|
+
interface PipelineController<T = any, R = void> {
|
|
6
|
+
next(): void;
|
|
7
|
+
abort(reason?: string): void;
|
|
8
|
+
modifyPayload(modifier: (payload: T) => T): void;
|
|
9
|
+
getPayload(): T;
|
|
10
|
+
jumpToPriority(priority: number): void;
|
|
11
|
+
return(result: R): void;
|
|
12
|
+
setResult(result: R): void;
|
|
13
|
+
getResults(): R[];
|
|
14
|
+
mergeResult(merger: (previousResults: R[], currentResult: R) => R): void;
|
|
39
15
|
}
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
traceId?: string;
|
|
68
|
-
/** Span ID for current operation */
|
|
69
|
-
spanId?: string;
|
|
70
|
-
/** Parent span ID for operation hierarchy */
|
|
71
|
-
parentSpanId?: string;
|
|
72
|
-
/** Additional context metadata */
|
|
16
|
+
type ActionHandler<T = any, R = void> = (payload: T, controller: PipelineController<T, R>) => R | Promise<R>;
|
|
17
|
+
interface HandlerConfig {
|
|
18
|
+
priority?: number;
|
|
19
|
+
id?: string;
|
|
20
|
+
blocking?: boolean;
|
|
21
|
+
once?: boolean;
|
|
22
|
+
condition?: () => boolean;
|
|
23
|
+
debounce?: number;
|
|
24
|
+
throttle?: number;
|
|
25
|
+
validation?: (payload: any) => boolean;
|
|
26
|
+
middleware?: boolean;
|
|
27
|
+
tags?: string[];
|
|
28
|
+
category?: string;
|
|
29
|
+
description?: string;
|
|
30
|
+
version?: string;
|
|
31
|
+
returnType?: 'value' | 'merge' | 'collect';
|
|
32
|
+
timeout?: number;
|
|
33
|
+
retries?: number;
|
|
34
|
+
dependencies?: string[];
|
|
35
|
+
conflicts?: string[];
|
|
36
|
+
environment?: 'development' | 'production' | 'test';
|
|
37
|
+
feature?: string;
|
|
38
|
+
metrics?: {
|
|
39
|
+
collectTiming?: boolean;
|
|
40
|
+
collectErrors?: boolean;
|
|
41
|
+
customMetrics?: Record<string, any>;
|
|
42
|
+
};
|
|
73
43
|
metadata?: Record<string, any>;
|
|
74
44
|
}
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
/** Set OpenTelemetry context */
|
|
80
|
-
setContext(context: OtelContext): void;
|
|
81
|
-
/** Get current OpenTelemetry context */
|
|
82
|
-
getContext(): OtelContext;
|
|
83
|
-
/** Clear OpenTelemetry context */
|
|
84
|
-
clearContext(): void;
|
|
85
|
-
/** Log with OpenTelemetry context */
|
|
86
|
-
logWithContext(level: LogLevel, message: string, ...args: any[]): void;
|
|
45
|
+
interface HandlerRegistration<T = any, R = void> {
|
|
46
|
+
handler: ActionHandler<T, R>;
|
|
47
|
+
config: Required<HandlerConfig>;
|
|
48
|
+
id: string;
|
|
87
49
|
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
info(message: string, ...args: any[]): void;
|
|
102
|
-
warn(message: string, ...args: any[]): void;
|
|
103
|
-
error(message: string, ...args: any[]): void;
|
|
104
|
-
fatal(message: string, ...args: any[]): void;
|
|
50
|
+
type ExecutionMode = 'sequential' | 'parallel' | 'race';
|
|
51
|
+
interface PipelineContext<T = any, R = void> {
|
|
52
|
+
action: string;
|
|
53
|
+
payload: T;
|
|
54
|
+
handlers: HandlerRegistration<T, R>[];
|
|
55
|
+
aborted: boolean;
|
|
56
|
+
abortReason?: string;
|
|
57
|
+
currentIndex: number;
|
|
58
|
+
jumpToPriority?: number;
|
|
59
|
+
executionMode: ExecutionMode;
|
|
60
|
+
results: R[];
|
|
61
|
+
terminated: boolean;
|
|
62
|
+
terminationResult?: R;
|
|
105
63
|
}
|
|
106
|
-
//# sourceMappingURL=logger.d.ts.map
|
|
107
|
-
//#endregion
|
|
108
|
-
//#region src/ActionRegister.d.ts
|
|
109
|
-
/**
|
|
110
|
-
* Controller object provided to action handlers for pipeline management
|
|
111
|
-
* @template T - The type of the payload being processed
|
|
112
|
-
*/
|
|
113
|
-
type PipelineController<T = any> = {
|
|
114
|
-
/** Continue to the next handler in the pipeline */
|
|
115
|
-
next: () => void;
|
|
116
|
-
/** Abort the pipeline execution with an optional reason */
|
|
117
|
-
abort: (reason?: string) => void;
|
|
118
|
-
/** Modify the payload that will be passed to subsequent handlers */
|
|
119
|
-
modifyPayload: (modifier: (payload: T) => T) => void;
|
|
120
|
-
};
|
|
121
|
-
/**
|
|
122
|
-
* Action handler function that processes actions in the pipeline
|
|
123
|
-
* @template T - The type of the payload
|
|
124
|
-
* @param payload - The data passed to the handler
|
|
125
|
-
* @param controller - Pipeline controller for flow management
|
|
126
|
-
* @returns void or Promise<void> for async handlers
|
|
127
|
-
*/
|
|
128
|
-
type ActionHandler<T = any> = (payload: T, controller: PipelineController<T>) => void | Promise<void>;
|
|
129
|
-
/**
|
|
130
|
-
* Configuration options for action handlers
|
|
131
|
-
*/
|
|
132
|
-
type HandlerConfig = {
|
|
133
|
-
/** Priority level (higher numbers execute first). Default: 0 */
|
|
134
|
-
priority?: number;
|
|
135
|
-
/** Unique identifier for the handler. Auto-generated if not provided */
|
|
136
|
-
id?: string;
|
|
137
|
-
/** Whether to wait for async handlers to complete. Default: false */
|
|
138
|
-
blocking?: boolean;
|
|
139
|
-
};
|
|
140
|
-
/**
|
|
141
|
-
* Base interface for defining action payload mappings
|
|
142
|
-
* @example
|
|
143
|
-
* ```typescript
|
|
144
|
-
* interface MyActions extends ActionPayloadMap {
|
|
145
|
-
* increment: void;
|
|
146
|
-
* setCount: number;
|
|
147
|
-
* updateUser: { id: string; name: string };
|
|
148
|
-
* }
|
|
149
|
-
* ```
|
|
150
|
-
*/
|
|
151
|
-
interface ActionPayloadMap {}
|
|
152
|
-
/**
|
|
153
|
-
* Configuration options for ActionRegister
|
|
154
|
-
*/
|
|
155
64
|
interface ActionRegisterConfig {
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
65
|
+
name?: string;
|
|
66
|
+
registry?: {
|
|
67
|
+
debug?: boolean;
|
|
68
|
+
autoCleanup?: boolean;
|
|
69
|
+
maxHandlers?: number;
|
|
70
|
+
defaultExecutionMode?: ExecutionMode;
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
interface DispatchOptions {
|
|
74
|
+
debounce?: number;
|
|
75
|
+
throttle?: number;
|
|
76
|
+
executionMode?: ExecutionMode;
|
|
77
|
+
signal?: AbortSignal;
|
|
78
|
+
autoAbort?: {
|
|
79
|
+
enabled: boolean;
|
|
80
|
+
onControllerCreated?: (controller: AbortController) => void;
|
|
81
|
+
allowHandlerAbort?: boolean;
|
|
82
|
+
};
|
|
83
|
+
filter?: {
|
|
84
|
+
tags?: string[];
|
|
85
|
+
category?: string;
|
|
86
|
+
handlerIds?: string[];
|
|
87
|
+
excludeTags?: string[];
|
|
88
|
+
excludeCategory?: string;
|
|
89
|
+
excludeHandlerIds?: string[];
|
|
90
|
+
environment?: 'development' | 'production' | 'test';
|
|
91
|
+
feature?: string;
|
|
92
|
+
custom?: (config: Required<HandlerConfig>) => boolean;
|
|
93
|
+
};
|
|
94
|
+
result?: {
|
|
95
|
+
strategy?: 'first' | 'last' | 'all' | 'merge' | 'custom';
|
|
96
|
+
merger?: <R>(results: R[]) => R;
|
|
97
|
+
collect?: boolean;
|
|
98
|
+
timeout?: number;
|
|
99
|
+
maxResults?: number;
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
interface ExecutionResult<R = void> {
|
|
103
|
+
success: boolean;
|
|
104
|
+
aborted: boolean;
|
|
105
|
+
abortReason?: string;
|
|
106
|
+
terminated: boolean;
|
|
107
|
+
result?: R;
|
|
108
|
+
results: R[];
|
|
109
|
+
execution: {
|
|
110
|
+
duration: number;
|
|
111
|
+
handlersExecuted: number;
|
|
112
|
+
handlersSkipped: number;
|
|
113
|
+
handlersFailed: number;
|
|
114
|
+
startTime: number;
|
|
115
|
+
endTime: number;
|
|
116
|
+
};
|
|
117
|
+
handlers: Array<{
|
|
118
|
+
id: string;
|
|
119
|
+
executed: boolean;
|
|
120
|
+
duration?: number;
|
|
121
|
+
result?: R;
|
|
122
|
+
error?: Error;
|
|
123
|
+
metadata?: Record<string, any>;
|
|
124
|
+
}>;
|
|
125
|
+
errors: Array<{
|
|
126
|
+
handlerId: string;
|
|
127
|
+
error: Error;
|
|
128
|
+
timestamp: number;
|
|
129
|
+
}>;
|
|
164
130
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
131
|
+
type UnregisterFunction = () => void;
|
|
132
|
+
interface ActionDispatcher<T extends ActionPayloadMap> {
|
|
133
|
+
<K extends keyof T>(action: T[K] extends void ? K : never, options?: DispatchOptions): Promise<void>;
|
|
134
|
+
<K extends keyof T>(action: K, payload: T[K], options?: DispatchOptions): Promise<void>;
|
|
135
|
+
}
|
|
136
|
+
interface ActionRegistryInfo<T extends ActionPayloadMap> {
|
|
137
|
+
name: string;
|
|
138
|
+
totalActions: number;
|
|
139
|
+
totalHandlers: number;
|
|
140
|
+
registeredActions: Array<keyof T>;
|
|
141
|
+
actionExecutionModes: Map<keyof T, ExecutionMode>;
|
|
142
|
+
defaultExecutionMode: ExecutionMode;
|
|
143
|
+
}
|
|
144
|
+
interface ActionHandlerStats<T extends ActionPayloadMap> {
|
|
145
|
+
action: keyof T;
|
|
146
|
+
handlerCount: number;
|
|
147
|
+
handlersByPriority: Array<{
|
|
148
|
+
priority: number;
|
|
149
|
+
handlers: Array<{
|
|
150
|
+
id: string;
|
|
151
|
+
tags: string[];
|
|
152
|
+
category?: string;
|
|
153
|
+
description?: string;
|
|
154
|
+
version?: string;
|
|
155
|
+
}>;
|
|
156
|
+
}>;
|
|
157
|
+
executionStats?: {
|
|
158
|
+
totalExecutions: number;
|
|
159
|
+
averageDuration: number;
|
|
160
|
+
successRate: number;
|
|
161
|
+
errorCount: number;
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
//# sourceMappingURL=types.d.ts.map
|
|
165
|
+
//#endregion
|
|
166
|
+
//#region src/ActionRegister.d.ts
|
|
186
167
|
declare class ActionRegister<T extends ActionPayloadMap = ActionPayloadMap> {
|
|
187
168
|
private pipelines;
|
|
188
|
-
private atomSetters;
|
|
189
169
|
private handlerCounter;
|
|
190
|
-
readonly
|
|
170
|
+
private readonly actionGuard;
|
|
171
|
+
private executionMode;
|
|
172
|
+
private actionExecutionModes;
|
|
173
|
+
readonly name: string;
|
|
174
|
+
private readonly registryConfig;
|
|
175
|
+
private executionStats;
|
|
191
176
|
constructor(config?: ActionRegisterConfig);
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
* @param action - The action to dispatch
|
|
219
|
-
* @param payload - The payload data to pass to handlers
|
|
220
|
-
* @returns Promise that resolves when all handlers complete
|
|
221
|
-
*/
|
|
222
|
-
dispatch<K extends keyof T>(action: K, payload: T[K]): Promise<void>;
|
|
223
|
-
private sortPipeline;
|
|
177
|
+
register<K extends keyof T, R = void>(action: K, handler: ActionHandler<T[K], R>, config?: HandlerConfig): UnregisterFunction;
|
|
178
|
+
dispatch<K extends keyof T>(action: K, payload?: T[K], options?: DispatchOptions): Promise<void>;
|
|
179
|
+
dispatchWithResult<K extends keyof T, R = void>(action: K, payload?: T[K], options?: DispatchOptions): Promise<ExecutionResult<R>>;
|
|
180
|
+
private filterHandlers;
|
|
181
|
+
private processResults;
|
|
182
|
+
private executePipeline;
|
|
183
|
+
private cleanupOneTimeHandlers;
|
|
184
|
+
private updateExecutionStats;
|
|
185
|
+
getHandlerCount<K extends keyof T>(action: K): number;
|
|
186
|
+
hasHandlers<K extends keyof T>(action: K): boolean;
|
|
187
|
+
getRegisteredActions(): (keyof T)[];
|
|
188
|
+
clearAction<K extends keyof T>(action: K): void;
|
|
189
|
+
clearAll(): void;
|
|
190
|
+
getName(): string;
|
|
191
|
+
getRegistryInfo(): ActionRegistryInfo<T>;
|
|
192
|
+
getActionStats<K extends keyof T>(action: K): ActionHandlerStats<T> | null;
|
|
193
|
+
getAllActionStats(): Array<ActionHandlerStats<T>>;
|
|
194
|
+
getHandlersByTag(tag: string): Map<keyof T, HandlerRegistration<any, any>[]>;
|
|
195
|
+
getHandlersByCategory(category: string): Map<keyof T, HandlerRegistration<any, any>[]>;
|
|
196
|
+
setActionExecutionMode<K extends keyof T>(action: K, mode: ExecutionMode): void;
|
|
197
|
+
getActionExecutionMode<K extends keyof T>(action: K): ExecutionMode;
|
|
198
|
+
removeActionExecutionMode<K extends keyof T>(action: K): void;
|
|
199
|
+
clearExecutionStats(): void;
|
|
200
|
+
clearActionExecutionStats<K extends keyof T>(action: K): void;
|
|
201
|
+
getRegistryConfig(): ActionRegisterConfig['registry'];
|
|
202
|
+
isDebugEnabled(): boolean;
|
|
224
203
|
}
|
|
225
204
|
//# sourceMappingURL=ActionRegister.d.ts.map
|
|
226
205
|
//#endregion
|
|
227
|
-
//#region src/
|
|
228
|
-
interface
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
206
|
+
//#region src/action-guard.d.ts
|
|
207
|
+
interface GuardState {
|
|
208
|
+
lastExecuted: number;
|
|
209
|
+
debounceTimer?: NodeJS.Timeout;
|
|
210
|
+
throttleTimer?: NodeJS.Timeout;
|
|
211
|
+
isThrottled: boolean;
|
|
212
|
+
}
|
|
213
|
+
declare class ActionGuard {
|
|
214
|
+
private guards;
|
|
215
|
+
constructor();
|
|
216
|
+
debounce(actionKey: string, debounceMs: number): Promise<boolean>;
|
|
217
|
+
throttle(actionKey: string, throttleMs: number): boolean;
|
|
218
|
+
clearGuards(actionKey: string): void;
|
|
219
|
+
clearAll(): void;
|
|
220
|
+
getGuardState(actionKey: string): GuardState | undefined;
|
|
221
|
+
getAllGuardStates(): Map<string, GuardState>;
|
|
222
|
+
}
|
|
223
|
+
//#endregion
|
|
224
|
+
//#region src/execution-modes.d.ts
|
|
225
|
+
declare function executeSequential<T, R = void>(context: PipelineContext<T, R>, createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>): Promise<void>;
|
|
226
|
+
declare function executeParallel<T, R = void>(context: PipelineContext<T, R>, createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>): Promise<void>;
|
|
227
|
+
declare function executeRace<T, R = void>(context: PipelineContext<T, R>, createController: (registration: HandlerRegistration<T, R>, index: number) => PipelineController<T, R>): Promise<void>;
|
|
228
|
+
//# sourceMappingURL=execution-modes.d.ts.map
|
|
241
229
|
|
|
242
230
|
//#endregion
|
|
243
|
-
export {
|
|
231
|
+
export { type ActionDispatcher, ActionGuard, type ActionHandler, type ActionPayloadMap, ActionRegister, type ActionRegisterConfig, type DispatchOptions, type ExecutionMode, type ExecutionResult, type HandlerConfig, type HandlerRegistration, type PipelineContext, type PipelineController, type UnregisterFunction, executeParallel, executeRace, executeSequential };
|
|
244
232
|
//# sourceMappingURL=index.d.cts.map
|
package/dist/index.d.cts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/
|
|
1
|
+
{"version":3,"file":"index.d.cts","names":[],"sources":["../src/types.ts","../src/ActionRegister.ts","../src/action-guard.ts","../src/execution-modes.ts"],"sourcesContent":[],"mappings":";UAgBiB,gBAAA;EAAA,CAAA,UAAA,EAAA,MAAgB,CAAA,EAAA,OAAA;AA+BjC;AAAmC,UAAlB,kBAAkB,CAAA,IAAA,GAAA,EAAA,IAAA,IAAA,CAAA,CAAA;EAAA,IAQC,EAAA,EAAA,IAAA;EAAC,KAAK,CAAA,MAAA,CAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAC,aAG3B,CAAA,QAAA,EAAA,CAAA,OAAA,EAHoB,CAGpB,EAAA,GAH0B,CAG1B,CAAA,EAAA,IAAA;EAAC,UAOA,EAAA,EAPD,CAOC;EAAC,cAGE,CAAA,QAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAC,MAGL,CAAA,MAAA,EANC,CAMD,CAAA,EAAA,IAAA;EAAC,SAGuB,CAAA,MAAA,EANpB,CAMoB,CAAA,EAAA,IAAA;EAAC,UAAmB,EAAA,EAH5C,CAG4C,EAAA;EAAC,WAAK,CAAA,MAAA,EAAA,CAAA,eAAA,EAA1B,CAA0B,EAAA,EAAA,aAAA,EAAN,CAAM,EAAA,GAAA,CAAA,CAAA,EAAA,IAAA;AAAC;AA0BvD,KAAA,aAAa,CAAA,IAAA,GAAA,EAAA,IAAA,IAAA,CAAA,GAAA,CAAA,OAAA,EACd,CADc,EAAA,UAAA,EAEX,kBAFW,CAEQ,CAFR,EAEW,CAFX,CAAA,EAAA,GAGpB,CAHoB,GAGhB,OAHgB,CAGR,CAHQ,CAAA;AAAA,UAqBR,aAAA,CArBQ;EAAA,QACd,CAAA,EAAA,MAAA;EAAC,EAAA,CACqB,EAAA,MAAA;EAAC,QAAE,CAAA,EAAA,OAAA;EAAC,IAAvB,CAAA,EAAA,OAAA;EAAkB,SAC3B,CAAA,EAAA,GAAA,GAAA,OAAA;EAAC,QAAW,CAAA,EAAA,MAAA;EAAC,QAAT,CAAA,EAAA,MAAA;EAAO,UAAA,CAAA,EAAA,CAAA,OAAA,EAAA,GAAA,EAAA,GAAA,OAAA;EAkBC,UAAA,CAAA,EAAA,OAAa;EAAA,IAAA,CAAA,EAAA,MAAA,EAAA;EAAA,QAuEV,CAAA,EAAA,MAAA;EAAM,WAIb,CAAA,EAAA,MAAA;EAAM,OAAA,CAAA,EAAA,MAAA;EAGF,UAAA,CAAA,EAAA,OAAA,GAAmB,OAAA,GAAA,SAAA;EAAA,OAAA,CAAA,EAAA,MAAA;EAAA,OACX,CAAA,EAAA,MAAA;EAAC,YAAE,CAAA,EAAA,MAAA,EAAA;EAAC,SAAlB,CAAA,EAAA,MAAA,EAAA;EAAa,WACL,CAAA,EAAA,aAAA,GAAA,YAAA,GAAA,MAAA;EAAa,OAAtB,CAAA,EAAA,MAAA;EAAQ,OAAA,CAAA,EAAA;IAIN,aAAa,CAAA,EAAA,OAAA;IAER,aAAA,CAAe,EAAA,OAAA;IAAA,aAAA,CAAA,EAfZ,MAeY,CAAA,MAAA,EAAA,GAAA,CAAA;EAAA,CAAA;EAEpB,QACoB,CAAA,EAdnB,MAcmB,CAAA,MAAA,EAAA,GAAA,CAAA;;AAApB,UAXK,mBAWL,CAAA,IAAA,GAAA,EAAA,IAAA,IAAA,CAAA,CAAA;EAAmB,OAKd,EAfN,aAeM,CAfQ,CAeR,EAfW,CAeX,CAAA;EAAa,MAGnB,EAjBD,QAiBC,CAjBQ,aAiBR,CAAA;EAAC,EAAA,EAEU,MAAA;AAAC;AAGN,KAlBL,aAAA,GAkByB,YAgBV,GAAA,UAAa,GAAA,MAAA;AAIvB,UApCA,eAoCe,CAAA,IAAA,GAAA,EAAA,IAAA,IAAA,CAAA,CAAA;EAAA,MAAA,EAAA,MAAA;EAAA,OAQd,EA1CP,CA0CO;EAAa,QAGpB,EA5CC,mBA4CD,CA5CqB,CA4CrB,EA5CwB,CA4CxB,CAAA,EAAA;EAAW,OAQiB,EAAA,OAAA;EAAe,WAiCvB,CAAA,EAAA,MAAA;EAAa,YAAtB,EAAA,MAAA;EAAQ,cASJ,CAAA,EAAA,MAAA;EAAC,aAAO,EAzFjB,aAyFiB;EAAC,OAAA,EAtFxB,CAsFwB,EAAA;EAgBlB,UAAA,EAAA,OAAe;EAAA,iBAAA,CAAA,EApGV,CAoGU;;AAiBrB,UAlHM,oBAAA,CAkHN;EAAC,IAmCC,CAAA,EAAA,MAAA;EAAC,QAGF,CAAA,EAAA;IAGG,KAAA,CAAA,EAAA,OAAA;IAjBH,WAAA,CAAA,EAAA,OAAA;IA0BD,WAAA,CAAA,EAAA,MAAA;IALD,oBAAA,CAAA,EA/IiB,aA+IjB;EAAK,CAAA;AAYf;AAEiB,UAzJA,eAAA,CAyJgB;EAAA,QAAA,CAAA,EAAA,MAAA;EAAA,QAAW,CAAA,EAAA,MAAA;EAAgB,aAEzC,CAAA,EAnJD,aAmJC;EAAC,MAAU,CAAA,EAhJnB,WAgJmB;EAAC,SAAC,CAAA,EAAA;IAAkB,OAAA,EAAA,OAAA;IAAqB,mBAAA,CAAA,EAAA,CAAA,UAAA,EAxIhC,eAwIgC,EAAA,GAAA,IAAA;IAAkB,iBAAA,CAAA,EAAA,OAAA;EAAO,CAAA;EAG5E,MAAU,CAAA,EAAA;IAAY,IAAA,CAAA,EAAA,MAAA,EAAA;IAAE,QAAA,CAAA,EAAA,MAAA;IAAc,UAAA,CAAA,EAAA,MAAA,EAAA;IAAkB,WAAA,CAAA,EAAA,MAAA,EAAA;IAAO,eAAA,CAAA,EAAA,MAAA;IAQlE,iBAAkB,CAAA,EAAA,MAAA,EAAA;IAAA,WAAA,CAAA,EAAA,aAAA,GAAA,YAAA,GAAA,MAAA;IAAW,OAAA,CAAA,EAAA,MAAA;IAWb,MAAA,CAAA,EAAA,CAAA,MAAA,EA7HX,QA6HW,CA7HF,aA6HE,CAAA,EAAA,GAAA,OAAA;EAAC,CAAA;EAAR,MAGQ,CAAA,EAAA;IAAG,QAAA,CAAA,EAAA,OAAA,GAAA,MAAA,GAAA,KAAA,GAAA,OAAA,GAAA,QAAA;IAAb,MAAA,CAAA,EAAA,CAAA,CAAA,CAAA,CAAA,OAAA,EAvHE,CAuHF,EAAA,EAAA,GAvHU,CAuHV;IAGA,OAAA,CAAA,EAAA,OAAA;IAAa,OAAA,CAAA,EAAA,MAAA;IAMpB,UAAA,CAAA,EAAA,MAAkB;EAAA,CAAA;;AAEnB,UAlHC,eAkHD,CAAA,IAAA,IAAA,CAAA,CAAA;EAAC,OAQH,EAAA,OAAA;EAAK,OAFG,EAAA,OAAA;EAAK,WAAA,CAAA,EAAA,MAAA;;WA1GhB;WAGA;EClSE,SAAA,EAAA;IAAc,QAAA,EAAA,MAAA;IAAW,gBAAA,EAAA,MAAA;IAAmB,eAAA,EAAA,MAAA;IAenC,cAAA,EAAA,MAAA;IAkBK,SAAA,EAAA,MAAA;IACf,OAAA,EAAA,MAAA;EAAC,CAAA;EACe,QAAC,EDuRjB,KCvRiB,CAAA;IAAI,EAAA,EAAA,MAAA;IAApB,QAAA,EAAA,OAAA;IACD,QAAA,CAAA,EAAA,MAAA;IACP,MAAA,CAAA,EDgSQ,CChSR;IAkG4B,KAAA,CAAA,EDiMrB,KCjMqB;IACrB,QAAA,CAAA,EDmMG,MCnMH,CAAA,MAAA,EAAA,GAAA,CAAA;EAAC,CAAA,CAAA;EACE,MAAC,EDsMN,KCtMM,CAAA;IAAC,SAAA,EAAA,MAAA;IAEZ,KAAA,EDyMM,KCzMN;IA0IsC,SAAA,EAAA,MAAA;EAAC,CAAA,CAAA;;AAE5B,KDoEJ,kBAAA,GCpEI,GAAA,GAAA,IAAA;AAAC,UDsEA,gBCtEA,CAAA,UDsE2B,gBCtE3B,CAAA,CAAA;EACiC,CAAA,UACrB,MDsEV,CCtEU,CAAA,CAAA,MAAA,EDsEC,CCtED,CDsEG,CCtEH,CAAA,SAAA,IAAA,GDsEqB,CCtErB,GAAA,KAAA,EAAA,OAAA,CAAA,EDsE0C,eCtE1C,CAAA,EDsE4D,OCtE5D,CAAA,IAAA,CAAA;EAAC,CAAA,UAAjB,MDyEM,CCzEN,CAAA,CAAA,MAAA,EDyEiB,CCzEjB,EAAA,OAAA,EDyE6B,CCzE7B,CDyE+B,CCzE/B,CAAA,EAAA,OAAA,CAAA,EDyE6C,eCzE7C,CAAA,EDyE+D,OCzE/D,CAAA,IAAA,CAAA;;AA4dqB,UD3YjB,kBC2YiB,CAAA,UD3YY,gBC2YZ,CAAA,CAAA;EAAC,IAAU,EAAA,MAAA;EAAC,YAKhB,EAAA,MAAA;EAAC,aAAU,EAAA,MAAA;EAAC,iBAIT,EDzYZ,KCyYY,CAAA,MDzYA,CCyYA,CAAA;EAAC,oBAIJ,ED1YN,GC0YM,CAAA,MD1YI,CC0YJ,ED1YO,aC0YP,CAAA;EAAC,oBAAU,EDvYjB,aCuYiB;;AAiBpB,UDlZJ,kBCkZI,CAAA,UDlZyB,gBCkZzB,CAAA,CAAA;EAAkB,MAsBN,EAAA,MDtajB,CCsaiB;EAAC,YAAU,EAAA,MAAA;EAAC,kBAAsB,EDha7C,KCga6C,CAAA;IAAnB,QAAA,EAAA,MAAA;IAkDA,QAAA,EDhdlC,KCgdkC,CAAA;MAAnB,EAAA,EAAA,MAAA;MAAN,IAAA,EAAA,MAAA,EAAA;MAYoB,QAAA,CAAA,EAAA,MAAA;MAAG,WAAA,CAAA,EAAA,MAAA;MAAb,OAAA,CAAA,EAAA,MAAA;IAsBoB,CAAA,CAAA;EAAC,CAAA,CAAA;EAAqB,cAAhC,CAAA,EAAA;IAsBF,eAAA,EAAA,MAAA;IAAW,eAAA,EAAA,MAAA;IAAS,WAAA,EAAA,MAAA;IAcpB,UAAA,EAAA,MAAA;EAAC,CAAA;;;;;ADh8BzB,cC+BJ,cD/BoB,CAAA,UC+BK,gBD/BL,GC+BwB,gBD/BxB,CAAA,CAAA;EA+BhB,QAAA,SAAA;EAAkB,QAAA,cAAA;EAAA,iBAQC,WAAA;EAAC,QAAK,aAAA;EAAC,QAG3B,oBAAA;EAAC,SAOA,IAAA,EAAA,MAAA;EAAC,iBAGE,cAAA;EAAC,QAGL,cAAA;EAAC,WAGuB,CAAA,MAAA,CAAA,ECZlB,oBDYkB;EAAC,QAAmB,CAAA,UAAA,MCMjC,CDNiC,EAAA,IAAA,IAAA,CAAA,CAAA,MAAA,ECOhD,CDPgD,EAAA,OAAA,ECQ/C,aDR+C,CCQjC,CDRiC,CCQ/B,CDR+B,CAAA,ECQ3B,CDR2B,CAAA,EAAA,MAAA,CAAA,ECShD,aDTgD,CAAA,ECUvD,kBDVuD;EAAC,QAAK,CAAA,UAAA,MC4GjC,CD5GiC,CAAA,CAAA,MAAA,EC6GtD,CD7GsD,EAAA,OAAA,CAAA,EC8GpD,CD9GoD,CC8GlD,CD9GkD,CAAA,EAAA,OAAA,CAAA,EC8GjD,eD9GiD,CAAA,ECgH7D,ODhH6D,CAAA,IAAA,CAAA;EAAC,kBAAA,CAAA,UAAA,MC0PxB,CD1PwB,EAAA,IAAA,IAAA,CAAA,CAAA,MAAA,EC2PvD,CD3PuD,EAAA,OAAA,CAAA,EC4PrD,CD5PqD,CC4PnD,CD5PmD,CAAA,EAAA,OAAA,CAAA,EC4PlD,eD5PkD,CAAA,EC8P9D,OD9P8D,CC8PtD,eD9PsD,CC8PtC,CD9PsC,CAAA,CAAA;EA0BvD,QAAA,cAAa;EAAA,QAAA,cAAA;EAAA,QACd,eAAA;EAAC,QACqB,sBAAA;EAAC,QAAE,oBAAA;EAAC,eAAvB,CAAA,UAAA,MC8rBoB,CD9rBpB,CAAA,CAAA,MAAA,EC8rB+B,CD9rB/B,CAAA,EAAA,MAAA;EAAkB,WAC3B,CAAA,UAAA,MCksByB,CDlsBzB,CAAA,CAAA,MAAA,ECksBoC,CDlsBpC,CAAA,EAAA,OAAA;EAAC,oBAAW,CAAA,CAAA,EAAA,CAAA,MCssBgB,CDtsBhB,CAAA,EAAA;EAAC,WAAT,CAAA,UAAA,MC0sBqB,CD1sBrB,CAAA,CAAA,MAAA,EC0sBgC,CD1sBhC,CAAA,EAAA,IAAA;EAAO,QAAA,CAAA,CAAA,EAAA,IAAA;EAkBC,OAAA,CAAA,CAAA,EAAA,MAAa;EAAA,eAAA,CAAA,CAAA,ECysBT,kBDzsBS,CCysBU,CDzsBV,CAAA;EAAA,cAuEV,CAAA,UAAA,MCwpBa,CDxpBb,CAAA,CAAA,MAAA,ECwpBwB,CDxpBxB,CAAA,ECwpB4B,kBDxpB5B,CCwpB+C,CDxpB/C,CAAA,GAAA,IAAA;EAAM,iBAIb,CAAA,CAAA,ECssBU,KDtsBV,CCssBgB,kBDtsBhB,CCssBmC,CDtsBnC,CAAA,CAAA;EAAM,gBAAA,CAAA,GAAA,EAAA,MAAA,CAAA,ECktBc,GDltBd,CAAA,MCktBwB,CDltBxB,ECktB2B,mBDltB3B,CAAA,GAAA,EAAA,GAAA,CAAA,EAAA,CAAA;EAGF,qBAAA,CAAmB,QAAA,EAAA,MAAA,CAAA,ECquBO,GDruBP,CAAA,MCquBiB,CDruBjB,ECquBoB,mBDruBpB,CAAA,GAAA,EAAA,GAAA,CAAA,EAAA,CAAA;EAAA,sBAAA,CAAA,UAAA,MC2vBK,CD3vBL,CAAA,CAAA,MAAA,EC2vBgB,CD3vBhB,EAAA,IAAA,EC2vByB,aD3vBzB,CAAA,EAAA,IAAA;EAAA,sBACX,CAAA,UAAA,MCwwBgB,CDxwBhB,CAAA,CAAA,MAAA,ECwwB2B,CDxwB3B,CAAA,ECwwB+B,aDxwB/B;EAAC,yBAAE,CAAA,UAAA,MCixBgB,CDjxBhB,CAAA,CAAA,MAAA,ECixB2B,CDjxB3B,CAAA,EAAA,IAAA;EAAC,mBAAlB,CAAA,CAAA,EAAA,IAAA;EAAa,yBACL,CAAA,UAAA,MCwyByB,CDxyBzB,CAAA,CAAA,MAAA,ECwyBoC,CDxyBpC,CAAA,EAAA,IAAA;EAAa,iBAAtB,CAAA,CAAA,ECqzBa,oBDrzBb,CAAA,UAAA,CAAA;EAAQ,cAAA,CAAA,CAAA,EAAA,OAAA;AAIlB;AAEA;;;UEjMU,UAAA;EFEO,YAAA,EAAA,MAAgB;EA+BhB,aAAA,CAAA,EE5BC,MAAA,CAAO,OF4BU;EAAA,aAAA,CAAA,EEzBjB,MAAA,CAAO,OFyBU;EAAA,WAQC,EAAA,OAAA;;AAGpB,cEFH,WAAA,CFEG;EAAC,QAOA,MAAA;EAAC,WAGE,CAAA;EAAC,QAGL,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EEFyC,OFEzC,CAAA,OAAA,CAAA;EAAC,QAGuB,CAAA,SAAA,EAAA,MAAA,EAAA,UAAA,EAAA,MAAA,CAAA,EAAA,OAAA;EAAC,WAAmB,CAAA,SAAA,EAAA,MAAA,CAAA,EAAA,IAAA;EAAC,QAAK,CAAA,CAAA,EAAA,IAAA;EAAC,aAAA,CAAA,SAAA,EAAA,MAAA,CAAA,EEmI/B,UFnI+B,GAAA,SAAA;EA0BvD,iBAAa,CAAA,CAAA,EEgHF,GFhHE,CAAA,MAAA,EEgHU,UFhHV,CAAA;;;;AApFR,iBGFK,iBHEW,CAAA,CAAA,EAAA,IAAA,IAAA,CAAA,CAAA,OAAA,EGDtB,eHCsB,CGDN,CHCM,EGDH,CHCG,CAAA,EAAA,gBAAA,EAAA,CAAA,YAAA,EGAE,mBHAF,CGAsB,CHAtB,EGAyB,CHAzB,CAAA,EAAA,KAAA,EAAA,MAAA,EAAA,GGA+C,kBHA/C,CGAkE,CHAlE,EGAqE,CHArE,CAAA,CAAA,EGC9B,OHD8B,CAAA,IAAA,CAAA;AA+BhB,iBGoEK,eHpEa,CAAA,CAAA,EAAA,IAAA,IAAA,CAAA,CAAA,OAAA,EGqExB,eHrEwB,CGqER,CHrEQ,EGqEL,CHrEK,CAAA,EAAA,gBAAA,EAAA,CAAA,YAAA,EGsEA,mBHtEA,CGsEoB,CHtEpB,EGsEuB,CHtEvB,CAAA,EAAA,KAAA,EAAA,MAAA,EAAA,GGsE6C,kBHtE7C,CGsEgE,CHtEhE,EGsEmE,CHtEnE,CAAA,CAAA,EGuEhC,OHvEgC,CAAA,IAAA,CAAA;AAAA,iBG6Jb,WH7Ja,CAAA,CAAA,EAAA,IAAA,IAAA,CAAA,CAAA,OAAA,EG8JxB,eH9JwB,CG8JR,CH9JQ,EG8JL,CH9JK,CAAA,EAAA,gBAAA,EAAA,CAAA,YAAA,EG+JA,mBH/JA,CG+JoB,CH/JpB,EG+JuB,CH/JvB,CAAA,EAAA,KAAA,EAAA,MAAA,EAAA,GG+J6C,kBH/J7C,CG+JgE,CH/JhE,EG+JmE,CH/JnE,CAAA,CAAA,EGgKhC,OHhKgC,CAAA,IAAA,CAAA"}
|