@aws-cdk/aws-imagebuilder-alpha 2.235.1-alpha.0 → 2.237.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 +568 -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
|
@@ -40,6 +40,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
40
40
|
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
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
43
44
|
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
44
45
|
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
45
46
|
const DISTRIBUTION_CONFIGURATION_SYMBOL = Symbol.for('@aws-cdk/aws-imagebuilder-alpha.DistributionConfiguration');
|
|
@@ -88,7 +89,7 @@ var RepositoryService;
|
|
|
88
89
|
* A container repository used to distribute container images in EC2 Image Builder
|
|
89
90
|
*/
|
|
90
91
|
class Repository {
|
|
91
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Repository", version: "2.
|
|
92
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.Repository", version: "2.237.0-alpha.0" };
|
|
92
93
|
/**
|
|
93
94
|
* The ECR repository to use as the target container repository
|
|
94
95
|
*
|
|
@@ -115,21 +116,27 @@ let DistributionConfiguration = (() => {
|
|
|
115
116
|
let _classThis;
|
|
116
117
|
let _classSuper = DistributionConfigurationBase;
|
|
117
118
|
let _instanceExtraInitializers = [];
|
|
119
|
+
let _get_distributionConfigurationName_decorators;
|
|
120
|
+
let _get_distributionConfigurationArn_decorators;
|
|
118
121
|
let _addAmiDistributions_decorators;
|
|
119
122
|
let _addContainerDistributions_decorators;
|
|
120
123
|
var DistributionConfiguration = class extends _classSuper {
|
|
121
124
|
static { _classThis = this; }
|
|
122
125
|
static {
|
|
123
126
|
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
127
|
+
_get_distributionConfigurationName_decorators = [helpers_internal_1.memoizedGetter];
|
|
128
|
+
_get_distributionConfigurationArn_decorators = [helpers_internal_1.memoizedGetter];
|
|
124
129
|
_addAmiDistributions_decorators = [(0, metadata_resource_1.MethodMetadata)()];
|
|
125
130
|
_addContainerDistributions_decorators = [(0, metadata_resource_1.MethodMetadata)()];
|
|
131
|
+
__esDecorate(this, null, _get_distributionConfigurationName_decorators, { kind: "getter", name: "distributionConfigurationName", static: false, private: false, access: { has: obj => "distributionConfigurationName" in obj, get: obj => obj.distributionConfigurationName }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
132
|
+
__esDecorate(this, null, _get_distributionConfigurationArn_decorators, { kind: "getter", name: "distributionConfigurationArn", static: false, private: false, access: { has: obj => "distributionConfigurationArn" in obj, get: obj => obj.distributionConfigurationArn }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
126
133
|
__esDecorate(this, null, _addAmiDistributions_decorators, { kind: "method", name: "addAmiDistributions", static: false, private: false, access: { has: obj => "addAmiDistributions" in obj, get: obj => obj.addAmiDistributions }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
127
134
|
__esDecorate(this, null, _addContainerDistributions_decorators, { kind: "method", name: "addContainerDistributions", static: false, private: false, access: { has: obj => "addContainerDistributions" in obj, get: obj => obj.addContainerDistributions }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
128
135
|
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
129
136
|
DistributionConfiguration = _classThis = _classDescriptor.value;
|
|
130
137
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
131
138
|
}
|
|
132
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DistributionConfiguration", version: "2.
|
|
139
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-imagebuilder-alpha.DistributionConfiguration", version: "2.237.0-alpha.0" };
|
|
133
140
|
/** Uniquely identifies this class. */
|
|
134
141
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-imagebuilder-alpha.DistributionConfiguration';
|
|
135
142
|
/**
|
|
@@ -160,14 +167,7 @@ let DistributionConfiguration = (() => {
|
|
|
160
167
|
static isDistributionConfiguration(x) {
|
|
161
168
|
return x !== null && typeof x === 'object' && DISTRIBUTION_CONFIGURATION_SYMBOL in x;
|
|
162
169
|
}
|
|
163
|
-
|
|
164
|
-
* The ARN of the distribution configuration
|
|
165
|
-
*/
|
|
166
|
-
distributionConfigurationArn = __runInitializers(this, _instanceExtraInitializers);
|
|
167
|
-
/**
|
|
168
|
-
* The name of the distribution configuration
|
|
169
|
-
*/
|
|
170
|
-
distributionConfigurationName;
|
|
170
|
+
resource = __runInitializers(this, _instanceExtraInitializers);
|
|
171
171
|
amiDistributionsByRegion = {};
|
|
172
172
|
containerDistributionsByRegion = {};
|
|
173
173
|
constructor(scope, id, props = {}) {
|
|
@@ -196,14 +196,18 @@ let DistributionConfiguration = (() => {
|
|
|
196
196
|
this.validateDistributionConfigurationName();
|
|
197
197
|
this.addAmiDistributions(...(props.amiDistributions ?? []));
|
|
198
198
|
this.addContainerDistributions(...(props.containerDistributions ?? []));
|
|
199
|
-
|
|
199
|
+
this.resource = new aws_imagebuilder_1.CfnDistributionConfiguration(this, 'Resource', {
|
|
200
200
|
name: this.physicalName,
|
|
201
201
|
description: props.description,
|
|
202
202
|
distributions: cdk.Lazy.any({ produce: () => this.renderDistributions() }),
|
|
203
203
|
tags: props.tags,
|
|
204
204
|
});
|
|
205
|
-
|
|
206
|
-
|
|
205
|
+
}
|
|
206
|
+
get distributionConfigurationName() {
|
|
207
|
+
return this.getResourceNameAttribute(this.resource.attrName);
|
|
208
|
+
}
|
|
209
|
+
get distributionConfigurationArn() {
|
|
210
|
+
return this.getResourceArnAttribute(this.resource.attrArn, {
|
|
207
211
|
service: 'imagebuilder',
|
|
208
212
|
resource: 'distribution-configuration',
|
|
209
213
|
resourceName: this.physicalName,
|
|
@@ -423,4 +427,4 @@ let DistributionConfiguration = (() => {
|
|
|
423
427
|
return DistributionConfiguration = _classThis;
|
|
424
428
|
})();
|
|
425
429
|
exports.DistributionConfiguration = DistributionConfiguration;
|
|
426
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaXN0cmlidXRpb24tY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFHbkMsMkNBQTJDO0FBQzNDLG1FQUE0RTtBQUc1RSw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRzFFLE1BQU0saUNBQWlDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQywyREFBMkQsQ0FBQyxDQUFDO0FBRWxILHFEQUFxRDtBQUNyRCxNQUFNLHFCQUFxQixHQUFHLENBQUMsQ0FBQztBQTBVaEM7O0dBRUc7QUFDSCxNQUFlLDZCQUE4QixTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBVy9EOzs7Ozs7T0FNRztJQUNJLEtBQUssQ0FBQyxPQUF1QixFQUFFLEdBQUcsT0FBaUI7UUFDeEQsT0FBTyxHQUFHLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQztZQUM5QixPQUFPO1lBQ1AsT0FBTztZQUNQLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztZQUNqRCxLQUFLLEVBQUUsSUFBSTtTQUNaLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7O09BS0c7SUFDSSxTQUFTLENBQUMsT0FBdUI7UUFDdEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRSwyQ0FBMkMsQ0FBQyxDQUFDO0tBQ3pFO0NBQ0Y7QUFFRDs7R0FFRztBQUNILElBQVksaUJBS1g7QUFMRCxXQUFZLGlCQUFpQjtJQUMzQjs7T0FFRztJQUNILGdDQUFXLENBQUE7QUFDYixDQUFDLEVBTFcsaUJBQWlCLGlDQUFqQixpQkFBaUIsUUFLNUI7QUFFRDs7R0FFRztBQUNILE1BQXNCLFVBQVU7O0lBQzlCOzs7O09BSUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLFVBQTJCO1FBQy9DLE1BQU0sTUFBTyxT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QkFBK0IsQ0FDckMsZUFBZ0M7WUFFaEMsTUFBTSwwQkFBMEIsR0FBRyxlQUFlLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FDbkUsQ0FBQyx5QkFBeUIsRUFBa0UsRUFBRSxDQUFDLENBQUM7Z0JBQzlGLFlBQVksRUFBRSx5QkFBeUIsQ0FBQyxVQUFVO2dCQUNsRCxRQUFRLEVBQUUseUJBQXlCLENBQUMsUUFBUTtnQkFDNUMsYUFBYSxFQUFFLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxhQUFhO2FBQ2pFLENBQUMsQ0FDSCxDQUFDO1lBRUYsT0FBTywwQkFBMEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDcEY7O1lBdldVLHVEQUF5Qjs7Ozs7QUFBekIsOERBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuY29uc3QgRElTVFJJQlVUSU9OX0NPTkZJR1VSQVRJT05fU1lNQk9MID0gU3ltYm9sLmZvcignQGF3cy1jZGsvYXdzLWltYWdlYnVpbGRlci1hbHBoYS5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uJyk7XG5cbi8vIEZhc3QgTGF1bmNoIHJlcXVpcmVzIGF0IGxlYXN0IDYgcGFyYWxsZWwgbGF1bmNoZXMuXG5jb25zdCBNSU5fUEFSQUxMRUxfTEFVTkNIRVMgPSA2O1xuXG4vKipcbiAqIEFuIEVDMiBJbWFnZSBCdWlsZGVyIERpc3RyaWJ1dGlvbiBDb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIGV4dGVuZHMgY2RrLklSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCBjdXN0b20gYWN0aW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgZ3JhbnRSZWFkKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIFRoZSBsYXVuY2ggcGVybWlzc2lvbnMgZm9yIHRoZSBBTUksIGRlZmluaW5nIHdoaWNoIHByaW5jaXBhbHMgYXJlIGFsbG93ZWQgdG8gYWNjZXNzIHRoZSBBTUlcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbWlMYXVuY2hQZXJtaXNzaW9uIHtcbiAgLyoqXG4gICAqIFRoZSBBUk5zIGZvciB0aGUgQVdTIE9yZ2FuaXphdGlvbnMgb3JnYW5pemF0aW9uYWwgdW5pdHMgdG8gc2hhcmUgdGhlIEFNSSB3aXRoXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbmFsVW5pdEFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIEFSTnMgZm9yIHRoZSBBV1MgT3JnYW5pemF0aW9uIHRoYXQgeW91IHdhbnQgdG8gc2hhcmUgdGhlIEFNSSB3aXRoXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IG9yZ2FuaXphdGlvbkFybnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBtYWtlIHRoZSBBTUkgcHVibGljLiBCbG9jayBwdWJsaWMgYWNjZXNzIGZvciBBTUlzIG11c3QgYmUgZGlzYWJsZWQgdG8gbWFrZSB0aGUgQU1JIHB1YmxpYy5cbiAgICpcbiAgICogV0FSTklORzogTWFraW5nIGFuIEFNSSBwdWJsaWMgZXhwb3NlcyBpdCB0byBhbnkgQVdTIGFjY291bnQgZ2xvYmFsbHkuXG4gICAqICBFbnN1cmUgdGhlIEFNSSBkb2VzIG5vdCBjb250YWluOlxuICAgKiAgLSBTZW5zaXRpdmUgZGF0YSBvciBjcmVkZW50aWFsc1xuICAgKiAgLSBQcm9wcmlldGFyeSBzb2Z0d2FyZSBvciBjb25maWd1cmF0aW9uc1xuICAgKiAgLSBJbnRlcm5hbCBuZXR3b3JrIGluZm9ybWF0aW9uIG9yIHNlY3VyaXR5IHNldHRpbmdzXG4gICAqXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGJsb2NraW5nIHB1YmxpYyBhY2Nlc3MgZm9yIEFNSXMsIHNlZTogW1VuZGVyc3RhbmQgYmxvY2sgcHVibGljIGFjY2VzcyBmb3IgQU1Jc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvVXNlckd1aWRlL2Jsb2NrLXB1YmxpYy1hY2Nlc3MtdG8tYW1pcy5odG1sKVxuICAgKlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgaXNQdWJsaWNVc2VyR3JvdXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIGFjY291bnQgSURzIHRvIHNoYXJlIHRoZSBBTUkgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50SWRzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogVGhlIFNTTSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBvciB1cGRhdGUgZm9yIHRoZSBkaXN0cmlidXRlZCBBTUlzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU1NNUGFyYW1ldGVyQ29uZmlndXJhdGlvbnMge1xuICAvKipcbiAgICogVGhlIEFXUyBhY2NvdW50IElEIHRoYXQgd2lsbCBvd24gdGhlIFNTTSBwYXJhbWV0ZXIgaW4gdGhlIGdpdmVuIHJlZ2lvbi4gVGhpcyBtdXN0IGJlIG9uZSBvZiB0aGUgdGFyZ2V0IGFjY291bnRzXG4gICAqIHRoYXQgd2FzIGluY2x1ZGVkIGluIHRoZSBsaXN0IG9mIEFNSSBkaXN0cmlidXRpb24gdGFyZ2V0IGFjY291bnRzXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSBjdXJyZW50IGFjY291bnQgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgYW1pQWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRhdGEgdHlwZSBvZiB0aGUgU1NNIHBhcmFtZXRlclxuICAgKlxuICAgKiBAZGVmYXVsdCBzc20uUGFyYW1ldGVyRGF0YVR5cGUuQVdTX0VDMl9JTUFHRVxuICAgKi9cbiAgcmVhZG9ubHkgZGF0YVR5cGU/OiBzc20uUGFyYW1ldGVyRGF0YVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBTU00gcGFyYW1ldGVyIHRvIGNyZWF0ZSBvciB1cGRhdGVcbiAgICovXG4gIHJlYWRvbmx5IHBhcmFtZXRlcjogc3NtLklTdHJpbmdQYXJhbWV0ZXI7XG59XG5cbi8qKlxuICogVGhlIGxhdW5jaCB0ZW1wbGF0ZSB0byBhcHBseSB0aGUgZGlzdHJpYnV0ZWQgQU1JIHRvXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBsYXVuY2ggdGVtcGxhdGUgdG8gYXBwbHkgdGhlIGRpc3RyaWJ1dGVkIEFNSSB0by4gQSBuZXcgbGF1bmNoIHRlbXBsYXRlIHZlcnNpb24gd2lsbCBiZSBjcmVhdGVkIGZvciB0aGVcbiAgICogcHJvdmlkZWQgbGF1bmNoIHRlbXBsYXRlIHdpdGggdGhlIGRpc3RyaWJ1dGVkIEFNSSBhcHBsaWVkLlxuICAgKlxuICAgKiAqTm90ZToqIFRoZSBsYXVuY2ggdGVtcGxhdGUgc2hvdWxkIGV4cG9zZSBhIGBsYXVuY2hUZW1wbGF0ZUlkYC4gVGVtcGxhdGVzXG4gICAqIGltcG9ydGVkIGJ5IG5hbWUgb25seSBhcmUgbm90IHN1cHBvcnRlZC5cbiAgICpcbiAgICovXG4gIHJlYWRvbmx5IGxhdW5jaFRlbXBsYXRlOiBlYzIuSUxhdW5jaFRlbXBsYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgQVdTIGFjY291bnQgSUQgdGhhdCBvd25zIHRoZSBsYXVuY2ggdGVtcGxhdGVcbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGN1cnJlbnQgYWNjb3VudCBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBhY2NvdW50SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gc2V0IHRoZSBuZXcgbGF1bmNoIHRlbXBsYXRlIHZlcnNpb24gdGhhdCBpcyBjcmVhdGVkIGFzIHRoZSBkZWZhdWx0IGxhdW5jaCB0ZW1wbGF0ZSB2ZXJzaW9uLiBBZnRlclxuICAgKiBjcmVhdGlvbiBvZiB0aGUgbGF1bmNoIHRlbXBsYXRlIHZlcnNpb24gY29udGFpbmluZyB0aGUgZGlzdHJpYnV0ZWQgQU1JLCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgc2V0IGFzIHRoZVxuICAgKiBkZWZhdWx0IHZlcnNpb24gZm9yIHRoZSBsYXVuY2ggdGVtcGxhdGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzZXREZWZhdWx0VmVyc2lvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogVGhlIEVDMiBGYXN0IExhdW5jaCBjb25maWd1cmF0aW9uIHRvIHVzZSBmb3IgdGhlIFdpbmRvd3MgQU1JXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRmFzdExhdW5jaENvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogV2hldGhlciB0byBlbmFibGUgZmFzdCBsYXVuY2ggZm9yIHRoZSBBTUlcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF1bmNoIHRlbXBsYXRlIHRoYXQgdGhlIGZhc3QtbGF1bmNoIGVuYWJsZWQgV2luZG93cyBBTUkgdXNlcyB3aGVuIGl0IGxhdW5jaGVzIFdpbmRvd3MgaW5zdGFuY2VzIHRvIGNyZWF0ZVxuICAgKiBwcmUtcHJvdmlzaW9uZWQgc25hcHNob3RzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxhdW5jaFRlbXBsYXRlPzogZWMyLklMYXVuY2hUZW1wbGF0ZTtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGluc3RhbmNlcyB0aGF0IGFyZSBsYXVuY2hlZCBmb3IgY3JlYXRpbmcgcmVzb3VyY2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgbWF4aW11bSBvZiA2IGluc3RhbmNlcyBhcmUgbGF1bmNoZWQgaW4gcGFyYWxsZWxcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0VuYWJsZUZhc3RMYXVuY2guaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UGFyYWxsZWxMYXVuY2hlcz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBwcmUtcHJvdmlzaW9uZWQgc25hcHNob3RzIHRvIGtlZXAgb24gaGFuZCBmb3IgYSBmYXN0LWxhdW5jaCBlbmFibGVkIFdpbmRvd3MgQU1JXG4gICAqXG4gICAqIEBkZWZhdWx0IDEwIHNuYXBzaG90cyBhcmUga2VwdCBwcmUtcHJvdmlzaW9uZWRcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0VuYWJsZUZhc3RMYXVuY2guaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0U25hcHNob3RDb3VudD86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBUaGUgcmVnaW9uYWwgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHRvIHVzZSBmb3IgYW4gQU1JIGJ1aWxkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW1pRGlzdHJpYnV0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgcmVnaW9uIHRvIGRpc3RyaWJ1dGUgQU1JcyB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgY3VycmVudCByZWdpb24gaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgZGlzdHJpYnV0ZWQgQU1Jc1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBhbWlUYWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBBTUlcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1pRGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBLTVMga2V5IHRvIGVuY3J5cHQgdGhlIGRpc3RyaWJ1dGVkIEFNSSB3aXRoXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFtaUttc0tleT86IGttcy5JS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgbGF1bmNoIHBlcm1pc3Npb25zIGZvciB0aGUgQU1JLCBkZWZpbmluZyB3aGljaCBwcmluY2lwYWxzIGFyZSBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgQU1JXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFtaUxhdW5jaFBlcm1pc3Npb24/OiBBbWlMYXVuY2hQZXJtaXNzaW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSB0byB1c2UgZm9yIHRoZSBkaXN0cmlidXRlZCBBTUlzXG4gICAqXG4gICAqIEBkZWZhdWx0IEEgbmFtZSBpcyBnZW5lcmF0ZWQgZnJvbSB0aGUgaW1hZ2UgcmVjaXBlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGFtaU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhY2NvdW50IElEcyB0byBjb3B5IHRoZSBvdXRwdXQgQU1JIHRvXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFtaVRhcmdldEFjY291bnRJZHM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIFNTTSBwYXJhbWV0ZXJzIHRvIGNyZWF0ZSBvciB1cGRhdGUgZm9yIHRoZSBkaXN0cmlidXRlZCBBTUlzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHNzbVBhcmFtZXRlcnM/OiBTU01QYXJhbWV0ZXJDb25maWd1cmF0aW9uc1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgbGF1bmNoIHRlbXBsYXRlcyB0byBhcHBseSB0aGUgZGlzdHJpYnV0ZWQgQU1JIHRvXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGxhdW5jaFRlbXBsYXRlcz86IExhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgZmFzdCBsYXVuY2ggY29uZmlndXJhdGlvbnMgdG8gdXNlIGZvciBlbmFibGluZyBFQzIgRmFzdCBMYXVuY2ggb24gdGhlIGRpc3RyaWJ1dGVkIFdpbmRvd3MgQU1JXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0VuYWJsZUZhc3RMYXVuY2guaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgZmFzdExhdW5jaENvbmZpZ3VyYXRpb25zPzogRmFzdExhdW5jaENvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIExpY2Vuc2UgTWFuYWdlciBsaWNlbnNlIGNvbmZpZ3VyYXRpb24gQVJOcyB0byBhcHBseSB0byB0aGUgZGlzdHJpYnV0ZWQgQU1Jc1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBsaWNlbnNlQ29uZmlndXJhdGlvbkFybnM/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUaGUgcmVnaW9uYWwgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHRvIHVzZSBmb3IgYSBjb250YWluZXIgYnVpbGRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb250YWluZXJEaXN0cmlidXRpb24ge1xuICAvKipcbiAgICogVGhlIHRhcmdldCByZWdpb24gdG8gZGlzdHJpYnV0ZSBjb250YWluZXJzIHRvXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSBjdXJyZW50IHJlZ2lvbiBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSByZWdpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXN0aW5hdGlvbiByZXBvc2l0b3J5IHRvIGRpc3RyaWJ1dGUgdGhlIG91dHB1dCBjb250YWluZXIgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIHRhcmdldCByZXBvc2l0b3J5IGluIHRoZSBjb250YWluZXIgcmVjaXBlIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclJlcG9zaXRvcnk6IFJlcG9zaXRvcnk7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgY29udGFpbmVyIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWRkaXRpb25hbCB0YWdzIHRvIGFwcGx5IHRvIHRoZSBkaXN0cmlidXRlZCBjb250YWluZXIgaW1hZ2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lclRhZ3M/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIERpc3RyaWJ1dGlvbiBDb25maWd1cmF0aW9uIHJlc291cmNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBsaXN0IG9mIHRhcmdldCByZWdpb25zIGFuZCBhc3NvY2lhdGVkIEFNSSBkaXN0cmlidXRpb24gc2V0dGluZ3Mgd2hlcmUgdGhlIGJ1aWx0IEFNSSB3aWxsIGJlIGRpc3RyaWJ1dGVkLiBBTUlcbiAgICogZGlzdHJpYnV0aW9ucyBtYXkgYWxzbyBiZSBhZGRlZCB3aXRoIHRoZSBgYWRkQW1pRGlzdHJpYnV0aW9uc2AgbWV0aG9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lIGlmIGNvbnRhaW5lciBkaXN0cmlidXRpb25zIGFyZSBwcm92aWRlZC4gT3RoZXJ3aXNlLCBhdCBsZWFzdCBvbmUgQU1JIG9yIGNvbnRhaW5lciBkaXN0cmlidXRpb24gbXVzdFxuICAgKiAgICAgICAgICBiZSBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgYW1pRGlzdHJpYnV0aW9ucz86IEFtaURpc3RyaWJ1dGlvbltdO1xuXG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB0YXJnZXQgcmVnaW9ucyBhbmQgYXNzb2NpYXRlZCBjb250YWluZXIgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHdoZXJlIHRoZSBidWlsdCBjb250YWluZXIgd2lsbCBiZVxuICAgKiBkaXN0cmlidXRlZC4gQ29udGFpbmVyIGRpc3RyaWJ1dGlvbnMgbWF5IGFsc28gYmUgYWRkZWQgd2l0aCB0aGUgYGFkZENvbnRhaW5lckRpc3RyaWJ1dGlvbnNgIG1ldGhvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZSBpZiBBTUkgZGlzdHJpYnV0aW9ucyBhcmUgcHJvdmlkZWQuIE90aGVyd2lzZSwgYXQgbGVhc3Qgb25lIEFNSSBvciBjb250YWluZXIgZGlzdHJpYnV0aW9uIG11c3QgYmVcbiAgICogICAgICAgICAgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lckRpc3RyaWJ1dGlvbnM/OiBDb250YWluZXJEaXN0cmlidXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBIG5hbWUgaXMgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGRlc2NyaXB0aW9uIG9mIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0YWdzIHRvIGFwcGx5IHRvIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSB0YWdzPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBBIG5ldyBvciBpbXBvcnRlZCBEaXN0cmlidXRpb24gQ29uZmlndXJhdGlvblxuICovXG5hYnN0cmFjdCBjbGFzcyBEaXN0cmlidXRpb25Db25maWd1cmF0aW9uQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKiBAcGFyYW0gYWN0aW9ucyBUaGUgbGlzdCBvZiBhY3Rpb25zXG4gICAqL1xuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbdGhpcy5kaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuXSxcbiAgICAgIHNjb3BlOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IHJlYWQgcGVybWlzc2lvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKiBbZGlzYWJsZS1hd3NsaW50Om5vLWdyYW50c11cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbFxuICAgKi9cbiAgcHVibGljIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZ3JhbnQoZ3JhbnRlZSwgJ2ltYWdlYnVpbGRlcjpHZXREaXN0cmlidXRpb25Db25maWd1cmF0aW9uJyk7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgc2VydmljZSBpbiB3aGljaCBhIGNvbnRhaW5lciBzaG91bGQgYmUgcmVnaXN0ZXJlZFxuICovXG5leHBvcnQgZW51bSBSZXBvc2l0b3J5U2VydmljZSB7XG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgdGhlIGNvbnRhaW5lciBzaG91bGQgYmUgcmVnaXN0ZXJlZCBpbiBFQ1JcbiAgICovXG4gIEVDUiA9ICdFQ1InLFxufVxuXG4vKipcbiAqIEEgY29udGFpbmVyIHJlcG9zaXRvcnkgdXNlZCB0byBkaXN0cmlidXRlIGNvbnRhaW5lciBpbWFnZXMgaW4gRUMyIEltYWdlIEJ1aWxkZXJcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJlcG9zaXRvcnkge1xuICAvKipcbiAgICogVGhlIEVDUiByZXBvc2l0b3J5IHRvIHVzZSBhcyB0aGUgdGFyZ2V0IGNvbnRhaW5lciByZXBvc2l0b3J5XG4gICAqXG4gICAqIEBwYXJhbSByZXBvc2l0b3J5IFRoZSBFQ1IgcmVwb3NpdG9yeSB0byB1c2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUVjcihyZXBvc2l0b3J5OiBlY3IuSVJlcG9zaXRvcnkpOiBSZXBvc2l0b3J5IHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBSZXBvc2l0b3J5IHtcbiAgICAgIHB1YmxpYyByZWFkb25seSByZXBvc2l0b3J5TmFtZTogc3RyaW5nID0gcmVwb3NpdG9yeS5yZXBvc2l0b3J5TmFtZTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzZXJ2aWNlOiBSZXBvc2l0b3J5U2VydmljZSA9IFJlcG9zaXRvcnlTZXJ2aWNlLkVDUjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBjb250YWluZXIgcmVwb3NpdG9yeSB3aGVyZSB0aGUgb3V0cHV0IGNvbnRhaW5lciBpbWFnZSBpcyBzdG9yZWRcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IHJlcG9zaXRvcnlOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzZXJ2aWNlIGluIHdoaWNoIHRoZSBjb250YWluZXIgcmVwb3NpdG9yeSBpcyBob3N0ZWRcbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IHNlcnZpY2U6IFJlcG9zaXRvcnlTZXJ2aWNlO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gRUMyIEltYWdlIEJ1aWxkZXIgRGlzdHJpYnV0aW9uIENvbmZpZ3VyYXRpb24uXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vaW1hZ2VidWlsZGVyL2xhdGVzdC91c2VyZ3VpZGUvbWFuYWdlLWRpc3RyaWJ1dGlvbi1zZXR0aW5ncy5odG1sXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIGV4dGVuZHMgRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkJhc2Uge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1pbWFnZWJ1aWxkZXItYWxwaGEuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbic7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBnaXZlbiBpdHMgQVJOLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybjogc3RyaW5nLFxuICApOiBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWUgPSBjZGsuU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKFxuICAgICAgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybixcbiAgICAgIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApLnJlc291cmNlTmFtZSE7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBEaXN0cmlidXRpb25Db25maWd1cmF0aW9uQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybiA9IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWUgPSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiBnaXZlbiBpdHMgbmFtZS4gVGhlIHByb3ZpZGVkIG5hbWUgbXVzdCBiZSBub3JtYWxpemVkIGJ5IGNvbnZlcnRpbmdcbiAgICogYWxsIGFscGhhYmV0aWNhbCBjaGFyYWN0ZXJzIHRvIGxvd2VyY2FzZSwgYW5kIHJlcGxhY2luZyBhbGwgc3BhY2VzIGFuZCB1bmRlcnNjb3JlcyB3aXRoIGh5cGhlbnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21EaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWU6IHN0cmluZyxcbiAgKTogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB0aGlzLmZyb21EaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuKFxuICAgICAgc2NvcGUsXG4gICAgICBpZCxcbiAgICAgIGNkay5TdGFjay5vZihzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICAgIHJlc291cmNlOiAnZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24nLFxuICAgICAgICByZXNvdXJjZU5hbWU6IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lLFxuICAgICAgfSksXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXNEaXN0cmlidXRpb25Db25maWd1cmF0aW9uKHg6IGFueSk6IHggaXMgRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB7XG4gICAgcmV0dXJuIHggIT09IG51bGwgJiYgdHlwZW9mIHggPT09ICdvYmplY3QnICYmIERJU1RSSUJVVElPTl9DT05GSUdVUkFUSU9OX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZTogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYW1pRGlzdHJpYnV0aW9uc0J5UmVnaW9uOiB7IFtyZWdpb246IHN0cmluZ106IEFtaURpc3RyaWJ1dGlvbiB9ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyRGlzdHJpYnV0aW9uc0J5UmVnaW9uOiB7XG4gICAgW3JlZ2lvbjogc3RyaW5nXTogQ29udGFpbmVyRGlzdHJpYnV0aW9uO1xuICB9ID0ge307XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEaXN0cmlidXRpb25Db25maWd1cmF0aW9uUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOlxuICAgICAgICBwcm9wcy5kaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgRElTVFJJQlVUSU9OX0NPTkZJR1VSQVRJT05fU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lKCk7XG5cbiAgICB0aGlzLmFkZEFtaURpc3RyaWJ1dGlvbnMoLi4uKHByb3BzLmFtaURpc3RyaWJ1dGlvbnMgPz8gW10pKTtcbiAgICB0aGlzLmFkZENvbnRhaW5lckRpc3RyaWJ1dGlvbnMoLi4uKHByb3BzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnMgPz8gW10pKTtcblxuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gPSBuZXcgQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGRpc3RyaWJ1dGlvbnM6IGNkay5MYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVyRGlzdHJpYnV0aW9ucygpIH0pLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcblxuICAgIHRoaXMuZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShkaXN0cmlidXRpb25Db25maWd1cmF0aW9uLmF0dHJOYW1lKTtcbiAgICB0aGlzLmRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4gPSB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2Rpc3RyaWJ1dGlvbi1jb25maWd1cmF0aW9uJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBBTUkgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHRvIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gYW1pRGlzdHJpYnV0aW9ucyBUaGUgbGlzdCBvZiBBTUkgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHRvIGFwcGx5XG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkQW1pRGlzdHJpYnV0aW9ucyguLi5hbWlEaXN0cmlidXRpb25zOiBBbWlEaXN0cmlidXRpb25bXSk6IHZvaWQge1xuICAgIGFtaURpc3RyaWJ1dGlvbnMuZm9yRWFjaCgoYW1pRGlzdHJpYnV0aW9uKSA9PiB7XG4gICAgICBjb25zdCByZWdpb24gPSBhbWlEaXN0cmlidXRpb24ucmVnaW9uID8/IGNkay5TdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgICBpZiAodGhpcy5hbWlEaXN0cmlidXRpb25zQnlSZWdpb25bcmVnaW9uXSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBgZHVwbGljYXRlIEFNSSBkaXN0cmlidXRpb24gZm91bmQgZm9yIHJlZ2lvbiBcIiR7cmVnaW9ufVwiOyBvbmx5IG9uZSBBTUkgZGlzdHJpYnV0aW9uIHBlciByZWdpb24gaXMgYWxsb3dlZGAsXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hbWlEaXN0cmlidXRpb25zQnlSZWdpb25bcmVnaW9uXSA9IGFtaURpc3RyaWJ1dGlvbjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGNvbnRhaW5lciBkaXN0cmlidXRpb24gc2V0dGluZ3MgdG8gdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJEaXN0cmlidXRpb25zIFRoZSBsaXN0IG9mIGNvbnRhaW5lciBkaXN0cmlidXRpb24gc2V0dGluZ3MgdG8gYXBwbHlcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRDb250YWluZXJEaXN0cmlidXRpb25zKC4uLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnM6IENvbnRhaW5lckRpc3RyaWJ1dGlvbltdKTogdm9pZCB7XG4gICAgY29udGFpbmVyRGlzdHJpYnV0aW9ucy5mb3JFYWNoKChjb250YWluZXJEaXN0cmlidXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHJlZ2lvbiA9IGNvbnRhaW5lckRpc3RyaWJ1dGlvbi5yZWdpb24gPz8gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbltyZWdpb25dKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgIGBkdXBsaWNhdGUgQ29udGFpbmVyIGRpc3RyaWJ1dGlvbiBmb3VuZCBmb3IgcmVnaW9uIFwiJHtyZWdpb259XCI7IG9ubHkgb25lIENvbnRhaW5lciBkaXN0cmlidXRpb24gcGVyIHJlZ2lvbiBpcyBhbGxvd2VkYCxcbiAgICAgICAgICB0aGlzLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbltyZWdpb25dID0gY29udGFpbmVyRGlzdHJpYnV0aW9uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lKCkge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMucGh5c2ljYWxOYW1lKSkge1xuICAgICAgcmV0dXJuOyAvLyBDYW5ub3QgdmFsaWRhdGUgdW5yZXNvbHZlZCB0b2tlbnMsIGdpdmVuIHRoZWlyIGFjdHVhbCB2YWx1ZSBpcyByZW5kZXJlZCBhdCBkZXBsb3ltZW50IHRpbWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnICcpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIG11c3QgYmUgbG93ZXJjYXNlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIEFNSSBhbmQgY29udGFpbmVyIGRpc3RyaWJ1dGlvbnMgcHJvdmlkZWQgYXMgaW5wdXQgdG8gdGhlIGNvbnN0cnVjdCwgaW50byB0aGUgYERpc3RyaWJ1dGlvbltdYCBzdHJ1Y3R1cmVcbiAgICogdGhhdCBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uIGV4cGVjdHMgdG8gcmVjZWl2ZS4gRGlzdHJpYnV0aW9ucyBwcm92aWRlZCB0byBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uIG11c3RcbiAgICogbWFwIHRvIGEgdW5pcXVlIHJlZ2lvbiBwZXIgZW50cnkgaW4gdGhlIGxpc3QgLSB0aGlzIHJlbmRlciBmdW5jdGlvbiBhbHNvIGhhbmRsZXMgY29tYmluaW5nIEFNSSBhbmQgY29udGFpbmVyXG4gICAqIGRpc3RyaWJ1dGlvbnMgaW4gdGhlIHNhbWUgcmVnaW9uIGludG8gYSBzaW5nbGUgZW50cnkuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVuZGVyZWQgYXQgc3ludGhlc2lzIHRpbWUsIGFzIHVzZXJzIGNhbiBhZGQgYWRkaXRpb25hbCBBTUkgYW5kIGNvbnRhaW5lciBkaXN0cmlidXRpb25zIHdpdGhcbiAgICogYGFkZEFtaURpc3RyaWJ1dGlvbnNgIGFuZCBgYWRkQ29udGFpbmVyRGlzdHJpYnV0aW9uc2AsIGFmdGVyIHRoZSBjb25zdHJ1Y3QgaGFzIGJlZW4gaW5zdGFudGlhdGVkLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJEaXN0cmlidXRpb25zKCk6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uRGlzdHJpYnV0aW9uUHJvcGVydHlbXSB7XG4gICAgaWYgKFxuICAgICAgIU9iamVjdC5rZXlzKHRoaXMuYW1pRGlzdHJpYnV0aW9uc0J5UmVnaW9uKS5sZW5ndGggJiZcbiAgICAgICFPYmplY3Qua2V5cyh0aGlzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbikubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignWW91IG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgQU1JIG9yIGNvbnRhaW5lciBkaXN0cmlidXRpb24nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXN0cmlidXRpb25CeVJlZ2lvbjogeyBbcmVnaW9uOiBzdHJpbmddOiBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uLkRpc3RyaWJ1dGlvblByb3BlcnR5IH0gPSB7fTtcblxuICAgIGZvciAoY29uc3QgW3JlZ2lvbiwgZGlzdHJpYnV0aW9uXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmFtaURpc3RyaWJ1dGlvbnNCeVJlZ2lvbikpIHtcbiAgICAgIGRpc3RyaWJ1dGlvbkJ5UmVnaW9uW3JlZ2lvbl0gPSB7XG4gICAgICAgIHJlZ2lvbixcbiAgICAgICAgYW1pRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZEFtaURpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24pLFxuICAgICAgICBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbnM6IHRoaXMuYnVpbGRGYXN0TGF1bmNoQ29uZmlndXJhdGlvbnMoZGlzdHJpYnV0aW9uKSxcbiAgICAgICAgbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uczogdGhpcy5idWlsZExhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbnMoZGlzdHJpYnV0aW9uKSxcbiAgICAgICAgc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnM6IHRoaXMuYnVpbGRTc21QYXJhbWV0ZXJDb25maWd1cmF0aW9ucyhkaXN0cmlidXRpb24pLFxuICAgICAgICBsaWNlbnNlQ29uZmlndXJhdGlvbkFybnM6IHRoaXMuYnVpbGRMaWNlbnNlQ29uZmlndXJhdGlvbkFybnMoZGlzdHJpYnV0aW9uKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbcmVnaW9uLCBjb250YWluZXJEaXN0cmlidXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuY29udGFpbmVyRGlzdHJpYnV0aW9uc0J5UmVnaW9uKSkge1xuICAgICAgZGlzdHJpYnV0aW9uQnlSZWdpb25bcmVnaW9uXSA9IHtcbiAgICAgICAgLi4uKGRpc3RyaWJ1dGlvbkJ5UmVnaW9uW3JlZ2lvbl0gPz8ge30pLFxuICAgICAgICByZWdpb24sXG4gICAgICAgIGNvbnRhaW5lckRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRDb250YWluZXJEaXN0cmlidXRpb24oY29udGFpbmVyRGlzdHJpYnV0aW9uKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9ucyA9IE9iamVjdC52YWx1ZXMoZGlzdHJpYnV0aW9uQnlSZWdpb24pO1xuXG4gICAgZGlzdHJpYnV0aW9ucy5mb3JFYWNoKChkaXN0cmlidXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHsgcmVnaW9uOiBfLCAuLi5kaXN0cmlidXRpb25XaXRob3V0UmVnaW9uIH0gPSBkaXN0cmlidXRpb247XG4gICAgICBpZiAoIU9iamVjdC5lbnRyaWVzKGRpc3RyaWJ1dGlvbldpdGhvdXRSZWdpb24pLnNvbWUoKFtfXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBgYXQgbGVhc3Qgb25lIGRpc3RyaWJ1dGlvbiBwcm9wZXJ0eSBtdXN0IGJlIHNldCBmb3IgcmVnaW9uIFwiJHtkaXN0cmlidXRpb24ucmVnaW9ufVwiYCxcbiAgICAgICAgICB0aGlzLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRpc3RyaWJ1dGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQW1pRGlzdHJpYnV0aW9uKGFtaURpc3RyaWJ1dGlvbjogQW1pRGlzdHJpYnV0aW9uKTogb2JqZWN0IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsYXVuY2hQZXJtaXNzaW9ucyA9IHRoaXMuYnVpbGRBbWlMYXVuY2hQZXJtaXNzaW9ucyhhbWlEaXN0cmlidXRpb24pO1xuICAgIGNvbnN0IGFtaURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi4oT2JqZWN0LmtleXMoYW1pRGlzdHJpYnV0aW9uLmFtaVRhZ3MgPz8ge30pLmxlbmd0aCAmJiB7IEFtaVRhZ3M6IGFtaURpc3RyaWJ1dGlvbi5hbWlUYWdzIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlEZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIHsgRGVzY3JpcHRpb246IGFtaURpc3RyaWJ1dGlvbi5hbWlEZXNjcmlwdGlvbiB9KSxcbiAgICAgIC4uLihhbWlEaXN0cmlidXRpb24uYW1pS21zS2V5ICE9PSB1bmRlZmluZWQgJiYgeyBLbXNLZXlJZDogYW1pRGlzdHJpYnV0aW9uLmFtaUttc0tleS5rZXlBcm4gfSksXG4gICAgICAuLi4obGF1bmNoUGVybWlzc2lvbnMgJiYgeyBMYXVuY2hQZXJtaXNzaW9uQ29uZmlndXJhdGlvbjogbGF1bmNoUGVybWlzc2lvbnMgfSksXG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaU5hbWUgIT09IHVuZGVmaW5lZCAmJiB7IE5hbWU6IGFtaURpc3RyaWJ1dGlvbi5hbWlOYW1lIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlUYXJnZXRBY2NvdW50SWRzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBUYXJnZXRBY2NvdW50SWRzOiBhbWlEaXN0cmlidXRpb24uYW1pVGFyZ2V0QWNjb3VudElkcyxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYW1pRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbikubGVuZ3RoID8gYW1pRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb250YWluZXJEaXN0cmlidXRpb24oY29udGFpbmVyRGlzdHJpYnV0aW9uOiBDb250YWluZXJEaXN0cmlidXRpb24pOiBvYmplY3QgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB7XG4gICAgICBDb250YWluZXJUYWdzOiBjb250YWluZXJEaXN0cmlidXRpb24uY29udGFpbmVyVGFncyxcbiAgICAgIERlc2NyaXB0aW9uOiBjb250YWluZXJEaXN0cmlidXRpb24uY29udGFpbmVyRGVzY3JpcHRpb24sXG4gICAgICBUYXJnZXRSZXBvc2l0b3J5OiB7XG4gICAgICAgIFJlcG9zaXRvcnlOYW1lOiBjb250YWluZXJEaXN0cmlidXRpb24uY29udGFpbmVyUmVwb3NpdG9yeS5yZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgU2VydmljZTogY29udGFpbmVyRGlzdHJpYnV0aW9uLmNvbnRhaW5lclJlcG9zaXRvcnkuc2VydmljZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRBbWlMYXVuY2hQZXJtaXNzaW9ucyhhbWlEaXN0cmlidXRpb246IEFtaURpc3RyaWJ1dGlvbik6IG9iamVjdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5pc1B1YmxpY1VzZXJHcm91cCkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoXG4gICAgICAgICdBTUkgaXMgY29uZmlndXJlZCBmb3IgcHVibGljIGFjY2VzcywgbWFraW5nIGl0IGF2YWlsYWJsZSB0byBhbnkgQVdTIGFjY291bnQgZ2xvYmFsbHkuICcgK1xuICAgICAgICAgICdFbnN1cmUgbm8gc2Vuc2l0aXZlIGRhdGEsIGNyZWRlbnRpYWxzLCBvciBwcm9wcmlldGFyeSBjb25maWd1cmF0aW9ucyBhcmUgaW5jbHVkZWQuICcgK1xuICAgICAgICAgIFwiUmV2aWV3IHlvdXIgb3JnYW5pemF0aW9uJ3Mgc2VjdXJpdHkgcG9saWNpZXMgYmVmb3JlIGRlcGxveWluZyBwdWJsaWMgQU1Jcy5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbGF1bmNoUGVybWlzc2lvbnMgPSB7XG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaUxhdW5jaFBlcm1pc3Npb24/Lm9yZ2FuaXphdGlvbmFsVW5pdEFybnMgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIE9yZ2FuaXphdGlvbmFsVW5pdEFybnM6IGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5vcmdhbml6YXRpb25hbFVuaXRBcm5zLFxuICAgICAgfSksXG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaUxhdW5jaFBlcm1pc3Npb24/Lm9yZ2FuaXphdGlvbkFybnMgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIE9yZ2FuaXphdGlvbkFybnM6IGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5vcmdhbml6YXRpb25Bcm5zLFxuICAgICAgfSksXG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaUxhdW5jaFBlcm1pc3Npb24/LmlzUHVibGljVXNlckdyb3VwICYmIHtcbiAgICAgICAgVXNlckdyb3VwczogWydhbGwnXSxcbiAgICAgIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5hY2NvdW50SWRzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBVc2VySWRzOiBhbWlEaXN0cmlidXRpb24uYW1pTGF1bmNoUGVybWlzc2lvbj8uYWNjb3VudElkcyxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobGF1bmNoUGVybWlzc2lvbnMpLmxlbmd0aCA/IGxhdW5jaFBlcm1pc3Npb25zIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZhc3RMYXVuY2hDb25maWd1cmF0aW9ucyhcbiAgICBhbWlEaXN0cmlidXRpb246IEFtaURpc3RyaWJ1dGlvbixcbiAgKTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5GYXN0TGF1bmNoQ29uZmlndXJhdGlvblByb3BlcnR5W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZhc3RMYXVuY2hDb25maWd1cmF0aW9ucyA9IGFtaURpc3RyaWJ1dGlvbi5mYXN0TGF1bmNoQ29uZmlndXJhdGlvbnM/Lm1hcChcbiAgICAgIChmYXN0TGF1bmNoQ29uZmlndXJhdGlvbik6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uRmFzdExhdW5jaENvbmZpZ3VyYXRpb25Qcm9wZXJ0eSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5tYXhQYXJhbGxlbExhdW5jaGVzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5tYXhQYXJhbGxlbExhdW5jaGVzKSAmJlxuICAgICAgICAgIGZhc3RMYXVuY2hDb25maWd1cmF0aW9uLm1heFBhcmFsbGVsTGF1bmNoZXMgPCBNSU5fUEFSQUxMRUxfTEFVTkNIRVNcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBgeW91IG11c3Qgc3BlY2lmeSBhIG1heGltdW0gcGFyYWxsZWwgbGF1bmNoIGNvdW50IG9mIGF0IGxlYXN0ICR7TUlOX1BBUkFMTEVMX0xBVU5DSEVTfWAsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXVuY2hUZW1wbGF0ZSA9IGZhc3RMYXVuY2hDb25maWd1cmF0aW9uLmxhdW5jaFRlbXBsYXRlO1xuICAgICAgICBjb25zdCB1c2VGYXN0TGF1bmNoTGF1bmNoVGVtcGxhdGVJZCA9IGxhdW5jaFRlbXBsYXRlPy5sYXVuY2hUZW1wbGF0ZUlkICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5GYXN0TGF1bmNoTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uUHJvcGVydHkgPSB7XG4gICAgICAgICAgLi4uKHVzZUZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZUlkICYmIHtcbiAgICAgICAgICAgIGxhdW5jaFRlbXBsYXRlSWQ6IGxhdW5jaFRlbXBsYXRlPy5sYXVuY2hUZW1wbGF0ZUlkLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLighdXNlRmFzdExhdW5jaExhdW5jaFRlbXBsYXRlSWQgJiYge1xuICAgICAgICAgICAgbGF1bmNoVGVtcGxhdGVOYW1lOiBsYXVuY2hUZW1wbGF0ZT8ubGF1bmNoVGVtcGxhdGVOYW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihsYXVuY2hUZW1wbGF0ZT8udmVyc2lvbk51bWJlciAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgIGxhdW5jaFRlbXBsYXRlVmVyc2lvbjogbGF1bmNoVGVtcGxhdGU/LnZlcnNpb25OdW1iZXIsXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbmFibGVkOiBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5lbmFibGVkLFxuICAgICAgICAgIG1heFBhcmFsbGVsTGF1bmNoZXM6IGZhc3RMYXVuY2hDb25maWd1cmF0aW9uLm1heFBhcmFsbGVsTGF1bmNoZXMsXG4gICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZSkubGVuZ3RoICYmIHsgbGF1bmNoVGVtcGxhdGU6IGZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZSB9KSxcbiAgICAgICAgICAuLi4oZmFzdExhdW5jaENvbmZpZ3VyYXRpb24udGFyZ2V0U25hcHNob3RDb3VudCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgIHNuYXBzaG90Q29uZmlndXJhdGlvbjogeyB0YXJnZXRSZXNvdXJjZUNvdW50OiBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi50YXJnZXRTbmFwc2hvdENvdW50IH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gZmFzdExhdW5jaENvbmZpZ3VyYXRpb25zPy5sZW5ndGggPyBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbnMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9ucyhcbiAgICBhbWlEaXN0cmlidXRpb246IEFtaURpc3RyaWJ1dGlvbixcbiAgKTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5MYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb25zID0gYW1pRGlzdHJpYnV0aW9uLmxhdW5jaFRlbXBsYXRlcz8ubWFwKFxuICAgICAgKGxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbik6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uTGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uUHJvcGVydHkgPT4ge1xuICAgICAgICBpZiAoIWxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbi5sYXVuY2hUZW1wbGF0ZS5sYXVuY2hUZW1wbGF0ZUlkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICAnWW91IG11c3QgcmVmZXJlbmNlIGxhdW5jaCB0ZW1wbGF0ZXMgYnkgSUQgaW4gbGF1bmNoIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb25zJyxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWNjb3VudElkOiBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb24uYWNjb3VudElkLFxuICAgICAgICAgIGxhdW5jaFRlbXBsYXRlSWQ6IGxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbi5sYXVuY2hUZW1wbGF0ZS5sYXVuY2hUZW1wbGF0ZUlkLFxuICAgICAgICAgIHNldERlZmF1bHRWZXJzaW9uOiBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb24uc2V0RGVmYXVsdFZlcnNpb24sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9ucz8ubGVuZ3RoID8gbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9ucyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMaWNlbnNlQ29uZmlndXJhdGlvbkFybnMoYW1pRGlzdHJpYnV0aW9uOiBBbWlEaXN0cmlidXRpb24pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGFtaURpc3RyaWJ1dGlvbi5saWNlbnNlQ29uZmlndXJhdGlvbkFybnM/Lmxlbmd0aCA/IGFtaURpc3RyaWJ1dGlvbi5saWNlbnNlQ29uZmlndXJhdGlvbkFybnMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnMoXG4gICAgYW1pRGlzdHJpYnV0aW9uOiBBbWlEaXN0cmlidXRpb24sXG4gICk6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uU3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvblByb3BlcnR5W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNzbVBhcmFtZXRlckNvbmZpZ3VyYXRpb25zID0gYW1pRGlzdHJpYnV0aW9uLnNzbVBhcmFtZXRlcnM/Lm1hcChcbiAgICAgIChzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5Tc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uUHJvcGVydHkgPT4gKHtcbiAgICAgICAgYW1pQWNjb3VudElkOiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uLmFtaUFjY291bnQsXG4gICAgICAgIGRhdGFUeXBlOiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uLmRhdGFUeXBlLFxuICAgICAgICBwYXJhbWV0ZXJOYW1lOiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uLnBhcmFtZXRlci5wYXJhbWV0ZXJOYW1lLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHJldHVybiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9ucz8ubGVuZ3RoID8gc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnMgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
|
430
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJkaXN0cmlidXRpb24tY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFHbkMsMkNBQTJDO0FBQzNDLG1FQUE0RTtBQUc1RSw0RUFBdUU7QUFDdkUsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUcxRSxNQUFNLGlDQUFpQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsMkRBQTJELENBQUMsQ0FBQztBQUVsSCxxREFBcUQ7QUFDckQsTUFBTSxxQkFBcUIsR0FBRyxDQUFDLENBQUM7QUEwVWhDOztHQUVHO0FBQ0gsTUFBZSw2QkFBOEIsU0FBUSxHQUFHLENBQUMsUUFBUTtJQVcvRDs7Ozs7O09BTUc7SUFDSSxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQLE9BQU87WUFDUCxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsNEJBQTRCLENBQUM7WUFDakQsS0FBSyxFQUFFLElBQUk7U0FDWixDQUFDLENBQUM7S0FDSjtJQUVEOzs7OztPQUtHO0lBQ0ksU0FBUyxDQUFDLE9BQXVCO1FBQ3RDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsMkNBQTJDLENBQUMsQ0FBQztLQUN6RTtDQUNGO0FBRUQ7O0dBRUc7QUFDSCxJQUFZLGlCQUtYO0FBTEQsV0FBWSxpQkFBaUI7SUFDM0I7O09BRUc7SUFDSCxnQ0FBVyxDQUFBO0FBQ2IsQ0FBQyxFQUxXLGlCQUFpQixpQ0FBakIsaUJBQWlCLFFBSzVCO0FBRUQ7O0dBRUc7QUFDSCxNQUFzQixVQUFVOztJQUM5Qjs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUEyQjtRQUMv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QUFFLE1BQU0sQ0FBQyxDQUFDLENBQUMsZUFBZSxDQUFDLHdCQUF3QixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDaEg7UUFFTywrQkFBK0IsQ0FDckMsZUFBZ0M7WUFFaEMsTUFBTSwwQkFBMEIsR0FBRyxlQUFlLENBQUMsYUFBYSxFQUFFLEdBQUcsQ0FDbkUsQ0FBQyx5QkFBeUIsRUFBa0UsRUFBRSxDQUFDLENBQUM7Z0JBQzlGLFlBQVksRUFBRSx5QkFBeUIsQ0FBQyxVQUFVO2dCQUNsRCxRQUFRLEVBQUUseUJBQXlCLENBQUMsUUFBUTtnQkFDNUMsYUFBYSxFQUFFLHlCQUF5QixDQUFDLFNBQVMsQ0FBQyxhQUFhO2FBQ2pFLENBQUMsQ0FDSCxDQUFDO1lBRUYsT0FBTywwQkFBMEIsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLDBCQUEwQixDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7U0FDcEY7O1lBcldVLHVEQUF5Qjs7Ozs7QUFBekIsOERBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGVjciBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaW1hZ2VidWlsZGVyJztcbmltcG9ydCAqIGFzIGttcyBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcbmltcG9ydCB7IG1lbW9pemVkR2V0dGVyIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbmNvbnN0IERJU1RSSUJVVElPTl9DT05GSUdVUkFUSU9OX1NZTUJPTCA9IFN5bWJvbC5mb3IoJ0Bhd3MtY2RrL2F3cy1pbWFnZWJ1aWxkZXItYWxwaGEuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbicpO1xuXG4vLyBGYXN0IExhdW5jaCByZXF1aXJlcyBhdCBsZWFzdCA2IHBhcmFsbGVsIGxhdW5jaGVzLlxuY29uc3QgTUlOX1BBUkFMTEVMX0xBVU5DSEVTID0gNjtcblxuLyoqXG4gKiBBbiBFQzIgSW1hZ2UgQnVpbGRlciBEaXN0cmlidXRpb24gQ29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiBleHRlbmRzIGNkay5JUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgY3VzdG9tIGFjdGlvbnMgdG8gdGhlIGdpdmVuIGdyYW50ZWUgZm9yIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsXG4gICAqIEBwYXJhbSBhY3Rpb25zIFRoZSBsaXN0IG9mIGFjdGlvbnNcbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogR3JhbnQgcmVhZCBwZXJtaXNzaW9ucyB0byB0aGUgZ2l2ZW4gZ3JhbnRlZSBmb3IgdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIGdyYW50UmVhZChncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBUaGUgbGF1bmNoIHBlcm1pc3Npb25zIGZvciB0aGUgQU1JLCBkZWZpbmluZyB3aGljaCBwcmluY2lwYWxzIGFyZSBhbGxvd2VkIHRvIGFjY2VzcyB0aGUgQU1JXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQW1pTGF1bmNoUGVybWlzc2lvbiB7XG4gIC8qKlxuICAgKiBUaGUgQVJOcyBmb3IgdGhlIEFXUyBPcmdhbml6YXRpb25zIG9yZ2FuaXphdGlvbmFsIHVuaXRzIHRvIHNoYXJlIHRoZSBBTUkgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBvcmdhbml6YXRpb25hbFVuaXRBcm5zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBBUk5zIGZvciB0aGUgQVdTIE9yZ2FuaXphdGlvbiB0aGF0IHlvdSB3YW50IHRvIHNoYXJlIHRoZSBBTUkgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBvcmdhbml6YXRpb25Bcm5zPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gbWFrZSB0aGUgQU1JIHB1YmxpYy4gQmxvY2sgcHVibGljIGFjY2VzcyBmb3IgQU1JcyBtdXN0IGJlIGRpc2FibGVkIHRvIG1ha2UgdGhlIEFNSSBwdWJsaWMuXG4gICAqXG4gICAqIFdBUk5JTkc6IE1ha2luZyBhbiBBTUkgcHVibGljIGV4cG9zZXMgaXQgdG8gYW55IEFXUyBhY2NvdW50IGdsb2JhbGx5LlxuICAgKiAgRW5zdXJlIHRoZSBBTUkgZG9lcyBub3QgY29udGFpbjpcbiAgICogIC0gU2Vuc2l0aXZlIGRhdGEgb3IgY3JlZGVudGlhbHNcbiAgICogIC0gUHJvcHJpZXRhcnkgc29mdHdhcmUgb3IgY29uZmlndXJhdGlvbnNcbiAgICogIC0gSW50ZXJuYWwgbmV0d29yayBpbmZvcm1hdGlvbiBvciBzZWN1cml0eSBzZXR0aW5nc1xuICAgKlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBibG9ja2luZyBwdWJsaWMgYWNjZXNzIGZvciBBTUlzLCBzZWU6IFtVbmRlcnN0YW5kIGJsb2NrIHB1YmxpYyBhY2Nlc3MgZm9yIEFNSXNdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NFQzIvbGF0ZXN0L1VzZXJHdWlkZS9ibG9jay1wdWJsaWMtYWNjZXNzLXRvLWFtaXMuaHRtbClcbiAgICpcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IGlzUHVibGljVXNlckdyb3VwPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIEFXUyBhY2NvdW50IElEcyB0byBzaGFyZSB0aGUgQU1JIHdpdGhcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudElkcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBTU00gcGFyYW1ldGVycyB0byBjcmVhdGUgb3IgdXBkYXRlIGZvciB0aGUgZGlzdHJpYnV0ZWQgQU1Jc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNTTVBhcmFtZXRlckNvbmZpZ3VyYXRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgYWNjb3VudCBJRCB0aGF0IHdpbGwgb3duIHRoZSBTU00gcGFyYW1ldGVyIGluIHRoZSBnaXZlbiByZWdpb24uIFRoaXMgbXVzdCBiZSBvbmUgb2YgdGhlIHRhcmdldCBhY2NvdW50c1xuICAgKiB0aGF0IHdhcyBpbmNsdWRlZCBpbiB0aGUgbGlzdCBvZiBBTUkgZGlzdHJpYnV0aW9uIHRhcmdldCBhY2NvdW50c1xuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgY3VycmVudCBhY2NvdW50IGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IGFtaUFjY291bnQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkYXRhIHR5cGUgb2YgdGhlIFNTTSBwYXJhbWV0ZXJcbiAgICpcbiAgICogQGRlZmF1bHQgc3NtLlBhcmFtZXRlckRhdGFUeXBlLkFXU19FQzJfSU1BR0VcbiAgICovXG4gIHJlYWRvbmx5IGRhdGFUeXBlPzogc3NtLlBhcmFtZXRlckRhdGFUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgU1NNIHBhcmFtZXRlciB0byBjcmVhdGUgb3IgdXBkYXRlXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXI6IHNzbS5JU3RyaW5nUGFyYW1ldGVyO1xufVxuXG4vKipcbiAqIFRoZSBsYXVuY2ggdGVtcGxhdGUgdG8gYXBwbHkgdGhlIGRpc3RyaWJ1dGVkIEFNSSB0b1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgbGF1bmNoIHRlbXBsYXRlIHRvIGFwcGx5IHRoZSBkaXN0cmlidXRlZCBBTUkgdG8uIEEgbmV3IGxhdW5jaCB0ZW1wbGF0ZSB2ZXJzaW9uIHdpbGwgYmUgY3JlYXRlZCBmb3IgdGhlXG4gICAqIHByb3ZpZGVkIGxhdW5jaCB0ZW1wbGF0ZSB3aXRoIHRoZSBkaXN0cmlidXRlZCBBTUkgYXBwbGllZC5cbiAgICpcbiAgICogKk5vdGU6KiBUaGUgbGF1bmNoIHRlbXBsYXRlIHNob3VsZCBleHBvc2UgYSBgbGF1bmNoVGVtcGxhdGVJZGAuIFRlbXBsYXRlc1xuICAgKiBpbXBvcnRlZCBieSBuYW1lIG9ubHkgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gICAqXG4gICAqL1xuICByZWFkb25seSBsYXVuY2hUZW1wbGF0ZTogZWMyLklMYXVuY2hUZW1wbGF0ZTtcblxuICAvKipcbiAgICogVGhlIEFXUyBhY2NvdW50IElEIHRoYXQgb3ducyB0aGUgbGF1bmNoIHRlbXBsYXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSBjdXJyZW50IGFjY291bnQgaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIHNldCB0aGUgbmV3IGxhdW5jaCB0ZW1wbGF0ZSB2ZXJzaW9uIHRoYXQgaXMgY3JlYXRlZCBhcyB0aGUgZGVmYXVsdCBsYXVuY2ggdGVtcGxhdGUgdmVyc2lvbi4gQWZ0ZXJcbiAgICogY3JlYXRpb24gb2YgdGhlIGxhdW5jaCB0ZW1wbGF0ZSB2ZXJzaW9uIGNvbnRhaW5pbmcgdGhlIGRpc3RyaWJ1dGVkIEFNSSwgaXQgd2lsbCBiZSBhdXRvbWF0aWNhbGx5IHNldCBhcyB0aGVcbiAgICogZGVmYXVsdCB2ZXJzaW9uIGZvciB0aGUgbGF1bmNoIHRlbXBsYXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc2V0RGVmYXVsdFZlcnNpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFRoZSBFQzIgRmFzdCBMYXVuY2ggY29uZmlndXJhdGlvbiB0byB1c2UgZm9yIHRoZSBXaW5kb3dzIEFNSVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEZhc3RMYXVuY2hDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIGZhc3QgbGF1bmNoIGZvciB0aGUgQU1JXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIGxhdW5jaCB0ZW1wbGF0ZSB0aGF0IHRoZSBmYXN0LWxhdW5jaCBlbmFibGVkIFdpbmRvd3MgQU1JIHVzZXMgd2hlbiBpdCBsYXVuY2hlcyBXaW5kb3dzIGluc3RhbmNlcyB0byBjcmVhdGVcbiAgICogcHJlLXByb3Zpc2lvbmVkIHNuYXBzaG90c1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBsYXVuY2hUZW1wbGF0ZT86IGVjMi5JTGF1bmNoVGVtcGxhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiBwYXJhbGxlbCBpbnN0YW5jZXMgdGhhdCBhcmUgbGF1bmNoZWQgZm9yIGNyZWF0aW5nIHJlc291cmNlc1xuICAgKlxuICAgKiBAZGVmYXVsdCBBIG1heGltdW0gb2YgNiBpbnN0YW5jZXMgYXJlIGxhdW5jaGVkIGluIHBhcmFsbGVsXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9FbmFibGVGYXN0TGF1bmNoLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IG1heFBhcmFsbGVsTGF1bmNoZXM/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgcHJlLXByb3Zpc2lvbmVkIHNuYXBzaG90cyB0byBrZWVwIG9uIGhhbmQgZm9yIGEgZmFzdC1sYXVuY2ggZW5hYmxlZCBXaW5kb3dzIEFNSVxuICAgKlxuICAgKiBAZGVmYXVsdCAxMCBzbmFwc2hvdHMgYXJlIGtlcHQgcHJlLXByb3Zpc2lvbmVkXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9FbmFibGVGYXN0TGF1bmNoLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFNuYXBzaG90Q291bnQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHJlZ2lvbmFsIGRpc3RyaWJ1dGlvbiBzZXR0aW5ncyB0byB1c2UgZm9yIGFuIEFNSSBidWlsZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFtaURpc3RyaWJ1dGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IHJlZ2lvbiB0byBkaXN0cmlidXRlIEFNSXMgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgVGhlIGN1cnJlbnQgcmVnaW9uIGlzIHVzZWRcbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHRhZ3MgdG8gYXBwbHkgdG8gdGhlIGRpc3RyaWJ1dGVkIEFNSXNcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgYW1pVGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgQU1JXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGFtaURlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgS01TIGtleSB0byBlbmNyeXB0IHRoZSBkaXN0cmlidXRlZCBBTUkgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBhbWlLbXNLZXk/OiBrbXMuSUtleTtcblxuICAvKipcbiAgICogVGhlIGxhdW5jaCBwZXJtaXNzaW9ucyBmb3IgdGhlIEFNSSwgZGVmaW5pbmcgd2hpY2ggcHJpbmNpcGFscyBhcmUgYWxsb3dlZCB0byBhY2Nlc3MgdGhlIEFNSVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBhbWlMYXVuY2hQZXJtaXNzaW9uPzogQW1pTGF1bmNoUGVybWlzc2lvbjtcblxuICAvKipcbiAgICogVGhlIG5hbWUgdG8gdXNlIGZvciB0aGUgZGlzdHJpYnV0ZWQgQU1Jc1xuICAgKlxuICAgKiBAZGVmYXVsdCBBIG5hbWUgaXMgZ2VuZXJhdGVkIGZyb20gdGhlIGltYWdlIHJlY2lwZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBhbWlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgYWNjb3VudCBJRHMgdG8gY29weSB0aGUgb3V0cHV0IEFNSSB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBhbWlUYXJnZXRBY2NvdW50SWRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBTU00gcGFyYW1ldGVycyB0byBjcmVhdGUgb3IgdXBkYXRlIGZvciB0aGUgZGlzdHJpYnV0ZWQgQU1Jc1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBzc21QYXJhbWV0ZXJzPzogU1NNUGFyYW1ldGVyQ29uZmlndXJhdGlvbnNbXTtcblxuICAvKipcbiAgICogVGhlIGxhdW5jaCB0ZW1wbGF0ZXMgdG8gYXBwbHkgdGhlIGRpc3RyaWJ1dGVkIEFNSSB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBsYXVuY2hUZW1wbGF0ZXM/OiBMYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGZhc3QgbGF1bmNoIGNvbmZpZ3VyYXRpb25zIHRvIHVzZSBmb3IgZW5hYmxpbmcgRUMyIEZhc3QgTGF1bmNoIG9uIHRoZSBkaXN0cmlidXRlZCBXaW5kb3dzIEFNSVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0VDMi9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9FbmFibGVGYXN0TGF1bmNoLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGZhc3RMYXVuY2hDb25maWd1cmF0aW9ucz86IEZhc3RMYXVuY2hDb25maWd1cmF0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBMaWNlbnNlIE1hbmFnZXIgbGljZW5zZSBjb25maWd1cmF0aW9uIEFSTnMgdG8gYXBwbHkgdG8gdGhlIGRpc3RyaWJ1dGVkIEFNSXNcbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgbGljZW5zZUNvbmZpZ3VyYXRpb25Bcm5zPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogVGhlIHJlZ2lvbmFsIGRpc3RyaWJ1dGlvbiBzZXR0aW5ncyB0byB1c2UgZm9yIGEgY29udGFpbmVyIGJ1aWxkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29udGFpbmVyRGlzdHJpYnV0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB0YXJnZXQgcmVnaW9uIHRvIGRpc3RyaWJ1dGUgY29udGFpbmVycyB0b1xuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgY3VycmVudCByZWdpb24gaXMgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzdGluYXRpb24gcmVwb3NpdG9yeSB0byBkaXN0cmlidXRlIHRoZSBvdXRwdXQgY29udGFpbmVyIHRvXG4gICAqXG4gICAqIEBkZWZhdWx0IFRoZSB0YXJnZXQgcmVwb3NpdG9yeSBpbiB0aGUgY29udGFpbmVyIHJlY2lwZSBpcyB1c2VkXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJSZXBvc2l0b3J5OiBSZXBvc2l0b3J5O1xuXG4gIC8qKlxuICAgKiBUaGUgZGVzY3JpcHRpb24gb2YgdGhlIGNvbnRhaW5lciBpbWFnZVxuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEZXNjcmlwdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFkZGl0aW9uYWwgdGFncyB0byBhcHBseSB0byB0aGUgZGlzdHJpYnV0ZWQgY29udGFpbmVyIGltYWdlc1xuICAgKlxuICAgKiBAZGVmYXVsdCBOb25lXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJUYWdzPzogc3RyaW5nW107XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgY3JlYXRpbmcgYSBEaXN0cmlidXRpb24gQ29uZmlndXJhdGlvbiByZXNvdXJjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbGlzdCBvZiB0YXJnZXQgcmVnaW9ucyBhbmQgYXNzb2NpYXRlZCBBTUkgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHdoZXJlIHRoZSBidWlsdCBBTUkgd2lsbCBiZSBkaXN0cmlidXRlZC4gQU1JXG4gICAqIGRpc3RyaWJ1dGlvbnMgbWF5IGFsc28gYmUgYWRkZWQgd2l0aCB0aGUgYGFkZEFtaURpc3RyaWJ1dGlvbnNgIG1ldGhvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZSBpZiBjb250YWluZXIgZGlzdHJpYnV0aW9ucyBhcmUgcHJvdmlkZWQuIE90aGVyd2lzZSwgYXQgbGVhc3Qgb25lIEFNSSBvciBjb250YWluZXIgZGlzdHJpYnV0aW9uIG11c3RcbiAgICogICAgICAgICAgYmUgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IGFtaURpc3RyaWJ1dGlvbnM/OiBBbWlEaXN0cmlidXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIGxpc3Qgb2YgdGFyZ2V0IHJlZ2lvbnMgYW5kIGFzc29jaWF0ZWQgY29udGFpbmVyIGRpc3RyaWJ1dGlvbiBzZXR0aW5ncyB3aGVyZSB0aGUgYnVpbHQgY29udGFpbmVyIHdpbGwgYmVcbiAgICogZGlzdHJpYnV0ZWQuIENvbnRhaW5lciBkaXN0cmlidXRpb25zIG1heSBhbHNvIGJlIGFkZGVkIHdpdGggdGhlIGBhZGRDb250YWluZXJEaXN0cmlidXRpb25zYCBtZXRob2QuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmUgaWYgQU1JIGRpc3RyaWJ1dGlvbnMgYXJlIHByb3ZpZGVkLiBPdGhlcndpc2UsIGF0IGxlYXN0IG9uZSBBTUkgb3IgY29udGFpbmVyIGRpc3RyaWJ1dGlvbiBtdXN0IGJlXG4gICAqICAgICAgICAgIHByb3ZpZGVkXG4gICAqL1xuICByZWFkb25seSBjb250YWluZXJEaXN0cmlidXRpb25zPzogQ29udGFpbmVyRGlzdHJpYnV0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgQSBuYW1lIGlzIGdlbmVyYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdGFncyB0byBhcHBseSB0byB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgdGFncz86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogQSBuZXcgb3IgaW1wb3J0ZWQgRGlzdHJpYnV0aW9uIENvbmZpZ3VyYXRpb25cbiAqL1xuYWJzdHJhY3QgY2xhc3MgRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKi9cbiAgYWJzdHJhY3QgcmVhZG9ubHkgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIGFic3RyYWN0IHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEdyYW50IGN1c3RvbSBhY3Rpb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICogQHBhcmFtIGFjdGlvbnMgVGhlIGxpc3Qgb2YgYWN0aW9uc1xuICAgKi9cbiAgcHVibGljIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9ucyxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybl0sXG4gICAgICBzY29wZTogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCByZWFkIHBlcm1pc3Npb25zIHRvIHRoZSBnaXZlbiBncmFudGVlIGZvciB0aGUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICogW2Rpc2FibGUtYXdzbGludDpuby1ncmFudHNdXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWxcbiAgICovXG4gIHB1YmxpYyBncmFudFJlYWQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiB0aGlzLmdyYW50KGdyYW50ZWUsICdpbWFnZWJ1aWxkZXI6R2V0RGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbicpO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHNlcnZpY2UgaW4gd2hpY2ggYSBjb250YWluZXIgc2hvdWxkIGJlIHJlZ2lzdGVyZWRcbiAqL1xuZXhwb3J0IGVudW0gUmVwb3NpdG9yeVNlcnZpY2Uge1xuICAvKipcbiAgICogSW5kaWNhdGVzIHRoZSBjb250YWluZXIgc2hvdWxkIGJlIHJlZ2lzdGVyZWQgaW4gRUNSXG4gICAqL1xuICBFQ1IgPSAnRUNSJyxcbn1cblxuLyoqXG4gKiBBIGNvbnRhaW5lciByZXBvc2l0b3J5IHVzZWQgdG8gZGlzdHJpYnV0ZSBjb250YWluZXIgaW1hZ2VzIGluIEVDMiBJbWFnZSBCdWlsZGVyXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSZXBvc2l0b3J5IHtcbiAgLyoqXG4gICAqIFRoZSBFQ1IgcmVwb3NpdG9yeSB0byB1c2UgYXMgdGhlIHRhcmdldCBjb250YWluZXIgcmVwb3NpdG9yeVxuICAgKlxuICAgKiBAcGFyYW0gcmVwb3NpdG9yeSBUaGUgRUNSIHJlcG9zaXRvcnkgdG8gdXNlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21FY3IocmVwb3NpdG9yeTogZWNyLklSZXBvc2l0b3J5KTogUmVwb3NpdG9yeSB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVwb3NpdG9yeSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVwb3NpdG9yeU5hbWU6IHN0cmluZyA9IHJlcG9zaXRvcnkucmVwb3NpdG9yeU5hbWU7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VydmljZTogUmVwb3NpdG9yeVNlcnZpY2UgPSBSZXBvc2l0b3J5U2VydmljZS5FQ1I7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgY29udGFpbmVyIHJlcG9zaXRvcnkgd2hlcmUgdGhlIG91dHB1dCBjb250YWluZXIgaW1hZ2UgaXMgc3RvcmVkXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSByZXBvc2l0b3J5TmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2VydmljZSBpbiB3aGljaCB0aGUgY29udGFpbmVyIHJlcG9zaXRvcnkgaXMgaG9zdGVkXG4gICAqL1xuICBhYnN0cmFjdCByZWFkb25seSBzZXJ2aWNlOiBSZXBvc2l0b3J5U2VydmljZTtcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIEVDMiBJbWFnZSBCdWlsZGVyIERpc3RyaWJ1dGlvbiBDb25maWd1cmF0aW9uLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ltYWdlYnVpbGRlci9sYXRlc3QvdXNlcmd1aWRlL21hbmFnZS1kaXN0cmlidXRpb24tc2V0dGluZ3MuaHRtbFxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiBleHRlbmRzIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25CYXNlIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaW1hZ2VidWlsZGVyLWFscGhhLkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24nO1xuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gZ2l2ZW4gaXRzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4oXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm46IHN0cmluZyxcbiAgKTogSURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lID0gY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihcbiAgICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4sXG4gICAgICBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgKS5yZXNvdXJjZU5hbWUhO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkJhc2Uge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25Bcm4gPSBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lID0gZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gZ2l2ZW4gaXRzIG5hbWUuIFRoZSBwcm92aWRlZCBuYW1lIG11c3QgYmUgbm9ybWFsaXplZCBieSBjb252ZXJ0aW5nXG4gICAqIGFsbCBhbHBoYWJldGljYWwgY2hhcmFjdGVycyB0byBsb3dlcmNhc2UsIGFuZCByZXBsYWNpbmcgYWxsIHNwYWNlcyBhbmQgdW5kZXJzY29yZXMgd2l0aCBoeXBoZW5zLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbk5hbWUoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lOiBzdHJpbmcsXG4gICk6IElEaXN0cmlidXRpb25Db25maWd1cmF0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybihcbiAgICAgIHNjb3BlLFxuICAgICAgaWQsXG4gICAgICBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICAgIHNlcnZpY2U6ICdpbWFnZWJ1aWxkZXInLFxuICAgICAgICByZXNvdXJjZTogJ2Rpc3RyaWJ1dGlvbi1jb25maWd1cmF0aW9uJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiBkaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSxcbiAgICAgIH0pLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIG9iamVjdCBpcyBhIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGlzRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbih4OiBhbnkpOiB4IGlzIERpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24ge1xuICAgIHJldHVybiB4ICE9PSBudWxsICYmIHR5cGVvZiB4ID09PSAnb2JqZWN0JyAmJiBESVNUUklCVVRJT05fQ09ORklHVVJBVElPTl9TWU1CT0wgaW4geDtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb247XG4gIHByaXZhdGUgcmVhZG9ubHkgYW1pRGlzdHJpYnV0aW9uc0J5UmVnaW9uOiB7IFtyZWdpb246IHN0cmluZ106IEFtaURpc3RyaWJ1dGlvbiB9ID0ge307XG4gIHByaXZhdGUgcmVhZG9ubHkgY29udGFpbmVyRGlzdHJpYnV0aW9uc0J5UmVnaW9uOiB7XG4gICAgW3JlZ2lvbjogc3RyaW5nXTogQ29udGFpbmVyRGlzdHJpYnV0aW9uO1xuICB9ID0ge307XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEaXN0cmlidXRpb25Db25maWd1cmF0aW9uUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOlxuICAgICAgICBwcm9wcy5kaXN0cmlidXRpb25Db25maWd1cmF0aW9uTmFtZSA/P1xuICAgICAgICBjZGsuTGF6eS5zdHJpbmcoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICBjZGsuTmFtZXMudW5pcXVlUmVzb3VyY2VOYW1lKHRoaXMsIHtcbiAgICAgICAgICAgICAgbWF4TGVuZ3RoOiAxMjgsXG4gICAgICAgICAgICAgIHNlcGFyYXRvcjogJy0nLFxuICAgICAgICAgICAgICBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICctJyxcbiAgICAgICAgICAgIH0pLnRvTG93ZXJDYXNlKCksIC8vIEVuZm9yY2UgbG93ZXJjYXNlIGZvciB0aGUgYXV0by1nZW5lcmF0ZWQgZmFsbGJhY2tcbiAgICAgICAgfSksXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgRElTVFJJQlVUSU9OX0NPTkZJR1VSQVRJT05fU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuXG4gICAgdGhpcy52YWxpZGF0ZURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lKCk7XG5cbiAgICB0aGlzLmFkZEFtaURpc3RyaWJ1dGlvbnMoLi4uKHByb3BzLmFtaURpc3RyaWJ1dGlvbnMgPz8gW10pKTtcbiAgICB0aGlzLmFkZENvbnRhaW5lckRpc3RyaWJ1dGlvbnMoLi4uKHByb3BzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnMgPz8gW10pKTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBuYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgIGRpc3RyaWJ1dGlvbnM6IGNkay5MYXp5LmFueSh7IHByb2R1Y2U6ICgpID0+IHRoaXMucmVuZGVyRGlzdHJpYnV0aW9ucygpIH0pLFxuICAgICAgdGFnczogcHJvcHMudGFncyxcbiAgICB9KTtcbiAgfVxuXG4gIEBtZW1vaXplZEdldHRlclxuICBwdWJsaWMgZ2V0IGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ck5hbWUpO1xuICB9XG5cbiAgQG1lbW9pemVkR2V0dGVyXG4gIHB1YmxpYyBnZXQgZGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbkFybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKHRoaXMucmVzb3VyY2UuYXR0ckFybiwge1xuICAgICAgc2VydmljZTogJ2ltYWdlYnVpbGRlcicsXG4gICAgICByZXNvdXJjZTogJ2Rpc3RyaWJ1dGlvbi1jb25maWd1cmF0aW9uJyxcbiAgICAgIHJlc291cmNlTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBBTUkgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHRvIHRoZSBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAcGFyYW0gYW1pRGlzdHJpYnV0aW9ucyBUaGUgbGlzdCBvZiBBTUkgZGlzdHJpYnV0aW9uIHNldHRpbmdzIHRvIGFwcGx5XG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgYWRkQW1pRGlzdHJpYnV0aW9ucyguLi5hbWlEaXN0cmlidXRpb25zOiBBbWlEaXN0cmlidXRpb25bXSk6IHZvaWQge1xuICAgIGFtaURpc3RyaWJ1dGlvbnMuZm9yRWFjaCgoYW1pRGlzdHJpYnV0aW9uKSA9PiB7XG4gICAgICBjb25zdCByZWdpb24gPSBhbWlEaXN0cmlidXRpb24ucmVnaW9uID8/IGNkay5TdGFjay5vZih0aGlzKS5yZWdpb247XG4gICAgICBpZiAodGhpcy5hbWlEaXN0cmlidXRpb25zQnlSZWdpb25bcmVnaW9uXSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBgZHVwbGljYXRlIEFNSSBkaXN0cmlidXRpb24gZm91bmQgZm9yIHJlZ2lvbiBcIiR7cmVnaW9ufVwiOyBvbmx5IG9uZSBBTUkgZGlzdHJpYnV0aW9uIHBlciByZWdpb24gaXMgYWxsb3dlZGAsXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5hbWlEaXN0cmlidXRpb25zQnlSZWdpb25bcmVnaW9uXSA9IGFtaURpc3RyaWJ1dGlvbjtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGNvbnRhaW5lciBkaXN0cmlidXRpb24gc2V0dGluZ3MgdG8gdGhlIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uXG4gICAqXG4gICAqIEBwYXJhbSBjb250YWluZXJEaXN0cmlidXRpb25zIFRoZSBsaXN0IG9mIGNvbnRhaW5lciBkaXN0cmlidXRpb24gc2V0dGluZ3MgdG8gYXBwbHlcbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRDb250YWluZXJEaXN0cmlidXRpb25zKC4uLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnM6IENvbnRhaW5lckRpc3RyaWJ1dGlvbltdKTogdm9pZCB7XG4gICAgY29udGFpbmVyRGlzdHJpYnV0aW9ucy5mb3JFYWNoKChjb250YWluZXJEaXN0cmlidXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHJlZ2lvbiA9IGNvbnRhaW5lckRpc3RyaWJ1dGlvbi5yZWdpb24gPz8gY2RrLlN0YWNrLm9mKHRoaXMpLnJlZ2lvbjtcbiAgICAgIGlmICh0aGlzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbltyZWdpb25dKSB7XG4gICAgICAgIHRocm93IG5ldyBjZGsuVmFsaWRhdGlvbkVycm9yKFxuICAgICAgICAgIGBkdXBsaWNhdGUgQ29udGFpbmVyIGRpc3RyaWJ1dGlvbiBmb3VuZCBmb3IgcmVnaW9uIFwiJHtyZWdpb259XCI7IG9ubHkgb25lIENvbnRhaW5lciBkaXN0cmlidXRpb24gcGVyIHJlZ2lvbiBpcyBhbGxvd2VkYCxcbiAgICAgICAgICB0aGlzLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbltyZWdpb25dID0gY29udGFpbmVyRGlzdHJpYnV0aW9uO1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lKCkge1xuICAgIGlmIChjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMucGh5c2ljYWxOYW1lKSkge1xuICAgICAgcmV0dXJuOyAvLyBDYW5ub3QgdmFsaWRhdGUgdW5yZXNvbHZlZCB0b2tlbnMsIGdpdmVuIHRoZWlyIGFjdHVhbCB2YWx1ZSBpcyByZW5kZXJlZCBhdCBkZXBsb3ltZW50IHRpbWVcbiAgICB9XG5cbiAgICBpZiAodGhpcy5waHlzaWNhbE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnICcpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBjb250YWluIHNwYWNlcycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLnBoeXNpY2FsTmFtZS5pbmNsdWRlcygnXycpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIGNhbm5vdCBjb250YWluIHVuZGVyc2NvcmVzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucGh5c2ljYWxOYW1lICE9PSB0aGlzLnBoeXNpY2FsTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignVGhlIGRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb25OYW1lIG11c3QgYmUgbG93ZXJjYXNlJywgdGhpcyk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJlbmRlcnMgdGhlIEFNSSBhbmQgY29udGFpbmVyIGRpc3RyaWJ1dGlvbnMgcHJvdmlkZWQgYXMgaW5wdXQgdG8gdGhlIGNvbnN0cnVjdCwgaW50byB0aGUgYERpc3RyaWJ1dGlvbltdYCBzdHJ1Y3R1cmVcbiAgICogdGhhdCBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uIGV4cGVjdHMgdG8gcmVjZWl2ZS4gRGlzdHJpYnV0aW9ucyBwcm92aWRlZCB0byBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uIG11c3RcbiAgICogbWFwIHRvIGEgdW5pcXVlIHJlZ2lvbiBwZXIgZW50cnkgaW4gdGhlIGxpc3QgLSB0aGlzIHJlbmRlciBmdW5jdGlvbiBhbHNvIGhhbmRsZXMgY29tYmluaW5nIEFNSSBhbmQgY29udGFpbmVyXG4gICAqIGRpc3RyaWJ1dGlvbnMgaW4gdGhlIHNhbWUgcmVnaW9uIGludG8gYSBzaW5nbGUgZW50cnkuXG4gICAqXG4gICAqIFRoaXMgaXMgcmVuZGVyZWQgYXQgc3ludGhlc2lzIHRpbWUsIGFzIHVzZXJzIGNhbiBhZGQgYWRkaXRpb25hbCBBTUkgYW5kIGNvbnRhaW5lciBkaXN0cmlidXRpb25zIHdpdGhcbiAgICogYGFkZEFtaURpc3RyaWJ1dGlvbnNgIGFuZCBgYWRkQ29udGFpbmVyRGlzdHJpYnV0aW9uc2AsIGFmdGVyIHRoZSBjb25zdHJ1Y3QgaGFzIGJlZW4gaW5zdGFudGlhdGVkLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSByZW5kZXJEaXN0cmlidXRpb25zKCk6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uRGlzdHJpYnV0aW9uUHJvcGVydHlbXSB7XG4gICAgaWYgKFxuICAgICAgIU9iamVjdC5rZXlzKHRoaXMuYW1pRGlzdHJpYnV0aW9uc0J5UmVnaW9uKS5sZW5ndGggJiZcbiAgICAgICFPYmplY3Qua2V5cyh0aGlzLmNvbnRhaW5lckRpc3RyaWJ1dGlvbnNCeVJlZ2lvbikubGVuZ3RoXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcignWW91IG11c3Qgc3BlY2lmeSBhdCBsZWFzdCBvbmUgQU1JIG9yIGNvbnRhaW5lciBkaXN0cmlidXRpb24nLCB0aGlzKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaXN0cmlidXRpb25CeVJlZ2lvbjogeyBbcmVnaW9uOiBzdHJpbmddOiBDZm5EaXN0cmlidXRpb25Db25maWd1cmF0aW9uLkRpc3RyaWJ1dGlvblByb3BlcnR5IH0gPSB7fTtcblxuICAgIGZvciAoY29uc3QgW3JlZ2lvbiwgZGlzdHJpYnV0aW9uXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmFtaURpc3RyaWJ1dGlvbnNCeVJlZ2lvbikpIHtcbiAgICAgIGRpc3RyaWJ1dGlvbkJ5UmVnaW9uW3JlZ2lvbl0gPSB7XG4gICAgICAgIHJlZ2lvbixcbiAgICAgICAgYW1pRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbjogdGhpcy5idWlsZEFtaURpc3RyaWJ1dGlvbihkaXN0cmlidXRpb24pLFxuICAgICAgICBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbnM6IHRoaXMuYnVpbGRGYXN0TGF1bmNoQ29uZmlndXJhdGlvbnMoZGlzdHJpYnV0aW9uKSxcbiAgICAgICAgbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uczogdGhpcy5idWlsZExhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbnMoZGlzdHJpYnV0aW9uKSxcbiAgICAgICAgc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnM6IHRoaXMuYnVpbGRTc21QYXJhbWV0ZXJDb25maWd1cmF0aW9ucyhkaXN0cmlidXRpb24pLFxuICAgICAgICBsaWNlbnNlQ29uZmlndXJhdGlvbkFybnM6IHRoaXMuYnVpbGRMaWNlbnNlQ29uZmlndXJhdGlvbkFybnMoZGlzdHJpYnV0aW9uKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBbcmVnaW9uLCBjb250YWluZXJEaXN0cmlidXRpb25dIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuY29udGFpbmVyRGlzdHJpYnV0aW9uc0J5UmVnaW9uKSkge1xuICAgICAgZGlzdHJpYnV0aW9uQnlSZWdpb25bcmVnaW9uXSA9IHtcbiAgICAgICAgLi4uKGRpc3RyaWJ1dGlvbkJ5UmVnaW9uW3JlZ2lvbl0gPz8ge30pLFxuICAgICAgICByZWdpb24sXG4gICAgICAgIGNvbnRhaW5lckRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb246IHRoaXMuYnVpbGRDb250YWluZXJEaXN0cmlidXRpb24oY29udGFpbmVyRGlzdHJpYnV0aW9uKSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgZGlzdHJpYnV0aW9ucyA9IE9iamVjdC52YWx1ZXMoZGlzdHJpYnV0aW9uQnlSZWdpb24pO1xuXG4gICAgZGlzdHJpYnV0aW9ucy5mb3JFYWNoKChkaXN0cmlidXRpb24pID0+IHtcbiAgICAgIGNvbnN0IHsgcmVnaW9uOiBfLCAuLi5kaXN0cmlidXRpb25XaXRob3V0UmVnaW9uIH0gPSBkaXN0cmlidXRpb247XG4gICAgICBpZiAoIU9iamVjdC5lbnRyaWVzKGRpc3RyaWJ1dGlvbldpdGhvdXRSZWdpb24pLnNvbWUoKFtfXywgdmFsdWVdKSA9PiB2YWx1ZSAhPT0gdW5kZWZpbmVkKSkge1xuICAgICAgICB0aHJvdyBuZXcgY2RrLlZhbGlkYXRpb25FcnJvcihcbiAgICAgICAgICBgYXQgbGVhc3Qgb25lIGRpc3RyaWJ1dGlvbiBwcm9wZXJ0eSBtdXN0IGJlIHNldCBmb3IgcmVnaW9uIFwiJHtkaXN0cmlidXRpb24ucmVnaW9ufVwiYCxcbiAgICAgICAgICB0aGlzLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGRpc3RyaWJ1dGlvbnM7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkQW1pRGlzdHJpYnV0aW9uKGFtaURpc3RyaWJ1dGlvbjogQW1pRGlzdHJpYnV0aW9uKTogb2JqZWN0IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsYXVuY2hQZXJtaXNzaW9ucyA9IHRoaXMuYnVpbGRBbWlMYXVuY2hQZXJtaXNzaW9ucyhhbWlEaXN0cmlidXRpb24pO1xuICAgIGNvbnN0IGFtaURpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24gPSB7XG4gICAgICAuLi4oT2JqZWN0LmtleXMoYW1pRGlzdHJpYnV0aW9uLmFtaVRhZ3MgPz8ge30pLmxlbmd0aCAmJiB7IEFtaVRhZ3M6IGFtaURpc3RyaWJ1dGlvbi5hbWlUYWdzIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlEZXNjcmlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIHsgRGVzY3JpcHRpb246IGFtaURpc3RyaWJ1dGlvbi5hbWlEZXNjcmlwdGlvbiB9KSxcbiAgICAgIC4uLihhbWlEaXN0cmlidXRpb24uYW1pS21zS2V5ICE9PSB1bmRlZmluZWQgJiYgeyBLbXNLZXlJZDogYW1pRGlzdHJpYnV0aW9uLmFtaUttc0tleS5rZXlBcm4gfSksXG4gICAgICAuLi4obGF1bmNoUGVybWlzc2lvbnMgJiYgeyBMYXVuY2hQZXJtaXNzaW9uQ29uZmlndXJhdGlvbjogbGF1bmNoUGVybWlzc2lvbnMgfSksXG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaU5hbWUgIT09IHVuZGVmaW5lZCAmJiB7IE5hbWU6IGFtaURpc3RyaWJ1dGlvbi5hbWlOYW1lIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlUYXJnZXRBY2NvdW50SWRzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBUYXJnZXRBY2NvdW50SWRzOiBhbWlEaXN0cmlidXRpb24uYW1pVGFyZ2V0QWNjb3VudElkcyxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMoYW1pRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbikubGVuZ3RoID8gYW1pRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbiA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRDb250YWluZXJEaXN0cmlidXRpb24oY29udGFpbmVyRGlzdHJpYnV0aW9uOiBDb250YWluZXJEaXN0cmlidXRpb24pOiBvYmplY3QgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB7XG4gICAgICBDb250YWluZXJUYWdzOiBjb250YWluZXJEaXN0cmlidXRpb24uY29udGFpbmVyVGFncyxcbiAgICAgIERlc2NyaXB0aW9uOiBjb250YWluZXJEaXN0cmlidXRpb24uY29udGFpbmVyRGVzY3JpcHRpb24sXG4gICAgICBUYXJnZXRSZXBvc2l0b3J5OiB7XG4gICAgICAgIFJlcG9zaXRvcnlOYW1lOiBjb250YWluZXJEaXN0cmlidXRpb24uY29udGFpbmVyUmVwb3NpdG9yeS5yZXBvc2l0b3J5TmFtZSxcbiAgICAgICAgU2VydmljZTogY29udGFpbmVyRGlzdHJpYnV0aW9uLmNvbnRhaW5lclJlcG9zaXRvcnkuc2VydmljZSxcbiAgICAgIH0sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRBbWlMYXVuY2hQZXJtaXNzaW9ucyhhbWlEaXN0cmlidXRpb246IEFtaURpc3RyaWJ1dGlvbik6IG9iamVjdCB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5pc1B1YmxpY1VzZXJHcm91cCkge1xuICAgICAgY2RrLkFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmcoXG4gICAgICAgICdBTUkgaXMgY29uZmlndXJlZCBmb3IgcHVibGljIGFjY2VzcywgbWFraW5nIGl0IGF2YWlsYWJsZSB0byBhbnkgQVdTIGFjY291bnQgZ2xvYmFsbHkuICcgK1xuICAgICAgICAgICdFbnN1cmUgbm8gc2Vuc2l0aXZlIGRhdGEsIGNyZWRlbnRpYWxzLCBvciBwcm9wcmlldGFyeSBjb25maWd1cmF0aW9ucyBhcmUgaW5jbHVkZWQuICcgK1xuICAgICAgICAgIFwiUmV2aWV3IHlvdXIgb3JnYW5pemF0aW9uJ3Mgc2VjdXJpdHkgcG9saWNpZXMgYmVmb3JlIGRlcGxveWluZyBwdWJsaWMgQU1Jcy5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgbGF1bmNoUGVybWlzc2lvbnMgPSB7XG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaUxhdW5jaFBlcm1pc3Npb24/Lm9yZ2FuaXphdGlvbmFsVW5pdEFybnMgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIE9yZ2FuaXphdGlvbmFsVW5pdEFybnM6IGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5vcmdhbml6YXRpb25hbFVuaXRBcm5zLFxuICAgICAgfSksXG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaUxhdW5jaFBlcm1pc3Npb24/Lm9yZ2FuaXphdGlvbkFybnMgIT09IHVuZGVmaW5lZCAmJiB7XG4gICAgICAgIE9yZ2FuaXphdGlvbkFybnM6IGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5vcmdhbml6YXRpb25Bcm5zLFxuICAgICAgfSksXG4gICAgICAuLi4oYW1pRGlzdHJpYnV0aW9uLmFtaUxhdW5jaFBlcm1pc3Npb24/LmlzUHVibGljVXNlckdyb3VwICYmIHtcbiAgICAgICAgVXNlckdyb3VwczogWydhbGwnXSxcbiAgICAgIH0pLFxuICAgICAgLi4uKGFtaURpc3RyaWJ1dGlvbi5hbWlMYXVuY2hQZXJtaXNzaW9uPy5hY2NvdW50SWRzICE9PSB1bmRlZmluZWQgJiYge1xuICAgICAgICBVc2VySWRzOiBhbWlEaXN0cmlidXRpb24uYW1pTGF1bmNoUGVybWlzc2lvbj8uYWNjb3VudElkcyxcbiAgICAgIH0pLFxuICAgIH07XG5cbiAgICByZXR1cm4gT2JqZWN0LmtleXMobGF1bmNoUGVybWlzc2lvbnMpLmxlbmd0aCA/IGxhdW5jaFBlcm1pc3Npb25zIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgcHJpdmF0ZSBidWlsZEZhc3RMYXVuY2hDb25maWd1cmF0aW9ucyhcbiAgICBhbWlEaXN0cmlidXRpb246IEFtaURpc3RyaWJ1dGlvbixcbiAgKTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5GYXN0TGF1bmNoQ29uZmlndXJhdGlvblByb3BlcnR5W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IGZhc3RMYXVuY2hDb25maWd1cmF0aW9ucyA9IGFtaURpc3RyaWJ1dGlvbi5mYXN0TGF1bmNoQ29uZmlndXJhdGlvbnM/Lm1hcChcbiAgICAgIChmYXN0TGF1bmNoQ29uZmlndXJhdGlvbik6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uRmFzdExhdW5jaENvbmZpZ3VyYXRpb25Qcm9wZXJ0eSA9PiB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5tYXhQYXJhbGxlbExhdW5jaGVzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgICAhY2RrLlRva2VuLmlzVW5yZXNvbHZlZChmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5tYXhQYXJhbGxlbExhdW5jaGVzKSAmJlxuICAgICAgICAgIGZhc3RMYXVuY2hDb25maWd1cmF0aW9uLm1heFBhcmFsbGVsTGF1bmNoZXMgPCBNSU5fUEFSQUxMRUxfTEFVTkNIRVNcbiAgICAgICAgKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICBgeW91IG11c3Qgc3BlY2lmeSBhIG1heGltdW0gcGFyYWxsZWwgbGF1bmNoIGNvdW50IG9mIGF0IGxlYXN0ICR7TUlOX1BBUkFMTEVMX0xBVU5DSEVTfWAsXG4gICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsYXVuY2hUZW1wbGF0ZSA9IGZhc3RMYXVuY2hDb25maWd1cmF0aW9uLmxhdW5jaFRlbXBsYXRlO1xuICAgICAgICBjb25zdCB1c2VGYXN0TGF1bmNoTGF1bmNoVGVtcGxhdGVJZCA9IGxhdW5jaFRlbXBsYXRlPy5sYXVuY2hUZW1wbGF0ZUlkICE9PSB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5GYXN0TGF1bmNoTGF1bmNoVGVtcGxhdGVTcGVjaWZpY2F0aW9uUHJvcGVydHkgPSB7XG4gICAgICAgICAgLi4uKHVzZUZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZUlkICYmIHtcbiAgICAgICAgICAgIGxhdW5jaFRlbXBsYXRlSWQ6IGxhdW5jaFRlbXBsYXRlPy5sYXVuY2hUZW1wbGF0ZUlkLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLighdXNlRmFzdExhdW5jaExhdW5jaFRlbXBsYXRlSWQgJiYge1xuICAgICAgICAgICAgbGF1bmNoVGVtcGxhdGVOYW1lOiBsYXVuY2hUZW1wbGF0ZT8ubGF1bmNoVGVtcGxhdGVOYW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICAgIC4uLihsYXVuY2hUZW1wbGF0ZT8udmVyc2lvbk51bWJlciAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgIGxhdW5jaFRlbXBsYXRlVmVyc2lvbjogbGF1bmNoVGVtcGxhdGU/LnZlcnNpb25OdW1iZXIsXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBlbmFibGVkOiBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi5lbmFibGVkLFxuICAgICAgICAgIG1heFBhcmFsbGVsTGF1bmNoZXM6IGZhc3RMYXVuY2hDb25maWd1cmF0aW9uLm1heFBhcmFsbGVsTGF1bmNoZXMsXG4gICAgICAgICAgLi4uKE9iamVjdC5rZXlzKGZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZSkubGVuZ3RoICYmIHsgbGF1bmNoVGVtcGxhdGU6IGZhc3RMYXVuY2hMYXVuY2hUZW1wbGF0ZSB9KSxcbiAgICAgICAgICAuLi4oZmFzdExhdW5jaENvbmZpZ3VyYXRpb24udGFyZ2V0U25hcHNob3RDb3VudCAhPT0gdW5kZWZpbmVkICYmIHtcbiAgICAgICAgICAgIHNuYXBzaG90Q29uZmlndXJhdGlvbjogeyB0YXJnZXRSZXNvdXJjZUNvdW50OiBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbi50YXJnZXRTbmFwc2hvdENvdW50IH0sXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gZmFzdExhdW5jaENvbmZpZ3VyYXRpb25zPy5sZW5ndGggPyBmYXN0TGF1bmNoQ29uZmlndXJhdGlvbnMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkTGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9ucyhcbiAgICBhbWlEaXN0cmlidXRpb246IEFtaURpc3RyaWJ1dGlvbixcbiAgKTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5MYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb25Qcm9wZXJ0eVtdIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb25zID0gYW1pRGlzdHJpYnV0aW9uLmxhdW5jaFRlbXBsYXRlcz8ubWFwKFxuICAgICAgKGxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbik6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uTGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9uUHJvcGVydHkgPT4ge1xuICAgICAgICBpZiAoIWxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbi5sYXVuY2hUZW1wbGF0ZS5sYXVuY2hUZW1wbGF0ZUlkKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IGNkay5WYWxpZGF0aW9uRXJyb3IoXG4gICAgICAgICAgICAnWW91IG11c3QgcmVmZXJlbmNlIGxhdW5jaCB0ZW1wbGF0ZXMgYnkgSUQgaW4gbGF1bmNoIHRlbXBsYXRlIGNvbmZpZ3VyYXRpb25zJyxcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgYWNjb3VudElkOiBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb24uYWNjb3VudElkLFxuICAgICAgICAgIGxhdW5jaFRlbXBsYXRlSWQ6IGxhdW5jaFRlbXBsYXRlQ29uZmlndXJhdGlvbi5sYXVuY2hUZW1wbGF0ZS5sYXVuY2hUZW1wbGF0ZUlkLFxuICAgICAgICAgIHNldERlZmF1bHRWZXJzaW9uOiBsYXVuY2hUZW1wbGF0ZUNvbmZpZ3VyYXRpb24uc2V0RGVmYXVsdFZlcnNpb24sXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICk7XG5cbiAgICByZXR1cm4gbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9ucz8ubGVuZ3RoID8gbGF1bmNoVGVtcGxhdGVDb25maWd1cmF0aW9ucyA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIHByaXZhdGUgYnVpbGRMaWNlbnNlQ29uZmlndXJhdGlvbkFybnMoYW1pRGlzdHJpYnV0aW9uOiBBbWlEaXN0cmlidXRpb24pOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIGFtaURpc3RyaWJ1dGlvbi5saWNlbnNlQ29uZmlndXJhdGlvbkFybnM/Lmxlbmd0aCA/IGFtaURpc3RyaWJ1dGlvbi5saWNlbnNlQ29uZmlndXJhdGlvbkFybnMgOiB1bmRlZmluZWQ7XG4gIH1cblxuICBwcml2YXRlIGJ1aWxkU3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnMoXG4gICAgYW1pRGlzdHJpYnV0aW9uOiBBbWlEaXN0cmlidXRpb24sXG4gICk6IENmbkRpc3RyaWJ1dGlvbkNvbmZpZ3VyYXRpb24uU3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvblByb3BlcnR5W10gfCB1bmRlZmluZWQge1xuICAgIGNvbnN0IHNzbVBhcmFtZXRlckNvbmZpZ3VyYXRpb25zID0gYW1pRGlzdHJpYnV0aW9uLnNzbVBhcmFtZXRlcnM/Lm1hcChcbiAgICAgIChzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uKTogQ2ZuRGlzdHJpYnV0aW9uQ29uZmlndXJhdGlvbi5Tc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uUHJvcGVydHkgPT4gKHtcbiAgICAgICAgYW1pQWNjb3VudElkOiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uLmFtaUFjY291bnQsXG4gICAgICAgIGRhdGFUeXBlOiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uLmRhdGFUeXBlLFxuICAgICAgICBwYXJhbWV0ZXJOYW1lOiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9uLnBhcmFtZXRlci5wYXJhbWV0ZXJOYW1lLFxuICAgICAgfSksXG4gICAgKTtcblxuICAgIHJldHVybiBzc21QYXJhbWV0ZXJDb25maWd1cmF0aW9ucz8ubGVuZ3RoID8gc3NtUGFyYW1ldGVyQ29uZmlndXJhdGlvbnMgOiB1bmRlZmluZWQ7XG4gIH1cbn1cbiJdfQ==
|
package/lib/image-pipeline.d.ts
CHANGED
|
@@ -431,14 +431,6 @@ export declare class ImagePipeline extends ImagePipelineBase {
|
|
|
431
431
|
* Return whether the given object is an ImagePipeline.
|
|
432
432
|
*/
|
|
433
433
|
static isImagePipeline(x: any): x is ImagePipeline;
|
|
434
|
-
/**
|
|
435
|
-
* The ARN of the image pipeline
|
|
436
|
-
*/
|
|
437
|
-
readonly imagePipelineArn: string;
|
|
438
|
-
/**
|
|
439
|
-
* The name of the image pipeline
|
|
440
|
-
*/
|
|
441
|
-
readonly imagePipelineName: string;
|
|
442
434
|
/**
|
|
443
435
|
* The infrastructure configuration used for the image build
|
|
444
436
|
*/
|
|
@@ -449,7 +441,10 @@ export declare class ImagePipeline extends ImagePipelineBase {
|
|
|
449
441
|
*/
|
|
450
442
|
readonly executionRole?: iam.IRole;
|
|
451
443
|
private readonly props;
|
|
444
|
+
private readonly resource;
|
|
452
445
|
constructor(scope: Construct, id: string, props: ImagePipelineProps);
|
|
446
|
+
get imagePipelineName(): string;
|
|
447
|
+
get imagePipelineArn(): string;
|
|
453
448
|
/**
|
|
454
449
|
* Grants the default permissions for building an image to the provided execution role.
|
|
455
450
|
* [disable-awslint:no-grants]
|