@abapify/acds 0.4.0 → 0.4.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.
- package/dist/index.d.mts +356 -0
- package/dist/index.d.mts.map +1 -0
- package/dist/index.mjs +1660 -0
- package/dist/index.mjs.map +1 -0
- package/package.json +1 -1
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,356 @@
|
|
|
1
|
+
//#region src/ast.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* AST Node Types for ABAP CDS source
|
|
4
|
+
*
|
|
5
|
+
* Phase 1: TABL, Structure, DRTY, SRVD, DDLX
|
|
6
|
+
* Phase 2: DCLS, DDLA, DRAS, DSFD, DTDC, DTEB, DTSC
|
|
7
|
+
* Phase 3: DDLS (view entity — SQL-like)
|
|
8
|
+
*/
|
|
9
|
+
/** Source location for error reporting */
|
|
10
|
+
interface SourceLocation {
|
|
11
|
+
startOffset: number;
|
|
12
|
+
endOffset: number;
|
|
13
|
+
startLine: number;
|
|
14
|
+
startColumn: number;
|
|
15
|
+
endLine?: number;
|
|
16
|
+
endColumn?: number;
|
|
17
|
+
}
|
|
18
|
+
/** Base AST node */
|
|
19
|
+
interface AstNode {
|
|
20
|
+
loc?: SourceLocation;
|
|
21
|
+
}
|
|
22
|
+
/** Annotation value variants */
|
|
23
|
+
type AnnotationValue = StringLiteral | EnumValue | BooleanLiteral | NumberLiteral | AnnotationArray | AnnotationObject;
|
|
24
|
+
interface StringLiteral extends AstNode {
|
|
25
|
+
kind: 'string';
|
|
26
|
+
value: string;
|
|
27
|
+
}
|
|
28
|
+
interface EnumValue extends AstNode {
|
|
29
|
+
kind: 'enum';
|
|
30
|
+
value: string;
|
|
31
|
+
}
|
|
32
|
+
interface BooleanLiteral extends AstNode {
|
|
33
|
+
kind: 'boolean';
|
|
34
|
+
value: boolean;
|
|
35
|
+
}
|
|
36
|
+
interface NumberLiteral extends AstNode {
|
|
37
|
+
kind: 'number';
|
|
38
|
+
value: number;
|
|
39
|
+
}
|
|
40
|
+
interface AnnotationArray extends AstNode {
|
|
41
|
+
kind: 'array';
|
|
42
|
+
items: AnnotationValue[];
|
|
43
|
+
}
|
|
44
|
+
interface AnnotationObject extends AstNode {
|
|
45
|
+
kind: 'object';
|
|
46
|
+
properties: AnnotationProperty[];
|
|
47
|
+
}
|
|
48
|
+
interface AnnotationProperty extends AstNode {
|
|
49
|
+
key: string;
|
|
50
|
+
value: AnnotationValue;
|
|
51
|
+
}
|
|
52
|
+
/** A single annotation: @DottedKey.path: value */
|
|
53
|
+
interface Annotation extends AstNode {
|
|
54
|
+
key: string;
|
|
55
|
+
value: AnnotationValue;
|
|
56
|
+
}
|
|
57
|
+
/** ABAP built-in type: abap.char(10), abap.dec(11,2) */
|
|
58
|
+
interface BuiltinTypeRef extends AstNode {
|
|
59
|
+
kind: 'builtin';
|
|
60
|
+
name: string;
|
|
61
|
+
length?: number;
|
|
62
|
+
decimals?: number;
|
|
63
|
+
}
|
|
64
|
+
/** Data element / named type reference */
|
|
65
|
+
interface NamedTypeRef extends AstNode {
|
|
66
|
+
kind: 'named';
|
|
67
|
+
name: string;
|
|
68
|
+
}
|
|
69
|
+
type TypeRef = BuiltinTypeRef | NamedTypeRef;
|
|
70
|
+
/** Field in a table/structure/aspect body */
|
|
71
|
+
interface FieldDefinition extends AstNode {
|
|
72
|
+
annotations: Annotation[];
|
|
73
|
+
name: string;
|
|
74
|
+
type: TypeRef;
|
|
75
|
+
isKey: boolean;
|
|
76
|
+
notNull: boolean;
|
|
77
|
+
}
|
|
78
|
+
/** Include directive: include <typename>; or include <typename> with suffix <suffix>; */
|
|
79
|
+
interface IncludeDirective extends AstNode {
|
|
80
|
+
kind: 'include';
|
|
81
|
+
name: string;
|
|
82
|
+
suffix?: string;
|
|
83
|
+
}
|
|
84
|
+
type TableMember = FieldDefinition | IncludeDirective;
|
|
85
|
+
/** define table <name> { ... } */
|
|
86
|
+
interface TableDefinition extends AstNode {
|
|
87
|
+
kind: 'table';
|
|
88
|
+
name: string;
|
|
89
|
+
annotations: Annotation[];
|
|
90
|
+
members: TableMember[];
|
|
91
|
+
}
|
|
92
|
+
/** define structure <name> { ... } */
|
|
93
|
+
interface StructureDefinition extends AstNode {
|
|
94
|
+
kind: 'structure';
|
|
95
|
+
name: string;
|
|
96
|
+
annotations: Annotation[];
|
|
97
|
+
members: TableMember[];
|
|
98
|
+
}
|
|
99
|
+
/** define type <name> : <type>; */
|
|
100
|
+
interface SimpleTypeDefinition extends AstNode {
|
|
101
|
+
kind: 'simpleType';
|
|
102
|
+
name: string;
|
|
103
|
+
annotations: Annotation[];
|
|
104
|
+
type: TypeRef;
|
|
105
|
+
}
|
|
106
|
+
/** define service <name> { expose ...; } */
|
|
107
|
+
interface ServiceDefinition extends AstNode {
|
|
108
|
+
kind: 'service';
|
|
109
|
+
name: string;
|
|
110
|
+
annotations: Annotation[];
|
|
111
|
+
exposes: ExposeStatement[];
|
|
112
|
+
}
|
|
113
|
+
/** expose <entity> as <alias>; */
|
|
114
|
+
interface ExposeStatement extends AstNode {
|
|
115
|
+
entity: string;
|
|
116
|
+
alias?: string;
|
|
117
|
+
}
|
|
118
|
+
/** annotate entity <name> with { ... } */
|
|
119
|
+
interface MetadataExtension extends AstNode {
|
|
120
|
+
kind: 'metadataExtension';
|
|
121
|
+
entity: string;
|
|
122
|
+
annotations: Annotation[];
|
|
123
|
+
elements: AnnotatedElement[];
|
|
124
|
+
}
|
|
125
|
+
/** Element inside a metadata extension: @Anno field; */
|
|
126
|
+
interface AnnotatedElement extends AstNode {
|
|
127
|
+
annotations: Annotation[];
|
|
128
|
+
name: string;
|
|
129
|
+
}
|
|
130
|
+
interface ParameterDefinition extends AstNode {
|
|
131
|
+
annotations: Annotation[];
|
|
132
|
+
name: string;
|
|
133
|
+
type: TypeRef;
|
|
134
|
+
/** default literal value, if any (e.g. `default 'X'`) */
|
|
135
|
+
defaultValue?: AnnotationValue;
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* A parsed but un-interpreted expression from `on` / `where` clauses.
|
|
139
|
+
* Consumers typically only need the raw source span; `tokens` gives the
|
|
140
|
+
* flat token stream for lightweight introspection.
|
|
141
|
+
*/
|
|
142
|
+
interface Expression extends AstNode {
|
|
143
|
+
/** Flattened source image of the expression (concatenated token images, space-separated). */
|
|
144
|
+
source: string;
|
|
145
|
+
/** Token images in order. */
|
|
146
|
+
tokens: string[];
|
|
147
|
+
}
|
|
148
|
+
/** Cardinality, e.g. `[0..1]`, `[1..*]`, `[*]`, `[5]` */
|
|
149
|
+
interface Cardinality extends AstNode {
|
|
150
|
+
min?: number;
|
|
151
|
+
/** `undefined` means unbounded (`*`) when present. */
|
|
152
|
+
max?: number | '*';
|
|
153
|
+
}
|
|
154
|
+
type AssociationKind = 'association' | 'composition';
|
|
155
|
+
interface AssociationDeclaration extends AstNode {
|
|
156
|
+
kind: 'association';
|
|
157
|
+
/** `association` or `composition` */
|
|
158
|
+
associationKind: AssociationKind;
|
|
159
|
+
annotations: Annotation[];
|
|
160
|
+
cardinality?: Cardinality;
|
|
161
|
+
/** `of many` / `of one` modifier (optional). */
|
|
162
|
+
targetMultiplicity?: 'many' | 'one';
|
|
163
|
+
/** Fully qualified target entity (e.g. `I_SalesOrder`). */
|
|
164
|
+
target: string;
|
|
165
|
+
/** `to redirected to <target>` (projection association). */
|
|
166
|
+
redirected?: boolean;
|
|
167
|
+
alias?: string;
|
|
168
|
+
on?: Expression;
|
|
169
|
+
}
|
|
170
|
+
type DataSourceKind = 'select' | 'projection';
|
|
171
|
+
interface DataSource extends AstNode {
|
|
172
|
+
name: string;
|
|
173
|
+
alias?: string;
|
|
174
|
+
}
|
|
175
|
+
/** Single element in a view's projection list. */
|
|
176
|
+
interface ViewElement extends AstNode {
|
|
177
|
+
annotations: Annotation[];
|
|
178
|
+
isKey: boolean;
|
|
179
|
+
isVirtual: boolean;
|
|
180
|
+
isRedirected: boolean;
|
|
181
|
+
/** Either a typed field (abstract/custom entities) or projection expression. */
|
|
182
|
+
expression: string;
|
|
183
|
+
alias?: string;
|
|
184
|
+
/** Present only when element is a typed field (`name : type`). */
|
|
185
|
+
type?: TypeRef;
|
|
186
|
+
notNull?: boolean;
|
|
187
|
+
}
|
|
188
|
+
type ViewMember = ViewElement | AssociationDeclaration;
|
|
189
|
+
interface ViewEntityDefinition extends AstNode {
|
|
190
|
+
kind: 'viewEntity';
|
|
191
|
+
name: string;
|
|
192
|
+
annotations: Annotation[];
|
|
193
|
+
sourceKind: DataSourceKind;
|
|
194
|
+
source: DataSource;
|
|
195
|
+
parameters: ParameterDefinition[];
|
|
196
|
+
members: ViewMember[];
|
|
197
|
+
/** Top-level filter clause (`where ...`). */
|
|
198
|
+
where?: Expression;
|
|
199
|
+
}
|
|
200
|
+
interface AbstractEntityDefinition extends AstNode {
|
|
201
|
+
kind: 'abstractEntity';
|
|
202
|
+
name: string;
|
|
203
|
+
annotations: Annotation[];
|
|
204
|
+
parameters: ParameterDefinition[];
|
|
205
|
+
members: ViewMember[];
|
|
206
|
+
}
|
|
207
|
+
interface CustomEntityDefinition extends AstNode {
|
|
208
|
+
kind: 'customEntity';
|
|
209
|
+
name: string;
|
|
210
|
+
annotations: Annotation[];
|
|
211
|
+
parameters: ParameterDefinition[];
|
|
212
|
+
members: ViewMember[];
|
|
213
|
+
}
|
|
214
|
+
interface GrantStatement extends AstNode {
|
|
215
|
+
/** The granted privilege, always `select` for now. */
|
|
216
|
+
privilege: 'select';
|
|
217
|
+
/** Target entity (qualified). */
|
|
218
|
+
entity: string;
|
|
219
|
+
where?: Expression;
|
|
220
|
+
}
|
|
221
|
+
interface RoleDefinition extends AstNode {
|
|
222
|
+
kind: 'role';
|
|
223
|
+
name: string;
|
|
224
|
+
annotations: Annotation[];
|
|
225
|
+
grants: GrantStatement[];
|
|
226
|
+
}
|
|
227
|
+
type CdsDefinition = TableDefinition | StructureDefinition | SimpleTypeDefinition | ServiceDefinition | MetadataExtension | RoleDefinition | ViewEntityDefinition | AbstractEntityDefinition | CustomEntityDefinition;
|
|
228
|
+
/** Root AST node representing a parsed CDS source file */
|
|
229
|
+
interface CdsSourceFile extends AstNode {
|
|
230
|
+
definitions: CdsDefinition[];
|
|
231
|
+
}
|
|
232
|
+
//#endregion
|
|
233
|
+
//#region src/errors.d.ts
|
|
234
|
+
interface CdsParseError {
|
|
235
|
+
message: string;
|
|
236
|
+
line: number;
|
|
237
|
+
column: number;
|
|
238
|
+
offset: number;
|
|
239
|
+
length: number;
|
|
240
|
+
}
|
|
241
|
+
//#endregion
|
|
242
|
+
//#region src/lib/ast/walker.d.ts
|
|
243
|
+
type WithMembers = ViewEntityDefinition | AbstractEntityDefinition | CustomEntityDefinition;
|
|
244
|
+
type WithFields = TableDefinition | StructureDefinition;
|
|
245
|
+
type WithParameters = ViewEntityDefinition | AbstractEntityDefinition | CustomEntityDefinition;
|
|
246
|
+
/** True when the definition has a `members` array (view-like entities). */
|
|
247
|
+
declare function hasMembers(def: CdsDefinition): def is WithMembers;
|
|
248
|
+
/** True when the definition has a `members` array of typed fields (TABL/structure). */
|
|
249
|
+
declare function hasFields(def: CdsDefinition): def is WithFields;
|
|
250
|
+
declare function hasParameters(def: CdsDefinition): def is WithParameters;
|
|
251
|
+
/** Yield every definition in the file (currently one, future-proofed). */
|
|
252
|
+
declare function walkDefinitions(file: CdsSourceFile): Iterable<CdsDefinition>;
|
|
253
|
+
/**
|
|
254
|
+
* Yield every annotation attached anywhere in the AST (definitions,
|
|
255
|
+
* elements/fields, parameters, associations).
|
|
256
|
+
*/
|
|
257
|
+
declare function walkAnnotations(file: CdsSourceFile): Iterable<Annotation>;
|
|
258
|
+
/** Yield every element (`ViewElement`) across all view-like definitions. */
|
|
259
|
+
declare function walkViewElements(file: CdsSourceFile): Iterable<{
|
|
260
|
+
owner: WithMembers;
|
|
261
|
+
element: ViewElement;
|
|
262
|
+
}>;
|
|
263
|
+
/** Yield every association declaration across view-like definitions. */
|
|
264
|
+
declare function walkAssociations(file: CdsSourceFile): Iterable<{
|
|
265
|
+
owner: WithMembers;
|
|
266
|
+
association: AssociationDeclaration;
|
|
267
|
+
}>;
|
|
268
|
+
/** Yield every field definition from tables and structures. */
|
|
269
|
+
declare function walkFields(file: CdsSourceFile): Iterable<{
|
|
270
|
+
owner: WithFields;
|
|
271
|
+
field: FieldDefinition;
|
|
272
|
+
}>;
|
|
273
|
+
/** Yield every parameter definition across view-like entities. */
|
|
274
|
+
declare function walkParameters(file: CdsSourceFile): Iterable<{
|
|
275
|
+
owner: WithParameters;
|
|
276
|
+
parameter: ParameterDefinition;
|
|
277
|
+
}>;
|
|
278
|
+
declare function isAssociation(m: ViewMember): m is AssociationDeclaration;
|
|
279
|
+
/** Look up an annotation by its dotted key. Returns the first match. */
|
|
280
|
+
declare function findAnnotation(annotations: readonly Annotation[], key: string): Annotation | undefined;
|
|
281
|
+
//#endregion
|
|
282
|
+
//#region src/lib/validate/cardinality.d.ts
|
|
283
|
+
declare function validateCardinality(file: CdsSourceFile): SemanticDiagnostic[];
|
|
284
|
+
//#endregion
|
|
285
|
+
//#region src/lib/validate/elements.d.ts
|
|
286
|
+
declare function validateViewElements(file: CdsSourceFile): SemanticDiagnostic[];
|
|
287
|
+
//#endregion
|
|
288
|
+
//#region src/lib/validate/index.d.ts
|
|
289
|
+
interface SemanticDiagnostic {
|
|
290
|
+
/** Stable machine-readable code. */
|
|
291
|
+
code: string;
|
|
292
|
+
severity: 'error' | 'warning';
|
|
293
|
+
message: string;
|
|
294
|
+
/** Optional location hint (e.g. element name, association alias). */
|
|
295
|
+
target?: string;
|
|
296
|
+
}
|
|
297
|
+
/** Run all validators. */
|
|
298
|
+
declare function validate(file: CdsSourceFile): SemanticDiagnostic[];
|
|
299
|
+
//#endregion
|
|
300
|
+
//#region src/lib/grammar/ddl.d.ts
|
|
301
|
+
declare const ddlCoverage: GrammarCoverage;
|
|
302
|
+
//#endregion
|
|
303
|
+
//#region src/lib/grammar/dcl.d.ts
|
|
304
|
+
declare const dclCoverage: GrammarCoverage;
|
|
305
|
+
//#endregion
|
|
306
|
+
//#region src/lib/grammar/annotations.d.ts
|
|
307
|
+
declare const annotationsCoverage: GrammarCoverage;
|
|
308
|
+
//#endregion
|
|
309
|
+
//#region src/lib/grammar/associations.d.ts
|
|
310
|
+
declare const associationsCoverage: GrammarCoverage;
|
|
311
|
+
//#endregion
|
|
312
|
+
//#region src/lib/grammar/parameters.d.ts
|
|
313
|
+
declare const parametersCoverage: GrammarCoverage;
|
|
314
|
+
//#endregion
|
|
315
|
+
//#region src/lib/grammar/projections.d.ts
|
|
316
|
+
declare const projectionsCoverage: GrammarCoverage;
|
|
317
|
+
//#endregion
|
|
318
|
+
//#region src/lib/grammar/actions.d.ts
|
|
319
|
+
declare const actionsCoverage: GrammarCoverage;
|
|
320
|
+
//#endregion
|
|
321
|
+
//#region src/lib/grammar/index.d.ts
|
|
322
|
+
/**
|
|
323
|
+
* Grammar coverage index.
|
|
324
|
+
*
|
|
325
|
+
* Each topic module in this directory documents a slice of the CDS grammar
|
|
326
|
+
* implemented by the single Chevrotain parser in `../../parser.ts`. They are
|
|
327
|
+
* intentionally documentation-first: Chevrotain's `CstParser` requires all
|
|
328
|
+
* rules to live on one class, so we keep them together and split the docs
|
|
329
|
+
* into focused files. Each module re-exports a `COVERED` array listing the
|
|
330
|
+
* grammar constructs currently implemented — useful for downstream tools
|
|
331
|
+
* (E10/E11/E12) to know what they can rely on.
|
|
332
|
+
*/
|
|
333
|
+
type GrammarCoverage = {
|
|
334
|
+
readonly topic: string;
|
|
335
|
+
readonly constructs: readonly string[];
|
|
336
|
+
};
|
|
337
|
+
declare const GRAMMAR_COVERAGE: readonly GrammarCoverage[];
|
|
338
|
+
//#endregion
|
|
339
|
+
//#region src/index.d.ts
|
|
340
|
+
/** Result of parsing a CDS source file */
|
|
341
|
+
interface ParseResult {
|
|
342
|
+
/** The parsed AST (may be partial if there are errors) */
|
|
343
|
+
ast: CdsSourceFile;
|
|
344
|
+
/** Lexing and parsing errors */
|
|
345
|
+
errors: CdsParseError[];
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* Parse an ABAP CDS source string into a typed AST.
|
|
349
|
+
*
|
|
350
|
+
* @param source - The CDS source code to parse
|
|
351
|
+
* @returns Parse result with AST and any errors
|
|
352
|
+
*/
|
|
353
|
+
declare function parse(source: string): ParseResult;
|
|
354
|
+
//#endregion
|
|
355
|
+
export { type AbstractEntityDefinition, type AnnotatedElement, type Annotation, type AnnotationArray, type AnnotationObject, type AnnotationProperty, type AnnotationValue, type AssociationDeclaration, type AssociationKind, type AstNode, type BooleanLiteral, type BuiltinTypeRef, type Cardinality, type CdsDefinition, type CdsParseError, type CdsSourceFile, type CustomEntityDefinition, type DataSource, type DataSourceKind, type EnumValue, type ExposeStatement, type Expression, type FieldDefinition, GRAMMAR_COVERAGE, type GrammarCoverage, type GrantStatement, type IncludeDirective, type MetadataExtension, type NamedTypeRef, type NumberLiteral, type ParameterDefinition, ParseResult, type RoleDefinition, type SemanticDiagnostic, type ServiceDefinition, type SimpleTypeDefinition, type SourceLocation, type StringLiteral, type StructureDefinition, type TableDefinition, type TableMember, type TypeRef, type ViewElement, type ViewEntityDefinition, type ViewMember, actionsCoverage, annotationsCoverage, associationsCoverage, dclCoverage, ddlCoverage, findAnnotation, hasFields, hasMembers, hasParameters, isAssociation, parametersCoverage, parse, projectionsCoverage, validate, validateCardinality, validateViewElements, walkAnnotations, walkAssociations, walkDefinitions, walkFields, walkParameters, walkViewElements };
|
|
356
|
+
//# sourceMappingURL=index.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.mts","names":[],"sources":["../src/ast.ts","../src/errors.ts","../src/lib/ast/walker.ts","../src/lib/validate/cardinality.ts","../src/lib/validate/elements.ts","../src/lib/validate/index.ts","../src/lib/grammar/ddl.ts","../src/lib/grammar/dcl.ts","../src/lib/grammar/annotations.ts","../src/lib/grammar/associations.ts","../src/lib/grammar/parameters.ts","../src/lib/grammar/projections.ts","../src/lib/grammar/actions.ts","../src/lib/grammar/index.ts","../src/index.ts"],"mappings":";;;;AAaA;;;;;UAAiB,cAAA;EACf,WAAA;EACA,SAAA;EACA,SAAA;EACA,WAAA;EACA,OAAA;EACA,SAAA;AAAA;;UAIe,OAAA;EACf,GAAA,GAAM,cAAA;AAAA;AAQR;AAAA,KAAY,eAAA,GACR,aAAA,GACA,SAAA,GACA,cAAA,GACA,aAAA,GACA,eAAA,GACA,gBAAA;AAAA,UAEa,aAAA,SAAsB,OAAA;EACrC,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,SAAA,SAAkB,OAAA;EACjC,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,cAAA,SAAuB,OAAA;EACtC,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,aAAA,SAAsB,OAAA;EACrC,IAAA;EACA,KAAA;AAAA;AAAA,UAGe,eAAA,SAAwB,OAAA;EACvC,IAAA;EACA,KAAA,EAAO,eAAA;AAAA;AAAA,UAGQ,gBAAA,SAAyB,OAAA;EACxC,IAAA;EACA,UAAA,EAAY,kBAAA;AAAA;AAAA,UAGG,kBAAA,SAA2B,OAAA;EAC1C,GAAA;EACA,KAAA,EAAO,eAAA;AAAA;;UAIQ,UAAA,SAAmB,OAAA;EAClC,GAAA;EACA,KAAA,EAAO,eAAA;AAAA;;UAQQ,cAAA,SAAuB,OAAA;EACtC,IAAA;EACA,IAAA;EACA,MAAA;EACA,QAAA;AAAA;;UAIe,YAAA,SAAqB,OAAA;EACpC,IAAA;EACA,IAAA;AAAA;AAAA,KAGU,OAAA,GAAU,cAAA,GAAiB,YAAA;;UAOtB,eAAA,SAAwB,OAAA;EACvC,WAAA,EAAa,UAAA;EACb,IAAA;EACA,IAAA,EAAM,OAAA;EACN,KAAA;EACA,OAAA;AAAA;;UAIe,gBAAA,SAAyB,OAAA;EACxC,IAAA;EACA,IAAA;EACA,MAAA;AAAA;AAAA,KAGU,WAAA,GAAc,eAAA,GAAkB,gBAAA;;UAO3B,eAAA,SAAwB,OAAA;EACvC,IAAA;EACA,IAAA;EACA,WAAA,EAAa,UAAA;EACb,OAAA,EAAS,WAAA;AAAA;;UAIM,mBAAA,SAA4B,OAAA;EAC3C,IAAA;EACA,IAAA;EACA,WAAA,EAAa,UAAA;EACb,OAAA,EAAS,WAAA;AAAA;;UAIM,oBAAA,SAA6B,OAAA;EAC5C,IAAA;EACA,IAAA;EACA,WAAA,EAAa,UAAA;EACb,IAAA,EAAM,OAAA;AAAA;;UAIS,iBAAA,SAA0B,OAAA;EACzC,IAAA;EACA,IAAA;EACA,WAAA,EAAa,UAAA;EACb,OAAA,EAAS,eAAA;AAAA;;UAIM,eAAA,SAAwB,OAAA;EACvC,MAAA;EACA,KAAA;AAAA;;UAIe,iBAAA,SAA0B,OAAA;EACzC,IAAA;EACA,MAAA;EACA,WAAA,EAAa,UAAA;EACb,QAAA,EAAU,gBAAA;AAAA;;UAIK,gBAAA,SAAyB,OAAA;EACxC,WAAA,EAAa,UAAA;EACb,IAAA;AAAA;AAAA,UAOe,mBAAA,SAA4B,OAAA;EAC3C,WAAA,EAAa,UAAA;EACb,IAAA;EACA,IAAA,EAAM,OAAA;EA1FN;EA4FA,YAAA,GAAe,eAAA;AAAA;AAzFjB;;;;;AAAA,UAqGiB,UAAA,SAAmB,OAAA;EA9FH;EAgG/B,MAAA;EA/Fa;EAiGb,MAAA;AAAA;;UAQe,WAAA,SAAoB,OAAA;EACnC,GAAA;EA1GA;EA4GA,GAAA;AAAA;AAAA,KAGU,eAAA;AAAA,UAEK,sBAAA,SAA+B,OAAA;EAC9C,IAAA;EA9GA;EAgHA,eAAA,EAAiB,eAAA;EACjB,WAAA,EAAa,UAAA;EACb,WAAA,GAAc,WAAA;EA9GkB;EAgHhC,kBAAA;EAhH+C;EAkH/C,MAAA;EAjHA;EAmHA,UAAA;EACA,KAAA;EACA,EAAA,GAAK,UAAA;AAAA;AAAA,KAOK,cAAA;AAAA,UAEK,UAAA,SAAmB,OAAA;EAClC,IAAA;EACA,KAAA;AAAA;AApHF;AAAA,UAwHiB,WAAA,SAAoB,OAAA;EACnC,WAAA,EAAa,UAAA;EACb,KAAA;EACA,SAAA;EACA,YAAA;EA5H8C;EA8H9C,UAAA;EACA,KAAA;EA9HA;EAgIA,IAAA,GAAO,OAAA;EACP,OAAA;AAAA;AAAA,KAGU,UAAA,GAAa,WAAA,GAAc,sBAAA;AAAA,UAEtB,oBAAA,SAA6B,OAAA;EAC5C,IAAA;EACA,IAAA;EACA,WAAA,EAAa,UAAA;EACb,UAAA,EAAY,cAAA;EACZ,MAAA,EAAQ,UAAA;EACR,UAAA,EAAY,mBAAA;EACZ,OAAA,EAAS,UAAA;EAtIkC;EAwI3C,KAAA,GAAQ,UAAA;AAAA;AAAA,UAGO,wBAAA,SAAiC,OAAA;EAChD,IAAA;EACA,IAAA;EACA,WAAA,EAAa,UAAA;EACb,UAAA,EAAY,mBAAA;EACZ,OAAA,EAAS,UAAA;AAAA;AAAA,UAGM,sBAAA,SAA+B,OAAA;EAC9C,IAAA;EACA,IAAA;EACA,WAAA,EAAa,UAAA;EACb,UAAA,EAAY,mBAAA;EACZ,OAAA,EAAS,UAAA;AAAA;AAAA,UAOM,cAAA,SAAuB,OAAA;EAvJa;EAyJnD,SAAA;EAzJ4C;EA2J5C,MAAA;EACA,KAAA,GAAQ,UAAA;AAAA;AAAA,UAGO,cAAA,SAAuB,OAAA;EACtC,IAAA;EACA,IAAA;EACA,WAAA,EAAa,UAAA;EACb,MAAA,EAAQ,cAAA;AAAA;AAAA,KAOE,aAAA,GACR,eAAA,GACA,mBAAA,GACA,oBAAA,GACA,iBAAA,GACA,iBAAA,GACA,cAAA,GACA,oBAAA,GACA,wBAAA,GACA,sBAAA;;UAOa,aAAA,SAAsB,OAAA;EACrC,WAAA,EAAa,aAAA;AAAA;;;UCtUE,aAAA;EACf,OAAA;EACA,IAAA;EACA,MAAA;EACA,MAAA;EACA,MAAA;AAAA;;;KCcU,WAAA,GACR,oBAAA,GACA,wBAAA,GACA,sBAAA;AAAA,KAEQ,UAAA,GAAa,eAAA,GAAkB,mBAAA;AAAA,KAE/B,cAAA,GACR,oBAAA,GACA,wBAAA,GACA,sBAAA;;iBAGY,UAAA,CAAW,GAAA,EAAK,aAAA,GAAgB,GAAA,IAAO,WAAA;;iBASvC,SAAA,CAAU,GAAA,EAAK,aAAA,GAAgB,GAAA,IAAO,UAAA;AAAA,iBAItC,aAAA,CAAc,GAAA,EAAK,aAAA,GAAgB,GAAA,IAAO,cAAA;;iBASzC,eAAA,CAAgB,IAAA,EAAM,aAAA,GAAgB,QAAA,CAAS,aAAA;;AF3BhE;;;iBEmCiB,eAAA,CAAgB,IAAA,EAAM,aAAA,GAAgB,QAAA,CAAS,UAAA;;iBA6B/C,gBAAA,CACf,IAAA,EAAM,aAAA,GACL,QAAA;EAAW,KAAA,EAAO,WAAA;EAAa,OAAA,EAAS,WAAA;AAAA;;iBAW1B,gBAAA,CACf,IAAA,EAAM,aAAA,GACL,QAAA;EAAW,KAAA,EAAO,WAAA;EAAa,WAAA,EAAa,sBAAA;AAAA;;iBAW9B,UAAA,CACf,IAAA,EAAM,aAAA,GACL,QAAA;EAAW,KAAA,EAAO,UAAA;EAAY,KAAA,EAAO,eAAA;AAAA;;iBAWvB,cAAA,CACf,IAAA,EAAM,aAAA,GACL,QAAA;EAAW,KAAA,EAAO,cAAA;EAAgB,SAAA,EAAW,mBAAA;AAAA;AAAA,iBAOhC,aAAA,CAAc,CAAA,EAAG,UAAA,GAAa,CAAA,IAAK,sBAAA;;iBAKnC,cAAA,CACd,WAAA,WAAsB,UAAA,IACtB,GAAA,WACC,UAAA;;;iBC5Ia,mBAAA,CAAoB,IAAA,EAAM,aAAA,GAAgB,kBAAA;;;iBCF1C,oBAAA,CACd,IAAA,EAAM,aAAA,GACL,kBAAA;;;UCAc,kBAAA;ELKf;EKHA,IAAA;EACA,QAAA;EACA,OAAA;ELGS;EKDT,MAAA;AAAA;;iBAIc,QAAA,CAAS,IAAA,EAAM,aAAA,GAAgB,kBAAA;;;cCClC,WAAA,EAAa,eAAA;;;cCJb,WAAA,EAAa,eAAA;;;cCKb,mBAAA,EAAqB,eAAA;;;cCDrB,oBAAA,EAAsB,eAAA;;;cCXtB,kBAAA,EAAoB,eAAA;;;cCQpB,mBAAA,EAAqB,eAAA;;;cCJrB,eAAA,EAAiB,eAAA;;;;;;AZH9B;;;;;;;;KaFY,eAAA;EAAA,SACD,KAAA;EAAA,SACA,UAAA;AAAA;AAAA,cAmBE,gBAAA,WAA2B,eAAA;;;;UCDvB,WAAA;EdKb;EcHF,GAAA,EAAK,aAAA;EdKH;EcHF,MAAA,EAAQ,aAAA;AAAA;;;;;;;iBASM,KAAA,CAAM,MAAA,WAAiB,WAAA"}
|