aws-cdk 2.178.2 → 2.179.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 (53) hide show
  1. package/THIRD_PARTY_LICENSES +256 -234
  2. package/build-info.json +2 -2
  3. package/lib/api/cxapp/cloud-assembly.d.ts +18 -1
  4. package/lib/api/cxapp/cloud-assembly.js +38 -5
  5. package/lib/api/deployments/asset-publishing.d.ts +4 -27
  6. package/lib/api/deployments/asset-publishing.js +8 -34
  7. package/lib/api/deployments/cloudformation.d.ts +1 -0
  8. package/lib/api/deployments/cloudformation.js +9 -1
  9. package/lib/api/deployments/deployments.d.ts +0 -22
  10. package/lib/api/deployments/deployments.js +1 -29
  11. package/lib/api/garbage-collection/garbage-collector.js +3 -3
  12. package/lib/api/garbage-collection/progress-printer.js +8 -1
  13. package/lib/{import.d.ts → api/resource-import/importer.d.ts} +55 -12
  14. package/lib/api/resource-import/importer.js +332 -0
  15. package/lib/api/resource-import/index.d.ts +2 -0
  16. package/lib/api/resource-import/index.js +19 -0
  17. package/lib/{migrator.d.ts → api/resource-import/migrator.d.ts} +9 -6
  18. package/lib/api/resource-import/migrator.js +74 -0
  19. package/lib/cli/cdk-toolkit.d.ts +7 -0
  20. package/lib/cli/cdk-toolkit.js +20 -9
  21. package/lib/cli/cli.js +4 -3
  22. package/lib/cli/convert-to-user-input.js +1 -1
  23. package/lib/cli/messages.d.ts +30 -0
  24. package/lib/cli/messages.js +112 -0
  25. package/lib/cli/parse-command-line-arguments.js +1 -1
  26. package/lib/cli/user-configuration.js +2 -1
  27. package/lib/cli/user-input.js +1 -1
  28. package/lib/cli/util/yargs-helpers.js +2 -2
  29. package/lib/cli/version.d.ts +1 -1
  30. package/lib/cli/version.js +6 -3
  31. package/lib/commands/doctor.js +2 -2
  32. package/lib/index.js +126 -197
  33. package/lib/init-templates/.init-version.json +1 -1
  34. package/lib/init-templates/app/javascript/package.json +1 -1
  35. package/lib/init-templates/app/typescript/package.json +1 -1
  36. package/lib/init-templates/sample-app/javascript/package.json +1 -1
  37. package/lib/init-templates/sample-app/typescript/package.json +1 -1
  38. package/lib/init.d.ts +13 -1
  39. package/lib/init.js +37 -32
  40. package/lib/list-stacks.d.ts +1 -17
  41. package/lib/list-stacks.js +2 -37
  42. package/package.json +10 -10
  43. package/test/api/deployments/cloudformation-deployments.test.js +27 -3
  44. package/test/api/garbage-collection.test.js +23 -1
  45. package/test/api/resource-import/import.test.js +373 -0
  46. package/test/init.test.js +14 -1
  47. package/test/toolkit/cli-io-host.test.js +18 -10
  48. package/lib/import.js +0 -329
  49. package/lib/migrator.js +0 -67
  50. package/test/_helpers/prompts.d.ts +0 -11
  51. package/test/_helpers/prompts.js +0 -22
  52. package/test/import.test.js +0 -364
  53. /package/test/{import.test.d.ts → api/resource-import/import.test.d.ts} +0 -0
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- jest.mock('../../../lib/api/deployments/deploy-stack');
4
- jest.mock('../../../lib/api/deployments/asset-publishing');
3
+ const cxapi = require("@aws-cdk/cx-api");
5
4
  const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
6
5
  const client_ssm_1 = require("@aws-sdk/client-ssm");
7
6
  const deployments_1 = require("../../../lib/api/deployments");
@@ -11,6 +10,8 @@ const toolkit_info_1 = require("../../../lib/api/toolkit-info");
11
10
  const util_1 = require("../../util");
12
11
  const mock_sdk_1 = require("../../util/mock-sdk");
13
12
  const fake_cloudformation_stack_1 = require("../fake-cloudformation-stack");
13
+ jest.mock('../../../lib/api/deployments/deploy-stack');
14
+ jest.mock('../../../lib/api/deployments/asset-publishing');
14
15
  let sdkProvider;
15
16
  let sdk;
16
17
  let deployments;
@@ -979,6 +980,29 @@ describe('stackExists', () => {
979
980
  }));
980
981
  });
981
982
  });
983
+ test('tags are passed along to create change set', async () => {
984
+ mock_sdk_1.mockCloudFormationClient.on(client_cloudformation_1.DescribeChangeSetCommand).resolves({
985
+ Status: client_cloudformation_1.ChangeSetStatus.CREATE_COMPLETE,
986
+ });
987
+ const stack = {};
988
+ stack.tags = { SomeKey: 'SomeValue' };
989
+ for (const methodName of Object.getOwnPropertyNames(cxapi.CloudFormationStackArtifact.prototype)) {
990
+ stack[methodName] = jest.fn();
991
+ }
992
+ await (0, deployments_1.createChangeSet)({
993
+ stack: stack,
994
+ cfn: new mock_sdk_1.MockSdk().cloudFormation(),
995
+ changeSetName: 'foo',
996
+ willExecute: false,
997
+ exists: true,
998
+ uuid: '142DF82A-8ED8-4944-8EEB-A5BAE141F13F',
999
+ bodyParameter: {},
1000
+ parameters: {},
1001
+ });
1002
+ expect(mock_sdk_1.mockCloudFormationClient).toHaveReceivedCommandWith(client_cloudformation_1.CreateChangeSetCommand, {
1003
+ Tags: [{ Key: 'SomeKey', Value: 'SomeValue' }],
1004
+ });
1005
+ });
982
1006
  function pushStackResourceSummaries(stackName, ...items) {
983
1007
  if (!currentCfnStackResources[stackName]) {
984
1008
  currentCfnStackResources[stackName] = [];
@@ -1014,4 +1038,4 @@ function givenStacks(stacks) {
1014
1038
  }
1015
1039
  });
1016
1040
  }
1017
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24tZGVwbG95bWVudHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsb3VkZm9ybWF0aW9uLWRlcGxveW1lbnRzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxJQUFJLENBQUMsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLENBQUM7QUFDdkQsSUFBSSxDQUFDLElBQUksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO0FBRTNELDBFQVF3QztBQUN4QyxvREFBMEQ7QUFDMUQsOERBQWdGO0FBQ2hGLDRFQUF3RTtBQUN4RSw0REFBOEQ7QUFDOUQsZ0VBQTREO0FBQzVELHFDQUF1QztBQUN2QyxrREFRNkI7QUFDN0IsNEVBQXVFO0FBRXZFLElBQUksV0FBNEIsQ0FBQztBQUNqQyxJQUFJLEdBQVksQ0FBQztBQUNqQixJQUFJLFdBQXdCLENBQUM7QUFDN0IsSUFBSSxxQkFBZ0MsQ0FBQztBQUNyQyxJQUFJLHdCQUFtRSxDQUFDO0FBQ3hFLFVBQVUsQ0FBQyxHQUFHLEVBQUU7SUFDZCxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7SUFDckIsV0FBVyxHQUFHLElBQUksMEJBQWUsRUFBRSxDQUFDO0lBQ3BDLEdBQUcsR0FBRyxJQUFJLGtCQUFPLEVBQUUsQ0FBQztJQUNwQixXQUFXLEdBQUcsSUFBSSx5QkFBVyxDQUFDLEVBQUUsV0FBVyxFQUFFLENBQUMsQ0FBQztJQUUvQyx3QkFBd0IsR0FBRyxFQUFFLENBQUM7SUFDOUIsSUFBQSxtQ0FBd0IsR0FBRSxDQUFDO0lBQzNCLDBCQUFXLENBQUMsTUFBTSxHQUFHLHFCQUFxQixHQUFHLElBQUk7U0FDOUMsRUFBRSxFQUFFO1NBQ0osaUJBQWlCLENBQUMsMEJBQVcsQ0FBQywwQkFBMEIsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDLENBQUM7SUFDbkYsSUFBQSw2QkFBa0IsR0FBRSxDQUFDO0FBQ3ZCLENBQUMsQ0FBQyxDQUFDO0FBRUgsU0FBUyxrQ0FBa0MsQ0FBQyxLQUEy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LEVBQUUsUUFBUSxDQUFDLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxTQUFTLEVBQUUsRUFBRTtRQUNsRixJQUFJLEtBQUssR0FBRyxNQUFNLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQ1gsS0FBSyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN0QixDQUFDO1FBQ0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNWLE1BQU0sUUFBUSxHQUFHLElBQUksbURBQXVCLENBQUM7Z0JBQzNDLFNBQVM7Z0JBQ1QsT0FBTyxFQUFFLFNBQVMsU0FBUyxFQUFFO2dCQUM3QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7YUFDL0IsQ0FBQyxDQUFDO1lBQ0gsUUFBUSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckMsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQzthQUFNLENBQUM7WUFDTixPQUFPLElBQUksbURBQXVCLENBQUMsRUFBRSxTQUFTLEVBQUUsQ0FBQyxDQUFDO1FBQ3BELENBQUM7SUFDSCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJqZXN0Lm1vY2soJy4uLy4uLy4uL2xpYi9hcGkvZGVwbG95bWVudHMvZGVwbG95LXN0YWNrJyk7XG5qZXN0Lm1vY2soJy4uLy4uLy4uL2xpYi9hcGkvZGVwbG95bWVudHMvYXNzZXQtcHVibGlzaGluZycpO1xuXG5pbXBvcnQge1xuICBEZXNjcmliZVN0YWNrc0NvbW1hbmQsXG4gIExpc3RTdGFja1Jlc291cmNlc0NvbW1hbmQsXG4gIFN0YWNrU3RhdHVzLFxuICB0eXBlIFN0YWNrUmVzb3VyY2VTdW1tYXJ5LFxuICBSb2xsYmFja1N0YWNrQ29tbWFuZCxcbiAgQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmQsXG4gIERlc2NyaWJlU3RhY2tFdmVudHNDb21tYW5kLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgR2V0UGFyYW1ldGVyQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25TdGFjaywgRGVwbG95bWVudHMgfSBmcm9tICcuLi8uLi8uLi9saWIvYXBpL2RlcGxveW1lbnRzJztcbmltcG9ydCB7IGRlcGxveVN0YWNrIH0gZnJvbSAnLi4vLi4vLi4vbGliL2FwaS9kZXBsb3ltZW50cy9kZXBsb3ktc3RhY2snO1xuaW1wb3J0IHsgSG90c3dhcE1vZGUgfSBmcm9tICcuLi8uLi8uLi9saWIvYXBpL2hvdHN3YXAvY29tbW9uJztcbmltcG9ydCB7IFRvb2xraXRJbmZvIH0gZnJvbSAnLi4vLi4vLi4vbGliL2FwaS90b29sa2l0LWluZm8nO1xuaW1wb3J0IHsgdGVzdFN0YWNrIH0gZnJvbSAnLi4vLi4vdXRpbCc7XG5pbXBvcnQge1xuICBtb2NrQm9vdHN0cmFwU3RhY2ssXG4gIG1vY2tDbG91ZEZvcm1hdGlvbkNsaWVudCxcbiAgTW9ja1NkayxcbiAgTW9ja1Nka1Byb3ZpZGVyLFxuICBtb2NrU1NNQ2xpZW50LFxuICByZXN0b3JlU2RrTW9ja3NUb0RlZmF1bHQsXG4gIHNldERlZmF1bHRTVFNNb2Nrcyxcbn0gZnJvbSAnLi4vLi4vdXRpbC9tb2NrLXNkayc7XG5pbXBvcnQgeyBGYWtlQ2xvdWRmb3JtYXRpb25TdGFjayB9IGZyb20gJy4uL2Zha2UtY2xvdWRmb3JtYXRpb24tc3RhY2snO1xuXG5sZXQgc2RrUHJvdmlkZXI6IE1vY2tTZGtQcm92aWRlcjtcbmxldCBzZGs6IE1vY2tTZGs7XG5sZXQgZGVwbG95bWVudHM6IERlcGxveW1lbnRzO1xubGV0IG1vY2tUb29sa2l0SW5mb0xvb2t1cDogamVzdC5Nb2NrO1xubGV0IGN1cnJlbnRDZm5TdGFja1Jlc291cmNlczogeyBba2V5OiBzdHJpbmddOiBTdGFja1Jlc291cmNlU3VtbWFyeVtdIH07XG5iZWZvcmVFYWNoKCgpID0+IHtcbiAgamVzdC5yZXNldEFsbE1vY2tzKCk7XG4gIHNka1Byb3ZpZGVyID0gbmV3IE1vY2tTZGtQcm92aWRlcigpO1xuICBzZGsgPSBuZXcgTW9ja1NkaygpO1xuICBkZXBsb3ltZW50cyA9IG5ldyBEZXBsb3ltZW50cyh7IHNka1Byb3ZpZGVyIH0pO1xuXG4gIGN1cnJlbnRDZm5TdGFja1Jlc291cmNlcyA9IHt9O1xuICByZXN0b3JlU2RrTW9ja3NUb0RlZmF1bHQoKTtcbiAgVG9vbGtpdEluZm8ubG9va3VwID0gbW9ja1Rvb2xraXRJbmZvTG9va3VwID0gamVzdFxuICAgIC5mbigpXG4gICAgLm1vY2tSZXNvbHZlZFZhbHVlKFRvb2xraXRJbmZvLmJvb3RzdHJhcFN0YWNrTm90Rm91bmRJbmZvKCdUZXN0Qm9vdHN0cmFwU3RhY2snKSk7XG4gIHNldERlZmF1bHRTVFNNb2NrcygpO1xufSk7XG5cbmZ1bmN0aW9uIG1vY2tTdWNjZXNzZnVsQm9vdHN0cmFwU3RhY2tMb29rdXAocHJvcHM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KSB7XG4gIGNvbnN0IG91dHB1dHMgPSB7XG4gICAgQnVja2V0TmFtZTogJ0JVQ0tFVF9OQU1FJyxcbiAgICBCdWNrZXREb21haW5OYW1lOiAnQlVDS0VUX0VORFBPSU5UJyxcbiAgICBCb290c3RyYXBWZXJzaW9uOiAnMScsXG4gICAgLi4ucHJvcHMsXG4gIH07XG5cbiAgY29uc3QgZmFrZVN0YWNrID0gbW9ja0Jvb3RzdHJhcFN0YWNrKHtcbiAgICBPdXRwdXRzOiBPYmplY3QuZW50cmllcyhvdXRwdXRzKS5tYXAoKFtrLCB2XSkgPT4gKHtcbiAgICAgIE91dHB1dEtleTogayxcbiAgICAgIE91dHB1dFZhbHVlOiBgJHt2fWAsXG4gICAgfSkpLFxuICB9KTtcblxuICBtb2NrVG9vbGtpdEluZm9Mb29rdXAubW9ja1Jlc29sdmVkVmFsdWUoVG9vbGtpdEluZm8uZnJvbVN0YWNrKGZha2VTdGFjaykpO1xufVxuXG50ZXN0KCdwYXNzZXMgdGhyb3VnaCBob3Rzd2FwPXRydWUgdG8gZGVwbG95U3RhY2soKScsIGFzeW5jICgpID0+IHtcbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3ltZW50cy5kZXBsb3lTdGFjayh7XG4gICAgc3RhY2s6IHRlc3RTdGFjayh7XG4gICAgICBzdGFja05hbWU6ICdib29wJyxcbiAgICB9KSxcbiAgICBob3Rzd2FwOiBIb3Rzd2FwTW9kZS5GQUxMX0JBQ0ssXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGRlcGxveVN0YWNrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBob3Rzd2FwOiBIb3Rzd2FwTW9kZS5GQUxMX0JBQ0ssXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgncGxhY2Vob2xkZXJzIGFyZSBzdWJzdGl0dXRlZCBpbiBDbG91ZEZvcm1hdGlvbiBleGVjdXRpb24gcm9sZScsIGFzeW5jICgpID0+IHtcbiAgYXdhaXQgZGVwbG95bWVudHMuZGVwbG95U3RhY2soe1xuICAgIHN0YWNrOiB0ZXN0U3RhY2soe1xuICAgICAgc3RhY2tOYW1lOiAnYm9vcCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIGNsb3VkRm9ybWF0aW9uRXhlY3V0aW9uUm9sZUFybjogJ2Jsb29wOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9JyxcbiAgICAgIH0sXG4gICAgfSksXG4gIH0pO1xuXG4gIGV4cGVjdChkZXBsb3lTdGFjaykudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgcm9sZUFybjogJ2Jsb29wOmhlcmU6MTIzNDU2Nzg5MDEyJyxcbiAgICB9KSxcbiAgKTtcbn0pO1xuXG50ZXN0KCdyb2xlIHdpdGggcGxhY2Vob2xkZXJzIGlzIGFzc3VtZWQgaWYgYXNzdW1lcm9sZSBpcyBnaXZlbicsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgbW9ja0ZvckVudmlyb25tZW50ID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG4gICAgcmV0dXJuIHsgc2RrOiBuZXcgTW9ja1NkaygpIH07XG4gIH0pO1xuICBzZGtQcm92aWRlci5mb3JFbnZpcm9ubWVudCA9IG1vY2tGb3JFbnZpcm9ubWVudDtcblxuICBhd2FpdCBkZXBsb3ltZW50cy5kZXBsb3lTdGFjayh7XG4gICAgc3RhY2s6IHRlc3RTdGFjayh7XG4gICAgICBzdGFja05hbWU6ICdib29wJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgYXNzdW1lUm9sZUFybjogJ2Jsb29wOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9JyxcbiAgICAgIH0sXG4gICAgfSksXG4gIH0pO1xuXG4gIGV4cGVjdChtb2NrRm9yRW52aXJvbm1lbnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgIGV4cGVjdC5hbnl0aGluZygpLFxuICAgIGV4cGVjdC5hbnl0aGluZygpLFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGFzc3VtZVJvbGVBcm46ICdibG9vcDpoZXJlOjEyMzQ1Njc4OTAxMicsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgnZGVwbG95bWVudCBmYWlscyBpZiBib290c3RyYXAgc3RhY2sgaXMgbWlzc2luZycsIGFzeW5jICgpID0+IHtcbiAgYXdhaXQgZXhwZWN0KFxuICAgIGRlcGxveW1lbnRzLmRlcGxveVN0YWNrKHtcbiAgICAgIHN0YWNrOiB0ZXN0U3RhY2soe1xuICAgICAgICBzdGFja05hbWU6ICdib29wJyxcbiAgICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAgIGFzc3VtZVJvbGVBcm46ICdibG9vcDoke0FXUzo6UmVnaW9ufToke0FXUzo6QWNjb3VudElkfScsXG4gICAgICAgICAgcmVxdWlyZXNCb290c3RyYXBTdGFja1ZlcnNpb246IDk5LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSksXG4gICkucmVqZWN0cy50b1Rocm93KC9yZXF1aXJlcyBhIGJvb3RzdHJhcCBzdGFjay8pO1xufSk7XG5cbnRlc3QoJ2RlcGxveW1lbnQgZmFpbHMgaWYgYm9vdHN0cmFwIHN0YWNrIGlzIHRvbyBvbGQnLCBhc3luYyAoKSA9PiB7XG4gIG1vY2tTdWNjZXNzZnVsQm9vdHN0cmFwU3RhY2tMb29rdXAoe1xuICAgIEJvb3RzdHJhcFZlcnNpb246IDUsXG4gIH0pO1xuICBzZXREZWZhdWx0U1RTTW9ja3MoKTtcblxuICBhd2FpdCBleHBlY3QoXG4gICAgZGVwbG95bWVudHMuZGVwbG95U3RhY2soe1xuICAgICAgc3RhY2s6IHRlc3RTdGFjayh7XG4gICAgICAgIHN0YWNrTmFtZTogJ2Jvb3AnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgYXNzdW1lUm9sZUFybjogJ2Jsb29wOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9JyxcbiAgICAgICAgICByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbjogOTksXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9KSxcbiAgKS5yZWplY3RzLnRvVGhyb3coL3JlcXVpcmVzIGJvb3RzdHJhcCBzdGFjayB2ZXJzaW9uICc5OScsIGZvdW5kICc1Jy8pO1xufSk7XG5cbnRlc3QuZWFjaChbZmFsc2UsIHRydWVdKShcbiAgJ2lmIHRvb2xraXQgc3RhY2sgYmUgZm91bmQ6ICVwIGJ1dCBTU00gcGFyYW1ldGVyIG5hbWUgaXMgcHJlc2VudCBkZXBsb3ltZW50IHN1Y2NlZWRzJyxcbiAgYXN5bmMgKGNhbkxvb2t1cCkgPT4ge1xuICAgIGlmIChjYW5Mb29rdXApIHtcbiAgICAgIG1vY2tTdWNjZXNzZnVsQm9vdHN0cmFwU3RhY2tMb29rdXAoe1xuICAgICAgICBCb290c3RyYXBWZXJzaW9uOiAyLFxuICAgICAgfSk7XG4gICAgfVxuICAgIHNldERlZmF1bHRTVFNNb2NrcygpO1xuXG4gICAgbW9ja1NTTUNsaWVudC5vbihHZXRQYXJhbWV0ZXJDb21tYW5kKS5yZXNvbHZlcyh7XG4gICAgICBQYXJhbWV0ZXI6IHtcbiAgICAgICAgVmFsdWU6ICc5OScsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgYXdhaXQgZGVwbG95bWVudHMuZGVwbG95U3RhY2soe1xuICAgICAgc3RhY2s6IHRlc3RTdGFjayh7XG4gICAgICAgIHN0YWNrTmFtZTogJ2Jvb3AnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgYXNzdW1lUm9sZUFybjogJ2Jsb29wOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9JyxcbiAgICAgICAgICByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbjogOTksXG4gICAgICAgICAgYm9vdHN0cmFwU3RhY2tWZXJzaW9uU3NtUGFyYW1ldGVyOiAnL3NvbWUvcGFyYW1ldGVyJyxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KG1vY2tTU01DbGllbnQpLnRvSGF2ZVJlY2VpdmVkQ29tbWFuZFdpdGgoR2V0UGFyYW1ldGVyQ29tbWFuZCwge1xuICAgICAgTmFtZTogJy9zb21lL3BhcmFtZXRlcicsXG4gICAgfSk7XG4gIH0sXG4pO1xuXG50ZXN0KCdyZWFkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcygpIGNhbiBoYW5kbGUgbm9uLVJlc291cmNlcyBpbiB0aGUgdGVtcGxhdGUnLCBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHN0YWNrU3VtbWFyeSA9IHN0YWNrU3VtbWFyeU9mKFxuICAgICdOZXN0ZWRTdGFjaycsXG4gICAgJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAnYXJuOmF3czpjbG91ZGZvcm1hdGlvbjpiZXJtdWRhLXRyaWFuZ2xlLTEzMzc6MTIzNDU2Nzg5MDEyOnN0YWNrL05lc3RlZFN0YWNrL2FiY2QnLFxuICApO1xuXG4gIHB1c2hTdGFja1Jlc291cmNlU3VtbWFyaWVzKCdQYXJlbnRPZlN0YWNrV2l0aE91dHB1dEFuZFBhcmFtZXRlcicsIHN0YWNrU3VtbWFyeSk7XG5cbiAgbW9ja0Nsb3VkRm9ybWF0aW9uQ2xpZW50Lm9uKExpc3RTdGFja1Jlc291cmNlc0NvbW1hbmQpLnJlc29sdmVzT25jZSh7XG4gICAgU3RhY2tSZXNvdXJjZVN1bW1hcmllczogW3N0YWNrU3VtbWFyeV0sXG4gIH0pO1xuICBtb2NrQ2xvdWRGb3JtYXRpb25DbGllbnQub24oRGVzY3JpYmVTdGFja3NDb21tYW5kKS5yZXNvbHZlc09uY2Uoe1xuICAgIFN0YWNrczogW1xuICAgICAge1xuICAgICAgICBTdGFja05hbWU6ICdOZXN0ZWRTdGFjaycsXG4gICAgICAgIFJvb3RJZDogJ1N0YWNrSWQnLFxuICAgICAgICBDcmVhdGlvblRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgIFN0YWNrU3RhdHVzOiBTdGFja1N0YXR1cy5DUkVBVEVfQ09NUExFVEUsXG4gICAgICB9LFxuICAgIF0sXG4gIH0pO1xuXG4gIGNvbnN0IGNmblN0YWNrID0gbmV3IEZha2VDbG91ZGZvcm1hdGlvblN0YWNrKHtcbiAgICBzdGFja05hbWU6ICdQYXJlbnRPZlN0YWNrV2l0aE91dHB1dEFuZFBhcmFtZXRlcicsXG4gICAgc3RhY2tJZDogJ1N0YWNrSWQnLFxuICB9KTtcbiAgQ2xvdWRGb3JtYXRpb25TdGFjay5sb29rdXAgPSBhc3luYyAoXywgc3RhY2tOYW1lOiBzdHJpbmcpID0+IHtcbiAgICBzd2l0Y2ggKHN0YWNrTmFtZSkge1xuICAgICAgY2FzZSAnUGFyZW50T2ZTdGFja1dpdGhPdXRwdXRBbmRQYXJhbWV0ZXInOlxuICAgICAgICBjZm5TdGFjay50ZW1wbGF0ZSA9IGFzeW5jICgpID0+ICh7XG4gICAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgICBOZXN0ZWRTdGFjazoge1xuICAgICAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLW91dHB1dC1vbmUtcGFyYW0tc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ05lc3RlZFN0YWNrJzpcbiAgICAgICAgY2ZuU3RhY2sudGVtcGxhdGUgPSBhc3luYyAoKSA9PiAoe1xuICAgICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgICAgTmVzdGVkUmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgIFByb3BlcnR5OiAnb2xkLXZhbHVlJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBOZXN0ZWRQYXJhbToge1xuICAgICAgICAgICAgICBUeXBlOiAnU3RyaW5nJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBPdXRwdXRzOiB7XG4gICAgICAgICAgICBOZXN0ZWRPdXRwdXQ6IHtcbiAgICAgICAgICAgICAgVmFsdWU6IHtcbiAgICAgICAgICAgICAgICBSZWY6ICdOZXN0ZWRSZXNvdXJjZScsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bmtub3duIHN0YWNrIG5hbWUgJyArIHN0YWNrTmFtZSArICcgZm91bmQnKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY2ZuU3RhY2s7XG4gIH07XG5cbiAgY29uc3Qgcm9vdFN0YWNrID0gdGVzdFN0YWNrKHtcbiAgICBzdGFja05hbWU6ICdQYXJlbnRPZlN0YWNrV2l0aE91dHB1dEFuZFBhcmFtZXRlcicsXG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBOZXN0ZWRTdGFjazoge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLW91dHB1dC1vbmUtcGFyYW0tc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3Qgcm9vdFRlbXBsYXRlID0gYXdhaXQgZGVwbG95bWVudHMucmVhZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3Mocm9vdFN0YWNrKTtcbiAgY29uc3QgZGVwbG95ZWRUZW1wbGF0ZSA9IHJvb3RUZW1wbGF0ZS5kZXBsb3llZFJvb3RUZW1wbGF0ZTtcbiAgY29uc3QgbmVzdGVkU3RhY2tzID0gcm9vdFRlbXBsYXRlLm5lc3RlZFN0YWNrcztcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3llZFRlbXBsYXRlKS50b0VxdWFsKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICB9LFxuICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtb3V0cHV0LW9uZS1wYXJhbS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGV4cGVjdChyb290U3RhY2sudGVtcGxhdGUpLnRvRXF1YWwoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgTmVzdGVkU3RhY2s6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgIH0sXG4gICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1vdXRwdXQtb25lLXBhcmFtLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgZXhwZWN0KG5lc3RlZFN0YWNrcykudG9FcXVhbCh7XG4gICAgTmVzdGVkU3RhY2s6IHtcbiAgICAgIGRlcGxveWVkVGVtcGxhdGU6IHtcbiAgICAgICAgT3V0cHV0czoge1xuICAgICAgICAgIE5lc3RlZE91dHB1dDoge1xuICAgICAgICAgICAgVmFsdWU6IHtcbiAgICAgICAgICAgICAgUmVmOiAnTmVzdGVkUmVzb3VyY2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgTmVzdGVkUGFyYW06IHtcbiAgICAgICAgICAgIFR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIE5lc3RlZFJlc291cmNlOiB7XG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFByb3BlcnR5OiAnb2xkLXZhbHVlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZ2VuZXJhdGVkVGVtcGxhdGU6IHtcbiAgICAgICAgT3V0cHV0czoge1xuICAgICAgICAgIE5lc3RlZE91dHB1dDoge1xuICAgICAgICAgICAgVmFsdWU6IHtcbiAgICAgICAgICAgICAgUmVmOiAnTmVzdGVkUmVzb3VyY2UnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICBQYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgTmVzdGVkUGFyYW06IHtcbiAgICAgICAgICAgIFR5cGU6ICdOdW1iZXInLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIE5lc3RlZFJlc291cmNlOiB7XG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFByb3BlcnR5OiAnbmV3LXZhbHVlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXM6IHt9LFxuICAgICAgcGh5c2ljYWxOYW1lOiAnTmVzdGVkU3RhY2snLFxuICAgIH0sXG4gIH0pO1xufSk7XG5cbnRlc3QoJ3JlYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKCkgd2l0aCBhIDMtbGV2ZWwgbmVzdGVkICsgc2libGluZyBzdHJ1Y3R1cmUgd29ya3MnLCBhc3luYyAoKSA9PiB7XG4gIGNvbnN0IHJvb3RTdW1tYXJ5ID0gc3RhY2tTdW1tYXJ5T2YoXG4gICAgJ05lc3RlZFN0YWNrJyxcbiAgICAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICdhcm46YXdzOmNsb3VkZm9ybWF0aW9uOmJlcm11ZGEtdHJpYW5nbGUtMTMzNzoxMjM0NTY3ODkwMTI6c3RhY2svTmVzdGVkU3RhY2svYWJjZCcsXG4gICk7XG5cbiAgY29uc3QgbmVzdGVkU3RhY2tTdW1tYXJ5ID0gW1xuICAgIHN0YWNrU3VtbWFyeU9mKFxuICAgICAgJ0dyYW5kQ2hpbGRTdGFja0EnLFxuICAgICAgJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICdhcm46YXdzOmNsb3VkZm9ybWF0aW9uOmJlcm11ZGEtdHJpYW5nbGUtMTMzNzoxMjM0NTY3ODkwMTI6c3RhY2svR3JhbmRDaGlsZFN0YWNrQS9hYmNkJyxcbiAgICApLFxuICAgIHN0YWNrU3VtbWFyeU9mKFxuICAgICAgJ0dyYW5kQ2hpbGRTdGFja0InLFxuICAgICAgJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICdhcm46YXdzOmNsb3VkZm9ybWF0aW9uOmJlcm11ZGEtdHJpYW5nbGUtMTMzNzoxMjM0NTY3ODkwMTI6c3RhY2svR3JhbmRDaGlsZFN0YWNrQi9hYmNkJyxcbiAgICApLFxuICBdO1xuXG4gIGNvbnN0IGdyYW5kQ2hpbGRBU3RhY2tTdW1tYXJ5ID0gc3RhY2tTdW1tYXJ5T2YoXG4gICAgJ0dyYW5kQ2hpbGRBJyxcbiAgICAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICdhcm46YXdzOmNsb3VkZm9ybWF0aW9uOmJlcm11ZGEtdHJpYW5nbGUtMTMzNzoxMjM0NTY3ODkwMTI6c3RhY2svR3JhbmRDaGlsZEEvYWJjZCcsXG4gICk7XG5cbiAgY29uc3QgZ3JhbmRjaGlsZEJTdGFja1N1bW1hcnkgPSBzdGFja1N1bW1hcnlPZihcbiAgICAnR3JhbmRDaGlsZEInLFxuICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgJ2Fybjphd3M6Y2xvdWRmb3JtYXRpb246YmVybXVkYS10cmlhbmdsZS0xMzM3OjEyMzQ1Njc4OTAxMjpzdGFjay9HcmFuZENoaWxkQi9hYmNkJyxcbiAgKTtcblxuICBwdXNoU3RhY2tSZXNvdXJjZVN1bW1hcmllcygnTXVsdGlMZXZlbFJvb3QnLCByb290U3VtbWFyeSk7XG4gIHB1c2hTdGFja1Jlc291cmNlU3VtbWFyaWVzKCdOZXN0ZWRTdGFjaycsIC4uLm5lc3RlZFN0YWNrU3VtbWFyeSk7XG4gIHB1c2hTdGFja1Jlc291cmNlU3VtbWFyaWVzKCdHcmFuZENoaWxkU3RhY2tBJywgZ3JhbmRDaGlsZEFTdGFja1N1bW1hcnkpO1xuICBwdXNoU3RhY2tSZXNvdXJjZVN1bW1hcmllcygnR3JhbmRDaGlsZFN0YWNrQicsIGdyYW5kY2hpbGRCU3RhY2tTdW1tYXJ5KTtcblxuICBtb2NrQ2xvdWRGb3JtYXRpb25DbGllbnRcbiAgICAub24oTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZClcbiAgICAucmVzb2x2ZXNPbmNlKHtcbiAgICAgIFN0YWNrUmVzb3VyY2VTdW1tYXJpZXM6IFtyb290U3VtbWFyeV0sXG4gICAgfSlcbiAgICAucmVzb2x2ZXNPbmNlKHtcbiAgICAgIFN0YWNrUmVzb3VyY2VTdW1tYXJpZXM6IG5lc3RlZFN0YWNrU3VtbWFyeSxcbiAgICB9KVxuICAgIC5yZXNvbHZlc09uY2Uoe1xuICAgICAgU3RhY2tSZXNvdXJjZVN1bW1hcmllczogW2dyYW5kQ2hpbGRBU3RhY2tTdW1tYXJ5XSxcbiAgICB9KVxuICAgIC5yZXNvbHZlc09uY2Uoe1xuICAgICAgU3RhY2tSZXNvdXJjZVN1bW1hcmllczogW2dyYW5kY2hpbGRCU3RhY2tTdW1tYXJ5XSxcbiAgICB9KTtcblxuICBtb2NrQ2xvdWRGb3JtYXRpb25DbGllbnRcbiAgICAub24oRGVzY3JpYmVTdGFja3NDb21tYW5kKVxuICAgIC5yZXNvbHZlc09uY2Uoe1xuICAgICAgU3RhY2tzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBTdGFja05hbWU6ICdOZXN0ZWRTdGFjaycsXG4gICAgICAgICAgUm9vdElkOiAnU3RhY2tJZCcsXG4gICAgICAgICAgQ3JlYXRpb25UaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIFN0YWNrU3RhdHVzOiBTdGFja1N0YXR1cy5DUkVBVEVfQ09NUExFVEUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG4gICAgLnJlc29sdmVzT25jZSh7XG4gICAgICBTdGFja3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIFN0YWNrTmFtZTogJ0dyYW5kQ2hpbGRTdGFja0EnLFxuICAgICAgICAgIFJvb3RJZDogJ1N0YWNrSWQnLFxuICAgICAgICAgIFBhcmVudElkOiAnTmVzdGVkU3RhY2snLFxuICAgICAgICAgIENyZWF0aW9uVGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgICBTdGFja1N0YXR1czogU3RhY2tTdGF0dXMuQ1JFQVRFX0NPTVBMRVRFLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KVxuICAgIC5yZXNvbHZlc09uY2Uoe1xuICAgICAgU3RhY2tzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBTdGFja05hbWU6ICdHcmFuZENoaWxkU3RhY2tCJyxcbiAgICAgICAgICBSb290SWQ6ICdTdGFja0lkJyxcbiAgICAgICAgICBQYXJlbnRJZDogJ05lc3RlZFN0YWNrJyxcbiAgICAgICAgICBDcmVhdGlvblRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgU3RhY2tTdGF0dXM6IFN0YWNrU3RhdHVzLkNSRUFURV9DT01QTEVURSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSk7XG4gIGdpdmVuU3RhY2tzKHtcbiAgICBNdWx0aUxldmVsUm9vdDoge1xuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgTmVzdGVkU3RhY2s6IHtcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS10d28tc3RhY2tzLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICBOZXN0ZWRTdGFjazoge1xuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgU29tZVJlc291cmNlOiB7XG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBQcm9wZXJ0eTogJ29sZC12YWx1ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgR3JhbmRDaGlsZFN0YWNrQToge1xuICAgICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBHcmFuZENoaWxkU3RhY2tCOiB7XG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIEdyYW5kQ2hpbGRTdGFja0E6IHtcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgUHJvcGVydHk6ICdvbGQtdmFsdWUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIEdyYW5kQ2hpbGRTdGFja0I6IHtcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgUHJvcGVydHk6ICdvbGQtdmFsdWUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCByb290U3RhY2sgPSB0ZXN0U3RhY2soe1xuICAgIHN0YWNrTmFtZTogJ011bHRpTGV2ZWxSb290JyxcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2UtdHdvLXN0YWNrcy1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByb290VGVtcGxhdGUgPSBhd2FpdCBkZXBsb3ltZW50cy5yZWFkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyhyb290U3RhY2spO1xuICBjb25zdCBkZXBsb3llZFRlbXBsYXRlID0gcm9vdFRlbXBsYXRlLmRlcGxveWVkUm9vdFRlbXBsYXRlO1xuICBjb25zdCBuZXN0ZWRTdGFja3MgPSByb290VGVtcGxhdGUubmVzdGVkU3RhY2tzO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGRlcGxveWVkVGVtcGxhdGUpLnRvRXF1YWwoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgTmVzdGVkU3RhY2s6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgIH0sXG4gICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS10d28tc3RhY2tzLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgZXhwZWN0KHJvb3RTdGFjay50ZW1wbGF0ZSkudG9FcXVhbCh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBOZXN0ZWRTdGFjazoge1xuICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgfSxcbiAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXR3by1zdGFja3Mtc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICBleHBlY3QobmVzdGVkU3RhY2tzKS50b0VxdWFsKHtcbiAgICBOZXN0ZWRTdGFjazoge1xuICAgICAgZGVwbG95ZWRUZW1wbGF0ZToge1xuICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICBHcmFuZENoaWxkU3RhY2tBOiB7XG4gICAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEdyYW5kQ2hpbGRTdGFja0I6IHtcbiAgICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgU29tZVJlc291cmNlOiB7XG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFByb3BlcnR5OiAnb2xkLXZhbHVlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZ2VuZXJhdGVkVGVtcGxhdGU6IHtcbiAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgR3JhbmRDaGlsZFN0YWNrQToge1xuICAgICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBHcmFuZENoaWxkU3RhY2tCOiB7XG4gICAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBQcm9wZXJ0eTogJ25ldy12YWx1ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzOiB7XG4gICAgICAgIEdyYW5kQ2hpbGRTdGFja0E6IHtcbiAgICAgICAgICBkZXBsb3llZFRlbXBsYXRlOiB7XG4gICAgICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICAgICAgU29tZVJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgUHJvcGVydHk6ICdvbGQtdmFsdWUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZW5lcmF0ZWRUZW1wbGF0ZToge1xuICAgICAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIFByb3BlcnR5OiAnbmV3LXZhbHVlJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXM6IHt9LFxuICAgICAgICAgIHBoeXNpY2FsTmFtZTogJ0dyYW5kQ2hpbGRTdGFja0EnLFxuICAgICAgICB9LFxuICAgICAgICBHcmFuZENoaWxkU3RhY2tCOiB7XG4gICAgICAgICAgZGVwbG95ZWRUZW1wbGF0ZToge1xuICAgICAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIFByb3BlcnR5OiAnb2xkLXZhbHVlJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZ2VuZXJhdGVkVGVtcGxhdGU6IHtcbiAgICAgICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgICAgICBTb21lUmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICBQcm9wZXJ0eTogJ25ldy12YWx1ZScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzOiB7fSxcbiAgICAgICAgICBwaHlzaWNhbE5hbWU6ICdHcmFuZENoaWxkU3RhY2tCJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwaHlzaWNhbE5hbWU6ICdOZXN0ZWRTdGFjaycsXG4gICAgfSxcbiAgfSk7XG59KTtcblxudGVzdCgncmVhZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3MoKSBvbiBhbiB1bmRlcGxveWVkIHBhcmVudCBzdGFjayB3aXRoIGFuIChhbHNvIHVuZGVwbG95ZWQpIG5lc3RlZCBzdGFjayB3b3JrcycsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3QgY2ZuU3RhY2sgPSBuZXcgRmFrZUNsb3VkZm9ybWF0aW9uU3RhY2soe1xuICAgIHN0YWNrTmFtZTogJ1VuZGVwbG95ZWRQYXJlbnQnLFxuICAgIHN0YWNrSWQ6ICdTdGFja0lkJyxcbiAgfSk7XG4gIENsb3VkRm9ybWF0aW9uU3RhY2subG9va3VwID0gYXN5bmMgKF9jZm4sIF9zdGFja05hbWU6IHN0cmluZykgPT4ge1xuICAgIGNmblN0YWNrLnRlbXBsYXRlID0gYXN5bmMgKCkgPT4gKHt9KTtcblxuICAgIHJldHVybiBjZm5TdGFjaztcbiAgfTtcbiAgY29uc3Qgcm9vdFN0YWNrID0gdGVzdFN0YWNrKHtcbiAgICBzdGFja05hbWU6ICdVbmRlcGxveWVkUGFyZW50JyxcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utb25lLXN0YWNrLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IGRlcGxveWVkVGVtcGxhdGUgPSAoYXdhaXQgZGVwbG95bWVudHMucmVhZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3Mocm9vdFN0YWNrKSkuZGVwbG95ZWRSb290VGVtcGxhdGU7XG4gIGNvbnN0IG5lc3RlZFN0YWNrcyA9IChhd2FpdCBkZXBsb3ltZW50cy5yZWFkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyhyb290U3RhY2spKS5uZXN0ZWRTdGFja3M7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95ZWRUZW1wbGF0ZSkudG9FcXVhbCh7fSk7XG4gIGV4cGVjdChuZXN0ZWRTdGFja3MpLnRvRXF1YWwoe1xuICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICBkZXBsb3llZFRlbXBsYXRlOiB7fSxcbiAgICAgIGdlbmVyYXRlZFRlbXBsYXRlOiB7XG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgUHJvcGVydHk6ICduZXctdmFsdWUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzOiB7XG4gICAgICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICAgICAgZGVwbG95ZWRUZW1wbGF0ZToge30sXG4gICAgICAgICAgZ2VuZXJhdGVkVGVtcGxhdGU6IHtcbiAgICAgICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgICAgICBTb21lUmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIFByb3BlcnR5OiAnbmV3LXZhbHVlJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIG5lc3RlZFN0YWNrVGVtcGxhdGVzOiB7fSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG59KTtcblxudGVzdCgncmVhZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3MoKSBjYWNoZXMgY2FsbHMgdG8gbGlzdFN0YWNrUmVzb3VyY2VzKCknLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tzKHtcbiAgICAnKic6IHtcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIE5lc3RlZFN0YWNrQToge1xuICAgICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBOZXN0ZWRTdGFja0I6IHtcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RTdGFjayA9IHRlc3RTdGFjayh7XG4gICAgc3RhY2tOYW1lOiAnQ2FjaGluZ1Jvb3QnLFxuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgTmVzdGVkU3RhY2tBOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIE5lc3RlZFN0YWNrQjoge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICBwdXNoU3RhY2tSZXNvdXJjZVN1bW1hcmllcyhcbiAgICAnQ2FjaGluZ1Jvb3QnLFxuICAgIHN0YWNrU3VtbWFyeU9mKFxuICAgICAgJ05lc3RlZFN0YWNrQScsXG4gICAgICAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgJ2Fybjphd3M6Y2xvdWRmb3JtYXRpb246YmVybXVkYS10cmlhbmdsZS0xMzM3OjEyMzQ1Njc4OTAxMjpzdGFjay9vbmUtcmVzb3VyY2Utc3RhY2svYWJjZCcsXG4gICAgKSxcbiAgICBzdGFja1N1bW1hcnlPZihcbiAgICAgICdOZXN0ZWRTdGFja0InLFxuICAgICAgJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICdhcm46YXdzOmNsb3VkZm9ybWF0aW9uOmJlcm11ZGEtdHJpYW5nbGUtMTMzNzoxMjM0NTY3ODkwMTI6c3RhY2svb25lLXJlc291cmNlLXN0YWNrL2FiY2QnLFxuICAgICksXG4gICk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3ltZW50cy5yZWFkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyhyb290U3RhY2spO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KG1vY2tDbG91ZEZvcm1hdGlvbkNsaWVudCkudG9IYXZlUmVjZWl2ZWRDb21tYW5kVGltZXMoTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZCwgMSk7XG59KTtcblxudGVzdCgncm9sbGJhY2sgc3RhY2sgYXNzdW1lcyByb2xlIGlmIG5lY2Vzc2FyeScsIGFzeW5jICgpID0+IHtcbiAgY29uc3QgbW9ja0ZvckVudmlyb25tZW50ID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7XG4gICAgcmV0dXJuIHsgc2RrIH07XG4gIH0pO1xuICBzZGtQcm92aWRlci5mb3JFbnZpcm9ubWVudCA9IG1vY2tGb3JFbnZpcm9ubWVudDtcbiAgZ2l2ZW5TdGFja3Moe1xuICAgICcqJzogeyB0ZW1wbGF0ZToge30gfSxcbiAgfSk7XG5cbiAgYXdhaXQgZGVwbG95bWVudHMucm9sbGJhY2tTdGFjayh7XG4gICAgc3RhY2s6IHRlc3RTdGFjayh7XG4gICAgICBzdGFja05hbWU6ICdib29wJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgYXNzdW1lUm9sZUFybjogJ2Jsb29wOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9JyxcbiAgICAgIH0sXG4gICAgfSksXG4gICAgdmFsaWRhdGVCb290c3RyYXBTdGFja1ZlcnNpb246IGZhbHNlLFxuICB9KTtcblxuICBleHBlY3QobW9ja0ZvckVudmlyb25tZW50KS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3QuYW55dGhpbmcoKSxcbiAgICBleHBlY3QuYW55dGhpbmcoKSxcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBhc3N1bWVSb2xlQXJuOiAnYmxvb3A6aGVyZToxMjM0NTY3ODkwMTInLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ3JvbGxiYWNrIHN0YWNrIGFsbG93cyByb2xsaW5nIGJhY2sgZnJvbSBVUERBVEVfRkFJTEVEJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrcyh7XG4gICAgJyonOiB7IHRlbXBsYXRlOiB7fSwgc3RhY2tTdGF0dXM6ICdVUERBVEVfRkFJTEVEJyB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveW1lbnRzLnJvbGxiYWNrU3RhY2soe1xuICAgIHN0YWNrOiB0ZXN0U3RhY2soeyBzdGFja05hbWU6ICdib29wJyB9KSxcbiAgICB2YWxpZGF0ZUJvb3RzdHJhcFN0YWNrVmVyc2lvbjogZmFsc2UsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KG1vY2tDbG91ZEZvcm1hdGlvbkNsaWVudCkudG9IYXZlUmVjZWl2ZWRDb21tYW5kKFJvbGxiYWNrU3RhY2tDb21tYW5kKTtcbn0pO1xuXG50ZXN0KCdyb2xsYmFjayBzdGFjayBhbGxvd3MgY29udGludWUgcm9sbGJhY2sgZnJvbSBVUERBVEVfUk9MTEJBQ0tfRkFJTEVEJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrcyh7XG4gICAgJyonOiB7IHRlbXBsYXRlOiB7fSwgc3RhY2tTdGF0dXM6ICdVUERBVEVfUk9MTEJBQ0tfRkFJTEVEJyB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveW1lbnRzLnJvbGxiYWNrU3RhY2soe1xuICAgIHN0YWNrOiB0ZXN0U3RhY2soeyBzdGFja05hbWU6ICdib29wJyB9KSxcbiAgICB2YWxpZGF0ZUJvb3RzdHJhcFN0YWNrVmVyc2lvbjogZmFsc2UsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KG1vY2tDbG91ZEZvcm1hdGlvbkNsaWVudCkudG9IYXZlUmVjZWl2ZWRDb21tYW5kKENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kKTtcbn0pO1xuXG50ZXN0KCdyb2xsYmFjayBzdGFjayBmYWlscyBpbiBVUERBVEVfQ09NUExFVEUgc3RhdGUnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tzKHtcbiAgICAnKic6IHsgdGVtcGxhdGU6IHt9LCBzdGFja1N0YXR1czogJ1VQREFURV9DT01QTEVURScgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGRlcGxveW1lbnRzLnJvbGxiYWNrU3RhY2soe1xuICAgIHN0YWNrOiB0ZXN0U3RhY2soeyBzdGFja05hbWU6ICdib29wJyB9KSxcbiAgICB2YWxpZGF0ZUJvb3RzdHJhcFN0YWNrVmVyc2lvbjogZmFsc2UsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KHJlc3BvbnNlLm5vdEluUm9sbGJhY2thYmxlU3RhdGUpLnRvQmUodHJ1ZSk7XG59KTtcblxudGVzdCgnY29udGludWUgcm9sbGJhY2sgc3RhY2sgd2l0aCBmb3JjZSBpZ25vcmVzIGFueSBmYWlsZWQgcmVzb3VyY2VzJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBnaXZlblN0YWNrcyh7XG4gICAgJyonOiB7IHRlbXBsYXRlOiB7fSwgc3RhY2tTdGF0dXM6ICdVUERBVEVfUk9MTEJBQ0tfRkFJTEVEJyB9LFxuICB9KTtcbiAgbW9ja0Nsb3VkRm9ybWF0aW9uQ2xpZW50Lm9uKERlc2NyaWJlU3RhY2tFdmVudHNDb21tYW5kKS5yZXNvbHZlcyh7XG4gICAgU3RhY2tFdmVudHM6IFtcbiAgICAgIHtcbiAgICAgICAgRXZlbnRJZDogJ2FzZGYnLFxuICAgICAgICBTdGFja0lkOiAnc3RhY2svTXlTdGFjaycsXG4gICAgICAgIFN0YWNrTmFtZTogJ015U3RhY2snLFxuICAgICAgICBUaW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gICAgICAgIExvZ2ljYWxSZXNvdXJjZUlkOiAnWHl6JyxcbiAgICAgICAgUmVzb3VyY2VTdGF0dXM6ICdVUERBVEVfRkFJTEVEJyxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBhd2FpdCBkZXBsb3ltZW50cy5yb2xsYmFja1N0YWNrKHtcbiAgICBzdGFjazogdGVzdFN0YWNrKHsgc3RhY2tOYW1lOiAnYm9vcCcgfSksXG4gICAgdmFsaWRhdGVCb290c3RyYXBTdGFja1ZlcnNpb246IGZhbHNlLFxuICAgIGZvcmNlOiB0cnVlLFxuICB9KTtcblxuICAvLyBUSEVOXG4gIGV4cGVjdChtb2NrQ2xvdWRGb3JtYXRpb25DbGllbnQpLnRvSGF2ZVJlY2VpdmVkQ29tbWFuZFdpdGgoQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmQsIHtcbiAgICBSZXNvdXJjZXNUb1NraXA6IFsnWHl6J10sXG4gICAgU3RhY2tOYW1lOiAnYm9vcCcsXG4gICAgQ2xpZW50UmVxdWVzdFRva2VuOiBleHBlY3QuYW55dGhpbmcoKSxcbiAgfSk7XG59KTtcblxudGVzdCgncmVhZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3MoKSBzdWNjZXNzZnVsbHkgaWdub3JlcyBzdGFja3Mgd2l0aG91dCBtZXRhZGF0YScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgY29uc3Qgcm9vdFN1bW1hcnkgPSBzdGFja1N1bW1hcnlPZihcbiAgICAnV2l0aE1ldGFkYXRhJyxcbiAgICAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICdhcm46YXdzOmNsb3VkZm9ybWF0aW9uOmJlcm11ZGEtdHJpYW5nbGUtMTMzNzoxMjM0NTY3ODkwMTI6c3RhY2svb25lLXJlc291cmNlLXN0YWNrL2FiY2QnLFxuICApO1xuXG4gIHB1c2hTdGFja1Jlc291cmNlU3VtbWFyaWVzKCdNZXRhZGF0YVJvb3QnLCByb290U3VtbWFyeSk7XG4gIG1vY2tDbG91ZEZvcm1hdGlvbkNsaWVudC5vbihMaXN0U3RhY2tSZXNvdXJjZXNDb21tYW5kKS5yZXNvbHZlcyh7XG4gICAgU3RhY2tSZXNvdXJjZVN1bW1hcmllczogW3Jvb3RTdW1tYXJ5XSxcbiAgfSk7XG5cbiAgZ2l2ZW5TdGFja3Moe1xuICAgICdNZXRhZGF0YVJvb3QnOiB7XG4gICAgICB0ZW1wbGF0ZToge1xuICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICBXaXRoTWV0YWRhdGE6IHtcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgJyonOiB7XG4gICAgICB0ZW1wbGF0ZToge1xuICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICBTb21lUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFByb3BlcnR5OiAnb2xkLXZhbHVlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdFN0YWNrID0gdGVzdFN0YWNrKHtcbiAgICBzdGFja05hbWU6ICdNZXRhZGF0YVJvb3QnLFxuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgV2l0aG91dE1ldGFkYXRhOiB7XG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgIH0sXG4gICAgICAgIFdpdGhFbXB0eU1ldGFkYXRhOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgTWV0YWRhdGE6IHt9LFxuICAgICAgICB9LFxuICAgICAgICBXaXRoTWV0YWRhdGE6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCBkZXBsb3llZFRlbXBsYXRlID0gKGF3YWl0IGRlcGxveW1lbnRzLnJlYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKHJvb3RTdGFjaykpLmRlcGxveWVkUm9vdFRlbXBsYXRlO1xuICBjb25zdCBuZXN0ZWRTdGFja3MgPSAoYXdhaXQgZGVwbG95bWVudHMucmVhZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3Mocm9vdFN0YWNrKSkubmVzdGVkU3RhY2tzO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGRlcGxveWVkVGVtcGxhdGUpLnRvRXF1YWwoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgV2l0aE1ldGFkYXRhOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICB9LFxuICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICBleHBlY3Qocm9vdFN0YWNrLnRlbXBsYXRlKS50b0VxdWFsKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIFdpdGhvdXRNZXRhZGF0YToge1xuICAgICAgICAvLyBVbmNoYW5nZWRcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgV2l0aEVtcHR5TWV0YWRhdGE6IHtcbiAgICAgICAgLy8gVW5jaGFuZ2VkXG4gICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICB9LFxuICAgICAgICBNZXRhZGF0YToge30sXG4gICAgICB9LFxuICAgICAgV2l0aE1ldGFkYXRhOiB7XG4gICAgICAgIC8vIENoYW5nZWRcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgIH0sXG4gICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGV4cGVjdChuZXN0ZWRTdGFja3MpLnRvRXF1YWwoe1xuICAgIFdpdGhNZXRhZGF0YToge1xuICAgICAgZGVwbG95ZWRUZW1wbGF0ZToge1xuICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICBTb21lUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgUHJvcGVydHk6ICdvbGQtdmFsdWUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBnZW5lcmF0ZWRUZW1wbGF0ZToge1xuICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICBTb21lUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgUHJvcGVydHk6ICduZXctdmFsdWUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBwaHlzaWNhbE5hbWU6ICdvbmUtcmVzb3VyY2Utc3RhY2snLFxuICAgICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXM6IHt9LFxuICAgIH0sXG4gIH0pO1xufSk7XG5cbmRlc2NyaWJlKCdzdGFja0V4aXN0cycsICgpID0+IHtcbiAgdGVzdC5lYWNoKFtcbiAgICBbZmFsc2UsICdkZXBsb3k6aGVyZToxMjM0NTY3ODkwMTInXSxcbiAgICBbdHJ1ZSwgJ2xvb2t1cDpoZXJlOjEyMzQ1Njc4OTAxMiddLFxuICBdKSgndXNlcyBsb29rdXAgcm9sZSBpZiByZXF1ZXN0ZWQ6ICVwJywgYXN5bmMgKHRyeUxvb2t1cFJvbGUsIGV4cGVjdGVkUm9sZUFybikgPT4ge1xuICAgIGNvbnN0IG1vY2tGb3JFbnZpcm9ubWVudCA9IGplc3QuZm4oKS5tb2NrSW1wbGVtZW50YXRpb24oKCkgPT4geyByZXR1cm4geyBzZGs6IG5ldyBNb2NrU2RrKCkgfTsgfSk7XG4gICAgc2RrUHJvdmlkZXIuZm9yRW52aXJvbm1lbnQgPSBtb2NrRm9yRW52aXJvbm1lbnQ7XG4gICAgZ2l2ZW5TdGFja3Moe1xuICAgICAgJyonOiB7IHRlbXBsYXRlOiB7fSB9LFxuICAgIH0pO1xuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgZGVwbG95bWVudHMuc3RhY2tFeGlzdHMoe1xuICAgICAgc3RhY2s6IHRlc3RTdGFjayh7XG4gICAgICAgIHN0YWNrTmFtZTogJ2Jvb3AnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgYXNzdW1lUm9sZUFybjogJ2RlcGxveToke0FXUzo6UmVnaW9ufToke0FXUzo6QWNjb3VudElkfScsXG4gICAgICAgICAgbG9va3VwUm9sZToge1xuICAgICAgICAgICAgYXJuOiAnbG9va3VwOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9JyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgICB0cnlMb29rdXBSb2xlLFxuICAgIH0pO1xuXG4gICAgZXhwZWN0KHJlc3VsdCkudG9CZVRydXRoeSgpO1xuICAgIGV4cGVjdChtb2NrRm9yRW52aXJvbm1lbnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKGV4cGVjdC5hbnl0aGluZygpLCBleHBlY3QuYW55dGhpbmcoKSwgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgYXNzdW1lUm9sZUFybjogZXhwZWN0ZWRSb2xlQXJuLFxuICAgIH0pKTtcbiAgfSk7XG59KTtcblxuZnVuY3Rpb24gcHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoc3RhY2tOYW1lOiBzdHJpbmcsIC4uLml0ZW1zOiBTdGFja1Jlc291cmNlU3VtbWFyeVtdKSB7XG4gIGlmICghY3VycmVudENmblN0YWNrUmVzb3VyY2VzW3N0YWNrTmFtZV0pIHtcbiAgICBjdXJyZW50Q2ZuU3RhY2tSZXNvdXJjZXNbc3RhY2tOYW1lXSA9IFtdO1xuICB9XG5cbiAgY3VycmVudENmblN0YWNrUmVzb3VyY2VzW3N0YWNrTmFtZV0ucHVzaCguLi5pdGVtcyk7XG59XG5cbmZ1bmN0aW9uIHN0YWNrU3VtbWFyeU9mKGxvZ2ljYWxJZDogc3RyaW5nLCByZXNvdXJjZVR5cGU6IHN0cmluZywgcGh5c2ljYWxSZXNvdXJjZUlkOiBzdHJpbmcpOiBTdGFja1Jlc291cmNlU3VtbWFyeSB7XG4gIHJldHVybiB7XG4gICAgTG9naWNhbFJlc291cmNlSWQ6IGxvZ2ljYWxJZCxcbiAgICBQaHlzaWNhbFJlc291cmNlSWQ6IHBoeXNpY2FsUmVzb3VyY2VJZCxcbiAgICBSZXNvdXJjZVR5cGU6IHJlc291cmNlVHlwZSxcbiAgICBSZXNvdXJjZVN0YXR1czogU3RhY2tTdGF0dXMuQ1JFQVRFX0NPTVBMRVRFLFxuICAgIExhc3RVcGRhdGVkVGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICB9O1xufVxuXG5mdW5jdGlvbiBnaXZlblN0YWNrcyhzdGFja3M6IFJlY29yZDxzdHJpbmcsIHsgdGVtcGxhdGU6IGFueTsgc3RhY2tTdGF0dXM/OiBzdHJpbmcgfT4pIHtcbiAgamVzdC5zcHlPbihDbG91ZEZvcm1hdGlvblN0YWNrLCAnbG9va3VwJykubW9ja0ltcGxlbWVudGF0aW9uKGFzeW5jIChfLCBzdGFja05hbWUpID0+IHtcbiAgICBsZXQgc3RhY2sgPSBzdGFja3Nbc3RhY2tOYW1lXTtcbiAgICBpZiAoIXN0YWNrKSB7XG4gICAgICBzdGFjayA9IHN0YWNrc1snKiddO1xuICAgIH1cbiAgICBpZiAoc3RhY2spIHtcbiAgICAgIGNvbnN0IGNmblN0YWNrID0gbmV3IEZha2VDbG91ZGZvcm1hdGlvblN0YWNrKHtcbiAgICAgICAgc3RhY2tOYW1lLFxuICAgICAgICBzdGFja0lkOiBgc3RhY2svJHtzdGFja05hbWV9YCxcbiAgICAgICAgc3RhY2tTdGF0dXM6IHN0YWNrLnN0YWNrU3RhdHVzLFxuICAgICAgfSk7XG4gICAgICBjZm5TdGFjay5zZXRUZW1wbGF0ZShzdGFjay50ZW1wbGF0ZSk7XG4gICAgICByZXR1cm4gY2ZuU3RhY2s7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXcgRmFrZUNsb3VkZm9ybWF0aW9uU3RhY2soeyBzdGFja05hbWUgfSk7XG4gICAgfVxuICB9KTtcbn1cbiJdfQ==
1041
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xvdWRmb3JtYXRpb24tZGVwbG95bWVudHMudGVzdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsb3VkZm9ybWF0aW9uLWRlcGxveW1lbnRzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5Q0FBeUM7QUFDekMsMEVBV3dDO0FBQ3hDLG9EQUEwRDtBQUMxRCw4REFBaUc7QUFDakcsNEVBQXdFO0FBQ3hFLDREQUE4RDtBQUM5RCxnRUFBNEQ7QUFDNUQscUNBQXVDO0FBQ3ZDLGtEQVE2QjtBQUM3Qiw0RUFBdUU7QUFFdkUsSUFBSSxDQUFDLElBQUksQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0FBQ3ZELElBQUksQ0FBQyxJQUFJLENBQUMsK0NBQStDLENBQUMsQ0FBQztBQUUzRCxJQUFJLFdBQTRCLENBQUM7QUFDakMsSUFBSSxHQUFZLENBQUM7QUFDakIsSUFBSSxXQUF3QixDQUFDO0FBQzdCLElBQUkscUJBQWdDLENBQUM7QUFDckMsSUFBSSx3QkFBbUUsQ0FBQztBQUN4RSxVQUFVLENBQUMsR0FBRyxFQUFFO0lBQ2QsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO0lBQ3JCLFdBQVcsR0FBRyxJQUFJLDBCQUFlLEVBQUUsQ0FBQztJQUNwQyxHQUFHLEdBQUcsSUFBSSxrQkFBTyxFQUFFLENBQUM7SUFDcEIsV0FBVyxHQUFHLElBQUkseUJBQVcsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFL0Msd0JBQXdCLEdBQUcsRUFBRSxDQUFDO0lBQzlCLElBQUEsbUNBQXdCLEdBQUUsQ0FBQztJQUMzQiwwQkFBVyxDQUFDLE1BQU0sR0FBRyxxQkFBcUIsR0FBRyxJQUFJO1NBQzlDLEVBQUUsRUFBRTtTQUNKLGlCQUFpQixDQUFDLDBCQUFXLENBQUMsMEJBQTBCLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDO0lBQ25GLElBQUEsNkJBQWtCLEdBQUUsQ0FBQztBQUN2QixDQUFDLENBQUMsQ0FBQztBQUVILFNBQVMsa0NB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QVMsQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLEtBQUssR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdEIsQ0FBQztRQUNELElBQUksS0FBSyxFQUFFLENBQUM7WUFDVixNQUFNLFFBQVEsR0FBRyxJQUFJLG1EQUF1QixDQUFDO2dCQUMzQyxTQUFTO2dCQUNULE9BQU8sRUFBRSxTQUFTLFNBQVMsRUFBRTtnQkFDN0IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO2FBQy9CLENBQUMsQ0FBQztZQUNILFFBQVEsQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sUUFBUSxDQUFDO1FBQ2xCLENBQUM7YUFBTSxDQUFDO1lBQ04sT0FBTyxJQUFJLG1EQUF1QixDQUFDLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztRQUNwRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY3hhcGkgZnJvbSAnQGF3cy1jZGsvY3gtYXBpJztcbmltcG9ydCB7XG4gIENvbnRpbnVlVXBkYXRlUm9sbGJhY2tDb21tYW5kLFxuICBEZXNjcmliZVN0YWNrRXZlbnRzQ29tbWFuZCxcbiAgRGVzY3JpYmVTdGFja3NDb21tYW5kLFxuICBMaXN0U3RhY2tSZXNvdXJjZXNDb21tYW5kLFxuICBSb2xsYmFja1N0YWNrQ29tbWFuZCxcbiAgdHlwZSBTdGFja1Jlc291cmNlU3VtbWFyeSxcbiAgU3RhY2tTdGF0dXMsXG4gIERlc2NyaWJlQ2hhbmdlU2V0Q29tbWFuZCxcbiAgQ2hhbmdlU2V0U3RhdHVzLFxuICBDcmVhdGVDaGFuZ2VTZXRDb21tYW5kLFxufSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgR2V0UGFyYW1ldGVyQ29tbWFuZCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zc20nO1xuaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25TdGFjaywgY3JlYXRlQ2hhbmdlU2V0LCBEZXBsb3ltZW50cyB9IGZyb20gJy4uLy4uLy4uL2xpYi9hcGkvZGVwbG95bWVudHMnO1xuaW1wb3J0IHsgZGVwbG95U3RhY2sgfSBmcm9tICcuLi8uLi8uLi9saWIvYXBpL2RlcGxveW1lbnRzL2RlcGxveS1zdGFjayc7XG5pbXBvcnQgeyBIb3Rzd2FwTW9kZSB9IGZyb20gJy4uLy4uLy4uL2xpYi9hcGkvaG90c3dhcC9jb21tb24nO1xuaW1wb3J0IHsgVG9vbGtpdEluZm8gfSBmcm9tICcuLi8uLi8uLi9saWIvYXBpL3Rvb2xraXQtaW5mbyc7XG5pbXBvcnQgeyB0ZXN0U3RhY2sgfSBmcm9tICcuLi8uLi91dGlsJztcbmltcG9ydCB7XG4gIG1vY2tCb290c3RyYXBTdGFjayxcbiAgbW9ja0Nsb3VkRm9ybWF0aW9uQ2xpZW50LFxuICBNb2NrU2RrLFxuICBNb2NrU2RrUHJvdmlkZXIsXG4gIG1vY2tTU01DbGllbnQsXG4gIHJlc3RvcmVTZGtNb2Nrc1RvRGVmYXVsdCxcbiAgc2V0RGVmYXVsdFNUU01vY2tzLFxufSBmcm9tICcuLi8uLi91dGlsL21vY2stc2RrJztcbmltcG9ydCB7IEZha2VDbG91ZGZvcm1hdGlvblN0YWNrIH0gZnJvbSAnLi4vZmFrZS1jbG91ZGZvcm1hdGlvbi1zdGFjayc7XG5cbmplc3QubW9jaygnLi4vLi4vLi4vbGliL2FwaS9kZXBsb3ltZW50cy9kZXBsb3ktc3RhY2snKTtcbmplc3QubW9jaygnLi4vLi4vLi4vbGliL2FwaS9kZXBsb3ltZW50cy9hc3NldC1wdWJsaXNoaW5nJyk7XG5cbmxldCBzZGtQcm92aWRlcjogTW9ja1Nka1Byb3ZpZGVyO1xubGV0IHNkazogTW9ja1NkaztcbmxldCBkZXBsb3ltZW50czogRGVwbG95bWVudHM7XG5sZXQgbW9ja1Rvb2xraXRJbmZvTG9va3VwOiBqZXN0Lk1vY2s7XG5sZXQgY3VycmVudENmblN0YWNrUmVzb3VyY2VzOiB7IFtrZXk6IHN0cmluZ106IFN0YWNrUmVzb3VyY2VTdW1tYXJ5W10gfTtcbmJlZm9yZUVhY2goKCkgPT4ge1xuICBqZXN0LnJlc2V0QWxsTW9ja3MoKTtcbiAgc2RrUHJvdmlkZXIgPSBuZXcgTW9ja1Nka1Byb3ZpZGVyKCk7XG4gIHNkayA9IG5ldyBNb2NrU2RrKCk7XG4gIGRlcGxveW1lbnRzID0gbmV3IERlcGxveW1lbnRzKHsgc2RrUHJvdmlkZXIgfSk7XG5cbiAgY3VycmVudENmblN0YWNrUmVzb3VyY2VzID0ge307XG4gIHJlc3RvcmVTZGtNb2Nrc1RvRGVmYXVsdCgpO1xuICBUb29sa2l0SW5mby5sb29rdXAgPSBtb2NrVG9vbGtpdEluZm9Mb29rdXAgPSBqZXN0XG4gICAgLmZuKClcbiAgICAubW9ja1Jlc29sdmVkVmFsdWUoVG9vbGtpdEluZm8uYm9vdHN0cmFwU3RhY2tOb3RGb3VuZEluZm8oJ1Rlc3RCb290c3RyYXBTdGFjaycpKTtcbiAgc2V0RGVmYXVsdFNUU01vY2tzKCk7XG59KTtcblxuZnVuY3Rpb24gbW9ja1N1Y2Nlc3NmdWxCb290c3RyYXBTdGFja0xvb2t1cChwcm9wcz86IFJlY29yZDxzdHJpbmcsIGFueT4pIHtcbiAgY29uc3Qgb3V0cHV0cyA9IHtcbiAgICBCdWNrZXROYW1lOiAnQlVDS0VUX05BTUUnLFxuICAgIEJ1Y2tldERvbWFpbk5hbWU6ICdCVUNLRVRfRU5EUE9JTlQnLFxuICAgIEJvb3RzdHJhcFZlcnNpb246ICcxJyxcbiAgICAuLi5wcm9wcyxcbiAgfTtcblxuICBjb25zdCBmYWtlU3RhY2sgPSBtb2NrQm9vdHN0cmFwU3RhY2soe1xuICAgIE91dHB1dHM6IE9iamVjdC5lbnRyaWVzKG91dHB1dHMpLm1hcCgoW2ssIHZdKSA9PiAoe1xuICAgICAgT3V0cHV0S2V5OiBrLFxuICAgICAgT3V0cHV0VmFsdWU6IGAke3Z9YCxcbiAgICB9KSksXG4gIH0pO1xuXG4gIG1vY2tUb29sa2l0SW5mb0xvb2t1cC5tb2NrUmVzb2x2ZWRWYWx1ZShUb29sa2l0SW5mby5mcm9tU3RhY2soZmFrZVN0YWNrKSk7XG59XG5cbnRlc3QoJ3Bhc3NlcyB0aHJvdWdoIGhvdHN3YXA9dHJ1ZSB0byBkZXBsb3lTdGFjaygpJywgYXN5bmMgKCkgPT4ge1xuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveW1lbnRzLmRlcGxveVN0YWNrKHtcbiAgICBzdGFjazogdGVzdFN0YWNrKHtcbiAgICAgIHN0YWNrTmFtZTogJ2Jvb3AnLFxuICAgIH0pLFxuICAgIGhvdHN3YXA6IEhvdHN3YXBNb2RlLkZBTExfQkFDSyxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95U3RhY2spLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGhvdHN3YXA6IEhvdHN3YXBNb2RlLkZBTExfQkFDSyxcbiAgICB9KSxcbiAgKTtcbn0pO1xuXG50ZXN0KCdwbGFjZWhvbGRlcnMgYXJlIHN1YnN0aXR1dGVkIGluIENsb3VkRm9ybWF0aW9uIGV4ZWN1dGlvbiByb2xlJywgYXN5bmMgKCkgPT4ge1xuICBhd2FpdCBkZXBsb3ltZW50cy5kZXBsb3lTdGFjayh7XG4gICAgc3RhY2s6IHRlc3RTdGFjayh7XG4gICAgICBzdGFja05hbWU6ICdib29wJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgY2xvdWRGb3JtYXRpb25FeGVjdXRpb25Sb2xlQXJuOiAnYmxvb3A6JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH0nLFxuICAgICAgfSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgZXhwZWN0KGRlcGxveVN0YWNrKS50b0hhdmVCZWVuQ2FsbGVkV2l0aChcbiAgICBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICByb2xlQXJuOiAnYmxvb3A6aGVyZToxMjM0NTY3ODkwMTInLFxuICAgIH0pLFxuICApO1xufSk7XG5cbnRlc3QoJ3JvbGUgd2l0aCBwbGFjZWhvbGRlcnMgaXMgYXNzdW1lZCBpZiBhc3N1bWVyb2xlIGlzIGdpdmVuJywgYXN5bmMgKCkgPT4ge1xuICBjb25zdCBtb2NrRm9yRW52aXJvbm1lbnQgPSBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcbiAgICByZXR1cm4geyBzZGs6IG5ldyBNb2NrU2RrKCkgfTtcbiAgfSk7XG4gIHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50ID0gbW9ja0ZvckVudmlyb25tZW50O1xuXG4gIGF3YWl0IGRlcGxveW1lbnRzLmRlcGxveVN0YWNrKHtcbiAgICBzdGFjazogdGVzdFN0YWNrKHtcbiAgICAgIHN0YWNrTmFtZTogJ2Jvb3AnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBhc3N1bWVSb2xlQXJuOiAnYmxvb3A6JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH0nLFxuICAgICAgfSxcbiAgICB9KSxcbiAgfSk7XG5cbiAgZXhwZWN0KG1vY2tGb3JFbnZpcm9ubWVudCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoXG4gICAgZXhwZWN0LmFueXRoaW5nKCksXG4gICAgZXhwZWN0LmFueXRoaW5nKCksXG4gICAgZXhwZWN0Lm9iamVjdENvbnRhaW5pbmcoe1xuICAgICAgYXNzdW1lUm9sZUFybjogJ2Jsb29wOmhlcmU6MTIzNDU2Nzg5MDEyJyxcbiAgICB9KSxcbiAgKTtcbn0pO1xuXG50ZXN0KCdkZXBsb3ltZW50IGZhaWxzIGlmIGJvb3RzdHJhcCBzdGFjayBpcyBtaXNzaW5nJywgYXN5bmMgKCkgPT4ge1xuICBhd2FpdCBleHBlY3QoXG4gICAgZGVwbG95bWVudHMuZGVwbG95U3RhY2soe1xuICAgICAgc3RhY2s6IHRlc3RTdGFjayh7XG4gICAgICAgIHN0YWNrTmFtZTogJ2Jvb3AnLFxuICAgICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgYXNzdW1lUm9sZUFybjogJ2Jsb29wOiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9JyxcbiAgICAgICAgICByZXF1aXJlc0Jvb3RzdHJhcFN0YWNrVmVyc2lvbjogOTksXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9KSxcbiAgKS5yZWplY3RzLnRvVGhyb3coL3JlcXVpcmVzIGEgYm9vdHN0cmFwIHN0YWNrLyk7XG59KTtcblxudGVzdCgnZGVwbG95bWVudCBmYWlscyBpZiBib290c3RyYXAgc3RhY2sgaXMgdG9vIG9sZCcsIGFzeW5jICgpID0+IHtcbiAgbW9ja1N1Y2Nlc3NmdWxCb290c3RyYXBTdGFja0xvb2t1cCh7XG4gICAgQm9vdHN0cmFwVmVyc2lvbjogNSxcbiAgfSk7XG4gIHNldERlZmF1bHRTVFNNb2NrcygpO1xuXG4gIGF3YWl0IGV4cGVjdChcbiAgICBkZXBsb3ltZW50cy5kZXBsb3lTdGFjayh7XG4gICAgICBzdGFjazogdGVzdFN0YWNrKHtcbiAgICAgICAgc3RhY2tOYW1lOiAnYm9vcCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBhc3N1bWVSb2xlQXJuOiAnYmxvb3A6JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH0nLFxuICAgICAgICAgIHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uOiA5OSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH0pLFxuICApLnJlamVjdHMudG9UaHJvdygvcmVxdWlyZXMgYm9vdHN0cmFwIHN0YWNrIHZlcnNpb24gJzk5JywgZm91bmQgJzUnLyk7XG59KTtcblxudGVzdC5lYWNoKFtmYWxzZSwgdHJ1ZV0pKFxuICAnaWYgdG9vbGtpdCBzdGFjayBiZSBmb3VuZDogJXAgYnV0IFNTTSBwYXJhbWV0ZXIgbmFtZSBpcyBwcmVzZW50IGRlcGxveW1lbnQgc3VjY2VlZHMnLFxuICBhc3luYyAoY2FuTG9va3VwKSA9PiB7XG4gICAgaWYgKGNhbkxvb2t1cCkge1xuICAgICAgbW9ja1N1Y2Nlc3NmdWxCb290c3RyYXBTdGFja0xvb2t1cCh7XG4gICAgICAgIEJvb3RzdHJhcFZlcnNpb246IDIsXG4gICAgICB9KTtcbiAgICB9XG4gICAgc2V0RGVmYXVsdFNUU01vY2tzKCk7XG5cbiAgICBtb2NrU1NNQ2xpZW50Lm9uKEdldFBhcmFtZXRlckNvbW1hbmQpLnJlc29sdmVzKHtcbiAgICAgIFBhcmFtZXRlcjoge1xuICAgICAgICBWYWx1ZTogJzk5JyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBhd2FpdCBkZXBsb3ltZW50cy5kZXBsb3lTdGFjayh7XG4gICAgICBzdGFjazogdGVzdFN0YWNrKHtcbiAgICAgICAgc3RhY2tOYW1lOiAnYm9vcCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBhc3N1bWVSb2xlQXJuOiAnYmxvb3A6JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH0nLFxuICAgICAgICAgIHJlcXVpcmVzQm9vdHN0cmFwU3RhY2tWZXJzaW9uOiA5OSxcbiAgICAgICAgICBib290c3RyYXBTdGFja1ZlcnNpb25Tc21QYXJhbWV0ZXI6ICcvc29tZS9wYXJhbWV0ZXInLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBleHBlY3QobW9ja1NTTUNsaWVudCkudG9IYXZlUmVjZWl2ZWRDb21tYW5kV2l0aChHZXRQYXJhbWV0ZXJDb21tYW5kLCB7XG4gICAgICBOYW1lOiAnL3NvbWUvcGFyYW1ldGVyJyxcbiAgICB9KTtcbiAgfSxcbik7XG5cbnRlc3QoJ3JlYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKCkgY2FuIGhhbmRsZSBub24tUmVzb3VyY2VzIGluIHRoZSB0ZW1wbGF0ZScsIGFzeW5jICgpID0+IHtcbiAgY29uc3Qgc3RhY2tTdW1tYXJ5ID0gc3RhY2tTdW1tYXJ5T2YoXG4gICAgJ05lc3RlZFN0YWNrJyxcbiAgICAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICdhcm46YXdzOmNsb3VkZm9ybWF0aW9uOmJlcm11ZGEtdHJpYW5nbGUtMTMzNzoxMjM0NTY3ODkwMTI6c3RhY2svTmVzdGVkU3RhY2svYWJjZCcsXG4gICk7XG5cbiAgcHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoJ1BhcmVudE9mU3RhY2tXaXRoT3V0cHV0QW5kUGFyYW1ldGVyJywgc3RhY2tTdW1tYXJ5KTtcblxuICBtb2NrQ2xvdWRGb3JtYXRpb25DbGllbnQub24oTGlzdFN0YWNrUmVzb3VyY2VzQ29tbWFuZCkucmVzb2x2ZXNPbmNlKHtcbiAgICBTdGFja1Jlc291cmNlU3VtbWFyaWVzOiBbc3RhY2tTdW1tYXJ5XSxcbiAgfSk7XG4gIG1vY2tDbG91ZEZvcm1hdGlvbkNsaWVudC5vbihEZXNjcmliZVN0YWNrc0NvbW1hbmQpLnJlc29sdmVzT25jZSh7XG4gICAgU3RhY2tzOiBbXG4gICAgICB7XG4gICAgICAgIFN0YWNrTmFtZTogJ05lc3RlZFN0YWNrJyxcbiAgICAgICAgUm9vdElkOiAnU3RhY2tJZCcsXG4gICAgICAgIENyZWF0aW9uVGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgU3RhY2tTdGF0dXM6IFN0YWNrU3RhdHVzLkNSRUFURV9DT01QTEVURSxcbiAgICAgIH0sXG4gICAgXSxcbiAgfSk7XG5cbiAgY29uc3QgY2ZuU3RhY2sgPSBuZXcgRmFrZUNsb3VkZm9ybWF0aW9uU3RhY2soe1xuICAgIHN0YWNrTmFtZTogJ1BhcmVudE9mU3RhY2tXaXRoT3V0cHV0QW5kUGFyYW1ldGVyJyxcbiAgICBzdGFja0lkOiAnU3RhY2tJZCcsXG4gIH0pO1xuICBDbG91ZEZvcm1hdGlvblN0YWNrLmxvb2t1cCA9IGFzeW5jIChfLCBzdGFja05hbWU6IHN0cmluZykgPT4ge1xuICAgIHN3aXRjaCAoc3RhY2tOYW1lKSB7XG4gICAgICBjYXNlICdQYXJlbnRPZlN0YWNrV2l0aE91dHB1dEFuZFBhcmFtZXRlcic6XG4gICAgICAgIGNmblN0YWNrLnRlbXBsYXRlID0gYXN5bmMgKCkgPT4gKHtcbiAgICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtb3V0cHV0LW9uZS1wYXJhbS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnTmVzdGVkU3RhY2snOlxuICAgICAgICBjZm5TdGFjay50ZW1wbGF0ZSA9IGFzeW5jICgpID0+ICh7XG4gICAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgICBOZXN0ZWRSZXNvdXJjZToge1xuICAgICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgUHJvcGVydHk6ICdvbGQtdmFsdWUnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIE5lc3RlZFBhcmFtOiB7XG4gICAgICAgICAgICAgIFR5cGU6ICdTdHJpbmcnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIE91dHB1dHM6IHtcbiAgICAgICAgICAgIE5lc3RlZE91dHB1dDoge1xuICAgICAgICAgICAgICBWYWx1ZToge1xuICAgICAgICAgICAgICAgIFJlZjogJ05lc3RlZFJlc291cmNlJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSk7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ3Vua25vd24gc3RhY2sgbmFtZSAnICsgc3RhY2tOYW1lICsgJyBmb3VuZCcpO1xuICAgIH1cblxuICAgIHJldHVybiBjZm5TdGFjaztcbiAgfTtcblxuICBjb25zdCByb290U3RhY2sgPSB0ZXN0U3RhY2soe1xuICAgIHN0YWNrTmFtZTogJ1BhcmVudE9mU3RhY2tXaXRoT3V0cHV0QW5kUGFyYW1ldGVyJyxcbiAgICB0ZW1wbGF0ZToge1xuICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtb3V0cHV0LW9uZS1wYXJhbS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgLy8gV0hFTlxuICBjb25zdCByb290VGVtcGxhdGUgPSBhd2FpdCBkZXBsb3ltZW50cy5yZWFkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyhyb290U3RhY2spO1xuICBjb25zdCBkZXBsb3llZFRlbXBsYXRlID0gcm9vdFRlbXBsYXRlLmRlcGxveWVkUm9vdFRlbXBsYXRlO1xuICBjb25zdCBuZXN0ZWRTdGFja3MgPSByb290VGVtcGxhdGUubmVzdGVkU3RhY2tzO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KGRlcGxveWVkVGVtcGxhdGUpLnRvRXF1YWwoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgTmVzdGVkU3RhY2s6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgIH0sXG4gICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1vdXRwdXQtb25lLXBhcmFtLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgZXhwZWN0KHJvb3RTdGFjay50ZW1wbGF0ZSkudG9FcXVhbCh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBOZXN0ZWRTdGFjazoge1xuICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgfSxcbiAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLW91dHB1dC1vbmUtcGFyYW0tc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICBleHBlY3QobmVzdGVkU3RhY2tzKS50b0VxdWFsKHtcbiAgICBOZXN0ZWRTdGFjazoge1xuICAgICAgZGVwbG95ZWRUZW1wbGF0ZToge1xuICAgICAgICBPdXRwdXRzOiB7XG4gICAgICAgICAgTmVzdGVkT3V0cHV0OiB7XG4gICAgICAgICAgICBWYWx1ZToge1xuICAgICAgICAgICAgICBSZWY6ICdOZXN0ZWRSZXNvdXJjZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBOZXN0ZWRQYXJhbToge1xuICAgICAgICAgICAgVHlwZTogJ1N0cmluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgTmVzdGVkUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgUHJvcGVydHk6ICdvbGQtdmFsdWUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBnZW5lcmF0ZWRUZW1wbGF0ZToge1xuICAgICAgICBPdXRwdXRzOiB7XG4gICAgICAgICAgTmVzdGVkT3V0cHV0OiB7XG4gICAgICAgICAgICBWYWx1ZToge1xuICAgICAgICAgICAgICBSZWY6ICdOZXN0ZWRSZXNvdXJjZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIFBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBOZXN0ZWRQYXJhbToge1xuICAgICAgICAgICAgVHlwZTogJ051bWJlcicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgTmVzdGVkUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgUHJvcGVydHk6ICduZXctdmFsdWUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBuZXN0ZWRTdGFja1RlbXBsYXRlczoge30sXG4gICAgICBwaHlzaWNhbE5hbWU6ICdOZXN0ZWRTdGFjaycsXG4gICAgfSxcbiAgfSk7XG59KTtcblxudGVzdCgncmVhZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3MoKSB3aXRoIGEgMy1sZXZlbCBuZXN0ZWQgKyBzaWJsaW5nIHN0cnVjdHVyZSB3b3JrcycsIGFzeW5jICgpID0+IHtcbiAgY29uc3Qgcm9vdFN1bW1hcnkgPSBzdGFja1N1bW1hcnlPZihcbiAgICAnTmVzdGVkU3RhY2snLFxuICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgJ2Fybjphd3M6Y2xvdWRmb3JtYXRpb246YmVybXVkYS10cmlhbmdsZS0xMzM3OjEyMzQ1Njc4OTAxMjpzdGFjay9OZXN0ZWRTdGFjay9hYmNkJyxcbiAgKTtcblxuICBjb25zdCBuZXN0ZWRTdGFja1N1bW1hcnkgPSBbXG4gICAgc3RhY2tTdW1tYXJ5T2YoXG4gICAgICAnR3JhbmRDaGlsZFN0YWNrQScsXG4gICAgICAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgJ2Fybjphd3M6Y2xvdWRmb3JtYXRpb246YmVybXVkYS10cmlhbmdsZS0xMzM3OjEyMzQ1Njc4OTAxMjpzdGFjay9HcmFuZENoaWxkU3RhY2tBL2FiY2QnLFxuICAgICksXG4gICAgc3RhY2tTdW1tYXJ5T2YoXG4gICAgICAnR3JhbmRDaGlsZFN0YWNrQicsXG4gICAgICAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgJ2Fybjphd3M6Y2xvdWRmb3JtYXRpb246YmVybXVkYS10cmlhbmdsZS0xMzM3OjEyMzQ1Njc4OTAxMjpzdGFjay9HcmFuZENoaWxkU3RhY2tCL2FiY2QnLFxuICAgICksXG4gIF07XG5cbiAgY29uc3QgZ3JhbmRDaGlsZEFTdGFja1N1bW1hcnkgPSBzdGFja1N1bW1hcnlPZihcbiAgICAnR3JhbmRDaGlsZEEnLFxuICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgJ2Fybjphd3M6Y2xvdWRmb3JtYXRpb246YmVybXVkYS10cmlhbmdsZS0xMzM3OjEyMzQ1Njc4OTAxMjpzdGFjay9HcmFuZENoaWxkQS9hYmNkJyxcbiAgKTtcblxuICBjb25zdCBncmFuZGNoaWxkQlN0YWNrU3VtbWFyeSA9IHN0YWNrU3VtbWFyeU9mKFxuICAgICdHcmFuZENoaWxkQicsXG4gICAgJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAnYXJuOmF3czpjbG91ZGZvcm1hdGlvbjpiZXJtdWRhLXRyaWFuZ2xlLTEzMzc6MTIzNDU2Nzg5MDEyOnN0YWNrL0dyYW5kQ2hpbGRCL2FiY2QnLFxuICApO1xuXG4gIHB1c2hTdGFja1Jlc291cmNlU3VtbWFyaWVzKCdNdWx0aUxldmVsUm9vdCcsIHJvb3RTdW1tYXJ5KTtcbiAgcHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoJ05lc3RlZFN0YWNrJywgLi4ubmVzdGVkU3RhY2tTdW1tYXJ5KTtcbiAgcHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoJ0dyYW5kQ2hpbGRTdGFja0EnLCBncmFuZENoaWxkQVN0YWNrU3VtbWFyeSk7XG4gIHB1c2hTdGFja1Jlc291cmNlU3VtbWFyaWVzKCdHcmFuZENoaWxkU3RhY2tCJywgZ3JhbmRjaGlsZEJTdGFja1N1bW1hcnkpO1xuXG4gIG1vY2tDbG91ZEZvcm1hdGlvbkNsaWVudFxuICAgIC5vbihMaXN0U3RhY2tSZXNvdXJjZXNDb21tYW5kKVxuICAgIC5yZXNvbHZlc09uY2Uoe1xuICAgICAgU3RhY2tSZXNvdXJjZVN1bW1hcmllczogW3Jvb3RTdW1tYXJ5XSxcbiAgICB9KVxuICAgIC5yZXNvbHZlc09uY2Uoe1xuICAgICAgU3RhY2tSZXNvdXJjZVN1bW1hcmllczogbmVzdGVkU3RhY2tTdW1tYXJ5LFxuICAgIH0pXG4gICAgLnJlc29sdmVzT25jZSh7XG4gICAgICBTdGFja1Jlc291cmNlU3VtbWFyaWVzOiBbZ3JhbmRDaGlsZEFTdGFja1N1bW1hcnldLFxuICAgIH0pXG4gICAgLnJlc29sdmVzT25jZSh7XG4gICAgICBTdGFja1Jlc291cmNlU3VtbWFyaWVzOiBbZ3JhbmRjaGlsZEJTdGFja1N1bW1hcnldLFxuICAgIH0pO1xuXG4gIG1vY2tDbG91ZEZvcm1hdGlvbkNsaWVudFxuICAgIC5vbihEZXNjcmliZVN0YWNrc0NvbW1hbmQpXG4gICAgLnJlc29sdmVzT25jZSh7XG4gICAgICBTdGFja3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIFN0YWNrTmFtZTogJ05lc3RlZFN0YWNrJyxcbiAgICAgICAgICBSb290SWQ6ICdTdGFja0lkJyxcbiAgICAgICAgICBDcmVhdGlvblRpbWU6IG5ldyBEYXRlKCksXG4gICAgICAgICAgU3RhY2tTdGF0dXM6IFN0YWNrU3RhdHVzLkNSRUFURV9DT01QTEVURSxcbiAgICAgICAgfSxcbiAgICAgIF0sXG4gICAgfSlcbiAgICAucmVzb2x2ZXNPbmNlKHtcbiAgICAgIFN0YWNrczogW1xuICAgICAgICB7XG4gICAgICAgICAgU3RhY2tOYW1lOiAnR3JhbmRDaGlsZFN0YWNrQScsXG4gICAgICAgICAgUm9vdElkOiAnU3RhY2tJZCcsXG4gICAgICAgICAgUGFyZW50SWQ6ICdOZXN0ZWRTdGFjaycsXG4gICAgICAgICAgQ3JlYXRpb25UaW1lOiBuZXcgRGF0ZSgpLFxuICAgICAgICAgIFN0YWNrU3RhdHVzOiBTdGFja1N0YXR1cy5DUkVBVEVfQ09NUExFVEUsXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH0pXG4gICAgLnJlc29sdmVzT25jZSh7XG4gICAgICBTdGFja3M6IFtcbiAgICAgICAge1xuICAgICAgICAgIFN0YWNrTmFtZTogJ0dyYW5kQ2hpbGRTdGFja0InLFxuICAgICAgICAgIFJvb3RJZDogJ1N0YWNrSWQnLFxuICAgICAgICAgIFBhcmVudElkOiAnTmVzdGVkU3RhY2snLFxuICAgICAgICAgIENyZWF0aW9uVGltZTogbmV3IERhdGUoKSxcbiAgICAgICAgICBTdGFja1N0YXR1czogU3RhY2tTdGF0dXMuQ1JFQVRFX0NPTVBMRVRFLFxuICAgICAgICB9LFxuICAgICAgXSxcbiAgICB9KTtcbiAgZ2l2ZW5TdGFja3Moe1xuICAgIE11bHRpTGV2ZWxSb290OiB7XG4gICAgICB0ZW1wbGF0ZToge1xuICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICBOZXN0ZWRTdGFjazoge1xuICAgICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXR3by1zdGFja3Mtc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICB0ZW1wbGF0ZToge1xuICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICBTb21lUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFByb3BlcnR5OiAnb2xkLXZhbHVlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBHcmFuZENoaWxkU3RhY2tBOiB7XG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEdyYW5kQ2hpbGRTdGFja0I6IHtcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgR3JhbmRDaGlsZFN0YWNrQToge1xuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgU29tZVJlc291cmNlOiB7XG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBQcm9wZXJ0eTogJ29sZC12YWx1ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gICAgR3JhbmRDaGlsZFN0YWNrQjoge1xuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgU29tZVJlc291cmNlOiB7XG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBQcm9wZXJ0eTogJ29sZC12YWx1ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHJvb3RTdGFjayA9IHRlc3RTdGFjayh7XG4gICAgc3RhY2tOYW1lOiAnTXVsdGlMZXZlbFJvb3QnLFxuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgTmVzdGVkU3RhY2s6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS10d28tc3RhY2tzLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IHJvb3RUZW1wbGF0ZSA9IGF3YWl0IGRlcGxveW1lbnRzLnJlYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKHJvb3RTdGFjayk7XG4gIGNvbnN0IGRlcGxveWVkVGVtcGxhdGUgPSByb290VGVtcGxhdGUuZGVwbG95ZWRSb290VGVtcGxhdGU7XG4gIGNvbnN0IG5lc3RlZFN0YWNrcyA9IHJvb3RUZW1wbGF0ZS5uZXN0ZWRTdGFja3M7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95ZWRUZW1wbGF0ZSkudG9FcXVhbCh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBOZXN0ZWRTdGFjazoge1xuICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgfSxcbiAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXR3by1zdGFja3Mtc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICBleHBlY3Qocm9vdFN0YWNrLnRlbXBsYXRlKS50b0VxdWFsKHtcbiAgICBSZXNvdXJjZXM6IHtcbiAgICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICB9LFxuICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2UtdHdvLXN0YWNrcy1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGV4cGVjdChuZXN0ZWRTdGFja3MpLnRvRXF1YWwoe1xuICAgIE5lc3RlZFN0YWNrOiB7XG4gICAgICBkZXBsb3llZFRlbXBsYXRlOiB7XG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIEdyYW5kQ2hpbGRTdGFja0E6IHtcbiAgICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgR3JhbmRDaGlsZFN0YWNrQjoge1xuICAgICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBTb21lUmVzb3VyY2U6IHtcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgUHJvcGVydHk6ICdvbGQtdmFsdWUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBnZW5lcmF0ZWRUZW1wbGF0ZToge1xuICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICBHcmFuZENoaWxkU3RhY2tBOiB7XG4gICAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEdyYW5kQ2hpbGRTdGFja0I6IHtcbiAgICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgU29tZVJlc291cmNlOiB7XG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFByb3BlcnR5OiAnbmV3LXZhbHVlJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXM6IHtcbiAgICAgICAgR3JhbmRDaGlsZFN0YWNrQToge1xuICAgICAgICAgIGRlcGxveWVkVGVtcGxhdGU6IHtcbiAgICAgICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgICAgICBTb21lUmVzb3VyY2U6IHtcbiAgICAgICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgICAgICBQcm9wZXJ0eTogJ29sZC12YWx1ZScsXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIGdlbmVyYXRlZFRlbXBsYXRlOiB7XG4gICAgICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICAgICAgU29tZVJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgUHJvcGVydHk6ICduZXctdmFsdWUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBuZXN0ZWRTdGFja1RlbXBsYXRlczoge30sXG4gICAgICAgICAgcGh5c2ljYWxOYW1lOiAnR3JhbmRDaGlsZFN0YWNrQScsXG4gICAgICAgIH0sXG4gICAgICAgIEdyYW5kQ2hpbGRTdGFja0I6IHtcbiAgICAgICAgICBkZXBsb3llZFRlbXBsYXRlOiB7XG4gICAgICAgICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgICAgICAgU29tZVJlc291cmNlOiB7XG4gICAgICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgUHJvcGVydHk6ICdvbGQtdmFsdWUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBnZW5lcmF0ZWRUZW1wbGF0ZToge1xuICAgICAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgICAgIFByb3BlcnR5OiAnbmV3LXZhbHVlJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXM6IHt9LFxuICAgICAgICAgIHBoeXNpY2FsTmFtZTogJ0dyYW5kQ2hpbGRTdGFja0InLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHBoeXNpY2FsTmFtZTogJ05lc3RlZFN0YWNrJyxcbiAgICB9LFxuICB9KTtcbn0pO1xuXG50ZXN0KCdyZWFkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcygpIG9uIGFuIHVuZGVwbG95ZWQgcGFyZW50IHN0YWNrIHdpdGggYW4gKGFsc28gdW5kZXBsb3llZCkgbmVzdGVkIHN0YWNrIHdvcmtzJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCBjZm5TdGFjayA9IG5ldyBGYWtlQ2xvdWRmb3JtYXRpb25TdGFjayh7XG4gICAgc3RhY2tOYW1lOiAnVW5kZXBsb3llZFBhcmVudCcsXG4gICAgc3RhY2tJZDogJ1N0YWNrSWQnLFxuICB9KTtcbiAgQ2xvdWRGb3JtYXRpb25TdGFjay5sb29rdXAgPSBhc3luYyAoX2NmbiwgX3N0YWNrTmFtZTogc3RyaW5nKSA9PiB7XG4gICAgY2ZuU3RhY2sudGVtcGxhdGUgPSBhc3luYyAoKSA9PiAoe30pO1xuXG4gICAgcmV0dXJuIGNmblN0YWNrO1xuICB9O1xuICBjb25zdCByb290U3RhY2sgPSB0ZXN0U3RhY2soe1xuICAgIHN0YWNrTmFtZTogJ1VuZGVwbG95ZWRQYXJlbnQnLFxuICAgIHRlbXBsYXRlOiB7XG4gICAgICBSZXNvdXJjZXM6IHtcbiAgICAgICAgTmVzdGVkU3RhY2s6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1vbmUtc3RhY2stc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgY29uc3QgZGVwbG95ZWRUZW1wbGF0ZSA9IChhd2FpdCBkZXBsb3ltZW50cy5yZWFkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyhyb290U3RhY2spKS5kZXBsb3llZFJvb3RUZW1wbGF0ZTtcbiAgY29uc3QgbmVzdGVkU3RhY2tzID0gKGF3YWl0IGRlcGxveW1lbnRzLnJlYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKHJvb3RTdGFjaykpLm5lc3RlZFN0YWNrcztcblxuICAvLyBUSEVOXG4gIGV4cGVjdChkZXBsb3llZFRlbXBsYXRlKS50b0VxdWFsKHt9KTtcbiAgZXhwZWN0KG5lc3RlZFN0YWNrcykudG9FcXVhbCh7XG4gICAgTmVzdGVkU3RhY2s6IHtcbiAgICAgIGRlcGxveWVkVGVtcGxhdGU6IHt9LFxuICAgICAgZ2VuZXJhdGVkVGVtcGxhdGU6IHtcbiAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgU29tZVJlc291cmNlOiB7XG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpTb21ldGhpbmcnLFxuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBQcm9wZXJ0eTogJ25ldy12YWx1ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgTmVzdGVkU3RhY2s6IHtcbiAgICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXM6IHtcbiAgICAgICAgTmVzdGVkU3RhY2s6IHtcbiAgICAgICAgICBkZXBsb3llZFRlbXBsYXRlOiB7fSxcbiAgICAgICAgICBnZW5lcmF0ZWRUZW1wbGF0ZToge1xuICAgICAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgICAgIFR5cGU6ICdBV1M6OlNvbWV0aGluZycsXG4gICAgICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICAgICAgUHJvcGVydHk6ICduZXctdmFsdWUnLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgICAgbmVzdGVkU3RhY2tUZW1wbGF0ZXM6IHt9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcbn0pO1xuXG50ZXN0KCdyZWFkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcygpIGNhY2hlcyBjYWxscyB0byBsaXN0U3RhY2tSZXNvdXJjZXMoKScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja3Moe1xuICAgICcqJzoge1xuICAgICAgdGVtcGxhdGU6IHtcbiAgICAgICAgUmVzb3VyY2VzOiB7XG4gICAgICAgICAgTmVzdGVkU3RhY2tBOiB7XG4gICAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIE5lc3RlZFN0YWNrQjoge1xuICAgICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgY29uc3Qgcm9vdFN0YWNrID0gdGVzdFN0YWNrKHtcbiAgICBzdGFja05hbWU6ICdDYWNoaW5nUm9vdCcsXG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBOZXN0ZWRTdGFja0E6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgTmVzdGVkU3RhY2tCOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAgICdhd3M6YXNzZXQ6cGF0aCc6ICdvbmUtcmVzb3VyY2Utc3RhY2submVzdGVkLnRlbXBsYXRlLmpzb24nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIHB1c2hTdGFja1Jlc291cmNlU3VtbWFyaWVzKFxuICAgICdDYWNoaW5nUm9vdCcsXG4gICAgc3RhY2tTdW1tYXJ5T2YoXG4gICAgICAnTmVzdGVkU3RhY2tBJyxcbiAgICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAnYXJuOmF3czpjbG91ZGZvcm1hdGlvbjpiZXJtdWRhLXRyaWFuZ2xlLTEzMzc6MTIzNDU2Nzg5MDEyOnN0YWNrL29uZS1yZXNvdXJjZS1zdGFjay9hYmNkJyxcbiAgICApLFxuICAgIHN0YWNrU3VtbWFyeU9mKFxuICAgICAgJ05lc3RlZFN0YWNrQicsXG4gICAgICAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgJ2Fybjphd3M6Y2xvdWRmb3JtYXRpb246YmVybXVkYS10cmlhbmdsZS0xMzM3OjEyMzQ1Njc4OTAxMjpzdGFjay9vbmUtcmVzb3VyY2Utc3RhY2svYWJjZCcsXG4gICAgKSxcbiAgKTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveW1lbnRzLnJlYWRDdXJyZW50VGVtcGxhdGVXaXRoTmVzdGVkU3RhY2tzKHJvb3RTdGFjayk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QobW9ja0Nsb3VkRm9ybWF0aW9uQ2xpZW50KS50b0hhdmVSZWNlaXZlZENvbW1hbmRUaW1lcyhMaXN0U3RhY2tSZXNvdXJjZXNDb21tYW5kLCAxKTtcbn0pO1xuXG50ZXN0KCdyb2xsYmFjayBzdGFjayBhc3N1bWVzIHJvbGUgaWYgbmVjZXNzYXJ5JywgYXN5bmMgKCkgPT4ge1xuICBjb25zdCBtb2NrRm9yRW52aXJvbm1lbnQgPSBqZXN0LmZuKCkubW9ja0ltcGxlbWVudGF0aW9uKCgpID0+IHtcbiAgICByZXR1cm4geyBzZGsgfTtcbiAgfSk7XG4gIHNka1Byb3ZpZGVyLmZvckVudmlyb25tZW50ID0gbW9ja0ZvckVudmlyb25tZW50O1xuICBnaXZlblN0YWNrcyh7XG4gICAgJyonOiB7IHRlbXBsYXRlOiB7fSB9LFxuICB9KTtcblxuICBhd2FpdCBkZXBsb3ltZW50cy5yb2xsYmFja1N0YWNrKHtcbiAgICBzdGFjazogdGVzdFN0YWNrKHtcbiAgICAgIHN0YWNrTmFtZTogJ2Jvb3AnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBhc3N1bWVSb2xlQXJuOiAnYmxvb3A6JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH0nLFxuICAgICAgfSxcbiAgICB9KSxcbiAgICB2YWxpZGF0ZUJvb3RzdHJhcFN0YWNrVmVyc2lvbjogZmFsc2UsXG4gIH0pO1xuXG4gIGV4cGVjdChtb2NrRm9yRW52aXJvbm1lbnQpLnRvSGF2ZUJlZW5DYWxsZWRXaXRoKFxuICAgIGV4cGVjdC5hbnl0aGluZygpLFxuICAgIGV4cGVjdC5hbnl0aGluZygpLFxuICAgIGV4cGVjdC5vYmplY3RDb250YWluaW5nKHtcbiAgICAgIGFzc3VtZVJvbGVBcm46ICdibG9vcDpoZXJlOjEyMzQ1Njc4OTAxMicsXG4gICAgfSksXG4gICk7XG59KTtcblxudGVzdCgncm9sbGJhY2sgc3RhY2sgYWxsb3dzIHJvbGxpbmcgYmFjayBmcm9tIFVQREFURV9GQUlMRUQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tzKHtcbiAgICAnKic6IHsgdGVtcGxhdGU6IHt9LCBzdGFja1N0YXR1czogJ1VQREFURV9GQUlMRUQnIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95bWVudHMucm9sbGJhY2tTdGFjayh7XG4gICAgc3RhY2s6IHRlc3RTdGFjayh7IHN0YWNrTmFtZTogJ2Jvb3AnIH0pLFxuICAgIHZhbGlkYXRlQm9vdHN0cmFwU3RhY2tWZXJzaW9uOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QobW9ja0Nsb3VkRm9ybWF0aW9uQ2xpZW50KS50b0hhdmVSZWNlaXZlZENvbW1hbmQoUm9sbGJhY2tTdGFja0NvbW1hbmQpO1xufSk7XG5cbnRlc3QoJ3JvbGxiYWNrIHN0YWNrIGFsbG93cyBjb250aW51ZSByb2xsYmFjayBmcm9tIFVQREFURV9ST0xMQkFDS19GQUlMRUQnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tzKHtcbiAgICAnKic6IHsgdGVtcGxhdGU6IHt9LCBzdGFja1N0YXR1czogJ1VQREFURV9ST0xMQkFDS19GQUlMRUQnIH0sXG4gIH0pO1xuXG4gIC8vIFdIRU5cbiAgYXdhaXQgZGVwbG95bWVudHMucm9sbGJhY2tTdGFjayh7XG4gICAgc3RhY2s6IHRlc3RTdGFjayh7IHN0YWNrTmFtZTogJ2Jvb3AnIH0pLFxuICAgIHZhbGlkYXRlQm9vdHN0cmFwU3RhY2tWZXJzaW9uOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QobW9ja0Nsb3VkRm9ybWF0aW9uQ2xpZW50KS50b0hhdmVSZWNlaXZlZENvbW1hbmQoQ29udGludWVVcGRhdGVSb2xsYmFja0NvbW1hbmQpO1xufSk7XG5cbnRlc3QoJ3JvbGxiYWNrIHN0YWNrIGZhaWxzIGluIFVQREFURV9DT01QTEVURSBzdGF0ZScsIGFzeW5jICgpID0+IHtcbiAgLy8gR0lWRU5cbiAgZ2l2ZW5TdGFja3Moe1xuICAgICcqJzogeyB0ZW1wbGF0ZToge30sIHN0YWNrU3RhdHVzOiAnVVBEQVRFX0NPTVBMRVRFJyB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZGVwbG95bWVudHMucm9sbGJhY2tTdGFjayh7XG4gICAgc3RhY2s6IHRlc3RTdGFjayh7IHN0YWNrTmFtZTogJ2Jvb3AnIH0pLFxuICAgIHZhbGlkYXRlQm9vdHN0cmFwU3RhY2tWZXJzaW9uOiBmYWxzZSxcbiAgfSk7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QocmVzcG9uc2Uubm90SW5Sb2xsYmFja2FibGVTdGF0ZSkudG9CZSh0cnVlKTtcbn0pO1xuXG50ZXN0KCdjb250aW51ZSByb2xsYmFjayBzdGFjayB3aXRoIGZvcmNlIGlnbm9yZXMgYW55IGZhaWxlZCByZXNvdXJjZXMnLCBhc3luYyAoKSA9PiB7XG4gIC8vIEdJVkVOXG4gIGdpdmVuU3RhY2tzKHtcbiAgICAnKic6IHsgdGVtcGxhdGU6IHt9LCBzdGFja1N0YXR1czogJ1VQREFURV9ST0xMQkFDS19GQUlMRUQnIH0sXG4gIH0pO1xuICBtb2NrQ2xvdWRGb3JtYXRpb25DbGllbnQub24oRGVzY3JpYmVTdGFja0V2ZW50c0NvbW1hbmQpLnJlc29sdmVzKHtcbiAgICBTdGFja0V2ZW50czogW1xuICAgICAge1xuICAgICAgICBFdmVudElkOiAnYXNkZicsXG4gICAgICAgIFN0YWNrSWQ6ICdzdGFjay9NeVN0YWNrJyxcbiAgICAgICAgU3RhY2tOYW1lOiAnTXlTdGFjaycsXG4gICAgICAgIFRpbWVzdGFtcDogbmV3IERhdGUoKSxcbiAgICAgICAgTG9naWNhbFJlc291cmNlSWQ6ICdYeXonLFxuICAgICAgICBSZXNvdXJjZVN0YXR1czogJ1VQREFURV9GQUlMRUQnLFxuICAgICAgfSxcbiAgICBdLFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGF3YWl0IGRlcGxveW1lbnRzLnJvbGxiYWNrU3RhY2soe1xuICAgIHN0YWNrOiB0ZXN0U3RhY2soeyBzdGFja05hbWU6ICdib29wJyB9KSxcbiAgICB2YWxpZGF0ZUJvb3RzdHJhcFN0YWNrVmVyc2lvbjogZmFsc2UsXG4gICAgZm9yY2U6IHRydWUsXG4gIH0pO1xuXG4gIC8vIFRIRU5cbiAgZXhwZWN0KG1vY2tDbG91ZEZvcm1hdGlvbkNsaWVudCkudG9IYXZlUmVjZWl2ZWRDb21tYW5kV2l0aChDb250aW51ZVVwZGF0ZVJvbGxiYWNrQ29tbWFuZCwge1xuICAgIFJlc291cmNlc1RvU2tpcDogWydYeXonXSxcbiAgICBTdGFja05hbWU6ICdib29wJyxcbiAgICBDbGllbnRSZXF1ZXN0VG9rZW46IGV4cGVjdC5hbnl0aGluZygpLFxuICB9KTtcbn0pO1xuXG50ZXN0KCdyZWFkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcygpIHN1Y2Nlc3NmdWxseSBpZ25vcmVzIHN0YWNrcyB3aXRob3V0IG1ldGFkYXRhJywgYXN5bmMgKCkgPT4ge1xuICAvLyBHSVZFTlxuICBjb25zdCByb290U3VtbWFyeSA9IHN0YWNrU3VtbWFyeU9mKFxuICAgICdXaXRoTWV0YWRhdGEnLFxuICAgICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgJ2Fybjphd3M6Y2xvdWRmb3JtYXRpb246YmVybXVkYS10cmlhbmdsZS0xMzM3OjEyMzQ1Njc4OTAxMjpzdGFjay9vbmUtcmVzb3VyY2Utc3RhY2svYWJjZCcsXG4gICk7XG5cbiAgcHVzaFN0YWNrUmVzb3VyY2VTdW1tYXJpZXMoJ01ldGFkYXRhUm9vdCcsIHJvb3RTdW1tYXJ5KTtcbiAgbW9ja0Nsb3VkRm9ybWF0aW9uQ2xpZW50Lm9uKExpc3RTdGFja1Jlc291cmNlc0NvbW1hbmQpLnJlc29sdmVzKHtcbiAgICBTdGFja1Jlc291cmNlU3VtbWFyaWVzOiBbcm9vdFN1bW1hcnldLFxuICB9KTtcblxuICBnaXZlblN0YWNrcyh7XG4gICAgJ01ldGFkYXRhUm9vdCc6IHtcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIFdpdGhNZXRhZGF0YToge1xuICAgICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBNZXRhZGF0YToge1xuICAgICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgICAnKic6IHtcbiAgICAgIHRlbXBsYXRlOiB7XG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgICAgUHJvcGVydHk6ICdvbGQtdmFsdWUnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICBjb25zdCByb290U3RhY2sgPSB0ZXN0U3RhY2soe1xuICAgIHN0YWNrTmFtZTogJ01ldGFkYXRhUm9vdCcsXG4gICAgdGVtcGxhdGU6IHtcbiAgICAgIFJlc291cmNlczoge1xuICAgICAgICBXaXRob3V0TWV0YWRhdGE6IHtcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBUZW1wbGF0ZVVSTDogJ2h0dHBzOi8vd3d3Lm1hZ2ljLXVybC5jb20nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgfSxcbiAgICAgICAgV2l0aEVtcHR5TWV0YWRhdGE6IHtcbiAgICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICAgIFByb3BlcnRpZXM6IHtcbiAgICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBNZXRhZGF0YToge30sXG4gICAgICAgIH0sXG4gICAgICAgIFdpdGhNZXRhZGF0YToge1xuICAgICAgICAgIFR5cGU6ICdBV1M6OkNsb3VkRm9ybWF0aW9uOjpTdGFjaycsXG4gICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9LFxuICB9KTtcblxuICAvLyBXSEVOXG4gIGNvbnN0IGRlcGxveWVkVGVtcGxhdGUgPSAoYXdhaXQgZGVwbG95bWVudHMucmVhZEN1cnJlbnRUZW1wbGF0ZVdpdGhOZXN0ZWRTdGFja3Mocm9vdFN0YWNrKSkuZGVwbG95ZWRSb290VGVtcGxhdGU7XG4gIGNvbnN0IG5lc3RlZFN0YWNrcyA9IChhd2FpdCBkZXBsb3ltZW50cy5yZWFkQ3VycmVudFRlbXBsYXRlV2l0aE5lc3RlZFN0YWNrcyhyb290U3RhY2spKS5uZXN0ZWRTdGFja3M7XG5cbiAgLy8gVEhFTlxuICBleHBlY3QoZGVwbG95ZWRUZW1wbGF0ZSkudG9FcXVhbCh7XG4gICAgUmVzb3VyY2VzOiB7XG4gICAgICBXaXRoTWV0YWRhdGE6IHtcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgIH0sXG4gICAgICAgIE1ldGFkYXRhOiB7XG4gICAgICAgICAgJ2F3czphc3NldDpwYXRoJzogJ29uZS1yZXNvdXJjZS1zdGFjay5uZXN0ZWQudGVtcGxhdGUuanNvbicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0sXG4gIH0pO1xuXG4gIGV4cGVjdChyb290U3RhY2sudGVtcGxhdGUpLnRvRXF1YWwoe1xuICAgIFJlc291cmNlczoge1xuICAgICAgV2l0aG91dE1ldGFkYXRhOiB7XG4gICAgICAgIC8vIFVuY2hhbmdlZFxuICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBXaXRoRW1wdHlNZXRhZGF0YToge1xuICAgICAgICAvLyBVbmNoYW5nZWRcbiAgICAgICAgVHlwZTogJ0FXUzo6Q2xvdWRGb3JtYXRpb246OlN0YWNrJyxcbiAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgIFRlbXBsYXRlVVJMOiAnaHR0cHM6Ly93d3cubWFnaWMtdXJsLmNvbScsXG4gICAgICAgIH0sXG4gICAgICAgIE1ldGFkYXRhOiB7fSxcbiAgICAgIH0sXG4gICAgICBXaXRoTWV0YWRhdGE6IHtcbiAgICAgICAgLy8gQ2hhbmdlZFxuICAgICAgICBUeXBlOiAnQVdTOjpDbG91ZEZvcm1hdGlvbjo6U3RhY2snLFxuICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgVGVtcGxhdGVVUkw6ICdodHRwczovL3d3dy5tYWdpYy11cmwuY29tJyxcbiAgICAgICAgfSxcbiAgICAgICAgTWV0YWRhdGE6IHtcbiAgICAgICAgICAnYXdzOmFzc2V0OnBhdGgnOiAnb25lLXJlc291cmNlLXN0YWNrLm5lc3RlZC50ZW1wbGF0ZS5qc29uJyxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgfSxcbiAgfSk7XG5cbiAgZXhwZWN0KG5lc3RlZFN0YWNrcykudG9FcXVhbCh7XG4gICAgV2l0aE1ldGFkYXRhOiB7XG4gICAgICBkZXBsb3llZFRlbXBsYXRlOiB7XG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBQcm9wZXJ0eTogJ29sZC12YWx1ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIGdlbmVyYXRlZFRlbXBsYXRlOiB7XG4gICAgICAgIFJlc291cmNlczoge1xuICAgICAgICAgIFNvbWVSZXNvdXJjZToge1xuICAgICAgICAgICAgUHJvcGVydGllczoge1xuICAgICAgICAgICAgICBQcm9wZXJ0eTogJ25ldy12YWx1ZScsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgVHlwZTogJ0FXUzo6U29tZXRoaW5nJyxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIHBoeXNpY2FsTmFtZTogJ29uZS1yZXNvdXJjZS1zdGFjaycsXG4gICAgICBuZXN0ZWRTdGFja1RlbXBsYXRlczoge30sXG4gICAgfSxcbiAgfSk7XG59KTtcblxuZGVzY3JpYmUoJ3N0YWNrRXhpc3RzJywgKCkgPT4ge1xuICB0ZXN0LmVhY2goW1xuICAgIFtmYWxzZSwgJ2RlcGxveTpoZXJlOjEyMzQ1Njc4OTAxMiddLFxuICAgIFt0cnVlLCAnbG9va3VwOmhlcmU6MTIzNDU2Nzg5MDEyJ10sXG4gIF0pKCd1c2VzIGxvb2t1cCByb2xlIGlmIHJlcXVlc3RlZDogJXAnLCBhc3luYyAodHJ5TG9va3VwUm9sZSwgZXhwZWN0ZWRSb2xlQXJuKSA9PiB7XG4gICAgY29uc3QgbW9ja0ZvckVudmlyb25tZW50ID0gamVzdC5mbigpLm1vY2tJbXBsZW1lbnRhdGlvbigoKSA9PiB7IHJldHVybiB7IHNkazogbmV3IE1vY2tTZGsoKSB9OyB9KTtcbiAgICBzZGtQcm92aWRlci5mb3JFbnZpcm9ubWVudCA9IG1vY2tGb3JFbnZpcm9ubWVudDtcbiAgICBnaXZlblN0YWNrcyh7XG4gICAgICAnKic6IHsgdGVtcGxhdGU6IHt9IH0sXG4gICAgfSk7XG5cbiAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBkZXBsb3ltZW50cy5zdGFja0V4aXN0cyh7XG4gICAgICBzdGFjazogdGVzdFN0YWNrKHtcbiAgICAgICAgc3RhY2tOYW1lOiAnYm9vcCcsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBhc3N1bWVSb2xlQXJuOiAnZGVwbG95OiR7QVdTOjpSZWdpb259OiR7QVdTOjpBY2NvdW50SWR9JyxcbiAgICAgICAgICBsb29rdXBSb2xlOiB7XG4gICAgICAgICAgICBhcm46ICdsb29rdXA6JHtBV1M6OlJlZ2lvbn06JHtBV1M6OkFjY291bnRJZH0nLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICAgIHRyeUxvb2t1cFJvbGUsXG4gICAgfSk7XG5cbiAgICBleHBlY3QocmVzdWx0KS50b0JlVHJ1dGh5KCk7XG4gICAgZXhwZWN0KG1vY2tGb3JFbnZpcm9ubWVudCkudG9IYXZlQmVlbkNhbGxlZFdpdGgoZXhwZWN0LmFueXRoaW5nKCksIGV4cGVjdC5hbnl0aGluZygpLCBleHBlY3Qub2JqZWN0Q29udGFpbmluZyh7XG4gICAgICBhc3N1bWVSb2xlQXJuOiBleHBlY3RlZFJvbGVBcm4sXG4gICAgfSkpO1xuICB9KTtcbn0pO1xuXG50ZXN0KCd0YWdzIGFyZSBwYXNzZWQgYWxvbmcgdG8gY3JlYXRlIGNoYW5nZSBzZXQnLCBhc3luYyAoKSA9PiB7XG4gIG1vY2tDbG91ZEZvcm1hdGlvbkNsaWVudC5vbihEZXNjcmliZUNoYW5nZVNldENvbW1hbmQpLnJlc29sdmVzKHtcbiAgICBTdGF0dXM6IENoYW5nZVNldFN0YXR1cy5DUkVBVEVfQ09NUExFVEUsXG4gIH0pO1xuXG4gIGNvbnN0IHN0YWNrOiBhbnkgPSB7fTtcbiAgc3RhY2sudGFncyA9IHsgU29tZUtleTogJ1NvbWVWYWx1ZScgfTtcbiAgZm9yIChjb25zdCBtZXRob2ROYW1lIG9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGN4YXBpLkNsb3VkRm9ybWF0aW9uU3RhY2tBcnRpZmFjdC5wcm90b3R5cGUpKSB7XG4gICAgc3RhY2tbbWV0aG9kTmFtZV0gPSBqZXN0LmZuKCk7XG4gIH1cblxuICBhd2FpdCBjcmVhdGVDaGFuZ2VTZXQoe1xuICAgIHN0YWNrOiBzdGFjayxcbiAgICBjZm46IG5ldyBNb2NrU2RrKCkuY2xvdWRGb3JtYXRpb24oKSxcbiAgICBjaGFuZ2VTZXROYW1lOiAnZm9vJyxcbiAgICB3aWxsRXhlY3V0ZTogZmFsc2UsXG4gICAgZXhpc3RzOiB0cnVlLFxuICAgIHV1aWQ6ICcxNDJERjgyQS04RUQ4LTQ5NDQtOEVFQi1BNUJBRTE0MUYxM0YnLFxuICAgIGJvZHlQYXJhbWV0ZXI6IHt9LFxuICAgIHBhcmFtZXRlcnM6IHt9LFxuICB9KTtcblxuICBleHBlY3QobW9ja0Nsb3VkRm9ybWF0aW9uQ2xpZW50KS50b0hhdmVSZWNlaXZlZENvbW1hbmRXaXRoKENyZWF0ZUNoYW5nZVNldENvbW1hbmQsIHtcbiAgICBUYWdzOiBbeyBLZXk6ICdTb21lS2V5JywgVmFsdWU6ICdTb21lVmFsdWUnIH1dLFxuICB9KTtcbn0pO1xuXG5mdW5jdGlvbiBwdXNoU3RhY2tSZXNvdXJjZVN1bW1hcmllcyhzdGFja05hbWU6IHN0cmluZywgLi4uaXRlbXM6IFN0YWNrUmVzb3VyY2VTdW1tYXJ5W10pIHtcbiAgaWYgKCFjdXJyZW50Q2ZuU3RhY2tSZXNvdXJjZXNbc3RhY2tOYW1lXSkge1xuICAgIGN1cnJlbnRDZm5TdGFja1Jlc291cmNlc1tzdGFja05hbWVdID0gW107XG4gIH1cblxuICBjdXJyZW50Q2ZuU3RhY2tSZXNvdXJjZXNbc3RhY2tOYW1lXS5wdXNoKC4uLml0ZW1zKTtcbn1cblxuZnVuY3Rpb24gc3RhY2tTdW1tYXJ5T2YobG9naWNhbElkOiBzdHJpbmcsIHJlc291cmNlVHlwZTogc3RyaW5nLCBwaHlzaWNhbFJlc291cmNlSWQ6IHN0cmluZyk6IFN0YWNrUmVzb3VyY2VTdW1tYXJ5IHtcbiAgcmV0dXJuIHtcbiAgICBMb2dpY2FsUmVzb3VyY2VJZDogbG9naWNhbElkLFxuICAgIFBoeXNpY2FsUmVzb3VyY2VJZDogcGh5c2ljYWxSZXNvdXJjZUlkLFxuICAgIFJlc291cmNlVHlwZTogcmVzb3VyY2VUeXBlLFxuICAgIFJlc291cmNlU3RhdHVzOiBTdGFja1N0YXR1cy5DUkVBVEVfQ09NUExFVEUsXG4gICAgTGFzdFVwZGF0ZWRUaW1lc3RhbXA6IG5ldyBEYXRlKCksXG4gIH07XG59XG5cbmZ1bmN0aW9uIGdpdmVuU3RhY2tzKHN0YWNrczogUmVjb3JkPHN0cmluZywgeyB0ZW1wbGF0ZTogYW55OyBzdGFja1N0YXR1cz86IHN0cmluZyB9Pikge1xuICBqZXN0LnNweU9uKENsb3VkRm9ybWF0aW9uU3RhY2ssICdsb29rdXAnKS5tb2NrSW1wbGVtZW50YXRpb24oYXN5bmMgKF8sIHN0YWNrTmFtZSkgPT4ge1xuICAgIGxldCBzdGFjayA9IHN0YWNrc1tzdGFja05hbWVdO1xuICAgIGlmICghc3RhY2spIHtcbiAgICAgIHN0YWNrID0gc3RhY2tzWycqJ107XG4gICAgfVxuICAgIGlmIChzdGFjaykge1xuICAgICAgY29uc3QgY2ZuU3RhY2sgPSBuZXcgRmFrZUNsb3VkZm9ybWF0aW9uU3RhY2soe1xuICAgICAgICBzdGFja05hbWUsXG4gICAgICAgIHN0YWNrSWQ6IGBzdGFjay8ke3N0YWNrTmFtZX1gLFxuICAgICAgICBzdGFja1N0YXR1czogc3RhY2suc3RhY2tTdGF0dXMsXG4gICAgICB9KTtcbiAgICAgIGNmblN0YWNrLnNldFRlbXBsYXRlKHN0YWNrLnRlbXBsYXRlKTtcbiAgICAgIHJldHVybiBjZm5TdGFjaztcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIG5ldyBGYWtlQ2xvdWRmb3JtYXRpb25TdGFjayh7IHN0YWNrTmFtZSB9KTtcbiAgICB9XG4gIH0pO1xufVxuIl19