@aws-cdk/aws-ec2-alpha 2.176.0-alpha.0 → 2.178.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/lib/subnet-v2.js CHANGED
@@ -1,4 +1,10 @@
1
1
  "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
2
8
  var _a, _b;
3
9
  Object.defineProperty(exports, "__esModule", { value: true });
4
10
  exports.SubnetV2 = exports.IpCidr = void 0;
@@ -9,6 +15,7 @@ const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
9
15
  const constructs_1 = require("constructs");
10
16
  const util_1 = require("./util");
11
17
  const route_1 = require("./route");
18
+ const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
12
19
  /**
13
20
  * IPv4 or IPv6 CIDR range for the subnet
14
21
  */
@@ -19,7 +26,7 @@ class IpCidr {
19
26
  }
20
27
  exports.IpCidr = IpCidr;
21
28
  _a = JSII_RTTI_SYMBOL_1;
22
- IpCidr[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.IpCidr", version: "2.176.0-alpha.0" };
29
+ IpCidr[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.IpCidr", version: "2.178.0-alpha.0" };
23
30
  /**
24
31
  * Name tag constant
25
32
  */
@@ -54,46 +61,46 @@ class SubnetV2 extends aws_cdk_lib_1.Resource {
54
61
  throw error;
55
62
  }
56
63
  /**
57
- * Class to define an import for an existing subnet
58
- * @resource AWS::EC2::Subnet
59
- */
64
+ * Class to define an import for an existing subnet
65
+ * @resource AWS::EC2::Subnet
66
+ */
60
67
  class ImportedSubnetV2 extends aws_cdk_lib_1.Resource {
61
68
  constructor() {
62
69
  super(...arguments);
63
70
  /**
64
- * The IPv6 CIDR Block assigned to this subnet
65
- */
71
+ * The IPv6 CIDR Block assigned to this subnet
72
+ */
66
73
  this.ipv6CidrBlock = attrs.ipv6CidrBlock;
67
74
  /**
68
- * The type of subnet (eg. public or private) that this subnet represents.
69
- */
75
+ * The type of subnet (eg. public or private) that this subnet represents.
76
+ */
70
77
  this.subnetType = attrs.subnetType;
71
78
  /**
72
- * The Availability Zone in which subnet is located
73
- */
79
+ * The Availability Zone in which subnet is located
80
+ */
74
81
  this.availabilityZone = attrs.availabilityZone;
75
82
  /**
76
- * The subnetId for this particular subnet
77
- * Refers to the physical ID created
78
- */
83
+ * The subnetId for this particular subnet
84
+ * Refers to the physical ID created
85
+ */
79
86
  this.subnetId = attrs.subnetId;
80
87
  /**
81
- * Dependable that can be depended upon to force internet connectivity established on the VPC
82
- */
88
+ * Dependable that can be depended upon to force internet connectivity established on the VPC
89
+ */
83
90
  this.internetConnectivityEstablished = new constructs_1.DependencyGroup();
84
91
  /**
85
- * The IPv4 CIDR block assigned to this subnet
86
- */
92
+ * The IPv4 CIDR block assigned to this subnet
93
+ */
87
94
  this.ipv4CidrBlock = attrs.ipv4CidrBlock;
88
95
  /**
89
- * Current route table associated with this subnet
90
- */
96
+ * Current route table associated with this subnet
97
+ */
91
98
  this.routeTable = { routeTableId: attrs.routeTableId };
92
99
  }
93
100
  /**
94
- * Associate a Network ACL with this subnet
95
- * Required here since it is implemented in the ISubnetV2
96
- */
101
+ * Associate a Network ACL with this subnet
102
+ * Required here since it is implemented in the ISubnetV2
103
+ */
97
104
  associateNetworkAcl(aclId, networkAcl) {
98
105
  const aclScope = networkAcl instanceof constructs_1.Construct ? networkAcl : this;
99
106
  const other = networkAcl instanceof constructs_1.Construct ? this : networkAcl;
@@ -133,16 +140,17 @@ class SubnetV2 extends aws_cdk_lib_1.Resource {
133
140
  }
134
141
  throw error;
135
142
  }
143
+ // Enhanced CDK Analytics Telemetry
144
+ (0, metadata_resource_1.addConstructMetadata)(this, props);
136
145
  const ipv4CidrBlock = props.ipv4CidrBlock.cidr;
137
146
  const ipv6CidrBlock = props.ipv6CidrBlock?.cidr;
138
147
  if (!checkCidrRanges(props.vpc, props.ipv4CidrBlock.cidr)) {
139
148
  throw new Error('CIDR block should be within the range of VPC');
140
149
  }
141
- ;
142
150
  let overlap = false;
143
151
  let overlapIpv6 = false;
144
152
  overlap = validateOverlappingCidrRanges(props.vpc, props.ipv4CidrBlock.cidr);
145
- //check whether VPC supports ipv6
153
+ // check whether VPC supports ipv6
146
154
  if (props.ipv6CidrBlock?.cidr) {
147
155
  validateSupportIpv6(props.vpc);
148
156
  overlapIpv6 = validateOverlappingCidrRangesipv6(props.vpc, props.ipv6CidrBlock?.cidr);
@@ -222,13 +230,16 @@ class SubnetV2 extends aws_cdk_lib_1.Resource {
222
230
  }
223
231
  exports.SubnetV2 = SubnetV2;
224
232
  _b = JSII_RTTI_SYMBOL_1;
225
- SubnetV2[_b] = { fqn: "@aws-cdk/aws-ec2-alpha.SubnetV2", version: "2.176.0-alpha.0" };
233
+ SubnetV2[_b] = { fqn: "@aws-cdk/aws-ec2-alpha.SubnetV2", version: "2.178.0-alpha.0" };
234
+ __decorate([
235
+ (0, metadata_resource_1.MethodMetadata)()
236
+ ], SubnetV2.prototype, "associateNetworkAcl", null);
226
237
  const subnetTypeMap = {
227
238
  [aws_ec2_1.SubnetType.PRIVATE_ISOLATED]: (vpc, subnet) => vpc.isolatedSubnets.push(subnet),
228
239
  [aws_ec2_1.SubnetType.PUBLIC]: (vpc, subnet) => vpc.publicSubnets.push(subnet),
229
240
  [aws_ec2_1.SubnetType.PRIVATE_WITH_EGRESS]: (vpc, subnet) => vpc.privateSubnets.push(subnet),
230
- [aws_ec2_1.SubnetType.ISOLATED]: (vpc, subnet) => vpc.isolatedSubnets.push(subnet),
231
- [aws_ec2_1.SubnetType.PRIVATE]: (vpc, subnet) => vpc.privateSubnets.push(subnet),
241
+ ['Deprecated_Isolated']: (vpc, subnet) => vpc.isolatedSubnets.push(subnet),
242
+ ['Deprecated_Private']: (vpc, subnet) => vpc.privateSubnets.push(subnet),
232
243
  [aws_ec2_1.SubnetType.PRIVATE_WITH_NAT]: (vpc, subnet) => vpc.privateSubnets.push(subnet),
233
244
  };
234
245
  /**
@@ -268,7 +279,7 @@ function storeSubnetToVpcByType(vpc, subnet, type) {
268
279
  function validateSupportIpv6(vpc) {
269
280
  if (vpc.secondaryCidrBlock) {
270
281
  if (vpc.secondaryCidrBlock.some((secondaryAddress) => secondaryAddress.amazonProvidedIpv6CidrBlock === true ||
271
- secondaryAddress.ipv6IpamPoolId != undefined)) {
282
+ secondaryAddress.ipv6IpamPoolId !== undefined || secondaryAddress.ipv6Pool !== undefined)) {
272
283
  return true;
273
284
  }
274
285
  else {
@@ -377,4 +388,4 @@ function validateOverlappingCidrRangesipv6(vpc, ipv6CidrBlock) {
377
388
  }
378
389
  return result;
379
390
  }
380
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibmV0LXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3VibmV0LXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDZDQUEwRDtBQUMxRCxpREFBd0s7QUFDeEssMkNBQXFFO0FBRXJFLGlDQUFrRDtBQUNsRCxtQ0FBcUM7QUFTckM7O0dBRUc7QUFDSCxNQUFhLE1BQU07SUFPakIsWUFBWSxLQUFhO1FBQ3ZCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDO0tBQ25COztBQVRILHdCQVVDOzs7QUFFRDs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQztBQUVoQzs7R0FFRztBQUNILE1BQU0sV0FBVyxHQUFXLFNBQVMsQ0FBQztBQWtGdEM7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQWEsUUFBUyxTQUFRLHNCQUFRO0lBRXBDOztPQUVHO0lBQ0ksTUFBTSxDQUFDLHNCQUFzQixDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXlCOzs7Ozs7Ozs7O1FBQzFGOzs7VUFHRTtRQUNGLE1BQU0sZ0JBQWlCLFNBQVEsc0JBQVE7WUFBdkM7O2dCQUVFOztrQkFFRTtnQkFDYyxrQkFBYSxHQUFZLEtBQUssQ0FBQyxhQUFhLENBQUM7Z0JBRTdEOztrQkFFRTtnQkFDYyxlQUFVLEdBQWdCLEtBQUssQ0FBQyxVQUFVLENBQUM7Z0JBRTNEOztrQkFFRTtnQkFDYyxxQkFBZ0IsR0FBVyxLQUFLLENBQUMsZ0JBQWdCLENBQUM7Z0JBRWxFOzs7a0JBR0U7Z0JBQ2MsYUFBUSxHQUFXLEtBQUssQ0FBQyxRQUFRLENBQUM7Z0JBRWxEOztrQkFFRTtnQkFDYyxvQ0FBK0IsR0FBZ0IsSUFBSSw0QkFBZSxFQUFFLENBQUM7Z0JBRXJGOztrQkFFRTtnQkFDYyxrQkFBYSxHQUFXLEtBQUssQ0FBQyxhQUFhLENBQUM7Z0JBRTVEOztrQkFFRTtnQkFDYyxlQUFVLEdBQWdCLEVBQUUsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFhLEVBQUUs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RTVCLE1BQU0sVUFBVSxHQUFHLElBQUksb0JBQWEsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVwRCxJQUFJLE1BQU0sR0FBYSxLQUFLLENBQUM7SUFFN0IsS0FBSyxNQUFNLE1BQU0sSUFBSSxVQUFVLEVBQUUsQ0FBQztRQUNoQyxJQUFJLE1BQU0sQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUN6QixNQUFNLFNBQVMsR0FBRyxJQUFJLG9CQUFhLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1lBQzFELE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQy9CLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxNQUFNLEtBQUssSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM1QixJQUFJLFVBQVUsQ0FBQyxhQUFhLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3JELE1BQU0sR0FBRyxJQUFJLENBQUM7UUFDaEIsQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzb3VyY2UsIE5hbWVzLCBMYXp5LCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgQ2ZuU3VibmV0LCBDZm5TdWJuZXRSb3V0ZVRhYmxlQXNzb2NpYXRpb24sIElOZXR3b3JrQWNsLCBJUm91dGVUYWJsZSwgSVN1Ym5ldCwgTmV0d29ya0FjbCwgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uLCBTdWJuZXRUeXBlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QsIERlcGVuZGVuY3lHcm91cCwgSURlcGVuZGFibGUgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElWcGNWMiB9IGZyb20gJy4vdnBjLXYyLWJhc2UnO1xuaW1wb3J0IHsgQ2lkckJsb2NrLCBDaWRyQmxvY2tJcHY2IH0gZnJvbSAnLi91dGlsJztcbmltcG9ydCB7IFJvdXRlVGFibGUgfSBmcm9tICcuL3JvdXRlJztcblxuLyoqXG4gKiBJbnRlcmZhY2UgdG8gZGVmaW5lIHN1Ym5ldCBDSURSXG4gKi9cbmludGVyZmFjZSBJQ2lkciB7XG4gIHJlYWRvbmx5IGNpZHI6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJUHY0IG9yIElQdjYgQ0lEUiByYW5nZSBmb3IgdGhlIHN1Ym5ldFxuICovXG5leHBvcnQgY2xhc3MgSXBDaWRyIGltcGxlbWVudHMgSUNpZHIge1xuXG4gIC8qKlxuICogSVB2NiBDSURSIHJhbmdlIGZvciB0aGUgc3VibmV0XG4gKiBBbGxvd2VkIG9ubHkgaWYgSVB2NiBpcyBlbmFibGVkIG9uIFZQY1xuICovXG4gIHB1YmxpYyByZWFkb25seSBjaWRyOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBzdHJpbmcgKSB7XG4gICAgdGhpcy5jaWRyID0gcHJvcHM7XG4gIH1cbn1cblxuLyoqXG4gKiBOYW1lIHRhZyBjb25zdGFudFxuICovXG5jb25zdCBOQU1FX1RBRzogc3RyaW5nID0gJ05hbWUnO1xuXG4vKipcbiAqIFZQQyBOYW1lIHRhZyBjb25zdGFudFxuICovXG5jb25zdCBWUENOQU1FX1RBRzogc3RyaW5nID0gJ1ZwY05hbWUnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIHN1Ym5ldCBmb3IgVlBDLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldFYyUHJvcHMge1xuLyoqXG4gKiBWUEMgUHJvcFxuICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBpcHY0IGNpZHIgdG8gYXNzaWduIHRvIHRoaXMgc3VibmV0LlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1zdWJuZXQuaHRtbCNjZm4tZWMyLXN1Ym5ldC1jaWRyYmxvY2tcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IElwQ2lkcjtcblxuICAvKipcbiAgICogSXB2NiBDSURSIFJhbmdlIGZvciBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBJcHY2IGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBJcENpZHI7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBBWiBmb3IgdGhlIHN1Ym5ldFxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gUm91dGUgZm9yIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgZGVmYXVsdCByb3V0ZSB0YWJsZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSByb3V0ZVRhYmxlPzogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFN1Ym5ldCB0byBjb25maWd1cmUuXG4gICAqXG4gICAqIFRoZSBTdWJuZXQgdHlwZSB3aWxsIGNvbnRyb2wgdGhlIGFiaWxpdHkgdG8gcm91dGUgYW5kIGNvbm5lY3QgdG8gdGhlXG4gICAqIEludGVybmV0LlxuICAgKlxuICAgKiBUT0RPOiBBZGQgdmFsaWRhdGlvbiBjaGVjayBgc3VibmV0VHlwZWAgd2hlbiBhZGRpbmcgcmVzb3VyY2VzIChlLmcuIGNhbm5vdCBhZGQgTmF0R2F0ZXdheSB0byBwcml2YXRlKVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0VHlwZTogU3VibmV0VHlwZTtcblxuICAvKipcbiAgICogU3VibmV0IG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRoIGFuIGF1dG9nZW5lcmF0ZWQgbmFtZSBieSBDREtcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGEgbmV0d29yayBpbnRlcmZhY2UgY3JlYXRlZCBpbiB0aGlzIHN1Ym5ldCByZWNlaXZlcyBhbiBJUHY2IGFkZHJlc3MuXG4gICAqIElmIHlvdSBzcGVjaWZ5IEFzc2lnbklwdjZBZGRyZXNzT25DcmVhdGlvbiwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IElwdjZDaWRyQmxvY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIGluIGNhc2Ugbm90IHByb3ZpZGVkIGFzIGFuIGlucHV0XG4gICAqL1xuICByZWFkb25seSBhc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24/OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZvciBTdWJuZXRWMlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTdWJuZXRWMiBleHRlbmRzIElTdWJuZXQge1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NiBDSURSIGJsb2NrIGZvciB0aGlzIHN1Ym5ldFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NkNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygc3VibmV0IChwdWJsaWMgb3IgcHJpdmF0ZSkgdGhhdCB0aGlzIHN1Ym5ldCByZXByZXNlbnRzLlxuICAgKlxuICAgKiBAYXR0cmlidXRlIFN1Ym5ldFR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldFR5cGU/OiBTdWJuZXRUeXBlO1xuXG59XG5cbi8qKlxuICogVGhlIFN1Ym5ldFYyIGNsYXNzIHJlcHJlc2VudHMgYSBzdWJuZXQgd2l0aGluIGEgVlBDIChWaXJ0dWFsIFByaXZhdGUgQ2xvdWQpIGluIEFXUy5cbiAqIEl0IGV4dGVuZHMgdGhlIFJlc291cmNlIGNsYXNzIGFuZCBpbXBsZW1lbnRzIHRoZSBJU3VibmV0IGludGVyZmFjZS5cbiAqXG4gKiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmFnZSBzdWJuZXRzIHdpdGhpbiBhIFZwY1YyIGluc3RhbmNlLlxuICogU3VibmV0cyBjYW4gYmUgY29uZmlndXJlZCB3aXRoIHNwZWNpZmljIElQIGFkZHJlc3MgcmFuZ2VzIChJUHY0IGFuZCBJUHY2KSwgYXZhaWxhYmlsaXR5IHpvbmVzLFxuICogYW5kIHN1Ym5ldCB0eXBlcyAoZS5nLiwgcHVibGljLCBwcml2YXRlLCBpc29sYXRlZCkuXG4gKlxuICogQHJlc291cmNlIEFXUzo6RUMyOjpTdWJuZXRcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBTdWJuZXRWMiBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVN1Ym5ldFYyIHtcblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIHN1Ym5ldCB0byB0aGUgVlBDXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TdWJuZXRWMkF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IFN1Ym5ldFYyQXR0cmlidXRlcykgOiBJU3VibmV0VjIge1xuICAgIC8qKlxuICAgICogQ2xhc3MgdG8gZGVmaW5lIGFuIGltcG9ydCBmb3IgYW4gZXhpc3Rpbmcgc3VibmV0XG4gICAgKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlN1Ym5ldFxuICAgICovXG4gICAgY2xhc3MgSW1wb3J0ZWRTdWJuZXRWMiBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVN1Ym5ldFYyIHtcblxuICAgICAgLyoqXG4gICAgICAqIFRoZSBJUHY2IENJRFIgQmxvY2sgYXNzaWduZWQgdG8gdGhpcyBzdWJuZXRcbiAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgaXB2NkNpZHJCbG9jaz86IHN0cmluZyA9IGF0dHJzLmlwdjZDaWRyQmxvY2s7XG5cbiAgICAgIC8qKlxuICAgICAgKiBUaGUgdHlwZSBvZiBzdWJuZXQgKGVnLiBwdWJsaWMgb3IgcHJpdmF0ZSkgdGhhdCB0aGlzIHN1Ym5ldCByZXByZXNlbnRzLlxuICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzdWJuZXRUeXBlPzogU3VibmV0VHlwZSA9IGF0dHJzLnN1Ym5ldFR5cGU7XG5cbiAgICAgIC8qKlxuICAgICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgaW4gd2hpY2ggc3VibmV0IGlzIGxvY2F0ZWRcbiAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nID0gYXR0cnMuYXZhaWxhYmlsaXR5Wm9uZTtcblxuICAgICAgLyoqXG4gICAgICAqIFRoZSBzdWJuZXRJZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgICAgKiBSZWZlcnMgdG8gdGhlIHBoeXNpY2FsIElEIGNyZWF0ZWRcbiAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0SWQ6IHN0cmluZyA9IGF0dHJzLnN1Ym5ldElkO1xuXG4gICAgICAvKipcbiAgICAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAgICAqL1xuICAgICAgcHVibGljIHJlYWRvbmx5IGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IElEZXBlbmRhYmxlID0gbmV3IERlcGVuZGVuY3lHcm91cCgpO1xuXG4gICAgICAvKipcbiAgICAgICogVGhlIElQdjQgQ0lEUiBibG9jayBhc3NpZ25lZCB0byB0aGlzIHN1Ym5ldFxuICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmcgPSBhdHRycy5pcHY0Q2lkckJsb2NrO1xuXG4gICAgICAvKipcbiAgICAgICogIEN1cnJlbnQgcm91dGUgdGFibGUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3VibmV0XG4gICAgICAqL1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJvdXRlVGFibGU6IElSb3V0ZVRhYmxlID0geyByb3V0ZVRhYmxlSWQ6IGF0dHJzLnJvdXRlVGFibGVJZCEgfTtcblxuICAgICAgLyoqXG4gICAgICAqIEFzc29jaWF0ZSBhIE5ldHdvcmsgQUNMIHdpdGggdGhpcyBzdWJuZXRcbiAgICAgICogUmVxdWlyZWQgaGVyZSBzaW5jZSBpdCBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgSVN1Ym5ldFYyXG4gICAgICAqL1xuICAgICAgcHVibGljIGFzc29jaWF0ZU5ldHdvcmtBY2woYWNsSWQ6IHN0cmluZywgbmV0d29ya0FjbDogSU5ldHdvcmtBY2wpIHtcbiAgICAgICAgY29uc3QgYWNsU2NvcGUgPSBuZXR3b3JrQWNsIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gbmV0d29ya0FjbCA6IHRoaXM7XG4gICAgICAgIGNvbnN0IG90aGVyID0gbmV0d29ya0FjbCBpbnN0YW5jZW9mIENvbnN0cnVjdCA/IHRoaXMgOiBuZXR3b3JrQWNsO1xuICAgICAgICBuZXcgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uKGFjbFNjb3BlLCBhY2xJZCArIE5hbWVzLm5vZGVVbmlxdWVJZChvdGhlci5ub2RlKSwge1xuICAgICAgICAgIG5ldHdvcmtBY2wsXG4gICAgICAgICAgc3VibmV0OiB0aGlzLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZFN1Ym5ldFYyKHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIHRoZSBzdWJuZXQgaXMgbG9jYXRlZCBpblxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1Ym5ldElkIGZvciB0aGlzIHBhcnRpY3VsYXIgc3VibmV0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAgRGVwZW5kZW5jaWVzIGZvciBpbnRlcm5ldCBjb25uZWN0aXZpdHlcbiAgICogVGhpcyBQcm9wZXJ0eSBleHBvc2VzIHRoZSBSb3V0ZVRhYmxlLVN1Ym5ldCBhc3NvY2lhdGlvbiBzbyB0aGF0IG90aGVyIHJlc291cmNlcyBjYW4gZGVwZW5kIG9uIGl0LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQ6IElEZXBlbmRhYmxlO1xuXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFibGUgbmFtZSBgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZGAgZG9lcyBub3QgcmVmbGVjdCB3aGF0IGl0IGFjdHVhbGx5IGlzLlxuICAgKiBUaGUgbmFtaW5nIGlzIGVuZm9yY2VkIGJ5IElTdWJuZXQuIFdlIG5lZWQgdG8ga2VlcCBpdCB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5LlxuICAgKiBJdCBleHBvc2VzIHRoZSBSb3V0ZVRhYmxlLVN1Ym5ldCBhc3NvY2lhdGlvbiBzbyB0aGF0IG90aGVyIHJlc291cmNlcyBjYW4gZGVwZW5kIG9uIGl0LlxuICAgKiBFLmcuIFJlc291cmNlcyBpbiBhIHN1Ym5ldCwgd2hlbiBiZWluZyBkZWxldGVkLCBtYXkgbmVlZCB0aGUgUm91dGVUYWJsZSB0byBleGlzdCBpbiBvcmRlciB0byBkZWxldGUgcHJvcGVybHlcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSBuZXcgRGVwZW5kZW5jeUdyb3VwKCk7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY0IENJRFIgYmxvY2sgZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NiBDSURSIEJsb2NrIGZvciB0aGlzIHN1Ym5ldFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIHN1Ym5ldCAocHVibGljIG9yIHByaXZhdGUpIHRoYXQgdGhpcyBzdWJuZXQgcmVwcmVzZW50cy5cbiAgICogQGF0dHJpYnV0ZSBTdWJuZXRUeXBlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgc3VibmV0VHlwZT86IFN1Ym5ldFR5cGU7XG5cbiAgcHJpdmF0ZSBfbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG5cbiAgcHJpdmF0ZSBfcm91dGVUYWJsZTogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIENvbnN0cnVjdHMgYSBuZXcgU3VibmV0VjIgaW5zdGFuY2UuXG4gICAqIEBwYXJhbSBzY29wZSBUaGUgcGFyZW50IENvbnN0cnVjdCB0aGF0IHRoaXMgcmVzb3VyY2Ugd2lsbCBiZSBwYXJ0IG9mLlxuICAgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIHJlc291cmNlLlxuICAgKiBAcGFyYW0gcHJvcHMgVGhlIGNvbmZpZ3VyYXRpb24gcHJvcGVydGllcyBmb3IgdGhlIHN1Ym5ldC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdWJuZXRWMlByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnN1Ym5ldE5hbWUgPz8gTGF6eS5zdHJpbmcoe1xuICAgICAgICBwcm9kdWNlOiAoKSA9PiBOYW1lcy51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywgeyBtYXhMZW5ndGg6IDEyOCwgYWxsb3dlZFNwZWNpYWxDaGFyYWN0ZXJzOiAnXycgfSksXG4gICAgICB9KSxcbiAgICB9KTtcblxuICAgIGNvbnN0IGlwdjRDaWRyQmxvY2sgPSBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHI7XG4gICAgY29uc3QgaXB2NkNpZHJCbG9jayA9IHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHI7XG5cbiAgICBpZiAoIWNoZWNrQ2lkclJhbmdlcyhwcm9wcy52cGMsIHByb3BzLmlwdjRDaWRyQmxvY2suY2lkcikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQ0lEUiBibG9jayBzaG91bGQgYmUgd2l0aGluIHRoZSByYW5nZSBvZiBWUEMnKTtcbiAgICB9O1xuXG4gICAgbGV0IG92ZXJsYXA6IGJvb2xlYW4gPSBmYWxzZTtcbiAgICBsZXQgb3ZlcmxhcElwdjY6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAgIG92ZXJsYXAgPSB2YWxpZGF0ZU92ZXJsYXBwaW5nQ2lkclJhbmdlcyhwcm9wcy52cGMsIHByb3BzLmlwdjRDaWRyQmxvY2suY2lkcik7XG5cbiAgICAvL2NoZWNrIHdoZXRoZXIgVlBDIHN1cHBvcnRzIGlwdjZcbiAgICBpZiAocHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkcikge1xuICAgICAgdmFsaWRhdGVTdXBwb3J0SXB2Nihwcm9wcy52cGMpO1xuICAgICAgb3ZlcmxhcElwdjYgPSB2YWxpZGF0ZU92ZXJsYXBwaW5nQ2lkclJhbmdlc2lwdjYocHJvcHMudnBjLCBwcm9wcy5pcHY2Q2lkckJsb2NrPy5jaWRyKTtcbiAgICB9XG5cbiAgICBpZiAob3ZlcmxhcCB8fCBvdmVybGFwSXB2Nikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDSURSIGJsb2NrIHNob3VsZCBub3Qgb3ZlcmxhcCB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBibG9ja3MnKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uICYmICFwcm9wcy5pcHY2Q2lkckJsb2NrKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0lQdjYgQ0lEUiBibG9jayBpcyByZXF1aXJlZCB3aGVuIGFzc2lnbmluZyBJUHY2IGFkZHJlc3Mgb24gY3JlYXRpb24nKTtcbiAgICB9XG5cbiAgICBjb25zdCBzdWJuZXQgPSBuZXcgQ2ZuU3VibmV0KHRoaXMsICdTdWJuZXQnLCB7XG4gICAgICB2cGNJZDogcHJvcHMudnBjLnZwY0lkLFxuICAgICAgY2lkckJsb2NrOiBpcHY0Q2lkckJsb2NrLFxuICAgICAgaXB2NkNpZHJCbG9jazogaXB2NkNpZHJCbG9jayxcbiAgICAgIGF2YWlsYWJpbGl0eVpvbmU6IHByb3BzLmF2YWlsYWJpbGl0eVpvbmUsXG4gICAgICBhc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb246IHByb3BzLmFzc2lnbklwdjZBZGRyZXNzT25DcmVhdGlvbiA/PyBmYWxzZSxcbiAgICB9KTtcblxuICAgIHRoaXMubm9kZS5kZWZhdWx0Q2hpbGQgPSBzdWJuZXQ7XG4gICAgdGhpcy5pcHY0Q2lkckJsb2NrID0gcHJvcHMuaXB2NENpZHJCbG9jay5jaWRyO1xuICAgIHRoaXMuaXB2NkNpZHJCbG9jayA9IHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHI7XG4gICAgdGhpcy5zdWJuZXRJZCA9IHN1Ym5ldC5yZWY7XG4gICAgdGhpcy5hdmFpbGFiaWxpdHlab25lID0gcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZTtcblxuICAgIHRoaXMuX25ldHdvcmtBY2wgPSBOZXR3b3JrQWNsLmZyb21OZXR3b3JrQWNsSWQodGhpcywgJ0FjbCcsIHN1Ym5ldC5hdHRyTmV0d29ya0FjbEFzc29jaWF0aW9uSWQpO1xuXG4gICAgaWYgKHByb3BzLnN1Ym5ldE5hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKE5BTUVfVEFHLCBwcm9wcy5zdWJuZXROYW1lKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMudnBjLnZwY05hbWUpIHtcbiAgICAgIFRhZ3Mub2YodGhpcykuYWRkKFZQQ05BTUVfVEFHLCBwcm9wcy52cGMudnBjTmFtZSk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLnJvdXRlVGFibGUpIHtcbiAgICAgIHRoaXMuX3JvdXRlVGFibGUgPSBwcm9wcy5yb3V0ZVRhYmxlO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBBc3NpZ25pbmcgYSBkZWZhdWx0IHJvdXRlIHRhYmxlXG4gICAgICB0aGlzLl9yb3V0ZVRhYmxlID0gbmV3IFJvdXRlVGFibGUodGhpcywgJ1JvdXRlVGFibGUnLCB7XG4gICAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgICByb3V0ZVRhYmxlTmFtZTogJ0RlZmF1bHRDREtSb3V0ZVRhYmxlJyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHJvdXRlQXNzb2MgPSBuZXcgQ2ZuU3VibmV0Um91dGVUYWJsZUFzc29jaWF0aW9uKHRoaXMsICdSb3V0ZVRhYmxlQXNzb2NpYXRpb24nLCB7XG4gICAgICBzdWJuZXRJZDogdGhpcy5zdWJuZXRJZCxcbiAgICAgIHJvdXRlVGFibGVJZDogdGhpcy5yb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCxcbiAgICB9KTtcblxuICAgIHRoaXMuX2ludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQuYWRkKHJvdXRlQXNzb2MpO1xuXG4gICAgdGhpcy5pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkID0gdGhpcy5faW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDtcblxuICAgIHRoaXMuc3VibmV0VHlwZSA9IHByb3BzLnN1Ym5ldFR5cGU7XG4gICAgc3RvcmVTdWJuZXRUb1ZwY0J5VHlwZShwcm9wcy52cGMsIHRoaXMsIHByb3BzLnN1Ym5ldFR5cGUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEFzc29jaWF0ZSBhIE5ldHdvcmsgQUNMIHdpdGggdGhpcyBzdWJuZXRcbiAgICpcbiAgICogQHBhcmFtIGlkIFRoZSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBhc3NvY2lhdGlvbi5cbiAgICogQHBhcmFtIG5ldHdvcmtBY2wgVGhlIE5ldHdvcmsgQUNMIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgc3VibmV0LlxuICAgKiBUaGlzIGFsbG93cyBjb250cm9sbGluZyBpbmJvdW5kIGFuZCBvdXRib3VuZCB0cmFmZmljIGZvciBpbnN0YW5jZXMgaW4gdGhpcyBzdWJuZXQuXG4gICAqL1xuICBwdWJsaWMgYXNzb2NpYXRlTmV0d29ya0FjbChpZDogc3RyaW5nLCBuZXR3b3JrQWNsOiBJTmV0d29ya0FjbCkge1xuICAgIHRoaXMuX25ldHdvcmtBY2wgPSBuZXR3b3JrQWNsO1xuXG4gICAgY29uc3Qgc2NvcGUgPSBuZXR3b3JrQWNsIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gbmV0d29ya0FjbCA6IHRoaXM7XG4gICAgY29uc3Qgb3RoZXIgPSBuZXR3b3JrQWNsIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gdGhpcyA6IG5ldHdvcmtBY2w7XG4gICAgbmV3IFN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbihzY29wZSwgaWQgKyBOYW1lcy5ub2RlVW5pcXVlSWQob3RoZXIubm9kZSksIHtcbiAgICAgIG5ldHdvcmtBY2wsXG4gICAgICBzdWJuZXQ6IHRoaXMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBSb3V0ZSBUYWJsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdWJuZXRcbiAgICovXG4gIHB1YmxpYyBnZXQgcm91dGVUYWJsZSgpOiBJUm91dGVUYWJsZSB7XG4gICAgcmV0dXJuIHRoaXMuX3JvdXRlVGFibGU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgTmV0d29yayBBQ0wgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3VibmV0LlxuICAgKi9cblxuICBwdWJsaWMgZ2V0IG5ldHdvcmtBY2woKTogSU5ldHdvcmtBY2wge1xuICAgIHJldHVybiB0aGlzLl9uZXR3b3JrQWNsO1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyByZXF1aXJlZCB0byBpbXBvcnQgYSBzdWJuZXRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJuZXRWMkF0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIHRoaXMgc3VibmV0IGlzIGxvY2F0ZWQgaW5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBBWiBpbmZvcm1hdGlvbiwgY2Fubm90IHVzZSBBWiBzZWxlY3Rpb24gZmVhdHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IGF2YWlsYWJpbGl0eVpvbmU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElQdjQgQ0lEUiBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIENJRFIgaW5mb3JtYXRpb24sIGNhbm5vdCB1c2UgQ0lEUiBmaWx0ZXIgZmVhdHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElQdjQgQ0lEUiBibG9jayBhc3NvY2lhdGVkIHdpdGggdGhlIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIENJRFIgaW5mb3JtYXRpb24sIGNhbm5vdCB1c2UgQ0lEUiBmaWx0ZXIgZmVhdHVyZXNcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgcm91dGUgdGFibGUgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyByb3V0ZSB0YWJsZSBpbmZvcm1hdGlvbiwgY2Fubm90IGNyZWF0ZSBWUEMgZW5kcG9pbnRzXG4gICAqL1xuICByZWFkb25seSByb3V0ZVRhYmxlSWQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXRJZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygc3VibmV0IChwdWJsaWMgb3IgcHJpdmF0ZSkgdGhhdCB0aGlzIHN1Ym5ldCByZXByZXNlbnRzLlxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0VHlwZTogU3VibmV0VHlwZTtcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGUgZ2l2ZW4gc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gc3VibmV0IG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldE5hbWU/OiBzdHJpbmc7XG5cbn1cblxuY29uc3Qgc3VibmV0VHlwZU1hcCA9IHtcbiAgW1N1Ym5ldFR5cGUuUFJJVkFURV9JU09MQVRFRF06ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLmlzb2xhdGVkU3VibmV0cy5wdXNoKHN1Ym5ldCksXG4gIFtTdWJuZXRUeXBlLlBVQkxJQ106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnB1YmxpY1N1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2cGMucHJpdmF0ZVN1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbU3VibmV0VHlwZS5JU09MQVRFRF06ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLmlzb2xhdGVkU3VibmV0cy5wdXNoKHN1Ym5ldCksXG4gIFtTdWJuZXRUeXBlLlBSSVZBVEVdOiAodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIpID0+IHZwYy5wcml2YXRlU3VibmV0cy5wdXNoKHN1Ym5ldCksXG4gIFtTdWJuZXRUeXBlLlBSSVZBVEVfV0lUSF9OQVRdOiAodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIpID0+IHZwYy5wcml2YXRlU3VibmV0cy5wdXNoKHN1Ym5ldCksXG59O1xuXG4vKipcbiAqIFN0b3JlcyB0aGUgcHJvdmlkZWQgc3VibmV0IGluIHRoZSBWUEMncyBjb2xsZWN0aW9uIG9mIHN1Ym5ldHMgYmFzZWQgb24gdGhlIHNwZWNpZmllZCBzdWJuZXQgdHlwZS5cbiAqXG4gKiBAcGFyYW0gdnBjIFRoZSBWUEMgaW5zdGFuY2UgdG8gd2hpY2ggdGhlIHN1Ym5ldCBiZWxvbmdzLlxuICogQHBhcmFtIHN1Ym5ldCBUaGUgc3VibmV0IGluc3RhbmNlIHRvIGJlIHN0b3JlZC5cbiAqIEBwYXJhbSB0eXBlIFRoZSB0eXBlIG9mIHRoZSBzdWJuZXQgKGUuZy4sIHB1YmxpYywgcHJpdmF0ZSwgaXNvbGF0ZWQpLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIHN0b3JlU3VibmV0VG9WcGNCeVR5cGUodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIsIHR5cGU6IFN1Ym5ldFR5cGUpIHtcbiAgY29uc3QgZmluZEZ1bmN0aW9uVHlwZSA9IHN1Ym5ldFR5cGVNYXBbdHlwZV07XG4gIGlmIChmaW5kRnVuY3Rpb25UeXBlKSB7XG4gICAgZmluZEZ1bmN0aW9uVHlwZSh2cGMsIHN1Ym5ldCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBVbnN1cHBvcnRlZCBzdWJuZXQgdHlwZTogJHt0eXBlfWApO1xuICB9XG5cbiAgLyoqXG4gICAqIE5lZWQgdG8gc2V0IGV4cGxpY2l0IGRlcGVuZGVuY3kgYXMgZHVyaW5nIHN0YWNrIGRlbGV0aW9uLFxuICAgKiB0aGUgY2lkciBibG9ja3MgbWF5IGdldCBkZWxldGVkIGZpcnN0IGFuZCB3aWxsIGZhaWwgYXMgdGhlIHN1Ym5ldHMgYXJlIHN0aWxsIHVzaW5nIHRoZSBjaWRyIGJsb2Nrc1xuICAgKi9cbiAgaWYgKHZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICBmb3IgKGNvbnN0IGNpZHIgb2YgdnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgICAgc3VibmV0Lm5vZGUuYWRkRGVwZW5kZW5jeShjaWRyKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgd2hldGhlciB0aGUgcHJvdmlkZWQgVlBDIHN1cHBvcnRzIElQdjYgYWRkcmVzc2VzLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAdGhyb3dzIEVycm9yIGlmIHRoZSBWUEMgZG9lcyBub3Qgc3VwcG9ydCBJUHY2IGFkZHJlc3Nlcy5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIFZQQyBzdXBwb3J0cyBJUHY2IGFkZHJlc3NlcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIHZhbGlkYXRlU3VwcG9ydElwdjYodnBjOiBJVnBjVjIpIHtcbiAgaWYgKHZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICBpZiAodnBjLnNlY29uZGFyeUNpZHJCbG9jay5zb21lKChzZWNvbmRhcnlBZGRyZXNzKSA9PiBzZWNvbmRhcnlBZGRyZXNzLmFtYXpvblByb3ZpZGVkSXB2NkNpZHJCbG9jayA9PT0gdHJ1ZSB8fFxuICBzZWNvbmRhcnlBZGRyZXNzLmlwdjZJcGFtUG9vbElkICE9IHVuZGVmaW5lZCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1RvIHVzZSBJUHY2LCB0aGUgVlBDIG11c3QgZW5hYmxlIElQdjYgc3VwcG9ydC4nKTtcbiAgICB9XG4gIH0gZWxzZSB7cmV0dXJuIGZhbHNlO31cbn1cblxuLyoqXG4gKiBDaGVja3MgaWYgdGhlIHByb3ZpZGVkIENJRFIgcmFuZ2UgZmFsbHMgd2l0aGluIHRoZSBJUCBhZGRyZXNzIHJhbmdlcyBvZiB0aGUgZ2l2ZW4gVlBDLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byBjaGVjayBhZ2FpbnN0LlxuICogQHBhcmFtIGNpZHJSYW5nZSBUaGUgQ0lEUiByYW5nZSB0byBiZSBjaGVja2VkLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgQ0lEUiByYW5nZSBmYWxscyB3aXRoaW4gdGhlIFZQQydzIElQIGFkZHJlc3MgcmFuZ2VzLCBmYWxzZSBvdGhlcndpc2UuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gY2hlY2tDaWRyUmFuZ2VzKHZwYzogSVZwY1YyLCBjaWRyUmFuZ2U6IHN0cmluZykge1xuICBjb25zdCB2cGNDaWRyQmxvY2sgPSBbdnBjLmlwdjRDaWRyQmxvY2tdO1xuICBjb25zdCBzdWJuZXRDaWRyQmxvY2sgPSBuZXcgQ2lkckJsb2NrKGNpZHJSYW5nZSk7XG4gIGNvbnN0IGFsbENpZHJzOiBDaWRyQmxvY2tbXSA9IFtdO1xuXG4gIC8vIFNlY29uZGFyeSBJUCBhZGRyZXNzZXMgYXNzb2ljYXRlZCB1c2luZyB1c2VyIGRlZmluZWQgSVB2NCByYW5nZVxuICBpZiAodnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgIGZvciAoY29uc3QgaXBBZGRyZXNzIG9mIHZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICAgIGlmIChpcEFkZHJlc3MuY2lkckJsb2NrKSB7XG4gICAgICAgIHZwY0NpZHJCbG9jay5wdXNoKGlwQWRkcmVzcy5jaWRyQmxvY2spO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBjaWRycyA9IHZwY0NpZHJCbG9jay5tYXAoY2lkciA9PiBuZXcgQ2lkckJsb2NrKGNpZHIpKTtcbiAgICBhbGxDaWRycy5wdXNoKC4uLmNpZHJzKTtcbiAgfVxuXG4gIC8vIFNlY29uZGFyeSBJUCBhZGRyZXNzZXMgYXNzb2ljYXRlZCB1c2luZyBJUEFNIElQdjQgcmFuZ2VcbiAgaWYgKHZwYy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnMpIHtcbiAgICBjb25zdCBjaWRycyA9IHZwYy5pcHY0SXBhbVByb3Zpc2lvbmVkQ2lkcnMubWFwKGNpZHIgPT4gbmV3IENpZHJCbG9jayhjaWRyKSk7XG4gICAgYWxsQ2lkcnMucHVzaCguLi5jaWRycyk7XG4gIH1cblxuICAvLyBJZiBubyBJUHY0IGlzIGFzc2lnbmVkIGFzIHNlY29uZGFyeSBhZGRyZXNzXG4gIGlmIChhbGxDaWRycy5sZW5ndGggPT09IDApIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHNlY29uZGFyeSBJUCBhZGRyZXNzIGF0dGFjaGVkIHRvIFZQQycpO1xuICB9XG5cbiAgcmV0dXJuIGFsbENpZHJzLnNvbWUoYyA9PiBjLmNvbnRhaW5zQ2lkcihzdWJuZXRDaWRyQmxvY2spKTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgaWYgdGhlIHByb3ZpZGVkIElQdjQgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBDSURSIGJsb2NrcyB3aXRoaW4gdGhlIGdpdmVuIFZQQy5cbiAqXG4gKiBAcGFyYW0gdnBjIFRoZSBWUEMgaW5zdGFuY2UgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEBwYXJhbSBpcHY0Q2lkckJsb2NrIFRoZSBJUHY0IENJRFIgYmxvY2sgdG8gYmUgdmFsaWRhdGVkLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgSVB2NCBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc3VibmV0IENJRFIgYmxvY2tzLCBmYWxzZSBvdGhlcndpc2UuXG4gKiBAaW50ZXJuYWxcbiAqL1xuXG5mdW5jdGlvbiB2YWxpZGF0ZU92ZXJsYXBwaW5nQ2lkclJhbmdlcyh2cGM6IElWcGNWMiwgaXB2NENpZHJCbG9jazogc3RyaW5nKTogYm9vbGVhbiB7XG5cbiAgbGV0IGFsbFN1Ym5ldHM6IElTdWJuZXRWMltdO1xuICB0cnkge1xuICAgIGFsbFN1Ym5ldHMgPSB2cGMuc2VsZWN0U3VibmV0cygpLnN1Ym5ldHM7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAnTm8gc3VibmV0cyBpbiBWUEMnO1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGlwTWFwOiBbc3RyaW5nLCBzdHJpbmddW10gPSBuZXcgQXJyYXkoKTtcblxuICBjb25zdCBpbnB1dFJhbmdlID0gbmV3IENpZHJCbG9jayhpcHY0Q2lkckJsb2NrKTtcblxuICBjb25zdCBpbnB1dElwTWFwOiBbc3RyaW5nLCBzdHJpbmddID0gW2lucHV0UmFuZ2UubWluSXAoKSwgaW5wdXRSYW5nZS5tYXhJcCgpXTtcblxuICBmb3IgKGNvbnN0IHN1Ym5ldCBvZiBhbGxTdWJuZXRzKSB7XG4gICAgY29uc3QgY2lkckJsb2NrID0gbmV3IENpZHJCbG9jayhzdWJuZXQuaXB2NENpZHJCbG9jayk7XG4gICAgaXBNYXAucHVzaChbY2lkckJsb2NrLm1pbklwKCksIGNpZHJCbG9jay5tYXhJcCgpXSk7XG4gIH1cblxuICBmb3IgKGNvbnN0IHJhbmdlIG9mIGlwTWFwKSB7XG4gICAgaWYgKGlucHV0UmFuZ2UucmFuZ2VzT3ZlcmxhcChyYW5nZSwgaW5wdXRJcE1hcCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyoqXG4gKiBWYWxpZGF0ZXMgaWYgdGhlIHByb3ZpZGVkIElQdjYgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBDSURSIGJsb2NrcyB3aXRoaW4gdGhlIGdpdmVuIFZQQy5cbiAqXG4gKiBAcGFyYW0gdnBjIFRoZSBWUEMgaW5zdGFuY2UgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEBwYXJhbSBpcHY2Q2lkckJsb2NrIFRoZSBJUHY2IENJRFIgYmxvY2sgdG8gYmUgdmFsaWRhdGVkLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgSVB2NiBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc3VibmV0IENJRFIgYmxvY2tzLCBmYWxzZSBvdGhlcndpc2UuXG4gKiBAdGhyb3dzIEVycm9yIGlmIG5vIHN1Ym5ldHMgYXJlIGZvdW5kIGluIHRoZSBWUEMuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXNpcHY2KHZwYzogSVZwY1YyLCBpcHY2Q2lkckJsb2NrOiBzdHJpbmcpOiBib29sZWFuIHtcblxuICBsZXQgYWxsU3VibmV0czogSVN1Ym5ldFYyW107XG4gIHRyeSB7XG4gICAgYWxsU3VibmV0cyA9IHZwYy5zZWxlY3RTdWJuZXRzKCkuc3VibmV0cztcbiAgfSBjYXRjaCAoZSkge1xuICAgICdObyBzdWJuZXRzIGluIFZQQyc7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaXB2Nk1hcDogc3RyaW5nW109IFtdO1xuXG4gIGNvbnN0IGlucHV0UmFuZ2UgPSBuZXcgQ2lkckJsb2NrSXB2NihpcHY2Q2lkckJsb2NrKTtcblxuICBsZXQgcmVzdWx0IDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3Qgc3VibmV0IG9mIGFsbFN1Ym5ldHMpIHtcbiAgICBpZiAoc3VibmV0LmlwdjZDaWRyQmxvY2spIHtcbiAgICAgIGNvbnN0IGNpZHJCbG9jayA9IG5ldyBDaWRyQmxvY2tJcHY2KHN1Ym5ldC5pcHY2Q2lkckJsb2NrKTtcbiAgICAgIGlwdjZNYXAucHVzaChjaWRyQmxvY2suY2lkcik7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCByYW5nZSBvZiBpcHY2TWFwKSB7XG4gICAgaWYgKGlucHV0UmFuZ2UucmFuZ2VzT3ZlcmxhcChyYW5nZSwgaW5wdXRSYW5nZS5jaWRyKSkge1xuICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
391
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibmV0LXYyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3VibmV0LXYyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEwRDtBQUMxRCxpREFBd0s7QUFDeEssMkNBQXFFO0FBRXJFLGlDQUFrRDtBQUNsRCxtQ0FBcUM7QUFDckMsOEVBQThGO0FBUzlGOztHQUVHO0FBQ0gsTUFBYSxNQUFNO0lBTWpCLFlBQVksS0FBYTtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLEtBQUssQ0FBQztLQUNuQjs7QUFSSCx3QkFTQzs7O0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFFBQVEsR0FBVyxNQUFNLENBQUM7QUFFaEM7O0dBRUc7QUFDSCxNQUFNLFdBQVcsR0FBVyxTQUFTLENBQUM7QUFrRnRDOzs7Ozs7Ozs7O0dBVUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxzQkFBUTtJQUNwQzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5Qjs7Ozs7Ozs7OztRQUMxRjs7O1dBR0c7UUFDSCxNQUFNLGdCQUFpQixTQUFRLHNCQUFRO1lBQXZDOztnQkFDRTs7bUJBRUc7Z0JBQ2Esa0JBQWEsR0FBWSxLQUFLLENBQUMsYUFBYSxDQUFDO2dCQUU3RDs7bUJBRUc7Z0JBQ2EsZUFBVSxHQUFnQixLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUUzRDs7bUJBRUc7Z0JBQ2EscUJBQWdCLEdBQVcsS0FBSyxDQUFDLGdCQUFnQixDQUFDO2dCQUVsRTs7O21CQUdHO2dCQUNhLGFBQVEsR0FBVyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUVsRDs7bUJBRUc7Z0JBQ2Esb0NBQStCLEdBQWdCLElBQUksNEJBQWUsRUFBRSxDQUFDO2dCQUVyRjs7bUJBRUc7Z0JBQ2Esa0JBQWEsR0FBVyxLQUFLLENBQUMsYUFBYSxDQUFDO2dCQUU1RDs7bUJBRUc7Z0JBQ2EsZUFBVSxHQUFnQixFQUFFLFlBQVksRUFBRSxL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QUM7SUFDM0MsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxtQkFBbUIsQ0FBQztRQUNwQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLE9BQU8sR0FBWSxFQUFFLENBQUM7SUFFNUIsTUFBTSxVQUFVLEdBQUcsSUFBSSxvQkFBYSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBRXBELElBQUksTUFBTSxHQUFhLEtBQUssQ0FBQztJQUU3QixLQUFLLE1BQU0sTUFBTSxJQUFJLFVBQVUsRUFBRSxDQUFDO1FBQ2hDLElBQUksTUFBTSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3pCLE1BQU0sU0FBUyxHQUFHLElBQUksb0JBQWEsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUQsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDL0IsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLE1BQU0sS0FBSyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQzVCLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDckQsTUFBTSxHQUFHLElBQUksQ0FBQztRQUNoQixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sTUFBTSxDQUFDO0FBQ2hCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSZXNvdXJjZSwgTmFtZXMsIExhenksIFRhZ3MgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDZm5TdWJuZXQsIENmblN1Ym5ldFJvdXRlVGFibGVBc3NvY2lhdGlvbiwgSU5ldHdvcmtBY2wsIElSb3V0ZVRhYmxlLCBJU3VibmV0LCBOZXR3b3JrQWNsLCBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24sIFN1Ym5ldFR5cGUgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7IENvbnN0cnVjdCwgRGVwZW5kZW5jeUdyb3VwLCBJRGVwZW5kYWJsZSB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgSVZwY1YyIH0gZnJvbSAnLi92cGMtdjItYmFzZSc7XG5pbXBvcnQgeyBDaWRyQmxvY2ssIENpZHJCbG9ja0lwdjYgfSBmcm9tICcuL3V0aWwnO1xuaW1wb3J0IHsgUm91dGVUYWJsZSB9IGZyb20gJy4vcm91dGUnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEsIE1ldGhvZE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuXG4vKipcbiAqIEludGVyZmFjZSB0byBkZWZpbmUgc3VibmV0IENJRFJcbiAqL1xuaW50ZXJmYWNlIElDaWRyIHtcbiAgcmVhZG9ubHkgY2lkcjogc3RyaW5nO1xufVxuXG4vKipcbiAqIElQdjQgb3IgSVB2NiBDSURSIHJhbmdlIGZvciB0aGUgc3VibmV0XG4gKi9cbmV4cG9ydCBjbGFzcyBJcENpZHIgaW1wbGVtZW50cyBJQ2lkciB7XG4gIC8qKlxuICAgKiBJUHY2IENJRFIgcmFuZ2UgZm9yIHRoZSBzdWJuZXRcbiAgICogQWxsb3dlZCBvbmx5IGlmIElQdjYgaXMgZW5hYmxlZCBvbiBWUGNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBjaWRyOiBzdHJpbmc7XG4gIGNvbnN0cnVjdG9yKHByb3BzOiBzdHJpbmcgKSB7XG4gICAgdGhpcy5jaWRyID0gcHJvcHM7XG4gIH1cbn1cblxuLyoqXG4gKiBOYW1lIHRhZyBjb25zdGFudFxuICovXG5jb25zdCBOQU1FX1RBRzogc3RyaW5nID0gJ05hbWUnO1xuXG4vKipcbiAqIFZQQyBOYW1lIHRhZyBjb25zdGFudFxuICovXG5jb25zdCBWUENOQU1FX1RBRzogc3RyaW5nID0gJ1ZwY05hbWUnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIHN1Ym5ldCBmb3IgVlBDLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldFYyUHJvcHMge1xuLyoqXG4gKiBWUEMgUHJvcFxuICovXG4gIHJlYWRvbmx5IHZwYzogSVZwY1YyO1xuXG4gIC8qKlxuICAgKiBpcHY0IGNpZHIgdG8gYXNzaWduIHRvIHRoaXMgc3VibmV0LlxuICAgKiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVjMi1zdWJuZXQuaHRtbCNjZm4tZWMyLXN1Ym5ldC1jaWRyYmxvY2tcbiAgICovXG4gIHJlYWRvbmx5IGlwdjRDaWRyQmxvY2s6IElwQ2lkcjtcblxuICAvKipcbiAgICogSXB2NiBDSURSIFJhbmdlIGZvciBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBJcHY2IGFkZHJlc3NcbiAgICovXG4gIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBJcENpZHI7XG5cbiAgLyoqXG4gICAqIEN1c3RvbSBBWiBmb3IgdGhlIHN1Ym5ldFxuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gUm91dGUgZm9yIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGEgZGVmYXVsdCByb3V0ZSB0YWJsZSBjcmVhdGVkXG4gICAqL1xuICByZWFkb25seSByb3V0ZVRhYmxlPzogSVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIFN1Ym5ldCB0byBjb25maWd1cmUuXG4gICAqXG4gICAqIFRoZSBTdWJuZXQgdHlwZSB3aWxsIGNvbnRyb2wgdGhlIGFiaWxpdHkgdG8gcm91dGUgYW5kIGNvbm5lY3QgdG8gdGhlXG4gICAqIEludGVybmV0LlxuICAgKlxuICAgKiBUT0RPOiBBZGQgdmFsaWRhdGlvbiBjaGVjayBgc3VibmV0VHlwZWAgd2hlbiBhZGRpbmcgcmVzb3VyY2VzIChlLmcuIGNhbm5vdCBhZGQgTmF0R2F0ZXdheSB0byBwcml2YXRlKVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0VHlwZTogU3VibmV0VHlwZTtcblxuICAvKipcbiAgICogU3VibmV0IG5hbWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBwcm92aXNpb25lZCB3aXRoIGFuIGF1dG9nZW5lcmF0ZWQgbmFtZSBieSBDREtcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIGEgbmV0d29yayBpbnRlcmZhY2UgY3JlYXRlZCBpbiB0aGlzIHN1Ym5ldCByZWNlaXZlcyBhbiBJUHY2IGFkZHJlc3MuXG4gICAqIElmIHlvdSBzcGVjaWZ5IEFzc2lnbklwdjZBZGRyZXNzT25DcmVhdGlvbiwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IElwdjZDaWRyQmxvY2suXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdW5kZWZpbmVkIGluIGNhc2Ugbm90IHByb3ZpZGVkIGFzIGFuIGlucHV0XG4gICAqL1xuICByZWFkb25seSBhc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24/OiBib29sZWFuO1xuXG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHdpdGggYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGZvciBTdWJuZXRWMlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElTdWJuZXRWMiBleHRlbmRzIElTdWJuZXQge1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NiBDSURSIGJsb2NrIGZvciB0aGlzIHN1Ym5ldFxuICAgKi9cbiAgcmVhZG9ubHkgaXB2NkNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygc3VibmV0IChwdWJsaWMgb3IgcHJpdmF0ZSkgdGhhdCB0aGlzIHN1Ym5ldCByZXByZXNlbnRzLlxuICAgKlxuICAgKiBAYXR0cmlidXRlIFN1Ym5ldFR5cGVcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldFR5cGU/OiBTdWJuZXRUeXBlO1xuXG59XG5cbi8qKlxuICogVGhlIFN1Ym5ldFYyIGNsYXNzIHJlcHJlc2VudHMgYSBzdWJuZXQgd2l0aGluIGEgVlBDIChWaXJ0dWFsIFByaXZhdGUgQ2xvdWQpIGluIEFXUy5cbiAqIEl0IGV4dGVuZHMgdGhlIFJlc291cmNlIGNsYXNzIGFuZCBpbXBsZW1lbnRzIHRoZSBJU3VibmV0IGludGVyZmFjZS5cbiAqXG4gKiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYW5kIG1hbmFnZSBzdWJuZXRzIHdpdGhpbiBhIFZwY1YyIGluc3RhbmNlLlxuICogU3VibmV0cyBjYW4gYmUgY29uZmlndXJlZCB3aXRoIHNwZWNpZmljIElQIGFkZHJlc3MgcmFuZ2VzIChJUHY0IGFuZCBJUHY2KSwgYXZhaWxhYmlsaXR5IHpvbmVzLFxuICogYW5kIHN1Ym5ldCB0eXBlcyAoZS5nLiwgcHVibGljLCBwcml2YXRlLCBpc29sYXRlZCkuXG4gKlxuICogQHJlc291cmNlIEFXUzo6RUMyOjpTdWJuZXRcbiAqXG4gKi9cbmV4cG9ydCBjbGFzcyBTdWJuZXRWMiBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVN1Ym5ldFYyIHtcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBzdWJuZXQgdG8gdGhlIFZQQ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tU3VibmV0VjJBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBTdWJuZXRWMkF0dHJpYnV0ZXMpIDogSVN1Ym5ldFYyIHtcbiAgICAvKipcbiAgICAgKiBDbGFzcyB0byBkZWZpbmUgYW4gaW1wb3J0IGZvciBhbiBleGlzdGluZyBzdWJuZXRcbiAgICAgKiBAcmVzb3VyY2UgQVdTOjpFQzI6OlN1Ym5ldFxuICAgICAqL1xuICAgIGNsYXNzIEltcG9ydGVkU3VibmV0VjIgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElTdWJuZXRWMiB7XG4gICAgICAvKipcbiAgICAgICAqIFRoZSBJUHY2IENJRFIgQmxvY2sgYXNzaWduZWQgdG8gdGhpcyBzdWJuZXRcbiAgICAgICAqL1xuICAgICAgcHVibGljIHJlYWRvbmx5IGlwdjZDaWRyQmxvY2s/OiBzdHJpbmcgPSBhdHRycy5pcHY2Q2lkckJsb2NrO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSB0eXBlIG9mIHN1Ym5ldCAoZWcuIHB1YmxpYyBvciBwcml2YXRlKSB0aGF0IHRoaXMgc3VibmV0IHJlcHJlc2VudHMuXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzdWJuZXRUeXBlPzogU3VibmV0VHlwZSA9IGF0dHJzLnN1Ym5ldFR5cGU7XG5cbiAgICAgIC8qKlxuICAgICAgICogVGhlIEF2YWlsYWJpbGl0eSBab25lIGluIHdoaWNoIHN1Ym5ldCBpcyBsb2NhdGVkXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBhdmFpbGFiaWxpdHlab25lOiBzdHJpbmcgPSBhdHRycy5hdmFpbGFiaWxpdHlab25lO1xuXG4gICAgICAvKipcbiAgICAgICAqIFRoZSBzdWJuZXRJZCBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgICAgICogUmVmZXJzIHRvIHRoZSBwaHlzaWNhbCBJRCBjcmVhdGVkXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nID0gYXR0cnMuc3VibmV0SWQ7XG5cbiAgICAgIC8qKlxuICAgICAgICogRGVwZW5kYWJsZSB0aGF0IGNhbiBiZSBkZXBlbmRlZCB1cG9uIHRvIGZvcmNlIGludGVybmV0IGNvbm5lY3Rpdml0eSBlc3RhYmxpc2hlZCBvbiB0aGUgVlBDXG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkOiBJRGVwZW5kYWJsZSA9IG5ldyBEZXBlbmRlbmN5R3JvdXAoKTtcblxuICAgICAgLyoqXG4gICAgICAgKiBUaGUgSVB2NCBDSURSIGJsb2NrIGFzc2lnbmVkIHRvIHRoaXMgc3VibmV0XG4gICAgICAgKi9cbiAgICAgIHB1YmxpYyByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmcgPSBhdHRycy5pcHY0Q2lkckJsb2NrO1xuXG4gICAgICAvKipcbiAgICAgICAqICBDdXJyZW50IHJvdXRlIHRhYmxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN1Ym5ldFxuICAgICAgICovXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcm91dGVUYWJsZTogSVJvdXRlVGFibGUgPSB7IHJvdXRlVGFibGVJZDogYXR0cnMucm91dGVUYWJsZUlkISB9O1xuXG4gICAgICAvKipcbiAgICAgICAqIEFzc29jaWF0ZSBhIE5ldHdvcmsgQUNMIHdpdGggdGhpcyBzdWJuZXRcbiAgICAgICAqIFJlcXVpcmVkIGhlcmUgc2luY2UgaXQgaXMgaW1wbGVtZW50ZWQgaW4gdGhlIElTdWJuZXRWMlxuICAgICAgICovXG4gICAgICBwdWJsaWMgYXNzb2NpYXRlTmV0d29ya0FjbChhY2xJZDogc3RyaW5nLCBuZXR3b3JrQWNsOiBJTmV0d29ya0FjbCkge1xuICAgICAgICBjb25zdCBhY2xTY29wZSA9IG5ldHdvcmtBY2wgaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyBuZXR3b3JrQWNsIDogdGhpcztcbiAgICAgICAgY29uc3Qgb3RoZXIgPSBuZXR3b3JrQWNsIGluc3RhbmNlb2YgQ29uc3RydWN0ID8gdGhpcyA6IG5ldHdvcmtBY2w7XG4gICAgICAgIG5ldyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24oYWNsU2NvcGUsIGFjbElkICsgTmFtZXMubm9kZVVuaXF1ZUlkKG90aGVyLm5vZGUpLCB7XG4gICAgICAgICAgbmV0d29ya0FjbCxcbiAgICAgICAgICBzdWJuZXQ6IHRoaXMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gbmV3IEltcG9ydGVkU3VibmV0VjIoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhlIHN1Ym5ldCBpcyBsb2NhdGVkIGluXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0SWQgZm9yIHRoaXMgcGFydGljdWxhciBzdWJuZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldElkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqICBEZXBlbmRlbmNpZXMgZm9yIGludGVybmV0IGNvbm5lY3Rpdml0eVxuICAgKiBUaGlzIFByb3BlcnR5IGV4cG9zZXMgdGhlIFJvdXRlVGFibGUtU3VibmV0IGFzc29jaWF0aW9uIHNvIHRoYXQgb3RoZXIgcmVzb3VyY2VzIGNhbiBkZXBlbmQgb24gaXQuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZDogSURlcGVuZGFibGU7XG5cbiAgLyoqXG4gICAqIFRoZSB2YXJpYWJsZSBuYW1lIGBpbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkYCBkb2VzIG5vdCByZWZsZWN0IHdoYXQgaXQgYWN0dWFsbHkgaXMuXG4gICAqIFRoZSBuYW1pbmcgaXMgZW5mb3JjZWQgYnkgSVN1Ym5ldC4gV2UgbmVlZCB0byBrZWVwIGl0IHRvIG1haW50YWluIGNvbXBhdGliaWxpdHkuXG4gICAqIEl0IGV4cG9zZXMgdGhlIFJvdXRlVGFibGUtU3VibmV0IGFzc29jaWF0aW9uIHNvIHRoYXQgb3RoZXIgcmVzb3VyY2VzIGNhbiBkZXBlbmQgb24gaXQuXG4gICAqIEUuZy4gUmVzb3VyY2VzIGluIGEgc3VibmV0LCB3aGVuIGJlaW5nIGRlbGV0ZWQsIG1heSBuZWVkIHRoZSBSb3V0ZVRhYmxlIHRvIGV4aXN0IGluIG9yZGVyIHRvIGRlbGV0ZSBwcm9wZXJseVxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBfaW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZCA9IG5ldyBEZXBlbmRlbmN5R3JvdXAoKTtcblxuICAvKipcbiAgICogVGhlIElQdjQgQ0lEUiBibG9jayBmb3IgdGhpcyBzdWJuZXRcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBpcHY0Q2lkckJsb2NrOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJUHY2IENJRFIgQmxvY2sgZm9yIHRoaXMgc3VibmV0XG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgaXB2NkNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2Ygc3VibmV0IChwdWJsaWMgb3IgcHJpdmF0ZSkgdGhhdCB0aGlzIHN1Ym5ldCByZXByZXNlbnRzLlxuICAgKiBAYXR0cmlidXRlIFN1Ym5ldFR5cGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXRUeXBlPzogU3VibmV0VHlwZTtcblxuICBwcml2YXRlIF9uZXR3b3JrQWNsOiBJTmV0d29ya0FjbDtcblxuICBwcml2YXRlIF9yb3V0ZVRhYmxlOiBJUm91dGVUYWJsZTtcblxuICAvKipcbiAgICogQ29uc3RydWN0cyBhIG5ldyBTdWJuZXRWMiBpbnN0YW5jZS5cbiAgICogQHBhcmFtIHNjb3BlIFRoZSBwYXJlbnQgQ29uc3RydWN0IHRoYXQgdGhpcyByZXNvdXJjZSB3aWxsIGJlIHBhcnQgb2YuXG4gICAqIEBwYXJhbSBpZCBUaGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoaXMgcmVzb3VyY2UuXG4gICAqIEBwYXJhbSBwcm9wcyBUaGUgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzIGZvciB0aGUgc3VibmV0LlxuICAgKi9cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFN1Ym5ldFYyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuc3VibmV0TmFtZSA/PyBMYXp5LnN0cmluZyh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+IE5hbWVzLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7IG1heExlbmd0aDogMTI4LCBhbGxvd2VkU3BlY2lhbENoYXJhY3RlcnM6ICdfJyB9KSxcbiAgICAgIH0pLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgY29uc3QgaXB2NENpZHJCbG9jayA9IHByb3BzLmlwdjRDaWRyQmxvY2suY2lkcjtcbiAgICBjb25zdCBpcHY2Q2lkckJsb2NrID0gcHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkcjtcblxuICAgIGlmICghY2hlY2tDaWRyUmFuZ2VzKHByb3BzLnZwYywgcHJvcHMuaXB2NENpZHJCbG9jay5jaWRyKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdDSURSIGJsb2NrIHNob3VsZCBiZSB3aXRoaW4gdGhlIHJhbmdlIG9mIFZQQycpO1xuICAgIH1cblxuICAgIGxldCBvdmVybGFwOiBib29sZWFuID0gZmFsc2U7XG4gICAgbGV0IG92ZXJsYXBJcHY2OiBib29sZWFuID0gZmFsc2U7XG5cbiAgICBvdmVybGFwID0gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXMocHJvcHMudnBjLCBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHIpO1xuXG4gICAgLy8gY2hlY2sgd2hldGhlciBWUEMgc3VwcG9ydHMgaXB2NlxuICAgIGlmIChwcm9wcy5pcHY2Q2lkckJsb2NrPy5jaWRyKSB7XG4gICAgICB2YWxpZGF0ZVN1cHBvcnRJcHY2KHByb3BzLnZwYyk7XG4gICAgICBvdmVybGFwSXB2NiA9IHZhbGlkYXRlT3ZlcmxhcHBpbmdDaWRyUmFuZ2VzaXB2Nihwcm9wcy52cGMsIHByb3BzLmlwdjZDaWRyQmxvY2s/LmNpZHIpO1xuICAgIH1cblxuICAgIGlmIChvdmVybGFwIHx8IG92ZXJsYXBJcHY2KSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NJRFIgYmxvY2sgc2hvdWxkIG5vdCBvdmVybGFwIHdpdGggZXhpc3Rpbmcgc3VibmV0IGJsb2NrcycpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5hc3NpZ25JcHY2QWRkcmVzc09uQ3JlYXRpb24gJiYgIXByb3BzLmlwdjZDaWRyQmxvY2spIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSVB2NiBDSURSIGJsb2NrIGlzIHJlcXVpcmVkIHdoZW4gYXNzaWduaW5nIElQdjYgYWRkcmVzcyBvbiBjcmVhdGlvbicpO1xuICAgIH1cblxuICAgIGNvbnN0IHN1Ym5ldCA9IG5ldyBDZm5TdWJuZXQodGhpcywgJ1N1Ym5ldCcsIHtcbiAgICAgIHZwY0lkOiBwcm9wcy52cGMudnBjSWQsXG4gICAgICBjaWRyQmxvY2s6IGlwdjRDaWRyQmxvY2ssXG4gICAgICBpcHY2Q2lkckJsb2NrOiBpcHY2Q2lkckJsb2NrLFxuICAgICAgYXZhaWxhYmlsaXR5Wm9uZTogcHJvcHMuYXZhaWxhYmlsaXR5Wm9uZSxcbiAgICAgIGFzc2lnbklwdjZBZGRyZXNzT25DcmVhdGlvbjogcHJvcHMuYXNzaWduSXB2NkFkZHJlc3NPbkNyZWF0aW9uID8/IGZhbHNlLFxuICAgIH0pO1xuXG4gICAgdGhpcy5ub2RlLmRlZmF1bHRDaGlsZCA9IHN1Ym5ldDtcbiAgICB0aGlzLmlwdjRDaWRyQmxvY2sgPSBwcm9wcy5pcHY0Q2lkckJsb2NrLmNpZHI7XG4gICAgdGhpcy5pcHY2Q2lkckJsb2NrID0gcHJvcHMuaXB2NkNpZHJCbG9jaz8uY2lkcjtcbiAgICB0aGlzLnN1Ym5ldElkID0gc3VibmV0LnJlZjtcbiAgICB0aGlzLmF2YWlsYWJpbGl0eVpvbmUgPSBwcm9wcy5hdmFpbGFiaWxpdHlab25lO1xuXG4gICAgdGhpcy5fbmV0d29ya0FjbCA9IE5ldHdvcmtBY2wuZnJvbU5ldHdvcmtBY2xJZCh0aGlzLCAnQWNsJywgc3VibmV0LmF0dHJOZXR3b3JrQWNsQXNzb2NpYXRpb25JZCk7XG5cbiAgICBpZiAocHJvcHMuc3VibmV0TmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoTkFNRV9UQUcsIHByb3BzLnN1Ym5ldE5hbWUpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy52cGMudnBjTmFtZSkge1xuICAgICAgVGFncy5vZih0aGlzKS5hZGQoVlBDTkFNRV9UQUcsIHByb3BzLnZwYy52cGNOYW1lKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMucm91dGVUYWJsZSkge1xuICAgICAgdGhpcy5fcm91dGVUYWJsZSA9IHByb3BzLnJvdXRlVGFibGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEFzc2lnbmluZyBhIGRlZmF1bHQgcm91dGUgdGFibGVcbiAgICAgIHRoaXMuX3JvdXRlVGFibGUgPSBuZXcgUm91dGVUYWJsZSh0aGlzLCAnUm91dGVUYWJsZScsIHtcbiAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgIHJvdXRlVGFibGVOYW1lOiAnRGVmYXVsdENES1JvdXRlVGFibGUnLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY29uc3Qgcm91dGVBc3NvYyA9IG5ldyBDZm5TdWJuZXRSb3V0ZVRhYmxlQXNzb2NpYXRpb24odGhpcywgJ1JvdXRlVGFibGVBc3NvY2lhdGlvbicsIHtcbiAgICAgIHN1Ym5ldElkOiB0aGlzLnN1Ym5ldElkLFxuICAgICAgcm91dGVUYWJsZUlkOiB0aGlzLnJvdXRlVGFibGUucm91dGVUYWJsZUlkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5faW50ZXJuZXRDb25uZWN0aXZpdHlFc3RhYmxpc2hlZC5hZGQocm91dGVBc3NvYyk7XG5cbiAgICB0aGlzLmludGVybmV0Q29ubmVjdGl2aXR5RXN0YWJsaXNoZWQgPSB0aGlzLl9pbnRlcm5ldENvbm5lY3Rpdml0eUVzdGFibGlzaGVkO1xuXG4gICAgdGhpcy5zdWJuZXRUeXBlID0gcHJvcHMuc3VibmV0VHlwZTtcbiAgICBzdG9yZVN1Ym5ldFRvVnBjQnlUeXBlKHByb3BzLnZwYywgdGhpcywgcHJvcHMuc3VibmV0VHlwZSk7XG4gIH1cblxuICAvKipcbiAgICogQXNzb2NpYXRlIGEgTmV0d29yayBBQ0wgd2l0aCB0aGlzIHN1Ym5ldFxuICAgKlxuICAgKiBAcGFyYW0gaWQgVGhlIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGFzc29jaWF0aW9uLlxuICAgKiBAcGFyYW0gbmV0d29ya0FjbCBUaGUgTmV0d29yayBBQ0wgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBzdWJuZXQuXG4gICAqIFRoaXMgYWxsb3dzIGNvbnRyb2xsaW5nIGluYm91bmQgYW5kIG91dGJvdW5kIHRyYWZmaWMgZm9yIGluc3RhbmNlcyBpbiB0aGlzIHN1Ym5ldC5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBhc3NvY2lhdGVOZXR3b3JrQWNsKGlkOiBzdHJpbmcsIG5ldHdvcmtBY2w6IElOZXR3b3JrQWNsKSB7XG4gICAgdGhpcy5fbmV0d29ya0FjbCA9IG5ldHdvcmtBY2w7XG5cbiAgICBjb25zdCBzY29wZSA9IG5ldHdvcmtBY2wgaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyBuZXR3b3JrQWNsIDogdGhpcztcbiAgICBjb25zdCBvdGhlciA9IG5ldHdvcmtBY2wgaW5zdGFuY2VvZiBDb25zdHJ1Y3QgPyB0aGlzIDogbmV0d29ya0FjbDtcbiAgICBuZXcgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uKHNjb3BlLCBpZCArIE5hbWVzLm5vZGVVbmlxdWVJZChvdGhlci5ub2RlKSwge1xuICAgICAgbmV0d29ya0FjbCxcbiAgICAgIHN1Ym5ldDogdGhpcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIFJvdXRlIFRhYmxlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHN1Ym5ldFxuICAgKi9cbiAgcHVibGljIGdldCByb3V0ZVRhYmxlKCk6IElSb3V0ZVRhYmxlIHtcbiAgICByZXR1cm4gdGhpcy5fcm91dGVUYWJsZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBOZXR3b3JrIEFDTCBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdWJuZXQuXG4gICAqL1xuXG4gIHB1YmxpYyBnZXQgbmV0d29ya0FjbCgpOiBJTmV0d29ya0FjbCB7XG4gICAgcmV0dXJuIHRoaXMuX25ldHdvcmtBY2w7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHJlcXVpcmVkIHRvIGltcG9ydCBhIHN1Ym5ldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN1Ym5ldFYyQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgQXZhaWxhYmlsaXR5IFpvbmUgdGhpcyBzdWJuZXQgaXMgbG9jYXRlZCBpblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIEFaIGluZm9ybWF0aW9uLCBjYW5ub3QgdXNlIEFaIHNlbGVjdGlvbiBmZWF0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBDSURSIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gQ0lEUiBpbmZvcm1hdGlvbiwgY2Fubm90IHVzZSBDSURSIGZpbHRlciBmZWF0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NENpZHJCbG9jazogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSVB2NCBDSURSIGJsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3VibmV0XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gQ0lEUiBpbmZvcm1hdGlvbiwgY2Fubm90IHVzZSBDSURSIGZpbHRlciBmZWF0dXJlc1xuICAgKi9cbiAgcmVhZG9ubHkgaXB2NkNpZHJCbG9jaz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSByb3V0ZSB0YWJsZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIHN1Ym5ldFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHJvdXRlIHRhYmxlIGluZm9ybWF0aW9uLCBjYW5ub3QgY3JlYXRlIFZQQyBlbmRwb2ludHNcbiAgICovXG4gIHJlYWRvbmx5IHJvdXRlVGFibGVJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN1Ym5ldElkIGZvciB0aGlzIHBhcnRpY3VsYXIgc3VibmV0XG4gICAqL1xuICByZWFkb25seSBzdWJuZXRJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBzdWJuZXQgKHB1YmxpYyBvciBwcml2YXRlKSB0aGF0IHRoaXMgc3VibmV0IHJlcHJlc2VudHMuXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBnaXZlbiBzdWJuZXRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzdWJuZXQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0TmFtZT86IHN0cmluZztcblxufVxuXG50eXBlIERlcHJlY2F0ZWRTdWJuZXRUeXBlID0gJ0RlcHJlY2F0ZWRfSXNvbGF0ZWQnIHwgJ0RlcHJlY2F0ZWRfUHJpdmF0ZSc7XG5jb25zdCBzdWJuZXRUeXBlTWFwOiB7IFtrZXkgaW4gU3VibmV0VHlwZSB8IERlcHJlY2F0ZWRTdWJuZXRUeXBlXTogKHZwYzogSVZwY1YyLCBzdWJuZXQ6IFN1Ym5ldFYyKSA9PiB2b2lkIH0gPSB7XG4gIFtTdWJuZXRUeXBlLlBSSVZBVEVfSVNPTEFURURdOiAodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIpID0+IHZwYy5pc29sYXRlZFN1Ym5ldHMucHVzaChzdWJuZXQpLFxuICBbU3VibmV0VHlwZS5QVUJMSUNdOiAodnBjOiBJVnBjVjIsIHN1Ym5ldDogU3VibmV0VjIpID0+IHZwYy5wdWJsaWNTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgW1N1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX0VHUkVTU106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnByaXZhdGVTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgWydEZXByZWNhdGVkX0lzb2xhdGVkJ106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLmlzb2xhdGVkU3VibmV0cy5wdXNoKHN1Ym5ldCksXG4gIFsnRGVwcmVjYXRlZF9Qcml2YXRlJ106ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnByaXZhdGVTdWJuZXRzLnB1c2goc3VibmV0KSxcbiAgW1N1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVF06ICh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMikgPT4gdnBjLnByaXZhdGVTdWJuZXRzLnB1c2goc3VibmV0KSxcbn07XG5cbi8qKlxuICogU3RvcmVzIHRoZSBwcm92aWRlZCBzdWJuZXQgaW4gdGhlIFZQQydzIGNvbGxlY3Rpb24gb2Ygc3VibmV0cyBiYXNlZCBvbiB0aGUgc3BlY2lmaWVkIHN1Ym5ldCB0eXBlLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byB3aGljaCB0aGUgc3VibmV0IGJlbG9uZ3MuXG4gKiBAcGFyYW0gc3VibmV0IFRoZSBzdWJuZXQgaW5zdGFuY2UgdG8gYmUgc3RvcmVkLlxuICogQHBhcmFtIHR5cGUgVGhlIHR5cGUgb2YgdGhlIHN1Ym5ldCAoZS5nLiwgcHVibGljLCBwcml2YXRlLCBpc29sYXRlZCkuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gc3RvcmVTdWJuZXRUb1ZwY0J5VHlwZSh2cGM6IElWcGNWMiwgc3VibmV0OiBTdWJuZXRWMiwgdHlwZTogU3VibmV0VHlwZSkge1xuICBjb25zdCBmaW5kRnVuY3Rpb25UeXBlID0gc3VibmV0VHlwZU1hcFt0eXBlXTtcbiAgaWYgKGZpbmRGdW5jdGlvblR5cGUpIHtcbiAgICBmaW5kRnVuY3Rpb25UeXBlKHZwYywgc3VibmV0KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuc3VwcG9ydGVkIHN1Ym5ldCB0eXBlOiAke3R5cGV9YCk7XG4gIH1cblxuICAvKipcbiAgICogTmVlZCB0byBzZXQgZXhwbGljaXQgZGVwZW5kZW5jeSBhcyBkdXJpbmcgc3RhY2sgZGVsZXRpb24sXG4gICAqIHRoZSBjaWRyIGJsb2NrcyBtYXkgZ2V0IGRlbGV0ZWQgZmlyc3QgYW5kIHdpbGwgZmFpbCBhcyB0aGUgc3VibmV0cyBhcmUgc3RpbGwgdXNpbmcgdGhlIGNpZHIgYmxvY2tzXG4gICAqL1xuICBpZiAodnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgIGZvciAoY29uc3QgY2lkciBvZiB2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICBzdWJuZXQubm9kZS5hZGREZXBlbmRlbmN5KGNpZHIpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRlcyB3aGV0aGVyIHRoZSBwcm92aWRlZCBWUEMgc3VwcG9ydHMgSVB2NiBhZGRyZXNzZXMuXG4gKlxuICogQHBhcmFtIHZwYyBUaGUgVlBDIGluc3RhbmNlIHRvIGJlIHZhbGlkYXRlZC5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgdGhlIFZQQyBkb2VzIG5vdCBzdXBwb3J0IElQdjYgYWRkcmVzc2VzLlxuICogQHJldHVybnMgVHJ1ZSBpZiB0aGUgVlBDIHN1cHBvcnRzIElQdjYgYWRkcmVzc2VzLCBmYWxzZSBvdGhlcndpc2UuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZnVuY3Rpb24gdmFsaWRhdGVTdXBwb3J0SXB2Nih2cGM6IElWcGNWMikge1xuICBpZiAodnBjLnNlY29uZGFyeUNpZHJCbG9jaykge1xuICAgIGlmICh2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrLnNvbWUoKHNlY29uZGFyeUFkZHJlc3MpID0+IHNlY29uZGFyeUFkZHJlc3MuYW1hem9uUHJvdmlkZWRJcHY2Q2lkckJsb2NrID09PSB0cnVlIHx8XG4gIHNlY29uZGFyeUFkZHJlc3MuaXB2NklwYW1Qb29sSWQgIT09IHVuZGVmaW5lZCB8fCBzZWNvbmRhcnlBZGRyZXNzLmlwdjZQb29sICE9PSB1bmRlZmluZWQpKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdUbyB1c2UgSVB2NiwgdGhlIFZQQyBtdXN0IGVuYWJsZSBJUHY2IHN1cHBvcnQuJyk7XG4gICAgfVxuICB9IGVsc2Uge3JldHVybiBmYWxzZTt9XG59XG5cbi8qKlxuICogQ2hlY2tzIGlmIHRoZSBwcm92aWRlZCBDSURSIHJhbmdlIGZhbGxzIHdpdGhpbiB0aGUgSVAgYWRkcmVzcyByYW5nZXMgb2YgdGhlIGdpdmVuIFZQQy5cbiAqXG4gKiBAcGFyYW0gdnBjIFRoZSBWUEMgaW5zdGFuY2UgdG8gY2hlY2sgYWdhaW5zdC5cbiAqIEBwYXJhbSBjaWRyUmFuZ2UgVGhlIENJRFIgcmFuZ2UgdG8gYmUgY2hlY2tlZC5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIENJRFIgcmFuZ2UgZmFsbHMgd2l0aGluIHRoZSBWUEMncyBJUCBhZGRyZXNzIHJhbmdlcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKi9cbmZ1bmN0aW9uIGNoZWNrQ2lkclJhbmdlcyh2cGM6IElWcGNWMiwgY2lkclJhbmdlOiBzdHJpbmcpIHtcbiAgY29uc3QgdnBjQ2lkckJsb2NrID0gW3ZwYy5pcHY0Q2lkckJsb2NrXTtcbiAgY29uc3Qgc3VibmV0Q2lkckJsb2NrID0gbmV3IENpZHJCbG9jayhjaWRyUmFuZ2UpO1xuICBjb25zdCBhbGxDaWRyczogQ2lkckJsb2NrW10gPSBbXTtcblxuICAvLyBTZWNvbmRhcnkgSVAgYWRkcmVzc2VzIGFzc29pY2F0ZWQgdXNpbmcgdXNlciBkZWZpbmVkIElQdjQgcmFuZ2VcbiAgaWYgKHZwYy5zZWNvbmRhcnlDaWRyQmxvY2spIHtcbiAgICBmb3IgKGNvbnN0IGlwQWRkcmVzcyBvZiB2cGMuc2Vjb25kYXJ5Q2lkckJsb2NrKSB7XG4gICAgICBpZiAoaXBBZGRyZXNzLmNpZHJCbG9jaykge1xuICAgICAgICB2cGNDaWRyQmxvY2sucHVzaChpcEFkZHJlc3MuY2lkckJsb2NrKTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgY2lkcnMgPSB2cGNDaWRyQmxvY2subWFwKGNpZHIgPT4gbmV3IENpZHJCbG9jayhjaWRyKSk7XG4gICAgYWxsQ2lkcnMucHVzaCguLi5jaWRycyk7XG4gIH1cblxuICAvLyBTZWNvbmRhcnkgSVAgYWRkcmVzc2VzIGFzc29pY2F0ZWQgdXNpbmcgSVBBTSBJUHY0IHJhbmdlXG4gIGlmICh2cGMuaXB2NElwYW1Qcm92aXNpb25lZENpZHJzKSB7XG4gICAgY29uc3QgY2lkcnMgPSB2cGMuaXB2NElwYW1Qcm92aXNpb25lZENpZHJzLm1hcChjaWRyID0+IG5ldyBDaWRyQmxvY2soY2lkcikpO1xuICAgIGFsbENpZHJzLnB1c2goLi4uY2lkcnMpO1xuICB9XG5cbiAgLy8gSWYgbm8gSVB2NCBpcyBhc3NpZ25lZCBhcyBzZWNvbmRhcnkgYWRkcmVzc1xuICBpZiAoYWxsQ2lkcnMubGVuZ3RoID09PSAwKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdObyBzZWNvbmRhcnkgSVAgYWRkcmVzcyBhdHRhY2hlZCB0byBWUEMnKTtcbiAgfVxuXG4gIHJldHVybiBhbGxDaWRycy5zb21lKGMgPT4gYy5jb250YWluc0NpZHIoc3VibmV0Q2lkckJsb2NrKSk7XG59XG5cbi8qKlxuICogVmFsaWRhdGVzIGlmIHRoZSBwcm92aWRlZCBJUHY0IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3Mgd2l0aGluIHRoZSBnaXZlbiBWUEMuXG4gKlxuICogQHBhcmFtIHZwYyBUaGUgVlBDIGluc3RhbmNlIHRvIGNoZWNrIGFnYWluc3QuXG4gKiBAcGFyYW0gaXB2NENpZHJCbG9jayBUaGUgSVB2NCBDSURSIGJsb2NrIHRvIGJlIHZhbGlkYXRlZC5cbiAqIEByZXR1cm5zIFRydWUgaWYgdGhlIElQdjQgQ0lEUiBibG9jayBvdmVybGFwcyB3aXRoIGV4aXN0aW5nIHN1Ym5ldCBDSURSIGJsb2NrcywgZmFsc2Ugb3RoZXJ3aXNlLlxuICogQGludGVybmFsXG4gKi9cblxuZnVuY3Rpb24gdmFsaWRhdGVPdmVybGFwcGluZ0NpZHJSYW5nZXModnBjOiBJVnBjVjIsIGlwdjRDaWRyQmxvY2s6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgYWxsU3VibmV0czogSVN1Ym5ldFYyW107XG4gIHRyeSB7XG4gICAgYWxsU3VibmV0cyA9IHZwYy5zZWxlY3RTdWJuZXRzKCkuc3VibmV0cztcbiAgfSBjYXRjaCAoZSkge1xuICAgICdObyBzdWJuZXRzIGluIFZQQyc7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaXBNYXA6IFtzdHJpbmcsIHN0cmluZ11bXSA9IG5ldyBBcnJheSgpO1xuXG4gIGNvbnN0IGlucHV0UmFuZ2UgPSBuZXcgQ2lkckJsb2NrKGlwdjRDaWRyQmxvY2spO1xuXG4gIGNvbnN0IGlucHV0SXBNYXA6IFtzdHJpbmcsIHN0cmluZ10gPSBbaW5wdXRSYW5nZS5taW5JcCgpLCBpbnB1dFJhbmdlLm1heElwKCldO1xuXG4gIGZvciAoY29uc3Qgc3VibmV0IG9mIGFsbFN1Ym5ldHMpIHtcbiAgICBjb25zdCBjaWRyQmxvY2sgPSBuZXcgQ2lkckJsb2NrKHN1Ym5ldC5pcHY0Q2lkckJsb2NrKTtcbiAgICBpcE1hcC5wdXNoKFtjaWRyQmxvY2subWluSXAoKSwgY2lkckJsb2NrLm1heElwKCldKTtcbiAgfVxuXG4gIGZvciAoY29uc3QgcmFuZ2Ugb2YgaXBNYXApIHtcbiAgICBpZiAoaW5wdXRSYW5nZS5yYW5nZXNPdmVybGFwKHJhbmdlLCBpbnB1dElwTWFwKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGZhbHNlO1xufVxuXG4vKipcbiAqIFZhbGlkYXRlcyBpZiB0aGUgcHJvdmlkZWQgSVB2NiBDSURSIGJsb2NrIG92ZXJsYXBzIHdpdGggZXhpc3Rpbmcgc3VibmV0IENJRFIgYmxvY2tzIHdpdGhpbiB0aGUgZ2l2ZW4gVlBDLlxuICpcbiAqIEBwYXJhbSB2cGMgVGhlIFZQQyBpbnN0YW5jZSB0byBjaGVjayBhZ2FpbnN0LlxuICogQHBhcmFtIGlwdjZDaWRyQmxvY2sgVGhlIElQdjYgQ0lEUiBibG9jayB0byBiZSB2YWxpZGF0ZWQuXG4gKiBAcmV0dXJucyBUcnVlIGlmIHRoZSBJUHY2IENJRFIgYmxvY2sgb3ZlcmxhcHMgd2l0aCBleGlzdGluZyBzdWJuZXQgQ0lEUiBibG9ja3MsIGZhbHNlIG90aGVyd2lzZS5cbiAqIEB0aHJvd3MgRXJyb3IgaWYgbm8gc3VibmV0cyBhcmUgZm91bmQgaW4gdGhlIFZQQy5cbiAqIEBpbnRlcm5hbFxuICovXG5mdW5jdGlvbiB2YWxpZGF0ZU92ZXJsYXBwaW5nQ2lkclJhbmdlc2lwdjYodnBjOiBJVnBjVjIsIGlwdjZDaWRyQmxvY2s6IHN0cmluZyk6IGJvb2xlYW4ge1xuICBsZXQgYWxsU3VibmV0czogSVN1Ym5ldFYyW107XG4gIHRyeSB7XG4gICAgYWxsU3VibmV0cyA9IHZwYy5zZWxlY3RTdWJuZXRzKCkuc3VibmV0cztcbiAgfSBjYXRjaCAoZSkge1xuICAgICdObyBzdWJuZXRzIGluIFZQQyc7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaXB2Nk1hcDogc3RyaW5nW109IFtdO1xuXG4gIGNvbnN0IGlucHV0UmFuZ2UgPSBuZXcgQ2lkckJsb2NrSXB2NihpcHY2Q2lkckJsb2NrKTtcblxuICBsZXQgcmVzdWx0IDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGZvciAoY29uc3Qgc3VibmV0IG9mIGFsbFN1Ym5ldHMpIHtcbiAgICBpZiAoc3VibmV0LmlwdjZDaWRyQmxvY2spIHtcbiAgICAgIGNvbnN0IGNpZHJCbG9jayA9IG5ldyBDaWRyQmxvY2tJcHY2KHN1Ym5ldC5pcHY2Q2lkckJsb2NrKTtcbiAgICAgIGlwdjZNYXAucHVzaChjaWRyQmxvY2suY2lkcik7XG4gICAgfVxuICB9XG5cbiAgZm9yIChjb25zdCByYW5nZSBvZiBpcHY2TWFwKSB7XG4gICAgaWYgKGlucHV0UmFuZ2UucmFuZ2VzT3ZlcmxhcChyYW5nZSwgaW5wdXRSYW5nZS5jaWRyKSkge1xuICAgICAgcmVzdWx0ID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuIl19
@@ -0,0 +1,18 @@
1
+ import { IResource, Resource } from 'aws-cdk-lib/core';
2
+ /**
3
+ * Represents a Transit Gateway Route Table Association.
4
+ */
5
+ export interface ITransitGatewayAssociation extends IResource {
6
+ /**
7
+ * The ID of the transit gateway route table association.
8
+ * @attribute
9
+ */
10
+ readonly transitGatewayAssociationId: string;
11
+ }
12
+ /**
13
+ * A Transit Gateway Association.
14
+ * @internal
15
+ */
16
+ export declare abstract class TransitGatewayAssociationBase extends Resource implements ITransitGatewayAssociation {
17
+ abstract readonly transitGatewayAssociationId: string;
18
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransitGatewayAssociationBase = void 0;
4
+ const core_1 = require("aws-cdk-lib/core");
5
+ /**
6
+ * A Transit Gateway Association.
7
+ * @internal
8
+ */
9
+ class TransitGatewayAssociationBase extends core_1.Resource {
10
+ }
11
+ exports.TransitGatewayAssociationBase = TransitGatewayAssociationBase;
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdC1nYXRld2F5LWFzc29jaWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJhbnNpdC1nYXRld2F5LWFzc29jaWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1RDtBQWF2RDs7O0dBR0c7QUFDSCxNQUFzQiw2QkFBOEIsU0FBUSxlQUFRO0NBRW5FO0FBRkQsc0VBRUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzb3VyY2UsIFJlc291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIFRyYW5zaXQgR2F0ZXdheSBSb3V0ZSBUYWJsZSBBc3NvY2lhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNpdEdhdGV3YXlBc3NvY2lhdGlvbiBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHRyYW5zaXQgZ2F0ZXdheSByb3V0ZSB0YWJsZSBhc3NvY2lhdGlvbi5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNpdEdhdGV3YXlBc3NvY2lhdGlvbklkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBUcmFuc2l0IEdhdGV3YXkgQXNzb2NpYXRpb24uXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zaXRHYXRld2F5QXNzb2NpYXRpb25CYXNlIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJVHJhbnNpdEdhdGV3YXlBc3NvY2lhdGlvbiB7XG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSB0cmFuc2l0R2F0ZXdheUFzc29jaWF0aW9uSWQ6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,18 @@
1
+ import { IResource, Resource } from 'aws-cdk-lib/core';
2
+ /**
3
+ * Represents a Transit Gateway Attachment.
4
+ */
5
+ export interface ITransitGatewayAttachment extends IResource {
6
+ /**
7
+ * The ID of the transit gateway attachment.
8
+ * @attribute
9
+ */
10
+ readonly transitGatewayAttachmentId: string;
11
+ }
12
+ /**
13
+ * A Transit Gateway Attachment.
14
+ * @internal
15
+ */
16
+ export declare abstract class TransitGatewayAttachmentBase extends Resource implements ITransitGatewayAttachment {
17
+ abstract readonly transitGatewayAttachmentId: string;
18
+ }
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TransitGatewayAttachmentBase = void 0;
4
+ const core_1 = require("aws-cdk-lib/core");
5
+ /**
6
+ * A Transit Gateway Attachment.
7
+ * @internal
8
+ */
9
+ class TransitGatewayAttachmentBase extends core_1.Resource {
10
+ }
11
+ exports.TransitGatewayAttachmentBase = TransitGatewayAttachmentBase;
12
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdC1nYXRld2F5LWF0dGFjaG1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJ0cmFuc2l0LWdhdGV3YXktYXR0YWNobWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUQ7QUFZdkQ7OztHQUdHO0FBQ0gsTUFBc0IsNEJBQTZCLFNBQVEsZUFBUTtDQUVsRTtBQUZELG9FQUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSVJlc291cmNlLCBSZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuLyoqXG4gKiBSZXByZXNlbnRzIGEgVHJhbnNpdCBHYXRld2F5IEF0dGFjaG1lbnQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSVRyYW5zaXRHYXRld2F5QXR0YWNobWVudCBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHRyYW5zaXQgZ2F0ZXdheSBhdHRhY2htZW50LlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSB0cmFuc2l0R2F0ZXdheUF0dGFjaG1lbnRJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgVHJhbnNpdCBHYXRld2F5IEF0dGFjaG1lbnQuXG4gKiBAaW50ZXJuYWxcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFRyYW5zaXRHYXRld2F5QXR0YWNobWVudEJhc2UgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElUcmFuc2l0R2F0ZXdheUF0dGFjaG1lbnQge1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgdHJhbnNpdEdhdGV3YXlBdHRhY2htZW50SWQ6IHN0cmluZztcbn1cbiJdfQ==
@@ -0,0 +1,40 @@
1
+ import { ITransitGatewayAttachment } from './transit-gateway-attachment';
2
+ import { ITransitGatewayRouteTable } from './transit-gateway-route-table';
3
+ import { Construct } from 'constructs';
4
+ import { ITransitGatewayAssociation, TransitGatewayAssociationBase } from './transit-gateway-association';
5
+ /**
6
+ * Represents a Transit Gateway Route Table Association.
7
+ */
8
+ export interface ITransitGatewayRouteTableAssociation extends ITransitGatewayAssociation {
9
+ }
10
+ /**
11
+ * Common properties for a Transit Gateway Route Table Association.
12
+ */
13
+ export interface TransitGatewayRouteTableAssociationProps {
14
+ /**
15
+ * The ID of the transit gateway route table association.
16
+ */
17
+ readonly transitGatewayVpcAttachment: ITransitGatewayAttachment;
18
+ /**
19
+ * The ID of the transit gateway route table association.
20
+ */
21
+ readonly transitGatewayRouteTable: ITransitGatewayRouteTable;
22
+ /**
23
+ * Physical name of this association.
24
+ *
25
+ * @default - Assigned by CloudFormation.
26
+ */
27
+ readonly transitGatewayRouteTableAssociationName?: string;
28
+ }
29
+ /**
30
+ * Create a Transit Gateway Route Table Association.
31
+ *
32
+ * @resource AWS::EC2::TransitGatewayRouteTableAssociation
33
+ */
34
+ export declare class TransitGatewayRouteTableAssociation extends TransitGatewayAssociationBase {
35
+ /**
36
+ * The ID of the transit gateway route table association.
37
+ */
38
+ readonly transitGatewayAssociationId: string;
39
+ constructor(scope: Construct, id: string, props: TransitGatewayRouteTableAssociationProps);
40
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TransitGatewayRouteTableAssociation = void 0;
5
+ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
6
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
+ const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
8
+ const transit_gateway_association_1 = require("./transit-gateway-association");
9
+ const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
10
+ /**
11
+ * Create a Transit Gateway Route Table Association.
12
+ *
13
+ * @resource AWS::EC2::TransitGatewayRouteTableAssociation
14
+ */
15
+ class TransitGatewayRouteTableAssociation extends transit_gateway_association_1.TransitGatewayAssociationBase {
16
+ constructor(scope, id, props) {
17
+ super(scope, id);
18
+ try {
19
+ jsiiDeprecationWarnings._aws_cdk_aws_ec2_alpha_TransitGatewayRouteTableAssociationProps(props);
20
+ }
21
+ catch (error) {
22
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
23
+ Error.captureStackTrace(error, TransitGatewayRouteTableAssociation);
24
+ }
25
+ throw error;
26
+ }
27
+ // Enhanced CDK Analytics Telemetry
28
+ (0, metadata_resource_1.addConstructMetadata)(this, props);
29
+ const resource = new aws_ec2_1.CfnTransitGatewayRouteTableAssociation(this, id, {
30
+ transitGatewayAttachmentId: props.transitGatewayVpcAttachment.transitGatewayAttachmentId,
31
+ transitGatewayRouteTableId: props.transitGatewayRouteTable.routeTableId,
32
+ });
33
+ this.node.defaultChild = resource;
34
+ this.transitGatewayAssociationId = resource.ref;
35
+ }
36
+ }
37
+ exports.TransitGatewayRouteTableAssociation = TransitGatewayRouteTableAssociation;
38
+ _a = JSII_RTTI_SYMBOL_1;
39
+ TransitGatewayRouteTableAssociation[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayRouteTableAssociation", version: "2.178.0-alpha.0" };
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdC1nYXRld2F5LXJvdXRlLXRhYmxlLWFzc29jaWF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJhbnNpdC1nYXRld2F5LXJvdXRlLXRhYmxlLWFzc29jaWF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUVBLGlEQUE2RTtBQUU3RSwrRUFBMEc7QUFDMUcsOEVBQThFO0FBNkI5RTs7OztHQUlHO0FBQ0gsTUFBYSxtQ0FBb0MsU0FBUSwyREFBNkI7SUFNcEYsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQztRQUN2RixLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7K0NBUFIsbUNBQW1DOzs7O1FBUTVDLG1DQUFtQztRQUNuQyxJQUFBLHdDQUFvQixFQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQUVsQyxNQUFNLFFBQVEsR0FBRyxJQUFJLGdEQUFzQyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDcEUsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLDJCQUEyQixDQUFDLDBCQUEwQjtZQUN4RiwwQkFBMEIsRUFBRSxLQUFLLENBQUMsd0JBQXdCLENBQUMsWUFBWTtTQUN4RSxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksR0FBRyxRQUFRLENBQUM7UUFFbEMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUM7S0FDakQ7O0FBbEJILGtGQW1CQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElUcmFuc2l0R2F0ZXdheUF0dGFjaG1lbnQgfSBmcm9tICcuL3RyYW5zaXQtZ2F0ZXdheS1hdHRhY2htZW50JztcbmltcG9ydCB7IElUcmFuc2l0R2F0ZXdheVJvdXRlVGFibGUgfSBmcm9tICcuL3RyYW5zaXQtZ2F0ZXdheS1yb3V0ZS10YWJsZSc7XG5pbXBvcnQgeyBDZm5UcmFuc2l0R2F0ZXdheVJvdXRlVGFibGVBc3NvY2lhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJVHJhbnNpdEdhdGV3YXlBc3NvY2lhdGlvbiwgVHJhbnNpdEdhdGV3YXlBc3NvY2lhdGlvbkJhc2UgfSBmcm9tICcuL3RyYW5zaXQtZ2F0ZXdheS1hc3NvY2lhdGlvbic7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgVHJhbnNpdCBHYXRld2F5IFJvdXRlIFRhYmxlIEFzc29jaWF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElUcmFuc2l0R2F0ZXdheVJvdXRlVGFibGVBc3NvY2lhdGlvbiBleHRlbmRzIElUcmFuc2l0R2F0ZXdheUFzc29jaWF0aW9uIHt9XG5cbi8qKlxuICogQ29tbW9uIHByb3BlcnRpZXMgZm9yIGEgVHJhbnNpdCBHYXRld2F5IFJvdXRlIFRhYmxlIEFzc29jaWF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYW5zaXRHYXRld2F5Um91dGVUYWJsZUFzc29jaWF0aW9uUHJvcHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSB0cmFuc2l0IGdhdGV3YXkgcm91dGUgdGFibGUgYXNzb2NpYXRpb24uXG4gICAqL1xuICByZWFkb25seSB0cmFuc2l0R2F0ZXdheVZwY0F0dGFjaG1lbnQ6IElUcmFuc2l0R2F0ZXdheUF0dGFjaG1lbnQ7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgdHJhbnNpdCBnYXRld2F5IHJvdXRlIHRhYmxlIGFzc29jaWF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlOiBJVHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlO1xuXG4gIC8qKlxuICAgKiBQaHlzaWNhbCBuYW1lIG9mIHRoaXMgYXNzb2NpYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQXNzaWduZWQgYnkgQ2xvdWRGb3JtYXRpb24uXG4gICAqL1xuICByZWFkb25seSB0cmFuc2l0R2F0ZXdheVJvdXRlVGFibGVBc3NvY2lhdGlvbk5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgVHJhbnNpdCBHYXRld2F5IFJvdXRlIFRhYmxlIEFzc29jaWF0aW9uLlxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkVDMjo6VHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlQXNzb2NpYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFRyYW5zaXRHYXRld2F5Um91dGVUYWJsZUFzc29jaWF0aW9uIGV4dGVuZHMgVHJhbnNpdEdhdGV3YXlBc3NvY2lhdGlvbkJhc2Uge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSB0cmFuc2l0IGdhdGV3YXkgcm91dGUgdGFibGUgYXNzb2NpYXRpb24uXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgdHJhbnNpdEdhdGV3YXlBc3NvY2lhdGlvbklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFRyYW5zaXRHYXRld2F5Um91dGVUYWJsZUFzc29jaWF0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuVHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlQXNzb2NpYXRpb24odGhpcywgaWQsIHtcbiAgICAgIHRyYW5zaXRHYXRld2F5QXR0YWNobWVudElkOiBwcm9wcy50cmFuc2l0R2F0ZXdheVZwY0F0dGFjaG1lbnQudHJhbnNpdEdhdGV3YXlBdHRhY2htZW50SWQsXG4gICAgICB0cmFuc2l0R2F0ZXdheVJvdXRlVGFibGVJZDogcHJvcHMudHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCxcbiAgICB9KTtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gcmVzb3VyY2U7XG5cbiAgICB0aGlzLnRyYW5zaXRHYXRld2F5QXNzb2NpYXRpb25JZCA9IHJlc291cmNlLnJlZjtcbiAgfVxufVxuIl19
@@ -0,0 +1,45 @@
1
+ import { IResource, Resource } from 'aws-cdk-lib/core';
2
+ import { Construct } from 'constructs';
3
+ import { ITransitGatewayAttachment } from './transit-gateway-attachment';
4
+ import { ITransitGatewayRouteTable } from './transit-gateway-route-table';
5
+ /**
6
+ * Represents a Transit Gateway Route Table Propagation.
7
+ */
8
+ export interface ITransitGatewayRouteTablePropagation extends IResource {
9
+ /**
10
+ * The ID of the transit gateway route table propagation.
11
+ * @attribute
12
+ */
13
+ readonly transitGatewayRouteTablePropagationId: string;
14
+ }
15
+ /**
16
+ * Common properties for a Transit Gateway Route Table Propagation.
17
+ */
18
+ export interface TransitGatewayRouteTablePropagationProps {
19
+ /**
20
+ * The ID of the transit gateway route table propagation.
21
+ */
22
+ readonly transitGatewayVpcAttachment: ITransitGatewayAttachment;
23
+ /**
24
+ * The ID of the transit gateway route table propagation.
25
+ */
26
+ readonly transitGatewayRouteTable: ITransitGatewayRouteTable;
27
+ /**
28
+ * Physical name of this propagation.
29
+ *
30
+ * @default - Assigned by CloudFormation.
31
+ */
32
+ readonly transitGatewayRouteTablePropagationName?: string;
33
+ }
34
+ /**
35
+ * Create a Transit Gateway Route Table Propagation.
36
+ *
37
+ * @resource AWS::EC2::TransitGatewayRouteTablePropagation
38
+ */
39
+ export declare class TransitGatewayRouteTablePropagation extends Resource implements ITransitGatewayRouteTablePropagation {
40
+ /**
41
+ * The ID of the transit gateway route table propagation.
42
+ */
43
+ readonly transitGatewayRouteTablePropagationId: string;
44
+ constructor(scope: Construct, id: string, props: TransitGatewayRouteTablePropagationProps);
45
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TransitGatewayRouteTablePropagation = void 0;
5
+ const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
6
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
7
+ const core_1 = require("aws-cdk-lib/core");
8
+ const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
9
+ const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
10
+ /**
11
+ * Create a Transit Gateway Route Table Propagation.
12
+ *
13
+ * @resource AWS::EC2::TransitGatewayRouteTablePropagation
14
+ */
15
+ class TransitGatewayRouteTablePropagation extends core_1.Resource {
16
+ constructor(scope, id, props) {
17
+ super(scope, id);
18
+ try {
19
+ jsiiDeprecationWarnings._aws_cdk_aws_ec2_alpha_TransitGatewayRouteTablePropagationProps(props);
20
+ }
21
+ catch (error) {
22
+ if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
23
+ Error.captureStackTrace(error, TransitGatewayRouteTablePropagation);
24
+ }
25
+ throw error;
26
+ }
27
+ // Enhanced CDK Analytics Telemetry
28
+ (0, metadata_resource_1.addConstructMetadata)(this, props);
29
+ const resource = new aws_ec2_1.CfnTransitGatewayRouteTablePropagation(this, id, {
30
+ transitGatewayAttachmentId: props.transitGatewayVpcAttachment.transitGatewayAttachmentId,
31
+ transitGatewayRouteTableId: props.transitGatewayRouteTable.routeTableId,
32
+ });
33
+ this.node.defaultChild = resource;
34
+ this.transitGatewayRouteTablePropagationId = resource.ref;
35
+ }
36
+ }
37
+ exports.TransitGatewayRouteTablePropagation = TransitGatewayRouteTablePropagation;
38
+ _a = JSII_RTTI_SYMBOL_1;
39
+ TransitGatewayRouteTablePropagation[_a] = { fqn: "@aws-cdk/aws-ec2-alpha.TransitGatewayRouteTablePropagation", version: "2.178.0-alpha.0" };
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNpdC1nYXRld2F5LXJvdXRlLXRhYmxlLXByb3BhZ2F0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsidHJhbnNpdC1nYXRld2F5LXJvdXRlLXRhYmxlLXByb3BhZ2F0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLDJDQUF1RDtBQUN2RCxpREFBNkU7QUFJN0UsOEVBQThFO0FBbUM5RTs7OztHQUlHO0FBQ0gsTUFBYSxtQ0FBb0MsU0FBUSxlQUFRO0lBTS9ELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0M7UUFDdkYsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzs7Ozs7OytDQVBSLG1DQUFtQzs7OztRQVE1QyxtQ0FBbUM7UUFDbkMsSUFBQSx3Q0FBb0IsRUFBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFbEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxnREFBc0MsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ3BFLDBCQUEwQixFQUFFLEtBQUssQ0FBQywyQkFBMkIsQ0FBQywwQkFBMEI7WUFDeEYsMEJBQTBCLEVBQUUsS0FBSyxDQUFDLHdCQUF3QixDQUFDLFlBQVk7U0FDeEUsQ0FBQyxDQUFDO1FBQ0gsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLEdBQUcsUUFBUSxDQUFDO1FBRWxDLElBQUksQ0FBQyxxQ0FBcUMsR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDO0tBQzNEOztBQWxCSCxrRkFtQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJUmVzb3VyY2UsIFJlc291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBDZm5UcmFuc2l0R2F0ZXdheVJvdXRlVGFibGVQcm9wYWdhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBJVHJhbnNpdEdhdGV3YXlBdHRhY2htZW50IH0gZnJvbSAnLi90cmFuc2l0LWdhdGV3YXktYXR0YWNobWVudCc7XG5pbXBvcnQgeyBJVHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlIH0gZnJvbSAnLi90cmFuc2l0LWdhdGV3YXktcm91dGUtdGFibGUnO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIFRyYW5zaXQgR2F0ZXdheSBSb3V0ZSBUYWJsZSBQcm9wYWdhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJVHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlUHJvcGFnYXRpb24gZXh0ZW5kcyBJUmVzb3VyY2Uge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSB0cmFuc2l0IGdhdGV3YXkgcm91dGUgdGFibGUgcHJvcGFnYXRpb24uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zaXRHYXRld2F5Um91dGVUYWJsZVByb3BhZ2F0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb21tb24gcHJvcGVydGllcyBmb3IgYSBUcmFuc2l0IEdhdGV3YXkgUm91dGUgVGFibGUgUHJvcGFnYXRpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlUHJvcGFnYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHRyYW5zaXQgZ2F0ZXdheSByb3V0ZSB0YWJsZSBwcm9wYWdhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zaXRHYXRld2F5VnBjQXR0YWNobWVudDogSVRyYW5zaXRHYXRld2F5QXR0YWNobWVudDtcblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSB0cmFuc2l0IGdhdGV3YXkgcm91dGUgdGFibGUgcHJvcGFnYXRpb24uXG4gICAqL1xuICByZWFkb25seSB0cmFuc2l0R2F0ZXdheVJvdXRlVGFibGU6IElUcmFuc2l0R2F0ZXdheVJvdXRlVGFibGU7XG5cbiAgLyoqXG4gICAqIFBoeXNpY2FsIG5hbWUgb2YgdGhpcyBwcm9wYWdhdGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBc3NpZ25lZCBieSBDbG91ZEZvcm1hdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IHRyYW5zaXRHYXRld2F5Um91dGVUYWJsZVByb3BhZ2F0aW9uTmFtZT86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBUcmFuc2l0IEdhdGV3YXkgUm91dGUgVGFibGUgUHJvcGFnYXRpb24uXG4gKlxuICogQHJlc291cmNlIEFXUzo6RUMyOjpUcmFuc2l0R2F0ZXdheVJvdXRlVGFibGVQcm9wYWdhdGlvblxuICovXG5leHBvcnQgY2xhc3MgVHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlUHJvcGFnYXRpb24gZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElUcmFuc2l0R2F0ZXdheVJvdXRlVGFibGVQcm9wYWdhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHRyYW5zaXQgZ2F0ZXdheSByb3V0ZSB0YWJsZSBwcm9wYWdhdGlvbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB0cmFuc2l0R2F0ZXdheVJvdXRlVGFibGVQcm9wYWdhdGlvbklkOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFRyYW5zaXRHYXRld2F5Um91dGVUYWJsZVByb3BhZ2F0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuVHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlUHJvcGFnYXRpb24odGhpcywgaWQsIHtcbiAgICAgIHRyYW5zaXRHYXRld2F5QXR0YWNobWVudElkOiBwcm9wcy50cmFuc2l0R2F0ZXdheVZwY0F0dGFjaG1lbnQudHJhbnNpdEdhdGV3YXlBdHRhY2htZW50SWQsXG4gICAgICB0cmFuc2l0R2F0ZXdheVJvdXRlVGFibGVJZDogcHJvcHMudHJhbnNpdEdhdGV3YXlSb3V0ZVRhYmxlLnJvdXRlVGFibGVJZCxcbiAgICB9KTtcbiAgICB0aGlzLm5vZGUuZGVmYXVsdENoaWxkID0gcmVzb3VyY2U7XG5cbiAgICB0aGlzLnRyYW5zaXRHYXRld2F5Um91dGVUYWJsZVByb3BhZ2F0aW9uSWQgPSByZXNvdXJjZS5yZWY7XG4gIH1cbn1cbiJdfQ==