@decaf-ts/utils 0.3.7 → 0.3.9
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/LICENSE.md +3 -2
- package/bin/build-scripts.cjs +1093 -602
- package/bin/tag-release.cjs +1065 -575
- package/bin/tag-release.sh +10 -9
- package/bin/update-scripts.cjs +1090 -600
- package/dist/assets/slogans.ts +16 -0
- package/dist/utils.cjs +55 -344
- package/dist/utils.esm.cjs +49 -328
- package/lib/assets/slogans.cjs +16 -1
- package/lib/assets/slogans.d.ts +15 -0
- package/lib/assets/slogans.ts +16 -0
- package/lib/bin/build-scripts.cjs +2 -1
- package/lib/bin/tag-release.cjs +2 -1
- package/lib/bin/update-scripts.cjs +2 -1
- package/lib/cli/command.cjs +5 -16
- package/lib/cli/command.d.ts +2 -8
- package/lib/cli/commands/build-scripts.cjs +7 -4
- package/lib/cli/commands/tag-release.cjs +2 -1
- package/lib/cli/commands/update-scripts.cjs +6 -4
- package/lib/esm/assets/slogans.d.ts +15 -0
- package/lib/esm/assets/slogans.js +16 -1
- package/lib/esm/bin/build-scripts.js +2 -1
- package/lib/esm/bin/tag-release.js +2 -1
- package/lib/esm/bin/update-scripts.js +2 -1
- package/lib/esm/cli/command.d.ts +2 -8
- package/lib/esm/cli/command.js +6 -17
- package/lib/esm/cli/commands/build-scripts.js +7 -4
- package/lib/esm/cli/commands/tag-release.js +2 -1
- package/lib/esm/cli/commands/update-scripts.js +4 -2
- package/lib/esm/index.d.ts +14 -24
- package/lib/esm/index.js +15 -25
- package/lib/esm/input/input.d.ts +2 -2
- package/lib/esm/input/input.js +3 -3
- package/lib/esm/utils/fs.js +2 -3
- package/lib/esm/utils/http.js +2 -1
- package/lib/esm/utils/index.d.ts +0 -3
- package/lib/esm/utils/index.js +1 -4
- package/lib/esm/utils/types.d.ts +1 -1
- package/lib/esm/utils/types.js +1 -1
- package/lib/index.cjs +15 -25
- package/lib/index.d.ts +14 -24
- package/lib/input/input.cjs +3 -3
- package/lib/input/input.d.ts +2 -2
- package/lib/utils/fs.cjs +2 -3
- package/lib/utils/http.cjs +2 -1
- package/lib/utils/index.cjs +1 -4
- package/lib/utils/index.d.ts +0 -3
- package/lib/utils/types.cjs +1 -1
- package/lib/utils/types.d.ts +1 -1
- package/package.json +11 -3
- package/lib/esm/utils/environment.d.ts +0 -70
- package/lib/esm/utils/environment.js +0 -103
- package/lib/esm/utils/text.d.ts +0 -132
- package/lib/esm/utils/text.js +0 -167
- package/lib/esm/utils/web.d.ts +0 -8
- package/lib/esm/utils/web.js +0 -12
- package/lib/utils/environment.cjs +0 -107
- package/lib/utils/environment.d.ts +0 -70
- package/lib/utils/text.cjs +0 -178
- package/lib/utils/text.d.ts +0 -132
- package/lib/utils/web.cjs +0 -15
- package/lib/utils/web.d.ts +0 -8
|
@@ -37,6 +37,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.BuildScripts = void 0;
|
|
40
|
+
/* istanbul ignore file */
|
|
40
41
|
const command_1 = require("./../command.cjs");
|
|
41
42
|
const constants_1 = require("./../constants.cjs");
|
|
42
43
|
const utils_1 = require("./../../utils/index.cjs");
|
|
@@ -49,7 +50,8 @@ const plugin_node_resolve_1 = require("@rollup/plugin-node-resolve");
|
|
|
49
50
|
const plugin_json_1 = __importDefault(require("@rollup/plugin-json"));
|
|
50
51
|
const ts = __importStar(require("typescript"));
|
|
51
52
|
const typescript_1 = require("typescript");
|
|
52
|
-
const VERSION_STRING = "0.3.
|
|
53
|
+
const VERSION_STRING = "0.3.8";
|
|
54
|
+
const PACKAGE_STRING = "@decaf-ts/utils";
|
|
53
55
|
var Modes;
|
|
54
56
|
(function (Modes) {
|
|
55
57
|
Modes["CJS"] = "commonjs";
|
|
@@ -175,6 +177,7 @@ class BuildScripts extends command_1.Command {
|
|
|
175
177
|
this.pkgName = name.includes("@") ? name.split("/")[1] : name;
|
|
176
178
|
this.pkgVersion = version;
|
|
177
179
|
this.replacements[VERSION_STRING] = this.pkgVersion;
|
|
180
|
+
this.replacements[PACKAGE_STRING] = name;
|
|
178
181
|
}
|
|
179
182
|
patchFiles(p) {
|
|
180
183
|
const log = this.log.for(this.patchFiles);
|
|
@@ -261,10 +264,10 @@ class BuildScripts extends command_1.Command {
|
|
|
261
264
|
if (diagnostic.file) {
|
|
262
265
|
const { line, character } = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
|
|
263
266
|
const message = ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n");
|
|
264
|
-
|
|
267
|
+
log.info(`${diagnostic.file.fileName} (${line + 1},${character + 1}): ${message}`);
|
|
265
268
|
}
|
|
266
269
|
else {
|
|
267
|
-
|
|
270
|
+
log.info(ts.flattenDiagnosticMessageText(diagnostic.messageText, "\n"));
|
|
268
271
|
}
|
|
269
272
|
});
|
|
270
273
|
if (emitResult.emitSkipped) {
|
|
@@ -466,4 +469,4 @@ class BuildScripts extends command_1.Command {
|
|
|
466
469
|
}
|
|
467
470
|
}
|
|
468
471
|
exports.BuildScripts = BuildScripts;
|
|
469
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvYnVpbGQtc2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw4Q0FBcUM7QUFFckMsa0RBQTJFO0FBQzNFLG1EQVVxQjtBQUNyQiw0Q0FBb0I7QUFDcEIsZ0RBQXdCO0FBQ3hCLG1DQUEwRTtBQUMxRSxrRkFBbUQ7QUFDbkQsOEVBQStDO0FBQy9DLHFFQUEwRDtBQUMxRCxzRUFBdUM7QUFFdkMsK0NBQWlDO0FBQ2pDLDJDQUE0RTtBQUU1RSxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUM7QUFFckMsSUFBSyxLQUdKO0FBSEQsV0FBSyxLQUFLO0lBQ1IseUJBQWdCLENBQUE7SUFDaEIsdUJBQWMsQ0FBQTtBQUNoQixDQUFDLEVBSEksS0FBSyxLQUFMLEtBQUssUUFHVDtBQUVELElBQUssU0FJSjtBQUpELFdBQUssU0FBUztJQUNaLDRCQUFlLENBQUE7SUFDZiw4QkFBaUIsQ0FBQTtJQUNqQix3QkFBVyxDQUFBO0FBQ2IsQ0FBQyxFQUpJLFNBQVMsS0FBVCxTQUFTLFFBSWI7QUFFRCxNQUFNLFFBQVEsR0FBRyxDQUFDLGdCQUFnQixFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsQ0FBQztBQUVwRSxNQUFNLE9BQU8sR0FBRztJQUNkLElBQUksRUFBRTtRQUNKLElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLEtBQUs7S0FDZjtJQUNELEdBQUcsRUFBRTtRQUNILElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLEtBQUs7S0FDZjtJQUNELFNBQVMsRUFBRTtRQUNULElBQUksRUFBRSxRQUFRO1FBQ2QsT0FBTyxFQUFFLFNBQVMsQ0FBQyxHQUFHO0tBQ3ZCO0lBQ0QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUs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QkFDNUIsSUFBSSxFQUFFLDhCQUE4QjthQUNyQztZQUNEO2dCQUNFLEdBQUcsRUFBRSxvQkFBb0I7Z0JBQ3pCLElBQUksRUFBRSwyQkFBMkI7YUFDbEM7WUFDRDtnQkFDRSxHQUFHLEVBQUUsWUFBWTtnQkFDakIsSUFBSSxFQUFFLG1CQUFtQjthQUMxQjtTQUNGLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDZCxNQUFNLEVBQUUsR0FBRyxFQUFFLElBQUksRUFBRSxHQUFHLENBQUMsQ0FBQztZQUN4QixJQUFBLGdCQUFRLEVBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVTLEtBQUssQ0FBQyxHQUFHLENBQ2pCLE9BQ3dFO1FBRXhFLE1BQU0sRUFBRSxHQUFHLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEdBQUcsT0FBTyxDQUFDO1FBRXpELElBQUksUUFBUSxFQUFFLENBQUM7WUFDYixNQUFNLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUM3QixDQUFDO1FBRUQsSUFBSSxHQUFHLEVBQUUsQ0FBQztZQUNSLE9BQU8sTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQXNCLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQXNCLENBQUMsQ0FBQztRQUN0RCxDQUFDO1FBQ0QsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNULE9BQU8sTUFBTSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWpZRCxvQ0FpWUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIi4uL2NvbW1hbmRcIjtcbmltcG9ydCB7IENvbW1hbmRPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBEZWZhdWx0Q29tbWFuZE9wdGlvbnMsIERlZmF1bHRDb21tYW5kVmFsdWVzIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY29weUZpbGUsXG4gIGRlbGV0ZVBhdGgsXG4gIGdldEFsbEZpbGVzLFxuICBnZXRQYWNrYWdlLFxuICBwYXRjaEZpbGUsXG4gIHJlYWRGaWxlLFxuICByZW5hbWVGaWxlLFxuICBydW5Db21tYW5kLFxuICB3cml0ZUZpbGUsXG59IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IElucHV0T3B0aW9ucywgT3V0cHV0T3B0aW9ucywgcm9sbHVwLCBSb2xsdXBCdWlsZCB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCB0eXBlc2NyaXB0IGZyb20gXCJAcm9sbHVwL3BsdWdpbi10eXBlc2NyaXB0XCI7XG5pbXBvcnQgY29tbW9uanMgZnJvbSBcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCI7XG5pbXBvcnQgeyBub2RlUmVzb2x2ZSB9IGZyb20gXCJAcm9sbHVwL3BsdWdpbi1ub2RlLXJlc29sdmVcIjtcbmltcG9ydCBqc29uIGZyb20gXCJAcm9sbHVwL3BsdWdpbi1qc29uXCI7XG5pbXBvcnQgeyBMb2dnaW5nQ29uZmlnIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgKiBhcyB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgRGlhZ25vc3RpYywgRW1pdFJlc3VsdCwgTW9kdWxlS2luZCwgU291cmNlRmlsZSB9IGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbmNvbnN0IFZFUlNJT05fU1RSSU5HID0gXCIjI1ZFUlNJT04jI1wiO1xuXG5lbnVtIE1vZGVzIHtcbiAgQ0pTID0gXCJjb21tb25qc1wiLFxuICBFU00gPSBcImVzMjAyMlwiLFxufVxuXG5lbnVtIEJ1aWxkTW9kZSB7XG4gIEJVSUxEID0gXCJidWlsZFwiLFxuICBCVU5ETEUgPSBcImJ1bmRsZVwiLFxuICBBTEwgPSBcImFsbFwiLFxufVxuXG5jb25zdCBDb21tYW5kcyA9IFtcInVwZGF0ZS1zY3JpcHRzXCIsIFwidGFnLXJlbGVhc2VcIiwgXCJidWlsZC1zY3JpcHRzXCJdO1xuXG5jb25zdCBvcHRpb25zID0ge1xuICBwcm9kOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGRldjoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBidWlsZE1vZGU6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIGRlZmF1bHQ6IEJ1aWxkTW9kZS5BTEwsXG4gIH0sXG4gIGRvY3M6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgY29tbWFuZHM6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgYmFubmVyOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG59O1xuXG5jb25zdCBjanMyVHJhbnNmb3JtZXIgPSAoZXh0ID0gXCIuY2pzXCIpID0+IHtcbiAgY29uc3QgbG9nID0gQnVpbGRTY3JpcHRzLmxvZy5mb3IoY2pzMlRyYW5zZm9ybWVyKTtcbiAgY29uc3QgcmVzb2x1dGlvbkNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcblxuICByZXR1cm4gKHRyYW5zZm9ybWF0aW9uQ29udGV4dDogdHMuVHJhbnNmb3JtYXRpb25Db250ZXh0KSA9PiB7XG4gICAgcmV0dXJuIChzb3VyY2VGaWxlOiB0cy5Tb3VyY2VGaWxlKSA9PiB7XG4gICAgICBjb25zdCBzb3VyY2VEaXIgPSBwYXRoLmRpcm5hbWUoc291cmNlRmlsZS5maWxlTmFtZSk7XG5cbiAgICAgIGZ1bmN0aW9uIHJlc29sdmVQYXRoKGltcG9ydFBhdGg6IHN0cmluZykge1xuICAgICAgICBjb25zdCBjYWNoZUtleSA9IEpTT04uc3RyaW5naWZ5KFtzb3VyY2VEaXIsIGltcG9ydFBhdGhdKTtcbiAgICAgICAgY29uc3QgY2FjaGVkVmFsdWUgPSByZXNvbHV0aW9uQ2FjaGUuZ2V0KGNhY2hlS2V5KTtcbiAgICAgICAgaWYgKGNhY2hlZFZhbHVlICE9IG51bGwpIHJldHVybiBjYWNoZWRWYWx1ZTtcblxuICAgICAgICBsZXQgcmVzb2x2ZWRQYXRoID0gaW1wb3J0UGF0aDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXNvbHZlZFBhdGggPSBwYXRoLnJlc29sdmUoc291cmNlRGlyLCByZXNvbHZlZFBhdGggKyBcIi50c1wiKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3I6IHVua25vd24pIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byByZXNvbHZlIHBhdGggJHtpbXBvcnRQYXRofTogJHtlcnJvcn1gKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgc3RhdDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzdGF0ID0gZnMuc3RhdFN5bmMocmVzb2x2ZWRQYXRoKTtcbiAgICAgICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBsb2cudmVyYm9zZShcbiAgICAgICAgICAgICAgYFRlc3RpbmcgZXhpc3RlbmNlIG9mIHBhdGggJHtyZXNvbHZlZFBhdGh9IGFzIGEgZm9sZGVyIGRlZmF1bHRpbmcgdG8gaW5kZXggZmlsZWBcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBzdGF0ID0gZnMuc3RhdFN5bmMocmVzb2x2ZWRQYXRoLnJlcGxhY2UoL1xcLnRzJC9nbSwgXCJcIikpO1xuICAgICAgICAgIH0gY2F0Y2ggKGUyOiB1bmtub3duKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICAgIGBGYWlsZWQgdG8gcmVzb2x2ZSBwYXRoICR7aW1wb3J0UGF0aH06ICR7ZX0sICR7ZTJ9YFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICByZXNvbHZlZFBhdGggPSByZXNvbHZlZFBhdGgucmVwbGFjZSgvXFwudHMkL2dtLCBcIi9pbmRleC50c1wiKTtcblxuICAgICAgICBpZiAocGF0aC5pc0Fic29sdXRlKHJlc29sdmVkUGF0aCkpIHtcbiAgICAgICAgICBjb25zdCBleHRlbnNpb24gPVxuICAgICAgICAgICAgKC9cXC50c3g/JC8uZXhlYyhwYXRoLmJhc2VuYW1lKHJlc29sdmVkUGF0aCkpIHx8IFtdKVswXSB8fCB2b2lkIDA7XG5cbiAgICAgICAgICByZXNvbHZlZFBhdGggPVxuICAgICAgICAgICAgXCIuL1wiICtcbiAgICAgICAgICAgIHBhdGgucmVsYXRpdmUoXG4gICAgICAgICAgICAgIHNvdXJjZURpcixcbiAgICAgICAgICAgICAgcGF0aC5yZXNvbHZlKFxuICAgICAgICAgICAgICAgIHBhdGguZGlybmFtZShyZXNvbHZlZFBhdGgpLFxuICAgICAgICAgICAgICAgIHBhdGguYmFzZW5hbWUocmVzb2x2ZWRQYXRoLCBleHRlbnNpb24pICsgZXh0XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXNvbHV0aW9uQ2FjaGUuc2V0KGNhY2hlS2V5LCByZXNvbHZlZFBhdGgpO1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWRQYXRoO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiB2aXNpdE5vZGUobm9kZTogdHMuTm9kZSk6IHRzLlZpc2l0UmVzdWx0PHRzLk5vZGU+IHtcbiAgICAgICAgaWYgKHNob3VsZE11dGF0ZU1vZHVsZVNwZWNpZmllcihub2RlKSkge1xuICAgICAgICAgIGlmICh0cy5pc0ltcG9ydERlY2xhcmF0aW9uKG5vZGUpKSB7XG4gICAgICAgICAgICBjb25zdCByZXNvbHZlZFBhdGggPSByZXNvbHZlUGF0aChub2RlLm1vZHVsZVNwZWNpZmllci50ZXh0KTtcbiAgICAgICAgICAgIGNvbnN0IG5ld01vZHVsZVNwZWNpZmllciA9XG4gICAgICAgICAgICAgIHRyYW5zZm9ybWF0aW9uQ29udGV4dC5mYWN0b3J5LmNyZWF0ZVN0cmluZ0xpdGVyYWwocmVzb2x2ZWRQYXRoKTtcbiAgICAgICAgICAgIHJldHVybiB0cmFuc2Zvcm1hdGlvbkNvbnRleHQuZmFjdG9yeS51cGRhdGVJbXBvcnREZWNsYXJhdGlvbihcbiAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgbm9kZS5tb2RpZmllcnMsXG4gICAgICAgICAgICAgIG5vZGUuaW1wb3J0Q2xhdXNlLFxuICAgICAgICAgICAgICBuZXdNb2R1bGVTcGVjaWZpZXIsXG4gICAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHRzLmlzRXhwb3J0RGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHJlc29sdmVQYXRoKG5vZGUubW9kdWxlU3BlY2lmaWVyLnRleHQpO1xuICAgICAgICAgICAgY29uc3QgbmV3TW9kdWxlU3BlY2lmaWVyID1cbiAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25Db250ZXh0LmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChyZXNvbHZlZFBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWF0aW9uQ29udGV4dC5mYWN0b3J5LnVwZGF0ZUV4cG9ydERlY2xhcmF0aW9uKFxuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICBub2RlLm1vZGlmaWVycyxcbiAgICAgICAgICAgICAgbm9kZS5pc1R5cGVPbmx5LFxuICAgICAgICAgICAgICBub2RlLmV4cG9ydENsYXVzZSxcbiAgICAgICAgICAgICAgbmV3TW9kdWxlU3BlY2lmaWVyLFxuICAgICAgICAgICAgICB1bmRlZmluZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRzLnZpc2l0RWFjaENoaWxkKG5vZGUsIHZpc2l0Tm9kZSwgdHJhbnNmb3JtYXRpb25Db250ZXh0KTtcbiAgICAgIH1cblxuICAgICAgZnVuY3Rpb24gc2hvdWxkTXV0YXRlTW9kdWxlU3BlY2lmaWVyKG5vZGU6IHRzLk5vZGUpOiBub2RlIGlzIChcbiAgICAgICAgfCB0cy5JbXBvcnREZWNsYXJhdGlvblxuICAgICAgICB8IHRzLkV4cG9ydERlY2xhcmF0aW9uXG4gICAgICApICYge1xuICAgICAgICBtb2R1bGVTcGVjaWZpZXI6IHRzLlN0cmluZ0xpdGVyYWw7XG4gICAgICB9IHtcbiAgICAgICAgaWYgKCF0cy5pc0ltcG9ydERlY2xhcmF0aW9uKG5vZGUpICYmICF0cy5pc0V4cG9ydERlY2xhcmF0aW9uKG5vZGUpKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcblxuICAgICAgICBpZiAobm9kZS5tb2R1bGVTcGVjaWZpZXIgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBvbmx5IHdoZW4gbW9kdWxlIHNwZWNpZmllciBpcyB2YWxpZFxuICAgICAgICBpZiAoIXRzLmlzU3RyaW5nTGl0ZXJhbChub2RlLm1vZHVsZVNwZWNpZmllcikpIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gb25seSB3aGVuIHBhdGggaXMgcmVsYXRpdmVcbiAgICAgICAgaWYgKFxuICAgICAgICAgICFub2RlLm1vZHVsZVNwZWNpZmllci50ZXh0LnN0YXJ0c1dpdGgoXCIuL1wiKSAmJlxuICAgICAgICAgICFub2RlLm1vZHVsZVNwZWNpZmllci50ZXh0LnN0YXJ0c1dpdGgoXCIuLi9cIilcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgLy8gb25seSB3aGVuIG1vZHVsZSBzcGVjaWZpZXIgaGFzIG5vIGV4dGVuc2lvblxuICAgICAgICBpZiAocGF0aC5leHRuYW1lKG5vZGUubW9kdWxlU3BlY2lmaWVyLnRleHQpICE9PSBcIlwiKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdHMudmlzaXROb2RlKHNvdXJjZUZpbGUsIHZpc2l0Tm9kZSkgYXMgU291cmNlRmlsZTtcbiAgICB9O1xuICB9O1xufTtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkU2NyaXB0cyBleHRlbmRzIENvbW1hbmQ8XG4gIENvbW1hbmRPcHRpb25zPHR5cGVvZiBvcHRpb25zPixcbiAgdm9pZFxuPiB7XG4gIHByaXZhdGUgcmVwbGFjZW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgcGtnVmVyc2lvbjogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHBrZ05hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcbiAgICAgIFwiQnVpbGRTY3JpcHRzXCIsXG4gICAgICBPYmplY3QuYXNzaWduKHt9LCBEZWZhdWx0Q29tbWFuZE9wdGlvbnMsIG9wdGlvbnMpIGFzIENvbW1hbmRPcHRpb25zPFxuICAgICAgICB0eXBlb2Ygb3B0aW9uc1xuICAgICAgPlxuICAgICk7XG4gICAgY29uc3QgcGtnID0gZ2V0UGFja2FnZSgpIGFzIHsgbmFtZTogc3RyaW5nOyB2ZXJzaW9uOiBzdHJpbmcgfTtcbiAgICBjb25zdCB7IG5hbWUsIHZlcnNpb24gfSA9IHBrZztcbiAgICB0aGlzLnBrZ05hbWUgPSBuYW1lLmluY2x1ZGVzKFwiQFwiKSA/IG5hbWUuc3BsaXQoXCIvXCIpWzFdIDogbmFtZTtcbiAgICB0aGlzLnBrZ1ZlcnNpb24gPSB2ZXJzaW9uO1xuICAgIHRoaXMucmVwbGFjZW1lbnRzW1ZFUlNJT05fU1RSSU5HXSA9IHRoaXMucGtnVmVyc2lvbjtcbiAgfVxuXG4gIHBhdGNoRmlsZXMocDogc3RyaW5nKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMucGF0Y2hGaWxlcyk7XG4gICAgY29uc3QgeyBuYW1lLCB2ZXJzaW9uIH0gPSBnZXRQYWNrYWdlKCkgYXMgYW55O1xuICAgIGxvZy5pbmZvKGBQYXRjaGluZyAke25hbWV9ICR7dmVyc2lvbn0gbW9kdWxlIGluICR7cH0uLi5gKTtcbiAgICBjb25zdCBzdGF0ID0gZnMuc3RhdFN5bmMocCk7XG4gICAgaWYgKHN0YXQuaXNEaXJlY3RvcnkoKSlcbiAgICAgIGZzLnJlYWRkaXJTeW5jKHAsIHsgd2l0aEZpbGVUeXBlczogdHJ1ZSwgcmVjdXJzaXZlOiB0cnVlIH0pXG4gICAgICAgIC5maWx0ZXIoKHApID0+IHAuaXNGaWxlKCkpXG4gICAgICAgIC5mb3JFYWNoKChmaWxlKSA9PlxuICAgICAgICAgIHBhdGNoRmlsZShwYXRoLmpvaW4oZmlsZS5wYXJlbnRQYXRoLCBmaWxlLm5hbWUpLCB0aGlzLnJlcGxhY2VtZW50cylcbiAgICAgICAgKTtcbiAgICBsb2cudmVyYm9zZShgTW9kdWxlICR7bmFtZX0gJHt2ZXJzaW9ufSBwYXRjaGVkIGluICR7cH0uLi5gKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVwb3J0RGlhZ25vc3RpY3MoZGlhZ25vc3RpY3M6IERpYWdub3N0aWNbXSk6IHZvaWQge1xuICAgIGRpYWdub3N0aWNzLmZvckVhY2goKGRpYWdub3N0aWMpID0+IHtcbiAgICAgIGxldCBtZXNzYWdlID0gXCJFcnJvclwiO1xuICAgICAgaWYgKGRpYWdub3N0aWMuZmlsZSAmJiBkaWFnbm9zdGljLnN0YXJ0KSB7XG4gICAgICAgIGNvbnN0IHsgbGluZSwgY2hhcmFjdGVyIH0gPVxuICAgICAgICAgIGRpYWdub3N0aWMuZmlsZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihkaWFnbm9zdGljLnN0YXJ0KTtcbiAgICAgICAgbWVzc2FnZSArPSBgICR7ZGlhZ25vc3RpYy5maWxlLmZpbGVOYW1lfSAoJHtsaW5lICsgMX0sJHtjaGFyYWN0ZXIgKyAxfSlgO1xuICAgICAgfVxuICAgICAgbWVzc2FnZSArPVxuICAgICAgICBcIjogXCIgKyB0cy5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0KGRpYWdub3N0aWMubWVzc2FnZVRleHQsIFwiXFxuXCIpO1xuICAgICAgY29uc29sZS5sb2cobWVzc2FnZSk7XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHJlYWRDb25maWdGaWxlKGNvbmZpZ0ZpbGVOYW1lOiBzdHJpbmcpIHtcbiAgICAvLyBSZWFkIGNvbmZpZyBmaWxlXG4gICAgY29uc3QgY29uZmlnRmlsZVRleHQgPSBmcy5yZWFkRmlsZVN5bmMoY29uZmlnRmlsZU5hbWUpLnRvU3RyaW5nKCk7XG5cbiAgICAvLyBQYXJzZSBKU09OLCBhZnRlciByZW1vdmluZyBjb21tZW50cy4gSnVzdCBmYW5jaWVyIEpTT04ucGFyc2VcbiAgICBjb25zdCByZXN1bHQgPSB0cy5wYXJzZUNvbmZpZ0ZpbGVUZXh0VG9Kc29uKGNvbmZpZ0ZpbGVOYW1lLCBjb25maWdGaWxlVGV4dCk7XG4gICAgY29uc3QgY29uZmlnT2JqZWN0ID0gcmVzdWx0LmNvbmZpZztcbiAgICBpZiAoIWNvbmZpZ09iamVjdCkge1xuICAgICAgdGhpcy5yZXBvcnREaWFnbm9zdGljcyhbcmVzdWx0LmVycm9yIV0pO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIHRzY29uZmlnLmpzb25cIik7XG4gICAgfVxuXG4gICAgLy8gRXh0cmFjdCBjb25maWcgaW5mcm9tYXRpb25cbiAgICBjb25zdCBjb25maWdQYXJzZVJlc3VsdCA9IHRzLnBhcnNlSnNvbkNvbmZpZ0ZpbGVDb250ZW50KFxuICAgICAgY29uZmlnT2JqZWN0LFxuICAgICAgdHMuc3lzLFxuICAgICAgcGF0aC5kaXJuYW1lKGNvbmZpZ0ZpbGVOYW1lKVxuICAgICk7XG4gICAgaWYgKGNvbmZpZ1BhcnNlUmVzdWx0LmVycm9ycy5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnJlcG9ydERpYWdub3N0aWNzKGNvbmZpZ1BhcnNlUmVzdWx0LmVycm9ycyk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJGYWlsZWQgdG8gcGFyc2UgdHNjb25maWcuanNvblwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmZpZ1BhcnNlUmVzdWx0O1xuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZFRzKGlzRGV2OiBib29sZWFuLCBtb2RlOiBNb2RlcywgYnVuZGxlID0gZmFsc2UpIHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5idWlsZFRzKTtcbiAgICBsb2cuaW5mbyhcbiAgICAgIGBCdWlsZGluZyAke3RoaXMucGtnTmFtZX0gJHt0aGlzLnBrZ1ZlcnNpb259IG1vZHVsZSAoJHttb2RlfSkgaW4gJHtpc0RldiA/IFwiZGV2XCIgOiBcInByb2RcIn0gbW9kZS4uLmBcbiAgICApO1xuICAgIGxldCB0c0NvbmZpZztcbiAgICB0cnkge1xuICAgICAgdHNDb25maWcgPSB0aGlzLnJlYWRDb25maWdGaWxlKFwiLi90c2NvbmZpZy5qc29uXCIpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHBhcnNlIHRzY29uZmlnLmpzb246ICR7ZX1gKTtcbiAgICB9XG5cbiAgICBpZiAoYnVuZGxlKSB7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLm1vZHVsZSA9IE1vZHVsZUtpbmQuQU1EO1xuICAgICAgdHNDb25maWcub3B0aW9ucy5vdXREaXIgPSBcImRpc3RcIjtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMuaXNvbGF0ZWRNb2R1bGVzID0gZmFsc2U7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLm91dEZpbGUgPSB0aGlzLnBrZ05hbWU7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMub3V0RGlyID0gYGxpYiR7bW9kZSA9PT0gTW9kZXMuRVNNID8gXCIvZXNtXCIgOiBcIlwifWA7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLm1vZHVsZSA9XG4gICAgICAgIG1vZGUgPT09IE1vZGVzLkVTTSA/IE1vZHVsZUtpbmQuRVMyMDIyIDogTW9kdWxlS2luZC5Db21tb25KUztcbiAgICB9XG5cbiAgICBpZiAoaXNEZXYpIHtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMuaW5saW5lU291cmNlTWFwID0gdHJ1ZTtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMuc291cmNlTWFwID0gZmFsc2U7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMuc291cmNlTWFwID0gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvZ3JhbSA9IHRzLmNyZWF0ZVByb2dyYW0odHNDb25maWcuZmlsZU5hbWVzLCB0c0NvbmZpZy5vcHRpb25zKTtcblxuICAgIGNvbnN0IHRyYW5zZm9ybWF0aW9uczogeyBiZWZvcmU/OiBhbnlbXSB9ID0ge307XG4gICAgaWYgKG1vZGUgPT09IE1vZGVzLkNKUykge1xuICAgICAgdHJhbnNmb3JtYXRpb25zLmJlZm9yZSA9IFtjanMyVHJhbnNmb3JtZXIoXCIuY2pzXCIpXTtcbiAgICB9IGVsc2UgaWYgKG1vZGUgPT09IE1vZGVzLkVTTSkge1xuICAgICAgdHJhbnNmb3JtYXRpb25zLmJlZm9yZSA9IFtjanMyVHJhbnNmb3JtZXIoXCIuanNcIildO1xuICAgIH1cblxuICAgIGNvbnN0IGVtaXRSZXN1bHQ6IEVtaXRSZXN1bHQgPSBwcm9ncmFtLmVtaXQoXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0cmFuc2Zvcm1hdGlvbnNcbiAgICApO1xuXG4gICAgY29uc3QgYWxsRGlhZ25vc3RpY3MgPSB0c1xuICAgICAgLmdldFByZUVtaXREaWFnbm9zdGljcyhwcm9ncmFtKVxuICAgICAgLmNvbmNhdChlbWl0UmVzdWx0LmRpYWdub3N0aWNzKTtcblxuICAgIGFsbERpYWdub3N0aWNzLmZvckVhY2goKGRpYWdub3N0aWMpID0+IHtcbiAgICAgIGlmIChkaWFnbm9zdGljLmZpbGUpIHtcbiAgICAgICAgY29uc3QgeyBsaW5lLCBjaGFyYWN0ZXIgfSA9XG4gICAgICAgICAgZGlhZ25vc3RpYy5maWxlLmdldExpbmVBbmRDaGFyYWN0ZXJPZlBvc2l0aW9uKGRpYWdub3N0aWMuc3RhcnQhKTtcbiAgICAgICAgY29uc3QgbWVzc2FnZSA9IHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoXG4gICAgICAgICAgZGlhZ25vc3RpYy5tZXNzYWdlVGV4dCxcbiAgICAgICAgICBcIlxcblwiXG4gICAgICAgICk7XG4gICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgIGAke2RpYWdub3N0aWMuZmlsZS5maWxlTmFtZX0gKCR7bGluZSArIDF9LCR7Y2hhcmFjdGVyICsgMX0pOiAke21lc3NhZ2V9YFxuICAgICAgICApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5sb2coXG4gICAgICAgICAgdHMuZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlVGV4dChkaWFnbm9zdGljLm1lc3NhZ2VUZXh0LCBcIlxcblwiKVxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChlbWl0UmVzdWx0LmVtaXRTa2lwcGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCdWlsZCBmYWlsZWRcIik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZChpc0RldjogYm9vbGVhbiwgbW9kZTogTW9kZXMsIGJ1bmRsZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuYnVpbGQpO1xuICAgIGF3YWl0IHRoaXMuYnVpbGRUcyhpc0RldiwgbW9kZSwgYnVuZGxlKTtcblxuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYE1vZHVsZSAke3RoaXMucGtnTmFtZX0gJHt0aGlzLnBrZ1ZlcnNpb259ICgke21vZGV9KSBidWlsdCBpbiAke2lzRGV2ID8gXCJkZXZcIiA6IFwicHJvZFwifSBtb2RlLi4uYFxuICAgICk7XG4gICAgaWYgKG1vZGUgPT09IE1vZGVzLkNKUyAmJiAhYnVuZGxlKSB7XG4gICAgICBjb25zdCBmaWxlcyA9IGdldEFsbEZpbGVzKFxuICAgICAgICBcImxpYlwiLFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5lbmRzV2l0aChcIi5qc1wiKSAmJiAhZmlsZS5pbmNsdWRlcyhcIi9lc20vXCIpXG4gICAgICApO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgbG9nLnZlcmJvc2UoYFBhdGNoaW5nICR7ZmlsZX0ncyBjanMgaW1wb3J0cy4uLmApO1xuICAgICAgICBjb25zdCBmID0gZmlsZS5yZXBsYWNlKFwiLmpzXCIsIFwiLmNqc1wiKTtcbiAgICAgICAgYXdhaXQgcmVuYW1lRmlsZShmaWxlLCBmKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb3B5QXNzZXRzKG1vZGU6IE1vZGVzKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuY29weUFzc2V0cyk7XG4gICAgbGV0IGhhc0Fzc2V0cyA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBoYXNBc3NldHMgPSBmcy5zdGF0U3luYyhcIi4vc3JjL2Fzc2V0c1wiKS5pc0RpcmVjdG9yeSgpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHJldHVybiBsb2cudmVyYm9zZShgTm8gYXNzZXRzIGZvdW5kIGluIC4vc3JjL2Fzc2V0cyB0byBjb3B5YCk7XG4gICAgfVxuICAgIGlmIChoYXNBc3NldHMpXG4gICAgICBjb3B5RmlsZShcbiAgICAgICAgXCIuL3NyYy9hc3NldHNcIixcbiAgICAgICAgYC4vJHttb2RlID09PSBNb2Rlcy5DSlMgPyBcImxpYlwiIDogXCJkaXN0XCJ9L2Fzc2V0c2BcbiAgICAgICk7XG4gIH1cblxuICBhc3luYyBidWlsZENvbW1hbmRzKCkge1xuICAgIGZvciAoY29uc3QgY21kIG9mIENvbW1hbmRzKSB7XG4gICAgICBhd2FpdCB0aGlzLmJ1bmRsZShNb2Rlcy5DSlMsIHRydWUsIHRydWUsIGBzcmMvYmluLyR7Y21kfS50c2AsIGNtZCk7XG4gICAgICBsZXQgZGF0YSA9IHJlYWRGaWxlKGBiaW4vJHtjbWR9LmNqc2ApO1xuICAgICAgZGF0YSA9IFwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxcblwiICsgZGF0YTtcbiAgICAgIHdyaXRlRmlsZShgYmluLyR7Y21kfS5janNgLCBkYXRhKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBidW5kbGUoXG4gICAgbW9kZTogTW9kZXMsXG4gICAgaXNEZXY6IGJvb2xlYW4sXG4gICAgaXNMaWI6IGJvb2xlYW4sXG4gICAgZW50cnlGaWxlOiBzdHJpbmcgPSBcInNyYy9pbmRleC50c1wiLFxuICAgIG5hbWVPdmVycmlkZTogc3RyaW5nID0gdGhpcy5wa2dOYW1lLFxuICAgIGV4dGVybmFscz86IHN0cmluZ1tdLFxuICAgIGluY2x1ZGU6IHN0cmluZ1tdID0gW1xuICAgICAgXCJwcm9tcHRzXCIsXG4gICAgICBcInN0eWxlZC1zdHJpbmctYnVpbGRlclwiLFxuICAgICAgXCJ0eXBlZC1vYmplY3QtYWNjdW11bGF0b3JcIixcbiAgICAgIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIixcbiAgICBdXG4gICkge1xuICAgIGNvbnN0IGlzRXNtID0gbW9kZSA9PT0gTW9kZXMuRVNNO1xuICAgIGNvbnN0IHBrZ05hbWUgPSB0aGlzLnBrZ05hbWU7XG5cbiAgICBjb25zdCBleHQgPSBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldChbXG4gICAgICAgIC4uLltcbiAgICAgICAgICBcImZzXCIsXG4gICAgICAgICAgXCJwYXRoXCIsXG4gICAgICAgICAgXCJwcm9jZXNzXCIsXG4gICAgICAgICAgXCJyb2xsdXBcIixcbiAgICAgICAgICBcIkByb2xsdXAvcGx1Z2luLXR5cGVzY3JpcHRcIixcbiAgICAgICAgICBcIkByb2xsdXAvcGx1Z2luLWpzb25cIixcbiAgICAgICAgICBcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCIsXG4gICAgICAgICAgXCJAcm9sbHVwL3BsdWdpbi1ub2RlLXJlc29sdmVcIixcbiAgICAgICAgICBcImNoaWxkX3Byb2Nlc3NcIixcbiAgICAgICAgICBcInRzbGliXCIsXG4gICAgICAgICAgXCJ1dGlsXCIsXG4gICAgICAgICAgXCJodHRwc1wiLFxuICAgICAgICBdLFxuICAgICAgICAuLi4oZXh0ZXJuYWxzIHx8IFtdKSxcbiAgICAgIF0pXG4gICAgKTtcblxuICAgIGNvbnN0IHBsdWdpbnMgPSBbXG4gICAgICB0eXBlc2NyaXB0KHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgbW9kdWxlOiBcImVzbmV4dFwiLFxuICAgICAgICAgIGRlY2xhcmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICBvdXREaXI6IGlzTGliID8gXCJiaW5cIiA6IFwiZGlzdFwiLFxuICAgICAgICB9LFxuICAgICAgICBpbmNsdWRlOiBbXCJzcmMvKiovKi50c1wiXSxcbiAgICAgICAgZXhjbHVkZTogW1wibm9kZV9tb2R1bGVzXCIsIFwiKiovKi5zcGVjLnRzXCJdLFxuICAgICAgICB0c2NvbmZpZzogXCIuL3RzY29uZmlnLmpzb25cIixcbiAgICAgIH0pLFxuICAgICAganNvbigpLFxuICAgIF07XG5cbiAgICBpZiAoaXNMaWIpIHtcbiAgICAgIHBsdWdpbnMucHVzaChcbiAgICAgICAgY29tbW9uanMoe1xuICAgICAgICAgIGluY2x1ZGU6IFtdLFxuICAgICAgICAgIGV4Y2x1ZGU6IGV4dGVybmFscyxcbiAgICAgICAgfSksXG4gICAgICAgIG5vZGVSZXNvbHZlKHtcbiAgICAgICAgICByZXNvbHZlT25seTogaW5jbHVkZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXQ6IElucHV0T3B0aW9ucyA9IHtcbiAgICAgIGlucHV0OiBlbnRyeUZpbGUsXG4gICAgICBwbHVnaW5zOiBwbHVnaW5zLFxuICAgICAgZXh0ZXJuYWw6IGV4dCxcbiAgICB9O1xuXG4gICAgY29uc3Qgb3V0cHV0czogT3V0cHV0T3B0aW9uc1tdID0gW1xuICAgICAge1xuICAgICAgICBmaWxlOiBgJHtpc0xpYiA/IFwiYmluL1wiIDogXCJkaXN0L1wifSR7bmFtZU92ZXJyaWRlID8gbmFtZU92ZXJyaWRlIDogYC5idW5kbGUuJHshaXNEZXYgPyBcIm1pblwiIDogXCJcIn1gfSR7aXNFc20gPyBcIi5lc21cIiA6IFwiXCJ9LmNqc2AsXG4gICAgICAgIGZvcm1hdDogaXNMaWIgPyBcImNqc1wiIDogaXNFc20gPyBcImVzbVwiIDogXCJ1bWRcIixcbiAgICAgICAgbmFtZTogcGtnTmFtZSxcbiAgICAgICAgZXNNb2R1bGU6IGlzRXNtLFxuICAgICAgICBzb3VyY2VtYXA6IGlzRGV2ID8gXCJpbmxpbmVcIiA6IGZhbHNlLFxuICAgICAgICBnbG9iYWxzOiB7fSxcbiAgICAgICAgZXhwb3J0czogXCJhdXRvXCIsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYnVuZGxlID0gYXdhaXQgcm9sbHVwKGlucHV0KTtcbiAgICAgIGNvbnNvbGUubG9nKGJ1bmRsZS53YXRjaEZpbGVzKTtcbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlT3V0cHV0cyhidW5kbGU6IFJvbGx1cEJ1aWxkKSB7XG4gICAgICAgIGZvciAoY29uc3Qgb3V0cHV0T3B0aW9ucyBvZiBvdXRwdXRzKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgIGNvbnN0IHsgb3V0cHV0IH0gPSBhd2FpdCBidW5kbGUud3JpdGUob3V0cHV0T3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgZ2VuZXJhdGVPdXRwdXRzKGJ1bmRsZSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gYnVuZGxlOiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZEJ5RW52KGlzRGV2OiBib29sZWFuLCBtb2RlOiBCdWlsZE1vZGUgPSBCdWlsZE1vZGUuQUxMKSB7XG4gICAgdHJ5IHtcbiAgICAgIGRlbGV0ZVBhdGgoXCJsaWJcIik7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgZGVsZXRlUGF0aChcImRpc3RcIik7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICBmcy5ta2RpclN5bmMoXCJsaWJcIik7XG4gICAgZnMubWtkaXJTeW5jKFwiZGlzdFwiKTtcblxuICAgIGlmIChbQnVpbGRNb2RlLkFMTCwgQnVpbGRNb2RlLkJVSUxEXS5pbmNsdWRlcyhtb2RlKSkge1xuICAgICAgYXdhaXQgdGhpcy5idWlsZChpc0RldiwgTW9kZXMuRVNNKTtcbiAgICAgIGF3YWl0IHRoaXMuYnVpbGQoaXNEZXYsIE1vZGVzLkNKUyk7XG4gICAgICB0aGlzLnBhdGNoRmlsZXMoXCJsaWJcIik7XG4gICAgfVxuXG4gICAgaWYgKFtCdWlsZE1vZGUuQUxMLCBCdWlsZE1vZGUuQlVORExFXS5pbmNsdWRlcyhtb2RlKSkge1xuICAgICAgYXdhaXQgdGhpcy5idW5kbGUoTW9kZXMuRVNNLCB0cnVlLCBmYWxzZSk7XG4gICAgICBhd2FpdCB0aGlzLmJ1bmRsZShNb2Rlcy5DSlMsIHRydWUsIGZhbHNlKTtcbiAgICAgIHRoaXMucGF0Y2hGaWxlcyhcImRpc3RcIik7XG4gICAgfVxuXG4gICAgdGhpcy5jb3B5QXNzZXRzKE1vZGVzLkNKUyk7XG4gICAgdGhpcy5jb3B5QXNzZXRzKE1vZGVzLkVTTSk7XG4gIH1cblxuICBhc3luYyBidWlsZERldihtb2RlOiBCdWlsZE1vZGUgPSBCdWlsZE1vZGUuQUxMKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRCeUVudih0cnVlLCBtb2RlKTtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkUHJvZChtb2RlOiBCdWlsZE1vZGUgPSBCdWlsZE1vZGUuQUxMKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRCeUVudihmYWxzZSwgbW9kZSk7XG4gIH1cblxuICBhc3luYyBidWlsZERvY3MoKSB7XG4gICAgYXdhaXQgcnVuQ29tbWFuZChgbnBtIGluc3RhbGwgYmV0dGVyLWRvY3MgdGFmZnlkYmApLnByb21pc2U7XG4gICAgYXdhaXQgcnVuQ29tbWFuZChgbnB4IG1hcmtkb3duLWluY2x1ZGUgLi93b3JrZG9jcy9yZWFkbWUtbWQuanNvbmApLnByb21pc2U7XG4gICAgYXdhaXQgcnVuQ29tbWFuZChcbiAgICAgIGBucHgganNkb2MgLWMgLi93b3JrZG9jcy9qc2RvY3MuanNvbiAtdCAuL25vZGVfbW9kdWxlcy9iZXR0ZXItZG9jc2BcbiAgICApLnByb21pc2U7XG4gICAgYXdhaXQgcnVuQ29tbWFuZChgbnBtIHJlbW92ZSBiZXR0ZXItZG9jcyB0YWZmeWRiYCkucHJvbWlzZTtcbiAgICBbXG4gICAgICB7XG4gICAgICAgIHNyYzogXCJ3b3JrZG9jcy9hc3NldHNcIixcbiAgICAgICAgZGVzdDogXCIuL2RvY3Mvd29ya2RvY3MvYXNzZXRzXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzcmM6IFwid29ya2RvY3MvcmVwb3J0cy9jb3ZlcmFnZVwiLFxuICAgICAgICBkZXN0OiBcIi4vZG9jcy93b3JrZG9jcy9yZXBvcnRzL2NvdmVyYWdlXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzcmM6IFwid29ya2RvY3MvcmVwb3J0cy9odG1sXCIsXG4gICAgICAgIGRlc3Q6IFwiLi9kb2NzL3dvcmtkb2NzL3JlcG9ydHMvaHRtbFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3JjOiBcIndvcmtkb2NzL3Jlc291cmNlc1wiLFxuICAgICAgICBkZXN0OiBcIi4vZG9jcy93b3JrZG9jcy9yZXNvdXJjZXNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNyYzogXCJMSUNFTlNFLm1kXCIsXG4gICAgICAgIGRlc3Q6IFwiLi9kb2NzL0xJQ0VOU0UubWRcIixcbiAgICAgIH0sXG4gICAgXS5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBjb25zdCB7IHNyYywgZGVzdCB9ID0gZjtcbiAgICAgIGNvcHlGaWxlKHNyYywgZGVzdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcnVuPFI+KFxuICAgIGFuc3dlcnM6IExvZ2dpbmdDb25maWcgJlxuICAgICAgdHlwZW9mIERlZmF1bHRDb21tYW5kVmFsdWVzICYgeyBbayBpbiBrZXlvZiB0eXBlb2Ygb3B0aW9uc106IHVua25vd24gfVxuICApOiBQcm9taXNlPHN0cmluZyB8IHZvaWQgfCBSPiB7XG4gICAgY29uc3QgeyBkZXYsIHByb2QsIGRvY3MsIGNvbW1hbmRzLCBidWlsZE1vZGUgfSA9IGFuc3dlcnM7XG5cbiAgICBpZiAoY29tbWFuZHMpIHtcbiAgICAgIGF3YWl0IHRoaXMuYnVpbGRDb21tYW5kcygpO1xuICAgIH1cblxuICAgIGlmIChkZXYpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJ1aWxkRGV2KGJ1aWxkTW9kZSBhcyBCdWlsZE1vZGUpO1xuICAgIH1cbiAgICBpZiAocHJvZCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGRQcm9kKGJ1aWxkTW9kZSBhcyBCdWlsZE1vZGUpO1xuICAgIH1cbiAgICBpZiAoZG9jcykge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGREb2NzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
472
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtc2NyaXB0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jbGkvY29tbWFuZHMvYnVpbGQtc2NyaXB0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwwQkFBMEI7QUFDMUIsOENBQXFDO0FBRXJDLGtEQUEyRTtBQUMzRSxtREFVcUI7QUFDckIsNENBQW9CO0FBQ3BCLGdEQUF3QjtBQUN4QixtQ0FBMEU7QUFDMUUsa0ZBQW1EO0FBQ25ELDhFQUErQztBQUMvQyxxRUFBMEQ7QUFDMUQsc0VBQXVDO0FBRXZDLCtDQUFpQztBQUNqQywyQ0FBNEU7QUFFNUUsTUFBTSxjQUFjLEdBQUcsYUFBYSxDQUFDO0FBQ3JDLE1BQU0sY0FBYyxHQUFHLGFBQWEsQ0FBQztBQUVyQyxJQUFLLEtBR0o7QUFIRCxXQUFLLEtBQUs7SUFDUix5QkFBZ0IsQ0FBQTtJQUNoQix1QkFBYyxDQUFBO0FBQ2hCLENBQUMsRUFISSxLQUFLLEtBQUwsS0FBSyxRQUdUO0FBRUQsSUFBSyxTQUlKO0FBSkQsV0FBSyxTQUFTO0lBQ1osNEJBQWUsQ0FBQTtJQUNmLDhCQUFpQixDQUFBO0lBQ2pCLHdCQUFXLENBQUE7QUFDYixDQUFDLEVBSkksU0FBUyxLQUFULFNBQVMsUUFJYjtBQUVELE1BQU0sUUFBUSxHQUFHLENBQUMsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLGVBQWUsQ0FBQyxDQUFDO0FBRXBFLE1BQU0sT0FBTyxHQUFHO0lBQ2QsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsS0FBSztLQUNmO0lBQ0QsR0FBRyxFQUFFO1FBQ0gsSUFBSSxFQUFFLFNBQVM7UUFDZixPQUFPLEVBQUUsS0FBSztLQUNmO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsSUFBSSxFQUFFLFFBQVE7UUFDZCxPQUFPLEVBQUUsU0FBUyxDQUFDLEdBQUc7S0FDdkI7SUFDRCxJ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IGlnbm9yZSBmaWxlICovXG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIi4uL2NvbW1hbmRcIjtcbmltcG9ydCB7IENvbW1hbmRPcHRpb25zIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBEZWZhdWx0Q29tbWFuZE9wdGlvbnMsIERlZmF1bHRDb21tYW5kVmFsdWVzIH0gZnJvbSBcIi4uL2NvbnN0YW50c1wiO1xuaW1wb3J0IHtcbiAgY29weUZpbGUsXG4gIGRlbGV0ZVBhdGgsXG4gIGdldEFsbEZpbGVzLFxuICBnZXRQYWNrYWdlLFxuICBwYXRjaEZpbGUsXG4gIHJlYWRGaWxlLFxuICByZW5hbWVGaWxlLFxuICBydW5Db21tYW5kLFxuICB3cml0ZUZpbGUsXG59IGZyb20gXCIuLi8uLi91dGlsc1wiO1xuaW1wb3J0IGZzIGZyb20gXCJmc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IElucHV0T3B0aW9ucywgT3V0cHV0T3B0aW9ucywgcm9sbHVwLCBSb2xsdXBCdWlsZCB9IGZyb20gXCJyb2xsdXBcIjtcbmltcG9ydCB0eXBlc2NyaXB0IGZyb20gXCJAcm9sbHVwL3BsdWdpbi10eXBlc2NyaXB0XCI7XG5pbXBvcnQgY29tbW9uanMgZnJvbSBcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCI7XG5pbXBvcnQgeyBub2RlUmVzb2x2ZSB9IGZyb20gXCJAcm9sbHVwL3BsdWdpbi1ub2RlLXJlc29sdmVcIjtcbmltcG9ydCBqc29uIGZyb20gXCJAcm9sbHVwL3BsdWdpbi1qc29uXCI7XG5pbXBvcnQgeyBMb2dnaW5nQ29uZmlnIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5pbXBvcnQgKiBhcyB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgRGlhZ25vc3RpYywgRW1pdFJlc3VsdCwgTW9kdWxlS2luZCwgU291cmNlRmlsZSB9IGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbmNvbnN0IFZFUlNJT05fU1RSSU5HID0gXCIjI1ZFUlNJT04jI1wiO1xuY29uc3QgUEFDS0FHRV9TVFJJTkcgPSBcIiMjUEFDS0FHRSMjXCI7XG5cbmVudW0gTW9kZXMge1xuICBDSlMgPSBcImNvbW1vbmpzXCIsXG4gIEVTTSA9IFwiZXMyMDIyXCIsXG59XG5cbmVudW0gQnVpbGRNb2RlIHtcbiAgQlVJTEQgPSBcImJ1aWxkXCIsXG4gIEJVTkRMRSA9IFwiYnVuZGxlXCIsXG4gIEFMTCA9IFwiYWxsXCIsXG59XG5cbmNvbnN0IENvbW1hbmRzID0gW1widXBkYXRlLXNjcmlwdHNcIiwgXCJ0YWctcmVsZWFzZVwiLCBcImJ1aWxkLXNjcmlwdHNcIl07XG5cbmNvbnN0IG9wdGlvbnMgPSB7XG4gIHByb2Q6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbiAgZGV2OiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgZGVmYXVsdDogZmFsc2UsXG4gIH0sXG4gIGJ1aWxkTW9kZToge1xuICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgZGVmYXVsdDogQnVpbGRNb2RlLkFMTCxcbiAgfSxcbiAgZG9jczoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBjb21tYW5kczoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICAgIGRlZmF1bHQ6IGZhbHNlLFxuICB9LFxuICBiYW5uZXI6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBkZWZhdWx0OiBmYWxzZSxcbiAgfSxcbn07XG5cbmNvbnN0IGNqczJUcmFuc2Zvcm1lciA9IChleHQgPSBcIi5janNcIikgPT4ge1xuICBjb25zdCBsb2cgPSBCdWlsZFNjcmlwdHMubG9nLmZvcihjanMyVHJhbnNmb3JtZXIpO1xuICBjb25zdCByZXNvbHV0aW9uQ2FjaGUgPSBuZXcgTWFwPHN0cmluZywgc3RyaW5nPigpO1xuXG4gIHJldHVybiAodHJhbnNmb3JtYXRpb25Db250ZXh0OiB0cy5UcmFuc2Zvcm1hdGlvbkNvbnRleHQpID0+IHtcbiAgICByZXR1cm4gKHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUpID0+IHtcbiAgICAgIGNvbnN0IHNvdXJjZURpciA9IHBhdGguZGlybmFtZShzb3VyY2VGaWxlLmZpbGVOYW1lKTtcblxuICAgICAgZnVuY3Rpb24gcmVzb2x2ZVBhdGgoaW1wb3J0UGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGNvbnN0IGNhY2hlS2V5ID0gSlNPTi5zdHJpbmdpZnkoW3NvdXJjZURpciwgaW1wb3J0UGF0aF0pO1xuICAgICAgICBjb25zdCBjYWNoZWRWYWx1ZSA9IHJlc29sdXRpb25DYWNoZS5nZXQoY2FjaGVLZXkpO1xuICAgICAgICBpZiAoY2FjaGVkVmFsdWUgIT0gbnVsbCkgcmV0dXJuIGNhY2hlZFZhbHVlO1xuXG4gICAgICAgIGxldCByZXNvbHZlZFBhdGggPSBpbXBvcnRQYXRoO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc29sdmVkUGF0aCA9IHBhdGgucmVzb2x2ZShzb3VyY2VEaXIsIHJlc29sdmVkUGF0aCArIFwiLnRzXCIpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcjogdW5rbm93bikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgRmFpbGVkIHRvIHJlc29sdmUgcGF0aCAke2ltcG9ydFBhdGh9OiAke2Vycm9yfWApO1xuICAgICAgICB9XG4gICAgICAgIGxldCBzdGF0O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHN0YXQgPSBmcy5zdGF0U3luYyhyZXNvbHZlZFBhdGgpO1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGxvZy52ZXJib3NlKFxuICAgICAgICAgICAgICBgVGVzdGluZyBleGlzdGVuY2Ugb2YgcGF0aCAke3Jlc29sdmVkUGF0aH0gYXMgYSBmb2xkZXIgZGVmYXVsdGluZyB0byBpbmRleCBmaWxlYFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHN0YXQgPSBmcy5zdGF0U3luYyhyZXNvbHZlZFBhdGgucmVwbGFjZSgvXFwudHMkL2dtLCBcIlwiKSk7XG4gICAgICAgICAgfSBjYXRjaCAoZTI6IHVua25vd24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgICAgYEZhaWxlZCB0byByZXNvbHZlIHBhdGggJHtpbXBvcnRQYXRofTogJHtlfSwgJHtlMn1gXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RhdC5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgIHJlc29sdmVkUGF0aCA9IHJlc29sdmVkUGF0aC5yZXBsYWNlKC9cXC50cyQvZ20sIFwiL2luZGV4LnRzXCIpO1xuXG4gICAgICAgIGlmIChwYXRoLmlzQWJzb2x1dGUocmVzb2x2ZWRQYXRoKSkge1xuICAgICAgICAgIGNvbnN0IGV4dGVuc2lvbiA9XG4gICAgICAgICAgICAoL1xcLnRzeD8kLy5leGVjKHBhdGguYmFzZW5hbWUocmVzb2x2ZWRQYXRoKSkgfHwgW10pWzBdIHx8IHZvaWQgMDtcblxuICAgICAgICAgIHJlc29sdmVkUGF0aCA9XG4gICAgICAgICAgICBcIi4vXCIgK1xuICAgICAgICAgICAgcGF0aC5yZWxhdGl2ZShcbiAgICAgICAgICAgICAgc291cmNlRGlyLFxuICAgICAgICAgICAgICBwYXRoLnJlc29sdmUoXG4gICAgICAgICAgICAgICAgcGF0aC5kaXJuYW1lKHJlc29sdmVkUGF0aCksXG4gICAgICAgICAgICAgICAgcGF0aC5iYXNlbmFtZShyZXNvbHZlZFBhdGgsIGV4dGVuc2lvbikgKyBleHRcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlc29sdXRpb25DYWNoZS5zZXQoY2FjaGVLZXksIHJlc29sdmVkUGF0aCk7XG4gICAgICAgIHJldHVybiByZXNvbHZlZFBhdGg7XG4gICAgICB9XG5cbiAgICAgIGZ1bmN0aW9uIHZpc2l0Tm9kZShub2RlOiB0cy5Ob2RlKTogdHMuVmlzaXRSZXN1bHQ8dHMuTm9kZT4ge1xuICAgICAgICBpZiAoc2hvdWxkTXV0YXRlTW9kdWxlU3BlY2lmaWVyKG5vZGUpKSB7XG4gICAgICAgICAgaWYgKHRzLmlzSW1wb3J0RGVjbGFyYXRpb24obm9kZSkpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlc29sdmVkUGF0aCA9IHJlc29sdmVQYXRoKG5vZGUubW9kdWxlU3BlY2lmaWVyLnRleHQpO1xuICAgICAgICAgICAgY29uc3QgbmV3TW9kdWxlU3BlY2lmaWVyID1cbiAgICAgICAgICAgICAgdHJhbnNmb3JtYXRpb25Db250ZXh0LmZhY3RvcnkuY3JlYXRlU3RyaW5nTGl0ZXJhbChyZXNvbHZlZFBhdGgpO1xuICAgICAgICAgICAgcmV0dXJuIHRyYW5zZm9ybWF0aW9uQ29udGV4dC5mYWN0b3J5LnVwZGF0ZUltcG9ydERlY2xhcmF0aW9uKFxuICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICBub2RlLm1vZGlmaWVycyxcbiAgICAgICAgICAgICAgbm9kZS5pbXBvcnRDbGF1c2UsXG4gICAgICAgICAgICAgIG5ld01vZHVsZVNwZWNpZmllcixcbiAgICAgICAgICAgICAgdW5kZWZpbmVkXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gZWxzZSBpZiAodHMuaXNFeHBvcnREZWNsYXJhdGlvbihub2RlKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzb2x2ZWRQYXRoID0gcmVzb2x2ZVBhdGgobm9kZS5tb2R1bGVTcGVjaWZpZXIudGV4dCk7XG4gICAgICAgICAgICBjb25zdCBuZXdNb2R1bGVTcGVjaWZpZXIgPVxuICAgICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbkNvbnRleHQuZmFjdG9yeS5jcmVhdGVTdHJpbmdMaXRlcmFsKHJlc29sdmVkUGF0aCk7XG4gICAgICAgICAgICByZXR1cm4gdHJhbnNmb3JtYXRpb25Db250ZXh0LmZhY3RvcnkudXBkYXRlRXhwb3J0RGVjbGFyYXRpb24oXG4gICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgIG5vZGUubW9kaWZpZXJzLFxuICAgICAgICAgICAgICBub2RlLmlzVHlwZU9ubHksXG4gICAgICAgICAgICAgIG5vZGUuZXhwb3J0Q2xhdXNlLFxuICAgICAgICAgICAgICBuZXdNb2R1bGVTcGVjaWZpZXIsXG4gICAgICAgICAgICAgIHVuZGVmaW5lZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdHMudmlzaXRFYWNoQ2hpbGQobm9kZSwgdmlzaXROb2RlLCB0cmFuc2Zvcm1hdGlvbkNvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICBmdW5jdGlvbiBzaG91bGRNdXRhdGVNb2R1bGVTcGVjaWZpZXIobm9kZTogdHMuTm9kZSk6IG5vZGUgaXMgKFxuICAgICAgICB8IHRzLkltcG9ydERlY2xhcmF0aW9uXG4gICAgICAgIHwgdHMuRXhwb3J0RGVjbGFyYXRpb25cbiAgICAgICkgJiB7XG4gICAgICAgIG1vZHVsZVNwZWNpZmllcjogdHMuU3RyaW5nTGl0ZXJhbDtcbiAgICAgIH0ge1xuICAgICAgICBpZiAoIXRzLmlzSW1wb3J0RGVjbGFyYXRpb24obm9kZSkgJiYgIXRzLmlzRXhwb3J0RGVjbGFyYXRpb24obm9kZSkpXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuXG4gICAgICAgIGlmIChub2RlLm1vZHVsZVNwZWNpZmllciA9PT0gdW5kZWZpbmVkKSByZXR1cm4gZmFsc2U7XG4gICAgICAgIC8vIG9ubHkgd2hlbiBtb2R1bGUgc3BlY2lmaWVyIGlzIHZhbGlkXG4gICAgICAgIGlmICghdHMuaXNTdHJpbmdMaXRlcmFsKG5vZGUubW9kdWxlU3BlY2lmaWVyKSkgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBvbmx5IHdoZW4gcGF0aCBpcyByZWxhdGl2ZVxuICAgICAgICBpZiAoXG4gICAgICAgICAgIW5vZGUubW9kdWxlU3BlY2lmaWVyLnRleHQuc3RhcnRzV2l0aChcIi4vXCIpICYmXG4gICAgICAgICAgIW5vZGUubW9kdWxlU3BlY2lmaWVyLnRleHQuc3RhcnRzV2l0aChcIi4uL1wiKVxuICAgICAgICApXG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAvLyBvbmx5IHdoZW4gbW9kdWxlIHNwZWNpZmllciBoYXMgbm8gZXh0ZW5zaW9uXG4gICAgICAgIGlmIChwYXRoLmV4dG5hbWUobm9kZS5tb2R1bGVTcGVjaWZpZXIudGV4dCkgIT09IFwiXCIpIHJldHVybiBmYWxzZTtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0cy52aXNpdE5vZGUoc291cmNlRmlsZSwgdmlzaXROb2RlKSBhcyBTb3VyY2VGaWxlO1xuICAgIH07XG4gIH07XG59O1xuXG5leHBvcnQgY2xhc3MgQnVpbGRTY3JpcHRzIGV4dGVuZHMgQ29tbWFuZDxcbiAgQ29tbWFuZE9wdGlvbnM8dHlwZW9mIG9wdGlvbnM+LFxuICB2b2lkXG4+IHtcbiAgcHJpdmF0ZSByZXBsYWNlbWVudHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7fTtcbiAgcHJpdmF0ZSByZWFkb25seSBwa2dWZXJzaW9uOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgcGtnTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFxuICAgICAgXCJCdWlsZFNjcmlwdHNcIixcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRDb21tYW5kT3B0aW9ucywgb3B0aW9ucykgYXMgQ29tbWFuZE9wdGlvbnM8XG4gICAgICAgIHR5cGVvZiBvcHRpb25zXG4gICAgICA+XG4gICAgKTtcbiAgICBjb25zdCBwa2cgPSBnZXRQYWNrYWdlKCkgYXMgeyBuYW1lOiBzdHJpbmc7IHZlcnNpb246IHN0cmluZyB9O1xuICAgIGNvbnN0IHsgbmFtZSwgdmVyc2lvbiB9ID0gcGtnO1xuICAgIHRoaXMucGtnTmFtZSA9IG5hbWUuaW5jbHVkZXMoXCJAXCIpID8gbmFtZS5zcGxpdChcIi9cIilbMV0gOiBuYW1lO1xuICAgIHRoaXMucGtnVmVyc2lvbiA9IHZlcnNpb247XG4gICAgdGhpcy5yZXBsYWNlbWVudHNbVkVSU0lPTl9TVFJJTkddID0gdGhpcy5wa2dWZXJzaW9uO1xuICAgIHRoaXMucmVwbGFjZW1lbnRzW1BBQ0tBR0VfU1RSSU5HXSA9IG5hbWU7XG4gIH1cblxuICBwYXRjaEZpbGVzKHA6IHN0cmluZykge1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLnBhdGNoRmlsZXMpO1xuICAgIGNvbnN0IHsgbmFtZSwgdmVyc2lvbiB9ID0gZ2V0UGFja2FnZSgpIGFzIGFueTtcbiAgICBsb2cuaW5mbyhgUGF0Y2hpbmcgJHtuYW1lfSAke3ZlcnNpb259IG1vZHVsZSBpbiAke3B9Li4uYCk7XG4gICAgY29uc3Qgc3RhdCA9IGZzLnN0YXRTeW5jKHApO1xuICAgIGlmIChzdGF0LmlzRGlyZWN0b3J5KCkpXG4gICAgICBmcy5yZWFkZGlyU3luYyhwLCB7IHdpdGhGaWxlVHlwZXM6IHRydWUsIHJlY3Vyc2l2ZTogdHJ1ZSB9KVxuICAgICAgICAuZmlsdGVyKChwKSA9PiBwLmlzRmlsZSgpKVxuICAgICAgICAuZm9yRWFjaCgoZmlsZSkgPT5cbiAgICAgICAgICBwYXRjaEZpbGUocGF0aC5qb2luKGZpbGUucGFyZW50UGF0aCwgZmlsZS5uYW1lKSwgdGhpcy5yZXBsYWNlbWVudHMpXG4gICAgICAgICk7XG4gICAgbG9nLnZlcmJvc2UoYE1vZHVsZSAke25hbWV9ICR7dmVyc2lvbn0gcGF0Y2hlZCBpbiAke3B9Li4uYCk7XG4gIH1cblxuICBwcml2YXRlIHJlcG9ydERpYWdub3N0aWNzKGRpYWdub3N0aWNzOiBEaWFnbm9zdGljW10pOiB2b2lkIHtcbiAgICBkaWFnbm9zdGljcy5mb3JFYWNoKChkaWFnbm9zdGljKSA9PiB7XG4gICAgICBsZXQgbWVzc2FnZSA9IFwiRXJyb3JcIjtcbiAgICAgIGlmIChkaWFnbm9zdGljLmZpbGUgJiYgZGlhZ25vc3RpYy5zdGFydCkge1xuICAgICAgICBjb25zdCB7IGxpbmUsIGNoYXJhY3RlciB9ID1cbiAgICAgICAgICBkaWFnbm9zdGljLmZpbGUuZ2V0TGluZUFuZENoYXJhY3Rlck9mUG9zaXRpb24oZGlhZ25vc3RpYy5zdGFydCk7XG4gICAgICAgIG1lc3NhZ2UgKz0gYCAke2RpYWdub3N0aWMuZmlsZS5maWxlTmFtZX0gKCR7bGluZSArIDF9LCR7Y2hhcmFjdGVyICsgMX0pYDtcbiAgICAgIH1cbiAgICAgIG1lc3NhZ2UgKz1cbiAgICAgICAgXCI6IFwiICsgdHMuZmxhdHRlbkRpYWdub3N0aWNNZXNzYWdlVGV4dChkaWFnbm9zdGljLm1lc3NhZ2VUZXh0LCBcIlxcblwiKTtcbiAgICAgIGNvbnNvbGUubG9nKG1lc3NhZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkQ29uZmlnRmlsZShjb25maWdGaWxlTmFtZTogc3RyaW5nKSB7XG4gICAgLy8gUmVhZCBjb25maWcgZmlsZVxuICAgIGNvbnN0IGNvbmZpZ0ZpbGVUZXh0ID0gZnMucmVhZEZpbGVTeW5jKGNvbmZpZ0ZpbGVOYW1lKS50b1N0cmluZygpO1xuXG4gICAgLy8gUGFyc2UgSlNPTiwgYWZ0ZXIgcmVtb3ZpbmcgY29tbWVudHMuIEp1c3QgZmFuY2llciBKU09OLnBhcnNlXG4gICAgY29uc3QgcmVzdWx0ID0gdHMucGFyc2VDb25maWdGaWxlVGV4dFRvSnNvbihjb25maWdGaWxlTmFtZSwgY29uZmlnRmlsZVRleHQpO1xuICAgIGNvbnN0IGNvbmZpZ09iamVjdCA9IHJlc3VsdC5jb25maWc7XG4gICAgaWYgKCFjb25maWdPYmplY3QpIHtcbiAgICAgIHRoaXMucmVwb3J0RGlhZ25vc3RpY3MoW3Jlc3VsdC5lcnJvciFdKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkZhaWxlZCB0byBwYXJzZSB0c2NvbmZpZy5qc29uXCIpO1xuICAgIH1cblxuICAgIC8vIEV4dHJhY3QgY29uZmlnIGluZnJvbWF0aW9uXG4gICAgY29uc3QgY29uZmlnUGFyc2VSZXN1bHQgPSB0cy5wYXJzZUpzb25Db25maWdGaWxlQ29udGVudChcbiAgICAgIGNvbmZpZ09iamVjdCxcbiAgICAgIHRzLnN5cyxcbiAgICAgIHBhdGguZGlybmFtZShjb25maWdGaWxlTmFtZSlcbiAgICApO1xuICAgIGlmIChjb25maWdQYXJzZVJlc3VsdC5lcnJvcnMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5yZXBvcnREaWFnbm9zdGljcyhjb25maWdQYXJzZVJlc3VsdC5lcnJvcnMpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiRmFpbGVkIHRvIHBhcnNlIHRzY29uZmlnLmpzb25cIik7XG4gICAgfVxuICAgIHJldHVybiBjb25maWdQYXJzZVJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgYnVpbGRUcyhpc0RldjogYm9vbGVhbiwgbW9kZTogTW9kZXMsIGJ1bmRsZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuYnVpbGRUcyk7XG4gICAgbG9nLmluZm8oXG4gICAgICBgQnVpbGRpbmcgJHt0aGlzLnBrZ05hbWV9ICR7dGhpcy5wa2dWZXJzaW9ufSBtb2R1bGUgKCR7bW9kZX0pIGluICR7aXNEZXYgPyBcImRldlwiIDogXCJwcm9kXCJ9IG1vZGUuLi5gXG4gICAgKTtcbiAgICBsZXQgdHNDb25maWc7XG4gICAgdHJ5IHtcbiAgICAgIHRzQ29uZmlnID0gdGhpcy5yZWFkQ29uZmlnRmlsZShcIi4vdHNjb25maWcuanNvblwiKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEZhaWxlZCB0byBwYXJzZSB0c2NvbmZpZy5qc29uOiAke2V9YCk7XG4gICAgfVxuXG4gICAgaWYgKGJ1bmRsZSkge1xuICAgICAgdHNDb25maWcub3B0aW9ucy5tb2R1bGUgPSBNb2R1bGVLaW5kLkFNRDtcbiAgICAgIHRzQ29uZmlnLm9wdGlvbnMub3V0RGlyID0gXCJkaXN0XCI7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLmlzb2xhdGVkTW9kdWxlcyA9IGZhbHNlO1xuICAgICAgdHNDb25maWcub3B0aW9ucy5vdXRGaWxlID0gdGhpcy5wa2dOYW1lO1xuICAgIH0gZWxzZSB7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLm91dERpciA9IGBsaWIke21vZGUgPT09IE1vZGVzLkVTTSA/IFwiL2VzbVwiIDogXCJcIn1gO1xuICAgICAgdHNDb25maWcub3B0aW9ucy5tb2R1bGUgPVxuICAgICAgICBtb2RlID09PSBNb2Rlcy5FU00gPyBNb2R1bGVLaW5kLkVTMjAyMiA6IE1vZHVsZUtpbmQuQ29tbW9uSlM7XG4gICAgfVxuXG4gICAgaWYgKGlzRGV2KSB7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLmlubGluZVNvdXJjZU1hcCA9IHRydWU7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLnNvdXJjZU1hcCA9IGZhbHNlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0c0NvbmZpZy5vcHRpb25zLnNvdXJjZU1hcCA9IGZhbHNlO1xuICAgIH1cblxuICAgIGNvbnN0IHByb2dyYW0gPSB0cy5jcmVhdGVQcm9ncmFtKHRzQ29uZmlnLmZpbGVOYW1lcywgdHNDb25maWcub3B0aW9ucyk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1hdGlvbnM6IHsgYmVmb3JlPzogYW55W10gfSA9IHt9O1xuICAgIGlmIChtb2RlID09PSBNb2Rlcy5DSlMpIHtcbiAgICAgIHRyYW5zZm9ybWF0aW9ucy5iZWZvcmUgPSBbY2pzMlRyYW5zZm9ybWVyKFwiLmNqc1wiKV07XG4gICAgfSBlbHNlIGlmIChtb2RlID09PSBNb2Rlcy5FU00pIHtcbiAgICAgIHRyYW5zZm9ybWF0aW9ucy5iZWZvcmUgPSBbY2pzMlRyYW5zZm9ybWVyKFwiLmpzXCIpXTtcbiAgICB9XG5cbiAgICBjb25zdCBlbWl0UmVzdWx0OiBFbWl0UmVzdWx0ID0gcHJvZ3JhbS5lbWl0KFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdHJhbnNmb3JtYXRpb25zXG4gICAgKTtcblxuICAgIGNvbnN0IGFsbERpYWdub3N0aWNzID0gdHNcbiAgICAgIC5nZXRQcmVFbWl0RGlhZ25vc3RpY3MocHJvZ3JhbSlcbiAgICAgIC5jb25jYXQoZW1pdFJlc3VsdC5kaWFnbm9zdGljcyk7XG5cbiAgICBhbGxEaWFnbm9zdGljcy5mb3JFYWNoKChkaWFnbm9zdGljKSA9PiB7XG4gICAgICBpZiAoZGlhZ25vc3RpYy5maWxlKSB7XG4gICAgICAgIGNvbnN0IHsgbGluZSwgY2hhcmFjdGVyIH0gPVxuICAgICAgICAgIGRpYWdub3N0aWMuZmlsZS5nZXRMaW5lQW5kQ2hhcmFjdGVyT2ZQb3NpdGlvbihkaWFnbm9zdGljLnN0YXJ0ISk7XG4gICAgICAgIGNvbnN0IG1lc3NhZ2UgPSB0cy5mbGF0dGVuRGlhZ25vc3RpY01lc3NhZ2VUZXh0KFxuICAgICAgICAgIGRpYWdub3N0aWMubWVzc2FnZVRleHQsXG4gICAgICAgICAgXCJcXG5cIlxuICAgICAgICApO1xuICAgICAgICBsb2cuaW5mbyhcbiAgICAgICAgICBgJHtkaWFnbm9zdGljLmZpbGUuZmlsZU5hbWV9ICgke2xpbmUgKyAxfSwke2NoYXJhY3RlciArIDF9KTogJHttZXNzYWdlfWBcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5pbmZvKHRzLmZsYXR0ZW5EaWFnbm9zdGljTWVzc2FnZVRleHQoZGlhZ25vc3RpYy5tZXNzYWdlVGV4dCwgXCJcXG5cIikpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIGlmIChlbWl0UmVzdWx0LmVtaXRTa2lwcGVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJCdWlsZCBmYWlsZWRcIik7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZChpc0RldjogYm9vbGVhbiwgbW9kZTogTW9kZXMsIGJ1bmRsZSA9IGZhbHNlKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuYnVpbGQpO1xuICAgIGF3YWl0IHRoaXMuYnVpbGRUcyhpc0RldiwgbW9kZSwgYnVuZGxlKTtcblxuICAgIGxvZy52ZXJib3NlKFxuICAgICAgYE1vZHVsZSAke3RoaXMucGtnTmFtZX0gJHt0aGlzLnBrZ1ZlcnNpb259ICgke21vZGV9KSBidWlsdCBpbiAke2lzRGV2ID8gXCJkZXZcIiA6IFwicHJvZFwifSBtb2RlLi4uYFxuICAgICk7XG4gICAgaWYgKG1vZGUgPT09IE1vZGVzLkNKUyAmJiAhYnVuZGxlKSB7XG4gICAgICBjb25zdCBmaWxlcyA9IGdldEFsbEZpbGVzKFxuICAgICAgICBcImxpYlwiLFxuICAgICAgICAoZmlsZSkgPT4gZmlsZS5lbmRzV2l0aChcIi5qc1wiKSAmJiAhZmlsZS5pbmNsdWRlcyhcIi9lc20vXCIpXG4gICAgICApO1xuXG4gICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZXMpIHtcbiAgICAgICAgbG9nLnZlcmJvc2UoYFBhdGNoaW5nICR7ZmlsZX0ncyBjanMgaW1wb3J0cy4uLmApO1xuICAgICAgICBjb25zdCBmID0gZmlsZS5yZXBsYWNlKFwiLmpzXCIsIFwiLmNqc1wiKTtcbiAgICAgICAgYXdhaXQgcmVuYW1lRmlsZShmaWxlLCBmKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBjb3B5QXNzZXRzKG1vZGU6IE1vZGVzKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuY29weUFzc2V0cyk7XG4gICAgbGV0IGhhc0Fzc2V0cyA9IGZhbHNlO1xuICAgIHRyeSB7XG4gICAgICBoYXNBc3NldHMgPSBmcy5zdGF0U3luYyhcIi4vc3JjL2Fzc2V0c1wiKS5pc0RpcmVjdG9yeSgpO1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHJldHVybiBsb2cudmVyYm9zZShgTm8gYXNzZXRzIGZvdW5kIGluIC4vc3JjL2Fzc2V0cyB0byBjb3B5YCk7XG4gICAgfVxuICAgIGlmIChoYXNBc3NldHMpXG4gICAgICBjb3B5RmlsZShcbiAgICAgICAgXCIuL3NyYy9hc3NldHNcIixcbiAgICAgICAgYC4vJHttb2RlID09PSBNb2Rlcy5DSlMgPyBcImxpYlwiIDogXCJkaXN0XCJ9L2Fzc2V0c2BcbiAgICAgICk7XG4gIH1cblxuICBhc3luYyBidWlsZENvbW1hbmRzKCkge1xuICAgIGZvciAoY29uc3QgY21kIG9mIENvbW1hbmRzKSB7XG4gICAgICBhd2FpdCB0aGlzLmJ1bmRsZShNb2Rlcy5DSlMsIHRydWUsIHRydWUsIGBzcmMvYmluLyR7Y21kfS50c2AsIGNtZCk7XG4gICAgICBsZXQgZGF0YSA9IHJlYWRGaWxlKGBiaW4vJHtjbWR9LmNqc2ApO1xuICAgICAgZGF0YSA9IFwiIyEvdXNyL2Jpbi9lbnYgbm9kZVxcblwiICsgZGF0YTtcbiAgICAgIHdyaXRlRmlsZShgYmluLyR7Y21kfS5janNgLCBkYXRhKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBidW5kbGUoXG4gICAgbW9kZTogTW9kZXMsXG4gICAgaXNEZXY6IGJvb2xlYW4sXG4gICAgaXNMaWI6IGJvb2xlYW4sXG4gICAgZW50cnlGaWxlOiBzdHJpbmcgPSBcInNyYy9pbmRleC50c1wiLFxuICAgIG5hbWVPdmVycmlkZTogc3RyaW5nID0gdGhpcy5wa2dOYW1lLFxuICAgIGV4dGVybmFscz86IHN0cmluZ1tdLFxuICAgIGluY2x1ZGU6IHN0cmluZ1tdID0gW1xuICAgICAgXCJwcm9tcHRzXCIsXG4gICAgICBcInN0eWxlZC1zdHJpbmctYnVpbGRlclwiLFxuICAgICAgXCJ0eXBlZC1vYmplY3QtYWNjdW11bGF0b3JcIixcbiAgICAgIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIixcbiAgICBdXG4gICkge1xuICAgIGNvbnN0IGlzRXNtID0gbW9kZSA9PT0gTW9kZXMuRVNNO1xuICAgIGNvbnN0IHBrZ05hbWUgPSB0aGlzLnBrZ05hbWU7XG5cbiAgICBjb25zdCBleHQgPSBBcnJheS5mcm9tKFxuICAgICAgbmV3IFNldChbXG4gICAgICAgIC4uLltcbiAgICAgICAgICBcImZzXCIsXG4gICAgICAgICAgXCJwYXRoXCIsXG4gICAgICAgICAgXCJwcm9jZXNzXCIsXG4gICAgICAgICAgXCJyb2xsdXBcIixcbiAgICAgICAgICBcIkByb2xsdXAvcGx1Z2luLXR5cGVzY3JpcHRcIixcbiAgICAgICAgICBcIkByb2xsdXAvcGx1Z2luLWpzb25cIixcbiAgICAgICAgICBcIkByb2xsdXAvcGx1Z2luLWNvbW1vbmpzXCIsXG4gICAgICAgICAgXCJAcm9sbHVwL3BsdWdpbi1ub2RlLXJlc29sdmVcIixcbiAgICAgICAgICBcImNoaWxkX3Byb2Nlc3NcIixcbiAgICAgICAgICBcInRzbGliXCIsXG4gICAgICAgICAgXCJ1dGlsXCIsXG4gICAgICAgICAgXCJodHRwc1wiLFxuICAgICAgICBdLFxuICAgICAgICAuLi4oZXh0ZXJuYWxzIHx8IFtdKSxcbiAgICAgIF0pXG4gICAgKTtcblxuICAgIGNvbnN0IHBsdWdpbnMgPSBbXG4gICAgICB0eXBlc2NyaXB0KHtcbiAgICAgICAgY29tcGlsZXJPcHRpb25zOiB7XG4gICAgICAgICAgbW9kdWxlOiBcImVzbmV4dFwiLFxuICAgICAgICAgIGRlY2xhcmF0aW9uOiBmYWxzZSxcbiAgICAgICAgICBvdXREaXI6IGlzTGliID8gXCJiaW5cIiA6IFwiZGlzdFwiLFxuICAgICAgICB9LFxuICAgICAgICBpbmNsdWRlOiBbXCJzcmMvKiovKi50c1wiXSxcbiAgICAgICAgZXhjbHVkZTogW1wibm9kZV9tb2R1bGVzXCIsIFwiKiovKi5zcGVjLnRzXCJdLFxuICAgICAgICB0c2NvbmZpZzogXCIuL3RzY29uZmlnLmpzb25cIixcbiAgICAgIH0pLFxuICAgICAganNvbigpLFxuICAgIF07XG5cbiAgICBpZiAoaXNMaWIpIHtcbiAgICAgIHBsdWdpbnMucHVzaChcbiAgICAgICAgY29tbW9uanMoe1xuICAgICAgICAgIGluY2x1ZGU6IFtdLFxuICAgICAgICAgIGV4Y2x1ZGU6IGV4dGVybmFscyxcbiAgICAgICAgfSksXG4gICAgICAgIG5vZGVSZXNvbHZlKHtcbiAgICAgICAgICByZXNvbHZlT25seTogaW5jbHVkZSxcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5wdXQ6IElucHV0T3B0aW9ucyA9IHtcbiAgICAgIGlucHV0OiBlbnRyeUZpbGUsXG4gICAgICBwbHVnaW5zOiBwbHVnaW5zLFxuICAgICAgZXh0ZXJuYWw6IGV4dCxcbiAgICB9O1xuXG4gICAgY29uc3Qgb3V0cHV0czogT3V0cHV0T3B0aW9uc1tdID0gW1xuICAgICAge1xuICAgICAgICBmaWxlOiBgJHtpc0xpYiA/IFwiYmluL1wiIDogXCJkaXN0L1wifSR7bmFtZU92ZXJyaWRlID8gbmFtZU92ZXJyaWRlIDogYC5idW5kbGUuJHshaXNEZXYgPyBcIm1pblwiIDogXCJcIn1gfSR7aXNFc20gPyBcIi5lc21cIiA6IFwiXCJ9LmNqc2AsXG4gICAgICAgIGZvcm1hdDogaXNMaWIgPyBcImNqc1wiIDogaXNFc20gPyBcImVzbVwiIDogXCJ1bWRcIixcbiAgICAgICAgbmFtZTogcGtnTmFtZSxcbiAgICAgICAgZXNNb2R1bGU6IGlzRXNtLFxuICAgICAgICBzb3VyY2VtYXA6IGlzRGV2ID8gXCJpbmxpbmVcIiA6IGZhbHNlLFxuICAgICAgICBnbG9iYWxzOiB7fSxcbiAgICAgICAgZXhwb3J0czogXCJhdXRvXCIsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgYnVuZGxlID0gYXdhaXQgcm9sbHVwKGlucHV0KTtcbiAgICAgIGNvbnNvbGUubG9nKGJ1bmRsZS53YXRjaEZpbGVzKTtcbiAgICAgIGFzeW5jIGZ1bmN0aW9uIGdlbmVyYXRlT3V0cHV0cyhidW5kbGU6IFJvbGx1cEJ1aWxkKSB7XG4gICAgICAgIGZvciAoY29uc3Qgb3V0cHV0T3B0aW9ucyBvZiBvdXRwdXRzKSB7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICAgIGNvbnN0IHsgb3V0cHV0IH0gPSBhd2FpdCBidW5kbGUud3JpdGUob3V0cHV0T3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgYXdhaXQgZ2VuZXJhdGVPdXRwdXRzKGJ1bmRsZSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBGYWlsZWQgdG8gYnVuZGxlOiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBidWlsZEJ5RW52KGlzRGV2OiBib29sZWFuLCBtb2RlOiBCdWlsZE1vZGUgPSBCdWlsZE1vZGUuQUxMKSB7XG4gICAgdHJ5IHtcbiAgICAgIGRlbGV0ZVBhdGgoXCJsaWJcIik7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgZGVsZXRlUGF0aChcImRpc3RcIik7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgLy8gZG8gbm90aGluZ1xuICAgIH1cbiAgICBmcy5ta2RpclN5bmMoXCJsaWJcIik7XG4gICAgZnMubWtkaXJTeW5jKFwiZGlzdFwiKTtcblxuICAgIGlmIChbQnVpbGRNb2RlLkFMTCwgQnVpbGRNb2RlLkJVSUxEXS5pbmNsdWRlcyhtb2RlKSkge1xuICAgICAgYXdhaXQgdGhpcy5idWlsZChpc0RldiwgTW9kZXMuRVNNKTtcbiAgICAgIGF3YWl0IHRoaXMuYnVpbGQoaXNEZXYsIE1vZGVzLkNKUyk7XG4gICAgICB0aGlzLnBhdGNoRmlsZXMoXCJsaWJcIik7XG4gICAgfVxuXG4gICAgaWYgKFtCdWlsZE1vZGUuQUxMLCBCdWlsZE1vZGUuQlVORExFXS5pbmNsdWRlcyhtb2RlKSkge1xuICAgICAgYXdhaXQgdGhpcy5idW5kbGUoTW9kZXMuRVNNLCB0cnVlLCBmYWxzZSk7XG4gICAgICBhd2FpdCB0aGlzLmJ1bmRsZShNb2Rlcy5DSlMsIHRydWUsIGZhbHNlKTtcbiAgICAgIHRoaXMucGF0Y2hGaWxlcyhcImRpc3RcIik7XG4gICAgfVxuXG4gICAgdGhpcy5jb3B5QXNzZXRzKE1vZGVzLkNKUyk7XG4gICAgdGhpcy5jb3B5QXNzZXRzKE1vZGVzLkVTTSk7XG4gIH1cblxuICBhc3luYyBidWlsZERldihtb2RlOiBCdWlsZE1vZGUgPSBCdWlsZE1vZGUuQUxMKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRCeUVudih0cnVlLCBtb2RlKTtcbiAgfVxuXG4gIGFzeW5jIGJ1aWxkUHJvZChtb2RlOiBCdWlsZE1vZGUgPSBCdWlsZE1vZGUuQUxMKSB7XG4gICAgcmV0dXJuIHRoaXMuYnVpbGRCeUVudihmYWxzZSwgbW9kZSk7XG4gIH1cblxuICBhc3luYyBidWlsZERvY3MoKSB7XG4gICAgYXdhaXQgcnVuQ29tbWFuZChgbnBtIGluc3RhbGwgYmV0dGVyLWRvY3MgdGFmZnlkYmApLnByb21pc2U7XG4gICAgYXdhaXQgcnVuQ29tbWFuZChgbnB4IG1hcmtkb3duLWluY2x1ZGUgLi93b3JrZG9jcy9yZWFkbWUtbWQuanNvbmApLnByb21pc2U7XG4gICAgYXdhaXQgcnVuQ29tbWFuZChcbiAgICAgIGBucHgganNkb2MgLWMgLi93b3JrZG9jcy9qc2RvY3MuanNvbiAtdCAuL25vZGVfbW9kdWxlcy9iZXR0ZXItZG9jc2BcbiAgICApLnByb21pc2U7XG4gICAgYXdhaXQgcnVuQ29tbWFuZChgbnBtIHJlbW92ZSBiZXR0ZXItZG9jcyB0YWZmeWRiYCkucHJvbWlzZTtcbiAgICBbXG4gICAgICB7XG4gICAgICAgIHNyYzogXCJ3b3JrZG9jcy9hc3NldHNcIixcbiAgICAgICAgZGVzdDogXCIuL2RvY3Mvd29ya2RvY3MvYXNzZXRzXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzcmM6IFwid29ya2RvY3MvcmVwb3J0cy9jb3ZlcmFnZVwiLFxuICAgICAgICBkZXN0OiBcIi4vZG9jcy93b3JrZG9jcy9yZXBvcnRzL2NvdmVyYWdlXCIsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBzcmM6IFwid29ya2RvY3MvcmVwb3J0cy9odG1sXCIsXG4gICAgICAgIGRlc3Q6IFwiLi9kb2NzL3dvcmtkb2NzL3JlcG9ydHMvaHRtbFwiLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgc3JjOiBcIndvcmtkb2NzL3Jlc291cmNlc1wiLFxuICAgICAgICBkZXN0OiBcIi4vZG9jcy93b3JrZG9jcy9yZXNvdXJjZXNcIixcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIHNyYzogXCJMSUNFTlNFLm1kXCIsXG4gICAgICAgIGRlc3Q6IFwiLi9kb2NzL0xJQ0VOU0UubWRcIixcbiAgICAgIH0sXG4gICAgXS5mb3JFYWNoKChmKSA9PiB7XG4gICAgICBjb25zdCB7IHNyYywgZGVzdCB9ID0gZjtcbiAgICAgIGNvcHlGaWxlKHNyYywgZGVzdCk7XG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgYXN5bmMgcnVuPFI+KFxuICAgIGFuc3dlcnM6IExvZ2dpbmdDb25maWcgJlxuICAgICAgdHlwZW9mIERlZmF1bHRDb21tYW5kVmFsdWVzICYgeyBbayBpbiBrZXlvZiB0eXBlb2Ygb3B0aW9uc106IHVua25vd24gfVxuICApOiBQcm9taXNlPHN0cmluZyB8IHZvaWQgfCBSPiB7XG4gICAgY29uc3QgeyBkZXYsIHByb2QsIGRvY3MsIGNvbW1hbmRzLCBidWlsZE1vZGUgfSA9IGFuc3dlcnM7XG5cbiAgICBpZiAoY29tbWFuZHMpIHtcbiAgICAgIGF3YWl0IHRoaXMuYnVpbGRDb21tYW5kcygpO1xuICAgIH1cblxuICAgIGlmIChkZXYpIHtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmJ1aWxkRGV2KGJ1aWxkTW9kZSBhcyBCdWlsZE1vZGUpO1xuICAgIH1cbiAgICBpZiAocHJvZCkge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGRQcm9kKGJ1aWxkTW9kZSBhcyBCdWlsZE1vZGUpO1xuICAgIH1cbiAgICBpZiAoZG9jcykge1xuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuYnVpbGREb2NzKCk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.ReleaseScript = void 0;
|
|
4
|
+
/* istanbul ignore file */
|
|
4
5
|
const utils_1 = require("./../../utils/utils.cjs");
|
|
5
6
|
const constants_1 = require("./../../utils/constants.cjs");
|
|
6
7
|
const input_1 = require("./../../input/input.cjs");
|
|
@@ -164,4 +165,4 @@ class ReleaseScript extends command_1.Command {
|
|
|
164
165
|
}
|
|
165
166
|
}
|
|
166
167
|
exports.ReleaseScript = ReleaseScript;
|
|
167
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLXJlbGVhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL3RhZy1yZWxlYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUErQztBQUMvQywyREFBOEU7QUFDOUUsbURBQThDO0FBQzlDLDhDQUFxQztBQUlyQyxNQUFNLE9BQU8sR0FBRztJQUNkLEVBQUUsRUFBRTtRQUNGLElBQUksRUFBRSxTQUFTO1FBQ2YsT0FBTyxFQUFFLElBQUk7S0FDZDtJQUNELE9BQU8sRUFBRTtRQUNQLElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLEdBQUc7S0FDWDtJQUNELEdBQUcsRUFBRTtRQUNILElBQUksRUFBRSxRQUFRO1FBQ2QsS0FBSyxFQUFFLEdBQUc7UUFDVixPQUFPLEVBQUUsU0FBUztLQUNuQjtDQUNGLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLGFBQWMsU0FBUSxpQkFBNkI7SUFDOUQ7UUFDRSxLQUFLLENBQUMsZUFBZSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2xDLENBQUM7SUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O09BcUJHO0lBQ0gsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFZO1FBQy9CLE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUM5QyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBRSxHQUFjLElBQUksRUFBRSxDQUFDLENBQUM7UUFDOUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ1QsR0FBRyxDQUFDLE9BQU8sQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO1lBQy9ELEdBQUcsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsQ0FBQztZQUNyQyxNQUFNLElBQUEsa0JBQVUsRUFBQyx3Q0FBd0MsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUNuRSxPQUFP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YixJQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTTtZQUNsQixDQUFDLE1BQU0saUJBQVMsQ0FBQyxlQUFlLENBQzlCLGFBQWEsRUFDYiwyREFBMkQsRUFDM0QsSUFBSSxDQUNMLENBQUMsRUFDRixDQUFDO1lBQ0QsTUFBTSxJQUFBLGtCQUFVLEVBQUMsV0FBVyxDQUFDLENBQUMsT0FBTyxDQUFDO1lBQ3RDLE1BQU0sSUFBQSxrQkFBVSxFQUNkLGtCQUFrQixHQUFHLE1BQU0sT0FBTywrQkFBK0IsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFRLEdBQUcsQ0FDdkYsQ0FBQyxPQUFPLENBQUM7UUFDWixDQUFDO1FBQ0QsTUFBTSxJQUFBLGtCQUFVLEVBQ2QsZ0JBQWdCLEdBQUcsU0FBUyxPQUFPLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLG9CQUFRLEdBQUcsQ0FDNUQsQ0FBQyxPQUFPLENBQUM7UUFDVixNQUFNLElBQUEsa0JBQVUsRUFBQyx3QkFBd0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUNuRCxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDUixNQUFNLElBQUEsa0JBQVUsRUFBQyx3REFBd0QsQ0FBQztpQkFDdkUsT0FBTyxDQUFDO1FBQ2IsQ0FBQztJQUNILENBQUM7Q0FDRjtBQTlKRCxzQ0E4SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBydW5Db21tYW5kIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3V0aWxzXCI7XG5pbXBvcnQgeyBOb0NJRkxhZywgU2VtVmVyc2lvbiwgU2VtVmVyc2lvblJlZ2V4IH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgVXNlcklucHV0IH0gZnJvbSBcIi4uLy4uL2lucHV0L2lucHV0XCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcIi4uL2NvbW1hbmRcIjtcbmltcG9ydCB7IERlZmF1bHRDb21tYW5kVmFsdWVzIH0gZnJvbSBcIi4uL2luZGV4XCI7XG5pbXBvcnQgeyBMb2dnaW5nQ29uZmlnIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbmNvbnN0IG9wdGlvbnMgPSB7XG4gIGNpOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gICAgZGVmYXVsdDogdHJ1ZSxcbiAgfSxcbiAgbWVzc2FnZToge1xuICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgc2hvcnQ6IFwibVwiLFxuICB9LFxuICB0YWc6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIHNob3J0OiBcInRcIixcbiAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gIH0sXG59O1xuXG4vKipcbiAqIEBjbGFzcyBSZWxlYXNlU2NyaXB0XG4gKiBAZXh0ZW5kcyB7Q29tbWFuZH1cbiAqIEBjYXZlZ29yeSBzY3JpcHRzXG4gKiBAZGVzY3JpcHRpb24gQSBjb21tYW5kLWxpbmUgc2NyaXB0IGZvciBtYW5hZ2luZyByZWxlYXNlcyBhbmQgdmVyc2lvbiB1cGRhdGVzLlxuICogQHN1bW1hcnkgVGhpcyBzY3JpcHQgYXV0b21hdGVzIHRoZSBwcm9jZXNzIG9mIGNyZWF0aW5nIGFuZCBwdXNoaW5nIG5ldyByZWxlYXNlcy4gSXQgaGFuZGxlcyB2ZXJzaW9uIHVwZGF0ZXMsXG4gKiBjb21taXQgbWVzc2FnZXMsIGFuZCBvcHRpb25hbGx5IHB1Ymxpc2hlcyB0byBOUE0uIFRoZSBzY3JpcHQgc3VwcG9ydHMgc2VtYW50aWMgdmVyc2lvbmluZyBhbmQgY2FuIHdvcmsgaW4gYm90aCBDSSBhbmQgbm9uLUNJIGVudmlyb25tZW50cy5cbiAqXG4gKiBAcGFyYW0ge09iamVjdH0gb3B0aW9ucyAtIENvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHNjcmlwdFxuICogQHBhcmFtIHtib29sZWFufSBvcHRpb25zLmNpIC0gV2hldGhlciB0aGUgc2NyaXB0IGlzIHJ1bm5pbmcgaW4gYSBDSSBlbnZpcm9ubWVudCAoZGVmYXVsdDogdHJ1ZSlcbiAqIEBwYXJhbSB7c3RyaW5nfSBvcHRpb25zLm1lc3NhZ2UgLSBUaGUgcmVsZWFzZSBtZXNzYWdlIChzaG9ydDogJ20nKVxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMudGFnIC0gVGhlIHZlcnNpb24gdGFnIHRvIHVzZSAoc2hvcnQ6ICd0JywgZGVmYXVsdDogdW5kZWZpbmVkKVxuICovXG5leHBvcnQgY2xhc3MgUmVsZWFzZVNjcmlwdCBleHRlbmRzIENvbW1hbmQ8dHlwZW9mIG9wdGlvbnMsIHZvaWQ+IHtcbiAgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoXCJSZWxlYXNlU2NyaXB0XCIsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcmVwYXJlcyB0aGUgdmVyc2lvbiBmb3IgdGhlIHJlbGVhc2UuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIHZhbGlkYXRlcyB0aGUgcHJvdmlkZWQgdGFnIG9yIHByb21wdHMgdGhlIHVzZXIgZm9yIGEgbmV3IG9uZSBpZiBub3QgcHJvdmlkZWQgb3IgaW52YWxpZC5cbiAgICogSXQgYWxzbyBkaXNwbGF5cyB0aGUgbGF0ZXN0IGdpdCB0YWdzIGZvciByZWZlcmVuY2UuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB0YWcgLSBUaGUgdmVyc2lvbiB0YWcgdG8gcHJlcGFyZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBUaGUgcHJlcGFyZWQgdmVyc2lvbiB0YWdcbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgUiBhcyBSZWxlYXNlU2NyaXB0XG4gICAqICAgcGFydGljaXBhbnQgVCBhcyBUZXN0VmVyc2lvblxuICAgKiAgIHBhcnRpY2lwYW50IFUgYXMgVXNlcklucHV0XG4gICAqICAgcGFydGljaXBhbnQgRyBhcyBHaXRcbiAgICogICBSLT4+VDogdGVzdFZlcnNpb24odGFnKVxuICAgKiAgIGFsdCB0YWcgaXMgdmFsaWRcbiAgICogICAgIFQtLT4+UjogcmV0dXJuIHRhZ1xuICAgKiAgIGVsc2UgdGFnIGlzIGludmFsaWQgb3Igbm90IHByb3ZpZGVkXG4gICAqICAgICBSLT4+RzogTGlzdCBsYXRlc3QgZ2l0IHRhZ3NcbiAgICogICAgIFItPj5VOiBQcm9tcHQgZm9yIG5ldyB0YWdcbiAgICogICAgIFUtLT4+UjogcmV0dXJuIG5ldyB0YWdcbiAgICogICBlbmRcbiAgICovXG4gIGFzeW5jIHByZXBhcmVWZXJzaW9uKHRhZz86IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMucHJlcGFyZVZlcnNpb24pO1xuICAgIHRhZyA9IHRoaXMudGVzdFZlcnNpb24oKHRhZyBhcyBzdHJpbmcpIHx8IFwiXCIpO1xuICAgIGlmICghdGFnKSB7XG4gICAgICBsb2cudmVyYm9zZShcIk5vIHJlbGVhc2UgbWVzc2FnZSBwcm92aWRlZC4gUHJvbXB0aW5nIGZvciBvbmU6XCIpO1xuICAgICAgbG9nLmluZm8oYExpc3RpbmcgbGF0ZXN0IGdpdCB0YWdzOmApO1xuICAgICAgYXdhaXQgcnVuQ29tbWFuZChcImdpdCB0YWcgLS1zb3J0PS10YWdnZXJkYXRlIHwgaGVhZCAtbiA1XCIpLnByb21pc2U7XG4gICAgICByZXR1cm4gYXdhaXQgVXNlcklucHV0Lmluc2lzdEZvclRleHQoXG4gICAgICAgIFwidGFnXCIsXG4gICAgICAgIFwiRW50ZXIgdGhlIG5ldyB0YWcgbnVtYmVyIChhY2NlcHRzIHYqLiouKlstLi4uXSlcIixcbiAgICAgICAgKHZhbCkgPT5cbiAgICAgICAgICAhIXZhbC50b1N0cmluZygpLm1hdGNoKC9edlswLTldK1xcLlswLTldKy5bMC05XSsoLVswLTlhLXpBLVotXSspPyQvKVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHRhZztcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gVGVzdHMgaWYgdGhlIHByb3ZpZGVkIHZlcnNpb24gaXMgdmFsaWQuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGNoZWNrcyBpZiB0aGUgdmVyc2lvbiBpcyBhIHZhbGlkIHNlbWFudGljIHZlcnNpb24gb3IgYSBwcmVkZWZpbmVkIHVwZGF0ZSB0eXBlIChQQVRDSCwgTUlOT1IsIE1BSk9SKS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHZlcnNpb24gLSBUaGUgdmVyc2lvbiB0byB0ZXN0XG4gICAqIEByZXR1cm5zIHtzdHJpbmcgfCB1bmRlZmluZWR9IFRoZSB2YWxpZGF0ZWQgdmVyc2lvbiBvciB1bmRlZmluZWQgaWYgaW52YWxpZFxuICAgKi9cbiAgdGVzdFZlcnNpb24odmVyc2lvbjogc3RyaW5nKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy50ZXN0VmVyc2lvbik7XG4gICAgdmVyc2lvbiA9IHZlcnNpb24udHJpbSgpLnRvTG93ZXJDYXNlKCk7XG4gICAgc3dpdGNoICh2ZXJzaW9uKSB7XG4gICAgICBjYXNlIFNlbVZlcnNpb24uUEFUQ0g6XG4gICAgICBjYXNlIFNlbVZlcnNpb24uTUlOT1I6XG4gICAgICBjYXNlIFNlbVZlcnNpb24uTUFKT1I6XG4gICAgICAgIGxvZy52ZXJib3NlKGBVc2luZyBwcm92aWRlZCBTZW1WZXIgdXBkYXRlOiAke3ZlcnNpb259YCwgMSk7XG4gICAgICAgIHJldHVybiB2ZXJzaW9uO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgbG9nLnZlcmJvc2UoXG4gICAgICAgICAgYFRlc3RpbmcgcHJvdmlkZWQgdmVyc2lvbiBmb3IgU2VtVmVyIGNvbXBhdGliaWxpdHk6ICR7dmVyc2lvbn1gLFxuICAgICAgICAgIDFcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKCFuZXcgUmVnRXhwKFNlbVZlcnNpb25SZWdleCkudGVzdCh2ZXJzaW9uKSkge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgSW52YWxpZCB2ZXJzaW9uIG51bWJlcjogJHt2ZXJzaW9ufWApO1xuICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgbG9nLnZlcmJvc2UoYHZlcnNpb24gYXBwcm92ZWQ6ICR7dmVyc2lvbn1gLCAxKTtcbiAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBQcmVwYXJlcyB0aGUgcmVsZWFzZSBtZXNzYWdlLlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBlaXRoZXIgcmV0dXJucyB0aGUgcHJvdmlkZWQgbWVzc2FnZSBvciBwcm9tcHRzIHRoZSB1c2VyIGZvciBhIG5ldyBvbmUgaWYgbm90IHByb3ZpZGVkLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gW21lc3NhZ2VdIC0gVGhlIHJlbGVhc2UgbWVzc2FnZVxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTxzdHJpbmc+fSBUaGUgcHJlcGFyZWQgcmVsZWFzZSBtZXNzYWdlXG4gICAqL1xuICBhc3luYyBwcmVwYXJlTWVzc2FnZShtZXNzYWdlPzogc3RyaW5nKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMucHJlcGFyZU1lc3NhZ2UpO1xuICAgIGlmICghbWVzc2FnZSkge1xuICAgICAgbG9nLnZlcmJvc2UoXCJObyByZWxlYXNlIG1lc3NhZ2UgcHJvdmlkZWQuIFByb21wdGluZyBmb3Igb25lXCIpO1xuICAgICAgcmV0dXJuIGF3YWl0IFVzZXJJbnB1dC5pbnNpc3RGb3JUZXh0KFxuICAgICAgICBcIm1lc3NhZ2VcIixcbiAgICAgICAgXCJXaGF0IHNob3VsZCBiZSB0aGUgcmVsZWFzZSBtZXNzYWdlL3RpY2tldD9cIixcbiAgICAgICAgKHZhbCkgPT4gISF2YWwgJiYgdmFsLnRvU3RyaW5nKCkubGVuZ3RoID4gNVxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIG1lc3NhZ2U7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJ1bnMgdGhlIHJlbGVhc2Ugc2NyaXB0LlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBvcmNoZXN0cmF0ZXMgdGhlIGVudGlyZSByZWxlYXNlIHByb2Nlc3MsIGluY2x1ZGluZyB2ZXJzaW9uIHByZXBhcmF0aW9uLCBtZXNzYWdlIGNyZWF0aW9uLFxuICAgKiBnaXQgb3BlcmF0aW9ucywgYW5kIG5wbSBwdWJsaXNoaW5nIChpZiBub3QgaW4gQ0kgZW52aXJvbm1lbnQpLlxuICAgKiBAcGFyYW0ge1BhcnNlQXJnc1Jlc3VsdH0gYXJncyAtIFRoZSBwYXJzZWQgY29tbWFuZC1saW5lIGFyZ3VtZW50c1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICpcbiAgICogQG1lcm1haWRcbiAgICogc2VxdWVuY2VEaWFncmFtXG4gICAqICAgcGFydGljaXBhbnQgUiBhcyBSZWxlYXNlU2NyaXB0XG4gICAqICAgcGFydGljaXBhbnQgViBhcyBQcmVwYXJlVmVyc2lvblxuICAgKiAgIHBhcnRpY2lwYW50IE0gYXMgUHJlcGFyZU1lc3NhZ2VcbiAgICogICBwYXJ0aWNpcGFudCBOIGFzIE5QTVxuICAgKiAgIHBhcnRpY2lwYW50IEcgYXMgR2l0XG4gICAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VySW5wdXRcbiAgICogICBSLT4+VjogcHJlcGFyZVZlcnNpb24odGFnKVxuICAgKiAgIFItPj5NOiBwcmVwYXJlTWVzc2FnZShtZXNzYWdlKVxuICAgKiAgIFItPj5OOiBSdW4gcHJlcGFyZS1yZWxlYXNlIHNjcmlwdFxuICAgKiAgIFItPj5HOiBDaGVjayBnaXQgc3RhdHVzXG4gICAqICAgYWx0IGNoYW5nZXMgZXhpc3RcbiAgICogICAgIFItPj5VOiBBc2sgZm9yIGNvbmZpcm1hdGlvblxuICAgKiAgICAgVS0tPj5SOiBDb25maXJtXG4gICAqICAgICBSLT4+RzogQWRkIGFuZCBjb21taXQgY2hhbmdlc1xuICAgKiAgIGVuZFxuICAgKiAgIFItPj5OOiBVcGRhdGUgbnBtIHZlcnNpb25cbiAgICogICBSLT4+RzogUHVzaCBjaGFuZ2VzIGFuZCB0YWdzXG4gICAqICAgYWx0IG5vdCBDSSBlbnZpcm9ubWVudFxuICAgKiAgICAgUi0+Pk46IFB1Ymxpc2ggdG8gbnBtXG4gICAqICAgZW5kXG4gICAqL1xuICBhc3luYyBydW4oXG4gICAgYXJnczogTG9nZ2luZ0NvbmZpZyAmXG4gICAgICB0eXBlb2YgRGVmYXVsdENvbW1hbmRWYWx1ZXMgJiB7IFtrIGluIGtleW9mIHR5cGVvZiBvcHRpb25zXTogdW5rbm93biB9XG4gICk6IFByb21pc2U8dm9pZD4ge1xuICAgIGxldCByZXN1bHQ6IGFueTtcbiAgICBjb25zdCB7IGNpIH0gPSBhcmdzO1xuICAgIGxldCB7IHRhZywgbWVzc2FnZSB9ID0gYXJncztcbiAgICB0YWcgPSBhd2FpdCB0aGlzLnByZXBhcmVWZXJzaW9uKHRhZyBhcyBzdHJpbmcpO1xuICAgIG1lc3NhZ2UgPSBhd2FpdCB0aGlzLnByZXBhcmVNZXNzYWdlKG1lc3NhZ2UgYXMgc3RyaW5nKTtcbiAgICByZXN1bHQgPSBhd2FpdCBydW5Db21tYW5kKGBucG0gcnVuIHByZXBhcmUtcmVsZWFzZSAtLSAke3RhZ30gJHttZXNzYWdlfWAsIHtcbiAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcbiAgICB9KS5wcm9taXNlO1xuICAgIHJlc3VsdCA9IGF3YWl0IHJ1bkNvbW1hbmQoXCJnaXQgc3RhdHVzIC0tcG9yY2VsYWluXCIpLnByb21pc2U7XG4gICAgYXdhaXQgcmVzdWx0O1xuICAgIGlmIChcbiAgICAgIHJlc3VsdC5sb2dzLmxlbmd0aCAmJlxuICAgICAgKGF3YWl0IFVzZXJJbnB1dC5hc2tDb25maXJtYXRpb24oXG4gICAgICAgIFwiZ2l0LWNoYW5nZXNcIixcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byBwdXNoIHRoZSBjaGFuZ2VzIHRvIHRoZSByZW1vdGUgcmVwb3NpdG9yeT9cIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKSlcbiAgICApIHtcbiAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoXCJnaXQgYWRkIC5cIikucHJvbWlzZTtcbiAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoXG4gICAgICAgIGBnaXQgY29tbWl0IC1tIFwiJHt0YWd9IC0gJHttZXNzYWdlfSAtIGFmdGVyIHJlbGVhc2UgcHJlcGFyYXRpb24ke2NpID8gXCJcIiA6IE5vQ0lGTGFnfVwiYFxuICAgICAgKS5wcm9taXNlO1xuICAgIH1cbiAgICBhd2FpdCBydW5Db21tYW5kKFxuICAgICAgYG5wbSB2ZXJzaW9uIFwiJHt0YWd9XCIgLW0gXCIke21lc3NhZ2V9JHtjaSA/IFwiXCIgOiBOb0NJRkxhZ31cImBcbiAgICApLnByb21pc2U7XG4gICAgYXdhaXQgcnVuQ29tbWFuZChcImdpdCBwdXNoIC0tZm9sbG93LXRhZ3NcIikucHJvbWlzZTtcbiAgICBpZiAoIWNpKSB7XG4gICAgICBhd2FpdCBydW5Db21tYW5kKFwiTlBNX1RPS0VOPSQoY2F0IC5ucG10b2tlbikgbnBtIHB1Ymxpc2ggLS1hY2Nlc3MgcHVibGljXCIpXG4gICAgICAgIC5wcm9taXNlO1xuICAgIH1cbiAgfVxufVxuIl19
|
|
168
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFnLXJlbGVhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL3RhZy1yZWxlYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDBCQUEwQjtBQUMxQixtREFBK0M7QUFDL0MsMkRBQThFO0FBQzlFLG1EQUE4QztBQUM5Qyw4Q0FBcUM7QUFJckMsTUFBTSxPQUFPLEdBQUc7SUFDZCxFQUFFLEVBQUU7UUFDRixJQUFJLEVBQUUsU0FBUztRQUNmLE9BQU8sRUFBRSxJQUFJO0tBQ2Q7SUFDRCxPQUFPLEVBQUU7UUFDUCxJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSxHQUFHO0tBQ1g7SUFDRCxHQUFHLEVBQUU7UUFDSCxJQUFJLEVBQUUsUUFBUTtRQUNkLEtBQUssRUFBRSxHQUFHO1FBQ1YsT0FBTyxFQUFFLFNBQVM7S0FDbkI7Q0FDRixDQUFDO0FBRUY7Ozs7Ozs7Ozs7OztHQVlHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsaUJBQTZCO0lBQzlEO1FBQ0UsS0FBSyxDQUFDLGVBQWUsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztPQXFCRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsR0FBWTtRQUMvQixNQUFNLEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDOUMsR0FBRyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUUsR0FBYyxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQzlDLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUNULEdBQUcsQ0FBQyxPQUFPLENBQUMsaURBQWlELENBQUMsQ0FBQztZQUMvRCxHQUFHLENBQUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLENBQUM7WUFDckMsTUFBTSxJQUFBLGtCQUFVLEVBQUMsd0NBQXdDLENBQUMsQ0FBQyxPQUFPLENB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TUFBTSxDQUFDO1FBQ2IsSUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDbEIsQ0FBQyxNQUFNLGlCQUFTLENBQUMsZUFBZSxDQUM5QixhQUFhLEVBQ2IsMkRBQTJELEVBQzNELElBQUksQ0FDTCxDQUFDLEVBQ0YsQ0FBQztZQUNELE1BQU0sSUFBQSxrQkFBVSxFQUFDLFdBQVcsQ0FBQyxDQUFDLE9BQU8sQ0FBQztZQUN0QyxNQUFNLElBQUEsa0JBQVUsRUFDZCxrQkFBa0IsR0FBRyxNQUFNLE9BQU8sK0JBQStCLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBUSxHQUFHLENBQ3ZGLENBQUMsT0FBTyxDQUFDO1FBQ1osQ0FBQztRQUNELE1BQU0sSUFBQSxrQkFBVSxFQUNkLGdCQUFnQixHQUFHLFNBQVMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxvQkFBUSxHQUFHLENBQzVELENBQUMsT0FBTyxDQUFDO1FBQ1YsTUFBTSxJQUFBLGtCQUFVLEVBQUMsd0JBQXdCLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDbkQsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ1IsTUFBTSxJQUFBLGtCQUFVLEVBQUMsd0RBQXdELENBQUM7aUJBQ3ZFLE9BQU8sQ0FBQztRQUNiLENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUE5SkQsc0NBOEpDIiwic291cmNlc0NvbnRlbnQiOlsiLyogaXN0YW5idWwgaWdub3JlIGZpbGUgKi9cbmltcG9ydCB7IHJ1bkNvbW1hbmQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvdXRpbHNcIjtcbmltcG9ydCB7IE5vQ0lGTGFnLCBTZW1WZXJzaW9uLCBTZW1WZXJzaW9uUmVnZXggfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBVc2VySW5wdXQgfSBmcm9tIFwiLi4vLi4vaW5wdXQvaW5wdXRcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiLi4vY29tbWFuZFwiO1xuaW1wb3J0IHsgRGVmYXVsdENvbW1hbmRWYWx1ZXMgfSBmcm9tIFwiLi4vaW5kZXhcIjtcbmltcG9ydCB7IExvZ2dpbmdDb25maWcgfSBmcm9tIFwiQGRlY2FmLXRzL2xvZ2dpbmdcIjtcblxuY29uc3Qgb3B0aW9ucyA9IHtcbiAgY2k6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgICBkZWZhdWx0OiB0cnVlLFxuICB9LFxuICBtZXNzYWdlOiB7XG4gICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICBzaG9ydDogXCJtXCIsXG4gIH0sXG4gIHRhZzoge1xuICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgc2hvcnQ6IFwidFwiLFxuICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgfSxcbn07XG5cbi8qKlxuICogQGNsYXNzIFJlbGVhc2VTY3JpcHRcbiAqIEBleHRlbmRzIHtDb21tYW5kfVxuICogQGNhdmVnb3J5IHNjcmlwdHNcbiAqIEBkZXNjcmlwdGlvbiBBIGNvbW1hbmQtbGluZSBzY3JpcHQgZm9yIG1hbmFnaW5nIHJlbGVhc2VzIGFuZCB2ZXJzaW9uIHVwZGF0ZXMuXG4gKiBAc3VtbWFyeSBUaGlzIHNjcmlwdCBhdXRvbWF0ZXMgdGhlIHByb2Nlc3Mgb2YgY3JlYXRpbmcgYW5kIHB1c2hpbmcgbmV3IHJlbGVhc2VzLiBJdCBoYW5kbGVzIHZlcnNpb24gdXBkYXRlcyxcbiAqIGNvbW1pdCBtZXNzYWdlcywgYW5kIG9wdGlvbmFsbHkgcHVibGlzaGVzIHRvIE5QTS4gVGhlIHNjcmlwdCBzdXBwb3J0cyBzZW1hbnRpYyB2ZXJzaW9uaW5nIGFuZCBjYW4gd29yayBpbiBib3RoIENJIGFuZCBub24tQ0kgZW52aXJvbm1lbnRzLlxuICpcbiAqIEBwYXJhbSB7T2JqZWN0fSBvcHRpb25zIC0gQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgc2NyaXB0XG4gKiBAcGFyYW0ge2Jvb2xlYW59IG9wdGlvbnMuY2kgLSBXaGV0aGVyIHRoZSBzY3JpcHQgaXMgcnVubmluZyBpbiBhIENJIGVudmlyb25tZW50IChkZWZhdWx0OiB0cnVlKVxuICogQHBhcmFtIHtzdHJpbmd9IG9wdGlvbnMubWVzc2FnZSAtIFRoZSByZWxlYXNlIG1lc3NhZ2UgKHNob3J0OiAnbScpXG4gKiBAcGFyYW0ge3N0cmluZ30gb3B0aW9ucy50YWcgLSBUaGUgdmVyc2lvbiB0YWcgdG8gdXNlIChzaG9ydDogJ3QnLCBkZWZhdWx0OiB1bmRlZmluZWQpXG4gKi9cbmV4cG9ydCBjbGFzcyBSZWxlYXNlU2NyaXB0IGV4dGVuZHMgQ29tbWFuZDx0eXBlb2Ygb3B0aW9ucywgdm9pZD4ge1xuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcihcIlJlbGVhc2VTY3JpcHRcIiwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByZXBhcmVzIHRoZSB2ZXJzaW9uIGZvciB0aGUgcmVsZWFzZS5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgdmFsaWRhdGVzIHRoZSBwcm92aWRlZCB0YWcgb3IgcHJvbXB0cyB0aGUgdXNlciBmb3IgYSBuZXcgb25lIGlmIG5vdCBwcm92aWRlZCBvciBpbnZhbGlkLlxuICAgKiBJdCBhbHNvIGRpc3BsYXlzIHRoZSBsYXRlc3QgZ2l0IHRhZ3MgZm9yIHJlZmVyZW5jZS5cbiAgICogQHBhcmFtIHtzdHJpbmd9IHRhZyAtIFRoZSB2ZXJzaW9uIHRhZyB0byBwcmVwYXJlXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IFRoZSBwcmVwYXJlZCB2ZXJzaW9uIHRhZ1xuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBSIGFzIFJlbGVhc2VTY3JpcHRcbiAgICogICBwYXJ0aWNpcGFudCBUIGFzIFRlc3RWZXJzaW9uXG4gICAqICAgcGFydGljaXBhbnQgVSBhcyBVc2VySW5wdXRcbiAgICogICBwYXJ0aWNpcGFudCBHIGFzIEdpdFxuICAgKiAgIFItPj5UOiB0ZXN0VmVyc2lvbih0YWcpXG4gICAqICAgYWx0IHRhZyBpcyB2YWxpZFxuICAgKiAgICAgVC0tPj5SOiByZXR1cm4gdGFnXG4gICAqICAgZWxzZSB0YWcgaXMgaW52YWxpZCBvciBub3QgcHJvdmlkZWRcbiAgICogICAgIFItPj5HOiBMaXN0IGxhdGVzdCBnaXQgdGFnc1xuICAgKiAgICAgUi0+PlU6IFByb21wdCBmb3IgbmV3IHRhZ1xuICAgKiAgICAgVS0tPj5SOiByZXR1cm4gbmV3IHRhZ1xuICAgKiAgIGVuZFxuICAgKi9cbiAgYXN5bmMgcHJlcGFyZVZlcnNpb24odGFnPzogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5wcmVwYXJlVmVyc2lvbik7XG4gICAgdGFnID0gdGhpcy50ZXN0VmVyc2lvbigodGFnIGFzIHN0cmluZykgfHwgXCJcIik7XG4gICAgaWYgKCF0YWcpIHtcbiAgICAgIGxvZy52ZXJib3NlKFwiTm8gcmVsZWFzZSBtZXNzYWdlIHByb3ZpZGVkLiBQcm9tcHRpbmcgZm9yIG9uZTpcIik7XG4gICAgICBsb2cuaW5mbyhgTGlzdGluZyBsYXRlc3QgZ2l0IHRhZ3M6YCk7XG4gICAgICBhd2FpdCBydW5Db21tYW5kKFwiZ2l0IHRhZyAtLXNvcnQ9LXRhZ2dlcmRhdGUgfCBoZWFkIC1uIDVcIikucHJvbWlzZTtcbiAgICAgIHJldHVybiBhd2FpdCBVc2VySW5wdXQuaW5zaXN0Rm9yVGV4dChcbiAgICAgICAgXCJ0YWdcIixcbiAgICAgICAgXCJFbnRlciB0aGUgbmV3IHRhZyBudW1iZXIgKGFjY2VwdHMgdiouKi4qWy0uLi5dKVwiLFxuICAgICAgICAodmFsKSA9PlxuICAgICAgICAgICEhdmFsLnRvU3RyaW5nKCkubWF0Y2goL152WzAtOV0rXFwuWzAtOV0rLlswLTldKygtWzAtOWEtekEtWi1dKyk/JC8pXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gdGFnO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBUZXN0cyBpZiB0aGUgcHJvdmlkZWQgdmVyc2lvbiBpcyB2YWxpZC5cbiAgICogQHN1bW1hcnkgVGhpcyBtZXRob2QgY2hlY2tzIGlmIHRoZSB2ZXJzaW9uIGlzIGEgdmFsaWQgc2VtYW50aWMgdmVyc2lvbiBvciBhIHByZWRlZmluZWQgdXBkYXRlIHR5cGUgKFBBVENILCBNSU5PUiwgTUFKT1IpLlxuICAgKiBAcGFyYW0ge3N0cmluZ30gdmVyc2lvbiAtIFRoZSB2ZXJzaW9uIHRvIHRlc3RcbiAgICogQHJldHVybnMge3N0cmluZyB8IHVuZGVmaW5lZH0gVGhlIHZhbGlkYXRlZCB2ZXJzaW9uIG9yIHVuZGVmaW5lZCBpZiBpbnZhbGlkXG4gICAqL1xuICB0ZXN0VmVyc2lvbih2ZXJzaW9uOiBzdHJpbmcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGxvZyA9IHRoaXMubG9nLmZvcih0aGlzLnRlc3RWZXJzaW9uKTtcbiAgICB2ZXJzaW9uID0gdmVyc2lvbi50cmltKCkudG9Mb3dlckNhc2UoKTtcbiAgICBzd2l0Y2ggKHZlcnNpb24pIHtcbiAgICAgIGNhc2UgU2VtVmVyc2lvbi5QQVRDSDpcbiAgICAgIGNhc2UgU2VtVmVyc2lvbi5NSU5PUjpcbiAgICAgIGNhc2UgU2VtVmVyc2lvbi5NQUpPUjpcbiAgICAgICAgbG9nLnZlcmJvc2UoYFVzaW5nIHByb3ZpZGVkIFNlbVZlciB1cGRhdGU6ICR7dmVyc2lvbn1gLCAxKTtcbiAgICAgICAgcmV0dXJuIHZlcnNpb247XG4gICAgICBkZWZhdWx0OlxuICAgICAgICBsb2cudmVyYm9zZShcbiAgICAgICAgICBgVGVzdGluZyBwcm92aWRlZCB2ZXJzaW9uIGZvciBTZW1WZXIgY29tcGF0aWJpbGl0eTogJHt2ZXJzaW9ufWAsXG4gICAgICAgICAgMVxuICAgICAgICApO1xuICAgICAgICBpZiAoIW5ldyBSZWdFeHAoU2VtVmVyc2lvblJlZ2V4KS50ZXN0KHZlcnNpb24pKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBJbnZhbGlkIHZlcnNpb24gbnVtYmVyOiAke3ZlcnNpb259YCk7XG4gICAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBsb2cudmVyYm9zZShgdmVyc2lvbiBhcHByb3ZlZDogJHt2ZXJzaW9ufWAsIDEpO1xuICAgICAgICByZXR1cm4gdmVyc2lvbjtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFByZXBhcmVzIHRoZSByZWxlYXNlIG1lc3NhZ2UuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGVpdGhlciByZXR1cm5zIHRoZSBwcm92aWRlZCBtZXNzYWdlIG9yIHByb21wdHMgdGhlIHVzZXIgZm9yIGEgbmV3IG9uZSBpZiBub3QgcHJvdmlkZWQuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbbWVzc2FnZV0gLSBUaGUgcmVsZWFzZSBtZXNzYWdlXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHN0cmluZz59IFRoZSBwcmVwYXJlZCByZWxlYXNlIG1lc3NhZ2VcbiAgICovXG4gIGFzeW5jIHByZXBhcmVNZXNzYWdlKG1lc3NhZ2U/OiBzdHJpbmcpIHtcbiAgICBjb25zdCBsb2cgPSB0aGlzLmxvZy5mb3IodGhpcy5wcmVwYXJlTWVzc2FnZSk7XG4gICAgaWYgKCFtZXNzYWdlKSB7XG4gICAgICBsb2cudmVyYm9zZShcIk5vIHJlbGVhc2UgbWVzc2FnZSBwcm92aWRlZC4gUHJvbXB0aW5nIGZvciBvbmVcIik7XG4gICAgICByZXR1cm4gYXdhaXQgVXNlcklucHV0Lmluc2lzdEZvclRleHQoXG4gICAgICAgIFwibWVzc2FnZVwiLFxuICAgICAgICBcIldoYXQgc2hvdWxkIGJlIHRoZSByZWxlYXNlIG1lc3NhZ2UvdGlja2V0P1wiLFxuICAgICAgICAodmFsKSA9PiAhIXZhbCAmJiB2YWwudG9TdHJpbmcoKS5sZW5ndGggPiA1XG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gbWVzc2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUnVucyB0aGUgcmVsZWFzZSBzY3JpcHQuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIG9yY2hlc3RyYXRlcyB0aGUgZW50aXJlIHJlbGVhc2UgcHJvY2VzcywgaW5jbHVkaW5nIHZlcnNpb24gcHJlcGFyYXRpb24sIG1lc3NhZ2UgY3JlYXRpb24sXG4gICAqIGdpdCBvcGVyYXRpb25zLCBhbmQgbnBtIHB1Ymxpc2hpbmcgKGlmIG5vdCBpbiBDSSBlbnZpcm9ubWVudCkuXG4gICAqIEBwYXJhbSB7UGFyc2VBcmdzUmVzdWx0fSBhcmdzIC0gVGhlIHBhcnNlZCBjb21tYW5kLWxpbmUgYXJndW1lbnRzXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKlxuICAgKiBAbWVybWFpZFxuICAgKiBzZXF1ZW5jZURpYWdyYW1cbiAgICogICBwYXJ0aWNpcGFudCBSIGFzIFJlbGVhc2VTY3JpcHRcbiAgICogICBwYXJ0aWNpcGFudCBWIGFzIFByZXBhcmVWZXJzaW9uXG4gICAqICAgcGFydGljaXBhbnQgTSBhcyBQcmVwYXJlTWVzc2FnZVxuICAgKiAgIHBhcnRpY2lwYW50IE4gYXMgTlBNXG4gICAqICAgcGFydGljaXBhbnQgRyBhcyBHaXRcbiAgICogICBwYXJ0aWNpcGFudCBVIGFzIFVzZXJJbnB1dFxuICAgKiAgIFItPj5WOiBwcmVwYXJlVmVyc2lvbih0YWcpXG4gICAqICAgUi0+Pk06IHByZXBhcmVNZXNzYWdlKG1lc3NhZ2UpXG4gICAqICAgUi0+Pk46IFJ1biBwcmVwYXJlLXJlbGVhc2Ugc2NyaXB0XG4gICAqICAgUi0+Pkc6IENoZWNrIGdpdCBzdGF0dXNcbiAgICogICBhbHQgY2hhbmdlcyBleGlzdFxuICAgKiAgICAgUi0+PlU6IEFzayBmb3IgY29uZmlybWF0aW9uXG4gICAqICAgICBVLS0+PlI6IENvbmZpcm1cbiAgICogICAgIFItPj5HOiBBZGQgYW5kIGNvbW1pdCBjaGFuZ2VzXG4gICAqICAgZW5kXG4gICAqICAgUi0+Pk46IFVwZGF0ZSBucG0gdmVyc2lvblxuICAgKiAgIFItPj5HOiBQdXNoIGNoYW5nZXMgYW5kIHRhZ3NcbiAgICogICBhbHQgbm90IENJIGVudmlyb25tZW50XG4gICAqICAgICBSLT4+TjogUHVibGlzaCB0byBucG1cbiAgICogICBlbmRcbiAgICovXG4gIGFzeW5jIHJ1bihcbiAgICBhcmdzOiBMb2dnaW5nQ29uZmlnICZcbiAgICAgIHR5cGVvZiBEZWZhdWx0Q29tbWFuZFZhbHVlcyAmIHsgW2sgaW4ga2V5b2YgdHlwZW9mIG9wdGlvbnNdOiB1bmtub3duIH1cbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgbGV0IHJlc3VsdDogYW55O1xuICAgIGNvbnN0IHsgY2kgfSA9IGFyZ3M7XG4gICAgbGV0IHsgdGFnLCBtZXNzYWdlIH0gPSBhcmdzO1xuICAgIHRhZyA9IGF3YWl0IHRoaXMucHJlcGFyZVZlcnNpb24odGFnIGFzIHN0cmluZyk7XG4gICAgbWVzc2FnZSA9IGF3YWl0IHRoaXMucHJlcGFyZU1lc3NhZ2UobWVzc2FnZSBhcyBzdHJpbmcpO1xuICAgIHJlc3VsdCA9IGF3YWl0IHJ1bkNvbW1hbmQoYG5wbSBydW4gcHJlcGFyZS1yZWxlYXNlIC0tICR7dGFnfSAke21lc3NhZ2V9YCwge1xuICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgIH0pLnByb21pc2U7XG4gICAgcmVzdWx0ID0gYXdhaXQgcnVuQ29tbWFuZChcImdpdCBzdGF0dXMgLS1wb3JjZWxhaW5cIikucHJvbWlzZTtcbiAgICBhd2FpdCByZXN1bHQ7XG4gICAgaWYgKFxuICAgICAgcmVzdWx0LmxvZ3MubGVuZ3RoICYmXG4gICAgICAoYXdhaXQgVXNlcklucHV0LmFza0NvbmZpcm1hdGlvbihcbiAgICAgICAgXCJnaXQtY2hhbmdlc1wiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIHB1c2ggdGhlIGNoYW5nZXMgdG8gdGhlIHJlbW90ZSByZXBvc2l0b3J5P1wiLFxuICAgICAgICB0cnVlXG4gICAgICApKVxuICAgICkge1xuICAgICAgYXdhaXQgcnVuQ29tbWFuZChcImdpdCBhZGQgLlwiKS5wcm9taXNlO1xuICAgICAgYXdhaXQgcnVuQ29tbWFuZChcbiAgICAgICAgYGdpdCBjb21taXQgLW0gXCIke3RhZ30gLSAke21lc3NhZ2V9IC0gYWZ0ZXIgcmVsZWFzZSBwcmVwYXJhdGlvbiR7Y2kgPyBcIlwiIDogTm9DSUZMYWd9XCJgXG4gICAgICApLnByb21pc2U7XG4gICAgfVxuICAgIGF3YWl0IHJ1bkNvbW1hbmQoXG4gICAgICBgbnBtIHZlcnNpb24gXCIke3RhZ31cIiAtbSBcIiR7bWVzc2FnZX0ke2NpID8gXCJcIiA6IE5vQ0lGTGFnfVwiYFxuICAgICkucHJvbWlzZTtcbiAgICBhd2FpdCBydW5Db21tYW5kKFwiZ2l0IHB1c2ggLS1mb2xsb3ctdGFnc1wiKS5wcm9taXNlO1xuICAgIGlmICghY2kpIHtcbiAgICAgIGF3YWl0IHJ1bkNvbW1hbmQoXCJOUE1fVE9LRU49JChjYXQgLm5wbXRva2VuKSBucG0gcHVibGlzaCAtLWFjY2VzcyBwdWJsaWNcIilcbiAgICAgICAgLnByb21pc2U7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -4,11 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.TemplateSync = void 0;
|
|
7
|
+
/* istanbul ignore file */
|
|
7
8
|
const path_1 = __importDefault(require("path"));
|
|
8
9
|
const command_1 = require("./../command.cjs");
|
|
9
10
|
const utils_1 = require("./../../utils/index.cjs");
|
|
10
11
|
const input_1 = require("./../../input/index.cjs");
|
|
11
12
|
const fs_1 = __importDefault(require("fs"));
|
|
13
|
+
const logging_1 = require("@decaf-ts/logging");
|
|
12
14
|
const baseUrl = "https://raw.githubusercontent.com/decaf-ts/ts-workspace/master";
|
|
13
15
|
const options = {
|
|
14
16
|
templates: [
|
|
@@ -215,7 +217,7 @@ class TemplateSync extends command_1.Command {
|
|
|
215
217
|
for (const file of files) {
|
|
216
218
|
this.log.info(`Downloading ${file}`);
|
|
217
219
|
let data = await utils_1.HttpClient.downloadFile(`${baseUrl}/${file}`);
|
|
218
|
-
data = (0,
|
|
220
|
+
data = (0, logging_1.patchString)(data, this.replacements);
|
|
219
221
|
(0, utils_1.writeFile)(path_1.default.join(process.cwd(), file), data);
|
|
220
222
|
}
|
|
221
223
|
}
|
|
@@ -229,7 +231,7 @@ class TemplateSync extends command_1.Command {
|
|
|
229
231
|
this.log.info(`Downloading ${license} license`);
|
|
230
232
|
const url = `${baseUrl}/workdocs/licenses/${license}.md`;
|
|
231
233
|
let data = await utils_1.HttpClient.downloadFile(url);
|
|
232
|
-
data = (0,
|
|
234
|
+
data = (0, logging_1.patchString)(data, this.replacements);
|
|
233
235
|
(0, utils_1.writeFile)(path_1.default.join(process.cwd(), "LICENSE.md"), data);
|
|
234
236
|
(0, utils_1.setPackageAttribute)("license", license);
|
|
235
237
|
}
|
|
@@ -273,7 +275,7 @@ class TemplateSync extends command_1.Command {
|
|
|
273
275
|
const pkg = (0, utils_1.getPackage)();
|
|
274
276
|
Object.keys(pkg.scripts).forEach((key) => {
|
|
275
277
|
if (key in scripts) {
|
|
276
|
-
const replaced = (0,
|
|
278
|
+
const replaced = (0, logging_1.patchString)(scripts[key], this.replacements);
|
|
277
279
|
if (replaced !== scripts[key]) {
|
|
278
280
|
pkg.scripts[key] = replaced;
|
|
279
281
|
}
|
|
@@ -511,4 +513,4 @@ class TemplateSync extends command_1.Command {
|
|
|
511
513
|
}
|
|
512
514
|
}
|
|
513
515
|
exports.TemplateSync = TemplateSync;
|
|
514
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXNjcmlwdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL3VwZGF0ZS1zY3JpcHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQUN4Qiw4Q0FBcUM7QUFFckMsbURBVXFCO0FBRXJCLG1EQUF3QztBQUN4Qyw0Q0FBb0I7QUFHcEIsTUFBTSxPQUFPLEdBQ1gsZ0VBQWdFLENBQUM7QUFFbkUsTUFBTSxPQUFPLEdBQUc7SUFDZCxTQUFTLEVBQUU7UUFDVCxzQ0FBc0M7UUFDdEMsMkNBQTJDO1FBQzNDLHFCQUFxQjtLQUN0QjtJQUNELFNBQVMsRUFBRTtRQUNULHVDQUF1QztRQUN2QyxzQ0FBc0M7UUFDdEMsMENBQTBDO1FBQzFDLDhCQUE4QjtRQUM5QiwyQ0FBMkM7UUFDM0MsdUNBQXVDO1FBQ3ZDLHNDQUFzQztLQUN2QztJQUNELEdBQUcsRUFBRTtRQUNILDJDQUEyQztRQUMzQyx1Q0FBdUM7UUFDdkMsNENBQTRDO1FBQzVDLDBDQUEwQztRQUMxQyxzQ0FBc0M7UUFDdEMsMENBQTBDO1FBQzFDLCtDQUErQztRQUMvQyxtREFBbUQ7UUFDbkQsZ0RBQWdEO1FBQ2hELDBDQUEwQztRQUMxQyx5Q0FBeUM7UUFDekMsK0NBQStDO1FBQy9DLHFDQUFxQztRQUNyQyw0Q0FBNEM7UUFDNUMsZ0RBQWdEO0tBQ2pEO0lBQ0QsSUFBSSxFQUFFO1FBQ0osb0NBQW9DO1FBQ3BDLHFDQUFxQztRQUNyQyxzQ0FBc0M7UUFDdEMsc0JBQXNCO1FBQ3RCLHNCQUFzQjtRQUN0Qix5QkFBeUI7S0FDMUI7SUFDRCxNQUFNLEVBQUUsQ0FBQyxhQUFhLEVBQUUsa0JBQWtCLENBQUM7SUFDM0MsT0FBTyxFQUFFO1FBQ1Asd0JBQXdCO1FBQ3hCLHFCQUFxQjtRQUNyQix1QkFBdUI7S0FDeEI7SUFDRCxLQUFLLEVBQUUsQ0FBQyxnQkFBZ0IsRUFBRSwwQ0FBMEMsQ0FBQztJQUNyRSxVQUFV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Q3pDLElBQUksQ0FDTCxDQUFDO1FBQ0osSUFBSSxZQUFZO1lBQUUsTUFBTSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztJQUNwRCxDQUFDO0NBQ0Y7QUE1ZkQsb0NBNGZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiLi4vY29tbWFuZFwiO1xuaW1wb3J0IHsgQ29tbWFuZE9wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIGdldFBhY2thZ2UsXG4gIEh0dHBDbGllbnQsXG4gIHBhdGNoRmlsZSxcbiAgcGF0Y2hTdHJpbmcsXG4gIHJ1bkNvbW1hbmQsXG4gIHNldFBhY2thZ2VBdHRyaWJ1dGUsXG4gIFNldHVwU2NyaXB0S2V5LFxuICBUb2tlbnMsXG4gIHdyaXRlRmlsZSxcbn0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XG5pbXBvcnQgeyBEZWZhdWx0Q29tbWFuZFZhbHVlcyB9IGZyb20gXCIuLi9pbmRleFwiO1xuaW1wb3J0IHsgVXNlcklucHV0IH0gZnJvbSBcIi4uLy4uL2lucHV0XCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBMb2dnaW5nQ29uZmlnIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbmNvbnN0IGJhc2VVcmwgPVxuICBcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kZWNhZi10cy90cy13b3Jrc3BhY2UvbWFzdGVyXCI7XG5cbmNvbnN0IG9wdGlvbnMgPSB7XG4gIHRlbXBsYXRlczogW1xuICAgIFwiLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9idWdfcmVwb3J0Lm1kXCIsXG4gICAgXCIuZ2l0aHViL0lTU1VFX1RFTVBMQVRFL2ZlYXR1cmVfcmVxdWVzdC5tZFwiLFxuICAgIFwiLmdpdGh1Yi9GVU5ESU5HLnltbFwiLFxuICBdLFxuICB3b3JrZmxvd3M6IFtcbiAgICBcIi5naXRodWIvd29ya2Zsb3dzL2NvZGVxbC1hbmFseXNpcy55bWxcIixcbiAgICBcIi5naXRodWIvd29ya2Zsb3dzL2plc3QtY292ZXJhZ2UueWFtbFwiLFxuICAgIFwiLmdpdGh1Yi93b3JrZmxvd3Mvbm9kZWpzLWJ1aWxkLXByb2QueWFtbFwiLFxuICAgIFwiLmdpdGh1Yi93b3JrZmxvd3MvcGFnZXMueWFtbFwiLFxuICAgIFwiLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1vbi1yZWxlYXNlLnlhbWxcIixcbiAgICBcIi5naXRodWIvd29ya2Zsb3dzL3JlbGVhc2Utb24tdGFnLnlhbWxcIixcbiAgICBcIi5naXRodWIvd29ya2Zsb3dzL3NueWstYW5hbHlzaXMueWFtbFwiLFxuICBdLFxuICBpZGU6IFtcbiAgICBcIi5pZGVhL3J1bkNvbmZpZ3VyYXRpb25zL0FsbCBUZXN0cy5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9idWlsZC5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9idWlsZF9wcm9kLnJ1bi54bWxcIixcbiAgICBcIi5pZGVhL3J1bkNvbmZpZ3VyYXRpb25zL2NvdmVyYWdlLnJ1bi54bWxcIixcbiAgICBcIi5pZGVhL3J1bkNvbmZpZ3VyYXRpb25zL2RvY3MucnVuLnhtbFwiLFxuICAgIFwiLmlkZWEvcnVuQ29uZmlndXJhdGlvbnMvZHJhd2luZ3MucnVuLnhtbFwiLFxuICAgIFwiLmlkZWEvcnVuQ29uZmlndXJhdGlvbnMvZmxhc2gtZm9yd2FyZC5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9JbnRlZ3JhdGlvbl9UZXN0cy5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9CdW5kbGluZ19UZXN0cy5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9saW50LWZpeC5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9yZWxlYXNlLnJ1bi54bWxcIixcbiAgICBcIi5pZGVhL3J1bkNvbmZpZ3VyYXRpb25zL3Rlc3RfY2lyY3VsYXIucnVuLnhtbFwiLFxuICAgIFwiLmlkZWEvcnVuQ29uZmlndXJhdGlvbnMvdW1sLnJ1bi54bWxcIixcbiAgICBcIi5pZGVhL3J1bkNvbmZpZ3VyYXRpb25zL1VuaXQgVGVzdHMucnVuLnhtbFwiLFxuICAgIFwiLmlkZWEvcnVuQ29uZmlndXJhdGlvbnMvdXBkYXRlLXNjcmlwdHMucnVuLnhtbFwiLFxuICBdLFxuICBkb2NzOiBbXG4gICAgXCJ3b3JrZG9jcy90dXRvcmlhbHMvQ29udHJpYnV0aW5nLm1kXCIsXG4gICAgXCJ3b3JrZG9jcy90dXRvcmlhbHMvRG9jdW1lbnRhdGlvbi5tZFwiLFxuICAgIFwid29ya2RvY3MvdHV0b3JpYWxzL0ZvciBEZXZlbG9wZXJzLm1kXCIsXG4gICAgXCJ3b3JrZG9jcy8yLUJhZGdlcy5tZFwiLFxuICAgIFwid29ya2RvY3MvanNkb2NzLmpzb25cIixcbiAgICBcIndvcmtkb2NzL3JlYWRtZS1tZC5qc29uXCIsXG4gIF0sXG4gIHN0eWxlczogW1wiLnByZXR0aWVycmNcIiwgXCJlc2xpbnQuY29uZmlnLmpzXCJdLFxuICBzY3JpcHRzOiBbXG4gICAgXCJiaW4vdXBkYXRlLXNjcmlwdHMuY2pzXCIsXG4gICAgXCJiaW4vdGFnLXJlbGVhc2UuY2pzXCIsXG4gICAgXCJiaW4vYnVpbGQtc2NyaXB0cy5janNcIixcbiAgXSxcbiAgdGVzdHM6IFtcImplc3QuY29uZmlnLnRzXCIsIFwid29ya2RvY3MvcmVwb3J0cy9qZXN0LmNvdmVyYWdlLmNvbmZpZy50c1wiXSxcbiAgdHlwZXNjcmlwdDogW1widHNjb25maWcuanNvblwiXSxcbiAgZG9ja2VyOiBbXCJEb2NrZXJmaWxlXCJdLFxuICBhdXRvbWF0aW9uOiBbXG4gICAgXCJ3b3JrZG9jcy9jb25mbHVlbmNlL0NvbnRpbnVvdXMgSW50ZWdyYXRpb24tRGVwbG95bWVudC9HaXRIdWIubWRcIixcbiAgICBcIndvcmtkb2NzL2NvbmZsdWVuY2UvQ29udGludW91cyBJbnRlZ3JhdGlvbi1EZXBsb3ltZW50L0ppcmEubWRcIixcbiAgICBcIndvcmtkb2NzL2NvbmZsdWVuY2UvQ29udGludW91cyBJbnRlZ3JhdGlvbi1EZXBsb3ltZW50L1RlYW1zLm1kXCIsXG4gIF0sXG59O1xuXG5jb25zdCBhcmd6eiA9IHtcbiAgLy8gaW5pdCBhdHRyaWJ1dGVzXG4gIGJvb3Q6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgfSxcbiAgb3JnOiB7XG4gICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICBzaG9ydDogXCJvXCIsXG4gIH0sXG4gIG5hbWU6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIHNob3J0OiBcIm5cIixcbiAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gIH0sXG4gIGF1dGhvcjoge1xuICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgc2hvcnQ6IFwiYVwiLFxuICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgfSxcbiAgLy8gdXBkYXRlIGF0dHJpYnV0ZXNcbiAgYWxsOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gIH0sXG4gIGxpY2Vuc2U6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIG1lc3NhZ2U6IFwiUGljayB0aGUgbGljZW5zZVwiLFxuICB9LFxuICBzY3JpcHRzOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gIH0sXG4gIHN0eWxlczoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICB9LFxuICBkb2NzOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gIH0sXG4gIGlkZToge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICB9LFxuICB3b3JrZmxvd3M6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgfSxcbiAgdGVtcGxhdGVzOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gIH0sXG4gIHR5cGVzY3JpcHQ6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgfSxcbiAgZG9ja2VyOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gIH0sXG4gIHBrZzoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICB9LFxuICBkZXBlbmRlbmNpZXM6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgfSxcbiAgdGVzdHM6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgfSxcbiAgYXV0b21hdGlvbjoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICB9LFxufTtcblxuLyoqXG4gKiBAY2xhc3MgVGVtcGxhdGVTeW5jXG4gKiBAZXh0ZW5kcyB7Q29tbWFuZH1cbiAqIEBjYXRlZ29yeSBzY3JpcHRzXG4gKiBAZGVzY3JpcHRpb24gQSBjb21tYW5kLWxpbmUgdG9vbCBmb3Igc3luY2hyb25pemluZyBwcm9qZWN0IHRlbXBsYXRlcyBhbmQgY29uZmlndXJhdGlvbnMuXG4gKiBAc3VtbWFyeSBUaGlzIGNsYXNzIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gZG93bmxvYWQgYW5kIHVwZGF0ZSB2YXJpb3VzIHByb2plY3QgZmlsZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGZyb20gYSByZW1vdGUgcmVwb3NpdG9yeS5cbiAqIEl0IHN1cHBvcnRzIHVwZGF0aW5nIGxpY2Vuc2VzLCBJREUgY29uZmlndXJhdGlvbnMsIHNjcmlwdHMsIHN0eWxlcywgZG9jdW1lbnRhdGlvbiwgd29ya2Zsb3dzLCBhbmQgdGVtcGxhdGVzLlxuICpcbiAqIEBwYXJhbSB7Q29tbWFuZE9wdGlvbnN9IGFyZ3MgLSBUaGUgY29tbWFuZCBvcHRpb25zIGZvciBUZW1wbGF0ZVN5bmNcbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlU3luYyBleHRlbmRzIENvbW1hbmQ8Q29tbWFuZE9wdGlvbnM8dHlwZW9mIGFyZ3p6Piwgdm9pZD4ge1xuICBwcml2YXRlIHJlcGxhY2VtZW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiVGVtcGxhdGVTeW5jXCIsIGFyZ3p6KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFZhbHVlc0Zyb21QYWNrYWdlKCkge1xuICAgIGNvbnN0IHAgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IGF1dGhvciA9IGdldFBhY2thZ2UocCwgXCJhdXRob3JcIikgYXMgc3RyaW5nO1xuICAgIGNvbnN0IHNjb3BlZE5hbWUgPSBnZXRQYWNrYWdlKHAsIFwibmFtZVwiKTtcbiAgICBsZXQgbmFtZTogc3RyaW5nID0gc2NvcGVkTmFtZSBhcyBzdHJpbmc7XG4gICAgbGV0IG9yZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJAXCIpKSB7XG4gICAgICBjb25zdCBzcGxpdCA9IG5hbWUuc3BsaXQoXCIvXCIpO1xuICAgICAgbmFtZSA9IHNwbGl0WzFdO1xuICAgICAgb3JnID0gc3BsaXRbMF0ucmVwbGFjZShcIkBcIiwgXCJcIik7XG4gICAgfVxuICAgIFtcIlRpYWdvIFZlbmNlc2xhdVwiLCBcIlRpYWdvVmVuY2VzbGF1XCIsIFwiJHthdXRob3J9XCJdLmZvckVhY2goXG4gICAgICAoZWwpID0+ICh0aGlzLnJlcGxhY2VtZW50c1tlbF0gPSBhdXRob3IpXG4gICAgKTtcbiAgICBbXCJUUy1Xb3Jrc3BhY2VcIiwgXCJ0cy13b3Jrc3BhY2VcIiwgXCIke25hbWV9XCJdLmZvckVhY2goXG4gICAgICAoZWwpID0+ICh0aGlzLnJlcGxhY2VtZW50c1tlbF0gPSBuYW1lKVxuICAgICk7XG4gICAgW1wiZGVjYWYtdHNcIiwgXCIke29yZ31cIl0uZm9yRWFjaChcbiAgICAgIChlbCkgPT4gKHRoaXMucmVwbGFjZW1lbnRzW2VsXSA9IChvcmcgYXMgc3RyaW5nKSB8fCAnXCJcIicpXG4gICAgKTtcbiAgICB0aGlzLnJlcGxhY2VtZW50c1tcIiR7b3JnX29yX293bmVyfVwiXSA9IG9yZyB8fCBuYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEb3dubG9hZHMgZmlsZXMgZm9yIGEgc3BlY2lmaWMgb3B0aW9uIGNhdGVnb3J5LlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBkb3dubG9hZHMgYWxsIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIG9wdGlvbiBrZXkgZnJvbSB0aGUgcmVtb3RlIHJlcG9zaXRvcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IHJlcHJlc2VudGluZyB0aGUgb3B0aW9uIGNhdGVnb3J5IHRvIGRvd25sb2FkXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHNwZWNpZmllZCBvcHRpb24ga2V5IGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgYXN5bmMgZG93bmxvYWRPcHRpb24oa2V5OiBrZXlvZiB0eXBlb2Ygb3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghKGtleSBpbiBvcHRpb25zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBPcHRpb24gXCIke2tleX1cIiBub3QgZm91bmQgaW4gb3B0aW9uc2ApO1xuICAgIH1cbiAgICBjb25zdCBmaWxlcyA9IG9wdGlvbnNba2V5IGFzIGtleW9mIHR5cGVvZiBvcHRpb25zXTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgRG93bmxvYWRpbmcgJHtmaWxlfWApO1xuXG4gICAgICBsZXQgZGF0YSA9IGF3YWl0IEh0dHBDbGllbnQuZG93bmxvYWRGaWxlKGAke2Jhc2VVcmx9LyR7ZmlsZX1gKTtcbiAgICAgIGRhdGEgPSBwYXRjaFN0cmluZyhkYXRhLCB0aGlzLnJlcGxhY2VtZW50cyk7XG4gICAgICB3cml0ZUZpbGUocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGZpbGUpLCBkYXRhKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERvd25sb2FkcyBhbmQgc2V0cyB1cCB0aGUgc3BlY2lmaWVkIGxpY2Vuc2UuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGRvd25sb2FkcyB0aGUgY2hvc2VuIGxpY2Vuc2UgZmlsZSwgc2F2ZXMgaXQgdG8gdGhlIHByb2plY3QsIGFuZCB1cGRhdGVzIHRoZSBwYWNrYWdlLmpzb24gbGljZW5zZSBmaWVsZC5cbiAgICogQHBhcmFtIHtcIk1JVFwiIHwgXCJHUExcIiB8IFwiQXBhY2hlXCIgfCBcIkxHUExcIiB8IFwiQUdQTFwifSBsaWNlbnNlIC0gVGhlIGxpY2Vuc2UgdG8gZG93bmxvYWQgYW5kIHNldCB1cFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGdldExpY2Vuc2UobGljZW5zZTogXCJNSVRcIiB8IFwiR1BMXCIgfCBcIkFwYWNoZVwiIHwgXCJMR1BMXCIgfCBcIkFHUExcIikge1xuICAgIHRoaXMubG9nLmluZm8oYERvd25sb2FkaW5nICR7bGljZW5zZX0gbGljZW5zZWApO1xuICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L3dvcmtkb2NzL2xpY2Vuc2VzLyR7bGljZW5zZX0ubWRgO1xuICAgIGxldCBkYXRhID0gYXdhaXQgSHR0cENsaWVudC5kb3dubG9hZEZpbGUodXJsKTtcbiAgICBkYXRhID0gcGF0Y2hTdHJpbmcoZGF0YSwgdGhpcy5yZXBsYWNlbWVudHMpO1xuICAgIHdyaXRlRmlsZShwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJMSUNFTlNFLm1kXCIpLCBkYXRhKTtcbiAgICBzZXRQYWNrYWdlQXR0cmlidXRlKFwibGljZW5zZVwiLCBsaWNlbnNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRG93bmxvYWRzIElERSBjb25maWd1cmF0aW9uIGZpbGVzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGdldElkZSgpIHtcbiAgICBmcy5ta2RpclN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLmlkZWFcIiwgXCJydW5Db25maWd1cmF0aW9uc1wiKSwge1xuICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuZG93bmxvYWRPcHRpb24oXCJpZGVcIik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBucG0gc2NyaXB0c1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGdldFNjcmlwdHMoKSB7XG4gICAgYXdhaXQgdGhpcy5kb3dubG9hZE9wdGlvbihcInNjcmlwdHNcIik7XG4gICAgdGhpcy5sb2cuaW5mbyhcInBsZWFzZSByZS1ydW4gdGhlIGNvbW1hbmRcIik7XG4gICAgcHJvY2Vzcy5leGl0KDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEb3dubG9hZHMgc3R5bGUgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBnZXRTdHlsZXMgPSAoKSA9PiB0aGlzLmRvd25sb2FkT3B0aW9uKFwic3R5bGVzXCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRG93bmxvYWRzIHRlbXBsYXRlIGZpbGVzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGdldFRlbXBsYXRlcyA9ICgpID0+IHRoaXMuZG93bmxvYWRPcHRpb24oXCJ0ZW1wbGF0ZXNcIik7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEb3dubG9hZHMgd29ya2Zsb3cgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBnZXRXb3JrZmxvd3MgPSAoKSA9PiB0aGlzLmRvd25sb2FkT3B0aW9uKFwid29ya2Zsb3dzXCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRG93bmxvYWRzIGRvY3VtZW50YXRpb24gZmlsZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgZ2V0RG9jcyA9ICgpID0+IHRoaXMuZG93bmxvYWRPcHRpb24oXCJkb2NzXCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRG93bmxvYWRzIHR5cGVzY3JpcHQgY29uZmlnIGZpbGVzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGdldFR5cGVzY3JpcHQgPSAoKSA9PiB0aGlzLmRvd25sb2FkT3B0aW9uKFwidHlwZXNjcmlwdFwiKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERvd25sb2FkcyBhdXRvbWF0aW9uIGRvY3VtZW50YXRpb24gZmlsZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgZ2V0QXV0b21hdGlvbiA9ICgpID0+IHRoaXMuZG93bmxvYWRPcHRpb24oXCJhdXRvbWF0aW9uXCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRG93bmxvYWRzIGF1dG9tYXRpb24gZG9jdW1lbnRhdGlvbiBmaWxlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBnZXRUZXN0cyA9ICgpID0+IHRoaXMuZG93bmxvYWRPcHRpb24oXCJ0ZXN0c1wiKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERvd25sb2FkcyBkb2NrZXIgaW1hZ2UgZmlsZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgZ2V0RG9ja2VyID0gKCkgPT4gdGhpcy5kb3dubG9hZE9wdGlvbihcImRvY2tlclwiKTtcblxuICBhc3luYyBpbml0UGFja2FnZShwa2dOYW1lOiBzdHJpbmcsIGF1dGhvcjogc3RyaW5nLCBsaWNlbnNlOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGtnID0gZ2V0UGFja2FnZSgpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgZGVsZXRlIHBrZ1tTZXR1cFNjcmlwdEtleV07XG4gICAgICBwa2cubmFtZSA9IHBrZ05hbWU7XG4gICAgICBwa2cudmVyc2lvbiA9IFwiMC4wLjFcIjtcbiAgICAgIHBrZy5hdXRob3IgPSBhdXRob3I7XG4gICAgICBwa2cubGljZW5zZSA9IGxpY2Vuc2U7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFwicGFja2FnZS5qc29uXCIsIEpTT04uc3RyaW5naWZ5KHBrZywgbnVsbCwgMikpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZml4aW5nIHBhY2thZ2UuanNvbjogJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVBhY2thZ2VTY3JpcHMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsUGtnID0gSlNPTi5wYXJzZShcbiAgICAgICAgYXdhaXQgSHR0cENsaWVudC5kb3dubG9hZEZpbGUoYCR7YmFzZVVybH0vcGFja2FnZS5qc29uYClcbiAgICAgICk7XG4gICAgICBjb25zdCB7IHNjcmlwdHMgfSA9IG9yaWdpbmFsUGtnO1xuXG4gICAgICBjb25zdCBwa2c6IHR5cGVvZiBvcmlnaW5hbFBrZyA9IGdldFBhY2thZ2UoKSBhcyB7XG4gICAgICAgIHNjcmlwdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgICB9O1xuICAgICAgT2JqZWN0LmtleXMocGtnLnNjcmlwdHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoa2V5IGluIHNjcmlwdHMpIHtcbiAgICAgICAgICBjb25zdCByZXBsYWNlZCA9IHBhdGNoU3RyaW5nKHNjcmlwdHNba2V5XSwgdGhpcy5yZXBsYWNlbWVudHMpO1xuICAgICAgICAgIGlmIChyZXBsYWNlZCAhPT0gc2NyaXB0c1trZXldKSB7XG4gICAgICAgICAgICBwa2cuc2NyaXB0c1trZXldID0gcmVwbGFjZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcGtnW1wiZXhwb3J0c1wiXVtcInJlcXVpcmVcIl0gPSBvcmlnaW5hbFBrZ1tcImV4cG9ydHNcIl1bXCJyZXF1aXJlXCJdO1xuICAgICAgcGtnW1wiZXhwb3J0c1wiXVtcImltcG9ydFwiXSA9IG9yaWdpbmFsUGtnW1wiZXhwb3J0c1wiXVtcImltcG9ydFwiXTtcbiAgICAgIHBrZ1tcInR5cGVzXCJdID0gb3JpZ2luYWxQa2dbXCJ0eXBlc1wiXTtcblxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcInBhY2thZ2UuanNvblwiLCBKU09OLnN0cmluZ2lmeShwa2csIG51bGwsIDIpKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGZpeGluZyBwYWNrYWdlLmpzb24gc2NyaXB0czogJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVRva2VuRmlsZXMoKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuY3JlYXRlVG9rZW5GaWxlcyk7XG4gICAgY29uc3QgZ2l0VG9rZW4gPSBhd2FpdCBVc2VySW5wdXQuaW5zaXN0Rm9yVGV4dChcbiAgICAgIFwidG9rZW5cIixcbiAgICAgIFwicGxlYXNlIGlucHV0IHlvdXIgZ2l0aHViIHRva2VuXCIsXG4gICAgICAocmVzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuICEhcmVzLm1hdGNoKC9eZ2hwX1swLTlhLXpBLVpdezM2fSQvZyk7XG4gICAgICB9XG4gICAgKTtcbiAgICBPYmplY3QudmFsdWVzKFRva2VucykuZm9yRWFjaCgodG9rZW4pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBzdGF0dXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3RhdHVzID0gZnMuZXhpc3RzU3luYyh0b2tlbik7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgbG9nLmluZm8oYFRva2VuIGZpbGUgJHt0b2tlbn0gbm90IGZvdW5kLiBDcmVhdGluZyBhIG5ldyBvbmUuLi5gKTtcbiAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHRva2VuLCB0b2tlbiA9PT0gXCIudG9rZW5cIiA/IGdpdFRva2VuIDogXCJcIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc3RhdHVzKSB7XG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyh0b2tlbiwgdG9rZW4gPT09IFwiLnRva2VuXCIgPyBnaXRUb2tlbiA6IFwiXCIpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgY3JlYXRpbmcgdG9rZW4gZmlsZSAke3Rva2VufTogJHtlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0T3JnKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgb3JnID0gYXdhaXQgVXNlcklucHV0LmFza1RleHQoXG4gICAgICBcIk9yZ2FuaXphdGlvblwiLFxuICAgICAgXCJFbnRlciB0aGUgb3JnYW5pemF0aW9uIG5hbWUgKHdpbGwgYmUgdXNlZCB0byBzY29wZSB5b3VyIG5wbSBwcm9qZWN0LiBsZWF2ZSBibGFuayB0byBjcmVhdGUgYSB1bnNjb3BlZCBwcm9qZWN0KTpcIlxuICAgICk7XG4gICAgY29uc3QgY29uZmlybWF0aW9uID0gYXdhaXQgVXNlcklucHV0LmFza0NvbmZpcm1hdGlvbihcbiAgICAgIFwiQ29uZmlybSBvcmdhbml6YXRpb25cIixcbiAgICAgIFwiSXMgdGhpcyBvcmdhbml6YXRpb24gY29ycmVjdD9cIixcbiAgICAgIHRydWVcbiAgICApO1xuICAgIGlmICghY29uZmlybWF0aW9uKSByZXR1cm4gdGhpcy5nZXRPcmcoKTtcblxuICAgIHJldHVybiBvcmc7XG4gIH1cblxuICBhc3luYyBhdWRpdEZpeCgpIHtcbiAgICByZXR1cm4gYXdhaXQgcnVuQ29tbWFuZChcIm5wbSBhdWRpdCBmaXggLS1mb3JjZVwiKS5wcm9taXNlO1xuICB9XG5cbiAgcGF0Y2hGaWxlcygpIHtcbiAgICBjb25zdCBmaWxlcyA9IFtcbiAgICAgIC4uLmZzXG4gICAgICAgIC5yZWFkZGlyU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJzcmNcIiksIHtcbiAgICAgICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICAgICAgd2l0aEZpbGVUeXBlczogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigoZW50cnkpID0+IGVudHJ5LmlzRmlsZSgpKVxuICAgICAgICAubWFwKChlbnRyeSkgPT4gcGF0aC5qb2luKGVudHJ5LnBhcmVudFBhdGgsIGVudHJ5Lm5hbWUpKSxcbiAgICAgIC4uLmZzXG4gICAgICAgIC5yZWFkZGlyU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJ3b3JrZG9jc1wiKSwge1xuICAgICAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICAgICAgICB3aXRoRmlsZVR5cGVzOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkuaXNGaWxlKCkgJiYgZW50cnkubmFtZS5lbmRzV2l0aChcIi5tZFwiKSlcbiAgICAgICAgLm1hcCgoZW50cnkpID0+IHBhdGguam9pbihlbnRyeS5wYXJlbnRQYXRoLCBlbnRyeS5uYW1lKSksXG4gICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCIuZ2l0bGFiLWNpLnltbFwiKSxcbiAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIndvcmtkb2NzXCIsIFwianNkb2NzLmpzb25cIiksXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgcGF0Y2hGaWxlKGZpbGUgYXMgc3RyaW5nLCB0aGlzLnJlcGxhY2VtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGVwZW5kZW5jaWVzKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFBrZyA9IEpTT04ucGFyc2UoXG4gICAgICAgIGF3YWl0IEh0dHBDbGllbnQuZG93bmxvYWRGaWxlKGAke2Jhc2VVcmx9L3BhY2thZ2UuanNvbmApXG4gICAgICApO1xuICAgICAgY29uc3QgeyBkZXZEZXBlbmRlbmNpZXMgfSA9IG9yaWdpbmFsUGtnO1xuXG4gICAgICBjb25zdCBwa2c6IHR5cGVvZiBvcmlnaW5hbFBrZyA9IGdldFBhY2thZ2UoKSBhcyB7XG4gICAgICAgIHNjcmlwdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgICB9O1xuICAgICAgT2JqZWN0LmtleXMocGtnLnNjcmlwdHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoa2V5IGluIGRldkRlcGVuZGVuY2llcykge1xuICAgICAgICAgIGNvbnN0IHJlcGxhY2VkID0gZGV2RGVwZW5kZW5jaWVzW2tleV07XG4gICAgICAgICAgaWYgKHJlcGxhY2VkICE9PSBkZXZEZXBlbmRlbmNpZXNba2V5XSkge1xuICAgICAgICAgICAgKHBrZyBhcyBhbnkpW1wiZGV2RGVwZW5kZW5jaWVzXCJdID1cbiAgICAgICAgICAgICAgKHBrZyBhcyBhbnkpW1wiZGV2RGVwZW5kZW5jaWVzXCJdIHx8IHt9O1xuICAgICAgICAgICAgKHBrZyBhcyBhbnkpW1wiZGV2RGVwZW5kZW5jaWVzXCJdW2tleV0gPSByZXBsYWNlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFwicGFja2FnZS5qc29uXCIsIEpTT04uc3RyaW5naWZ5KHBrZywgbnVsbCwgMikpO1xuICAgICAgYXdhaXQgcnVuQ29tbWFuZChcIm5wbSBpbnN0YWxsXCIpLnByb21pc2U7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBmaXhpbmcgcGFja2FnZS5qc29uIGRlcGVuZGVuY2llczogJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUnVucyB0aGUgdGVtcGxhdGUgc3luY2hyb25pemF0aW9uIHByb2Nlc3MuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIG9yY2hlc3RyYXRlcyB0aGUgZG93bmxvYWRpbmcgb2YgdmFyaW91cyBwcm9qZWN0IGNvbXBvbmVudHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICogQHBhcmFtIHtQYXJzZUFyZ3NSZXN1bHR9IGFyZ3MgLSBUaGUgcGFyc2VkIGNvbW1hbmQtbGluZSBhcmd1bWVudHNcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IFQgYXMgVGVtcGxhdGVTeW5jXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBnZXRMaWNlbnNlXG4gICAqICAgcGFydGljaXBhbnQgSSBhcyBnZXRJZGVcbiAgICogICBwYXJ0aWNpcGFudCBTIGFzIGdldFNjcmlwdHNcbiAgICogICBwYXJ0aWNpcGFudCBTdCBhcyBnZXRTdHlsZXNcbiAgICogICBwYXJ0aWNpcGFudCBEIGFzIGdldERvY3NcbiAgICogICBwYXJ0aWNpcGFudCBXIGFzIGdldFdvcmtmbG93c1xuICAgKiAgIHBhcnRpY2lwYW50IFRlIGFzIGdldFRlbXBsYXRlc1xuICAgKiAgIFQtPj5UOiBQYXJzZSBhcmd1bWVudHNcbiAgICogICBhbHQgYWxsIGZsYWcgaXMgdHJ1ZVxuICAgKiAgICAgVC0+PlQ6IFNldCBhbGwgY29tcG9uZW50IGZsYWdzIHRvIHRydWVcbiAgICogICBlbmRcbiAgICogICBhbHQgbGljZW5zZSBpcyBzcGVjaWZpZWRcbiAgICogICAgIFQtPj5MOiBnZXRMaWNlbnNlKGxpY2Vuc2UpXG4gICAqICAgZW5kXG4gICAqICAgYWx0IGlkZSBmbGFnIGlzIHRydWVcbiAgICogICAgIFQtPj5JOiBnZXRJZGUoKVxuICAgKiAgIGVuZFxuICAgKiAgIGFsdCBzY3JpcHRzIGZsYWcgaXMgdHJ1ZVxuICAgKiAgICAgVC0+PlM6IGdldFNjcmlwdHMoKVxuICAgKiAgIGVuZFxuICAgKiAgIGFsdCBzdHlsZXMgZmxhZyBpcyB0cnVlXG4gICAqICAgICBULT4+U3Q6IGdldFN0eWxlcygpXG4gICAqICAgZW5kXG4gICAqICAgYWx0IGRvY3MgZmxhZyBpcyB0cnVlXG4gICAqICAgICBULT4+RDogZ2V0RG9jcygpXG4gICAqICAgZW5kXG4gICAqICAgYWx0IHdvcmtmbG93cyBmbGFnIGlzIHRydWVcbiAgICogICAgIFQtPj5XOiBnZXRXb3JrZmxvd3MoKVxuICAgKiAgIGVuZFxuICAgKiAgIGFsdCB0ZW1wbGF0ZXMgZmxhZyBpcyB0cnVlXG4gICAqICAgICBULT4+VGU6IGdldFRlbXBsYXRlcygpXG4gICAqICAgZW5kXG4gICAqL1xuICBhc3luYyBydW4oXG4gICAgYXJnczogTG9nZ2luZ0NvbmZpZyAmXG4gICAgICB0eXBlb2YgRGVmYXVsdENvbW1hbmRWYWx1ZXMgJiB7IFtrIGluIGtleW9mIHR5cGVvZiBhcmd6el06IHVua25vd24gfVxuICApIHtcbiAgICBsZXQgeyBsaWNlbnNlIH0gPSBhcmdzO1xuICAgIGNvbnN0IHsgYm9vdCB9ID0gYXJncztcbiAgICBsZXQge1xuICAgICAgYWxsLFxuICAgICAgc2NyaXB0cyxcbiAgICAgIHN0eWxlcyxcbiAgICAgIGRvY3MsXG4gICAgICBpZGUsXG4gICAgICB3b3JrZmxvd3MsXG4gICAgICB0ZW1wbGF0ZXMsXG4gICAgICBkb2NrZXIsXG4gICAgICB0eXBlc2NyaXB0LFxuICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAgdGVzdHMsXG4gICAgICBhdXRvbWF0aW9uLFxuICAgICAgcGtnLFxuICAgIH0gPSBhcmdzO1xuICAgIGlmIChcbiAgICAgIHNjcmlwdHMgfHxcbiAgICAgIHN0eWxlcyB8fFxuICAgICAgZG9jcyB8fFxuICAgICAgaWRlIHx8XG4gICAgICB3b3JrZmxvd3MgfHxcbiAgICAgIHRlbXBsYXRlcyB8fFxuICAgICAgZG9ja2VyIHx8XG4gICAgICB0eXBlc2NyaXB0IHx8XG4gICAgICBhdXRvbWF0aW9uIHx8XG4gICAgICBkZXBlbmRlbmNpZXMgfHxcbiAgICAgIHRlc3RzIHx8XG4gICAgICBwa2dcbiAgICApXG4gICAgICBhbGwgPSBmYWxzZTtcblxuICAgIGlmIChib290KSB7XG4gICAgICBjb25zdCBvcmcgPSBhd2FpdCB0aGlzLmdldE9yZygpO1xuICAgICAgY29uc3QgbmFtZSA9IGF3YWl0IFVzZXJJbnB1dC5pbnNpc3RGb3JUZXh0KFxuICAgICAgICBcIlByb2plY3QgbmFtZVwiLFxuICAgICAgICBcIkVudGVyIHRoZSBwcm9qZWN0IG5hbWU6XCIsXG4gICAgICAgIChyZXM6IHN0cmluZykgPT4gcmVzLmxlbmd0aCA+IDFcbiAgICAgICk7XG4gICAgICBjb25zdCBhdXRob3IgPSBhd2FpdCBVc2VySW5wdXQuaW5zaXN0Rm9yVGV4dChcbiAgICAgICAgXCJBdXRob3JcIixcbiAgICAgICAgXCJFbnRlciB0aGUgYXV0aG9yIG5hbWU6XCIsXG4gICAgICAgIChyZXM6IHN0cmluZykgPT4gcmVzLmxlbmd0aCA+IDFcbiAgICAgICk7XG4gICAgICBjb25zdCBwa2dOYW1lID0gb3JnID8gYEAke29yZ30vJHtuYW1lfWAgOiBuYW1lO1xuXG4gICAgICBhd2FpdCB0aGlzLmluaXRQYWNrYWdlKHBrZ05hbWUsIGF1dGhvciwgbGljZW5zZSBhcyBzdHJpbmcpO1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVUb2tlbkZpbGVzKCk7XG4gICAgICBhd2FpdCB0aGlzLmF1ZGl0Rml4KCk7XG4gICAgICB0aGlzLnBhdGNoRmlsZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoYWxsKSB7XG4gICAgICBzY3JpcHRzID0gZmFsc2U7XG4gICAgICBzdHlsZXMgPSB0cnVlO1xuICAgICAgZG9jcyA9IHRydWU7XG4gICAgICBpZGUgPSB0cnVlO1xuICAgICAgd29ya2Zsb3dzID0gdHJ1ZTtcbiAgICAgIHRlbXBsYXRlcyA9IHRydWU7XG4gICAgICBkb2NrZXIgPSB0cnVlO1xuICAgICAgdHlwZXNjcmlwdCA9IHRydWU7XG4gICAgICBwa2cgPSB0cnVlO1xuICAgICAgZGVwZW5kZW5jaWVzID0gdHJ1ZTtcbiAgICAgIHRlc3RzID0gdHJ1ZTtcbiAgICAgIGF1dG9tYXRpb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNjcmlwdHMgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICBzY3JpcHRzID0gYXdhaXQgVXNlcklucHV0LmFza0NvbmZpcm1hdGlvbihcbiAgICAgICAgXCJzY3JpcHRzXCIsXG4gICAgICAgIFwiRG8geW91IHdhbnQgdG8gZ2V0IHNjcmlwdHM/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICBpZiAoc2NyaXB0cykgYXdhaXQgdGhpcy5nZXRTY3JpcHRzKCk7XG5cbiAgICB0aGlzLmxvYWRWYWx1ZXNGcm9tUGFja2FnZSgpO1xuICAgIGlmICghYWxsICYmIHR5cGVvZiBsaWNlbnNlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBjb25zdCBjb25maXJtYXRpb24gPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcImxpY2Vuc2VcIixcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byBzZXQgYSBsaWNlbnNlP1wiLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgaWYgKGNvbmZpcm1hdGlvbilcbiAgICAgICAgbGljZW5zZSA9IGF3YWl0IFVzZXJJbnB1dC5pbnNpc3RGb3JUZXh0KFxuICAgICAgICAgIFwibGljZW5zZVwiLFxuICAgICAgICAgIFwiRW50ZXIgdGhlIGRlc2lyZWQgTGljZW5zZSAoTUlUfEdQTHxBcGFjaGV8TEdQTHxBR1BMKTpcIixcbiAgICAgICAgICAodmFsKSA9PiAhIXZhbCAmJiAhIXZhbC5tYXRjaCgvXihNSVR8R1BMfEFwYWNoZXxMR1BMfEFHUEwpJC9nKVxuICAgICAgICApO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGxpY2Vuc2UgIT09IFwidW5kZWZpbmVkXCIpXG4gICAgICBhd2FpdCB0aGlzLmdldExpY2Vuc2UoXG4gICAgICAgIGxpY2Vuc2UgYXMgXCJNSVRcIiB8IFwiR1BMXCIgfCBcIkFwYWNoZVwiIHwgXCJMR1BMXCIgfCBcIkFHUExcIlxuICAgICAgKTtcblxuICAgIGlmICh0eXBlb2YgaWRlID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgaWRlID0gYXdhaXQgVXNlcklucHV0LmFza0NvbmZpcm1hdGlvbihcbiAgICAgICAgXCJpZGVcIixcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byBnZXQgaWRlIGNvbmZpZ3M/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICBpZiAoaWRlKSBhd2FpdCB0aGlzLmdldElkZSgpO1xuXG4gICAgaWYgKHR5cGVvZiB0eXBlc2NyaXB0ID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgdHlwZXNjcmlwdCA9IGF3YWl0IFVzZXJJbnB1dC5hc2tDb25maXJtYXRpb24oXG4gICAgICAgIFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIGdldCB0eXBlc2NyaXB0IGNvbmZpZ3M/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgaWYgKHR5cGVzY3JpcHQpIGF3YWl0IHRoaXMuZ2V0VHlwZXNjcmlwdCgpO1xuXG4gICAgaWYgKHR5cGVvZiBkb2NrZXIgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICBkb2NrZXIgPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcImRvY2tlclwiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIGdldCBkb2NrZXIgY29uZmlncz9cIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgIGlmIChkb2NrZXIpIGF3YWl0IHRoaXMuZ2V0RG9ja2VyKCk7XG4gICAgaWYgKHR5cGVvZiBhdXRvbWF0aW9uID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgYXV0b21hdGlvbiA9IGF3YWl0IFVzZXJJbnB1dC5hc2tDb25maXJtYXRpb24oXG4gICAgICAgIFwiYXV0b21hdGlvblwiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIGdldCBhdXRvbWF0aW9uIGNvbmZpZ3M/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgaWYgKGF1dG9tYXRpb24pIGF3YWl0IHRoaXMuZ2V0QXV0b21hdGlvbigpO1xuXG4gICAgaWYgKHR5cGVvZiBzdHlsZXMgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICBzdHlsZXMgPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcInN0eWxlc1wiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIGdldCBzdHlsZXM/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgaWYgKHN0eWxlcykgYXdhaXQgdGhpcy5nZXRTdHlsZXMoKTtcblxuICAgIGlmICh0eXBlb2YgZG9jcyA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgIGRvY3MgPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcImRvY3NcIixcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byBnZXQgZG9jcz9cIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICBpZiAoZG9jcykgYXdhaXQgdGhpcy5nZXREb2NzKCk7XG4gICAgaWYgKHR5cGVvZiB3b3JrZmxvd3MgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICB3b3JrZmxvd3MgPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcIndvcmtmbG93c1wiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIGdldCB3b3JrZmxvd3M/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgaWYgKHdvcmtmbG93cykgYXdhaXQgdGhpcy5nZXRXb3JrZmxvd3MoKTtcbiAgICBpZiAodHlwZW9mIHRlbXBsYXRlcyA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgIHRlbXBsYXRlcyA9IGF3YWl0IFVzZXJJbnB1dC5hc2tDb25maXJtYXRpb24oXG4gICAgICAgIFwidGVtcGxhdGVzXCIsXG4gICAgICAgIFwiRG8geW91IHdhbnQgdG8gZ2V0IHRlbXBsYXRlcz9cIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICBpZiAodGVtcGxhdGVzKSBhd2FpdCB0aGlzLmdldFRlbXBsYXRlcygpO1xuICAgIGlmICh0eXBlb2YgcGtnID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgcGtnID0gYXdhaXQgVXNlcklucHV0LmFza0NvbmZpcm1hdGlvbihcbiAgICAgICAgXCJwa2dcIixcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byB1cGRhdGUgeW91ciBwYWNrYWdlLmpzb24gc2NyaXB0cz9cIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICBpZiAocGtnKSBhd2FpdCB0aGlzLnVwZGF0ZVBhY2thZ2VTY3JpcHMoKTtcblxuICAgIGlmICh0eXBlb2YgdGVzdHMgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICB0ZXN0cyA9IGF3YWl0IFVzZXJJbnB1dC5hc2tDb25maXJtYXRpb24oXG4gICAgICAgIFwicGtnXCIsXG4gICAgICAgIFwiRG8geW91IHdhbnQgdG8gdXBkYXRlIHlvdXIgdGVzdCBjb25maWdzP1wiLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIGlmICh0ZXN0cykgYXdhaXQgdGhpcy5nZXRUZXN0cygpO1xuXG4gICAgaWYgKHR5cGVvZiBkZXBlbmRlbmNpZXMgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICBkZXBlbmRlbmNpZXMgPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcInBrZ1wiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIHVwZGF0ZSBkZXYgZGVwZW5kZW5jaWVzP1wiLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIGlmIChkZXBlbmRlbmNpZXMpIGF3YWl0IHRoaXMudXBkYXRlRGVwZW5kZW5jaWVzKCk7XG4gIH1cbn1cbiJdfQ==
|
|
516
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXBkYXRlLXNjcmlwdHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY2xpL2NvbW1hbmRzL3VwZGF0ZS1zY3JpcHRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDBCQUEwQjtBQUMxQixnREFBd0I7QUFDeEIsOENBQXFDO0FBRXJDLG1EQVNxQjtBQUVyQixtREFBd0M7QUFDeEMsNENBQW9CO0FBQ3BCLCtDQUErRDtBQUUvRCxNQUFNLE9BQU8sR0FDWCxnRUFBZ0UsQ0FBQztBQUVuRSxNQUFNLE9BQU8sR0FBRztJQUNkLFNBQVMsRUFBRTtRQUNULHNDQUFzQztRQUN0QywyQ0FBMkM7UUFDM0MscUJBQXFCO0tBQ3RCO0lBQ0QsU0FBUyxFQUFFO1FBQ1QsdUNBQXVDO1FBQ3ZDLHNDQUFzQztRQUN0QywwQ0FBMEM7UUFDMUMsOEJBQThCO1FBQzlCLDJDQUEyQztRQUMzQyx1Q0FBdUM7UUFDdkMsc0NBQXNDO0tBQ3ZDO0lBQ0QsR0FBRyxFQUFFO1FBQ0gsMkNBQTJDO1FBQzNDLHVDQUF1QztRQUN2Qyw0Q0FBNEM7UUFDNUMsMENBQTBDO1FBQzFDLHNDQUFzQztRQUN0QywwQ0FBMEM7UUFDMUMsK0NBQStDO1FBQy9DLG1EQUFtRDtRQUNuRCxnREFBZ0Q7UUFDaEQsMENBQTBDO1FBQzFDLHlDQUF5QztRQUN6QywrQ0FBK0M7UUFDL0MscUNBQXFDO1FBQ3JDLDRDQUE0QztRQUM1QyxnREFBZ0Q7S0FDakQ7SUFDRCxJQUFJLEVBQUU7UUFDSixvQ0FBb0M7UUFDcEMscUNBQXFDO1FBQ3JDLHNDQUFzQztRQUN0QyxzQkFBc0I7UUFDdEIsc0JBQXNCO1FBQ3RCLHlCQUF5QjtLQUMxQjtJQUNELE1BQU0sRUFBRSxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQztJQUMzQyxPQUFPLEVBQUU7UUFDUCx3QkFBd0I7UUFDeEIscUJBQXFCO1FBQ3JCLHVCQUF1QjtLQUN4QjtJQUNELEtBQUssRUFBRSxDQUFDLGdCQUFnQixF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LENBQzVDLEtBQUssRUFDTCx5Q0FBeUMsRUFDekMsSUFBSSxDQUNMLENBQUM7UUFDSixJQUFJLFlBQVk7WUFBRSxNQUFNLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQTVmRCxvQ0E0ZkMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiBpc3RhbmJ1bCBpZ25vcmUgZmlsZSAqL1xuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiLi4vY29tbWFuZFwiO1xuaW1wb3J0IHsgQ29tbWFuZE9wdGlvbnMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7XG4gIGdldFBhY2thZ2UsXG4gIEh0dHBDbGllbnQsXG4gIHBhdGNoRmlsZSxcbiAgcnVuQ29tbWFuZCxcbiAgc2V0UGFja2FnZUF0dHJpYnV0ZSxcbiAgU2V0dXBTY3JpcHRLZXksXG4gIFRva2VucyxcbiAgd3JpdGVGaWxlLFxufSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcbmltcG9ydCB7IERlZmF1bHRDb21tYW5kVmFsdWVzIH0gZnJvbSBcIi4uL2luZGV4XCI7XG5pbXBvcnQgeyBVc2VySW5wdXQgfSBmcm9tIFwiLi4vLi4vaW5wdXRcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IExvZ2dpbmdDb25maWcsIHBhdGNoU3RyaW5nIH0gZnJvbSBcIkBkZWNhZi10cy9sb2dnaW5nXCI7XG5cbmNvbnN0IGJhc2VVcmwgPVxuICBcImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kZWNhZi10cy90cy13b3Jrc3BhY2UvbWFzdGVyXCI7XG5cbmNvbnN0IG9wdGlvbnMgPSB7XG4gIHRlbXBsYXRlczogW1xuICAgIFwiLmdpdGh1Yi9JU1NVRV9URU1QTEFURS9idWdfcmVwb3J0Lm1kXCIsXG4gICAgXCIuZ2l0aHViL0lTU1VFX1RFTVBMQVRFL2ZlYXR1cmVfcmVxdWVzdC5tZFwiLFxuICAgIFwiLmdpdGh1Yi9GVU5ESU5HLnltbFwiLFxuICBdLFxuICB3b3JrZmxvd3M6IFtcbiAgICBcIi5naXRodWIvd29ya2Zsb3dzL2NvZGVxbC1hbmFseXNpcy55bWxcIixcbiAgICBcIi5naXRodWIvd29ya2Zsb3dzL2plc3QtY292ZXJhZ2UueWFtbFwiLFxuICAgIFwiLmdpdGh1Yi93b3JrZmxvd3Mvbm9kZWpzLWJ1aWxkLXByb2QueWFtbFwiLFxuICAgIFwiLmdpdGh1Yi93b3JrZmxvd3MvcGFnZXMueWFtbFwiLFxuICAgIFwiLmdpdGh1Yi93b3JrZmxvd3MvcHVibGlzaC1vbi1yZWxlYXNlLnlhbWxcIixcbiAgICBcIi5naXRodWIvd29ya2Zsb3dzL3JlbGVhc2Utb24tdGFnLnlhbWxcIixcbiAgICBcIi5naXRodWIvd29ya2Zsb3dzL3NueWstYW5hbHlzaXMueWFtbFwiLFxuICBdLFxuICBpZGU6IFtcbiAgICBcIi5pZGVhL3J1bkNvbmZpZ3VyYXRpb25zL0FsbCBUZXN0cy5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9idWlsZC5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9idWlsZF9wcm9kLnJ1bi54bWxcIixcbiAgICBcIi5pZGVhL3J1bkNvbmZpZ3VyYXRpb25zL2NvdmVyYWdlLnJ1bi54bWxcIixcbiAgICBcIi5pZGVhL3J1bkNvbmZpZ3VyYXRpb25zL2RvY3MucnVuLnhtbFwiLFxuICAgIFwiLmlkZWEvcnVuQ29uZmlndXJhdGlvbnMvZHJhd2luZ3MucnVuLnhtbFwiLFxuICAgIFwiLmlkZWEvcnVuQ29uZmlndXJhdGlvbnMvZmxhc2gtZm9yd2FyZC5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9JbnRlZ3JhdGlvbl9UZXN0cy5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9CdW5kbGluZ19UZXN0cy5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9saW50LWZpeC5ydW4ueG1sXCIsXG4gICAgXCIuaWRlYS9ydW5Db25maWd1cmF0aW9ucy9yZWxlYXNlLnJ1bi54bWxcIixcbiAgICBcIi5pZGVhL3J1bkNvbmZpZ3VyYXRpb25zL3Rlc3RfY2lyY3VsYXIucnVuLnhtbFwiLFxuICAgIFwiLmlkZWEvcnVuQ29uZmlndXJhdGlvbnMvdW1sLnJ1bi54bWxcIixcbiAgICBcIi5pZGVhL3J1bkNvbmZpZ3VyYXRpb25zL1VuaXQgVGVzdHMucnVuLnhtbFwiLFxuICAgIFwiLmlkZWEvcnVuQ29uZmlndXJhdGlvbnMvdXBkYXRlLXNjcmlwdHMucnVuLnhtbFwiLFxuICBdLFxuICBkb2NzOiBbXG4gICAgXCJ3b3JrZG9jcy90dXRvcmlhbHMvQ29udHJpYnV0aW5nLm1kXCIsXG4gICAgXCJ3b3JrZG9jcy90dXRvcmlhbHMvRG9jdW1lbnRhdGlvbi5tZFwiLFxuICAgIFwid29ya2RvY3MvdHV0b3JpYWxzL0ZvciBEZXZlbG9wZXJzLm1kXCIsXG4gICAgXCJ3b3JrZG9jcy8yLUJhZGdlcy5tZFwiLFxuICAgIFwid29ya2RvY3MvanNkb2NzLmpzb25cIixcbiAgICBcIndvcmtkb2NzL3JlYWRtZS1tZC5qc29uXCIsXG4gIF0sXG4gIHN0eWxlczogW1wiLnByZXR0aWVycmNcIiwgXCJlc2xpbnQuY29uZmlnLmpzXCJdLFxuICBzY3JpcHRzOiBbXG4gICAgXCJiaW4vdXBkYXRlLXNjcmlwdHMuY2pzXCIsXG4gICAgXCJiaW4vdGFnLXJlbGVhc2UuY2pzXCIsXG4gICAgXCJiaW4vYnVpbGQtc2NyaXB0cy5janNcIixcbiAgXSxcbiAgdGVzdHM6IFtcImplc3QuY29uZmlnLnRzXCIsIFwid29ya2RvY3MvcmVwb3J0cy9qZXN0LmNvdmVyYWdlLmNvbmZpZy50c1wiXSxcbiAgdHlwZXNjcmlwdDogW1widHNjb25maWcuanNvblwiXSxcbiAgZG9ja2VyOiBbXCJEb2NrZXJmaWxlXCJdLFxuICBhdXRvbWF0aW9uOiBbXG4gICAgXCJ3b3JrZG9jcy9jb25mbHVlbmNlL0NvbnRpbnVvdXMgSW50ZWdyYXRpb24tRGVwbG95bWVudC9HaXRIdWIubWRcIixcbiAgICBcIndvcmtkb2NzL2NvbmZsdWVuY2UvQ29udGludW91cyBJbnRlZ3JhdGlvbi1EZXBsb3ltZW50L0ppcmEubWRcIixcbiAgICBcIndvcmtkb2NzL2NvbmZsdWVuY2UvQ29udGludW91cyBJbnRlZ3JhdGlvbi1EZXBsb3ltZW50L1RlYW1zLm1kXCIsXG4gIF0sXG59O1xuXG5jb25zdCBhcmd6eiA9IHtcbiAgLy8gaW5pdCBhdHRyaWJ1dGVzXG4gIGJvb3Q6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgfSxcbiAgb3JnOiB7XG4gICAgdHlwZTogXCJzdHJpbmdcIixcbiAgICBzaG9ydDogXCJvXCIsXG4gIH0sXG4gIG5hbWU6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIHNob3J0OiBcIm5cIixcbiAgICBkZWZhdWx0OiB1bmRlZmluZWQsXG4gIH0sXG4gIGF1dGhvcjoge1xuICAgIHR5cGU6IFwic3RyaW5nXCIsXG4gICAgc2hvcnQ6IFwiYVwiLFxuICAgIGRlZmF1bHQ6IHVuZGVmaW5lZCxcbiAgfSxcbiAgLy8gdXBkYXRlIGF0dHJpYnV0ZXNcbiAgYWxsOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gIH0sXG4gIGxpY2Vuc2U6IHtcbiAgICB0eXBlOiBcInN0cmluZ1wiLFxuICAgIG1lc3NhZ2U6IFwiUGljayB0aGUgbGljZW5zZVwiLFxuICB9LFxuICBzY3JpcHRzOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gIH0sXG4gIHN0eWxlczoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICB9LFxuICBkb2NzOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gIH0sXG4gIGlkZToge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICB9LFxuICB3b3JrZmxvd3M6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgfSxcbiAgdGVtcGxhdGVzOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gIH0sXG4gIHR5cGVzY3JpcHQ6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgfSxcbiAgZG9ja2VyOiB7XG4gICAgdHlwZTogXCJib29sZWFuXCIsXG4gIH0sXG4gIHBrZzoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICB9LFxuICBkZXBlbmRlbmNpZXM6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgfSxcbiAgdGVzdHM6IHtcbiAgICB0eXBlOiBcImJvb2xlYW5cIixcbiAgfSxcbiAgYXV0b21hdGlvbjoge1xuICAgIHR5cGU6IFwiYm9vbGVhblwiLFxuICB9LFxufTtcblxuLyoqXG4gKiBAY2xhc3MgVGVtcGxhdGVTeW5jXG4gKiBAZXh0ZW5kcyB7Q29tbWFuZH1cbiAqIEBjYXRlZ29yeSBzY3JpcHRzXG4gKiBAZGVzY3JpcHRpb24gQSBjb21tYW5kLWxpbmUgdG9vbCBmb3Igc3luY2hyb25pemluZyBwcm9qZWN0IHRlbXBsYXRlcyBhbmQgY29uZmlndXJhdGlvbnMuXG4gKiBAc3VtbWFyeSBUaGlzIGNsYXNzIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgdG8gZG93bmxvYWQgYW5kIHVwZGF0ZSB2YXJpb3VzIHByb2plY3QgZmlsZXMgYW5kIGNvbmZpZ3VyYXRpb25zIGZyb20gYSByZW1vdGUgcmVwb3NpdG9yeS5cbiAqIEl0IHN1cHBvcnRzIHVwZGF0aW5nIGxpY2Vuc2VzLCBJREUgY29uZmlndXJhdGlvbnMsIHNjcmlwdHMsIHN0eWxlcywgZG9jdW1lbnRhdGlvbiwgd29ya2Zsb3dzLCBhbmQgdGVtcGxhdGVzLlxuICpcbiAqIEBwYXJhbSB7Q29tbWFuZE9wdGlvbnN9IGFyZ3MgLSBUaGUgY29tbWFuZCBvcHRpb25zIGZvciBUZW1wbGF0ZVN5bmNcbiAqL1xuZXhwb3J0IGNsYXNzIFRlbXBsYXRlU3luYyBleHRlbmRzIENvbW1hbmQ8Q29tbWFuZE9wdGlvbnM8dHlwZW9mIGFyZ3p6Piwgdm9pZD4ge1xuICBwcml2YXRlIHJlcGxhY2VtZW50czogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgbnVtYmVyPiA9IHt9O1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKFwiVGVtcGxhdGVTeW5jXCIsIGFyZ3p6KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZFZhbHVlc0Zyb21QYWNrYWdlKCkge1xuICAgIGNvbnN0IHAgPSBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IGF1dGhvciA9IGdldFBhY2thZ2UocCwgXCJhdXRob3JcIikgYXMgc3RyaW5nO1xuICAgIGNvbnN0IHNjb3BlZE5hbWUgPSBnZXRQYWNrYWdlKHAsIFwibmFtZVwiKTtcbiAgICBsZXQgbmFtZTogc3RyaW5nID0gc2NvcGVkTmFtZSBhcyBzdHJpbmc7XG4gICAgbGV0IG9yZzogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmIChuYW1lLnN0YXJ0c1dpdGgoXCJAXCIpKSB7XG4gICAgICBjb25zdCBzcGxpdCA9IG5hbWUuc3BsaXQoXCIvXCIpO1xuICAgICAgbmFtZSA9IHNwbGl0WzFdO1xuICAgICAgb3JnID0gc3BsaXRbMF0ucmVwbGFjZShcIkBcIiwgXCJcIik7XG4gICAgfVxuICAgIFtcIlRpYWdvIFZlbmNlc2xhdVwiLCBcIlRpYWdvVmVuY2VzbGF1XCIsIFwiJHthdXRob3J9XCJdLmZvckVhY2goXG4gICAgICAoZWwpID0+ICh0aGlzLnJlcGxhY2VtZW50c1tlbF0gPSBhdXRob3IpXG4gICAgKTtcbiAgICBbXCJUUy1Xb3Jrc3BhY2VcIiwgXCJ0cy13b3Jrc3BhY2VcIiwgXCIke25hbWV9XCJdLmZvckVhY2goXG4gICAgICAoZWwpID0+ICh0aGlzLnJlcGxhY2VtZW50c1tlbF0gPSBuYW1lKVxuICAgICk7XG4gICAgW1wiZGVjYWYtdHNcIiwgXCIke29yZ31cIl0uZm9yRWFjaChcbiAgICAgIChlbCkgPT4gKHRoaXMucmVwbGFjZW1lbnRzW2VsXSA9IChvcmcgYXMgc3RyaW5nKSB8fCAnXCJcIicpXG4gICAgKTtcbiAgICB0aGlzLnJlcGxhY2VtZW50c1tcIiR7b3JnX29yX293bmVyfVwiXSA9IG9yZyB8fCBuYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEb3dubG9hZHMgZmlsZXMgZm9yIGEgc3BlY2lmaWMgb3B0aW9uIGNhdGVnb3J5LlxuICAgKiBAc3VtbWFyeSBUaGlzIG1ldGhvZCBkb3dubG9hZHMgYWxsIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIG9wdGlvbiBrZXkgZnJvbSB0aGUgcmVtb3RlIHJlcG9zaXRvcnkuXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBrZXkgLSBUaGUga2V5IHJlcHJlc2VudGluZyB0aGUgb3B0aW9uIGNhdGVnb3J5IHRvIGRvd25sb2FkXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgdGhlIHNwZWNpZmllZCBvcHRpb24ga2V5IGlzIG5vdCBmb3VuZFxuICAgKi9cbiAgYXN5bmMgZG93bmxvYWRPcHRpb24oa2V5OiBrZXlvZiB0eXBlb2Ygb3B0aW9ucyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICghKGtleSBpbiBvcHRpb25zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBPcHRpb24gXCIke2tleX1cIiBub3QgZm91bmQgaW4gb3B0aW9uc2ApO1xuICAgIH1cbiAgICBjb25zdCBmaWxlcyA9IG9wdGlvbnNba2V5IGFzIGtleW9mIHR5cGVvZiBvcHRpb25zXTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgRG93bmxvYWRpbmcgJHtmaWxlfWApO1xuXG4gICAgICBsZXQgZGF0YSA9IGF3YWl0IEh0dHBDbGllbnQuZG93bmxvYWRGaWxlKGAke2Jhc2VVcmx9LyR7ZmlsZX1gKTtcbiAgICAgIGRhdGEgPSBwYXRjaFN0cmluZyhkYXRhLCB0aGlzLnJlcGxhY2VtZW50cyk7XG4gICAgICB3cml0ZUZpbGUocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIGZpbGUpLCBkYXRhKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERvd25sb2FkcyBhbmQgc2V0cyB1cCB0aGUgc3BlY2lmaWVkIGxpY2Vuc2UuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIGRvd25sb2FkcyB0aGUgY2hvc2VuIGxpY2Vuc2UgZmlsZSwgc2F2ZXMgaXQgdG8gdGhlIHByb2plY3QsIGFuZCB1cGRhdGVzIHRoZSBwYWNrYWdlLmpzb24gbGljZW5zZSBmaWVsZC5cbiAgICogQHBhcmFtIHtcIk1JVFwiIHwgXCJHUExcIiB8IFwiQXBhY2hlXCIgfCBcIkxHUExcIiB8IFwiQUdQTFwifSBsaWNlbnNlIC0gVGhlIGxpY2Vuc2UgdG8gZG93bmxvYWQgYW5kIHNldCB1cFxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGdldExpY2Vuc2UobGljZW5zZTogXCJNSVRcIiB8IFwiR1BMXCIgfCBcIkFwYWNoZVwiIHwgXCJMR1BMXCIgfCBcIkFHUExcIikge1xuICAgIHRoaXMubG9nLmluZm8oYERvd25sb2FkaW5nICR7bGljZW5zZX0gbGljZW5zZWApO1xuICAgIGNvbnN0IHVybCA9IGAke2Jhc2VVcmx9L3dvcmtkb2NzL2xpY2Vuc2VzLyR7bGljZW5zZX0ubWRgO1xuICAgIGxldCBkYXRhID0gYXdhaXQgSHR0cENsaWVudC5kb3dubG9hZEZpbGUodXJsKTtcbiAgICBkYXRhID0gcGF0Y2hTdHJpbmcoZGF0YSwgdGhpcy5yZXBsYWNlbWVudHMpO1xuICAgIHdyaXRlRmlsZShwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJMSUNFTlNFLm1kXCIpLCBkYXRhKTtcbiAgICBzZXRQYWNrYWdlQXR0cmlidXRlKFwibGljZW5zZVwiLCBsaWNlbnNlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRG93bmxvYWRzIElERSBjb25maWd1cmF0aW9uIGZpbGVzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGdldElkZSgpIHtcbiAgICBmcy5ta2RpclN5bmMocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksIFwiLmlkZWFcIiwgXCJydW5Db25maWd1cmF0aW9uc1wiKSwge1xuICAgICAgcmVjdXJzaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMuZG93bmxvYWRPcHRpb24oXCJpZGVcIik7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFVwZGF0ZSBucG0gc2NyaXB0c1xuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGFzeW5jIGdldFNjcmlwdHMoKSB7XG4gICAgYXdhaXQgdGhpcy5kb3dubG9hZE9wdGlvbihcInNjcmlwdHNcIik7XG4gICAgdGhpcy5sb2cuaW5mbyhcInBsZWFzZSByZS1ydW4gdGhlIGNvbW1hbmRcIik7XG4gICAgcHJvY2Vzcy5leGl0KDApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEb3dubG9hZHMgc3R5bGUgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBnZXRTdHlsZXMgPSAoKSA9PiB0aGlzLmRvd25sb2FkT3B0aW9uKFwic3R5bGVzXCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRG93bmxvYWRzIHRlbXBsYXRlIGZpbGVzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGdldFRlbXBsYXRlcyA9ICgpID0+IHRoaXMuZG93bmxvYWRPcHRpb24oXCJ0ZW1wbGF0ZXNcIik7XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEb3dubG9hZHMgd29ya2Zsb3cgY29uZmlndXJhdGlvbiBmaWxlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBnZXRXb3JrZmxvd3MgPSAoKSA9PiB0aGlzLmRvd25sb2FkT3B0aW9uKFwid29ya2Zsb3dzXCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRG93bmxvYWRzIGRvY3VtZW50YXRpb24gZmlsZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgZ2V0RG9jcyA9ICgpID0+IHRoaXMuZG93bmxvYWRPcHRpb24oXCJkb2NzXCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRG93bmxvYWRzIHR5cGVzY3JpcHQgY29uZmlnIGZpbGVzLlxuICAgKiBAcmV0dXJucyB7UHJvbWlzZTx2b2lkPn1cbiAgICovXG4gIGdldFR5cGVzY3JpcHQgPSAoKSA9PiB0aGlzLmRvd25sb2FkT3B0aW9uKFwidHlwZXNjcmlwdFwiKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERvd25sb2FkcyBhdXRvbWF0aW9uIGRvY3VtZW50YXRpb24gZmlsZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgZ2V0QXV0b21hdGlvbiA9ICgpID0+IHRoaXMuZG93bmxvYWRPcHRpb24oXCJhdXRvbWF0aW9uXCIpO1xuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRG93bmxvYWRzIGF1dG9tYXRpb24gZG9jdW1lbnRhdGlvbiBmaWxlcy5cbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqL1xuICBnZXRUZXN0cyA9ICgpID0+IHRoaXMuZG93bmxvYWRPcHRpb24oXCJ0ZXN0c1wiKTtcblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIERvd25sb2FkcyBkb2NrZXIgaW1hZ2UgZmlsZXMuXG4gICAqIEByZXR1cm5zIHtQcm9taXNlPHZvaWQ+fVxuICAgKi9cbiAgZ2V0RG9ja2VyID0gKCkgPT4gdGhpcy5kb3dubG9hZE9wdGlvbihcImRvY2tlclwiKTtcblxuICBhc3luYyBpbml0UGFja2FnZShwa2dOYW1lOiBzdHJpbmcsIGF1dGhvcjogc3RyaW5nLCBsaWNlbnNlOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcGtnID0gZ2V0UGFja2FnZSgpIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgZGVsZXRlIHBrZ1tTZXR1cFNjcmlwdEtleV07XG4gICAgICBwa2cubmFtZSA9IHBrZ05hbWU7XG4gICAgICBwa2cudmVyc2lvbiA9IFwiMC4wLjFcIjtcbiAgICAgIHBrZy5hdXRob3IgPSBhdXRob3I7XG4gICAgICBwa2cubGljZW5zZSA9IGxpY2Vuc2U7XG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFwicGFja2FnZS5qc29uXCIsIEpTT04uc3RyaW5naWZ5KHBrZywgbnVsbCwgMikpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgZml4aW5nIHBhY2thZ2UuanNvbjogJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHVwZGF0ZVBhY2thZ2VTY3JpcHMoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IG9yaWdpbmFsUGtnID0gSlNPTi5wYXJzZShcbiAgICAgICAgYXdhaXQgSHR0cENsaWVudC5kb3dubG9hZEZpbGUoYCR7YmFzZVVybH0vcGFja2FnZS5qc29uYClcbiAgICAgICk7XG4gICAgICBjb25zdCB7IHNjcmlwdHMgfSA9IG9yaWdpbmFsUGtnO1xuXG4gICAgICBjb25zdCBwa2c6IHR5cGVvZiBvcmlnaW5hbFBrZyA9IGdldFBhY2thZ2UoKSBhcyB7XG4gICAgICAgIHNjcmlwdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgICB9O1xuICAgICAgT2JqZWN0LmtleXMocGtnLnNjcmlwdHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoa2V5IGluIHNjcmlwdHMpIHtcbiAgICAgICAgICBjb25zdCByZXBsYWNlZCA9IHBhdGNoU3RyaW5nKHNjcmlwdHNba2V5XSwgdGhpcy5yZXBsYWNlbWVudHMpO1xuICAgICAgICAgIGlmIChyZXBsYWNlZCAhPT0gc2NyaXB0c1trZXldKSB7XG4gICAgICAgICAgICBwa2cuc2NyaXB0c1trZXldID0gcmVwbGFjZWQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcGtnW1wiZXhwb3J0c1wiXVtcInJlcXVpcmVcIl0gPSBvcmlnaW5hbFBrZ1tcImV4cG9ydHNcIl1bXCJyZXF1aXJlXCJdO1xuICAgICAgcGtnW1wiZXhwb3J0c1wiXVtcImltcG9ydFwiXSA9IG9yaWdpbmFsUGtnW1wiZXhwb3J0c1wiXVtcImltcG9ydFwiXTtcbiAgICAgIHBrZ1tcInR5cGVzXCJdID0gb3JpZ2luYWxQa2dbXCJ0eXBlc1wiXTtcblxuICAgICAgZnMud3JpdGVGaWxlU3luYyhcInBhY2thZ2UuanNvblwiLCBKU09OLnN0cmluZ2lmeShwa2csIG51bGwsIDIpKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEVycm9yIGZpeGluZyBwYWNrYWdlLmpzb24gc2NyaXB0czogJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVRva2VuRmlsZXMoKSB7XG4gICAgY29uc3QgbG9nID0gdGhpcy5sb2cuZm9yKHRoaXMuY3JlYXRlVG9rZW5GaWxlcyk7XG4gICAgY29uc3QgZ2l0VG9rZW4gPSBhd2FpdCBVc2VySW5wdXQuaW5zaXN0Rm9yVGV4dChcbiAgICAgIFwidG9rZW5cIixcbiAgICAgIFwicGxlYXNlIGlucHV0IHlvdXIgZ2l0aHViIHRva2VuXCIsXG4gICAgICAocmVzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuICEhcmVzLm1hdGNoKC9eZ2hwX1swLTlhLXpBLVpdezM2fSQvZyk7XG4gICAgICB9XG4gICAgKTtcbiAgICBPYmplY3QudmFsdWVzKFRva2VucykuZm9yRWFjaCgodG9rZW4pID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGxldCBzdGF0dXM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgc3RhdHVzID0gZnMuZXhpc3RzU3luYyh0b2tlbik7XG4gICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICAgICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgICAgbG9nLmluZm8oYFRva2VuIGZpbGUgJHt0b2tlbn0gbm90IGZvdW5kLiBDcmVhdGluZyBhIG5ldyBvbmUuLi5gKTtcbiAgICAgICAgICBmcy53cml0ZUZpbGVTeW5jKHRva2VuLCB0b2tlbiA9PT0gXCIudG9rZW5cIiA/IGdpdFRva2VuIDogXCJcIik7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmICghc3RhdHVzKSB7XG4gICAgICAgICAgZnMud3JpdGVGaWxlU3luYyh0b2tlbiwgdG9rZW4gPT09IFwiLnRva2VuXCIgPyBnaXRUb2tlbiA6IFwiXCIpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgRXJyb3IgY3JlYXRpbmcgdG9rZW4gZmlsZSAke3Rva2VufTogJHtlfWApO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgZ2V0T3JnKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgY29uc3Qgb3JnID0gYXdhaXQgVXNlcklucHV0LmFza1RleHQoXG4gICAgICBcIk9yZ2FuaXphdGlvblwiLFxuICAgICAgXCJFbnRlciB0aGUgb3JnYW5pemF0aW9uIG5hbWUgKHdpbGwgYmUgdXNlZCB0byBzY29wZSB5b3VyIG5wbSBwcm9qZWN0LiBsZWF2ZSBibGFuayB0byBjcmVhdGUgYSB1bnNjb3BlZCBwcm9qZWN0KTpcIlxuICAgICk7XG4gICAgY29uc3QgY29uZmlybWF0aW9uID0gYXdhaXQgVXNlcklucHV0LmFza0NvbmZpcm1hdGlvbihcbiAgICAgIFwiQ29uZmlybSBvcmdhbml6YXRpb25cIixcbiAgICAgIFwiSXMgdGhpcyBvcmdhbml6YXRpb24gY29ycmVjdD9cIixcbiAgICAgIHRydWVcbiAgICApO1xuICAgIGlmICghY29uZmlybWF0aW9uKSByZXR1cm4gdGhpcy5nZXRPcmcoKTtcblxuICAgIHJldHVybiBvcmc7XG4gIH1cblxuICBhc3luYyBhdWRpdEZpeCgpIHtcbiAgICByZXR1cm4gYXdhaXQgcnVuQ29tbWFuZChcIm5wbSBhdWRpdCBmaXggLS1mb3JjZVwiKS5wcm9taXNlO1xuICB9XG5cbiAgcGF0Y2hGaWxlcygpIHtcbiAgICBjb25zdCBmaWxlcyA9IFtcbiAgICAgIC4uLmZzXG4gICAgICAgIC5yZWFkZGlyU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJzcmNcIiksIHtcbiAgICAgICAgICByZWN1cnNpdmU6IHRydWUsXG4gICAgICAgICAgd2l0aEZpbGVUeXBlczogdHJ1ZSxcbiAgICAgICAgfSlcbiAgICAgICAgLmZpbHRlcigoZW50cnkpID0+IGVudHJ5LmlzRmlsZSgpKVxuICAgICAgICAubWFwKChlbnRyeSkgPT4gcGF0aC5qb2luKGVudHJ5LnBhcmVudFBhdGgsIGVudHJ5Lm5hbWUpKSxcbiAgICAgIC4uLmZzXG4gICAgICAgIC5yZWFkZGlyU3luYyhwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCJ3b3JrZG9jc1wiKSwge1xuICAgICAgICAgIHJlY3Vyc2l2ZTogdHJ1ZSxcbiAgICAgICAgICB3aXRoRmlsZVR5cGVzOiB0cnVlLFxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChlbnRyeSkgPT4gZW50cnkuaXNGaWxlKCkgJiYgZW50cnkubmFtZS5lbmRzV2l0aChcIi5tZFwiKSlcbiAgICAgICAgLm1hcCgoZW50cnkpID0+IHBhdGguam9pbihlbnRyeS5wYXJlbnRQYXRoLCBlbnRyeS5uYW1lKSksXG4gICAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgXCIuZ2l0bGFiLWNpLnltbFwiKSxcbiAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCBcIndvcmtkb2NzXCIsIFwianNkb2NzLmpzb25cIiksXG4gICAgXTtcblxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgcGF0Y2hGaWxlKGZpbGUgYXMgc3RyaW5nLCB0aGlzLnJlcGxhY2VtZW50cyk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgdXBkYXRlRGVwZW5kZW5jaWVzKCkge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBvcmlnaW5hbFBrZyA9IEpTT04ucGFyc2UoXG4gICAgICAgIGF3YWl0IEh0dHBDbGllbnQuZG93bmxvYWRGaWxlKGAke2Jhc2VVcmx9L3BhY2thZ2UuanNvbmApXG4gICAgICApO1xuICAgICAgY29uc3QgeyBkZXZEZXBlbmRlbmNpZXMgfSA9IG9yaWdpbmFsUGtnO1xuXG4gICAgICBjb25zdCBwa2c6IHR5cGVvZiBvcmlnaW5hbFBrZyA9IGdldFBhY2thZ2UoKSBhcyB7XG4gICAgICAgIHNjcmlwdHM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgICB9O1xuICAgICAgT2JqZWN0LmtleXMocGtnLnNjcmlwdHMpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgICBpZiAoa2V5IGluIGRldkRlcGVuZGVuY2llcykge1xuICAgICAgICAgIGNvbnN0IHJlcGxhY2VkID0gZGV2RGVwZW5kZW5jaWVzW2tleV07XG4gICAgICAgICAgaWYgKHJlcGxhY2VkICE9PSBkZXZEZXBlbmRlbmNpZXNba2V5XSkge1xuICAgICAgICAgICAgKHBrZyBhcyBhbnkpW1wiZGV2RGVwZW5kZW5jaWVzXCJdID1cbiAgICAgICAgICAgICAgKHBrZyBhcyBhbnkpW1wiZGV2RGVwZW5kZW5jaWVzXCJdIHx8IHt9O1xuICAgICAgICAgICAgKHBrZyBhcyBhbnkpW1wiZGV2RGVwZW5kZW5jaWVzXCJdW2tleV0gPSByZXBsYWNlZDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBmcy53cml0ZUZpbGVTeW5jKFwicGFja2FnZS5qc29uXCIsIEpTT04uc3RyaW5naWZ5KHBrZywgbnVsbCwgMikpO1xuICAgICAgYXdhaXQgcnVuQ29tbWFuZChcIm5wbSBpbnN0YWxsXCIpLnByb21pc2U7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBFcnJvciBmaXhpbmcgcGFja2FnZS5qc29uIGRlcGVuZGVuY2llczogJHtlfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUnVucyB0aGUgdGVtcGxhdGUgc3luY2hyb25pemF0aW9uIHByb2Nlc3MuXG4gICAqIEBzdW1tYXJ5IFRoaXMgbWV0aG9kIG9yY2hlc3RyYXRlcyB0aGUgZG93bmxvYWRpbmcgb2YgdmFyaW91cyBwcm9qZWN0IGNvbXBvbmVudHMgYmFzZWQgb24gdGhlIHByb3ZpZGVkIGFyZ3VtZW50cy5cbiAgICogQHBhcmFtIHtQYXJzZUFyZ3NSZXN1bHR9IGFyZ3MgLSBUaGUgcGFyc2VkIGNvbW1hbmQtbGluZSBhcmd1bWVudHNcbiAgICogQHJldHVybnMge1Byb21pc2U8dm9pZD59XG4gICAqXG4gICAqIEBtZXJtYWlkXG4gICAqIHNlcXVlbmNlRGlhZ3JhbVxuICAgKiAgIHBhcnRpY2lwYW50IFQgYXMgVGVtcGxhdGVTeW5jXG4gICAqICAgcGFydGljaXBhbnQgTCBhcyBnZXRMaWNlbnNlXG4gICAqICAgcGFydGljaXBhbnQgSSBhcyBnZXRJZGVcbiAgICogICBwYXJ0aWNpcGFudCBTIGFzIGdldFNjcmlwdHNcbiAgICogICBwYXJ0aWNpcGFudCBTdCBhcyBnZXRTdHlsZXNcbiAgICogICBwYXJ0aWNpcGFudCBEIGFzIGdldERvY3NcbiAgICogICBwYXJ0aWNpcGFudCBXIGFzIGdldFdvcmtmbG93c1xuICAgKiAgIHBhcnRpY2lwYW50IFRlIGFzIGdldFRlbXBsYXRlc1xuICAgKiAgIFQtPj5UOiBQYXJzZSBhcmd1bWVudHNcbiAgICogICBhbHQgYWxsIGZsYWcgaXMgdHJ1ZVxuICAgKiAgICAgVC0+PlQ6IFNldCBhbGwgY29tcG9uZW50IGZsYWdzIHRvIHRydWVcbiAgICogICBlbmRcbiAgICogICBhbHQgbGljZW5zZSBpcyBzcGVjaWZpZWRcbiAgICogICAgIFQtPj5MOiBnZXRMaWNlbnNlKGxpY2Vuc2UpXG4gICAqICAgZW5kXG4gICAqICAgYWx0IGlkZSBmbGFnIGlzIHRydWVcbiAgICogICAgIFQtPj5JOiBnZXRJZGUoKVxuICAgKiAgIGVuZFxuICAgKiAgIGFsdCBzY3JpcHRzIGZsYWcgaXMgdHJ1ZVxuICAgKiAgICAgVC0+PlM6IGdldFNjcmlwdHMoKVxuICAgKiAgIGVuZFxuICAgKiAgIGFsdCBzdHlsZXMgZmxhZyBpcyB0cnVlXG4gICAqICAgICBULT4+U3Q6IGdldFN0eWxlcygpXG4gICAqICAgZW5kXG4gICAqICAgYWx0IGRvY3MgZmxhZyBpcyB0cnVlXG4gICAqICAgICBULT4+RDogZ2V0RG9jcygpXG4gICAqICAgZW5kXG4gICAqICAgYWx0IHdvcmtmbG93cyBmbGFnIGlzIHRydWVcbiAgICogICAgIFQtPj5XOiBnZXRXb3JrZmxvd3MoKVxuICAgKiAgIGVuZFxuICAgKiAgIGFsdCB0ZW1wbGF0ZXMgZmxhZyBpcyB0cnVlXG4gICAqICAgICBULT4+VGU6IGdldFRlbXBsYXRlcygpXG4gICAqICAgZW5kXG4gICAqL1xuICBhc3luYyBydW4oXG4gICAgYXJnczogTG9nZ2luZ0NvbmZpZyAmXG4gICAgICB0eXBlb2YgRGVmYXVsdENvbW1hbmRWYWx1ZXMgJiB7IFtrIGluIGtleW9mIHR5cGVvZiBhcmd6el06IHVua25vd24gfVxuICApIHtcbiAgICBsZXQgeyBsaWNlbnNlIH0gPSBhcmdzO1xuICAgIGNvbnN0IHsgYm9vdCB9ID0gYXJncztcbiAgICBsZXQge1xuICAgICAgYWxsLFxuICAgICAgc2NyaXB0cyxcbiAgICAgIHN0eWxlcyxcbiAgICAgIGRvY3MsXG4gICAgICBpZGUsXG4gICAgICB3b3JrZmxvd3MsXG4gICAgICB0ZW1wbGF0ZXMsXG4gICAgICBkb2NrZXIsXG4gICAgICB0eXBlc2NyaXB0LFxuICAgICAgZGVwZW5kZW5jaWVzLFxuICAgICAgdGVzdHMsXG4gICAgICBhdXRvbWF0aW9uLFxuICAgICAgcGtnLFxuICAgIH0gPSBhcmdzO1xuICAgIGlmIChcbiAgICAgIHNjcmlwdHMgfHxcbiAgICAgIHN0eWxlcyB8fFxuICAgICAgZG9jcyB8fFxuICAgICAgaWRlIHx8XG4gICAgICB3b3JrZmxvd3MgfHxcbiAgICAgIHRlbXBsYXRlcyB8fFxuICAgICAgZG9ja2VyIHx8XG4gICAgICB0eXBlc2NyaXB0IHx8XG4gICAgICBhdXRvbWF0aW9uIHx8XG4gICAgICBkZXBlbmRlbmNpZXMgfHxcbiAgICAgIHRlc3RzIHx8XG4gICAgICBwa2dcbiAgICApXG4gICAgICBhbGwgPSBmYWxzZTtcblxuICAgIGlmIChib290KSB7XG4gICAgICBjb25zdCBvcmcgPSBhd2FpdCB0aGlzLmdldE9yZygpO1xuICAgICAgY29uc3QgbmFtZSA9IGF3YWl0IFVzZXJJbnB1dC5pbnNpc3RGb3JUZXh0KFxuICAgICAgICBcIlByb2plY3QgbmFtZVwiLFxuICAgICAgICBcIkVudGVyIHRoZSBwcm9qZWN0IG5hbWU6XCIsXG4gICAgICAgIChyZXM6IHN0cmluZykgPT4gcmVzLmxlbmd0aCA+IDFcbiAgICAgICk7XG4gICAgICBjb25zdCBhdXRob3IgPSBhd2FpdCBVc2VySW5wdXQuaW5zaXN0Rm9yVGV4dChcbiAgICAgICAgXCJBdXRob3JcIixcbiAgICAgICAgXCJFbnRlciB0aGUgYXV0aG9yIG5hbWU6XCIsXG4gICAgICAgIChyZXM6IHN0cmluZykgPT4gcmVzLmxlbmd0aCA+IDFcbiAgICAgICk7XG4gICAgICBjb25zdCBwa2dOYW1lID0gb3JnID8gYEAke29yZ30vJHtuYW1lfWAgOiBuYW1lO1xuXG4gICAgICBhd2FpdCB0aGlzLmluaXRQYWNrYWdlKHBrZ05hbWUsIGF1dGhvciwgbGljZW5zZSBhcyBzdHJpbmcpO1xuICAgICAgYXdhaXQgdGhpcy5jcmVhdGVUb2tlbkZpbGVzKCk7XG4gICAgICBhd2FpdCB0aGlzLmF1ZGl0Rml4KCk7XG4gICAgICB0aGlzLnBhdGNoRmlsZXMoKTtcbiAgICB9XG5cbiAgICBpZiAoYWxsKSB7XG4gICAgICBzY3JpcHRzID0gZmFsc2U7XG4gICAgICBzdHlsZXMgPSB0cnVlO1xuICAgICAgZG9jcyA9IHRydWU7XG4gICAgICBpZGUgPSB0cnVlO1xuICAgICAgd29ya2Zsb3dzID0gdHJ1ZTtcbiAgICAgIHRlbXBsYXRlcyA9IHRydWU7XG4gICAgICBkb2NrZXIgPSB0cnVlO1xuICAgICAgdHlwZXNjcmlwdCA9IHRydWU7XG4gICAgICBwa2cgPSB0cnVlO1xuICAgICAgZGVwZW5kZW5jaWVzID0gdHJ1ZTtcbiAgICAgIHRlc3RzID0gdHJ1ZTtcbiAgICAgIGF1dG9tYXRpb24gPSBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIHNjcmlwdHMgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICBzY3JpcHRzID0gYXdhaXQgVXNlcklucHV0LmFza0NvbmZpcm1hdGlvbihcbiAgICAgICAgXCJzY3JpcHRzXCIsXG4gICAgICAgIFwiRG8geW91IHdhbnQgdG8gZ2V0IHNjcmlwdHM/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICBpZiAoc2NyaXB0cykgYXdhaXQgdGhpcy5nZXRTY3JpcHRzKCk7XG5cbiAgICB0aGlzLmxvYWRWYWx1ZXNGcm9tUGFja2FnZSgpO1xuICAgIGlmICghYWxsICYmIHR5cGVvZiBsaWNlbnNlID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBjb25zdCBjb25maXJtYXRpb24gPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcImxpY2Vuc2VcIixcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byBzZXQgYSBsaWNlbnNlP1wiLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgICAgaWYgKGNvbmZpcm1hdGlvbilcbiAgICAgICAgbGljZW5zZSA9IGF3YWl0IFVzZXJJbnB1dC5pbnNpc3RGb3JUZXh0KFxuICAgICAgICAgIFwibGljZW5zZVwiLFxuICAgICAgICAgIFwiRW50ZXIgdGhlIGRlc2lyZWQgTGljZW5zZSAoTUlUfEdQTHxBcGFjaGV8TEdQTHxBR1BMKTpcIixcbiAgICAgICAgICAodmFsKSA9PiAhIXZhbCAmJiAhIXZhbC5tYXRjaCgvXihNSVR8R1BMfEFwYWNoZXxMR1BMfEFHUEwpJC9nKVxuICAgICAgICApO1xuICAgIH1cbiAgICBpZiAodHlwZW9mIGxpY2Vuc2UgIT09IFwidW5kZWZpbmVkXCIpXG4gICAgICBhd2FpdCB0aGlzLmdldExpY2Vuc2UoXG4gICAgICAgIGxpY2Vuc2UgYXMgXCJNSVRcIiB8IFwiR1BMXCIgfCBcIkFwYWNoZVwiIHwgXCJMR1BMXCIgfCBcIkFHUExcIlxuICAgICAgKTtcblxuICAgIGlmICh0eXBlb2YgaWRlID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgaWRlID0gYXdhaXQgVXNlcklucHV0LmFza0NvbmZpcm1hdGlvbihcbiAgICAgICAgXCJpZGVcIixcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byBnZXQgaWRlIGNvbmZpZ3M/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG5cbiAgICBpZiAoaWRlKSBhd2FpdCB0aGlzLmdldElkZSgpO1xuXG4gICAgaWYgKHR5cGVvZiB0eXBlc2NyaXB0ID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgdHlwZXNjcmlwdCA9IGF3YWl0IFVzZXJJbnB1dC5hc2tDb25maXJtYXRpb24oXG4gICAgICAgIFwidHlwZXNjcmlwdFwiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIGdldCB0eXBlc2NyaXB0IGNvbmZpZ3M/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgaWYgKHR5cGVzY3JpcHQpIGF3YWl0IHRoaXMuZ2V0VHlwZXNjcmlwdCgpO1xuXG4gICAgaWYgKHR5cGVvZiBkb2NrZXIgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICBkb2NrZXIgPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcImRvY2tlclwiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIGdldCBkb2NrZXIgY29uZmlncz9cIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcblxuICAgIGlmIChkb2NrZXIpIGF3YWl0IHRoaXMuZ2V0RG9ja2VyKCk7XG4gICAgaWYgKHR5cGVvZiBhdXRvbWF0aW9uID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgYXV0b21hdGlvbiA9IGF3YWl0IFVzZXJJbnB1dC5hc2tDb25maXJtYXRpb24oXG4gICAgICAgIFwiYXV0b21hdGlvblwiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIGdldCBhdXRvbWF0aW9uIGNvbmZpZ3M/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgaWYgKGF1dG9tYXRpb24pIGF3YWl0IHRoaXMuZ2V0QXV0b21hdGlvbigpO1xuXG4gICAgaWYgKHR5cGVvZiBzdHlsZXMgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICBzdHlsZXMgPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcInN0eWxlc1wiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIGdldCBzdHlsZXM/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgaWYgKHN0eWxlcykgYXdhaXQgdGhpcy5nZXRTdHlsZXMoKTtcblxuICAgIGlmICh0eXBlb2YgZG9jcyA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgIGRvY3MgPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcImRvY3NcIixcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byBnZXQgZG9jcz9cIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICBpZiAoZG9jcykgYXdhaXQgdGhpcy5nZXREb2NzKCk7XG4gICAgaWYgKHR5cGVvZiB3b3JrZmxvd3MgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICB3b3JrZmxvd3MgPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcIndvcmtmbG93c1wiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIGdldCB3b3JrZmxvd3M/XCIsXG4gICAgICAgIHRydWVcbiAgICAgICk7XG4gICAgaWYgKHdvcmtmbG93cykgYXdhaXQgdGhpcy5nZXRXb3JrZmxvd3MoKTtcbiAgICBpZiAodHlwZW9mIHRlbXBsYXRlcyA9PT0gXCJ1bmRlZmluZWRcIilcbiAgICAgIHRlbXBsYXRlcyA9IGF3YWl0IFVzZXJJbnB1dC5hc2tDb25maXJtYXRpb24oXG4gICAgICAgIFwidGVtcGxhdGVzXCIsXG4gICAgICAgIFwiRG8geW91IHdhbnQgdG8gZ2V0IHRlbXBsYXRlcz9cIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICBpZiAodGVtcGxhdGVzKSBhd2FpdCB0aGlzLmdldFRlbXBsYXRlcygpO1xuICAgIGlmICh0eXBlb2YgcGtnID09PSBcInVuZGVmaW5lZFwiKVxuICAgICAgcGtnID0gYXdhaXQgVXNlcklucHV0LmFza0NvbmZpcm1hdGlvbihcbiAgICAgICAgXCJwa2dcIixcbiAgICAgICAgXCJEbyB5b3Ugd2FudCB0byB1cGRhdGUgeW91ciBwYWNrYWdlLmpzb24gc2NyaXB0cz9cIixcbiAgICAgICAgdHJ1ZVxuICAgICAgKTtcbiAgICBpZiAocGtnKSBhd2FpdCB0aGlzLnVwZGF0ZVBhY2thZ2VTY3JpcHMoKTtcblxuICAgIGlmICh0eXBlb2YgdGVzdHMgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICB0ZXN0cyA9IGF3YWl0IFVzZXJJbnB1dC5hc2tDb25maXJtYXRpb24oXG4gICAgICAgIFwicGtnXCIsXG4gICAgICAgIFwiRG8geW91IHdhbnQgdG8gdXBkYXRlIHlvdXIgdGVzdCBjb25maWdzP1wiLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIGlmICh0ZXN0cykgYXdhaXQgdGhpcy5nZXRUZXN0cygpO1xuXG4gICAgaWYgKHR5cGVvZiBkZXBlbmRlbmNpZXMgPT09IFwidW5kZWZpbmVkXCIpXG4gICAgICBkZXBlbmRlbmNpZXMgPSBhd2FpdCBVc2VySW5wdXQuYXNrQ29uZmlybWF0aW9uKFxuICAgICAgICBcInBrZ1wiLFxuICAgICAgICBcIkRvIHlvdSB3YW50IHRvIHVwZGF0ZSBkZXYgZGVwZW5kZW5jaWVzP1wiLFxuICAgICAgICB0cnVlXG4gICAgICApO1xuICAgIGlmIChkZXBlbmRlbmNpZXMpIGF3YWl0IHRoaXMudXBkYXRlRGVwZW5kZW5jaWVzKCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,3 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @description Definition of a slogan item.
|
|
3
|
+
* @summary Represents a single slogan entry with text and tags.
|
|
4
|
+
* @typedef {Object} SloganItem
|
|
5
|
+
* @property {string} Slogan - The slogan text.
|
|
6
|
+
* @property {string} Tags - Comma-separated tags describing the slogan.
|
|
7
|
+
* @memberOf module:utils
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* @description List of available slogans for banners and messages.
|
|
11
|
+
* @summary Immutable array of slogan entries used by {@link getSlogan} and banner rendering.
|
|
12
|
+
* @type {SloganItem[]}
|
|
13
|
+
* @const slogans
|
|
14
|
+
* @memberOf module:utils
|
|
15
|
+
*/
|
|
1
16
|
export declare const slogans: {
|
|
2
17
|
Slogan: string;
|
|
3
18
|
Tags: string;
|