@smile-digital-health/crl 1.0.0 → 1.1.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.
@@ -1,9 +1,9 @@
1
1
  import { ParserRuleContext } from "antlr4ts/ParserRuleContext";
2
2
  import { AbstractParseTreeVisitor } from "antlr4ts/tree/AbstractParseTreeVisitor";
3
- import { CrlContext, DecisionStatementContext, DecisionBodyContext, WhenBlockContext, BlockBodyContext, ActionStatementContext, RecommendStatementContext, UseStatementContext, TerminologyStatementContext, TerminologyValuesetContext, TerminologySystemCodeContext, ActivityStatementContext, ConceptStatementContext, InferredFromLineContext, InferredBodyContext, InferredFromExpressionContext, InformalOrContext, InformalAndContext, InformalNotContext, AtomContext, WhenWithBodyContext, WhenSingleActionContext, NestedWhenBlockContext, BlockActionContext, BlockStatementContext } from "../grammar/generated/antlr/CRLParser";
3
+ import { CrlContext, DecisionStatementContext, DecisionBodyContext, WhenBlockContext, BlockBodyContext, ActionStatementContext, RecommendStatementContext, UseStatementContext, TerminologyStatementContext, TerminologyValuesetContext, ActivityStatementContext, ConceptStatementContext, InferredFromBodyContext, InferredFromExpressionContext, InformalOrContext, InformalAndContext, InformalNotContext, AtomContext, WhenWithBodyContext, WhenSingleActionContext, NestedWhenBlockContext, BlockActionContext, BlockStatementContext } from "../grammar/generated/antlr/CRLParser";
4
4
  import { CRLParserVisitor } from "../grammar/generated/antlr/CRLParserVisitor";
5
5
  import type { CRLError } from "../types/errors";
6
- import { ASTNode, Decision, DecisionBody, WhenBlock, BlockBody, ActionStatement, RecommendActivity, UseDecision, Terminology, TerminologyValueset, TerminologySystemCode, Activity, Concept, InferredFromDefinition, ConceptReference, InformalAnd, InformalOr, NotExpression, GroupExpression, InferredFromConcept } from "./types";
6
+ import { ASTNode, Decision, DecisionBody, WhenBlock, BlockBody, ActionStatement, RecommendActivity, UseDecision, Terminology, TerminologyValueset, TerminologySystem, TerminologyCode, Activity, ActivityBody, ActivityRequest, ActivityWith, ActivityBecause, Concept, ConceptReference, InformalAnd, InformalOr, NotExpression, GroupExpression, InferredFromConcept } from "./types";
7
7
  import type { CRL } from "./types";
8
8
  type InformalNode = GroupExpression | ConceptReference | InformalAnd | NotExpression | InformalOr;
9
9
  export declare class CRLAstBuilder extends AbstractParseTreeVisitor<ASTNode> implements CRLParserVisitor<ASTNode> {
@@ -26,17 +26,20 @@ export declare class CRLAstBuilder extends AbstractParseTreeVisitor<ASTNode> imp
26
26
  visitUseStatement(ctx: UseStatementContext): UseDecision;
27
27
  visitTerminologyStatement(ctx: TerminologyStatementContext): Terminology;
28
28
  visitTerminologyValueset(ctx: TerminologyValuesetContext): TerminologyValueset;
29
- visitTerminologySystemCode(ctx: TerminologySystemCodeContext): TerminologySystemCode;
30
- private parseWithClause;
31
- private parseRationaleClause;
29
+ visitTerminologySystem(ctx: import("../grammar/generated/antlr/CRLParser").TerminologySystemContext): TerminologySystem;
30
+ visitTerminologyCode(ctx: import("../grammar/generated/antlr/CRLParser").TerminologyCodeContext): TerminologyCode;
32
31
  visitActivityStatement(ctx: ActivityStatementContext): Activity;
32
+ visitActivityBody(ctx: import("../grammar/generated/antlr/CRLParser").ActivityBodyContext): ActivityBody;
33
+ visitActivityRequest(ctx: import("../grammar/generated/antlr/CRLParser").ActivityRequestContext): ActivityRequest;
34
+ visitActivityWith(ctx: import("../grammar/generated/antlr/CRLParser").ActivityWithContext): ActivityWith;
35
+ visitActivityBecause(ctx: import("../grammar/generated/antlr/CRLParser").ActivityBecauseContext): ActivityBecause;
33
36
  private parseConceptTypes;
37
+ private parseMeta;
34
38
  private parseEvidence;
35
39
  private parseConceptDefinition;
36
40
  visitConceptStatement(ctx: ConceptStatementContext): Concept;
37
- visitInferredFromLine(ctx: InferredFromLineContext): InferredFromDefinition;
38
- visitDefinitionConcept(ctx: InferredBodyContext): InferredFromConcept;
39
- visitDefinitionLogic(ctx: InferredBodyContext): GroupExpression | InferredFromConcept;
41
+ visitDefinitionConcept(ctx: InferredFromBodyContext): InferredFromConcept;
42
+ visitDefinitionLogic(ctx: InferredFromBodyContext): GroupExpression | InferredFromConcept;
40
43
  visitInferredFromExpression(ctx: InferredFromExpressionContext): InformalNode;
41
44
  visitInformalOr(ctx: InformalOrContext): InformalOr;
42
45
  visitInformalAnd(ctx: InformalAndContext): InformalAnd | NotExpression | GroupExpression | ConceptReference;
@@ -139,24 +139,34 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
139
139
  }
140
140
  visitTerminologyStatement(ctx) {
141
141
  const name = ctx.terminologyIdentifier().text.slice(1, -1);
142
- let definition;
143
- if (ctx.terminologyValueset()) {
144
- definition = this.visit(ctx.terminologyValueset());
145
- }
146
- else if (ctx.terminologySystemCode()) {
147
- definition = this.visit(ctx.terminologySystemCode());
148
- }
149
- else if (ctx.terminologyUnknown()) {
150
- definition = {
151
- type: "TerminologyUnknown",
152
- value: "",
153
- location: getLocation(ctx),
154
- };
142
+ const body = [];
143
+ const terminologyBody = ctx.terminologyBody();
144
+ if (terminologyBody) {
145
+ for (const line of terminologyBody.terminologyLine()) {
146
+ if (line.terminologyValueset) {
147
+ const valuesetCtx = line.terminologyValueset();
148
+ if (valuesetCtx) {
149
+ body.push(this.visitTerminologyValueset(valuesetCtx));
150
+ }
151
+ }
152
+ if (line.terminologySystemCode) {
153
+ const systemCodeCtx = line.terminologySystemCode();
154
+ if (systemCodeCtx) {
155
+ const systemCtx = systemCodeCtx.terminologySystem();
156
+ if (systemCtx) {
157
+ body.push(this.visitTerminologySystem(systemCtx));
158
+ }
159
+ for (const codeCtx of systemCodeCtx.terminologyCode()) {
160
+ body.push(this.visitTerminologyCode(codeCtx));
161
+ }
162
+ }
163
+ }
164
+ }
155
165
  }
156
166
  return {
157
167
  type: "Terminology",
158
168
  name,
159
- definition: definition,
169
+ body,
160
170
  location: getLocation(ctx),
161
171
  };
162
172
  }
@@ -164,64 +174,87 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
164
174
  const valuesetName = ctx.backtickString().text.slice(1, -1);
165
175
  return { type: "TerminologyValueset", valuesetName, location: getLocation(ctx) };
166
176
  }
167
- visitTerminologySystemCode(ctx) {
168
- let system = "";
169
- let code = "";
170
- if (ctx.backtickString && ctx.backtickString().length === 2) {
171
- const systemNode = ctx.backtickString(0);
172
- const codeNode = ctx.backtickString(1);
173
- if (systemNode?.text)
174
- system = systemNode.text.slice(1, -1);
175
- if (codeNode?.text)
176
- code = codeNode.text.slice(1, -1);
177
- }
178
- return { type: "TerminologySystemCode", system, code, location: getLocation(ctx) };
177
+ visitTerminologySystem(ctx) {
178
+ const system = ctx.backtickString().text.slice(1, -1);
179
+ return { type: "TerminologySystem", system, location: getLocation(ctx) };
179
180
  }
180
- parseWithClause(ctx) {
181
- let terminologyReference;
182
- let activityTypeValue;
183
- if (ctx.WITH()) {
184
- if (ctx.terminologyReference()) {
185
- terminologyReference = ctx.terminologyReference().text.slice(1, -1);
181
+ visitTerminologyCode(ctx) {
182
+ const code = ctx.backtickString().text.slice(1, -1);
183
+ return { type: "TerminologyCode", code, location: getLocation(ctx) };
184
+ }
185
+ visitActivityStatement(ctx) {
186
+ const name = ctx.activityIdentifier().text.slice(1, -1);
187
+ const body = this.visitActivityBody(ctx.activityBody());
188
+ return {
189
+ type: "Activity",
190
+ name,
191
+ body: body,
192
+ location: getLocation(ctx),
193
+ };
194
+ }
195
+ visitActivityBody(ctx) {
196
+ const request = this.visitActivityRequest(ctx.activityRequest());
197
+ let withClause;
198
+ let becauseClause;
199
+ if (ctx.activityWith) {
200
+ const withCtx = ctx.activityWith();
201
+ if (withCtx) {
202
+ withClause = this.visitActivityWith(withCtx);
186
203
  }
187
- else if (ctx.activityTypeValue()) {
188
- const atv = ctx.activityTypeValue();
189
- if (atv?.backtickString) {
190
- const backtickCtx = atv.backtickString();
191
- if (backtickCtx?.text !== undefined) {
192
- activityTypeValue = backtickCtx.text.slice(1, -1);
193
- }
194
- }
204
+ }
205
+ if (ctx.activityBecause) {
206
+ const becauseCtx = ctx.activityBecause();
207
+ if (becauseCtx) {
208
+ becauseClause = this.visitActivityBecause(becauseCtx);
195
209
  }
196
210
  }
197
- return { terminologyReference, activityTypeValue };
211
+ return {
212
+ type: "ActivityBody",
213
+ request: request,
214
+ ...(withClause ? { withClause } : {}),
215
+ ...(becauseClause ? { becauseClause } : {}),
216
+ location: getLocation(ctx),
217
+ };
198
218
  }
199
- parseRationaleClause(ctx) {
200
- if (ctx.rationale) {
201
- const rationaleCtx = ctx.rationale();
202
- if (rationaleCtx?.backtickString) {
203
- const backtickCtx = rationaleCtx.backtickString();
219
+ visitActivityRequest(ctx) {
220
+ const activityType = ctx.ACTIVITY_TYPE().text;
221
+ const doNotPerform = ctx.doNotPerform ? ctx.doNotPerform() != null : false;
222
+ return {
223
+ type: "ActivityRequest",
224
+ activityType,
225
+ ...(doNotPerform ? { doNotPerform } : {}),
226
+ location: getLocation(ctx),
227
+ };
228
+ }
229
+ visitActivityWith(ctx) {
230
+ let terminologyReference;
231
+ let activityTypeValue;
232
+ if (ctx.terminologyReference) {
233
+ const ref = ctx.terminologyReference();
234
+ if (ref)
235
+ terminologyReference = ref.text.slice(1, -1);
236
+ }
237
+ if (ctx.activityTypeValue) {
238
+ const atv = ctx.activityTypeValue();
239
+ if (atv?.backtickString) {
240
+ const backtickCtx = atv.backtickString();
204
241
  if (backtickCtx?.text !== undefined) {
205
- return backtickCtx.text.slice(1, -1);
242
+ activityTypeValue = backtickCtx.text.slice(1, -1);
206
243
  }
207
244
  }
208
245
  }
209
- return undefined;
246
+ return {
247
+ type: "ActivityWith",
248
+ ...(terminologyReference ? { terminologyReference } : {}),
249
+ ...(activityTypeValue ? { activityTypeValue } : {}),
250
+ location: getLocation(ctx),
251
+ };
210
252
  }
211
- visitActivityStatement(ctx) {
212
- const name = ctx.activityIdentifier().text.slice(1, -1);
213
- const request = ctx.ACTIVITY_TYPE().text;
214
- const { terminologyReference, activityTypeValue } = this.parseWithClause(ctx);
215
- const rationale = this.parseRationaleClause(ctx);
216
- const doNotPerform = ctx.doNotPerform?.() != null;
253
+ visitActivityBecause(ctx) {
254
+ const rationale = ctx.rationale().backtickString().text.slice(1, -1);
217
255
  return {
218
- type: "Activity",
219
- name,
220
- request,
221
- terminologyReference,
222
- activityTypeValue,
256
+ type: "ActivityBecause",
223
257
  rationale,
224
- doNotPerform,
225
258
  location: getLocation(ctx),
226
259
  };
227
260
  }
@@ -258,6 +291,20 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
258
291
  valueType: valueTypeToken.text,
259
292
  };
260
293
  }
294
+ parseMeta(bodyCtx) {
295
+ const metaCtx = bodyCtx.metaLine?.();
296
+ const backtickCtx = metaCtx?.backtickString?.();
297
+ if (backtickCtx?.text !== undefined) {
298
+ return backtickCtx.text.slice(1, -1);
299
+ }
300
+ else if (backtickCtx?.BACKTICK_STRING) {
301
+ const token = backtickCtx.BACKTICK_STRING();
302
+ if (token?.text !== undefined) {
303
+ return token.text.slice(1, -1);
304
+ }
305
+ }
306
+ return undefined;
307
+ }
261
308
  parseEvidence(bodyCtx) {
262
309
  if (bodyCtx.evidenceLine?.()) {
263
310
  const evidenceCtx = bodyCtx.evidenceLine?.();
@@ -292,11 +339,11 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
292
339
  location: getLocation(bodyCtx.codedFromLine()),
293
340
  };
294
341
  }
295
- else if (bodyCtx.inferredFromLine?.()) {
296
- const infCtx = bodyCtx.inferredFromLine();
342
+ else if (bodyCtx.inferredFromBody?.()) {
343
+ const infCtx = bodyCtx.inferredFromBody();
297
344
  if (!infCtx) {
298
345
  this.reportError("AstError", ctx, {
299
- message: "ConceptStatement: inferredFromLine() unexpectedly returned undefined",
346
+ message: "ConceptStatement: inferredFromBody() unexpectedly returned undefined",
300
347
  });
301
348
  return null;
302
349
  }
@@ -304,7 +351,7 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
304
351
  }
305
352
  else {
306
353
  this.reportError("AstError", ctx, {
307
- message: "ConceptStatement must have either codedFromLine or inferredFromLine",
354
+ message: "ConceptStatement must have either codedFromLine or inferredFromBody",
308
355
  });
309
356
  return null;
310
357
  }
@@ -323,6 +370,7 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
323
370
  return null;
324
371
  }
325
372
  const { conceptType, valueType } = types;
373
+ const meta = this.parseMeta(bodyCtx);
326
374
  const evidence = this.parseEvidence(bodyCtx);
327
375
  const definition = this.parseConceptDefinition(bodyCtx, ctx);
328
376
  if (!definition) {
@@ -333,31 +381,27 @@ class CRLAstBuilder extends AbstractParseTreeVisitor_1.AbstractParseTreeVisitor
333
381
  name,
334
382
  conceptType,
335
383
  valueType,
336
- evidence,
384
+ ...(meta ? { meta } : {}),
385
+ ...(evidence ? { evidence } : {}),
337
386
  definition,
338
387
  location: getLocation(ctx),
339
388
  };
340
389
  }
341
- visitInferredFromLine(ctx) {
342
- const defCtx = ctx.inferredBody();
343
- const body = this.visit(defCtx);
344
- return { type: "InferredFromDefinition", body, location: getLocation(ctx) };
345
- }
346
390
  visitDefinitionConcept(ctx) {
347
391
  const refCtx = ctx.getRuleContext(0, CRLParser_1.InferredFromConceptReferenceContext);
348
- let pat = undefined;
349
- const patternCtx = refCtx?.patternStatement?.();
350
- if (patternCtx?.patternName?.().backtickString) {
351
- const backtickCtx = patternCtx.patternName().backtickString();
352
- if (backtickCtx?.text !== undefined) {
353
- pat = backtickCtx.text.slice(1, -1);
354
- }
355
- }
356
392
  const concept = refCtx?.conceptReference().text.slice(1, -1) ?? "";
393
+ const patternStmts = refCtx?.patternStatement?.();
394
+ let patterns = [];
395
+ if (patternStmts && patternStmts.length > 0) {
396
+ patterns = patternStmts.map((patCtx) => {
397
+ const backtickCtx = patCtx.patternName().backtickString();
398
+ return backtickCtx.text.slice(1, -1);
399
+ });
400
+ }
357
401
  return {
358
402
  type: "InferredFromDefinitionConcept",
359
- pattern: pat,
360
403
  concept,
404
+ ...(patterns.length > 0 ? { patterns } : {}),
361
405
  location: getLocation(ctx),
362
406
  };
363
407
  }
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ast/builder.ts"],"names":[],"mappings":";;;AACA,qFAAkF;AAElF,oEA6B8C;AAqC9C,SAAS,WAAW,CAAC,GAAsB;IACzC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACxB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,KAAK,CAAC;IAE/B,OAAO;QACL,KAAK,EAAE;YACL,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,MAAM,EAAE,KAAK,CAAC,kBAAkB;SACjC;QACD,GAAG,EAAE;YACH,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,kBAAkB,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,CAAC,CAAC;SAC3D;KACF,CAAC;AACJ,CAAC;AAED,MAAa,aACX,SAAQ,mDAAiC;IAD3C;;QAImB,WAAM,GAAe,EAAE,CAAC;IAmc3C,CAAC;IAjcW,aAAa;QACrB,OAAO,IAA0B,CAAC;IACpC,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAES,WAAW,CACnB,OAAe,EACf,GAAsB,EACtB,OAAiC;QAEjC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;YACf,IAAI,EAAE,WAAW;YACjB,OAAO;YACP,IAAI,EAAE,GAAG,CAAC,KAAK,CAAC,IAAI;YACpB,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,kBAAkB;YACpC,OAAO,EAAE;gBACP,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;gBAC1B,GAAG,OAAO;aACX;SACF,CAAC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,GAAe;QACtB,IAAI,MAA0B,CAAC;QAC/B,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAChC,IAAI,UAAU,EAAE,CAAC;YAEf,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAc,CAAC,CAAC;QAC1E,OAAO;YACL,IAAI,EAAE,KAAK;YACX,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,UAAU;YACV,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,sBAAsB,CAAC,GAA6B;QAClD,MAAM,IAAI,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,YAAY,EAAG,CAAiB,CAAC;QAC7D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IACtE,CAAC;IAED,iBAAiB,CAAC,GAAwB;QACxC,MAAM,UAAU,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAc,CAAC,CAAC;QAC1E,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IAC1E,CAAC;IAED,cAAc,CAAC,GAAqB;QAClC,IAAI,GAAG,YAAY,+BAAmB,EAAE,CAAC;YACvC,OAAO,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,GAAG,YAAY,mCAAuB,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACzC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;QACvD,OAAO,IAA4B,CAAC;IACtC,CAAC;IAED,iBAAiB,CAAC,GAAwB;QACxC,MAAM,WAAW,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAc,CAAC;QACtD,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED,qBAAqB,CAAC,GAA4B;QAChD,MAAM,WAAW,GAAG,GAAG,CAAC,gBAAgB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC7D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,CAAoB,CAAC;QACpE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IACtF,CAAC;IAED,oBAAoB,CAAC,GAA2B;QAC9C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAc,CAAC;IAClD,CAAC;IAED,mBAAmB,CAAC,GAA0B;QAC5C,IAAI,GAAG,YAAY,kCAAsB,EAAE,CAAC;YAC1C,OAAO,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,GAAG,YAAY,8BAAkB,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QAC5D,OAAO,IAA4B,CAAC;IACtC,CAAC;IAED,cAAc,CAAC,GAAqB;QAClC,MAAM,SAAS,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,cAAc,EAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7F,MAAM,UAAU,GAAoC,EAAE,CAAC;QACvD,KAAK,MAAM,OAAO,IAAI,GAAG,CAAC,cAAc,EAAE,EAAE,CAAC;YAC3C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,OAAO;YACL,IAAI,EAAE,WAAW;YACjB,SAAS;YACT,UAAU;YACV,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,gBAAgB,CAAC,GAAuB;QACtC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,eAAe,EAAE,CAAoB,CAAC;IAC9D,CAAC;IAED,oBAAoB,CAAC,GAA2B;QAC9C,MAAM,OAAO,GAAG,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC;QACrC,IAAI,MAAuC,CAAC;QAC5C,IAAI,OAAO,EAAE,CAAC;YACZ,MAAM,GAAG,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,OAAO,EAAE,CAAC;YACnB,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3C,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IACzE,CAAC;IAED,uBAAuB,CAAC,GAA8B;QACpD,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,mBAA4B,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QAChG,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,iBAAiB,CAAC,GAAwB;QACxC,MAAM,YAAY,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,EAAE,IAAI,EAAE,aAAsB,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1F,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,yBAAyB,CAAC,GAAgC;QACxD,MAAM,IAAI,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,UAGiE,CAAC;QACtE,IAAI,GAAG,CAAC,mBAAmB,EAAE,EAAE,CAAC;YAC9B,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAG,CAAwB,CAAC;QAC7E,CAAC;aAAM,IAAI,GAAG,CAAC,qBAAqB,EAAE,EAAE,CAAC;YACvC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAG,CAA0B,CAAC;QACjF,CAAC;aAAM,IAAI,GAAG,CAAC,kBAAkB,EAAE,EAAE,CAAC;YACpC,UAAU,GAAG;gBACX,IAAI,EAAE,oBAAoB;gBAC1B,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;aAC3B,CAAC;QACJ,CAAC;QACD,OAAO;YACL,IAAI,EAAE,aAAa;YACnB,IAAI;YACJ,UAAU,EAAE,UAAW;YACvB,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,wBAAwB,CAAC,GAA+B;QACtD,MAAM,YAAY,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC5D,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,YAAY,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IACnF,CAAC;IAED,0BAA0B,CAAC,GAAiC;QAC1D,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,GAAG,CAAC,cAAc,IAAI,GAAG,CAAC,cAAc,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACzC,MAAM,QAAQ,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,UAAU,EAAE,IAAI;gBAAE,MAAM,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC5D,IAAI,QAAQ,EAAE,IAAI;gBAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,uBAAuB,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IACrF,CAAC;IAEO,eAAe,CACrB,GAA4E;QAE5E,IAAI,oBAAwC,CAAC;QAC7C,IAAI,iBAAqC,CAAC;QAC1C,IAAI,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;YACf,IAAI,GAAG,CAAC,oBAAoB,EAAE,EAAE,CAAC;gBAC/B,oBAAoB,GAAG,GAAG,CAAC,oBAAoB,EAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACvE,CAAC;iBAAM,IAAI,GAAG,CAAC,iBAAiB,EAAE,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAC;gBACpC,IAAI,GAAG,EAAE,cAAc,EAAE,CAAC;oBACxB,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;oBACzC,IAAI,WAAW,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;wBACpC,iBAAiB,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACpD,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC;IACrD,CAAC;IAEO,oBAAoB,CAC1B,GAA4E;QAE5E,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YAClB,MAAM,YAAY,GAAG,GAAG,CAAC,SAAS,EAAE,CAAC;YACrC,IAAI,YAAY,EAAE,cAAc,EAAE,CAAC;gBACjC,MAAM,WAAW,GAAG,YAAY,CAAC,cAAc,EAAE,CAAC;gBAClD,IAAI,WAAW,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;oBACpC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,sBAAsB,CAAC,GAA6B;QAClD,MAAM,IAAI,GAAG,GAAG,CAAC,kBAAkB,EAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzD,MAAM,OAAO,GAAG,GAAG,CAAC,aAAa,EAAG,CAAC,IAAoB,CAAC;QAC1D,MAAM,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;QAC9E,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,GAAG,CAAC,YAAY,EAAE,EAAE,IAAI,IAAI,CAAC;QAClD,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,IAAI;YACJ,OAAO;YACP,oBAAoB;YACpB,iBAAiB;YACjB,SAAS;YACT,YAAY;YACZ,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;SAC3B,CAAC;IACJ,CAAC;IAEO,iBAAiB,CACvB,OAA0E,EAC1E,GAA2E;QAE3E,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;QACtC,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC;QAChD,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,EAAE,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE;gBAChC,OAAO,EAAE,kDAAkD;aAC5D,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,IAAI,gBAAgB,EAAE,cAAc,CAAC;QACrC,IAAI,CAAC;YACH,gBAAgB,GAAG,QAAQ,CAAC,YAAY,EAAE,CAAC;QAC7C,CAAC;QAAC,MAAM,CAAC;YACP,gBAAgB,GAAG,SAAS,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC;YACH,cAAc,GAAG,aAAa,CAAC,kBAAkB,EAAE,CAAC;QACtD,CAAC;QAAC,MAAM,CAAC;YACP,cAAc,GAAG,SAAS,CAAC;QAC7B,CAAC;QACD,IAAI,CAAC,gBAAgB,IAAI,CAAC,cAAc,EAAE,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE;gBAChC,OAAO,EAAE,oEAAoE;aAC9E,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO;YACL,WAAW,EAAE,gBAAgB,CAAC,IAAmB;YACjD,SAAS,EAAE,cAAc,CAAC,IAAwB;SACnD,CAAC;IACJ,CAAC;IAEO,aAAa,CACnB,OAA0E;QAE1E,IAAI,OAAO,CAAC,YAAY,EAAE,EAAE,EAAE,CAAC;YAC7B,MAAM,WAAW,GAAG,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;YAC7C,IAAI,WAAW,EAAE,cAAc,EAAE,CAAC;gBAChC,MAAM,WAAW,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC;gBACjD,IAAI,WAAW,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;oBACpC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;gBACvC,CAAC;qBAAM,IAAI,WAAW,EAAE,eAAe,EAAE,CAAC;oBACxC,MAAM,KAAK,GAAG,WAAW,CAAC,eAAe,EAAE,CAAC;oBAC5C,IAAI,KAAK,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;wBAC9B,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,sBAAsB,CAC5B,OAA0E,EAC1E,GAA2E;QAE3E,IAAI,OAAO,CAAC,aAAa,EAAE,EAAE,EAAE,CAAC;YAC9B,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;YAC1C,MAAM,OAAO,GAAG,SAAS,EAAE,oBAAoB,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE;oBAChC,OAAO,EAAE,iEAAiE;iBAC3E,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,qBAA8B;gBACpC,eAAe,EAAE,OAAO;gBACxB,QAAQ,EAAE,WAAW,CAAC,OAAO,CAAC,aAAa,EAAG,CAAC;aAChD,CAAC;QACJ,CAAC;aAAM,IAAI,OAAO,CAAC,gBAAgB,EAAE,EAAE,EAAE,CAAC;YACxC,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAC1C,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE;oBAChC,OAAO,EAAE,sEAAsE;iBAChF,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAA2B,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE;gBAChC,OAAO,EAAE,qEAAqE;aAC/E,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,qBAAqB,CAAC,GAA4B;QAChD,MAAM,IAAI,GAAG,GAAG,CAAC,iBAAiB,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC;QACpC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE;gBAChC,OAAO,EAAE,4DAA4D;aACtE,CAAC,CAAC;YACH,OAAO,IAA0B,CAAC;QACpC,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACnD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAA0B,CAAC;QACpC,CAAC;QACD,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,KAAK,CAAC;QACzC,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC7C,MAAM,UAAU,GAAG,IAAI,CAAC,sBAAsB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7D,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAA0B,CAAC;QACpC,CAAC;QACD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI;YACJ,WAAW;YACX,SAAS;YACT,QAAQ;YACR,UAAU;YACV,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,GAA4B;QAChD,MAAM,MAAM,GAAG,GAAG,CAAC,YAAY,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAKX,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9E,CAAC;IAED,sBAAsB,CAAC,GAAwB;QAC7C,MAAM,MAAM,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,+CAAmC,CAAC,CAAC;QAC1E,IAAI,GAAG,GAAuB,SAAS,CAAC;QACxC,MAAM,UAAU,GAAG,MAAM,EAAE,gBAAgB,EAAE,EAAE,CAAC;QAChD,IAAI,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC,cAAc,EAAE,CAAC;YAC9D,IAAI,WAAW,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;gBACpC,GAAG,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACtC,CAAC;QACH,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,EAAE,gBAAgB,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACnE,OAAO;YACL,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,GAAG;YACZ,OAAO;YACP,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;SAC3B,CAAC;IACJ,CAAC;IAED,oBAAoB,CAAC,GAAwB;QAC3C,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,+CAAmC,CAAC,CAAC;QAC3E,MAAM,OAAO,GAAG,OAAO,EAAE,sBAAsB,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAGjC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;YAC7C,MAAM,UAAU,GAAG,IAAwB,CAAC;YAC5C,OAAO;gBACL,IAAI,EAAE,+BAA+B;gBACrC,OAAO,EAAE,UAAU,CAAC,IAAI;gBACxB,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;aAC3B,CAAC;QACJ,CAAC;QACD,OAAO,IAAuB,CAAC;IACjC,CAAC;IAED,2BAA2B,CAAC,GAAkC;QAC5D,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAiB,CAAC;IACtD,CAAC;IAED,eAAe,CAAC,GAAsB;QACpC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC,CAAqB,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAiB,CAAC,CAAC;QAC9F,IAAI,GAAG,CAAC,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACrE,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,CAAe,CAAC;IAChC,CAAC;IAED,gBAAgB,CACd,GAAuB;QAEvB,MAAM,KAAK,GAAG,GAAG;aACd,WAAW,EAAE;aACb,GAAG,CACF,CAAC,CAAqB,EAAE,EAAE,CACxB,IAAI,CAAC,KAAK,CAAC,CAAC,CAAqE,CACpF,CAAC;QACJ,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;QACtE,CAAC;QACD,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,gBAAgB,CAAC,GAAuB;QACtC,IAAI,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC;YACd,OAAO;gBACL,IAAI,EAAE,eAAwB;gBAC9B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,EAAG,CAA6C;gBACtF,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC;aAC3B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAG,CAA6C,CAAC;IAC7E,CAAC;IAED,gBAAgB,CAAC,GAAgB;QAC/B,MAAM,aAAa,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,mCAAuB,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,aAAa,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrD,OAAO,EAAE,IAAI,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IACxE,CAAC;IACD,oBAAoB,CAAC,GAAgB;QACnC,MAAM,OAAO,GAAG,GAAG,CAAC,cAAc,CAAC,CAAC,EAAE,yCAA6B,CAAC,CAAC;QACrE,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAKZ,CAAC;QACpB,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;IACnF,CAAC;CACF;AAvcD,sCAucC"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/ast/builder.ts"],"names":[],"mappings":"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"}
@@ -63,34 +63,53 @@ export interface UseDecision extends ASTNode {
63
63
  export interface Terminology extends ASTNode {
64
64
  type: "Terminology";
65
65
  name: string;
66
- definition: TerminologyDefinition;
66
+ body: TerminologyBodyLine[];
67
67
  location: Location;
68
68
  }
69
- export type TerminologyDefinition = TerminologyValueset | TerminologyUnknown | TerminologySystemCode;
69
+ export type TerminologyBodyLine = TerminologyValueset | TerminologySystem | TerminologyCode;
70
70
  export interface TerminologyValueset extends ASTNode {
71
71
  type: "TerminologyValueset";
72
72
  valuesetName: string;
73
73
  location: Location;
74
74
  }
75
- export interface TerminologyUnknown extends ASTNode {
76
- type: "TerminologyUnknown";
77
- value: string;
75
+ export interface TerminologySystem extends ASTNode {
76
+ type: "TerminologySystem";
77
+ system: string;
78
78
  location: Location;
79
79
  }
80
- export interface TerminologySystemCode extends ASTNode {
81
- type: "TerminologySystemCode";
82
- system: string;
80
+ export interface TerminologyCode extends ASTNode {
81
+ type: "TerminologyCode";
83
82
  code: string;
84
83
  location: Location;
85
84
  }
86
85
  export interface Activity extends ASTNode {
87
86
  type: "Activity";
88
87
  name: string;
89
- request: ActivityType;
88
+ body: ActivityBody;
89
+ location: Location;
90
+ }
91
+ export interface ActivityBody extends ASTNode {
92
+ type: "ActivityBody";
93
+ request: ActivityRequest;
94
+ withClause?: ActivityWith;
95
+ becauseClause?: ActivityBecause;
96
+ location: Location;
97
+ }
98
+ export interface ActivityRequest extends ASTNode {
99
+ type: "ActivityRequest";
100
+ activityType: ActivityType;
101
+ doNotPerform?: boolean;
102
+ location: Location;
103
+ }
104
+ export interface ActivityWith extends ASTNode {
105
+ type: "ActivityWith";
90
106
  terminologyReference?: string;
91
107
  activityTypeValue?: string;
92
- rationale?: string;
93
- doNotPerform?: boolean;
108
+ location: Location;
109
+ }
110
+ export interface ActivityBecause extends ASTNode {
111
+ type: "ActivityBecause";
112
+ rationale: string;
94
113
  location: Location;
95
114
  }
96
115
  export interface Concept extends ASTNode {
@@ -133,7 +152,7 @@ export interface GroupExpression extends ASTNode {
133
152
  export interface InferredFromConcept extends ASTNode {
134
153
  type: "InferredFromDefinitionConcept";
135
154
  concept: string;
136
- pattern?: string;
155
+ patterns?: string[];
137
156
  }
138
157
  export interface InferredFromDefinition extends ASTNode {
139
158
  type: "InferredFromDefinition";
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":";;;AAwNA,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AACtB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AACrB,kEAAiE;AAAxD,sHAAA,iBAAiB,OAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/ast/types.ts"],"names":[],"mappings":";;;AA4OA,0DAAyD;AAAhD,8GAAA,aAAa,OAAA;AACtB,wDAAuD;AAA9C,4GAAA,YAAY,OAAA;AACrB,kEAAiE;AAAxD,sHAAA,iBAAiB,OAAA"}
@@ -14,49 +14,48 @@ export declare class CRLLexer extends Lexer {
14
14
  static readonly INFERRED_FROM = 8;
15
15
  static readonly CODED_FROM = 9;
16
16
  static readonly APPLY_PATTERN = 10;
17
- static readonly IS_SYSTEM = 11;
18
- static readonly AND_CODE = 12;
19
- static readonly IS_VALUESET = 13;
20
- static readonly IS_UNKNOWN_BACKTICK = 14;
21
- static readonly ALL_BLOCK = 15;
22
- static readonly ANY_BLOCK = 16;
23
- static readonly ACTIVITY = 17;
24
- static readonly AND = 18;
25
- static readonly BECAUSE = 19;
26
- static readonly CONCEPT = 20;
27
- static readonly DECISION = 21;
28
- static readonly NOT = 22;
29
- static readonly OR = 23;
30
- static readonly REQUEST = 24;
31
- static readonly TERMINOLOGY = 25;
32
- static readonly THEN = 26;
33
- static readonly WHEN = 27;
34
- static readonly WITH = 28;
35
- static readonly COLON = 29;
36
- static readonly DOT = 30;
37
- static readonly DASH = 31;
38
- static readonly LPAREN = 32;
39
- static readonly RPAREN = 33;
40
- static readonly HEADER = 34;
41
- static readonly QUOTED_STRING = 35;
42
- static readonly BACKTICK_STRING = 36;
43
- static readonly WS = 37;
44
- static readonly COMMENT = 38;
45
- static readonly COMMENT_BLOCK = 39;
46
- static readonly ERROR = 40;
47
- static readonly DO_NOT_PERFORM_DO = 41;
48
- static readonly DO_NOT_PERFORM_NOT = 42;
49
- static readonly DO_NOT_PERFORM_PERFORM = 43;
50
- static readonly ACTIVITY_TYPE = 44;
51
- static readonly ACTIVITY_WS = 45;
52
- static readonly ACTIVITY_COMMENT_BLOCK = 46;
53
- static readonly CONCEPT_TYPE = 47;
54
- static readonly CONCEPT_WS = 48;
55
- static readonly CONCEPT_COMMENT_BLOCK = 49;
56
- static readonly CONCEPT_VALUE_TYPE = 50;
57
- static readonly VALUE_TYPE_WS = 51;
58
- static readonly VALUE_TYPE_COMMENT_BLOCK = 52;
59
- static readonly DEFAULT_ErrorChar = 53;
17
+ static readonly CODE_IS = 11;
18
+ static readonly SYSTEM_IS = 12;
19
+ static readonly VALUESET_IS = 13;
20
+ static readonly ALL_BLOCK = 14;
21
+ static readonly ANY_BLOCK = 15;
22
+ static readonly ACTIVITY = 16;
23
+ static readonly AND = 17;
24
+ static readonly BECAUSE = 18;
25
+ static readonly CONCEPT = 19;
26
+ static readonly DECISION = 20;
27
+ static readonly NOT = 21;
28
+ static readonly OR = 22;
29
+ static readonly REQUEST = 23;
30
+ static readonly TERMINOLOGY = 24;
31
+ static readonly THEN = 25;
32
+ static readonly WHEN = 26;
33
+ static readonly WITH = 27;
34
+ static readonly COLON = 28;
35
+ static readonly DOT = 29;
36
+ static readonly DASH = 30;
37
+ static readonly LPAREN = 31;
38
+ static readonly RPAREN = 32;
39
+ static readonly HEADER = 33;
40
+ static readonly QUOTED_STRING = 34;
41
+ static readonly BACKTICK_STRING = 35;
42
+ static readonly WS = 36;
43
+ static readonly COMMENT = 37;
44
+ static readonly COMMENT_BLOCK = 38;
45
+ static readonly ERROR = 39;
46
+ static readonly DO_NOT_PERFORM_DO = 40;
47
+ static readonly DO_NOT_PERFORM_NOT = 41;
48
+ static readonly DO_NOT_PERFORM_PERFORM = 42;
49
+ static readonly ACTIVITY_TYPE = 43;
50
+ static readonly ACTIVITY_WS = 44;
51
+ static readonly ACTIVITY_COMMENT_BLOCK = 45;
52
+ static readonly CONCEPT_TYPE = 46;
53
+ static readonly CONCEPT_WS = 47;
54
+ static readonly CONCEPT_COMMENT_BLOCK = 48;
55
+ static readonly CONCEPT_VALUE_TYPE = 49;
56
+ static readonly VALUE_TYPE_WS = 50;
57
+ static readonly VALUE_TYPE_COMMENT_BLOCK = 51;
58
+ static readonly DEFAULT_ErrorChar = 52;
60
59
  static readonly ACTIVITY_MODE = 1;
61
60
  static readonly CONCEPT_MODE = 2;
62
61
  static readonly VALUE_TYPE_MODE = 3;