@smart-byte/leani-sdk 0.1.0-rc.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.
@@ -0,0 +1,575 @@
1
+ import { LeaniError } from "./errors.ts";
2
+ export { LeaniError, type LeaniErrorBody } from "./errors.ts";
3
+ export declare const SDK_VERSION: "0.1.0-rc.1";
4
+ export type { components as OpenApiComponents, operations as OpenApiOperations, paths as OpenApiPaths, } from "./openapi.generated.ts";
5
+ export type Hex = `0x${string}`;
6
+ export type Finality = "preview" | "included" | "finalized";
7
+ export type ChangeOperation = "apply" | "undo" | "finalized" | "reset_required";
8
+ export interface LeaniClientOptions {
9
+ baseUrl: string | URL;
10
+ token?: string;
11
+ timeoutMs?: number;
12
+ fetch?: FetchLike;
13
+ /**
14
+ * Override typed query-extension mounts with canonical `basePath` values
15
+ * returned by `capabilities()` when an ergonomic alias is unavailable.
16
+ */
17
+ queryBasePaths?: {
18
+ blobs?: string;
19
+ erc20?: string;
20
+ uniswap?: string;
21
+ };
22
+ reconnect?: {
23
+ initialDelayMs?: number;
24
+ maxDelayMs?: number;
25
+ jitter?: number;
26
+ };
27
+ }
28
+ export type FetchLike = (input: RequestInfo | URL, init?: RequestInit) => Promise<Response>;
29
+ export interface ProcessorSummary {
30
+ id: string;
31
+ instance: string;
32
+ version: string;
33
+ codeHash: Hex;
34
+ configHash: Hex;
35
+ genericApi: "processor-v1";
36
+ changeSchema: string;
37
+ queryExtensions: QueryExtensionSummary[];
38
+ subscriptions: boolean;
39
+ artifactRetention: "none" | "window" | "full";
40
+ deliveryOrdering: "canonical" | "block_versioned_idempotent";
41
+ }
42
+ export interface QueryExtensionSummary {
43
+ id: string;
44
+ basePath: string;
45
+ aliasPath: string | null;
46
+ }
47
+ export interface QueryExtensionCapability extends QueryExtensionSummary {
48
+ processor: string;
49
+ }
50
+ export interface Capabilities {
51
+ chainId: number;
52
+ ethereumRpc: Record<string, unknown>;
53
+ processors: ProcessorSummary[];
54
+ queryExtensions: QueryExtensionCapability[];
55
+ }
56
+ export interface NodeStatus {
57
+ apiVersion: "1";
58
+ project: string;
59
+ version: string;
60
+ chainId: number;
61
+ uptimeSeconds: number;
62
+ databaseBytes: number;
63
+ processor: ProcessorSummary;
64
+ processors: ProcessorSummary[];
65
+ readiness: Readiness;
66
+ }
67
+ export interface Readiness {
68
+ liveRequired: boolean;
69
+ liveReady: boolean;
70
+ finalityRequired: boolean;
71
+ finalityReady: boolean;
72
+ ready: boolean;
73
+ }
74
+ export interface Health {
75
+ status: "live" | "ready" | "not_ready" | "failed";
76
+ uptimeSeconds: number;
77
+ database: "available" | "unavailable";
78
+ readiness: Readiness;
79
+ reasons: string[];
80
+ }
81
+ export interface CoverageInterval {
82
+ fromBlock: number;
83
+ toBlock: number;
84
+ finality: Finality;
85
+ }
86
+ export interface ProcessorCoverage {
87
+ chainId: number;
88
+ chainFinalizedHead: {
89
+ number: number;
90
+ hash: string;
91
+ } | null;
92
+ requested?: {
93
+ fromBlock: number;
94
+ toBlock: number;
95
+ };
96
+ available: CoverageInterval[];
97
+ configuredStartBlock: number;
98
+ processedThrough: number | null;
99
+ finalizedThrough: number | null;
100
+ complete: boolean;
101
+ state: "starting" | "backfilling" | "catching_up" | "live" | "degraded" | "failed";
102
+ }
103
+ export interface Page<T> {
104
+ data: T[];
105
+ nextCursor: string | null;
106
+ coverage: ProcessorCoverage;
107
+ }
108
+ export interface BlobsBlock {
109
+ network: string;
110
+ blockNumber: number;
111
+ blockHash: Hex;
112
+ parentHash: Hex;
113
+ timestamp: number;
114
+ size: string;
115
+ blobCount: number;
116
+ blobGasUsed: string;
117
+ excessBlobGas: string;
118
+ blobBaseFee: string;
119
+ executionBaseFee: string;
120
+ gasUsed: string;
121
+ gasLimit: string;
122
+ executionEthBurnedWei: string;
123
+ blobEthBurnedWei: string;
124
+ reserveFeeWei: string | null;
125
+ transactionCount: number;
126
+ targetBlobsPerBlock: number;
127
+ maxBlobsPerBlock: number;
128
+ transformVersion: number;
129
+ finality: Finality;
130
+ }
131
+ export interface BlobTransaction {
132
+ network: string;
133
+ blockNumber: number;
134
+ blockHash: Hex;
135
+ txHash: Hex;
136
+ transactionIndex: number;
137
+ senderAddress: Hex;
138
+ blobVersionedHashes: Hex[];
139
+ blobCount: number;
140
+ totalBurnedWei: string;
141
+ executionBurnedWei: string;
142
+ blobBurnedWei: string;
143
+ }
144
+ export interface BlobsSnapshotEntry {
145
+ block: BlobsBlock;
146
+ transactions: BlobTransaction[];
147
+ }
148
+ export interface ChangeHead {
149
+ earliestSequence: string | null;
150
+ latestSequence: string | null;
151
+ cursor: string | null;
152
+ }
153
+ export interface GenericOutputEntity<T = unknown> {
154
+ ordinal: string;
155
+ key: Hex;
156
+ schema: string;
157
+ data: T;
158
+ blockNumber: number;
159
+ blockTimestamp: number;
160
+ finality: Finality;
161
+ }
162
+ export interface OutputBounds {
163
+ earliestBlock: number;
164
+ latestBlock: number;
165
+ earliestTimestamp: number;
166
+ latestTimestamp: number;
167
+ }
168
+ export interface GenericSnapshotPage<T = unknown> {
169
+ data: GenericOutputEntity<T>[];
170
+ nextCursor: string | null;
171
+ snapshotId: string;
172
+ boundaryCursor: string | null;
173
+ rowCount: string;
174
+ valueBytes: string;
175
+ expiresAtUnixMs: string;
176
+ retainedBounds: OutputBounds | null;
177
+ coverage: ProcessorCoverage;
178
+ recovery: {
179
+ follow: string | null;
180
+ outsideRetention: "create_processor_instance_or_source_scan";
181
+ };
182
+ }
183
+ export interface FollowSnapshotPage<T = unknown> extends GenericSnapshotPage<T> {
184
+ boundaryCursor: string;
185
+ recovery: GenericSnapshotPage<T>["recovery"] & {
186
+ follow: string;
187
+ };
188
+ }
189
+ export interface OutputQueryOptions {
190
+ fromBlock?: number;
191
+ toBlock?: number;
192
+ fromTimestamp?: number;
193
+ toTimestamp?: number;
194
+ limit?: number;
195
+ cursor?: string;
196
+ signal?: AbortSignal;
197
+ }
198
+ export type ConsumerRole = "required" | "best_effort";
199
+ export type ConsumerState = "active" | "reset_required" | "revoked";
200
+ export type ConsumerStart = {
201
+ position: "earliest_retained";
202
+ } | {
203
+ position: "current_head";
204
+ } | {
205
+ position: "cursor";
206
+ cursor: string;
207
+ };
208
+ export interface CreateConsumerOptions {
209
+ id: string;
210
+ role: ConsumerRole;
211
+ start: ConsumerStart;
212
+ leaseTtlSeconds: number;
213
+ credential: string;
214
+ signal?: AbortSignal;
215
+ }
216
+ export interface DurableConsumer {
217
+ id: string;
218
+ processorInstance: string;
219
+ role: ConsumerRole;
220
+ state: ConsumerState;
221
+ acknowledgedSequence: string;
222
+ deliveredSequence: string;
223
+ acknowledgedCursor: string;
224
+ deliveredCursor: string;
225
+ leaseTtlMs: string;
226
+ leaseExpiresAtUnixMs: string;
227
+ leaseActive: boolean;
228
+ lagChanges: string;
229
+ lagBlocks: string;
230
+ lagBytes: string;
231
+ lagAgeMs: string;
232
+ createdAtUnixMs: string;
233
+ updatedAtUnixMs: string;
234
+ }
235
+ export interface BlobSchedule {
236
+ name: string;
237
+ activationBlock: number;
238
+ activationTimestamp: number;
239
+ forkId: Hex;
240
+ targetBlobsPerBlock: number;
241
+ maxBlobsPerBlock: number;
242
+ baseFeeUpdateFraction: string;
243
+ eip7918: boolean;
244
+ source: "chain_spec" | "eth_config" | "configured";
245
+ }
246
+ export interface Erc20Balance {
247
+ token: Hex;
248
+ address: Hex;
249
+ balance: string;
250
+ asOfBlock: number;
251
+ blockHash: Hex;
252
+ finality: Finality;
253
+ coverageFrom: number;
254
+ complete: boolean;
255
+ method: "erc20_transfer_ledger";
256
+ }
257
+ export interface EvmEvent {
258
+ schemaVersion: number;
259
+ contract: Hex;
260
+ event: string;
261
+ signature: string;
262
+ blockNumber: number;
263
+ blockHash: Hex;
264
+ blockTimestamp: number;
265
+ bucketStartTimestamp?: number;
266
+ transactionHash: Hex;
267
+ transactionIndex: number;
268
+ logIndex: number;
269
+ finality: Finality;
270
+ values: Record<string, string>;
271
+ }
272
+ export interface TransactionStats {
273
+ from: Hex;
274
+ to: Hex;
275
+ count: number;
276
+ totalValueWei: string;
277
+ asOfBlock: number;
278
+ blockHash: Hex;
279
+ finality: Finality;
280
+ coverageFrom: number;
281
+ complete: boolean;
282
+ }
283
+ export interface UniswapPoolPrice {
284
+ pool: Hex;
285
+ kind: "v2" | "v3";
286
+ reserve0: string | null;
287
+ reserve1: string | null;
288
+ /** Signed token0 pool delta for a V3 swap, in raw token units. */
289
+ amount0: string | null;
290
+ /** Signed token1 pool delta for a V3 swap, in raw token units. */
291
+ amount1: string | null;
292
+ sqrtPriceX96: string | null;
293
+ blockNumber: number;
294
+ blockHash: Hex;
295
+ logIndex: number;
296
+ finality: Finality;
297
+ }
298
+ export interface LatestUniswapObservation {
299
+ data: UniswapPoolPrice;
300
+ timestamp: number;
301
+ }
302
+ export interface ConfiguredUniswapPool {
303
+ address: Hex;
304
+ kind: "v2" | "v3";
305
+ }
306
+ export interface ConfiguredUniswapPools {
307
+ data: ConfiguredUniswapPool[];
308
+ }
309
+ export interface BlockSummary {
310
+ chainId: number;
311
+ blockNumber: number;
312
+ blockHash: Hex;
313
+ parentHash: Hex;
314
+ timestamp: number;
315
+ gasLimit: number | null;
316
+ gasUsed: number | null;
317
+ baseFeePerGas: string | null;
318
+ blobGasUsed: number | null;
319
+ excessBlobGas: number | null;
320
+ transactionCount: number | null;
321
+ sizeBytes: number | null;
322
+ finality: Finality;
323
+ }
324
+ export interface LatestBlockSummary {
325
+ data: BlockSummary;
326
+ }
327
+ export interface ChangeMetadata {
328
+ apiVersion: "1";
329
+ sequence: string;
330
+ cursor: string;
331
+ originKind: "live" | "live_recovery" | "historical_backfill" | "recompute";
332
+ originId: string;
333
+ publicationRevision: string;
334
+ chainId: number;
335
+ block: {
336
+ number: number;
337
+ hash: Hex;
338
+ parentHash: Hex;
339
+ timestamp: number;
340
+ } | null;
341
+ finality: Finality;
342
+ kind: string;
343
+ schema: string;
344
+ key: string | null;
345
+ /** Present only on `reset_required` events, as the current coverage hint. */
346
+ coverage?: ProcessorCoverage;
347
+ /** RFC 3339 UTC emission time with millisecond precision. */
348
+ emittedAt: string;
349
+ }
350
+ /** System transitions never pretend to contain a processor entity payload. */
351
+ export type ChangeEnvelope<T = unknown> = ChangeMetadata & ({
352
+ operation: "apply" | "undo";
353
+ data: T | null;
354
+ } | {
355
+ operation: "finalized";
356
+ data: {
357
+ throughBlock: number;
358
+ };
359
+ } | {
360
+ operation: "reset_required";
361
+ data: {
362
+ earliestAvailableSequence: string;
363
+ latestAvailableSequence: string;
364
+ action: "query_snapshot_then_resume";
365
+ };
366
+ });
367
+ export interface LiveLaneReset {
368
+ processor: string;
369
+ state: "paused";
370
+ reason: "operator_reset_pending_replay";
371
+ firstUnappliedBlock: number;
372
+ firstUnappliedHash: Hex;
373
+ requiredDeliveryBytes: string;
374
+ }
375
+ /**
376
+ * Connection-scoped stream handshake. Sent as the first frame of every
377
+ * stream connection (including reconnects), synthesized at accept time,
378
+ * never stored, and never acknowledged.
379
+ */
380
+ export interface StreamHello {
381
+ apiVersion: "1";
382
+ chainId: number;
383
+ processor: ProcessorSummary;
384
+ coverage: ProcessorCoverage;
385
+ }
386
+ export declare class ResetRequiredError extends LeaniError {
387
+ readonly change: ChangeEnvelope;
388
+ constructor(change: ChangeEnvelope);
389
+ }
390
+ export interface ListBlocksOptions {
391
+ fromBlock: number;
392
+ toBlock: number;
393
+ limit?: number;
394
+ cursor?: string;
395
+ allowPartial?: boolean;
396
+ signal?: AbortSignal;
397
+ }
398
+ export interface ListTransactionsOptions {
399
+ blockNumber: number;
400
+ limit?: number;
401
+ cursor?: string;
402
+ signal?: AbortSignal;
403
+ }
404
+ export interface ChangesOptions {
405
+ after?: string;
406
+ limit?: number;
407
+ signal?: AbortSignal;
408
+ }
409
+ export interface SubscribeOptions {
410
+ after?: string;
411
+ signal?: AbortSignal;
412
+ /** Receives the connection handshake frame; called once per (re)connect. */
413
+ onHello?: (hello: StreamHello) => void;
414
+ }
415
+ /** Select a configured instance when more than one processor has this kind. */
416
+ export interface ProcessorSubscribeOptions extends SubscribeOptions {
417
+ processor?: string;
418
+ }
419
+ export interface LeaniClient {
420
+ readonly baseUrl: URL;
421
+ request<T>(path: string, params?: Record<string, QueryValue>, options?: {
422
+ signal?: AbortSignal;
423
+ }): Promise<T>;
424
+ health: {
425
+ live(options?: {
426
+ signal?: AbortSignal;
427
+ }): Promise<Health>;
428
+ ready(options?: {
429
+ signal?: AbortSignal;
430
+ }): Promise<Health>;
431
+ };
432
+ status(options?: {
433
+ signal?: AbortSignal;
434
+ }): Promise<NodeStatus>;
435
+ capabilities(options?: {
436
+ signal?: AbortSignal;
437
+ }): Promise<Capabilities>;
438
+ processors: {
439
+ list(options?: {
440
+ signal?: AbortSignal;
441
+ }): Promise<ProcessorSummary[]>;
442
+ status(id: string, options?: {
443
+ signal?: AbortSignal;
444
+ }): Promise<ProcessorCoverage>;
445
+ changes<T = unknown>(id: string, options?: ChangesOptions): Promise<Page<ChangeEnvelope<T>>>;
446
+ changeHead(id: string, options?: {
447
+ signal?: AbortSignal;
448
+ }): Promise<ChangeHead>;
449
+ resetLiveLane(id: string, options?: {
450
+ signal?: AbortSignal;
451
+ }): Promise<LiveLaneReset>;
452
+ listCollections(id: string, options?: {
453
+ signal?: AbortSignal;
454
+ }): Promise<{
455
+ processor: ProcessorSummary;
456
+ outputMode: "none" | "latest" | "window" | "full";
457
+ retained: boolean;
458
+ data: string[];
459
+ }>;
460
+ queryEntities<T = unknown>(id: string, collection: string, options?: OutputQueryOptions): Promise<GenericSnapshotPage<T>>;
461
+ /** First snapshot page plus an atomic stream boundary. Read all nextCursor pages and releaseSnapshot before following. */
462
+ queryAndFollow<T = unknown>(id: string, collection: string, options?: Omit<OutputQueryOptions, "cursor">): Promise<FollowSnapshotPage<T>>;
463
+ getEntity<T = unknown>(id: string, collection: string, key: Hex, options?: {
464
+ signal?: AbortSignal;
465
+ }): Promise<GenericOutputEntity<T>>;
466
+ releaseSnapshot(id: string, snapshotId: string, options?: {
467
+ signal?: AbortSignal;
468
+ }): Promise<void>;
469
+ consumers: {
470
+ list(id: string, options?: {
471
+ signal?: AbortSignal;
472
+ }): Promise<DurableConsumer[]>;
473
+ create(id: string, options: CreateConsumerOptions): Promise<DurableConsumer>;
474
+ inspect(id: string, consumer: string, options?: {
475
+ signal?: AbortSignal;
476
+ }): Promise<DurableConsumer>;
477
+ revoke(id: string, consumer: string, options?: {
478
+ signal?: AbortSignal;
479
+ }): Promise<DurableConsumer>;
480
+ renew(id: string, consumer: string, credential: string, options?: {
481
+ signal?: AbortSignal;
482
+ }): Promise<DurableConsumer>;
483
+ changes<T = unknown>(id: string, consumer: string, credential: string, options?: {
484
+ limit?: number;
485
+ signal?: AbortSignal;
486
+ }): Promise<Page<ChangeEnvelope<T>>>;
487
+ acknowledge(id: string, consumer: string, credential: string, cursor: string, options?: {
488
+ signal?: AbortSignal;
489
+ }): Promise<DurableConsumer>;
490
+ };
491
+ subscribe<T = unknown>(id: string, options?: SubscribeOptions): AsyncGenerator<ChangeEnvelope<T>>;
492
+ };
493
+ blobs: {
494
+ getBlock(number: number, options?: {
495
+ signal?: AbortSignal;
496
+ }): Promise<BlobsBlock>;
497
+ listBlocks(options: ListBlocksOptions): Promise<Page<BlobsBlock>>;
498
+ listSnapshot(options: ListBlocksOptions): Promise<Page<BlobsSnapshotEntry>>;
499
+ getTransaction(hash: Hex, options?: {
500
+ signal?: AbortSignal;
501
+ }): Promise<BlobTransaction>;
502
+ listTransactions(options: ListTransactionsOptions): Promise<Page<BlobTransaction>>;
503
+ getSchedule(options?: {
504
+ atBlock?: number;
505
+ signal?: AbortSignal;
506
+ }): Promise<BlobSchedule>;
507
+ subscribe(options?: ProcessorSubscribeOptions): AsyncGenerator<ChangeEnvelope<BlobsSnapshotEntry>>;
508
+ };
509
+ erc20: {
510
+ getBalance(token: Hex, address: Hex, options?: {
511
+ signal?: AbortSignal;
512
+ }): Promise<Erc20Balance>;
513
+ subscribe(options?: ProcessorSubscribeOptions): AsyncGenerator<ChangeEnvelope<Erc20Balance>>;
514
+ };
515
+ uniswap: {
516
+ getPool(address: Hex, options?: {
517
+ signal?: AbortSignal;
518
+ }): Promise<UniswapPoolPrice>;
519
+ getLatestObservation(address: Hex, options?: {
520
+ processor?: string;
521
+ signal?: AbortSignal;
522
+ }): Promise<LatestUniswapObservation>;
523
+ listConfiguredPools(options?: {
524
+ processor?: string;
525
+ signal?: AbortSignal;
526
+ }): Promise<ConfiguredUniswapPools>;
527
+ subscribe(options?: ProcessorSubscribeOptions): AsyncGenerator<ChangeEnvelope<UniswapPoolPrice>>;
528
+ };
529
+ blocks: {
530
+ getLatest(options?: {
531
+ processor?: string;
532
+ signal?: AbortSignal;
533
+ }): Promise<LatestBlockSummary>;
534
+ getByNumber(number: number, options?: {
535
+ processor?: string;
536
+ signal?: AbortSignal;
537
+ }): Promise<LatestBlockSummary>;
538
+ subscribe(options?: ProcessorSubscribeOptions): AsyncGenerator<ChangeEnvelope<BlockSummary>>;
539
+ };
540
+ }
541
+ /**
542
+ * Create a Bun/Node/browser client for the native v1 query and durable change
543
+ * API. Ethereum JSON-RPC remains a separate endpoint used directly by viem,
544
+ * ethers, or another Ethereum library.
545
+ */
546
+ export declare function createLeaniClient(options: LeaniClientOptions): LeaniClient;
547
+ export type QueryValue = string | number | boolean | undefined;
548
+ interface SseMessage {
549
+ id?: string;
550
+ event?: string;
551
+ data?: string;
552
+ }
553
+ export declare function parseSse(body: ReadableStream<Uint8Array>, signal?: AbortSignal): AsyncGenerator<SseMessage>;
554
+ export declare function compareSequences(left: string, right: string): -1 | 0 | 1;
555
+ export declare function isResetRequired(change: ChangeEnvelope): change is ChangeEnvelope & {
556
+ operation: "reset_required";
557
+ };
558
+ export interface EntityChangeTarget<T> {
559
+ put(key: string, value: T): void | Promise<void>;
560
+ delete(key: string): void | Promise<void>;
561
+ }
562
+ export declare function applyEntityChange<T>(target: EntityChangeTarget<T>, change: ChangeEnvelope<T>): Promise<void>;
563
+ /**
564
+ * Commit destination state before constructing the acknowledgement request.
565
+ * If the destination commit rejects, `acknowledge` is never invoked and the
566
+ * durable consumer safely receives the same changes again.
567
+ */
568
+ export declare function commitThenAcknowledge<T>(destinationCommit: () => Promise<T>, acknowledge: (committed: T) => Promise<unknown>): Promise<T>;
569
+ export interface CursorStore {
570
+ get(): string | undefined;
571
+ set(cursor: string): void;
572
+ clear(): void;
573
+ }
574
+ export declare function createInMemoryCursorStore(initial?: string): CursorStore;
575
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAgC,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,aAAa,CAAC;AAE9D,eAAO,MAAM,WAAW,EAAG,YAAqB,CAAC;AAEjD,YAAY,EACV,UAAU,IAAI,iBAAiB,EAC/B,UAAU,IAAI,iBAAiB,EAC/B,KAAK,IAAI,YAAY,GACtB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,MAAM,GAAG,GAAG,KAAK,MAAM,EAAE,CAAC;AAChC,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC;AAC5D,MAAM,MAAM,eAAe,GACvB,OAAO,GACP,MAAM,GACN,WAAW,GACX,gBAAgB,CAAC;AAErB,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,GAAG,GAAG,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,cAAc,CAAC,EAAE;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,cAAc,CAAC,EAAE,MAAM,CAAC;QACxB,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,MAAM,MAAM,SAAS,GAAG,CACtB,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,GAAG,CAAC;IACd,UAAU,EAAE,GAAG,CAAC;IAChB,UAAU,EAAE,cAAc,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,qBAAqB,EAAE,CAAC;IACzC,aAAa,EAAE,OAAO,CAAC;IACvB,iBAAiB,EAAE,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9C,gBAAgB,EAAE,WAAW,GAAG,4BAA4B,CAAC;CAC9D;AAED,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB;IACrE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,eAAe,EAAE,wBAAwB,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,UAAU,EAAE,gBAAgB,EAAE,CAAC;IAC/B,SAAS,EAAE,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,WAAW,GAAG,QAAQ,CAAC;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,WAAW,GAAG,aAAa,CAAC;IACtC,SAAS,EAAE,SAAS,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,kBAAkB,EAAE;QAClB,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,IAAI,CAAC;IACT,SAAS,CAAC,EAAE;QACV,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,gBAAgB,EAAE,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EACD,UAAU,GACV,aAAa,GACb,aAAa,GACb,MAAM,GACN,UAAU,GACV,QAAQ,CAAC;CACd;AAED,MAAM,WAAW,IAAI,CAAC,CAAC;IACrB,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,MAAM,EAAE,GAAG,CAAC;IACZ,gBAAgB,EAAE,MAAM,CAAC;IACzB,aAAa,EAAE,GAAG,CAAC;IACnB,mBAAmB,EAAE,GAAG,EAAE,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,UAAU,CAAC;IAClB,YAAY,EAAE,eAAe,EAAE,CAAC;CACjC;AAED,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,CAAC,CAAC;IACR,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB,CAAC,CAAC,GAAG,OAAO;IAC9C,IAAI,EAAE,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,YAAY,GAAG,IAAI,CAAC;IACpC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,QAAQ,EAAE;QACR,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QACtB,gBAAgB,EAAE,0CAA0C,CAAC;KAC9D,CAAC;CACH;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC,GAAG,OAAO,CAAE,SAAQ,mBAAmB,CAAC,CAAC,CAAC;IAC7E,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;CACnE;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,aAAa,CAAC;AACtD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,gBAAgB,GAAG,SAAS,CAAC;AACpE,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,EAAE,mBAAmB,CAAA;CAAE,GACjC;IAAE,QAAQ,EAAE,cAAc,CAAA;CAAE,GAC5B;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,MAAM,CAAC;IACX,iBAAiB,EAAE,MAAM,CAAC;IAC1B,IAAI,EAAE,YAAY,CAAC;IACnB,KAAK,EAAE,aAAa,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,eAAe,EAAE,MAAM,CAAC;IACxB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,MAAM,EAAE,GAAG,CAAC;IACZ,mBAAmB,EAAE,MAAM,CAAC;IAC5B,gBAAgB,EAAE,MAAM,CAAC;IACzB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,YAAY,GAAG,YAAY,GAAG,YAAY,CAAC;CACpD;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,GAAG,CAAC;IACX,OAAO,EAAE,GAAG,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,uBAAuB,CAAC;CACjC;AAED,MAAM,WAAW,QAAQ;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,GAAG,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,GAAG,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,GAAG,CAAC;IACV,EAAE,EAAE,GAAG,CAAC;IACR,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,GAAG,CAAC;IACV,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,kEAAkE;IAClE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,kEAAkE;IAClE,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,gBAAgB,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,GAAG,CAAC;IACb,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;CACnB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,qBAAqB,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,GAAG,CAAC;IACf,UAAU,EAAE,GAAG,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,QAAQ,EAAE,QAAQ,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,YAAY,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,UAAU,EAAE,GAAG,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EACN,MAAM,GACN,eAAe,GACf,qBAAqB,GACrB,WAAW,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE;QACL,MAAM,EAAE,MAAM,CAAC;QACf,IAAI,EAAE,GAAG,CAAC;QACV,UAAU,EAAE,GAAG,CAAC;QAChB,SAAS,EAAE,MAAM,CAAC;KACnB,GAAG,IAAI,CAAC;IACT,QAAQ,EAAE,QAAQ,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,8EAA8E;AAC9E,MAAM,MAAM,cAAc,CAAC,CAAC,GAAG,OAAO,IAAI,cAAc,GAAG,CACvD;IAAE,SAAS,EAAE,OAAO,GAAG,MAAM,CAAC;IAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAA;CAAE,GAC/C;IAAE,SAAS,EAAE,WAAW,CAAC;IAAC,IAAI,EAAE;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GAC1D;IAAE,SAAS,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE;QACnC,yBAAyB,EAAE,MAAM,CAAC;QAClC,uBAAuB,EAAE,MAAM,CAAC;QAChC,MAAM,EAAE,4BAA4B,CAAC;KACtC,CAAA;CAAE,CACN,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,MAAM,EAAE,+BAA+B,CAAC;IACxC,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,GAAG,CAAC;IACxB,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,GAAG,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,QAAQ,EAAE,iBAAiB,CAAC;CAC7B;AAED,qBAAa,kBAAmB,SAAQ,UAAU;IAChD,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;gBAEpB,MAAM,EAAE,cAAc;CAUnC;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,CAAC;CACxC;AAED,+EAA+E;AAC/E,MAAM,WAAW,yBAA0B,SAAQ,gBAAgB;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC;IACtB,OAAO,CAAC,CAAC,EACP,IAAI,EAAE,MAAM,EACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACnC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GACjC,OAAO,CAAC,CAAC,CAAC,CAAC;IACd,MAAM,EAAE;QACN,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,KAAK,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;KAC5D,CAAC;IACF,MAAM,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;IAChE,YAAY,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IACxE,UAAU,EAAE;QACV,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC;QACtE,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACjC,OAAO,CAAC,iBAAiB,CAAC,CAAC;QAC9B,OAAO,CAAC,CAAC,GAAG,OAAO,EACjB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,UAAU,CACR,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACjC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvB,aAAa,CACX,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACjC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC1B,eAAe,CACb,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACjC,OAAO,CAAC;YACT,SAAS,EAAE,gBAAgB,CAAC;YAC5B,UAAU,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;YAClD,QAAQ,EAAE,OAAO,CAAC;YAClB,IAAI,EAAE,MAAM,EAAE,CAAC;SAChB,CAAC,CAAC;QACH,aAAa,CAAC,CAAC,GAAG,OAAO,EACvB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,0HAA0H;QAC1H,cAAc,CAAC,CAAC,GAAG,OAAO,EACxB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAC,GAC3C,OAAO,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,SAAS,CAAC,CAAC,GAAG,OAAO,EACnB,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,GAAG,EACR,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC;QACnC,eAAe,CACb,EAAE,EAAE,MAAM,EACV,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACjC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjB,SAAS,EAAE;YACT,IAAI,CACF,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,WAAW,CAAA;aAAE,GACjC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;YAC9B,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,OAAO,EAAE,qBAAqB,GAC7B,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5B,OAAO,CACL,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,WAAW,CAAA;aAAE,GACjC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5B,MAAM,CACJ,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,WAAW,CAAA;aAAE,GACjC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5B,KAAK,CACH,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,WAAW,CAAA;aAAE,GACjC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC5B,OAAO,CAAC,CAAC,GAAG,OAAO,EACjB,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,EAAE;gBAAE,KAAK,CAAC,EAAE,MAAM,CAAC;gBAAC,MAAM,CAAC,EAAE,WAAW,CAAA;aAAE,GACjD,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,WAAW,CACT,EAAE,EAAE,MAAM,EACV,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;gBAAE,MAAM,CAAC,EAAE,WAAW,CAAA;aAAE,GACjC,OAAO,CAAC,eAAe,CAAC,CAAC;SAC7B,CAAC;QACF,SAAS,CAAC,CAAC,GAAG,OAAO,EACnB,EAAE,EAAE,MAAM,EACV,OAAO,CAAC,EAAE,gBAAgB,GACzB,cAAc,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;KACtC,CAAC;IACF,KAAK,EAAE;QACL,QAAQ,CACN,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACjC,OAAO,CAAC,UAAU,CAAC,CAAC;QACvB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAClE,YAAY,CACV,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;QACrC,cAAc,CACZ,IAAI,EAAE,GAAG,EACT,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACjC,OAAO,CAAC,eAAe,CAAC,CAAC;QAC5B,gBAAgB,CACd,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;QAClC,WAAW,CAAC,OAAO,CAAC,EAAE;YACpB,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,MAAM,CAAC,EAAE,WAAW,CAAC;SACtB,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;QAC1B,SAAS,CACP,OAAO,CAAC,EAAE,yBAAyB,GAClC,cAAc,CAAC,cAAc,CAAC,kBAAkB,CAAC,CAAC,CAAC;KACvD,CAAC;IACF,KAAK,EAAE;QACL,UAAU,CACR,KAAK,EAAE,GAAG,EACV,OAAO,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACjC,OAAO,CAAC,YAAY,CAAC,CAAC;QACzB,SAAS,CACP,OAAO,CAAC,EAAE,yBAAyB,GAClC,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;KACjD,CAAC;IACF,OAAO,EAAE;QACP,OAAO,CACL,OAAO,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE;YAAE,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACjC,OAAO,CAAC,gBAAgB,CAAC,CAAC;QAC7B,oBAAoB,CAClB,OAAO,EAAE,GAAG,EACZ,OAAO,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACrD,OAAO,CAAC,wBAAwB,CAAC,CAAC;QACrC,mBAAmB,CAAC,OAAO,CAAC,EAAE;YAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,MAAM,CAAC,EAAE,WAAW,CAAC;SACtB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAAC;QACpC,SAAS,CACP,OAAO,CAAC,EAAE,yBAAyB,GAClC,cAAc,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC,CAAC;KACrD,CAAC;IACF,MAAM,EAAE;QACN,SAAS,CAAC,OAAO,CAAC,EAAE;YAClB,SAAS,CAAC,EAAE,MAAM,CAAC;YACnB,MAAM,CAAC,EAAE,WAAW,CAAC;SACtB,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAChC,WAAW,CACT,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE;YAAE,SAAS,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,WAAW,CAAA;SAAE,GACrD,OAAO,CAAC,kBAAkB,CAAC,CAAC;QAC/B,SAAS,CACP,OAAO,CAAC,EAAE,yBAAyB,GAClC,cAAc,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;KACjD,CAAC;CACH;AAmBD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,kBAAkB,GAC1B,WAAW,CA6Zb;AAyDD,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;AA0K/D,UAAU,UAAU;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,wBAAuB,QAAQ,CAC7B,IAAI,EAAE,cAAc,CAAC,UAAU,CAAC,EAChC,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,UAAU,CAAC,CAmC5B;AAuGD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAMxE;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,cAAc,GACrB,MAAM,IAAI,cAAc,GAAG;IAAE,SAAS,EAAE,gBAAgB,CAAA;CAAE,CAE5D;AAED,MAAM,WAAW,kBAAkB,CAAC,CAAC;IACnC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjD,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED,wBAAsB,iBAAiB,CAAC,CAAC,EACvC,MAAM,EAAE,kBAAkB,CAAC,CAAC,CAAC,EAC7B,MAAM,EAAE,cAAc,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,IAAI,CAAC,CASf;AAED;;;;GAIG;AACH,wBAAsB,qBAAqB,CAAC,CAAC,EAC3C,iBAAiB,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACnC,WAAW,EAAE,CAAC,SAAS,EAAE,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,GAC9C,OAAO,CAAC,CAAC,CAAC,CAIZ;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,IAAI,MAAM,GAAG,SAAS,CAAC;IAC1B,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAgB,yBAAyB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,WAAW,CAWvE"}