@kontur.candy/tools 2.115.0 → 2.122.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 +6 -0
- package/distr/Common/CandyApiClient/CandyApiClientContext.js +3 -3
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithCache.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/Decorators/DigestApiClientWithDebouncedBatching.js +1 -1
- package/distr/Common/CandyApiClient/DigestApiClient/React/DigestApiClientContext.js +3 -3
- package/distr/Common/Comparers.js +2 -2
- package/distr/Common/EmotionStorybookWorkaroundViaAliases.js +2 -2
- package/distr/Common/EndPoints.js +1 -1
- package/distr/Common/Errors.js +1 -1
- package/distr/Common/FormActionHandlers/ContextualActionNames.js +1 -1
- package/distr/Common/HttpClient/HttpClient.js +6 -2
- package/distr/Common/IterableUtils.js +7 -7
- package/distr/Common/ModelPath/ModelPath.js +3 -3
- package/distr/Common/NidusClient/INidusClient.js +1 -1
- package/distr/Common/NidusClient/NidusClientContext.js +4 -4
- package/distr/Common/NidusClient/NidusClientImpl.js +2 -2
- package/distr/Common/PathConstants.js +1 -1
- package/distr/Common/TypingUtils.js +12 -12
- package/distr/Common/UseAsyncEffect.js +2 -2
- package/distr/Tools/src/BuildTasks/ClientJS/BuildClientJsTask.js +4 -4
- package/distr/Tools/src/BuildTasks/ClientJS/IsWebpack5.js +2 -2
- package/distr/Tools/src/BuildTasks/Engine/AcquirePublishedEngineTask.js +2 -2
- package/distr/Tools/src/BuildTasks/Engine/BuildLocalEngineTask.js +7 -9
- package/distr/Tools/src/BuildTasks/EngineStructureUtils.js +3 -3
- package/distr/Tools/src/BuildTasks/Form/CompileForm.js +2 -2
- package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +2 -2
- package/distr/Tools/src/BuildTasks/Form/WriteAttachmentPathFiles.js +34 -0
- package/distr/Tools/src/BuildTasks/Form/WriteFLangNormalizationFiles.js +2 -2
- package/distr/Tools/src/BuildTasks/Generator/AcquireFormGenerator.js +1 -1
- package/distr/Tools/src/BuildTasks/Generator/AcquirePublishedGeneratorTask.js +2 -2
- package/distr/Tools/src/BuildTasks/Generator/BuildGeneratorFromSourcesTask.js +2 -2
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/GeneratorRequireUtils.js +2 -2
- package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/RequireUncached.js +1 -1
- package/distr/Tools/src/BuildTasks/PublishedVersionUtils.js +9 -9
- package/distr/Tools/src/BuildTasks/ResolveFormInfo.js +2 -2
- package/distr/Tools/src/BuildTasks/Version.js +4 -4
- package/distr/Tools/src/CLICommands/BuildForms/BuildCacheMode.js +1 -1
- package/distr/Tools/src/CLICommands/BuildForms/RunBuildForms.js +7 -4
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +19 -10
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +21 -4
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerClientJsFromResourcesController.js +2 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPrebuiltResourcesController.js +2 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerPublishedEngineController.js +2 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +2 -12
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/RunFormCompilationViaWebpackDevServer.js +6 -6
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackDevServerWorker/WebpackDevServerWorker.js +22 -6
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/WebpackInMemoryUtils/WebpackHybridFileSystem.js +2 -2
- package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/{IFLangNormalizationSourcesProvider.js → IGeneratedServerSideSourcesProvider.js} +0 -0
- package/distr/Tools/src/CLICommands/CommonOptions/BuildDebugOnlyOption.js +1 -1
- package/distr/Tools/src/CLICommands/DevBuild/RunDevBuild.js +5 -3
- package/distr/Tools/src/CLICommands/FormsHelper/FormsHelperController.js +2 -2
- package/distr/Tools/src/CLICommands/InitForm/EmptyFormTemplate/autocalc/{gfv}.calc.js +1 -1
- package/distr/Tools/src/CLICommands/InitForm/RunInitForm.js +2 -2
- package/distr/Tools/src/CLICommands/UpgradeForm/RunUpgradeForm.js +2 -2
- package/distr/Tools/src/Commons/ConsoleApplication/ConsoleApplication.js +3 -3
- package/distr/Tools/src/Commons/EventObject.js +2 -2
- package/distr/Tools/src/Commons/FsUtils.js +5 -4
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Actions.js +2 -2
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Params.js +4 -4
- package/distr/Tools/src/Commons/HttpServer/AttributeRouting/Results/StreamResultHandler.js +3 -3
- package/distr/Tools/src/Commons/Logging/InMemoryLogger.js +1 -1
- package/distr/Tools/src/Commons/Logging/StaticLogger.js +2 -2
- package/distr/Tools/src/Commons/Options/CommandBasedOptionsParser.js +4 -4
- package/distr/Tools/src/Commons/TasksCore/ChainableValueProducer.js +3 -3
- package/distr/Tools/src/FormWebpackConfiguration/CacheAssetsPlugin.js +3 -3
- package/distr/Tools/src/FormWebpackConfiguration/createFormWebpackConfiguration.js +4 -2
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js +31684 -33917
- package/distr/Tools/src/LocalServerFrontEndDist/enhancedClient.js.map +1 -1
- package/distr/Tools/src/LocalServerFrontEndDist/index.js +21341 -18263
- package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
- package/distr/Tools/src/SelfUpdate.js +3 -3
- package/package.json +65 -66
|
@@ -49,6 +49,8 @@ var _CacheAssetsPlugin = require("../../FormWebpackConfiguration/CacheAssetsPlug
|
|
|
49
49
|
|
|
50
50
|
var _TypingUtils = require("../../../../Common/TypingUtils");
|
|
51
51
|
|
|
52
|
+
var _WriteAttachmentPathFiles = require("../../BuildTasks/Form/WriteAttachmentPathFiles");
|
|
53
|
+
|
|
52
54
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
53
55
|
|
|
54
56
|
function getGeneratorVersion(generatorSource) {
|
|
@@ -109,7 +111,7 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
109
111
|
}
|
|
110
112
|
}, async (fi, y) => ({ ...fi,
|
|
111
113
|
generator: y
|
|
112
|
-
}), async
|
|
114
|
+
}), async fi => fi.generatorSource != undefined ? (0, _AcquireFormGenerator.getGeneratorSourceKey)(fi.generatorSource) : "NullFormGenerator").attach(async fi => {
|
|
113
115
|
if (fi.engineSource === undefined) {
|
|
114
116
|
return new _SingleValueProducer.SingleValueProducer("NullEngine");
|
|
115
117
|
}
|
|
@@ -120,7 +122,7 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
120
122
|
copiedEngines.add((0, _EngineSource.getEngineSourceKey)(fi.engineSource));
|
|
121
123
|
}
|
|
122
124
|
});
|
|
123
|
-
}, async fi => fi, async fi => fi.engineSource != undefined ? (0, _EngineSource.getEngineSourceKey)(fi.engineSource) : "NullEngine").attach(async
|
|
125
|
+
}, async fi => fi, async fi => fi.engineSource != undefined ? (0, _EngineSource.getEngineSourceKey)(fi.engineSource) : "NullEngine").attach(async fi => _Observe.Observe.files(fi.formSourcesPath, "../../controls/**/*", "schemas/**/*", "sugar/**/*", "controls/**/*", "autocalc/**/*", "helpers/**/*", "validations/**/*", "localization/**/*")).transform(async fi => {
|
|
124
126
|
let dependenciesHash;
|
|
125
127
|
|
|
126
128
|
if (fi.mode !== _ResolveFormInfo.FormBuildMode.NormalBuild) {
|
|
@@ -191,13 +193,14 @@ async function runBuildForms(context, options, farmDirectory, resourcesDirectory
|
|
|
191
193
|
farmDirectory: farmDirectory
|
|
192
194
|
} : undefined;
|
|
193
195
|
await (0, _WriteFLangNormalizationFiles.writeFLangNormalizationFiles)(fi.formName, farmDirectory, resourcesDirectory, undefined, buildCache, buildCacheOptions);
|
|
196
|
+
await (0, _WriteAttachmentPathFiles.writeAttachmentPathFiles)(fi.formName, farmDirectory, resourcesDirectory, undefined, buildCache, buildCacheOptions);
|
|
194
197
|
}).attach(async fi => {
|
|
195
198
|
if (fi.mode === _ResolveFormInfo.FormBuildMode.CopyLegacyPrebuiltResources) {
|
|
196
199
|
return _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "legacy-prebuilt"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("LEGACY-PREBUILT"), x, _path.default.join(resourcesDirectory)));
|
|
197
200
|
} else {
|
|
198
201
|
return new _SingleValueProducer.SingleValueProducer("");
|
|
199
202
|
}
|
|
200
|
-
}).attach(async
|
|
203
|
+
}).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "schemas"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("SCHEMAS"), x, _path.default.join(resourcesDirectory, "schemas")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "converters"), "*").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("CONVERTERS"), x, _path.default.join(resourcesDirectory, "converters")))).attach(async fi => _Observe.Observe.file(_path.default.join(fi.formSourcesPath, "presentations.json")).do(x => _FSTask.FSTask.copyFile((0, _StaticLogger.getLogger)().withPrefix("PRESENTATIONS"), x, _path.default.join(resourcesDirectory, "presentations", `${gfv}.presentations.json`)))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "normalize"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("NORMALIZE"), x, _path.default.join(resourcesDirectory, "normalize")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "patch"), "*.xslt").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("PATCH"), x, _path.default.join(resourcesDirectory, "patch")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "map"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("MAP"), x, _path.default.join(resourcesDirectory, "map")))).attach(async fi => _Observe.Observe.files(_path.default.join(fi.formSourcesPath, "unmap"), "*.xml").do(x => _FSTask.FSTask.copyRecursively((0, _StaticLogger.getLogger)().withPrefix("UNMAP"), x, _path.default.join(resourcesDirectory, "unmap")))).do(async fi => {
|
|
201
204
|
if (buildOptions.watch) {
|
|
202
205
|
_nodeNotifier.default.notify({
|
|
203
206
|
title: `${fi.formName}: сборка завершена`,
|
|
@@ -255,4 +258,4 @@ async function cleanTargetDirectory(resourcesDirectory, logger) {
|
|
|
255
258
|
await (0, _fsExtra.emptyDir)(resourcesDirectory);
|
|
256
259
|
logger.log("Resource directory clean");
|
|
257
260
|
}
|
|
258
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL1J1bkJ1aWxkRm9ybXMudHMiXSwibmFtZXMiOlsiZ2V0R2VuZXJhdG9yVmVyc2lvbiIsImdlbmVyYXRvclNvdXJjZSIsInR5cGUiLCJ2ZXJzaW9uIiwiRXJyb3IiLCJydW5CdWlsZEZvcm1zIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZW5naW5lRGlyZWN0b3J5IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImJ1aWxkT3B0aW9ucyIsInBpY2tMaXN0c0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJ3YXJuaW5nIiwidmFsdWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsInkiLCJnZW5lcmF0b3IiLCJoYXMiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImV4aXN0cyIsImxvZyIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZXh0cmFjdCIsImJ1aWxkQ2FjaGVPcHRpb25zIiwiZGVwc0hhc2giLCJmb3JtTmFtZSIsInRoZW1lcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsImNvcHlGaWxlIiwid2F0Y2giLCJub3RpZmllciIsIm5vdGlmeSIsInRpdGxlIiwibWVzc2FnZSIsImNsZWFuIiwiY2xlYW5UYXJnZXREaXJlY3RvcnkiLCJzdG9wT2JzZXJ2ZTEiLCJvYnNlcnZlIiwic3RvcE9ic2VydmUyIiwic3RvcE9ic2VydmUzIiwic3RvcE9ic2VydmU0Iiwid2FpdEZvckV4aXQiLCJzdGFydERhdGUiLCJEYXRlIiwibm93IiwiY3VycmVudFZhbHVlIiwiY29uc29sZSIsImNoYWxrIiwiZ3JlZW5CcmlnaHQiLCJ0b3RhbFRpbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUlBLFNBQVNBLG1CQUFULENBQTZCQyxlQUE3QixFQUF1RTtBQUNuRSxNQUFJQSxlQUFlLENBQUNDLElBQWhCLEtBQXlCLG9CQUE3QixFQUFtRDtBQUMvQyxXQUFP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QUNILFVBQU1NLFNBQVMsR0FBR0MsSUFBSSxDQUFDQyxHQUFMLEVBQWxCOztBQUNBLFFBQUk7QUFDQSxVQUFJM0YsT0FBTyxDQUFDaUYsS0FBWixFQUFtQjtBQUNmLGNBQU1DLG9CQUFvQixDQUFDaEYsa0JBQUQsRUFBcUJILE9BQU8sQ0FBQ2lCLE1BQTdCLENBQTFCO0FBQ0g7O0FBQ0QsWUFBTVQsY0FBYyxDQUFDcUYsWUFBckI7QUFDQSxZQUFNdEUsaUNBQWlDLENBQUNzRSxZQUF4QztBQUNBLFlBQU1wRSxvQkFBb0IsQ0FBQ29FLFlBQTNCO0FBQ0EsWUFBTTdELGVBQWUsQ0FBQzZELFlBQXRCLENBUEEsQ0FRQTs7QUFDQUMsTUFBQUEsT0FBTyxDQUFDNUIsR0FBUixDQUFZNkIsZUFBTUMsV0FBTixDQUFrQixlQUFsQixDQUFaO0FBQ0gsS0FWRCxTQVVVO0FBQ04sWUFBTUMsU0FBUyxHQUFHTixJQUFJLENBQUNDLEdBQUwsS0FBYUYsU0FBL0IsQ0FETSxDQUVOOztBQUNBSSxNQUFBQSxPQUFPLENBQUM1QixHQUFSLENBQWEsZUFBYyw0QkFBVStCLFNBQVYsQ0FBcUIsRUFBaEQ7QUFDSDtBQUNKO0FBQ0o7O0FBRUQsZUFBZWQsb0JBQWYsQ0FBb0NoRixrQkFBcEMsRUFBZ0VjLE1BQWhFLEVBQWdHO0FBQzVGQSxFQUFBQSxNQUFNLENBQUNpRCxHQUFQLENBQVcsa0NBQWtDL0Qsa0JBQTdDO0FBQ0EsUUFBTSx1QkFBU0Esa0JBQVQsQ0FBTjtBQUNBYyxFQUFBQSxNQUFNLENBQUNpRCxHQUFQLENBQVcsMEJBQVg7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCBjaGFsayBmcm9tIFwiY2hhbGtcIjtcbmltcG9ydCB7IGVtcHR5RGlyLCBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgbm90aWZpZXIgZnJvbSBcIm5vZGUtbm90aWZpZXJcIjtcblxuaW1wb3J0IHsgZW5naW5lRmFjdG9yeSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0VuZ2luZS9BY3F1aXJlRm9ybUVuZ2luZVwiO1xuaW1wb3J0IHsgZ2V0RW5naW5lU291cmNlS2V5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0VuZ2luZVNvdXJjZVwiO1xuaW1wb3J0IHsgY29tcGlsZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0NvbXBpbGVGb3JtXCI7XG5pbXBvcnQgeyBnZW5lcmF0ZUZvcm0gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL0dlbmVyYXRlRm9ybVwiO1xuaW1wb3J0IHsgTnVsbEZvcm1HZW5lcmF0b3IgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL051bGxGb3JtR2VuZXJhdG9yXCI7XG5pbXBvcnQgeyB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzXCI7XG5pbXBvcnQgeyBGU1Rhc2sgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9GU1Rhc2tcIjtcbmltcG9ydCB7XG4gICAgZ2VuZXJhdG9yRmFjdG9yeSxcbiAgICBHZW5lcmF0b3JTb3VyY2UsXG4gICAgZ2V0R2VuZXJhdG9yU291cmNlS2V5LFxufSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9HZW5lcmF0b3IvQWNxdWlyZUZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHJlc29sdmVFbmdpbmVWZXJzaW9uLCByZXNvbHZlR2VuZXJhdG9yVmVyc2lvbiB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL1B1Ymxpc2hlZFZlcnNpb25VdGlsc1wiO1xuaW1wb3J0IHsgRm9ybUJ1aWxkTW9kZSwgcmVzb2x2ZUZvcm1JbmZvIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyB3cml0ZUZvcm1NZXRhIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvV3JpdGVGb3JtTWV0YVwiO1xuaW1wb3J0IHsgQ29uc29sZUFwcGxpY2F0aW9uQ29udGV4dCB9IGZyb20gXCIuLi8uLi9Db21tb25zL0NvbnNvbGVBcHBsaWNhdGlvbi9Db25zb2xlQXBwbGljYXRpb25Db250ZXh0XCI7XG5pbXBvcnQgeyBGb3JtR2xvYnMgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Gb3JtR2xvYnNVdGlsc1wiO1xuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7IE9ic2VydmUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UYXNrc0NvcmUvT2JzZXJ2ZVwiO1xuaW1wb3J0IHsgU2luZ2xlVmFsdWVQcm9kdWNlciB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9TaW5nbGVWYWx1ZVByb2R1Y2VyXCI7XG5pbXBvcnQgeyBwcmludFRpbWUgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9UaW1pbmdVdGlsc1wiO1xuaW1wb3J0IHsgQnVpbGRDYWNoZSB9IGZyb20gXCIuLi8uLi9Gb3JtV2VicGFja0NvbmZpZ3VyYXRpb24vQ2FjaGVBc3NldHNQbHVnaW5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoYnVpbGRPcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzb3VyY2VzTnVTcGVjQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5KSwgXCIqLm51c3BlY1wiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5QnlNYXNrcyhnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTlVTUEVDXCIpLCB4LCBbXCIqLm51c3BlY1wiXSwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmRpcmVjdG9yeShwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiKSwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBnZnYgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuXG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIGZvcm0uanNvbiBmaWxlLiBUbyBpbmNsdWRlIHRoaXMgZm9ybSB0byBidWlsZCBwcm9jZXNzIHJlc3RhcnQgYnVpbGRgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS52YWx1ZSh7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwZ3JhZGVGb3JtSnNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlTGFzdFN0YWJsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVByZXJlbGVhc2VWZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZW5lcmF0b3JWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihmaS5lbmdpbmVWZXJzaW9uLCBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihuZXcgTnVsbEZvcm1HZW5lcmF0b3IoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTnVsbEZvcm1HZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJOdWxsRW5naW5lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZUZhY3RvcnkoZmkuZW5naW5lU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZSkuZG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29waWVkRW5naW5lcy5oYXMoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFTkdJTkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZEVuZ2luZXMuYWRkKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGZpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiAoZmkuZW5naW5lU291cmNlICE9IHVuZGVmaW5lZCA/IGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpIDogXCJOdWxsRW5naW5lXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSAhPT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBmaS5nZW5lcmF0b3Iuc3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2ggPSBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEdFTkVSQVRFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXRzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2ggPz8gXCJVbmRlZmluZWRSZXNvdXJjZXNIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkQ2FjaGUuZXh0cmFjdChmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZvcm1NZXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGZpLm1vZGUgPT09IEZvcm1CdWlsZE1vZGUuQ29weUxlZ2FjeVByZWJ1aWx0UmVzb3VyY2VzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImxlZ2FjeS1wcmVidWlsdFwiKSwgXCIqXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTEVHQUNZLVBSRUJVSUxUXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJcIik7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInNjaGVtYXNcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiU0NIRU1BU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwic2NoZW1hc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcImNvbnZlcnRlcnNcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJDT05WRVJURVJTXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJjb252ZXJ0ZXJzXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJwcmVzZW50YXRpb25zLmpzb25cIikpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5RmlsZShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiUFJFU0VOVEFUSU9OU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHJlc2VudGF0aW9uc1wiLCBgJHtnZnZ9LnByZXNlbnRhdGlvbnMuanNvbmApXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwibm9ybWFsaXplXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIk5PUk1BTElaRVwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibm9ybWFsaXplXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicGF0Y2hcIiksIFwiKi54c2x0XCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBBVENIXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwYXRjaFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJNQVBcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwibWFwXCIpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInVubWFwXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlVOTUFQXCIpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJ1bm1hcFwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChidWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWVyLm5vdGlmeSh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6IGAke2ZpLmZvcm1OYW1lfTog0YHQsdC+0YDQutCwINC30LDQstC10YDRiNC10L3QsGAsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEVuZ2luZTogJHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlID09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcIltOb0VuZ2luZV1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBmaS5lbmdpbmVTb3VyY2UudHlwZSA9PT0gXCJMb2NhbEVuZ2luZVNvdXJjZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBcImxvY2FsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmkuZW5naW5lU291cmNlLnZlcnNpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9YCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICApO1xuXG4gICAgaWYgKGJ1aWxkT3B0aW9ucy53YXRjaCkge1xuICAgICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUxID0gYXdhaXQgcGlja0xpc3RzQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTIgPSBhd2FpdCBidWlsZEZvcm1zQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTMgPSBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBjb25zdCBzdG9wT2JzZXJ2ZTQgPSBhd2FpdCByZXNvdXJjZXNOdVNwZWNDaGFpbi5vYnNlcnZlKCk7XG4gICAgICAgIGF3YWl0IGNvbnRleHQud2FpdEZvckV4aXQoKTtcbiAgICAgICAgaWYgKHN0b3BPYnNlcnZlMyAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTQgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTQoKTtcbiAgICAgICAgfVxuICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTIoKTtcbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUxKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3Qgc3RhcnREYXRlID0gRGF0ZS5ub3coKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGlmIChvcHRpb25zLmNsZWFuKSB7XG4gICAgICAgICAgICAgICAgYXdhaXQgY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5LCBjb250ZXh0LmxvZ2dlcik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBhd2FpdCBwaWNrTGlzdHNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICBhd2FpdCBzdGF0aWNSZXNvdXJjZXNGb3JQcm9kdWN0aW9uQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgcmVzb3VyY2VzTnVTcGVjQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3Jtc0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhjaGFsay5ncmVlbkJyaWdodChcIkJ1aWxkIHN1Y2Nlc3NcIikpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgY29uc3QgdG90YWxUaW1lID0gRGF0ZS5ub3coKSAtIHN0YXJ0RGF0ZTtcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhgVG90YWwgdGltZTogJHtwcmludFRpbWUodG90YWxUaW1lKX1gKTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gY2xlYW5UYXJnZXREaXJlY3RvcnkocmVzb3VyY2VzRGlyZWN0b3J5OiBzdHJpbmcsIGxvZ2dlcjogSUxvZ2dlcik6IFByb21pc2U8dm9pZD4ge1xuICAgIGxvZ2dlci5sb2coXCJDbGVhbmluZyByZXNvdXJjZSBkaXJlY3RvcnkuIFwiICsgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBhd2FpdCBlbXB0eURpcihyZXNvdXJjZXNEaXJlY3RvcnkpO1xuICAgIGxvZ2dlci5sb2coXCJSZXNvdXJjZSBkaXJlY3RvcnkgY2xlYW5cIik7XG59XG4iXX0=
|
|
261
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZEZvcm1zL1J1bkJ1aWxkRm9ybXMudHMiXSwibmFtZXMiOlsiZ2V0R2VuZXJhdG9yVmVyc2lvbiIsImdlbmVyYXRvclNvdXJjZSIsInR5cGUiLCJ2ZXJzaW9uIiwiRXJyb3IiLCJydW5CdWlsZEZvcm1zIiwiY29udGV4dCIsIm9wdGlvbnMiLCJmYXJtRGlyZWN0b3J5IiwicmVzb3VyY2VzRGlyZWN0b3J5IiwiZW5naW5lRGlyZWN0b3J5IiwiY2FuZHlNb2R1bGVzRGlyZWN0b3J5IiwiaGxGYXJtRGlyZWN0b3J5UGF0aCIsImJ1aWxkT3B0aW9ucyIsInBpY2tMaXN0c0NoYWluIiwiT2JzZXJ2ZSIsImZpbGVzIiwicGF0aCIsImpvaW4iLCJkbyIsIngiLCJGU1Rhc2siLCJjb3B5UmVjdXJzaXZlbHkiLCJsb2dnZXIiLCJ3aXRoUHJlZml4IiwiZm9ybUdsb2JzIiwiRm9ybUdsb2JzIiwidmFsaWRhdGVHbG9icyIsInJlc29sdmVTcGVjaWZpZXJzIiwic3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluIiwiX19kaXJuYW1lIiwicmVzb3VyY2VzTnVTcGVjQ2hhaW4iLCJjb3B5QnlNYXNrcyIsImNvcGllZEVuZ2luZXMiLCJTZXQiLCJidWlsZENhY2hlIiwiQnVpbGRDYWNoZSIsImJ1aWxkQ2FjaGVNb2RlIiwiYnVpbGRGb3Jtc0NoYWluIiwiZGlyZWN0b3J5Iiwic3BsaXRUb1BhcmFsbGVsQ2hhaW5zIiwiZ2Z2IiwiZm9ybURpclBhdGgiLCJ3YXJuaW5nIiwidmFsdWUiLCJmaWxlIiwidHJhbnNmb3JtIiwiZm9ybUpzb25GaWxlIiwidXBncmFkZUZvcm1Kc29uIiwidXNlTGFzdFN0YWJsZVZlcnNpb24iLCJ1c2VQcmVyZWxlYXNlVmVyc2lvbiIsImZpIiwibW9kZSIsIkZvcm1CdWlsZE1vZGUiLCJOb3JtYWxCdWlsZCIsImdlbmVyYXRvclZlcnNpb24iLCJ1bmRlZmluZWQiLCJlbmdpbmVWZXJzaW9uIiwiZW5naW5lU291cmNlIiwiYXR0YWNoIiwiU2luZ2xlVmFsdWVQcm9kdWNlciIsIk51bGxGb3JtR2VuZXJhdG9yIiwidXNlVmVyc2lvbkZyb21DYWNoZSIsInkiLCJnZW5lcmF0b3IiLCJoYXMiLCJhZGQiLCJmb3JtU291cmNlc1BhdGgiLCJkZXBlbmRlbmNpZXNIYXNoIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImV4aXN0cyIsImxvZyIsInNraXBDb2RlUmVmb3JtYXR0aW5nIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJyZXNvdXJjZXNIYXNoIiwiZXh0cmFjdCIsImJ1aWxkQ2FjaGVPcHRpb25zIiwiZGVwc0hhc2giLCJmb3JtTmFtZSIsInRoZW1lcyIsIkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcyIsImNvcHlGaWxlIiwid2F0Y2giLCJub3RpZmllciIsIm5vdGlmeSIsInRpdGxlIiwibWVzc2FnZSIsImNsZWFuIiwiY2xlYW5UYXJnZXREaXJlY3RvcnkiLCJzdG9wT2JzZXJ2ZTEiLCJvYnNlcnZlIiwic3RvcE9ic2VydmUyIiwic3RvcE9ic2VydmUzIiwic3RvcE9ic2VydmU0Iiwid2FpdEZvckV4aXQiLCJzdGFydERhdGUiLCJEYXRlIiwibm93IiwiY3VycmVudFZhbHVlIiwiY29uc29sZSIsImNoYWxrIiwiZ3JlZW5CcmlnaHQiLCJ0b3RhbFRpbWUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFLQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUlBLFNBQVNBLG1CQUFULENBQTZCQyxlQUE3QixFQUF1RTtBQUNuRSxNQUFJQSxlQUFlLENBQUNDLElBQWhCLEtBQXlCLG9CQUE3QixFQUFtRDtBQUMvQyxXQUFPRCxlQUFlLENBQUNFLE9BQXZCO0FBQ0gsR0FGRCxNQUVPO0FBQ0gsVUFBTSxJQUFJQyxLQUFKLENBQVUscUJBQVYsQ0FBTjtBQUNIO0FBQ0o7O0FBRU0sZUFBZUMsYUFBZixDQUNIQyxPQURHLEVBRUhDLE9BRkcsRUFHSEMsYUFIRyxFQUlIQyxrQkFKRyxFQUtIQyxlQUxHLEVBTUhDLHFCQU5HLEVBT0hDLG1CQVBHLEVBUVU7QUFDYixRQUFNQyxZQUFZLEdBQUdOLE9BQXJCOztBQUVBLFFBQU1PLGNBQWMsR0FBR0MsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVVixhQUFWLEVBQXlCLFdBQXpCLENBQWQsRUFBcUQsUUFBckQsRUFBK0RXLEVBQS9ELENBQWtFQyxDQUFDLElBQ3RGQyxlQUFPQyxlQUFQLENBQXVCaEIsT0FBTyxDQUFDaUIsTUFBUixDQUFlQyxVQUFmLENBQTBCLFdBQTFCLENBQXZCLEVBQStESixDQUEvRCxFQUFrRUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixXQUE5QixDQUFsRSxDQURtQixDQUF2Qjs7QUFJQSxRQUFNZ0IsU0FBUyxHQUFHLE1BQU1DLDBCQUFVQyxhQUFWLENBQ3BCLE1BQU1ELDBCQUFVRSxpQkFBVixDQUE0QmYsWUFBWSxDQUFDWSxTQUF6QyxFQUFvRGpCLGFBQXBELENBRGMsRUFFcEJBLGFBRm9CLENBQXhCOztBQUtBLFFBQU1xQixpQ0FBaUMsR0FBR2QsaUJBQVFDLEtBQVIsQ0FDdENDLGNBQUtDLElBQUwsQ0FBVVksU0FBVixFQUFxQixJQUFyQixFQUEyQixJQUEzQixFQUFpQyxzQ0FBakMsQ0FEc0MsRUFFdEMsTUFGc0MsRUFHdEMsVUFIc0MsRUFJeENYLEVBSndDLENBSXJDQyxDQUFDLElBQ0ZDLGVBQU9DLGVBQVAsQ0FBdUIsK0JBQVlFLFVBQVosQ0FBdUIsU0FBdkIsQ0FBdkIsRUFBMERKLENBQTFELEVBQTZESCxjQUFLQyxJQUFMLENBQVVULGtCQUFWLEVBQThCLFFBQTlCLEVBQXdDLFNBQXhDLENBQTdELENBTHNDLENBQTFDOztBQVFBLFFBQU1zQixvQkFBb0IsR0FBR2hCLGlCQUFRQyxLQUFSLENBQWNDLGNBQUtDLElBQUwsQ0FBVVYsYUFBVixDQUFkLEVBQXdDLFVBQXhDLEVBQW9EVyxFQUFwRCxDQUF1REMsQ0FBQyxJQUNqRkMsZUFBT1csV0FBUCxDQUFtQiwrQkFBWVIsVUFBWixDQUF1QixRQUF2QixDQUFuQixFQUFxREosQ0FBckQsRUFBd0QsQ0FBQyxVQUFELENBQXhELEVBQXNFSCxjQUFLQyxJQUFMLENBQVVULGtCQUFWLENBQXRFLENBRHlCLENBQTdCOztBQUlBLFFBQU13QixhQUFhLEdBQUcsSUFBSUMsR0FBSixFQUF0QjtBQUVBLFFBQU1DLFVBQVUsR0FBRyxJQUFJQyw2QkFBSixDQUFlNUIsYUFBZixFQUE4QkQsT0FBTyxDQUFDOEIsY0FBdEMsQ0FBbkI7O0FBQ0EsUUFBTUMsZUFBZSxHQUFHdkIsaUJBQVF3QixTQUFSLENBQWtCdEIsY0FBS0MsSUFBTCxDQUFVVixhQUFWLEVBQXlCLE9BQXpCLENBQWxCLEVBQXFEaUIsU0FBckQsRUFBZ0VlLHFCQUFoRSxDQUNwQnBCLENBQUMsSUFBSUEsQ0FEZSxFQUVwQkEsQ0FBQyxJQUFJQSxDQUZlLEVBR3BCLE1BQU1xQixHQUFOLElBQWE7QUFDVCxVQUFNQyxXQUFXLEdBQUd6QixjQUFLQyxJQUFMLENBQVVWLGFBQVYsRUFBeUIsT0FBekIsRUFBa0NpQyxHQUFsQyxDQUFwQjs7QUFFQSxRQUFJLEVBQUUsTUFBTSx5QkFBV3hCLGNBQUtDLElBQUwsQ0FBVXdCLFdBQVYsRUFBdUIsV0FBdkIsQ0FBWCxDQUFSLENBQUosRUFBOEQ7QUFDMURwQyxNQUFBQSxPQUFPLENBQUNpQixNQUFSLENBQWVvQixPQUFmLENBQ0ssUUFBT0YsR0FBSSxvRkFEaEI7QUFHQSxhQUFPMUIsaUJBQVE2QixLQUFSLENBQWMsRUFBZCxDQUFQO0FBQ0g7O0FBRUQsV0FBTzdCLGlCQUFROEIsSUFBUixDQUFhNUIsY0FBS0MsSUFBTCxDQUFVd0IsV0FBVixFQUF1QixXQUF2QixDQUFiLEVBQ0ZJLFNBREUsQ0FDUUMsWUFBWSxJQUNuQixzQ0FDSUEsWUFESixFQUVJTCxXQUZKLEVBR0loQyxlQUhKLEVBSUlKLE9BQU8sQ0FBQ2lCLE1BQVIsQ0FBZUMsVUFBZixDQUEyQixRQUFPaUIsR0FBSSxFQUF0QyxDQUpKLEVBS0lsQyxPQUFPLENBQUN5QyxlQUxaLEVBTUl6QyxPQUFPLENBQUMwQyxvQkFOWixFQU9JMUMsT0FBTyxDQUFDMkMsb0JBUFosQ0FGRCxFQVlGSixTQVpFLENBWVEsTUFBTUssRUFBTixJQUFZO0FBQ25CLFVBQUlBLEVBQUUsQ0FBQ0MsSUFBSCxLQUFZQywrQkFBY0MsV0FBOUIsRUFBMkM7QUFDdkMsWUFBSUgsRUFBRSxDQUFDSSxnQkFBSCxJQUF1QkMsU0FBM0IsRUFBc0M7QUFDbEMsZ0JBQU0sSUFBSXBELEtBQUosQ0FBVSxnQ0FBVixDQUFOO0FBQ0g7O0FBQ0QsWUFBSStDLEVBQUUsQ0FBQ00sYUFBSCxJQUFvQkQsU0FBeEIsRUFBbUM7QUFDL0IsZ0JBQU0sSUFBSXBELEtBQUosQ0FBVSw2QkFBVixDQUFOO0FBQ0g7O0FBQ0QsZUFBTyxFQUNILEdBQUcrQyxFQURBO0FBRUhsRCxVQUFBQSxlQUFlLEVBQUUsTUFBTSxvREFDbkJrRCxFQUFFLENBQUNJLGdCQURnQixFQUVuQmpELE9BQU8sQ0FBQ2lCLE1BQVIsQ0FBZUMsVUFBZixDQUEwQmlCLEdBQTFCLENBRm1CLENBRnBCO0FBTUhpQixVQUFBQSxZQUFZLEVBQUUsTUFBTSxpREFBcUJQLEVBQUUsQ0FBQ00sYUFBeEIsRUFBdUNuRCxPQUFPLENBQUNpQixNQUFSLENBQWVDLFVBQWYsQ0FBMEJpQixHQUExQixDQUF2QztBQU5qQixTQUFQO0FBUUgsT0FmRCxNQWVPO0FBQ0gsZUFBTyxFQUNILEdBQUdVLEVBREE7QUFFSGxELFVBQUFBLGVBQWUsRUFBRXVELFNBRmQ7QUFHSEUsVUFBQUEsWUFBWSxFQUFFRjtBQUhYLFNBQVA7QUFLSDtBQUNKLEtBbkNFLEVBb0NGRyxNQXBDRSxDQXFDQyxNQUFNUixFQUFOLElBQVk7QUFDUixVQUFJQSxFQUFFLENBQUNsRCxlQUFILElBQXNCdUQsU0FBMUIsRUFBcUM7QUFDakMsZUFBTyxJQUFJSSx3Q0FBSixDQUF3QixJQUFJQyxvQ0FBSixFQUF4QixDQUFQO0FBQ0gsT0FGRCxNQUVPO0FBQ0gsZUFBTyw0Q0FDSFYsRUFBRSxDQUFDbEQsZUFEQSxFQUVIVSxxQkFGRyxFQUdISixPQUFPLENBQUN1RCxtQkFITCxDQUFQO0FBS0g7QUFDSixLQS9DRixFQWdEQyxPQUFPWCxFQUFQLEVBQVdZLENBQVgsTUFBa0IsRUFBRSxHQUFHWixFQUFMO0FBQVNhLE1BQUFBLFNBQVMsRUFBRUQ7QUFBcEIsS0FBbEIsQ0FoREQsRUFpREMsTUFBTVosRUFBTixJQUNJQSxFQUFFLENBQUNsRCxlQUFILElBQXNCdUQsU0FBdEIsR0FDTSxpREFBc0JMLEVBQUUsQ0FBQ2xELGVBQXpCLENBRE4sR0FFTSxtQkFwRFgsRUFzREYwRCxNQXRERSxDQXVEQyxNQUFNUixFQUFOLElBQVk7QUFDUixVQUFJQSxFQUFFLENBQUNPLFlBQUgsS0FBb0JGLFNBQXhCLEVBQW1DO0FBQy9CLGVBQU8sSUFBSUksd0NBQUosQ0FBd0IsWUFBeEIsQ0FBUDtBQUNIOztBQUNELGFBQU8sc0NBQWNULEVBQUUsQ0FBQ08sWUFBakIsRUFBK0IvQyxxQkFBL0IsRUFBc0RKLE9BQU8sQ0FBQ3VELG1CQUE5RCxFQUFtRjNDLEVBQW5GLENBQ0gsTUFBTUMsQ0FBTixJQUFXO0FBQ1AsWUFBSSxDQUFDYSxhQUFhLENBQUNnQyxHQUFkLENBQWtCLHNDQUFtQmQsRUFBRSxDQUFDTyxZQUF0QixDQUFsQixDQUFMLEVBQTZEO0FBQ3pELGdCQUFNckMsZUFBT0MsZUFBUCxDQUNGLCtCQUFZRSxVQUFaLENBQXVCLFFBQXZCLENBREUsRUFFRkosQ0FGRSxFQUdGSCxjQUFLQyxJQUFMLENBQVVULGtCQUFWLEVBQThCLFFBQTlCLENBSEUsQ0FBTjtBQUtBd0IsVUFBQUEsYUFBYSxDQUFDaUMsR0FBZCxDQUFrQixzQ0FBbUJmLEVBQUUsQ0FBQ08sWUFBdEIsQ0FBbEI7QUFDSDtBQUNKLE9BVkUsQ0FBUDtBQVlILEtBdkVGLEVBd0VDLE1BQU1QLEVBQU4sSUFBWUEsRUF4RWIsRUF5RUMsTUFBTUEsRUFBTixJQUFhQSxFQUFFLENBQUNPLFlBQUgsSUFBbUJGLFNBQW5CLEdBQStCLHNDQUFtQkwsRUFBRSxDQUFDTyxZQUF0QixDQUEvQixHQUFxRSxZQXpFbkYsRUEyRUZDLE1BM0VFLENBMkVLLE1BQU1SLEVBQU4sSUFDSnBDLGlCQUFRQyxLQUFSLENBQ0ltQyxFQUFFLENBQUNnQixlQURQLEVBRUkscUJBRkosRUFHSSxjQUhKLEVBSUksWUFKSixFQUtJLGVBTEosRUFNSSxlQU5KLEVBT0ksY0FQSixFQVFJLGtCQVJKLEVBU0ksbUJBVEosQ0E1RUQsRUF3RkZyQixTQXhGRSxDQXdGUSxNQUFNSyxFQUFOLElBQVk7QUFDbkIsVUFBSWlCLGdCQUFKOztBQUNBLFVBQUlqQixFQUFFLENBQUNDLElBQUgsS0FBWUMsK0JBQWNDLFdBQTlCLEVBQTJDO0FBQ3ZDLGVBQU8sRUFDSCxHQUFHSCxFQURBO0FBRUhpQixVQUFBQSxnQkFBZ0IsRUFBRVo7QUFGZixTQUFQO0FBSUg7O0FBQ0QsVUFBSSxNQUFNTCxFQUFFLENBQUNhLFNBQUgsQ0FBYUssOEJBQWIsRUFBVixFQUF5RDtBQUNyREQsUUFBQUEsZ0JBQWdCLEdBQUcsTUFBTWpCLEVBQUUsQ0FBQ2EsU0FBSCxDQUFhTSxzQkFBYixDQUNyQjVCLFdBRHFCLEVBRXJCbEMsYUFGcUIsRUFHckJJLG1CQUhxQixDQUF6QjtBQUtIOztBQUNELGFBQU8sRUFDSCxHQUFHdUMsRUFEQTtBQUVIaUIsUUFBQUEsZ0JBQWdCLEVBQUVBO0FBRmYsT0FBUDtBQUlILEtBM0dFLEVBNEdGakQsRUE1R0UsQ0E0R0MsTUFBTWdDLEVBQU4sSUFBWTtBQUFBOztBQUNaLFVBQUlBLEVBQUUsQ0FBQ2xELGVBQUgsSUFBc0J1RCxTQUExQixFQUFxQztBQUNqQyxlQUFPQSxTQUFQO0FBQ0g7O0FBQ0QsVUFBSUwsRUFBRSxDQUFDaUIsZ0JBQUgsSUFBdUJaLFNBQTNCLEVBQXNDO0FBQ2xDLFlBQUksTUFBTXJCLFVBQVUsQ0FBQ29DLE1BQVgsQ0FBa0JwQixFQUFFLENBQUNsRCxlQUFyQixFQUFzQ3dDLEdBQXRDLEVBQTJDVSxFQUFFLENBQUNpQixnQkFBOUMsQ0FBVixFQUEyRTtBQUN2RTlELFVBQUFBLE9BQU8sQ0FBQ2lCLE1BQVIsQ0FBZUMsVUFBZixDQUEyQixZQUFXaUIsR0FBSSxFQUExQyxFQUE2QytCLEdBQTdDLENBQWlELCtCQUFqRDtBQUNBLGlCQUFPaEIsU0FBUDtBQUNIO0FBQ0o7O0FBQ0QsYUFBTyxnQ0FDSEwsRUFBRSxDQUFDZ0IsZUFEQSxFQUVIM0QsYUFGRyxFQUdISSxtQkFIRyxFQUlIdUMsRUFBRSxDQUFDYSxTQUpBLEVBS0hSLFNBTEcsRUFNSDtBQUNJaUIsUUFBQUEsb0JBQW9CLEVBQUVsRSxPQUFPLENBQUNtRSw2QkFEbEM7QUFFSUMsUUFBQUEsYUFBYSwwQkFBRXhCLEVBQUUsQ0FBQ2lCLGdCQUFMLHVFQUF5QjtBQUYxQyxPQU5HLENBQVA7QUFXSCxLQWpJRSxFQWtJRlQsTUFsSUUsQ0FrSUssTUFBTVIsRUFBTixJQUFZcEMsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVd0IsV0FBVixFQUF1QixNQUF2QixDQUFkLEVBQThDLE1BQTlDLENBbElqQixFQW1JRnZCLEVBbklFLENBbUlDLE1BQU1nQyxFQUFOLElBQVk7QUFBQTs7QUFDWixVQUFJQSxFQUFFLENBQUNsRCxlQUFILElBQXNCdUQsU0FBMUIsRUFBcUM7QUFDakM7QUFDSDs7QUFDRCxVQUFJTCxFQUFFLENBQUNpQixnQkFBSCxJQUF1QlosU0FBM0IsRUFBc0M7QUFDbEMsWUFBSSxNQUFNckIsVUFBVSxDQUFDb0MsTUFBWCxDQUFrQnBCLEVBQUUsQ0FBQ2xELGVBQXJCLEVBQXNDd0MsR0FBdEMsRUFBMkNVLEVBQUUsQ0FBQ2lCLGdCQUE5QyxDQUFWLEVBQTJFO0FBQ3ZFOUQsVUFBQUEsT0FBTyxDQUFDaUIsTUFBUixDQUFlQyxVQUFmLENBQTJCLFdBQVVpQixHQUFJLEVBQXpDLEVBQTRDK0IsR0FBNUMsQ0FBZ0QsZ0NBQWhEO0FBQ0EsZ0JBQU1yQyxVQUFVLENBQUN5QyxPQUFYLENBQW1CekIsRUFBRSxDQUFDbEQsZUFBdEIsRUFBdUN3QyxHQUF2QyxFQUE0Q1UsRUFBRSxDQUFDaUIsZ0JBQS9DLEVBQWlFM0Qsa0JBQWpFLENBQU47QUFDQTtBQUNIO0FBQ0o7O0FBQ0QsWUFBTW9FLGlCQUFpQixHQUNuQjFCLEVBQUUsQ0FBQ2lCLGdCQUFILElBQXVCWixTQUF2QixHQUNNO0FBQ0lzQixRQUFBQSxRQUFRLEVBQUUzQixFQUFFLENBQUNpQixnQkFEakI7QUFFSWIsUUFBQUEsZ0JBQWdCLEVBQUV2RCxtQkFBbUIsQ0FBQ21ELEVBQUUsQ0FBQ2xELGVBQUosQ0FGekM7QUFHSXdDLFFBQUFBLEdBQUcsRUFBRUEsR0FIVDtBQUlJVyxRQUFBQSxJQUFJLEVBQUU3QyxPQUFPLENBQUM4QixjQUpsQjtBQUtJN0IsUUFBQUEsYUFBYSxFQUFFQTtBQUxuQixPQUROLEdBUU1nRCxTQVRWO0FBVUEsWUFBTSw4QkFDRkwsRUFBRSxDQUFDNEIsUUFERCxFQUVGNUIsRUFBRSxDQUFDNkIsTUFGRCxFQUdGeEUsYUFIRSxFQUlGQyxrQkFKRSwyQkFLRjBDLEVBQUUsQ0FBQ2lCLGdCQUxELHlFQU1FLHlCQUNJLDRGQURKLENBTkYsRUFTRixLQVRFLEVBVUZaLFNBVkUsRUFXRnFCLGlCQVhFLENBQU47QUFhQSxZQUFNLGtDQUNGcEUsa0JBREUsRUFFRmdDLEdBRkUsRUFHRlUsRUFBRSxDQUFDTyxZQUhELDJCQUlGUCxFQUFFLENBQUNpQixnQkFKRCx5RUFLRSx5QkFDSSw0RkFESixDQUxGLEVBUUZqQixFQUFFLENBQUM2QixNQVJELEVBU0Y3QyxVQVRFLEVBVUYwQyxpQkFWRSxDQUFOO0FBWUgsS0FqTEUsRUFrTEYxRCxFQWxMRSxDQWtMQyxNQUFNZ0MsRUFBTixJQUFZO0FBQ1osVUFBSUEsRUFBRSxDQUFDbEQsZUFBSCxJQUFzQnVELFNBQTFCLEVBQXFDO0FBQ2pDO0FBQ0g7O0FBQ0QsWUFBTXFCLGlCQUFpQixHQUNuQjFCLEVBQUUsQ0FBQ2lCLGdCQUFILElBQXVCWixTQUF2QixHQUNNO0FBQ0lzQixRQUFBQSxRQUFRLEVBQUUzQixFQUFFLENBQUNpQixnQkFEakI7QUFFSWIsUUFBQUEsZ0JBQWdCLEVBQUV2RCxtQkFBbUIsQ0FBQ21ELEVBQUUsQ0FBQ2xELGVBQUosQ0FGekM7QUFHSXdDLFFBQUFBLEdBQUcsRUFBRUEsR0FIVDtBQUlJVyxRQUFBQSxJQUFJLEVBQUU3QyxPQUFPLENBQUM4QixjQUpsQjtBQUtJN0IsUUFBQUEsYUFBYSxFQUFFQTtBQUxuQixPQUROLEdBUU1nRCxTQVRWO0FBVUEsWUFBTSxnRUFDRkwsRUFBRSxDQUFDNEIsUUFERCxFQUVGdkUsYUFGRSxFQUdGQyxrQkFIRSxFQUlGK0MsU0FKRSxFQUtGckIsVUFMRSxFQU1GMEMsaUJBTkUsQ0FBTjtBQVFBLFlBQU0sd0RBQ0YxQixFQUFFLENBQUM0QixRQURELEVBRUZ2RSxhQUZFLEVBR0ZDLGtCQUhFLEVBSUYrQyxTQUpFLEVBS0ZyQixVQUxFLEVBTUYwQyxpQkFORSxDQUFOO0FBUUgsS0FoTkUsRUFpTkZsQixNQWpORSxDQWlOSyxNQUFNUixFQUFOLElBQVk7QUFDaEIsVUFBSUEsRUFBRSxDQUFDQyxJQUFILEtBQVlDLCtCQUFjNEIsMkJBQTlCLEVBQTJEO0FBQ3ZELGVBQU9sRSxpQkFBUUMsS0FBUixDQUFjQyxjQUFLQyxJQUFMLENBQVVpQyxFQUFFLENBQUNnQixlQUFiLEVBQThCLGlCQUE5QixDQUFkLEVBQWdFLEdBQWhFLEVBQXFFaEQsRUFBckUsQ0FBd0VDLENBQUMsSUFDNUVDLGVBQU9DLGVBQVAsQ0FDSSwrQkFBWUUsVUFBWixDQUF1QixpQkFBdkIsQ0FESixFQUVJSixDQUZKLEVBR0lILGNBQUtDLElBQUwsQ0FBVVQsa0JBQVYsQ0FISixDQURHLENBQVA7QUFPSCxPQVJELE1BUU87QUFDSCxlQUFPLElBQUltRCx3Q0FBSixDQUF3QixFQUF4QixDQUFQO0FBQ0g7QUFDSixLQTdORSxFQThORkQsTUE5TkUsQ0E4TkssTUFBTVIsRUFBTixJQUNKcEMsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVaUMsRUFBRSxDQUFDZ0IsZUFBYixFQUE4QixTQUE5QixDQUFkLEVBQXdELE9BQXhELEVBQWlFaEQsRUFBakUsQ0FBb0VDLENBQUMsSUFDakVDLGVBQU9DLGVBQVAsQ0FDSSwrQkFBWUUsVUFBWixDQUF1QixTQUF2QixDQURKLEVBRUlKLENBRkosRUFHSUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixTQUE5QixDQUhKLENBREosQ0EvTkQsRUF1T0ZrRCxNQXZPRSxDQXVPSyxNQUFNUixFQUFOLElBQ0pwQyxpQkFBUUMsS0FBUixDQUFjQyxjQUFLQyxJQUFMLENBQVVpQyxFQUFFLENBQUNnQixlQUFiLEVBQThCLFlBQTlCLENBQWQsRUFBMkQsR0FBM0QsRUFBZ0VoRCxFQUFoRSxDQUFtRUMsQ0FBQyxJQUNoRUMsZUFBT0MsZUFBUCxDQUNJLCtCQUFZRSxVQUFaLENBQXVCLFlBQXZCLENBREosRUFFSUosQ0FGSixFQUdJSCxjQUFLQyxJQUFMLENBQVVULGtCQUFWLEVBQThCLFlBQTlCLENBSEosQ0FESixDQXhPRCxFQWdQRmtELE1BaFBFLENBZ1BLLE1BQU1SLEVBQU4sSUFDSnBDLGlCQUFROEIsSUFBUixDQUFhNUIsY0FBS0MsSUFBTCxDQUFVaUMsRUFBRSxDQUFDZ0IsZUFBYixFQUE4QixvQkFBOUIsQ0FBYixFQUFrRWhELEVBQWxFLENBQXFFQyxDQUFDLElBQ2xFQyxlQUFPNkQsUUFBUCxDQUNJLCtCQUFZMUQsVUFBWixDQUF1QixlQUF2QixDQURKLEVBRUlKLENBRkosRUFHSUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixlQUE5QixFQUFnRCxHQUFFZ0MsR0FBSSxxQkFBdEQsQ0FISixDQURKLENBalBELEVBeVBGa0IsTUF6UEUsQ0F5UEssTUFBTVIsRUFBTixJQUNKcEMsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVaUMsRUFBRSxDQUFDZ0IsZUFBYixFQUE4QixXQUE5QixDQUFkLEVBQTBELE9BQTFELEVBQW1FaEQsRUFBbkUsQ0FBc0VDLENBQUMsSUFDbkVDLGVBQU9DLGVBQVAsQ0FDSSwrQkFBWUUsVUFBWixDQUF1QixXQUF2QixDQURKLEVBRUlKLENBRkosRUFHSUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixXQUE5QixDQUhKLENBREosQ0ExUEQsRUFrUUZrRCxNQWxRRSxDQWtRSyxNQUFNUixFQUFOLElBQ0pwQyxpQkFBUUMsS0FBUixDQUFjQyxjQUFLQyxJQUFMLENBQVVpQyxFQUFFLENBQUNnQixlQUFiLEVBQThCLE9BQTlCLENBQWQsRUFBc0QsUUFBdEQsRUFBZ0VoRCxFQUFoRSxDQUFtRUMsQ0FBQyxJQUNoRUMsZUFBT0MsZUFBUCxDQUNJLCtCQUFZRSxVQUFaLENBQXVCLE9BQXZCLENBREosRUFFSUosQ0FGSixFQUdJSCxjQUFLQyxJQUFMLENBQVVULGtCQUFWLEVBQThCLE9BQTlCLENBSEosQ0FESixDQW5RRCxFQTJRRmtELE1BM1FFLENBMlFLLE1BQU1SLEVBQU4sSUFDSnBDLGlCQUFRQyxLQUFSLENBQWNDLGNBQUtDLElBQUwsQ0FBVWlDLEVBQUUsQ0FBQ2dCLGVBQWIsRUFBOEIsS0FBOUIsQ0FBZCxFQUFvRCxPQUFwRCxFQUE2RGhELEVBQTdELENBQWdFQyxDQUFDLElBQzdEQyxlQUFPQyxlQUFQLENBQXVCLCtCQUFZRSxVQUFaLENBQXVCLEtBQXZCLENBQXZCLEVBQXNESixDQUF0RCxFQUF5REgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixLQUE5QixDQUF6RCxDQURKLENBNVFELEVBZ1JGa0QsTUFoUkUsQ0FnUkssTUFBTVIsRUFBTixJQUNKcEMsaUJBQVFDLEtBQVIsQ0FBY0MsY0FBS0MsSUFBTCxDQUFVaUMsRUFBRSxDQUFDZ0IsZUFBYixFQUE4QixPQUE5QixDQUFkLEVBQXNELE9BQXRELEVBQStEaEQsRUFBL0QsQ0FBa0VDLENBQUMsSUFDL0RDLGVBQU9DLGVBQVAsQ0FDSSwrQkFBWUUsVUFBWixDQUF1QixPQUF2QixDQURKLEVBRUlKLENBRkosRUFHSUgsY0FBS0MsSUFBTCxDQUFVVCxrQkFBVixFQUE4QixPQUE5QixDQUhKLENBREosQ0FqUkQsRUF5UkZVLEVBelJFLENBeVJDLE1BQU1nQyxFQUFOLElBQVk7QUFDWixVQUFJdEMsWUFBWSxDQUFDc0UsS0FBakIsRUFBd0I7QUFDcEJDLDhCQUFTQyxNQUFULENBQWdCO0FBQ1pDLFVBQUFBLEtBQUssRUFBRyxHQUFFbkMsRUFBRSxDQUFDNEIsUUFBUyxvQkFEVjtBQUVaUSxVQUFBQSxPQUFPLEVBQUcsV0FDTnBDLEVBQUUsQ0FBQ08sWUFBSCxJQUFtQkYsU0FBbkIsR0FDTSxZQUROLEdBRU1MLEVBQUUsQ0FBQ08sWUFBSCxDQUFnQnhELElBQWhCLEtBQXlCLG9CQUF6QixHQUNBLE9BREEsR0FFQWlELEVBQUUsQ0FBQ08sWUFBSCxDQUFnQnZELE9BQ3pCO0FBUlcsU0FBaEI7QUFVSDtBQUNKLEtBdFNFLENBQVA7QUF1U0gsR0FwVG1CLENBQXhCOztBQXVUQSxNQUFJVSxZQUFZLENBQUNzRSxLQUFqQixFQUF3QjtBQUNwQixRQUFJNUUsT0FBTyxDQUFDaUYsS0FBWixFQUFtQjtBQUNmLFlBQU1DLG9CQUFvQixDQUFDaEYsa0JBQUQsRUFBcUJILE9BQU8sQ0FBQ2lCLE1BQTdCLENBQTFCO0FBQ0g7O0FBQ0QsVUFBTW1FLFlBQVksR0FBRyxNQUFNNUUsY0FBYyxDQUFDNkUsT0FBZixFQUEzQjtBQUNBLFVBQU1DLFlBQVksR0FBRyxNQUFNdEQsZUFBZSxDQUFDcUQsT0FBaEIsRUFBM0I7QUFDQSxVQUFNRSxZQUFZLEdBQUcsTUFBTWhFLGlDQUFpQyxDQUFDOEQsT0FBbEMsRUFBM0I7QUFDQSxVQUFNRyxZQUFZLEdBQUcsTUFBTS9ELG9CQUFvQixDQUFDNEQsT0FBckIsRUFBM0I7QUFDQSxVQUFNckYsT0FBTyxDQUFDeUYsV0FBUixFQUFOOztBQUNBLFFBQUlGLFlBQVksSUFBSXJDLFNBQXBCLEVBQStCO0FBQzNCLFlBQU1xQyxZQUFZLEVBQWxCO0FBQ0g7O0FBQ0QsUUFBSUMsWUFBWSxJQUFJdEMsU0FBcEIsRUFBK0I7QUFDM0IsWUFBTXNDLFlBQVksRUFBbEI7QUFDSDs7QUFDRCxVQUFNRixZQUFZLEVBQWxCO0FBQ0EsVUFBTUYsWUFBWSxFQUFsQjtBQUNILEdBakJELE1BaUJPO0FBQ0gsVUFBTU0sU0FBUyxHQUFHQyxJQUFJLENBQUNDLEdBQUwsRUFBbEI7O0FBQ0EsUUFBSTtBQUNBLFVBQUkzRixPQUFPLENBQUNpRixLQUFaLEVBQW1CO0FBQ2YsY0FBTUMsb0JBQW9CLENBQUNoRixrQkFBRCxFQUFxQkgsT0FBTyxDQUFDaUIsTUFBN0IsQ0FBMUI7QUFDSDs7QUFDRCxZQUFNVCxjQUFjLENBQUNxRixZQUFyQjtBQUNBLFlBQU10RSxpQ0FBaUMsQ0FBQ3NFLFlBQXhDO0FBQ0EsWUFBTXBFLG9CQUFvQixDQUFDb0UsWUFBM0I7QUFDQSxZQUFNN0QsZUFBZSxDQUFDNkQsWUFBdEIsQ0FQQSxDQVFBOztBQUNBQyxNQUFBQSxPQUFPLENBQUM1QixHQUFSLENBQVk2QixlQUFNQyxXQUFOLENBQWtCLGVBQWxCLENBQVo7QUFDSCxLQVZELFNBVVU7QUFDTixZQUFNQyxTQUFTLEdBQUdOLElBQUksQ0FBQ0MsR0FBTCxLQUFhRixTQUEvQixDQURNLENBRU47O0FBQ0FJLE1BQUFBLE9BQU8sQ0FBQzVCLEdBQVIsQ0FBYSxlQUFjLDRCQUFVK0IsU0FBVixDQUFxQixFQUFoRDtBQUNIO0FBQ0o7QUFDSjs7QUFFRCxlQUFlZCxvQkFBZixDQUFvQ2hGLGtCQUFwQyxFQUFnRWMsTUFBaEUsRUFBZ0c7QUFDNUZBLEVBQUFBLE1BQU0sQ0FBQ2lELEdBQVAsQ0FBVyxrQ0FBa0MvRCxrQkFBN0M7QUFDQSxRQUFNLHVCQUFTQSxrQkFBVCxDQUFOO0FBQ0FjLEVBQUFBLE1BQU0sQ0FBQ2lELEdBQVAsQ0FBVywwQkFBWDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IGNoYWxrIGZyb20gXCJjaGFsa1wiO1xuaW1wb3J0IHsgZW1wdHlEaXIsIHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCBub3RpZmllciBmcm9tIFwibm9kZS1ub3RpZmllclwiO1xuXG5pbXBvcnQgeyBlbmdpbmVGYWN0b3J5IH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRW5naW5lL0FjcXVpcmVGb3JtRW5naW5lXCI7XG5pbXBvcnQgeyBnZXRFbmdpbmVTb3VyY2VLZXkgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9FbmdpbmUvRW5naW5lU291cmNlXCI7XG5pbXBvcnQgeyBjb21waWxlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vQ29tcGlsZUZvcm1cIjtcbmltcG9ydCB7IGdlbmVyYXRlRm9ybSB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vR2VuZXJhdGVGb3JtXCI7XG5pbXBvcnQgeyBOdWxsRm9ybUdlbmVyYXRvciB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0Zvcm0vTnVsbEZvcm1HZW5lcmF0b3JcIjtcbmltcG9ydCB7IHdyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXMgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Gb3JtL1dyaXRlRkxhbmdOb3JtYWxpemF0aW9uRmlsZXNcIjtcbmltcG9ydCB7IEZTVGFzayB9IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0ZTVGFza1wiO1xuaW1wb3J0IHtcbiAgICBnZW5lcmF0b3JGYWN0b3J5LFxuICAgIEdlbmVyYXRvclNvdXJjZSxcbiAgICBnZXRHZW5lcmF0b3JTb3VyY2VLZXksXG59IGZyb20gXCIuLi8uLi9CdWlsZFRhc2tzL0dlbmVyYXRvci9BY3F1aXJlRm9ybUdlbmVyYXRvclwiO1xuaW1wb3J0IHsgcmVzb2x2ZUVuZ2luZVZlcnNpb24sIHJlc29sdmVHZW5lcmF0b3JWZXJzaW9uIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvUHVibGlzaGVkVmVyc2lvblV0aWxzXCI7XG5pbXBvcnQgeyBGb3JtQnVpbGRNb2RlLCByZXNvbHZlRm9ybUluZm8gfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9SZXNvbHZlRm9ybUluZm9cIjtcbmltcG9ydCB7IHdyaXRlRm9ybU1ldGEgfSBmcm9tIFwiLi4vLi4vQnVpbGRUYXNrcy9Xcml0ZUZvcm1NZXRhXCI7XG5pbXBvcnQgeyBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0IH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvQ29uc29sZUFwcGxpY2F0aW9uL0NvbnNvbGVBcHBsaWNhdGlvbkNvbnRleHRcIjtcbmltcG9ydCB7IEZvcm1HbG9icyB9IGZyb20gXCIuLi8uLi9Db21tb25zL0Zvcm1HbG9ic1V0aWxzXCI7XG5pbXBvcnQgeyBJTG9nZ2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvTG9nZ2luZy9JTG9nZ2VyXCI7XG5pbXBvcnQgeyBnZXRMb2dnZXIgfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9Mb2dnaW5nL1N0YXRpY0xvZ2dlclwiO1xuaW1wb3J0IHsgT2JzZXJ2ZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1Rhc2tzQ29yZS9PYnNlcnZlXCI7XG5pbXBvcnQgeyBTaW5nbGVWYWx1ZVByb2R1Y2VyIH0gZnJvbSBcIi4uLy4uL0NvbW1vbnMvVGFza3NDb3JlL1NpbmdsZVZhbHVlUHJvZHVjZXJcIjtcbmltcG9ydCB7IHByaW50VGltZSB9IGZyb20gXCIuLi8uLi9Db21tb25zL1RpbWluZ1V0aWxzXCI7XG5pbXBvcnQgeyBCdWlsZENhY2hlIH0gZnJvbSBcIi4uLy4uL0Zvcm1XZWJwYWNrQ29uZmlndXJhdGlvbi9DYWNoZUFzc2V0c1BsdWdpblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuaW1wb3J0IHsgd3JpdGVBdHRhY2htZW50UGF0aEZpbGVzIH0gZnJvbSBcIi4uLy4uL0J1aWxkVGFza3MvRm9ybS9Xcml0ZUF0dGFjaG1lbnRQYXRoRmlsZXNcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3Jtc09wdGlvbnMgfSBmcm9tIFwiLi9CdWlsZEZvcm1zT3B0aW9uc1wiO1xuXG5mdW5jdGlvbiBnZXRHZW5lcmF0b3JWZXJzaW9uKGdlbmVyYXRvclNvdXJjZTogR2VuZXJhdG9yU291cmNlKTogc3RyaW5nIHtcbiAgICBpZiAoZ2VuZXJhdG9yU291cmNlLnR5cGUgPT09IFwiUHVibGlzaGVkR2VuZXJhdG9yXCIpIHtcbiAgICAgICAgcmV0dXJuIGdlbmVyYXRvclNvdXJjZS52ZXJzaW9uO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkludmFsaWRQcm9ncmFtU3RhdGVcIik7XG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcnVuQnVpbGRGb3JtcyhcbiAgICBjb250ZXh0OiBDb25zb2xlQXBwbGljYXRpb25Db250ZXh0LFxuICAgIG9wdGlvbnM6IEJ1aWxkRm9ybXNPcHRpb25zLFxuICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICByZXNvdXJjZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmdcbik6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IGJ1aWxkT3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBjb25zdCBwaWNrTGlzdHNDaGFpbiA9IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIpLCBcIiouanNvblwiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoY29udGV4dC5sb2dnZXIud2l0aFByZWZpeChcIlBJQ0tMSVNUU1wiKSwgeCwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIikpXG4gICAgKTtcblxuICAgIGNvbnN0IGZvcm1HbG9icyA9IGF3YWl0IEZvcm1HbG9icy52YWxpZGF0ZUdsb2JzKFxuICAgICAgICBhd2FpdCBGb3JtR2xvYnMucmVzb2x2ZVNwZWNpZmllcnMoYnVpbGRPcHRpb25zLmZvcm1HbG9icywgZmFybURpcmVjdG9yeSksXG4gICAgICAgIGZhcm1EaXJlY3RvcnlcbiAgICApO1xuXG4gICAgY29uc3Qgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluID0gT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLlwiLCBcIi4uXCIsIFwiU3RhdGljRmlsZXNGb3JQcm9kdWN0aW9uUmVzb3VyY2VzRGlyXCIpLFxuICAgICAgICBcIiouanNcIixcbiAgICAgICAgXCIqLmpzLm1hcFwiXG4gICAgKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNUQVRJQ1NcIiksIHgsIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicHVibGljXCIsIFwic2NyaXB0c1wiKSlcbiAgICApO1xuXG4gICAgY29uc3QgcmVzb3VyY2VzTnVTcGVjQ2hhaW4gPSBPYnNlcnZlLmZpbGVzKHBhdGguam9pbihmYXJtRGlyZWN0b3J5KSwgXCIqLm51c3BlY1wiKS5kbyh4ID0+XG4gICAgICAgIEZTVGFzay5jb3B5QnlNYXNrcyhnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTlVTUEVDXCIpLCB4LCBbXCIqLm51c3BlY1wiXSwgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSkpXG4gICAgKTtcblxuICAgIGNvbnN0IGNvcGllZEVuZ2luZXMgPSBuZXcgU2V0PHN0cmluZz4oKTtcblxuICAgIGNvbnN0IGJ1aWxkQ2FjaGUgPSBuZXcgQnVpbGRDYWNoZShmYXJtRGlyZWN0b3J5LCBvcHRpb25zLmJ1aWxkQ2FjaGVNb2RlKTtcbiAgICBjb25zdCBidWlsZEZvcm1zQ2hhaW4gPSBPYnNlcnZlLmRpcmVjdG9yeShwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiKSwgZm9ybUdsb2JzKS5zcGxpdFRvUGFyYWxsZWxDaGFpbnMoXG4gICAgICAgIHggPT4geCxcbiAgICAgICAgeCA9PiB4LFxuICAgICAgICBhc3luYyBnZnYgPT4ge1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4oZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYpO1xuXG4gICAgICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKHBhdGguam9pbihmb3JtRGlyUGF0aCwgXCJmb3JtLmpzb25cIikpKSkge1xuICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndhcm5pbmcoXG4gICAgICAgICAgICAgICAgICAgIGBGb3JtICR7Z2Z2fSBkb2VzIG5vdCBoYXZlIGZvcm0uanNvbiBmaWxlLiBUbyBpbmNsdWRlIHRoaXMgZm9ybSB0byBidWlsZCBwcm9jZXNzIHJlc3RhcnQgYnVpbGRgXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gT2JzZXJ2ZS52YWx1ZSh7fSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiBPYnNlcnZlLmZpbGUocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm0uanNvblwiKSlcbiAgICAgICAgICAgICAgICAudHJhbnNmb3JtKGZvcm1Kc29uRmlsZSA9PlxuICAgICAgICAgICAgICAgICAgICByZXNvbHZlRm9ybUluZm8oXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtSnNvbkZpbGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEZPUk06JHtnZnZ9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVwZ3JhZGVGb3JtSnNvbixcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMudXNlTGFzdFN0YWJsZVZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnVzZVByZXJlbGVhc2VWZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgLnRyYW5zZm9ybShhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLk5vcm1hbEJ1aWxkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJnZW5lcmF0b3JWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lVmVyc2lvbiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJlbmdpbmVWZXJzaW9uIGlzIG5vIGRlZmluZWRcIik7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRvclNvdXJjZTogYXdhaXQgcmVzb2x2ZUdlbmVyYXRvclZlcnNpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmdlbmVyYXRvclZlcnNpb24sXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoZ2Z2KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiBhd2FpdCByZXNvbHZlRW5naW5lVmVyc2lvbihmaS5lbmdpbmVWZXJzaW9uLCBjb250ZXh0LmxvZ2dlci53aXRoUHJlZml4KGdmdikpLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdG9yU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5naW5lU291cmNlOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2luZ2xlVmFsdWVQcm9kdWNlcihuZXcgTnVsbEZvcm1HZW5lcmF0b3IoKSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBnZW5lcmF0b3JGYWN0b3J5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaS5nZW5lcmF0b3JTb3VyY2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy51c2VWZXJzaW9uRnJvbUNhY2hlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgYXN5bmMgKGZpLCB5KSA9PiAoeyAuLi5maSwgZ2VuZXJhdG9yOiB5IH0pLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yU291cmNlICE9IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0R2VuZXJhdG9yU291cmNlS2V5KGZpLmdlbmVyYXRvclNvdXJjZSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiTnVsbEZvcm1HZW5lcmF0b3JcIlxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZW5naW5lU291cmNlID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFNpbmdsZVZhbHVlUHJvZHVjZXIoXCJOdWxsRW5naW5lXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVuZ2luZUZhY3RvcnkoZmkuZW5naW5lU291cmNlLCBjYW5keU1vZHVsZXNEaXJlY3RvcnksIG9wdGlvbnMudXNlVmVyc2lvbkZyb21DYWNoZSkuZG8oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY29waWVkRW5naW5lcy5oYXMoZ2V0RW5naW5lU291cmNlS2V5KGZpLmVuZ2luZVNvdXJjZSkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJFTkdJTkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInB1YmxpY1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcGllZEVuZ2luZXMuYWRkKGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIGFzeW5jIGZpID0+IGZpLFxuICAgICAgICAgICAgICAgICAgICBhc3luYyBmaSA9PiAoZmkuZW5naW5lU291cmNlICE9IHVuZGVmaW5lZCA/IGdldEVuZ2luZVNvdXJjZUtleShmaS5lbmdpbmVTb3VyY2UpIDogXCJOdWxsRW5naW5lXCIpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiLi4vLi4vY29udHJvbHMvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJzY2hlbWFzLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwic3VnYXIvKiovKlwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJjb250cm9scy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImF1dG9jYWxjLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwiaGVscGVycy8qKi8qXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcInZhbGlkYXRpb25zLyoqLypcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIFwibG9jYWxpemF0aW9uLyoqLypcIlxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC50cmFuc2Zvcm0oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBsZXQgZGVwZW5kZW5jaWVzSGFzaDogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkubW9kZSAhPT0gRm9ybUJ1aWxkTW9kZS5Ob3JtYWxCdWlsZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLi5maSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmNpZXNIYXNoOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChhd2FpdCBmaS5nZW5lcmF0b3Iuc3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llc0hhc2ggPSBhd2FpdCBmaS5nZW5lcmF0b3IuZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtRGlyUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGhcbiAgICAgICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpLFxuICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kZW5jaWVzSGFzaDogZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYEdFTkVSQVRFOiR7Z2Z2fWApLmxvZyhcIlNraXBwZWQgZHVlIGJ1aWxkIGNhY2hlIGV4aXRzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdlbmVyYXRlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZ2VuZXJhdG9yLFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBDb2RlUmVmb3JtYXR0aW5nOiBvcHRpb25zLnNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0hhc2g6IGZpLmRlcGVuZGVuY2llc0hhc2ggPz8gXCJVbmRlZmluZWRSZXNvdXJjZXNIYXNoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+IE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZvcm1EaXJQYXRoLCBcImZvcm1cIiksIFwiKiovKlwiKSlcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZmkuZ2VuZXJhdG9yU291cmNlID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5kZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGF3YWl0IGJ1aWxkQ2FjaGUuZXhpc3RzKGZpLmdlbmVyYXRvclNvdXJjZSwgZ2Z2LCBmaS5kZXBlbmRlbmNpZXNIYXNoKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQubG9nZ2VyLndpdGhQcmVmaXgoYENPTVBJTEU6JHtnZnZ9YCkubG9nKFwiU2tpcHBlZCBkdWUgYnVpbGQgY2FjaGUgZXhpc3RzXCIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGJ1aWxkQ2FjaGUuZXh0cmFjdChmaS5nZW5lcmF0b3JTb3VyY2UsIGdmdiwgZmkuZGVwZW5kZW5jaWVzSGFzaCwgcmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCBjb21waWxlRm9ybShcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkudGhlbWVzLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmRlcGVuZGVuY2llc0hhc2ggPz9cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWplY3QoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwiVGhpcyB2ZXJzaW9uIG9mIGdlbmVyYXRvciBpcyBub3Qgc3VwcG9ydGVkIGR1ZSB0byBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvbiBpcyBub3Qgc3VwcG9ydGVyXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZvcm1NZXRhKFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZW5naW5lU291cmNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCA/P1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlamVjdChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGlzIG5vdCBzdXBwb3J0ZWQgZHVlIHRvIGRlcGVuZGVuY2llcyBleHRyYWN0aW9uIGlzIG5vdCBzdXBwb3J0ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgICAgICAgICBmaS50aGVtZXMsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZU9wdGlvbnNcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5kbyhhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5nZW5lcmF0b3JTb3VyY2UgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYnVpbGRDYWNoZU9wdGlvbnMgPVxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZGVwZW5kZW5jaWVzSGFzaCAhPSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBzSGFzaDogZmkuZGVwZW5kZW5jaWVzSGFzaCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JWZXJzaW9uOiBnZXRHZW5lcmF0b3JWZXJzaW9uKGZpLmdlbmVyYXRvclNvdXJjZSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Z2OiBnZnYsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kZTogb3B0aW9ucy5idWlsZENhY2hlTW9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5OiBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICBhd2FpdCB3cml0ZUZMYW5nTm9ybWFsaXphdGlvbkZpbGVzKFxuICAgICAgICAgICAgICAgICAgICAgICAgZmkuZm9ybU5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRDYWNoZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGVPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHdyaXRlQXR0YWNobWVudFBhdGhGaWxlcyhcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpLmZvcm1OYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgZmFybURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlc0RpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkQ2FjaGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBidWlsZENhY2hlT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgLmF0dGFjaChhc3luYyBmaSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmaS5tb2RlID09PSBGb3JtQnVpbGRNb2RlLkNvcHlMZWdhY3lQcmVidWlsdFJlc291cmNlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJsZWdhY3ktcHJlYnVpbHRcIiksIFwiKlwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIkxFR0FDWS1QUkVCVUlMVFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aC5qb2luKHJlc291cmNlc0RpcmVjdG9yeSlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTaW5nbGVWYWx1ZVByb2R1Y2VyKFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJzY2hlbWFzXCIpLCBcIioueG1sXCIpLmRvKHggPT5cbiAgICAgICAgICAgICAgICAgICAgICAgIEZTVGFzay5jb3B5UmVjdXJzaXZlbHkoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlNDSEVNQVNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInNjaGVtYXNcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJjb252ZXJ0ZXJzXCIpLCBcIipcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiQ09OVkVSVEVSU1wiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwiY29udmVydGVyc1wiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlKHBhdGguam9pbihmaS5mb3JtU291cmNlc1BhdGgsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weUZpbGUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TG9nZ2VyKCkud2l0aFByZWZpeChcIlBSRVNFTlRBVElPTlNcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcInByZXNlbnRhdGlvbnNcIiwgYCR7Z2Z2fS5wcmVzZW50YXRpb25zLmpzb25gKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcIm5vcm1hbGl6ZVwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJOT1JNQUxJWkVcIiksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm5vcm1hbGl6ZVwiKVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIC5hdHRhY2goYXN5bmMgZmkgPT5cbiAgICAgICAgICAgICAgICAgICAgT2JzZXJ2ZS5maWxlcyhwYXRoLmpvaW4oZmkuZm9ybVNvdXJjZXNQYXRoLCBcInBhdGNoXCIpLCBcIioueHNsdFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJQQVRDSFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwicGF0Y2hcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJtYXBcIiksIFwiKi54bWxcIikuZG8oeCA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgRlNUYXNrLmNvcHlSZWN1cnNpdmVseShnZXRMb2dnZXIoKS53aXRoUHJlZml4KFwiTUFQXCIpLCB4LCBwYXRoLmpvaW4ocmVzb3VyY2VzRGlyZWN0b3J5LCBcIm1hcFwiKSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuYXR0YWNoKGFzeW5jIGZpID0+XG4gICAgICAgICAgICAgICAgICAgIE9ic2VydmUuZmlsZXMocGF0aC5qb2luKGZpLmZvcm1Tb3VyY2VzUGF0aCwgXCJ1bm1hcFwiKSwgXCIqLnhtbFwiKS5kbyh4ID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBGU1Rhc2suY29weVJlY3Vyc2l2ZWx5KFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldExvZ2dlcigpLndpdGhQcmVmaXgoXCJVTk1BUFwiKSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGguam9pbihyZXNvdXJjZXNEaXJlY3RvcnksIFwidW5tYXBcIilcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAuZG8oYXN5bmMgZmkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBpZiAoYnVpbGRPcHRpb25zLndhdGNoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBub3RpZmllci5ub3RpZnkoe1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiBgJHtmaS5mb3JtTmFtZX06INGB0LHQvtGA0LrQsCDQt9Cw0LLQtdGA0YjQtdC90LBgLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBFbmdpbmU6ICR7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpLmVuZ2luZVNvdXJjZSA9PSB1bmRlZmluZWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJbTm9FbmdpbmVdXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogZmkuZW5naW5lU291cmNlLnR5cGUgPT09IFwiTG9jYWxFbmdpbmVTb3VyY2VzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gXCJsb2NhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGZpLmVuZ2luZVNvdXJjZS52ZXJzaW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfWAsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgKTtcblxuICAgIGlmIChidWlsZE9wdGlvbnMud2F0Y2gpIHtcbiAgICAgICAgaWYgKG9wdGlvbnMuY2xlYW4pIHtcbiAgICAgICAgICAgIGF3YWl0IGNsZWFuVGFyZ2V0RGlyZWN0b3J5KHJlc291cmNlc0RpcmVjdG9yeSwgY29udGV4dC5sb2dnZXIpO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IHN0b3BPYnNlcnZlMSA9IGF3YWl0IHBpY2tMaXN0c0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUyID0gYXdhaXQgYnVpbGRGb3Jtc0NoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmUzID0gYXdhaXQgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluLm9ic2VydmUoKTtcbiAgICAgICAgY29uc3Qgc3RvcE9ic2VydmU0ID0gYXdhaXQgcmVzb3VyY2VzTnVTcGVjQ2hhaW4ub2JzZXJ2ZSgpO1xuICAgICAgICBhd2FpdCBjb250ZXh0LndhaXRGb3JFeGl0KCk7XG4gICAgICAgIGlmIChzdG9wT2JzZXJ2ZTMgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBhd2FpdCBzdG9wT2JzZXJ2ZTMoKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3RvcE9ic2VydmU0ICE9IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgYXdhaXQgc3RvcE9ic2VydmU0KCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgc3RvcE9ic2VydmUyKCk7XG4gICAgICAgIGF3YWl0IHN0b3BPYnNlcnZlMSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHN0YXJ0RGF0ZSA9IERhdGUubm93KCk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAob3B0aW9ucy5jbGVhbikge1xuICAgICAgICAgICAgICAgIGF3YWl0IGNsZWFuVGFyZ2V0RGlyZWN0b3J5KHJlc291cmNlc0RpcmVjdG9yeSwgY29udGV4dC5sb2dnZXIpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYXdhaXQgcGlja0xpc3RzQ2hhaW4uY3VycmVudFZhbHVlO1xuICAgICAgICAgICAgYXdhaXQgc3RhdGljUmVzb3VyY2VzRm9yUHJvZHVjdGlvbkNoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IHJlc291cmNlc051U3BlY0NoYWluLmN1cnJlbnRWYWx1ZTtcbiAgICAgICAgICAgIGF3YWl0IGJ1aWxkRm9ybXNDaGFpbi5jdXJyZW50VmFsdWU7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5sb2coY2hhbGsuZ3JlZW5CcmlnaHQoXCJCdWlsZCBzdWNjZXNzXCIpKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIGNvbnN0IHRvdGFsVGltZSA9IERhdGUubm93KCkgLSBzdGFydERhdGU7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29uc29sZVxuICAgICAgICAgICAgY29uc29sZS5sb2coYFRvdGFsIHRpbWU6ICR7cHJpbnRUaW1lKHRvdGFsVGltZSl9YCk7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGNsZWFuVGFyZ2V0RGlyZWN0b3J5KHJlc291cmNlc0RpcmVjdG9yeTogc3RyaW5nLCBsb2dnZXI6IElMb2dnZXIpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBsb2dnZXIubG9nKFwiQ2xlYW5pbmcgcmVzb3VyY2UgZGlyZWN0b3J5LiBcIiArIHJlc291cmNlc0RpcmVjdG9yeSk7XG4gICAgYXdhaXQgZW1wdHlEaXIocmVzb3VyY2VzRGlyZWN0b3J5KTtcbiAgICBsb2dnZXIubG9nKFwiUmVzb3VyY2UgZGlyZWN0b3J5IGNsZWFuXCIpO1xufVxuIl19
|
|
@@ -33,22 +33,22 @@ var _PathPattern = require("../../../Commons/PathPattern");
|
|
|
33
33
|
|
|
34
34
|
var _TypingUtils = require("../../../../../Common/TypingUtils");
|
|
35
35
|
|
|
36
|
-
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _class;
|
|
36
|
+
var _dec, _dec2, _dec3, _dec4, _dec5, _dec6, _dec7, _dec8, _dec9, _dec10, _dec11, _dec12, _dec13, _dec14, _dec15, _dec16, _dec17, _dec18, _dec19, _class;
|
|
37
37
|
|
|
38
|
-
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var
|
|
38
|
+
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); }
|
|
39
39
|
|
|
40
|
-
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
|
40
|
+
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; }
|
|
41
41
|
|
|
42
42
|
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
|
|
43
43
|
|
|
44
|
-
let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/picklists", _Results.httpReturn.PlainText), _dec2 = (0, _Methods.httpGet)("/picklists/:picklistFilename", _Results.httpReturn.StreamWithMime("application/json"), (0, _Params.httpUrlParam)("picklistFilename", _Params.httpType.String)), _dec3 = (0, _Methods.httpGet)("/converters", _Results.httpReturn.PlainText), _dec4 = (0, _Methods.httpGet)("/converters/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec5 = (0, _Methods.httpGet)("/schemas", _Results.httpReturn.PlainText), _dec6 = (0, _Methods.httpGet)("/schemas/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec7 = (0, _Methods.httpGet)("/presentations", _Results.httpReturn.PlainText), _dec8 = (0, _Methods.httpGet)("/presentations/:gfv.presentations.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec9 = (0, _Methods.httpGet)("/normalize", _Results.httpReturn.PlainText), _dec10 = (0, _Methods.httpGet)("/normalize/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec11 = (0, _Methods.httpGet)("/normalize/:gfv.normalize", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec12 = (0, _Methods.httpGet)("/
|
|
44
|
+
let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/picklists", _Results.httpReturn.PlainText), _dec2 = (0, _Methods.httpGet)("/picklists/:picklistFilename", _Results.httpReturn.StreamWithMime("application/json"), (0, _Params.httpUrlParam)("picklistFilename", _Params.httpType.String)), _dec3 = (0, _Methods.httpGet)("/converters", _Results.httpReturn.PlainText), _dec4 = (0, _Methods.httpGet)("/converters/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec5 = (0, _Methods.httpGet)("/schemas", _Results.httpReturn.PlainText), _dec6 = (0, _Methods.httpGet)("/schemas/:filename", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("filename", _Params.httpType.String)), _dec7 = (0, _Methods.httpGet)("/presentations", _Results.httpReturn.PlainText), _dec8 = (0, _Methods.httpGet)("/presentations/:gfv.presentations.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec9 = (0, _Methods.httpGet)("/normalize", _Results.httpReturn.PlainText), _dec10 = (0, _Methods.httpGet)("/normalize/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec11 = (0, _Methods.httpGet)("/normalize/:gfv.normalize", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec12 = (0, _Methods.httpGet)("/attachmentpaths", _Results.httpReturn.PlainText), _dec13 = (0, _Methods.httpGet)("/attachmentpaths/:gfv.json", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec14 = (0, _Methods.httpGet)("/unmap", _Results.httpReturn.PlainText), _dec15 = (0, _Methods.httpGet)("/unmap/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec16 = (0, _Methods.httpGet)("/map", _Results.httpReturn.PlainText), _dec17 = (0, _Methods.httpGet)("/map/:gfv.xml", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), _dec18 = (0, _Methods.httpGet)("/patch", _Results.httpReturn.PlainText), _dec19 = (0, _Methods.httpGet)("/patch/:gfv.xslt", _Results.httpReturn.Stream, (0, _Params.httpUrlParam)("gfv", _Params.httpType.String)), (_class = class BuildServerBackendResourcesController extends _SingletonController.SingletonController {
|
|
45
45
|
constructor(farmDirectory, flangNormalizationSourcesProvider) {
|
|
46
46
|
super();
|
|
47
47
|
this.farmDirectory = void 0;
|
|
48
|
-
this.
|
|
48
|
+
this.generatedServerSideSourcesProvider = void 0;
|
|
49
49
|
this.allSchemasFiles = void 0;
|
|
50
50
|
this.resetAllSchemaFilesDebounced = void 0;
|
|
51
|
-
this.
|
|
51
|
+
this.generatedServerSideSourcesProvider = flangNormalizationSourcesProvider;
|
|
52
52
|
this.farmDirectory = farmDirectory;
|
|
53
53
|
this.resetAllSchemaFilesDebounced = (0, _lodash.debounce)(() => {
|
|
54
54
|
this.allSchemasFiles = undefined;
|
|
@@ -134,7 +134,7 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
|
|
|
134
134
|
const files = await (0, _FsUtils.globAsync)("forms/*/normalize/*.xml", {
|
|
135
135
|
cwd: formDirPath
|
|
136
136
|
});
|
|
137
|
-
const flangFiles = await this.
|
|
137
|
+
const flangFiles = await this.generatedServerSideSourcesProvider.getAllNormalizationFileNames();
|
|
138
138
|
return [...files.map(x => path.basename(x)), ...flangFiles].join("\n");
|
|
139
139
|
}
|
|
140
140
|
|
|
@@ -144,7 +144,16 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
|
|
|
144
144
|
}
|
|
145
145
|
|
|
146
146
|
async getFLangNormalizeFile(gfv) {
|
|
147
|
-
return new _StreamResultHandler.StreamResult(await this.
|
|
147
|
+
return new _StreamResultHandler.StreamResult(await this.generatedServerSideSourcesProvider.getNormalizationFileContent(gfv));
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
async getAllAttachmentPathsFileNames() {
|
|
151
|
+
const flangFiles = await this.generatedServerSideSourcesProvider.getAllAttachmentPathFileNames();
|
|
152
|
+
return flangFiles.join("\n");
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
async getAttachmentPathFile(gfv) {
|
|
156
|
+
return new _StreamResultHandler.StreamResult(await this.generatedServerSideSourcesProvider.getAttachmentPathsFileContent(gfv));
|
|
148
157
|
}
|
|
149
158
|
|
|
150
159
|
async getAllUnmapFiles() {
|
|
@@ -186,6 +195,6 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
|
|
|
186
195
|
return new _StreamResultHandler.FileStreamResult(filePath);
|
|
187
196
|
}
|
|
188
197
|
|
|
189
|
-
}, (_applyDecoratedDescriptor(_class.prototype, "getAllPicklists", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPicklists"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getPicklists", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getPicklists"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllConvertersFiles", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getAllConvertersFiles"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getConverterFile", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getConverterFile"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllSchemasFiles", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getAllSchemasFiles"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getFormSchemas", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getFormSchemas"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllFormPresentations", [_dec7], Object.getOwnPropertyDescriptor(_class.prototype, "getAllFormPresentations"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getFormPresentations", [_dec8], Object.getOwnPropertyDescriptor(_class.prototype, "getFormPresentations"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllNormalizeFiles", [_dec9], Object.getOwnPropertyDescriptor(_class.prototype, "getAllNormalizeFiles"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getNormalizeFile", [_dec10], Object.getOwnPropertyDescriptor(_class.prototype, "getNormalizeFile"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getFLangNormalizeFile", [_dec11], Object.getOwnPropertyDescriptor(_class.prototype, "getFLangNormalizeFile"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "
|
|
198
|
+
}, (_applyDecoratedDescriptor(_class.prototype, "getAllPicklists", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPicklists"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getPicklists", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getPicklists"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllConvertersFiles", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getAllConvertersFiles"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getConverterFile", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getConverterFile"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllSchemasFiles", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getAllSchemasFiles"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getFormSchemas", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getFormSchemas"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllFormPresentations", [_dec7], Object.getOwnPropertyDescriptor(_class.prototype, "getAllFormPresentations"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getFormPresentations", [_dec8], Object.getOwnPropertyDescriptor(_class.prototype, "getFormPresentations"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllNormalizeFiles", [_dec9], Object.getOwnPropertyDescriptor(_class.prototype, "getAllNormalizeFiles"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getNormalizeFile", [_dec10], Object.getOwnPropertyDescriptor(_class.prototype, "getNormalizeFile"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getFLangNormalizeFile", [_dec11], Object.getOwnPropertyDescriptor(_class.prototype, "getFLangNormalizeFile"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllAttachmentPathsFileNames", [_dec12], Object.getOwnPropertyDescriptor(_class.prototype, "getAllAttachmentPathsFileNames"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAttachmentPathFile", [_dec13], Object.getOwnPropertyDescriptor(_class.prototype, "getAttachmentPathFile"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllUnmapFiles", [_dec14], Object.getOwnPropertyDescriptor(_class.prototype, "getAllUnmapFiles"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getUnmapFile", [_dec15], Object.getOwnPropertyDescriptor(_class.prototype, "getUnmapFile"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllMapFiles", [_dec16], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMapFiles"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getMapFile", [_dec17], Object.getOwnPropertyDescriptor(_class.prototype, "getMapFile"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getAllPatchFiles", [_dec18], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPatchFiles"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getPatchFile", [_dec19], Object.getOwnPropertyDescriptor(_class.prototype, "getPatchFile"), _class.prototype)), _class));
|
|
190
199
|
exports.BuildServerBackendResourcesController = BuildServerBackendResourcesController;
|
|
191
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiUGxhaW5UZXh0IiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImZhcm1EaXJlY3RvcnkiLCJmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXIiLCJhbGxTY2hlbWFzRmlsZXMiLCJyZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkIiwidW5kZWZpbmVkIiwiZ2V0QWxsUGlja2xpc3RzIiwiZm9ybURpclBhdGgiLCJwYXRoIiwiam9pbiIsImZpbGVzIiwiY3dkIiwibWFwIiwieCIsInJlcGxhY2UiLCJnZXRQaWNrbGlzdHMiLCJwaWNrbGlzdEZpbGVuYW1lIiwiZmlsZVBhdGgiLCJnZXRBbGxDb252ZXJ0ZXJzRmlsZXMiLCJiYXNlbmFtZSIsImdldENvbnZlcnRlckZpbGUiLCJmaWxlbmFtZSIsInBvc3NpYmxlRmlsZVBhdGhzIiwiZ2Z2IiwiRmlsZVN0cmVhbVJlc3VsdCIsIk5vdEZvdW5kV2ViRXJyb3IiLCJnZXRBbGxTY2hlbWFzRmlsZXMiLCJnZXRGb3JtU2NoZW1hcyIsImZpbGVQYXR0ZXJuIiwiUGF0aFBhdHRlcm4iLCJleGVjU3RyaWN0IiwiZ2V0QWxsRm9ybVByZXNlbnRhdGlvbnMiLCJnZXRGb3JtUHJlc2VudGF0aW9ucyIsImdldEFsbE5vcm1hbGl6ZUZpbGVzIiwiZmxhbmdGaWxlcyIsImdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMiLCJnZXROb3JtYWxpemVGaWxlIiwiZ2V0RkxhbmdOb3JtYWxpemVGaWxlIiwiU3RyZWFtUmVzdWx0IiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiZ2V0QWxsVW5tYXBGaWxlcyIsImdldFVubWFwRmlsZSIsImdldEFsbE1hcEZpbGVzIiwiZ2V0TWFwRmlsZSIsImdldEFsbFBhdGNoRmlsZXMiLCJnZXRQYXRjaEZpbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztJQUlhQSxxQyxXQWdCUixzQkFBUSxZQUFSLEVBQXNCQyxvQkFBV0MsU0FBakMsQyxVQU9BLHNCQUNHLDhCQURILEVBRUdELG9CQUFXRSxjQUFYLENBQTBCLGtCQUExQixDQUZILEVBR0csMEJBQWEsa0JBQWIsRUFBaUNDLGlCQUFTQyxNQUExQyxDQUhILEMsVUFVQSxzQkFBUSxhQUFSLEVBQXVCSixvQkFBV0MsU0FBbEMsQyxVQU9BLHNCQUFRLHVCQUFSLEVBQWlDRCxvQkFBV0ssTUFBNUMsRUFBb0QsMEJBQWEsVUFBYixFQUF5QkYsaUJBQVNDLE1BQWxDLENBQXBELEMsVUFjQSxzQkFBUSxVQUFSLEVBQW9CSixvQkFBV0MsU0FBL0IsQyxVQVdBLHNCQUFRLG9CQUFSLEVBQThCRCxvQkFBV0ssTUFBekMsRUFBaUQsMEJBQWEsVUFBYixFQUF5QkYsaUJBQVNDLE1BQWxDLENBQWpELEMsVUFXQSxzQkFBUSxnQkFBUixFQUEwQkosb0JBQVdDLFNBQXJDLEMsVUFPQSxzQkFBUSx3Q0FBUixFQUFrREQsb0JBQVdLLE1BQTdELEVBQXFFLDBCQUFhLEtBQWIsRUFBb0JGLGlCQUFTQyxNQUE3QixDQUFyRSxDLFVBTUEsc0JBQVEsWUFBUixFQUFzQkosb0JBQVdDLFNBQWpDLEMsV0FRQSxzQkFBUSxxQkFBUixFQUErQkQsb0JBQVdLLE1BQTFDLEVBQWtELDBCQUFhLEtBQWIsRUFBb0JGLGlCQUFTQyxNQUE3QixDQUFsRCxDLFdBTUEsc0JBQVEsMkJBQVIsRUFBcUNK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QUosQ0FBcUJQLFFBQXJCLENBQVA7QUFDSDs7QUFqSjBFLEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjcmVhdGVSZWFkU3RyZWFtLCBSZWFkU3RyZWFtIH0gZnJvbSBcImZzXCI7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gXCJwYXRoXCI7XG5cbmltcG9ydCB7IHBhdGhFeGlzdHMgfSBmcm9tIFwiZnMtZXh0cmFcIjtcbmltcG9ydCB7IGRlYm91bmNlIH0gZnJvbSBcImxvZGFzaFwiO1xuXG5pbXBvcnQgeyBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0V4dHJhY3RHZnZzRnJvbUZpbGVOYW1lXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9Gc1V0aWxzXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHtcbiAgICBGaWxlU3RyZWFtUmVzdWx0LFxuICAgIFN0cmVhbVJlc3VsdCxcbn0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgUGF0aFBhdHRlcm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9QYXRoUGF0dGVyblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBJRkxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyIH0gZnJvbSBcIi4vSUZMYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlclwiO1xuXG5leHBvcnQgY2xhc3MgQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlciBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyOiBJRkxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyO1xuXG4gICAgcHJpdmF0ZSBhbGxTY2hlbWFzRmlsZXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQ6ICgpID0+IHZvaWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZmFybURpcmVjdG9yeTogc3RyaW5nLCBmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXI6IElGTGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5mbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXIgPSBmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXI7XG4gICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSA9IGZhcm1EaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMucmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCA9IGRlYm91bmNlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWxsU2NoZW1hc0ZpbGVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9LCA1MDAwKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9waWNrbGlzdHNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFBpY2tsaXN0cygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnkpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2JBc3luYyhcInBpY2tsaXN0cy8qXCIsIHsgY3dkOiBmb3JtRGlyUGF0aCB9KTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHgucmVwbGFjZShcInBpY2tsaXN0cy9cIiwgXCJcIikpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIFwiL3BpY2tsaXN0cy86cGlja2xpc3RGaWxlbmFtZVwiLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vanNvblwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwicGlja2xpc3RGaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRQaWNrbGlzdHMocGlja2xpc3RGaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxSZWFkU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJwaWNrbGlzdHNcIiwgcGlja2xpc3RGaWxlbmFtZSk7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZWFkU3RyZWFtKGZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9jb252ZXJ0ZXJzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxDb252ZXJ0ZXJzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL2NvbnZlcnRlcnMvKlwiLCB7IGN3ZDogZm9ybURpclBhdGggfSk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRDb252ZXJ0ZXJGaWxlKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgY29uc3QgcG9zc2libGVGaWxlUGF0aHMgPSBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZShmaWxlbmFtZSkubWFwKGdmdiA9PlxuICAgICAgICAgICAgcGF0aC5qb2luKGZvcm1EaXJQYXRoLCBgZm9ybXMvJHtnZnZ9L2NvbnZlcnRlcnMvJHtmaWxlbmFtZX1gKVxuICAgICAgICApO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIHBvc3NpYmxlRmlsZVBhdGhzKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3NjaGVtYXNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFNjaGVtYXNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy5hbGxTY2hlbWFzRmlsZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYkFzeW5jKFwiZm9ybXMvKi9zY2hlbWFzLypcIiwgeyBjd2Q6IGZvcm1EaXJQYXRoIH0pO1xuICAgICAgICAgICAgdGhpcy5hbGxTY2hlbWFzRmlsZXMgPSBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMucmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCgpO1xuICAgICAgICByZXR1cm4gdGhpcy5hbGxTY2hlbWFzRmlsZXM7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvc2NoZW1hcy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TY2hlbWFzKGZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdHRlcm4gPSBuZXcgUGF0aFBhdHRlcm4oXCJ7Z2Z2fS4qLnhtbFwiKTtcbiAgICAgICAgY29uc3QgZ2Z2OiBzdHJpbmcgPSBmaWxlUGF0dGVybi5leGVjU3RyaWN0KGZpbGVuYW1lKS5nZnYgPz8gcmVqZWN0KCk7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwic2NoZW1hc1wiLCBmaWxlbmFtZSk7XG4gICAgICAgIGlmICghKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wcmVzZW50YXRpb25zXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtUHJlc2VudGF0aW9ucygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnkpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2JBc3luYyhcImZvcm1zLyovcHJlc2VudGF0aW9ucy5qc29uXCIsIHsgY3dkOiBmb3JtRGlyUGF0aCB9KTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHgucmVwbGFjZShcImZvcm1zL1wiLCBcIlwiKS5yZXBsYWNlKFwiL1wiLCBcIi5cIikpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHJlc2VudGF0aW9ucy86Z2Z2LnByZXNlbnRhdGlvbnMuanNvblwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1QcmVzZW50YXRpb25zKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIGBwcmVzZW50YXRpb25zLmpzb25gKTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemVcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE5vcm1hbGl6ZUZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYkFzeW5jKFwiZm9ybXMvKi9ub3JtYWxpemUvKi54bWxcIiwgeyBjd2Q6IGZvcm1EaXJQYXRoIH0pO1xuICAgICAgICBjb25zdCBmbGFuZ0ZpbGVzID0gYXdhaXQgdGhpcy5mbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXIuZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpO1xuICAgICAgICByZXR1cm4gWy4uLmZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLCAuLi5mbGFuZ0ZpbGVzXS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZS86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJub3JtYWxpemVcIiwgYCR7Z2Z2fS54bWxgKTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemUvOmdmdi5ub3JtYWxpemVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGTGFuZ05vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCB0aGlzLmZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlci5nZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQoZ2Z2KSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXBcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFVubWFwRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL3VubWFwLyoueG1sXCIsIHsgY3dkOiBmb3JtRGlyUGF0aCB9KTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXAvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRVbm1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJ1bm1hcFwiLCBgJHtnZnZ9LnhtbGApO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTWFwRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL21hcC8qLnhtbFwiLCB7IGN3ZDogZm9ybURpclBhdGggfSk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcC86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJtYXBcIiwgYCR7Z2Z2fS54bWxgKTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wYXRjaFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGF0Y2hGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnkpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2JBc3luYyhcImZvcm1zLyovcGF0Y2gvKi54c2x0XCIsIHsgY3dkOiBmb3JtRGlyUGF0aCB9KTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGF0Y2gvOmdmdi54c2x0XCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGF0Y2hGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwicGF0Y2hcIiwgYCR7Z2Z2fS54c2x0YCk7XG4gICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgfVxufVxuIl19
|
|
200
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiUGxhaW5UZXh0IiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImZhcm1EaXJlY3RvcnkiLCJmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXIiLCJnZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIiwiYWxsU2NoZW1hc0ZpbGVzIiwicmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCIsInVuZGVmaW5lZCIsImdldEFsbFBpY2tsaXN0cyIsImZvcm1EaXJQYXRoIiwicGF0aCIsImpvaW4iLCJmaWxlcyIsImN3ZCIsIm1hcCIsIngiLCJyZXBsYWNlIiwiZ2V0UGlja2xpc3RzIiwicGlja2xpc3RGaWxlbmFtZSIsImZpbGVQYXRoIiwiZ2V0QWxsQ29udmVydGVyc0ZpbGVzIiwiYmFzZW5hbWUiLCJnZXRDb252ZXJ0ZXJGaWxlIiwiZmlsZW5hbWUiLCJwb3NzaWJsZUZpbGVQYXRocyIsImdmdiIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsU2NoZW1hc0ZpbGVzIiwiZ2V0Rm9ybVNjaGVtYXMiLCJmaWxlUGF0dGVybiIsIlBhdGhQYXR0ZXJuIiwiZXhlY1N0cmljdCIsImdldEFsbEZvcm1QcmVzZW50YXRpb25zIiwiZ2V0Rm9ybVByZXNlbnRhdGlvbnMiLCJnZXRBbGxOb3JtYWxpemVGaWxlcyIsImZsYW5nRmlsZXMiLCJnZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzIiwiZ2V0Tm9ybWFsaXplRmlsZSIsImdldEZMYW5nTm9ybWFsaXplRmlsZSIsIlN0cmVhbVJlc3VsdCIsImdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudCIsImdldEFsbEF0dGFjaG1lbnRQYXRoc0ZpbGVOYW1lcyIsImdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzIiwiZ2V0QXR0YWNobWVudFBhdGhGaWxlIiwiZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQiLCJnZXRBbGxVbm1hcEZpbGVzIiwiZ2V0VW5tYXBGaWxlIiwiZ2V0QWxsTWFwRmlsZXMiLCJnZXRNYXBGaWxlIiwiZ2V0QWxsUGF0Y2hGaWxlcyIsImdldFBhdGNoRmlsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUVBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUlBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0lBSWFBLHFDLFdBZ0JSLHNCQUFRLFlBQVIsRUFBc0JDLG9CQUFXQyxTQUFqQyxDLFVBT0Esc0JBQ0csOEJBREgsRUFFR0Qsb0JBQVdFLGNBQVgsQ0FBMEIsa0JBQTFCLENBRkgsRUFHRywwQkFBYSxrQkFBYixFQUFpQ0MsaUJBQVNDLE1BQTFDLENBSEgsQyxVQVVBLHNCQUFRLGFBQVIsRUFBdUJKLG9CQUFXQyxTQUFsQyxDLFVBT0Esc0JBQVEsdUJBQVIsRUFBaUNELG9CQUFXSyxNQUE1QyxFQUFvRCwwQkFBYSxVQUFiLEVBQXlCRixpQkFBU0MsTUFBbEMsQ0FBcEQsQyxVQWNBLHNCQUFRLFVBQVIsRUFBb0JKLG9CQUFXQyxTQUEvQixDLFVBV0Esc0JBQVEsb0JBQVIsRUFBOEJELG9CQUFXSyxNQUF6QyxFQUFpRCwwQkFBYSxVQUFiLEVBQXlCRixpQkFBU0MsTUFBbEMsQ0FBakQsQyxVQVdBLHNCQUFRLGdCQUFSLEVBQTBCSixvQkFBV0MsU0FBckMsQyxVQU9BLHNCQUFRLHdDQUFSLEVBQWtERCxvQkFBV0ssTUFBN0QsRUFBcUUsMEJBQWEsS0FBYixFQUFvQkYsaUJBQVND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QyxFQUE0QyxLQUE1QyxFQUFvRCxHQUFFQSxHQUFJLE1BQTFELENBQWpCO0FBQ0EsV0FBTyxJQUFJQyxxQ0FBSixDQUFxQlAsUUFBckIsQ0FBUDtBQUNIOztBQUc0QixRQUFoQitCLGdCQUFnQixHQUFvQjtBQUM3QyxVQUFNekMsV0FBVyxHQUFHQyxJQUFJLENBQUNDLElBQUwsQ0FBVSxLQUFLVCxhQUFmLENBQXBCO0FBQ0EsVUFBTVUsS0FBSyxHQUFHLE1BQU0sd0JBQVUsc0JBQVYsRUFBa0M7QUFBRUMsTUFBQUEsR0FBRyxFQUFFSjtBQUFQLEtBQWxDLENBQXBCO0FBQ0EsV0FBT0csS0FBSyxDQUFDRSxHQUFOLENBQVVDLENBQUMsSUFBSUwsSUFBSSxDQUFDVyxRQUFMLENBQWNOLENBQWQsQ0FBZixFQUFpQ0osSUFBakMsQ0FBc0MsSUFBdEMsQ0FBUDtBQUNIOztBQUd3QixRQUFad0MsWUFBWSxDQUFDMUIsR0FBRCxFQUF5QztBQUM5RCxVQUFNTixRQUFRLEdBQUdULElBQUksQ0FBQ0MsSUFBTCxDQUFVLEtBQUtULGFBQWYsRUFBOEIsT0FBOUIsRUFBdUN1QixHQUF2QyxFQUE0QyxPQUE1QyxFQUFzRCxHQUFFQSxHQUFJLE9BQTVELENBQWpCO0FBQ0EsV0FBTyxJQUFJQyxxQ0FBSixDQUFxQlAsUUFBckIsQ0FBUDtBQUNIOztBQTVKMEUsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0sIFJlYWRTdHJlYW0gfSBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IHsgZGVib3VuY2UgfSBmcm9tIFwibG9kYXNoXCI7XG5cbmltcG9ydCB7IGV4dHJhY3RHZnZzRnJvbUZpbGVOYW1lIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvRXh0cmFjdEdmdnNGcm9tRmlsZU5hbWVcIjtcbmltcG9ydCB7IGdsb2JBc3luYyB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0ZzVXRpbHNcIjtcbmltcG9ydCB7IGh0dHBHZXQgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTWV0aG9kc1wiO1xuaW1wb3J0IHsgTm90Rm91bmRXZWJFcnJvciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9Ob3RGb3VuZFdlYkVycm9yXCI7XG5pbXBvcnQgeyBodHRwVHlwZSwgaHR0cFVybFBhcmFtIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1BhcmFtc1wiO1xuaW1wb3J0IHsgaHR0cFJldHVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzXCI7XG5pbXBvcnQge1xuICAgIEZpbGVTdHJlYW1SZXN1bHQsXG4gICAgU3RyZWFtUmVzdWx0LFxufSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0cy9TdHJlYW1SZXN1bHRIYW5kbGVyXCI7XG5pbXBvcnQgeyBTaW5nbGV0b25Db250cm9sbGVyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9FeHByZXNzV3JhcHBlci9TaW5nbGV0b25Db250cm9sbGVyXCI7XG5pbXBvcnQgeyBQYXRoUGF0dGVybiB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL1BhdGhQYXR0ZXJuXCI7XG5pbXBvcnQgeyByZWplY3QgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL1R5cGluZ1V0aWxzXCI7XG5cbmltcG9ydCB7IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIH0gZnJvbSBcIi4vSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcIjtcblxuZXhwb3J0IGNsYXNzIEJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZhcm1EaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXI6IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyO1xuXG4gICAgcHJpdmF0ZSBhbGxTY2hlbWFzRmlsZXM6IHVuZGVmaW5lZCB8IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQ6ICgpID0+IHZvaWQ7XG5cbiAgICBwdWJsaWMgY29uc3RydWN0b3IoZmFybURpcmVjdG9yeTogc3RyaW5nLCBmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXI6IElHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciA9IGZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlcjtcbiAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5ID0gZmFybURpcmVjdG9yeTtcbiAgICAgICAgdGhpcy5yZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkID0gZGVib3VuY2UoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5hbGxTY2hlbWFzRmlsZXMgPSB1bmRlZmluZWQ7XG4gICAgICAgIH0sIDUwMDApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BpY2tsaXN0c1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGlja2xpc3RzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYkFzeW5jKFwicGlja2xpc3RzLypcIiwgeyBjd2Q6IGZvcm1EaXJQYXRoIH0pO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4geC5yZXBsYWNlKFwicGlja2xpc3RzL1wiLCBcIlwiKSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgXCIvcGlja2xpc3RzLzpwaWNrbGlzdEZpbGVuYW1lXCIsXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qc29uXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCJwaWNrbGlzdEZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldFBpY2tsaXN0cyhwaWNrbGlzdEZpbGVuYW1lOiBzdHJpbmcpOiBQcm9taXNlPFJlYWRTdHJlYW0+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiLCBwaWNrbGlzdEZpbGVuYW1lKTtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZVJlYWRTdHJlYW0oZmlsZVBhdGgpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbENvbnZlcnRlcnNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnkpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2JBc3luYyhcImZvcm1zLyovY29udmVydGVycy8qXCIsIHsgY3dkOiBmb3JtRGlyUGF0aCB9KTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvY29udmVydGVycy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldENvbnZlcnRlckZpbGUoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnkpO1xuICAgICAgICBjb25zdCBwb3NzaWJsZUZpbGVQYXRocyA9IGV4dHJhY3RHZnZzRnJvbUZpbGVOYW1lKGZpbGVuYW1lKS5tYXAoZ2Z2ID0+XG4gICAgICAgICAgICBwYXRoLmpvaW4oZm9ybURpclBhdGgsIGBmb3Jtcy8ke2dmdn0vY29udmVydGVycy8ke2ZpbGVuYW1lfWApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZVBhdGggb2YgcG9zc2libGVGaWxlUGF0aHMpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvc2NoZW1hc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsU2NoZW1hc0ZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGlmICh0aGlzLmFsbFNjaGVtYXNGaWxlcyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnkpO1xuICAgICAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL3NjaGVtYXMvKlwiLCB7IGN3ZDogZm9ybURpclBhdGggfSk7XG4gICAgICAgICAgICB0aGlzLmFsbFNjaGVtYXNGaWxlcyA9IGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5yZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkKCk7XG4gICAgICAgIHJldHVybiB0aGlzLmFsbFNjaGVtYXNGaWxlcztcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9zY2hlbWFzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVNjaGVtYXMoZmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBmaWxlUGF0dGVybiA9IG5ldyBQYXRoUGF0dGVybihcIntnZnZ9LioueG1sXCIpO1xuICAgICAgICBjb25zdCBnZnY6IHN0cmluZyA9IGZpbGVQYXR0ZXJuLmV4ZWNTdHJpY3QoZmlsZW5hbWUpLmdmdiA/PyByZWplY3QoKTtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJzY2hlbWFzXCIsIGZpbGVuYW1lKTtcbiAgICAgICAgaWYgKCEoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3ByZXNlbnRhdGlvbnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEZvcm1QcmVzZW50YXRpb25zKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYkFzeW5jKFwiZm9ybXMvKi9wcmVzZW50YXRpb25zLmpzb25cIiwgeyBjd2Q6IGZvcm1EaXJQYXRoIH0pO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4geC5yZXBsYWNlKFwiZm9ybXMvXCIsIFwiXCIpLnJlcGxhY2UoXCIvXCIsIFwiLlwiKSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wcmVzZW50YXRpb25zLzpnZnYucHJlc2VudGF0aW9ucy5qc29uXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVByZXNlbnRhdGlvbnMoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgYHByZXNlbnRhdGlvbnMuanNvbmApO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZVwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTm9ybWFsaXplRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL25vcm1hbGl6ZS8qLnhtbFwiLCB7IGN3ZDogZm9ybURpclBhdGggfSk7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpO1xuICAgICAgICByZXR1cm4gWy4uLmZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLCAuLi5mbGFuZ0ZpbGVzXS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZS86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJub3JtYWxpemVcIiwgYCR7Z2Z2fS54bWxgKTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemUvOmdmdi5ub3JtYWxpemVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGTGFuZ05vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2F0dGFjaG1lbnRwYXRoc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQXR0YWNobWVudFBhdGhzRmlsZU5hbWVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMoKTtcbiAgICAgICAgcmV0dXJuIGZsYW5nRmlsZXMuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9hdHRhY2htZW50cGF0aHMvOmdmdi5qc29uXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QXR0YWNobWVudFBhdGhGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50KGdmdikpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3VubWFwXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxVbm1hcEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYkFzeW5jKFwiZm9ybXMvKi91bm1hcC8qLnhtbFwiLCB7IGN3ZDogZm9ybURpclBhdGggfSk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3VubWFwLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VW5tYXBGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwidW5tYXBcIiwgYCR7Z2Z2fS54bWxgKTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tYXBcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE1hcEZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYkFzeW5jKFwiZm9ybXMvKi9tYXAvKi54bWxcIiwgeyBjd2Q6IGZvcm1EaXJQYXRoIH0pO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tYXAvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRNYXBGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwibWFwXCIsIGAke2dmdn0ueG1sYCk7XG4gICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGF0Y2hcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFBhdGNoRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL3BhdGNoLyoueHNsdFwiLCB7IGN3ZDogZm9ybURpclBhdGggfSk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3BhdGNoLzpnZnYueHNsdFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldFBhdGNoRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInBhdGNoXCIsIGAke2dmdn0ueHNsdGApO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -58,19 +58,19 @@ let BuildServerBuildFormsController = (_dec = (0, _Methods.httpGet)(/^\/public\/
|
|
|
58
58
|
|
|
59
59
|
async getFormScript(fileName, fileNameWithoutExt, gfv) {
|
|
60
60
|
const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);
|
|
61
|
-
return new _StreamResultHandler.StreamResult(await buildFormDevServer.getFileAsStream(
|
|
61
|
+
return new _StreamResultHandler.StreamResult(await buildFormDevServer.getFileAsStream(`static/public/scripts/${fileName}`));
|
|
62
62
|
}
|
|
63
63
|
|
|
64
64
|
async getFormStyle(fileName, fileNameWithoutExt, gfv, theme) {
|
|
65
65
|
const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);
|
|
66
|
-
return new _StreamResultHandler.StreamResult(await buildFormDevServer.getFileAsStream(
|
|
66
|
+
return new _StreamResultHandler.StreamResult(await buildFormDevServer.getFileAsStream(`static/public/styles/${fileName.replace(theme !== null && theme !== void 0 ? theme : "", "")}`));
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
async getFormImages(fileName) {
|
|
70
70
|
for (const devServer of Object.values(this.devServers)) {
|
|
71
71
|
if (devServer != undefined) {
|
|
72
72
|
try {
|
|
73
|
-
return new _StreamResultHandler.StreamResult(await devServer.getFileAsStream(
|
|
73
|
+
return new _StreamResultHandler.StreamResult(await devServer.getFileAsStream(`static/public/images/${fileName}`), _mimeTypes.default.lookup(fileName));
|
|
74
74
|
} catch (ignoreError) {// try next server
|
|
75
75
|
}
|
|
76
76
|
}
|
|
@@ -79,6 +79,23 @@ let BuildServerBuildFormsController = (_dec = (0, _Methods.httpGet)(/^\/public\/
|
|
|
79
79
|
throw new _NotFoundWebError.NotFoundWebError("File not found", true);
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
+
async getAllAttachmentPathFileNames() {
|
|
83
|
+
const result = [];
|
|
84
|
+
const farmFormJsons = await this.farmDirectory.getAllFormJsonFiles();
|
|
85
|
+
|
|
86
|
+
for (const farmFormJson of farmFormJsons) {
|
|
87
|
+
result.push(`${farmFormJson.gfv}.normalize`);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return result;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
async getAttachmentPathsFileContent(gfv) {
|
|
94
|
+
const buildFormDevServer = await this.getOrCreateBuildFormDevServer(gfv);
|
|
95
|
+
const resultStream = await buildFormDevServer.getGeneratedFileAsStream(`AttachmentPaths.json`);
|
|
96
|
+
return resultStream;
|
|
97
|
+
}
|
|
98
|
+
|
|
82
99
|
async getAllNormalizationFileNames() {
|
|
83
100
|
const result = [];
|
|
84
101
|
const farmFormJsons = await this.farmDirectory.getAllFormJsonFiles();
|
|
@@ -118,4 +135,4 @@ let BuildServerBuildFormsController = (_dec = (0, _Methods.httpGet)(/^\/public\/
|
|
|
118
135
|
|
|
119
136
|
}, (_applyDecoratedDescriptor(_class.prototype, "getFormScript", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getFormScript"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getFormStyle", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getFormStyle"), _class.prototype), _applyDecoratedDescriptor(_class.prototype, "getFormImages", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getFormImages"), _class.prototype)), _class));
|
|
120
137
|
exports.BuildServerBuildFormsController = BuildServerBuildFormsController;
|
|
121
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImZhcm1EaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwidXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyIsImVuZ2luZURpcmVjdG9yeSIsImJ1aWxkRGVidWdPbmx5IiwibmlnaHRseSIsImZhcm1EaXJlY3RvcnlQYXRoIiwibmV4dEZyZWVQb3J0IiwiZGV2U2VydmVycyIsIkZhcm1EaXJlY3RvcnkiLCJnZXRGb3JtU2NyaXB0IiwiZmlsZU5hbWUiLCJmaWxlTmFtZVdpdGhvdXRFeHQiLCJnZnYiLCJidWlsZEZvcm1EZXZTZXJ2ZXIiLCJnZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlciIsIlN0cmVhbVJlc3VsdCIsImdldEZpbGVBc1N0cmVhbSIsImdldEZvcm1TdHlsZSIsInRoZW1lIiwicmVwbGFjZSIsImdldEZvcm1JbWFnZXMiLCJkZXZTZXJ2ZXIiLCJPYmplY3QiLCJ2YWx1ZXMiLCJ1bmRlZmluZWQiLCJtaW1lIiwibG9va3VwIiwiaWdub3JlRXJyb3IiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcyIsInJlc3VsdCIsImZhcm1Gb3JtSnNvbnMiLCJnZXRBbGxGb3JtSnNvbkZpbGVzIiwiZmFybUZvcm1Kc29uIiwiZm9ybUpzb25QYXRoIiwiZ2V0Rm9ybUpzb25QYXRoIiwiZm9ybUNvbmZpZyIsInVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24iLCJzZXR0aW5ncyIsInB1c2giLCJnZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQiLCJyZXN1bHRTdHJlYW0iLCJnZXRHZW5lcmF0ZWRGaWxlQXNTdHJlYW0iLCJCdWlsZEZvcm1EZXZTZXJ2ZXIiLCJzdGFydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOzs7Ozs7OztJQUdhQSwrQixXQWdDUixzQkFDRywwREFESCxFQUVHQyxvQkFBV0MsY0FBWCxDQUEwQix3QkFBMUIsQ0FGSCxFQUdHLDBCQUFhLEdBQWIsRUFBa0JDLGlCQUFTQyxNQUEzQixDQUhILEVBSUcsMEJBQWEsR0FBYixFQUFrQkQsaUJBQVNDLE1BQTNCLENBSkgsRUFLRywwQkFBYSxHQUFiLEVBQWtCRCxpQkFBU0MsTUFBM0IsQ0FMSCxDLFVBWUEsc0JBQ0csMERBREgsRUFFR0gsb0JBQVdDLGNBQVgsQ0FBMEIsVUFBMUIsQ0FGSCxFQUdHLDBCQUFhLEdBQWIsRUFBa0JDLGlCQUFTQyxNQUEzQixDQUhILEVBSUcsMEJBQWEsR0FBYixFQUFrQkQsaUJBQVNDLE1BQTNCLENBSkgsRUFLRywwQkFBYSxHQUFiLEVBQWtCRCxpQkFBU0MsTUFBM0IsQ0FMSCxFQU1HLDBCQUFhLEdBQWIsRUFBa0JELGlCQUFTQyxNQUEzQixDQU5ILEMsVUFvQkEsc0JBQVEsMEJBQVIsRUFBb0NILG9CQUFXSSxNQUEvQyxFQUF1RCwwQkFBYSxVQUFiLEVBQXlCRixpQkFBU0MsTUFBbEMsQ0FBdkQsQyxZQWhFRSxNQUFNSiwrQkFBTixTQUE4Q00sd0NBQTlDLENBQWdIO0FBWTVHQyxFQUFBQSxXQUFXLENBQ2RDLGFBRGMsRUFFZEMscUJBRmMsRUFHZEMsbUJBSGMsRUFJZEMsNEJBSmMsRUFLZEMsZUFMYyxFQU1kQyxjQU5jLEVBT2RDLE9BQWdCLEdBQUcsS0FQTCxFQVFoQjtBQUNFO0FBREYsU0FuQmVOLGFBbUJmO0FB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LENBQUNyQixHQUFJLFlBQWhDO0FBQ0g7QUFDSjs7QUFDRCxXQUFPa0IsTUFBUDtBQUNIOztBQUV1QyxRQUEzQlUsMkJBQTJCLENBQUM1QixHQUFELEVBQThDO0FBQ2xGLFVBQU1DLGtCQUFrQixHQUFHLE1BQU0sS0FBS0MsNkJBQUwsQ0FBbUNGLEdBQW5DLENBQWpDO0FBQ0EsVUFBTTZCLFlBQVksR0FBRyxNQUFNNUIsa0JBQWtCLENBQUM2Qix3QkFBbkIsQ0FBNkMsc0JBQTdDLENBQTNCO0FBQ0EsV0FBT0QsWUFBUDtBQUNIOztBQUUwQyxRQUE3QjNCLDZCQUE2QixDQUFDRixHQUFELEVBQTJDO0FBQ2xGLFFBQUlTLFNBQVMsR0FBRyxLQUFLZCxVQUFMLENBQWdCSyxHQUFoQixDQUFoQjs7QUFDQSxRQUFJUyxTQUFTLElBQUlHLFNBQWpCLEVBQTRCO0FBQ3hCSCxNQUFBQSxTQUFTLEdBQUcsSUFBSXNCLHNDQUFKLENBQ1IsS0FBS3JDLFlBQUwsRUFEUSxFQUVSLEtBQUtELGlCQUZHLEVBR1JPLEdBSFEsRUFJUixLQUFLYixxQkFKRyxFQUtSLEtBQUtDLG1CQUxHLEVBTVIsS0FBS0MsNEJBTkcsRUFPUixLQUFLQyxlQVBHLEVBUVIsS0FBS0MsY0FSRyxFQVNSLEtBVFEsRUFVUixLQUFLQyxPQVZHLENBQVo7QUFZQSxXQUFLRyxVQUFMLENBQWdCSyxHQUFoQixJQUF1QlMsU0FBdkI7QUFDQSxZQUFNQSxTQUFTLENBQUN1QixLQUFWLEVBQU47QUFDSDs7QUFDRCxXQUFPdkIsU0FBUDtBQUNIOztBQXhIa0gsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtaW1lIGZyb20gXCJtaW1lLXR5cGVzXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHsgU3RyZWFtUmVzdWx0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3JtRGV2U2VydmVyIH0gZnJvbSBcIi4vRGV2U2VydmVycy9CdWlsZEZvcm1EZXZTZXJ2ZXJcIjtcbmltcG9ydCB7IEZhcm1EaXJlY3RvcnkgfSBmcm9tIFwiLi9EaXJlY3Rvcmllcy9GYXJtRGlyZWN0b3J5XCI7XG5pbXBvcnQgeyBJRkxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyIH0gZnJvbSBcIi4vSUZMYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlclwiO1xuXG5leHBvcnQgY2xhc3MgQnVpbGRTZXJ2ZXJCdWlsZEZvcm1zQ29udHJvbGxlciBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXIgaW1wbGVtZW50cyBJRkxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyIHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZhcm1EaXJlY3Rvcnk6IEZhcm1EaXJlY3Rvcnk7XG4gICAgcHJpdmF0ZSByZWFkb25seSBmYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nO1xuICAgIHByaXZhdGUgbmV4dEZyZWVQb3J0ID0gMTIwMDE7XG4gICAgcHJpdmF0ZSByZWFkb25seSBkZXZTZXJ2ZXJzOiB7IFtnZnY6IHN0cmluZ106IHVuZGVmaW5lZCB8IEJ1aWxkRm9ybURldlNlcnZlciB9ID0ge307XG4gICAgcHJpdmF0ZSByZWFkb25seSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZztcbiAgICBwcml2YXRlIHJlYWRvbmx5IG5pZ2h0bHk6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSBidWlsZERlYnVnT25seTogYm9vbGVhbjtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBjYW5keU1vZHVsZXNEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nLFxuICAgICAgICB1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzOiBib29sZWFuLFxuICAgICAgICBlbmdpbmVEaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgYnVpbGREZWJ1Z09ubHk6IGJvb2xlYW4sXG4gICAgICAgIG5pZ2h0bHk6IGJvb2xlYW4gPSBmYWxzZVxuICAgICkge1xuICAgICAgICBzdXBlcigpO1xuICAgICAgICB0aGlzLm5pZ2h0bHkgPSBuaWdodGx5O1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBuZXcgRmFybURpcmVjdG9yeShmYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5UGF0aCA9IGZhcm1EaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuY2FuZHlNb2R1bGVzRGlyZWN0b3J5ID0gY2FuZHlNb2R1bGVzRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLmhsRmFybURpcmVjdG9yeVBhdGggPSBobEZhcm1EaXJlY3RvcnlQYXRoO1xuICAgICAgICB0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMgPSB1c2VHZW5lcmF0b3JGcm9tTG9jYWxTb3VyY2VzO1xuICAgICAgICB0aGlzLmVuZ2luZURpcmVjdG9yeSA9IGVuZ2luZURpcmVjdG9yeTtcbiAgICAgICAgdGhpcy5idWlsZERlYnVnT25seSA9IGJ1aWxkRGVidWdPbmx5O1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICAvXlxcL3B1YmxpY1xcL3NjcmlwdHNcXC8oKChcXGR7Niw3fSkoLltcXHdcXC1dKik/KC5taW4pPykuanMpJC9pLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwiYXBwbGljYXRpb24vamF2YXNjcmlwdFwiKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMFwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIxXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjJcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVNjcmlwdChmaWxlTmFtZTogc3RyaW5nLCBmaWxlTmFtZVdpdGhvdXRFeHQ6IHN0cmluZywgZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBidWlsZEZvcm1EZXZTZXJ2ZXIgPSBhd2FpdCB0aGlzLmdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdik7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IGJ1aWxkRm9ybURldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oYC9wdWJsaWMvc2NyaXB0cy8ke2ZpbGVOYW1lfWApKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcbiAgICAgICAgL15cXC9wdWJsaWNcXC9zdHlsZXNcXC8oKChcXGR7Niw3fSkoLltcXHdcXC1dKik/KC5taW4pPykuY3NzKSQvaSxcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcInRleHQvY3NzXCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIwXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjFcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMlwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIzXCIsIGh0dHBUeXBlLlN0cmluZylcbiAgICApXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1TdHlsZShcbiAgICAgICAgZmlsZU5hbWU6IHN0cmluZyxcbiAgICAgICAgZmlsZU5hbWVXaXRob3V0RXh0OiBzdHJpbmcsXG4gICAgICAgIGdmdjogc3RyaW5nLFxuICAgICAgICB0aGVtZTogdW5kZWZpbmVkIHwgc3RyaW5nXG4gICAgKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChcbiAgICAgICAgICAgIGF3YWl0IGJ1aWxkRm9ybURldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oYC9wdWJsaWMvc3R5bGVzLyR7ZmlsZU5hbWUucmVwbGFjZSh0aGVtZSA/PyBcIlwiLCBcIlwiKX1gKVxuICAgICAgICApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3B1YmxpYy9pbWFnZXMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtSW1hZ2VzKGZpbGVOYW1lOiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBmb3IgKGNvbnN0IGRldlNlcnZlciBvZiBPYmplY3QudmFsdWVzKHRoaXMuZGV2U2VydmVycykpIHtcbiAgICAgICAgICAgIGlmIChkZXZTZXJ2ZXIgIT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoXG4gICAgICAgICAgICAgICAgICAgICAgICBhd2FpdCBkZXZTZXJ2ZXIuZ2V0RmlsZUFzU3RyZWFtKGAvcHVibGljL2ltYWdlcy8ke2ZpbGVOYW1lfWApLFxuICAgICAgICAgICAgICAgICAgICAgICAgbWltZS5sb29rdXAoZmlsZU5hbWUpXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgfSBjYXRjaCAoaWdub3JlRXJyb3IpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gdHJ5IG5leHQgc2VydmVyXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGZhcm1Gb3JtSnNvbnMgPSBhd2FpdCB0aGlzLmZhcm1EaXJlY3RvcnkuZ2V0QWxsRm9ybUpzb25GaWxlcygpO1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1Gb3JtSnNvbiBvZiBmYXJtRm9ybUpzb25zKSB7XG4gICAgICAgICAgICBjb25zdCBmb3JtSnNvblBhdGggPSB0aGlzLmZhcm1EaXJlY3RvcnkuZ2V0Rm9ybUpzb25QYXRoKGZhcm1Gb3JtSnNvbi5nZnYpO1xuICAgICAgICAgICAgY29uc3QgZm9ybUNvbmZpZyA9IGF3YWl0IHJlYWRGb3JtQ29uZmlnKGZvcm1Kc29uUGF0aCwgZ2V0TG9nZ2VyKCkpO1xuICAgICAgICAgICAgY29uc3QgdXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA9IGZvcm1Db25maWcuc2V0dGluZ3M/LnVzZVNlcnZlclNpZGVGTGFuZ05vcm1hbGl6YXRpb24gPz8gZmFsc2U7XG4gICAgICAgICAgICBpZiAodXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbikge1xuICAgICAgICAgICAgICAgIHJlc3VsdC5wdXNoKGAke2Zhcm1Gb3JtSnNvbi5nZnZ9Lm5vcm1hbGl6ZWApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudChnZnY6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgY29uc3QgcmVzdWx0U3RyZWFtID0gYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbShgU2VydmVyU2lkZS5ub3JtYWxpemVgKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmVhbTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdjogc3RyaW5nKTogUHJvbWlzZTxCdWlsZEZvcm1EZXZTZXJ2ZXI+IHtcbiAgICAgICAgbGV0IGRldlNlcnZlciA9IHRoaXMuZGV2U2VydmVyc1tnZnZdO1xuICAgICAgICBpZiAoZGV2U2VydmVyID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgZGV2U2VydmVyID0gbmV3IEJ1aWxkRm9ybURldlNlcnZlcihcbiAgICAgICAgICAgICAgICB0aGlzLm5leHRGcmVlUG9ydCsrLFxuICAgICAgICAgICAgICAgIHRoaXMuZmFybURpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICAgICAgZ2Z2LFxuICAgICAgICAgICAgICAgIHRoaXMuY2FuZHlNb2R1bGVzRGlyZWN0b3J5LFxuICAgICAgICAgICAgICAgIHRoaXMuaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICB0aGlzLnVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXMsXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmVEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgdGhpcy5idWlsZERlYnVnT25seSxcbiAgICAgICAgICAgICAgICBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aGlzLm5pZ2h0bHlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICB0aGlzLmRldlNlcnZlcnNbZ2Z2XSA9IGRldlNlcnZlcjtcbiAgICAgICAgICAgIGF3YWl0IGRldlNlcnZlci5zdGFydCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBkZXZTZXJ2ZXI7XG4gICAgfVxufVxuIl19
|
|
138
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQnVpbGRGb3Jtc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImZhcm1EaXJlY3RvcnkiLCJjYW5keU1vZHVsZXNEaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwidXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyIsImVuZ2luZURpcmVjdG9yeSIsImJ1aWxkRGVidWdPbmx5IiwibmlnaHRseSIsImZhcm1EaXJlY3RvcnlQYXRoIiwibmV4dEZyZWVQb3J0IiwiZGV2U2VydmVycyIsIkZhcm1EaXJlY3RvcnkiLCJnZXRGb3JtU2NyaXB0IiwiZmlsZU5hbWUiLCJmaWxlTmFtZVdpdGhvdXRFeHQiLCJnZnYiLCJidWlsZEZvcm1EZXZTZXJ2ZXIiLCJnZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlciIsIlN0cmVhbVJlc3VsdCIsImdldEZpbGVBc1N0cmVhbSIsImdldEZvcm1TdHlsZSIsInRoZW1lIiwicmVwbGFjZSIsImdldEZvcm1JbWFnZXMiLCJkZXZTZXJ2ZXIiLCJPYmplY3QiLCJ2YWx1ZXMiLCJ1bmRlZmluZWQiLCJtaW1lIiwibG9va3VwIiwiaWdub3JlRXJyb3IiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMiLCJyZXN1bHQiLCJmYXJtRm9ybUpzb25zIiwiZ2V0QWxsRm9ybUpzb25GaWxlcyIsImZhcm1Gb3JtSnNvbiIsInB1c2giLCJnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudCIsInJlc3VsdFN0cmVhbSIsImdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbSIsImdldEFsbE5vcm1hbGl6YXRpb25GaWxlTmFtZXMiLCJmb3JtSnNvblBhdGgiLCJnZXRGb3JtSnNvblBhdGgiLCJmb3JtQ29uZmlnIiwidXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiIsInNldHRpbmdzIiwiZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50IiwiQnVpbGRGb3JtRGV2U2VydmVyIiwic3RhcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7Ozs7Ozs7SUFHYUEsK0IsV0FtQ1Isc0JBQ0csMERBREgsRUFFR0Msb0JBQVdDLGNBQVgsQ0FBMEIsd0JBQTFCLENBRkgsRUFHRywwQkFBYSxHQUFiLEVBQWtCQyxpQkFBU0MsTUFBM0IsQ0FISCxFQUlHLDBCQUFhLEdBQWIsRUFBa0JELGlCQUFTQyxNQUEzQixDQUpILEVBS0csMEJBQWEsR0FBYixFQUFrQkQsaUJBQVNDLE1BQTNCLENBTEgsQyxVQVlBLHNCQUNHLDBEQURILEVBRUdILG9CQUFXQyxjQUFYLENBQTBCLFVBQTFCLENBRkgsRUFHRywwQkFBYSxHQUFiLEVBQWtCQyxpQkFBU0MsTUFBM0IsQ0FISCxFQUlHLDBCQUFhLEdBQWIsRUFBa0JELGlCQUFTQyxNQUEzQixDQUpILEVBS0csMEJBQWEsR0FBYixFQUFrQkQsaUJBQVNDLE1BQTNCLENBTEgsRUFNRywwQkFBYSxHQUFiLEVBQWtCRCxpQkFBU0MsTUFBM0IsQ0FOSCxDLFVBb0JBLHNCQUFRLDBCQUFSLEVBQW9DSCxvQkFBV0ksTUFBL0MsRUFBdUQsMEJBQWEsVUFBYixFQUF5QkYsaUJBQVNDLE1BQWxDLENBQXZELEMsWUFuRUUsTUFBTUosK0JBQU4sU0FDS00sd0NBREwsQ0FHUDtBQVlXQyxFQUFBQSxXQUFXLENBQ2RDLGFBRGMsRUFFZEMscUJBRmMsRUFHZEMsbUJBSGMsRUFJZEMsNEJBSmMsRUFLZEMsZUFMYyxFQU1k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QUNSLEtBQUt2QyxZQUFMLEVBRFEsRUFFUixLQUFLRCxpQkFGRyxFQUdSTyxHQUhRLEVBSVIsS0FBS2IscUJBSkcsRUFLUixLQUFLQyxtQkFMRyxFQU1SLEtBQUtDLDRCQU5HLEVBT1IsS0FBS0MsZUFQRyxFQVFSLEtBQUtDLGNBUkcsRUFTUixLQVRRLEVBVVIsS0FBS0MsT0FWRyxDQUFaO0FBWUEsV0FBS0csVUFBTCxDQUFnQkssR0FBaEIsSUFBdUJTLFNBQXZCO0FBQ0EsWUFBTUEsU0FBUyxDQUFDeUIsS0FBVixFQUFOO0FBQ0g7O0FBQ0QsV0FBT3pCLFNBQVA7QUFDSDs7QUF2SUwsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtaW1lIGZyb20gXCJtaW1lLXR5cGVzXCI7XG5cbmltcG9ydCB7IHJlYWRGb3JtQ29uZmlnIH0gZnJvbSBcIi4uLy4uLy4uL0J1aWxkVGFza3MvUmVzb2x2ZUZvcm1JbmZvXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHsgU3RyZWFtUmVzdWx0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcblxuaW1wb3J0IHsgQnVpbGRGb3JtRGV2U2VydmVyIH0gZnJvbSBcIi4vRGV2U2VydmVycy9CdWlsZEZvcm1EZXZTZXJ2ZXJcIjtcbmltcG9ydCB7IEZhcm1EaXJlY3RvcnkgfSBmcm9tIFwiLi9EaXJlY3Rvcmllcy9GYXJtRGlyZWN0b3J5XCI7XG5pbXBvcnQgeyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciB9IGZyb20gXCIuL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJ1aWxkRm9ybXNDb250cm9sbGVyXG4gICAgZXh0ZW5kcyBTaW5nbGV0b25Db250cm9sbGVyXG4gICAgaW1wbGVtZW50cyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclxue1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybURpcmVjdG9yeTogRmFybURpcmVjdG9yeTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBuZXh0RnJlZVBvcnQgPSAxMjAwMTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGRldlNlcnZlcnM6IHsgW2dmdjogc3RyaW5nXTogdW5kZWZpbmVkIHwgQnVpbGRGb3JtRGV2U2VydmVyIH0gPSB7fTtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgdXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlczogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGVuZ2luZURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgbmlnaHRseTogYm9vbGVhbjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IGJ1aWxkRGVidWdPbmx5OiBib29sZWFuO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGNhbmR5TW9kdWxlc0RpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmcsXG4gICAgICAgIHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM6IGJvb2xlYW4sXG4gICAgICAgIGVuZ2luZURpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBidWlsZERlYnVnT25seTogYm9vbGVhbixcbiAgICAgICAgbmlnaHRseTogYm9vbGVhbiA9IGZhbHNlXG4gICAgKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMubmlnaHRseSA9IG5pZ2h0bHk7XG4gICAgICAgIHRoaXMuZmFybURpcmVjdG9yeSA9IG5ldyBGYXJtRGlyZWN0b3J5KGZhcm1EaXJlY3RvcnkpO1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnlQYXRoID0gZmFybURpcmVjdG9yeTtcbiAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnkgPSBjYW5keU1vZHVsZXNEaXJlY3Rvcnk7XG4gICAgICAgIHRoaXMuaGxGYXJtRGlyZWN0b3J5UGF0aCA9IGhsRmFybURpcmVjdG9yeVBhdGg7XG4gICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyA9IHVzZUdlbmVyYXRvckZyb21Mb2NhbFNvdXJjZXM7XG4gICAgICAgIHRoaXMuZW5naW5lRGlyZWN0b3J5ID0gZW5naW5lRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5ID0gYnVpbGREZWJ1Z09ubHk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXG4gICAgICAgIC9eXFwvcHVibGljXFwvc2NyaXB0c1xcLygoKFxcZHs2LDd9KSguW1xcd1xcLV0qKT8oLm1pbik/KS5qcykkL2ksXG4gICAgICAgIGh0dHBSZXR1cm4uU3RyZWFtV2l0aE1pbWUoXCJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0XCIpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIwXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjFcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMlwiLCBodHRwVHlwZS5TdHJpbmcpXG4gICAgKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU2NyaXB0KGZpbGVOYW1lOiBzdHJpbmcsIGZpbGVOYW1lV2l0aG91dEV4dDogc3RyaW5nLCBnZnY6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEZpbGVBc1N0cmVhbShgc3RhdGljL3B1YmxpYy9zY3JpcHRzLyR7ZmlsZU5hbWV9YCkpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICAvXlxcL3B1YmxpY1xcL3N0eWxlc1xcLygoKFxcZHs2LDd9KSguW1xcd1xcLV0qKT8oLm1pbik/KS5jc3MpJC9pLFxuICAgICAgICBodHRwUmV0dXJuLlN0cmVhbVdpdGhNaW1lKFwidGV4dC9jc3NcIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjBcIiwgaHR0cFR5cGUuU3RyaW5nKSxcbiAgICAgICAgaHR0cFVybFBhcmFtKFwiMVwiLCBodHRwVHlwZS5TdHJpbmcpLFxuICAgICAgICBodHRwVXJsUGFyYW0oXCIyXCIsIGh0dHBUeXBlLlN0cmluZyksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcIjNcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVN0eWxlKFxuICAgICAgICBmaWxlTmFtZTogc3RyaW5nLFxuICAgICAgICBmaWxlTmFtZVdpdGhvdXRFeHQ6IHN0cmluZyxcbiAgICAgICAgZ2Z2OiBzdHJpbmcsXG4gICAgICAgIHRoZW1lOiB1bmRlZmluZWQgfCBzdHJpbmdcbiAgICApOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBidWlsZEZvcm1EZXZTZXJ2ZXIgPSBhd2FpdCB0aGlzLmdldE9yQ3JlYXRlQnVpbGRGb3JtRGV2U2VydmVyKGdmdik7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KFxuICAgICAgICAgICAgYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEZpbGVBc1N0cmVhbShgc3RhdGljL3B1YmxpYy9zdHlsZXMvJHtmaWxlTmFtZS5yZXBsYWNlKHRoZW1lID8/IFwiXCIsIFwiXCIpfWApXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHVibGljL2ltYWdlcy86ZmlsZW5hbWVcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImZpbGVuYW1lXCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZvcm1JbWFnZXMoZmlsZU5hbWU6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGZvciAoY29uc3QgZGV2U2VydmVyIG9mIE9iamVjdC52YWx1ZXModGhpcy5kZXZTZXJ2ZXJzKSkge1xuICAgICAgICAgICAgaWYgKGRldlNlcnZlciAhPSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChcbiAgICAgICAgICAgICAgICAgICAgICAgIGF3YWl0IGRldlNlcnZlci5nZXRGaWxlQXNTdHJlYW0oYHN0YXRpYy9wdWJsaWMvaW1hZ2VzLyR7ZmlsZU5hbWV9YCksXG4gICAgICAgICAgICAgICAgICAgICAgICBtaW1lLmxvb2t1cChmaWxlTmFtZSlcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICB9IGNhdGNoIChpZ25vcmVFcnJvcikge1xuICAgICAgICAgICAgICAgICAgICAvLyB0cnkgbmV4dCBzZXJ2ZXJcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kV2ViRXJyb3IoXCJGaWxlIG5vdCBmb3VuZFwiLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQXR0YWNobWVudFBhdGhGaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCByZXN1bHQ6IHN0cmluZ1tdID0gW107XG4gICAgICAgIGNvbnN0IGZhcm1Gb3JtSnNvbnMgPSBhd2FpdCB0aGlzLmZhcm1EaXJlY3RvcnkuZ2V0QWxsRm9ybUpzb25GaWxlcygpO1xuICAgICAgICBmb3IgKGNvbnN0IGZhcm1Gb3JtSnNvbiBvZiBmYXJtRm9ybUpzb25zKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChgJHtmYXJtRm9ybUpzb24uZ2Z2fS5ub3JtYWxpemVgKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudChnZnY6IHN0cmluZyk6IFByb21pc2U8Tm9kZUpTLlJlYWRhYmxlU3RyZWFtPiB7XG4gICAgICAgIGNvbnN0IGJ1aWxkRm9ybURldlNlcnZlciA9IGF3YWl0IHRoaXMuZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2KTtcbiAgICAgICAgY29uc3QgcmVzdWx0U3RyZWFtID0gYXdhaXQgYnVpbGRGb3JtRGV2U2VydmVyLmdldEdlbmVyYXRlZEZpbGVBc1N0cmVhbShgQXR0YWNobWVudFBhdGhzLmpzb25gKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdFN0cmVhbTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgZmFybUZvcm1Kc29ucyA9IGF3YWl0IHRoaXMuZmFybURpcmVjdG9yeS5nZXRBbGxGb3JtSnNvbkZpbGVzKCk7XG4gICAgICAgIGZvciAoY29uc3QgZmFybUZvcm1Kc29uIG9mIGZhcm1Gb3JtSnNvbnMpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1Kc29uUGF0aCA9IHRoaXMuZmFybURpcmVjdG9yeS5nZXRGb3JtSnNvblBhdGgoZmFybUZvcm1Kc29uLmdmdik7XG4gICAgICAgICAgICBjb25zdCBmb3JtQ29uZmlnID0gYXdhaXQgcmVhZEZvcm1Db25maWcoZm9ybUpzb25QYXRoLCBnZXRMb2dnZXIoKSk7XG4gICAgICAgICAgICBjb25zdCB1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uID0gZm9ybUNvbmZpZy5zZXR0aW5ncz8udXNlU2VydmVyU2lkZUZMYW5nTm9ybWFsaXphdGlvbiA/PyBmYWxzZTtcbiAgICAgICAgICAgIGlmICh1c2VTZXJ2ZXJTaWRlRkxhbmdOb3JtYWxpemF0aW9uKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goYCR7ZmFybUZvcm1Kc29uLmdmdn0ubm9ybWFsaXplYCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Tm9ybWFsaXphdGlvbkZpbGVDb250ZW50KGdmdjogc3RyaW5nKTogUHJvbWlzZTxOb2RlSlMuUmVhZGFibGVTdHJlYW0+IHtcbiAgICAgICAgY29uc3QgYnVpbGRGb3JtRGV2U2VydmVyID0gYXdhaXQgdGhpcy5nZXRPckNyZWF0ZUJ1aWxkRm9ybURldlNlcnZlcihnZnYpO1xuICAgICAgICBjb25zdCByZXN1bHRTdHJlYW0gPSBhd2FpdCBidWlsZEZvcm1EZXZTZXJ2ZXIuZ2V0R2VuZXJhdGVkRmlsZUFzU3RyZWFtKGBTZXJ2ZXJTaWRlLm5vcm1hbGl6ZWApO1xuICAgICAgICByZXR1cm4gcmVzdWx0U3RyZWFtO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2V0T3JDcmVhdGVCdWlsZEZvcm1EZXZTZXJ2ZXIoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEJ1aWxkRm9ybURldlNlcnZlcj4ge1xuICAgICAgICBsZXQgZGV2U2VydmVyID0gdGhpcy5kZXZTZXJ2ZXJzW2dmdl07XG4gICAgICAgIGlmIChkZXZTZXJ2ZXIgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICBkZXZTZXJ2ZXIgPSBuZXcgQnVpbGRGb3JtRGV2U2VydmVyKFxuICAgICAgICAgICAgICAgIHRoaXMubmV4dEZyZWVQb3J0KyssXG4gICAgICAgICAgICAgICAgdGhpcy5mYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgICAgICBnZnYsXG4gICAgICAgICAgICAgICAgdGhpcy5jYW5keU1vZHVsZXNEaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgdGhpcy5obEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgICAgIHRoaXMudXNlR2VuZXJhdG9yRnJvbUxvY2FsU291cmNlcyxcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZURpcmVjdG9yeSxcbiAgICAgICAgICAgICAgICB0aGlzLmJ1aWxkRGVidWdPbmx5LFxuICAgICAgICAgICAgICAgIGZhbHNlLFxuICAgICAgICAgICAgICAgIHRoaXMubmlnaHRseVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHRoaXMuZGV2U2VydmVyc1tnZnZdID0gZGV2U2VydmVyO1xuICAgICAgICAgICAgYXdhaXQgZGV2U2VydmVyLnN0YXJ0KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGRldlNlcnZlcjtcbiAgICB9XG59XG4iXX0=
|
|
@@ -17,9 +17,9 @@ var _SingletonController = require("../../../Commons/HttpServer/ExpressWrapper/S
|
|
|
17
17
|
|
|
18
18
|
var _dec, _dec2, _dec3, _dec4, _class;
|
|
19
19
|
|
|
20
|
-
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var
|
|
20
|
+
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); }
|
|
21
21
|
|
|
22
|
-
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (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; }
|
|
22
|
+
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; }
|
|
23
23
|
|
|
24
24
|
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) { var desc = {}; Object.keys(descriptor).forEach(function (key) { desc[key] = descriptor[key]; }); desc.enumerable = !!desc.enumerable; desc.configurable = !!desc.configurable; if ('value' in desc || desc.initializer) { desc.writable = true; } desc = decorators.slice().reverse().reduce(function (desc, decorator) { return decorator(target, property, desc) || desc; }, desc); if (context && desc.initializer !== void 0) { desc.value = desc.initializer ? desc.initializer.call(context) : void 0; desc.initializer = undefined; } if (desc.initializer === void 0) { Object.defineProperty(target, property, desc); desc = null; } return desc; }
|
|
25
25
|
|