@kontur.candy/tools 2.141.0 → 2.142.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/distr/Common/CandyApiClient/CandyApiClient.js +4 -4
- package/distr/Common/ModelPath/ModelPath.js +7 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +12 -4
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +6 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +20 -15
- package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
- package/package.json +1 -1
|
@@ -37,13 +37,13 @@ var _PathPattern = require("../../../Commons/PathPattern");
|
|
|
37
37
|
|
|
38
38
|
var _TypingUtils = require("../../../../../Common/TypingUtils");
|
|
39
39
|
|
|
40
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _class;
|
|
40
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _dec20, _class;
|
|
41
41
|
|
|
42
42
|
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
43
43
|
|
|
44
44
|
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
45
45
|
|
|
46
|
-
let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/picklists", _Results.httpReturn.PlainText),
|
|
46
|
+
let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/gfvs", _Results.httpReturn.Json), _dec2 = (0, _Methods.httpGet)("/picklists", _Results.httpReturn.PlainText), _dec3 = (0, _Methods.httpGet)("/picklists/:picklistFilename", _Results.httpReturn.StreamWithMime("application/json"), (0, _Params.httpUrlParam)("picklistFilename", _Params.httpType.String)), _dec4 = (0, _Methods.httpGet)("/converters", _Results.httpReturn.PlainText), _dec5 = (0, _Methods.httpGet)("/converters/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec6 = (0, _Methods.httpGet)("/schemas", _Results.httpReturn.PlainText), _dec7 = (0, _Methods.httpGet)("/schemas/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec8 = (0, _Methods.httpGet)("/presentations", _Results.httpReturn.PlainText), _dec9 = (0, _Methods.httpGet)("/presentations/:gfv.presentations.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec10 = (0, _Methods.httpGet)("/normalize", _Results.httpReturn.PlainText), _dec11 = (0, _Methods.httpGet)("/normalize/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec12 = (0, _Methods.httpGet)("/normalize/:gfv.normalize", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec13 = (0, _Methods.httpGet)("/attachmentpaths", _Results.httpReturn.PlainText), _dec14 = (0, _Methods.httpGet)("/attachmentpaths/:gfv.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec15 = (0, _Methods.httpGet)("/unmap", _Results.httpReturn.PlainText), _dec16 = (0, _Methods.httpGet)("/unmap/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec17 = (0, _Methods.httpGet)("/map", _Results.httpReturn.PlainText), _dec18 = (0, _Methods.httpGet)("/map/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec19 = (0, _Methods.httpGet)("/patch", _Results.httpReturn.PlainText), _dec20 = (0, _Methods.httpGet)("/patch/:gfv.xslt", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), (_class = class BuildServerBackendResourcesController extends _SingletonController.SingletonController {
|
|
47
47
|
constructor(allFarmConfig, flangNormalizationSourcesProvider) {
|
|
48
48
|
super();
|
|
49
49
|
this.allFarmConfig = void 0;
|
|
@@ -57,6 +57,14 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
|
|
|
57
57
|
}, 5000);
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
async getAllGfvs() {
|
|
61
|
+
const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*", {
|
|
62
|
+
cwd: path.join(i.farmDirectory)
|
|
63
|
+
}));
|
|
64
|
+
const gfvs = (await Promise.all(promises)).flat();
|
|
65
|
+
return gfvs.map(x => x.replace("forms/", ""));
|
|
66
|
+
}
|
|
67
|
+
|
|
60
68
|
async getAllPicklists() {
|
|
61
69
|
const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("picklists/*", {
|
|
62
70
|
cwd: path.join(i.farmDirectory)
|
|
@@ -242,6 +250,6 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
|
|
|
242
250
|
throw Error(`not found unmap ${gfv}.xml`);
|
|
243
251
|
}
|
|
244
252
|
|
|
245
|
-
}, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "
|
|
253
|
+
}, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllGfvs", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllGfvs"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPicklists", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPicklists", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllConvertersFiles", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getAllConvertersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getConverterFile", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getConverterFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllSchemasFiles", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getAllSchemasFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormSchemas", [_dec7], Object.getOwnPropertyDescriptor(_class.prototype, "getFormSchemas"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllFormPresentations", [_dec8], Object.getOwnPropertyDescriptor(_class.prototype, "getAllFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormPresentations", [_dec9], Object.getOwnPropertyDescriptor(_class.prototype, "getFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllNormalizeFiles", [_dec10], Object.getOwnPropertyDescriptor(_class.prototype, "getAllNormalizeFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getNormalizeFile", [_dec11], Object.getOwnPropertyDescriptor(_class.prototype, "getNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFLangNormalizeFile", [_dec12], Object.getOwnPropertyDescriptor(_class.prototype, "getFLangNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllAttachmentPathsFileNames", [_dec13], Object.getOwnPropertyDescriptor(_class.prototype, "getAllAttachmentPathsFileNames"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAttachmentPathFile", [_dec14], Object.getOwnPropertyDescriptor(_class.prototype, "getAttachmentPathFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllUnmapFiles", [_dec15], Object.getOwnPropertyDescriptor(_class.prototype, "getAllUnmapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getUnmapFile", [_dec16], Object.getOwnPropertyDescriptor(_class.prototype, "getUnmapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllMapFiles", [_dec17], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getMapFile", [_dec18], Object.getOwnPropertyDescriptor(_class.prototype, "getMapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPatchFiles", [_dec19], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPatchFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPatchFile", [_dec20], Object.getOwnPropertyDescriptor(_class.prototype, "getPatchFile"), _class.prototype)), _class));
|
|
246
254
|
exports.BuildServerBackendResourcesController = BuildServerBackendResourcesController;
|
|
247
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiUGxhaW5UZXh0IiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXIiLCJnZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIiwiYWxsU2NoZW1hc0ZpbGVzIiwicmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCIsInVuZGVmaW5lZCIsImdldEFsbFBpY2tsaXN0cyIsInByb21pc2VzIiwibWFwIiwiaSIsImN3ZCIsInBhdGgiLCJqb2luIiwiZmFybURpcmVjdG9yeSIsImZpbGVzIiwiUHJvbWlzZSIsImFsbCIsImZsYXQiLCJ4IiwicmVwbGFjZSIsImdldFBpY2tsaXN0cyIsInBpY2tsaXN0RmlsZW5hbWUiLCJhbGxGaWxlUGF0aCIsInBhdGhGaWxlIiwiRXJyb3IiLCJnZXRBbGxDb252ZXJ0ZXJzRmlsZXMiLCJiYXNlbmFtZSIsImdldENvbnZlcnRlckZpbGUiLCJmaWxlbmFtZSIsImFsbEZhcm1EaXJlY3RvcmllcyIsImZvcm1EaXJQYXRoIiwicHRoIiwicG9zc2libGVGaWxlUGF0aHMiLCJnZnYiLCJmaWxlUGF0aCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsU2NoZW1hc0ZpbGVzIiwiZ2V0Rm9ybVNjaGVtYXMiLCJmaWxlUGF0dGVybiIsIlBhdGhQYXR0ZXJuIiwiZXhlY1N0cmljdCIsImZpbGUiLCJnZXRBbGxGb3JtUHJlc2VudGF0aW9ucyIsImdldEZvcm1QcmVzZW50YXRpb25zIiwiZ2V0QWxsTm9ybWFsaXplRmlsZXMiLCJmbGFuZ0ZpbGVzIiwiZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcyIsImdldE5vcm1hbGl6ZUZpbGUiLCJnZXRGTGFuZ05vcm1hbGl6ZUZpbGUiLCJTdHJlYW1SZXN1bHQiLCJnZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQiLCJnZXRBbGxBdHRhY2htZW50UGF0aHNGaWxlTmFtZXMiLCJnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcyIsImdldEF0dGFjaG1lbnRQYXRoRmlsZSIsImdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50IiwiZ2V0QWxsVW5tYXBGaWxlcyIsImdldFVubWFwRmlsZSIsImdldEFsbE1hcEZpbGVzIiwiZ2V0TWFwRmlsZSIsImdldEFsbFBhdGNoRmlsZXMiLCJnZXRQYXRjaEZpbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0lBSWFBLHFDLFdBbUJSLHNCQUFRLFlBQVIsRUFBc0JDLG9CQUFXQyxTQUFqQyxDLFVBT0Esc0JBQ0csOEJBREgsRUFFR0Qsb0JBQVdFLGNBQVgsQ0FBMEIsa0JBQTFCLENBRkgsRUFHRywwQkFBYSxrQkFBYixFQUFpQ0MsaUJBQVNDLE1BQTFDLENBSEgsQyxVQWVBLHNCQUFRLGFBQVIsRUFBdUJKLG9CQUFXQyxTQUFsQyxDLFVBU0Esc0JBQVEsdUJBQVIsRUFBaUNELG9CQUFXSyxNQUE1QyxFQUFvRCwwQkFBYSxVQUFiLEVBQXlCRixpQkFBU0MsTUFBbEMsQ0FBcEQsQyxVQWdCQSxzQkFBUSxVQUFSLEVBQW9CSixvQkFBV0MsU0FBL0IsQyxVQWFBLHNCQUFRLG9CQUFSLEVBQThCRCxvQkFBV0ssTUFBekMsRUFBaUQsMEJBQWEsVUFBYixFQUF5QkYsaUJB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LEVBQTJCLE9BQTNCLEVBQW9Db0IsR0FBcEMsRUFBeUMsT0FBekMsRUFBbUQsR0FBRUEsR0FBSSxPQUF6RCxDQURnQixDQUFwQjs7QUFHQSxTQUFLLE1BQU1WLFFBQVgsSUFBdUJELFdBQXZCLEVBQW9DO0FBQ2hDLFVBQUksTUFBTSx5QkFBV0MsUUFBWCxDQUFWLEVBQWdDO0FBQzVCLGVBQU8sSUFBSVkscUNBQUosQ0FBcUJaLFFBQXJCLENBQVA7QUFDSDtBQUNKOztBQUNELFVBQU1DLEtBQUssQ0FBRSxtQkFBa0JTLEdBQUksTUFBeEIsQ0FBWDtBQUNIOztBQXZOMEUsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0sIFJlYWRTdHJlYW0gfSBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IF8sIHsgZGVib3VuY2UgfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0V4dHJhY3RHZnZzRnJvbUZpbGVOYW1lXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9Gc1V0aWxzXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHtcbiAgICBGaWxlU3RyZWFtUmVzdWx0LFxuICAgIFN0cmVhbVJlc3VsdCxcbn0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgUGF0aFBhdHRlcm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9QYXRoUGF0dGVyblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciB9IGZyb20gXCIuL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyIGV4dGVuZHMgU2luZ2xldG9uQ29udHJvbGxlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyOiBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlcjtcblxuICAgIHByaXZhdGUgYWxsU2NoZW1hc0ZpbGVzOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkOiAoKSA9PiB2b2lkO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW10sXG4gICAgICAgIGZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlcjogSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyID0gZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyO1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbFNjaGVtYXNGaWxlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSwgNTAwMCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGlja2xpc3RzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQaWNrbGlzdHMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gZ2xvYkFzeW5jKFwicGlja2xpc3RzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJwaWNrbGlzdHMvXCIsIFwiXCIpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi9waWNrbGlzdHMvOnBpY2tsaXN0RmlsZW5hbWVcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2pzb25cIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInBpY2tsaXN0RmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGlja2xpc3RzKHBpY2tsaXN0RmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8UmVhZFN0cmVhbT4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiLCBwaWNrbGlzdEZpbGVuYW1lKSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWFkU3RyZWFtKHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHBpY2tsaXN0RmlsZW5hbWUgJHtwaWNrbGlzdEZpbGVuYW1lfWApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbENvbnZlcnRlcnNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9jb252ZXJ0ZXJzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9jb252ZXJ0ZXJzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29udmVydGVyRmlsZShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZhcm1EaXJlY3RvcmllcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBpLmZhcm1EaXJlY3RvcnkpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBhbGxGYXJtRGlyZWN0b3JpZXMubWFwKHB0aCA9PiBwYXRoLmpvaW4ocHRoKSk7XG5cbiAgICAgICAgY29uc3QgcG9zc2libGVGaWxlUGF0aHMgPSBmb3JtRGlyUGF0aFxuICAgICAgICAgICAgLm1hcChpID0+IGV4dHJhY3RHZnZzRnJvbUZpbGVOYW1lKGZpbGVuYW1lKS5tYXAoZ2Z2ID0+IHBhdGguam9pbihpLCBgZm9ybXMvJHtnZnZ9L2NvbnZlcnRlcnMvJHtmaWxlbmFtZX1gKSkpXG4gICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIHBvc3NpYmxlRmlsZVBhdGhzKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3NjaGVtYXNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFNjaGVtYXNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy5hbGxTY2hlbWFzRmlsZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3NjaGVtYXMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgICAgIHRoaXMuYWxsU2NoZW1hc0ZpbGVzID0gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsU2NoZW1hc0ZpbGVzO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3NjaGVtYXMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU2NoZW1hcyhmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXR0ZXJuID0gbmV3IFBhdGhQYXR0ZXJuKFwie2dmdn0uKi54bWxcIik7XG4gICAgICAgIGNvbnN0IGdmdjogc3RyaW5nID0gZmlsZVBhdHRlcm4uZXhlY1N0cmljdChmaWxlbmFtZSkuZ2Z2ID8/IHJlamVjdCgpO1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZ1xuICAgICAgICAgICAgLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInNjaGVtYXNcIiwgZmlsZW5hbWUpKVxuICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wcmVzZW50YXRpb25zXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtUHJlc2VudGF0aW9ucygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9wcmVzZW50YXRpb25zLmpzb25cIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4geC5yZXBsYWNlKFwiZm9ybXMvXCIsIFwiXCIpLnJlcGxhY2UoXCIvXCIsIFwiLlwiKSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wcmVzZW50YXRpb25zLzpnZnYucHJlc2VudGF0aW9ucy5qc29uXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVByZXNlbnRhdGlvbnMoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemVcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE5vcm1hbGl6ZUZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL25vcm1hbGl6ZS8qLnhtbFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpO1xuICAgICAgICByZXR1cm4gWy4uLmZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLCAuLi5mbGFuZ0ZpbGVzXS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZS86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcIm5vcm1hbGl6ZVwiLCBgJHtnZnZ9LnhtbGApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplLzpnZnYubm9ybWFsaXplXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RkxhbmdOb3JtYWxpemVGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudChnZnYpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9hdHRhY2htZW50cGF0aHNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRQYXRoc0ZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmbGFuZ0ZpbGVzID0gYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzKCk7XG4gICAgICAgIHJldHVybiBmbGFuZ0ZpbGVzLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvYXR0YWNobWVudHBhdGhzLzpnZnYuanNvblwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEF0dGFjaG1lbnRQYXRoRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudChnZnYpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi91bm1hcFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVW5tYXBGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi91bm1hcC8qLnhtbFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3VubWFwLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VW5tYXBGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJ1bm1hcFwiLCBgJHtnZnZ9LnhtbGApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWFwXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxNYXBGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9tYXAvKi54bWxcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tYXAvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRNYXBGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcIm1hcFwiLCBgJHtnZnZ9LnhtbGApKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wYXRjaFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGF0Y2hGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9wYXRjaC8qLnhzbHRcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wYXRjaC86Z2Z2LnhzbHRcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRQYXRjaEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInBhdGNoXCIsIGAke2dmdn0ueHNsdGApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxufVxuIl19
|
|
255
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiSnNvbiIsIlBsYWluVGV4dCIsIlN0cmVhbVdpdGhNaW1lIiwiaHR0cFR5cGUiLCJTdHJpbmciLCJTdHJlYW0iLCJTaW5nbGV0b25Db250cm9sbGVyIiwiY29uc3RydWN0b3IiLCJhbGxGYXJtQ29uZmlnIiwiZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyIiwiZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciIsImFsbFNjaGVtYXNGaWxlcyIsInJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQiLCJ1bmRlZmluZWQiLCJnZXRBbGxHZnZzIiwicHJvbWlzZXMiLCJtYXAiLCJpIiwiY3dkIiwicGF0aCIsImpvaW4iLCJmYXJtRGlyZWN0b3J5IiwiZ2Z2cyIsIlByb21pc2UiLCJhbGwiLCJmbGF0IiwieCIsInJlcGxhY2UiLCJnZXRBbGxQaWNrbGlzdHMiLCJmaWxlcyIsImdldFBpY2tsaXN0cyIsInBpY2tsaXN0RmlsZW5hbWUiLCJhbGxGaWxlUGF0aCIsInBhdGhGaWxlIiwiRXJyb3IiLCJnZXRBbGxDb252ZXJ0ZXJzRmlsZXMiLCJiYXNlbmFtZSIsImdldENvbnZlcnRlckZpbGUiLCJmaWxlbmFtZSIsImFsbEZhcm1EaXJlY3RvcmllcyIsImZvcm1EaXJQYXRoIiwicHRoIiwicG9zc2libGVGaWxlUGF0aHMiLCJnZnYiLCJmaWxlUGF0aCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsU2NoZW1hc0ZpbGVzIiwiZ2V0Rm9ybVNjaGVtYXMiLCJmaWxlUGF0dGVybiIsIlBhdGhQYXR0ZXJuIiwiZXhlY1N0cmljdCIsImZpbGUiLCJnZXRBbGxGb3JtUHJlc2VudGF0aW9ucyIsImdldEZvcm1QcmVzZW50YXRpb25zIiwiZ2V0QWxsTm9ybWFsaXplRmlsZXMiLCJmbGFuZ0ZpbGVzIiwiZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcyIsImdldE5vcm1hbGl6ZUZpbGUiLCJnZXRGTGFuZ05vcm1hbGl6ZUZpbGUiLCJTdHJlYW1SZXN1bHQiLCJnZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQiLCJnZXRBbGxBdHRhY2htZW50UGF0aHNGaWxlTmFtZXMiLCJnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcyIsImdldEF0dGFjaG1lbnRQYXRoRmlsZSIsImdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50IiwiZ2V0QWxsVW5tYXBGaWxlcyIsImdldFVubWFwRmlsZSIsImdldEFsbE1hcEZpbGVzIiwiZ2V0TWFwRmlsZSIsImdldEFsbFBhdGNoRmlsZXMiLCJnZXRQYXRjaEZpbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0lBSWFBLHFDLFdBbUJSLHNCQUFRLE9BQVIsRUFBaUJDLG9CQUFXQyxJQUE1QixDLFVBT0Esc0JBQVEsWUFBUixFQUFzQkQsb0JBQVdFLFNBQWpDLEMsVUFPQSxzQkFDRyw4QkFESCxFQUVHRixvQkFBV0csY0FBWCxDQUEwQixrQkFBMUIsQ0FGSCxFQUdHLDBCQUFhLGtCQUFiLEVBQWlDQyxpQkFBU0MsTUFBMUMsQ0FISCxDLFVBZUEsc0JBQVEsYUFBUixFQUF1Qkwsb0JBQVdFLFNBQWxDLEMsVUFTQSxzQkFBUSx1QkFBUixFQUFpQ0Ysb0JBQVdNLE1BQTVDLEVBQW9ELDBCQUFhLFVBQWIsRUFBeUJGLGlCQUFTQyxNQUFsQyxDQUFwRCxDLFVBZ0JBLHNCQUFRLFVBQVIsRUFBb0JMLG9CQUFXRSxTQUEvQixD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QUNyQyx3QkFBVSxzQkFBVixFQUFrQztBQUFFQyxNQUFBQSxHQUFHLEVBQUVDLElBQUksQ0FBQ0MsSUFBTCxDQUFVSCxDQUFDLENBQUNJLGFBQVo7QUFBUCxLQUFsQyxDQURhLENBQWpCO0FBR0EsVUFBTVEsS0FBSyxHQUFHLENBQUMsTUFBTU4sT0FBTyxDQUFDQyxHQUFSLENBQVlULFFBQVosQ0FBUCxFQUE4QlUsSUFBOUIsRUFBZDtBQUNBLFdBQU9JLEtBQUssQ0FBQ2IsR0FBTixDQUFVVSxDQUFDLElBQUlQLElBQUksQ0FBQ2lCLFFBQUwsQ0FBY1YsQ0FBZCxDQUFmLEVBQWlDTixJQUFqQyxDQUFzQyxJQUF0QyxDQUFQO0FBQ0g7O0FBR3dCLFFBQVptRCxZQUFZLENBQUM1QixHQUFELEVBQXlDO0FBQzlELFVBQU1YLFdBQVcsR0FBRyxLQUFLeEIsYUFBTCxDQUFtQlEsR0FBbkIsQ0FBdUJDLENBQUMsSUFDeENFLElBQUksQ0FBQ0MsSUFBTCxDQUFVSCxDQUFDLENBQUNJLGFBQVosRUFBMkIsT0FBM0IsRUFBb0NzQixHQUFwQyxFQUF5QyxPQUF6QyxFQUFtRCxHQUFFQSxHQUFJLE9BQXpELENBRGdCLENBQXBCOztBQUdBLFNBQUssTUFBTVYsUUFBWCxJQUF1QkQsV0FBdkIsRUFBb0M7QUFDaEMsVUFBSSxNQUFNLHlCQUFXQyxRQUFYLENBQVYsRUFBZ0M7QUFDNUIsZUFBTyxJQUFJWSxxQ0FBSixDQUFxQlosUUFBckIsQ0FBUDtBQUNIO0FBQ0o7O0FBQ0QsVUFBTUMsS0FBSyxDQUFFLG1CQUFrQlMsR0FBSSxNQUF4QixDQUFYO0FBQ0g7O0FBOU4wRSxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSwgUmVhZFN0cmVhbSB9IGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgXywgeyBkZWJvdW5jZSB9IGZyb20gXCJsb2Rhc2hcIjtcbmltcG9ydCB7IEZhcm1Db25maWcgfSBmcm9tIFwiVG9vbHMvc3JjL0NhbmR5Q0xJXCI7XG5cbmltcG9ydCB7IGV4dHJhY3RHZnZzRnJvbUZpbGVOYW1lIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvRXh0cmFjdEdmdnNGcm9tRmlsZU5hbWVcIjtcbmltcG9ydCB7IGdsb2JBc3luYyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IGh0dHBHZXQgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTWV0aG9kc1wiO1xuaW1wb3J0IHsgTm90Rm91bmRXZWJFcnJvciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9Ob3RGb3VuZFdlYkVycm9yXCI7XG5pbXBvcnQgeyBodHRwVHlwZSwgaHR0cFVybFBhcmFtIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1BhcmFtc1wiO1xuaW1wb3J0IHsgaHR0cFJldHVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzXCI7XG5pbXBvcnQge1xuICAgIEZpbGVTdHJlYW1SZXN1bHQsXG4gICAgU3RyZWFtUmVzdWx0LFxufSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0cy9TdHJlYW1SZXN1bHRIYW5kbGVyXCI7XG5pbXBvcnQgeyBTaW5nbGV0b25Db250cm9sbGVyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9FeHByZXNzV3JhcHBlci9TaW5nbGV0b25Db250cm9sbGVyXCI7XG5pbXBvcnQgeyBQYXRoUGF0dGVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL1BhdGhQYXR0ZXJuXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5cbmltcG9ydCB7IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIH0gZnJvbSBcIi4vSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXI6IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyO1xuXG4gICAgcHJpdmF0ZSBhbGxTY2hlbWFzRmlsZXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQ6ICgpID0+IHZvaWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgICAgIGFsbEZhcm1Db25maWc6IEZhcm1Db25maWdbXSxcbiAgICAgICAgZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyOiBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgPSBmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuYWxsRmFybUNvbmZpZyA9IGFsbEZhcm1Db25maWc7XG4gICAgICAgIHRoaXMucmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsU2NoZW1hc0ZpbGVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9LCA1MDAwKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9nZnZzXCIsIGh0dHBSZXR1cm4uSnNvbilcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsR2Z2cygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IGdsb2JBc3luYyhcImZvcm1zLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pKTtcbiAgICAgICAgY29uc3QgZ2Z2cyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGdmdnMubWFwKHggPT4geC5yZXBsYWNlKFwiZm9ybXMvXCIsIFwiXCIpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9waWNrbGlzdHNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFBpY2tsaXN0cygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBnbG9iQXN5bmMoXCJwaWNrbGlzdHMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSkpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHgucmVwbGFjZShcInBpY2tsaXN0cy9cIiwgXCJcIikpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3BpY2tsaXN0cy86cGlja2xpc3RGaWxlbmFtZVwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vanNvblwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwicGlja2xpc3RGaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRQaWNrbGlzdHMocGlja2xpc3RGaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZWFkU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIsIHBpY2tsaXN0RmlsZW5hbWUpKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZVJlYWRTdHJlYW0ocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgcGlja2xpc3RGaWxlbmFtZSAke3BpY2tsaXN0RmlsZW5hbWV9YCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvY29udmVydGVyc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQ29udmVydGVyc0ZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL2NvbnZlcnRlcnMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRDb252ZXJ0ZXJGaWxlKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmFybURpcmVjdG9yaWVzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IGkuZmFybURpcmVjdG9yeSkuZmxhdCgpO1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IGFsbEZhcm1EaXJlY3Rvcmllcy5tYXAocHRoID0+IHBhdGguam9pbihwdGgpKTtcblxuICAgICAgICBjb25zdCBwb3NzaWJsZUZpbGVQYXRocyA9IGZvcm1EaXJQYXRoXG4gICAgICAgICAgICAubWFwKGkgPT4gZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUoZmlsZW5hbWUpLm1hcChnZnYgPT4gcGF0aC5qb2luKGksIGBmb3Jtcy8ke2dmdn0vY29udmVydGVycy8ke2ZpbGVuYW1lfWApKSlcbiAgICAgICAgICAgIC5mbGF0KCk7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgcG9zc2libGVGaWxlUGF0aHMpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvc2NoZW1hc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsU2NoZW1hc0ZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLmFsbFNjaGVtYXNGaWxlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovc2NoZW1hcy8qXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICAgICAgdGhpcy5hbGxTY2hlbWFzRmlsZXMgPSBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxTY2hlbWFzRmlsZXM7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvc2NoZW1hcy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TY2hlbWFzKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdHRlcm4gPSBuZXcgUGF0aFBhdHRlcm4oXCJ7Z2Z2fS4qLnhtbFwiKTtcbiAgICAgICAgY29uc3QgZ2Z2OiBzdHJpbmcgPSBmaWxlUGF0dGVybi5leGVjU3RyaWN0KGZpbGVuYW1lKS5nZnYgPz8gcmVqZWN0KCk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnXG4gICAgICAgICAgICAubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwic2NoZW1hc1wiLCBmaWxlbmFtZSkpXG4gICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGUgb2YgZmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3ByZXNlbnRhdGlvbnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEZvcm1QcmVzZW50YXRpb25zKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3ByZXNlbnRhdGlvbnMuanNvblwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJmb3Jtcy9cIiwgXCJcIikucmVwbGFjZShcIi9cIiwgXCIuXCIpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3ByZXNlbnRhdGlvbnMvOmdmdi5wcmVzZW50YXRpb25zLmpzb25cIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtUHJlc2VudGF0aW9ucyhnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJwcmVzZW50YXRpb25zLmpzb25cIikpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZVwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTm9ybWFsaXplRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIGdsb2JBc3luYyhcImZvcm1zLyovbm9ybWFsaXplLyoueG1sXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZmxhbmdGaWxlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzKCk7XG4gICAgICAgIHJldHVybiBbLi4uZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSksIC4uLmZsYW5nRmlsZXNdLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Tm9ybWFsaXplRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwibm9ybWFsaXplXCIsIGAke2dmdn0ueG1sYClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemUvOmdmdi5ub3JtYWxpemVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGTGFuZ05vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2F0dGFjaG1lbnRwYXRoc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQXR0YWNobWVudFBhdGhzRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMoKTtcbiAgICAgICAgcmV0dXJuIGZsYW5nRmlsZXMuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9hdHRhY2htZW50cGF0aHMvOmdmdi5qc29uXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXR0YWNobWVudFBhdGhGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50KGdmdikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3VubWFwXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxVbm1hcEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3VubWFwLyoueG1sXCIsIHsgY3dkOiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5KSB9KVxuICAgICAgICApO1xuICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXAvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRVbm1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInVubWFwXCIsIGAke2dmdn0ueG1sYClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tYXBcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE1hcEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL21hcC8qLnhtbFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcC86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwibWFwXCIsIGAke2dmdn0ueG1sYCkpO1xuICAgICAgICBmb3IgKGNvbnN0IHBhdGhGaWxlIG9mIGFsbEZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhwYXRoRmlsZSkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQocGF0aEZpbGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IEVycm9yKGBub3QgZm91bmQgdW5tYXAgJHtnZnZ9LnhtbGApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQYXRjaEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3BhdGNoLyoueHNsdFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoLzpnZnYueHNsdFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldFBhdGNoRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwicGF0Y2hcIiwgYCR7Z2Z2fS54c2x0YClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG59XG4iXX0=
|