@aws-cdk/aws-ec2-alpha 2.231.0-alpha.0 → 2.232.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 +32 -3
- package/.jsii.tabl.json.gz +0 -0
- package/eslint-suppressions.json +27 -0
- package/lib/ipam.d.ts +1 -1
- package/lib/ipam.js +3 -3
- package/lib/route.d.ts +2 -11
- package/lib/route.js +11 -11
- package/lib/subnet-v2.d.ts +1 -1
- package/lib/subnet-v2.js +6 -6
- package/lib/transit-gateway-association.d.ts +1 -8
- package/lib/transit-gateway-attachment.d.ts +1 -8
- package/lib/transit-gateway-route-table-association.d.ts +2 -2
- package/lib/transit-gateway-route-table-association.js +3 -3
- package/lib/transit-gateway-route-table-propagation.js +3 -3
- package/lib/transit-gateway-route-table.d.ts +3 -16
- package/lib/transit-gateway-route-table.js +5 -5
- package/lib/transit-gateway-route.d.ts +3 -12
- package/lib/transit-gateway-route.js +4 -4
- package/lib/transit-gateway-vpc-attachment.d.ts +1 -1
- package/lib/transit-gateway-vpc-attachment.js +6 -6
- package/lib/transit-gateway.d.ts +1 -30
- package/lib/transit-gateway.js +5 -5
- package/lib/util.js +1 -1
- package/lib/vpc-v2-base.d.ts +3 -34
- package/lib/vpc-v2-base.js +4 -4
- package/lib/vpc-v2.d.ts +1 -1
- package/lib/vpc-v2.js +7 -7
- package/package.json +6 -6
package/lib/route.js
CHANGED
|
@@ -37,12 +37,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
37
37
|
exports.RouteTable = exports.Route = exports.RouteTargetType = exports.VPCPeeringConnection = exports.NatGateway = exports.VPNGatewayV2 = exports.InternetGateway = exports.EgressOnlyInternetGateway = exports.NatConnectivityType = void 0;
|
|
38
38
|
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
39
39
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
40
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
40
41
|
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
41
42
|
const core_1 = require("aws-cdk-lib/core");
|
|
42
|
-
const util_1 = require("./util");
|
|
43
43
|
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
44
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
45
44
|
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
45
|
+
const util_1 = require("./util");
|
|
46
46
|
/**
|
|
47
47
|
* Indicates whether the NAT gateway supports public or private connectivity.
|
|
48
48
|
* The default is public connectivity.
|
|
@@ -81,7 +81,7 @@ let EgressOnlyInternetGateway = (() => {
|
|
|
81
81
|
EgressOnlyInternetGateway = _classThis = _classDescriptor.value;
|
|
82
82
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
83
83
|
}
|
|
84
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.EgressOnlyInternetGateway", version: "2.
|
|
84
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.EgressOnlyInternetGateway", version: "2.232.0-alpha.0" };
|
|
85
85
|
/** Uniquely identifies this class. */
|
|
86
86
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.EgressOnlyInternetGateway';
|
|
87
87
|
/**
|
|
@@ -144,7 +144,7 @@ let InternetGateway = (() => {
|
|
|
144
144
|
InternetGateway = _classThis = _classDescriptor.value;
|
|
145
145
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
146
146
|
}
|
|
147
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.InternetGateway", version: "2.
|
|
147
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.InternetGateway", version: "2.232.0-alpha.0" };
|
|
148
148
|
/** Uniquely identifies this class. */
|
|
149
149
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.InternetGateway';
|
|
150
150
|
/**
|
|
@@ -218,7 +218,7 @@ let VPNGatewayV2 = (() => {
|
|
|
218
218
|
VPNGatewayV2 = _classThis = _classDescriptor.value;
|
|
219
219
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
220
220
|
}
|
|
221
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VPNGatewayV2", version: "2.
|
|
221
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VPNGatewayV2", version: "2.232.0-alpha.0" };
|
|
222
222
|
/** Uniquely identifies this class. */
|
|
223
223
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.VPNGatewayV2';
|
|
224
224
|
/**
|
|
@@ -316,7 +316,7 @@ let NatGateway = (() => {
|
|
|
316
316
|
NatGateway = _classThis = _classDescriptor.value;
|
|
317
317
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
318
318
|
}
|
|
319
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.NatGateway", version: "2.
|
|
319
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.NatGateway", version: "2.232.0-alpha.0" };
|
|
320
320
|
/** Uniquely identifies this class. */
|
|
321
321
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.NatGateway';
|
|
322
322
|
/**
|
|
@@ -429,7 +429,7 @@ let VPCPeeringConnection = (() => {
|
|
|
429
429
|
VPCPeeringConnection = _classThis = _classDescriptor.value;
|
|
430
430
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
431
431
|
}
|
|
432
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VPCPeeringConnection", version: "2.
|
|
432
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VPCPeeringConnection", version: "2.232.0-alpha.0" };
|
|
433
433
|
/** Uniquely identifies this class. */
|
|
434
434
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.VPCPeeringConnection';
|
|
435
435
|
/**
|
|
@@ -527,7 +527,7 @@ exports.VPCPeeringConnection = VPCPeeringConnection;
|
|
|
527
527
|
* The gateway or endpoint targeted by the route.
|
|
528
528
|
*/
|
|
529
529
|
class RouteTargetType {
|
|
530
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTargetType", version: "2.
|
|
530
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTargetType", version: "2.232.0-alpha.0" };
|
|
531
531
|
/**
|
|
532
532
|
* The gateway route target. This is used for targets such as
|
|
533
533
|
* egress-only internet gateway or VPC peering connection.
|
|
@@ -575,7 +575,7 @@ let Route = (() => {
|
|
|
575
575
|
Route = _classThis = _classDescriptor.value;
|
|
576
576
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
577
577
|
}
|
|
578
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.Route", version: "2.
|
|
578
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.Route", version: "2.232.0-alpha.0" };
|
|
579
579
|
/** Uniquely identifies this class. */
|
|
580
580
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.Route';
|
|
581
581
|
/**
|
|
@@ -688,7 +688,7 @@ let RouteTable = (() => {
|
|
|
688
688
|
RouteTable = _classThis = _classDescriptor.value;
|
|
689
689
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
690
690
|
}
|
|
691
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTable", version: "2.
|
|
691
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.RouteTable", version: "2.232.0-alpha.0" };
|
|
692
692
|
/** Uniquely identifies this class. */
|
|
693
693
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.RouteTable';
|
|
694
694
|
/**
|
|
@@ -768,4 +768,4 @@ function routerTypeToPropName(routerType) {
|
|
|
768
768
|
[aws_ec2_1.RouterType.CORE_NETWORK]: 'coreNetworkArn',
|
|
769
769
|
})[routerType];
|
|
770
770
|
}
|
|
771
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBa1M7QUFFbFMsMkNBQW1IO0FBRW5ILGlDQUFtRTtBQUVuRSw4RUFBOEY7QUFDOUYsNkNBQXFDO0FBQ3JDLDBFQUEwRTtBQUUxRTs7OztHQUlHO0FBQ0gsSUFBWSxtQkFTWDtBQVRELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsd0NBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCwwQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVFcsbUJBQW1CLG1DQUFuQixtQkFBbUIsUUFTOUI7QUE4TEQ7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBVyxNQUFNLENBQUM7QUFFaEM7OztHQUdHO0lBRVUseUJBQXlCOzRCQURyQyxvQ0FBa0I7Ozs7c0JBQzRCLGVBQVE7eUNBQWhCLFNBQVEsV0FBUTs7OztZQUF2RCw2S0FtQ0M7Ozs7O1FBbENDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsa0RBQWtELENBQUM7UUFDMUc7O1dBRUc7UUFDTSxVQUFVLENBQWE7UUFFaEM7O1dBRUc7UUFDTSxjQUFjLENBQVM7UUFFaEM7O1dBRUc7UUFDYSxRQUFRLENBQStCO1FBRXZELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7WUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O21EQW5CUix5QkFBeUI7Ozs7WUFvQmxDLG1DQUFtQztZQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsQyxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2dCQUN4QyxXQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLDZC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QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuRUlQLCBDZm5FZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5LCBDZm5JbnRlcm5ldEdhdGV3YXksIENmbk5hdEdhdGV3YXksIENmblZQQ1BlZXJpbmdDb25uZWN0aW9uLCBDZm5Sb3V0ZSwgQ2ZuUm91dGVUYWJsZSwgQ2ZuVlBDR2F0ZXdheUF0dGFjaG1lbnQsIENmblZQTkdhdGV3YXksIENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uLCBHYXRld2F5VnBjRW5kcG9pbnQsIElSb3V0ZVRhYmxlLCBJVnBjRW5kcG9pbnQsIFJvdXRlclR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IENvbnN0cnVjdCwgSURlcGVuZGFibGUgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IEFubm90YXRpb25zLCBEdXJhdGlvbiwgRmVhdHVyZUZsYWdzLCBJUmVzb3VyY2UsIFJlc291cmNlLCBUYWdzLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IElWcGNWMiwgVlBOR2F0ZXdheVYyT3B0aW9ucyB9IGZyb20gJy4vdnBjLXYyLWJhc2UnO1xuaW1wb3J0IHsgTmV0d29ya1V0aWxzLCBhbGxSb3V0ZVRhYmxlSWRzLCBDaWRyQmxvY2sgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgSVN1Ym5ldFYyIH0gZnJvbSAnLi9zdWJuZXQtdjInO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgY3hfYXBpIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgTkFUIGdhdGV3YXkgc3VwcG9ydHMgcHVibGljIG9yIHByaXZhdGUgY29ubmVjdGl2aXR5LlxuICogVGhlIGRlZmF1bHQgaXMgcHVibGljIGNvbm5lY3Rpdml0eS5cbiAqIFNlZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1uYXRnYXRld2F5Lmh0bWwjY2ZuLWVjMi1uYXRnYXRld2F5LWNvbm5lY3Rpdml0eXR5cGVcbiAqL1xuZXhwb3J0IGVudW0gTmF0Q29ubmVjdGl2aXR5VHlwZSB7XG4gIC8qKlxuICAgKiBTZXRzIENvbm5lY3Rpdml0eSB0eXBlIHRvIFBVQkxJQ1xuICAgKi9cbiAgUFVCTElDID0gJ3B1YmxpYycsXG4gIC8qKlxuICAgKiBTZXRzIENvbm5lY3Rpdml0eSB0eXBlIHRvIFBSSVZBVEVcbiAgICovXG4gIFBSSVZBVEUgPSAncHJpdmF0ZScsXG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHRvIGRlZmluZSBhIHJvdXRpbmcgdGFyZ2V0LCBzdWNoIGFzIGFuXG4gKiBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5IG9yIFZQQyBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm91dGVUYXJnZXQgZXh0ZW5kcyBJRGVwZW5kYWJsZSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByb3V0ZXIgdXNlZCBpbiB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclRhcmdldElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBkZWZpbmUgYW4gZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5UHJvcHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRob3V0IGEgcmVzb3VyY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZWdyZXNzT25seUludGVybmV0R2F0ZXdheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBkZWZpbmUgYW4gaW50ZXJuZXQgZ2F0ZXdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5ldEdhdGV3YXlQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjVjI7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb3Zpc2lvbmVkIHdpdGhvdXQgYSByZXNvdXJjZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBpbnRlcm5ldEdhdGV3YXlOYW1lPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBkZWZpbmUgYSBWUE4gZ2F0ZXdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWUE5HYXRld2F5VjJQcm9wcyBleHRlbmRzIFZQTkdhdGV3YXlWMk9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBWUE4gZ2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gZGVmaW5lIGEgTkFUIGdhdGV3YXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0R2F0ZXdheU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHN1Ym5ldCBpbiB3aGljaCB0aGUgTkFUIGdhdGV3YXkgaXMgbG9jYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldDogSVN1Ym5ldFYyO1xuXG4gIC8qKlxuICAgKiBBbGxvY2F0aW9uSUQgb2YgRWxhc3RpYyBJUCBhZGRyZXNzIHRoYXQncyBhc3NvY2lhdGVkIHdpdGggdGhlIE5BVCBnYXRld2F5LiBUaGlzIHByb3BlcnR5IGlzIHJlcXVpcmVkIGZvciBhIHB1YmxpYyBOQVRcbiAgICogZ2F0ZXdheSBhbmQgY2Fubm90IGJlIHNwZWNpZmllZCB3aXRoIGEgcHJpdmF0ZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhdHRyLmFsbG9jYXRpb25JRCBvZiBhIG5ldyBFbGFzdGljIElQIGNyZWF0ZWQgYnkgZGVmYXVsdFxuICAgKiAvL1RPRE86IEFERCBMMiBmb3IgZWxhc3RpYyBpcFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb2NhdGlvbklkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgTkFUIGdhdGV3YXkgc3VwcG9ydHMgcHVibGljIG9yIHByaXZhdGUgY29ubmVjdGl2aXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBOYXRDb25uZWN0aXZpdHlUeXBlLlB1YmxpY1xuICAgKi9cbiAgcmVhZG9ubHkgY29ubmVjdGl2aXR5VHlwZT86IE5hdENvbm5lY3Rpdml0eVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGZvcmNpYmx5IHJlbGVhc2luZyB0aGVcbiAgICogSVAgYWRkcmVzc2VzIGlmIGNvbm5lY3Rpb25zIGFyZSBzdGlsbCBpbiBwcm9ncmVzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgMzUwc2Vjb25kc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4RHJhaW5EdXJhdGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpdmF0ZSBJUHY0IGFkZHJlc3MgdG8gYXNzaWduIHRvIHRoZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB5b3UgZG9uJ3QgcHJvdmlkZSBhbiBhZGRyZXNzLCBhIHByaXZhdGUgSVB2NCBhZGRyZXNzIHdpbGwgYmUgYXV0b21hdGljYWxseSBhc3NpZ25lZC5cbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVJcEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBFSVAgYWxsb2NhdGlvbiBJRHMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1uYXQtZ2F0ZXdheS5odG1sI25hdC1nYXRld2F5LWNyZWF0aW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2Vjb25kYXJ5IGFsbG9jYXRpb24gSURzIGF0dGFjaGVkIHRvIE5BVEdXXG4gICAqXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlBbGxvY2F0aW9uSWRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc2Vjb25kYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzZXMgeW91XG4gICAqIHdhbnQgdG8gYXNzaWduIHRvIHRoZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogYFNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3NDb3VudGAgYW5kIGBTZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzZXNgIGNhbm5vdCBiZVxuICAgKiBzZXQgYXQgdGhlIHNhbWUgdGltZS5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLW5hdC1nYXRld2F5Lmh0bWwjbmF0LWdhdGV3YXktY3JlYXRpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzZWNvbmRhcnkgYWxsb2NhdGlvbiBJRHMgYXNzb2NpYXRlZCB3aXRoIE5BVEdXXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBwcml2YXRlIElQdjQgYWRkcmVzc2VzLlxuICAgKlxuICAgKiBgU2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc0NvdW50YCBhbmQgYFNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3Nlc2AgY2Fubm90IGJlXG4gICAqIHNldCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtbmF0LWdhdGV3YXkuaHRtbCNuYXQtZ2F0ZXdheS1jcmVhdGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNlY29uZGFyeSBwcml2YXRlIElwQWRkcmVzc2VzIGFzc29jaWF0ZWQgd2l0aCBOQVRHV1xuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOQVRHVyBwcm92aXNpb25lZCB3aXRob3V0IGFueSBuYW1lXG4gICAqL1xuICByZWFkb25seSBuYXRHYXRld2F5TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIE5BVCBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdEdhdGV3YXlQcm9wcyBleHRlbmRzIE5hdEdhdGV3YXlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDIGluIHdoaWNoIHRoZSBOQVQgZ2F0ZXdheSBpcyBsb2NhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGVsYXN0aWMgaXAgYXNzb2NpYXRlZCwgcmVxdWlyZWQgaW4gY2FzZSBvZiBwdWJsaWMgY29ubmVjdGl2aXR5IGlmIGBBbGxvY2F0aW9uSWRgIGlzIG5vdCBkZWZpbmVkXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBJVnBjVjI7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgYSBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIHRoYXQgaXMgYWNjZXB0aW5nIHRoZSBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBhY2NlcHRvclZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSBhcm4gY3JlYXRlZCBpbiB0aGUgYWNjZXB0b3IgYWNjb3VudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwZWVyUm9sZUFybiBuZWVkZWQgaWYgbm90IGNyb3NzIGFjY291bnQgY29ubmVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcGVlclJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcGVlcmluZyBjb25uZWN0aW9uIHByb3Zpc2lvbmVkIHdpdGhvdXQgYW55IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHZwY1BlZXJpbmdDb25uZWN0aW9uTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIFZQQyBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVlBDUGVlcmluZ0Nvbm5lY3Rpb25Qcm9wcyBleHRlbmRzIFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIHRoYXQgaXMgcmVxdWVzdGluZyB0aGUgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdG9yVnBjOiBJVnBjVjI7XG59XG5cbi8qKlxuICogTmFtZSB0YWcgY29uc3RhbnRcbiAqL1xuY29uc3QgTkFNRV9UQUc6IHN0cmluZyA9ICdOYW1lJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXlcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6RWdyZXNzT25seUludGVybmV0R2F0ZXdheVxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgRWdyZXNzT25seUludGVybmV0R2F0ZXdheSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0IHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtZWMyLWFscGhhLkVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXknO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmbkVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXk7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuZWdyZXNzT25seUludGVybmV0R2F0ZXdheU5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcy5lZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZSk7XG4gICAgfVxuICAgIHRoaXMucm91dGVyVHlwZSA9IFJvdXRlclR5cGUuRUdSRVNTX09OTFlfSU5URVJORVRfR0FURVdBWTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuRWdyZXNzT25seUludGVybmV0R2F0ZXdheSh0aGlzLCAnRUlHVycsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy52cGMudnBjSWQsXG4gICAgfSk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gdGhpcy5yZXNvdXJjZS5hdHRySWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGludGVybmV0IGdhdGV3YXlcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6SW50ZXJuZXRHYXRld2F5XG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBJbnRlcm5ldEdhdGV3YXkgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElSb3V0ZVRhcmdldCB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWVjMi1hbHBoYS5JbnRlcm5ldEdhdGV3YXknO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5ldCBnYXRld2F5IENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuSW50ZXJuZXRHYXRld2F5O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbnRlcm5ldEdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLnJvdXRlclR5cGUgPSBSb3V0ZXJUeXBlLkdBVEVXQVk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmbkludGVybmV0R2F0ZXdheSh0aGlzLCAnSUdXJywge30pO1xuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSB0aGlzLnJlc291cmNlO1xuXG4gICAgdGhpcy5yb3V0ZXJUYXJnZXRJZCA9IEZlYXR1cmVGbGFncy5vZih0aGlzKS5pc0VuYWJsZWQoY3hfYXBpLlVTRV9SRVNPVVJDRUlEX0ZPUl9WUENWMl9NSUdSQVRJT04pID9cbiAgICAgIHRoaXMucmVzb3VyY2UucmVmIDogdGhpcy5yZXNvdXJjZS5hdHRySW50ZXJuZXRHYXRld2F5SWQ7XG4gICAgdGhpcy52cGNJZCA9IHByb3BzLnZwYy52cGNJZDtcblxuICAgIGlmIChwcm9wcy5pbnRlcm5ldEdhdGV3YXlOYW1lKSB7XG4gICAgICBUYWdzLm9mKHRoaXMpLmFkZChOQU1FX1RBRywgcHJvcHMuaW50ZXJuZXRHYXRld2F5TmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnZwYy52cGNOYW1lKSB7XG4gICAgICBUYWdzLm9mKHRoaXMpLmFkZCgnTmFtZScsIHByb3BzLnZwYy52cGNOYW1lKTtcbiAgICB9XG5cbiAgICBuZXcgQ2ZuVlBDR2F0ZXdheUF0dGFjaG1lbnQodGhpcywgJ0dXQXR0YWNobWVudCcsIHtcbiAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgICAgaW50ZXJuZXRHYXRld2F5SWQ6IHRoaXMucm91dGVyVGFyZ2V0SWQsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdmlydHVhbCBwcml2YXRlIGdhdGV3YXlcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6VlBOR2F0ZXdheVxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgVlBOR2F0ZXdheVYyIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1lYzItYWxwaGEuVlBOR2F0ZXdheVYyJztcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgVlBOIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFZQTiBnYXRld2F5IENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuVlBOR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIFZQTiBHYXRld2F5IEF0dGFjaG1lbnRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2F0dGFjaG1lbnQ6IENmblZQQ0dhdGV3YXlBdHRhY2htZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgVlBOIEdhdGV3YXkgUm91dGUgUHJvcGFnYXRpb25cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlUHJvcGFnYXRpb246IENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUE5HYXRld2F5VjJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy52cG5HYXRld2F5TmFtZSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMucm91dGVyVHlwZSA9IFJvdXRlclR5cGUuR0FURVdBWTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuVlBOR2F0ZXdheSh0aGlzLCAnSUdXJywge1xuICAgICAgdHlwZTogcHJvcHMudHlwZSxcbiAgICAgIGFtYXpvblNpZGVBc246IHByb3BzLmFtYXpvblNpZGVBc24sXG4gICAgfSk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gdGhpcy5yZXNvdXJjZS5hdHRyVnBuR2F0ZXdheUlkO1xuXG4gICAgdGhpcy52cGNJZCA9IHByb3BzLnZwYy52cGNJZDtcbiAgICB0aGlzLl9hdHRhY2htZW50ID0gbmV3IENmblZQQ0dhdGV3YXlBdHRhY2htZW50KHRoaXMsICdWUENWUE5HVycsIHtcbiAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgICAgdnBuR2F0ZXdheUlkOiB0aGlzLnJlc291cmNlLmF0dHJWcG5HYXRld2F5SWQsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMudnBuR2F0ZXdheU5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcy52cG5HYXRld2F5TmFtZSk7XG4gICAgfVxuXG4gICAgLy8gUHJvcGFnYXRlIHJvdXRlcyBvbiByb3V0ZSB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByaWdodCBzdWJuZXRzXG4gICAgY29uc3QgdnBuUm91dGVQcm9wYWdhdGlvbiA9IHByb3BzLnZwblJvdXRlUHJvcGFnYXRpb24gPz8gW107XG4gICAgY29uc3Qgc3VibmV0cyA9IHZwblJvdXRlUHJvcGFnYXRpb24ubWFwKHMgPT4gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocykuc3VibmV0cykuZmxhdCgpO1xuICAgIGNvbnN0IHJvdXRlVGFibGVJZHMgPSBhbGxSb3V0ZVRhYmxlSWRzKHN1Ym5ldHMpO1xuXG4gICAgaWYgKHJvdXRlVGFibGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZihzY29wZSkuYWRkV2FybmluZ1YyKCdAYXdzLWNkazphd3MtZWMyLWVscGhhOmVuYWJsZVZwbkdhdGV3YXlWMicsIGBObyBzdWJuZXRzIG1hdGNoaW5nIHNlbGVjdGlvbjogJyR7SlNPTi5zdHJpbmdpZnkodnBuUm91dGVQcm9wYWdhdGlvbil9Jy4gU2VsZWN0IG90aGVyIHN1Ym5ldHMgdG8gYWRkIHJvdXRlcyB0by5gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3V0ZVByb3BhZ2F0aW9uID0gbmV3IENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uKHRoaXMsICdSb3V0ZVByb3BhZ2F0aW9uJywge1xuICAgICAgcm91dGVUYWJsZUlkcyxcbiAgICAgIHZwbkdhdGV3YXlJZDogdGhpcy5yb3V0ZXJUYXJnZXRJZCxcbiAgICB9KTtcbiAgICAvLyBUaGUgQVdTOjpFQzI6OlZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uIHJlc291cmNlIGNhbm5vdCB1c2UgdGhlIFZQTiBnYXRld2F5XG4gICAgLy8gdW50aWwgaXQgaGFzIHN1Y2Nlc3NmdWxseSBhdHRhY2hlZCB0byB0aGUgVlBDLlxuICAgIC8vIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwbi1nYXRld2F5cm91dGVwcm9wLmh0bWxcbiAgICB0aGlzLl9yb3V0ZVByb3BhZ2F0aW9uLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLl9hdHRhY2htZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXR3b3JrIGFkZHJlc3MgdHJhbnNsYXRpb24gKE5BVCkgZ2F0ZXdheVxuICogQHJlc291cmNlIEFXUzo6RUMyOjpOYXRHYXRld2F5XG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBOYXRHYXRld2F5IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1lYzItYWxwaGEuTmF0R2F0ZXdheSc7XG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgTmF0R2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmF0R2F0ZXdheUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgTkFUIGdhdGV3YXkgc3VwcG9ydHMgcHVibGljIG9yIHByaXZhdGUgY29ubmVjdGl2aXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBwdWJsaWNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aXZpdHlUeXBlPzogTmF0Q29ubmVjdGl2aXR5VHlwZTtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2libHkgcmVsZWFzaW5nIHRoZVxuICAgKiBJUCBhZGRyZXNzZXMgaWYgY29ubmVjdGlvbnMgYXJlIHN0aWxsIGluIHByb2dyZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnMzUwIHNlY29uZHMnXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWF4RHJhaW5EdXJhdGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgTkFUIGdhdGV3YXkgQ0ZOIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBDZm5OYXRHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBFbGFzdGljIElQIGNyZWF0ZWQgZm9yIGFsbG9jYXRpb25cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlaXA/OiBDZm5FSVA7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5hdEdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLnJvdXRlclR5cGUgPSBSb3V0ZXJUeXBlLk5BVF9HQVRFV0FZO1xuXG4gICAgdGhpcy5jb25uZWN0aXZpdHlUeXBlID0gcHJvcHMuY29ubmVjdGl2aXR5VHlwZSB8fCBOYXRDb25uZWN0aXZpdHlUeXBlLlBVQkxJQztcbiAgICB0aGlzLm1heERyYWluRHVyYXRpb24gPSBwcm9wcy5tYXhEcmFpbkR1cmF0aW9uIHx8IER1cmF0aW9uLnNlY29uZHMoMzUwKTtcblxuICAgIGlmICh0aGlzLmNvbm5lY3Rpdml0eVR5cGUgPT09IE5hdENvbm5lY3Rpdml0eVR5cGUuUFVCTElDKSB7XG4gICAgICBpZiAoIXByb3BzLnZwYyAmJiAhcHJvcHMuYWxsb2NhdGlvbklkKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0VpdGhlciBwcm92aWRlIHZwYyBvciBhbGxvY2F0aW9uSWQnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMubmF0R2F0ZXdheU5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcz8ubmF0R2F0ZXdheU5hbWUpO1xuICAgIH1cblxuICAgIC8vIElmIHVzZXIgZG9lcyBub3QgcHJvdmlkZSBFSVAsIGdlbmVyYXRlIG9uZSBmb3IgdGhlbVxuICAgIHZhciBhSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5jb25uZWN0aXZpdHlUeXBlID09PSBOYXRDb25uZWN0aXZpdHlUeXBlLlBVQkxJQykge1xuICAgICAgaWYgKCFwcm9wcy5hbGxvY2F0aW9uSWQpIHtcbiAgICAgICAgdGhpcy5laXAgPSBuZXcgQ2ZuRUlQKHRoaXMsICdFSVAnLCB7XG4gICAgICAgICAgZG9tYWluOiAndnBjJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGFJZCA9IHRoaXMuZWlwLmF0dHJBbGxvY2F0aW9uSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhSWQgPSBwcm9wcy5hbGxvY2F0aW9uSWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5OYXRHYXRld2F5KHRoaXMsICdOQVRHYXRld2F5Jywge1xuICAgICAgc3VibmV0SWQ6IHByb3BzLnN1Ym5ldC5zdWJuZXRJZCxcbiAgICAgIGFsbG9jYXRpb25JZDogYUlkLFxuICAgICAgbWF4RHJhaW5EdXJhdGlvblNlY29uZHM6IHByb3BzLm1heERyYWluRHVyYXRpb24/LnRvU2Vjb25kcygpLFxuICAgICAgc2Vjb25kYXJ5QWxsb2NhdGlvbklkczogcHJvcHMuc2Vjb25kYXJ5QWxsb2NhdGlvbklkcyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICAgIHRoaXMubmF0R2F0ZXdheUlkID0gRmVhdHVyZUZsYWdzLm9mKHRoaXMpLmlzRW5hYmxlZChjeF9hcGkuVVNFX1JFU09VUkNFSURfRk9SX1ZQQ1YyX01JR1JBVElPTikgP1xuICAgICAgdGhpcy5yZXNvdXJjZS5yZWYgOiB0aGlzLnJlc291cmNlLmF0dHJOYXRHYXRld2F5SWQ7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gRmVhdHVyZUZsYWdzLm9mKHRoaXMpLmlzRW5hYmxlZChjeF9hcGkuVVNFX1JFU09VUkNFSURfRk9SX1ZQQ1YyX01JR1JBVElPTikgP1xuICAgICAgdGhpcy5yZXNvdXJjZS5yZWYgOiB0aGlzLnJlc291cmNlLmF0dHJOYXRHYXRld2F5SWQ7XG5cbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcbiAgICB0aGlzLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5zdWJuZXQuaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcGVlcmluZyBjb25uZWN0aW9uIGJldHdlZW4gdHdvIFZQQ3NcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6VlBDUGVlcmluZ0Nvbm5lY3Rpb25cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFZQQ1BlZXJpbmdDb25uZWN0aW9uIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1lYzItYWxwaGEuVlBDUGVlcmluZ0Nvbm5lY3Rpb24nO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIHBlZXJpbmcgY29ubmVjdGlvbiBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmblZQQ1BlZXJpbmdDb25uZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUENQZWVyaW5nQ29ubmVjdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMucm91dGVyVHlwZSA9IFJvdXRlclR5cGUuVlBDX1BFRVJJTkdfQ09OTkVDVElPTjtcblxuICAgIGNvbnN0IGlzQ3Jvc3NBY2NvdW50ID0gcHJvcHMucmVxdWVzdG9yVnBjLm93bmVyQWNjb3VudElkICE9PSBwcm9wcy5hY2NlcHRvclZwYy5vd25lckFjY291bnRJZDtcblxuICAgIGlmICghaXNDcm9zc0FjY291bnQgJiYgcHJvcHMucGVlclJvbGVBcm4pIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ3BlZXJSb2xlQXJuIGlzIG5vdCBuZWVkZWQgZm9yIHNhbWUgYWNjb3VudCBwZWVyaW5nJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ3Jvc3NBY2NvdW50ICYmICFwcm9wcy5wZWVyUm9sZUFybikge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignQ3Jvc3MgYWNjb3VudCBWUEMgcGVlcmluZyByZXF1aXJlcyBwZWVyUm9sZUFybicsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IG92ZXJsYXAgPSB0aGlzLnZhbGlkYXRlVnBjQ2lkck92ZXJsYXAocHJvcHMucmVxdWVzdG9yVnBjLCBwcm9wcy5hY2NlcHRvclZwYyk7XG4gICAgaWYgKG92ZXJsYXApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0NJRFIgYmxvY2sgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggZWFjaCBvdGhlciBmb3IgZXN0YWJsaXNoaW5nIGEgcGVlcmluZyBjb25uZWN0aW9uJywgdGhpcyk7XG4gICAgfVxuICAgIGlmIChwcm9wcy52cGNQZWVyaW5nQ29ubmVjdGlvbk5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcy52cGNQZWVyaW5nQ29ubmVjdGlvbk5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuVlBDUGVlcmluZ0Nvbm5lY3Rpb24odGhpcywgJ1ZQQ1BlZXJpbmdDb25uZWN0aW9uJywge1xuICAgICAgdnBjSWQ6IHByb3BzLnJlcXVlc3RvclZwYy52cGNJZCxcbiAgICAgIHBlZXJWcGNJZDogcHJvcHMuYWNjZXB0b3JWcGMudnBjSWQsXG4gICAgICBwZWVyT3duZXJJZDogcHJvcHMuYWNjZXB0b3JWcGMub3duZXJBY2NvdW50SWQsXG4gICAgICBwZWVyUmVnaW9uOiBwcm9wcy5hY2NlcHRvclZwYy5yZWdpb24sXG4gICAgICBwZWVyUm9sZUFybjogaXNDcm9zc0FjY291bnQgPyBwcm9wcy5wZWVyUm9sZUFybiA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIHRoaXMucm91dGVyVGFyZ2V0SWQgPSB0aGlzLnJlc291cmNlLmF0dHJJZDtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgaWYgdGhlIHByb3ZpZGVkIElQdjQgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBDSURSIGJsb2NrcyB3aXRoaW4gdGhlIGdpdmVuIFZQQy5cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RvclZwYyBUaGUgVlBDIG9mIHRoZSByZXF1ZXN0b3IuXG4gICAqIEBwYXJhbSBhY2NlcHRvclZwYyBUaGUgVlBDIG9mIHRoZSBhY2NlcHRvci5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgSVB2NCBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZWFjaCBvdGhlciBmb3IgdHdvIFZQQ3MsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVnBjQ2lkck92ZXJsYXAocmVxdWVzdG9yVnBjOiBJVnBjVjIsIGFjY2VwdG9yVnBjOiBJVnBjVjIpOiBib29sZWFuIHtcbiAgICBjb25zdCByZXF1ZXN0b3JDaWRycyA9IFtyZXF1ZXN0b3JWcGMuaXB2NENpZHJCbG9ja107XG4gICAgY29uc3QgYWNjZXB0b3JDaWRycyA9IFthY2NlcHRvclZwYy5pcHY0Q2lkckJsb2NrXTtcblxuICAgIGlmIChyZXF1ZXN0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICByZXF1ZXN0b3JDaWRycy5wdXNoKC4uLnJlcXVlc3RvclZwYy5zZWNvbmRhcnlDaWRyQmxvY2tcbiAgICAgICAgLm1hcChibG9jayA9PiBibG9jay5jaWRyQmxvY2spXG4gICAgICAgIC5maWx0ZXIoKGNpZHIpOiBjaWRyIGlzIHN0cmluZyA9PiBjaWRyICE9PSB1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBpZiAoYWNjZXB0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICBhY2NlcHRvckNpZHJzLnB1c2goLi4uYWNjZXB0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrXG4gICAgICAgIC5tYXAoYmxvY2sgPT4gYmxvY2suY2lkckJsb2NrKVxuICAgICAgICAuZmlsdGVyKChjaWRyKTogY2lkciBpcyBzdHJpbmcgPT4gY2lkciAhPT0gdW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCByZXF1ZXN0b3JDaWRyIG9mIHJlcXVlc3RvckNpZHJzKSB7XG4gICAgICBjb25zdCByZXF1ZXN0b3JSYW5nZSA9IG5ldyBDaWRyQmxvY2socmVxdWVzdG9yQ2lkcik7XG4gICAgICBjb25zdCByZXF1ZXN0b3JJcFJhbmdlOiBbc3RyaW5nLCBzdHJpbmddID0gW3JlcXVlc3RvclJhbmdlLm1pbklwKCksIHJlcXVlc3RvclJhbmdlLm1heElwKCldO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY2VwdG9yQ2lkciBvZiBhY2NlcHRvckNpZHJzKSB7XG4gICAgICAgIGNvbnN0IGFjY2VwdG9yUmFuZ2UgPSBuZXcgQ2lkckJsb2NrKGFjY2VwdG9yQ2lkcik7XG4gICAgICAgIGNvbnN0IGFjY2VwdG9ySXBSYW5nZTogW3N0cmluZywgc3RyaW5nXSA9IFthY2NlcHRvclJhbmdlLm1pbklwKCksIGFjY2VwdG9yUmFuZ2UubWF4SXAoKV07XG5cbiAgICAgICAgaWYgKHJlcXVlc3RvclJhbmdlLnJhbmdlc092ZXJsYXAoYWNjZXB0b3JJcFJhbmdlLCByZXF1ZXN0b3JJcFJhbmdlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgZW5kcG9pbnQgb3IgZ2F0ZXdheSBiZWluZyB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVUYXJnZXRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSByb3V0ZSB0YXJnZXQuIFRoaXMgaXMgdXNlZCBmb3IgdGFyZ2V0cyBzdWNoIGFzXG4gICAqIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgb3IgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YXJnZXQgaXMgbm90IHNldCB0byBhIGdhdGV3YXksIGluIHRoaXMgY2FzZSBhbiBlbmRwb2ludCBpcyBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5PzogSVJvdXRlVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgcm91dGUgdGFyZ2V0LiBUaGlzIGlzIHVzZWQgZm9yIHRhcmdldHMgc3VjaCBhc1xuICAgKiBWUEMgZW5kcG9pbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRhcmdldCBpcyBub3Qgc2V0IHRvIGFuIGVuZHBvaW50LCBpbiB0aGlzIGNhc2UgYSBnYXRld2F5IGlzIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50PzogSVZwY0VuZHBvaW50O1xufVxuXG4vKipcbiAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvdXRlVGFyZ2V0VHlwZSB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSByb3V0ZSB0YXJnZXQuIFRoaXMgaXMgdXNlZCBmb3IgdGFyZ2V0cyBzdWNoIGFzXG4gICAqIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgb3IgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YXJnZXQgaXMgbm90IHNldCB0byBhIGdhdGV3YXksIGluIHRoaXMgY2FzZSBhbiBlbmRwb2ludCBpcyBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5PzogSVJvdXRlVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgcm91dGUgdGFyZ2V0LiBUaGlzIGlzIHVzZWQgZm9yIHRhcmdldHMgc3VjaCBhc1xuICAgKiBWUEMgZW5kcG9pbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRhcmdldCBpcyBub3Qgc2V0IHRvIGFuIGVuZHBvaW50LCBpbiB0aGlzIGNhc2UgYSBnYXRld2F5IGlzIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50PzogSVZwY0VuZHBvaW50O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBSb3V0ZVRhcmdldFByb3BzKSB7XG4gICAgdGhpcy5nYXRld2F5ID0gcHJvcHMuZ2F0ZXdheTtcbiAgICB0aGlzLmVuZHBvaW50ID0gcHJvcHMuZW5kcG9pbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gZGVmaW5lIGEgcm91dGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlVjIgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhlIHJvdXRlLlxuICAgKiBAYXR0cmlidXRlIHJvdXRlVGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKlxuICAgKiBSb3V0aW5nIGRlY2lzaW9ucyBhcmUgYmFzZWQgb24gdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2guXG4gICAqIFRPRE86IExvb2sgZm9yIHN0cm9uZyBJUCB0eXBlIGltcGxlbWVudGF0aW9uIGhlcmUuXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSBvciBlbmRwb2ludCB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIHJvdXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlUHJvcHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhlIHJvdXRlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlIHJvdXRlVGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKlxuICAgKiBSb3V0aW5nIGRlY2lzaW9ucyBhcmUgYmFzZWQgb24gdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2guXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSBvciBlbmRwb2ludCB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZTtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIHJvdXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb3Zpc2lvbmVkIHdpdGhvdXQgYSByb3V0ZSBuYW1lXG4gICAqL1xuICByZWFkb25seSByb3V0ZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyByb3V0ZSB3aXRoIGFkZGVkIGZ1bmN0aW9uYWxpdHkuXG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlJvdXRlXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBSb3V0ZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVjIge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1lYzItYWxwaGEuUm91dGUnO1xuICAvKipcbiAgICogVGhlIElQdjQgb3IgSVB2NiBDSURSIGJsb2NrIHVzZWQgZm9yIHRoZSBkZXN0aW5hdGlvbiBtYXRjaC5cbiAgICpcbiAgICogUm91dGluZyBkZWNpc2lvbnMgYXJlIGJhc2VkIG9uIHRoZSBtb3N0IHNwZWNpZmljIG1hdGNoLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZTtcblxuICAvKipcbiAgICogVGhlIHJvdXRlIHRhYmxlIGZvciB0aGUgcm91dGUuXG4gICAqIEBhdHRyaWJ1dGUgcm91dGVUYWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByb3V0ZXIgdGhlIHJvdXRlIGlzIHRhcmdldGluZ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSByb3V0ZSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U/OiBDZm5Sb3V0ZTtcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gY2lkciBibG9jayBmb3IgaXB2NlxuICAgKi9cbiAgcHJpdmF0ZSBkZXN0aW5hdGlvbklwdjZDaWRyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBjaWRyIGJsb2NrIGZvciBpcHY0XG4gICAqL1xuICBwcml2YXRlIGRlc3RpbmF0aW9uSXB2NENpZHI/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvdXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgdGhpcy50YXJnZXQgPSBwcm9wcy50YXJnZXQ7XG4gICAgdGhpcy5yb3V0ZVRhYmxlID0gcHJvcHMucm91dGVUYWJsZTtcbiAgICB0aGlzLmRlc3RpbmF0aW9uID0gcHJvcHMuZGVzdGluYXRpb247XG4gICAgY29uc3QgaXNEZXN0aW5hdGlvbklwdjQgPSBOZXR3b3JrVXRpbHMudmFsaWRJcChwcm9wcy5kZXN0aW5hdGlvbik7XG4gICAgaWYgKCFpc0Rlc3RpbmF0aW9uSXB2NCkge1xuICAgICAgLy8gVE9ETyBWYWxpZGF0ZSBmb3IgSVB2NiBDSURSIHJhbmdlXG4gICAgICB0aGlzLmRlc3RpbmF0aW9uSXB2NkNpZHIgPSBwcm9wcy5kZXN0aW5hdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbklwdjRDaWRyID0gcHJvcHMuZGVzdGluYXRpb247XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFyZ2V0LmdhdGV3YXk/LnJvdXRlclR5cGUgPT09IFJvdXRlclR5cGUuRUdSRVNTX09OTFlfSU5URVJORVRfR0FURVdBWSAmJiBpc0Rlc3RpbmF0aW9uSXB2NCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRWdyZXNzIG9ubHkgaW50ZXJuZXQgZ2F0ZXdheSBkb2VzIG5vdCBzdXBwb3J0IElQdjQgcm91dGluZycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICgocHJvcHMudGFyZ2V0LmdhdGV3YXkgJiYgcHJvcHMudGFyZ2V0LmVuZHBvaW50KSB8fCAoIXByb3BzLnRhcmdldC5nYXRld2F5ICYmICFwcm9wcy50YXJnZXQuZW5kcG9pbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdFeGFjdGx5IG9uZSBvZiBgZ2F0ZXdheWAgb3IgYGVuZHBvaW50YCBtdXN0IGJlIHNwZWNpZmllZC4nLCB0aGlzKTtcbiAgICB9XG4gICAgdGhpcy50YXJnZXRSb3V0ZXJUeXBlID0gdGhpcy50YXJnZXQuZ2F0ZXdheSA/IHRoaXMudGFyZ2V0LmdhdGV3YXkucm91dGVyVHlwZSA6IFJvdXRlclR5cGUuVlBDX0VORFBPSU5UO1xuICAgIC8vIEdhdGV3YXkgZ2VuZXJhdGVzIHJvdXRlIGF1dG9tYXRpY2FsbHkgdmlhIGl0cyBSb3V0ZVRhYmxlLCB0aHVzIHdlIGRvbid0IG5lZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc291cmNlIGZvciBpdFxuICAgIGlmICghKHRoaXMudGFyZ2V0LmVuZHBvaW50IGluc3RhbmNlb2YgR2F0ZXdheVZwY0VuZHBvaW50KSkge1xuICAgICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Sb3V0ZSh0aGlzLCAnUm91dGUnLCB7XG4gICAgICAgIHJvdXRlVGFibGVJZDogdGhpcy5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCxcbiAgICAgICAgZGVzdGluYXRpb25DaWRyQmxvY2s6IHRoaXMuZGVzdGluYXRpb25JcHY0Q2lkcixcbiAgICAgICAgZGVzdGluYXRpb25JcHY2Q2lkckJsb2NrOiB0aGlzLmRlc3RpbmF0aW9uSXB2NkNpZHIsXG4gICAgICAgIFtyb3V0ZXJUeXBlVG9Qcm9wTmFtZSh0aGlzLnRhcmdldFJvdXRlclR5cGUpXTogdGhpcy50YXJnZXQuZ2F0ZXdheSA/IHRoaXMudGFyZ2V0LmdhdGV3YXkucm91dGVyVGFyZ2V0SWQgOlxuICAgICAgICAgIHRoaXMudGFyZ2V0LmVuZHBvaW50ID8gdGhpcy50YXJnZXQuZW5kcG9pbnQudnBjRW5kcG9pbnRJZCA6IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICAvLyBDcmVhdGUgYSByb3V0ZSBvbmx5IGFmdGVyIHRhcmdldCBnYXRld2F5IG9yIGVuZHBvaW50IGlzIGNyZWF0ZWRcbiAgICBpZiAodGhpcy50YXJnZXQuZ2F0ZXdheSkge1xuICAgICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy50YXJnZXQuZ2F0ZXdheSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRhcmdldC5lbmRwb2ludCkge1xuICAgICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy50YXJnZXQuZW5kcG9pbnQpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGEgcm91dGUgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVUYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjVjI7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSByb3V0ZSB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRob3V0IGEgcm91dGUgdGFibGUgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJvdXRlIHRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIFZQQ1xuICogQHJlc291cmNlIEFXUzo6RUMyOjpSb3V0ZVRhYmxlXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBSb3V0ZVRhYmxlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYWJsZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWVjMi1hbHBoYS5Sb3V0ZVRhYmxlJztcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFibGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm91dGVUYWJsZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb3V0ZSB0YWJsZSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmblJvdXRlVGFibGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvdXRlVGFibGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblJvdXRlVGFibGUodGhpcywgJ1JvdXRlVGFibGUnLCB7XG4gICAgICB2cGNJZDogcHJvcHMudnBjLnZwY0lkLFxuICAgIH0pO1xuICAgIGlmIChwcm9wcy5yb3V0ZVRhYmxlTmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoTkFNRV9UQUcsIHByb3BzLnJvdXRlVGFibGVOYW1lKTtcbiAgICB9XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlVGFibGVJZCA9IEZlYXR1cmVGbGFncy5vZih0aGlzKS5pc0VuYWJsZWQoY3hfYXBpLlVTRV9SRVNPVVJDRUlEX0ZPUl9WUENWMl9NSUdSQVRJT04pID9cbiAgICAgIHRoaXMucmVzb3VyY2UucmVmIDogdGhpcy5yZXNvdXJjZS5hdHRyUm91dGVUYWJsZUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgY3VzdG9tIHJvdXRlIHRvIHRoZSByb3V0ZSB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIGRlc3RpbmF0aW9uIFRoZSBJUHY0IG9yIElQdjYgQ0lEUiBibG9jayB1c2VkIGZvciB0aGUgZGVzdGluYXRpb24gbWF0Y2guXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIGdhdGV3YXkgb3IgZW5kcG9pbnQgdGFyZ2V0ZWQgYnkgdGhlIHJvdXRlLlxuICAgKiBAcGFyYW0gcm91dGVOYW1lIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSByb3V0ZS5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRSb3V0ZShpZDogc3RyaW5nLCBkZXN0aW5hdGlvbjogc3RyaW5nLCB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZSwgcm91dGVOYW1lPzogc3RyaW5nKSB7XG4gICAgbmV3IFJvdXRlKHRoaXMsIGlkLCB7XG4gICAgICByb3V0ZVRhYmxlOiB0aGlzLFxuICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxuICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICByb3V0ZU5hbWU6IHJvdXRlTmFtZSxcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByb3V0ZXJUeXBlVG9Qcm9wTmFtZShyb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlKSB7XG4gIHJldHVybiAoe1xuICAgIFtSb3V0ZXJUeXBlLkNBUlJJRVJfR0FURVdBWV06ICdjYXJyaWVyR2F0ZXdheUlkJyxcbiAgICBbUm91dGVyVHlwZS5FR1JFU1NfT05MWV9JTlRFUk5FVF9HQVRFV0FZXTogJ2VncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlJZCcsXG4gICAgW1JvdXRlclR5cGUuR0FURVdBWV06ICdnYXRld2F5SWQnLFxuICAgIFtSb3V0ZXJUeXBlLklOU1RBTkNFXTogJ2luc3RhbmNlSWQnLFxuICAgIFtSb3V0ZXJUeXBlLkxPQ0FMX0dBVEVXQVldOiAnbG9jYWxHYXRld2F5SWQnLFxuICAgIFtSb3V0ZXJUeXBlLk5BVF9HQVRFV0FZXTogJ25hdEdhdGV3YXlJZCcsXG4gICAgW1JvdXRlclR5cGUuTkVUV09SS19JTlRFUkZBQ0VdOiAnbmV0d29ya0ludGVyZmFjZUlkJyxcbiAgICBbUm91dGVyVHlwZS5UUkFOU0lUX0dBVEVXQVldOiAndHJhbnNpdEdhdGV3YXlJZCcsXG4gICAgW1JvdXRlclR5cGUuVlBDX1BFRVJJTkdfQ09OTkVDVElPTl06ICd2cGNQZWVyaW5nQ29ubmVjdGlvbklkJyxcbiAgICBbUm91dGVyVHlwZS5WUENfRU5EUE9JTlRdOiAndnBjRW5kcG9pbnRJZCcsXG4gICAgW1JvdXRlclR5cGUuQ09SRV9ORVRXT1JLXTogJ2NvcmVOZXR3b3JrQXJuJyxcbiAgfSlbcm91dGVyVHlwZV07XG59XG4iXX0=
|
|
771
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBcUM7QUFDckMsaURBQWtTO0FBQ2xTLDJDQUFtSDtBQUNuSCw4RUFBOEY7QUFDOUYsMEVBQTBFO0FBRzFFLGlDQUFtRTtBQUduRTs7OztHQUlHO0FBQ0gsSUFBWSxtQkFTWDtBQVRELFdBQVksbUJBQW1CO0lBQzdCOztPQUVHO0lBQ0gsd0NBQWlCLENBQUE7SUFDakI7O09BRUc7SUFDSCwwQ0FBbUIsQ0FBQTtBQUNyQixDQUFDLEVBVFcsbUJBQW1CLG1DQUFuQixtQkFBbUIsUUFTOUI7QUE4TEQ7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBVyxNQUFNLENBQUM7QUFFaEM7OztHQUdHO0lBRVUseUJBQXlCOzRCQURyQyxvQ0FBa0I7Ozs7c0JBQzRCLGVBQVE7eUNBQWhCLFNBQVEsV0FBUTs7OztZQUF2RCw2S0FtQ0M7Ozs7O1FBbENDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsa0RBQWtELENBQUM7UUFDMUc7O1dBRUc7UUFDTSxVQUFVLENBQWE7UUFFaEM7O1dBRUc7UUFDTSxjQUFjLENBQVM7UUFFaEM7O1dBRUc7UUFDYSxRQUFRLENBQStCO1FBRXZELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBcUM7WUFDN0UsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O21EQW5CUix5QkFBeUI7Ozs7WUFvQmxDLG1DQUFtQztZQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsQyxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsRUFBRSxDQUFDO2dCQUN4QyxXQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7WUFDbkUsQ0FBQztZQUNELElBQUksQ0FBQyxVQUFVLEdBQUcsb0JBQVUsQ0FBQyw0QkFBNEIsQ0FBQztZQUUxRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksc0NBQTRCLENBQUMsSUFBSSxFQUFFLE1BQU0sRUFBRTtnQkFDN0QsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSzthQUN2QixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBRXZDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7U0FDNUM7O1lBbENVLHVEQUF5Qjs7Ozs7QUFBekIsOERBQXlCO0FBcUN0Qzs7O0dBR0c7SUFFVSxlQUFlOzRCQUQzQixvQ0FBa0I7Ozs7c0JBQ2tCLGVBQVE7K0JBQWhCLFNBQVEsV0FBUTs7OztZQUE3Qyw2S0FrREM7Ozs7O1FBakRDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsd0NBQXdDLENBQUM7UUFDaEc7O1dBRUc7UUFDTSxVQUFVLENBQWE7UUFFaEM7O1dBRUc7UUFDTSxjQUFjLENBQVM7UUFFaEM7O1dBRUc7UUFDYSxLQUFLLENBQVM7UUFFOUI7O1dBRUc7UUFDYSxRQUFRLENBQXFCO1FBRTdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMkI7WUFDbkUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O21EQXhCUixlQUFlOzs7O1lBeUJ4QixtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBVSxDQUFDLE9BQU8sQ0FBQztZQUVyQyxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksNEJBQWtCLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN4RCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1lBRXZDLElBQUksQ0FBQyxjQUFjLEdBQUcsbUJBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLG9CQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDO2dCQUNoRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxxQkFBcUIsQ0FBQztZQUMxRCxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBRTdCLElBQUksS0FBSyxDQUFDLG1CQUFtQixFQUFFLENBQUM7Z0JBQzlCLFdBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsQ0FBQztZQUN6RCxDQUFDO1lBRUQsSUFBSSxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN0QixXQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBRUQsSUFBSSxpQ0FBdUIsQ0FBQyxJQUFJLEVBQUUsY0FBYyxFQUFFO2dCQUNoRCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7Z0JBQ2pCLGlCQUFpQixFQUFFLElBQUksQ0FBQyxjQUFjO2FBQ3ZDLENBQUMsQ0FBQztTQUNKOztZQWpEVSx1REFBZTs7Ozs7QUFBZiwwQ0FBZTtBQW9ENUI7OztHQUdHO0lBRVUsWUFBWTs0QkFEeEIsb0NBQWtCOzs7O3NCQUNlLGVBQVE7NEJBQWhCLFNBQVEsV0FBUTs7OztZQUExQyw2S0E4RUM7Ozs7O1FBN0VDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcscUNBQXFDLENBQUM7UUFDN0Y7O1dBRUc7UUFDTSxVQUFVLENBQWE7UUFFaEM7O1dBRUc7UUFDTSxjQUFjLENBQVM7UUFFaEM7O1dBRUc7UUFDYSxLQUFLLENBQVM7UUFFOUI7O1dBRUc7UUFDYSxRQUFRLENBQWdCO1FBRXhDOztXQUVHO1FBQ2MsV0FBVyxDQUEwQjtRQUV0RDs7V0FFRztRQUNjLGlCQUFpQixDQUFnQztRQUVsRSxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdCO1lBQ2hFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUNmLFlBQVksRUFBRSxLQUFLLENBQUMsY0FBYzthQUNuQyxDQUFDLENBQUM7Ozs7OzttREFwQ00sWUFBWTs7OztZQXFDckIsbUNBQW1DO1lBQ25DLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWxDLElBQUksQ0FBQyxVQUFVLEdBQUcsb0JBQVUsQ0FBQyxPQUFPLENBQUM7WUFFckMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtnQkFDN0MsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2dCQUNoQixhQUFhLEVBQUUsS0FBSyxDQUFDLGFBQWE7YUFDbkMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUV2QyxJQUFJLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7WUFFckQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQztZQUM3QixJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksaUNBQXVCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtnQkFDL0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2dCQUNqQixZQUFZLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0I7YUFDN0MsQ0FBQyxDQUFDO1lBRUgsSUFBSSxLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7Z0JBQ3pCLFdBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDcEQsQ0FBQztZQUVELHFFQUFxRTtZQUNyRSxNQUFNLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxtQkFBbUIsSUFBSSxFQUFFLENBQUM7WUFDNUQsTUFBTSxPQUFPLEdBQUcsbUJBQW1CLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDeEYsTUFBTSxhQUFhLEdBQUcsSUFBQSx1QkFBZ0IsRUFBQyxPQUFPLENBQUMsQ0FBQztZQUVoRCxJQUFJLGFBQWEsQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQy9CLGtCQUFXLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLFlBQVksQ0FBQywyQ0FBMkMsRUFBRSxtQ0FBbUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1lBQ3JNLENBQUM7WUFFRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSx1Q0FBNkIsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUU7Z0JBQ25GLGFBQWE7Z0JBQ2IsWUFBWSxFQUFFLElBQUksQ0FBQyxjQUFjO2FBQ2xDLENBQUMsQ0FBQztZQUNILCtFQUErRTtZQUMvRSxpREFBaUQ7WUFDakQsZ0hBQWdIO1lBQ2hILElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUM3RDs7WUE3RVUsdURBQVk7Ozs7O0FBQVosb0NBQVk7QUFnRnpCOzs7R0FHRztJQUVVLFVBQVU7NEJBRHRCLG9DQUFrQjs7OztzQkFDYSxlQUFROzBCQUFoQixTQUFRLFdBQVE7Ozs7WUFBeEMsNktBNkZDOzs7OztRQTVGQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLG1DQUFtQyxDQUFDO1FBQzNGOzs7V0FHRztRQUNhLFlBQVksQ0FBUztRQUVyQzs7V0FFRztRQUNhLFVBQVUsQ0FBYTtRQUV2Qzs7V0FFRztRQUNhLGNBQWMsQ0FBUztRQUV2Qzs7OztXQUlHO1FBQ2EsZ0JBQWdCLENBQXVCO1FBRXZEOzs7OztXQUtHO1FBQ2EsZ0JBQWdCLENBQVk7UUFFNUM7O1dBRUc7UUFDYSxRQUFRLENBQWdCO1FBRXhDOztXQUVHO1FBQ2EsR0FBRyxDQUFVO1FBRTdCLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7WUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O21EQTdDUixVQUFVOzs7O1lBOENuQixtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbEMsSUFBSSxDQUFDLFVBQVUsR0FBRyxvQkFBVSxDQUFDLFdBQVcsQ0FBQztZQUV6QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLG1CQUFtQixDQUFDLE1BQU0sQ0FBQztZQUM3RSxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLGdCQUFnQixJQUFJLGVBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7WUFFeEUsSUFBSSxJQUFJLENBQUMsZ0JBQWdCLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3pELElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksRUFBRSxDQUFDO29CQUN0QyxNQUFNLElBQUksc0JBQWUsQ0FBQyxvQ0FBb0MsRUFBRSxJQUFJLENBQUMsQ0FBQztnQkFDeEUsQ0FBQztZQUNILENBQUM7WUFFRCxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDekIsV0FBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsQ0FBQztZQUNyRCxDQUFDO1lBRUQsc0RBQXNEO1lBQ3RELElBQUksR0FBdUIsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxnQkFBZ0IsS0FBSyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDekQsSUFBSSxDQUFDLEtBQUssQ0FBQyxZQUFZLEVBQUUsQ0FBQztvQkFDeEIsSUFBSSxDQUFDLEdBQUcsR0FBRyxJQUFJLGdCQUFNLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTt3QkFDakMsTUFBTSxFQUFFLEtBQUs7cUJBQ2QsQ0FBQyxDQUFDO29CQUNILEdBQUcsR0FBRyxJQUFJLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO2dCQUNsQyxDQUFDO3FCQUFNLENBQUM7b0JBQ04sR0FBRyxHQUFHLEtBQUssQ0FBQyxZQUFZLENBQUM7Z0JBQzNCLENBQUM7WUFDSCxDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtnQkFDcEQsUUFBUSxFQUFFLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUTtnQkFDL0IsWUFBWSxFQUFFLEdBQUc7Z0JBQ2pCLHVCQUF1QixFQUFFLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUU7Z0JBQzVELHNCQUFzQixFQUFFLEtBQUssQ0FBQyxzQkFBc0I7Z0JBQ3BELEdBQUcsS0FBSzthQUNULENBQUMsQ0FBQztZQUNILElBQUksQ0FBQyxZQUFZLEdBQUcsbUJBQVksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDLG9CQUFNLENBQUMsa0NBQWtDLENBQUMsQ0FBQyxDQUFDO2dCQUM5RixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQkFBZ0IsQ0FBQztZQUVyRCxJQUFJLENBQUMsY0FBYyxHQUFHLG1CQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxvQkFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQztnQkFDaEcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7WUFFckQsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUN2QyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1NBQ2hGOztZQTVGVSx1REFBVTs7Ozs7QUFBVixnQ0FBVTtBQStGdkI7OztHQUdHO0lBRVUsb0JBQW9COzRCQURoQyxvQ0FBa0I7Ozs7c0JBQ3VCLGVBQVE7b0NBQWhCLFNBQVEsV0FBUTs7OztZQUFsRCw2S0ErRkM7Ozs7O1FBOUZDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsNkNBQTZDLENBQUM7UUFDckc7O1dBRUc7UUFDTSxVQUFVLENBQWE7UUFFaEM7O1dBRUc7UUFDTSxjQUFjLENBQVM7UUFFaEM7O1dBRUc7UUFDYSxRQUFRLENBQTBCO1FBRWxELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZ0M7WUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O21EQW5CUixvQkFBb0I7Ozs7WUFvQjdCLG1DQUFtQztZQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsQyxJQUFJLENBQUMsVUFBVSxHQUFHLG9CQUFVLENBQUMsc0JBQXNCLENBQUM7WUFFcEQsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLFlBQVksQ0FBQyxjQUFjLEtBQUssS0FBSyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUM7WUFFOUYsSUFBSSxDQUFDLGNBQWMsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7Z0JBQ3pDLE1BQU0sSUFBSSxzQkFBZSxDQUFDLG9EQUFvRCxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3hGLENBQUM7WUFFRCxJQUFJLGNBQWMsSUFBSSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsQ0FBQztnQkFDekMsTUFBTSxJQUFJLHNCQUFlLENBQUMsZ0RBQWdELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDcEYsQ0FBQztZQUVELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUFFLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNuRixJQUFJLE9BQU8sRUFBRSxDQUFDO2dCQUNaLE1BQU0sSUFBSSxzQkFBZSxDQUFDLHFGQUFxRixFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3pILENBQUM7WUFDRCxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxDQUFDO2dCQUNuQyxXQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLHdCQUF3QixDQUFDLENBQUM7WUFDOUQsQ0FBQztZQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxpQ0FBdUIsQ0FBQyxJQUFJLEVBQUUsc0JBQXNCLEVBQUU7Z0JBQ3hFLEtBQUssRUFBRSxLQUFLLENBQUMsWUFBWSxDQUFDLEtBQUs7Z0JBQy9CLFNBQVMsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLEtBQUs7Z0JBQ2xDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLGNBQWM7Z0JBQzdDLFVBQVUsRUFBRSxLQUFLLENBQUMsV0FBVyxDQUFDLE1BQU07Z0JBQ3BDLFdBQVcsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVM7YUFDNUQsQ0FBQyxDQUFDO1lBRUgsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQztZQUMzQyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDO1NBQ3hDO1FBRUQ7Ozs7Ozs7V0FPRztRQUNLLHNCQUFzQixDQUFDLFlBQW9CLEVBQUUsV0FBbUI7WUFDdEUsTUFBTSxjQUFjLEdBQUcsQ0FBQyxZQUFZLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDcEQsTUFBTSxhQUFhLEdBQUcsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQUM7WUFFbEQsSUFBSSxZQUFZLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztnQkFDcEMsY0FBYyxDQUFDLElBQUksQ0FBQyxHQUFHLFlBQVksQ0FBQyxrQkFBa0I7cUJBQ25ELEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUM7cUJBQzdCLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBa0IsRUFBRSxDQUFDLElBQUksS0FBSyxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQzNELENBQUM7WUFFRCxJQUFJLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO2dCQUNuQyxhQUFhLENBQUMsSUFBSSxDQUFDLEdBQUcsV0FBVyxDQUFDLGtCQUFrQjtxQkFDakQsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztxQkFDN0IsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFrQixFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7WUFDM0QsQ0FBQztZQUVELEtBQUssTUFBTSxhQUFhLElBQUksY0FBYyxFQUFFLENBQUM7Z0JBQzNDLE1BQU0sY0FBYyxHQUFHLElBQUksZ0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQztnQkFDcEQsTUFBTSxnQkFBZ0IsR0FBcUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLEVBQUUsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7Z0JBRTVGLEtBQUssTUFBTSxZQUFZLElBQUksYUFBYSxFQUFFLENBQUM7b0JBQ3pDLE1BQU0sYUFBYSxHQUFHLElBQUksZ0JBQVMsQ0FBQyxZQUFZLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxlQUFlLEdBQXFCLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUFFLGFBQWEsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUV6RixJQUFJLGNBQWMsQ0FBQyxhQUFhLENBQUMsZUFBZSxFQUFFLGdCQUFnQixDQUFDLEVBQUUsQ0FBQzt3QkFDcEUsT0FBTyxJQUFJLENBQUM7b0JBQ2QsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sS0FBSyxDQUFDO1NBQ2Q7O1lBOUZVLHVEQUFvQjs7Ozs7QUFBcEIsb0RBQW9CO0FBc0hqQzs7R0FFRztBQUNILE1BQWEsZUFBZTs7SUFDMUI7Ozs7O09BS0c7SUFDTSxPQUFPLENBQWdCO0lBRWhDOzs7OztPQUtHO0lBQ00sUUFBUSxDQUFnQjtJQUVqQyxZQUFZLEtBQXVCOzs7Ozs7K0NBakJ4QixlQUFlOzs7O1FBa0J4QixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUM7UUFDN0IsSUFBSSxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO0tBQ2hDOztBQXBCSCwwQ0FxQkM7QUF5REQ7OztHQUdHO0lBRVUsS0FBSzs0QkFEakIsb0NBQWtCOzs7O3NCQUNRLGVBQVE7cUJBQWhCLFNBQVEsV0FBUTs7OztZQUFuQyw2S0FxRkM7Ozs7O1FBcEZDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsOEJBQThCLENBQUM7UUFDdEY7Ozs7V0FJRztRQUNhLFdBQVcsQ0FBUztRQUVwQzs7V0FFRztRQUNhLE1BQU0sQ0FBa0I7UUFFeEM7OztXQUdHO1FBQ2EsVUFBVSxDQUFjO1FBRXhDOztXQUVHO1FBQ2EsZ0JBQWdCLENBQWE7UUFFN0M7O1dBRUc7UUFDYSxRQUFRLENBQVk7UUFFcEM7O1dBRUc7UUFDSyxtQkFBbUIsQ0FBVTtRQUVyQzs7V0FFRztRQUNLLG1CQUFtQixDQUFVO1FBRXJDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBaUI7WUFDekQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7O21EQTFDUixLQUFLOzs7O1lBMkNkLG1DQUFtQztZQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztZQUVsQyxJQUFJLENBQUMsTUFBTSxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7WUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUNyQyxNQUFNLGlCQUFpQixHQUFHLG1CQUFZLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUNsRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztnQkFDdkIsb0NBQW9DO2dCQUNwQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUMvQyxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxDQUFDLG1CQUFtQixHQUFHLEtBQUssQ0FBQyxXQUFXLENBQUM7WUFDL0MsQ0FBQztZQUVELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsVUFBVSxLQUFLLG9CQUFVLENBQUMsNEJBQTRCLElBQUksaUJBQWlCLEVBQUUsQ0FBQztnQkFDckcsTUFBTSxJQUFJLHNCQUFlLENBQUMsNERBQTRELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDaEcsQ0FBQztZQUVELElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztnQkFDekcsTUFBTSxJQUFJLHNCQUFlLENBQUMsMkRBQTJELEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDL0YsQ0FBQztZQUNELElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxvQkFBVSxDQUFDLFlBQVksQ0FBQztZQUN2RywrR0FBK0c7WUFDL0csSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLFlBQVksNEJBQWtCLENBQUMsRUFBRSxDQUFDO2dCQUMxRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksa0JBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFO29CQUMxQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZO29CQUMxQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CO29CQUM5Qyx3QkFBd0IsRUFBRSxJQUFJLENBQUMsbUJBQW1CO29CQUNsRCxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO3dCQUN2RyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJO2lCQUNuRSxDQUFDLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUV2QyxrRUFBa0U7WUFDbEUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO2dCQUN4QixJQUFJLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDaEQsQ0FBQztTQUNGOztZQXBGVSx1REFBSzs7Ozs7QUFBTCxzQkFBSztBQXdHbEI7OztHQUdHO0lBRVUsVUFBVTs0QkFEdEIsb0NBQWtCOzs7O3NCQUNhLGVBQVE7OzswQkFBaEIsU0FBUSxXQUFROzs7O29DQXFDckMsSUFBQSxrQ0FBYyxHQUFFO1lBQ2pCLDJLQUFPLFFBQVEsNkRBT2Q7WUE3Q0gsNktBOENDOzs7OztRQTdDQyxzQ0FBc0M7UUFDL0IsTUFBTSxDQUFVLHFCQUFxQixHQUFXLG1DQUFtQyxDQUFDO1FBQzNGOztXQUVHO1FBQ2EsWUFBWSxHQU5qQixtREFBVSxDQU1nQjtRQUVyQzs7V0FFRztRQUNhLFFBQVEsQ0FBZ0I7UUFFeEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFzQjtZQUM5RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7bURBZFIsVUFBVTs7OztZQWVuQixtQ0FBbUM7WUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFFbEMsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtnQkFDcEQsS0FBSyxFQUFFLEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBSzthQUN2QixDQUFDLENBQUM7WUFDSCxJQUFJLEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztnQkFDekIsV0FBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUNwRCxDQUFDO1lBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUV2QyxJQUFJLENBQUMsWUFBWSxHQUFHLG1CQUFZLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsQ0FBQyxvQkFBTSxDQUFDLGtDQUFrQyxDQUFDLENBQUMsQ0FBQztnQkFDOUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0JBQWdCLENBQUM7U0FDdEQ7UUFFRDs7Ozs7O1dBTUc7UUFFSSxRQUFRLENBQUMsRUFBVSxFQUFFLFdBQW1CLEVBQUUsTUFBdUIsRUFBRSxTQUFrQjs7Ozs7Ozs7OztZQUMxRixJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO2dCQUNsQixVQUFVLEVBQUUsSUFBSTtnQkFDaEIsV0FBVyxFQUFFLFdBQVc7Z0JBQ3hCLE1BQU0sRUFBRSxNQUFNO2dCQUNkLFNBQVMsRUFBRSxTQUFTO2FBQ3JCLENBQUMsQ0FBQztTQUNKOztZQTdDVSx1REFBVTs7Ozs7QUFBVixnQ0FBVTtBQWdEdkIsU0FBUyxvQkFBb0IsQ0FBQyxVQUFzQjtJQUNsRCxPQUFPLENBQUM7UUFDTixDQUFDLG9CQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsa0JBQWtCO1FBQ2hELENBQUMsb0JBQVUsQ0FBQyw0QkFBNEIsQ0FBQyxFQUFFLDZCQUE2QjtRQUN4RSxDQUFDLG9CQUFVLENBQUMsT0FBTyxDQUFDLEVBQUUsV0FBVztRQUNqQyxDQUFDLG9CQUFVLENBQUMsUUFBUSxDQUFDLEVBQUUsWUFBWTtRQUNuQyxDQUFDLG9CQUFVLENBQUMsYUFBYSxDQUFDLEVBQUUsZ0JBQWdCO1FBQzVDLENBQUMsb0JBQVUsQ0FBQyxXQUFXLENBQUMsRUFBRSxjQUFjO1FBQ3hDLENBQUMsb0JBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLG9CQUFvQjtRQUNwRCxDQUFDLG9CQUFVLENBQUMsZUFBZSxDQUFDLEVBQUUsa0JBQWtCO1FBQ2hELENBQUMsb0JBQVUsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLHdCQUF3QjtRQUM3RCxDQUFDLG9CQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsZUFBZTtRQUMxQyxDQUFDLG9CQUFVLENBQUMsWUFBWSxDQUFDLEVBQUUsZ0JBQWdCO0tBQzVDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztBQUNqQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY3hfYXBpIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ2ZuRUlQLCBDZm5FZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5LCBDZm5JbnRlcm5ldEdhdGV3YXksIENmbk5hdEdhdGV3YXksIENmblZQQ1BlZXJpbmdDb25uZWN0aW9uLCBDZm5Sb3V0ZSwgQ2ZuUm91dGVUYWJsZSwgQ2ZuVlBDR2F0ZXdheUF0dGFjaG1lbnQsIENmblZQTkdhdGV3YXksIENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uLCBHYXRld2F5VnBjRW5kcG9pbnQsIElSb3V0ZVRhYmxlLCBJVnBjRW5kcG9pbnQsIFJvdXRlclR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IEFubm90YXRpb25zLCBEdXJhdGlvbiwgRmVhdHVyZUZsYWdzLCBJUmVzb3VyY2UsIFJlc291cmNlLCBUYWdzLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhLCBNZXRob2RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIElEZXBlbmRhYmxlIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJU3VibmV0VjIgfSBmcm9tICcuL3N1Ym5ldC12Mic7XG5pbXBvcnQgeyBOZXR3b3JrVXRpbHMsIGFsbFJvdXRlVGFibGVJZHMsIENpZHJCbG9jayB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgeyBJVnBjVjIsIFZQTkdhdGV3YXlWMk9wdGlvbnMgfSBmcm9tICcuL3ZwYy12Mi1iYXNlJztcblxuLyoqXG4gKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgTkFUIGdhdGV3YXkgc3VwcG9ydHMgcHVibGljIG9yIHByaXZhdGUgY29ubmVjdGl2aXR5LlxuICogVGhlIGRlZmF1bHQgaXMgcHVibGljIGNvbm5lY3Rpdml0eS5cbiAqIFNlZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1uYXRnYXRld2F5Lmh0bWwjY2ZuLWVjMi1uYXRnYXRld2F5LWNvbm5lY3Rpdml0eXR5cGVcbiAqL1xuZXhwb3J0IGVudW0gTmF0Q29ubmVjdGl2aXR5VHlwZSB7XG4gIC8qKlxuICAgKiBTZXRzIENvbm5lY3Rpdml0eSB0eXBlIHRvIFBVQkxJQ1xuICAgKi9cbiAgUFVCTElDID0gJ3B1YmxpYycsXG4gIC8qKlxuICAgKiBTZXRzIENvbm5lY3Rpdml0eSB0eXBlIHRvIFBSSVZBVEVcbiAgICovXG4gIFBSSVZBVEUgPSAncHJpdmF0ZScsXG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHRvIGRlZmluZSBhIHJvdXRpbmcgdGFyZ2V0LCBzdWNoIGFzIGFuXG4gKiBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5IG9yIFZQQyBlbmRwb2ludC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUm91dGVUYXJnZXQgZXh0ZW5kcyBJRGVwZW5kYWJsZSB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByb3V0ZXIgdXNlZCBpbiB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclRhcmdldElkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBkZWZpbmUgYW4gZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5UHJvcHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRob3V0IGEgcmVzb3VyY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZWdyZXNzT25seUludGVybmV0R2F0ZXdheU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBkZWZpbmUgYW4gaW50ZXJuZXQgZ2F0ZXdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnRlcm5ldEdhdGV3YXlQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjVjI7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb3Zpc2lvbmVkIHdpdGhvdXQgYSByZXNvdXJjZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBpbnRlcm5ldEdhdGV3YXlOYW1lPzogc3RyaW5nO1xuXG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBkZWZpbmUgYSBWUE4gZ2F0ZXdheS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWUE5HYXRld2F5VjJQcm9wcyBleHRlbmRzIFZQTkdhdGV3YXlWMk9wdGlvbnMge1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBWUE4gZ2F0ZXdheS5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gZGVmaW5lIGEgTkFUIGdhdGV3YXkuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTmF0R2F0ZXdheU9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHN1Ym5ldCBpbiB3aGljaCB0aGUgTkFUIGdhdGV3YXkgaXMgbG9jYXRlZC5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldDogSVN1Ym5ldFYyO1xuXG4gIC8qKlxuICAgKiBBbGxvY2F0aW9uSUQgb2YgRWxhc3RpYyBJUCBhZGRyZXNzIHRoYXQncyBhc3NvY2lhdGVkIHdpdGggdGhlIE5BVCBnYXRld2F5LiBUaGlzIHByb3BlcnR5IGlzIHJlcXVpcmVkIGZvciBhIHB1YmxpYyBOQVRcbiAgICogZ2F0ZXdheSBhbmQgY2Fubm90IGJlIHNwZWNpZmllZCB3aXRoIGEgcHJpdmF0ZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhdHRyLmFsbG9jYXRpb25JRCBvZiBhIG5ldyBFbGFzdGljIElQIGNyZWF0ZWQgYnkgZGVmYXVsdFxuICAgKiAvL1RPRE86IEFERCBMMiBmb3IgZWxhc3RpYyBpcFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb2NhdGlvbklkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgTkFUIGdhdGV3YXkgc3VwcG9ydHMgcHVibGljIG9yIHByaXZhdGUgY29ubmVjdGl2aXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBOYXRDb25uZWN0aXZpdHlUeXBlLlB1YmxpY1xuICAgKi9cbiAgcmVhZG9ubHkgY29ubmVjdGl2aXR5VHlwZT86IE5hdENvbm5lY3Rpdml0eVR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB0aW1lIHRvIHdhaXQgYmVmb3JlIGZvcmNpYmx5IHJlbGVhc2luZyB0aGVcbiAgICogSVAgYWRkcmVzc2VzIGlmIGNvbm5lY3Rpb25zIGFyZSBzdGlsbCBpbiBwcm9ncmVzcy5cbiAgICpcbiAgICogQGRlZmF1bHQgMzUwc2Vjb25kc1xuICAgKi9cbiAgcmVhZG9ubHkgbWF4RHJhaW5EdXJhdGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpdmF0ZSBJUHY0IGFkZHJlc3MgdG8gYXNzaWduIHRvIHRoZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBJZiB5b3UgZG9uJ3QgcHJvdmlkZSBhbiBhZGRyZXNzLCBhIHByaXZhdGUgSVB2NCBhZGRyZXNzIHdpbGwgYmUgYXV0b21hdGljYWxseSBhc3NpZ25lZC5cbiAgICovXG4gIHJlYWRvbmx5IHByaXZhdGVJcEFkZHJlc3M/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBFSVAgYWxsb2NhdGlvbiBJRHMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3ZwYy9sYXRlc3QvdXNlcmd1aWRlL3ZwYy1uYXQtZ2F0ZXdheS5odG1sI25hdC1nYXRld2F5LWNyZWF0aW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc2Vjb25kYXJ5IGFsbG9jYXRpb24gSURzIGF0dGFjaGVkIHRvIE5BVEdXXG4gICAqXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlBbGxvY2F0aW9uSWRzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2Ygc2Vjb25kYXJ5IHByaXZhdGUgSVB2NCBhZGRyZXNzZXMgeW91XG4gICAqIHdhbnQgdG8gYXNzaWduIHRvIHRoZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogYFNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3NDb3VudGAgYW5kIGBTZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzZXNgIGNhbm5vdCBiZVxuICAgKiBzZXQgYXQgdGhlIHNhbWUgdGltZS5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLW5hdC1nYXRld2F5Lmh0bWwjbmF0LWdhdGV3YXktY3JlYXRpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzZWNvbmRhcnkgYWxsb2NhdGlvbiBJRHMgYXNzb2NpYXRlZCB3aXRoIE5BVEdXXG4gICAqL1xuICByZWFkb25seSBzZWNvbmRhcnlQcml2YXRlSXBBZGRyZXNzQ291bnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFNlY29uZGFyeSBwcml2YXRlIElQdjQgYWRkcmVzc2VzLlxuICAgKlxuICAgKiBgU2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc0NvdW50YCBhbmQgYFNlY29uZGFyeVByaXZhdGVJcEFkZHJlc3Nlc2AgY2Fubm90IGJlXG4gICAqIHNldCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtbmF0LWdhdGV3YXkuaHRtbCNuYXQtZ2F0ZXdheS1jcmVhdGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHNlY29uZGFyeSBwcml2YXRlIElwQWRkcmVzc2VzIGFzc29jaWF0ZWQgd2l0aCBOQVRHV1xuICAgKi9cbiAgcmVhZG9ubHkgc2Vjb25kYXJ5UHJpdmF0ZUlwQWRkcmVzc2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBOQVQgZ2F0ZXdheS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOQVRHVyBwcm92aXNpb25lZCB3aXRob3V0IGFueSBuYW1lXG4gICAqL1xuICByZWFkb25seSBuYXRHYXRld2F5TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIE5BVCBnYXRld2F5LlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5hdEdhdGV3YXlQcm9wcyBleHRlbmRzIE5hdEdhdGV3YXlPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDIGluIHdoaWNoIHRoZSBOQVQgZ2F0ZXdheSBpcyBsb2NhdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGVsYXN0aWMgaXAgYXNzb2NpYXRlZCwgcmVxdWlyZWQgaW4gY2FzZSBvZiBwdWJsaWMgY29ubmVjdGl2aXR5IGlmIGBBbGxvY2F0aW9uSWRgIGlzIG5vdCBkZWZpbmVkXG4gICAqL1xuICByZWFkb25seSB2cGM/OiBJVnBjVjI7XG59XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgYSBWUEMgcGVlcmluZyBjb25uZWN0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIHRoYXQgaXMgYWNjZXB0aW5nIHRoZSBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gICAqL1xuICByZWFkb25seSBhY2NlcHRvclZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBUaGUgcm9sZSBhcm4gY3JlYXRlZCBpbiB0aGUgYWNjZXB0b3IgYWNjb3VudC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwZWVyUm9sZUFybiBuZWVkZWQgaWYgbm90IGNyb3NzIGFjY291bnQgY29ubmVjdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcGVlclJvbGVBcm4/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcGVlcmluZyBjb25uZWN0aW9uIHByb3Zpc2lvbmVkIHdpdGhvdXQgYW55IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHZwY1BlZXJpbmdDb25uZWN0aW9uTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIFZQQyBwZWVyaW5nIGNvbm5lY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVlBDUGVlcmluZ0Nvbm5lY3Rpb25Qcm9wcyBleHRlbmRzIFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgVlBDIHRoYXQgaXMgcmVxdWVzdGluZyB0aGUgcGVlcmluZyBjb25uZWN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVxdWVzdG9yVnBjOiBJVnBjVjI7XG59XG5cbi8qKlxuICogTmFtZSB0YWcgY29uc3RhbnRcbiAqL1xuY29uc3QgTkFNRV9UQUc6IHN0cmluZyA9ICdOYW1lJztcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXlcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6RWdyZXNzT25seUludGVybmV0R2F0ZXdheVxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgRWdyZXNzT25seUludGVybmV0R2F0ZXdheSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVGFyZ2V0IHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtZWMyLWFscGhhLkVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXknO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZWdyZXNzLW9ubHkgaW50ZXJuZXQgZ2F0ZXdheSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmbkVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXk7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuZWdyZXNzT25seUludGVybmV0R2F0ZXdheU5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcy5lZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZSk7XG4gICAgfVxuICAgIHRoaXMucm91dGVyVHlwZSA9IFJvdXRlclR5cGUuRUdSRVNTX09OTFlfSU5URVJORVRfR0FURVdBWTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuRWdyZXNzT25seUludGVybmV0R2F0ZXdheSh0aGlzLCAnRUlHVycsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy52cGMudnBjSWQsXG4gICAgfSk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gdGhpcy5yZXNvdXJjZS5hdHRySWQ7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGFuIGludGVybmV0IGdhdGV3YXlcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6SW50ZXJuZXRHYXRld2F5XG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBJbnRlcm5ldEdhdGV3YXkgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElSb3V0ZVRhcmdldCB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWVjMi1hbHBoYS5JbnRlcm5ldEdhdGV3YXknO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFZQQyBmb3Igd2hpY2ggdG8gY3JlYXRlIHRoZSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBpbnRlcm5ldCBnYXRld2F5IENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuSW50ZXJuZXRHYXRld2F5O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbnRlcm5ldEdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLnJvdXRlclR5cGUgPSBSb3V0ZXJUeXBlLkdBVEVXQVk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmbkludGVybmV0R2F0ZXdheSh0aGlzLCAnSUdXJywge30pO1xuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSB0aGlzLnJlc291cmNlO1xuXG4gICAgdGhpcy5yb3V0ZXJUYXJnZXRJZCA9IEZlYXR1cmVGbGFncy5vZih0aGlzKS5pc0VuYWJsZWQoY3hfYXBpLlVTRV9SRVNPVVJDRUlEX0ZPUl9WUENWMl9NSUdSQVRJT04pID9cbiAgICAgIHRoaXMucmVzb3VyY2UucmVmIDogdGhpcy5yZXNvdXJjZS5hdHRySW50ZXJuZXRHYXRld2F5SWQ7XG4gICAgdGhpcy52cGNJZCA9IHByb3BzLnZwYy52cGNJZDtcblxuICAgIGlmIChwcm9wcy5pbnRlcm5ldEdhdGV3YXlOYW1lKSB7XG4gICAgICBUYWdzLm9mKHRoaXMpLmFkZChOQU1FX1RBRywgcHJvcHMuaW50ZXJuZXRHYXRld2F5TmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnZwYy52cGNOYW1lKSB7XG4gICAgICBUYWdzLm9mKHRoaXMpLmFkZCgnTmFtZScsIHByb3BzLnZwYy52cGNOYW1lKTtcbiAgICB9XG5cbiAgICBuZXcgQ2ZuVlBDR2F0ZXdheUF0dGFjaG1lbnQodGhpcywgJ0dXQXR0YWNobWVudCcsIHtcbiAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgICAgaW50ZXJuZXRHYXRld2F5SWQ6IHRoaXMucm91dGVyVGFyZ2V0SWQsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgdmlydHVhbCBwcml2YXRlIGdhdGV3YXlcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6VlBOR2F0ZXdheVxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgVlBOR2F0ZXdheVYyIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1lYzItYWxwaGEuVlBOR2F0ZXdheVYyJztcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFyZ2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVGFyZ2V0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBWUEMgZm9yIHdoaWNoIHRvIGNyZWF0ZSB0aGUgVlBOIGdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdnBjSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFZQTiBnYXRld2F5IENGTiByZXNvdXJjZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogQ2ZuVlBOR2F0ZXdheTtcblxuICAvKipcbiAgICogVGhlIFZQTiBHYXRld2F5IEF0dGFjaG1lbnRcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2F0dGFjaG1lbnQ6IENmblZQQ0dhdGV3YXlBdHRhY2htZW50O1xuXG4gIC8qKlxuICAgKiBUaGUgVlBOIEdhdGV3YXkgUm91dGUgUHJvcGFnYXRpb25cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX3JvdXRlUHJvcGFnYXRpb246IENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUE5HYXRld2F5VjJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy52cG5HYXRld2F5TmFtZSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMucm91dGVyVHlwZSA9IFJvdXRlclR5cGUuR0FURVdBWTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuVlBOR2F0ZXdheSh0aGlzLCAnSUdXJywge1xuICAgICAgdHlwZTogcHJvcHMudHlwZSxcbiAgICAgIGFtYXpvblNpZGVBc246IHByb3BzLmFtYXpvblNpZGVBc24sXG4gICAgfSk7XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gdGhpcy5yZXNvdXJjZS5hdHRyVnBuR2F0ZXdheUlkO1xuXG4gICAgdGhpcy52cGNJZCA9IHByb3BzLnZwYy52cGNJZDtcbiAgICB0aGlzLl9hdHRhY2htZW50ID0gbmV3IENmblZQQ0dhdGV3YXlBdHRhY2htZW50KHRoaXMsICdWUENWUE5HVycsIHtcbiAgICAgIHZwY0lkOiB0aGlzLnZwY0lkLFxuICAgICAgdnBuR2F0ZXdheUlkOiB0aGlzLnJlc291cmNlLmF0dHJWcG5HYXRld2F5SWQsXG4gICAgfSk7XG5cbiAgICBpZiAocHJvcHMudnBuR2F0ZXdheU5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcy52cG5HYXRld2F5TmFtZSk7XG4gICAgfVxuXG4gICAgLy8gUHJvcGFnYXRlIHJvdXRlcyBvbiByb3V0ZSB0YWJsZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSByaWdodCBzdWJuZXRzXG4gICAgY29uc3QgdnBuUm91dGVQcm9wYWdhdGlvbiA9IHByb3BzLnZwblJvdXRlUHJvcGFnYXRpb24gPz8gW107XG4gICAgY29uc3Qgc3VibmV0cyA9IHZwblJvdXRlUHJvcGFnYXRpb24ubWFwKHMgPT4gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHMocykuc3VibmV0cykuZmxhdCgpO1xuICAgIGNvbnN0IHJvdXRlVGFibGVJZHMgPSBhbGxSb3V0ZVRhYmxlSWRzKHN1Ym5ldHMpO1xuXG4gICAgaWYgKHJvdXRlVGFibGVJZHMubGVuZ3RoID09PSAwKSB7XG4gICAgICBBbm5vdGF0aW9ucy5vZihzY29wZSkuYWRkV2FybmluZ1YyKCdAYXdzLWNkazphd3MtZWMyLWVscGhhOmVuYWJsZVZwbkdhdGV3YXlWMicsIGBObyBzdWJuZXRzIG1hdGNoaW5nIHNlbGVjdGlvbjogJyR7SlNPTi5zdHJpbmdpZnkodnBuUm91dGVQcm9wYWdhdGlvbil9Jy4gU2VsZWN0IG90aGVyIHN1Ym5ldHMgdG8gYWRkIHJvdXRlcyB0by5gKTtcbiAgICB9XG5cbiAgICB0aGlzLl9yb3V0ZVByb3BhZ2F0aW9uID0gbmV3IENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uKHRoaXMsICdSb3V0ZVByb3BhZ2F0aW9uJywge1xuICAgICAgcm91dGVUYWJsZUlkcyxcbiAgICAgIHZwbkdhdGV3YXlJZDogdGhpcy5yb3V0ZXJUYXJnZXRJZCxcbiAgICB9KTtcbiAgICAvLyBUaGUgQVdTOjpFQzI6OlZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uIHJlc291cmNlIGNhbm5vdCB1c2UgdGhlIFZQTiBnYXRld2F5XG4gICAgLy8gdW50aWwgaXQgaGFzIHN1Y2Nlc3NmdWxseSBhdHRhY2hlZCB0byB0aGUgVlBDLlxuICAgIC8vIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwbi1nYXRld2F5cm91dGVwcm9wLmh0bWxcbiAgICB0aGlzLl9yb3V0ZVByb3BhZ2F0aW9uLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLl9hdHRhY2htZW50KTtcbiAgfVxufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBuZXR3b3JrIGFkZHJlc3MgdHJhbnNsYXRpb24gKE5BVCkgZ2F0ZXdheVxuICogQHJlc291cmNlIEFXUzo6RUMyOjpOYXRHYXRld2F5XG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBOYXRHYXRld2F5IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1lYzItYWxwaGEuTmF0R2F0ZXdheSc7XG4gIC8qKlxuICAgKiBJZCBvZiB0aGUgTmF0R2F0ZXdheVxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmF0R2F0ZXdheUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHJvdXRlciB1c2VkIGluIHRoZSByb3V0ZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhcmdldC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0aGUgTkFUIGdhdGV3YXkgc3VwcG9ydHMgcHVibGljIG9yIHByaXZhdGUgY29ubmVjdGl2aXR5LlxuICAgKlxuICAgKiBAZGVmYXVsdCBwdWJsaWNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aXZpdHlUeXBlPzogTmF0Q29ubmVjdGl2aXR5VHlwZTtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gd2FpdCBiZWZvcmUgZm9yY2libHkgcmVsZWFzaW5nIHRoZVxuICAgKiBJUCBhZGRyZXNzZXMgaWYgY29ubmVjdGlvbnMgYXJlIHN0aWxsIGluIHByb2dyZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAnMzUwIHNlY29uZHMnXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWF4RHJhaW5EdXJhdGlvbj86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgTkFUIGdhdGV3YXkgQ0ZOIHJlc291cmNlLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBDZm5OYXRHYXRld2F5O1xuXG4gIC8qKlxuICAgKiBFbGFzdGljIElQIGNyZWF0ZWQgZm9yIGFsbG9jYXRpb25cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBlaXA/OiBDZm5FSVA7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE5hdEdhdGV3YXlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLnJvdXRlclR5cGUgPSBSb3V0ZXJUeXBlLk5BVF9HQVRFV0FZO1xuXG4gICAgdGhpcy5jb25uZWN0aXZpdHlUeXBlID0gcHJvcHMuY29ubmVjdGl2aXR5VHlwZSB8fCBOYXRDb25uZWN0aXZpdHlUeXBlLlBVQkxJQztcbiAgICB0aGlzLm1heERyYWluRHVyYXRpb24gPSBwcm9wcy5tYXhEcmFpbkR1cmF0aW9uIHx8IER1cmF0aW9uLnNlY29uZHMoMzUwKTtcblxuICAgIGlmICh0aGlzLmNvbm5lY3Rpdml0eVR5cGUgPT09IE5hdENvbm5lY3Rpdml0eVR5cGUuUFVCTElDKSB7XG4gICAgICBpZiAoIXByb3BzLnZwYyAmJiAhcHJvcHMuYWxsb2NhdGlvbklkKSB7XG4gICAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0VpdGhlciBwcm92aWRlIHZwYyBvciBhbGxvY2F0aW9uSWQnLCB0aGlzKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAocHJvcHMubmF0R2F0ZXdheU5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcz8ubmF0R2F0ZXdheU5hbWUpO1xuICAgIH1cblxuICAgIC8vIElmIHVzZXIgZG9lcyBub3QgcHJvdmlkZSBFSVAsIGdlbmVyYXRlIG9uZSBmb3IgdGhlbVxuICAgIHZhciBhSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICBpZiAodGhpcy5jb25uZWN0aXZpdHlUeXBlID09PSBOYXRDb25uZWN0aXZpdHlUeXBlLlBVQkxJQykge1xuICAgICAgaWYgKCFwcm9wcy5hbGxvY2F0aW9uSWQpIHtcbiAgICAgICAgdGhpcy5laXAgPSBuZXcgQ2ZuRUlQKHRoaXMsICdFSVAnLCB7XG4gICAgICAgICAgZG9tYWluOiAndnBjJyxcbiAgICAgICAgfSk7XG4gICAgICAgIGFJZCA9IHRoaXMuZWlwLmF0dHJBbGxvY2F0aW9uSWQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhSWQgPSBwcm9wcy5hbGxvY2F0aW9uSWQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5OYXRHYXRld2F5KHRoaXMsICdOQVRHYXRld2F5Jywge1xuICAgICAgc3VibmV0SWQ6IHByb3BzLnN1Ym5ldC5zdWJuZXRJZCxcbiAgICAgIGFsbG9jYXRpb25JZDogYUlkLFxuICAgICAgbWF4RHJhaW5EdXJhdGlvblNlY29uZHM6IHByb3BzLm1heERyYWluRHVyYXRpb24/LnRvU2Vjb25kcygpLFxuICAgICAgc2Vjb25kYXJ5QWxsb2NhdGlvbklkczogcHJvcHMuc2Vjb25kYXJ5QWxsb2NhdGlvbklkcyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICAgIHRoaXMubmF0R2F0ZXdheUlkID0gRmVhdHVyZUZsYWdzLm9mKHRoaXMpLmlzRW5hYmxlZChjeF9hcGkuVVNFX1JFU09VUkNFSURfRk9SX1ZQQ1YyX01JR1JBVElPTikgP1xuICAgICAgdGhpcy5yZXNvdXJjZS5yZWYgOiB0aGlzLnJlc291cmNlLmF0dHJOYXRHYXRld2F5SWQ7XG5cbiAgICB0aGlzLnJvdXRlclRhcmdldElkID0gRmVhdHVyZUZsYWdzLm9mKHRoaXMpLmlzRW5hYmxlZChjeF9hcGkuVVNFX1JFU09VUkNFSURfRk9SX1ZQQ1YyX01JR1JBVElPTikgP1xuICAgICAgdGhpcy5yZXNvdXJjZS5yZWYgOiB0aGlzLnJlc291cmNlLmF0dHJOYXRHYXRld2F5SWQ7XG5cbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcbiAgICB0aGlzLnJlc291cmNlLm5vZGUuYWRkRGVwZW5kZW5jeShwcm9wcy5zdWJuZXQuaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCk7XG4gIH1cbn1cblxuLyoqXG4gKiBDcmVhdGVzIGEgcGVlcmluZyBjb25uZWN0aW9uIGJldHdlZW4gdHdvIFZQQ3NcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6VlBDUGVlcmluZ0Nvbm5lY3Rpb25cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFZQQ1BlZXJpbmdDb25uZWN0aW9uIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYXJnZXQge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1lYzItYWxwaGEuVlBDUGVlcmluZ0Nvbm5lY3Rpb24nO1xuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygcm91dGVyIHVzZWQgaW4gdGhlIHJvdXRlLlxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVyVHlwZTogUm91dGVyVHlwZTtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YXJnZXQuXG4gICAqL1xuICByZWFkb25seSByb3V0ZXJUYXJnZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIHBlZXJpbmcgY29ubmVjdGlvbiBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmblZQQ1BlZXJpbmdDb25uZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBWUENQZWVyaW5nQ29ubmVjdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMucm91dGVyVHlwZSA9IFJvdXRlclR5cGUuVlBDX1BFRVJJTkdfQ09OTkVDVElPTjtcblxuICAgIGNvbnN0IGlzQ3Jvc3NBY2NvdW50ID0gcHJvcHMucmVxdWVzdG9yVnBjLm93bmVyQWNjb3VudElkICE9PSBwcm9wcy5hY2NlcHRvclZwYy5vd25lckFjY291bnRJZDtcblxuICAgIGlmICghaXNDcm9zc0FjY291bnQgJiYgcHJvcHMucGVlclJvbGVBcm4pIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ3BlZXJSb2xlQXJuIGlzIG5vdCBuZWVkZWQgZm9yIHNhbWUgYWNjb3VudCBwZWVyaW5nJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKGlzQ3Jvc3NBY2NvdW50ICYmICFwcm9wcy5wZWVyUm9sZUFybikge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignQ3Jvc3MgYWNjb3VudCBWUEMgcGVlcmluZyByZXF1aXJlcyBwZWVyUm9sZUFybicsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IG92ZXJsYXAgPSB0aGlzLnZhbGlkYXRlVnBjQ2lkck92ZXJsYXAocHJvcHMucmVxdWVzdG9yVnBjLCBwcm9wcy5hY2NlcHRvclZwYyk7XG4gICAgaWYgKG92ZXJsYXApIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0NJRFIgYmxvY2sgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggZWFjaCBvdGhlciBmb3IgZXN0YWJsaXNoaW5nIGEgcGVlcmluZyBjb25uZWN0aW9uJywgdGhpcyk7XG4gICAgfVxuICAgIGlmIChwcm9wcy52cGNQZWVyaW5nQ29ubmVjdGlvbk5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcy52cGNQZWVyaW5nQ29ubmVjdGlvbk5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgQ2ZuVlBDUGVlcmluZ0Nvbm5lY3Rpb24odGhpcywgJ1ZQQ1BlZXJpbmdDb25uZWN0aW9uJywge1xuICAgICAgdnBjSWQ6IHByb3BzLnJlcXVlc3RvclZwYy52cGNJZCxcbiAgICAgIHBlZXJWcGNJZDogcHJvcHMuYWNjZXB0b3JWcGMudnBjSWQsXG4gICAgICBwZWVyT3duZXJJZDogcHJvcHMuYWNjZXB0b3JWcGMub3duZXJBY2NvdW50SWQsXG4gICAgICBwZWVyUmVnaW9uOiBwcm9wcy5hY2NlcHRvclZwYy5yZWdpb24sXG4gICAgICBwZWVyUm9sZUFybjogaXNDcm9zc0FjY291bnQgPyBwcm9wcy5wZWVyUm9sZUFybiA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIHRoaXMucm91dGVyVGFyZ2V0SWQgPSB0aGlzLnJlc291cmNlLmF0dHJJZDtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gdGhpcy5yZXNvdXJjZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZXMgaWYgdGhlIHByb3ZpZGVkIElQdjQgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBDSURSIGJsb2NrcyB3aXRoaW4gdGhlIGdpdmVuIFZQQy5cbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3RvclZwYyBUaGUgVlBDIG9mIHRoZSByZXF1ZXN0b3IuXG4gICAqIEBwYXJhbSBhY2NlcHRvclZwYyBUaGUgVlBDIG9mIHRoZSBhY2NlcHRvci5cbiAgICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgSVB2NCBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZWFjaCBvdGhlciBmb3IgdHdvIFZQQ3MsIGZhbHNlIG90aGVyd2lzZS5cbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIHZhbGlkYXRlVnBjQ2lkck92ZXJsYXAocmVxdWVzdG9yVnBjOiBJVnBjVjIsIGFjY2VwdG9yVnBjOiBJVnBjVjIpOiBib29sZWFuIHtcbiAgICBjb25zdCByZXF1ZXN0b3JDaWRycyA9IFtyZXF1ZXN0b3JWcGMuaXB2NENpZHJCbG9ja107XG4gICAgY29uc3QgYWNjZXB0b3JDaWRycyA9IFthY2NlcHRvclZwYy5pcHY0Q2lkckJsb2NrXTtcblxuICAgIGlmIChyZXF1ZXN0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICByZXF1ZXN0b3JDaWRycy5wdXNoKC4uLnJlcXVlc3RvclZwYy5zZWNvbmRhcnlDaWRyQmxvY2tcbiAgICAgICAgLm1hcChibG9jayA9PiBibG9jay5jaWRyQmxvY2spXG4gICAgICAgIC5maWx0ZXIoKGNpZHIpOiBjaWRyIGlzIHN0cmluZyA9PiBjaWRyICE9PSB1bmRlZmluZWQpKTtcbiAgICB9XG5cbiAgICBpZiAoYWNjZXB0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICBhY2NlcHRvckNpZHJzLnB1c2goLi4uYWNjZXB0b3JWcGMuc2Vjb25kYXJ5Q2lkckJsb2NrXG4gICAgICAgIC5tYXAoYmxvY2sgPT4gYmxvY2suY2lkckJsb2NrKVxuICAgICAgICAuZmlsdGVyKChjaWRyKTogY2lkciBpcyBzdHJpbmcgPT4gY2lkciAhPT0gdW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCByZXF1ZXN0b3JDaWRyIG9mIHJlcXVlc3RvckNpZHJzKSB7XG4gICAgICBjb25zdCByZXF1ZXN0b3JSYW5nZSA9IG5ldyBDaWRyQmxvY2socmVxdWVzdG9yQ2lkcik7XG4gICAgICBjb25zdCByZXF1ZXN0b3JJcFJhbmdlOiBbc3RyaW5nLCBzdHJpbmddID0gW3JlcXVlc3RvclJhbmdlLm1pbklwKCksIHJlcXVlc3RvclJhbmdlLm1heElwKCldO1xuXG4gICAgICBmb3IgKGNvbnN0IGFjY2VwdG9yQ2lkciBvZiBhY2NlcHRvckNpZHJzKSB7XG4gICAgICAgIGNvbnN0IGFjY2VwdG9yUmFuZ2UgPSBuZXcgQ2lkckJsb2NrKGFjY2VwdG9yQ2lkcik7XG4gICAgICAgIGNvbnN0IGFjY2VwdG9ySXBSYW5nZTogW3N0cmluZywgc3RyaW5nXSA9IFthY2NlcHRvclJhbmdlLm1pbklwKCksIGFjY2VwdG9yUmFuZ2UubWF4SXAoKV07XG5cbiAgICAgICAgaWYgKHJlcXVlc3RvclJhbmdlLnJhbmdlc092ZXJsYXAoYWNjZXB0b3JJcFJhbmdlLCByZXF1ZXN0b3JJcFJhbmdlKSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgZW5kcG9pbnQgb3IgZ2F0ZXdheSBiZWluZyB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVUYXJnZXRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSByb3V0ZSB0YXJnZXQuIFRoaXMgaXMgdXNlZCBmb3IgdGFyZ2V0cyBzdWNoIGFzXG4gICAqIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgb3IgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YXJnZXQgaXMgbm90IHNldCB0byBhIGdhdGV3YXksIGluIHRoaXMgY2FzZSBhbiBlbmRwb2ludCBpcyBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5PzogSVJvdXRlVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgcm91dGUgdGFyZ2V0LiBUaGlzIGlzIHVzZWQgZm9yIHRhcmdldHMgc3VjaCBhc1xuICAgKiBWUEMgZW5kcG9pbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRhcmdldCBpcyBub3Qgc2V0IHRvIGFuIGVuZHBvaW50LCBpbiB0aGlzIGNhc2UgYSBnYXRld2F5IGlzIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50PzogSVZwY0VuZHBvaW50O1xufVxuXG4vKipcbiAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFJvdXRlVGFyZ2V0VHlwZSB7XG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSByb3V0ZSB0YXJnZXQuIFRoaXMgaXMgdXNlZCBmb3IgdGFyZ2V0cyBzdWNoIGFzXG4gICAqIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkgb3IgVlBDIHBlZXJpbmcgY29ubmVjdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0YXJnZXQgaXMgbm90IHNldCB0byBhIGdhdGV3YXksIGluIHRoaXMgY2FzZSBhbiBlbmRwb2ludCBpcyBuZWVkZWQuXG4gICAqL1xuICByZWFkb25seSBnYXRld2F5PzogSVJvdXRlVGFyZ2V0O1xuXG4gIC8qKlxuICAgKiBUaGUgZW5kcG9pbnQgcm91dGUgdGFyZ2V0LiBUaGlzIGlzIHVzZWQgZm9yIHRhcmdldHMgc3VjaCBhc1xuICAgKiBWUEMgZW5kcG9pbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRhcmdldCBpcyBub3Qgc2V0IHRvIGFuIGVuZHBvaW50LCBpbiB0aGlzIGNhc2UgYSBnYXRld2F5IGlzIG5lZWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGVuZHBvaW50PzogSVZwY0VuZHBvaW50O1xuXG4gIGNvbnN0cnVjdG9yKHByb3BzOiBSb3V0ZVRhcmdldFByb3BzKSB7XG4gICAgdGhpcy5nYXRld2F5ID0gcHJvcHMuZ2F0ZXdheTtcbiAgICB0aGlzLmVuZHBvaW50ID0gcHJvcHMuZW5kcG9pbnQ7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gZGVmaW5lIGEgcm91dGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVJvdXRlVjIgZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhlIHJvdXRlLlxuICAgKiBAYXR0cmlidXRlIHJvdXRlVGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKlxuICAgKiBSb3V0aW5nIGRlY2lzaW9ucyBhcmUgYmFzZWQgb24gdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2guXG4gICAqIFRPRE86IExvb2sgZm9yIHN0cm9uZyBJUCB0eXBlIGltcGxlbWVudGF0aW9uIGhlcmUuXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSBvciBlbmRwb2ludCB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhIHJvdXRlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRlUHJvcHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhlIHJvdXRlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlIHJvdXRlVGFibGVcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBvciBJUHY2IENJRFIgYmxvY2sgdXNlZCBmb3IgdGhlIGRlc3RpbmF0aW9uIG1hdGNoLlxuICAgKlxuICAgKiBSb3V0aW5nIGRlY2lzaW9ucyBhcmUgYmFzZWQgb24gdGhlIG1vc3Qgc3BlY2lmaWMgbWF0Y2guXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2F0ZXdheSBvciBlbmRwb2ludCB0YXJnZXRlZCBieSB0aGUgcm91dGUuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZTtcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIHJvdXRlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb3Zpc2lvbmVkIHdpdGhvdXQgYSByb3V0ZSBuYW1lXG4gICAqL1xuICByZWFkb25seSByb3V0ZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyByb3V0ZSB3aXRoIGFkZGVkIGZ1bmN0aW9uYWxpdHkuXG4gKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlJvdXRlXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBSb3V0ZSBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJvdXRlVjIge1xuICAvKiogVW5pcXVlbHkgaWRlbnRpZmllcyB0aGlzIGNsYXNzLiAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFBST1BFUlRZX0lOSkVDVElPTl9JRDogc3RyaW5nID0gJ0Bhd3MtY2RrLmF3cy1lYzItYWxwaGEuUm91dGUnO1xuICAvKipcbiAgICogVGhlIElQdjQgb3IgSVB2NiBDSURSIGJsb2NrIHVzZWQgZm9yIHRoZSBkZXN0aW5hdGlvbiBtYXRjaC5cbiAgICpcbiAgICogUm91dGluZyBkZWNpc2lvbnMgYXJlIGJhc2VkIG9uIHRoZSBtb3N0IHNwZWNpZmljIG1hdGNoLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRlc3RpbmF0aW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBnYXRld2F5IG9yIGVuZHBvaW50IHRhcmdldGVkIGJ5IHRoZSByb3V0ZS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZTtcblxuICAvKipcbiAgICogVGhlIHJvdXRlIHRhYmxlIGZvciB0aGUgcm91dGUuXG4gICAqIEBhdHRyaWJ1dGUgcm91dGVUYWJsZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiByb3V0ZXIgdGhlIHJvdXRlIGlzIHRhcmdldGluZ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHRhcmdldFJvdXRlclR5cGU6IFJvdXRlclR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSByb3V0ZSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U/OiBDZm5Sb3V0ZTtcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gY2lkciBibG9jayBmb3IgaXB2NlxuICAgKi9cbiAgcHJpdmF0ZSBkZXN0aW5hdGlvbklwdjZDaWRyPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBjaWRyIGJsb2NrIGZvciBpcHY0XG4gICAqL1xuICBwcml2YXRlIGRlc3RpbmF0aW9uSXB2NENpZHI/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvdXRlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgdGhpcy50YXJnZXQgPSBwcm9wcy50YXJnZXQ7XG4gICAgdGhpcy5yb3V0ZVRhYmxlID0gcHJvcHMucm91dGVUYWJsZTtcbiAgICB0aGlzLmRlc3RpbmF0aW9uID0gcHJvcHMuZGVzdGluYXRpb247XG4gICAgY29uc3QgaXNEZXN0aW5hdGlvbklwdjQgPSBOZXR3b3JrVXRpbHMudmFsaWRJcChwcm9wcy5kZXN0aW5hdGlvbik7XG4gICAgaWYgKCFpc0Rlc3RpbmF0aW9uSXB2NCkge1xuICAgICAgLy8gVE9ETyBWYWxpZGF0ZSBmb3IgSVB2NiBDSURSIHJhbmdlXG4gICAgICB0aGlzLmRlc3RpbmF0aW9uSXB2NkNpZHIgPSBwcm9wcy5kZXN0aW5hdGlvbjtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kZXN0aW5hdGlvbklwdjRDaWRyID0gcHJvcHMuZGVzdGluYXRpb247XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGFyZ2V0LmdhdGV3YXk/LnJvdXRlclR5cGUgPT09IFJvdXRlclR5cGUuRUdSRVNTX09OTFlfSU5URVJORVRfR0FURVdBWSAmJiBpc0Rlc3RpbmF0aW9uSXB2NCkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcignRWdyZXNzIG9ubHkgaW50ZXJuZXQgZ2F0ZXdheSBkb2VzIG5vdCBzdXBwb3J0IElQdjQgcm91dGluZycsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmICgocHJvcHMudGFyZ2V0LmdhdGV3YXkgJiYgcHJvcHMudGFyZ2V0LmVuZHBvaW50KSB8fCAoIXByb3BzLnRhcmdldC5nYXRld2F5ICYmICFwcm9wcy50YXJnZXQuZW5kcG9pbnQpKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdFeGFjdGx5IG9uZSBvZiBgZ2F0ZXdheWAgb3IgYGVuZHBvaW50YCBtdXN0IGJlIHNwZWNpZmllZC4nLCB0aGlzKTtcbiAgICB9XG4gICAgdGhpcy50YXJnZXRSb3V0ZXJUeXBlID0gdGhpcy50YXJnZXQuZ2F0ZXdheSA/IHRoaXMudGFyZ2V0LmdhdGV3YXkucm91dGVyVHlwZSA6IFJvdXRlclR5cGUuVlBDX0VORFBPSU5UO1xuICAgIC8vIEdhdGV3YXkgZ2VuZXJhdGVzIHJvdXRlIGF1dG9tYXRpY2FsbHkgdmlhIGl0cyBSb3V0ZVRhYmxlLCB0aHVzIHdlIGRvbid0IG5lZWQgdG8gZ2VuZXJhdGUgdGhlIHJlc291cmNlIGZvciBpdFxuICAgIGlmICghKHRoaXMudGFyZ2V0LmVuZHBvaW50IGluc3RhbmNlb2YgR2F0ZXdheVZwY0VuZHBvaW50KSkge1xuICAgICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBDZm5Sb3V0ZSh0aGlzLCAnUm91dGUnLCB7XG4gICAgICAgIHJvdXRlVGFibGVJZDogdGhpcy5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCxcbiAgICAgICAgZGVzdGluYXRpb25DaWRyQmxvY2s6IHRoaXMuZGVzdGluYXRpb25JcHY0Q2lkcixcbiAgICAgICAgZGVzdGluYXRpb25JcHY2Q2lkckJsb2NrOiB0aGlzLmRlc3RpbmF0aW9uSXB2NkNpZHIsXG4gICAgICAgIFtyb3V0ZXJUeXBlVG9Qcm9wTmFtZSh0aGlzLnRhcmdldFJvdXRlclR5cGUpXTogdGhpcy50YXJnZXQuZ2F0ZXdheSA/IHRoaXMudGFyZ2V0LmdhdGV3YXkucm91dGVyVGFyZ2V0SWQgOlxuICAgICAgICAgIHRoaXMudGFyZ2V0LmVuZHBvaW50ID8gdGhpcy50YXJnZXQuZW5kcG9pbnQudnBjRW5kcG9pbnRJZCA6IG51bGwsXG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICAvLyBDcmVhdGUgYSByb3V0ZSBvbmx5IGFmdGVyIHRhcmdldCBnYXRld2F5IG9yIGVuZHBvaW50IGlzIGNyZWF0ZWRcbiAgICBpZiAodGhpcy50YXJnZXQuZ2F0ZXdheSkge1xuICAgICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy50YXJnZXQuZ2F0ZXdheSk7XG4gICAgfVxuICAgIGlmICh0aGlzLnRhcmdldC5lbmRwb2ludCkge1xuICAgICAgdGhpcy5ub2RlLmFkZERlcGVuZGVuY3kodGhpcy50YXJnZXQuZW5kcG9pbnQpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGEgcm91dGUgdGFibGUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGVUYWJsZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgVlBDLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBJVnBjVjI7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSByb3V0ZSB0YWJsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRob3V0IGEgcm91dGUgdGFibGUgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIHJvdXRlIHRhYmxlIGZvciB0aGUgc3BlY2lmaWVkIFZQQ1xuICogQHJlc291cmNlIEFXUzo6RUMyOjpSb3V0ZVRhYmxlXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBSb3V0ZVRhYmxlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUm91dGVUYWJsZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWVjMi1hbHBoYS5Sb3V0ZVRhYmxlJztcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFibGUuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcm91dGVUYWJsZUlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByb3V0ZSB0YWJsZSBDRk4gcmVzb3VyY2UuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IENmblJvdXRlVGFibGU7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJvdXRlVGFibGVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IENmblJvdXRlVGFibGUodGhpcywgJ1JvdXRlVGFibGUnLCB7XG4gICAgICB2cGNJZDogcHJvcHMudnBjLnZwY0lkLFxuICAgIH0pO1xuICAgIGlmIChwcm9wcy5yb3V0ZVRhYmxlTmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoTkFNRV9UQUcsIHByb3BzLnJvdXRlVGFibGVOYW1lKTtcbiAgICB9XG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHRoaXMucmVzb3VyY2U7XG5cbiAgICB0aGlzLnJvdXRlVGFibGVJZCA9IEZlYXR1cmVGbGFncy5vZih0aGlzKS5pc0VuYWJsZWQoY3hfYXBpLlVTRV9SRVNPVVJDRUlEX0ZPUl9WUENWMl9NSUdSQVRJT04pID9cbiAgICAgIHRoaXMucmVzb3VyY2UucmVmIDogdGhpcy5yZXNvdXJjZS5hdHRyUm91dGVUYWJsZUlkO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgY3VzdG9tIHJvdXRlIHRvIHRoZSByb3V0ZSB0YWJsZS5cbiAgICpcbiAgICogQHBhcmFtIGRlc3RpbmF0aW9uIFRoZSBJUHY0IG9yIElQdjYgQ0lEUiBibG9jayB1c2VkIGZvciB0aGUgZGVzdGluYXRpb24gbWF0Y2guXG4gICAqIEBwYXJhbSB0YXJnZXQgVGhlIGdhdGV3YXkgb3IgZW5kcG9pbnQgdGFyZ2V0ZWQgYnkgdGhlIHJvdXRlLlxuICAgKiBAcGFyYW0gcm91dGVOYW1lIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSByb3V0ZS5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhZGRSb3V0ZShpZDogc3RyaW5nLCBkZXN0aW5hdGlvbjogc3RyaW5nLCB0YXJnZXQ6IFJvdXRlVGFyZ2V0VHlwZSwgcm91dGVOYW1lPzogc3RyaW5nKSB7XG4gICAgbmV3IFJvdXRlKHRoaXMsIGlkLCB7XG4gICAgICByb3V0ZVRhYmxlOiB0aGlzLFxuICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uLFxuICAgICAgdGFyZ2V0OiB0YXJnZXQsXG4gICAgICByb3V0ZU5hbWU6IHJvdXRlTmFtZSxcbiAgICB9KTtcbiAgfVxufVxuXG5mdW5jdGlvbiByb3V0ZXJUeXBlVG9Qcm9wTmFtZShyb3V0ZXJUeXBlOiBSb3V0ZXJUeXBlKSB7XG4gIHJldHVybiAoe1xuICAgIFtSb3V0ZXJUeXBlLkNBUlJJRVJfR0FURVdBWV06ICdjYXJyaWVyR2F0ZXdheUlkJyxcbiAgICBbUm91dGVyVHlwZS5FR1JFU1NfT05MWV9JTlRFUk5FVF9HQVRFV0FZXTogJ2VncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlJZCcsXG4gICAgW1JvdXRlclR5cGUuR0FURVdBWV06ICdnYXRld2F5SWQnLFxuICAgIFtSb3V0ZXJUeXBlLklOU1RBTkNFXTogJ2luc3RhbmNlSWQnLFxuICAgIFtSb3V0ZXJUeXBlLkxPQ0FMX0dBVEVXQVldOiAnbG9jYWxHYXRld2F5SWQnLFxuICAgIFtSb3V0ZXJUeXBlLk5BVF9HQVRFV0FZXTogJ25hdEdhdGV3YXlJZCcsXG4gICAgW1JvdXRlclR5cGUuTkVUV09SS19JTlRFUkZBQ0VdOiAnbmV0d29ya0ludGVyZmFjZUlkJyxcbiAgICBbUm91dGVyVHlwZS5UUkFOU0lUX0dBVEVXQVldOiAndHJhbnNpdEdhdGV3YXlJZCcsXG4gICAgW1JvdXRlclR5cGUuVlBDX1BFRVJJTkdfQ09OTkVDVElPTl06ICd2cGNQZWVyaW5nQ29ubmVjdGlvbklkJyxcbiAgICBbUm91dGVyVHlwZS5WUENfRU5EUE9JTlRdOiAndnBjRW5kcG9pbnRJZCcsXG4gICAgW1JvdXRlclR5cGUuQ09SRV9ORVRXT1JLXTogJ2NvcmVOZXR3b3JrQXJuJyxcbiAgfSlbcm91dGVyVHlwZV07XG59XG4iXX0=
|
package/lib/subnet-v2.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Resource } from 'aws-cdk-lib';
|
|
2
2
|
import { INetworkAcl, IRouteTable, ISubnet, SubnetType } from 'aws-cdk-lib/aws-ec2';
|
|
3
|
+
import { SubnetReference } from 'aws-cdk-lib/aws-ec2/lib/ec2.generated';
|
|
3
4
|
import { Construct, IDependable } from 'constructs';
|
|
4
5
|
import { IVpcV2 } from './vpc-v2-base';
|
|
5
|
-
import { SubnetReference } from 'aws-cdk-lib/aws-ec2/lib/ec2.generated';
|
|
6
6
|
/**
|
|
7
7
|
* Interface to define subnet CIDR
|
|
8
8
|
*/
|
package/lib/subnet-v2.js
CHANGED
|
@@ -39,16 +39,16 @@ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
|
|
|
39
39
|
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
40
40
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
41
41
|
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
42
|
-
const constructs_1 = require("constructs");
|
|
43
|
-
const util_1 = require("./util");
|
|
44
|
-
const route_1 = require("./route");
|
|
45
42
|
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
|
|
46
43
|
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
|
|
44
|
+
const constructs_1 = require("constructs");
|
|
45
|
+
const route_1 = require("./route");
|
|
46
|
+
const util_1 = require("./util");
|
|
47
47
|
/**
|
|
48
48
|
* IPv4 or IPv6 CIDR range for the subnet
|
|
49
49
|
*/
|
|
50
50
|
class IpCidr {
|
|
51
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.IpCidr", version: "2.
|
|
51
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.IpCidr", version: "2.232.0-alpha.0" };
|
|
52
52
|
/**
|
|
53
53
|
* IPv6 CIDR range for the subnet
|
|
54
54
|
* Allowed only if IPv6 is enabled on VPc
|
|
@@ -96,7 +96,7 @@ let SubnetV2 = (() => {
|
|
|
96
96
|
SubnetV2 = _classThis = _classDescriptor.value;
|
|
97
97
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
98
98
|
}
|
|
99
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.SubnetV2", version: "2.
|
|
99
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.SubnetV2", version: "2.232.0-alpha.0" };
|
|
100
100
|
/** Uniquely identifies this class. */
|
|
101
101
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.SubnetV2';
|
|
102
102
|
/**
|
|
@@ -482,4 +482,4 @@ function validateOverlappingCidrRangesipv6(vpc, ipv6CidrBlock) {
|
|
|
482
482
|
}
|
|
483
483
|
return result;
|
|
484
484
|
}
|
|
485
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibmV0LXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3VibmV0LXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyRztBQUMzRyxpREFTNkI7QUFDN0IsMkNBQXFFO0FBRXJFLGlDQUFxRTtBQUNyRSxtQ0FBcUM7QUFDckMsOEVBQThGO0FBQzlGLDBFQUEwRTtBQVUxRTs7R0FFRztBQUNILE1BQWEsTUFBTTs7SUFDakI7OztPQUdHO0lBQ2EsSUFBSSxDQUFTO0lBQzdCLFlBQVksS0FBYTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztLQUNuQjs7QUFSSCx3QkFTQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUM7QUFFN0M7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQztBQWlHN0M7Ozs7Ozs7Ozs7R0FVRztJQUVVLFFBQVE7NEJBRHBCLG9DQUFrQjs7OztzQkFDVyxzQkFBUTs7O3dCQUFoQixTQUFRLFdBQVE7Ozs7K0NBK05uQyxJQUFBLGtDQUFjLEdBQUU7WUFDakIsNE1BQU8sbUJBQW1CLDZEQVN6QjtZQXpPSCw2S0F5UEM7Ozs7O1FBeFBDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsaUNBQWlDLENBQUM7UUFFekY7O1dBRUc7UUFDSSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7Ozs7Ozs7Ozs7WUFDMUY7OztlQUdHO1lBQ0gsTUFBTSxnQkFBaUIsU0FBUSxzQkFBUTtnQkFDckM7O21CQUVHO2dCQUNhLGFBQWEsR0FBWSxLQUFLLENBQUMsYUFBYSxDQUFDO2dCQUU3RDs7bUJBRUc7Z0JBQ2EsVUFBVSxHQUFnQixLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUUzRDs7bUJBRUc7Z0JBQ2EsZ0JBQWdCLEdBQVcsS0FBSyxD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RDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsaUNBQWlDLENBQUMsR0FBVyxFQUFFLGFBQXFCO0lBQzNFLElBQUksVUFBdUIsQ0FBQztJQUM1QixJQUFJLENBQUM7UUFDSCxVQUFVLEdBQUcsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUMzQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLG1CQUFtQixDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFZLEVBQUUsQ0FBQztJQUU1QixNQUFNLFVBQVUsR0FBRyxJQUFJLG9CQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFcEQsSUFBSSxNQUFNLEdBQWEsS0FBSyxDQUFDO0lBRTdCLEtBQUssTUFBTSxNQUFNLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxvQkFBYSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxRCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyRCxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhenksIE5hbWVzLCBSZXNvdXJjZSwgVGFncywgVG9rZW4sIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBDZm5TdWJuZXQsXG4gIENmblN1Ym5ldFJvdXRlVGFibGVBc3NvY2lhdGlvbixcbiAgSU5ldHdvcmtBY2wsXG4gIElSb3V0ZVRhYmxlLFxuICBJU3VibmV0LFxuICBOZXR3b3JrQWNsLFxuICBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24sXG4gIFN1Ym5ldFR5cGUsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBEZXBlbmRlbmN5R3JvdXAsIElEZXBlbmRhYmxlIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJVnBjVjIgfSBmcm9tICcuL3ZwYy12Mi1iYXNlJztcbmltcG9ydCB7IENpZHJCbG9jaywgQ2lkckJsb2NrSXB2NiwgZGVmYXVsdFN1Ym5ldE5hbWUgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgUm91dGVUYWJsZSB9IGZyb20gJy4vcm91dGUnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB7IFN1Ym5ldFJlZmVyZW5jZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzIvbGliL2VjMi5nZW5lcmF0ZWQnO1xuXG4vKipcbiAqIEludGVyZmFjZSB0byBkZWZpbmUgc3VibmV0IENJRFJcbiAqL1xuaW50ZXJmYWNlIElDaWRyIHtcbiAgcmVhZG9ubHkgY2lkcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIElQdjQgb3IgSVB2NiBDSURSIHJhbmdlIGZvciB0aGUgc3VibmV0XG4gKi9cbmV4cG9ydCBjbGFzcyBJcENpZHIgaW1wbGVtZW50cyBJQ2lkciB7XG4gIC8qKlxuICAgKiBJUHY2IENJRFIgcmFuZ2UgZm9yIHRoZSBzdWJuZXRcbiAgICogQWxsb3dlZCBvbmx5IGlmIElQdjYgaXMgZW5hYmxlZCBvbiBWUGNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjaWRyOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBzdHJpbmcgKSB7XG4gICAgdGhpcy5jaWRyID0gcHJvcHM7XG4gIH1cbn1cblxuLyoqXG4gKiBWUEMgTmFtZSB0YWcgY29uc3RhbnRcbiAqL1xuY29uc3QgU1VCTkVUVFlQRV9UQUcgPSAnYXdzLWNkazpzdWJuZXQtdHlwZSc7XG5cbi8qKlxuICogU3VibmV0IE5hbWUgdGFnIGNvbnN0YW50XG4gKi9cbmNvbnN0IFNVQk5FVE5BTUVfVEFHID0gJ2F3cy1jZGs6c3VibmV0LW5hbWUnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIHN1Ym5ldCBmb3IgVlBDLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldFYyUHJvcHMge1xuLyoqXG4gKiBWUEMgUHJvcFxuICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBpcHY0IGNpZHIgdG8gYXNzaWduIHRvIHRoaXMgc3VibmV0LlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1zdWJuZXQuaHRtbCNjZm4tZWMyLXN1Ym5ldC1jaWRyYmxvY2tcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IElwQ2lkcjtcblxuICAvKipcbiAgICogSXB2NiBDSURSIFJhbmdlIGZvciBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBJcHY2IGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBJcENpZHI7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBBWiBmb3IgdGhlIHN1Ym5ldFxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gUm91dGUgZm9yIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgZGVmYXVsdCByb3V0ZSB0YWJsZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSByb3V0ZVRhYmxlPzogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRlZmF1bHQgUm91dGVUYWJsZSBjcmVhdGVkIGJ5IENESyB0byBiZSB1c2VkIGZvciB0YWdnaW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCByb3V0ZSB0YWJsZSBuYW1lIGNyZWF0ZWQgYnkgQ0RLIGFzICdEZWZhdWx0Q0RLUm91dGVUYWJsZSdcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRSb3V0ZVRhYmxlTmFtZSA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFN1Ym5ldCB0byBjb25maWd1cmUuXG4gICAqXG4gICAqIFRoZSBTdWJuZXQgdHlwZSB3aWxsIGNvbnRyb2wgdGhlIGFiaWxpdHkgdG8gcm91dGUgYW5kIGNvbm5lY3QgdG8gdGhlXG4gICAqIEludGVybmV0LlxuICAgKlxuICAgKiBUT0RPOiBBZGQgdmFsaWRhdGlvbiBjaGVjayBgc3VibmV0VHlwZWAgd2hlbiBhZGRpbmcgcmVzb3VyY2VzIChlLmcuIGNhbm5vdCBhZGQgTmF0R2F0ZXdheSB0byBwcml2YXRlKVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0VHlwZTogU3VibmV0VHlwZTtcblxuICAvKipcbiAgICogU3VibmV0IG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRoIGFuIGF1dG9nZW5lcmF0ZWQgbmFtZSBieSBDREtcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGEgbmV0d29yayBpbnRlcmZhY2UgY3JlYXRlZCBpbiB0aGlzIHN1Ym5ldCByZWNlaXZlcyBhbiBJUHY2IGFkZHJlc3MuXG4gICAqIElmIHlvdSBzcGVjaWZ5IEFzc2lnbklwdjZBZGRyZXNzT25DcmVhdGlvbiwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IElwdjZDaWRyQmxvY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIGluIGNhc2Ugbm90IHByb3ZpZGVkIGFzIGFuIGlucHV0XG4gICAqL1xuICByZWFkb25seSBhc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBpZiBpbnN0YW5jZXMgbGF1bmNoZWQgaW50byB0aGUgc3VibmV0IHNob3VsZCBiZSBhc3NpZ25lZCBhIHB1YmxpYyBJUCBhZGRyZXNzLlxuICAgKiBUaGlzIHByb3BlcnR5IGNhbiBvbmx5IGJlIHNldCBmb3IgcHVibGljIHN1Ym5ldHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIGluIGNhc2Ugbm90IHByb3ZpZGVkIGFzIGFuIGlucHV0XG4gICAqL1xuICByZWFkb25seSBtYXBQdWJsaWNJcE9uTGF1bmNoPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEludGVyZmFjZSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgU3VibmV0VjJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3VibmV0VjIgZXh0ZW5kcyBJU3VibmV0IHtcblxuICAvKipcbiAgICogVGhlIElQdjYgQ0lEUiBibG9jayBmb3IgdGhpcyBzdWJuZXRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHN1Ym5ldCAocHVibGljIG9yIHByaXZhdGUpIHRoYXQgdGhpcyBzdWJuZXQgcmVwcmVzZW50cy5cbiAgICpcbiAgICogQGF0dHJpYnV0ZSBTdWJuZXRUeXBlXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRUeXBlPzogU3VibmV0VHlwZTtcblxufVxuXG4vKipcbiAqIFRoZSBTdWJuZXRWMiBjbGFzcyByZXByZXNlbnRzIGEgc3VibmV0IHdpdGhpbiBhIFZQQyAoVmlydHVhbCBQcml2YXRlIENsb3VkKSBpbiBBV1MuXG4gKiBJdCBleHRlbmRzIHRoZSBSZXNvdXJjZSBjbGFzcyBhbmQgaW1wbGVtZW50cyB0aGUgSVN1Ym5ldCBpbnRlcmZhY2UuXG4gKlxuICogSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2Ugc3VibmV0cyB3aXRoaW4gYSBWcGNWMiBpbnN0YW5jZS5cbiAqIFN1Ym5ldHMgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBzcGVjaWZpYyBJUCBhZGRyZXNzIHJhbmdlcyAoSVB2NCBhbmQgSVB2NiksIGF2YWlsYWJpbGl0eSB6b25lcyxcbiAqIGFuZCBzdWJuZXQgdHlwZXMgKGUuZy4sIHB1YmxpYywgcHJpdmF0ZSwgaXNvbGF0ZWQpLlxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6U3VibmV0XG4gKlxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgU3VibmV0VjIgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElTdWJuZXRWMiB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWVjMi1hbHBoYS5TdWJuZXRWMic7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBzdWJuZXQgdG8gdGhlIFZQQ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3VibmV0VjJBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBTdWJuZXRWMkF0dHJpYnV0ZXMpIDogSVN1Ym5ldFYyIHtcbiAgICAvKipcbiAgICAgKiBDbGFzcyB0byBkZWZpbmUgYW4gaW1wb3J0IGZvciBhbiBleGlzdGluZyBzdWJuZXRcbiAgICAgKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlN1Ym5ldFxuICAgICAqL1xuICAgIGNsYXNzIEltcG9ydGVkU3VibmV0VjIgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElTdWJuZXRWMiB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBJUHY2IENJRFIgQmxvY2sgYXNzaWduZWQgdG8gdGhpcyBzdWJuZXRcbiAgICAgICAqL1xuICAgICAgcHVibGljIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBzdHJpbmcgPSBhdHRycy5pcHY2Q2lkckJsb2NrO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSB0eXBlIG9mIHN1Ym5ldCAoZWcuIHB1YmxpYyBvciBwcml2YXRlKSB0aGF0IHRoaXMgc3VibmV0IHJlcHJlc2VudHMuXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzdWJuZXRUeXBlPzogU3VibmV0VHlwZSA9IGF0dHJzLnN1Ym5ldFR5cGU7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIGluIHdoaWNoIHN1Ym5ldCBpcyBsb2NhdGVkXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcgPSBhdHRycy5hdmFpbGFiaWxpdHlab25lO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBzdWJuZXRJZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgICAgICogUmVmZXJzIHRvIHRoZSBwaHlzaWNhbCBJRCBjcmVhdGVkXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nID0gYXR0cnMuc3VibmV0SWQ7XG5cbiAgICAgIC8qKlxuICAgICAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkOiBJRGVwZW5kYWJsZSA9IG5ldyBEZXBlbmRlbmN5R3JvdXAoKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgSVB2NCBDSURSIGJsb2NrIGFzc2lnbmVkIHRvIHRoaXMgc3VibmV0XG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmcgPSBhdHRycy5pcHY0Q2lkckJsb2NrO1xuXG4gICAgICAvKipcbiAgICAgICAqICBDdXJyZW50IHJvdXRlIHRhYmxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN1Ym5ldFxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGUgPSB7IHJvdXRlVGFibGVJZDogYXR0cnMucm91dGVUYWJsZUlkISB9O1xuXG4gICAgICBwdWJsaWMgZ2V0IHN1Ym5ldFJlZigpOiBTdWJuZXRSZWZlcmVuY2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Ym5ldElkOiB0aGlzLnN1Ym5ldElkLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIEFzc29jaWF0ZSBhIE5ldHdvcmsgQUNMIHdpdGggdGhpcyBzdWJuZXRcbiAgICAgICAqIFJlcXVpcmVkIGhlcmUgc2luY2UgaXQgaXMgaW1wbGVtZW50ZWQgaW4gdGhlIElTdWJuZXRWMlxuICAgICAgICovXG4gICAgICBwdWJsaWMgYXNzb2NpYXRlTmV0d29ya0FjbChhY2xJZDogc3RyaW5nLCBuZXR3b3JrQWNsOiBJTmV0d29ya0FjbCkge1xuICAgICAgICBjb25zdCBhY2xTY29wZSA9IG5ldHdvcmtBY2wgaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyBuZXR3b3JrQWNsIDogdGhpcztcbiAgICAgICAgY29uc3Qgb3RoZXIgPSBuZXR3b3JrQWNsIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gdGhpcyA6IG5ldHdvcmtBY2w7XG4gICAgICAgIG5ldyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24oYWNsU2NvcGUsIGFjbElkICsgTmFtZXMubm9kZVVuaXF1ZUlkKG90aGVyLm5vZGUpLCB7XG4gICAgICAgICAgbmV0d29ya0FjbCxcbiAgICAgICAgICBzdWJuZXQ6IHRoaXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydGVkU3VibmV0VjIoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhlIHN1Ym5ldCBpcyBsb2NhdGVkIGluXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICBEZXBlbmRlbmNpZXMgZm9yIGludGVybmV0IGNvbm5lY3Rpdml0eVxuICAgKiBUaGlzIFByb3BlcnR5IGV4cG9zZXMgdGhlIFJvdXRlVGFibGUtU3VibmV0IGFzc29jaWF0aW9uIHNvIHRoYXQgb3RoZXIgcmVzb3VyY2VzIGNhbiBkZXBlbmQgb24gaXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSB2YXJpYWJsZSBuYW1lIGBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkYCBkb2VzIG5vdCByZWZsZWN0IHdoYXQgaXQgYWN0dWFsbHkgaXMuXG4gICAqIFRoZSBuYW1pbmcgaXMgZW5mb3JjZWQgYnkgSVN1Ym5ldC4gV2UgbmVlZCB0byBrZWVwIGl0IHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkuXG4gICAqIEl0IGV4cG9zZXMgdGhlIFJvdXRlVGFibGUtU3VibmV0IGFzc29jaWF0aW9uIHNvIHRoYXQgb3RoZXIgcmVzb3VyY2VzIGNhbiBkZXBlbmQgb24gaXQuXG4gICAqIEUuZy4gUmVzb3VyY2VzIGluIGEgc3VibmV0LCB3aGVuIGJlaW5nIGRlbGV0ZWQsIG1heSBuZWVkIHRoZSBSb3V0ZVRhYmxlIHRvIGV4aXN0IGluIG9yZGVyIHRvIGRlbGV0ZSBwcm9wZXJseVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCA9IG5ldyBEZXBlbmRlbmN5R3JvdXAoKTtcblxuICAvKipcbiAgICogVGhlIElQdjQgQ0lEUiBibG9jayBmb3IgdGhpcyBzdWJuZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY2IENJRFIgQmxvY2sgZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXB2NkNpZHJCbG9jaz86IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IHN1Ym5ldFJlZigpOiBTdWJuZXRSZWZlcmVuY2Uge1xuICAgIHJldHVybiB7XG4gICAgICBzdWJuZXRJZDogdGhpcy5zdWJuZXRJZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHN1Ym5ldCAocHVibGljIG9yIHByaXZhdGUpIHRoYXQgdGhpcyBzdWJuZXQgcmVwcmVzZW50cy5cbiAgICogQGF0dHJpYnV0ZSBTdWJuZXRUeXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGU7XG5cbiAgcHJpdmF0ZSBfbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG5cbiAgcHJpdmF0ZSBfcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgU3VibmV0VjIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IENvbnN0cnVjdCB0aGF0IHRoaXMgcmVzb3VyY2Ugd2lsbCBiZSBwYXJ0IG9mLlxuICAgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIHJlc291cmNlLlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIHN1Ym5ldC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdWJuZXRWMlByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnN1Ym5ldE5hbWUgPz8gTGF6eS5zdHJpbmcoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDEyOCwgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnXycgfSksXG4gICAgICB9KSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIGNvbnN0IGlwdjRDaWRyQmxvY2sgPSBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHI7XG4gICAgY29uc3QgaXB2NkNpZHJCbG9jayA9IHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHI7XG5cbiAgICBpZiAoIWNoZWNrQ2lkclJhbmdlcyhwcm9wcy52cGMsIHByb3BzLmlwdjRDaWRyQmxvY2suY2lkcikpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0NJRFIgYmxvY2sgc2hvdWxkIGJlIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgVlBDJywgdGhpcyk7XG4gICAgfVxuXG4gICAgbGV0IG92ZXJsYXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgb3ZlcmxhcElwdjY6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmlwdjRDaWRyQmxvY2spKSB7XG4gICAgICBvdmVybGFwID0gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXMocHJvcHMudnBjLCBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHIpO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIHdoZXRoZXIgVlBDIHN1cHBvcnRzIGlwdjZcbiAgICBpZiAocHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkciAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHIpKSB7XG4gICAgICB2YWxpZGF0ZVN1cHBvcnRJcHY2KHByb3BzLnZwYyk7XG4gICAgICBvdmVybGFwSXB2NiA9IHZhbGlkYXRlT3ZlcmxhcHBpbmdDaWRyUmFuZ2VzaXB2Nihwcm9wcy52cGMsIHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHIpO1xuICAgIH1cblxuICAgIGlmIChvdmVybGFwIHx8IG92ZXJsYXBJcHY2KSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdDSURSIGJsb2NrIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBibG9ja3MnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uICYmICFwcm9wcy5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdJUHY2IENJRFIgYmxvY2sgaXMgcmVxdWlyZWQgd2hlbiBhc3NpZ25pbmcgSVB2NiBhZGRyZXNzIG9uIGNyZWF0aW9uJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm1hcFB1YmxpY0lwT25MYXVuY2ggPT09IHRydWUgJiYgcHJvcHMuc3VibmV0VHlwZSAhPT0gU3VibmV0VHlwZS5QVUJMSUMpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ21hcFB1YmxpY0lwT25MYXVuY2ggY2FuIG9ubHkgYmUgc2V0IHRvIHRydWUgZm9yIHB1YmxpYyBzdWJuZXRzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3VibmV0ID0gbmV3IENmblN1Ym5ldCh0aGlzLCAnU3VibmV0Jywge1xuICAgICAgdnBjSWQ6IHByb3BzLnZwYy52cGNJZCxcbiAgICAgIGNpZHJCbG9jazogaXB2NENpZHJCbG9jayxcbiAgICAgIGlwdjZDaWRyQmxvY2s6IGlwdjZDaWRyQmxvY2ssXG4gICAgICBhdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uOiBwcm9wcy5hc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24sXG4gICAgICBtYXBQdWJsaWNJcE9uTGF1bmNoOiBwcm9wcy5tYXBQdWJsaWNJcE9uTGF1bmNoLFxuICAgIH0pO1xuXG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHN1Ym5ldDtcbiAgICB0aGlzLmlwdjRDaWRyQmxvY2sgPSBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHI7XG4gICAgdGhpcy5pcHY2Q2lkckJsb2NrID0gcHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkcjtcbiAgICB0aGlzLnN1Ym5ldElkID0gc3VibmV0LnJlZjtcbiAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmUgPSBwcm9wcy5hdmFpbGFiaWxpdHlab25lO1xuXG4gICAgdGhpcy5fbmV0d29ya0FjbCA9IE5ldHdvcmtBY2wuZnJvbU5ldHdvcmtBY2xJZCh0aGlzLCAnQWNsJywgc3VibmV0LmF0dHJOZXR3b3JrQWNsQXNzb2NpYXRpb25JZCk7XG5cbiAgICBjb25zdCBpbmNsdWRlUmVzb3VyY2VUeXBlcyA9IFtDZm5TdWJuZXQuQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRV07XG4gICAgaWYgKHByb3BzLnN1Ym5ldE5hbWUpIHtcbiAgICAgIFRhZ3Mub2Yoc3VibmV0KS5hZGQoU1VCTkVUTkFNRV9UQUcsIHByb3BzLnN1Ym5ldE5hbWUpO1xuICAgIH1cbiAgICBjb25zdCBzdWJuZXRUeXBlTmFtZSA9IGRlZmF1bHRTdWJuZXROYW1lKHByb3BzLnN1Ym5ldFR5cGUpID8/ICd1bmRlZmluZWQnO1xuICAgIFRhZ3Mub2Yoc3VibmV0KS5hZGQoU1VCTkVUVFlQRV9UQUcsIHN1Ym5ldFR5cGVOYW1lLCB7IGluY2x1ZGVSZXNvdXJjZVR5cGVzIH0pO1xuXG4gICAgaWYgKHByb3BzLnJvdXRlVGFibGUpIHtcbiAgICAgIHRoaXMuX3JvdXRlVGFibGUgPSBwcm9wcy5yb3V0ZVRhYmxlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBc3NpZ25pbmcgYSBkZWZhdWx0IHJvdXRlIHRhYmxlXG4gICAgICB0aGlzLl9yb3V0ZVRhYmxlID0gbmV3IFJvdXRlVGFibGUodGhpcywgJ1JvdXRlVGFibGUnLCB7XG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICByb3V0ZVRhYmxlTmFtZTogcHJvcHMuZGVmYXVsdFJvdXRlVGFibGVOYW1lID8/ICdEZWZhdWx0Q0RLUm91dGVUYWJsZScsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCByb3V0ZUFzc29jID0gbmV3IENmblN1Ym5ldFJvdXRlVGFibGVBc3NvY2lhdGlvbih0aGlzLCAnUm91dGVUYWJsZUFzc29jaWF0aW9uJywge1xuICAgICAgc3VibmV0SWQ6IHRoaXMuc3VibmV0SWQsXG4gICAgICByb3V0ZVRhYmxlSWQ6IHRoaXMucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkLmFkZChyb3V0ZUFzc29jKTtcblxuICAgIHRoaXMuaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCA9IHRoaXMuX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ7XG5cbiAgICB0aGlzLnN1Ym5ldFR5cGUgPSBwcm9wcy5zdWJuZXRUeXBlO1xuICAgIHN0b3JlU3VibmV0VG9WcGNCeVR5cGUocHJvcHMudnBjLCB0aGlzLCBwcm9wcy5zdWJuZXRUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NvY2lhdGUgYSBOZXR3b3JrIEFDTCB3aXRoIHRoaXMgc3VibmV0XG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgYXNzb2NpYXRpb24uXG4gICAqIEBwYXJhbSBuZXR3b3JrQWNsIFRoZSBOZXR3b3JrIEFDTCB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHN1Ym5ldC5cbiAgICogVGhpcyBhbGxvd3MgY29udHJvbGxpbmcgaW5ib3VuZCBhbmQgb3V0Ym91bmQgdHJhZmZpYyBmb3IgaW5zdGFuY2VzIGluIHRoaXMgc3VibmV0LlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFzc29jaWF0ZU5ldHdvcmtBY2woaWQ6IHN0cmluZywgbmV0d29ya0FjbDogSU5ldHdvcmtBY2wpIHtcbiAgICB0aGlzLl9uZXR3b3JrQWNsID0gbmV0d29ya0FjbDtcblxuICAgIGNvbnN0IHNjb3BlID0gbmV0d29ya0FjbCBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IG5ldHdvcmtBY2wgOiB0aGlzO1xuICAgIGNvbnN0IG90aGVyID0gbmV0d29ya0FjbCBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IHRoaXMgOiBuZXR3b3JrQWNsO1xuICAgIG5ldyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24oc2NvcGUsIGlkICsgTmFtZXMubm9kZVVuaXF1ZUlkKG90aGVyLm5vZGUpLCB7XG4gICAgICBuZXR3b3JrQWNsLFxuICAgICAgc3VibmV0OiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgUm91dGUgVGFibGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3VibmV0XG4gICAqL1xuICBwdWJsaWMgZ2V0IHJvdXRlVGFibGUoKTogSVJvdXRlVGFibGUge1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZVRhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIE5ldHdvcmsgQUNMIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN1Ym5ldC5cbiAgICovXG5cbiAgcHVibGljIGdldCBuZXR3b3JrQWNsKCk6IElOZXR3b3JrQWNsIHtcbiAgICByZXR1cm4gdGhpcy5fbmV0d29ya0FjbDtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgcmVxdWlyZWQgdG8gaW1wb3J0IGEgc3VibmV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0VjJBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSB0aGlzIHN1Ym5ldCBpcyBsb2NhdGVkIGluXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gQVogaW5mb3JtYXRpb24sIGNhbm5vdCB1c2UgQVogc2VsZWN0aW9uIGZlYXR1cmVzXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IENJRFIgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBDSURSIGluZm9ybWF0aW9uLCBjYW5ub3QgdXNlIENJRFIgZmlsdGVyIGZlYXR1cmVzXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IENJRFIgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBDSURSIGluZm9ybWF0aW9uLCBjYW5ub3QgdXNlIENJRFIgZmlsdGVyIGZlYXR1cmVzXG4gICAqL1xuICByZWFkb25seSBpcHY2Q2lkckJsb2NrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhYmxlIGZvciB0aGlzIHBhcnRpY3VsYXIgc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm91dGUgdGFibGUgaW5mb3JtYXRpb24sIGNhbm5vdCBjcmVhdGUgVlBDIGVuZHBvaW50c1xuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHN1Ym5ldCAocHVibGljIG9yIHByaXZhdGUpIHRoYXQgdGhpcyBzdWJuZXQgcmVwcmVzZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGdpdmVuIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHN1Ym5ldCBuYW1lXG4gICAqL1xuICByZWFkb25seSBzdWJuZXROYW1lPzogc3RyaW5nO1xuXG59XG5cbnR5cGUgRGVwcmVjYXRlZFN1Ym5ldFR5cGUgPSAnRGVwcmVjYXRlZF9Jc29sYXRlZCcgfCAnRGVwcmVjYXRlZF9Qcml2YXRlJztcbmNvbnN0IHN1Ym5ldFR5cGVNYXA6IHsgW2tleSBpbiBTdWJuZXRUeXBlIHwgRGVwcmVjYXRlZFN1Ym5ldFR5cGVdOiAodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIpID0+IHZvaWQgfSA9IHtcbiAgW1N1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRF06ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLmlzb2xhdGVkU3VibmV0cy5wdXNoKHN1Ym5ldCksXG4gIFtTdWJuZXRUeXBlLlBVQkxJQ106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnB1YmxpY1N1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2cGMucHJpdmF0ZVN1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbJ0RlcHJlY2F0ZWRfSXNvbGF0ZWQnXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2cGMuaXNvbGF0ZWRTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgWydEZXByZWNhdGVkX1ByaXZhdGUnXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2cGMucHJpdmF0ZVN1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfTkFUXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2cGMucHJpdmF0ZVN1Ym5ldHMucHVzaChzdWJuZXQpLFxufTtcblxuLyoqXG4gKiBTdG9yZXMgdGhlIHByb3ZpZGVkIHN1Ym5ldCBpbiB0aGUgVlBDJ3MgY29sbGVjdGlvbiBvZiBzdWJuZXRzIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgc3VibmV0IHR5cGUuXG4gKlxuICogQHBhcmFtIHZwYyBUaGUgVlBDIGluc3RhbmNlIHRvIHdoaWNoIHRoZSBzdWJuZXQgYmVsb25ncy5cbiAqIEBwYXJhbSBzdWJuZXQgVGhlIHN1Ym5ldCBpbnN0YW5jZSB0byBiZSBzdG9yZWQuXG4gKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgc3VibmV0IChlLmcuLCBwdWJsaWMsIHByaXZhdGUsIGlzb2xhdGVkKS5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBzdG9yZVN1Ym5ldFRvVnBjQnlUeXBlKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyLCB0eXBlOiBTdWJuZXRUeXBlKSB7XG4gIGNvbnN0IGZpbmRGdW5jdGlvblR5cGUgPSBzdWJuZXRUeXBlTWFwW3R5cGVdO1xuICBpZiAoZmluZEZ1bmN0aW9uVHlwZSkge1xuICAgIGZpbmRGdW5jdGlvblR5cGUodnBjLCBzdWJuZXQpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihgVW5zdXBwb3J0ZWQgc3VibmV0IHR5cGU6ICR7dHlwZX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOZWVkIHRvIHNldCBleHBsaWNpdCBkZXBlbmRlbmN5IGFzIGR1cmluZyBzdGFjayBkZWxldGlvbixcbiAgICogdGhlIGNpZHIgYmxvY2tzIG1heSBnZXQgZGVsZXRlZCBmaXJzdCBhbmQgd2lsbCBmYWlsIGFzIHRoZSBzdWJuZXRzIGFyZSBzdGlsbCB1c2luZyB0aGUgY2lkciBibG9ja3NcbiAgICovXG4gIGlmICh2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgZm9yIChjb25zdCBjaWRyIG9mIHZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICAgIHN1Ym5ldC5ub2RlLmFkZERlcGVuZGVuY3koY2lkcik7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIFZQQyBzdXBwb3J0cyBJUHY2IGFkZHJlc3Nlcy5cbiAqXG4gKiBAcGFyYW0gdnBjIFRoZSBWUEMgaW5zdGFuY2UgdG8gYmUgdmFsaWRhdGVkLlxuICogQHRocm93cyBWYWxpZGF0aW9uRXJyb3IgaWYgdGhlIFZQQyBkb2VzIG5vdCBzdXBwb3J0IElQdjYgYWRkcmVzc2VzLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgVlBDIHN1cHBvcnRzIElQdjYgYWRkcmVzc2VzLCBmYWxzZSBvdGhlcndpc2UuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTdXBwb3J0SXB2Nih2cGM6IElWcGNWMikge1xuICBpZiAodnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgIGlmICh2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrLnNvbWUoKHNlY29uZGFyeUFkZHJlc3MpID0+IHNlY29uZGFyeUFkZHJlc3MuYW1hem9uUHJvdmlkZWRJcHY2Q2lkckJsb2NrID09PSB0cnVlIHx8XG4gIHNlY29uZGFyeUFkZHJlc3MuaXB2NklwYW1Qb29sSWQgIT09IHVuZGVmaW5lZCB8fCBzZWNvbmRhcnlBZGRyZXNzLmlwdjZQb29sICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdUbyB1c2UgSVB2NiwgdGhlIFZQQyBtdXN0IGVuYWJsZSBJUHY2IHN1cHBvcnQuJyk7XG4gICAgfVxuICB9IGVsc2Uge3JldHVybiBmYWxzZTt9XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCBDSURSIHJhbmdlIGZhbGxzIHdpdGhpbiB0aGUgSVAgYWRkcmVzcyByYW5nZXMgb2YgdGhlIGdpdmVuIFZQQy5cbiAqXG4gKiBAcGFyYW0gdnBjIFRoZSBWUEMgaW5zdGFuY2UgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEBwYXJhbSBjaWRyUmFuZ2UgVGhlIENJRFIgcmFuZ2UgdG8gYmUgY2hlY2tlZC5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIENJRFIgcmFuZ2UgZmFsbHMgd2l0aGluIHRoZSBWUEMncyBJUCBhZGRyZXNzIHJhbmdlcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ2lkclJhbmdlcyh2cGM6IElWcGNWMiwgY2lkclJhbmdlOiBzdHJpbmcpIHtcbiAgY29uc3QgdnBjQ2lkckJsb2NrID0gW3ZwYy5pcHY0Q2lkckJsb2NrXTtcbiAgY29uc3Qgc3VibmV0Q2lkckJsb2NrID0gbmV3IENpZHJCbG9jayhjaWRyUmFuZ2UpO1xuICBjb25zdCBhbGxDaWRyczogQ2lkckJsb2NrW10gPSBbXTtcblxuICAvLyBTZWNvbmRhcnkgSVAgYWRkcmVzc2VzIGFzc29pY2F0ZWQgdXNpbmcgdXNlciBkZWZpbmVkIElQdjQgcmFuZ2VcbiAgaWYgKHZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICBmb3IgKGNvbnN0IGlwQWRkcmVzcyBvZiB2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICBpZiAoaXBBZGRyZXNzLmNpZHJCbG9jaykge1xuICAgICAgICB2cGNDaWRyQmxvY2sucHVzaChpcEFkZHJlc3MuY2lkckJsb2NrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY2lkcnMgPSB2cGNDaWRyQmxvY2subWFwKGNpZHIgPT4gbmV3IENpZHJCbG9jayhjaWRyKSk7XG4gICAgYWxsQ2lkcnMucHVzaCguLi5jaWRycyk7XG4gIH1cblxuICAvLyBTZWNvbmRhcnkgSVAgYWRkcmVzc2VzIGFzc29pY2F0ZWQgdXNpbmcgSVBBTSBJUHY0IHJhbmdlXG4gIGlmICh2cGMuaXB2NElwYW1Qcm92aXNpb25lZENpZHJzKSB7XG4gICAgY29uc3QgY2lkcnMgPSB2cGMuaXB2NElwYW1Qcm92aXNpb25lZENpZHJzLm1hcChjaWRyID0+IG5ldyBDaWRyQmxvY2soY2lkcikpO1xuICAgIGFsbENpZHJzLnB1c2goLi4uY2lkcnMpO1xuICB9XG5cbiAgLy8gSWYgbm8gSVB2NCBpcyBhc3NpZ25lZCBhcyBzZWNvbmRhcnkgYWRkcmVzc1xuICBpZiAoYWxsQ2lkcnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdObyBzZWNvbmRhcnkgSVAgYWRkcmVzcyBhdHRhY2hlZCB0byBWUEMnKTtcbiAgfVxuXG4gIHJldHVybiBhbGxDaWRycy5zb21lKGMgPT4gYy5jb250YWluc0NpZHIoc3VibmV0Q2lkckJsb2NrKSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGlmIHRoZSBwcm92aWRlZCBJUHY0IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3Mgd2l0aGluIHRoZSBnaXZlbiBWUEMuXG4gKlxuICogQHBhcmFtIHZwYyBUaGUgVlBDIGluc3RhbmNlIHRvIGNoZWNrIGFnYWluc3QuXG4gKiBAcGFyYW0gaXB2NENpZHJCbG9jayBUaGUgSVB2NCBDSURSIGJsb2NrIHRvIGJlIHZhbGlkYXRlZC5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIElQdjQgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBDSURSIGJsb2NrcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKi9cblxuZnVuY3Rpb24gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXModnBjOiBJVnBjVjIsIGlwdjRDaWRyQmxvY2s6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgYWxsU3VibmV0czogSVN1Ym5ldFYyW107XG4gIHRyeSB7XG4gICAgYWxsU3VibmV0cyA9IHZwYy5zZWxlY3RTdWJuZXRzKCkuc3VibmV0cztcbiAgfSBjYXRjaCAoZSkge1xuICAgICdObyBzdWJuZXRzIGluIFZQQyc7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaXBNYXA6IFtzdHJpbmcsIHN0cmluZ11bXSA9IG5ldyBBcnJheSgpO1xuXG4gIGNvbnN0IGlucHV0UmFuZ2UgPSBuZXcgQ2lkckJsb2NrKGlwdjRDaWRyQmxvY2spO1xuXG4gIGNvbnN0IGlucHV0SXBNYXA6IFtzdHJpbmcsIHN0cmluZ10gPSBbaW5wdXRSYW5nZS5taW5JcCgpLCBpbnB1dFJhbmdlLm1heElwKCldO1xuXG4gIGZvciAoY29uc3Qgc3VibmV0IG9mIGFsbFN1Ym5ldHMpIHtcbiAgICBjb25zdCBjaWRyQmxvY2sgPSBuZXcgQ2lkckJsb2NrKHN1Ym5ldC5pcHY0Q2lkckJsb2NrKTtcbiAgICBpcE1hcC5wdXNoKFtjaWRyQmxvY2subWluSXAoKSwgY2lkckJsb2NrLm1heElwKCldKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgcmFuZ2Ugb2YgaXBNYXApIHtcbiAgICBpZiAoaW5wdXRSYW5nZS5yYW5nZXNPdmVybGFwKHJhbmdlLCBpbnB1dElwTWFwKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBpZiB0aGUgcHJvdmlkZWQgSVB2NiBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc3VibmV0IENJRFIgYmxvY2tzIHdpdGhpbiB0aGUgZ2l2ZW4gVlBDLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byBjaGVjayBhZ2FpbnN0LlxuICogQHBhcmFtIGlwdjZDaWRyQmxvY2sgVGhlIElQdjYgQ0lEUiBibG9jayB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBJUHY2IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3MsIGZhbHNlIG90aGVyd2lzZS5cbiAqIEB0aHJvd3MgVmFsaWRhdGlvbkVycm9yIGlmIG5vIHN1Ym5ldHMgYXJlIGZvdW5kIGluIHRoZSBWUEMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXNpcHY2KHZwYzogSVZwY1YyLCBpcHY2Q2lkckJsb2NrOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IGFsbFN1Ym5ldHM6IElTdWJuZXRWMltdO1xuICB0cnkge1xuICAgIGFsbFN1Ym5ldHMgPSB2cGMuc2VsZWN0U3VibmV0cygpLnN1Ym5ldHM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAnTm8gc3VibmV0cyBpbiBWUEMnO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGlwdjZNYXA6IHN0cmluZ1tdPSBbXTtcblxuICBjb25zdCBpbnB1dFJhbmdlID0gbmV3IENpZHJCbG9ja0lwdjYoaXB2NkNpZHJCbG9jayk7XG5cbiAgbGV0IHJlc3VsdCA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBhbGxTdWJuZXRzKSB7XG4gICAgaWYgKHN1Ym5ldC5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICBjb25zdCBjaWRyQmxvY2sgPSBuZXcgQ2lkckJsb2NrSXB2NihzdWJuZXQuaXB2NkNpZHJCbG9jayk7XG4gICAgICBpcHY2TWFwLnB1c2goY2lkckJsb2NrLmNpZHIpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgcmFuZ2Ugb2YgaXB2Nk1hcCkge1xuICAgIGlmIChpbnB1dFJhbmdlLnJhbmdlc092ZXJsYXAocmFuZ2UsIGlucHV0UmFuZ2UuY2lkcikpIHtcbiAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
|
|
485
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibmV0LXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3VibmV0LXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyRztBQUMzRyxpREFTNkI7QUFFN0IsOEVBQThGO0FBQzlGLDBFQUEwRTtBQUMxRSwyQ0FBcUU7QUFDckUsbUNBQXFDO0FBQ3JDLGlDQUFxRTtBQVVyRTs7R0FFRztBQUNILE1BQWEsTUFBTTs7SUFDakI7OztPQUdHO0lBQ2EsSUFBSSxDQUFTO0lBQzdCLFlBQVksS0FBYTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztLQUNuQjs7QUFSSCx3QkFTQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxjQUFjLEdBQUcscUJBQXFCLENBQUM7QUFFN0M7O0dBRUc7QUFDSCxNQUFNLGNBQWMsR0FBRyxxQkFBcUIsQ0FBQztBQWlHN0M7Ozs7Ozs7Ozs7R0FVRztJQUVVLFFBQVE7NEJBRHBCLG9DQUFrQjs7OztzQkFDVyxzQkFBUTs7O3dCQUFoQixTQUFRLFdBQVE7Ozs7K0NBK05uQyxJQUFBLGtDQUFjLEdBQUU7WUFDakIsNE1BQU8sbUJBQW1CLDZEQVN6QjtZQXpPSCw2S0F5UEM7Ozs7O1FBeFBDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsaUNBQWlDLENBQUM7UUFFekY7O1dBRUc7UUFDSSxNQUFNLENBQUMsc0JBQXNCLENBQUMsS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBeUI7Ozs7Ozs7Ozs7WUFDMUY7OztlQUdHO1lBQ0gsTUFBTSxnQkFBaUIsU0FBUSxzQkFBUTtnQkFDckM7O21CQUVHO2dCQUNhLGFBQWEsR0FBWSxLQUFLLENBQUMsYUFBYSxDQUFDO2dCQUU3RDs7bUJBRUc7Z0JBQ2EsVUFBVSxHQUFnQixLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUUzRDs7bUJBRUc7Z0JBQ2EsZ0JBQWdCLEdBQVcsS0FBSyxD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RDs7Ozs7Ozs7R0FRRztBQUNILFNBQVMsaUNBQWlDLENBQUMsR0FBVyxFQUFFLGFBQXFCO0lBQzNFLElBQUksVUFBdUIsQ0FBQztJQUM1QixJQUFJLENBQUM7UUFDSCxVQUFVLEdBQUcsR0FBRyxDQUFDLGFBQWEsRUFBRSxDQUFDLE9BQU8sQ0FBQztJQUMzQyxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLG1CQUFtQixDQUFDO1FBQ3BCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sT0FBTyxHQUFZLEVBQUUsQ0FBQztJQUU1QixNQUFNLFVBQVUsR0FBRyxJQUFJLG9CQUFhLENBQUMsYUFBYSxDQUFDLENBQUM7SUFFcEQsSUFBSSxNQUFNLEdBQWEsS0FBSyxDQUFDO0lBRTdCLEtBQUssTUFBTSxNQUFNLElBQUksVUFBVSxFQUFFLENBQUM7UUFDaEMsSUFBSSxNQUFNLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDekIsTUFBTSxTQUFTLEdBQUcsSUFBSSxvQkFBYSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsQ0FBQztZQUMxRCxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVELEtBQUssTUFBTSxLQUFLLElBQUksT0FBTyxFQUFFLENBQUM7UUFDNUIsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNyRCxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ2hCLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IExhenksIE5hbWVzLCBSZXNvdXJjZSwgVGFncywgVG9rZW4sIFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yLCBWYWxpZGF0aW9uRXJyb3IgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQge1xuICBDZm5TdWJuZXQsXG4gIENmblN1Ym5ldFJvdXRlVGFibGVBc3NvY2lhdGlvbixcbiAgSU5ldHdvcmtBY2wsXG4gIElSb3V0ZVRhYmxlLFxuICBJU3VibmV0LFxuICBOZXR3b3JrQWNsLFxuICBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24sXG4gIFN1Ym5ldFR5cGUsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgU3VibmV0UmVmZXJlbmNlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMi9saWIvZWMyLmdlbmVyYXRlZCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHsgQ29uc3RydWN0LCBEZXBlbmRlbmN5R3JvdXAsIElEZXBlbmRhYmxlIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBSb3V0ZVRhYmxlIH0gZnJvbSAnLi9yb3V0ZSc7XG5pbXBvcnQgeyBDaWRyQmxvY2ssIENpZHJCbG9ja0lwdjYsIGRlZmF1bHRTdWJuZXROYW1lIH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IElWcGNWMiB9IGZyb20gJy4vdnBjLXYyLWJhc2UnO1xuXG4vKipcbiAqIEludGVyZmFjZSB0byBkZWZpbmUgc3VibmV0IENJRFJcbiAqL1xuaW50ZXJmYWNlIElDaWRyIHtcbiAgcmVhZG9ubHkgY2lkcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIElQdjQgb3IgSVB2NiBDSURSIHJhbmdlIGZvciB0aGUgc3VibmV0XG4gKi9cbmV4cG9ydCBjbGFzcyBJcENpZHIgaW1wbGVtZW50cyBJQ2lkciB7XG4gIC8qKlxuICAgKiBJUHY2IENJRFIgcmFuZ2UgZm9yIHRoZSBzdWJuZXRcbiAgICogQWxsb3dlZCBvbmx5IGlmIElQdjYgaXMgZW5hYmxlZCBvbiBWUGNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjaWRyOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBzdHJpbmcgKSB7XG4gICAgdGhpcy5jaWRyID0gcHJvcHM7XG4gIH1cbn1cblxuLyoqXG4gKiBWUEMgTmFtZSB0YWcgY29uc3RhbnRcbiAqL1xuY29uc3QgU1VCTkVUVFlQRV9UQUcgPSAnYXdzLWNkazpzdWJuZXQtdHlwZSc7XG5cbi8qKlxuICogU3VibmV0IE5hbWUgdGFnIGNvbnN0YW50XG4gKi9cbmNvbnN0IFNVQk5FVE5BTUVfVEFHID0gJ2F3cy1jZGs6c3VibmV0LW5hbWUnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIHN1Ym5ldCBmb3IgVlBDLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldFYyUHJvcHMge1xuLyoqXG4gKiBWUEMgUHJvcFxuICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBpcHY0IGNpZHIgdG8gYXNzaWduIHRvIHRoaXMgc3VibmV0LlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1zdWJuZXQuaHRtbCNjZm4tZWMyLXN1Ym5ldC1jaWRyYmxvY2tcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IElwQ2lkcjtcblxuICAvKipcbiAgICogSXB2NiBDSURSIFJhbmdlIGZvciBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBJcHY2IGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBJcENpZHI7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBBWiBmb3IgdGhlIHN1Ym5ldFxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gUm91dGUgZm9yIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgZGVmYXVsdCByb3V0ZSB0YWJsZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSByb3V0ZVRhYmxlPzogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGRlZmF1bHQgUm91dGVUYWJsZSBjcmVhdGVkIGJ5IENESyB0byBiZSB1c2VkIGZvciB0YWdnaW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gZGVmYXVsdCByb3V0ZSB0YWJsZSBuYW1lIGNyZWF0ZWQgYnkgQ0RLIGFzICdEZWZhdWx0Q0RLUm91dGVUYWJsZSdcbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRSb3V0ZVRhYmxlTmFtZSA/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFN1Ym5ldCB0byBjb25maWd1cmUuXG4gICAqXG4gICAqIFRoZSBTdWJuZXQgdHlwZSB3aWxsIGNvbnRyb2wgdGhlIGFiaWxpdHkgdG8gcm91dGUgYW5kIGNvbm5lY3QgdG8gdGhlXG4gICAqIEludGVybmV0LlxuICAgKlxuICAgKiBUT0RPOiBBZGQgdmFsaWRhdGlvbiBjaGVjayBgc3VibmV0VHlwZWAgd2hlbiBhZGRpbmcgcmVzb3VyY2VzIChlLmcuIGNhbm5vdCBhZGQgTmF0R2F0ZXdheSB0byBwcml2YXRlKVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0VHlwZTogU3VibmV0VHlwZTtcblxuICAvKipcbiAgICogU3VibmV0IG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRoIGFuIGF1dG9nZW5lcmF0ZWQgbmFtZSBieSBDREtcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGEgbmV0d29yayBpbnRlcmZhY2UgY3JlYXRlZCBpbiB0aGlzIHN1Ym5ldCByZWNlaXZlcyBhbiBJUHY2IGFkZHJlc3MuXG4gICAqIElmIHlvdSBzcGVjaWZ5IEFzc2lnbklwdjZBZGRyZXNzT25DcmVhdGlvbiwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IElwdjZDaWRyQmxvY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIGluIGNhc2Ugbm90IHByb3ZpZGVkIGFzIGFuIGlucHV0XG4gICAqL1xuICByZWFkb25seSBhc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb250cm9scyBpZiBpbnN0YW5jZXMgbGF1bmNoZWQgaW50byB0aGUgc3VibmV0IHNob3VsZCBiZSBhc3NpZ25lZCBhIHB1YmxpYyBJUCBhZGRyZXNzLlxuICAgKiBUaGlzIHByb3BlcnR5IGNhbiBvbmx5IGJlIHNldCBmb3IgcHVibGljIHN1Ym5ldHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIGluIGNhc2Ugbm90IHByb3ZpZGVkIGFzIGFuIGlucHV0XG4gICAqL1xuICByZWFkb25seSBtYXBQdWJsaWNJcE9uTGF1bmNoPzogYm9vbGVhbjtcblxufVxuXG4vKipcbiAqIEludGVyZmFjZSB3aXRoIGFkZGl0aW9uYWwgcHJvcGVydGllcyBmb3IgU3VibmV0VjJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3VibmV0VjIgZXh0ZW5kcyBJU3VibmV0IHtcblxuICAvKipcbiAgICogVGhlIElQdjYgQ0lEUiBibG9jayBmb3IgdGhpcyBzdWJuZXRcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHN1Ym5ldCAocHVibGljIG9yIHByaXZhdGUpIHRoYXQgdGhpcyBzdWJuZXQgcmVwcmVzZW50cy5cbiAgICpcbiAgICogQGF0dHJpYnV0ZSBTdWJuZXRUeXBlXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRUeXBlPzogU3VibmV0VHlwZTtcblxufVxuXG4vKipcbiAqIFRoZSBTdWJuZXRWMiBjbGFzcyByZXByZXNlbnRzIGEgc3VibmV0IHdpdGhpbiBhIFZQQyAoVmlydHVhbCBQcml2YXRlIENsb3VkKSBpbiBBV1MuXG4gKiBJdCBleHRlbmRzIHRoZSBSZXNvdXJjZSBjbGFzcyBhbmQgaW1wbGVtZW50cyB0aGUgSVN1Ym5ldCBpbnRlcmZhY2UuXG4gKlxuICogSW5zdGFuY2VzIG9mIHRoaXMgY2xhc3MgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGFuZCBtYW5hZ2Ugc3VibmV0cyB3aXRoaW4gYSBWcGNWMiBpbnN0YW5jZS5cbiAqIFN1Ym5ldHMgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCBzcGVjaWZpYyBJUCBhZGRyZXNzIHJhbmdlcyAoSVB2NCBhbmQgSVB2NiksIGF2YWlsYWJpbGl0eSB6b25lcyxcbiAqIGFuZCBzdWJuZXQgdHlwZXMgKGUuZy4sIHB1YmxpYywgcHJpdmF0ZSwgaXNvbGF0ZWQpLlxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6U3VibmV0XG4gKlxuICovXG5AcHJvcGVydHlJbmplY3RhYmxlXG5leHBvcnQgY2xhc3MgU3VibmV0VjIgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElTdWJuZXRWMiB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWVjMi1hbHBoYS5TdWJuZXRWMic7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBzdWJuZXQgdG8gdGhlIFZQQ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3VibmV0VjJBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBTdWJuZXRWMkF0dHJpYnV0ZXMpIDogSVN1Ym5ldFYyIHtcbiAgICAvKipcbiAgICAgKiBDbGFzcyB0byBkZWZpbmUgYW4gaW1wb3J0IGZvciBhbiBleGlzdGluZyBzdWJuZXRcbiAgICAgKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlN1Ym5ldFxuICAgICAqL1xuICAgIGNsYXNzIEltcG9ydGVkU3VibmV0VjIgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElTdWJuZXRWMiB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBJUHY2IENJRFIgQmxvY2sgYXNzaWduZWQgdG8gdGhpcyBzdWJuZXRcbiAgICAgICAqL1xuICAgICAgcHVibGljIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBzdHJpbmcgPSBhdHRycy5pcHY2Q2lkckJsb2NrO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSB0eXBlIG9mIHN1Ym5ldCAoZWcuIHB1YmxpYyBvciBwcml2YXRlKSB0aGF0IHRoaXMgc3VibmV0IHJlcHJlc2VudHMuXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzdWJuZXRUeXBlPzogU3VibmV0VHlwZSA9IGF0dHJzLnN1Ym5ldFR5cGU7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIGluIHdoaWNoIHN1Ym5ldCBpcyBsb2NhdGVkXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcgPSBhdHRycy5hdmFpbGFiaWxpdHlab25lO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBzdWJuZXRJZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgICAgICogUmVmZXJzIHRvIHRoZSBwaHlzaWNhbCBJRCBjcmVhdGVkXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nID0gYXR0cnMuc3VibmV0SWQ7XG5cbiAgICAgIC8qKlxuICAgICAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkOiBJRGVwZW5kYWJsZSA9IG5ldyBEZXBlbmRlbmN5R3JvdXAoKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgSVB2NCBDSURSIGJsb2NrIGFzc2lnbmVkIHRvIHRoaXMgc3VibmV0XG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmcgPSBhdHRycy5pcHY0Q2lkckJsb2NrO1xuXG4gICAgICAvKipcbiAgICAgICAqICBDdXJyZW50IHJvdXRlIHRhYmxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN1Ym5ldFxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGUgPSB7IHJvdXRlVGFibGVJZDogYXR0cnMucm91dGVUYWJsZUlkISB9O1xuXG4gICAgICBwdWJsaWMgZ2V0IHN1Ym5ldFJlZigpOiBTdWJuZXRSZWZlcmVuY2Uge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHN1Ym5ldElkOiB0aGlzLnN1Ym5ldElkLFxuICAgICAgICB9O1xuICAgICAgfVxuXG4gICAgICAvKipcbiAgICAgICAqIEFzc29jaWF0ZSBhIE5ldHdvcmsgQUNMIHdpdGggdGhpcyBzdWJuZXRcbiAgICAgICAqIFJlcXVpcmVkIGhlcmUgc2luY2UgaXQgaXMgaW1wbGVtZW50ZWQgaW4gdGhlIElTdWJuZXRWMlxuICAgICAgICovXG4gICAgICBwdWJsaWMgYXNzb2NpYXRlTmV0d29ya0FjbChhY2xJZDogc3RyaW5nLCBuZXR3b3JrQWNsOiBJTmV0d29ya0FjbCkge1xuICAgICAgICBjb25zdCBhY2xTY29wZSA9IG5ldHdvcmtBY2wgaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyBuZXR3b3JrQWNsIDogdGhpcztcbiAgICAgICAgY29uc3Qgb3RoZXIgPSBuZXR3b3JrQWNsIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gdGhpcyA6IG5ldHdvcmtBY2w7XG4gICAgICAgIG5ldyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24oYWNsU2NvcGUsIGFjbElkICsgTmFtZXMubm9kZVVuaXF1ZUlkKG90aGVyLm5vZGUpLCB7XG4gICAgICAgICAgbmV0d29ya0FjbCxcbiAgICAgICAgICBzdWJuZXQ6IHRoaXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydGVkU3VibmV0VjIoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhlIHN1Ym5ldCBpcyBsb2NhdGVkIGluXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICBEZXBlbmRlbmNpZXMgZm9yIGludGVybmV0IGNvbm5lY3Rpdml0eVxuICAgKiBUaGlzIFByb3BlcnR5IGV4cG9zZXMgdGhlIFJvdXRlVGFibGUtU3VibmV0IGFzc29jaWF0aW9uIHNvIHRoYXQgb3RoZXIgcmVzb3VyY2VzIGNhbiBkZXBlbmQgb24gaXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSB2YXJpYWJsZSBuYW1lIGBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkYCBkb2VzIG5vdCByZWZsZWN0IHdoYXQgaXQgYWN0dWFsbHkgaXMuXG4gICAqIFRoZSBuYW1pbmcgaXMgZW5mb3JjZWQgYnkgSVN1Ym5ldC4gV2UgbmVlZCB0byBrZWVwIGl0IHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkuXG4gICAqIEl0IGV4cG9zZXMgdGhlIFJvdXRlVGFibGUtU3VibmV0IGFzc29jaWF0aW9uIHNvIHRoYXQgb3RoZXIgcmVzb3VyY2VzIGNhbiBkZXBlbmQgb24gaXQuXG4gICAqIEUuZy4gUmVzb3VyY2VzIGluIGEgc3VibmV0LCB3aGVuIGJlaW5nIGRlbGV0ZWQsIG1heSBuZWVkIHRoZSBSb3V0ZVRhYmxlIHRvIGV4aXN0IGluIG9yZGVyIHRvIGRlbGV0ZSBwcm9wZXJseVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCA9IG5ldyBEZXBlbmRlbmN5R3JvdXAoKTtcblxuICAvKipcbiAgICogVGhlIElQdjQgQ0lEUiBibG9jayBmb3IgdGhpcyBzdWJuZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY2IENJRFIgQmxvY2sgZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXB2NkNpZHJCbG9jaz86IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IHN1Ym5ldFJlZigpOiBTdWJuZXRSZWZlcmVuY2Uge1xuICAgIHJldHVybiB7XG4gICAgICBzdWJuZXRJZDogdGhpcy5zdWJuZXRJZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHN1Ym5ldCAocHVibGljIG9yIHByaXZhdGUpIHRoYXQgdGhpcyBzdWJuZXQgcmVwcmVzZW50cy5cbiAgICogQGF0dHJpYnV0ZSBTdWJuZXRUeXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGU7XG5cbiAgcHJpdmF0ZSBfbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG5cbiAgcHJpdmF0ZSBfcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgU3VibmV0VjIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IENvbnN0cnVjdCB0aGF0IHRoaXMgcmVzb3VyY2Ugd2lsbCBiZSBwYXJ0IG9mLlxuICAgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIHJlc291cmNlLlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIHN1Ym5ldC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdWJuZXRWMlByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnN1Ym5ldE5hbWUgPz8gTGF6eS5zdHJpbmcoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDEyOCwgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnXycgfSksXG4gICAgICB9KSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIGNvbnN0IGlwdjRDaWRyQmxvY2sgPSBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHI7XG4gICAgY29uc3QgaXB2NkNpZHJCbG9jayA9IHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHI7XG5cbiAgICBpZiAoIWNoZWNrQ2lkclJhbmdlcyhwcm9wcy52cGMsIHByb3BzLmlwdjRDaWRyQmxvY2suY2lkcikpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ0NJRFIgYmxvY2sgc2hvdWxkIGJlIHdpdGhpbiB0aGUgcmFuZ2Ugb2YgVlBDJywgdGhpcyk7XG4gICAgfVxuXG4gICAgbGV0IG92ZXJsYXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgb3ZlcmxhcElwdjY6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmlwdjRDaWRyQmxvY2spKSB7XG4gICAgICBvdmVybGFwID0gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXMocHJvcHMudnBjLCBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHIpO1xuICAgIH1cblxuICAgIC8vIGNoZWNrIHdoZXRoZXIgVlBDIHN1cHBvcnRzIGlwdjZcbiAgICBpZiAocHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkciAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHIpKSB7XG4gICAgICB2YWxpZGF0ZVN1cHBvcnRJcHY2KHByb3BzLnZwYyk7XG4gICAgICBvdmVybGFwSXB2NiA9IHZhbGlkYXRlT3ZlcmxhcHBpbmdDaWRyUmFuZ2VzaXB2Nihwcm9wcy52cGMsIHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHIpO1xuICAgIH1cblxuICAgIGlmIChvdmVybGFwIHx8IG92ZXJsYXBJcHY2KSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdDSURSIGJsb2NrIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBibG9ja3MnLCB0aGlzKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uICYmICFwcm9wcy5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdJUHY2IENJRFIgYmxvY2sgaXMgcmVxdWlyZWQgd2hlbiBhc3NpZ25pbmcgSVB2NiBhZGRyZXNzIG9uIGNyZWF0aW9uJywgdGhpcyk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm1hcFB1YmxpY0lwT25MYXVuY2ggPT09IHRydWUgJiYgcHJvcHMuc3VibmV0VHlwZSAhPT0gU3VibmV0VHlwZS5QVUJMSUMpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IoJ21hcFB1YmxpY0lwT25MYXVuY2ggY2FuIG9ubHkgYmUgc2V0IHRvIHRydWUgZm9yIHB1YmxpYyBzdWJuZXRzJywgdGhpcyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc3VibmV0ID0gbmV3IENmblN1Ym5ldCh0aGlzLCAnU3VibmV0Jywge1xuICAgICAgdnBjSWQ6IHByb3BzLnZwYy52cGNJZCxcbiAgICAgIGNpZHJCbG9jazogaXB2NENpZHJCbG9jayxcbiAgICAgIGlwdjZDaWRyQmxvY2s6IGlwdjZDaWRyQmxvY2ssXG4gICAgICBhdmFpbGFiaWxpdHlab25lOiBwcm9wcy5hdmFpbGFiaWxpdHlab25lLFxuICAgICAgYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uOiBwcm9wcy5hc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24sXG4gICAgICBtYXBQdWJsaWNJcE9uTGF1bmNoOiBwcm9wcy5tYXBQdWJsaWNJcE9uTGF1bmNoLFxuICAgIH0pO1xuXG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHN1Ym5ldDtcbiAgICB0aGlzLmlwdjRDaWRyQmxvY2sgPSBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHI7XG4gICAgdGhpcy5pcHY2Q2lkckJsb2NrID0gcHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkcjtcbiAgICB0aGlzLnN1Ym5ldElkID0gc3VibmV0LnJlZjtcbiAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmUgPSBwcm9wcy5hdmFpbGFiaWxpdHlab25lO1xuXG4gICAgdGhpcy5fbmV0d29ya0FjbCA9IE5ldHdvcmtBY2wuZnJvbU5ldHdvcmtBY2xJZCh0aGlzLCAnQWNsJywgc3VibmV0LmF0dHJOZXR3b3JrQWNsQXNzb2NpYXRpb25JZCk7XG5cbiAgICBjb25zdCBpbmNsdWRlUmVzb3VyY2VUeXBlcyA9IFtDZm5TdWJuZXQuQ0ZOX1JFU09VUkNFX1RZUEVfTkFNRV07XG4gICAgaWYgKHByb3BzLnN1Ym5ldE5hbWUpIHtcbiAgICAgIFRhZ3Mub2Yoc3VibmV0KS5hZGQoU1VCTkVUTkFNRV9UQUcsIHByb3BzLnN1Ym5ldE5hbWUpO1xuICAgIH1cbiAgICBjb25zdCBzdWJuZXRUeXBlTmFtZSA9IGRlZmF1bHRTdWJuZXROYW1lKHByb3BzLnN1Ym5ldFR5cGUpID8/ICd1bmRlZmluZWQnO1xuICAgIFRhZ3Mub2Yoc3VibmV0KS5hZGQoU1VCTkVUVFlQRV9UQUcsIHN1Ym5ldFR5cGVOYW1lLCB7IGluY2x1ZGVSZXNvdXJjZVR5cGVzIH0pO1xuXG4gICAgaWYgKHByb3BzLnJvdXRlVGFibGUpIHtcbiAgICAgIHRoaXMuX3JvdXRlVGFibGUgPSBwcm9wcy5yb3V0ZVRhYmxlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBc3NpZ25pbmcgYSBkZWZhdWx0IHJvdXRlIHRhYmxlXG4gICAgICB0aGlzLl9yb3V0ZVRhYmxlID0gbmV3IFJvdXRlVGFibGUodGhpcywgJ1JvdXRlVGFibGUnLCB7XG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICByb3V0ZVRhYmxlTmFtZTogcHJvcHMuZGVmYXVsdFJvdXRlVGFibGVOYW1lID8/ICdEZWZhdWx0Q0RLUm91dGVUYWJsZScsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjb25zdCByb3V0ZUFzc29jID0gbmV3IENmblN1Ym5ldFJvdXRlVGFibGVBc3NvY2lhdGlvbih0aGlzLCAnUm91dGVUYWJsZUFzc29jaWF0aW9uJywge1xuICAgICAgc3VibmV0SWQ6IHRoaXMuc3VibmV0SWQsXG4gICAgICByb3V0ZVRhYmxlSWQ6IHRoaXMucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkLmFkZChyb3V0ZUFzc29jKTtcblxuICAgIHRoaXMuaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCA9IHRoaXMuX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ7XG5cbiAgICB0aGlzLnN1Ym5ldFR5cGUgPSBwcm9wcy5zdWJuZXRUeXBlO1xuICAgIHN0b3JlU3VibmV0VG9WcGNCeVR5cGUocHJvcHMudnBjLCB0aGlzLCBwcm9wcy5zdWJuZXRUeXBlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBc3NvY2lhdGUgYSBOZXR3b3JrIEFDTCB3aXRoIHRoaXMgc3VibmV0XG4gICAqXG4gICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgYXNzb2NpYXRpb24uXG4gICAqIEBwYXJhbSBuZXR3b3JrQWNsIFRoZSBOZXR3b3JrIEFDTCB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHN1Ym5ldC5cbiAgICogVGhpcyBhbGxvd3MgY29udHJvbGxpbmcgaW5ib3VuZCBhbmQgb3V0Ym91bmQgdHJhZmZpYyBmb3IgaW5zdGFuY2VzIGluIHRoaXMgc3VibmV0LlxuICAgKi9cbiAgQE1ldGhvZE1ldGFkYXRhKClcbiAgcHVibGljIGFzc29jaWF0ZU5ldHdvcmtBY2woaWQ6IHN0cmluZywgbmV0d29ya0FjbDogSU5ldHdvcmtBY2wpIHtcbiAgICB0aGlzLl9uZXR3b3JrQWNsID0gbmV0d29ya0FjbDtcblxuICAgIGNvbnN0IHNjb3BlID0gbmV0d29ya0FjbCBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IG5ldHdvcmtBY2wgOiB0aGlzO1xuICAgIGNvbnN0IG90aGVyID0gbmV0d29ya0FjbCBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IHRoaXMgOiBuZXR3b3JrQWNsO1xuICAgIG5ldyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24oc2NvcGUsIGlkICsgTmFtZXMubm9kZVVuaXF1ZUlkKG90aGVyLm5vZGUpLCB7XG4gICAgICBuZXR3b3JrQWNsLFxuICAgICAgc3VibmV0OiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgUm91dGUgVGFibGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3VibmV0XG4gICAqL1xuICBwdWJsaWMgZ2V0IHJvdXRlVGFibGUoKTogSVJvdXRlVGFibGUge1xuICAgIHJldHVybiB0aGlzLl9yb3V0ZVRhYmxlO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIE5ldHdvcmsgQUNMIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN1Ym5ldC5cbiAgICovXG5cbiAgcHVibGljIGdldCBuZXR3b3JrQWNsKCk6IElOZXR3b3JrQWNsIHtcbiAgICByZXR1cm4gdGhpcy5fbmV0d29ya0FjbDtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgcmVxdWlyZWQgdG8gaW1wb3J0IGEgc3VibmV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0VjJBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBBdmFpbGFiaWxpdHkgWm9uZSB0aGlzIHN1Ym5ldCBpcyBsb2NhdGVkIGluXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gQVogaW5mb3JtYXRpb24sIGNhbm5vdCB1c2UgQVogc2VsZWN0aW9uIGZlYXR1cmVzXG4gICAqL1xuICByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IENJRFIgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBDSURSIGluZm9ybWF0aW9uLCBjYW5ub3QgdXNlIENJRFIgZmlsdGVyIGZlYXR1cmVzXG4gICAqL1xuICByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IENJRFIgYmxvY2sgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBDSURSIGluZm9ybWF0aW9uLCBjYW5ub3QgdXNlIENJRFIgZmlsdGVyIGZlYXR1cmVzXG4gICAqL1xuICByZWFkb25seSBpcHY2Q2lkckJsb2NrPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHJvdXRlIHRhYmxlIGZvciB0aGlzIHBhcnRpY3VsYXIgc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gcm91dGUgdGFibGUgaW5mb3JtYXRpb24sIGNhbm5vdCBjcmVhdGUgVlBDIGVuZHBvaW50c1xuICAgKi9cbiAgcmVhZG9ubHkgcm91dGVUYWJsZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHN1Ym5ldCAocHVibGljIG9yIHByaXZhdGUpIHRoYXQgdGhpcyBzdWJuZXQgcmVwcmVzZW50cy5cbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldFR5cGU6IFN1Ym5ldFR5cGU7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGdpdmVuIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHN1Ym5ldCBuYW1lXG4gICAqL1xuICByZWFkb25seSBzdWJuZXROYW1lPzogc3RyaW5nO1xuXG59XG5cbnR5cGUgRGVwcmVjYXRlZFN1Ym5ldFR5cGUgPSAnRGVwcmVjYXRlZF9Jc29sYXRlZCcgfCAnRGVwcmVjYXRlZF9Qcml2YXRlJztcbmNvbnN0IHN1Ym5ldFR5cGVNYXA6IHsgW2tleSBpbiBTdWJuZXRUeXBlIHwgRGVwcmVjYXRlZFN1Ym5ldFR5cGVdOiAodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIpID0+IHZvaWQgfSA9IHtcbiAgW1N1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRF06ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLmlzb2xhdGVkU3VibmV0cy5wdXNoKHN1Ym5ldCksXG4gIFtTdWJuZXRUeXBlLlBVQkxJQ106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnB1YmxpY1N1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2cGMucHJpdmF0ZVN1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbJ0RlcHJlY2F0ZWRfSXNvbGF0ZWQnXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2cGMuaXNvbGF0ZWRTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgWydEZXByZWNhdGVkX1ByaXZhdGUnXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2cGMucHJpdmF0ZVN1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfTkFUXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2cGMucHJpdmF0ZVN1Ym5ldHMucHVzaChzdWJuZXQpLFxufTtcblxuLyoqXG4gKiBTdG9yZXMgdGhlIHByb3ZpZGVkIHN1Ym5ldCBpbiB0aGUgVlBDJ3MgY29sbGVjdGlvbiBvZiBzdWJuZXRzIGJhc2VkIG9uIHRoZSBzcGVjaWZpZWQgc3VibmV0IHR5cGUuXG4gKlxuICogQHBhcmFtIHZwYyBUaGUgVlBDIGluc3RhbmNlIHRvIHdoaWNoIHRoZSBzdWJuZXQgYmVsb25ncy5cbiAqIEBwYXJhbSBzdWJuZXQgVGhlIHN1Ym5ldCBpbnN0YW5jZSB0byBiZSBzdG9yZWQuXG4gKiBAcGFyYW0gdHlwZSBUaGUgdHlwZSBvZiB0aGUgc3VibmV0IChlLmcuLCBwdWJsaWMsIHByaXZhdGUsIGlzb2xhdGVkKS5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiBzdG9yZVN1Ym5ldFRvVnBjQnlUeXBlKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyLCB0eXBlOiBTdWJuZXRUeXBlKSB7XG4gIGNvbnN0IGZpbmRGdW5jdGlvblR5cGUgPSBzdWJuZXRUeXBlTWFwW3R5cGVdO1xuICBpZiAoZmluZEZ1bmN0aW9uVHlwZSkge1xuICAgIGZpbmRGdW5jdGlvblR5cGUodnBjLCBzdWJuZXQpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBVbnNjb3BlZFZhbGlkYXRpb25FcnJvcihgVW5zdXBwb3J0ZWQgc3VibmV0IHR5cGU6ICR7dHlwZX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOZWVkIHRvIHNldCBleHBsaWNpdCBkZXBlbmRlbmN5IGFzIGR1cmluZyBzdGFjayBkZWxldGlvbixcbiAgICogdGhlIGNpZHIgYmxvY2tzIG1heSBnZXQgZGVsZXRlZCBmaXJzdCBhbmQgd2lsbCBmYWlsIGFzIHRoZSBzdWJuZXRzIGFyZSBzdGlsbCB1c2luZyB0aGUgY2lkciBibG9ja3NcbiAgICovXG4gIGlmICh2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgZm9yIChjb25zdCBjaWRyIG9mIHZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICAgIHN1Ym5ldC5ub2RlLmFkZERlcGVuZGVuY3koY2lkcik7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIHdoZXRoZXIgdGhlIHByb3ZpZGVkIFZQQyBzdXBwb3J0cyBJUHY2IGFkZHJlc3Nlcy5cbiAqXG4gKiBAcGFyYW0gdnBjIFRoZSBWUEMgaW5zdGFuY2UgdG8gYmUgdmFsaWRhdGVkLlxuICogQHRocm93cyBWYWxpZGF0aW9uRXJyb3IgaWYgdGhlIFZQQyBkb2VzIG5vdCBzdXBwb3J0IElQdjYgYWRkcmVzc2VzLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgVlBDIHN1cHBvcnRzIElQdjYgYWRkcmVzc2VzLCBmYWxzZSBvdGhlcndpc2UuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTdXBwb3J0SXB2Nih2cGM6IElWcGNWMikge1xuICBpZiAodnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgIGlmICh2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrLnNvbWUoKHNlY29uZGFyeUFkZHJlc3MpID0+IHNlY29uZGFyeUFkZHJlc3MuYW1hem9uUHJvdmlkZWRJcHY2Q2lkckJsb2NrID09PSB0cnVlIHx8XG4gIHNlY29uZGFyeUFkZHJlc3MuaXB2NklwYW1Qb29sSWQgIT09IHVuZGVmaW5lZCB8fCBzZWNvbmRhcnlBZGRyZXNzLmlwdjZQb29sICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdUbyB1c2UgSVB2NiwgdGhlIFZQQyBtdXN0IGVuYWJsZSBJUHY2IHN1cHBvcnQuJyk7XG4gICAgfVxuICB9IGVsc2Uge3JldHVybiBmYWxzZTt9XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCBDSURSIHJhbmdlIGZhbGxzIHdpdGhpbiB0aGUgSVAgYWRkcmVzcyByYW5nZXMgb2YgdGhlIGdpdmVuIFZQQy5cbiAqXG4gKiBAcGFyYW0gdnBjIFRoZSBWUEMgaW5zdGFuY2UgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEBwYXJhbSBjaWRyUmFuZ2UgVGhlIENJRFIgcmFuZ2UgdG8gYmUgY2hlY2tlZC5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIENJRFIgcmFuZ2UgZmFsbHMgd2l0aGluIHRoZSBWUEMncyBJUCBhZGRyZXNzIHJhbmdlcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ2lkclJhbmdlcyh2cGM6IElWcGNWMiwgY2lkclJhbmdlOiBzdHJpbmcpIHtcbiAgY29uc3QgdnBjQ2lkckJsb2NrID0gW3ZwYy5pcHY0Q2lkckJsb2NrXTtcbiAgY29uc3Qgc3VibmV0Q2lkckJsb2NrID0gbmV3IENpZHJCbG9jayhjaWRyUmFuZ2UpO1xuICBjb25zdCBhbGxDaWRyczogQ2lkckJsb2NrW10gPSBbXTtcblxuICAvLyBTZWNvbmRhcnkgSVAgYWRkcmVzc2VzIGFzc29pY2F0ZWQgdXNpbmcgdXNlciBkZWZpbmVkIElQdjQgcmFuZ2VcbiAgaWYgKHZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICBmb3IgKGNvbnN0IGlwQWRkcmVzcyBvZiB2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICBpZiAoaXBBZGRyZXNzLmNpZHJCbG9jaykge1xuICAgICAgICB2cGNDaWRyQmxvY2sucHVzaChpcEFkZHJlc3MuY2lkckJsb2NrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY2lkcnMgPSB2cGNDaWRyQmxvY2subWFwKGNpZHIgPT4gbmV3IENpZHJCbG9jayhjaWRyKSk7XG4gICAgYWxsQ2lkcnMucHVzaCguLi5jaWRycyk7XG4gIH1cblxuICAvLyBTZWNvbmRhcnkgSVAgYWRkcmVzc2VzIGFzc29pY2F0ZWQgdXNpbmcgSVBBTSBJUHY0IHJhbmdlXG4gIGlmICh2cGMuaXB2NElwYW1Qcm92aXNpb25lZENpZHJzKSB7XG4gICAgY29uc3QgY2lkcnMgPSB2cGMuaXB2NElwYW1Qcm92aXNpb25lZENpZHJzLm1hcChjaWRyID0+IG5ldyBDaWRyQmxvY2soY2lkcikpO1xuICAgIGFsbENpZHJzLnB1c2goLi4uY2lkcnMpO1xuICB9XG5cbiAgLy8gSWYgbm8gSVB2NCBpcyBhc3NpZ25lZCBhcyBzZWNvbmRhcnkgYWRkcmVzc1xuICBpZiAoYWxsQ2lkcnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yKCdObyBzZWNvbmRhcnkgSVAgYWRkcmVzcyBhdHRhY2hlZCB0byBWUEMnKTtcbiAgfVxuXG4gIHJldHVybiBhbGxDaWRycy5zb21lKGMgPT4gYy5jb250YWluc0NpZHIoc3VibmV0Q2lkckJsb2NrKSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGlmIHRoZSBwcm92aWRlZCBJUHY0IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3Mgd2l0aGluIHRoZSBnaXZlbiBWUEMuXG4gKlxuICogQHBhcmFtIHZwYyBUaGUgVlBDIGluc3RhbmNlIHRvIGNoZWNrIGFnYWluc3QuXG4gKiBAcGFyYW0gaXB2NENpZHJCbG9jayBUaGUgSVB2NCBDSURSIGJsb2NrIHRvIGJlIHZhbGlkYXRlZC5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIElQdjQgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBDSURSIGJsb2NrcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKi9cblxuZnVuY3Rpb24gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXModnBjOiBJVnBjVjIsIGlwdjRDaWRyQmxvY2s6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgYWxsU3VibmV0czogSVN1Ym5ldFYyW107XG4gIHRyeSB7XG4gICAgYWxsU3VibmV0cyA9IHZwYy5zZWxlY3RTdWJuZXRzKCkuc3VibmV0cztcbiAgfSBjYXRjaCAoZSkge1xuICAgICdObyBzdWJuZXRzIGluIFZQQyc7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaXBNYXA6IFtzdHJpbmcsIHN0cmluZ11bXSA9IG5ldyBBcnJheSgpO1xuXG4gIGNvbnN0IGlucHV0UmFuZ2UgPSBuZXcgQ2lkckJsb2NrKGlwdjRDaWRyQmxvY2spO1xuXG4gIGNvbnN0IGlucHV0SXBNYXA6IFtzdHJpbmcsIHN0cmluZ10gPSBbaW5wdXRSYW5nZS5taW5JcCgpLCBpbnB1dFJhbmdlLm1heElwKCldO1xuXG4gIGZvciAoY29uc3Qgc3VibmV0IG9mIGFsbFN1Ym5ldHMpIHtcbiAgICBjb25zdCBjaWRyQmxvY2sgPSBuZXcgQ2lkckJsb2NrKHN1Ym5ldC5pcHY0Q2lkckJsb2NrKTtcbiAgICBpcE1hcC5wdXNoKFtjaWRyQmxvY2subWluSXAoKSwgY2lkckJsb2NrLm1heElwKCldKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgcmFuZ2Ugb2YgaXBNYXApIHtcbiAgICBpZiAoaW5wdXRSYW5nZS5yYW5nZXNPdmVybGFwKHJhbmdlLCBpbnB1dElwTWFwKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBpZiB0aGUgcHJvdmlkZWQgSVB2NiBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc3VibmV0IENJRFIgYmxvY2tzIHdpdGhpbiB0aGUgZ2l2ZW4gVlBDLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byBjaGVjayBhZ2FpbnN0LlxuICogQHBhcmFtIGlwdjZDaWRyQmxvY2sgVGhlIElQdjYgQ0lEUiBibG9jayB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBJUHY2IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3MsIGZhbHNlIG90aGVyd2lzZS5cbiAqIEB0aHJvd3MgVmFsaWRhdGlvbkVycm9yIGlmIG5vIHN1Ym5ldHMgYXJlIGZvdW5kIGluIHRoZSBWUEMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXNpcHY2KHZwYzogSVZwY1YyLCBpcHY2Q2lkckJsb2NrOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgbGV0IGFsbFN1Ym5ldHM6IElTdWJuZXRWMltdO1xuICB0cnkge1xuICAgIGFsbFN1Ym5ldHMgPSB2cGMuc2VsZWN0U3VibmV0cygpLnN1Ym5ldHM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAnTm8gc3VibmV0cyBpbiBWUEMnO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGlwdjZNYXA6IHN0cmluZ1tdPSBbXTtcblxuICBjb25zdCBpbnB1dFJhbmdlID0gbmV3IENpZHJCbG9ja0lwdjYoaXB2NkNpZHJCbG9jayk7XG5cbiAgbGV0IHJlc3VsdCA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBhbGxTdWJuZXRzKSB7XG4gICAgaWYgKHN1Ym5ldC5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICBjb25zdCBjaWRyQmxvY2sgPSBuZXcgQ2lkckJsb2NrSXB2NihzdWJuZXQuaXB2NkNpZHJCbG9jayk7XG4gICAgICBpcHY2TWFwLnB1c2goY2lkckJsb2NrLmNpZHIpO1xuICAgIH1cbiAgfVxuXG4gIGZvciAoY29uc3QgcmFuZ2Ugb2YgaXB2Nk1hcCkge1xuICAgIGlmIChpbnB1dFJhbmdlLnJhbmdlc092ZXJsYXAocmFuZ2UsIGlucHV0UmFuZ2UuY2lkcikpIHtcbiAgICAgIHJlc3VsdCA9IHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cbiJdfQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IResource
|
|
1
|
+
import { IResource } from 'aws-cdk-lib/core';
|
|
2
2
|
/**
|
|
3
3
|
* Represents a Transit Gateway Route Table Association.
|
|
4
4
|
*/
|
|
@@ -9,10 +9,3 @@ export interface ITransitGatewayAssociation extends IResource {
|
|
|
9
9
|
*/
|
|
10
10
|
readonly transitGatewayAssociationId: string;
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* A Transit Gateway Association.
|
|
14
|
-
* @internal
|
|
15
|
-
*/
|
|
16
|
-
export declare abstract class TransitGatewayAssociationBase extends Resource implements ITransitGatewayAssociation {
|
|
17
|
-
abstract readonly transitGatewayAssociationId: string;
|
|
18
|
-
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IResource
|
|
1
|
+
import { IResource } from 'aws-cdk-lib/core';
|
|
2
2
|
/**
|
|
3
3
|
* Represents a Transit Gateway Attachment.
|
|
4
4
|
*/
|
|
@@ -9,10 +9,3 @@ export interface ITransitGatewayAttachment extends IResource {
|
|
|
9
9
|
*/
|
|
10
10
|
readonly transitGatewayAttachmentId: string;
|
|
11
11
|
}
|
|
12
|
-
/**
|
|
13
|
-
* A Transit Gateway Attachment.
|
|
14
|
-
* @internal
|
|
15
|
-
*/
|
|
16
|
-
export declare abstract class TransitGatewayAttachmentBase extends Resource implements ITransitGatewayAttachment {
|
|
17
|
-
abstract readonly transitGatewayAttachmentId: string;
|
|
18
|
-
}
|