@jishaanyazmi/code-script 1.0.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/parser.js ADDED
@@ -0,0 +1,584 @@
1
+ import { TokenType } from './tokenizer.js';
2
+ function makeParserError(message, file, line, column, suggestion) {
3
+ return { type: 'ParserError', message, file, line, column, suggestion };
4
+ }
5
+ function formatParserError(err) {
6
+ const lines = [`SyntaxError`, `File: ${err.file}`, `Line: ${err.line}`, `Column: ${err.column}`, `Message: ${err.message}`];
7
+ if (err.suggestion)
8
+ lines.push(`Suggestion: ${err.suggestion}`);
9
+ return lines.join('\n');
10
+ }
11
+ // ─── Token Stream ─────────────────────────────────────────────────────────────
12
+ class TokenStream {
13
+ constructor(tokens, file, errors) {
14
+ this.tokens = tokens;
15
+ this.file = file;
16
+ this.errors = errors;
17
+ this.pos = 0;
18
+ }
19
+ peek(offset = 0) { return this.tokens[this.pos + offset] ?? this.tokens[this.tokens.length - 1]; }
20
+ advance() { const t = this.tokens[this.pos]; if (this.pos < this.tokens.length - 1)
21
+ this.pos++; return t; }
22
+ check(type, value) { const t = this.peek(); return t.type === type && (value === undefined || t.value === value); }
23
+ match(type, value) { if (this.check(type, value)) {
24
+ this.advance();
25
+ return true;
26
+ } return false; }
27
+ expect(type, value, suggestion) {
28
+ if (this.check(type, value))
29
+ return this.advance();
30
+ const t = this.peek();
31
+ this.errors.push(makeParserError(`Expected '${value ?? type}' but found '${t.value || t.type}'`, this.file, t.line, t.column, suggestion));
32
+ return t;
33
+ }
34
+ isKeyword(value) { return this.check(TokenType.KEYWORD, value); }
35
+ matchKeyword(value) { return this.match(TokenType.KEYWORD, value); }
36
+ expectKeyword(value, suggestion) { return this.expect(TokenType.KEYWORD, value, suggestion); }
37
+ skipNewlines() { while (this.check(TokenType.NEWLINE))
38
+ this.advance(); }
39
+ isEnd() { return this.peek().type === TokenType.EOF; }
40
+ loc() { const t = this.peek(); return { line: t.line, column: t.column, start: t.start, end: t.end }; }
41
+ locFrom(start) { const prev = this.tokens[this.pos - 1] ?? this.peek(); return { ...start, end: prev.end }; }
42
+ }
43
+ // ─── Expression Parser ────────────────────────────────────────────────────────
44
+ class ExpressionParser {
45
+ constructor(stream) {
46
+ this.stream = stream;
47
+ }
48
+ setBlockParser(parseBlock, parseParamList) {
49
+ this.parseBlock = parseBlock;
50
+ this.parseParamList = parseParamList;
51
+ }
52
+ parse() { return this.parseAssignment(); }
53
+ parseAssignment() {
54
+ const left = this.parseLogical();
55
+ const assignOps = ['=', '+=', '-=', '*=', '/=', '%='];
56
+ if (assignOps.includes(this.stream.peek().value) && this.stream.check(TokenType.OPERATOR)) {
57
+ const loc = this.stream.loc();
58
+ const operator = this.stream.advance().value;
59
+ const right = this.parseAssignment();
60
+ return { kind: 'AssignmentExpression', operator, left, right, loc };
61
+ }
62
+ return left;
63
+ }
64
+ parseLogical() {
65
+ let left = this.parseComparison();
66
+ while (this.stream.check(TokenType.OPERATOR) && (this.stream.peek().value === '&&' || this.stream.peek().value === '||')) {
67
+ const loc = this.stream.loc();
68
+ const operator = this.stream.advance().value;
69
+ left = { kind: 'LogicalExpression', operator, left, right: this.parseComparison(), loc };
70
+ }
71
+ return left;
72
+ }
73
+ parseComparison() {
74
+ let left = this.parseAdditive();
75
+ const cmpOps = ['==', '===', '!=', '!==', '<', '>', '<=', '>='];
76
+ while ((this.stream.check(TokenType.OPERATOR) && cmpOps.includes(this.stream.peek().value)) || this.stream.isKeyword('is')) {
77
+ const loc = this.stream.loc();
78
+ const operator = this.stream.isKeyword('is') ? (this.stream.advance(), 'instanceof') : this.stream.advance().value;
79
+ left = { kind: 'BinaryExpression', operator, left, right: this.parseAdditive(), loc };
80
+ }
81
+ return left;
82
+ }
83
+ parseAdditive() {
84
+ let left = this.parseMultiplicative();
85
+ while (this.stream.check(TokenType.OPERATOR) && (this.stream.peek().value === '+' || this.stream.peek().value === '-')) {
86
+ const loc = this.stream.loc();
87
+ const operator = this.stream.advance().value;
88
+ left = { kind: 'BinaryExpression', operator, left, right: this.parseMultiplicative(), loc };
89
+ }
90
+ return left;
91
+ }
92
+ parseMultiplicative() {
93
+ let left = this.parseUnary();
94
+ while (this.stream.check(TokenType.OPERATOR) && ['*', '/', '%', '**'].includes(this.stream.peek().value)) {
95
+ const loc = this.stream.loc();
96
+ const operator = this.stream.advance().value;
97
+ left = { kind: 'BinaryExpression', operator, left, right: this.parseUnary(), loc };
98
+ }
99
+ return left;
100
+ }
101
+ parseUnary() {
102
+ const loc = this.stream.loc();
103
+ if (this.stream.check(TokenType.OPERATOR) && ['!', '-', '+'].includes(this.stream.peek().value)) {
104
+ const operator = this.stream.advance().value;
105
+ return { kind: 'UnaryExpression', operator, operand: this.parseUnary(), loc };
106
+ }
107
+ if (this.stream.isKeyword('kind')) {
108
+ this.stream.advance();
109
+ return { kind: 'UnaryExpression', operator: 'typeof', operand: this.parseUnary(), loc };
110
+ }
111
+ if (this.stream.isKeyword('remove')) {
112
+ this.stream.advance();
113
+ return { kind: 'UnaryExpression', operator: 'delete', operand: this.parseUnary(), loc };
114
+ }
115
+ if (this.stream.isKeyword('wait')) {
116
+ this.stream.advance();
117
+ return { kind: 'UnaryExpression', operator: 'await', operand: this.parseUnary(), loc };
118
+ }
119
+ return this.parsePostfix();
120
+ }
121
+ parsePostfix() {
122
+ let expr = this.parsePrimary();
123
+ while (true) {
124
+ const loc = this.stream.loc();
125
+ if (this.stream.check(TokenType.SEPARATOR, '.')) {
126
+ this.stream.advance();
127
+ expr = { kind: 'MemberExpression', object: expr, property: this.parseIdentifier(), computed: false, loc };
128
+ }
129
+ else if (this.stream.check(TokenType.SEPARATOR, '[')) {
130
+ this.stream.advance();
131
+ this.stream.skipNewlines();
132
+ const prop = this.parse();
133
+ this.stream.skipNewlines();
134
+ this.stream.expect(TokenType.SEPARATOR, ']');
135
+ expr = { kind: 'MemberExpression', object: expr, property: prop, computed: true, loc };
136
+ }
137
+ else if (this.stream.check(TokenType.SEPARATOR, '(')) {
138
+ this.stream.advance();
139
+ const args = this.parseArgList();
140
+ this.stream.expect(TokenType.SEPARATOR, ')');
141
+ expr = { kind: 'CallExpression', callee: expr, args, loc };
142
+ }
143
+ else if (this.stream.check(TokenType.OPERATOR, '++') || this.stream.check(TokenType.OPERATOR, '--')) {
144
+ const operator = this.stream.advance().value;
145
+ expr = { kind: 'UnaryExpression', operator: `post${operator}`, operand: expr, loc };
146
+ }
147
+ else
148
+ break;
149
+ }
150
+ return expr;
151
+ }
152
+ parsePrimary() {
153
+ const loc = this.stream.loc();
154
+ const t = this.stream.peek();
155
+ if (this.stream.check(TokenType.SEPARATOR, '(')) {
156
+ this.stream.advance();
157
+ this.stream.skipNewlines();
158
+ const expr = this.parse();
159
+ this.stream.skipNewlines();
160
+ this.stream.expect(TokenType.SEPARATOR, ')');
161
+ return expr;
162
+ }
163
+ if (this.stream.check(TokenType.SEPARATOR, '['))
164
+ return this.parseArrayLiteral();
165
+ if (this.stream.check(TokenType.SEPARATOR, '{'))
166
+ return this.parseObjectLiteral();
167
+ if (this.stream.isKeyword('do')) {
168
+ this.stream.advance();
169
+ const params = this.parseParamList();
170
+ const body = this.parseBlock();
171
+ return { kind: 'FunctionExpression', params, body, isAsync: false, loc };
172
+ }
173
+ if (this.stream.isKeyword('later')) {
174
+ this.stream.advance();
175
+ this.stream.expectKeyword('do');
176
+ const params = this.parseParamList();
177
+ const body = this.parseBlock();
178
+ return { kind: 'FunctionExpression', params, body, isAsync: true, loc };
179
+ }
180
+ if (this.stream.isKeyword('create')) {
181
+ this.stream.advance();
182
+ const callee = this.parseIdentifier();
183
+ this.stream.expect(TokenType.SEPARATOR, '(');
184
+ const args = this.parseArgList();
185
+ this.stream.expect(TokenType.SEPARATOR, ')');
186
+ return { kind: 'NewExpression', callee, args, loc };
187
+ }
188
+ if (t.type === TokenType.NUMBER) {
189
+ this.stream.advance();
190
+ return { kind: 'Literal', value: Number(t.value), raw: t.value, loc };
191
+ }
192
+ if (t.type === TokenType.STRING) {
193
+ this.stream.advance();
194
+ return { kind: 'Literal', value: t.value, raw: `"${t.value}"`, loc };
195
+ }
196
+ if (t.type === TokenType.BOOLEAN) {
197
+ this.stream.advance();
198
+ return { kind: 'Literal', value: t.value === 'yes', raw: t.value, loc };
199
+ }
200
+ if (t.type === TokenType.NULL) {
201
+ this.stream.advance();
202
+ return { kind: 'Literal', value: null, raw: 'null', loc };
203
+ }
204
+ if (t.type === TokenType.UNDEFINED) {
205
+ this.stream.advance();
206
+ return { kind: 'Literal', value: undefined, raw: 'undefined', loc };
207
+ }
208
+ if (this.stream.isKeyword('me') || this.stream.isKeyword('parent')) {
209
+ const kw = this.stream.advance();
210
+ return { kind: 'Identifier', name: kw.value === 'me' ? 'this' : 'super', loc };
211
+ }
212
+ if (t.type === TokenType.IDENTIFIER) {
213
+ this.stream.advance();
214
+ return { kind: 'Identifier', name: t.value, loc };
215
+ }
216
+ this.stream.advance();
217
+ return { kind: 'Identifier', name: t.value, loc };
218
+ }
219
+ parseIdentifier() {
220
+ const loc = this.stream.loc();
221
+ const t = this.stream.expect(TokenType.IDENTIFIER);
222
+ return { kind: 'Identifier', name: t.value, loc };
223
+ }
224
+ parseArgList() {
225
+ const args = [];
226
+ this.stream.skipNewlines();
227
+ if (this.stream.check(TokenType.SEPARATOR, ')'))
228
+ return args;
229
+ args.push(this.parse());
230
+ while (this.stream.match(TokenType.SEPARATOR, ',')) {
231
+ this.stream.skipNewlines();
232
+ if (this.stream.check(TokenType.SEPARATOR, ')'))
233
+ break;
234
+ args.push(this.parse());
235
+ }
236
+ return args;
237
+ }
238
+ parseArrayLiteral() {
239
+ const loc = this.stream.loc();
240
+ this.stream.advance();
241
+ const elements = [];
242
+ this.stream.skipNewlines();
243
+ while (!this.stream.check(TokenType.SEPARATOR, ']') && !this.stream.isEnd()) {
244
+ elements.push(this.parse());
245
+ this.stream.skipNewlines();
246
+ this.stream.match(TokenType.SEPARATOR, ',');
247
+ this.stream.skipNewlines();
248
+ }
249
+ this.stream.expect(TokenType.SEPARATOR, ']');
250
+ return { kind: 'ArrayExpression', elements, loc };
251
+ }
252
+ parseObjectLiteral() {
253
+ const loc = this.stream.loc();
254
+ this.stream.advance();
255
+ const properties = [];
256
+ this.stream.skipNewlines();
257
+ while (!this.stream.check(TokenType.SEPARATOR, '}') && !this.stream.isEnd()) {
258
+ const propLoc = this.stream.loc();
259
+ const keyToken = this.stream.advance();
260
+ const key = { kind: 'Identifier', name: keyToken.value, loc: propLoc };
261
+ this.stream.expect(TokenType.SEPARATOR, ':');
262
+ this.stream.skipNewlines();
263
+ const value = this.parse();
264
+ properties.push({ kind: 'ObjectProperty', key, value, loc: propLoc });
265
+ this.stream.skipNewlines();
266
+ this.stream.match(TokenType.SEPARATOR, ',');
267
+ this.stream.skipNewlines();
268
+ }
269
+ this.stream.expect(TokenType.SEPARATOR, '}');
270
+ return { kind: 'ObjectExpression', properties, loc };
271
+ }
272
+ }
273
+ // ─── Statement Parser ─────────────────────────────────────────────────────────
274
+ class StatementParser {
275
+ constructor(stream) {
276
+ this.stream = stream;
277
+ this.expr = new ExpressionParser(stream);
278
+ this.expr.setBlockParser(() => this.parseBlock(), () => this.parseParamList());
279
+ }
280
+ parseStatement() {
281
+ this.stream.skipNewlines();
282
+ const t = this.stream.peek();
283
+ if (t.type === TokenType.KEYWORD) {
284
+ switch (t.value) {
285
+ case 'make':
286
+ case 'fixed':
287
+ case 'keep': return this.parseVarDecl();
288
+ case 'later': return this.parseAsyncFunc();
289
+ case 'do': return this.parseFuncDecl();
290
+ case 'give': return this.parseReturn();
291
+ case 'check': return this.parseIf();
292
+ case 'pick': return this.parseSwitch();
293
+ case 'repeat': return this.parseRepeat();
294
+ case 'until': return this.parseUntil();
295
+ case 'stop': return { kind: 'BreakStatement', loc: (this.stream.advance(), this.stream.loc()) };
296
+ case 'skip': return { kind: 'ContinueStatement', loc: (this.stream.advance(), this.stream.loc()) };
297
+ case 'type': return this.parseClass();
298
+ case 'grab': return this.parseImport();
299
+ case 'share': return this.parseExport();
300
+ case 'attempt': return this.parseTry();
301
+ case 'panic': return this.parseThrow();
302
+ }
303
+ }
304
+ return this.parseExprStmt();
305
+ }
306
+ parseBlock() {
307
+ const loc = this.stream.loc();
308
+ this.stream.expect(TokenType.SEPARATOR, '{');
309
+ const body = [];
310
+ this.stream.skipNewlines();
311
+ while (!this.stream.check(TokenType.SEPARATOR, '}') && !this.stream.isEnd()) {
312
+ body.push(this.parseStatement());
313
+ this.stream.skipNewlines();
314
+ }
315
+ this.stream.expect(TokenType.SEPARATOR, '}');
316
+ return { kind: 'BlockStatement', body, loc: this.stream.locFrom(loc) };
317
+ }
318
+ parseVarDecl() {
319
+ const loc = this.stream.loc();
320
+ const keyword = this.stream.advance().value;
321
+ const name = this.expr.parseIdentifier();
322
+ let value = null;
323
+ if (this.stream.match(TokenType.OPERATOR, '=')) {
324
+ this.stream.skipNewlines();
325
+ value = this.expr.parse();
326
+ }
327
+ return { kind: 'VariableDeclaration', keyword, name, value, loc: this.stream.locFrom(loc) };
328
+ }
329
+ parseFuncDecl() {
330
+ const loc = this.stream.loc();
331
+ this.stream.advance();
332
+ if (this.stream.check(TokenType.SEPARATOR, '(')) {
333
+ const name = { kind: 'Identifier', name: '', loc };
334
+ return { kind: 'FunctionDeclaration', name, params: this.parseParamList(), body: this.parseBlock(), isAsync: false, loc: this.stream.locFrom(loc) };
335
+ }
336
+ const name = this.expr.parseIdentifier();
337
+ return { kind: 'FunctionDeclaration', name, params: this.parseParamList(), body: this.parseBlock(), isAsync: false, loc: this.stream.locFrom(loc) };
338
+ }
339
+ parseAsyncFunc() {
340
+ const loc = this.stream.loc();
341
+ this.stream.advance();
342
+ this.stream.expectKeyword('do');
343
+ const name = this.expr.parseIdentifier();
344
+ return { kind: 'FunctionDeclaration', name, params: this.parseParamList(), body: this.parseBlock(), isAsync: true, loc: this.stream.locFrom(loc) };
345
+ }
346
+ parseReturn() {
347
+ const loc = this.stream.loc();
348
+ this.stream.advance();
349
+ const isEnd = this.stream.check(TokenType.NEWLINE) || this.stream.check(TokenType.SEPARATOR, '}') || this.stream.isEnd();
350
+ return { kind: 'ReturnStatement', value: isEnd ? null : this.expr.parse(), loc: this.stream.locFrom(loc) };
351
+ }
352
+ parseIf() {
353
+ const loc = this.stream.loc();
354
+ this.stream.advance();
355
+ this.stream.expect(TokenType.SEPARATOR, '(');
356
+ const condition = this.expr.parse();
357
+ this.stream.expect(TokenType.SEPARATOR, ')');
358
+ const consequent = this.parseBlock();
359
+ this.stream.skipNewlines();
360
+ let alternate = null;
361
+ if (this.stream.isKeyword('otherwise')) {
362
+ this.stream.advance();
363
+ this.stream.skipNewlines();
364
+ if (this.stream.isKeyword('check')) {
365
+ const inner = this.parseIf();
366
+ alternate = { kind: 'BlockStatement', body: [inner], loc: inner.loc };
367
+ }
368
+ else {
369
+ alternate = this.parseBlock();
370
+ }
371
+ }
372
+ return { kind: 'IfStatement', condition, consequent, alternate, loc: this.stream.locFrom(loc) };
373
+ }
374
+ parseSwitch() {
375
+ const loc = this.stream.loc();
376
+ this.stream.advance();
377
+ this.stream.expect(TokenType.SEPARATOR, '(');
378
+ const discriminant = this.expr.parse();
379
+ this.stream.expect(TokenType.SEPARATOR, ')');
380
+ this.stream.expect(TokenType.SEPARATOR, '{');
381
+ this.stream.skipNewlines();
382
+ const cases = [];
383
+ let defaultCase = null;
384
+ while (!this.stream.check(TokenType.SEPARATOR, '}') && !this.stream.isEnd()) {
385
+ if (this.stream.isKeyword('when')) {
386
+ const caseLoc = this.stream.loc();
387
+ this.stream.advance();
388
+ cases.push({ kind: 'SwitchCase', test: this.expr.parse(), body: this.parseBlock(), loc: this.stream.locFrom(caseLoc) });
389
+ }
390
+ else if (this.stream.isKeyword('anyway')) {
391
+ this.stream.advance();
392
+ defaultCase = this.parseBlock();
393
+ }
394
+ else {
395
+ this.stream.advance();
396
+ }
397
+ this.stream.skipNewlines();
398
+ }
399
+ this.stream.expect(TokenType.SEPARATOR, '}');
400
+ return { kind: 'SwitchStatement', discriminant, cases, defaultCase, loc: this.stream.locFrom(loc) };
401
+ }
402
+ parseRepeat() {
403
+ const loc = this.stream.loc();
404
+ this.stream.advance();
405
+ this.stream.expect(TokenType.SEPARATOR, '(');
406
+ let init = null;
407
+ if (this.stream.isKeyword('make') || this.stream.isKeyword('fixed'))
408
+ init = this.parseVarDecl();
409
+ else if (!this.stream.check(TokenType.SEPARATOR, ';'))
410
+ init = this.parseExprStmt();
411
+ this.stream.match(TokenType.SEPARATOR, ';');
412
+ const condition = this.stream.check(TokenType.SEPARATOR, ';') ? null : this.expr.parse();
413
+ this.stream.match(TokenType.SEPARATOR, ';');
414
+ const update = this.stream.check(TokenType.SEPARATOR, ')') ? null : this.expr.parse();
415
+ this.stream.expect(TokenType.SEPARATOR, ')');
416
+ return { kind: 'RepeatStatement', init, condition, update, body: this.parseBlock(), loc: this.stream.locFrom(loc) };
417
+ }
418
+ parseUntil() {
419
+ const loc = this.stream.loc();
420
+ this.stream.advance();
421
+ this.stream.expect(TokenType.SEPARATOR, '(');
422
+ const condition = this.expr.parse();
423
+ this.stream.expect(TokenType.SEPARATOR, ')');
424
+ return { kind: 'UntilStatement', condition, body: this.parseBlock(), loc: this.stream.locFrom(loc) };
425
+ }
426
+ parseClass() {
427
+ const loc = this.stream.loc();
428
+ this.stream.advance();
429
+ const name = this.expr.parseIdentifier();
430
+ let superClass = null;
431
+ if (this.stream.isKeyword('from')) {
432
+ this.stream.advance();
433
+ superClass = this.expr.parseIdentifier();
434
+ }
435
+ const bodyLoc = this.stream.loc();
436
+ this.stream.expect(TokenType.SEPARATOR, '{');
437
+ const members = [];
438
+ this.stream.skipNewlines();
439
+ while (!this.stream.check(TokenType.SEPARATOR, '}') && !this.stream.isEnd()) {
440
+ const mLoc = this.stream.loc();
441
+ let isStatic = false;
442
+ let isAsync = false;
443
+ if (this.stream.isKeyword('shared')) {
444
+ this.stream.advance();
445
+ isStatic = true;
446
+ }
447
+ if (this.stream.isKeyword('later')) {
448
+ this.stream.advance();
449
+ isAsync = true;
450
+ }
451
+ if (this.stream.isKeyword('do')) {
452
+ this.stream.advance();
453
+ if (this.stream.check(TokenType.IDENTIFIER, 'constructor')) {
454
+ this.stream.advance();
455
+ members.push({ kind: 'ConstructorDeclaration', params: this.parseParamList(), body: this.parseBlock(), loc: this.stream.locFrom(mLoc) });
456
+ }
457
+ else {
458
+ const mName = this.expr.parseIdentifier();
459
+ members.push({ kind: 'MethodDeclaration', name: mName, params: this.parseParamList(), body: this.parseBlock(), isStatic, isAsync, loc: this.stream.locFrom(mLoc) });
460
+ }
461
+ }
462
+ else {
463
+ this.stream.advance();
464
+ }
465
+ this.stream.skipNewlines();
466
+ }
467
+ this.stream.expect(TokenType.SEPARATOR, '}');
468
+ const body = { kind: 'ClassBody', members, loc: this.stream.locFrom(bodyLoc) };
469
+ return { kind: 'ClassDeclaration', name, superClass, body, loc: this.stream.locFrom(loc) };
470
+ }
471
+ parseImport() {
472
+ const loc = this.stream.loc();
473
+ this.stream.advance();
474
+ const specifiers = [];
475
+ if (this.stream.check(TokenType.SEPARATOR, '{')) {
476
+ this.stream.advance();
477
+ while (!this.stream.check(TokenType.SEPARATOR, '}') && !this.stream.isEnd()) {
478
+ specifiers.push(this.expr.parseIdentifier());
479
+ this.stream.match(TokenType.SEPARATOR, ',');
480
+ }
481
+ this.stream.expect(TokenType.SEPARATOR, '}');
482
+ this.stream.expectKeyword('from');
483
+ }
484
+ const sourceToken = this.stream.expect(TokenType.STRING);
485
+ return { kind: 'ImportDeclaration', specifiers, source: sourceToken.value, loc: this.stream.locFrom(loc) };
486
+ }
487
+ parseExport() {
488
+ const loc = this.stream.loc();
489
+ this.stream.advance();
490
+ const specifiers = [];
491
+ specifiers.push(this.expr.parseIdentifier());
492
+ while (this.stream.match(TokenType.SEPARATOR, ','))
493
+ specifiers.push(this.expr.parseIdentifier());
494
+ return { kind: 'ExportDeclaration', specifiers, loc: this.stream.locFrom(loc) };
495
+ }
496
+ parseTry() {
497
+ const loc = this.stream.loc();
498
+ this.stream.advance();
499
+ const body = this.parseBlock();
500
+ this.stream.skipNewlines();
501
+ let handler = null;
502
+ if (this.stream.isKeyword('oops')) {
503
+ const cLoc = this.stream.loc();
504
+ this.stream.advance();
505
+ this.stream.expect(TokenType.SEPARATOR, '(');
506
+ const param = this.expr.parseIdentifier();
507
+ this.stream.expect(TokenType.SEPARATOR, ')');
508
+ handler = { kind: 'CatchClause', param, body: this.parseBlock(), loc: this.stream.locFrom(cLoc) };
509
+ }
510
+ this.stream.skipNewlines();
511
+ let finalizer = null;
512
+ if (this.stream.isKeyword('done')) {
513
+ this.stream.advance();
514
+ finalizer = this.parseBlock();
515
+ }
516
+ return { kind: 'TryStatement', body, handler, finalizer, loc: this.stream.locFrom(loc) };
517
+ }
518
+ parseThrow() {
519
+ const loc = this.stream.loc();
520
+ this.stream.advance();
521
+ return { kind: 'ThrowStatement', value: this.expr.parse(), loc: this.stream.locFrom(loc) };
522
+ }
523
+ parseExprStmt() {
524
+ const loc = this.stream.loc();
525
+ const expression = this.expr.parse();
526
+ this.stream.match(TokenType.SEPARATOR, ';');
527
+ return { kind: 'ExpressionStatement', expression, loc: this.stream.locFrom(loc) };
528
+ }
529
+ parseParamList() {
530
+ this.stream.expect(TokenType.SEPARATOR, '(');
531
+ const params = [];
532
+ if (this.stream.check(TokenType.SEPARATOR, ')')) {
533
+ this.stream.advance();
534
+ return params;
535
+ }
536
+ params.push(this.parseParam());
537
+ while (this.stream.match(TokenType.SEPARATOR, ',')) {
538
+ if (this.stream.check(TokenType.SEPARATOR, ')'))
539
+ break;
540
+ params.push(this.parseParam());
541
+ }
542
+ this.stream.expect(TokenType.SEPARATOR, ')');
543
+ return params;
544
+ }
545
+ parseParam() {
546
+ const loc = this.stream.loc();
547
+ if (this.stream.check(TokenType.OPERATOR) && this.stream.peek().value === '...') {
548
+ this.stream.advance();
549
+ const t = this.stream.expect(TokenType.IDENTIFIER);
550
+ return { kind: 'Identifier', name: `...${t.value}`, loc };
551
+ }
552
+ const t = this.stream.expect(TokenType.IDENTIFIER);
553
+ if (this.stream.match(TokenType.OPERATOR, '=')) {
554
+ const defaultVal = this.expr.parse();
555
+ const defaultStr = defaultVal.kind === 'Literal'
556
+ ? (typeof defaultVal.value === 'string' ? `"${defaultVal.value}"` : String(defaultVal.value))
557
+ : defaultVal.kind === 'Identifier' ? defaultVal.name : 'undefined';
558
+ return { kind: 'Identifier', name: `${t.value} = ${defaultStr}`, loc };
559
+ }
560
+ return { kind: 'Identifier', name: t.value, loc };
561
+ }
562
+ }
563
+ export class Parser {
564
+ constructor(tokens, file = 'unknown') {
565
+ this.file = file;
566
+ this.errors = [];
567
+ this.stream = new TokenStream(tokens, this.file, this.errors);
568
+ this.stmtParser = new StatementParser(this.stream);
569
+ }
570
+ parse() {
571
+ const loc = this.stream.loc();
572
+ const body = [];
573
+ this.stream.skipNewlines();
574
+ while (!this.stream.isEnd()) {
575
+ body.push(this.stmtParser.parseStatement());
576
+ this.stream.skipNewlines();
577
+ }
578
+ if (this.errors.length > 0)
579
+ for (const err of this.errors)
580
+ console.error(formatParserError(err));
581
+ return { ast: { kind: 'Program', body, loc }, errors: this.errors };
582
+ }
583
+ }
584
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAkBjD,SAAS,eAAe,CAAC,OAAe,EAAE,IAAY,EAAE,IAAY,EAAE,MAAc,EAAE,UAAmB;IACrG,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAA;AAC3E,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAgB;IACvC,MAAM,KAAK,GAAG,CAAC,aAAa,EAAE,SAAS,GAAG,CAAC,IAAI,EAAE,EAAE,SAAS,GAAG,CAAC,IAAI,EAAE,EAAE,WAAW,GAAG,CAAC,MAAM,EAAE,EAAE,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3H,IAAI,GAAG,CAAC,UAAU;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,GAAG,CAAC,UAAU,EAAE,CAAC,CAAA;IAC/D,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,iFAAiF;AAEjF,MAAM,WAAW;IAEb,YAA6B,MAAe,EAAmB,IAAY,EAAmB,MAAqB;QAAtF,WAAM,GAAN,MAAM,CAAS;QAAmB,SAAI,GAAJ,IAAI,CAAQ;QAAmB,WAAM,GAAN,MAAM,CAAe;QAD3G,QAAG,GAAG,CAAC,CAAA;IACuG,CAAC;IACvH,IAAI,CAAC,MAAM,GAAG,CAAC,IAAW,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA,CAAC,CAAC;IACxG,OAAO,KAAY,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA,CAAC,CAAC;IACjH,KAAK,CAAC,IAAe,EAAE,KAAc,IAAa,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,CAAA,CAAC,CAAC;IAC/I,KAAK,CAAC,IAAe,EAAE,KAAc,IAAa,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;QAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAC,OAAO,IAAI,CAAA;IAAC,CAAC,CAAC,OAAO,KAAK,CAAA,CAAC,CAAC;IAC7H,MAAM,CAAC,IAAe,EAAE,KAAc,EAAE,UAAmB;QACvD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;QAClD,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACrB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,aAAa,KAAK,IAAI,IAAI,gBAAgB,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,GAAG,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;QAC1I,OAAO,CAAC,CAAA;IACZ,CAAC;IACD,SAAS,CAAC,KAAa,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA,CAAC,CAAC;IACjF,YAAY,CAAC,KAAa,IAAa,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,CAAA,CAAC,CAAC;IACpF,aAAa,CAAC,KAAa,EAAE,UAAmB,IAAW,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,EAAE,UAAU,CAAC,CAAA,CAAC,CAAC;IACrH,YAAY,KAAW,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;QAAE,IAAI,CAAC,OAAO,EAAE,CAAA,CAAC,CAAC;IAC7E,KAAK,KAAc,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,IAAI,KAAK,SAAS,CAAC,GAAG,CAAA,CAAC,CAAC;IAC9D,GAAG,KAAqB,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA,CAAC,CAAC;IACtH,OAAO,CAAC,KAAqB,IAAoB,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,GAAG,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAA,CAAC,CAAC;CAC/I;AAED,iFAAiF;AAEjF,MAAM,gBAAgB;IAIlB,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;IAAG,CAAC;IAEpD,cAAc,CAAC,UAAgC,EAAE,cAAkC;QAC/E,IAAI,CAAC,UAAU,GAAG,UAAU,CAAA;QAC5B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAA;IACxC,CAAC;IAED,KAAK,KAAiB,OAAO,IAAI,CAAC,eAAe,EAAE,CAAA,CAAC,CAAC;IAE7C,eAAe;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAChC,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QACrD,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxF,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAA;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;YACpC,OAAO,EAAE,IAAI,EAAE,sBAAsB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAA0B,CAAA;QAC/F,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,YAAY;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;QACjC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,EAAE,CAAC;YACvH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAoB,CAAA;YAC3D,IAAI,GAAG,EAAE,IAAI,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,GAAG,EAAuB,CAAA;QACjH,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,eAAe;QACnB,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAC/B,MAAM,MAAM,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;QAC/D,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YACzH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAA;YAClH,IAAI,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,aAAa,EAAE,EAAE,GAAG,EAAsB,CAAA;QAC7G,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,aAAa;QACjB,IAAI,IAAI,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAA;QACrC,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YACrH,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAA;YAC5C,IAAI,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,mBAAmB,EAAE,EAAE,GAAG,EAAsB,CAAA;QACnH,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,mBAAmB;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAC5B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YACvG,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAA;YAC5C,IAAI,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAsB,CAAA;QAC1G,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,UAAU;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9F,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAA;YAC5C,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAqB,CAAA;QACpG,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAqB,CAAA;QAAC,CAAC;QACxK,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAqB,CAAA;QAAC,CAAC;QAC1K,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAqB,CAAA;QAAC,CAAC;QACvK,OAAO,IAAI,CAAC,YAAY,EAAE,CAAA;IAC9B,CAAC;IAEO,YAAY;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QAC9B,OAAO,IAAI,EAAE,CAAC;YACV,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;gBACrB,IAAI,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,eAAe,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAsB,CAAA;YACjI,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;gBACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;gBACrD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;gBAC5C,IAAI,GAAG,EAAE,IAAI,EAAE,kBAAkB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAsB,CAAA;YAC9G,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;gBACrB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;gBAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;gBAC5C,IAAI,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,EAAoB,CAAA;YAChF,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,CAAC;gBACpG,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,CAAA;gBAC5C,IAAI,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,OAAO,QAAQ,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAqB,CAAA;YAC1G,CAAC;;gBAAM,MAAK;QAChB,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,YAAY;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAC5B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;YACjD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;YACrD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAC5C,OAAO,IAAI,CAAA;QACf,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,iBAAiB,EAAE,CAAA;QAChF,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAC,kBAAkB,EAAE,CAAA;QACjF,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAAC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;YACpE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAwB,CAAA;QAClG,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;YACjC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;YAAC,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;YACpE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAwB,CAAA;QACjG,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YACrB,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,CAAA;YACrC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;YAChC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAC5C,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,EAAmB,CAAA;QACxE,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAa,CAAA;QAAC,CAAC;QAC5I,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,GAAG,EAAE,GAAG,EAAa,CAAA;QAAC,CAAC;QAC3I,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,KAAK,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAa,CAAA;QAAC,CAAC;QAC/I,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAa,CAAA;QAAC,CAAC;QAC9H,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,EAAa,CAAA;QAAC,CAAC;QAC7I,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;YACjE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YAChC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,EAAgB,CAAA;QAChG,CAAC;QACD,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,UAAU,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAgB,CAAA;QAAC,CAAC;QAC/H,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACrB,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAgB,CAAA;IACnE,CAAC;IAED,eAAe;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QAClD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAA;IACrD,CAAC;IAEO,YAAY;QAChB,MAAM,IAAI,GAAiB,EAAE,CAAA;QAC7B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;YAAE,OAAO,IAAI,CAAA;QAC5D,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QACvB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;YACjD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;YAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;gBAAE,MAAK;YACtD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;QAC3B,CAAC;QACD,OAAO,IAAI,CAAA;IACf,CAAC;IAEO,iBAAiB;QACrB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,MAAM,QAAQ,GAAiB,EAAE,CAAA;QACjC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1E,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;YACvD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC3E,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAA;IACrD,CAAC;IAEO,kBAAkB;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,MAAM,UAAU,GAAqB,EAAE,CAAA;QACvC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1E,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YACjC,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YACtC,MAAM,GAAG,GAAe,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAA;YAClF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;YACxE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,EAAE,CAAA;YAC1B,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;YACrE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QACvG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,UAAU,EAAE,GAAG,EAAE,CAAA;IACxD,CAAC;CACJ;AAED,iFAAiF;AAEjF,MAAM,eAAe;IAGjB,YAA6B,MAAmB;QAAnB,WAAM,GAAN,MAAM,CAAa;QAC5C,IAAI,CAAC,IAAI,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAA;QACxC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAA;IAClF,CAAC;IAED,cAAc;QACV,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAA;QAC5B,IAAI,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,OAAO,EAAE,CAAC;YAC/B,QAAQ,CAAC,CAAC,KAAK,EAAE,CAAC;gBACd,KAAK,MAAM,CAAC;gBAAC,KAAK,OAAO,CAAC;gBAAC,KAAK,MAAM,CAAC,CAAC,OAAO,IAAI,CAAC,YAAY,EAAE,CAAA;gBAClE,KAAK,OAAO,CAAC,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAA;gBAC1C,KAAK,IAAI,CAAC,CAAM,OAAO,IAAI,CAAC,aAAa,EAAE,CAAA;gBAC3C,KAAK,MAAM,CAAC,CAAI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;gBACzC,KAAK,OAAO,CAAC,CAAG,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;gBACrC,KAAK,MAAM,CAAC,CAAI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;gBACzC,KAAK,QAAQ,CAAC,CAAE,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;gBACzC,KAAK,OAAO,CAAC,CAAG,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;gBACxC,KAAK,MAAM,CAAC,CAAI,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAoB,CAAA;gBACpH,KAAK,MAAM,CAAC,CAAI,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,EAAuB,CAAA;gBAC1H,KAAK,MAAM,CAAC,CAAI,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;gBACxC,KAAK,MAAM,CAAC,CAAI,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;gBACzC,KAAK,OAAO,CAAC,CAAG,OAAO,IAAI,CAAC,WAAW,EAAE,CAAA;gBACzC,KAAK,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAA;gBACtC,KAAK,OAAO,CAAC,CAAG,OAAO,IAAI,CAAC,UAAU,EAAE,CAAA;YAC5C,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,EAAE,CAAA;IAC/B,CAAC;IAED,UAAU;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAC7B,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,MAAM,IAAI,GAAgB,EAAE,CAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAChE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC1E,CAAC;IAEO,YAAY;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAkC,CAAA;QACxE,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAA;QACxC,IAAI,KAAK,GAAG,IAAI,CAAA;QAChB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QAAC,CAAC;QACzG,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC/F,CAAC;IAEO,aAAa;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAe,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,EAAE,CAAA;YAC9D,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;QACvJ,CAAC;QACD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAA;QACxC,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACvJ,CAAC;IAEO,cAAc;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;QACrF,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAA;QACxC,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACtJ,CAAC;IAEO,WAAW;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;QACxH,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC9G,CAAC;IAEO,OAAO;QACX,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QACpC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,IAAI,SAAS,GAA0B,IAAI,CAAA;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;YACjD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,EAAE,CAAA;gBAC5B,SAAS,GAAG,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,CAAA;YACzE,CAAC;iBAAM,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;YACjC,CAAC;QACL,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACnG,CAAC;IAEO,WAAW;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACtC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,MAAM,KAAK,GAAiB,EAAE,CAAC;QAAC,IAAI,WAAW,GAAG,IAAI,CAAA;QACtD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1E,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBAChC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;gBACxD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;YAC3H,CAAC;iBAAM,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAAC,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;YAC1D,CAAC;iBAAM,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC9B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACvG,CAAC;IAEO,WAAW;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,IAAI,IAAI,GAAqD,IAAI,CAAA;QACjE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;aAC1F,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,aAAa,EAAE,CAAA;QAClF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACxF,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACrF,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACvH,CAAC;IAEO,UAAU;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACnC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACxG,CAAC;IAEO,UAAU;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAA;QACxC,IAAI,UAAU,GAAsB,IAAI,CAAA;QACxC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAA;QAAC,CAAC;QACtG,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QACjC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,MAAM,OAAO,GAAkB,EAAE,CAAA;QACjC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;YAC9B,IAAI,QAAQ,GAAG,KAAK,CAAC;YAAC,IAAI,OAAO,GAAG,KAAK,CAAA;YACzC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAAC,QAAQ,GAAG,IAAI,CAAA;YAAC,CAAC;YAC/E,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAAC,OAAO,GAAG,IAAI,CAAA;YAAC,CAAC;YAC7E,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;gBACrB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC;oBACzD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;oBACrB,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAA4B,CAAC,CAAA;gBACtK,CAAC;qBAAM,CAAC;oBACJ,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAA;oBACzC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,mBAAmB,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAuB,CAAC,CAAA;gBAC5L,CAAC;YACL,CAAC;iBAAM,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YAAC,CAAC;YAChC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC9B,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,MAAM,IAAI,GAAc,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAA;QACzF,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC9F,CAAC;IAEO,WAAW;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,MAAM,UAAU,GAAiB,EAAE,CAAA;QACnC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YACrB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;gBAC1E,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;gBAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAC7F,CAAC;YACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAA;QACnF,CAAC;QACD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAA;QACxD,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC9G,CAAC;IAEO,WAAW;QACf,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,MAAM,UAAU,GAAiB,EAAE,CAAA;QACnC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAA;QAC5C,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;YAAE,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAA;QAChG,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACnF,CAAC;IAEO,QAAQ;QACZ,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,IAAI,OAAO,GAAuB,IAAI,CAAA;QACtC,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YACrD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAC5C,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAA;YACzC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YAC5C,OAAO,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAA;QACrG,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,IAAI,SAAS,GAA0B,IAAI,CAAA;QAC3C,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,SAAS,GAAG,IAAI,CAAC,UAAU,EAAE,CAAA;QAAC,CAAC;QAC3F,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC5F,CAAC;IAEO,UAAU;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;QACpD,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IAC9F,CAAC;IAEO,aAAa;QACjB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;QACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC3C,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAA;IACrF,CAAC;IAED,cAAc;QACV,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,MAAM,MAAM,GAAiB,EAAE,CAAA;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAAC,OAAO,MAAM,CAAA;QAAC,CAAC;QACzF,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QAC9B,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC;gBAAE,MAAK;YACtD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;QAClC,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QAC5C,OAAO,MAAM,CAAA;IACjB,CAAC;IAEO,UAAU;QACd,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,KAAK,KAAK,EAAE,CAAC;YAC9E,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAA;YACrB,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;YAClD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,CAAA;QAC7D,CAAC;QACD,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,CAAA;QAClD,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,GAAG,CAAC,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAA;YACpC,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,KAAK,SAAS;gBAC5C,CAAC,CAAC,CAAC,OAAO,UAAU,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBAC7F,CAAC,CAAC,UAAU,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAA;YACtE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC,KAAK,MAAM,UAAU,EAAE,EAAE,GAAG,EAAE,CAAA;QAC1E,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,CAAA;IACrD,CAAC;CACJ;AAMD,MAAM,OAAO,MAAM;IAKf,YAAY,MAAe,EAAmB,OAAe,SAAS;QAAxB,SAAI,GAAJ,IAAI,CAAoB;QAJrD,WAAM,GAAkB,EAAE,CAAA;QAKvC,IAAI,CAAC,MAAM,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAC7D,IAAI,CAAC,UAAU,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACtD,CAAC;IAED,KAAK;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAA;QAC7B,MAAM,IAAI,GAAgB,EAAE,CAAA;QAC5B,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAC1B,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC;YAAC,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAA;QAAC,CAAC;QACxG,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAA;QAChG,OAAO,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAA;IACvE,CAAC;CACJ"}
@@ -0,0 +1,6 @@
1
+ export declare const VERSION = "1.0.0";
2
+ export declare const FILE_EXTENSION = ".code";
3
+ export declare const OUTPUT_EXTENSION = ".js";
4
+ export type LogLevel = 'info' | 'warn' | 'error' | 'debug';
5
+ export declare function log(level: LogLevel, message: string): void;
6
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,OAAO,UAAU,CAAA;AAC9B,eAAO,MAAM,cAAc,UAAU,CAAA;AACrC,eAAO,MAAM,gBAAgB,QAAQ,CAAA;AAErC,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAA;AAE1D,wBAAgB,GAAG,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAQ1D"}