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
@@ -24,9 +24,9 @@ var __importStar = (this && this.__importStar) || function (mod) {
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.OpenPGPKeyPair = exports.OpenPGPKeyPairRemovalPolicy = void 0;
27
- // tslint:disable-next-line: max-line-length
28
27
  const path = __importStar(require("path"));
29
- const monocdk_1 = require("monocdk");
28
+ const aws_cdk_lib_1 = require("aws-cdk-lib");
29
+ const constructs_1 = require("constructs");
30
30
  const util_1 = require("./util");
31
31
  /**
32
32
  * The type of the {@link OpenPGPKeyPairProps.removalPolicy} property.
@@ -59,55 +59,56 @@ var OpenPGPKeyPairRemovalPolicy;
59
59
  *
60
60
  * { "PrivateKey": "... ASCII repr of key...", "Passphrase": "passphrase of the key" }
61
61
  */
62
- class OpenPGPKeyPair extends monocdk_1.Construct {
62
+ class OpenPGPKeyPair extends constructs_1.Construct {
63
63
  constructor(parent, name, props) {
64
64
  super(parent, name);
65
65
  const codeLocation = path.resolve(__dirname, 'custom-resource-handlers', 'bin', 'pgp-secret');
66
- const fn = new monocdk_1.aws_lambda.SingletonFunction(this, 'Lambda', {
66
+ const fn = new aws_cdk_lib_1.aws_lambda.SingletonFunction(this, 'Lambda', {
67
67
  uuid: 'f25803d3-054b-44fc-985f-4860d7d6ee74',
68
68
  description: 'Generates an OpenPGP Key and stores the private key in Secrets Manager and the public key in an SSM Parameter',
69
- code: new monocdk_1.aws_lambda.AssetCode(codeLocation),
69
+ code: new aws_cdk_lib_1.aws_lambda.AssetCode(codeLocation),
70
70
  handler: 'index.handler',
71
- timeout: monocdk_1.Duration.seconds(300),
72
- runtime: monocdk_1.aws_lambda.Runtime.NODEJS_12_X,
71
+ timeout: aws_cdk_lib_1.Duration.seconds(300),
72
+ runtime: aws_cdk_lib_1.aws_lambda.Runtime.NODEJS_12_X,
73
73
  // add the layer that contains the GPG binary (+ shared libraries)
74
- layers: [new monocdk_1.aws_lambda.LayerVersion(this, 'GpgLayer', {
75
- code: monocdk_1.aws_lambda.Code.fromAsset(path.join(__dirname, 'custom-resource-handlers', 'layers', 'gpg-layer.zip')),
74
+ layers: [new aws_cdk_lib_1.aws_lambda.LayerVersion(this, 'GpgLayer', {
75
+ code: aws_cdk_lib_1.aws_lambda.Code.fromAsset(path.join(__dirname, 'custom-resource-handlers', 'layers', 'gpg-layer.zip')),
76
76
  })],
77
77
  });
78
- fn.addToRolePolicy(new monocdk_1.aws_iam.PolicyStatement({
78
+ fn.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
79
79
  actions: [
80
80
  'secretsmanager:CreateSecret',
81
81
  'secretsmanager:GetSecretValue',
82
82
  'secretsmanager:UpdateSecret',
83
83
  'secretsmanager:DeleteSecret',
84
84
  ],
85
- resources: [monocdk_1.Stack.of(this).formatArn({
85
+ resources: [aws_cdk_lib_1.Stack.of(this).formatArn({
86
86
  service: 'secretsmanager',
87
87
  resource: 'secret',
88
- sep: ':',
88
+ arnFormat: aws_cdk_lib_1.ArnFormat.COLON_RESOURCE_NAME,
89
89
  resourceName: `${props.secretName}-??????`,
90
90
  })],
91
91
  }));
92
92
  // To allow easy migration from verison that handled the SSM parameter in the custom resource
93
- fn.addToRolePolicy(new monocdk_1.aws_iam.PolicyStatement({
93
+ fn.addToRolePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
94
94
  actions: ['ssm:DeleteParameter'],
95
95
  resources: ['*'],
96
96
  }));
97
97
  if (props.encryptionKey) {
98
- props.encryptionKey.addToResourcePolicy(new monocdk_1.aws_iam.PolicyStatement({
98
+ props.encryptionKey.addToResourcePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
99
99
  actions: ['kms:Decrypt', 'kms:GenerateDataKey'],
100
100
  resources: ['*'],
101
101
  principals: [fn.role.grantPrincipal],
102
102
  conditions: {
103
103
  StringEquals: {
104
- 'kms:ViaService': `secretsmanager.${monocdk_1.Stack.of(this).region}.amazonaws.com`,
104
+ 'kms:ViaService': `secretsmanager.${aws_cdk_lib_1.Stack.of(this).region}.amazonaws.com`,
105
105
  },
106
106
  },
107
107
  }));
108
108
  }
109
- const secret = new monocdk_1.aws_cloudformation.CustomResource(this, 'Resource', {
110
- provider: monocdk_1.aws_cloudformation.CustomResourceProvider.lambda(fn),
109
+ const secret = new aws_cdk_lib_1.CustomResource(this, 'Resource', {
110
+ serviceToken: fn.functionArn,
111
+ pascalCaseProperties: true,
111
112
  properties: {
112
113
  resourceVersion: (0, util_1.hashFileOrDirectory)(codeLocation),
113
114
  identity: props.identity,
@@ -123,11 +124,11 @@ class OpenPGPKeyPair extends monocdk_1.Construct {
123
124
  removalPolicy: openPgpKeyPairRemovalPolicyToCoreRemovalPolicy(props.removalPolicy),
124
125
  });
125
126
  secret.node.addDependency(fn);
126
- this.credential = monocdk_1.aws_secretsmanager.Secret.fromSecretAttributes(this, 'Credential', {
127
+ this.credential = aws_cdk_lib_1.aws_secretsmanager.Secret.fromSecretAttributes(this, 'Credential', {
127
128
  encryptionKey: props.encryptionKey,
128
- secretArn: secret.getAtt('SecretArn').toString(),
129
+ secretCompleteArn: secret.getAtt('SecretArn').toString(),
129
130
  });
130
- this.principal = new monocdk_1.aws_ssm.StringParameter(this, 'Principal', {
131
+ this.principal = new aws_cdk_lib_1.aws_ssm.StringParameter(this, 'Principal', {
131
132
  description: `The public part of the OpenPGP key in ${this.credential.secretArn}`,
132
133
  parameterName: props.pubKeyParameterName,
133
134
  stringValue: secret.getAtt('PublicKey').toString(),
@@ -135,17 +136,17 @@ class OpenPGPKeyPair extends monocdk_1.Construct {
135
136
  }
136
137
  grantRead(grantee) {
137
138
  // Secret grant, identity-based only
138
- grantee.addToPolicy(new monocdk_1.aws_iam.PolicyStatement({
139
+ grantee.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
139
140
  resources: [this.credential.secretArn],
140
141
  actions: ['secretsmanager:ListSecrets', 'secretsmanager:DescribeSecret', 'secretsmanager:GetSecretValue'],
141
142
  }));
142
143
  // Key grant
143
144
  if (this.credential.encryptionKey) {
144
- grantee.addToPolicy(new monocdk_1.aws_iam.PolicyStatement({
145
+ grantee.addToPrincipalPolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
145
146
  resources: [this.credential.encryptionKey.keyArn],
146
147
  actions: ['kms:Decrypt'],
147
148
  }));
148
- this.credential.encryptionKey.addToResourcePolicy(new monocdk_1.aws_iam.PolicyStatement({
149
+ this.credential.encryptionKey.addToResourcePolicy(new aws_cdk_lib_1.aws_iam.PolicyStatement({
149
150
  resources: ['*'],
150
151
  principals: [grantee.grantPrincipal],
151
152
  actions: ['kms:Decrypt'],
@@ -156,10 +157,10 @@ class OpenPGPKeyPair extends monocdk_1.Construct {
156
157
  exports.OpenPGPKeyPair = OpenPGPKeyPair;
157
158
  function openPgpKeyPairRemovalPolicyToCoreRemovalPolicy(removalPolicy) {
158
159
  if (removalPolicy === undefined) {
159
- return monocdk_1.RemovalPolicy.RETAIN;
160
+ return aws_cdk_lib_1.RemovalPolicy.RETAIN;
160
161
  }
161
162
  return removalPolicy === OpenPGPKeyPairRemovalPolicy.RETAIN
162
- ? monocdk_1.RemovalPolicy.RETAIN
163
- : monocdk_1.RemovalPolicy.DESTROY;
163
+ ? aws_cdk_lib_1.RemovalPolicy.RETAIN
164
+ : aws_cdk_lib_1.RemovalPolicy.DESTROY;
164
165
  }
165
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1wZ3Ata2V5LXBhaXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvcGVuLXBncC1rZXktcGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDRDQUE0QztBQUM1QywyQ0FBNkI7QUFDN0IscUNBUWlCO0FBRWpCLGlDQUE2QztBQUU3Qzs7R0FFRztBQUNILElBQVksMkJBbUJYO0FBbkJELFdBQVksMkJBQTJCO0lBQ3JDOzs7T0FHRztJQUNILGlGQUFNLENBQUE7SUFFTjs7O09BR0c7SUFDSCxpR0FBYyxDQUFBO0lBRWQ7Ozs7T0FJRztJQUNILDJHQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFuQlcsMkJBQTJCLEdBQTNCLG1DQUEyQixLQUEzQixtQ0FBMkIsUUFtQnRDO0FBNkREOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsbUJBQVM7SUFJM0MsWUFBWSxNQUFpQixFQUFFLElBQVksRUFBRSxLQUEwQjtRQUNyRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5RixNQUFNLEVBQUUsR0FBRyxJQUFJLG9CQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUN0RCxJQUFJLEVBQUUsc0NBQXNDO1lBQzVDLFdBQVcsRUFBRSwrR0FBK0c7WUFDNUgsSUFBSSxFQUFFLElBQUksb0JBQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLE9BQU8sRUFBRSxrQkFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDOUIsT0FBTyxFQUFFLG9CQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsa0VBQWtFO1lBQ2xFLE1BQU0sRUFBRSxDQUFDLElBQUksb0JBQU0sQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtvQkFDakQsSUFBSSxFQUFFLG9CQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSwwQkFBMEIsRUFBRSxRQUFRLEVBQUUsZUFBZSxDQUFDLENBQUM7aUJBQ3pHLENBQUMsQ0FBQztTQUNKLENBQUMsQ0FBQztRQUVILEVBQUUsQ0FBQyxlQUFlLENBQUMsSUFBSSxpQkFBRyxDQUFDLGVBQWUsQ0FBQztZQUN6QyxPQUFPLEVBQUU7Z0JBQ1AsNkJBQTZCO2dCQUM3QiwrQkFBK0I7Z0JBQy9CLDZCQUE2QjtnQkFDN0IsNkJBQTZCO2FBQzlCO1lBQ0QsU0FBUyxFQUFFLENBQUMsZUFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ25DLE9BQU8sRUFBRSxnQkFBZ0I7b0JBQ3pCLFFBQVEsRUFBRSxRQUFRO29CQUNsQixHQUFHLEVBQUUsR0FBRztvQkFDUixZQUFZLEVBQUUsR0FBRyxLQUFLLENBQUMsVUFBVSxTQUFTO2lCQUMzQyxDQUFDLENBQUM7U0FDSixDQUFDLENBQUMsQ0FBQztRQUVKLDZGQUE2RjtRQUM3RixFQUFFLENBQUMsZUFBZSxDQUFDLElBQUksaUJBQUcsQ0FBQyxlQUFlLENBQUM7WUFDekMsT0FBTyxFQUFFLENBQUMscUJBQXFCLENBQUM7WUFDaEMsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO1NBQ2pCLENBQUMsQ0FBQyxDQUFDO1FBRUosSUFBSSxLQUFLLENBQUMsYUFBYSxFQUFFO1lBQ3ZCLEtBQUssQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsSUFBSSxpQkFBRyxDQUFDLGVBQWUsQ0FBQztnQkFDOUQsT0FBTyxFQUFFLENBQUMsYUFBYSxFQUFFLHFCQUFxQixDQUFDO2dCQUMvQyxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7Z0JBQ2hCLFVBQVUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxJQUFLLENBQUMsY0FBYyxDQUFDO2dCQUNyQyxVQUFVLEVBQUU7b0JBQ1YsWUFBWSxFQUFFO3dCQUNaLGdCQUFnQixFQUFFLGtCQUFrQixlQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sZ0JBQWdCO3FCQUMxRTtpQkFDRjthQUNGLENBQUMsQ0FBQyxDQUFDO1NBQ0w7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLDRCQUFHLENBQUMsY0FBYyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDdEQsUUFBUSxFQUFFLDRCQUFHLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUMvQyxVQUFVLEVBQUU7Z0JBQ1YsZUFBZSxFQUFFLElBQUEsMEJBQW1CLEVBQUMsWUFBWSxDQUFDO2dCQUNsRCxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQ3hCLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztnQkFDbEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO2dCQUNwQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzlCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtnQkFDNUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxhQUFhLElBQUksS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNO2dCQUN6RCxPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87Z0JBQ3RCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDOUIsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGFBQWEsS0FBSywyQkFBMkIsQ0FBQyxtQkFBbUI7YUFDM0Y7WUFDRCxhQUFhLEVBQUUsOENBQThDLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQztTQUNuRixDQUFDLENBQUM7UUFDSCxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUU5QixJQUFJLENBQUMsVUFBVSxHQUFHLDRCQUFjLENBQUMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDL0UsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLFNBQVMsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRTtTQUNqRCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksaUJBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRTtZQUMxRCxXQUFXLEVBQUUseUNBQXlDLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxFQUFFO1lBQ2pGLGFBQWEsRUFBRSxLQUFLLENBQUMsbUJBQW1CO1lBQ3hDLFdBQVcsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxDQUFDLFFBQVEsRUFBRTtTQUNuRCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sU0FBUyxDQUFDLE9BQXVCO1FBQ3RDLG9DQUFvQztRQUNwQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksaUJBQUcsQ0FBQyxlQUFlLENBQUM7WUFDMUMsU0FBUyxFQUFFLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxTQUFTLENBQUM7WUFDdEMsT0FBTyxFQUFFLENBQUMsNEJBQTRCLEVBQUUsK0JBQStCLEVBQUUsK0JBQStCLENBQUM7U0FDMUcsQ0FBQyxDQUFDLENBQUM7UUFFSixZQUFZO1FBQ1osSUFBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRTtZQUNqQyxPQUFPLENBQUMsV0FBVyxDQUFDLElBQUksaUJBQUcsQ0FBQyxlQUFlLENBQUM7Z0JBQzFDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQztnQkFDakQsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2FBQ3pCLENBQUMsQ0FBQyxDQUFDO1lBRUosSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUMsSUFBSSxpQkFBRyxDQUFDLGVBQWUsQ0FBQztnQkFDeEUsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2dCQUNoQixVQUFVLEVBQUUsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDO2dCQUNwQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUM7YUFDekIsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNILENBQUM7Q0FDRjtBQTFHRCx3Q0EwR0M7QUFFRCxTQUFTLDhDQUE4QyxDQUFDLGFBQTJDO0lBQ2pHLElBQUksYUFBYSxLQUFLLFNBQVMsRUFBRTtRQUMvQixPQUFPLHVCQUFhLENBQUMsTUFBTSxDQUFDO0tBQzdCO0lBQ0QsT0FBTyxhQUFhLEtBQUssMkJBQTJCLENBQUMsTUFBTTtRQUN6RCxDQUFDLENBQUMsdUJBQWEsQ0FBQyxNQUFNO1FBQ3RCLENBQUMsQ0FBQyx1QkFBYSxDQUFDLE9BQU8sQ0FBQztBQUM1QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOiBtYXgtbGluZS1sZW5ndGhcbmltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBDb25zdHJ1Y3QsIER1cmF0aW9uLCBTdGFjaywgUmVtb3ZhbFBvbGljeSxcbiAgYXdzX2Nsb3VkZm9ybWF0aW9uIGFzIGNmbixcbiAgYXdzX2lhbSBhcyBpYW0sXG4gIGF3c19rbXMgYXMga21zLFxuICBhd3NfbGFtYmRhIGFzIGxhbWJkYSxcbiAgYXdzX3NlY3JldHNtYW5hZ2VyIGFzIHNlY3JldHNNYW5hZ2VyLFxuICBhd3Nfc3NtIGFzIHNzbSxcbn0gZnJvbSAnbW9ub2Nkayc7XG5pbXBvcnQgeyBJQ3JlZGVudGlhbFBhaXIgfSBmcm9tICcuL2NyZWRlbnRpYWwtcGFpcic7XG5pbXBvcnQgeyBoYXNoRmlsZU9yRGlyZWN0b3J5IH0gZnJvbSAnLi91dGlsJztcblxuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUge0BsaW5rIE9wZW5QR1BLZXlQYWlyUHJvcHMucmVtb3ZhbFBvbGljeX0gcHJvcGVydHkuXG4gKi9cbmV4cG9ydCBlbnVtIE9wZW5QR1BLZXlQYWlyUmVtb3ZhbFBvbGljeSB7XG4gIC8qKlxuICAgKiBLZWVwIHRoZSBzZWNyZXQgd2hlbiB0aGlzIHJlc291cmNlIGlzIGRlbGV0ZWQgZnJvbSB0aGUgc3RhY2suXG4gICAqIFRoaXMgaXMgdGhlIGRlZmF1bHQgc2V0dGluZy5cbiAgICovXG4gIFJFVEFJTixcblxuICAvKipcbiAgICogUmVtb3ZlIHRoZSBzZWNyZXQgd2hlbiB0aGlzIHJlc291cmNlIGlzIGRlbGV0ZWQgZnJvbSB0aGUgc3RhY2ssXG4gICAqIGJ1dCBsZWF2ZSBhIGdyYWNlIHBlcmlvZCBvZiBhIGZldyBkYXlzIHRoYXQgYWxsb3dzIHlvdSB0byBjYW5jZWwgdGhlIGRlbGV0aW9uIGZyb20gdGhlIEFXUyBDb25zb2xlLlxuICAgKi9cbiAgREVTVFJPWV9TQUZFTFksXG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgc2VjcmV0IHdoZW4gdGhpcyByZXNvdXJjZSBpcyBkZWxldGVkIGZyb20gdGhlIHN0YWNrIGltbWVkaWF0ZWx5LlxuICAgKiBOb3RlIHRoYXQgaWYgeW91IGRvbid0IGhhdmUgYSBiYWNrdXAgb2YgdGhpcyBrZXkgc29tZXdoZXJlLFxuICAgKiB0aGlzIG1lYW5zIGl0IHdpbGwgYmUgZ29uZSBmb3JldmVyIVxuICAgKi9cbiAgREVTVFJPWV9JTU1FRElBVEVMWVxufVxuXG5pbnRlcmZhY2UgT3BlblBHUEtleVBhaXJQcm9wcyB7XG4gIC8qKlxuICAgKiBJZGVudGl0eSB0byBwdXQgaW50byB0aGUga2V5XG4gICAqL1xuICBpZGVudGl0eTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbWFpbCBhZGRyZXNzIHRvIGF0dGFjaCB0byB0aGUga2V5XG4gICAqL1xuICBlbWFpbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBLZXkgc2l6ZSBpbiBiaXRzICgxMDI0LCAyMDQ4LCA0MDk2KVxuICAgKi9cbiAga2V5U2l6ZUJpdHM6IG51bWJlcjtcblxuICAvKipcbiAgICogR1BHIGV4cGlyeSBzcGVjaWZpZXJcbiAgICpcbiAgICogRXhhbXBsZTogJzF5J1xuICAgKi9cbiAgZXhwaXJ5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2Ygc2VjcmV0IHRvIGNyZWF0ZSBpbiBBV1MgU2VjcmV0cyBNYW5hZ2VyXG4gICAqL1xuICBzZWNyZXROYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgU1NNIHBhcmFtZXRlciB0byBzdG9yZSBwdWJsaWMga2V5XG4gICAqL1xuICBwdWJLZXlQYXJhbWV0ZXJOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEtNUyBLZXkgQVJOIHRvIHVzZSB0byBlbmNyeXB0IFNlY3JldHMgTWFuYWdlciBTZWNyZXRcbiAgICovXG4gIGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVmVyc2lvbiBvZiB0aGUga2V5XG4gICAqXG4gICAqIEJ1bXAgdGhpcyBudW1iZXIgdG8gcmVnZW5lcmF0ZSB0aGUga2V5XG4gICAqL1xuICB2ZXJzaW9uOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEEgZGVzY3JpcHRpb24gdG8gYXR0YWNoIHRvIHRoZSBBV1MgU2VjcmV0c01hbmFnZXIgc2VjcmV0LlxuICAgKi9cbiAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoYXQgaGFwcGVucyB0byB0aGUgU2VjcmV0c01hbmFnZXIgc2VjcmV0IHdoZW4gdGhpcyByZXNvdXJjZSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YWNrLlxuICAgKiBUaGUgZGVmYXVsdCBpcyB0byBrZWVwIHRoZSBzZWNyZXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IE9wZW5QR1BLZXlQYWlyUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICovXG4gIHJlbW92YWxQb2xpY3k/OiBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3k7XG59XG5cbi8qKlxuICogQSBQR1Aga2V5IHRoYXQgaXMgc3RvcmVkIGluIFNlY3JldHMgTWFuYWdlci5cbiAqIFRoZSBTZWNyZXRzTWFuYWdlciBzZWNyZXQgaXMgYnkgZGVmYXVsdCByZXRhaW5lZCB3aGVuIHRoZSByZXNvdXJjZSBpcyBkZWxldGVkLFxuICogeW91IGNhbiBjaGFuZ2UgdGhhdCB3aXRoIHRoZSBgcmVtb3ZhbFBvbGljeWAgcHJvcGVydHkuXG4gKlxuICogVGhlIHN0cmluZyBpbiBzZWNyZXRzIG1hbmFnZXIgd2lsbCBiZSBhIEpTT04gc3RydWN0IG9mXG4gKlxuICogeyBcIlByaXZhdGVLZXlcIjogXCIuLi4gQVNDSUkgcmVwciBvZiBrZXkuLi5cIiwgXCJQYXNzcGhyYXNlXCI6IFwicGFzc3BocmFzZSBvZiB0aGUga2V5XCIgfVxuICovXG5leHBvcnQgY2xhc3MgT3BlblBHUEtleVBhaXIgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ3JlZGVudGlhbFBhaXIge1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpbmNpcGFsOiBzc20uSVN0cmluZ1BhcmFtZXRlcjtcbiAgcHVibGljIHJlYWRvbmx5IGNyZWRlbnRpYWw6IHNlY3JldHNNYW5hZ2VyLklTZWNyZXQ7XG5cbiAgY29uc3RydWN0b3IocGFyZW50OiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IE9wZW5QR1BLZXlQYWlyUHJvcHMpIHtcbiAgICBzdXBlcihwYXJlbnQsIG5hbWUpO1xuXG4gICAgY29uc3QgY29kZUxvY2F0aW9uID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ2N1c3RvbS1yZXNvdXJjZS1oYW5kbGVycycsICdiaW4nLCAncGdwLXNlY3JldCcpO1xuXG4gICAgY29uc3QgZm4gPSBuZXcgbGFtYmRhLlNpbmdsZXRvbkZ1bmN0aW9uKHRoaXMsICdMYW1iZGEnLCB7XG4gICAgICB1dWlkOiAnZjI1ODAzZDMtMDU0Yi00NGZjLTk4NWYtNDg2MGQ3ZDZlZTc0JyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnR2VuZXJhdGVzIGFuIE9wZW5QR1AgS2V5IGFuZCBzdG9yZXMgdGhlIHByaXZhdGUga2V5IGluIFNlY3JldHMgTWFuYWdlciBhbmQgdGhlIHB1YmxpYyBrZXkgaW4gYW4gU1NNIFBhcmFtZXRlcicsXG4gICAgICBjb2RlOiBuZXcgbGFtYmRhLkFzc2V0Q29kZShjb2RlTG9jYXRpb24pLFxuICAgICAgaGFuZGxlcjogJ2luZGV4LmhhbmRsZXInLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygzMDApLFxuICAgICAgcnVudGltZTogbGFtYmRhLlJ1bnRpbWUuTk9ERUpTXzEyX1gsXG4gICAgICAvLyBhZGQgdGhlIGxheWVyIHRoYXQgY29udGFpbnMgdGhlIEdQRyBiaW5hcnkgKCsgc2hhcmVkIGxpYnJhcmllcylcbiAgICAgIGxheWVyczogW25ldyBsYW1iZGEuTGF5ZXJWZXJzaW9uKHRoaXMsICdHcGdMYXllcicsIHtcbiAgICAgICAgY29kZTogbGFtYmRhLkNvZGUuZnJvbUFzc2V0KHBhdGguam9pbihfX2Rpcm5hbWUsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnbGF5ZXJzJywgJ2dwZy1sYXllci56aXAnKSksXG4gICAgICB9KV0sXG4gICAgfSk7XG5cbiAgICBmbi5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogW1xuICAgICAgICAnc2VjcmV0c21hbmFnZXI6Q3JlYXRlU2VjcmV0JyxcbiAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkdldFNlY3JldFZhbHVlJyxcbiAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOlVwZGF0ZVNlY3JldCcsXG4gICAgICAgICdzZWNyZXRzbWFuYWdlcjpEZWxldGVTZWNyZXQnLFxuICAgICAgXSxcbiAgICAgIHJlc291cmNlczogW1N0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdzZWNyZXRzbWFuYWdlcicsXG4gICAgICAgIHJlc291cmNlOiAnc2VjcmV0JyxcbiAgICAgICAgc2VwOiAnOicsXG4gICAgICAgIHJlc291cmNlTmFtZTogYCR7cHJvcHMuc2VjcmV0TmFtZX0tPz8/Pz8/YCxcbiAgICAgIH0pXSxcbiAgICB9KSk7XG5cbiAgICAvLyBUbyBhbGxvdyBlYXN5IG1pZ3JhdGlvbiBmcm9tIHZlcmlzb24gdGhhdCBoYW5kbGVkIHRoZSBTU00gcGFyYW1ldGVyIGluIHRoZSBjdXN0b20gcmVzb3VyY2VcbiAgICBmbi5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydzc206RGVsZXRlUGFyYW1ldGVyJ10sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgIH0pKTtcblxuICAgIGlmIChwcm9wcy5lbmNyeXB0aW9uS2V5KSB7XG4gICAgICBwcm9wcy5lbmNyeXB0aW9uS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0JywgJ2ttczpHZW5lcmF0ZURhdGFLZXknXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgcHJpbmNpcGFsczogW2ZuLnJvbGUhLmdyYW50UHJpbmNpcGFsXSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ2ttczpWaWFTZXJ2aWNlJzogYHNlY3JldHNtYW5hZ2VyLiR7U3RhY2sub2YodGhpcykucmVnaW9ufS5hbWF6b25hd3MuY29tYCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3JldCA9IG5ldyBjZm4uQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgcHJvdmlkZXI6IGNmbi5DdXN0b21SZXNvdXJjZVByb3ZpZGVyLmxhbWJkYShmbiksXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHJlc291cmNlVmVyc2lvbjogaGFzaEZpbGVPckRpcmVjdG9yeShjb2RlTG9jYXRpb24pLFxuICAgICAgICBpZGVudGl0eTogcHJvcHMuaWRlbnRpdHksXG4gICAgICAgIGVtYWlsOiBwcm9wcy5lbWFpbCxcbiAgICAgICAgZXhwaXJ5OiBwcm9wcy5leHBpcnksXG4gICAgICAgIGtleVNpemVCaXRzOiBwcm9wcy5rZXlTaXplQml0cyxcbiAgICAgICAgc2VjcmV0TmFtZTogcHJvcHMuc2VjcmV0TmFtZSxcbiAgICAgICAga2V5QXJuOiBwcm9wcy5lbmNyeXB0aW9uS2V5ICYmIHByb3BzLmVuY3J5cHRpb25LZXkua2V5QXJuLFxuICAgICAgICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAgIGRlbGV0ZUltbWVkaWF0ZWx5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kuREVTVFJPWV9JTU1FRElBVEVMWSxcbiAgICAgIH0sXG4gICAgICByZW1vdmFsUG9saWN5OiBvcGVuUGdwS2V5UGFpclJlbW92YWxQb2xpY3lUb0NvcmVSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpLFxuICAgIH0pO1xuICAgIHNlY3JldC5ub2RlLmFkZERlcGVuZGVuY3koZm4pO1xuXG4gICAgdGhpcy5jcmVkZW50aWFsID0gc2VjcmV0c01hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRBdHRyaWJ1dGVzKHRoaXMsICdDcmVkZW50aWFsJywge1xuICAgICAgZW5jcnlwdGlvbktleTogcHJvcHMuZW5jcnlwdGlvbktleSxcbiAgICAgIHNlY3JldEFybjogc2VjcmV0LmdldEF0dCgnU2VjcmV0QXJuJykudG9TdHJpbmcoKSxcbiAgICB9KTtcbiAgICB0aGlzLnByaW5jaXBhbCA9IG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdQcmluY2lwYWwnLCB7XG4gICAgICBkZXNjcmlwdGlvbjogYFRoZSBwdWJsaWMgcGFydCBvZiB0aGUgT3BlblBHUCBrZXkgaW4gJHt0aGlzLmNyZWRlbnRpYWwuc2VjcmV0QXJufWAsXG4gICAgICBwYXJhbWV0ZXJOYW1lOiBwcm9wcy5wdWJLZXlQYXJhbWV0ZXJOYW1lLFxuICAgICAgc3RyaW5nVmFsdWU6IHNlY3JldC5nZXRBdHQoJ1B1YmxpY0tleScpLnRvU3RyaW5nKCksXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JUHJpbmNpcGFsKTogdm9pZCB7XG4gICAgLy8gU2VjcmV0IGdyYW50LCBpZGVudGl0eS1iYXNlZCBvbmx5XG4gICAgZ3JhbnRlZS5hZGRUb1BvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICByZXNvdXJjZXM6IFt0aGlzLmNyZWRlbnRpYWwuc2VjcmV0QXJuXSxcbiAgICAgIGFjdGlvbnM6IFsnc2VjcmV0c21hbmFnZXI6TGlzdFNlY3JldHMnLCAnc2VjcmV0c21hbmFnZXI6RGVzY3JpYmVTZWNyZXQnLCAnc2VjcmV0c21hbmFnZXI6R2V0U2VjcmV0VmFsdWUnXSxcbiAgICB9KSk7XG5cbiAgICAvLyBLZXkgZ3JhbnRcbiAgICBpZiAodGhpcy5jcmVkZW50aWFsLmVuY3J5cHRpb25LZXkpIHtcbiAgICAgIGdyYW50ZWUuYWRkVG9Qb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmNyZWRlbnRpYWwuZW5jcnlwdGlvbktleS5rZXlBcm5dLFxuICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0J10sXG4gICAgICB9KSk7XG5cbiAgICAgIHRoaXMuY3JlZGVudGlhbC5lbmNyeXB0aW9uS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgICAgICBwcmluY2lwYWxzOiBbZ3JhbnRlZS5ncmFudFByaW5jaXBhbF0sXG4gICAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgIH0pKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gb3BlblBncEtleVBhaXJSZW1vdmFsUG9saWN5VG9Db3JlUmVtb3ZhbFBvbGljeShyZW1vdmFsUG9saWN5PzogT3BlblBHUEtleVBhaXJSZW1vdmFsUG9saWN5KTogUmVtb3ZhbFBvbGljeSB7XG4gIGlmIChyZW1vdmFsUG9saWN5ID09PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gUmVtb3ZhbFBvbGljeS5SRVRBSU47XG4gIH1cbiAgcmV0dXJuIHJlbW92YWxQb2xpY3kgPT09IE9wZW5QR1BLZXlQYWlyUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICA/IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAgOiBSZW1vdmFsUG9saWN5LkRFU1RST1k7XG59XG4iXX0=
166
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3Blbi1wZ3Ata2V5LXBhaXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJvcGVuLXBncC1rZXktcGFpci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUE2QjtBQUM3Qiw2Q0FTcUI7QUFDckIsMkNBQXVDO0FBRXZDLGlDQUE2QztBQUU3Qzs7R0FFRztBQUNILElBQVksMkJBbUJYO0FBbkJELFdBQVksMkJBQTJCO0lBQ3JDOzs7T0FHRztJQUNILGlGQUFNLENBQUE7SUFFTjs7O09BR0c7SUFDSCxpR0FBYyxDQUFBO0lBRWQ7Ozs7T0FJRztJQUNILDJHQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFuQlcsMkJBQTJCLEdBQTNCLG1DQUEyQixLQUEzQixtQ0FBMkIsUUFtQnRDO0FBNkREOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsc0JBQVM7SUFJM0MsWUFBWSxNQUFpQixFQUFFLElBQVksRUFBRSxLQUEwQjtRQUNyRSxLQUFLLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBRXBCLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLDBCQUEwQixFQUFFLEtBQUssRUFBRSxZQUFZLENBQUMsQ0FBQztRQUU5RixNQUFNLEVBQUUsR0FBRyxJQUFJLHdCQUFNLENBQUMsaUJBQWlCLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRTtZQUN0RCxJQUFJLEVBQUUsc0NBQXNDO1lBQzVDLFdBQVcsRUFBRSwrR0FBK0c7WUFDNUgsSUFBSSxFQUFFLElBQUksd0JBQU0sQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDO1lBQ3hDLE9BQU8sRUFBRSxlQUFlO1lBQ3hCLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7WUFDOUIsT0FBTyxFQUFFLHdCQUFNLENBQUMsT0FBTyxDQUFDLFdBQVc7WUFDbkMsa0VBQWtFO1lBQ2xFLE1BQU0sRUFB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TyxDQUFDLGNBQWMsQ0FBQztnQkFDcEMsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO2FBQ3pCLENBQUMsQ0FBQyxDQUFDO1NBQ0w7SUFDSCxDQUFDO0NBQ0Y7QUEzR0Qsd0NBMkdDO0FBRUQsU0FBUyw4Q0FBOEMsQ0FBQyxhQUEyQztJQUNqRyxJQUFJLGFBQWEsS0FBSyxTQUFTLEVBQUU7UUFDL0IsT0FBTywyQkFBYSxDQUFDLE1BQU0sQ0FBQztLQUM3QjtJQUNELE9BQU8sYUFBYSxLQUFLLDJCQUEyQixDQUFDLE1BQU07UUFDekQsQ0FBQyxDQUFDLDJCQUFhLENBQUMsTUFBTTtRQUN0QixDQUFDLENBQUMsMkJBQWEsQ0FBQyxPQUFPLENBQUM7QUFDNUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQge1xuICBEdXJhdGlvbiwgU3RhY2ssIFJlbW92YWxQb2xpY3ksXG4gIEN1c3RvbVJlc291cmNlLFxuICBhd3NfaWFtIGFzIGlhbSxcbiAgYXdzX2ttcyBhcyBrbXMsXG4gIGF3c19sYW1iZGEgYXMgbGFtYmRhLFxuICBhd3Nfc2VjcmV0c21hbmFnZXIgYXMgc2VjcmV0c01hbmFnZXIsXG4gIGF3c19zc20gYXMgc3NtLFxuICBBcm5Gb3JtYXQsXG59IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSUNyZWRlbnRpYWxQYWlyIH0gZnJvbSAnLi9jcmVkZW50aWFsLXBhaXInO1xuaW1wb3J0IHsgaGFzaEZpbGVPckRpcmVjdG9yeSB9IGZyb20gJy4vdXRpbCc7XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIHtAbGluayBPcGVuUEdQS2V5UGFpclByb3BzLnJlbW92YWxQb2xpY3l9IHByb3BlcnR5LlxuICovXG5leHBvcnQgZW51bSBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kge1xuICAvKipcbiAgICogS2VlcCB0aGUgc2VjcmV0IHdoZW4gdGhpcyByZXNvdXJjZSBpcyBkZWxldGVkIGZyb20gdGhlIHN0YWNrLlxuICAgKiBUaGlzIGlzIHRoZSBkZWZhdWx0IHNldHRpbmcuXG4gICAqL1xuICBSRVRBSU4sXG5cbiAgLyoqXG4gICAqIFJlbW92ZSB0aGUgc2VjcmV0IHdoZW4gdGhpcyByZXNvdXJjZSBpcyBkZWxldGVkIGZyb20gdGhlIHN0YWNrLFxuICAgKiBidXQgbGVhdmUgYSBncmFjZSBwZXJpb2Qgb2YgYSBmZXcgZGF5cyB0aGF0IGFsbG93cyB5b3UgdG8gY2FuY2VsIHRoZSBkZWxldGlvbiBmcm9tIHRoZSBBV1MgQ29uc29sZS5cbiAgICovXG4gIERFU1RST1lfU0FGRUxZLFxuXG4gIC8qKlxuICAgKiBSZW1vdmUgdGhlIHNlY3JldCB3aGVuIHRoaXMgcmVzb3VyY2UgaXMgZGVsZXRlZCBmcm9tIHRoZSBzdGFjayBpbW1lZGlhdGVseS5cbiAgICogTm90ZSB0aGF0IGlmIHlvdSBkb24ndCBoYXZlIGEgYmFja3VwIG9mIHRoaXMga2V5IHNvbWV3aGVyZSxcbiAgICogdGhpcyBtZWFucyBpdCB3aWxsIGJlIGdvbmUgZm9yZXZlciFcbiAgICovXG4gIERFU1RST1lfSU1NRURJQVRFTFlcbn1cblxuaW50ZXJmYWNlIE9wZW5QR1BLZXlQYWlyUHJvcHMge1xuICAvKipcbiAgICogSWRlbnRpdHkgdG8gcHV0IGludG8gdGhlIGtleVxuICAgKi9cbiAgaWRlbnRpdHk6IHN0cmluZztcblxuICAvKipcbiAgICogRW1haWwgYWRkcmVzcyB0byBhdHRhY2ggdG8gdGhlIGtleVxuICAgKi9cbiAgZW1haWw6IHN0cmluZztcblxuICAvKipcbiAgICogS2V5IHNpemUgaW4gYml0cyAoMTAyNCwgMjA0OCwgNDA5NilcbiAgICovXG4gIGtleVNpemVCaXRzOiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEdQRyBleHBpcnkgc3BlY2lmaWVyXG4gICAqXG4gICAqIEV4YW1wbGU6ICcxeSdcbiAgICovXG4gIGV4cGlyeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHNlY3JldCB0byBjcmVhdGUgaW4gQVdTIFNlY3JldHMgTWFuYWdlclxuICAgKi9cbiAgc2VjcmV0TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIFNTTSBwYXJhbWV0ZXIgdG8gc3RvcmUgcHVibGljIGtleVxuICAgKi9cbiAgcHViS2V5UGFyYW1ldGVyTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBLTVMgS2V5IEFSTiB0byB1c2UgdG8gZW5jcnlwdCBTZWNyZXRzIE1hbmFnZXIgU2VjcmV0XG4gICAqL1xuICBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG5cbiAgLyoqXG4gICAqIFZlcnNpb24gb2YgdGhlIGtleVxuICAgKlxuICAgKiBCdW1wIHRoaXMgbnVtYmVyIHRvIHJlZ2VuZXJhdGUgdGhlIGtleVxuICAgKi9cbiAgdmVyc2lvbjogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBIGRlc2NyaXB0aW9uIHRvIGF0dGFjaCB0byB0aGUgQVdTIFNlY3JldHNNYW5hZ2VyIHNlY3JldC5cbiAgICovXG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGF0IGhhcHBlbnMgdG8gdGhlIFNlY3JldHNNYW5hZ2VyIHNlY3JldCB3aGVuIHRoaXMgcmVzb3VyY2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGFjay5cbiAgICogVGhlIGRlZmF1bHQgaXMgdG8ga2VlcCB0aGUgc2VjcmV0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAqL1xuICByZW1vdmFsUG9saWN5PzogT3BlblBHUEtleVBhaXJSZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEEgUEdQIGtleSB0aGF0IGlzIHN0b3JlZCBpbiBTZWNyZXRzIE1hbmFnZXIuXG4gKiBUaGUgU2VjcmV0c01hbmFnZXIgc2VjcmV0IGlzIGJ5IGRlZmF1bHQgcmV0YWluZWQgd2hlbiB0aGUgcmVzb3VyY2UgaXMgZGVsZXRlZCxcbiAqIHlvdSBjYW4gY2hhbmdlIHRoYXQgd2l0aCB0aGUgYHJlbW92YWxQb2xpY3lgIHByb3BlcnR5LlxuICpcbiAqIFRoZSBzdHJpbmcgaW4gc2VjcmV0cyBtYW5hZ2VyIHdpbGwgYmUgYSBKU09OIHN0cnVjdCBvZlxuICpcbiAqIHsgXCJQcml2YXRlS2V5XCI6IFwiLi4uIEFTQ0lJIHJlcHIgb2Yga2V5Li4uXCIsIFwiUGFzc3BocmFzZVwiOiBcInBhc3NwaHJhc2Ugb2YgdGhlIGtleVwiIH1cbiAqL1xuZXhwb3J0IGNsYXNzIE9wZW5QR1BLZXlQYWlyIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNyZWRlbnRpYWxQYWlyIHtcbiAgcHVibGljIHJlYWRvbmx5IHByaW5jaXBhbDogc3NtLklTdHJpbmdQYXJhbWV0ZXI7XG4gIHB1YmxpYyByZWFkb25seSBjcmVkZW50aWFsOiBzZWNyZXRzTWFuYWdlci5JU2VjcmV0O1xuXG4gIGNvbnN0cnVjdG9yKHBhcmVudDogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBPcGVuUEdQS2V5UGFpclByb3BzKSB7XG4gICAgc3VwZXIocGFyZW50LCBuYW1lKTtcblxuICAgIGNvbnN0IGNvZGVMb2NhdGlvbiA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdjdXN0b20tcmVzb3VyY2UtaGFuZGxlcnMnLCAnYmluJywgJ3BncC1zZWNyZXQnKTtcblxuICAgIGNvbnN0IGZuID0gbmV3IGxhbWJkYS5TaW5nbGV0b25GdW5jdGlvbih0aGlzLCAnTGFtYmRhJywge1xuICAgICAgdXVpZDogJ2YyNTgwM2QzLTA1NGItNDRmYy05ODVmLTQ4NjBkN2Q2ZWU3NCcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0dlbmVyYXRlcyBhbiBPcGVuUEdQIEtleSBhbmQgc3RvcmVzIHRoZSBwcml2YXRlIGtleSBpbiBTZWNyZXRzIE1hbmFnZXIgYW5kIHRoZSBwdWJsaWMga2V5IGluIGFuIFNTTSBQYXJhbWV0ZXInLFxuICAgICAgY29kZTogbmV3IGxhbWJkYS5Bc3NldENvZGUoY29kZUxvY2F0aW9uKSxcbiAgICAgIGhhbmRsZXI6ICdpbmRleC5oYW5kbGVyJyxcbiAgICAgIHRpbWVvdXQ6IER1cmF0aW9uLnNlY29uZHMoMzAwKSxcbiAgICAgIHJ1bnRpbWU6IGxhbWJkYS5SdW50aW1lLk5PREVKU18xMl9YLFxuICAgICAgLy8gYWRkIHRoZSBsYXllciB0aGF0IGNvbnRhaW5zIHRoZSBHUEcgYmluYXJ5ICgrIHNoYXJlZCBsaWJyYXJpZXMpXG4gICAgICBsYXllcnM6IFtuZXcgbGFtYmRhLkxheWVyVmVyc2lvbih0aGlzLCAnR3BnTGF5ZXInLCB7XG4gICAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCAnY3VzdG9tLXJlc291cmNlLWhhbmRsZXJzJywgJ2xheWVycycsICdncGctbGF5ZXIuemlwJykpLFxuICAgICAgfSldLFxuICAgIH0pO1xuXG4gICAgZm4uYWRkVG9Sb2xlUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkNyZWF0ZVNlY3JldCcsXG4gICAgICAgICdzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZScsXG4gICAgICAgICdzZWNyZXRzbWFuYWdlcjpVcGRhdGVTZWNyZXQnLFxuICAgICAgICAnc2VjcmV0c21hbmFnZXI6RGVsZXRlU2VjcmV0JyxcbiAgICAgIF0sXG4gICAgICByZXNvdXJjZXM6IFtTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnc2VjcmV0c21hbmFnZXInLFxuICAgICAgICByZXNvdXJjZTogJ3NlY3JldCcsXG4gICAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LkNPTE9OX1JFU09VUkNFX05BTUUsXG4gICAgICAgIHJlc291cmNlTmFtZTogYCR7cHJvcHMuc2VjcmV0TmFtZX0tPz8/Pz8/YCxcbiAgICAgIH0pXSxcbiAgICB9KSk7XG5cbiAgICAvLyBUbyBhbGxvdyBlYXN5IG1pZ3JhdGlvbiBmcm9tIHZlcmlzb24gdGhhdCBoYW5kbGVkIHRoZSBTU00gcGFyYW1ldGVyIGluIHRoZSBjdXN0b20gcmVzb3VyY2VcbiAgICBmbi5hZGRUb1JvbGVQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydzc206RGVsZXRlUGFyYW1ldGVyJ10sXG4gICAgICByZXNvdXJjZXM6IFsnKiddLFxuICAgIH0pKTtcblxuICAgIGlmIChwcm9wcy5lbmNyeXB0aW9uS2V5KSB7XG4gICAgICBwcm9wcy5lbmNyeXB0aW9uS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3kobmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICBhY3Rpb25zOiBbJ2ttczpEZWNyeXB0JywgJ2ttczpHZW5lcmF0ZURhdGFLZXknXSxcbiAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgcHJpbmNpcGFsczogW2ZuLnJvbGUhLmdyYW50UHJpbmNpcGFsXSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ2ttczpWaWFTZXJ2aWNlJzogYHNlY3JldHNtYW5hZ2VyLiR7U3RhY2sub2YodGhpcykucmVnaW9ufS5hbWF6b25hd3MuY29tYCxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGNvbnN0IHNlY3JldCA9IG5ldyBDdXN0b21SZXNvdXJjZSh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBzZXJ2aWNlVG9rZW46IGZuLmZ1bmN0aW9uQXJuLFxuICAgICAgcGFzY2FsQ2FzZVByb3BlcnRpZXM6IHRydWUsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIHJlc291cmNlVmVyc2lvbjogaGFzaEZpbGVPckRpcmVjdG9yeShjb2RlTG9jYXRpb24pLFxuICAgICAgICBpZGVudGl0eTogcHJvcHMuaWRlbnRpdHksXG4gICAgICAgIGVtYWlsOiBwcm9wcy5lbWFpbCxcbiAgICAgICAgZXhwaXJ5OiBwcm9wcy5leHBpcnksXG4gICAgICAgIGtleVNpemVCaXRzOiBwcm9wcy5rZXlTaXplQml0cyxcbiAgICAgICAgc2VjcmV0TmFtZTogcHJvcHMuc2VjcmV0TmFtZSxcbiAgICAgICAga2V5QXJuOiBwcm9wcy5lbmNyeXB0aW9uS2V5ICYmIHByb3BzLmVuY3J5cHRpb25LZXkua2V5QXJuLFxuICAgICAgICB2ZXJzaW9uOiBwcm9wcy52ZXJzaW9uLFxuICAgICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAgIGRlbGV0ZUltbWVkaWF0ZWx5OiBwcm9wcy5yZW1vdmFsUG9saWN5ID09PSBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kuREVTVFJPWV9JTU1FRElBVEVMWSxcbiAgICAgIH0sXG4gICAgICByZW1vdmFsUG9saWN5OiBvcGVuUGdwS2V5UGFpclJlbW92YWxQb2xpY3lUb0NvcmVSZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpLFxuICAgIH0pO1xuICAgIHNlY3JldC5ub2RlLmFkZERlcGVuZGVuY3koZm4pO1xuXG4gICAgdGhpcy5jcmVkZW50aWFsID0gc2VjcmV0c01hbmFnZXIuU2VjcmV0LmZyb21TZWNyZXRBdHRyaWJ1dGVzKHRoaXMsICdDcmVkZW50aWFsJywge1xuICAgICAgZW5jcnlwdGlvbktleTogcHJvcHMuZW5jcnlwdGlvbktleSxcbiAgICAgIHNlY3JldENvbXBsZXRlQXJuOiBzZWNyZXQuZ2V0QXR0KCdTZWNyZXRBcm4nKS50b1N0cmluZygpLFxuICAgIH0pO1xuICAgIHRoaXMucHJpbmNpcGFsID0gbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIodGhpcywgJ1ByaW5jaXBhbCcsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgVGhlIHB1YmxpYyBwYXJ0IG9mIHRoZSBPcGVuUEdQIGtleSBpbiAke3RoaXMuY3JlZGVudGlhbC5zZWNyZXRBcm59YCxcbiAgICAgIHBhcmFtZXRlck5hbWU6IHByb3BzLnB1YktleVBhcmFtZXRlck5hbWUsXG4gICAgICBzdHJpbmdWYWx1ZTogc2VjcmV0LmdldEF0dCgnUHVibGljS2V5JykudG9TdHJpbmcoKSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklQcmluY2lwYWwpOiB2b2lkIHtcbiAgICAvLyBTZWNyZXQgZ3JhbnQsIGlkZW50aXR5LWJhc2VkIG9ubHlcbiAgICBncmFudGVlLmFkZFRvUHJpbmNpcGFsUG9saWN5KG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIHJlc291cmNlczogW3RoaXMuY3JlZGVudGlhbC5zZWNyZXRBcm5dLFxuICAgICAgYWN0aW9uczogWydzZWNyZXRzbWFuYWdlcjpMaXN0U2VjcmV0cycsICdzZWNyZXRzbWFuYWdlcjpEZXNjcmliZVNlY3JldCcsICdzZWNyZXRzbWFuYWdlcjpHZXRTZWNyZXRWYWx1ZSddLFxuICAgIH0pKTtcblxuICAgIC8vIEtleSBncmFudFxuICAgIGlmICh0aGlzLmNyZWRlbnRpYWwuZW5jcnlwdGlvbktleSkge1xuICAgICAgZ3JhbnRlZS5hZGRUb1ByaW5jaXBhbFBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogW3RoaXMuY3JlZGVudGlhbC5lbmNyeXB0aW9uS2V5LmtleUFybl0sXG4gICAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgIH0pKTtcblxuICAgICAgdGhpcy5jcmVkZW50aWFsLmVuY3J5cHRpb25LZXkuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgIHByaW5jaXBhbHM6IFtncmFudGVlLmdyYW50UHJpbmNpcGFsXSxcbiAgICAgICAgYWN0aW9uczogWydrbXM6RGVjcnlwdCddLFxuICAgICAgfSkpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBvcGVuUGdwS2V5UGFpclJlbW92YWxQb2xpY3lUb0NvcmVSZW1vdmFsUG9saWN5KHJlbW92YWxQb2xpY3k/OiBPcGVuUEdQS2V5UGFpclJlbW92YWxQb2xpY3kpOiBSZW1vdmFsUG9saWN5IHtcbiAgaWYgKHJlbW92YWxQb2xpY3kgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBSZW1vdmFsUG9saWN5LlJFVEFJTjtcbiAgfVxuICByZXR1cm4gcmVtb3ZhbFBvbGljeSA9PT0gT3BlblBHUEtleVBhaXJSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgID8gUmVtb3ZhbFBvbGljeS5SRVRBSU5cbiAgICA6IFJlbW92YWxQb2xpY3kuREVTVFJPWTtcbn1cbiJdfQ==
@@ -1,14 +1,15 @@
1
- // tslint:disable-next-line: max-line-length
2
1
  import * as path from 'path';
3
2
  import {
4
- Construct, Duration, Stack, RemovalPolicy,
5
- aws_cloudformation as cfn,
3
+ Duration, Stack, RemovalPolicy,
4
+ CustomResource,
6
5
  aws_iam as iam,
7
6
  aws_kms as kms,
8
7
  aws_lambda as lambda,
9
8
  aws_secretsmanager as secretsManager,
10
9
  aws_ssm as ssm,
11
- } from 'monocdk';
10
+ ArnFormat,
11
+ } from 'aws-cdk-lib';
12
+ import { Construct } from 'constructs';
12
13
  import { ICredentialPair } from './credential-pair';
13
14
  import { hashFileOrDirectory } from './util';
14
15
 
@@ -136,7 +137,7 @@ export class OpenPGPKeyPair extends Construct implements ICredentialPair {
136
137
  resources: [Stack.of(this).formatArn({
137
138
  service: 'secretsmanager',
138
139
  resource: 'secret',
139
- sep: ':',
140
+ arnFormat: ArnFormat.COLON_RESOURCE_NAME,
140
141
  resourceName: `${props.secretName}-??????`,
141
142
  })],
142
143
  }));
@@ -160,8 +161,9 @@ export class OpenPGPKeyPair extends Construct implements ICredentialPair {
160
161
  }));
161
162
  }
162
163
 
163
- const secret = new cfn.CustomResource(this, 'Resource', {
164
- provider: cfn.CustomResourceProvider.lambda(fn),
164
+ const secret = new CustomResource(this, 'Resource', {
165
+ serviceToken: fn.functionArn,
166
+ pascalCaseProperties: true,
165
167
  properties: {
166
168
  resourceVersion: hashFileOrDirectory(codeLocation),
167
169
  identity: props.identity,
@@ -180,7 +182,7 @@ export class OpenPGPKeyPair extends Construct implements ICredentialPair {
180
182
 
181
183
  this.credential = secretsManager.Secret.fromSecretAttributes(this, 'Credential', {
182
184
  encryptionKey: props.encryptionKey,
183
- secretArn: secret.getAtt('SecretArn').toString(),
185
+ secretCompleteArn: secret.getAtt('SecretArn').toString(),
184
186
  });
185
187
  this.principal = new ssm.StringParameter(this, 'Principal', {
186
188
  description: `The public part of the OpenPGP key in ${this.credential.secretArn}`,
@@ -191,14 +193,14 @@ export class OpenPGPKeyPair extends Construct implements ICredentialPair {
191
193
 
192
194
  public grantRead(grantee: iam.IPrincipal): void {
193
195
  // Secret grant, identity-based only
194
- grantee.addToPolicy(new iam.PolicyStatement({
196
+ grantee.addToPrincipalPolicy(new iam.PolicyStatement({
195
197
  resources: [this.credential.secretArn],
196
198
  actions: ['secretsmanager:ListSecrets', 'secretsmanager:DescribeSecret', 'secretsmanager:GetSecretValue'],
197
199
  }));
198
200
 
199
201
  // Key grant
200
202
  if (this.credential.encryptionKey) {
201
- grantee.addToPolicy(new iam.PolicyStatement({
203
+ grantee.addToPrincipalPolicy(new iam.PolicyStatement({
202
204
  resources: [this.credential.encryptionKey.keyArn],
203
205
  actions: ['kms:Decrypt'],
204
206
  }));