@rio-cloud/cdk-v2-constructs 6.0.1 → 6.2.1
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.
- package/.jsii +48 -10
- package/CHANGELOG.md +7 -674
- package/README.md +6 -6
- package/catalog-info.yaml +13 -0
- package/{API.md → docs/API.md} +32 -0
- package/docs/changelog.md +692 -0
- package/docs/index.md +105 -0
- package/lib/contributions/smart-route/gitlab-runner/autoscaling-runner.d.ts +87 -0
- package/lib/contributions/smart-route/gitlab-runner/autoscaling-runner.js +128 -0
- package/lib/contributions/smart-route/gitlab-runner/index.d.ts +3 -0
- package/lib/contributions/smart-route/gitlab-runner/index.js +20 -0
- package/lib/contributions/smart-route/gitlab-runner/runner-roles.d.ts +20 -0
- package/lib/contributions/smart-route/gitlab-runner/runner-roles.js +330 -0
- package/lib/contributions/smart-route/gitlab-runner/spot-role.d.ts +7 -0
- package/lib/contributions/smart-route/gitlab-runner/spot-role.js +18 -0
- package/lib/kafka/kafka-topic.d.ts +7 -0
- package/lib/kafka/kafka-topic.js +17 -1
- package/mkdocs.yaml +12 -0
- package/package.json +8 -4
- package/version.json +1 -1
- /package/{CONTRIBUTION.md → docs/contribution.md} +0 -0
- /package/{developers-readme.md → docs/developers-readme.md} +0 -0
- /package/{MIGRATION_GUIDE.md → docs/migration_guide.md} +0 -0
|
@@ -0,0 +1,330 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RunnerRoles = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const aws_ecr_1 = require("aws-cdk-lib/aws-ecr");
|
|
6
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
|
+
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
|
|
8
|
+
const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
|
|
9
|
+
const constructs_1 = require("constructs");
|
|
10
|
+
const rio_landing_zone_1 = require("../../../rio-landing-zone");
|
|
11
|
+
/**
|
|
12
|
+
* This construct provides a set of base roles for gitlab runners in order to build, test, validate and deploy applications
|
|
13
|
+
* on RIO. The roles need to be assumed during job runtime to perform more permissive actions, such as creating certificates to
|
|
14
|
+
* authenticate towards the RIO MSK, pushing docker images to ECR, performing a secrets backup, deploying stacks,
|
|
15
|
+
* or to publish an SPA to a S3 bucket. Do not assume the deployment role unless needed.
|
|
16
|
+
* The base role can be the default role attached to GitLab runners.
|
|
17
|
+
* The role allows to read various basic parameters such as the NIST data mirror, the OSS license bucket, DataDog keys
|
|
18
|
+
* and to pull ECR images form public Gallery or the specified account in the environment.
|
|
19
|
+
* The Role ARNs are export using CFNOutputs. Use the outputs to configure environment variables in your GitLab group.
|
|
20
|
+
*/
|
|
21
|
+
class RunnerRoles extends constructs_1.Construct {
|
|
22
|
+
constructor(scope, id, props) {
|
|
23
|
+
super(scope, id);
|
|
24
|
+
const accountNameParameter = rio_landing_zone_1.RioLandingZone.getAccountNameParameter(scope);
|
|
25
|
+
const teamNameParameter = rio_landing_zone_1.RioLandingZone.getTeamIdentifierParameter(scope);
|
|
26
|
+
const nistMirrorParameter = aws_ssm_1.StringParameter.fromStringParameterName(this, 'NistMirrorParameter', '/config/nist-data-mirror/url');
|
|
27
|
+
const ossLicensesBucketParameter = aws_ssm_1.StringParameter.fromStringParameterAttributes(this, 'OssLicensesBucketParameter', {
|
|
28
|
+
parameterName: '/config/oss-licenses/bucket-name',
|
|
29
|
+
});
|
|
30
|
+
const ossLicensesBucket = aws_s3_1.Bucket.fromBucketName(this, 'OssLicensesBucket', ossLicensesBucketParameter.stringValue);
|
|
31
|
+
const ddApiKeyParam = aws_ssm_1.StringParameter.fromStringParameterAttributes(this, 'DataDogApiKeyParam', {
|
|
32
|
+
parameterName: '/rio/config/datadog-integration/api-key',
|
|
33
|
+
});
|
|
34
|
+
const ddSiteParam = aws_ssm_1.StringParameter.fromStringParameterAttributes(this, 'DataDogSiteParam', {
|
|
35
|
+
parameterName: '/rio/config/datadog-integration/site',
|
|
36
|
+
});
|
|
37
|
+
const kafkaIntegrationPolicy = aws_iam_1.ManagedPolicy.fromManagedPolicyArn(this, 'KafkaIntegrationPolicy', aws_cdk_lib_1.Fn.importValue('kafka-integration-policy-arn'));
|
|
38
|
+
this.runnerBaseRole = new aws_iam_1.Role(this, 'GlRunnerBuildRole', {
|
|
39
|
+
assumedBy: new aws_iam_1.ServicePrincipal('ec2.amazonaws.com', {}),
|
|
40
|
+
inlinePolicies: {
|
|
41
|
+
CdkSynthLookUp: aws_iam_1.PolicyDocument.fromJson({
|
|
42
|
+
Version: '2012-10-17',
|
|
43
|
+
Statement: [
|
|
44
|
+
{
|
|
45
|
+
Effect: 'Allow',
|
|
46
|
+
Action: ['s3:*Object', 's3:ListBucket', 's3:GetBucketLocation'],
|
|
47
|
+
Resource: ['arn:aws:s3:::cdktoolkit-*'],
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
Sid: 'assumerole',
|
|
51
|
+
Effect: 'Allow',
|
|
52
|
+
Action: ['sts:AssumeRole', 'iam:PassRole'],
|
|
53
|
+
Resource: ['arn:aws:iam::*:role/cdk-readOnlyRole', 'arn:aws:iam::*:role/cdk-hnb659fds-lookup-role-*'],
|
|
54
|
+
},
|
|
55
|
+
{
|
|
56
|
+
Sid: 'pullEcrImages',
|
|
57
|
+
Effect: 'Allow',
|
|
58
|
+
Action: [
|
|
59
|
+
'ecr:BatchCheckLayerAvailability',
|
|
60
|
+
'ecr:BatchGetImage',
|
|
61
|
+
'ecr:DescribeImages',
|
|
62
|
+
'ecr:DescribeRepositories',
|
|
63
|
+
'ecr:GetDownloadUrlForLayer',
|
|
64
|
+
],
|
|
65
|
+
Resource: [`${props.env.account}.dkr.ecr.${props.env.region}.amazonaws.com/*`],
|
|
66
|
+
},
|
|
67
|
+
],
|
|
68
|
+
}),
|
|
69
|
+
},
|
|
70
|
+
});
|
|
71
|
+
this.runnerBaseRole.node.defaultChild.overrideLogicalId('GlRunnerBuildRole');
|
|
72
|
+
nistMirrorParameter.grantRead(this.runnerBaseRole);
|
|
73
|
+
ossLicensesBucketParameter.grantRead(this.runnerBaseRole);
|
|
74
|
+
ossLicensesBucket.grantReadWrite(this.runnerBaseRole);
|
|
75
|
+
accountNameParameter.grantRead(this.runnerBaseRole);
|
|
76
|
+
teamNameParameter.grantRead(this.runnerBaseRole);
|
|
77
|
+
ddApiKeyParam.grantRead(this.runnerBaseRole);
|
|
78
|
+
ddSiteParam.grantRead(this.runnerBaseRole);
|
|
79
|
+
aws_ecr_1.PublicGalleryAuthorizationToken.grantRead(this.runnerBaseRole);
|
|
80
|
+
const webContentPublishRole = new aws_iam_1.Role(this, 'GlRunnerS3WebContentDeployRole', {
|
|
81
|
+
roleName: 'gl-runner-web-content-s3-deploy-role',
|
|
82
|
+
assumedBy: this.runnerBaseRole,
|
|
83
|
+
inlinePolicies: {
|
|
84
|
+
PublishWebContentOnS3: aws_iam_1.PolicyDocument.fromJson({
|
|
85
|
+
Version: '2012-10-17',
|
|
86
|
+
Statement: [
|
|
87
|
+
{
|
|
88
|
+
Effect: 'Allow',
|
|
89
|
+
Action: [
|
|
90
|
+
's3:Abort*',
|
|
91
|
+
's3:DeleteObject*',
|
|
92
|
+
's3:GetBucket*',
|
|
93
|
+
's3:GetObject*',
|
|
94
|
+
's3:List*',
|
|
95
|
+
's3:PutObject',
|
|
96
|
+
's3:PutObjectLegalHold',
|
|
97
|
+
's3:PutObjectRetention',
|
|
98
|
+
's3:PutObjectTagging',
|
|
99
|
+
's3:PutObjectVersionTagging',
|
|
100
|
+
],
|
|
101
|
+
Resource: ['arn:aws:s3:::*'],
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
Action: [
|
|
105
|
+
'ssm:DescribeParameters',
|
|
106
|
+
'ssm:GetParameter',
|
|
107
|
+
'ssm:GetParameterHistory',
|
|
108
|
+
'ssm:GetParameters',
|
|
109
|
+
'ssm:GetParametersByPath',
|
|
110
|
+
],
|
|
111
|
+
Effect: 'Allow',
|
|
112
|
+
Resource: [
|
|
113
|
+
`arn:aws:ssm:${props.env.region}:${props.env.account}:parameter/config/*`,
|
|
114
|
+
`arn:aws:ssm:${props.env.region}:${props.env.account}:parameter/secret/*`,
|
|
115
|
+
],
|
|
116
|
+
},
|
|
117
|
+
],
|
|
118
|
+
}),
|
|
119
|
+
},
|
|
120
|
+
});
|
|
121
|
+
webContentPublishRole.node.defaultChild.overrideLogicalId('GlRunnerS3WebContentDeployRole');
|
|
122
|
+
const createMSKCertRole = new aws_iam_1.Role(this, 'GlRunnerCreateAndSignCertRole', {
|
|
123
|
+
roleName: 'gl-runner-create-and-sign-rio-msk-cert-role',
|
|
124
|
+
assumedBy: this.runnerBaseRole,
|
|
125
|
+
inlinePolicies: {
|
|
126
|
+
ParameterStoreReadKeyStore: aws_iam_1.PolicyDocument.fromJson({
|
|
127
|
+
Version: '2012-10-17',
|
|
128
|
+
Statement: [
|
|
129
|
+
{
|
|
130
|
+
Action: [
|
|
131
|
+
'ssm:DescribeParameters',
|
|
132
|
+
'ssm:GetParameter',
|
|
133
|
+
'ssm:GetParameterHistory',
|
|
134
|
+
'ssm:GetParameters',
|
|
135
|
+
'ssm:GetParametersByPath',
|
|
136
|
+
],
|
|
137
|
+
Effect: 'Allow',
|
|
138
|
+
Resource: [
|
|
139
|
+
`arn:aws:ssm:${props.env.region}:${props.env.account}:parameter/config/*`,
|
|
140
|
+
`arn:aws:ssm:${props.env.region}:${props.env.account}:parameter/secret/*`,
|
|
141
|
+
],
|
|
142
|
+
},
|
|
143
|
+
],
|
|
144
|
+
}),
|
|
145
|
+
SecretsManagerReadKeyStore: aws_iam_1.PolicyDocument.fromJson({
|
|
146
|
+
Version: '2012-10-17',
|
|
147
|
+
Statement: [
|
|
148
|
+
{
|
|
149
|
+
Action: [
|
|
150
|
+
'secretsmanager:DescribeSecret',
|
|
151
|
+
'secretsmanager:GetSecretValue',
|
|
152
|
+
'secretsmanager:GetResourcePolicy',
|
|
153
|
+
'secretsmanager:ListSecretVersionIds',
|
|
154
|
+
],
|
|
155
|
+
Effect: 'Allow',
|
|
156
|
+
Resource: [
|
|
157
|
+
`arn:aws:secretsmanager:${props.env.region}:${props.env.account}:secret:/secret/*/service-keystore-password-??????`,
|
|
158
|
+
`arn:aws:secretsmanager:${props.env.region}:${props.env.account}:secret:/secret/*/service-keystore-password`,
|
|
159
|
+
`arn:aws:secretsmanager:${props.env.region}:${props.env.account}:secret:/config/*/service-keystore-password-??????`,
|
|
160
|
+
`arn:aws:secretsmanager:${props.env.region}:${props.env.account}:secret:/config/*/service-keystore-password`,
|
|
161
|
+
],
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
}),
|
|
165
|
+
},
|
|
166
|
+
managedPolicies: [kafkaIntegrationPolicy],
|
|
167
|
+
});
|
|
168
|
+
accountNameParameter.grantRead(createMSKCertRole);
|
|
169
|
+
teamNameParameter.grantRead(this.runnerBaseRole);
|
|
170
|
+
createMSKCertRole.node.defaultChild.overrideLogicalId('GlRunnerCreateAndSignCertRole');
|
|
171
|
+
const ecrDeployRole = new aws_iam_1.Role(this, 'GlRunnerECRDeployRole', {
|
|
172
|
+
roleName: 'gl-runner-deploy-to-ecr-role',
|
|
173
|
+
assumedBy: this.runnerBaseRole,
|
|
174
|
+
inlinePolicies: {
|
|
175
|
+
DeployToECR: aws_iam_1.PolicyDocument.fromJson({
|
|
176
|
+
Version: '2012-10-17',
|
|
177
|
+
Statement: [
|
|
178
|
+
{
|
|
179
|
+
Action: [
|
|
180
|
+
'ecr:BatchCheckLayerAvailability',
|
|
181
|
+
'ecr:BatchGetImage',
|
|
182
|
+
'ecr:CompleteLayerUpload',
|
|
183
|
+
'ecr:GetDownloadUrlForLayer',
|
|
184
|
+
'ecr:InitiateLayerUpload',
|
|
185
|
+
'ecr:PutImage',
|
|
186
|
+
'ecr:UploadLayerPart',
|
|
187
|
+
'ecr:GetAuthorizationToken',
|
|
188
|
+
'ecr:DescribeRepositories',
|
|
189
|
+
],
|
|
190
|
+
Effect: 'Allow',
|
|
191
|
+
Resource: [`${props.env.account}.dkr.ecr.${props.env.region}.amazonaws.com/*`],
|
|
192
|
+
},
|
|
193
|
+
],
|
|
194
|
+
}),
|
|
195
|
+
},
|
|
196
|
+
});
|
|
197
|
+
aws_ecr_1.PublicGalleryAuthorizationToken.grantRead(ecrDeployRole);
|
|
198
|
+
ecrDeployRole.node.defaultChild.overrideLogicalId('GlRunnerECRDeployRole');
|
|
199
|
+
const iamPolicyKMS = new aws_iam_1.PolicyStatement({
|
|
200
|
+
actions: ['kms:Decrypt'],
|
|
201
|
+
resources: ['arn:aws:kms:*:903404386550:key/*', `arn:aws:kms:*:${props.env.account}:key/*`],
|
|
202
|
+
conditions: {
|
|
203
|
+
'ForAnyValue:StringLike': {
|
|
204
|
+
'kms:ResourceAliases': 'alias/rio-lz-backup-key*',
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
});
|
|
208
|
+
const iamPolicyLambdaExecution = new aws_iam_1.PolicyStatement({
|
|
209
|
+
actions: ['lambda:InvokeFunction'],
|
|
210
|
+
resources: [`arn:aws:lambda:eu-west-1:${props.env.account}:function:SecretsRestoreHandler`],
|
|
211
|
+
});
|
|
212
|
+
const secretsBackUpRole = new aws_iam_1.Role(this, 'GlRunnerSecretsBackupRole', {
|
|
213
|
+
roleName: 'gl-runner-secrets-backup-role',
|
|
214
|
+
assumedBy: this.runnerBaseRole,
|
|
215
|
+
inlinePolicies: {
|
|
216
|
+
SecretsBackup: new aws_iam_1.PolicyDocument({ statements: [iamPolicyKMS, iamPolicyLambdaExecution] }),
|
|
217
|
+
},
|
|
218
|
+
});
|
|
219
|
+
secretsBackUpRole.node.defaultChild.overrideLogicalId('GlRunnerSecretsBackupRole');
|
|
220
|
+
const deployRole = new aws_iam_1.Role(this, 'GlRunnerCDKDeployRole', {
|
|
221
|
+
roleName: 'gl-runner-cdk-deploy-role',
|
|
222
|
+
assumedBy: this.runnerBaseRole,
|
|
223
|
+
managedPolicies: [kafkaIntegrationPolicy], // required to create Kafka topics and publish event specification in deploy jobs
|
|
224
|
+
inlinePolicies: {
|
|
225
|
+
CdkDeploy: aws_iam_1.PolicyDocument.fromJson({
|
|
226
|
+
Version: '2012-10-17',
|
|
227
|
+
Statement: [
|
|
228
|
+
{
|
|
229
|
+
Effect: 'Allow',
|
|
230
|
+
Action: [
|
|
231
|
+
'cloudformation:DescribeStacks',
|
|
232
|
+
'cloudformation:CreateChangeSet',
|
|
233
|
+
'cloudformation:DescribeChangeSet',
|
|
234
|
+
'cloudformation:ExecuteChangeSet',
|
|
235
|
+
'cloudformation:DescribeStackEvents',
|
|
236
|
+
'cloudformation:DeleteChangeSet',
|
|
237
|
+
'cloudformation:GetTemplate',
|
|
238
|
+
],
|
|
239
|
+
Resource: [`arn:aws:cloudformation:${props.env.region}:${props.env.account}:stack/*`],
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
Effect: 'Allow',
|
|
243
|
+
Action: ['s3:*Object', 's3:ListBucket', 's3:GetBucketLocation'],
|
|
244
|
+
Resource: ['arn:aws:s3:::cdktoolkit-*'],
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
Sid: 'assumerole',
|
|
248
|
+
Effect: 'Allow',
|
|
249
|
+
Action: ['sts:AssumeRole', 'iam:PassRole'],
|
|
250
|
+
Resource: [
|
|
251
|
+
'arn:aws:iam::*:role/cdk-readOnlyRole',
|
|
252
|
+
'arn:aws:iam::*:role/cdk-hnb659fds-deploy-role-*',
|
|
253
|
+
'arn:aws:iam::*:role/cdk-hnb659fds-file-publishing-*',
|
|
254
|
+
'arn:aws:iam::*:role/cdk-hnb659fds-lookup-role-*',
|
|
255
|
+
],
|
|
256
|
+
},
|
|
257
|
+
],
|
|
258
|
+
}),
|
|
259
|
+
CfnDeploy: aws_iam_1.PolicyDocument.fromJson({
|
|
260
|
+
Version: '2012-10-17',
|
|
261
|
+
Statement: [
|
|
262
|
+
{
|
|
263
|
+
Effect: 'Allow',
|
|
264
|
+
Action: ['*'],
|
|
265
|
+
Resource: [`arn:aws:cloudformation:${props.env.region}:${props.env.account}:stack/*`],
|
|
266
|
+
Condition: {
|
|
267
|
+
'ForAnyValue:StringEquals': {
|
|
268
|
+
'aws:CalledVia': 'cloudformation.amazonaws.com',
|
|
269
|
+
},
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
],
|
|
273
|
+
}),
|
|
274
|
+
},
|
|
275
|
+
});
|
|
276
|
+
deployRole.node.defaultChild.overrideLogicalId('GlRunnerCDKDeployRole');
|
|
277
|
+
const glRunnerCdkDeployRoleArn = new aws_cdk_lib_1.CfnOutput(scope, 'GlRunnerCDKDeployRoleArn', {
|
|
278
|
+
value: deployRole.roleArn,
|
|
279
|
+
exportName: 'gl-runner-cdk-deploy-role-arn',
|
|
280
|
+
});
|
|
281
|
+
glRunnerCdkDeployRoleArn.overrideLogicalId('GlRunnerCDKDeployRoleArn');
|
|
282
|
+
const glRunnerCdkDeployRoleName = new aws_cdk_lib_1.CfnOutput(scope, 'GlRunnerCDKDeployRoleName', {
|
|
283
|
+
value: deployRole.roleName,
|
|
284
|
+
exportName: 'gl-runner-cdk-deploy-role-name',
|
|
285
|
+
});
|
|
286
|
+
glRunnerCdkDeployRoleName.overrideLogicalId('GlRunnerCDKDeployRoleName');
|
|
287
|
+
const glRunnerCdkCreateAndSignCertRoleName = new aws_cdk_lib_1.CfnOutput(scope, 'GlRunnerCDKCreateAndSignCertRoleName', {
|
|
288
|
+
value: createMSKCertRole.roleName,
|
|
289
|
+
exportName: 'gl-runner-cdk-create-and-sign-msk-cert-role-name',
|
|
290
|
+
});
|
|
291
|
+
glRunnerCdkCreateAndSignCertRoleName.overrideLogicalId('GlRunnerCDKCreateAndSignCertRoleName');
|
|
292
|
+
const glRunnerCdkCreateAndSignCertRoleArn = new aws_cdk_lib_1.CfnOutput(scope, 'GlRunnerCDKCreateAndSignCertRoleArn', {
|
|
293
|
+
value: createMSKCertRole.roleArn,
|
|
294
|
+
exportName: 'gl-runner-cdk-create-and-sign-msk-cert-role-arn',
|
|
295
|
+
});
|
|
296
|
+
glRunnerCdkCreateAndSignCertRoleArn.overrideLogicalId('GlRunnerCDKCreateAndSignCertRoleArn');
|
|
297
|
+
const glRunnerCdkPublishWebContentRoleName = new aws_cdk_lib_1.CfnOutput(scope, 'GlRunnerCDKPublishWebContentRoleName', {
|
|
298
|
+
value: webContentPublishRole.roleName,
|
|
299
|
+
exportName: 'gl-runner-cdk-publish-web-content-on-s3-role-name',
|
|
300
|
+
});
|
|
301
|
+
glRunnerCdkPublishWebContentRoleName.overrideLogicalId('GlRunnerCDKPublishWebContentRoleName');
|
|
302
|
+
const glRunnerCdkPublishWebContentRoleArn = new aws_cdk_lib_1.CfnOutput(scope, 'GlRunnerCDKPublishWebContentRoleArn', {
|
|
303
|
+
value: webContentPublishRole.roleArn,
|
|
304
|
+
exportName: 'gl-runner-cdk-publish-web-content-on-s3-role-arn',
|
|
305
|
+
});
|
|
306
|
+
glRunnerCdkPublishWebContentRoleArn.overrideLogicalId('GlRunnerCDKPublishWebContentRoleArn');
|
|
307
|
+
const glRunnerCdkDeployToEcrRoleName = new aws_cdk_lib_1.CfnOutput(scope, 'GlRunnerCDKDeployToEcrRoleName', {
|
|
308
|
+
value: ecrDeployRole.roleName,
|
|
309
|
+
exportName: 'gl-runner-cdk-deploy-to-ecr-role-name',
|
|
310
|
+
});
|
|
311
|
+
glRunnerCdkDeployToEcrRoleName.overrideLogicalId('GlRunnerCDKDeployToEcrRoleName');
|
|
312
|
+
const glRunnerCdkDeployToEcrRoleArn = new aws_cdk_lib_1.CfnOutput(scope, 'GlRunnerCDKDeployToEcrRoleArn', {
|
|
313
|
+
value: ecrDeployRole.roleArn,
|
|
314
|
+
exportName: 'gl-runner-cdk-deploy-to-ecr-role-arn',
|
|
315
|
+
});
|
|
316
|
+
glRunnerCdkDeployToEcrRoleArn.overrideLogicalId('GlRunnerCDKDeployToEcrRoleArn');
|
|
317
|
+
const glRunnerCdkSecretsBackupRoleName = new aws_cdk_lib_1.CfnOutput(scope, 'GlRunnerCDKSecretsBackupRoleName', {
|
|
318
|
+
value: secretsBackUpRole.roleName,
|
|
319
|
+
exportName: 'gl-runner-cdk-secrets-backup-role-name',
|
|
320
|
+
});
|
|
321
|
+
glRunnerCdkSecretsBackupRoleName.overrideLogicalId('GlRunnerCDKSecretsBackupRoleName');
|
|
322
|
+
const glRunnerCdkSecretsBackupRoleArn = new aws_cdk_lib_1.CfnOutput(scope, 'GlRunnerCDKSecretsBackupRoleArn', {
|
|
323
|
+
value: secretsBackUpRole.roleArn,
|
|
324
|
+
exportName: 'gl-runner-cdk-secrets-backup-role-arn',
|
|
325
|
+
});
|
|
326
|
+
glRunnerCdkSecretsBackupRoleArn.overrideLogicalId('GlRunnerCDKSecretsBackupRoleArn');
|
|
327
|
+
}
|
|
328
|
+
}
|
|
329
|
+
exports.RunnerRoles = RunnerRoles;
|
|
330
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLXJvbGVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvc21hcnQtcm91dGUvZ2l0bGFiLXJ1bm5lci9ydW5uZXItcm9sZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWdFO0FBQ2hFLGlEQUFzRTtBQUN0RSxpREFPNkI7QUFDN0IsK0NBQTRDO0FBQzVDLGlEQUFzRDtBQUN0RCwyQ0FBdUM7QUFDdkMsZ0VBQTJEO0FBTTNEOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsV0FBWSxTQUFRLHNCQUFTO0lBRXhDLFlBQVksS0FBWSxFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLE1BQU0sb0JBQW9CLEdBQUcsaUNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMzRSxNQUFNLGlCQUFpQixHQUFHLGlDQUFjLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFM0UsTUFBTSxtQkFBbUIsR0FBRyx5QkFBZSxDQUFDLHVCQUF1QixDQUNqRSxJQUFJLEVBQ0oscUJBQXFCLEVBQ3JCLDhCQUE4QixDQUMvQixDQUFDO1FBRUYsTUFBTSwwQkFBMEIsR0FBRyx5QkFBZSxDQUFDLDZCQUE2QixDQUM5RSxJQUFJLEVBQ0osNEJBQTRCLEVBQzVCO1lBQ0UsYUFBYSxFQUFFLGtDQUFrQztTQUNsRCxDQUNGLENBQUM7UUFDRixNQUFNLGlCQUFpQixHQUFHLGVBQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLDBCQUEwQixDQUFDLFdBQVcsQ0FBQyxDQUFDO1FBRW5ILE1BQU0sYUFBYSxHQUFHLHlCQUFlLENBQUMsNkJBQTZCLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQzlGLGFBQWEsRUFBRSx5Q0FBeUM7U0FDekQsQ0FBQyxDQUFDO1FBQ0gsTUFB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O1lBQzVGLEtBQUssRUFBRSxhQUFhLENBQUMsUUFBUTtZQUM3QixVQUFVLEVBQUUsdUNBQXVDO1NBQ3BELENBQUMsQ0FBQztRQUNILDhCQUE4QixDQUFDLGlCQUFpQixDQUFDLGdDQUFnQyxDQUFDLENBQUM7UUFDbkYsTUFBTSw2QkFBNkIsR0FBRyxJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLCtCQUErQixFQUFFO1lBQzFGLEtBQUssRUFBRSxhQUFhLENBQUMsT0FBTztZQUM1QixVQUFVLEVBQUUsc0NBQXNDO1NBQ25ELENBQUMsQ0FBQztRQUNILDZCQUE2QixDQUFDLGlCQUFpQixDQUFDLCtCQUErQixDQUFDLENBQUM7UUFFakYsTUFBTSxnQ0FBZ0MsR0FBRyxJQUFJLHVCQUFTLENBQUMsS0FBSyxFQUFFLGtDQUFrQyxFQUFFO1lBQ2hHLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxRQUFRO1lBQ2pDLFVBQVUsRUFBRSx3Q0FBd0M7U0FDckQsQ0FBQyxDQUFDO1FBQ0gsZ0NBQWdDLENBQUMsaUJBQWlCLENBQUMsa0NBQWtDLENBQUMsQ0FBQztRQUN2RixNQUFNLCtCQUErQixHQUFHLElBQUksdUJBQVMsQ0FBQyxLQUFLLEVBQUUsaUNBQWlDLEVBQUU7WUFDOUYsS0FBSyxFQUFFLGlCQUFpQixDQUFDLE9BQU87WUFDaEMsVUFBVSxFQUFFLHVDQUF1QztTQUNwRCxDQUFDLENBQUM7UUFDSCwrQkFBK0IsQ0FBQyxpQkFBaUIsQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFDO0lBQ3ZGLENBQUM7Q0FDRjtBQS9VRCxrQ0ErVUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIEVudmlyb25tZW50LCBGbiwgU3RhY2sgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBQdWJsaWNHYWxsZXJ5QXV0aG9yaXphdGlvblRva2VuIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQge1xuICBDZm5Sb2xlLFxuICBNYW5hZ2VkUG9saWN5LFxuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBSb2xlLFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IEJ1Y2tldCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBTdHJpbmdQYXJhbWV0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUmlvTGFuZGluZ1pvbmUgfSBmcm9tICcuLi8uLi8uLi9yaW8tbGFuZGluZy16b25lJztcblxuZXhwb3J0IGludGVyZmFjZSBSdW5uZXJSb2xlUHJvcHMge1xuICBlbnY6IEVudmlyb25tZW50O1xufVxuXG4vKipcbiAqIFRoaXMgY29uc3RydWN0IHByb3ZpZGVzIGEgc2V0IG9mIGJhc2Ugcm9sZXMgZm9yIGdpdGxhYiBydW5uZXJzIGluIG9yZGVyIHRvIGJ1aWxkLCB0ZXN0LCB2YWxpZGF0ZSBhbmQgZGVwbG95IGFwcGxpY2F0aW9uc1xuICogb24gUklPLiBUaGUgcm9sZXMgbmVlZCB0byBiZSBhc3N1bWVkIGR1cmluZyBqb2IgcnVudGltZSB0byBwZXJmb3JtIG1vcmUgcGVybWlzc2l2ZSBhY3Rpb25zLCBzdWNoIGFzIGNyZWF0aW5nIGNlcnRpZmljYXRlcyB0b1xuICogYXV0aGVudGljYXRlIHRvd2FyZHMgdGhlIFJJTyBNU0ssIHB1c2hpbmcgZG9ja2VyIGltYWdlcyB0byBFQ1IsIHBlcmZvcm1pbmcgYSBzZWNyZXRzIGJhY2t1cCwgZGVwbG95aW5nIHN0YWNrcyxcbiAqIG9yIHRvIHB1Ymxpc2ggYW4gU1BBIHRvIGEgUzMgYnVja2V0LiBEbyBub3QgYXNzdW1lIHRoZSBkZXBsb3ltZW50IHJvbGUgdW5sZXNzIG5lZWRlZC5cbiAqIFRoZSBiYXNlIHJvbGUgY2FuIGJlIHRoZSBkZWZhdWx0IHJvbGUgYXR0YWNoZWQgdG8gR2l0TGFiIHJ1bm5lcnMuXG4gKiBUaGUgcm9sZSBhbGxvd3MgdG8gcmVhZCB2YXJpb3VzIGJhc2ljIHBhcmFtZXRlcnMgc3VjaCBhcyB0aGUgTklTVCBkYXRhIG1pcnJvciwgdGhlIE9TUyBsaWNlbnNlIGJ1Y2tldCwgRGF0YURvZyBrZXlzXG4gKiBhbmQgdG8gcHVsbCBFQ1IgaW1hZ2VzIGZvcm0gcHVibGljIEdhbGxlcnkgb3IgdGhlIHNwZWNpZmllZCBhY2NvdW50IGluIHRoZSBlbnZpcm9ubWVudC5cbiAqIFRoZSBSb2xlIEFSTnMgYXJlIGV4cG9ydCB1c2luZyBDRk5PdXRwdXRzLiBVc2UgdGhlIG91dHB1dHMgdG8gY29uZmlndXJlIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbiB5b3VyIEdpdExhYiBncm91cC5cbiAqL1xuZXhwb3J0IGNsYXNzIFJ1bm5lclJvbGVzIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgcnVubmVyQmFzZVJvbGU6IFJvbGU7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBTdGFjaywgaWQ6IHN0cmluZywgcHJvcHM6IFJ1bm5lclJvbGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgY29uc3QgYWNjb3VudE5hbWVQYXJhbWV0ZXIgPSBSaW9MYW5kaW5nWm9uZS5nZXRBY2NvdW50TmFtZVBhcmFtZXRlcihzY29wZSk7XG4gICAgY29uc3QgdGVhbU5hbWVQYXJhbWV0ZXIgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtSWRlbnRpZmllclBhcmFtZXRlcihzY29wZSk7XG5cbiAgICBjb25zdCBuaXN0TWlycm9yUGFyYW1ldGVyID0gU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgdGhpcyxcbiAgICAgICdOaXN0TWlycm9yUGFyYW1ldGVyJyxcbiAgICAgICcvY29uZmlnL25pc3QtZGF0YS1taXJyb3IvdXJsJyxcbiAgICApO1xuXG4gICAgY29uc3Qgb3NzTGljZW5zZXNCdWNrZXRQYXJhbWV0ZXIgPSBTdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlckF0dHJpYnV0ZXMoXG4gICAgICB0aGlzLFxuICAgICAgJ09zc0xpY2Vuc2VzQnVja2V0UGFyYW1ldGVyJyxcbiAgICAgIHtcbiAgICAgICAgcGFyYW1ldGVyTmFtZTogJy9jb25maWcvb3NzLWxpY2Vuc2VzL2J1Y2tldC1uYW1lJyxcbiAgICAgIH0sXG4gICAgKTtcbiAgICBjb25zdCBvc3NMaWNlbnNlc0J1Y2tldCA9IEJ1Y2tldC5mcm9tQnVja2V0TmFtZSh0aGlzLCAnT3NzTGljZW5zZXNCdWNrZXQnLCBvc3NMaWNlbnNlc0J1Y2tldFBhcmFtZXRlci5zdHJpbmdWYWx1ZSk7XG5cbiAgICBjb25zdCBkZEFwaUtleVBhcmFtID0gU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJBdHRyaWJ1dGVzKHRoaXMsICdEYXRhRG9nQXBpS2V5UGFyYW0nLCB7XG4gICAgICBwYXJhbWV0ZXJOYW1lOiAnL3Jpby9jb25maWcvZGF0YWRvZy1pbnRlZ3JhdGlvbi9hcGkta2V5JyxcbiAgICB9KTtcbiAgICBjb25zdCBkZFNpdGVQYXJhbSA9IFN0cmluZ1BhcmFtZXRlci5mcm9tU3RyaW5nUGFyYW1ldGVyQXR0cmlidXRlcyh0aGlzLCAnRGF0YURvZ1NpdGVQYXJhbScsIHtcbiAgICAgIHBhcmFtZXRlck5hbWU6ICcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL3NpdGUnLFxuICAgIH0pO1xuXG4gICAgY29uc3Qga2Fma2FJbnRlZ3JhdGlvblBvbGljeSA9IE1hbmFnZWRQb2xpY3kuZnJvbU1hbmFnZWRQb2xpY3lBcm4oXG4gICAgICB0aGlzLFxuICAgICAgJ0thZmthSW50ZWdyYXRpb25Qb2xpY3knLFxuICAgICAgRm4uaW1wb3J0VmFsdWUoJ2thZmthLWludGVncmF0aW9uLXBvbGljeS1hcm4nKSxcbiAgICApO1xuXG4gICAgdGhpcy5ydW5uZXJCYXNlUm9sZSA9IG5ldyBSb2xlKHRoaXMsICdHbFJ1bm5lckJ1aWxkUm9sZScsIHtcbiAgICAgIGFzc3VtZWRCeTogbmV3IFNlcnZpY2VQcmluY2lwYWwoJ2VjMi5hbWF6b25hd3MuY29tJywge30pLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgQ2RrU3ludGhMb29rVXA6IFBvbGljeURvY3VtZW50LmZyb21Kc29uKHtcbiAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgICAgQWN0aW9uOiBbJ3MzOipPYmplY3QnLCAnczM6TGlzdEJ1Y2tldCcsICdzMzpHZXRCdWNrZXRMb2NhdGlvbiddLFxuICAgICAgICAgICAgICBSZXNvdXJjZTogWydhcm46YXdzOnMzOjo6Y2RrdG9vbGtpdC0qJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBTaWQ6ICdhc3N1bWVyb2xlJyxcbiAgICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgICBBY3Rpb246IFsnc3RzOkFzc3VtZVJvbGUnLCAnaWFtOlBhc3NSb2xlJ10sXG4gICAgICAgICAgICAgIFJlc291cmNlOiBbJ2Fybjphd3M6aWFtOjoqOnJvbGUvY2RrLXJlYWRPbmx5Um9sZScsICdhcm46YXdzOmlhbTo6Kjpyb2xlL2Nkay1obmI2NTlmZHMtbG9va3VwLXJvbGUtKiddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgU2lkOiAncHVsbEVjckltYWdlcycsXG4gICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgICAgQWN0aW9uOiBbXG4gICAgICAgICAgICAgICAgJ2VjcjpCYXRjaENoZWNrTGF5ZXJBdmFpbGFiaWxpdHknLFxuICAgICAgICAgICAgICAgICdlY3I6QmF0Y2hHZXRJbWFnZScsXG4gICAgICAgICAgICAgICAgJ2VjcjpEZXNjcmliZUltYWdlcycsXG4gICAgICAgICAgICAgICAgJ2VjcjpEZXNjcmliZVJlcG9zaXRvcmllcycsXG4gICAgICAgICAgICAgICAgJ2VjcjpHZXREb3dubG9hZFVybEZvckxheWVyJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IFtgJHtwcm9wcy5lbnYuYWNjb3VudH0uZGtyLmVjci4ke3Byb3BzLmVudi5yZWdpb259LmFtYXpvbmF3cy5jb20vKmBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgKHRoaXMucnVubmVyQmFzZVJvbGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuUm9sZSkub3ZlcnJpZGVMb2dpY2FsSWQoJ0dsUnVubmVyQnVpbGRSb2xlJyk7XG4gICAgbmlzdE1pcnJvclBhcmFtZXRlci5ncmFudFJlYWQodGhpcy5ydW5uZXJCYXNlUm9sZSk7XG4gICAgb3NzTGljZW5zZXNCdWNrZXRQYXJhbWV0ZXIuZ3JhbnRSZWFkKHRoaXMucnVubmVyQmFzZVJvbGUpO1xuICAgIG9zc0xpY2Vuc2VzQnVja2V0LmdyYW50UmVhZFdyaXRlKHRoaXMucnVubmVyQmFzZVJvbGUpO1xuICAgIGFjY291bnROYW1lUGFyYW1ldGVyLmdyYW50UmVhZCh0aGlzLnJ1bm5lckJhc2VSb2xlKTtcbiAgICB0ZWFtTmFtZVBhcmFtZXRlci5ncmFudFJlYWQodGhpcy5ydW5uZXJCYXNlUm9sZSk7XG4gICAgZGRBcGlLZXlQYXJhbS5ncmFudFJlYWQodGhpcy5ydW5uZXJCYXNlUm9sZSk7XG4gICAgZGRTaXRlUGFyYW0uZ3JhbnRSZWFkKHRoaXMucnVubmVyQmFzZVJvbGUpO1xuICAgIFB1YmxpY0dhbGxlcnlBdXRob3JpemF0aW9uVG9rZW4uZ3JhbnRSZWFkKHRoaXMucnVubmVyQmFzZVJvbGUpO1xuXG4gICAgY29uc3Qgd2ViQ29udGVudFB1Ymxpc2hSb2xlID0gbmV3IFJvbGUodGhpcywgJ0dsUnVubmVyUzNXZWJDb250ZW50RGVwbG95Um9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAnZ2wtcnVubmVyLXdlYi1jb250ZW50LXMzLWRlcGxveS1yb2xlJyxcbiAgICAgIGFzc3VtZWRCeTogdGhpcy5ydW5uZXJCYXNlUm9sZSxcbiAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgIFB1Ymxpc2hXZWJDb250ZW50T25TMzogUG9saWN5RG9jdW1lbnQuZnJvbUpzb24oe1xuICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3JyxcbiAgICAgICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgICBBY3Rpb246IFtcbiAgICAgICAgICAgICAgICAnczM6QWJvcnQqJyxcbiAgICAgICAgICAgICAgICAnczM6RGVsZXRlT2JqZWN0KicsXG4gICAgICAgICAgICAgICAgJ3MzOkdldEJ1Y2tldConLFxuICAgICAgICAgICAgICAgICdzMzpHZXRPYmplY3QqJyxcbiAgICAgICAgICAgICAgICAnczM6TGlzdConLFxuICAgICAgICAgICAgICAgICdzMzpQdXRPYmplY3QnLFxuICAgICAgICAgICAgICAgICdzMzpQdXRPYmplY3RMZWdhbEhvbGQnLFxuICAgICAgICAgICAgICAgICdzMzpQdXRPYmplY3RSZXRlbnRpb24nLFxuICAgICAgICAgICAgICAgICdzMzpQdXRPYmplY3RUYWdnaW5nJyxcbiAgICAgICAgICAgICAgICAnczM6UHV0T2JqZWN0VmVyc2lvblRhZ2dpbmcnLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICBSZXNvdXJjZTogWydhcm46YXdzOnMzOjo6KiddLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBbXG4gICAgICAgICAgICAgICAgJ3NzbTpEZXNjcmliZVBhcmFtZXRlcnMnLFxuICAgICAgICAgICAgICAgICdzc206R2V0UGFyYW1ldGVyJyxcbiAgICAgICAgICAgICAgICAnc3NtOkdldFBhcmFtZXRlckhpc3RvcnknLFxuICAgICAgICAgICAgICAgICdzc206R2V0UGFyYW1ldGVycycsXG4gICAgICAgICAgICAgICAgJ3NzbTpHZXRQYXJhbWV0ZXJzQnlQYXRoJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgICBSZXNvdXJjZTogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOnNzbToke3Byb3BzLmVudi5yZWdpb259OiR7cHJvcHMuZW52LmFjY291bnR9OnBhcmFtZXRlci9jb25maWcvKmAsXG4gICAgICAgICAgICAgICAgYGFybjphd3M6c3NtOiR7cHJvcHMuZW52LnJlZ2lvbn06JHtwcm9wcy5lbnYuYWNjb3VudH06cGFyYW1ldGVyL3NlY3JldC8qYCxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgXSxcbiAgICAgICAgfSksXG4gICAgICB9LFxuICAgIH0pO1xuICAgICh3ZWJDb250ZW50UHVibGlzaFJvbGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuUm9sZSkub3ZlcnJpZGVMb2dpY2FsSWQoJ0dsUnVubmVyUzNXZWJDb250ZW50RGVwbG95Um9sZScpO1xuXG4gICAgY29uc3QgY3JlYXRlTVNLQ2VydFJvbGUgPSBuZXcgUm9sZSh0aGlzLCAnR2xSdW5uZXJDcmVhdGVBbmRTaWduQ2VydFJvbGUnLCB7XG4gICAgICByb2xlTmFtZTogJ2dsLXJ1bm5lci1jcmVhdGUtYW5kLXNpZ24tcmlvLW1zay1jZXJ0LXJvbGUnLFxuICAgICAgYXNzdW1lZEJ5OiB0aGlzLnJ1bm5lckJhc2VSb2xlLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgUGFyYW1ldGVyU3RvcmVSZWFkS2V5U3RvcmU6IFBvbGljeURvY3VtZW50LmZyb21Kc29uKHtcbiAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEFjdGlvbjogW1xuICAgICAgICAgICAgICAgICdzc206RGVzY3JpYmVQYXJhbWV0ZXJzJyxcbiAgICAgICAgICAgICAgICAnc3NtOkdldFBhcmFtZXRlcicsXG4gICAgICAgICAgICAgICAgJ3NzbTpHZXRQYXJhbWV0ZXJIaXN0b3J5JyxcbiAgICAgICAgICAgICAgICAnc3NtOkdldFBhcmFtZXRlcnMnLFxuICAgICAgICAgICAgICAgICdzc206R2V0UGFyYW1ldGVyc0J5UGF0aCcsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IFtcbiAgICAgICAgICAgICAgICBgYXJuOmF3czpzc206JHtwcm9wcy5lbnYucmVnaW9ufToke3Byb3BzLmVudi5hY2NvdW50fTpwYXJhbWV0ZXIvY29uZmlnLypgLFxuICAgICAgICAgICAgICAgIGBhcm46YXdzOnNzbToke3Byb3BzLmVudi5yZWdpb259OiR7cHJvcHMuZW52LmFjY291bnR9OnBhcmFtZXRlci9zZWNyZXQvKmAsXG4gICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgICBTZWNyZXRzTWFuYWdlclJlYWRLZXlTdG9yZTogUG9saWN5RG9jdW1lbnQuZnJvbUpzb24oe1xuICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3JyxcbiAgICAgICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBbXG4gICAgICAgICAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkRlc2NyaWJlU2VjcmV0JyxcbiAgICAgICAgICAgICAgICAnc2VjcmV0c21hbmFnZXI6R2V0U2VjcmV0VmFsdWUnLFxuICAgICAgICAgICAgICAgICdzZWNyZXRzbWFuYWdlcjpHZXRSZXNvdXJjZVBvbGljeScsXG4gICAgICAgICAgICAgICAgJ3NlY3JldHNtYW5hZ2VyOkxpc3RTZWNyZXRWZXJzaW9uSWRzJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgICBSZXNvdXJjZTogW1xuICAgICAgICAgICAgICAgIGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7cHJvcHMuZW52LnJlZ2lvbn06JHtwcm9wcy5lbnYuYWNjb3VudH06c2VjcmV0Oi9zZWNyZXQvKi9zZXJ2aWNlLWtleXN0b3JlLXBhc3N3b3JkLT8/Pz8/P2AsXG4gICAgICAgICAgICAgICAgYGFybjphd3M6c2VjcmV0c21hbmFnZXI6JHtwcm9wcy5lbnYucmVnaW9ufToke3Byb3BzLmVudi5hY2NvdW50fTpzZWNyZXQ6L3NlY3JldC8qL3NlcnZpY2Uta2V5c3RvcmUtcGFzc3dvcmRgLFxuICAgICAgICAgICAgICAgIGBhcm46YXdzOnNlY3JldHNtYW5hZ2VyOiR7cHJvcHMuZW52LnJlZ2lvbn06JHtwcm9wcy5lbnYuYWNjb3VudH06c2VjcmV0Oi9jb25maWcvKi9zZXJ2aWNlLWtleXN0b3JlLXBhc3N3b3JkLT8/Pz8/P2AsXG4gICAgICAgICAgICAgICAgYGFybjphd3M6c2VjcmV0c21hbmFnZXI6JHtwcm9wcy5lbnYucmVnaW9ufToke3Byb3BzLmVudi5hY2NvdW50fTpzZWNyZXQ6L2NvbmZpZy8qL3NlcnZpY2Uta2V5c3RvcmUtcGFzc3dvcmRgLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtrYWZrYUludGVncmF0aW9uUG9saWN5XSxcbiAgICB9KTtcbiAgICBhY2NvdW50TmFtZVBhcmFtZXRlci5ncmFudFJlYWQoY3JlYXRlTVNLQ2VydFJvbGUpO1xuICAgIHRlYW1OYW1lUGFyYW1ldGVyLmdyYW50UmVhZCh0aGlzLnJ1bm5lckJhc2VSb2xlKTtcbiAgICAoY3JlYXRlTVNLQ2VydFJvbGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuUm9sZSkub3ZlcnJpZGVMb2dpY2FsSWQoJ0dsUnVubmVyQ3JlYXRlQW5kU2lnbkNlcnRSb2xlJyk7XG5cbiAgICBjb25zdCBlY3JEZXBsb3lSb2xlID0gbmV3IFJvbGUodGhpcywgJ0dsUnVubmVyRUNSRGVwbG95Um9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAnZ2wtcnVubmVyLWRlcGxveS10by1lY3Itcm9sZScsXG4gICAgICBhc3N1bWVkQnk6IHRoaXMucnVubmVyQmFzZVJvbGUsXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBEZXBsb3lUb0VDUjogUG9saWN5RG9jdW1lbnQuZnJvbUpzb24oe1xuICAgICAgICAgIFZlcnNpb246ICcyMDEyLTEwLTE3JyxcbiAgICAgICAgICBTdGF0ZW1lbnQ6IFtcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQWN0aW9uOiBbXG4gICAgICAgICAgICAgICAgJ2VjcjpCYXRjaENoZWNrTGF5ZXJBdmFpbGFiaWxpdHknLFxuICAgICAgICAgICAgICAgICdlY3I6QmF0Y2hHZXRJbWFnZScsXG4gICAgICAgICAgICAgICAgJ2VjcjpDb21wbGV0ZUxheWVyVXBsb2FkJyxcbiAgICAgICAgICAgICAgICAnZWNyOkdldERvd25sb2FkVXJsRm9yTGF5ZXInLFxuICAgICAgICAgICAgICAgICdlY3I6SW5pdGlhdGVMYXllclVwbG9hZCcsXG4gICAgICAgICAgICAgICAgJ2VjcjpQdXRJbWFnZScsXG4gICAgICAgICAgICAgICAgJ2VjcjpVcGxvYWRMYXllclBhcnQnLFxuICAgICAgICAgICAgICAgICdlY3I6R2V0QXV0aG9yaXphdGlvblRva2VuJyxcbiAgICAgICAgICAgICAgICAnZWNyOkRlc2NyaWJlUmVwb3NpdG9yaWVzJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgICBSZXNvdXJjZTogW2Ake3Byb3BzLmVudi5hY2NvdW50fS5ka3IuZWNyLiR7cHJvcHMuZW52LnJlZ2lvbn0uYW1hem9uYXdzLmNvbS8qYF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgIH0pLFxuICAgICAgfSxcbiAgICB9KTtcbiAgICBQdWJsaWNHYWxsZXJ5QXV0aG9yaXphdGlvblRva2VuLmdyYW50UmVhZChlY3JEZXBsb3lSb2xlKTtcbiAgICAoZWNyRGVwbG95Um9sZS5ub2RlLmRlZmF1bHRDaGlsZCBhcyBDZm5Sb2xlKS5vdmVycmlkZUxvZ2ljYWxJZCgnR2xSdW5uZXJFQ1JEZXBsb3lSb2xlJyk7XG5cbiAgICBjb25zdCBpYW1Qb2xpY3lLTVMgPSBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgIGFjdGlvbnM6IFsna21zOkRlY3J5cHQnXSxcbiAgICAgIHJlc291cmNlczogWydhcm46YXdzOmttczoqOjkwMzQwNDM4NjU1MDprZXkvKicsIGBhcm46YXdzOmttczoqOiR7cHJvcHMuZW52LmFjY291bnR9OmtleS8qYF0sXG4gICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICdGb3JBbnlWYWx1ZTpTdHJpbmdMaWtlJzoge1xuICAgICAgICAgICdrbXM6UmVzb3VyY2VBbGlhc2VzJzogJ2FsaWFzL3Jpby1sei1iYWNrdXAta2V5KicsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH0pO1xuICAgIGNvbnN0IGlhbVBvbGljeUxhbWJkYUV4ZWN1dGlvbiA9IG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgYWN0aW9uczogWydsYW1iZGE6SW52b2tlRnVuY3Rpb24nXSxcbiAgICAgIHJlc291cmNlczogW2Bhcm46YXdzOmxhbWJkYTpldS13ZXN0LTE6JHtwcm9wcy5lbnYuYWNjb3VudH06ZnVuY3Rpb246U2VjcmV0c1Jlc3RvcmVIYW5kbGVyYF0sXG4gICAgfSk7XG4gICAgY29uc3Qgc2VjcmV0c0JhY2tVcFJvbGUgPSBuZXcgUm9sZSh0aGlzLCAnR2xSdW5uZXJTZWNyZXRzQmFja3VwUm9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAnZ2wtcnVubmVyLXNlY3JldHMtYmFja3VwLXJvbGUnLFxuICAgICAgYXNzdW1lZEJ5OiB0aGlzLnJ1bm5lckJhc2VSb2xlLFxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcbiAgICAgICAgU2VjcmV0c0JhY2t1cDogbmV3IFBvbGljeURvY3VtZW50KHsgc3RhdGVtZW50czogW2lhbVBvbGljeUtNUywgaWFtUG9saWN5TGFtYmRhRXhlY3V0aW9uXSB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgKHNlY3JldHNCYWNrVXBSb2xlLm5vZGUuZGVmYXVsdENoaWxkIGFzIENmblJvbGUpLm92ZXJyaWRlTG9naWNhbElkKCdHbFJ1bm5lclNlY3JldHNCYWNrdXBSb2xlJyk7XG5cbiAgICBjb25zdCBkZXBsb3lSb2xlID0gbmV3IFJvbGUodGhpcywgJ0dsUnVubmVyQ0RLRGVwbG95Um9sZScsIHtcbiAgICAgIHJvbGVOYW1lOiAnZ2wtcnVubmVyLWNkay1kZXBsb3ktcm9sZScsXG4gICAgICBhc3N1bWVkQnk6IHRoaXMucnVubmVyQmFzZVJvbGUsXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtrYWZrYUludGVncmF0aW9uUG9saWN5XSwgLy8gcmVxdWlyZWQgdG8gY3JlYXRlIEthZmthIHRvcGljcyBhbmQgcHVibGlzaCBldmVudCBzcGVjaWZpY2F0aW9uIGluIGRlcGxveSBqb2JzXG4gICAgICBpbmxpbmVQb2xpY2llczoge1xuICAgICAgICBDZGtEZXBsb3k6IFBvbGljeURvY3VtZW50LmZyb21Kc29uKHtcbiAgICAgICAgICBWZXJzaW9uOiAnMjAxMi0xMC0xNycsXG4gICAgICAgICAgU3RhdGVtZW50OiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgICAgQWN0aW9uOiBbXG4gICAgICAgICAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlc2NyaWJlU3RhY2tzJyxcbiAgICAgICAgICAgICAgICAnY2xvdWRmb3JtYXRpb246Q3JlYXRlQ2hhbmdlU2V0JyxcbiAgICAgICAgICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVzY3JpYmVDaGFuZ2VTZXQnLFxuICAgICAgICAgICAgICAgICdjbG91ZGZvcm1hdGlvbjpFeGVjdXRlQ2hhbmdlU2V0JyxcbiAgICAgICAgICAgICAgICAnY2xvdWRmb3JtYXRpb246RGVzY3JpYmVTdGFja0V2ZW50cycsXG4gICAgICAgICAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkRlbGV0ZUNoYW5nZVNldCcsXG4gICAgICAgICAgICAgICAgJ2Nsb3VkZm9ybWF0aW9uOkdldFRlbXBsYXRlJyxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgUmVzb3VyY2U6IFtgYXJuOmF3czpjbG91ZGZvcm1hdGlvbjoke3Byb3BzLmVudi5yZWdpb259OiR7cHJvcHMuZW52LmFjY291bnR9OnN0YWNrLypgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIEVmZmVjdDogJ0FsbG93JyxcbiAgICAgICAgICAgICAgQWN0aW9uOiBbJ3MzOipPYmplY3QnLCAnczM6TGlzdEJ1Y2tldCcsICdzMzpHZXRCdWNrZXRMb2NhdGlvbiddLFxuICAgICAgICAgICAgICBSZXNvdXJjZTogWydhcm46YXdzOnMzOjo6Y2RrdG9vbGtpdC0qJ10sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBTaWQ6ICdhc3N1bWVyb2xlJyxcbiAgICAgICAgICAgICAgRWZmZWN0OiAnQWxsb3cnLFxuICAgICAgICAgICAgICBBY3Rpb246IFsnc3RzOkFzc3VtZVJvbGUnLCAnaWFtOlBhc3NSb2xlJ10sXG4gICAgICAgICAgICAgIFJlc291cmNlOiBbXG4gICAgICAgICAgICAgICAgJ2Fybjphd3M6aWFtOjoqOnJvbGUvY2RrLXJlYWRPbmx5Um9sZScsXG4gICAgICAgICAgICAgICAgJ2Fybjphd3M6aWFtOjoqOnJvbGUvY2RrLWhuYjY1OWZkcy1kZXBsb3ktcm9sZS0qJyxcbiAgICAgICAgICAgICAgICAnYXJuOmF3czppYW06Oio6cm9sZS9jZGstaG5iNjU5ZmRzLWZpbGUtcHVibGlzaGluZy0qJyxcbiAgICAgICAgICAgICAgICAnYXJuOmF3czppYW06Oio6cm9sZS9jZGstaG5iNjU5ZmRzLWxvb2t1cC1yb2xlLSonLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgICAgQ2ZuRGVwbG95OiBQb2xpY3lEb2N1bWVudC5mcm9tSnNvbih7XG4gICAgICAgICAgVmVyc2lvbjogJzIwMTItMTAtMTcnLFxuICAgICAgICAgIFN0YXRlbWVudDogW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBFZmZlY3Q6ICdBbGxvdycsXG4gICAgICAgICAgICAgIEFjdGlvbjogWycqJ10sXG4gICAgICAgICAgICAgIFJlc291cmNlOiBbYGFybjphd3M6Y2xvdWRmb3JtYXRpb246JHtwcm9wcy5lbnYucmVnaW9ufToke3Byb3BzLmVudi5hY2NvdW50fTpzdGFjay8qYF0sXG4gICAgICAgICAgICAgIENvbmRpdGlvbjoge1xuICAgICAgICAgICAgICAgICdGb3JBbnlWYWx1ZTpTdHJpbmdFcXVhbHMnOiB7XG4gICAgICAgICAgICAgICAgICAnYXdzOkNhbGxlZFZpYSc6ICdjbG91ZGZvcm1hdGlvbi5hbWF6b25hd3MuY29tJyxcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgKGRlcGxveVJvbGUubm9kZS5kZWZhdWx0Q2hpbGQgYXMgQ2ZuUm9sZSkub3ZlcnJpZGVMb2dpY2FsSWQoJ0dsUnVubmVyQ0RLRGVwbG95Um9sZScpO1xuXG4gICAgY29uc3QgZ2xSdW5uZXJDZGtEZXBsb3lSb2xlQXJuID0gbmV3IENmbk91dHB1dChzY29wZSwgJ0dsUnVubmVyQ0RLRGVwbG95Um9sZUFybicsIHtcbiAgICAgIHZhbHVlOiBkZXBsb3lSb2xlLnJvbGVBcm4sXG4gICAgICBleHBvcnROYW1lOiAnZ2wtcnVubmVyLWNkay1kZXBsb3ktcm9sZS1hcm4nLFxuICAgIH0pO1xuICAgIGdsUnVubmVyQ2RrRGVwbG95Um9sZUFybi5vdmVycmlkZUxvZ2ljYWxJZCgnR2xSdW5uZXJDREtEZXBsb3lSb2xlQXJuJyk7XG4gICAgY29uc3QgZ2xSdW5uZXJDZGtEZXBsb3lSb2xlTmFtZSA9IG5ldyBDZm5PdXRwdXQoc2NvcGUsICdHbFJ1bm5lckNES0RlcGxveVJvbGVOYW1lJywge1xuICAgICAgdmFsdWU6IGRlcGxveVJvbGUucm9sZU5hbWUsXG4gICAgICBleHBvcnROYW1lOiAnZ2wtcnVubmVyLWNkay1kZXBsb3ktcm9sZS1uYW1lJyxcbiAgICB9KTtcbiAgICBnbFJ1bm5lckNka0RlcGxveVJvbGVOYW1lLm92ZXJyaWRlTG9naWNhbElkKCdHbFJ1bm5lckNES0RlcGxveVJvbGVOYW1lJyk7XG5cbiAgICBjb25zdCBnbFJ1bm5lckNka0NyZWF0ZUFuZFNpZ25DZXJ0Um9sZU5hbWUgPSBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCAnR2xSdW5uZXJDREtDcmVhdGVBbmRTaWduQ2VydFJvbGVOYW1lJywge1xuICAgICAgdmFsdWU6IGNyZWF0ZU1TS0NlcnRSb2xlLnJvbGVOYW1lLFxuICAgICAgZXhwb3J0TmFtZTogJ2dsLXJ1bm5lci1jZGstY3JlYXRlLWFuZC1zaWduLW1zay1jZXJ0LXJvbGUtbmFtZScsXG4gICAgfSk7XG4gICAgZ2xSdW5uZXJDZGtDcmVhdGVBbmRTaWduQ2VydFJvbGVOYW1lLm92ZXJyaWRlTG9naWNhbElkKCdHbFJ1bm5lckNES0NyZWF0ZUFuZFNpZ25DZXJ0Um9sZU5hbWUnKTtcbiAgICBjb25zdCBnbFJ1bm5lckNka0NyZWF0ZUFuZFNpZ25DZXJ0Um9sZUFybiA9IG5ldyBDZm5PdXRwdXQoc2NvcGUsICdHbFJ1bm5lckNES0NyZWF0ZUFuZFNpZ25DZXJ0Um9sZUFybicsIHtcbiAgICAgIHZhbHVlOiBjcmVhdGVNU0tDZXJ0Um9sZS5yb2xlQXJuLFxuICAgICAgZXhwb3J0TmFtZTogJ2dsLXJ1bm5lci1jZGstY3JlYXRlLWFuZC1zaWduLW1zay1jZXJ0LXJvbGUtYXJuJyxcbiAgICB9KTtcbiAgICBnbFJ1bm5lckNka0NyZWF0ZUFuZFNpZ25DZXJ0Um9sZUFybi5vdmVycmlkZUxvZ2ljYWxJZCgnR2xSdW5uZXJDREtDcmVhdGVBbmRTaWduQ2VydFJvbGVBcm4nKTtcblxuICAgIGNvbnN0IGdsUnVubmVyQ2RrUHVibGlzaFdlYkNvbnRlbnRSb2xlTmFtZSA9IG5ldyBDZm5PdXRwdXQoc2NvcGUsICdHbFJ1bm5lckNES1B1Ymxpc2hXZWJDb250ZW50Um9sZU5hbWUnLCB7XG4gICAgICB2YWx1ZTogd2ViQ29udGVudFB1Ymxpc2hSb2xlLnJvbGVOYW1lLFxuICAgICAgZXhwb3J0TmFtZTogJ2dsLXJ1bm5lci1jZGstcHVibGlzaC13ZWItY29udGVudC1vbi1zMy1yb2xlLW5hbWUnLFxuICAgIH0pO1xuICAgIGdsUnVubmVyQ2RrUHVibGlzaFdlYkNvbnRlbnRSb2xlTmFtZS5vdmVycmlkZUxvZ2ljYWxJZCgnR2xSdW5uZXJDREtQdWJsaXNoV2ViQ29udGVudFJvbGVOYW1lJyk7XG4gICAgY29uc3QgZ2xSdW5uZXJDZGtQdWJsaXNoV2ViQ29udGVudFJvbGVBcm4gPSBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCAnR2xSdW5uZXJDREtQdWJsaXNoV2ViQ29udGVudFJvbGVBcm4nLCB7XG4gICAgICB2YWx1ZTogd2ViQ29udGVudFB1Ymxpc2hSb2xlLnJvbGVBcm4sXG4gICAgICBleHBvcnROYW1lOiAnZ2wtcnVubmVyLWNkay1wdWJsaXNoLXdlYi1jb250ZW50LW9uLXMzLXJvbGUtYXJuJyxcbiAgICB9KTtcbiAgICBnbFJ1bm5lckNka1B1Ymxpc2hXZWJDb250ZW50Um9sZUFybi5vdmVycmlkZUxvZ2ljYWxJZCgnR2xSdW5uZXJDREtQdWJsaXNoV2ViQ29udGVudFJvbGVBcm4nKTtcblxuICAgIGNvbnN0IGdsUnVubmVyQ2RrRGVwbG95VG9FY3JSb2xlTmFtZSA9IG5ldyBDZm5PdXRwdXQoc2NvcGUsICdHbFJ1bm5lckNES0RlcGxveVRvRWNyUm9sZU5hbWUnLCB7XG4gICAgICB2YWx1ZTogZWNyRGVwbG95Um9sZS5yb2xlTmFtZSxcbiAgICAgIGV4cG9ydE5hbWU6ICdnbC1ydW5uZXItY2RrLWRlcGxveS10by1lY3Itcm9sZS1uYW1lJyxcbiAgICB9KTtcbiAgICBnbFJ1bm5lckNka0RlcGxveVRvRWNyUm9sZU5hbWUub3ZlcnJpZGVMb2dpY2FsSWQoJ0dsUnVubmVyQ0RLRGVwbG95VG9FY3JSb2xlTmFtZScpO1xuICAgIGNvbnN0IGdsUnVubmVyQ2RrRGVwbG95VG9FY3JSb2xlQXJuID0gbmV3IENmbk91dHB1dChzY29wZSwgJ0dsUnVubmVyQ0RLRGVwbG95VG9FY3JSb2xlQXJuJywge1xuICAgICAgdmFsdWU6IGVjckRlcGxveVJvbGUucm9sZUFybixcbiAgICAgIGV4cG9ydE5hbWU6ICdnbC1ydW5uZXItY2RrLWRlcGxveS10by1lY3Itcm9sZS1hcm4nLFxuICAgIH0pO1xuICAgIGdsUnVubmVyQ2RrRGVwbG95VG9FY3JSb2xlQXJuLm92ZXJyaWRlTG9naWNhbElkKCdHbFJ1bm5lckNES0RlcGxveVRvRWNyUm9sZUFybicpO1xuXG4gICAgY29uc3QgZ2xSdW5uZXJDZGtTZWNyZXRzQmFja3VwUm9sZU5hbWUgPSBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCAnR2xSdW5uZXJDREtTZWNyZXRzQmFja3VwUm9sZU5hbWUnLCB7XG4gICAgICB2YWx1ZTogc2VjcmV0c0JhY2tVcFJvbGUucm9sZU5hbWUsXG4gICAgICBleHBvcnROYW1lOiAnZ2wtcnVubmVyLWNkay1zZWNyZXRzLWJhY2t1cC1yb2xlLW5hbWUnLFxuICAgIH0pO1xuICAgIGdsUnVubmVyQ2RrU2VjcmV0c0JhY2t1cFJvbGVOYW1lLm92ZXJyaWRlTG9naWNhbElkKCdHbFJ1bm5lckNES1NlY3JldHNCYWNrdXBSb2xlTmFtZScpO1xuICAgIGNvbnN0IGdsUnVubmVyQ2RrU2VjcmV0c0JhY2t1cFJvbGVBcm4gPSBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCAnR2xSdW5uZXJDREtTZWNyZXRzQmFja3VwUm9sZUFybicsIHtcbiAgICAgIHZhbHVlOiBzZWNyZXRzQmFja1VwUm9sZS5yb2xlQXJuLFxuICAgICAgZXhwb3J0TmFtZTogJ2dsLXJ1bm5lci1jZGstc2VjcmV0cy1iYWNrdXAtcm9sZS1hcm4nLFxuICAgIH0pO1xuICAgIGdsUnVubmVyQ2RrU2VjcmV0c0JhY2t1cFJvbGVBcm4ub3ZlcnJpZGVMb2dpY2FsSWQoJ0dsUnVubmVyQ0RLU2VjcmV0c0JhY2t1cFJvbGVBcm4nKTtcbiAgfVxufSJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { Construct } from 'constructs';
|
|
2
|
+
/**
|
|
3
|
+
* The construct creates a service linked role required to run GitLab Runners using Spot EC2 instances.
|
|
4
|
+
*/
|
|
5
|
+
export declare class SpotServiceLinkedRole extends Construct {
|
|
6
|
+
constructor(scope: Construct, id: string);
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SpotServiceLinkedRole = void 0;
|
|
4
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
5
|
+
const constructs_1 = require("constructs");
|
|
6
|
+
/**
|
|
7
|
+
* The construct creates a service linked role required to run GitLab Runners using Spot EC2 instances.
|
|
8
|
+
*/
|
|
9
|
+
class SpotServiceLinkedRole extends constructs_1.Construct {
|
|
10
|
+
constructor(scope, id) {
|
|
11
|
+
super(scope, id);
|
|
12
|
+
new aws_iam_1.CfnServiceLinkedRole(scope, 'Ec2SpotServiceLinkedRole', {
|
|
13
|
+
awsServiceName: 'spot.amazonaws.com',
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.SpotServiceLinkedRole = SpotServiceLinkedRole;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3BvdC1yb2xlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvc21hcnQtcm91dGUvZ2l0bGFiLXJ1bm5lci9zcG90LXJvbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsaURBQTJEO0FBQzNELDJDQUF1QztBQUd2Qzs7R0FFRztBQUNILE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFDbEQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLDhCQUFvQixDQUFDLEtBQUssRUFBRSwwQkFBMEIsRUFBRTtZQUMxRCxjQUFjLEVBQUUsb0JBQW9CO1NBQ3JDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVBELHNEQU9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuU2VydmljZUxpbmtlZFJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5cbi8qKlxuICogVGhlIGNvbnN0cnVjdCBjcmVhdGVzIGEgc2VydmljZSBsaW5rZWQgcm9sZSByZXF1aXJlZCB0byBydW4gR2l0TGFiIFJ1bm5lcnMgdXNpbmcgU3BvdCBFQzIgaW5zdGFuY2VzLlxuICovXG5leHBvcnQgY2xhc3MgU3BvdFNlcnZpY2VMaW5rZWRSb2xlIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgbmV3IENmblNlcnZpY2VMaW5rZWRSb2xlKHNjb3BlLCAnRWMyU3BvdFNlcnZpY2VMaW5rZWRSb2xlJywge1xuICAgICAgYXdzU2VydmljZU5hbWU6ICdzcG90LmFtYXpvbmF3cy5jb20nLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -177,6 +177,13 @@ export interface KafkaTopicV4Props {
|
|
|
177
177
|
* @defaultValue undefined
|
|
178
178
|
*/
|
|
179
179
|
readonly logCompactionProperties?: LogCompactionProperties;
|
|
180
|
+
/**
|
|
181
|
+
* Specify whether the topic should be backed up automatically or not.
|
|
182
|
+
* It could just be enabled, if the topic is compacted and the RecoveryPolicy is 'recoverable'.
|
|
183
|
+
*
|
|
184
|
+
* @defaultValue undefined
|
|
185
|
+
*/
|
|
186
|
+
readonly managedBackupEnabled?: boolean;
|
|
180
187
|
}
|
|
181
188
|
/**
|
|
182
189
|
* The Topics target audience
|
package/lib/kafka/kafka-topic.js
CHANGED
|
@@ -43,9 +43,11 @@ class KafkaTopicV4 extends constructs_1.Construct {
|
|
|
43
43
|
Version: '4',
|
|
44
44
|
Audience: props.metadata.audience,
|
|
45
45
|
RecoveryPolicy: props.metadata.recoveryPolicy,
|
|
46
|
+
ManagedBackupEnabled: props.managedBackupEnabled,
|
|
46
47
|
},
|
|
47
48
|
});
|
|
48
49
|
this.node.addValidation(validator(props));
|
|
50
|
+
this.node.addValidation(backupPropertiesValidator(props));
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
53
|
exports.KafkaTopicV4 = KafkaTopicV4;
|
|
@@ -75,6 +77,20 @@ const validator = (props) => {
|
|
|
75
77
|
},
|
|
76
78
|
};
|
|
77
79
|
};
|
|
80
|
+
const backupPropertiesValidator = (props) => {
|
|
81
|
+
return {
|
|
82
|
+
validate: () => {
|
|
83
|
+
const result = [];
|
|
84
|
+
if (props.managedBackupEnabled && !props.isLogCompacted) {
|
|
85
|
+
result.push('Invalid [managedBackupEnabled]: managed backup can only be enabled for log compacted topics.');
|
|
86
|
+
}
|
|
87
|
+
if (props.managedBackupEnabled && props.metadata.recoveryPolicy !== 'recoverable') {
|
|
88
|
+
result.push('Invalid [managedBackupEnabled]: topics with managedBackupEnabled have to have recovery policy "recoverable".');
|
|
89
|
+
}
|
|
90
|
+
return result;
|
|
91
|
+
},
|
|
92
|
+
};
|
|
93
|
+
};
|
|
78
94
|
const mapProperties = (scope, props) => {
|
|
79
95
|
const teamEmail = rio_landing_zone_1.RioLandingZone.getTeamEmailParameter(scope).stringValue;
|
|
80
96
|
const events = props.metadata.events.map(source => {
|
|
@@ -107,4 +123,4 @@ const mapProperties = (scope, props) => {
|
|
|
107
123
|
},
|
|
108
124
|
};
|
|
109
125
|
};
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Fma2EtdG9waWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMva2Fma2Eva2Fma2EtdG9waWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBaUU7QUFDakUsbUNBQW1DO0FBQ25DLDJDQUFtRDtBQUNuRCx5REFBMEU7QUFDMUUsMERBQXFEO0FBeU5yRDs7OztHQUlHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsc0JBQVM7SUFFdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBR2pCLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUV6RSxJQUFJLHlCQUFXLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNsQyxJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLFVBQVUsRUFBRTtnQkFDVixHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUM3QixPQUFPLEVBQUUsR0FBRzthQUNiO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7QUFqQkgsZ0NBa0JDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLHNCQUFTO0lBRXpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLHlCQUFXLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNsQyxJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLFVBQVUsRUFBRTtnQkFDVixHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUM3QixPQUFPLEVBQUUs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QUM1RCxXQUFXLENBQUMsWUFBWSxDQUN0QixrREFBa0QsS0FBSyxDQUFDLElBQUksaUJBQWlCLEVBQzdFO3NEQUNnRCxLQUFLLENBQUMsSUFBSTtDQUMvRCxDQUNJLENBQUM7SUFDSixDQUFDO0lBQ0QsT0FBTztRQUNMLFlBQVksRUFBRSwrREFBK0Q7UUFDN0UsU0FBUyxFQUFFLEtBQUssQ0FBQyxJQUFJO1FBQ3JCLFdBQVcsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFdBQVc7UUFDdkMsTUFBTSxFQUFFLE1BQU07UUFDZCxrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1FBQzVDLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUIsSUFBSSxDQUFDO1FBQy9DLFdBQVcsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLElBQUksc0JBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUU7UUFDbkUsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsdUJBQXVCLENBQUMsY0FBYyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVM7UUFDOUYsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLHNCQUFzQixJQUFJLEtBQUs7UUFDN0QsYUFBYSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUTtRQUMxRCxTQUFTLEVBQUUsU0FBUztRQUNwQixHQUFHLEVBQUU7WUFDSCxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJO1lBQ3BCLEtBQUssRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUs7WUFDdEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsTUFBTTtTQUN6QjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEdXJhdGlvbiwgQ2ZuUmVzb3VyY2UsIEFubm90YXRpb25zIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSUNvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgS2Fma2FFdmVudFNwZWMsIEthZmthRXZlbnRTcGVjU291cmNlIH0gZnJvbSAnLi9rYWZrYS1ldmVudC1zcGVjJztcbmltcG9ydCB7IFJpb0xhbmRpbmdab25lIH0gZnJvbSAnLi4vcmlvLWxhbmRpbmctem9uZSc7XG5cbi8qKlxuICogV3JhcHBlciBmb3IgYWxsIG1ldGEgZGF0YSBvZiBhIHRvcGljLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEthZmthVG9waWNNZXRhRGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgc3BlY3Mgb2YgdGhlIGV2ZW50cyBvbiB0aGF0IHRvcGljXG4gICAqL1xuICByZWFkb25seSBldmVudHM6IEthZmthRXZlbnRTcGVjU291cmNlW107XG5cbiAgLyoqXG4gICAqIERlc2NyaWJlcyB0aGUgaW50ZW50IG9mIHRoZSB0b3BpYy4gVGhpcyBtaWdodCBiZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXZlbnRzIG9uIHRoYXQgdG9waWNcbiAgICogb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvZHVjZXIgYW5kIHRoZSBjb250ZXh0IG9mIHRoZSBldmVudHMuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFdyYXBwZXIgZm9yIGFsbCBtZXRhIGRhdGEgb2YgYSB2NCB0b3BpYyBzcGVjLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEthZmthVG9waWNNZXRhRGF0YVY0IHtcbiAgLyoqXG4gICAqIFRoZSBldmVudCBzcGVjcyBvZiB0aGUgZXZlbnRzIG9uIHRoYXQgdG9waWNcbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50czogS2Fma2FFdmVudFNwZWNTb3VyY2VbXTtcblxuICAvKipcbiAgICogRGVzY3JpYmVzIHRoZSBpbnRlbnQgb2YgdGhlIHRvcGljLiBUaGlzIG1pZ2h0IGJlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBldmVudHMgb24gdGhhdCB0b3BpY1xuICAgKiBvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9kdWNlciBhbmQgdGhlIGNvbnRleHQgb2YgdGhlIGV2ZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiBhIHRvcGljIGlzIG1lYW50IGZvciBjb21wb25lbnQgaW50ZXJuYWwgdXNhZ2Ugb25seSBvciBpZiBvdGhlciBzZXJ2aWNlcyBjb3VsZFxuICAgKiB1c2UgaXQgdG9vLlxuICAgKi9cbiAgcmVhZG9ubHkgYXVkaWVuY2U6IFRvcGljQXVkaWVuY2U7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyBpZiB0aGUgcHJvZHVjZXIgd2lsbCByZXN0b3JlIHRoZSBkYXRhIGluIGNhc2Ugb2YgYSBkaXNhc3RlciBvciBub3QuXG4gICAqL1xuICByZWFkb25seSByZWNvdmVyeVBvbGljeTogVG9waWNSZWNvdmVyeVBvbGljeTtcbn1cblxuLyoqXG4gKiBSZWFkIGFuZCB3cml0ZSBwZXJtaXNzaW9ucyBmb3IgdGhlIHRvcGljLlxuICpcbiAqIHN0cmluZ3MgYXJlIG1hdGNoZWQgYWdhaW5zdCB0aGUgQ05BTUUgb2YgdGhlIGNlcnRpZmljYXRlIG9mIHRoZSBLYWZrYSBjbGllbnRzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEthZmthQWNsU3RhdGVtZW50IHtcbiAgLyoqXG4gICogTGlzdCBvZiBjbGllbnRzIHRoYXQgc2hvdWxkIGdldCB3cml0ZSBwZXJtaXNzaW9uc1xuICAqL1xuICByZWFkb25seSB3cml0ZTogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgY2xpZW50cyB0aGF0IHNob3VsZCBnZXQgcmVhZCBwZXJtaXNzaW9uc1xuICAgKi9cbiAgcmVhZG9ubHkgcmVhZDogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgY2xpZW50cyB0aGF0IHNob3VsZCBnZXQgZGVsZXRlIHBlcm1pc3Npb25zLlxuICAgKlxuICAgKiBBdHRlbnRpb246IE9ubHkgdXNlIERlbGV0aW9uIHBvbGljeSBpZiB5b3Uga25vdyB3aGF0IHlvdSBhcmUgZG9pbmchXG4gICAqIFRoaXMgaXMgb25seSBuZWNlc3NhcnkgZm9yIEtTdHJlYW0gYW5kIGFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gZGVsZXRlIG1lc3NhZ2VzIGFuZCB0aGUgdG9waWMuPGJyPlxuICAgKiBJZiB5b3UganVzdCB3YW50IHRvIFwiZGVsZXRlXCIgYSBtZXNzYWdlIG9uIGEgbG9nIGNvbXBhY3RlZCB0b3BpYywgeW91IHNob3VsZCBub3Qgc2V0IHRoaXMgcGVybWlzc2lvbiBhbmQgc2VuZCBhIHRvbWJzdG9uZSBtZXNzYWdlIGluc3RlYWQuXG4gICAqL1xuICByZWFkb25seSBkZWxldGU/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGZvciBhbGwgbG9nIGNvbXBhY3Rpb24gcmVsYXRlZCBwcm9wZXJ0aWVzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvZ0NvbXBhY3Rpb25Qcm9wZXJ0aWVzIHtcbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgdGltZSB0byByZXRhaW4gZGVsZXRlIHRvbWJzdG9uZSBtYXJrZXJzIGZvciBsb2cgY29tcGFjdGVkIHRvcGljcztcbiAgICogVGhlIHNvZnQgbGltaXQgaXMgMTAgZGF5cyBidXQgY2FuIGJlIGluY3JlYXNlZCB1cG9uIHJlcXVlc3RzLlxuICAgKiBAZGVmYXVsdFZhbHVlIDEgZGF5XG4gICAqL1xuICByZWFkb25seSBkZWxldGVSZXRlbnRpb24/OiBEdXJhdGlvbjtcbn1cblxuLyoqXG4gKiBUaGUgY3VycmVudCBzZXJ2aWNlIGxpbWl0cyBjYW4gYmUgZm91bmQgaW4gdGhlIHRvcGljIGxpbWl0cyBjb25maWd1cmF0aW9uIG9mIHRoZSB0b3BpYyBtYW5hZ2VyLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9jb2xsYWJvcmF0aW9uLm1zaS5hdWRpLmNvbS9zdGFzaC9wcm9qZWN0cy9SU0VWVEJVL3JlcG9zL3RvcGljLW1hbmFnZXIvYnJvd3NlL2NvbmZpZy90b3BpYy1zZXJ2aWNlLWxpbWl0cy55YW1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2Fma2FUb3BpY1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgbmFtZSBvZiB0aGUgdG9waWM7IGhhcyB0byBtYXRjaCBwYXR0ZXJuIFtBLVphLXowLTkuLV0rXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgZGVncmVlIG9mIHBhcmFsbGVsaXNtIG9mIHRoZSB0b3BpYzsgc2hvdWxkIGJlIGluY3JlYXNlZCBmb3JcbiAgICogbGFyZ2UgZXhwZWN0ZWQgbG9hZHMgKGUuZy4sIDI1IGZvciByaW8uYXNzZXQtaW90LWV2ZW50cykuXG4gICAqIFRoZSBzb2Z0IGxpbWl0IGlzIDEwIHBhcnRpdGlvbnMgYnV0IGNhbiBiZSBpbmNyZWFzZWQgdXBvbiByZXF1ZXN0cy5cbiAgICovXG4gIHJlYWRvbmx5IG51bWJlck9mUGFydGl0aW9uczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGRlZ3JlZSBvZiByZXBsaWNhdGlvbiBvZiBtZXNzYWdlczsgaGFzIHRvIGJlIGJldHdlZW4gMSBhbmQgdGhlIG51bWJlciBvZiBicm9rZXJzIChjdXJyZW50bHkgMykuXG4gICAqIEBkZWZhdWx0VmFsdWUgM1xuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGljYXRpb25GYWN0b3I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRpbWUgaG93IGxvbmcgbWVzc2FnZXMgYXJlIHJldGFpbmVkIG9uIEthZmthIGNsdXN0ZXI7XG4gICAqXG4gICAqIFdlIHJlY29tbWVuZCAzMCBkYXlzIGZvciBnZW5lcmFsIGV2ZW50cyBhbmQgNyBkYXlzIGZvciBzZW5zb3IgZXZlbnRzIGFuZCBvdGhlciBoaWdoLWxvYWQgY2FzZXMuXG4gICAqIFRoZSBzb2Z0IGxpbWl0IGlzIDMgdG8gMzAgZGF5cyBidXQgY2FuIGJlIGluY3JlYXNlZCB1cG9uIHJlcXVlc3RzLlxuICAgKiBAZGVmYXVsdFZhbHVlIDcgZGF5c1xuICAgKi9cbiAgcmVhZG9ubHkgcmV0ZW50aW9uPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byAnZmFsc2UsIHRoZSB0b3BpYydzIGRhdGEgd2lsbCBiZSBkZWxldGVkIG9uIEthZmthIDEwIGRheXMgYWZ0ZXIgc3RhY2sgZGVsZXRpb24uXG4gICAqIElmIHNldCB0byAndHJ1ZScsIGl0IHdpbGwgYmUgZGVsZXRlZCBpbW1lZGlhdGVseSBhZnRlciBzdGFjayBkZWxldGlvbi5cbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFudERlbGV0aW9uRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRhZGF0YSBvZiB0aGUgdG9waWMuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YTogS2Fma2FUb3BpY01ldGFEYXRhO1xuXG4gIC8qKlxuICAgKiBUaGUgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHRvIHRoZSB0b3BpYydzIGRhdGEuXG4gICAqL1xuICByZWFkb25seSBhY2w6IEthZmthQWNsU3RhdGVtZW50O1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdGhlIHRvcGljIGlzIGxvZyBjb21wYWN0ZWQgb3Igbm90LlxuICAgKi9cbiAgcmVhZG9ubHkgaXNMb2dDb21wYWN0ZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE11c3Qgb25seSBiZSBwcm92aWRlZCBpZiAnaXNMb2dDb21wYWN0ZWQnIGlzICd0cnVlJy5cbiAgICogQGRlZmF1bHRWYWx1ZSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0NvbXBhY3Rpb25Qcm9wZXJ0aWVzPzogTG9nQ29tcGFjdGlvblByb3BlcnRpZXM7XG59XG5cbi8qKlxuICogVGhlIGN1cnJlbnQgc2VydmljZSBsaW1pdHMgY2FuIGJlIGZvdW5kIGluIHRoZSB0b3BpYyBsaW1pdHMgY29uZmlndXJhdGlvbiBvZiB0aGUgdG9waWMgbWFuYWdlci5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vY29sbGFib3JhdGlvbi5tc2kuYXVkaS5jb20vc3Rhc2gvcHJvamVjdHMvUlNFVlRCVS9yZXBvcy90b3BpYy1tYW5hZ2VyL2Jyb3dzZS9jb25maWcvdG9waWMtc2VydmljZS1saW1pdHMueWFtbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEthZmthVG9waWNWNFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgbmFtZSBvZiB0aGUgdG9waWM7IGhhcyB0byBtYXRjaCBwYXR0ZXJuIFtBLVphLXowLTkuLV0rXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERlZmluZXMgZGVncmVlIG9mIHBhcmFsbGVsaXNtIG9mIHRoZSB0b3BpYzsgc2hvdWxkIGJlIGluY3JlYXNlZCBmb3JcbiAgICogbGFyZ2UgZXhwZWN0ZWQgbG9hZHMgKGUuZy4sIDI1IGZvciByaW8uYXNzZXQtaW90LWV2ZW50cykuXG4gICAqIFRoZSBzb2Z0IGxpbWl0IGlzIDEwIHBhcnRpdGlvbnMgYnV0IGNhbiBiZSBpbmNyZWFzZWQgdXBvbiByZXF1ZXN0cy5cbiAgICovXG4gIHJlYWRvbmx5IG51bWJlck9mUGFydGl0aW9uczogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGRlZ3JlZSBvZiByZXBsaWNhdGlvbiBvZiBtZXNzYWdlczsgaGFzIHRvIGJlIGJldHdlZW4gMSBhbmQgdGhlIG51bWJlciBvZiBicm9rZXJzIChjdXJyZW50bHkgMykuXG4gICAqIEBkZWZhdWx0VmFsdWUgM1xuICAgKi9cbiAgcmVhZG9ubHkgcmVwbGljYXRpb25GYWN0b3I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRpbWUgaG93IGxvbmcgbWVzc2FnZXMgYXJlIHJldGFpbmVkIG9uIEthZmthIGNsdXN0ZXI7XG4gICAqXG4gICAqIFdlIHJlY29tbWVuZCAzMCBkYXlzIGZvciBnZW5lcmFsIGV2ZW50cyBhbmQgNyBkYXlzIGZvciBzZW5zb3IgZXZlbnRzIGFuZCBvdGhlciBoaWdoLWxvYWQgY2FzZXMuXG4gICAqIFRoZSBzb2Z0IGxpbWl0IGlzIDMgdG8gMzAgZGF5cyBidXQgY2FuIGJlIGluY3JlYXNlZCB1cG9uIHJlcXVlc3RzLlxuICAgKiBAZGVmYXVsdFZhbHVlIDcgZGF5c1xuICAgKi9cbiAgcmVhZG9ubHkgcmV0ZW50aW9uPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIElmIHNldCB0byAnZmFsc2UsIHRoZSB0b3BpYydzIGRhdGEgd2lsbCBiZSBkZWxldGVkIG9uIEthZmthIDEwIGRheXMgYWZ0ZXIgc3RhY2sgZGVsZXRpb24uXG4gICAqIElmIHNldCB0byAndHJ1ZScsIGl0IHdpbGwgYmUgZGVsZXRlZCBpbW1lZGlhdGVseSBhZnRlciBzdGFjayBkZWxldGlvbi5cbiAgICogQGRlZmF1bHRWYWx1ZSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFudERlbGV0aW9uRW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBtZXRhZGF0YSBvZiB0aGUgdG9waWMuXG4gICAqL1xuICByZWFkb25seSBtZXRhZGF0YTogS2Fma2FUb3BpY01ldGFEYXRhVjQ7XG5cbiAgLyoqXG4gICAqIFRoZSBwZXJtaXNzaW9ucyB0byBhY2Nlc3MgdG8gdGhlIHRvcGljJ3MgZGF0YS5cbiAgICovXG4gIHJlYWRvbmx5IGFjbDogS2Fma2FBY2xTdGF0ZW1lbnQ7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciB0aGUgdG9waWMgaXMgbG9nIGNvbXBhY3RlZCBvciBub3QuXG4gICAqL1xuICByZWFkb25seSBpc0xvZ0NvbXBhY3RlZDogYm9vbGVhbjtcblxuICAvKipcbiAgICogTXVzdCBvbmx5IGJlIHByb3ZpZGVkIGlmICdpc0xvZ0NvbXBhY3RlZCcgaXMgJ3RydWUnLlxuICAgKiBAZGVmYXVsdFZhbHVlIHVuZGVmaW5lZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nQ29tcGFjdGlvblByb3BlcnRpZXM/OiBMb2dDb21wYWN0aW9uUHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBUaGUgVG9waWNzIHRhcmdldCBhdWRpZW5jZVxuICovXG5leHBvcnQgdHlwZSBUb3BpY0F1ZGllbmNlID0gJ2NvbXBvbmVudC1pbnRlcm5hbCcgfCAnY29tcGFueS1pbnRlcm5hbCc7XG5cbi8qKlxuICogVGhlIFRvcGljcyByZWNvdmVyeSBwb2xpY3kgZ3VhcmFudGVlZCBieSB0aGUgcHJvZHVjZXJcbiAqL1xuZXhwb3J0IHR5cGUgVG9waWNSZWNvdmVyeVBvbGljeSA9ICdub25lJyB8ICdyZWNvdmVyYWJsZSc7XG5cbi8qKlxuICogQ29uc3RydWN0IHRvIGNyZWF0ZSBhIGthZmthIHRvcGljLlxuICpcbiAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgS2Fma2FUb3BpY1Y0fSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjbGFzcyBLYWZrYVRvcGljIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogS2Fma2FUb3BpY1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuXG4gICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkRGVwcmVjYXRpb24oJ0thZmthVG9waWMnLCBcIlVzZSAnS2Fma2FUb3BpY1Y0JyFcIik7XG5cbiAgICBuZXcgQ2ZuUmVzb3VyY2UodGhpcywgJ0thZmthVG9waWMnLCB7XG4gICAgICB0eXBlOiAnQ3VzdG9tOjpLYWZrYVRvcGljJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgLi4ubWFwUHJvcGVydGllcyh0aGlzLCBwcm9wcyksXG4gICAgICAgIFZlcnNpb246ICczJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih2YWxpZGF0b3IocHJvcHMpKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdCB0byBjcmVhdGUgYSBrYWZrYSB0b3BpYy5cbiAqL1xuZXhwb3J0IGNsYXNzIEthZmthVG9waWNWNCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEthZmthVG9waWNWNFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBDZm5SZXNvdXJjZSh0aGlzLCAnS2Fma2FUb3BpYycsIHtcbiAgICAgIHR5cGU6ICdDdXN0b206OkthZmthVG9waWMnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAuLi5tYXBQcm9wZXJ0aWVzKHRoaXMsIHByb3BzKSxcbiAgICAgICAgVmVyc2lvbjogJzQnLFxuICAgICAgICBBdWRpZW5jZTogcHJvcHMubWV0YWRhdGEuYXVkaWVuY2UsXG4gICAgICAgIFJlY292ZXJ5UG9saWN5OiBwcm9wcy5tZXRhZGF0YS5yZWNvdmVyeVBvbGljeSxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih2YWxpZGF0b3IocHJvcHMpKTtcbiAgfVxufVxuXG5jb25zdCB2YWxpZGF0b3IgPSAocHJvcHM6IEthZmthVG9waWNQcm9wcykgPT4ge1xuICByZXR1cm4ge1xuICAgIHZhbGlkYXRlOiAoKTogc3RyaW5nW10gPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgIGlmICghcHJvcHMubmFtZS5tYXRjaCgvXltBLVphLXowLTkuLV0rJC8pKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKCdJbnZhbGlkIFtuYW1lXTogZXhwZWN0aW5nIHRvcGljIG5hbWUgdG8gbWF0Y2ggdGhlIHJlZyBleHAgYFtBLVphLXowLTkuLV0rYC4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHByb3BzLm51bWJlck9mUGFydGl0aW9ucykgfHwgcHJvcHMubnVtYmVyT2ZQYXJ0aXRpb25zIDwgMSkge1xuICAgICAgICByZXN1bHQucHVzaChgSW52YWxpZCBbbnVtYmVyT2ZQYXJ0aXRpb25zXTogZXhwZWN0aW5nIG51bWJlciBvZiBwYXJ0aXRpb25zIHRvIGJlIGEgcG9zaXRpdmUgaW50ZWdlciBidXQgZ290ICR7cHJvcHMubnVtYmVyT2ZQYXJ0aXRpb25zfS5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLnJlcGxpY2F0aW9uRmFjdG9yICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAoIU51bWJlci5pc0ludGVnZXIocHJvcHMucmVwbGljYXRpb25GYWN0b3IpIHx8IHByb3BzLnJlcGxpY2F0aW9uRmFjdG9yIDwgMSB8fCBwcm9wcy5yZXBsaWNhdGlvbkZhY3RvciA+IDMpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKCdJbnZhbGlkIFtyZXBsaWNhdGlvbkZhY3Rvcl06IGV4cGVjdGluZyBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMy4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLm1ldGFkYXRhLmV2ZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJ0ludmFsaWQgW21ldGFkYXRhXTogZXhwZWN0aW5nIFtldmVudHNdIHRvIGhhdmUgYXQgbGVhc3Qgb24gZWxlbWVudC4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcm9wcy5pc0xvZ0NvbXBhY3RlZCAmJiBwcm9wcy5sb2dDb21wYWN0aW9uUHJvcGVydGllcykge1xuICAgICAgICByZXN1bHQucHVzaCgnSW52YWxpZCBbbG9nQ29tcGFjdGlvblByb3BlcnRpZXNdOiBsb2cgY29tcGFjdGlvbiBpcyBkaXNhYmxlZCBzbyBwcm9wZXJ0aWVzIG11c3QgYmUgdW5kZWZpbmVkLicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gIH07XG59O1xuXG5jb25zdCBtYXBQcm9wZXJ0aWVzID0gKHNjb3BlOiBJQ29uc3RydWN0LCBwcm9wczogS2Fma2FUb3BpY1Byb3BzIHwgS2Fma2FUb3BpY1Y0UHJvcHMpID0+IHtcbiAgY29uc3QgdGVhbUVtYWlsID0gUmlvTGFuZGluZ1pvbmUuZ2V0VGVhbUVtYWlsUGFyYW1ldGVyKHNjb3BlKS5zdHJpbmdWYWx1ZTtcblxuICBjb25zdCBldmVudHMgPSBwcm9wcy5tZXRhZGF0YS5ldmVudHMubWFwKHNvdXJjZSA9PiB7XG4gICAgbmV3IEthZmthRXZlbnRTcGVjKHNjb3BlLCBgJHtzb3VyY2UuZXZlbnROYW1lLnJlcGxhY2UoL1xcLi9nLCAnXycpfS1FdmVudFNwZWNgLCB7IHNvdXJjZSB9KTtcbiAgICByZXR1cm4gc291cmNlLmV2ZW50TmFtZTtcbiAgfSk7XG5cbiAgY29uc3QgZGVsZXRlUmV0ZW50aW9uRHVyYXRpb24gPSBwcm9wcy5sb2dDb21wYWN0aW9uUHJvcGVydGllcz8uZGVsZXRlUmV0ZW50aW9uID8/IER1cmF0aW9uLmRheXMoNyk7XG4gIGlmIChwcm9wcy5hY2wuZGVsZXRlICE9IHVuZGVmaW5lZCAmJiBwcm9wcy5hY2wuZGVsZXRlLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IGNkay5Bbm5vdGF0aW9ucy5vZihjZGsuU3RhY2sub2Yoc2NvcGUpKTtcbiAgICBhbm5vdGF0aW9ucy5hZGRXYXJuaW5nVjIoXG4gICAgICBgQHJpby1jbG91ZC9jZGstdjItY29uc3RydWN0cy9rYWZrYS9rYWZrYS10b3BpYy8ke3Byb3BzLm5hbWV9L0RlbGV0aW9uUG9saWN5YCxcbiAgICAgIGBcbiDinYwgWW91IGhhdmUgc2V0IFwiZGVsZXRlXCIgcGVybWlzc2lvbiBmb3Iga2Fma2EtdG9waWMgJHtwcm9wcy5uYW1lfS4gWW91IHByb2JhYmx5IGRvIG5vdCBuZWVkIHRoaXMuIFBsZWFzZSB1c2UgdGhpcyBvbmx5IGlmIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZy5cbmAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIFNlcnZpY2VUb2tlbjogJ2Fybjphd3M6c25zOmV1LXdlc3QtMToxODY5OTM3NTc3MzQ6ZHAtdG9waWMtbWFuYWdlci1zbnMtdG9waWMnLFxuICAgIFRvcGljTmFtZTogcHJvcHMubmFtZSxcbiAgICBEZXNjcmlwdGlvbjogcHJvcHMubWV0YWRhdGEuZGVzY3JpcHRpb24sXG4gICAgRXZlbnRzOiBldmVudHMsXG4gICAgTnVtYmVyT2ZQYXJ0aXRpb25zOiBwcm9wcy5udW1iZXJPZlBhcnRpdGlvbnMsXG4gICAgUmVwbGljYXRpb25GYWN0b3I6IHByb3BzLnJlcGxpY2F0aW9uRmFjdG9yID8/IDMsXG4gICAgUmV0ZW50aW9uTXM6IChwcm9wcy5yZXRlbnRpb24gPz8gRHVyYXRpb24uZGF5cyg3KSkudG9NaWxsaXNlY29uZHMoKSxcbiAgICBEZWxldGVSZXRlbnRpb25NczogcHJvcHMuaXNMb2dDb21wYWN0ZWQgPyBkZWxldGVSZXRlbnRpb25EdXJhdGlvbi50b01pbGxpc2Vjb25kcygpIDogdW5kZWZpbmVkLFxuICAgIEluc3RhbnREZWxldGlvbkVuYWJsZWQ6IHByb3BzLmluc3RhbnREZWxldGlvbkVuYWJsZWQgPz8gZmFsc2UsXG4gICAgQ2xlYW51cFBvbGljeTogcHJvcHMuaXNMb2dDb21wYWN0ZWQgPyAnY29tcGFjdCcgOiAnZGVsZXRlJyxcbiAgICBUZWFtRW1haWw6IHRlYW1FbWFpbCxcbiAgICBBQ0w6IHtcbiAgICAgIFJlYWQ6IHByb3BzLmFjbC5yZWFkLFxuICAgICAgV3JpdGU6IHByb3BzLmFjbC53cml0ZSxcbiAgICAgIERlbGV0ZTogcHJvcHMuYWNsLmRlbGV0ZSxcbiAgICB9LFxuICB9O1xufTsiXX0=
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2Fma2EtdG9waWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMva2Fma2Eva2Fma2EtdG9waWMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSw2Q0FBaUU7QUFDakUsbUNBQW1DO0FBQ25DLDJDQUFtRDtBQUNuRCx5REFBMEU7QUFDMUUsMERBQXFEO0FBaU9yRDs7OztHQUlHO0FBQ0gsTUFBYSxVQUFXLFNBQVEsc0JBQVM7SUFFdkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtRQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBR2pCLHlCQUFXLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUscUJBQXFCLENBQUMsQ0FBQztRQUV6RSxJQUFJLHlCQUFXLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNsQyxJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLFVBQVUsRUFBRTtnQkFDVixHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUM3QixPQUFPLEVBQUUsR0FBRzthQUNiO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDNUMsQ0FBQzs7QUFqQkgsZ0NBa0JDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLHNCQUFTO0lBRXpDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBd0I7UUFDaEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLHlCQUFXLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUNsQyxJQUFJLEVBQUUsb0JBQW9CO1lBQzFCLFVBQVUsRUFBRTtnQkFDVixHQUFHLGFBQWEsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDO2dCQUM3QixPQUFPLEVBQUUs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Q0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFO1FBQ25FLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLHVCQUF1QixDQUFDLGNBQWMsRUFBRSxDQUFDLENBQUMsQ0FBQyxTQUFTO1FBQzlGLHNCQUFzQixFQUFFLEtBQUssQ0FBQyxzQkFBc0IsSUFBSSxLQUFLO1FBQzdELGFBQWEsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFFBQVE7UUFDMUQsU0FBUyxFQUFFLFNBQVM7UUFDcEIsR0FBRyxFQUFFO1lBQ0gsSUFBSSxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSTtZQUNwQixLQUFLLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxLQUFLO1lBQ3RCLE1BQU0sRUFBRSxLQUFLLENBQUMsR0FBRyxDQUFDLE1BQU07U0FDekI7S0FDRixDQUFDO0FBQ0osQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHVyYXRpb24sIENmblJlc291cmNlLCBBbm5vdGF0aW9ucyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEthZmthRXZlbnRTcGVjLCBLYWZrYUV2ZW50U3BlY1NvdXJjZSB9IGZyb20gJy4va2Fma2EtZXZlbnQtc3BlYyc7XG5pbXBvcnQgeyBSaW9MYW5kaW5nWm9uZSB9IGZyb20gJy4uL3Jpby1sYW5kaW5nLXpvbmUnO1xuXG4vKipcbiAqIFdyYXBwZXIgZm9yIGFsbCBtZXRhIGRhdGEgb2YgYSB0b3BpYy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLYWZrYVRvcGljTWV0YURhdGEge1xuICAvKipcbiAgICogVGhlIGV2ZW50IHNwZWNzIG9mIHRoZSBldmVudHMgb24gdGhhdCB0b3BpY1xuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRzOiBLYWZrYUV2ZW50U3BlY1NvdXJjZVtdO1xuXG4gIC8qKlxuICAgKiBEZXNjcmliZXMgdGhlIGludGVudCBvZiB0aGUgdG9waWMuIFRoaXMgbWlnaHQgYmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGV2ZW50cyBvbiB0aGF0IHRvcGljXG4gICAqIG9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2R1Y2VyIGFuZCB0aGUgY29udGV4dCBvZiB0aGUgZXZlbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGZvciBhbGwgbWV0YSBkYXRhIG9mIGEgdjQgdG9waWMgc3BlYy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLYWZrYVRvcGljTWV0YURhdGFWNCB7XG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgc3BlY3Mgb2YgdGhlIGV2ZW50cyBvbiB0aGF0IHRvcGljXG4gICAqL1xuICByZWFkb25seSBldmVudHM6IEthZmthRXZlbnRTcGVjU291cmNlW107XG5cbiAgLyoqXG4gICAqIERlc2NyaWJlcyB0aGUgaW50ZW50IG9mIHRoZSB0b3BpYy4gVGhpcyBtaWdodCBiZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZXZlbnRzIG9uIHRoYXQgdG9waWNcbiAgICogb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvZHVjZXIgYW5kIHRoZSBjb250ZXh0IG9mIHRoZSBldmVudHMuXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgYSB0b3BpYyBpcyBtZWFudCBmb3IgY29tcG9uZW50IGludGVybmFsIHVzYWdlIG9ubHkgb3IgaWYgb3RoZXIgc2VydmljZXMgY291bGRcbiAgICogdXNlIGl0IHRvby5cbiAgICovXG4gIHJlYWRvbmx5IGF1ZGllbmNlOiBUb3BpY0F1ZGllbmNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgaWYgdGhlIHByb2R1Y2VyIHdpbGwgcmVzdG9yZSB0aGUgZGF0YSBpbiBjYXNlIG9mIGEgZGlzYXN0ZXIgb3Igbm90LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjb3ZlcnlQb2xpY3k6IFRvcGljUmVjb3ZlcnlQb2xpY3k7XG59XG5cbi8qKlxuICogUmVhZCBhbmQgd3JpdGUgcGVybWlzc2lvbnMgZm9yIHRoZSB0b3BpYy5cbiAqXG4gKiBzdHJpbmdzIGFyZSBtYXRjaGVkIGFnYWluc3QgdGhlIENOQU1FIG9mIHRoZSBjZXJ0aWZpY2F0ZSBvZiB0aGUgS2Fma2EgY2xpZW50cy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLYWZrYUFjbFN0YXRlbWVudCB7XG4gIC8qKlxuICAqIExpc3Qgb2YgY2xpZW50cyB0aGF0IHNob3VsZCBnZXQgd3JpdGUgcGVybWlzc2lvbnNcbiAgKi9cbiAgcmVhZG9ubHkgd3JpdGU6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGNsaWVudHMgdGhhdCBzaG91bGQgZ2V0IHJlYWQgcGVybWlzc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IHJlYWQ6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGNsaWVudHMgdGhhdCBzaG91bGQgZ2V0IGRlbGV0ZSBwZXJtaXNzaW9ucy5cbiAgICpcbiAgICogQXR0ZW50aW9uOiBPbmx5IHVzZSBEZWxldGlvbiBwb2xpY3kgaWYgeW91IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nIVxuICAgKiBUaGlzIGlzIG9ubHkgbmVjZXNzYXJ5IGZvciBLU3RyZWFtIGFuZCBhbGxvd3MgdGhlIGFwcGxpY2F0aW9uIHRvIGRlbGV0ZSBtZXNzYWdlcyBhbmQgdGhlIHRvcGljLjxicj5cbiAgICogSWYgeW91IGp1c3Qgd2FudCB0byBcImRlbGV0ZVwiIGEgbWVzc2FnZSBvbiBhIGxvZyBjb21wYWN0ZWQgdG9waWMsIHlvdSBzaG91bGQgbm90IHNldCB0aGlzIHBlcm1pc3Npb24gYW5kIHNlbmQgYSB0b21ic3RvbmUgbWVzc2FnZSBpbnN0ZWFkLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogV3JhcHBlciBmb3IgYWxsIGxvZyBjb21wYWN0aW9uIHJlbGF0ZWQgcHJvcGVydGllcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBMb2dDb21wYWN0aW9uUHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiBUaGUgYW1vdW50IG9mIHRpbWUgdG8gcmV0YWluIGRlbGV0ZSB0b21ic3RvbmUgbWFya2VycyBmb3IgbG9nIGNvbXBhY3RlZCB0b3BpY3M7XG4gICAqIFRoZSBzb2Z0IGxpbWl0IGlzIDEwIGRheXMgYnV0IGNhbiBiZSBpbmNyZWFzZWQgdXBvbiByZXF1ZXN0cy5cbiAgICogQGRlZmF1bHRWYWx1ZSAxIGRheVxuICAgKi9cbiAgcmVhZG9ubHkgZGVsZXRlUmV0ZW50aW9uPzogRHVyYXRpb247XG59XG5cbi8qKlxuICogVGhlIGN1cnJlbnQgc2VydmljZSBsaW1pdHMgY2FuIGJlIGZvdW5kIGluIHRoZSB0b3BpYyBsaW1pdHMgY29uZmlndXJhdGlvbiBvZiB0aGUgdG9waWMgbWFuYWdlci5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vY29sbGFib3JhdGlvbi5tc2kuYXVkaS5jb20vc3Rhc2gvcHJvamVjdHMvUlNFVlRCVS9yZXBvcy90b3BpYy1tYW5hZ2VyL2Jyb3dzZS9jb25maWcvdG9waWMtc2VydmljZS1saW1pdHMueWFtbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEthZmthVG9waWNQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIHRvcGljOyBoYXMgdG8gbWF0Y2ggcGF0dGVybiBbQS1aYS16MC05Li1dK1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGRlZ3JlZSBvZiBwYXJhbGxlbGlzbSBvZiB0aGUgdG9waWM7IHNob3VsZCBiZSBpbmNyZWFzZWQgZm9yXG4gICAqIGxhcmdlIGV4cGVjdGVkIGxvYWRzIChlLmcuLCAyNSBmb3IgcmlvLmFzc2V0LWlvdC1ldmVudHMpLlxuICAgKiBUaGUgc29mdCBsaW1pdCBpcyAxMCBwYXJ0aXRpb25zIGJ1dCBjYW4gYmUgaW5jcmVhc2VkIHVwb24gcmVxdWVzdHMuXG4gICAqL1xuICByZWFkb25seSBudW1iZXJPZlBhcnRpdGlvbnM6IG51bWJlcjtcblxuICAvKipcbiAgICogRGVmaW5lcyBkZWdyZWUgb2YgcmVwbGljYXRpb24gb2YgbWVzc2FnZXM7IGhhcyB0byBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBudW1iZXIgb2YgYnJva2VycyAoY3VycmVudGx5IDMpLlxuICAgKiBAZGVmYXVsdFZhbHVlIDNcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2F0aW9uRmFjdG9yPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lIGhvdyBsb25nIG1lc3NhZ2VzIGFyZSByZXRhaW5lZCBvbiBLYWZrYSBjbHVzdGVyO1xuICAgKlxuICAgKiBXZSByZWNvbW1lbmQgMzAgZGF5cyBmb3IgZ2VuZXJhbCBldmVudHMgYW5kIDcgZGF5cyBmb3Igc2Vuc29yIGV2ZW50cyBhbmQgb3RoZXIgaGlnaC1sb2FkIGNhc2VzLlxuICAgKiBUaGUgc29mdCBsaW1pdCBpcyAzIHRvIDMwIGRheXMgYnV0IGNhbiBiZSBpbmNyZWFzZWQgdXBvbiByZXF1ZXN0cy5cbiAgICogQGRlZmF1bHRWYWx1ZSA3IGRheXNcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gJ2ZhbHNlLCB0aGUgdG9waWMncyBkYXRhIHdpbGwgYmUgZGVsZXRlZCBvbiBLYWZrYSAxMCBkYXlzIGFmdGVyIHN0YWNrIGRlbGV0aW9uLlxuICAgKiBJZiBzZXQgdG8gJ3RydWUnLCBpdCB3aWxsIGJlIGRlbGV0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgc3RhY2sgZGVsZXRpb24uXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbnREZWxldGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWV0YWRhdGEgb2YgdGhlIHRvcGljLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE6IEthZmthVG9waWNNZXRhRGF0YTtcblxuICAvKipcbiAgICogVGhlIHBlcm1pc3Npb25zIHRvIGFjY2VzcyB0byB0aGUgdG9waWMncyBkYXRhLlxuICAgKi9cbiAgcmVhZG9ubHkgYWNsOiBLYWZrYUFjbFN0YXRlbWVudDtcblxuICAvKipcbiAgICogU3BlY2lmeSB3aGV0aGVyIHRoZSB0b3BpYyBpcyBsb2cgY29tcGFjdGVkIG9yIG5vdC5cbiAgICovXG4gIHJlYWRvbmx5IGlzTG9nQ29tcGFjdGVkOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBNdXN0IG9ubHkgYmUgcHJvdmlkZWQgaWYgJ2lzTG9nQ29tcGFjdGVkJyBpcyAndHJ1ZScuXG4gICAqIEBkZWZhdWx0VmFsdWUgdW5kZWZpbmVkXG4gICAqL1xuICByZWFkb25seSBsb2dDb21wYWN0aW9uUHJvcGVydGllcz86IExvZ0NvbXBhY3Rpb25Qcm9wZXJ0aWVzO1xufVxuXG4vKipcbiAqIFRoZSBjdXJyZW50IHNlcnZpY2UgbGltaXRzIGNhbiBiZSBmb3VuZCBpbiB0aGUgdG9waWMgbGltaXRzIGNvbmZpZ3VyYXRpb24gb2YgdGhlIHRvcGljIG1hbmFnZXIuXG4gKlxuICogQHNlZSBodHRwczovL2NvbGxhYm9yYXRpb24ubXNpLmF1ZGkuY29tL3N0YXNoL3Byb2plY3RzL1JTRVZUQlUvcmVwb3MvdG9waWMtbWFuYWdlci9icm93c2UvY29uZmlnL3RvcGljLXNlcnZpY2UtbGltaXRzLnlhbWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBLYWZrYVRvcGljVjRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgdW5pcXVlIG5hbWUgb2YgdGhlIHRvcGljOyBoYXMgdG8gbWF0Y2ggcGF0dGVybiBbQS1aYS16MC05Li1dK1xuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZWZpbmVzIGRlZ3JlZSBvZiBwYXJhbGxlbGlzbSBvZiB0aGUgdG9waWM7IHNob3VsZCBiZSBpbmNyZWFzZWQgZm9yXG4gICAqIGxhcmdlIGV4cGVjdGVkIGxvYWRzIChlLmcuLCAyNSBmb3IgcmlvLmFzc2V0LWlvdC1ldmVudHMpLlxuICAgKiBUaGUgc29mdCBsaW1pdCBpcyAxMCBwYXJ0aXRpb25zIGJ1dCBjYW4gYmUgaW5jcmVhc2VkIHVwb24gcmVxdWVzdHMuXG4gICAqL1xuICByZWFkb25seSBudW1iZXJPZlBhcnRpdGlvbnM6IG51bWJlcjtcblxuICAvKipcbiAgICogRGVmaW5lcyBkZWdyZWUgb2YgcmVwbGljYXRpb24gb2YgbWVzc2FnZXM7IGhhcyB0byBiZSBiZXR3ZWVuIDEgYW5kIHRoZSBudW1iZXIgb2YgYnJva2VycyAoY3VycmVudGx5IDMpLlxuICAgKiBAZGVmYXVsdFZhbHVlIDNcbiAgICovXG4gIHJlYWRvbmx5IHJlcGxpY2F0aW9uRmFjdG9yPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaW1lIGhvdyBsb25nIG1lc3NhZ2VzIGFyZSByZXRhaW5lZCBvbiBLYWZrYSBjbHVzdGVyO1xuICAgKlxuICAgKiBXZSByZWNvbW1lbmQgMzAgZGF5cyBmb3IgZ2VuZXJhbCBldmVudHMgYW5kIDcgZGF5cyBmb3Igc2Vuc29yIGV2ZW50cyBhbmQgb3RoZXIgaGlnaC1sb2FkIGNhc2VzLlxuICAgKiBUaGUgc29mdCBsaW1pdCBpcyAzIHRvIDMwIGRheXMgYnV0IGNhbiBiZSBpbmNyZWFzZWQgdXBvbiByZXF1ZXN0cy5cbiAgICogQGRlZmF1bHRWYWx1ZSA3IGRheXNcbiAgICovXG4gIHJlYWRvbmx5IHJldGVudGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBJZiBzZXQgdG8gJ2ZhbHNlLCB0aGUgdG9waWMncyBkYXRhIHdpbGwgYmUgZGVsZXRlZCBvbiBLYWZrYSAxMCBkYXlzIGFmdGVyIHN0YWNrIGRlbGV0aW9uLlxuICAgKiBJZiBzZXQgdG8gJ3RydWUnLCBpdCB3aWxsIGJlIGRlbGV0ZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgc3RhY2sgZGVsZXRpb24uXG4gICAqIEBkZWZhdWx0VmFsdWUgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbnREZWxldGlvbkVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWV0YWRhdGEgb2YgdGhlIHRvcGljLlxuICAgKi9cbiAgcmVhZG9ubHkgbWV0YWRhdGE6IEthZmthVG9waWNNZXRhRGF0YVY0O1xuXG4gIC8qKlxuICAgKiBUaGUgcGVybWlzc2lvbnMgdG8gYWNjZXNzIHRvIHRoZSB0b3BpYydzIGRhdGEuXG4gICAqL1xuICByZWFkb25seSBhY2w6IEthZmthQWNsU3RhdGVtZW50O1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHdoZXRoZXIgdGhlIHRvcGljIGlzIGxvZyBjb21wYWN0ZWQgb3Igbm90LlxuICAgKi9cbiAgcmVhZG9ubHkgaXNMb2dDb21wYWN0ZWQ6IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE11c3Qgb25seSBiZSBwcm92aWRlZCBpZiAnaXNMb2dDb21wYWN0ZWQnIGlzICd0cnVlJy5cbiAgICogQGRlZmF1bHRWYWx1ZSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ0NvbXBhY3Rpb25Qcm9wZXJ0aWVzPzogTG9nQ29tcGFjdGlvblByb3BlcnRpZXM7XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgd2hldGhlciB0aGUgdG9waWMgc2hvdWxkIGJlIGJhY2tlZCB1cCBhdXRvbWF0aWNhbGx5IG9yIG5vdC5cbiAgICogSXQgY291bGQganVzdCBiZSBlbmFibGVkLCBpZiB0aGUgdG9waWMgaXMgY29tcGFjdGVkIGFuZCB0aGUgUmVjb3ZlcnlQb2xpY3kgaXMgJ3JlY292ZXJhYmxlJy5cbiAgICpcbiAgICogQGRlZmF1bHRWYWx1ZSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IG1hbmFnZWRCYWNrdXBFbmFibGVkPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUaGUgVG9waWNzIHRhcmdldCBhdWRpZW5jZVxuICovXG5leHBvcnQgdHlwZSBUb3BpY0F1ZGllbmNlID0gJ2NvbXBvbmVudC1pbnRlcm5hbCcgfCAnY29tcGFueS1pbnRlcm5hbCc7XG5cbi8qKlxuICogVGhlIFRvcGljcyByZWNvdmVyeSBwb2xpY3kgZ3VhcmFudGVlZCBieSB0aGUgcHJvZHVjZXJcbiAqL1xuZXhwb3J0IHR5cGUgVG9waWNSZWNvdmVyeVBvbGljeSA9ICdub25lJyB8ICdyZWNvdmVyYWJsZSc7XG5cbi8qKlxuICogQ29uc3RydWN0IHRvIGNyZWF0ZSBhIGthZmthIHRvcGljLlxuICpcbiAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgS2Fma2FUb3BpY1Y0fSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBjbGFzcyBLYWZrYVRvcGljIGV4dGVuZHMgQ29uc3RydWN0IHtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogS2Fma2FUb3BpY1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuXG4gICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkRGVwcmVjYXRpb24oJ0thZmthVG9waWMnLCBcIlVzZSAnS2Fma2FUb3BpY1Y0JyFcIik7XG5cbiAgICBuZXcgQ2ZuUmVzb3VyY2UodGhpcywgJ0thZmthVG9waWMnLCB7XG4gICAgICB0eXBlOiAnQ3VzdG9tOjpLYWZrYVRvcGljJyxcbiAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgLi4ubWFwUHJvcGVydGllcyh0aGlzLCBwcm9wcyksXG4gICAgICAgIFZlcnNpb246ICczJyxcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih2YWxpZGF0b3IocHJvcHMpKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdCB0byBjcmVhdGUgYSBrYWZrYSB0b3BpYy5cbiAqL1xuZXhwb3J0IGNsYXNzIEthZmthVG9waWNWNCBleHRlbmRzIENvbnN0cnVjdCB7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEthZmthVG9waWNWNFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIG5ldyBDZm5SZXNvdXJjZSh0aGlzLCAnS2Fma2FUb3BpYycsIHtcbiAgICAgIHR5cGU6ICdDdXN0b206OkthZmthVG9waWMnLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICAuLi5tYXBQcm9wZXJ0aWVzKHRoaXMsIHByb3BzKSxcbiAgICAgICAgVmVyc2lvbjogJzQnLFxuICAgICAgICBBdWRpZW5jZTogcHJvcHMubWV0YWRhdGEuYXVkaWVuY2UsXG4gICAgICAgIFJlY292ZXJ5UG9saWN5OiBwcm9wcy5tZXRhZGF0YS5yZWNvdmVyeVBvbGljeSxcbiAgICAgICAgTWFuYWdlZEJhY2t1cEVuYWJsZWQ6IHByb3BzLm1hbmFnZWRCYWNrdXBFbmFibGVkLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKHZhbGlkYXRvcihwcm9wcykpO1xuICAgIHRoaXMubm9kZS5hZGRWYWxpZGF0aW9uKGJhY2t1cFByb3BlcnRpZXNWYWxpZGF0b3IocHJvcHMpKTtcbiAgfVxufVxuXG5jb25zdCB2YWxpZGF0b3IgPSAocHJvcHM6IEthZmthVG9waWNQcm9wcykgPT4ge1xuICByZXR1cm4ge1xuICAgIHZhbGlkYXRlOiAoKTogc3RyaW5nW10gPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgIGlmICghcHJvcHMubmFtZS5tYXRjaCgvXltBLVphLXowLTkuLV0rJC8pKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKCdJbnZhbGlkIFtuYW1lXTogZXhwZWN0aW5nIHRvcGljIG5hbWUgdG8gbWF0Y2ggdGhlIHJlZyBleHAgYFtBLVphLXowLTkuLV0rYC4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFOdW1iZXIuaXNJbnRlZ2VyKHByb3BzLm51bWJlck9mUGFydGl0aW9ucykgfHwgcHJvcHMubnVtYmVyT2ZQYXJ0aXRpb25zIDwgMSkge1xuICAgICAgICByZXN1bHQucHVzaChgSW52YWxpZCBbbnVtYmVyT2ZQYXJ0aXRpb25zXTogZXhwZWN0aW5nIG51bWJlciBvZiBwYXJ0aXRpb25zIHRvIGJlIGEgcG9zaXRpdmUgaW50ZWdlciBidXQgZ290ICR7cHJvcHMubnVtYmVyT2ZQYXJ0aXRpb25zfS5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLnJlcGxpY2F0aW9uRmFjdG9yICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAoIU51bWJlci5pc0ludGVnZXIocHJvcHMucmVwbGljYXRpb25GYWN0b3IpIHx8IHByb3BzLnJlcGxpY2F0aW9uRmFjdG9yIDwgMSB8fCBwcm9wcy5yZXBsaWNhdGlvbkZhY3RvciA+IDMpKSB7XG4gICAgICAgIHJlc3VsdC5wdXNoKCdJbnZhbGlkIFtyZXBsaWNhdGlvbkZhY3Rvcl06IGV4cGVjdGluZyBhbiBpbnRlZ2VyIGJldHdlZW4gMSBhbmQgMy4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKHByb3BzLm1ldGFkYXRhLmV2ZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJ0ludmFsaWQgW21ldGFkYXRhXTogZXhwZWN0aW5nIFtldmVudHNdIHRvIGhhdmUgYXQgbGVhc3Qgb24gZWxlbWVudC4nKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFwcm9wcy5pc0xvZ0NvbXBhY3RlZCAmJiBwcm9wcy5sb2dDb21wYWN0aW9uUHJvcGVydGllcykge1xuICAgICAgICByZXN1bHQucHVzaCgnSW52YWxpZCBbbG9nQ29tcGFjdGlvblByb3BlcnRpZXNdOiBsb2cgY29tcGFjdGlvbiBpcyBkaXNhYmxlZCBzbyBwcm9wZXJ0aWVzIG11c3QgYmUgdW5kZWZpbmVkLicpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH0sXG4gIH07XG59O1xuXG5jb25zdCBiYWNrdXBQcm9wZXJ0aWVzVmFsaWRhdG9yID0gKHByb3BzOiBLYWZrYVRvcGljVjRQcm9wcykgPT4ge1xuICByZXR1cm4ge1xuICAgIHZhbGlkYXRlOiAoKTogc3RyaW5nW10gPT4ge1xuICAgICAgY29uc3QgcmVzdWx0ID0gW107XG5cbiAgICAgIGlmIChwcm9wcy5tYW5hZ2VkQmFja3VwRW5hYmxlZCAmJiAhcHJvcHMuaXNMb2dDb21wYWN0ZWQpIHtcbiAgICAgICAgcmVzdWx0LnB1c2goJ0ludmFsaWQgW21hbmFnZWRCYWNrdXBFbmFibGVkXTogbWFuYWdlZCBiYWNrdXAgY2FuIG9ubHkgYmUgZW5hYmxlZCBmb3IgbG9nIGNvbXBhY3RlZCB0b3BpY3MuJyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wcy5tYW5hZ2VkQmFja3VwRW5hYmxlZCAmJiBwcm9wcy5tZXRhZGF0YS5yZWNvdmVyeVBvbGljeSAhPT0gJ3JlY292ZXJhYmxlJykge1xuICAgICAgICByZXN1bHQucHVzaCgnSW52YWxpZCBbbWFuYWdlZEJhY2t1cEVuYWJsZWRdOiB0b3BpY3Mgd2l0aCBtYW5hZ2VkQmFja3VwRW5hYmxlZCBoYXZlIHRvIGhhdmUgcmVjb3ZlcnkgcG9saWN5IFwicmVjb3ZlcmFibGVcIi4nKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9LFxuICB9O1xuXG59O1xuXG5jb25zdCBtYXBQcm9wZXJ0aWVzID0gKHNjb3BlOiBJQ29uc3RydWN0LCBwcm9wczogS2Fma2FUb3BpY1Byb3BzIHwgS2Fma2FUb3BpY1Y0UHJvcHMpID0+IHtcbiAgY29uc3QgdGVhbUVtYWlsID0gUmlvTGFuZGluZ1pvbmUuZ2V0VGVhbUVtYWlsUGFyYW1ldGVyKHNjb3BlKS5zdHJpbmdWYWx1ZTtcblxuICBjb25zdCBldmVudHMgPSBwcm9wcy5tZXRhZGF0YS5ldmVudHMubWFwKHNvdXJjZSA9PiB7XG4gICAgbmV3IEthZmthRXZlbnRTcGVjKHNjb3BlLCBgJHtzb3VyY2UuZXZlbnROYW1lLnJlcGxhY2UoL1xcLi9nLCAnXycpfS1FdmVudFNwZWNgLCB7IHNvdXJjZSB9KTtcbiAgICByZXR1cm4gc291cmNlLmV2ZW50TmFtZTtcbiAgfSk7XG5cbiAgY29uc3QgZGVsZXRlUmV0ZW50aW9uRHVyYXRpb24gPSBwcm9wcy5sb2dDb21wYWN0aW9uUHJvcGVydGllcz8uZGVsZXRlUmV0ZW50aW9uID8/IER1cmF0aW9uLmRheXMoNyk7XG4gIGlmIChwcm9wcy5hY2wuZGVsZXRlICE9IHVuZGVmaW5lZCAmJiBwcm9wcy5hY2wuZGVsZXRlLmxlbmd0aCA+IDApIHtcbiAgICBjb25zdCBhbm5vdGF0aW9ucyA9IGNkay5Bbm5vdGF0aW9ucy5vZihjZGsuU3RhY2sub2Yoc2NvcGUpKTtcbiAgICBhbm5vdGF0aW9ucy5hZGRXYXJuaW5nVjIoXG4gICAgICBgQHJpby1jbG91ZC9jZGstdjItY29uc3RydWN0cy9rYWZrYS9rYWZrYS10b3BpYy8ke3Byb3BzLm5hbWV9L0RlbGV0aW9uUG9saWN5YCxcbiAgICAgIGBcbiDinYwgWW91IGhhdmUgc2V0IFwiZGVsZXRlXCIgcGVybWlzc2lvbiBmb3Iga2Fma2EtdG9waWMgJHtwcm9wcy5uYW1lfS4gWW91IHByb2JhYmx5IGRvIG5vdCBuZWVkIHRoaXMuIFBsZWFzZSB1c2UgdGhpcyBvbmx5IGlmIHlvdSBrbm93IHdoYXQgeW91IGFyZSBkb2luZy5cbmAsXG4gICAgKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIFNlcnZpY2VUb2tlbjogJ2Fybjphd3M6c25zOmV1LXdlc3QtMToxODY5OTM3NTc3MzQ6ZHAtdG9waWMtbWFuYWdlci1zbnMtdG9waWMnLFxuICAgIFRvcGljTmFtZTogcHJvcHMubmFtZSxcbiAgICBEZXNjcmlwdGlvbjogcHJvcHMubWV0YWRhdGEuZGVzY3JpcHRpb24sXG4gICAgRXZlbnRzOiBldmVudHMsXG4gICAgTnVtYmVyT2ZQYXJ0aXRpb25zOiBwcm9wcy5udW1iZXJPZlBhcnRpdGlvbnMsXG4gICAgUmVwbGljYXRpb25GYWN0b3I6IHByb3BzLnJlcGxpY2F0aW9uRmFjdG9yID8/IDMsXG4gICAgUmV0ZW50aW9uTXM6IChwcm9wcy5yZXRlbnRpb24gPz8gRHVyYXRpb24uZGF5cyg3KSkudG9NaWxsaXNlY29uZHMoKSxcbiAgICBEZWxldGVSZXRlbnRpb25NczogcHJvcHMuaXNMb2dDb21wYWN0ZWQgPyBkZWxldGVSZXRlbnRpb25EdXJhdGlvbi50b01pbGxpc2Vjb25kcygpIDogdW5kZWZpbmVkLFxuICAgIEluc3RhbnREZWxldGlvbkVuYWJsZWQ6IHByb3BzLmluc3RhbnREZWxldGlvbkVuYWJsZWQgPz8gZmFsc2UsXG4gICAgQ2xlYW51cFBvbGljeTogcHJvcHMuaXNMb2dDb21wYWN0ZWQgPyAnY29tcGFjdCcgOiAnZGVsZXRlJyxcbiAgICBUZWFtRW1haWw6IHRlYW1FbWFpbCxcbiAgICBBQ0w6IHtcbiAgICAgIFJlYWQ6IHByb3BzLmFjbC5yZWFkLFxuICAgICAgV3JpdGU6IHByb3BzLmFjbC53cml0ZSxcbiAgICAgIERlbGV0ZTogcHJvcHMuYWNsLmRlbGV0ZSxcbiAgICB9LFxuICB9O1xufTsiXX0=
|
package/mkdocs.yaml
ADDED
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
site_name: 'RIO Kafka backup documentation'
|
|
2
|
+
|
|
3
|
+
nav:
|
|
4
|
+
- "User Guide": index.md
|
|
5
|
+
- "Developer Guide": developers-readme.md
|
|
6
|
+
- "API Docs": API.md
|
|
7
|
+
- "Changelog": changelog.md
|
|
8
|
+
- "CDK v1 Migration Guide": migration_guide.md
|
|
9
|
+
- "Contribution": contribution.md
|
|
10
|
+
|
|
11
|
+
plugins:
|
|
12
|
+
- techdocs-core
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
],
|
|
16
16
|
"main": "lib/index.js",
|
|
17
17
|
"license": "Apache-2.0",
|
|
18
|
-
"version": "6.
|
|
18
|
+
"version": "6.2.1",
|
|
19
19
|
"types": "lib/index.d.ts",
|
|
20
20
|
"stability": "stable",
|
|
21
21
|
"exports": {
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"compareUrlFormat": "{{host}}/projects/RIODEV/repos/cdk-v2-constructs/compare/commits?targetBranch=refs%2Ftags%2F{{previousTag}}&sourceBranch=refs%2Ftags%2F{{currentTag}}",
|
|
41
41
|
"issueUrlFormat": "https://jira.collaboration-man.com/browse/{{id}}",
|
|
42
42
|
"scripts": {
|
|
43
|
-
"postbump": "git add API.md"
|
|
43
|
+
"postbump": "git add docs/API.md"
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
"scripts": {
|
|
@@ -51,8 +51,9 @@
|
|
|
51
51
|
"bump": "commit-and-tag-version -a",
|
|
52
52
|
"test": "jest --coverage",
|
|
53
53
|
"test:watch": "jest --watch",
|
|
54
|
-
"eslint": "eslint --ext .ts,.tsx --
|
|
55
|
-
"
|
|
54
|
+
"eslint": "eslint --ext .ts,.tsx --no-error-on-unmatched-pattern src test",
|
|
55
|
+
"eslint-fix": "eslint --ext .ts,.tsx --fix --no-error-on-unmatched-pattern src test",
|
|
56
|
+
"docgen": "jsii-docgen -o ./docs/API.md",
|
|
56
57
|
"cdk": "cdk",
|
|
57
58
|
"release:check": "node release-commit-check.js",
|
|
58
59
|
"release:build": "npm run build && npm run docgen && npm run bump",
|
|
@@ -99,6 +100,9 @@
|
|
|
99
100
|
"@datadog/datadog-api-client": "^1.24.0",
|
|
100
101
|
"js-yaml": "~4.1.0"
|
|
101
102
|
},
|
|
103
|
+
"optionalDependencies": {
|
|
104
|
+
"@pepperize/cdk-autoscaling-gitlab-runner": "^0.2.613"
|
|
105
|
+
},
|
|
102
106
|
"bundledDependencies": [
|
|
103
107
|
"js-yaml"
|
|
104
108
|
],
|
package/version.json
CHANGED
|
File without changes
|