@arghajit/playwright-pulse-report 0.3.3 → 0.3.5

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.
@@ -42,6 +42,7 @@ const path = __importStar(require("path"));
42
42
  const crypto_1 = require("crypto");
43
43
  const ua_parser_js_1 = __importDefault(require("ua-parser-js"));
44
44
  const os = __importStar(require("os"));
45
+ const compression_utils_1 = require("../utils/compression-utils");
45
46
  const convertStatus = (status, testCase) => {
46
47
  if ((testCase === null || testCase === void 0 ? void 0 : testCase.expectedStatus) === "failed") {
47
48
  return "failed";
@@ -63,19 +64,21 @@ const convertStatus = (status, testCase) => {
63
64
  };
64
65
  const TEMP_SHARD_FILE_PREFIX = ".pulse-shard-results-";
65
66
  const ATTACHMENTS_SUBDIR = "attachments";
66
- const INDIVIDUAL_REPORTS_SUBDIR = "pulse-results";
67
67
  class PlaywrightPulseReporter {
68
68
  constructor(options = {}) {
69
- var _a, _b, _c;
69
+ var _a, _b, _c, _d;
70
70
  this.results = [];
71
+ this._pendingTestEnds = [];
71
72
  this.baseOutputFile = "playwright-pulse-report.json";
73
+ this.individualReportsSubDir = "pulse-results";
72
74
  this.isSharded = false;
73
75
  this.shardIndex = undefined;
74
76
  this.options = options;
75
77
  this.baseOutputFile = (_a = options.outputFile) !== null && _a !== void 0 ? _a : this.baseOutputFile;
76
78
  this.outputDir = (_b = options.outputDir) !== null && _b !== void 0 ? _b : "pulse-report";
79
+ this.individualReportsSubDir = (_c = options.individualReportsSubDir) !== null && _c !== void 0 ? _c : "pulse-results";
77
80
  this.attachmentsDir = path.join(this.outputDir, ATTACHMENTS_SUBDIR);
78
- this.resetOnEachRun = (_c = options.resetOnEachRun) !== null && _c !== void 0 ? _c : true;
81
+ this.resetOnEachRun = (_d = options.resetOnEachRun) !== null && _d !== void 0 ? _d : true;
79
82
  }
80
83
  printsToStdio() {
81
84
  return this.shardIndex === undefined || this.shardIndex === 0;
@@ -98,12 +101,12 @@ class PlaywrightPulseReporter {
98
101
  ? this.config.shard.current - 1
99
102
  : undefined;
100
103
  this._ensureDirExists(this.outputDir)
101
- .then(() => {
104
+ .then(async () => {
102
105
  if (this.printsToStdio()) {
103
106
  console.log(`PlaywrightPulseReporter: Starting test run with ${suite.allTests().length} tests${this.isSharded ? ` across ${totalShards} shards` : ""}. Pulse outputting to ${this.outputDir}`);
104
107
  if (this.shardIndex === undefined ||
105
108
  (this.isSharded && this.shardIndex === 0)) {
106
- return this._cleanupTemporaryFiles();
109
+ await this._cleanupTemporaryFiles();
107
110
  }
108
111
  }
109
112
  })
@@ -116,6 +119,24 @@ class PlaywrightPulseReporter {
116
119
  const severityAnnotation = annotations.find((a) => a.type === "pulse_severity");
117
120
  return (severityAnnotation === null || severityAnnotation === void 0 ? void 0 : severityAnnotation.description) || "Medium";
118
121
  }
122
+ extractCodeSnippet(filePath, targetLine, targetColumn) {
123
+ var _a;
124
+ try {
125
+ const fsSync = require("fs");
126
+ if (!fsSync.existsSync(filePath)) {
127
+ return "";
128
+ }
129
+ const content = fsSync.readFileSync(filePath, "utf8");
130
+ const lines = content.split("\n");
131
+ if (targetLine < 1 || targetLine > lines.length) {
132
+ return "";
133
+ }
134
+ return ((_a = lines[targetLine - 1]) === null || _a === void 0 ? void 0 : _a.trim()) || "";
135
+ }
136
+ catch (e) {
137
+ return "";
138
+ }
139
+ }
119
140
  getBrowserDetails(test) {
120
141
  var _a, _b, _c, _d;
121
142
  const project = (_a = test.parent) === null || _a === void 0 ? void 0 : _a.project();
@@ -180,8 +201,10 @@ class PlaywrightPulseReporter {
180
201
  const startTime = new Date(step.startTime);
181
202
  const endTime = new Date(startTime.getTime() + Math.max(0, duration));
182
203
  let codeLocation = "";
204
+ let codeSnippet = "";
183
205
  if (step.location) {
184
206
  codeLocation = `${path.relative(this.config.rootDir, step.location.file)}:${step.location.line}:${step.location.column}`;
207
+ codeSnippet = this.extractCodeSnippet(step.location.file, step.location.line, step.location.column);
185
208
  }
186
209
  return {
187
210
  id: `${testId}_step_${startTime.toISOString()}-${duration}-${(0, crypto_1.randomUUID)()}`,
@@ -194,6 +217,7 @@ class PlaywrightPulseReporter {
194
217
  errorMessage: errorMessage,
195
218
  stackTrace: ((_d = step.error) === null || _d === void 0 ? void 0 : _d.stack) || undefined,
196
219
  codeLocation: codeLocation || undefined,
220
+ codeSnippet: codeSnippet,
197
221
  isHook: step.category === "hook",
198
222
  hookType: step.category === "hook"
199
223
  ? step.title.toLowerCase().includes("before")
@@ -204,16 +228,38 @@ class PlaywrightPulseReporter {
204
228
  };
205
229
  }
206
230
  async onTestEnd(test, result) {
207
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
231
+ // Track this async call so onEnd() can wait for all in-flight processing
232
+ // before it reads this.results. This prevents the race condition where
233
+ // onEnd() fires before an interrupted test's onTestEnd() has finished
234
+ // its async attachment I/O and pushed to this.results.
235
+ const p = this._processTestEnd(test, result);
236
+ this._pendingTestEnds.push(p);
237
+ await p;
238
+ }
239
+ async _processTestEnd(test, result) {
240
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
208
241
  const project = (_a = test.parent) === null || _a === void 0 ? void 0 : _a.project();
209
242
  const browserDetails = this.getBrowserDetails(test);
210
- const testStatus = convertStatus(result.status, test);
243
+ const uniqueTestId = `${(project === null || project === void 0 ? void 0 : project.name) || "default"}-${test.id}`;
244
+ // Captured outcome from Playwright
245
+ const outcome = test.outcome();
246
+ // Calculate final status based on the last result (Last-Run-Wins)
247
+ // result.status in onTestEnd is typically the status of the test run (passed if flaky passed)
248
+ // But we double check the last result in test.results just to be sure/consistent
249
+ const lastResult = test.results[test.results.length - 1];
250
+ const finalStatus = convertStatus(lastResult ? lastResult.status : result.status, test);
251
+ // Existing behavior: fail if flaky (implied by user request "existing status field should remain failed")
252
+ // If outcome is flaky, status should be 'failed' to indicate initial failure, but final_status is 'passed'
253
+ let testStatus = finalStatus;
254
+ if (outcome === "flaky") {
255
+ testStatus = "flaky";
256
+ }
211
257
  const startTime = new Date(result.startTime);
212
258
  const endTime = new Date(startTime.getTime() + result.duration);
213
259
  const processAllSteps = async (steps) => {
214
260
  let processed = [];
215
261
  for (const step of steps) {
216
- const processedStep = await this.processStep(step, test.id, browserDetails, test);
262
+ const processedStep = await this.processStep(step, uniqueTestId, browserDetails, test);
217
263
  processed.push(processedStep);
218
264
  if (step.steps && step.steps.length > 0) {
219
265
  processedStep.steps = await processAllSteps(step.steps);
@@ -221,15 +267,9 @@ class PlaywrightPulseReporter {
221
267
  }
222
268
  return processed;
223
269
  };
224
- let codeSnippet = undefined;
225
- try {
226
- if (((_b = test.location) === null || _b === void 0 ? void 0 : _b.file) && ((_c = test.location) === null || _c === void 0 ? void 0 : _c.line) && ((_d = test.location) === null || _d === void 0 ? void 0 : _d.column)) {
227
- const relativePath = path.relative(this.config.rootDir, test.location.file);
228
- codeSnippet = `Test defined at: ${relativePath}:${test.location.line}:${test.location.column}`;
229
- }
230
- }
231
- catch (e) {
232
- console.warn(`Pulse Reporter: Could not extract code snippet for ${test.title}`, e);
270
+ let codeSnippet = "";
271
+ if (((_b = test.location) === null || _b === void 0 ? void 0 : _b.file) && ((_c = test.location) === null || _c === void 0 ? void 0 : _c.line) && ((_d = test.location) === null || _d === void 0 ? void 0 : _d.column)) {
272
+ codeSnippet = this.extractCodeSnippet(test.location.file, test.location.line, test.location.column);
233
273
  }
234
274
  // 1. Get Spec File Name
235
275
  const specFileName = ((_e = test.location) === null || _e === void 0 ? void 0 : _e.file)
@@ -256,22 +296,24 @@ class PlaywrightPulseReporter {
256
296
  : undefined,
257
297
  };
258
298
  const pulseResult = {
259
- id: test.id,
299
+ id: uniqueTestId,
260
300
  runId: "TBD",
261
301
  describe: describeBlockName,
262
302
  spec_file: specFileName,
263
303
  name: test.titlePath().join(" > "),
264
304
  suiteName: (project === null || project === void 0 ? void 0 : project.name) || ((_g = this.config.projects[0]) === null || _g === void 0 ? void 0 : _g.name) || "Default Suite",
265
305
  status: testStatus,
306
+ outcome: outcome === "flaky" ? outcome : undefined, // Only Include if flaky
307
+ final_status: finalStatus, // New Field
266
308
  duration: result.duration,
267
309
  startTime: startTime,
268
310
  endTime: endTime,
269
311
  browser: browserDetails,
270
312
  retries: result.retry,
271
- steps: ((_h = result.steps) === null || _h === void 0 ? void 0 : _h.length) ? await processAllSteps(result.steps) : [],
272
- errorMessage: (_j = result.error) === null || _j === void 0 ? void 0 : _j.message,
273
- stackTrace: (_k = result.error) === null || _k === void 0 ? void 0 : _k.stack,
274
- snippet: (_l = result.error) === null || _l === void 0 ? void 0 : _l.snippet,
313
+ steps: result.steps ? await processAllSteps(result.steps) : [],
314
+ errorMessage: (_h = result.error) === null || _h === void 0 ? void 0 : _h.message,
315
+ stackTrace: (_j = result.error) === null || _j === void 0 ? void 0 : _j.stack,
316
+ snippet: (_k = result.error) === null || _k === void 0 ? void 0 : _k.snippet,
275
317
  codeSnippet: codeSnippet,
276
318
  tags: test.tags.map((tag) => tag.startsWith("@") ? tag.substring(1) : tag),
277
319
  severity: this._getSeverity(test.annotations),
@@ -281,14 +323,14 @@ class PlaywrightPulseReporter {
281
323
  attachments: [],
282
324
  stdout: stdoutMessages.length > 0 ? stdoutMessages : undefined,
283
325
  stderr: stderrMessages.length > 0 ? stderrMessages : undefined,
284
- annotations: ((_m = test.annotations) === null || _m === void 0 ? void 0 : _m.length) > 0 ? test.annotations : undefined,
326
+ annotations: ((_l = test.annotations) === null || _l === void 0 ? void 0 : _l.length) > 0 ? test.annotations : undefined,
285
327
  ...testSpecificData,
286
328
  };
287
329
  for (const [index, attachment] of result.attachments.entries()) {
288
330
  if (!attachment.path)
289
331
  continue;
290
332
  try {
291
- const testSubfolder = test.id.replace(/[^a-zA-Z0-9_-]/g, "_");
333
+ const testSubfolder = uniqueTestId.replace(/[^a-zA-Z0-9_-]/g, "_");
292
334
  const safeAttachmentName = path
293
335
  .basename(attachment.path)
294
336
  .replace(/[^a-zA-Z0-9_.-]/g, "_");
@@ -296,18 +338,21 @@ class PlaywrightPulseReporter {
296
338
  const relativeDestPath = path.join(ATTACHMENTS_SUBDIR, testSubfolder, uniqueFileName);
297
339
  const absoluteDestPath = path.join(this.outputDir, relativeDestPath);
298
340
  await this._ensureDirExists(path.dirname(absoluteDestPath));
341
+ // Copy file first
299
342
  await fs.copyFile(attachment.path, absoluteDestPath);
343
+ // Compress in-place (preserves path/name)
344
+ await (0, compression_utils_1.compressAttachment)(absoluteDestPath, attachment.contentType);
300
345
  if (attachment.contentType.startsWith("image/")) {
301
- (_o = pulseResult.screenshots) === null || _o === void 0 ? void 0 : _o.push(relativeDestPath);
346
+ (_m = pulseResult.screenshots) === null || _m === void 0 ? void 0 : _m.push(relativeDestPath);
302
347
  }
303
348
  else if (attachment.contentType.startsWith("video/")) {
304
- (_p = pulseResult.videoPath) === null || _p === void 0 ? void 0 : _p.push(relativeDestPath);
349
+ (_o = pulseResult.videoPath) === null || _o === void 0 ? void 0 : _o.push(relativeDestPath);
305
350
  }
306
351
  else if (attachment.name === "trace") {
307
352
  pulseResult.tracePath = relativeDestPath;
308
353
  }
309
354
  else {
310
- (_q = pulseResult.attachments) === null || _q === void 0 ? void 0 : _q.push({
355
+ (_p = pulseResult.attachments) === null || _p === void 0 ? void 0 : _p.push({
311
356
  name: attachment.name,
312
357
  path: relativeDestPath,
313
358
  contentType: attachment.contentType,
@@ -321,15 +366,49 @@ class PlaywrightPulseReporter {
321
366
  this.results.push(pulseResult);
322
367
  }
323
368
  _getFinalizedResults(allResults) {
324
- const finalResultsMap = new Map();
369
+ const resultsMap = new Map();
325
370
  for (const result of allResults) {
326
- const existing = finalResultsMap.get(result.id);
327
- // Keep the result with the highest retry attempt for each test ID
328
- if (!existing || result.retries >= existing.retries) {
329
- finalResultsMap.set(result.id, result);
371
+ if (!resultsMap.has(result.id)) {
372
+ resultsMap.set(result.id, []);
373
+ }
374
+ resultsMap.get(result.id).push(result);
375
+ }
376
+ const finalResults = [];
377
+ for (const [testId, attempts] of resultsMap.entries()) {
378
+ // Sort by retry count (ASC) then timestamp (DESC) to ensure stable resolution
379
+ attempts.sort((a, b) => {
380
+ if (a.retries !== b.retries)
381
+ return a.retries - b.retries;
382
+ return (new Date(b.startTime).getTime() - new Date(a.startTime).getTime());
383
+ });
384
+ const firstAttempt = attempts[0];
385
+ const retryAttempts = attempts.slice(1);
386
+ // Only populate retryHistory if there were actual failures that triggered retries
387
+ // If all attempts passed, we don't need to show retry history
388
+ const hasActualRetries = retryAttempts.length > 0 &&
389
+ retryAttempts.some((attempt) => attempt.status === "failed" ||
390
+ attempt.status === "flaky" ||
391
+ firstAttempt.status === "failed" ||
392
+ firstAttempt.status === "flaky");
393
+ if (hasActualRetries) {
394
+ firstAttempt.retryHistory = retryAttempts;
395
+ // Calculate final status and outcome from the last attempt if retries exist
396
+ const lastAttempt = attempts[attempts.length - 1];
397
+ firstAttempt.final_status = lastAttempt.status;
398
+ // If the last attempt was flaky, ensure outcome is set on the main result
399
+ if (lastAttempt.outcome === "flaky" || lastAttempt.status === "flaky") {
400
+ firstAttempt.outcome = "flaky";
401
+ firstAttempt.status = "flaky";
402
+ }
330
403
  }
404
+ else {
405
+ // If no actual retries (all attempts passed), ensure final_status and retryHistory are removed
406
+ delete firstAttempt.final_status;
407
+ delete firstAttempt.retryHistory;
408
+ }
409
+ finalResults.push(firstAttempt);
331
410
  }
332
- return Array.from(finalResultsMap.values());
411
+ return finalResults;
333
412
  }
334
413
  onError(error) {
335
414
  var _a;
@@ -386,9 +465,10 @@ class PlaywrightPulseReporter {
386
465
  }
387
466
  const finalResultsList = this._getFinalizedResults(allShardProcessedResults);
388
467
  finalResultsList.forEach((r) => (r.runId = finalRunData.id));
389
- finalRunData.passed = finalResultsList.filter((r) => r.status === "passed").length;
390
- finalRunData.failed = finalResultsList.filter((r) => r.status === "failed").length;
391
- finalRunData.skipped = finalResultsList.filter((r) => r.status === "skipped").length;
468
+ finalRunData.passed = finalResultsList.filter((r) => (r.final_status || r.status) === "passed").length;
469
+ finalRunData.failed = finalResultsList.filter((r) => (r.final_status || r.status) === "failed").length;
470
+ finalRunData.skipped = finalResultsList.filter((r) => (r.final_status || r.status) === "skipped").length;
471
+ finalRunData.flaky = finalResultsList.filter((r) => (r.final_status || r.status) === "flaky").length;
392
472
  finalRunData.totalTests = finalResultsList.length;
393
473
  const reviveDates = (key, value) => {
394
474
  const isoDateRegex = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?Z$/;
@@ -402,7 +482,11 @@ class PlaywrightPulseReporter {
402
482
  return {
403
483
  run: finalRunData,
404
484
  results: properlyTypedResults,
405
- metadata: { generatedAt: new Date().toISOString() },
485
+ metadata: {
486
+ generatedAt: new Date().toISOString(),
487
+ reportDescription: this.options.reportDescription,
488
+ logo: this.options.logo,
489
+ },
406
490
  };
407
491
  }
408
492
  async _cleanupTemporaryFiles() {
@@ -419,6 +503,20 @@ class PlaywrightPulseReporter {
419
503
  }
420
504
  }
421
505
  }
506
+ /**
507
+ * Removes all individual run JSON files from the `pulse-results/` directory
508
+ * that were left over from previous test sessions.
509
+ *
510
+ * When `resetOnEachRun: false`, each run writes its own timestamped JSON to
511
+ * `pulse-results/` and then `_mergeAllRunReports()` merges them all. However,
512
+ * if files from *older* sessions accumulate there (e.g. because a previous run
513
+ * was interrupted before the post-merge cleanup, or because the user ran tests
514
+ * on a previous day), `_getFinalizedResults()` de-duplicates by `test.id` and
515
+ * collapses results from both sessions into a single entry — producing a
516
+ * `totalTests` count lower than the actual number of tests that ran.
517
+ *
518
+ * Cleaning up at `onBegin` time guarantees each run starts with a fresh slate.
519
+ */
422
520
  async _ensureDirExists(dirPath) {
423
521
  try {
424
522
  await fs.mkdir(dirPath, { recursive: true });
@@ -431,6 +529,11 @@ class PlaywrightPulseReporter {
431
529
  }
432
530
  }
433
531
  async onEnd(result) {
532
+ // Wait for ALL in-flight onTestEnd calls to finish before reading this.results.
533
+ // This guards against Playwright calling onEnd() concurrently with (or just
534
+ // before) the last onTestEnd() finishing its async attachment I/O — which
535
+ // would cause that test to be silently dropped from the report.
536
+ await Promise.allSettled(this._pendingTestEnds);
434
537
  if (this.shardIndex !== undefined) {
435
538
  await this._writeShardResults();
436
539
  return;
@@ -446,9 +549,10 @@ class PlaywrightPulseReporter {
446
549
  timestamp: new Date(this.runStartTime),
447
550
  // Use the length of the de-duplicated array for all counts
448
551
  totalTests: finalResults.length,
449
- passed: finalResults.filter((r) => r.status === "passed").length,
450
- failed: finalResults.filter((r) => r.status === "failed").length,
451
- skipped: finalResults.filter((r) => r.status === "skipped").length,
552
+ passed: finalResults.filter((r) => (r.final_status || r.status) === "passed").length,
553
+ failed: finalResults.filter((r) => (r.final_status || r.status) === "failed").length,
554
+ skipped: finalResults.filter((r) => (r.final_status || r.status) === "skipped").length,
555
+ flaky: finalResults.filter((r) => (r.final_status || r.status) === "flaky").length,
452
556
  duration,
453
557
  environment: environmentDetails,
454
558
  };
@@ -463,7 +567,11 @@ class PlaywrightPulseReporter {
463
567
  run: runData,
464
568
  // Use the de-duplicated results
465
569
  results: finalResults,
466
- metadata: { generatedAt: new Date().toISOString() },
570
+ metadata: {
571
+ generatedAt: new Date().toISOString(),
572
+ reportDescription: this.options.reportDescription,
573
+ logo: this.options.logo,
574
+ },
467
575
  };
468
576
  }
469
577
  if (!finalReport) {
@@ -492,108 +600,28 @@ class PlaywrightPulseReporter {
492
600
  }
493
601
  else {
494
602
  // Logic for appending/merging reports
495
- const pulseResultsDir = path.join(this.outputDir, INDIVIDUAL_REPORTS_SUBDIR);
496
- const individualReportPath = path.join(pulseResultsDir, `playwright-pulse-report-${Date.now()}.json`);
603
+ const pulseResultsDir = path.join(this.outputDir, this.individualReportsSubDir);
604
+ const shardPrefix = this.baseOutputFile.replace(".json", "-");
605
+ const individualReportPath = path.join(pulseResultsDir, `${shardPrefix}${Date.now()}.json`);
497
606
  try {
498
607
  await this._ensureDirExists(pulseResultsDir);
499
608
  await fs.writeFile(individualReportPath, JSON.stringify(finalReport, jsonReplacer, 2));
500
609
  if (this.printsToStdio()) {
501
610
  console.log(`PlaywrightPulseReporter: Individual run report for merging written to ${individualReportPath}`);
502
611
  }
503
- await this._mergeAllRunReports();
612
+ // DEFERRED MERGING:
613
+ // We do not call _mergeAllRunReports() here anymore when resetOnEachRun is false.
614
+ // The individual JSON files in pulse-results/ will be collected and merged
615
+ // into the main JSON when the user next runs one of the report generator commands.
504
616
  }
505
617
  catch (error) {
506
- console.error(`Pulse Reporter: Failed to write or merge report. Error: ${error.message}`);
618
+ console.error(`Pulse Reporter: Failed to write report. Error: ${error.message}`);
507
619
  }
508
620
  }
509
621
  if (this.isSharded) {
510
622
  await this._cleanupTemporaryFiles();
511
623
  }
512
624
  }
513
- async _mergeAllRunReports() {
514
- const pulseResultsDir = path.join(this.outputDir, INDIVIDUAL_REPORTS_SUBDIR);
515
- const finalOutputPath = path.join(this.outputDir, this.baseOutputFile);
516
- let reportFiles;
517
- try {
518
- const allFiles = await fs.readdir(pulseResultsDir);
519
- reportFiles = allFiles.filter((file) => file.startsWith("playwright-pulse-report-") && file.endsWith(".json"));
520
- }
521
- catch (error) {
522
- if (error.code === "ENOENT") {
523
- if (this.printsToStdio()) {
524
- console.log(`Pulse Reporter: No individual reports directory found at ${pulseResultsDir}. Skipping merge.`);
525
- }
526
- return;
527
- }
528
- console.error(`Pulse Reporter: Error reading report directory ${pulseResultsDir}:`, error);
529
- return;
530
- }
531
- if (reportFiles.length === 0) {
532
- if (this.printsToStdio()) {
533
- console.log("Pulse Reporter: No matching JSON report files found to merge.");
534
- }
535
- return;
536
- }
537
- const allResultsFromAllFiles = [];
538
- let latestTimestamp = new Date(0);
539
- let lastRunEnvironment = undefined;
540
- let totalDuration = 0;
541
- for (const file of reportFiles) {
542
- const filePath = path.join(pulseResultsDir, file);
543
- try {
544
- const content = await fs.readFile(filePath, "utf-8");
545
- const json = JSON.parse(content);
546
- if (json.run) {
547
- const runTimestamp = new Date(json.run.timestamp);
548
- if (runTimestamp > latestTimestamp) {
549
- latestTimestamp = runTimestamp;
550
- lastRunEnvironment = json.run.environment || undefined;
551
- }
552
- }
553
- if (json.results) {
554
- allResultsFromAllFiles.push(...json.results);
555
- }
556
- }
557
- catch (err) {
558
- console.warn(`Pulse Reporter: Could not parse report file ${filePath}. Skipping. Error: ${err.message}`);
559
- }
560
- }
561
- // De-duplicate the results from ALL merged files using the helper function
562
- const finalMergedResults = this._getFinalizedResults(allResultsFromAllFiles);
563
- // Sum the duration from the final, de-duplicated list of tests
564
- totalDuration = finalMergedResults.reduce((acc, r) => acc + (r.duration || 0), 0);
565
- const combinedRun = {
566
- id: `merged-${Date.now()}`,
567
- timestamp: latestTimestamp,
568
- environment: lastRunEnvironment,
569
- // Recalculate counts based on the truly final, de-duplicated list
570
- totalTests: finalMergedResults.length,
571
- passed: finalMergedResults.filter((r) => r.status === "passed").length,
572
- failed: finalMergedResults.filter((r) => r.status === "failed").length,
573
- skipped: finalMergedResults.filter((r) => r.status === "skipped").length,
574
- duration: totalDuration,
575
- };
576
- const finalReport = {
577
- run: combinedRun,
578
- results: finalMergedResults, // Use the de-duplicated list
579
- metadata: {
580
- generatedAt: new Date().toISOString(),
581
- },
582
- };
583
- try {
584
- await fs.writeFile(finalOutputPath, JSON.stringify(finalReport, (key, value) => {
585
- if (value instanceof Date)
586
- return value.toISOString();
587
- return value;
588
- }, 2));
589
- if (this.printsToStdio()) {
590
- console.log(`PlaywrightPulseReporter: ✅ Merged report with ${finalMergedResults.length} total results saved to ${finalOutputPath}`);
591
- }
592
- }
593
- catch (err) {
594
- console.error(`Pulse Reporter: Failed to write final merged report to ${finalOutputPath}. Error: ${err.message}`);
595
- }
596
- }
597
625
  }
598
626
  exports.PlaywrightPulseReporter = PlaywrightPulseReporter;
599
627
  exports.default = PlaywrightPulseReporter;
@@ -0,0 +1 @@
1
+ {"fileNames":["../../node_modules/typescript/lib/lib.es5.d.ts","../../node_modules/typescript/lib/lib.es2015.d.ts","../../node_modules/typescript/lib/lib.es2016.d.ts","../../node_modules/typescript/lib/lib.es2017.d.ts","../../node_modules/typescript/lib/lib.es2018.d.ts","../../node_modules/typescript/lib/lib.es2019.d.ts","../../node_modules/typescript/lib/lib.es2020.d.ts","../../node_modules/typescript/lib/lib.es2021.d.ts","../../node_modules/typescript/lib/lib.es2022.d.ts","../../node_modules/typescript/lib/lib.es2023.d.ts","../../node_modules/typescript/lib/lib.es2024.d.ts","../../node_modules/typescript/lib/lib.esnext.d.ts","../../node_modules/typescript/lib/lib.dom.d.ts","../../node_modules/typescript/lib/lib.dom.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.core.d.ts","../../node_modules/typescript/lib/lib.es2015.collection.d.ts","../../node_modules/typescript/lib/lib.es2015.generator.d.ts","../../node_modules/typescript/lib/lib.es2015.iterable.d.ts","../../node_modules/typescript/lib/lib.es2015.promise.d.ts","../../node_modules/typescript/lib/lib.es2015.proxy.d.ts","../../node_modules/typescript/lib/lib.es2015.reflect.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.d.ts","../../node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2016.array.include.d.ts","../../node_modules/typescript/lib/lib.es2016.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2017.date.d.ts","../../node_modules/typescript/lib/lib.es2017.object.d.ts","../../node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2017.string.d.ts","../../node_modules/typescript/lib/lib.es2017.intl.d.ts","../../node_modules/typescript/lib/lib.es2017.typedarrays.d.ts","../../node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts","../../node_modules/typescript/lib/lib.es2018.asynciterable.d.ts","../../node_modules/typescript/lib/lib.es2018.intl.d.ts","../../node_modules/typescript/lib/lib.es2018.promise.d.ts","../../node_modules/typescript/lib/lib.es2018.regexp.d.ts","../../node_modules/typescript/lib/lib.es2019.array.d.ts","../../node_modules/typescript/lib/lib.es2019.object.d.ts","../../node_modules/typescript/lib/lib.es2019.string.d.ts","../../node_modules/typescript/lib/lib.es2019.symbol.d.ts","../../node_modules/typescript/lib/lib.es2019.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.bigint.d.ts","../../node_modules/typescript/lib/lib.es2020.date.d.ts","../../node_modules/typescript/lib/lib.es2020.promise.d.ts","../../node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2020.string.d.ts","../../node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts","../../node_modules/typescript/lib/lib.es2020.intl.d.ts","../../node_modules/typescript/lib/lib.es2020.number.d.ts","../../node_modules/typescript/lib/lib.es2021.promise.d.ts","../../node_modules/typescript/lib/lib.es2021.string.d.ts","../../node_modules/typescript/lib/lib.es2021.weakref.d.ts","../../node_modules/typescript/lib/lib.es2021.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.array.d.ts","../../node_modules/typescript/lib/lib.es2022.error.d.ts","../../node_modules/typescript/lib/lib.es2022.intl.d.ts","../../node_modules/typescript/lib/lib.es2022.object.d.ts","../../node_modules/typescript/lib/lib.es2022.string.d.ts","../../node_modules/typescript/lib/lib.es2022.regexp.d.ts","../../node_modules/typescript/lib/lib.es2023.array.d.ts","../../node_modules/typescript/lib/lib.es2023.collection.d.ts","../../node_modules/typescript/lib/lib.es2023.intl.d.ts","../../node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts","../../node_modules/typescript/lib/lib.es2024.collection.d.ts","../../node_modules/typescript/lib/lib.es2024.object.d.ts","../../node_modules/typescript/lib/lib.es2024.promise.d.ts","../../node_modules/typescript/lib/lib.es2024.regexp.d.ts","../../node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts","../../node_modules/typescript/lib/lib.es2024.string.d.ts","../../node_modules/typescript/lib/lib.esnext.array.d.ts","../../node_modules/typescript/lib/lib.esnext.collection.d.ts","../../node_modules/typescript/lib/lib.esnext.intl.d.ts","../../node_modules/typescript/lib/lib.esnext.disposable.d.ts","../../node_modules/typescript/lib/lib.esnext.decorators.d.ts","../../node_modules/typescript/lib/lib.esnext.iterator.d.ts","../../node_modules/typescript/lib/lib.decorators.d.ts","../../node_modules/typescript/lib/lib.decorators.legacy.d.ts","../../node_modules/playwright-core/types/protocol.d.ts","../../node_modules/playwright-core/types/structs.d.ts","../../node_modules/playwright-core/types/types.d.ts","../../node_modules/playwright/types/test.d.ts","../../node_modules/playwright/types/testreporter.d.ts","../../node_modules/@playwright/test/reporter.d.ts","../../node_modules/@types/react/global.d.ts","../../node_modules/csstype/index.d.ts","../../node_modules/@types/prop-types/index.d.ts","../../node_modules/@types/react/index.d.ts","../../node_modules/lucide-react/dist/lucide-react.d.ts","../../src/types/index.ts","../../src/lib/report-types.ts","../../src/reporter/playwright-pulse-reporter.ts","../../node_modules/@types/caseless/index.d.ts","../../node_modules/@types/d3-array/index.d.ts","../../node_modules/@types/d3-color/index.d.ts","../../node_modules/@types/d3-ease/index.d.ts","../../node_modules/@types/d3-interpolate/index.d.ts","../../node_modules/@types/d3-path/index.d.ts","../../node_modules/@types/d3-time/index.d.ts","../../node_modules/@types/d3-scale/index.d.ts","../../node_modules/@types/d3-shape/index.d.ts","../../node_modules/@types/d3-timer/index.d.ts","../../node_modules/@types/json-schema/index.d.ts","../../node_modules/@types/long/index.d.ts","../../node_modules/@types/node/compatibility/disposable.d.ts","../../node_modules/@types/node/compatibility/indexable.d.ts","../../node_modules/@types/node/compatibility/iterators.d.ts","../../node_modules/@types/node/compatibility/index.d.ts","../../node_modules/@types/node/globals.typedarray.d.ts","../../node_modules/@types/node/buffer.buffer.d.ts","../../node_modules/buffer/index.d.ts","../../node_modules/undici-types/header.d.ts","../../node_modules/undici-types/readable.d.ts","../../node_modules/undici-types/file.d.ts","../../node_modules/undici-types/fetch.d.ts","../../node_modules/undici-types/formdata.d.ts","../../node_modules/undici-types/connector.d.ts","../../node_modules/undici-types/client.d.ts","../../node_modules/undici-types/errors.d.ts","../../node_modules/undici-types/dispatcher.d.ts","../../node_modules/undici-types/global-dispatcher.d.ts","../../node_modules/undici-types/global-origin.d.ts","../../node_modules/undici-types/pool-stats.d.ts","../../node_modules/undici-types/pool.d.ts","../../node_modules/undici-types/handlers.d.ts","../../node_modules/undici-types/balanced-pool.d.ts","../../node_modules/undici-types/agent.d.ts","../../node_modules/undici-types/mock-interceptor.d.ts","../../node_modules/undici-types/mock-agent.d.ts","../../node_modules/undici-types/mock-client.d.ts","../../node_modules/undici-types/mock-pool.d.ts","../../node_modules/undici-types/mock-errors.d.ts","../../node_modules/undici-types/proxy-agent.d.ts","../../node_modules/undici-types/env-http-proxy-agent.d.ts","../../node_modules/undici-types/retry-handler.d.ts","../../node_modules/undici-types/retry-agent.d.ts","../../node_modules/undici-types/api.d.ts","../../node_modules/undici-types/interceptors.d.ts","../../node_modules/undici-types/util.d.ts","../../node_modules/undici-types/cookies.d.ts","../../node_modules/undici-types/patch.d.ts","../../node_modules/undici-types/websocket.d.ts","../../node_modules/undici-types/eventsource.d.ts","../../node_modules/undici-types/filereader.d.ts","../../node_modules/undici-types/diagnostics-channel.d.ts","../../node_modules/undici-types/content-type.d.ts","../../node_modules/undici-types/cache.d.ts","../../node_modules/undici-types/index.d.ts","../../node_modules/@types/node/globals.d.ts","../../node_modules/@types/node/assert.d.ts","../../node_modules/@types/node/assert/strict.d.ts","../../node_modules/@types/node/async_hooks.d.ts","../../node_modules/@types/node/buffer.d.ts","../../node_modules/@types/node/child_process.d.ts","../../node_modules/@types/node/cluster.d.ts","../../node_modules/@types/node/console.d.ts","../../node_modules/@types/node/constants.d.ts","../../node_modules/@types/node/crypto.d.ts","../../node_modules/@types/node/dgram.d.ts","../../node_modules/@types/node/diagnostics_channel.d.ts","../../node_modules/@types/node/dns.d.ts","../../node_modules/@types/node/dns/promises.d.ts","../../node_modules/@types/node/domain.d.ts","../../node_modules/@types/node/dom-events.d.ts","../../node_modules/@types/node/events.d.ts","../../node_modules/@types/node/fs.d.ts","../../node_modules/@types/node/fs/promises.d.ts","../../node_modules/@types/node/http.d.ts","../../node_modules/@types/node/http2.d.ts","../../node_modules/@types/node/https.d.ts","../../node_modules/@types/node/inspector.d.ts","../../node_modules/@types/node/module.d.ts","../../node_modules/@types/node/net.d.ts","../../node_modules/@types/node/os.d.ts","../../node_modules/@types/node/path.d.ts","../../node_modules/@types/node/perf_hooks.d.ts","../../node_modules/@types/node/process.d.ts","../../node_modules/@types/node/punycode.d.ts","../../node_modules/@types/node/querystring.d.ts","../../node_modules/@types/node/readline.d.ts","../../node_modules/@types/node/readline/promises.d.ts","../../node_modules/@types/node/repl.d.ts","../../node_modules/@types/node/sea.d.ts","../../node_modules/@types/node/stream.d.ts","../../node_modules/@types/node/stream/promises.d.ts","../../node_modules/@types/node/stream/consumers.d.ts","../../node_modules/@types/node/stream/web.d.ts","../../node_modules/@types/node/string_decoder.d.ts","../../node_modules/@types/node/test.d.ts","../../node_modules/@types/node/timers.d.ts","../../node_modules/@types/node/timers/promises.d.ts","../../node_modules/@types/node/tls.d.ts","../../node_modules/@types/node/trace_events.d.ts","../../node_modules/@types/node/tty.d.ts","../../node_modules/@types/node/url.d.ts","../../node_modules/@types/node/util.d.ts","../../node_modules/@types/node/v8.d.ts","../../node_modules/@types/node/vm.d.ts","../../node_modules/@types/node/wasi.d.ts","../../node_modules/@types/node/worker_threads.d.ts","../../node_modules/@types/node/zlib.d.ts","../../node_modules/@types/node/index.d.ts","../../node_modules/@types/react-dom/index.d.ts","../../node_modules/@types/request/node_modules/form-data/index.d.ts","../../node_modules/@types/tough-cookie/index.d.ts","../../node_modules/@types/request/index.d.ts","../../node_modules/@types/shimmer/index.d.ts","../../node_modules/@types/triple-beam/index.d.ts","../../node_modules/@types/yauzl/index.d.ts"],"fileIdsList":[[83,110,153],[110,153],[95,110,153],[99,110,153],[98,110,153],[110,150,153],[110,152,153],[153],[110,153,158,187],[110,153,154,159,165,166,173,184,195],[110,153,154,155,165,173],[105,106,107,110,153],[110,153,156,196],[110,153,157,158,166,174],[110,153,158,184,192],[110,153,159,161,165,173],[110,152,153,160],[110,153,161,162],[110,153,165],[110,153,163,165],[110,152,153,165],[110,153,165,166,167,184,195],[110,153,165,166,167,180,184,187],[110,148,153,200],[110,153,161,165,168,173,184,195],[110,153,165,166,168,169,173,184,192,195],[110,153,168,170,184,192,195],[108,109,110,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201],[110,153,165,171],[110,153,172,195,200],[110,153,161,165,173,184],[110,153,174],[110,153,175],[110,152,153,176],[110,150,151,152,153,154,155,156,157,158,159,160,161,162,163,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201],[110,153,178],[110,153,179],[110,153,165,180,181],[110,153,180,182,196,198],[110,153,165,184,185,186,187],[110,153,184,186],[110,153,184,185],[110,153,187],[110,153,188],[110,150,153,184],[110,153,165,190,191],[110,153,190,191],[110,153,158,173,184,192],[110,153,193],[110,153,173,194],[110,153,168,179,195],[110,153,158,196],[110,153,184,197],[110,153,172,198],[110,153,199],[110,153,158,165,167,176,184,195,198,200],[110,153,184,201],[88,110,153],[85,86,87,110,153],[93,110,153,166,168,170,173,184,195,202,204,205],[110,153,168,184,202],[110,153,165,184,202],[81,110,153],[79,80,110,153,154,166,184],[82,110,153],[110,120,124,153,195],[110,120,153,184,195],[110,115,153],[110,117,120,153,192,195],[110,153,173,192],[110,153,202],[110,115,153,202],[110,117,120,153,173,195],[110,112,113,116,119,153,165,184,195],[110,120,127,153],[110,112,118,153],[110,120,141,142,153],[110,116,120,153,187,195,202],[110,141,153,202],[110,114,115,153,202],[110,120,153],[110,114,115,116,117,118,119,120,121,122,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,142,143,144,145,146,147,153],[110,120,135,153],[110,120,127,128,153],[110,118,120,128,129,153],[110,119,153],[110,112,115,120,153],[110,120,124,128,129,153],[110,124,153],[110,118,120,123,153,195],[110,112,117,120,127,153],[110,153,184],[110,115,120,141,153,200,202],[90,110,153],[84,90,91,110,153,167,175],[89,110,153]],"fileInfos":[{"version":"e41c290ef7dd7dab3493e6cbe5909e0148edf4a8dad0271be08edec368a0f7b9","affectsGlobalScope":true,"impliedFormat":1},{"version":"45b7ab580deca34ae9729e97c13cfd999df04416a79116c3bfb483804f85ded4","impliedFormat":1},{"version":"3facaf05f0c5fc569c5649dd359892c98a85557e3e0c847964caeb67076f4d75","impliedFormat":1},{"version":"e44bb8bbac7f10ecc786703fe0a6a4b952189f908707980ba8f3c8975a760962","impliedFormat":1},{"version":"5e1c4c362065a6b95ff952c0eab010f04dcd2c3494e813b493ecfd4fcb9fc0d8","impliedFormat":1},{"version":"68d73b4a11549f9c0b7d352d10e91e5dca8faa3322bfb77b661839c42b1ddec7","impliedFormat":1},{"version":"5efce4fc3c29ea84e8928f97adec086e3dc876365e0982cc8479a07954a3efd4","impliedFormat":1},{"version":"feecb1be483ed332fad555aff858affd90a48ab19ba7272ee084704eb7167569","impliedFormat":1},{"version":"ee7bad0c15b58988daa84371e0b89d313b762ab83cb5b31b8a2d1162e8eb41c2","impliedFormat":1},{"version":"27bdc30a0e32783366a5abeda841bc22757c1797de8681bbe81fbc735eeb1c10","impliedFormat":1},{"version":"8fd575e12870e9944c7e1d62e1f5a73fcf23dd8d3a321f2a2c74c20d022283fe","impliedFormat":1},{"version":"e12a46ce14b817d4c9e6b2b478956452330bf00c9801b79de46f7a1815b5bd40","impliedFormat":1},{"version":"4fd3f3422b2d2a3dfd5cdd0f387b3a8ec45f006c6ea896a4cb41264c2100bb2c","affectsGlobalScope":true,"impliedFormat":1},{"version":"69e65d976bf166ce4a9e6f6c18f94d2424bf116e90837ace179610dbccad9b42","affectsGlobalScope":true,"impliedFormat":1},{"version":"c57796738e7f83dbc4b8e65132f11a377649c00dd3eee333f672b8f0a6bea671","affectsGlobalScope":true,"impliedFormat":1},{"version":"dc2df20b1bcdc8c2d34af4926e2c3ab15ffe1160a63e58b7e09833f616efff44","affectsGlobalScope":true,"impliedFormat":1},{"version":"515d0b7b9bea2e31ea4ec968e9edd2c39d3eebf4a2d5cbd04e88639819ae3b71","affectsGlobalScope":true,"impliedFormat":1},{"version":"62bb211266ee48b2d0edf0d8d1b191f0c24fc379a82bd4c1692a082c540bc6b1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0dc1e7ceda9b8b9b455c3a2d67b0412feab00bd2f66656cd8850e8831b08b537","affectsGlobalScope":true,"impliedFormat":1},{"version":"ce691fb9e5c64efb9547083e4a34091bcbe5bdb41027e310ebba8f7d96a98671","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d697a2a929a5fcb38b7a65594020fcef05ec1630804a33748829c5ff53640d0","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ff2a353abf8a80ee399af572debb8faab2d33ad38c4b4474cff7f26e7653b8d","affectsGlobalScope":true,"impliedFormat":1},{"version":"936e80ad36a2ee83fc3caf008e7c4c5afe45b3cf3d5c24408f039c1d47bdc1df","affectsGlobalScope":true,"impliedFormat":1},{"version":"d15bea3d62cbbdb9797079416b8ac375ae99162a7fba5de2c6c505446486ac0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"68d18b664c9d32a7336a70235958b8997ebc1c3b8505f4f1ae2b7e7753b87618","affectsGlobalScope":true,"impliedFormat":1},{"version":"eb3d66c8327153d8fa7dd03f9c58d351107fe824c79e9b56b462935176cdf12a","affectsGlobalScope":true,"impliedFormat":1},{"version":"38f0219c9e23c915ef9790ab1d680440d95419ad264816fa15009a8851e79119","affectsGlobalScope":true,"impliedFormat":1},{"version":"69ab18c3b76cd9b1be3d188eaf8bba06112ebbe2f47f6c322b5105a6fbc45a2e","affectsGlobalScope":true,"impliedFormat":1},{"version":"fef8cfad2e2dc5f5b3d97a6f4f2e92848eb1b88e897bb7318cef0e2820bceaab","affectsGlobalScope":true,"impliedFormat":1},{"version":"2f11ff796926e0832f9ae148008138ad583bd181899ab7dd768a2666700b1893","affectsGlobalScope":true,"impliedFormat":1},{"version":"4de680d5bb41c17f7f68e0419412ca23c98d5749dcaaea1896172f06435891fc","affectsGlobalScope":true,"impliedFormat":1},{"version":"954296b30da6d508a104a3a0b5d96b76495c709785c1d11610908e63481ee667","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac9538681b19688c8eae65811b329d3744af679e0bdfa5d842d0e32524c73e1c","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a969edff4bd52585473d24995c5ef223f6652d6ef46193309b3921d65dd4376","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e9fbd7030c440b33d021da145d3232984c8bb7916f277e8ffd3dc2e3eae2bdb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811ec78f7fefcabbda4bfa93b3eb67d9ae166ef95f9bff989d964061cbf81a0c","affectsGlobalScope":true,"impliedFormat":1},{"version":"717937616a17072082152a2ef351cb51f98802fb4b2fdabd32399843875974ca","affectsGlobalScope":true,"impliedFormat":1},{"version":"d7e7d9b7b50e5f22c915b525acc5a49a7a6584cf8f62d0569e557c5cfc4b2ac2","affectsGlobalScope":true,"impliedFormat":1},{"version":"71c37f4c9543f31dfced6c7840e068c5a5aacb7b89111a4364b1d5276b852557","affectsGlobalScope":true,"impliedFormat":1},{"version":"576711e016cf4f1804676043e6a0a5414252560eb57de9faceee34d79798c850","affectsGlobalScope":true,"impliedFormat":1},{"version":"89c1b1281ba7b8a96efc676b11b264de7a8374c5ea1e6617f11880a13fc56dc6","affectsGlobalScope":true,"impliedFormat":1},{"version":"74f7fa2d027d5b33eb0471c8e82a6c87216223181ec31247c357a3e8e2fddc5b","affectsGlobalScope":true,"impliedFormat":1},{"version":"f1e2a172204962276504466a6393426d2ca9c54894b1ad0a6c9dad867a65f876","affectsGlobalScope":true,"impliedFormat":1},{"version":"063600664504610fe3e99b717a1223f8b1900087fab0b4cad1496a114744f8df","affectsGlobalScope":true,"impliedFormat":1},{"version":"934019d7e3c81950f9a8426d093458b65d5aff2c7c1511233c0fd5b941e608ab","affectsGlobalScope":true,"impliedFormat":1},{"version":"52ada8e0b6e0482b728070b7639ee42e83a9b1c22d205992756fe020fd9f4a47","affectsGlobalScope":true,"impliedFormat":1},{"version":"3bdefe1bfd4d6dee0e26f928f93ccc128f1b64d5d501ff4a8cf3c6371200e5e6","affectsGlobalScope":true,"impliedFormat":1},{"version":"59fb2c069260b4ba00b5643b907ef5d5341b167e7d1dbf58dfd895658bda2867","affectsGlobalScope":true,"impliedFormat":1},{"version":"639e512c0dfc3fad96a84caad71b8834d66329a1f28dc95e3946c9b58176c73a","affectsGlobalScope":true,"impliedFormat":1},{"version":"368af93f74c9c932edd84c58883e736c9e3d53cec1fe24c0b0ff451f529ceab1","affectsGlobalScope":true,"impliedFormat":1},{"version":"af3dd424cf267428f30ccfc376f47a2c0114546b55c44d8c0f1d57d841e28d74","affectsGlobalScope":true,"impliedFormat":1},{"version":"995c005ab91a498455ea8dfb63aa9f83fa2ea793c3d8aa344be4a1678d06d399","affectsGlobalScope":true,"impliedFormat":1},{"version":"959d36cddf5e7d572a65045b876f2956c973a586da58e5d26cde519184fd9b8a","affectsGlobalScope":true,"impliedFormat":1},{"version":"965f36eae237dd74e6cca203a43e9ca801ce38824ead814728a2807b1910117d","affectsGlobalScope":true,"impliedFormat":1},{"version":"3925a6c820dcb1a06506c90b1577db1fdbf7705d65b62b99dce4be75c637e26b","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a3d63ef2b853447ec4f749d3f368ce642264246e02911fcb1590d8c161b8005","affectsGlobalScope":true,"impliedFormat":1},{"version":"b5ce7a470bc3628408429040c4e3a53a27755022a32fd05e2cb694e7015386c7","affectsGlobalScope":true,"impliedFormat":1},{"version":"8444af78980e3b20b49324f4a16ba35024fef3ee069a0eb67616ea6ca821c47a","affectsGlobalScope":true,"impliedFormat":1},{"version":"3287d9d085fbd618c3971944b65b4be57859f5415f495b33a6adc994edd2f004","affectsGlobalScope":true,"impliedFormat":1},{"version":"b4b67b1a91182421f5df999988c690f14d813b9850b40acd06ed44691f6727ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"bab26767638ab3557de12c900f0b91f710c7dc40ee9793d5a27d32c04f0bf646","affectsGlobalScope":true,"impliedFormat":1},{"version":"436aaf437562f276ec2ddbee2f2cdedac7664c1e4c1d2c36839ddd582eeb3d0a","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e3c06ea092138bf9fa5e874a1fdbc9d54805d074bee1de31b99a11e2fec239d","affectsGlobalScope":true,"impliedFormat":1},{"version":"87dc0f382502f5bbce5129bdc0aea21e19a3abbc19259e0b43ae038a9fc4e326","affectsGlobalScope":true,"impliedFormat":1},{"version":"b1cb28af0c891c8c96b2d6b7be76bd394fddcfdb4709a20ba05a7c1605eea0f9","affectsGlobalScope":true,"impliedFormat":1},{"version":"2fef54945a13095fdb9b84f705f2b5994597640c46afeb2ce78352fab4cb3279","affectsGlobalScope":true,"impliedFormat":1},{"version":"ac77cb3e8c6d3565793eb90a8373ee8033146315a3dbead3bde8db5eaf5e5ec6","affectsGlobalScope":true,"impliedFormat":1},{"version":"56e4ed5aab5f5920980066a9409bfaf53e6d21d3f8d020c17e4de584d29600ad","affectsGlobalScope":true,"impliedFormat":1},{"version":"4ece9f17b3866cc077099c73f4983bddbcb1dc7ddb943227f1ec070f529dedd1","affectsGlobalScope":true,"impliedFormat":1},{"version":"0a6282c8827e4b9a95f4bf4f5c205673ada31b982f50572d27103df8ceb8013c","affectsGlobalScope":true,"impliedFormat":1},{"version":"1c9319a09485199c1f7b0498f2988d6d2249793ef67edda49d1e584746be9032","affectsGlobalScope":true,"impliedFormat":1},{"version":"e3a2a0cee0f03ffdde24d89660eba2685bfbdeae955a6c67e8c4c9fd28928eeb","affectsGlobalScope":true,"impliedFormat":1},{"version":"811c71eee4aa0ac5f7adf713323a5c41b0cf6c4e17367a34fbce379e12bbf0a4","affectsGlobalScope":true,"impliedFormat":1},{"version":"51ad4c928303041605b4d7ae32e0c1ee387d43a24cd6f1ebf4a2699e1076d4fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"d4b1d2c51d058fc21ec2629fff7a76249dec2e36e12960ea056e3ef89174080f","affectsGlobalScope":true,"impliedFormat":1},{"version":"61d6a2092f48af66dbfb220e31eea8b10bc02b6932d6e529005fd2d7b3281290","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e7f8264d0fb4c5339605a15daadb037bf238c10b654bb3eee14208f860a32ea","affectsGlobalScope":true,"impliedFormat":1},{"version":"782dec38049b92d4e85c1585fbea5474a219c6984a35b004963b00beb1aab538","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ef72620b8ed8555b1a571fba0573059b427c72c0f8fe0af12117c01deaa62aa","impliedFormat":1},{"version":"32727845ab5bd8a9ef3e4844c567c09f6d418fcf0f90d381c00652a6f23e7f6e","impliedFormat":1},{"version":"317522008ac4f9a976630cb65fd5b072d7aea6da0a93ec0cfe0c0b0336337ee2","impliedFormat":1},{"version":"e241a236efd22fd53f0cad74d812bece9bc1691bf3890e95705a6e3b73e2f98e","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3cd566b0923109e83f1fe321c59266003ba22668d73195cf53e2eab3a71746f","impliedFormat":1},{"version":"04392f8e190f9e51301f73d17bbb34babd54858c1efc932d2193962f66dabae2","impliedFormat":1},{"version":"36a2e4c9a67439aca5f91bb304611d5ae6e20d420503e96c230cf8fcdc948d94","affectsGlobalScope":true,"impliedFormat":1},{"version":"8a8eb4ebffd85e589a1cc7c178e291626c359543403d58c9cd22b81fab5b1fb9","impliedFormat":1},{"version":"65ff5a0aefd7817a03c1ad04fee85c9cdd3ec415cc3c9efec85d8008d4d5e4ee","impliedFormat":1},{"version":"b89c2ddec6bd955e8721d41e24ca667de06882338d88b183c2cdc1f41f4c5a34","affectsGlobalScope":true,"impliedFormat":1},{"version":"6717dad91e44ad22d68f1fc0db74e5eb5398c2c06a2943bf06d3a168e8b1ba45","impliedFormat":99},{"version":"83aa54434d56363ddc949b3af4dd9eccd2fa9db2ecbae5c4a12b6984f66a630c","signature":"9f468e28df7bf40a346ac2cdd8b64e9f10cf2fbec522b58b92fef46b17c42720"},{"version":"331a971aff7a6da8693ab1ab38961996fecd854f6a639d430c81f8207dc92e96","signature":"14e0d6b6ab7688c7a2b60eb9c844d911175dd49a0e950b19863a5e09b8f9f6bd"},{"version":"c43cfd76af4b5b3dbe5d13d8f3e4ff975093fc952e444f1ad7d2263160c04b25","signature":"8e609bb71c20b858c77f0e9f90bb1319db8477b13f9f965f1a1e18524bf50881"},{"version":"2174e20517788d2a1379fc0aaacd87899a70f9e0197b4295edabfe75c4db03d8","impliedFormat":1},{"version":"e0c868a08451c879984ccf4d4e3c1240b3be15af8988d230214977a3a3dad4ce","impliedFormat":1},{"version":"6fc1a4f64372593767a9b7b774e9b3b92bf04e8785c3f9ea98973aa9f4bbe490","impliedFormat":1},{"version":"ff09b6fbdcf74d8af4e131b8866925c5e18d225540b9b19ce9485ca93e574d84","impliedFormat":1},{"version":"d5895252efa27a50f134a9b580aa61f7def5ab73d0a8071f9b5bf9a317c01c2d","impliedFormat":1},{"version":"2c378d9368abcd2eba8c29b294d40909845f68557bc0b38117e4f04fc56e5f9c","impliedFormat":1},{"version":"56208c500dcb5f42be7e18e8cb578f257a1a89b94b3280c506818fed06391805","impliedFormat":1},{"version":"0c94c2e497e1b9bcfda66aea239d5d36cd980d12a6d9d59e66f4be1fa3da5d5a","impliedFormat":1},{"version":"bb220eaac1677e2ad82ac4e7fd3e609a0c7b6f2d6d9c673a35068c97f9fcd5cd","affectsGlobalScope":true,"impliedFormat":1},{"version":"1f366bde16e0513fa7b64f87f86689c4d36efd85afce7eb24753e9c99b91c319","impliedFormat":1},{"version":"f3d8c757e148ad968f0d98697987db363070abada5f503da3c06aefd9d4248c1","impliedFormat":1},{"version":"0e60e0cbf2283adfd5a15430ae548cd2f662d581b5da6ecd98220203e7067c70","impliedFormat":1},{"version":"70521b6ab0dcba37539e5303104f29b721bfb2940b2776da4cc818c07e1fefc1","affectsGlobalScope":true,"impliedFormat":1},{"version":"ab41ef1f2cdafb8df48be20cd969d875602483859dc194e9c97c8a576892c052","affectsGlobalScope":true,"impliedFormat":1},{"version":"d153a11543fd884b596587ccd97aebbeed950b26933ee000f94009f1ab142848","affectsGlobalScope":true,"impliedFormat":1},{"version":"21d819c173c0cf7cc3ce57c3276e77fd9a8a01d35a06ad87158781515c9a438a","impliedFormat":1},{"version":"a79e62f1e20467e11a904399b8b18b18c0c6eea6b50c1168bf215356d5bebfaf","affectsGlobalScope":true,"impliedFormat":1},{"version":"0fd06258805d26c72f5997e07a23155d322d5f05387adb3744a791fe6a0b042d","affectsGlobalScope":true,"impliedFormat":1},{"version":"8e9c23ba78aabc2e0a27033f18737a6df754067731e69dc5f52823957d60a4b6","impliedFormat":1},{"version":"5929864ce17fba74232584d90cb721a89b7ad277220627cc97054ba15a98ea8f","impliedFormat":1},{"version":"24bd580b5743dc56402c440dc7f9a4f5d592ad7a419f25414d37a7bfe11e342b","impliedFormat":1},{"version":"25c8056edf4314820382a5fdb4bb7816999acdcb929c8f75e3f39473b87e85bc","impliedFormat":1},{"version":"c464d66b20788266e5353b48dc4aa6bc0dc4a707276df1e7152ab0c9ae21fad8","impliedFormat":1},{"version":"78d0d27c130d35c60b5e5566c9f1e5be77caf39804636bc1a40133919a949f21","impliedFormat":1},{"version":"c6fd2c5a395f2432786c9cb8deb870b9b0e8ff7e22c029954fabdd692bff6195","impliedFormat":1},{"version":"1d6e127068ea8e104a912e42fc0a110e2aa5a66a356a917a163e8cf9a65e4a75","impliedFormat":1},{"version":"5ded6427296cdf3b9542de4471d2aa8d3983671d4cac0f4bf9c637208d1ced43","impliedFormat":1},{"version":"6bdc71028db658243775263e93a7db2fd2abfce3ca569c3cca5aee6ed5eb186d","impliedFormat":1},{"version":"cadc8aced301244057c4e7e73fbcae534b0f5b12a37b150d80e5a45aa4bebcbd","impliedFormat":1},{"version":"385aab901643aa54e1c36f5ef3107913b10d1b5bb8cbcd933d4263b80a0d7f20","impliedFormat":1},{"version":"9670d44354bab9d9982eca21945686b5c24a3f893db73c0dae0fd74217a4c219","impliedFormat":1},{"version":"0b8a9268adaf4da35e7fa830c8981cfa22adbbe5b3f6f5ab91f6658899e657a7","impliedFormat":1},{"version":"11396ed8a44c02ab9798b7dca436009f866e8dae3c9c25e8c1fbc396880bf1bb","impliedFormat":1},{"version":"ba7bc87d01492633cb5a0e5da8a4a42a1c86270e7b3d2dea5d156828a84e4882","impliedFormat":1},{"version":"4893a895ea92c85345017a04ed427cbd6a1710453338df26881a6019432febdd","impliedFormat":1},{"version":"c21dc52e277bcfc75fac0436ccb75c204f9e1b3fa5e12729670910639f27343e","impliedFormat":1},{"version":"13f6f39e12b1518c6650bbb220c8985999020fe0f21d818e28f512b7771d00f9","impliedFormat":1},{"version":"9b5369969f6e7175740bf51223112ff209f94ba43ecd3bb09eefff9fd675624a","impliedFormat":1},{"version":"4fe9e626e7164748e8769bbf74b538e09607f07ed17c2f20af8d680ee49fc1da","impliedFormat":1},{"version":"24515859bc0b836719105bb6cc3d68255042a9f02a6022b3187948b204946bd2","impliedFormat":1},{"version":"ea0148f897b45a76544ae179784c95af1bd6721b8610af9ffa467a518a086a43","impliedFormat":1},{"version":"24c6a117721e606c9984335f71711877293a9651e44f59f3d21c1ea0856f9cc9","impliedFormat":1},{"version":"dd3273ead9fbde62a72949c97dbec2247ea08e0c6952e701a483d74ef92d6a17","impliedFormat":1},{"version":"405822be75ad3e4d162e07439bac80c6bcc6dbae1929e179cf467ec0b9ee4e2e","impliedFormat":1},{"version":"0db18c6e78ea846316c012478888f33c11ffadab9efd1cc8bcc12daded7a60b6","impliedFormat":1},{"version":"4d2b0eb911816f66abe4970898f97a2cfc902bcd743cbfa5017fad79f7ef90d8","impliedFormat":1},{"version":"bd0532fd6556073727d28da0edfd1736417a3f9f394877b6d5ef6ad88fba1d1a","impliedFormat":1},{"version":"89167d696a849fce5ca508032aabfe901c0868f833a8625d5a9c6e861ef935d2","impliedFormat":1},{"version":"e53a3c2a9f624d90f24bf4588aacd223e7bec1b9d0d479b68d2f4a9e6011147f","impliedFormat":1},{"version":"24b8685c62562f5d98615c5a0c1d05f297cf5065f15246edfe99e81ec4c0e011","impliedFormat":1},{"version":"93507c745e8f29090efb99399c3f77bec07db17acd75634249dc92f961573387","impliedFormat":1},{"version":"339dc5265ee5ed92e536a93a04c4ebbc2128f45eeec6ed29f379e0085283542c","impliedFormat":1},{"version":"4732aec92b20fb28c5fe9ad99521fb59974289ed1e45aecb282616202184064f","impliedFormat":1},{"version":"2e85db9e6fd73cfa3d7f28e0ab6b55417ea18931423bd47b409a96e4a169e8e6","impliedFormat":1},{"version":"c46e079fe54c76f95c67fb89081b3e399da2c7d109e7dca8e4b58d83e332e605","impliedFormat":1},{"version":"bf67d53d168abc1298888693338cb82854bdb2e69ef83f8a0092093c2d562107","impliedFormat":1},{"version":"08faa97886e71757779428dd4c69a545c32c85fd629d1116d42710b32c6378bc","affectsGlobalScope":true,"impliedFormat":1},{"version":"a72ffc815104fb5c075106ebca459b2d55d07862a773768fce89efc621b3964b","impliedFormat":1},{"version":"7394959e5a741b185456e1ef5d64599c36c60a323207450991e7a42e08911419","impliedFormat":1},{"version":"3d77c73be94570813f8cadd1f05ebc3dc5e2e4fdefe4d340ca20cd018724ee36","impliedFormat":1},{"version":"d674383111e06b6741c4ad2db962131b5b0fa4d0294b998566c635e86195a453","affectsGlobalScope":true,"impliedFormat":1},{"version":"f3e58c4c18a031cbb17abec7a4ad0bd5ae9fc70c1f4ba1e7fb921ad87c504aca","impliedFormat":1},{"version":"a3e8bafb2af8e850c644f4be7f5156cf7d23b7bfdc3b786bd4d10ed40329649c","impliedFormat":1},{"version":"35ec8b6760fd7138bbf5809b84551e31028fb2ba7b6dc91d95d098bf212ca8b4","affectsGlobalScope":true,"impliedFormat":1},{"version":"a40826e8476694e90da94aa008283a7de50d1dafd37beada623863f1901cb7fb","impliedFormat":1},{"version":"f77d9188e41291acf14f476e931972460a303e1952538f9546e7b370cb8d0d20","affectsGlobalScope":true,"impliedFormat":1},{"version":"8d04e3640dd9eb67f7f1e5bd3d0bf96c784666f7aefc8ac1537af6f2d38d4c29","impliedFormat":1},{"version":"3c884d9d9ec454bdf0d5a0b8465bf8297d2caa4d853851d92cc417ac6f30b969","impliedFormat":1},{"version":"5a369483ac4cfbdf0331c248deeb36140e6907db5e1daed241546b4a2055f82c","impliedFormat":1},{"version":"e8f5b5cc36615c17d330eaf8eebbc0d6bdd942c25991f96ef122f246f4ff722f","impliedFormat":1},{"version":"f0bd7e6d931657b59605c44112eaf8b980ba7f957a5051ed21cb93d978cf2f45","impliedFormat":1},{"version":"ee1ee365d88c4c6c0c0a5a5701d66ebc27ccd0bcfcfaa482c6e2e7fe7b98edf7","affectsGlobalScope":true,"impliedFormat":1},{"version":"0ada07543808f3b967624645a8e1ccd446f8b01ade47842acf1328aec899fed0","affectsGlobalScope":true,"impliedFormat":1},{"version":"c4a806152acbef81593f96cae6f2b04784d776457d97adbe2694478b243fcf03","impliedFormat":1},{"version":"71adf5dbc59568663d252a46179e71e4d544c053978bfc526d11543a3f716f42","impliedFormat":1},{"version":"c60db41f7bee80fb80c0b12819f5e465c8c8b465578da43e36d04f4a4646f57d","impliedFormat":1},{"version":"93bd413918fa921c8729cef45302b24d8b6c7855d72d5bf82d3972595ae8dcbf","impliedFormat":1},{"version":"4ff41188773cbf465807dd2f7059c7494cbee5115608efc297383832a1150c43","impliedFormat":1},{"version":"dccdf1677e531e33f8ac961a68bc537418c9a414797c1ea7e91307501cdc3f5e","impliedFormat":1},{"version":"e184c4b8918ef56c8c9e68bd79f3f3780e2d0d75bf2b8a41da1509a40c2deb46","affectsGlobalScope":true,"impliedFormat":1},{"version":"d206b4baf4ddcc15d9d69a9a2f4999a72a2c6adeaa8af20fa7a9960816287555","impliedFormat":1},{"version":"93f437e1398a4f06a984f441f7fa7a9f0535c04399619b5c22e0b87bdee182cb","impliedFormat":1},{"version":"afbe24ab0d74694372baa632ecb28bb375be53f3be53f9b07ecd7fc994907de5","impliedFormat":1},{"version":"70731d10d5311bd4cf710ef7f6539b62660f4b0bfdbb3f9fbe1d25fe6366a7fa","affectsGlobalScope":true,"impliedFormat":1},{"version":"6b19db3600a17af69d4f33d08cc7076a7d19fb65bb36e442cac58929ec7c9482","affectsGlobalScope":true,"impliedFormat":1},{"version":"9e043a1bc8fbf2a255bccf9bf27e0f1caf916c3b0518ea34aa72357c0afd42ec","impliedFormat":1},{"version":"137c2894e8f3e9672d401cc0a305dc7b1db7c69511cf6d3970fb53302f9eae09","impliedFormat":1},{"version":"3bc2f1e2c95c04048212c569ed38e338873f6a8593930cf5a7ef24ffb38fc3b6","impliedFormat":1},{"version":"8145e07aad6da5f23f2fcd8c8e4c5c13fb26ee986a79d03b0829b8fce152d8b2","impliedFormat":1},{"version":"f9d9d753d430ed050dc1bf2667a1bab711ccbb1c1507183d794cc195a5b085cc","impliedFormat":1},{"version":"9eece5e586312581ccd106d4853e861aaaa1a39f8e3ea672b8c3847eedd12f6e","impliedFormat":1},{"version":"235bfb54b4869c26f7e98e3d1f68dbfc85acf4cf5c38a4444a006fbf74a8a43d","impliedFormat":1},{"version":"37ba7b45141a45ce6e80e66f2a96c8a5ab1bcef0fc2d0f56bb58df96ec67e972","impliedFormat":1},{"version":"93452d394fdd1dc551ec62f5042366f011a00d342d36d50793b3529bfc9bd633","impliedFormat":1},{"version":"bb715efb4857eb94539eafb420352105a0cff40746837c5140bf6b035dd220ba","affectsGlobalScope":true,"impliedFormat":1},{"version":"1851a3b4db78664f83901bb9cac9e45e03a37bb5933cc5bf37e10bb7e91ab4eb","impliedFormat":1},{"version":"fdedf82878e4c744bc2a1c1e802ae407d63474da51f14a54babe039018e53d8f","affectsGlobalScope":true,"impliedFormat":1},{"version":"27d8987fd22d92efe6560cf0ce11767bf089903ffe26047727debfd1f3bf438b","affectsGlobalScope":true,"impliedFormat":1},{"version":"578d8bb6dcb2a1c03c4c3f8eb71abc9677e1a5c788b7f24848e3138ce17f3400","impliedFormat":1},{"version":"4f029899f9bae07e225c43aef893590541b2b43267383bf5e32e3a884d219ed5","impliedFormat":1},{"version":"ae56f65caf3be91108707bd8dfbccc2a57a91feb5daabf7165a06a945545ed26","impliedFormat":1},{"version":"a136d5de521da20f31631a0a96bf712370779d1c05b7015d7019a9b2a0446ca9","impliedFormat":1},{"version":"5b566927cad2ed2139655d55d690ffa87df378b956e7fe1c96024c4d9f75c4cf","affectsGlobalScope":true,"impliedFormat":1},{"version":"bce947017cb7a2deebcc4f5ba04cead891ce6ad1602a4438ae45ed9aa1f39104","affectsGlobalScope":true,"impliedFormat":1},{"version":"d3dffd70e6375b872f0b4e152de4ae682d762c61a24881ecc5eb9f04c5caf76f","impliedFormat":1},{"version":"e2c72c065a36bc9ab2a00ac6a6f51e71501619a72c0609defd304d46610487a4","impliedFormat":1},{"version":"d91a7d8b5655c42986f1bdfe2105c4408f472831c8f20cf11a8c3345b6b56c8c","impliedFormat":1},{"version":"616075a6ac578cf5a013ee12964188b4412823796ce0b202c6f1d2e4ca8480d7","affectsGlobalScope":true,"impliedFormat":1},{"version":"e8a979b8af001c9fc2e774e7809d233c8ca955a28756f52ee5dee88ccb0611d2","impliedFormat":1},{"version":"cac793cc47c29e26e4ac3601dcb00b4435ebed26203485790e44f2ad8b6ad847","impliedFormat":1},{"version":"17ed71200119e86ccef2d96b73b02ce8854b76ad6bd21b5021d4269bec527b5f","impliedFormat":1},{"version":"e91ad231af87f864b3f07cd0e39b1cf6c133988156f087c1c3ccb0a5491c9115","impliedFormat":1},{"version":"03c258e060b7da220973f84b89615e4e9850e9b5d30b3a8e4840b3e3268ae8eb","impliedFormat":1},{"version":"319c37263037e8d9481a3dc7eadf6afa6a5f5c002189ebe28776ac1a62a38e15","impliedFormat":1},{"version":"837f5c12e3e94ee97aca37aa2a50ede521e5887fb7fa89330f5625b70597e116","impliedFormat":1},{"version":"908217c4f2244ec402b73533ebfcc46d6dcd34fc1c807ff403d7f98702abb3bc","impliedFormat":1},{"version":"74d5a87c3616cd5d8691059d531504403aa857e09cbaecb1c64dfb9ace0db185","impliedFormat":1}],"root":[90,92],"options":{"allowJs":true,"declaration":true,"declarationDir":"./","emitDeclarationOnly":false,"esModuleInterop":true,"jsx":2,"module":1,"outDir":"./","skipLibCheck":true,"strict":true,"target":3},"referencedMap":[[84,1],[93,2],[94,2],[95,2],[96,2],[97,3],[98,2],[100,4],[101,5],[99,2],[102,2],[103,2],[104,2],[150,6],[151,6],[152,7],[110,8],[153,9],[154,10],[155,11],[105,2],[108,12],[106,2],[107,2],[156,13],[157,14],[158,15],[159,16],[160,17],[161,18],[162,18],[164,19],[163,20],[165,21],[166,22],[167,23],[149,24],[109,2],[168,25],[169,26],[170,27],[202,28],[171,29],[172,30],[173,31],[174,32],[175,33],[176,34],[177,35],[178,36],[179,37],[180,38],[181,38],[182,39],[183,2],[184,40],[186,41],[185,42],[187,43],[188,44],[189,45],[190,46],[191,47],[192,48],[193,49],[194,50],[195,51],[196,52],[197,53],[198,54],[199,55],[200,56],[201,57],[87,2],[203,58],[85,2],[88,59],[206,60],[204,61],[207,2],[205,2],[208,2],[209,62],[111,2],[86,2],[89,58],[79,2],[80,63],[81,64],[82,63],[83,65],[77,2],[78,2],[13,2],[14,2],[16,2],[15,2],[2,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[3,2],[25,2],[26,2],[4,2],[27,2],[31,2],[28,2],[29,2],[30,2],[32,2],[33,2],[34,2],[5,2],[35,2],[36,2],[37,2],[38,2],[6,2],[42,2],[39,2],[40,2],[41,2],[43,2],[7,2],[44,2],[49,2],[50,2],[45,2],[46,2],[47,2],[48,2],[8,2],[54,2],[51,2],[52,2],[53,2],[55,2],[9,2],[56,2],[57,2],[58,2],[60,2],[59,2],[61,2],[62,2],[10,2],[63,2],[64,2],[65,2],[11,2],[66,2],[67,2],[68,2],[69,2],[70,2],[1,2],[71,2],[72,2],[12,2],[75,2],[74,2],[73,2],[76,2],[127,66],[137,67],[126,66],[147,68],[118,69],[117,70],[146,71],[140,72],[145,73],[120,74],[134,75],[119,76],[143,77],[115,78],[114,71],[144,79],[116,80],[121,81],[122,2],[125,81],[112,2],[148,82],[138,83],[129,84],[130,85],[132,86],[128,87],[131,88],[141,71],[123,89],[124,90],[133,91],[113,92],[136,83],[135,81],[139,2],[142,93],[91,94],[92,95],[90,96]],"version":"5.7.3"}