@aws-cdk/aws-imagebuilder-alpha 2.235.0-alpha.0 → 2.236.0-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 +539 -539
- package/.jsii.tabl.json.gz +0 -0
- package/awslint.json +11 -1
- package/lib/amazon-managed-component.js +1 -1
- package/lib/amazon-managed-image.js +1 -1
- package/lib/amazon-managed-workflow.js +1 -1
- package/lib/base-image.js +3 -3
- package/lib/component.d.ts +6 -11
- package/lib/component.js +47 -38
- package/lib/container-recipe.d.ts +4 -12
- package/lib/container-recipe.js +28 -23
- package/lib/distribution-configuration.d.ts +3 -8
- package/lib/distribution-configuration.js +18 -14
- package/lib/image-pipeline.d.ts +3 -8
- package/lib/image-pipeline.js +18 -13
- package/lib/image-recipe.d.ts +4 -12
- package/lib/image-recipe.js +25 -20
- package/lib/image.d.ts +10 -18
- package/lib/image.js +54 -35
- package/lib/infrastructure-configuration.d.ts +3 -8
- package/lib/infrastructure-configuration.js +26 -20
- package/lib/lifecycle-policy.d.ts +3 -8
- package/lib/lifecycle-policy.js +26 -20
- package/lib/os-version.js +1 -1
- package/lib/recipe-base.js +1 -1
- package/lib/workflow.d.ts +3 -8
- package/lib/workflow.js +29 -24
- package/package.json +7 -7
package/lib/container-recipe.js
CHANGED
|
@@ -41,6 +41,7 @@ const cdk = require("aws-cdk-lib");
|
|
|
41
41
|
const iam = require("aws-cdk-lib/aws-iam");
|
|
42
42
|
const aws_imagebuilder_1 = require("aws-cdk-lib/aws-imagebuilder");
|
|
43
43
|
const s3assets = require("aws-cdk-lib/aws-s3-assets");
|
|
44
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
44
45
|
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
45
46
|
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
46
47
|
const CONTAINER_RECIPE_SYMBOL = Symbol.for('@aws-cdk/aws-imagebuilder-alpha.ContainerRecipe');
|
|
@@ -72,7 +73,7 @@ var ContainerType;
|
|
|
72
73
|
* Helper class for referencing and uploading dockerfile data for the container recipe
|
|
73
74
|
*/
|
|
74
75
|
class DockerfileData {
|
|
75
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DockerfileData", version: "2.
|
|
76
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DockerfileData", version: "2.236.0-alpha.0" };
|
|
76
77
|
/**
|
|
77
78
|
* Uploads dockerfile data from a local file to S3 to use as the dockerfile data
|
|
78
79
|
*
|
|
@@ -108,7 +109,7 @@ exports.DockerfileData = DockerfileData;
|
|
|
108
109
|
* Helper class for S3-based dockerfile data references, containing additional permission grant methods on the S3 object
|
|
109
110
|
*/
|
|
110
111
|
class S3DockerfileData extends DockerfileData {
|
|
111
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3DockerfileData", version: "2.
|
|
112
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.S3DockerfileData", version: "2.236.0-alpha.0" };
|
|
112
113
|
bucket;
|
|
113
114
|
key;
|
|
114
115
|
constructor(bucket, key) {
|
|
@@ -169,7 +170,7 @@ class S3DockerfileDataFromAsset extends S3DockerfileData {
|
|
|
169
170
|
* A new or imported Container Recipe
|
|
170
171
|
*/
|
|
171
172
|
class ContainerRecipeBase extends cdk.Resource {
|
|
172
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipeBase", version: "2.
|
|
173
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipeBase", version: "2.236.0-alpha.0" };
|
|
173
174
|
/**
|
|
174
175
|
* Grant custom actions to the given grantee for the container recipe
|
|
175
176
|
* [disable-awslint:no-grants]
|
|
@@ -224,18 +225,27 @@ let ContainerRecipe = (() => {
|
|
|
224
225
|
let _classThis;
|
|
225
226
|
let _classSuper = ContainerRecipeBase;
|
|
226
227
|
let _instanceExtraInitializers = [];
|
|
228
|
+
let _get_containerRecipeName_decorators;
|
|
229
|
+
let _get_containerRecipeArn_decorators;
|
|
230
|
+
let _get_containerRecipeVersion_decorators;
|
|
227
231
|
let _addInstanceBlockDevice_decorators;
|
|
228
232
|
var ContainerRecipe = class extends _classSuper {
|
|
229
233
|
static { _classThis = this; }
|
|
230
234
|
static {
|
|
231
235
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
236
|
+
_get_containerRecipeName_decorators = [helpers_internal_1.memoizedGetter];
|
|
237
|
+
_get_containerRecipeArn_decorators = [helpers_internal_1.memoizedGetter];
|
|
238
|
+
_get_containerRecipeVersion_decorators = [helpers_internal_1.memoizedGetter];
|
|
232
239
|
_addInstanceBlockDevice_decorators = [(0, metadata_resource_1.MethodMetadata)()];
|
|
240
|
+
__esDecorate(this, null, _get_containerRecipeName_decorators, { kind: "getter", name: "containerRecipeName", static: false, private: false, access: { has: obj => "containerRecipeName" in obj, get: obj => obj.containerRecipeName }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
241
|
+
__esDecorate(this, null, _get_containerRecipeArn_decorators, { kind: "getter", name: "containerRecipeArn", static: false, private: false, access: { has: obj => "containerRecipeArn" in obj, get: obj => obj.containerRecipeArn }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
242
|
+
__esDecorate(this, null, _get_containerRecipeVersion_decorators, { kind: "getter", name: "containerRecipeVersion", static: false, private: false, access: { has: obj => "containerRecipeVersion" in obj, get: obj => obj.containerRecipeVersion }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
233
243
|
__esDecorate(this, null, _addInstanceBlockDevice_decorators, { kind: "method", name: "addInstanceBlockDevice", static: false, private: false, access: { has: obj => "addInstanceBlockDevice" in obj, get: obj => obj.addInstanceBlockDevice }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
234
244
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
235
245
|
ContainerRecipe = _classThis = _classDescriptor.value;
|
|
236
246
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
237
247
|
}
|
|
238
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipe", version: "2.
|
|
248
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.ContainerRecipe", version: "2.236.0-alpha.0" };
|
|
239
249
|
/** Uniquely identifies this class. */
|
|
240
250
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.ContainerRecipe';
|
|
241
251
|
/**
|
|
@@ -296,19 +306,8 @@ let ContainerRecipe = (() => {
|
|
|
296
306
|
static isContainerRecipe(x) {
|
|
297
307
|
return x !== null && typeof x === 'object' && CONTAINER_RECIPE_SYMBOL in x;
|
|
298
308
|
}
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
*/
|
|
302
|
-
containerRecipeArn = __runInitializers(this, _instanceExtraInitializers);
|
|
303
|
-
/**
|
|
304
|
-
* The name of the container recipe
|
|
305
|
-
*/
|
|
306
|
-
containerRecipeName;
|
|
307
|
-
/**
|
|
308
|
-
* The version of the container recipe
|
|
309
|
-
*/
|
|
310
|
-
containerRecipeVersion;
|
|
311
|
-
instanceBlockDevices = [];
|
|
309
|
+
instanceBlockDevices = (__runInitializers(this, _instanceExtraInitializers), []);
|
|
310
|
+
resource;
|
|
312
311
|
constructor(scope, id, props) {
|
|
313
312
|
super(scope, id, {
|
|
314
313
|
physicalName: props.containerRecipeName ??
|
|
@@ -346,7 +345,7 @@ let ContainerRecipe = (() => {
|
|
|
346
345
|
const dockerfile = props.dockerfile ??
|
|
347
346
|
DockerfileData.fromInline('FROM {{{ imagebuilder:parentImage }}}\n{{{ imagebuilder:environments }}}\n{{{ imagebuilder:components }}}');
|
|
348
347
|
const containerRecipeVersion = props.containerRecipeVersion ?? DEFAULT_RECIPE_VERSION;
|
|
349
|
-
|
|
348
|
+
this.resource = new aws_imagebuilder_1.CfnContainerRecipe(this, 'Resource', {
|
|
350
349
|
name: this.physicalName,
|
|
351
350
|
version: containerRecipeVersion,
|
|
352
351
|
description: props.description,
|
|
@@ -365,13 +364,19 @@ let ContainerRecipe = (() => {
|
|
|
365
364
|
...dockerfile.render(),
|
|
366
365
|
...(components?.length && { components }),
|
|
367
366
|
});
|
|
368
|
-
|
|
369
|
-
|
|
367
|
+
}
|
|
368
|
+
get containerRecipeName() {
|
|
369
|
+
return this.getResourceNameAttribute(this.resource.attrName);
|
|
370
|
+
}
|
|
371
|
+
get containerRecipeArn() {
|
|
372
|
+
return this.getResourceArnAttribute(this.resource.attrArn, {
|
|
370
373
|
service: 'imagebuilder',
|
|
371
374
|
resource: 'container-recipe',
|
|
372
|
-
resourceName: `${this.physicalName}/${
|
|
375
|
+
resourceName: `${this.physicalName}/${this.resource.version}`,
|
|
373
376
|
});
|
|
374
|
-
|
|
377
|
+
}
|
|
378
|
+
get containerRecipeVersion() {
|
|
379
|
+
return this.resource.getAtt('Version').toString();
|
|
375
380
|
}
|
|
376
381
|
/**
|
|
377
382
|
* Adds block devices to attach to the instance used for building, testing, and distributing the container image.
|
|
@@ -452,4 +457,4 @@ let ContainerRecipe = (() => {
|
|
|
452
457
|
return ContainerRecipe = _classThis;
|
|
453
458
|
})();
|
|
454
459
|
exports.ContainerRecipe = ContainerRecipe;
|
|
455
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLXJlY2lwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRhaW5lci1yZWNpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW1DO0FBRW5DLDJDQUEyQztBQUMzQyxtRUFBa0U7QUFHbEUsc0RBQXNEO0FBQ3RELDhFQUE4RjtBQUM5RiwwRUFBMEU7QUFRMUUsTUFBTSx1QkFBdUIsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLGlEQUFpRCxDQUFDLENBQUM7QUFFOUY7Ozs7O0dBS0c7QUFDSCxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUM7QUFFL0I7Ozs7O0dBS0c7QUFDSCxNQUFNLHNCQUFzQixHQUFHLE9BQU8sQ0FBQztBQTJIdkM7O0dBRUc7QUFDSCxJQUFZLGFBS1g7QUFMRCxXQUFZLGFBQWE7SUFDdkI7O09BRUc7SUFDSCxrQ0FBaUIsQ0FBQTtBQUNuQixDQUFDLEVBTFcsYUFBYSw2QkFBYixhQUFhLFFBS3hCO0FBdUJEOztHQUVHO0FBQ0gsTUFBc0IsY0FBYzs7SUFDbEM7Ozs7Ozs7T0FPRztJQUNJLE1BQU0sQ0FBQyxTQUFTLENBQ3JCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixJQUFZLEVBQ1osVUFBaUMsRUFBRTtRQUVuQyxNQUFNLEtBQUssR0FBRyxJQUFJLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbEUsT0FBTyxJQUFJLHlCQUF5QixDQUFDLEtBQUssQ0FBQyxDQUFDO0tBQzdDO0lBRUQ7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQWtCLEVBQUUsR0FBVztRQUNsRCxPQUFPLElBQUksNkJBQTZCLENBQUMsTUFBTSxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQ7Ozs7T0FJRztJQUNJLE1BQU0s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Q2pGLElBQUksQ0FDTCxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLG9EQUFvRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEgsQ0FBQztTQUNGOztZQWhRVSx1REFBZTs7Ozs7QUFBZiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5Db250YWluZXJSZWNpcGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzM2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEJhc2VDb250YWluZXJJbWFnZSwgQ29udGFpbmVySW5zdGFuY2VJbWFnZSB9IGZyb20gJy4vYmFzZS1pbWFnZSc7XG5pbXBvcnQgeyBSZXBvc2l0b3J5IH0gZnJvbSAnLi9kaXN0cmlidXRpb24tY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBJSW1hZ2VSZWNpcGUgfSBmcm9tICcuL2ltYWdlLXJlY2lwZSc7XG5pbXBvcnQgeyBPU1ZlcnNpb24gfSBmcm9tICcuL29zLXZlcnNpb24nO1xuaW1wb3J0IHsgQ29tcG9uZW50Q29uZmlndXJhdGlvbiwgSVJlY2lwZUJhc2UgfSBmcm9tICcuL3JlY2lwZS1iYXNlJztcblxuY29uc3QgQ09OVEFJTkVSX1JFQ0lQRV9TWU1CT0wgPSBTeW1ib2wuZm9yKCdAYXdzLWNkay9hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkNvbnRhaW5lclJlY2lwZScpO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIGEgY29udGFpbmVyIHJlY2lwZS4gV2hlbiB1c2luZyB0aGUgcmVjaXBlIGluIGEgcGlwZWxpbmUsIHRoZSBwaXBlbGluZSB3aWxsIHVzZSB0aGVcbiAqIGxhdGVzdCByZWNpcGUgYXQgdGhlIHRpbWUgb2YgZXhlY3V0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2liaG93LXNlbWFudGljLXZlcnNpb25pbmcuaHRtbFxuICovXG5jb25zdCBMQVRFU1RfVkVSU0lPTiA9ICd4LngueCc7XG5cbi8qKlxuICogVGhlIGRlZmF1bHQgdmVyc2lvbiB0byB1c2UgaW4gdGhlIGNvbnRhaW5lciByZWNpcGUuIFdoZW4gdGhlIHJlY2lwZSBpcyB1cGRhdGVkLCB0aGUgYHhgIHdpbGwgYmUgaW5jcmVtZW50ZWQgb2ZmIGZyb21cbiAqIHRoZSBsYXRlc3QgcmVjaXBlIHZlcnNpb24gdGhhdCBleGlzdHMuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvY3JlYXRlLWltYWdlLXJlY2lwZXMuaHRtbFxuICovXG5jb25zdCBERUZBVUxUX1JFQ0lQRV9WRVJTSU9OID0gJzEuMC54JztcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBDb250YWluZXIgUmVjaXBlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElDb250YWluZXJSZWNpcGUgZXh0ZW5kcyBJUmVjaXBlQmFzZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBjb250YWluZXIgcmVjaXBlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJSZWNpcGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBjb250YWluZXIgcmVjaXBlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZVZlcnNpb246IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIENvbnRhaW5lciBSZWNpcGUgcmVzb3VyY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJSZWNpcGVQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgYmFzZSBpbWFnZSBmb3IgY3VzdG9taXphdGlvbnMgc3BlY2lmaWVkIGluIHRoZSBjb250YWluZXIgcmVjaXBlLlxuICAgKi9cbiAgcmVhZG9ubHkgYmFzZUltYWdlOiBCYXNlQ29udGFpbmVySW1hZ2U7XG5cbiAgLyoqXG4gICAqIFRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB3aGVyZSB0aGUgb3V0cHV0IGNvbnRhaW5lciBpbWFnZSBpcyBzdG9yZWQuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRSZXBvc2l0b3J5OiBSZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIHJlY2lwZS5cbiAgICpcbiAgICogQGRlZmF1bHQgYSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyUmVjaXBlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbnRhaW5lciByZWNpcGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IDEuMC54XG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJSZWNpcGVWZXJzaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnRhaW5lciByZWNpcGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZG9ja2VyZmlsZSB0ZW1wbGF0ZSB1c2VkIHRvIGJ1aWxkIHRoZSBjb250YWluZXIgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSBzdGFuZGFyZCBkb2NrZXJmaWxlIHRlbXBsYXRlIHdpbGwgYmUgZ2VuZXJhdGVkIHRvIHB1bGwgdGhlIGJhc2UgaW1hZ2UsIHBlcmZvcm0gZW52aXJvbm1lbnQgc2V0dXAsIGFuZFxuICAgKiBydW4gYWxsIGNvbXBvbmVudHMgaW4gdGhlIHJlY2lwZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyZmlsZT86IERvY2tlcmZpbGVEYXRhO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiBjb21wb25lbnQgY29uZmlndXJhdGlvbnMgdG8gYXBwbHkgaW4gdGhlIGltYWdlIGJ1aWxkLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBjb21wb25lbnRzPzogQ29tcG9uZW50Q29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB1c2VkIHRvIGVuY3J5cHQgdGhlIGRvY2tlcmZpbGUgdGVtcGxhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgd29ya2luZyBkaXJlY3RvcnkgZm9yIHVzZSBkdXJpbmcgYnVpbGQgYW5kIHRlc3Qgd29ya2Zsb3dzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBJbWFnZSBCdWlsZGVyIGRlZmF1bHQgd29ya2luZyBkaXJlY3RvcnkgaXMgdXNlZC4gRm9yIExpbnV4IGFuZCBtYWNPUyBidWlsZHMsIHRoaXMgd291bGQgYmUgL3RtcC4gRm9yXG4gICAqIFdpbmRvd3MgYnVpbGRzLCB0aGlzIHdvdWxkIGJlIEM6L1xuICAgKi9cbiAgcmVhZG9ubHkgd29ya2luZ0RpcmVjdG9yeT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9wZXJhdGluZyBzeXN0ZW0gKE9TKSB2ZXJzaW9uIG9mIHRoZSBiYXNlIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEltYWdlIEJ1aWxkZXIgd2lsbCBkZXRlcm1pbmUgdGhlIE9TIHZlcnNpb24gb2YgdGhlIGJhc2UgaW1hZ2UsIGlmIHNvdXJjZWQgZnJvbSBhIHRoaXJkLXBhcnR5IGNvbnRhaW5lclxuICAgKiByZWdpc3RyeS4gT3RoZXJ3aXNlLCB0aGUgT1MgdmVyc2lvbiBvZiB0aGUgYmFzZSBpbWFnZSBpcyByZXF1aXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IG9zVmVyc2lvbj86IE9TVmVyc2lvbjtcblxuICAvKipcbiAgICogVGhlIGJsb2NrIGRldmljZXMgdG8gYXR0YWNoIHRvIHRoZSBpbnN0YW5jZSB1c2VkIGZvciBidWlsZGluZywgdGVzdGluZywgYW5kIGRpc3RyaWJ1dGluZyB0aGUgY29udGFpbmVyIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgYmxvY2sgZGV2aWNlcyBvZiB0aGUgaW5zdGFuY2UgaW1hZ2Ugd2lsbCBiZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUJsb2NrRGV2aWNlcz86IGVjMi5CbG9ja0RldmljZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgaW1hZ2UgdG8gdXNlIHRvIGxhdW5jaCB0aGUgaW5zdGFuY2UgdXNlZCBmb3IgYnVpbGRpbmcsIHRlc3RpbmcsIGFuZCBkaXN0cmlidXRpbmcgdGhlIGNvbnRhaW5lciBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgSW1hZ2UgQnVpbGRlciB3aWxsIHVzZSB0aGUgYXBwcm9wcmlhdGUgRUNTLW9wdGltaXplZCBBTUlcbiAgICovXG4gIHJlYWRvbmx5IGluc3RhbmNlSW1hZ2U/OiBDb250YWluZXJJbnN0YW5jZUltYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiB0aGUgY29udGFpbmVyIGJlaW5nIHVzZWQgaW4gdGhlIGNvbnRhaW5lciByZWNpcGVcbiAqL1xuZXhwb3J0IGVudW0gQ29udGFpbmVyVHlwZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGNvbnRhaW5lciByZWNpcGUgdXNlcyBhIERvY2tlciBjb250YWluZXJcbiAgICovXG4gIERPQ0tFUiA9ICdET0NLRVInLFxufVxuXG4vKipcbiAqIFRoZSByZW5kZXJlZCBEb2NrZXJmaWxlIHZhbHVlLCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uLlxuICogLSBGb3IgaW5saW5lIGRvY2tlcmZpbGVzLCBkb2NrZXJmaWxlVGVtcGxhdGVEYXRhIGlzIHRoZSBEb2NrZXJmaWxlIHRlbXBsYXRlIHRleHRcbiAqIC0gRm9yIFMzLWJhY2tlZCBkb2NrZXJmaWxlcywgZG9ja2VyZmlsZVRlbXBsYXRlVXJpIGlzIHRoZSBTMyBVUkxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb2NrZXJmaWxlVGVtcGxhdGVDb25maWcge1xuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIERvY2tlcmZpbGUgZGF0YSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgZG9ja2VyZmlsZVRlbXBsYXRlVXJpIGlzIHNldFxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyZmlsZVRlbXBsYXRlRGF0YT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIERvY2tlcmZpbGUgVVJJLCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZSBpZiBkb2NrZXJmaWxlVGVtcGxhdGVEYXRhIGlzIHNldFxuICAgKi9cbiAgcmVhZG9ubHkgZG9ja2VyZmlsZVRlbXBsYXRlVXJpPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEhlbHBlciBjbGFzcyBmb3IgcmVmZXJlbmNpbmcgYW5kIHVwbG9hZGluZyBkb2NrZXJmaWxlIGRhdGEgZm9yIHRoZSBjb250YWluZXIgcmVjaXBlXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEb2NrZXJmaWxlRGF0YSB7XG4gIC8qKlxuICAgKiBVcGxvYWRzIGRvY2tlcmZpbGUgZGF0YSBmcm9tIGEgbG9jYWwgZmlsZSB0byBTMyB0byB1c2UgYXMgdGhlIGRvY2tlcmZpbGUgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIGNvbnN0cnVjdCBzY29wZVxuICAgKiBAcGFyYW0gaWQgSWRlbnRpZmllciBvZiB0aGUgY29uc3RydWN0XG4gICAqIEBwYXJhbSBwYXRoIFRoZSBsb2NhbCBwYXRoIHRvIHRoZSBkb2NrZXJmaWxlIGRhdGEgZmlsZVxuICAgKiBAcGFyYW0gb3B0aW9ucyBTMyBhc3NldCB1cGxvYWQgb3B0aW9uc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQXNzZXQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBvcHRpb25zOiBzM2Fzc2V0cy5Bc3NldE9wdGlvbnMgPSB7fSxcbiAgKTogUzNEb2NrZXJmaWxlRGF0YSB7XG4gICAgY29uc3QgYXNzZXQgPSBuZXcgczNhc3NldHMuQXNzZXQoc2NvcGUsIGlkLCB7IC4uLm9wdGlvbnMsIHBhdGggfSk7XG4gICAgcmV0dXJuIG5ldyBTM0RvY2tlcmZpbGVEYXRhRnJvbUFzc2V0KGFzc2V0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWZlcmVuY2VzIGRvY2tlcmZpbGUgZGF0YSBmcm9tIGEgcHJlLWV4aXN0aW5nIFMzIG9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0gYnVja2V0IFRoZSBTMyBidWNrZXQgd2hlcmUgdGhlIGRvY2tlcmZpbGUgZGF0YSBpcyBzdG9yZWRcbiAgICogQHBhcmFtIGtleSBUaGUgUzMga2V5IG9mIHRoZSBkb2NrZXJmaWxlIGRhdGEgZmlsZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUzMoYnVja2V0OiBzMy5JQnVja2V0LCBrZXk6IHN0cmluZyk6IFMzRG9ja2VyZmlsZURhdGEge1xuICAgIHJldHVybiBuZXcgUzNEb2NrZXJmaWxlRGF0YUZyb21CdWNrZXRLZXkoYnVja2V0LCBrZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFVzZXMgYW4gaW5saW5lIHN0cmluZyBhcyB0aGUgZG9ja2VyZmlsZSBkYXRhXG4gICAqXG4gICAqIEBwYXJhbSBkYXRhIEFuIGlubGluZSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBkb2NrZXJmaWxlIGRhdGFcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUlubGluZShkYXRhOiBzdHJpbmcpOiBEb2NrZXJmaWxlRGF0YSB7XG4gICAgcmV0dXJuIG5ldyBJbmxpbmVEb2NrZXJmaWxlRGF0YShkYXRhKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgRG9ja2VyZmlsZSB2YWx1ZSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvbi5cbiAgICogLSBGb3IgaW5saW5lIGRvY2tlcmZpbGVzLCBkb2NrZXJmaWxlVGVtcGxhdGVEYXRhIGlzIHRoZSBEb2NrZXJmaWxlIHRlbXBsYXRlIHRleHRcbiAgICogLSBGb3IgUzMtYmFja2VkIGRvY2tlcmZpbGVzLCBkb2NrZXJmaWxlVGVtcGxhdGVVcmkgaXMgdGhlIFMzIFVSTFxuICAgKi9cbiAgYWJzdHJhY3QgcmVuZGVyKCk6IERvY2tlcmZpbGVUZW1wbGF0ZUNvbmZpZztcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIFMzLWJhc2VkIGRvY2tlcmZpbGUgZGF0YSByZWZlcmVuY2VzLCBjb250YWluaW5nIGFkZGl0aW9uYWwgcGVybWlzc2lvbiBncmFudCBtZXRob2RzIG9uIHRoZSBTMyBvYmplY3RcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFMzRG9ja2VyZmlsZURhdGEgZXh0ZW5kcyBEb2NrZXJmaWxlRGF0YSB7XG4gIHByb3RlY3RlZCByZWFkb25seSBidWNrZXQ6IHMzLklCdWNrZXQ7XG4gIHByb3RlY3RlZCByZWFkb25seSBrZXk6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoYnVja2V0OiBzMy5JQnVja2V0LCBrZXk6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG5cbiAgICB0aGlzLmJ1Y2tldCA9IGJ1Y2tldDtcbiAgICB0aGlzLmtleSA9IGtleTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgRG9ja2VyZmlsZSBTMyBVUkwsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICovXG4gIHB1YmxpYyByZW5kZXIoKTogRG9ja2VyZmlsZVRlbXBsYXRlQ29uZmlnIHtcbiAgICByZXR1cm4geyBkb2NrZXJmaWxlVGVtcGxhdGVVcmk6IHRoaXMuYnVja2V0LnMzVXJsRm9yT2JqZWN0KHRoaXMua2V5KSB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHB1dCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGRvY2tlcmZpbGUgZGF0YSBpbiBTM1xuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UHV0KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRQdXQoZ3JhbnRlZSwgdGhpcy5rZXkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBkb2NrZXJmaWxlIGRhdGEgaW4gUzNcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmJ1Y2tldC5ncmFudFJlYWQoZ3JhbnRlZSwgdGhpcy5rZXkpO1xuICB9XG59XG5cbmNsYXNzIElubGluZURvY2tlcmZpbGVEYXRhIGV4dGVuZHMgRG9ja2VyZmlsZURhdGEge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGF0YTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihkYXRhOiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgcmVuZGVyZWQgRG9ja2VyZmlsZSB0ZXh0LCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCk6IERvY2tlcmZpbGVUZW1wbGF0ZUNvbmZpZyB7XG4gICAgcmV0dXJuIHsgZG9ja2VyZmlsZVRlbXBsYXRlRGF0YTogdGhpcy5kYXRhIH07XG4gIH1cbn1cblxuY2xhc3MgUzNEb2NrZXJmaWxlRGF0YUZyb21CdWNrZXRLZXkgZXh0ZW5kcyBTM0RvY2tlcmZpbGVEYXRhIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcpIHtcbiAgICBzdXBlcihidWNrZXQsIGtleSk7XG4gIH1cbn1cblxuY2xhc3MgUzNEb2NrZXJmaWxlRGF0YUZyb21Bc3NldCBleHRlbmRzIFMzRG9ja2VyZmlsZURhdGEge1xuICBwdWJsaWMgY29uc3RydWN0b3IoYXNzZXQ6IHMzYXNzZXRzLkFzc2V0KSB7XG4gICAgc3VwZXIoYXNzZXQuYnVja2V0LCBhc3NldC5zM09iamVjdEtleSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBFQzIgSW1hZ2UgQnVpbGRlciBjb250YWluZXIgcmVjaXBlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyUmVjaXBlQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBjb250YWluZXIgcmVjaXBlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIGNvbnRhaW5lclJlY2lwZU5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciByZWNpcGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gY29udGFpbmVyUmVjaXBlQXJuXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJSZWNpcGVOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSBjb250YWluZXJSZWNpcGVBcm4uIGlmIGEgY29udGFpbmVyUmVjaXBlTmFtZSBpcyBwcm92aWRlZCwgdGhlIGxhdGVzdCB2ZXJzaW9uLCB4LngueCwgd2lsbFxuICAgKiBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyUmVjaXBlVmVyc2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBDb250YWluZXIgUmVjaXBlXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDb250YWluZXJSZWNpcGVCYXNlIGV4dGVuZHMgY2RrLlJlc291cmNlIGltcGxlbWVudHMgSUNvbnRhaW5lclJlY2lwZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBjb250YWluZXIgcmVjaXBlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBjb250YWluZXJSZWNpcGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciByZWNpcGVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbnRhaW5lciByZWNpcGVcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZVZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBjb250YWluZXIgcmVjaXBlXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIHB1YmxpYyBncmFudChncmFudGVlOiBpYW0uSUdyYW50YWJsZSwgLi4uYWN0aW9uczogc3RyaW5nW10pOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnMsXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmNvbnRhaW5lclJlY2lwZUFybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpHZXRDb250YWluZXJSZWNpcGUnKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVjaXBlIGlzIGEgQ29udGFpbmVyIFJlY2lwZVxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfaXNDb250YWluZXJSZWNpcGUoKTogdGhpcyBpcyBJQ29udGFpbmVyUmVjaXBlIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgcmVjaXBlIGlzIGFuIEltYWdlIFJlY2lwZVxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHB1YmxpYyBfaXNJbWFnZVJlY2lwZSgpOiB0aGlzIGlzIElJbWFnZVJlY2lwZSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBFQzIgSW1hZ2UgQnVpbGRlciBDb250YWluZXIgUmVjaXBlLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL21hbmFnZS1yZWNpcGVzLmh0bWxcbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIENvbnRhaW5lclJlY2lwZSBleHRlbmRzIENvbnRhaW5lclJlY2lwZUJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuQ29udGFpbmVyUmVjaXBlJztcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGNvbnRhaW5lciByZWNpcGUgZ2l2ZW4gaXRzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbnRhaW5lclJlY2lwZUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBjb250YWluZXJSZWNpcGVBcm46IHN0cmluZyk6IElDb250YWluZXJSZWNpcGUge1xuICAgIHJldHVybiB0aGlzLmZyb21Db250YWluZXJSZWNpcGVBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBjb250YWluZXJSZWNpcGVBcm4gfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhbiBleGlzdGluZyBjb250YWluZXIgcmVjaXBlIGdpdmVuIGl0cyBuYW1lLiBUaGUgcHJvdmlkZWQgbmFtZSBtdXN0IGJlIG5vcm1hbGl6ZWQgYnlcbiAgICogY29udmVydGluZyBhbGwgYWxwaGFiZXRpY2FsIGNoYXJhY3RlcnMgdG8gbG93ZXJjYXNlLCBhbmQgcmVwbGFjaW5nIGFsbCBzcGFjZXMgYW5kIHVuZGVyc2NvcmVzIHdpdGggaHlwaGVucy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUNvbnRhaW5lclJlY2lwZU5hbWUoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29udGFpbmVyUmVjaXBlTmFtZTogc3RyaW5nKTogSUNvbnRhaW5lclJlY2lwZSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbUNvbnRhaW5lclJlY2lwZUF0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7IGNvbnRhaW5lclJlY2lwZU5hbWUgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGNvbnRhaW5lciByZWNpcGUgYnkgcHJvdmlkaW5nIGl0cyBhdHRyaWJ1dGVzLiBJZiB0aGUgY29udGFpbmVyIHJlY2lwZSBuYW1lIGlzIHByb3ZpZGVkIGFzIGFuXG4gICAqIGF0dHJpYnV0ZSwgaXQgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmcgYWxsIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzXG4gICAqIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Db250YWluZXJSZWNpcGVBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogQ29udGFpbmVyUmVjaXBlQXR0cmlidXRlcyxcbiAgKTogSUNvbnRhaW5lclJlY2lwZSB7XG4gICAgaWYgKCFhdHRycy5jb250YWluZXJSZWNpcGVBcm4gJiYgIWF0dHJzLmNvbnRhaW5lclJlY2lwZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAnZWl0aGVyIGVpdGhlciBjb250YWluZXJSZWNpcGVBcm4gb3IgY29udGFpbmVyUmVjaXBlTmFtZSBtdXN0IGJlIHByb3ZpZGVkIHRvIGltcG9ydCBhIGNvbnRhaW5lciByZWNpcGUnLFxuICAgICAgICBzY29wZSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgY29udGFpbmVyUmVjaXBlQXJuID1cbiAgICAgIGF0dHJzLmNvbnRhaW5lclJlY2lwZUFybiA/P1xuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgICAgcmVzb3VyY2U6ICdjb250YWluZXItcmVjaXBlJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBgJHthdHRycy5jb250YWluZXJSZWNpcGVOYW1lfS8ke2F0dHJzLmNvbnRhaW5lclJlY2lwZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT059YCxcbiAgICAgIH0pO1xuXG4gICAgY29uc3QgW2NvbnRhaW5lclJlY2lwZU5hbWUsIGNvbnRhaW5lclJlY2lwZVZlcnNpb25dID0gKCgpID0+IHtcbiAgICAgIGlmIChhdHRycy5jb250YWluZXJSZWNpcGVOYW1lKSB7XG4gICAgICAgIHJldHVybiBbYXR0cnMuY29udGFpbmVyUmVjaXBlTmFtZSwgYXR0cnMuY29udGFpbmVyUmVjaXBlVmVyc2lvbiA/PyBMQVRFU1RfVkVSU0lPTl07XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY2lwZU5hbWVWZXJzaW9uID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgICAgY29udGFpbmVyUmVjaXBlQXJuLFxuICAgICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICAgIGNvbnN0IGNvbnRhaW5lclJlY2lwZU5hbWVWZXJzaW9uU3BsaXQgPSBjZGsuRm4uc3BsaXQoJy8nLCBjb250YWluZXJSZWNpcGVOYW1lVmVyc2lvbik7XG4gICAgICByZXR1cm4gW2Nkay5Gbi5zZWxlY3QoMCwgY29udGFpbmVyUmVjaXBlTmFtZVZlcnNpb25TcGxpdCksIGNkay5Gbi5zZWxlY3QoMSwgY29udGFpbmVyUmVjaXBlTmFtZVZlcnNpb25TcGxpdCldO1xuICAgIH0pKCk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBDb250YWluZXJSZWNpcGVCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBjb250YWluZXJSZWNpcGVBcm4gPSBjb250YWluZXJSZWNpcGVBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29udGFpbmVyUmVjaXBlTmFtZSA9IGNvbnRhaW5lclJlY2lwZU5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29udGFpbmVyUmVjaXBlVmVyc2lvbiA9IGNvbnRhaW5lclJlY2lwZVZlcnNpb247XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgQ29udGFpbmVyUmVjaXBlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0NvbnRhaW5lclJlY2lwZSh4OiBhbnkpOiB4IGlzIENvbnRhaW5lclJlY2lwZSB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIENPTlRBSU5FUl9SRUNJUEVfU1lNQk9MIGluIHg7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZU5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbnRhaW5lciByZWNpcGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb250YWluZXJSZWNpcGVWZXJzaW9uOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbnN0YW5jZUJsb2NrRGV2aWNlczogZWMyLkJsb2NrRGV2aWNlW10gPSBbXTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IENvbnRhaW5lclJlY2lwZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6XG4gICAgICAgIHByb3BzLmNvbnRhaW5lclJlY2lwZU5hbWUgPz9cbiAgICAgICAgY2RrLkxhenkuc3RyaW5nKHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgY2RrLk5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgICAgICAgICAgIG1heExlbmd0aDogMTI4LFxuICAgICAgICAgICAgICBzZXBhcmF0b3I6ICctJyxcbiAgICAgICAgICAgICAgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnLScsXG4gICAgICAgICAgICB9KS50b0xvd2VyQ2FzZSgpLCAvLyBFbmZvcmNlIGxvd2VyY2FzZSBmb3IgdGhlIGF1dG8tZ2VuZXJhdGVkIGZhbGxiYWNrXG4gICAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIENPTlRBSU5FUl9SRUNJUEVfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZUNvbnRhaW5lclJlY2lwZU5hbWUoKTtcblxuICAgIHRoaXMuYWRkSW5zdGFuY2VCbG9ja0RldmljZSguLi4ocHJvcHMuaW5zdGFuY2VCbG9ja0RldmljZXMgPz8gW10pKTtcblxuICAgIGNvbnN0IGNvbXBvbmVudHM6IENmbkNvbnRhaW5lclJlY2lwZS5Db21wb25lbnRDb25maWd1cmF0aW9uUHJvcGVydHlbXSB8IHVuZGVmaW5lZCA9IHByb3BzLmNvbXBvbmVudHM/Lm1hcChcbiAgICAgIChjb21wb25lbnQpID0+ICh7XG4gICAgICAgIGNvbXBvbmVudEFybjogY29tcG9uZW50LmNvbXBvbmVudC5jb21wb25lbnRBcm4sXG4gICAgICAgIC4uLihjb21wb25lbnQucGFyYW1ldGVycyAmJiB7XG4gICAgICAgICAgcGFyYW1ldGVyczogT2JqZWN0LmVudHJpZXMoY29tcG9uZW50LnBhcmFtZXRlcnMpLm1hcChcbiAgICAgICAgICAgIChbbmFtZSwgcGFyYW1dKTogQ2ZuQ29udGFpbmVyUmVjaXBlLkNvbXBvbmVudFBhcmFtZXRlclByb3BlcnR5ID0+ICh7XG4gICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgIHZhbHVlOiBwYXJhbS52YWx1ZSxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICksXG4gICAgICAgIH0pLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIGNvbnN0IGRvY2tlcmZpbGUgPVxuICAgICAgcHJvcHMuZG9ja2VyZmlsZSA/P1xuICAgICAgRG9ja2VyZmlsZURhdGEuZnJvbUlubGluZShcbiAgICAgICAgJ0ZST00ge3t7IGltYWdlYnVpbGRlcjpwYXJlbnRJbWFnZSB9fX1cXG57e3sgaW1hZ2VidWlsZGVyOmVudmlyb25tZW50cyB9fX1cXG57e3sgaW1hZ2VidWlsZGVyOmNvbXBvbmVudHMgfX19JyxcbiAgICAgICk7XG5cbiAgICBjb25zdCBjb250YWluZXJSZWNpcGVWZXJzaW9uID0gcHJvcHMuY29udGFpbmVyUmVjaXBlVmVyc2lvbiA/PyBERUZBVUxUX1JFQ0lQRV9WRVJTSU9OO1xuICAgIGNvbnN0IGNvbnRhaW5lclJlY2lwZSA9IG5ldyBDZm5Db250YWluZXJSZWNpcGUodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICB2ZXJzaW9uOiBjb250YWluZXJSZWNpcGVWZXJzaW9uLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgcGFyZW50SW1hZ2U6IHByb3BzLmJhc2VJbWFnZS5pbWFnZSxcbiAgICAgIGNvbnRhaW5lclR5cGU6IENvbnRhaW5lclR5cGUuRE9DS0VSLFxuICAgICAgdGFyZ2V0UmVwb3NpdG9yeToge1xuICAgICAgICByZXBvc2l0b3J5TmFtZTogcHJvcHMudGFyZ2V0UmVwb3NpdG9yeS5yZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgc2VydmljZTogcHJvcHMudGFyZ2V0UmVwb3NpdG9yeS5zZXJ2aWNlLFxuICAgICAgfSxcbiAgICAgIHBsYXRmb3JtT3ZlcnJpZGU6IHByb3BzLm9zVmVyc2lvbj8ucGxhdGZvcm0sXG4gICAgICBpbWFnZU9zVmVyc2lvbk92ZXJyaWRlOiBwcm9wcy5vc1ZlcnNpb24/Lm9zVmVyc2lvbixcbiAgICAgIGttc0tleUlkOiBwcm9wcy5rbXNLZXk/LmtleUFybixcbiAgICAgIGluc3RhbmNlQ29uZmlndXJhdGlvbjogY2RrLkxhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5idWlsZEluc3RhbmNlQ29uZmlndXJhdGlvbihwcm9wcykgfSksXG4gICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9wcy53b3JraW5nRGlyZWN0b3J5LFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIC4uLmRvY2tlcmZpbGUucmVuZGVyKCksXG4gICAgICAuLi4oY29tcG9uZW50cz8ubGVuZ3RoICYmIHsgY29tcG9uZW50cyB9KSxcbiAgICB9KTtcblxuICAgIHRoaXMuY29udGFpbmVyUmVjaXBlTmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKGNvbnRhaW5lclJlY2lwZS5hdHRyTmFtZSk7XG4gICAgdGhpcy5jb250YWluZXJSZWNpcGVBcm4gPSB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGNvbnRhaW5lclJlY2lwZS5hdHRyQXJuLCB7XG4gICAgICBzZXJ2aWNlOiAnaW1hZ2VidWlsZGVyJyxcbiAgICAgIHJlc291cmNlOiAnY29udGFpbmVyLXJlY2lwZScsXG4gICAgICByZXNvdXJjZU5hbWU6IGAke3RoaXMucGh5c2ljYWxOYW1lfS8ke2NvbnRhaW5lclJlY2lwZVZlcnNpb259YCxcbiAgICB9KTtcbiAgICB0aGlzLmNvbnRhaW5lclJlY2lwZVZlcnNpb24gPSBjb250YWluZXJSZWNpcGUuZ2V0QXR0KCdWZXJzaW9uJykudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGJsb2NrIGRldmljZXMgdG8gYXR0YWNoIHRvIHRoZSBpbnN0YW5jZSB1c2VkIGZvciBidWlsZGluZywgdGVzdGluZywgYW5kIGRpc3RyaWJ1dGluZyB0aGUgY29udGFpbmVyIGltYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gaW5zdGFuY2VCbG9ja0RldmljZXMgLSBUaGUgbGlzdCBvZiBibG9jayBkZXZpY2VzIHRvIGF0dGFjaFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZEluc3RhbmNlQmxvY2tEZXZpY2UoLi4uaW5zdGFuY2VCbG9ja0RldmljZXM6IGVjMi5CbG9ja0RldmljZVtdKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW5jZUJsb2NrRGV2aWNlcy5wdXNoKC4uLmluc3RhbmNlQmxvY2tEZXZpY2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBibG9jayBkZXZpY2VzIHByb3ZpZGVkIGFzIGlucHV0IHRvIHRoZSBjb25zdHJ1Y3QsIGludG8gdGhlIGJsb2NrIGRldmljZSBtYXBwaW5nIHN0cnVjdHVyZSB0aGF0XG4gICAqIENmbkNvbnRhaW5lclJlY2lwZSBleHBlY3RzIHRvIHJlY2VpdmUuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVuZGVyZWQgYXQgc3ludGhlc2lzIHRpbWUsIGFzIHVzZXJzIGNhbiBhZGQgYWRkaXRpb25hbCBibG9jayBkZXZpY2VzIHdpdGggYGFkZEluc3RhbmNlQmxvY2tEZXZpY2VgLCBhZnRlclxuICAgKiB0aGUgY29uc3RydWN0IGhhcyBiZWVuIGluc3RhbnRpYXRlZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyQmxvY2tEZXZpY2VzKCk6IENmbkNvbnRhaW5lclJlY2lwZS5JbnN0YW5jZUJsb2NrRGV2aWNlTWFwcGluZ1Byb3BlcnR5W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGJsb2NrRGV2aWNlcyA9IHRoaXMuaW5zdGFuY2VCbG9ja0RldmljZXMubWFwKFxuICAgICAgKGJsb2NrRGV2aWNlKTogQ2ZuQ29udGFpbmVyUmVjaXBlLkluc3RhbmNlQmxvY2tEZXZpY2VNYXBwaW5nUHJvcGVydHkgPT4ge1xuICAgICAgICBjb25zdCBlYnNEZXZpY2UgPSBibG9ja0RldmljZS52b2x1bWUuZWJzRGV2aWNlO1xuICAgICAgICBjb25zdCBlYnM6IENmbkNvbnRhaW5lclJlY2lwZS5FYnNJbnN0YW5jZUJsb2NrRGV2aWNlU3BlY2lmaWNhdGlvblByb3BlcnR5ID0ge1xuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LmRlbGV0ZU9uVGVybWluYXRpb24gIT09IHVuZGVmaW5lZCAmJiB7IGRlbGV0ZU9uVGVybWluYXRpb246IGVic0RldmljZS5kZWxldGVPblRlcm1pbmF0aW9uIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LmVuY3J5cHRlZCAhPT0gdW5kZWZpbmVkICYmIHsgZW5jcnlwdGVkOiBlYnNEZXZpY2UuZW5jcnlwdGVkIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LmlvcHMgIT09IHVuZGVmaW5lZCAmJiB7IGlvcHM6IGVic0RldmljZS5pb3BzIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/Lmttc0tleSAhPT0gdW5kZWZpbmVkICYmIHsga21zS2V5SWQ6IGVic0RldmljZS5rbXNLZXkua2V5QXJuIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LnNuYXBzaG90SWQgIT09IHVuZGVmaW5lZCAmJiB7IHNuYXBzaG90SWQ6IGVic0RldmljZS5zbmFwc2hvdElkIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LnRocm91Z2hwdXQgIT09IHVuZGVmaW5lZCAmJiB7IHRocm91Z2hwdXQ6IGVic0RldmljZS50aHJvdWdocHV0IH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LnZvbHVtZVNpemUgIT09IHVuZGVmaW5lZCAmJiB7IHZvbHVtZVNpemU6IGVic0RldmljZS52b2x1bWVTaXplIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LnZvbHVtZVR5cGUgIT09IHVuZGVmaW5lZCAmJiB7IHZvbHVtZVR5cGU6IGVic0RldmljZS52b2x1bWVUeXBlIH0pLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG1hcHBpbmdFbmFibGVkID0gYmxvY2tEZXZpY2UubWFwcGluZ0VuYWJsZWQgPz8gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkZXZpY2VOYW1lOiBibG9ja0RldmljZS5kZXZpY2VOYW1lLFxuICAgICAgICAgIHZpcnR1YWxOYW1lOiBibG9ja0RldmljZS52b2x1bWUudmlydHVhbE5hbWUsXG4gICAgICAgICAgLi4uKCFtYXBwaW5nRW5hYmxlZCAmJiB7IG5vRGV2aWNlOiAnJyB9KSxcbiAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoZWJzKS5sZW5ndGggJiYgeyBlYnMgfSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gYmxvY2tEZXZpY2VzLmxlbmd0aCA/IGJsb2NrRGV2aWNlcyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGluc3RhbmNlIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgaW50byB0aGUgYEluc3RhbmNlQ29uZmlndXJhdGlvbmAgdHlwZSBpbiB0aGUgIENsb3VkRm9ybWF0aW9uIEwxXG4gICAqIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcHMgcGFzc2VkIGFzIGlucHV0IHRvIHRoZSBjb25zdHJ1Y3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYnVpbGRJbnN0YW5jZUNvbmZpZ3VyYXRpb24oXG4gICAgcHJvcHM6IENvbnRhaW5lclJlY2lwZVByb3BzLFxuICApOiBDZm5Db250YWluZXJSZWNpcGUuSW5zdGFuY2VDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGJsb2NrRGV2aWNlcyA9IHRoaXMucmVuZGVyQmxvY2tEZXZpY2VzKCk7XG5cbiAgICBjb25zdCBpbnN0YW5jZUNvbmZpZ3VyYXRpb246IENmbkNvbnRhaW5lclJlY2lwZS5JbnN0YW5jZUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSA9IHtcbiAgICAgIC4uLihibG9ja0RldmljZXM/Lmxlbmd0aCAmJiB7IGJsb2NrRGV2aWNlTWFwcGluZ3M6IGJsb2NrRGV2aWNlcyB9KSxcbiAgICAgIC4uLihwcm9wcy5pbnN0YW5jZUltYWdlICE9PSB1bmRlZmluZWQgJiYgeyBpbWFnZTogcHJvcHMuaW5zdGFuY2VJbWFnZS5pbWFnZSB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGluc3RhbmNlQ29uZmlndXJhdGlvbikubGVuZ3RoID8gaW5zdGFuY2VDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNvbnRhaW5lclJlY2lwZU5hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgdGhlIGNvbnRhaW5lclJlY2lwZU5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzLCBnb3Q6ICcke3RoaXMucGh5c2ljYWxOYW1lfSdgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoYHRoZSBjb250YWluZXJSZWNpcGVOYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcywgZ290OiAnJHt0aGlzLnBoeXNpY2FsTmFtZX0nYCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCdfJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgdGhlIGNvbnRhaW5lclJlY2lwZU5hbWUgY2Fubm90IGNvbnRhaW4gdW5kZXJzY29yZXMsIGdvdDogJyR7dGhpcy5waHlzaWNhbE5hbWV9J2AsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoYHRoZSBjb250YWluZXJSZWNpcGVOYW1lIG11c3QgYmUgbG93ZXJjYXNlLCBnb3Q6ICcke3RoaXMucGh5c2ljYWxOYW1lfSdgLCB0aGlzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
460
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLXJlY2lwZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNvbnRhaW5lci1yZWNpcGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsbUNBQW1DO0FBRW5DLDJDQUEyQztBQUMzQyxtRUFBa0U7QUFHbEUsc0RBQXNEO0FBQ3RELDRFQUF1RTtBQUN2RSw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBUTFFLE1BQU0sdUJBQXVCLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0FBRTlGOzs7OztHQUtHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDO0FBRS9COzs7OztHQUtHO0FBQ0gsTUFBTSxzQkFBc0IsR0FBRyxPQUFPLENBQUM7QUEySHZDOztHQUVHO0FBQ0gsSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3ZCOztPQUVHO0lBQ0gsa0NBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQUxXLGFBQWEsNkJBQWIsYUFBYSxRQUt4QjtBQXVCRDs7R0FFRztBQUNILE1BQXNCLGNBQWM7O0lBQ2xDOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUNyQixLQUFnQixFQUNoQixFQUFVLEVBQ1YsSUFBWSxFQUNaLFVBQWlDLEVBQUU7UUFFbkMsTUFBTSxLQUFLLEdBQUcsSUFBSSxRQUFRLENBQUMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLE9BQU8sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLE9BQU8sSUFBSSx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztLQUM3QztJQUVEOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFrQixFQUFFLEdBQVc7UUFDbEQsT0FBTyxJQUFJLDZCQUE2QixDQUFDLE1BQU0sRUFBRSxHQUFHLENBQUMsQ0FBQztLQUN2RDtJQUVEOzs7O09B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QztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDcEMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQzNCLDZEQUE2RCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQ2pGLElBQUksQ0FDTCxDQUFDO1lBQ0osQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLFlBQVksS0FBSyxJQUFJLENBQUMsWUFBWSxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUM7Z0JBQzFELE1BQU0sSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLG9EQUFvRCxJQUFJLENBQUMsWUFBWSxHQUFHLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEgsQ0FBQztTQUNGOztZQTdQVSx1REFBZTs7Ozs7QUFBZiwwQ0FBZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgeyBDZm5Db250YWluZXJSZWNpcGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHMzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgKiBhcyBzM2Fzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMtYXNzZXRzJztcbmltcG9ydCB7IG1lbW9pemVkR2V0dGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBCYXNlQ29udGFpbmVySW1hZ2UsIENvbnRhaW5lckluc3RhbmNlSW1hZ2UgfSBmcm9tICcuL2Jhc2UtaW1hZ2UnO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gJy4vZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgSUltYWdlUmVjaXBlIH0gZnJvbSAnLi9pbWFnZS1yZWNpcGUnO1xuaW1wb3J0IHsgT1NWZXJzaW9uIH0gZnJvbSAnLi9vcy12ZXJzaW9uJztcbmltcG9ydCB7IENvbXBvbmVudENvbmZpZ3VyYXRpb24sIElSZWNpcGVCYXNlIH0gZnJvbSAnLi9yZWNpcGUtYmFzZSc7XG5cbmNvbnN0IENPTlRBSU5FUl9SRUNJUEVfU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5Db250YWluZXJSZWNpcGUnKTtcblxuLyoqXG4gKiBSZXByZXNlbnRzIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBhIGNvbnRhaW5lciByZWNpcGUuIFdoZW4gdXNpbmcgdGhlIHJlY2lwZSBpbiBhIHBpcGVsaW5lLCB0aGUgcGlwZWxpbmUgd2lsbCB1c2UgdGhlXG4gKiBsYXRlc3QgcmVjaXBlIGF0IHRoZSB0aW1lIG9mIGV4ZWN1dGlvbi5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9pYmhvdy1zZW1hbnRpYy12ZXJzaW9uaW5nLmh0bWxcbiAqL1xuY29uc3QgTEFURVNUX1ZFUlNJT04gPSAneC54LngnO1xuXG4vKipcbiAqIFRoZSBkZWZhdWx0IHZlcnNpb24gdG8gdXNlIGluIHRoZSBjb250YWluZXIgcmVjaXBlLiBXaGVuIHRoZSByZWNpcGUgaXMgdXBkYXRlZCwgdGhlIGB4YCB3aWxsIGJlIGluY3JlbWVudGVkIG9mZiBmcm9tXG4gKiB0aGUgbGF0ZXN0IHJlY2lwZSB2ZXJzaW9uIHRoYXQgZXhpc3RzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL2NyZWF0ZS1pbWFnZS1yZWNpcGVzLmh0bWxcbiAqL1xuY29uc3QgREVGQVVMVF9SRUNJUEVfVkVSU0lPTiA9ICcxLjAueCc7XG5cbi8qKlxuICogQW4gRUMyIEltYWdlIEJ1aWxkZXIgQ29udGFpbmVyIFJlY2lwZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ29udGFpbmVyUmVjaXBlIGV4dGVuZHMgSVJlY2lwZUJhc2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJSZWNpcGVBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciByZWNpcGVcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyUmVjaXBlTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJSZWNpcGVWZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBDb250YWluZXIgUmVjaXBlIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyUmVjaXBlUHJvcHMge1xuICAvKipcbiAgICogVGhlIGJhc2UgaW1hZ2UgZm9yIGN1c3RvbWl6YXRpb25zIHNwZWNpZmllZCBpbiB0aGUgY29udGFpbmVyIHJlY2lwZS5cbiAgICovXG4gIHJlYWRvbmx5IGJhc2VJbWFnZTogQmFzZUNvbnRhaW5lckltYWdlO1xuXG4gIC8qKlxuICAgKiBUaGUgY29udGFpbmVyIHJlcG9zaXRvcnkgd2hlcmUgdGhlIG91dHB1dCBjb250YWluZXIgaW1hZ2UgaXMgc3RvcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0UmVwb3NpdG9yeTogUmVwb3NpdG9yeTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGNvbnRhaW5lciByZWNpcGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGEgbmFtZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBjb250YWluZXIgcmVjaXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxLjAueFxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyUmVjaXBlVmVyc2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBjb250YWluZXIgcmVjaXBlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRvY2tlcmZpbGUgdGVtcGxhdGUgdXNlZCB0byBidWlsZCB0aGUgY29udGFpbmVyIGltYWdlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgc3RhbmRhcmQgZG9ja2VyZmlsZSB0ZW1wbGF0ZSB3aWxsIGJlIGdlbmVyYXRlZCB0byBwdWxsIHRoZSBiYXNlIGltYWdlLCBwZXJmb3JtIGVudmlyb25tZW50IHNldHVwLCBhbmRcbiAgICogcnVuIGFsbCBjb21wb25lbnRzIGluIHRoZSByZWNpcGVcbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlcmZpbGU/OiBEb2NrZXJmaWxlRGF0YTtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgY29tcG9uZW50IGNvbmZpZ3VyYXRpb25zIHRvIGFwcGx5IGluIHRoZSBpbWFnZSBidWlsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY29tcG9uZW50cz86IENvbXBvbmVudENvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIEtNUyBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSBkb2NrZXJmaWxlIHRlbXBsYXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBrbXNLZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVGhlIHdvcmtpbmcgZGlyZWN0b3J5IGZvciB1c2UgZHVyaW5nIGJ1aWxkIGFuZCB0ZXN0IHdvcmtmbG93cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgSW1hZ2UgQnVpbGRlciBkZWZhdWx0IHdvcmtpbmcgZGlyZWN0b3J5IGlzIHVzZWQuIEZvciBMaW51eCBhbmQgbWFjT1MgYnVpbGRzLCB0aGlzIHdvdWxkIGJlIC90bXAuIEZvclxuICAgKiBXaW5kb3dzIGJ1aWxkcywgdGhpcyB3b3VsZCBiZSBDOi9cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBvcGVyYXRpbmcgc3lzdGVtIChPUykgdmVyc2lvbiBvZiB0aGUgYmFzZSBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJbWFnZSBCdWlsZGVyIHdpbGwgZGV0ZXJtaW5lIHRoZSBPUyB2ZXJzaW9uIG9mIHRoZSBiYXNlIGltYWdlLCBpZiBzb3VyY2VkIGZyb20gYSB0aGlyZC1wYXJ0eSBjb250YWluZXJcbiAgICogcmVnaXN0cnkuIE90aGVyd2lzZSwgdGhlIE9TIHZlcnNpb24gb2YgdGhlIGJhc2UgaW1hZ2UgaXMgcmVxdWlyZWQuXG4gICAqL1xuICByZWFkb25seSBvc1ZlcnNpb24/OiBPU1ZlcnNpb247XG5cbiAgLyoqXG4gICAqIFRoZSBibG9jayBkZXZpY2VzIHRvIGF0dGFjaCB0byB0aGUgaW5zdGFuY2UgdXNlZCBmb3IgYnVpbGRpbmcsIHRlc3RpbmcsIGFuZCBkaXN0cmlidXRpbmcgdGhlIGNvbnRhaW5lciBpbWFnZS5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGJsb2NrIGRldmljZXMgb2YgdGhlIGluc3RhbmNlIGltYWdlIHdpbGwgYmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VCbG9ja0RldmljZXM/OiBlYzIuQmxvY2tEZXZpY2VbXTtcblxuICAvKipcbiAgICogVGhlIGltYWdlIHRvIHVzZSB0byBsYXVuY2ggdGhlIGluc3RhbmNlIHVzZWQgZm9yIGJ1aWxkaW5nLCB0ZXN0aW5nLCBhbmQgZGlzdHJpYnV0aW5nIHRoZSBjb250YWluZXIgaW1hZ2UuXG4gICAqXG4gICAqIEBkZWZhdWx0IEltYWdlIEJ1aWxkZXIgd2lsbCB1c2UgdGhlIGFwcHJvcHJpYXRlIEVDUy1vcHRpbWl6ZWQgQU1JXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZUltYWdlPzogQ29udGFpbmVySW5zdGFuY2VJbWFnZTtcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGNvbnRhaW5lciByZWNpcGVcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgdGhlIGNvbnRhaW5lciBiZWluZyB1c2VkIGluIHRoZSBjb250YWluZXIgcmVjaXBlXG4gKi9cbmV4cG9ydCBlbnVtIENvbnRhaW5lclR5cGUge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjb250YWluZXIgcmVjaXBlIHVzZXMgYSBEb2NrZXIgY29udGFpbmVyXG4gICAqL1xuICBET0NLRVIgPSAnRE9DS0VSJyxcbn1cblxuLyoqXG4gKiBUaGUgcmVuZGVyZWQgRG9ja2VyZmlsZSB2YWx1ZSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvbi5cbiAqIC0gRm9yIGlubGluZSBkb2NrZXJmaWxlcywgZG9ja2VyZmlsZVRlbXBsYXRlRGF0YSBpcyB0aGUgRG9ja2VyZmlsZSB0ZW1wbGF0ZSB0ZXh0XG4gKiAtIEZvciBTMy1iYWNrZWQgZG9ja2VyZmlsZXMsIGRvY2tlcmZpbGVUZW1wbGF0ZVVyaSBpcyB0aGUgUzMgVVJMXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRG9ja2VyZmlsZVRlbXBsYXRlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBEb2NrZXJmaWxlIGRhdGEsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lIGlmIGRvY2tlcmZpbGVUZW1wbGF0ZVVyaSBpcyBzZXRcbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlcmZpbGVUZW1wbGF0ZURhdGE/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZW5kZXJlZCBEb2NrZXJmaWxlIFVSSSwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmUgaWYgZG9ja2VyZmlsZVRlbXBsYXRlRGF0YSBpcyBzZXRcbiAgICovXG4gIHJlYWRvbmx5IGRvY2tlcmZpbGVUZW1wbGF0ZVVyaT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgZm9yIHJlZmVyZW5jaW5nIGFuZCB1cGxvYWRpbmcgZG9ja2VyZmlsZSBkYXRhIGZvciB0aGUgY29udGFpbmVyIHJlY2lwZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRG9ja2VyZmlsZURhdGEge1xuICAvKipcbiAgICogVXBsb2FkcyBkb2NrZXJmaWxlIGRhdGEgZnJvbSBhIGxvY2FsIGZpbGUgdG8gUzMgdG8gdXNlIGFzIHRoZSBkb2NrZXJmaWxlIGRhdGFcbiAgICpcbiAgICogQHBhcmFtIHNjb3BlIFRoZSBjb25zdHJ1Y3Qgc2NvcGVcbiAgICogQHBhcmFtIGlkIElkZW50aWZpZXIgb2YgdGhlIGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gcGF0aCBUaGUgbG9jYWwgcGF0aCB0byB0aGUgZG9ja2VyZmlsZSBkYXRhIGZpbGVcbiAgICogQHBhcmFtIG9wdGlvbnMgUzMgYXNzZXQgdXBsb2FkIG9wdGlvbnNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFzc2V0KFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgb3B0aW9uczogczNhc3NldHMuQXNzZXRPcHRpb25zID0ge30sXG4gICk6IFMzRG9ja2VyZmlsZURhdGEge1xuICAgIGNvbnN0IGFzc2V0ID0gbmV3IHMzYXNzZXRzLkFzc2V0KHNjb3BlLCBpZCwgeyAuLi5vcHRpb25zLCBwYXRoIH0pO1xuICAgIHJldHVybiBuZXcgUzNEb2NrZXJmaWxlRGF0YUZyb21Bc3NldChhc3NldCk7XG4gIH1cblxuICAvKipcbiAgICogUmVmZXJlbmNlcyBkb2NrZXJmaWxlIGRhdGEgZnJvbSBhIHByZS1leGlzdGluZyBTMyBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIGJ1Y2tldCBUaGUgUzMgYnVja2V0IHdoZXJlIHRoZSBkb2NrZXJmaWxlIGRhdGEgaXMgc3RvcmVkXG4gICAqIEBwYXJhbSBrZXkgVGhlIFMzIGtleSBvZiB0aGUgZG9ja2VyZmlsZSBkYXRhIGZpbGVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVMzKGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcpOiBTM0RvY2tlcmZpbGVEYXRhIHtcbiAgICByZXR1cm4gbmV3IFMzRG9ja2VyZmlsZURhdGFGcm9tQnVja2V0S2V5KGJ1Y2tldCwga2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVc2VzIGFuIGlubGluZSBzdHJpbmcgYXMgdGhlIGRvY2tlcmZpbGUgZGF0YVxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSBBbiBpbmxpbmUgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZG9ja2VyZmlsZSBkYXRhXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21JbmxpbmUoZGF0YTogc3RyaW5nKTogRG9ja2VyZmlsZURhdGEge1xuICAgIHJldHVybiBuZXcgSW5saW5lRG9ja2VyZmlsZURhdGEoZGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIERvY2tlcmZpbGUgdmFsdWUsIGZvciB1c2UgaW4gQ2xvdWRGb3JtYXRpb24uXG4gICAqIC0gRm9yIGlubGluZSBkb2NrZXJmaWxlcywgZG9ja2VyZmlsZVRlbXBsYXRlRGF0YSBpcyB0aGUgRG9ja2VyZmlsZSB0ZW1wbGF0ZSB0ZXh0XG4gICAqIC0gRm9yIFMzLWJhY2tlZCBkb2NrZXJmaWxlcywgZG9ja2VyZmlsZVRlbXBsYXRlVXJpIGlzIHRoZSBTMyBVUkxcbiAgICovXG4gIGFic3RyYWN0IHJlbmRlcigpOiBEb2NrZXJmaWxlVGVtcGxhdGVDb25maWc7XG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIGZvciBTMy1iYXNlZCBkb2NrZXJmaWxlIGRhdGEgcmVmZXJlbmNlcywgY29udGFpbmluZyBhZGRpdGlvbmFsIHBlcm1pc3Npb24gZ3JhbnQgbWV0aG9kcyBvbiB0aGUgUzMgb2JqZWN0XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTM0RvY2tlcmZpbGVEYXRhIGV4dGVuZHMgRG9ja2VyZmlsZURhdGEge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgYnVja2V0OiBzMy5JQnVja2V0O1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkga2V5OiBzdHJpbmc7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGJ1Y2tldDogczMuSUJ1Y2tldCwga2V5OiBzdHJpbmcpIHtcbiAgICBzdXBlcigpO1xuXG4gICAgdGhpcy5idWNrZXQgPSBidWNrZXQ7XG4gICAgdGhpcy5rZXkgPSBrZXk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIERvY2tlcmZpbGUgUzMgVVJMLCBmb3IgdXNlIGluIENsb3VkRm9ybWF0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKCk6IERvY2tlcmZpbGVUZW1wbGF0ZUNvbmZpZyB7XG4gICAgcmV0dXJuIHsgZG9ja2VyZmlsZVRlbXBsYXRlVXJpOiB0aGlzLmJ1Y2tldC5zM1VybEZvck9iamVjdCh0aGlzLmtleSkgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwdXQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBkb2NrZXJmaWxlIGRhdGEgaW4gUzNcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFB1dChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuYnVja2V0LmdyYW50UHV0KGdyYW50ZWUsIHRoaXMua2V5KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgZG9ja2VyZmlsZSBkYXRhIGluIFMzXG4gICAqIFtkaXNhYmxlLWF3c2xpbnQ6bm8tZ3JhbnRzXVxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5idWNrZXQuZ3JhbnRSZWFkKGdyYW50ZWUsIHRoaXMua2V5KTtcbiAgfVxufVxuXG5jbGFzcyBJbmxpbmVEb2NrZXJmaWxlRGF0YSBleHRlbmRzIERvY2tlcmZpbGVEYXRhIHtcbiAgcHJvdGVjdGVkIHJlYWRvbmx5IGRhdGE6IHN0cmluZztcblxuICBwdWJsaWMgY29uc3RydWN0b3IoZGF0YTogc3RyaW5nKSB7XG4gICAgc3VwZXIoKTtcblxuICAgIHRoaXMuZGF0YSA9IGRhdGE7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHJlbmRlcmVkIERvY2tlcmZpbGUgdGV4dCwgZm9yIHVzZSBpbiBDbG91ZEZvcm1hdGlvblxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBEb2NrZXJmaWxlVGVtcGxhdGVDb25maWcge1xuICAgIHJldHVybiB7IGRvY2tlcmZpbGVUZW1wbGF0ZURhdGE6IHRoaXMuZGF0YSB9O1xuICB9XG59XG5cbmNsYXNzIFMzRG9ja2VyZmlsZURhdGFGcm9tQnVja2V0S2V5IGV4dGVuZHMgUzNEb2NrZXJmaWxlRGF0YSB7XG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihidWNrZXQ6IHMzLklCdWNrZXQsIGtleTogc3RyaW5nKSB7XG4gICAgc3VwZXIoYnVja2V0LCBrZXkpO1xuICB9XG59XG5cbmNsYXNzIFMzRG9ja2VyZmlsZURhdGFGcm9tQXNzZXQgZXh0ZW5kcyBTM0RvY2tlcmZpbGVEYXRhIHtcbiAgcHVibGljIGNvbnN0cnVjdG9yKGFzc2V0OiBzM2Fzc2V0cy5Bc3NldCkge1xuICAgIHN1cGVyKGFzc2V0LmJ1Y2tldCwgYXNzZXQuczNPYmplY3RLZXkpO1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYW4gRUMyIEltYWdlIEJ1aWxkZXIgY29udGFpbmVyIHJlY2lwZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclJlY2lwZUF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGRlcml2ZWQgZnJvbSBjb250YWluZXJSZWNpcGVOYW1lXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJSZWNpcGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgcmVjaXBlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVyaXZlZCBmcm9tIGNvbnRhaW5lclJlY2lwZUFyblxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyUmVjaXBlTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHZlcnNpb24gb2YgdGhlIGNvbnRhaW5lciByZWNpcGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZXJpdmVkIGZyb20gY29udGFpbmVyUmVjaXBlQXJuLiBpZiBhIGNvbnRhaW5lclJlY2lwZU5hbWUgaXMgcHJvdmlkZWQsIHRoZSBsYXRlc3QgdmVyc2lvbiwgeC54LngsIHdpbGxcbiAgICogYmUgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZVZlcnNpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBuZXcgb3IgaW1wb3J0ZWQgQ29udGFpbmVyIFJlY2lwZVxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQ29udGFpbmVyUmVjaXBlQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElDb250YWluZXJSZWNpcGUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgY29udGFpbmVyUmVjaXBlQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgcmVjaXBlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBjb250YWluZXJSZWNpcGVOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIG9mIHRoZSBjb250YWluZXIgcmVjaXBlXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBjb250YWluZXJSZWNpcGVWZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgY29udGFpbmVyIHJlY2lwZVxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5jb250YWluZXJSZWNpcGVBcm5dLFxuICAgICAgc2NvcGU6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGNvbnRhaW5lciByZWNpcGVcbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0Q29udGFpbmVyUmVjaXBlJyk7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlY2lwZSBpcyBhIENvbnRhaW5lciBSZWNpcGVcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2lzQ29udGFpbmVyUmVjaXBlKCk6IHRoaXMgaXMgSUNvbnRhaW5lclJlY2lwZSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHJlY2lwZSBpcyBhbiBJbWFnZSBSZWNpcGVcbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwdWJsaWMgX2lzSW1hZ2VSZWNpcGUoKTogdGhpcyBpcyBJSW1hZ2VSZWNpcGUge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgQ29udGFpbmVyIFJlY2lwZS5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9pbWFnZWJ1aWxkZXIvbGF0ZXN0L3VzZXJndWlkZS9tYW5hZ2UtcmVjaXBlcy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBDb250YWluZXJSZWNpcGUgZXh0ZW5kcyBDb250YWluZXJSZWNpcGVCYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkNvbnRhaW5lclJlY2lwZSc7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBjb250YWluZXIgcmVjaXBlIGdpdmVuIGl0cyBBUk4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Db250YWluZXJSZWNpcGVBcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgY29udGFpbmVyUmVjaXBlQXJuOiBzdHJpbmcpOiBJQ29udGFpbmVyUmVjaXBlIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tQ29udGFpbmVyUmVjaXBlQXR0cmlidXRlcyhzY29wZSwgaWQsIHsgY29udGFpbmVyUmVjaXBlQXJuIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgYW4gZXhpc3RpbmcgY29udGFpbmVyIHJlY2lwZSBnaXZlbiBpdHMgbmFtZS4gVGhlIHByb3ZpZGVkIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5XG4gICAqIGNvbnZlcnRpbmcgYWxsIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Db250YWluZXJSZWNpcGVOYW1lKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGNvbnRhaW5lclJlY2lwZU5hbWU6IHN0cmluZyk6IElDb250YWluZXJSZWNpcGUge1xuICAgIHJldHVybiB0aGlzLmZyb21Db250YWluZXJSZWNpcGVBdHRyaWJ1dGVzKHNjb3BlLCBpZCwgeyBjb250YWluZXJSZWNpcGVOYW1lIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBjb250YWluZXIgcmVjaXBlIGJ5IHByb3ZpZGluZyBpdHMgYXR0cmlidXRlcy4gSWYgdGhlIGNvbnRhaW5lciByZWNpcGUgbmFtZSBpcyBwcm92aWRlZCBhcyBhblxuICAgKiBhdHRyaWJ1dGUsIGl0IG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlc1xuICAgKiBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQ29udGFpbmVyUmVjaXBlQXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IENvbnRhaW5lclJlY2lwZUF0dHJpYnV0ZXMsXG4gICk6IElDb250YWluZXJSZWNpcGUge1xuICAgIGlmICghYXR0cnMuY29udGFpbmVyUmVjaXBlQXJuICYmICFhdHRycy5jb250YWluZXJSZWNpcGVOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgJ2VpdGhlciBlaXRoZXIgY29udGFpbmVyUmVjaXBlQXJuIG9yIGNvbnRhaW5lclJlY2lwZU5hbWUgbXVzdCBiZSBwcm92aWRlZCB0byBpbXBvcnQgYSBjb250YWluZXIgcmVjaXBlJyxcbiAgICAgICAgc2NvcGUsXG4gICAgICApO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnRhaW5lclJlY2lwZUFybiA9XG4gICAgICBhdHRycy5jb250YWluZXJSZWNpcGVBcm4gPz9cbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnY29udGFpbmVyLXJlY2lwZScsXG4gICAgICAgIHJlc291cmNlTmFtZTogYCR7YXR0cnMuY29udGFpbmVyUmVjaXBlTmFtZX0vJHthdHRycy5jb250YWluZXJSZWNpcGVWZXJzaW9uID8/IExBVEVTVF9WRVJTSU9OfWAsXG4gICAgICB9KTtcblxuICAgIGNvbnN0IFtjb250YWluZXJSZWNpcGVOYW1lLCBjb250YWluZXJSZWNpcGVWZXJzaW9uXSA9ICgoKSA9PiB7XG4gICAgICBpZiAoYXR0cnMuY29udGFpbmVyUmVjaXBlTmFtZSkge1xuICAgICAgICByZXR1cm4gW2F0dHJzLmNvbnRhaW5lclJlY2lwZU5hbWUsIGF0dHJzLmNvbnRhaW5lclJlY2lwZVZlcnNpb24gPz8gTEFURVNUX1ZFUlNJT05dO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb250YWluZXJSZWNpcGVOYW1lVmVyc2lvbiA9IGNkay5TdGFjay5vZihzY29wZSkuc3BsaXRBcm4oXG4gICAgICAgIGNvbnRhaW5lclJlY2lwZUFybixcbiAgICAgICAgY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICAgKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgICBjb25zdCBjb250YWluZXJSZWNpcGVOYW1lVmVyc2lvblNwbGl0ID0gY2RrLkZuLnNwbGl0KCcvJywgY29udGFpbmVyUmVjaXBlTmFtZVZlcnNpb24pO1xuICAgICAgcmV0dXJuIFtjZGsuRm4uc2VsZWN0KDAsIGNvbnRhaW5lclJlY2lwZU5hbWVWZXJzaW9uU3BsaXQpLCBjZGsuRm4uc2VsZWN0KDEsIGNvbnRhaW5lclJlY2lwZU5hbWVWZXJzaW9uU3BsaXQpXTtcbiAgICB9KSgpO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQ29udGFpbmVyUmVjaXBlQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgY29udGFpbmVyUmVjaXBlQXJuID0gY29udGFpbmVyUmVjaXBlQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZU5hbWUgPSBjb250YWluZXJSZWNpcGVOYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNvbnRhaW5lclJlY2lwZVZlcnNpb24gPSBjb250YWluZXJSZWNpcGVWZXJzaW9uO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIENvbnRhaW5lclJlY2lwZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNDb250YWluZXJSZWNpcGUoeDogYW55KTogeCBpcyBDb250YWluZXJSZWNpcGUge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBDT05UQUlORVJfUkVDSVBFX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSBpbnN0YW5jZUJsb2NrRGV2aWNlczogZWMyLkJsb2NrRGV2aWNlW10gPSBbXTtcbiAgcHJpdmF0ZSByZXNvdXJjZTogQ2ZuQ29udGFpbmVyUmVjaXBlO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ29udGFpbmVyUmVjaXBlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTpcbiAgICAgICAgcHJvcHMuY29udGFpbmVyUmVjaXBlTmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgQ09OVEFJTkVSX1JFQ0lQRV9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICB0aGlzLnZhbGlkYXRlQ29udGFpbmVyUmVjaXBlTmFtZSgpO1xuXG4gICAgdGhpcy5hZGRJbnN0YW5jZUJsb2NrRGV2aWNlKC4uLihwcm9wcy5pbnN0YW5jZUJsb2NrRGV2aWNlcyA/PyBbXSkpO1xuXG4gICAgY29uc3QgY29tcG9uZW50czogQ2ZuQ29udGFpbmVyUmVjaXBlLkNvbXBvbmVudENvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdIHwgdW5kZWZpbmVkID0gcHJvcHMuY29tcG9uZW50cz8ubWFwKFxuICAgICAgKGNvbXBvbmVudCkgPT4gKHtcbiAgICAgICAgY29tcG9uZW50QXJuOiBjb21wb25lbnQuY29tcG9uZW50LmNvbXBvbmVudEFybixcbiAgICAgICAgLi4uKGNvbXBvbmVudC5wYXJhbWV0ZXJzICYmIHtcbiAgICAgICAgICBwYXJhbWV0ZXJzOiBPYmplY3QuZW50cmllcyhjb21wb25lbnQucGFyYW1ldGVycykubWFwKFxuICAgICAgICAgICAgKFtuYW1lLCBwYXJhbV0pOiBDZm5Db250YWluZXJSZWNpcGUuQ29tcG9uZW50UGFyYW1ldGVyUHJvcGVydHkgPT4gKHtcbiAgICAgICAgICAgICAgbmFtZSxcbiAgICAgICAgICAgICAgdmFsdWU6IHBhcmFtLnZhbHVlLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgY29uc3QgZG9ja2VyZmlsZSA9XG4gICAgICBwcm9wcy5kb2NrZXJmaWxlID8/XG4gICAgICBEb2NrZXJmaWxlRGF0YS5mcm9tSW5saW5lKFxuICAgICAgICAnRlJPTSB7e3sgaW1hZ2VidWlsZGVyOnBhcmVudEltYWdlIH19fVxcbnt7eyBpbWFnZWJ1aWxkZXI6ZW52aXJvbm1lbnRzIH19fVxcbnt7eyBpbWFnZWJ1aWxkZXI6Y29tcG9uZW50cyB9fX0nLFxuICAgICAgKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lclJlY2lwZVZlcnNpb24gPSBwcm9wcy5jb250YWluZXJSZWNpcGVWZXJzaW9uID8/IERFRkFVTFRfUkVDSVBFX1ZFUlNJT047XG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Db250YWluZXJSZWNpcGUodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgbmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICB2ZXJzaW9uOiBjb250YWluZXJSZWNpcGVWZXJzaW9uLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgcGFyZW50SW1hZ2U6IHByb3BzLmJhc2VJbWFnZS5pbWFnZSxcbiAgICAgIGNvbnRhaW5lclR5cGU6IENvbnRhaW5lclR5cGUuRE9DS0VSLFxuICAgICAgdGFyZ2V0UmVwb3NpdG9yeToge1xuICAgICAgICByZXBvc2l0b3J5TmFtZTogcHJvcHMudGFyZ2V0UmVwb3NpdG9yeS5yZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgc2VydmljZTogcHJvcHMudGFyZ2V0UmVwb3NpdG9yeS5zZXJ2aWNlLFxuICAgICAgfSxcbiAgICAgIHBsYXRmb3JtT3ZlcnJpZGU6IHByb3BzLm9zVmVyc2lvbj8ucGxhdGZvcm0sXG4gICAgICBpbWFnZU9zVmVyc2lvbk92ZXJyaWRlOiBwcm9wcy5vc1ZlcnNpb24/Lm9zVmVyc2lvbixcbiAgICAgIGttc0tleUlkOiBwcm9wcy5rbXNLZXk/LmtleUFybixcbiAgICAgIGluc3RhbmNlQ29uZmlndXJhdGlvbjogY2RrLkxhenkuYW55KHsgcHJvZHVjZTogKCkgPT4gdGhpcy5idWlsZEluc3RhbmNlQ29uZmlndXJhdGlvbihwcm9wcykgfSksXG4gICAgICB3b3JraW5nRGlyZWN0b3J5OiBwcm9wcy53b3JraW5nRGlyZWN0b3J5LFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICAgIC4uLmRvY2tlcmZpbGUucmVuZGVyKCksXG4gICAgICAuLi4oY29tcG9uZW50cz8ubGVuZ3RoICYmIHsgY29tcG9uZW50cyB9KSxcbiAgICB9KTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGNvbnRhaW5lclJlY2lwZU5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZU5hbWVBdHRyaWJ1dGUodGhpcy5yZXNvdXJjZS5hdHRyTmFtZSk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBjb250YWluZXJSZWNpcGVBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZSh0aGlzLnJlc291cmNlLmF0dHJBcm4sIHtcbiAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgcmVzb3VyY2U6ICdjb250YWluZXItcmVjaXBlJyxcbiAgICAgIHJlc291cmNlTmFtZTogYCR7dGhpcy5waHlzaWNhbE5hbWV9LyR7dGhpcy5yZXNvdXJjZS52ZXJzaW9ufWAsXG4gICAgfSk7XG4gIH1cblxuICBAbWVtb2l6ZWRHZXR0ZXJcbiAgcHVibGljIGdldCBjb250YWluZXJSZWNpcGVWZXJzaW9uKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuZ2V0QXR0KCdWZXJzaW9uJykudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGJsb2NrIGRldmljZXMgdG8gYXR0YWNoIHRvIHRoZSBpbnN0YW5jZSB1c2VkIGZvciBidWlsZGluZywgdGVzdGluZywgYW5kIGRpc3RyaWJ1dGluZyB0aGUgY29udGFpbmVyIGltYWdlLlxuICAgKlxuICAgKiBAcGFyYW0gaW5zdGFuY2VCbG9ja0RldmljZXMgLSBUaGUgbGlzdCBvZiBibG9jayBkZXZpY2VzIHRvIGF0dGFjaFxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFkZEluc3RhbmNlQmxvY2tEZXZpY2UoLi4uaW5zdGFuY2VCbG9ja0RldmljZXM6IGVjMi5CbG9ja0RldmljZVtdKTogdm9pZCB7XG4gICAgdGhpcy5pbnN0YW5jZUJsb2NrRGV2aWNlcy5wdXNoKC4uLmluc3RhbmNlQmxvY2tEZXZpY2VzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXJzIHRoZSBibG9jayBkZXZpY2VzIHByb3ZpZGVkIGFzIGlucHV0IHRvIHRoZSBjb25zdHJ1Y3QsIGludG8gdGhlIGJsb2NrIGRldmljZSBtYXBwaW5nIHN0cnVjdHVyZSB0aGF0XG4gICAqIENmbkNvbnRhaW5lclJlY2lwZSBleHBlY3RzIHRvIHJlY2VpdmUuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVuZGVyZWQgYXQgc3ludGhlc2lzIHRpbWUsIGFzIHVzZXJzIGNhbiBhZGQgYWRkaXRpb25hbCBibG9jayBkZXZpY2VzIHdpdGggYGFkZEluc3RhbmNlQmxvY2tEZXZpY2VgLCBhZnRlclxuICAgKiB0aGUgY29uc3RydWN0IGhhcyBiZWVuIGluc3RhbnRpYXRlZC5cbiAgICpcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgcmVuZGVyQmxvY2tEZXZpY2VzKCk6IENmbkNvbnRhaW5lclJlY2lwZS5JbnN0YW5jZUJsb2NrRGV2aWNlTWFwcGluZ1Byb3BlcnR5W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGJsb2NrRGV2aWNlcyA9IHRoaXMuaW5zdGFuY2VCbG9ja0RldmljZXMubWFwKFxuICAgICAgKGJsb2NrRGV2aWNlKTogQ2ZuQ29udGFpbmVyUmVjaXBlLkluc3RhbmNlQmxvY2tEZXZpY2VNYXBwaW5nUHJvcGVydHkgPT4ge1xuICAgICAgICBjb25zdCBlYnNEZXZpY2UgPSBibG9ja0RldmljZS52b2x1bWUuZWJzRGV2aWNlO1xuICAgICAgICBjb25zdCBlYnM6IENmbkNvbnRhaW5lclJlY2lwZS5FYnNJbnN0YW5jZUJsb2NrRGV2aWNlU3BlY2lmaWNhdGlvblByb3BlcnR5ID0ge1xuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LmRlbGV0ZU9uVGVybWluYXRpb24gIT09IHVuZGVmaW5lZCAmJiB7IGRlbGV0ZU9uVGVybWluYXRpb246IGVic0RldmljZS5kZWxldGVPblRlcm1pbmF0aW9uIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LmVuY3J5cHRlZCAhPT0gdW5kZWZpbmVkICYmIHsgZW5jcnlwdGVkOiBlYnNEZXZpY2UuZW5jcnlwdGVkIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LmlvcHMgIT09IHVuZGVmaW5lZCAmJiB7IGlvcHM6IGVic0RldmljZS5pb3BzIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/Lmttc0tleSAhPT0gdW5kZWZpbmVkICYmIHsga21zS2V5SWQ6IGVic0RldmljZS5rbXNLZXkua2V5QXJuIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LnNuYXBzaG90SWQgIT09IHVuZGVmaW5lZCAmJiB7IHNuYXBzaG90SWQ6IGVic0RldmljZS5zbmFwc2hvdElkIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LnRocm91Z2hwdXQgIT09IHVuZGVmaW5lZCAmJiB7IHRocm91Z2hwdXQ6IGVic0RldmljZS50aHJvdWdocHV0IH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LnZvbHVtZVNpemUgIT09IHVuZGVmaW5lZCAmJiB7IHZvbHVtZVNpemU6IGVic0RldmljZS52b2x1bWVTaXplIH0pLFxuICAgICAgICAgIC4uLihlYnNEZXZpY2U/LnZvbHVtZVR5cGUgIT09IHVuZGVmaW5lZCAmJiB7IHZvbHVtZVR5cGU6IGVic0RldmljZS52b2x1bWVUeXBlIH0pLFxuICAgICAgICB9O1xuXG4gICAgICAgIGNvbnN0IG1hcHBpbmdFbmFibGVkID0gYmxvY2tEZXZpY2UubWFwcGluZ0VuYWJsZWQgPz8gdHJ1ZTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBkZXZpY2VOYW1lOiBibG9ja0RldmljZS5kZXZpY2VOYW1lLFxuICAgICAgICAgIHZpcnR1YWxOYW1lOiBibG9ja0RldmljZS52b2x1bWUudmlydHVhbE5hbWUsXG4gICAgICAgICAgLi4uKCFtYXBwaW5nRW5hYmxlZCAmJiB7IG5vRGV2aWNlOiAnJyB9KSxcbiAgICAgICAgICAuLi4oT2JqZWN0LmtleXMoZWJzKS5sZW5ndGggJiYgeyBlYnMgfSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gYmxvY2tEZXZpY2VzLmxlbmd0aCA/IGJsb2NrRGV2aWNlcyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZW5lcmF0ZXMgdGhlIGluc3RhbmNlIGNvbmZpZ3VyYXRpb24gcHJvcGVydHkgaW50byB0aGUgYEluc3RhbmNlQ29uZmlndXJhdGlvbmAgdHlwZSBpbiB0aGUgIENsb3VkRm9ybWF0aW9uIEwxXG4gICAqIGRlZmluaXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgcHJvcHMgcGFzc2VkIGFzIGlucHV0IHRvIHRoZSBjb25zdHJ1Y3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgYnVpbGRJbnN0YW5jZUNvbmZpZ3VyYXRpb24oXG4gICAgcHJvcHM6IENvbnRhaW5lclJlY2lwZVByb3BzLFxuICApOiBDZm5Db250YWluZXJSZWNpcGUuSW5zdGFuY2VDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGJsb2NrRGV2aWNlcyA9IHRoaXMucmVuZGVyQmxvY2tEZXZpY2VzKCk7XG5cbiAgICBjb25zdCBpbnN0YW5jZUNvbmZpZ3VyYXRpb246IENmbkNvbnRhaW5lclJlY2lwZS5JbnN0YW5jZUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSA9IHtcbiAgICAgIC4uLihibG9ja0RldmljZXM/Lmxlbmd0aCAmJiB7IGJsb2NrRGV2aWNlTWFwcGluZ3M6IGJsb2NrRGV2aWNlcyB9KSxcbiAgICAgIC4uLihwcm9wcy5pbnN0YW5jZUltYWdlICE9PSB1bmRlZmluZWQgJiYgeyBpbWFnZTogcHJvcHMuaW5zdGFuY2VJbWFnZS5pbWFnZSB9KSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGluc3RhbmNlQ29uZmlndXJhdGlvbikubGVuZ3RoID8gaW5zdGFuY2VDb25maWd1cmF0aW9uIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUNvbnRhaW5lclJlY2lwZU5hbWUoKSB7XG4gICAgaWYgKGNkay5Ub2tlbi5pc1VucmVzb2x2ZWQodGhpcy5waHlzaWNhbE5hbWUpKSB7XG4gICAgICByZXR1cm47IC8vIENhbm5vdCB2YWxpZGF0ZSB1bnJlc29sdmVkIHRva2VucywgZ2l2ZW4gdGhlaXIgYWN0dWFsIHZhbHVlIGlzIHJlbmRlcmVkIGF0IGRlcGxveW1lbnQgdGltZVxuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgdGhlIGNvbnRhaW5lclJlY2lwZU5hbWUgY2Fubm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzLCBnb3Q6ICcke3RoaXMucGh5c2ljYWxOYW1lfSdgLFxuICAgICAgICB0aGlzLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUuaW5jbHVkZXMoJyAnKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoYHRoZSBjb250YWluZXJSZWNpcGVOYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcywgZ290OiAnJHt0aGlzLnBoeXNpY2FsTmFtZX0nYCwgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lLmluY2x1ZGVzKCdfJykpIHtcbiAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICBgdGhlIGNvbnRhaW5lclJlY2lwZU5hbWUgY2Fubm90IGNvbnRhaW4gdW5kZXJzY29yZXMsIGdvdDogJyR7dGhpcy5waHlzaWNhbE5hbWV9J2AsXG4gICAgICAgIHRoaXMsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZSAhPT0gdGhpcy5waHlzaWNhbE5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoYHRoZSBjb250YWluZXJSZWNpcGVOYW1lIG11c3QgYmUgbG93ZXJjYXNlLCBnb3Q6ICcke3RoaXMucGh5c2ljYWxOYW1lfSdgLCB0aGlzKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
@@ -376,17 +376,12 @@ export declare class DistributionConfiguration extends DistributionConfiguration
|
|
|
376
376
|
* Return whether the given object is a DistributionConfiguration.
|
|
377
377
|
*/
|
|
378
378
|
static isDistributionConfiguration(x: any): x is DistributionConfiguration;
|
|
379
|
-
|
|
380
|
-
* The ARN of the distribution configuration
|
|
381
|
-
*/
|
|
382
|
-
readonly distributionConfigurationArn: string;
|
|
383
|
-
/**
|
|
384
|
-
* The name of the distribution configuration
|
|
385
|
-
*/
|
|
386
|
-
readonly distributionConfigurationName: string;
|
|
379
|
+
private readonly resource;
|
|
387
380
|
private readonly amiDistributionsByRegion;
|
|
388
381
|
private readonly containerDistributionsByRegion;
|
|
389
382
|
constructor(scope: Construct, id: string, props?: DistributionConfigurationProps);
|
|
383
|
+
get distributionConfigurationName(): string;
|
|
384
|
+
get distributionConfigurationArn(): string;
|
|
390
385
|
/**
|
|
391
386
|
* Adds AMI distribution settings to the distribution configuration
|
|
392
387
|
*
|