@aws-cdk/aws-msk-alpha 2.30.0-alpha.0 → 2.31.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsii +90 -77
- package/.jsii.tabl.json +147 -72
- package/README.md +37 -0
- package/lib/cluster-version.js +1 -1
- package/lib/cluster.js +55 -5
- package/package.json +9 -8
- package/rosetta/default.ts-fixture +2 -1
package/lib/cluster.js
CHANGED
|
@@ -12,6 +12,8 @@ const core = require("aws-cdk-lib");
|
|
|
12
12
|
const cr = require("aws-cdk-lib/custom-resources");
|
|
13
13
|
const uniqueid_1 = require("constructs/lib/private/uniqueid");
|
|
14
14
|
const aws_msk_1 = require("aws-cdk-lib/aws-msk");
|
|
15
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
16
|
+
const cx_api_1 = require("aws-cdk-lib/cx-api");
|
|
15
17
|
/**
|
|
16
18
|
* A new or imported MSK Cluster.
|
|
17
19
|
*/
|
|
@@ -111,7 +113,7 @@ class ClientAuthentication {
|
|
|
111
113
|
}
|
|
112
114
|
exports.ClientAuthentication = ClientAuthentication;
|
|
113
115
|
_a = JSII_RTTI_SYMBOL_1;
|
|
114
|
-
ClientAuthentication[_a] = { fqn: "@aws-cdk/aws-msk-alpha.ClientAuthentication", version: "2.
|
|
116
|
+
ClientAuthentication[_a] = { fqn: "@aws-cdk/aws-msk-alpha.ClientAuthentication", version: "2.31.2-alpha.0" };
|
|
115
117
|
/**
|
|
116
118
|
* Create a MSK Cluster.
|
|
117
119
|
*
|
|
@@ -196,6 +198,54 @@ class Cluster extends ClusterBase {
|
|
|
196
198
|
},
|
|
197
199
|
}
|
|
198
200
|
: undefined;
|
|
201
|
+
const loggingBucket = props.logging?.s3?.bucket;
|
|
202
|
+
if (loggingBucket && aws_cdk_lib_1.FeatureFlags.of(this).isEnabled(cx_api_1.S3_CREATE_DEFAULT_LOGGING_POLICY)) {
|
|
203
|
+
const stack = core.Stack.of(this);
|
|
204
|
+
loggingBucket.addToResourcePolicy(new iam.PolicyStatement({
|
|
205
|
+
effect: iam.Effect.ALLOW,
|
|
206
|
+
principals: [
|
|
207
|
+
new iam.ServicePrincipal('delivery.logs.amazonaws.com'),
|
|
208
|
+
],
|
|
209
|
+
resources: [
|
|
210
|
+
loggingBucket.arnForObjects(`AWSLogs/${stack.account}/*`),
|
|
211
|
+
],
|
|
212
|
+
actions: ['s3:PutObject'],
|
|
213
|
+
conditions: {
|
|
214
|
+
StringEquals: {
|
|
215
|
+
's3:x-amz-acl': 'bucket-owner-full-control',
|
|
216
|
+
'aws:SourceAccount': stack.account,
|
|
217
|
+
},
|
|
218
|
+
ArnLike: {
|
|
219
|
+
'aws:SourceArn': stack.formatArn({
|
|
220
|
+
service: 'logs',
|
|
221
|
+
resource: '*',
|
|
222
|
+
}),
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
}));
|
|
226
|
+
loggingBucket.addToResourcePolicy(new iam.PolicyStatement({
|
|
227
|
+
effect: iam.Effect.ALLOW,
|
|
228
|
+
principals: [
|
|
229
|
+
new iam.ServicePrincipal('delivery.logs.amazonaws.com'),
|
|
230
|
+
],
|
|
231
|
+
resources: [loggingBucket.bucketArn],
|
|
232
|
+
actions: [
|
|
233
|
+
's3:GetBucketAcl',
|
|
234
|
+
's3:ListBucket',
|
|
235
|
+
],
|
|
236
|
+
conditions: {
|
|
237
|
+
StringEquals: {
|
|
238
|
+
'aws:SourceAccount': stack.account,
|
|
239
|
+
},
|
|
240
|
+
ArnLike: {
|
|
241
|
+
'aws:SourceArn': stack.formatArn({
|
|
242
|
+
service: 'logs',
|
|
243
|
+
resource: '*',
|
|
244
|
+
}),
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
}));
|
|
248
|
+
}
|
|
199
249
|
const loggingInfo = {
|
|
200
250
|
brokerLogs: {
|
|
201
251
|
cloudWatchLogs: {
|
|
@@ -208,8 +258,8 @@ class Cluster extends ClusterBase {
|
|
|
208
258
|
deliveryStream: props.logging?.firehoseDeliveryStreamName,
|
|
209
259
|
},
|
|
210
260
|
s3: {
|
|
211
|
-
enabled:
|
|
212
|
-
bucket:
|
|
261
|
+
enabled: loggingBucket !== undefined,
|
|
262
|
+
bucket: loggingBucket?.bucketName,
|
|
213
263
|
prefix: props.logging?.s3?.prefix,
|
|
214
264
|
},
|
|
215
265
|
},
|
|
@@ -460,5 +510,5 @@ class Cluster extends ClusterBase {
|
|
|
460
510
|
}
|
|
461
511
|
exports.Cluster = Cluster;
|
|
462
512
|
_b = JSII_RTTI_SYMBOL_1;
|
|
463
|
-
Cluster[_b] = { fqn: "@aws-cdk/aws-msk-alpha.Cluster", version: "2.
|
|
464
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFHM0MsaUVBQWlFO0FBQ2pFLG9DQUFvQztBQUNwQyxtREFBbUQ7QUFFbkQsOERBQTREO0FBRTVELGlEQUFpRDtBQXFCakQ7O0dBRUc7QUFDSCxNQUFlLFdBQVksU0FBUSxJQUFJLENBQUMsUUFBUTtJQU05QywwQ0FBMEM7SUFDMUMsSUFBVyxXQUFXO1FBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztTQUMxRTtRQUNELE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztLQUMxQjtDQUNGO0FBK0hEOzs7O0dBSUc7QUFDSCxJQUFZLHNCQWlCWDtBQWpCRCxXQUFZLHNCQUFzQjtJQUNoQzs7T0FFRztJQUNILDZDQUFtQixDQUFBO0lBQ25COztPQUVHO0lBQ0gsbURBQXlCLENBQUE7SUFDekI7O09BRUc7SUFDSCx1RUFBNkMsQ0FBQTtJQUM3Qzs7T0FFRztJQUNILDZFQUFtRCxDQUFBO0FBQ3JELENBQUMsRUFqQlcsc0JBQXNCLEdBQXRCLDhCQUFzQixLQUF0Qiw4QkFBc0IsUUFpQmpDO0FBb0VEOztHQUVHO0FBQ0gsSUFBWSxzQkFhWDtBQWJELFdBQVksc0JBQXNCO0lBQ2hDOztPQUVHO0lBQ0gscUNBQVcsQ0FBQTtJQUNYOztPQUVHO0lBQ0gseURBQStCLENBQUE7SUFDL0I7O09BRUc7SUFDSCxpREFBdUIsQ0FBQTtBQUN6QixDQUFDLEVBYlcsc0JBQXNCLEdBQXRCLDhCQUFzQixLQUF0Qiw4QkFBc0IsUUFhakM7QUE2REQ7O0dBRUc7QUFDSCxNQUFhLG9CQUFvQjtJQWUvQjs7O09BR0c7SUFDSCxZQUNrQixTQUF5QixFQUN6QixRQUF1QjtRQUR2QixjQUFTLEdB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QUMsU0FBUyxDQUFDLEVBQUUsRUFBRTtnQkFDbEYsUUFBUSxFQUFFO29CQUNSLE9BQU8sRUFBRSxPQUFPO29CQUNoQixNQUFNLEVBQUUsMkJBQTJCO29CQUNuQyxVQUFVLEVBQUU7d0JBQ1YsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO3dCQUMzQixhQUFhLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztxQkFDekQ7b0JBQ0Qsa0JBQWtCLEVBQUUsRUFBRSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQyxhQUFhLENBQUM7aUJBQzVEO2dCQUNELE1BQU0sRUFBRSxFQUFFLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDO29CQUNoRCxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUM7d0JBQ3RCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO3dCQUM1QixTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLEVBQUUsTUFBTSxDQUFDO3FCQUNyRCxDQUFDO29CQUNGLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzt3QkFDdEIsT0FBTyxFQUFFLENBQUMsaUNBQWlDLENBQUM7d0JBQzVDLFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUM7cUJBQzdCLENBQUM7aUJBQ0gsQ0FBQzthQUNILENBQUMsQ0FBQztTQUNKO2FBQU07WUFDTCxNQUFNLEtBQUssQ0FDVCxpRkFBaUYsQ0FDbEYsQ0FBQztTQUNIO0tBQ0Y7O0FBOVpILDBCQStaQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFjbXBjYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYWNtcGNhJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgczMgZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCAqIGFzIHNlY3JldHNtYW5hZ2VyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zZWNyZXRzbWFuYWdlcic7XG5pbXBvcnQgKiBhcyBjb3JlIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNyIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0ICogYXMgY29uc3RydWN0cyBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGFkZHJlc3NPZiB9IGZyb20gJ2NvbnN0cnVjdHMvbGliL3ByaXZhdGUvdW5pcXVlaWQnO1xuaW1wb3J0IHsgS2Fma2FWZXJzaW9uIH0gZnJvbSAnLi8nO1xuaW1wb3J0IHsgQ2ZuQ2x1c3RlciB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1tc2snO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBNU0sgQ2x1c3RlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDbHVzdGVyIGV4dGVuZHMgY29yZS5JUmVzb3VyY2UsIGVjMi5JQ29ubmVjdGFibGUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiBjbHVzdGVyLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwaHlzaWNhbCBuYW1lIG9mIHRoZSBjbHVzdGVyLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgbmV3IG9yIGltcG9ydGVkIE1TSyBDbHVzdGVyLlxuICovXG5hYnN0cmFjdCBjbGFzcyBDbHVzdGVyQmFzZSBleHRlbmRzIGNvcmUuUmVzb3VyY2UgaW1wbGVtZW50cyBJQ2x1c3RlciB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBjbHVzdGVyQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBjbHVzdGVyTmFtZTogc3RyaW5nO1xuICAvKiogQGludGVybmFsICovXG4gIHByb3RlY3RlZCBfY29ubmVjdGlvbnM6IGVjMi5Db25uZWN0aW9ucyB8IHVuZGVmaW5lZDtcblxuICAvKiogTWFuYWdlcyBjb25uZWN0aW9ucyBmb3IgdGhlIGNsdXN0ZXIgKi9cbiAgcHVibGljIGdldCBjb25uZWN0aW9ucygpOiBlYzIuQ29ubmVjdGlvbnMge1xuICAgIGlmICghdGhpcy5fY29ubmVjdGlvbnMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQW4gaW1wb3J0ZWQgQ2x1c3RlciBjYW5ub3QgbWFuYWdlIGl0cyBzZWN1cml0eSBncm91cHMnKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2Nvbm5lY3Rpb25zO1xuICB9XG59XG5cbi8qKlxuICogIFByb3BlcnRpZXMgZm9yIGEgTVNLIENsdXN0ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIHBoeXNpY2FsIG5hbWUgb2YgdGhlIGNsdXN0ZXIuXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyTmFtZTogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgQXBhY2hlIEthZmthLlxuICAgKi9cbiAgcmVhZG9ubHkga2Fma2FWZXJzaW9uOiBLYWZrYVZlcnNpb247XG4gIC8qKlxuICAgKiBOdW1iZXIgb2YgQXBhY2hlIEthZmthIGJyb2tlcnMgZGVwbG95ZWQgaW4gZWFjaCBBdmFpbGFiaWxpdHkgWm9uZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgcmVhZG9ubHkgbnVtYmVyT2ZCcm9rZXJOb2Rlcz86IG51bWJlcjtcbiAgLyoqXG4gICAqIERlZmluZXMgdGhlIHZpcnR1YWwgbmV0d29ya2luZyBlbnZpcm9ubWVudCBmb3IgdGhpcyBjbHVzdGVyLlxuICAgKiBNdXN0IGhhdmUgYXQgbGVhc3QgMiBzdWJuZXRzIGluIHR3byBkaWZmZXJlbnQgQVpzLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcbiAgLyoqXG4gICAqIFdoZXJlIHRvIHBsYWNlIHRoZSBub2RlcyB3aXRoaW4gdGhlIFZQQy5cbiAgICogQW1hem9uIE1TSyBkaXN0cmlidXRlcyB0aGUgYnJva2VyIG5vZGVzIGV2ZW5seSBhY3Jvc3MgdGhlIHN1Ym5ldHMgdGhhdCB5b3Ugc3BlY2lmeS5cbiAgICogVGhlIHN1Ym5ldHMgdGhhdCB5b3Ugc3BlY2lmeSBtdXN0IGJlIGluIGRpc3RpbmN0IEF2YWlsYWJpbGl0eSBab25lcy5cbiAgICogQ2xpZW50IHN1Ym5ldHMgY2FuJ3QgYmUgaW4gQXZhaWxhYmlsaXR5IFpvbmUgdXMtZWFzdC0xZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgVnBjIGRlZmF1bHQgc3RyYXRlZ3kgaWYgbm90IHNwZWNpZmllZC5cbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuICAvKipcbiAgICogVGhlIEVDMiBpbnN0YW5jZSB0eXBlIHRoYXQgeW91IHdhbnQgQW1hem9uIE1TSyB0byB1c2Ugd2hlbiBpdCBjcmVhdGVzIHlvdXIgYnJva2Vycy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbXNrL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9tc2stY3JlYXRlLWNsdXN0ZXIuaHRtbCNicm9rZXItaW5zdGFuY2UtdHlwZXNcbiAgICogQGRlZmF1bHQga2Fma2EubTUubGFyZ2VcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlVHlwZT86IGVjMi5JbnN0YW5jZVR5cGU7XG4gIC8qKlxuICAgKiBUaGUgQVdTIHNlY3VyaXR5IGdyb3VwcyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgZWxhc3RpYyBuZXR3b3JrIGludGVyZmFjZXMgaW4gb3JkZXIgdG8gc3BlY2lmeSB3aG8gY2FuXG4gICAqIGNvbm5lY3QgdG8gYW5kIGNvbW11bmljYXRlIHdpdGggdGhlIEFtYXpvbiBNU0sgY2x1c3Rlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBjcmVhdGUgbmV3IHNlY3VyaXR5IGdyb3VwXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IGVjMi5JU2VjdXJpdHlHcm91cFtdO1xuICAvKipcbiAgICogSW5mb3JtYXRpb24gYWJvdXQgc3RvcmFnZSB2b2x1bWVzIGF0dGFjaGVkIHRvIE1TSyBicm9rZXIgbm9kZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gMTAwMCBHaUIgRUJTIHZvbHVtZVxuICAgKi9cbiAgcmVhZG9ubHkgZWJzU3RvcmFnZUluZm8/OiBFYnNTdG9yYWdlSW5mbztcbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gTVNLIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGZvciB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBjb25maWd1cmF0aW9uSW5mbz86IENsdXN0ZXJDb25maWd1cmF0aW9uSW5mbztcbiAgLyoqXG4gICAqIENsdXN0ZXIgbW9uaXRvcmluZyBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIERFRkFVTFQgbW9uaXRvcmluZyBsZXZlbFxuICAgKi9cbiAgcmVhZG9ubHkgbW9uaXRvcmluZz86IE1vbml0b3JpbmdDb25maWd1cmF0aW9uO1xuICAvKipcbiAgICogQ29uZmlndXJlIHlvdXIgTVNLIGNsdXN0ZXIgdG8gc2VuZCBicm9rZXIgbG9ncyB0byBkaWZmZXJlbnQgZGVzdGluYXRpb24gdHlwZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGlzYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IGxvZ2dpbmc/OiBCcm9rZXJMb2dnaW5nO1xuICAvKipcbiAgICogQ29uZmlnIGRldGFpbHMgZm9yIGVuY3J5cHRpb24gaW4gdHJhbnNpdC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbmFibGVkXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uSW5UcmFuc2l0PzogRW5jcnlwdGlvbkluVHJhbnNpdENvbmZpZztcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9uLlxuICAgKiBNU0sgc3VwcG9ydHMgdXNpbmcgcHJpdmF0ZSBUTFMgY2VydGlmaWNhdGVzIG9yIFNBU0wvU0NSQU0gdG8gYXV0aGVudGljYXRlIHRoZSBpZGVudGl0eSBvZiBjbGllbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRpc2FibGVkXG4gICAqL1xuICByZWFkb25seSBjbGllbnRBdXRoZW50aWNhdGlvbj86IENsaWVudEF1dGhlbnRpY2F0aW9uO1xuICAvKipcbiAgICogV2hhdCB0byBkbyB3aGVuIHRoaXMgcmVzb3VyY2UgaXMgZGVsZXRlZCBmcm9tIGEgc3RhY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IFJlbW92YWxQb2xpY3kuUkVUQUlOXG4gICAqL1xuICByZWFkb25seSByZW1vdmFsUG9saWN5PzogY29yZS5SZW1vdmFsUG9saWN5O1xufVxuXG4vKipcbiAqIEVCUyB2b2x1bWUgaW5mb3JtYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWJzU3RvcmFnZUluZm8ge1xuICAvKipcbiAgICogVGhlIHNpemUgaW4gR2lCIG9mIHRoZSBFQlMgdm9sdW1lIGZvciB0aGUgZGF0YSBkcml2ZSBvbiBlYWNoIGJyb2tlciBub2RlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxMDAwXG4gICAqL1xuICByZWFkb25seSB2b2x1bWVTaXplPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIEFXUyBLTVMga2V5IGZvciBlbmNyeXB0aW5nIGRhdGEgYXQgcmVzdC5cbiAgICpcbiAgICogQGRlZmF1bHQgVXNlcyBBV1MgbWFuYWdlZCBDTUsgKGF3cy9rYWZrYSlcbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBrbXMuSUtleTtcbn1cblxuLyoqXG4gKiBUaGUgQW1hem9uIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgdGhlIGNsdXN0ZXIuXG4gKiBOb3RlOiBUaGVyZSBpcyBjdXJyZW50bHkgbm8gQ2xvdWRmb3JtYXRpb24gUmVzb3VyY2UgdG8gY3JlYXRlIGEgQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENsdXN0ZXJDb25maWd1cmF0aW9uSW5mbyB7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZS5cbiAgICogRm9yIGV4YW1wbGUsIGFybjphd3M6a2Fma2E6dXMtZWFzdC0xOjEyMzQ1Njc4OTAxMjpjb25maWd1cmF0aW9uL2V4YW1wbGUtY29uZmlndXJhdGlvbi1uYW1lL2FiY2RhYmNkLTEyMzQtYWJjZC0xMjM0LWFiY2QxMjNlOGU4ZS0xLlxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgcmV2aXNpb24gb2YgdGhlIEFtYXpvbiBNU0sgY29uZmlndXJhdGlvbiB0byB1c2UuXG4gICAqL1xuICByZWFkb25seSByZXZpc2lvbjogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoZSBsZXZlbCBvZiBtb25pdG9yaW5nIGZvciB0aGUgTVNLIGNsdXN0ZXJcbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9tc2svbGF0ZXN0L2RldmVsb3Blcmd1aWRlL21vbml0b3JpbmcuaHRtbCNtZXRyaWNzLWRldGFpbHNcbiAqL1xuZXhwb3J0IGVudW0gQ2x1c3Rlck1vbml0b3JpbmdMZXZlbCB7XG4gIC8qKlxuICAgKiBEZWZhdWx0IG1ldHJpY3MgYXJlIHRoZSBlc3NlbnRpYWwgbWV0cmljcyB0byBtb25pdG9yLlxuICAgKi9cbiAgREVGQVVMVCA9ICdERUZBVUxUJyxcbiAgLyoqXG4gICAqIFBlciBCcm9rZXIgbWV0cmljcyBnaXZlIHlvdSBtZXRyaWNzIGF0IHRoZSBicm9rZXIgbGV2ZWwuXG4gICAqL1xuICBQRVJfQlJPS0VSID0gJ1BFUl9CUk9LRVInLFxuICAvKipcbiAgICogUGVyIFRvcGljIFBlciBCcm9rZXIgbWV0cmljcyBoZWxwIHlvdSB1bmRlcnN0YW5kIHZvbHVtZSBhdCB0aGUgdG9waWMgbGV2ZWwuXG4gICAqL1xuICBQRVJfVE9QSUNfUEVSX0JST0tFUiA9ICdQRVJfVE9QSUNfUEVSX0JST0tFUicsXG4gIC8qKlxuICAgKiBQZXIgVG9waWMgUGVyIFBhcnRpdGlvbiBtZXRyaWNzIGhlbHAgeW91IHVuZGVyc3RhbmQgY29uc3VtZXIgZ3JvdXAgbGFnIGF0IHRoZSB0b3BpYyBwYXJ0aXRpb24gbGV2ZWwuXG4gICAqL1xuICBQRVJfVE9QSUNfUEVSX1BBUlRJVElPTiA9ICdQRVJfVE9QSUNfUEVSX1BBUlRJVElPTicsXG59XG5cbi8qKlxuICogTW9uaXRvcmluZyBDb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTW9uaXRvcmluZ0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBsZXZlbCBvZiBtb25pdG9yaW5nIGZvciB0aGUgTVNLIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IERFRkFVTFRcbiAgICovXG4gIHJlYWRvbmx5IGNsdXN0ZXJNb25pdG9yaW5nTGV2ZWw/OiBDbHVzdGVyTW9uaXRvcmluZ0xldmVsO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgeW91IHdhbnQgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIEpNWCBFeHBvcnRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVByb21ldGhldXNKbXhFeHBvcnRlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB5b3Ugd2FudCB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgUHJvbWV0aGV1cyBOb2RlIEV4cG9ydGVyLlxuICAgKlxuICAgKiBZb3UgY2FuIHVzZSB0aGUgUHJvbWV0aGV1cyBOb2RlIEV4cG9ydGVyIHRvIGdldCBDUFUgYW5kIGRpc2sgbWV0cmljcyBmb3IgdGhlIGJyb2tlciBub2Rlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZVByb21ldGhldXNOb2RlRXhwb3J0ZXI/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gZGV0YWlscyByZWxhdGVkIHRvIGJyb2tlciBsb2dzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJyb2tlckxvZ2dpbmcge1xuICAvKipcbiAgICogVGhlIEtpbmVzaXMgRGF0YSBGaXJlaG9zZSBkZWxpdmVyeSBzdHJlYW0gdGhhdCBpcyB0aGUgZGVzdGluYXRpb24gZm9yIGJyb2tlciBsb2dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRpc2FibGVkXG4gICAqL1xuICByZWFkb25seSBmaXJlaG9zZURlbGl2ZXJ5U3RyZWFtTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSBDbG91ZFdhdGNoIExvZ3MgZ3JvdXAgdGhhdCBpcyB0aGUgZGVzdGluYXRpb24gZm9yIGJyb2tlciBsb2dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRpc2FibGVkXG4gICAqL1xuICByZWFkb25seSBjbG91ZHdhdGNoTG9nR3JvdXA/OiBsb2dzLklMb2dHcm91cDtcbiAgLyoqXG4gICAqIERldGFpbHMgb2YgdGhlIEFtYXpvbiBTMyBkZXN0aW5hdGlvbiBmb3IgYnJva2VyIGxvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGlzYWJsZWRcbiAgICovXG4gIHJlYWRvbmx5IHMzPzogUzNMb2dnaW5nQ29uZmlndXJhdGlvbjtcbn1cblxuLyoqXG4gKiBEZXRhaWxzIG9mIHRoZSBBbWF6b24gUzMgZGVzdGluYXRpb24gZm9yIGJyb2tlciBsb2dzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFMzTG9nZ2luZ0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIFMzIGJ1Y2tldCB0aGF0IGlzIHRoZSBkZXN0aW5hdGlvbiBmb3IgYnJva2VyIGxvZ3MuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IHMzLklCdWNrZXQ7XG4gIC8qKlxuICAgKiBUaGUgUzMgcHJlZml4IHRoYXQgaXMgdGhlIGRlc3RpbmF0aW9uIGZvciBicm9rZXIgbG9ncy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwcmVmaXhcbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbmRpY2F0ZXMgdGhlIGVuY3J5cHRpb24gc2V0dGluZyBmb3IgZGF0YSBpbiB0cmFuc2l0IGJldHdlZW4gY2xpZW50cyBhbmQgYnJva2Vycy5cbiAqL1xuZXhwb3J0IGVudW0gQ2xpZW50QnJva2VyRW5jcnlwdGlvbiB7XG4gIC8qKlxuICAgKiBUTFMgbWVhbnMgdGhhdCBjbGllbnQtYnJva2VyIGNvbW11bmljYXRpb24gaXMgZW5hYmxlZCB3aXRoIFRMUyBvbmx5LlxuICAgKi9cbiAgVExTID0gJ1RMUycsXG4gIC8qKlxuICAgKiBUTFNfUExBSU5URVhUIG1lYW5zIHRoYXQgY2xpZW50LWJyb2tlciBjb21tdW5pY2F0aW9uIGlzIGVuYWJsZWQgZm9yIGJvdGggVExTLWVuY3J5cHRlZCwgYXMgd2VsbCBhcyBwbGFpbnRleHQgZGF0YS5cbiAgICovXG4gIFRMU19QTEFJTlRFWFQgPSAnVExTX1BMQUlOVEVYVCcsXG4gIC8qKlxuICAgKiBQTEFJTlRFWFQgbWVhbnMgdGhhdCBjbGllbnQtYnJva2VyIGNvbW11bmljYXRpb24gaXMgZW5hYmxlZCBpbiBwbGFpbnRleHQgb25seS5cbiAgICovXG4gIFBMQUlOVEVYVCA9ICdQTEFJTlRFWFQnLFxufVxuXG4vKipcbiAqIFRoZSBzZXR0aW5ncyBmb3IgZW5jcnlwdGluZyBkYXRhIGluIHRyYW5zaXQuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbXNrL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9tc2stZW5jcnlwdGlvbi5odG1sI21zay1lbmNyeXB0aW9uLWluLXRyYW5zaXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFbmNyeXB0aW9uSW5UcmFuc2l0Q29uZmlnIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGUgZW5jcnlwdGlvbiBzZXR0aW5nIGZvciBkYXRhIGluIHRyYW5zaXQgYmV0d2VlbiBjbGllbnRzIGFuZCBicm9rZXJzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRMU1xuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50QnJva2VyPzogQ2xpZW50QnJva2VyRW5jcnlwdGlvbjtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB0aGF0IGRhdGEgY29tbXVuaWNhdGlvbiBhbW9uZyB0aGUgYnJva2VyIG5vZGVzIG9mIHRoZSBjbHVzdGVyIGlzIGVuY3J5cHRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlSW5DbHVzdGVyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTQVNMIGF1dGhlbnRpY2F0aW9uIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTYXNsQXV0aFByb3BzIHtcbiAgLyoqXG4gICAqIEVuYWJsZSBTQVNML1NDUkFNIGF1dGhlbnRpY2F0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2NyYW0/OiBib29sZWFuO1xuICAvKipcbiAgICogRW5hYmxlIElBTSBhY2Nlc3MgY29udHJvbC5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlhbT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBLTVMgS2V5IHRvIGVuY3J5cHQgU0FTTC9TQ1JBTSBzZWNyZXRzLlxuICAgKlxuICAgKiBZb3UgbXVzdCB1c2UgYSBjdXN0b21lciBtYXN0ZXIga2V5IChDTUspIHdoZW4gY3JlYXRpbmcgdXNlcnMgaW4gc2VjcmV0cyBtYW5hZ2VyLlxuICAgKiBZb3UgY2Fubm90IHVzZSBhIFNlY3JldCB3aXRoIEFtYXpvbiBNU0sgdGhhdCB1c2VzIHRoZSBkZWZhdWx0IFNlY3JldHMgTWFuYWdlciBlbmNyeXB0aW9uIGtleS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBDTUsgd2lsbCBiZSBjcmVhdGVkIHdpdGggYWxpYXMgbXNrL3tjbHVzdGVyTmFtZX0vc2FzbC9zY3JhbVxuICAgKi9cbiAgcmVhZG9ubHkga2V5Pzoga21zLklLZXk7XG59XG5cbi8qKlxuICogVExTIGF1dGhlbnRpY2F0aW9uIHByb3BlcnRpZXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUbHNBdXRoUHJvcHMge1xuICAvKipcbiAgICogTGlzdCBvZiBBQ00gQ2VydGlmaWNhdGUgQXV0aG9yaXRpZXMgdG8gZW5hYmxlIFRMUyBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZUF1dGhvcml0aWVzPzogYWNtcGNhLklDZXJ0aWZpY2F0ZUF1dGhvcml0eVtdO1xufVxuXG4vKipcbiAqIENvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9uLlxuICovXG5leHBvcnQgY2xhc3MgQ2xpZW50QXV0aGVudGljYXRpb24ge1xuICAvKipcbiAgICogU0FTTCBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzYXNsKHByb3BzOiBTYXNsQXV0aFByb3BzKTogQ2xpZW50QXV0aGVudGljYXRpb24ge1xuICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aGVudGljYXRpb24ocHJvcHMsIHVuZGVmaW5lZCk7XG4gIH1cblxuICAvKipcbiAgICogVExTIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHRscyhwcm9wczogVGxzQXV0aFByb3BzKTogQ2xpZW50QXV0aGVudGljYXRpb24ge1xuICAgIHJldHVybiBuZXcgQ2xpZW50QXV0aGVudGljYXRpb24odW5kZWZpbmVkLCBwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHNhc2xQcm9wcyAtIHByb3BlcnRpZXMgZm9yIFNBU0wgYXV0aGVudGljYXRpb25cbiAgICogQHBhcmFtIHRsc1Byb3BzIC0gcHJvcGVydGllcyBmb3IgVExTIGF1dGhlbnRpY2F0aW9uXG4gICAqL1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSBzYXNsUHJvcHM/OiBTYXNsQXV0aFByb3BzLFxuICAgIHB1YmxpYyByZWFkb25seSB0bHNQcm9wcz86IFRsc0F1dGhQcm9wcyxcbiAgKSB7fVxufVxuXG4vKipcbiAqIENyZWF0ZSBhIE1TSyBDbHVzdGVyLlxuICpcbiAqIEByZXNvdXJjZSBBV1M6Ok1TSzo6Q2x1c3RlclxuICovXG5leHBvcnQgY2xhc3MgQ2x1c3RlciBleHRlbmRzIENsdXN0ZXJCYXNlIHtcbiAgLyoqXG4gICAqIFJlZmVyZW5jZSBhbiBleGlzdGluZyBjbHVzdGVyLCBkZWZpbmVkIG91dHNpZGUgb2YgdGhlIENESyBjb2RlLCBieSBuYW1lLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQ2x1c3RlckFybihcbiAgICBzY29wZTogY29uc3RydWN0cy5Db25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBjbHVzdGVyQXJuOiBzdHJpbmcsXG4gICk6IElDbHVzdGVyIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBDbHVzdGVyQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY2x1c3RlckFybiA9IGNsdXN0ZXJBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY2x1c3Rlck5hbWUgPSBjb3JlLkZuLnNlbGVjdCgxLCBjb3JlLkZuLnNwbGl0KCcvJywgY2x1c3RlckFybikpOyAvLyBbJ2FybjpwYXJ0aXRpb246a2Fma2E6cmVnaW9uOmFjY291bnQtaWQnLCBjbHVzdGVyTmFtZSwgY2x1c3RlcklkXVxuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgY2x1c3RlckFybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcbiAgLyoqIEtleSB1c2VkIHRvIGVuY3J5cHQgU0FTTC9TQ1JBTSB1c2VycyAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc2FzbFNjcmFtQXV0aGVudGljYXRpb25LZXk/OiBrbXMuSUtleTtcbiAgcHJpdmF0ZSBfY2x1c3RlckRlc2NyaXB0aW9uPzogY3IuQXdzQ3VzdG9tUmVzb3VyY2U7XG4gIHByaXZhdGUgX2NsdXN0ZXJCb290c3RyYXBCcm9rZXJzPzogY3IuQXdzQ3VzdG9tUmVzb3VyY2U7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ2x1c3RlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLmNsdXN0ZXJOYW1lLFxuICAgIH0pO1xuXG4gICAgY29uc3Qgc3VibmV0U2VsZWN0aW9uID0gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocHJvcHMudnBjU3VibmV0cyk7XG5cbiAgICB0aGlzLl9jb25uZWN0aW9ucyA9IG5ldyBlYzIuQ29ubmVjdGlvbnMoe1xuICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBzID8/IFtcbiAgICAgICAgbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdTZWN1cml0eUdyb3VwJywge1xuICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTVNLIHNlY3VyaXR5IGdyb3VwJyxcbiAgICAgICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuXG4gICAgaWYgKHN1Ym5ldFNlbGVjdGlvbi5zdWJuZXRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICBgQ2x1c3RlciByZXF1aXJlcyBhdCBsZWFzdCAyIHN1Ym5ldHMsIGdvdCAke3N1Ym5ldFNlbGVjdGlvbi5zdWJuZXRzLmxlbmd0aH1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhY29yZS5Ub2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuY2x1c3Rlck5hbWUpICYmXG4gICAgICAhL15bYS16QS1aMC05XSskLy50ZXN0KHByb3BzLmNsdXN0ZXJOYW1lKSAmJlxuICAgICAgcHJvcHMuY2x1c3Rlck5hbWUubGVuZ3RoID4gNjRcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnVGhlIGNsdXN0ZXIgbmFtZSBtdXN0IG9ubHkgY29udGFpbiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBhbmQgaGF2ZSBhIG1heGltdW0gbGVuZ3RoIG9mIDY0IGNoYXJhY3RlcnMuJyArXG4gICAgICAgICAgYGdvdDogJyR7cHJvcHMuY2x1c3Rlck5hbWV9LiBsZW5ndGg6ICR7cHJvcHMuY2x1c3Rlck5hbWUubGVuZ3RofSdgLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbj8uc2FzbFByb3BzPy5pYW0gJiZcbiAgICAgIHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy5zYXNsUHJvcHM/LnNjcmFtXG4gICAgKSB7XG4gICAgICB0aHJvdyBFcnJvcignT25seSBvbmUgY2xpZW50IGF1dGhlbnRpY2F0aW9uIG1ldGhvZCBjYW4gYmUgZW5hYmxlZC4nKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5lbmNyeXB0aW9uSW5UcmFuc2l0Py5jbGllbnRCcm9rZXIgPT09XG4gICAgICAgIENsaWVudEJyb2tlckVuY3J5cHRpb24uUExBSU5URVhUICYmXG4gICAgICBwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvblxuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICdUbyBlbmFibGUgY2xpZW50IGF1dGhlbnRpY2F0aW9uLCB5b3UgbXVzdCBlbmFibGVkIFRMUy1lbmNyeXB0ZWQgdHJhZmZpYyBiZXR3ZWVuIGNsaWVudHMgYW5kIGJyb2tlcnMuJyxcbiAgICAgICk7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHByb3BzLmVuY3J5cHRpb25JblRyYW5zaXQ/LmNsaWVudEJyb2tlciA9PT1cbiAgICAgICAgQ2xpZW50QnJva2VyRW5jcnlwdGlvbi5UTFNfUExBSU5URVhUICYmXG4gICAgICAocHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24/LnNhc2xQcm9wcz8uc2NyYW0gfHxcbiAgICAgICAgcHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24/LnNhc2xQcm9wcz8uaWFtKVxuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoXG4gICAgICAgICdUbyBlbmFibGUgU0FTTC9TQ1JBTSBvciBJQU0gYXV0aGVudGljYXRpb24sIHlvdSBtdXN0IG9ubHkgYWxsb3cgVExTLWVuY3J5cHRlZCB0cmFmZmljIGJldHdlZW4gY2xpZW50cyBhbmQgYnJva2Vycy4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCB2b2x1bWVTaXplID1cbiAgICAgIHByb3BzLmVic1N0b3JhZ2VJbmZvPy52b2x1bWVTaXplID8/IDEwMDA7XG4gICAgLy8gTWluaW11bTogMSBHaUIsIG1heGltdW06IDE2Mzg0IEdpQlxuICAgIGlmICh2b2x1bWVTaXplIDwgMSB8fCB2b2x1bWVTaXplID4gMTYzODQpIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnRUJTIHZvbHVtZSBzaXplIHNob3VsZCBiZSBpbiB0aGUgcmFuZ2UgMS0xNjM4NCcsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlVHlwZSA9IHByb3BzLmluc3RhbmNlVHlwZVxuICAgICAgPyB0aGlzLm1za0luc3RhbmNlVHlwZShwcm9wcy5pbnN0YW5jZVR5cGUpXG4gICAgICA6IHRoaXMubXNrSW5zdGFuY2VUeXBlKFxuICAgICAgICBlYzIuSW5zdGFuY2VUeXBlLm9mKGVjMi5JbnN0YW5jZUNsYXNzLk01LCBlYzIuSW5zdGFuY2VTaXplLkxBUkdFKSxcbiAgICAgICk7XG5cbiAgICBjb25zdCBlbmNyeXB0aW9uQXRSZXN0ID0gcHJvcHMuZWJzU3RvcmFnZUluZm8/LmVuY3J5cHRpb25LZXlcbiAgICAgID8ge1xuICAgICAgICBkYXRhVm9sdW1lS21zS2V5SWQ6XG4gICAgICAgICAgICBwcm9wcy5lYnNTdG9yYWdlSW5mby5lbmNyeXB0aW9uS2V5LmtleUlkLFxuICAgICAgfVxuICAgICAgOiB1bmRlZmluZWQ7IC8vIE1TSyB3aWxsIGNyZWF0ZSB0aGUgbWFuYWdlZCBrZXlcblxuICAgIGNvbnN0IGVuY3J5cHRpb25JblRyYW5zaXQgPSB7XG4gICAgICBjbGllbnRCcm9rZXI6XG4gICAgICAgIHByb3BzLmVuY3J5cHRpb25JblRyYW5zaXQ/LmNsaWVudEJyb2tlciA/P1xuICAgICAgICBDbGllbnRCcm9rZXJFbmNyeXB0aW9uLlRMUyxcbiAgICAgIGluQ2x1c3RlcjogcHJvcHMuZW5jcnlwdGlvbkluVHJhbnNpdD8uZW5hYmxlSW5DbHVzdGVyID8/IHRydWUsXG4gICAgfTtcblxuICAgIGNvbnN0IG9wZW5Nb25pdG9yaW5nID1cbiAgICAgIHByb3BzLm1vbml0b3Jpbmc/LmVuYWJsZVByb21ldGhldXNKbXhFeHBvcnRlciB8fFxuICAgICAgcHJvcHMubW9uaXRvcmluZz8uZW5hYmxlUHJvbWV0aGV1c05vZGVFeHBvcnRlclxuICAgICAgICA/IHtcbiAgICAgICAgICBwcm9tZXRoZXVzOiB7XG4gICAgICAgICAgICBqbXhFeHBvcnRlcjogcHJvcHMubW9uaXRvcmluZz8uZW5hYmxlUHJvbWV0aGV1c0pteEV4cG9ydGVyXG4gICAgICAgICAgICAgID8geyBlbmFibGVkSW5Ccm9rZXI6IHRydWUgfVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICAgIG5vZGVFeHBvcnRlcjogcHJvcHMubW9uaXRvcmluZ1xuICAgICAgICAgICAgICA/LmVuYWJsZVByb21ldGhldXNOb2RlRXhwb3J0ZXJcbiAgICAgICAgICAgICAgPyB7IGVuYWJsZWRJbkJyb2tlcjogdHJ1ZSB9XG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCBsb2dnaW5nSW5mbyA9IHtcbiAgICAgIGJyb2tlckxvZ3M6IHtcbiAgICAgICAgY2xvdWRXYXRjaExvZ3M6IHtcbiAgICAgICAgICBlbmFibGVkOlxuICAgICAgICAgICAgcHJvcHMubG9nZ2luZz8uY2xvdWR3YXRjaExvZ0dyb3VwICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgbG9nR3JvdXA6XG4gICAgICAgICAgICBwcm9wcy5sb2dnaW5nPy5jbG91ZHdhdGNoTG9nR3JvdXA/LmxvZ0dyb3VwTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgZmlyZWhvc2U6IHtcbiAgICAgICAgICBlbmFibGVkOlxuICAgICAgICAgICAgcHJvcHMubG9nZ2luZz8uZmlyZWhvc2VEZWxpdmVyeVN0cmVhbU5hbWUgIT09XG4gICAgICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgICAgZGVsaXZlcnlTdHJlYW06XG4gICAgICAgICAgICBwcm9wcy5sb2dnaW5nPy5maXJlaG9zZURlbGl2ZXJ5U3RyZWFtTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgczM6IHtcbiAgICAgICAgICBlbmFibGVkOiBwcm9wcy5sb2dnaW5nPy5zMz8uYnVja2V0ICE9PSB1bmRlZmluZWQsXG4gICAgICAgICAgYnVja2V0OiBwcm9wcy5sb2dnaW5nPy5zMz8uYnVja2V0LmJ1Y2tldE5hbWUsXG4gICAgICAgICAgcHJlZml4OiBwcm9wcy5sb2dnaW5nPy5zMz8ucHJlZml4LFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9O1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24/LnNhc2xQcm9wcz8uc2NyYW0gJiZcbiAgICAgIHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy5zYXNsUHJvcHM/LmtleSA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aGlzLnNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5ID0gbmV3IGttcy5LZXkodGhpcywgJ1NBU0xLZXknLCB7XG4gICAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAgICdVc2VkIGZvciBlbmNyeXB0aW5nIE1TSyBzZWNyZXRzIGZvciBTQVNML1NDUkFNIGF1dGhlbnRpY2F0aW9uLicsXG4gICAgICAgIGFsaWFzOiBgbXNrLyR7cHJvcHMuY2x1c3Rlck5hbWV9L3Nhc2wvc2NyYW1gLFxuICAgICAgfSk7XG5cbiAgICAgIC8vIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3NlcnZpY2VzLXNlY3JldHMtbWFuYWdlci5odG1sI2FzbS1wb2xpY2llc1xuICAgICAgdGhpcy5zYXNsU2NyYW1BdXRoZW50aWNhdGlvbktleS5hZGRUb1Jlc291cmNlUG9saWN5KFxuICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgc2lkOlxuICAgICAgICAgICAgJ0FsbG93IGFjY2VzcyB0aHJvdWdoIEFXUyBTZWNyZXRzIE1hbmFnZXIgZm9yIGFsbCBwcmluY2lwYWxzIGluIHRoZSBhY2NvdW50IHRoYXQgYXJlIGF1dGhvcml6ZWQgdG8gdXNlIEFXUyBTZWNyZXRzIE1hbmFnZXInLFxuICAgICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLkFueVByaW5jaXBhbCgpXSxcbiAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAna21zOkVuY3J5cHQnLFxuICAgICAgICAgICAgJ2ttczpEZWNyeXB0JyxcbiAgICAgICAgICAgICdrbXM6UmVFbmNyeXB0KicsXG4gICAgICAgICAgICAna21zOkdlbmVyYXRlRGF0YUtleSonLFxuICAgICAgICAgICAgJ2ttczpDcmVhdGVHcmFudCcsXG4gICAgICAgICAgICAna21zOkRlc2NyaWJlS2V5JyxcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogWycqJ10sXG4gICAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgICAgICAgICAgICdrbXM6VmlhU2VydmljZSc6IGBzZWNyZXRzbWFuYWdlci4ke2NvcmUuU3RhY2sub2YodGhpcykucmVnaW9ufS5hbWF6b25hd3MuY29tYCxcbiAgICAgICAgICAgICAgJ2ttczpDYWxsZXJBY2NvdW50JzogY29yZS5TdGFjay5vZih0aGlzKS5hY2NvdW50LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgbGV0IGNsaWVudEF1dGhlbnRpY2F0aW9uO1xuICAgIGlmIChwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbj8uc2FzbFByb3BzPy5pYW0pIHtcbiAgICAgIGNsaWVudEF1dGhlbnRpY2F0aW9uID0ge1xuICAgICAgICBzYXNsOiB7IGlhbTogeyBlbmFibGVkOiBwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbi5zYXNsUHJvcHMuaWFtIH0gfSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbj8uc2FzbFByb3BzPy5zY3JhbSkge1xuICAgICAgY2xpZW50QXV0aGVudGljYXRpb24gPSB7XG4gICAgICAgIHNhc2w6IHtcbiAgICAgICAgICBzY3JhbToge1xuICAgICAgICAgICAgZW5hYmxlZDogcHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24uc2FzbFByb3BzLnNjcmFtLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbj8udGxzUHJvcHM/LmNlcnRpZmljYXRlQXV0aG9yaXRpZXMgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgY2xpZW50QXV0aGVudGljYXRpb24gPSB7XG4gICAgICAgIHRsczoge1xuICAgICAgICAgIGNlcnRpZmljYXRlQXV0aG9yaXR5QXJuTGlzdDogcHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24/LnRsc1Byb3BzPy5jZXJ0aWZpY2F0ZUF1dGhvcml0aWVzLm1hcChcbiAgICAgICAgICAgIChjYSkgPT4gY2EuY2VydGlmaWNhdGVBdXRob3JpdHlBcm4sXG4gICAgICAgICAgKSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuQ2x1c3Rlcih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBjbHVzdGVyTmFtZTogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgICBrYWZrYVZlcnNpb246IHByb3BzLmthZmthVmVyc2lvbi52ZXJzaW9uLFxuICAgICAgbnVtYmVyT2ZCcm9rZXJOb2RlczpcbiAgICAgICAgcHJvcHMubnVtYmVyT2ZCcm9rZXJOb2RlcyAhPT0gdW5kZWZpbmVkID9cbiAgICAgICAgICBzdWJuZXRTZWxlY3Rpb24uYXZhaWxhYmlsaXR5Wm9uZXMubGVuZ3RoICogcHJvcHMubnVtYmVyT2ZCcm9rZXJOb2RlcyA6IHN1Ym5ldFNlbGVjdGlvbi5hdmFpbGFiaWxpdHlab25lcy5sZW5ndGgsXG4gICAgICBicm9rZXJOb2RlR3JvdXBJbmZvOiB7XG4gICAgICAgIGluc3RhbmNlVHlwZSxcbiAgICAgICAgY2xpZW50U3VibmV0czogc3VibmV0U2VsZWN0aW9uLnN1Ym5ldElkcyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IHRoaXMuY29ubmVjdGlvbnMuc2VjdXJpdHlHcm91cHMubWFwKFxuICAgICAgICAgIChncm91cCkgPT4gZ3JvdXAuc2VjdXJpdHlHcm91cElkLFxuICAgICAgICApLFxuICAgICAgICBzdG9yYWdlSW5mbzoge1xuICAgICAgICAgIGVic1N0b3JhZ2VJbmZvOiB7XG4gICAgICAgICAgICB2b2x1bWVTaXplOiB2b2x1bWVTaXplLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgZW5jcnlwdGlvbkluZm86IHtcbiAgICAgICAgZW5jcnlwdGlvbkF0UmVzdCxcbiAgICAgICAgZW5jcnlwdGlvbkluVHJhbnNpdCxcbiAgICAgIH0sXG4gICAgICBjb25maWd1cmF0aW9uSW5mbzogcHJvcHMuY29uZmlndXJhdGlvbkluZm8sXG4gICAgICBlbmhhbmNlZE1vbml0b3Jpbmc6IHByb3BzLm1vbml0b3Jpbmc/LmNsdXN0ZXJNb25pdG9yaW5nTGV2ZWwsXG4gICAgICBvcGVuTW9uaXRvcmluZzogb3Blbk1vbml0b3JpbmcsXG4gICAgICBsb2dnaW5nSW5mbzogbG9nZ2luZ0luZm8sXG4gICAgICBjbGllbnRBdXRoZW50aWNhdGlvbjogY2xpZW50QXV0aGVudGljYXRpb24sXG4gICAgfSk7XG5cbiAgICB0aGlzLmNsdXN0ZXJOYW1lID0gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUoXG4gICAgICBjb3JlLkZuLnNlbGVjdCgxLCBjb3JlLkZuLnNwbGl0KCcvJywgcmVzb3VyY2UucmVmKSksXG4gICAgKTtcbiAgICB0aGlzLmNsdXN0ZXJBcm4gPSByZXNvdXJjZS5yZWY7XG5cbiAgICByZXNvdXJjZS5hcHBseVJlbW92YWxQb2xpY3kocHJvcHMucmVtb3ZhbFBvbGljeSwge1xuICAgICAgZGVmYXVsdDogY29yZS5SZW1vdmFsUG9saWN5LlJFVEFJTixcbiAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgbXNrSW5zdGFuY2VUeXBlKGluc3RhbmNlVHlwZTogZWMyLkluc3RhbmNlVHlwZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBrYWZrYS4ke2luc3RhbmNlVHlwZS50b1N0cmluZygpfWA7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBab29LZWVwZXIgQ29ubmVjdGlvbiBzdHJpbmdcbiAgICpcbiAgICogVXNlcyBhIEN1c3RvbSBSZXNvdXJjZSB0byBtYWtlIGFuIEFQSSBjYWxsIHRvIGBkZXNjcmliZUNsdXN0ZXJgIHVzaW5nIHRoZSBKYXZhc2NyaXB0IFNES1xuICAgKlxuICAgKiBAcGFyYW0gcmVzcG9uc2VGaWVsZCBGaWVsZCB0byByZXR1cm4gZnJvbSBBUEkgY2FsbC4gZWcuIFpvb2tlZXBlckNvbm5lY3RTdHJpbmcsIFpvb2tlZXBlckNvbm5lY3RTdHJpbmdUbHNcbiAgICogQHJldHVybnMgLSBUaGUgY29ubmVjdGlvbiBzdHJpbmcgdG8gdXNlIHRvIGNvbm5lY3QgdG8gdGhlIEFwYWNoZSBab29LZWVwZXIgY2x1c3Rlci5cbiAgICovXG4gIHByaXZhdGUgX3pvb2tlZXBlckNvbm5lY3Rpb25TdHJpbmcocmVzcG9uc2VGaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2NsdXN0ZXJEZXNjcmlwdGlvbikge1xuICAgICAgdGhpcy5fY2x1c3RlckRlc2NyaXB0aW9uID0gbmV3IGNyLkF3c0N1c3RvbVJlc291cmNlKHRoaXMsICdab29rZWVwZXJDb25uZWN0Jywge1xuICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgIHNlcnZpY2U6ICdLYWZrYScsXG4gICAgICAgICAgYWN0aW9uOiAnZGVzY3JpYmVDbHVzdGVyJyxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBDbHVzdGVyQXJuOiB0aGlzLmNsdXN0ZXJBcm4sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGNyLlBoeXNpY2FsUmVzb3VyY2VJZC5vZihcbiAgICAgICAgICAgICdab29LZWVwZXJDb25uZWN0aW9uU3RyaW5nJyxcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICBwb2xpY3k6IGNyLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5jbHVzdGVyQXJuXSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NsdXN0ZXJEZXNjcmlwdGlvbi5nZXRSZXNwb25zZUZpZWxkKGBDbHVzdGVySW5mby4ke3Jlc3BvbnNlRmllbGR9YCk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBab29LZWVwZXIgQ29ubmVjdGlvbiBzdHJpbmdcbiAgICpcbiAgICogVXNlcyBhIEN1c3RvbSBSZXNvdXJjZSB0byBtYWtlIGFuIEFQSSBjYWxsIHRvIGBkZXNjcmliZUNsdXN0ZXJgIHVzaW5nIHRoZSBKYXZhc2NyaXB0IFNES1xuICAgKlxuICAgKiBAcmV0dXJucyAtIFRoZSBjb25uZWN0aW9uIHN0cmluZyB0byB1c2UgdG8gY29ubmVjdCB0byB0aGUgQXBhY2hlIFpvb0tlZXBlciBjbHVzdGVyLlxuICAgKi9cbiAgcHVibGljIGdldCB6b29rZWVwZXJDb25uZWN0aW9uU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX3pvb2tlZXBlckNvbm5lY3Rpb25TdHJpbmcoJ1pvb2tlZXBlckNvbm5lY3RTdHJpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFpvb0tlZXBlciBDb25uZWN0aW9uIHN0cmluZyBmb3IgYSBUTFMgZW5hYmxlZCBjbHVzdGVyXG4gICAqXG4gICAqIFVzZXMgYSBDdXN0b20gUmVzb3VyY2UgdG8gbWFrZSBhbiBBUEkgY2FsbCB0byBgZGVzY3JpYmVDbHVzdGVyYCB1c2luZyB0aGUgSmF2YXNjcmlwdCBTREtcbiAgICpcbiAgICogQHJldHVybnMgLSBUaGUgY29ubmVjdGlvbiBzdHJpbmcgdG8gdXNlIHRvIGNvbm5lY3QgdG8gem9va2VlcGVyIGNsdXN0ZXIgb24gVExTIHBvcnQuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHpvb2tlZXBlckNvbm5lY3Rpb25TdHJpbmdUbHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fem9va2VlcGVyQ29ubmVjdGlvblN0cmluZygnWm9va2VlcGVyQ29ubmVjdFN0cmluZ1RscycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBicm9rZXJzIHRoYXQgYSBjbGllbnQgYXBwbGljYXRpb24gY2FuIHVzZSB0byBib290c3RyYXBcbiAgICpcbiAgICogVXNlcyBhIEN1c3RvbSBSZXNvdXJjZSB0byBtYWtlIGFuIEFQSSBjYWxsIHRvIGBnZXRCb290c3RyYXBCcm9rZXJzYCB1c2luZyB0aGUgSmF2YXNjcmlwdCBTREtcbiAgICpcbiAgICogQHBhcmFtIHJlc3BvbnNlRmllbGQgRmllbGQgdG8gcmV0dXJuIGZyb20gQVBJIGNhbGwuIGVnLiBCb290c3RyYXBCcm9rZXJTdHJpbmdTYXNsU2NyYW0sIEJvb3RzdHJhcEJyb2tlclN0cmluZ1xuICAgKiBAcmV0dXJucyAtIEEgc3RyaW5nIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgaG9zdG5hbWU6cG9ydCBwYWlycy5cbiAgICovXG4gIHByaXZhdGUgX2Jvb3RzdHJhcEJyb2tlcnMocmVzcG9uc2VGaWVsZDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2NsdXN0ZXJCb290c3RyYXBCcm9rZXJzKSB7XG4gICAgICB0aGlzLl9jbHVzdGVyQm9vdHN0cmFwQnJva2VycyA9IG5ldyBjci5Bd3NDdXN0b21SZXNvdXJjZSh0aGlzLCBgQm9vdHN0cmFwQnJva2VycyR7cmVzcG9uc2VGaWVsZH1gLCB7XG4gICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgc2VydmljZTogJ0thZmthJyxcbiAgICAgICAgICBhY3Rpb246ICdnZXRCb290c3RyYXBCcm9rZXJzJyxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBDbHVzdGVyQXJuOiB0aGlzLmNsdXN0ZXJBcm4sXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGNyLlBoeXNpY2FsUmVzb3VyY2VJZC5vZignQm9vdHN0cmFwQnJva2VycycpLFxuICAgICAgICB9LFxuICAgICAgICBwb2xpY3k6IGNyLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TZGtDYWxscyh7XG4gICAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5jbHVzdGVyQXJuXSxcbiAgICAgICAgfSksXG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuX2NsdXN0ZXJCb290c3RyYXBCcm9rZXJzLmdldFJlc3BvbnNlRmllbGQocmVzcG9uc2VGaWVsZCk7XG5cbiAgfVxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIGJyb2tlcnMgdGhhdCBhIGNsaWVudCBhcHBsaWNhdGlvbiBjYW4gdXNlIHRvIGJvb3RzdHJhcFxuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGdldEJvb3RzdHJhcEJyb2tlcnNgIHVzaW5nIHRoZSBKYXZhc2NyaXB0IFNES1xuICAgKlxuICAgKiBAcmV0dXJucyAtIEEgc3RyaW5nIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgaG9zdG5hbWU6cG9ydCBwYWlycy5cbiAgICovXG4gIHB1YmxpYyBnZXQgYm9vdHN0cmFwQnJva2VycygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ib290c3RyYXBCcm9rZXJzKCdCb290c3RyYXBCcm9rZXJTdHJpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgYnJva2VycyB0aGF0IGEgVExTIGF1dGhlbnRpY2F0ZWQgY2xpZW50IGFwcGxpY2F0aW9uIGNhbiB1c2UgdG8gYm9vdHN0cmFwXG4gICAqXG4gICAqIFVzZXMgYSBDdXN0b20gUmVzb3VyY2UgdG8gbWFrZSBhbiBBUEkgY2FsbCB0byBgZ2V0Qm9vdHN0cmFwQnJva2Vyc2AgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEByZXR1cm5zIC0gQSBzdHJpbmcgY29udGFpbmluZyBvbmUgb3IgbW9yZSBETlMgbmFtZXMgKG9yIElQKSBhbmQgVExTIHBvcnQgcGFpcnMuXG4gICAqL1xuICBwdWJsaWMgZ2V0IGJvb3RzdHJhcEJyb2tlcnNUbHMoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fYm9vdHN0cmFwQnJva2VycygnQm9vdHN0cmFwQnJva2VyU3RyaW5nVGxzJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIGJyb2tlcnMgdGhhdCBhIFNBU0wvU0NSQU0gYXV0aGVudGljYXRlZCBjbGllbnQgYXBwbGljYXRpb24gY2FuIHVzZSB0byBib290c3RyYXBcbiAgICpcbiAgICogVXNlcyBhIEN1c3RvbSBSZXNvdXJjZSB0byBtYWtlIGFuIEFQSSBjYWxsIHRvIGBnZXRCb290c3RyYXBCcm9rZXJzYCB1c2luZyB0aGUgSmF2YXNjcmlwdCBTREtcbiAgICpcbiAgICogQHJldHVybnMgLSBBIHN0cmluZyBjb250YWluaW5nIG9uZSBvciBtb3JlIGRucyBuYW1lIChvciBJUCkgYW5kIFNBU0wgU0NSQU0gcG9ydCBwYWlycy5cbiAgICovXG4gIHB1YmxpYyBnZXQgYm9vdHN0cmFwQnJva2Vyc1Nhc2xTY3JhbSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ib290c3RyYXBCcm9rZXJzKCdCb290c3RyYXBCcm9rZXJTdHJpbmdTYXNsU2NyYW0nKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgdXNlcnNuYW1lcyB0byByZWdpc3RlciB3aXRoIHRoZSBjbHVzdGVyLiBUaGUgcGFzc3dvcmQgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGdlbmVyYXRlZCB1c2luZyBTZWNyZXRzXG4gICAqIE1hbmFnZXIgYW5kIHRoZSB7IHVzZXJuYW1lLCBwYXNzd29yZCB9IEpTT04gb2JqZWN0IHN0b3JlZCBpbiBTZWNyZXRzIE1hbmFnZXIgYXMgYEFtYXpvbk1TS191c2VybmFtZWAuXG4gICAqXG4gICAqIE11c3QgYmUgdXNpbmcgdGhlIFNBU0wvU0NSQU0gYXV0aGVudGljYXRpb24gbWVjaGFuaXNtLlxuICAgKlxuICAgKiBAcGFyYW0gdXNlcm5hbWVzIC0gdXNlcm5hbWUocykgdG8gcmVnaXN0ZXIgd2l0aCB0aGUgY2x1c3RlclxuICAgKi9cbiAgcHVibGljIGFkZFVzZXIoLi4udXNlcm5hbWVzOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5KSB7XG4gICAgICBjb25zdCBNU0tfU0VDUkVUX1BSRUZJWCA9ICdBbWF6b25NU0tfJzsgLy8gUmVxdWlyZWRcbiAgICAgIGNvbnN0IHNlY3JldHMgPSB1c2VybmFtZXMubWFwKFxuICAgICAgICAodXNlcm5hbWUpID0+XG4gICAgICAgICAgbmV3IHNlY3JldHNtYW5hZ2VyLlNlY3JldCh0aGlzLCBgS2Fma2FVc2VyJHt1c2VybmFtZX1gLCB7XG4gICAgICAgICAgICBzZWNyZXROYW1lOiBgJHtNU0tfU0VDUkVUX1BSRUZJWH0ke3RoaXMuY2x1c3Rlck5hbWV9XyR7dXNlcm5hbWV9YCxcbiAgICAgICAgICAgIGdlbmVyYXRlU2VjcmV0U3RyaW5nOiB7XG4gICAgICAgICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBKU09OLnN0cmluZ2lmeSh7IHVzZXJuYW1lIH0pLFxuICAgICAgICAgICAgICBnZW5lcmF0ZVN0cmluZ0tleTogJ3Bhc3N3b3JkJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBlbmNyeXB0aW9uS2V5OiB0aGlzLnNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5LFxuICAgICAgICAgIH0pLFxuICAgICAgKTtcblxuICAgICAgbmV3IGNyLkF3c0N1c3RvbVJlc291cmNlKHRoaXMsIGBCYXRjaEFzc29jaWF0ZVNjcmFtU2VjcmV0cyR7YWRkcmVzc09mKHVzZXJuYW1lcyl9YCwge1xuICAgICAgICBvblVwZGF0ZToge1xuICAgICAgICAgIHNlcnZpY2U6ICdLYWZrYScsXG4gICAgICAgICAgYWN0aW9uOiAnYmF0Y2hBc3NvY2lhdGVTY3JhbVNlY3JldCcsXG4gICAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgICAgQ2x1c3RlckFybjogdGhpcy5jbHVzdGVyQXJuLFxuICAgICAgICAgICAgU2VjcmV0QXJuTGlzdDogc2VjcmV0cy5tYXAoKHNlY3JldCkgPT4gc2VjcmV0LnNlY3JldEFybiksXG4gICAgICAgICAgfSxcbiAgICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGNyLlBoeXNpY2FsUmVzb3VyY2VJZC5vZignQ3JlYXRlVXNlcnMnKSxcbiAgICAgICAgfSxcbiAgICAgICAgcG9saWN5OiBjci5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU3RhdGVtZW50cyhbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogWydrbXM6Q3JlYXRlR3JhbnQnXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW3RoaXMuc2FzbFNjcmFtQXV0aGVudGljYXRpb25LZXk/LmtleUFybl0sXG4gICAgICAgICAgfSksXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogWydrYWZrYTpCYXRjaEFzc29jaWF0ZVNjcmFtU2VjcmV0J10sXG4gICAgICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmNsdXN0ZXJBcm5dLFxuICAgICAgICAgIH0pLFxuICAgICAgICBdKSxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0Nhbm5vdCBjcmVhdGUgdXNlcnMgaWYgYW4gYXV0aGVudGljYXRpb24gS01TIGtleSBoYXMgbm90IGJlZW4gY3JlYXRlZC9wcm92aWRlZC4nLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
513
|
+
Cluster[_b] = { fqn: "@aws-cdk/aws-msk-alpha.Cluster", version: "2.31.2-alpha.0" };
|
|
514
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQywyQ0FBMkM7QUFHM0MsaUVBQWlFO0FBQ2pFLG9DQUFvQztBQUNwQyxtREFBbUQ7QUFFbkQsOERBQTREO0FBRTVELGlEQUFpRDtBQUNqRCw2Q0FBMkM7QUFDM0MsK0NBQXNFO0FBcUJ0RTs7R0FFRztBQUNILE1BQWUsV0FBWSxTQUFRLElBQUksQ0FBQyxRQUFRO0lBTTlDLDBDQUEwQztJQUMxQyxJQUFXLFdBQVc7UUFDcEIsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1REFBdUQsQ0FBQyxDQUFDO1NBQzFFO1FBQ0QsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0tBQzFCO0NBQ0Y7QUErSEQ7Ozs7R0FJRztBQUNILElBQVksc0JBaUJYO0FBakJELFdBQVksc0JBQXNCO0lBQ2hDOztPQUVHO0lBQ0gsNkNBQW1CLENBQUE7SUFDbkI7O09BRUc7SUFDSCxtREFBeUIsQ0FBQTtJQUN6Qjs7T0FFRztJQUNILHVFQUE2QyxDQUFBO0lBQzdDOztPQUVHO0lBQ0gsNkVBQW1ELENBQUE7QUFDckQsQ0FBQyxFQWpCVyxzQkFBc0IsR0FBdEIsOEJBQXNCLEtBQXRCLDhCQUFzQixRQWlCakM7QUFvRUQ7O0dBRUc7QUFDSCxJQUFZLHNCQWFYO0FBYkQsV0FBWSxzQkFBc0I7SUFDaEM7O09BRUc7SUFDSCxxQ0FBVyxDQUFBO0lBQ1g7O09BRUc7SUFDSCx5REFBK0IsQ0FBQTtJQUMvQjs7T0FFRztJQUNILGlEQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFiVyxzQkFBc0IsR0FBdEIsOEJBQXNCLEtBQXRCLDhCQUFzQixRQWFqQztBQTZERDs7R0FFRztBQUNILE1BQWEsb0JBQW9CO0lBZS9COzs7T0FHRztJQUNILFlBQ2tCLFNBQXlC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QWlGLENBQ2xGLENBQUM7U0FDSDtLQUNGOztBQS9jSCwwQkFnZEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhY21wY2EgZnJvbSAnYXdzLWNkay1saWIvYXdzLWFjbXBjYSc7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBrbXMgZnJvbSAnYXdzLWNkay1saWIvYXdzLWttcyc7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzZWNyZXRzbWFuYWdlciBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0ICogYXMgY29yZSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjciBmcm9tICdhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzJztcbmltcG9ydCAqIGFzIGNvbnN0cnVjdHMgZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBhZGRyZXNzT2YgfSBmcm9tICdjb25zdHJ1Y3RzL2xpYi9wcml2YXRlL3VuaXF1ZWlkJztcbmltcG9ydCB7IEthZmthVmVyc2lvbiB9IGZyb20gJy4vJztcbmltcG9ydCB7IENmbkNsdXN0ZXIgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbXNrJztcbmltcG9ydCB7IEZlYXR1cmVGbGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IFMzX0NSRUFURV9ERUZBVUxUX0xPR0dJTkdfUE9MSUNZIH0gZnJvbSAnYXdzLWNkay1saWIvY3gtYXBpJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgTVNLIENsdXN0ZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ2x1c3RlciBleHRlbmRzIGNvcmUuSVJlc291cmNlLCBlYzIuSUNvbm5lY3RhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgY2x1c3Rlci5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3RlckFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgbmFtZSBvZiB0aGUgY2x1c3Rlci5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBNU0sgQ2x1c3Rlci5cbiAqL1xuYWJzdHJhY3QgY2xhc3MgQ2x1c3RlckJhc2UgZXh0ZW5kcyBjb3JlLlJlc291cmNlIGltcGxlbWVudHMgSUNsdXN0ZXIge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY2x1c3RlckFybjogc3RyaW5nO1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcbiAgLyoqIEBpbnRlcm5hbCAqL1xuICBwcm90ZWN0ZWQgX2Nvbm5lY3Rpb25zOiBlYzIuQ29ubmVjdGlvbnMgfCB1bmRlZmluZWQ7XG5cbiAgLyoqIE1hbmFnZXMgY29ubmVjdGlvbnMgZm9yIHRoZSBjbHVzdGVyICovXG4gIHB1YmxpYyBnZXQgY29ubmVjdGlvbnMoKTogZWMyLkNvbm5lY3Rpb25zIHtcbiAgICBpZiAoIXRoaXMuX2Nvbm5lY3Rpb25zKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FuIGltcG9ydGVkIENsdXN0ZXIgY2Fubm90IG1hbmFnZSBpdHMgc2VjdXJpdHkgZ3JvdXBzJyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9jb25uZWN0aW9ucztcbiAgfVxufVxuXG4vKipcbiAqICBQcm9wZXJ0aWVzIGZvciBhIE1TSyBDbHVzdGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ2x1c3RlclByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBwaHlzaWNhbCBuYW1lIG9mIHRoZSBjbHVzdGVyLlxuICAgKi9cbiAgcmVhZG9ubHkgY2x1c3Rlck5hbWU6IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIEFwYWNoZSBLYWZrYS5cbiAgICovXG4gIHJlYWRvbmx5IGthZmthVmVyc2lvbjogS2Fma2FWZXJzaW9uO1xuICAvKipcbiAgICogTnVtYmVyIG9mIEFwYWNoZSBLYWZrYSBicm9rZXJzIGRlcGxveWVkIGluIGVhY2ggQXZhaWxhYmlsaXR5IFpvbmUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDFcbiAgICovXG4gIHJlYWRvbmx5IG51bWJlck9mQnJva2VyTm9kZXM/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBEZWZpbmVzIHRoZSB2aXJ0dWFsIG5ldHdvcmtpbmcgZW52aXJvbm1lbnQgZm9yIHRoaXMgY2x1c3Rlci5cbiAgICogTXVzdCBoYXZlIGF0IGxlYXN0IDIgc3VibmV0cyBpbiB0d28gZGlmZmVyZW50IEFacy5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG4gIC8qKlxuICAgKiBXaGVyZSB0byBwbGFjZSB0aGUgbm9kZXMgd2l0aGluIHRoZSBWUEMuXG4gICAqIEFtYXpvbiBNU0sgZGlzdHJpYnV0ZXMgdGhlIGJyb2tlciBub2RlcyBldmVubHkgYWNyb3NzIHRoZSBzdWJuZXRzIHRoYXQgeW91IHNwZWNpZnkuXG4gICAqIFRoZSBzdWJuZXRzIHRoYXQgeW91IHNwZWNpZnkgbXVzdCBiZSBpbiBkaXN0aW5jdCBBdmFpbGFiaWxpdHkgWm9uZXMuXG4gICAqIENsaWVudCBzdWJuZXRzIGNhbid0IGJlIGluIEF2YWlsYWJpbGl0eSBab25lIHVzLWVhc3QtMWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIFZwYyBkZWZhdWx0IHN0cmF0ZWd5IGlmIG5vdCBzcGVjaWZpZWQuXG4gICAqL1xuICByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcbiAgLyoqXG4gICAqIFRoZSBFQzIgaW5zdGFuY2UgdHlwZSB0aGF0IHlvdSB3YW50IEFtYXpvbiBNU0sgdG8gdXNlIHdoZW4gaXQgY3JlYXRlcyB5b3VyIGJyb2tlcnMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21zay9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvbXNrLWNyZWF0ZS1jbHVzdGVyLmh0bWwjYnJva2VyLWluc3RhbmNlLXR5cGVzXG4gICAqIEBkZWZhdWx0IGthZmthLm01LmxhcmdlXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZVR5cGU/OiBlYzIuSW5zdGFuY2VUeXBlO1xuICAvKipcbiAgICogVGhlIEFXUyBzZWN1cml0eSBncm91cHMgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGVsYXN0aWMgbmV0d29yayBpbnRlcmZhY2VzIGluIG9yZGVyIHRvIHNwZWNpZnkgd2hvIGNhblxuICAgKiBjb25uZWN0IHRvIGFuZCBjb21tdW5pY2F0ZSB3aXRoIHRoZSBBbWF6b24gTVNLIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gY3JlYXRlIG5ldyBzZWN1cml0eSBncm91cFxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBlYzIuSVNlY3VyaXR5R3JvdXBbXTtcbiAgLyoqXG4gICAqIEluZm9ybWF0aW9uIGFib3V0IHN0b3JhZ2Ugdm9sdW1lcyBhdHRhY2hlZCB0byBNU0sgYnJva2VyIG5vZGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIDEwMDAgR2lCIEVCUyB2b2x1bWVcbiAgICovXG4gIHJlYWRvbmx5IGVic1N0b3JhZ2VJbmZvPzogRWJzU3RvcmFnZUluZm87XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIE1TSyBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgdGhlIGNsdXN0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29uZmlndXJhdGlvbkluZm8/OiBDbHVzdGVyQ29uZmlndXJhdGlvbkluZm87XG4gIC8qKlxuICAgKiBDbHVzdGVyIG1vbml0b3JpbmcgY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBERUZBVUxUIG1vbml0b3JpbmcgbGV2ZWxcbiAgICovXG4gIHJlYWRvbmx5IG1vbml0b3Jpbmc/OiBNb25pdG9yaW5nQ29uZmlndXJhdGlvbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyZSB5b3VyIE1TSyBjbHVzdGVyIHRvIHNlbmQgYnJva2VyIGxvZ3MgdG8gZGlmZmVyZW50IGRlc3RpbmF0aW9uIHR5cGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRpc2FibGVkXG4gICAqL1xuICByZWFkb25seSBsb2dnaW5nPzogQnJva2VyTG9nZ2luZztcbiAgLyoqXG4gICAqIENvbmZpZyBkZXRhaWxzIGZvciBlbmNyeXB0aW9uIGluIHRyYW5zaXQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZW5hYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZW5jcnlwdGlvbkluVHJhbnNpdD86IEVuY3J5cHRpb25JblRyYW5zaXRDb25maWc7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi5cbiAgICogTVNLIHN1cHBvcnRzIHVzaW5nIHByaXZhdGUgVExTIGNlcnRpZmljYXRlcyBvciBTQVNML1NDUkFNIHRvIGF1dGhlbnRpY2F0ZSB0aGUgaWRlbnRpdHkgb2YgY2xpZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkaXNhYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2xpZW50QXV0aGVudGljYXRpb24/OiBDbGllbnRBdXRoZW50aWNhdGlvbjtcbiAgLyoqXG4gICAqIFdoYXQgdG8gZG8gd2hlbiB0aGlzIHJlc291cmNlIGlzIGRlbGV0ZWQgZnJvbSBhIHN0YWNrLlxuICAgKlxuICAgKiBAZGVmYXVsdCBSZW1vdmFsUG9saWN5LlJFVEFJTlxuICAgKi9cbiAgcmVhZG9ubHkgcmVtb3ZhbFBvbGljeT86IGNvcmUuUmVtb3ZhbFBvbGljeTtcbn1cblxuLyoqXG4gKiBFQlMgdm9sdW1lIGluZm9ybWF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVic1N0b3JhZ2VJbmZvIHtcbiAgLyoqXG4gICAqIFRoZSBzaXplIGluIEdpQiBvZiB0aGUgRUJTIHZvbHVtZSBmb3IgdGhlIGRhdGEgZHJpdmUgb24gZWFjaCBicm9rZXIgbm9kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgMTAwMFxuICAgKi9cbiAgcmVhZG9ubHkgdm9sdW1lU2l6ZT86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBBV1MgS01TIGtleSBmb3IgZW5jcnlwdGluZyBkYXRhIGF0IHJlc3QuXG4gICAqXG4gICAqIEBkZWZhdWx0IFVzZXMgQVdTIG1hbmFnZWQgQ01LIChhd3Mva2Fma2EpXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5Pzoga21zLklLZXk7XG59XG5cbi8qKlxuICogVGhlIEFtYXpvbiBNU0sgY29uZmlndXJhdGlvbiB0byB1c2UgZm9yIHRoZSBjbHVzdGVyLlxuICogTm90ZTogVGhlcmUgaXMgY3VycmVudGx5IG5vIENsb3VkZm9ybWF0aW9uIFJlc291cmNlIHRvIGNyZWF0ZSBhIENvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDbHVzdGVyQ29uZmlndXJhdGlvbkluZm8ge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIG9mIHRoZSBNU0sgY29uZmlndXJhdGlvbiB0byB1c2UuXG4gICAqIEZvciBleGFtcGxlLCBhcm46YXdzOmthZmthOnVzLWVhc3QtMToxMjM0NTY3ODkwMTI6Y29uZmlndXJhdGlvbi9leGFtcGxlLWNvbmZpZ3VyYXRpb24tbmFtZS9hYmNkYWJjZC0xMjM0LWFiY2QtMTIzNC1hYmNkMTIzZThlOGUtMS5cbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIHJldmlzaW9uIG9mIHRoZSBBbWF6b24gTVNLIGNvbmZpZ3VyYXRpb24gdG8gdXNlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV2aXNpb246IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgbGV2ZWwgb2YgbW9uaXRvcmluZyBmb3IgdGhlIE1TSyBjbHVzdGVyXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbXNrL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9tb25pdG9yaW5nLmh0bWwjbWV0cmljcy1kZXRhaWxzXG4gKi9cbmV4cG9ydCBlbnVtIENsdXN0ZXJNb25pdG9yaW5nTGV2ZWwge1xuICAvKipcbiAgICogRGVmYXVsdCBtZXRyaWNzIGFyZSB0aGUgZXNzZW50aWFsIG1ldHJpY3MgdG8gbW9uaXRvci5cbiAgICovXG4gIERFRkFVTFQgPSAnREVGQVVMVCcsXG4gIC8qKlxuICAgKiBQZXIgQnJva2VyIG1ldHJpY3MgZ2l2ZSB5b3UgbWV0cmljcyBhdCB0aGUgYnJva2VyIGxldmVsLlxuICAgKi9cbiAgUEVSX0JST0tFUiA9ICdQRVJfQlJPS0VSJyxcbiAgLyoqXG4gICAqIFBlciBUb3BpYyBQZXIgQnJva2VyIG1ldHJpY3MgaGVscCB5b3UgdW5kZXJzdGFuZCB2b2x1bWUgYXQgdGhlIHRvcGljIGxldmVsLlxuICAgKi9cbiAgUEVSX1RPUElDX1BFUl9CUk9LRVIgPSAnUEVSX1RPUElDX1BFUl9CUk9LRVInLFxuICAvKipcbiAgICogUGVyIFRvcGljIFBlciBQYXJ0aXRpb24gbWV0cmljcyBoZWxwIHlvdSB1bmRlcnN0YW5kIGNvbnN1bWVyIGdyb3VwIGxhZyBhdCB0aGUgdG9waWMgcGFydGl0aW9uIGxldmVsLlxuICAgKi9cbiAgUEVSX1RPUElDX1BFUl9QQVJUSVRJT04gPSAnUEVSX1RPUElDX1BFUl9QQVJUSVRJT04nLFxufVxuXG4vKipcbiAqIE1vbml0b3JpbmcgQ29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1vbml0b3JpbmdDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbGV2ZWwgb2YgbW9uaXRvcmluZyBmb3IgdGhlIE1TSyBjbHVzdGVyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBERUZBVUxUXG4gICAqL1xuICByZWFkb25seSBjbHVzdGVyTW9uaXRvcmluZ0xldmVsPzogQ2x1c3Rlck1vbml0b3JpbmdMZXZlbDtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHlvdSB3YW50IHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBKTVggRXhwb3J0ZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQcm9tZXRoZXVzSm14RXhwb3J0ZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgeW91IHdhbnQgdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIFByb21ldGhldXMgTm9kZSBFeHBvcnRlci5cbiAgICpcbiAgICogWW91IGNhbiB1c2UgdGhlIFByb21ldGhldXMgTm9kZSBFeHBvcnRlciB0byBnZXQgQ1BVIGFuZCBkaXNrIG1ldHJpY3MgZm9yIHRoZSBicm9rZXIgbm9kZXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVQcm9tZXRoZXVzTm9kZUV4cG9ydGVyPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGRldGFpbHMgcmVsYXRlZCB0byBicm9rZXIgbG9ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCcm9rZXJMb2dnaW5nIHtcbiAgLyoqXG4gICAqIFRoZSBLaW5lc2lzIERhdGEgRmlyZWhvc2UgZGVsaXZlcnkgc3RyZWFtIHRoYXQgaXMgdGhlIGRlc3RpbmF0aW9uIGZvciBicm9rZXIgbG9ncy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkaXNhYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgZmlyZWhvc2VEZWxpdmVyeVN0cmVhbU5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRXYXRjaCBMb2dzIGdyb3VwIHRoYXQgaXMgdGhlIGRlc3RpbmF0aW9uIGZvciBicm9rZXIgbG9ncy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkaXNhYmxlZFxuICAgKi9cbiAgcmVhZG9ubHkgY2xvdWR3YXRjaExvZ0dyb3VwPzogbG9ncy5JTG9nR3JvdXA7XG4gIC8qKlxuICAgKiBEZXRhaWxzIG9mIHRoZSBBbWF6b24gUzMgZGVzdGluYXRpb24gZm9yIGJyb2tlciBsb2dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRpc2FibGVkXG4gICAqL1xuICByZWFkb25seSBzMz86IFMzTG9nZ2luZ0NvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogRGV0YWlscyBvZiB0aGUgQW1hem9uIFMzIGRlc3RpbmF0aW9uIGZvciBicm9rZXIgbG9ncy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTM0xvZ2dpbmdDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBTMyBidWNrZXQgdGhhdCBpcyB0aGUgZGVzdGluYXRpb24gZm9yIGJyb2tlciBsb2dzLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0OiBzMy5JQnVja2V0O1xuICAvKipcbiAgICogVGhlIFMzIHByZWZpeCB0aGF0IGlzIHRoZSBkZXN0aW5hdGlvbiBmb3IgYnJva2VyIGxvZ3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcHJlZml4XG4gICAqL1xuICByZWFkb25seSBwcmVmaXg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW5kaWNhdGVzIHRoZSBlbmNyeXB0aW9uIHNldHRpbmcgZm9yIGRhdGEgaW4gdHJhbnNpdCBiZXR3ZWVuIGNsaWVudHMgYW5kIGJyb2tlcnMuXG4gKi9cbmV4cG9ydCBlbnVtIENsaWVudEJyb2tlckVuY3J5cHRpb24ge1xuICAvKipcbiAgICogVExTIG1lYW5zIHRoYXQgY2xpZW50LWJyb2tlciBjb21tdW5pY2F0aW9uIGlzIGVuYWJsZWQgd2l0aCBUTFMgb25seS5cbiAgICovXG4gIFRMUyA9ICdUTFMnLFxuICAvKipcbiAgICogVExTX1BMQUlOVEVYVCBtZWFucyB0aGF0IGNsaWVudC1icm9rZXIgY29tbXVuaWNhdGlvbiBpcyBlbmFibGVkIGZvciBib3RoIFRMUy1lbmNyeXB0ZWQsIGFzIHdlbGwgYXMgcGxhaW50ZXh0IGRhdGEuXG4gICAqL1xuICBUTFNfUExBSU5URVhUID0gJ1RMU19QTEFJTlRFWFQnLFxuICAvKipcbiAgICogUExBSU5URVhUIG1lYW5zIHRoYXQgY2xpZW50LWJyb2tlciBjb21tdW5pY2F0aW9uIGlzIGVuYWJsZWQgaW4gcGxhaW50ZXh0IG9ubHkuXG4gICAqL1xuICBQTEFJTlRFWFQgPSAnUExBSU5URVhUJyxcbn1cblxuLyoqXG4gKiBUaGUgc2V0dGluZ3MgZm9yIGVuY3J5cHRpbmcgZGF0YSBpbiB0cmFuc2l0LlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL21zay9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvbXNrLWVuY3J5cHRpb24uaHRtbCNtc2stZW5jcnlwdGlvbi1pbi10cmFuc2l0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRW5jcnlwdGlvbkluVHJhbnNpdENvbmZpZyB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGVuY3J5cHRpb24gc2V0dGluZyBmb3IgZGF0YSBpbiB0cmFuc2l0IGJldHdlZW4gY2xpZW50cyBhbmQgYnJva2Vycy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUTFNcbiAgICovXG4gIHJlYWRvbmx5IGNsaWVudEJyb2tlcj86IENsaWVudEJyb2tlckVuY3J5cHRpb247XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhhdCBkYXRhIGNvbW11bmljYXRpb24gYW1vbmcgdGhlIGJyb2tlciBub2RlcyBvZiB0aGUgY2x1c3RlciBpcyBlbmNyeXB0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUluQ2x1c3Rlcj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogU0FTTCBhdXRoZW50aWNhdGlvbiBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2FzbEF1dGhQcm9wcyB7XG4gIC8qKlxuICAgKiBFbmFibGUgU0FTTC9TQ1JBTSBhdXRoZW50aWNhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNjcmFtPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIEVuYWJsZSBJQU0gYWNjZXNzIGNvbnRyb2wuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBpYW0/OiBib29sZWFuO1xuICAvKipcbiAgICogS01TIEtleSB0byBlbmNyeXB0IFNBU0wvU0NSQU0gc2VjcmV0cy5cbiAgICpcbiAgICogWW91IG11c3QgdXNlIGEgY3VzdG9tZXIgbWFzdGVyIGtleSAoQ01LKSB3aGVuIGNyZWF0aW5nIHVzZXJzIGluIHNlY3JldHMgbWFuYWdlci5cbiAgICogWW91IGNhbm5vdCB1c2UgYSBTZWNyZXQgd2l0aCBBbWF6b24gTVNLIHRoYXQgdXNlcyB0aGUgZGVmYXVsdCBTZWNyZXRzIE1hbmFnZXIgZW5jcnlwdGlvbiBrZXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQ01LIHdpbGwgYmUgY3JlYXRlZCB3aXRoIGFsaWFzIG1zay97Y2x1c3Rlck5hbWV9L3Nhc2wvc2NyYW1cbiAgICovXG4gIHJlYWRvbmx5IGtleT86IGttcy5JS2V5O1xufVxuXG4vKipcbiAqIFRMUyBhdXRoZW50aWNhdGlvbiBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVGxzQXV0aFByb3BzIHtcbiAgLyoqXG4gICAqIExpc3Qgb2YgQUNNIENlcnRpZmljYXRlIEF1dGhvcml0aWVzIHRvIGVuYWJsZSBUTFMgYXV0aGVudGljYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGVBdXRob3JpdGllcz86IGFjbXBjYS5JQ2VydGlmaWNhdGVBdXRob3JpdHlbXTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHByb3BlcnRpZXMgZm9yIGNsaWVudCBhdXRoZW50aWNhdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENsaWVudEF1dGhlbnRpY2F0aW9uIHtcbiAgLyoqXG4gICAqIFNBU0wgYXV0aGVudGljYXRpb25cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgc2FzbChwcm9wczogU2FzbEF1dGhQcm9wcyk6IENsaWVudEF1dGhlbnRpY2F0aW9uIHtcbiAgICByZXR1cm4gbmV3IENsaWVudEF1dGhlbnRpY2F0aW9uKHByb3BzLCB1bmRlZmluZWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRMUyBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB0bHMocHJvcHM6IFRsc0F1dGhQcm9wcyk6IENsaWVudEF1dGhlbnRpY2F0aW9uIHtcbiAgICByZXR1cm4gbmV3IENsaWVudEF1dGhlbnRpY2F0aW9uKHVuZGVmaW5lZCwgcHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzYXNsUHJvcHMgLSBwcm9wZXJ0aWVzIGZvciBTQVNMIGF1dGhlbnRpY2F0aW9uXG4gICAqIEBwYXJhbSB0bHNQcm9wcyAtIHByb3BlcnRpZXMgZm9yIFRMUyBhdXRoZW50aWNhdGlvblxuICAgKi9cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc2FzbFByb3BzPzogU2FzbEF1dGhQcm9wcyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgdGxzUHJvcHM/OiBUbHNBdXRoUHJvcHMsXG4gICkge31cbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBNU0sgQ2x1c3Rlci5cbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpNU0s6OkNsdXN0ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIENsdXN0ZXIgZXh0ZW5kcyBDbHVzdGVyQmFzZSB7XG4gIC8qKlxuICAgKiBSZWZlcmVuY2UgYW4gZXhpc3RpbmcgY2x1c3RlciwgZGVmaW5lZCBvdXRzaWRlIG9mIHRoZSBDREsgY29kZSwgYnkgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNsdXN0ZXJBcm4oXG4gICAgc2NvcGU6IGNvbnN0cnVjdHMuQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgY2x1c3RlckFybjogc3RyaW5nLFxuICApOiBJQ2x1c3RlciB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQ2x1c3RlckJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNsdXN0ZXJBcm4gPSBjbHVzdGVyQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNsdXN0ZXJOYW1lID0gY29yZS5Gbi5zZWxlY3QoMSwgY29yZS5Gbi5zcGxpdCgnLycsIGNsdXN0ZXJBcm4pKTsgLy8gWydhcm46cGFydGl0aW9uOmthZmthOnJlZ2lvbjphY2NvdW50LWlkJywgY2x1c3Rlck5hbWUsIGNsdXN0ZXJJZF1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IGNsdXN0ZXJBcm46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGNsdXN0ZXJOYW1lOiBzdHJpbmc7XG4gIC8qKiBLZXkgdXNlZCB0byBlbmNyeXB0IFNBU0wvU0NSQU0gdXNlcnMgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5Pzoga21zLklLZXk7XG4gIHByaXZhdGUgX2NsdXN0ZXJEZXNjcmlwdGlvbj86IGNyLkF3c0N1c3RvbVJlc291cmNlO1xuICBwcml2YXRlIF9jbHVzdGVyQm9vdHN0cmFwQnJva2Vycz86IGNyLkF3c0N1c3RvbVJlc291cmNlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBjb25zdHJ1Y3RzLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENsdXN0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5jbHVzdGVyTmFtZSxcbiAgICB9KTtcblxuICAgIGNvbnN0IHN1Ym5ldFNlbGVjdGlvbiA9IHByb3BzLnZwYy5zZWxlY3RTdWJuZXRzKHByb3BzLnZwY1N1Ym5ldHMpO1xuXG4gICAgdGhpcy5fY29ubmVjdGlvbnMgPSBuZXcgZWMyLkNvbm5lY3Rpb25zKHtcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBwcm9wcy5zZWN1cml0eUdyb3VwcyA/PyBbXG4gICAgICAgIG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCAnU2VjdXJpdHlHcm91cCcsIHtcbiAgICAgICAgICBkZXNjcmlwdGlvbjogJ01TSyBzZWN1cml0eSBncm91cCcsXG4gICAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KTtcblxuICAgIGlmIChzdWJuZXRTZWxlY3Rpb24uc3VibmV0cy5sZW5ndGggPCAyKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgYENsdXN0ZXIgcmVxdWlyZXMgYXQgbGVhc3QgMiBzdWJuZXRzLCBnb3QgJHtzdWJuZXRTZWxlY3Rpb24uc3VibmV0cy5sZW5ndGh9YCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIWNvcmUuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmNsdXN0ZXJOYW1lKSAmJlxuICAgICAgIS9eW2EtekEtWjAtOV0rJC8udGVzdChwcm9wcy5jbHVzdGVyTmFtZSkgJiZcbiAgICAgIHByb3BzLmNsdXN0ZXJOYW1lLmxlbmd0aCA+IDY0XG4gICAgKSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ1RoZSBjbHVzdGVyIG5hbWUgbXVzdCBvbmx5IGNvbnRhaW4gYWxwaGFudW1lcmljIGNoYXJhY3RlcnMgYW5kIGhhdmUgYSBtYXhpbXVtIGxlbmd0aCBvZiA2NCBjaGFyYWN0ZXJzLicgK1xuICAgICAgICAgIGBnb3Q6ICcke3Byb3BzLmNsdXN0ZXJOYW1lfS4gbGVuZ3RoOiAke3Byb3BzLmNsdXN0ZXJOYW1lLmxlbmd0aH0nYCxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24/LnNhc2xQcm9wcz8uaWFtICYmXG4gICAgICBwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbj8uc2FzbFByb3BzPy5zY3JhbVxuICAgICkge1xuICAgICAgdGhyb3cgRXJyb3IoJ09ubHkgb25lIGNsaWVudCBhdXRoZW50aWNhdGlvbiBtZXRob2QgY2FuIGJlIGVuYWJsZWQuJyk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJvcHMuZW5jcnlwdGlvbkluVHJhbnNpdD8uY2xpZW50QnJva2VyID09PVxuICAgICAgICBDbGllbnRCcm9rZXJFbmNyeXB0aW9uLlBMQUlOVEVYVCAmJlxuICAgICAgcHJvcHMuY2xpZW50QXV0aGVudGljYXRpb25cbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnVG8gZW5hYmxlIGNsaWVudCBhdXRoZW50aWNhdGlvbiwgeW91IG11c3QgZW5hYmxlZCBUTFMtZW5jcnlwdGVkIHRyYWZmaWMgYmV0d2VlbiBjbGllbnRzIGFuZCBicm9rZXJzLicsXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICBwcm9wcy5lbmNyeXB0aW9uSW5UcmFuc2l0Py5jbGllbnRCcm9rZXIgPT09XG4gICAgICAgIENsaWVudEJyb2tlckVuY3J5cHRpb24uVExTX1BMQUlOVEVYVCAmJlxuICAgICAgKHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy5zYXNsUHJvcHM/LnNjcmFtIHx8XG4gICAgICAgIHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy5zYXNsUHJvcHM/LmlhbSlcbiAgICApIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnVG8gZW5hYmxlIFNBU0wvU0NSQU0gb3IgSUFNIGF1dGhlbnRpY2F0aW9uLCB5b3UgbXVzdCBvbmx5IGFsbG93IFRMUy1lbmNyeXB0ZWQgdHJhZmZpYyBiZXR3ZWVuIGNsaWVudHMgYW5kIGJyb2tlcnMuJyxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qgdm9sdW1lU2l6ZSA9XG4gICAgICBwcm9wcy5lYnNTdG9yYWdlSW5mbz8udm9sdW1lU2l6ZSA/PyAxMDAwO1xuICAgIC8vIE1pbmltdW06IDEgR2lCLCBtYXhpbXVtOiAxNjM4NCBHaUJcbiAgICBpZiAodm9sdW1lU2l6ZSA8IDEgfHwgdm9sdW1lU2l6ZSA+IDE2Mzg0KSB7XG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgJ0VCUyB2b2x1bWUgc2l6ZSBzaG91bGQgYmUgaW4gdGhlIHJhbmdlIDEtMTYzODQnLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBpbnN0YW5jZVR5cGUgPSBwcm9wcy5pbnN0YW5jZVR5cGVcbiAgICAgID8gdGhpcy5tc2tJbnN0YW5jZVR5cGUocHJvcHMuaW5zdGFuY2VUeXBlKVxuICAgICAgOiB0aGlzLm1za0luc3RhbmNlVHlwZShcbiAgICAgICAgZWMyLkluc3RhbmNlVHlwZS5vZihlYzIuSW5zdGFuY2VDbGFzcy5NNSwgZWMyLkluc3RhbmNlU2l6ZS5MQVJHRSksXG4gICAgICApO1xuXG4gICAgY29uc3QgZW5jcnlwdGlvbkF0UmVzdCA9IHByb3BzLmVic1N0b3JhZ2VJbmZvPy5lbmNyeXB0aW9uS2V5XG4gICAgICA/IHtcbiAgICAgICAgZGF0YVZvbHVtZUttc0tleUlkOlxuICAgICAgICAgICAgcHJvcHMuZWJzU3RvcmFnZUluZm8uZW5jcnlwdGlvbktleS5rZXlJZCxcbiAgICAgIH1cbiAgICAgIDogdW5kZWZpbmVkOyAvLyBNU0sgd2lsbCBjcmVhdGUgdGhlIG1hbmFnZWQga2V5XG5cbiAgICBjb25zdCBlbmNyeXB0aW9uSW5UcmFuc2l0ID0ge1xuICAgICAgY2xpZW50QnJva2VyOlxuICAgICAgICBwcm9wcy5lbmNyeXB0aW9uSW5UcmFuc2l0Py5jbGllbnRCcm9rZXIgPz9cbiAgICAgICAgQ2xpZW50QnJva2VyRW5jcnlwdGlvbi5UTFMsXG4gICAgICBpbkNsdXN0ZXI6IHByb3BzLmVuY3J5cHRpb25JblRyYW5zaXQ/LmVuYWJsZUluQ2x1c3RlciA/PyB0cnVlLFxuICAgIH07XG5cbiAgICBjb25zdCBvcGVuTW9uaXRvcmluZyA9XG4gICAgICBwcm9wcy5tb25pdG9yaW5nPy5lbmFibGVQcm9tZXRoZXVzSm14RXhwb3J0ZXIgfHxcbiAgICAgIHByb3BzLm1vbml0b3Jpbmc/LmVuYWJsZVByb21ldGhldXNOb2RlRXhwb3J0ZXJcbiAgICAgICAgPyB7XG4gICAgICAgICAgcHJvbWV0aGV1czoge1xuICAgICAgICAgICAgam14RXhwb3J0ZXI6IHByb3BzLm1vbml0b3Jpbmc/LmVuYWJsZVByb21ldGhldXNKbXhFeHBvcnRlclxuICAgICAgICAgICAgICA/IHsgZW5hYmxlZEluQnJva2VyOiB0cnVlIH1cbiAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICBub2RlRXhwb3J0ZXI6IHByb3BzLm1vbml0b3JpbmdcbiAgICAgICAgICAgICAgPy5lbmFibGVQcm9tZXRoZXVzTm9kZUV4cG9ydGVyXG4gICAgICAgICAgICAgID8geyBlbmFibGVkSW5Ccm9rZXI6IHRydWUgfVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgbG9nZ2luZ0J1Y2tldCA9IHByb3BzLmxvZ2dpbmc/LnMzPy5idWNrZXQ7XG4gICAgaWYgKGxvZ2dpbmdCdWNrZXQgJiYgRmVhdHVyZUZsYWdzLm9mKHRoaXMpLmlzRW5hYmxlZChTM19DUkVBVEVfREVGQVVMVF9MT0dHSU5HX1BPTElDWSkpIHtcbiAgICAgIGNvbnN0IHN0YWNrID0gY29yZS5TdGFjay5vZih0aGlzKTtcbiAgICAgIGxvZ2dpbmdCdWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgcHJpbmNpcGFsczogW1xuICAgICAgICAgIG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZGVsaXZlcnkubG9ncy5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgIGxvZ2dpbmdCdWNrZXQuYXJuRm9yT2JqZWN0cyhgQVdTTG9ncy8ke3N0YWNrLmFjY291bnR9LypgKSxcbiAgICAgICAgXSxcbiAgICAgICAgYWN0aW9uczogWydzMzpQdXRPYmplY3QnXSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ3MzOngtYW16LWFjbCc6ICdidWNrZXQtb3duZXItZnVsbC1jb250cm9sJyxcbiAgICAgICAgICAgICdhd3M6U291cmNlQWNjb3VudCc6IHN0YWNrLmFjY291bnQsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBBcm5MaWtlOiB7XG4gICAgICAgICAgICAnYXdzOlNvdXJjZUFybic6IHN0YWNrLmZvcm1hdEFybih7XG4gICAgICAgICAgICAgIHNlcnZpY2U6ICdsb2dzJyxcbiAgICAgICAgICAgICAgcmVzb3VyY2U6ICcqJyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9KSk7XG5cbiAgICAgIGxvZ2dpbmdCdWNrZXQuYWRkVG9SZXNvdXJjZVBvbGljeShuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcbiAgICAgICAgcHJpbmNpcGFsczogW1xuICAgICAgICAgIG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnZGVsaXZlcnkubG9ncy5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIF0sXG4gICAgICAgIHJlc291cmNlczogW2xvZ2dpbmdCdWNrZXQuYnVja2V0QXJuXSxcbiAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICdzMzpHZXRCdWNrZXRBY2wnLFxuICAgICAgICAgICdzMzpMaXN0QnVja2V0JyxcbiAgICAgICAgXSxcbiAgICAgICAgY29uZGl0aW9uczoge1xuICAgICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICAgJ2F3czpTb3VyY2VBY2NvdW50Jzogc3RhY2suYWNjb3VudCxcbiAgICAgICAgICB9LFxuICAgICAgICAgIEFybkxpa2U6IHtcbiAgICAgICAgICAgICdhd3M6U291cmNlQXJuJzogc3RhY2suZm9ybWF0QXJuKHtcbiAgICAgICAgICAgICAgc2VydmljZTogJ2xvZ3MnLFxuICAgICAgICAgICAgICByZXNvdXJjZTogJyonLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0pKTtcbiAgICB9XG4gICAgY29uc3QgbG9nZ2luZ0luZm8gPSB7XG4gICAgICBicm9rZXJMb2dzOiB7XG4gICAgICAgIGNsb3VkV2F0Y2hMb2dzOiB7XG4gICAgICAgICAgZW5hYmxlZDpcbiAgICAgICAgICAgIHByb3BzLmxvZ2dpbmc/LmNsb3Vkd2F0Y2hMb2dHcm91cCAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgIGxvZ0dyb3VwOlxuICAgICAgICAgICAgcHJvcHMubG9nZ2luZz8uY2xvdWR3YXRjaExvZ0dyb3VwPy5sb2dHcm91cE5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZpcmVob3NlOiB7XG4gICAgICAgICAgZW5hYmxlZDpcbiAgICAgICAgICAgIHByb3BzLmxvZ2dpbmc/LmZpcmVob3NlRGVsaXZlcnlTdHJlYW1OYW1lICE9PVxuICAgICAgICAgICAgdW5kZWZpbmVkLFxuICAgICAgICAgIGRlbGl2ZXJ5U3RyZWFtOlxuICAgICAgICAgICAgcHJvcHMubG9nZ2luZz8uZmlyZWhvc2VEZWxpdmVyeVN0cmVhbU5hbWUsXG4gICAgICAgIH0sXG4gICAgICAgIHMzOiB7XG4gICAgICAgICAgZW5hYmxlZDogbG9nZ2luZ0J1Y2tldCAhPT0gdW5kZWZpbmVkLFxuICAgICAgICAgIGJ1Y2tldDogbG9nZ2luZ0J1Y2tldD8uYnVja2V0TmFtZSxcbiAgICAgICAgICBwcmVmaXg6IHByb3BzLmxvZ2dpbmc/LnMzPy5wcmVmaXgsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgIH07XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbj8uc2FzbFByb3BzPy5zY3JhbSAmJlxuICAgICAgcHJvcHMuY2xpZW50QXV0aGVudGljYXRpb24/LnNhc2xQcm9wcz8ua2V5ID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRoaXMuc2FzbFNjcmFtQXV0aGVudGljYXRpb25LZXkgPSBuZXcga21zLktleSh0aGlzLCAnU0FTTEtleScsIHtcbiAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgJ1VzZWQgZm9yIGVuY3J5cHRpbmcgTVNLIHNlY3JldHMgZm9yIFNBU0wvU0NSQU0gYXV0aGVudGljYXRpb24uJyxcbiAgICAgICAgYWxpYXM6IGBtc2svJHtwcm9wcy5jbHVzdGVyTmFtZX0vc2FzbC9zY3JhbWAsXG4gICAgICB9KTtcblxuICAgICAgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ttcy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvc2VydmljZXMtc2VjcmV0cy1tYW5hZ2VyLmh0bWwjYXNtLXBvbGljaWVzXG4gICAgICB0aGlzLnNhc2xTY3JhbUF1dGhlbnRpY2F0aW9uS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBzaWQ6XG4gICAgICAgICAgICAnQWxsb3cgYWNjZXNzIHRocm91Z2ggQVdTIFNlY3JldHMgTWFuYWdlciBmb3IgYWxsIHByaW5jaXBhbHMgaW4gdGhlIGFjY291bnQgdGhhdCBhcmUgYXV0aG9yaXplZCB0byB1c2UgQVdTIFNlY3JldHMgTWFuYWdlcicsXG4gICAgICAgICAgcHJpbmNpcGFsczogW25ldyBpYW0uQW55UHJpbmNpcGFsKCldLFxuICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICdrbXM6RW5jcnlwdCcsXG4gICAgICAgICAgICAna21zOkRlY3J5cHQnLFxuICAgICAgICAgICAgJ2ttczpSZUVuY3J5cHQqJyxcbiAgICAgICAgICAgICdrbXM6R2VuZXJhdGVEYXRhS2V5KicsXG4gICAgICAgICAgICAna21zOkNyZWF0ZUdyYW50JyxcbiAgICAgICAgICAgICdrbXM6RGVzY3JpYmVLZXknLFxuICAgICAgICAgIF0sXG4gICAgICAgICAgcmVzb3VyY2VzOiBbJyonXSxcbiAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICAgJ2ttczpWaWFTZXJ2aWNlJzogYHNlY3JldHNtYW5hZ2VyLiR7Y29yZS5TdGFjay5vZih0aGlzKS5yZWdpb259LmFtYXpvbmF3cy5jb21gLFxuICAgICAgICAgICAgICAna21zOkNhbGxlckFjY291bnQnOiBjb3JlLlN0YWNrLm9mKHRoaXMpLmFjY291bnQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgY2xpZW50QXV0aGVudGljYXRpb247XG4gICAgaWYgKHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy5zYXNsUHJvcHM/LmlhbSkge1xuICAgICAgY2xpZW50QXV0aGVudGljYXRpb24gPSB7XG4gICAgICAgIHNhc2w6IHsgaWFtOiB7IGVuYWJsZWQ6IHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uLnNhc2xQcm9wcy5pYW0gfSB9LFxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy5zYXNsUHJvcHM/LnNjcmFtKSB7XG4gICAgICBjbGllbnRBdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgc2FzbDoge1xuICAgICAgICAgIHNjcmFtOiB7XG4gICAgICAgICAgICBlbmFibGVkOiBwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbi5zYXNsUHJvcHMuc2NyYW0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHByb3BzLmNsaWVudEF1dGhlbnRpY2F0aW9uPy50bHNQcm9wcz8uY2VydGlmaWNhdGVBdXRob3JpdGllcyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICBjbGllbnRBdXRoZW50aWNhdGlvbiA9IHtcbiAgICAgICAgdGxzOiB7XG4gICAgICAgICAgY2VydGlmaWNhdGVBdXRob3JpdHlBcm5MaXN0OiBwcm9wcy5jbGllbnRBdXRoZW50aWNhdGlvbj8udGxzUHJvcHM/LmNlcnRpZmljYXRlQXV0aG9yaXRpZXMubWFwKFxuICAgICAgICAgICAgKGNhKSA9PiBjYS5jZXJ0aWZpY2F0ZUF1dGhvcml0eUFybixcbiAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5DbHVzdGVyKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGNsdXN0ZXJOYW1lOiBwcm9wcy5jbHVzdGVyTmFtZSxcbiAgICAgIGthZmthVmVyc2lvbjogcHJvcHMua2Fma2FWZXJzaW9uLnZlcnNpb24sXG4gICAgICBudW1iZXJPZkJyb2tlck5vZGVzOlxuICAgICAgICBwcm9wcy5udW1iZXJPZkJyb2tlck5vZGVzICE9PSB1bmRlZmluZWQgP1xuICAgICAgICAgIHN1Ym5ldFNlbGVjdGlvbi5hdmFpbGFiaWxpdHlab25lcy5sZW5ndGggKiBwcm9wcy5udW1iZXJPZkJyb2tlck5vZGVzIDogc3VibmV0U2VsZWN0aW9uLmF2YWlsYWJpbGl0eVpvbmVzLmxlbmd0aCxcbiAgICAgIGJyb2tlck5vZGVHcm91cEluZm86IHtcbiAgICAgICAgaW5zdGFuY2VUeXBlLFxuICAgICAgICBjbGllbnRTdWJuZXRzOiBzdWJuZXRTZWxlY3Rpb24uc3VibmV0SWRzLFxuICAgICAgICBzZWN1cml0eUdyb3VwczogdGhpcy5jb25uZWN0aW9ucy5zZWN1cml0eUdyb3Vwcy5tYXAoXG4gICAgICAgICAgKGdyb3VwKSA9PiBncm91cC5zZWN1cml0eUdyb3VwSWQsXG4gICAgICAgICksXG4gICAgICAgIHN0b3JhZ2VJbmZvOiB7XG4gICAgICAgICAgZWJzU3RvcmFnZUluZm86IHtcbiAgICAgICAgICAgIHZvbHVtZVNpemU6IHZvbHVtZVNpemUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgIH0sXG4gICAgICBlbmNyeXB0aW9uSW5mbzoge1xuICAgICAgICBlbmNyeXB0aW9uQXRSZXN0LFxuICAgICAgICBlbmNyeXB0aW9uSW5UcmFuc2l0LFxuICAgICAgfSxcbiAgICAgIGNvbmZpZ3VyYXRpb25JbmZvOiBwcm9wcy5jb25maWd1cmF0aW9uSW5mbyxcbiAgICAgIGVuaGFuY2VkTW9uaXRvcmluZzogcHJvcHMubW9uaXRvcmluZz8uY2x1c3Rlck1vbml0b3JpbmdMZXZlbCxcbiAgICAgIG9wZW5Nb25pdG9yaW5nOiBvcGVuTW9uaXRvcmluZyxcbiAgICAgIGxvZ2dpbmdJbmZvOiBsb2dnaW5nSW5mbyxcbiAgICAgIGNsaWVudEF1dGhlbnRpY2F0aW9uOiBjbGllbnRBdXRoZW50aWNhdGlvbixcbiAgICB9KTtcblxuICAgIHRoaXMuY2x1c3Rlck5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShcbiAgICAgIGNvcmUuRm4uc2VsZWN0KDEsIGNvcmUuRm4uc3BsaXQoJy8nLCByZXNvdXJjZS5yZWYpKSxcbiAgICApO1xuICAgIHRoaXMuY2x1c3RlckFybiA9IHJlc291cmNlLnJlZjtcblxuICAgIHJlc291cmNlLmFwcGx5UmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5LCB7XG4gICAgICBkZWZhdWx0OiBjb3JlLlJlbW92YWxQb2xpY3kuUkVUQUlOLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBtc2tJbnN0YW5jZVR5cGUoaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYGthZmthLiR7aW5zdGFuY2VUeXBlLnRvU3RyaW5nKCl9YDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFpvb0tlZXBlciBDb25uZWN0aW9uIHN0cmluZ1xuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGRlc2NyaWJlQ2x1c3RlcmAgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEBwYXJhbSByZXNwb25zZUZpZWxkIEZpZWxkIHRvIHJldHVybiBmcm9tIEFQSSBjYWxsLiBlZy4gWm9va2VlcGVyQ29ubmVjdFN0cmluZywgWm9va2VlcGVyQ29ubmVjdFN0cmluZ1Rsc1xuICAgKiBAcmV0dXJucyAtIFRoZSBjb25uZWN0aW9uIHN0cmluZyB0byB1c2UgdG8gY29ubmVjdCB0byB0aGUgQXBhY2hlIFpvb0tlZXBlciBjbHVzdGVyLlxuICAgKi9cbiAgcHJpdmF0ZSBfem9va2VlcGVyQ29ubmVjdGlvblN0cmluZyhyZXNwb25zZUZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fY2x1c3RlckRlc2NyaXB0aW9uKSB7XG4gICAgICB0aGlzLl9jbHVzdGVyRGVzY3JpcHRpb24gPSBuZXcgY3IuQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgJ1pvb2tlZXBlckNvbm5lY3QnLCB7XG4gICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgc2VydmljZTogJ0thZmthJyxcbiAgICAgICAgICBhY3Rpb246ICdkZXNjcmliZUNsdXN0ZXInLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIENsdXN0ZXJBcm46IHRoaXMuY2x1c3RlckFybixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3IuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFxuICAgICAgICAgICAgJ1pvb0tlZXBlckNvbm5lY3Rpb25TdHJpbmcnLFxuICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIHBvbGljeTogY3IuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVNka0NhbGxzKHtcbiAgICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmNsdXN0ZXJBcm5dLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY2x1c3RlckRlc2NyaXB0aW9uLmdldFJlc3BvbnNlRmllbGQoYENsdXN0ZXJJbmZvLiR7cmVzcG9uc2VGaWVsZH1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFpvb0tlZXBlciBDb25uZWN0aW9uIHN0cmluZ1xuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGRlc2NyaWJlQ2x1c3RlcmAgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEByZXR1cm5zIC0gVGhlIGNvbm5lY3Rpb24gc3RyaW5nIHRvIHVzZSB0byBjb25uZWN0IHRvIHRoZSBBcGFjaGUgWm9vS2VlcGVyIGNsdXN0ZXIuXG4gICAqL1xuICBwdWJsaWMgZ2V0IHpvb2tlZXBlckNvbm5lY3Rpb25TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fem9va2VlcGVyQ29ubmVjdGlvblN0cmluZygnWm9va2VlcGVyQ29ubmVjdFN0cmluZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgWm9vS2VlcGVyIENvbm5lY3Rpb24gc3RyaW5nIGZvciBhIFRMUyBlbmFibGVkIGNsdXN0ZXJcbiAgICpcbiAgICogVXNlcyBhIEN1c3RvbSBSZXNvdXJjZSB0byBtYWtlIGFuIEFQSSBjYWxsIHRvIGBkZXNjcmliZUNsdXN0ZXJgIHVzaW5nIHRoZSBKYXZhc2NyaXB0IFNES1xuICAgKlxuICAgKiBAcmV0dXJucyAtIFRoZSBjb25uZWN0aW9uIHN0cmluZyB0byB1c2UgdG8gY29ubmVjdCB0byB6b29rZWVwZXIgY2x1c3RlciBvbiBUTFMgcG9ydC5cbiAgICovXG4gIHB1YmxpYyBnZXQgem9va2VlcGVyQ29ubmVjdGlvblN0cmluZ1RscygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl96b29rZWVwZXJDb25uZWN0aW9uU3RyaW5nKCdab29rZWVwZXJDb25uZWN0U3RyaW5nVGxzJyk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBsaXN0IG9mIGJyb2tlcnMgdGhhdCBhIGNsaWVudCBhcHBsaWNhdGlvbiBjYW4gdXNlIHRvIGJvb3RzdHJhcFxuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGdldEJvb3RzdHJhcEJyb2tlcnNgIHVzaW5nIHRoZSBKYXZhc2NyaXB0IFNES1xuICAgKlxuICAgKiBAcGFyYW0gcmVzcG9uc2VGaWVsZCBGaWVsZCB0byByZXR1cm4gZnJvbSBBUEkgY2FsbC4gZWcuIEJvb3RzdHJhcEJyb2tlclN0cmluZ1Nhc2xTY3JhbSwgQm9vdHN0cmFwQnJva2VyU3RyaW5nXG4gICAqIEByZXR1cm5zIC0gQSBzdHJpbmcgY29udGFpbmluZyBvbmUgb3IgbW9yZSBob3N0bmFtZTpwb3J0IHBhaXJzLlxuICAgKi9cbiAgcHJpdmF0ZSBfYm9vdHN0cmFwQnJva2VycyhyZXNwb25zZUZpZWxkOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmICghdGhpcy5fY2x1c3RlckJvb3RzdHJhcEJyb2tlcnMpIHtcbiAgICAgIHRoaXMuX2NsdXN0ZXJCb290c3RyYXBCcm9rZXJzID0gbmV3IGNyLkF3c0N1c3RvbVJlc291cmNlKHRoaXMsIGBCb290c3RyYXBCcm9rZXJzJHtyZXNwb25zZUZpZWxkfWAsIHtcbiAgICAgICAgb25VcGRhdGU6IHtcbiAgICAgICAgICBzZXJ2aWNlOiAnS2Fma2EnLFxuICAgICAgICAgIGFjdGlvbjogJ2dldEJvb3RzdHJhcEJyb2tlcnMnLFxuICAgICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICAgIENsdXN0ZXJBcm46IHRoaXMuY2x1c3RlckFybixcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3IuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKCdCb290c3RyYXBCcm9rZXJzJyksXG4gICAgICAgIH0sXG4gICAgICAgIHBvbGljeTogY3IuQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVNka0NhbGxzKHtcbiAgICAgICAgICByZXNvdXJjZXM6IFt0aGlzLmNsdXN0ZXJBcm5dLFxuICAgICAgICB9KSxcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fY2x1c3RlckJvb3RzdHJhcEJyb2tlcnMuZ2V0UmVzcG9uc2VGaWVsZChyZXNwb25zZUZpZWxkKTtcblxuICB9XG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgYnJva2VycyB0aGF0IGEgY2xpZW50IGFwcGxpY2F0aW9uIGNhbiB1c2UgdG8gYm9vdHN0cmFwXG4gICAqXG4gICAqIFVzZXMgYSBDdXN0b20gUmVzb3VyY2UgdG8gbWFrZSBhbiBBUEkgY2FsbCB0byBgZ2V0Qm9vdHN0cmFwQnJva2Vyc2AgdXNpbmcgdGhlIEphdmFzY3JpcHQgU0RLXG4gICAqXG4gICAqIEByZXR1cm5zIC0gQSBzdHJpbmcgY29udGFpbmluZyBvbmUgb3IgbW9yZSBob3N0bmFtZTpwb3J0IHBhaXJzLlxuICAgKi9cbiAgcHVibGljIGdldCBib290c3RyYXBCcm9rZXJzKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jvb3RzdHJhcEJyb2tlcnMoJ0Jvb3RzdHJhcEJyb2tlclN0cmluZycpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgbGlzdCBvZiBicm9rZXJzIHRoYXQgYSBUTFMgYXV0aGVudGljYXRlZCBjbGllbnQgYXBwbGljYXRpb24gY2FuIHVzZSB0byBib290c3RyYXBcbiAgICpcbiAgICogVXNlcyBhIEN1c3RvbSBSZXNvdXJjZSB0byBtYWtlIGFuIEFQSSBjYWxsIHRvIGBnZXRCb290c3RyYXBCcm9rZXJzYCB1c2luZyB0aGUgSmF2YXNjcmlwdCBTREtcbiAgICpcbiAgICogQHJldHVybnMgLSBBIHN0cmluZyBjb250YWluaW5nIG9uZSBvciBtb3JlIEROUyBuYW1lcyAob3IgSVApIGFuZCBUTFMgcG9ydCBwYWlycy5cbiAgICovXG4gIHB1YmxpYyBnZXQgYm9vdHN0cmFwQnJva2Vyc1RscygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9ib290c3RyYXBCcm9rZXJzKCdCb290c3RyYXBCcm9rZXJTdHJpbmdUbHMnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIGxpc3Qgb2YgYnJva2VycyB0aGF0IGEgU0FTTC9TQ1JBTSBhdXRoZW50aWNhdGVkIGNsaWVudCBhcHBsaWNhdGlvbiBjYW4gdXNlIHRvIGJvb3RzdHJhcFxuICAgKlxuICAgKiBVc2VzIGEgQ3VzdG9tIFJlc291cmNlIHRvIG1ha2UgYW4gQVBJIGNhbGwgdG8gYGdldEJvb3RzdHJhcEJyb2tlcnNgIHVzaW5nIHRoZSBKYXZhc2NyaXB0IFNES1xuICAgKlxuICAgKiBAcmV0dXJucyAtIEEgc3RyaW5nIGNvbnRhaW5pbmcgb25lIG9yIG1vcmUgZG5zIG5hbWUgKG9yIElQKSBhbmQgU0FTTCBTQ1JBTSBwb3J0IHBhaXJzLlxuICAgKi9cbiAgcHVibGljIGdldCBib290c3RyYXBCcm9rZXJzU2FzbFNjcmFtKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2Jvb3RzdHJhcEJyb2tlcnMoJ0Jvb3RzdHJhcEJyb2tlclN0cmluZ1Nhc2xTY3JhbScpO1xuICB9XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiB1c2Vyc25hbWVzIHRvIHJlZ2lzdGVyIHdpdGggdGhlIGNsdXN0ZXIuIFRoZSBwYXNzd29yZCB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgZ2VuZXJhdGVkIHVzaW5nIFNlY3JldHNcbiAgICogTWFuYWdlciBhbmQgdGhlIHsgdXNlcm5hbWUsIHBhc3N3b3JkIH0gSlNPTiBvYmplY3Qgc3RvcmVkIGluIFNlY3JldHMgTWFuYWdlciBhcyBgQW1hem9uTVNLX3VzZXJuYW1lYC5cbiAgICpcbiAgICogTXVzdCBiZSB1c2luZyB0aGUgU0FTTC9TQ1JBTSBhdXRoZW50aWNhdGlvbiBtZWNoYW5pc20uXG4gICAqXG4gICAqIEBwYXJhbSB1c2VybmFtZXMgLSB1c2VybmFtZShzKSB0byByZWdpc3RlciB3aXRoIHRoZSBjbHVzdGVyXG4gICAqL1xuICBwdWJsaWMgYWRkVXNlciguLi51c2VybmFtZXM6IHN0cmluZ1tdKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2FzbFNjcmFtQXV0aGVudGljYXRpb25LZXkpIHtcbiAgICAgIGNvbnN0IE1TS19TRUNSRVRfUFJFRklYID0gJ0FtYXpvbk1TS18nOyAvLyBSZXF1aXJlZFxuICAgICAgY29uc3Qgc2VjcmV0cyA9IHVzZXJuYW1lcy5tYXAoXG4gICAgICAgICh1c2VybmFtZSkgPT5cbiAgICAgICAgICBuZXcgc2VjcmV0c21hbmFnZXIuU2VjcmV0KHRoaXMsIGBLYWZrYVVzZXIke3VzZXJuYW1lfWAsIHtcbiAgICAgICAgICAgIHNlY3JldE5hbWU6IGAke01TS19TRUNSRVRfUFJFRklYfSR7dGhpcy5jbHVzdGVyTmFtZX1fJHt1c2VybmFtZX1gLFxuICAgICAgICAgICAgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHtcbiAgICAgICAgICAgICAgc2VjcmV0U3RyaW5nVGVtcGxhdGU6IEpTT04uc3RyaW5naWZ5KHsgdXNlcm5hbWUgfSksXG4gICAgICAgICAgICAgIGdlbmVyYXRlU3RyaW5nS2V5OiAncGFzc3dvcmQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuY3J5cHRpb25LZXk6IHRoaXMuc2FzbFNjcmFtQXV0aGVudGljYXRpb25LZXksXG4gICAgICAgICAgfSksXG4gICAgICApO1xuXG4gICAgICBuZXcgY3IuQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgYEJhdGNoQXNzb2NpYXRlU2NyYW1TZWNyZXRzJHthZGRyZXNzT2YodXNlcm5hbWVzKX1gLCB7XG4gICAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgICAgc2VydmljZTogJ0thZmthJyxcbiAgICAgICAgICBhY3Rpb246ICdiYXRjaEFzc29jaWF0ZVNjcmFtU2VjcmV0JyxcbiAgICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgICBDbHVzdGVyQXJuOiB0aGlzLmNsdXN0ZXJBcm4sXG4gICAgICAgICAgICBTZWNyZXRBcm5MaXN0OiBzZWNyZXRzLm1hcCgoc2VjcmV0KSA9PiBzZWNyZXQuc2VjcmV0QXJuKSxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogY3IuUGh5c2ljYWxSZXNvdXJjZUlkLm9mKCdDcmVhdGVVc2VycycpLFxuICAgICAgICB9LFxuICAgICAgICBwb2xpY3k6IGNyLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbJ2ttczpDcmVhdGVHcmFudCddLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiBbdGhpcy5zYXNsU2NyYW1BdXRoZW50aWNhdGlvbktleT8ua2V5QXJuXSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICBhY3Rpb25zOiBbJ2thZmthOkJhdGNoQXNzb2NpYXRlU2NyYW1TZWNyZXQnXSxcbiAgICAgICAgICAgIHJlc291cmNlczogW3RoaXMuY2x1c3RlckFybl0sXG4gICAgICAgICAgfSksXG4gICAgICAgIF0pLFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IEVycm9yKFxuICAgICAgICAnQ2Fubm90IGNyZWF0ZSB1c2VycyBpZiBhbiBhdXRoZW50aWNhdGlvbiBLTVMga2V5IGhhcyBub3QgYmVlbiBjcmVhdGVkL3Byb3ZpZGVkLicsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuIl19
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-msk-alpha",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.31.2-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "The CDK Construct Library for AWS::MSK",
|
|
6
6
|
"main": "lib/index.js",
|
|
@@ -83,18 +83,19 @@
|
|
|
83
83
|
},
|
|
84
84
|
"license": "Apache-2.0",
|
|
85
85
|
"devDependencies": {
|
|
86
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
87
|
-
"@aws-cdk/integ-runner": "2.
|
|
88
|
-
"@aws-cdk/cfn2ts": "2.
|
|
89
|
-
"@aws-cdk/pkglint": "2.
|
|
86
|
+
"@aws-cdk/cdk-build-tools": "2.31.2",
|
|
87
|
+
"@aws-cdk/integ-runner": "2.31.2",
|
|
88
|
+
"@aws-cdk/cfn2ts": "2.31.2",
|
|
89
|
+
"@aws-cdk/pkglint": "2.31.2",
|
|
90
90
|
"@types/jest": "^27.5.2",
|
|
91
91
|
"jest": "^27.5.1",
|
|
92
|
-
"aws-cdk-lib": "2.
|
|
93
|
-
"constructs": "^10.0.0"
|
|
92
|
+
"aws-cdk-lib": "2.31.2",
|
|
93
|
+
"constructs": "^10.0.0",
|
|
94
|
+
"@aws-cdk/integ-tests-alpha": "2.31.2-alpha.0"
|
|
94
95
|
},
|
|
95
96
|
"dependencies": {},
|
|
96
97
|
"peerDependencies": {
|
|
97
|
-
"aws-cdk-lib": "^2.
|
|
98
|
+
"aws-cdk-lib": "^2.31.2",
|
|
98
99
|
"constructs": "^10.0.0"
|
|
99
100
|
},
|
|
100
101
|
"engines": {
|
|
@@ -3,10 +3,11 @@ import { CfnOutput, Stack } from 'aws-cdk-lib';
|
|
|
3
3
|
import { Construct } from 'constructs';
|
|
4
4
|
import * as msk from '@aws-cdk/aws-msk-alpha';
|
|
5
5
|
import * as ec2 from 'aws-cdk-lib/aws-ec2';
|
|
6
|
+
import * as s3 from 'aws-cdk-lib/aws-s3';
|
|
6
7
|
|
|
7
8
|
class Fixture extends Stack {
|
|
8
9
|
constructor(scope: Construct, id: string) {
|
|
9
10
|
super(scope, id);
|
|
10
11
|
/// here
|
|
11
12
|
}
|
|
12
|
-
}
|
|
13
|
+
}
|