aws-delivlib 13.7.10 → 14.0.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 (97) hide show
  1. package/cdk.out/asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1/__entrypoint__.js +119 -0
  2. package/cdk.out/{asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538 → asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1}/index.d.ts +0 -0
  3. package/cdk.out/{asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538 → asset.1f7e277bd526ebce1983fa1e7a84a5281ec533d9187caaebb773681bbf7bf4c1}/index.js +0 -0
  4. package/cdk.out/{asset.ca50c9b7760151d8e8ce6e39851032d4eff4836ea1ee806eaa944aaef110a353 → asset.7ada94e893d605ebbcf2f5b3bedc83bad3c704ab7892c1f2af45bfd79fb751e7}/index.js +20 -4
  5. package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/create-release.js +0 -0
  6. package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/package-lock.json +0 -0
  7. package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/package.json +0 -0
  8. package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/publish.sh +0 -0
  9. package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/sign-files.sh +0 -0
  10. package/cdk.out/{asset.1c4d00e8f9125a52b4db3e74494c950959ffa433738adcf5c9f7251e4d255451 → asset.7bfdb1075bf8728fe236bcef49fbf08ac3ead6c9947f5d65f25b5a7c09758bb1}/with-signing-key.sh +1 -7
  11. package/cdk.out/cdk.out +1 -1
  12. package/cdk.out/delivlib-test.assets.json +12 -12
  13. package/cdk.out/delivlib-test.template.json +7135 -7704
  14. package/cdk.out/manifest.json +152 -2498
  15. package/cdk.out/tree.json +1059 -1427
  16. package/lib/auto-build.d.ts +2 -1
  17. package/lib/auto-build.js +8 -7
  18. package/lib/auto-build.ts +3 -2
  19. package/lib/build-env.d.ts +1 -1
  20. package/lib/build-env.js +4 -4
  21. package/lib/build-env.ts +1 -1
  22. package/lib/canary.d.ts +2 -1
  23. package/lib/canary.js +7 -6
  24. package/lib/canary.ts +2 -2
  25. package/lib/change-controller.d.ts +2 -1
  26. package/lib/change-controller.js +20 -18
  27. package/lib/change-controller.ts +6 -5
  28. package/lib/chime-notifier/chime-notifier.d.ts +2 -1
  29. package/lib/chime-notifier/chime-notifier.js +12 -11
  30. package/lib/chime-notifier/chime-notifier.ts +3 -2
  31. package/lib/code-signing/certificate-signing-request.d.ts +1 -1
  32. package/lib/code-signing/certificate-signing-request.js +16 -14
  33. package/lib/code-signing/certificate-signing-request.ts +7 -5
  34. package/lib/code-signing/code-signing-certificate.d.ts +2 -1
  35. package/lib/code-signing/code-signing-certificate.js +12 -11
  36. package/lib/code-signing/code-signing-certificate.ts +5 -4
  37. package/lib/code-signing/private-key.d.ts +2 -1
  38. package/lib/code-signing/private-key.js +28 -26
  39. package/lib/code-signing/private-key.ts +10 -8
  40. package/lib/credential-pair.d.ts +1 -1
  41. package/lib/credential-pair.js +1 -1
  42. package/lib/credential-pair.ts +1 -1
  43. package/lib/custom-resource-handlers/src/certificate-signing-request.tsbuildinfo +1 -1
  44. package/lib/custom-resource-handlers/src/pgp-secret.tsbuildinfo +1 -1
  45. package/lib/custom-resource-handlers/src/private-key.tsbuildinfo +1 -1
  46. package/lib/open-pgp-key-pair.d.ts +2 -1
  47. package/lib/open-pgp-key-pair.js +28 -27
  48. package/lib/open-pgp-key-pair.ts +12 -10
  49. package/lib/package-integrity/handler/validate.bundle.js +814 -457
  50. package/lib/package-integrity/integrity.d.ts +2 -1
  51. package/lib/package-integrity/integrity.js +7 -6
  52. package/lib/package-integrity/integrity.ts +2 -2
  53. package/lib/permissions.d.ts +1 -1
  54. package/lib/permissions.js +5 -5
  55. package/lib/permissions.ts +4 -4
  56. package/lib/pipeline-notifications/slack.d.ts +1 -1
  57. package/lib/pipeline-notifications/slack.js +4 -4
  58. package/lib/pipeline-notifications/slack.ts +1 -1
  59. package/lib/pipeline-watcher/watcher.d.ts +2 -1
  60. package/lib/pipeline-watcher/watcher.js +16 -15
  61. package/lib/pipeline-watcher/watcher.ts +3 -3
  62. package/lib/pipeline.d.ts +2 -1
  63. package/lib/pipeline.js +19 -18
  64. package/lib/pipeline.ts +5 -4
  65. package/lib/publishing/github/with-signing-key.sh +1 -7
  66. package/lib/publishing.d.ts +2 -1
  67. package/lib/publishing.js +36 -35
  68. package/lib/publishing.ts +9 -8
  69. package/lib/pull-request/bump.d.ts +3 -3
  70. package/lib/pull-request/bump.js +3 -26
  71. package/lib/pull-request/bump.ts +3 -3
  72. package/lib/pull-request/merge-back.d.ts +3 -3
  73. package/lib/pull-request/merge-back.js +3 -3
  74. package/lib/pull-request/merge-back.ts +3 -3
  75. package/lib/pull-request/pr.d.ts +2 -1
  76. package/lib/pull-request/pr.js +11 -10
  77. package/lib/pull-request/pr.ts +3 -2
  78. package/lib/registry-sync/ecr-mirror.d.ts +2 -1
  79. package/lib/registry-sync/ecr-mirror.js +22 -21
  80. package/lib/registry-sync/ecr-mirror.ts +4 -3
  81. package/lib/registry-sync/mirror-source.d.ts +2 -1
  82. package/lib/registry-sync/mirror-source.js +3 -3
  83. package/lib/registry-sync/mirror-source.ts +2 -2
  84. package/lib/repo.d.ts +2 -1
  85. package/lib/repo.js +12 -12
  86. package/lib/repo.ts +3 -2
  87. package/lib/shellable.d.ts +2 -1
  88. package/lib/shellable.js +23 -22
  89. package/lib/shellable.ts +5 -4
  90. package/lib/signing-key.d.ts +2 -1
  91. package/lib/signing-key.js +6 -5
  92. package/lib/signing-key.ts +3 -2
  93. package/lib/util.d.ts +1 -1
  94. package/lib/util.js +1 -1
  95. package/lib/util.ts +1 -1
  96. package/package.json +12 -10
  97. package/cdk.out/asset.15684a15d07860e99d2a8079150ad33dd2cb743677fcd7016dd07345e1b69538/__entrypoint__.js +0 -119
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.MirrorSource = void 0;
4
- const monocdk_1 = require("monocdk");
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
5
  /**
6
6
  * Source of the image.
7
7
  */
@@ -63,7 +63,7 @@ class MirrorSource {
63
63
  }
64
64
  bind(options) {
65
65
  var _a;
66
- const asset = new monocdk_1.aws_s3_assets.Asset(options.scope, `BuildContext${this.directory}${JSON.stringify((_a = opts.buildArgs) !== null && _a !== void 0 ? _a : {})}`, { path: this.directory });
66
+ const asset = new aws_cdk_lib_1.aws_s3_assets.Asset(options.scope, `BuildContext${this.directory}${JSON.stringify((_a = opts.buildArgs) !== null && _a !== void 0 ? _a : {})}`, { path: this.directory });
67
67
  if (options.syncJob) {
68
68
  asset.grantRead(options.syncJob);
69
69
  }
@@ -92,4 +92,4 @@ class MirrorSource {
92
92
  }
93
93
  }
94
94
  exports.MirrorSource = MirrorSource;
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlycm9yLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1pcnJvci1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBSWlCO0FBcURqQjs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUF3RmhDLFlBQXVDLGNBQXNCLEVBQXFCLEdBQVcsRUFBcUIsU0FBa0I7UUFBN0YsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFBcUIsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFxQixjQUFTLEdBQVQsU0FBUyxDQUFTO0lBQ3BJLENBQUM7SUF2RkQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWEsRUFBRSxNQUFjLFFBQVE7UUFDL0QsTUFBTSxxQkFBc0IsU0FBUSxZQUFZO1lBQzlDO2dCQUNFLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2lCQUMvQztnQkFDRCwrREFBK0Q7Z0JBQy9ELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQztnQkFDeEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUVNLElBQUksQ0FBQyxPQUFnQztnQkFDMUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoRixPQUFPO29CQUNMLFFBQVEsRUFBRTt3QkFDUixlQUFlLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDaEQsY0FBYyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFO3FCQUMvRDtvQkFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQ25DLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztpQkFDZCxDQUFDO1lBQ0osQ0FBQztTQUNGO1FBRUQsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBaUIsRUFBRSxjQUFzQixFQUFFLEdBQVk7UUFDakYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLEVBQUUsY0FBc0IsRUFBRSxPQUFxQyxFQUFFO1FBQ3RHLE1BQU0scUJBQXNCLFNBQVEsWUFBWTtZQUM5Qzs7Z0JBQ0UsS0FBSyxDQUFDLGNBQWMsRUFBRSxNQUFBLElBQUksQ0FBQyxHQUFHLG1DQUFJLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBRU0sSUFBSSxDQUFDLE9BQWdDOztnQkFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSx1QkFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGVBQWUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQUEsSUFBSSxDQUFDLFNBQVMsbUNBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBVSxFQUFFLENBQUMsQ0FBQztnQkFDbkosSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUNuQixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDbEM7Z0JBQ0QsTUFBTSxXQUFXLEdBQUcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoRixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUVqQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQy9GO2dCQUVELE1BQU0sT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsTUFBTSxDQUFDO2dCQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUVuQyxPQUFPO29CQUNMLFFBQVEsRUFBRTt3QkFDUixVQUFVLE9BQU8sSUFBSSxNQUFNLEVBQUU7d0JBQzdCLGFBQWEsS0FBSyxDQUFDLFdBQVcsSUFBSSxPQUFPLEVBQUU7d0JBQzNDLFNBQVMsT0FBTyxPQUFPLE1BQU0sRUFBRTt3QkFDL0IsZ0JBQWdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxFQUFFO3FCQUMvQztvQkFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQ25DLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztpQkFDZCxDQUFDO1lBQ0osQ0FBQztTQUNGO1FBQ0QsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUM7SUFDckMsQ0FBQztDQVNGO0FBL0ZELG9DQStGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvbnN0cnVjdCxcbiAgYXdzX2NvZGVidWlsZCBhcyBjb2RlYnVpbGQsXG4gIGF3c19zM19hc3NldHMgYXMgczNBc3NldHMsXG59IGZyb20gJ21vbm9jZGsnO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1pcnJvclNvdXJjZUJpbmRPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgRUNSIHJlZ2lzdHJ5XG4gICAqL1xuICByZWFkb25seSBlY3JSZWdpc3RyeTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHNjb3BlIHRvIGF0dGFjaCBhbnkgY29uc3RydWN0cyB0aGF0IG1heSBhbHNvIGJlIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG5cbiAgLyoqXG4gICAqIFRoZSBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHdpbGwgcnVuIHRoZSBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiBEb2NrZXJIdWIgYW5kIEVDUi5cbiAgICogQGRlZmF1bHQgLSBlaXRoZXIgbm8gc3luYyBqb2IgaXMgcHJlc2VudCBvciBpdCdzIG5vdCBkZWZpbmVkIHlldC5cbiAgICovXG4gIHJlYWRvbmx5IHN5bmNKb2I/OiBjb2RlYnVpbGQuSVByb2plY3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWlycm9yU291cmNlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBjb21tYW5kcyB0byBydW4gdG8gcmV0cmlldmUgdGhlIGRvY2tlciBpbWFnZS5cbiAgICogZS5nLiBbJ2RvY2tlciBwdWxsIDxpbWFnZS1pZD4nXVxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWFuZHM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgdGFyZ2V0IEVDUiByZXBvc2l0b3J5LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3NpdG9yeU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhZyB0byBiZSB1c2UgZm9yIHRoZSB0YXJnZXQgRUNSIGltYWdlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFnOiBzdHJpbmc7XG59XG5cbi8qKiBBZGRpdGlvbmFsIG9wdGlvbnMgd2hlbiBjb25maWd1cmluZyBhIE1pcnJvciBTb3VyY2UgZnJvbSBhIGxvY2FsIGRpcmVjdG9yeSAqL1xuZXhwb3J0IGludGVyZmFjZSBNaXJyb3JTb3VyY2VEaXJlY3RvcnlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRhZyBvZiB0aGUgYnVpbHQgaW1hZ2UuXG4gICAqIEBkZWZhdWx0ICdsYXRlc3QnXG4gICAqL1xuICByZWFkb25seSB0YWc/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJ1aWxkIGFyZ3MgdG8gcGFzcyB0byB0aGUgYGRvY2tlciBidWlsZGAgY29tbWFuZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBidWlsZCBhcmdzIGFyZSBwYXNzZWRcbiAgICovXG4gIHJlYWRvbmx5IGJ1aWxkQXJncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogU291cmNlIG9mIHRoZSBpbWFnZS5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIE1pcnJvclNvdXJjZSB7XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyZSBhbiBpbWFnZSBmcm9tIERvY2tlckh1Yi5cbiAgICpcbiAgICogQHBhcmFtIGltYWdlIGUuZyBqc2lpL3N1cGVyY2hhaW5cbiAgICogQHBhcmFtIHRhZyBvcHRpb25hbCwgZGVmYXVsdHMgdG8gJ2xhdGVzdCdcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURvY2tlckh1YihpbWFnZTogc3RyaW5nLCB0YWc6IHN0cmluZyA9ICdsYXRlc3QnKTogTWlycm9yU291cmNlIHtcbiAgICBjbGFzcyBEb2NrZXJIdWJNaXJyb3JTb3VyY2UgZXh0ZW5kcyBNaXJyb3JTb3VyY2Uge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIGlmIChpbWFnZS5pbmNsdWRlcygnOicpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdpbWFnZSBtdXN0IG5vdCBpbmNsdWRlIHRhZycpO1xuICAgICAgICB9XG4gICAgICAgIC8vIHNpbXVsYXRlcyBEb2NrZXJIdWIgYnkgcGVyZml4aW5nIGxpYnJhcnkvIHRvIG9mZmljaWFsIGltYWdlc1xuICAgICAgICBjb25zdCByZXBvc2l0b3J5TmFtZSA9IGltYWdlLmluY2x1ZGVzKCcvJykgPyBpbWFnZSA6IGBsaWJyYXJ5LyR7aW1hZ2V9YDtcbiAgICAgICAgc3VwZXIocmVwb3NpdG9yeU5hbWUsIHRhZywgdW5kZWZpbmVkKTtcbiAgICAgIH1cblxuICAgICAgcHVibGljIGJpbmQob3B0aW9uczogTWlycm9yU291cmNlQmluZE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgZWNySW1hZ2VVcmkgPSBgJHtvcHRpb25zLmVjclJlZ2lzdHJ5fS8ke3RoaXMucmVwb3NpdG9yeU5hbWV9OiR7dGhpcy50YWd9YDtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgYGRvY2tlciBwdWxsICR7dGhpcy5yZXBvc2l0b3J5TmFtZX06JHt0aGlzLnRhZ31gLFxuICAgICAgICAgICAgYGRvY2tlciB0YWcgJHt0aGlzLnJlcG9zaXRvcnlOYW1lfToke3RoaXMudGFnfSAke2VjckltYWdlVXJpfWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXBvc2l0b3J5TmFtZTogdGhpcy5yZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgRG9ja2VySHViTWlycm9yU291cmNlKCk7XG4gIH1cblxuICAvKipcbiAgICogREVQUkVDQVRFRFxuICAgKiBAZGVwcmVjYXRlZCB1c2UgZnJvbURpcigpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21EaXJlY3RvcnkoZGlyZWN0b3J5OiBzdHJpbmcsIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcsIHRhZz86IHN0cmluZyk6IE1pcnJvclNvdXJjZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbURpcihkaXJlY3RvcnksIHJlcG9zaXRvcnlOYW1lLCB7IHRhZyB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgYW4gaW1hZ2UgZnJvbSBhIGxvY2FsIGRpcmVjdG9yeS5cbiAgICpcbiAgICogQHBhcmFtIGRpcmVjdG9yeSBQYXRoIHRvIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBEb2NrZXJmaWxlLlxuICAgKiBAcGFyYW0gcmVwb3NpdG9yeU5hbWUgUmVwb3NpdG9yeSBuYW1lIG9mIHRoZSBidWlsdCBpbWFnZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgYWRkaXRpb25hbCBjb25maWd1cmF0aW9uIG9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURpcihkaXJlY3Rvcnk6IHN0cmluZywgcmVwb3NpdG9yeU5hbWU6IHN0cmluZywgb3B0czogTWlycm9yU291cmNlRGlyZWN0b3J5T3B0aW9ucyA9IHt9KTogTWlycm9yU291cmNlIHtcbiAgICBjbGFzcyBEaXJlY3RvcnlNaXJyb3JTb3VyY2UgZXh0ZW5kcyBNaXJyb3JTb3VyY2Uge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHJlcG9zaXRvcnlOYW1lLCBvcHRzLnRhZyA/PyAnbGF0ZXN0JywgZGlyZWN0b3J5KTtcbiAgICAgIH1cblxuICAgICAgcHVibGljIGJpbmQob3B0aW9uczogTWlycm9yU291cmNlQmluZE9wdGlvbnMpIHtcbiAgICAgICAgY29uc3QgYXNzZXQgPSBuZXcgczNBc3NldHMuQXNzZXQob3B0aW9ucy5zY29wZSwgYEJ1aWxkQ29udGV4dCR7dGhpcy5kaXJlY3Rvcnl9JHtKU09OLnN0cmluZ2lmeShvcHRzLmJ1aWxkQXJncyA/PyB7fSl9YCwgeyBwYXRoOiB0aGlzLmRpcmVjdG9yeSEgfSk7XG4gICAgICAgIGlmIChvcHRpb25zLnN5bmNKb2IpIHtcbiAgICAgICAgICBhc3NldC5ncmFudFJlYWQob3B0aW9ucy5zeW5jSm9iKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBlY3JJbWFnZVVyaSA9IGAke29wdGlvbnMuZWNyUmVnaXN0cnl9LyR7dGhpcy5yZXBvc2l0b3J5TmFtZX06JHt0aGlzLnRhZ31gO1xuICAgICAgICBjb25zdCBjbWRGbGFncyA9IFtdO1xuICAgICAgICBjbWRGbGFncy5wdXNoKCctLXB1bGwnKTtcbiAgICAgICAgY21kRmxhZ3MucHVzaCgnLXQnLCBlY3JJbWFnZVVyaSk7XG5cbiAgICAgICAgaWYgKG9wdHMuYnVpbGRBcmdzKSB7XG4gICAgICAgICAgT2JqZWN0LmVudHJpZXMob3B0cy5idWlsZEFyZ3MpLmZvckVhY2goKFtrLCB2XSkgPT4gY21kRmxhZ3MucHVzaCgnLS1idWlsZC1hcmcnLCBgJHtrfT0ke3Z9YCkpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgemlwRmlsZSA9IGAke3RoaXMucmVwb3NpdG9yeU5hbWV9LnppcGA7XG4gICAgICAgIGNvbnN0IHRtcERpciA9IHRoaXMucmVwb3NpdG9yeU5hbWU7XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBjb21tYW5kczogW1xuICAgICAgICAgICAgYHJtIC1yZiAke3ppcEZpbGV9ICR7dG1wRGlyfWAsXG4gICAgICAgICAgICBgYXdzIHMzIGNwICR7YXNzZXQuczNPYmplY3RVcmx9ICR7emlwRmlsZX1gLFxuICAgICAgICAgICAgYHVuemlwICR7emlwRmlsZX0gLWQgJHt0bXBEaXJ9YCxcbiAgICAgICAgICAgIGBkb2NrZXIgYnVpbGQgJHtjbWRGbGFncy5qb2luKCcgJyl9ICR7dG1wRGlyfWAsXG4gICAgICAgICAgXSxcbiAgICAgICAgICByZXBvc2l0b3J5TmFtZTogdGhpcy5yZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgICB0YWc6IHRoaXMudGFnLFxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IERpcmVjdG9yeU1pcnJvclNvdXJjZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgcmVwb3NpdG9yeU5hbWU6IHN0cmluZywgcHJvdGVjdGVkIHJlYWRvbmx5IHRhZzogc3RyaW5nLCBwcm90ZWN0ZWQgcmVhZG9ubHkgZGlyZWN0b3J5Pzogc3RyaW5nKSB7XG4gIH1cblxuICAvKipcbiAgICogQmluZCB0aGUgc291cmNlIHdpdGggdGhlIEVjck1pcnJvciBjb25zdHJ1Y3QuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYmluZChvcHRpb25zOiBNaXJyb3JTb3VyY2VCaW5kT3B0aW9ucyk6IE1pcnJvclNvdXJjZUNvbmZpZztcbn1cbiJdfQ==
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlycm9yLXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIm1pcnJvci1zb3VyY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBR3FCO0FBc0RyQjs7R0FFRztBQUNILE1BQXNCLFlBQVk7SUF3RmhDLFlBQXVDLGNBQXNCLEVBQXFCLEdBQVcsRUFBcUIsU0FBa0I7UUFBN0YsbUJBQWMsR0FBZCxjQUFjLENBQVE7UUFBcUIsUUFBRyxHQUFILEdBQUcsQ0FBUTtRQUFxQixjQUFTLEdBQVQsU0FBUyxDQUFTO0lBQ3BJLENBQUM7SUF2RkQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWEsRUFBRSxNQUFjLFFBQVE7UUFDL0QsTUFBTSxxQkFBc0IsU0FBUSxZQUFZO1lBQzlDO2dCQUNFLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRTtvQkFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO2lCQUMvQztnQkFDRCwrREFBK0Q7Z0JBQy9ELE1BQU0sY0FBYyxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxLQUFLLEVBQUUsQ0FBQztnQkFDeEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFDeEMsQ0FBQztZQUVNLElBQUksQ0FBQyxPQUFnQztnQkFDMUMsTUFBTSxXQUFXLEdBQUcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoRixPQUFPO29CQUNMLFFBQVEsRUFBRTt3QkFDUixlQUFlLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDaEQsY0FBYyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFO3FCQUMvRDtvQkFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQ25DLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztpQkFDZCxDQUFDO1lBQ0osQ0FBQztTQUNGO1FBRUQsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVEOzs7T0FHRztJQUNJLE1BQU0sQ0FBQyxhQUFhLENBQUMsU0FBaUIsRUFBRSxjQUFzQixFQUFFLEdBQVk7UUFDakYsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsRUFBRSxjQUFjLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQWlCLEVBQUUsY0FBc0IsRUFBRSxPQUFxQyxFQUFFO1FBQ3RHLE1BQU0scUJBQXNCLFNBQVEsWUFBWTtZQUM5Qzs7Z0JBQ0UsS0FBSyxDQUFDLGNBQWMsRUFBRSxNQUFBLElBQUksQ0FBQyxHQUFHLG1DQUFJLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBRU0sSUFBSSxDQUFDLE9BQWdDOztnQkFDMUMsTUFBTSxLQUFLLEdBQUcsSUFBSSwyQkFBUSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLGVBQWUsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQUEsSUFBSSxDQUFDLFNBQVMsbUNBQUksRUFBRSxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsU0FBVSxFQUFFLENBQUMsQ0FBQztnQkFDbkosSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFO29CQUNuQixLQUFLLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztpQkFDbEM7Z0JBQ0QsTUFBTSxXQUFXLEdBQUcsR0FBRyxPQUFPLENBQUMsV0FBVyxJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDO2dCQUNoRixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUM7Z0JBQ3BCLFFBQVEsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3hCLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLFdBQVcsQ0FBQyxDQUFDO2dCQUVqQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7b0JBQ2xCLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7aUJBQy9GO2dCQUVELE1BQU0sT0FBTyxHQUFHLEdBQUcsSUFBSSxDQUFDLGNBQWMsTUFBTSxDQUFDO2dCQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDO2dCQUVuQyxPQUFPO29CQUNMLFFBQVEsRUFBRTt3QkFDUixVQUFVLE9BQU8sSUFBSSxNQUFNLEVBQUU7d0JBQzdCLGFBQWEsS0FBSyxDQUFDLFdBQVcsSUFBSSxPQUFPLEVBQUU7d0JBQzNDLFNBQVMsT0FBTyxPQUFPLE1BQU0sRUFBRTt3QkFDL0IsZ0JBQWdCLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksTUFBTSxFQUFFO3FCQUMvQztvQkFDRCxjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWM7b0JBQ25DLEdBQUcsRUFBRSxJQUFJLENBQUMsR0FBRztpQkFDZCxDQUFDO1lBQ0osQ0FBQztTQUNGO1FBQ0QsT0FBTyxJQUFJLHFCQUFxQixFQUFFLENBQUM7SUFDckMsQ0FBQztDQVNGO0FBL0ZELG9DQStGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIGF3c19jb2RlYnVpbGQgYXMgY29kZWJ1aWxkLFxuICBhd3NfczNfYXNzZXRzIGFzIHMzQXNzZXRzLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBNaXJyb3JTb3VyY2VCaW5kT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IEVDUiByZWdpc3RyeVxuICAgKi9cbiAgcmVhZG9ubHkgZWNyUmVnaXN0cnk6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBzY29wZSB0byBhdHRhY2ggYW55IGNvbnN0cnVjdHMgdGhhdCBtYXkgYWxzbyBiZSBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBzY29wZTogQ29uc3RydWN0O1xuXG4gIC8qKlxuICAgKiBUaGUgQ29kZUJ1aWxkIHByb2plY3QgdGhhdCB3aWxsIHJ1biB0aGUgc3luY2hyb25pemF0aW9uIGJldHdlZW4gRG9ja2VySHViIGFuZCBFQ1IuXG4gICAqIEBkZWZhdWx0IC0gZWl0aGVyIG5vIHN5bmMgam9iIGlzIHByZXNlbnQgb3IgaXQncyBub3QgZGVmaW5lZCB5ZXQuXG4gICAqL1xuICByZWFkb25seSBzeW5jSm9iPzogY29kZWJ1aWxkLklQcm9qZWN0O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE1pcnJvclNvdXJjZUNvbmZpZyB7XG4gIC8qKlxuICAgKiBUaGUgY29tbWFuZHMgdG8gcnVuIHRvIHJldHJpZXZlIHRoZSBkb2NrZXIgaW1hZ2UuXG4gICAqIGUuZy4gWydkb2NrZXIgcHVsbCA8aW1hZ2UtaWQ+J11cbiAgICovXG4gIHJlYWRvbmx5IGNvbW1hbmRzOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRhcmdldCBFQ1IgcmVwb3NpdG9yeS5cbiAgICovXG4gIHJlYWRvbmx5IHJlcG9zaXRvcnlOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWcgdG8gYmUgdXNlIGZvciB0aGUgdGFyZ2V0IEVDUiBpbWFnZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhZzogc3RyaW5nO1xufVxuXG4vKiogQWRkaXRpb25hbCBvcHRpb25zIHdoZW4gY29uZmlndXJpbmcgYSBNaXJyb3IgU291cmNlIGZyb20gYSBsb2NhbCBkaXJlY3RvcnkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgTWlycm9yU291cmNlRGlyZWN0b3J5T3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUYWcgb2YgdGhlIGJ1aWx0IGltYWdlLlxuICAgKiBAZGVmYXVsdCAnbGF0ZXN0J1xuICAgKi9cbiAgcmVhZG9ubHkgdGFnPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCdWlsZCBhcmdzIHRvIHBhc3MgdG8gdGhlIGBkb2NrZXIgYnVpbGRgIGNvbW1hbmQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYnVpbGQgYXJncyBhcmUgcGFzc2VkXG4gICAqL1xuICByZWFkb25seSBidWlsZEFyZ3M/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xufVxuXG4vKipcbiAqIFNvdXJjZSBvZiB0aGUgaW1hZ2UuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNaXJyb3JTb3VyY2Uge1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmUgYW4gaW1hZ2UgZnJvbSBEb2NrZXJIdWIuXG4gICAqXG4gICAqIEBwYXJhbSBpbWFnZSBlLmcganNpaS9zdXBlcmNoYWluXG4gICAqIEBwYXJhbSB0YWcgb3B0aW9uYWwsIGRlZmF1bHRzIHRvICdsYXRlc3QnXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Eb2NrZXJIdWIoaW1hZ2U6IHN0cmluZywgdGFnOiBzdHJpbmcgPSAnbGF0ZXN0Jyk6IE1pcnJvclNvdXJjZSB7XG4gICAgY2xhc3MgRG9ja2VySHViTWlycm9yU291cmNlIGV4dGVuZHMgTWlycm9yU291cmNlIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBpZiAoaW1hZ2UuaW5jbHVkZXMoJzonKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignaW1hZ2UgbXVzdCBub3QgaW5jbHVkZSB0YWcnKTtcbiAgICAgICAgfVxuICAgICAgICAvLyBzaW11bGF0ZXMgRG9ja2VySHViIGJ5IHBlcmZpeGluZyBsaWJyYXJ5LyB0byBvZmZpY2lhbCBpbWFnZXNcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeU5hbWUgPSBpbWFnZS5pbmNsdWRlcygnLycpID8gaW1hZ2UgOiBgbGlicmFyeS8ke2ltYWdlfWA7XG4gICAgICAgIHN1cGVyKHJlcG9zaXRvcnlOYW1lLCB0YWcsIHVuZGVmaW5lZCk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBiaW5kKG9wdGlvbnM6IE1pcnJvclNvdXJjZUJpbmRPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGVjckltYWdlVXJpID0gYCR7b3B0aW9ucy5lY3JSZWdpc3RyeX0vJHt0aGlzLnJlcG9zaXRvcnlOYW1lfToke3RoaXMudGFnfWA7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgIGBkb2NrZXIgcHVsbCAke3RoaXMucmVwb3NpdG9yeU5hbWV9OiR7dGhpcy50YWd9YCxcbiAgICAgICAgICAgIGBkb2NrZXIgdGFnICR7dGhpcy5yZXBvc2l0b3J5TmFtZX06JHt0aGlzLnRhZ30gJHtlY3JJbWFnZVVyaX1gLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHRoaXMucmVwb3NpdG9yeU5hbWUsXG4gICAgICAgICAgdGFnOiB0aGlzLnRhZyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IERvY2tlckh1Yk1pcnJvclNvdXJjZSgpO1xuICB9XG5cbiAgLyoqXG4gICAqIERFUFJFQ0FURURcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGZyb21EaXIoKVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRGlyZWN0b3J5KGRpcmVjdG9yeTogc3RyaW5nLCByZXBvc2l0b3J5TmFtZTogc3RyaW5nLCB0YWc/OiBzdHJpbmcpOiBNaXJyb3JTb3VyY2Uge1xuICAgIHJldHVybiB0aGlzLmZyb21EaXIoZGlyZWN0b3J5LCByZXBvc2l0b3J5TmFtZSwgeyB0YWcgfSk7XG4gIH1cblxuICAvKipcbiAgICogQ29uZmlndXJlIGFuIGltYWdlIGZyb20gYSBsb2NhbCBkaXJlY3RvcnkuXG4gICAqXG4gICAqIEBwYXJhbSBkaXJlY3RvcnkgUGF0aCB0byBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgRG9ja2VyZmlsZS5cbiAgICogQHBhcmFtIHJlcG9zaXRvcnlOYW1lIFJlcG9zaXRvcnkgbmFtZSBvZiB0aGUgYnVpbHQgaW1hZ2UuXG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBvcHRpb25zXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21EaXIoZGlyZWN0b3J5OiBzdHJpbmcsIHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcsIG9wdHM6IE1pcnJvclNvdXJjZURpcmVjdG9yeU9wdGlvbnMgPSB7fSk6IE1pcnJvclNvdXJjZSB7XG4gICAgY2xhc3MgRGlyZWN0b3J5TWlycm9yU291cmNlIGV4dGVuZHMgTWlycm9yU291cmNlIHtcbiAgICAgIGNvbnN0cnVjdG9yKCkge1xuICAgICAgICBzdXBlcihyZXBvc2l0b3J5TmFtZSwgb3B0cy50YWcgPz8gJ2xhdGVzdCcsIGRpcmVjdG9yeSk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBiaW5kKG9wdGlvbnM6IE1pcnJvclNvdXJjZUJpbmRPcHRpb25zKSB7XG4gICAgICAgIGNvbnN0IGFzc2V0ID0gbmV3IHMzQXNzZXRzLkFzc2V0KG9wdGlvbnMuc2NvcGUsIGBCdWlsZENvbnRleHQke3RoaXMuZGlyZWN0b3J5fSR7SlNPTi5zdHJpbmdpZnkob3B0cy5idWlsZEFyZ3MgPz8ge30pfWAsIHsgcGF0aDogdGhpcy5kaXJlY3RvcnkhIH0pO1xuICAgICAgICBpZiAob3B0aW9ucy5zeW5jSm9iKSB7XG4gICAgICAgICAgYXNzZXQuZ3JhbnRSZWFkKG9wdGlvbnMuc3luY0pvYik7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgZWNySW1hZ2VVcmkgPSBgJHtvcHRpb25zLmVjclJlZ2lzdHJ5fS8ke3RoaXMucmVwb3NpdG9yeU5hbWV9OiR7dGhpcy50YWd9YDtcbiAgICAgICAgY29uc3QgY21kRmxhZ3MgPSBbXTtcbiAgICAgICAgY21kRmxhZ3MucHVzaCgnLS1wdWxsJyk7XG4gICAgICAgIGNtZEZsYWdzLnB1c2goJy10JywgZWNySW1hZ2VVcmkpO1xuXG4gICAgICAgIGlmIChvcHRzLmJ1aWxkQXJncykge1xuICAgICAgICAgIE9iamVjdC5lbnRyaWVzKG9wdHMuYnVpbGRBcmdzKS5mb3JFYWNoKChbaywgdl0pID0+IGNtZEZsYWdzLnB1c2goJy0tYnVpbGQtYXJnJywgYCR7a309JHt2fWApKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHppcEZpbGUgPSBgJHt0aGlzLnJlcG9zaXRvcnlOYW1lfS56aXBgO1xuICAgICAgICBjb25zdCB0bXBEaXIgPSB0aGlzLnJlcG9zaXRvcnlOYW1lO1xuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgY29tbWFuZHM6IFtcbiAgICAgICAgICAgIGBybSAtcmYgJHt6aXBGaWxlfSAke3RtcERpcn1gLFxuICAgICAgICAgICAgYGF3cyBzMyBjcCAke2Fzc2V0LnMzT2JqZWN0VXJsfSAke3ppcEZpbGV9YCxcbiAgICAgICAgICAgIGB1bnppcCAke3ppcEZpbGV9IC1kICR7dG1wRGlyfWAsXG4gICAgICAgICAgICBgZG9ja2VyIGJ1aWxkICR7Y21kRmxhZ3Muam9pbignICcpfSAke3RtcERpcn1gLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHRoaXMucmVwb3NpdG9yeU5hbWUsXG4gICAgICAgICAgdGFnOiB0aGlzLnRhZyxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBEaXJlY3RvcnlNaXJyb3JTb3VyY2UoKTtcbiAgfVxuXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHJvdGVjdGVkIHJlYWRvbmx5IHJlcG9zaXRvcnlOYW1lOiBzdHJpbmcsIHByb3RlY3RlZCByZWFkb25seSB0YWc6IHN0cmluZywgcHJvdGVjdGVkIHJlYWRvbmx5IGRpcmVjdG9yeT86IHN0cmluZykge1xuICB9XG5cbiAgLyoqXG4gICAqIEJpbmQgdGhlIHNvdXJjZSB3aXRoIHRoZSBFY3JNaXJyb3IgY29uc3RydWN0LlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IGJpbmQob3B0aW9uczogTWlycm9yU291cmNlQmluZE9wdGlvbnMpOiBNaXJyb3JTb3VyY2VDb25maWc7XG59XG4iXX0=
@@ -1,8 +1,8 @@
1
1
  import {
2
- Construct,
3
2
  aws_codebuild as codebuild,
4
3
  aws_s3_assets as s3Assets,
5
- } from 'monocdk';
4
+ } from 'aws-cdk-lib';
5
+ import { Construct } from 'constructs';
6
6
 
7
7
  export interface MirrorSourceBindOptions {
8
8
  /**
package/lib/repo.d.ts CHANGED
@@ -1,4 +1,5 @@
1
- import { Construct, SecretsManagerSecretOptions, aws_codebuild as cbuild, aws_codecommit as ccommit, aws_codepipeline as cpipeline } from 'monocdk';
1
+ import { SecretsManagerSecretOptions, aws_codebuild as cbuild, aws_codecommit as ccommit, aws_codepipeline as cpipeline } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
2
3
  import { ExternalSecret } from './permissions';
3
4
  export interface IRepo {
4
5
  repositoryUrlHttp: string;
package/lib/repo.js CHANGED
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.WritableGitHubRepo = exports.GitHubRepo = exports.CodeCommitRepo = void 0;
4
- const monocdk_1 = require("monocdk");
4
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
5
5
  class CodeCommitRepo {
6
6
  constructor(repository) {
7
7
  this.repository = repository;
@@ -11,8 +11,8 @@ class CodeCommitRepo {
11
11
  const stage = pipeline.addStage({
12
12
  stageName: 'Source',
13
13
  });
14
- const sourceOutput = new monocdk_1.aws_codepipeline.Artifact('Source');
15
- stage.addAction(new monocdk_1.aws_codepipeline_actions.CodeCommitSourceAction({
14
+ const sourceOutput = new aws_cdk_lib_1.aws_codepipeline.Artifact('Source');
15
+ stage.addAction(new aws_cdk_lib_1.aws_codepipeline_actions.CodeCommitSourceAction({
16
16
  actionName: 'Pull',
17
17
  repository: this.repository,
18
18
  branch,
@@ -27,7 +27,7 @@ class CodeCommitRepo {
27
27
  return this.repository.repositoryCloneUrlSsh;
28
28
  }
29
29
  createBuildSource(_, _webhook, options = {}) {
30
- return monocdk_1.aws_codebuild.Source.codeCommit({
30
+ return aws_cdk_lib_1.aws_codebuild.Source.codeCommit({
31
31
  repository: this.repository,
32
32
  cloneDepth: options.cloneDepth,
33
33
  });
@@ -55,11 +55,11 @@ class GitHubRepo {
55
55
  }
56
56
  createSourceStage(pipeline, branch) {
57
57
  const stage = pipeline.addStage({ stageName: 'Source' });
58
- const sourceOutput = new monocdk_1.aws_codepipeline.Artifact('Source');
59
- stage.addAction(new monocdk_1.aws_codepipeline_actions.GitHubSourceAction({
58
+ const sourceOutput = new aws_cdk_lib_1.aws_codepipeline.Artifact('Source');
59
+ stage.addAction(new aws_cdk_lib_1.aws_codepipeline_actions.GitHubSourceAction({
60
60
  actionName: 'Pull',
61
61
  branch,
62
- oauthToken: monocdk_1.SecretValue.secretsManager(this.tokenSecretArn, this.tokenSecretOptions),
62
+ oauthToken: aws_cdk_lib_1.SecretValue.secretsManager(this.tokenSecretArn, this.tokenSecretOptions),
63
63
  owner: this.owner,
64
64
  repo: this.repo,
65
65
  output: sourceOutput,
@@ -72,7 +72,7 @@ class GitHubRepo {
72
72
  throw new Error('Specify at most one of \'branch\' and \'branches\'');
73
73
  }
74
74
  const branches = (_a = options.branches) !== null && _a !== void 0 ? _a : (options.branch ? [options.branch] : []);
75
- return monocdk_1.aws_codebuild.Source.gitHub({
75
+ return aws_cdk_lib_1.aws_codebuild.Source.gitHub({
76
76
  owner: this.owner,
77
77
  repo: this.repo,
78
78
  webhook,
@@ -91,14 +91,14 @@ class GitHubRepo {
91
91
  // Turn the list of branches into a regex
92
92
  const branchExpr = branches.map(b => `^refs/heads/${b}$`).join('|');
93
93
  return [
94
- monocdk_1.aws_codebuild.FilterGroup.inEventOf(monocdk_1.aws_codebuild.EventAction.PUSH)
94
+ aws_cdk_lib_1.aws_codebuild.FilterGroup.inEventOf(aws_cdk_lib_1.aws_codebuild.EventAction.PUSH)
95
95
  .andHeadRefIs(branchExpr),
96
- monocdk_1.aws_codebuild.FilterGroup.inEventOf(monocdk_1.aws_codebuild.EventAction.PULL_REQUEST_CREATED, monocdk_1.aws_codebuild.EventAction.PULL_REQUEST_UPDATED)
96
+ aws_cdk_lib_1.aws_codebuild.FilterGroup.inEventOf(aws_cdk_lib_1.aws_codebuild.EventAction.PULL_REQUEST_CREATED, aws_cdk_lib_1.aws_codebuild.EventAction.PULL_REQUEST_UPDATED)
97
97
  .andBaseRefIs(branchExpr),
98
98
  ];
99
99
  }
100
100
  return [
101
- monocdk_1.aws_codebuild.FilterGroup.inEventOf(monocdk_1.aws_codebuild.EventAction.PUSH, monocdk_1.aws_codebuild.EventAction.PULL_REQUEST_CREATED, monocdk_1.aws_codebuild.EventAction.PULL_REQUEST_UPDATED),
101
+ aws_cdk_lib_1.aws_codebuild.FilterGroup.inEventOf(aws_cdk_lib_1.aws_codebuild.EventAction.PUSH, aws_cdk_lib_1.aws_codebuild.EventAction.PULL_REQUEST_CREATED, aws_cdk_lib_1.aws_codebuild.EventAction.PULL_REQUEST_UPDATED),
102
102
  ];
103
103
  }
104
104
  }
@@ -118,4 +118,4 @@ class WritableGitHubRepo extends GitHubRepo {
118
118
  }
119
119
  }
120
120
  exports.WritableGitHubRepo = WritableGitHubRepo;
121
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBSWlCO0FBbUNqQixNQUFhLGNBQWM7SUFJekIsWUFBNkIsVUFBK0I7UUFBL0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFINUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFLcEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFFBQTRCLEVBQUUsTUFBYztRQUNuRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzlCLFNBQVMsRUFBRSxRQUFRO1NBQ3BCLENBQUMsQ0FBQztRQUNILE1BQU0sWUFBWSxHQUFHLElBQUksMEJBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLGtDQUFpQixDQUFDLHNCQUFzQixDQUFDO1lBQzNELFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixNQUFNO1lBQ04sTUFBTSxFQUFFLFlBQVk7U0FDckIsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUM7SUFDL0MsQ0FBQztJQUVNLGlCQUFpQixDQUFDLENBQVksRUFBRSxRQUFpQixFQUFFLFVBQThCLEVBQUc7UUFDekYsT0FBTyx1QkFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDOUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUTtR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LElBQUksR0FBRyxDQUFDO0lBQy9CLENBQUM7Q0FhRjtBQXJCRCxnREFxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDb25zdHJ1Y3QsIFNlY3JldFZhbHVlLCBTZWNyZXRzTWFuYWdlclNlY3JldE9wdGlvbnMsXG4gIGF3c19jb2RlYnVpbGQgYXMgY2J1aWxkLCBhd3NfY29kZWNvbW1pdCBhcyBjY29tbWl0LFxuICBhd3NfY29kZXBpcGVsaW5lIGFzIGNwaXBlbGluZSwgYXdzX2NvZGVwaXBlbGluZV9hY3Rpb25zIGFzIGNwaXBlbGluZV9hY3Rpb25zLFxufSBmcm9tICdtb25vY2RrJztcbmltcG9ydCB7IEV4dGVybmFsU2VjcmV0IH0gZnJvbSAnLi9wZXJtaXNzaW9ucyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVJlcG8ge1xuICByZXBvc2l0b3J5VXJsSHR0cDogc3RyaW5nO1xuICByZXBvc2l0b3J5VXJsU3NoOiBzdHJpbmc7XG4gIHJlYWRvbmx5IGFsbG93c0JhZGdlOiBib29sZWFuO1xuICByZWFkb25seSB0b2tlblNlY3JldEFybj86IHN0cmluZztcbiAgY3JlYXRlQnVpbGRTb3VyY2UocGFyZW50OiBDb25zdHJ1Y3QsIHdlYmhvb2s6IGJvb2xlYW4sIG9wdGlvbnM/OiBCdWlsZFNvdXJjZU9wdGlvbnMpOiBjYnVpbGQuSVNvdXJjZTtcbiAgY3JlYXRlU291cmNlU3RhZ2UocGlwZWxpbmU6IGNwaXBlbGluZS5QaXBlbGluZSwgYnJhbmNoOiBzdHJpbmcpOiBjcGlwZWxpbmUuQXJ0aWZhY3Q7XG4gIGRlc2NyaWJlKCk6IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCdWlsZFNvdXJjZU9wdGlvbnMge1xuICAvKipcbiAgICogU2luZ2xlIGJyYW5jaFxuICAgKlxuICAgKiBDYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYGJyYW5jaGVzYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgYnJhbmNoZXNcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBicmFuY2hlc2AgaW5zdGVhZC5cbiAgICovXG4gIGJyYW5jaD86IHN0cmluZztcblxuICAvKipcbiAgICogTXVsdGlwbGUgYnJhbmNoZXNcbiAgICpcbiAgICogQ2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGBicmFuY2hgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEFsbCBicmFuY2hlc1xuICAgKi9cbiAgYnJhbmNoZXM/OiBzdHJpbmdbXTtcbiAgY2xvbmVEZXB0aD86IG51bWJlcjtcbn1cblxuZXhwb3J0IGNsYXNzIENvZGVDb21taXRSZXBvIGltcGxlbWVudHMgSVJlcG8ge1xuICBwdWJsaWMgcmVhZG9ubHkgYWxsb3dzQmFkZ2UgPSBmYWxzZTtcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuU2VjcmV0QXJuPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcmVwb3NpdG9yeTogY2NvbW1pdC5JUmVwb3NpdG9yeSkge1xuXG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU291cmNlU3RhZ2UocGlwZWxpbmU6IGNwaXBlbGluZS5QaXBlbGluZSwgYnJhbmNoOiBzdHJpbmcpOiBjcGlwZWxpbmUuQXJ0aWZhY3Qge1xuICAgIGNvbnN0IHN0YWdlID0gcGlwZWxpbmUuYWRkU3RhZ2Uoe1xuICAgICAgc3RhZ2VOYW1lOiAnU291cmNlJyxcbiAgICB9KTtcbiAgICBjb25zdCBzb3VyY2VPdXRwdXQgPSBuZXcgY3BpcGVsaW5lLkFydGlmYWN0KCdTb3VyY2UnKTtcbiAgICBzdGFnZS5hZGRBY3Rpb24obmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVDb21taXRTb3VyY2VBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogJ1B1bGwnLFxuICAgICAgcmVwb3NpdG9yeTogdGhpcy5yZXBvc2l0b3J5LFxuICAgICAgYnJhbmNoLFxuICAgICAgb3V0cHV0OiBzb3VyY2VPdXRwdXQsXG4gICAgfSkpO1xuICAgIHJldHVybiBzb3VyY2VPdXRwdXQ7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnlVcmxIdHRwKCkge1xuICAgIHJldHVybiB0aGlzLnJlcG9zaXRvcnkucmVwb3NpdG9yeUNsb25lVXJsSHR0cDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVwb3NpdG9yeVVybFNzaCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnJlcG9zaXRvcnlDbG9uZVVybFNzaDtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVCdWlsZFNvdXJjZShfOiBDb25zdHJ1Y3QsIF93ZWJob29rOiBib29sZWFuLCBvcHRpb25zOiBCdWlsZFNvdXJjZU9wdGlvbnMgPSB7IH0pOiBjYnVpbGQuSVNvdXJjZSB7XG4gICAgcmV0dXJuIGNidWlsZC5Tb3VyY2UuY29kZUNvbW1pdCh7XG4gICAgICByZXBvc2l0b3J5OiB0aGlzLnJlcG9zaXRvcnksXG4gICAgICBjbG9uZURlcHRoOiBvcHRpb25zLmNsb25lRGVwdGgsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZGVzY3JpYmUoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnJlcG9zaXRvcnlOYW1lO1xuICB9XG59XG5cbmludGVyZmFjZSBHaXRIdWJSZXBvUHJvcHMge1xuICAvKipcbiAgICogU2VjcmV0cyBNYW5hZ2VyIEFSTiBvZiB0aGUgT0F1dGggdG9rZW4gc2VjcmV0IHRoYXQgYWxsb3dzIGFjY2VzcyB0byB5b3VyIGdpdGh1YiByZXBvLlxuICAgKi9cbiAgdG9rZW5TZWNyZXRBcm46IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9ucyBmb3IgcmVmZXJlbmNpbmcgYSBzZWNyZXQgdmFsdWUgZnJvbSBTZWNyZXRzIE1hbmFnZXJcbiAgICovXG4gIHRva2VuU2VjcmV0T3B0aW9ucz86IFNlY3JldHNNYW5hZ2VyU2VjcmV0T3B0aW9ucztcblxuICAvKipcbiAgICogSW4gdGhlIGZvcm0gXCJhY2NvdW50L3JlcG9cIi5cbiAgICovXG4gIHJlcG9zaXRvcnk6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIEdpdEh1YlJlcG8gaW1wbGVtZW50cyBJUmVwbyB7XG4gIHB1YmxpYyByZWFkb25seSBhbGxvd3NCYWRnZSA9IHRydWU7XG4gIHB1YmxpYyByZWFkb25seSBvd25lcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcmVwbzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgdG9rZW5TZWNyZXRBcm46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuU2VjcmV0T3B0aW9ucz86IFNlY3JldHNNYW5hZ2VyU2VjcmV0T3B0aW9ucztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogR2l0SHViUmVwb1Byb3BzKSB7XG4gICAgY29uc3QgcmVwb3NpdG9yeSA9IHByb3BzLnJlcG9zaXRvcnk7XG4gICAgY29uc3QgW293bmVyLCByZXBvXSA9IHJlcG9zaXRvcnkuc3BsaXQoJy8nKTtcblxuICAgIHRoaXMub3duZXIgPSBvd25lcjtcbiAgICB0aGlzLnJlcG8gPSByZXBvO1xuICAgIHRoaXMudG9rZW5TZWNyZXRBcm4gPSBwcm9wcy50b2tlblNlY3JldEFybjtcbiAgICB0aGlzLnRva2VuU2VjcmV0T3B0aW9ucyA9IHByb3BzLnRva2VuU2VjcmV0T3B0aW9ucztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVwb3NpdG9yeVVybEh0dHAoKSB7XG4gICAgcmV0dXJuIGBodHRwczovL2dpdGh1Yi5jb20vJHt0aGlzLm93bmVyfS8ke3RoaXMucmVwb30uZ2l0YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVwb3NpdG9yeVVybFNzaCgpIHtcbiAgICByZXR1cm4gYGdpdEBnaXRodWIuY29tOiR7dGhpcy5vd25lcn0vJHt0aGlzLnJlcG99LmdpdGA7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlU291cmNlU3RhZ2UocGlwZWxpbmU6IGNwaXBlbGluZS5QaXBlbGluZSwgYnJhbmNoOiBzdHJpbmcpOiBjcGlwZWxpbmUuQXJ0aWZhY3Qge1xuICAgIGNvbnN0IHN0YWdlID0gcGlwZWxpbmUuYWRkU3RhZ2UoeyBzdGFnZU5hbWU6ICdTb3VyY2UnIH0pO1xuXG4gICAgY29uc3Qgc291cmNlT3V0cHV0ID0gbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgnU291cmNlJyk7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5HaXRIdWJTb3VyY2VBY3Rpb24oe1xuICAgICAgYWN0aW9uTmFtZTogJ1B1bGwnLFxuICAgICAgYnJhbmNoLFxuICAgICAgb2F1dGhUb2tlbjogU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIodGhpcy50b2tlblNlY3JldEFybiwgdGhpcy50b2tlblNlY3JldE9wdGlvbnMpLFxuICAgICAgb3duZXI6IHRoaXMub3duZXIsXG4gICAgICByZXBvOiB0aGlzLnJlcG8sXG4gICAgICBvdXRwdXQ6IHNvdXJjZU91dHB1dCxcbiAgICB9KSk7XG4gICAgcmV0dXJuIHNvdXJjZU91dHB1dDtcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVCdWlsZFNvdXJjZShfOiBDb25zdHJ1Y3QsIHdlYmhvb2s6IGJvb2xlYW4sIG9wdGlvbnM6IEJ1aWxkU291cmNlT3B0aW9ucyA9IHsgfSk6IGNidWlsZC5JU291cmNlIHtcbiAgICBpZiAob3B0aW9ucy5icmFuY2ggJiYgb3B0aW9ucy5icmFuY2hlcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTcGVjaWZ5IGF0IG1vc3Qgb25lIG9mIFxcJ2JyYW5jaFxcJyBhbmQgXFwnYnJhbmNoZXNcXCcnKTtcbiAgICB9XG4gICAgY29uc3QgYnJhbmNoZXMgPSBvcHRpb25zLmJyYW5jaGVzID8/IChvcHRpb25zLmJyYW5jaCA/IFtvcHRpb25zLmJyYW5jaF0gOiBbXSk7XG5cbiAgICByZXR1cm4gY2J1aWxkLlNvdXJjZS5naXRIdWIoe1xuICAgICAgb3duZXI6IHRoaXMub3duZXIsXG4gICAgICByZXBvOiB0aGlzLnJlcG8sXG4gICAgICB3ZWJob29rLFxuICAgICAgY2xvbmVEZXB0aDogb3B0aW9ucy5jbG9uZURlcHRoLFxuICAgICAgcmVwb3J0QnVpbGRTdGF0dXM6IHdlYmhvb2ssXG4gICAgICB3ZWJob29rRmlsdGVyczogd2ViaG9va1xuICAgICAgICA/IHRoaXMuY3JlYXRlV2ViaG9va0ZpbHRlcnMoYnJhbmNoZXMpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlKCkge1xuICAgIHJldHVybiBgJHt0aGlzLm93bmVyfS8ke3RoaXMucmVwb31gO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVXZWJob29rRmlsdGVycyhicmFuY2hlczogc3RyaW5nW10pIHtcbiAgICBpZiAoYnJhbmNoZXMubGVuZ3RoID4gMCkge1xuICAgICAgLy8gVHVybiB0aGUgbGlzdCBvZiBicmFuY2hlcyBpbnRvIGEgcmVnZXhcbiAgICAgIGNvbnN0IGJyYW5jaEV4cHIgPSBicmFuY2hlcy5tYXAoYiA9PiBgXnJlZnMvaGVhZHMvJHtifSRgKS5qb2luKCd8Jyk7XG5cbiAgICAgIHJldHVybiBbXG4gICAgICAgIGNidWlsZC5GaWx0ZXJHcm91cC5pbkV2ZW50T2YoY2J1aWxkLkV2ZW50QWN0aW9uLlBVU0gpXG4gICAgICAgICAgLmFuZEhlYWRSZWZJcyhicmFuY2hFeHByKSxcbiAgICAgICAgY2J1aWxkLkZpbHRlckdyb3VwLmluRXZlbnRPZihjYnVpbGQuRXZlbnRBY3Rpb24uUFVMTF9SRVFVRVNUX0NSRUFURUQsIGNidWlsZC5FdmVudEFjdGlvbi5QVUxMX1JFUVVFU1RfVVBEQVRFRClcbiAgICAgICAgICAuYW5kQmFzZVJlZklzKGJyYW5jaEV4cHIpLFxuICAgICAgXTtcbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgIGNidWlsZC5GaWx0ZXJHcm91cC5pbkV2ZW50T2YoXG4gICAgICAgIGNidWlsZC5FdmVudEFjdGlvbi5QVVNILFxuICAgICAgICBjYnVpbGQuRXZlbnRBY3Rpb24uUFVMTF9SRVFVRVNUX0NSRUFURUQsXG4gICAgICAgIGNidWlsZC5FdmVudEFjdGlvbi5QVUxMX1JFUVVFU1RfVVBEQVRFRCxcbiAgICAgICksXG4gICAgXTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIFdyaXRhYmxlR2l0SHViUmVwb1Byb3BzIGV4dGVuZHMgR2l0SHViUmVwb1Byb3BzIHtcbiAgLyoqXG4gICAqIFNTSCBrZXkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVwb3NpdG9yeS5cbiAgICpcbiAgICogVGhpcyBpcyByZXF1aXJlZCBpZiB5b3Ugd2lzaCB0byBiZSBhYmxlIHRvIHVzZSBhY3Rpb25zIHRoYXQgd3JpdGUgdG8gdGhlIHJlcG9cbiAgICogc3VjaCBhcyBkb2NzIHB1Ymxpc2hpbmcgYW5kIGF1dG9tYXRpYyBidW1wcy5cbiAgICovXG4gIHNzaEtleVNlY3JldDogRXh0ZXJuYWxTZWNyZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSB1c2VybmFtZSB0byB1c2UgZm9yIHRoZSBwdWJsaXNoZWQgY29tbWl0c1xuICAgKi9cbiAgY29tbWl0VXNlcm5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGVtYWlsIGFkZHJlc3MgdG8gdXNlIGZvciB0aGUgcHVibGlzaGVkIGNvbW1pdHNcbiAgICovXG4gIGNvbW1pdEVtYWlsOiBzdHJpbmc7XG5cbn1cblxuZXhwb3J0IGNsYXNzIFdyaXRhYmxlR2l0SHViUmVwbyBleHRlbmRzIEdpdEh1YlJlcG8ge1xuXG4gIHB1YmxpYyBzdGF0aWMgaXNXcml0YWJsZUdpdEh1YlJlcG8ocmVwbzogSVJlcG8pOiByZXBvIGlzIFdyaXRhYmxlR2l0SHViUmVwbyB7XG4gICAgY29uc3Qgb2JqID0gcmVwbyBhcyBhbnk7XG5cbiAgICByZXR1cm4gJ3NzaEtleVNlY3JldCcgaW4gb2JqXG4gICAgICAmJiAnY29tbWl0RW1haWwnIGluIG9ialxuICAgICAgJiYgJ2NvbW1pdFVzZXJuYW1lJyBpbiBvYmo7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgc3NoS2V5U2VjcmV0OiBFeHRlcm5hbFNlY3JldDtcbiAgcHVibGljIHJlYWRvbmx5IGNvbW1pdEVtYWlsOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBjb21taXRVc2VybmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBXcml0YWJsZUdpdEh1YlJlcG9Qcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcblxuICAgIHRoaXMuc3NoS2V5U2VjcmV0ID0gcHJvcHMuc3NoS2V5U2VjcmV0O1xuICAgIHRoaXMuY29tbWl0RW1haWwgPSBwcm9wcy5jb21taXRFbWFpbDtcbiAgICB0aGlzLmNvbW1pdFVzZXJuYW1lID0gcHJvcHMuY29tbWl0VXNlcm5hbWU7XG4gIH1cbn1cbiJdfQ==
121
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInJlcG8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBSXFCO0FBb0NyQixNQUFhLGNBQWM7SUFJekIsWUFBNkIsVUFBK0I7UUFBL0IsZUFBVSxHQUFWLFVBQVUsQ0FBcUI7UUFINUMsZ0JBQVcsR0FBRyxLQUFLLENBQUM7SUFLcEMsQ0FBQztJQUVNLGlCQUFpQixDQUFDLFFBQTRCLEVBQUUsTUFBYztRQUNuRSxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzlCLFNBQVMsRUFBRSxRQUFRO1NBQ3BCLENBQUMsQ0FBQztRQUNILE1BQU0sWUFBWSxHQUFHLElBQUksOEJBQVMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLHNDQUFpQixDQUFDLHNCQUFzQixDQUFDO1lBQzNELFVBQVUsRUFBRSxNQUFNO1lBQ2xCLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtZQUMzQixNQUFNO1lBQ04sTUFBTSxFQUFFLFlBQVk7U0FDckIsQ0FBQyxDQUFDLENBQUM7UUFDSixPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBVyxpQkFBaUI7UUFDMUIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHNCQUFzQixDQUFDO0lBQ2hELENBQUM7SUFFRCxJQUFXLGdCQUFnQjtRQUN6QixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMscUJBQXFCLENBQUM7SUFDL0MsQ0FBQztJQUVNLGlCQUFpQixDQUFDLENBQVksRUFBRSxRQUFpQixFQUFFLFVBQThCLEVBQUc7UUFDekYsT0FBTywyQkFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUM7WUFDOUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLFVBQVUsRUFBRSxPQUFPLENBQUMsVUFBVTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sUUFBUTtR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LElBQUksR0FBRyxDQUFDO0lBQy9CLENBQUM7Q0FhRjtBQXJCRCxnREFxQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBTZWNyZXRWYWx1ZSwgU2VjcmV0c01hbmFnZXJTZWNyZXRPcHRpb25zLFxuICBhd3NfY29kZWJ1aWxkIGFzIGNidWlsZCwgYXdzX2NvZGVjb21taXQgYXMgY2NvbW1pdCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcGlwZWxpbmUsIGF3c19jb2RlcGlwZWxpbmVfYWN0aW9ucyBhcyBjcGlwZWxpbmVfYWN0aW9ucyxcbn0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBFeHRlcm5hbFNlY3JldCB9IGZyb20gJy4vcGVybWlzc2lvbnMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElSZXBvIHtcbiAgcmVwb3NpdG9yeVVybEh0dHA6IHN0cmluZztcbiAgcmVwb3NpdG9yeVVybFNzaDogc3RyaW5nO1xuICByZWFkb25seSBhbGxvd3NCYWRnZTogYm9vbGVhbjtcbiAgcmVhZG9ubHkgdG9rZW5TZWNyZXRBcm4/OiBzdHJpbmc7XG4gIGNyZWF0ZUJ1aWxkU291cmNlKHBhcmVudDogQ29uc3RydWN0LCB3ZWJob29rOiBib29sZWFuLCBvcHRpb25zPzogQnVpbGRTb3VyY2VPcHRpb25zKTogY2J1aWxkLklTb3VyY2U7XG4gIGNyZWF0ZVNvdXJjZVN0YWdlKHBpcGVsaW5lOiBjcGlwZWxpbmUuUGlwZWxpbmUsIGJyYW5jaDogc3RyaW5nKTogY3BpcGVsaW5lLkFydGlmYWN0O1xuICBkZXNjcmliZSgpOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQnVpbGRTb3VyY2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIFNpbmdsZSBicmFuY2hcbiAgICpcbiAgICogQ2Fubm90IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIGBicmFuY2hlc2AuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQWxsIGJyYW5jaGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYnJhbmNoZXNgIGluc3RlYWQuXG4gICAqL1xuICBicmFuY2g/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE11bHRpcGxlIGJyYW5jaGVzXG4gICAqXG4gICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgYnJhbmNoYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgYnJhbmNoZXNcbiAgICovXG4gIGJyYW5jaGVzPzogc3RyaW5nW107XG4gIGNsb25lRGVwdGg/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBDb2RlQ29tbWl0UmVwbyBpbXBsZW1lbnRzIElSZXBvIHtcbiAgcHVibGljIHJlYWRvbmx5IGFsbG93c0JhZGdlID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSB0b2tlblNlY3JldEFybj86IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHJlcG9zaXRvcnk6IGNjb21taXQuSVJlcG9zaXRvcnkpIHtcblxuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNvdXJjZVN0YWdlKHBpcGVsaW5lOiBjcGlwZWxpbmUuUGlwZWxpbmUsIGJyYW5jaDogc3RyaW5nKTogY3BpcGVsaW5lLkFydGlmYWN0IHtcbiAgICBjb25zdCBzdGFnZSA9IHBpcGVsaW5lLmFkZFN0YWdlKHtcbiAgICAgIHN0YWdlTmFtZTogJ1NvdXJjZScsXG4gICAgfSk7XG4gICAgY29uc3Qgc291cmNlT3V0cHV0ID0gbmV3IGNwaXBlbGluZS5BcnRpZmFjdCgnU291cmNlJyk7XG4gICAgc3RhZ2UuYWRkQWN0aW9uKG5ldyBjcGlwZWxpbmVfYWN0aW9ucy5Db2RlQ29tbWl0U291cmNlQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6ICdQdWxsJyxcbiAgICAgIHJlcG9zaXRvcnk6IHRoaXMucmVwb3NpdG9yeSxcbiAgICAgIGJyYW5jaCxcbiAgICAgIG91dHB1dDogc291cmNlT3V0cHV0LFxuICAgIH0pKTtcbiAgICByZXR1cm4gc291cmNlT3V0cHV0O1xuICB9XG5cbiAgcHVibGljIGdldCByZXBvc2l0b3J5VXJsSHR0cCgpIHtcbiAgICByZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnJlcG9zaXRvcnlDbG9uZVVybEh0dHA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnlVcmxTc2goKSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5yZXBvc2l0b3J5Q2xvbmVVcmxTc2g7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQnVpbGRTb3VyY2UoXzogQ29uc3RydWN0LCBfd2ViaG9vazogYm9vbGVhbiwgb3B0aW9uczogQnVpbGRTb3VyY2VPcHRpb25zID0geyB9KTogY2J1aWxkLklTb3VyY2Uge1xuICAgIHJldHVybiBjYnVpbGQuU291cmNlLmNvZGVDb21taXQoe1xuICAgICAgcmVwb3NpdG9yeTogdGhpcy5yZXBvc2l0b3J5LFxuICAgICAgY2xvbmVEZXB0aDogb3B0aW9ucy5jbG9uZURlcHRoLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGRlc2NyaWJlKCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucmVwb3NpdG9yeS5yZXBvc2l0b3J5TmFtZTtcbiAgfVxufVxuXG5pbnRlcmZhY2UgR2l0SHViUmVwb1Byb3BzIHtcbiAgLyoqXG4gICAqIFNlY3JldHMgTWFuYWdlciBBUk4gb2YgdGhlIE9BdXRoIHRva2VuIHNlY3JldCB0aGF0IGFsbG93cyBhY2Nlc3MgdG8geW91ciBnaXRodWIgcmVwby5cbiAgICovXG4gIHRva2VuU2VjcmV0QXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE9wdGlvbnMgZm9yIHJlZmVyZW5jaW5nIGEgc2VjcmV0IHZhbHVlIGZyb20gU2VjcmV0cyBNYW5hZ2VyXG4gICAqL1xuICB0b2tlblNlY3JldE9wdGlvbnM/OiBTZWNyZXRzTWFuYWdlclNlY3JldE9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEluIHRoZSBmb3JtIFwiYWNjb3VudC9yZXBvXCIuXG4gICAqL1xuICByZXBvc2l0b3J5OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBHaXRIdWJSZXBvIGltcGxlbWVudHMgSVJlcG8ge1xuICBwdWJsaWMgcmVhZG9ubHkgYWxsb3dzQmFkZ2UgPSB0cnVlO1xuICBwdWJsaWMgcmVhZG9ubHkgb3duZXI6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHJlcG86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHRva2VuU2VjcmV0QXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB0b2tlblNlY3JldE9wdGlvbnM/OiBTZWNyZXRzTWFuYWdlclNlY3JldE9wdGlvbnM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEdpdEh1YlJlcG9Qcm9wcykge1xuICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBwcm9wcy5yZXBvc2l0b3J5O1xuICAgIGNvbnN0IFtvd25lciwgcmVwb10gPSByZXBvc2l0b3J5LnNwbGl0KCcvJyk7XG5cbiAgICB0aGlzLm93bmVyID0gb3duZXI7XG4gICAgdGhpcy5yZXBvID0gcmVwbztcbiAgICB0aGlzLnRva2VuU2VjcmV0QXJuID0gcHJvcHMudG9rZW5TZWNyZXRBcm47XG4gICAgdGhpcy50b2tlblNlY3JldE9wdGlvbnMgPSBwcm9wcy50b2tlblNlY3JldE9wdGlvbnM7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnlVcmxIdHRwKCkge1xuICAgIHJldHVybiBgaHR0cHM6Ly9naXRodWIuY29tLyR7dGhpcy5vd25lcn0vJHt0aGlzLnJlcG99LmdpdGA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcG9zaXRvcnlVcmxTc2goKSB7XG4gICAgcmV0dXJuIGBnaXRAZ2l0aHViLmNvbToke3RoaXMub3duZXJ9LyR7dGhpcy5yZXBvfS5naXRgO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVNvdXJjZVN0YWdlKHBpcGVsaW5lOiBjcGlwZWxpbmUuUGlwZWxpbmUsIGJyYW5jaDogc3RyaW5nKTogY3BpcGVsaW5lLkFydGlmYWN0IHtcbiAgICBjb25zdCBzdGFnZSA9IHBpcGVsaW5lLmFkZFN0YWdlKHsgc3RhZ2VOYW1lOiAnU291cmNlJyB9KTtcblxuICAgIGNvbnN0IHNvdXJjZU91dHB1dCA9IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoJ1NvdXJjZScpO1xuICAgIHN0YWdlLmFkZEFjdGlvbihuZXcgY3BpcGVsaW5lX2FjdGlvbnMuR2l0SHViU291cmNlQWN0aW9uKHtcbiAgICAgIGFjdGlvbk5hbWU6ICdQdWxsJyxcbiAgICAgIGJyYW5jaCxcbiAgICAgIG9hdXRoVG9rZW46IFNlY3JldFZhbHVlLnNlY3JldHNNYW5hZ2VyKHRoaXMudG9rZW5TZWNyZXRBcm4sIHRoaXMudG9rZW5TZWNyZXRPcHRpb25zKSxcbiAgICAgIG93bmVyOiB0aGlzLm93bmVyLFxuICAgICAgcmVwbzogdGhpcy5yZXBvLFxuICAgICAgb3V0cHV0OiBzb3VyY2VPdXRwdXQsXG4gICAgfSkpO1xuICAgIHJldHVybiBzb3VyY2VPdXRwdXQ7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlQnVpbGRTb3VyY2UoXzogQ29uc3RydWN0LCB3ZWJob29rOiBib29sZWFuLCBvcHRpb25zOiBCdWlsZFNvdXJjZU9wdGlvbnMgPSB7IH0pOiBjYnVpbGQuSVNvdXJjZSB7XG4gICAgaWYgKG9wdGlvbnMuYnJhbmNoICYmIG9wdGlvbnMuYnJhbmNoZXMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3BlY2lmeSBhdCBtb3N0IG9uZSBvZiBcXCdicmFuY2hcXCcgYW5kIFxcJ2JyYW5jaGVzXFwnJyk7XG4gICAgfVxuICAgIGNvbnN0IGJyYW5jaGVzID0gb3B0aW9ucy5icmFuY2hlcyA/PyAob3B0aW9ucy5icmFuY2ggPyBbb3B0aW9ucy5icmFuY2hdIDogW10pO1xuXG4gICAgcmV0dXJuIGNidWlsZC5Tb3VyY2UuZ2l0SHViKHtcbiAgICAgIG93bmVyOiB0aGlzLm93bmVyLFxuICAgICAgcmVwbzogdGhpcy5yZXBvLFxuICAgICAgd2ViaG9vayxcbiAgICAgIGNsb25lRGVwdGg6IG9wdGlvbnMuY2xvbmVEZXB0aCxcbiAgICAgIHJlcG9ydEJ1aWxkU3RhdHVzOiB3ZWJob29rLFxuICAgICAgd2ViaG9va0ZpbHRlcnM6IHdlYmhvb2tcbiAgICAgICAgPyB0aGlzLmNyZWF0ZVdlYmhvb2tGaWx0ZXJzKGJyYW5jaGVzKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBkZXNjcmliZSgpIHtcbiAgICByZXR1cm4gYCR7dGhpcy5vd25lcn0vJHt0aGlzLnJlcG99YDtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlV2ViaG9va0ZpbHRlcnMoYnJhbmNoZXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKGJyYW5jaGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIC8vIFR1cm4gdGhlIGxpc3Qgb2YgYnJhbmNoZXMgaW50byBhIHJlZ2V4XG4gICAgICBjb25zdCBicmFuY2hFeHByID0gYnJhbmNoZXMubWFwKGIgPT4gYF5yZWZzL2hlYWRzLyR7Yn0kYCkuam9pbignfCcpO1xuXG4gICAgICByZXR1cm4gW1xuICAgICAgICBjYnVpbGQuRmlsdGVyR3JvdXAuaW5FdmVudE9mKGNidWlsZC5FdmVudEFjdGlvbi5QVVNIKVxuICAgICAgICAgIC5hbmRIZWFkUmVmSXMoYnJhbmNoRXhwciksXG4gICAgICAgIGNidWlsZC5GaWx0ZXJHcm91cC5pbkV2ZW50T2YoY2J1aWxkLkV2ZW50QWN0aW9uLlBVTExfUkVRVUVTVF9DUkVBVEVELCBjYnVpbGQuRXZlbnRBY3Rpb24uUFVMTF9SRVFVRVNUX1VQREFURUQpXG4gICAgICAgICAgLmFuZEJhc2VSZWZJcyhicmFuY2hFeHByKSxcbiAgICAgIF07XG4gICAgfVxuICAgIHJldHVybiBbXG4gICAgICBjYnVpbGQuRmlsdGVyR3JvdXAuaW5FdmVudE9mKFxuICAgICAgICBjYnVpbGQuRXZlbnRBY3Rpb24uUFVTSCxcbiAgICAgICAgY2J1aWxkLkV2ZW50QWN0aW9uLlBVTExfUkVRVUVTVF9DUkVBVEVELFxuICAgICAgICBjYnVpbGQuRXZlbnRBY3Rpb24uUFVMTF9SRVFVRVNUX1VQREFURUQsXG4gICAgICApLFxuICAgIF07XG4gIH1cbn1cblxuZXhwb3J0IGludGVyZmFjZSBXcml0YWJsZUdpdEh1YlJlcG9Qcm9wcyBleHRlbmRzIEdpdEh1YlJlcG9Qcm9wcyB7XG4gIC8qKlxuICAgKiBTU0gga2V5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcG9zaXRvcnkuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVxdWlyZWQgaWYgeW91IHdpc2ggdG8gYmUgYWJsZSB0byB1c2UgYWN0aW9ucyB0aGF0IHdyaXRlIHRvIHRoZSByZXBvXG4gICAqIHN1Y2ggYXMgZG9jcyBwdWJsaXNoaW5nIGFuZCBhdXRvbWF0aWMgYnVtcHMuXG4gICAqL1xuICBzc2hLZXlTZWNyZXQ6IEV4dGVybmFsU2VjcmV0O1xuXG4gIC8qKlxuICAgKiBUaGUgdXNlcm5hbWUgdG8gdXNlIGZvciB0aGUgcHVibGlzaGVkIGNvbW1pdHNcbiAgICovXG4gIGNvbW1pdFVzZXJuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBlbWFpbCBhZGRyZXNzIHRvIHVzZSBmb3IgdGhlIHB1Ymxpc2hlZCBjb21taXRzXG4gICAqL1xuICBjb21taXRFbWFpbDogc3RyaW5nO1xuXG59XG5cbmV4cG9ydCBjbGFzcyBXcml0YWJsZUdpdEh1YlJlcG8gZXh0ZW5kcyBHaXRIdWJSZXBvIHtcblxuICBwdWJsaWMgc3RhdGljIGlzV3JpdGFibGVHaXRIdWJSZXBvKHJlcG86IElSZXBvKTogcmVwbyBpcyBXcml0YWJsZUdpdEh1YlJlcG8ge1xuICAgIGNvbnN0IG9iaiA9IHJlcG8gYXMgYW55O1xuXG4gICAgcmV0dXJuICdzc2hLZXlTZWNyZXQnIGluIG9ialxuICAgICAgJiYgJ2NvbW1pdEVtYWlsJyBpbiBvYmpcbiAgICAgICYmICdjb21taXRVc2VybmFtZScgaW4gb2JqO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IHNzaEtleVNlY3JldDogRXh0ZXJuYWxTZWNyZXQ7XG4gIHB1YmxpYyByZWFkb25seSBjb21taXRFbWFpbDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY29tbWl0VXNlcm5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3Rvcihwcm9wczogV3JpdGFibGVHaXRIdWJSZXBvUHJvcHMpIHtcbiAgICBzdXBlcihwcm9wcyk7XG5cbiAgICB0aGlzLnNzaEtleVNlY3JldCA9IHByb3BzLnNzaEtleVNlY3JldDtcbiAgICB0aGlzLmNvbW1pdEVtYWlsID0gcHJvcHMuY29tbWl0RW1haWw7XG4gICAgdGhpcy5jb21taXRVc2VybmFtZSA9IHByb3BzLmNvbW1pdFVzZXJuYW1lO1xuICB9XG59XG4iXX0=
package/lib/repo.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import {
2
- Construct, SecretValue, SecretsManagerSecretOptions,
2
+ SecretValue, SecretsManagerSecretOptions,
3
3
  aws_codebuild as cbuild, aws_codecommit as ccommit,
4
4
  aws_codepipeline as cpipeline, aws_codepipeline_actions as cpipeline_actions,
5
- } from 'monocdk';
5
+ } from 'aws-cdk-lib';
6
+ import { Construct } from 'constructs';
6
7
  import { ExternalSecret } from './permissions';
7
8
 
8
9
  export interface IRepo {
@@ -1,4 +1,5 @@
1
- import { Construct, Duration, aws_cloudwatch as cloudwatch, aws_codebuild as cbuild, aws_codepipeline as cpipeline, aws_codepipeline_actions as cpipeline_actions, aws_iam as iam } from 'monocdk';
1
+ import { Duration, aws_cloudwatch as cloudwatch, aws_codebuild as cbuild, aws_codepipeline as cpipeline, aws_codepipeline_actions as cpipeline_actions, aws_iam as iam } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
2
3
  import { BuildSpec } from './build-spec';
3
4
  export interface ShellableOptions {
4
5
  /**
package/lib/shellable.js CHANGED
@@ -26,7 +26,8 @@ Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.WindowsPlatform = exports.LinuxPlatform = exports.ShellPlatform = exports.PlatformType = exports.Shellable = void 0;
27
27
  const fs = __importStar(require("fs"));
28
28
  const path = __importStar(require("path"));
29
- const monocdk_1 = require("monocdk");
29
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
30
+ const constructs_1 = require("constructs");
30
31
  const build_spec_1 = require("./build-spec");
31
32
  const util_1 = require("./util");
32
33
  const S3_BUCKET_ENV = 'SCRIPT_S3_BUCKET';
@@ -44,7 +45,7 @@ const S3_KEY_ENV = 'SCRIPT_S3_KEY';
44
45
  *
45
46
  * Supports both Windows and Linux computes.
46
47
  */
47
- class Shellable extends monocdk_1.Construct {
48
+ class Shellable extends constructs_1.Construct {
48
49
  constructor(parent, id, props) {
49
50
  var _a, _b;
50
51
  super(parent, id);
@@ -53,10 +54,10 @@ class Shellable extends monocdk_1.Construct {
53
54
  if (!fs.existsSync(entrypoint)) {
54
55
  throw new Error(`Cannot find test entrypoint: ${entrypoint}`);
55
56
  }
56
- const asset = new monocdk_1.aws_s3_assets.Asset(this, 'ScriptDirectory', {
57
+ const asset = new aws_cdk_lib_1.aws_s3_assets.Asset(this, 'ScriptDirectory', {
57
58
  path: props.scriptDirectory,
58
59
  });
59
- this.outputArtifactName = `Artifact_${this.node.uniqueId}`;
60
+ this.outputArtifactName = `Artifact_${this.node.addr}`;
60
61
  if (this.outputArtifactName.length > 100) {
61
62
  throw new Error(`Whoops, too long: ${this.outputArtifactName}`);
62
63
  }
@@ -65,57 +66,57 @@ class Shellable extends monocdk_1.Construct {
65
66
  build: this.platform.buildCommands(props.entrypoint),
66
67
  }).merge(props.buildSpec || build_spec_1.BuildSpec.empty());
67
68
  const environmentSecretsAsSecretNames = this.convertEnvironmentSecretArnsToSecretNames(props.environmentSecrets);
68
- this.project = new monocdk_1.aws_codebuild.Project(this, 'Resource', {
69
+ this.project = new aws_cdk_lib_1.aws_codebuild.Project(this, 'Resource', {
69
70
  projectName: props.buildProjectName,
70
71
  source: props.source,
71
72
  environment: {
72
73
  buildImage: this.platform.buildImage,
73
- computeType: props.computeType || monocdk_1.aws_codebuild.ComputeType.MEDIUM,
74
+ computeType: props.computeType || aws_cdk_lib_1.aws_codebuild.ComputeType.MEDIUM,
74
75
  privileged: props.privileged,
75
76
  },
76
77
  environmentVariables: {
77
78
  [S3_BUCKET_ENV]: { value: asset.s3BucketName },
78
79
  [S3_KEY_ENV]: { value: asset.s3ObjectKey },
79
80
  ...(0, util_1.renderEnvironmentVariables)(props.environment),
80
- ...(0, util_1.renderEnvironmentVariables)(environmentSecretsAsSecretNames, monocdk_1.aws_codebuild.BuildEnvironmentVariableType.SECRETS_MANAGER),
81
- ...(0, util_1.renderEnvironmentVariables)(props.environmentParameters, monocdk_1.aws_codebuild.BuildEnvironmentVariableType.PARAMETER_STORE),
81
+ ...(0, util_1.renderEnvironmentVariables)(environmentSecretsAsSecretNames, aws_cdk_lib_1.aws_codebuild.BuildEnvironmentVariableType.SECRETS_MANAGER),
82
+ ...(0, util_1.renderEnvironmentVariables)(props.environmentParameters, aws_cdk_lib_1.aws_codebuild.BuildEnvironmentVariableType.PARAMETER_STORE),
82
83
  },
83
84
  timeout: props.timeout,
84
- buildSpec: monocdk_1.aws_codebuild.BuildSpec.fromObject(this.buildSpec.render({ primaryArtifactName: this.outputArtifactName })),
85
+ buildSpec: aws_cdk_lib_1.aws_codebuild.BuildSpec.fromObject(this.buildSpec.render({ primaryArtifactName: this.outputArtifactName })),
85
86
  });
86
87
  this.role = this.project.role; // not undefined, as it's a new Project
87
88
  asset.grantRead(this.role);
88
89
  // Grant read access to secrets
89
90
  Object.entries((_a = props.environmentSecrets) !== null && _a !== void 0 ? _a : {}).forEach(([name, secretArn]) => {
90
- const secret = monocdk_1.aws_secretsmanager.Secret.fromSecretCompleteArn(this, `${name}Secret`, secretArn);
91
+ const secret = aws_cdk_lib_1.aws_secretsmanager.Secret.fromSecretCompleteArn(this, `${name}Secret`, secretArn);
91
92
  secret.grantRead(this.role);
92
93
  });
93
94
  // Grant read access to parameters
94
95
  Object.entries((_b = props.environmentParameters) !== null && _b !== void 0 ? _b : {}).forEach(([name, parameterName]) => {
95
- const parameter = monocdk_1.aws_ssm.StringParameter.fromStringParameterName(this, `${name}Parameter`, parameterName);
96
+ const parameter = aws_cdk_lib_1.aws_ssm.StringParameter.fromStringParameterName(this, `${name}Parameter`, parameterName);
96
97
  parameter.grantRead(this.role);
97
98
  });
98
99
  if (props.assumeRole) {
99
- this.role.addToPolicy(new monocdk_1.aws_iam.PolicyStatement({
100
+ this.role.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
100
101
  actions: ['sts:AssumeRole'],
101
102
  resources: [props.assumeRole.roleArn],
102
103
  }));
103
104
  }
104
- this.alarm = new monocdk_1.aws_cloudwatch.Alarm(this, 'Alarm', {
105
- metric: this.project.metricFailedBuilds({ period: props.alarmPeriod || monocdk_1.Duration.seconds(300) }),
105
+ this.alarm = new aws_cdk_lib_1.aws_cloudwatch.Alarm(this, 'Alarm', {
106
+ metric: this.project.metricFailedBuilds({ period: props.alarmPeriod || aws_cdk_lib_1.Duration.seconds(300) }),
106
107
  threshold: props.alarmThreshold || 1,
107
- comparisonOperator: monocdk_1.aws_cloudwatch.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
108
+ comparisonOperator: aws_cdk_lib_1.aws_cloudwatch.ComparisonOperator.GREATER_THAN_OR_EQUAL_TO_THRESHOLD,
108
109
  evaluationPeriods: props.alarmEvaluationPeriods || 1,
109
- treatMissingData: monocdk_1.aws_cloudwatch.TreatMissingData.IGNORE,
110
+ treatMissingData: aws_cdk_lib_1.aws_cloudwatch.TreatMissingData.IGNORE,
110
111
  });
111
112
  }
112
113
  addToPipeline(stage, name, inputArtifact, runOrder) {
113
- const codeBuildAction = new monocdk_1.aws_codepipeline_actions.CodeBuildAction({
114
+ const codeBuildAction = new aws_cdk_lib_1.aws_codepipeline_actions.CodeBuildAction({
114
115
  actionName: name,
115
116
  project: this.project,
116
117
  runOrder,
117
118
  input: inputArtifact,
118
- outputs: [new monocdk_1.aws_codepipeline.Artifact(this.outputArtifactName)].concat(this.buildSpec.additionalArtifactNames.map(artifactName => new monocdk_1.aws_codepipeline.Artifact(artifactName))),
119
+ outputs: [new aws_cdk_lib_1.aws_codepipeline.Artifact(this.outputArtifactName)].concat(this.buildSpec.additionalArtifactNames.map(artifactName => new aws_cdk_lib_1.aws_codepipeline.Artifact(artifactName))),
119
120
  });
120
121
  stage.addAction(codeBuildAction);
121
122
  return codeBuildAction;
@@ -131,7 +132,7 @@ class Shellable extends monocdk_1.Construct {
131
132
  }
132
133
  const out = {};
133
134
  Object.entries(environmentSecrets !== null && environmentSecrets !== void 0 ? environmentSecrets : {}).forEach(([name, secretArn]) => {
134
- const secret = monocdk_1.aws_secretsmanager.Secret.fromSecretCompleteArn(this, `${name}SecretFromArn`, secretArn);
135
+ const secret = aws_cdk_lib_1.aws_secretsmanager.Secret.fromSecretCompleteArn(this, `${name}SecretFromArn`, secretArn);
135
136
  out[name] = secret.secretName;
136
137
  });
137
138
  return out;
@@ -158,14 +159,14 @@ class ShellPlatform {
158
159
  */
159
160
  static get LinuxUbuntu() {
160
161
  // Cannot be static member because of initialization order
161
- return new LinuxPlatform(monocdk_1.aws_codebuild.LinuxBuildImage.STANDARD_4_0);
162
+ return new LinuxPlatform(aws_cdk_lib_1.aws_codebuild.LinuxBuildImage.STANDARD_4_0);
162
163
  }
163
164
  /**
164
165
  * Return a default Windows platform
165
166
  */
166
167
  static get Windows() {
167
168
  // Cannot be static member because of initialization order
168
- return new WindowsPlatform(monocdk_1.aws_codebuild.WindowsBuildImage.WIN_SERVER_CORE_2019_BASE);
169
+ return new WindowsPlatform(aws_cdk_lib_1.aws_codebuild.WindowsBuildImage.WIN_SERVER_CORE_2019_BASE);
169
170
  }
170
171
  }
171
172
  exports.ShellPlatform = ShellPlatform;
@@ -259,4 +260,4 @@ class WindowsPlatform extends ShellPlatform {
259
260
  }
260
261
  }
261
262
  exports.WindowsPlatform = WindowsPlatform;
262
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3QixxQ0FLaUI7QUFDakIsNkNBQXlDO0FBQ3pDLGlDQUFvRDtBQUVwRCxNQUFNLGFBQWEsR0FBRyxrQkFBa0IsQ0FBQztBQUN6QyxNQUFNLFVBQVUsR0FBRyxlQUFlLENBQUM7QUErTW5DOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQWEsU0FBVSxTQUFRLG1CQUFTO0lBY3RDLFlBQVksTUFBaUIsRUFBRSxFQUFVLEVBQUUsS0FBcUI7O1FBQzlELEtBQUssQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFbEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxJQUFJLGFBQWEsQ0FBQyxXQUFXLENBQUM7UUFFNUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN0RSxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsRUFBRTtZQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLGdDQUFnQyxVQUFVLEVBQUUsQ0FBQyxDQUFDO1NBQy9EO1FBRUQsTUFBTSxLQUFLLEdBQUcsSUFBSSx1QkFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsaUJBQWlCLEVBQUU7WUFDdEQsSUFBSSxFQUFFLEtBQUssQ0FBQyxlQUFlO1NBQzVCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxrQkFBa0IsR0FBRyxZQUFZLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDM0QsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsTUFBTSxHQUFHLEdBQUcsRUFBRTtZQUN4QyxNQUFNLElBQUksS0FB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b20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3QsIER1cmF0aW9uLFxuICBhd3NfY2xvdWR3YXRjaCBhcyBjbG91ZHdhdGNoLCBhd3NfY29kZWJ1aWxkIGFzIGNidWlsZCxcbiAgYXdzX2NvZGVwaXBlbGluZSBhcyBjcGlwZWxpbmUsIGF3c19jb2RlcGlwZWxpbmVfYWN0aW9ucyBhcyBjcGlwZWxpbmVfYWN0aW9ucyxcbiAgYXdzX2lhbSBhcyBpYW0sIGF3c19zM19hc3NldHMgYXMgYXNzZXRzLCBhd3Nfc2VjcmV0c21hbmFnZXIsIGF3c19zc20sXG59IGZyb20gJ21vbm9jZGsnO1xuaW1wb3J0IHsgQnVpbGRTcGVjIH0gZnJvbSAnLi9idWlsZC1zcGVjJztcbmltcG9ydCB7IHJlbmRlckVudmlyb25tZW50VmFyaWFibGVzIH0gZnJvbSAnLi91dGlsJztcblxuY29uc3QgUzNfQlVDS0VUX0VOViA9ICdTQ1JJUFRfUzNfQlVDS0VUJztcbmNvbnN0IFMzX0tFWV9FTlYgPSAnU0NSSVBUX1MzX0tFWSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxhYmxlT3B0aW9ucyB7XG5cbiAgLyoqXG4gICAqIFNvdXJjZSBmb3IgdGhlIENvZGVCdWlsZCBwcm9qZWN0XG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIHNvdXJjZVxuICAgKi9cbiAgc291cmNlPzogY2J1aWxkLklTb3VyY2U7XG5cbiAgLyoqXG4gICAqIFdoYXQgcGxhdGZvcm0gdG8gdXMgdG8gcnVuIHRoZSBzY3JpcHRzIG9uXG4gICAqXG4gICAqIEBkZWZhdWx0IFNoZWxsUGxhdGZvcm0uTGludXhVYnVudHVcbiAgICovXG4gIHBsYXRmb3JtPzogU2hlbGxQbGF0Zm9ybTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgdG8gc2V0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgZW52aXJvbm1lbnQ/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB8IHVuZGVmaW5lZCB9O1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBzZWNyZXRzIG1hbmFnZXIgdmFsdWVzLiBUaGUgdmFsdWVzIG11c3QgYmUgY29tcGxldGUgU2VjcmV0IE1hbmFnZXIgQVJOcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50U2VjcmV0cz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIEVudmlyb25tZW50IHZhcmlhYmxlcyB3aXRoIFNTTSBwYXJhbWV0ZXIgdmFsdWVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlc1xuICAgKi9cbiAgZW52aXJvbm1lbnRQYXJhbWV0ZXJzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIGNvbXB1dGUgdHlwZSB0byB1c2UgZm9yIHRoZSBidWlsZCBjb250YWluZXIuXG4gICAqXG4gICAqIE5vdGUgdGhhdCBub3QgYWxsIGNvbWJpbmF0aW9ucyBhcmUgYXZhaWxhYmxlLiBGb3IgZXhhbXBsZSxcbiAgICogV2luZG93cyBpbWFnZXMgY2Fubm90IGJlIHJ1biBvbiBDb21wdXRlVHlwZS5TbWFsbC5cbiAgICpcbiAgICogQGRlZmF1bHQgQ29tcHV0ZVR5cGUuTWVkaXVtXG4gICAqL1xuICBjb21wdXRlVHlwZT86IGNidWlsZC5Db21wdXRlVHlwZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGhvdyB0aGUgcHJvamVjdCBidWlsZHMgRG9ja2VyIGltYWdlcy4gU3BlY2lmeSB0cnVlIHRvIGVuYWJsZVxuICAgKiBydW5uaW5nIHRoZSBEb2NrZXIgZGFlbW9uIGluc2lkZSBhIERvY2tlciBjb250YWluZXIuIFRoaXMgdmFsdWUgbXVzdCBiZVxuICAgKiBzZXQgdG8gdHJ1ZSBvbmx5IGlmIHRoaXMgYnVpbGQgcHJvamVjdCB3aWxsIGJlIHVzZWQgdG8gYnVpbGQgRG9ja2VyXG4gICAqIGltYWdlcywgYW5kIHRoZSBzcGVjaWZpZWQgYnVpbGQgZW52aXJvbm1lbnQgaW1hZ2UgaXMgbm90IG9uZSBwcm92aWRlZCBieVxuICAgKiBBV1MgQ29kZUJ1aWxkIHdpdGggRG9ja2VyIHN1cHBvcnQuIE90aGVyd2lzZSwgYWxsIGFzc29jaWF0ZWQgYnVpbGRzIHRoYXRcbiAgICogYXR0ZW1wdCB0byBpbnRlcmFjdCB3aXRoIHRoZSBEb2NrZXIgZGFlbW9uIHdpbGwgZmFpbC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHByaXZpbGVnZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBmb3IgdGhlIGJ1aWxkIHByb2plY3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IGEgbmFtZSBpcyBnZW5lcmF0ZWQgYnkgQ2xvdWRGb3JtYXRpb24uXG4gICAqL1xuICBidWlsZFByb2plY3ROYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgUmVnaW9uYWwgQVdTIFNUUyBlbmRwb2ludHMgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZFxuICAgKiBvZiB0aGUgZ2xvYmFsIGVuZHBvaW50LiBTcGVjaWZ5IHRydWUgdG8gdXNlIFJlZ2lvbmFsIEFXUyBTVFMgZW5kcG9pbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDYW4gYmUgdXNlZCB0byBydW4gdGhpcyBidWlsZCB1c2luZyBhIHNwZWNpZmljIElBTSByb2xlLiBUaGlzIGNhbiBiZSB1c2VkLFxuICAgKiBmb3IgZXhhbXBsZSwgdG8gZXhlY3V0ZSBpbiB0aGUgY29udGV4dCBvZiBhbm90aGVyIGFjY291bnQgKGUuZy4gdG8gcnVuXG4gICAqIHRlc3RzIGluIGlzb2xhdGlvbikuXG4gICAqL1xuICBhc3N1bWVSb2xlPzogQXNzdW1lUm9sZTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBidWlsZHNwZWMgKGZvciBhcnRpZmFjdHMgZXRjLilcbiAgICpcbiAgICogQGRlZmF1bHQgTm8gYWRkaXRpb25hbCBidWlsZHNwZWNcbiAgICovXG4gIGJ1aWxkU3BlYz86IEJ1aWxkU3BlYztcblxuICAvKipcbiAgICogVGhlIHRpbWVvdXQgb2YgdGhlIGJ1aWxkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgQ29kZUJ1aWxkIGRlZmF1bHQgKDEgaG91cilcbiAgICovXG4gIHRpbWVvdXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQWxhcm0gcGVyaW9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCAzMDAgc2Vjb25kcyAoNSBtaW51dGVzKVxuICAgKi9cbiAgYWxhcm1QZXJpb2Q/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQWxhcm0gdGhyZXNob2xkLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBhbGFybVRocmVzaG9sZD86IG51bWJlcjtcblxuICAvKipcbiAgICogQWxhcm0gZXZhbHVhdGlvbiBwZXJpb2RzLlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBhbGFybUV2YWx1YXRpb25QZXJpb2RzPzogbnVtYmVyO1xuXG4gIHNlY29uZGFyeUFydGlmYWN0TmFtZXM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHVzZWQgdG8gY3JlYXRlIGEgU2hlbGxhYmxlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2hlbGxhYmxlUHJvcHMgZXh0ZW5kcyBTaGVsbGFibGVPcHRpb25zIHtcbiAgLyoqXG4gICAqIERpcmVjdG9yeSB3aXRoIHRoZSBzY3JpcHRzLlxuICAgKlxuICAgKiBUaGUgd2hvbGUgZGlyZWN0b3J5IHdpbGwgYmUgdXBsb2FkZWQuXG4gICAqL1xuICBzY3JpcHREaXJlY3Rvcnk6IHN0cmluZztcblxuICAvKipcbiAgICogRmlsZW5hbWUgb2YgdGhlIGluaXRpYWwgc2NyaXB0IHRvIHN0YXJ0LCByZWxhdGl2ZSB0byBzY3JpcHREaXJlY3RvcnkuXG4gICAqL1xuICBlbnRyeXBvaW50OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQXNzdW1lUm9sZSB7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIHJvbGUgdG8gYXNzdW1lLlxuICAgKi9cbiAgcm9sZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBbiBpZGVudGlmaWVyIGZvciB0aGUgYXNzdW1lZCByb2xlIHNlc3Npb24uXG4gICAqXG4gICAqIFVzZSAgdGhlICByb2xlICBzZXNzaW9uIG5hbWUgdG8gdW5pcXVlbHkgaWRlbnRpZnkgYSBzZXNzaW9uIHdoZW4gdGhlIHNhbWVcbiAgICogcm9sZSBpcyBhc3N1bWVkIGJ5IGRpZmZlcmVudCBwcmluY2lwYWxzIG9yIGZvciBkaWZmZXJlbnQgcmVhc29ucy4gSW5cbiAgICogY3Jvc3MtYWNjb3VudCBzY2VuYXJpb3MsIHRoZSByb2xlIHNlc3Npb24gbmFtZSBpcyB2aXNpYmxlIHRvLCBhbmQgY2FuIGJlXG4gICAqIGxvZ2dlZCBieSB0aGUgYWNjb3VudCB0aGF0IG93bnMgdGhlIHJvbGUuICBUaGUgcm9sZSBzZXNzaW9uIG5hbWUgaXMgYWxzb1xuICAgKiB1c2VkIGluIHRoZSBBUk4gb2YgdGhlIGFzc3VtZWQgcm9sZSBwcmluY2lwYWwuIFRoaXMgbWVhbnMgdGhhdCBzdWJzZXF1ZW50XG4gICAqIGNyb3NzLWFjY291bnQgQVBJIHJlcXVlc3RzIHVzaW5nIHRoZSB0ZW0tIHBvcmFyeSBzZWN1cml0eSBjcmVkZW50aWFscyB3aWxsXG4gICAqIGV4cG9zZSB0aGUgcm9sZSBzZXNzaW9uIG5hbWUgdG8gdGhlIGV4dGVybmFsIGFjY291bnQgaW4gdGhlaXIgQ2xvdWRUcmFpbFxuICAgKiBsb2dzLlxuICAgKlxuICAgKiBUaGUgcmVnZXggdXNlZCB0byB2YWxpZGF0ZSB0aGlzIHBhcmFtZXRlciBpcyBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzXG4gICAqIGNvbnNpc3RpbmcgIG9mIHVwcGVyLSBhbmQgbG93ZXItY2FzZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIG5vXG4gICAqIHNwYWNlcy4gWW91IGNhbiBhbHNvIGluY2x1ZGUgdW5kZXJzY29yZXMgb3IgYW55IG9mIHRoZSBmb2xsb3dpbmdcbiAgICogY2hhcmFjdGVyczogPSwuQC1cbiAgICovXG4gIHNlc3Npb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgIHVuaXF1ZSAgaWRlbnRpZmllciAgdGhhdCAgaXMgIHVzZWQgYnkgdGhpcmQgcGFydGllcyB3aGVuIGFzc3VtaW5nIHJvbGVzXG4gICAqIGluIHRoZWlyIGN1c3RvbWVycycgYWNjb3VudHMuIEZvciBlYWNoICByb2xlICB0aGF0ICB0aGUgIHRoaXJkIHBhcnR5IGNhblxuICAgKiBhc3N1bWUsIHRoZXkgc2hvdWxkIGluc3RydWN0IHRoZWlyIGN1c3RvbWVycyB0byBlbnN1cmUgdGhlIHJvbGUncyB0cnVzdFxuICAgKiBwb2xpY3kgY2hlY2tzIGZvciB0aGUgZXh0ZXJuYWwgSUQgdGhhdCB0aGUgdGhpcmQgIHBhcnR5IGdlbmVyYXRlZC4gIEVhY2hcbiAgICogdGltZSB0aGUgdGhpcmQgcGFydHkgYXNzdW1lcyB0aGUgcm9sZSwgdGhleSBzaG91bGQgcGFzcyB0aGUgY3VzdG9tZXInc1xuICAgKiBleHRlcm5hbCBJRC4gVGhlIGV4dGVybmFsIElEIGlzIHVzZWZ1bCBpbiAgb3JkZXIgdG8gIGhlbHAgIHRoaXJkICBwYXJ0aWVzXG4gICAqIGJpbmQgYSByb2xlIHRvIHRoZSBjdXN0b21lciB3aG8gY3JlYXRlZCBpdC4gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG4gICAqIGV4dGVybmFsIElELCBzZWUgSG93IHRvIFVzZSBhbiBFeHRlci0gbmFsICBJRCAgV2hlbiBHcmFudGluZyBBY2Nlc3MgdG8gWW91clxuICAgKiBBV1MgUmVzb3VyY2VzIHRvIGEgVGhpcmQgUGFydHkgaW4gdGhlIElBTSBVc2VyIEd1aWRlIC5cbiAgICpcbiAgICogVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSBhIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGNvbnNpc3RpbmcgIG9mIHVwcGVyLSBhbmRcbiAgICogbG93ZXItY2FzZSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyB3aXRoIG5vIHNwYWNlcy4gWW91IGNhbiBhbHNvIGluY2x1ZGVcbiAgICogdW5kZXJzY29yZXMgb3IgIGFueSAgb2YgIHRoZSAgZm9sbG93aW5nIGNoYXJhY3RlcnM6ID0sLkA6Ly1cbiAgICovXG4gIGV4dGVybmFsSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZW4gYSBwcm9maWUgbmFtZSBpcyBjb25maWd1cmVkLCBhbiBhc3N1bWVkIHJvbGUgY29uZmlndXJhdGlvbiB3aWxsIGJlIGNyZWF0ZWRcbiAgICogaW4gdGhlIHNoYXJlZCBhd3MgY29uZmlndXJhdGlvbiBmaWxlICh+Ly5hd3MvY29uZmlnKS4gVGhpcyBpcyBpbiBjb250cmFyeSBvZiBzaW1wbHkgaW52b2tpbmdcbiAgICogYW4gYHN0cyBhc3N1bWUtcm9sZWAgY29tbWFuZCB0aGF0IGNyZWF0ZXMgYSBzZXNzaW9uIHdpdGggYSBmaXhlZCBleHBpcnkgZGF0ZS5cbiAgICpcbiAgICogVXNpbmcgYSBwcm9maWxlIHdpbGwgZGVsZWdhdGUgY3JlZGVudGlhbCByZWZyZXNoaW5nIHRvIHRoZSBTREsvQ0xJLlxuICAgKiBUaGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IGxvbmcgcnVubmluZyBzZXNzaW9ucyB0aGF0IG5lZWRzIHNlc3Npb25zIHRoYXQgYXJlIGxvbmdlciB0aGFuXG4gICAqIHRoZSBzZXNzaW9uIGR1cmF0aW9uIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBhIGBzdHMgYXNzdW1lLXJvbGVgLlxuICAgKlxuICAgKiBUaGUgYXBwbGljYXRpb24gY29kZSB3aWxsIGFjY2VzcyB0byB0aGlzIHByb2ZpbGUgaW4gdGhlIGBBV1NfUFJPRklMRWAgZW52IHZhcmlhYmxlLlxuICAgKlxuICAgKiBPbmx5IHJlbGV2YW50IGlmIGByZWZyZXNoYCBpcyBzcGVjaWZpZWQuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2NsaS9sYXRlc3QvdXNlcmd1aWRlL2NsaS1jb25maWd1cmUtZmlsZXMuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAnbG9uZy1ydW5uaW5nLXByb2ZpbGUnXG4gICAqL1xuICBwcm9maWxlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmeSB0aGlzIGlmIHlvdSBoYXZlIGEgbG9uZyBydW5uaW5nIGV4ZWN1dGlvbiB0aGF0IG5lZWRzIGxvbmcgcnVubmluZyBzZXNzaW9ucy5cbiAgICogVGhpcyB3aWxsIGNyZWF0ZSBhIHByb2ZpbGUgYW5kIHVzZSBpdCB0byBkZWxlZ2F0ZSBjcmVkZW50aWFsIHJlZnJlc2hpbmcgdG8gdGhlIFNESy9DTElcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlZnJlc2g/OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogQSBDb2RlQnVpbGQgcHJvamVjdCB0aGF0IHJ1bnMgYXJiaXRyYXJ5IHNjcmlwdHMuXG4gKlxuICogVGhlIHNjcmlwdHMgdG8gYmUgcnVuIGFyZSBzcGVjaWZpZWQgYnkgc3VwcGx5aW5nIGEgZGlyZWN0b3J5LlxuICogQWxsIGZpbGVzIGluIHRoZSBkaXJlY3RvcnkgYXJlIHVwbG9hZGVkLCB0aGVuIHRoZSBzY3JpcHQgZGVzaWduYXRlZFxuICogYXMgdGhlIGVudHJ5IHBvaW50IGlzIHN0YXJ0ZWQuXG4gKlxuICogVGhlIHNjcmlwdCBpcyBleGVjdXRlZCBpbiB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZSBidWlsZCBwcm9qZWN0J3NcbiAqIGlucHV0IGlzIHN0b3JlZC4gVGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgc2NyaXB0IGZpbGVzIGFyZSBzdG9yZWRcbiAqIGlzIGluIHRoZSAkU0NSSVBUX0RJUiBlbnZpcm9ubWVudCB2YXJpYWJsZS5cbiAqXG4gKiBTdXBwb3J0cyBib3RoIFdpbmRvd3MgYW5kIExpbnV4IGNvbXB1dGVzLlxuICovXG5leHBvcnQgY2xhc3MgU2hlbGxhYmxlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IHByb2plY3Q6IGNidWlsZC5Qcm9qZWN0O1xuICBwdWJsaWMgcmVhZG9ubHkgcm9sZTogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBDbG91ZFdhdGNoIGFsYXJtIHRoYXQgd2lsbCBiZSB0cmlnZ2VyZWQgaWYgdGhpcyBhY3Rpb24gZmFpbHMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYWxhcm06IGNsb3Vkd2F0Y2guQWxhcm07XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwbGF0Zm9ybTogU2hlbGxQbGF0Zm9ybTtcbiAgcHJpdmF0ZSByZWFkb25seSBidWlsZFNwZWM6IEJ1aWxkU3BlYztcblxuICBwcml2YXRlIHJlYWRvbmx5IG91dHB1dEFydGlmYWN0TmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2hlbGxhYmxlUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIGlkKTtcblxuICAgIHRoaXMucGxhdGZvcm0gPSBwcm9wcy5wbGF0Zm9ybSB8fCBTaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1O1xuXG4gICAgY29uc3QgZW50cnlwb2ludCA9IHBhdGguam9pbihwcm9wcy5zY3JpcHREaXJlY3RvcnksIHByb3BzLmVudHJ5cG9pbnQpO1xuICAgIGlmICghZnMuZXhpc3RzU3luYyhlbnRyeXBvaW50KSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYW5ub3QgZmluZCB0ZXN0IGVudHJ5cG9pbnQ6ICR7ZW50cnlwb2ludH1gKTtcbiAgICB9XG5cbiAgICBjb25zdCBhc3NldCA9IG5ldyBhc3NldHMuQXNzZXQodGhpcywgJ1NjcmlwdERpcmVjdG9yeScsIHtcbiAgICAgIHBhdGg6IHByb3BzLnNjcmlwdERpcmVjdG9yeSxcbiAgICB9KTtcblxuICAgIHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lID0gYEFydGlmYWN0XyR7dGhpcy5ub2RlLnVuaXF1ZUlkfWA7XG4gICAgaWYgKHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaG9vcHMsIHRvbyBsb25nOiAke3RoaXMub3V0cHV0QXJ0aWZhY3ROYW1lfWApO1xuICAgIH1cblxuICAgIHRoaXMuYnVpbGRTcGVjID0gQnVpbGRTcGVjLnNpbXBsZSh7XG4gICAgICBwcmVCdWlsZDogdGhpcy5wbGF0Zm9ybS5wcmVidWlsZENvbW1hbmRzKHByb3BzLmFzc3VtZVJvbGUsIHByb3BzLnVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzKSxcbiAgICAgIGJ1aWxkOiB0aGlzLnBsYXRmb3JtLmJ1aWxkQ29tbWFuZHMocHJvcHMuZW50cnlwb2ludCksXG4gICAgfSkubWVyZ2UocHJvcHMuYnVpbGRTcGVjIHx8IEJ1aWxkU3BlYy5lbXB0eSgpKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMgPSB0aGlzLmNvbnZlcnRFbnZpcm9ubWVudFNlY3JldEFybnNUb1NlY3JldE5hbWVzKHByb3BzLmVudmlyb25tZW50U2VjcmV0cyk7XG5cbiAgICB0aGlzLnByb2plY3QgPSBuZXcgY2J1aWxkLlByb2plY3QodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcHJvamVjdE5hbWU6IHByb3BzLmJ1aWxkUHJvamVjdE5hbWUsXG4gICAgICBzb3VyY2U6IHByb3BzLnNvdXJjZSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGJ1aWxkSW1hZ2U6IHRoaXMucGxhdGZvcm0uYnVpbGRJbWFnZSxcbiAgICAgICAgY29tcHV0ZVR5cGU6IHByb3BzLmNvbXB1dGVUeXBlIHx8IGNidWlsZC5Db21wdXRlVHlwZS5NRURJVU0sXG4gICAgICAgIHByaXZpbGVnZWQ6IHByb3BzLnByaXZpbGVnZWQsXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgW1MzX0JVQ0tFVF9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM0J1Y2tldE5hbWUgfSxcbiAgICAgICAgW1MzX0tFWV9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM09iamVjdEtleSB9LFxuICAgICAgICAuLi5yZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhwcm9wcy5lbnZpcm9ubWVudCksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMsIGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlNFQ1JFVFNfTUFOQUdFUiksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzLmVudmlyb25tZW50UGFyYW1ldGVycywgY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuUEFSQU1FVEVSX1NUT1JFKSxcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0LFxuICAgICAgYnVpbGRTcGVjOiBjYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3QodGhpcy5idWlsZFNwZWMucmVuZGVyKHsgcHJpbWFyeUFydGlmYWN0TmFtZTogdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUgfSkpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yb2xlID0gdGhpcy5wcm9qZWN0LnJvbGUhOyAvLyBub3QgdW5kZWZpbmVkLCBhcyBpdCdzIGEgbmV3IFByb2plY3RcbiAgICBhc3NldC5ncmFudFJlYWQodGhpcy5yb2xlKTtcblxuICAgIC8vIEdyYW50IHJlYWQgYWNjZXNzIHRvIHNlY3JldHNcbiAgICBPYmplY3QuZW50cmllcyhwcm9wcy5lbnZpcm9ubWVudFNlY3JldHMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBzZWNyZXRBcm5dKSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXQgPSBhd3Nfc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBgJHtuYW1lfVNlY3JldGAsIHNlY3JldEFybik7XG4gICAgICBzZWNyZXQuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBwYXJhbWV0ZXJzXG4gICAgT2JqZWN0LmVudHJpZXMocHJvcHMuZW52aXJvbm1lbnRQYXJhbWV0ZXJzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgcGFyYW1ldGVyTmFtZV0pID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IGF3c19zc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsIGAke25hbWV9UGFyYW1ldGVyYCwgcGFyYW1ldGVyTmFtZSk7XG4gICAgICBwYXJhbWV0ZXIuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuYXNzdW1lUm9sZSkge1xuICAgICAgdGhpcy5yb2xlLmFkZFRvUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5hc3N1bWVSb2xlLnJvbGVBcm5dLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHRoaXMuYWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5BbGFybSh0aGlzLCAnQWxhcm0nLCB7XG4gICAgICBtZXRyaWM6IHRoaXMucHJvamVjdC5tZXRyaWNGYWlsZWRCdWlsZHMoeyBwZXJpb2Q6IHByb3BzLmFsYXJtUGVyaW9kIHx8IER1cmF0aW9uLnNlY29uZHMoMzAwKSB9KSxcbiAgICAgIHRocmVzaG9sZDogcHJvcHMuYWxhcm1UaHJlc2hvbGQgfHwgMSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBwcm9wcy5hbGFybUV2YWx1YXRpb25QZXJpb2RzIHx8IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuSUdOT1JFLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIG5hbWU6IHN0cmluZywgaW5wdXRBcnRpZmFjdDogY3BpcGVsaW5lLkFydGlmYWN0LCBydW5PcmRlcj86IG51bWJlcik6XG4gIGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbiB7XG4gICAgY29uc3QgY29kZUJ1aWxkQWN0aW9uID0gbmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBuYW1lLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgICAgcnVuT3JkZXIsXG4gICAgICBpbnB1dDogaW5wdXRBcnRpZmFjdCxcbiAgICAgIG91dHB1dHM6IFtuZXcgY3BpcGVsaW5lLkFydGlmYWN0KHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lKV0uY29uY2F0KFxuICAgICAgICB0aGlzLmJ1aWxkU3BlYy5hZGRpdGlvbmFsQXJ0aWZhY3ROYW1lcy5tYXAoYXJ0aWZhY3ROYW1lID0+IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoYXJ0aWZhY3ROYW1lKSkpLFxuICAgIH0pO1xuICAgIHN0YWdlLmFkZEFjdGlvbihjb2RlQnVpbGRBY3Rpb24pO1xuICAgIHJldHVybiBjb2RlQnVpbGRBY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRyYWN0IG9mIGBlbnZpcm9ubWVudFNlY3JldHNgIGlzIHRoYXQgdGhlIHZhbHVlcyBhcmUgY29tcGxldGUgU2VjcmV0IEFSTnM7XG4gICAqIGhvd2V2ZXIsIHRoZSBDb2RlQnVpbGQgY29uc3RydWN0IGV4cGVjdHMgc2VjcmV0IG5hbWVzIGFzIHRoZSBpbnB1dHMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogVGhpcyBtZXRob2QgY29udmVydHMgdGhlIGVudmlyb25tZW50IHNlY3JldHMgZnJvbSBBUk5zIHRvIG5hbWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0RW52aXJvbm1lbnRTZWNyZXRBcm5zVG9TZWNyZXROYW1lcyhlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgaWYgKCFlbnZpcm9ubWVudFNlY3JldHMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0geyB9O1xuICAgIE9iamVjdC5lbnRyaWVzKGVudmlyb25tZW50U2VjcmV0cyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHNlY3JldEFybl0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldCA9IGF3c19zZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIGAke25hbWV9U2VjcmV0RnJvbUFybmAsIHNlY3JldEFybik7XG4gICAgICBvdXRbbmFtZV0gPSBzZWNyZXQuc2VjcmV0TmFtZTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG5cbi8qKlxuICogUGxhdGZvcm0gYXJjaGV0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIFBsYXRmb3JtVHlwZSB7XG4gIExpbnV4ID0gJ0xpbnV4JyxcbiAgV2luZG93cyA9ICdXaW5kb3dzJ1xufVxuXG4vKipcbiAqIFRoZSBwbGF0Zm9ybSB0eXBlIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2hlbGxQbGF0Zm9ybSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBkZWZhdWx0IFVidW50dSBMaW51eCBwbGF0Zm9ybVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgTGludXhVYnVudHUoKTogU2hlbGxQbGF0Zm9ybSB7XG4gICAgLy8gQ2Fubm90IGJlIHN0YXRpYyBtZW1iZXIgYmVjYXVzZSBvZiBpbml0aWFsaXphdGlvbiBvcmRlclxuICAgIHJldHVybiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzRfMCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgZGVmYXVsdCBXaW5kb3dzIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBXaW5kb3dzKCk6IFNoZWxsUGxhdGZvcm0ge1xuICAgIC8vIENhbm5vdCBiZSBzdGF0aWMgbWVtYmVyIGJlY2F1c2Ugb2YgaW5pdGlhbGl6YXRpb24gb3JkZXJcbiAgICByZXR1cm4gbmV3IFdpbmRvd3NQbGF0Zm9ybShjYnVpbGQuV2luZG93c0J1aWxkSW1hZ2UuV0lOX1NFUlZFUl9DT1JFXzIwMTlfQkFTRSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgYnVpbGRJbWFnZTogY2J1aWxkLklCdWlsZEltYWdlKSB7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIGRvd25sb2FkIHRoZSBzY3JpcHQgYnVuZGxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybiBjb21tYW5kcyB0byBzdGFydCB0aGUgZW50cnlwb2ludCBzY3JpcHRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHBsYXRmb3JtVHlwZSgpOiBQbGF0Zm9ybVR5cGU7XG59XG5cbi8qKlxuICogQSBMaW51eCBQbGF0Zm9ybVxuICovXG5leHBvcnQgY2xhc3MgTGludXhQbGF0Zm9ybSBleHRlbmRzIFNoZWxsUGxhdGZvcm0ge1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhdGZvcm1UeXBlID0gUGxhdGZvcm1UeXBlLkxpbnV4O1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIC8vIEJldHRlciBlY2hvIHRoZSBsb2NhdGlvbiBoZXJlOyBpZiB0aGlzIGZhaWxzLCB0aGUgZXJyb3IgbWVzc2FnZSBvbmx5IGNvbnRhaW5zXG4gICAgLy8gdGhlIHVuZXhwYW5kZWQgdmFyaWFibGVzIGJ5IGRlZmF1bHQuIEl0IG1pZ2h0IGZhaWwgaWYgeW91J3JlIHJ1bm5pbmcgYW4gb2xkXG4gICAgLy8gZGVmaW5pdGlvbiBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QtLXRoZSBwZXJtaXNzaW9ucyB3aWxsIGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gb25seSBhbGxvdyBkb3dubG9hZGluZyB0aGUgdmVyeSBsYXRlc3QgdmVyc2lvbi5cbiAgICBsaW5lcy5wdXNoKGBlY2hvIFwiRG93bmxvYWRpbmcgc2NyaXB0cyBmcm9tIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fVwiYCk7XG4gICAgbGluZXMucHVzaChgYXdzIHMzIGNwIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fSAvdG1wYCk7XG4gICAgbGluZXMucHVzaCgnbWtkaXIgLXAgL3RtcC9zY3JpcHRkaXInKTtcbiAgICBsaW5lcy5wdXNoKGB1bnppcCAvdG1wLyQoYmFzZW5hbWUgXFwkJHtTM19LRVlfRU5WfSkgLWQgL3RtcC9zY3JpcHRkaXJgKTtcblxuICAgIGlmIChhc3N1bWVSb2xlKSB7XG5cbiAgICAgIGlmIChhc3N1bWVSb2xlLnJlZnJlc2gpIHtcblxuICAgICAgICBjb25zdCBhd3NIb21lID0gJ34vLmF3cyc7XG5cbiAgICAgICAgY29uc3QgcHJvZmlsZU5hbWUgPSBhc3N1bWVSb2xlLnByb2ZpbGVOYW1lID8/ICdsb25nLXJ1bm5pbmctcHJvZmlsZSc7XG5cbiAgICAgICAgbGluZXMucHVzaChgbWtkaXIgLXAgJHthd3NIb21lfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGB0b3VjaCAke2F3c0hvbWV9L2NyZWRlbnRpYWxzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGNvbmZpZz0ke2F3c0hvbWV9L2NvbmZpZ2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIFtwcm9maWxlICR7cHJvZmlsZU5hbWV9XT4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaCgnZWNobyBjcmVkZW50aWFsX3NvdXJjZSA9IEVjc0NvbnRhaW5lciA+PiAkXFx7Y29uZmlnXFx9Jyk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gcm9sZV9zZXNzaW9uX25hbWUgPSAke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9ID4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX2FybiA9ICR7YXNzdW1lUm9sZS5yb2xlQXJufSA+PiAkY29uZmlnYCk7XG5cbiAgICAgICAgaWYgKGFzc3VtZVJvbGUuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYGVjaG8gZXh0ZXJuYWxfaWQgPSAke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH0gPj4gJGNvbmZpZ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjb2RlIGtub3cgd2hpY2ggcm9sZSBpcyBiZWluZyB1c2VkLlxuICAgICAgICBsaW5lcy5wdXNoKGBleHBvcnQgQVdTX1BST0ZJTEU9JHtwcm9maWxlTmFtZX1gKTtcblxuICAgICAgICAvLyBmb3JjZSB0aGUgQVdTIFNESyBmb3IgSmF2YVNjcmlwdCB0byBhY3R1YWxseSBsb2FkIHRoZSBjb25maWcgZmlsZSAoZG8gYXV0b21hdGljYWxseSBzbyB1c2VycyBkb24ndCBmb3JnZXQpXG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0RLX0xPQURfQ09ORklHPTEnKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBjb25zdCBleHRlcm5hbElkID0gYXNzdW1lUm9sZS5leHRlcm5hbElkID8gYC0tZXh0ZXJuYWwtaWQgXCIke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH1cImAgOiAnJztcbiAgICAgICAgY29uc3QgU3RzRW5kcG9pbnRzID0gdXNlUmVnaW9uYWxTdHNFbmRwb2ludHMgPyAncmVnaW9uYWwnIDogJ2xlZ2FjeSc7XG5cbiAgICAgICAgbGluZXMucHVzaCgnY3JlZHM9JChta3RlbXAgLWQpL2NyZWRzLmpzb24nKTtcbiAgICAgICAgbGluZXMucHVzaChgQVdTX1NUU19SRUdJT05BTF9FTkRQT0lOVFM9JHtTdHNFbmRwb2ludHN9IGF3cyBzdHMgYXNzdW1lLXJvbGUgLS1yb2xlLWFybiBcIiR7YXNzdW1lUm9sZS5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9XCIgJHtleHRlcm5hbElkfSA+ICRjcmVkc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJBY2Nlc3NLZXlJZFwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2VjcmV0QWNjZXNzS2V5XCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VTU0lPTl9UT0tFTj1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIlNlc3Npb25Ub2tlblwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2V4cG9ydCBTQ1JJUFRfRElSPS90bXAvc2NyaXB0ZGlyJyxcbiAgICAgIGBlY2hvIFwiUnVubmluZyAke2VudHJ5cG9pbnR9XCJgLFxuICAgICAgYC9iaW4vYmFzaCAvdG1wL3NjcmlwdGRpci8ke2VudHJ5cG9pbnR9YCxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogQSBXaW5kb3dzIFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBXaW5kb3dzUGxhdGZvcm0gZXh0ZW5kcyBTaGVsbFBsYXRmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtVHlwZS5XaW5kb3dzO1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCBfdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW10ge1xuICAgIGlmIChhc3N1bWVSb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Fzc3VtZVJvbGUgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzOiBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9hd3MtZGVsaXZsaWIvaXNzdWVzLzU3Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIFdvdWxkIGxvdmUgdG8gZG8gZG93bmxvYWRpbmcgaGVyZSBhbmQgZXhlY3V0aW5nIGluIHRoZSBuZXh0IHN0ZXAsXG4gICAgICAvLyBidXQgSSBkb24ndCBrbm93IGhvdyB0byBwcm9wYWdhdGUgdGhlIHZhbHVlIG9mICRURU1QRElSLlxuICAgICAgLy9cbiAgICAgIC8vIFB1bnRpbmcgZm9yIHNvbWVvbmUgd2hvIGtub3dzIFBvd2VyU2hlbGwgd2VsbCBlbm91Z2guXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ1NldC1WYXJpYWJsZSAtTmFtZSBURU1QRElSIC1WYWx1ZSAoTmV3LVRlbXBvcmFyeUZpbGUpLkRpcmVjdG9yeU5hbWUnLFxuICAgICAgYGF3cyBzMyBjcCBzMzovLyRlbnY6JHtTM19CVUNLRVRfRU5WfS8kZW52OiR7UzNfS0VZX0VOVn0gJFRFTVBESVJcXFxcc2NyaXB0cy56aXBgLFxuICAgICAgJ05ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFRFTVBESVJcXFxcc2NyaXB0ZGlyJyxcbiAgICAgICdFeHBhbmQtQXJjaGl2ZSAtUGF0aCAkVEVNUERJUi9zY3JpcHRzLnppcCAtRGVzdGluYXRpb25QYXRoICRURU1QRElSXFxcXHNjcmlwdGRpcicsXG4gICAgICAnJGVudjpTQ1JJUFRfRElSID0gXCIkVEVNUERJUlxcXFxzY3JpcHRkaXJcIicsXG4gICAgICBgJiAkVEVNUERJUlxcXFxzY3JpcHRkaXJcXFxcJHtlbnRyeXBvaW50fWAsXG4gICAgXTtcbiAgfVxufVxuIl19
263
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hlbGxhYmxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic2hlbGxhYmxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsdUNBQXlCO0FBQ3pCLDJDQUE2QjtBQUM3Qiw2Q0FLcUI7QUFDckIsMkNBQXVDO0FBQ3ZDLDZDQUF5QztBQUN6QyxpQ0FBb0Q7QUFFcEQsTUFBTSxhQUFhLEdBQUcsa0JBQWtCLENBQUM7QUFDekMsTUFBTSxVQUFVLEdBQUcsZUFBZSxDQUFDO0FBK01uQzs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFhLFNBQVUsU0FBUSxzQkFBUztJQWN0QyxZQUFZLE1BQWlCLEVBQUUsRUFBVSxFQUFFLEtBQXFCOztRQUM5RCxLQUFLLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWxCLElBQUksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLFFBQVEsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDO1FBRTVELE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDOUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxnQ0FBZ0MsVUFBVSxFQUFFLENBQUMsQ0FBQztTQUMvRDtRQUVELE1BQU0sS0FBSyxHQUFHLElBQUksMkJBQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxFQUFFLGlCQUFpQixFQUFFO1lBQ3RELElBQUksRUFBRSxLQUFLLENBQUMsZUFBZTtTQUM1QixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsWUFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ3ZELElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxHQUFHLEVBQUU7WUFDeEMs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cG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBEdXJhdGlvbixcbiAgYXdzX2Nsb3Vkd2F0Y2ggYXMgY2xvdWR3YXRjaCwgYXdzX2NvZGVidWlsZCBhcyBjYnVpbGQsXG4gIGF3c19jb2RlcGlwZWxpbmUgYXMgY3BpcGVsaW5lLCBhd3NfY29kZXBpcGVsaW5lX2FjdGlvbnMgYXMgY3BpcGVsaW5lX2FjdGlvbnMsXG4gIGF3c19pYW0gYXMgaWFtLCBhd3NfczNfYXNzZXRzIGFzIGFzc2V0cywgYXdzX3NlY3JldHNtYW5hZ2VyLCBhd3Nfc3NtLFxufSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJ1aWxkU3BlYyB9IGZyb20gJy4vYnVpbGQtc3BlYyc7XG5pbXBvcnQgeyByZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyB9IGZyb20gJy4vdXRpbCc7XG5cbmNvbnN0IFMzX0JVQ0tFVF9FTlYgPSAnU0NSSVBUX1MzX0JVQ0tFVCc7XG5jb25zdCBTM19LRVlfRU5WID0gJ1NDUklQVF9TM19LRVknO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsYWJsZU9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBTb3VyY2UgZm9yIHRoZSBDb2RlQnVpbGQgcHJvamVjdFxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBzb3VyY2VcbiAgICovXG4gIHNvdXJjZT86IGNidWlsZC5JU291cmNlO1xuXG4gIC8qKlxuICAgKiBXaGF0IHBsYXRmb3JtIHRvIHVzIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICAgKlxuICAgKiBAZGVmYXVsdCBTaGVsbFBsYXRmb3JtLkxpbnV4VWJ1bnR1XG4gICAqL1xuICBwbGF0Zm9ybT86IFNoZWxsUGxhdGZvcm07XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRvIHNldC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50PzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfCB1bmRlZmluZWQgfTtcblxuICAvKipcbiAgICogRW52aXJvbm1lbnQgdmFyaWFibGVzIHdpdGggc2VjcmV0cyBtYW5hZ2VyIHZhbHVlcy4gVGhlIHZhbHVlcyBtdXN0IGJlIGNvbXBsZXRlIFNlY3JldCBNYW5hZ2VyIEFSTnMuXG4gICAqXG4gICAqIEBkZWZhdWx0IG5vIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzXG4gICAqL1xuICBlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9O1xuXG4gIC8qKlxuICAgKiBFbnZpcm9ubWVudCB2YXJpYWJsZXMgd2l0aCBTU00gcGFyYW1ldGVyIHZhbHVlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYWRkaXRpb25hbCBlbnZpcm9ubWVudCB2YXJpYWJsZXNcbiAgICovXG4gIGVudmlyb25tZW50UGFyYW1ldGVycz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBjb21wdXRlIHR5cGUgdG8gdXNlIGZvciB0aGUgYnVpbGQgY29udGFpbmVyLlxuICAgKlxuICAgKiBOb3RlIHRoYXQgbm90IGFsbCBjb21iaW5hdGlvbnMgYXJlIGF2YWlsYWJsZS4gRm9yIGV4YW1wbGUsXG4gICAqIFdpbmRvd3MgaW1hZ2VzIGNhbm5vdCBiZSBydW4gb24gQ29tcHV0ZVR5cGUuU21hbGwuXG4gICAqXG4gICAqIEBkZWZhdWx0IENvbXB1dGVUeXBlLk1lZGl1bVxuICAgKi9cbiAgY29tcHV0ZVR5cGU/OiBjYnVpbGQuQ29tcHV0ZVR5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBob3cgdGhlIHByb2plY3QgYnVpbGRzIERvY2tlciBpbWFnZXMuIFNwZWNpZnkgdHJ1ZSB0byBlbmFibGVcbiAgICogcnVubmluZyB0aGUgRG9ja2VyIGRhZW1vbiBpbnNpZGUgYSBEb2NrZXIgY29udGFpbmVyLiBUaGlzIHZhbHVlIG11c3QgYmVcbiAgICogc2V0IHRvIHRydWUgb25seSBpZiB0aGlzIGJ1aWxkIHByb2plY3Qgd2lsbCBiZSB1c2VkIHRvIGJ1aWxkIERvY2tlclxuICAgKiBpbWFnZXMsIGFuZCB0aGUgc3BlY2lmaWVkIGJ1aWxkIGVudmlyb25tZW50IGltYWdlIGlzIG5vdCBvbmUgcHJvdmlkZWQgYnlcbiAgICogQVdTIENvZGVCdWlsZCB3aXRoIERvY2tlciBzdXBwb3J0LiBPdGhlcndpc2UsIGFsbCBhc3NvY2lhdGVkIGJ1aWxkcyB0aGF0XG4gICAqIGF0dGVtcHQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgRG9ja2VyIGRhZW1vbiB3aWxsIGZhaWwuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBwcml2aWxlZ2VkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgZm9yIHRoZSBidWlsZCBwcm9qZWN0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBhIG5hbWUgaXMgZ2VuZXJhdGVkIGJ5IENsb3VkRm9ybWF0aW9uLlxuICAgKi9cbiAgYnVpbGRQcm9qZWN0TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIGlmIFJlZ2lvbmFsIEFXUyBTVFMgZW5kcG9pbnRzIHNob3VsZCBiZSB1c2VkIGluc3RlYWRcbiAgICogb2YgdGhlIGdsb2JhbCBlbmRwb2ludC4gU3BlY2lmeSB0cnVlIHRvIHVzZSBSZWdpb25hbCBBV1MgU1RTIGVuZHBvaW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ2FuIGJlIHVzZWQgdG8gcnVuIHRoaXMgYnVpbGQgdXNpbmcgYSBzcGVjaWZpYyBJQU0gcm9sZS4gVGhpcyBjYW4gYmUgdXNlZCxcbiAgICogZm9yIGV4YW1wbGUsIHRvIGV4ZWN1dGUgaW4gdGhlIGNvbnRleHQgb2YgYW5vdGhlciBhY2NvdW50IChlLmcuIHRvIHJ1blxuICAgKiB0ZXN0cyBpbiBpc29sYXRpb24pLlxuICAgKi9cbiAgYXNzdW1lUm9sZT86IEFzc3VtZVJvbGU7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYnVpbGRzcGVjIChmb3IgYXJ0aWZhY3RzIGV0Yy4pXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgYnVpbGRzcGVjXG4gICAqL1xuICBidWlsZFNwZWM/OiBCdWlsZFNwZWM7XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lb3V0IG9mIHRoZSBidWlsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIENvZGVCdWlsZCBkZWZhdWx0ICgxIGhvdXIpXG4gICAqL1xuICB0aW1lb3V0PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHBlcmlvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgMzAwIHNlY29uZHMgKDUgbWludXRlcylcbiAgICovXG4gIGFsYXJtUGVyaW9kPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEFsYXJtIHRocmVzaG9sZC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1UaHJlc2hvbGQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEFsYXJtIGV2YWx1YXRpb24gcGVyaW9kcy5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgYWxhcm1FdmFsdWF0aW9uUGVyaW9kcz86IG51bWJlcjtcblxuICBzZWNvbmRhcnlBcnRpZmFjdE5hbWVzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB1c2VkIHRvIGNyZWF0ZSBhIFNoZWxsYWJsZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNoZWxsYWJsZVByb3BzIGV4dGVuZHMgU2hlbGxhYmxlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEaXJlY3Rvcnkgd2l0aCB0aGUgc2NyaXB0cy5cbiAgICpcbiAgICogVGhlIHdob2xlIGRpcmVjdG9yeSB3aWxsIGJlIHVwbG9hZGVkLlxuICAgKi9cbiAgc2NyaXB0RGlyZWN0b3J5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEZpbGVuYW1lIG9mIHRoZSBpbml0aWFsIHNjcmlwdCB0byBzdGFydCwgcmVsYXRpdmUgdG8gc2NyaXB0RGlyZWN0b3J5LlxuICAgKi9cbiAgZW50cnlwb2ludDogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEFzc3VtZVJvbGUge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSByb2xlIHRvIGFzc3VtZS5cbiAgICovXG4gIHJvbGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogQW4gaWRlbnRpZmllciBmb3IgdGhlIGFzc3VtZWQgcm9sZSBzZXNzaW9uLlxuICAgKlxuICAgKiBVc2UgIHRoZSAgcm9sZSAgc2Vzc2lvbiBuYW1lIHRvIHVuaXF1ZWx5IGlkZW50aWZ5IGEgc2Vzc2lvbiB3aGVuIHRoZSBzYW1lXG4gICAqIHJvbGUgaXMgYXNzdW1lZCBieSBkaWZmZXJlbnQgcHJpbmNpcGFscyBvciBmb3IgZGlmZmVyZW50IHJlYXNvbnMuIEluXG4gICAqIGNyb3NzLWFjY291bnQgc2NlbmFyaW9zLCB0aGUgcm9sZSBzZXNzaW9uIG5hbWUgaXMgdmlzaWJsZSB0bywgYW5kIGNhbiBiZVxuICAgKiBsb2dnZWQgYnkgdGhlIGFjY291bnQgdGhhdCBvd25zIHRoZSByb2xlLiAgVGhlIHJvbGUgc2Vzc2lvbiBuYW1lIGlzIGFsc29cbiAgICogdXNlZCBpbiB0aGUgQVJOIG9mIHRoZSBhc3N1bWVkIHJvbGUgcHJpbmNpcGFsLiBUaGlzIG1lYW5zIHRoYXQgc3Vic2VxdWVudFxuICAgKiBjcm9zcy1hY2NvdW50IEFQSSByZXF1ZXN0cyB1c2luZyB0aGUgdGVtLSBwb3Jhcnkgc2VjdXJpdHkgY3JlZGVudGlhbHMgd2lsbFxuICAgKiBleHBvc2UgdGhlIHJvbGUgc2Vzc2lvbiBuYW1lIHRvIHRoZSBleHRlcm5hbCBhY2NvdW50IGluIHRoZWlyIENsb3VkVHJhaWxcbiAgICogbG9ncy5cbiAgICpcbiAgICogVGhlIHJlZ2V4IHVzZWQgdG8gdmFsaWRhdGUgdGhpcyBwYXJhbWV0ZXIgaXMgYSBzdHJpbmcgb2YgY2hhcmFjdGVyc1xuICAgKiBjb25zaXN0aW5nICBvZiB1cHBlci0gYW5kIGxvd2VyLWNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBub1xuICAgKiBzcGFjZXMuIFlvdSBjYW4gYWxzbyBpbmNsdWRlIHVuZGVyc2NvcmVzIG9yIGFueSBvZiB0aGUgZm9sbG93aW5nXG4gICAqIGNoYXJhY3RlcnM6ID0sLkAtXG4gICAqL1xuICBzZXNzaW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBICB1bmlxdWUgIGlkZW50aWZpZXIgIHRoYXQgIGlzICB1c2VkIGJ5IHRoaXJkIHBhcnRpZXMgd2hlbiBhc3N1bWluZyByb2xlc1xuICAgKiBpbiB0aGVpciBjdXN0b21lcnMnIGFjY291bnRzLiBGb3IgZWFjaCAgcm9sZSAgdGhhdCAgdGhlICB0aGlyZCBwYXJ0eSBjYW5cbiAgICogYXNzdW1lLCB0aGV5IHNob3VsZCBpbnN0cnVjdCB0aGVpciBjdXN0b21lcnMgdG8gZW5zdXJlIHRoZSByb2xlJ3MgdHJ1c3RcbiAgICogcG9saWN5IGNoZWNrcyBmb3IgdGhlIGV4dGVybmFsIElEIHRoYXQgdGhlIHRoaXJkICBwYXJ0eSBnZW5lcmF0ZWQuICBFYWNoXG4gICAqIHRpbWUgdGhlIHRoaXJkIHBhcnR5IGFzc3VtZXMgdGhlIHJvbGUsIHRoZXkgc2hvdWxkIHBhc3MgdGhlIGN1c3RvbWVyJ3NcbiAgICogZXh0ZXJuYWwgSUQuIFRoZSBleHRlcm5hbCBJRCBpcyB1c2VmdWwgaW4gIG9yZGVyIHRvICBoZWxwICB0aGlyZCAgcGFydGllc1xuICAgKiBiaW5kIGEgcm9sZSB0byB0aGUgY3VzdG9tZXIgd2hvIGNyZWF0ZWQgaXQuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZVxuICAgKiBleHRlcm5hbCBJRCwgc2VlIEhvdyB0byBVc2UgYW4gRXh0ZXItIG5hbCAgSUQgIFdoZW4gR3JhbnRpbmcgQWNjZXNzIHRvIFlvdXJcbiAgICogQVdTIFJlc291cmNlcyB0byBhIFRoaXJkIFBhcnR5IGluIHRoZSBJQU0gVXNlciBHdWlkZSAuXG4gICAqXG4gICAqIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgYSBzdHJpbmcgb2YgY2hhcmFjdGVycyBjb25zaXN0aW5nICBvZiB1cHBlci0gYW5kXG4gICAqIGxvd2VyLWNhc2UgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgd2l0aCBubyBzcGFjZXMuIFlvdSBjYW4gYWxzbyBpbmNsdWRlXG4gICAqIHVuZGVyc2NvcmVzIG9yICBhbnkgIG9mICB0aGUgIGZvbGxvd2luZyBjaGFyYWN0ZXJzOiA9LC5AOi8tXG4gICAqL1xuICBleHRlcm5hbElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGVuIGEgcHJvZmllIG5hbWUgaXMgY29uZmlndXJlZCwgYW4gYXNzdW1lZCByb2xlIGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBjcmVhdGVkXG4gICAqIGluIHRoZSBzaGFyZWQgYXdzIGNvbmZpZ3VyYXRpb24gZmlsZSAofi8uYXdzL2NvbmZpZykuIFRoaXMgaXMgaW4gY29udHJhcnkgb2Ygc2ltcGx5IGludm9raW5nXG4gICAqIGFuIGBzdHMgYXNzdW1lLXJvbGVgIGNvbW1hbmQgdGhhdCBjcmVhdGVzIGEgc2Vzc2lvbiB3aXRoIGEgZml4ZWQgZXhwaXJ5IGRhdGUuXG4gICAqXG4gICAqIFVzaW5nIGEgcHJvZmlsZSB3aWxsIGRlbGVnYXRlIGNyZWRlbnRpYWwgcmVmcmVzaGluZyB0byB0aGUgU0RLL0NMSS5cbiAgICogVGhpcyBpcyBuZWVkZWQgdG8gc3VwcG9ydCBsb25nIHJ1bm5pbmcgc2Vzc2lvbnMgdGhhdCBuZWVkcyBzZXNzaW9ucyB0aGF0IGFyZSBsb25nZXIgdGhhblxuICAgKiB0aGUgc2Vzc2lvbiBkdXJhdGlvbiB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHdpdGggYSBgc3RzIGFzc3VtZS1yb2xlYC5cbiAgICpcbiAgICogVGhlIGFwcGxpY2F0aW9uIGNvZGUgd2lsbCBhY2Nlc3MgdG8gdGhpcyBwcm9maWxlIGluIHRoZSBgQVdTX1BST0ZJTEVgIGVudiB2YXJpYWJsZS5cbiAgICpcbiAgICogT25seSByZWxldmFudCBpZiBgcmVmcmVzaGAgaXMgc3BlY2lmaWVkLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jbGkvbGF0ZXN0L3VzZXJndWlkZS9jbGktY29uZmlndXJlLWZpbGVzLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgJ2xvbmctcnVubmluZy1wcm9maWxlJ1xuICAgKi9cbiAgcHJvZmlsZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhpcyBpZiB5b3UgaGF2ZSBhIGxvbmcgcnVubmluZyBleGVjdXRpb24gdGhhdCBuZWVkcyBsb25nIHJ1bm5pbmcgc2Vzc2lvbnMuXG4gICAqIFRoaXMgd2lsbCBjcmVhdGUgYSBwcm9maWxlIGFuZCB1c2UgaXQgdG8gZGVsZWdhdGUgY3JlZGVudGlhbCByZWZyZXNoaW5nIHRvIHRoZSBTREsvQ0xJXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWZyZXNoPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEEgQ29kZUJ1aWxkIHByb2plY3QgdGhhdCBydW5zIGFyYml0cmFyeSBzY3JpcHRzLlxuICpcbiAqIFRoZSBzY3JpcHRzIHRvIGJlIHJ1biBhcmUgc3BlY2lmaWVkIGJ5IHN1cHBseWluZyBhIGRpcmVjdG9yeS5cbiAqIEFsbCBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5IGFyZSB1cGxvYWRlZCwgdGhlbiB0aGUgc2NyaXB0IGRlc2lnbmF0ZWRcbiAqIGFzIHRoZSBlbnRyeSBwb2ludCBpcyBzdGFydGVkLlxuICpcbiAqIFRoZSBzY3JpcHQgaXMgZXhlY3V0ZWQgaW4gdGhlIGRpcmVjdG9yeSB3aGVyZSB0aGUgYnVpbGQgcHJvamVjdCdzXG4gKiBpbnB1dCBpcyBzdG9yZWQuIFRoZSBkaXJlY3Rvcnkgd2hlcmUgdGhlIHNjcmlwdCBmaWxlcyBhcmUgc3RvcmVkXG4gKiBpcyBpbiB0aGUgJFNDUklQVF9ESVIgZW52aXJvbm1lbnQgdmFyaWFibGUuXG4gKlxuICogU3VwcG9ydHMgYm90aCBXaW5kb3dzIGFuZCBMaW51eCBjb21wdXRlcy5cbiAqL1xuZXhwb3J0IGNsYXNzIFNoZWxsYWJsZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBwcm9qZWN0OiBjYnVpbGQuUHJvamVjdDtcbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogQ2xvdWRXYXRjaCBhbGFybSB0aGF0IHdpbGwgYmUgdHJpZ2dlcmVkIGlmIHRoaXMgYWN0aW9uIGZhaWxzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsYXJtOiBjbG91ZHdhdGNoLkFsYXJtO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcGxhdGZvcm06IFNoZWxsUGxhdGZvcm07XG4gIHByaXZhdGUgcmVhZG9ubHkgYnVpbGRTcGVjOiBCdWlsZFNwZWM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBvdXRwdXRBcnRpZmFjdE5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwYXJlbnQ6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNoZWxsYWJsZVByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBpZCk7XG5cbiAgICB0aGlzLnBsYXRmb3JtID0gcHJvcHMucGxhdGZvcm0gfHwgU2hlbGxQbGF0Zm9ybS5MaW51eFVidW50dTtcblxuICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBwYXRoLmpvaW4ocHJvcHMuc2NyaXB0RGlyZWN0b3J5LCBwcm9wcy5lbnRyeXBvaW50KTtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZW50cnlwb2ludCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ2Fubm90IGZpbmQgdGVzdCBlbnRyeXBvaW50OiAke2VudHJ5cG9pbnR9YCk7XG4gICAgfVxuXG4gICAgY29uc3QgYXNzZXQgPSBuZXcgYXNzZXRzLkFzc2V0KHRoaXMsICdTY3JpcHREaXJlY3RvcnknLCB7XG4gICAgICBwYXRoOiBwcm9wcy5zY3JpcHREaXJlY3RvcnksXG4gICAgfSk7XG5cbiAgICB0aGlzLm91dHB1dEFydGlmYWN0TmFtZSA9IGBBcnRpZmFjdF8ke3RoaXMubm9kZS5hZGRyfWA7XG4gICAgaWYgKHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lLmxlbmd0aCA+IDEwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBXaG9vcHMsIHRvbyBsb25nOiAke3RoaXMub3V0cHV0QXJ0aWZhY3ROYW1lfWApO1xuICAgIH1cblxuICAgIHRoaXMuYnVpbGRTcGVjID0gQnVpbGRTcGVjLnNpbXBsZSh7XG4gICAgICBwcmVCdWlsZDogdGhpcy5wbGF0Zm9ybS5wcmVidWlsZENvbW1hbmRzKHByb3BzLmFzc3VtZVJvbGUsIHByb3BzLnVzZVJlZ2lvbmFsU3RzRW5kcG9pbnRzKSxcbiAgICAgIGJ1aWxkOiB0aGlzLnBsYXRmb3JtLmJ1aWxkQ29tbWFuZHMocHJvcHMuZW50cnlwb2ludCksXG4gICAgfSkubWVyZ2UocHJvcHMuYnVpbGRTcGVjIHx8IEJ1aWxkU3BlYy5lbXB0eSgpKTtcblxuICAgIGNvbnN0IGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMgPSB0aGlzLmNvbnZlcnRFbnZpcm9ubWVudFNlY3JldEFybnNUb1NlY3JldE5hbWVzKHByb3BzLmVudmlyb25tZW50U2VjcmV0cyk7XG5cbiAgICB0aGlzLnByb2plY3QgPSBuZXcgY2J1aWxkLlByb2plY3QodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcHJvamVjdE5hbWU6IHByb3BzLmJ1aWxkUHJvamVjdE5hbWUsXG4gICAgICBzb3VyY2U6IHByb3BzLnNvdXJjZSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIGJ1aWxkSW1hZ2U6IHRoaXMucGxhdGZvcm0uYnVpbGRJbWFnZSxcbiAgICAgICAgY29tcHV0ZVR5cGU6IHByb3BzLmNvbXB1dGVUeXBlIHx8IGNidWlsZC5Db21wdXRlVHlwZS5NRURJVU0sXG4gICAgICAgIHByaXZpbGVnZWQ6IHByb3BzLnByaXZpbGVnZWQsXG4gICAgICB9LFxuICAgICAgZW52aXJvbm1lbnRWYXJpYWJsZXM6IHtcbiAgICAgICAgW1MzX0JVQ0tFVF9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM0J1Y2tldE5hbWUgfSxcbiAgICAgICAgW1MzX0tFWV9FTlZdOiB7IHZhbHVlOiBhc3NldC5zM09iamVjdEtleSB9LFxuICAgICAgICAuLi5yZW5kZXJFbnZpcm9ubWVudFZhcmlhYmxlcyhwcm9wcy5lbnZpcm9ubWVudCksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKGVudmlyb25tZW50U2VjcmV0c0FzU2VjcmV0TmFtZXMsIGNidWlsZC5CdWlsZEVudmlyb25tZW50VmFyaWFibGVUeXBlLlNFQ1JFVFNfTUFOQUdFUiksXG4gICAgICAgIC4uLnJlbmRlckVudmlyb25tZW50VmFyaWFibGVzKHByb3BzLmVudmlyb25tZW50UGFyYW1ldGVycywgY2J1aWxkLkJ1aWxkRW52aXJvbm1lbnRWYXJpYWJsZVR5cGUuUEFSQU1FVEVSX1NUT1JFKSxcbiAgICAgIH0sXG4gICAgICB0aW1lb3V0OiBwcm9wcy50aW1lb3V0LFxuICAgICAgYnVpbGRTcGVjOiBjYnVpbGQuQnVpbGRTcGVjLmZyb21PYmplY3QodGhpcy5idWlsZFNwZWMucmVuZGVyKHsgcHJpbWFyeUFydGlmYWN0TmFtZTogdGhpcy5vdXRwdXRBcnRpZmFjdE5hbWUgfSkpLFxuICAgIH0pO1xuXG4gICAgdGhpcy5yb2xlID0gdGhpcy5wcm9qZWN0LnJvbGUhOyAvLyBub3QgdW5kZWZpbmVkLCBhcyBpdCdzIGEgbmV3IFByb2plY3RcbiAgICBhc3NldC5ncmFudFJlYWQodGhpcy5yb2xlKTtcblxuICAgIC8vIEdyYW50IHJlYWQgYWNjZXNzIHRvIHNlY3JldHNcbiAgICBPYmplY3QuZW50cmllcyhwcm9wcy5lbnZpcm9ubWVudFNlY3JldHMgPz8ge30pLmZvckVhY2goKFtuYW1lLCBzZWNyZXRBcm5dKSA9PiB7XG4gICAgICBjb25zdCBzZWNyZXQgPSBhd3Nfc2VjcmV0c21hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRDb21wbGV0ZUFybih0aGlzLCBgJHtuYW1lfVNlY3JldGAsIHNlY3JldEFybik7XG4gICAgICBzZWNyZXQuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICAvLyBHcmFudCByZWFkIGFjY2VzcyB0byBwYXJhbWV0ZXJzXG4gICAgT2JqZWN0LmVudHJpZXMocHJvcHMuZW52aXJvbm1lbnRQYXJhbWV0ZXJzID8/IHt9KS5mb3JFYWNoKChbbmFtZSwgcGFyYW1ldGVyTmFtZV0pID0+IHtcbiAgICAgIGNvbnN0IHBhcmFtZXRlciA9IGF3c19zc20uU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKHRoaXMsIGAke25hbWV9UGFyYW1ldGVyYCwgcGFyYW1ldGVyTmFtZSk7XG4gICAgICBwYXJhbWV0ZXIuZ3JhbnRSZWFkKHRoaXMucm9sZSk7XG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMuYXNzdW1lUm9sZSkge1xuICAgICAgdGhpcy5yb2xlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgYWN0aW9uczogWydzdHM6QXNzdW1lUm9sZSddLFxuICAgICAgICByZXNvdXJjZXM6IFtwcm9wcy5hc3N1bWVSb2xlLnJvbGVBcm5dLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIHRoaXMuYWxhcm0gPSBuZXcgY2xvdWR3YXRjaC5BbGFybSh0aGlzLCAnQWxhcm0nLCB7XG4gICAgICBtZXRyaWM6IHRoaXMucHJvamVjdC5tZXRyaWNGYWlsZWRCdWlsZHMoeyBwZXJpb2Q6IHByb3BzLmFsYXJtUGVyaW9kIHx8IER1cmF0aW9uLnNlY29uZHMoMzAwKSB9KSxcbiAgICAgIHRocmVzaG9sZDogcHJvcHMuYWxhcm1UaHJlc2hvbGQgfHwgMSxcbiAgICAgIGNvbXBhcmlzb25PcGVyYXRvcjogY2xvdWR3YXRjaC5Db21wYXJpc29uT3BlcmF0b3IuR1JFQVRFUl9USEFOX09SX0VRVUFMX1RPX1RIUkVTSE9MRCxcbiAgICAgIGV2YWx1YXRpb25QZXJpb2RzOiBwcm9wcy5hbGFybUV2YWx1YXRpb25QZXJpb2RzIHx8IDEsXG4gICAgICB0cmVhdE1pc3NpbmdEYXRhOiBjbG91ZHdhdGNoLlRyZWF0TWlzc2luZ0RhdGEuSUdOT1JFLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFkZFRvUGlwZWxpbmUoc3RhZ2U6IGNwaXBlbGluZS5JU3RhZ2UsIG5hbWU6IHN0cmluZywgaW5wdXRBcnRpZmFjdDogY3BpcGVsaW5lLkFydGlmYWN0LCBydW5PcmRlcj86IG51bWJlcik6XG4gIGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbiB7XG4gICAgY29uc3QgY29kZUJ1aWxkQWN0aW9uID0gbmV3IGNwaXBlbGluZV9hY3Rpb25zLkNvZGVCdWlsZEFjdGlvbih7XG4gICAgICBhY3Rpb25OYW1lOiBuYW1lLFxuICAgICAgcHJvamVjdDogdGhpcy5wcm9qZWN0LFxuICAgICAgcnVuT3JkZXIsXG4gICAgICBpbnB1dDogaW5wdXRBcnRpZmFjdCxcbiAgICAgIG91dHB1dHM6IFtuZXcgY3BpcGVsaW5lLkFydGlmYWN0KHRoaXMub3V0cHV0QXJ0aWZhY3ROYW1lKV0uY29uY2F0KFxuICAgICAgICB0aGlzLmJ1aWxkU3BlYy5hZGRpdGlvbmFsQXJ0aWZhY3ROYW1lcy5tYXAoYXJ0aWZhY3ROYW1lID0+IG5ldyBjcGlwZWxpbmUuQXJ0aWZhY3QoYXJ0aWZhY3ROYW1lKSkpLFxuICAgIH0pO1xuICAgIHN0YWdlLmFkZEFjdGlvbihjb2RlQnVpbGRBY3Rpb24pO1xuICAgIHJldHVybiBjb2RlQnVpbGRBY3Rpb247XG4gIH1cblxuICAvKipcbiAgICogVGhlIGNvbnRyYWN0IG9mIGBlbnZpcm9ubWVudFNlY3JldHNgIGlzIHRoYXQgdGhlIHZhbHVlcyBhcmUgY29tcGxldGUgU2VjcmV0IEFSTnM7XG4gICAqIGhvd2V2ZXIsIHRoZSBDb2RlQnVpbGQgY29uc3RydWN0IGV4cGVjdHMgc2VjcmV0IG5hbWVzIGFzIHRoZSBpbnB1dHMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcy5cbiAgICogVGhpcyBtZXRob2QgY29udmVydHMgdGhlIGVudmlyb25tZW50IHNlY3JldHMgZnJvbSBBUk5zIHRvIG5hbWVzLlxuICAgKi9cbiAgcHJpdmF0ZSBjb252ZXJ0RW52aXJvbm1lbnRTZWNyZXRBcm5zVG9TZWNyZXROYW1lcyhlbnZpcm9ubWVudFNlY3JldHM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9KSB7XG4gICAgaWYgKCFlbnZpcm9ubWVudFNlY3JldHMpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgb3V0OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0geyB9O1xuICAgIE9iamVjdC5lbnRyaWVzKGVudmlyb25tZW50U2VjcmV0cyA/PyB7fSkuZm9yRWFjaCgoW25hbWUsIHNlY3JldEFybl0pID0+IHtcbiAgICAgIGNvbnN0IHNlY3JldCA9IGF3c19zZWNyZXRzbWFuYWdlci5TZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKHRoaXMsIGAke25hbWV9U2VjcmV0RnJvbUFybmAsIHNlY3JldEFybik7XG4gICAgICBvdXRbbmFtZV0gPSBzZWNyZXQuc2VjcmV0TmFtZTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0O1xuICB9XG59XG5cbi8qKlxuICogUGxhdGZvcm0gYXJjaGV0eXBlXG4gKi9cbmV4cG9ydCBlbnVtIFBsYXRmb3JtVHlwZSB7XG4gIExpbnV4ID0gJ0xpbnV4JyxcbiAgV2luZG93cyA9ICdXaW5kb3dzJ1xufVxuXG4vKipcbiAqIFRoZSBwbGF0Zm9ybSB0eXBlIHRvIHJ1biB0aGUgc2NyaXB0cyBvblxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU2hlbGxQbGF0Zm9ybSB7XG4gIC8qKlxuICAgKiBSZXR1cm4gYSBkZWZhdWx0IFVidW50dSBMaW51eCBwbGF0Zm9ybVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgTGludXhVYnVudHUoKTogU2hlbGxQbGF0Zm9ybSB7XG4gICAgLy8gQ2Fubm90IGJlIHN0YXRpYyBtZW1iZXIgYmVjYXVzZSBvZiBpbml0aWFsaXphdGlvbiBvcmRlclxuICAgIHJldHVybiBuZXcgTGludXhQbGF0Zm9ybShjYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzRfMCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGEgZGVmYXVsdCBXaW5kb3dzIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBXaW5kb3dzKCk6IFNoZWxsUGxhdGZvcm0ge1xuICAgIC8vIENhbm5vdCBiZSBzdGF0aWMgbWVtYmVyIGJlY2F1c2Ugb2YgaW5pdGlhbGl6YXRpb24gb3JkZXJcbiAgICByZXR1cm4gbmV3IFdpbmRvd3NQbGF0Zm9ybShjYnVpbGQuV2luZG93c0J1aWxkSW1hZ2UuV0lOX1NFUlZFUl9DT1JFXzIwMTlfQkFTRSk7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgcmVhZG9ubHkgYnVpbGRJbWFnZTogY2J1aWxkLklCdWlsZEltYWdlKSB7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIGNvbW1hbmRzIHRvIGRvd25sb2FkIHRoZSBzY3JpcHQgYnVuZGxlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcHJlYnVpbGRDb21tYW5kcyhhc3N1bWVSb2xlPzogQXNzdW1lUm9sZSwgdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFJldHVybiBjb21tYW5kcyB0byBzdGFydCB0aGUgZW50cnlwb2ludCBzY3JpcHRcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUeXBlIG9mIHBsYXRmb3JtXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgZ2V0IHBsYXRmb3JtVHlwZSgpOiBQbGF0Zm9ybVR5cGU7XG59XG5cbi8qKlxuICogQSBMaW51eCBQbGF0Zm9ybVxuICovXG5leHBvcnQgY2xhc3MgTGludXhQbGF0Zm9ybSBleHRlbmRzIFNoZWxsUGxhdGZvcm0ge1xuICBwdWJsaWMgcmVhZG9ubHkgcGxhdGZvcm1UeXBlID0gUGxhdGZvcm1UeXBlLkxpbnV4O1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCB1c2VSZWdpb25hbFN0c0VuZHBvaW50cz86IGJvb2xlYW4pOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgbGluZXMgPSBuZXcgQXJyYXk8c3RyaW5nPigpO1xuICAgIC8vIEJldHRlciBlY2hvIHRoZSBsb2NhdGlvbiBoZXJlOyBpZiB0aGlzIGZhaWxzLCB0aGUgZXJyb3IgbWVzc2FnZSBvbmx5IGNvbnRhaW5zXG4gICAgLy8gdGhlIHVuZXhwYW5kZWQgdmFyaWFibGVzIGJ5IGRlZmF1bHQuIEl0IG1pZ2h0IGZhaWwgaWYgeW91J3JlIHJ1bm5pbmcgYW4gb2xkXG4gICAgLy8gZGVmaW5pdGlvbiBvZiB0aGUgQ29kZUJ1aWxkIHByb2plY3QtLXRoZSBwZXJtaXNzaW9ucyB3aWxsIGhhdmUgYmVlbiBjaGFuZ2VkXG4gICAgLy8gdG8gb25seSBhbGxvdyBkb3dubG9hZGluZyB0aGUgdmVyeSBsYXRlc3QgdmVyc2lvbi5cbiAgICBsaW5lcy5wdXNoKGBlY2hvIFwiRG93bmxvYWRpbmcgc2NyaXB0cyBmcm9tIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fVwiYCk7XG4gICAgbGluZXMucHVzaChgYXdzIHMzIGNwIHMzOi8vXFwkeyR7UzNfQlVDS0VUX0VOVn19L1xcJHske1MzX0tFWV9FTlZ9fSAvdG1wYCk7XG4gICAgbGluZXMucHVzaCgnbWtkaXIgLXAgL3RtcC9zY3JpcHRkaXInKTtcbiAgICBsaW5lcy5wdXNoKGB1bnppcCAvdG1wLyQoYmFzZW5hbWUgXFwkJHtTM19LRVlfRU5WfSkgLWQgL3RtcC9zY3JpcHRkaXJgKTtcblxuICAgIGlmIChhc3N1bWVSb2xlKSB7XG5cbiAgICAgIGlmIChhc3N1bWVSb2xlLnJlZnJlc2gpIHtcblxuICAgICAgICBjb25zdCBhd3NIb21lID0gJ34vLmF3cyc7XG5cbiAgICAgICAgY29uc3QgcHJvZmlsZU5hbWUgPSBhc3N1bWVSb2xlLnByb2ZpbGVOYW1lID8/ICdsb25nLXJ1bm5pbmctcHJvZmlsZSc7XG5cbiAgICAgICAgbGluZXMucHVzaChgbWtkaXIgLXAgJHthd3NIb21lfWApO1xuICAgICAgICBsaW5lcy5wdXNoKGB0b3VjaCAke2F3c0hvbWV9L2NyZWRlbnRpYWxzYCk7XG4gICAgICAgIGxpbmVzLnB1c2goYGNvbmZpZz0ke2F3c0hvbWV9L2NvbmZpZ2ApO1xuICAgICAgICBsaW5lcy5wdXNoKGBlY2hvIFtwcm9maWxlICR7cHJvZmlsZU5hbWV9XT4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaCgnZWNobyBjcmVkZW50aWFsX3NvdXJjZSA9IEVjc0NvbnRhaW5lciA+PiAkXFx7Y29uZmlnXFx9Jyk7XG4gICAgICAgIGxpbmVzLnB1c2goYGVjaG8gcm9sZV9zZXNzaW9uX25hbWUgPSAke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9ID4+ICRcXHtjb25maWdcXH1gKTtcbiAgICAgICAgbGluZXMucHVzaChgZWNobyByb2xlX2FybiA9ICR7YXNzdW1lUm9sZS5yb2xlQXJufSA+PiAkY29uZmlnYCk7XG5cbiAgICAgICAgaWYgKGFzc3VtZVJvbGUuZXh0ZXJuYWxJZCkge1xuICAgICAgICAgIGxpbmVzLnB1c2goYGVjaG8gZXh0ZXJuYWxfaWQgPSAke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH0gPj4gJGNvbmZpZ2ApO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gbGV0IHRoZSBhcHBsaWNhdGlvbiBjb2RlIGtub3cgd2hpY2ggcm9sZSBpcyBiZWluZyB1c2VkLlxuICAgICAgICBsaW5lcy5wdXNoKGBleHBvcnQgQVdTX1BST0ZJTEU9JHtwcm9maWxlTmFtZX1gKTtcblxuICAgICAgICAvLyBmb3JjZSB0aGUgQVdTIFNESyBmb3IgSmF2YVNjcmlwdCB0byBhY3R1YWxseSBsb2FkIHRoZSBjb25maWcgZmlsZSAoZG8gYXV0b21hdGljYWxseSBzbyB1c2VycyBkb24ndCBmb3JnZXQpXG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0RLX0xPQURfQ09ORklHPTEnKTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBjb25zdCBleHRlcm5hbElkID0gYXNzdW1lUm9sZS5leHRlcm5hbElkID8gYC0tZXh0ZXJuYWwtaWQgXCIke2Fzc3VtZVJvbGUuZXh0ZXJuYWxJZH1cImAgOiAnJztcbiAgICAgICAgY29uc3QgU3RzRW5kcG9pbnRzID0gdXNlUmVnaW9uYWxTdHNFbmRwb2ludHMgPyAncmVnaW9uYWwnIDogJ2xlZ2FjeSc7XG5cbiAgICAgICAgbGluZXMucHVzaCgnY3JlZHM9JChta3RlbXAgLWQpL2NyZWRzLmpzb24nKTtcbiAgICAgICAgbGluZXMucHVzaChgQVdTX1NUU19SRUdJT05BTF9FTkRQT0lOVFM9JHtTdHNFbmRwb2ludHN9IGF3cyBzdHMgYXNzdW1lLXJvbGUgLS1yb2xlLWFybiBcIiR7YXNzdW1lUm9sZS5yb2xlQXJufVwiIC0tcm9sZS1zZXNzaW9uLW5hbWUgXCIke2Fzc3VtZVJvbGUuc2Vzc2lvbk5hbWV9XCIgJHtleHRlcm5hbElkfSA+ICRjcmVkc2ApO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX0FDQ0VTU19LRVlfSUQ9XCIkKGNhdCAke2NyZWRzfSB8IGdyZXAgXCJBY2Nlc3NLZXlJZFwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgICBsaW5lcy5wdXNoKCdleHBvcnQgQVdTX1NFQ1JFVF9BQ0NFU1NfS0VZPVwiJChjYXQgJHtjcmVkc30gfCBncmVwIFwiU2VjcmV0QWNjZXNzS2V5XCIgfCBjdXQgLWRcXCdcIlxcJyAtZiA0KVwiJyk7XG4gICAgICAgIGxpbmVzLnB1c2goJ2V4cG9ydCBBV1NfU0VTU0lPTl9UT0tFTj1cIiQoY2F0ICR7Y3JlZHN9IHwgZ3JlcCBcIlNlc3Npb25Ub2tlblwiIHwgY3V0IC1kXFwnXCJcXCcgLWYgNClcIicpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBsaW5lcztcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ2V4cG9ydCBTQ1JJUFRfRElSPS90bXAvc2NyaXB0ZGlyJyxcbiAgICAgIGBlY2hvIFwiUnVubmluZyAke2VudHJ5cG9pbnR9XCJgLFxuICAgICAgYC9iaW4vYmFzaCAvdG1wL3NjcmlwdGRpci8ke2VudHJ5cG9pbnR9YCxcbiAgICBdO1xuICB9XG59XG5cbi8qKlxuICogQSBXaW5kb3dzIFBsYXRmb3JtXG4gKi9cbmV4cG9ydCBjbGFzcyBXaW5kb3dzUGxhdGZvcm0gZXh0ZW5kcyBTaGVsbFBsYXRmb3JtIHtcbiAgcHVibGljIHJlYWRvbmx5IHBsYXRmb3JtVHlwZSA9IFBsYXRmb3JtVHlwZS5XaW5kb3dzO1xuXG4gIHB1YmxpYyBwcmVidWlsZENvbW1hbmRzKGFzc3VtZVJvbGU/OiBBc3N1bWVSb2xlLCBfdXNlUmVnaW9uYWxTdHNFbmRwb2ludHM/OiBib29sZWFuKTogc3RyaW5nW10ge1xuICAgIGlmIChhc3N1bWVSb2xlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Fzc3VtZVJvbGUgaXMgbm90IHN1cHBvcnRlZCBvbiBXaW5kb3dzOiBodHRwczovL2dpdGh1Yi5jb20vY2RrbGFicy9hd3MtZGVsaXZsaWIvaXNzdWVzLzU3Jyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtcbiAgICAgIC8vIFdvdWxkIGxvdmUgdG8gZG8gZG93bmxvYWRpbmcgaGVyZSBhbmQgZXhlY3V0aW5nIGluIHRoZSBuZXh0IHN0ZXAsXG4gICAgICAvLyBidXQgSSBkb24ndCBrbm93IGhvdyB0byBwcm9wYWdhdGUgdGhlIHZhbHVlIG9mICRURU1QRElSLlxuICAgICAgLy9cbiAgICAgIC8vIFB1bnRpbmcgZm9yIHNvbWVvbmUgd2hvIGtub3dzIFBvd2VyU2hlbGwgd2VsbCBlbm91Z2guXG4gICAgXTtcbiAgfVxuXG4gIHB1YmxpYyBidWlsZENvbW1hbmRzKGVudHJ5cG9pbnQ6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gW1xuICAgICAgJ1NldC1WYXJpYWJsZSAtTmFtZSBURU1QRElSIC1WYWx1ZSAoTmV3LVRlbXBvcmFyeUZpbGUpLkRpcmVjdG9yeU5hbWUnLFxuICAgICAgYGF3cyBzMyBjcCBzMzovLyRlbnY6JHtTM19CVUNLRVRfRU5WfS8kZW52OiR7UzNfS0VZX0VOVn0gJFRFTVBESVJcXFxcc2NyaXB0cy56aXBgLFxuICAgICAgJ05ldy1JdGVtIC1JdGVtVHlwZSBEaXJlY3RvcnkgLVBhdGggJFRFTVBESVJcXFxcc2NyaXB0ZGlyJyxcbiAgICAgICdFeHBhbmQtQXJjaGl2ZSAtUGF0aCAkVEVNUERJUi9zY3JpcHRzLnppcCAtRGVzdGluYXRpb25QYXRoICRURU1QRElSXFxcXHNjcmlwdGRpcicsXG4gICAgICAnJGVudjpTQ1JJUFRfRElSID0gXCIkVEVNUERJUlxcXFxzY3JpcHRkaXJcIicsXG4gICAgICBgJiAkVEVNUERJUlxcXFxzY3JpcHRkaXJcXFxcJHtlbnRyeXBvaW50fWAsXG4gICAgXTtcbiAgfVxufVxuIl19
package/lib/shellable.ts CHANGED
@@ -1,11 +1,12 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import {
4
- Construct, Duration,
4
+ Duration,
5
5
  aws_cloudwatch as cloudwatch, aws_codebuild as cbuild,
6
6
  aws_codepipeline as cpipeline, aws_codepipeline_actions as cpipeline_actions,
7
7
  aws_iam as iam, aws_s3_assets as assets, aws_secretsmanager, aws_ssm,
8
- } from 'monocdk';
8
+ } from 'aws-cdk-lib';
9
+ import { Construct } from 'constructs';
9
10
  import { BuildSpec } from './build-spec';
10
11
  import { renderEnvironmentVariables } from './util';
11
12
 
@@ -258,7 +259,7 @@ export class Shellable extends Construct {
258
259
  path: props.scriptDirectory,
259
260
  });
260
261
 
261
- this.outputArtifactName = `Artifact_${this.node.uniqueId}`;
262
+ this.outputArtifactName = `Artifact_${this.node.addr}`;
262
263
  if (this.outputArtifactName.length > 100) {
263
264
  throw new Error(`Whoops, too long: ${this.outputArtifactName}`);
264
265
  }
@@ -305,7 +306,7 @@ export class Shellable extends Construct {
305
306
  });
306
307
 
307
308
  if (props.assumeRole) {
308
- this.role.addToPolicy(new iam.PolicyStatement({
309
+ this.role.addToPrincipalPolicy(new iam.PolicyStatement({
309
310
  actions: ['sts:AssumeRole'],
310
311
  resources: [props.assumeRole.roleArn],
311
312
  }));
@@ -1,4 +1,5 @@
1
- import { Construct, aws_iam as iam } from 'monocdk';
1
+ import { aws_iam as iam } from 'aws-cdk-lib';
2
+ import { Construct } from 'constructs';
2
3
  /**
3
4
  * Construction properties for a SigningKey
4
5
  */