@kontur.candy/tools 2.135.0 → 2.136.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.
Files changed (24) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +8 -0
  3. package/distr/Common/CandyApiClient/CandyApiClient.js +9 -1
  4. package/distr/Common/CandyApiClient/FakeCandyApiClient.js +5 -1
  5. package/distr/Common/KCLangRuntimeUtils.js +5 -1
  6. package/distr/Tools/src/BuildTasks/Form/GenerateForm.js +3 -3
  7. package/distr/Tools/src/BuildTasks/Generator/GeneratorWorker/CreateAsyncGenerator.js +2 -2
  8. package/distr/Tools/src/CLICommands/BuildServer/BuildServerServerOptions.js +25 -1
  9. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesController.js +99 -54
  10. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBackendResourcesUpdatesController.js +9 -9
  11. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerBuildFormsController.js +18 -13
  12. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/BuildServerFormInfoController.js +13 -8
  13. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/DevServers/BuildFormDevServer.js +48 -9
  14. package/distr/Tools/src/CLICommands/BuildServer/ResourcesControllers/Directories/FarmDirectory.js +8 -2
  15. package/distr/Tools/src/CLICommands/BuildServer/RunBuildServer.js +46 -11
  16. package/distr/Tools/src/CandyCLI.js +81 -29
  17. package/distr/Tools/src/Commons/Logging/Logger.js +2 -2
  18. package/distr/Tools/src/LocalServerFrontEndDist/index.js +1 -1
  19. package/distr/Tools/src/LocalServerFrontEndDist/index.js.map +1 -1
  20. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js +6 -1
  21. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.js.map +1 -1
  22. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js +19 -14
  23. package/distr/Tools/src/StaticFilesForProductionResourcesDir/client.min.js.map +1 -1
  24. package/package.json +1 -1
@@ -98,7 +98,7 @@ class GeneratorAsyncProxy {
98
98
 
99
99
  if (this.useGeneratorRestarting) {
100
100
  if (this.maxRequestNumber % 10 === 0) {
101
- console.log("Restaring generator");
101
+ console.log("Restarting generator");
102
102
  this.generatorProcess.kill();
103
103
  this.generatorProcess = undefined;
104
104
  this.generatorProcess = this.forkReadSourcesAndProcessSugarWorker();
@@ -206,4 +206,4 @@ function createAsyncGenerator(pathToGeneratorRootDir, purgeCache, useGeneratorRe
206
206
 
207
207
  return result;
208
208
  }
209
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0dlbmVyYXRvci9HZW5lcmF0b3JXb3JrZXIvQ3JlYXRlQXN5bmNHZW5lcmF0b3IudHMiXSwibmFtZXMiOlsiR2VuZXJhdG9yQXN5bmNQcm94eSIsImNvbnN0cnVjdG9yIiwicGF0aFRvR2VuZXJhdG9yUm9vdERpciIsInB1cmdlQ2FjaGUiLCJ1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nIiwibG9nZ2VyIiwiZ2VuZXJhdG9yU291cmNlc0ltcG9ydGVyIiwiZ2VuZXJhdG9yUHJvY2VzcyIsIm1heFJlcXVlc3ROdW1iZXIiLCJwcm9jZXNzU3VnYXJEZWZlcnJlZE1hcCIsIk1hcCIsIkdlbmVyYXRvclNvdXJjZXNJbXBvcnRlciIsImdldExvY2FsaXplZFN1Z2FyIiwic3VnYXJGaWxlcyIsInJlc291cmNlcyIsImxvY2FsaXphdGlvbkVudHJ5UG9pbnQiLCJpbXBvcnRMb2NhbGl6YXRpb24iLCJ1bmRlZmluZWQiLCJFcnJvciIsImdldERpY3Rpb25hcnkiLCJyZWFkU291cmNlcyIsImZvcm1Tb3VyY2VzUGF0aCIsImZhcm1EaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiaW1wb3J0UmVhZFNvdXJjZXMiLCJmb3JtU291cmNlIiwiZ2V0QWxsRGVwZW5kZW5jaWVzIiwiaW1wb3J0R2V0QWxsRGVwZW5kZW5jaWVzIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImltcG9ydEdldEFsbERlcGVuZGVuY2llc0hhc2giLCJyZWFkU291cmNlc0FuZFByb2Nlc3NTdWdhciIsImdlbmVyYXRpb25PcHRpb25zIiwiY3VycmVudFJlcXVlc3ROdW1iZXIiLCJwcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXQiLCJmb3JrUmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXJXb3JrZXIiLCJjb25zb2xlIiwibG9nIiwia2lsbCIsInNlbmQiLCJyZXN1bHQiLCJkZWxldGUiLCJwcm9jZXNzU3VnYXIiLCJmb3JrUHJvY2Vzc1N1Z2FyV29ya2VyIiwicHJvY2Vzc1N1Z2FyV29ya2VyIiwiY3dkIiwiX19kaXJuYW1lIiwib24iLCJyZXNwb25zZSIsImN1cnJlbnREZWZlcnJlZCIsImdldCIsInJlcXVlc3ROdW1iZXIiLCJ0eXBlIiwiZXJyb3JUZXh0IiwiZm9ybUNvbnRlbnQiLCJnZW5lcmF0ZWRGb3JtIiwia2V5IiwiZm9ybUNvbnRlbnRJdGVtIiwiQnVmZmVyIiwiZnJvbSIsInBheWxvYWQiLCJlbmNvZGluZyIsImVycm9yIiwiZ2VuZXJhdG9yc0NhY2hlIiwiY3JlYXRlQXN5bmNHZW5lcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFHQTs7QUFRQTs7QUFFQTs7QUFkQTtBQXNCQSxNQUFNQSxtQkFBTixDQUFtRDtBQVN4Q0MsRUFBQUEsV0FBVyxDQUNkQyxzQkFEYyxFQUVkQyxVQUZjLEVBR2RDLHNCQUhjLEVBSWRDLE1BQWUsR0FBRyw4QkFKSixFQUtoQjtBQUFBLFNBYmVILHNCQWFmO0FBQUEsU0FaZUksd0JBWWY7QUFBQSxTQVhlSCxVQVdmO0FBQUEsU0FWZUMsc0JBVWY7QUFBQSxTQVRNRyxnQkFTTjtBQUFBLFNBUk1DLGdCQVFOLEdBUnlCLENBUXpCO0FBQUEsU0FQZUMsdUJBT2YsR0FQNEUsSUFBSUMsR0FBSixFQU81RTtBQUNFLFNBQUtOLHNCQUFMLEdBQThCQSxzQkFBOUI7QUFDQSxTQUFLRixzQkFBTCxHQUE4QkEsc0JBQTlCO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQkEsVUFBbEI7QUFDQSxTQUFLRyx3QkFBTCxHQUFnQyxJQUFJSywrQ0FBSixDQUE2QlIsVUFBN0IsQ0FBaEM7QUFDSDs7QUFFNkIsUUFBakJTLGlCQUFpQixDQUFDQyxVQUFELEVBQTJCQyxTQUEzQixFQUE0RTtBQUN0RyxVQUFNQyxzQkFBc0IsR0FBRyxNQUFNLEtBQUtULHdCQUFMLENBQThCVSxrQkFBOUIsQ0FDakMsS0FBS2Qsc0JBRDRCLENB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QUFHLEVBQTlCOztBQUVBLGFBQUssTUFBTSxDQUFDZ0IsR0FBRCxFQUFNQyxlQUFOLENBQVgsSUFBcUMsbUNBQWVILFdBQWYsQ0FBckMsRUFBa0U7QUFDOURkLFVBQUFBLE1BQU0sQ0FBQ2dCLEdBQUQsQ0FBTixHQUNJLE9BQU9DLGVBQVAsS0FBMkIsUUFBM0IsR0FDTUEsZUFETixHQUVNQyxNQUFNLENBQUNDLElBQVAsQ0FBWUYsZUFBZSxDQUFDRyxPQUE1QixFQUFxQ0gsZUFBZSxDQUFDSSxRQUFyRCxDQUhWO0FBSUg7O0FBRURaLFFBQUFBLGVBQWUsQ0FBQ2pCLE9BQWhCLENBQXdCUSxNQUF4QjtBQUNIO0FBQ0osS0FwQkQ7QUFzQkFJLElBQUFBLGtCQUFrQixDQUFDRyxFQUFuQixDQUFzQixPQUF0QixFQUErQmUsS0FBSyxJQUFJO0FBQ3BDLFlBQU1BLEtBQU47QUFDSCxLQUZEO0FBSUEsV0FBT2xCLGtCQUFQO0FBQ0g7O0FBM084Qzs7QUE4T25ELE1BQU1tQixlQUFpRCxHQUFHLElBQUl6RCxHQUFKLEVBQTFEOztBQUVPLFNBQVMwRCxvQkFBVCxDQUNIbEUsc0JBREcsRUFFSEMsVUFGRyxFQUdIQyxzQkFIRyxFQUlVO0FBQ2IsTUFBSXdDLE1BQU0sR0FBR3VCLGVBQWUsQ0FBQ2IsR0FBaEIsQ0FBb0JwRCxzQkFBcEIsQ0FBYjs7QUFDQSxNQUFJMEMsTUFBTSxJQUFJM0IsU0FBZCxFQUF5QjtBQUNyQjJCLElBQUFBLE1BQU0sR0FBRyxJQUFJNUMsbUJBQUosQ0FBd0JFLHNCQUF4QixFQUFnREMsVUFBaEQsRUFBNERDLHNCQUE1RCxDQUFUO0FBQ0ErRCxJQUFBQSxlQUFlLENBQUM3QixHQUFoQixDQUFvQnBDLHNCQUFwQixFQUE0QzBDLE1BQTVDO0FBQ0g7O0FBQ0QsU0FBT0EsTUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBmb3JrIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcblxuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7XG4gICAgRm9ybUdlbmVyYXRvcixcbiAgICBHZW5lcmF0ZWRGb3JtLFxuICAgIEdlbmVyYXRpb25PcHRpb25zLFxuICAgIExvY2FsaXphdGlvbkRpY3Rpb25hcnlDb250ZW50LFxufSBmcm9tIFwiLi4vLi4vRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IEZvcm1SZXNvdXJjZXMsIEZvcm1Tb3VyY2UsIFN1Z2FyQ29udGVudCB9IGZyb20gXCIuLi8uLi9SZWFkRm9ybVNvdXJjZVwiO1xuaW1wb3J0IHsgaXRlcmF0ZUVudHJpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0l0ZXJhYmxlVXRpbHNcIjtcblxuaW1wb3J0IHsgR2VuZXJhdG9yU291cmNlc0ltcG9ydGVyIH0gZnJvbSBcIi4vR2VuZXJhdG9yUmVxdWlyZVV0aWxzXCI7XG5pbXBvcnQgeyBDYWxsUmVzcG9uc2UgfSBmcm9tIFwiLi9Qcm9jZXNzU3VnYXJXb3JrZXJcIjtcblxuaW50ZXJmYWNlIFByb2Nlc3NTdWdhckRlZmVycmVkIHtcbiAgICByZXNvbHZlOiAocmVzdWx0OiBHZW5lcmF0ZWRGb3JtKSA9PiB2b2lkO1xuICAgIHJlamVjdDogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkO1xufVxuXG5jbGFzcyBHZW5lcmF0b3JBc3luY1Byb3h5IGltcGxlbWVudHMgRm9ybUdlbmVyYXRvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXRoVG9HZW5lcmF0b3JSb290RGlyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXI6IEdlbmVyYXRvclNvdXJjZXNJbXBvcnRlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHB1cmdlQ2FjaGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgZ2VuZXJhdG9yUHJvY2Vzcz86IENoaWxkUHJvY2VzcztcbiAgICBwcml2YXRlIG1heFJlcXVlc3ROdW1iZXIgPSAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc1N1Z2FyRGVmZXJyZWRNYXA6IE1hcDxudW1iZXIsIFByb2Nlc3NTdWdhckRlZmVycmVkPiA9IG5ldyBNYXAoKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcGF0aFRvR2VuZXJhdG9yUm9vdERpcjogc3RyaW5nLFxuICAgICAgICBwdXJnZUNhY2hlOiBib29sZWFuLFxuICAgICAgICB1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nOiBib29sZWFuLFxuICAgICAgICBsb2dnZXI6IElMb2dnZXIgPSBnZXRMb2dnZXIoKVxuICAgICkge1xuICAgICAgICB0aGlzLnVzZUdlbmVyYXRvclJlc3RhcnRpbmcgPSB1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nO1xuICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXIgPSBwYXRoVG9HZW5lcmF0b3JSb290RGlyO1xuICAgICAgICB0aGlzLnB1cmdlQ2FjaGUgPSBwdXJnZUNhY2hlO1xuICAgICAgICB0aGlzLmdlbmVyYXRvclNvdXJjZXNJbXBvcnRlciA9IG5ldyBHZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXIocHVyZ2VDYWNoZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldExvY2FsaXplZFN1Z2FyKHN1Z2FyRmlsZXM6IFN1Z2FyQ29udGVudCwgcmVzb3VyY2VzOiBGb3JtUmVzb3VyY2VzKTogUHJvbWlzZTxTdWdhckNvbnRlbnQ+IHtcbiAgICAgICAgY29uc3QgbG9jYWxpemF0aW9uRW50cnlQb2ludCA9IGF3YWl0IHRoaXMuZ2VuZXJhdG9yU291cmNlc0ltcG9ydGVyLmltcG9ydExvY2FsaXphdGlvbihcbiAgICAgICAgICAgIHRoaXMucGF0aFRvR2VuZXJhdG9yUm9vdERpclxuICAgICAgICApO1xuICAgICAgICBpZiAobG9jYWxpemF0aW9uRW50cnlQb2ludCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcItCU0LDQvdC90LDRjyDQstC10YDRgdC40Y8g0LPQtdC90LXRgNCw0YLQvtGA0LAg0L3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0LvQvtC60LDQu9C40LfQsNGG0LjRji5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsaXphdGlvbkVudHJ5UG9pbnQuZ2V0TG9jYWxpemVkU3VnYXIoc3VnYXJGaWxlcywgcmVzb3VyY2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGljdGlvbmFyeShcbiAgICAgICAgc3VnYXJGaWxlczogU3VnYXJDb250ZW50LFxuICAgICAgICByZXNvdXJjZXM6IEZvcm1SZXNvdXJjZXNcbiAgICApOiBQcm9taXNlPExvY2FsaXphdGlvbkRpY3Rpb25hcnlDb250ZW50PiB7XG4gICAgICAgIGNvbnN0IGxvY2FsaXphdGlvbkVudHJ5UG9pbnQgPSBhd2FpdCB0aGlzLmdlbmVyYXRvclNvdXJjZXNJbXBvcnRlci5pbXBvcnRMb2NhbGl6YXRpb24oXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGxvY2FsaXphdGlvbkVudHJ5UG9pbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCLQlNCw0L3QvdCw0Y8g0LLQtdGA0YHQuNGPINCz0LXQvdC10YDQsNGC0L7RgNCwINC90LUg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCINC70L7QutCw0LvQuNC30LDRhtC40Y4uXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGl6YXRpb25FbnRyeVBvaW50LmdldERpY3Rpb25hcnkoc3VnYXJGaWxlcywgcmVzb3VyY2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVhZFNvdXJjZXMoXG4gICAgICAgIGZvcm1Tb3VyY2VzUGF0aDogc3RyaW5nLFxuICAgICAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuICAgICk6IFByb21pc2U8Rm9ybVNvdXJjZT4ge1xuICAgICAgICBjb25zdCByZWFkU291cmNlczogRm9ybUdlbmVyYXRvcltcInJlYWRTb3VyY2VzXCJdID0gYXdhaXQgdGhpcy5nZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXIuaW1wb3J0UmVhZFNvdXJjZXMoXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZm9ybVNvdXJjZSA9IGF3YWl0IHJlYWRTb3VyY2VzKGZvcm1Tb3VyY2VzUGF0aCwgZmFybURpcmVjdG9yeSwgaGxGYXJtRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1Tb3VyY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbERlcGVuZGVuY2llcyhcbiAgICAgICAgZm9ybVNvdXJjZXNQYXRoOiBzdHJpbmcsXG4gICAgICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCBnZXRBbGxEZXBlbmRlbmNpZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRvclNvdXJjZXNJbXBvcnRlci5pbXBvcnRHZXRBbGxEZXBlbmRlbmNpZXMoXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGdldEFsbERlcGVuZGVuY2llcyA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtU291cmNlID0gYXdhaXQgZ2V0QWxsRGVwZW5kZW5jaWVzKGZvcm1Tb3VyY2VzUGF0aCwgZmFybURpcmVjdG9yeSwgaGxGYXJtRGlyZWN0b3J5UGF0aCk7XG4gICAgICAgIHJldHVybiBmb3JtU291cmNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGdldEFsbERlcGVuZGVuY2llc0hhc2ggPSBhd2FpdCB0aGlzLmdlbmVyYXRvclNvdXJjZXNJbXBvcnRlci5pbXBvcnRHZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgdGhpcy5wYXRoVG9HZW5lcmF0b3JSb290RGlyXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBnZXRBbGxEZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgZm9ybVNvdXJjZXNQYXRoOiBzdHJpbmcsXG4gICAgICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCA9IGF3YWl0IHRoaXMuZ2VuZXJhdG9yU291cmNlc0ltcG9ydGVyLmltcG9ydEdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGdldEFsbERlcGVuZGVuY2llc0hhc2ggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnQgZGVwZW5kZW5jaWVzIGV4dHJhY3Rpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybVNvdXJjZSA9IGF3YWl0IGdldEFsbERlcGVuZGVuY2llc0hhc2goZm9ybVNvdXJjZXNQYXRoLCBmYXJtRGlyZWN0b3J5LCBobEZhcm1EaXJlY3RvcnlQYXRoKTtcbiAgICAgICAgcmV0dXJuIGZvcm1Tb3VyY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlYWRTb3VyY2VzQW5kUHJvY2Vzc1N1Z2FyKFxuICAgICAgICBmb3JtU291cmNlc1BhdGg6IHN0cmluZyxcbiAgICAgICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmcsXG4gICAgICAgIGdlbmVyYXRpb25PcHRpb25zPzogR2VuZXJhdGlvbk9wdGlvbnNcbiAgICApOiBQcm9taXNlPEdlbmVyYXRlZEZvcm0+IHtcbiAgICAgICAgdGhpcy5tYXhSZXF1ZXN0TnVtYmVyKys7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZXF1ZXN0TnVtYmVyID0gdGhpcy5tYXhSZXF1ZXN0TnVtYmVyO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8R2VuZXJhdGVkRm9ybT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzU3VnYXJEZWZlcnJlZE1hcC5zZXQoY3VycmVudFJlcXVlc3ROdW1iZXIsIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgICAgICAgICAgIHJlamVjdDogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5nZW5lcmF0b3JQcm9jZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRvclByb2Nlc3MgPSB0aGlzLmZvcmtSZWFkU291cmNlc0FuZFByb2Nlc3NTdWdhcldvcmtlcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnVzZUdlbmVyYXRvclJlc3RhcnRpbmcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1heFJlcXVlc3ROdW1iZXIgJSAxMCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVzdGFyaW5nIGdlbmVyYXRvclwiKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRvclByb2Nlc3Mua2lsbCgpO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdG9yUHJvY2VzcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRvclByb2Nlc3MgPSB0aGlzLmZvcmtSZWFkU291cmNlc0FuZFByb2Nlc3NTdWdhcldvcmtlcigpO1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVzdGFydGVkIGdlbmVyYXRvclwiKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ2VuZXJhdG9yUHJvY2Vzcy5zZW5kKFtcbiAgICAgICAgICAgIHRoaXMucGF0aFRvR2VuZXJhdG9yUm9vdERpcixcbiAgICAgICAgICAgIGZvcm1Tb3VyY2VzUGF0aCxcbiAgICAgICAgICAgIGZhcm1EaXJlY3RvcnksXG4gICAgICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoLFxuICAgICAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnMsXG4gICAgICAgICAgICB0aGlzLnB1cmdlQ2FjaGUsXG4gICAgICAgICAgICBjdXJyZW50UmVxdWVzdE51bWJlcixcbiAgICAgICAgXSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbWlzZTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3VnYXJEZWZlcnJlZE1hcC5kZWxldGUoY3VycmVudFJlcXVlc3ROdW1iZXIpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBwcm9jZXNzU3VnYXIoXG4gICAgICAgIHN1Z2FyRmlsZXM6IFN1Z2FyQ29udGVudCxcbiAgICAgICAgcmVzb3VyY2VzOiBGb3JtUmVzb3VyY2VzLFxuICAgICAgICBnZW5lcmF0aW9uT3B0aW9ucz86IEdlbmVyYXRpb25PcHRpb25zXG4gICAgKTogUHJvbWlzZTxHZW5lcmF0ZWRGb3JtPiB7XG4gICAgICAgIHRoaXMubWF4UmVxdWVzdE51bWJlcisrO1xuICAgICAgICBjb25zdCBjdXJyZW50UmVxdWVzdE51bWJlciA9IHRoaXMubWF4UmVxdWVzdE51bWJlcjtcbiAgICAgICAgY29uc3QgcHJvbWlzZSA9IG5ldyBQcm9taXNlPEdlbmVyYXRlZEZvcm0+KChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMucHJvY2Vzc1N1Z2FyRGVmZXJyZWRNYXAuc2V0KGN1cnJlbnRSZXF1ZXN0TnVtYmVyLCB7XG4gICAgICAgICAgICAgICAgcmVzb2x2ZTogcmVzb2x2ZSxcbiAgICAgICAgICAgICAgICByZWplY3Q6IHJlamVjdCxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXRoaXMuZ2VuZXJhdG9yUHJvY2Vzcykge1xuICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3JQcm9jZXNzID0gdGhpcy5mb3JrUHJvY2Vzc1N1Z2FyV29ya2VyKCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdlbmVyYXRvclByb2Nlc3Muc2VuZChbXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXIsXG4gICAgICAgICAgICBzdWdhckZpbGVzLFxuICAgICAgICAgICAgcmVzb3VyY2VzLFxuICAgICAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnMsXG4gICAgICAgICAgICB0aGlzLnB1cmdlQ2FjaGUsXG4gICAgICAgICAgICBjdXJyZW50UmVxdWVzdE51bWJlcixcbiAgICAgICAgXSk7XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgcHJvbWlzZTtcbiAgICAgICAgdGhpcy5wcm9jZXNzU3VnYXJEZWZlcnJlZE1hcC5kZWxldGUoY3VycmVudFJlcXVlc3ROdW1iZXIpO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ya1Byb2Nlc3NTdWdhcldvcmtlcigpOiBDaGlsZFByb2Nlc3Mge1xuICAgICAgICBjb25zdCBwcm9jZXNzU3VnYXJXb3JrZXIgPSBmb3JrKFwiLi9Qcm9jZXNzU3VnYXJXb3JrZXJcIiwgW10sIHtcbiAgICAgICAgICAgIGN3ZDogX19kaXJuYW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcm9jZXNzU3VnYXJXb3JrZXIub24oXCJtZXNzYWdlXCIsIChyZXNwb25zZTogQ2FsbFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGVmZXJyZWQgPSB0aGlzLnByb2Nlc3NTdWdhckRlZmVycmVkTWFwLmdldChyZXNwb25zZS5yZXF1ZXN0TnVtYmVyKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50RGVmZXJyZWQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPT09IFwiRXJyb3JcIikge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKHJlc3BvbnNlLmVycm9yVGV4dCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtQ29udGVudCA9IHJlc3BvbnNlLmdlbmVyYXRlZEZvcm07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBHZW5lcmF0ZWRGb3JtID0ge307XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIGZvcm1Db250ZW50SXRlbV0gb2YgaXRlcmF0ZUVudHJpZXMoZm9ybUNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBmb3JtQ29udGVudEl0ZW0gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZvcm1Db250ZW50SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQnVmZmVyLmZyb20oZm9ybUNvbnRlbnRJdGVtLnBheWxvYWQsIGZvcm1Db250ZW50SXRlbS5lbmNvZGluZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudERlZmVycmVkLnJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJvY2Vzc1N1Z2FyV29ya2VyLm9uKFwiZXJyb3JcIiwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzU3VnYXJXb3JrZXI7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmb3JrUmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXJXb3JrZXIoKTogQ2hpbGRQcm9jZXNzIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc1N1Z2FyV29ya2VyID0gZm9yayhcIi4vUmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXJXb3JrZXJcIiwgW10sIHtcbiAgICAgICAgICAgIGN3ZDogX19kaXJuYW1lLFxuICAgICAgICB9KTtcblxuICAgICAgICBwcm9jZXNzU3VnYXJXb3JrZXIub24oXCJtZXNzYWdlXCIsIChyZXNwb25zZTogQ2FsbFJlc3BvbnNlKSA9PiB7XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50RGVmZXJyZWQgPSB0aGlzLnByb2Nlc3NTdWdhckRlZmVycmVkTWFwLmdldChyZXNwb25zZS5yZXF1ZXN0TnVtYmVyKTtcbiAgICAgICAgICAgIGlmIChjdXJyZW50RGVmZXJyZWQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHJlc3BvbnNlLnR5cGUgPT09IFwiRXJyb3JcIikge1xuICAgICAgICAgICAgICAgIGN1cnJlbnREZWZlcnJlZC5yZWplY3QobmV3IEVycm9yKHJlc3BvbnNlLmVycm9yVGV4dCkpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmb3JtQ29udGVudCA9IHJlc3BvbnNlLmdlbmVyYXRlZEZvcm07XG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0OiBHZW5lcmF0ZWRGb3JtID0ge307XG5cbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IFtrZXksIGZvcm1Db250ZW50SXRlbV0gb2YgaXRlcmF0ZUVudHJpZXMoZm9ybUNvbnRlbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdFtrZXldID1cbiAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVvZiBmb3JtQ29udGVudEl0ZW0gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IGZvcm1Db250ZW50SXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQnVmZmVyLmZyb20oZm9ybUNvbnRlbnRJdGVtLnBheWxvYWQsIGZvcm1Db250ZW50SXRlbS5lbmNvZGluZyk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY3VycmVudERlZmVycmVkLnJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJvY2Vzc1N1Z2FyV29ya2VyLm9uKFwiZXJyb3JcIiwgZXJyb3IgPT4ge1xuICAgICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHJldHVybiBwcm9jZXNzU3VnYXJXb3JrZXI7XG4gICAgfVxufVxuXG5jb25zdCBnZW5lcmF0b3JzQ2FjaGU6IE1hcDxzdHJpbmcsIEdlbmVyYXRvckFzeW5jUHJveHk+ID0gbmV3IE1hcCgpO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXN5bmNHZW5lcmF0b3IoXG4gICAgcGF0aFRvR2VuZXJhdG9yUm9vdERpcjogc3RyaW5nLFxuICAgIHB1cmdlQ2FjaGU6IGJvb2xlYW4sXG4gICAgdXNlR2VuZXJhdG9yUmVzdGFydGluZzogYm9vbGVhblxuKTogRm9ybUdlbmVyYXRvciB7XG4gICAgbGV0IHJlc3VsdCA9IGdlbmVyYXRvcnNDYWNoZS5nZXQocGF0aFRvR2VuZXJhdG9yUm9vdERpcik7XG4gICAgaWYgKHJlc3VsdCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmVzdWx0ID0gbmV3IEdlbmVyYXRvckFzeW5jUHJveHkocGF0aFRvR2VuZXJhdG9yUm9vdERpciwgcHVyZ2VDYWNoZSwgdXNlR2VuZXJhdG9yUmVzdGFydGluZyk7XG4gICAgICAgIGdlbmVyYXRvcnNDYWNoZS5zZXQocGF0aFRvR2VuZXJhdG9yUm9vdERpciwgcmVzdWx0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
209
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9CdWlsZFRhc2tzL0dlbmVyYXRvci9HZW5lcmF0b3JXb3JrZXIvQ3JlYXRlQXN5bmNHZW5lcmF0b3IudHMiXSwibmFtZXMiOlsiR2VuZXJhdG9yQXN5bmNQcm94eSIsImNvbnN0cnVjdG9yIiwicGF0aFRvR2VuZXJhdG9yUm9vdERpciIsInB1cmdlQ2FjaGUiLCJ1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nIiwibG9nZ2VyIiwiZ2VuZXJhdG9yU291cmNlc0ltcG9ydGVyIiwiZ2VuZXJhdG9yUHJvY2VzcyIsIm1heFJlcXVlc3ROdW1iZXIiLCJwcm9jZXNzU3VnYXJEZWZlcnJlZE1hcCIsIk1hcCIsIkdlbmVyYXRvclNvdXJjZXNJbXBvcnRlciIsImdldExvY2FsaXplZFN1Z2FyIiwic3VnYXJGaWxlcyIsInJlc291cmNlcyIsImxvY2FsaXphdGlvbkVudHJ5UG9pbnQiLCJpbXBvcnRMb2NhbGl6YXRpb24iLCJ1bmRlZmluZWQiLCJFcnJvciIsImdldERpY3Rpb25hcnkiLCJyZWFkU291cmNlcyIsImZvcm1Tb3VyY2VzUGF0aCIsImZhcm1EaXJlY3RvcnkiLCJobEZhcm1EaXJlY3RvcnlQYXRoIiwiaW1wb3J0UmVhZFNvdXJjZXMiLCJmb3JtU291cmNlIiwiZ2V0QWxsRGVwZW5kZW5jaWVzIiwiaW1wb3J0R2V0QWxsRGVwZW5kZW5jaWVzIiwic3VwcG9ydHNEZXBlbmRlbmNpZXNFeHRyYWN0aW9uIiwiZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCIsImltcG9ydEdldEFsbERlcGVuZGVuY2llc0hhc2giLCJyZWFkU291cmNlc0FuZFByb2Nlc3NTdWdhciIsImdlbmVyYXRpb25PcHRpb25zIiwiY3VycmVudFJlcXVlc3ROdW1iZXIiLCJwcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzZXQiLCJmb3JrUmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXJXb3JrZXIiLCJjb25zb2xlIiwibG9nIiwia2lsbCIsInNlbmQiLCJyZXN1bHQiLCJkZWxldGUiLCJwcm9jZXNzU3VnYXIiLCJmb3JrUHJvY2Vzc1N1Z2FyV29ya2VyIiwicHJvY2Vzc1N1Z2FyV29ya2VyIiwiY3dkIiwiX19kaXJuYW1lIiwib24iLCJyZXNwb25zZSIsImN1cnJlbnREZWZlcnJlZCIsImdldCIsInJlcXVlc3ROdW1iZXIiLCJ0eXBlIiwiZXJyb3JUZXh0IiwiZm9ybUNvbnRlbnQiLCJnZW5lcmF0ZWRGb3JtIiwia2V5IiwiZm9ybUNvbnRlbnRJdGVtIiwiQnVmZmVyIiwiZnJvbSIsInBheWxvYWQiLCJlbmNvZGluZyIsImVycm9yIiwiZ2VuZXJhdG9yc0NhY2hlIiwiY3JlYXRlQXN5bmNHZW5lcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTs7QUFHQTs7QUFRQTs7QUFFQTs7QUFkQTtBQXNCQSxNQUFNQSxtQkFBTixDQUFtRDtBQVN4Q0MsRUFBQUEsV0FBVyxDQUNkQyxzQkFEYyxFQUVkQyxVQUZjLEVBR2RDLHNCQUhjLEVBSWRDLE1BQWUsR0FBRyw4QkFKSixFQUtoQjtBQUFBLFNBYmVILHNCQWFmO0FBQUEsU0FaZUksd0JBWWY7QUFBQSxTQVhlSCxVQVdmO0FBQUEsU0FWZUMsc0JBVWY7QUFBQSxTQVRNRyxnQkFTTjtBQUFBLFNBUk1DLGdCQVFOLEdBUnlCLENBUXpCO0FBQUEsU0FQZUMsdUJBT2YsR0FQNEUsSUFBSUMsR0FBSixFQU81RTtBQUNFLFNBQUtOLHNCQUFMLEdBQThCQSxzQkFBOUI7QUFDQSxTQUFLRixzQkFBTCxHQUE4QkEsc0JBQTlCO0FBQ0EsU0FBS0MsVUFBTCxHQUFrQkEsVUFBbEI7QUFDQSxTQUFLRyx3QkFBTCxHQUFnQyxJQUFJSywrQ0FBSixDQUE2QlIsVUFBN0IsQ0FBaEM7QUFDSDs7QUFFNkIsUUFBakJTLGlCQUFpQixDQUFDQyxVQUFELEVBQTJCQyxTQUEzQixFQUE0RTtBQUN0RyxVQUFNQyxzQkFBc0IsR0FBRyxNQUFNLEtBQUtULHdCQUFMLENBQThCVSxrQkFBOUIsQ0FDakMsS0FBS2Qsc0JBRDRCLENB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QUFHLEVBQTlCOztBQUVBLGFBQUssTUFBTSxDQUFDZ0IsR0FBRCxFQUFNQyxlQUFOLENBQVgsSUFBcUMsbUNBQWVILFdBQWYsQ0FBckMsRUFBa0U7QUFDOURkLFVBQUFBLE1BQU0sQ0FBQ2dCLEdBQUQsQ0FBTixHQUNJLE9BQU9DLGVBQVAsS0FBMkIsUUFBM0IsR0FDTUEsZUFETixHQUVNQyxNQUFNLENBQUNDLElBQVAsQ0FBWUYsZUFBZSxDQUFDRyxPQUE1QixFQUFxQ0gsZUFBZSxDQUFDSSxRQUFyRCxDQUhWO0FBSUg7O0FBRURaLFFBQUFBLGVBQWUsQ0FBQ2pCLE9BQWhCLENBQXdCUSxNQUF4QjtBQUNIO0FBQ0osS0FwQkQ7QUFzQkFJLElBQUFBLGtCQUFrQixDQUFDRyxFQUFuQixDQUFzQixPQUF0QixFQUErQmUsS0FBSyxJQUFJO0FBQ3BDLFlBQU1BLEtBQU47QUFDSCxLQUZEO0FBSUEsV0FBT2xCLGtCQUFQO0FBQ0g7O0FBM084Qzs7QUE4T25ELE1BQU1tQixlQUFpRCxHQUFHLElBQUl6RCxHQUFKLEVBQTFEOztBQUVPLFNBQVMwRCxvQkFBVCxDQUNIbEUsc0JBREcsRUFFSEMsVUFGRyxFQUdIQyxzQkFIRyxFQUlVO0FBQ2IsTUFBSXdDLE1BQU0sR0FBR3VCLGVBQWUsQ0FBQ2IsR0FBaEIsQ0FBb0JwRCxzQkFBcEIsQ0FBYjs7QUFDQSxNQUFJMEMsTUFBTSxJQUFJM0IsU0FBZCxFQUF5QjtBQUNyQjJCLElBQUFBLE1BQU0sR0FBRyxJQUFJNUMsbUJBQUosQ0FBd0JFLHNCQUF4QixFQUFnREMsVUFBaEQsRUFBNERDLHNCQUE1RCxDQUFUO0FBQ0ErRCxJQUFBQSxlQUFlLENBQUM3QixHQUFoQixDQUFvQnBDLHNCQUFwQixFQUE0QzBDLE1BQTVDO0FBQ0g7O0FBQ0QsU0FBT0EsTUFBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgbm8tY29uc29sZSAqL1xuaW1wb3J0IHsgQ2hpbGRQcm9jZXNzLCBmb3JrIH0gZnJvbSBcImNoaWxkX3Byb2Nlc3NcIjtcblxuaW1wb3J0IHsgSUxvZ2dlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0xvZ2dpbmcvSUxvZ2dlclwiO1xuaW1wb3J0IHsgZ2V0TG9nZ2VyIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvTG9nZ2luZy9TdGF0aWNMb2dnZXJcIjtcbmltcG9ydCB7XG4gICAgRm9ybUdlbmVyYXRvcixcbiAgICBHZW5lcmF0ZWRGb3JtLFxuICAgIEdlbmVyYXRpb25PcHRpb25zLFxuICAgIExvY2FsaXphdGlvbkRpY3Rpb25hcnlDb250ZW50LFxufSBmcm9tIFwiLi4vLi4vRm9ybS9HZW5lcmF0ZUZvcm1cIjtcbmltcG9ydCB7IEZvcm1SZXNvdXJjZXMsIEZvcm1Tb3VyY2UsIFN1Z2FyQ29udGVudCB9IGZyb20gXCIuLi8uLi9SZWFkRm9ybVNvdXJjZVwiO1xuaW1wb3J0IHsgaXRlcmF0ZUVudHJpZXMgfSBmcm9tIFwiLi4vLi4vLi4vLi4vLi4vQ29tbW9uL0l0ZXJhYmxlVXRpbHNcIjtcblxuaW1wb3J0IHsgR2VuZXJhdG9yU291cmNlc0ltcG9ydGVyIH0gZnJvbSBcIi4vR2VuZXJhdG9yUmVxdWlyZVV0aWxzXCI7XG5pbXBvcnQgeyBDYWxsUmVzcG9uc2UgfSBmcm9tIFwiLi9Qcm9jZXNzU3VnYXJXb3JrZXJcIjtcblxuaW50ZXJmYWNlIFByb2Nlc3NTdWdhckRlZmVycmVkIHtcbiAgICByZXNvbHZlOiAocmVzdWx0OiBHZW5lcmF0ZWRGb3JtKSA9PiB2b2lkO1xuICAgIHJlamVjdDogKGVycm9yOiB1bmtub3duKSA9PiB2b2lkO1xufVxuXG5jbGFzcyBHZW5lcmF0b3JBc3luY1Byb3h5IGltcGxlbWVudHMgRm9ybUdlbmVyYXRvciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBwYXRoVG9HZW5lcmF0b3JSb290RGlyOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXI6IEdlbmVyYXRvclNvdXJjZXNJbXBvcnRlcjtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHB1cmdlQ2FjaGU6IGJvb2xlYW47XG4gICAgcHJpdmF0ZSByZWFkb25seSB1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nOiBib29sZWFuO1xuICAgIHByaXZhdGUgZ2VuZXJhdG9yUHJvY2Vzcz86IENoaWxkUHJvY2VzcztcbiAgICBwcml2YXRlIG1heFJlcXVlc3ROdW1iZXIgPSAwO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc1N1Z2FyRGVmZXJyZWRNYXA6IE1hcDxudW1iZXIsIFByb2Nlc3NTdWdhckRlZmVycmVkPiA9IG5ldyBNYXAoKTtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihcbiAgICAgICAgcGF0aFRvR2VuZXJhdG9yUm9vdERpcjogc3RyaW5nLFxuICAgICAgICBwdXJnZUNhY2hlOiBib29sZWFuLFxuICAgICAgICB1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nOiBib29sZWFuLFxuICAgICAgICBsb2dnZXI6IElMb2dnZXIgPSBnZXRMb2dnZXIoKVxuICAgICkge1xuICAgICAgICB0aGlzLnVzZUdlbmVyYXRvclJlc3RhcnRpbmcgPSB1c2VHZW5lcmF0b3JSZXN0YXJ0aW5nO1xuICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXIgPSBwYXRoVG9HZW5lcmF0b3JSb290RGlyO1xuICAgICAgICB0aGlzLnB1cmdlQ2FjaGUgPSBwdXJnZUNhY2hlO1xuICAgICAgICB0aGlzLmdlbmVyYXRvclNvdXJjZXNJbXBvcnRlciA9IG5ldyBHZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXIocHVyZ2VDYWNoZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldExvY2FsaXplZFN1Z2FyKHN1Z2FyRmlsZXM6IFN1Z2FyQ29udGVudCwgcmVzb3VyY2VzOiBGb3JtUmVzb3VyY2VzKTogUHJvbWlzZTxTdWdhckNvbnRlbnQ+IHtcbiAgICAgICAgY29uc3QgbG9jYWxpemF0aW9uRW50cnlQb2ludCA9IGF3YWl0IHRoaXMuZ2VuZXJhdG9yU291cmNlc0ltcG9ydGVyLmltcG9ydExvY2FsaXphdGlvbihcbiAgICAgICAgICAgIHRoaXMucGF0aFRvR2VuZXJhdG9yUm9vdERpclxuICAgICAgICApO1xuICAgICAgICBpZiAobG9jYWxpemF0aW9uRW50cnlQb2ludCA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcItCU0LDQvdC90LDRjyDQstC10YDRgdC40Y8g0LPQtdC90LXRgNCw0YLQvtGA0LAg0L3QtSDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0LvQvtC60LDQu9C40LfQsNGG0LjRji5cIik7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGxvY2FsaXphdGlvbkVudHJ5UG9pbnQuZ2V0TG9jYWxpemVkU3VnYXIoc3VnYXJGaWxlcywgcmVzb3VyY2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RGljdGlvbmFyeShcbiAgICAgICAgc3VnYXJGaWxlczogU3VnYXJDb250ZW50LFxuICAgICAgICByZXNvdXJjZXM6IEZvcm1SZXNvdXJjZXNcbiAgICApOiBQcm9taXNlPExvY2FsaXphdGlvbkRpY3Rpb25hcnlDb250ZW50PiB7XG4gICAgICAgIGNvbnN0IGxvY2FsaXphdGlvbkVudHJ5UG9pbnQgPSBhd2FpdCB0aGlzLmdlbmVyYXRvclNvdXJjZXNJbXBvcnRlci5pbXBvcnRMb2NhbGl6YXRpb24oXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGxvY2FsaXphdGlvbkVudHJ5UG9pbnQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCLQlNCw0L3QvdCw0Y8g0LLQtdGA0YHQuNGPINCz0LXQvdC10YDQsNGC0L7RgNCwINC90LUg0L/QvtC00LTQtdGA0LbQuNCy0LDQtdGCINC70L7QutCw0LvQuNC30LDRhtC40Y4uXCIpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsb2NhbGl6YXRpb25FbnRyeVBvaW50LmdldERpY3Rpb25hcnkoc3VnYXJGaWxlcywgcmVzb3VyY2VzKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcmVhZFNvdXJjZXMoXG4gICAgICAgIGZvcm1Tb3VyY2VzUGF0aDogc3RyaW5nLFxuICAgICAgICBmYXJtRGlyZWN0b3J5OiBzdHJpbmcsXG4gICAgICAgIGhsRmFybURpcmVjdG9yeVBhdGg6IHN0cmluZ1xuICAgICk6IFByb21pc2U8Rm9ybVNvdXJjZT4ge1xuICAgICAgICBjb25zdCByZWFkU291cmNlczogRm9ybUdlbmVyYXRvcltcInJlYWRTb3VyY2VzXCJdID0gYXdhaXQgdGhpcy5nZW5lcmF0b3JTb3VyY2VzSW1wb3J0ZXIuaW1wb3J0UmVhZFNvdXJjZXMoXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZm9ybVNvdXJjZSA9IGF3YWl0IHJlYWRTb3VyY2VzKGZvcm1Tb3VyY2VzUGF0aCwgZmFybURpcmVjdG9yeSwgaGxGYXJtRGlyZWN0b3J5UGF0aCk7XG5cbiAgICAgICAgcmV0dXJuIGZvcm1Tb3VyY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEFsbERlcGVuZGVuY2llcyhcbiAgICAgICAgZm9ybVNvdXJjZXNQYXRoOiBzdHJpbmcsXG4gICAgICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICBjb25zdCBnZXRBbGxEZXBlbmRlbmNpZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRvclNvdXJjZXNJbXBvcnRlci5pbXBvcnRHZXRBbGxEZXBlbmRlbmNpZXMoXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGdldEFsbERlcGVuZGVuY2llcyA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlRoaXMgdmVyc2lvbiBvZiBnZW5lcmF0b3IgZG9lcyBub3Qgc3VwcG9ydCBkZXBlbmRlbmNpZXMgZXh0cmFjdGlvblwiKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBmb3JtU291cmNlID0gYXdhaXQgZ2V0QWxsRGVwZW5kZW5jaWVzKGZvcm1Tb3VyY2VzUGF0aCwgZmFybURpcmVjdG9yeSwgaGxGYXJtRGlyZWN0b3J5UGF0aCk7XG4gICAgICAgIHJldHVybiBmb3JtU291cmNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBzdXBwb3J0c0RlcGVuZGVuY2llc0V4dHJhY3Rpb24oKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGNvbnN0IGdldEFsbERlcGVuZGVuY2llc0hhc2ggPSBhd2FpdCB0aGlzLmdlbmVyYXRvclNvdXJjZXNJbXBvcnRlci5pbXBvcnRHZXRBbGxEZXBlbmRlbmNpZXNIYXNoKFxuICAgICAgICAgICAgdGhpcy5wYXRoVG9HZW5lcmF0b3JSb290RGlyXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBnZXRBbGxEZXBlbmRlbmNpZXNIYXNoICE9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaChcbiAgICAgICAgZm9ybVNvdXJjZXNQYXRoOiBzdHJpbmcsXG4gICAgICAgIGZhcm1EaXJlY3Rvcnk6IHN0cmluZyxcbiAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aDogc3RyaW5nXG4gICAgKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZ2V0QWxsRGVwZW5kZW5jaWVzSGFzaCA9IGF3YWl0IHRoaXMuZ2VuZXJhdG9yU291cmNlc0ltcG9ydGVyLmltcG9ydEdldEFsbERlcGVuZGVuY2llc0hhc2goXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXJcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGdldEFsbERlcGVuZGVuY2llc0hhc2ggPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJUaGlzIHZlcnNpb24gb2YgZ2VuZXJhdG9yIGRvZXMgbm90IHN1cHBvcnQgZGVwZW5kZW5jaWVzIGV4dHJhY3Rpb25cIik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZm9ybVNvdXJjZSA9IGF3YWl0IGdldEFsbERlcGVuZGVuY2llc0hhc2goZm9ybVNvdXJjZXNQYXRoLCBmYXJtRGlyZWN0b3J5LCBobEZhcm1EaXJlY3RvcnlQYXRoKTtcbiAgICAgICAgcmV0dXJuIGZvcm1Tb3VyY2U7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIHJlYWRTb3VyY2VzQW5kUHJvY2Vzc1N1Z2FyKFxuICAgICAgICBmb3JtU291cmNlc1BhdGg6IHN0cmluZyxcbiAgICAgICAgZmFybURpcmVjdG9yeTogc3RyaW5nLFxuICAgICAgICBobEZhcm1EaXJlY3RvcnlQYXRoOiBzdHJpbmcsXG4gICAgICAgIGdlbmVyYXRpb25PcHRpb25zPzogR2VuZXJhdGlvbk9wdGlvbnNcbiAgICApOiBQcm9taXNlPEdlbmVyYXRlZEZvcm0+IHtcbiAgICAgICAgdGhpcy5tYXhSZXF1ZXN0TnVtYmVyKys7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRSZXF1ZXN0TnVtYmVyID0gdGhpcy5tYXhSZXF1ZXN0TnVtYmVyO1xuICAgICAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8R2VuZXJhdGVkRm9ybT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5wcm9jZXNzU3VnYXJEZWZlcnJlZE1hcC5zZXQoY3VycmVudFJlcXVlc3ROdW1iZXIsIHtcbiAgICAgICAgICAgICAgICByZXNvbHZlOiByZXNvbHZlLFxuICAgICAgICAgICAgICAgIHJlamVjdDogcmVqZWN0LFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghdGhpcy5nZW5lcmF0b3JQcm9jZXNzKSB7XG4gICAgICAgICAgICB0aGlzLmdlbmVyYXRvclByb2Nlc3MgPSB0aGlzLmZvcmtSZWFkU291cmNlc0FuZFByb2Nlc3NTdWdhcldvcmtlcigpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0aGlzLnVzZUdlbmVyYXRvclJlc3RhcnRpbmcpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm1heFJlcXVlc3ROdW1iZXIgJSAxMCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiUmVzdGFydGluZyBnZW5lcmF0b3JcIik7XG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3JQcm9jZXNzLmtpbGwoKTtcbiAgICAgICAgICAgICAgICB0aGlzLmdlbmVyYXRvclByb2Nlc3MgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0b3JQcm9jZXNzID0gdGhpcy5mb3JrUmVhZFNvdXJjZXNBbmRQcm9jZXNzU3VnYXJXb3JrZXIoKTtcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhcIlJlc3RhcnRlZCBnZW5lcmF0b3JcIik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmdlbmVyYXRvclByb2Nlc3Muc2VuZChbXG4gICAgICAgICAgICB0aGlzLnBhdGhUb0dlbmVyYXRvclJvb3REaXIsXG4gICAgICAgICAgICBmb3JtU291cmNlc1BhdGgsXG4gICAgICAgICAgICBmYXJtRGlyZWN0b3J5LFxuICAgICAgICAgICAgaGxGYXJtRGlyZWN0b3J5UGF0aCxcbiAgICAgICAgICAgIGdlbmVyYXRpb25PcHRpb25zLFxuICAgICAgICAgICAgdGhpcy5wdXJnZUNhY2hlLFxuICAgICAgICAgICAgY3VycmVudFJlcXVlc3ROdW1iZXIsXG4gICAgICAgIF0pO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb21pc2U7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N1Z2FyRGVmZXJyZWRNYXAuZGVsZXRlKGN1cnJlbnRSZXF1ZXN0TnVtYmVyKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgcHJvY2Vzc1N1Z2FyKFxuICAgICAgICBzdWdhckZpbGVzOiBTdWdhckNvbnRlbnQsXG4gICAgICAgIHJlc291cmNlczogRm9ybVJlc291cmNlcyxcbiAgICAgICAgZ2VuZXJhdGlvbk9wdGlvbnM/OiBHZW5lcmF0aW9uT3B0aW9uc1xuICAgICk6IFByb21pc2U8R2VuZXJhdGVkRm9ybT4ge1xuICAgICAgICB0aGlzLm1heFJlcXVlc3ROdW1iZXIrKztcbiAgICAgICAgY29uc3QgY3VycmVudFJlcXVlc3ROdW1iZXIgPSB0aGlzLm1heFJlcXVlc3ROdW1iZXI7XG4gICAgICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTxHZW5lcmF0ZWRGb3JtPigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgICAgICB0aGlzLnByb2Nlc3NTdWdhckRlZmVycmVkTWFwLnNldChjdXJyZW50UmVxdWVzdE51bWJlciwge1xuICAgICAgICAgICAgICAgIHJlc29sdmU6IHJlc29sdmUsXG4gICAgICAgICAgICAgICAgcmVqZWN0OiByZWplY3QsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCF0aGlzLmdlbmVyYXRvclByb2Nlc3MpIHtcbiAgICAgICAgICAgIHRoaXMuZ2VuZXJhdG9yUHJvY2VzcyA9IHRoaXMuZm9ya1Byb2Nlc3NTdWdhcldvcmtlcigpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5nZW5lcmF0b3JQcm9jZXNzLnNlbmQoW1xuICAgICAgICAgICAgdGhpcy5wYXRoVG9HZW5lcmF0b3JSb290RGlyLFxuICAgICAgICAgICAgc3VnYXJGaWxlcyxcbiAgICAgICAgICAgIHJlc291cmNlcyxcbiAgICAgICAgICAgIGdlbmVyYXRpb25PcHRpb25zLFxuICAgICAgICAgICAgdGhpcy5wdXJnZUNhY2hlLFxuICAgICAgICAgICAgY3VycmVudFJlcXVlc3ROdW1iZXIsXG4gICAgICAgIF0pO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHByb21pc2U7XG4gICAgICAgIHRoaXMucHJvY2Vzc1N1Z2FyRGVmZXJyZWRNYXAuZGVsZXRlKGN1cnJlbnRSZXF1ZXN0TnVtYmVyKTtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGZvcmtQcm9jZXNzU3VnYXJXb3JrZXIoKTogQ2hpbGRQcm9jZXNzIHtcbiAgICAgICAgY29uc3QgcHJvY2Vzc1N1Z2FyV29ya2VyID0gZm9yayhcIi4vUHJvY2Vzc1N1Z2FyV29ya2VyXCIsIFtdLCB7XG4gICAgICAgICAgICBjd2Q6IF9fZGlybmFtZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJvY2Vzc1N1Z2FyV29ya2VyLm9uKFwibWVzc2FnZVwiLCAocmVzcG9uc2U6IENhbGxSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERlZmVycmVkID0gdGhpcy5wcm9jZXNzU3VnYXJEZWZlcnJlZE1hcC5nZXQocmVzcG9uc2UucmVxdWVzdE51bWJlcik7XG4gICAgICAgICAgICBpZiAoY3VycmVudERlZmVycmVkID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID09PSBcIkVycm9yXCIpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50RGVmZXJyZWQucmVqZWN0KG5ldyBFcnJvcihyZXNwb25zZS5lcnJvclRleHQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRlbnQgPSByZXNwb25zZS5nZW5lcmF0ZWRGb3JtO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogR2VuZXJhdGVkRm9ybSA9IHt9O1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCBmb3JtQ29udGVudEl0ZW1dIG9mIGl0ZXJhdGVFbnRyaWVzKGZvcm1Db250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZm9ybUNvbnRlbnRJdGVtID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmb3JtQ29udGVudEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEJ1ZmZlci5mcm9tKGZvcm1Db250ZW50SXRlbS5wYXlsb2FkLCBmb3JtQ29udGVudEl0ZW0uZW5jb2RpbmcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnREZWZlcnJlZC5yZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByb2Nlc3NTdWdhcldvcmtlci5vbihcImVycm9yXCIsIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcHJvY2Vzc1N1Z2FyV29ya2VyO1xuICAgIH1cblxuICAgIHByaXZhdGUgZm9ya1JlYWRTb3VyY2VzQW5kUHJvY2Vzc1N1Z2FyV29ya2VyKCk6IENoaWxkUHJvY2VzcyB7XG4gICAgICAgIGNvbnN0IHByb2Nlc3NTdWdhcldvcmtlciA9IGZvcmsoXCIuL1JlYWRTb3VyY2VzQW5kUHJvY2Vzc1N1Z2FyV29ya2VyXCIsIFtdLCB7XG4gICAgICAgICAgICBjd2Q6IF9fZGlybmFtZSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcHJvY2Vzc1N1Z2FyV29ya2VyLm9uKFwibWVzc2FnZVwiLCAocmVzcG9uc2U6IENhbGxSZXNwb25zZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgY3VycmVudERlZmVycmVkID0gdGhpcy5wcm9jZXNzU3VnYXJEZWZlcnJlZE1hcC5nZXQocmVzcG9uc2UucmVxdWVzdE51bWJlcik7XG4gICAgICAgICAgICBpZiAoY3VycmVudERlZmVycmVkID09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChyZXNwb25zZS50eXBlID09PSBcIkVycm9yXCIpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50RGVmZXJyZWQucmVqZWN0KG5ldyBFcnJvcihyZXNwb25zZS5lcnJvclRleHQpKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZm9ybUNvbnRlbnQgPSByZXNwb25zZS5nZW5lcmF0ZWRGb3JtO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogR2VuZXJhdGVkRm9ybSA9IHt9O1xuXG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBba2V5LCBmb3JtQ29udGVudEl0ZW1dIG9mIGl0ZXJhdGVFbnRyaWVzKGZvcm1Db250ZW50KSkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHRba2V5XSA9XG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlb2YgZm9ybUNvbnRlbnRJdGVtID09PSBcInN0cmluZ1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmb3JtQ29udGVudEl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEJ1ZmZlci5mcm9tKGZvcm1Db250ZW50SXRlbS5wYXlsb2FkLCBmb3JtQ29udGVudEl0ZW0uZW5jb2RpbmcpO1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGN1cnJlbnREZWZlcnJlZC5yZXNvbHZlKHJlc3VsdCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgICAgIHByb2Nlc3NTdWdhcldvcmtlci5vbihcImVycm9yXCIsIGVycm9yID0+IHtcbiAgICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gcHJvY2Vzc1N1Z2FyV29ya2VyO1xuICAgIH1cbn1cblxuY29uc3QgZ2VuZXJhdG9yc0NhY2hlOiBNYXA8c3RyaW5nLCBHZW5lcmF0b3JBc3luY1Byb3h5PiA9IG5ldyBNYXAoKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFzeW5jR2VuZXJhdG9yKFxuICAgIHBhdGhUb0dlbmVyYXRvclJvb3REaXI6IHN0cmluZyxcbiAgICBwdXJnZUNhY2hlOiBib29sZWFuLFxuICAgIHVzZUdlbmVyYXRvclJlc3RhcnRpbmc6IGJvb2xlYW5cbik6IEZvcm1HZW5lcmF0b3Ige1xuICAgIGxldCByZXN1bHQgPSBnZW5lcmF0b3JzQ2FjaGUuZ2V0KHBhdGhUb0dlbmVyYXRvclJvb3REaXIpO1xuICAgIGlmIChyZXN1bHQgPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJlc3VsdCA9IG5ldyBHZW5lcmF0b3JBc3luY1Byb3h5KHBhdGhUb0dlbmVyYXRvclJvb3REaXIsIHB1cmdlQ2FjaGUsIHVzZUdlbmVyYXRvclJlc3RhcnRpbmcpO1xuICAgICAgICBnZW5lcmF0b3JzQ2FjaGUuc2V0KHBhdGhUb0dlbmVyYXRvclJvb3REaXIsIHJlc3VsdCk7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG4iXX0=
@@ -19,6 +19,18 @@ const buildServerCommandDefinition = (0, _CommandBasedOptionsParser.commandDefin
19
19
  defaultOption: true,
20
20
  multiple: true,
21
21
  description: "Опция устарела. Оставлена для обратной совместимости."
22
+ }, {
23
+ alias: "a",
24
+ name: "all-farm-dir",
25
+ defaultValue: {
26
+ allFarmsDir: []
27
+ },
28
+ parse: input => ({
29
+ allFarmsDir: input
30
+ }),
31
+ defaultOption: false,
32
+ multiple: true,
33
+ description: "Позволяет передать массив путей до всех фармов candy, чтобы открывать из всех них формы. Путь передавать относительно keforms.engine"
22
34
  }, {
23
35
  name: "nightly",
24
36
  defaultValue: {
@@ -66,6 +78,18 @@ const devBuildServerCommandDefinition = (0, _CommandBasedOptionsParser.commandDe
66
78
  defaultOption: true,
67
79
  multiple: true,
68
80
  description: "Одна или несколько GFV или GFV-масок для пересобрки."
81
+ }, {
82
+ alias: "a",
83
+ name: "all-farm-dir",
84
+ defaultValue: {
85
+ allFarmsDir: []
86
+ },
87
+ parse: input => ({
88
+ allFarmsDir: input
89
+ }),
90
+ defaultOption: false,
91
+ multiple: true,
92
+ description: "Позволяет передать массив путей до всех фармов candy, чтобы открывать из всех них формы. Путь передавать относительно keforms.engine"
69
93
  }, {
70
94
  name: "no-client-override",
71
95
  defaultValue: {
@@ -91,4 +115,4 @@ const devBuildServerCommandDefinition = (0, _CommandBasedOptionsParser.commandDe
91
115
  description: "Magic"
92
116
  });
93
117
  exports.devBuildServerCommandDefinition = devBuildServerCommandDefinition;
94
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9CdWlsZFNlcnZlclNlcnZlck9wdGlvbnMudHMiXSwibmFtZXMiOlsiYnVpbGRTZXJ2ZXJDb21tYW5kRGVmaW5pdGlvbiIsImFsaWFzIiwibmFtZSIsImRlZmF1bHRWYWx1ZSIsInBhcnNlIiwiaW5wdXQiLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJkZXNjcmlwdGlvbiIsIm5pZ2h0bHkiLCJkb2VzTm90UmVxdWlyZVZhbHVlIiwiZGlzYWJsZUNsaWVudE92ZXJyaWRlIiwic2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmciLCJkZWJ1Z09ubHlPcHRpb25EZWZpbml0aW9uIiwiZGV2TW9kZU9wdGlvbiIsImxvZ1ZlcmJvc2l0eU9wdGlvbiIsImRldkJ1aWxkU2VydmVyQ29tbWFuZERlZmluaXRpb24iLCJmb3JtR2xvYnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFjTyxNQUFNQSw0QkFBNEIsR0FBRyxrREFDeEMsY0FEd0MsRUFFeEMsY0FGd0MsRUFHeEMsa0RBQ0k7QUFDSUMsRUFBQUEsS0FBSyxFQUFFLEdBRFg7QUFFSUMsRUFBQUEsSUFBSSxFQUFFLE1BRlY7QUFHSUMsRUFBQUEsWUFBWSxFQUFFLEVBSGxCO0FBSUlDLEVBQUFBLEtBQUssRUFBR0MsS0FBRCxLQUFzQixFQUF0QixDQUpYO0FBS0lDLEVBQUFBLGFBQWEsRUFBRSxJQUxuQjtBQU1JQyxFQUFBQSxRQUFRLEVBQUUsSUFOZDtBQU9JQyxFQUFBQSxXQUFXLEVBQUU7QUFQakIsQ0FESixFQVVJO0FBQ0lOLEVBQUFBLElBQUksRUFBRSxTQURWO0FBRUlDLEVBQUFBLFlBQVksRUFBRTtBQUFFTSxJQUFBQSxPQUFPLEVBQUU7QUFBWCxHQUZsQjtBQUdJTCxFQUFBQSxLQUFLLEVBQUVDLEtBQUssS0FBSztBQUFFSSxJQUFBQSxPQUFPLEVBQUVKO0FBQVgsR0FBTCxDQUhoQjtBQUlJSyxFQUFBQSxtQkFBbUIsRUFBRSxJQUp6QjtBQUtJRixFQUFBQSxXQUFXLEVBQUU7QUFMakIsQ0FWSixFQWlCSTtBQUNJTixFQUFBQSxJQUFJLEVBQUUsb0JBRFY7QUFFSUMsRUFBQUEsWUFBWSxFQUFFO0FBQUVRLElBQUFBLHFCQUFxQixFQUFFO0FBQXpCLEdBRmxCO0FBR0lQLEVBQUFBLEtBQUssRUFBRUMsS0FBSyxLQUFLO0FBQUVNLElBQUFBLHFCQUFxQixFQUFFTjtBQUF6QixHQUFMLENBSGhCO0FBSUlLLEVBQUFBLG1CQUFtQixFQUFFLElBSnpCO0FBS0lGLEVBQUFBLFdBQVcsRUFDUDtBQU5SLENBakJKLEVBeUJJO0FBQ0lOLEVBQUFBLElBQUksRUFBRSxVQURWO0FBRUlELEVBQUFBLEtBQUssRUFBRSxHQUZYO0FBR0lTLEVBQUFBLG1CQUFtQixFQUFFLElBSHpCO0FBSUlQLEVBQUFBLFlBQVksRUFBRTtBQUFFUyxJQUFBQSw2QkFBNkIsRUFBRTtBQUFqQyxHQUpsQjtBQUtJUixFQUFBQSxLQUFLLEVBQUdDLEtBQUQsS0FBcUI7QUFBRU8sSUFBQUEsNkJBQTZCLEVBQUUsQ0FBQ1A7QUFBbEMsR0FBckIsQ0FMWDtBQU1JRyxFQUFBQSxXQUFXLEVBQ1A7QUFQUixDQXpCSixFQWtDSUssK0NBbENKLEVBbUNJQyxxQ0FuQ0osRUFvQ0lDLDBDQXBDSixDQUh3QyxFQXlDeEM7QUFDSVAsRUFBQUEsV0FBVyxFQUFFO0FBRGpCLENBekN3QyxDQUFyQzs7QUE4Q0EsTUFBTVEsK0JBQStCLEdBQUcsa0RBQzNDLGtCQUQyQyxFQUUzQyxrQkFGMkMsRUFHM0Msa0RBQ0k7QUFDSWYsRUFBQUEsS0FBSyxFQUFFLEdBRFg7QUFFSUMsRUFBQUEsSUFBSSxFQUFFLE1BRlY7QUFHSUMsRUFBQUEsWUFBWSxFQUFFO0FBQUVjLElBQUFBLFNBQVMsRUFBRSxDQUFDLEdBQUQ7QUFBYixHQUhsQjtBQUlJYixFQUFBQSxLQUFLLEVBQUdDLEtBQUQsS0FBc0I7QUFBRVksSUFBQUEsU0FBUyxFQUFFWjtBQUFiLEdBQXRCLENBSlg7QUFLSUMsRUFBQUEsYUFBYSxFQUFFLElBTG5CO0FBTUlDLEVBQUFBLFFBQVEsRUFBRSxJQU5kO0FBT0lDLEVBQUFBLFdBQVcsRUFBRTtBQVBqQixDQURKLEVBVUk7QUFDSU4sRUFBQUEsSUFBSSxFQUFFLG9CQURWO0FBRUlDLEVBQUFBLFlBQVksRUFBRTtBQUFFUSxJQUFBQSxxQkFBcUIsRUFBRTtBQUF6QixHQUZsQjtBQUdJUCxFQUFBQSxLQUFLLEVBQUVDLEtBQUssS0FBSztBQUFFTSxJQUFBQSxxQkFBcUIsRUFBRU47QUFBekIsR0FBTCxDQUhoQjtBQUlJSyxFQUFBQSxtQkFBbUIsRUFBRSxJQUp6QjtBQUtJRixFQUFBQSxXQUFXLEVBQ1A7QUFOUixDQVZKLEVBa0JJO0FBQ0lOLEVBQUFBLElBQUksRUFBRSxVQURWO0FBRUlELEVBQUFBLEtBQUssRUFBRSxHQUZYO0FBR0lTLEVBQUFBLG1CQUFtQixFQUFFLElBSHpCO0FBSUlQLEVBQUFBLFlBQVksRUFBRTtBQUFFUyxJQUFBQSw2QkFBNkIsRUFBRTtBQUFqQyxHQUpsQjtBQUtJUixFQUFBQSxLQUFLLEVBQUdDLEtBQUQsS0FBcUI7QUFBRU8sSUFBQUEsNkJBQTZCLEVBQUUsQ0FBQ1A7QUFBbEMsR0FBckIsQ0FMWDtBQU1JRyxFQUFBQSxXQUFXLEVBQ1A7QUFQUixDQWxCSixFQTJCSUssK0NBM0JKLEVBNEJJQyxxQ0E1QkosRUE2QklDLDBDQTdCSixDQUgyQyxFQWtDM0M7QUFDSVAsRUFBQUEsV0FBVyxFQUFFO0FBRGpCLENBbEMyQyxDQUF4QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbW1hbmREZWZpbml0aW9uLCBvcHRpb25zRGVmaW5pdGlvbiB9IGZyb20gXCIuLi8uLi9Db21tb25zL09wdGlvbnMvQ29tbWFuZEJhc2VkT3B0aW9uc1BhcnNlclwiO1xuaW1wb3J0IHsgQnVpbGREZWJ1Z09ubHlPcHRpb24sIGRlYnVnT25seU9wdGlvbkRlZmluaXRpb24gfSBmcm9tIFwiLi4vQ29tbW9uT3B0aW9ucy9CdWlsZERlYnVnT25seU9wdGlvblwiO1xuaW1wb3J0IHsgQ29tbW9uT3B0aW9ucyB9IGZyb20gXCIuLi9Db21tb25PcHRpb25zL0NvbW1vbk9wdGlvbnNcIjtcbmltcG9ydCB7IGRldk1vZGVPcHRpb24sIGxvZ1ZlcmJvc2l0eU9wdGlvbiB9IGZyb20gXCIuLi9Db21tb25PcHRpb25zL0NvbW1vbk9wdGlvbkRlZmludGlvbnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNlcnZlck9wdGlvbnMgZXh0ZW5kcyBDb21tb25PcHRpb25zLCBCdWlsZERlYnVnT25seU9wdGlvbiB7XG4gICAgZGlzYWJsZUNsaWVudE92ZXJyaWRlOiBib29sZWFuO1xuICAgIHNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nOiBib29sZWFuO1xuICAgIG5pZ2h0bHk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGV2QnVpbGRTZXJ2ZXJPcHRpb25zIGV4dGVuZHMgQ29tbW9uT3B0aW9ucywgQnVpbGREZWJ1Z09ubHlPcHRpb24ge1xuICAgIGZvcm1HbG9iczogc3RyaW5nW107XG4gICAgZGlzYWJsZUNsaWVudE92ZXJyaWRlOiBib29sZWFuO1xuICAgIHNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nOiBib29sZWFuO1xufVxuXG5leHBvcnQgY29uc3QgYnVpbGRTZXJ2ZXJDb21tYW5kRGVmaW5pdGlvbiA9IGNvbW1hbmREZWZpbml0aW9uPFwiYnVpbGQtc2VydmVyXCIsIEJ1aWxkU2VydmVyT3B0aW9ucz4oXG4gICAgXCJidWlsZC1zZXJ2ZXJcIixcbiAgICBcImJ1aWxkLXNlcnZlclwiLFxuICAgIG9wdGlvbnNEZWZpbml0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgICBhbGlhczogXCJnXCIsXG4gICAgICAgICAgICBuYW1lOiBcImdmdnNcIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZToge30sXG4gICAgICAgICAgICBwYXJzZTogKGlucHV0OiBzdHJpbmdbXSkgPT4gKHt9KSxcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcItCe0L/RhtC40Y8g0YPRgdGC0LDRgNC10LvQsC4g0J7RgdGC0LDQstC70LXQvdCwINC00LvRjyDQvtCx0YDQsNGC0L3QvtC5INGB0L7QstC80LXRgdGC0LjQvNC+0YHRgtC4LlwiLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiBcIm5pZ2h0bHlcIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyBuaWdodGx5OiBmYWxzZSB9LFxuICAgICAgICAgICAgcGFyc2U6IGlucHV0ID0+ICh7IG5pZ2h0bHk6IGlucHV0IH0pLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcItCS0LrQu9GO0YfQsNC10YIg0YHQsdC+0YDQutGDINGE0L7RgNC8INC90LAg0LTQstC40LbQutC1IG5pZ2h0bHkuXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwibm8tY2xpZW50LW92ZXJyaWRlXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgZGlzYWJsZUNsaWVudE92ZXJyaWRlOiBmYWxzZSB9LFxuICAgICAgICAgICAgcGFyc2U6IGlucHV0ID0+ICh7IGRpc2FibGVDbGllbnRPdmVycmlkZTogaW5wdXQgfSksXG4gICAgICAgICAgICBkb2VzTm90UmVxdWlyZVZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgXCLQntGC0LrQu9GO0YfQsNC10YIg0L/QtdGA0LXRhdCy0LDRgiBjbGllbnQuanMuINCSINGN0YLQvtC8INGB0LvRg9GH0LDQtSDQvdC1INCx0YPQtNC10YIg0YDQsNCx0L7RgtCw0YLRjCDQvtGC0L7QsdGA0LDQttC10L3QuNC1INC70L7Qs9C+0LIg0YHQsdC+0YDQutC4INC4INC+0LbQuNC00LDQvdC40Y8g0YHQsdC+0YDQutC4INGE0L7RgNC80YsuXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwicmVmb3JtYXRcIixcbiAgICAgICAgICAgIGFsaWFzOiBcInJcIixcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmc6IHRydWUgfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IGJvb2xlYW4pID0+ICh7IHNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nOiAhaW5wdXQgfSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCS0LrQu9GO0YfQsNC10YIg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90LjQtSDQs9C10L3QtdGA0LjRgNGD0LXQvNC+0LPQviDQutC+0LTQsC4g0KDQsNCx0L7RgtCw0LXRgiwg0YLQvtC70YzQutC+INC10YHQu9C4INCy0LXRgNGB0LjRjyDQs9C10L3QtdGA0LDRgtC+0YDQsCDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0Y3RgtGDINC+0L/RhtC40Y4uINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0L7RgtC70LDQtNC60Lgg0Lgg0L/RgNC+0YHQvNC+0YLRgNCwINGB0LPQtdC90LXRgNC40YDQvtCy0LDQvdC90YvRhSDRhNC+0YDQvCDQsiDQvtGC0LTQsNC00YfQuNC60LUuIChkZWZhdWx0OiBmYWxzZSlcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVidWdPbmx5T3B0aW9uRGVmaW5pdGlvbixcbiAgICAgICAgZGV2TW9kZU9wdGlvbixcbiAgICAgICAgbG9nVmVyYm9zaXR5T3B0aW9uXG4gICAgKSxcbiAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIk1hZ2ljXCIsXG4gICAgfVxuKTtcblxuZXhwb3J0IGNvbnN0IGRldkJ1aWxkU2VydmVyQ29tbWFuZERlZmluaXRpb24gPSBjb21tYW5kRGVmaW5pdGlvbjxcImRldi1idWlsZC1zZXJ2ZXJcIiwgRGV2QnVpbGRTZXJ2ZXJPcHRpb25zPihcbiAgICBcImRldi1idWlsZC1zZXJ2ZXJcIixcbiAgICBcImRldi1idWlsZC1zZXJ2ZXJcIixcbiAgICBvcHRpb25zRGVmaW5pdGlvbihcbiAgICAgICAge1xuICAgICAgICAgICAgYWxpYXM6IFwiZ1wiLFxuICAgICAgICAgICAgbmFtZTogXCJnZnZzXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgZm9ybUdsb2JzOiBbXCIqXCJdIH0sXG4gICAgICAgICAgICBwYXJzZTogKGlucHV0OiBzdHJpbmdbXSkgPT4gKHsgZm9ybUdsb2JzOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRlZmF1bHRPcHRpb246IHRydWUsXG4gICAgICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBcItCe0LTQvdCwINC40LvQuCDQvdC10YHQutC+0LvRjNC60L4gR0ZWINC40LvQuCBHRlYt0LzQsNGB0L7QuiDQtNC70Y8g0L/QtdGA0LXRgdC+0LHRgNC60LguXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwibm8tY2xpZW50LW92ZXJyaWRlXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgZGlzYWJsZUNsaWVudE92ZXJyaWRlOiBmYWxzZSB9LFxuICAgICAgICAgICAgcGFyc2U6IGlucHV0ID0+ICh7IGRpc2FibGVDbGllbnRPdmVycmlkZTogaW5wdXQgfSksXG4gICAgICAgICAgICBkb2VzTm90UmVxdWlyZVZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgXCLQntGC0LrQu9GO0YfQsNC10YIg0L/QtdGA0LXRhdCy0LDRgiBjbGllbnQuanMuINCSINGN0YLQvtC8INGB0LvRg9GH0LDQtSDQvdC1INCx0YPQtNC10YIg0YDQsNCx0L7RgtCw0YLRjCDQvtGC0L7QsdGA0LDQttC10L3QuNC1INC70L7Qs9C+0LIg0YHQsdC+0YDQutC4INC4INC+0LbQuNC00LDQvdC40Y8g0YHQsdC+0YDQutC4INGE0L7RgNC80YsuXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwicmVmb3JtYXRcIixcbiAgICAgICAgICAgIGFsaWFzOiBcInJcIixcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmc6IHRydWUgfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IGJvb2xlYW4pID0+ICh7IHNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nOiAhaW5wdXQgfSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCS0LrQu9GO0YfQsNC10YIg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90LjQtSDQs9C10L3QtdGA0LjRgNGD0LXQvNC+0LPQviDQutC+0LTQsC4g0KDQsNCx0L7RgtCw0LXRgiwg0YLQvtC70YzQutC+INC10YHQu9C4INCy0LXRgNGB0LjRjyDQs9C10L3QtdGA0LDRgtC+0YDQsCDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0Y3RgtGDINC+0L/RhtC40Y4uINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0L7RgtC70LDQtNC60Lgg0Lgg0L/RgNC+0YHQvNC+0YLRgNCwINGB0LPQtdC90LXRgNC40YDQvtCy0LDQvdC90YvRhSDRhNC+0YDQvCDQsiDQvtGC0LTQsNC00YfQuNC60LUuIChkZWZhdWx0OiBmYWxzZSlcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVidWdPbmx5T3B0aW9uRGVmaW5pdGlvbixcbiAgICAgICAgZGV2TW9kZU9wdGlvbixcbiAgICAgICAgbG9nVmVyYm9zaXR5T3B0aW9uXG4gICAgKSxcbiAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIk1hZ2ljXCIsXG4gICAgfVxuKTtcbiJdfQ==
118
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9CdWlsZFNlcnZlclNlcnZlck9wdGlvbnMudHMiXSwibmFtZXMiOlsiYnVpbGRTZXJ2ZXJDb21tYW5kRGVmaW5pdGlvbiIsImFsaWFzIiwibmFtZSIsImRlZmF1bHRWYWx1ZSIsInBhcnNlIiwiaW5wdXQiLCJkZWZhdWx0T3B0aW9uIiwibXVsdGlwbGUiLCJkZXNjcmlwdGlvbiIsImFsbEZhcm1zRGlyIiwibmlnaHRseSIsImRvZXNOb3RSZXF1aXJlVmFsdWUiLCJkaXNhYmxlQ2xpZW50T3ZlcnJpZGUiLCJza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZyIsImRlYnVnT25seU9wdGlvbkRlZmluaXRpb24iLCJkZXZNb2RlT3B0aW9uIiwibG9nVmVyYm9zaXR5T3B0aW9uIiwiZGV2QnVpbGRTZXJ2ZXJDb21tYW5kRGVmaW5pdGlvbiIsImZvcm1HbG9icyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUVBOztBQWdCTyxNQUFNQSw0QkFBNEIsR0FBRyxrREFDeEMsY0FEd0MsRUFFeEMsY0FGd0MsRUFHeEMsa0RBQ0k7QUFDSUMsRUFBQUEsS0FBSyxFQUFFLEdBRFg7QUFFSUMsRUFBQUEsSUFBSSxFQUFFLE1BRlY7QUFHSUMsRUFBQUEsWUFBWSxFQUFFLEVBSGxCO0FBSUlDLEVBQUFBLEtBQUssRUFBR0MsS0FBRCxLQUFzQixFQUF0QixDQUpYO0FBS0lDLEVBQUFBLGFBQWEsRUFBRSxJQUxuQjtBQU1JQyxFQUFBQSxRQUFRLEVBQUUsSUFOZDtBQU9JQyxFQUFBQSxXQUFXLEVBQUU7QUFQakIsQ0FESixFQVVJO0FBQ0lQLEVBQUFBLEtBQUssRUFBRSxHQURYO0FBRUlDLEVBQUFBLElBQUksRUFBRSxjQUZWO0FBR0lDLEVBQUFBLFlBQVksRUFBRTtBQUFFTSxJQUFBQSxXQUFXLEVBQUU7QUFBZixHQUhsQjtBQUlJTCxFQUFBQSxLQUFLLEVBQUdDLEtBQUQsS0FBc0I7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QUFBQSxJQUFJLEVBQUUsVUFEVjtBQUVJRCxFQUFBQSxLQUFLLEVBQUUsR0FGWDtBQUdJVSxFQUFBQSxtQkFBbUIsRUFBRSxJQUh6QjtBQUlJUixFQUFBQSxZQUFZLEVBQUU7QUFBRVUsSUFBQUEsNkJBQTZCLEVBQUU7QUFBakMsR0FKbEI7QUFLSVQsRUFBQUEsS0FBSyxFQUFHQyxLQUFELEtBQXFCO0FBQUVRLElBQUFBLDZCQUE2QixFQUFFLENBQUNSO0FBQWxDLEdBQXJCLENBTFg7QUFNSUcsRUFBQUEsV0FBVyxFQUNQO0FBUFIsQ0E1QkosRUFxQ0lNLCtDQXJDSixFQXNDSUMscUNBdENKLEVBdUNJQywwQ0F2Q0osQ0FIMkMsRUE0QzNDO0FBQ0lSLEVBQUFBLFdBQVcsRUFBRTtBQURqQixDQTVDMkMsQ0FBeEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb21tYW5kRGVmaW5pdGlvbiwgb3B0aW9uc0RlZmluaXRpb24gfSBmcm9tIFwiLi4vLi4vQ29tbW9ucy9PcHRpb25zL0NvbW1hbmRCYXNlZE9wdGlvbnNQYXJzZXJcIjtcbmltcG9ydCB7IEJ1aWxkRGVidWdPbmx5T3B0aW9uLCBkZWJ1Z09ubHlPcHRpb25EZWZpbml0aW9uIH0gZnJvbSBcIi4uL0NvbW1vbk9wdGlvbnMvQnVpbGREZWJ1Z09ubHlPcHRpb25cIjtcbmltcG9ydCB7IENvbW1vbk9wdGlvbnMgfSBmcm9tIFwiLi4vQ29tbW9uT3B0aW9ucy9Db21tb25PcHRpb25zXCI7XG5pbXBvcnQgeyBkZXZNb2RlT3B0aW9uLCBsb2dWZXJib3NpdHlPcHRpb24gfSBmcm9tIFwiLi4vQ29tbW9uT3B0aW9ucy9Db21tb25PcHRpb25EZWZpbnRpb25zXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTZXJ2ZXJPcHRpb25zIGV4dGVuZHMgQ29tbW9uT3B0aW9ucywgQnVpbGREZWJ1Z09ubHlPcHRpb24ge1xuICAgIGRpc2FibGVDbGllbnRPdmVycmlkZTogYm9vbGVhbjtcbiAgICBza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbjtcbiAgICBuaWdodGx5OiBib29sZWFuO1xuICAgIGFsbEZhcm1zRGlyOiBzdHJpbmdbXSB8IFtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERldkJ1aWxkU2VydmVyT3B0aW9ucyBleHRlbmRzIENvbW1vbk9wdGlvbnMsIEJ1aWxkRGVidWdPbmx5T3B0aW9uIHtcbiAgICBmb3JtR2xvYnM6IHN0cmluZ1tdO1xuICAgIGRpc2FibGVDbGllbnRPdmVycmlkZTogYm9vbGVhbjtcbiAgICBza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZzogYm9vbGVhbjtcbiAgICBhbGxGYXJtc0Rpcjogc3RyaW5nW10gfCBbXTtcbn1cblxuZXhwb3J0IGNvbnN0IGJ1aWxkU2VydmVyQ29tbWFuZERlZmluaXRpb24gPSBjb21tYW5kRGVmaW5pdGlvbjxcImJ1aWxkLXNlcnZlclwiLCBCdWlsZFNlcnZlck9wdGlvbnM+KFxuICAgIFwiYnVpbGQtc2VydmVyXCIsXG4gICAgXCJidWlsZC1zZXJ2ZXJcIixcbiAgICBvcHRpb25zRGVmaW5pdGlvbihcbiAgICAgICAge1xuICAgICAgICAgICAgYWxpYXM6IFwiZ1wiLFxuICAgICAgICAgICAgbmFtZTogXCJnZnZzXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHt9LFxuICAgICAgICAgICAgcGFyc2U6IChpbnB1dDogc3RyaW5nW10pID0+ICh7fSksXG4gICAgICAgICAgICBkZWZhdWx0T3B0aW9uOiB0cnVlLFxuICAgICAgICAgICAgbXVsdGlwbGU6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogXCLQntC/0YbQuNGPINGD0YHRgtCw0YDQtdC70LAuINCe0YHRgtCw0LLQu9C10L3QsCDQtNC70Y8g0L7QsdGA0LDRgtC90L7QuSDRgdC+0LLQvNC10YHRgtC40LzQvtGB0YLQuC5cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgYWxpYXM6IFwiYVwiLFxuICAgICAgICAgICAgbmFtZTogXCJhbGwtZmFybS1kaXJcIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyBhbGxGYXJtc0RpcjogW10gfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IHN0cmluZ1tdKSA9PiAoeyBhbGxGYXJtc0RpcjogaW5wdXQgfSksXG4gICAgICAgICAgICBkZWZhdWx0T3B0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgXCLQn9C+0LfQstC+0LvRj9C10YIg0L/QtdGA0LXQtNCw0YLRjCDQvNCw0YHRgdC40LIg0L/Rg9GC0LXQuSDQtNC+INCy0YHQtdGFINGE0LDRgNC80L7QsiBjYW5keSwg0YfRgtC+0LHRiyDQvtGC0LrRgNGL0LLQsNGC0Ywg0LjQtyDQstGB0LXRhSDQvdC40YUg0YTQvtGA0LzRiy4g0J/Rg9GC0Ywg0L/QtdGA0LXQtNCw0LLQsNGC0Ywg0L7RgtC90L7RgdC40YLQtdC70YzQvdC+IGtlZm9ybXMuZW5naW5lXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwibmlnaHRseVwiLFxuICAgICAgICAgICAgZGVmYXVsdFZhbHVlOiB7IG5pZ2h0bHk6IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogaW5wdXQgPT4gKHsgbmlnaHRseTogaW5wdXQgfSksXG4gICAgICAgICAgICBkb2VzTm90UmVxdWlyZVZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwi0JLQutC70Y7Rh9Cw0LXRgiDRgdCx0L7RgNC60YMg0YTQvtGA0Lwg0L3QsCDQtNCy0LjQttC60LUgbmlnaHRseS5cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJuby1jbGllbnQtb3ZlcnJpZGVcIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyBkaXNhYmxlQ2xpZW50T3ZlcnJpZGU6IGZhbHNlIH0sXG4gICAgICAgICAgICBwYXJzZTogaW5wdXQgPT4gKHsgZGlzYWJsZUNsaWVudE92ZXJyaWRlOiBpbnB1dCB9KSxcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCe0YLQutC70Y7Rh9Cw0LXRgiDQv9C10YDQtdGF0LLQsNGCIGNsaWVudC5qcy4g0JIg0Y3RgtC+0Lwg0YHQu9GD0YfQsNC1INC90LUg0LHRg9C00LXRgiDRgNCw0LHQvtGC0LDRgtGMINC+0YLQvtCx0YDQsNC20LXQvdC40LUg0LvQvtCz0L7QsiDRgdCx0L7RgNC60Lgg0Lgg0L7QttC40LTQsNC90LjRjyDRgdCx0L7RgNC60Lgg0YTQvtGA0LzRiy5cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogXCJyZWZvcm1hdFwiLFxuICAgICAgICAgICAgYWxpYXM6IFwiclwiLFxuICAgICAgICAgICAgZG9lc05vdFJlcXVpcmVWYWx1ZTogdHJ1ZSxcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyBza2lwR2VuZXJhdGVkQ29kZVJlZm9ybWF0dGluZzogdHJ1ZSB9LFxuICAgICAgICAgICAgcGFyc2U6IChpbnB1dDogYm9vbGVhbikgPT4gKHsgc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmc6ICFpbnB1dCB9KSxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICAgICAgIFwi0JLQutC70Y7Rh9Cw0LXRgiDRhNC+0YDQvNCw0YLQuNGA0L7QstCw0L3QuNC1INCz0LXQvdC10YDQuNGA0YPQtdC80L7Qs9C+INC60L7QtNCwLiDQoNCw0LHQvtGC0LDQtdGCLCDRgtC+0LvRjNC60L4g0LXRgdC70Lgg0LLQtdGA0YHQuNGPINCz0LXQvdC10YDQsNGC0L7RgNCwINC/0L7QtNC00LXRgNC20LjQstCw0LXRgiDRjdGC0YMg0L7Qv9GG0LjRji4g0JjRgdC/0L7Qu9GM0LfRg9C10YLRgdGPINC00LvRjyDQvtGC0LvQsNC00LrQuCDQuCDQv9GA0L7RgdC80L7RgtGA0LAg0YHQs9C10L3QtdGA0LjRgNC+0LLQsNC90L3Ri9GFINGE0L7RgNC8INCyINC+0YLQtNCw0LTRh9C40LrQtS4gKGRlZmF1bHQ6IGZhbHNlKVwiLFxuICAgICAgICB9LFxuICAgICAgICBkZWJ1Z09ubHlPcHRpb25EZWZpbml0aW9uLFxuICAgICAgICBkZXZNb2RlT3B0aW9uLFxuICAgICAgICBsb2dWZXJib3NpdHlPcHRpb25cbiAgICApLFxuICAgIHtcbiAgICAgICAgZGVzY3JpcHRpb246IFwiTWFnaWNcIixcbiAgICB9XG4pO1xuXG5leHBvcnQgY29uc3QgZGV2QnVpbGRTZXJ2ZXJDb21tYW5kRGVmaW5pdGlvbiA9IGNvbW1hbmREZWZpbml0aW9uPFwiZGV2LWJ1aWxkLXNlcnZlclwiLCBEZXZCdWlsZFNlcnZlck9wdGlvbnM+KFxuICAgIFwiZGV2LWJ1aWxkLXNlcnZlclwiLFxuICAgIFwiZGV2LWJ1aWxkLXNlcnZlclwiLFxuICAgIG9wdGlvbnNEZWZpbml0aW9uKFxuICAgICAgICB7XG4gICAgICAgICAgICBhbGlhczogXCJnXCIsXG4gICAgICAgICAgICBuYW1lOiBcImdmdnNcIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyBmb3JtR2xvYnM6IFtcIipcIl0gfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IHN0cmluZ1tdKSA9PiAoeyBmb3JtR2xvYnM6IGlucHV0IH0pLFxuICAgICAgICAgICAgZGVmYXVsdE9wdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwi0J7QtNC90LAg0LjQu9C4INC90LXRgdC60L7Qu9GM0LrQviBHRlYg0LjQu9C4IEdGVi3QvNCw0YHQvtC6INC00LvRjyDQv9C10YDQtdGB0L7QsdGA0LrQuC5cIixcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgYWxpYXM6IFwiYVwiLFxuICAgICAgICAgICAgbmFtZTogXCJhbGwtZmFybS1kaXJcIixcbiAgICAgICAgICAgIGRlZmF1bHRWYWx1ZTogeyBhbGxGYXJtc0RpcjogW10gfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IHN0cmluZ1tdKSA9PiAoeyBhbGxGYXJtc0RpcjogaW5wdXQgfSksXG4gICAgICAgICAgICBkZWZhdWx0T3B0aW9uOiBmYWxzZSxcbiAgICAgICAgICAgIG11bHRpcGxlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgXCLQn9C+0LfQstC+0LvRj9C10YIg0L/QtdGA0LXQtNCw0YLRjCDQvNCw0YHRgdC40LIg0L/Rg9GC0LXQuSDQtNC+INCy0YHQtdGFINGE0LDRgNC80L7QsiBjYW5keSwg0YfRgtC+0LHRiyDQvtGC0LrRgNGL0LLQsNGC0Ywg0LjQtyDQstGB0LXRhSDQvdC40YUg0YTQvtGA0LzRiy4g0J/Rg9GC0Ywg0L/QtdGA0LXQtNCw0LLQsNGC0Ywg0L7RgtC90L7RgdC40YLQtdC70YzQvdC+IGtlZm9ybXMuZW5naW5lXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwibm8tY2xpZW50LW92ZXJyaWRlXCIsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgZGlzYWJsZUNsaWVudE92ZXJyaWRlOiBmYWxzZSB9LFxuICAgICAgICAgICAgcGFyc2U6IGlucHV0ID0+ICh7IGRpc2FibGVDbGllbnRPdmVycmlkZTogaW5wdXQgfSksXG4gICAgICAgICAgICBkb2VzTm90UmVxdWlyZVZhbHVlOiB0cnVlLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgICAgXCLQntGC0LrQu9GO0YfQsNC10YIg0L/QtdGA0LXRhdCy0LDRgiBjbGllbnQuanMuINCSINGN0YLQvtC8INGB0LvRg9GH0LDQtSDQvdC1INCx0YPQtNC10YIg0YDQsNCx0L7RgtCw0YLRjCDQvtGC0L7QsdGA0LDQttC10L3QuNC1INC70L7Qs9C+0LIg0YHQsdC+0YDQutC4INC4INC+0LbQuNC00LDQvdC40Y8g0YHQsdC+0YDQutC4INGE0L7RgNC80YsuXCIsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IFwicmVmb3JtYXRcIixcbiAgICAgICAgICAgIGFsaWFzOiBcInJcIixcbiAgICAgICAgICAgIGRvZXNOb3RSZXF1aXJlVmFsdWU6IHRydWUsXG4gICAgICAgICAgICBkZWZhdWx0VmFsdWU6IHsgc2tpcEdlbmVyYXRlZENvZGVSZWZvcm1hdHRpbmc6IHRydWUgfSxcbiAgICAgICAgICAgIHBhcnNlOiAoaW5wdXQ6IGJvb2xlYW4pID0+ICh7IHNraXBHZW5lcmF0ZWRDb2RlUmVmb3JtYXR0aW5nOiAhaW5wdXQgfSksXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgICAgICAgICBcItCS0LrQu9GO0YfQsNC10YIg0YTQvtGA0LzQsNGC0LjRgNC+0LLQsNC90LjQtSDQs9C10L3QtdGA0LjRgNGD0LXQvNC+0LPQviDQutC+0LTQsC4g0KDQsNCx0L7RgtCw0LXRgiwg0YLQvtC70YzQutC+INC10YHQu9C4INCy0LXRgNGB0LjRjyDQs9C10L3QtdGA0LDRgtC+0YDQsCDQv9C+0LTQtNC10YDQttC40LLQsNC10YIg0Y3RgtGDINC+0L/RhtC40Y4uINCY0YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNC70Y8g0L7RgtC70LDQtNC60Lgg0Lgg0L/RgNC+0YHQvNC+0YLRgNCwINGB0LPQtdC90LXRgNC40YDQvtCy0LDQvdC90YvRhSDRhNC+0YDQvCDQsiDQvtGC0LTQsNC00YfQuNC60LUuIChkZWZhdWx0OiBmYWxzZSlcIixcbiAgICAgICAgfSxcbiAgICAgICAgZGVidWdPbmx5T3B0aW9uRGVmaW5pdGlvbixcbiAgICAgICAgZGV2TW9kZU9wdGlvbixcbiAgICAgICAgbG9nVmVyYm9zaXR5T3B0aW9uXG4gICAgKSxcbiAgICB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiBcIk1hZ2ljXCIsXG4gICAgfVxuKTtcbiJdfQ==
@@ -44,43 +44,51 @@ function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "functio
44
44
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
45
45
 
46
46
  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 {
47
- constructor(farmDirectory, flangNormalizationSourcesProvider) {
47
+ constructor(allFarmConfig, flangNormalizationSourcesProvider) {
48
48
  super();
49
- this.farmDirectory = void 0;
49
+ this.allFarmConfig = void 0;
50
50
  this.generatedServerSideSourcesProvider = void 0;
51
51
  this.allSchemasFiles = void 0;
52
52
  this.resetAllSchemaFilesDebounced = void 0;
53
53
  this.generatedServerSideSourcesProvider = flangNormalizationSourcesProvider;
54
- this.farmDirectory = farmDirectory;
54
+ this.allFarmConfig = allFarmConfig;
55
55
  this.resetAllSchemaFilesDebounced = (0, _lodash.debounce)(() => {
56
56
  this.allSchemasFiles = undefined;
57
57
  }, 5000);
58
58
  }
59
59
 
60
60
  async getAllPicklists() {
61
- const formDirPath = path.join(this.farmDirectory);
62
- const files = await (0, _FsUtils.globAsync)("picklists/*", {
63
- cwd: formDirPath
64
- });
61
+ const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("picklists/*", {
62
+ cwd: path.join(i.farmDirectory)
63
+ }));
64
+ const files = (await Promise.all(promises)).flat();
65
65
  return files.map(x => x.replace("picklists/", "")).join("\n");
66
66
  }
67
67
 
68
68
  async getPicklists(picklistFilename) {
69
- const filePath = path.join(this.farmDirectory, "picklists", picklistFilename);
70
- return (0, _fs.createReadStream)(filePath);
69
+ const allFilePath = this.allFarmConfig.map(i => path.join(i.farmDirectory, "picklists", picklistFilename));
70
+
71
+ for (const pathFile of allFilePath) {
72
+ if (await (0, _fsExtra.pathExists)(pathFile)) {
73
+ return (0, _fs.createReadStream)(pathFile);
74
+ }
75
+ }
76
+
77
+ throw Error(`not found picklistFilename ${picklistFilename}`);
71
78
  }
72
79
 
73
80
  async getAllConvertersFiles() {
74
- const formDirPath = path.join(this.farmDirectory);
75
- const files = await (0, _FsUtils.globAsync)("forms/*/converters/*", {
76
- cwd: formDirPath
77
- });
81
+ const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/converters/*", {
82
+ cwd: path.join(i.farmDirectory)
83
+ }));
84
+ const files = (await Promise.all(promises)).flat();
78
85
  return files.map(x => path.basename(x)).join("\n");
79
86
  }
80
87
 
81
88
  async getConverterFile(filename) {
82
- const formDirPath = path.join(this.farmDirectory);
83
- const possibleFilePaths = (0, _ExtractGfvsFromFileName.extractGfvsFromFileName)(filename).map(gfv => path.join(formDirPath, `forms/${gfv}/converters/${filename}`));
89
+ const allFarmDirectories = this.allFarmConfig.map(i => i.farmDirectory).flat();
90
+ const formDirPath = allFarmDirectories.map(pth => path.join(pth));
91
+ const possibleFilePaths = formDirPath.map(i => (0, _ExtractGfvsFromFileName.extractGfvsFromFileName)(filename).map(gfv => path.join(i, `forms/${gfv}/converters/${filename}`))).flat();
84
92
 
85
93
  for (const filePath of possibleFilePaths) {
86
94
  if (await (0, _fsExtra.pathExists)(filePath)) {
@@ -93,10 +101,10 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
93
101
 
94
102
  async getAllSchemasFiles() {
95
103
  if (this.allSchemasFiles === undefined) {
96
- const formDirPath = path.join(this.farmDirectory);
97
- const files = await (0, _FsUtils.globAsync)("forms/*/schemas/*", {
98
- cwd: formDirPath
99
- });
104
+ const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/schemas/*", {
105
+ cwd: path.join(i.farmDirectory)
106
+ }));
107
+ const files = (await Promise.all(promises)).flat();
100
108
  this.allSchemasFiles = files.map(x => path.basename(x)).join("\n");
101
109
  }
102
110
 
@@ -109,40 +117,56 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
109
117
 
110
118
  const filePattern = new _PathPattern.PathPattern("{gfv}.*.xml");
111
119
  const gfv = (_filePattern$execStri = filePattern.execStrict(filename).gfv) !== null && _filePattern$execStri !== void 0 ? _filePattern$execStri : (0, _TypingUtils.reject)();
112
- const filePath = path.join(this.farmDirectory, "forms", gfv, "schemas", filename);
120
+ const filePath = this.allFarmConfig.map(i => path.join(i.farmDirectory, "forms", gfv, "schemas", filename)).flat();
113
121
 
114
- if (!(await (0, _fsExtra.pathExists)(filePath))) {
115
- throw new _NotFoundWebError.NotFoundWebError("File not found", false);
122
+ for (const file of filePath) {
123
+ if (await (0, _fsExtra.pathExists)(file)) {
124
+ return new _StreamResultHandler.FileStreamResult(file);
125
+ }
116
126
  }
117
127
 
118
- return new _StreamResultHandler.FileStreamResult(filePath);
128
+ throw new _NotFoundWebError.NotFoundWebError("File not found", false);
119
129
  }
120
130
 
121
131
  async getAllFormPresentations() {
122
- const formDirPath = path.join(this.farmDirectory);
123
- const files = await (0, _FsUtils.globAsync)("forms/*/presentations.json", {
124
- cwd: formDirPath
125
- });
132
+ const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/presentations.json", {
133
+ cwd: path.join(i.farmDirectory)
134
+ }));
135
+ const files = (await Promise.all(promises)).flat();
126
136
  return files.map(x => x.replace("forms/", "").replace("/", ".")).join("\n");
127
137
  }
128
138
 
129
139
  async getFormPresentations(gfv) {
130
- const filePath = path.join(this.farmDirectory, "forms", gfv, `presentations.json`);
131
- return new _StreamResultHandler.FileStreamResult(filePath);
140
+ const allFilePath = this.allFarmConfig.map(i => path.join(i.farmDirectory, "forms", gfv, "presentations.json"));
141
+
142
+ for (const pathFile of allFilePath) {
143
+ if (await (0, _fsExtra.pathExists)(pathFile)) {
144
+ return new _StreamResultHandler.FileStreamResult(pathFile);
145
+ }
146
+ }
147
+
148
+ throw Error(`not found unmap ${gfv}.xml`);
132
149
  }
133
150
 
134
151
  async getAllNormalizeFiles() {
135
- const formDirPath = path.join(this.farmDirectory);
136
- const files = await (0, _FsUtils.globAsync)("forms/*/normalize/*.xml", {
137
- cwd: formDirPath
138
- });
152
+ const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/normalize/*.xml", {
153
+ cwd: path.join(i.farmDirectory)
154
+ }));
155
+ const files = (await Promise.all(promises)).flat();
139
156
  const flangFiles = await this.generatedServerSideSourcesProvider.getAllNormalizationFileNames();
140
157
  return [...files.map(x => path.basename(x)), ...flangFiles].join("\n");
141
158
  }
142
159
 
143
160
  async getNormalizeFile(gfv) {
144
- const filePath = path.join(this.farmDirectory, "forms", gfv, "normalize", `${gfv}.xml`);
145
- return new _StreamResultHandler.FileStreamResult(filePath);
161
+ const allFilePath = this.allFarmConfig.map(i => path.join(i.farmDirectory, "forms", gfv, "normalize", `${gfv}.xml`));
162
+
163
+ for (const pathFile of allFilePath) {
164
+ if (await (0, _fsExtra.pathExists)(pathFile)) {
165
+ return new _StreamResultHandler.FileStreamResult(pathFile);
166
+ }
167
+ }
168
+
169
+ throw Error(`not found unmap ${gfv}.xml`);
146
170
  }
147
171
 
148
172
  async getFLangNormalizeFile(gfv) {
@@ -159,44 +183,65 @@ let BuildServerBackendResourcesController = (_dec = (0, _Methods.httpGet)("/pick
159
183
  }
160
184
 
161
185
  async getAllUnmapFiles() {
162
- const formDirPath = path.join(this.farmDirectory);
163
- const files = await (0, _FsUtils.globAsync)("forms/*/unmap/*.xml", {
164
- cwd: formDirPath
165
- });
186
+ const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/unmap/*.xml", {
187
+ cwd: path.join(i.farmDirectory)
188
+ }));
189
+ const files = (await Promise.all(promises)).flat();
166
190
  return files.map(x => path.basename(x)).join("\n");
167
191
  }
168
192
 
169
193
  async getUnmapFile(gfv) {
170
- const filePath = path.join(this.farmDirectory, "forms", gfv, "unmap", `${gfv}.xml`);
171
- return new _StreamResultHandler.FileStreamResult(filePath);
194
+ const allFilePath = this.allFarmConfig.map(i => path.join(i.farmDirectory, "forms", gfv, "unmap", `${gfv}.xml`));
195
+
196
+ for (const pathFile of allFilePath) {
197
+ if (await (0, _fsExtra.pathExists)(pathFile)) {
198
+ return new _StreamResultHandler.FileStreamResult(pathFile);
199
+ }
200
+ }
201
+
202
+ throw Error(`not found unmap ${gfv}.xml`);
172
203
  }
173
204
 
174
205
  async getAllMapFiles() {
175
- const formDirPath = path.join(this.farmDirectory);
176
- const files = await (0, _FsUtils.globAsync)("forms/*/map/*.xml", {
177
- cwd: formDirPath
178
- });
206
+ const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/map/*.xml", {
207
+ cwd: path.join(i.farmDirectory)
208
+ }));
209
+ const files = (await Promise.all(promises)).flat();
179
210
  return files.map(x => path.basename(x)).join("\n");
180
211
  }
181
212
 
182
213
  async getMapFile(gfv) {
183
- const filePath = path.join(this.farmDirectory, "forms", gfv, "map", `${gfv}.xml`);
184
- return new _StreamResultHandler.FileStreamResult(filePath);
214
+ const allFilePath = this.allFarmConfig.map(i => path.join(i.farmDirectory, "forms", gfv, "map", `${gfv}.xml`));
215
+
216
+ for (const pathFile of allFilePath) {
217
+ if (await (0, _fsExtra.pathExists)(pathFile)) {
218
+ return new _StreamResultHandler.FileStreamResult(pathFile);
219
+ }
220
+ }
221
+
222
+ throw Error(`not found unmap ${gfv}.xml`);
185
223
  }
186
224
 
187
225
  async getAllPatchFiles() {
188
- const formDirPath = path.join(this.farmDirectory);
189
- const files = await (0, _FsUtils.globAsync)("forms/*/patch/*.xslt", {
190
- cwd: formDirPath
191
- });
226
+ const promises = this.allFarmConfig.map(i => (0, _FsUtils.globAsync)("forms/*/patch/*.xslt", {
227
+ cwd: path.join(i.farmDirectory)
228
+ }));
229
+ const files = (await Promise.all(promises)).flat();
192
230
  return files.map(x => path.basename(x)).join("\n");
193
231
  }
194
232
 
195
233
  async getPatchFile(gfv) {
196
- const filePath = path.join(this.farmDirectory, "forms", gfv, "patch", `${gfv}.xslt`);
197
- return new _StreamResultHandler.FileStreamResult(filePath);
234
+ const allFilePath = this.allFarmConfig.map(i => path.join(i.farmDirectory, "forms", gfv, "patch", `${gfv}.xslt`));
235
+
236
+ for (const pathFile of allFilePath) {
237
+ if (await (0, _fsExtra.pathExists)(pathFile)) {
238
+ return new _StreamResultHandler.FileStreamResult(pathFile);
239
+ }
240
+ }
241
+
242
+ throw Error(`not found unmap ${gfv}.xml`);
198
243
  }
199
244
 
200
245
  }, ((0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPicklists", [_dec], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPicklists", [_dec2], Object.getOwnPropertyDescriptor(_class.prototype, "getPicklists"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllConvertersFiles", [_dec3], Object.getOwnPropertyDescriptor(_class.prototype, "getAllConvertersFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getConverterFile", [_dec4], Object.getOwnPropertyDescriptor(_class.prototype, "getConverterFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllSchemasFiles", [_dec5], Object.getOwnPropertyDescriptor(_class.prototype, "getAllSchemasFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormSchemas", [_dec6], Object.getOwnPropertyDescriptor(_class.prototype, "getFormSchemas"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllFormPresentations", [_dec7], Object.getOwnPropertyDescriptor(_class.prototype, "getAllFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFormPresentations", [_dec8], Object.getOwnPropertyDescriptor(_class.prototype, "getFormPresentations"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllNormalizeFiles", [_dec9], Object.getOwnPropertyDescriptor(_class.prototype, "getAllNormalizeFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getNormalizeFile", [_dec10], Object.getOwnPropertyDescriptor(_class.prototype, "getNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getFLangNormalizeFile", [_dec11], Object.getOwnPropertyDescriptor(_class.prototype, "getFLangNormalizeFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllAttachmentPathsFileNames", [_dec12], Object.getOwnPropertyDescriptor(_class.prototype, "getAllAttachmentPathsFileNames"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAttachmentPathFile", [_dec13], Object.getOwnPropertyDescriptor(_class.prototype, "getAttachmentPathFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllUnmapFiles", [_dec14], Object.getOwnPropertyDescriptor(_class.prototype, "getAllUnmapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getUnmapFile", [_dec15], Object.getOwnPropertyDescriptor(_class.prototype, "getUnmapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllMapFiles", [_dec16], Object.getOwnPropertyDescriptor(_class.prototype, "getAllMapFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getMapFile", [_dec17], Object.getOwnPropertyDescriptor(_class.prototype, "getMapFile"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getAllPatchFiles", [_dec18], Object.getOwnPropertyDescriptor(_class.prototype, "getAllPatchFiles"), _class.prototype), (0, _applyDecoratedDescriptor2.default)(_class.prototype, "getPatchFile", [_dec19], Object.getOwnPropertyDescriptor(_class.prototype, "getPatchFile"), _class.prototype)), _class));
201
246
  exports.BuildServerBackendResourcesController = BuildServerBackendResourcesController;
202
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiUGxhaW5UZXh0IiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImZhcm1EaXJlY3RvcnkiLCJmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXIiLCJnZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIiwiYWxsU2NoZW1hc0ZpbGVzIiwicmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCIsInVuZGVmaW5lZCIsImdldEFsbFBpY2tsaXN0cyIsImZvcm1EaXJQYXRoIiwicGF0aCIsImpvaW4iLCJmaWxlcyIsImN3ZCIsIm1hcCIsIngiLCJyZXBsYWNlIiwiZ2V0UGlja2xpc3RzIiwicGlja2xpc3RGaWxlbmFtZSIsImZpbGVQYXRoIiwiZ2V0QWxsQ29udmVydGVyc0ZpbGVzIiwiYmFzZW5hbWUiLCJnZXRDb252ZXJ0ZXJGaWxlIiwiZmlsZW5hbWUiLCJwb3NzaWJsZUZpbGVQYXRocyIsImdmdiIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsU2NoZW1hc0ZpbGVzIiwiZ2V0Rm9ybVNjaGVtYXMiLCJmaWxlUGF0dGVybiIsIlBhdGhQYXR0ZXJuIiwiZXhlY1N0cmljdCIsImdldEFsbEZvcm1QcmVzZW50YXRpb25zIiwiZ2V0Rm9ybVByZXNlbnRhdGlvbnMiLCJnZXRBbGxOb3JtYWxpemVGaWxlcyIsImZsYW5nRmlsZXMiLCJnZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzIiwiZ2V0Tm9ybWFsaXplRmlsZSIsImdldEZMYW5nTm9ybWFsaXplRmlsZSIsIlN0cmVhbVJlc3VsdCIsImdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudCIsImdldEFsbEF0dGFjaG1lbnRQYXRoc0ZpbGVOYW1lcyIsImdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzIiwiZ2V0QXR0YWNobWVudFBhdGhGaWxlIiwiZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQiLCJnZXRBbGxVbm1hcEZpbGVzIiwiZ2V0VW5tYXBGaWxlIiwiZ2V0QWxsTWFwRmlsZXMiLCJnZXRNYXBGaWxlIiwiZ2V0QWxsUGF0Y2hGaWxlcyIsImdldFBhdGNoRmlsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFJQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7SUFJYUEscUMsV0FnQlIsc0JBQVEsWUFBUixFQUFzQkMsb0JBQVdDLFNBQWpDLEMsVUFPQSxzQkFDRyw4QkFESCxFQUVHRCxvQkFBV0UsY0FBWCxDQUEwQixrQkFBMUIsQ0FGSCxFQUdHLDBCQUFhLGtCQUFiLEVBQWlDQyxpQkFBU0MsTUFBMUMsQ0FISCxDLFVBVUEsc0JBQVEsYUFBUixFQUF1Qkosb0JBQVdDLFNBQWxDLEMsVUFPQSxzQkFBUSx1QkFBUixFQUFpQ0Qsb0JBQVdLLE1BQTVDLEVBQW9ELDBCQUFhLFVBQWIsRUFBeUJGLGlCQUFTQyxNQUFsQyxDQUFwRCxDLFVBY0Esc0JBQVEsVUFBUixFQUFvQkosb0JBQVdDLFNBQS9CLEMsVUFXQSxzQkFBUSxvQkFBUixFQUE4QkQsb0JBQVdLLE1BQXpDLEVBQWlELDBCQUFhLFVBQWIsRUFBeUJGLGlCQUFTQyxNQUFsQyxDQUFqRCxDLFVBV0Esc0JBQVEsZ0JBQVIsRUFBMEJKLG9CQUFXQyxTQUFyQyxDLFVBT0Esc0JBQVEsd0NBQVIsRUFBa0RELG9CQUFXSyxNQUE3RCxFQUFxRSwwQkFBYSxLQUFiLEVBQW9CRixpQkFB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QXZDLEVBQTRDLEtBQTVDLEVBQW9ELEdBQUVBLEdBQUksTUFBMUQsQ0FBakI7QUFDQSxXQUFPLElBQUlDLHFDQUFKLENBQXFCUCxRQUFyQixDQUFQO0FBQ0g7O0FBRzRCLFFBQWhCK0IsZ0JBQWdCLEdBQW9CO0FBQzdDLFVBQU16QyxXQUFXLEdBQUdDLElBQUksQ0FBQ0MsSUFBTCxDQUFVLEtBQUtULGFBQWYsQ0FBcEI7QUFDQSxVQUFNVSxLQUFLLEdBQUcsTUFBTSx3QkFBVSxzQkFBVixFQUFrQztBQUFFQyxNQUFBQSxHQUFHLEVBQUVKO0FBQVAsS0FBbEMsQ0FBcEI7QUFDQSxXQUFPRyxLQUFLLENBQUNFLEdBQU4sQ0FBVUMsQ0FBQyxJQUFJTCxJQUFJLENBQUNXLFFBQUwsQ0FBY04sQ0FBZCxDQUFmLEVBQWlDSixJQUFqQyxDQUFzQyxJQUF0QyxDQUFQO0FBQ0g7O0FBR3dCLFFBQVp3QyxZQUFZLENBQUMxQixHQUFELEVBQXlDO0FBQzlELFVBQU1OLFFBQVEsR0FBR1QsSUFBSSxDQUFDQyxJQUFMLENBQVUsS0FBS1QsYUFBZixFQUE4QixPQUE5QixFQUF1Q3VCLEdBQXZDLEVBQTRDLE9BQTVDLEVBQXNELEdBQUVBLEdBQUksT0FBNUQsQ0FBakI7QUFDQSxXQUFPLElBQUlDLHFDQUFKLENBQXFCUCxRQUFyQixDQUFQO0FBQ0g7O0FBNUowRSxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3JlYXRlUmVhZFN0cmVhbSwgUmVhZFN0cmVhbSB9IGZyb20gXCJmc1wiO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tIFwicGF0aFwiO1xuXG5pbXBvcnQgeyBwYXRoRXhpc3RzIH0gZnJvbSBcImZzLWV4dHJhXCI7XG5pbXBvcnQgeyBkZWJvdW5jZSB9IGZyb20gXCJsb2Rhc2hcIjtcblxuaW1wb3J0IHsgZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9FeHRyYWN0R2Z2c0Zyb21GaWxlTmFtZVwiO1xuaW1wb3J0IHsgZ2xvYkFzeW5jIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvRnNVdGlsc1wiO1xuaW1wb3J0IHsgaHR0cEdldCB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9NZXRob2RzXCI7XG5pbXBvcnQgeyBOb3RGb3VuZFdlYkVycm9yIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL05vdEZvdW5kV2ViRXJyb3JcIjtcbmltcG9ydCB7IGh0dHBUeXBlLCBodHRwVXJsUGFyYW0gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUGFyYW1zXCI7XG5pbXBvcnQgeyBodHRwUmV0dXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHNcIjtcbmltcG9ydCB7XG4gICAgRmlsZVN0cmVhbVJlc3VsdCxcbiAgICBTdHJlYW1SZXN1bHQsXG59IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9SZXN1bHRzL1N0cmVhbVJlc3VsdEhhbmRsZXJcIjtcbmltcG9ydCB7IFNpbmdsZXRvbkNvbnRyb2xsZXIgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0V4cHJlc3NXcmFwcGVyL1NpbmdsZXRvbkNvbnRyb2xsZXJcIjtcbmltcG9ydCB7IFBhdGhQYXR0ZXJuIH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvUGF0aFBhdHRlcm5cIjtcbmltcG9ydCB7IHJlamVjdCB9IGZyb20gXCIuLi8uLi8uLi8uLi8uLi9Db21tb24vVHlwaW5nVXRpbHNcIjtcblxuaW1wb3J0IHsgSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIgfSBmcm9tIFwiLi9JR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlclwiO1xuXG5leHBvcnQgY2xhc3MgQnVpbGRTZXJ2ZXJCYWNrZW5kUmVzb3VyY2VzQ29udHJvbGxlciBleHRlbmRzIFNpbmdsZXRvbkNvbnRyb2xsZXIge1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZmFybURpcmVjdG9yeTogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlcjogSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXI7XG5cbiAgICBwcml2YXRlIGFsbFNjaGVtYXNGaWxlczogdW5kZWZpbmVkIHwgc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgcmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZDogKCkgPT4gdm9pZDtcblxuICAgIHB1YmxpYyBjb25zdHJ1Y3RvcihmYXJtRGlyZWN0b3J5OiBzdHJpbmcsIGZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlcjogSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyID0gZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyO1xuICAgICAgICB0aGlzLmZhcm1EaXJlY3RvcnkgPSBmYXJtRGlyZWN0b3J5O1xuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbFNjaGVtYXNGaWxlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSwgNTAwMCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGlja2xpc3RzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQaWNrbGlzdHMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJwaWNrbGlzdHMvKlwiLCB7IGN3ZDogZm9ybURpclBhdGggfSk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJwaWNrbGlzdHMvXCIsIFwiXCIpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi9waWNrbGlzdHMvOnBpY2tsaXN0RmlsZW5hbWVcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2pzb25cIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInBpY2tsaXN0RmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGlja2xpc3RzKHBpY2tsaXN0RmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8UmVhZFN0cmVhbT4ge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwicGlja2xpc3RzXCIsIHBpY2tsaXN0RmlsZW5hbWUpO1xuICAgICAgICByZXR1cm4gY3JlYXRlUmVhZFN0cmVhbShmaWxlUGF0aCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvY29udmVydGVyc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsQ29udmVydGVyc0ZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZ2xvYkFzeW5jKFwiZm9ybXMvKi9jb252ZXJ0ZXJzLypcIiwgeyBjd2Q6IGZvcm1EaXJQYXRoIH0pO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9jb252ZXJ0ZXJzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29udmVydGVyRmlsZShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSk7XG4gICAgICAgIGNvbnN0IHBvc3NpYmxlRmlsZVBhdGhzID0gZXh0cmFjdEdmdnNGcm9tRmlsZU5hbWUoZmlsZW5hbWUpLm1hcChnZnYgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihmb3JtRGlyUGF0aCwgYGZvcm1zLyR7Z2Z2fS9jb252ZXJ0ZXJzLyR7ZmlsZW5hbWV9YClcbiAgICAgICAgKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlUGF0aCBvZiBwb3NzaWJsZUZpbGVQYXRocykge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMoZmlsZVBhdGgpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9zY2hlbWFzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxTY2hlbWFzRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgaWYgKHRoaXMuYWxsU2NoZW1hc0ZpbGVzID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGZvcm1EaXJQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSk7XG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2JBc3luYyhcImZvcm1zLyovc2NoZW1hcy8qXCIsIHsgY3dkOiBmb3JtRGlyUGF0aCB9KTtcbiAgICAgICAgICAgIHRoaXMuYWxsU2NoZW1hc0ZpbGVzID0gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsU2NoZW1hc0ZpbGVzO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3NjaGVtYXMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU2NoZW1hcyhmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXR0ZXJuID0gbmV3IFBhdGhQYXR0ZXJuKFwie2dmdn0uKi54bWxcIik7XG4gICAgICAgIGNvbnN0IGdmdjogc3RyaW5nID0gZmlsZVBhdHRlcm4uZXhlY1N0cmljdChmaWxlbmFtZSkuZ2Z2ID8/IHJlamVjdCgpO1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInNjaGVtYXNcIiwgZmlsZW5hbWUpO1xuICAgICAgICBpZiAoIShhd2FpdCBwYXRoRXhpc3RzKGZpbGVQYXRoKSkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcHJlc2VudGF0aW9uc1wiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsRm9ybVByZXNlbnRhdGlvbnMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL3ByZXNlbnRhdGlvbnMuanNvblwiLCB7IGN3ZDogZm9ybURpclBhdGggfSk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJmb3Jtcy9cIiwgXCJcIikucmVwbGFjZShcIi9cIiwgXCIuXCIpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3ByZXNlbnRhdGlvbnMvOmdmdi5wcmVzZW50YXRpb25zLmpzb25cIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtUHJlc2VudGF0aW9ucyhnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBgcHJlc2VudGF0aW9ucy5qc29uYCk7XG4gICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxOb3JtYWxpemVGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnkpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2JBc3luYyhcImZvcm1zLyovbm9ybWFsaXplLyoueG1sXCIsIHsgY3dkOiBmb3JtRGlyUGF0aCB9KTtcbiAgICAgICAgY29uc3QgZmxhbmdGaWxlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBbGxOb3JtYWxpemF0aW9uRmlsZU5hbWVzKCk7XG4gICAgICAgIHJldHVybiBbLi4uZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSksIC4uLmZsYW5nRmlsZXNdLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Tm9ybWFsaXplRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8RmlsZVN0cmVhbVJlc3VsdD4ge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcIm5vcm1hbGl6ZVwiLCBgJHtnZnZ9LnhtbGApO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZS86Z2Z2Lm5vcm1hbGl6ZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEZMYW5nTm9ybWFsaXplRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQoZ2Z2KSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvYXR0YWNobWVudHBhdGhzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxBdHRhY2htZW50UGF0aHNGaWxlTmFtZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZmxhbmdGaWxlcyA9IGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcygpO1xuICAgICAgICByZXR1cm4gZmxhbmdGaWxlcy5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2F0dGFjaG1lbnRwYXRocy86Z2Z2Lmpzb25cIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRBdHRhY2htZW50UGF0aEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPFN0cmVhbVJlc3VsdD4ge1xuICAgICAgICByZXR1cm4gbmV3IFN0cmVhbVJlc3VsdChhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QXR0YWNobWVudFBhdGhzRmlsZUNvbnRlbnQoZ2Z2KSk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXBcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFVubWFwRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL3VubWFwLyoueG1sXCIsIHsgY3dkOiBmb3JtRGlyUGF0aCB9KTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvdW5tYXAvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRVbm1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJ1bm1hcFwiLCBgJHtnZnZ9LnhtbGApO1xuICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsTWFwRmlsZXMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5KTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSBhd2FpdCBnbG9iQXN5bmMoXCJmb3Jtcy8qL21hcC8qLnhtbFwiLCB7IGN3ZDogZm9ybURpclBhdGggfSk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL21hcC86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE1hcEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSBwYXRoLmpvaW4odGhpcy5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJtYXBcIiwgYCR7Z2Z2fS54bWxgKTtcbiAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KGZpbGVQYXRoKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wYXRjaFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGF0Y2hGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmb3JtRGlyUGF0aCA9IHBhdGguam9pbih0aGlzLmZhcm1EaXJlY3RvcnkpO1xuICAgICAgICBjb25zdCBmaWxlcyA9IGF3YWl0IGdsb2JBc3luYyhcImZvcm1zLyovcGF0Y2gvKi54c2x0XCIsIHsgY3dkOiBmb3JtRGlyUGF0aCB9KTtcbiAgICAgICAgcmV0dXJuIGZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGF0Y2gvOmdmdi54c2x0XCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGF0Y2hGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gcGF0aC5qb2luKHRoaXMuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwicGF0Y2hcIiwgYCR7Z2Z2fS54c2x0YCk7XG4gICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlUGF0aCk7XG4gICAgfVxufVxuIl19
247
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9DTElDb21tYW5kcy9CdWlsZFNlcnZlci9SZXNvdXJjZXNDb250cm9sbGVycy9CdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbIkJ1aWxkU2VydmVyQmFja2VuZFJlc291cmNlc0NvbnRyb2xsZXIiLCJodHRwUmV0dXJuIiwiUGxhaW5UZXh0IiwiU3RyZWFtV2l0aE1pbWUiLCJodHRwVHlwZSIsIlN0cmluZyIsIlN0cmVhbSIsIlNpbmdsZXRvbkNvbnRyb2xsZXIiLCJjb25zdHJ1Y3RvciIsImFsbEZhcm1Db25maWciLCJmbGFuZ05vcm1hbGl6YXRpb25Tb3VyY2VzUHJvdmlkZXIiLCJnZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyIiwiYWxsU2NoZW1hc0ZpbGVzIiwicmVzZXRBbGxTY2hlbWFGaWxlc0RlYm91bmNlZCIsInVuZGVmaW5lZCIsImdldEFsbFBpY2tsaXN0cyIsInByb21pc2VzIiwibWFwIiwiaSIsImN3ZCIsInBhdGgiLCJqb2luIiwiZmFybURpcmVjdG9yeSIsImZpbGVzIiwiUHJvbWlzZSIsImFsbCIsImZsYXQiLCJ4IiwicmVwbGFjZSIsImdldFBpY2tsaXN0cyIsInBpY2tsaXN0RmlsZW5hbWUiLCJhbGxGaWxlUGF0aCIsInBhdGhGaWxlIiwiRXJyb3IiLCJnZXRBbGxDb252ZXJ0ZXJzRmlsZXMiLCJiYXNlbmFtZSIsImdldENvbnZlcnRlckZpbGUiLCJmaWxlbmFtZSIsImFsbEZhcm1EaXJlY3RvcmllcyIsImZvcm1EaXJQYXRoIiwicHRoIiwicG9zc2libGVGaWxlUGF0aHMiLCJnZnYiLCJmaWxlUGF0aCIsIkZpbGVTdHJlYW1SZXN1bHQiLCJOb3RGb3VuZFdlYkVycm9yIiwiZ2V0QWxsU2NoZW1hc0ZpbGVzIiwiZ2V0Rm9ybVNjaGVtYXMiLCJmaWxlUGF0dGVybiIsIlBhdGhQYXR0ZXJuIiwiZXhlY1N0cmljdCIsImZpbGUiLCJnZXRBbGxGb3JtUHJlc2VudGF0aW9ucyIsImdldEZvcm1QcmVzZW50YXRpb25zIiwiZ2V0QWxsTm9ybWFsaXplRmlsZXMiLCJmbGFuZ0ZpbGVzIiwiZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcyIsImdldE5vcm1hbGl6ZUZpbGUiLCJnZXRGTGFuZ05vcm1hbGl6ZUZpbGUiLCJTdHJlYW1SZXN1bHQiLCJnZXROb3JtYWxpemF0aW9uRmlsZUNvbnRlbnQiLCJnZXRBbGxBdHRhY2htZW50UGF0aHNGaWxlTmFtZXMiLCJnZXRBbGxBdHRhY2htZW50UGF0aEZpbGVOYW1lcyIsImdldEF0dGFjaG1lbnRQYXRoRmlsZSIsImdldEF0dGFjaG1lbnRQYXRoc0ZpbGVDb250ZW50IiwiZ2V0QWxsVW5tYXBGaWxlcyIsImdldFVubWFwRmlsZSIsImdldEFsbE1hcEZpbGVzIiwiZ2V0TWFwRmlsZSIsImdldEFsbFBhdGNoRmlsZXMiLCJnZXRQYXRjaEZpbGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7Ozs7Ozs7O0lBSWFBLHFDLFdBbUJSLHNCQUFRLFlBQVIsRUFBc0JDLG9CQUFXQyxTQUFqQyxDLFVBT0Esc0JBQ0csOEJBREgsRUFFR0Qsb0JBQVdFLGNBQVgsQ0FBMEIsa0JBQTFCLENBRkgsRUFHRywwQkFBYSxrQkFBYixFQUFpQ0MsaUJBQVNDLE1BQTFDLENBSEgsQyxVQWVBLHNCQUFRLGFBQVIsRUFBdUJKLG9CQUFXQyxTQUFsQyxDLFVBU0Esc0JBQVEsdUJBQVIsRUFBaUNELG9CQUFXSyxNQUE1QyxFQUFvRCwwQkFBYSxVQUFiLEVBQXlCRixpQkFBU0MsTUFBbEMsQ0FBcEQsQyxVQWdCQSxzQkFBUSxVQUFSLEVBQW9CSixvQkFBV0MsU0FBL0IsQyxVQWFBLHNCQUFRLG9CQUFSLEVBQThCRCxvQkFBV0ssTUFBekMsRUFBaUQsMEJBQWEsVUFBYixFQUF5QkYsaUJB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LEVBQTJCLE9BQTNCLEVBQW9Db0IsR0FBcEMsRUFBeUMsT0FBekMsRUFBbUQsR0FBRUEsR0FBSSxPQUF6RCxDQURnQixDQUFwQjs7QUFHQSxTQUFLLE1BQU1WLFFBQVgsSUFBdUJELFdBQXZCLEVBQW9DO0FBQ2hDLFVBQUksTUFBTSx5QkFBV0MsUUFBWCxDQUFWLEVBQWdDO0FBQzVCLGVBQU8sSUFBSVkscUNBQUosQ0FBcUJaLFFBQXJCLENBQVA7QUFDSDtBQUNKOztBQUNELFVBQU1DLEtBQUssQ0FBRSxtQkFBa0JTLEdBQUksTUFBeEIsQ0FBWDtBQUNIOztBQXZOMEUsQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNyZWF0ZVJlYWRTdHJlYW0sIFJlYWRTdHJlYW0gfSBmcm9tIFwiZnNcIjtcbmltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgcGF0aEV4aXN0cyB9IGZyb20gXCJmcy1leHRyYVwiO1xuaW1wb3J0IF8sIHsgZGVib3VuY2UgfSBmcm9tIFwibG9kYXNoXCI7XG5pbXBvcnQgeyBGYXJtQ29uZmlnIH0gZnJvbSBcIlRvb2xzL3NyYy9DYW5keUNMSVwiO1xuXG5pbXBvcnQgeyBleHRyYWN0R2Z2c0Zyb21GaWxlTmFtZSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0V4dHJhY3RHZnZzRnJvbUZpbGVOYW1lXCI7XG5pbXBvcnQgeyBnbG9iQXN5bmMgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9Gc1V0aWxzXCI7XG5pbXBvcnQgeyBodHRwR2V0IH0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL01ldGhvZHNcIjtcbmltcG9ydCB7IE5vdEZvdW5kV2ViRXJyb3IgfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvTm90Rm91bmRXZWJFcnJvclwiO1xuaW1wb3J0IHsgaHR0cFR5cGUsIGh0dHBVcmxQYXJhbSB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvQXR0cmlidXRlUm91dGluZy9QYXJhbXNcIjtcbmltcG9ydCB7IGh0dHBSZXR1cm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9IdHRwU2VydmVyL0F0dHJpYnV0ZVJvdXRpbmcvUmVzdWx0c1wiO1xuaW1wb3J0IHtcbiAgICBGaWxlU3RyZWFtUmVzdWx0LFxuICAgIFN0cmVhbVJlc3VsdCxcbn0gZnJvbSBcIi4uLy4uLy4uL0NvbW1vbnMvSHR0cFNlcnZlci9BdHRyaWJ1dGVSb3V0aW5nL1Jlc3VsdHMvU3RyZWFtUmVzdWx0SGFuZGxlclwiO1xuaW1wb3J0IHsgU2luZ2xldG9uQ29udHJvbGxlciB9IGZyb20gXCIuLi8uLi8uLi9Db21tb25zL0h0dHBTZXJ2ZXIvRXhwcmVzc1dyYXBwZXIvU2luZ2xldG9uQ29udHJvbGxlclwiO1xuaW1wb3J0IHsgUGF0aFBhdHRlcm4gfSBmcm9tIFwiLi4vLi4vLi4vQ29tbW9ucy9QYXRoUGF0dGVyblwiO1xuaW1wb3J0IHsgcmVqZWN0IH0gZnJvbSBcIi4uLy4uLy4uLy4uLy4uL0NvbW1vbi9UeXBpbmdVdGlsc1wiO1xuXG5pbXBvcnQgeyBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlciB9IGZyb20gXCIuL0lHZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyXCI7XG5cbmV4cG9ydCBjbGFzcyBCdWlsZFNlcnZlckJhY2tlbmRSZXNvdXJjZXNDb250cm9sbGVyIGV4dGVuZHMgU2luZ2xldG9uQ29udHJvbGxlciB7XG4gICAgcHJpdmF0ZSByZWFkb25seSBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW107XG4gICAgcHJpdmF0ZSByZWFkb25seSBnZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyOiBJR2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlcjtcblxuICAgIHByaXZhdGUgYWxsU2NoZW1hc0ZpbGVzOiB1bmRlZmluZWQgfCBzdHJpbmc7XG4gICAgcHJpdmF0ZSByZWFkb25seSByZXNldEFsbFNjaGVtYUZpbGVzRGVib3VuY2VkOiAoKSA9PiB2b2lkO1xuXG4gICAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgICAgICBhbGxGYXJtQ29uZmlnOiBGYXJtQ29uZmlnW10sXG4gICAgICAgIGZsYW5nTm9ybWFsaXphdGlvblNvdXJjZXNQcm92aWRlcjogSUdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXJcbiAgICApIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyID0gZmxhbmdOb3JtYWxpemF0aW9uU291cmNlc1Byb3ZpZGVyO1xuICAgICAgICB0aGlzLmFsbEZhcm1Db25maWcgPSBhbGxGYXJtQ29uZmlnO1xuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQgPSBkZWJvdW5jZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFsbFNjaGVtYXNGaWxlcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfSwgNTAwMCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvcGlja2xpc3RzXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxQaWNrbGlzdHMoKTogUHJvbWlzZTxzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gZ2xvYkFzeW5jKFwicGlja2xpc3RzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiB4LnJlcGxhY2UoXCJwaWNrbGlzdHMvXCIsIFwiXCIpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFxuICAgICAgICBcIi9waWNrbGlzdHMvOnBpY2tsaXN0RmlsZW5hbWVcIixcbiAgICAgICAgaHR0cFJldHVybi5TdHJlYW1XaXRoTWltZShcImFwcGxpY2F0aW9uL2pzb25cIiksXG4gICAgICAgIGh0dHBVcmxQYXJhbShcInBpY2tsaXN0RmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKVxuICAgIClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0UGlja2xpc3RzKHBpY2tsaXN0RmlsZW5hbWU6IHN0cmluZyk6IFByb21pc2U8UmVhZFN0cmVhbT4ge1xuICAgICAgICBjb25zdCBhbGxGaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcInBpY2tsaXN0c1wiLCBwaWNrbGlzdEZpbGVuYW1lKSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBjcmVhdGVSZWFkU3RyZWFtKHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHBpY2tsaXN0RmlsZW5hbWUgJHtwaWNrbGlzdEZpbGVuYW1lfWApO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL2NvbnZlcnRlcnNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbENvbnZlcnRlcnNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9jb252ZXJ0ZXJzLypcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9jb252ZXJ0ZXJzLzpmaWxlbmFtZVwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZmlsZW5hbWVcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29udmVydGVyRmlsZShmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZhcm1EaXJlY3RvcmllcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PiBpLmZhcm1EaXJlY3RvcnkpLmZsYXQoKTtcbiAgICAgICAgY29uc3QgZm9ybURpclBhdGggPSBhbGxGYXJtRGlyZWN0b3JpZXMubWFwKHB0aCA9PiBwYXRoLmpvaW4ocHRoKSk7XG5cbiAgICAgICAgY29uc3QgcG9zc2libGVGaWxlUGF0aHMgPSBmb3JtRGlyUGF0aFxuICAgICAgICAgICAgLm1hcChpID0+IGV4dHJhY3RHZnZzRnJvbUZpbGVOYW1lKGZpbGVuYW1lKS5tYXAoZ2Z2ID0+IHBhdGguam9pbihpLCBgZm9ybXMvJHtnZnZ9L2NvbnZlcnRlcnMvJHtmaWxlbmFtZX1gKSkpXG4gICAgICAgICAgICAuZmxhdCgpO1xuICAgICAgICBmb3IgKGNvbnN0IGZpbGVQYXRoIG9mIHBvc3NpYmxlRmlsZVBhdGhzKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlUGF0aCkpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGVTdHJlYW1SZXN1bHQoZmlsZVBhdGgpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHRocm93IG5ldyBOb3RGb3VuZFdlYkVycm9yKFwiRmlsZSBub3QgZm91bmRcIiwgZmFsc2UpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3NjaGVtYXNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbFNjaGVtYXNGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBpZiAodGhpcy5hbGxTY2hlbWFzRmlsZXMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgY29uc3QgcHJvbWlzZXMgPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL3NjaGVtYXMvKlwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBjb25zdCBmaWxlcyA9IChhd2FpdCBQcm9taXNlLmFsbChwcm9taXNlcykpLmZsYXQoKTtcbiAgICAgICAgICAgIHRoaXMuYWxsU2NoZW1hc0ZpbGVzID0gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlc2V0QWxsU2NoZW1hRmlsZXNEZWJvdW5jZWQoKTtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxsU2NoZW1hc0ZpbGVzO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3NjaGVtYXMvOmZpbGVuYW1lXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJmaWxlbmFtZVwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGb3JtU2NoZW1hcyhmaWxlbmFtZTogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXR0ZXJuID0gbmV3IFBhdGhQYXR0ZXJuKFwie2dmdn0uKi54bWxcIik7XG4gICAgICAgIGNvbnN0IGdmdjogc3RyaW5nID0gZmlsZVBhdHRlcm4uZXhlY1N0cmljdChmaWxlbmFtZSkuZ2Z2ID8/IHJlamVjdCgpO1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMuYWxsRmFybUNvbmZpZ1xuICAgICAgICAgICAgLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInNjaGVtYXNcIiwgZmlsZW5hbWUpKVxuICAgICAgICAgICAgLmZsYXQoKTtcbiAgICAgICAgZm9yIChjb25zdCBmaWxlIG9mIGZpbGVQYXRoKSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgcGF0aEV4aXN0cyhmaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChmaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBuZXcgTm90Rm91bmRXZWJFcnJvcihcIkZpbGUgbm90IGZvdW5kXCIsIGZhbHNlKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wcmVzZW50YXRpb25zXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxGb3JtUHJlc2VudGF0aW9ucygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9wcmVzZW50YXRpb25zLmpzb25cIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4geC5yZXBsYWNlKFwiZm9ybXMvXCIsIFwiXCIpLnJlcGxhY2UoXCIvXCIsIFwiLlwiKSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wcmVzZW50YXRpb25zLzpnZnYucHJlc2VudGF0aW9ucy5qc29uXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0Rm9ybVByZXNlbnRhdGlvbnMoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT4gcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSwgXCJmb3Jtc1wiLCBnZnYsIFwicHJlc2VudGF0aW9ucy5qc29uXCIpKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9ub3JtYWxpemVcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbE5vcm1hbGl6ZUZpbGVzKCk6IFByb21pc2U8c3RyaW5nPiB7XG4gICAgICAgIGNvbnN0IHByb21pc2VzID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBnbG9iQXN5bmMoXCJmb3Jtcy8qL25vcm1hbGl6ZS8qLnhtbFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIGNvbnN0IGZsYW5nRmlsZXMgPSBhd2FpdCB0aGlzLmdlbmVyYXRlZFNlcnZlclNpZGVTb3VyY2VzUHJvdmlkZXIuZ2V0QWxsTm9ybWFsaXphdGlvbkZpbGVOYW1lcygpO1xuICAgICAgICByZXR1cm4gWy4uLmZpbGVzLm1hcCh4ID0+IHBhdGguYmFzZW5hbWUoeCkpLCAuLi5mbGFuZ0ZpbGVzXS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL25vcm1hbGl6ZS86Z2Z2LnhtbFwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldE5vcm1hbGl6ZUZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcIm5vcm1hbGl6ZVwiLCBgJHtnZnZ9LnhtbGApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbm9ybWFsaXplLzpnZnYubm9ybWFsaXplXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0RkxhbmdOb3JtYWxpemVGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdHJlYW1SZXN1bHQoYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldE5vcm1hbGl6YXRpb25GaWxlQ29udGVudChnZnYpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9hdHRhY2htZW50cGF0aHNcIiwgaHR0cFJldHVybi5QbGFpblRleHQpXG4gICAgcHVibGljIGFzeW5jIGdldEFsbEF0dGFjaG1lbnRQYXRoc0ZpbGVOYW1lcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBmbGFuZ0ZpbGVzID0gYXdhaXQgdGhpcy5nZW5lcmF0ZWRTZXJ2ZXJTaWRlU291cmNlc1Byb3ZpZGVyLmdldEFsbEF0dGFjaG1lbnRQYXRoRmlsZU5hbWVzKCk7XG4gICAgICAgIHJldHVybiBmbGFuZ0ZpbGVzLmpvaW4oXCJcXG5cIik7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvYXR0YWNobWVudHBhdGhzLzpnZnYuanNvblwiLCBodHRwUmV0dXJuLlN0cmVhbSwgaHR0cFVybFBhcmFtKFwiZ2Z2XCIsIGh0dHBUeXBlLlN0cmluZykpXG4gICAgcHVibGljIGFzeW5jIGdldEF0dGFjaG1lbnRQYXRoRmlsZShnZnY6IHN0cmluZyk6IFByb21pc2U8U3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIHJldHVybiBuZXcgU3RyZWFtUmVzdWx0KGF3YWl0IHRoaXMuZ2VuZXJhdGVkU2VydmVyU2lkZVNvdXJjZXNQcm92aWRlci5nZXRBdHRhY2htZW50UGF0aHNGaWxlQ29udGVudChnZnYpKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi91bm1hcFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsVW5tYXBGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi91bm1hcC8qLnhtbFwiLCB7IGN3ZDogcGF0aC5qb2luKGkuZmFybURpcmVjdG9yeSkgfSlcbiAgICAgICAgKTtcbiAgICAgICAgY29uc3QgZmlsZXMgPSAoYXdhaXQgUHJvbWlzZS5hbGwocHJvbWlzZXMpKS5mbGF0KCk7XG4gICAgICAgIHJldHVybiBmaWxlcy5tYXAoeCA9PiBwYXRoLmJhc2VuYW1lKHgpKS5qb2luKFwiXFxuXCIpO1xuICAgIH1cblxuICAgIEBodHRwR2V0KFwiL3VubWFwLzpnZnYueG1sXCIsIGh0dHBSZXR1cm4uU3RyZWFtLCBodHRwVXJsUGFyYW0oXCJnZnZcIiwgaHR0cFR5cGUuU3RyaW5nKSlcbiAgICBwdWJsaWMgYXN5bmMgZ2V0VW5tYXBGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+XG4gICAgICAgICAgICBwYXRoLmpvaW4oaS5mYXJtRGlyZWN0b3J5LCBcImZvcm1zXCIsIGdmdiwgXCJ1bm1hcFwiLCBgJHtnZnZ9LnhtbGApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxuXG4gICAgQGh0dHBHZXQoXCIvbWFwXCIsIGh0dHBSZXR1cm4uUGxhaW5UZXh0KVxuICAgIHB1YmxpYyBhc3luYyBnZXRBbGxNYXBGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9tYXAvKi54bWxcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9tYXAvOmdmdi54bWxcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRNYXBGaWxlKGdmdjogc3RyaW5nKTogUHJvbWlzZTxGaWxlU3RyZWFtUmVzdWx0PiB7XG4gICAgICAgIGNvbnN0IGFsbEZpbGVQYXRoID0gdGhpcy5hbGxGYXJtQ29uZmlnLm1hcChpID0+IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcIm1hcFwiLCBgJHtnZnZ9LnhtbGApKTtcbiAgICAgICAgZm9yIChjb25zdCBwYXRoRmlsZSBvZiBhbGxGaWxlUGF0aCkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IHBhdGhFeGlzdHMocGF0aEZpbGUpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBGaWxlU3RyZWFtUmVzdWx0KHBhdGhGaWxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBFcnJvcihgbm90IGZvdW5kIHVubWFwICR7Z2Z2fS54bWxgKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wYXRjaFwiLCBodHRwUmV0dXJuLlBsYWluVGV4dClcbiAgICBwdWJsaWMgYXN5bmMgZ2V0QWxsUGF0Y2hGaWxlcygpOiBQcm9taXNlPHN0cmluZz4ge1xuICAgICAgICBjb25zdCBwcm9taXNlcyA9IHRoaXMuYWxsRmFybUNvbmZpZy5tYXAoaSA9PlxuICAgICAgICAgICAgZ2xvYkFzeW5jKFwiZm9ybXMvKi9wYXRjaC8qLnhzbHRcIiwgeyBjd2Q6IHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnkpIH0pXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGZpbGVzID0gKGF3YWl0IFByb21pc2UuYWxsKHByb21pc2VzKSkuZmxhdCgpO1xuICAgICAgICByZXR1cm4gZmlsZXMubWFwKHggPT4gcGF0aC5iYXNlbmFtZSh4KSkuam9pbihcIlxcblwiKTtcbiAgICB9XG5cbiAgICBAaHR0cEdldChcIi9wYXRjaC86Z2Z2LnhzbHRcIiwgaHR0cFJldHVybi5TdHJlYW0sIGh0dHBVcmxQYXJhbShcImdmdlwiLCBodHRwVHlwZS5TdHJpbmcpKVxuICAgIHB1YmxpYyBhc3luYyBnZXRQYXRjaEZpbGUoZ2Z2OiBzdHJpbmcpOiBQcm9taXNlPEZpbGVTdHJlYW1SZXN1bHQ+IHtcbiAgICAgICAgY29uc3QgYWxsRmlsZVBhdGggPSB0aGlzLmFsbEZhcm1Db25maWcubWFwKGkgPT5cbiAgICAgICAgICAgIHBhdGguam9pbihpLmZhcm1EaXJlY3RvcnksIFwiZm9ybXNcIiwgZ2Z2LCBcInBhdGNoXCIsIGAke2dmdn0ueHNsdGApXG4gICAgICAgICk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aEZpbGUgb2YgYWxsRmlsZVBhdGgpIHtcbiAgICAgICAgICAgIGlmIChhd2FpdCBwYXRoRXhpc3RzKHBhdGhGaWxlKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgRmlsZVN0cmVhbVJlc3VsdChwYXRoRmlsZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgRXJyb3IoYG5vdCBmb3VuZCB1bm1hcCAke2dmdn0ueG1sYCk7XG4gICAgfVxufVxuIl19