@descent-vtt/spec-guard 0.3.0 → 0.4.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/runner.js CHANGED
@@ -5,16 +5,17 @@
5
5
  * number, an unknown boolean or a path escaping the root is an error, never a
6
6
  * silently-passing assertion. A spec that lies is worse than no spec at all.
7
7
  */
8
- import { promises as fs } from 'node:fs';
9
- import path from 'node:path';
10
- import { createCachedEngine, enumerateCandidates, resolveEngine, runSearches, } from './engine.js';
11
- import { createExcludeMatcher, expandSpecPatterns, toPosix } from './glob.js';
12
- import { ANALYSABLE_EXTENSIONS, createImportIndex, resolveSpecifier, } from './imports.js';
13
- import { parseDirectives } from './parser.js';
8
+ import { promises as fs } from "node:fs";
9
+ import path from "node:path";
10
+ import { createCachedEngine, enumerateCandidates, resolveEngine, runSearches, } from "./engine.js";
11
+ import { createExcludeMatcher, expandSpecPatterns, toPosix } from "./glob.js";
12
+ import { ANALYSABLE_EXTENSIONS, createImportIndex, resolveSpecifier, } from "./imports.js";
13
+ import { parseDirectives } from "./parser.js";
14
+ import { createScope, DEFAULT_SCOPE, EMPTY_LEDGER, UNCERTAIN_REASONS, } from "./scope.js";
14
15
  export const DEFAULT_MAX_SNIPPETS = 5;
15
16
  export const DEFAULT_CONCURRENCY = 8;
16
- const TRUE_VALUES = new Set(['true', '1', 'yes', 'on']);
17
- const FALSE_VALUES = new Set(['false', '0', 'no', 'off']);
17
+ const TRUE_VALUES = new Set(["true", "1", "yes", "on"]);
18
+ const FALSE_VALUES = new Set(["false", "0", "no", "off"]);
18
19
  function parseBoolean(value, attribute) {
19
20
  if (value === undefined)
20
21
  return false;
@@ -55,53 +56,63 @@ function normalizeTarget(target, root, attribute) {
55
56
  }
56
57
  const absolute = path.resolve(root, target);
57
58
  const relative = path.relative(root, absolute);
58
- if (relative.startsWith('..')) {
59
+ if (relative.startsWith("..")) {
59
60
  throw new Error(`Attribute "${attribute}" escapes the root directory: "${target}".`);
60
61
  }
61
- return toPosix(relative) || '.';
62
+ return toPosix(relative) || ".";
62
63
  }
63
64
  function plural(count) {
64
- return count === 1 ? '' : 'es';
65
+ return count === 1 ? "" : "es";
65
66
  }
66
67
  function describeBounds(bounds) {
67
68
  const { min, max } = bounds;
68
69
  if (min !== undefined && max !== undefined) {
69
- return min === max ? `exactly ${min} match${plural(min)}` : `between ${min} and ${max} matches`;
70
+ return min === max
71
+ ? `exactly ${min} match${plural(min)}`
72
+ : `between ${min} and ${max} matches`;
70
73
  }
71
74
  if (min !== undefined)
72
75
  return `at least ${min} match${plural(min)}`;
73
76
  if (max !== undefined)
74
- return max === 0 ? 'no matches' : `at most ${max} match${plural(max)}`;
77
+ return max === 0 ? "no matches" : `at most ${max} match${plural(max)}`;
75
78
  /* c8 ignore next */
76
- return 'any number of matches';
79
+ return "any number of matches";
77
80
  }
78
81
  /** Prose form used in the assertion description ("must appear at most 3 times"). */
79
82
  function describeExpectation(bounds) {
80
83
  const { min, max } = bounds;
81
- const times = (value) => `${value} time${value === 1 ? '' : 's'}`;
84
+ const times = (value) => `${value} time${value === 1 ? "" : "s"}`;
82
85
  if (min !== undefined && max !== undefined) {
83
- return min === max ? `must appear exactly ${times(min)}` : `must appear between ${min} and ${max} times`;
86
+ return min === max
87
+ ? `must appear exactly ${times(min)}`
88
+ : `must appear between ${min} and ${max} times`;
84
89
  }
85
90
  if (min !== undefined)
86
91
  return `must appear at least ${times(min)}`;
87
92
  if (max === 0)
88
- return 'must not appear';
93
+ return "must not appear";
89
94
  /* c8 ignore next */
90
- return max === undefined ? 'may appear any number of times' : `must appear at most ${times(max)}`;
95
+ return max === undefined
96
+ ? "may appear any number of times"
97
+ : `must appear at most ${times(max)}`;
91
98
  }
92
99
  /** Prose for an import claim: "must not import", "must import at least 2 files". */
93
100
  function describeImportExpectation(bounds) {
94
101
  const { min, max } = bounds;
95
- const files = (value) => `${value} file${value === 1 ? '' : 's'}`;
102
+ const files = (value) => `${value} file${value === 1 ? "" : "s"}`;
96
103
  if (max === 0 && min === undefined)
97
- return 'must not import';
104
+ return "must not import";
98
105
  if (min !== undefined && max !== undefined) {
99
- return min === max ? `must import from exactly ${files(min)}` : `must import from between ${min} and ${max} files`;
106
+ return min === max
107
+ ? `must import from exactly ${files(min)}`
108
+ : `must import from between ${min} and ${max} files`;
100
109
  }
101
110
  if (min !== undefined)
102
111
  return `must import from at least ${files(min)}`;
103
112
  /* c8 ignore next */
104
- return max === undefined ? 'may import' : `must import from at most ${files(max)}`;
113
+ return max === undefined
114
+ ? "may import"
115
+ : `must import from at most ${files(max)}`;
105
116
  }
106
117
  function satisfies(count, bounds) {
107
118
  if (bounds.min !== undefined && count < bounds.min)
@@ -117,9 +128,9 @@ export function resolveDirective(directive, context) {
117
128
  error: { location, raw: directive.raw, message },
118
129
  });
119
130
  try {
120
- const reason = attributes['reason'];
121
- if (kind === 'assert-present') {
122
- const files = splitList(attributes['file']).map((file) => normalizeTarget(file, context.root, 'file'));
131
+ const reason = attributes["reason"];
132
+ if (kind === "assert-present") {
133
+ const files = splitList(attributes["file"]).map((file) => normalizeTarget(file, context.root, "file"));
123
134
  if (files.length === 0) {
124
135
  return fail('@assert-present requires a file="..." attribute.');
125
136
  }
@@ -127,7 +138,7 @@ export function resolveDirective(directive, context) {
127
138
  assertion: {
128
139
  kind,
129
140
  location,
130
- description: `${files.join(', ')} must exist`,
141
+ description: `${files.join(", ")} must exist`,
131
142
  reason,
132
143
  targets: [],
133
144
  files,
@@ -136,56 +147,66 @@ export function resolveDirective(directive, context) {
136
147
  },
137
148
  };
138
149
  }
139
- const isImportKind = kind === 'assert-import-absence' || kind === 'assert-import-count';
140
- const subject = isImportKind ? 'module' : 'symbol';
150
+ const isImportKind = kind === "assert-import-absence" || kind === "assert-import-count";
151
+ const subject = isImportKind ? "module" : "symbol";
141
152
  const symbol = attributes[subject];
142
153
  if (symbol === undefined || symbol.length === 0) {
143
154
  return fail(`@${kind} requires a non-empty ${subject}="..." attribute.`);
144
155
  }
145
- const comments = (attributes['comments'] ?? 'ignore').trim().toLowerCase();
146
- if (comments !== 'ignore' && comments !== 'include') {
147
- return fail(`Attribute "comments" must be ignore or include, got "${attributes['comments']}".`);
156
+ const comments = (attributes["comments"] ?? "ignore").trim().toLowerCase();
157
+ if (comments !== "ignore" && comments !== "include") {
158
+ return fail(`Attribute "comments" must be ignore or include, got "${attributes["comments"]}".`);
148
159
  }
149
- const rawTargets = splitList(attributes['target']);
150
- const targets = (rawTargets.length > 0 ? rawTargets : ['.']).map((target) => normalizeTarget(target, context.root, 'target'));
160
+ const rawTargets = splitList(attributes["target"]);
161
+ const targets = (rawTargets.length > 0 ? rawTargets : ["."]).map((target) => normalizeTarget(target, context.root, "target"));
151
162
  const bounds = {};
152
- if (kind === 'assert-absence' || kind === 'assert-import-absence') {
153
- if (attributes['expected'] !== undefined && attributes['max'] !== undefined) {
163
+ if (kind === "assert-absence" || kind === "assert-import-absence") {
164
+ if (attributes["expected"] !== undefined &&
165
+ attributes["max"] !== undefined) {
154
166
  return fail(`@${kind} accepts either expected="..." or max="...", not both.`);
155
167
  }
156
- const limit = attributes['expected'] ?? attributes['max'];
157
- bounds.max = limit === undefined ? 0 : parseCount(limit, attributes['expected'] !== undefined ? 'expected' : 'max');
168
+ const limit = attributes["expected"] ?? attributes["max"];
169
+ bounds.max =
170
+ limit === undefined
171
+ ? 0
172
+ : parseCount(limit, attributes["expected"] !== undefined ? "expected" : "max");
158
173
  }
159
174
  else {
160
- const expected = attributes['expected'];
175
+ const expected = attributes["expected"];
161
176
  if (expected !== undefined) {
162
- if (attributes['min'] !== undefined || attributes['max'] !== undefined) {
177
+ if (attributes["min"] !== undefined ||
178
+ attributes["max"] !== undefined) {
163
179
  return fail(`@${kind} accepts either expected="..." or min/max, not both.`);
164
180
  }
165
- const value = parseCount(expected, 'expected');
181
+ const value = parseCount(expected, "expected");
166
182
  bounds.min = value;
167
183
  bounds.max = value;
168
184
  }
169
185
  else {
170
- if (attributes['min'] === undefined && attributes['max'] === undefined) {
186
+ if (attributes["min"] === undefined &&
187
+ attributes["max"] === undefined) {
171
188
  return fail(`@${kind} requires expected="...", min="..." or max="...".`);
172
189
  }
173
- if (attributes['min'] !== undefined)
174
- bounds.min = parseCount(attributes['min'], 'min');
175
- if (attributes['max'] !== undefined)
176
- bounds.max = parseCount(attributes['max'], 'max');
177
- if (bounds.min !== undefined && bounds.max !== undefined && bounds.min > bounds.max) {
190
+ if (attributes["min"] !== undefined)
191
+ bounds.min = parseCount(attributes["min"], "min");
192
+ if (attributes["max"] !== undefined)
193
+ bounds.max = parseCount(attributes["max"], "max");
194
+ if (bounds.min !== undefined &&
195
+ bounds.max !== undefined &&
196
+ bounds.min > bounds.max) {
178
197
  return fail(`min="${bounds.min}" is greater than max="${bounds.max}".`);
179
198
  }
180
199
  }
181
200
  }
182
201
  if (isImportKind) {
183
- const scope = targets.join(', ');
184
- const excludeGlobs = splitList(attributes['exclude']);
185
- const except = excludeGlobs.length > 0 ? ` (excluding ${excludeGlobs.join(', ')})` : '';
186
- const includeTypes = (attributes['types'] ?? 'include').trim().toLowerCase() !== 'ignore';
187
- if (!['include', 'ignore'].includes((attributes['types'] ?? 'include').trim().toLowerCase())) {
188
- return fail(`Attribute "types" must be include or ignore, got "${attributes['types']}".`);
202
+ const scope = targets.join(", ");
203
+ const excludeGlobs = splitList(attributes["exclude"]);
204
+ const except = excludeGlobs.length > 0
205
+ ? ` (excluding ${excludeGlobs.join(", ")})`
206
+ : "";
207
+ const includeTypes = (attributes["types"] ?? "include").trim().toLowerCase() !== "ignore";
208
+ if (!["include", "ignore"].includes((attributes["types"] ?? "include").trim().toLowerCase())) {
209
+ return fail(`Attribute "types" must be include or ignore, got "${attributes["types"]}".`);
189
210
  }
190
211
  return {
191
212
  assertion: {
@@ -207,6 +228,7 @@ export function resolveDirective(directive, context) {
207
228
  // text search. It is set true because it is true: the tokenizer
208
229
  // reads imports, so a module named in a comment was never a match.
209
230
  ignoreComments: true,
231
+ scope: context.scope ?? DEFAULT_SCOPE,
210
232
  excludeFiles: context.excludeFiles,
211
233
  },
212
234
  imports: { modules: splitList(symbol), includeTypes },
@@ -215,12 +237,13 @@ export function resolveDirective(directive, context) {
215
237
  };
216
238
  }
217
239
  const search = {
218
- regex: parseBoolean(attributes['regex'], 'regex'),
219
- word: parseBoolean(attributes['word'], 'word'),
220
- ignoreCase: parseBoolean(attributes['ignore-case'], 'ignore-case'),
221
- globs: splitList(attributes['glob']),
222
- excludeGlobs: splitList(attributes['exclude']),
223
- ignoreComments: comments !== 'include',
240
+ regex: parseBoolean(attributes["regex"], "regex"),
241
+ word: parseBoolean(attributes["word"], "word"),
242
+ ignoreCase: parseBoolean(attributes["ignore-case"], "ignore-case"),
243
+ globs: splitList(attributes["glob"]),
244
+ excludeGlobs: splitList(attributes["exclude"]),
245
+ ignoreComments: comments !== "include",
246
+ scope: context.scope ?? DEFAULT_SCOPE,
224
247
  excludeFiles: context.excludeFiles,
225
248
  };
226
249
  if (search.regex) {
@@ -231,8 +254,10 @@ export function resolveDirective(directive, context) {
231
254
  return fail(`Invalid regular expression: ${error instanceof Error ? error.message : String(error)}`);
232
255
  }
233
256
  }
234
- const scope = targets.join(', ');
235
- const except = search.excludeGlobs.length > 0 ? ` (excluding ${search.excludeGlobs.join(', ')})` : '';
257
+ const scope = targets.join(", ");
258
+ const except = search.excludeGlobs.length > 0
259
+ ? ` (excluding ${search.excludeGlobs.join(", ")})`
260
+ : "";
236
261
  return {
237
262
  assertion: {
238
263
  kind,
@@ -274,8 +299,9 @@ async function prepareAssertion(assertion, options) {
274
299
  warnings,
275
300
  commentMatches: 0,
276
301
  unclassifiedFiles: 0,
302
+ scope: EMPTY_LEDGER,
277
303
  };
278
- if (assertion.kind === 'assert-present') {
304
+ if (assertion.kind === "assert-present") {
279
305
  const missing = [];
280
306
  for (const file of assertion.files) {
281
307
  if (!(await pathExists(path.resolve(options.root, file))))
@@ -287,8 +313,8 @@ async function prepareAssertion(assertion, options) {
287
313
  ok: missing.length === 0,
288
314
  actual,
289
315
  message: missing.length === 0
290
- ? `all ${assertion.files.length} referenced ${assertion.files.length === 1 ? 'path exists' : 'paths exist'}`
291
- : `missing: ${missing.join(', ')}`,
316
+ ? `all ${assertion.files.length} referenced ${assertion.files.length === 1 ? "path exists" : "paths exist"}`
317
+ : `missing: ${missing.join(", ")}`,
292
318
  matches: [],
293
319
  durationMs: performance.now() - startedAt,
294
320
  };
@@ -304,14 +330,14 @@ async function prepareAssertion(assertion, options) {
304
330
  assertion.missingTargets.push(target);
305
331
  }
306
332
  if (assertion.missingTargets.length > 0) {
307
- warnings.push(`target path${assertion.missingTargets.length === 1 ? '' : 's'} not found: ${assertion.missingTargets.join(', ')}`);
333
+ warnings.push(`target path${assertion.missingTargets.length === 1 ? "" : "s"} not found: ${assertion.missingTargets.join(", ")}`);
308
334
  }
309
335
  if (!options.allowMissingTargets && assertion.missingTargets.length > 0) {
310
336
  return {
311
337
  ...base,
312
338
  ok: false,
313
339
  actual: 0,
314
- message: `target path${assertion.missingTargets.length === 1 ? ' does' : 's do'} not exist: ${assertion.missingTargets.join(', ')}`,
340
+ message: `target path${assertion.missingTargets.length === 1 ? " does" : "s do"} not exist: ${assertion.missingTargets.join(", ")}`,
315
341
  matches: [],
316
342
  durationMs: performance.now() - startedAt,
317
343
  };
@@ -323,19 +349,31 @@ async function prepareAssertion(assertion, options) {
323
349
  targets: existingTargets,
324
350
  options: assertion.search,
325
351
  },
326
- finish: (search) => ({
327
- ...base,
328
- ok: satisfies(search.count, assertion.bounds),
329
- actual: search.count,
330
- message: `expected ${describeBounds(assertion.bounds)}, found ${search.count}`,
331
- matches: search.matches.slice(0, options.maxSnippets),
332
- // Carried as numbers, not prose, so the reporter can total them across a
333
- // run and JSON consumers can act on them.
334
- commentMatches: search.commentMatches,
335
- unclassifiedFiles: search.unclassifiedFiles,
336
- engine: search.engine,
337
- durationMs: performance.now() - startedAt,
338
- }),
352
+ finish: (search) => {
353
+ // A file that could not be read, or whose bytes are not text but did
354
+ // contain the symbol, is a hole in the answer rather than a detail of it.
355
+ // The count is still reported, because it is still true of everything
356
+ // that was read; --strict is for runs where "true of what we read" is not
357
+ // good enough.
358
+ const gaps = search.scope.skipped.filter((entry) => UNCERTAIN_REASONS.has(entry.reason));
359
+ const strictFailure = options.strictTargets && gaps.length > 0;
360
+ return {
361
+ ...base,
362
+ ok: satisfies(search.count, assertion.bounds) && !strictFailure,
363
+ actual: search.count,
364
+ message: strictFailure
365
+ ? `expected ${describeBounds(assertion.bounds)}, found ${search.count}, and ${gaps.length} file${gaps.length === 1 ? "" : "s"} could not be inspected`
366
+ : `expected ${describeBounds(assertion.bounds)}, found ${search.count}`,
367
+ matches: search.matches.slice(0, options.maxSnippets),
368
+ // Carried as numbers, not prose, so the reporter can total them across a
369
+ // run and JSON consumers can act on them.
370
+ commentMatches: search.commentMatches,
371
+ unclassifiedFiles: search.unclassifiedFiles,
372
+ scope: search.scope,
373
+ engine: search.engine,
374
+ durationMs: performance.now() - startedAt,
375
+ };
376
+ },
339
377
  };
340
378
  }
341
379
  /**
@@ -355,11 +393,11 @@ async function executeImportAssertion(assertion, options, base, warnings, starte
355
393
  assertion.missingTargets.push(target);
356
394
  }
357
395
  if (assertion.missingTargets.length > 0) {
358
- warnings.push(`target path${assertion.missingTargets.length === 1 ? '' : 's'} not found: ${assertion.missingTargets.join(', ')}`);
396
+ warnings.push(`target path${assertion.missingTargets.length === 1 ? "" : "s"} not found: ${assertion.missingTargets.join(", ")}`);
359
397
  }
360
398
  const enumeration = await enumerateCandidates({
361
399
  root: options.root,
362
- symbol: '',
400
+ symbol: "",
363
401
  targets: existingTargets,
364
402
  options: assertion.search,
365
403
  });
@@ -386,13 +424,13 @@ async function executeImportAssertion(assertion, options, base, warnings, starte
386
424
  file: file.relativePath,
387
425
  line: hit.line,
388
426
  column: hit.column,
389
- text: `${hit.kind === 'export' ? 'export' : 'import'} ${hit.specifier}`,
427
+ text: `${hit.kind === "export" ? "export" : "import"} ${hit.specifier}`,
390
428
  count: 1,
391
429
  });
392
430
  }
393
431
  }
394
432
  if (unresolved.length > 0) {
395
- warnings.push(`${unresolved.length} module reference${unresolved.length === 1 ? '' : 's'} could not be resolved statically`, ...unresolved.slice(0, options.maxSnippets).map((entry) => ` ${entry}`));
433
+ warnings.push(`${unresolved.length} module reference${unresolved.length === 1 ? "" : "s"} could not be resolved statically`, ...unresolved.slice(0, options.maxSnippets).map((entry) => ` ${entry}`));
396
434
  }
397
435
  const missingFailure = !options.allowMissingTargets && assertion.missingTargets.length > 0;
398
436
  const strictFailure = missingFailure || (options.strictTargets && unresolved.length > 0);
@@ -402,7 +440,7 @@ async function executeImportAssertion(assertion, options, base, warnings, starte
402
440
  ok,
403
441
  actual: matches.length,
404
442
  message: missingFailure
405
- ? `target path${assertion.missingTargets.length === 1 ? ' does' : 's do'} not exist: ${assertion.missingTargets.join(', ')}`
443
+ ? `target path${assertion.missingTargets.length === 1 ? " does" : "s do"} not exist: ${assertion.missingTargets.join(", ")}`
406
444
  : strictFailure
407
445
  ? `expected ${describeBounds(assertion.bounds)}, found ${matches.length}, and ${unresolved.length} reference(s) could not be resolved`
408
446
  : `expected ${describeBounds(assertion.bounds)}, found ${matches.length}`,
@@ -413,7 +451,7 @@ async function executeImportAssertion(assertion, options, base, warnings, starte
413
451
  /** Executes a single resolved assertion. */
414
452
  export async function executeAssertion(assertion, options) {
415
453
  const prepared = await prepareAssertion(assertion, options);
416
- if (!('request' in prepared))
454
+ if (!("request" in prepared))
417
455
  return prepared;
418
456
  return prepared.finish(await options.engine.search(prepared.request));
419
457
  }
@@ -424,7 +462,13 @@ export async function executeAssertion(assertion, options) {
424
462
  */
425
463
  function groupKey(request) {
426
464
  const { options } = request;
427
- return JSON.stringify([request.targets, options.regex, options.word, options.ignoreCase, options.globs]);
465
+ return JSON.stringify([
466
+ request.targets,
467
+ options.regex,
468
+ options.word,
469
+ options.ignoreCase,
470
+ options.globs,
471
+ ]);
428
472
  }
429
473
  /** Reads, parses and executes every directive found in the given spec files. */
430
474
  export async function runSpecGuard(options) {
@@ -433,16 +477,17 @@ export async function runSpecGuard(options) {
433
477
  const maxSnippets = options.maxSnippets ?? DEFAULT_MAX_SNIPPETS;
434
478
  const strictTargets = options.strictTargets ?? false;
435
479
  const allowMissingTargets = options.allowMissingTargets ?? false;
480
+ const scope = createScope(options.defaultSkips ?? true);
436
481
  const specFiles = await expandSpecPatterns(options.patterns, root);
437
482
  const excludeFiles = new Set(options.includeSpecs ? [] : specFiles.map((file) => path.resolve(file)));
438
483
  const directives = [];
439
484
  const errors = [];
440
485
  for (const file of specFiles) {
441
486
  const relativeFile = toPosix(path.relative(root, file)) || toPosix(file);
442
- const source = await fs.readFile(file, 'utf8').catch((error) => {
487
+ const source = await fs.readFile(file, "utf8").catch((error) => {
443
488
  errors.push({
444
489
  location: { file, relativeFile, line: 1, column: 1 },
445
- raw: '',
490
+ raw: "",
446
491
  message: `Unable to read spec file: ${error instanceof Error ? error.message : String(error)}`,
447
492
  });
448
493
  return null;
@@ -455,13 +500,13 @@ export async function runSpecGuard(options) {
455
500
  }
456
501
  const assertions = [];
457
502
  for (const directive of directives) {
458
- const resolved = resolveDirective(directive, { root, excludeFiles });
459
- if ('error' in resolved)
503
+ const resolved = resolveDirective(directive, { root, excludeFiles, scope });
504
+ if ("error" in resolved)
460
505
  errors.push(resolved.error);
461
506
  else
462
507
  assertions.push(resolved.assertion);
463
508
  }
464
- const engine = createCachedEngine(await resolveEngine(options.engine ?? 'auto'));
509
+ const engine = createCachedEngine(await resolveEngine(options.engine ?? "auto"));
465
510
  const executeOptions = {
466
511
  root,
467
512
  engine,
@@ -486,7 +531,7 @@ export async function runSpecGuard(options) {
486
531
  const prepared = await Promise.all(assertions.map((assertion) => prepareAssertion(assertion, executeOptions)));
487
532
  const groups = new Map();
488
533
  prepared.forEach((entry, index) => {
489
- if (!('request' in entry)) {
534
+ if (!("request" in entry)) {
490
535
  results[index] = entry;
491
536
  return;
492
537
  }
@@ -525,7 +570,7 @@ export async function runSpecGuard(options) {
525
570
  return {
526
571
  ok: failed === 0 && errors.length === 0,
527
572
  root,
528
- engine: warnings.length > 0 ? 'javascript' : engine.name,
573
+ engine: warnings.length > 0 ? "javascript" : engine.name,
529
574
  durationMs: performance.now() - startedAt,
530
575
  summary: {
531
576
  specs: specFiles.length,
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,aAAa,EACb,WAAW,GAIZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC9E,OAAO,EACL,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,GAEjB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAa9C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAiCrC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AACxD,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;AAE1D,SAAS,YAAY,CAAC,KAAyB,EAAE,SAAiB;IAChE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACtC,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC9C,IAAI,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC;QAAE,OAAO,KAAK,CAAC;IAC/C,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,iCAAiC,KAAK,IAAI,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,UAAU,CAAC,KAAa,EAAE,SAAiB;IAClD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAChC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,0CAA0C,KAAK,IAAI,CAAC,CAAC;IAC9F,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,SAAS,CAAC,KAAyB;IAC1C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACnC,OAAO,KAAK;SACT,KAAK,CAAC,QAAQ,CAAC;SACf,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;SAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACvC,CAAC;AAED,kEAAkE;AAClE,SAAS,eAAe,CAAC,MAAc,EAAE,IAAY,EAAE,SAAiB;IACtE,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9D,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,sCAAsC,MAAM,IAAI,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC/C,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,cAAc,SAAS,kCAAkC,MAAM,IAAI,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,OAAO,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;AAClC,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAC5B,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,WAAW,GAAG,SAAS,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,QAAQ,GAAG,UAAU,CAAC;IAClG,CAAC;IACD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,YAAY,GAAG,SAAS,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACpE,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,GAAG,SAAS,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IAC9F,oBAAoB;IACpB,OAAO,uBAAuB,CAAC;AACjC,CAAC;AAED,oFAAoF;AACpF,SAAS,mBAAmB,CAAC,MAAc;IACzC,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAClF,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,uBAAuB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,GAAG,QAAQ,GAAG,QAAQ,CAAC;IAC3G,CAAC;IACD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,wBAAwB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACnE,IAAI,GAAG,KAAK,CAAC;QAAE,OAAO,iBAAiB,CAAC;IACxC,oBAAoB;IACpB,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,gCAAgC,CAAC,CAAC,CAAC,uBAAuB,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AACpG,CAAC;AAED,oFAAoF;AACpF,SAAS,yBAAyB,CAAC,MAAc;IAC/C,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IAC5B,MAAM,KAAK,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,GAAG,KAAK,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAClF,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,iBAAiB,CAAC;IAC7D,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QAC3C,OAAO,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,4BAA4B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACrH,CAAC;IACD,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,6BAA6B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACxE,oBAAoB;IACpB,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,4BAA4B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;AACrF,CAAC;AAED,SAAS,SAAS,CAAC,KAAa,EAAE,MAAc;IAC9C,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACjE,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,KAAK,GAAG,MAAM,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACjE,OAAO,IAAI,CAAC;AACd,CAAC;AAOD,qEAAqE;AACrE,MAAM,UAAU,gBAAgB,CAC9B,SAAoB,EACpB,OAAuB;IAEvB,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,SAAS,CAAC;IACjD,MAAM,IAAI,GAAG,CAAC,OAAe,EAA6B,EAAE,CAAC,CAAC;QAC5D,KAAK,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,GAAG,EAAE,OAAO,EAAE;KACjD,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAEpC,IAAI,IAAI,KAAK,gBAAgB,EAAE,CAAC;YAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YACvG,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACvB,OAAO,IAAI,CAAC,kDAAkD,CAAC,CAAC;YAClE,CAAC;YACD,OAAO;gBACL,SAAS,EAAE;oBACT,IAAI;oBACJ,QAAQ;oBACR,WAAW,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa;oBAC7C,MAAM;oBACN,OAAO,EAAE,EAAE;oBACX,KAAK;oBACL,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,MAAM,EAAE;oBAChD,cAAc,EAAE,EAAE;iBACnB;aACF,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,KAAK,uBAAuB,IAAI,IAAI,KAAK,qBAAqB,CAAC;QACxF,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC;QACnD,MAAM,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChD,OAAO,IAAI,CAAC,IAAI,IAAI,yBAAyB,OAAO,mBAAmB,CAAC,CAAC;QAC3E,CAAC;QAED,MAAM,QAAQ,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC3E,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YACpD,OAAO,IAAI,CAAC,wDAAwD,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAClG,CAAC;QAED,MAAM,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QACnD,MAAM,OAAO,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAC1E,eAAe,CAAC,MAAM,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAChD,CAAC;QAEF,MAAM,MAAM,GAAW,EAAE,CAAC;QAC1B,IAAI,IAAI,KAAK,gBAAgB,IAAI,IAAI,KAAK,uBAAuB,EAAE,CAAC;YAClE,IAAI,UAAU,CAAC,UAAU,CAAC,KAAK,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC5E,OAAO,IAAI,CAAC,IAAI,IAAI,wDAAwD,CAAC,CAAC;YAChF,CAAC;YACD,MAAM,KAAK,GAAG,UAAU,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;YAC1D,MAAM,CAAC,GAAG,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtH,CAAC;aAAM,CAAC;YACN,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;YACxC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;gBAC3B,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;oBACvE,OAAO,IAAI,CAAC,IAAI,IAAI,sDAAsD,CAAC,CAAC;gBAC9E,CAAC;gBACD,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;gBAC/C,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;gBACnB,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS,EAAE,CAAC;oBACvE,OAAO,IAAI,CAAC,IAAI,IAAI,mDAAmD,CAAC,CAAC;gBAC3E,CAAC;gBACD,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS;oBAAE,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBACvF,IAAI,UAAU,CAAC,KAAK,CAAC,KAAK,SAAS;oBAAE,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC,CAAC;gBACvF,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,EAAE,CAAC;oBACpF,OAAO,IAAI,CAAC,QAAQ,MAAM,CAAC,GAAG,0BAA0B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;gBAC1E,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjC,MAAM,YAAY,GAAG,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,QAAQ,CAAC;YAC1F,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;gBAC7F,OAAO,IAAI,CAAC,qDAAqD,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5F,CAAC;YACD,OAAO;gBACL,SAAS,EAAE;oBACT,IAAI;oBACJ,QAAQ;oBACR,WAAW,EAAE,GAAG,KAAK,IAAI,yBAAyB,CAAC,MAAM,CAAC,KAAK,MAAM,IAAI,MAAM,EAAE;oBACjF,MAAM;oBACN,MAAM;oBACN,OAAO;oBACP,KAAK,EAAE,EAAE;oBACT,MAAM;oBACN,MAAM,EAAE;wBACN,KAAK,EAAE,KAAK;wBACZ,IAAI,EAAE,KAAK;wBACX,UAAU,EAAE,KAAK;wBACjB,KAAK,EAAE,EAAE;wBACT,YAAY;wBACZ,qEAAqE;wBACrE,gEAAgE;wBAChE,mEAAmE;wBACnE,cAAc,EAAE,IAAI;wBACpB,YAAY,EAAE,OAAO,CAAC,YAAY;qBACnC;oBACD,OAAO,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE;oBACrD,cAAc,EAAE,EAAE;iBACnB;aACF,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAkB;YAC5B,KAAK,EAAE,YAAY,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;YACjD,IAAI,EAAE,YAAY,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;YAC9C,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,aAAa,CAAC;YAClE,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACpC,YAAY,EAAE,SAAS,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;YAC9C,cAAc,EAAE,QAAQ,KAAK,SAAS;YACtC,YAAY,EAAE,OAAO,CAAC,YAAY;SACnC,CAAC;QAEF,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,IAAI,CAAC;gBACH,IAAI,MAAM,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,IAAI,CAAC,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACvG,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,eAAe,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACtG,OAAO;YACL,SAAS,EAAE;gBACT,IAAI;gBACJ,QAAQ;gBACR,WAAW,EAAE,IAAI,MAAM,KAAK,mBAAmB,CAAC,MAAM,CAAC,OAAO,KAAK,GAAG,MAAM,EAAE;gBAC9E,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,KAAK,EAAE,EAAE;gBACT,MAAM;gBACN,MAAM;gBACN,cAAc,EAAE,EAAE;aACnB;SACF,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,IAAI,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,SAAiB;IACzC,OAAO,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC;AAC/D,CAAC;AAuBD;;;GAGG;AACH,KAAK,UAAU,gBAAgB,CAC7B,SAAoB,EACpB,OAAuC;IAEvC,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,MAAM,IAAI,GAAkF;QAC1F,IAAI,EAAE,SAAS,CAAC,IAAI;QACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ;QAC5B,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,KAAK,EAAE,SAAS,CAAC,KAAK;QACtB,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,QAAQ;QACR,cAAc,EAAE,CAAC;QACjB,iBAAiB,EAAE,CAAC;KACrB,CAAC;IAEF,IAAI,SAAS,CAAC,IAAI,KAAK,gBAAgB,EAAE,CAAC;QACxC,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACnC,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChF,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;QACvD,OAAO;YACL,GAAG,IAAI;YACP,EAAE,EAAE,OAAO,CAAC,MAAM,KAAK,CAAC;YACxB,MAAM;YACN,OAAO,EACL,OAAO,CAAC,MAAM,KAAK,CAAC;gBAClB,CAAC,CAAC,OAAO,SAAS,CAAC,KAAK,CAAC,MAAM,eAAe,SAAS,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE;gBAC5G,CAAC,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACtC,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;SAC1C,CAAC;IACJ,CAAC;IAED,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACtB,OAAO,sBAAsB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/E,CAAC;IAED,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YAClF,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,QAAQ,CAAC,IAAI,CACX,cAAc,SAAS,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,eAAe,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxE,OAAO;YACL,GAAG,IAAI;YACP,EAAE,EAAE,KAAK;YACT,MAAM,EAAE,CAAC;YACT,OAAO,EAAE,cAAc,SAAS,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,eAAe,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACnI,OAAO,EAAE,EAAE;YACX,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;SAC1C,CAAC;IACJ,CAAC;IAED,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,MAAM,EAAE,SAAS,CAAC,MAAgB;YAClC,OAAO,EAAE,eAAe;YACxB,OAAO,EAAE,SAAS,CAAC,MAAuB;SAC3C;QACD,MAAM,EAAE,CAAC,MAAoB,EAAmB,EAAE,CAAC,CAAC;YAClD,GAAG,IAAI;YACP,EAAE,EAAE,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC;YAC7C,MAAM,EAAE,MAAM,CAAC,KAAK;YACpB,OAAO,EAAE,YAAY,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,MAAM,CAAC,KAAK,EAAE;YAC9E,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;YACrD,yEAAyE;YACzE,0CAA0C;YAC1C,cAAc,EAAE,MAAM,CAAC,cAAc;YACrC,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;YAC3C,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;SAC1C,CAAC;KACH,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,sBAAsB,CACnC,SAAoB,EACpB,OAAkE,EAClE,IAAmF,EACnF,QAAkB,EAClB,SAAiB;IAEjB,MAAM,KAAK,GAAG,SAAS,CAAC,OAA4C,CAAC;IACrE,MAAM,eAAe,GAAa,EAAE,CAAC;IACrC,KAAK,MAAM,MAAM,IAAI,SAAS,CAAC,OAAO,EAAE,CAAC;QACvC,IAAI,MAAM,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;;YAClF,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,QAAQ,CAAC,IAAI,CACX,cAAc,SAAS,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,eAAe,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACnH,CAAC;IACJ,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,mBAAmB,CAAC;QAC5C,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,eAAe;QACxB,OAAO,EAAE,SAAS,CAAC,MAAuB;KAC3C,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CACnD,qBAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CACjE,CAAC;IACF,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;IAC7D,IAAI,OAAO,GAAG,CAAC,EAAE,CAAC;QAChB,QAAQ,CAAC,IAAI,CACX,YAAY,UAAU,CAAC,MAAM,OAAO,WAAW,CAAC,KAAK,CAAC,MAAM,WAAW,OAAO,mCAAmC,CAClH,CAAC;IACJ,CAAC;IAED,MAAM,aAAa,GAAG,oBAAoB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1D,MAAM,OAAO,GAAoB,EAAE,CAAC;IACpC,MAAM,UAAU,GAAa,EAAE,CAAC;IAEhC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAErF,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YAClC,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9D,CAAC;QAED,MAAM,GAAG,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;YACjD,IAAI,SAAS,CAAC,QAAQ,IAAI,CAAC,KAAK,CAAC,YAAY;gBAAE,OAAO,KAAK,CAAC;YAC5D,OAAO,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;QACjF,CAAC,CAAC,CAAC;QACH,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,IAAI,CAAC,YAAY;gBACvB,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,MAAM,EAAE,GAAG,CAAC,MAAM;gBAClB,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE;gBACvE,KAAK,EAAE,CAAC;aACT,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1B,QAAQ,CAAC,IAAI,CACX,GAAG,UAAU,CAAC,MAAM,oBAAoB,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,mCAAmC,EAC7G,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CACzE,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,CAAC,OAAO,CAAC,mBAAmB,IAAI,SAAS,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3F,MAAM,aAAa,GAAG,cAAc,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzF,MAAM,EAAE,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC;IAEzE,OAAO;QACL,GAAG,IAAI;QACP,EAAE;QACF,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,cAAc;YACrB,CAAC,CAAC,cAAc,SAAS,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,eAAe,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC5H,CAAC,CAAC,aAAa;gBACb,CAAC,CAAC,YAAY,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,OAAO,CAAC,MAAM,SAAS,UAAU,CAAC,MAAM,qCAAqC;gBACtI,CAAC,CAAC,YAAY,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,OAAO,CAAC,MAAM,EAAE;QAC7E,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC;QAC9C,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;KAC1C,CAAC;AACJ,CAAC;AAED,4CAA4C;AAC5C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAoB,EAAE,OAAuB;IAClF,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5D,IAAI,CAAC,CAAC,SAAS,IAAI,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC9C,OAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,OAAsB;IACtC,MAAM,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC;IAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AAC3G,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAAmB;IACpD,MAAM,SAAS,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;IACpC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,oBAAoB,CAAC;IAChE,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC;IACrD,MAAM,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,IAAI,KAAK,CAAC;IAEjE,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAEtG,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,MAAM,MAAM,GAAqB,EAAE,CAAC;IAEpC,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;YACtE,MAAM,CAAC,IAAI,CAAC;gBACV,QAAQ,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE;gBACpD,GAAG,EAAE,EAAE;gBACP,OAAO,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;aAC/F,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC;QACH,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QAC/D,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAED,MAAM,UAAU,GAAgB,EAAE,CAAC;IACnC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,MAAM,QAAQ,GAAG,gBAAgB,CAAC,SAAS,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC;QACrE,IAAI,OAAO,IAAI,QAAQ;YAAE,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;;YAChD,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,MAAM,GAAG,kBAAkB,CAAC,MAAM,aAAa,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC;IACjF,MAAM,cAAc,GAAG;QACrB,IAAI;QACJ,MAAM;QACN,mBAAmB;QACnB,aAAa;QACb,WAAW;QACX,OAAO,EAAE,iBAAiB,EAAE;KAC7B,CAAC;IACF,MAAM,OAAO,GAAsB,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAEhE,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;QACrB,uEAAuE;QACvE,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,gBAAgB,CAAC,UAAU,CAAC,KAAK,CAAc,EAAE,cAAc,CAAC,CAAC;YACtF,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,CAAC,MAAM,GAAG,KAAK,GAAG,CAAC,CAAC;gBAC3B,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,CAChC,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,gBAAgB,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAC3E,CAAC;QAEF,MAAM,MAAM,GAAG,IAAI,GAAG,EAA+D,CAAC;QACtF,QAAQ,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;YAChC,IAAI,CAAC,CAAC,SAAS,IAAI,KAAK,CAAC,EAAE,CAAC;gBAC1B,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;gBACvB,OAAO;YACT,CAAC;YACD,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACpC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;;gBAC5C,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;QACrC,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,mBAAmB,EAAE,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC;QAC3G,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;YACvC,OAAO,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;gBAC/B,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChC,2DAA2D;gBAC3D,IAAI,CAAC,KAAK;oBAAE,OAAO;gBACnB,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,MAAM,EACN,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAC5C,CAAC;gBACF,KAAK,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE;oBAChC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAiB,CAAC,CAAC;gBAClF,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CACnC,CAAC,OAAO,EAAE,EAAE,CAAC,uDAAuD,OAAO,GAAG,CAC/E,CAAC;IAEF,+EAA+E;IAC/E,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACnB,CAAC,CAAC,QAAQ,CAAC,YAAY,KAAK,CAAC,CAAC,QAAQ,CAAC,YAAY;QACjD,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI;QACnC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,QAAQ,CAAC,YAAY;YACjD,CAAC,CAAC,CAAC,CAAC;YACJ,CAAC,CAAC,CAAC,CACR,CAAC;IAEF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC;IAC7D,OAAO;QACL,EAAE,EAAE,MAAM,KAAK,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QACvC,IAAI;QACJ,MAAM,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI;QACxD,UAAU,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,SAAS;QACzC,OAAO,EAAE;YACP,KAAK,EAAE,SAAS,CAAC,MAAM;YACvB,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,MAAM;YAC/B,MAAM;YACN,OAAO,EAAE,UAAU,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;SAC5C;QACD,OAAO;QACP,MAAM;QACN,QAAQ;QACR,SAAS,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;KACxF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}