aws-delivlib 13.3.3 → 13.4.2

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 (65) hide show
  1. package/.gitattributes +22 -20
  2. package/cdk.out/{asset.663163693e04179c71265b44a325be7e6b8c4e90b081883a1b3f3393de2546ea → asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a}/watcher-handler.d.ts +0 -0
  3. package/cdk.out/asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a/watcher-handler.js +108 -0
  4. package/cdk.out/{asset.663163693e04179c71265b44a325be7e6b8c4e90b081883a1b3f3393de2546ea → asset.7820644cf1fdec7cec290ed6fdd561e35f4015d4dcf03a20f8035dda3c0ac88a}/watcher-handler.ts +0 -0
  5. package/cdk.out/asset.dc2e98009b027861f34e56eebb81faa5a3951ed9da80ce4a903a45de04268238/index.js +16465 -0
  6. package/cdk.out/cdk.out +1 -1
  7. package/cdk.out/delivlib-test.assets.json +9 -9
  8. package/cdk.out/delivlib-test.template.json +3 -3
  9. package/cdk.out/manifest.json +1840 -1840
  10. package/cdk.out/tree.json +412 -412
  11. package/lib/__tests__/build-spec.test.js +21 -2
  12. package/lib/__tests__/bump.test.js +21 -2
  13. package/lib/__tests__/canary.test.js +22 -3
  14. package/lib/__tests__/change-control-lambda/disable-transition.test.js +2 -1
  15. package/lib/__tests__/change-control-lambda/handler.test.js +23 -3
  16. package/lib/__tests__/chime-notifier.test.js +4 -3
  17. package/lib/__tests__/code-signing-cert.test.js +21 -2
  18. package/lib/__tests__/integ.delivlib.js +21 -2
  19. package/lib/__tests__/open-pgp-key-pair.test.js +21 -2
  20. package/lib/__tests__/pipeline.test.js +22 -3
  21. package/lib/__tests__/pr.test.js +21 -2
  22. package/lib/__tests__/publishing.test.js +38 -2
  23. package/lib/__tests__/registry-sync/ecr-mirror.test.js +21 -2
  24. package/lib/__tests__/registry-sync/mirror-source.test.js +21 -2
  25. package/lib/__tests__/shellable.test.js +22 -3
  26. package/lib/__tests__/test-stack.js +22 -3
  27. package/lib/change-control-lambda/disable-transition.js +21 -2
  28. package/lib/change-control-lambda/index.js +21 -2
  29. package/lib/change-controller.js +21 -2
  30. package/lib/chime-notifier/chime-notifier.js +22 -12
  31. package/lib/chime-notifier/chime-notifier.ts +1 -11
  32. package/lib/chime-notifier/{notifier-handler.d.ts → handler/notifier-handler.d.ts} +0 -0
  33. package/lib/chime-notifier/handler/notifier-handler.js +110 -0
  34. package/lib/chime-notifier/{notifier-handler.ts → handler/notifier-handler.ts} +4 -4
  35. package/lib/code-signing/certificate-signing-request.js +21 -2
  36. package/lib/code-signing/code-signing-certificate.js +21 -2
  37. package/lib/code-signing/private-key.js +21 -2
  38. package/lib/custom-resource-handlers/src/_cloud-formation.js +22 -3
  39. package/lib/custom-resource-handlers/src/_exec.js +22 -3
  40. package/lib/custom-resource-handlers/src/_rmrf.js +23 -4
  41. package/lib/custom-resource-handlers/src/certificate-signing-request.js +26 -7
  42. package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
  43. package/lib/custom-resource-handlers/src/pgp-secret.js +27 -8
  44. package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
  45. package/lib/custom-resource-handlers/src/private-key.js +26 -7
  46. package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
  47. package/lib/open-pgp-key-pair.js +21 -2
  48. package/lib/pipeline-notifications/chime.js +21 -2
  49. package/lib/pipeline-notifications/slack.js +21 -2
  50. package/lib/pipeline-watcher/handler/watcher-handler.js +21 -2
  51. package/lib/pipeline-watcher/watcher.js +21 -2
  52. package/lib/pipeline.d.ts +20 -6
  53. package/lib/pipeline.js +35 -10
  54. package/lib/pipeline.ts +34 -14
  55. package/lib/publishing/s3/publish.sh +2 -1
  56. package/lib/publishing.js +22 -3
  57. package/lib/pull-request/bump.js +21 -2
  58. package/lib/pull-request/merge-back.js +22 -3
  59. package/lib/pull-request/pr.js +21 -2
  60. package/lib/shellable.js +22 -3
  61. package/lib/util.js +23 -4
  62. package/package.json +36 -37
  63. package/cdk.out/asset.663163693e04179c71265b44a325be7e6b8c4e90b081883a1b3f3393de2546ea/watcher-handler.js +0 -89
  64. package/cdk.out/asset.d81bf2d4c389ecd69472cf4b27599e1ffbe0c1543104f45d035834e863f64ca7/index.js +0 -14129
  65. package/lib/chime-notifier/notifier-handler.js +0 -91
package/lib/publishing.js CHANGED
@@ -1,9 +1,28 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  Object.defineProperty(exports, "__esModule", { value: true });
3
22
  exports.PublishToGolang = exports.PublishToPyPi = exports.PublishToS3 = exports.PublishToGitHub = exports.PublishDocsToGitHubProject = exports.PublishToNuGetProject = exports.PublishToNpmProject = exports.PublishToMavenProject = exports.NpmAccess = void 0;
4
- const path = require("path");
23
+ const path = __importStar(require("path"));
5
24
  const monocdk_1 = require("monocdk");
6
- const permissions = require("./permissions");
25
+ const permissions = __importStar(require("./permissions"));
7
26
  const shellable_1 = require("./shellable");
8
27
  const util_1 = require("./util");
9
28
  /**
@@ -329,4 +348,4 @@ class PublishToGolang extends monocdk_1.Construct {
329
348
  }
330
349
  }
331
350
  exports.PublishToGolang = PublishToGolang;
332
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkJBQTZCO0FBQzdCLHFDQU9pQjtBQUdqQiw2Q0FBNkM7QUFHN0MsMkNBQXVEO0FBQ3ZELGlDQUFxQztBQUVyQzs7R0FFRztBQUNILElBQVksU0FVWDtBQVZELFdBQVksU0FBUztJQUNuQjs7T0FFRztJQUNILDhCQUFpQixDQUFBO0lBRWpCOztPQUVHO0lBQ0gsc0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQVZXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBVXBCO0FBeUNEOztHQUVHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxtQkFBUztJQUlsRCxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQWlDOztRQUMxRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxNQUFNLEtBQUssU0FBUyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7UUFFbEYsTUFBTSxTQUFTLEdBQUcsSUFBSSxxQkFBUyxDQUFDLElBQUksRUFBRSxTQUFTLEVBQUU7WUFDL0MsUUFBUSxFQUFFLElBQUkseUJBQWEsQ0FBQyxNQUFBLEtBQUssQ0FBQyxVQUFVLG1DQUFJLHVCQUFNLENBQUMsZUFBZSxDQUFDLGtCQUFrQixDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFDN0csZUFBZSxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxPQUFPLENBQUM7WUFDNUQsVUFBVSxFQUFFLFlBQVk7WUFDeEIsV0FBVyxFQUFFO2dCQUNYLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7Z0JBQzFDLGVBQWUsRUFBRSxLQUFLLENBQUMs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QVMsQ0FBQyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLE9BQU8sR0FBRyxTQUFTLENBQUMsT0FBTyxDQUFDO0lBQ25DLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBdUIsRUFBRSxFQUFVLEVBQUUsT0FBNkI7UUFDckYsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtDQUFpQixDQUFDLGVBQWUsQ0FBQztZQUNwRCxVQUFVLEVBQUUsRUFBRTtZQUNkLEtBQUssRUFBRSxPQUFPLENBQUMsYUFBYSxJQUFJLElBQUksMEJBQVMsQ0FBQyxRQUFRLEVBQUU7WUFDeEQsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztTQUN0QixDQUFDLENBQUMsQ0FBQztJQUNOLENBQUM7Q0FDRjtBQXhDRCwwQ0F3Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0LCBTdGFjayxcbiAgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLFxuICBhd3NfY29kZXBpcGVsaW5lX2FjdGlvbnMgYXMgY3BpcGVsaW5lX2FjdGlvbnMsXG4gIGF3c19pYW0gYXMgaWFtLFxuICBhd3NfczMgYXMgczMsXG59IGZyb20gJ21vbm9jZGsnO1xuaW1wb3J0IHsgSUNvZGVTaWduaW5nQ2VydGlmaWNhdGUgfSBmcm9tICcuL2NvZGUtc2lnbmluZyc7XG5pbXBvcnQgeyBPcGVuUEdQS2V5UGFpciB9IGZyb20gJy4vb3Blbi1wZ3Ata2V5LXBhaXInO1xuaW1wb3J0ICogYXMgcGVybWlzc2lvbnMgZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBBZGRUb1BpcGVsaW5lT3B0aW9ucywgSVB1Ymxpc2hlciB9IGZyb20gJy4vcGlwZWxpbmUnO1xuaW1wb3J0IHsgV3JpdGFibGVHaXRIdWJSZXBvIH0gZnJvbSAnLi9yZXBvJztcbmltcG9ydCB7IExpbnV4UGxhdGZvcm0sIFNoZWxsYWJsZSB9IGZyb20gJy4vc2hlbGxhYmxlJztcbmltcG9ydCB7IG5vVW5kZWZpbmVkIH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBUeXBlIG9mIGFjY2VzcyBwZXJtaXNzaW9ucyB0byByZXF1ZXN0IGZyb20gbnBtanMuXG4gKi9cbmV4cG9ydCBlbnVtIE5wbUFjY2VzcyB7XG4gIC8qKlxuICAgKiBObyBhY2Nlc3MgcmVzdHJpY3Rpb24uIE5vdGUgdGhhdCB1bnNjb3BlZCBwYWNrYWdlcyBtdXN0IGFsd2F5cyBiZSBwdWJsaWMuXG4gICAqL1xuICBQVUJMSUMgPSAncHVibGljJyxcblxuICAvKipcbiAgICogTGltaXQgYWNjZXNzIHRvIHdoaXRlbGlzdGVkIG5wbWpzIHVzZXJzLlxuICAgKi9cbiAgUkVTVFJJQ1RFRCA9ICdyZXN0cmljdGVkJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9NYXZlblByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc2lnbmluZyBrZXkgaXRzZWxmXG4gICAqL1xuICBzaWduaW5nS2V5OiBPcGVuUEdQS2V5UGFpcjtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBzb25hdHlwZSBzdGFnaW5nIHByb2ZpbGUgKGUuZy4gXCI2OGEwNTM2MzA4MzE3NFwiKS5cbiAgICovXG4gIHN0YWdpbmdQcm9maWxlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgc2VjcmV0IHRoYXQgY29udGFpbnMgdGhlIE1hdmVuIGxvZ2luXG4gICAqL1xuICBtYXZlbkxvZ2luU2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgdHJ1ZSAoZGVmYXVsdCkgcGVyZm9ybXMgYSBkcnktcnVuIG9ubHkgaW5zdGVhZCBvZiBhY3R1YWxseSBwdWJsaXNoaW5nLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgTWF2ZW4gcHVibGlzaGluZyBlbmRwb2ludCB0byBiZSB1c2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImh0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZ1wiXG4gICAqL1xuICBtYXZlbkVuZHBvaW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgaW1hZ2UgdG8gZG8gdGhlIHB1Ymxpc2hpbmcgaW5cbiAgICpcbiAgICogTmVlZHMgdG8gaGF2ZSBNYXZlbiBwcmVpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IExhdGVzdCBzdXBlcmNoYWluXG4gICAqL1xuICByZWFkb25seSBidWlsZEltYWdlPzogY2J1aWxkLklCdWlsZEltYWdlO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE1hdmVuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9NYXZlblByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvTWF2ZW5Qcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0ocHJvcHMuYnVpbGRJbWFnZSA/PyBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeSgnanNpaS9zdXBlcmNoYWluJykpLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdtYXZlbicpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgU1RBR0lOR19QUk9GSUxFX0lEOiBwcm9wcy5zdGFnaW5nUHJvZmlsZUlkLFxuICAgICAgICBTSUdOSU5HX0tFWV9BUk46IHByb3BzLnNpZ25pbmdLZXkuY3JlZGVudGlhbC5zZWNyZXRBcm4sXG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICBNQVZFTl9MT0dJTl9TRUNSRVQ6IHByb3BzLm1hdmVuTG9naW5TZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBNQVZFTl9FTkRQT0lOVDogcHJvcHMubWF2ZW5FbmRwb2ludCB8fCAnaHR0cHM6Ly9vc3Muc29uYXR5cGUub3JnJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5tYXZlbkxvZ2luU2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgICBwcm9wcy5zaWduaW5nS2V5LmdyYW50UmVhZChzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvTnBtUHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBOUE0gdG9rZW5cbiAgICovXG4gIG5wbVRva2VuU2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIG5wbSBkaXN0LXRhZyB0byB1c2Ugd2hlbiBwdWJsaXNoaW5nIGFydGlmYWN0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBucG0gZGVmYXVsdCBiZWhhdmlvciAoXCJsYXRlc3RcIiB1bmxlc3MgZGlzdCB0YWcgaXMgc3BlY2lmaWVkIGluIHBhY2thZ2UuanNvbilcbiAgICovXG4gIGRpc3RUYWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIG5wbSAtLWFjY2VzcyBwdWJsaWN8cmVzdHJpY3RlZFxuICAgKlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLm5wbWpzLmNvbS9jbGktY29tbWFuZHMvcHVibGlzaCM6fjp0ZXh0PVRlbGxzJTIwdGhlXG4gICAqXG4gICAqIFRlbGxzIHRoZSByZWdpc3RyeSB3aGV0aGVyIHRoaXMgcGFja2FnZSBzaG91bGQgYmUgcHVibGlzaGVkIGFzIHB1YmxpYyBvciByZXN0cmljdGVkLlxuICAgKiBPbmx5IGFwcGxpZXMgdG8gc2NvcGVkIHBhY2thZ2VzLCB3aGljaCBkZWZhdWx0IHRvIHJlc3RyaWN0ZWQuXG4gICAqIElmIHlvdSBkb27igJl0IGhhdmUgYSBwYWlkIGFjY291bnQsIHlvdSBtdXN0IHB1Ymxpc2ggd2l0aCAtLWFjY2VzcyBwdWJsaWMgdG8gcHVibGlzaCBzY29wZWQgcGFja2FnZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5wbUFjY2Vzcy5QVUJMSUNcbiAgICovXG4gIGFjY2Vzcz86IE5wbUFjY2Vzcztcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcHVibGlzaCBhbGwgcGFja2FnZXMgaW4gYSByZWxlYXNlIGJ1bmRsZSB0byBOUE1cbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb05wbVByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb05wbVByb2plY3RQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3QgYWNjZXNzID0gcHJvcHMuYWNjZXNzID8/IE5wbUFjY2Vzcy5QVUJMSUM7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuVUJVTlRVXzE0XzA0X05PREVKU18xMF8xXzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICducG0nKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICBOUE1fVE9LRU5fU0VDUkVUOiBwcm9wcy5ucG1Ub2tlblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIERJU1RUQUc6IHByb3BzLmRpc3RUYWcgfHwgJycsXG4gICAgICAgIEFDQ0VTUzogYWNjZXNzLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLm5wbVRva2VuU2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvTnVHZXRQcm9qZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIFNlY3JldHNNYW5hZ2VyIHNlY3JldCB3aGljaCBzdG9yZXMgdGhlIE51Z2V0IEFQSSBrZXkuXG4gICAqL1xuICBudWdldEFwaUtleVNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBIGNvZGUgc2lnbmluZyBjZXJ0aWZpY2F0ZSB0byB1c2UgdG8gc2lnbiBhc3NlbWJsaWVzLlxuICAgKiBAZGVmYXVsdCBObyBzaWduaW5nXG4gICAqL1xuICBjb2RlU2lnbj86IElDb2RlU2lnbmluZ0NlcnRpZmljYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgYnVpbGQgaW1hZ2UgdG8gZG8gdGhlIHB1Ymxpc2hpbmcgaW5cbiAgICpcbiAgICogTmVlZHMgdG8gaGF2ZSBOdUdldCBwcmVpbnN0YWxsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IExhdGVzdCBzdXBlcmNoYWluXG4gICAqL1xuICByZWFkb25seSBidWlsZEltYWdlPzogY2J1aWxkLklCdWlsZEltYWdlO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE51R2V0XG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9OdUdldFByb2plY3QgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvTnVHZXRQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0geyB9O1xuXG4gICAgZW52aXJvbm1lbnQuRk9SX1JFQUwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGlmIChwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuKSB7XG4gICAgICBlbnZpcm9ubWVudC5OVUdFVF9ST0xFX0FSTiA9IHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LmFzc3VtZVJvbGVBcm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LnJlZ2lvbikge1xuICAgICAgZW52aXJvbm1lbnQuTlVHRVRfU0VDUkVUX1JFR0lPTiA9IHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LnJlZ2lvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgZW52aXJvbm1lbnQuTlVHRVRfU0VDUkVUX1JFR0lPTiA9IFN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICB9XG5cbiAgICBlbnZpcm9ubWVudC5OVUdFVF9TRUNSRVRfSUQgPSBwcm9wcy5udWdldEFwaUtleVNlY3JldC5zZWNyZXRBcm47XG5cbiAgICBpZiAocHJvcHMuY29kZVNpZ24pIHtcbiAgICAgIGVudmlyb25tZW50LkNPREVfU0lHTklOR19TRUNSRVRfSUQgPSBwcm9wcy5jb2RlU2lnbi5jcmVkZW50aWFsLnNlY3JldEFybjtcbiAgICAgIGVudmlyb25tZW50LkNPREVfU0lHTklOR19QQVJBTUVURVJfTkFNRSA9IHByb3BzLmNvZGVTaWduLnByaW5jaXBhbC5wYXJhbWV0ZXJOYW1lO1xuICAgIH1cblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0ocHJvcHMuYnVpbGRJbWFnZSA/PyBjYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Eb2NrZXJSZWdpc3RyeSgnanNpaS9zdXBlcmNoYWluJykpLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdudWdldCcpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQsXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIGlmIChwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuKSB7XG4gICAgICAgIHBlcm1pc3Npb25zLmdyYW50QXNzdW1lUm9sZShwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuLCBzaGVsbGFibGUucm9sZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLmNvZGVTaWduKSB7XG4gICAgICAgIHByb3BzLmNvZGVTaWduLmdyYW50RGVjcnlwdChzaGVsbGFibGUucm9sZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaERvY3NUb0dpdEh1YlByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSB0byBwdWJsaXNoIHRvXG4gICAqL1xuICBnaXRodWJSZXBvOiBXcml0YWJsZUdpdEh1YlJlcG87XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnVpbGQgbWFuaWZlc3QgSlNPTiBmaWxlIChtdXN0IGluY2x1ZGUgXCJuYW1lXCIgYW5kIFwidmVyc2lvblwiIGZpZWxkcykuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL2J1aWxkLmpzb25cIlxuICAgKi9cbiAgYnVpbGRNYW5pZmVzdEZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHaXRIdWIgUGFnZXMgYnJhbmNoIHRvIHB1c2ggdG8uXG4gICAqIEBkZWZhdWx0IGdoLXBhZ2VzXG4gICAqL1xuICBicmFuY2g/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHB1Ymxpc2ggYWxsIHBhY2thZ2VzIGluIGEgcmVsZWFzZSBidW5kbGUgdG8gTnVHZXRcbiAqL1xuZXhwb3J0IGNsYXNzIFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5VQlVOVFVfMTRfMDRfTk9ERUpTXzEwXzFfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ2RvY3MnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC8vIE11c3QgYmUgU1NIIGJlY2F1c2Ugd2UgdXNlIGFuIFNTSCBrZXkgdG8gYXV0aGVudGljYXRlXG4gICAgICAgIEdJVEhVQl9SRVBPOiBwcm9wcy5naXRodWJSZXBvLnJlcG9zaXRvcnlVcmxTc2gsXG4gICAgICAgIEdJVEhVQl9QQUdFU19CUkFOQ0g6IHByb3BzLmJyYW5jaCB8fCAnZ2gtcGFnZXMnLFxuICAgICAgICBTU0hfS0VZX1NFQ1JFVDogcHJvcHMuZ2l0aHViUmVwby5zc2hLZXlTZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgQ09NTUlUX1VTRVJOQU1FOiBwcm9wcy5naXRodWJSZXBvLmNvbW1pdFVzZXJuYW1lLFxuICAgICAgICBDT01NSVRfRU1BSUw6IHByb3BzLmdpdGh1YlJlcG8uY29tbWl0RW1haWwsXG4gICAgICAgIEJVSUxEX01BTklGRVNUOiBwcm9wcy5idWlsZE1hbmlmZXN0RmlsZU5hbWUgfHwgJy4vYnVpbGQuanNvbicsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMuZ2l0aHViUmVwby5zc2hLZXlTZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9HaXRIdWJQcm9wcyB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gY3JlYXRlIGEgcmVsZWFzZSBpbi5cbiAgICovXG4gIGdpdGh1YlJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogVGhlIHNpZ25pZ24ga2V5IHRvIHVzZSB0byBjcmVhdGUgYSBHUEcgc2lnbmF0dXJlIG9mIHRoZSBhcnRpZmFjdC5cbiAgICovXG4gIHNpZ25pbmdLZXk6IE9wZW5QR1BLZXlQYWlyO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgYnVpbGQgbWFuaWZlc3QgSlNPTiBmaWxlIChtdXN0IGluY2x1ZGUgXCJuYW1lXCIgYW5kIFwidmVyc2lvblwiIGZpZWxkcykuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL2J1aWxkLmpzb25cIlxuICAgKi9cbiAgYnVpbGRNYW5pZmVzdEZpbGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY2hhbmdlbG9nIG1hcmtkb3duIGZpbGUsIHVzZWQgdG8gY3JlYXRlIHJlbGVhc2Ugbm90ZXMuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogQGRlZmF1bHQgXCIuL0NIQU5HRUxPRy5tZFwiXG4gICAqL1xuICBjaGFuZ2Vsb2dGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHJlbGVhc2Ugbm90ZXMgZmlsZSwgY29udGFpbmluZyB0aGUgY29tcGxldGVkIHJlbGVhc2Ugbm90ZXNcbiAgICogZm9yIHRoZSBjdXJyZW50IHJlbGVhc2UuXG4gICAqIFJlbGF0aXZlIHRvIHRoZSBhcnRpZmFjdHMgcm9vdC5cbiAgICogTk9URSAtIElmIHRoaXMgdmFsdWUgaXMgc2V0IGFuZCBwb2ludHMgdG8gYSB2YWxpZCBmaWxlLCB0aGUgZmlsZSBpbiBpdHMgZW50aXJldHlcbiAgICogd2lsbCBiZSByZWFkIGFuZCB1c2VkIGZvciB0aGUgcmVsZWFzZSBub3Rlcy4gVGhlIHZhbHVlIG9mIGBjaGFuZ2Vsb2dGaWxlTmFtZWAgd2lsbFxuICAgKiBiZSBpZ25vcmVkLlxuICAgKiBAZGVmYXVsdCBcIi4vUkVMRUFTRV9OT1RFUy5tZFwiXG4gICAqL1xuICByZWxlYXNlTm90ZXNGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBpbnB1dCBhcnRpZmFjdHMgdG8gcHVibGlzaCBiaW5hcmllcyBmcm9tIHRvIEdpdEh1YiByZWxlYXNlXG4gICAqL1xuICBhZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/OiBjcGlwZWxpbmUuQXJ0aWZhY3RbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBzaWduIHRoZSBhZGRpdGlvbmFsIGFydGlmYWN0c1xuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBzaWduQWRkaXRpb25hbEFydGlmYWN0cz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9HaXRIdWIgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuICBwcml2YXRlIHJlYWRvbmx5IGFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cz86IGNwaXBlbGluZS5BcnRpZmFjdFtdO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvR2l0SHViUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcbiAgICB0aGlzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyA9IHByb3BzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cztcblxuICAgIC8vIFRoZSByZWxlYXNlIG5vdGVzLCBpZiBzZXQgYW5kIGEgdmFsaWQgZmlsZSwgb3ZlcnJpZGVzIGFueSB1c2FnZXMgb2YgdGhlIGNoYW5nZWxvZy5cbiAgICBpZiAocHJvcHMuY2hhbmdlbG9nRmlsZU5hbWUgJiYgcHJvcHMucmVsZWFzZU5vdGVzRmlsZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignYm90aCBgcmVsZWFzZU5vdGVzRmlsZU5hbWVgIGFuZCBgY2hhbmdlbG9nRmlsZU5hbWVgIGNhbm5vdCBiZSBzcGVjaWZpZWQ7IHVzZSBvbmUgb3IgdGhlIG90aGVyJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlVCVU5UVV8xNF8wNF9OT0RFSlNfMTBfMV8wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnZ2l0aHViJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDogbm9VbmRlZmluZWQoe1xuICAgICAgICBCVUlMRF9NQU5JRkVTVDogcHJvcHMuYnVpbGRNYW5pZmVzdEZpbGVOYW1lIHx8ICcuL2J1aWxkLmpzb24nLFxuICAgICAgICBDSEFOR0VMT0c6IHByb3BzLmNoYW5nZWxvZ0ZpbGVOYW1lIHx8ICcuL0NIQU5HRUxPRy5tZCcsXG4gICAgICAgIFJFTEVBU0VfTk9URVM6IHByb3BzLnJlbGVhc2VOb3Rlc0ZpbGVOYW1lIHx8ICcuL1JFTEVBU0VfTk9URVMubWQnLFxuICAgICAgICBTSUdOSU5HX0tFWV9BUk46IHByb3BzLnNpZ25pbmdLZXkuY3JlZGVudGlhbC5zZWNyZXRBcm4sXG4gICAgICAgIEdJVEhVQl9PV05FUjogcHJvcHMuZ2l0aHViUmVwby5vd25lcixcbiAgICAgICAgR0lUSFVCX1JFUE86IHByb3BzLmdpdGh1YlJlcG8ucmVwbyxcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICAgIC8vIFRyYW5zbWl0IHRoZSBuYW1lcyBvZiB0aGUgc2Vjb25kYXJ5IHNvdXJjZXMgdG8gdGhlIHNoZWxsIHNjcmlwdCAoZm9yIGVhc2llciBpdGVyYXRpb24pXG4gICAgICAgIFNFQ09OREFSWV9TT1VSQ0VfTkFNRVM6IHByb3BzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyA/IHByb3BzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cy5tYXAoYSA9PiBhLmFydGlmYWN0TmFtZSkuam9pbignICcpIDogdW5kZWZpbmVkLFxuICAgICAgICBTSUdOX0FERElUSU9OQUxfQVJUSUZBQ1RTOiBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMgJiYgcHJvcHMuc2lnbkFkZGl0aW9uYWxBcnRpZmFjdHMgIT09IGZhbHNlID8gJ3RydWUnIDogdW5kZWZpbmVkLFxuICAgICAgfSksXG4gICAgICBlbnZpcm9ubWVudFNlY3JldHM6IHtcbiAgICAgICAgR0lUSFVCX1RPS0VOOiBwcm9wcy5naXRodWJSZXBvLnRva2VuU2VjcmV0QXJuLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIGFsbG93IHNjcmlwdCB0byByZWFkIHRoZSBzaWduaW5nIGtleVxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcHJvcHMuc2lnbmluZ0tleS5ncmFudFJlYWQoc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIGV4dHJhSW5wdXRzOiB0aGlzLmFkZGl0aW9uYWxJbnB1dEFydGlmYWN0cyxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb1MzUHJvcHMge1xuICBidWNrZXQ6IHMzLklCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIE1ha2UgZmlsZXMgcHVibGljbHkgcmVhZGFibGVcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHB1YmxpYz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvUzMgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJUHVibGlzaGVyIHtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU/OiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvUzNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuVUJVTlRVXzE0XzA0X05PREVKU184XzExXzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdzMycpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgQlVDS0VUX1VSTDogYHMzOi8vJHtwcm9wcy5idWNrZXQuYnVja2V0TmFtZX1gLFxuICAgICAgICBDSEFOR0VMT0c6IHByb3BzLnB1YmxpYyA/ICd0cnVlJyA6ICdmYWxzZScsXG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIC8vIEFsbG93IHNjcmlwdCB0byB3cml0ZSB0byBidWNrZXRcbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHByb3BzLmJ1Y2tldC5ncmFudFJlYWRXcml0ZShzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvUHlQaVByb3BzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBQeVBJIGNyZWRlbnRpYWxzIHVuZGVyXG4gICAqIFwidXNlcm5hbWVcIiBhbmQgXCJwYXNzd29yZFwiIGtleXMuXG4gICAqL1xuICBsb2dpblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvUHlQaSBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9QeVBpUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlVCVU5UVV8xNF8wNF9QWVRIT05fM182XzUpLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdweXBpJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgUFlQSV9DUkVERU5USUFMU19TRUNSRVRfSUQ6IHByb3BzLmxvZ2luU2VjcmV0LnNlY3JldEFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5sb2dpblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BzIGZvciBHbyBwdWJsaXNoaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb0dvbGFuZ1Byb3BzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBHaXRIdWIgcGVyc29uYWwgYWNjZXNzIHRva2VuXG4gICAqIHVzZWQgdG8gcHVzaCB0aGUgZ28gY29kZSB0byB0aGUgZ2l0aHViIHJlcG9zaXRvcnkgZGVmaW5lZCBieSBpdCdzIG5hbWUuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmdpdGh1Yi5jb20vZW4vZ2l0aHViL2F1dGhlbnRpY2F0aW5nLXRvLWdpdGh1Yi9jcmVhdGluZy1hLXBlcnNvbmFsLWFjY2Vzcy10b2tlblxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0aHViVG9rZW5TZWNyZXQ6IHBlcm1pc3Npb25zLkV4dGVybmFsU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBVc2VybmFtZSB0byBwZXJmb3JtIHRoZSBjb21taXQgd2l0aC5cbiAgICovXG4gIHJlYWRvbmx5IGdpdFVzZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEVtYWlsIHRvIHBlcmZvcm0gdGhlIGNvbW1pdCB3aXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0VXNlckVtYWlsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNldCB0byBcInRydWVcIiBmb3IgYSBkcnkgcnVuLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogTW9kdWxlIHZlcnNpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdHMgdG8gdGhlIHZhbHVlIGluIHRoZSAndmVyc2lvbicgZmlsZSBvZiB0aGUgbW9kdWxlXG4gICAqIGRpcmVjdG9yeS4gRmFpbHMgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCB0byBwdXNoIHRvLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcIm1haW5cIlxuICAgKi9cbiAgcmVhZG9ubHkgZ2l0QnJhbmNoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tbWl0IG1lc3NhZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IFwiY2hvcmUocmVsZWFzZSk6ICRWRVJTSU9OXCJcbiAgICovXG4gIHJlYWRvbmx5IGdpdENvbW1pdE1lc3NhZ2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHVzaGVzIGEgZGlyZWN0b3J5IG9mIGdvbGFuZyBtb2R1bGVzIHRvIGEgR2l0SHViIHJlcG9zaXRvcnkuXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9Hb2xhbmcgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb0dvbGFuZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRyeVJ1biA9IHByb3BzLmRyeVJ1biA/PyBmYWxzZTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5TVEFOREFSRF81XzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdnb2xhbmcnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIERSWVJVTjogZHJ5UnVuID8gJ3RydWUnIDogdW5kZWZpbmVkLFxuICAgICAgICBHSVRIVUJfVE9LRU5fU0VDUkVUOiBwcm9wcy5naXRodWJUb2tlblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICAgIFZFUlNJT046IHByb3BzLnZlcnNpb24sXG4gICAgICAgIEdJVF9CUkFOQ0g6IHByb3BzLmdpdEJyYW5jaCxcbiAgICAgICAgR0lUX1VTRVJfTkFNRTogcHJvcHMuZ2l0VXNlck5hbWUsXG4gICAgICAgIEdJVF9VU0VSX0VNQUlMOiBwcm9wcy5naXRVc2VyRW1haWwsXG4gICAgICAgIEdJVF9DT01NSVRfTUVTU0FHRTogcHJvcHMuZ2l0Q29tbWl0TWVzc2FnZSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5naXRodWJUb2tlblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuIl19
351
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGlzaGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInB1Ymxpc2hpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3QixxQ0FPaUI7QUFHakIsMkRBQTZDO0FBRzdDLDJDQUF1RDtBQUN2RCxpQ0FBcUM7QUFFckM7O0dBRUc7QUFDSCxJQUFZLFNBVVg7QUFWRCxXQUFZLFNBQVM7SUFDbkI7O09BRUc7SUFDSCw4QkFBaUIsQ0FBQTtJQUVqQjs7T0FFRztJQUNILHNDQUF5QixDQUFBO0FBQzNCLENBQUMsRUFWVyxTQUFTLEdBQVQsaUJBQVMsS0FBVCxpQkFBUyxRQVVwQjtBQXlDRDs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsbUJBQVM7SUFJbEQsWUFBWSxNQUFpQixFQUFFLEVBQVUsRUFBRSxLQUFpQzs7UUFDMUUsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsQixNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRWxGLE1BQU0sU0FBUyxHQUFHLElBQUkscUJBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQy9DLFFBQVEsRUFBRSxJQUFJLHlCQUFhLENBQUMsTUFBQSxLQUFLLENBQUMsVUFBVSxtQ0FBSSx1QkFBTSxDQUFDLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1lBQzdHLGVBQWUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsT0FBTyxDQUFDO1lBQzVELFVBQVUsRUFBRSxZQUFZO1lBQ3hCLFdBQVcsRUFBRTtnQkFDWCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO2dCQUMxQyxl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SSxDQUFDLElBQUksR0FBRyxTQUFTLENBQUMsSUFBSSxDQUFDO1FBQzNCLElBQUksQ0FBQyxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRU0sYUFBYSxDQUFDLEtBQXVCLEVBQUUsRUFBVSxFQUFFLE9BQTZCO1FBQ3JGLEtBQUssQ0FBQyxTQUFTLENBQUMsSUFBSSxrQ0FBaUIsQ0FBQyxlQUFlLENBQUM7WUFDcEQsVUFBVSxFQUFFLEVBQUU7WUFDZCxLQUFLLEVBQUUsT0FBTyxDQUFDLGFBQWEsSUFBSSxJQUFJLDBCQUFTLENBQUMsUUFBUSxFQUFFO1lBQ3hELFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtZQUMxQixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87U0FDdEIsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0NBQ0Y7QUF4Q0QsMENBd0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7XG4gIENvbnN0cnVjdCwgU3RhY2ssXG4gIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSxcbiAgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX3MzIGFzIHMzLFxufSBmcm9tICdtb25vY2RrJztcbmltcG9ydCB7IElDb2RlU2lnbmluZ0NlcnRpZmljYXRlIH0gZnJvbSAnLi9jb2RlLXNpZ25pbmcnO1xuaW1wb3J0IHsgT3BlblBHUEtleVBhaXIgfSBmcm9tICcuL29wZW4tcGdwLWtleS1wYWlyJztcbmltcG9ydCAqIGFzIHBlcm1pc3Npb25zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IHsgQWRkVG9QaXBlbGluZU9wdGlvbnMsIElQdWJsaXNoZXIgfSBmcm9tICcuL3BpcGVsaW5lJztcbmltcG9ydCB7IFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4vcmVwbyc7XG5pbXBvcnQgeyBMaW51eFBsYXRmb3JtLCBTaGVsbGFibGUgfSBmcm9tICcuL3NoZWxsYWJsZSc7XG5pbXBvcnQgeyBub1VuZGVmaW5lZCB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVHlwZSBvZiBhY2Nlc3MgcGVybWlzc2lvbnMgdG8gcmVxdWVzdCBmcm9tIG5wbWpzLlxuICovXG5leHBvcnQgZW51bSBOcG1BY2Nlc3Mge1xuICAvKipcbiAgICogTm8gYWNjZXNzIHJlc3RyaWN0aW9uLiBOb3RlIHRoYXQgdW5zY29wZWQgcGFja2FnZXMgbXVzdCBhbHdheXMgYmUgcHVibGljLlxuICAgKi9cbiAgUFVCTElDID0gJ3B1YmxpYycsXG5cbiAgLyoqXG4gICAqIExpbWl0IGFjY2VzcyB0byB3aGl0ZWxpc3RlZCBucG1qcyB1c2Vycy5cbiAgICovXG4gIFJFU1RSSUNURUQgPSAncmVzdHJpY3RlZCcsXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvTWF2ZW5Qcm9qZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHNpZ25pbmcga2V5IGl0c2VsZlxuICAgKi9cbiAgc2lnbmluZ0tleTogT3BlblBHUEtleVBhaXI7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgc29uYXR5cGUgc3RhZ2luZyBwcm9maWxlIChlLmcuIFwiNjhhMDUzNjMwODMxNzRcIikuXG4gICAqL1xuICBzdGFnaW5nUHJvZmlsZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXIgb2YgdGhlIHNlY3JldCB0aGF0IGNvbnRhaW5zIHRoZSBNYXZlbiBsb2dpblxuICAgKi9cbiAgbWF2ZW5Mb2dpblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIHRydWUgKGRlZmF1bHQpIHBlcmZvcm1zIGEgZHJ5LXJ1biBvbmx5IGluc3RlYWQgb2YgYWN0dWFsbHkgcHVibGlzaGluZy5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIE1hdmVuIHB1Ymxpc2hpbmcgZW5kcG9pbnQgdG8gYmUgdXNlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJodHRwczovL29zcy5zb25hdHlwZS5vcmdcIlxuICAgKi9cbiAgbWF2ZW5FbmRwb2ludD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGJ1aWxkIGltYWdlIHRvIGRvIHRoZSBwdWJsaXNoaW5nIGluXG4gICAqXG4gICAqIE5lZWRzIHRvIGhhdmUgTWF2ZW4gcHJlaW5zdGFsbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMYXRlc3Qgc3VwZXJjaGFpblxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcHVibGlzaCBhbGwgcGFja2FnZXMgaW4gYSByZWxlYXNlIGJ1bmRsZSB0byBNYXZlblxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvTWF2ZW5Qcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb01hdmVuUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKHByb3BzLmJ1aWxkSW1hZ2UgPz8gY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoJ2pzaWkvc3VwZXJjaGFpbicpKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbWF2ZW4nKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIFNUQUdJTkdfUFJPRklMRV9JRDogcHJvcHMuc3RhZ2luZ1Byb2ZpbGVJZCxcbiAgICAgICAgU0lHTklOR19LRVlfQVJOOiBwcm9wcy5zaWduaW5nS2V5LmNyZWRlbnRpYWwuc2VjcmV0QXJuLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgTUFWRU5fTE9HSU5fU0VDUkVUOiBwcm9wcy5tYXZlbkxvZ2luU2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgTUFWRU5fRU5EUE9JTlQ6IHByb3BzLm1hdmVuRW5kcG9pbnQgfHwgJ2h0dHBzOi8vb3NzLnNvbmF0eXBlLm9yZycsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubWF2ZW5Mb2dpblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgcHJvcHMuc2lnbmluZ0tleS5ncmFudFJlYWQoc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb05wbVByb2plY3RQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgTlBNIHRva2VuXG4gICAqL1xuICBucG1Ub2tlblNlY3JldDogcGVybWlzc2lvbnMuRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIElmIGB0cnVlYCAoZGVmYXVsdCkgd2lsbCBvbmx5IHBlcmZvcm0gYSBkcnktcnVuIGJ1dCB3aWxsIG5vdCBhY3R1YWxseSBwdWJsaXNoLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBkcnlSdW4/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBucG0gZGlzdC10YWcgdG8gdXNlIHdoZW4gcHVibGlzaGluZyBhcnRpZmFjdHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbnBtIGRlZmF1bHQgYmVoYXZpb3IgKFwibGF0ZXN0XCIgdW5sZXNzIGRpc3QgdGFnIGlzIHNwZWNpZmllZCBpbiBwYWNrYWdlLmpzb24pXG4gICAqL1xuICBkaXN0VGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBucG0gLS1hY2Nlc3MgcHVibGljfHJlc3RyaWN0ZWRcbiAgICpcbiAgICogU2VlIGh0dHBzOi8vZG9jcy5ucG1qcy5jb20vY2xpLWNvbW1hbmRzL3B1Ymxpc2gjOn46dGV4dD1UZWxscyUyMHRoZVxuICAgKlxuICAgKiBUZWxscyB0aGUgcmVnaXN0cnkgd2hldGhlciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHB1Ymxpc2hlZCBhcyBwdWJsaWMgb3IgcmVzdHJpY3RlZC5cbiAgICogT25seSBhcHBsaWVzIHRvIHNjb3BlZCBwYWNrYWdlcywgd2hpY2ggZGVmYXVsdCB0byByZXN0cmljdGVkLlxuICAgKiBJZiB5b3UgZG9u4oCZdCBoYXZlIGEgcGFpZCBhY2NvdW50LCB5b3UgbXVzdCBwdWJsaXNoIHdpdGggLS1hY2Nlc3MgcHVibGljIHRvIHB1Ymxpc2ggc2NvcGVkIHBhY2thZ2VzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOcG1BY2Nlc3MuUFVCTElDXG4gICAqL1xuICBhY2Nlc3M/OiBOcG1BY2Nlc3M7XG59XG5cbi8qKlxuICogQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHB1Ymxpc2ggYWxsIHBhY2thZ2VzIGluIGEgcmVsZWFzZSBidW5kbGUgdG8gTlBNXG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoVG9OcG1Qcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9OcG1Qcm9qZWN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IGFjY2VzcyA9IHByb3BzLmFjY2VzcyA/PyBOcG1BY2Nlc3MuUFVCTElDO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlVCVU5UVV8xNF8wNF9OT0RFSlNfMTBfMV8wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbnBtJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgICAgTlBNX1RPS0VOX1NFQ1JFVDogcHJvcHMubnBtVG9rZW5TZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBESVNUVEFHOiBwcm9wcy5kaXN0VGFnIHx8ICcnLFxuICAgICAgICBBQ0NFU1M6IGFjY2VzcyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChwcm9wcy5ucG1Ub2tlblNlY3JldCwgc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb051R2V0UHJvamVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBTZWNyZXRzTWFuYWdlciBzZWNyZXQgd2hpY2ggc3RvcmVzIHRoZSBOdWdldCBBUEkga2V5LlxuICAgKi9cbiAgbnVnZXRBcGlLZXlTZWNyZXQ6IHBlcm1pc3Npb25zLkV4dGVybmFsU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQSBjb2RlIHNpZ25pbmcgY2VydGlmaWNhdGUgdG8gdXNlIHRvIHNpZ24gYXNzZW1ibGllcy5cbiAgICogQGRlZmF1bHQgTm8gc2lnbmluZ1xuICAgKi9cbiAgY29kZVNpZ24/OiBJQ29kZVNpZ25pbmdDZXJ0aWZpY2F0ZTtcblxuICAvKipcbiAgICogVGhlIGJ1aWxkIGltYWdlIHRvIGRvIHRoZSBwdWJsaXNoaW5nIGluXG4gICAqXG4gICAqIE5lZWRzIHRvIGhhdmUgTnVHZXQgcHJlaW5zdGFsbGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBMYXRlc3Qgc3VwZXJjaGFpblxuICAgKi9cbiAgcmVhZG9ubHkgYnVpbGRJbWFnZT86IGNidWlsZC5JQnVpbGRJbWFnZTtcbn1cblxuLyoqXG4gKiBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcHVibGlzaCBhbGwgcGFja2FnZXMgaW4gYSByZWxlYXNlIGJ1bmRsZSB0byBOdUdldFxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvTnVHZXRQcm9qZWN0IGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb051R2V0UHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBlbnZpcm9ubWVudDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHsgfTtcblxuICAgIGVudmlyb25tZW50LkZPUl9SRUFMID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBpZiAocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuYXNzdW1lUm9sZUFybikge1xuICAgICAgZW52aXJvbm1lbnQuTlVHRVRfUk9MRV9BUk4gPSBwcm9wcy5udWdldEFwaUtleVNlY3JldC5hc3N1bWVSb2xlQXJuO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5udWdldEFwaUtleVNlY3JldC5yZWdpb24pIHtcbiAgICAgIGVudmlyb25tZW50Lk5VR0VUX1NFQ1JFVF9SRUdJT04gPSBwcm9wcy5udWdldEFwaUtleVNlY3JldC5yZWdpb247XG4gICAgfSBlbHNlIHtcbiAgICAgIGVudmlyb25tZW50Lk5VR0VUX1NFQ1JFVF9SRUdJT04gPSBTdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgfVxuXG4gICAgZW52aXJvbm1lbnQuTlVHRVRfU0VDUkVUX0lEID0gcHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuc2VjcmV0QXJuO1xuXG4gICAgaWYgKHByb3BzLmNvZGVTaWduKSB7XG4gICAgICBlbnZpcm9ubWVudC5DT0RFX1NJR05JTkdfU0VDUkVUX0lEID0gcHJvcHMuY29kZVNpZ24uY3JlZGVudGlhbC5zZWNyZXRBcm47XG4gICAgICBlbnZpcm9ubWVudC5DT0RFX1NJR05JTkdfUEFSQU1FVEVSX05BTUUgPSBwcm9wcy5jb2RlU2lnbi5wcmluY2lwYWwucGFyYW1ldGVyTmFtZTtcbiAgICB9XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKHByb3BzLmJ1aWxkSW1hZ2UgPz8gY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoJ2pzaWkvc3VwZXJjaGFpbicpKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnbnVnZXQnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50LFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBpZiAocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuYXNzdW1lUm9sZUFybikge1xuICAgICAgICBwZXJtaXNzaW9ucy5ncmFudEFzc3VtZVJvbGUocHJvcHMubnVnZXRBcGlLZXlTZWNyZXQuYXNzdW1lUm9sZUFybiwgc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLm51Z2V0QXBpS2V5U2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wcy5jb2RlU2lnbikge1xuICAgICAgICBwcm9wcy5jb2RlU2lnbi5ncmFudERlY3J5cHQoc2hlbGxhYmxlLnJvbGUpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hEb2NzVG9HaXRIdWJQcm9qZWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gcHVibGlzaCB0b1xuICAgKi9cbiAgZ2l0aHViUmVwbzogV3JpdGFibGVHaXRIdWJSZXBvO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGJ1aWxkIG1hbmlmZXN0IEpTT04gZmlsZSAobXVzdCBpbmNsdWRlIFwibmFtZVwiIGFuZCBcInZlcnNpb25cIiBmaWVsZHMpLlxuICAgKiBSZWxhdGl2ZSB0byB0aGUgYXJ0aWZhY3RzIHJvb3QuXG4gICAqIEBkZWZhdWx0IFwiLi9idWlsZC5qc29uXCJcbiAgICovXG4gIGJ1aWxkTWFuaWZlc3RGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogR2l0SHViIFBhZ2VzIGJyYW5jaCB0byBwdXNoIHRvLlxuICAgKiBAZGVmYXVsdCBnaC1wYWdlc1xuICAgKi9cbiAgYnJhbmNoPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvZGVCdWlsZCBwcm9qZWN0IHRoYXQgd2lsbCBwdWJsaXNoIGFsbCBwYWNrYWdlcyBpbiBhIHJlbGVhc2UgYnVuZGxlIHRvIE51R2V0XG4gKi9cbmV4cG9ydCBjbGFzcyBQdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdCBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElQdWJsaXNoZXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoRG9jc1RvR2l0SHViUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuVUJVTlRVXzE0XzA0X05PREVKU18xMF8xXzApLFxuICAgICAgc2NyaXB0RGlyZWN0b3J5OiBwYXRoLmpvaW4oX19kaXJuYW1lLCAncHVibGlzaGluZycsICdkb2NzJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICAvLyBNdXN0IGJlIFNTSCBiZWNhdXNlIHdlIHVzZSBhbiBTU0gga2V5IHRvIGF1dGhlbnRpY2F0ZVxuICAgICAgICBHSVRIVUJfUkVQTzogcHJvcHMuZ2l0aHViUmVwby5yZXBvc2l0b3J5VXJsU3NoLFxuICAgICAgICBHSVRIVUJfUEFHRVNfQlJBTkNIOiBwcm9wcy5icmFuY2ggfHwgJ2doLXBhZ2VzJyxcbiAgICAgICAgU1NIX0tFWV9TRUNSRVQ6IHByb3BzLmdpdGh1YlJlcG8uc3NoS2V5U2VjcmV0LnNlY3JldEFybixcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICAgIENPTU1JVF9VU0VSTkFNRTogcHJvcHMuZ2l0aHViUmVwby5jb21taXRVc2VybmFtZSxcbiAgICAgICAgQ09NTUlUX0VNQUlMOiBwcm9wcy5naXRodWJSZXBvLmNvbW1pdEVtYWlsLFxuICAgICAgICBCVUlMRF9NQU5JRkVTVDogcHJvcHMuYnVpbGRNYW5pZmVzdEZpbGVOYW1lIHx8ICcuL2J1aWxkLmpzb24nLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGlmIChzaGVsbGFibGUucm9sZSkge1xuICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHByb3BzLmdpdGh1YlJlcG8uc3NoS2V5U2VjcmV0LCBzaGVsbGFibGUucm9sZSk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID0gc2hlbGxhYmxlLnJvbGU7XG4gICAgdGhpcy5wcm9qZWN0ID0gc2hlbGxhYmxlLnByb2plY3Q7XG4gIH1cblxuICBwdWJsaWMgYWRkVG9QaXBlbGluZShzdGFnZTogY3BpcGVsaW5lLklTdGFnZSwgaWQ6IHN0cmluZywgb3B0aW9uczogQWRkVG9QaXBlbGluZU9wdGlvbnMpOiB2b2lkIHtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBpZCxcbiAgICAgIGlucHV0OiBvcHRpb25zLmlucHV0QXJ0aWZhY3QgfHwgbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgpLFxuICAgICAgcnVuT3JkZXI6IG9wdGlvbnMucnVuT3JkZXIsXG4gICAgICBwcm9qZWN0OiB0aGlzLnByb2plY3QsXG4gICAgfSkpO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUHVibGlzaFRvR2l0SHViUHJvcHMge1xuICAvKipcbiAgICogSWYgYHRydWVgIChkZWZhdWx0KSB3aWxsIG9ubHkgcGVyZm9ybSBhIGRyeS1ydW4gYnV0IHdpbGwgbm90IGFjdHVhbGx5IHB1Ymxpc2guXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSByZXBvc2l0b3J5IHRvIGNyZWF0ZSBhIHJlbGVhc2UgaW4uXG4gICAqL1xuICBnaXRodWJSZXBvOiBXcml0YWJsZUdpdEh1YlJlcG87XG5cbiAgLyoqXG4gICAqIFRoZSBzaWduaWduIGtleSB0byB1c2UgdG8gY3JlYXRlIGEgR1BHIHNpZ25hdHVyZSBvZiB0aGUgYXJ0aWZhY3QuXG4gICAqL1xuICBzaWduaW5nS2V5OiBPcGVuUEdQS2V5UGFpcjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGJ1aWxkIG1hbmlmZXN0IEpTT04gZmlsZSAobXVzdCBpbmNsdWRlIFwibmFtZVwiIGFuZCBcInZlcnNpb25cIiBmaWVsZHMpLlxuICAgKiBSZWxhdGl2ZSB0byB0aGUgYXJ0aWZhY3RzIHJvb3QuXG4gICAqIEBkZWZhdWx0IFwiLi9idWlsZC5qc29uXCJcbiAgICovXG4gIGJ1aWxkTWFuaWZlc3RGaWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNoYW5nZWxvZyBtYXJrZG93biBmaWxlLCB1c2VkIHRvIGNyZWF0ZSByZWxlYXNlIG5vdGVzLlxuICAgKiBSZWxhdGl2ZSB0byB0aGUgYXJ0aWZhY3RzIHJvb3QuXG4gICAqIEBkZWZhdWx0IFwiLi9DSEFOR0VMT0cubWRcIlxuICAgKi9cbiAgY2hhbmdlbG9nRmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByZWxlYXNlIG5vdGVzIGZpbGUsIGNvbnRhaW5pbmcgdGhlIGNvbXBsZXRlZCByZWxlYXNlIG5vdGVzXG4gICAqIGZvciB0aGUgY3VycmVudCByZWxlYXNlLlxuICAgKiBSZWxhdGl2ZSB0byB0aGUgYXJ0aWZhY3RzIHJvb3QuXG4gICAqIE5PVEUgLSBJZiB0aGlzIHZhbHVlIGlzIHNldCBhbmQgcG9pbnRzIHRvIGEgdmFsaWQgZmlsZSwgdGhlIGZpbGUgaW4gaXRzIGVudGlyZXR5XG4gICAqIHdpbGwgYmUgcmVhZCBhbmQgdXNlZCBmb3IgdGhlIHJlbGVhc2Ugbm90ZXMuIFRoZSB2YWx1ZSBvZiBgY2hhbmdlbG9nRmlsZU5hbWVgIHdpbGxcbiAgICogYmUgaWdub3JlZC5cbiAgICogQGRlZmF1bHQgXCIuL1JFTEVBU0VfTk9URVMubWRcIlxuICAgKi9cbiAgcmVsZWFzZU5vdGVzRmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgaW5wdXQgYXJ0aWZhY3RzIHRvIHB1Ymxpc2ggYmluYXJpZXMgZnJvbSB0byBHaXRIdWIgcmVsZWFzZVxuICAgKi9cbiAgYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzPzogY3BpcGVsaW5lLkFydGlmYWN0W107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2lnbiB0aGUgYWRkaXRpb25hbCBhcnRpZmFjdHNcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgc2lnbkFkZGl0aW9uYWxBcnRpZmFjdHM/OiBib29sZWFuO1xufVxuXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvR2l0SHViIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlOiBpYW0uSVJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHJpdmF0ZSByZWFkb25seSBhZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM/OiBjcGlwZWxpbmUuQXJ0aWZhY3RbXTtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb0dpdEh1YlByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBmb3JSZWFsID0gcHJvcHMuZHJ5UnVuID09PSB1bmRlZmluZWQgPyAnZmFsc2UnIDogKCFwcm9wcy5kcnlSdW4pLnRvU3RyaW5nKCk7XG4gICAgdGhpcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMgPSBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHM7XG5cbiAgICAvLyBUaGUgcmVsZWFzZSBub3RlcywgaWYgc2V0IGFuZCBhIHZhbGlkIGZpbGUsIG92ZXJyaWRlcyBhbnkgdXNhZ2VzIG9mIHRoZSBjaGFuZ2Vsb2cuXG4gICAgaWYgKHByb3BzLmNoYW5nZWxvZ0ZpbGVOYW1lICYmIHByb3BzLnJlbGVhc2VOb3Rlc0ZpbGVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JvdGggYHJlbGVhc2VOb3Rlc0ZpbGVOYW1lYCBhbmQgYGNoYW5nZWxvZ0ZpbGVOYW1lYCBjYW5ub3QgYmUgc3BlY2lmaWVkOyB1c2Ugb25lIG9yIHRoZSBvdGhlcicpO1xuICAgIH1cblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5VQlVOVFVfMTRfMDRfTk9ERUpTXzEwXzFfMCksXG4gICAgICBzY3JpcHREaXJlY3Rvcnk6IHBhdGguam9pbihfX2Rpcm5hbWUsICdwdWJsaXNoaW5nJywgJ2dpdGh1YicpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IG5vVW5kZWZpbmVkKHtcbiAgICAgICAgQlVJTERfTUFOSUZFU1Q6IHByb3BzLmJ1aWxkTWFuaWZlc3RGaWxlTmFtZSB8fCAnLi9idWlsZC5qc29uJyxcbiAgICAgICAgQ0hBTkdFTE9HOiBwcm9wcy5jaGFuZ2Vsb2dGaWxlTmFtZSB8fCAnLi9DSEFOR0VMT0cubWQnLFxuICAgICAgICBSRUxFQVNFX05PVEVTOiBwcm9wcy5yZWxlYXNlTm90ZXNGaWxlTmFtZSB8fCAnLi9SRUxFQVNFX05PVEVTLm1kJyxcbiAgICAgICAgU0lHTklOR19LRVlfQVJOOiBwcm9wcy5zaWduaW5nS2V5LmNyZWRlbnRpYWwuc2VjcmV0QXJuLFxuICAgICAgICBHSVRIVUJfT1dORVI6IHByb3BzLmdpdGh1YlJlcG8ub3duZXIsXG4gICAgICAgIEdJVEhVQl9SRVBPOiBwcm9wcy5naXRodWJSZXBvLnJlcG8sXG4gICAgICAgIEZPUl9SRUFMOiBmb3JSZWFsLFxuICAgICAgICAvLyBUcmFuc21pdCB0aGUgbmFtZXMgb2YgdGhlIHNlY29uZGFyeSBzb3VyY2VzIHRvIHRoZSBzaGVsbCBzY3JpcHQgKGZvciBlYXNpZXIgaXRlcmF0aW9uKVxuICAgICAgICBTRUNPTkRBUllfU09VUkNFX05BTUVTOiBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMgPyBwcm9wcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMubWFwKGEgPT4gYS5hcnRpZmFjdE5hbWUpLmpvaW4oJyAnKSA6IHVuZGVmaW5lZCxcbiAgICAgICAgU0lHTl9BRERJVElPTkFMX0FSVElGQUNUUzogcHJvcHMuYWRkaXRpb25hbElucHV0QXJ0aWZhY3RzICYmIHByb3BzLnNpZ25BZGRpdGlvbmFsQXJ0aWZhY3RzICE9PSBmYWxzZSA/ICd0cnVlJyA6IHVuZGVmaW5lZCxcbiAgICAgIH0pLFxuICAgICAgZW52aXJvbm1lbnRTZWNyZXRzOiB7XG4gICAgICAgIEdJVEhVQl9UT0tFTjogcHJvcHMuZ2l0aHViUmVwby50b2tlblNlY3JldEFybixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBhbGxvdyBzY3JpcHQgdG8gcmVhZCB0aGUgc2lnbmluZyBrZXlcbiAgICBpZiAoc2hlbGxhYmxlLnJvbGUpIHtcbiAgICAgIHByb3BzLnNpZ25pbmdLZXkuZ3JhbnRSZWFkKHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBleHRyYUlucHV0czogdGhpcy5hZGRpdGlvbmFsSW5wdXRBcnRpZmFjdHMsXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9TM1Byb3BzIHtcbiAgYnVja2V0OiBzMy5JQnVja2V0O1xuXG4gIC8qKlxuICAgKiBNYWtlIGZpbGVzIHB1YmxpY2x5IHJlYWRhYmxlXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwdWJsaWM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb1MzIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSVB1Ymxpc2hlciB7XG4gIHB1YmxpYyByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLlByb2plY3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFB1Ymxpc2hUb1MzUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZm9yUmVhbCA9IHByb3BzLmRyeVJ1biA9PT0gdW5kZWZpbmVkID8gJ2ZhbHNlJyA6ICghcHJvcHMuZHJ5UnVuKS50b1N0cmluZygpO1xuXG4gICAgY29uc3Qgc2hlbGxhYmxlID0gbmV3IFNoZWxsYWJsZSh0aGlzLCAnRGVmYXVsdCcsIHtcbiAgICAgIHBsYXRmb3JtOiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlVCVU5UVV8xNF8wNF9OT0RFSlNfOF8xMV8wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnczMnKSxcbiAgICAgIGVudHJ5cG9pbnQ6ICdwdWJsaXNoLnNoJyxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIEJVQ0tFVF9VUkw6IGBzMzovLyR7cHJvcHMuYnVja2V0LmJ1Y2tldE5hbWV9YCxcbiAgICAgICAgQ0hBTkdFTE9HOiBwcm9wcy5wdWJsaWMgPyAndHJ1ZScgOiAnZmFsc2UnLFxuICAgICAgICBGT1JfUkVBTDogZm9yUmVhbCxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvLyBBbGxvdyBzY3JpcHQgdG8gd3JpdGUgdG8gYnVja2V0XG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwcm9wcy5idWNrZXQuZ3JhbnRSZWFkV3JpdGUoc2hlbGxhYmxlLnJvbGUpO1xuICAgIH1cblxuICAgIHRoaXMucm9sZSA9IHNoZWxsYWJsZS5yb2xlO1xuICAgIHRoaXMucHJvamVjdCA9IHNoZWxsYWJsZS5wcm9qZWN0O1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIGlkOiBzdHJpbmcsIG9wdGlvbnM6IEFkZFRvUGlwZWxpbmVPcHRpb25zKTogdm9pZCB7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQnVpbGRBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogaWQsXG4gICAgICBpbnB1dDogb3B0aW9ucy5pbnB1dEFydGlmYWN0IHx8IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoKSxcbiAgICAgIHJ1bk9yZGVyOiBvcHRpb25zLnJ1bk9yZGVyLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgIH0pKTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFB1Ymxpc2hUb1B5UGlQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgUHlQSSBjcmVkZW50aWFscyB1bmRlclxuICAgKiBcInVzZXJuYW1lXCIgYW5kIFwicGFzc3dvcmRcIiBrZXlzLlxuICAgKi9cbiAgbG9naW5TZWNyZXQ6IHBlcm1pc3Npb25zLkV4dGVybmFsU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAgKGRlZmF1bHQpIHdpbGwgb25seSBwZXJmb3JtIGEgZHJ5LXJ1biBidXQgd2lsbCBub3QgYWN0dWFsbHkgcHVibGlzaC5cbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgZHJ5UnVuPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNsYXNzIFB1Ymxpc2hUb1B5UGkgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUHVibGlzaFRvUHlQaVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGZvclJlYWwgPSBwcm9wcy5kcnlSdW4gPT09IHVuZGVmaW5lZCA/ICdmYWxzZScgOiAoIXByb3BzLmRyeVJ1bikudG9TdHJpbmcoKTtcblxuICAgIGNvbnN0IHNoZWxsYWJsZSA9IG5ldyBTaGVsbGFibGUodGhpcywgJ0RlZmF1bHQnLCB7XG4gICAgICBwbGF0Zm9ybTogbmV3IExpbnV4UGxhdGZvcm0oY2J1aWxkLkxpbnV4QnVpbGRJbWFnZS5VQlVOVFVfMTRfMDRfUFlUSE9OXzNfNl81KSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAncHlwaScpLFxuICAgICAgZW50cnlwb2ludDogJ3B1Ymxpc2guc2gnLFxuICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgRk9SX1JFQUw6IGZvclJlYWwsXG4gICAgICAgIFBZUElfQ1JFREVOVElBTFNfU0VDUkVUX0lEOiBwcm9wcy5sb2dpblNlY3JldC5zZWNyZXRBcm4sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMubG9naW5TZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wcyBmb3IgR28gcHVibGlzaGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBQdWJsaXNoVG9Hb2xhbmdQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIG9mIHRoZSBzZWNyZXQgdGhhdCBjb250YWlucyB0aGUgR2l0SHViIHBlcnNvbmFsIGFjY2VzcyB0b2tlblxuICAgKiB1c2VkIHRvIHB1c2ggdGhlIGdvIGNvZGUgdG8gdGhlIGdpdGh1YiByZXBvc2l0b3J5IGRlZmluZWQgYnkgaXQncyBuYW1lLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5naXRodWIuY29tL2VuL2dpdGh1Yi9hdXRoZW50aWNhdGluZy10by1naXRodWIvY3JlYXRpbmctYS1wZXJzb25hbC1hY2Nlc3MtdG9rZW5cbiAgICovXG4gIHJlYWRvbmx5IGdpdGh1YlRva2VuU2VjcmV0OiBwZXJtaXNzaW9ucy5FeHRlcm5hbFNlY3JldDtcblxuICAvKipcbiAgICogVXNlcm5hbWUgdG8gcGVyZm9ybSB0aGUgY29tbWl0IHdpdGguXG4gICAqL1xuICByZWFkb25seSBnaXRVc2VyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCB0byBwZXJmb3JtIHRoZSBjb21taXQgd2l0aC5cbiAgICovXG4gIHJlYWRvbmx5IGdpdFVzZXJFbWFpbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gXCJ0cnVlXCIgZm9yIGEgZHJ5IHJ1bi5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGRyeVJ1bj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1vZHVsZSB2ZXJzaW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERlZmF1bHRzIHRvIHRoZSB2YWx1ZSBpbiB0aGUgJ3ZlcnNpb24nIGZpbGUgb2YgdGhlIG1vZHVsZVxuICAgKiBkaXJlY3RvcnkuIEZhaWxzIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCcmFuY2ggdG8gcHVzaCB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgXCJtYWluXCJcbiAgICovXG4gIHJlYWRvbmx5IGdpdEJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbW1pdCBtZXNzYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBcImNob3JlKHJlbGVhc2UpOiAkVkVSU0lPTlwiXG4gICAqL1xuICByZWFkb25seSBnaXRDb21taXRNZXNzYWdlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFB1c2hlcyBhIGRpcmVjdG9yeSBvZiBnb2xhbmcgbW9kdWxlcyB0byBhIEdpdEh1YiByZXBvc2l0b3J5LlxuICovXG5leHBvcnQgY2xhc3MgUHVibGlzaFRvR29sYW5nIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBQdWJsaXNoVG9Hb2xhbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBkcnlSdW4gPSBwcm9wcy5kcnlSdW4gPz8gZmFsc2U7XG5cbiAgICBjb25zdCBzaGVsbGFibGUgPSBuZXcgU2hlbGxhYmxlKHRoaXMsICdEZWZhdWx0Jywge1xuICAgICAgcGxhdGZvcm06IG5ldyBMaW51eFBsYXRmb3JtKGNidWlsZC5MaW51eEJ1aWxkSW1hZ2UuU1RBTkRBUkRfNV8wKSxcbiAgICAgIHNjcmlwdERpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgJ3B1Ymxpc2hpbmcnLCAnZ29sYW5nJyksXG4gICAgICBlbnRyeXBvaW50OiAncHVibGlzaC5zaCcsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBEUllSVU46IGRyeVJ1biA/ICd0cnVlJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgR0lUSFVCX1RPS0VOX1NFQ1JFVDogcHJvcHMuZ2l0aHViVG9rZW5TZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgICBWRVJTSU9OOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgICBHSVRfQlJBTkNIOiBwcm9wcy5naXRCcmFuY2gsXG4gICAgICAgIEdJVF9VU0VSX05BTUU6IHByb3BzLmdpdFVzZXJOYW1lLFxuICAgICAgICBHSVRfVVNFUl9FTUFJTDogcHJvcHMuZ2l0VXNlckVtYWlsLFxuICAgICAgICBHSVRfQ09NTUlUX01FU1NBR0U6IHByb3BzLmdpdENvbW1pdE1lc3NhZ2UsXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgaWYgKHNoZWxsYWJsZS5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQocHJvcHMuZ2l0aHViVG9rZW5TZWNyZXQsIHNoZWxsYWJsZS5yb2xlKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBzaGVsbGFibGUucm9sZTtcbiAgICB0aGlzLnByb2plY3QgPSBzaGVsbGFibGUucHJvamVjdDtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1BpcGVsaW5lKHN0YWdlOiBjcGlwZWxpbmUuSVN0YWdlLCBpZDogc3RyaW5nLCBvcHRpb25zOiBBZGRUb1BpcGVsaW5lT3B0aW9ucyk6IHZvaWQge1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6IGlkLFxuICAgICAgaW5wdXQ6IG9wdGlvbnMuaW5wdXRBcnRpZmFjdCB8fCBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCksXG4gICAgICBydW5PcmRlcjogb3B0aW9ucy5ydW5PcmRlcixcbiAgICAgIHByb2plY3Q6IHRoaXMucHJvamVjdCxcbiAgICB9KSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,7 +1,26 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  Object.defineProperty(exports, "__esModule", { value: true });
3
22
  exports.AutoBump = void 0;
4
- const cdk = require("monocdk");
23
+ const cdk = __importStar(require("monocdk"));
5
24
  const pr_1 = require("./pr");
6
25
  class AutoBump extends cdk.Construct {
7
26
  constructor(parent, id, props) {
@@ -32,4 +51,4 @@ class AutoBump extends cdk.Construct {
32
51
  }
33
52
  }
34
53
  exports.AutoBump = AutoBump;
35
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1bXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBRS9CLDZCQUErRDtBQThFL0QsTUFBYSxRQUFTLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFPekMsWUFBWSxNQUFxQixFQUFFLEVBQVUsRUFBRSxLQUFvQjs7UUFDakUsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsQixNQUFNLFVBQVUsR0FBRyxNQUFBLE1BQUEsS0FBSyxDQUFDLElBQUksMENBQUUsSUFBSSxtQ0FBSSxlQUFlLENBQUM7UUFDdkQsTUFBTSxVQUFVLEdBQUcsTUFBQSxNQUFBLEtBQUssQ0FBQyxJQUFJLDBDQUFFLElBQUksbUNBQUksUUFBUSxDQUFDO1FBQ2hELE1BQU0sV0FBVyxHQUFHLE1BQUEsS0FBSyxDQUFDLFdBQVcsbUNBQUksbUJBQW1CLENBQUM7UUFDN0QsTUFBTSxjQUFjLEdBQUcsTUFBQSxLQUFLLENBQUMsY0FBYyxtQ0FBSSxjQUFjLENBQUM7UUFDOUQsTUFBTSxLQUFLLEdBQUcsTUFBQSxLQUFLLENBQUMsS0FBSyxtQ0FBSSwwQkFBMEIsQ0FBQztRQUN4RCxNQUFNLElBQUksR0FBRyxNQUFBLEtBQUssQ0FBQyxJQUFJLG1DQUFJLHNDQUFzQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxVQUFVLGdCQUFnQixDQUFDO1FBRXhJLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxvQkFBZSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUNyRCxHQUFHLEtBQUs7WUFDUixJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLE1BQU0sRUFBRSxNQUFBLEtBQUssQ0FBQyxJQUFJLDBDQUFFLE1BQU07YUFDM0I7WUFDRCxLQUFLO1lBQ0wsSUFBSTtZQUNKLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQztZQUN2QixPQUFPLEVBQUU7Z0JBQ1AsR0FBRyxLQUFLLENBQUMsT0FBTztnQkFDaEIsT0FBTyxFQUFFLGNBQWM7YUFDeEI7WUFDRCxvQ0FBb0M7WUFDcEMsU0FBUyxFQUFFLDhCQUE4QixVQUFVLEVBQUU7U0FDdEQsQ0FBQyxDQUFDO0lBRUwsQ0FBQztDQUNGO0FBbkNELDRCQW1DQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdtb25vY2RrJztcbmltcG9ydCB7IFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4uL3JlcG8nO1xuaW1wb3J0IHsgQXV0b1B1bGxSZXF1ZXN0LCBBdXRvUHVsbFJlcXVlc3RPcHRpb25zIH0gZnJvbSAnLi9wcic7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgdGhlIGhlYWQgYnJhbmNoIG9mIHRoZSBidW1wIFBSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9CdW1wSGVhZCB7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIGJyYW5jaC4gV2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAqXG4gICAqICRWRVJTSU9OIHdpbGwgYmUgc3Vic3RpdHV0ZWQgYnkgdGhlIGN1cnJlbnQgdmVyc2lvbiAob2J0YWluZWQgYnkgZXhlY3V0aW5nIGB2ZXJzaW9uQ29tbWFuZGApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnYnVtcC8kVkVSU0lPTidcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBzZWUgJ3NvdXJjZScgcHJvcGVydHkgaW4gQXV0b1B1bGxSZXF1ZXN0LkhlYWRcbiAgICovXG4gIHJlYWRvbmx5IHNvdXJjZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyBhbiBBdXRvIEJ1bXAgcHJvamVjdC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvQnVtcFByb3BzIGV4dGVuZHMgQXV0b1B1bGxSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSB0byBjcmVhdGUgYSBQUiBpbi5cbiAgICovXG4gIHJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogVGhlIGNvbW1hbmQgdG8gZXhlY3V0ZSBpbiBvcmRlciB0byBidW1wIHRoZSByZXBvLlxuICAgKlxuICAgKiBUaGUgYnVtcCBjb21tYW5kIGlzIHJlc3BvbnNpYmxlIHRvIGJ1bXAgYW55IHZlcnNpb24gbWV0YWRhdGEsIHVwZGF0ZVxuICAgKiBDSEFOR0VMT0cgYW5kIGNvbW1pdCB0aGlzIHRvIHRoZSByZXBvc2l0b3J5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnL2Jpbi9iYXNoIC4vYnVtcC5zaCdcbiAgICovXG4gIGJ1bXBDb21tYW5kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgdmVyc2lvbi5cbiAgICpcbiAgICogVGhpcyBpcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGJlIHVzZWQgdG8gZXZhbHVhdGUgJFZFUlNJT04uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdnaXQgZGVzY3JpYmUnICh0aGUgbGF0ZXN0IGdpdCB0YWcgd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgY3VycmVudCB2ZXJzaW9uKVxuICAgKi9cbiAgdmVyc2lvbkNvbW1hbmQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRpdGxlIG9mIHRoZSBQUi5cbiAgICpcbiAgICogJFZFUlNJT04gd2lsbCBiZSBzdWJzdGl0dXRlZCBieSB0aGUgY3VycmVudCB2ZXJzaW9uIChvYnRhaW5lZCBieSBleGVjdXRpbmcgYHZlcnNpb25Db21tYW5kYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0JyBjaG9yZShyZWxlYXNlKTogJFZFUlNJT04nXG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQm9keSBvZiB0aGUgUFIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdTZWUgW0NIQU5HRUxPR10oaHR0cHM6Ly9naXRodWIuY29tLyR7cHJvcHMucmVwby5vd25lcn0vJHtwcm9wcy5yZXBvLnJlcG99L2Jsb2IvJHtoZWFkfS9DSEFOR0VMT0cubWQpJ1xuICAgKiAoTGluayB0byB0aGUgQ0hBTkdFTE9HIGZpbGUgb2YgdGhlIGhlYWQgYnJhbmNoKVxuICAgKi9cbiAgYm9keT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGhlYWQgYnJhbmNoIG9mIHRoZSBQUi5cbiAgICpcbiAgICogJFZFUlNJT04gd2lsbCBiZSBzdWJzdGl0dXRlZCBieSB0aGUgY3VycmVudCB2ZXJzaW9uIChvYnRhaW5lZCBieSBleGVjdXRpbmcgYHZlcnNpb25Db21tYW5kYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gV2lsIGJlIGNyZWF0ZWQgZnJvbSBtYXN0ZXIgYW5kIG5hbWVkICdidW1wLyRWRVJTSU9OJ1xuICAgKi9cbiAgaGVhZD86IEF1dG9CdW1wSGVhZDtcblxufVxuXG5leHBvcnQgY2xhc3MgQXV0b0J1bXAgZXh0ZW5kcyBjZGsuQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgQXV0b1B1bGxSZXF1ZXN0IGNvbnN0cnVjdC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcjogQXV0b1B1bGxSZXF1ZXN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF1dG9CdW1wUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIGNvbnN0IGJyYW5jaE5hbWUgPSBwcm9wcy5oZWFkPy5uYW1lID8/ICdidW1wLyRWRVJTSU9OJztcbiAgICBjb25zdCBiYXNlQnJhbmNoID0gcHJvcHMuYmFzZT8ubmFtZSA/PyAnbWFzdGVyJztcbiAgICBjb25zdCBidW1wQ29tbWFuZCA9IHByb3BzLmJ1bXBDb21tYW5kID8/ICcvYmluL3NoIC4vYnVtcC5zaCc7XG4gICAgY29uc3QgdmVyc2lvbkNvbW1hbmQgPSBwcm9wcy52ZXJzaW9uQ29tbWFuZCA/PyAnZ2l0IGRlc2NyaWJlJztcbiAgICBjb25zdCB0aXRsZSA9IHByb3BzLnRpdGxlID8/ICdjaG9yZShyZWxlYXNlKTogJFZFUlNJT04nO1xuICAgIGNvbnN0IGJvZHkgPSBwcm9wcy5ib2R5ID8/IGBTZWUgW0NIQU5HRUxPR10oaHR0cHM6Ly9naXRodWIuY29tLyR7cHJvcHMucmVwby5vd25lcn0vJHtwcm9wcy5yZXBvLnJlcG99L2Jsb2IvJHticmFuY2hOYW1lfS9DSEFOR0VMT0cubWQpYDtcblxuICAgIHRoaXMucHIgPSBuZXcgQXV0b1B1bGxSZXF1ZXN0KHRoaXMsICdBdXRvUHVsbFJlcXVlc3QnLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGhlYWQ6IHtcbiAgICAgICAgbmFtZTogYnJhbmNoTmFtZSxcbiAgICAgICAgc291cmNlOiBwcm9wcy5oZWFkPy5zb3VyY2UsXG4gICAgICB9LFxuICAgICAgdGl0bGUsXG4gICAgICBib2R5LFxuICAgICAgY29tbWFuZHM6IFtidW1wQ29tbWFuZF0sXG4gICAgICBleHBvcnRzOiB7XG4gICAgICAgIC4uLnByb3BzLmV4cG9ydHMsXG4gICAgICAgIFZFUlNJT046IHZlcnNpb25Db21tYW5kLFxuICAgICAgfSxcbiAgICAgIC8vIGNoZWNrIGlmIGJhc2UgaXMgYWxyZWFkeSByZWxlYXNlZFxuICAgICAgY29uZGl0aW9uOiBgZ2l0IGRlc2NyaWJlIC0tZXhhY3QtbWF0Y2ggJHtiYXNlQnJhbmNofWAsXG4gICAgfSk7XG5cbiAgfVxufVxuIl19
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVtcC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImJ1bXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUUvQiw2QkFBK0Q7QUE4RS9ELE1BQWEsUUFBUyxTQUFRLEdBQUcsQ0FBQyxTQUFTO0lBT3pDLFlBQVksTUFBcUIsRUFBRSxFQUFVLEVBQUUsS0FBb0I7O1FBQ2pFLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEIsTUFBTSxVQUFVLEdBQUcsTUFBQSxNQUFBLEtBQUssQ0FBQyxJQUFJLDBDQUFFLElBQUksbUNBQUksZUFBZSxDQUFDO1FBQ3ZELE1BQU0sVUFBVSxHQUFHLE1BQUEsTUFBQSxLQUFLLENBQUMsSUFBSSwwQ0FBRSxJQUFJLG1DQUFJLFFBQVEsQ0FBQztRQUNoRCxNQUFNLFdBQVcsR0FBRyxNQUFBLEtBQUssQ0FBQyxXQUFXLG1DQUFJLG1CQUFtQixDQUFDO1FBQzdELE1BQU0sY0FBYyxHQUFHLE1BQUEsS0FBSyxDQUFDLGNBQWMsbUNBQUksY0FBYyxDQUFDO1FBQzlELE1BQU0sS0FBSyxHQUFHLE1BQUEsS0FBSyxDQUFDLEtBQUssbUNBQUksMEJBQTBCLENBQUM7UUFDeEQsTUFBTSxJQUFJLEdBQUcsTUFBQSxLQUFLLENBQUMsSUFBSSxtQ0FBSSxzQ0FBc0MsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLFNBQVMsVUFBVSxnQkFBZ0IsQ0FBQztRQUV4SSxJQUFJLENBQUMsRUFBRSxHQUFHLElBQUksb0JBQWUsQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDckQsR0FBRyxLQUFLO1lBQ1IsSUFBSSxFQUFFO2dCQUNKLElBQUksRUFBRSxVQUFVO2dCQUNoQixNQUFNLEVBQUUsTUFBQSxLQUFLLENBQUMsSUFBSSwwQ0FBRSxNQUFNO2FBQzNCO1lBQ0QsS0FBSztZQUNMLElBQUk7WUFDSixRQUFRLEVBQUUsQ0FBQyxXQUFXLENBQUM7WUFDdkIsT0FBTyxFQUFFO2dCQUNQLEdBQUcsS0FBSyxDQUFDLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxjQUFjO2FBQ3hCO1lBQ0Qsb0NBQW9DO1lBQ3BDLFNBQVMsRUFBRSw4QkFBOEIsVUFBVSxFQUFFO1NBQ3RELENBQUMsQ0FBQztJQUVMLENBQUM7Q0FDRjtBQW5DRCw0QkFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnbW9ub2Nkayc7XG5pbXBvcnQgeyBXcml0YWJsZUdpdEh1YlJlcG8gfSBmcm9tICcuLi9yZXBvJztcbmltcG9ydCB7IEF1dG9QdWxsUmVxdWVzdCwgQXV0b1B1bGxSZXF1ZXN0T3B0aW9ucyB9IGZyb20gJy4vcHInO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBoZWFkIGJyYW5jaCBvZiB0aGUgYnVtcCBQUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvQnVtcEhlYWQge1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiBicmFuY2guIFdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgKlxuICAgKiAkVkVSU0lPTiB3aWxsIGJlIHN1YnN0aXR1dGVkIGJ5IHRoZSBjdXJyZW50IHZlcnNpb24gKG9idGFpbmVkIGJ5IGV4ZWN1dGluZyBgdmVyc2lvbkNvbW1hbmRgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2J1bXAvJFZFUlNJT04nXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2VlICdzb3VyY2UnIHByb3BlcnR5IGluIEF1dG9QdWxsUmVxdWVzdC5IZWFkXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgYW4gQXV0byBCdW1wIHByb2plY3QuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b0J1bXBQcm9wcyBleHRlbmRzIEF1dG9QdWxsUmVxdWVzdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gY3JlYXRlIGEgUFIgaW4uXG4gICAqL1xuICByZXBvOiBXcml0YWJsZUdpdEh1YlJlcG87XG5cbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kIHRvIGV4ZWN1dGUgaW4gb3JkZXIgdG8gYnVtcCB0aGUgcmVwby5cbiAgICpcbiAgICogVGhlIGJ1bXAgY29tbWFuZCBpcyByZXNwb25zaWJsZSB0byBidW1wIGFueSB2ZXJzaW9uIG1ldGFkYXRhLCB1cGRhdGVcbiAgICogQ0hBTkdFTE9HIGFuZCBjb21taXQgdGhpcyB0byB0aGUgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogQGRlZmF1bHQgJy9iaW4vYmFzaCAuL2J1bXAuc2gnXG4gICAqL1xuICBidW1wQ29tbWFuZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGNvbW1hbmQgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHZlcnNpb24uXG4gICAqXG4gICAqIFRoaXMgaXMgdGhlIHZhbHVlIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGV2YWx1YXRlICRWRVJTSU9OLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnZ2l0IGRlc2NyaWJlJyAodGhlIGxhdGVzdCBnaXQgdGFnIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgdmVyc2lvbilcbiAgICovXG4gIHZlcnNpb25Db21tYW5kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaXRsZSBvZiB0aGUgUFIuXG4gICAqXG4gICAqICRWRVJTSU9OIHdpbGwgYmUgc3Vic3RpdHV0ZWQgYnkgdGhlIGN1cnJlbnQgdmVyc2lvbiAob2J0YWluZWQgYnkgZXhlY3V0aW5nIGB2ZXJzaW9uQ29tbWFuZGApLlxuICAgKlxuICAgKiBAZGVmYXVsdCcgY2hvcmUocmVsZWFzZSk6ICRWRVJTSU9OJ1xuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJvZHkgb2YgdGhlIFBSLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnU2VlIFtDSEFOR0VMT0ddKGh0dHBzOi8vZ2l0aHViLmNvbS8ke3Byb3BzLnJlcG8ub3duZXJ9LyR7cHJvcHMucmVwby5yZXBvfS9ibG9iLyR7aGVhZH0vQ0hBTkdFTE9HLm1kKSdcbiAgICogKExpbmsgdG8gdGhlIENIQU5HRUxPRyBmaWxlIG9mIHRoZSBoZWFkIGJyYW5jaClcbiAgICovXG4gIGJvZHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkIGJyYW5jaCBvZiB0aGUgUFIuXG4gICAqXG4gICAqICRWRVJTSU9OIHdpbGwgYmUgc3Vic3RpdHV0ZWQgYnkgdGhlIGN1cnJlbnQgdmVyc2lvbiAob2J0YWluZWQgYnkgZXhlY3V0aW5nIGB2ZXJzaW9uQ29tbWFuZGApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFdpbCBiZSBjcmVhdGVkIGZyb20gbWFzdGVyIGFuZCBuYW1lZCAnYnVtcC8kVkVSU0lPTidcbiAgICovXG4gIGhlYWQ/OiBBdXRvQnVtcEhlYWQ7XG5cbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9CdW1wIGV4dGVuZHMgY2RrLkNvbnN0cnVjdCB7XG5cbiAgLyoqXG4gICAqIFRoZSB1bmRlcmx5aW5nIEF1dG9QdWxsUmVxdWVzdCBjb25zdHJ1Y3QuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHI6IEF1dG9QdWxsUmVxdWVzdDtcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IGNkay5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBdXRvQnVtcFByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCBicmFuY2hOYW1lID0gcHJvcHMuaGVhZD8ubmFtZSA/PyAnYnVtcC8kVkVSU0lPTic7XG4gICAgY29uc3QgYmFzZUJyYW5jaCA9IHByb3BzLmJhc2U/Lm5hbWUgPz8gJ21hc3Rlcic7XG4gICAgY29uc3QgYnVtcENvbW1hbmQgPSBwcm9wcy5idW1wQ29tbWFuZCA/PyAnL2Jpbi9zaCAuL2J1bXAuc2gnO1xuICAgIGNvbnN0IHZlcnNpb25Db21tYW5kID0gcHJvcHMudmVyc2lvbkNvbW1hbmQgPz8gJ2dpdCBkZXNjcmliZSc7XG4gICAgY29uc3QgdGl0bGUgPSBwcm9wcy50aXRsZSA/PyAnY2hvcmUocmVsZWFzZSk6ICRWRVJTSU9OJztcbiAgICBjb25zdCBib2R5ID0gcHJvcHMuYm9keSA/PyBgU2VlIFtDSEFOR0VMT0ddKGh0dHBzOi8vZ2l0aHViLmNvbS8ke3Byb3BzLnJlcG8ub3duZXJ9LyR7cHJvcHMucmVwby5yZXBvfS9ibG9iLyR7YnJhbmNoTmFtZX0vQ0hBTkdFTE9HLm1kKWA7XG5cbiAgICB0aGlzLnByID0gbmV3IEF1dG9QdWxsUmVxdWVzdCh0aGlzLCAnQXV0b1B1bGxSZXF1ZXN0Jywge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBoZWFkOiB7XG4gICAgICAgIG5hbWU6IGJyYW5jaE5hbWUsXG4gICAgICAgIHNvdXJjZTogcHJvcHMuaGVhZD8uc291cmNlLFxuICAgICAgfSxcbiAgICAgIHRpdGxlLFxuICAgICAgYm9keSxcbiAgICAgIGNvbW1hbmRzOiBbYnVtcENvbW1hbmRdLFxuICAgICAgZXhwb3J0czoge1xuICAgICAgICAuLi5wcm9wcy5leHBvcnRzLFxuICAgICAgICBWRVJTSU9OOiB2ZXJzaW9uQ29tbWFuZCxcbiAgICAgIH0sXG4gICAgICAvLyBjaGVjayBpZiBiYXNlIGlzIGFscmVhZHkgcmVsZWFzZWRcbiAgICAgIGNvbmRpdGlvbjogYGdpdCBkZXNjcmliZSAtLWV4YWN0LW1hdGNoICR7YmFzZUJyYW5jaH1gLFxuICAgIH0pO1xuXG4gIH1cbn1cbiJdfQ==
@@ -1,8 +1,27 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  Object.defineProperty(exports, "__esModule", { value: true });
3
22
  exports.AutoMergeBack = void 0;
4
- const cdk = require("monocdk");
5
- const pr = require("./pr");
23
+ const cdk = __importStar(require("monocdk"));
24
+ const pr = __importStar(require("./pr"));
6
25
  class AutoMergeBack extends cdk.Construct {
7
26
  constructor(parent, id, props) {
8
27
  var _a, _b, _c, _d, _e, _f;
@@ -27,4 +46,4 @@ class AutoMergeBack extends cdk.Construct {
27
46
  }
28
47
  }
29
48
  exports.AutoMergeBack = AutoMergeBack;
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtYmFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1lcmdlLWJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsK0JBQStCO0FBRS9CLDJCQUEyQjtBQW1HM0IsTUFBYSxhQUFjLFNBQVEsR0FBRyxDQUFDLFNBQVM7SUFPOUMsWUFBWSxNQUFxQixFQUFFLEVBQVUsRUFBRSxLQUF5Qjs7UUFDdEUsS0FBSyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVsQixNQUFNLGNBQWMsR0FBRyxNQUFBLEtBQUssQ0FBQyxjQUFjLG1DQUFJLGNBQWMsQ0FBQztRQUM5RCxNQUFNLFFBQVEsR0FBRyxNQUFBLE1BQUEsS0FBSyxDQUFDLElBQUksMENBQUUsSUFBSSxtQ0FBSSxxQkFBcUIsQ0FBQztRQUMzRCxNQUFNLEtBQUssR0FBRyxNQUFBLEtBQUssQ0FBQyxLQUFLLG1DQUFJLDZCQUE2QixDQUFDO1FBQzNELE1BQU0sSUFBSSxHQUFHLE1BQUEsS0FBSyxDQUFDLElBQUksbUNBQUksc0NBQXNDLEtBQUssQ0FBQyxJQUFJLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLFFBQVEsZ0JBQWdCLENBQUM7UUFFdEksSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLGVBQWUsRUFBRTtZQUN0RCxHQUFHLEtBQUs7WUFDUixJQUFJO1lBQ0osS0FBSztZQUNMLElBQUksRUFBRTtnQkFDSixJQUFJLEVBQUUsUUFBUTtnQkFDZCxNQUFNLEVBQUUsTUFBQSxLQUFLLENBQUMsSUFBSSwwQ0FBRSxNQUFNO2FBQzNCO1lBQ0QsT0FBTyxFQUFFO2dCQUNQLEdBQUcsS0FBSyxDQUFDLE9BQU87Z0JBQ2hCLE9BQU8sRUFBRSxjQUFjO2FBQ3hCO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGO0FBN0JELHNDQTZCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdtb25vY2RrJztcbmltcG9ydCB7IFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4uL3JlcG8nO1xuaW1wb3J0ICogYXMgcHIgZnJvbSAnLi9wcic7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgdGhlIGhlYWQgYnJhbmNoIG9mIHRoZSBidW1wIFBSLlxuICogKFRoZSBicmFuY2ggdGhlIFBSIHdpbGwgYmUgbWVyZ2VkIGZyb20pXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b01lcmdlQmFja0hlYWQge1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiBicmFuY2guIFdpbGwgYmUgY3JlYXRlZCBpZiBpdCBkb2Vzbid0IGV4aXN0LlxuICAgKiAkVkVSU0lPTiB3aWxsIGJlIHN1YnN0aXR1dGVkIGJ5IHRoZSBjdXJyZW50IHZlcnNpb24gKG9idGFpbmVkIGJ5IGV4ZWN1dGluZyBgdmVyc2lvbkNvbW1hbmRgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ21lcmdlLWJhY2svJFZFUlNJT04nXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBAc2VlICdzb3VyY2UnIHByb3BlcnR5IGluIEF1dG9QdWxsUmVxdWVzdC5IZWFkXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWVyZ2VCYWNrU3RhZ2Uge1xuXG4gIC8qKlxuICAgKiBXaGljaCBzdGFnZSBzaG91bGQgdGhlIG1lcmdlIGJhY2sgYmUgcGFydCBvZi4gKENyZWF0ZWQgaWYgbWlzc2luZylcbiAgICpcbiAgICogQGRlZmF1bHQgJ01lcmdlQmFjaydcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzdGFnZSB0aGF0IHRoZSBtZXJnZSBiYWNrIHN0YWdlIHNob3VsZCBnbyBhZnRlciBvZi4gKE11c3QgZXhpc3QpXG4gICAqL1xuICByZWFkb25seSBhZnRlcjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9NZXJnZUJhY2tPcHRpb25zIGV4dGVuZHMgcHIuQXV0b1B1bGxSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZCB0byBkZXRlcm1pbmUgdGhlIGN1cnJlbnQgdmVyc2lvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2dpdCBkZXNjcmliZSdcbiAgICovXG4gIHZlcnNpb25Db21tYW5kPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaXRsZSBvZiB0aGUgUFIuXG4gICAqXG4gICAqICRWRVJTSU9OIHdpbGwgYmUgc3Vic3RpdHV0ZWQgYnkgdGhlIGN1cnJlbnQgdmVyc2lvbiAob2J0YWluZWQgYnkgZXhlY3V0aW5nIGB2ZXJzaW9uQ29tbWFuZGApLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnY2hvcmUocmVsZWFzZSk6IG1lcmdlIGJhY2sgJFZFUlNJT04nXG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQm9keSBvZiB0aGUgUFIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdTZWUgW0NIQU5HRUxPR10oaHR0cHM6Ly9naXRodWIuY29tLyR7cHJvcHMucmVwby5vd25lcn0vJHtwcm9wcy5yZXBvLnJlcG99L2Jsb2IvJHtoZWFkfS9DSEFOR0VMT0cubWQpJ1xuICAgKiAoTGluayB0byB0aGUgQ0hBTkdFTE9HIGZpbGUgb2YgdGhlIGhlYWQgYnJhbmNoKVxuICAgKi9cbiAgYm9keT86IHN0cmluZztcblxuICAvKipcbiAgICogSGVhZCBicmFuY2ggb2YgdGhlIFBSLlxuICAgKlxuICAgKiAkVkVSU0lPTiB3aWxsIGJlIHN1YnN0aXR1dGVkIGJ5IHRoZSBjdXJyZW50IHZlcnNpb24gKG9idGFpbmVkIGJ5IGV4ZWN1dGluZyBgdmVyc2lvbkNvbW1hbmRgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBXaWxsIGJlIGNyZWF0ZWQgZnJvbSByZWxlYXNlIGFuZCBuYW1lZCAnbWVyZ2UtYmFjay8kVkVSU0lPTidcbiAgICovXG4gIGhlYWQ/OiBBdXRvTWVyZ2VCYWNrSGVhZDtcblxuICAvKipcbiAgICogVGhlIGV4aXQgY29kZSBvZiB0aGlzIGNvbW1hbmQgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0byBwcm9jZWVkIHdpdGggdGhlXG4gICAqIFBSIGNyZWF0aW9uLiBJZiBjb25maWd1cmVkLCB0aGlzIGNvbW1hbmQgaXMgdGhlIGZpcnN0IG9uZSB0byBydW4sIGFuZCBpZiBpdCBmYWlscywgYWxsXG4gICAqIG90aGVyIGNvbW1hbmRzIHdpbGwgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogVGhpcyBjb21tYW5kIGlzIHRoZSBmaXJzdCB0byBleGVjdXRlLCBhbmQgc2hvdWxkIG5vdCBhc3N1bWUgYW55IHByZS1leGlzdGluZyBzdGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb25kaXRpb25cbiAgICovXG4gIGNvbmRpdGlvbj86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvTWVyZ2VCYWNrUGlwZWxpbmVPcHRpb25zIGV4dGVuZHMgQXV0b01lcmdlQmFja09wdGlvbnMge1xuICAvKipcbiAgICogU3BlY2lmeSBzdGFnZSBvcHRpb25zIHRvIGNyZWF0ZSB0aGUgbWVyZ2UgYmFjayBpbnNpZGUgYSBzdGFnZSBvZiB0aGUgcGlwZWxpbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIENvZGVCdWlsZCBwcm9qZWN0IHdpbGwgYmUgY3JlYXRlZCBpbmRlcGRlbnQgb2YgYW55IHN0YWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgc3RhZ2U/OiBNZXJnZUJhY2tTdGFnZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvTWVyZ2VCYWNrUHJvcHMgZXh0ZW5kcyBBdXRvTWVyZ2VCYWNrT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSB0byBidW1wLlxuICAgKi9cbiAgcmVwbzogV3JpdGFibGVHaXRIdWJSZXBvO1xufVxuXG5leHBvcnQgY2xhc3MgQXV0b01lcmdlQmFjayBleHRlbmRzIGNkay5Db25zdHJ1Y3Qge1xuXG4gIC8qKlxuICAgKiBUaGUgdW5kZXJseWluZyBBdXRvUHVsbFJlcXVlc3QgY29uc3RydWN0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHByOiBwci5BdXRvUHVsbFJlcXVlc3Q7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBjZGsuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXV0b01lcmdlQmFja1Byb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICBjb25zdCB2ZXJzaW9uQ29tbWFuZCA9IHByb3BzLnZlcnNpb25Db21tYW5kID8/ICdnaXQgZGVzY3JpYmUnO1xuICAgIGNvbnN0IGhlYWROYW1lID0gcHJvcHMuaGVhZD8ubmFtZSA/PyAnbWVyZ2UtYmFjay8kVkVSU0lPTic7XG4gICAgY29uc3QgdGl0bGUgPSBwcm9wcy50aXRsZSA/PyAnY2hvcmUobWVyZ2UtYmFjayk6ICRWRVJTSU9OJztcbiAgICBjb25zdCBib2R5ID0gcHJvcHMuYm9keSA/PyBgU2VlIFtDSEFOR0VMT0ddKGh0dHBzOi8vZ2l0aHViLmNvbS8ke3Byb3BzLnJlcG8ub3duZXJ9LyR7cHJvcHMucmVwby5yZXBvfS9ibG9iLyR7aGVhZE5hbWV9L0NIQU5HRUxPRy5tZClgO1xuXG4gICAgdGhpcy5wciA9IG5ldyBwci5BdXRvUHVsbFJlcXVlc3QodGhpcywgJ0F1dG9NZXJnZUJhY2snLCB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGJvZHksXG4gICAgICB0aXRsZSxcbiAgICAgIGhlYWQ6IHtcbiAgICAgICAgbmFtZTogaGVhZE5hbWUsXG4gICAgICAgIHNvdXJjZTogcHJvcHMuaGVhZD8uc291cmNlLFxuICAgICAgfSxcbiAgICAgIGV4cG9ydHM6IHtcbiAgICAgICAgLi4ucHJvcHMuZXhwb3J0cyxcbiAgICAgICAgVkVSU0lPTjogdmVyc2lvbkNvbW1hbmQsXG4gICAgICB9LFxuICAgIH0pO1xuICB9XG59XG4iXX0=
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2UtYmFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1lcmdlLWJhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUErQjtBQUUvQix5Q0FBMkI7QUFtRzNCLE1BQWEsYUFBYyxTQUFRLEdBQUcsQ0FBQyxTQUFTO0lBTzlDLFlBQVksTUFBcUIsRUFBRSxFQUFVLEVBQUUsS0FBeUI7O1FBQ3RFLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEIsTUFBTSxjQUFjLEdBQUcsTUFBQSxLQUFLLENBQUMsY0FBYyxtQ0FBSSxjQUFjLENBQUM7UUFDOUQsTUFBTSxRQUFRLEdBQUcsTUFBQSxNQUFBLEtBQUssQ0FBQyxJQUFJLDBDQUFFLElBQUksbUNBQUkscUJBQXFCLENBQUM7UUFDM0QsTUFBTSxLQUFLLEdBQUcsTUFBQSxLQUFLLENBQUMsS0FBSyxtQ0FBSSw2QkFBNkIsQ0FBQztRQUMzRCxNQUFNLElBQUksR0FBRyxNQUFBLEtBQUssQ0FBQyxJQUFJLG1DQUFJLHNDQUFzQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksU0FBUyxRQUFRLGdCQUFnQixDQUFDO1FBRXRJLElBQUksQ0FBQyxFQUFFLEdBQUcsSUFBSSxFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDdEQsR0FBRyxLQUFLO1lBQ1IsSUFBSTtZQUNKLEtBQUs7WUFDTCxJQUFJLEVBQUU7Z0JBQ0osSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsTUFBTSxFQUFFLE1BQUEsS0FBSyxDQUFDLElBQUksMENBQUUsTUFBTTthQUMzQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxHQUFHLEtBQUssQ0FBQyxPQUFPO2dCQUNoQixPQUFPLEVBQUUsY0FBYzthQUN4QjtTQUNGLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTdCRCxzQ0E2QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjZGsgZnJvbSAnbW9ub2Nkayc7XG5pbXBvcnQgeyBXcml0YWJsZUdpdEh1YlJlcG8gfSBmcm9tICcuLi9yZXBvJztcbmltcG9ydCAqIGFzIHByIGZyb20gJy4vcHInO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBoZWFkIGJyYW5jaCBvZiB0aGUgYnVtcCBQUi5cbiAqIChUaGUgYnJhbmNoIHRoZSBQUiB3aWxsIGJlIG1lcmdlZCBmcm9tKVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9NZXJnZUJhY2tIZWFkIHtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgYnJhbmNoLiBXaWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICogJFZFUlNJT04gd2lsbCBiZSBzdWJzdGl0dXRlZCBieSB0aGUgY3VycmVudCB2ZXJzaW9uIChvYnRhaW5lZCBieSBleGVjdXRpbmcgYHZlcnNpb25Db21tYW5kYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdtZXJnZS1iYWNrLyRWRVJTSU9OJ1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQHNlZSAnc291cmNlJyBwcm9wZXJ0eSBpbiBBdXRvUHVsbFJlcXVlc3QuSGVhZFxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1lcmdlQmFja1N0YWdlIHtcblxuICAvKipcbiAgICogV2hpY2ggc3RhZ2Ugc2hvdWxkIHRoZSBtZXJnZSBiYWNrIGJlIHBhcnQgb2YuIChDcmVhdGVkIGlmIG1pc3NpbmcpXG4gICAqXG4gICAqIEBkZWZhdWx0ICdNZXJnZUJhY2snXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc3RhZ2UgdGhhdCB0aGUgbWVyZ2UgYmFjayBzdGFnZSBzaG91bGQgZ28gYWZ0ZXIgb2YuIChNdXN0IGV4aXN0KVxuICAgKi9cbiAgcmVhZG9ubHkgYWZ0ZXI6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvTWVyZ2VCYWNrT3B0aW9ucyBleHRlbmRzIHByLkF1dG9QdWxsUmVxdWVzdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGNvbW1hbmQgdG8gZGV0ZXJtaW5lIHRoZSBjdXJyZW50IHZlcnNpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0ICdnaXQgZGVzY3JpYmUnXG4gICAqL1xuICB2ZXJzaW9uQ29tbWFuZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGl0bGUgb2YgdGhlIFBSLlxuICAgKlxuICAgKiAkVkVSU0lPTiB3aWxsIGJlIHN1YnN0aXR1dGVkIGJ5IHRoZSBjdXJyZW50IHZlcnNpb24gKG9idGFpbmVkIGJ5IGV4ZWN1dGluZyBgdmVyc2lvbkNvbW1hbmRgKS5cbiAgICpcbiAgICogQGRlZmF1bHQgJ2Nob3JlKHJlbGVhc2UpOiBtZXJnZSBiYWNrICRWRVJTSU9OJ1xuICAgKi9cbiAgdGl0bGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJvZHkgb2YgdGhlIFBSLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnU2VlIFtDSEFOR0VMT0ddKGh0dHBzOi8vZ2l0aHViLmNvbS8ke3Byb3BzLnJlcG8ub3duZXJ9LyR7cHJvcHMucmVwby5yZXBvfS9ibG9iLyR7aGVhZH0vQ0hBTkdFTE9HLm1kKSdcbiAgICogKExpbmsgdG8gdGhlIENIQU5HRUxPRyBmaWxlIG9mIHRoZSBoZWFkIGJyYW5jaClcbiAgICovXG4gIGJvZHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEhlYWQgYnJhbmNoIG9mIHRoZSBQUi5cbiAgICpcbiAgICogJFZFUlNJT04gd2lsbCBiZSBzdWJzdGl0dXRlZCBieSB0aGUgY3VycmVudCB2ZXJzaW9uIChvYnRhaW5lZCBieSBleGVjdXRpbmcgYHZlcnNpb25Db21tYW5kYCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gV2lsbCBiZSBjcmVhdGVkIGZyb20gcmVsZWFzZSBhbmQgbmFtZWQgJ21lcmdlLWJhY2svJFZFUlNJT04nXG4gICAqL1xuICBoZWFkPzogQXV0b01lcmdlQmFja0hlYWQ7XG5cbiAgLyoqXG4gICAqIFRoZSBleGl0IGNvZGUgb2YgdGhpcyBjb21tYW5kIGRldGVybWluZXMgd2hldGhlciBvciBub3QgdG8gcHJvY2VlZCB3aXRoIHRoZVxuICAgKiBQUiBjcmVhdGlvbi4gSWYgY29uZmlndXJlZCwgdGhpcyBjb21tYW5kIGlzIHRoZSBmaXJzdCBvbmUgdG8gcnVuLCBhbmQgaWYgaXQgZmFpbHMsIGFsbFxuICAgKiBvdGhlciBjb21tYW5kcyB3aWxsIGJlIHNraXBwZWQuXG4gICAqXG4gICAqIFRoaXMgY29tbWFuZCBpcyB0aGUgZmlyc3QgdG8gZXhlY3V0ZSwgYW5kIHNob3VsZCBub3QgYXNzdW1lIGFueSBwcmUtZXhpc3Rpbmcgc3RhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29uZGl0aW9uXG4gICAqL1xuICBjb25kaXRpb24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b01lcmdlQmFja1BpcGVsaW5lT3B0aW9ucyBleHRlbmRzIEF1dG9NZXJnZUJhY2tPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNwZWNpZnkgc3RhZ2Ugb3B0aW9ucyB0byBjcmVhdGUgdGhlIG1lcmdlIGJhY2sgaW5zaWRlIGEgc3RhZ2Ugb2YgdGhlIHBpcGVsaW5lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBDb2RlQnVpbGQgcHJvamVjdCB3aWxsIGJlIGNyZWF0ZWQgaW5kZXBkZW50IG9mIGFueSBzdGFnZS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YWdlPzogTWVyZ2VCYWNrU3RhZ2U7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b01lcmdlQmFja1Byb3BzIGV4dGVuZHMgQXV0b01lcmdlQmFja09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gYnVtcC5cbiAgICovXG4gIHJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcbn1cblxuZXhwb3J0IGNsYXNzIEF1dG9NZXJnZUJhY2sgZXh0ZW5kcyBjZGsuQ29uc3RydWN0IHtcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgQXV0b1B1bGxSZXF1ZXN0IGNvbnN0cnVjdC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcjogcHIuQXV0b1B1bGxSZXF1ZXN0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogY2RrLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF1dG9NZXJnZUJhY2tQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgY29uc3QgdmVyc2lvbkNvbW1hbmQgPSBwcm9wcy52ZXJzaW9uQ29tbWFuZCA/PyAnZ2l0IGRlc2NyaWJlJztcbiAgICBjb25zdCBoZWFkTmFtZSA9IHByb3BzLmhlYWQ/Lm5hbWUgPz8gJ21lcmdlLWJhY2svJFZFUlNJT04nO1xuICAgIGNvbnN0IHRpdGxlID0gcHJvcHMudGl0bGUgPz8gJ2Nob3JlKG1lcmdlLWJhY2spOiAkVkVSU0lPTic7XG4gICAgY29uc3QgYm9keSA9IHByb3BzLmJvZHkgPz8gYFNlZSBbQ0hBTkdFTE9HXShodHRwczovL2dpdGh1Yi5jb20vJHtwcm9wcy5yZXBvLm93bmVyfS8ke3Byb3BzLnJlcG8ucmVwb30vYmxvYi8ke2hlYWROYW1lfS9DSEFOR0VMT0cubWQpYDtcblxuICAgIHRoaXMucHIgPSBuZXcgcHIuQXV0b1B1bGxSZXF1ZXN0KHRoaXMsICdBdXRvTWVyZ2VCYWNrJywge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBib2R5LFxuICAgICAgdGl0bGUsXG4gICAgICBoZWFkOiB7XG4gICAgICAgIG5hbWU6IGhlYWROYW1lLFxuICAgICAgICBzb3VyY2U6IHByb3BzLmhlYWQ/LnNvdXJjZSxcbiAgICAgIH0sXG4gICAgICBleHBvcnRzOiB7XG4gICAgICAgIC4uLnByb3BzLmV4cG9ydHMsXG4gICAgICAgIFZFUlNJT046IHZlcnNpb25Db21tYW5kLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,9 +1,28 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
5
+ }) : (function(o, m, k, k2) {
6
+ if (k2 === undefined) k2 = k;
7
+ o[k2] = m[k];
8
+ }));
9
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
10
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
11
+ }) : function(o, v) {
12
+ o["default"] = v;
13
+ });
14
+ var __importStar = (this && this.__importStar) || function (mod) {
15
+ if (mod && mod.__esModule) return mod;
16
+ var result = {};
17
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
18
+ __setModuleDefault(result, mod);
19
+ return result;
20
+ };
2
21
  Object.defineProperty(exports, "__esModule", { value: true });
3
22
  exports.AutoPullRequest = void 0;
4
23
  const monocdk_1 = require("monocdk");
5
24
  const build_env_1 = require("../build-env");
6
- const permissions = require("../permissions");
25
+ const permissions = __importStar(require("../permissions"));
7
26
  /**
8
27
  * Creates a CodeBuild job that, when triggered, opens a GitHub Pull Request.
9
28
  */
@@ -200,4 +219,4 @@ class AutoPullRequest extends monocdk_1.Construct {
200
219
  }
201
220
  }
202
221
  exports.AutoPullRequest = AutoPullRequest;
203
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FNaUI7QUFDakIsNENBQTZFO0FBQzdFLDhDQUE4QztBQW9MOUM7O0dBRUc7QUFDSCxNQUFhLGVBQWdCLFNBQVEsbUJBQVM7SUFrQjVDLFlBQVksTUFBaUIsRUFBRSxFQUFVLEVBQUUsS0FBMkI7O1FBQ3BFLEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFFbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLE1BQUEsS0FBSyxDQUFDLElBQUksMENBQUUsSUFBSSxtQ0FBSSxRQUFRLENBQUM7UUFDL0MsSUFBSSxDQUFDLFVBQVUsR0FBRyxNQUFBLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxtQ0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDO1FBQ3ZELElBQUksQ0FBQyxPQUFPLEdBQUcsTUFBQSxLQUFLLENBQUMsT0FBTyxtQ0FBSSxFQUFFLENBQUM7UUFFbkMsS0FBSyxNQUFNLEVBQUUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUMxQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUU7Z0JBQ2hGLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxVQUFVLHFDQUFxQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO2FBQzNGO1NBQ0Y7UUFFRCxNQUFNLFlBQVksR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQztRQUM3QyxNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQztRQUMzQyxNQUFNLGNB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LENBQUM7U0FDdkc7UUFFRCxPQUFPLFFBQVEsQ0FBQztJQUVsQixDQUFDO0lBRU8sVUFBVSxDQUFDLEdBQVcsRUFBRSxPQUFlLEVBQUUsT0FBWTtRQUMzRCxPQUFPO1lBQ0wsYUFBYTtZQUNiLE9BQU87WUFDUCwrQ0FBK0M7WUFDL0MsMkNBQTJDO1lBQzNDLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLEVBQUU7WUFDL0MsZ0NBQWdDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsR0FBRyxFQUFFO1NBQ3RGLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztJQUVPLGFBQWEsQ0FBQyxHQUFXLEVBQUUsT0FBZTtRQUNoRCxPQUFPO1lBQ0wsYUFBYTtZQUNiLE9BQU87WUFDUCwrQ0FBK0M7WUFDL0MsMkNBQTJDO1lBQzNDLDBCQUEwQixHQUFHLEdBQUc7U0FDakMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDZCxDQUFDO0NBRUY7QUEzUUQsMENBMlFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29uc3RydWN0LCBEdXJhdGlvbixcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCxcbiAgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19ldmVudHMgYXMgZXZlbnRzLFxuICBhd3NfZXZlbnRzX3RhcmdldHMgYXMgZXZlbnRzX3RhcmdldHMsXG59IGZyb20gJ21vbm9jZGsnO1xuaW1wb3J0IHsgQnVpbGRFbnZpcm9ubWVudFByb3BzLCBjcmVhdGVCdWlsZEVudmlyb25tZW50IH0gZnJvbSAnLi4vYnVpbGQtZW52JztcbmltcG9ydCAqIGFzIHBlcm1pc3Npb25zIGZyb20gJy4uL3Blcm1pc3Npb25zJztcbmltcG9ydCB7IFdyaXRhYmxlR2l0SHViUmVwbyB9IGZyb20gJy4uL3JlcG8nO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgUHVsbCBSZXF1ZXN0IEpvYi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBdXRvUHVsbFJlcXVlc3RPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBiYXNlIGJyYW5jaCBvZiB0aGUgUFIuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdtYXN0ZXInXG4gICAqL1xuICBiYXNlPzogQmFzZTtcblxuICAvKipcbiAgICogVHJ1ZSBpZiB5b3Ugb25seSB3YW50IHRvIHB1c2ggdGhlIGhlYWQgYnJhbmNoIHdpdGhvdXQgY3JlYXRpbmcgYSBQUi5cbiAgICogVXNlZnVsIHdoZW4gdXNlZCBhbG9uZyB3aXRoICdjb21taXRzJyB0byBleGVjdXRlIGEgY29tbWl0LWFuZC1wdXNoIGF1dG9tYXRpY2FsbHkuXG4gICAqXG4gICAqIC8vIFRPRE86IENvbnNpZGVyIG1vdmluZyB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gYSBzZXBhcmF0ZSBjb25zdHJ1Y3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwdXNoT25seT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRpdGxlIG9mIHRoZSBQUi5cbiAgICpcbiAgICogQGRlZmF1bHQgYE1lcmdlICR7aGVhZH0gdG8gJHtiYXNlfWBcbiAgICovXG4gIHRpdGxlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCb2R5IHRoZSBQUi4gTm90ZSB0aGF0IHRoZSBib2R5IGlzIHVwZGF0ZWQgcG9zdCBQUiBjcmVhdGlvbixcbiAgICogdGhpcyBtZWFucyB5b3UgY2FuIHVzZSB0aGUgJFBSX05VTUJFUiBlbnYgdmFyaWFibGUgdG8gcmVmZXIgdG8gdGhlIFBSIGl0c2VsZi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBib2R5LlxuICAgKi9cbiAgYm9keT86IHN0cmluZztcblxuICAvKipcbiAgICogTGFiZWxzIGFwcGxpZWQgdG8gdGhlIFBSLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGxhYmVscy5cbiAgICovXG4gIGxhYmVscz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBCdWlsZCBlbnZpcm9ubWVudCBmb3IgdGhlIENvZGVCdWlsZCBqb2IuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCBjb25maWd1cmF0aW9uLlxuICAgKi9cbiAgYnVpbGQ/OiBCdWlsZEVudmlyb25tZW50UHJvcHM7XG5cbiAgLyoqXG4gICAqIEdpdCBjbG9uZSBkZXB0aC5cbiAgICpcbiAgICogQGRlZmF1bHQgMCAoY2xvbmVzIHRoZSBlbnRpcmUgcmVwb3NpdG9yeSByZXZpc2lvbnMpXG4gICAqL1xuICBjbG9uZURlcHRoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBLZXkgdmFsdWUgcGFpcnMgb2YgdmFyaWFibGVzIHRvIGV4cG9ydC4gVGhlc2UgdmFyaWFibGVzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciBkeW5hbWljIGV2YWx1YXRpb24gaW4gYW55XG4gICAqIHN1YnNlcXVlbnQgY29tbWFuZC5cbiAgICpcbiAgICogS2V5IC0gVmFyaWFibGUgbmFtZSAoZS5nIFZFUlNJT04pXG4gICAqIFZhbHVlIC0gQ29tbWFuZCB0aGF0IGV2YWx1YXRlcyB0byB0aGUgdmFsdWUgb2YgdGhlIHZhcmlhYmxlIChlLmcgJ2dpdCBkZXNjcmliZScpXG4gICAqXG4gICAqIEV4YW1wbGU6XG4gICAqXG4gICAqIENvbmZpZ3VyZSBhbiBleHBvcnQgaW4gdGhlIGZvcm0gb2Y6XG4gICAqXG4gICAqIHsgJ1ZFUlNJT04nOiAnZ2l0IGRlc2NyaWJlJyB9XG4gICAqXG4gICAqIFVzZSB0aGUgJFZFUlNJT04gdmFyaWFibGUgaW4gdGhlIFBSIHRpdGxlOiAnY2hvcmUocmVsZWFzZSk6ICRWRVJTSU9OJ1xuICAgKlxuICAgKiBOb3RlIHRoYXQgdGhlc2UgZXhwb3J0cyBhcmUgZXhlY3V0ZWQgYWZ0ZXIgdGhlIGBjb21tYW5kc2AgZXhlY3V0aW9uLFxuICAgKiBzbyB0aGV5IGhhdmUgYWNjZXNzIHRvIHRoZSBhcnRpZmFjdHMgc2FpZCBjb21tYW5kcyBwcm9kdWNlIChlLmcgdmVyc2lvbiBidW1wKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBleHBvcnRzXG4gICAqL1xuICBleHBvcnRzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIHNjaGVkdWxlIHRvIHByb2R1Y2UgYW4gYXV0b21hdGljIFBSLlxuICAgKlxuICAgKiBUaGUgZXhwcmVzc2lvbiBjYW4gYmUgb25lIG9mOlxuICAgKlxuICAgKiAgLSBjcm9uIGV4cHJlc3Npb24sIHN1Y2ggYXMgXCJjcm9uKDAgMTIgKiAqID8gKilcIiB3aWxsIHRyaWdnZXIgZXZlcnkgZGF5IGF0IDEycG0gVVRDXG4gICAqICAtIHJhdGUgZXhwcmVzc2lvbiwgc3VjaCBhcyBcInJhdGUoMSBkYXkpXCIgd2lsbCB0cmlnZ2VyIGV2ZXJ5IDI0IGhvdXJzIGZyb20gdGhlIHRpbWUgb2YgZGVwbG95bWVudFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZFdhdGNoL2xhdGVzdC9ldmVudHMvU2NoZWR1bGVkRXZlbnRzLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzY2hlZHVsZSwgc2hvdWxkIGJlIHRyaWdnZXJlZCBtYW51YWxseS5cbiAgICovXG4gIHNjaGVkdWxlRXhwcmVzc2lvbj86IHN0cmluZztcblxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEF1dG9QdWxsUmVxdWVzdFByb3BzIGV4dGVuZHMgQXV0b1B1bGxSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgcmVwb3NpdG9yeSB0byBjcmVhdGUgYSBQUiBpbi5cbiAgICovXG4gIHJlcG86IFdyaXRhYmxlR2l0SHViUmVwbztcblxuICAvKipcbiAgICogQSBzZXQgb2YgY29tbWFuZHMgdG8gcnVuIGFnYWluc3QgdGhlIGhlYWQgYnJhbmNoLlxuICAgKiBVc2VmdWwgZm9yIHRoaW5ncyBsaWtlIHZlcnNpb24gYnVtcHMgb3IgYW55IGF1dG8tZ2VuZXJhdGVkIGNvbW1pdHMuXG4gICAqXG4gICAqIE5vdGUgdGhhdCB5b3UgY2Fubm90IHVzZSBleHBvcnQga2V5cyBpbiB0aGVzZSBjb21tYW5kcyAoU2VlIGBleHBvcnRzYCBwcm9wZXJ0eSlcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb21tYW5kcy5cbiAgICovXG4gIGNvbW1hbmRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBoZWFkIGJyYW5jaCBvZiB0aGUgUFIuXG4gICAqL1xuICBoZWFkOiBIZWFkO1xuXG4gIC8qKlxuICAgKiBUaGUgZXhpdCBjb2RlIG9mIHRoaXMgY29tbWFuZCBkZXRlcm1pbmVzIHdoZXRoZXIgb3Igbm90IHRvIHByb2NlZWQgd2l0aCB0aGVcbiAgICogUFIgY3JlYXRpb24uIElmIGNvbmZpZ3VyZWQsIHRoaXMgY29tbWFuZCBpcyB0aGUgZmlyc3Qgb25lIHRvIHJ1biwgYW5kIGlmIGl0IGZhaWxzLCBhbGxcbiAgICogb3RoZXIgY29tbWFuZHMgd2lsbCBiZSBza2lwcGVkLlxuICAgKlxuICAgKiBUaGlzIGNvbW1hbmQgaXMgdGhlIGZpcnN0IHRvIGV4ZWN1dGUsIGFuZCBzaG91bGQgbm90IGFzc3VtZSBhbnkgcHJlLWV4aXN0aW5nIHN0YXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGNvbmRpdGlvblxuICAgKi9cbiAgY29uZGl0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBhbnkgUFIgbGFiZWxlZCB3aXRoIHRoZSBnaXZlbiBsYWJlbHMgaXMgc3RpbGwgb3Blbiwgbm8gbmV3IFBSIHdpbGwgYmUgY3JlYXRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRvbid0IGxvb2sgYXQgb3BlbiBQUnNcbiAgICovXG4gIHJlYWRvbmx5IHNraXBJZk9wZW5QcnNXaXRoTGFiZWxzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY29uZmlndXJpbmcgdGhlIGJhc2UgYnJhbmNoIG9mIHRoZSBQUi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlIHtcblxuICAvKipcbiAgICogQnJhbmNoIG5hbWUuXG4gICAqXG4gICAqIFRoaXMgYnJhbmNoIG11c3QgZXhpc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0ICdtYXN0ZXInXG4gICAqL1xuICByZWFkb25seSBuYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBoZWFkIGJyYW5jaCBvZiB0aGUgUFIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSGVhZCB7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCBuYW1lLlxuICAgKlxuICAgKiBUaGlzIGJyYW5jaCB3aWxsIGJlIGNyZWF0ZWQgaWYgaXQgZG9lc24ndCBleGlzdC5cbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNvdXJjZSBzaGEgb2YgdGhlIGJyYW5jaC5cbiAgICpcbiAgICogSWYgdGhlIGdpdmVuIGJyYW5jaCBhbHJlYWR5IGV4aXN0cywgdGhpcyBzaGEgd2lsbCBiZSBhdXRvLW1lcmdlZCBvbnRvIGl0LiBOb3RlIHRoYXQgaW4gc3VjaCBhIGNhc2UsXG4gICAqIHRoZSBQUiBjcmVhdGlvbiBtaWdodCBmYWlsIGluIGNhc2UgdGhlcmUgYXJlIG1lcmdlIGNvbmZsaWN0cy5cbiAgICpcbiAgICogSWYgdGhlIGdpdmVuIGJyYW5jaCBkb2Vzbid0IGV4aXN0LCB0aGUgbmV3bHkgY3JlYXRlZCBicmFuY2ggd2lsbCBiZSBiYXNlZCBvZiB0aGlzIGhhc2guXG4gICAqXG4gICAqIE5vdGUgdGhhdCBkeW5hbWljIGV4cG9ydHMgYXJlIG5vdCBhbGxvd2VkIGZvciB0aGlzIHByb3BlcnR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBiYXNlIGJyYW5jaCBvZiB0aGUgcHIuXG4gICAqL1xuICByZWFkb25seSBzb3VyY2U/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIENvZGVCdWlsZCBqb2IgdGhhdCwgd2hlbiB0cmlnZ2VyZWQsIG9wZW5zIGEgR2l0SHViIFB1bGwgUmVxdWVzdC5cbiAqL1xuZXhwb3J0IGNsYXNzIEF1dG9QdWxsUmVxdWVzdCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgLyoqXG4gICAqIENsb3VkV2F0Y2ggYWxhcm0gdGhhdCB3aWxsIGJlIHRyaWdnZXJlZCBpZiB0aGUgam9iIGZhaWxzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuXG4gIC8qKlxuICAgKiBUaGUgQ29kZUJ1aWxkIHByb2plY3QgdGhpcyBjb25zdHJ1Y3QgY3JlYXRlcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuSVByb2plY3Q7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogQXV0b1B1bGxSZXF1ZXN0UHJvcHM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlQnJhbmNoOiBzdHJpbmc7XG4gIHByaXZhdGUgcmVhZG9ubHkgaGVhZFNvdXJjZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGV4cG9ydHM6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBdXRvUHVsbFJlcXVlc3RQcm9wcykge1xuICAgIHN1cGVyKHBhcmVudCwgaWQpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy5iYXNlQnJhbmNoID0gcHJvcHMuYmFzZT8ubmFtZSA/PyAnbWFzdGVyJztcbiAgICB0aGlzLmhlYWRTb3VyY2UgPSBwcm9wcy5oZWFkLnNvdXJjZSA/PyB0aGlzLmJhc2VCcmFuY2g7XG4gICAgdGhpcy5leHBvcnRzID0gcHJvcHMuZXhwb3J0cyA/PyB7fTtcblxuICAgIGZvciAoY29uc3QgZXggb2YgT2JqZWN0LmtleXModGhpcy5leHBvcnRzKSkge1xuICAgICAgaWYgKHRoaXMuaGVhZFNvdXJjZS5pbmNsdWRlcyhgXFwkeyR7ZXh9fWApIHx8IHRoaXMuaGVhZFNvdXJjZS5pbmNsdWRlcyhgXFwkJHtleH1gKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGhlYWQgc291cmNlICgke3RoaXMuaGVhZFNvdXJjZX0pIGNhbm5vdCBjb250YWluIGR5bmFtaWMgZXhwb3J0czogJHtleH1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzc2hLZXlTZWNyZXQgPSBwcm9wcy5yZXBvLnNzaEtleVNlY3JldDtcbiAgICBjb25zdCBjb21taXRFbWFpbCA9IHByb3BzLnJlcG8uY29tbWl0RW1haWw7XG4gICAgY29uc3QgY29tbWl0VXNlcm5hbWUgPSBwcm9wcy5yZXBvLmNvbW1pdFVzZXJuYW1lO1xuICAgIGNvbnN0IGNsb25lRGVwdGggPSBwcm9wcy5jbG9uZURlcHRoID09PSB1bmRlZmluZWQgPyAwIDogcHJvcHMuY2xvbmVEZXB0aDtcblxuICAgIGNvbnN0IG5lZWRzR2l0SHViVG9rZW5TZWNyZXQgPSAhdGhpcy5wcm9wcy5wdXNoT25seSB8fCAhIXRoaXMucHJvcHMuc2tpcElmT3BlblByc1dpdGhMYWJlbHM7XG5cbiAgICBsZXQgY29tbWFuZHM6IHN0cmluZ1tdID0gW1xuXG4gICAgICAuLi50aGlzLmNvbmZpZ3VyZVNzaEFjY2VzcygpLFxuXG4gICAgICAvLyB3aGVuIHRoZSBqb2IgaXMgdHJpZ2dlcmVkIGFzIGEgQ29kZVBpcGVsaW5lIGFjdGlvbiwgdGhlIHdvcmtpbmcgZGlyZWN0b3J5XG4gICAgICAvLyBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUgb3V0cHV0IGFydGlmYWN0IG9mIHRoZSBDb2RlQ29tbWl0U291cmNlQWN0aW9uLCB3aGljaCBkb2Vzbid0IGluY2x1ZGVcbiAgICAgIC8vIHRoZSAuZ2l0IGRpcmVjdG9yeSBpbiB0aGUgemlwcGVkIHMzIGFyY2hpdmUuIChZZWFoLCBmdW4gc3R1ZmYpLlxuICAgICAgLy8gc2VlIGh0dHBzOi8vaXRuZXh0LmlvL2hvdy10by1hY2Nlc3MtZ2l0LW1ldGFkYXRhLWluLWNvZGVidWlsZC13aGVuLXVzaW5nLWNvZGVwaXBlbGluZS1jb2RlY29tbWl0LWNlYWNmMmM1YzFkY1xuICAgICAgLi4udGhpcy5jbG9uZUlmTmVlZGVkKCksXG4gICAgXTtcblxuICAgIGlmICh0aGlzLnByb3BzLmNvbmRpdGlvbikge1xuICAgICAgLy8gdGhlcmUncyBubyB3YXkgdG8gc3RvcCBhIEJ1aWxkU3BlYyBleGVjdXRpb24gaGFsZndheSB0aHJvdWdoIHdpdGhvdXQgdGhyb3dpbmcgYW4gZXJyb3IuIEJlbGlldmUgbWUsIElcbiAgICAgIC8vIGNoZWNrZWQgdGhlIGNvZGUuIEluc3RlYWQgd2UgZGVmaW5lIGEgdmFyaWFibGUgdGhhdCB3ZSB3aWxsIHN3aXRjaCBhbGwgb3RoZXIgbGluZXMgb24vb2ZmLlxuICAgICAgY29tbWFuZHMucHVzaChgJHt0aGlzLnByb3BzLmNvbmRpdGlvbn0gYCArXG4gICAgICAnJiYgeyBlY2hvIFxcJ1NraXAgY29uZGl0aW9uIGlzIG1ldCwgc2tpcHBpbmcuLi5cXCcgJiYgZXhwb3J0IFNLSVA9dHJ1ZTsgfSAnICtcbiAgICAgICd8fCB7IGVjaG8gXFwnU2tpcCBjb25kaXRpb24gaXMgbm90IG1ldCwgY29udGludWluZy4uLlxcJyAmJiBleHBvcnQgU0tJUD1mYWxzZTsgfScpO1xuICAgIH1cblxuICAgIC8vIHJlYWQgdGhlIHRva2VuXG4gICAgaWYgKG5lZWRzR2l0SHViVG9rZW5TZWNyZXQpIHtcbiAgICAgIGNvbW1hbmRzLnB1c2goYGV4cG9ydCBHSVRIVUJfVE9LRU49JChhd3Mgc2VjcmV0c21hbmFnZXIgZ2V0LXNlY3JldC12YWx1ZSAtLXNlY3JldC1pZCBcIiR7dGhpcy5wcm9wcy5yZXBvLnRva2VuU2VjcmV0QXJufVwiIC0tb3V0cHV0PXRleHQgLS1xdWVyeT1TZWNyZXRTdHJpbmcpYCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMuc2tpcElmT3BlblByc1dpdGhMYWJlbHMpIHtcbiAgICAgIGNvbW1hbmRzLnB1c2goLi4udGhpcy5za2lwSWZPcGVuUHJzKHRoaXMucHJvcHMuc2tpcElmT3BlblByc1dpdGhMYWJlbHMpKTtcbiAgICB9XG5cbiAgICBjb21tYW5kcy5wdXNoKFxuICAgICAgLi4udGhpcy5jcmVhdGVIZWFkKCksXG4gICAgICAuLi50aGlzLnB1c2hIZWFkKCksXG4gICAgKTtcblxuICAgIGlmICghdGhpcy5wcm9wcy5wdXNoT25seSkge1xuICAgICAgY29tbWFuZHMucHVzaCguLi50aGlzLmNyZWF0ZVB1bGxSZXF1ZXN0KCkpO1xuICAgIH1cblxuICAgIC8vIHRvZ2dsZSBhbGwgY29tbWFuZHMgYWNjb3JkaW5nIHRvIHRoZSBTS0lQIHZhcmlhYmxlLlxuICAgIGNvbW1hbmRzID0gY29tbWFuZHMubWFwKChjb21tYW5kOiBzdHJpbmcpID0+IGAkU0tJUCB8fCB7ICR7Y29tbWFuZH0gOyB9YCk7XG5cbiAgICAvLyBpbnRpYWxseSBhbGwgY29tbWFuZHMgYXJlIGVuYWJsZWQuXG4gICAgY29tbWFuZHMudW5zaGlmdCgnZXhwb3J0IFNLSVA9ZmFsc2UnKTtcblxuICAgIHRoaXMucHJvamVjdCA9IG5ldyBjYnVpbGQuUHJvamVjdCh0aGlzLCAnUHVsbFJlcXVlc3QnLCB7XG4gICAgICBzb3VyY2U6IHByb3BzLnJlcG8uY3JlYXRlQnVpbGRTb3VyY2UodGhpcywgZmFsc2UsIHsgY2xvbmVEZXB0aCB9KSxcbiAgICAgIGVudmlyb25tZW50OiBjcmVhdGVCdWlsZEVudmlyb25tZW50KHByb3BzLmJ1aWxkID8/IHt9KSxcbiAgICAgIGJ1aWxkU3BlYzogY2J1aWxkLkJ1aWxkU3BlYy5mcm9tT2JqZWN0KHtcbiAgICAgICAgdmVyc2lvbjogJzAuMicsXG4gICAgICAgIHBoYXNlczoge1xuICAgICAgICAgIHByZV9idWlsZDoge1xuICAgICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgICAgYGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5lbWFpbCBcIiR7Y29tbWl0RW1haWx9XCJgLFxuICAgICAgICAgICAgICBgZ2l0IGNvbmZpZyAtLWdsb2JhbCB1c2VyLm5hbWUgXCIke2NvbW1pdFVzZXJuYW1lfVwiYCxcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBidWlsZDogeyBjb21tYW5kcyB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5wcm9qZWN0LnJvbGUpIHtcbiAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZChzc2hLZXlTZWNyZXQsIHRoaXMucHJvamVjdC5yb2xlKTtcblxuICAgICAgaWYgKG5lZWRzR2l0SHViVG9rZW5TZWNyZXQpIHtcbiAgICAgICAgcGVybWlzc2lvbnMuZ3JhbnRTZWNyZXRSZWFkKHsgc2VjcmV0QXJuOiBwcm9wcy5yZXBvLnRva2VuU2VjcmV0QXJuIH0sIHRoaXMucHJvamVjdC5yb2xlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMuc2NoZWR1bGVFeHByZXNzaW9uKSB7XG4gICAgICBjb25zdCBzY2hlZHVsZSA9IGV2ZW50cy5TY2hlZHVsZS5leHByZXNzaW9uKHByb3BzLnNjaGVkdWxlRXhwcmVzc2lvbik7XG4gICAgICBuZXcgZXZlbnRzLlJ1bGUodGhpcywgJ1NjaGVkdWxlcicsIHtcbiAgICAgICAgZGVzY3JpcHRpb246ICdTY2hlZHVsZXMgYW4gYXV0b21hdGljIFB1bGwgUmVxdWVzdCBmb3IgdGhpcyByZXBvc2l0b3J5JyxcbiAgICAgICAgc2NoZWR1bGUsXG4gICAgICAgIHRhcmdldHM6IFtuZXcgZXZlbnRzX3RhcmdldHMuQ29kZUJ1aWxkUHJvamVjdCh0aGlzLnByb2plY3QpXSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuYWxhcm0gPSB0aGlzLnByb2plY3QubWV0cmljRmFpbGVkQnVpbGRzKHsgcGVyaW9kOiBEdXJhdGlvbi5zZWNvbmRzKDMwMCkgfSkuY3JlYXRlQWxhcm0odGhpcywgJ0F1dG9QdWxsUmVxdWVzdEZhaWxlZEFsYXJtJywge1xuICAgICAgdGhyZXNob2xkOiAxLFxuICAgICAgZXZhbHVhdGlvblBlcmlvZHM6IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuSUdOT1JFLFxuICAgIH0pO1xuICB9XG4gIHByaXZhdGUgY3JlYXRlSGVhZCgpOiBzdHJpbmdbXSB7XG5cbiAgICByZXR1cm4gW1xuICAgICAgLy8gY2hlY2sgaWYgaGVhZCBicmFuY2ggZXhpc3RzXG4gICAgICBgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSBvcmlnaW4vJHt0aGlzLnByb3BzLmhlYWQubmFtZX0gYCArXG5cbiAgICAgIC8vIGNoZWNrb3V0IGFuZCBtZXJnZSBpZiBpdCBkb2VzICh0aGlzIG1pZ2h0IGZhaWwgZHVlIHRvIG1lcmdlIGNvbmZsaWN0cylcbiAgICAgIGAmJiB7IGdpdCBjaGVja291dCAke3RoaXMucHJvcHMuaGVhZC5uYW1lfSAmJiBnaXQgbWVyZ2UgJHt0aGlzLmhlYWRTb3VyY2V9ICYmICR7dGhpcy5ydW5Db21tYW5kcygpfTsgIH0gYCArXG5cbiAgICAgIC8vIGNyZWF0ZSBpZiBpdCBkb2VzbnQuIHdlIGluaXRpYWxseSB1c2UgJ3RlbXAnIHRvIGFsbG93IHVzaW5nIGV4cG9ydHMgaW4gdGhlIGhlYWQgYnJhbmNoIG5hbWUuIChlLmcgYnVtcC8kVkVSU0lPTilcbiAgICAgIGB8fCB7IGdpdCBjaGVja291dCAke3RoaXMuaGVhZFNvdXJjZX0gJiYgZ2l0IGNoZWNrb3V0IC1iIHRlbXAgJiYgJHt0aGlzLnJ1bkNvbW1hbmRzKCl9ICYmIGdpdCBicmFuY2ggLU0gJHt0aGlzLnByb3BzLmhlYWQubmFtZX07IH1gLFxuXG4gICAgXTtcblxuICB9XG5cbiAgcHJpdmF0ZSBjbG9uZUlmTmVlZGVkKCk6IHN0cmluZ1tdIHtcblxuICAgIHJldHVybiBbXG4gICAgICAvLyBjaGVjayBpZiAuZ2l0IGV4aXN0XG4gICAgICAnbHMgLmdpdCAnICtcblxuICAgICAgLy8gYWxsIGdvb2RcbiAgICAgICcmJiB7IGVjaG8gXCIuZ2l0IGRpcmVjdG9yeSBleGlzdHNcIjsgIH0gJyArXG5cbiAgICAgIC8vIGNsb25lIGlmIGl0IGRvZXNuJ3RcbiAgICAgIGB8fCB7IGVjaG8gXCIuZ2l0IGRpcmVjdG9yeSBkb2Vzbm90IGV4aXN0IC0gY2xvbmluZy4uLlwiICYmIGdpdCBpbml0IC4gJiYgZ2l0IHJlbW90ZSBhZGQgb3JpZ2luIGdpdEBnaXRodWIuY29tOiR7dGhpcy5wcm9wcy5yZXBvLm93bmVyfS8ke3RoaXMucHJvcHMucmVwby5yZXBvfS5naXQgJiYgZ2l0IGZldGNoICYmIGdpdCByZXNldCAtLWhhcmQgb3JpZ2luLyR7dGhpcy5iYXNlQnJhbmNofSAmJiBnaXQgYnJhbmNoIC1NICR7dGhpcy5iYXNlQnJhbmNofSAmJiBnaXQgY2xlYW4gLWZxZHg7IH1gLFxuXG4gICAgXTtcblxuICB9XG5cbiAgcHJpdmF0ZSBydW5Db21tYW5kcygpOiBzdHJpbmcge1xuXG4gICAgY29uc3QgdXNlckNvbW1hbmRzID0gdGhpcy5wcm9wcy5jb21tYW5kcyA/PyBbXTtcbiAgICBjb25zdCBleHBvcnRzID0gT2JqZWN0LmVudHJpZXModGhpcy5leHBvcnRzKS5tYXAoZW50cnkgPT4gYGV4cG9ydCAke2VudHJ5WzBdfT0kKCR7ZW50cnlbMV19KWApO1xuXG4gICAgcmV0dXJuIFtcblxuICAgICAgLi4udXNlckNvbW1hbmRzLFxuXG4gICAgICAvLyBleHBvcnRzIHNob3VsZCBiZSBleGVjdXRlZCBpbW1lZGlhdGVseSBhZnRlciB0aGUgdXNlciBjb21tYW5kcyAobm90IGJlZm9yZSlcbiAgICAgIC8vIGJlY2F1c2UgdGhleSBtaWdodCBuZWVkIGFjY2VzcyB0byBhcnRpZmFjdHMgcHJvZHVjZWQgYnkgdGhlbSAoZS5nIHZlcnNpb24gZmlsZSkuXG4gICAgICAuLi5leHBvcnRzLFxuXG4gICAgICAnZWNobyBGaW5pc2hlZCBydW5uaW5nIHVzZXIgY29tbWFuZHMnLFxuICAgIF0uam9pbignICYmICcpO1xuXG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZVNzaEFjY2VzcygpOiBzdHJpbmdbXSB7XG5cbiAgICByZXR1cm4gW1xuICAgICAgJ2F3cyBzZWNyZXRzbWFuYWdlciBnZXQtc2VjcmV0LXZhbHVlICdcbiAgICAgICAgKyBgLS1zZWNyZXQtaWQgXCIke3RoaXMucHJvcHMucmVwby5zc2hLZXlTZWNyZXQuc2VjcmV0QXJufVwiIGBcbiAgICAgICAgKyAnLS1vdXRwdXQ9dGV4dCAtLXF1ZXJ5PVNlY3JldFN0cmluZyA+IH4vLnNzaC9pZF9yc2EnLFxuICAgICAgJ21rZGlyIC1wIH4vLnNzaCcsXG4gICAgICAnY2htb2QgMDYwMCB+Ly5zc2gvaWRfcnNhIH4vLnNzaC9jb25maWcnLFxuICAgICAgJ3NzaC1rZXlzY2FuIC10IHJzYSBnaXRodWIuY29tID4+IH4vLnNzaC9rbm93bl9ob3N0cycsXG4gICAgXTtcblxuICB9XG5cbiAgcHJpdmF0ZSBwdXNoSGVhZCgpOiBzdHJpbmdbXSB7XG4gICAgLy8gV2Ugd2lsbCBkbyBub3RoaW5nIGFuZCBzZXQgYFNLSVA9dHJ1ZWAgaWYgdGhlIGhlYWQgcmVmIGlzIGFuIGFuY2VzdG9yIG9mIHRoZSBiYXNlIGJyYW5jaCAobm8gUFIgY291bGQgYmUgY3JlYXRlZClcbiAgICByZXR1cm4gW1xuICAgICAgYGdpdCBtZXJnZS1iYXNlIC0taXMtYW5jZXN0b3IgJHt0aGlzLnByb3BzLmhlYWQubmFtZX0gb3JpZ2luLyR7dGhpcy5iYXNlQnJhbmNofWBcbiAgICAgICAgKyBgICYmIHsgZWNobyBcIlNraXBwaW5nOiAke3RoaXMucHJvcHMuaGVhZC5uYW1lfSBpcyBhbiBhbmNlc3RvciBvZiBvcmlnaW4vJHt0aGlzLmJhc2VCcmFuY2h9XCI7IGV4cG9ydCBTS0lQPXRydWU7IH1gXG4gICAgICAgICsgYCB8fCB7IGVjaG8gXCJQdXNoaW5nOiAke3RoaXMucHJvcHMuaGVhZC5uYW1lfSBpcyBhaGVhZCBvZiBvcmlnaW4vJHt0aGlzLmJhc2VCcmFuY2h9XCI7IGV4cG9ydCBTS0lQPWZhbHNlOyB9YCxcbiAgICAgIGBnaXQgcmVtb3RlIGFkZCBvcmlnaW5fc3NoICR7dGhpcy5wcm9wcy5yZXBvLnJlcG9zaXRvcnlVcmxTc2h9YCxcbiAgICAgIC8vIE5lZWQgYC0tYXRvbWljYCwgb3RoZXJ3aXNlIGBnaXQgcHVzaGAgbWlnaHQgc3VjY2Vzc2Z1bGx5IHB1c2ggdGhlIHRhZ3MgYnV0IG5vdCB0byBgbWFpbmAuXG4gICAgICBgZ2l0IHB1c2ggLS1hdG9taWMgLS1mb2xsb3ctdGFncyBvcmlnaW5fc3NoICR7dGhpcy5wcm9wcy5oZWFkLm5hbWV9OiR7dGhpcy5wcm9wcy5oZWFkLm5hbWV9YCxcbiAgICBdO1xuICB9XG5cbiAgcHJpdmF0ZSBza2lwSWZPcGVuUHJzKGxhYmVsczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgZmlsdGVycyA9IFtcbiAgICAgIGByZXBvOiR7dGhpcy5wcm9wcy5yZXBvLm93bmVyfS8ke3RoaXMucHJvcHMucmVwby5yZXBvfWAsXG4gICAgICAnaXM6cHInLFxuICAgICAgJ2lzOm9wZW4nLFxuICAgICAgLi4ubGFiZWxzLm1hcChsID0+IGBsYWJlbDoke2x9YCksXG4gICAgXTtcblxuICAgIHJldHVybiBbXG4gICAgICBgJHt0aGlzLmdpdGh1YkN1cmxHZXQoYC9zZWFyY2gvaXNzdWVzP3E9JHtlbmNvZGVVUklDb21wb25lbnQoZmlsdGVycy5qb2luKCcgJykpfWAsICctbyBzZWFyY2guanNvbicpfWAsXG4gICAgICAnbm9kZSAtZSBcXCdwcm9jZXNzLmV4aXRDb2RlID0gcmVxdWlyZShcIi4vc2VhcmNoLmpzb25cIikudG90YWxfY291bnRcXCcnXG4gICAgICAgICsgYCB8fCB7IGVjaG8gXCJGb3VuZCBvcGVuIFBScyB3aXRoIGxhYmVsICR7bGFiZWxzfSwgc2tpcHBpbmcgUFIuXCI7IGV4cG9ydCBTS0lQPXRydWU7IH1gLFxuICAgIF07XG4gIH1cblxuXG4gIHByaXZhdGUgY3JlYXRlUHVsbFJlcXVlc3QoKTogc3RyaW5nW10ge1xuXG4gICAgY29uc3QgaGVhZCA9IHRoaXMucHJvcHMuaGVhZC5uYW1lO1xuICAgIGNvbnN0IGJhc2UgPSB0aGlzLmJhc2VCcmFuY2g7XG5cbiAgICBpZiAoaGVhZCA9PT0gYmFzZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBIZWFkIGJyYW5jaCAoXCIke2Jhc2V9XCIpIGlzIHRoZSBzYW1lIGFzIHRoZSBiYXNlIGJyYW5jaCAoXCIke2hlYWR9XCIpYCk7XG4gICAgfVxuXG4gICAgY29uc3QgcHJvcHMgPSB0aGlzLnByb3BzO1xuICAgIGNvbnN0IHRpdGxlID0gcHJvcHMudGl0bGUgPz8gYE1lcmdlICR7aGVhZH0gdG8gJHtiYXNlfWA7XG4gICAgY29uc3QgYm9keSA9IHRoaXMucHJvcHMuYm9keSA/PyAnJztcblxuICAgIGNvbnN0IGNyZWF0ZVJlcXVlc3QgPSB7IHRpdGxlLCBiYXNlLCBoZWFkIH07XG5cbiAgICBjb25zdCBjb21tYW5kcyA9IFtdO1xuXG4gICAgLy8gY3JlYXRlIHRoZSBQUlxuICAgIGNvbW1hbmRzLnB1c2goYCR7dGhpcy5naXRodWJDdXJsKCcvcHVsbHMnLCAnLVggUE9TVCAtbyBwci5qc29uJywgY3JlYXRlUmVxdWVzdCl9ICYmIGV4cG9ydCBQUl9OVU1CRVI9JChub2RlIC1wICdyZXF1aXJlKFwiLi9wci5qc29uXCIpLm51bWJlcicpYCk7XG5cbiAgICAvLyB1cGRhdGUgdGhlIGJvZHlcbiAgICBjb21tYW5kcy5wdXNoKHRoaXMuZ2l0aHViQ3VybCgnL3B1bGxzLyRQUl9OVU1CRVInLCAnLVggUEFUQ0gnLCB7IGJvZHk6IGJvZHkgfSkpO1xuXG4gICAgaWYgKHRoaXMucHJvcHMubGFiZWxzICYmIHRoaXMucHJvcHMubGFiZWxzLmxlbmd0aCA+IDApIHtcbiAgICAvLyBhcHBseSBsYWJlbHMuXG4gICAgICBjb21tYW5kcy5wdXNoKHRoaXMuZ2l0aHViQ3VybCgnL2lzc3Vlcy8kUFJfTlVNQkVSL2xhYmVscycsICctWCBQT1NUJywgeyBsYWJlbHM6IHRoaXMucHJvcHMubGFiZWxzIH0pKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29tbWFuZHM7XG5cbiAgfVxuXG4gIHByaXZhdGUgZ2l0aHViQ3VybCh1cmk6IHN0cmluZywgY29tbWFuZDogc3RyaW5nLCByZXF1ZXN0OiBhbnkpOiBzdHJpbmcge1xuICAgIHJldHVybiBbXG4gICAgICAnY3VybCAtLWZhaWwnLFxuICAgICAgY29tbWFuZCxcbiAgICAgICctLWhlYWRlciBcIkF1dGhvcml6YXRpb246IHRva2VuICRHSVRIVUJfVE9LRU5cIicsXG4gICAgICAnLS1oZWFkZXIgXCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cIicsXG4gICAgICBgLWQgJHtKU09OLnN0cmluZ2lmeShKU09OLnN0cmluZ2lmeShyZXF1ZXN0KSl9YCxcbiAgICAgIGBodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zLyR7dGhpcy5wcm9wcy5yZXBvLm93bmVyfS8ke3RoaXMucHJvcHMucmVwby5yZXBvfSR7dXJpfWAsXG4gICAgXS5qb2luKCcgJyk7XG4gIH1cblxuICBwcml2YXRlIGdpdGh1YkN1cmxHZXQodXJpOiBzdHJpbmcsIGNvbW1hbmQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFtcbiAgICAgICdjdXJsIC0tZmFpbCcsXG4gICAgICBjb21tYW5kLFxuICAgICAgJy0taGVhZGVyIFwiQXV0aG9yaXphdGlvbjogdG9rZW4gJEdJVEhVQl9UT0tFTlwiJyxcbiAgICAgICctLWhlYWRlciBcIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vanNvblwiJyxcbiAgICAgIGAnaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbSR7dXJpfSdgLFxuICAgIF0uam9pbignICcpO1xuICB9XG5cbn1cblxuIl19
222
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJwci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEscUNBTWlCO0FBQ2pCLDRDQUE2RTtBQUM3RSw0REFBOEM7QUFvTDlDOztHQUVHO0FBQ0gsTUFBYSxlQUFnQixTQUFRLG1CQUFTO0lBa0I1QyxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQTJCOztRQUNwRSxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBQSxNQUFBLEtBQUssQ0FBQyxJQUFJLDBDQUFFLElBQUksbUNBQUksUUFBUSxDQUFDO1FBQy9DLElBQUksQ0FBQyxVQUFVLEdBQUcsTUFBQSxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sbUNBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN2RCxJQUFJLENBQUMsT0FBTyxHQUFHLE1BQUEsS0FBSyxDQUFDLE9BQU8sbUNBQUksRUFBRSxDQUFDO1FBRW5DLEtBQUssTUFBTSxFQUFFLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDMUMsSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFO2dCQUNoRixNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLENBQUMsVUFBVSxxQ0FBcUMsRUFBRSxFQUFFLENBQUMsQ0FBQzthQUMzRjtTQUNGO1FBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUM7UUFDN0MsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxXQUFX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TUFBTSxFQUFFLENBQUMsQ0FBQyxDQUFDO1NBQ3ZHO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFFbEIsQ0FBQztJQUVPLFVBQVUsQ0FBQyxHQUFXLEVBQUUsT0FBZSxFQUFFLE9BQVk7UUFDM0QsT0FBTztZQUNMLGFBQWE7WUFDYixPQUFPO1lBQ1AsK0NBQStDO1lBQy9DLDJDQUEyQztZQUMzQyxNQUFNLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFO1lBQy9DLGdDQUFnQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxLQUFLLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLEdBQUcsRUFBRTtTQUN0RixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFTyxhQUFhLENBQUMsR0FBVyxFQUFFLE9BQWU7UUFDaEQsT0FBTztZQUNMLGFBQWE7WUFDYixPQUFPO1lBQ1AsK0NBQStDO1lBQy9DLDJDQUEyQztZQUMzQywwQkFBMEIsR0FBRyxHQUFHO1NBQ2pDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2QsQ0FBQztDQUVGO0FBM1FELDBDQTJRQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnN0cnVjdCwgRHVyYXRpb24sXG4gIGF3c19jbG91ZHdhdGNoIGFzIGNsb3Vkd2F0Y2gsXG4gIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLFxuICBhd3NfZXZlbnRzIGFzIGV2ZW50cyxcbiAgYXdzX2V2ZW50c190YXJnZXRzIGFzIGV2ZW50c190YXJnZXRzLFxufSBmcm9tICdtb25vY2RrJztcbmltcG9ydCB7IEJ1aWxkRW52aXJvbm1lbnRQcm9wcywgY3JlYXRlQnVpbGRFbnZpcm9ubWVudCB9IGZyb20gJy4uL2J1aWxkLWVudic7XG5pbXBvcnQgKiBhcyBwZXJtaXNzaW9ucyBmcm9tICcuLi9wZXJtaXNzaW9ucyc7XG5pbXBvcnQgeyBXcml0YWJsZUdpdEh1YlJlcG8gfSBmcm9tICcuLi9yZXBvJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIFB1bGwgUmVxdWVzdCBKb2IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b1B1bGxSZXF1ZXN0T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBicmFuY2ggb2YgdGhlIFBSLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnbWFzdGVyJ1xuICAgKi9cbiAgYmFzZT86IEJhc2U7XG5cbiAgLyoqXG4gICAqIFRydWUgaWYgeW91IG9ubHkgd2FudCB0byBwdXNoIHRoZSBoZWFkIGJyYW5jaCB3aXRob3V0IGNyZWF0aW5nIGEgUFIuXG4gICAqIFVzZWZ1bCB3aGVuIHVzZWQgYWxvbmcgd2l0aCAnY29tbWl0cycgdG8gZXhlY3V0ZSBhIGNvbW1pdC1hbmQtcHVzaCBhdXRvbWF0aWNhbGx5LlxuICAgKlxuICAgKiAvLyBUT0RPOiBDb25zaWRlciBtb3ZpbmcgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIGEgc2VwYXJhdGUgY29uc3RydWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcHVzaE9ubHk/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaXRsZSBvZiB0aGUgUFIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGBNZXJnZSAke2hlYWR9IHRvICR7YmFzZX1gXG4gICAqL1xuICB0aXRsZT86IHN0cmluZztcblxuICAvKipcbiAgICogQm9keSB0aGUgUFIuIE5vdGUgdGhhdCB0aGUgYm9keSBpcyB1cGRhdGVkIHBvc3QgUFIgY3JlYXRpb24sXG4gICAqIHRoaXMgbWVhbnMgeW91IGNhbiB1c2UgdGhlICRQUl9OVU1CRVIgZW52IHZhcmlhYmxlIHRvIHJlZmVyIHRvIHRoZSBQUiBpdHNlbGYuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYm9keS5cbiAgICovXG4gIGJvZHk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIExhYmVscyBhcHBsaWVkIHRvIHRoZSBQUi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBsYWJlbHMuXG4gICAqL1xuICBsYWJlbHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQnVpbGQgZW52aXJvbm1lbnQgZm9yIHRoZSBDb2RlQnVpbGQgam9iLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlZmF1bHQgY29uZmlndXJhdGlvbi5cbiAgICovXG4gIGJ1aWxkPzogQnVpbGRFbnZpcm9ubWVudFByb3BzO1xuXG4gIC8qKlxuICAgKiBHaXQgY2xvbmUgZGVwdGguXG4gICAqXG4gICAqIEBkZWZhdWx0IDAgKGNsb25lcyB0aGUgZW50aXJlIHJlcG9zaXRvcnkgcmV2aXNpb25zKVxuICAgKi9cbiAgY2xvbmVEZXB0aD86IG51bWJlcjtcblxuICAvKipcbiAgICogS2V5IHZhbHVlIHBhaXJzIG9mIHZhcmlhYmxlcyB0byBleHBvcnQuIFRoZXNlIHZhcmlhYmxlcyB3aWxsIGJlIGF2YWlsYWJsZSBmb3IgZHluYW1pYyBldmFsdWF0aW9uIGluIGFueVxuICAgKiBzdWJzZXF1ZW50IGNvbW1hbmQuXG4gICAqXG4gICAqIEtleSAtIFZhcmlhYmxlIG5hbWUgKGUuZyBWRVJTSU9OKVxuICAgKiBWYWx1ZSAtIENvbW1hbmQgdGhhdCBldmFsdWF0ZXMgdG8gdGhlIHZhbHVlIG9mIHRoZSB2YXJpYWJsZSAoZS5nICdnaXQgZGVzY3JpYmUnKVxuICAgKlxuICAgKiBFeGFtcGxlOlxuICAgKlxuICAgKiBDb25maWd1cmUgYW4gZXhwb3J0IGluIHRoZSBmb3JtIG9mOlxuICAgKlxuICAgKiB7ICdWRVJTSU9OJzogJ2dpdCBkZXNjcmliZScgfVxuICAgKlxuICAgKiBVc2UgdGhlICRWRVJTSU9OIHZhcmlhYmxlIGluIHRoZSBQUiB0aXRsZTogJ2Nob3JlKHJlbGVhc2UpOiAkVkVSU0lPTidcbiAgICpcbiAgICogTm90ZSB0aGF0IHRoZXNlIGV4cG9ydHMgYXJlIGV4ZWN1dGVkIGFmdGVyIHRoZSBgY29tbWFuZHNgIGV4ZWN1dGlvbixcbiAgICogc28gdGhleSBoYXZlIGFjY2VzcyB0byB0aGUgYXJ0aWZhY3RzIHNhaWQgY29tbWFuZHMgcHJvZHVjZSAoZS5nIHZlcnNpb24gYnVtcCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZXhwb3J0c1xuICAgKi9cbiAgZXhwb3J0cz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBzY2hlZHVsZSB0byBwcm9kdWNlIGFuIGF1dG9tYXRpYyBQUi5cbiAgICpcbiAgICogVGhlIGV4cHJlc3Npb24gY2FuIGJlIG9uZSBvZjpcbiAgICpcbiAgICogIC0gY3JvbiBleHByZXNzaW9uLCBzdWNoIGFzIFwiY3JvbigwIDEyICogKiA/ICopXCIgd2lsbCB0cmlnZ2VyIGV2ZXJ5IGRheSBhdCAxMnBtIFVUQ1xuICAgKiAgLSByYXRlIGV4cHJlc3Npb24sIHN1Y2ggYXMgXCJyYXRlKDEgZGF5KVwiIHdpbGwgdHJpZ2dlciBldmVyeSAyNCBob3VycyBmcm9tIHRoZSB0aW1lIG9mIGRlcGxveW1lbnRcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRXYXRjaC9sYXRlc3QvZXZlbnRzL1NjaGVkdWxlZEV2ZW50cy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2NoZWR1bGUsIHNob3VsZCBiZSB0cmlnZ2VyZWQgbWFudWFsbHkuXG4gICAqL1xuICBzY2hlZHVsZUV4cHJlc3Npb24/OiBzdHJpbmc7XG5cbn1cblxuZXhwb3J0IGludGVyZmFjZSBBdXRvUHVsbFJlcXVlc3RQcm9wcyBleHRlbmRzIEF1dG9QdWxsUmVxdWVzdE9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHJlcG9zaXRvcnkgdG8gY3JlYXRlIGEgUFIgaW4uXG4gICAqL1xuICByZXBvOiBXcml0YWJsZUdpdEh1YlJlcG87XG5cbiAgLyoqXG4gICAqIEEgc2V0IG9mIGNvbW1hbmRzIHRvIHJ1biBhZ2FpbnN0IHRoZSBoZWFkIGJyYW5jaC5cbiAgICogVXNlZnVsIGZvciB0aGluZ3MgbGlrZSB2ZXJzaW9uIGJ1bXBzIG9yIGFueSBhdXRvLWdlbmVyYXRlZCBjb21taXRzLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgeW91IGNhbm5vdCB1c2UgZXhwb3J0IGtleXMgaW4gdGhlc2UgY29tbWFuZHMgKFNlZSBgZXhwb3J0c2AgcHJvcGVydHkpXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29tbWFuZHMuXG4gICAqL1xuICBjb21tYW5kcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgaGVhZCBicmFuY2ggb2YgdGhlIFBSLlxuICAgKi9cbiAgaGVhZDogSGVhZDtcblxuICAvKipcbiAgICogVGhlIGV4aXQgY29kZSBvZiB0aGlzIGNvbW1hbmQgZGV0ZXJtaW5lcyB3aGV0aGVyIG9yIG5vdCB0byBwcm9jZWVkIHdpdGggdGhlXG4gICAqIFBSIGNyZWF0aW9uLiBJZiBjb25maWd1cmVkLCB0aGlzIGNvbW1hbmQgaXMgdGhlIGZpcnN0IG9uZSB0byBydW4sIGFuZCBpZiBpdCBmYWlscywgYWxsXG4gICAqIG90aGVyIGNvbW1hbmRzIHdpbGwgYmUgc2tpcHBlZC5cbiAgICpcbiAgICogVGhpcyBjb21tYW5kIGlzIHRoZSBmaXJzdCB0byBleGVjdXRlLCBhbmQgc2hvdWxkIG5vdCBhc3N1bWUgYW55IHByZS1leGlzdGluZyBzdGF0ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb25kaXRpb25cbiAgICovXG4gIGNvbmRpdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYW55IFBSIGxhYmVsZWQgd2l0aCB0aGUgZ2l2ZW4gbGFiZWxzIGlzIHN0aWxsIG9wZW4sIG5vIG5ldyBQUiB3aWxsIGJlIGNyZWF0ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkb24ndCBsb29rIGF0IG9wZW4gUFJzXG4gICAqL1xuICByZWFkb25seSBza2lwSWZPcGVuUHJzV2l0aExhYmVscz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNvbmZpZ3VyaW5nIHRoZSBiYXNlIGJyYW5jaCBvZiB0aGUgUFIuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZSB7XG5cbiAgLyoqXG4gICAqIEJyYW5jaCBuYW1lLlxuICAgKlxuICAgKiBUaGlzIGJyYW5jaCBtdXN0IGV4aXN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCAnbWFzdGVyJ1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjb25maWd1cmluZyB0aGUgaGVhZCBicmFuY2ggb2YgdGhlIFBSLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEhlYWQge1xuXG4gIC8qKlxuICAgKiBCcmFuY2ggbmFtZS5cbiAgICpcbiAgICogVGhpcyBicmFuY2ggd2lsbCBiZSBjcmVhdGVkIGlmIGl0IGRvZXNuJ3QgZXhpc3QuXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzb3VyY2Ugc2hhIG9mIHRoZSBicmFuY2guXG4gICAqXG4gICAqIElmIHRoZSBnaXZlbiBicmFuY2ggYWxyZWFkeSBleGlzdHMsIHRoaXMgc2hhIHdpbGwgYmUgYXV0by1tZXJnZWQgb250byBpdC4gTm90ZSB0aGF0IGluIHN1Y2ggYSBjYXNlLFxuICAgKiB0aGUgUFIgY3JlYXRpb24gbWlnaHQgZmFpbCBpbiBjYXNlIHRoZXJlIGFyZSBtZXJnZSBjb25mbGljdHMuXG4gICAqXG4gICAqIElmIHRoZSBnaXZlbiBicmFuY2ggZG9lc24ndCBleGlzdCwgdGhlIG5ld2x5IGNyZWF0ZWQgYnJhbmNoIHdpbGwgYmUgYmFzZWQgb2YgdGhpcyBoYXNoLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgZHluYW1pYyBleHBvcnRzIGFyZSBub3QgYWxsb3dlZCBmb3IgdGhpcyBwcm9wZXJ0eS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgYmFzZSBicmFuY2ggb2YgdGhlIHByLlxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBDb2RlQnVpbGQgam9iIHRoYXQsIHdoZW4gdHJpZ2dlcmVkLCBvcGVucyBhIEdpdEh1YiBQdWxsIFJlcXVlc3QuXG4gKi9cbmV4cG9ydCBjbGFzcyBBdXRvUHVsbFJlcXVlc3QgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuXG4gIC8qKlxuICAgKiBDbG91ZFdhdGNoIGFsYXJtIHRoYXQgd2lsbCBiZSB0cmlnZ2VyZWQgaWYgdGhlIGpvYiBmYWlscy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGFybTogY2xvdWR3YXRjaC5BbGFybTtcblxuICAvKipcbiAgICogVGhlIENvZGVCdWlsZCBwcm9qZWN0IHRoaXMgY29uc3RydWN0IGNyZWF0ZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJvamVjdDogY2J1aWxkLklQcm9qZWN0O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEF1dG9QdWxsUmVxdWVzdFByb3BzO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYmFzZUJyYW5jaDogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGhlYWRTb3VyY2U6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBleHBvcnRzOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXV0b1B1bGxSZXF1ZXN0UHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIHRoaXMuYmFzZUJyYW5jaCA9IHByb3BzLmJhc2U/Lm5hbWUgPz8gJ21hc3Rlcic7XG4gICAgdGhpcy5oZWFkU291cmNlID0gcHJvcHMuaGVhZC5zb3VyY2UgPz8gdGhpcy5iYXNlQnJhbmNoO1xuICAgIHRoaXMuZXhwb3J0cyA9IHByb3BzLmV4cG9ydHMgPz8ge307XG5cbiAgICBmb3IgKGNvbnN0IGV4IG9mIE9iamVjdC5rZXlzKHRoaXMuZXhwb3J0cykpIHtcbiAgICAgIGlmICh0aGlzLmhlYWRTb3VyY2UuaW5jbHVkZXMoYFxcJHske2V4fX1gKSB8fCB0aGlzLmhlYWRTb3VyY2UuaW5jbHVkZXMoYFxcJCR7ZXh9YCkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBoZWFkIHNvdXJjZSAoJHt0aGlzLmhlYWRTb3VyY2V9KSBjYW5ub3QgY29udGFpbiBkeW5hbWljIGV4cG9ydHM6ICR7ZXh9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3Qgc3NoS2V5U2VjcmV0ID0gcHJvcHMucmVwby5zc2hLZXlTZWNyZXQ7XG4gICAgY29uc3QgY29tbWl0RW1haWwgPSBwcm9wcy5yZXBvLmNvbW1pdEVtYWlsO1xuICAgIGNvbnN0IGNvbW1pdFVzZXJuYW1lID0gcHJvcHMucmVwby5jb21taXRVc2VybmFtZTtcbiAgICBjb25zdCBjbG9uZURlcHRoID0gcHJvcHMuY2xvbmVEZXB0aCA9PT0gdW5kZWZpbmVkID8gMCA6IHByb3BzLmNsb25lRGVwdGg7XG5cbiAgICBjb25zdCBuZWVkc0dpdEh1YlRva2VuU2VjcmV0ID0gIXRoaXMucHJvcHMucHVzaE9ubHkgfHwgISF0aGlzLnByb3BzLnNraXBJZk9wZW5QcnNXaXRoTGFiZWxzO1xuXG4gICAgbGV0IGNvbW1hbmRzOiBzdHJpbmdbXSA9IFtcblxuICAgICAgLi4udGhpcy5jb25maWd1cmVTc2hBY2Nlc3MoKSxcblxuICAgICAgLy8gd2hlbiB0aGUgam9iIGlzIHRyaWdnZXJlZCBhcyBhIENvZGVQaXBlbGluZSBhY3Rpb24sIHRoZSB3b3JraW5nIGRpcmVjdG9yeVxuICAgICAgLy8gaXMgcG9wdWxhdGVkIHdpdGggdGhlIG91dHB1dCBhcnRpZmFjdCBvZiB0aGUgQ29kZUNvbW1pdFNvdXJjZUFjdGlvbiwgd2hpY2ggZG9lc24ndCBpbmNsdWRlXG4gICAgICAvLyB0aGUgLmdpdCBkaXJlY3RvcnkgaW4gdGhlIHppcHBlZCBzMyBhcmNoaXZlLiAoWWVhaCwgZnVuIHN0dWZmKS5cbiAgICAgIC8vIHNlZSBodHRwczovL2l0bmV4dC5pby9ob3ctdG8tYWNjZXNzLWdpdC1tZXRhZGF0YS1pbi1jb2RlYnVpbGQtd2hlbi11c2luZy1jb2RlcGlwZWxpbmUtY29kZWNvbW1pdC1jZWFjZjJjNWMxZGNcbiAgICAgIC4uLnRoaXMuY2xvbmVJZk5lZWRlZCgpLFxuICAgIF07XG5cbiAgICBpZiAodGhpcy5wcm9wcy5jb25kaXRpb24pIHtcbiAgICAgIC8vIHRoZXJlJ3Mgbm8gd2F5IHRvIHN0b3AgYSBCdWlsZFNwZWMgZXhlY3V0aW9uIGhhbGZ3YXkgdGhyb3VnaCB3aXRob3V0IHRocm93aW5nIGFuIGVycm9yLiBCZWxpZXZlIG1lLCBJXG4gICAgICAvLyBjaGVja2VkIHRoZSBjb2RlLiBJbnN0ZWFkIHdlIGRlZmluZSBhIHZhcmlhYmxlIHRoYXQgd2Ugd2lsbCBzd2l0Y2ggYWxsIG90aGVyIGxpbmVzIG9uL29mZi5cbiAgICAgIGNvbW1hbmRzLnB1c2goYCR7dGhpcy5wcm9wcy5jb25kaXRpb259IGAgK1xuICAgICAgJyYmIHsgZWNobyBcXCdTa2lwIGNvbmRpdGlvbiBpcyBtZXQsIHNraXBwaW5nLi4uXFwnICYmIGV4cG9ydCBTS0lQPXRydWU7IH0gJyArXG4gICAgICAnfHwgeyBlY2hvIFxcJ1NraXAgY29uZGl0aW9uIGlzIG5vdCBtZXQsIGNvbnRpbnVpbmcuLi5cXCcgJiYgZXhwb3J0IFNLSVA9ZmFsc2U7IH0nKTtcbiAgICB9XG5cbiAgICAvLyByZWFkIHRoZSB0b2tlblxuICAgIGlmIChuZWVkc0dpdEh1YlRva2VuU2VjcmV0KSB7XG4gICAgICBjb21tYW5kcy5wdXNoKGBleHBvcnQgR0lUSFVCX1RPS0VOPSQoYXdzIHNlY3JldHNtYW5hZ2VyIGdldC1zZWNyZXQtdmFsdWUgLS1zZWNyZXQtaWQgXCIke3RoaXMucHJvcHMucmVwby50b2tlblNlY3JldEFybn1cIiAtLW91dHB1dD10ZXh0IC0tcXVlcnk9U2VjcmV0U3RyaW5nKWApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLnNraXBJZk9wZW5QcnNXaXRoTGFiZWxzKSB7XG4gICAgICBjb21tYW5kcy5wdXNoKC4uLnRoaXMuc2tpcElmT3BlblBycyh0aGlzLnByb3BzLnNraXBJZk9wZW5QcnNXaXRoTGFiZWxzKSk7XG4gICAgfVxuXG4gICAgY29tbWFuZHMucHVzaChcbiAgICAgIC4uLnRoaXMuY3JlYXRlSGVhZCgpLFxuICAgICAgLi4udGhpcy5wdXNoSGVhZCgpLFxuICAgICk7XG5cbiAgICBpZiAoIXRoaXMucHJvcHMucHVzaE9ubHkpIHtcbiAgICAgIGNvbW1hbmRzLnB1c2goLi4udGhpcy5jcmVhdGVQdWxsUmVxdWVzdCgpKTtcbiAgICB9XG5cbiAgICAvLyB0b2dnbGUgYWxsIGNvbW1hbmRzIGFjY29yZGluZyB0byB0aGUgU0tJUCB2YXJpYWJsZS5cbiAgICBjb21tYW5kcyA9IGNvbW1hbmRzLm1hcCgoY29tbWFuZDogc3RyaW5nKSA9PiBgJFNLSVAgfHwgeyAke2NvbW1hbmR9IDsgfWApO1xuXG4gICAgLy8gaW50aWFsbHkgYWxsIGNvbW1hbmRzIGFyZSBlbmFibGVkLlxuICAgIGNvbW1hbmRzLnVuc2hpZnQoJ2V4cG9ydCBTS0lQPWZhbHNlJyk7XG5cbiAgICB0aGlzLnByb2plY3QgPSBuZXcgY2J1aWxkLlByb2plY3QodGhpcywgJ1B1bGxSZXF1ZXN0Jywge1xuICAgICAgc291cmNlOiBwcm9wcy5yZXBvLmNyZWF0ZUJ1aWxkU291cmNlKHRoaXMsIGZhbHNlLCB7IGNsb25lRGVwdGggfSksXG4gICAgICBlbnZpcm9ubWVudDogY3JlYXRlQnVpbGRFbnZpcm9ubWVudChwcm9wcy5idWlsZCA/PyB7fSksXG4gICAgICBidWlsZFNwZWM6IGNidWlsZC5CdWlsZFNwZWMuZnJvbU9iamVjdCh7XG4gICAgICAgIHZlcnNpb246ICcwLjInLFxuICAgICAgICBwaGFzZXM6IHtcbiAgICAgICAgICBwcmVfYnVpbGQ6IHtcbiAgICAgICAgICAgIGNvbW1hbmRzOiBbXG4gICAgICAgICAgICAgIGBnaXQgY29uZmlnIC0tZ2xvYmFsIHVzZXIuZW1haWwgXCIke2NvbW1pdEVtYWlsfVwiYCxcbiAgICAgICAgICAgICAgYGdpdCBjb25maWcgLS1nbG9iYWwgdXNlci5uYW1lIFwiJHtjb21taXRVc2VybmFtZX1cImAsXG4gICAgICAgICAgICBdLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYnVpbGQ6IHsgY29tbWFuZHMgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMucHJvamVjdC5yb2xlKSB7XG4gICAgICBwZXJtaXNzaW9ucy5ncmFudFNlY3JldFJlYWQoc3NoS2V5U2VjcmV0LCB0aGlzLnByb2plY3Qucm9sZSk7XG5cbiAgICAgIGlmIChuZWVkc0dpdEh1YlRva2VuU2VjcmV0KSB7XG4gICAgICAgIHBlcm1pc3Npb25zLmdyYW50U2VjcmV0UmVhZCh7IHNlY3JldEFybjogcHJvcHMucmVwby50b2tlblNlY3JldEFybiB9LCB0aGlzLnByb2plY3Qucm9sZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnNjaGVkdWxlRXhwcmVzc2lvbikge1xuICAgICAgY29uc3Qgc2NoZWR1bGUgPSBldmVudHMuU2NoZWR1bGUuZXhwcmVzc2lvbihwcm9wcy5zY2hlZHVsZUV4cHJlc3Npb24pO1xuICAgICAgbmV3IGV2ZW50cy5SdWxlKHRoaXMsICdTY2hlZHVsZXInLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOiAnU2NoZWR1bGVzIGFuIGF1dG9tYXRpYyBQdWxsIFJlcXVlc3QgZm9yIHRoaXMgcmVwb3NpdG9yeScsXG4gICAgICAgIHNjaGVkdWxlLFxuICAgICAgICB0YXJnZXRzOiBbbmV3IGV2ZW50c190YXJnZXRzLkNvZGVCdWlsZFByb2plY3QodGhpcy5wcm9qZWN0KV0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmFsYXJtID0gdGhpcy5wcm9qZWN0Lm1ldHJpY0ZhaWxlZEJ1aWxkcyh7IHBlcmlvZDogRHVyYXRpb24uc2Vjb25kcygzMDApIH0pLmNyZWF0ZUFsYXJtKHRoaXMsICdBdXRvUHVsbFJlcXVlc3RGYWlsZWRBbGFybScsIHtcbiAgICAgIHRocmVzaG9sZDogMSxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiAxLFxuICAgICAgdHJlYXRNaXNzaW5nRGF0YTogY2xvdWR3YXRjaC5UcmVhdE1pc3NpbmdEYXRhLklHTk9SRSxcbiAgICB9KTtcbiAgfVxuICBwcml2YXRlIGNyZWF0ZUhlYWQoKTogc3RyaW5nW10ge1xuXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIGNoZWNrIGlmIGhlYWQgYnJhbmNoIGV4aXN0c1xuICAgICAgYGdpdCByZXYtcGFyc2UgLS12ZXJpZnkgb3JpZ2luLyR7dGhpcy5wcm9wcy5oZWFkLm5hbWV9IGAgK1xuXG4gICAgICAvLyBjaGVja291dCBhbmQgbWVyZ2UgaWYgaXQgZG9lcyAodGhpcyBtaWdodCBmYWlsIGR1ZSB0byBtZXJnZSBjb25mbGljdHMpXG4gICAgICBgJiYgeyBnaXQgY2hlY2tvdXQgJHt0aGlzLnByb3BzLmhlYWQubmFtZX0gJiYgZ2l0IG1lcmdlICR7dGhpcy5oZWFkU291cmNlfSAmJiAke3RoaXMucnVuQ29tbWFuZHMoKX07ICB9IGAgK1xuXG4gICAgICAvLyBjcmVhdGUgaWYgaXQgZG9lc250LiB3ZSBpbml0aWFsbHkgdXNlICd0ZW1wJyB0byBhbGxvdyB1c2luZyBleHBvcnRzIGluIHRoZSBoZWFkIGJyYW5jaCBuYW1lLiAoZS5nIGJ1bXAvJFZFUlNJT04pXG4gICAgICBgfHwgeyBnaXQgY2hlY2tvdXQgJHt0aGlzLmhlYWRTb3VyY2V9ICYmIGdpdCBjaGVja291dCAtYiB0ZW1wICYmICR7dGhpcy5ydW5Db21tYW5kcygpfSAmJiBnaXQgYnJhbmNoIC1NICR7dGhpcy5wcm9wcy5oZWFkLm5hbWV9OyB9YCxcblxuICAgIF07XG5cbiAgfVxuXG4gIHByaXZhdGUgY2xvbmVJZk5lZWRlZCgpOiBzdHJpbmdbXSB7XG5cbiAgICByZXR1cm4gW1xuICAgICAgLy8gY2hlY2sgaWYgLmdpdCBleGlzdFxuICAgICAgJ2xzIC5naXQgJyArXG5cbiAgICAgIC8vIGFsbCBnb29kXG4gICAgICAnJiYgeyBlY2hvIFwiLmdpdCBkaXJlY3RvcnkgZXhpc3RzXCI7ICB9ICcgK1xuXG4gICAgICAvLyBjbG9uZSBpZiBpdCBkb2Vzbid0XG4gICAgICBgfHwgeyBlY2hvIFwiLmdpdCBkaXJlY3RvcnkgZG9lc25vdCBleGlzdCAtIGNsb25pbmcuLi5cIiAmJiBnaXQgaW5pdCAuICYmIGdpdCByZW1vdGUgYWRkIG9yaWdpbiBnaXRAZ2l0aHViLmNvbToke3RoaXMucHJvcHMucmVwby5vd25lcn0vJHt0aGlzLnByb3BzLnJlcG8ucmVwb30uZ2l0ICYmIGdpdCBmZXRjaCAmJiBnaXQgcmVzZXQgLS1oYXJkIG9yaWdpbi8ke3RoaXMuYmFzZUJyYW5jaH0gJiYgZ2l0IGJyYW5jaCAtTSAke3RoaXMuYmFzZUJyYW5jaH0gJiYgZ2l0IGNsZWFuIC1mcWR4OyB9YCxcblxuICAgIF07XG5cbiAgfVxuXG4gIHByaXZhdGUgcnVuQ29tbWFuZHMoKTogc3RyaW5nIHtcblxuICAgIGNvbnN0IHVzZXJDb21tYW5kcyA9IHRoaXMucHJvcHMuY29tbWFuZHMgPz8gW107XG4gICAgY29uc3QgZXhwb3J0cyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuZXhwb3J0cykubWFwKGVudHJ5ID0+IGBleHBvcnQgJHtlbnRyeVswXX09JCgke2VudHJ5WzFdfSlgKTtcblxuICAgIHJldHVybiBbXG5cbiAgICAgIC4uLnVzZXJDb21tYW5kcyxcblxuICAgICAgLy8gZXhwb3J0cyBzaG91bGQgYmUgZXhlY3V0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHVzZXIgY29tbWFuZHMgKG5vdCBiZWZvcmUpXG4gICAgICAvLyBiZWNhdXNlIHRoZXkgbWlnaHQgbmVlZCBhY2Nlc3MgdG8gYXJ0aWZhY3RzIHByb2R1Y2VkIGJ5IHRoZW0gKGUuZyB2ZXJzaW9uIGZpbGUpLlxuICAgICAgLi4uZXhwb3J0cyxcblxuICAgICAgJ2VjaG8gRmluaXNoZWQgcnVubmluZyB1c2VyIGNvbW1hbmRzJyxcbiAgICBdLmpvaW4oJyAmJiAnKTtcblxuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVTc2hBY2Nlc3MoKTogc3RyaW5nW10ge1xuXG4gICAgcmV0dXJuIFtcbiAgICAgICdhd3Mgc2VjcmV0c21hbmFnZXIgZ2V0LXNlY3JldC12YWx1ZSAnXG4gICAgICAgICsgYC0tc2VjcmV0LWlkIFwiJHt0aGlzLnByb3BzLnJlcG8uc3NoS2V5U2VjcmV0LnNlY3JldEFybn1cIiBgXG4gICAgICAgICsgJy0tb3V0cHV0PXRleHQgLS1xdWVyeT1TZWNyZXRTdHJpbmcgPiB+Ly5zc2gvaWRfcnNhJyxcbiAgICAgICdta2RpciAtcCB+Ly5zc2gnLFxuICAgICAgJ2NobW9kIDA2MDAgfi8uc3NoL2lkX3JzYSB+Ly5zc2gvY29uZmlnJyxcbiAgICAgICdzc2gta2V5c2NhbiAtdCByc2EgZ2l0aHViLmNvbSA+PiB+Ly5zc2gva25vd25faG9zdHMnLFxuICAgIF07XG5cbiAgfVxuXG4gIHByaXZhdGUgcHVzaEhlYWQoKTogc3RyaW5nW10ge1xuICAgIC8vIFdlIHdpbGwgZG8gbm90aGluZyBhbmQgc2V0IGBTS0lQPXRydWVgIGlmIHRoZSBoZWFkIHJlZiBpcyBhbiBhbmNlc3RvciBvZiB0aGUgYmFzZSBicmFuY2ggKG5vIFBSIGNvdWxkIGJlIGNyZWF0ZWQpXG4gICAgcmV0dXJuIFtcbiAgICAgIGBnaXQgbWVyZ2UtYmFzZSAtLWlzLWFuY2VzdG9yICR7dGhpcy5wcm9wcy5oZWFkLm5hbWV9IG9yaWdpbi8ke3RoaXMuYmFzZUJyYW5jaH1gXG4gICAgICAgICsgYCAmJiB7IGVjaG8gXCJTa2lwcGluZzogJHt0aGlzLnByb3BzLmhlYWQubmFtZX0gaXMgYW4gYW5jZXN0b3Igb2Ygb3JpZ2luLyR7dGhpcy5iYXNlQnJhbmNofVwiOyBleHBvcnQgU0tJUD10cnVlOyB9YFxuICAgICAgICArIGAgfHwgeyBlY2hvIFwiUHVzaGluZzogJHt0aGlzLnByb3BzLmhlYWQubmFtZX0gaXMgYWhlYWQgb2Ygb3JpZ2luLyR7dGhpcy5iYXNlQnJhbmNofVwiOyBleHBvcnQgU0tJUD1mYWxzZTsgfWAsXG4gICAgICBgZ2l0IHJlbW90ZSBhZGQgb3JpZ2luX3NzaCAke3RoaXMucHJvcHMucmVwby5yZXBvc2l0b3J5VXJsU3NofWAsXG4gICAgICAvLyBOZWVkIGAtLWF0b21pY2AsIG90aGVyd2lzZSBgZ2l0IHB1c2hgIG1pZ2h0IHN1Y2Nlc3NmdWxseSBwdXNoIHRoZSB0YWdzIGJ1dCBub3QgdG8gYG1haW5gLlxuICAgICAgYGdpdCBwdXNoIC0tYXRvbWljIC0tZm9sbG93LXRhZ3Mgb3JpZ2luX3NzaCAke3RoaXMucHJvcHMuaGVhZC5uYW1lfToke3RoaXMucHJvcHMuaGVhZC5uYW1lfWAsXG4gICAgXTtcbiAgfVxuXG4gIHByaXZhdGUgc2tpcElmT3BlblBycyhsYWJlbHM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGZpbHRlcnMgPSBbXG4gICAgICBgcmVwbzoke3RoaXMucHJvcHMucmVwby5vd25lcn0vJHt0aGlzLnByb3BzLnJlcG8ucmVwb31gLFxuICAgICAgJ2lzOnByJyxcbiAgICAgICdpczpvcGVuJyxcbiAgICAgIC4uLmxhYmVscy5tYXAobCA9PiBgbGFiZWw6JHtsfWApLFxuICAgIF07XG5cbiAgICByZXR1cm4gW1xuICAgICAgYCR7dGhpcy5naXRodWJDdXJsR2V0KGAvc2VhcmNoL2lzc3Vlcz9xPSR7ZW5jb2RlVVJJQ29tcG9uZW50KGZpbHRlcnMuam9pbignICcpKX1gLCAnLW8gc2VhcmNoLmpzb24nKX1gLFxuICAgICAgJ25vZGUgLWUgXFwncHJvY2Vzcy5leGl0Q29kZSA9IHJlcXVpcmUoXCIuL3NlYXJjaC5qc29uXCIpLnRvdGFsX2NvdW50XFwnJ1xuICAgICAgICArIGAgfHwgeyBlY2hvIFwiRm91bmQgb3BlbiBQUnMgd2l0aCBsYWJlbCAke2xhYmVsc30sIHNraXBwaW5nIFBSLlwiOyBleHBvcnQgU0tJUD10cnVlOyB9YCxcbiAgICBdO1xuICB9XG5cblxuICBwcml2YXRlIGNyZWF0ZVB1bGxSZXF1ZXN0KCk6IHN0cmluZ1tdIHtcblxuICAgIGNvbnN0IGhlYWQgPSB0aGlzLnByb3BzLmhlYWQubmFtZTtcbiAgICBjb25zdCBiYXNlID0gdGhpcy5iYXNlQnJhbmNoO1xuXG4gICAgaWYgKGhlYWQgPT09IGJhc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSGVhZCBicmFuY2ggKFwiJHtiYXNlfVwiKSBpcyB0aGUgc2FtZSBhcyB0aGUgYmFzZSBicmFuY2ggKFwiJHtoZWFkfVwiKWApO1xuICAgIH1cblxuICAgIGNvbnN0IHByb3BzID0gdGhpcy5wcm9wcztcbiAgICBjb25zdCB0aXRsZSA9IHByb3BzLnRpdGxlID8/IGBNZXJnZSAke2hlYWR9IHRvICR7YmFzZX1gO1xuICAgIGNvbnN0IGJvZHkgPSB0aGlzLnByb3BzLmJvZHkgPz8gJyc7XG5cbiAgICBjb25zdCBjcmVhdGVSZXF1ZXN0ID0geyB0aXRsZSwgYmFzZSwgaGVhZCB9O1xuXG4gICAgY29uc3QgY29tbWFuZHMgPSBbXTtcblxuICAgIC8vIGNyZWF0ZSB0aGUgUFJcbiAgICBjb21tYW5kcy5wdXNoKGAke3RoaXMuZ2l0aHViQ3VybCgnL3B1bGxzJywgJy1YIFBPU1QgLW8gcHIuanNvbicsIGNyZWF0ZVJlcXVlc3QpfSAmJiBleHBvcnQgUFJfTlVNQkVSPSQobm9kZSAtcCAncmVxdWlyZShcIi4vcHIuanNvblwiKS5udW1iZXInKWApO1xuXG4gICAgLy8gdXBkYXRlIHRoZSBib2R5XG4gICAgY29tbWFuZHMucHVzaCh0aGlzLmdpdGh1YkN1cmwoJy9wdWxscy8kUFJfTlVNQkVSJywgJy1YIFBBVENIJywgeyBib2R5OiBib2R5IH0pKTtcblxuICAgIGlmICh0aGlzLnByb3BzLmxhYmVscyAmJiB0aGlzLnByb3BzLmxhYmVscy5sZW5ndGggPiAwKSB7XG4gICAgLy8gYXBwbHkgbGFiZWxzLlxuICAgICAgY29tbWFuZHMucHVzaCh0aGlzLmdpdGh1YkN1cmwoJy9pc3N1ZXMvJFBSX05VTUJFUi9sYWJlbHMnLCAnLVggUE9TVCcsIHsgbGFiZWxzOiB0aGlzLnByb3BzLmxhYmVscyB9KSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbW1hbmRzO1xuXG4gIH1cblxuICBwcml2YXRlIGdpdGh1YkN1cmwodXJpOiBzdHJpbmcsIGNvbW1hbmQ6IHN0cmluZywgcmVxdWVzdDogYW55KTogc3RyaW5nIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2N1cmwgLS1mYWlsJyxcbiAgICAgIGNvbW1hbmQsXG4gICAgICAnLS1oZWFkZXIgXCJBdXRob3JpemF0aW9uOiB0b2tlbiAkR0lUSFVCX1RPS0VOXCInLFxuICAgICAgJy0taGVhZGVyIFwiQ29udGVudC1UeXBlOiBhcHBsaWNhdGlvbi9qc29uXCInLFxuICAgICAgYC1kICR7SlNPTi5zdHJpbmdpZnkoSlNPTi5zdHJpbmdpZnkocmVxdWVzdCkpfWAsXG4gICAgICBgaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8ke3RoaXMucHJvcHMucmVwby5vd25lcn0vJHt0aGlzLnByb3BzLnJlcG8ucmVwb30ke3VyaX1gLFxuICAgIF0uam9pbignICcpO1xuICB9XG5cbiAgcHJpdmF0ZSBnaXRodWJDdXJsR2V0KHVyaTogc3RyaW5nLCBjb21tYW5kOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBbXG4gICAgICAnY3VybCAtLWZhaWwnLFxuICAgICAgY29tbWFuZCxcbiAgICAgICctLWhlYWRlciBcIkF1dGhvcml6YXRpb246IHRva2VuICRHSVRIVUJfVE9LRU5cIicsXG4gICAgICAnLS1oZWFkZXIgXCJDb250ZW50LVR5cGU6IGFwcGxpY2F0aW9uL2pzb25cIicsXG4gICAgICBgJ2h0dHBzOi8vYXBpLmdpdGh1Yi5jb20ke3VyaX0nYCxcbiAgICBdLmpvaW4oJyAnKTtcbiAgfVxuXG59XG5cbiJdfQ==