ts2workflows 0.5.0 → 0.7.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/ast/stepnames.js +4 -2
- package/dist/ast/steps.d.ts +9 -9
- package/dist/ast/steps.d.ts.map +1 -1
- package/dist/ast/steps.js +20 -8
- package/dist/ast/workflows.js +1 -1
- package/dist/transpiler/expressions.d.ts +1 -0
- package/dist/transpiler/expressions.d.ts.map +1 -1
- package/dist/transpiler/expressions.js +37 -9
- package/dist/transpiler/index.js +34 -16
- package/dist/transpiler/statements.d.ts +1 -0
- package/dist/transpiler/statements.d.ts.map +1 -1
- package/dist/transpiler/statements.js +227 -42
- package/dist/transpiler/transformations.d.ts.map +1 -1
- package/dist/transpiler/transformations.js +3 -92
- package/dist/utils.d.ts +7 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +17 -0
- package/language_reference.md +85 -20
- package/package.json +3 -3
- package/types/workflowslib.d.ts +61 -35
package/dist/ast/stepnames.js
CHANGED
|
@@ -122,7 +122,9 @@ function removeJumpTargetRecurse(step) {
|
|
|
122
122
|
case 'switch':
|
|
123
123
|
return removeJumpTargetsSwitch(step);
|
|
124
124
|
case 'try':
|
|
125
|
-
return new TryStepASTNamed(removeJumpTargetSteps(step.trySteps),
|
|
125
|
+
return new TryStepASTNamed(removeJumpTargetSteps(step.trySteps), step.exceptSteps !== undefined
|
|
126
|
+
? removeJumpTargetSteps(step.exceptSteps)
|
|
127
|
+
: undefined, step.retryPolicy, step.errorMap);
|
|
126
128
|
}
|
|
127
129
|
}
|
|
128
130
|
function removeJumpTargetsFor(step) {
|
|
@@ -270,7 +272,7 @@ function renameJumpTargetsTry(step, replaceLabels) {
|
|
|
270
272
|
name,
|
|
271
273
|
step: renameJumpTargets(nested, replaceLabels),
|
|
272
274
|
}));
|
|
273
|
-
const transformedExceptSteps = step.exceptSteps
|
|
275
|
+
const transformedExceptSteps = step.exceptSteps?.map(({ name, step: nested }) => ({
|
|
274
276
|
name,
|
|
275
277
|
step: renameJumpTargets(nested, replaceLabels),
|
|
276
278
|
}));
|
package/dist/ast/steps.d.ts
CHANGED
|
@@ -4,12 +4,12 @@ export type StepName = string;
|
|
|
4
4
|
export type VariableAssignment = readonly [VariableName, Expression];
|
|
5
5
|
export type WorkflowParameters = Record<VariableName, Expression>;
|
|
6
6
|
export interface CustomRetryPolicy {
|
|
7
|
-
predicate
|
|
8
|
-
maxRetries:
|
|
7
|
+
predicate?: string;
|
|
8
|
+
maxRetries: Expression;
|
|
9
9
|
backoff: {
|
|
10
|
-
initialDelay
|
|
11
|
-
maxDelay
|
|
12
|
-
multiplier
|
|
10
|
+
initialDelay?: Expression;
|
|
11
|
+
maxDelay?: Expression;
|
|
12
|
+
multiplier?: Expression;
|
|
13
13
|
};
|
|
14
14
|
}
|
|
15
15
|
export interface WorkflowAST {
|
|
@@ -148,11 +148,11 @@ export interface SwitchConditionAST<T extends WorkflowStepAST | NamedWorkflowSte
|
|
|
148
148
|
export declare class TryStepAST {
|
|
149
149
|
readonly tag = "try";
|
|
150
150
|
readonly trySteps: WorkflowStepAST[];
|
|
151
|
-
readonly exceptSteps
|
|
151
|
+
readonly exceptSteps?: WorkflowStepAST[];
|
|
152
152
|
readonly retryPolicy?: string | CustomRetryPolicy;
|
|
153
153
|
readonly errorMap?: VariableName;
|
|
154
154
|
readonly label?: string;
|
|
155
|
-
constructor(trySteps: WorkflowStepAST[], exceptSteps
|
|
155
|
+
constructor(trySteps: WorkflowStepAST[], exceptSteps?: WorkflowStepAST[], retryPolicy?: string | CustomRetryPolicy, errorMap?: VariableName, label?: string);
|
|
156
156
|
withLabel(newLabel?: string): TryStepAST;
|
|
157
157
|
}
|
|
158
158
|
export declare class TryStepASTNamed {
|
|
@@ -160,8 +160,8 @@ export declare class TryStepASTNamed {
|
|
|
160
160
|
readonly retryPolicy?: string | CustomRetryPolicy;
|
|
161
161
|
readonly errorMap?: VariableName;
|
|
162
162
|
readonly trySteps: NamedWorkflowStep[];
|
|
163
|
-
readonly exceptSteps
|
|
164
|
-
constructor(steps: NamedWorkflowStep[], exceptSteps
|
|
163
|
+
readonly exceptSteps?: NamedWorkflowStep[];
|
|
164
|
+
constructor(steps: NamedWorkflowStep[], exceptSteps?: NamedWorkflowStep[], retryPolicy?: string | CustomRetryPolicy, errorMap?: VariableName);
|
|
165
165
|
}
|
|
166
166
|
export declare class JumpTargetAST {
|
|
167
167
|
readonly tag = "jumptarget";
|
package/dist/ast/steps.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/ast/steps.ts"],"names":[],"mappings":"AACA,OAAO,EACL,UAAU,EACV,YAAY,EAEb,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AAE/D,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAC7B,MAAM,MAAM,kBAAkB,GAAG,SAAS,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;AACpE,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,YAAY,EAAE,UAAU,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"steps.d.ts","sourceRoot":"","sources":["../../src/ast/steps.ts"],"names":[],"mappings":"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"}
|
package/dist/ast/steps.js
CHANGED
|
@@ -347,7 +347,7 @@ function namedStepsSwitch(step, generateName) {
|
|
|
347
347
|
function namedStepsTry(step, generateName) {
|
|
348
348
|
const mainLabel = step.label ?? generateName('try');
|
|
349
349
|
const namedTrySteps = step.trySteps.map((nested) => namedSteps(nested, generateName));
|
|
350
|
-
const namedExceptSteps = step.exceptSteps
|
|
350
|
+
const namedExceptSteps = step.exceptSteps?.map((nested) => namedSteps(nested, generateName));
|
|
351
351
|
return {
|
|
352
352
|
name: mainLabel,
|
|
353
353
|
step: new TryStepASTNamed(namedTrySteps, namedExceptSteps, step.retryPolicy, step.errorMap),
|
|
@@ -394,7 +394,7 @@ function nestedStepsTry(step) {
|
|
|
394
394
|
if (step.trySteps.length > 0) {
|
|
395
395
|
nested.push(step.trySteps);
|
|
396
396
|
}
|
|
397
|
-
if (step.exceptSteps
|
|
397
|
+
if (step.exceptSteps) {
|
|
398
398
|
nested.push(step.exceptSteps);
|
|
399
399
|
}
|
|
400
400
|
return nested;
|
|
@@ -516,17 +516,29 @@ function renderTryStep(step) {
|
|
|
516
516
|
else {
|
|
517
517
|
const predicateName = step.retryPolicy.predicate;
|
|
518
518
|
retry = {
|
|
519
|
-
predicate: `\${${predicateName}}
|
|
520
|
-
max_retries: step.retryPolicy.maxRetries,
|
|
519
|
+
...(predicateName ? { predicate: `\${${predicateName}}` } : {}),
|
|
520
|
+
max_retries: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.maxRetries),
|
|
521
521
|
backoff: {
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
522
|
+
...(step.retryPolicy.backoff.initialDelay
|
|
523
|
+
? {
|
|
524
|
+
initial_delay: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.initialDelay),
|
|
525
|
+
}
|
|
526
|
+
: {}),
|
|
527
|
+
...(step.retryPolicy.backoff.maxDelay
|
|
528
|
+
? {
|
|
529
|
+
max_delay: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.maxDelay),
|
|
530
|
+
}
|
|
531
|
+
: {}),
|
|
532
|
+
...(step.retryPolicy.backoff.multiplier
|
|
533
|
+
? {
|
|
534
|
+
multiplier: expressionToLiteralValueOrLiteralExpression(step.retryPolicy.backoff.multiplier),
|
|
535
|
+
}
|
|
536
|
+
: {}),
|
|
525
537
|
},
|
|
526
538
|
};
|
|
527
539
|
}
|
|
528
540
|
let except;
|
|
529
|
-
if (step.exceptSteps
|
|
541
|
+
if (step.exceptSteps !== undefined) {
|
|
530
542
|
except = {
|
|
531
543
|
as: step.errorMap,
|
|
532
544
|
steps: renderSteps(step.exceptSteps),
|
package/dist/ast/workflows.js
CHANGED
|
@@ -7,4 +7,5 @@ export declare function convertMemberExpression(node: TSESTree.MemberExpression)
|
|
|
7
7
|
export declare function isMagicFunction(calleeName: string): boolean;
|
|
8
8
|
export declare function isMagicFunctionStatmentOnly(calleeName: string): boolean;
|
|
9
9
|
export declare function throwIfSpread<T extends TSESTree.Expression | TSESTree.Property | TSESTree.SpreadElement | null>(nodes: T[]): Exclude<T, TSESTree.SpreadElement>[];
|
|
10
|
+
export declare function asExpression(x: Primitive | Expression): Expression;
|
|
10
11
|
//# sourceMappingURL=expressions.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/transpiler/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAGL,UAAU,EAGV,SAAS,EAMV,MAAM,uBAAuB,CAAA;AAI9B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,GAAG,UAAU,CAO3E;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,GAC9B,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC,CAgCxC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,QAAQ,CAAC,gBAAgB,GAC9B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,
|
|
1
|
+
{"version":3,"file":"expressions.d.ts","sourceRoot":"","sources":["../../src/transpiler/expressions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAkB,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAGL,UAAU,EAGV,SAAS,EAMV,MAAM,uBAAuB,CAAA;AAI9B,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,UAAU,GAAG,UAAU,CAO3E;AAED,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,GAC9B,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,UAAU,CAAC,CAgCxC;AAED,wBAAgB,+BAA+B,CAC7C,IAAI,EAAE,QAAQ,CAAC,gBAAgB,GAC9B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAG5B;AAgOD,wBAAgB,uBAAuB,CACrC,IAAI,EAAE,QAAQ,CAAC,gBAAgB,GAC9B,UAAU,CAcZ;AA0JD,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAG3D;AAED,wBAAgB,2BAA2B,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAGvE;AAoDD,wBAAgB,aAAa,CAC3B,CAAC,SACG,QAAQ,CAAC,UAAU,GACnB,QAAQ,CAAC,QAAQ,GACjB,QAAQ,CAAC,aAAa,GACtB,IAAI,EACR,KAAK,EAAE,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,QAAQ,CAAC,aAAa,CAAC,EAAE,CAgBlD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAElE"}
|
|
@@ -37,7 +37,7 @@ export function convertObjectExpression(node) {
|
|
|
37
37
|
}
|
|
38
38
|
export function convertObjectAsExpressionValues(node) {
|
|
39
39
|
// Convert Primitive values to PrimitiveExpressions
|
|
40
|
-
return mapRecordValues(convertObjectExpression(node),
|
|
40
|
+
return mapRecordValues(convertObjectExpression(node), asExpression);
|
|
41
41
|
}
|
|
42
42
|
function convertExpressionOrPrimitive(instance) {
|
|
43
43
|
switch (instance.type) {
|
|
@@ -149,6 +149,7 @@ function convertUnaryExpression(instance) {
|
|
|
149
149
|
throw new WorkflowSyntaxError('only prefix unary operators are supported', instance.loc);
|
|
150
150
|
}
|
|
151
151
|
let op;
|
|
152
|
+
let istypeof = false;
|
|
152
153
|
switch (instance.operator) {
|
|
153
154
|
case '+':
|
|
154
155
|
op = '+';
|
|
@@ -164,6 +165,10 @@ function convertUnaryExpression(instance) {
|
|
|
164
165
|
// This is wrong: the return value should be ignored.
|
|
165
166
|
op = undefined;
|
|
166
167
|
break;
|
|
168
|
+
case 'typeof':
|
|
169
|
+
op = undefined;
|
|
170
|
+
istypeof = true;
|
|
171
|
+
break;
|
|
167
172
|
case undefined:
|
|
168
173
|
op = undefined;
|
|
169
174
|
break;
|
|
@@ -171,7 +176,27 @@ function convertUnaryExpression(instance) {
|
|
|
171
176
|
throw new WorkflowSyntaxError(`Unsupported unary operator: ${instance.operator}`, instance.loc);
|
|
172
177
|
}
|
|
173
178
|
const ex = convertExpression(instance.argument);
|
|
174
|
-
|
|
179
|
+
if (istypeof) {
|
|
180
|
+
return convertTypeOfExpression(ex);
|
|
181
|
+
}
|
|
182
|
+
else if (op) {
|
|
183
|
+
return new UnaryExpression(op, ex);
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
return ex;
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
function convertTypeOfExpression(value) {
|
|
190
|
+
// Note for future rectoring: evalute value only once (in case it has side effects)
|
|
191
|
+
return new FunctionInvocationExpression('text.replace_all_regex', [
|
|
192
|
+
new FunctionInvocationExpression('text.replace_all_regex', [
|
|
193
|
+
new FunctionInvocationExpression('get_type', [value]),
|
|
194
|
+
new PrimitiveExpression('^(bytes|list|map|null)$'),
|
|
195
|
+
new PrimitiveExpression('object'),
|
|
196
|
+
]),
|
|
197
|
+
new PrimitiveExpression('^(double|integer)$'),
|
|
198
|
+
new PrimitiveExpression('number'),
|
|
199
|
+
]);
|
|
175
200
|
}
|
|
176
201
|
export function convertMemberExpression(node) {
|
|
177
202
|
if (node.property.type === AST_NODE_TYPES.PrivateIdentifier) {
|
|
@@ -307,7 +332,12 @@ function convertTemplateLiteralToExpression(node) {
|
|
|
307
332
|
const stringTerms = node.quasis
|
|
308
333
|
.map((x) => x.value.cooked)
|
|
309
334
|
.map((x) => new PrimitiveExpression(x));
|
|
310
|
-
const templateTerms = node.expressions
|
|
335
|
+
const templateTerms = node.expressions
|
|
336
|
+
.map(convertExpression)
|
|
337
|
+
.map((ex) => new FunctionInvocationExpression('default', [
|
|
338
|
+
ex,
|
|
339
|
+
new PrimitiveExpression('null'),
|
|
340
|
+
]));
|
|
311
341
|
// interleave string parts and the expression parts starting with strings
|
|
312
342
|
const interleavedTerms = stringTerms
|
|
313
343
|
.slice(0, stringTerms.length - 1)
|
|
@@ -324,13 +354,8 @@ function convertTemplateLiteralToExpression(node) {
|
|
|
324
354
|
if (interleavedTerms.length === 0) {
|
|
325
355
|
return new PrimitiveExpression('');
|
|
326
356
|
}
|
|
327
|
-
else if (interleavedTerms.length === 1) {
|
|
328
|
-
return interleavedTerms[0];
|
|
329
|
-
}
|
|
330
357
|
else {
|
|
331
|
-
return interleavedTerms.reduce((previous, current) =>
|
|
332
|
-
return new BinaryExpression(previous, '+', current);
|
|
333
|
-
});
|
|
358
|
+
return interleavedTerms.reduce((previous, current) => new BinaryExpression(previous, '+', current));
|
|
334
359
|
}
|
|
335
360
|
}
|
|
336
361
|
export function throwIfSpread(nodes) {
|
|
@@ -341,3 +366,6 @@ export function throwIfSpread(nodes) {
|
|
|
341
366
|
const argumentExpressions = nodes.filter((x) => x?.type !== AST_NODE_TYPES.SpreadElement);
|
|
342
367
|
return argumentExpressions;
|
|
343
368
|
}
|
|
369
|
+
export function asExpression(x) {
|
|
370
|
+
return isExpression(x) ? x : new PrimitiveExpression(x);
|
|
371
|
+
}
|
package/dist/transpiler/index.js
CHANGED
|
@@ -49,24 +49,14 @@ function parseSubworkflows(node) {
|
|
|
49
49
|
const workflowParams = nodeParams.map((param) => {
|
|
50
50
|
switch (param.type) {
|
|
51
51
|
case AST_NODE_TYPES.Identifier:
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
if (param.left.type !== AST_NODE_TYPES.Identifier) {
|
|
55
|
-
throw new WorkflowSyntaxError('The default value must be an identifier', param.left.loc);
|
|
56
|
-
}
|
|
57
|
-
if (param.right.type !== AST_NODE_TYPES.Literal) {
|
|
58
|
-
throw new WorkflowSyntaxError('The default value must be a literal', param.right.loc);
|
|
52
|
+
if (param.optional) {
|
|
53
|
+
return { name: param.name, default: null };
|
|
59
54
|
}
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
typeof param.right.value === 'boolean' ||
|
|
63
|
-
param.right.value === null)) {
|
|
64
|
-
throw new WorkflowSyntaxError('The default value must be a string, number, boolean or null', param.left.loc);
|
|
55
|
+
else {
|
|
56
|
+
return { name: param.name };
|
|
65
57
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
default: param.right.value,
|
|
69
|
-
};
|
|
58
|
+
case AST_NODE_TYPES.AssignmentPattern:
|
|
59
|
+
return parseSubworkflowDefaultArgument(param);
|
|
70
60
|
default:
|
|
71
61
|
throw new WorkflowSyntaxError('Function parameter must be an identifier or an assignment', param.loc);
|
|
72
62
|
}
|
|
@@ -74,3 +64,31 @@ function parseSubworkflows(node) {
|
|
|
74
64
|
const steps = parseStatement(node.body, {});
|
|
75
65
|
return new SubworkflowAST(node.id.name, steps, workflowParams);
|
|
76
66
|
}
|
|
67
|
+
function parseSubworkflowDefaultArgument(param) {
|
|
68
|
+
if (param.left.type !== AST_NODE_TYPES.Identifier) {
|
|
69
|
+
throw new WorkflowSyntaxError('The default value must be an identifier', param.left.loc);
|
|
70
|
+
}
|
|
71
|
+
if (param.left.optional) {
|
|
72
|
+
throw new WorkflowSyntaxError("Parameter can't have default value and initializer", param.left.loc);
|
|
73
|
+
}
|
|
74
|
+
const name = param.left.name;
|
|
75
|
+
let defaultValue;
|
|
76
|
+
if (param.right.type === AST_NODE_TYPES.Identifier &&
|
|
77
|
+
param.right.name === 'undefined') {
|
|
78
|
+
defaultValue = null;
|
|
79
|
+
}
|
|
80
|
+
else if (param.right.type === AST_NODE_TYPES.Literal &&
|
|
81
|
+
(typeof param.right.value === 'string' ||
|
|
82
|
+
typeof param.right.value === 'number' ||
|
|
83
|
+
typeof param.right.value === 'boolean' ||
|
|
84
|
+
param.right.value === null)) {
|
|
85
|
+
defaultValue = param.right.value;
|
|
86
|
+
}
|
|
87
|
+
else {
|
|
88
|
+
throw new WorkflowSyntaxError('The default value must be a literal number, string, boolean, null, or undefined', param.right.loc);
|
|
89
|
+
}
|
|
90
|
+
return {
|
|
91
|
+
name,
|
|
92
|
+
default: defaultValue,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
@@ -3,6 +3,7 @@ import { StepName, WorkflowStepAST } from '../ast/steps.js';
|
|
|
3
3
|
export interface ParsingContext {
|
|
4
4
|
breakTarget?: StepName;
|
|
5
5
|
continueTarget?: StepName;
|
|
6
|
+
finalizerTargets?: StepName[];
|
|
6
7
|
}
|
|
7
8
|
export declare function parseStatement(node: TSESTree.Statement, ctx: ParsingContext, postSteps?: WorkflowStepAST[]): WorkflowStepAST[];
|
|
8
9
|
//# sourceMappingURL=statements.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../src/transpiler/statements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,
|
|
1
|
+
{"version":3,"file":"statements.d.ts","sourceRoot":"","sources":["../../src/transpiler/statements.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,QAAQ,EAAE,MAAM,sCAAsC,CAAA;AAC/E,OAAO,EAUL,QAAQ,EAMR,eAAe,EAChB,MAAM,iBAAiB,CAAA;AA6BxB,MAAM,WAAW,cAAc;IAE7B,WAAW,CAAC,EAAE,QAAQ,CAAA;IAEtB,cAAc,CAAC,EAAE,QAAQ,CAAA;IAKzB,gBAAgB,CAAC,EAAE,QAAQ,EAAE,CAAA;CAC9B;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,QAAQ,CAAC,SAAS,EACxB,GAAG,EAAE,cAAc,EACnB,SAAS,CAAC,EAAE,eAAe,EAAE,GAC5B,eAAe,EAAE,CAGnB"}
|