@aws-cdk/aws-ec2-alpha 2.245.0-alpha.0 → 2.247.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 +268 -210
- package/README.md +1 -1
- package/lib/ipam.d.ts +3 -3
- package/lib/ipam.js +2 -2
- package/lib/route.js +16 -15
- package/lib/subnet-v2.js +11 -10
- package/lib/transit-gateway-route-table-association.js +1 -1
- package/lib/transit-gateway-route-table-propagation.js +1 -1
- package/lib/transit-gateway-route-table.js +1 -1
- package/lib/transit-gateway-route.js +2 -2
- package/lib/transit-gateway-vpc-attachment.js +1 -1
- package/lib/transit-gateway.js +1 -1
- package/lib/util.js +1 -2
- package/lib/vpc-v2-base.d.ts +4 -4
- package/lib/vpc-v2-base.js +5 -4
- package/lib/vpc-v2.js +2 -2
- package/package.json +6 -6
package/lib/vpc-v2-base.js
CHANGED
|
@@ -6,6 +6,7 @@ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
|
6
6
|
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
7
|
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
8
8
|
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
9
|
+
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
|
|
9
10
|
const constructs_1 = require("constructs");
|
|
10
11
|
const route_1 = require("./route");
|
|
11
12
|
const util_1 = require("./util");
|
|
@@ -15,7 +16,7 @@ const util_1 = require("./util");
|
|
|
15
16
|
* For more information, see the {@link https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.Vpc.html|AWS CDK Documentation on VPCs}.
|
|
16
17
|
*/
|
|
17
18
|
class VpcV2Base extends aws_cdk_lib_1.Resource {
|
|
18
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2Base", version: "2.
|
|
19
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2Base", version: "2.247.0-alpha.0" };
|
|
19
20
|
/**
|
|
20
21
|
* List of public subnets in this VPC
|
|
21
22
|
*/
|
|
@@ -106,7 +107,7 @@ class VpcV2Base extends aws_cdk_lib_1.Resource {
|
|
|
106
107
|
const vpnRoutePropagation = options.vpnRoutePropagation ?? [{}];
|
|
107
108
|
const routeTableIds = (0, util_1.allRouteTableIds)((0, util_1.flatten)(vpnRoutePropagation.map(s => this.selectSubnets(s).subnets)));
|
|
108
109
|
if (routeTableIds.length === 0) {
|
|
109
|
-
aws_cdk_lib_1.Annotations.of(this)._addTrackableError(
|
|
110
|
+
aws_cdk_lib_1.Annotations.of(this)._addTrackableError((0, helpers_internal_1.lit) `VpnGatewayNoMatchingSubnets`, `enableVpnGateway: no subnets matching selection: '${JSON.stringify(vpnRoutePropagation)}'. Select other subnets to add routes to.`);
|
|
110
111
|
}
|
|
111
112
|
const routePropagation = new aws_ec2_1.CfnVPNGatewayRoutePropagation(this, 'RoutePropagation', {
|
|
112
113
|
routeTableIds,
|
|
@@ -325,7 +326,7 @@ class VpcV2Base extends aws_cdk_lib_1.Resource {
|
|
|
325
326
|
throw error;
|
|
326
327
|
}
|
|
327
328
|
if (options.connectivityType === route_1.NatConnectivityType.PUBLIC && !this._internetGatewayId) {
|
|
328
|
-
throw new aws_cdk_lib_1.ValidationError(
|
|
329
|
+
throw new aws_cdk_lib_1.ValidationError((0, helpers_internal_1.lit) `PublicNatGatewayRequiresInternetGateway`, 'Cannot add a Public NAT Gateway without an Internet Gateway enabled on VPC', this);
|
|
329
330
|
}
|
|
330
331
|
return new route_1.NatGateway(this, `NATGateway-${options.subnet.node.id}`, {
|
|
331
332
|
vpc: this,
|
|
@@ -530,4 +531,4 @@ function tap(x, fn) {
|
|
|
530
531
|
fn(x);
|
|
531
532
|
return x;
|
|
532
533
|
}
|
|
533
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXYyLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2cGMtdjItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEwRTtBQWExRSxpREFhNkI7QUFFN0IsaURBQXNGO0FBRXRGLDJDQUF5RDtBQUt6RCxtQ0FRaUI7QUFFakIsaUNBQW1GO0FBK0xuRjs7OztHQUlHO0FBQ0gsTUFBc0IsU0FBVSxTQUFRLHNCQUFROztJQWdCOUM7O09BRUc7SUFDYSxhQUFhLEdBQWMsRUFBRSxDQUFDO0lBRTlDOztPQUVHO0lBQ2EsY0FBYyxHQUFjLEVBQUUsQ0FBQztJQU8vQzs7T0FFRztJQUNhLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztJQU9qRDs7OztPQUlHO0lBQ2dCLGdDQUFnQyxHQUFHLElBQUksNEJBQWUsRUFBRSxDQUFDO0lBc0M1RTs7T0FFRztJQUNPLDBCQUEwQixHQUFZLEtBQUssQ0FBQztJQUV0RDs7O09BR0c7SUFDTyxhQUFhLENBQVU7SUFFakM7OztPQUdHO0lBQ08sa0JBQWtCLENBQVU7SUFFdEM7OztPQUdHO0lBQ08sNEJBQTRCLENBQVU7SUFFaEQ7Ozs7O09BS0c7SUFDSSxhQUFhLENBQUMsWUFBNkIsRUFBRTtRQUNsRCxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDcEQsTUFBTSxJQUFJLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXpDLE9BQU87WUFDTCxTQUFTLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUM7WUFDdkMsSUFBSSxpQkFBaUIsS0FBZSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbEYsK0JBQStCLEVBQUUsR0FBRyxDQUFDLElBQUksbUJBQW1CLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQywrQkFBK0IsQ0FBQyxDQUFDLENBQUM7WUFDcEksT0FBTztZQUNQLFNBQVMsRUFBRSxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN6QyxlQUFlLEVBQUUsSUFBSSxDQUFDLDBCQUEwQjtTQUNqRCxDQUFDO0tBQ0g7SUFFRCxJQUFXLE1BQU07UUFDZixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1NBQ2xCLENBQUM7S0FDSDtJQUVEOzs7T0FHRztJQUNJLGdCQUFnQixDQUFDLE9BQWdDOzs7Ozs7Ozs7O1FBQ3RELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztRQUMvRCxDQUFDO1FBRUQsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQkFBVSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7WUFDcEQsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLElBQUksRUFBRSwyQkFBaUIsQ0FBQyxPQUFPO1NBQ2hDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxhQUFhLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQztRQUUxQyxNQUFNLFVBQVUsR0FBRyxJQUFJLGlDQUF1QixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDL0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO1lBQ2pCLFlBQVksRUFBRSxJQUFJLENBQUMsYUFBYTtTQUNqQyxDQUFDLENBQUM7UUFFSCxxRUFBcUU7UUFDckUsTUFBTSxtQkFBbUIsR0FBRyxPQUFPLENBQUMsbUJBQW1CLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoRSxNQUFNLGFBQWEsR0FBRyxJQUFBLHVCQUFnQixFQUFDLElBQUEsY0FBTyxFQUFDLG1CQUFtQixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRTdHLElBQUksYUFBYSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUMvQix5QkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyw2QkFBNkIsRUFBRSxxREFBcUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQzlNLENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLElBQUksdUNBQTZCLENBQUMsSUFBSSxFQUFFLGtCQUFrQixFQUFFO1lBQ25GLGFBQWE7WUFDYixZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWE7U0FDakMsQ0FBQyxDQUFDO1FBQ0QsK0VBQStFO1FBQy9FLGlEQUFpRDtRQUNqRCxnSEFBZ0g7UUFDbEgsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztLQUNqRDtJQUVEOztPQUVHO0lBQ0ksa0JBQWtCLENBQUMsT0FBNEI7Ozs7Ozs7Ozs7UUFDcEQsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLG9CQUFZLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUN0RCxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxVQUFVLENBQUMsY0FBYyxDQUFDO1FBRS9DLE9BQU8sVUFBVSxDQUFDO0tBQ25CO0lBRUQ7O09BRUc7SUFDSSxnQkFBZ0IsQ0FBQyxFQUFVLEVBQUUsT0FBNkI7UUFDL0QsT0FBTyxJQUFJLHVCQUFhLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUNqQyxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSSxvQkFBb0IsQ0FBQyxFQUFVLEVBQUUsT0FBaUM7UUFDdkUsT0FBTyxJQUFJLDJCQUFpQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDckMsR0FBRyxPQUFPO1lBQ1YsR0FBRyxFQUFFLElBQUk7U0FDVixDQUFDLENBQUM7S0FDSjtJQUVEOztPQUVHO0lBQ0ksb0JBQW9CLENBQUMsRUFBVSxFQUFFLE9BQW9DO1FBQzFFLE9BQU8sSUFBSSw4QkFBb0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ3hDLEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7T0FFRztJQUNJLGtCQUFrQixDQUFDLEVBQVUsRUFBRSxPQUFrQztRQUN0RSxPQUFPLElBQUksNEJBQWtCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUN0QyxHQUFHLEVBQUUsSUFBSTtZQUNULEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztLQUNKO0lBRUQ7Ozs7O09BS0c7SUFDSSw0QkFBNEIsQ0FBQyxPQUEwQzs7Ozs7Ozs7OztRQUM1RSxNQUFNLEdBQUcsR0FBRyxJQUFJLGlDQUF5QixDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDOUQsR0FBRyxFQUFFLElBQUk7WUFDVCw2QkFBNkIsRUFBRSxPQUFPLEVBQUUsNkJBQTZCO1NBQ3RFLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyw0QkFBNEIsR0FBRyxHQUFHLENBQUMsY0FBYyxDQUFDO1FBRXZELElBQUksT0FBTyxDQUFDO1FBQ1osSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUM1QixPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLGdCQUFnQixDQUFDLDJCQUEyQixLQUFLLElBQUk7Z0JBQ3JILGdCQUFnQixDQUFDLGNBQWMsS0FBSyxTQUFTLElBQUksZ0JBQWdCLENBQUMsYUFBYSxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUM7UUFDaEcsQ0FBQztRQUVELElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztRQUMzRSxDQUFDO1FBRUQsSUFBSSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDckIsK0NBQStDO1lBQy9DLE1BQU0sT0FBTyxHQUFHLElBQUEsY0FBTyxFQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQ2pGLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUMzRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQ7OztPQUdHO0lBQ0ssaUJBQWlCLENBQUMsTUFBaUIsRUFBRSxHQUE4QixFQUFFLFdBQW9CO1FBQy9GLE1BQU0sZUFBZSxHQUFHLFdBQVcsSUFBSSxNQUFNLENBQUM7UUFDOUMsSUFBSSxhQUFLLENBQUMsSUFBSSxFQUFFLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLGNBQWMsRUFBRTtZQUMvQyxVQUFVLEVBQUUsTUFBTSxDQUFDLFVBQVU7WUFDN0IsV0FBVyxFQUFFLGVBQWUsRUFBRSxxQkFBcUI7WUFDbkQsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUN4QixTQUFTLEVBQUUsY0FBYztTQUMxQixDQUFDLENBQUM7S0FDSjtJQUVEOzs7O09BSUc7SUFDSSxrQkFBa0IsQ0FBQyxPQUFnQzs7Ozs7Ozs7OztRQUN4RCxJQUFJLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1lBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0RBQWdELENBQUMsQ0FBQztRQUNwRSxDQUFDO1FBRUQsTUFBTSxHQUFHLEdBQUcsSUFBSSx1QkFBZSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRTtZQUN2RCxHQUFHLEVBQUUsSUFBSTtZQUNULG1CQUFtQixFQUFFLE9BQU8sRUFBRSxtQkFBbUI7U0FDbEQsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUMvQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsR0FBRyxDQUFDLGNBQWMsQ0FBQztRQUU3Qyw2Q0FBNkM7UUFDN0MsSUFBSSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7WUFDckIsTUFBTSxPQUFPLEdBQUcsSUFBQSxjQUFPLEVBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7WUFDakYsK0NBQStDO1lBQy9DLElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBQ3RDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3JELENBQUMsQ0FBQyxDQUFDO1lBQ0gsMkZBQTJGO1FBQzdGLENBQUM7YUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sSUFBSSxJQUFJLENBQUMsYUFBYSxFQUFFLENBQUM7WUFDbkQsOEVBQThFO1lBQzlFLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUNqRCxJQUFJLENBQUMsdUJBQXVCLENBQUMsTUFBTSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsQ0FBQztZQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxPQUFPLEdBQUcsQ0FBQztLQUNaO0lBRUQ7OztPQUdHO0lBQ0ssdUJBQXVCLENBQUMsTUFBaUIsRUFBRSxHQUFvQixFQUFFLE9BQWdDO1FBQ3ZHLG9DQUFvQztRQUNwQyxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixJQUFJLGFBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsbUJBQW1CLEVBQUU7Z0JBQ3BELFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVTtnQkFDN0IsV0FBVyxFQUFFLE9BQU8sRUFBRSxlQUFlLElBQUksTUFBTTtnQkFDL0MsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtnQkFDeEIsU0FBUyxFQUFFLHFCQUFxQjthQUNqQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBQ0Qsb0NBQW9DO1FBQ3BDLElBQUksYUFBSyxDQUFDLElBQUksRUFBRSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxlQUFlLEVBQUU7WUFDaEQsVUFBVSxFQUFFLE1BQU0sQ0FBQyxVQUFVO1lBQzdCLFdBQVcsRUFBRSxPQUFPLEVBQUUsZUFBZSxJQUFJLFdBQVc7WUFDcEQsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRTtZQUN4QixTQUFTLEVBQUUscUJBQXFCO1NBQ2pDLENBQUMsQ0FBQztLQUNKO0lBRUQ7O09BRUc7SUFDSyxjQUFjLENBQ3BCLE9BQW9CLEVBQ3BCLFlBQXlDO1FBRXpDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQztRQUMzQyxNQUFNLG9CQUFvQixHQUFHLElBQUksR0FBRyxFQUFVLENBQUM7UUFDL0MsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO1lBQ3pCLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDO2dCQUN6Qyx5QkFBVyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxZQUFZLENBQUMsd0JBQXdCLEVBQUUsU0FBUyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsbUZBQW1GLENBQUMsQ0FBQztZQUMxSyxDQUFDO1lBQ0QsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7Z0JBQzFDLElBQUksTUFBTSxDQUFDLFVBQVUsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7b0JBQ25GLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztvQkFDckIsb0JBQW9CLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLENBQUM7Z0JBQzNELENBQUM7Z0JBQ0QsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkMsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7O09BR0c7SUFDSSxhQUFhLENBQUMsT0FBMEI7Ozs7Ozs7Ozs7UUFDN0MsSUFBSSxPQUFPLENBQUMsZ0JBQWdCLEtBQUssMkJBQW1CLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7WUFDeEYsTUFBTSxJQUFJLDZCQUFlLENBQUMseUNBQXlDLEVBQUUsNEVBQTRFLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDM0osQ0FBQztRQUNELE9BQU8sSUFBSSxrQkFBVSxDQUFDLElBQUksRUFBRSxjQUFjLE9BQU8sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ2xFLEdBQUcsRUFBRSxJQUFJO1lBQ1QsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7T0FFRztJQUNJLFVBQVUsQ0FBQyxFQUFVLEVBQUUsT0FBd0I7UUFDcEQsT0FBTyxJQUFJLGlCQUFPLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRTtZQUMzQixZQUFZLEVBQUUsNkJBQW1CLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztZQUMvQyxHQUFHLE9BQU87U0FDWCxDQUFDLENBQUM7S0FDSjtJQUVEOztPQUVHO0lBQ0kscUJBQXFCLENBQUMsa0JBQTBCO1FBQ3JELE1BQU0sV0FBVyxHQUFHLElBQUksY0FBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRTtZQUNuRCxTQUFTLEVBQUUsSUFBSSwwQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQztZQUNuRCxRQUFRLEVBQUUsZ0JBQWdCO1lBQzFCLFdBQVcsRUFBRSxrQ0FBa0M7U0FDaEQsQ0FBQyxDQUFDO1FBRUgsV0FBVyxDQUFDLFdBQVcsQ0FBQyxJQUFJLHlCQUFlLENBQUM7WUFDMUMsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztZQUNwQixPQUFPLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztZQUMzQyxTQUFTLEVBQUUsQ0FBQyxPQUFPLGlCQUFHLENBQUMsU0FBUyxRQUFRLElBQUksQ0FBQyxNQUFNLElBQUksSUFBSSxDQUFDLGNBQWMsUUFBUSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUM7U0FDaEcsQ0FBQyxDQUFDLENBQUM7UUFFSixXQUFXLENBQUMsV0FBVyxDQUFDLElBQUkseUJBQWUsQ0FBQztZQUMxQyxPQUFPLEVBQUUsQ0FBQyxnQ0FBZ0MsQ0FBQztZQUMzQyxNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO1lBQ3BCLFNBQVMsRUFBRSxDQUFDLE9BQU8saUJBQUcsQ0FBQyxTQUFTLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYywyQkFBMkIsQ0FBQztZQUN0RyxVQUFVLEVBQUU7Z0JBQ1YsWUFBWSxFQUFFO29CQUNaLGlCQUFpQixFQUFFLE9BQU8saUJBQUcsQ0FBQyxTQUFTLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsY0FBYyxRQUFRLElBQUksQ0FBQyxLQUFLLEVBQUU7aUJBQ3RHO2FBQ0Y7U0FDRixDQUFDLENBQUMsQ0FBQztRQUVKLE9BQU8sV0FBVyxDQUFDO0tBQ3BCO0lBRUQ7O09BRUc7SUFDSSx1QkFBdUIsQ0FBQyxFQUFVLEVBQUUsT0FBb0M7Ozs7Ozs7Ozs7UUFDN0UsT0FBTyxJQUFJLDRCQUFvQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDeEMsWUFBWSxFQUFFLElBQUk7WUFDbEIsR0FBRyxPQUFPO1NBQ1gsQ0FBQyxDQUFDO0tBQ0o7SUFFRDs7T0FFRztJQUNILElBQVcsWUFBWTtRQUNyQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7S0FDM0I7SUFFRDs7T0FFRztJQUNILElBQVcsaUJBQWlCO1FBQzFCLE9BQU8sSUFBSSxDQUFDLGtCQUFrQixDQUFDO0tBQ2hDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLDJCQUEyQjtRQUNwQyxPQUFPLElBQUksQ0FBQyw0QkFBNEIsQ0FBQztLQUMxQztJQUVEOztPQUVHO0lBQ08sbUJBQW1CLENBQUMsWUFBNkIsRUFBRTtRQUMzRCxTQUFTLEdBQUcsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRW5ELElBQUksU0FBUyxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwQyxPQUFPLFNBQVMsQ0FBQyxPQUFPLENBQUM7UUFDM0IsQ0FBQztRQUVELElBQUksT0FBTyxDQUFDO1FBRVosSUFBSSxTQUFTLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDLENBQUMsaUJBQWlCO1lBQzlELE9BQU8sR0FBRyxJQUFJLENBQUMseUJBQXlCLENBQUMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7YUFBTSxDQUFDLENBQUMscUJBQXFCO1lBQzVCLE1BQU0sSUFBSSxHQUFHLFNBQVMsQ0FBQyxVQUFVLElBQUksb0JBQVUsQ0FBQyxtQkFBbUIsQ0FBQztZQUNwRSxPQUFPLEdBQUcsSUFBSSxDQUFDLHlCQUF5QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2pELENBQUM7UUFFRCx3QkFBd0I7UUFDeEIsT0FBTyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLEVBQUUsU0FBUyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUMsQ0FBQztRQUUxRSxPQUFPLE9BQU8sQ0FBQztLQUNoQjtJQUVPLGtCQUFrQixDQUFDLE9BQWtCLEVBQUUsT0FBdUI7UUFDcEUsSUFBSSxRQUFRLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLGdDQUFnQztRQUNoQyxLQUFLLE1BQU0sTUFBTSxJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQzdCLFFBQVEsR0FBRyxNQUFNLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLENBQUM7UUFDRCxPQUFPLFFBQVEsQ0FBQztLQUNqQjtJQUVPLHlCQUF5QixDQUFDLFNBQWlCO1FBQ2pELE1BQU0sVUFBVSxHQUFHLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsRUFBRSxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUM1RixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBQSxxQ0FBOEIsRUFBQyxDQUFDLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUV4RixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDN0QsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLHFDQUE4QixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLE1BQU0sSUFBSSxLQUFLLENBQUMseUNBQXlDLFNBQVMsbUNBQW1DLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDaEgsQ0FBQztRQUVELE9BQU8sT0FBTyxDQUFDO0tBQ2hCO0lBRU8seUJBQXlCLENBQUMsVUFBc0I7UUFFdEQsTUFBTSxVQUFVLEdBQStEO1lBQzdFLENBQUMsb0JBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLElBQUksQ0FBQyxlQUFlO1lBQ25ELENBQUMscUJBQXFCLENBQUMsRUFBRSxJQUFJLENBQUMsZUFBZTtZQUM3QyxDQUFDLG9CQUFVLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNsRCxDQUFDLG9CQUFVLENBQUMsbUJBQW1CLENBQUMsRUFBRSxJQUFJLENBQUMsY0FBYztZQUNyRCxDQUFDLG9CQUFvQixDQUFDLEVBQUUsSUFBSSxDQUFDLGNBQWM7WUFDM0MsQ0FBQyxvQkFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksQ0FBQyxhQUFhO1NBQ3hDLENBQUM7UUFFRixNQUFNLE9BQU8sR0FBRyxVQUFVLENBQUMsVUFBVSxDQUFFLENBQUM7UUFFeEMsMEVBQTBFO1FBQzFFLGtCQUFrQjtRQUVsQixJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLDBCQUEwQixFQUFFLENBQUM7WUFDN0QsTUFBTSxjQUFjLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDMUgsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsVUFBVSxpREFBaUQsY0FBYyxFQUFFLENBQUMsQ0FBQztRQUNoSCxDQUFDO1FBRUQsT0FBTyxPQUFPLENBQUM7S0FDaEI7SUFFRDs7Ozs7T0FLRztJQUNLLHNCQUFzQixDQUFDLFNBQTBCO1FBQ3ZELHNGQUFzRjtRQUN0RixJQUFJLFlBQVksSUFBSSxTQUFTLElBQUksU0FBUyxDQUFDLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUNwRSxJQUFJLFNBQVMsQ0FBQyxlQUFlLEtBQUssU0FBUyxFQUFFLENBQUM7Z0JBQzVDLE1BQU0sSUFBSSxLQUFLLENBQUMsOEZBQThGLENBQUMsQ0FBQztZQUNsSCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04seUJBQVcsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsWUFBWSxDQUFDLHVDQUF1QyxFQUFFLDJGQUEyRixDQUFDLENBQUM7WUFDMUssQ0FBQztZQUNELFNBQVMsR0FBRyxFQUFFLEdBQUcsU0FBUyxFQUFFLGVBQWUsRUFBRSxTQUFTLENBQUMsVUFBb0IsRUFBRSxDQUFDO1FBQ2hGLENBQUM7UUFFRCxNQUFNLG1CQUFtQixHQUFpQyxDQUFDLFNBQVMsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUN2RyxNQUFNLGtCQUFrQixHQUFHLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsS0FBSyxTQUFTLENBQUMsQ0FBQztRQUMzRixJQUFJLGtCQUFrQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxNQUFNLElBQUksS0FBSyxDQUFDLGdCQUFnQixrQkFBa0Isd0NBQXdDLENBQUMsQ0FBQztRQUM5RixDQUFDO1FBRUQsSUFBSSxTQUFTLENBQUMsVUFBVSxLQUFLLFNBQVMsSUFBSSxTQUFTLENBQUMsZUFBZSxLQUFLLFNBQVMsSUFBSSxTQUFTLENBQUMsT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ3JILGtFQUFrRTtZQUNsRSxJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLE1BQU07Z0JBQ3pDLENBQUMsQ0FBQyxvQkFBVSxDQUFDLG1CQUFtQixDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsb0JBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsb0JBQVUsQ0FBQyxNQUFNLENBQUM7WUFDbkgsU0FBUyxHQUFHLEVBQUUsR0FBRyxTQUFTLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3ZELENBQUM7UUFFRCxzREFBc0Q7UUFDdEQsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDLGFBQWEsSUFBSSxFQUFFLENBQUM7UUFFbEQseUZBQXlGO1FBQ3pGLElBQUksU0FBUyxDQUFDLGlCQUFpQixLQUFLLFNBQVMsRUFBRSxDQUFDLENBQUMsOEJBQThCO1lBQzdFLGFBQWEsQ0FBQyxJQUFJLENBQUMsc0JBQVksQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDO1FBQ2xGLENBQUM7UUFDRCxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQyxpQ0FBaUM7WUFDM0QsYUFBYSxDQUFDLElBQUksQ0FBQyxzQkFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELG9HQUFvRztRQUNwRyxTQUFTLEdBQUcsRUFBRSxHQUFHLFNBQVMsRUFBRSxhQUFhLEVBQUUsYUFBYSxFQUFFLGlCQUFpQixFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLENBQUM7UUFDOUcsTUFBTSxFQUFFLGlCQUFpQixFQUFFLFFBQVEsRUFBRSxHQUFHLElBQUksRUFBRSxHQUFHLFNBQVMsQ0FBQztRQUUzRCxPQUFPLElBQUksQ0FBQztLQUNiOztBQWhqQkgsOEJBaWpCQztBQUVELE1BQU0sbUJBQW1CO0lBQ04sV0FBVyxHQUFHLElBQUksS0FBSyxFQUFlLENBQUM7SUFFeEQ7UUFDRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUM7UUFDbEIsdUJBQVUsQ0FBQyxTQUFTLENBQUMsSUFBSSxFQUFFO1lBQ3pCLElBQUksZUFBZTtnQkFDakIsTUFBTSxHQUFHLEdBQUcsSUFBSSxLQUFLLEVBQWMsQ0FBQztnQkFDcEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ25DLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyx1QkFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbEQsQ0FBQztnQkFDRCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVEOztPQUVHO0lBQ0ksR0FBRyxDQUFDLEdBQWdCO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzVCO0NBQ0Y7QUFFRDs7R0FFRztBQUNILFNBQVMsR0FBRyxDQUFJLENBQUksRUFBRSxFQUFrQjtJQUN0QyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbm5vdGF0aW9ucywgQXdzLCBSZXNvdXJjZSwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUge1xuICBDbGllbnRWcG5FbmRwb2ludE9wdGlvbnMsXG4gIEVuYWJsZVZwbkdhdGV3YXlPcHRpb25zLFxuICBGbG93TG9nT3B0aW9ucyxcbiAgR2F0ZXdheVZwY0VuZHBvaW50T3B0aW9ucyxcbiAgSW50ZXJmYWNlVnBjRW5kcG9pbnRPcHRpb25zLFxuICBJU3VibmV0LFxuICBJVnBjLFxuICBTZWxlY3RlZFN1Ym5ldHMsXG4gIFN1Ym5ldFNlbGVjdGlvbixcbiAgVnBuQ29ubmVjdGlvbk9wdGlvbnMsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHtcbiAgQ2ZuVlBDR2F0ZXdheUF0dGFjaG1lbnQsXG4gIENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uLFxuICBDbGllbnRWcG5FbmRwb2ludCxcbiAgRmxvd0xvZyxcbiAgRmxvd0xvZ1Jlc291cmNlVHlwZSxcbiAgR2F0ZXdheVZwY0VuZHBvaW50LFxuICBJbnRlcmZhY2VWcGNFbmRwb2ludCxcbiAgU3VibmV0RmlsdGVyLFxuICBTdWJuZXRUeXBlLFxuICBWcG5Db25uZWN0aW9uLFxuICBWcG5Db25uZWN0aW9uVHlwZSxcbiAgVnBuR2F0ZXdheSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgdHlwZSB7IFZQQ1JlZmVyZW5jZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzIvbGliL2VjMi5nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgQWNjb3VudFByaW5jaXBhbCwgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQsIFJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB0eXBlIHsgSUNvbnN0cnVjdCwgSURlcGVuZGFibGUgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IERlcGVuZGFibGUsIERlcGVuZGVuY3lHcm91cCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHR5cGUge1xuICBOYXRHYXRld2F5T3B0aW9ucyxcbiAgVlBDUGVlcmluZ0Nvbm5lY3Rpb25PcHRpb25zLFxufSBmcm9tICcuL3JvdXRlJztcbmltcG9ydCB7XG4gIEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXksXG4gIEludGVybmV0R2F0ZXdheSxcbiAgTmF0Q29ubmVjdGl2aXR5VHlwZSxcbiAgTmF0R2F0ZXdheSxcbiAgUm91dGUsXG4gIFZQQ1BlZXJpbmdDb25uZWN0aW9uLFxuICBWUE5HYXRld2F5VjIsXG59IGZyb20gJy4vcm91dGUnO1xuaW1wb3J0IHR5cGUgeyBJU3VibmV0VjIgfSBmcm9tICcuL3N1Ym5ldC12Mic7XG5pbXBvcnQgeyBhbGxSb3V0ZVRhYmxlSWRzLCBmbGF0dGVuLCBzdWJuZXRHcm91cE5hbWVGcm9tQ29uc3RydWN0SWQgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHR5cGUgeyBJVlBDQ2lkckJsb2NrIH0gZnJvbSAnLi92cGMtdjInO1xuXG4vKipcbiAqIE9wdGlvbnMgdG8gZGVmaW5lIEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkgZm9yIFZQQ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlPcHRpb25zIHtcbiAgLyoqXG4gICAqIExpc3Qgb2Ygc3VibmV0cyB3aGVyZSByb3V0ZSB0byBFR1cgd2lsbCBiZSBhZGRlZFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJvdXRlIGNyZWF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldHM/OiBTdWJuZXRTZWxlY3Rpb25bXTtcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gSXB2NiBhZGRyZXNzIGZvciBFR1cgcm91dGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSAnOjovMCcgYWxsIElwdjYgdHJhZmZpY1xuICAgKi9cbiAgcmVhZG9ubHkgZGVzdGluYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBlZ3Jlc3Mtb25seSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKiBQcm92aWRlZCBuYW1lIHdpbGwgYmUgdXNlZCBmb3IgdGFnZ2luZ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIG5hbWUgdGFnIGFzc29jaWF0ZWQgYW5kIHByb3Zpc2lvbmVkIHdpdGhvdXQgYSByZXNvdXJjZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBlZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGRlZmluZSBJbnRlcm5ldEdhdGV3YXkgZm9yIFZQQ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEludGVybmV0R2F0ZXdheU9wdGlvbnN7XG5cbiAgLyoqXG4gICAqIERlc3RpbmF0aW9uIElwdjYgYWRkcmVzcyBmb3IgRUdXIHJvdXRlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gJzAuMC4wLjAnIGFsbCBJcHY0IHRyYWZmaWNcbiAgICovXG4gIHJlYWRvbmx5IGlwdjREZXN0aW5hdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gSXB2NiBhZGRyZXNzIGZvciBFR1cgcm91dGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSAnOjovMCcgYWxsIElwdjYgdHJhZmZpY1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NkRlc3RpbmF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgaW50ZXJuZXQgZ2F0ZXdheS5cbiAgICogUHJvdmlkZWQgbmFtZSB3aWxsIGJlIHVzZWQgZm9yIHRhZ2dpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRob3V0IGEgcmVzb3VyY2UgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgaW50ZXJuZXRHYXRld2F5TmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogTGlzdCBvZiBzdWJuZXRzIHdoZXJlIHJvdXRlIHRvIElHVyB3aWxsIGJlIGFkZGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcm91dGUgY3JlYXRlZCBmb3IgYWxsIHN1Ym5ldHMgd2l0aCBUeXBlIGBTdWJuZXRUeXBlLlB1YmxpY2BcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldHM/OiBTdWJuZXRTZWxlY3Rpb25bXTtcbn1cblxuLyoqXG4gKiBPcHRpb25zIHRvIGRlZmluZSBWUE5HYXRld2F5VjIgZm9yIFZQQ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFZQTkdhdGV3YXlWMk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHR5cGUgb2YgVlBOIGNvbm5lY3Rpb24gdGhlIHZpcnR1YWwgcHJpdmF0ZSBnYXRld2F5IHN1cHBvcnRzLlxuICAgKiBAc2VlIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cG5nYXRld2F5Lmh0bWwjY2ZuLWVjMi12cG5nYXRld2F5LXR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IFZwbkNvbm5lY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpdmF0ZSBBdXRvbm9tb3VzIFN5c3RlbSBOdW1iZXIgKEFTTikgZm9yIHRoZSBBbWF6b24gc2lkZSBvZiBhIEJHUCBzZXNzaW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIEFTTiBzZXQgZm9yIEJHUCBzZXNzaW9uXG4gICAqL1xuICByZWFkb25seSBhbWF6b25TaWRlQXNuPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgVlBOIGdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVzb3VyY2UgcHJvdmlzaW9uZWQgd2l0aG91dCBhbnkgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBuR2F0ZXdheU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN1Ym5ldHMgd2hlcmUgdGhlIHJvdXRlIHByb3BhZ2F0aW9uIHNob3VsZCBiZSBhZGRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwcm9wb2dhdGlvbiBmb3Igcm91dGVzXG4gICAqL1xuICByZWFkb25seSB2cG5Sb3V0ZVByb3BhZ2F0aW9uPzogU3VibmV0U2VsZWN0aW9uW107XG59XG5cbi8qKlxuICogUGxhY2Vob2xkZXIgdG8gc2VlIHdoYXQgZXh0cmEgcHJvcHMgd2UgbWlnaHQgbmVlZCxcbiAqIHdpbGwgYmUgYWRkZWQgdG8gb3JpZ2luYWwgSVZQQ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElWcGNWMiBleHRlbmRzIElWcGMge1xuICAvKipcbiAgICogVGhlIHNlY29uZGFyeSBDSURSIGJsb2NrcyBhc3NvY2lhdGVkIHdpdGggdGhlIFZQQy5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtY2lkci1ibG9ja3MuaHRtbCN2cGMtcmVzaXplfS5cbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeUNpZHJCbG9jaz86IElWUENDaWRyQmxvY2tbXTtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgSVB2NCBDSURSIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgVlBDLlxuICAgKiBOZWVkZWQgaW4gb3JkZXIgdG8gdmFsaWRhdGUgdGhlIHZwYyByYW5nZSBvZiBzdWJuZXRcbiAgICogY3VycmVudCBwcm9wIHZwY0NpZHJCbG9jayByZWZlcnMgdG8gdGhlIHRva2VuIHZhbHVlXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXNpemluZy1pcHY0fS5cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgdG8gb3ZlcnJpZGUgaW5mZXJyZWQgcmVnaW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gY3VycmVudCBzdGFjaydzIGVudmlyb25tZW50IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgQVdTIGFjY291bnQgdGhhdCBvd25zIHRoZSBWUENcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgYWNjb3VudCBpZCBvZiB0aGUgcGFyZW50IHN0YWNrXG4gICAqL1xuICByZWFkb25seSBvd25lckFjY291bnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY0IENJRFIgcHJvdmlzaW9uZWQgdW5kZXIgcG9vbFxuICAgKiBSZXF1aXJlZCB0byBjaGVjayBmb3Igb3ZlcmxhcHBpbmcgQ0lEUnMgYWZ0ZXIgcHJvdmlzaW9uaW5nXG4gICAqIGlzIGNvbXBsZXRlIHVuZGVyIElQQU0gcG9vbFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFZwY05hbWUgdG8gYmUgdXNlZCBmb3IgdGFnZ2luZyBpdHMgY29tcG9uZW50c1xuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGQgYW4gRWdyZXNzIG9ubHkgSW50ZXJuZXQgR2F0ZXdheSB0byBjdXJyZW50IFZQQy5cbiAgICogQ2FuIG9ubHkgYmUgdXNlZCBmb3IgaXB2NiBlbmFibGVkIFZQQ3MuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvZWdyZXNzLW9ubHktaW50ZXJuZXQtZ2F0ZXdheS1iYXNpY3MuaHRtbH0uXG4gICAqL1xuICBhZGRFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5KG9wdGlvbnM/OiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5T3B0aW9ucyk6IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gSW50ZXJuZXQgR2F0ZXdheSB0byBjdXJyZW50IFZQQy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtaWd3LWludGVybmV0LWFjY2Vzcy5odG1sfS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZpbmVzIHJvdXRlIGZvciBhbGwgaXB2NCgnMC4wLjAuMCcpIGFuZCBpcHY2IGFkZHJlc3NlcygnOjovMCcpXG4gICAqL1xuICBhZGRJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEludGVybmV0R2F0ZXdheU9wdGlvbnMpOiBJbnRlcm5ldEdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIEFkZHMgVlBOIEdhdGV3YXkgdG8gVlBDIGFuZCBzZXQgcm91dGUgcHJvcG9nYXRpb24uXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwbmdhdGV3YXkuaHRtbH0uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcm91dGUgcHJvcG9nYXRpb25cbiAgICovXG4gIGVuYWJsZVZwbkdhdGV3YXlWMihvcHRpb25zOiBWUE5HYXRld2F5VjJPcHRpb25zKTogVlBOR2F0ZXdheVYyO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IE5BVCBHYXRld2F5IHRvIFZQQ1xuICAgKiBBIE5BVCBnYXRld2F5IGlzIGEgTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIChOQVQpIHNlcnZpY2UuIE5BVCBHYXRld2F5IENvbm5lY3Rpdml0eSBjYW4gYmUgb2YgdHlwZSBgUHVibGljYCBvciBgUHJpdmF0ZWAuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLW5hdC1nYXRld2F5Lmh0bWx9LlxuICAgKlxuICAgKiBAZGVmYXVsdCBDb25uZWN0aXZpdHlUeXBlLlB1YmxpY1xuICAgKi9cbiAgYWRkTmF0R2F0ZXdheShvcHRpb25zOiBOYXRHYXRld2F5T3B0aW9ucyk6IE5hdEdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgcm9sZSB0byBhY2NlcHRvciBWUEMgYWNjb3VudFxuICAgKiBBIGNyb3NzIGFjY291bnQgcm9sZSBpcyByZXF1aXJlZCBmb3IgdGhlIFZQQyB0byBwZWVyIHdpdGggYW5vdGhlciBhY2NvdW50LlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvcGVlci13aXRoLXZwYy1pbi1hbm90aGVyLWFjY291bnQuaHRtbH0uXG4gICAqL1xuICBjcmVhdGVBY2NlcHRvclZwY1JvbGUocmVxdWVzdG9yQWNjb3VudElkOiBzdHJpbmcpOiBSb2xlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHBlZXJpbmcgY29ubmVjdGlvblxuICAgKiBBIHBlZXJpbmcgY29ubmVjdGlvbiBpcyBhIHByaXZhdGUgdmlydHVhbCBuZXR3b3JrIGVzdGFibGlzaGVkIGJldHdlZW4gdHdvIFZQQ3MuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC9wZWVyaW5nL3doYXQtaXMtdnBjLXBlZXJpbmcuaHRtbH0uXG4gICAqL1xuICBjcmVhdGVQZWVyaW5nQ29ubmVjdGlvbihpZDogc3RyaW5nLCBvcHRpb25zOiBWUENQZWVyaW5nQ29ubmVjdGlvbk9wdGlvbnMpOiBWUENQZWVyaW5nQ29ubmVjdGlvbjtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBhIFZQQyAoVmlydHVhbCBQcml2YXRlIENsb3VkKSBpbiBBV1MuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi5WcGMuaHRtbHxBV1MgQ0RLIERvY3VtZW50YXRpb24gb24gVlBDc30uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWcGNWMkJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElWcGNWMiB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFybiBvZiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY0Fybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDSURSIHJhbmdlIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY0NpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHB1YmxpYyBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogSVN1Ym5ldFtdID0gW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHJpdmF0ZSBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpdmF0ZVN1Ym5ldHM6IElTdWJuZXRbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlzb2xhdGVkIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IElTdWJuZXRbXTtcblxuICAvKipcbiAgICogQVpzIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBEZXBlbmRhYmxlIHRoYXQgY2FuIGJlIGRlcGVuZGVkIHVwb24gdG8gZm9yY2UgaW50ZXJuZXQgY29ubmVjdGl2aXR5IGVzdGFibGlzaGVkIG9uIHRoZSBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkOiBJRGVwZW5kYWJsZTtcblxuICAvKipcbiAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAqIEFkZCBpZ3cgdG8gdGhpcyBpZiBpdHMgYSBwdWJsaWMgc3VibmV0XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkID0gbmV3IERlcGVuZGVuY3lHcm91cCgpO1xuXG4gIC8qKlxuICAgKiBTZWNvbmRhcnkgSVBzIGZvciB0aGUgVlBDLCBjYW4gYmUgbXVsdGlwbGUgSXB2NCBvciBJcHY2XG4gICAqIElwdjQgc2hvdWxkIGJlIHdpdGhpbiBSRkMjMTkxOCByYW5nZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHNlY29uZGFyeUNpZHJCbG9jaz86IElWUENDaWRyQmxvY2tbXTtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgSVB2NCBDSURSIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgVlBDLlxuICAgKiBOZWVkZWQgaW4gb3JkZXIgdG8gdmFsaWRhdGUgdGhlIHZwYyByYW5nZSBvZiBzdWJuZXRcbiAgICogY3VycmVudCBwcm9wIHZwY0NpZHJCbG9jayByZWZlcnMgdG8gdGhlIHRva2VuIHZhbHVlXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXNpemluZy1pcHY0fS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZwY05hbWUgdG8gYmUgdXNlZCBmb3IgdGFnZ2luZyBpdHMgY29tcG9uZW50c1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZ2lvbiBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgb3duZXIgZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSVB2NCBDSURSIHByb3Zpc2lvbmVkIHVuZGVyIHBvb2xcbiAgICogUmVxdWlyZWQgdG8gY2hlY2sgZm9yIG92ZXJsYXBwaW5nIENJRFJzIGFmdGVyIHByb3Zpc2lvbmluZ1xuICAgKiBpcyBjb21wbGV0ZSB1bmRlciBJUEFNIHBvb2xcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgZG9uJ3QgZXJyb3Igb3V0IG9uIHRyeWluZyB0byBzZWxlY3Qgc3VibmV0c1xuICAgKi9cbiAgcHJvdGVjdGVkIGluY29tcGxldGVTdWJuZXREZWZpbml0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE11dGFibGUgcHJpdmF0ZSBmaWVsZCBmb3IgdGhlIHZwbkdhdGV3YXlJZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBfdnBuR2F0ZXdheUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNdXRhYmxlIHByaXZhdGUgZmllbGQgZm9yIHRoZSBpbnRlcm5ldEdhdGV3YXlJZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBfaW50ZXJuZXRHYXRld2F5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE11dGFibGUgcHJpdmF0ZSBmaWVsZCBmb3IgdGhlIEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlJZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBfZWdyZXNzT25seUludGVybmV0R2F0ZXdheUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gaW5mb3JtYXRpb24gb24gdGhlIHN1Ym5ldHMgYXBwcm9wcmlhdGUgZm9yIHRoZSBnaXZlbiBzZWxlY3Rpb24gc3RyYXRlZ3lcbiAgICpcbiAgICogUmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgc3VibmV0IGlzIG1hdGNoZWQsIHRocm93cyBhIGRlc2NyaXB0aXZlXG4gICAqIGVycm9yIG1lc3NhZ2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIHNlbGVjdFN1Ym5ldHMoc2VsZWN0aW9uOiBTdWJuZXRTZWxlY3Rpb24gPSB7fSk6IFNlbGVjdGVkU3VibmV0cyB7XG4gICAgY29uc3Qgc3VibmV0cyA9IHRoaXMuc2VsZWN0U3VibmV0T2JqZWN0cyhzZWxlY3Rpb24pO1xuICAgIGNvbnN0IHB1YnMgPSBuZXcgU2V0KHRoaXMucHVibGljU3VibmV0cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VibmV0SWRzOiBzdWJuZXRzLm1hcChzID0+IHMuc3VibmV0SWQpLFxuICAgICAgZ2V0IGF2YWlsYWJpbGl0eVpvbmVzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHN1Ym5ldHMubWFwKHMgPT4gcy5hdmFpbGFiaWxpdHlab25lKTsgfSxcbiAgICAgIGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IHRhcChuZXcgQ29tcG9zaXRlRGVwZW5kYWJsZSgpLCBkID0+IHN1Ym5ldHMuZm9yRWFjaChzID0+IGQuYWRkKHMuaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCkpKSxcbiAgICAgIHN1Ym5ldHMsXG4gICAgICBoYXNQdWJsaWM6IHN1Ym5ldHMuc29tZShzID0+IHB1YnMuaGFzKHMpKSxcbiAgICAgIGlzUGVuZGluZ0xvb2t1cDogdGhpcy5pbmNvbXBsZXRlU3VibmV0RGVmaW5pdGlvbixcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldCB2cGNSZWYoKTogVlBDUmVmZXJlbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgVlBOIEdhdGV3YXkgdG8gdGhpcyBWUENcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGVuYWJsZVZwbkdhdGV3YXlWMiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFZQQ1YyLlJvdXRlXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlVnBuR2F0ZXdheShvcHRpb25zOiBFbmFibGVWcG5HYXRld2F5T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZwbkdhdGV3YXlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgVlBOIEdhdGV3YXkgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZwbkdhdGV3YXkgPSBuZXcgVnBuR2F0ZXdheSh0aGlzLCAnVnBuR2F0ZXdheScsIHtcbiAgICAgIGFtYXpvblNpZGVBc246IG9wdGlvbnMuYW1hem9uU2lkZUFzbixcbiAgICAgIHR5cGU6IFZwbkNvbm5lY3Rpb25UeXBlLklQU0VDXzEsXG4gICAgfSk7XG5cbiAgICB0aGlzLl92cG5HYXRld2F5SWQgPSB2cG5HYXRld2F5LmdhdGV3YXlJZDtcblxuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBuZXcgQ2ZuVlBDR2F0ZXdheUF0dGFjaG1lbnQodGhpcywgJ1ZQQ1ZQTkdXJywge1xuICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgICB2cG5HYXRld2F5SWQ6IHRoaXMuX3ZwbkdhdGV3YXlJZCxcbiAgICB9KTtcblxuICAgIC8vIFByb3BhZ2F0ZSByb3V0ZXMgb24gcm91dGUgdGFibGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmlnaHQgc3VibmV0c1xuICAgIGNvbnN0IHZwblJvdXRlUHJvcGFnYXRpb24gPSBvcHRpb25zLnZwblJvdXRlUHJvcGFnYXRpb24gPz8gW3t9XTtcbiAgICBjb25zdCByb3V0ZVRhYmxlSWRzID0gYWxsUm91dGVUYWJsZUlkcyhmbGF0dGVuKHZwblJvdXRlUHJvcGFnYXRpb24ubWFwKHMgPT4gdGhpcy5zZWxlY3RTdWJuZXRzKHMpLnN1Ym5ldHMpKSk7XG5cbiAgICBpZiAocm91dGVUYWJsZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLl9hZGRUcmFja2FibGVFcnJvcignVnBuR2F0ZXdheU5vTWF0Y2hpbmdTdWJuZXRzJywgYGVuYWJsZVZwbkdhdGV3YXk6IG5vIHN1Ym5ldHMgbWF0Y2hpbmcgc2VsZWN0aW9uOiAnJHtKU09OLnN0cmluZ2lmeSh2cG5Sb3V0ZVByb3BhZ2F0aW9uKX0nLiBTZWxlY3Qgb3RoZXIgc3VibmV0cyB0byBhZGQgcm91dGVzIHRvLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHJvdXRlUHJvcGFnYXRpb24gPSBuZXcgQ2ZuVlBOR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24odGhpcywgJ1JvdXRlUHJvcGFnYXRpb24nLCB7XG4gICAgICByb3V0ZVRhYmxlSWRzLFxuICAgICAgdnBuR2F0ZXdheUlkOiB0aGlzLl92cG5HYXRld2F5SWQsXG4gICAgfSk7XG4gICAgICAvLyBUaGUgQVdTOjpFQzI6OlZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uIHJlc291cmNlIGNhbm5vdCB1c2UgdGhlIFZQTiBnYXRld2F5XG4gICAgICAvLyB1bnRpbCBpdCBoYXMgc3VjY2Vzc2Z1bGx5IGF0dGFjaGVkIHRvIHRoZSBWUEMuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cG4tZ2F0ZXdheXJvdXRlcHJvcC5odG1sXG4gICAgcm91dGVQcm9wYWdhdGlvbi5ub2RlLmFkZERlcGVuZGVuY3koYXR0YWNobWVudCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBWUE5HQXRld2F5VjIgdG8gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBlbmFibGVWcG5HYXRld2F5VjIob3B0aW9uczogVlBOR2F0ZXdheVYyT3B0aW9ucyk6IFZQTkdhdGV3YXlWMiB7XG4gICAgaWYgKHRoaXMudnBuR2F0ZXdheUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBWUE4gR2F0ZXdheSBoYXMgYWxyZWFkeSBiZWVuIGVuYWJsZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdnBuR2F0ZXdheSA9IG5ldyBWUE5HYXRld2F5VjIodGhpcywgJ1ZwbkdhdGV3YXknLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5faW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZC5hZGQodnBuR2F0ZXdheSk7XG4gICAgdGhpcy5fdnBuR2F0ZXdheUlkID0gdnBuR2F0ZXdheS5yb3V0ZXJUYXJnZXRJZDtcblxuICAgIHJldHVybiB2cG5HYXRld2F5O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgVlBOIGNvbm5lY3Rpb24gdG8gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhZGRWcG5Db25uZWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM6IFZwbkNvbm5lY3Rpb25PcHRpb25zKTogVnBuQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBWcG5Db25uZWN0aW9uKHRoaXMsIGlkLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgY2xpZW50IFZQTiBlbmRwb2ludCB0byB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFkZENsaWVudFZwbkVuZHBvaW50KGlkOiBzdHJpbmcsIG9wdGlvbnM6IENsaWVudFZwbkVuZHBvaW50T3B0aW9ucyk6IENsaWVudFZwbkVuZHBvaW50IHtcbiAgICByZXR1cm4gbmV3IENsaWVudFZwbkVuZHBvaW50KHRoaXMsIGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgdnBjOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgaW50ZXJmYWNlIGVuZHBvaW50IHRvIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWRkSW50ZXJmYWNlRW5kcG9pbnQoaWQ6IHN0cmluZywgb3B0aW9uczogSW50ZXJmYWNlVnBjRW5kcG9pbnRPcHRpb25zKTogSW50ZXJmYWNlVnBjRW5kcG9pbnQge1xuICAgIHJldHVybiBuZXcgSW50ZXJmYWNlVnBjRW5kcG9pbnQodGhpcywgaWQsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBnYXRld2F5IGVuZHBvaW50IHRvIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWRkR2F0ZXdheUVuZHBvaW50KGlkOiBzdHJpbmcsIG9wdGlvbnM6IEdhdGV3YXlWcGNFbmRwb2ludE9wdGlvbnMpOiBHYXRld2F5VnBjRW5kcG9pbnQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVZwY0VuZHBvaW50KHRoaXMsIGlkLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgRWdyZXNzIE9ubHkgSW50ZXJuZXQgR2F0ZXdheSB0byB0aGlzIFZQQyBhbmQgZGVmaW5lcyBhIG5ldyByb3V0ZVxuICAgKiB0byB0aGUgcm91dGUgdGFibGUgb2YgZ2l2ZW4gc3VibmV0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpbiBjYXNlIG9mIG5vIGlucHV0IHN1Ym5ldHMsIG5vIHJvdXRlIGlzIGNyZWF0ZWRcbiAgICovXG4gIHB1YmxpYyBhZGRFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5KG9wdGlvbnM/OiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5T3B0aW9ucyk6IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkge1xuICAgIGNvbnN0IGVndyA9IG5ldyBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5KHRoaXMsICdFZ3Jlc3NPbmx5R1cnLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICBlZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZTogb3B0aW9ucz8uZWdyZXNzT25seUludGVybmV0R2F0ZXdheU5hbWUsXG4gICAgfSk7XG4gICAgdGhpcy5fZWdyZXNzT25seUludGVybmV0R2F0ZXdheUlkID0gZWd3LnJvdXRlclRhcmdldElkO1xuXG4gICAgbGV0IHVzZUlwdjY7XG4gICAgaWYgKHRoaXMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICB1c2VJcHY2ID0gKHRoaXMuc2Vjb25kYXJ5Q2lkckJsb2NrLnNvbWUoKHNlY29uZGFyeUFkZHJlc3MpID0+IHNlY29uZGFyeUFkZHJlc3MuYW1hem9uUHJvdmlkZWRJcHY2Q2lkckJsb2NrID09PSB0cnVlIHx8XG4gICAgc2Vjb25kYXJ5QWRkcmVzcy5pcHY2SXBhbVBvb2xJZCAhPT0gdW5kZWZpbmVkIHx8IHNlY29uZGFyeUFkZHJlc3MuaXB2NkNpZHJCbG9jayAhPT0gdW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgaWYgKCF1c2VJcHY2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VncmVzcyBvbmx5IElHVyBjYW4gb25seSBiZSBhZGRlZCB0byBJcHY2IGVuYWJsZWQgVlBDJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LnN1Ym5ldHMpIHtcbiAgICAgIC8vIFVzZSBoZWxwZXIgZnVuY3Rpb24gdG8gZW5zdXJlIHVuaXF1ZSBzdWJuZXRzXG4gICAgICBjb25zdCBzdWJuZXRzID0gZmxhdHRlbihvcHRpb25zLnN1Ym5ldHMubWFwKHMgPT4gdGhpcy5zZWxlY3RTdWJuZXRzKHMpLnN1Ym5ldHMpKTtcbiAgICAgIHRoaXMucHJvY2Vzc1N1Ym5ldHMoc3VibmV0cywgKHN1Ym5ldCkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZUVncmVzc1JvdXRlKHN1Ym5ldCwgZWd3LCBvcHRpb25zLmRlc3RpbmF0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZWd3O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByb3V0ZSBmb3IgRUdXIHdpdGggZGVzdGluYXRpb24gc2V0IHRvIG91dGJvdW5kIElQdjYoJzo6LzAnKSBvciBjdXN0b20gaXB2NiBhZGRyZXNzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRWdyZXNzUm91dGUoc3VibmV0OiBJU3VibmV0VjIsIGVndzogRWdyZXNzT25seUludGVybmV0R2F0ZXdheSwgZGVzdGluYXRpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbklwdjYgPSBkZXN0aW5hdGlvbiA/PyAnOjovMCc7XG4gICAgbmV3IFJvdXRlKHRoaXMsIGAke3N1Ym5ldC5ub2RlLmlkfS1FZ3Jlc3NSb3V0ZWAsIHtcbiAgICAgIHJvdXRlVGFibGU6IHN1Ym5ldC5yb3V0ZVRhYmxlLFxuICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uSXB2NiwgLy8gSVB2NiBkZWZhdWx0IHJvdXRlXG4gICAgICB0YXJnZXQ6IHsgZ2F0ZXdheTogZWd3IH0sXG4gICAgICByb3V0ZU5hbWU6ICdDREtFSUdXUm91dGUnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgSW50ZXJuZXQgR2F0ZXdheSB0byB0aGlzIFZQQ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGNyZWF0ZXMgYSBuZXcgcm91dGUgZm9yIHB1YmxpYyBzdWJuZXRzKHdpdGggYWxsIG91dGJvdW5kIGFjY2VzcykgdG8gdGhlIEludGVybmV0IEdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgYWRkSW50ZXJuZXRHYXRld2F5KG9wdGlvbnM/OiBJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogSW50ZXJuZXRHYXRld2F5IHtcbiAgICBpZiAodGhpcy5faW50ZXJuZXRHYXRld2F5SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEludGVybmV0IEdhdGV3YXkgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGlndyA9IG5ldyBJbnRlcm5ldEdhdGV3YXkodGhpcywgJ0ludGVybmV0R2F0ZXdheScsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIGludGVybmV0R2F0ZXdheU5hbWU6IG9wdGlvbnM/LmludGVybmV0R2F0ZXdheU5hbWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkLmFkZChpZ3cpO1xuICAgIHRoaXMuX2ludGVybmV0R2F0ZXdheUlkID0gaWd3LnJvdXRlclRhcmdldElkO1xuXG4gICAgLy8gQWRkIHJvdXRlcyBmb3Igc3VibmV0cyBkZWZpbmVkIGFzIGFuIGlucHV0XG4gICAgaWYgKG9wdGlvbnM/LnN1Ym5ldHMpIHtcbiAgICAgIGNvbnN0IHN1Ym5ldHMgPSBmbGF0dGVuKG9wdGlvbnMuc3VibmV0cy5tYXAocyA9PiB0aGlzLnNlbGVjdFN1Ym5ldHMocykuc3VibmV0cykpO1xuICAgICAgLy8gVXNlIGhlbHBlciBmdW5jdGlvbiB0byBlbnN1cmUgdW5pcXVlIHN1Ym5ldHNcbiAgICAgIHRoaXMucHJvY2Vzc1N1Ym5ldHMoc3VibmV0cywgKHN1Ym5ldCkgPT4ge1xuICAgICAgICB0aGlzLmFkZERlZmF1bHRJbnRlcm5ldFJvdXRlKHN1Ym5ldCwgaWd3LCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGlucHV0IHN1Ym5ldHMgZGVmaW5lZCwgZGVmYXVsdCByb3V0ZSB3aWxsIGJlIGFkZGVkIHRvIGFsbCBwdWJsaWMgc3VibmV0c1xuICAgIH0gZWxzZSBpZiAoIW9wdGlvbnM/LnN1Ym5ldHMgJiYgdGhpcy5wdWJsaWNTdWJuZXRzKSB7XG4gICAgICAvLyBUcmFjayByb3V0ZSB0YWJsZXMgdGhhdCBoYXZlIGFscmVhZHkgaGFkIHJvdXRlcyBhZGRlZCB0byBwcmV2ZW50IGR1cGxpY2F0ZXNcbiAgICAgIHRoaXMucHJvY2Vzc1N1Ym5ldHModGhpcy5wdWJsaWNTdWJuZXRzLCAoc3VibmV0KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkRGVmYXVsdEludGVybmV0Um91dGUoc3VibmV0LCBpZ3csIG9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpZ3c7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBkZWZhdWx0IHJvdXRlIGZvciB0aGUgaW50ZXJuZXQgZ2F0ZXdheVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgYWRkRGVmYXVsdEludGVybmV0Um91dGUoc3VibmV0OiBJU3VibmV0VjIsIGlndzogSW50ZXJuZXRHYXRld2F5LCBvcHRpb25zPzogSW50ZXJuZXRHYXRld2F5T3B0aW9ucyk6IHZvaWQge1xuICAgIC8vIEFkZCBkZWZhdWx0IHJvdXRlIHRvIElHVyBmb3IgSVB2NlxuICAgIGlmIChzdWJuZXQuaXB2NkNpZHJCbG9jaykge1xuICAgICAgbmV3IFJvdXRlKHRoaXMsIGAke3N1Ym5ldC5ub2RlLmlkfS1EZWZhdWx0SVB2NlJvdXRlYCwge1xuICAgICAgICByb3V0ZVRhYmxlOiBzdWJuZXQucm91dGVUYWJsZSxcbiAgICAgICAgZGVzdGluYXRpb246IG9wdGlvbnM/LmlwdjZEZXN0aW5hdGlvbiA/PyAnOjovMCcsXG4gICAgICAgIHRhcmdldDogeyBnYXRld2F5OiBpZ3cgfSxcbiAgICAgICAgcm91dGVOYW1lOiAnQ0RLRGVmYXVsdElQdjZSb3V0ZScsXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gQWRkIGRlZmF1bHQgcm91dGUgdG8gSUdXIGZvciBJUHY0XG4gICAgbmV3IFJvdXRlKHRoaXMsIGAke3N1Ym5ldC5ub2RlLmlkfS1EZWZhdWx0Um91dGVgLCB7XG4gICAgICByb3V0ZVRhYmxlOiBzdWJuZXQucm91dGVUYWJsZSxcbiAgICAgIGRlc3RpbmF0aW9uOiBvcHRpb25zPy5pcHY0RGVzdGluYXRpb24gPz8gJzAuMC4wLjAvMCcsXG4gICAgICB0YXJnZXQ6IHsgZ2F0ZXdheTogaWd3IH0sXG4gICAgICByb3V0ZU5hbWU6ICdDREtEZWZhdWx0SVB2NFJvdXRlJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gcHJvY2VzcyB1bmlxdWUgc3VibmV0cyBhbmQgcm91dGUgdGFibGUgZm9yIGFkZGluZyByb3V0ZXNcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1N1Ym5ldHMoXG4gICAgc3VibmV0czogSVN1Ym5ldFYyW10sXG4gICAgcm91dGVIYW5kbGVyOiAoc3VibmV0OiBJU3VibmV0VjIpID0+IHZvaWQsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHByb2Nlc3NlZFN1Ym5ldHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBwcm9jZXNzZWRSb3V0ZVRhYmxlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHN1Ym5ldHMuZm9yRWFjaCgoc3VibmV0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMucHVibGljU3VibmV0cy5pbmNsdWRlcyhzdWJuZXQpKSB7XG4gICAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmdWMignSW50ZXJuZXRHYXRld2F5V2FybmluZycsIGBHaXZlbiAke3N1Ym5ldC5ub2RlLmlkfSBpcyBub3QgYSBwdWJsaWMgc3VibmV0LiBJbnRlcm5ldCBHYXRld2F5IHNob3VsZCBiZSBhZGRlZCBvbmx5IHRvIHB1YmxpYyBzdWJuZXRzLmApO1xuICAgICAgfVxuICAgICAgaWYgKCFwcm9jZXNzZWRTdWJuZXRzLmhhcyhzdWJuZXQubm9kZS5pZCkpIHtcbiAgICAgICAgaWYgKHN1Ym5ldC5yb3V0ZVRhYmxlICYmICFwcm9jZXNzZWRSb3V0ZVRhYmxlcy5oYXMoc3VibmV0LnJvdXRlVGFibGUucm91dGVUYWJsZUlkKSkge1xuICAgICAgICAgIHJvdXRlSGFuZGxlcihzdWJuZXQpO1xuICAgICAgICAgIHByb2Nlc3NlZFJvdXRlVGFibGVzLmFkZChzdWJuZXQucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQpO1xuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3NlZFN1Ym5ldHMuYWRkKHN1Ym5ldC5ub2RlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IE5BVCBHYXRld2F5IHRvIHRoZSBnaXZlbiBzdWJuZXQgb2YgdGhpcyBWUENcbiAgICogb2YgZ2l2ZW4gc3VibmV0cy5cbiAgICovXG4gIHB1YmxpYyBhZGROYXRHYXRld2F5KG9wdGlvbnM6IE5hdEdhdGV3YXlPcHRpb25zKTogTmF0R2F0ZXdheSB7XG4gICAgaWYgKG9wdGlvbnMuY29ubmVjdGl2aXR5VHlwZSA9PT0gTmF0Q29ubmVjdGl2aXR5VHlwZS5QVUJMSUMgJiYgIXRoaXMuX2ludGVybmV0R2F0ZXdheUlkKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKCdQdWJsaWNOYXRHYXRld2F5UmVxdWlyZXNJbnRlcm5ldEdhdGV3YXknLCAnQ2Fubm90IGFkZCBhIFB1YmxpYyBOQVQgR2F0ZXdheSB3aXRob3V0IGFuIEludGVybmV0IEdhdGV3YXkgZW5hYmxlZCBvbiBWUEMnLCB0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBOYXRHYXRld2F5KHRoaXMsIGBOQVRHYXRld2F5LSR7b3B0aW9ucy5zdWJuZXQubm9kZS5pZH1gLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgZmxvdyBsb2cgdG8gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhZGRGbG93TG9nKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBGbG93TG9nT3B0aW9ucyk6IEZsb3dMb2cge1xuICAgIHJldHVybiBuZXcgRmxvd0xvZyh0aGlzLCBpZCwge1xuICAgICAgcmVzb3VyY2VUeXBlOiBGbG93TG9nUmVzb3VyY2VUeXBlLmZyb21WcGModGhpcyksXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgcGVlcmluZyBjb25uZWN0aW9uIHJvbGUgZm9yIGFjY2VwdG9yIFZQQ1xuICAgKi9cbiAgcHVibGljIGNyZWF0ZUFjY2VwdG9yVnBjUm9sZShyZXF1ZXN0b3JBY2NvdW50SWQ6IHN0cmluZyk6IFJvbGUge1xuICAgIGNvbnN0IHBlZXJpbmdSb2xlID0gbmV3IFJvbGUodGhpcywgJ1ZwY1BlZXJpbmdSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgQWNjb3VudFByaW5jaXBhbChyZXF1ZXN0b3JBY2NvdW50SWQpLFxuICAgICAgcm9sZU5hbWU6ICdWcGNQZWVyaW5nUm9sZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1Jlc3RyaWN0aXZlIHJvbGUgZm9yIFZQQyBwZWVyaW5nJyxcbiAgICB9KTtcblxuICAgIHBlZXJpbmdSb2xlLmFkZFRvUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbJ2VjMjpBY2NlcHRWcGNQZWVyaW5nQ29ubmVjdGlvbiddLFxuICAgICAgcmVzb3VyY2VzOiBbYGFybjoke0F3cy5QQVJUSVRJT059OmVjMjoke3RoaXMucmVnaW9ufToke3RoaXMub3duZXJBY2NvdW50SWR9OnZwYy8ke3RoaXMudnBjSWR9YF0sXG4gICAgfSkpO1xuXG4gICAgcGVlcmluZ1JvbGUuYWRkVG9Qb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ2VjMjpBY2NlcHRWcGNQZWVyaW5nQ29ubmVjdGlvbiddLFxuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICByZXNvdXJjZXM6IFtgYXJuOiR7QXdzLlBBUlRJVElPTn06ZWMyOiR7dGhpcy5yZWdpb259OiR7dGhpcy5vd25lckFjY291bnRJZH06dnBjLXBlZXJpbmctY29ubmVjdGlvbi8qYF0sXG4gICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICdlYzI6QWNjZXB0ZXJWcGMnOiBgYXJuOiR7QXdzLlBBUlRJVElPTn06ZWMyOiR7dGhpcy5yZWdpb259OiR7dGhpcy5vd25lckFjY291bnRJZH06dnBjLyR7dGhpcy52cGNJZH1gLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gcGVlcmluZ1JvbGU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBlZXJpbmcgY29ubmVjdGlvblxuICAgKi9cbiAgcHVibGljIGNyZWF0ZVBlZXJpbmdDb25uZWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM6IFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucyk6IFZQQ1BlZXJpbmdDb25uZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFZQQ1BlZXJpbmdDb25uZWN0aW9uKHRoaXMsIGlkLCB7XG4gICAgICByZXF1ZXN0b3JWcGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGlkIG9mIHRoZSBWUE4gR2F0ZXdheSAoaWYgZW5hYmxlZClcbiAgICovXG4gIHB1YmxpYyBnZXQgdnBuR2F0ZXdheUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZwbkdhdGV3YXlJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgSW50ZXJuZXQgR2F0ZXdheSAoaWYgZW5hYmxlZClcbiAgICovXG4gIHB1YmxpYyBnZXQgaW50ZXJuZXRHYXRld2F5SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW50ZXJuZXRHYXRld2F5SWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaWQgb2YgdGhlIEVncmVzcyBPbmx5IEludGVybmV0IEdhdGV3YXkgKGlmIGVuYWJsZWQpXG4gICAqL1xuICBwdWJsaWMgZ2V0IGVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9lZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5SWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBzdWJuZXRzIGFwcHJvcHJpYXRlIGZvciB0aGUgcGxhY2VtZW50IHN0cmF0ZWd5XG4gICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0U3VibmV0T2JqZWN0cyhzZWxlY3Rpb246IFN1Ym5ldFNlbGVjdGlvbiA9IHt9KTogSVN1Ym5ldFtdIHtcbiAgICBzZWxlY3Rpb24gPSB0aGlzLnJlaWZ5U2VsZWN0aW9uRGVmYXVsdHMoc2VsZWN0aW9uKTtcblxuICAgIGlmIChzZWxlY3Rpb24uc3VibmV0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gc2VsZWN0aW9uLnN1Ym5ldHM7XG4gICAgfVxuXG4gICAgbGV0IHN1Ym5ldHM7XG5cbiAgICBpZiAoc2VsZWN0aW9uLnN1Ym5ldEdyb3VwTmFtZSAhPT0gdW5kZWZpbmVkKSB7IC8vIFNlbGVjdCBieSBuYW1lXG4gICAgICBzdWJuZXRzID0gdGhpcy5zZWxlY3RTdWJuZXRPYmplY3RzQnlOYW1lKHNlbGVjdGlvbi5zdWJuZXRHcm91cE5hbWUpO1xuICAgIH0gZWxzZSB7IC8vIE9yIHNwZWNpZnkgYnkgdHlwZVxuICAgICAgY29uc3QgdHlwZSA9IHNlbGVjdGlvbi5zdWJuZXRUeXBlIHx8IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcbiAgICAgIHN1Ym5ldHMgPSB0aGlzLnNlbGVjdFN1Ym5ldE9iamVjdHNCeVR5cGUodHlwZSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgYWxsIHRoZSBmaWx0ZXJzXG4gICAgc3VibmV0cyA9IHRoaXMuYXBwbHlTdWJuZXRGaWx0ZXJzKHN1Ym5ldHMsIHNlbGVjdGlvbi5zdWJuZXRGaWx0ZXJzID8/IFtdKTtcblxuICAgIHJldHVybiBzdWJuZXRzO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVN1Ym5ldEZpbHRlcnMoc3VibmV0czogSVN1Ym5ldFtdLCBmaWx0ZXJzOiBTdWJuZXRGaWx0ZXJbXSk6IElTdWJuZXRbXSB7XG4gICAgbGV0IGZpbHRlcmVkID0gc3VibmV0cztcbiAgICAvLyBBcHBseSBlYWNoIGZpbHRlciBpbiBzZXF1ZW5jZVxuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcbiAgICAgIGZpbHRlcmVkID0gZmlsdGVyLnNlbGVjdFN1Ym5ldHMoZmlsdGVyZWQpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdFN1Ym5ldE9iamVjdHNCeU5hbWUoZ3JvdXBOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhbGxTdWJuZXRzID0gWy4uLnRoaXMucHVibGljU3VibmV0cywgLi4udGhpcy5wcml2YXRlU3VibmV0cywgLi4udGhpcy5pc29sYXRlZFN1Ym5ldHNdO1xuICAgIGNvbnN0IHN1Ym5ldHMgPSBhbGxTdWJuZXRzLmZpbHRlcihzID0+IHN1Ym5ldEdyb3VwTmFtZUZyb21Db25zdHJ1Y3RJZChzKSA9PT0gZ3JvdXBOYW1lKTtcblxuICAgIGlmIChzdWJuZXRzLmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5pbmNvbXBsZXRlU3VibmV0RGVmaW5pdGlvbikge1xuICAgICAgY29uc3QgbmFtZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQoYWxsU3VibmV0cy5tYXAoc3VibmV0R3JvdXBOYW1lRnJvbUNvbnN0cnVjdElkKSkpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBhcmUgbm8gc3VibmV0IGdyb3VwcyB3aXRoIG5hbWUgJyR7Z3JvdXBOYW1lfScgaW4gdGhpcyBWUEMuIEF2YWlsYWJsZSBuYW1lczogJHtuYW1lc31gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VibmV0cztcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0U3VibmV0T2JqZWN0c0J5VHlwZShzdWJuZXRUeXBlOiBTdWJuZXRUeXBlKTogSVN1Ym5ldFtdIHtcbiAgICB0eXBlIERlcHJlY2F0ZWRTdWJuZXRUeXBlID0gJ0RlcHJlY2F0ZWRfSXNvbGF0ZWQnIHwgJ0RlcHJlY2F0ZWRfUHJpdmF0ZSc7XG4gICAgY29uc3QgYWxsU3VibmV0czogeyBba2V5IGluIFN1Ym5ldFR5cGUgfCBEZXByZWNhdGVkU3VibmV0VHlwZV0/OiBJU3VibmV0W10gfSA9IHtcbiAgICAgIFtTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURURdOiB0aGlzLmlzb2xhdGVkU3VibmV0cyxcbiAgICAgIFsnRGVwcmVjYXRlZF9Jc29sYXRlZCddOiB0aGlzLmlzb2xhdGVkU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9OQVRdOiB0aGlzLnByaXZhdGVTdWJuZXRzLFxuICAgICAgW1N1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU106IHRoaXMucHJpdmF0ZVN1Ym5ldHMsXG4gICAgICBbJ0RlcHJlY2F0ZWRfUHJpdmF0ZSddOiB0aGlzLnByaXZhdGVTdWJuZXRzLFxuICAgICAgW1N1Ym5ldFR5cGUuUFVCTElDXTogdGhpcy5wdWJsaWNTdWJuZXRzLFxuICAgIH07XG5cbiAgICBjb25zdCBzdWJuZXRzID0gYWxsU3VibmV0c1tzdWJuZXRUeXBlXSE7XG5cbiAgICAvLyBGb3JjZSBtZXJnZSBjb25mbGljdCBoZXJlIHdpdGggaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3B1bGwvNDA4OVxuICAgIC8vIHNlZSBJbXBvcnRlZFZwY1xuXG4gICAgaWYgKHN1Ym5ldHMubGVuZ3RoID09PSAwICYmICF0aGlzLmluY29tcGxldGVTdWJuZXREZWZpbml0aW9uKSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVUeXBlcyA9IE9iamVjdC5lbnRyaWVzKGFsbFN1Ym5ldHMpLmZpbHRlcigoW18sIHN1YnNdKSA9PiBzdWJzLmxlbmd0aCA+IDApLm1hcCgoW3R5cGVOYW1lLCBfXSkgPT4gdHlwZU5hbWUpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBhcmUgbm8gJyR7c3VibmV0VHlwZX0nIHN1Ym5ldCBncm91cHMgaW4gdGhpcyBWUEMuIEF2YWlsYWJsZSB0eXBlczogJHthdmFpbGFibGVUeXBlc31gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VibmV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgZmllbGRzIGluIGEgU3VibmV0U2VsZWN0aW9uIG9iamVjdCwgYW5kIHJlaWZ5IGRlZmF1bHRzIGlmIG5lY2Vzc2FyeVxuICAgKlxuICAgKiBJbiBjYXNlIG9mIGRlZmF1bHQgc2VsZWN0aW9uLCBzZWxlY3QgdGhlIGZpcnN0IHR5cGUgb2YgUFJJVkFURSwgSVNPTEFURUQsXG4gICAqIFBVQkxJQyAoaW4gdGhhdCBvcmRlcikgdGhhdCBoYXMgYW55IHN1Ym5ldHMuXG4gICAqL1xuICBwcml2YXRlIHJlaWZ5U2VsZWN0aW9uRGVmYXVsdHMocGxhY2VtZW50OiBTdWJuZXRTZWxlY3Rpb24pOiBTdWJuZXRTZWxlY3Rpb24ge1xuICAgIC8vIFRPRE86IHRocm93IGVycm9yIGFzIG5ldyBWcGNWMiBjYW5ub3Qgc3VwcG9ydCBzdWJuZXROYW1lIG9yIHN1Ym5ldEdyb3VwTmFtZSBhbnltb3JlXG4gICAgaWYgKCdzdWJuZXROYW1lJyBpbiBwbGFjZW1lbnQgJiYgcGxhY2VtZW50LnN1Ym5ldE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHBsYWNlbWVudC5zdWJuZXRHcm91cE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSB1c2Ugb25seSBcXCdzdWJuZXRHcm91cE5hbWVcXCcgKFxcJ3N1Ym5ldE5hbWVcXCcgaXMgZGVwcmVjYXRlZCBhbmQgaGFzIHRoZSBzYW1lIGJlaGF2aW9yKScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZ1YyKCdAYXdzLWNkay9hd3MtZWMyOnN1Ym5ldE5hbWVEZXByZWNhdGVkJywgJ1VzYWdlIG9mIFxcJ3N1Ym5ldE5hbWVcXCcgaW4gU3VibmV0U2VsZWN0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSBcXCdzdWJuZXRHcm91cE5hbWVcXCcgaW5zdGVhZCcpO1xuICAgICAgfVxuICAgICAgcGxhY2VtZW50ID0geyAuLi5wbGFjZW1lbnQsIHN1Ym5ldEdyb3VwTmFtZTogcGxhY2VtZW50LnN1Ym5ldE5hbWUgYXMgc3RyaW5nIH07XG4gICAgfVxuXG4gICAgY29uc3QgZXhjbHVzaXZlU2VsZWN0aW9uczogQXJyYXk8a2V5b2YgU3VibmV0U2VsZWN0aW9uPiA9IFsnc3VibmV0cycsICdzdWJuZXRUeXBlJywgJ3N1Ym5ldEdyb3VwTmFtZSddO1xuICAgIGNvbnN0IHByb3ZpZGVkU2VsZWN0aW9ucyA9IGV4Y2x1c2l2ZVNlbGVjdGlvbnMuZmlsdGVyKGtleSA9PiBwbGFjZW1lbnRba2V5XSAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAocHJvdmlkZWRTZWxlY3Rpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgT25seSBvbmUgb2YgJyR7cHJvdmlkZWRTZWxlY3Rpb25zfScgY2FuIGJlIHN1cHBsaWVkIHRvIHN1Ym5ldCBzZWxlY3Rpb24uYCk7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudC5zdWJuZXRUeXBlID09PSB1bmRlZmluZWQgJiYgcGxhY2VtZW50LnN1Ym5ldEdyb3VwTmFtZSA9PT0gdW5kZWZpbmVkICYmIHBsYWNlbWVudC5zdWJuZXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFJldHVybiBkZWZhdWx0IHN1Ym5ldCB0eXBlIGJhc2VkIG9uIHN1Ym5ldHMgdGhhdCBhY3R1YWxseSBleGlzdFxuICAgICAgbGV0IHN1Ym5ldFR5cGUgPSB0aGlzLnByaXZhdGVTdWJuZXRzLmxlbmd0aFxuICAgICAgICA/IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyA6IHRoaXMuaXNvbGF0ZWRTdWJuZXRzLmxlbmd0aCA/IFN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCA6IFN1Ym5ldFR5cGUuUFVCTElDO1xuICAgICAgcGxhY2VtZW50ID0geyAuLi5wbGFjZW1lbnQsIHN1Ym5ldFR5cGU6IHN1Ym5ldFR5cGUgfTtcbiAgICB9XG5cbiAgICAvLyBFc3RhYmxpc2ggd2hpY2ggc3VibmV0IGZpbHRlcnMgYXJlIGdvaW5nIHRvIGJlIHVzZWRcbiAgICBsZXQgc3VibmV0RmlsdGVycyA9IHBsYWNlbWVudC5zdWJuZXRGaWx0ZXJzID8/IFtdO1xuXG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBgYXZhaWxhYmlsaXR5Wm9uZXNgIGFuZCBgb25lUGVyQXpgIGZ1bmN0aW9uYWxpdHlcbiAgICBpZiAocGxhY2VtZW50LmF2YWlsYWJpbGl0eVpvbmVzICE9PSB1bmRlZmluZWQpIHsgLy8gRmlsdGVyIGJ5IEFacywgaWYgc3BlY2lmaWVkXG4gICAgICBzdWJuZXRGaWx0ZXJzLnB1c2goU3VibmV0RmlsdGVyLmF2YWlsYWJpbGl0eVpvbmVzKHBsYWNlbWVudC5hdmFpbGFiaWxpdHlab25lcykpO1xuICAgIH1cbiAgICBpZiAoISFwbGFjZW1lbnQub25lUGVyQXopIHsgLy8gRW5zdXJlIG9uZSBwZXIgQVogaWYgc3BlY2lmaWVkXG4gICAgICBzdWJuZXRGaWx0ZXJzLnB1c2goU3VibmV0RmlsdGVyLm9uZVBlckF6KCkpO1xuICAgIH1cblxuICAgIC8vIE92ZXJ3cml0ZSB0aGUgcHJvdmlkZWQgcGxhY2VtZW50IGZpbHRlcnMgYW5kIHJlbW92ZSB0aGUgYXZhaWxhYmlsaXR5Wm9uZXMgYW5kIG9uZVBlckF6IHByb3BlcnRpZXNcbiAgICBwbGFjZW1lbnQgPSB7IC4uLnBsYWNlbWVudCwgc3VibmV0RmlsdGVyczogc3VibmV0RmlsdGVycywgYXZhaWxhYmlsaXR5Wm9uZXM6IHVuZGVmaW5lZCwgb25lUGVyQXo6IHVuZGVmaW5lZCB9O1xuICAgIGNvbnN0IHsgYXZhaWxhYmlsaXR5Wm9uZXMsIG9uZVBlckF6LCAuLi5yZXN0IH0gPSBwbGFjZW1lbnQ7XG5cbiAgICByZXR1cm4gcmVzdDtcbiAgfVxufVxuXG5jbGFzcyBDb21wb3NpdGVEZXBlbmRhYmxlIGltcGxlbWVudHMgSURlcGVuZGFibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlcGVuZGFibGVzID0gbmV3IEFycmF5PElEZXBlbmRhYmxlPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIERlcGVuZGFibGUuaW1wbGVtZW50KHRoaXMsIHtcbiAgICAgIGdldCBkZXBlbmRlbmN5Um9vdHMoKSB7XG4gICAgICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheTxJQ29uc3RydWN0PigpO1xuICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBzZWxmLmRlcGVuZGFibGVzKSB7XG4gICAgICAgICAgcmV0LnB1c2goLi4uRGVwZW5kYWJsZS5vZihkZXApLmRlcGVuZGVuY3lSb290cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY29uc3RydWN0IHRvIHRoZSBkZXBlbmRlbmN5IHJvb3RzXG4gICAqL1xuICBwdWJsaWMgYWRkKGRlcDogSURlcGVuZGFibGUpIHtcbiAgICB0aGlzLmRlcGVuZGFibGVzLnB1c2goZGVwKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZSBhIGZ1bmN0aW9uIG9uIGEgdmFsdWUgKGZvciBpdHMgc2lkZSBlZmZlY3QpIGFuZCByZXR1cm4gdGhlIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHRhcDxUPih4OiBULCBmbjogKHg6IFQpID0+IHZvaWQpOiBUIHtcbiAgZm4oeCk7XG4gIHJldHVybiB4O1xufVxuIl19
|
|
534
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXYyLWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ2cGMtdjItYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDZDQUEwRTtBQWExRSxpREFhNkI7QUFFN0IsaURBQXNGO0FBQ3RGLDRFQUE0RDtBQUU1RCwyQ0FBeUQ7QUFLekQsbUNBUWlCO0FBRWpCLGlDQUFtRjtBQStMbkY7Ozs7R0FJRztBQUNILE1BQXNCLFNBQVUsU0FBUSxzQkFBUTs7SUFnQjlDOztPQUVHO0lBQ2EsYUFBYSxHQUFjLEVBQUUsQ0FBQztJQUU5Qzs7T0FFRztJQUNhLGNBQWMsR0FBYyxFQUFFLENBQUM7SUFPL0M7O09BRUc7SUFDYSxpQkFBaUIsR0FBYSxFQUFFLENBQUM7SUFPakQ7Ozs7T0FJRztJQUNnQixnQ0FBZ0MsR0FBRyxJQUFJLDRCQUFlLEVBQUUsQ0FBQztJQXNDNUU7O09BRUc7SUFDTywwQkFBMEIsR0FBWSxLQUFLLENBQUM7SUFFdEQ7OztPQUdHO0lBQ08sYUFBYSxDQUFVO0lBRWpDOzs7T0FHRztJQUNPLGtCQUFrQixDQUFVO0lBRXRDOzs7T0FHRztJQUNPLDRCQUE0QixDQUFVO0lBRWhEOzs7OztPQUtHO0lBQ0ksYUFBYSxDQUFDLFlBQTZCLEVBQUU7UUFDbEQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3BELE1BQU0sSUFBSSxHQUFHLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUV6QyxPQUFPO1lBQ0wsU0FBUyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDO1lBQ3ZDLElBQUksaUJBQWlCLEtBQWUsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ2xGLCtCQUEr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QkFDcEMsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ25DLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyx1QkFBVSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxlQUFlLENBQUMsQ0FBQztnQkFDbEQsQ0FBQztnQkFDRCxPQUFPLEdBQUcsQ0FBQztZQUNiLENBQUM7U0FDRixDQUFDLENBQUM7S0FDSjtJQUVEOztPQUVHO0lBQ0ksR0FBRyxDQUFDLEdBQWdCO1FBQ3pCLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0tBQzVCO0NBQ0Y7QUFFRDs7R0FFRztBQUNILFNBQVMsR0FBRyxDQUFJLENBQUksRUFBRSxFQUFrQjtJQUN0QyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixPQUFPLENBQUMsQ0FBQztBQUNYLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbm5vdGF0aW9ucywgQXdzLCBSZXNvdXJjZSwgVmFsaWRhdGlvbkVycm9yIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHR5cGUge1xuICBDbGllbnRWcG5FbmRwb2ludE9wdGlvbnMsXG4gIEVuYWJsZVZwbkdhdGV3YXlPcHRpb25zLFxuICBGbG93TG9nT3B0aW9ucyxcbiAgR2F0ZXdheVZwY0VuZHBvaW50T3B0aW9ucyxcbiAgSW50ZXJmYWNlVnBjRW5kcG9pbnRPcHRpb25zLFxuICBJU3VibmV0LFxuICBJVnBjLFxuICBTZWxlY3RlZFN1Ym5ldHMsXG4gIFN1Ym5ldFNlbGVjdGlvbixcbiAgVnBuQ29ubmVjdGlvbk9wdGlvbnMsXG59IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHtcbiAgQ2ZuVlBDR2F0ZXdheUF0dGFjaG1lbnQsXG4gIENmblZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uLFxuICBDbGllbnRWcG5FbmRwb2ludCxcbiAgRmxvd0xvZyxcbiAgRmxvd0xvZ1Jlc291cmNlVHlwZSxcbiAgR2F0ZXdheVZwY0VuZHBvaW50LFxuICBJbnRlcmZhY2VWcGNFbmRwb2ludCxcbiAgU3VibmV0RmlsdGVyLFxuICBTdWJuZXRUeXBlLFxuICBWcG5Db25uZWN0aW9uLFxuICBWcG5Db25uZWN0aW9uVHlwZSxcbiAgVnBuR2F0ZXdheSxcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgdHlwZSB7IFZQQ1JlZmVyZW5jZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzIvbGliL2VjMi5nZW5lcmF0ZWQnO1xuaW1wb3J0IHsgQWNjb3VudFByaW5jaXBhbCwgRWZmZWN0LCBQb2xpY3lTdGF0ZW1lbnQsIFJvbGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IGxpdCB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL2hlbHBlcnMtaW50ZXJuYWwnO1xuaW1wb3J0IHR5cGUgeyBJQ29uc3RydWN0LCBJRGVwZW5kYWJsZSB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgRGVwZW5kYWJsZSwgRGVwZW5kZW5jeUdyb3VwIH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7XG4gIE5hdEdhdGV3YXlPcHRpb25zLFxuICBWUENQZWVyaW5nQ29ubmVjdGlvbk9wdGlvbnMsXG59IGZyb20gJy4vcm91dGUnO1xuaW1wb3J0IHtcbiAgRWdyZXNzT25seUludGVybmV0R2F0ZXdheSxcbiAgSW50ZXJuZXRHYXRld2F5LFxuICBOYXRDb25uZWN0aXZpdHlUeXBlLFxuICBOYXRHYXRld2F5LFxuICBSb3V0ZSxcbiAgVlBDUGVlcmluZ0Nvbm5lY3Rpb24sXG4gIFZQTkdhdGV3YXlWMixcbn0gZnJvbSAnLi9yb3V0ZSc7XG5pbXBvcnQgdHlwZSB7IElTdWJuZXRWMiB9IGZyb20gJy4vc3VibmV0LXYyJztcbmltcG9ydCB7IGFsbFJvdXRlVGFibGVJZHMsIGZsYXR0ZW4sIHN1Ym5ldEdyb3VwTmFtZUZyb21Db25zdHJ1Y3RJZCB9IGZyb20gJy4vdXRpbCc7XG5pbXBvcnQgdHlwZSB7IElWUENDaWRyQmxvY2sgfSBmcm9tICcuL3ZwYy12Mic7XG5cbi8qKlxuICogT3B0aW9ucyB0byBkZWZpbmUgRWdyZXNzT25seUludGVybmV0R2F0ZXdheSBmb3IgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRWdyZXNzT25seUludGVybmV0R2F0ZXdheU9wdGlvbnMge1xuICAvKipcbiAgICogTGlzdCBvZiBzdWJuZXRzIHdoZXJlIHJvdXRlIHRvIEVHVyB3aWxsIGJlIGFkZGVkXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcm91dGUgY3JlYXRlZFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0cz86IFN1Ym5ldFNlbGVjdGlvbltdO1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBJcHY2IGFkZHJlc3MgZm9yIEVHVyByb3V0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtICc6Oi8wJyBhbGwgSXB2NiB0cmFmZmljXG4gICAqL1xuICByZWFkb25seSBkZXN0aW5hdGlvbj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlc291cmNlIG5hbWUgb2YgdGhlIGVncmVzcy1vbmx5IGludGVybmV0IGdhdGV3YXkuXG4gICAqIFByb3ZpZGVkIG5hbWUgd2lsbCBiZSB1c2VkIGZvciB0YWdnaW5nXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gbmFtZSB0YWcgYXNzb2NpYXRlZCBhbmQgcHJvdmlzaW9uZWQgd2l0aG91dCBhIHJlc291cmNlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gZGVmaW5lIEludGVybmV0R2F0ZXdheSBmb3IgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW50ZXJuZXRHYXRld2F5T3B0aW9uc3tcblxuICAvKipcbiAgICogRGVzdGluYXRpb24gSXB2NiBhZGRyZXNzIGZvciBFR1cgcm91dGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSAnMC4wLjAuMCcgYWxsIElwdjQgdHJhZmZpY1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NERlc3RpbmF0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEZXN0aW5hdGlvbiBJcHY2IGFkZHJlc3MgZm9yIEVHVyByb3V0ZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtICc6Oi8wJyBhbGwgSXB2NiB0cmFmZmljXG4gICAqL1xuICByZWFkb25seSBpcHY2RGVzdGluYXRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZXNvdXJjZSBuYW1lIG9mIHRoZSBpbnRlcm5ldCBnYXRld2F5LlxuICAgKiBQcm92aWRlZCBuYW1lIHdpbGwgYmUgdXNlZCBmb3IgdGFnZ2luZ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHByb3Zpc2lvbmVkIHdpdGhvdXQgYSByZXNvdXJjZSBuYW1lXG4gICAqL1xuICByZWFkb25seSBpbnRlcm5ldEdhdGV3YXlOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHN1Ym5ldHMgd2hlcmUgcm91dGUgdG8gSUdXIHdpbGwgYmUgYWRkZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSByb3V0ZSBjcmVhdGVkIGZvciBhbGwgc3VibmV0cyB3aXRoIFR5cGUgYFN1Ym5ldFR5cGUuUHVibGljYFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0cz86IFN1Ym5ldFNlbGVjdGlvbltdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgdG8gZGVmaW5lIFZQTkdhdGV3YXlWMiBmb3IgVlBDXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVlBOR2F0ZXdheVYyT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBWUE4gY29ubmVjdGlvbiB0aGUgdmlydHVhbCBwcml2YXRlIGdhdGV3YXkgc3VwcG9ydHMuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cG5nYXRld2F5Lmh0bWwjY2ZuLWVjMi12cG5nYXRld2F5LXR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IFZwbkNvbm5lY3Rpb25UeXBlO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJpdmF0ZSBBdXRvbm9tb3VzIFN5c3RlbSBOdW1iZXIgKEFTTikgZm9yIHRoZSBBbWF6b24gc2lkZSBvZiBhIEJHUCBzZXNzaW9uLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIEFTTiBzZXQgZm9yIEJHUCBzZXNzaW9uXG4gICAqL1xuICByZWFkb25seSBhbWF6b25TaWRlQXNuPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzb3VyY2UgbmFtZSBvZiB0aGUgVlBOIGdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVzb3VyY2UgcHJvdmlzaW9uZWQgd2l0aG91dCBhbnkgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgdnBuR2F0ZXdheU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN1Ym5ldHMgd2hlcmUgdGhlIHJvdXRlIHByb3BhZ2F0aW9uIHNob3VsZCBiZSBhZGRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBwcm9wYWdhdGlvbiBmb3Igcm91dGVzXG4gICAqL1xuICByZWFkb25seSB2cG5Sb3V0ZVByb3BhZ2F0aW9uPzogU3VibmV0U2VsZWN0aW9uW107XG59XG5cbi8qKlxuICogUGxhY2Vob2xkZXIgdG8gc2VlIHdoYXQgZXh0cmEgcHJvcHMgd2UgbWlnaHQgbmVlZCxcbiAqIHdpbGwgYmUgYWRkZWQgdG8gb3JpZ2luYWwgSVZQQ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElWcGNWMiBleHRlbmRzIElWcGMge1xuICAvKipcbiAgICogVGhlIHNlY29uZGFyeSBDSURSIGJsb2NrcyBhc3NvY2lhdGVkIHdpdGggdGhlIFZQQy5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtY2lkci1ibG9ja3MuaHRtbCN2cGMtcmVzaXplfS5cbiAgICovXG4gIHJlYWRvbmx5IHNlY29uZGFyeUNpZHJCbG9jaz86IElWUENDaWRyQmxvY2tbXTtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgSVB2NCBDSURSIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgVlBDLlxuICAgKiBOZWVkZWQgaW4gb3JkZXIgdG8gdmFsaWRhdGUgdGhlIHZwYyByYW5nZSBvZiBzdWJuZXRcbiAgICogY3VycmVudCBwcm9wIHZwY0NpZHJCbG9jayByZWZlcnMgdG8gdGhlIHRva2VuIHZhbHVlXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXNpemluZy1pcHY0fS5cbiAgICovXG4gIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgdG8gb3ZlcnJpZGUgaW5mZXJyZWQgcmVnaW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gY3VycmVudCBzdGFjaydzIGVudmlyb25tZW50IHJlZ2lvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgQVdTIGFjY291bnQgdGhhdCBvd25zIHRoZSBWUENcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgYWNjb3VudCBpZCBvZiB0aGUgcGFyZW50IHN0YWNrXG4gICAqL1xuICByZWFkb25seSBvd25lckFjY291bnRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJUHY0IENJRFIgcHJvdmlzaW9uZWQgdW5kZXIgcG9vbFxuICAgKiBSZXF1aXJlZCB0byBjaGVjayBmb3Igb3ZlcmxhcHBpbmcgQ0lEUnMgYWZ0ZXIgcHJvdmlzaW9uaW5nXG4gICAqIGlzIGNvbXBsZXRlIHVuZGVyIElQQU0gcG9vbFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NElwYW1Qcm92aXNpb25lZENpZHJzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFZwY05hbWUgdG8gYmUgdXNlZCBmb3IgdGFnZ2luZyBpdHMgY29tcG9uZW50c1xuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB2cGNOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGQgYW4gRWdyZXNzIG9ubHkgSW50ZXJuZXQgR2F0ZXdheSB0byBjdXJyZW50IFZQQy5cbiAgICogQ2FuIG9ubHkgYmUgdXNlZCBmb3IgaXB2NiBlbmFibGVkIFZQQ3MuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvZWdyZXNzLW9ubHktaW50ZXJuZXQtZ2F0ZXdheS1iYXNpY3MuaHRtbH0uXG4gICAqL1xuICBhZGRFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5KG9wdGlvbnM/OiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5T3B0aW9ucyk6IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gSW50ZXJuZXQgR2F0ZXdheSB0byBjdXJyZW50IFZQQy5cbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS92cGMvbGF0ZXN0L3VzZXJndWlkZS92cGMtaWd3LWludGVybmV0LWFjY2Vzcy5odG1sfS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBkZWZpbmVzIHJvdXRlIGZvciBhbGwgaXB2NCgnMC4wLjAuMCcpIGFuZCBpcHY2IGFkZHJlc3NlcygnOjovMCcpXG4gICAqL1xuICBhZGRJbnRlcm5ldEdhdGV3YXkob3B0aW9ucz86IEludGVybmV0R2F0ZXdheU9wdGlvbnMpOiBJbnRlcm5ldEdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIEFkZHMgVlBOIEdhdGV3YXkgdG8gVlBDIGFuZCBzZXQgcm91dGUgcHJvcGFnYXRpb24uXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZWMyLXZwbmdhdGV3YXkuaHRtbH0uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gcm91dGUgcHJvcGFnYXRpb25cbiAgICovXG4gIGVuYWJsZVZwbkdhdGV3YXlWMihvcHRpb25zOiBWUE5HYXRld2F5VjJPcHRpb25zKTogVlBOR2F0ZXdheVYyO1xuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IE5BVCBHYXRld2F5IHRvIFZQQ1xuICAgKiBBIE5BVCBnYXRld2F5IGlzIGEgTmV0d29yayBBZGRyZXNzIFRyYW5zbGF0aW9uIChOQVQpIHNlcnZpY2UuIE5BVCBHYXRld2F5IENvbm5lY3Rpdml0eSBjYW4gYmUgb2YgdHlwZSBgUHVibGljYCBvciBgUHJpdmF0ZWAuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLW5hdC1nYXRld2F5Lmh0bWx9LlxuICAgKlxuICAgKiBAZGVmYXVsdCBDb25uZWN0aXZpdHlUeXBlLlB1YmxpY1xuICAgKi9cbiAgYWRkTmF0R2F0ZXdheShvcHRpb25zOiBOYXRHYXRld2F5T3B0aW9ucyk6IE5hdEdhdGV3YXk7XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgcm9sZSB0byBhY2NlcHRvciBWUEMgYWNjb3VudFxuICAgKiBBIGNyb3NzIGFjY291bnQgcm9sZSBpcyByZXF1aXJlZCBmb3IgdGhlIFZQQyB0byBwZWVyIHdpdGggYW5vdGhlciBhY2NvdW50LlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIHRoZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvcGVlci13aXRoLXZwYy1pbi1hbm90aGVyLWFjY291bnQuaHRtbH0uXG4gICAqL1xuICBjcmVhdGVBY2NlcHRvclZwY1JvbGUocmVxdWVzdG9yQWNjb3VudElkOiBzdHJpbmcpOiBSb2xlO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IHBlZXJpbmcgY29ubmVjdGlvblxuICAgKiBBIHBlZXJpbmcgY29ubmVjdGlvbiBpcyBhIHByaXZhdGUgdmlydHVhbCBuZXR3b3JrIGVzdGFibGlzaGVkIGJldHdlZW4gdHdvIFZQQ3MuXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC9wZWVyaW5nL3doYXQtaXMtdnBjLXBlZXJpbmcuaHRtbH0uXG4gICAqL1xuICBjcmVhdGVQZWVyaW5nQ29ubmVjdGlvbihpZDogc3RyaW5nLCBvcHRpb25zOiBWUENQZWVyaW5nQ29ubmVjdGlvbk9wdGlvbnMpOiBWUENQZWVyaW5nQ29ubmVjdGlvbjtcbn1cblxuLyoqXG4gKiBCYXNlIGNsYXNzIGZvciBjcmVhdGluZyBhIFZQQyAoVmlydHVhbCBQcml2YXRlIENsb3VkKSBpbiBBV1MuXG4gKlxuICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSB0aGUge0BsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi5WcGMuaHRtbHxBV1MgQ0RLIERvY3VtZW50YXRpb24gb24gVlBDc30uXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBWcGNWMkJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElWcGNWMiB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY0lkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFybiBvZiB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY0Fybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDSURSIHJhbmdlIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY0NpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIHB1YmxpYyBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHVibGljU3VibmV0czogSVN1Ym5ldFtdID0gW107XG5cbiAgLyoqXG4gICAqIExpc3Qgb2YgcHJpdmF0ZSBzdWJuZXRzIGluIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcHJpdmF0ZVN1Ym5ldHM6IElTdWJuZXRbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBMaXN0IG9mIGlzb2xhdGVkIHN1Ym5ldHMgaW4gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpc29sYXRlZFN1Ym5ldHM6IElTdWJuZXRbXTtcblxuICAvKipcbiAgICogQVpzIGZvciB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmVzOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8qKlxuICAgKiBEZXBlbmRhYmxlIHRoYXQgY2FuIGJlIGRlcGVuZGVkIHVwb24gdG8gZm9yY2UgaW50ZXJuZXQgY29ubmVjdGl2aXR5IGVzdGFibGlzaGVkIG9uIHRoZSBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkOiBJRGVwZW5kYWJsZTtcblxuICAvKipcbiAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAqIEFkZCBpZ3cgdG8gdGhpcyBpZiBpdHMgYSBwdWJsaWMgc3VibmV0XG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkID0gbmV3IERlcGVuZGVuY3lHcm91cCgpO1xuXG4gIC8qKlxuICAgKiBTZWNvbmRhcnkgSVBzIGZvciB0aGUgVlBDLCBjYW4gYmUgbXVsdGlwbGUgSXB2NCBvciBJcHY2XG4gICAqIElwdjQgc2hvdWxkIGJlIHdpdGhpbiBSRkMjMTkxOCByYW5nZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHNlY29uZGFyeUNpZHJCbG9jaz86IElWUENDaWRyQmxvY2tbXTtcblxuICAvKipcbiAgICogVGhlIHByaW1hcnkgSVB2NCBDSURSIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgVlBDLlxuICAgKiBOZWVkZWQgaW4gb3JkZXIgdG8gdmFsaWRhdGUgdGhlIHZwYyByYW5nZSBvZiBzdWJuZXRcbiAgICogY3VycmVudCBwcm9wIHZwY0NpZHJCbG9jayByZWZlcnMgdG8gdGhlIHRva2VuIHZhbHVlXG4gICAqIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgdGhlIHtAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vdnBjL2xhdGVzdC91c2VyZ3VpZGUvdnBjLWNpZHItYmxvY2tzLmh0bWwjdnBjLXNpemluZy1pcHY0fS5cbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZwY05hbWUgdG8gYmUgdXNlZCBmb3IgdGFnZ2luZyBpdHMgY29tcG9uZW50c1xuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHZwY05hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFJlZ2lvbiBmb3IgdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSByZWdpb246IHN0cmluZztcblxuICAvKipcbiAgICogSWRlbnRpZmllciBvZiB0aGUgb3duZXIgZm9yIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgb3duZXJBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogSVB2NCBDSURSIHByb3Zpc2lvbmVkIHVuZGVyIHBvb2xcbiAgICogUmVxdWlyZWQgdG8gY2hlY2sgZm9yIG92ZXJsYXBwaW5nIENJRFJzIGFmdGVyIHByb3Zpc2lvbmluZ1xuICAgKiBpcyBjb21wbGV0ZSB1bmRlciBJUEFNIHBvb2xcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBpcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWYgdGhpcyBpcyBzZXQgdG8gdHJ1ZSwgZG9uJ3QgZXJyb3Igb3V0IG9uIHRyeWluZyB0byBzZWxlY3Qgc3VibmV0c1xuICAgKi9cbiAgcHJvdGVjdGVkIGluY29tcGxldGVTdWJuZXREZWZpbml0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIE11dGFibGUgcHJpdmF0ZSBmaWVsZCBmb3IgdGhlIHZwbkdhdGV3YXlJZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBfdnBuR2F0ZXdheUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNdXRhYmxlIHByaXZhdGUgZmllbGQgZm9yIHRoZSBpbnRlcm5ldEdhdGV3YXlJZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBfaW50ZXJuZXRHYXRld2F5SWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE11dGFibGUgcHJpdmF0ZSBmaWVsZCBmb3IgdGhlIEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlJZFxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByb3RlY3RlZCBfZWdyZXNzT25seUludGVybmV0R2F0ZXdheUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gaW5mb3JtYXRpb24gb24gdGhlIHN1Ym5ldHMgYXBwcm9wcmlhdGUgZm9yIHRoZSBnaXZlbiBzZWxlY3Rpb24gc3RyYXRlZ3lcbiAgICpcbiAgICogUmVxdWlyZXMgdGhhdCBhdCBsZWFzdCBvbmUgc3VibmV0IGlzIG1hdGNoZWQsIHRocm93cyBhIGRlc2NyaXB0aXZlXG4gICAqIGVycm9yIG1lc3NhZ2Ugb3RoZXJ3aXNlLlxuICAgKi9cbiAgcHVibGljIHNlbGVjdFN1Ym5ldHMoc2VsZWN0aW9uOiBTdWJuZXRTZWxlY3Rpb24gPSB7fSk6IFNlbGVjdGVkU3VibmV0cyB7XG4gICAgY29uc3Qgc3VibmV0cyA9IHRoaXMuc2VsZWN0U3VibmV0T2JqZWN0cyhzZWxlY3Rpb24pO1xuICAgIGNvbnN0IHB1YnMgPSBuZXcgU2V0KHRoaXMucHVibGljU3VibmV0cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgc3VibmV0SWRzOiBzdWJuZXRzLm1hcChzID0+IHMuc3VibmV0SWQpLFxuICAgICAgZ2V0IGF2YWlsYWJpbGl0eVpvbmVzKCk6IHN0cmluZ1tdIHsgcmV0dXJuIHN1Ym5ldHMubWFwKHMgPT4gcy5hdmFpbGFiaWxpdHlab25lKTsgfSxcbiAgICAgIGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IHRhcChuZXcgQ29tcG9zaXRlRGVwZW5kYWJsZSgpLCBkID0+IHN1Ym5ldHMuZm9yRWFjaChzID0+IGQuYWRkKHMuaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCkpKSxcbiAgICAgIHN1Ym5ldHMsXG4gICAgICBoYXNQdWJsaWM6IHN1Ym5ldHMuc29tZShzID0+IHB1YnMuaGFzKHMpKSxcbiAgICAgIGlzUGVuZGluZ0xvb2t1cDogdGhpcy5pbmNvbXBsZXRlU3VibmV0RGVmaW5pdGlvbixcbiAgICB9O1xuICB9XG5cbiAgcHVibGljIGdldCB2cGNSZWYoKTogVlBDUmVmZXJlbmNlIHtcbiAgICByZXR1cm4ge1xuICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgVlBOIEdhdGV3YXkgdG8gdGhpcyBWUENcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGVuYWJsZVZwbkdhdGV3YXlWMiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIFZQQ1YyLlJvdXRlXG4gICAqL1xuICBwdWJsaWMgZW5hYmxlVnBuR2F0ZXdheShvcHRpb25zOiBFbmFibGVWcG5HYXRld2F5T3B0aW9ucyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnZwbkdhdGV3YXlJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgVlBOIEdhdGV3YXkgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IHZwbkdhdGV3YXkgPSBuZXcgVnBuR2F0ZXdheSh0aGlzLCAnVnBuR2F0ZXdheScsIHtcbiAgICAgIGFtYXpvblNpZGVBc246IG9wdGlvbnMuYW1hem9uU2lkZUFzbixcbiAgICAgIHR5cGU6IFZwbkNvbm5lY3Rpb25UeXBlLklQU0VDXzEsXG4gICAgfSk7XG5cbiAgICB0aGlzLl92cG5HYXRld2F5SWQgPSB2cG5HYXRld2F5LmdhdGV3YXlJZDtcblxuICAgIGNvbnN0IGF0dGFjaG1lbnQgPSBuZXcgQ2ZuVlBDR2F0ZXdheUF0dGFjaG1lbnQodGhpcywgJ1ZQQ1ZQTkdXJywge1xuICAgICAgdnBjSWQ6IHRoaXMudnBjSWQsXG4gICAgICB2cG5HYXRld2F5SWQ6IHRoaXMuX3ZwbkdhdGV3YXlJZCxcbiAgICB9KTtcblxuICAgIC8vIFByb3BhZ2F0ZSByb3V0ZXMgb24gcm91dGUgdGFibGVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmlnaHQgc3VibmV0c1xuICAgIGNvbnN0IHZwblJvdXRlUHJvcGFnYXRpb24gPSBvcHRpb25zLnZwblJvdXRlUHJvcGFnYXRpb24gPz8gW3t9XTtcbiAgICBjb25zdCByb3V0ZVRhYmxlSWRzID0gYWxsUm91dGVUYWJsZUlkcyhmbGF0dGVuKHZwblJvdXRlUHJvcGFnYXRpb24ubWFwKHMgPT4gdGhpcy5zZWxlY3RTdWJuZXRzKHMpLnN1Ym5ldHMpKSk7XG5cbiAgICBpZiAocm91dGVUYWJsZUlkcy5sZW5ndGggPT09IDApIHtcbiAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLl9hZGRUcmFja2FibGVFcnJvcihsaXRgVnBuR2F0ZXdheU5vTWF0Y2hpbmdTdWJuZXRzYCwgYGVuYWJsZVZwbkdhdGV3YXk6IG5vIHN1Ym5ldHMgbWF0Y2hpbmcgc2VsZWN0aW9uOiAnJHtKU09OLnN0cmluZ2lmeSh2cG5Sb3V0ZVByb3BhZ2F0aW9uKX0nLiBTZWxlY3Qgb3RoZXIgc3VibmV0cyB0byBhZGQgcm91dGVzIHRvLmApO1xuICAgIH1cblxuICAgIGNvbnN0IHJvdXRlUHJvcGFnYXRpb24gPSBuZXcgQ2ZuVlBOR2F0ZXdheVJvdXRlUHJvcGFnYXRpb24odGhpcywgJ1JvdXRlUHJvcGFnYXRpb24nLCB7XG4gICAgICByb3V0ZVRhYmxlSWRzLFxuICAgICAgdnBuR2F0ZXdheUlkOiB0aGlzLl92cG5HYXRld2F5SWQsXG4gICAgfSk7XG4gICAgICAvLyBUaGUgQVdTOjpFQzI6OlZQTkdhdGV3YXlSb3V0ZVByb3BhZ2F0aW9uIHJlc291cmNlIGNhbm5vdCB1c2UgdGhlIFZQTiBnYXRld2F5XG4gICAgICAvLyB1bnRpbCBpdCBoYXMgc3VjY2Vzc2Z1bGx5IGF0dGFjaGVkIHRvIHRoZSBWUEMuXG4gICAgICAvLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi12cG4tZ2F0ZXdheXJvdXRlcHJvcC5odG1sXG4gICAgcm91dGVQcm9wYWdhdGlvbi5ub2RlLmFkZERlcGVuZGVuY3koYXR0YWNobWVudCk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBWUE5HQXRld2F5VjIgdG8gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBlbmFibGVWcG5HYXRld2F5VjIob3B0aW9uczogVlBOR2F0ZXdheVYyT3B0aW9ucyk6IFZQTkdhdGV3YXlWMiB7XG4gICAgaWYgKHRoaXMudnBuR2F0ZXdheUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoZSBWUE4gR2F0ZXdheSBoYXMgYWxyZWFkeSBiZWVuIGVuYWJsZWQuJyk7XG4gICAgfVxuXG4gICAgY29uc3QgdnBuR2F0ZXdheSA9IG5ldyBWUE5HYXRld2F5VjIodGhpcywgJ1ZwbkdhdGV3YXknLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuXG4gICAgdGhpcy5faW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZC5hZGQodnBuR2F0ZXdheSk7XG4gICAgdGhpcy5fdnBuR2F0ZXdheUlkID0gdnBuR2F0ZXdheS5yb3V0ZXJUYXJnZXRJZDtcblxuICAgIHJldHVybiB2cG5HYXRld2F5O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgVlBOIGNvbm5lY3Rpb24gdG8gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhZGRWcG5Db25uZWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM6IFZwbkNvbm5lY3Rpb25PcHRpb25zKTogVnBuQ29ubmVjdGlvbiB7XG4gICAgcmV0dXJuIG5ldyBWcG5Db25uZWN0aW9uKHRoaXMsIGlkLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgY2xpZW50IFZQTiBlbmRwb2ludCB0byB0aGlzIFZQQ1xuICAgKi9cbiAgcHVibGljIGFkZENsaWVudFZwbkVuZHBvaW50KGlkOiBzdHJpbmcsIG9wdGlvbnM6IENsaWVudFZwbkVuZHBvaW50T3B0aW9ucyk6IENsaWVudFZwbkVuZHBvaW50IHtcbiAgICByZXR1cm4gbmV3IENsaWVudFZwbkVuZHBvaW50KHRoaXMsIGlkLCB7XG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgdnBjOiB0aGlzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgaW50ZXJmYWNlIGVuZHBvaW50IHRvIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWRkSW50ZXJmYWNlRW5kcG9pbnQoaWQ6IHN0cmluZywgb3B0aW9uczogSW50ZXJmYWNlVnBjRW5kcG9pbnRPcHRpb25zKTogSW50ZXJmYWNlVnBjRW5kcG9pbnQge1xuICAgIHJldHVybiBuZXcgSW50ZXJmYWNlVnBjRW5kcG9pbnQodGhpcywgaWQsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBnYXRld2F5IGVuZHBvaW50IHRvIHRoaXMgVlBDXG4gICAqL1xuICBwdWJsaWMgYWRkR2F0ZXdheUVuZHBvaW50KGlkOiBzdHJpbmcsIG9wdGlvbnM6IEdhdGV3YXlWcGNFbmRwb2ludE9wdGlvbnMpOiBHYXRld2F5VnBjRW5kcG9pbnQge1xuICAgIHJldHVybiBuZXcgR2F0ZXdheVZwY0VuZHBvaW50KHRoaXMsIGlkLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgRWdyZXNzIE9ubHkgSW50ZXJuZXQgR2F0ZXdheSB0byB0aGlzIFZQQyBhbmQgZGVmaW5lcyBhIG5ldyByb3V0ZVxuICAgKiB0byB0aGUgcm91dGUgdGFibGUgb2YgZ2l2ZW4gc3VibmV0cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpbiBjYXNlIG9mIG5vIGlucHV0IHN1Ym5ldHMsIG5vIHJvdXRlIGlzIGNyZWF0ZWRcbiAgICovXG4gIHB1YmxpYyBhZGRFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5KG9wdGlvbnM/OiBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5T3B0aW9ucyk6IEVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXkge1xuICAgIGNvbnN0IGVndyA9IG5ldyBFZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5KHRoaXMsICdFZ3Jlc3NPbmx5R1cnLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICBlZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5TmFtZTogb3B0aW9ucz8uZWdyZXNzT25seUludGVybmV0R2F0ZXdheU5hbWUsXG4gICAgfSk7XG4gICAgdGhpcy5fZWdyZXNzT25seUludGVybmV0R2F0ZXdheUlkID0gZWd3LnJvdXRlclRhcmdldElkO1xuXG4gICAgbGV0IHVzZUlwdjY7XG4gICAgaWYgKHRoaXMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICB1c2VJcHY2ID0gKHRoaXMuc2Vjb25kYXJ5Q2lkckJsb2NrLnNvbWUoKHNlY29uZGFyeUFkZHJlc3MpID0+IHNlY29uZGFyeUFkZHJlc3MuYW1hem9uUHJvdmlkZWRJcHY2Q2lkckJsb2NrID09PSB0cnVlIHx8XG4gICAgc2Vjb25kYXJ5QWRkcmVzcy5pcHY2SXBhbVBvb2xJZCAhPT0gdW5kZWZpbmVkIHx8IHNlY29uZGFyeUFkZHJlc3MuaXB2NkNpZHJCbG9jayAhPT0gdW5kZWZpbmVkKSk7XG4gICAgfVxuXG4gICAgaWYgKCF1c2VJcHY2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0VncmVzcyBvbmx5IElHVyBjYW4gb25seSBiZSBhZGRlZCB0byBJcHY2IGVuYWJsZWQgVlBDJyk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnM/LnN1Ym5ldHMpIHtcbiAgICAgIC8vIFVzZSBoZWxwZXIgZnVuY3Rpb24gdG8gZW5zdXJlIHVuaXF1ZSBzdWJuZXRzXG4gICAgICBjb25zdCBzdWJuZXRzID0gZmxhdHRlbihvcHRpb25zLnN1Ym5ldHMubWFwKHMgPT4gdGhpcy5zZWxlY3RTdWJuZXRzKHMpLnN1Ym5ldHMpKTtcbiAgICAgIHRoaXMucHJvY2Vzc1N1Ym5ldHMoc3VibmV0cywgKHN1Ym5ldCkgPT4ge1xuICAgICAgICB0aGlzLmNyZWF0ZUVncmVzc1JvdXRlKHN1Ym5ldCwgZWd3LCBvcHRpb25zLmRlc3RpbmF0aW9uKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICByZXR1cm4gZWd3O1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSByb3V0ZSBmb3IgRUdXIHdpdGggZGVzdGluYXRpb24gc2V0IHRvIG91dGJvdW5kIElQdjYoJzo6LzAnKSBvciBjdXN0b20gaXB2NiBhZGRyZXNzLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgY3JlYXRlRWdyZXNzUm91dGUoc3VibmV0OiBJU3VibmV0VjIsIGVndzogRWdyZXNzT25seUludGVybmV0R2F0ZXdheSwgZGVzdGluYXRpb24/OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBkZXN0aW5hdGlvbklwdjYgPSBkZXN0aW5hdGlvbiA/PyAnOjovMCc7XG4gICAgbmV3IFJvdXRlKHRoaXMsIGAke3N1Ym5ldC5ub2RlLmlkfS1FZ3Jlc3NSb3V0ZWAsIHtcbiAgICAgIHJvdXRlVGFibGU6IHN1Ym5ldC5yb3V0ZVRhYmxlLFxuICAgICAgZGVzdGluYXRpb246IGRlc3RpbmF0aW9uSXB2NiwgLy8gSVB2NiBkZWZhdWx0IHJvdXRlXG4gICAgICB0YXJnZXQ6IHsgZ2F0ZXdheTogZWd3IH0sXG4gICAgICByb3V0ZU5hbWU6ICdDREtFSUdXUm91dGUnLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgSW50ZXJuZXQgR2F0ZXdheSB0byB0aGlzIFZQQ1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGNyZWF0ZXMgYSBuZXcgcm91dGUgZm9yIHB1YmxpYyBzdWJuZXRzKHdpdGggYWxsIG91dGJvdW5kIGFjY2VzcykgdG8gdGhlIEludGVybmV0IEdhdGV3YXkuXG4gICAqL1xuICBwdWJsaWMgYWRkSW50ZXJuZXRHYXRld2F5KG9wdGlvbnM/OiBJbnRlcm5ldEdhdGV3YXlPcHRpb25zKTogSW50ZXJuZXRHYXRld2F5IHtcbiAgICBpZiAodGhpcy5faW50ZXJuZXRHYXRld2F5SWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignVGhlIEludGVybmV0IEdhdGV3YXkgaGFzIGFscmVhZHkgYmVlbiBlbmFibGVkLicpO1xuICAgIH1cblxuICAgIGNvbnN0IGlndyA9IG5ldyBJbnRlcm5ldEdhdGV3YXkodGhpcywgJ0ludGVybmV0R2F0ZXdheScsIHtcbiAgICAgIHZwYzogdGhpcyxcbiAgICAgIGludGVybmV0R2F0ZXdheU5hbWU6IG9wdGlvbnM/LmludGVybmV0R2F0ZXdheU5hbWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkLmFkZChpZ3cpO1xuICAgIHRoaXMuX2ludGVybmV0R2F0ZXdheUlkID0gaWd3LnJvdXRlclRhcmdldElkO1xuXG4gICAgLy8gQWRkIHJvdXRlcyBmb3Igc3VibmV0cyBkZWZpbmVkIGFzIGFuIGlucHV0XG4gICAgaWYgKG9wdGlvbnM/LnN1Ym5ldHMpIHtcbiAgICAgIGNvbnN0IHN1Ym5ldHMgPSBmbGF0dGVuKG9wdGlvbnMuc3VibmV0cy5tYXAocyA9PiB0aGlzLnNlbGVjdFN1Ym5ldHMocykuc3VibmV0cykpO1xuICAgICAgLy8gVXNlIGhlbHBlciBmdW5jdGlvbiB0byBlbnN1cmUgdW5pcXVlIHN1Ym5ldHNcbiAgICAgIHRoaXMucHJvY2Vzc1N1Ym5ldHMoc3VibmV0cywgKHN1Ym5ldCkgPT4ge1xuICAgICAgICB0aGlzLmFkZERlZmF1bHRJbnRlcm5ldFJvdXRlKHN1Ym5ldCwgaWd3LCBvcHRpb25zKTtcbiAgICAgIH0pO1xuICAgICAgLy8gSWYgdGhlcmUgYXJlIG5vIGlucHV0IHN1Ym5ldHMgZGVmaW5lZCwgZGVmYXVsdCByb3V0ZSB3aWxsIGJlIGFkZGVkIHRvIGFsbCBwdWJsaWMgc3VibmV0c1xuICAgIH0gZWxzZSBpZiAoIW9wdGlvbnM/LnN1Ym5ldHMgJiYgdGhpcy5wdWJsaWNTdWJuZXRzKSB7XG4gICAgICAvLyBUcmFjayByb3V0ZSB0YWJsZXMgdGhhdCBoYXZlIGFscmVhZHkgaGFkIHJvdXRlcyBhZGRlZCB0byBwcmV2ZW50IGR1cGxpY2F0ZXNcbiAgICAgIHRoaXMucHJvY2Vzc1N1Ym5ldHModGhpcy5wdWJsaWNTdWJuZXRzLCAoc3VibmV0KSA9PiB7XG4gICAgICAgIHRoaXMuYWRkRGVmYXVsdEludGVybmV0Um91dGUoc3VibmV0LCBpZ3csIG9wdGlvbnMpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIHJldHVybiBpZ3c7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBkZWZhdWx0IHJvdXRlIGZvciB0aGUgaW50ZXJuZXQgZ2F0ZXdheVxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgYWRkRGVmYXVsdEludGVybmV0Um91dGUoc3VibmV0OiBJU3VibmV0VjIsIGlndzogSW50ZXJuZXRHYXRld2F5LCBvcHRpb25zPzogSW50ZXJuZXRHYXRld2F5T3B0aW9ucyk6IHZvaWQge1xuICAgIC8vIEFkZCBkZWZhdWx0IHJvdXRlIHRvIElHVyBmb3IgSVB2NlxuICAgIGlmIChzdWJuZXQuaXB2NkNpZHJCbG9jaykge1xuICAgICAgbmV3IFJvdXRlKHRoaXMsIGAke3N1Ym5ldC5ub2RlLmlkfS1EZWZhdWx0SVB2NlJvdXRlYCwge1xuICAgICAgICByb3V0ZVRhYmxlOiBzdWJuZXQucm91dGVUYWJsZSxcbiAgICAgICAgZGVzdGluYXRpb246IG9wdGlvbnM/LmlwdjZEZXN0aW5hdGlvbiA/PyAnOjovMCcsXG4gICAgICAgIHRhcmdldDogeyBnYXRld2F5OiBpZ3cgfSxcbiAgICAgICAgcm91dGVOYW1lOiAnQ0RLRGVmYXVsdElQdjZSb3V0ZScsXG4gICAgICB9KTtcbiAgICB9XG4gICAgLy8gQWRkIGRlZmF1bHQgcm91dGUgdG8gSUdXIGZvciBJUHY0XG4gICAgbmV3IFJvdXRlKHRoaXMsIGAke3N1Ym5ldC5ub2RlLmlkfS1EZWZhdWx0Um91dGVgLCB7XG4gICAgICByb3V0ZVRhYmxlOiBzdWJuZXQucm91dGVUYWJsZSxcbiAgICAgIGRlc3RpbmF0aW9uOiBvcHRpb25zPy5pcHY0RGVzdGluYXRpb24gPz8gJzAuMC4wLjAvMCcsXG4gICAgICB0YXJnZXQ6IHsgZ2F0ZXdheTogaWd3IH0sXG4gICAgICByb3V0ZU5hbWU6ICdDREtEZWZhdWx0SVB2NFJvdXRlJyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIZWxwZXIgZnVuY3Rpb24gdG8gcHJvY2VzcyB1bmlxdWUgc3VibmV0cyBhbmQgcm91dGUgdGFibGUgZm9yIGFkZGluZyByb3V0ZXNcbiAgICovXG4gIHByaXZhdGUgcHJvY2Vzc1N1Ym5ldHMoXG4gICAgc3VibmV0czogSVN1Ym5ldFYyW10sXG4gICAgcm91dGVIYW5kbGVyOiAoc3VibmV0OiBJU3VibmV0VjIpID0+IHZvaWQsXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IHByb2Nlc3NlZFN1Ym5ldHMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBwcm9jZXNzZWRSb3V0ZVRhYmxlcyA9IG5ldyBTZXQ8c3RyaW5nPigpO1xuICAgIHN1Ym5ldHMuZm9yRWFjaCgoc3VibmV0KSA9PiB7XG4gICAgICBpZiAoIXRoaXMucHVibGljU3VibmV0cy5pbmNsdWRlcyhzdWJuZXQpKSB7XG4gICAgICAgIEFubm90YXRpb25zLm9mKHRoaXMpLmFkZFdhcm5pbmdWMignSW50ZXJuZXRHYXRld2F5V2FybmluZycsIGBHaXZlbiAke3N1Ym5ldC5ub2RlLmlkfSBpcyBub3QgYSBwdWJsaWMgc3VibmV0LiBJbnRlcm5ldCBHYXRld2F5IHNob3VsZCBiZSBhZGRlZCBvbmx5IHRvIHB1YmxpYyBzdWJuZXRzLmApO1xuICAgICAgfVxuICAgICAgaWYgKCFwcm9jZXNzZWRTdWJuZXRzLmhhcyhzdWJuZXQubm9kZS5pZCkpIHtcbiAgICAgICAgaWYgKHN1Ym5ldC5yb3V0ZVRhYmxlICYmICFwcm9jZXNzZWRSb3V0ZVRhYmxlcy5oYXMoc3VibmV0LnJvdXRlVGFibGUucm91dGVUYWJsZUlkKSkge1xuICAgICAgICAgIHJvdXRlSGFuZGxlcihzdWJuZXQpO1xuICAgICAgICAgIHByb2Nlc3NlZFJvdXRlVGFibGVzLmFkZChzdWJuZXQucm91dGVUYWJsZS5yb3V0ZVRhYmxlSWQpO1xuICAgICAgICB9XG4gICAgICAgIHByb2Nlc3NlZFN1Ym5ldHMuYWRkKHN1Ym5ldC5ub2RlLmlkKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IE5BVCBHYXRld2F5IHRvIHRoZSBnaXZlbiBzdWJuZXQgb2YgdGhpcyBWUENcbiAgICogb2YgZ2l2ZW4gc3VibmV0cy5cbiAgICovXG4gIHB1YmxpYyBhZGROYXRHYXRld2F5KG9wdGlvbnM6IE5hdEdhdGV3YXlPcHRpb25zKTogTmF0R2F0ZXdheSB7XG4gICAgaWYgKG9wdGlvbnMuY29ubmVjdGl2aXR5VHlwZSA9PT0gTmF0Q29ubmVjdGl2aXR5VHlwZS5QVUJMSUMgJiYgIXRoaXMuX2ludGVybmV0R2F0ZXdheUlkKSB7XG4gICAgICB0aHJvdyBuZXcgVmFsaWRhdGlvbkVycm9yKGxpdGBQdWJsaWNOYXRHYXRld2F5UmVxdWlyZXNJbnRlcm5ldEdhdGV3YXlgLCAnQ2Fubm90IGFkZCBhIFB1YmxpYyBOQVQgR2F0ZXdheSB3aXRob3V0IGFuIEludGVybmV0IEdhdGV3YXkgZW5hYmxlZCBvbiBWUEMnLCB0aGlzKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBOYXRHYXRld2F5KHRoaXMsIGBOQVRHYXRld2F5LSR7b3B0aW9ucy5zdWJuZXQubm9kZS5pZH1gLCB7XG4gICAgICB2cGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBuZXcgZmxvdyBsb2cgdG8gdGhpcyBWUENcbiAgICovXG4gIHB1YmxpYyBhZGRGbG93TG9nKGlkOiBzdHJpbmcsIG9wdGlvbnM/OiBGbG93TG9nT3B0aW9ucyk6IEZsb3dMb2cge1xuICAgIHJldHVybiBuZXcgRmxvd0xvZyh0aGlzLCBpZCwge1xuICAgICAgcmVzb3VyY2VUeXBlOiBGbG93TG9nUmVzb3VyY2VUeXBlLmZyb21WcGModGhpcyksXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgcGVlcmluZyBjb25uZWN0aW9uIHJvbGUgZm9yIGFjY2VwdG9yIFZQQ1xuICAgKi9cbiAgcHVibGljIGNyZWF0ZUFjY2VwdG9yVnBjUm9sZShyZXF1ZXN0b3JBY2NvdW50SWQ6IHN0cmluZyk6IFJvbGUge1xuICAgIGNvbnN0IHBlZXJpbmdSb2xlID0gbmV3IFJvbGUodGhpcywgJ1ZwY1BlZXJpbmdSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgQWNjb3VudFByaW5jaXBhbChyZXF1ZXN0b3JBY2NvdW50SWQpLFxuICAgICAgcm9sZU5hbWU6ICdWcGNQZWVyaW5nUm9sZScsXG4gICAgICBkZXNjcmlwdGlvbjogJ1Jlc3RyaWN0aXZlIHJvbGUgZm9yIFZQQyBwZWVyaW5nJyxcbiAgICB9KTtcblxuICAgIHBlZXJpbmdSb2xlLmFkZFRvUG9saWN5KG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICBhY3Rpb25zOiBbJ2VjMjpBY2NlcHRWcGNQZWVyaW5nQ29ubmVjdGlvbiddLFxuICAgICAgcmVzb3VyY2VzOiBbYGFybjoke0F3cy5QQVJUSVRJT059OmVjMjoke3RoaXMucmVnaW9ufToke3RoaXMub3duZXJBY2NvdW50SWR9OnZwYy8ke3RoaXMudnBjSWR9YF0sXG4gICAgfSkpO1xuXG4gICAgcGVlcmluZ1JvbGUuYWRkVG9Qb2xpY3kobmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICBhY3Rpb25zOiBbJ2VjMjpBY2NlcHRWcGNQZWVyaW5nQ29ubmVjdGlvbiddLFxuICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICByZXNvdXJjZXM6IFtgYXJuOiR7QXdzLlBBUlRJVElPTn06ZWMyOiR7dGhpcy5yZWdpb259OiR7dGhpcy5vd25lckFjY291bnRJZH06dnBjLXBlZXJpbmctY29ubmVjdGlvbi8qYF0sXG4gICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgIFN0cmluZ0VxdWFsczoge1xuICAgICAgICAgICdlYzI6QWNjZXB0ZXJWcGMnOiBgYXJuOiR7QXdzLlBBUlRJVElPTn06ZWMyOiR7dGhpcy5yZWdpb259OiR7dGhpcy5vd25lckFjY291bnRJZH06dnBjLyR7dGhpcy52cGNJZH1gLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICB9KSk7XG5cbiAgICByZXR1cm4gcGVlcmluZ1JvbGU7XG4gIH1cblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHBlZXJpbmcgY29ubmVjdGlvblxuICAgKi9cbiAgcHVibGljIGNyZWF0ZVBlZXJpbmdDb25uZWN0aW9uKGlkOiBzdHJpbmcsIG9wdGlvbnM6IFZQQ1BlZXJpbmdDb25uZWN0aW9uT3B0aW9ucyk6IFZQQ1BlZXJpbmdDb25uZWN0aW9uIHtcbiAgICByZXR1cm4gbmV3IFZQQ1BlZXJpbmdDb25uZWN0aW9uKHRoaXMsIGlkLCB7XG4gICAgICByZXF1ZXN0b3JWcGM6IHRoaXMsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIGlkIG9mIHRoZSBWUE4gR2F0ZXdheSAoaWYgZW5hYmxlZClcbiAgICovXG4gIHB1YmxpYyBnZXQgdnBuR2F0ZXdheUlkKCk6IHN0cmluZyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuX3ZwbkdhdGV3YXlJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBpZCBvZiB0aGUgSW50ZXJuZXQgR2F0ZXdheSAoaWYgZW5hYmxlZClcbiAgICovXG4gIHB1YmxpYyBnZXQgaW50ZXJuZXRHYXRld2F5SWQoKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5faW50ZXJuZXRHYXRld2F5SWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgaWQgb2YgdGhlIEVncmVzcyBPbmx5IEludGVybmV0IEdhdGV3YXkgKGlmIGVuYWJsZWQpXG4gICAqL1xuICBwdWJsaWMgZ2V0IGVncmVzc09ubHlJbnRlcm5ldEdhdGV3YXlJZCgpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiB0aGlzLl9lZ3Jlc3NPbmx5SW50ZXJuZXRHYXRld2F5SWQ7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBzdWJuZXRzIGFwcHJvcHJpYXRlIGZvciB0aGUgcGxhY2VtZW50IHN0cmF0ZWd5XG4gICAqL1xuICBwcm90ZWN0ZWQgc2VsZWN0U3VibmV0T2JqZWN0cyhzZWxlY3Rpb246IFN1Ym5ldFNlbGVjdGlvbiA9IHt9KTogSVN1Ym5ldFtdIHtcbiAgICBzZWxlY3Rpb24gPSB0aGlzLnJlaWZ5U2VsZWN0aW9uRGVmYXVsdHMoc2VsZWN0aW9uKTtcblxuICAgIGlmIChzZWxlY3Rpb24uc3VibmV0cyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gc2VsZWN0aW9uLnN1Ym5ldHM7XG4gICAgfVxuXG4gICAgbGV0IHN1Ym5ldHM7XG5cbiAgICBpZiAoc2VsZWN0aW9uLnN1Ym5ldEdyb3VwTmFtZSAhPT0gdW5kZWZpbmVkKSB7IC8vIFNlbGVjdCBieSBuYW1lXG4gICAgICBzdWJuZXRzID0gdGhpcy5zZWxlY3RTdWJuZXRPYmplY3RzQnlOYW1lKHNlbGVjdGlvbi5zdWJuZXRHcm91cE5hbWUpO1xuICAgIH0gZWxzZSB7IC8vIE9yIHNwZWNpZnkgYnkgdHlwZVxuICAgICAgY29uc3QgdHlwZSA9IHNlbGVjdGlvbi5zdWJuZXRUeXBlIHx8IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUztcbiAgICAgIHN1Ym5ldHMgPSB0aGlzLnNlbGVjdFN1Ym5ldE9iamVjdHNCeVR5cGUodHlwZSk7XG4gICAgfVxuXG4gICAgLy8gQXBwbHkgYWxsIHRoZSBmaWx0ZXJzXG4gICAgc3VibmV0cyA9IHRoaXMuYXBwbHlTdWJuZXRGaWx0ZXJzKHN1Ym5ldHMsIHNlbGVjdGlvbi5zdWJuZXRGaWx0ZXJzID8/IFtdKTtcblxuICAgIHJldHVybiBzdWJuZXRzO1xuICB9XG5cbiAgcHJpdmF0ZSBhcHBseVN1Ym5ldEZpbHRlcnMoc3VibmV0czogSVN1Ym5ldFtdLCBmaWx0ZXJzOiBTdWJuZXRGaWx0ZXJbXSk6IElTdWJuZXRbXSB7XG4gICAgbGV0IGZpbHRlcmVkID0gc3VibmV0cztcbiAgICAvLyBBcHBseSBlYWNoIGZpbHRlciBpbiBzZXF1ZW5jZVxuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlcnMpIHtcbiAgICAgIGZpbHRlcmVkID0gZmlsdGVyLnNlbGVjdFN1Ym5ldHMoZmlsdGVyZWQpO1xuICAgIH1cbiAgICByZXR1cm4gZmlsdGVyZWQ7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdFN1Ym5ldE9iamVjdHNCeU5hbWUoZ3JvdXBOYW1lOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhbGxTdWJuZXRzID0gWy4uLnRoaXMucHVibGljU3VibmV0cywgLi4udGhpcy5wcml2YXRlU3VibmV0cywgLi4udGhpcy5pc29sYXRlZFN1Ym5ldHNdO1xuICAgIGNvbnN0IHN1Ym5ldHMgPSBhbGxTdWJuZXRzLmZpbHRlcihzID0+IHN1Ym5ldEdyb3VwTmFtZUZyb21Db25zdHJ1Y3RJZChzKSA9PT0gZ3JvdXBOYW1lKTtcblxuICAgIGlmIChzdWJuZXRzLmxlbmd0aCA9PT0gMCAmJiAhdGhpcy5pbmNvbXBsZXRlU3VibmV0RGVmaW5pdGlvbikge1xuICAgICAgY29uc3QgbmFtZXMgPSBBcnJheS5mcm9tKG5ldyBTZXQoYWxsU3VibmV0cy5tYXAoc3VibmV0R3JvdXBOYW1lRnJvbUNvbnN0cnVjdElkKSkpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBhcmUgbm8gc3VibmV0IGdyb3VwcyB3aXRoIG5hbWUgJyR7Z3JvdXBOYW1lfScgaW4gdGhpcyBWUEMuIEF2YWlsYWJsZSBuYW1lczogJHtuYW1lc31gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VibmV0cztcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0U3VibmV0T2JqZWN0c0J5VHlwZShzdWJuZXRUeXBlOiBTdWJuZXRUeXBlKTogSVN1Ym5ldFtdIHtcbiAgICB0eXBlIERlcHJlY2F0ZWRTdWJuZXRUeXBlID0gJ0RlcHJlY2F0ZWRfSXNvbGF0ZWQnIHwgJ0RlcHJlY2F0ZWRfUHJpdmF0ZSc7XG4gICAgY29uc3QgYWxsU3VibmV0czogeyBba2V5IGluIFN1Ym5ldFR5cGUgfCBEZXByZWNhdGVkU3VibmV0VHlwZV0/OiBJU3VibmV0W10gfSA9IHtcbiAgICAgIFtTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURURdOiB0aGlzLmlzb2xhdGVkU3VibmV0cyxcbiAgICAgIFsnRGVwcmVjYXRlZF9Jc29sYXRlZCddOiB0aGlzLmlzb2xhdGVkU3VibmV0cyxcbiAgICAgIFtTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9OQVRdOiB0aGlzLnByaXZhdGVTdWJuZXRzLFxuICAgICAgW1N1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU106IHRoaXMucHJpdmF0ZVN1Ym5ldHMsXG4gICAgICBbJ0RlcHJlY2F0ZWRfUHJpdmF0ZSddOiB0aGlzLnByaXZhdGVTdWJuZXRzLFxuICAgICAgW1N1Ym5ldFR5cGUuUFVCTElDXTogdGhpcy5wdWJsaWNTdWJuZXRzLFxuICAgIH07XG5cbiAgICBjb25zdCBzdWJuZXRzID0gYWxsU3VibmV0c1tzdWJuZXRUeXBlXSE7XG5cbiAgICAvLyBGb3JjZSBtZXJnZSBjb25mbGljdCBoZXJlIHdpdGggaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL3B1bGwvNDA4OVxuICAgIC8vIHNlZSBJbXBvcnRlZFZwY1xuXG4gICAgaWYgKHN1Ym5ldHMubGVuZ3RoID09PSAwICYmICF0aGlzLmluY29tcGxldGVTdWJuZXREZWZpbml0aW9uKSB7XG4gICAgICBjb25zdCBhdmFpbGFibGVUeXBlcyA9IE9iamVjdC5lbnRyaWVzKGFsbFN1Ym5ldHMpLmZpbHRlcigoW18sIHN1YnNdKSA9PiBzdWJzLmxlbmd0aCA+IDApLm1hcCgoW3R5cGVOYW1lLCBfXSkgPT4gdHlwZU5hbWUpO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBUaGVyZSBhcmUgbm8gJyR7c3VibmV0VHlwZX0nIHN1Ym5ldCBncm91cHMgaW4gdGhpcyBWUEMuIEF2YWlsYWJsZSB0eXBlczogJHthdmFpbGFibGVUeXBlc31gKTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3VibmV0cztcbiAgfVxuXG4gIC8qKlxuICAgKiBWYWxpZGF0ZSB0aGUgZmllbGRzIGluIGEgU3VibmV0U2VsZWN0aW9uIG9iamVjdCwgYW5kIHJlaWZ5IGRlZmF1bHRzIGlmIG5lY2Vzc2FyeVxuICAgKlxuICAgKiBJbiBjYXNlIG9mIGRlZmF1bHQgc2VsZWN0aW9uLCBzZWxlY3QgdGhlIGZpcnN0IHR5cGUgb2YgUFJJVkFURSwgSVNPTEFURUQsXG4gICAqIFBVQkxJQyAoaW4gdGhhdCBvcmRlcikgdGhhdCBoYXMgYW55IHN1Ym5ldHMuXG4gICAqL1xuICBwcml2YXRlIHJlaWZ5U2VsZWN0aW9uRGVmYXVsdHMocGxhY2VtZW50OiBTdWJuZXRTZWxlY3Rpb24pOiBTdWJuZXRTZWxlY3Rpb24ge1xuICAgIC8vIFRPRE86IHRocm93IGVycm9yIGFzIG5ldyBWcGNWMiBjYW5ub3Qgc3VwcG9ydCBzdWJuZXROYW1lIG9yIHN1Ym5ldEdyb3VwTmFtZSBhbnltb3JlXG4gICAgaWYgKCdzdWJuZXROYW1lJyBpbiBwbGFjZW1lbnQgJiYgcGxhY2VtZW50LnN1Ym5ldE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHBsYWNlbWVudC5zdWJuZXRHcm91cE5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BsZWFzZSB1c2Ugb25seSBcXCdzdWJuZXRHcm91cE5hbWVcXCcgKFxcJ3N1Ym5ldE5hbWVcXCcgaXMgZGVwcmVjYXRlZCBhbmQgaGFzIHRoZSBzYW1lIGJlaGF2aW9yKScpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZ1YyKCdAYXdzLWNkay9hd3MtZWMyOnN1Ym5ldE5hbWVEZXByZWNhdGVkJywgJ1VzYWdlIG9mIFxcJ3N1Ym5ldE5hbWVcXCcgaW4gU3VibmV0U2VsZWN0aW9uIGlzIGRlcHJlY2F0ZWQsIHVzZSBcXCdzdWJuZXRHcm91cE5hbWVcXCcgaW5zdGVhZCcpO1xuICAgICAgfVxuICAgICAgcGxhY2VtZW50ID0geyAuLi5wbGFjZW1lbnQsIHN1Ym5ldEdyb3VwTmFtZTogcGxhY2VtZW50LnN1Ym5ldE5hbWUgYXMgc3RyaW5nIH07XG4gICAgfVxuXG4gICAgY29uc3QgZXhjbHVzaXZlU2VsZWN0aW9uczogQXJyYXk8a2V5b2YgU3VibmV0U2VsZWN0aW9uPiA9IFsnc3VibmV0cycsICdzdWJuZXRUeXBlJywgJ3N1Ym5ldEdyb3VwTmFtZSddO1xuICAgIGNvbnN0IHByb3ZpZGVkU2VsZWN0aW9ucyA9IGV4Y2x1c2l2ZVNlbGVjdGlvbnMuZmlsdGVyKGtleSA9PiBwbGFjZW1lbnRba2V5XSAhPT0gdW5kZWZpbmVkKTtcbiAgICBpZiAocHJvdmlkZWRTZWxlY3Rpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgT25seSBvbmUgb2YgJyR7cHJvdmlkZWRTZWxlY3Rpb25zfScgY2FuIGJlIHN1cHBsaWVkIHRvIHN1Ym5ldCBzZWxlY3Rpb24uYCk7XG4gICAgfVxuXG4gICAgaWYgKHBsYWNlbWVudC5zdWJuZXRUeXBlID09PSB1bmRlZmluZWQgJiYgcGxhY2VtZW50LnN1Ym5ldEdyb3VwTmFtZSA9PT0gdW5kZWZpbmVkICYmIHBsYWNlbWVudC5zdWJuZXRzID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFJldHVybiBkZWZhdWx0IHN1Ym5ldCB0eXBlIGJhc2VkIG9uIHN1Ym5ldHMgdGhhdCBhY3R1YWxseSBleGlzdFxuICAgICAgbGV0IHN1Ym5ldFR5cGUgPSB0aGlzLnByaXZhdGVTdWJuZXRzLmxlbmd0aFxuICAgICAgICA/IFN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTUyA6IHRoaXMuaXNvbGF0ZWRTdWJuZXRzLmxlbmd0aCA/IFN1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRCA6IFN1Ym5ldFR5cGUuUFVCTElDO1xuICAgICAgcGxhY2VtZW50ID0geyAuLi5wbGFjZW1lbnQsIHN1Ym5ldFR5cGU6IHN1Ym5ldFR5cGUgfTtcbiAgICB9XG5cbiAgICAvLyBFc3RhYmxpc2ggd2hpY2ggc3VibmV0IGZpbHRlcnMgYXJlIGdvaW5nIHRvIGJlIHVzZWRcbiAgICBsZXQgc3VibmV0RmlsdGVycyA9IHBsYWNlbWVudC5zdWJuZXRGaWx0ZXJzID8/IFtdO1xuXG4gICAgLy8gQmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCBleGlzdGluZyBgYXZhaWxhYmlsaXR5Wm9uZXNgIGFuZCBgb25lUGVyQXpgIGZ1bmN0aW9uYWxpdHlcbiAgICBpZiAocGxhY2VtZW50LmF2YWlsYWJpbGl0eVpvbmVzICE9PSB1bmRlZmluZWQpIHsgLy8gRmlsdGVyIGJ5IEFacywgaWYgc3BlY2lmaWVkXG4gICAgICBzdWJuZXRGaWx0ZXJzLnB1c2goU3VibmV0RmlsdGVyLmF2YWlsYWJpbGl0eVpvbmVzKHBsYWNlbWVudC5hdmFpbGFiaWxpdHlab25lcykpO1xuICAgIH1cbiAgICBpZiAoISFwbGFjZW1lbnQub25lUGVyQXopIHsgLy8gRW5zdXJlIG9uZSBwZXIgQVogaWYgc3BlY2lmaWVkXG4gICAgICBzdWJuZXRGaWx0ZXJzLnB1c2goU3VibmV0RmlsdGVyLm9uZVBlckF6KCkpO1xuICAgIH1cblxuICAgIC8vIE92ZXJ3cml0ZSB0aGUgcHJvdmlkZWQgcGxhY2VtZW50IGZpbHRlcnMgYW5kIHJlbW92ZSB0aGUgYXZhaWxhYmlsaXR5Wm9uZXMgYW5kIG9uZVBlckF6IHByb3BlcnRpZXNcbiAgICBwbGFjZW1lbnQgPSB7IC4uLnBsYWNlbWVudCwgc3VibmV0RmlsdGVyczogc3VibmV0RmlsdGVycywgYXZhaWxhYmlsaXR5Wm9uZXM6IHVuZGVmaW5lZCwgb25lUGVyQXo6IHVuZGVmaW5lZCB9O1xuICAgIGNvbnN0IHsgYXZhaWxhYmlsaXR5Wm9uZXMsIG9uZVBlckF6LCAuLi5yZXN0IH0gPSBwbGFjZW1lbnQ7XG5cbiAgICByZXR1cm4gcmVzdDtcbiAgfVxufVxuXG5jbGFzcyBDb21wb3NpdGVEZXBlbmRhYmxlIGltcGxlbWVudHMgSURlcGVuZGFibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IGRlcGVuZGFibGVzID0gbmV3IEFycmF5PElEZXBlbmRhYmxlPigpO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIERlcGVuZGFibGUuaW1wbGVtZW50KHRoaXMsIHtcbiAgICAgIGdldCBkZXBlbmRlbmN5Um9vdHMoKSB7XG4gICAgICAgIGNvbnN0IHJldCA9IG5ldyBBcnJheTxJQ29uc3RydWN0PigpO1xuICAgICAgICBmb3IgKGNvbnN0IGRlcCBvZiBzZWxmLmRlcGVuZGFibGVzKSB7XG4gICAgICAgICAgcmV0LnB1c2goLi4uRGVwZW5kYWJsZS5vZihkZXApLmRlcGVuZGVuY3lSb290cyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgY29uc3RydWN0IHRvIHRoZSBkZXBlbmRlbmN5IHJvb3RzXG4gICAqL1xuICBwdWJsaWMgYWRkKGRlcDogSURlcGVuZGFibGUpIHtcbiAgICB0aGlzLmRlcGVuZGFibGVzLnB1c2goZGVwKTtcbiAgfVxufVxuXG4vKipcbiAqIEludm9rZSBhIGZ1bmN0aW9uIG9uIGEgdmFsdWUgKGZvciBpdHMgc2lkZSBlZmZlY3QpIGFuZCByZXR1cm4gdGhlIHZhbHVlXG4gKi9cbmZ1bmN0aW9uIHRhcDxUPih4OiBULCBmbjogKHg6IFQpID0+IHZvaWQpOiBUIHtcbiAgZm4oeCk7XG4gIHJldHVybiB4O1xufVxuIl19
|
package/lib/vpc-v2.js
CHANGED
|
@@ -49,7 +49,7 @@ const vpc_v2_base_1 = require("./vpc-v2-base");
|
|
|
49
49
|
* IpAddress options to define VPC V2
|
|
50
50
|
*/
|
|
51
51
|
class IpAddresses {
|
|
52
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.IpAddresses", version: "2.
|
|
52
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.IpAddresses", version: "2.247.0-alpha.0" };
|
|
53
53
|
/**
|
|
54
54
|
* An IPv4 CIDR Range
|
|
55
55
|
*/
|
|
@@ -152,7 +152,7 @@ let VpcV2 = (() => {
|
|
|
152
152
|
VpcV2 = _classThis = _classDescriptor.value;
|
|
153
153
|
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
154
154
|
}
|
|
155
|
-
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2", version: "2.
|
|
155
|
+
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ec2-alpha.VpcV2", version: "2.247.0-alpha.0" };
|
|
156
156
|
/** Uniquely identifies this class. */
|
|
157
157
|
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ec2-alpha.VpcV2';
|
|
158
158
|
/**
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aws-cdk/aws-ec2-alpha",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "2.
|
|
4
|
+
"version": "2.247.0-alpha.0",
|
|
5
5
|
"description": "The CDK construct library for VPC V2",
|
|
6
6
|
"main": "lib/index.js",
|
|
7
7
|
"types": "lib/index.d.ts",
|
|
@@ -78,17 +78,17 @@
|
|
|
78
78
|
},
|
|
79
79
|
"license": "Apache-2.0",
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@aws-cdk/cdk-build-tools": "2.
|
|
81
|
+
"@aws-cdk/cdk-build-tools": "2.247.0-alpha.0",
|
|
82
82
|
"@aws-cdk/integ-runner": "^2.197.1",
|
|
83
|
-
"@aws-cdk/integ-tests-alpha": "^2.
|
|
84
|
-
"@aws-cdk/pkglint": "2.
|
|
83
|
+
"@aws-cdk/integ-tests-alpha": "^2.247.0-alpha.0",
|
|
84
|
+
"@aws-cdk/pkglint": "2.247.0-alpha.0",
|
|
85
85
|
"@types/jest": "^29.5.14",
|
|
86
|
-
"aws-cdk-lib": "2.
|
|
86
|
+
"aws-cdk-lib": "2.247.0",
|
|
87
87
|
"jest": "^29.7.0"
|
|
88
88
|
},
|
|
89
89
|
"homepage": "https://github.com/aws/aws-cdk",
|
|
90
90
|
"peerDependencies": {
|
|
91
|
-
"aws-cdk-lib": "^2.
|
|
91
|
+
"aws-cdk-lib": "^2.247.0",
|
|
92
92
|
"constructs": "^10.5.0"
|
|
93
93
|
},
|
|
94
94
|
"separate-module": false,
|