@memberjunction/core-entities-server 5.16.0 → 5.18.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/custom/MJQueryEntityServer.server.d.ts +12 -91
- package/dist/custom/MJQueryEntityServer.server.d.ts.map +1 -1
- package/dist/custom/MJQueryEntityServer.server.js +69 -1097
- package/dist/custom/MJQueryEntityServer.server.js.map +1 -1
- package/dist/custom/query-extraction/dialect.d.ts +23 -0
- package/dist/custom/query-extraction/dialect.d.ts.map +1 -0
- package/dist/custom/query-extraction/dialect.js +45 -0
- package/dist/custom/query-extraction/dialect.js.map +1 -0
- package/dist/custom/query-extraction/enrich.d.ts +51 -0
- package/dist/custom/query-extraction/enrich.d.ts.map +1 -0
- package/dist/custom/query-extraction/enrich.js +180 -0
- package/dist/custom/query-extraction/enrich.js.map +1 -0
- package/dist/custom/query-extraction/index.d.ts +9 -0
- package/dist/custom/query-extraction/index.d.ts.map +1 -0
- package/dist/custom/query-extraction/index.js +15 -0
- package/dist/custom/query-extraction/index.js.map +1 -0
- package/dist/custom/query-extraction/parse.d.ts +7 -0
- package/dist/custom/query-extraction/parse.d.ts.map +1 -0
- package/dist/custom/query-extraction/parse.js +13 -0
- package/dist/custom/query-extraction/parse.js.map +1 -0
- package/dist/custom/query-extraction/pipeline.d.ts +24 -0
- package/dist/custom/query-extraction/pipeline.d.ts.map +1 -0
- package/dist/custom/query-extraction/pipeline.js +101 -0
- package/dist/custom/query-extraction/pipeline.js.map +1 -0
- package/dist/custom/query-extraction/resolve.d.ts +110 -0
- package/dist/custom/query-extraction/resolve.d.ts.map +1 -0
- package/dist/custom/query-extraction/resolve.js +677 -0
- package/dist/custom/query-extraction/resolve.js.map +1 -0
- package/dist/custom/query-extraction/sync.d.ts +30 -0
- package/dist/custom/query-extraction/sync.d.ts.map +1 -0
- package/dist/custom/query-extraction/sync.js +456 -0
- package/dist/custom/query-extraction/sync.js.map +1 -0
- package/dist/custom/query-extraction/types.d.ts +114 -0
- package/dist/custom/query-extraction/types.d.ts.map +1 -0
- package/dist/custom/query-extraction/types.js +2 -0
- package/dist/custom/query-extraction/types.js.map +1 -0
- package/package.json +19 -19
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Metadata } from "@memberjunction/core";
|
|
2
|
+
import { parseQuerySQL } from "./parse.js";
|
|
3
|
+
import { ResolveCompositionReferences, BuildPassthroughParams, MergePassthroughParams, ExtractEntityMetadataFromSQL, BuildFieldsForSelectStar, EnrichFieldTypesFromCompositions, EnrichFieldTypesFromEntityMetadata, } from "./resolve.js";
|
|
4
|
+
import { RunLLMEnrichment, MergeParametersWithLLM } from "./enrich.js";
|
|
5
|
+
import { SyncParameters, SyncFields, SyncEntities, SyncDependencies, RemoveAllRecords } from "./sync.js";
|
|
6
|
+
/**
|
|
7
|
+
* Runs the full query extraction pipeline:
|
|
8
|
+
* 1. PARSE — single-pass SQL analysis
|
|
9
|
+
* 2. RESOLVE — deterministic composition, parameter, field, and entity resolution
|
|
10
|
+
* 3. ENRICH — LLM fills in descriptions and sample values (best-effort)
|
|
11
|
+
* 4. MERGE — deterministic wins, LLM fills gaps
|
|
12
|
+
* 5. SYNC — parallel database writes
|
|
13
|
+
*
|
|
14
|
+
* Throws on invalid composition references (non-existent, non-Reusable, circular).
|
|
15
|
+
*/
|
|
16
|
+
export async function RunExtractionPipeline(ctx) {
|
|
17
|
+
// ── STAGE 1: PARSE ──
|
|
18
|
+
const parseResult = parseQuerySQL(ctx.sql);
|
|
19
|
+
// ── STAGE 2: RESOLVE ──
|
|
20
|
+
const resolveResult = resolve(ctx, parseResult);
|
|
21
|
+
// ── STAGE 3: ENRICH (best-effort, non-fatal) ──
|
|
22
|
+
const llmResult = await RunLLMEnrichment(ctx.sql, resolveResult.entityMetadata, ctx.contextUser, ctx.metadataProvider);
|
|
23
|
+
// ── STAGE 4: MERGE ──
|
|
24
|
+
const { finalParams, finalFields } = merge(resolveResult, llmResult, parseResult, ctx);
|
|
25
|
+
// ── STAGE 5: SYNC (parallel DB writes) ──
|
|
26
|
+
await sync(ctx, finalParams, finalFields, resolveResult);
|
|
27
|
+
return {
|
|
28
|
+
usesTemplate: resolveResult.allDeterministicParams.length > 0,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Removes all extraction data for a query (parameters, fields, entities, dependencies, SQL records).
|
|
33
|
+
*/
|
|
34
|
+
export async function CleanupQueryData(ctx) {
|
|
35
|
+
await Promise.all([
|
|
36
|
+
RemoveAllRecords(ctx.queryID, 'MJ: Query Parameters', ctx.contextUser, ctx.runViewProvider, ctx.isSaved),
|
|
37
|
+
RemoveAllRecords(ctx.queryID, 'MJ: Query Fields', ctx.contextUser, ctx.runViewProvider, ctx.isSaved),
|
|
38
|
+
RemoveAllRecords(ctx.queryID, 'MJ: Query Entities', ctx.contextUser, ctx.runViewProvider, ctx.isSaved),
|
|
39
|
+
RemoveAllRecords(ctx.queryID, 'MJ: Query Dependencies', ctx.contextUser, ctx.runViewProvider, ctx.isSaved),
|
|
40
|
+
RemoveAllRecords(ctx.queryID, 'MJ: Query SQLs', ctx.contextUser, ctx.runViewProvider, ctx.isSaved),
|
|
41
|
+
]);
|
|
42
|
+
}
|
|
43
|
+
// ─── Internal stage helpers ──────────────────────────────────────────────────
|
|
44
|
+
function resolve(ctx, parseResult) {
|
|
45
|
+
const allQueries = Metadata.Provider.Queries;
|
|
46
|
+
const md = ctx.metadataProvider;
|
|
47
|
+
// Composition references
|
|
48
|
+
const resolvedCompositionRefs = ResolveCompositionReferences(ctx.sql, ctx.queryName, allQueries);
|
|
49
|
+
// Passthrough parameters
|
|
50
|
+
const { params: passthroughParams, contextMap: passthroughContext } = BuildPassthroughParams(resolvedCompositionRefs);
|
|
51
|
+
const allDeterministicParams = MergePassthroughParams(parseResult.deterministicParams, passthroughParams);
|
|
52
|
+
// Entity metadata (for LLM context and entity sync)
|
|
53
|
+
const entityMetadata = ExtractEntityMetadataFromSQL(ctx.sql, parseResult.tableRefs, md);
|
|
54
|
+
// Field resolution: SELECT * expansion or null
|
|
55
|
+
const selectStarFields = BuildFieldsForSelectStar(ctx.sql, parseResult.tableRefs, parseResult.selectColumns, md);
|
|
56
|
+
return {
|
|
57
|
+
resolvedCompositionRefs,
|
|
58
|
+
allDeterministicParams,
|
|
59
|
+
passthroughContext,
|
|
60
|
+
entityMetadata,
|
|
61
|
+
selectStarFields,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
function merge(resolveResult, llmResult, parseResult, ctx) {
|
|
65
|
+
const md = ctx.metadataProvider;
|
|
66
|
+
// Parameters: merge deterministic + LLM
|
|
67
|
+
const finalParams = resolveResult.allDeterministicParams.length > 0
|
|
68
|
+
? MergeParametersWithLLM(resolveResult.allDeterministicParams, llmResult, resolveResult.passthroughContext)
|
|
69
|
+
: null;
|
|
70
|
+
// Fields: use SELECT * expansion or LLM select clause, then enrich
|
|
71
|
+
const rawFields = resolveResult.selectStarFields
|
|
72
|
+
?? (llmResult?.selectClause && Array.isArray(llmResult.selectClause) && llmResult.selectClause.length > 0
|
|
73
|
+
? llmResult.selectClause
|
|
74
|
+
: null);
|
|
75
|
+
const finalFields = rawFields
|
|
76
|
+
? EnrichFieldTypesFromEntityMetadata(EnrichFieldTypesFromCompositions(rawFields, resolveResult.resolvedCompositionRefs, parseResult.selectColumns), parseResult.selectColumns, parseResult.tableRefs, md)
|
|
77
|
+
: null;
|
|
78
|
+
return { finalParams, finalFields };
|
|
79
|
+
}
|
|
80
|
+
async function sync(ctx, finalParams, finalFields, resolveResult) {
|
|
81
|
+
const syncPromises = [];
|
|
82
|
+
// Parameters
|
|
83
|
+
if (finalParams) {
|
|
84
|
+
syncPromises.push(SyncParameters(ctx.queryID, finalParams, ctx.contextUser, ctx.metadataProvider, ctx.runViewProvider, ctx.isSaved));
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
syncPromises.push(RemoveAllRecords(ctx.queryID, 'MJ: Query Parameters', ctx.contextUser, ctx.runViewProvider, ctx.isSaved));
|
|
88
|
+
}
|
|
89
|
+
// Fields
|
|
90
|
+
if (finalFields) {
|
|
91
|
+
syncPromises.push(SyncFields(ctx.queryID, finalFields, ctx.contextUser, ctx.metadataProvider, ctx.runViewProvider, ctx.isSaved));
|
|
92
|
+
}
|
|
93
|
+
// Entities
|
|
94
|
+
if (resolveResult.entityMetadata.length > 0) {
|
|
95
|
+
syncPromises.push(SyncEntities(ctx.queryID, resolveResult.entityMetadata, ctx.contextUser, ctx.metadataProvider, ctx.runViewProvider, ctx.isSaved));
|
|
96
|
+
}
|
|
97
|
+
// Dependencies
|
|
98
|
+
syncPromises.push(SyncDependencies(ctx.queryID, resolveResult.resolvedCompositionRefs, ctx.contextUser, ctx.metadataProvider, ctx.runViewProvider, ctx.isSaved));
|
|
99
|
+
await Promise.all(syncPromises);
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=pipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../../src/custom/query-extraction/pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve stage of the query extraction pipeline.
|
|
3
|
+
*
|
|
4
|
+
* Contains all deterministic resolution logic — no LLM calls, no database writes.
|
|
5
|
+
* Every function is stateless: context is passed in as parameters rather than via `this`.
|
|
6
|
+
*/
|
|
7
|
+
import { EntityInfo, IMetadataProvider, QueryDependencyInfo, QueryInfo } from "@memberjunction/core";
|
|
8
|
+
import type { MJParameterInfo, SQLSelectColumn, SQLTableReference } from "@memberjunction/sql-parser";
|
|
9
|
+
import type { EntityMetadataEntry, ExtractedField, PassthroughParamContext, ResolvedCompositionReference } from "./types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Resolves all {{query:"..."}} composition references in SQL to their QueryInfo targets.
|
|
12
|
+
*
|
|
13
|
+
* This is the single entry point for composition resolution. Both dependency syncing
|
|
14
|
+
* and passthrough parameter extraction consume the results.
|
|
15
|
+
*
|
|
16
|
+
* @throws If a referenced query does not exist in the metadata cache
|
|
17
|
+
* @throws If a referenced query is not marked Reusable
|
|
18
|
+
*/
|
|
19
|
+
export declare function ResolveCompositionReferences(sql: string, queryName: string, allQueries: QueryInfo[]): ResolvedCompositionReference[];
|
|
20
|
+
/**
|
|
21
|
+
* Resolves a query by name and optional category path segments from the metadata cache.
|
|
22
|
+
* Tries category-qualified lookup first, then falls back to name-only (if unambiguous).
|
|
23
|
+
*/
|
|
24
|
+
export declare function ResolveQueryByNameAndCategory(queryName: string, categorySegments: string[], allQueries: QueryInfo[]): QueryInfo | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Builds the parameter mapping and extracts passthrough mappings from parsed composition parameters.
|
|
27
|
+
*/
|
|
28
|
+
export declare function BuildParameterMappings(params: Array<{
|
|
29
|
+
Name: string;
|
|
30
|
+
StaticValue: string | null;
|
|
31
|
+
PassThroughName: string | null;
|
|
32
|
+
}>): {
|
|
33
|
+
parameterMapping: Record<string, string> | null;
|
|
34
|
+
passthroughMappings: Array<{
|
|
35
|
+
parentParamName: string;
|
|
36
|
+
depParamName: string;
|
|
37
|
+
}>;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Extracts the SQL alias following a {{query:"..."}} token.
|
|
41
|
+
* Returns null if no alias is found or the text following the token is a SQL keyword.
|
|
42
|
+
*/
|
|
43
|
+
export declare function ExtractAliasFromSQL(sql: string, fullToken: string): string | null;
|
|
44
|
+
/**
|
|
45
|
+
* Extracts passthrough MJParameterInfo entries and PassthroughParamContext from resolved refs.
|
|
46
|
+
* Inherits type, isRequired, defaultValue, description, and sampleValue from the dependency
|
|
47
|
+
* query's parameter metadata when available.
|
|
48
|
+
*/
|
|
49
|
+
export declare function BuildPassthroughParams(resolvedRefs: ResolvedCompositionReference[]): {
|
|
50
|
+
params: MJParameterInfo[];
|
|
51
|
+
contextMap: Map<string, PassthroughParamContext>;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Merges passthrough parameters into the deterministic parameter list,
|
|
55
|
+
* skipping any that are already detected as direct template expressions.
|
|
56
|
+
*/
|
|
57
|
+
export declare function MergePassthroughParams(deterministicParams: MJParameterInfo[], passthroughParams: MJParameterInfo[]): MJParameterInfo[];
|
|
58
|
+
/**
|
|
59
|
+
* Maps a QueryParameterInfo.Type value to the MJParameterInfo type union.
|
|
60
|
+
*/
|
|
61
|
+
export declare function MapQueryParamTypeToParserType(type: 'string' | 'number' | 'date' | 'boolean' | 'array'): MJParameterInfo['type'];
|
|
62
|
+
/**
|
|
63
|
+
* Detects SELECT * and builds the complete field list deterministically
|
|
64
|
+
* from entity metadata and/or composition ref fields.
|
|
65
|
+
* Returns null if the SQL doesn't use SELECT * or if entities can't be resolved.
|
|
66
|
+
*/
|
|
67
|
+
export declare function BuildFieldsForSelectStar(sql: string, tableRefs: SQLTableReference[], selectColumns: SQLSelectColumn[], md: IMetadataProvider): ExtractedField[] | null;
|
|
68
|
+
/**
|
|
69
|
+
* Enriches extracted fields with deterministic SQL types from composed query field metadata.
|
|
70
|
+
*
|
|
71
|
+
* For queries that reference other queries via {{query:"..."}}, resolves field types
|
|
72
|
+
* by matching field names against the dependency query's QueryFieldInfo.
|
|
73
|
+
*
|
|
74
|
+
* Uses the pre-parsed selectColumns for deterministic SELECT clause resolution,
|
|
75
|
+
* which handles direct columns and AS aliases via AST parsing.
|
|
76
|
+
*/
|
|
77
|
+
export declare function EnrichFieldTypesFromCompositions(fields: ExtractedField[], resolvedRefs: ResolvedCompositionReference[], selectColumns: SQLSelectColumn[]): ExtractedField[];
|
|
78
|
+
/**
|
|
79
|
+
* Enriches extracted fields with deterministic SQL types from entity view/table metadata.
|
|
80
|
+
*
|
|
81
|
+
* For queries that directly reference entity views (e.g., `FROM __mj.vwUsers u`),
|
|
82
|
+
* resolves field types by matching field names against the entity's field metadata.
|
|
83
|
+
*
|
|
84
|
+
* Uses the pre-parsed selectColumns for deterministic SELECT clause resolution
|
|
85
|
+
* and tableRefs for entity view resolution.
|
|
86
|
+
*/
|
|
87
|
+
export declare function EnrichFieldTypesFromEntityMetadata(fields: ExtractedField[], selectColumns: SQLSelectColumn[], tableRefs: SQLTableReference[], md: IMetadataProvider): ExtractedField[];
|
|
88
|
+
/**
|
|
89
|
+
* Expands wildcard (*) entries in the extracted fields list.
|
|
90
|
+
* When a field has name="*" or sourceFieldName="*", expands it into
|
|
91
|
+
* individual field entries by looking up the source from metadata.
|
|
92
|
+
*/
|
|
93
|
+
export declare function ExpandWildcardFields(fields: ExtractedField[], md: IMetadataProvider): ExtractedField[];
|
|
94
|
+
/**
|
|
95
|
+
* Extracts entity metadata from the SQL to provide context for parameter type inference.
|
|
96
|
+
* Uses SQLParser for robust SQL parsing with MJ template support.
|
|
97
|
+
*/
|
|
98
|
+
export declare function ExtractEntityMetadataFromSQL(sql: string, tableRefs: SQLTableReference[], md: IMetadataProvider): EntityMetadataEntry[];
|
|
99
|
+
/**
|
|
100
|
+
* Detects circular dependencies by walking the dependency graph.
|
|
101
|
+
* Returns a descriptive error string if a cycle is found, or null if clean.
|
|
102
|
+
*/
|
|
103
|
+
export declare function DetectDependencyCycles(queryID: string, queryName: string, proposedDeps: Array<{
|
|
104
|
+
dependsOnQueryID: string;
|
|
105
|
+
}>, allDependencies: QueryDependencyInfo[], allQueries: QueryInfo[]): string | null;
|
|
106
|
+
/**
|
|
107
|
+
* Finds an entity by name, checking both Name (which may have "MJ: " prefix) and DisplayName.
|
|
108
|
+
*/
|
|
109
|
+
export declare function FindEntityByName(md: IMetadataProvider, name: string): EntityInfo | undefined;
|
|
110
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/custom/query-extraction/resolve.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAY,mBAAmB,EAAkB,SAAS,EAA6B,MAAM,sBAAsB,CAAC;AAI1J,OAAO,KAAK,EAAE,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAEtG,OAAO,KAAK,EACR,mBAAmB,EACnB,cAAc,EACd,uBAAuB,EACvB,4BAA4B,EAC/B,MAAM,SAAS,CAAC;AAOjB;;;;;;;;GAQG;AACH,wBAAgB,4BAA4B,CACxC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,SAAS,EAAE,GACxB,4BAA4B,EAAE,CAyChC;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CACzC,SAAS,EAAE,MAAM,EACjB,gBAAgB,EAAE,MAAM,EAAE,EAC1B,UAAU,EAAE,SAAS,EAAE,GACxB,SAAS,GAAG,SAAS,CAcvB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAClC,MAAM,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,eAAe,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC,GAC5F;IACC,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IAChD,mBAAmB,EAAE,KAAK,CAAC;QAAE,eAAe,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjF,CAsBA;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAmBjF;AAOD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAClC,YAAY,EAAE,4BAA4B,EAAE,GAC7C;IACC,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;CACpD,CAkCA;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,mBAAmB,EAAE,eAAe,EAAE,EACtC,iBAAiB,EAAE,eAAe,EAAE,GACrC,eAAe,EAAE,CAcnB;AAED;;GAEG;AACH,wBAAgB,6BAA6B,CACzC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,GACzD,eAAe,CAAC,MAAM,CAAC,CAGzB;AAOD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACpC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,iBAAiB,EAAE,EAC9B,aAAa,EAAE,eAAe,EAAE,EAChC,EAAE,EAAE,iBAAiB,GACtB,cAAc,EAAE,GAAG,IAAI,CAWzB;AA6FD;;;;;;;;GAQG;AACH,wBAAgB,gCAAgC,CAC5C,MAAM,EAAE,cAAc,EAAE,EACxB,YAAY,EAAE,4BAA4B,EAAE,EAC5C,aAAa,EAAE,eAAe,EAAE,GACjC,cAAc,EAAE,CAmBlB;AAED;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAC9C,MAAM,EAAE,cAAc,EAAE,EACxB,aAAa,EAAE,eAAe,EAAE,EAChC,SAAS,EAAE,iBAAiB,EAAE,EAC9B,EAAE,EAAE,iBAAiB,GACtB,cAAc,EAAE,CAyBlB;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAChC,MAAM,EAAE,cAAc,EAAE,EACxB,EAAE,EAAE,iBAAiB,GACtB,cAAc,EAAE,CAsBlB;AAOD;;;GAGG;AACH,wBAAgB,4BAA4B,CACxC,GAAG,EAAE,MAAM,EACX,SAAS,EAAE,iBAAiB,EAAE,EAC9B,EAAE,EAAE,iBAAiB,GACtB,mBAAmB,EAAE,CA4BvB;AAOD;;;GAGG;AACH,wBAAgB,sBAAsB,CAClC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,KAAK,CAAC;IAAE,gBAAgB,EAAE,MAAM,CAAA;CAAE,CAAC,EACjD,eAAe,EAAE,mBAAmB,EAAE,EACtC,UAAU,EAAE,SAAS,EAAE,GACxB,MAAM,GAAG,IAAI,CAef;AA+VD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAK5F"}
|