@aws-cdk/aws-gamelift-alpha 2.114.0-alpha.0 → 2.115.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.
@@ -10,11 +10,11 @@ import { CfnGameServerGroup } from 'aws-cdk-lib/aws-gamelift';
10
10
  */
11
11
  export interface AutoScalingPolicy {
12
12
  /**
13
- * Length of time, it takes for a new instance to start new game server processes and register with GameLift FleetIQ.
14
- * Specifying a warm-up time can be useful, particularly with game servers that take a long time to start up, because it avoids prematurely starting new instances.
15
- *
16
- * @default no instance warmup duration settled
17
- */
13
+ * Length of time, it takes for a new instance to start new game server processes and register with GameLift FleetIQ.
14
+ * Specifying a warm-up time can be useful, particularly with game servers that take a long time to start up, because it avoids prematurely starting new instances.
15
+ *
16
+ * @default no instance warmup duration settled
17
+ */
18
18
  readonly estimatedInstanceWarmup?: cdk.Duration;
19
19
  /**
20
20
  * Settings for a target-based scaling policy applied to Auto Scaling group.
@@ -32,8 +32,8 @@ export interface AutoScalingPolicy {
32
32
  */
33
33
  export interface InstanceDefinition {
34
34
  /**
35
- * An Amazon EC2 instance type designation.
36
- */
35
+ * An Amazon EC2 instance type designation.
36
+ */
37
37
  readonly instanceType: ec2.InstanceType;
38
38
  /**
39
39
  * Instance weighting that indicates how much this instance type contributes to the total capacity of a game server group.
@@ -51,8 +51,8 @@ export interface InstanceDefinition {
51
51
  */
52
52
  export declare enum DeleteOption {
53
53
  /**
54
- * Terminates the game server group and Amazon EC2 Auto Scaling group only when it has no game servers that are in UTILIZED status.
55
- */
54
+ * Terminates the game server group and Amazon EC2 Auto Scaling group only when it has no game servers that are in UTILIZED status.
55
+ */
56
56
  SAFE_DELETE = "SAFE_DELETE",
57
57
  /**
58
58
  * Terminates the game server group, including all active game servers regardless of their utilization status, and the Amazon EC2 Auto Scaling group.
@@ -68,10 +68,10 @@ export declare enum DeleteOption {
68
68
  */
69
69
  export declare enum BalancingStrategy {
70
70
  /**
71
- * Only Spot Instances are used in the game server group.
72
- * If Spot Instances are unavailable or not viable for game hosting, the game server group provides no hosting capacity until Spot Instances can again be used.
73
- * Until then, no new instances are started, and the existing nonviable Spot Instances are terminated (after current gameplay ends) and are not replaced.
74
- */
71
+ * Only Spot Instances are used in the game server group.
72
+ * If Spot Instances are unavailable or not viable for game hosting, the game server group provides no hosting capacity until Spot Instances can again be used.
73
+ * Until then, no new instances are started, and the existing nonviable Spot Instances are terminated (after current gameplay ends) and are not replaced.
74
+ */
75
75
  SPOT_ONLY = "SPOT_ONLY",
76
76
  /**
77
77
  * Spot Instances are used whenever available in the game server group.
@@ -121,20 +121,20 @@ export interface IGameServerGroup extends cdk.IResource, iam.IGrantable {
121
121
  */
122
122
  export declare abstract class GameServerGroupBase extends cdk.Resource implements IGameServerGroup {
123
123
  /**
124
- * The ARN of the game server group.
125
- */
124
+ * The ARN of the game server group.
125
+ */
126
126
  abstract readonly gameServerGroupArn: string;
127
127
  /**
128
128
  * The ARN of the generated AutoScaling group
129
129
  */
130
130
  abstract readonly autoScalingGroupArn: string;
131
131
  /**
132
- * The name of the game server group.
133
- */
132
+ * The name of the game server group.
133
+ */
134
134
  abstract readonly gameServerGroupName: string;
135
135
  /**
136
- * The principal this GameLift game server group is using.
137
- */
136
+ * The principal this GameLift game server group is using.
137
+ */
138
138
  abstract readonly grantPrincipal: iam.IPrincipal;
139
139
  grant(grantee: iam.IGrantable, ...actions: string[]): iam.Grant;
140
140
  metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric;
@@ -144,20 +144,20 @@ export declare abstract class GameServerGroupBase extends cdk.Resource implement
144
144
  */
145
145
  export interface GameServerGroupAttributes {
146
146
  /**
147
- * The name of the game server group
148
- *
149
- * At least one of `gameServerGroupArn` and `gameServerGroupName` must be provided.
150
- *
151
- * @default derived from `gameServerGroupArn`.
152
- */
147
+ * The name of the game server group
148
+ *
149
+ * At least one of `gameServerGroupArn` and `gameServerGroupName` must be provided.
150
+ *
151
+ * @default derived from `gameServerGroupArn`.
152
+ */
153
153
  readonly gameServerGroupName?: string;
154
154
  /**
155
- * The ARN of the game server group
156
- *
157
- * At least one of `gameServerGroupArn` and `gameServerGroupName` must be provided.
158
- *
159
- * @default derived from `gameServerGroupName`.
160
- */
155
+ * The ARN of the game server group
156
+ *
157
+ * At least one of `gameServerGroupArn` and `gameServerGroupName` must be provided.
158
+ *
159
+ * @default derived from `gameServerGroupName`.
160
+ */
161
161
  readonly gameServerGroupArn?: string;
162
162
  /**
163
163
  * The ARN of the generated AutoScaling group
@@ -177,17 +177,17 @@ export interface GameServerGroupAttributes {
177
177
  */
178
178
  export interface GameServerGroupProps {
179
179
  /**
180
- * A developer-defined identifier for the game server group.
181
- * The name is unique for each Region in each AWS account.
182
- */
180
+ * A developer-defined identifier for the game server group.
181
+ * The name is unique for each Region in each AWS account.
182
+ */
183
183
  readonly gameServerGroupName: string;
184
184
  /**
185
- * The IAM role that allows Amazon GameLift to access your Amazon EC2 Auto Scaling groups.
186
- *
187
- * @see https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/gsg-iam-permissions-roles.html
188
- *
189
- * @default - a role will be created with default trust to Gamelift and Autoscaling service principal with a default policy `GameLiftGameServerGroupPolicy` attached.
190
- */
185
+ * The IAM role that allows Amazon GameLift to access your Amazon EC2 Auto Scaling groups.
186
+ *
187
+ * @see https://docs.aws.amazon.com/gamelift/latest/fleetiqguide/gsg-iam-permissions-roles.html
188
+ *
189
+ * @default - a role will be created with default trust to Gamelift and Autoscaling service principal with a default policy `GameLiftGameServerGroupPolicy` attached.
190
+ */
191
191
  readonly role?: iam.IRole;
192
192
  /**
193
193
  * The minimum number of instances allowed in the Amazon EC2 Auto Scaling group.
@@ -201,12 +201,12 @@ export interface GameServerGroupProps {
201
201
  */
202
202
  readonly minSize?: number;
203
203
  /**
204
- * The maximum number of instances allowed in the Amazon EC2 Auto Scaling group. During automatic scaling events, GameLift FleetIQ and EC2 do not scale up the group above this maximum.
205
- *
206
- * After the Auto Scaling group is created, update this value directly in the Auto Scaling group using the AWS console or APIs.
207
- *
208
- * @default the default is 1
209
- */
204
+ * The maximum number of instances allowed in the Amazon EC2 Auto Scaling group. During automatic scaling events, GameLift FleetIQ and EC2 do not scale up the group above this maximum.
205
+ *
206
+ * After the Auto Scaling group is created, update this value directly in the Auto Scaling group using the AWS console or APIs.
207
+ *
208
+ * @default the default is 1
209
+ */
210
210
  readonly maxSize?: number;
211
211
  /**
212
212
  * The VPC network to place the game server group in.
@@ -312,20 +312,20 @@ export declare class GameServerGroup extends GameServerGroupBase {
312
312
  */
313
313
  readonly autoScalingGroupArn: string;
314
314
  /**
315
- * The IAM role that allows Amazon GameLift to access your Amazon EC2 Auto Scaling groups.
316
- */
315
+ * The IAM role that allows Amazon GameLift to access your Amazon EC2 Auto Scaling groups.
316
+ */
317
317
  readonly role: iam.IRole;
318
318
  /**
319
- * The principal this GameLift game server group is using.
320
- */
319
+ * The principal this GameLift game server group is using.
320
+ */
321
321
  readonly grantPrincipal: iam.IPrincipal;
322
322
  /**
323
323
  * The VPC network to place the game server group in.
324
324
  */
325
325
  readonly vpc: ec2.IVpc;
326
326
  /**
327
- * The game server group's subnets.
328
- */
327
+ * The game server group's subnets.
328
+ */
329
329
  readonly vpcSubnets?: ec2.SubnetSelection;
330
330
  constructor(scope: Construct, id: string, props: GameServerGroupProps);
331
331
  protected parseLaunchTemplate(props: GameServerGroupProps): CfnGameServerGroup.LaunchTemplateProperty;
@@ -16,8 +16,8 @@ const aws_gamelift_1 = require("aws-cdk-lib/aws-gamelift");
16
16
  var DeleteOption;
17
17
  (function (DeleteOption) {
18
18
  /**
19
- * Terminates the game server group and Amazon EC2 Auto Scaling group only when it has no game servers that are in UTILIZED status.
20
- */
19
+ * Terminates the game server group and Amazon EC2 Auto Scaling group only when it has no game servers that are in UTILIZED status.
20
+ */
21
21
  DeleteOption["SAFE_DELETE"] = "SAFE_DELETE";
22
22
  /**
23
23
  * Terminates the game server group, including all active game servers regardless of their utilization status, and the Amazon EC2 Auto Scaling group.
@@ -34,10 +34,10 @@ var DeleteOption;
34
34
  var BalancingStrategy;
35
35
  (function (BalancingStrategy) {
36
36
  /**
37
- * Only Spot Instances are used in the game server group.
38
- * If Spot Instances are unavailable or not viable for game hosting, the game server group provides no hosting capacity until Spot Instances can again be used.
39
- * Until then, no new instances are started, and the existing nonviable Spot Instances are terminated (after current gameplay ends) and are not replaced.
40
- */
37
+ * Only Spot Instances are used in the game server group.
38
+ * If Spot Instances are unavailable or not viable for game hosting, the game server group provides no hosting capacity until Spot Instances can again be used.
39
+ * Until then, no new instances are started, and the existing nonviable Spot Instances are terminated (after current gameplay ends) and are not replaced.
40
+ */
41
41
  BalancingStrategy["SPOT_ONLY"] = "SPOT_ONLY";
42
42
  /**
43
43
  * Spot Instances are used whenever available in the game server group.
@@ -75,7 +75,7 @@ class GameServerGroupBase extends cdk.Resource {
75
75
  }
76
76
  exports.GameServerGroupBase = GameServerGroupBase;
77
77
  _a = JSII_RTTI_SYMBOL_1;
78
- GameServerGroupBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.GameServerGroupBase", version: "2.114.0-alpha.0" };
78
+ GameServerGroupBase[_a] = { fqn: "@aws-cdk/aws-gamelift-alpha.GameServerGroupBase", version: "2.115.0-alpha.0" };
79
79
  /**
80
80
  * Creates a GameLift FleetIQ game server group for managing game hosting on a collection of Amazon EC2 instances for game hosting.
81
81
  * This operation creates the game server group, creates an Auto Scaling group in your AWS account, and establishes a link between the two groups.
@@ -267,5 +267,5 @@ class GameServerGroup extends GameServerGroupBase {
267
267
  }
268
268
  exports.GameServerGroup = GameServerGroup;
269
269
  _b = JSII_RTTI_SYMBOL_1;
270
- GameServerGroup[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.GameServerGroup", version: "2.114.0-alpha.0" };
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtZS1zZXJ2ZXItZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnYW1lLXNlcnZlci1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyx3Q0FBd0M7QUFFeEMsMkRBQThEO0FBNkM5RDs7O0dBR0c7QUFDSCxJQUFZLFlBYVg7QUFiRCxXQUFZLFlBQVk7SUFDdEI7O1FBRUk7SUFDSiwyQ0FBMkIsQ0FBQTtJQUMzQjs7T0FFRztJQUNILDZDQUE2QixDQUFBO0lBQzdCOztPQUVHO0lBQ0gsaUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQWJXLFlBQVksNEJBQVosWUFBWSxRQWF2QjtBQUNEOztHQUVHO0FBQ0gsSUFBWSxpQkFtQlg7QUFuQkQsV0FBWSxpQkFBaUI7SUFDM0I7Ozs7U0FJSztJQUNMLDRDQUF1QixDQUFBO0lBQ3ZCOzs7O09BSUc7SUFDSCxzREFBaUMsQ0FBQTtJQUNqQzs7O09BR0c7SUFDSCxzREFBaUMsQ0FBQTtBQUVuQyxDQUFDLEVBbkJXLGlCQUFpQixpQ0FBakIsaUJBQWlCLFFBbUI1QjtBQXFDRDs7R0FFRztBQUNILE1BQXNCLG1CQUFvQixTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBc0JyRCxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztLQUNKO0lBRU0sTUFBTSxDQUFDLFVBQWtCLEVBQUUsS0FBZ0M7UUFDaEUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDM0IsU0FBUyxFQUFFLGNBQWM7WUFDekIsVUFBVSxFQUFFLFVBQVU7WUFDdEIsYUFBYSxFQUFF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LEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtnQkFDeEQsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTthQUN4RCxDQUFDO1FBQ0osQ0FBQztLQUNGOztBQXBMSCwwQ0FxTEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ2ZuR2FtZVNlcnZlckdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdhbWVsaWZ0JztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBpbnRlbGxpZ2VudCBhdXRvbWF0aWMgc2NhbGluZyB0aGF0IHVzZXMgdGFyZ2V0IHRyYWNraW5nLlxuICogQWZ0ZXIgdGhlIEF1dG8gU2NhbGluZyBncm91cCBpcyBjcmVhdGVkLCBhbGwgdXBkYXRlcyB0byBBdXRvIFNjYWxpbmcgcG9saWNpZXMsIGluY2x1ZGluZyBjaGFuZ2luZyB0aGlzIHBvbGljeSBhbmQgYWRkaW5nIG9yIHJlbW92aW5nIG90aGVyIHBvbGljaWVzLCBpcyBkb25lIGRpcmVjdGx5IG9uIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b1NjYWxpbmdQb2xpY3kge1xuICAvKipcbiAgICAgKiBMZW5ndGggb2YgdGltZSwgaXQgdGFrZXMgZm9yIGEgbmV3IGluc3RhbmNlIHRvIHN0YXJ0IG5ldyBnYW1lIHNlcnZlciBwcm9jZXNzZXMgYW5kIHJlZ2lzdGVyIHdpdGggR2FtZUxpZnQgRmxlZXRJUS5cbiAgICAgKiBTcGVjaWZ5aW5nIGEgd2FybS11cCB0aW1lIGNhbiBiZSB1c2VmdWwsIHBhcnRpY3VsYXJseSB3aXRoIGdhbWUgc2VydmVycyB0aGF0IHRha2UgYSBsb25nIHRpbWUgdG8gc3RhcnQgdXAsIGJlY2F1c2UgaXQgYXZvaWRzIHByZW1hdHVyZWx5IHN0YXJ0aW5nIG5ldyBpbnN0YW5jZXMuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBubyBpbnN0YW5jZSB3YXJtdXAgZHVyYXRpb24gc2V0dGxlZFxuICAgICAqL1xuICByZWFkb25seSBlc3RpbWF0ZWRJbnN0YW5jZVdhcm11cD86IGNkay5EdXJhdGlvbjtcblxuICAvKipcbiAgICogU2V0dGluZ3MgZm9yIGEgdGFyZ2V0LWJhc2VkIHNjYWxpbmcgcG9saWN5IGFwcGxpZWQgdG8gQXV0byBTY2FsaW5nIGdyb3VwLlxuICAgKiBUaGVzZSBzZXR0aW5ncyBhcmUgdXNlZCB0byBjcmVhdGUgYSB0YXJnZXQtYmFzZWQgcG9saWN5IHRoYXQgdHJhY2tzIHRoZSBHYW1lTGlmdCBGbGVldElRIG1ldHJpYyBgUGVyY2VudFV0aWxpemVkR2FtZVNlcnZlcnNgIGFuZCBzcGVjaWZpZXMgYSB0YXJnZXQgdmFsdWUgZm9yIHRoZSBtZXRyaWMuXG4gICAqXG4gICAqIEFzIHBsYXllciB1c2FnZSBjaGFuZ2VzLCB0aGUgcG9saWN5IHRyaWdnZXJzIHRvIGFkanVzdCB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAgY2FwYWNpdHkgc28gdGhhdCB0aGUgbWV0cmljIHJldHVybnMgdG8gdGhlIHRhcmdldCB2YWx1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldFRyYWNraW5nQ29uZmlndXJhdGlvbjogbnVtYmVyO1xuXG59XG4vKipcbiAqIEFuIGFsbG93ZWQgaW5zdGFuY2UgdHlwZSBmb3IgYSBnYW1lIHNlcnZlciBncm91cC5cbiAqIEFsbCBnYW1lIHNlcnZlciBncm91cHMgbXVzdCBoYXZlIGF0IGxlYXN0IHR3byBpbnN0YW5jZSB0eXBlcyBkZWZpbmVkIGZvciBpdC5cbiAqIEdhbWVMaWZ0IEZsZWV0SVEgcGVyaW9kaWNhbGx5IGV2YWx1YXRlcyBlYWNoIGRlZmluZWQgaW5zdGFuY2UgdHlwZSBmb3IgdmlhYmlsaXR5LlxuICogSXQgdGhlbiB1cGRhdGVzIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgd2l0aCB0aGUgbGlzdCBvZiB2aWFibGUgaW5zdGFuY2UgdHlwZXMuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VEZWZpbml0aW9uIHtcbiAgLyoqXG4gICAgICogQW4gQW1hem9uIEVDMiBpbnN0YW5jZSB0eXBlIGRlc2lnbmF0aW9uLlxuICAgICAqL1xuICByZWFkb25seSBpbnN0YW5jZVR5cGU6IGVjMi5JbnN0YW5jZVR5cGU7XG4gIC8qKlxuICAgKiBJbnN0YW5jZSB3ZWlnaHRpbmcgdGhhdCBpbmRpY2F0ZXMgaG93IG11Y2ggdGhpcyBpbnN0YW5jZSB0eXBlIGNvbnRyaWJ1dGVzIHRvIHRoZSB0b3RhbCBjYXBhY2l0eSBvZiBhIGdhbWUgc2VydmVyIGdyb3VwLlxuICAgKiBJbnN0YW5jZSB3ZWlnaHRzIGFyZSB1c2VkIGJ5IEdhbWVMaWZ0IEZsZWV0SVEgdG8gY2FsY3VsYXRlIHRoZSBpbnN0YW5jZSB0eXBlJ3MgY29zdCBwZXIgdW5pdCBob3VyIGFuZCBiZXR0ZXIgaWRlbnRpZnkgdGhlIG1vc3QgY29zdC1lZmZlY3RpdmUgb3B0aW9ucy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9hc2ctaW5zdGFuY2Utd2VpZ2h0aW5nLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgZGVmYXVsdCB2YWx1ZSBpcyAxXG4gICAqL1xuICByZWFkb25seSB3ZWlnaHQ/OiBudW1iZXI7XG59XG4vKipcbiAqIFRoZSB0eXBlIG9mIGRlbGV0ZSB0byBwZXJmb3JtLlxuICogVG8gZGVsZXRlIGEgZ2FtZSBzZXJ2ZXIgZ3JvdXAsIHNwZWNpZnkgdGhlIERlbGV0ZU9wdGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gRGVsZXRlT3B0aW9uIHtcbiAgLyoqXG4gICAgKiBUZXJtaW5hdGVzIHRoZSBnYW1lIHNlcnZlciBncm91cCBhbmQgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgZ3JvdXAgb25seSB3aGVuIGl0IGhhcyBubyBnYW1lIHNlcnZlcnMgdGhhdCBhcmUgaW4gVVRJTElaRUQgc3RhdHVzLlxuICAgICovXG4gIFNBRkVfREVMRVRFID0gJ1NBRkVfREVMRVRFJyxcbiAgLyoqXG4gICAqIFRlcm1pbmF0ZXMgdGhlIGdhbWUgc2VydmVyIGdyb3VwLCBpbmNsdWRpbmcgYWxsIGFjdGl2ZSBnYW1lIHNlcnZlcnMgcmVnYXJkbGVzcyBvZiB0aGVpciB1dGlsaXphdGlvbiBzdGF0dXMsIGFuZCB0aGUgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gICAqL1xuICBGT1JDRV9ERUxFVEUgPSAnRk9SQ0VfREVMRVRFJyxcbiAgLyoqXG4gICAqIERvZXMgYSBzYWZlIGRlbGV0ZSBvZiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAgYnV0IHJldGFpbnMgdGhlIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGdyb3VwIGFzIGlzLlxuICAgKi9cbiAgUkVUQUlOID0gJ1JFVEFJTicsXG59XG4vKipcbiAqIEluZGljYXRlcyBob3cgR2FtZUxpZnQgRmxlZXRJUSBiYWxhbmNlcyB0aGUgdXNlIG9mIFNwb3QgSW5zdGFuY2VzIGFuZCBPbi1EZW1hbmQgSW5zdGFuY2VzIGluIHRoZSBnYW1lIHNlcnZlciBncm91cC5cbiAqL1xuZXhwb3J0IGVudW0gQmFsYW5jaW5nU3RyYXRlZ3kge1xuICAvKipcbiAgICAgKiBPbmx5IFNwb3QgSW5zdGFuY2VzIGFyZSB1c2VkIGluIHRoZSBnYW1lIHNlcnZlciBncm91cC5cbiAgICAgKiBJZiBTcG90IEluc3RhbmNlcyBhcmUgdW5hdmFpbGFibGUgb3Igbm90IHZpYWJsZSBmb3IgZ2FtZSBob3N0aW5nLCB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAgcHJvdmlkZXMgbm8gaG9zdGluZyBjYXBhY2l0eSB1bnRpbCBTcG90IEluc3RhbmNlcyBjYW4gYWdhaW4gYmUgdXNlZC5cbiAgICAgKiBVbnRpbCB0aGVuLCBubyBuZXcgaW5zdGFuY2VzIGFyZSBzdGFydGVkLCBhbmQgdGhlIGV4aXN0aW5nIG5vbnZpYWJsZSBTcG90IEluc3RhbmNlcyBhcmUgdGVybWluYXRlZCAoYWZ0ZXIgY3VycmVudCBnYW1lcGxheSBlbmRzKSBhbmQgYXJlIG5vdCByZXBsYWNlZC5cbiAgICAgKi9cbiAgU1BPVF9PTkxZID0gJ1NQT1RfT05MWScsXG4gIC8qKlxuICAgKiBTcG90IEluc3RhbmNlcyBhcmUgdXNlZCB3aGVuZXZlciBhdmFpbGFibGUgaW4gdGhlIGdhbWUgc2VydmVyIGdyb3VwLlxuICAgKiBJZiBTcG90IEluc3RhbmNlcyBhcmUgdW5hdmFpbGFibGUsIHRoZSBnYW1lIHNlcnZlciBncm91cCBjb250aW51ZXMgdG8gcHJvdmlkZSBob3N0aW5nIGNhcGFjaXR5IGJ5IGZhbGxpbmcgYmFjayB0byBPbi1EZW1hbmQgSW5zdGFuY2VzLlxuICAgKiBFeGlzdGluZyBub252aWFibGUgU3BvdCBJbnN0YW5jZXMgYXJlIHRlcm1pbmF0ZWQgKGFmdGVyIGN1cnJlbnQgZ2FtZXBsYXkgZW5kcykgYW5kIGFyZSByZXBsYWNlZCB3aXRoIG5ldyBPbi1EZW1hbmQgSW5zdGFuY2VzLlxuICAgKi9cbiAgU1BPVF9QUkVGRVJSRUQgPSAnU1BPVF9QUkVGRVJSRUQnLFxuICAvKipcbiAgICogT25seSBPbi1EZW1hbmQgSW5zdGFuY2VzIGFyZSB1c2VkIGluIHRoZSBnYW1lIHNlcnZlciBncm91cC5cbiAgICogTm8gU3BvdCBJbnN0YW5jZXMgYXJlIHVzZWQsIGV2ZW4gd2hlbiBhdmFpbGFibGUsIHdoaWxlIHRoaXMgYmFsYW5jaW5nIHN0cmF0ZWd5IGlzIGluIGZvcmNlLlxuICAgKi9cbiAgT05fREVNQU5EX09OTFkgPSAnT05fREVNQU5EX09OTFknLFxuXG59XG4vKipcbiAqIFJlcHJlc2VudCBhIEdhbWVMaWZ0IEZsZWV0SVEgZ2FtZSBzZXJ2ZXIgZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUdhbWVTZXJ2ZXJHcm91cCBleHRlbmRzIGNkay5JUmVzb3VyY2UsIGlhbS5JR3JhbnRhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhbWUgc2VydmVyIGdyb3VwLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBnYW1lU2VydmVyR3JvdXBBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2VuZXJhdGVkIEF1dG9TY2FsaW5nIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9TY2FsaW5nR3JvdXBBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhbWUgc2VydmVyIGdyb3VwXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGdhbWVTZXJ2ZXJHcm91cE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogR3JhbnQgdGhlIGBncmFudGVlYCBpZGVudGl0eSBwZXJtaXNzaW9ucyB0byBwZXJmb3JtIGBhY3Rpb25zYC5cbiAgICovXG4gIGdyYW50KGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlLCAuLi5hY3Rpb25zOiBzdHJpbmdbXSk6IGlhbS5HcmFudDtcblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgZmxlZXQuXG4gICAqL1xuICBtZXRyaWMobWV0cmljTmFtZTogc3RyaW5nLCBwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xufVxuXG4vKipcbiAqIEJhc2UgY2xhc3MgZm9yIG5ldyBhbmQgaW1wb3J0ZWQgR2FtZUxpZnQgRmxlZXRJUSBnYW1lIHNlcnZlciBncm91cC5cbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEdhbWVTZXJ2ZXJHcm91cEJhc2UgZXh0ZW5kcyBjZGsuUmVzb3VyY2UgaW1wbGVtZW50cyBJR2FtZVNlcnZlckdyb3VwIHtcblxuICAvKipcbiAgKiBUaGUgQVJOIG9mIHRoZSBnYW1lIHNlcnZlciBncm91cC5cbiAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdhbWVTZXJ2ZXJHcm91cEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBnZW5lcmF0ZWQgQXV0b1NjYWxpbmcgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCByZWFkb25seSBhdXRvU2NhbGluZ0dyb3VwQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICogVGhlIG5hbWUgb2YgdGhlIGdhbWUgc2VydmVyIGdyb3VwLlxuICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZ2FtZVNlcnZlckdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAqIFRoZSBwcmluY2lwYWwgdGhpcyBHYW1lTGlmdCBnYW1lIHNlcnZlciBncm91cCBpcyB1c2luZy5cbiAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcblxuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuZ2FtZVNlcnZlckdyb3VwQXJuXSxcbiAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiBhY3Rpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0dhbWVMaWZ0JyxcbiAgICAgIG1ldHJpY05hbWU6IG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIEdhbWVTZXJ2ZXJHcm91cEFybjogdGhpcy5nYW1lU2VydmVyR3JvdXBBcm4sXG4gICAgICB9LFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSkuYXR0YWNoVG8odGhpcyk7XG4gIH1cblxufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgYSBHYW1lU2VydmVyR3JvdXAgY29udGVudCBkZWZpbmVkIG91dHNpZGUgb2YgdGhpcyBzdGFjay5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYW1lU2VydmVyR3JvdXBBdHRyaWJ1dGVzIHtcblxuICAvKipcbiAgICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXBcbiAgICAgKlxuICAgICAqIEF0IGxlYXN0IG9uZSBvZiBgZ2FtZVNlcnZlckdyb3VwQXJuYCBhbmQgYGdhbWVTZXJ2ZXJHcm91cE5hbWVgIG11c3QgYmUgcHJvdmlkZWQuXG4gICAgICpcbiAgICAgKiBAZGVmYXVsdCBkZXJpdmVkIGZyb20gYGdhbWVTZXJ2ZXJHcm91cEFybmAuXG4gICAgICovXG4gIHJlYWRvbmx5IGdhbWVTZXJ2ZXJHcm91cE5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgICAqIFRoZSBBUk4gb2YgdGhlIGdhbWUgc2VydmVyIGdyb3VwXG4gICAgICpcbiAgICAgKiBBdCBsZWFzdCBvbmUgb2YgYGdhbWVTZXJ2ZXJHcm91cEFybmAgYW5kIGBnYW1lU2VydmVyR3JvdXBOYW1lYCBtdXN0IGJlIHByb3ZpZGVkLlxuICAgICAqXG4gICAgICogQGRlZmF1bHQgZGVyaXZlZCBmcm9tIGBnYW1lU2VydmVyR3JvdXBOYW1lYC5cbiAgICAgKi9cbiAgcmVhZG9ubHkgZ2FtZVNlcnZlckdyb3VwQXJuPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBnZW5lcmF0ZWQgQXV0b1NjYWxpbmcgZ3JvdXBcbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGltcG9ydGVkIGdhbWUgc2VydmVyIGdyb3VwIGRvZXMgbm90IGhhdmUgYXV0b3NjYWxpbmcgZ3JvdXAgaW5mb3JtYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGF1dG9TY2FsaW5nR3JvdXBBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIHRoYXQgYWxsb3dzIEFtYXpvbiBHYW1lTGlmdCB0byBhY2Nlc3MgeW91ciBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBpbXBvcnRlZCBnYW1lIHNlcnZlciBncm91cCBjYW5ub3QgYmUgZ3JhbnRlZCBhY2Nlc3MgdG8gb3RoZXIgcmVzb3VyY2VzIGFzIGFuIGBpYW0uSUdyYW50YWJsZWAuXG4gICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgbmV3IEdhbWVsaWZ0IEZsZWV0SVEgR2FtZSBzZXJ2ZXIgZ3JvdXBcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHYW1lU2VydmVyR3JvdXBQcm9wcyB7XG4gIC8qKlxuICAgICAqIEEgZGV2ZWxvcGVyLWRlZmluZWQgaWRlbnRpZmllciBmb3IgdGhlIGdhbWUgc2VydmVyIGdyb3VwLlxuICAgICAqIFRoZSBuYW1lIGlzIHVuaXF1ZSBmb3IgZWFjaCBSZWdpb24gaW4gZWFjaCBBV1MgYWNjb3VudC5cbiAgICAgKi9cbiAgcmVhZG9ubHkgZ2FtZVNlcnZlckdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgICogVGhlIElBTSByb2xlIHRoYXQgYWxsb3dzIEFtYXpvbiBHYW1lTGlmdCB0byBhY2Nlc3MgeW91ciBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cHMuXG4gICAgKlxuICAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2ZsZWV0aXFndWlkZS9nc2ctaWFtLXBlcm1pc3Npb25zLXJvbGVzLmh0bWxcbiAgICAqXG4gICAgKiBAZGVmYXVsdCAtIGEgcm9sZSB3aWxsIGJlIGNyZWF0ZWQgd2l0aCBkZWZhdWx0IHRydXN0IHRvIEdhbWVsaWZ0IGFuZCBBdXRvc2NhbGluZyBzZXJ2aWNlIHByaW5jaXBhbCB3aXRoIGEgZGVmYXVsdCBwb2xpY3kgYEdhbWVMaWZ0R2FtZVNlcnZlckdyb3VwUG9saWN5YCBhdHRhY2hlZC5cbiAgICAqL1xuICByZWFkb25seSByb2xlPzogaWFtLklSb2xlO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSBudW1iZXIgb2YgaW5zdGFuY2VzIGFsbG93ZWQgaW4gdGhlIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGdyb3VwLlxuICAgKiBEdXJpbmcgYXV0b21hdGljIHNjYWxpbmcgZXZlbnRzLCBHYW1lTGlmdCBGbGVldElRIGFuZCBBbWF6b24gRUMyIGRvIG5vdCBzY2FsZSBkb3duIHRoZSBncm91cCBiZWxvdyB0aGlzIG1pbmltdW0uXG4gICAqXG4gICAqIEluIHByb2R1Y3Rpb24sIHRoaXMgdmFsdWUgc2hvdWxkIGJlIHNldCB0byBhdCBsZWFzdCAxLlxuICAgKlxuICAgKiBBZnRlciB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIGlzIGNyZWF0ZWQsIHVwZGF0ZSB0aGlzIHZhbHVlIGRpcmVjdGx5IGluIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgdXNpbmcgdGhlIEFXUyBjb25zb2xlIG9yIEFQSXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IGlzIDBcbiAgICovXG4gIHJlYWRvbmx5IG1pblNpemU/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5zdGFuY2VzIGFsbG93ZWQgaW4gdGhlIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGdyb3VwLiBEdXJpbmcgYXV0b21hdGljIHNjYWxpbmcgZXZlbnRzLCBHYW1lTGlmdCBGbGVldElRIGFuZCBFQzIgZG8gbm90IHNjYWxlIHVwIHRoZSBncm91cCBhYm92ZSB0aGlzIG1heGltdW0uXG4gICAgKlxuICAgICogQWZ0ZXIgdGhlIEF1dG8gU2NhbGluZyBncm91cCBpcyBjcmVhdGVkLCB1cGRhdGUgdGhpcyB2YWx1ZSBkaXJlY3RseSBpbiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIHVzaW5nIHRoZSBBV1MgY29uc29sZSBvciBBUElzLlxuICAgICpcbiAgICAqIEBkZWZhdWx0IHRoZSBkZWZhdWx0IGlzIDFcbiAgICAqL1xuICByZWFkb25seSBtYXhTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG5ldHdvcmsgdG8gcGxhY2UgdGhlIGdhbWUgc2VydmVyIGdyb3VwIGluLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBhbGwgR2FtZUxpZnQgRmxlZXRJUS1zdXBwb3J0ZWQgQXZhaWxhYmlsaXR5IFpvbmVzIGFyZSB1c2VkLlxuICAgKlxuICAgKiBZb3UgY2FuIHVzZSB0aGlzIHBhcmFtZXRlciB0byBzcGVjaWZ5IFZQQ3MgdGhhdCB5b3UndmUgc2V0IHVwLlxuICAgKlxuICAgKiBUaGlzIHByb3BlcnR5IGNhbm5vdCBiZSB1cGRhdGVkIGFmdGVyIHRoZSBnYW1lIHNlcnZlciBncm91cCBpcyBjcmVhdGVkLFxuICAgKiBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgQXV0byBTY2FsaW5nIGdyb3VwIHdpbGwgYWx3YXlzIHVzZSB0aGUgcHJvcGVydHkgdmFsdWUgdGhhdCBpcyBzZXQgd2l0aCB0aGlzIHJlcXVlc3QsXG4gICAqIGV2ZW4gaWYgdGhlIEF1dG8gU2NhbGluZyBncm91cCBpcyB1cGRhdGVkIGRpcmVjdGx5LlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogR2FtZSBzZXJ2ZXIgZ3JvdXAgc3VibmV0IHNlbGVjdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCBhbGwgR2FtZUxpZnQgRmxlZXRJUS1zdXBwb3J0ZWQgQXZhaWxhYmlsaXR5IFpvbmVzIGFyZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjU3VibmV0cz86IGVjMi5TdWJuZXRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBzZXQgb2YgQW1hem9uIEVDMiBpbnN0YW5jZSB0eXBlcyB0aGF0IEdhbWVMaWZ0IEZsZWV0SVEgY2FuIHVzZSB3aGVuIGJhbGFuY2luZyBhbmQgYXV0b21hdGljYWxseSBzY2FsaW5nIGluc3RhbmNlcyBpbiB0aGUgY29ycmVzcG9uZGluZyBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gICAqL1xuICByZWFkb25seSBpbnN0YW5jZURlZmluaXRpb25zOiBJbnN0YW5jZURlZmluaXRpb25bXTtcblxuICAvKipcbiAgICogVGhlIEFtYXpvbiBFQzIgbGF1bmNoIHRlbXBsYXRlIHRoYXQgY29udGFpbnMgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBhbmQgZ2FtZSBzZXJ2ZXIgY29kZSB0byBiZSBkZXBsb3llZCB0byBhbGwgaW5zdGFuY2VzIGluIHRoZSBnYW1lIHNlcnZlciBncm91cC5cbiAgICogQWZ0ZXIgdGhlIEF1dG8gU2NhbGluZyBncm91cCBpcyBjcmVhdGVkLCB1cGRhdGUgdGhpcyB2YWx1ZSBkaXJlY3RseSBpbiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIHVzaW5nIHRoZSBBV1MgY29uc29sZSBvciBBUElzLlxuICAgKlxuICAgKiBOT1RFOlxuICAgKiBJZiB5b3Ugc3BlY2lmeSBuZXR3b3JrIGludGVyZmFjZXMgaW4geW91ciBsYXVuY2ggdGVtcGxhdGUsIHlvdSBtdXN0IGV4cGxpY2l0bHkgc2V0IHRoZSBwcm9wZXJ0eSBBc3NvY2lhdGVQdWJsaWNJcEFkZHJlc3MgdG8gYHRydWVgLlxuICAgKiBJZiBubyBuZXR3b3JrIGludGVyZmFjZSBpcyBzcGVjaWZpZWQgaW4gdGhlIGxhdW5jaCB0ZW1wbGF0ZSwgR2FtZUxpZnQgRmxlZXRJUSB1c2VzIHlvdXIgYWNjb3VudCdzIGRlZmF1bHQgVlBDLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL2NyZWF0ZS1sYXVuY2gtdGVtcGxhdGUuaHRtbFxuICAgKi9cbiAgcmVhZG9ubHkgbGF1bmNoVGVtcGxhdGU6IGVjMi5JTGF1bmNoVGVtcGxhdGU7XG5cbiAgLyoqXG4gICAqIEEgZmxhZyB0aGF0IGluZGljYXRlcyB3aGV0aGVyIGluc3RhbmNlcyBpbiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAgYXJlIHByb3RlY3RlZCBmcm9tIGVhcmx5IHRlcm1pbmF0aW9uLlxuICAgKiBVbnByb3RlY3RlZCBpbnN0YW5jZXMgdGhhdCBoYXZlIGFjdGl2ZSBnYW1lIHNlcnZlcnMgcnVubmluZyBtaWdodCBiZSB0ZXJtaW5hdGVkIGR1cmluZyBhIHNjYWxlLWRvd24gZXZlbnQsIGNhdXNpbmcgcGxheWVycyB0byBiZSBkcm9wcGVkIGZyb20gdGhlIGdhbWUuXG4gICAqIFByb3RlY3RlZCBpbnN0YW5jZXMgY2Fubm90IGJlIHRlcm1pbmF0ZWQgd2hpbGUgdGhlcmUgYXJlIGFjdGl2ZSBnYW1lIHNlcnZlcnMgcnVubmluZyBleGNlcHQgaW4gdGhlIGV2ZW50IG9mIGEgZm9yY2VkIGdhbWUgc2VydmVyIGdyb3VwIGRlbGV0aW9uLlxuICAgKlxuICAgKiBBbiBleGNlcHRpb24gdG8gdGhpcyBpcyB3aXRoIFNwb3QgSW5zdGFuY2VzLCB3aGljaCBjYW4gYmUgdGVybWluYXRlZCBieSBBV1MgcmVnYXJkbGVzcyBvZiBwcm90ZWN0aW9uIHN0YXR1cy5cbiAgICpcbiAgICogQGRlZmF1bHQgZ2FtZSBzZXJ2ZXJzIHJ1bm5pbmcgbWlnaHQgYmUgdGVybWluYXRlZCBkdXJpbmcgYSBzY2FsZS1kb3duIGV2ZW50XG4gICAqL1xuICByZWFkb25seSBwcm90ZWN0R2FtZVNlcnZlcj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gc2V0dGluZ3MgdG8gZGVmaW5lIGEgc2NhbGluZyBwb2xpY3kgZm9yIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgdGhhdCBpcyBvcHRpbWl6ZWQgZm9yIGdhbWUgaG9zdGluZy5cbiAgICogVGhlIHNjYWxpbmcgcG9saWN5IHVzZXMgdGhlIG1ldHJpYyBgUGVyY2VudFV0aWxpemVkR2FtZVNlcnZlcnNgIHRvIG1haW50YWluIGEgYnVmZmVyIG9mIGlkbGUgZ2FtZSBzZXJ2ZXJzIHRoYXQgY2FuIGltbWVkaWF0ZWx5IGFjY29tbW9kYXRlIG5ldyBnYW1lcyBhbmQgcGxheWVycy5cbiAgICpcbiAgICogQWZ0ZXIgdGhlIEF1dG8gU2NhbGluZyBncm91cCBpcyBjcmVhdGVkLCB1cGRhdGUgdGhpcyB2YWx1ZSBkaXJlY3RseSBpbiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIHVzaW5nIHRoZSBBV1MgY29uc29sZSBvciBBUElzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBubyBhdXRvc2NhbGluZyBwb2xpY3kgc2V0dGxlZFxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b1NjYWxpbmdQb2xpY3k/OiBBdXRvU2NhbGluZ1BvbGljeTtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgZGVsZXRlIHRvIHBlcmZvcm0uIFRvIGRlbGV0ZSBhIGdhbWUgc2VydmVyIGdyb3VwLCBzcGVjaWZ5IHRoZSBEZWxldGVPcHRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgU0FGRV9ERUxFVEVcbiAgICovXG4gIHJlYWRvbmx5IGRlbGV0ZU9wdGlvbj86IERlbGV0ZU9wdGlvbjtcblxuICAvKipcbiAgICAqIEluZGljYXRlcyBob3cgR2FtZUxpZnQgRmxlZXRJUSBiYWxhbmNlcyB0aGUgdXNlIG9mIFNwb3QgSW5zdGFuY2VzIGFuZCBPbi1EZW1hbmQgSW5zdGFuY2VzIGluIHRoZSBnYW1lIHNlcnZlciBncm91cC5cbiAgICAqXG4gICAgKiBAZGVmYXVsdCBTUE9UX1BSRUZFUlJFRFxuICAgICovXG4gIHJlYWRvbmx5IGJhbGFuY2luZ1N0cmF0ZWd5PzogQmFsYW5jaW5nU3RyYXRlZ3k7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIEdhbWVMaWZ0IEZsZWV0SVEgZ2FtZSBzZXJ2ZXIgZ3JvdXAgZm9yIG1hbmFnaW5nIGdhbWUgaG9zdGluZyBvbiBhIGNvbGxlY3Rpb24gb2YgQW1hem9uIEVDMiBpbnN0YW5jZXMgZm9yIGdhbWUgaG9zdGluZy5cbiAqIFRoaXMgb3BlcmF0aW9uIGNyZWF0ZXMgdGhlIGdhbWUgc2VydmVyIGdyb3VwLCBjcmVhdGVzIGFuIEF1dG8gU2NhbGluZyBncm91cCBpbiB5b3VyIEFXUyBhY2NvdW50LCBhbmQgZXN0YWJsaXNoZXMgYSBsaW5rIGJldHdlZW4gdGhlIHR3byBncm91cHMuXG4gKiBZb3UgY2FuIHZpZXcgdGhlIHN0YXR1cyBvZiB5b3VyIGdhbWUgc2VydmVyIGdyb3VwcyBpbiB0aGUgR2FtZUxpZnQgY29uc29sZS5cbiAqIEdhbWUgc2VydmVyIGdyb3VwIG1ldHJpY3MgYW5kIGV2ZW50cyBhcmUgZW1pdHRlZCB0byBBbWF6b24gQ2xvdWRXYXRjaC5cbiAqIEJlZm9yZSBjcmVhdGluZyBhIG5ldyBnYW1lIHNlcnZlciBncm91cCwgeW91IG11c3QgaGF2ZSB0aGUgZm9sbG93aW5nOlxuICogIC0gQW4gQW1hem9uIEVDMiBsYXVuY2ggdGVtcGxhdGUgdGhhdCBzcGVjaWZpZXMgaG93IHRvIGxhdW5jaCBBbWF6b24gRUMyIGluc3RhbmNlcyB3aXRoIHlvdXIgZ2FtZSBzZXJ2ZXIgYnVpbGQuXG4gKiAgLSBBbiBJQU0gcm9sZSB0aGF0IGV4dGVuZHMgbGltaXRlZCBhY2Nlc3MgdG8geW91ciBBV1MgYWNjb3VudCB0byBhbGxvdyBHYW1lTGlmdCBGbGVldElRIHRvIGNyZWF0ZSBhbmQgaW50ZXJhY3Qgd2l0aCB0aGUgQXV0byBTY2FsaW5nIGdyb3VwLlxuICpcbiAqIFRvIGNyZWF0ZSBhIG5ldyBnYW1lIHNlcnZlciBncm91cCwgc3BlY2lmeSBhIHVuaXF1ZSBncm91cCBuYW1lLCBJQU0gcm9sZSBhbmQgQW1hem9uIEVDMiBsYXVuY2ggdGVtcGxhdGUsIGFuZCBwcm92aWRlIGEgbGlzdCBvZiBpbnN0YW5jZSB0eXBlcyB0aGF0IGNhbiBiZSB1c2VkIGluIHRoZSBncm91cC5cbiAqIFlvdSBtdXN0IGFsc28gc2V0IGluaXRpYWwgbWF4aW11bSBhbmQgbWluaW11bSBsaW1pdHMgb24gdGhlIGdyb3VwJ3MgaW5zdGFuY2UgY291bnQuXG4gKiBZb3UgY2FuIG9wdGlvbmFsbHkgc2V0IGFuIEF1dG8gU2NhbGluZyBwb2xpY3kgd2l0aCB0YXJnZXQgdHJhY2tpbmcgYmFzZWQgb24gYSBHYW1lTGlmdCBGbGVldElRIG1ldHJpYy5cbiAqXG4gKiBPbmNlIHRoZSBnYW1lIHNlcnZlciBncm91cCBhbmQgY29ycmVzcG9uZGluZyBBdXRvIFNjYWxpbmcgZ3JvdXAgYXJlIGNyZWF0ZWQsIHlvdSBoYXZlIGZ1bGwgYWNjZXNzIHRvIGNoYW5nZSB0aGUgQXV0byBTY2FsaW5nIGdyb3VwJ3MgY29uZmlndXJhdGlvbiBhcyBuZWVkZWQuXG4gKiBTZXZlcmFsIHByb3BlcnRpZXMgdGhhdCBhcmUgc2V0IHdoZW4gY3JlYXRpbmcgYSBnYW1lIHNlcnZlciBncm91cCwgaW5jbHVkaW5nIG1heGltdW0vbWluaW11bSBzaXplIGFuZCBhdXRvLXNjYWxpbmcgcG9saWN5IHNldHRpbmdzLCBtdXN0IGJlIHVwZGF0ZWQgZGlyZWN0bHkgaW4gdGhlIEF1dG8gU2NhbGluZyBncm91cC5cbiAqIEtlZXAgaW4gbWluZCB0aGF0IHNvbWUgQXV0byBTY2FsaW5nIGdyb3VwIHByb3BlcnRpZXMgYXJlIHBlcmlvZGljYWxseSB1cGRhdGVkIGJ5IEdhbWVMaWZ0IEZsZWV0SVEgYXMgcGFydCBvZiBpdHMgYmFsYW5jaW5nIGFjdGl2aXRpZXMgdG8gb3B0aW1pemUgZm9yIGF2YWlsYWJpbGl0eSBhbmQgY29zdC5cbiAqXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nYW1lbGlmdC9sYXRlc3QvZmxlZXRpcWd1aWRlL2dzZy1pbnRyby5odG1sXG4gKlxuICogQHJlc291cmNlIEFXUzo6R2FtZUxpZnQ6OkdhbWVTZXJ2ZXJHcm91cFxuICovXG5leHBvcnQgY2xhc3MgR2FtZVNlcnZlckdyb3VwIGV4dGVuZHMgR2FtZVNlcnZlckdyb3VwQmFzZSB7XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBnYW1lIHNlcnZlciBncm91cCBmcm9tIGl0cyBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgc3RhdGljIGZyb21HYW1lU2VydmVyR3JvdXBBdHRyaWJ1dGVzKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIGF0dHJzOiBHYW1lU2VydmVyR3JvdXBBdHRyaWJ1dGVzKTogSUdhbWVTZXJ2ZXJHcm91cCB7XG4gICAgaWYgKCFhdHRycy5nYW1lU2VydmVyR3JvdXBBcm4gJiYgIWF0dHJzLmdhbWVTZXJ2ZXJHcm91cE5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignRWl0aGVyIGdhbWVTZXJ2ZXJHcm91cE5hbWUgb3IgZ2FtZVNlcnZlckdyb3VwQXJuIG11c3QgYmUgcHJvdmlkZWQgaW4gR2FtZVNlcnZlckdyb3VwQXR0cmlidXRlcycpO1xuICAgIH1cbiAgICBjb25zdCBnYW1lU2VydmVyR3JvdXBOYW1lID0gYXR0cnMuZ2FtZVNlcnZlckdyb3VwTmFtZSA/P1xuICAgICAgY2RrLlN0YWNrLm9mKHNjb3BlKS5zcGxpdEFybihhdHRycy5nYW1lU2VydmVyR3JvdXBBcm4hLCBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUpLnJlc291cmNlTmFtZTtcblxuICAgIGlmICghZ2FtZVNlcnZlckdyb3VwTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBnYW1lIHNlcnZlciBncm91cCBuYW1lIGZvdW5kIGluIEFSTjogJyR7YXR0cnMuZ2FtZVNlcnZlckdyb3VwQXJufSdgKTtcbiAgICB9XG5cbiAgICBjb25zdCBnYW1lU2VydmVyR3JvdXBBcm4gPSBhdHRycy5nYW1lU2VydmVyR3JvdXBBcm4gPz8gY2RrLlN0YWNrLm9mKHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogJ2dhbWVsaWZ0JyxcbiAgICAgIHJlc291cmNlOiAnZ2FtZXNlcnZlcmdyb3VwJyxcbiAgICAgIHJlc291cmNlTmFtZTogYXR0cnMuZ2FtZVNlcnZlckdyb3VwTmFtZSxcbiAgICAgIGFybkZvcm1hdDogY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgIH0pO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgR2FtZVNlcnZlckdyb3VwQmFzZSB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2FtZVNlcnZlckdyb3VwTmFtZSA9IGdhbWVTZXJ2ZXJHcm91cE5hbWUhO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGdhbWVTZXJ2ZXJHcm91cEFybiA9IGdhbWVTZXJ2ZXJHcm91cEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBhdXRvU2NhbGluZ0dyb3VwQXJuID0gYXR0cnMuYXV0b1NjYWxpbmdHcm91cEFybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbCA9IGF0dHJzLnJvbGUgPz8gbmV3IGlhbS5Vbmtub3duUHJpbmNpcGFsKHsgcmVzb3VyY2U6IHRoaXMgfSk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcm9sZSA9IGF0dHJzLnJvbGU7XG5cbiAgICAgIGNvbnN0cnVjdG9yKHM6IENvbnN0cnVjdCwgaTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHMsIGksIHtcbiAgICAgICAgICBlbnZpcm9ubWVudEZyb21Bcm46IGdhbWVTZXJ2ZXJHcm91cEFybixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhbWUgc2VydmVyIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ2FtZVNlcnZlckdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBnYW1lIHNlcnZlciBncm91cC5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYW1lU2VydmVyR3JvdXBBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2VuZXJhdGVkIEF1dG9TY2FsaW5nIGdyb3VwXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXV0b1NjYWxpbmdHcm91cEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgICogVGhlIElBTSByb2xlIHRoYXQgYWxsb3dzIEFtYXpvbiBHYW1lTGlmdCB0byBhY2Nlc3MgeW91ciBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cHMuXG4gICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICAqIFRoZSBwcmluY2lwYWwgdGhpcyBHYW1lTGlmdCBnYW1lIHNlcnZlciBncm91cCBpcyB1c2luZy5cbiAgICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZ3JhbnRQcmluY2lwYWw6IGlhbS5JUHJpbmNpcGFsO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG5ldHdvcmsgdG8gcGxhY2UgdGhlIGdhbWUgc2VydmVyIGdyb3VwIGluLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAgKiBUaGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAncyBzdWJuZXRzLlxuICAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGNTdWJuZXRzPzogZWMyLlN1Ym5ldFNlbGVjdGlvbjtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogR2FtZVNlcnZlckdyb3VwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMuZ2FtZVNlcnZlckdyb3VwTmFtZSxcbiAgICB9KTtcblxuICAgIGlmICghY2RrLlRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5nYW1lU2VydmVyR3JvdXBOYW1lKSkge1xuICAgICAgaWYgKHByb3BzLmdhbWVTZXJ2ZXJHcm91cE5hbWUubGVuZ3RoID4gMTI4KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgR2FtZVNlcnZlckdyb3VwIG5hbWUgY2FuIG5vdCBiZSBsb25nZXIgdGhhbiAxMjggY2hhcmFjdGVycyBidXQgaGFzICR7cHJvcHMuZ2FtZVNlcnZlckdyb3VwTmFtZS5sZW5ndGh9IGNoYXJhY3RlcnMuYCk7XG4gICAgICB9XG5cbiAgICAgIGlmICghL15bYS16QS1aMC05LVxcLl0rJC8udGVzdChwcm9wcy5nYW1lU2VydmVyR3JvdXBOYW1lKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEdhbWUgc2VydmVyIGdyb3VwIG5hbWUgJHtwcm9wcy5nYW1lU2VydmVyR3JvdXBOYW1lfSBjYW4gY29udGFpbiBvbmx5IGxldHRlcnMsIG51bWJlcnMsIGh5cGhlbnMsIGJhY2sgc2xhc2ggb3IgZG90IHdpdGggbm8gc3BhY2VzLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMudnBjID0gcHJvcHMudnBjO1xuICAgIHRoaXMudnBjU3VibmV0cyA9IHByb3BzLnZwY1N1Ym5ldHMgPz8geyBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QVUJMSUMgfTtcbiAgICBjb25zdCB7IHN1Ym5ldElkcyB9ID0gcHJvcHMudnBjLnNlbGVjdFN1Ym5ldHModGhpcy52cGNTdWJuZXRzKTtcblxuICAgIGlmIChwcm9wcy5taW5TaXplICYmIHByb3BzLm1pblNpemUgPCAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBtaW5pbXVtIG51bWJlciBvZiBpbnN0YW5jZXMgYWxsb3dlZCBpbiB0aGUgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgZ3JvdXAgY2Fubm90IGJlIGxvd2VyIHRoYW4gMCwgZ2l2ZW4gJHtwcm9wcy5taW5TaXplfWApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5tYXhTaXplICYmIHByb3BzLm1heFNpemUgPCAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbnN0YW5jZXMgYWxsb3dlZCBpbiB0aGUgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgZ3JvdXAgY2Fubm90IGJlIGxvd2VyIHRoYW4gMSwgZ2l2ZW4gJHtwcm9wcy5tYXhTaXplfWApO1xuICAgIH1cblxuICAgIGlmIChzdWJuZXRJZHMubGVuZ3RoID4gMjApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gbW9yZSB0aGFuIDIwIHN1Ym5ldHMgYXJlIGFsbG93ZWQgcGVyIGdhbWUgc2VydmVyIGdyb3VwLCBnaXZlbiAke3N1Ym5ldElkcy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgLy8gQWRkIGFsbCBpbnN0YW5jZSBkZWZpbml0aW9uc1xuICAgIGlmIChwcm9wcy5pbnN0YW5jZURlZmluaXRpb25zLmxlbmd0aCA+IDIwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIG1vcmUgdGhhbiAyMCBpbnN0YW5jZSBkZWZpbml0aW9ucyBhcmUgYWxsb3dlZCBwZXIgZ2FtZSBzZXJ2ZXIgZ3JvdXAsIGdpdmVuICR7cHJvcHMuaW5zdGFuY2VEZWZpbml0aW9ucy5sZW5ndGh9YCk7XG4gICAgfVxuXG4gICAgdGhpcy5yb2xlID0gcHJvcHMucm9sZSA/PyBuZXcgaWFtLlJvbGUodGhpcywgJ1NlcnZpY2VSb2xlJywge1xuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLkNvbXBvc2l0ZVByaW5jaXBhbChcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdnYW1lbGlmdC5hbWF6b25hd3MuY29tJyksXG4gICAgICAgIG5ldyBpYW0uU2VydmljZVByaW5jaXBhbCgnYXV0b3NjYWxpbmcuYW1hem9uYXdzLmNvbScpKSxcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0dhbWVMaWZ0R2FtZVNlcnZlckdyb3VwUG9saWN5JyksXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHRoaXMuZ3JhbnRQcmluY2lwYWwgPSB0aGlzLnJvbGU7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5HYW1lU2VydmVyR3JvdXAodGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgZ2FtZVNlcnZlckdyb3VwTmFtZTogdGhpcy5waHlzaWNhbE5hbWUsXG4gICAgICBhdXRvU2NhbGluZ1BvbGljeTogdGhpcy5wYXJzZUF1dG9TY2FsaW5nUG9saWN5KHByb3BzKSxcbiAgICAgIGRlbGV0ZU9wdGlvbjogcHJvcHMuZGVsZXRlT3B0aW9uLFxuICAgICAgYmFsYW5jaW5nU3RyYXRlZ3k6IHByb3BzLmJhbGFuY2luZ1N0cmF0ZWd5LFxuICAgICAgZ2FtZVNlcnZlclByb3RlY3Rpb25Qb2xpY3k6IHByb3BzLnByb3RlY3RHYW1lU2VydmVyID8gJ0ZVTExfUFJPVEVDVElPTicgOiAnTk9fUFJPVEVDVElPTicsXG4gICAgICBpbnN0YW5jZURlZmluaXRpb25zOiB0aGlzLnBhcnNlSW5zdGFuY2VEZWZpbml0aW9ucyhwcm9wcyksXG4gICAgICBsYXVuY2hUZW1wbGF0ZTogdGhpcy5wYXJzZUxhdW5jaFRlbXBsYXRlKHByb3BzKSxcbiAgICAgIG1pblNpemU6IHByb3BzLm1pblNpemUsXG4gICAgICBtYXhTaXplOiBwcm9wcy5tYXhTaXplLFxuICAgICAgcm9sZUFybjogdGhpcy5yb2xlLnJvbGVBcm4sXG4gICAgICB2cGNTdWJuZXRzOiBzdWJuZXRJZHMsXG4gICAgfSk7XG5cbiAgICB0aGlzLmdhbWVTZXJ2ZXJHcm91cE5hbWUgPSB0aGlzLmdldFJlc291cmNlTmFtZUF0dHJpYnV0ZShyZXNvdXJjZS5yZWYpO1xuICAgIHRoaXMuZ2FtZVNlcnZlckdyb3VwQXJuID0gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZShyZXNvdXJjZS5hdHRyR2FtZVNlcnZlckdyb3VwQXJuLCB7XG4gICAgICBzZXJ2aWNlOiAnZ2FtZWxpZnQnLFxuICAgICAgcmVzb3VyY2U6ICdnYW1lc2VydmVyZ3JvdXAnLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGFybkZvcm1hdDogY2RrLkFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgIH0pO1xuICAgIHRoaXMuYXV0b1NjYWxpbmdHcm91cEFybiA9IHRoaXMuZ2V0UmVzb3VyY2VBcm5BdHRyaWJ1dGUocmVzb3VyY2UuYXR0ckF1dG9TY2FsaW5nR3JvdXBBcm4sIHtcbiAgICAgIHNlcnZpY2U6ICdhdXRvc2NhbGluZycsXG4gICAgICByZXNvdXJjZTogJ2F1dG9TY2FsaW5nR3JvdXAnLFxuICAgICAgcmVzb3VyY2VOYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGFybkZvcm1hdDogY2RrLkFybkZvcm1hdC5DT0xPTl9SRVNPVVJDRV9OQU1FLFxuICAgIH0pO1xuXG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VMYXVuY2hUZW1wbGF0ZShwcm9wczogR2FtZVNlcnZlckdyb3VwUHJvcHMpOiBDZm5HYW1lU2VydmVyR3JvdXAuTGF1bmNoVGVtcGxhdGVQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdW5jaFRlbXBsYXRlSWQ6IHByb3BzLmxhdW5jaFRlbXBsYXRlLmxhdW5jaFRlbXBsYXRlSWQsXG4gICAgICBsYXVuY2hUZW1wbGF0ZU5hbWU6IHByb3BzLmxhdW5jaFRlbXBsYXRlLmxhdW5jaFRlbXBsYXRlTmFtZSxcbiAgICAgIHZlcnNpb246IHByb3BzLmxhdW5jaFRlbXBsYXRlLnZlcnNpb25OdW1iZXIsXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUF1dG9TY2FsaW5nUG9saWN5KHByb3BzOiBHYW1lU2VydmVyR3JvdXBQcm9wcyk6IENmbkdhbWVTZXJ2ZXJHcm91cC5BdXRvU2NhbGluZ1BvbGljeVByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXByb3BzLmF1dG9TY2FsaW5nUG9saWN5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlc3RpbWF0ZWRJbnN0YW5jZVdhcm11cDogcHJvcHMuYXV0b1NjYWxpbmdQb2xpY3kuZXN0aW1hdGVkSW5zdGFuY2VXYXJtdXA/LnRvU2Vjb25kcygpLFxuICAgICAgdGFyZ2V0VHJhY2tpbmdDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIHRhcmdldFZhbHVlOiBwcm9wcy5hdXRvU2NhbGluZ1BvbGljeS50YXJnZXRUcmFja2luZ0NvbmZpZ3VyYXRpb24sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VJbnN0YW5jZURlZmluaXRpb25zKHByb3BzOiBHYW1lU2VydmVyR3JvdXBQcm9wcyk6IENmbkdhbWVTZXJ2ZXJHcm91cC5JbnN0YW5jZURlZmluaXRpb25Qcm9wZXJ0eVtdIHtcbiAgICByZXR1cm4gcHJvcHMuaW5zdGFuY2VEZWZpbml0aW9ucy5tYXAocGFyc2VJbnN0YW5jZURlZmluaXRpb24pO1xuXG4gICAgZnVuY3Rpb24gcGFyc2VJbnN0YW5jZURlZmluaXRpb24oaW5zdGFuY2VEZWZpbml0aW9uOiBJbnN0YW5jZURlZmluaXRpb24pOiBDZm5HYW1lU2VydmVyR3JvdXAuSW5zdGFuY2VEZWZpbml0aW9uUHJvcGVydHkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5zdGFuY2VUeXBlOiBpbnN0YW5jZURlZmluaXRpb24uaW5zdGFuY2VUeXBlLnRvU3RyaW5nKCksXG4gICAgICAgIHdlaWdodGVkQ2FwYWNpdHk6IGluc3RhbmNlRGVmaW5pdGlvbi53ZWlnaHQ/LnRvU3RyaW5nKCksXG4gICAgICB9O1xuICAgIH1cbiAgfVxufSJdfQ==
270
+ GameServerGroup[_b] = { fqn: "@aws-cdk/aws-gamelift-alpha.GameServerGroup", version: "2.115.0-alpha.0" };
271
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FtZS1zZXJ2ZXItZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJnYW1lLXNlcnZlci1ncm91cC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSx5REFBeUQ7QUFDekQsMkNBQTJDO0FBQzNDLDJDQUEyQztBQUMzQyx3Q0FBd0M7QUFFeEMsMkRBQThEO0FBK0M5RDs7O0dBR0c7QUFDSCxJQUFZLFlBZVg7QUFmRCxXQUFZLFlBQVk7SUFDdEI7O09BRUc7SUFDSCwyQ0FBMkIsQ0FBQTtJQUUzQjs7T0FFRztJQUNILDZDQUE2QixDQUFBO0lBRTdCOztPQUVHO0lBQ0gsaUNBQWlCLENBQUE7QUFDbkIsQ0FBQyxFQWZXLFlBQVksNEJBQVosWUFBWSxRQWV2QjtBQUVEOztHQUVHO0FBQ0gsSUFBWSxpQkFvQlg7QUFwQkQsV0FBWSxpQkFBaUI7SUFDM0I7Ozs7T0FJRztJQUNILDRDQUF1QixDQUFBO0lBRXZCOzs7O09BSUc7SUFDSCxzREFBaUMsQ0FBQTtJQUVqQzs7O09BR0c7SUFDSCxzREFBaUMsQ0FBQTtBQUNuQyxDQUFDLEVBcEJXLGlCQUFpQixpQ0FBakIsaUJBQWlCLFFBb0I1QjtBQXNDRDs7R0FFRztBQUNILE1BQXNCLG1CQUFvQixTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBcUJyRCxLQUFLLENBQUMsT0FBdUIsRUFBRSxHQUFHLE9BQWlCO1FBQ3hELE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsWUFBWSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO1lBQ3ZDLE9BQU8sRUFBRSxPQUFPO1lBQ2hCLE9BQU8sRUFBRSxPQUFPO1NBQ2pCLENBQUMsQ0FBQztLQUNKO0lBRU0sTUFBTSxDQUFDLFVBQWtCLEVBQUUsS0FBZ0M7UUFDaEUsT0FBTyxJQUFJLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFDM0IsU0FBUyxFQUFFLGNBQWM7WUFDekIsVUFBVSxFQUFFLFVBQVU7WUFDdEIsYUFBYSxFQUFF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LEVBQUUsa0JBQWtCLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtnQkFDeEQsZ0JBQWdCLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTthQUN4RCxDQUFDO1FBQ0osQ0FBQztLQUNGOztBQWxMSCwwQ0FtTEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBjbG91ZHdhdGNoIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jbG91ZHdhdGNoJztcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgQ2ZuR2FtZVNlcnZlckdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWdhbWVsaWZ0JztcblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIHNldHRpbmdzIGZvciBpbnRlbGxpZ2VudCBhdXRvbWF0aWMgc2NhbGluZyB0aGF0IHVzZXMgdGFyZ2V0IHRyYWNraW5nLlxuICogQWZ0ZXIgdGhlIEF1dG8gU2NhbGluZyBncm91cCBpcyBjcmVhdGVkLCBhbGwgdXBkYXRlcyB0byBBdXRvIFNjYWxpbmcgcG9saWNpZXMsIGluY2x1ZGluZyBjaGFuZ2luZyB0aGlzIHBvbGljeSBhbmQgYWRkaW5nIG9yIHJlbW92aW5nIG90aGVyIHBvbGljaWVzLCBpcyBkb25lIGRpcmVjdGx5IG9uIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXV0b1NjYWxpbmdQb2xpY3kge1xuICAvKipcbiAgICogTGVuZ3RoIG9mIHRpbWUsIGl0IHRha2VzIGZvciBhIG5ldyBpbnN0YW5jZSB0byBzdGFydCBuZXcgZ2FtZSBzZXJ2ZXIgcHJvY2Vzc2VzIGFuZCByZWdpc3RlciB3aXRoIEdhbWVMaWZ0IEZsZWV0SVEuXG4gICAqIFNwZWNpZnlpbmcgYSB3YXJtLXVwIHRpbWUgY2FuIGJlIHVzZWZ1bCwgcGFydGljdWxhcmx5IHdpdGggZ2FtZSBzZXJ2ZXJzIHRoYXQgdGFrZSBhIGxvbmcgdGltZSB0byBzdGFydCB1cCwgYmVjYXVzZSBpdCBhdm9pZHMgcHJlbWF0dXJlbHkgc3RhcnRpbmcgbmV3IGluc3RhbmNlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gaW5zdGFuY2Ugd2FybXVwIGR1cmF0aW9uIHNldHRsZWRcbiAgICovXG4gIHJlYWRvbmx5IGVzdGltYXRlZEluc3RhbmNlV2FybXVwPzogY2RrLkR1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBTZXR0aW5ncyBmb3IgYSB0YXJnZXQtYmFzZWQgc2NhbGluZyBwb2xpY3kgYXBwbGllZCB0byBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gICAqIFRoZXNlIHNldHRpbmdzIGFyZSB1c2VkIHRvIGNyZWF0ZSBhIHRhcmdldC1iYXNlZCBwb2xpY3kgdGhhdCB0cmFja3MgdGhlIEdhbWVMaWZ0IEZsZWV0SVEgbWV0cmljIGBQZXJjZW50VXRpbGl6ZWRHYW1lU2VydmVyc2AgYW5kIHNwZWNpZmllcyBhIHRhcmdldCB2YWx1ZSBmb3IgdGhlIG1ldHJpYy5cbiAgICpcbiAgICogQXMgcGxheWVyIHVzYWdlIGNoYW5nZXMsIHRoZSBwb2xpY3kgdHJpZ2dlcnMgdG8gYWRqdXN0IHRoZSBnYW1lIHNlcnZlciBncm91cCBjYXBhY2l0eSBzbyB0aGF0IHRoZSBtZXRyaWMgcmV0dXJucyB0byB0aGUgdGFyZ2V0IHZhbHVlLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0VHJhY2tpbmdDb25maWd1cmF0aW9uOiBudW1iZXI7XG5cbn1cbi8qKlxuICogQW4gYWxsb3dlZCBpbnN0YW5jZSB0eXBlIGZvciBhIGdhbWUgc2VydmVyIGdyb3VwLlxuICogQWxsIGdhbWUgc2VydmVyIGdyb3VwcyBtdXN0IGhhdmUgYXQgbGVhc3QgdHdvIGluc3RhbmNlIHR5cGVzIGRlZmluZWQgZm9yIGl0LlxuICogR2FtZUxpZnQgRmxlZXRJUSBwZXJpb2RpY2FsbHkgZXZhbHVhdGVzIGVhY2ggZGVmaW5lZCBpbnN0YW5jZSB0eXBlIGZvciB2aWFiaWxpdHkuXG4gKiBJdCB0aGVuIHVwZGF0ZXMgdGhlIEF1dG8gU2NhbGluZyBncm91cCB3aXRoIHRoZSBsaXN0IG9mIHZpYWJsZSBpbnN0YW5jZSB0eXBlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJbnN0YW5jZURlZmluaXRpb24ge1xuICAvKipcbiAgICogQW4gQW1hem9uIEVDMiBpbnN0YW5jZSB0eXBlIGRlc2lnbmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlOiBlYzIuSW5zdGFuY2VUeXBlO1xuXG4gIC8qKlxuICAgKiBJbnN0YW5jZSB3ZWlnaHRpbmcgdGhhdCBpbmRpY2F0ZXMgaG93IG11Y2ggdGhpcyBpbnN0YW5jZSB0eXBlIGNvbnRyaWJ1dGVzIHRvIHRoZSB0b3RhbCBjYXBhY2l0eSBvZiBhIGdhbWUgc2VydmVyIGdyb3VwLlxuICAgKiBJbnN0YW5jZSB3ZWlnaHRzIGFyZSB1c2VkIGJ5IEdhbWVMaWZ0IEZsZWV0SVEgdG8gY2FsY3VsYXRlIHRoZSBpbnN0YW5jZSB0eXBlJ3MgY29zdCBwZXIgdW5pdCBob3VyIGFuZCBiZXR0ZXIgaWRlbnRpZnkgdGhlIG1vc3QgY29zdC1lZmZlY3RpdmUgb3B0aW9ucy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9hc2ctaW5zdGFuY2Utd2VpZ2h0aW5nLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgZGVmYXVsdCB2YWx1ZSBpcyAxXG4gICAqL1xuICByZWFkb25seSB3ZWlnaHQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogVGhlIHR5cGUgb2YgZGVsZXRlIHRvIHBlcmZvcm0uXG4gKiBUbyBkZWxldGUgYSBnYW1lIHNlcnZlciBncm91cCwgc3BlY2lmeSB0aGUgRGVsZXRlT3B0aW9uLlxuICovXG5leHBvcnQgZW51bSBEZWxldGVPcHRpb24ge1xuICAvKipcbiAgICogVGVybWluYXRlcyB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAgYW5kIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGdyb3VwIG9ubHkgd2hlbiBpdCBoYXMgbm8gZ2FtZSBzZXJ2ZXJzIHRoYXQgYXJlIGluIFVUSUxJWkVEIHN0YXR1cy5cbiAgICovXG4gIFNBRkVfREVMRVRFID0gJ1NBRkVfREVMRVRFJyxcblxuICAvKipcbiAgICogVGVybWluYXRlcyB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAsIGluY2x1ZGluZyBhbGwgYWN0aXZlIGdhbWUgc2VydmVycyByZWdhcmRsZXNzIG9mIHRoZWlyIHV0aWxpemF0aW9uIHN0YXR1cywgYW5kIHRoZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cC5cbiAgICovXG4gIEZPUkNFX0RFTEVURSA9ICdGT1JDRV9ERUxFVEUnLFxuXG4gIC8qKlxuICAgKiBEb2VzIGEgc2FmZSBkZWxldGUgb2YgdGhlIGdhbWUgc2VydmVyIGdyb3VwIGJ1dCByZXRhaW5zIHRoZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cCBhcyBpcy5cbiAgICovXG4gIFJFVEFJTiA9ICdSRVRBSU4nLFxufVxuXG4vKipcbiAqIEluZGljYXRlcyBob3cgR2FtZUxpZnQgRmxlZXRJUSBiYWxhbmNlcyB0aGUgdXNlIG9mIFNwb3QgSW5zdGFuY2VzIGFuZCBPbi1EZW1hbmQgSW5zdGFuY2VzIGluIHRoZSBnYW1lIHNlcnZlciBncm91cC5cbiAqL1xuZXhwb3J0IGVudW0gQmFsYW5jaW5nU3RyYXRlZ3kge1xuICAvKipcbiAgICogT25seSBTcG90IEluc3RhbmNlcyBhcmUgdXNlZCBpbiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAuXG4gICAqIElmIFNwb3QgSW5zdGFuY2VzIGFyZSB1bmF2YWlsYWJsZSBvciBub3QgdmlhYmxlIGZvciBnYW1lIGhvc3RpbmcsIHRoZSBnYW1lIHNlcnZlciBncm91cCBwcm92aWRlcyBubyBob3N0aW5nIGNhcGFjaXR5IHVudGlsIFNwb3QgSW5zdGFuY2VzIGNhbiBhZ2FpbiBiZSB1c2VkLlxuICAgKiBVbnRpbCB0aGVuLCBubyBuZXcgaW5zdGFuY2VzIGFyZSBzdGFydGVkLCBhbmQgdGhlIGV4aXN0aW5nIG5vbnZpYWJsZSBTcG90IEluc3RhbmNlcyBhcmUgdGVybWluYXRlZCAoYWZ0ZXIgY3VycmVudCBnYW1lcGxheSBlbmRzKSBhbmQgYXJlIG5vdCByZXBsYWNlZC5cbiAgICovXG4gIFNQT1RfT05MWSA9ICdTUE9UX09OTFknLFxuXG4gIC8qKlxuICAgKiBTcG90IEluc3RhbmNlcyBhcmUgdXNlZCB3aGVuZXZlciBhdmFpbGFibGUgaW4gdGhlIGdhbWUgc2VydmVyIGdyb3VwLlxuICAgKiBJZiBTcG90IEluc3RhbmNlcyBhcmUgdW5hdmFpbGFibGUsIHRoZSBnYW1lIHNlcnZlciBncm91cCBjb250aW51ZXMgdG8gcHJvdmlkZSBob3N0aW5nIGNhcGFjaXR5IGJ5IGZhbGxpbmcgYmFjayB0byBPbi1EZW1hbmQgSW5zdGFuY2VzLlxuICAgKiBFeGlzdGluZyBub252aWFibGUgU3BvdCBJbnN0YW5jZXMgYXJlIHRlcm1pbmF0ZWQgKGFmdGVyIGN1cnJlbnQgZ2FtZXBsYXkgZW5kcykgYW5kIGFyZSByZXBsYWNlZCB3aXRoIG5ldyBPbi1EZW1hbmQgSW5zdGFuY2VzLlxuICAgKi9cbiAgU1BPVF9QUkVGRVJSRUQgPSAnU1BPVF9QUkVGRVJSRUQnLFxuXG4gIC8qKlxuICAgKiBPbmx5IE9uLURlbWFuZCBJbnN0YW5jZXMgYXJlIHVzZWQgaW4gdGhlIGdhbWUgc2VydmVyIGdyb3VwLlxuICAgKiBObyBTcG90IEluc3RhbmNlcyBhcmUgdXNlZCwgZXZlbiB3aGVuIGF2YWlsYWJsZSwgd2hpbGUgdGhpcyBiYWxhbmNpbmcgc3RyYXRlZ3kgaXMgaW4gZm9yY2UuXG4gICAqL1xuICBPTl9ERU1BTkRfT05MWSA9ICdPTl9ERU1BTkRfT05MWScsXG59XG5cbi8qKlxuICogUmVwcmVzZW50IGEgR2FtZUxpZnQgRmxlZXRJUSBnYW1lIHNlcnZlciBncm91cC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJR2FtZVNlcnZlckdyb3VwIGV4dGVuZHMgY2RrLklSZXNvdXJjZSwgaWFtLklHcmFudGFibGUge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGdhbWVTZXJ2ZXJHcm91cEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBnZW5lcmF0ZWQgQXV0b1NjYWxpbmcgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgYXV0b1NjYWxpbmdHcm91cEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtZVNlcnZlckdyb3VwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBHcmFudCB0aGUgYGdyYW50ZWVgIGlkZW50aXR5IHBlcm1pc3Npb25zIHRvIHBlcmZvcm0gYGFjdGlvbnNgLlxuICAgKi9cbiAgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50O1xuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGdpdmVuIG5hbWVkIG1ldHJpYyBmb3IgdGhpcyBmbGVldC5cbiAgICovXG4gIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgbmV3IGFuZCBpbXBvcnRlZCBHYW1lTGlmdCBGbGVldElRIGdhbWUgc2VydmVyIGdyb3VwLlxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgR2FtZVNlcnZlckdyb3VwQmFzZSBleHRlbmRzIGNkay5SZXNvdXJjZSBpbXBsZW1lbnRzIElHYW1lU2VydmVyR3JvdXAge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZ2FtZVNlcnZlckdyb3VwQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdlbmVyYXRlZCBBdXRvU2NhbGluZyBncm91cFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGF1dG9TY2FsaW5nR3JvdXBBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGdhbWUgc2VydmVyIGdyb3VwLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdhbWVTZXJ2ZXJHcm91cE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHByaW5jaXBhbCB0aGlzIEdhbWVMaWZ0IGdhbWUgc2VydmVyIGdyb3VwIGlzIHVzaW5nLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcblxuICBwdWJsaWMgZ3JhbnQoZ3JhbnRlZTogaWFtLklHcmFudGFibGUsIC4uLmFjdGlvbnM6IHN0cmluZ1tdKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuZ2FtZVNlcnZlckdyb3VwQXJuXSxcbiAgICAgIGdyYW50ZWU6IGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiBhY3Rpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG1ldHJpYyhtZXRyaWNOYW1lOiBzdHJpbmcsIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiAnQVdTL0dhbWVMaWZ0JyxcbiAgICAgIG1ldHJpY05hbWU6IG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7XG4gICAgICAgIEdhbWVTZXJ2ZXJHcm91cEFybjogdGhpcy5nYW1lU2VydmVyR3JvdXBBcm4sXG4gICAgICB9LFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSkuYXR0YWNoVG8odGhpcyk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgR2FtZVNlcnZlckdyb3VwIGNvbnRlbnQgZGVmaW5lZCBvdXRzaWRlIG9mIHRoaXMgc3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2FtZVNlcnZlckdyb3VwQXR0cmlidXRlcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXBcbiAgICpcbiAgICogQXQgbGVhc3Qgb25lIG9mIGBnYW1lU2VydmVyR3JvdXBBcm5gIGFuZCBgZ2FtZVNlcnZlckdyb3VwTmFtZWAgbXVzdCBiZSBwcm92aWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZGVyaXZlZCBmcm9tIGBnYW1lU2VydmVyR3JvdXBBcm5gLlxuICAgKi9cbiAgcmVhZG9ubHkgZ2FtZVNlcnZlckdyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXBcbiAgICpcbiAgICogQXQgbGVhc3Qgb25lIG9mIGBnYW1lU2VydmVyR3JvdXBBcm5gIGFuZCBgZ2FtZVNlcnZlckdyb3VwTmFtZWAgbXVzdCBiZSBwcm92aWRlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgZGVyaXZlZCBmcm9tIGBnYW1lU2VydmVyR3JvdXBOYW1lYC5cbiAgICovXG4gIHJlYWRvbmx5IGdhbWVTZXJ2ZXJHcm91cEFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZ2VuZXJhdGVkIEF1dG9TY2FsaW5nIGdyb3VwXG4gICAqXG4gICAqIEBkZWZhdWx0IHRoZSBpbXBvcnRlZCBnYW1lIHNlcnZlciBncm91cCBkb2VzIG5vdCBoYXZlIGF1dG9zY2FsaW5nIGdyb3VwIGluZm9ybWF0aW9uXG4gICAqL1xuICByZWFkb25seSBhdXRvU2NhbGluZ0dyb3VwQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSB0aGF0IGFsbG93cyBBbWF6b24gR2FtZUxpZnQgdG8gYWNjZXNzIHlvdXIgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgZ3JvdXBzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgaW1wb3J0ZWQgZ2FtZSBzZXJ2ZXIgZ3JvdXAgY2Fubm90IGJlIGdyYW50ZWQgYWNjZXNzIHRvIG90aGVyIHJlc291cmNlcyBhcyBhbiBgaWFtLklHcmFudGFibGVgLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIG5ldyBHYW1lbGlmdCBGbGVldElRIEdhbWUgc2VydmVyIGdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2FtZVNlcnZlckdyb3VwUHJvcHMge1xuICAvKipcbiAgICogQSBkZXZlbG9wZXItZGVmaW5lZCBpZGVudGlmaWVyIGZvciB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAuXG4gICAqIFRoZSBuYW1lIGlzIHVuaXF1ZSBmb3IgZWFjaCBSZWdpb24gaW4gZWFjaCBBV1MgYWNjb3VudC5cbiAgICovXG4gIHJlYWRvbmx5IGdhbWVTZXJ2ZXJHcm91cE5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIHRoYXQgYWxsb3dzIEFtYXpvbiBHYW1lTGlmdCB0byBhY2Nlc3MgeW91ciBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cHMuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2dhbWVsaWZ0L2xhdGVzdC9mbGVldGlxZ3VpZGUvZ3NnLWlhbS1wZXJtaXNzaW9ucy1yb2xlcy5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYSByb2xlIHdpbGwgYmUgY3JlYXRlZCB3aXRoIGRlZmF1bHQgdHJ1c3QgdG8gR2FtZWxpZnQgYW5kIEF1dG9zY2FsaW5nIHNlcnZpY2UgcHJpbmNpcGFsIHdpdGggYSBkZWZhdWx0IHBvbGljeSBgR2FtZUxpZnRHYW1lU2VydmVyR3JvdXBQb2xpY3lgIGF0dGFjaGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgcm9sZT86IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIG1pbmltdW0gbnVtYmVyIG9mIGluc3RhbmNlcyBhbGxvd2VkIGluIHRoZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cC5cbiAgICogRHVyaW5nIGF1dG9tYXRpYyBzY2FsaW5nIGV2ZW50cywgR2FtZUxpZnQgRmxlZXRJUSBhbmQgQW1hem9uIEVDMiBkbyBub3Qgc2NhbGUgZG93biB0aGUgZ3JvdXAgYmVsb3cgdGhpcyBtaW5pbXVtLlxuICAgKlxuICAgKiBJbiBwcm9kdWN0aW9uLCB0aGlzIHZhbHVlIHNob3VsZCBiZSBzZXQgdG8gYXQgbGVhc3QgMS5cbiAgICpcbiAgICogQWZ0ZXIgdGhlIEF1dG8gU2NhbGluZyBncm91cCBpcyBjcmVhdGVkLCB1cGRhdGUgdGhpcyB2YWx1ZSBkaXJlY3RseSBpbiB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIHVzaW5nIHRoZSBBV1MgY29uc29sZSBvciBBUElzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0aGUgZGVmYXVsdCBpcyAwXG4gICAqL1xuICByZWFkb25seSBtaW5TaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5zdGFuY2VzIGFsbG93ZWQgaW4gdGhlIEFtYXpvbiBFQzIgQXV0byBTY2FsaW5nIGdyb3VwLiBEdXJpbmcgYXV0b21hdGljIHNjYWxpbmcgZXZlbnRzLCBHYW1lTGlmdCBGbGVldElRIGFuZCBFQzIgZG8gbm90IHNjYWxlIHVwIHRoZSBncm91cCBhYm92ZSB0aGlzIG1heGltdW0uXG4gICAqXG4gICAqIEFmdGVyIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgaXMgY3JlYXRlZCwgdXBkYXRlIHRoaXMgdmFsdWUgZGlyZWN0bHkgaW4gdGhlIEF1dG8gU2NhbGluZyBncm91cCB1c2luZyB0aGUgQVdTIGNvbnNvbGUgb3IgQVBJcy5cbiAgICpcbiAgICogQGRlZmF1bHQgdGhlIGRlZmF1bHQgaXMgMVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4U2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIFZQQyBuZXR3b3JrIHRvIHBsYWNlIHRoZSBnYW1lIHNlcnZlciBncm91cCBpbi5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYWxsIEdhbWVMaWZ0IEZsZWV0SVEtc3VwcG9ydGVkIEF2YWlsYWJpbGl0eSBab25lcyBhcmUgdXNlZC5cbiAgICpcbiAgICogWW91IGNhbiB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gc3BlY2lmeSBWUENzIHRoYXQgeW91J3ZlIHNldCB1cC5cbiAgICpcbiAgICogVGhpcyBwcm9wZXJ0eSBjYW5ub3QgYmUgdXBkYXRlZCBhZnRlciB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAgaXMgY3JlYXRlZCxcbiAgICogYW5kIHRoZSBjb3JyZXNwb25kaW5nIEF1dG8gU2NhbGluZyBncm91cCB3aWxsIGFsd2F5cyB1c2UgdGhlIHByb3BlcnR5IHZhbHVlIHRoYXQgaXMgc2V0IHdpdGggdGhpcyByZXF1ZXN0LFxuICAgKiBldmVuIGlmIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgaXMgdXBkYXRlZCBkaXJlY3RseS5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogZWMyLklWcGM7XG5cbiAgLyoqXG4gICAqIEdhbWUgc2VydmVyIGdyb3VwIHN1Ym5ldCBzZWxlY3Rpb25cbiAgICpcbiAgICogQGRlZmF1bHQgYWxsIEdhbWVMaWZ0IEZsZWV0SVEtc3VwcG9ydGVkIEF2YWlsYWJpbGl0eSBab25lcyBhcmUgdXNlZC5cbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgc2V0IG9mIEFtYXpvbiBFQzIgaW5zdGFuY2UgdHlwZXMgdGhhdCBHYW1lTGlmdCBGbGVldElRIGNhbiB1c2Ugd2hlbiBiYWxhbmNpbmcgYW5kIGF1dG9tYXRpY2FsbHkgc2NhbGluZyBpbnN0YW5jZXMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgQXV0byBTY2FsaW5nIGdyb3VwLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5zdGFuY2VEZWZpbml0aW9uczogSW5zdGFuY2VEZWZpbml0aW9uW107XG5cbiAgLyoqXG4gICAqIFRoZSBBbWF6b24gRUMyIGxhdW5jaCB0ZW1wbGF0ZSB0aGF0IGNvbnRhaW5zIGNvbmZpZ3VyYXRpb24gc2V0dGluZ3MgYW5kIGdhbWUgc2VydmVyIGNvZGUgdG8gYmUgZGVwbG95ZWQgdG8gYWxsIGluc3RhbmNlcyBpbiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAuXG4gICAqIEFmdGVyIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgaXMgY3JlYXRlZCwgdXBkYXRlIHRoaXMgdmFsdWUgZGlyZWN0bHkgaW4gdGhlIEF1dG8gU2NhbGluZyBncm91cCB1c2luZyB0aGUgQVdTIGNvbnNvbGUgb3IgQVBJcy5cbiAgICpcbiAgICogTk9URTpcbiAgICogSWYgeW91IHNwZWNpZnkgbmV0d29yayBpbnRlcmZhY2VzIGluIHlvdXIgbGF1bmNoIHRlbXBsYXRlLCB5b3UgbXVzdCBleHBsaWNpdGx5IHNldCB0aGUgcHJvcGVydHkgQXNzb2NpYXRlUHVibGljSXBBZGRyZXNzIHRvIGB0cnVlYC5cbiAgICogSWYgbm8gbmV0d29yayBpbnRlcmZhY2UgaXMgc3BlY2lmaWVkIGluIHRoZSBsYXVuY2ggdGVtcGxhdGUsIEdhbWVMaWZ0IEZsZWV0SVEgdXNlcyB5b3VyIGFjY291bnQncyBkZWZhdWx0IFZQQy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvZWMyL3VzZXJndWlkZS9jcmVhdGUtbGF1bmNoLXRlbXBsYXRlLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IGxhdW5jaFRlbXBsYXRlOiBlYzIuSUxhdW5jaFRlbXBsYXRlO1xuXG4gIC8qKlxuICAgKiBBIGZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBpbnN0YW5jZXMgaW4gdGhlIGdhbWUgc2VydmVyIGdyb3VwIGFyZSBwcm90ZWN0ZWQgZnJvbSBlYXJseSB0ZXJtaW5hdGlvbi5cbiAgICogVW5wcm90ZWN0ZWQgaW5zdGFuY2VzIHRoYXQgaGF2ZSBhY3RpdmUgZ2FtZSBzZXJ2ZXJzIHJ1bm5pbmcgbWlnaHQgYmUgdGVybWluYXRlZCBkdXJpbmcgYSBzY2FsZS1kb3duIGV2ZW50LCBjYXVzaW5nIHBsYXllcnMgdG8gYmUgZHJvcHBlZCBmcm9tIHRoZSBnYW1lLlxuICAgKiBQcm90ZWN0ZWQgaW5zdGFuY2VzIGNhbm5vdCBiZSB0ZXJtaW5hdGVkIHdoaWxlIHRoZXJlIGFyZSBhY3RpdmUgZ2FtZSBzZXJ2ZXJzIHJ1bm5pbmcgZXhjZXB0IGluIHRoZSBldmVudCBvZiBhIGZvcmNlZCBnYW1lIHNlcnZlciBncm91cCBkZWxldGlvbi5cbiAgICpcbiAgICogQW4gZXhjZXB0aW9uIHRvIHRoaXMgaXMgd2l0aCBTcG90IEluc3RhbmNlcywgd2hpY2ggY2FuIGJlIHRlcm1pbmF0ZWQgYnkgQVdTIHJlZ2FyZGxlc3Mgb2YgcHJvdGVjdGlvbiBzdGF0dXMuXG4gICAqXG4gICAqIEBkZWZhdWx0IGdhbWUgc2VydmVycyBydW5uaW5nIG1pZ2h0IGJlIHRlcm1pbmF0ZWQgZHVyaW5nIGEgc2NhbGUtZG93biBldmVudFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdGVjdEdhbWVTZXJ2ZXI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIHNldHRpbmdzIHRvIGRlZmluZSBhIHNjYWxpbmcgcG9saWN5IGZvciB0aGUgQXV0byBTY2FsaW5nIGdyb3VwIHRoYXQgaXMgb3B0aW1pemVkIGZvciBnYW1lIGhvc3RpbmcuXG4gICAqIFRoZSBzY2FsaW5nIHBvbGljeSB1c2VzIHRoZSBtZXRyaWMgYFBlcmNlbnRVdGlsaXplZEdhbWVTZXJ2ZXJzYCB0byBtYWludGFpbiBhIGJ1ZmZlciBvZiBpZGxlIGdhbWUgc2VydmVycyB0aGF0IGNhbiBpbW1lZGlhdGVseSBhY2NvbW1vZGF0ZSBuZXcgZ2FtZXMgYW5kIHBsYXllcnMuXG4gICAqXG4gICAqIEFmdGVyIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAgaXMgY3JlYXRlZCwgdXBkYXRlIHRoaXMgdmFsdWUgZGlyZWN0bHkgaW4gdGhlIEF1dG8gU2NhbGluZyBncm91cCB1c2luZyB0aGUgQVdTIGNvbnNvbGUgb3IgQVBJcy5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gYXV0b3NjYWxpbmcgcG9saWN5IHNldHRsZWRcbiAgICovXG4gIHJlYWRvbmx5IGF1dG9TY2FsaW5nUG9saWN5PzogQXV0b1NjYWxpbmdQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGRlbGV0ZSB0byBwZXJmb3JtLiBUbyBkZWxldGUgYSBnYW1lIHNlcnZlciBncm91cCwgc3BlY2lmeSB0aGUgRGVsZXRlT3B0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IFNBRkVfREVMRVRFXG4gICAqL1xuICByZWFkb25seSBkZWxldGVPcHRpb24/OiBEZWxldGVPcHRpb247XG5cbiAgLyoqXG4gICAgKiBJbmRpY2F0ZXMgaG93IEdhbWVMaWZ0IEZsZWV0SVEgYmFsYW5jZXMgdGhlIHVzZSBvZiBTcG90IEluc3RhbmNlcyBhbmQgT24tRGVtYW5kIEluc3RhbmNlcyBpbiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAuXG4gICAgKlxuICAgICogQGRlZmF1bHQgU1BPVF9QUkVGRVJSRURcbiAgICAqL1xuICByZWFkb25seSBiYWxhbmNpbmdTdHJhdGVneT86IEJhbGFuY2luZ1N0cmF0ZWd5O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBHYW1lTGlmdCBGbGVldElRIGdhbWUgc2VydmVyIGdyb3VwIGZvciBtYW5hZ2luZyBnYW1lIGhvc3Rpbmcgb24gYSBjb2xsZWN0aW9uIG9mIEFtYXpvbiBFQzIgaW5zdGFuY2VzIGZvciBnYW1lIGhvc3RpbmcuXG4gKiBUaGlzIG9wZXJhdGlvbiBjcmVhdGVzIHRoZSBnYW1lIHNlcnZlciBncm91cCwgY3JlYXRlcyBhbiBBdXRvIFNjYWxpbmcgZ3JvdXAgaW4geW91ciBBV1MgYWNjb3VudCwgYW5kIGVzdGFibGlzaGVzIGEgbGluayBiZXR3ZWVuIHRoZSB0d28gZ3JvdXBzLlxuICogWW91IGNhbiB2aWV3IHRoZSBzdGF0dXMgb2YgeW91ciBnYW1lIHNlcnZlciBncm91cHMgaW4gdGhlIEdhbWVMaWZ0IGNvbnNvbGUuXG4gKiBHYW1lIHNlcnZlciBncm91cCBtZXRyaWNzIGFuZCBldmVudHMgYXJlIGVtaXR0ZWQgdG8gQW1hem9uIENsb3VkV2F0Y2guXG4gKiBCZWZvcmUgY3JlYXRpbmcgYSBuZXcgZ2FtZSBzZXJ2ZXIgZ3JvdXAsIHlvdSBtdXN0IGhhdmUgdGhlIGZvbGxvd2luZzpcbiAqICAtIEFuIEFtYXpvbiBFQzIgbGF1bmNoIHRlbXBsYXRlIHRoYXQgc3BlY2lmaWVzIGhvdyB0byBsYXVuY2ggQW1hem9uIEVDMiBpbnN0YW5jZXMgd2l0aCB5b3VyIGdhbWUgc2VydmVyIGJ1aWxkLlxuICogIC0gQW4gSUFNIHJvbGUgdGhhdCBleHRlbmRzIGxpbWl0ZWQgYWNjZXNzIHRvIHlvdXIgQVdTIGFjY291bnQgdG8gYWxsb3cgR2FtZUxpZnQgRmxlZXRJUSB0byBjcmVhdGUgYW5kIGludGVyYWN0IHdpdGggdGhlIEF1dG8gU2NhbGluZyBncm91cC5cbiAqXG4gKiBUbyBjcmVhdGUgYSBuZXcgZ2FtZSBzZXJ2ZXIgZ3JvdXAsIHNwZWNpZnkgYSB1bmlxdWUgZ3JvdXAgbmFtZSwgSUFNIHJvbGUgYW5kIEFtYXpvbiBFQzIgbGF1bmNoIHRlbXBsYXRlLCBhbmQgcHJvdmlkZSBhIGxpc3Qgb2YgaW5zdGFuY2UgdHlwZXMgdGhhdCBjYW4gYmUgdXNlZCBpbiB0aGUgZ3JvdXAuXG4gKiBZb3UgbXVzdCBhbHNvIHNldCBpbml0aWFsIG1heGltdW0gYW5kIG1pbmltdW0gbGltaXRzIG9uIHRoZSBncm91cCdzIGluc3RhbmNlIGNvdW50LlxuICogWW91IGNhbiBvcHRpb25hbGx5IHNldCBhbiBBdXRvIFNjYWxpbmcgcG9saWN5IHdpdGggdGFyZ2V0IHRyYWNraW5nIGJhc2VkIG9uIGEgR2FtZUxpZnQgRmxlZXRJUSBtZXRyaWMuXG4gKlxuICogT25jZSB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAgYW5kIGNvcnJlc3BvbmRpbmcgQXV0byBTY2FsaW5nIGdyb3VwIGFyZSBjcmVhdGVkLCB5b3UgaGF2ZSBmdWxsIGFjY2VzcyB0byBjaGFuZ2UgdGhlIEF1dG8gU2NhbGluZyBncm91cCdzIGNvbmZpZ3VyYXRpb24gYXMgbmVlZGVkLlxuICogU2V2ZXJhbCBwcm9wZXJ0aWVzIHRoYXQgYXJlIHNldCB3aGVuIGNyZWF0aW5nIGEgZ2FtZSBzZXJ2ZXIgZ3JvdXAsIGluY2x1ZGluZyBtYXhpbXVtL21pbmltdW0gc2l6ZSBhbmQgYXV0by1zY2FsaW5nIHBvbGljeSBzZXR0aW5ncywgbXVzdCBiZSB1cGRhdGVkIGRpcmVjdGx5IGluIHRoZSBBdXRvIFNjYWxpbmcgZ3JvdXAuXG4gKiBLZWVwIGluIG1pbmQgdGhhdCBzb21lIEF1dG8gU2NhbGluZyBncm91cCBwcm9wZXJ0aWVzIGFyZSBwZXJpb2RpY2FsbHkgdXBkYXRlZCBieSBHYW1lTGlmdCBGbGVldElRIGFzIHBhcnQgb2YgaXRzIGJhbGFuY2luZyBhY3Rpdml0aWVzIHRvIG9wdGltaXplIGZvciBhdmFpbGFiaWxpdHkgYW5kIGNvc3QuXG4gKlxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZ2FtZWxpZnQvbGF0ZXN0L2ZsZWV0aXFndWlkZS9nc2ctaW50cm8uaHRtbFxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkdhbWVMaWZ0OjpHYW1lU2VydmVyR3JvdXBcbiAqL1xuZXhwb3J0IGNsYXNzIEdhbWVTZXJ2ZXJHcm91cCBleHRlbmRzIEdhbWVTZXJ2ZXJHcm91cEJhc2Uge1xuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGdhbWUgc2VydmVyIGdyb3VwIGZyb20gaXRzIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBzdGF0aWMgZnJvbUdhbWVTZXJ2ZXJHcm91cEF0dHJpYnV0ZXMoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IEdhbWVTZXJ2ZXJHcm91cEF0dHJpYnV0ZXMpOiBJR2FtZVNlcnZlckdyb3VwIHtcbiAgICBpZiAoIWF0dHJzLmdhbWVTZXJ2ZXJHcm91cEFybiAmJiAhYXR0cnMuZ2FtZVNlcnZlckdyb3VwTmFtZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdFaXRoZXIgZ2FtZVNlcnZlckdyb3VwTmFtZSBvciBnYW1lU2VydmVyR3JvdXBBcm4gbXVzdCBiZSBwcm92aWRlZCBpbiBHYW1lU2VydmVyR3JvdXBBdHRyaWJ1dGVzJyk7XG4gICAgfVxuICAgIGNvbnN0IGdhbWVTZXJ2ZXJHcm91cE5hbWUgPSBhdHRycy5nYW1lU2VydmVyR3JvdXBOYW1lID8/XG4gICAgICBjZGsuU3RhY2sub2Yoc2NvcGUpLnNwbGl0QXJuKGF0dHJzLmdhbWVTZXJ2ZXJHcm91cEFybiEsIGNkay5Bcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lO1xuXG4gICAgaWYgKCFnYW1lU2VydmVyR3JvdXBOYW1lKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vIGdhbWUgc2VydmVyIGdyb3VwIG5hbWUgZm91bmQgaW4gQVJOOiAnJHthdHRycy5nYW1lU2VydmVyR3JvdXBBcm59J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IGdhbWVTZXJ2ZXJHcm91cEFybiA9IGF0dHJzLmdhbWVTZXJ2ZXJHcm91cEFybiA/PyBjZGsuU3RhY2sub2Yoc2NvcGUpLmZvcm1hdEFybih7XG4gICAgICBzZXJ2aWNlOiAnZ2FtZWxpZnQnLFxuICAgICAgcmVzb3VyY2U6ICdnYW1lc2VydmVyZ3JvdXAnLFxuICAgICAgcmVzb3VyY2VOYW1lOiBhdHRycy5nYW1lU2VydmVyR3JvdXBOYW1lLFxuICAgICAgYXJuRm9ybWF0OiBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBHYW1lU2VydmVyR3JvdXBCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBnYW1lU2VydmVyR3JvdXBOYW1lID0gZ2FtZVNlcnZlckdyb3VwTmFtZSE7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZ2FtZVNlcnZlckdyb3VwQXJuID0gZ2FtZVNlcnZlckdyb3VwQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGF1dG9TY2FsaW5nR3JvdXBBcm4gPSBhdHRycy5hdXRvU2NhbGluZ0dyb3VwQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsID0gYXR0cnMucm9sZSA/PyBuZXcgaWFtLlVua25vd25QcmluY2lwYWwoeyByZXNvdXJjZTogdGhpcyB9KTtcbiAgICAgIHB1YmxpYyByZWFkb25seSByb2xlID0gYXR0cnMucm9sZTtcblxuICAgICAgY29uc3RydWN0b3IoczogQ29uc3RydWN0LCBpOiBzdHJpbmcpIHtcbiAgICAgICAgc3VwZXIocywgaSwge1xuICAgICAgICAgIGVudmlyb25tZW50RnJvbUFybjogZ2FtZVNlcnZlckdyb3VwQXJuLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZ2FtZSBzZXJ2ZXIgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBnYW1lU2VydmVyR3JvdXBOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGdhbWUgc2VydmVyIGdyb3VwLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdhbWVTZXJ2ZXJHcm91cEFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBnZW5lcmF0ZWQgQXV0b1NjYWxpbmcgZ3JvdXBcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhdXRvU2NhbGluZ0dyb3VwQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJQU0gcm9sZSB0aGF0IGFsbG93cyBBbWF6b24gR2FtZUxpZnQgdG8gYWNjZXNzIHlvdXIgQW1hem9uIEVDMiBBdXRvIFNjYWxpbmcgZ3JvdXBzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHJvbGU6IGlhbS5JUm9sZTtcblxuICAvKipcbiAgICogVGhlIHByaW5jaXBhbCB0aGlzIEdhbWVMaWZ0IGdhbWUgc2VydmVyIGdyb3VwIGlzIHVzaW5nLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGdyYW50UHJpbmNpcGFsOiBpYW0uSVByaW5jaXBhbDtcblxuICAvKipcbiAgICogVGhlIFZQQyBuZXR3b3JrIHRvIHBsYWNlIHRoZSBnYW1lIHNlcnZlciBncm91cCBpbi5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSB2cGM6IGVjMi5JVnBjO1xuXG4gIC8qKlxuICAgKiBUaGUgZ2FtZSBzZXJ2ZXIgZ3JvdXAncyBzdWJuZXRzLlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHZwY1N1Ym5ldHM/OiBlYzIuU3VibmV0U2VsZWN0aW9uO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBHYW1lU2VydmVyR3JvdXBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5nYW1lU2VydmVyR3JvdXBOYW1lLFxuICAgIH0pO1xuXG4gICAgaWYgKCFjZGsuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLmdhbWVTZXJ2ZXJHcm91cE5hbWUpKSB7XG4gICAgICBpZiAocHJvcHMuZ2FtZVNlcnZlckdyb3VwTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBHYW1lU2VydmVyR3JvdXAgbmFtZSBjYW4gbm90IGJlIGxvbmdlciB0aGFuIDEyOCBjaGFyYWN0ZXJzIGJ1dCBoYXMgJHtwcm9wcy5nYW1lU2VydmVyR3JvdXBOYW1lLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCEvXlthLXpBLVowLTktXFwuXSskLy50ZXN0KHByb3BzLmdhbWVTZXJ2ZXJHcm91cE5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgR2FtZSBzZXJ2ZXIgZ3JvdXAgbmFtZSAke3Byb3BzLmdhbWVTZXJ2ZXJHcm91cE5hbWV9IGNhbiBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgaHlwaGVucywgYmFjayBzbGFzaCBvciBkb3Qgd2l0aCBubyBzcGFjZXMuYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy52cGMgPSBwcm9wcy52cGM7XG4gICAgdGhpcy52cGNTdWJuZXRzID0gcHJvcHMudnBjU3VibmV0cyA/PyB7IHN1Ym5ldFR5cGU6IGVjMi5TdWJuZXRUeXBlLlBVQkxJQyB9O1xuICAgIGNvbnN0IHsgc3VibmV0SWRzIH0gPSBwcm9wcy52cGMuc2VsZWN0U3VibmV0cyh0aGlzLnZwY1N1Ym5ldHMpO1xuXG4gICAgaWYgKHByb3BzLm1pblNpemUgJiYgcHJvcHMubWluU2l6ZSA8IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIG1pbmltdW0gbnVtYmVyIG9mIGluc3RhbmNlcyBhbGxvd2VkIGluIHRoZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cCBjYW5ub3QgYmUgbG93ZXIgdGhhbiAwLCBnaXZlbiAke3Byb3BzLm1pblNpemV9YCk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm1heFNpemUgJiYgcHJvcHMubWF4U2l6ZSA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluc3RhbmNlcyBhbGxvd2VkIGluIHRoZSBBbWF6b24gRUMyIEF1dG8gU2NhbGluZyBncm91cCBjYW5ub3QgYmUgbG93ZXIgdGhhbiAxLCBnaXZlbiAke3Byb3BzLm1heFNpemV9YCk7XG4gICAgfVxuXG4gICAgaWYgKHN1Ym5ldElkcy5sZW5ndGggPiAyMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBObyBtb3JlIHRoYW4gMjAgc3VibmV0cyBhcmUgYWxsb3dlZCBwZXIgZ2FtZSBzZXJ2ZXIgZ3JvdXAsIGdpdmVuICR7c3VibmV0SWRzLmxlbmd0aH1gKTtcbiAgICB9XG5cbiAgICAvLyBBZGQgYWxsIGluc3RhbmNlIGRlZmluaXRpb25zXG4gICAgaWYgKHByb3BzLmluc3RhbmNlRGVmaW5pdGlvbnMubGVuZ3RoID4gMjApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgTm8gbW9yZSB0aGFuIDIwIGluc3RhbmNlIGRlZmluaXRpb25zIGFyZSBhbGxvd2VkIHBlciBnYW1lIHNlcnZlciBncm91cCwgZ2l2ZW4gJHtwcm9wcy5pbnN0YW5jZURlZmluaXRpb25zLmxlbmd0aH1gKTtcbiAgICB9XG5cbiAgICB0aGlzLnJvbGUgPSBwcm9wcy5yb2xlID8/IG5ldyBpYW0uUm9sZSh0aGlzLCAnU2VydmljZVJvbGUnLCB7XG4gICAgICBhc3N1bWVkQnk6IG5ldyBpYW0uQ29tcG9zaXRlUHJpbmNpcGFsKFxuICAgICAgICBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2dhbWVsaWZ0LmFtYXpvbmF3cy5jb20nKSxcbiAgICAgICAgbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdhdXRvc2NhbGluZy5hbWF6b25hd3MuY29tJykpLFxuICAgICAgbWFuYWdlZFBvbGljaWVzOiBbXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZSgnR2FtZUxpZnRHYW1lU2VydmVyR3JvdXBQb2xpY3knKSxcbiAgICAgIF0sXG4gICAgfSk7XG4gICAgdGhpcy5ncmFudFByaW5jaXBhbCA9IHRoaXMucm9sZTtcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IENmbkdhbWVTZXJ2ZXJHcm91cCh0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBnYW1lU2VydmVyR3JvdXBOYW1lOiB0aGlzLnBoeXNpY2FsTmFtZSxcbiAgICAgIGF1dG9TY2FsaW5nUG9saWN5OiB0aGlzLnBhcnNlQXV0b1NjYWxpbmdQb2xpY3kocHJvcHMpLFxuICAgICAgZGVsZXRlT3B0aW9uOiBwcm9wcy5kZWxldGVPcHRpb24sXG4gICAgICBiYWxhbmNpbmdTdHJhdGVneTogcHJvcHMuYmFsYW5jaW5nU3RyYXRlZ3ksXG4gICAgICBnYW1lU2VydmVyUHJvdGVjdGlvblBvbGljeTogcHJvcHMucHJvdGVjdEdhbWVTZXJ2ZXIgPyAnRlVMTF9QUk9URUNUSU9OJyA6ICdOT19QUk9URUNUSU9OJyxcbiAgICAgIGluc3RhbmNlRGVmaW5pdGlvbnM6IHRoaXMucGFyc2VJbnN0YW5jZURlZmluaXRpb25zKHByb3BzKSxcbiAgICAgIGxhdW5jaFRlbXBsYXRlOiB0aGlzLnBhcnNlTGF1bmNoVGVtcGxhdGUocHJvcHMpLFxuICAgICAgbWluU2l6ZTogcHJvcHMubWluU2l6ZSxcbiAgICAgIG1heFNpemU6IHByb3BzLm1heFNpemUsXG4gICAgICByb2xlQXJuOiB0aGlzLnJvbGUucm9sZUFybixcbiAgICAgIHZwY1N1Ym5ldHM6IHN1Ym5ldElkcyxcbiAgICB9KTtcblxuICAgIHRoaXMuZ2FtZVNlcnZlckdyb3VwTmFtZSA9IHRoaXMuZ2V0UmVzb3VyY2VOYW1lQXR0cmlidXRlKHJlc291cmNlLnJlZik7XG4gICAgdGhpcy5nYW1lU2VydmVyR3JvdXBBcm4gPSB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKHJlc291cmNlLmF0dHJHYW1lU2VydmVyR3JvdXBBcm4sIHtcbiAgICAgIHNlcnZpY2U6ICdnYW1lbGlmdCcsXG4gICAgICByZXNvdXJjZTogJ2dhbWVzZXJ2ZXJncm91cCcsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgYXJuRm9ybWF0OiBjZGsuQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gICAgdGhpcy5hdXRvU2NhbGluZ0dyb3VwQXJuID0gdGhpcy5nZXRSZXNvdXJjZUFybkF0dHJpYnV0ZShyZXNvdXJjZS5hdHRyQXV0b1NjYWxpbmdHcm91cEFybiwge1xuICAgICAgc2VydmljZTogJ2F1dG9zY2FsaW5nJyxcbiAgICAgIHJlc291cmNlOiAnYXV0b1NjYWxpbmdHcm91cCcsXG4gICAgICByZXNvdXJjZU5hbWU6IHRoaXMucGh5c2ljYWxOYW1lLFxuICAgICAgYXJuRm9ybWF0OiBjZGsuQXJuRm9ybWF0LkNPTE9OX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VMYXVuY2hUZW1wbGF0ZShwcm9wczogR2FtZVNlcnZlckdyb3VwUHJvcHMpOiBDZm5HYW1lU2VydmVyR3JvdXAuTGF1bmNoVGVtcGxhdGVQcm9wZXJ0eSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGxhdW5jaFRlbXBsYXRlSWQ6IHByb3BzLmxhdW5jaFRlbXBsYXRlLmxhdW5jaFRlbXBsYXRlSWQsXG4gICAgICBsYXVuY2hUZW1wbGF0ZU5hbWU6IHByb3BzLmxhdW5jaFRlbXBsYXRlLmxhdW5jaFRlbXBsYXRlTmFtZSxcbiAgICAgIHZlcnNpb246IHByb3BzLmxhdW5jaFRlbXBsYXRlLnZlcnNpb25OdW1iZXIsXG4gICAgfTtcbiAgfVxuXG4gIHByb3RlY3RlZCBwYXJzZUF1dG9TY2FsaW5nUG9saWN5KHByb3BzOiBHYW1lU2VydmVyR3JvdXBQcm9wcyk6IENmbkdhbWVTZXJ2ZXJHcm91cC5BdXRvU2NhbGluZ1BvbGljeVByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXByb3BzLmF1dG9TY2FsaW5nUG9saWN5KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBlc3RpbWF0ZWRJbnN0YW5jZVdhcm11cDogcHJvcHMuYXV0b1NjYWxpbmdQb2xpY3kuZXN0aW1hdGVkSW5zdGFuY2VXYXJtdXA/LnRvU2Vjb25kcygpLFxuICAgICAgdGFyZ2V0VHJhY2tpbmdDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIHRhcmdldFZhbHVlOiBwcm9wcy5hdXRvU2NhbGluZ1BvbGljeS50YXJnZXRUcmFja2luZ0NvbmZpZ3VyYXRpb24sXG4gICAgICB9LFxuICAgIH07XG4gIH1cblxuICBwcm90ZWN0ZWQgcGFyc2VJbnN0YW5jZURlZmluaXRpb25zKHByb3BzOiBHYW1lU2VydmVyR3JvdXBQcm9wcyk6IENmbkdhbWVTZXJ2ZXJHcm91cC5JbnN0YW5jZURlZmluaXRpb25Qcm9wZXJ0eVtdIHtcbiAgICByZXR1cm4gcHJvcHMuaW5zdGFuY2VEZWZpbml0aW9ucy5tYXAocGFyc2VJbnN0YW5jZURlZmluaXRpb24pO1xuXG4gICAgZnVuY3Rpb24gcGFyc2VJbnN0YW5jZURlZmluaXRpb24oaW5zdGFuY2VEZWZpbml0aW9uOiBJbnN0YW5jZURlZmluaXRpb24pOiBDZm5HYW1lU2VydmVyR3JvdXAuSW5zdGFuY2VEZWZpbml0aW9uUHJvcGVydHkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaW5zdGFuY2VUeXBlOiBpbnN0YW5jZURlZmluaXRpb24uaW5zdGFuY2VUeXBlLnRvU3RyaW5nKCksXG4gICAgICAgIHdlaWdodGVkQ2FwYWNpdHk6IGluc3RhbmNlRGVmaW5pdGlvbi53ZWlnaHQ/LnRvU3RyaW5nKCksXG4gICAgICB9O1xuICAgIH1cbiAgfVxufVxuIl19
@@ -20,8 +20,8 @@ export interface IGameSessionQueueDestination {
20
20
  */
21
21
  export declare enum PriorityType {
22
22
  /**
23
- * FleetIQ prioritizes locations where the average player latency (provided in each game session request) is lowest.
24
- */
23
+ * FleetIQ prioritizes locations where the average player latency (provided in each game session request) is lowest.
24
+ */
25
25
  LATENCY = "LATENCY",
26
26
  /**
27
27
  * FleetIQ prioritizes destinations with the lowest current hosting costs. Cost is evaluated based on the location, instance type, and fleet type (Spot or On-Demand) for each destination in the queue.
@@ -50,10 +50,10 @@ export declare enum PriorityType {
50
50
  */
51
51
  export interface PriorityConfiguration {
52
52
  /**
53
- * The prioritization order to use for fleet locations, when the PriorityOrder property includes LOCATION. Locations are identified by AWS Region codes such as `us-west-2.
54
- *
55
- * Each location can only be listed once.
56
- */
53
+ * The prioritization order to use for fleet locations, when the PriorityOrder property includes LOCATION. Locations are identified by AWS Region codes such as `us-west-2.
54
+ *
55
+ * Each location can only be listed once.
56
+ */
57
57
  readonly locationOrder: string[];
58
58
  /**
59
59
  * The recommended sequence to use when prioritizing where to place new game sessions.
@@ -69,10 +69,10 @@ export interface PriorityConfiguration {
69
69
  */
70
70
  export interface PlayerLatencyPolicy {
71
71
  /**
72
- * The maximum latency value that is allowed for any player, in milliseconds.
73
- *
74
- * All policies must have a value set for this property.
75
- */
72
+ * The maximum latency value that is allowed for any player, in milliseconds.
73
+ *
74
+ * All policies must have a value set for this property.
75
+ */
76
76
  readonly maximumIndividualPlayerLatency: cdk.Duration;
77
77
  /**
78
78
  * The length of time, in seconds, that the policy is enforced while placing a new game session.
@@ -86,20 +86,20 @@ export interface PlayerLatencyPolicy {
86
86
  */
87
87
  export interface IGameSessionQueue extends cdk.IResource {
88
88
  /**
89
- * The Name of the gameSessionQueue.
90
- *
91
- * @attribute
92
- */
89
+ * The Name of the gameSessionQueue.
90
+ *
91
+ * @attribute
92
+ */
93
93
  readonly gameSessionQueueName: string;
94
94
  /**
95
- * The ARN of the gameSessionQueue.
96
- *
97
- * @attribute
98
- */
95
+ * The ARN of the gameSessionQueue.
96
+ *
97
+ * @attribute
98
+ */
99
99
  readonly gameSessionQueueArn: string;
100
100
  /**
101
- * Return the given named metric for this fleet.
102
- */
101
+ * Return the given named metric for this fleet.
102
+ */
103
103
  metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric;
104
104
  /**
105
105
  * Average amount of time that game session placement requests in the queue with status PENDING have been waiting to be fulfilled.
@@ -127,8 +127,8 @@ export interface IGameSessionQueue extends cdk.IResource {
127
127
  metricPlacementsTimedOut(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
128
128
  }
129
129
  /**
130
- * A full specification of an gameSessionQueue that can be used to import it fluently into the CDK application.
131
- */
130
+ * A full specification of an gameSessionQueue that can be used to import it fluently into the CDK application.
131
+ */
132
132
  export interface GameSessionQueueAttributes {
133
133
  /**
134
134
  * The ARN of the gameSessionQueue
@@ -148,12 +148,12 @@ export interface GameSessionQueueAttributes {
148
148
  readonly gameSessionQueueName?: string;
149
149
  }
150
150
  /**
151
- * Properties for a new Fleet gameSessionQueue
152
- */
151
+ * Properties for a new Fleet gameSessionQueue
152
+ */
153
153
  export interface GameSessionQueueProps {
154
154
  /**
155
- * Name of this gameSessionQueue
156
- */
155
+ * Name of this gameSessionQueue
156
+ */
157
157
  readonly gameSessionQueueName: string;
158
158
  /**
159
159
  * Information to be added to all events that are related to this game session queue.
@@ -206,10 +206,10 @@ export interface GameSessionQueueProps {
206
206
  */
207
207
  readonly timeout?: cdk.Duration;
208
208
  /**
209
- * A list of fleets and/or fleet alias that can be used to fulfill game session placement requests in the queue.
210
- *
211
- * Destinations are listed in order of placement preference.
212
- */
209
+ * A list of fleets and/or fleet alias that can be used to fulfill game session placement requests in the queue.
210
+ *
211
+ * Destinations are listed in order of placement preference.
212
+ */
213
213
  readonly destinations: IGameSessionQueueDestination[];
214
214
  }
215
215
  /**
@@ -221,8 +221,8 @@ export declare abstract class GameSessionQueueBase extends cdk.Resource implemen
221
221
  */
222
222
  abstract readonly gameSessionQueueName: string;
223
223
  /**
224
- * The ARN of the gameSessionQueue
225
- */
224
+ * The ARN of the gameSessionQueue
225
+ */
226
226
  abstract readonly gameSessionQueueArn: string;
227
227
  metric(metricName: string, props?: cloudwatch.MetricOptions): cloudwatch.Metric;
228
228
  metricAverageWaitTime(props?: cloudwatch.MetricOptions): cloudwatch.Metric;
@@ -258,8 +258,8 @@ export declare class GameSessionQueue extends GameSessionQueueBase {
258
258
  */
259
259
  readonly gameSessionQueueName: string;
260
260
  /**
261
- * The ARN of the gameSessionQueue.
262
- */
261
+ * The ARN of the gameSessionQueue.
262
+ */
263
263
  readonly gameSessionQueueArn: string;
264
264
  private readonly destinations;
265
265
  constructor(scope: Construct, id: string, props: GameSessionQueueProps);