@zauso-ai/capstan-db 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client.d.ts +3 -6
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +206 -27
- package/dist/client.js.map +1 -1
- package/dist/crud.d.ts +14 -0
- package/dist/crud.d.ts.map +1 -1
- package/dist/crud.js +49 -39
- package/dist/crud.js.map +1 -1
- package/dist/dialect.d.ts +25 -0
- package/dist/dialect.d.ts.map +1 -0
- package/dist/dialect.js +208 -0
- package/dist/dialect.js.map +1 -0
- package/dist/embedding.d.ts +63 -0
- package/dist/embedding.d.ts.map +1 -0
- package/dist/embedding.js +61 -0
- package/dist/embedding.js.map +1 -0
- package/dist/index.d.ts +12 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/migrate.d.ts +44 -23
- package/dist/migrate.d.ts.map +1 -1
- package/dist/migrate.js +308 -125
- package/dist/migrate.js.map +1 -1
- package/dist/model.d.ts +9 -0
- package/dist/model.d.ts.map +1 -1
- package/dist/model.js +13 -0
- package/dist/model.js.map +1 -1
- package/dist/naming.d.ts +37 -0
- package/dist/naming.d.ts.map +1 -0
- package/dist/naming.js +196 -0
- package/dist/naming.js.map +1 -0
- package/dist/runtime.d.ts +51 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +490 -0
- package/dist/runtime.js.map +1 -0
- package/dist/schema.d.ts +2 -27
- package/dist/schema.d.ts.map +1 -1
- package/dist/schema.js +181 -197
- package/dist/schema.js.map +1 -1
- package/dist/search.d.ts +52 -0
- package/dist/search.d.ts.map +1 -0
- package/dist/search.js +110 -0
- package/dist/search.js.map +1 -0
- package/dist/types.d.ts +4 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/vector-store-memory.d.ts +31 -0
- package/dist/vector-store-memory.d.ts.map +1 -0
- package/dist/vector-store-memory.js +125 -0
- package/dist/vector-store-memory.js.map +1 -0
- package/dist/vector-store-pgvector.d.ts +46 -0
- package/dist/vector-store-pgvector.d.ts.map +1 -0
- package/dist/vector-store-pgvector.js +215 -0
- package/dist/vector-store-pgvector.js.map +1 -0
- package/dist/vector-store-sqlite.d.ts +51 -0
- package/dist/vector-store-sqlite.d.ts.map +1 -0
- package/dist/vector-store-sqlite.js +203 -0
- package/dist/vector-store-sqlite.js.map +1 -0
- package/dist/vector-store.d.ts +79 -0
- package/dist/vector-store.d.ts.map +1 -0
- package/dist/vector-store.js +5 -0
- package/dist/vector-store.js.map +1 -0
- package/dist/write.d.ts +15 -0
- package/dist/write.d.ts.map +1 -0
- package/dist/write.js +156 -0
- package/dist/write.js.map +1 -0
- package/package.json +9 -4
package/dist/naming.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
export function toSnakeCase(str) {
|
|
2
|
+
return str.replace(/[A-Z]/g, (ch) => `_${ch.toLowerCase()}`);
|
|
3
|
+
}
|
|
4
|
+
export function lowerFirst(str) {
|
|
5
|
+
if (str.length === 0)
|
|
6
|
+
return str;
|
|
7
|
+
return str.charAt(0).toLowerCase() + str.slice(1);
|
|
8
|
+
}
|
|
9
|
+
export function pluralizeModelName(name) {
|
|
10
|
+
const lower = lowerFirst(name);
|
|
11
|
+
if (lower.endsWith("y") && !/[aeiou]y$/i.test(lower)) {
|
|
12
|
+
return lower.slice(0, -1) + "ies";
|
|
13
|
+
}
|
|
14
|
+
if (lower.endsWith("s") || lower.endsWith("x") || lower.endsWith("sh") || lower.endsWith("ch") || lower.endsWith("z")) {
|
|
15
|
+
return lower + "es";
|
|
16
|
+
}
|
|
17
|
+
return lower + "s";
|
|
18
|
+
}
|
|
19
|
+
export function tableNameForModel(model) {
|
|
20
|
+
return pluralizeModelName(typeof model === "string" ? model : model.name);
|
|
21
|
+
}
|
|
22
|
+
export function tableVarForModel(model) {
|
|
23
|
+
return tableNameForModel(model);
|
|
24
|
+
}
|
|
25
|
+
export function inferRelationForeignKey(relation) {
|
|
26
|
+
return relation.foreignKey ?? `${lowerFirst(relation.model)}Id`;
|
|
27
|
+
}
|
|
28
|
+
export function inferTargetRelationForeignKey(sourceModel, relation) {
|
|
29
|
+
return relation.foreignKey ?? `${lowerFirst(typeof sourceModel === "string" ? sourceModel : sourceModel.name)}Id`;
|
|
30
|
+
}
|
|
31
|
+
export function resolveTargetRelationForeignKey(sourceModel, relation, modelMap) {
|
|
32
|
+
if (relation.foreignKey) {
|
|
33
|
+
return relation.foreignKey;
|
|
34
|
+
}
|
|
35
|
+
const targetModel = findModelByReference(relation.model, modelMap);
|
|
36
|
+
if (targetModel) {
|
|
37
|
+
for (const [fieldName, field] of Object.entries(targetModel.fields)) {
|
|
38
|
+
if (!field.references)
|
|
39
|
+
continue;
|
|
40
|
+
const target = parseReferenceTarget(field.references);
|
|
41
|
+
if (target.modelName === sourceModel.name) {
|
|
42
|
+
return fieldName;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return inferTargetRelationForeignKey(sourceModel, relation);
|
|
47
|
+
}
|
|
48
|
+
export function autoFieldNames(model) {
|
|
49
|
+
const names = new Set();
|
|
50
|
+
for (const [fieldName, field] of Object.entries(model.fields)) {
|
|
51
|
+
if (field.autoId || field.updatedAt) {
|
|
52
|
+
names.add(fieldName);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
return names;
|
|
56
|
+
}
|
|
57
|
+
export function updatedAtFieldNames(model) {
|
|
58
|
+
const names = [];
|
|
59
|
+
for (const [fieldName, field] of Object.entries(model.fields)) {
|
|
60
|
+
if (field.updatedAt) {
|
|
61
|
+
names.push(fieldName);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return names;
|
|
65
|
+
}
|
|
66
|
+
export function findPrimaryKeyField(model) {
|
|
67
|
+
if ("id" in model.fields)
|
|
68
|
+
return "id";
|
|
69
|
+
for (const [fieldName, field] of Object.entries(model.fields)) {
|
|
70
|
+
if (field.autoId)
|
|
71
|
+
return fieldName;
|
|
72
|
+
}
|
|
73
|
+
const uniqueRequiredFields = Object.entries(model.fields)
|
|
74
|
+
.filter(([, field]) => field.unique)
|
|
75
|
+
.map(([fieldName]) => fieldName);
|
|
76
|
+
if (uniqueRequiredFields.length === 1) {
|
|
77
|
+
return uniqueRequiredFields[0];
|
|
78
|
+
}
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
export function parseReferenceTarget(reference) {
|
|
82
|
+
const [modelName, fieldName] = reference.split(".", 2);
|
|
83
|
+
return fieldName ? { modelName: modelName, fieldName } : { modelName: modelName };
|
|
84
|
+
}
|
|
85
|
+
export function resolveReferenceField(reference, modelMap) {
|
|
86
|
+
const parsed = parseReferenceTarget(reference);
|
|
87
|
+
if (parsed.fieldName) {
|
|
88
|
+
return { modelName: parsed.modelName, fieldName: parsed.fieldName };
|
|
89
|
+
}
|
|
90
|
+
const targetModel = modelMap?.get(parsed.modelName);
|
|
91
|
+
return {
|
|
92
|
+
modelName: parsed.modelName,
|
|
93
|
+
fieldName: targetModel ? (findPrimaryKeyField(targetModel) ?? "id") : "id",
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
export function findModelByReference(reference, modelMap) {
|
|
97
|
+
const direct = modelMap.get(reference);
|
|
98
|
+
if (direct)
|
|
99
|
+
return direct;
|
|
100
|
+
for (const model of modelMap.values()) {
|
|
101
|
+
if (model.name === reference ||
|
|
102
|
+
lowerFirst(model.name) === reference ||
|
|
103
|
+
tableNameForModel(model) === reference ||
|
|
104
|
+
toSnakeCase(tableNameForModel(model)).replace(/^_/, "") === reference ||
|
|
105
|
+
toSnakeCase(model.name).replace(/^_/, "") === reference) {
|
|
106
|
+
return model;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
return null;
|
|
110
|
+
}
|
|
111
|
+
export function resolveManyToManyRelation(sourceModel, relation, modelMap) {
|
|
112
|
+
if (relation.kind !== "manyToMany" || !relation.through) {
|
|
113
|
+
return null;
|
|
114
|
+
}
|
|
115
|
+
const throughModel = findModelByReference(relation.through, modelMap);
|
|
116
|
+
const targetModel = findModelByReference(relation.model, modelMap);
|
|
117
|
+
if (!throughModel || !targetModel) {
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
const sourcePrimaryKey = findPrimaryKeyField(sourceModel) ?? "id";
|
|
121
|
+
const targetPrimaryKey = findPrimaryKeyField(targetModel) ?? "id";
|
|
122
|
+
let sourceForeignKey = null;
|
|
123
|
+
let targetForeignKey = null;
|
|
124
|
+
for (const [fieldName, field] of Object.entries(throughModel.fields)) {
|
|
125
|
+
if (!field.references)
|
|
126
|
+
continue;
|
|
127
|
+
const target = parseReferenceTarget(field.references);
|
|
128
|
+
if (target.modelName === sourceModel.name && sourceForeignKey === null) {
|
|
129
|
+
sourceForeignKey = fieldName;
|
|
130
|
+
}
|
|
131
|
+
if (target.modelName === relation.model && targetForeignKey === null) {
|
|
132
|
+
targetForeignKey = fieldName;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
if (sourceForeignKey === null) {
|
|
136
|
+
const inferred = inferTargetRelationForeignKey(sourceModel, {
|
|
137
|
+
kind: "hasMany",
|
|
138
|
+
model: throughModel.name,
|
|
139
|
+
});
|
|
140
|
+
if (inferred in throughModel.fields) {
|
|
141
|
+
sourceForeignKey = inferred;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
if (targetForeignKey === null) {
|
|
145
|
+
const inferred = inferRelationForeignKey({
|
|
146
|
+
kind: "belongsTo",
|
|
147
|
+
model: relation.model,
|
|
148
|
+
});
|
|
149
|
+
if (inferred in throughModel.fields) {
|
|
150
|
+
targetForeignKey = inferred;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
if (!sourceForeignKey || !targetForeignKey) {
|
|
154
|
+
return null;
|
|
155
|
+
}
|
|
156
|
+
return {
|
|
157
|
+
throughModel,
|
|
158
|
+
sourceForeignKey,
|
|
159
|
+
targetForeignKey,
|
|
160
|
+
sourcePrimaryKey,
|
|
161
|
+
targetPrimaryKey,
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
export function stableFieldSignature(field) {
|
|
165
|
+
return JSON.stringify({
|
|
166
|
+
type: field.type,
|
|
167
|
+
required: field.required ?? false,
|
|
168
|
+
unique: field.unique ?? false,
|
|
169
|
+
default: field.default ?? null,
|
|
170
|
+
min: field.min ?? null,
|
|
171
|
+
max: field.max ?? null,
|
|
172
|
+
enum: field.enum ?? null,
|
|
173
|
+
dimensions: field.dimensions ?? null,
|
|
174
|
+
updatedAt: field.updatedAt ?? false,
|
|
175
|
+
autoId: field.autoId ?? false,
|
|
176
|
+
references: field.references ?? null,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
export function indexSignature(index) {
|
|
180
|
+
return JSON.stringify({
|
|
181
|
+
fields: index.fields,
|
|
182
|
+
unique: index.unique ?? false,
|
|
183
|
+
order: index.order ?? null,
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
export function cloneDefaultValue(value) {
|
|
187
|
+
if (value === null || value === undefined)
|
|
188
|
+
return value;
|
|
189
|
+
if (typeof value !== "object")
|
|
190
|
+
return value;
|
|
191
|
+
if (typeof structuredClone === "function") {
|
|
192
|
+
return structuredClone(value);
|
|
193
|
+
}
|
|
194
|
+
return JSON.parse(JSON.stringify(value));
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=naming.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"naming.js","sourceRoot":"","sources":["../src/naming.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { PrepareWriteOptions } from "./write.js";
|
|
2
|
+
import type { DbProvider, ModelDefinition } from "./types.js";
|
|
3
|
+
type RecordRow = Record<string, unknown>;
|
|
4
|
+
export interface SqlMutationResult {
|
|
5
|
+
affectedRows: number;
|
|
6
|
+
rows?: RecordRow[];
|
|
7
|
+
}
|
|
8
|
+
export interface SqlRuntimeAdapter {
|
|
9
|
+
provider: DbProvider;
|
|
10
|
+
query: (sql: string, params?: unknown[]) => Promise<RecordRow[]>;
|
|
11
|
+
execute: (sql: string, params?: unknown[]) => Promise<SqlMutationResult>;
|
|
12
|
+
transaction: <T>(fn: (adapter: SqlRuntimeAdapter) => Promise<T>) => Promise<T>;
|
|
13
|
+
}
|
|
14
|
+
export interface QueryOrder {
|
|
15
|
+
field: string;
|
|
16
|
+
direction?: "asc" | "desc";
|
|
17
|
+
}
|
|
18
|
+
export interface FindManyOptions {
|
|
19
|
+
where?: Record<string, unknown>;
|
|
20
|
+
orderBy?: QueryOrder | QueryOrder[];
|
|
21
|
+
limit?: number;
|
|
22
|
+
offset?: number;
|
|
23
|
+
with?: string[];
|
|
24
|
+
}
|
|
25
|
+
export interface ModelRepository<M extends ModelDefinition = ModelDefinition> {
|
|
26
|
+
readonly model: M;
|
|
27
|
+
readonly tableName: string;
|
|
28
|
+
readonly primaryKeyField: string | null;
|
|
29
|
+
count: (where?: Record<string, unknown>) => Promise<number>;
|
|
30
|
+
findMany: (options?: FindManyOptions) => Promise<Array<RecordRow>>;
|
|
31
|
+
findById: (id: unknown, options?: Omit<FindManyOptions, "where" | "limit" | "offset">) => Promise<RecordRow | null>;
|
|
32
|
+
create: (input: Record<string, unknown>, options?: PrepareWriteOptions) => Promise<RecordRow>;
|
|
33
|
+
update: (id: unknown, input: Record<string, unknown>, options?: PrepareWriteOptions) => Promise<RecordRow | null>;
|
|
34
|
+
delete: (id: unknown) => Promise<boolean>;
|
|
35
|
+
relate: (id: unknown, relationName: string, options?: Omit<FindManyOptions, "where">) => Promise<unknown>;
|
|
36
|
+
}
|
|
37
|
+
export interface DatabaseRuntime {
|
|
38
|
+
db: unknown;
|
|
39
|
+
provider: DbProvider;
|
|
40
|
+
close: () => void | Promise<void>;
|
|
41
|
+
query: (sql: string, params?: unknown[]) => Promise<RecordRow[]>;
|
|
42
|
+
execute: (sql: string, params?: unknown[]) => Promise<SqlMutationResult>;
|
|
43
|
+
applyMigration: (statements: string[]) => Promise<void>;
|
|
44
|
+
registerModels: (models: ModelDefinition[]) => DatabaseRuntime;
|
|
45
|
+
model: <M extends ModelDefinition>(model: M | string) => ModelRepository<M>;
|
|
46
|
+
transaction: <T>(fn: (database: DatabaseRuntime) => Promise<T>) => Promise<T>;
|
|
47
|
+
readonly models: Record<string, ModelRepository<ModelDefinition>>;
|
|
48
|
+
}
|
|
49
|
+
export declare function createDatabaseRuntime(db: unknown, provider: DbProvider, close: () => void | Promise<void>, adapter: SqlRuntimeAdapter, initialModels?: Iterable<ModelDefinition>): DatabaseRuntime;
|
|
50
|
+
export {};
|
|
51
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAEtD,OAAO,KAAK,EAAE,UAAU,EAAmB,eAAe,EAAsB,MAAM,YAAY,CAAC;AAEnG,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEzC,MAAM,WAAW,iBAAiB;IAChC,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,SAAS,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACjE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzE,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;CAChF;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,UAAU,GAAG,UAAU,EAAE,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,eAAe,CAAC,CAAC,SAAS,eAAe,GAAG,eAAe;IAC1E,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,EAAE,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5D,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,eAAe,KAAK,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,QAAQ,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IACpH,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAC9F,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,EAAE,mBAAmB,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC;IAClH,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC3G;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,QAAQ,EAAE,UAAU,CAAC;IACrB,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClC,KAAK,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IACjE,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACzE,cAAc,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxD,cAAc,EAAE,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,eAAe,CAAC;IAC/D,KAAK,EAAE,CAAC,CAAC,SAAS,eAAe,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,CAAC;IAC5E,WAAW,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,EAAE,eAAe,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9E,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC;CACnE;AA2nBD,wBAAgB,qBAAqB,CACnC,EAAE,EAAE,OAAO,EACX,QAAQ,EAAE,UAAU,EACpB,KAAK,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EACjC,OAAO,EAAE,iBAAiB,EAC1B,aAAa,CAAC,EAAE,QAAQ,CAAC,eAAe,CAAC,GACxC,eAAe,CAEjB"}
|