@fragno-dev/db 0.0.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,17 @@
1
+ $ tsdown
2
+ ℹ tsdown v0.15.6 powered by rolldown v1.0.0-beta.41
3
+ ℹ Using tsdown config: /home/runner/work/fragno/fragno/packages/fragno-db/tsdown.config.ts
4
+ ℹ entry: src/mod.ts, src/schema/create.ts
5
+ ℹ tsconfig: tsconfig.json
6
+ ℹ Build start
7
+ ℹ dist/schema/create.js 11.66 kB │ gzip: 3.10 kB
8
+ ℹ dist/mod.js  0.11 kB │ gzip: 0.11 kB
9
+ ℹ dist/schema/create.js.map 29.19 kB │ gzip: 7.40 kB
10
+ ℹ dist/schema/create.d.ts.map  7.92 kB │ gzip: 3.21 kB
11
+ ℹ dist/mod.js.map  0.15 kB │ gzip: 0.14 kB
12
+ ℹ dist/mod.d.ts.map  0.11 kB │ gzip: 0.11 kB
13
+ ℹ dist/cuid.js  0.07 kB │ gzip: 0.07 kB
14
+ ℹ dist/schema/create.d.ts 10.52 kB │ gzip: 2.56 kB
15
+ ℹ dist/mod.d.ts  0.12 kB │ gzip: 0.12 kB
16
+ ℹ 9 files, total: 59.86 kB
17
+ ✔ Build complete in 7914ms
@@ -0,0 +1 @@
1
+ $ tsc --noEmit
package/README.md ADDED
@@ -0,0 +1,13 @@
1
+ # @fragno-dev/db
2
+
3
+ ## Attribution & Original Source
4
+
5
+ **Important:** A significant portion of this package's codebase is adopted from
6
+ [fumadb](https://github.com/fuma-nama/fumadb), which is licensed under the MIT License.
7
+
8
+ - **Project:** fumadb
9
+ - **Author:** Fuma Nama and contributors
10
+ - **License:** MIT
11
+ - **Source:** https://github.com/fuma-nama/fumadb
12
+
13
+ We are grateful to Fuma Nama for their excellent work on the original implementation.
package/dist/cuid.js ADDED
@@ -0,0 +1,3 @@
1
+ import { createId } from "@paralleldrive/cuid2";
2
+
3
+ export { createId };
package/dist/mod.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ //#region src/mod.d.ts
2
+ declare const hello = "world";
3
+ //#endregion
4
+ export { hello };
5
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","names":[],"sources":["../src/mod.ts"],"sourcesContent":[],"mappings":";cAAa,KAAA"}
package/dist/mod.js ADDED
@@ -0,0 +1,6 @@
1
+ //#region src/mod.ts
2
+ const hello = "world";
3
+
4
+ //#endregion
5
+ export { hello };
6
+ //# sourceMappingURL=mod.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.js","names":[],"sources":["../src/mod.ts"],"sourcesContent":["export const hello = \"world\";\n"],"mappings":";AAAA,MAAa,QAAQ"}
@@ -0,0 +1,282 @@
1
+ //#region src/schema/create.d.ts
2
+ type AnySchema = Schema<Record<string, AnyTable>>;
3
+ type AnyRelation = Relation;
4
+ type AnyTable = Table;
5
+ type AnyColumn = Column<keyof TypeMap, unknown, unknown> | IdColumn<IdColumnType, unknown, unknown>;
6
+ /**
7
+ * Operations that can be performed on a table during its definition.
8
+ */
9
+ type TableOperation = {
10
+ type: "add-index";
11
+ name: string;
12
+ columns: string[];
13
+ unique: boolean;
14
+ };
15
+ /**
16
+ * Operations that can be performed on a schema during its definition.
17
+ * These are tracked so we can generate migrations for specific version ranges.
18
+ */
19
+ type SchemaOperation = {
20
+ type: "add-table";
21
+ tableName: string;
22
+ table: AnyTable;
23
+ } | {
24
+ type: "add-reference";
25
+ tableName: string;
26
+ referenceName: string;
27
+ config: {
28
+ columns: string[];
29
+ targetTable: string;
30
+ targetColumns: string[];
31
+ };
32
+ } | {
33
+ type: "add-index";
34
+ tableName: string;
35
+ name: string;
36
+ columns: string[];
37
+ unique: boolean;
38
+ };
39
+ interface ForeignKey {
40
+ name: string;
41
+ table: AnyTable;
42
+ columns: AnyColumn[];
43
+ referencedTable: AnyTable;
44
+ referencedColumns: AnyColumn[];
45
+ }
46
+ declare class RelationInit<TRelationType extends RelationType, TTables extends Record<string, AnyTable>, TTableName extends keyof TTables> {
47
+ type: TRelationType;
48
+ referencedTable: TTables[TTableName];
49
+ referencer: AnyTable;
50
+ on: [string, string][];
51
+ constructor(type: TRelationType, referencedTable: TTables[TTableName], referencer: AnyTable);
52
+ }
53
+ interface Index {
54
+ name: string;
55
+ columns: AnyColumn[];
56
+ unique: boolean;
57
+ }
58
+ declare class ExplicitRelationInit<TRelationType extends RelationType, TTables extends Record<string, AnyTable>, TTableName extends keyof TTables> extends RelationInit<TRelationType, TTables, TTableName> {
59
+ private foreignKeyName?;
60
+ private initForeignKey;
61
+ init(ormName: string): Relation<TRelationType, TTables[TTableName]>;
62
+ /**
63
+ * Define custom foreign key name.
64
+ */
65
+ foreignKey(name: string): this;
66
+ }
67
+ interface Relation<TRelationType extends RelationType = RelationType, TTable extends AnyTable = AnyTable> {
68
+ id: string;
69
+ name: string;
70
+ type: TRelationType;
71
+ table: TTable;
72
+ referencer: AnyTable;
73
+ on: [string, string][];
74
+ foreignKey: ForeignKey;
75
+ }
76
+ interface Table<TColumns extends Record<string, AnyColumn> = Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation> = Record<string, AnyRelation>> {
77
+ name: string;
78
+ ormName: string;
79
+ columns: TColumns;
80
+ relations: TRelations;
81
+ foreignKeys: ForeignKey[];
82
+ indexes: Index[];
83
+ /**
84
+ * Get column by name
85
+ */
86
+ getColumnByName: (name: string) => AnyColumn | undefined;
87
+ getIdColumn: () => AnyColumn;
88
+ clone: () => Table<TColumns, TRelations>;
89
+ }
90
+ type DefaultFunctionMap = {
91
+ date: "now";
92
+ timestamp: "now";
93
+ string: "auto";
94
+ } & Record<`varchar(${number})`, "auto">;
95
+ type DefaultFunction<TType extends keyof TypeMap> = (TType extends keyof DefaultFunctionMap ? DefaultFunctionMap[TType] : never) | (() => TypeMap[TType]);
96
+ type IdColumnType = `varchar(${number})`;
97
+ type TypeMap = {
98
+ string: string;
99
+ bigint: bigint;
100
+ integer: number;
101
+ decimal: number;
102
+ bool: boolean;
103
+ json: unknown;
104
+ /**
105
+ * this follows the same specs as Prisma `Bytes` for consistency.
106
+ */
107
+ binary: Uint8Array;
108
+ date: Date;
109
+ timestamp: Date;
110
+ } & Record<`varchar(${number})`, string>;
111
+ declare class Column<TType extends keyof TypeMap, TIn = unknown, TOut = unknown> {
112
+ type: TType;
113
+ name: string;
114
+ ormName: string;
115
+ isNullable: boolean;
116
+ isUnique: boolean;
117
+ isReference: boolean;
118
+ default?: {
119
+ value: TypeMap[TType];
120
+ } | {
121
+ runtime: DefaultFunction<TType>;
122
+ };
123
+ table: AnyTable;
124
+ constructor(type: TType);
125
+ nullable<TNullable extends boolean = true>(nullable?: TNullable): Column<TType, TNullable extends true ? TIn | null : Exclude<TIn, null>, TNullable extends true ? TOut | null : Exclude<TOut, null>>;
126
+ /**
127
+ * Generate default value on runtime
128
+ */
129
+ defaultTo$(fn: DefaultFunction<TType>): Column<TType, TIn | null, TOut>;
130
+ /**
131
+ * Set a database-level default value
132
+ *
133
+ * For schemaless database, it's still generated on runtime
134
+ */
135
+ defaultTo(value: TypeMap[TType]): Column<TType, TIn | null, TOut>;
136
+ clone(): Column<TType, unknown, unknown>;
137
+ getUniqueConstraintName(): string;
138
+ /**
139
+ * Generate default value for the column on runtime.
140
+ */
141
+ generateDefaultValue(): TypeMap[TType] | undefined;
142
+ get $in(): TIn;
143
+ get $out(): TOut;
144
+ }
145
+ declare class IdColumn<TType extends IdColumnType = IdColumnType, TIn = unknown, TOut = unknown> extends Column<TType, TIn, TOut> {
146
+ id: boolean;
147
+ clone(): IdColumn<TType, unknown, unknown>;
148
+ defaultTo$(fn: DefaultFunction<TType>): IdColumn<TType, TIn | null, TOut>;
149
+ defaultTo(value: TypeMap[TType]): IdColumn<TType, TIn | null, TOut>;
150
+ }
151
+ declare function column<TType extends keyof TypeMap>(type: TType): Column<TType, TypeMap[TType], TypeMap[TType]>;
152
+ /**
153
+ * Create a reference column that points to another table.
154
+ * This is used for foreign key relationships.
155
+ */
156
+ declare function referenceColumn<TType extends keyof TypeMap = "varchar(30)">(type?: TType): Column<TType, TypeMap[TType], TypeMap[TType]>;
157
+ declare function idColumn(): IdColumn<"varchar(30)", string, string>;
158
+ type RelationType = "one";
159
+ declare class TableBuilder<TColumns extends Record<string, AnyColumn> = Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation> = Record<string, AnyRelation>> {
160
+ #private;
161
+ constructor(name: string);
162
+ /**
163
+ * Add a column to the table. Increments the version counter.
164
+ */
165
+ addColumn<TColumnName extends string, TColumn extends AnyColumn>(ormName: TColumnName, col: TColumn): TableBuilder<TColumns & Record<TColumnName, TColumn>, TRelations>;
166
+ /**
167
+ * Add a column to the table with simplified syntax. Increments the version counter.
168
+ */
169
+ addColumn<TColumnName extends string, TType extends keyof TypeMap>(ormName: TColumnName, type: TType): TableBuilder<TColumns & Record<TColumnName, Column<TType, TypeMap[TType], TypeMap[TType]>>, TRelations>;
170
+ /**
171
+ * Create an index on the specified columns. Increments the version counter.
172
+ */
173
+ createIndex<TColumnName extends string & keyof TColumns>(name: string, columns: TColumnName[], options?: {
174
+ unique?: boolean;
175
+ }): TableBuilder<TColumns, TRelations>;
176
+ /**
177
+ * Build the final table. This should be called after all columns are added.
178
+ */
179
+ build(): Table<TColumns, TRelations>;
180
+ /**
181
+ * Get the current version of the table builder.
182
+ */
183
+ getVersion(): number;
184
+ /**
185
+ * Get the operations performed on this table.
186
+ */
187
+ getOperations(): TableOperation[];
188
+ }
189
+ /**
190
+ * Create a new table with callback pattern.
191
+ */
192
+ declare function table<TColumns extends Record<string, AnyColumn> = Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation> = Record<string, AnyRelation>>(name: string, callback: (builder: TableBuilder<Record<string, AnyColumn>, Record<string, AnyRelation>>) => TableBuilder<TColumns, TRelations>): Table<TColumns, TRelations>;
193
+ interface Schema<TTables extends Record<string, AnyTable> = Record<string, AnyTable>> {
194
+ /**
195
+ * @description The version of the schema, automatically incremented on each change.
196
+ */
197
+ version: number;
198
+ tables: TTables;
199
+ /**
200
+ * @description Operations performed on this schema, in order.
201
+ * Used to generate migrations for specific version ranges.
202
+ */
203
+ operations: SchemaOperation[];
204
+ clone: () => Schema<TTables>;
205
+ }
206
+ declare class SchemaBuilder<TTables extends Record<string, AnyTable> = Record<string, never>> {
207
+ #private;
208
+ constructor();
209
+ /**
210
+ * Add a table to the schema. Increments the version counter.
211
+ */
212
+ addTable<TTableName extends string, TColumns extends Record<string, AnyColumn>, TRelations extends Record<string, AnyRelation>>(ormName: TTableName, callback: (builder: TableBuilder<Record<string, AnyColumn>, Record<string, AnyRelation>>) => TableBuilder<TColumns, TRelations>): SchemaBuilder<TTables & Record<TTableName, Table<TColumns, TRelations>>>;
213
+ /**
214
+ * Add a foreign key reference from this table to another table.
215
+ *
216
+ * @param tableName - The table that has the foreign key column
217
+ * @param referenceName - A name for this reference (e.g., "author", "category")
218
+ * @param config - Configuration specifying the foreign key mapping
219
+ *
220
+ * @example
221
+ * ```ts
222
+ * // Basic foreign key: post -> user
223
+ * schema(s => s
224
+ * .addTable("users", t => t.addColumn("id", idColumn()))
225
+ * .addTable("posts", t => t
226
+ * .addColumn("id", idColumn())
227
+ * .addColumn("authorId", referenceColumn()))
228
+ * .addReference("posts", "author", {
229
+ * columns: ["authorId"],
230
+ * targetTable: "users",
231
+ * targetColumns: ["id"],
232
+ * })
233
+ * )
234
+ *
235
+ * // Self-referencing foreign key
236
+ * .addReference("users", "inviter", {
237
+ * columns: ["invitedBy"],
238
+ * targetTable: "users",
239
+ * targetColumns: ["id"],
240
+ * })
241
+ *
242
+ * // Multiple foreign keys - call addReference multiple times
243
+ * .addReference("posts", "author", {
244
+ * columns: ["authorId"],
245
+ * targetTable: "users",
246
+ * targetColumns: ["id"],
247
+ * })
248
+ * .addReference("posts", "category", {
249
+ * columns: ["categoryId"],
250
+ * targetTable: "categories",
251
+ * targetColumns: ["id"],
252
+ * })
253
+ * ```
254
+ */
255
+ addReference<TTableName extends string & keyof TTables, TReferencedTableName extends string & keyof TTables>(tableName: TTableName, referenceName: string, config: {
256
+ columns: (keyof TTables[TTableName]["columns"])[];
257
+ targetTable: TReferencedTableName;
258
+ targetColumns: (keyof TTables[TReferencedTableName]["columns"])[];
259
+ }): SchemaBuilder<TTables>;
260
+ /**
261
+ * Build the final schema. This should be called after all tables are added.
262
+ */
263
+ build(): Schema<TTables>;
264
+ /**
265
+ * Get the current version of the schema builder.
266
+ */
267
+ getVersion(): number;
268
+ }
269
+ /**
270
+ * Create a new schema with callback pattern.
271
+ */
272
+ declare function schema<TTables extends Record<string, AnyTable> = Record<string, never>>(callback: (builder: SchemaBuilder<Record<string, never>>) => SchemaBuilder<TTables>): Schema<TTables>;
273
+ declare function compileForeignKey(key: ForeignKey): {
274
+ name: string;
275
+ table: string;
276
+ referencedTable: string;
277
+ referencedColumns: string[];
278
+ columns: string[];
279
+ };
280
+ //#endregion
281
+ export { AnyColumn, AnyRelation, AnySchema, AnyTable, Column, ExplicitRelationInit, ForeignKey, IdColumn, Index, Relation, Schema, SchemaBuilder, SchemaOperation, Table, TableBuilder, TableOperation, TypeMap, column, compileForeignKey, idColumn, referenceColumn, schema, table };
282
+ //# sourceMappingURL=create.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.d.ts","names":[],"sources":["../../src/schema/create.ts"],"sourcesContent":[],"mappings":";KAEY,SAAA,GAAY,OAAO,eAAe;AAAlC,KAEA,WAAA,GAAc,QAFL;AAAA,KAIT,QAAA,GAAW,KAJF;AAAyB,KAMlC,SAAA,GACR,MAP0C,CAAA,MAO7B,OAP6B,EAAA,OAAA,EAAA,OAAA,CAAA,GAQ1C,QAR0C,CAQjC,YARiC,EAAA,OAAA,EAAA,OAAA,CAAA;;;;AAElC,KAWA,cAAA,GAXc;EAEd,IAAA,EAAA,WAAQ;EAER,IAAA,EAAA,MAAS;EAAA,OAAA,EAAA,MAAA,EAAA;QACJ,EAAA,OAAA;;;;;AAMjB;AAWY,KAAA,eAAA,GAAe;EAwBV,IAAA,EAAA,WAAU;EAAA,SAAA,EAAA,MAAA;OAElB,EAtBI,QAsBJ;;MAGU,EAAA,eAAA;WACE,EAAA,MAAA;EAAS,aAAA,EAAA,MAAA;EAGxB,MAAA,EAAA;IAAY,OAAA,EAAA,MAAA,EAAA;IACM,WAAA,EAAA,MAAA;IACS,aAAA,EAAA,MAAA,EAAA;;;MAGzB,EAAA,WAAA;WACW,EAAA,MAAA;MAAQ,EAAA,MAAA;SACb,EAAA,MAAA,EAAA;QAGM,EAAA,OAAA;;AAAwC,UAnB3C,UAAA,CAmB2C;MAAyB,EAAA,MAAA;EAAQ,KAAA,EAjBpF,QAiBoF;EAO5E,OAAA,EAvBN,SAyBA,EAAA;EAoBE,eAAA,EA3CM,QA2Cc;EAAA,iBAAA,EA1CZ,SA0CY,EAAA;;cAvC3B,YAyC2B,CAAA,sBAxCT,YAwCS,EAAA,gBAvCf,MAuCe,CAAA,MAAA,EAvCA,QAuCA,CAAA,EAAA,mBAAA,MAtCN,OAsCM,CAAA,CAAA;MAAf,EApCV,aAoCU;iBACS,EApCR,OAoCQ,CApCA,UAoCA,CAAA;YACJ,EApCT,QAoCS;MAAe,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA;aAAS,CAAA,IAAA,EAjC3B,aAiC2B,EAAA,eAAA,EAjCK,OAiCL,CAjCa,UAiCb,CAAA,EAAA,UAAA,EAjCsC,QAiCtC;;AAuBE,UAjDhC,KAAA,CAiDgC;MAAQ,EAAA,MAAA;SAAhC,EA/Cd,SA+Cc,EAAA;QAvBf,EAAA,OAAA;;AA8CO,cAlDJ,oBAkDY,CAAA,sBAjDD,YAiDC,EAAA,gBAhDP,MAgDO,CAAA,MAAA,EAhDQ,QAgDR,CAAA,EAAA,mBAAA,MA/CE,OA+CF,CAAA,SA9Cf,YA8Ce,CA9CF,aA8CE,EA9Ca,OA8Cb,EA9CsB,UA8CtB,CAAA,CAAA;EAAA,QAAA,cAAA;UACD,cAAA;MAAe,CAAA,OAAA,EAAA,MAAA,CAAA,EAxBd,QAwBc,CAxBL,aAwBK,EAxBU,OAwBV,CAxBkB,UAwBlB,CAAA,CAAA;;;;YAO9B,CAAA,IAAA,EAAA,MAAA,CAAA,EAAA,IAAA;;AAIK,UAZG,QAYH,CAAA,sBAXU,YAWV,GAXyB,YAWzB,EAAA,eAVG,QAUH,GAVc,QAUd,CAAA,CAAA;EAAU,EAAA,EAAA,MAAA;EAGP,IAAA,EAAA,MAAK;EAAA,IAAA,EATd,aASc;OACY,EARzB,MAQyB;YAAf,EAPL,QAOK;MAA2C,CAAA,MAAA,EAAA,MAAA,CAAA,EAAA;YAAf,EAJjC,UAIiC;;AAC1B,UAFJ,KAEI,CAAA,iBADF,MACE,CAAA,MAAA,EADa,SACb,CAAA,GAD0B,MAC1B,CAAA,MAAA,EADyC,SACzC,CAAA,EAAA,mBAAA,MAAA,CAAA,MAAA,EAAe,WAAf,CAAA,GAA8B,MAA9B,CAAA,MAAA,EAA6C,WAA7C,CAAA,CAAA,CAAA;MAA6C,EAAA,MAAA;SAAf,EAAA,MAAA;SAKxC,EAAA,QAAA;WACE,EAAA,UAAA;aACE,EAAA,UAAA,EAAA;SACJ,EAAA,KAAA,EAAA;;;;iBAQoB,EAAA,CAAA,IAAA,EAAA,MAAA,EAAA,GAHM,SAGN,GAAA,SAAA;aAAhB,EAAA,GAAA,GAFM,SAEN;EAAK,KAAA,EAAA,GAAA,GAAL,KAAK,CAAC,QAAD,EAAW,UAAX,CAAA;AACnB;AAMS,KAJL,kBAAA,GAMe;EAAA,IAAA,EAAA,KAAA;WAAqB,EAAA,KAAA;QACpC,EAAA,MAAA;IAHD,MAGqB,CAAA,WAAA,MAAA,GAAA,EAAA,MAAA,CAAA;KADpB,eACyC,CAAA,cAAA,MADL,OACK,CAAA,GAAA,CAAzC,KAAyC,SAAA,MAArB,kBAAqB,GAAA,kBAAA,CAAmB,KAAnB,CAAA,GAAA,KAAA,CAAA,GAAA,CAAA,GAAA,GACnC,OADmC,CAC3B,KAD2B,CAAA,CAAA;KAGzC,YAAA,GAH4D,WAAA,MAAA,GAAA;AACtD,KAIC,OAAA,GAJD;QAAQ,EAAA,MAAA;EAAK,MAAA,EAAA,MAAA;EAEnB,OAAA,EAAA,MAAY;EAEL,OAAA,EAAA,MAAO;EAAA,IAAA,EAAA,OAAA;MAUT,EAAA,OAAA;;;;EAGA,MAAA,EAHA,UAGA;EAEG,IAAA,EAJL,IAIW;EAAA,SAAA,EAHN,IAGM;IAFf,MAEoC,CAAA,WAAA,MAAA,GAAA,EAAA,MAAA,CAAA;AAChC,cADK,MACL,CAAA,cAAA,MADgC,OAChC,EAAA,MAAA,OAAA,EAAA,OAAA,OAAA,CAAA,CAAA;MAOO,EAPP,KAOO;MAAQ,EAAA,MAAA;SAEU,EAAA,MAAA;YAAhB,EAAA,OAAA;UAGR,EAAA,OAAA;aAEW,EAAA,OAAA;SAIoC,CAAA,EAAA;IAIlD,KAAA,EAfS,OAeT,CAfiB,KAejB,CAAA;MACA;IAAyB,OAAA,EAdd,eAcc,CAdE,KAcF,CAAA;;OAAa,EAXnC,QAWmC;aACtC,CAAA,IAAA,EAVc,KAUd;UAAyB,CAAA,kBAAA,OAAA,GAAA,IAAA,CAAA,CAAA,QAAA,CAAA,EANyB,SAMzB,CAAA,EAHZ,MAGY,CAFzB,KAEyB,EADzB,SACyB,SAAA,IAAA,GADA,GACA,GAAA,IAAA,GADa,OACb,CADqB,GACrB,EAAA,IAAA,CAAA,EAAzB,SAAyB,SAAA,IAAA,GAAA,IAAA,GAAA,IAAA,GAAc,OAAd,CAAsB,IAAtB,EAAA,IAAA,CAAA,CAAA;;;;YAOE,CAAA,EAAA,EAAhB,eAAgB,CAAA,KAAA,CAAA,CAAA,EAAS,MAAT,CAAgB,KAAhB,EAAuB,GAAvB,GAAA,IAAA,EAAmC,IAAnC,CAAA;;;;;;WAUd,CAAA,KAAA,EAAA,OAAA,CAAQ,KAAR,CAAA,CAAA,EAAiB,MAAjB,CAAwB,KAAxB,EAA+B,GAA/B,GAAA,IAAA,EAA2C,IAA3C,CAAA;OAAQ,CAAA,CAAA,EAKpB,MALoB,CAKpB,KALoB,EAAA,OAAA,EAAA,OAAA,CAAA;yBAAgB,CAAA,CAAA,EAAA,MAAA;;;;sBAKpC,CAAA,CAAA,EAmBmB,OAnBnB,CAmB2B,KAnB3B,CAAA,GAAA,SAAA;MAAA,GAAA,CAAA,CAAA,EAqCM,GArCN;MAmBmB,IAAA,CAAA,CAAA,EAqBZ,IArBY;;AAkBb,cAQA,QARA,CAAA,cASG,YATH,GASkB,YATlB,EAAA,MAAA,OAAA,EAAA,OAAA,OAAA,CAAA,SAYH,MAZG,CAYI,KAZJ,EAYW,GAZX,EAYgB,IAZhB,CAAA,CAAA;MAGC,OAAA;EAAI,KAAA,CAAA,CAAA,EAYX,QAZW,CAYX,KAZW,EAAA,OAAA,EAAA,OAAA,CAAA;EAKL,UAAA,CAAQ,EAAA,EAmBK,eAnBL,CAmBqB,KAnBrB,CAAA,CAAA,EAoBc,QApBd,CAoBuB,KApBvB,EAoB8B,GApB9B,GAAA,IAAA,EAoB0C,IApB1C,CAAA;EAAA,SAAA,CAAA,KAAA,EAuBO,OAvBP,CAuBe,KAvBf,CAAA,CAAA,EAwBgB,QAxBhB,CAwByB,KAxBzB,EAwBgC,GAxBhC,GAAA,IAAA,EAwB4C,IAxB5C,CAAA;;AACU,iBA2Bf,MA3Be,CAAA,cAAA,MA2BY,OA3BZ,CAAA,CAAA,IAAA,EA4BvB,KA5BuB,CAAA,EA6B5B,MA7B4B,CA6BrB,KA7BqB,EA6Bd,OA7Bc,CA6BN,KA7BM,CAAA,EA6BE,OA7BF,CA6BU,KA7BV,CAAA,CAAA;;;;;AAMxB,iBA+BS,eA/BT,CAAA,cAAA,MA+B6C,OA/B7C,GAAA,aAAA,CAAA,CAAA,IAAA,CAAA,EAgCE,KAhCF,CAAA,EAiCJ,MAjCI,CAiCG,KAjCH,EAiCU,OAjCV,CAiCkB,KAjClB,CAAA,EAiC0B,OAjC1B,CAiCkC,KAjClC,CAAA,CAAA;AAYmC,iBA4B1B,QAAA,CAAA,CA5B0B,EA4Bd,QA5Bc,CAAA,aAAA,EAAA,MAAA,EAAA,MAAA,CAAA;KAkCrC,YAAA,GAlCqB,KAAA;AACkB,cAmC/B,YAnC+B,CAAA,iBAoCzB,MApCyB,CAAA,MAAA,EAoCV,SApCU,CAAA,GAoCG,MApCH,CAAA,MAAA,EAoCkB,SApClB,CAAA,EAAA,mBAqCvB,MArCuB,CAAA,MAAA,EAqCR,WArCQ,CAAA,GAqCO,MArCP,CAAA,MAAA,EAqCsB,WArCtB,CAAA,CAAA,CAAA;UAAO;aAAY,CAAA,IAAA,EAAA,MAAA;;;;WAIjB,CAAA,oBAAA,MAAA,EAAA,gBAqDU,SArDV,CAAA,CAAA,OAAA,EAsDjC,WAtDiC,EAAA,GAAA,EAuDrC,OAvDqC,CAAA,EAwDzC,YAxDyC,CAwD5B,QAxD4B,GAwDjB,MAxDiB,CAwDV,WAxDU,EAwDG,OAxDH,CAAA,EAwDa,UAxDb,CAAA;;;;WApBpC,CAAA,oBAAA,MAAA,EAAA,cAAA,MAiFkD,OAjFlD,CAAA,CAAA,OAAA,EAkFG,WAlFH,EAAA,IAAA,EAmFA,KAnFA,CAAA,EAoFL,YApFK,CAqFN,QArFM,GAqFK,MArFL,CAqFY,WArFZ,EAqFyB,MArFzB,CAqFgC,KArFhC,EAqFuC,OArFvC,CAqF+C,KArF/C,CAAA,EAqFuD,OArFvD,CAqF+D,KArF/D,CAAA,CAAA,CAAA,EAsFN,UAtFM,CAAA;EAAM;AAwBhB;;aAA2C,CAAA,oBAAA,MAAA,GAAA,MAiGM,QAjGN,CAAA,CAAA,IAAA,EAAA,MAAA,EAAA,OAAA,EAmG9B,WAnG8B,EAAA,EAAA,QAAA,EAAA;IACnC,MAAA,CAAA,EAAA,OAAA;MAoGH,YAnGK,CAmGQ,QAnGR,EAmGkB,UAnGlB,CAAA;;;;OAA+B,CAAA,CAAA,EA+H9B,KA/H8B,CA+HxB,QA/HwB,EA+Hd,UA/Hc,CAAA;;;AAQzC;EAA+B,UAAA,CAAA,CAAA,EAAA,MAAA;;;;eAEd,CAAA,CAAA,EA4LE,cA5LF,EAAA;;;;;AAAR,iBAoMO,KApMP,CAAA,iBAqMU,MArMV,CAAA,MAAA,EAqMyB,SArMzB,CAAA,GAqMsC,MArMtC,CAAA,MAAA,EAqMqD,SArMrD,CAAA,EAAA,mBAsMY,MAtMZ,CAAA,MAAA,EAsM2B,WAtM3B,CAAA,GAsM0C,MAtM1C,CAAA,MAAA,EAsMyD,WAtMzD,CAAA,CAAA,CAAA,IAAA,EAAA,MAAA,EAAA,QAAA,EAAA,CAAA,OAAA,EA0MI,YA1MJ,CA0MiB,MA1MjB,CAAA,MAAA,EA0MgC,SA1MhC,CAAA,EA0M4C,MA1M5C,CAAA,MAAA,EA0M2D,WA1M3D,CAAA,CAAA,EAAA,GA2MF,YA3ME,CA2MW,QA3MX,EA2MqB,UA3MrB,CAAA,CAAA,EA4MN,KA5MM,CA4MA,QA5MA,EA4MU,UA5MV,CAAA;AAOO,UA2MC,MA3MO,CAAA,gBA2MgB,MA3MJ,CAAA,MAAA,EA2MmB,QA3MnB,CAAA,GA2M+B,MA3M/B,CAAA,MAAA,EA2M8C,QA3M9C,CAAA,CAAA,CAAA;EAM/B;AAEL;;SACkC,EAAA,MAAA;QAAf,EAuMT,OAvMS;;;;;YAC+C,EA2MpD,eA3MoD,EAAA;OAAf,EAAA,GAAA,GA6MpC,MA7MoC,CA6M7B,OA7M6B,CAAA;;AAqBtC,cA2LA,aA3LA,CAAA,gBA2L8B,MA3L9B,CAAA,MAAA,EA2L6C,QA3L7C,CAAA,GA2LyD,MA3LzD,CAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA;UACJ;aACS,CAAA;;;;UAAyC,CAAA,mBAAA,MAAA,EAAA,iBAuMtC,MAvMsC,CAAA,MAAA,EAuMvB,SAvMuB,CAAA,EAAA,mBAwMpC,MAxMoC,CAAA,MAAA,EAwMrB,WAxMqB,CAAA,CAAA,CAAA,OAAA,EA0M9C,UA1M8C,EAAA,QAAA,EAAA,CAAA,OAAA,EA4M5C,YA5M4C,CA4M/B,MA5M+B,CAAA,MAAA,EA4MhB,SA5MgB,CAAA,EA4MJ,MA5MI,CAAA,MAAA,EA4MW,WA5MX,CAAA,CAAA,EAAA,GA6MlD,YA7MkD,CA6MrC,QA7MqC,EA6M3B,UA7M2B,CAAA,CAAA,EA8MtD,aA9MsD,CA8MxC,OA9MwC,GA8M9B,MA9M8B,CA8MvB,UA9MuB,EA8MX,KA9MW,CA8ML,QA9MK,EA8MK,UA9ML,CAAA,CAAA,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;AA4J3D;;;;;;;;;;;;;;;;;cAOO,CAAA,mBAAA,MAAA,GAAA,MAmI+B,OAnI/B,EAAA,6BAAA,MAAA,GAAA,MAoIyC,OApIzC,CAAA,CAAA,SAAA,EAsIQ,UAtIR,EAAA,aAAA,EAAA,MAAA,EAAA,MAAA,EAAA;IACE,OAAA,EAAA,CAAA,MAwIa,OAxIb,CAwIqB,UAxIrB,CAAA,CAAA,SAAA,CAAA,CAAA,EAAA;IAAU,WAAA,EAyIA,oBAzIA;IAAhB,aAAA,EAAA,CAAA,MA0IyB,OA1IzB,CA0IiC,oBA1IjC,CAAA,CAAA,SAAA,CAAA,CAAA,EAAA;EAAK,CAAA,CAAA,EA4IH,aA5IG,CA4IW,OA5IX,CAAA;EAMS;;;OAAuB,CAAA,CAAA,EA0M7B,MA1M6B,CA0MtB,OA1MsB,CAAA;;;;YAU1B,CAAA,CAAA,EAAA,MAAA;;;;AAKd;AAA0B,iBAkOV,MAlOU,CAAA,gBAkOa,MAlOb,CAAA,MAAA,EAkO4B,QAlO5B,CAAA,GAkOwC,MAlOxC,CAAA,MAAA,EAAA,KAAA,CAAA,CAAA,CAAA,QAAA,EAAA,CAAA,OAAA,EAmOJ,aAnOI,CAmOU,MAnOV,CAAA,MAAA,EAAA,KAAA,CAAA,CAAA,EAAA,GAmOqC,aAnOrC,CAmOmD,OAnOnD,CAAA,CAAA,EAoOvB,MApOuB,CAoOhB,OApOgB,CAAA;AAAgC,iBAwO1C,iBAAA,CAxO0C,GAAA,EAwOnB,UAxOmB,CAAA,EAAA;MAAf,EAAA,MAAA;OAA2B,EAAA,MAAA;iBAclC,EAAA,MAAA;mBAAf,EAAA,MAAA,EAAA;SACiB,EAAA,MAAA,EAAA"}