vitest 0.5.2 → 0.5.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.
- package/dist/chunk-api-setup.bfd4a66d.js +4444 -0
- package/dist/chunk-constants.a1a50d89.js +32 -0
- package/dist/chunk-defaults.1725002f.js +1833 -0
- package/dist/chunk-install-pkg.7ce2052a.js +1643 -0
- package/dist/chunk-integrations-globals.9bda85f1.js +24 -0
- package/dist/chunk-magic-string.6c8f4a10.js +1361 -0
- package/dist/chunk-runtime-chain.d86ab074.js +5946 -0
- package/dist/chunk-runtime-hooks.aef17670.js +42 -0
- package/dist/chunk-runtime-rpc.1832c38c.js +6 -0
- package/dist/chunk-utils-base.39767f3e.js +225 -0
- package/dist/chunk-utils-source-map.be2b14e2.js +3407 -0
- package/dist/chunk-vite-node-externalize.70d7fd52.js +10515 -0
- package/dist/chunk-vite-node-utils.d38851ea.js +9451 -0
- package/dist/cli.js +15 -67
- package/dist/config.d.ts +2 -0
- package/dist/entry.js +26 -16
- package/dist/index.d.ts +21 -2
- package/dist/index.js +5 -5
- package/dist/node.d.ts +2 -0
- package/dist/node.js +14 -67
- package/dist/{_commonjsHelpers-c9e3b764.js → vendor-_commonjsHelpers.91d4f591.js} +1 -1
- package/dist/vendor-index.665a6ba4.js +5708 -0
- package/dist/vendor-index.76be1f4d.js +187 -0
- package/dist/vendor-index.f6809970.js +1111 -0
- package/dist/worker.js +5 -5
- package/package.json +3 -3
- package/dist/client-4904f549.js +0 -9451
- package/dist/constants-c746dc5b.js +0 -32
- package/dist/diff-8a93a8e2.js +0 -1833
- package/dist/globals-2b9979c1.js +0 -24
- package/dist/index-072c45fd.js +0 -5708
- package/dist/index-0996637f.js +0 -1111
- package/dist/index-1488b423.js +0 -187
- package/dist/index-1945a7c3.js +0 -1643
- package/dist/index-7742eef3.js +0 -42
- package/dist/index-ed167b07.js +0 -225
- package/dist/magic-string.es-94000aea.js +0 -1361
- package/dist/rpc-377d999b.js +0 -6
- package/dist/setup-51b84c4b.js +0 -4444
- package/dist/source-map-4a00df0f.js +0 -3407
- package/dist/stdin-8aef0316.js +0 -10447
- package/dist/vi-2b3fed99.js +0 -5943
package/dist/cli.js
CHANGED
|
@@ -1,34 +1,34 @@
|
|
|
1
1
|
import { EventEmitter } from 'events';
|
|
2
|
-
import {
|
|
3
|
-
import { e as ensurePackageInstalled } from './index-ed167b07.js';
|
|
2
|
+
import { v as version, s as startVitest } from './chunk-vite-node-externalize.70d7fd52.js';
|
|
4
3
|
import 'buffer';
|
|
5
4
|
import 'path';
|
|
6
5
|
import 'child_process';
|
|
7
6
|
import 'process';
|
|
8
|
-
import './index
|
|
9
|
-
import './_commonjsHelpers
|
|
7
|
+
import './vendor-index.f6809970.js';
|
|
8
|
+
import './vendor-_commonjsHelpers.91d4f591.js';
|
|
10
9
|
import 'fs';
|
|
11
10
|
import 'assert';
|
|
12
11
|
import 'stream';
|
|
13
12
|
import 'util';
|
|
14
13
|
import 'url';
|
|
15
14
|
import 'os';
|
|
16
|
-
import './
|
|
15
|
+
import './chunk-utils-base.39767f3e.js';
|
|
16
|
+
import 'tty';
|
|
17
|
+
import 'local-pkg';
|
|
18
|
+
import './vendor-index.76be1f4d.js';
|
|
17
19
|
import 'vite';
|
|
18
|
-
import './constants
|
|
19
|
-
import './
|
|
20
|
+
import './chunk-constants.a1a50d89.js';
|
|
21
|
+
import './chunk-vite-node-utils.d38851ea.js';
|
|
20
22
|
import 'module';
|
|
21
23
|
import 'vm';
|
|
22
|
-
import './
|
|
23
|
-
import './source-map
|
|
24
|
+
import './chunk-defaults.1725002f.js';
|
|
25
|
+
import './chunk-utils-source-map.be2b14e2.js';
|
|
24
26
|
import 'perf_hooks';
|
|
25
27
|
import 'worker_threads';
|
|
26
28
|
import 'tinypool';
|
|
27
|
-
import './magic-string.
|
|
29
|
+
import './chunk-magic-string.6c8f4a10.js';
|
|
28
30
|
import 'readline';
|
|
29
|
-
import './index
|
|
30
|
-
import 'tty';
|
|
31
|
-
import 'local-pkg';
|
|
31
|
+
import './vendor-index.665a6ba4.js';
|
|
32
32
|
|
|
33
33
|
function toArr(any) {
|
|
34
34
|
return any == null ? [] : Array.isArray(any) ? any : [any];
|
|
@@ -643,60 +643,8 @@ class CAC extends EventEmitter {
|
|
|
643
643
|
|
|
644
644
|
const cac = (name = "") => new CAC(name);
|
|
645
645
|
|
|
646
|
-
var version = "0.5.2";
|
|
647
|
-
|
|
648
|
-
async function startVitest(cliFilters, options, viteOverrides) {
|
|
649
|
-
var _a;
|
|
650
|
-
process.env.TEST = "true";
|
|
651
|
-
process.env.VITEST = "true";
|
|
652
|
-
(_a = process.env).NODE_ENV ?? (_a.NODE_ENV = options.mode || "test");
|
|
653
|
-
if (options.run)
|
|
654
|
-
options.watch = false;
|
|
655
|
-
if (!await ensurePackageInstalled("vite")) {
|
|
656
|
-
process.exitCode = 1;
|
|
657
|
-
return false;
|
|
658
|
-
}
|
|
659
|
-
if (typeof options.coverage === "boolean")
|
|
660
|
-
options.coverage = { enabled: options.coverage };
|
|
661
|
-
const ctx = await createVitest(options, viteOverrides);
|
|
662
|
-
if (ctx.config.coverage.enabled) {
|
|
663
|
-
if (!await ensurePackageInstalled("c8")) {
|
|
664
|
-
process.exitCode = 1;
|
|
665
|
-
return false;
|
|
666
|
-
}
|
|
667
|
-
if (!process.env.NODE_V8_COVERAGE) {
|
|
668
|
-
process.env.NODE_V8_COVERAGE = ctx.config.coverage.tempDirectory;
|
|
669
|
-
const { exitCode } = await execa(process.argv0, process.argv.slice(1), { stdio: "inherit", reject: false });
|
|
670
|
-
process.exitCode = exitCode;
|
|
671
|
-
return false;
|
|
672
|
-
}
|
|
673
|
-
}
|
|
674
|
-
if (ctx.config.environment && ctx.config.environment !== "node") {
|
|
675
|
-
if (!await ensurePackageInstalled(ctx.config.environment)) {
|
|
676
|
-
process.exitCode = 1;
|
|
677
|
-
return false;
|
|
678
|
-
}
|
|
679
|
-
}
|
|
680
|
-
if (process.stdin.isTTY && ctx.config.watch)
|
|
681
|
-
registerConsoleShortcuts(ctx);
|
|
682
|
-
process.chdir(ctx.config.root);
|
|
683
|
-
ctx.onServerRestarted(() => {
|
|
684
|
-
ctx.start(cliFilters);
|
|
685
|
-
});
|
|
686
|
-
try {
|
|
687
|
-
await ctx.start(cliFilters);
|
|
688
|
-
} catch (e) {
|
|
689
|
-
process.exitCode = 1;
|
|
690
|
-
throw e;
|
|
691
|
-
} finally {
|
|
692
|
-
if (!ctx.config.watch)
|
|
693
|
-
await ctx.exit();
|
|
694
|
-
}
|
|
695
|
-
return true;
|
|
696
|
-
}
|
|
697
|
-
|
|
698
646
|
const cli = cac("vitest");
|
|
699
|
-
cli.version(version).option("-r, --root <path>", "root path").option("-c, --config <path>", "path to config file").option("-u, --update", "update snapshot").option("-w, --watch", "watch mode").option("-t, --testNamePattern <pattern>", "run
|
|
647
|
+
cli.version(version).option("-r, --root <path>", "root path").option("-c, --config <path>", "path to config file").option("-u, --update", "update snapshot").option("-w, --watch", "watch mode").option("-t, --testNamePattern <pattern>", "run tests with full names matching the specified pattern").option("--ui", "enable UI").option("--open", "open UI automatically (default: !process.env.CI))").option("--api [api]", "serve API, available options: --api.port <port>, --api.host [host] and --api.strictPort").option("--threads", "enabled threads (default: true)").option("--silent", "silent console output from tests").option("--isolate", "isolate environment for each test file (default: true)").option("--reporter <name>", "reporter").option("--outputFile <filename>", "write test results to a file when the --reporter=json option is also specified").option("--coverage", "use c8 for coverage").option("--run", "do not watch").option("--mode", "override Vite mode (default: test)").option("--globals", "inject apis globally").option("--global", "deprecated, use --globals").option("--dom", "mock browser api with happy-dom").option("--environment <env>", "runner environment (default: node)").option("--passWithNoTests", "pass when no tests found").option("--allowOnly", "Allow tests and suites that are marked as only (default: !process.env.CI)").help();
|
|
700
648
|
cli.command("run [...filters]").action(run);
|
|
701
649
|
cli.command("related [...filters]").action(runRelated);
|
|
702
650
|
cli.command("watch [...filters]").action(start);
|
|
@@ -716,4 +664,4 @@ async function start(cliFilters, options) {
|
|
|
716
664
|
if (await startVitest(cliFilters, options) === false)
|
|
717
665
|
process.exit();
|
|
718
666
|
}
|
|
719
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY2FjQDYuNy4xMi9ub2RlX21vZHVsZXMvY2FjL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL25vZGUvY2xpQXBpLnRzIiwiLi4vc3JjL25vZGUvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5cbmZ1bmN0aW9uIHRvQXJyKGFueSkge1xuXHRyZXR1cm4gYW55ID09IG51bGwgPyBbXSA6IEFycmF5LmlzQXJyYXkoYW55KSA/IGFueSA6IFthbnldO1xufVxuXG5mdW5jdGlvbiB0b1ZhbChvdXQsIGtleSwgdmFsLCBvcHRzKSB7XG5cdHZhciB4LCBvbGQ9b3V0W2tleV0sIG54dD0oXG5cdFx0ISF+b3B0cy5zdHJpbmcuaW5kZXhPZihrZXkpID8gKHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gdHJ1ZSA/ICcnIDogU3RyaW5nKHZhbCkpXG5cdFx0OiB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWxcblx0XHQ6ICEhfm9wdHMuYm9vbGVhbi5pbmRleE9mKGtleSkgPyAodmFsID09PSAnZmFsc2UnID8gZmFsc2UgOiB2YWwgPT09ICd0cnVlJyB8fCAob3V0Ll8ucHVzaCgoeCA9ICt2YWwseCAqIDAgPT09IDApID8geCA6IHZhbCksISF2YWwpKVxuXHRcdDogKHggPSArdmFsLHggKiAwID09PSAwKSA/IHggOiB2YWxcblx0KTtcblx0b3V0W2tleV0gPSBvbGQgPT0gbnVsbCA/IG54dCA6IChBcnJheS5pc0FycmF5KG9sZCkgPyBvbGQuY29uY2F0KG54dCkgOiBbb2xkLCBueHRdKTtcbn1cblxuZnVuY3Rpb24gbXJpMiAoYXJncywgb3B0cykge1xuXHRhcmdzID0gYXJncyB8fCBbXTtcblx0b3B0cyA9IG9wdHMgfHwge307XG5cblx0dmFyIGssIGFyciwgYXJnLCBuYW1lLCB2YWwsIG91dD17IF86W10gfTtcblx0dmFyIGk9MCwgaj0wLCBpZHg9MCwgbGVuPWFyZ3MubGVuZ3RoO1xuXG5cdGNvbnN0IGFsaWJpID0gb3B0cy5hbGlhcyAhPT0gdm9pZCAwO1xuXHRjb25zdCBzdHJpY3QgPSBvcHRzLnVua25vd24gIT09IHZvaWQgMDtcblx0Y29uc3QgZGVmYXVsdHMgPSBvcHRzLmRlZmF1bHQgIT09IHZvaWQgMDtcblxuXHRvcHRzLmFsaWFzID0gb3B0cy5hbGlhcyB8fCB7fTtcblx0b3B0cy5zdHJpbmcgPSB0b0FycihvcHRzLnN0cmluZyk7XG5cdG9wdHMuYm9vbGVhbiA9IHRvQXJyKG9wdHMuYm9vbGVhbik7XG5cblx0aWYgKGFsaWJpKSB7XG5cdFx0Zm9yIChrIGluIG9wdHMuYWxpYXMpIHtcblx0XHRcdGFyciA9IG9wdHMuYWxpYXNba10gPSB0b0FycihvcHRzLmFsaWFzW2tdKTtcblx0XHRcdGZvciAoaT0wOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdChvcHRzLmFsaWFzW2FycltpXV0gPSBhcnIuY29uY2F0KGspKS5zcGxpY2UoaSwgMSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Zm9yIChpPW9wdHMuYm9vbGVhbi5sZW5ndGg7IGktLSA+IDA7KSB7XG5cdFx0YXJyID0gb3B0cy5hbGlhc1tvcHRzLmJvb2xlYW5baV1dIHx8IFtdO1xuXHRcdGZvciAoaj1hcnIubGVuZ3RoOyBqLS0gPiAwOykgb3B0cy5ib29sZWFuLnB1c2goYXJyW2pdKTtcblx0fVxuXG5cdGZvciAoaT1vcHRzLnN0cmluZy5sZW5ndGg7IGktLSA+IDA7KSB7XG5cdFx0YXJyID0gb3B0cy5hbGlhc1tvcHRzLnN0cmluZ1tpXV0gfHwgW107XG5cdFx0Zm9yIChqPWFyci5sZW5ndGg7IGotLSA+IDA7KSBvcHRzLnN0cmluZy5wdXNoKGFycltqXSk7XG5cdH1cblxuXHRpZiAoZGVmYXVsdHMpIHtcblx0XHRmb3IgKGsgaW4gb3B0cy5kZWZhdWx0KSB7XG5cdFx0XHRuYW1lID0gdHlwZW9mIG9wdHMuZGVmYXVsdFtrXTtcblx0XHRcdGFyciA9IG9wdHMuYWxpYXNba10gPSBvcHRzLmFsaWFzW2tdIHx8IFtdO1xuXHRcdFx0aWYgKG9wdHNbbmFtZV0gIT09IHZvaWQgMCkge1xuXHRcdFx0XHRvcHRzW25hbWVdLnB1c2goayk7XG5cdFx0XHRcdGZvciAoaT0wOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0b3B0c1tuYW1lXS5wdXNoKGFycltpXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRjb25zdCBrZXlzID0gc3RyaWN0ID8gT2JqZWN0LmtleXMob3B0cy5hbGlhcykgOiBbXTtcblxuXHRmb3IgKGk9MDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0YXJnID0gYXJnc1tpXTtcblxuXHRcdGlmIChhcmcgPT09ICctLScpIHtcblx0XHRcdG91dC5fID0gb3V0Ll8uY29uY2F0KGFyZ3Muc2xpY2UoKytpKSk7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRmb3IgKGo9MDsgaiA8IGFyZy5sZW5ndGg7IGorKykge1xuXHRcdFx0aWYgKGFyZy5jaGFyQ29kZUF0KGopICE9PSA0NSkgYnJlYWs7IC8vIFwiLVwiXG5cdFx0fVxuXG5cdFx0aWYgKGogPT09IDApIHtcblx0XHRcdG91dC5fLnB1c2goYXJnKTtcblx0XHR9IGVsc2UgaWYgKGFyZy5zdWJzdHJpbmcoaiwgaiArIDMpID09PSAnbm8tJykge1xuXHRcdFx0bmFtZSA9IGFyZy5zdWJzdHJpbmcoaiArIDMpO1xuXHRcdFx0aWYgKHN0cmljdCAmJiAhfmtleXMuaW5kZXhPZihuYW1lKSkge1xuXHRcdFx0XHRyZXR1cm4gb3B0cy51bmtub3duKGFyZyk7XG5cdFx0XHR9XG5cdFx0XHRvdXRbbmFtZV0gPSBmYWxzZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yIChpZHg9aisxOyBpZHggPCBhcmcubGVuZ3RoOyBpZHgrKykge1xuXHRcdFx0XHRpZiAoYXJnLmNoYXJDb2RlQXQoaWR4KSA9PT0gNjEpIGJyZWFrOyAvLyBcIj1cIlxuXHRcdFx0fVxuXG5cdFx0XHRuYW1lID0gYXJnLnN1YnN0cmluZyhqLCBpZHgpO1xuXHRcdFx0dmFsID0gYXJnLnN1YnN0cmluZygrK2lkeCkgfHwgKGkrMSA9PT0gbGVuIHx8ICgnJythcmdzW2krMV0pLmNoYXJDb2RlQXQoMCkgPT09IDQ1IHx8IGFyZ3NbKytpXSk7XG5cdFx0XHRhcnIgPSAoaiA9PT0gMiA/IFtuYW1lXSA6IG5hbWUpO1xuXG5cdFx0XHRmb3IgKGlkeD0wOyBpZHggPCBhcnIubGVuZ3RoOyBpZHgrKykge1xuXHRcdFx0XHRuYW1lID0gYXJyW2lkeF07XG5cdFx0XHRcdGlmIChzdHJpY3QgJiYgIX5rZXlzLmluZGV4T2YobmFtZSkpIHJldHVybiBvcHRzLnVua25vd24oJy0nLnJlcGVhdChqKSArIG5hbWUpO1xuXHRcdFx0XHR0b1ZhbChvdXQsIG5hbWUsIChpZHggKyAxIDwgYXJyLmxlbmd0aCkgfHwgdmFsLCBvcHRzKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoZGVmYXVsdHMpIHtcblx0XHRmb3IgKGsgaW4gb3B0cy5kZWZhdWx0KSB7XG5cdFx0XHRpZiAob3V0W2tdID09PSB2b2lkIDApIHtcblx0XHRcdFx0b3V0W2tdID0gb3B0cy5kZWZhdWx0W2tdO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChhbGliaSkge1xuXHRcdGZvciAoayBpbiBvdXQpIHtcblx0XHRcdGFyciA9IG9wdHMuYWxpYXNba10gfHwgW107XG5cdFx0XHR3aGlsZSAoYXJyLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0b3V0W2Fyci5zaGlmdCgpXSA9IG91dFtrXTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3V0O1xufVxuXG5jb25zdCByZW1vdmVCcmFja2V0cyA9ICh2KSA9PiB2LnJlcGxhY2UoL1s8W10uKy8sIFwiXCIpLnRyaW0oKTtcbmNvbnN0IGZpbmRBbGxCcmFja2V0cyA9ICh2KSA9PiB7XG4gIGNvbnN0IEFOR0xFRF9CUkFDS0VUX1JFX0dMT0JBTCA9IC88KFtePl0rKT4vZztcbiAgY29uc3QgU1FVQVJFX0JSQUNLRVRfUkVfR0xPQkFMID0gL1xcWyhbXlxcXV0rKVxcXS9nO1xuICBjb25zdCByZXMgPSBbXTtcbiAgY29uc3QgcGFyc2UgPSAobWF0Y2gpID0+IHtcbiAgICBsZXQgdmFyaWFkaWMgPSBmYWxzZTtcbiAgICBsZXQgdmFsdWUgPSBtYXRjaFsxXTtcbiAgICBpZiAodmFsdWUuc3RhcnRzV2l0aChcIi4uLlwiKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgzKTtcbiAgICAgIHZhcmlhZGljID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVpcmVkOiBtYXRjaFswXS5zdGFydHNXaXRoKFwiPFwiKSxcbiAgICAgIHZhbHVlLFxuICAgICAgdmFyaWFkaWNcbiAgICB9O1xuICB9O1xuICBsZXQgYW5nbGVkTWF0Y2g7XG4gIHdoaWxlIChhbmdsZWRNYXRjaCA9IEFOR0xFRF9CUkFDS0VUX1JFX0dMT0JBTC5leGVjKHYpKSB7XG4gICAgcmVzLnB1c2gocGFyc2UoYW5nbGVkTWF0Y2gpKTtcbiAgfVxuICBsZXQgc3F1YXJlTWF0Y2g7XG4gIHdoaWxlIChzcXVhcmVNYXRjaCA9IFNRVUFSRV9CUkFDS0VUX1JFX0dMT0JBTC5leGVjKHYpKSB7XG4gICAgcmVzLnB1c2gocGFyc2Uoc3F1YXJlTWF0Y2gpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcbmNvbnN0IGdldE1yaU9wdGlvbnMgPSAob3B0aW9ucykgPT4ge1xuICBjb25zdCByZXN1bHQgPSB7YWxpYXM6IHt9LCBib29sZWFuOiBbXX07XG4gIGZvciAoY29uc3QgW2luZGV4LCBvcHRpb25dIG9mIG9wdGlvbnMuZW50cmllcygpKSB7XG4gICAgaWYgKG9wdGlvbi5uYW1lcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXN1bHQuYWxpYXNbb3B0aW9uLm5hbWVzWzBdXSA9IG9wdGlvbi5uYW1lcy5zbGljZSgxKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbi5pc0Jvb2xlYW4pIHtcbiAgICAgIGlmIChvcHRpb24ubmVnYXRlZCkge1xuICAgICAgICBjb25zdCBoYXNTdHJpbmdUeXBlT3B0aW9uID0gb3B0aW9ucy5zb21lKChvLCBpKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGkgIT09IGluZGV4ICYmIG8ubmFtZXMuc29tZSgobmFtZSkgPT4gb3B0aW9uLm5hbWVzLmluY2x1ZGVzKG5hbWUpKSAmJiB0eXBlb2Ygby5yZXF1aXJlZCA9PT0gXCJib29sZWFuXCI7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWhhc1N0cmluZ1R5cGVPcHRpb24pIHtcbiAgICAgICAgICByZXN1bHQuYm9vbGVhbi5wdXNoKG9wdGlvbi5uYW1lc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5ib29sZWFuLnB1c2gob3B0aW9uLm5hbWVzWzBdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5jb25zdCBmaW5kTG9uZ2VzdCA9IChhcnIpID0+IHtcbiAgcmV0dXJuIGFyci5zb3J0KChhLCBiKSA9PiB7XG4gICAgcmV0dXJuIGEubGVuZ3RoID4gYi5sZW5ndGggPyAtMSA6IDE7XG4gIH0pWzBdO1xufTtcbmNvbnN0IHBhZFJpZ2h0ID0gKHN0ciwgbGVuZ3RoKSA9PiB7XG4gIHJldHVybiBzdHIubGVuZ3RoID49IGxlbmd0aCA/IHN0ciA6IGAke3N0cn0ke1wiIFwiLnJlcGVhdChsZW5ndGggLSBzdHIubGVuZ3RoKX1gO1xufTtcbmNvbnN0IGNhbWVsY2FzZSA9IChpbnB1dCkgPT4ge1xuICByZXR1cm4gaW5wdXQucmVwbGFjZSgvKFthLXpdKS0oW2Etel0pL2csIChfLCBwMSwgcDIpID0+IHtcbiAgICByZXR1cm4gcDEgKyBwMi50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn07XG5jb25zdCBzZXREb3RQcm9wID0gKG9iaiwga2V5cywgdmFsKSA9PiB7XG4gIGxldCBpID0gMDtcbiAgbGV0IGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICBsZXQgdCA9IG9iajtcbiAgbGV0IHg7XG4gIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB4ID0gdFtrZXlzW2ldXTtcbiAgICB0ID0gdFtrZXlzW2ldXSA9IGkgPT09IGxlbmd0aCAtIDEgPyB2YWwgOiB4ICE9IG51bGwgPyB4IDogISF+a2V5c1tpICsgMV0uaW5kZXhPZihcIi5cIikgfHwgISgra2V5c1tpICsgMV0gPiAtMSkgPyB7fSA6IFtdO1xuICB9XG59O1xuY29uc3Qgc2V0QnlUeXBlID0gKG9iaiwgdHJhbnNmb3JtcykgPT4ge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0cmFuc2Zvcm1zKSkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IHRyYW5zZm9ybXNba2V5XTtcbiAgICBpZiAodHJhbnNmb3JtLnNob3VsZFRyYW5zZm9ybSkge1xuICAgICAgb2JqW2tleV0gPSBBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwoW10sIG9ialtrZXldKTtcbiAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtLnRyYW5zZm9ybUZ1bmN0aW9uID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqW2tleV0gPSBvYmpba2V5XS5tYXAodHJhbnNmb3JtLnRyYW5zZm9ybUZ1bmN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5jb25zdCBnZXRGaWxlTmFtZSA9IChpbnB1dCkgPT4ge1xuICBjb25zdCBtID0gLyhbXlxcXFxcXC9dKykkLy5leGVjKGlucHV0KTtcbiAgcmV0dXJuIG0gPyBtWzFdIDogXCJcIjtcbn07XG5jb25zdCBjYW1lbGNhc2VPcHRpb25OYW1lID0gKG5hbWUpID0+IHtcbiAgcmV0dXJuIG5hbWUuc3BsaXQoXCIuXCIpLm1hcCgodiwgaSkgPT4ge1xuICAgIHJldHVybiBpID09PSAwID8gY2FtZWxjYXNlKHYpIDogdjtcbiAgfSkuam9pbihcIi5cIik7XG59O1xuY2xhc3MgQ0FDRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFjayA9IG5ldyBFcnJvcihtZXNzYWdlKS5zdGFjaztcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgT3B0aW9uIHtcbiAgY29uc3RydWN0b3IocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZykge1xuICAgIHRoaXMucmF3TmFtZSA9IHJhd05hbWU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIHRoaXMuY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnKTtcbiAgICByYXdOYW1lID0gcmF3TmFtZS5yZXBsYWNlKC9cXC5cXCovZywgXCJcIik7XG4gICAgdGhpcy5uZWdhdGVkID0gZmFsc2U7XG4gICAgdGhpcy5uYW1lcyA9IHJlbW92ZUJyYWNrZXRzKHJhd05hbWUpLnNwbGl0KFwiLFwiKS5tYXAoKHYpID0+IHtcbiAgICAgIGxldCBuYW1lID0gdi50cmltKCkucmVwbGFjZSgvXi17MSwyfS8sIFwiXCIpO1xuICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aChcIm5vLVwiKSkge1xuICAgICAgICB0aGlzLm5lZ2F0ZWQgPSB0cnVlO1xuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9ebm8tLywgXCJcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FtZWxjYXNlT3B0aW9uTmFtZShuYW1lKTtcbiAgICB9KS5zb3J0KChhLCBiKSA9PiBhLmxlbmd0aCA+IGIubGVuZ3RoID8gMSA6IC0xKTtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWVzW3RoaXMubmFtZXMubGVuZ3RoIC0gMV07XG4gICAgaWYgKHRoaXMubmVnYXRlZCAmJiB0aGlzLmNvbmZpZy5kZWZhdWx0ID09IG51bGwpIHtcbiAgICAgIHRoaXMuY29uZmlnLmRlZmF1bHQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAocmF3TmFtZS5pbmNsdWRlcyhcIjxcIikpIHtcbiAgICAgIHRoaXMucmVxdWlyZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAocmF3TmFtZS5pbmNsdWRlcyhcIltcIikpIHtcbiAgICAgIHRoaXMucmVxdWlyZWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0Jvb2xlYW4gPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwcm9jZXNzQXJncyA9IHByb2Nlc3MuYXJndjtcbmNvbnN0IHBsYXRmb3JtSW5mbyA9IGAke3Byb2Nlc3MucGxhdGZvcm19LSR7cHJvY2Vzcy5hcmNofSBub2RlLSR7cHJvY2Vzcy52ZXJzaW9ufWA7XG5cbmNsYXNzIENvbW1hbmQge1xuICBjb25zdHJ1Y3RvcihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnID0ge30sIGNsaSkge1xuICAgIHRoaXMucmF3TmFtZSA9IHJhd05hbWU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuY2xpID0gY2xpO1xuICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgIHRoaXMuYWxpYXNOYW1lcyA9IFtdO1xuICAgIHRoaXMubmFtZSA9IHJlbW92ZUJyYWNrZXRzKHJhd05hbWUpO1xuICAgIHRoaXMuYXJncyA9IGZpbmRBbGxCcmFja2V0cyhyYXdOYW1lKTtcbiAgICB0aGlzLmV4YW1wbGVzID0gW107XG4gIH1cbiAgdXNhZ2UodGV4dCkge1xuICAgIHRoaXMudXNhZ2VUZXh0ID0gdGV4dDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBhbGxvd1Vua25vd25PcHRpb25zKCkge1xuICAgIHRoaXMuY29uZmlnLmFsbG93VW5rbm93bk9wdGlvbnMgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGlnbm9yZU9wdGlvbkRlZmF1bHRWYWx1ZSgpIHtcbiAgICB0aGlzLmNvbmZpZy5pZ25vcmVPcHRpb25EZWZhdWx0VmFsdWUgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHZlcnNpb24odmVyc2lvbiwgY3VzdG9tRmxhZ3MgPSBcIi12LCAtLXZlcnNpb25cIikge1xuICAgIHRoaXMudmVyc2lvbk51bWJlciA9IHZlcnNpb247XG4gICAgdGhpcy5vcHRpb24oY3VzdG9tRmxhZ3MsIFwiRGlzcGxheSB2ZXJzaW9uIG51bWJlclwiKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBleGFtcGxlKGV4YW1wbGUpIHtcbiAgICB0aGlzLmV4YW1wbGVzLnB1c2goZXhhbXBsZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgb3B0aW9uKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcpIHtcbiAgICBjb25zdCBvcHRpb24gPSBuZXcgT3B0aW9uKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcpO1xuICAgIHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgYWxpYXMobmFtZSkge1xuICAgIHRoaXMuYWxpYXNOYW1lcy5wdXNoKG5hbWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGFjdGlvbihjYWxsYmFjaykge1xuICAgIHRoaXMuY29tbWFuZEFjdGlvbiA9IGNhbGxiYWNrO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGlzTWF0Y2hlZChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZSA9PT0gbmFtZSB8fCB0aGlzLmFsaWFzTmFtZXMuaW5jbHVkZXMobmFtZSk7XG4gIH1cbiAgZ2V0IGlzRGVmYXVsdENvbW1hbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZSA9PT0gXCJcIiB8fCB0aGlzLmFsaWFzTmFtZXMuaW5jbHVkZXMoXCIhXCIpO1xuICB9XG4gIGdldCBpc0dsb2JhbENvbW1hbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBHbG9iYWxDb21tYW5kO1xuICB9XG4gIGhhc09wdGlvbihuYW1lKSB7XG4gICAgbmFtZSA9IG5hbWUuc3BsaXQoXCIuXCIpWzBdO1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gb3B0aW9uLm5hbWVzLmluY2x1ZGVzKG5hbWUpO1xuICAgIH0pO1xuICB9XG4gIG91dHB1dEhlbHAoKSB7XG4gICAgY29uc3Qge25hbWUsIGNvbW1hbmRzfSA9IHRoaXMuY2xpO1xuICAgIGNvbnN0IHtcbiAgICAgIHZlcnNpb25OdW1iZXIsXG4gICAgICBvcHRpb25zOiBnbG9iYWxPcHRpb25zLFxuICAgICAgaGVscENhbGxiYWNrXG4gICAgfSA9IHRoaXMuY2xpLmdsb2JhbENvbW1hbmQ7XG4gICAgbGV0IHNlY3Rpb25zID0gW1xuICAgICAge1xuICAgICAgICBib2R5OiBgJHtuYW1lfSR7dmVyc2lvbk51bWJlciA/IGAvJHt2ZXJzaW9uTnVtYmVyfWAgOiBcIlwifWBcbiAgICAgIH1cbiAgICBdO1xuICAgIHNlY3Rpb25zLnB1c2goe1xuICAgICAgdGl0bGU6IFwiVXNhZ2VcIixcbiAgICAgIGJvZHk6IGAgICQgJHtuYW1lfSAke3RoaXMudXNhZ2VUZXh0IHx8IHRoaXMucmF3TmFtZX1gXG4gICAgfSk7XG4gICAgY29uc3Qgc2hvd0NvbW1hbmRzID0gKHRoaXMuaXNHbG9iYWxDb21tYW5kIHx8IHRoaXMuaXNEZWZhdWx0Q29tbWFuZCkgJiYgY29tbWFuZHMubGVuZ3RoID4gMDtcbiAgICBpZiAoc2hvd0NvbW1hbmRzKSB7XG4gICAgICBjb25zdCBsb25nZXN0Q29tbWFuZE5hbWUgPSBmaW5kTG9uZ2VzdChjb21tYW5kcy5tYXAoKGNvbW1hbmQpID0+IGNvbW1hbmQucmF3TmFtZSkpO1xuICAgICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICAgIHRpdGxlOiBcIkNvbW1hbmRzXCIsXG4gICAgICAgIGJvZHk6IGNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgICAke3BhZFJpZ2h0KGNvbW1hbmQucmF3TmFtZSwgbG9uZ2VzdENvbW1hbmROYW1lLmxlbmd0aCl9ICAke2NvbW1hbmQuZGVzY3JpcHRpb259YDtcbiAgICAgICAgfSkuam9pbihcIlxcblwiKVxuICAgICAgfSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGBGb3IgbW9yZSBpbmZvLCBydW4gYW55IGNvbW1hbmQgd2l0aCB0aGUgXFxgLS1oZWxwXFxgIGZsYWdgLFxuICAgICAgICBib2R5OiBjb21tYW5kcy5tYXAoKGNvbW1hbmQpID0+IGAgICQgJHtuYW1lfSR7Y29tbWFuZC5uYW1lID09PSBcIlwiID8gXCJcIiA6IGAgJHtjb21tYW5kLm5hbWV9YH0gLS1oZWxwYCkuam9pbihcIlxcblwiKVxuICAgICAgfSk7XG4gICAgfVxuICAgIGxldCBvcHRpb25zID0gdGhpcy5pc0dsb2JhbENvbW1hbmQgPyBnbG9iYWxPcHRpb25zIDogWy4uLnRoaXMub3B0aW9ucywgLi4uZ2xvYmFsT3B0aW9ucyB8fCBbXV07XG4gICAgaWYgKCF0aGlzLmlzR2xvYmFsQ29tbWFuZCAmJiAhdGhpcy5pc0RlZmF1bHRDb21tYW5kKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLm5hbWUgIT09IFwidmVyc2lvblwiKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbG9uZ2VzdE9wdGlvbk5hbWUgPSBmaW5kTG9uZ2VzdChvcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24ucmF3TmFtZSkpO1xuICAgICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICAgIHRpdGxlOiBcIk9wdGlvbnNcIixcbiAgICAgICAgYm9keTogb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgIHJldHVybiBgICAke3BhZFJpZ2h0KG9wdGlvbi5yYXdOYW1lLCBsb25nZXN0T3B0aW9uTmFtZS5sZW5ndGgpfSAgJHtvcHRpb24uZGVzY3JpcHRpb259ICR7b3B0aW9uLmNvbmZpZy5kZWZhdWx0ID09PSB2b2lkIDAgPyBcIlwiIDogYChkZWZhdWx0OiAke29wdGlvbi5jb25maWcuZGVmYXVsdH0pYH1gO1xuICAgICAgICB9KS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZXhhbXBsZXMubGVuZ3RoID4gMCkge1xuICAgICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICAgIHRpdGxlOiBcIkV4YW1wbGVzXCIsXG4gICAgICAgIGJvZHk6IHRoaXMuZXhhbXBsZXMubWFwKChleGFtcGxlKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBleGFtcGxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBleGFtcGxlKG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXhhbXBsZTtcbiAgICAgICAgfSkuam9pbihcIlxcblwiKVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChoZWxwQ2FsbGJhY2spIHtcbiAgICAgIHNlY3Rpb25zID0gaGVscENhbGxiYWNrKHNlY3Rpb25zKSB8fCBzZWN0aW9ucztcbiAgICB9XG4gICAgY29uc29sZS5sb2coc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gc2VjdGlvbi50aXRsZSA/IGAke3NlY3Rpb24udGl0bGV9OlxuJHtzZWN0aW9uLmJvZHl9YCA6IHNlY3Rpb24uYm9keTtcbiAgICB9KS5qb2luKFwiXFxuXFxuXCIpKTtcbiAgfVxuICBvdXRwdXRWZXJzaW9uKCkge1xuICAgIGNvbnN0IHtuYW1lfSA9IHRoaXMuY2xpO1xuICAgIGNvbnN0IHt2ZXJzaW9uTnVtYmVyfSA9IHRoaXMuY2xpLmdsb2JhbENvbW1hbmQ7XG4gICAgaWYgKHZlcnNpb25OdW1iZXIpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LyR7dmVyc2lvbk51bWJlcn0gJHtwbGF0Zm9ybUluZm99YCk7XG4gICAgfVxuICB9XG4gIGNoZWNrUmVxdWlyZWRBcmdzKCkge1xuICAgIGNvbnN0IG1pbmltYWxBcmdzQ291bnQgPSB0aGlzLmFyZ3MuZmlsdGVyKChhcmcpID0+IGFyZy5yZXF1aXJlZCkubGVuZ3RoO1xuICAgIGlmICh0aGlzLmNsaS5hcmdzLmxlbmd0aCA8IG1pbmltYWxBcmdzQ291bnQpIHtcbiAgICAgIHRocm93IG5ldyBDQUNFcnJvcihgbWlzc2luZyByZXF1aXJlZCBhcmdzIGZvciBjb21tYW5kIFxcYCR7dGhpcy5yYXdOYW1lfVxcYGApO1xuICAgIH1cbiAgfVxuICBjaGVja1Vua25vd25PcHRpb25zKCkge1xuICAgIGNvbnN0IHtvcHRpb25zLCBnbG9iYWxDb21tYW5kfSA9IHRoaXMuY2xpO1xuICAgIGlmICghdGhpcy5jb25maWcuYWxsb3dVbmtub3duT3B0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChuYW1lICE9PSBcIi0tXCIgJiYgIXRoaXMuaGFzT3B0aW9uKG5hbWUpICYmICFnbG9iYWxDb21tYW5kLmhhc09wdGlvbihuYW1lKSkge1xuICAgICAgICAgIHRocm93IG5ldyBDQUNFcnJvcihgVW5rbm93biBvcHRpb24gXFxgJHtuYW1lLmxlbmd0aCA+IDEgPyBgLS0ke25hbWV9YCA6IGAtJHtuYW1lfWB9XFxgYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2hlY2tPcHRpb25WYWx1ZSgpIHtcbiAgICBjb25zdCB7b3B0aW9uczogcGFyc2VkT3B0aW9ucywgZ2xvYmFsQ29tbWFuZH0gPSB0aGlzLmNsaTtcbiAgICBjb25zdCBvcHRpb25zID0gWy4uLmdsb2JhbENvbW1hbmQub3B0aW9ucywgLi4udGhpcy5vcHRpb25zXTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHBhcnNlZE9wdGlvbnNbb3B0aW9uLm5hbWUuc3BsaXQoXCIuXCIpWzBdXTtcbiAgICAgIGlmIChvcHRpb24ucmVxdWlyZWQpIHtcbiAgICAgICAgY29uc3QgaGFzTmVnYXRlZCA9IG9wdGlvbnMuc29tZSgobykgPT4gby5uZWdhdGVkICYmIG8ubmFtZXMuaW5jbHVkZXMob3B0aW9uLm5hbWUpKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSAmJiAhaGFzTmVnYXRlZCkge1xuICAgICAgICAgIHRocm93IG5ldyBDQUNFcnJvcihgb3B0aW9uIFxcYCR7b3B0aW9uLnJhd05hbWV9XFxgIHZhbHVlIGlzIG1pc3NpbmdgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY2xhc3MgR2xvYmFsQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBjb25zdHJ1Y3RvcihjbGkpIHtcbiAgICBzdXBlcihcIkBAZ2xvYmFsQEBcIiwgXCJcIiwge30sIGNsaSk7XG4gIH1cbn1cblxudmFyIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcbmNsYXNzIENBQyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKG5hbWUgPSBcIlwiKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuY29tbWFuZHMgPSBbXTtcbiAgICB0aGlzLnJhd0FyZ3MgPSBbXTtcbiAgICB0aGlzLmFyZ3MgPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7fTtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQgPSBuZXcgR2xvYmFsQ29tbWFuZCh0aGlzKTtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQudXNhZ2UoXCI8Y29tbWFuZD4gW29wdGlvbnNdXCIpO1xuICB9XG4gIHVzYWdlKHRleHQpIHtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQudXNhZ2UodGV4dCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgY29tbWFuZChyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKSB7XG4gICAgY29uc3QgY29tbWFuZCA9IG5ldyBDb21tYW5kKHJhd05hbWUsIGRlc2NyaXB0aW9uIHx8IFwiXCIsIGNvbmZpZywgdGhpcyk7XG4gICAgY29tbWFuZC5nbG9iYWxDb21tYW5kID0gdGhpcy5nbG9iYWxDb21tYW5kO1xuICAgIHRoaXMuY29tbWFuZHMucHVzaChjb21tYW5kKTtcbiAgICByZXR1cm4gY29tbWFuZDtcbiAgfVxuICBvcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZykge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5vcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgaGVscChjYWxsYmFjaykge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5vcHRpb24oXCItaCwgLS1oZWxwXCIsIFwiRGlzcGxheSB0aGlzIG1lc3NhZ2VcIik7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLmhlbHBDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHRoaXMuc2hvd0hlbHBPbkV4aXQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHZlcnNpb24odmVyc2lvbiwgY3VzdG9tRmxhZ3MgPSBcIi12LCAtLXZlcnNpb25cIikge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC52ZXJzaW9uKHZlcnNpb24sIGN1c3RvbUZsYWdzKTtcbiAgICB0aGlzLnNob3dWZXJzaW9uT25FeGl0ID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBleGFtcGxlKGV4YW1wbGUpIHtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQuZXhhbXBsZShleGFtcGxlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBvdXRwdXRIZWxwKCkge1xuICAgIGlmICh0aGlzLm1hdGNoZWRDb21tYW5kKSB7XG4gICAgICB0aGlzLm1hdGNoZWRDb21tYW5kLm91dHB1dEhlbHAoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nbG9iYWxDb21tYW5kLm91dHB1dEhlbHAoKTtcbiAgICB9XG4gIH1cbiAgb3V0cHV0VmVyc2lvbigpIHtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQub3V0cHV0VmVyc2lvbigpO1xuICB9XG4gIHNldFBhcnNlZEluZm8oe2FyZ3MsIG9wdGlvbnN9LCBtYXRjaGVkQ29tbWFuZCwgbWF0Y2hlZENvbW1hbmROYW1lKSB7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIGlmIChtYXRjaGVkQ29tbWFuZCkge1xuICAgICAgdGhpcy5tYXRjaGVkQ29tbWFuZCA9IG1hdGNoZWRDb21tYW5kO1xuICAgIH1cbiAgICBpZiAobWF0Y2hlZENvbW1hbmROYW1lKSB7XG4gICAgICB0aGlzLm1hdGNoZWRDb21tYW5kTmFtZSA9IG1hdGNoZWRDb21tYW5kTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdW5zZXRNYXRjaGVkQ29tbWFuZCgpIHtcbiAgICB0aGlzLm1hdGNoZWRDb21tYW5kID0gdm9pZCAwO1xuICAgIHRoaXMubWF0Y2hlZENvbW1hbmROYW1lID0gdm9pZCAwO1xuICB9XG4gIHBhcnNlKGFyZ3YgPSBwcm9jZXNzQXJncywge1xuICAgIHJ1biA9IHRydWVcbiAgfSA9IHt9KSB7XG4gICAgdGhpcy5yYXdBcmdzID0gYXJndjtcbiAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgdGhpcy5uYW1lID0gYXJndlsxXSA/IGdldEZpbGVOYW1lKGFyZ3ZbMV0pIDogXCJjbGlcIjtcbiAgICB9XG4gICAgbGV0IHNob3VsZFBhcnNlID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgdGhpcy5jb21tYW5kcykge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5tcmkoYXJndi5zbGljZSgyKSwgY29tbWFuZCk7XG4gICAgICBjb25zdCBjb21tYW5kTmFtZSA9IHBhcnNlZC5hcmdzWzBdO1xuICAgICAgaWYgKGNvbW1hbmQuaXNNYXRjaGVkKGNvbW1hbmROYW1lKSkge1xuICAgICAgICBzaG91bGRQYXJzZSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBwYXJzZWRJbmZvID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHBhcnNlZCksIHtcbiAgICAgICAgICBhcmdzOiBwYXJzZWQuYXJncy5zbGljZSgxKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRQYXJzZWRJbmZvKHBhcnNlZEluZm8sIGNvbW1hbmQsIGNvbW1hbmROYW1lKTtcbiAgICAgICAgdGhpcy5lbWl0KGBjb21tYW5kOiR7Y29tbWFuZE5hbWV9YCwgY29tbWFuZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzaG91bGRQYXJzZSkge1xuICAgICAgZm9yIChjb25zdCBjb21tYW5kIG9mIHRoaXMuY29tbWFuZHMpIHtcbiAgICAgICAgaWYgKGNvbW1hbmQubmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgIHNob3VsZFBhcnNlID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5tcmkoYXJndi5zbGljZSgyKSwgY29tbWFuZCk7XG4gICAgICAgICAgdGhpcy5zZXRQYXJzZWRJbmZvKHBhcnNlZCwgY29tbWFuZCk7XG4gICAgICAgICAgdGhpcy5lbWl0KGBjb21tYW5kOiFgLCBjb21tYW5kKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2hvdWxkUGFyc2UpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMubXJpKGFyZ3Yuc2xpY2UoMikpO1xuICAgICAgdGhpcy5zZXRQYXJzZWRJbmZvKHBhcnNlZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVscCAmJiB0aGlzLnNob3dIZWxwT25FeGl0KSB7XG4gICAgICB0aGlzLm91dHB1dEhlbHAoKTtcbiAgICAgIHJ1biA9IGZhbHNlO1xuICAgICAgdGhpcy51bnNldE1hdGNoZWRDb21tYW5kKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMudmVyc2lvbiAmJiB0aGlzLnNob3dWZXJzaW9uT25FeGl0ICYmIHRoaXMubWF0Y2hlZENvbW1hbmROYW1lID09IG51bGwpIHtcbiAgICAgIHRoaXMub3V0cHV0VmVyc2lvbigpO1xuICAgICAgcnVuID0gZmFsc2U7XG4gICAgICB0aGlzLnVuc2V0TWF0Y2hlZENvbW1hbmQoKTtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkQXJndiA9IHthcmdzOiB0aGlzLmFyZ3MsIG9wdGlvbnM6IHRoaXMub3B0aW9uc307XG4gICAgaWYgKHJ1bikge1xuICAgICAgdGhpcy5ydW5NYXRjaGVkQ29tbWFuZCgpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMubWF0Y2hlZENvbW1hbmQgJiYgdGhpcy5hcmdzWzBdKSB7XG4gICAgICB0aGlzLmVtaXQoXCJjb21tYW5kOipcIik7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRBcmd2O1xuICB9XG4gIG1yaShhcmd2LCBjb21tYW5kKSB7XG4gICAgY29uc3QgY2xpT3B0aW9ucyA9IFtcbiAgICAgIC4uLnRoaXMuZ2xvYmFsQ29tbWFuZC5vcHRpb25zLFxuICAgICAgLi4uY29tbWFuZCA/IGNvbW1hbmQub3B0aW9ucyA6IFtdXG4gICAgXTtcbiAgICBjb25zdCBtcmlPcHRpb25zID0gZ2V0TXJpT3B0aW9ucyhjbGlPcHRpb25zKTtcbiAgICBsZXQgYXJnc0FmdGVyRG91YmxlRGFzaGVzID0gW107XG4gICAgY29uc3QgZG91YmxlRGFzaGVzSW5kZXggPSBhcmd2LmluZGV4T2YoXCItLVwiKTtcbiAgICBpZiAoZG91YmxlRGFzaGVzSW5kZXggPiAtMSkge1xuICAgICAgYXJnc0FmdGVyRG91YmxlRGFzaGVzID0gYXJndi5zbGljZShkb3VibGVEYXNoZXNJbmRleCArIDEpO1xuICAgICAgYXJndiA9IGFyZ3Yuc2xpY2UoMCwgZG91YmxlRGFzaGVzSW5kZXgpO1xuICAgIH1cbiAgICBsZXQgcGFyc2VkID0gbXJpMihhcmd2LCBtcmlPcHRpb25zKTtcbiAgICBwYXJzZWQgPSBPYmplY3Qua2V5cyhwYXJzZWQpLnJlZHVjZSgocmVzLCBuYW1lKSA9PiB7XG4gICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlcyksIHtcbiAgICAgICAgW2NhbWVsY2FzZU9wdGlvbk5hbWUobmFtZSldOiBwYXJzZWRbbmFtZV1cbiAgICAgIH0pO1xuICAgIH0sIHtfOiBbXX0pO1xuICAgIGNvbnN0IGFyZ3MgPSBwYXJzZWQuXztcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgXCItLVwiOiBhcmdzQWZ0ZXJEb3VibGVEYXNoZXNcbiAgICB9O1xuICAgIGNvbnN0IGlnbm9yZURlZmF1bHQgPSBjb21tYW5kICYmIGNvbW1hbmQuY29uZmlnLmlnbm9yZU9wdGlvbkRlZmF1bHRWYWx1ZSA/IGNvbW1hbmQuY29uZmlnLmlnbm9yZU9wdGlvbkRlZmF1bHRWYWx1ZSA6IHRoaXMuZ2xvYmFsQ29tbWFuZC5jb25maWcuaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlO1xuICAgIGxldCB0cmFuc2Zvcm1zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBmb3IgKGNvbnN0IGNsaU9wdGlvbiBvZiBjbGlPcHRpb25zKSB7XG4gICAgICBpZiAoIWlnbm9yZURlZmF1bHQgJiYgY2xpT3B0aW9uLmNvbmZpZy5kZWZhdWx0ICE9PSB2b2lkIDApIHtcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGNsaU9wdGlvbi5uYW1lcykge1xuICAgICAgICAgIG9wdGlvbnNbbmFtZV0gPSBjbGlPcHRpb24uY29uZmlnLmRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNsaU9wdGlvbi5jb25maWcudHlwZSkpIHtcbiAgICAgICAgaWYgKHRyYW5zZm9ybXNbY2xpT3B0aW9uLm5hbWVdID09PSB2b2lkIDApIHtcbiAgICAgICAgICB0cmFuc2Zvcm1zW2NsaU9wdGlvbi5uYW1lXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgdHJhbnNmb3Jtc1tjbGlPcHRpb24ubmFtZV1bXCJzaG91bGRUcmFuc2Zvcm1cIl0gPSB0cnVlO1xuICAgICAgICAgIHRyYW5zZm9ybXNbY2xpT3B0aW9uLm5hbWVdW1widHJhbnNmb3JtRnVuY3Rpb25cIl0gPSBjbGlPcHRpb24uY29uZmlnLnR5cGVbMF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyc2VkKSkge1xuICAgICAgaWYgKGtleSAhPT0gXCJfXCIpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgICAgIHNldERvdFByb3Aob3B0aW9ucywga2V5cywgcGFyc2VkW2tleV0pO1xuICAgICAgICBzZXRCeVR5cGUob3B0aW9ucywgdHJhbnNmb3Jtcyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBhcmdzLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG4gIH1cbiAgcnVuTWF0Y2hlZENvbW1hbmQoKSB7XG4gICAgY29uc3Qge2FyZ3MsIG9wdGlvbnMsIG1hdGNoZWRDb21tYW5kOiBjb21tYW5kfSA9IHRoaXM7XG4gICAgaWYgKCFjb21tYW5kIHx8ICFjb21tYW5kLmNvbW1hbmRBY3Rpb24pXG4gICAgICByZXR1cm47XG4gICAgY29tbWFuZC5jaGVja1Vua25vd25PcHRpb25zKCk7XG4gICAgY29tbWFuZC5jaGVja09wdGlvblZhbHVlKCk7XG4gICAgY29tbWFuZC5jaGVja1JlcXVpcmVkQXJncygpO1xuICAgIGNvbnN0IGFjdGlvbkFyZ3MgPSBbXTtcbiAgICBjb21tYW5kLmFyZ3MuZm9yRWFjaCgoYXJnLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGFyZy52YXJpYWRpYykge1xuICAgICAgICBhY3Rpb25BcmdzLnB1c2goYXJncy5zbGljZShpbmRleCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aW9uQXJncy5wdXNoKGFyZ3NbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBhY3Rpb25BcmdzLnB1c2gob3B0aW9ucyk7XG4gICAgcmV0dXJuIGNvbW1hbmQuY29tbWFuZEFjdGlvbi5hcHBseSh0aGlzLCBhY3Rpb25BcmdzKTtcbiAgfVxufVxuXG5jb25zdCBjYWMgPSAobmFtZSA9IFwiXCIpID0+IG5ldyBDQUMobmFtZSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNhYztcbmV4cG9ydCB7IENBQywgQ29tbWFuZCwgY2FjIH07XG4iLCJpbXBvcnQgeyBleGVjYSB9IGZyb20gJ2V4ZWNhJ1xuaW1wb3J0IHR5cGUgeyBVc2VyQ29uZmlnIGFzIFZpdGVVc2VyQ29uZmlnIH0gZnJvbSAndml0ZSdcbmltcG9ydCB0eXBlIHsgVXNlckNvbmZpZyB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHsgZW5zdXJlUGFja2FnZUluc3RhbGxlZCB9IGZyb20gJy4uL3V0aWxzJ1xuaW1wb3J0IHsgY3JlYXRlVml0ZXN0IH0gZnJvbSAnLi9jcmVhdGUnXG5pbXBvcnQgeyByZWdpc3RlckNvbnNvbGVTaG9ydGN1dHMgfSBmcm9tICcuL3N0ZGluJ1xuXG5leHBvcnQgaW50ZXJmYWNlIENsaU9wdGlvbnMgZXh0ZW5kcyBVc2VyQ29uZmlnIHtcbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSB3YXRjaCBtb2RlXG4gICAqL1xuICBydW4/OiBib29sZWFuXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydFZpdGVzdChjbGlGaWx0ZXJzOiBzdHJpbmdbXSwgb3B0aW9uczogQ2xpT3B0aW9ucywgdml0ZU92ZXJyaWRlcz86IFZpdGVVc2VyQ29uZmlnKSB7XG4gIHByb2Nlc3MuZW52LlRFU1QgPSAndHJ1ZSdcbiAgcHJvY2Vzcy5lbnYuVklURVNUID0gJ3RydWUnXG4gIHByb2Nlc3MuZW52Lk5PREVfRU5WID8/PSBvcHRpb25zLm1vZGUgfHwgJ3Rlc3QnXG5cbiAgaWYgKG9wdGlvbnMucnVuKVxuICAgIG9wdGlvbnMud2F0Y2ggPSBmYWxzZVxuXG4gIGlmICghYXdhaXQgZW5zdXJlUGFja2FnZUluc3RhbGxlZCgndml0ZScpKSB7XG4gICAgcHJvY2Vzcy5leGl0Q29kZSA9IDFcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb3ZlcmFnZSA9PT0gJ2Jvb2xlYW4nKVxuICAgIG9wdGlvbnMuY292ZXJhZ2UgPSB7IGVuYWJsZWQ6IG9wdGlvbnMuY292ZXJhZ2UgfVxuXG4gIGNvbnN0IGN0eCA9IGF3YWl0IGNyZWF0ZVZpdGVzdChvcHRpb25zLCB2aXRlT3ZlcnJpZGVzKVxuXG4gIGlmIChjdHguY29uZmlnLmNvdmVyYWdlLmVuYWJsZWQpIHtcbiAgICBpZiAoIWF3YWl0IGVuc3VyZVBhY2thZ2VJbnN0YWxsZWQoJ2M4JykpIHtcbiAgICAgIHByb2Nlc3MuZXhpdENvZGUgPSAxXG4gICAgICByZXR1cm4gZmFsc2VcbiAgICB9XG5cbiAgICBpZiAoIXByb2Nlc3MuZW52Lk5PREVfVjhfQ09WRVJBR0UpIHtcbiAgICAgIHByb2Nlc3MuZW52Lk5PREVfVjhfQ09WRVJBR0UgPSBjdHguY29uZmlnLmNvdmVyYWdlLnRlbXBEaXJlY3RvcnlcbiAgICAgIGNvbnN0IHsgZXhpdENvZGUgfSA9IGF3YWl0IGV4ZWNhKHByb2Nlc3MuYXJndjAsIHByb2Nlc3MuYXJndi5zbGljZSgxKSwgeyBzdGRpbzogJ2luaGVyaXQnLCByZWplY3Q6IGZhbHNlIH0pXG4gICAgICBwcm9jZXNzLmV4aXRDb2RlID0gZXhpdENvZGVcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGlmIChjdHguY29uZmlnLmVudmlyb25tZW50ICYmIGN0eC5jb25maWcuZW52aXJvbm1lbnQgIT09ICdub2RlJykge1xuICAgIGlmICghYXdhaXQgZW5zdXJlUGFja2FnZUluc3RhbGxlZChjdHguY29uZmlnLmVudmlyb25tZW50KSkge1xuICAgICAgcHJvY2Vzcy5leGl0Q29kZSA9IDFcbiAgICAgIHJldHVybiBmYWxzZVxuICAgIH1cbiAgfVxuXG4gIGlmIChwcm9jZXNzLnN0ZGluLmlzVFRZICYmIGN0eC5jb25maWcud2F0Y2gpXG4gICAgcmVnaXN0ZXJDb25zb2xlU2hvcnRjdXRzKGN0eClcblxuICBwcm9jZXNzLmNoZGlyKGN0eC5jb25maWcucm9vdClcblxuICBjdHgub25TZXJ2ZXJSZXN0YXJ0ZWQoKCkgPT4ge1xuICAgIC8vIFRPRE86IHJlLWNvbnNpZGVyIGhvdyB0byByZS1ydW4gdGhlIHRlc3RzIHRoZSBzZXJ2ZXIgc21hcnRseVxuICAgIGN0eC5zdGFydChjbGlGaWx0ZXJzKVxuICB9KVxuXG4gIHRyeSB7XG4gICAgYXdhaXQgY3R4LnN0YXJ0KGNsaUZpbHRlcnMpXG4gIH1cbiAgY2F0Y2ggKGUpIHtcbiAgICBwcm9jZXNzLmV4aXRDb2RlID0gMVxuICAgIHRocm93IGVcbiAgfVxuICBmaW5hbGx5IHtcbiAgICBpZiAoIWN0eC5jb25maWcud2F0Y2gpXG4gICAgICBhd2FpdCBjdHguZXhpdCgpXG4gIH1cbiAgcmV0dXJuIHRydWVcbn1cbiIsImltcG9ydCBjYWMgZnJvbSAnY2FjJ1xuaW1wb3J0IHsgdmVyc2lvbiB9IGZyb20gJy4uLy4uL3BhY2thZ2UuanNvbidcbmltcG9ydCB0eXBlIHsgQ2xpT3B0aW9ucyB9IGZyb20gJy4vY2xpQXBpJ1xuaW1wb3J0IHsgc3RhcnRWaXRlc3QgfSBmcm9tICcuL2NsaUFwaSdcblxuY29uc3QgY2xpID0gY2FjKCd2aXRlc3QnKVxuXG5jbGlcbiAgLnZlcnNpb24odmVyc2lvbilcbiAgLm9wdGlvbignLXIsIC0tcm9vdCA8cGF0aD4nLCAncm9vdCBwYXRoJylcbiAgLm9wdGlvbignLWMsIC0tY29uZmlnIDxwYXRoPicsICdwYXRoIHRvIGNvbmZpZyBmaWxlJylcbiAgLm9wdGlvbignLXUsIC0tdXBkYXRlJywgJ3VwZGF0ZSBzbmFwc2hvdCcpXG4gIC5vcHRpb24oJy13LCAtLXdhdGNoJywgJ3dhdGNoIG1vZGUnKVxuICAub3B0aW9uKCctdCwgLS10ZXN0TmFtZVBhdHRlcm4gPHBhdHRlcm4+JywgJ3J1biB0ZXN0IG5hbWVzIHdpdGggdGhlIHNwZWNpZmllZCBwYXR0ZXJuJylcbiAgLm9wdGlvbignLS11aScsICdlbmFibGUgVUknKVxuICAub3B0aW9uKCctLW9wZW4nLCAnb3BlbiBVSSBhdXRvbWF0aWNhbGx5IChkZWZhdWx0OiAhcHJvY2Vzcy5lbnYuQ0kpKScpXG4gIC5vcHRpb24oJy0tYXBpIFthcGldJywgJ3NlcnZlIEFQSSwgYXZhaWxhYmxlIG9wdGlvbnM6IC0tYXBpLnBvcnQgPHBvcnQ+LCAtLWFwaS5ob3N0IFtob3N0XSBhbmQgLS1hcGkuc3RyaWN0UG9ydCcpXG4gIC5vcHRpb24oJy0tdGhyZWFkcycsICdlbmFibGVkIHRocmVhZHMgKGRlZmF1bHQ6IHRydWUpJylcbiAgLm9wdGlvbignLS1zaWxlbnQnLCAnc2lsZW50IGNvbnNvbGUgb3V0cHV0IGZyb20gdGVzdHMnKVxuICAub3B0aW9uKCctLWlzb2xhdGUnLCAnaXNvbGF0ZSBlbnZpcm9ubWVudCBmb3IgZWFjaCB0ZXN0IGZpbGUgKGRlZmF1bHQ6IHRydWUpJylcbiAgLm9wdGlvbignLS1yZXBvcnRlciA8bmFtZT4nLCAncmVwb3J0ZXInKVxuICAub3B0aW9uKCctLW91dHB1dEZpbGUgPGZpbGVuYW1lPicsICd3cml0ZSB0ZXN0IHJlc3VsdHMgdG8gYSBmaWxlIHdoZW4gdGhlIC0tcmVwb3J0ZXI9anNvbiBvcHRpb24gaXMgYWxzbyBzcGVjaWZpZWQnKVxuICAub3B0aW9uKCctLWNvdmVyYWdlJywgJ3VzZSBjOCBmb3IgY292ZXJhZ2UnKVxuICAub3B0aW9uKCctLXJ1bicsICdkbyBub3Qgd2F0Y2gnKVxuICAub3B0aW9uKCctLW1vZGUnLCAnb3ZlcnJpZGUgVml0ZSBtb2RlIChkZWZhdWx0OiB0ZXN0KScpXG4gIC5vcHRpb24oJy0tZ2xvYmFscycsICdpbmplY3QgYXBpcyBnbG9iYWxseScpXG4gIC5vcHRpb24oJy0tZ2xvYmFsJywgJ2RlcHJlY2F0ZWQsIHVzZSAtLWdsb2JhbHMnKVxuICAub3B0aW9uKCctLWRvbScsICdtb2NrIGJyb3dzZXIgYXBpIHdpdGggaGFwcHktZG9tJylcbiAgLm9wdGlvbignLS1lbnZpcm9ubWVudCA8ZW52PicsICdydW5uZXIgZW52aXJvbm1lbnQgKGRlZmF1bHQ6IG5vZGUpJylcbiAgLm9wdGlvbignLS1wYXNzV2l0aE5vVGVzdHMnLCAncGFzcyB3aGVuIG5vIHRlc3RzIGZvdW5kJylcbiAgLm9wdGlvbignLS1hbGxvd09ubHknLCAnQWxsb3cgdGVzdHMgYW5kIHN1aXRlcyB0aGF0IGFyZSBtYXJrZWQgYXMgb25seSAoZGVmYXVsdDogIXByb2Nlc3MuZW52LkNJKScpXG4gIC5oZWxwKClcblxuY2xpXG4gIC5jb21tYW5kKCdydW4gWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihydW4pXG5cbmNsaVxuICAuY29tbWFuZCgncmVsYXRlZCBbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKHJ1blJlbGF0ZWQpXG5cbmNsaVxuICAuY29tbWFuZCgnd2F0Y2ggWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihzdGFydClcblxuY2xpXG4gIC5jb21tYW5kKCdkZXYgWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihzdGFydClcblxuY2xpXG4gIC5jb21tYW5kKCdbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKHN0YXJ0KVxuXG5jbGkucGFyc2UoKVxuXG5hc3luYyBmdW5jdGlvbiBydW5SZWxhdGVkKHJlbGF0ZWRGaWxlczogc3RyaW5nW10gfCBzdHJpbmcsIGFyZ3Y6IENsaU9wdGlvbnMpIHtcbiAgYXJndi5yZWxhdGVkID0gcmVsYXRlZEZpbGVzXG4gIGFyZ3YucGFzc1dpdGhOb1Rlc3RzID8/PSB0cnVlXG4gIGF3YWl0IHN0YXJ0KFtdLCBhcmd2KVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW4oY2xpRmlsdGVyczogc3RyaW5nW10sIG9wdGlvbnM6IENsaU9wdGlvbnMpIHtcbiAgb3B0aW9ucy5ydW4gPSB0cnVlXG4gIGF3YWl0IHN0YXJ0KGNsaUZpbHRlcnMsIG9wdGlvbnMpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGNsaUZpbHRlcnM6IHN0cmluZ1tdLCBvcHRpb25zOiBDbGlPcHRpb25zKSB7XG4gIGlmIChhd2FpdCBzdGFydFZpdGVzdChjbGlGaWx0ZXJzLCBvcHRpb25zKSA9PT0gZmFsc2UpXG4gICAgcHJvY2Vzcy5leGl0KClcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRTtBQUNwQixDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7QUFDcEMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUc7QUFDekIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDL0UsSUFBSSxPQUFPLEdBQUcsS0FBSyxTQUFTLEdBQUcsR0FBRztBQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxPQUFPLEdBQUcsS0FBSyxHQUFHLEdBQUcsS0FBSyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMs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
|
|
667
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLmpzIiwic291cmNlcyI6WyIuLi8uLi8uLi9ub2RlX21vZHVsZXMvLnBucG0vY2FjQDYuNy4xMi9ub2RlX21vZHVsZXMvY2FjL2Rpc3QvaW5kZXgubWpzIiwiLi4vc3JjL25vZGUvY2xpLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5cbmZ1bmN0aW9uIHRvQXJyKGFueSkge1xuXHRyZXR1cm4gYW55ID09IG51bGwgPyBbXSA6IEFycmF5LmlzQXJyYXkoYW55KSA/IGFueSA6IFthbnldO1xufVxuXG5mdW5jdGlvbiB0b1ZhbChvdXQsIGtleSwgdmFsLCBvcHRzKSB7XG5cdHZhciB4LCBvbGQ9b3V0W2tleV0sIG54dD0oXG5cdFx0ISF+b3B0cy5zdHJpbmcuaW5kZXhPZihrZXkpID8gKHZhbCA9PSBudWxsIHx8IHZhbCA9PT0gdHJ1ZSA/ICcnIDogU3RyaW5nKHZhbCkpXG5cdFx0OiB0eXBlb2YgdmFsID09PSAnYm9vbGVhbicgPyB2YWxcblx0XHQ6ICEhfm9wdHMuYm9vbGVhbi5pbmRleE9mKGtleSkgPyAodmFsID09PSAnZmFsc2UnID8gZmFsc2UgOiB2YWwgPT09ICd0cnVlJyB8fCAob3V0Ll8ucHVzaCgoeCA9ICt2YWwseCAqIDAgPT09IDApID8geCA6IHZhbCksISF2YWwpKVxuXHRcdDogKHggPSArdmFsLHggKiAwID09PSAwKSA/IHggOiB2YWxcblx0KTtcblx0b3V0W2tleV0gPSBvbGQgPT0gbnVsbCA/IG54dCA6IChBcnJheS5pc0FycmF5KG9sZCkgPyBvbGQuY29uY2F0KG54dCkgOiBbb2xkLCBueHRdKTtcbn1cblxuZnVuY3Rpb24gbXJpMiAoYXJncywgb3B0cykge1xuXHRhcmdzID0gYXJncyB8fCBbXTtcblx0b3B0cyA9IG9wdHMgfHwge307XG5cblx0dmFyIGssIGFyciwgYXJnLCBuYW1lLCB2YWwsIG91dD17IF86W10gfTtcblx0dmFyIGk9MCwgaj0wLCBpZHg9MCwgbGVuPWFyZ3MubGVuZ3RoO1xuXG5cdGNvbnN0IGFsaWJpID0gb3B0cy5hbGlhcyAhPT0gdm9pZCAwO1xuXHRjb25zdCBzdHJpY3QgPSBvcHRzLnVua25vd24gIT09IHZvaWQgMDtcblx0Y29uc3QgZGVmYXVsdHMgPSBvcHRzLmRlZmF1bHQgIT09IHZvaWQgMDtcblxuXHRvcHRzLmFsaWFzID0gb3B0cy5hbGlhcyB8fCB7fTtcblx0b3B0cy5zdHJpbmcgPSB0b0FycihvcHRzLnN0cmluZyk7XG5cdG9wdHMuYm9vbGVhbiA9IHRvQXJyKG9wdHMuYm9vbGVhbik7XG5cblx0aWYgKGFsaWJpKSB7XG5cdFx0Zm9yIChrIGluIG9wdHMuYWxpYXMpIHtcblx0XHRcdGFyciA9IG9wdHMuYWxpYXNba10gPSB0b0FycihvcHRzLmFsaWFzW2tdKTtcblx0XHRcdGZvciAoaT0wOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdChvcHRzLmFsaWFzW2FycltpXV0gPSBhcnIuY29uY2F0KGspKS5zcGxpY2UoaSwgMSk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Zm9yIChpPW9wdHMuYm9vbGVhbi5sZW5ndGg7IGktLSA+IDA7KSB7XG5cdFx0YXJyID0gb3B0cy5hbGlhc1tvcHRzLmJvb2xlYW5baV1dIHx8IFtdO1xuXHRcdGZvciAoaj1hcnIubGVuZ3RoOyBqLS0gPiAwOykgb3B0cy5ib29sZWFuLnB1c2goYXJyW2pdKTtcblx0fVxuXG5cdGZvciAoaT1vcHRzLnN0cmluZy5sZW5ndGg7IGktLSA+IDA7KSB7XG5cdFx0YXJyID0gb3B0cy5hbGlhc1tvcHRzLnN0cmluZ1tpXV0gfHwgW107XG5cdFx0Zm9yIChqPWFyci5sZW5ndGg7IGotLSA+IDA7KSBvcHRzLnN0cmluZy5wdXNoKGFycltqXSk7XG5cdH1cblxuXHRpZiAoZGVmYXVsdHMpIHtcblx0XHRmb3IgKGsgaW4gb3B0cy5kZWZhdWx0KSB7XG5cdFx0XHRuYW1lID0gdHlwZW9mIG9wdHMuZGVmYXVsdFtrXTtcblx0XHRcdGFyciA9IG9wdHMuYWxpYXNba10gPSBvcHRzLmFsaWFzW2tdIHx8IFtdO1xuXHRcdFx0aWYgKG9wdHNbbmFtZV0gIT09IHZvaWQgMCkge1xuXHRcdFx0XHRvcHRzW25hbWVdLnB1c2goayk7XG5cdFx0XHRcdGZvciAoaT0wOyBpIDwgYXJyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0b3B0c1tuYW1lXS5wdXNoKGFycltpXSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRjb25zdCBrZXlzID0gc3RyaWN0ID8gT2JqZWN0LmtleXMob3B0cy5hbGlhcykgOiBbXTtcblxuXHRmb3IgKGk9MDsgaSA8IGxlbjsgaSsrKSB7XG5cdFx0YXJnID0gYXJnc1tpXTtcblxuXHRcdGlmIChhcmcgPT09ICctLScpIHtcblx0XHRcdG91dC5fID0gb3V0Ll8uY29uY2F0KGFyZ3Muc2xpY2UoKytpKSk7XG5cdFx0XHRicmVhaztcblx0XHR9XG5cblx0XHRmb3IgKGo9MDsgaiA8IGFyZy5sZW5ndGg7IGorKykge1xuXHRcdFx0aWYgKGFyZy5jaGFyQ29kZUF0KGopICE9PSA0NSkgYnJlYWs7IC8vIFwiLVwiXG5cdFx0fVxuXG5cdFx0aWYgKGogPT09IDApIHtcblx0XHRcdG91dC5fLnB1c2goYXJnKTtcblx0XHR9IGVsc2UgaWYgKGFyZy5zdWJzdHJpbmcoaiwgaiArIDMpID09PSAnbm8tJykge1xuXHRcdFx0bmFtZSA9IGFyZy5zdWJzdHJpbmcoaiArIDMpO1xuXHRcdFx0aWYgKHN0cmljdCAmJiAhfmtleXMuaW5kZXhPZihuYW1lKSkge1xuXHRcdFx0XHRyZXR1cm4gb3B0cy51bmtub3duKGFyZyk7XG5cdFx0XHR9XG5cdFx0XHRvdXRbbmFtZV0gPSBmYWxzZTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0Zm9yIChpZHg9aisxOyBpZHggPCBhcmcubGVuZ3RoOyBpZHgrKykge1xuXHRcdFx0XHRpZiAoYXJnLmNoYXJDb2RlQXQoaWR4KSA9PT0gNjEpIGJyZWFrOyAvLyBcIj1cIlxuXHRcdFx0fVxuXG5cdFx0XHRuYW1lID0gYXJnLnN1YnN0cmluZyhqLCBpZHgpO1xuXHRcdFx0dmFsID0gYXJnLnN1YnN0cmluZygrK2lkeCkgfHwgKGkrMSA9PT0gbGVuIHx8ICgnJythcmdzW2krMV0pLmNoYXJDb2RlQXQoMCkgPT09IDQ1IHx8IGFyZ3NbKytpXSk7XG5cdFx0XHRhcnIgPSAoaiA9PT0gMiA/IFtuYW1lXSA6IG5hbWUpO1xuXG5cdFx0XHRmb3IgKGlkeD0wOyBpZHggPCBhcnIubGVuZ3RoOyBpZHgrKykge1xuXHRcdFx0XHRuYW1lID0gYXJyW2lkeF07XG5cdFx0XHRcdGlmIChzdHJpY3QgJiYgIX5rZXlzLmluZGV4T2YobmFtZSkpIHJldHVybiBvcHRzLnVua25vd24oJy0nLnJlcGVhdChqKSArIG5hbWUpO1xuXHRcdFx0XHR0b1ZhbChvdXQsIG5hbWUsIChpZHggKyAxIDwgYXJyLmxlbmd0aCkgfHwgdmFsLCBvcHRzKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRpZiAoZGVmYXVsdHMpIHtcblx0XHRmb3IgKGsgaW4gb3B0cy5kZWZhdWx0KSB7XG5cdFx0XHRpZiAob3V0W2tdID09PSB2b2lkIDApIHtcblx0XHRcdFx0b3V0W2tdID0gb3B0cy5kZWZhdWx0W2tdO1xuXHRcdFx0fVxuXHRcdH1cblx0fVxuXG5cdGlmIChhbGliaSkge1xuXHRcdGZvciAoayBpbiBvdXQpIHtcblx0XHRcdGFyciA9IG9wdHMuYWxpYXNba10gfHwgW107XG5cdFx0XHR3aGlsZSAoYXJyLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0b3V0W2Fyci5zaGlmdCgpXSA9IG91dFtrXTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRyZXR1cm4gb3V0O1xufVxuXG5jb25zdCByZW1vdmVCcmFja2V0cyA9ICh2KSA9PiB2LnJlcGxhY2UoL1s8W10uKy8sIFwiXCIpLnRyaW0oKTtcbmNvbnN0IGZpbmRBbGxCcmFja2V0cyA9ICh2KSA9PiB7XG4gIGNvbnN0IEFOR0xFRF9CUkFDS0VUX1JFX0dMT0JBTCA9IC88KFtePl0rKT4vZztcbiAgY29uc3QgU1FVQVJFX0JSQUNLRVRfUkVfR0xPQkFMID0gL1xcWyhbXlxcXV0rKVxcXS9nO1xuICBjb25zdCByZXMgPSBbXTtcbiAgY29uc3QgcGFyc2UgPSAobWF0Y2gpID0+IHtcbiAgICBsZXQgdmFyaWFkaWMgPSBmYWxzZTtcbiAgICBsZXQgdmFsdWUgPSBtYXRjaFsxXTtcbiAgICBpZiAodmFsdWUuc3RhcnRzV2l0aChcIi4uLlwiKSkge1xuICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgzKTtcbiAgICAgIHZhcmlhZGljID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlcXVpcmVkOiBtYXRjaFswXS5zdGFydHNXaXRoKFwiPFwiKSxcbiAgICAgIHZhbHVlLFxuICAgICAgdmFyaWFkaWNcbiAgICB9O1xuICB9O1xuICBsZXQgYW5nbGVkTWF0Y2g7XG4gIHdoaWxlIChhbmdsZWRNYXRjaCA9IEFOR0xFRF9CUkFDS0VUX1JFX0dMT0JBTC5leGVjKHYpKSB7XG4gICAgcmVzLnB1c2gocGFyc2UoYW5nbGVkTWF0Y2gpKTtcbiAgfVxuICBsZXQgc3F1YXJlTWF0Y2g7XG4gIHdoaWxlIChzcXVhcmVNYXRjaCA9IFNRVUFSRV9CUkFDS0VUX1JFX0dMT0JBTC5leGVjKHYpKSB7XG4gICAgcmVzLnB1c2gocGFyc2Uoc3F1YXJlTWF0Y2gpKTtcbiAgfVxuICByZXR1cm4gcmVzO1xufTtcbmNvbnN0IGdldE1yaU9wdGlvbnMgPSAob3B0aW9ucykgPT4ge1xuICBjb25zdCByZXN1bHQgPSB7YWxpYXM6IHt9LCBib29sZWFuOiBbXX07XG4gIGZvciAoY29uc3QgW2luZGV4LCBvcHRpb25dIG9mIG9wdGlvbnMuZW50cmllcygpKSB7XG4gICAgaWYgKG9wdGlvbi5uYW1lcy5sZW5ndGggPiAxKSB7XG4gICAgICByZXN1bHQuYWxpYXNbb3B0aW9uLm5hbWVzWzBdXSA9IG9wdGlvbi5uYW1lcy5zbGljZSgxKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbi5pc0Jvb2xlYW4pIHtcbiAgICAgIGlmIChvcHRpb24ubmVnYXRlZCkge1xuICAgICAgICBjb25zdCBoYXNTdHJpbmdUeXBlT3B0aW9uID0gb3B0aW9ucy5zb21lKChvLCBpKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIGkgIT09IGluZGV4ICYmIG8ubmFtZXMuc29tZSgobmFtZSkgPT4gb3B0aW9uLm5hbWVzLmluY2x1ZGVzKG5hbWUpKSAmJiB0eXBlb2Ygby5yZXF1aXJlZCA9PT0gXCJib29sZWFuXCI7XG4gICAgICAgIH0pO1xuICAgICAgICBpZiAoIWhhc1N0cmluZ1R5cGVPcHRpb24pIHtcbiAgICAgICAgICByZXN1bHQuYm9vbGVhbi5wdXNoKG9wdGlvbi5uYW1lc1swXSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlc3VsdC5ib29sZWFuLnB1c2gob3B0aW9uLm5hbWVzWzBdKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc3VsdDtcbn07XG5jb25zdCBmaW5kTG9uZ2VzdCA9IChhcnIpID0+IHtcbiAgcmV0dXJuIGFyci5zb3J0KChhLCBiKSA9PiB7XG4gICAgcmV0dXJuIGEubGVuZ3RoID4gYi5sZW5ndGggPyAtMSA6IDE7XG4gIH0pWzBdO1xufTtcbmNvbnN0IHBhZFJpZ2h0ID0gKHN0ciwgbGVuZ3RoKSA9PiB7XG4gIHJldHVybiBzdHIubGVuZ3RoID49IGxlbmd0aCA/IHN0ciA6IGAke3N0cn0ke1wiIFwiLnJlcGVhdChsZW5ndGggLSBzdHIubGVuZ3RoKX1gO1xufTtcbmNvbnN0IGNhbWVsY2FzZSA9IChpbnB1dCkgPT4ge1xuICByZXR1cm4gaW5wdXQucmVwbGFjZSgvKFthLXpdKS0oW2Etel0pL2csIChfLCBwMSwgcDIpID0+IHtcbiAgICByZXR1cm4gcDEgKyBwMi50b1VwcGVyQ2FzZSgpO1xuICB9KTtcbn07XG5jb25zdCBzZXREb3RQcm9wID0gKG9iaiwga2V5cywgdmFsKSA9PiB7XG4gIGxldCBpID0gMDtcbiAgbGV0IGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICBsZXQgdCA9IG9iajtcbiAgbGV0IHg7XG4gIGZvciAoOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICB4ID0gdFtrZXlzW2ldXTtcbiAgICB0ID0gdFtrZXlzW2ldXSA9IGkgPT09IGxlbmd0aCAtIDEgPyB2YWwgOiB4ICE9IG51bGwgPyB4IDogISF+a2V5c1tpICsgMV0uaW5kZXhPZihcIi5cIikgfHwgISgra2V5c1tpICsgMV0gPiAtMSkgPyB7fSA6IFtdO1xuICB9XG59O1xuY29uc3Qgc2V0QnlUeXBlID0gKG9iaiwgdHJhbnNmb3JtcykgPT4ge1xuICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh0cmFuc2Zvcm1zKSkge1xuICAgIGNvbnN0IHRyYW5zZm9ybSA9IHRyYW5zZm9ybXNba2V5XTtcbiAgICBpZiAodHJhbnNmb3JtLnNob3VsZFRyYW5zZm9ybSkge1xuICAgICAgb2JqW2tleV0gPSBBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwoW10sIG9ialtrZXldKTtcbiAgICAgIGlmICh0eXBlb2YgdHJhbnNmb3JtLnRyYW5zZm9ybUZ1bmN0aW9uID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgb2JqW2tleV0gPSBvYmpba2V5XS5tYXAodHJhbnNmb3JtLnRyYW5zZm9ybUZ1bmN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn07XG5jb25zdCBnZXRGaWxlTmFtZSA9IChpbnB1dCkgPT4ge1xuICBjb25zdCBtID0gLyhbXlxcXFxcXC9dKykkLy5leGVjKGlucHV0KTtcbiAgcmV0dXJuIG0gPyBtWzFdIDogXCJcIjtcbn07XG5jb25zdCBjYW1lbGNhc2VPcHRpb25OYW1lID0gKG5hbWUpID0+IHtcbiAgcmV0dXJuIG5hbWUuc3BsaXQoXCIuXCIpLm1hcCgodiwgaSkgPT4ge1xuICAgIHJldHVybiBpID09PSAwID8gY2FtZWxjYXNlKHYpIDogdjtcbiAgfSkuam9pbihcIi5cIik7XG59O1xuY2xhc3MgQ0FDRXJyb3IgZXh0ZW5kcyBFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2UpIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSh0aGlzLCB0aGlzLmNvbnN0cnVjdG9yKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zdGFjayA9IG5ldyBFcnJvcihtZXNzYWdlKS5zdGFjaztcbiAgICB9XG4gIH1cbn1cblxuY2xhc3MgT3B0aW9uIHtcbiAgY29uc3RydWN0b3IocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZykge1xuICAgIHRoaXMucmF3TmFtZSA9IHJhd05hbWU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIHRoaXMuY29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnKTtcbiAgICByYXdOYW1lID0gcmF3TmFtZS5yZXBsYWNlKC9cXC5cXCovZywgXCJcIik7XG4gICAgdGhpcy5uZWdhdGVkID0gZmFsc2U7XG4gICAgdGhpcy5uYW1lcyA9IHJlbW92ZUJyYWNrZXRzKHJhd05hbWUpLnNwbGl0KFwiLFwiKS5tYXAoKHYpID0+IHtcbiAgICAgIGxldCBuYW1lID0gdi50cmltKCkucmVwbGFjZSgvXi17MSwyfS8sIFwiXCIpO1xuICAgICAgaWYgKG5hbWUuc3RhcnRzV2l0aChcIm5vLVwiKSkge1xuICAgICAgICB0aGlzLm5lZ2F0ZWQgPSB0cnVlO1xuICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKC9ebm8tLywgXCJcIik7XG4gICAgICB9XG4gICAgICByZXR1cm4gY2FtZWxjYXNlT3B0aW9uTmFtZShuYW1lKTtcbiAgICB9KS5zb3J0KChhLCBiKSA9PiBhLmxlbmd0aCA+IGIubGVuZ3RoID8gMSA6IC0xKTtcbiAgICB0aGlzLm5hbWUgPSB0aGlzLm5hbWVzW3RoaXMubmFtZXMubGVuZ3RoIC0gMV07XG4gICAgaWYgKHRoaXMubmVnYXRlZCAmJiB0aGlzLmNvbmZpZy5kZWZhdWx0ID09IG51bGwpIHtcbiAgICAgIHRoaXMuY29uZmlnLmRlZmF1bHQgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAocmF3TmFtZS5pbmNsdWRlcyhcIjxcIikpIHtcbiAgICAgIHRoaXMucmVxdWlyZWQgPSB0cnVlO1xuICAgIH0gZWxzZSBpZiAocmF3TmFtZS5pbmNsdWRlcyhcIltcIikpIHtcbiAgICAgIHRoaXMucmVxdWlyZWQgPSBmYWxzZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5pc0Jvb2xlYW4gPSB0cnVlO1xuICAgIH1cbiAgfVxufVxuXG5jb25zdCBwcm9jZXNzQXJncyA9IHByb2Nlc3MuYXJndjtcbmNvbnN0IHBsYXRmb3JtSW5mbyA9IGAke3Byb2Nlc3MucGxhdGZvcm19LSR7cHJvY2Vzcy5hcmNofSBub2RlLSR7cHJvY2Vzcy52ZXJzaW9ufWA7XG5cbmNsYXNzIENvbW1hbmQge1xuICBjb25zdHJ1Y3RvcihyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnID0ge30sIGNsaSkge1xuICAgIHRoaXMucmF3TmFtZSA9IHJhd05hbWU7XG4gICAgdGhpcy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMuY2xpID0gY2xpO1xuICAgIHRoaXMub3B0aW9ucyA9IFtdO1xuICAgIHRoaXMuYWxpYXNOYW1lcyA9IFtdO1xuICAgIHRoaXMubmFtZSA9IHJlbW92ZUJyYWNrZXRzKHJhd05hbWUpO1xuICAgIHRoaXMuYXJncyA9IGZpbmRBbGxCcmFja2V0cyhyYXdOYW1lKTtcbiAgICB0aGlzLmV4YW1wbGVzID0gW107XG4gIH1cbiAgdXNhZ2UodGV4dCkge1xuICAgIHRoaXMudXNhZ2VUZXh0ID0gdGV4dDtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBhbGxvd1Vua25vd25PcHRpb25zKCkge1xuICAgIHRoaXMuY29uZmlnLmFsbG93VW5rbm93bk9wdGlvbnMgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGlnbm9yZU9wdGlvbkRlZmF1bHRWYWx1ZSgpIHtcbiAgICB0aGlzLmNvbmZpZy5pZ25vcmVPcHRpb25EZWZhdWx0VmFsdWUgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHZlcnNpb24odmVyc2lvbiwgY3VzdG9tRmxhZ3MgPSBcIi12LCAtLXZlcnNpb25cIikge1xuICAgIHRoaXMudmVyc2lvbk51bWJlciA9IHZlcnNpb247XG4gICAgdGhpcy5vcHRpb24oY3VzdG9tRmxhZ3MsIFwiRGlzcGxheSB2ZXJzaW9uIG51bWJlclwiKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBleGFtcGxlKGV4YW1wbGUpIHtcbiAgICB0aGlzLmV4YW1wbGVzLnB1c2goZXhhbXBsZSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgb3B0aW9uKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcpIHtcbiAgICBjb25zdCBvcHRpb24gPSBuZXcgT3B0aW9uKHJhd05hbWUsIGRlc2NyaXB0aW9uLCBjb25maWcpO1xuICAgIHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbik7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgYWxpYXMobmFtZSkge1xuICAgIHRoaXMuYWxpYXNOYW1lcy5wdXNoKG5hbWUpO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGFjdGlvbihjYWxsYmFjaykge1xuICAgIHRoaXMuY29tbWFuZEFjdGlvbiA9IGNhbGxiYWNrO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIGlzTWF0Y2hlZChuYW1lKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZSA9PT0gbmFtZSB8fCB0aGlzLmFsaWFzTmFtZXMuaW5jbHVkZXMobmFtZSk7XG4gIH1cbiAgZ2V0IGlzRGVmYXVsdENvbW1hbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMubmFtZSA9PT0gXCJcIiB8fCB0aGlzLmFsaWFzTmFtZXMuaW5jbHVkZXMoXCIhXCIpO1xuICB9XG4gIGdldCBpc0dsb2JhbENvbW1hbmQoKSB7XG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBHbG9iYWxDb21tYW5kO1xuICB9XG4gIGhhc09wdGlvbihuYW1lKSB7XG4gICAgbmFtZSA9IG5hbWUuc3BsaXQoXCIuXCIpWzBdO1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gb3B0aW9uLm5hbWVzLmluY2x1ZGVzKG5hbWUpO1xuICAgIH0pO1xuICB9XG4gIG91dHB1dEhlbHAoKSB7XG4gICAgY29uc3Qge25hbWUsIGNvbW1hbmRzfSA9IHRoaXMuY2xpO1xuICAgIGNvbnN0IHtcbiAgICAgIHZlcnNpb25OdW1iZXIsXG4gICAgICBvcHRpb25zOiBnbG9iYWxPcHRpb25zLFxuICAgICAgaGVscENhbGxiYWNrXG4gICAgfSA9IHRoaXMuY2xpLmdsb2JhbENvbW1hbmQ7XG4gICAgbGV0IHNlY3Rpb25zID0gW1xuICAgICAge1xuICAgICAgICBib2R5OiBgJHtuYW1lfSR7dmVyc2lvbk51bWJlciA/IGAvJHt2ZXJzaW9uTnVtYmVyfWAgOiBcIlwifWBcbiAgICAgIH1cbiAgICBdO1xuICAgIHNlY3Rpb25zLnB1c2goe1xuICAgICAgdGl0bGU6IFwiVXNhZ2VcIixcbiAgICAgIGJvZHk6IGAgICQgJHtuYW1lfSAke3RoaXMudXNhZ2VUZXh0IHx8IHRoaXMucmF3TmFtZX1gXG4gICAgfSk7XG4gICAgY29uc3Qgc2hvd0NvbW1hbmRzID0gKHRoaXMuaXNHbG9iYWxDb21tYW5kIHx8IHRoaXMuaXNEZWZhdWx0Q29tbWFuZCkgJiYgY29tbWFuZHMubGVuZ3RoID4gMDtcbiAgICBpZiAoc2hvd0NvbW1hbmRzKSB7XG4gICAgICBjb25zdCBsb25nZXN0Q29tbWFuZE5hbWUgPSBmaW5kTG9uZ2VzdChjb21tYW5kcy5tYXAoKGNvbW1hbmQpID0+IGNvbW1hbmQucmF3TmFtZSkpO1xuICAgICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICAgIHRpdGxlOiBcIkNvbW1hbmRzXCIsXG4gICAgICAgIGJvZHk6IGNvbW1hbmRzLm1hcCgoY29tbWFuZCkgPT4ge1xuICAgICAgICAgIHJldHVybiBgICAke3BhZFJpZ2h0KGNvbW1hbmQucmF3TmFtZSwgbG9uZ2VzdENvbW1hbmROYW1lLmxlbmd0aCl9ICAke2NvbW1hbmQuZGVzY3JpcHRpb259YDtcbiAgICAgICAgfSkuam9pbihcIlxcblwiKVxuICAgICAgfSk7XG4gICAgICBzZWN0aW9ucy5wdXNoKHtcbiAgICAgICAgdGl0bGU6IGBGb3IgbW9yZSBpbmZvLCBydW4gYW55IGNvbW1hbmQgd2l0aCB0aGUgXFxgLS1oZWxwXFxgIGZsYWdgLFxuICAgICAgICBib2R5OiBjb21tYW5kcy5tYXAoKGNvbW1hbmQpID0+IGAgICQgJHtuYW1lfSR7Y29tbWFuZC5uYW1lID09PSBcIlwiID8gXCJcIiA6IGAgJHtjb21tYW5kLm5hbWV9YH0gLS1oZWxwYCkuam9pbihcIlxcblwiKVxuICAgICAgfSk7XG4gICAgfVxuICAgIGxldCBvcHRpb25zID0gdGhpcy5pc0dsb2JhbENvbW1hbmQgPyBnbG9iYWxPcHRpb25zIDogWy4uLnRoaXMub3B0aW9ucywgLi4uZ2xvYmFsT3B0aW9ucyB8fCBbXV07XG4gICAgaWYgKCF0aGlzLmlzR2xvYmFsQ29tbWFuZCAmJiAhdGhpcy5pc0RlZmF1bHRDb21tYW5kKSB7XG4gICAgICBvcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoKG9wdGlvbikgPT4gb3B0aW9uLm5hbWUgIT09IFwidmVyc2lvblwiKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgY29uc3QgbG9uZ2VzdE9wdGlvbk5hbWUgPSBmaW5kTG9uZ2VzdChvcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24ucmF3TmFtZSkpO1xuICAgICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICAgIHRpdGxlOiBcIk9wdGlvbnNcIixcbiAgICAgICAgYm9keTogb3B0aW9ucy5tYXAoKG9wdGlvbikgPT4ge1xuICAgICAgICAgIHJldHVybiBgICAke3BhZFJpZ2h0KG9wdGlvbi5yYXdOYW1lLCBsb25nZXN0T3B0aW9uTmFtZS5sZW5ndGgpfSAgJHtvcHRpb24uZGVzY3JpcHRpb259ICR7b3B0aW9uLmNvbmZpZy5kZWZhdWx0ID09PSB2b2lkIDAgPyBcIlwiIDogYChkZWZhdWx0OiAke29wdGlvbi5jb25maWcuZGVmYXVsdH0pYH1gO1xuICAgICAgICB9KS5qb2luKFwiXFxuXCIpXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMuZXhhbXBsZXMubGVuZ3RoID4gMCkge1xuICAgICAgc2VjdGlvbnMucHVzaCh7XG4gICAgICAgIHRpdGxlOiBcIkV4YW1wbGVzXCIsXG4gICAgICAgIGJvZHk6IHRoaXMuZXhhbXBsZXMubWFwKChleGFtcGxlKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBleGFtcGxlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBleGFtcGxlKG5hbWUpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gZXhhbXBsZTtcbiAgICAgICAgfSkuam9pbihcIlxcblwiKVxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChoZWxwQ2FsbGJhY2spIHtcbiAgICAgIHNlY3Rpb25zID0gaGVscENhbGxiYWNrKHNlY3Rpb25zKSB8fCBzZWN0aW9ucztcbiAgICB9XG4gICAgY29uc29sZS5sb2coc2VjdGlvbnMubWFwKChzZWN0aW9uKSA9PiB7XG4gICAgICByZXR1cm4gc2VjdGlvbi50aXRsZSA/IGAke3NlY3Rpb24udGl0bGV9OlxuJHtzZWN0aW9uLmJvZHl9YCA6IHNlY3Rpb24uYm9keTtcbiAgICB9KS5qb2luKFwiXFxuXFxuXCIpKTtcbiAgfVxuICBvdXRwdXRWZXJzaW9uKCkge1xuICAgIGNvbnN0IHtuYW1lfSA9IHRoaXMuY2xpO1xuICAgIGNvbnN0IHt2ZXJzaW9uTnVtYmVyfSA9IHRoaXMuY2xpLmdsb2JhbENvbW1hbmQ7XG4gICAgaWYgKHZlcnNpb25OdW1iZXIpIHtcbiAgICAgIGNvbnNvbGUubG9nKGAke25hbWV9LyR7dmVyc2lvbk51bWJlcn0gJHtwbGF0Zm9ybUluZm99YCk7XG4gICAgfVxuICB9XG4gIGNoZWNrUmVxdWlyZWRBcmdzKCkge1xuICAgIGNvbnN0IG1pbmltYWxBcmdzQ291bnQgPSB0aGlzLmFyZ3MuZmlsdGVyKChhcmcpID0+IGFyZy5yZXF1aXJlZCkubGVuZ3RoO1xuICAgIGlmICh0aGlzLmNsaS5hcmdzLmxlbmd0aCA8IG1pbmltYWxBcmdzQ291bnQpIHtcbiAgICAgIHRocm93IG5ldyBDQUNFcnJvcihgbWlzc2luZyByZXF1aXJlZCBhcmdzIGZvciBjb21tYW5kIFxcYCR7dGhpcy5yYXdOYW1lfVxcYGApO1xuICAgIH1cbiAgfVxuICBjaGVja1Vua25vd25PcHRpb25zKCkge1xuICAgIGNvbnN0IHtvcHRpb25zLCBnbG9iYWxDb21tYW5kfSA9IHRoaXMuY2xpO1xuICAgIGlmICghdGhpcy5jb25maWcuYWxsb3dVbmtub3duT3B0aW9ucykge1xuICAgICAgZm9yIChjb25zdCBuYW1lIG9mIE9iamVjdC5rZXlzKG9wdGlvbnMpKSB7XG4gICAgICAgIGlmIChuYW1lICE9PSBcIi0tXCIgJiYgIXRoaXMuaGFzT3B0aW9uKG5hbWUpICYmICFnbG9iYWxDb21tYW5kLmhhc09wdGlvbihuYW1lKSkge1xuICAgICAgICAgIHRocm93IG5ldyBDQUNFcnJvcihgVW5rbm93biBvcHRpb24gXFxgJHtuYW1lLmxlbmd0aCA+IDEgPyBgLS0ke25hbWV9YCA6IGAtJHtuYW1lfWB9XFxgYCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgY2hlY2tPcHRpb25WYWx1ZSgpIHtcbiAgICBjb25zdCB7b3B0aW9uczogcGFyc2VkT3B0aW9ucywgZ2xvYmFsQ29tbWFuZH0gPSB0aGlzLmNsaTtcbiAgICBjb25zdCBvcHRpb25zID0gWy4uLmdsb2JhbENvbW1hbmQub3B0aW9ucywgLi4udGhpcy5vcHRpb25zXTtcbiAgICBmb3IgKGNvbnN0IG9wdGlvbiBvZiBvcHRpb25zKSB7XG4gICAgICBjb25zdCB2YWx1ZSA9IHBhcnNlZE9wdGlvbnNbb3B0aW9uLm5hbWUuc3BsaXQoXCIuXCIpWzBdXTtcbiAgICAgIGlmIChvcHRpb24ucmVxdWlyZWQpIHtcbiAgICAgICAgY29uc3QgaGFzTmVnYXRlZCA9IG9wdGlvbnMuc29tZSgobykgPT4gby5uZWdhdGVkICYmIG8ubmFtZXMuaW5jbHVkZXMob3B0aW9uLm5hbWUpKTtcbiAgICAgICAgaWYgKHZhbHVlID09PSB0cnVlIHx8IHZhbHVlID09PSBmYWxzZSAmJiAhaGFzTmVnYXRlZCkge1xuICAgICAgICAgIHRocm93IG5ldyBDQUNFcnJvcihgb3B0aW9uIFxcYCR7b3B0aW9uLnJhd05hbWV9XFxgIHZhbHVlIGlzIG1pc3NpbmdgKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY2xhc3MgR2xvYmFsQ29tbWFuZCBleHRlbmRzIENvbW1hbmQge1xuICBjb25zdHJ1Y3RvcihjbGkpIHtcbiAgICBzdXBlcihcIkBAZ2xvYmFsQEBcIiwgXCJcIiwge30sIGNsaSk7XG4gIH1cbn1cblxudmFyIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbjtcbmNsYXNzIENBQyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XG4gIGNvbnN0cnVjdG9yKG5hbWUgPSBcIlwiKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLm5hbWUgPSBuYW1lO1xuICAgIHRoaXMuY29tbWFuZHMgPSBbXTtcbiAgICB0aGlzLnJhd0FyZ3MgPSBbXTtcbiAgICB0aGlzLmFyZ3MgPSBbXTtcbiAgICB0aGlzLm9wdGlvbnMgPSB7fTtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQgPSBuZXcgR2xvYmFsQ29tbWFuZCh0aGlzKTtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQudXNhZ2UoXCI8Y29tbWFuZD4gW29wdGlvbnNdXCIpO1xuICB9XG4gIHVzYWdlKHRleHQpIHtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQudXNhZ2UodGV4dCk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgY29tbWFuZChyYXdOYW1lLCBkZXNjcmlwdGlvbiwgY29uZmlnKSB7XG4gICAgY29uc3QgY29tbWFuZCA9IG5ldyBDb21tYW5kKHJhd05hbWUsIGRlc2NyaXB0aW9uIHx8IFwiXCIsIGNvbmZpZywgdGhpcyk7XG4gICAgY29tbWFuZC5nbG9iYWxDb21tYW5kID0gdGhpcy5nbG9iYWxDb21tYW5kO1xuICAgIHRoaXMuY29tbWFuZHMucHVzaChjb21tYW5kKTtcbiAgICByZXR1cm4gY29tbWFuZDtcbiAgfVxuICBvcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZykge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5vcHRpb24ocmF3TmFtZSwgZGVzY3JpcHRpb24sIGNvbmZpZyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgaGVscChjYWxsYmFjaykge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC5vcHRpb24oXCItaCwgLS1oZWxwXCIsIFwiRGlzcGxheSB0aGlzIG1lc3NhZ2VcIik7XG4gICAgdGhpcy5nbG9iYWxDb21tYW5kLmhlbHBDYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHRoaXMuc2hvd0hlbHBPbkV4aXQgPSB0cnVlO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG4gIHZlcnNpb24odmVyc2lvbiwgY3VzdG9tRmxhZ3MgPSBcIi12LCAtLXZlcnNpb25cIikge1xuICAgIHRoaXMuZ2xvYmFsQ29tbWFuZC52ZXJzaW9uKHZlcnNpb24sIGN1c3RvbUZsYWdzKTtcbiAgICB0aGlzLnNob3dWZXJzaW9uT25FeGl0ID0gdHJ1ZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBleGFtcGxlKGV4YW1wbGUpIHtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQuZXhhbXBsZShleGFtcGxlKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBvdXRwdXRIZWxwKCkge1xuICAgIGlmICh0aGlzLm1hdGNoZWRDb21tYW5kKSB7XG4gICAgICB0aGlzLm1hdGNoZWRDb21tYW5kLm91dHB1dEhlbHAoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5nbG9iYWxDb21tYW5kLm91dHB1dEhlbHAoKTtcbiAgICB9XG4gIH1cbiAgb3V0cHV0VmVyc2lvbigpIHtcbiAgICB0aGlzLmdsb2JhbENvbW1hbmQub3V0cHV0VmVyc2lvbigpO1xuICB9XG4gIHNldFBhcnNlZEluZm8oe2FyZ3MsIG9wdGlvbnN9LCBtYXRjaGVkQ29tbWFuZCwgbWF0Y2hlZENvbW1hbmROYW1lKSB7XG4gICAgdGhpcy5hcmdzID0gYXJncztcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuICAgIGlmIChtYXRjaGVkQ29tbWFuZCkge1xuICAgICAgdGhpcy5tYXRjaGVkQ29tbWFuZCA9IG1hdGNoZWRDb21tYW5kO1xuICAgIH1cbiAgICBpZiAobWF0Y2hlZENvbW1hbmROYW1lKSB7XG4gICAgICB0aGlzLm1hdGNoZWRDb21tYW5kTmFtZSA9IG1hdGNoZWRDb21tYW5kTmFtZTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbiAgdW5zZXRNYXRjaGVkQ29tbWFuZCgpIHtcbiAgICB0aGlzLm1hdGNoZWRDb21tYW5kID0gdm9pZCAwO1xuICAgIHRoaXMubWF0Y2hlZENvbW1hbmROYW1lID0gdm9pZCAwO1xuICB9XG4gIHBhcnNlKGFyZ3YgPSBwcm9jZXNzQXJncywge1xuICAgIHJ1biA9IHRydWVcbiAgfSA9IHt9KSB7XG4gICAgdGhpcy5yYXdBcmdzID0gYXJndjtcbiAgICBpZiAoIXRoaXMubmFtZSkge1xuICAgICAgdGhpcy5uYW1lID0gYXJndlsxXSA/IGdldEZpbGVOYW1lKGFyZ3ZbMV0pIDogXCJjbGlcIjtcbiAgICB9XG4gICAgbGV0IHNob3VsZFBhcnNlID0gdHJ1ZTtcbiAgICBmb3IgKGNvbnN0IGNvbW1hbmQgb2YgdGhpcy5jb21tYW5kcykge1xuICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5tcmkoYXJndi5zbGljZSgyKSwgY29tbWFuZCk7XG4gICAgICBjb25zdCBjb21tYW5kTmFtZSA9IHBhcnNlZC5hcmdzWzBdO1xuICAgICAgaWYgKGNvbW1hbmQuaXNNYXRjaGVkKGNvbW1hbmROYW1lKSkge1xuICAgICAgICBzaG91bGRQYXJzZSA9IGZhbHNlO1xuICAgICAgICBjb25zdCBwYXJzZWRJbmZvID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHBhcnNlZCksIHtcbiAgICAgICAgICBhcmdzOiBwYXJzZWQuYXJncy5zbGljZSgxKVxuICAgICAgICB9KTtcbiAgICAgICAgdGhpcy5zZXRQYXJzZWRJbmZvKHBhcnNlZEluZm8sIGNvbW1hbmQsIGNvbW1hbmROYW1lKTtcbiAgICAgICAgdGhpcy5lbWl0KGBjb21tYW5kOiR7Y29tbWFuZE5hbWV9YCwgY29tbWFuZCk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzaG91bGRQYXJzZSkge1xuICAgICAgZm9yIChjb25zdCBjb21tYW5kIG9mIHRoaXMuY29tbWFuZHMpIHtcbiAgICAgICAgaWYgKGNvbW1hbmQubmFtZSA9PT0gXCJcIikge1xuICAgICAgICAgIHNob3VsZFBhcnNlID0gZmFsc2U7XG4gICAgICAgICAgY29uc3QgcGFyc2VkID0gdGhpcy5tcmkoYXJndi5zbGljZSgyKSwgY29tbWFuZCk7XG4gICAgICAgICAgdGhpcy5zZXRQYXJzZWRJbmZvKHBhcnNlZCwgY29tbWFuZCk7XG4gICAgICAgICAgdGhpcy5lbWl0KGBjb21tYW5kOiFgLCBjb21tYW5kKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoc2hvdWxkUGFyc2UpIHtcbiAgICAgIGNvbnN0IHBhcnNlZCA9IHRoaXMubXJpKGFyZ3Yuc2xpY2UoMikpO1xuICAgICAgdGhpcy5zZXRQYXJzZWRJbmZvKHBhcnNlZCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMuaGVscCAmJiB0aGlzLnNob3dIZWxwT25FeGl0KSB7XG4gICAgICB0aGlzLm91dHB1dEhlbHAoKTtcbiAgICAgIHJ1biA9IGZhbHNlO1xuICAgICAgdGhpcy51bnNldE1hdGNoZWRDb21tYW5kKCk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdGlvbnMudmVyc2lvbiAmJiB0aGlzLnNob3dWZXJzaW9uT25FeGl0ICYmIHRoaXMubWF0Y2hlZENvbW1hbmROYW1lID09IG51bGwpIHtcbiAgICAgIHRoaXMub3V0cHV0VmVyc2lvbigpO1xuICAgICAgcnVuID0gZmFsc2U7XG4gICAgICB0aGlzLnVuc2V0TWF0Y2hlZENvbW1hbmQoKTtcbiAgICB9XG4gICAgY29uc3QgcGFyc2VkQXJndiA9IHthcmdzOiB0aGlzLmFyZ3MsIG9wdGlvbnM6IHRoaXMub3B0aW9uc307XG4gICAgaWYgKHJ1bikge1xuICAgICAgdGhpcy5ydW5NYXRjaGVkQ29tbWFuZCgpO1xuICAgIH1cbiAgICBpZiAoIXRoaXMubWF0Y2hlZENvbW1hbmQgJiYgdGhpcy5hcmdzWzBdKSB7XG4gICAgICB0aGlzLmVtaXQoXCJjb21tYW5kOipcIik7XG4gICAgfVxuICAgIHJldHVybiBwYXJzZWRBcmd2O1xuICB9XG4gIG1yaShhcmd2LCBjb21tYW5kKSB7XG4gICAgY29uc3QgY2xpT3B0aW9ucyA9IFtcbiAgICAgIC4uLnRoaXMuZ2xvYmFsQ29tbWFuZC5vcHRpb25zLFxuICAgICAgLi4uY29tbWFuZCA/IGNvbW1hbmQub3B0aW9ucyA6IFtdXG4gICAgXTtcbiAgICBjb25zdCBtcmlPcHRpb25zID0gZ2V0TXJpT3B0aW9ucyhjbGlPcHRpb25zKTtcbiAgICBsZXQgYXJnc0FmdGVyRG91YmxlRGFzaGVzID0gW107XG4gICAgY29uc3QgZG91YmxlRGFzaGVzSW5kZXggPSBhcmd2LmluZGV4T2YoXCItLVwiKTtcbiAgICBpZiAoZG91YmxlRGFzaGVzSW5kZXggPiAtMSkge1xuICAgICAgYXJnc0FmdGVyRG91YmxlRGFzaGVzID0gYXJndi5zbGljZShkb3VibGVEYXNoZXNJbmRleCArIDEpO1xuICAgICAgYXJndiA9IGFyZ3Yuc2xpY2UoMCwgZG91YmxlRGFzaGVzSW5kZXgpO1xuICAgIH1cbiAgICBsZXQgcGFyc2VkID0gbXJpMihhcmd2LCBtcmlPcHRpb25zKTtcbiAgICBwYXJzZWQgPSBPYmplY3Qua2V5cyhwYXJzZWQpLnJlZHVjZSgocmVzLCBuYW1lKSA9PiB7XG4gICAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlcyksIHtcbiAgICAgICAgW2NhbWVsY2FzZU9wdGlvbk5hbWUobmFtZSldOiBwYXJzZWRbbmFtZV1cbiAgICAgIH0pO1xuICAgIH0sIHtfOiBbXX0pO1xuICAgIGNvbnN0IGFyZ3MgPSBwYXJzZWQuXztcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgXCItLVwiOiBhcmdzQWZ0ZXJEb3VibGVEYXNoZXNcbiAgICB9O1xuICAgIGNvbnN0IGlnbm9yZURlZmF1bHQgPSBjb21tYW5kICYmIGNvbW1hbmQuY29uZmlnLmlnbm9yZU9wdGlvbkRlZmF1bHRWYWx1ZSA/IGNvbW1hbmQuY29uZmlnLmlnbm9yZU9wdGlvbkRlZmF1bHRWYWx1ZSA6IHRoaXMuZ2xvYmFsQ29tbWFuZC5jb25maWcuaWdub3JlT3B0aW9uRGVmYXVsdFZhbHVlO1xuICAgIGxldCB0cmFuc2Zvcm1zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICBmb3IgKGNvbnN0IGNsaU9wdGlvbiBvZiBjbGlPcHRpb25zKSB7XG4gICAgICBpZiAoIWlnbm9yZURlZmF1bHQgJiYgY2xpT3B0aW9uLmNvbmZpZy5kZWZhdWx0ICE9PSB2b2lkIDApIHtcbiAgICAgICAgZm9yIChjb25zdCBuYW1lIG9mIGNsaU9wdGlvbi5uYW1lcykge1xuICAgICAgICAgIG9wdGlvbnNbbmFtZV0gPSBjbGlPcHRpb24uY29uZmlnLmRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KGNsaU9wdGlvbi5jb25maWcudHlwZSkpIHtcbiAgICAgICAgaWYgKHRyYW5zZm9ybXNbY2xpT3B0aW9uLm5hbWVdID09PSB2b2lkIDApIHtcbiAgICAgICAgICB0cmFuc2Zvcm1zW2NsaU9wdGlvbi5uYW1lXSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgdHJhbnNmb3Jtc1tjbGlPcHRpb24ubmFtZV1bXCJzaG91bGRUcmFuc2Zvcm1cIl0gPSB0cnVlO1xuICAgICAgICAgIHRyYW5zZm9ybXNbY2xpT3B0aW9uLm5hbWVdW1widHJhbnNmb3JtRnVuY3Rpb25cIl0gPSBjbGlPcHRpb24uY29uZmlnLnR5cGVbMF07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMocGFyc2VkKSkge1xuICAgICAgaWYgKGtleSAhPT0gXCJfXCIpIHtcbiAgICAgICAgY29uc3Qga2V5cyA9IGtleS5zcGxpdChcIi5cIik7XG4gICAgICAgIHNldERvdFByb3Aob3B0aW9ucywga2V5cywgcGFyc2VkW2tleV0pO1xuICAgICAgICBzZXRCeVR5cGUob3B0aW9ucywgdHJhbnNmb3Jtcyk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBhcmdzLFxuICAgICAgb3B0aW9uc1xuICAgIH07XG4gIH1cbiAgcnVuTWF0Y2hlZENvbW1hbmQoKSB7XG4gICAgY29uc3Qge2FyZ3MsIG9wdGlvbnMsIG1hdGNoZWRDb21tYW5kOiBjb21tYW5kfSA9IHRoaXM7XG4gICAgaWYgKCFjb21tYW5kIHx8ICFjb21tYW5kLmNvbW1hbmRBY3Rpb24pXG4gICAgICByZXR1cm47XG4gICAgY29tbWFuZC5jaGVja1Vua25vd25PcHRpb25zKCk7XG4gICAgY29tbWFuZC5jaGVja09wdGlvblZhbHVlKCk7XG4gICAgY29tbWFuZC5jaGVja1JlcXVpcmVkQXJncygpO1xuICAgIGNvbnN0IGFjdGlvbkFyZ3MgPSBbXTtcbiAgICBjb21tYW5kLmFyZ3MuZm9yRWFjaCgoYXJnLCBpbmRleCkgPT4ge1xuICAgICAgaWYgKGFyZy52YXJpYWRpYykge1xuICAgICAgICBhY3Rpb25BcmdzLnB1c2goYXJncy5zbGljZShpbmRleCkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWN0aW9uQXJncy5wdXNoKGFyZ3NbaW5kZXhdKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBhY3Rpb25BcmdzLnB1c2gob3B0aW9ucyk7XG4gICAgcmV0dXJuIGNvbW1hbmQuY29tbWFuZEFjdGlvbi5hcHBseSh0aGlzLCBhY3Rpb25BcmdzKTtcbiAgfVxufVxuXG5jb25zdCBjYWMgPSAobmFtZSA9IFwiXCIpID0+IG5ldyBDQUMobmFtZSk7XG5cbmV4cG9ydCBkZWZhdWx0IGNhYztcbmV4cG9ydCB7IENBQywgQ29tbWFuZCwgY2FjIH07XG4iLCJpbXBvcnQgY2FjIGZyb20gJ2NhYydcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nXG5pbXBvcnQgdHlwZSB7IENsaU9wdGlvbnMgfSBmcm9tICcuL2NsaS1hcGknXG5pbXBvcnQgeyBzdGFydFZpdGVzdCB9IGZyb20gJy4vY2xpLWFwaSdcblxuY29uc3QgY2xpID0gY2FjKCd2aXRlc3QnKVxuXG5jbGlcbiAgLnZlcnNpb24odmVyc2lvbilcbiAgLm9wdGlvbignLXIsIC0tcm9vdCA8cGF0aD4nLCAncm9vdCBwYXRoJylcbiAgLm9wdGlvbignLWMsIC0tY29uZmlnIDxwYXRoPicsICdwYXRoIHRvIGNvbmZpZyBmaWxlJylcbiAgLm9wdGlvbignLXUsIC0tdXBkYXRlJywgJ3VwZGF0ZSBzbmFwc2hvdCcpXG4gIC5vcHRpb24oJy13LCAtLXdhdGNoJywgJ3dhdGNoIG1vZGUnKVxuICAub3B0aW9uKCctdCwgLS10ZXN0TmFtZVBhdHRlcm4gPHBhdHRlcm4+JywgJ3J1biB0ZXN0cyB3aXRoIGZ1bGwgbmFtZXMgbWF0Y2hpbmcgdGhlIHNwZWNpZmllZCBwYXR0ZXJuJylcbiAgLm9wdGlvbignLS11aScsICdlbmFibGUgVUknKVxuICAub3B0aW9uKCctLW9wZW4nLCAnb3BlbiBVSSBhdXRvbWF0aWNhbGx5IChkZWZhdWx0OiAhcHJvY2Vzcy5lbnYuQ0kpKScpXG4gIC5vcHRpb24oJy0tYXBpIFthcGldJywgJ3NlcnZlIEFQSSwgYXZhaWxhYmxlIG9wdGlvbnM6IC0tYXBpLnBvcnQgPHBvcnQ+LCAtLWFwaS5ob3N0IFtob3N0XSBhbmQgLS1hcGkuc3RyaWN0UG9ydCcpXG4gIC5vcHRpb24oJy0tdGhyZWFkcycsICdlbmFibGVkIHRocmVhZHMgKGRlZmF1bHQ6IHRydWUpJylcbiAgLm9wdGlvbignLS1zaWxlbnQnLCAnc2lsZW50IGNvbnNvbGUgb3V0cHV0IGZyb20gdGVzdHMnKVxuICAub3B0aW9uKCctLWlzb2xhdGUnLCAnaXNvbGF0ZSBlbnZpcm9ubWVudCBmb3IgZWFjaCB0ZXN0IGZpbGUgKGRlZmF1bHQ6IHRydWUpJylcbiAgLm9wdGlvbignLS1yZXBvcnRlciA8bmFtZT4nLCAncmVwb3J0ZXInKVxuICAub3B0aW9uKCctLW91dHB1dEZpbGUgPGZpbGVuYW1lPicsICd3cml0ZSB0ZXN0IHJlc3VsdHMgdG8gYSBmaWxlIHdoZW4gdGhlIC0tcmVwb3J0ZXI9anNvbiBvcHRpb24gaXMgYWxzbyBzcGVjaWZpZWQnKVxuICAub3B0aW9uKCctLWNvdmVyYWdlJywgJ3VzZSBjOCBmb3IgY292ZXJhZ2UnKVxuICAub3B0aW9uKCctLXJ1bicsICdkbyBub3Qgd2F0Y2gnKVxuICAub3B0aW9uKCctLW1vZGUnLCAnb3ZlcnJpZGUgVml0ZSBtb2RlIChkZWZhdWx0OiB0ZXN0KScpXG4gIC5vcHRpb24oJy0tZ2xvYmFscycsICdpbmplY3QgYXBpcyBnbG9iYWxseScpXG4gIC5vcHRpb24oJy0tZ2xvYmFsJywgJ2RlcHJlY2F0ZWQsIHVzZSAtLWdsb2JhbHMnKVxuICAub3B0aW9uKCctLWRvbScsICdtb2NrIGJyb3dzZXIgYXBpIHdpdGggaGFwcHktZG9tJylcbiAgLm9wdGlvbignLS1lbnZpcm9ubWVudCA8ZW52PicsICdydW5uZXIgZW52aXJvbm1lbnQgKGRlZmF1bHQ6IG5vZGUpJylcbiAgLm9wdGlvbignLS1wYXNzV2l0aE5vVGVzdHMnLCAncGFzcyB3aGVuIG5vIHRlc3RzIGZvdW5kJylcbiAgLm9wdGlvbignLS1hbGxvd09ubHknLCAnQWxsb3cgdGVzdHMgYW5kIHN1aXRlcyB0aGF0IGFyZSBtYXJrZWQgYXMgb25seSAoZGVmYXVsdDogIXByb2Nlc3MuZW52LkNJKScpXG4gIC5oZWxwKClcblxuY2xpXG4gIC5jb21tYW5kKCdydW4gWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihydW4pXG5cbmNsaVxuICAuY29tbWFuZCgncmVsYXRlZCBbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKHJ1blJlbGF0ZWQpXG5cbmNsaVxuICAuY29tbWFuZCgnd2F0Y2ggWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihzdGFydClcblxuY2xpXG4gIC5jb21tYW5kKCdkZXYgWy4uLmZpbHRlcnNdJylcbiAgLmFjdGlvbihzdGFydClcblxuY2xpXG4gIC5jb21tYW5kKCdbLi4uZmlsdGVyc10nKVxuICAuYWN0aW9uKHN0YXJ0KVxuXG5jbGkucGFyc2UoKVxuXG5hc3luYyBmdW5jdGlvbiBydW5SZWxhdGVkKHJlbGF0ZWRGaWxlczogc3RyaW5nW10gfCBzdHJpbmcsIGFyZ3Y6IENsaU9wdGlvbnMpIHtcbiAgYXJndi5yZWxhdGVkID0gcmVsYXRlZEZpbGVzXG4gIGFyZ3YucGFzc1dpdGhOb1Rlc3RzID8/PSB0cnVlXG4gIGF3YWl0IHN0YXJ0KFtdLCBhcmd2KVxufVxuXG5hc3luYyBmdW5jdGlvbiBydW4oY2xpRmlsdGVyczogc3RyaW5nW10sIG9wdGlvbnM6IENsaU9wdGlvbnMpIHtcbiAgb3B0aW9ucy5ydW4gPSB0cnVlXG4gIGF3YWl0IHN0YXJ0KGNsaUZpbHRlcnMsIG9wdGlvbnMpXG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0KGNsaUZpbHRlcnM6IHN0cmluZ1tdLCBvcHRpb25zOiBDbGlPcHRpb25zKSB7XG4gIGlmIChhd2FpdCBzdGFydFZpdGVzdChjbGlGaWx0ZXJzLCBvcHRpb25zKSA9PT0gZmFsc2UpXG4gICAgcHJvY2Vzcy5leGl0KClcbn1cbiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVBLFNBQVMsS0FBSyxDQUFDLEdBQUcsRUFBRTtBQUNwQixDQUFDLE9BQU8sR0FBRyxJQUFJLElBQUksR0FBRyxFQUFFLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUM1RCxDQUFDO0FBQ0Q7QUFDQSxTQUFTLEtBQUssQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUU7QUFDcEMsQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLEdBQUc7QUFDekIsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEdBQUcsS0FBSyxJQUFJLEdBQUcsRUFBRSxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUM7QUFDL0UsSUFBSSxPQUFPLEdBQUcsS0FBSyxTQUFTLEdBQUcsR0FBRztBQUNsQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxPQUFPLEdBQUcsS0FBSyxHQUFHLEdBQUcsS0FBSyxNQUFNLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUM7QUFDcEksSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsR0FBRztBQUNwQyxFQUFFLENBQUM7QUFDSCxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFHLElBQUksSUFBSSxHQUFHLEdBQUcsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFN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
|
package/dist/config.d.ts
CHANGED
|
@@ -243,6 +243,7 @@ declare abstract class BaseReporter implements Reporter {
|
|
|
243
243
|
watchFilters?: string[];
|
|
244
244
|
isTTY: boolean;
|
|
245
245
|
ctx: Vitest;
|
|
246
|
+
constructor();
|
|
246
247
|
onInit(ctx: Vitest): void;
|
|
247
248
|
relative(path: string): string;
|
|
248
249
|
onFinished(files?: File[]): Promise<void>;
|
|
@@ -253,6 +254,7 @@ declare abstract class BaseReporter implements Reporter {
|
|
|
253
254
|
onServerRestart(): void;
|
|
254
255
|
reportSummary(files: File[]): Promise<void>;
|
|
255
256
|
private printTaskErrors;
|
|
257
|
+
registerUnhandledRejection(): void;
|
|
256
258
|
}
|
|
257
259
|
|
|
258
260
|
interface ListRendererOptions {
|