velocious 1.0.489 → 1.0.493
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/build/application.js +3 -0
- package/build/cli/commands/db/tenants/create.js +7 -5
- package/build/cli/commands/db/tenants/drop.js +6 -6
- package/build/configuration-types.js +8 -0
- package/build/configuration.js +29 -0
- package/build/database/query/index.js +30 -0
- package/build/database/query/model-class-query.js +17 -0
- package/build/database/record/index.js +16 -0
- package/build/src/application.d.ts.map +1 -1
- package/build/src/application.js +3 -1
- package/build/src/cli/commands/db/tenants/create.d.ts.map +1 -1
- package/build/src/cli/commands/db/tenants/create.js +8 -5
- package/build/src/cli/commands/db/tenants/drop.d.ts +1 -1
- package/build/src/cli/commands/db/tenants/drop.d.ts.map +1 -1
- package/build/src/cli/commands/db/tenants/drop.js +7 -6
- package/build/src/configuration-types.d.ts +24 -0
- package/build/src/configuration-types.d.ts.map +1 -1
- package/build/src/configuration-types.js +8 -1
- package/build/src/configuration.d.ts +6 -0
- package/build/src/configuration.d.ts.map +1 -1
- package/build/src/configuration.js +26 -1
- package/build/src/database/query/index.d.ts +25 -0
- package/build/src/database/query/index.d.ts.map +1 -1
- package/build/src/database/query/index.js +26 -1
- package/build/src/database/query/model-class-query.d.ts +10 -0
- package/build/src/database/query/model-class-query.d.ts.map +1 -1
- package/build/src/database/query/model-class-query.js +16 -1
- package/build/src/database/record/index.d.ts +7 -0
- package/build/src/database/record/index.d.ts.map +1 -1
- package/build/src/database/record/index.js +15 -1
- package/build/src/sync/query-scope.d.ts +18 -0
- package/build/src/sync/query-scope.d.ts.map +1 -0
- package/build/src/sync/query-scope.js +77 -0
- package/build/src/sync/server-change-feed.d.ts.map +1 -1
- package/build/src/sync/server-change-feed.js +2 -24
- package/build/src/sync/stable-json.d.ts +9 -0
- package/build/src/sync/stable-json.d.ts.map +1 -0
- package/build/src/sync/stable-json.js +27 -0
- package/build/src/sync/sync-api-client.d.ts +185 -5
- package/build/src/sync/sync-api-client.d.ts.map +1 -1
- package/build/src/sync/sync-api-client.js +309 -17
- package/build/src/sync/sync-api-controller.d.ts +8 -0
- package/build/src/sync/sync-api-controller.d.ts.map +1 -1
- package/build/src/sync/sync-api-controller.js +17 -1
- package/build/src/sync/sync-client-registry.d.ts +12 -0
- package/build/src/sync/sync-client-registry.d.ts.map +1 -0
- package/build/src/sync/sync-client-registry.js +27 -0
- package/build/src/sync/sync-client-types.d.ts +127 -0
- package/build/src/sync/sync-client-types.d.ts.map +1 -0
- package/build/src/sync/sync-client-types.js +3 -0
- package/build/src/sync/sync-client.d.ts +176 -0
- package/build/src/sync/sync-client.d.ts.map +1 -0
- package/build/src/sync/sync-client.js +380 -0
- package/build/src/sync/sync-envelope-replay-service.d.ts +153 -10
- package/build/src/sync/sync-envelope-replay-service.d.ts.map +1 -1
- package/build/src/sync/sync-envelope-replay-service.js +174 -14
- package/build/src/sync/sync-replay-upsert-applier.d.ts +102 -0
- package/build/src/sync/sync-replay-upsert-applier.d.ts.map +1 -0
- package/build/src/sync/sync-replay-upsert-applier.js +158 -0
- package/build/src/sync/sync-resource-base.d.ts +98 -0
- package/build/src/sync/sync-resource-base.d.ts.map +1 -0
- package/build/src/sync/sync-resource-base.js +122 -0
- package/build/src/sync/sync-scope-store.d.ts +128 -0
- package/build/src/sync/sync-scope-store.d.ts.map +1 -0
- package/build/src/sync/sync-scope-store.js +282 -0
- package/build/src/tenants/default-tenant-database-provisioning.d.ts +21 -0
- package/build/src/tenants/default-tenant-database-provisioning.d.ts.map +1 -0
- package/build/src/tenants/default-tenant-database-provisioning.js +106 -0
- package/build/src/tenants/tenant.d.ts.map +1 -1
- package/build/src/tenants/tenant.js +6 -5
- package/build/sync/query-scope.js +84 -0
- package/build/sync/server-change-feed.js +1 -25
- package/build/sync/stable-json.js +28 -0
- package/build/sync/sync-api-client.js +331 -17
- package/build/sync/sync-api-controller.js +20 -0
- package/build/sync/sync-client-registry.js +30 -0
- package/build/sync/sync-client-types.js +41 -0
- package/build/sync/sync-client.js +433 -0
- package/build/sync/sync-envelope-replay-service.js +190 -13
- package/build/sync/sync-replay-upsert-applier.js +179 -0
- package/build/sync/sync-resource-base.js +143 -0
- package/build/sync/sync-scope-store.js +327 -0
- package/build/tenants/default-tenant-database-provisioning.js +124 -0
- package/build/tenants/tenant.js +5 -5
- package/build/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/application.js +3 -0
- package/src/cli/commands/db/tenants/create.js +7 -5
- package/src/cli/commands/db/tenants/drop.js +6 -6
- package/src/configuration-types.js +8 -0
- package/src/configuration.js +29 -0
- package/src/database/query/index.js +30 -0
- package/src/database/query/model-class-query.js +17 -0
- package/src/database/record/index.js +16 -0
- package/src/sync/query-scope.js +84 -0
- package/src/sync/server-change-feed.js +1 -25
- package/src/sync/stable-json.js +28 -0
- package/src/sync/sync-api-client.js +331 -17
- package/src/sync/sync-api-controller.js +20 -0
- package/src/sync/sync-client-registry.js +30 -0
- package/src/sync/sync-client-types.js +41 -0
- package/src/sync/sync-client.js +433 -0
- package/src/sync/sync-envelope-replay-service.js +190 -13
- package/src/sync/sync-replay-upsert-applier.js +179 -0
- package/src/sync/sync-resource-base.js +143 -0
- package/src/sync/sync-scope-store.js +327 -0
- package/src/tenants/default-tenant-database-provisioning.js +124 -0
- package/src/tenants/tenant.js +5 -5
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One declarative broadcast fanned out after a mutation applies.
|
|
3
|
+
* @typedef {object} SyncReplayBroadcast
|
|
4
|
+
* @property {string | ((args: Record<string, ?>) => string)} channel - Channel name or resolver.
|
|
5
|
+
* @property {(args: Record<string, ?>) => Record<string, ?>} broadcastParams - Channel routing params.
|
|
6
|
+
* @property {(args: Record<string, ?>) => ?} body - Broadcast body.
|
|
7
|
+
* @property {(args: Record<string, ?>) => boolean} [when] - Optional gate; skipped when it returns false.
|
|
8
|
+
*/
|
|
1
9
|
/**
|
|
2
10
|
* Replays client sync envelopes through project supplied authentication,
|
|
3
11
|
* authorization, application, and persistence hooks.
|
|
@@ -10,19 +18,103 @@
|
|
|
10
18
|
export default class SyncEnvelopeReplayService {
|
|
11
19
|
/**
|
|
12
20
|
* Creates a sync envelope replay service.
|
|
21
|
+
*
|
|
22
|
+
* When a sync model is given, `findExistingReplaySync` and
|
|
23
|
+
* `persistReplayMutation` get model-backed default implementations. The sync
|
|
24
|
+
* model must expose `findBy`/`create` statics plus instance
|
|
25
|
+
* `assign`/`save`/`clientUpdatedAt` and `advanceServerSequence` (the
|
|
26
|
+
* change-feed sequence contract), and the actor returned from
|
|
27
|
+
* `authenticateReplay` must expose an `id()` method.
|
|
13
28
|
* @param {object} [args] - Constructor arguments.
|
|
14
29
|
* @param {{debug?: (...args: Array<unknown>) => void, warn?: (...args: Array<unknown>) => void}} [args.logger] - Logger used for normalization warnings.
|
|
30
|
+
* @param {?} [args.syncModel] - Sync/change model enabling model-backed default hooks.
|
|
31
|
+
* @param {string} [args.actorForeignKeyColumn] - Sync model column linking rows to the replay actor.
|
|
32
|
+
* @param {?} [args.authenticationTokenModel] - Token model enabling the default token-lookup authenticateReplay.
|
|
33
|
+
* @param {string} [args.authenticationTokenColumn] - Token model column holding the token. Defaults to "token".
|
|
34
|
+
* @param {string} [args.authenticationTokenParam] - Request param carrying the token. Defaults to "authenticationToken".
|
|
35
|
+
* @param {Record<string, ((args: Record<string, ?>) => Promise<?>) | ConstructorParameters<typeof SyncReplayUpsertApplier>[0]>} [args.applyHandlers] - Per-resourceType apply handlers (functions or declarative upsert-applier specs) enabling the default applyReplayMutation dispatch.
|
|
36
|
+
* @param {(args: Record<string, ?>) => Record<string, ?>} [args.persistExtraAttributes] - Extra attributes merged into the model-backed persisted row (e.g. an event scope column).
|
|
37
|
+
* @param {(args: {mutation: ?, applyResult: ?}) => ?} [args.persistSerializedData] - Overrides the persisted data payload (object results are JSON stringified).
|
|
38
|
+
* @param {(broadcast: {channel: string, params: Record<string, ?>, body: ?}) => Promise<void>} [args.broadcaster] - Delivers declarative broadcasts. Required when broadcasts are configured.
|
|
39
|
+
* @param {SyncReplayBroadcast[]} [args.broadcasts] - Broadcasts fanned out by the default afterReplayMutation.
|
|
15
40
|
*/
|
|
16
41
|
constructor(args?: {
|
|
17
42
|
logger?: {
|
|
18
43
|
debug?: (...args: Array<unknown>) => void;
|
|
19
44
|
warn?: (...args: Array<unknown>) => void;
|
|
20
45
|
} | undefined;
|
|
46
|
+
syncModel?: unknown;
|
|
47
|
+
actorForeignKeyColumn?: string | undefined;
|
|
48
|
+
authenticationTokenModel?: unknown;
|
|
49
|
+
authenticationTokenColumn?: string | undefined;
|
|
50
|
+
authenticationTokenParam?: string | undefined;
|
|
51
|
+
applyHandlers?: Record<string, {
|
|
52
|
+
modelClass: unknown;
|
|
53
|
+
fields: Record<string, string | {
|
|
54
|
+
type: string;
|
|
55
|
+
column?: string;
|
|
56
|
+
} | ((value: unknown, label: string) => unknown)>;
|
|
57
|
+
findRecord?: ((args: {
|
|
58
|
+
data: Record<string, unknown>;
|
|
59
|
+
mutation: unknown;
|
|
60
|
+
context: Record<string, unknown>;
|
|
61
|
+
}) => Promise<unknown>) | undefined;
|
|
62
|
+
findRecordForDelete?: ((args: {
|
|
63
|
+
mutation: unknown;
|
|
64
|
+
context: Record<string, unknown>;
|
|
65
|
+
}) => Promise<unknown>) | undefined;
|
|
66
|
+
restArgs?: "error" | "ignore" | undefined;
|
|
67
|
+
afterApply?: ((args: {
|
|
68
|
+
mappedAttributes: Record<string, unknown>;
|
|
69
|
+
mutation: unknown;
|
|
70
|
+
context: Record<string, unknown>;
|
|
71
|
+
record: unknown;
|
|
72
|
+
}) => Promise<Record<string, unknown> | void>) | undefined;
|
|
73
|
+
serialize?: ((args: {
|
|
74
|
+
mutation: unknown;
|
|
75
|
+
context: Record<string, unknown>;
|
|
76
|
+
record: unknown;
|
|
77
|
+
}) => Promise<Record<string, unknown>> | Record<string, unknown>) | undefined;
|
|
78
|
+
} | ((args: Record<string, unknown>) => Promise<unknown>)> | undefined;
|
|
79
|
+
persistExtraAttributes?: ((args: Record<string, unknown>) => Record<string, unknown>) | undefined;
|
|
80
|
+
persistSerializedData?: ((args: {
|
|
81
|
+
mutation: unknown;
|
|
82
|
+
applyResult: unknown;
|
|
83
|
+
}) => unknown) | undefined;
|
|
84
|
+
broadcaster?: ((broadcast: {
|
|
85
|
+
channel: string;
|
|
86
|
+
params: Record<string, unknown>;
|
|
87
|
+
body: unknown;
|
|
88
|
+
}) => Promise<void>) | undefined;
|
|
89
|
+
broadcasts?: SyncReplayBroadcast[] | undefined;
|
|
21
90
|
});
|
|
22
91
|
logger: {
|
|
23
92
|
debug?: (...args: Array<unknown>) => void;
|
|
24
93
|
warn?: (...args: Array<unknown>) => void;
|
|
25
94
|
};
|
|
95
|
+
syncModel: any;
|
|
96
|
+
actorForeignKeyColumn: string;
|
|
97
|
+
authenticationTokenModel: any;
|
|
98
|
+
authenticationTokenColumn: string;
|
|
99
|
+
authenticationTokenParam: string;
|
|
100
|
+
persistExtraAttributes: ((args: Record<string, unknown>) => Record<string, unknown>) | null;
|
|
101
|
+
persistSerializedData: ((args: {
|
|
102
|
+
mutation: unknown;
|
|
103
|
+
applyResult: unknown;
|
|
104
|
+
}) => unknown) | null;
|
|
105
|
+
broadcaster: ((broadcast: {
|
|
106
|
+
channel: string;
|
|
107
|
+
params: Record<string, unknown>;
|
|
108
|
+
body: unknown;
|
|
109
|
+
}) => Promise<void>) | null;
|
|
110
|
+
broadcasts: SyncReplayBroadcast[] | null;
|
|
111
|
+
applyHandlers: Record<string, (args: Record<string, unknown>) => Promise<unknown>> | null;
|
|
112
|
+
/**
|
|
113
|
+
* Wraps declarative apply-handler specs in upsert appliers.
|
|
114
|
+
* @param {Record<string, ?>} applyHandlers - Raw apply handlers.
|
|
115
|
+
* @returns {Record<string, (args: Record<string, ?>) => Promise<?>>} Callable handlers by resource type.
|
|
116
|
+
*/
|
|
117
|
+
builtApplyHandlers(applyHandlers: Record<string, unknown>): Record<string, (args: Record<string, unknown>) => Promise<unknown>>;
|
|
26
118
|
/**
|
|
27
119
|
* Replays a sync batch.
|
|
28
120
|
* @param {Record<string, ?>} params - Request params carrying authentication and syncs.
|
|
@@ -36,10 +128,13 @@ export default class SyncEnvelopeReplayService {
|
|
|
36
128
|
}>;
|
|
37
129
|
/**
|
|
38
130
|
* Authenticates the sync batch actor.
|
|
39
|
-
*
|
|
131
|
+
*
|
|
132
|
+
* Defaults to a token-model lookup when `authenticationTokenModel` is
|
|
133
|
+
* configured; otherwise apps override this hook.
|
|
134
|
+
* @param {Record<string, ?>} params - Request params.
|
|
40
135
|
* @returns {Promise<{authenticated: true, actor: ?} | {authenticated: false, errorCode: string, errorMessage: string}>} Auth result.
|
|
41
136
|
*/
|
|
42
|
-
authenticateReplay(
|
|
137
|
+
authenticateReplay(params: Record<string, unknown>): Promise<{
|
|
43
138
|
authenticated: true;
|
|
44
139
|
actor: unknown;
|
|
45
140
|
} | {
|
|
@@ -106,14 +201,23 @@ export default class SyncEnvelopeReplayService {
|
|
|
106
201
|
}>;
|
|
107
202
|
/**
|
|
108
203
|
* Loads the previously stored sync/change row for stale-client comparison.
|
|
109
|
-
*
|
|
204
|
+
*
|
|
205
|
+
* Defaults to a sync-model lookup by actor and resource identity when a sync
|
|
206
|
+
* model is configured; otherwise apps override this hook.
|
|
207
|
+
* @param {{actor: ?, context: Record<string, ?>, mutation: import("./sync-envelope-replay-service.js").SyncReplayMutation}} args - Actor, batch context, and mutation.
|
|
110
208
|
* @returns {Promise<?>} Existing sync row.
|
|
111
209
|
*/
|
|
112
|
-
findExistingReplaySync(
|
|
210
|
+
findExistingReplaySync({ actor, mutation }: {
|
|
113
211
|
actor: unknown;
|
|
114
212
|
context: Record<string, unknown>;
|
|
115
213
|
mutation: import("./sync-envelope-replay-service.js").SyncReplayMutation;
|
|
116
214
|
}): Promise<unknown>;
|
|
215
|
+
/**
|
|
216
|
+
* Resolves the persisted actor id used by model-backed default hooks.
|
|
217
|
+
* @param {?} actor - Actor returned from authenticateReplay.
|
|
218
|
+
* @returns {?} Actor id.
|
|
219
|
+
*/
|
|
220
|
+
replayActorId(actor: unknown): unknown;
|
|
117
221
|
/**
|
|
118
222
|
* Returns whether a normalized mutation should be applied to domain models.
|
|
119
223
|
* @param {{actor: ?, context: Record<string, ?>, existingSync: ?, mutation: import("./sync-envelope-replay-service.js").SyncReplayMutation}} args - Actor, batch context, existing sync row, and mutation.
|
|
@@ -133,10 +237,13 @@ export default class SyncEnvelopeReplayService {
|
|
|
133
237
|
existingReplaySyncClientUpdatedAt(existingSync: unknown): Date | null;
|
|
134
238
|
/**
|
|
135
239
|
* Applies one normalized mutation to domain models.
|
|
136
|
-
*
|
|
240
|
+
*
|
|
241
|
+
* Defaults to dispatching through the configured apply-handler registry;
|
|
242
|
+
* mutations without a registered handler fail loudly.
|
|
243
|
+
* @param {{actor: ?, context: Record<string, ?>, existingSync: ?, mutation: import("./sync-envelope-replay-service.js").SyncReplayMutation}} args - Actor, batch context, existing sync row, and mutation.
|
|
137
244
|
* @returns {Promise<?>} Project-specific apply result.
|
|
138
245
|
*/
|
|
139
|
-
applyReplayMutation(
|
|
246
|
+
applyReplayMutation(args: {
|
|
140
247
|
actor: unknown;
|
|
141
248
|
context: Record<string, unknown>;
|
|
142
249
|
existingSync: unknown;
|
|
@@ -155,10 +262,13 @@ export default class SyncEnvelopeReplayService {
|
|
|
155
262
|
}): Promise<unknown>;
|
|
156
263
|
/**
|
|
157
264
|
* Persists one normalized mutation into the app sync/change store.
|
|
158
|
-
*
|
|
265
|
+
*
|
|
266
|
+
* Defaults to a stale-guarded sync-model upsert (with server re-sequencing on
|
|
267
|
+
* updates) when a sync model is configured; otherwise apps override this hook.
|
|
268
|
+
* @param {{actor: ?, context: Record<string, ?>, existingSync: ?, applyResult: ?, mutation: import("./sync-envelope-replay-service.js").SyncReplayMutation, shouldApply: boolean}} args - Replay persistence arguments.
|
|
159
269
|
* @returns {Promise<void>}
|
|
160
270
|
*/
|
|
161
|
-
persistReplayMutation(
|
|
271
|
+
persistReplayMutation({ actor, applyResult, context, existingSync, mutation, shouldApply }: {
|
|
162
272
|
actor: unknown;
|
|
163
273
|
context: Record<string, unknown>;
|
|
164
274
|
existingSync: unknown;
|
|
@@ -166,12 +276,24 @@ export default class SyncEnvelopeReplayService {
|
|
|
166
276
|
mutation: import("./sync-envelope-replay-service.js").SyncReplayMutation;
|
|
167
277
|
shouldApply: boolean;
|
|
168
278
|
}): Promise<void>;
|
|
279
|
+
/**
|
|
280
|
+
* Builds the sync-model attributes persisted by the model-backed default.
|
|
281
|
+
* @param {{actor: ?, mutation: import("./sync-envelope-replay-service.js").SyncReplayMutation}} args - Actor and mutation.
|
|
282
|
+
* @returns {Record<string, ?>} Sync row attributes.
|
|
283
|
+
*/
|
|
284
|
+
replayPersistAttributes({ actor, mutation }: {
|
|
285
|
+
actor: unknown;
|
|
286
|
+
mutation: import("./sync-envelope-replay-service.js").SyncReplayMutation;
|
|
287
|
+
}): Record<string, unknown>;
|
|
169
288
|
/**
|
|
170
289
|
* Runs side effects after a successful mutation replay and persistence.
|
|
171
|
-
*
|
|
290
|
+
*
|
|
291
|
+
* Defaults to fanning the applied result out through the configured
|
|
292
|
+
* declarative broadcasts.
|
|
293
|
+
* @param {{actor: ?, context: Record<string, ?>, existingSync: ?, applyResult: ?, mutation: import("./sync-envelope-replay-service.js").SyncReplayMutation, shouldApply: boolean}} args - Replay side-effect arguments.
|
|
172
294
|
* @returns {Promise<void>}
|
|
173
295
|
*/
|
|
174
|
-
afterReplayMutation(
|
|
296
|
+
afterReplayMutation(args: {
|
|
175
297
|
actor: unknown;
|
|
176
298
|
context: Record<string, unknown>;
|
|
177
299
|
existingSync: unknown;
|
|
@@ -180,6 +302,27 @@ export default class SyncEnvelopeReplayService {
|
|
|
180
302
|
shouldApply: boolean;
|
|
181
303
|
}): Promise<void>;
|
|
182
304
|
}
|
|
305
|
+
/**
|
|
306
|
+
* One declarative broadcast fanned out after a mutation applies.
|
|
307
|
+
*/
|
|
308
|
+
export type SyncReplayBroadcast = {
|
|
309
|
+
/**
|
|
310
|
+
* - Channel name or resolver.
|
|
311
|
+
*/
|
|
312
|
+
channel: string | ((args: Record<string, unknown>) => string);
|
|
313
|
+
/**
|
|
314
|
+
* - Channel routing params.
|
|
315
|
+
*/
|
|
316
|
+
broadcastParams: (args: Record<string, unknown>) => Record<string, unknown>;
|
|
317
|
+
/**
|
|
318
|
+
* - Broadcast body.
|
|
319
|
+
*/
|
|
320
|
+
body: (args: Record<string, unknown>) => unknown;
|
|
321
|
+
/**
|
|
322
|
+
* - Optional gate; skipped when it returns false.
|
|
323
|
+
*/
|
|
324
|
+
when?: ((args: Record<string, unknown>) => boolean) | undefined;
|
|
325
|
+
};
|
|
183
326
|
export type SyncReplayMutation = {
|
|
184
327
|
/**
|
|
185
328
|
* - Client-side mutation timestamp.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-envelope-replay-service.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-envelope-replay-service.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sync-envelope-replay-service.d.ts","sourceRoot":"","sources":["../../../src/sync/sync-envelope-replay-service.js"],"names":[],"mappings":"AAIA;;;;;;;GAOG;AAEH;;;;;;;;GAQG;AACH;IACE;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,mBAZG;QAAqG,MAAM;oBAA1F,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI;mBAAS,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI;;QAC3E,SAAS,GAAlB,OAAC;QACa,qBAAqB;QAC1B,wBAAwB,GAAjC,OAAC;QACa,yBAAyB;QACzB,wBAAwB;QACsF,aAAa;;;;sBAFnE,CAAC;;;;;;;;;;;;;;;;;;;;;;;oBAEhD,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,OAAO,CAAC,OAAC,CAAC;QACD,sBAAsB,WAArE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;QACI,qBAAqB,WAAhE;YAAC,QAAQ,EAAE,OAAC,CAAC;YAAC,WAAW,EAAE,OAAC,CAAA;SAAC,KAAK,OAAC;QACiD,WAAW,gBAA1F;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;YAAC,IAAI,EAAE,OAAC,CAAA;SAAC,KAAK,OAAO,CAAC,IAAI,CAAC;QACtD,UAAU;KACjD,EAoBA;IAlBC;gBAbkB,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI;eAAS,CAAC,GAAG,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI;MAazD;IACpC,eAAuC;IACvC,8BAAoF;IACpF,8BAAqE;IACrE,kCAA0E;IAC1E,iCAAsF;IACtF,gCAZgB,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,SAYU;IACjE,+BAZgB;QAAC,QAAQ,EAAE,OAAC,CAAC;QAAC,WAAW,EAAE,OAAC,CAAA;KAAC,KAAK,OAAC,SAYY;IAC/D,0BAZqB;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,IAAI,EAAE,OAAC,CAAA;KAAC,KAAK,OAAO,CAAC,IAAI,CAAC,SAYjD;IAC3C,yCAAyC;IACzC,qCAaiC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,OAAO,CAAC,OAAC,CAAC,SAb2B;IAU9F;;;;OAIG;IACH,kCAHW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GACf,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,OAAO,CAAC,OAAC,CAAC,CAAC,CAUnE;IAED;;;;OAIG;IACH,eAHW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GACf,OAAO,CAAC;QAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,CAkDlH;IAED;;;;;;;OAOG;IACH,2BAHW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GACf,OAAO,CAAC;QAAC,aAAa,EAAE,IAAI,CAAC;QAAC,KAAK,EAAE,OAAC,CAAA;KAAC,GAAG;QAAC,aAAa,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAC,CAAC,CAoBtH;IAED;;;;OAIG;IACH,0BAHW;QAAC,KAAK,EAAE,OAAC,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAA;KAAC,GACnC,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC,CAItC;IAED;;;;OAIG;IACH,oBAHW,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,GACf,KAAK,CAAC,OAAC,CAAC,CAIpB;IAED;;;;OAIG;IACH,6BAHW,OAAC,GACC;QAAC,EAAE,EAAE,IAAI,CAAC;QAAC,QAAQ,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,CAAA;KAAC,GAAG;QAAC,EAAE,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAA;KAAC,CAmC3I;IAED;;;;OAIG;IACH,gEAHW;QAAC,IAAI,EAAE,OAAC,CAAC;QAAC,EAAE,EAAE,OAAC,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAC,GACxD;QAAC,EAAE,EAAE,IAAI,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAA;KAAC,GAAG;QAAC,EAAE,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAA;KAAC,CAqB1F;IAED;;;;OAIG;IACH,+BAHW;QAAC,KAAK,EAAE,OAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,CAAA;KAAC,GAC9G,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAC,CAAC,CAIxD;IAED;;;;;;;OAOG;IACH,4CAHW;QAAC,KAAK,EAAE,OAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,CAAA;KAAC,GAC9G,OAAO,CAAC,OAAC,CAAC,CAUtB;IAED;;;;OAIG;IACH,qBAHW,OAAC,GACC,OAAC,CAQb;IAED;;;;OAIG;IACH,sDAHW;QAAC,KAAK,EAAE,OAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,YAAY,EAAE,OAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,CAAA;KAAC,GAC/H,OAAO,CAAC,OAAO,CAAC,CAM5B;IAED;;;;OAIG;IACH,gDAHW,OAAC,GACC,IAAI,GAAG,IAAI,CAiBvB;IAED;;;;;;;OAOG;IACH,0BAHW;QAAC,KAAK,EAAE,OAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,YAAY,EAAE,OAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,CAAA;KAAC,GAC/H,OAAO,CAAC,OAAC,CAAC,CAUtB;IAED;;;;OAIG;IACH,6BAHW;QAAC,KAAK,EAAE,OAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,YAAY,EAAE,OAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,CAAA;KAAC,GAC/H,OAAO,CAAC,OAAC,CAAC,CAItB;IAED;;;;;;;OAOG;IACH,4FAHW;QAAC,KAAK,EAAE,OAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,YAAY,EAAE,OAAC,CAAC;QAAC,WAAW,EAAE,OAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAC,GACrK,OAAO,CAAC,IAAI,CAAC,CAgCzB;IAED;;;;OAIG;IACH,6CAHW;QAAC,KAAK,EAAE,OAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,CAAA;KAAC,GAClF,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAW7B;IAED;;;;;;;OAOG;IACH,0BAHW;QAAC,KAAK,EAAE,OAAC,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,CAAC;QAAC,YAAY,EAAE,OAAC,CAAC;QAAC,WAAW,EAAE,OAAC,CAAC;QAAC,QAAQ,EAAE,OAAO,mCAAmC,EAAE,kBAAkB,CAAC;QAAC,WAAW,EAAE,OAAO,CAAA;KAAC,GACrK,OAAO,CAAC,IAAI,CAAC,CAiBzB;CACF;;;;;;;;aAraa,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,MAAM,CAAC;;;;qBAC9C,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;UAC9C,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,OAAC;;;;mBACvB,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC,KAAK,OAAO;;;;;;qBAsapC,IAAI;;;;UACJ,MAAM,CAAC,MAAM,EAAE,OAAC,CAAC;;;;QACjB,OAAC;;;;gBACD,MAAM;;;;kBACN,MAAM;;;;oBACN,MAAM;;;;cACN,MAAM"}
|