@alicloud/ros-cdk-ecs 1.0.21 → 1.0.23

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.
Files changed (129) hide show
  1. package/lib/activation.d.ts +10 -9
  2. package/lib/activation.js +8 -4
  3. package/lib/assignipv6addresses.d.ts +9 -8
  4. package/lib/assignipv6addresses.js +8 -4
  5. package/lib/assignprivateipaddresses.d.ts +9 -8
  6. package/lib/assignprivateipaddresses.js +8 -4
  7. package/lib/autoprovisioninggroup.d.ts +10 -9
  8. package/lib/autoprovisioninggroup.js +8 -4
  9. package/lib/autosnapshotpolicy.d.ts +10 -9
  10. package/lib/autosnapshotpolicy.js +8 -4
  11. package/lib/capacityreservation.d.ts +69 -0
  12. package/lib/capacityreservation.js +40 -0
  13. package/lib/command.d.ts +9 -8
  14. package/lib/command.js +8 -4
  15. package/lib/copyimage.d.ts +15 -9
  16. package/lib/copyimage.js +9 -4
  17. package/lib/customimage.d.ts +29 -12
  18. package/lib/customimage.js +16 -9
  19. package/lib/datasource/activations.d.ts +9 -8
  20. package/lib/datasource/activations.js +8 -4
  21. package/lib/datasource/autosnapshotpolicies.d.ts +9 -8
  22. package/lib/datasource/autosnapshotpolicies.js +8 -4
  23. package/lib/datasource/commands.d.ts +9 -8
  24. package/lib/datasource/commands.js +8 -4
  25. package/lib/datasource/dedicatedhostclusters.d.ts +9 -8
  26. package/lib/datasource/dedicatedhostclusters.js +8 -4
  27. package/lib/datasource/dedicatedhosts.d.ts +9 -8
  28. package/lib/datasource/dedicatedhosts.js +8 -4
  29. package/lib/datasource/deploymentsets.d.ts +9 -8
  30. package/lib/datasource/deploymentsets.js +8 -4
  31. package/lib/datasource/diskcategories.d.ts +9 -8
  32. package/lib/datasource/diskcategories.js +8 -4
  33. package/lib/datasource/disks.d.ts +10 -9
  34. package/lib/datasource/disks.js +8 -4
  35. package/lib/datasource/ecs.generated.d.ts +112 -166
  36. package/lib/datasource/ecs.generated.js +55 -55
  37. package/lib/datasource/hpcclusters.d.ts +9 -8
  38. package/lib/datasource/hpcclusters.js +8 -4
  39. package/lib/datasource/images.d.ts +10 -9
  40. package/lib/datasource/images.js +8 -4
  41. package/lib/datasource/instances.d.ts +10 -9
  42. package/lib/datasource/instances.js +8 -4
  43. package/lib/datasource/keypairs.d.ts +9 -8
  44. package/lib/datasource/keypairs.js +8 -4
  45. package/lib/datasource/managedinstances.d.ts +9 -8
  46. package/lib/datasource/managedinstances.js +8 -4
  47. package/lib/datasource/networkinterfaces.d.ts +9 -8
  48. package/lib/datasource/networkinterfaces.js +8 -4
  49. package/lib/datasource/recommendinstancetypes.d.ts +14 -13
  50. package/lib/datasource/recommendinstancetypes.js +8 -4
  51. package/lib/datasource/securitygroups.d.ts +9 -8
  52. package/lib/datasource/securitygroups.js +8 -4
  53. package/lib/datasource/snapshots.d.ts +9 -8
  54. package/lib/datasource/snapshots.js +8 -4
  55. package/lib/datasource/zones.d.ts +12 -11
  56. package/lib/datasource/zones.js +8 -4
  57. package/lib/dedicatedhost.d.ts +12 -11
  58. package/lib/dedicatedhost.js +8 -4
  59. package/lib/deploymentset.d.ts +24 -10
  60. package/lib/deploymentset.js +10 -4
  61. package/lib/disk.d.ts +11 -10
  62. package/lib/disk.js +8 -4
  63. package/lib/diskattachment.d.ts +10 -9
  64. package/lib/diskattachment.js +8 -4
  65. package/lib/ecs.generated.d.ts +2015 -497
  66. package/lib/ecs.generated.js +1961 -405
  67. package/lib/elasticityassurance.d.ts +78 -0
  68. package/lib/elasticityassurance.js +41 -0
  69. package/lib/forwardentry.d.ts +12 -11
  70. package/lib/forwardentry.js +8 -4
  71. package/lib/hpccluster.d.ts +11 -10
  72. package/lib/hpccluster.js +8 -4
  73. package/lib/imagecomponent.d.ts +59 -0
  74. package/lib/imagecomponent.js +38 -0
  75. package/lib/imagepipeline.d.ts +109 -0
  76. package/lib/imagepipeline.js +47 -0
  77. package/lib/imagesharepermission.d.ts +47 -0
  78. package/lib/imagesharepermission.js +35 -0
  79. package/lib/index.d.ts +5 -0
  80. package/lib/index.js +6 -1
  81. package/lib/instance.d.ts +94 -14
  82. package/lib/instance.js +153 -25
  83. package/lib/instanceclone.d.ts +9 -8
  84. package/lib/instanceclone.js +8 -4
  85. package/lib/instancegroup.d.ts +125 -16
  86. package/lib/instancegroup.js +32 -8
  87. package/lib/instancegroupclone.d.ts +56 -11
  88. package/lib/instancegroupclone.js +38 -26
  89. package/lib/invocation.d.ts +63 -10
  90. package/lib/invocation.js +16 -5
  91. package/lib/joinsecuritygroup.d.ts +9 -8
  92. package/lib/joinsecuritygroup.js +8 -8
  93. package/lib/launchtemplate.d.ts +13 -12
  94. package/lib/launchtemplate.js +8 -4
  95. package/lib/networkinterface.d.ts +9 -8
  96. package/lib/networkinterface.js +8 -4
  97. package/lib/networkinterfaceattachment.d.ts +9 -8
  98. package/lib/networkinterfaceattachment.js +8 -4
  99. package/lib/networkinterfacepermission.d.ts +9 -8
  100. package/lib/networkinterfacepermission.js +8 -4
  101. package/lib/prefixlist.d.ts +11 -10
  102. package/lib/prefixlist.js +8 -4
  103. package/lib/ramroleattachment.d.ts +9 -8
  104. package/lib/ramroleattachment.js +8 -4
  105. package/lib/route.d.ts +9 -8
  106. package/lib/route.js +8 -4
  107. package/lib/runcommand.d.ts +54 -16
  108. package/lib/runcommand.js +15 -6
  109. package/lib/securitygroup.d.ts +9 -8
  110. package/lib/securitygroup.js +8 -4
  111. package/lib/securitygroupclone.d.ts +9 -8
  112. package/lib/securitygroupclone.js +8 -4
  113. package/lib/securitygroupegress.d.ts +10 -9
  114. package/lib/securitygroupegress.js +8 -8
  115. package/lib/securitygroupingress.d.ts +11 -10
  116. package/lib/securitygroupingress.js +8 -8
  117. package/lib/snapshot.d.ts +11 -10
  118. package/lib/snapshot.js +8 -4
  119. package/lib/snatentry.d.ts +11 -10
  120. package/lib/snatentry.js +8 -4
  121. package/lib/sshkeypair.d.ts +10 -9
  122. package/lib/sshkeypair.js +8 -4
  123. package/lib/sshkeypairattachment.d.ts +9 -8
  124. package/lib/sshkeypairattachment.js +8 -8
  125. package/lib/vpc.d.ts +12 -11
  126. package/lib/vpc.js +8 -4
  127. package/lib/vswitch.d.ts +9 -8
  128. package/lib/vswitch.js +8 -4
  129. package/package.json +1 -1
@@ -2,13 +2,10 @@ import * as ros from '@alicloud/ros-cdk-core';
2
2
  import { RosInstanceGroup } from './ecs.generated';
3
3
  export { RosInstanceGroup as InstanceGroupProperty };
4
4
  /**
5
- * Properties for defining a `ALIYUN::ECS::InstanceGroup`
5
+ * Properties for defining a `InstanceGroup`.
6
+ * See https://www.alibabacloud.com/help/ros/developer-reference/aliyun-ecs-instancegroup
6
7
  */
7
8
  export interface InstanceGroupProps {
8
- /**
9
- * Property imageId: Image ID to create ecs instance.
10
- */
11
- readonly imageId: string | ros.IResolvable;
12
9
  /**
13
10
  * Property instanceType: Ecs instance supported instance type, make sure it should be correct.
14
11
  */
@@ -17,6 +14,13 @@ export interface InstanceGroupProps {
17
14
  * Property maxAmount: Max number of instances to create, should be bigger than 'MinAmount' and smaller than 1000.
18
15
  */
19
16
  readonly maxAmount: number | ros.IResolvable;
17
+ /**
18
+ * Property affinity: Specifies whether to associate the instance on a dedicated host with the dedicated host. Valid values:
19
+ * - **default**: does not associate the ECS instance with the dedicated host. When you start an instance that was stopped in economical mode, the instance is automatically deployed to another dedicated host in the automatic deployment resource pool if the available resources of the original dedicated host are insufficient.
20
+ * - **host**: associates the ECS instance with the dedicated host. When you start an instance that was stopped in economical mode, the instance remains on the original dedicated host. If the available resources of the original dedicated host are insufficient, the instance cannot start.
21
+ * Default value: **default**.
22
+ */
23
+ readonly affinity?: string | ros.IResolvable;
20
24
  /**
21
25
  * Property allocatePublicIp: The public ip for ecs instance, if properties is true, will allocate public ip. If property InternetMaxBandwidthOut set to 0, it will not assign public ip.
22
26
  */
@@ -33,14 +37,32 @@ export interface InstanceGroupProps {
33
37
  * Property autoRenewPeriod: The time period of auto renew. When the parameter InstanceChargeType is PrePaid, it will take effect.It could be 1, 2, 3, 6, 12, 24, 36, 48, 60. Default value is 1.Old instances will not be changed.
34
38
  */
35
39
  readonly autoRenewPeriod?: number | ros.IResolvable;
40
+ /**
41
+ * Property cpuOptions: Cpu options.
42
+ */
43
+ readonly cpuOptions?: RosInstanceGroup.CpuOptionsProperty | ros.IResolvable;
44
+ /**
45
+ * Property creditSpecification: The performance mode of the burstable instance. Valid values:
46
+ * - **Standard**: the standard mode.
47
+ * - **Unlimited**: the unlimited mode.
48
+ */
49
+ readonly creditSpecification?: string | ros.IResolvable;
36
50
  /**
37
51
  * Property dedicatedHostId: which dedicated host will be deployed
38
52
  */
39
53
  readonly dedicatedHostId?: string | ros.IResolvable;
54
+ /**
55
+ * Property deletionForce: Whether force delete the instance. Default value is false.
56
+ */
57
+ readonly deletionForce?: boolean | ros.IResolvable;
40
58
  /**
41
59
  * Property deletionProtection: Whether an instance can be released manually through the console or API, deletion protection only support postPaid instance
42
60
  */
43
61
  readonly deletionProtection?: boolean | ros.IResolvable;
62
+ /**
63
+ * Property deploymentSetGroupNo: The number of the deployment set group to which to deploy the instance. If the deployment set specified by **DeploymentSetId** uses the high availability group strategy (AvailabilityGroup), you can use **DeploymentSetGroupNo** to specify a deployment set group in the deployment set. Valid values: 1 to 7.
64
+ */
65
+ readonly deploymentSetGroupNo?: number | ros.IResolvable;
44
66
  /**
45
67
  * Property deploymentSetId: Deployment set ID. The change of the property does not affect existing instances.
46
68
  */
@@ -55,7 +77,7 @@ export interface InstanceGroupProps {
55
77
  */
56
78
  readonly diskMappings?: Array<RosInstanceGroup.DiskMappingsProperty | ros.IResolvable> | ros.IResolvable;
57
79
  /**
58
- * Property eniMappings: NetworkInterface to attach to instance. Max support 1 ENI.
80
+ * Property eniMappings: NetworkInterface to attach to instance. Max support 2 ENIs.
59
81
  */
60
82
  readonly eniMappings?: Array<RosInstanceGroup.EniMappingsProperty | ros.IResolvable> | ros.IResolvable;
61
83
  /**
@@ -72,10 +94,47 @@ export interface InstanceGroupProps {
72
94
  * The host name is specified by regular expression works after restart instance manually.
73
95
  */
74
96
  readonly hostName?: string | ros.IResolvable;
97
+ /**
98
+ * Property hostNames: The hostname of instance N. You can use this parameter to specify different hostnames for multiple instances. Take note of the following items:
99
+ * - The maximum value of N must be the same as the Amount value. For example, if you set Amount to 2, you can use HostNames.1 and HostNames.2 to specify hostnames for the individual instances. Examples: HostNames.1=test1 and HostNames.2=test2.
100
+ * - You cannot specify both HostName and HostNames.N.
101
+ * - The hostname cannot start or end with a period (.) or hyphen (-). The hostname cannot contain consecutive periods (.) or hyphens (-).
102
+ * - For Windows instances, the hostname must be 2 to 15 characters in length and cannot contain periods (.) or contain only digits. The hostname can contain letters, digits, and hyphens (-).
103
+ * - For instances that run other operating systems such as Linux, the hostname must be 2 to 64 characters in length. You can use periods (.) to separate a hostname into multiple segments. Each segment can contain letters, digits, and hyphens (-).
104
+ */
105
+ readonly hostNames?: Array<string | ros.IResolvable> | ros.IResolvable;
75
106
  /**
76
107
  * Property hpcClusterId: The HPC cluster ID to which the instance belongs.The change of the property does not affect existing instances.
77
108
  */
78
109
  readonly hpcClusterId?: string | ros.IResolvable;
110
+ /**
111
+ * Property httpEndpoint: Specifies whether the access channel is enabled for instance metadata. Valid values:
112
+ * - **enabled**
113
+ * - **disabled**
114
+ * Default value: **enabled**.
115
+ */
116
+ readonly httpEndpoint?: string | ros.IResolvable;
117
+ /**
118
+ * Property httpTokens: Specifies whether the security hardening mode (IMDSv2) is forcefully used to access instance metadata. Valid values:
119
+ * - **optional**: does not forcefully use the security-enhanced mode (IMDSv2).
120
+ * - **required**: forcefully uses the security-enhanced mode (IMDSv2). After you set this parameter to required, you cannot access instance metadata in normal mode.
121
+ * Default value: **optional**.
122
+ */
123
+ readonly httpTokens?: string | ros.IResolvable;
124
+ /**
125
+ * Property imageFamily: The name of the image family. You can set this parameter to obtain the latest available custom image from the specified image family to create the instance.
126
+ * - **ImageFamily** must be empty if **ImageId** is specified.
127
+ * - **ImageFamily** can be specified if **ImageId** is not specified.
128
+ */
129
+ readonly imageFamily?: string | ros.IResolvable;
130
+ /**
131
+ * Property imageId: Image ID to create ecs instance.
132
+ */
133
+ readonly imageId?: string | ros.IResolvable;
134
+ /**
135
+ * Property imageOptions: Image options.
136
+ */
137
+ readonly imageOptions?: RosInstanceGroup.ImageOptionsProperty | ros.IResolvable;
79
138
  /**
80
139
  * Property instanceChargeType: Instance Charge type, allowed value: Prepaid and Postpaid. If specified Prepaid, please ensure you have sufficient balance in your account. Or instance creation will be failure. Default value is Postpaid.Old instances will not be changed.
81
140
  */
@@ -134,6 +193,17 @@ export interface InstanceGroupProps {
134
193
  * Property launchTemplateVersion: Version of launch template. Default version is used if version is not specified.
135
194
  */
136
195
  readonly launchTemplateVersion?: string | ros.IResolvable;
196
+ /**
197
+ * Property networkInterfaceQueueNumber: The number of queues supported by the primary ENI. Take note of the following items:
198
+ * - The value of this parameter cannot exceed the maximum number of queues per ENI allowed for the instance type.
199
+ * - The total number of queues for all ENIs on the instance cannot exceed the queue quota for the instance type.
200
+ * - If NetworkInterface.N.InstanceType is set to Primary, you cannot specify NetworkInterfaceQueueNumber but can specify NetworkInterface.N.QueueNumber
201
+ */
202
+ readonly networkInterfaceQueueNumber?: number | ros.IResolvable;
203
+ /**
204
+ * Property networkOptions: Network options.
205
+ */
206
+ readonly networkOptions?: RosInstanceGroup.NetworkOptionsProperty | ros.IResolvable;
137
207
  /**
138
208
  * Property networkType: Instance network type. Support 'vpc' and 'classic', for compatible reason, default is 'classic'. If vswitch id and vpc id is specified, the property will be forced to be set to 'vpc'
139
209
  */
@@ -151,13 +221,17 @@ export interface InstanceGroupProps {
151
221
  */
152
222
  readonly period?: number | ros.IResolvable;
153
223
  /**
154
- * Property periodUnit: Unit of prepaid time period, it could be Week/Month/Year. Default value is Month.Old instances will not be changed.
224
+ * Property periodUnit: Unit of prepaid time period, it could be Week\/Month\/Year. Default value is Month.Old instances will not be changed.
155
225
  */
156
226
  readonly periodUnit?: string | ros.IResolvable;
157
227
  /**
158
228
  * Property privateIpAddress: Private IP for the instance created. Only works for VPC instance and cannot duplicated with existing instance.
159
229
  */
160
230
  readonly privateIpAddress?: string | ros.IResolvable;
231
+ /**
232
+ * Property privatePoolOptions: The options of the private pool.
233
+ */
234
+ readonly privatePoolOptions?: RosInstanceGroup.PrivatePoolOptionsProperty | ros.IResolvable;
161
235
  /**
162
236
  * Property ramRoleName: Instance RAM role name. The name is provided and maintained by Resource Access Management (RAM) and can be queried using ListRoles. For more information, see RAM API CreateRole and ListRoles.
163
237
  */
@@ -166,6 +240,10 @@ export interface InstanceGroupProps {
166
240
  * Property resourceGroupId: Resource group id.
167
241
  */
168
242
  readonly resourceGroupId?: string | ros.IResolvable;
243
+ /**
244
+ * Property schedulerOptions: undefined
245
+ */
246
+ readonly schedulerOptions?: RosInstanceGroup.SchedulerOptionsProperty | ros.IResolvable;
169
247
  /**
170
248
  * Property securityEnhancementStrategy:
171
249
  */
@@ -177,7 +255,11 @@ export interface InstanceGroupProps {
177
255
  /**
178
256
  * Property securityGroupIds: The IDs of security groups N to which the instance belongs. The valid values of N are based on the maximum number of security groups to which an instance can belong. For more information, see Security group limits.Note: You cannot specify both SecurityGroupId and SecurityGroupIds at the same time.
179
257
  */
180
- readonly securityGroupIds?: Array<any | ros.IResolvable> | ros.IResolvable;
258
+ readonly securityGroupIds?: Array<string | ros.IResolvable> | ros.IResolvable;
259
+ /**
260
+ * Property securityOptions: Security options.
261
+ */
262
+ readonly securityOptions?: RosInstanceGroup.SecurityOptionsProperty | ros.IResolvable;
181
263
  /**
182
264
  * Property spotDuration: The protection period of the preemptible instance. Unit: hours. Valid values: 0, 1, 2, 3, 4, 5, and 6.
183
265
  * Protection periods of 2, 3, 4, 5, and 6 hours are in invitational preview. If you want to set this parameter to one of these values, submit a ticket.
@@ -197,6 +279,14 @@ export interface InstanceGroupProps {
197
279
  * Property spotStrategy: The spot strategy of a Pay-As-You-Go instance, and it takes effect only when parameter InstanceChargeType is PostPaid. Value range: "NoSpot: A regular Pay-As-You-Go instance", "SpotWithPriceLimit: A price threshold for a spot instance, ""SpotAsPriceGo: A price that is based on the highest Pay-As-You-Go instance. "Default value: NoSpot.
198
280
  */
199
281
  readonly spotStrategy?: string | ros.IResolvable;
282
+ /**
283
+ * Property storageSetId: The storage set ID.
284
+ */
285
+ readonly storageSetId?: string | ros.IResolvable;
286
+ /**
287
+ * Property storageSetPartitionNumber: The maximum number of partitions in the storage set. The value must be greater than or equal to 2.
288
+ */
289
+ readonly storageSetPartitionNumber?: number | ros.IResolvable;
200
290
  /**
201
291
  * Property systemDiskAutoSnapshotPolicyId: Auto snapshot policy ID.
202
292
  */
@@ -236,7 +326,7 @@ export interface InstanceGroupProps {
236
326
  */
237
327
  readonly systemDiskKmsKeyId?: string | ros.IResolvable;
238
328
  /**
239
- * Property systemDiskPerformanceLevel: The performance level of the enhanced SSD used as the system disk.Default value: PL1. Valid values:PL0: A single enhanced SSD delivers up to 10,000 random read/write IOPS.PL1: A single enhanced SSD delivers up to 50,000 random read/write IOPS.PL2: A single enhanced SSD delivers up to 100,000 random read/write IOPS.PL3: A single enhanced SSD delivers up to 1,000,000 random read/write IOPS.
329
+ * Property systemDiskPerformanceLevel: The performance level of the enhanced SSD used as the system disk.Default value: PL1. Valid values:PL0: A single enhanced SSD delivers up to 10,000 random read\/write IOPS.PL1: A single enhanced SSD delivers up to 50,000 random read\/write IOPS.PL2: A single enhanced SSD delivers up to 100,000 random read\/write IOPS.PL3: A single enhanced SSD delivers up to 1,000,000 random read\/write IOPS.
240
330
  */
241
331
  readonly systemDiskPerformanceLevel?: string | ros.IResolvable;
242
332
  /**
@@ -255,6 +345,21 @@ export interface InstanceGroupProps {
255
345
  * Property tags: Tags to attach to instance. Max support 20 tags to add during create instance. Each tag with two properties Key and Value, and Key is required.
256
346
  */
257
347
  readonly tags?: RosInstanceGroup.TagsProperty[];
348
+ /**
349
+ * Property tenancy: Specifies whether to create the instance on a dedicated host. Valid values:
350
+ * - **default**: creates the instance on a non-dedicated host.
351
+ * - **host**: creates the instance on a dedicated host. If you do not specify **DedicatedHostId**, Alibaba Cloud selects a dedicated host for the instance.
352
+ * Default value: **default**.
353
+ */
354
+ readonly tenancy?: string | ros.IResolvable;
355
+ /**
356
+ * Property uniqueSuffix: Specifies whether to automatically append incremental suffixes to the hostname specified by the **HostName** parameter and to the instance name specified by the **InstanceName** parameter when you batch create instances. The incremental suffixes can range from 001 to 999. Valid values:
357
+ * - **true**: appends incremental suffixes to the hostname and the instance name.
358
+ * - **false**: does not append incremental suffixes to the hostname or the instance name.
359
+ * Default value: **false**.
360
+ * When the **HostName** or **InstanceName** value is set in the name_prefix[begin_number,bits] format without a suffix (name_suffix), the **UniqueSuffix** parameter does not take effect. The names are sorted in the specified sequence.
361
+ */
362
+ readonly uniqueSuffix?: boolean | ros.IResolvable;
258
363
  /**
259
364
  * Property updatePolicy: Specify the policy at update.
260
365
  * The value can be 'ForNewInstances' or 'ForAllInstances'.
@@ -262,6 +367,10 @@ export interface InstanceGroupProps {
262
367
  * The default is 'ForNewInstances'
263
368
  */
264
369
  readonly updatePolicy?: string | ros.IResolvable;
370
+ /**
371
+ * Property useAdditionalService: Specifies whether to use the system configurations for virtual machines provided by Alibaba Cloud. System configurations for Windows: NTP and KMS. System configurations for Linux: NTP and YUM.
372
+ */
373
+ readonly useAdditionalService?: boolean | ros.IResolvable;
265
374
  /**
266
375
  * Property userData: User data to pass to instance. [1, 16KB] characters.User data should not be base64 encoded. If you want to pass base64 encoded string to the property, use function Fn::Base64Decode to decode the base64 string first.
267
376
  */
@@ -286,13 +395,15 @@ export interface InstanceGroupProps {
286
395
  readonly zoneIds?: Array<string | ros.IResolvable> | ros.IResolvable;
287
396
  }
288
397
  /**
289
- * A ROS resource type: `ALIYUN::ECS::InstanceGroup`
398
+ * This class encapsulates and extends the ROS resource type `ALIYUN::ECS::InstanceGroup`, which is used to create a group of Elastic Compute Service (ECS) instances that have the same configurations.
399
+ * @Note This class may have some new functions to facilitate development, so it is recommended to use this class instead of `RosInstanceGroup`for a more convenient development experience.
400
+ * See https://www.alibabacloud.com/help/ros/developer-reference/aliyun-ecs-instancegroup
290
401
  */
291
402
  export declare class InstanceGroup extends ros.Resource {
292
- /**
293
- * A factory method that creates a new instance of this class from an object
294
- * containing the properties of this ROS resource, which will be assigned to ROS resource.
295
- */
403
+ protected scope: ros.Construct;
404
+ protected id: string;
405
+ protected props: InstanceGroupProps;
406
+ protected enableResourcePropertyConstraint: boolean;
296
407
  /**
297
408
  * Attribute HostNames: Host names of created instances.
298
409
  */
@@ -330,8 +441,6 @@ export declare class InstanceGroup extends ros.Resource {
330
441
  */
331
442
  readonly attrZoneIds: ros.IResolvable;
332
443
  /**
333
- * Create a new `ALIYUN::ECS::InstanceGroup`.
334
- *
335
444
  * Param scope - scope in which this resource is defined
336
445
  * Param id - scoped id of the resource
337
446
  * Param props - resource properties
@@ -5,18 +5,22 @@ const ros = require("@alicloud/ros-cdk-core");
5
5
  const ecs_generated_1 = require("./ecs.generated");
6
6
  Object.defineProperty(exports, "InstanceGroupProperty", { enumerable: true, get: function () { return ecs_generated_1.RosInstanceGroup; } });
7
7
  /**
8
- * A ROS resource type: `ALIYUN::ECS::InstanceGroup`
8
+ * This class encapsulates and extends the ROS resource type `ALIYUN::ECS::InstanceGroup`, which is used to create a group of Elastic Compute Service (ECS) instances that have the same configurations.
9
+ * @Note This class may have some new functions to facilitate development, so it is recommended to use this class instead of `RosInstanceGroup`for a more convenient development experience.
10
+ * See https://www.alibabacloud.com/help/ros/developer-reference/aliyun-ecs-instancegroup
9
11
  */
10
12
  class InstanceGroup extends ros.Resource {
11
13
  /**
12
- * Create a new `ALIYUN::ECS::InstanceGroup`.
13
- *
14
14
  * Param scope - scope in which this resource is defined
15
15
  * Param id - scoped id of the resource
16
16
  * Param props - resource properties
17
17
  */
18
18
  constructor(scope, id, props, enableResourcePropertyConstraint = true) {
19
19
  super(scope, id);
20
+ this.scope = scope;
21
+ this.id = id;
22
+ this.props = props;
23
+ this.enableResourcePropertyConstraint = enableResourcePropertyConstraint;
20
24
  const rosInstanceGroup = new ecs_generated_1.RosInstanceGroup(this, id, {
21
25
  dedicatedHostId: props.dedicatedHostId,
22
26
  resourceGroupId: props.resourceGroupId,
@@ -25,44 +29,59 @@ class InstanceGroup extends ros.Resource {
25
29
  systemDiskProvisionedIops: props.systemDiskProvisionedIops,
26
30
  systemDiskEncryptAlgorithm: props.systemDiskEncryptAlgorithm,
27
31
  ramRoleName: props.ramRoleName,
32
+ privatePoolOptions: props.privatePoolOptions,
28
33
  systemDiskPerformanceLevel: props.systemDiskPerformanceLevel,
29
34
  imageId: props.imageId,
35
+ imageOptions: props.imageOptions,
30
36
  systemDiskDiskName: props.systemDiskDiskName,
37
+ storageSetId: props.storageSetId,
38
+ useAdditionalService: props.useAdditionalService,
31
39
  tags: props.tags,
32
40
  hostName: props.hostName,
33
41
  systemDiskStorageClusterId: props.systemDiskStorageClusterId,
34
42
  launchTemplateName: props.launchTemplateName,
35
43
  updatePolicy: props.updatePolicy === undefined || props.updatePolicy === null ? 'ForNewInstances' : props.updatePolicy,
36
44
  systemDiskKmsKeyId: props.systemDiskKmsKeyId,
45
+ cpuOptions: props.cpuOptions,
37
46
  vSwitchId: props.vSwitchId,
38
47
  period: props.period === undefined || props.period === null ? 1 : props.period,
48
+ imageFamily: props.imageFamily,
39
49
  launchTemplateId: props.launchTemplateId,
40
50
  deletionProtection: props.deletionProtection,
51
+ httpEndpoint: props.httpEndpoint,
41
52
  securityGroupIds: props.securityGroupIds,
42
53
  internetChargeType: props.internetChargeType === undefined || props.internetChargeType === null ? 'PayByTraffic' : props.internetChargeType,
43
- instanceName: props.instanceName,
44
- spotInterruptionBehavior: props.spotInterruptionBehavior,
45
54
  deploymentSetId: props.deploymentSetId,
55
+ spotInterruptionBehavior: props.spotInterruptionBehavior === undefined || props.spotInterruptionBehavior === null ? 'Terminate' : props.spotInterruptionBehavior,
56
+ instanceName: props.instanceName,
46
57
  internetMaxBandwidthOut: props.internetMaxBandwidthOut === undefined || props.internetMaxBandwidthOut === null ? 1 : props.internetMaxBandwidthOut,
47
58
  vpcId: props.vpcId,
59
+ uniqueSuffix: props.uniqueSuffix === undefined || props.uniqueSuffix === null ? false : props.uniqueSuffix,
48
60
  launchTemplateVersion: props.launchTemplateVersion,
61
+ securityOptions: props.securityOptions,
62
+ affinity: props.affinity,
49
63
  securityEnhancementStrategy: props.securityEnhancementStrategy,
50
64
  autoReleaseTime: props.autoReleaseTime,
51
65
  periodUnit: props.periodUnit === undefined || props.periodUnit === null ? 'Month' : props.periodUnit,
66
+ tenancy: props.tenancy,
52
67
  privateIpAddress: props.privateIpAddress,
53
68
  description: props.description,
54
69
  diskMappings: props.diskMappings,
55
- userData: props.userData,
56
70
  systemDiskSize: props.systemDiskSize,
71
+ userData: props.userData,
57
72
  autoRenew: props.autoRenew === undefined || props.autoRenew === null ? 'False' : props.autoRenew,
58
73
  spotDuration: props.spotDuration,
74
+ storageSetPartitionNumber: props.storageSetPartitionNumber,
59
75
  ipv6Addresses: props.ipv6Addresses,
60
76
  systemDiskEncrypted: props.systemDiskEncrypted,
61
77
  maxAmount: props.maxAmount,
62
78
  systemDiskAutoSnapshotPolicyId: props.systemDiskAutoSnapshotPolicyId,
79
+ deletionForce: props.deletionForce === undefined || props.deletionForce === null ? false : props.deletionForce,
63
80
  networkType: props.networkType,
64
81
  ipv6AddressCount: props.ipv6AddressCount,
82
+ schedulerOptions: props.schedulerOptions,
65
83
  spotPriceLimit: props.spotPriceLimit,
84
+ hostNames: props.hostNames,
66
85
  zoneIds: props.zoneIds,
67
86
  instanceType: props.instanceType,
68
87
  allocatePublicIp: props.allocatePublicIp === undefined || props.allocatePublicIp === null ? true : props.allocatePublicIp,
@@ -75,9 +94,14 @@ class InstanceGroup extends ros.Resource {
75
94
  zoneId: props.zoneId,
76
95
  hpcClusterId: props.hpcClusterId,
77
96
  securityGroupId: props.securityGroupId,
97
+ deploymentSetGroupNo: props.deploymentSetGroupNo,
78
98
  systemDiskCategory: props.systemDiskCategory === undefined || props.systemDiskCategory === null ? 'cloud_efficiency' : props.systemDiskCategory,
79
- eniMappings: props.eniMappings,
80
99
  systemDiskBurstingEnabled: props.systemDiskBurstingEnabled,
100
+ eniMappings: props.eniMappings,
101
+ networkOptions: props.networkOptions,
102
+ httpTokens: props.httpTokens,
103
+ networkInterfaceQueueNumber: props.networkInterfaceQueueNumber,
104
+ creditSpecification: props.creditSpecification,
81
105
  }, enableResourcePropertyConstraint && this.stack.enableResourcePropertyConstraint);
82
106
  this.resource = rosInstanceGroup;
83
107
  this.attrHostNames = rosInstanceGroup.attrHostNames;
@@ -92,4 +116,4 @@ class InstanceGroup extends ros.Resource {
92
116
  }
93
117
  }
94
118
  exports.InstanceGroup = InstanceGroup;
95
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2Vncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluc3RhbmNlZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOENBQThDO0FBQzlDLG1EQUFtRDtBQUV0QixzR0FGcEIsZ0NBQWdCLE9BRXlCO0FBMlZsRDs7R0FFRztBQUNILE1BQWEsYUFBYyxTQUFRLEdBQUcsQ0FBQyxRQUFRO0lBb0QzQzs7Ozs7O09BTUc7SUFDSCxZQUFZLEtBQW9CLEVBQUUsRUFBVSxFQUFFLEtBQXlCLEVBQUUsbUNBQTJDLElBQUk7UUFDcEgsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixNQUFNLGdCQUFnQixHQUFHLElBQUksZ0NBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRztZQUNyRCxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxxQkFBcUI7WUFDbEQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7WUFDdkkseUJBQXlCLEVBQUUsS0FBSyxDQUFDLHlCQUF5QjtZQUMxRCwwQkFBMEIsRUFBRSxLQUFLLENBQUMsMEJBQTBCO1lBQzVELFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QiwwQkFBMEIsRUFBRSxLQUFLLENBQUMsMEJBQTBCO1lBQzVELE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1lBQzVDLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsMEJBQTBCLEVBQUUsS0FBSyxDQUFD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LElBQUksQ0FBQyxrQkFBa0IsR0FBRyxnQkFBZ0IsQ0FBQyxrQkFBa0IsQ0FBQztRQUM5RCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUM7UUFDNUQsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7UUFDaEQsSUFBSSxDQUFDLGNBQWMsR0FBRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUM7UUFDdEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxnQkFBZ0IsQ0FBQyxhQUFhLENBQUM7UUFDcEQsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxXQUFXLENBQUM7SUFDcEQsQ0FBQztDQUNKO0FBdklELHNDQXVJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHJvcyBmcm9tICdAYWxpY2xvdWQvcm9zLWNkay1jb3JlJztcbmltcG9ydCB7IFJvc0luc3RhbmNlR3JvdXAgfSBmcm9tICcuL2Vjcy5nZW5lcmF0ZWQnO1xuLy8gR2VuZXJhdGVkIGZyb20gdGhlIEFsaUNsb3VkIFJPUyBSZXNvdXJjZSBTcGVjaWZpY2F0aW9uXG5leHBvcnQgeyBSb3NJbnN0YW5jZUdyb3VwIGFzIEluc3RhbmNlR3JvdXBQcm9wZXJ0eSB9O1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGEgYEFMSVlVTjo6RUNTOjpJbnN0YW5jZUdyb3VwYFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluc3RhbmNlR3JvdXBQcm9wcyB7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBpbWFnZUlkOiBJbWFnZSBJRCB0byBjcmVhdGUgZWNzIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGltYWdlSWQ6IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGluc3RhbmNlVHlwZTogRWNzIGluc3RhbmNlIHN1cHBvcnRlZCBpbnN0YW5jZSB0eXBlLCBtYWtlIHN1cmUgaXQgc2hvdWxkIGJlIGNvcnJlY3QuXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlOiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBtYXhBbW91bnQ6IE1heCBudW1iZXIgb2YgaW5zdGFuY2VzIHRvIGNyZWF0ZSwgc2hvdWxkIGJlIGJpZ2dlciB0aGFuICdNaW5BbW91bnQnIGFuZCBzbWFsbGVyIHRoYW4gMTAwMC5cbiAgICAgKi9cbiAgICByZWFkb25seSBtYXhBbW91bnQ6IG51bWJlciB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGFsbG9jYXRlUHVibGljSXA6IFRoZSBwdWJsaWMgaXAgZm9yIGVjcyBpbnN0YW5jZSwgaWYgcHJvcGVydGllcyBpcyB0cnVlLCB3aWxsIGFsbG9jYXRlIHB1YmxpYyBpcC4gSWYgcHJvcGVydHkgSW50ZXJuZXRNYXhCYW5kd2lkdGhPdXQgc2V0IHRvIDAsIGl0IHdpbGwgbm90IGFzc2lnbiBwdWJsaWMgaXAuXG4gICAgICovXG4gICAgcmVhZG9ubHkgYWxsb2NhdGVQdWJsaWNJcD86IGJvb2xlYW4gfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBhdXRvUmVsZWFzZVRpbWU6IEF1dG8gcmVsZWFzZSB0aW1lIGZvciBjcmVhdGVkIGluc3RhbmNlLCBGb2xsb3cgSVNPODYwMSBzdGFuZGFyZCB1c2luZyBVVEMgdGltZS4gZm9ybWF0IGlzICd5eXl5LU1NLWRkVEhIOm1tOnNzWicuIE5vdCBiaWdnZXIgdGhhbiAzIHllYXJzIGZyb20gdGhpcyBkYXkgb253YXJkc1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGF1dG9SZWxlYXNlVGltZT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGF1dG9SZW5ldzogV2hldGhlciByZW5ldyB0aGUgZmVlIGF1dG9tYXRpY2FsbHk/IFdoZW4gdGhlIHBhcmFtZXRlciBJbnN0YW5jZUNoYXJnZVR5cGUgaXMgUHJlUGFpZCwgaXQgd2lsbCB0YWtlIGVmZmVjdC4gUmFuZ2Ugb2YgdmFsdWU6VHJ1ZTogYXV0b21hdGljIHJlbmV3YWwuRmFsc2U6IG5vIGF1dG9tYXRpYyByZW5ld2FsLiBEZWZhdWx0IHZhbHVlIGlzIEZhbHNlLk9sZCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBhdXRvUmVuZXc/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBhdXRvUmVuZXdQZXJpb2Q6IFRoZSB0aW1lIHBlcmlvZCBvZiBhdXRvIHJlbmV3LiBXaGVuIHRoZSBwYXJhbWV0ZXIgSW5zdGFuY2VDaGFyZ2VUeXBlIGlzIFByZVBhaWQsIGl0IHdpbGwgdGFrZSBlZmZlY3QuSXQgY291bGQgYmUgMSwgMiwgMywgNiwgMTIsIDI0LCAzNiwgNDgsIDYwLiBEZWZhdWx0IHZhbHVlIGlzIDEuT2xkIGluc3RhbmNlcyB3aWxsIG5vdCBiZSBjaGFuZ2VkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGF1dG9SZW5ld1BlcmlvZD86IG51bWJlciB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGRlZGljYXRlZEhvc3RJZDogd2hpY2ggZGVkaWNhdGVkIGhvc3Qgd2lsbCBiZSBkZXBsb3llZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRlZGljYXRlZEhvc3RJZD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGRlbGV0aW9uUHJvdGVjdGlvbjogV2hldGhlciBhbiBpbnN0YW5jZSBjYW4gYmUgcmVsZWFzZWQgbWFudWFsbHkgdGhyb3VnaCB0aGUgY29uc29sZSBvciBBUEksIGRlbGV0aW9uIHByb3RlY3Rpb24gb25seSBzdXBwb3J0IHBvc3RQYWlkIGluc3RhbmNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVsZXRpb25Qcm90ZWN0aW9uPzogYm9vbGVhbiB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGRlcGxveW1lbnRTZXRJZDogRGVwbG95bWVudCBzZXQgSUQuIFRoZSBjaGFuZ2Ugb2YgdGhlIHByb3BlcnR5IGRvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVwbG95bWVudFNldElkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZGVzY3JpcHRpb246IERlc2NyaXB0aW9uIG9mIHRoZSBpbnN0YW5jZSwgWzIsIDI1Nl0gY2hhcmFjdGVycy4gRG8gbm90IGZpbGwgb3IgZW1wdHksIHRoZSBkZWZhdWx0IGlzIGVtcHR5LiBPbGQgaW5zdGFuY2VzIHdpbGwgbm90IGJlIGNoYW5nZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBkaXNrTWFwcGluZ3M6IERpc2sgbWFwcGluZ3MgdG8gYXR0YWNoIHRvIGluc3RhbmNlLiBNYXggc3VwcG9ydCAxNiBkaXNrcy5cbiAgICAgKiBJZiB0aGUgaW1hZ2UgY29udGFpbnMgYSBkYXRhIGRpc2ssIHlvdSBjYW4gc3BlY2lmeSBvdGhlciBwYXJhbWV0ZXJzIG9mIHRoZSBkYXRhIGRpc2sgdmlhIHRoZSBzYW1lIHZhbHVlIG9mIHBhcmFtZXRlciBcIkRldmljZVwiLiBJZiBwYXJhbWV0ZXIgXCJDYXRlZ29yeVwiIGlzIG5vdCBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgY2xvdWRfZWZmaWNpZW5jeSBpbnN0ZWFkIG9mIFwiQ2F0ZWdvcnlcIiBvZiBkYXRhIGRpc2sgaW4gdGhlIGltYWdlLk9sZCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBkaXNrTWFwcGluZ3M/OiBBcnJheTxSb3NJbnN0YW5jZUdyb3VwLkRpc2tNYXBwaW5nc1Byb3BlcnR5IHwgcm9zLklSZXNvbHZhYmxlPiB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGVuaU1hcHBpbmdzOiBOZXR3b3JrSW50ZXJmYWNlIHRvIGF0dGFjaCB0byBpbnN0YW5jZS4gTWF4IHN1cHBvcnQgMSBFTkkuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW5pTWFwcGluZ3M/OiBBcnJheTxSb3NJbnN0YW5jZUdyb3VwLkVuaU1hcHBpbmdzUHJvcGVydHkgfCByb3MuSVJlc29sdmFibGU+IHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaG9zdE5hbWU6IEhvc3QgbmFtZSBvZiBjcmVhdGVkIGVjcyBpbnN0YW5jZS4gYXQgbGVhc3QgMiBjaGFyYWN0ZXJzLCBhbmQgJy4nICctJyBJcyBub3QgdGhlIGZpcnN0IGFuZCBsYXN0IGNoYXJhY3RlcnMgYXMgaG9zdG5hbWUsIG5vdCBjb250aW51b3VzIHVzZS4gV2luZG93cyBwbGF0Zm9ybSBjYW4gYmUgdXAgdG8gMTUgY2hhcmFjdGVycywgYWxsb3dpbmcgbGV0dGVycyAod2l0aG91dCBsaW1pdGluZyBjYXNlKSwgbnVtYmVycyBhbmQgJy0nLCBhbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbnVtYmVyIG9mIHBvaW50cywgbm90IGFsbCBpcyBkaWdpdGFsICgnLicpLk90aGVyIChMaW51eCwgZXRjLikgcGxhdGZvcm0gdXAgdG8gNjQgY2hhcmFjdGVycywgYWxsb3dpbmcgc3VwcG9ydCBudW1iZXIgbXVsdGlwbGUgcG9pbnRzIGZvciB0aGUgcGVyaW9kIGJldHdlZW4gdGhlIHBvaW50cywgZWFjaCBwZXJtaXQgbGV0dGVycyAod2l0aG91dCBsaW1pdGluZyBjYXNlKSwgbnVtYmVycyBhbmQgJy0nIGNvbXBvbmVudHMuIFxuICAgICAqIFN1cHBvcnQgdG8gdXNlIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2V0IHRoZSBkaWZmZXJlbnQgaW5zdGFuY2UgbmFtZSBmb3IgZWFjaCBFQ1MgaW5zdGFuY2UuIEhvc3ROYW1lIGNvdWxkIGJlIHNwZWNpZmllZCBhcyAnbmFtZV9wcmVmaXhbYmVnaW5fbnVtYmVyLGJpdHNdbmFtZV9zdWZmaXgnLCBzdWNoIGFzICdob3N0WzEyMyw0XXRhaWwnLiBJZiB5b3UgY3JlYXRlcyAzIGluc3RhbmNlcyB3aXRoIGhvc3RuYW1lICdob3N0WzEyMyw0XXRhaWwnLCBhbGwgdGhlIGhvc3QgbmFtZXMgb2YgaW5zdGFuY2VzIGFyZSBob3N0MDEyM3RhaWwsIGhvc3QwMTI0dGFpbCwgaG9zdDAxMjV0YWlsLiBUaGUgJ25hbWVfcHJlZml4W2JlZ2luX251bWJlcixiaXRzXW5hbWVfc3VmZml4JyBzaG91bGQgZm9sbG93IHRob3NlIHJ1bGVzOiBcbiAgICAgKiAxLiAnbmFtZV9wcmVmaXgnIGlzIHJlcXVpcmVkLiBcbiAgICAgKiAyLiAnbmFtZV9zdWZmaXgnIGlzIG9wdGlvbmFsLiBcbiAgICAgKiAzLiBUaGUgbmFtZSByZWd1bGFyIGV4cHJlc3Npb24gY2FuJ3QgaW5jbHVkZSBhbnkgc3BhY2VzLiBcbiAgICAgKiA0LiBUaGUgJ2JpdHMnIG11c3QgYmUgaW4gcmFuZ2UgWzEsIDZdLiBcbiAgICAgKiA1LiBUaGUgJ2JlZ2luX251bWJlcicgbXVzdCBiZSBpbiByYW5nZSBbMCwgOTk5OTk5XS4gXG4gICAgICogNi4gWW91IGNvdWxkIG9ubHkgc3BlY2lmeSAnYmVnaW5fbnVtYmVyJy4gVGhlICdiaXRzJyB3aWxsIGJlIHNldCBhcyA2IGJ5IGRlZmF1bHQuIFxuICAgICAqIDcuIFlvdSBhbHNvIGNvdWxkIG9ubHkgc3BlY2lmeSB0aGUgW10gb3IgWyxdLiBUaGUgJ2JlZ2luX251bWJlcicgd2lsbCBiZSBzZXQgYXMgMCBieSBkZWZhdWx0LCB0aGUgJ2JpdHMnIHdpbGwgYmUgc2V0IGFzIDYgYnkgZGVmYXVsdC4gXG4gICAgICogOC4gSWYgdGhlIGJpdHMgb2YgJ2JlZ2luX251bWJlcicgaXMgbGVzcyB0aGFuIHRoZSAnYml0cycgeW91IHNwZWNpZmllZCwgbGlrZSBbMTIzNCwxXSwgdGhlICdiaXRzJyB3aWxsIGJlIHNldCBhcyA2IGJ5IGRlZmF1bHQuIFxuICAgICAqIFRoZSBob3N0IG5hbWUgaXMgc3BlY2lmaWVkIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbiB3b3JrcyBhZnRlciByZXN0YXJ0IGluc3RhbmNlIG1hbnVhbGx5LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGhvc3ROYW1lPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaHBjQ2x1c3RlcklkOiBUaGUgSFBDIGNsdXN0ZXIgSUQgdG8gd2hpY2ggdGhlIGluc3RhbmNlIGJlbG9uZ3MuVGhlIGNoYW5nZSBvZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBocGNDbHVzdGVySWQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBpbnN0YW5jZUNoYXJnZVR5cGU6IEluc3RhbmNlIENoYXJnZSB0eXBlLCBhbGxvd2VkIHZhbHVlOiBQcmVwYWlkIGFuZCBQb3N0cGFpZC4gSWYgc3BlY2lmaWVkIFByZXBhaWQsIHBsZWFzZSBlbnN1cmUgeW91IGhhdmUgc3VmZmljaWVudCBiYWxhbmNlIGluIHlvdXIgYWNjb3VudC4gT3IgaW5zdGFuY2UgY3JlYXRpb24gd2lsbCBiZSBmYWlsdXJlLiBEZWZhdWx0IHZhbHVlIGlzIFBvc3RwYWlkLk9sZCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBpbnN0YW5jZUNoYXJnZVR5cGU/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBpbnN0YW5jZU5hbWU6IERpc3BsYXkgbmFtZSBvZiB0aGUgaW5zdGFuY2UsIFsyLCAxMjhdIEVuZ2xpc2ggb3IgQ2hpbmVzZSBjaGFyYWN0ZXJzLCBtdXN0IHN0YXJ0IHdpdGggYSBsZXR0ZXIgb3IgQ2hpbmVzZSBpbiBzaXplLCBjYW4gY29udGFpbiBudW1iZXJzLCAnXycgb3IgJy4nLCAnLScuIFxuICAgICAqIFN1cHBvcnQgdG8gdXNlIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2V0IHRoZSBkaWZmZXJlbnQgaW5zdGFuY2UgbmFtZSBmb3IgZWFjaCBFQ1MgaW5zdGFuY2UuIEluc3RhbmNlTmFtZSBjb3VsZCBiZSBzcGVjaWZpZWQgYXMgJ25hbWVfcHJlZml4W2JlZ2luX251bWJlcixiaXRzXW5hbWVfc3VmZml4Jywgc3VjaCBhcyAndGVzdGluc3RhbmNlWzEyMyw0XXRhaWwnLiBJZiB5b3UgY3JlYXRlcyAzIGluc3RhbmNlcyB3aXRoIHRoZSBpbnN0YW5jZSBuYW1lICd0ZXN0aW5zdGFuY2VbMTIzLDRddGFpbCcsIGFsbCB0aGUgaW5zdGFuY2VzJyBuYW1lcyBhcmUgdGVzdGluc3RhbmNlMDEyM3RhaWwsIHRlc3RpbnN0YW5jZTAxMjR0YWlsLCB0ZXN0aW5zdGFuY2UwMTI1dGFpbC4gXG4gICAgICogVGhlICduYW1lX3ByZWZpeFtiZWdpbl9udW1iZXIsYml0c11uYW1lX3N1ZmZpeCcgc2hvdWxkIGZvbGxvdyB0aG9zZSBydWxlczogXG4gICAgICogMS4gJ25hbWVfcHJlZml4JyBpcyByZXF1aXJlZC4gXG4gICAgICogMi4gJ25hbWVfc3VmZml4JyBpcyBvcHRpb25hbC4gXG4gICAgICogMy4gVGhlIG5hbWUgcmVndWxhciBleHByZXNzaW9uIGNhbid0IGluY2x1ZGUgYW55IHNwYWNlcy4gXG4gICAgICogNC4gVGhlICdiaXRzJyBtdXN0IGJlIGluIHJhbmdlIFsxLCA2XS4gXG4gICAgICogNS4gVGhlICdiZWdpbl9udW1iZXInIG11c3QgYmUgaW4gcmFuZ2UgWzAsIDk5OTk5OV0uIFxuICAgICAqIDYuIFlvdSBjb3VsZCBvbmx5IHNwZWNpZnkgJ2JlZ2luX251bWJlcicuIFRoZSAnYml0cycgd2lsbCBiZSBzZXQgYXMgNiBieSBkZWZhdWx0LiBcbiAgICAgKiA3LiBZb3UgYWxzbyBjb3VsZCBvbmx5IHNwZWNpZnkgdGhlIFtdIG9yIFssXS4gVGhlICdiZWdpbl9udW1iZXInIHdpbGwgYmUgc2V0IGFzIDAgYnkgZGVmYXVsdCwgdGhlICdiaXRzJyB3aWxsIGJlIHNldCBhcyA2IGJ5IGRlZmF1bHQuIFxuICAgICAqIDguIElmIHRoZSBiaXRzIG9mICdiZWdpbl9udW1iZXInIGlzIGxlc3MgdGhhbiB0aGUgJ2JpdHMnIHlvdSBzcGVjaWZpZWQsIGxpa2UgWzEyMzQsMV0sIHRoZSAnYml0cycgd2lsbCBiZSBzZXQgYXMgNiBieSBkZWZhdWx0LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGluc3RhbmNlTmFtZT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGludGVybmV0Q2hhcmdlVHlwZTogSW5zdGFuY2UgaW50ZXJuZXQgYWNjZXNzIGNoYXJnZSB0eXBlLlN1cHBvcnQgJ1BheUJ5QmFuZHdpZHRoJyBhbmQgJ1BheUJ5VHJhZmZpYycgb25seS4gRGVmYXVsdCBpcyBQYXlCeVRyYWZmaWNcbiAgICAgKi9cbiAgICByZWFkb25seSBpbnRlcm5ldENoYXJnZVR5cGU/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBpbnRlcm5ldE1heEJhbmR3aWR0aE91dDogU2V0IGludGVybmV0IG91dHB1dCBiYW5kd2lkdGggb2YgaW5zdGFuY2UuIFVuaXQgaXMgTWJwcyhNZWdhIGJpdCBwZXIgc2Vjb25kKS4gUmFuZ2UgaXMgWzAsMjAwXS4gRGVmYXVsdCBpcyAxLldoaWxlIHRoZSBwcm9wZXJ0eSBpcyBub3QgMCwgcHVibGljIGlwIHdpbGwgYmUgYXNzaWduZWQgZm9yIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGludGVybmV0TWF4QmFuZHdpZHRoT3V0PzogbnVtYmVyIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaW9PcHRpbWl6ZWQ6IFRoZSAnb3B0aW1pemVkJyBpbnN0YW5jZSBjYW4gcHJvdmlkZSBiZXR0ZXIgSU8gcGVyZm9ybWFuY2UuIFN1cHBvcnQgJ25vbmUnIGFuZCAnb3B0aW1pemVkJyBvbmx5LCBkZWZhdWx0IGlzICdvcHRpbWl6ZWQnLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGlvT3B0aW1pemVkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaXB2NkFkZHJlc3NDb3VudDogU3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcmFuZG9tbHkgZ2VuZXJhdGVkIElQdjYgYWRkcmVzc2VzIGZvciB0aGUgZWxhc3RpYyBOSUMuXG4gICAgICogTm90ZSBZb3UgY2Fubm90IHNwZWNpZnkgdGhlIHBhcmFtZXRlcnMgSXB2NkFkZHJlc3NlcyBhbmQgSXB2NkFkZHJlc3NDb3VudCBhdCB0aGUgc2FtZSB0aW1lLlxuICAgICAqIFRoZSBjaGFuZ2Ugb2YgdGhlIHByb3BlcnR5IGRvZXMgbm90IGFmZmVjdCBleGlzdGluZyBpbnN0YW5jZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgaXB2NkFkZHJlc3NDb3VudD86IG51bWJlciB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGlwdjZBZGRyZXNzZXM6IFNwZWNpZnkgb25lIG9yIG1vcmUgSVB2NiBhZGRyZXNzZXMgZm9yIHRoZSBlbGFzdGljIE5JQy4gQ3VycmVudGx5LCB0aGUgbWF4aW11bSBsaXN0IHNpemUgaXMgMS4gRXhhbXBsZSB2YWx1ZTogMjAwMTpkYjg6MTIzNDoxYTAwOjoqKiogLlxuICAgICAqIE5vdGUgWW91IGNhbm5vdCBzcGVjaWZ5IHRoZSBwYXJhbWV0ZXJzIElwdjZBZGRyZXNzZXMgYW5kIElwdjZBZGRyZXNzQ291bnQgYXQgdGhlIHNhbWUgdGltZS5cbiAgICAgKiBUaGUgY2hhbmdlIG9mIHRoZSBwcm9wZXJ0eSBkb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGlwdjZBZGRyZXNzZXM/OiBBcnJheTxhbnkgfCByb3MuSVJlc29sdmFibGU+IHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkga2V5UGFpck5hbWU6IFNTSCBrZXkgcGFpciBuYW1lLk9sZCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBrZXlQYWlyTmFtZT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGxhdW5jaFRlbXBsYXRlSWQ6IElEIG9mIGxhdW5jaCB0ZW1wbGF0ZS4gTGF1bmNoIHRlbXBsYXRlIGlkIG9yIG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQgdG8gdXNlIGxhdW5jaCB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGxhdW5jaFRlbXBsYXRlSWQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBsYXVuY2hUZW1wbGF0ZU5hbWU6IE5hbWUgb2YgbGF1bmNoIHRlbXBsYXRlLiBMYXVuY2ggdGVtcGxhdGUgaWQgb3IgbmFtZSBtdXN0IGJlIHNwZWNpZmllZCB0byB1c2UgbGF1bmNoIHRlbXBsYXRlXG4gICAgICovXG4gICAgcmVhZG9ubHkgbGF1bmNoVGVtcGxhdGVOYW1lPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgbGF1bmNoVGVtcGxhdGVWZXJzaW9uOiBWZXJzaW9uIG9mIGxhdW5jaCB0ZW1wbGF0ZS4gRGVmYXVsdCB2ZXJzaW9uIGlzIHVzZWQgaWYgdmVyc2lvbiBpcyBub3Qgc3BlY2lmaWVkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGxhdW5jaFRlbXBsYXRlVmVyc2lvbj86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IG5ldHdvcmtUeXBlOiBJbnN0YW5jZSBuZXR3b3JrIHR5cGUuIFN1cHBvcnQgJ3ZwYycgYW5kICdjbGFzc2ljJywgZm9yIGNvbXBhdGlibGUgcmVhc29uLCBkZWZhdWx0IGlzICdjbGFzc2ljJy4gSWYgdnN3aXRjaCBpZCBhbmQgdnBjIGlkIGlzIHNwZWNpZmllZCwgdGhlIHByb3BlcnR5IHdpbGwgYmUgZm9yY2VkIHRvIGJlIHNldCB0byAndnBjJ1xuICAgICAqL1xuICAgIHJlYWRvbmx5IG5ldHdvcmtUeXBlPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgcGFzc3dvcmQ6IFBhc3N3b3JkIG9mIGNyZWF0ZWQgZWNzIGluc3RhbmNlLiBNdXN0IGNvbnRhaW4gYXQgbGVhc3QgMyB0eXBlcyBvZiBzcGVjaWFsIGNoYXJhY3RlciwgbG93ZXIgY2hhcmFjdGVyLCB1cHBlciBjaGFyYWN0ZXIsIG51bWJlci5cbiAgICAgKi9cbiAgICByZWFkb25seSBwYXNzd29yZD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHBhc3N3b3JkSW5oZXJpdDogU3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIHRoZSBwYXNzd29yZCBwcmVzZXQgaW4gdGhlIGltYWdlLiBUbyB1c2UgdGhlIFBhc3N3b3JkSW5oZXJpdCBwYXJhbWV0ZXIsIHRoZSBQYXNzd29yZCBwYXJhbWV0ZXIgbXVzdCBiZSBlbXB0eSBhbmQgeW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhlIHNlbGVjdGVkIGltYWdlIGhhcyBhIHBhc3N3b3JkIGNvbmZpZ3VyZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcGFzc3dvcmRJbmhlcml0PzogYm9vbGVhbiB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHBlcmlvZDogUHJlcGFpZCB0aW1lIHBlcmlvZC4gVW5pdCBpcyBtb250aCwgaXQgY291bGQgYmUgZnJvbSAxIHRvIDkgb3IgMTIsIDI0LCAzNiwgNDgsIDYwLiBEZWZhdWx0IHZhbHVlIGlzIDEuT2xkIGluc3RhbmNlcyB3aWxsIG5vdCBiZSBjaGFuZ2VkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBlcmlvZD86IG51bWJlciB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHBlcmlvZFVuaXQ6IFVuaXQgb2YgcHJlcGFpZCB0aW1lIHBlcmlvZCwgaXQgY291bGQgYmUgV2Vlay9Nb250aC9ZZWFyLiBEZWZhdWx0IHZhbHVlIGlzIE1vbnRoLk9sZCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBwZXJpb2RVbml0Pzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgcHJpdmF0ZUlwQWRkcmVzczogUHJpdmF0ZSBJUCBmb3IgdGhlIGluc3RhbmNlIGNyZWF0ZWQuIE9ubHkgd29ya3MgZm9yIFZQQyBpbnN0YW5jZSBhbmQgY2Fubm90IGR1cGxpY2F0ZWQgd2l0aCBleGlzdGluZyBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBwcml2YXRlSXBBZGRyZXNzPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgcmFtUm9sZU5hbWU6IEluc3RhbmNlIFJBTSByb2xlIG5hbWUuIFRoZSBuYW1lIGlzIHByb3ZpZGVkIGFuZCBtYWludGFpbmVkIGJ5IFJlc291cmNlIEFjY2VzcyBNYW5hZ2VtZW50IChSQU0pIGFuZCBjYW4gYmUgcXVlcmllZCB1c2luZyBMaXN0Um9sZXMuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgUkFNIEFQSSBDcmVhdGVSb2xlIGFuZCBMaXN0Um9sZXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcmFtUm9sZU5hbWU/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSByZXNvdXJjZUdyb3VwSWQ6IFJlc291cmNlIGdyb3VwIGlkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHJlc291cmNlR3JvdXBJZD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHNlY3VyaXR5RW5oYW5jZW1lbnRTdHJhdGVneTpcbiAgICAgKi9cbiAgICByZWFkb25seSBzZWN1cml0eUVuaGFuY2VtZW50U3RyYXRlZ3k/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzZWN1cml0eUdyb3VwSWQ6IFNlY3VyaXR5IGdyb3VwIHRvIGNyZWF0ZSBlY3MgaW5zdGFuY2UuIEZvciBjbGFzc2ljIGluc3RhbmNlIG5lZWQgdGhlIHNlY3VyaXR5IGdyb3VwIG5vdCBiZWxvbmcgdG8gVlBDLCBmb3IgVlBDIGluc3RhbmNlLCBwbGVhc2UgbWFrZSBzdXJlIHRoZSBzZWN1cml0eSBncm91cCBiZWxvbmcgdG8gc3BlY2lmaWVkIFZQQy5cbiAgICAgKi9cbiAgICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzZWN1cml0eUdyb3VwSWRzOiBUaGUgSURzIG9mIHNlY3VyaXR5IGdyb3VwcyBOIHRvIHdoaWNoIHRoZSBpbnN0YW5jZSBiZWxvbmdzLiBUaGUgdmFsaWQgdmFsdWVzIG9mIE4gYXJlIGJhc2VkIG9uIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzZWN1cml0eSBncm91cHMgdG8gd2hpY2ggYW4gaW5zdGFuY2UgY2FuIGJlbG9uZy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBTZWN1cml0eSBncm91cCBsaW1pdHMuTm90ZTogWW91IGNhbm5vdCBzcGVjaWZ5IGJvdGggU2VjdXJpdHlHcm91cElkIGFuZCBTZWN1cml0eUdyb3VwSWRzIGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cElkcz86IEFycmF5PGFueSB8IHJvcy5JUmVzb2x2YWJsZT4gfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzcG90RHVyYXRpb246IFRoZSBwcm90ZWN0aW9uIHBlcmlvZCBvZiB0aGUgcHJlZW1wdGlibGUgaW5zdGFuY2UuIFVuaXQ6IGhvdXJzLiBWYWxpZCB2YWx1ZXM6IDAsIDEsIDIsIDMsIDQsIDUsIGFuZCA2LlxuICAgICAqIFByb3RlY3Rpb24gcGVyaW9kcyBvZiAyLCAzLCA0LCA1LCBhbmQgNiBob3VycyBhcmUgaW4gaW52aXRhdGlvbmFsIHByZXZpZXcuIElmIHlvdSB3YW50IHRvIHNldCB0aGlzIHBhcmFtZXRlciB0byBvbmUgb2YgdGhlc2UgdmFsdWVzLCBzdWJtaXQgYSB0aWNrZXQuXG4gICAgICogSWYgdGhpcyBwYXJhbWV0ZXIgaXMgc2V0IHRvIDAsIG5vIHByb3RlY3Rpb24gcGVyaW9kIGlzIGNvbmZpZ3VyZWQgZm9yIHRoZSBwcmVlbXB0aWJsZSBpbnN0YW5jZS5cbiAgICAgKiBEZWZhdWx0IHZhbHVlOiAxLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNwb3REdXJhdGlvbj86IG51bWJlciB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHNwb3RJbnRlcnJ1cHRpb25CZWhhdmlvcjogVGhlIGludGVycnVwdGlvbiBtb2RlIG9mIHRoZSBwcmVlbXB0aWJsZSBpbnN0YW5jZS4gRGVmYXVsdCB2YWx1ZTogVGVybWluYXRlLiBTZXQgdGhlIHZhbHVlIHRvIFRlcm1pbmF0ZSwgd2hpY2ggc3BlY2lmaWVzIHRvIHJlbGVhc2UgdGhlIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNwb3RJbnRlcnJ1cHRpb25CZWhhdmlvcj86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHNwb3RQcmljZUxpbWl0OiBUaGUgaG91cmx5IHByaWNlIHRocmVzaG9sZCBvZiBhIGluc3RhbmNlLCBhbmQgaXQgdGFrZXMgZWZmZWN0IG9ubHkgd2hlbiBwYXJhbWV0ZXIgSW5zdGFuY2VDaGFyZ2VUeXBlIGlzIFBvc3RQYWlkLiBUaHJlZSBkZWNpbWFscyBpcyBhbGxvd2VkIGF0IG1vc3QuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3BvdFByaWNlTGltaXQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzcG90U3RyYXRlZ3k6IFRoZSBzcG90IHN0cmF0ZWd5IG9mIGEgUGF5LUFzLVlvdS1HbyBpbnN0YW5jZSwgYW5kIGl0IHRha2VzIGVmZmVjdCBvbmx5IHdoZW4gcGFyYW1ldGVyIEluc3RhbmNlQ2hhcmdlVHlwZSBpcyBQb3N0UGFpZC4gVmFsdWUgcmFuZ2U6IFwiTm9TcG90OiBBIHJlZ3VsYXIgUGF5LUFzLVlvdS1HbyBpbnN0YW5jZVwiLCBcIlNwb3RXaXRoUHJpY2VMaW1pdDogQSBwcmljZSB0aHJlc2hvbGQgZm9yIGEgc3BvdCBpbnN0YW5jZSwgXCJcIlNwb3RBc1ByaWNlR286IEEgcHJpY2UgdGhhdCBpcyBiYXNlZCBvbiB0aGUgaGlnaGVzdCBQYXktQXMtWW91LUdvIGluc3RhbmNlLiBcIkRlZmF1bHQgdmFsdWU6IE5vU3BvdC5cbiAgICAgKi9cbiAgICByZWFkb25seSBzcG90U3RyYXRlZ3k/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzeXN0ZW1EaXNrQXV0b1NuYXBzaG90UG9saWN5SWQ6IEF1dG8gc25hcHNob3QgcG9saWN5IElELlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tBdXRvU25hcHNob3RQb2xpY3lJZD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHN5c3RlbURpc2tCdXJzdGluZ0VuYWJsZWQ6IFdoZXRoZXIgZW5hYmxlIGJ1cnN0aW5nLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tCdXJzdGluZ0VuYWJsZWQ/OiBib29sZWFuIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3lzdGVtRGlza0NhdGVnb3J5OiBDYXRlZ29yeSBvZiBzeXN0ZW0gZGlzay4gRGVmYXVsdCBpcyBjbG91ZF9lZmZpY2llbmN5LiBzdXBwb3J0IGNsb3VkfGNsb3VkX2VmZmljaWVuY3l8Y2xvdWRfc3NkfGNsb3VkX2Vzc2R8ZXBoZW1lcmFsX3NzZHxjbG91ZF9hdXRvfGNsb3VkX2Vzc2RfZW50cnkuT2xkIGluc3RhbmNlcyB3aWxsIG5vdCBiZSBjaGFuZ2VkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tDYXRlZ29yeT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHN5c3RlbURpc2tEZXNjcmlwdGlvbjogRGVzY3JpcHRpb24gb2YgY3JlYXRlZCBzeXN0ZW0gZGlzay5PbGQgaW5zdGFuY2VzIHdpbGwgbm90IGJlIGNoYW5nZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3lzdGVtRGlza0Rlc2NyaXB0aW9uPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3lzdGVtRGlza0Rpc2tOYW1lOiBOYW1lIG9mIGNyZWF0ZWQgc3lzdGVtIGRpc2suT2xkIGluc3RhbmNlcyB3aWxsIG5vdCBiZSBjaGFuZ2VkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tEaXNrTmFtZT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHN5c3RlbURpc2tFbmNyeXB0QWxnb3JpdGhtOiBUaGUgYWxnb3JpdGhtIHRvIHVzZSB0byBlbmNyeXB0IHRoZSBzeXN0ZW0gZGlzay4gVmFsaWQgdmFsdWVzOlxuICAgICAqIC0gYXNlLTI1NlxuICAgICAqIC0gc200LTEyOFxuICAgICAqIERlZmF1bHQgdmFsdWU6IGFzZS0yNTYuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3lzdGVtRGlza0VuY3J5cHRBbGdvcml0aG0/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzeXN0ZW1EaXNrRW5jcnlwdGVkOiBTcGVjaWZpZXMgd2hldGhlciB0byBlbmNyeXB0IHRoZSBzeXN0ZW0gZGlzay4gVmFsaWQgdmFsdWVzOlxuICAgICAqIC0gdHJ1ZTogZW5jcnlwdHMgdGhlIHN5c3RlbSBkaXNrLlxuICAgICAqIC0gZmFsc2U6IGRvZXMgbm90IGVuY3J5cHQgdGhlIHN5c3RlbSBkaXNrLlxuICAgICAqIERlZmF1bHQgdmFsdWU6IGZhbHNlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tFbmNyeXB0ZWQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzeXN0ZW1EaXNrS21zS2V5SWQ6IFRoZSBJRCBvZiB0aGUgS01TIGtleSB0byB1c2UgZm9yIHRoZSBzeXN0ZW0gZGlzay5cbiAgICAgKi9cbiAgICByZWFkb25seSBzeXN0ZW1EaXNrS21zS2V5SWQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzeXN0ZW1EaXNrUGVyZm9ybWFuY2VMZXZlbDogVGhlIHBlcmZvcm1hbmNlIGxldmVsIG9mIHRoZSBlbmhhbmNlZCBTU0QgdXNlZCBhcyB0aGUgc3lzdGVtIGRpc2suRGVmYXVsdCB2YWx1ZTogUEwxLiBWYWxpZCB2YWx1ZXM6UEwwOiBBIHNpbmdsZSBlbmhhbmNlZCBTU0QgZGVsaXZlcnMgdXAgdG8gMTAsMDAwIHJhbmRvbSByZWFkL3dyaXRlIElPUFMuUEwxOiBBIHNpbmdsZSBlbmhhbmNlZCBTU0QgZGVsaXZlcnMgdXAgdG8gNTAsMDAwIHJhbmRvbSByZWFkL3dyaXRlIElPUFMuUEwyOiBBIHNpbmdsZSBlbmhhbmNlZCBTU0QgZGVsaXZlcnMgdXAgdG8gMTAwLDAwMCByYW5kb20gcmVhZC93cml0ZSBJT1BTLlBMMzogQSBzaW5nbGUgZW5oYW5jZWQgU1NEIGRlbGl2ZXJzIHVwIHRvIDEsMDAwLDAwMCByYW5kb20gcmVhZC93cml0ZSBJT1BTLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tQZXJmb3JtYW5jZUxldmVsPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3lzdGVtRGlza1Byb3Zpc2lvbmVkSW9wczogUHJvdmlzaW9uaW5nIElPUFMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3lzdGVtRGlza1Byb3Zpc2lvbmVkSW9wcz86IG51bWJlciB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHN5c3RlbURpc2tTaXplOiBEaXNrIHNpemUgb2YgdGhlIHN5c3RlbSBkaXNrLCByYW5nZSBmcm9tIDIwIHRvIDUwMCBHQi4gSWYgeW91IHNwZWNpZnkgd2l0aCB5b3VyIG93biBpbWFnZSwgbWFrZSBzdXJlIHRoZSBzeXN0ZW0gZGlzayBzaXplIGJpZ2dlciB0aGFuIGltYWdlIHNpemUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3lzdGVtRGlza1NpemU/OiBudW1iZXIgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzeXN0ZW1EaXNrU3RvcmFnZUNsdXN0ZXJJZDogVGhlIElEIG9mIHRoZSBkZWRpY2F0ZWQgYmxvY2sgc3RvcmFnZSBjbHVzdGVyLiBJZiB5b3Ugd2FudCB0byB1c2UgZGlza3MgaW4gYSBkZWRpY2F0ZWQgYmxvY2sgc3RvcmFnZSBjbHVzdGVyIGFzIHN5c3RlbSBkaXNrcyB3aGVuIHlvdSBjcmVhdGUgaW5zdGFuY2VzLCB5b3UgbXVzdCBzcGVjaWZ5IHRoaXMgcGFyYW1ldGVyLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tTdG9yYWdlQ2x1c3RlcklkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgdGFnczogVGFncyB0byBhdHRhY2ggdG8gaW5zdGFuY2UuIE1heCBzdXBwb3J0IDIwIHRhZ3MgdG8gYWRkIGR1cmluZyBjcmVhdGUgaW5zdGFuY2UuIEVhY2ggdGFnIHdpdGggdHdvIHByb3BlcnRpZXMgS2V5IGFuZCBWYWx1ZSwgYW5kIEtleSBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSB0YWdzPzogUm9zSW5zdGFuY2VHcm91cC5UYWdzUHJvcGVydHlbXTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHVwZGF0ZVBvbGljeTogU3BlY2lmeSB0aGUgcG9saWN5IGF0IHVwZGF0ZS4gXG4gICAgICogVGhlIHZhbHVlIGNhbiBiZSAnRm9yTmV3SW5zdGFuY2VzJyBvciAnRm9yQWxsSW5zdGFuY2VzJy5cbiAgICAgKiBJZiBVcGRhdGVQb2xpY3kgaXMgJ0ZvckFsbEluc3RhbmNlJywgVGhlIHVwZGF0YWJsZSBwYXJhbWV0ZXJzIGFyZSBJbnN0YW5jZVR5cGUsIEltYWdlSWQsIFN5c3RlbURpc2tTaXplLCBTeXN0ZW1EaXNrQ2F0ZWdvcnksIFBhc3N3b3JkLCBVc2VyRGF0YSxJbnRlcm5ldENoYXJnZVR5cGUsIEludGVybmV0TWF4QmFuZHdpZHRoT3V0LCBJbnRlcm5ldE1heEJhbmR3aWR0aEluLlxuICAgICAqIFRoZSBkZWZhdWx0IGlzICdGb3JOZXdJbnN0YW5jZXMnXG4gICAgICovXG4gICAgcmVhZG9ubHkgdXBkYXRlUG9saWN5Pzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgdXNlckRhdGE6IFVzZXIgZGF0YSB0byBwYXNzIHRvIGluc3RhbmNlLiBbMSwgMTZLQl0gY2hhcmFjdGVycy5Vc2VyIGRhdGEgc2hvdWxkIG5vdCBiZSBiYXNlNjQgZW5jb2RlZC4gSWYgeW91IHdhbnQgdG8gcGFzcyBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgdG8gdGhlIHByb3BlcnR5LCB1c2UgZnVuY3Rpb24gRm46OkJhc2U2NERlY29kZSB0byBkZWNvZGUgdGhlIGJhc2U2NCBzdHJpbmcgZmlyc3QuXG4gICAgICovXG4gICAgcmVhZG9ubHkgdXNlckRhdGE/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB2cGNJZDogVGhlIFZQQyBpZCB0byBjcmVhdGUgZWNzIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgdlN3aXRjaElkOiBUaGUgdlN3aXRjaCBJZCB0byBjcmVhdGUgZWNzIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHZTd2l0Y2hJZD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHpvbmVJZDogVGhlIElEIG9mIHRoZSB6b25lIHRvIHdoaWNoIHRoZSBpbnN0YW5jZSBiZWxvbmdzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgXG4gICAgICogY2FsbCB0aGUgRGVzY3JpYmVab25lcyBvcGVyYXRpb24gdG8gcXVlcnkgdGhlIG1vc3QgcmVjZW50IHpvbmUgbGlzdC4gXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggbWVhbnMgcmFuZG9tIHNlbGVjdGlvbi5cbiAgICAgKi9cbiAgICByZWFkb25seSB6b25lSWQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB6b25lSWRzOiBab25lIGlkcyBmb3IgcXVlcnkgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIHJlYWRvbmx5IHpvbmVJZHM/OiBBcnJheTxzdHJpbmcgfCByb3MuSVJlc29sdmFibGU+IHwgcm9zLklSZXNvbHZhYmxlO1xufVxuXG4vKipcbiAqIEEgUk9TIHJlc291cmNlIHR5cGU6ICBgQUxJWVVOOjpFQ1M6Okluc3RhbmNlR3JvdXBgXG4gKi9cbmV4cG9ydCBjbGFzcyBJbnN0YW5jZUdyb3VwIGV4dGVuZHMgcm9zLlJlc291cmNlIHtcblxuICAgIC8qKlxuICAgICAqIEEgZmFjdG9yeSBtZXRob2QgdGhhdCBjcmVhdGVzIGEgbmV3IGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgZnJvbSBhbiBvYmplY3RcbiAgICAgKiBjb250YWluaW5nIHRoZSBwcm9wZXJ0aWVzIG9mIHRoaXMgUk9TIHJlc291cmNlLCB3aGljaCB3aWxsIGJlIGFzc2lnbmVkIHRvIFJPUyByZXNvdXJjZS5cbiAgICAgKi9cblxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBIb3N0TmFtZXM6IEhvc3QgbmFtZXMgb2YgY3JlYXRlZCBpbnN0YW5jZXMuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF0dHJIb3N0TmFtZXM6IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBJbm5lcklwczogSW5uZXIgSVAgYWRkcmVzcyBsaXN0IG9mIHRoZSBzcGVjaWZpZWQgaW5zdGFuY2VzLiBPbmx5IGZvciBjbGFzc2ljYWwgaW5zdGFuY2VzLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdHRySW5uZXJJcHM6IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBJbnN0YW5jZUlkczogVGhlIGluc3RhbmNlIGlkIGxpc3Qgb2YgY3JlYXRlZCBlY3MgaW5zdGFuY2VzXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF0dHJJbnN0YW5jZUlkczogcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlIElwdjZBZGRyZXNzSWRzOiBJUHY2IGFkZHJlc3MgSURzIGxpc3Qgb2YgY3JlYXRlZCBlY3MgaW5zdGFuY2VzLiBOb3RlOiBUaGUgcmV0dXJuIHR5cGUgaXMgYSB0d28tdGllciBsaXN0LklmIHRoZSBpbnN0YW5jZSBkb2VzIG5vdCBoYXZlIGFueSBJUHY2IGFkZHJlc3MsIHRoZSBlbGVtZW50IGF0IHRoZSBjb3JyZXNwb25kaW5nIHBvc2l0aW9uIGluIHRoZSBsaXN0IGlzIG51bGwuIElmIGFsbCBpbnN0YW5jZXMgZG9lcyBub3QgaGF2ZSBhbnkgSVB2IGFkZHJlc3MsIHdpbGwgcmV0dXJuIG51bGwuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF0dHJJcHY2QWRkcmVzc0lkczogcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlIElwdjZBZGRyZXNzZXM6IElQdjYgYWRkcmVzc2VzIGxpc3Qgb2YgY3JlYXRlZCBlY3MgaW5zdGFuY2VzLiBOb3RlOiBUaGUgcmV0dXJuIHR5cGUgaXMgYSB0d28tdGllciBsaXN0LiBJZiB0aGUgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBhbnkgSVB2NiBhZGRyZXNzLCB0aGUgZWxlbWVudCBhdCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbiB0aGUgbGlzdCBpcyBudWxsLiBJZiBhbGwgaW5zdGFuY2VzIGRvZXMgbm90IGhhdmUgYW55IElQdiBhZGRyZXNzLCB3aWxsIHJldHVybiBudWxsLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdHRySXB2NkFkZHJlc3Nlczogcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlIE9yZGVySWQ6IFRoZSBvcmRlciBpZCBsaXN0IG9mIGNyZWF0ZWQgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF0dHJPcmRlcklkOiByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBBdHRyaWJ1dGUgUHJpdmF0ZUlwczogUHJpdmF0ZSBJUCBhZGRyZXNzIGxpc3Qgb2YgY3JlYXRlZCBlY3MgaW5zdGFuY2VzLiBPbmx5IGZvciBWUEMgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF0dHJQcml2YXRlSXBzOiByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBBdHRyaWJ1dGUgUHVibGljSXBzOiBQdWJsaWMgSVAgYWRkcmVzcyBsaXN0IG9mIGNyZWF0ZWQgZWNzIGluc3RhbmNlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXR0clB1YmxpY0lwczogcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlIFpvbmVJZHM6IFpvbmUgaWQgb2YgY3JlYXRlZCBpbnN0YW5jZXMuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF0dHJab25lSWRzOiByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBDcmVhdGUgYSBuZXcgYEFMSVlVTjo6RUNTOjpJbnN0YW5jZUdyb3VwYC5cbiAgICAgKlxuICAgICAqIFBhcmFtIHNjb3BlIC0gc2NvcGUgaW4gd2hpY2ggdGhpcyByZXNvdXJjZSBpcyBkZWZpbmVkXG4gICAgICogUGFyYW0gaWQgICAgLSBzY29wZWQgaWQgb2YgdGhlIHJlc291cmNlXG4gICAgICogUGFyYW0gcHJvcHMgLSByZXNvdXJjZSBwcm9wZXJ0aWVzXG4gICAgICovXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IHJvcy5Db25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBJbnN0YW5jZUdyb3VwUHJvcHMsIGVuYWJsZVJlc291cmNlUHJvcGVydHlDb25zdHJhaW50OmJvb2xlYW4gPSB0cnVlKSB7XG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICAgICAgY29uc3Qgcm9zSW5zdGFuY2VHcm91cCA9IG5ldyBSb3NJbnN0YW5jZUdyb3VwKHRoaXMsIGlkLCAge1xuICAgICAgICAgICAgZGVkaWNhdGVkSG9zdElkOiBwcm9wcy5kZWRpY2F0ZWRIb3N0SWQsXG4gICAgICAgICAgICByZXNvdXJjZUdyb3VwSWQ6IHByb3BzLnJlc291cmNlR3JvdXBJZCxcbiAgICAgICAgICAgIHN5c3RlbURpc2tEZXNjcmlwdGlvbjogcHJvcHMuc3lzdGVtRGlza0Rlc2NyaXB0aW9uLFxuICAgICAgICAgICAgaW5zdGFuY2VDaGFyZ2VUeXBlOiBwcm9wcy5pbnN0YW5jZUNoYXJnZVR5cGUgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5pbnN0YW5jZUNoYXJnZVR5cGUgPT09IG51bGwgPyAnUG9zdFBhaWQnIDogcHJvcHMuaW5zdGFuY2VDaGFyZ2VUeXBlLFxuICAgICAgICAgICAgc3lzdGVtRGlza1Byb3Zpc2lvbmVkSW9wczogcHJvcHMuc3lzdGVtRGlza1Byb3Zpc2lvbmVkSW9wcyxcbiAgICAgICAgICAgIHN5c3RlbURpc2tFbmNyeXB0QWxnb3JpdGhtOiBwcm9wcy5zeXN0ZW1EaXNrRW5jcnlwdEFsZ29yaXRobSxcbiAgICAgICAgICAgIHJhbVJvbGVOYW1lOiBwcm9wcy5yYW1Sb2xlTmFtZSxcbiAgICAgICAgICAgIHN5c3RlbURpc2tQZXJmb3JtYW5jZUxldmVsOiBwcm9wcy5zeXN0ZW1EaXNrUGVyZm9ybWFuY2VMZXZlbCxcbiAgICAgICAgICAgIGltYWdlSWQ6IHByb3BzLmltYWdlSWQsXG4gICAgICAgICAgICBzeXN0ZW1EaXNrRGlza05hbWU6IHByb3BzLnN5c3RlbURpc2tEaXNrTmFtZSxcbiAgICAgICAgICAgIHRhZ3M6IHByb3BzLnRhZ3MsXG4gICAgICAgICAgICBob3N0TmFtZTogcHJvcHMuaG9zdE5hbWUsXG4gICAgICAgICAgICBzeXN0ZW1EaXNrU3RvcmFnZUNsdXN0ZXJJZDogcHJvcHMuc3lzdGVtRGlza1N0b3JhZ2VDbHVzdGVySWQsXG4gICAgICAgICAgICBsYXVuY2hUZW1wbGF0ZU5hbWU6IHByb3BzLmxhdW5jaFRlbXBsYXRlTmFtZSxcbiAgICAgICAgICAgIHVwZGF0ZVBvbGljeTogcHJvcHMudXBkYXRlUG9saWN5ID09PSB1bmRlZmluZWQgfHwgcHJvcHMudXBkYXRlUG9saWN5ID09PSBudWxsID8gJ0Zvck5ld0luc3RhbmNlcycgOiBwcm9wcy51cGRhdGVQb2xpY3ksXG4gICAgICAgICAgICBzeXN0ZW1EaXNrS21zS2V5SWQ6IHByb3BzLnN5c3RlbURpc2tLbXNLZXlJZCxcbiAgICAgICAgICAgIHZTd2l0Y2hJZDogcHJvcHMudlN3aXRjaElkLFxuICAgICAgICAgICAgcGVyaW9kOiBwcm9wcy5wZXJpb2QgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5wZXJpb2QgPT09IG51bGwgPyAxIDogcHJvcHMucGVyaW9kLFxuICAgICAgICAgICAgbGF1bmNoVGVtcGxhdGVJZDogcHJvcHMubGF1bmNoVGVtcGxhdGVJZCxcbiAgICAgICAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogcHJvcHMuZGVsZXRpb25Qcm90ZWN0aW9uLFxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cElkczogcHJvcHMuc2VjdXJpdHlHcm91cElkcyxcbiAgICAgICAgICAgIGludGVybmV0Q2hhcmdlVHlwZTogcHJvcHMuaW50ZXJuZXRDaGFyZ2VUeXBlID09PSB1bmRlZmluZWQgfHwgcHJvcHMuaW50ZXJuZXRDaGFyZ2VUeXBlID09PSBudWxsID8gJ1BheUJ5VHJhZmZpYycgOiBwcm9wcy5pbnRlcm5ldENoYXJnZVR5cGUsXG4gICAgICAgICAgICBpbnN0YW5jZU5hbWU6IHByb3BzLmluc3RhbmNlTmFtZSxcbiAgICAgICAgICAgIHNwb3RJbnRlcnJ1cHRpb25CZWhhdmlvcjogcHJvcHMuc3BvdEludGVycnVwdGlvbkJlaGF2aW9yLFxuICAgICAgICAgICAgZGVwbG95bWVudFNldElkOiBwcm9wcy5kZXBsb3ltZW50U2V0SWQsXG4gICAgICAgICAgICBpbnRlcm5ldE1heEJhbmR3aWR0aE91dDogcHJvcHMuaW50ZXJuZXRNYXhCYW5kd2lkdGhPdXQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5pbnRlcm5ldE1heEJhbmR3aWR0aE91dCA9PT0gbnVsbCA/IDEgOiBwcm9wcy5pbnRlcm5ldE1heEJhbmR3aWR0aE91dCxcbiAgICAgICAgICAgIHZwY0lkOiBwcm9wcy52cGNJZCxcbiAgICAgICAgICAgIGxhdW5jaFRlbXBsYXRlVmVyc2lvbjogcHJvcHMubGF1bmNoVGVtcGxhdGVWZXJzaW9uLFxuICAgICAgICAgICAgc2VjdXJpdHlFbmhhbmNlbWVudFN0cmF0ZWd5OiBwcm9wcy5zZWN1cml0eUVuaGFuY2VtZW50U3RyYXRlZ3ksXG4gICAgICAgICAgICBhdXRvUmVsZWFzZVRpbWU6IHByb3BzLmF1dG9SZWxlYXNlVGltZSxcbiAgICAgICAgICAgIHBlcmlvZFVuaXQ6IHByb3BzLnBlcmlvZFVuaXQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5wZXJpb2RVbml0ID09PSBudWxsID8gJ01vbnRoJyA6IHByb3BzLnBlcmlvZFVuaXQsXG4gICAgICAgICAgICBwcml2YXRlSXBBZGRyZXNzOiBwcm9wcy5wcml2YXRlSXBBZGRyZXNzLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uLFxuICAgICAgICAgICAgZGlza01hcHBpbmdzOiBwcm9wcy5kaXNrTWFwcGluZ3MsXG4gICAgICAgICAgICB1c2VyRGF0YTogcHJvcHMudXNlckRhdGEsXG4gICAgICAgICAgICBzeXN0ZW1EaXNrU2l6ZTogcHJvcHMuc3lzdGVtRGlza1NpemUsXG4gICAgICAgICAgICBhdXRvUmVuZXc6IHByb3BzLmF1dG9SZW5ldyA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmF1dG9SZW5ldyA9PT0gbnVsbCA/ICdGYWxzZScgOiBwcm9wcy5hdXRvUmVuZXcsXG4gICAgICAgICAgICBzcG90RHVyYXRpb246IHByb3BzLnNwb3REdXJhdGlvbixcbiAgICAgICAgICAgIGlwdjZBZGRyZXNzZXM6IHByb3BzLmlwdjZBZGRyZXNzZXMsXG4gICAgICAgICAgICBzeXN0ZW1EaXNrRW5jcnlwdGVkOiBwcm9wcy5zeXN0ZW1EaXNrRW5jcnlwdGVkLFxuICAgICAgICAgICAgbWF4QW1vdW50OiBwcm9wcy5tYXhBbW91bnQsXG4gICAgICAgICAgICBzeXN0ZW1EaXNrQXV0b1NuYXBzaG90UG9saWN5SWQ6IHByb3BzLnN5c3RlbURpc2tBdXRvU25hcHNob3RQb2xpY3lJZCxcbiAgICAgICAgICAgIG5ldHdvcmtUeXBlOiBwcm9wcy5uZXR3b3JrVHlwZSxcbiAgICAgICAgICAgIGlwdjZBZGRyZXNzQ291bnQ6IHByb3BzLmlwdjZBZGRyZXNzQ291bnQsXG4gICAgICAgICAgICBzcG90UHJpY2VMaW1pdDogcHJvcHMuc3BvdFByaWNlTGltaXQsXG4gICAgICAgICAgICB6b25lSWRzOiBwcm9wcy56b25lSWRzLFxuICAgICAgICAgICAgaW5zdGFuY2VUeXBlOiBwcm9wcy5pbnN0YW5jZVR5cGUsXG4gICAgICAgICAgICBhbGxvY2F0ZVB1YmxpY0lwOiBwcm9wcy5hbGxvY2F0ZVB1YmxpY0lwID09PSB1bmRlZmluZWQgfHwgcHJvcHMuYWxsb2NhdGVQdWJsaWNJcCA9PT0gbnVsbCA/IHRydWUgOiBwcm9wcy5hbGxvY2F0ZVB1YmxpY0lwLFxuICAgICAgICAgICAgc3BvdFN0cmF0ZWd5OiBwcm9wcy5zcG90U3RyYXRlZ3ksXG4gICAgICAgICAgICBwYXNzd29yZEluaGVyaXQ6IHByb3BzLnBhc3N3b3JkSW5oZXJpdCxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwcm9wcy5wYXNzd29yZCxcbiAgICAgICAgICAgIGF1dG9SZW5ld1BlcmlvZDogcHJvcHMuYXV0b1JlbmV3UGVyaW9kID09PSB1bmRlZmluZWQgfHwgcHJvcHMuYXV0b1JlbmV3UGVyaW9kID09PSBudWxsID8gMSA6IHByb3BzLmF1dG9SZW5ld1BlcmlvZCxcbiAgICAgICAgICAgIGtleVBhaXJOYW1lOiBwcm9wcy5rZXlQYWlyTmFtZSxcbiAgICAgICAgICAgIGlvT3B0aW1pemVkOiBwcm9wcy5pb09wdGltaXplZCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmlvT3B0aW1pemVkID09PSBudWxsID8gJ29wdGltaXplZCcgOiBwcm9wcy5pb09wdGltaXplZCxcbiAgICAgICAgICAgIHpvbmVJZDogcHJvcHMuem9uZUlkLFxuICAgICAgICAgICAgaHBjQ2x1c3RlcklkOiBwcm9wcy5ocGNDbHVzdGVySWQsXG4gICAgICAgICAgICBzZWN1cml0eUdyb3VwSWQ6IHByb3BzLnNlY3VyaXR5R3JvdXBJZCxcbiAgICAgICAgICAgIHN5c3RlbURpc2tDYXRlZ29yeTogcHJvcHMuc3lzdGVtRGlza0NhdGVnb3J5ID09PSB1bmRlZmluZWQgfHwgcHJvcHMuc3lzdGVtRGlza0NhdGVnb3J5ID09PSBudWxsID8gJ2Nsb3VkX2VmZmljaWVuY3knIDogcHJvcHMuc3lzdGVtRGlza0NhdGVnb3J5LFxuICAgICAgICAgICAgZW5pTWFwcGluZ3M6IHByb3BzLmVuaU1hcHBpbmdzLFxuICAgICAgICAgICAgc3lzdGVtRGlza0J1cnN0aW5nRW5hYmxlZDogcHJvcHMuc3lzdGVtRGlza0J1cnN0aW5nRW5hYmxlZCxcbiAgICAgICAgfSwgZW5hYmxlUmVzb3VyY2VQcm9wZXJ0eUNvbnN0cmFpbnQgJiYgdGhpcy5zdGFjay5lbmFibGVSZXNvdXJjZVByb3BlcnR5Q29uc3RyYWludCk7XG4gICAgICAgIHRoaXMucmVzb3VyY2UgPSByb3NJbnN0YW5jZUdyb3VwO1xuICAgICAgICB0aGlzLmF0dHJIb3N0TmFtZXMgPSByb3NJbnN0YW5jZUdyb3VwLmF0dHJIb3N0TmFtZXM7XG4gICAgICAgIHRoaXMuYXR0cklubmVySXBzID0gcm9zSW5zdGFuY2VHcm91cC5hdHRySW5uZXJJcHM7XG4gICAgICAgIHRoaXMuYXR0ckluc3RhbmNlSWRzID0gcm9zSW5zdGFuY2VHcm91cC5hdHRySW5zdGFuY2VJZHM7XG4gICAgICAgIHRoaXMuYXR0cklwdjZBZGRyZXNzSWRzID0gcm9zSW5zdGFuY2VHcm91cC5hdHRySXB2NkFkZHJlc3NJZHM7XG4gICAgICAgIHRoaXMuYXR0cklwdjZBZGRyZXNzZXMgPSByb3NJbnN0YW5jZUdyb3VwLmF0dHJJcHY2QWRkcmVzc2VzO1xuICAgICAgICB0aGlzLmF0dHJPcmRlcklkID0gcm9zSW5zdGFuY2VHcm91cC5hdHRyT3JkZXJJZDtcbiAgICAgICAgdGhpcy5hdHRyUHJpdmF0ZUlwcyA9IHJvc0luc3RhbmNlR3JvdXAuYXR0clByaXZhdGVJcHM7XG4gICAgICAgIHRoaXMuYXR0clB1YmxpY0lwcyA9IHJvc0luc3RhbmNlR3JvdXAuYXR0clB1YmxpY0lwcztcbiAgICAgICAgdGhpcy5hdHRyWm9uZUlkcyA9IHJvc0luc3RhbmNlR3JvdXAuYXR0clpvbmVJZHM7XG4gICAgfVxufVxuIl19
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zdGFuY2Vncm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImluc3RhbmNlZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsOENBQThDO0FBQzlDLG1EQUFtRDtBQUV0QixzR0FGcEIsZ0NBQWdCLE9BRXlCO0FBNGRsRDs7OztHQUlHO0FBQ0gsTUFBYSxhQUFjLFNBQVEsR0FBRyxDQUFDLFFBQVE7SUFtRDNDOzs7O09BSUc7SUFDSCxZQUFZLEtBQW9CLEVBQUUsRUFBVSxFQUFFLEtBQXlCLEVBQUUsbUNBQTJDLElBQUk7UUFDcEgsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUNiLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxnQ0FBZ0MsR0FBRyxnQ0FBZ0MsQ0FBQztRQUV6RSxNQUFNLGdCQUFnQixHQUFHLElBQUksZ0NBQWdCLENBQUMsSUFBSSxFQUFFLEVBQUUsRUFBRztZQUNyRCxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLHFCQUFxQixFQUFFLEtBQUssQ0FBQyxxQkFBcUI7WUFDbEQsa0JBQWtCLEVBQUUsS0FBSyxDQUFDLGtCQUFrQixLQUFLLFNBQVMsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0I7WUFDdkkseUJBQXlCLEVBQUUsS0FBSyxDQUFDLHlCQUF5QjtZQUMxRCwwQkFBMEIsRUFBRSxLQUFLLENBQUMsMEJBQTBCO1lBQzVELFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1lBQzVDLDBC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QVEsR0FBRyxnQkFBZ0IsQ0FBQztRQUNqQyxJQUFJLENBQUMsYUFBYSxHQUFHLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztRQUNwRCxJQUFJLENBQUMsWUFBWSxHQUFHLGdCQUFnQixDQUFDLFlBQVksQ0FBQztRQUNsRCxJQUFJLENBQUMsZUFBZSxHQUFHLGdCQUFnQixDQUFDLGVBQWUsQ0FBQztRQUN4RCxJQUFJLENBQUMsa0JBQWtCLEdBQUcsZ0JBQWdCLENBQUMsa0JBQWtCLENBQUM7UUFDOUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDLGlCQUFpQixDQUFDO1FBQzVELElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO1FBQ2hELElBQUksQ0FBQyxjQUFjLEdBQUcsZ0JBQWdCLENBQUMsY0FBYyxDQUFDO1FBQ3RELElBQUksQ0FBQyxhQUFhLEdBQUcsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO1FBQ3BELElBQUksQ0FBQyxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsV0FBVyxDQUFDO0lBQ3BELENBQUM7Q0FDSjtBQTVKRCxzQ0E0SkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyByb3MgZnJvbSAnQGFsaWNsb3VkL3Jvcy1jZGstY29yZSc7XG5pbXBvcnQgeyBSb3NJbnN0YW5jZUdyb3VwIH0gZnJvbSAnLi9lY3MuZ2VuZXJhdGVkJztcbi8vIEdlbmVyYXRlZCBmcm9tIHRoZSBBbGlDbG91ZCBST1MgUmVzb3VyY2UgU3BlY2lmaWNhdGlvblxuZXhwb3J0IHsgUm9zSW5zdGFuY2VHcm91cCBhcyBJbnN0YW5jZUdyb3VwUHJvcGVydHkgfTtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBkZWZpbmluZyBhIGBJbnN0YW5jZUdyb3VwYC5cbiAqIFNlZSBodHRwczovL3d3dy5hbGliYWJhY2xvdWQuY29tL2hlbHAvcm9zL2RldmVsb3Blci1yZWZlcmVuY2UvYWxpeXVuLWVjcy1pbnN0YW5jZWdyb3VwXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5zdGFuY2VHcm91cFByb3BzIHtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGluc3RhbmNlVHlwZTogRWNzIGluc3RhbmNlIHN1cHBvcnRlZCBpbnN0YW5jZSB0eXBlLCBtYWtlIHN1cmUgaXQgc2hvdWxkIGJlIGNvcnJlY3QuXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5zdGFuY2VUeXBlOiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBtYXhBbW91bnQ6IE1heCBudW1iZXIgb2YgaW5zdGFuY2VzIHRvIGNyZWF0ZSwgc2hvdWxkIGJlIGJpZ2dlciB0aGFuICdNaW5BbW91bnQnIGFuZCBzbWFsbGVyIHRoYW4gMTAwMC5cbiAgICAgKi9cbiAgICByZWFkb25seSBtYXhBbW91bnQ6IG51bWJlciB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGFmZmluaXR5OiBTcGVjaWZpZXMgd2hldGhlciB0byBhc3NvY2lhdGUgdGhlIGluc3RhbmNlIG9uIGEgZGVkaWNhdGVkIGhvc3Qgd2l0aCB0aGUgZGVkaWNhdGVkIGhvc3QuIFZhbGlkIHZhbHVlczpcbiAgICAgKiAtICoqZGVmYXVsdCoqOiBkb2VzIG5vdCBhc3NvY2lhdGUgdGhlIEVDUyBpbnN0YW5jZSB3aXRoIHRoZSBkZWRpY2F0ZWQgaG9zdC4gV2hlbiB5b3Ugc3RhcnQgYW4gaW5zdGFuY2UgdGhhdCB3YXMgc3RvcHBlZCBpbiBlY29ub21pY2FsIG1vZGUsIHRoZSBpbnN0YW5jZSBpcyBhdXRvbWF0aWNhbGx5IGRlcGxveWVkIHRvIGFub3RoZXIgZGVkaWNhdGVkIGhvc3QgaW4gdGhlIGF1dG9tYXRpYyBkZXBsb3ltZW50IHJlc291cmNlIHBvb2wgaWYgdGhlIGF2YWlsYWJsZSByZXNvdXJjZXMgb2YgdGhlIG9yaWdpbmFsIGRlZGljYXRlZCBob3N0IGFyZSBpbnN1ZmZpY2llbnQuXG4gICAgICogLSAqKmhvc3QqKjogYXNzb2NpYXRlcyB0aGUgRUNTIGluc3RhbmNlIHdpdGggdGhlIGRlZGljYXRlZCBob3N0LiBXaGVuIHlvdSBzdGFydCBhbiBpbnN0YW5jZSB0aGF0IHdhcyBzdG9wcGVkIGluIGVjb25vbWljYWwgbW9kZSwgdGhlIGluc3RhbmNlIHJlbWFpbnMgb24gdGhlIG9yaWdpbmFsIGRlZGljYXRlZCBob3N0LiBJZiB0aGUgYXZhaWxhYmxlIHJlc291cmNlcyBvZiB0aGUgb3JpZ2luYWwgZGVkaWNhdGVkIGhvc3QgYXJlIGluc3VmZmljaWVudCwgdGhlIGluc3RhbmNlIGNhbm5vdCBzdGFydC5cbiAgICAgKiBEZWZhdWx0IHZhbHVlOiAqKmRlZmF1bHQqKi5cbiAgICAgKi9cbiAgICByZWFkb25seSBhZmZpbml0eT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGFsbG9jYXRlUHVibGljSXA6IFRoZSBwdWJsaWMgaXAgZm9yIGVjcyBpbnN0YW5jZSwgaWYgcHJvcGVydGllcyBpcyB0cnVlLCB3aWxsIGFsbG9jYXRlIHB1YmxpYyBpcC4gSWYgcHJvcGVydHkgSW50ZXJuZXRNYXhCYW5kd2lkdGhPdXQgc2V0IHRvIDAsIGl0IHdpbGwgbm90IGFzc2lnbiBwdWJsaWMgaXAuXG4gICAgICovXG4gICAgcmVhZG9ubHkgYWxsb2NhdGVQdWJsaWNJcD86IGJvb2xlYW4gfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBhdXRvUmVsZWFzZVRpbWU6IEF1dG8gcmVsZWFzZSB0aW1lIGZvciBjcmVhdGVkIGluc3RhbmNlLCBGb2xsb3cgSVNPODYwMSBzdGFuZGFyZCB1c2luZyBVVEMgdGltZS4gZm9ybWF0IGlzICd5eXl5LU1NLWRkVEhIOm1tOnNzWicuIE5vdCBiaWdnZXIgdGhhbiAzIHllYXJzIGZyb20gdGhpcyBkYXkgb253YXJkc1xuICAgICAqL1xuICAgIHJlYWRvbmx5IGF1dG9SZWxlYXNlVGltZT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGF1dG9SZW5ldzogV2hldGhlciByZW5ldyB0aGUgZmVlIGF1dG9tYXRpY2FsbHk/IFdoZW4gdGhlIHBhcmFtZXRlciBJbnN0YW5jZUNoYXJnZVR5cGUgaXMgUHJlUGFpZCwgaXQgd2lsbCB0YWtlIGVmZmVjdC4gUmFuZ2Ugb2YgdmFsdWU6VHJ1ZTogYXV0b21hdGljIHJlbmV3YWwuRmFsc2U6IG5vIGF1dG9tYXRpYyByZW5ld2FsLiBEZWZhdWx0IHZhbHVlIGlzIEZhbHNlLk9sZCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBhdXRvUmVuZXc/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBhdXRvUmVuZXdQZXJpb2Q6IFRoZSB0aW1lIHBlcmlvZCBvZiBhdXRvIHJlbmV3LiBXaGVuIHRoZSBwYXJhbWV0ZXIgSW5zdGFuY2VDaGFyZ2VUeXBlIGlzIFByZVBhaWQsIGl0IHdpbGwgdGFrZSBlZmZlY3QuSXQgY291bGQgYmUgMSwgMiwgMywgNiwgMTIsIDI0LCAzNiwgNDgsIDYwLiBEZWZhdWx0IHZhbHVlIGlzIDEuT2xkIGluc3RhbmNlcyB3aWxsIG5vdCBiZSBjaGFuZ2VkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGF1dG9SZW5ld1BlcmlvZD86IG51bWJlciB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGNwdU9wdGlvbnM6IENwdSBvcHRpb25zLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGNwdU9wdGlvbnM/OiBSb3NJbnN0YW5jZUdyb3VwLkNwdU9wdGlvbnNQcm9wZXJ0eSB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGNyZWRpdFNwZWNpZmljYXRpb246IFRoZSBwZXJmb3JtYW5jZSBtb2RlIG9mIHRoZSBidXJzdGFibGUgaW5zdGFuY2UuIFZhbGlkIHZhbHVlczpcbiAgICAgKiAtICoqU3RhbmRhcmQqKjogdGhlIHN0YW5kYXJkIG1vZGUuXG4gICAgICogLSAqKlVubGltaXRlZCoqOiB0aGUgdW5saW1pdGVkIG1vZGUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgY3JlZGl0U3BlY2lmaWNhdGlvbj86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGRlZGljYXRlZEhvc3RJZDogd2hpY2ggZGVkaWNhdGVkIGhvc3Qgd2lsbCBiZSBkZXBsb3llZFxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRlZGljYXRlZEhvc3RJZD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGRlbGV0aW9uRm9yY2U6IFdoZXRoZXIgZm9yY2UgZGVsZXRlIHRoZSBpbnN0YW5jZS4gRGVmYXVsdCB2YWx1ZSBpcyBmYWxzZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBkZWxldGlvbkZvcmNlPzogYm9vbGVhbiB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGRlbGV0aW9uUHJvdGVjdGlvbjogV2hldGhlciBhbiBpbnN0YW5jZSBjYW4gYmUgcmVsZWFzZWQgbWFudWFsbHkgdGhyb3VnaCB0aGUgY29uc29sZSBvciBBUEksIGRlbGV0aW9uIHByb3RlY3Rpb24gb25seSBzdXBwb3J0IHBvc3RQYWlkIGluc3RhbmNlXG4gICAgICovXG4gICAgcmVhZG9ubHkgZGVsZXRpb25Qcm90ZWN0aW9uPzogYm9vbGVhbiB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGRlcGxveW1lbnRTZXRHcm91cE5vOiBUaGUgbnVtYmVyIG9mIHRoZSBkZXBsb3ltZW50IHNldCBncm91cCB0byB3aGljaCB0byBkZXBsb3kgdGhlIGluc3RhbmNlLiBJZiB0aGUgZGVwbG95bWVudCBzZXQgc3BlY2lmaWVkIGJ5ICoqRGVwbG95bWVudFNldElkKiogdXNlcyB0aGUgaGlnaCBhdmFpbGFiaWxpdHkgZ3JvdXAgc3RyYXRlZ3kgKEF2YWlsYWJpbGl0eUdyb3VwKSwgeW91IGNhbiB1c2UgKipEZXBsb3ltZW50U2V0R3JvdXBObyoqIHRvIHNwZWNpZnkgYSBkZXBsb3ltZW50IHNldCBncm91cCBpbiB0aGUgZGVwbG95bWVudCBzZXQuIFZhbGlkIHZhbHVlczogMSB0byA3LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRlcGxveW1lbnRTZXRHcm91cE5vPzogbnVtYmVyIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZGVwbG95bWVudFNldElkOiBEZXBsb3ltZW50IHNldCBJRC4gVGhlIGNoYW5nZSBvZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBkZXBsb3ltZW50U2V0SWQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBkZXNjcmlwdGlvbjogRGVzY3JpcHRpb24gb2YgdGhlIGluc3RhbmNlLCBbMiwgMjU2XSBjaGFyYWN0ZXJzLiBEbyBub3QgZmlsbCBvciBlbXB0eSwgdGhlIGRlZmF1bHQgaXMgZW1wdHkuIE9sZCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGRpc2tNYXBwaW5nczogRGlzayBtYXBwaW5ncyB0byBhdHRhY2ggdG8gaW5zdGFuY2UuIE1heCBzdXBwb3J0IDE2IGRpc2tzLlxuICAgICAqIElmIHRoZSBpbWFnZSBjb250YWlucyBhIGRhdGEgZGlzaywgeW91IGNhbiBzcGVjaWZ5IG90aGVyIHBhcmFtZXRlcnMgb2YgdGhlIGRhdGEgZGlzayB2aWEgdGhlIHNhbWUgdmFsdWUgb2YgcGFyYW1ldGVyIFwiRGV2aWNlXCIuIElmIHBhcmFtZXRlciBcIkNhdGVnb3J5XCIgaXMgbm90IHNwZWNpZmllZCwgaXQgd2lsbCBiZSBjbG91ZF9lZmZpY2llbmN5IGluc3RlYWQgb2YgXCJDYXRlZ29yeVwiIG9mIGRhdGEgZGlzayBpbiB0aGUgaW1hZ2UuT2xkIGluc3RhbmNlcyB3aWxsIG5vdCBiZSBjaGFuZ2VkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGRpc2tNYXBwaW5ncz86IEFycmF5PFJvc0luc3RhbmNlR3JvdXAuRGlza01hcHBpbmdzUHJvcGVydHkgfCByb3MuSVJlc29sdmFibGU+IHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgZW5pTWFwcGluZ3M6IE5ldHdvcmtJbnRlcmZhY2UgdG8gYXR0YWNoIHRvIGluc3RhbmNlLiBNYXggc3VwcG9ydCAyIEVOSXMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgZW5pTWFwcGluZ3M/OiBBcnJheTxSb3NJbnN0YW5jZUdyb3VwLkVuaU1hcHBpbmdzUHJvcGVydHkgfCByb3MuSVJlc29sdmFibGU+IHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaG9zdE5hbWU6IEhvc3QgbmFtZSBvZiBjcmVhdGVkIGVjcyBpbnN0YW5jZS4gYXQgbGVhc3QgMiBjaGFyYWN0ZXJzLCBhbmQgJy4nICctJyBJcyBub3QgdGhlIGZpcnN0IGFuZCBsYXN0IGNoYXJhY3RlcnMgYXMgaG9zdG5hbWUsIG5vdCBjb250aW51b3VzIHVzZS4gV2luZG93cyBwbGF0Zm9ybSBjYW4gYmUgdXAgdG8gMTUgY2hhcmFjdGVycywgYWxsb3dpbmcgbGV0dGVycyAod2l0aG91dCBsaW1pdGluZyBjYXNlKSwgbnVtYmVycyBhbmQgJy0nLCBhbmQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgbnVtYmVyIG9mIHBvaW50cywgbm90IGFsbCBpcyBkaWdpdGFsICgnLicpLk90aGVyIChMaW51eCwgZXRjLikgcGxhdGZvcm0gdXAgdG8gNjQgY2hhcmFjdGVycywgYWxsb3dpbmcgc3VwcG9ydCBudW1iZXIgbXVsdGlwbGUgcG9pbnRzIGZvciB0aGUgcGVyaW9kIGJldHdlZW4gdGhlIHBvaW50cywgZWFjaCBwZXJtaXQgbGV0dGVycyAod2l0aG91dCBsaW1pdGluZyBjYXNlKSwgbnVtYmVycyBhbmQgJy0nIGNvbXBvbmVudHMuIFxuICAgICAqIFN1cHBvcnQgdG8gdXNlIHRoZSByZWd1bGFyIGV4cHJlc3Npb24gdG8gc2V0IHRoZSBkaWZmZXJlbnQgaW5zdGFuY2UgbmFtZSBmb3IgZWFjaCBFQ1MgaW5zdGFuY2UuIEhvc3ROYW1lIGNvdWxkIGJlIHNwZWNpZmllZCBhcyAnbmFtZV9wcmVmaXhbYmVnaW5fbnVtYmVyLGJpdHNdbmFtZV9zdWZmaXgnLCBzdWNoIGFzICdob3N0WzEyMyw0XXRhaWwnLiBJZiB5b3UgY3JlYXRlcyAzIGluc3RhbmNlcyB3aXRoIGhvc3RuYW1lICdob3N0WzEyMyw0XXRhaWwnLCBhbGwgdGhlIGhvc3QgbmFtZXMgb2YgaW5zdGFuY2VzIGFyZSBob3N0MDEyM3RhaWwsIGhvc3QwMTI0dGFpbCwgaG9zdDAxMjV0YWlsLiBUaGUgJ25hbWVfcHJlZml4W2JlZ2luX251bWJlcixiaXRzXW5hbWVfc3VmZml4JyBzaG91bGQgZm9sbG93IHRob3NlIHJ1bGVzOiBcbiAgICAgKiAxLiAnbmFtZV9wcmVmaXgnIGlzIHJlcXVpcmVkLiBcbiAgICAgKiAyLiAnbmFtZV9zdWZmaXgnIGlzIG9wdGlvbmFsLiBcbiAgICAgKiAzLiBUaGUgbmFtZSByZWd1bGFyIGV4cHJlc3Npb24gY2FuJ3QgaW5jbHVkZSBhbnkgc3BhY2VzLiBcbiAgICAgKiA0LiBUaGUgJ2JpdHMnIG11c3QgYmUgaW4gcmFuZ2UgWzEsIDZdLiBcbiAgICAgKiA1LiBUaGUgJ2JlZ2luX251bWJlcicgbXVzdCBiZSBpbiByYW5nZSBbMCwgOTk5OTk5XS4gXG4gICAgICogNi4gWW91IGNvdWxkIG9ubHkgc3BlY2lmeSAnYmVnaW5fbnVtYmVyJy4gVGhlICdiaXRzJyB3aWxsIGJlIHNldCBhcyA2IGJ5IGRlZmF1bHQuIFxuICAgICAqIDcuIFlvdSBhbHNvIGNvdWxkIG9ubHkgc3BlY2lmeSB0aGUgW10gb3IgWyxdLiBUaGUgJ2JlZ2luX251bWJlcicgd2lsbCBiZSBzZXQgYXMgMCBieSBkZWZhdWx0LCB0aGUgJ2JpdHMnIHdpbGwgYmUgc2V0IGFzIDYgYnkgZGVmYXVsdC4gXG4gICAgICogOC4gSWYgdGhlIGJpdHMgb2YgJ2JlZ2luX251bWJlcicgaXMgbGVzcyB0aGFuIHRoZSAnYml0cycgeW91IHNwZWNpZmllZCwgbGlrZSBbMTIzNCwxXSwgdGhlICdiaXRzJyB3aWxsIGJlIHNldCBhcyA2IGJ5IGRlZmF1bHQuIFxuICAgICAqIFRoZSBob3N0IG5hbWUgaXMgc3BlY2lmaWVkIGJ5IHJlZ3VsYXIgZXhwcmVzc2lvbiB3b3JrcyBhZnRlciByZXN0YXJ0IGluc3RhbmNlIG1hbnVhbGx5LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGhvc3ROYW1lPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaG9zdE5hbWVzOiBUaGUgaG9zdG5hbWUgb2YgaW5zdGFuY2UgTi4gWW91IGNhbiB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gc3BlY2lmeSBkaWZmZXJlbnQgaG9zdG5hbWVzIGZvciBtdWx0aXBsZSBpbnN0YW5jZXMuIFRha2Ugbm90ZSBvZiB0aGUgZm9sbG93aW5nIGl0ZW1zOlxuICAgICAqIC0gVGhlIG1heGltdW0gdmFsdWUgb2YgTiBtdXN0IGJlIHRoZSBzYW1lIGFzIHRoZSBBbW91bnQgdmFsdWUuIEZvciBleGFtcGxlLCBpZiB5b3Ugc2V0IEFtb3VudCB0byAyLCB5b3UgY2FuIHVzZSBIb3N0TmFtZXMuMSBhbmQgSG9zdE5hbWVzLjIgdG8gc3BlY2lmeSBob3N0bmFtZXMgZm9yIHRoZSBpbmRpdmlkdWFsIGluc3RhbmNlcy4gRXhhbXBsZXM6IEhvc3ROYW1lcy4xPXRlc3QxIGFuZCBIb3N0TmFtZXMuMj10ZXN0Mi5cbiAgICAgKiAtIFlvdSBjYW5ub3Qgc3BlY2lmeSBib3RoIEhvc3ROYW1lIGFuZCBIb3N0TmFtZXMuTi5cbiAgICAgKiAtIFRoZSBob3N0bmFtZSBjYW5ub3Qgc3RhcnQgb3IgZW5kIHdpdGggYSBwZXJpb2QgKC4pIG9yIGh5cGhlbiAoLSkuIFRoZSBob3N0bmFtZSBjYW5ub3QgY29udGFpbiBjb25zZWN1dGl2ZSBwZXJpb2RzICguKSBvciBoeXBoZW5zICgtKS5cbiAgICAgKiAtIEZvciBXaW5kb3dzIGluc3RhbmNlcywgdGhlIGhvc3RuYW1lIG11c3QgYmUgMiB0byAxNSBjaGFyYWN0ZXJzIGluIGxlbmd0aCBhbmQgY2Fubm90IGNvbnRhaW4gcGVyaW9kcyAoLikgb3IgY29udGFpbiBvbmx5IGRpZ2l0cy4gVGhlIGhvc3RuYW1lIGNhbiBjb250YWluIGxldHRlcnMsIGRpZ2l0cywgYW5kIGh5cGhlbnMgKC0pLlxuICAgICAqIC0gRm9yIGluc3RhbmNlcyB0aGF0IHJ1biBvdGhlciBvcGVyYXRpbmcgc3lzdGVtcyBzdWNoIGFzIExpbnV4LCB0aGUgaG9zdG5hbWUgbXVzdCBiZSAyIHRvIDY0IGNoYXJhY3RlcnMgaW4gbGVuZ3RoLiBZb3UgY2FuIHVzZSBwZXJpb2RzICguKSB0byBzZXBhcmF0ZSBhIGhvc3RuYW1lIGludG8gbXVsdGlwbGUgc2VnbWVudHMuIEVhY2ggc2VnbWVudCBjYW4gY29udGFpbiBsZXR0ZXJzLCBkaWdpdHMsIGFuZCBoeXBoZW5zICgtKS5cbiAgICAgKi9cbiAgICByZWFkb25seSBob3N0TmFtZXM/OiBBcnJheTxzdHJpbmcgfCByb3MuSVJlc29sdmFibGU+IHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaHBjQ2x1c3RlcklkOiBUaGUgSFBDIGNsdXN0ZXIgSUQgdG8gd2hpY2ggdGhlIGluc3RhbmNlIGJlbG9uZ3MuVGhlIGNoYW5nZSBvZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBocGNDbHVzdGVySWQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBodHRwRW5kcG9pbnQ6IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBhY2Nlc3MgY2hhbm5lbCBpcyBlbmFibGVkIGZvciBpbnN0YW5jZSBtZXRhZGF0YS4gVmFsaWQgdmFsdWVzOlxuICAgICAqIC0gKiplbmFibGVkKipcbiAgICAgKiAtICoqZGlzYWJsZWQqKlxuICAgICAqIERlZmF1bHQgdmFsdWU6ICoqZW5hYmxlZCoqLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGh0dHBFbmRwb2ludD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGh0dHBUb2tlbnM6IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBzZWN1cml0eSBoYXJkZW5pbmcgbW9kZSAoSU1EU3YyKSBpcyBmb3JjZWZ1bGx5IHVzZWQgdG8gYWNjZXNzIGluc3RhbmNlIG1ldGFkYXRhLiBWYWxpZCB2YWx1ZXM6XG4gICAgICogLSAqKm9wdGlvbmFsKio6IGRvZXMgbm90IGZvcmNlZnVsbHkgdXNlIHRoZSBzZWN1cml0eS1lbmhhbmNlZCBtb2RlIChJTURTdjIpLlxuICAgICAqIC0gKipyZXF1aXJlZCoqOiBmb3JjZWZ1bGx5IHVzZXMgdGhlIHNlY3VyaXR5LWVuaGFuY2VkIG1vZGUgKElNRFN2MikuIEFmdGVyIHlvdSBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gcmVxdWlyZWQsIHlvdSBjYW5ub3QgYWNjZXNzIGluc3RhbmNlIG1ldGFkYXRhIGluIG5vcm1hbCBtb2RlLlxuICAgICAqIERlZmF1bHQgdmFsdWU6ICoqb3B0aW9uYWwqKi5cbiAgICAgKi9cbiAgICByZWFkb25seSBodHRwVG9rZW5zPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaW1hZ2VGYW1pbHk6IFRoZSBuYW1lIG9mIHRoZSBpbWFnZSBmYW1pbHkuIFlvdSBjYW4gc2V0IHRoaXMgcGFyYW1ldGVyIHRvIG9idGFpbiB0aGUgbGF0ZXN0IGF2YWlsYWJsZSBjdXN0b20gaW1hZ2UgZnJvbSB0aGUgc3BlY2lmaWVkIGltYWdlIGZhbWlseSB0byBjcmVhdGUgdGhlIGluc3RhbmNlLlxuICAgICAqIC0gKipJbWFnZUZhbWlseSoqIG11c3QgYmUgZW1wdHkgaWYgKipJbWFnZUlkKiogaXMgc3BlY2lmaWVkLlxuICAgICAqIC0gKipJbWFnZUZhbWlseSoqIGNhbiBiZSBzcGVjaWZpZWQgaWYgKipJbWFnZUlkKiogaXMgbm90IHNwZWNpZmllZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBpbWFnZUZhbWlseT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGltYWdlSWQ6IEltYWdlIElEIHRvIGNyZWF0ZSBlY3MgaW5zdGFuY2UuXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW1hZ2VJZD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGltYWdlT3B0aW9uczogSW1hZ2Ugb3B0aW9ucy5cbiAgICAgKi9cbiAgICByZWFkb25seSBpbWFnZU9wdGlvbnM/OiBSb3NJbnN0YW5jZUdyb3VwLkltYWdlT3B0aW9uc1Byb3BlcnR5IHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaW5zdGFuY2VDaGFyZ2VUeXBlOiBJbnN0YW5jZSBDaGFyZ2UgdHlwZSwgYWxsb3dlZCB2YWx1ZTogUHJlcGFpZCBhbmQgUG9zdHBhaWQuIElmIHNwZWNpZmllZCBQcmVwYWlkLCBwbGVhc2UgZW5zdXJlIHlvdSBoYXZlIHN1ZmZpY2llbnQgYmFsYW5jZSBpbiB5b3VyIGFjY291bnQuIE9yIGluc3RhbmNlIGNyZWF0aW9uIHdpbGwgYmUgZmFpbHVyZS4gRGVmYXVsdCB2YWx1ZSBpcyBQb3N0cGFpZC5PbGQgaW5zdGFuY2VzIHdpbGwgbm90IGJlIGNoYW5nZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW5zdGFuY2VDaGFyZ2VUeXBlPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaW5zdGFuY2VOYW1lOiBEaXNwbGF5IG5hbWUgb2YgdGhlIGluc3RhbmNlLCBbMiwgMTI4XSBFbmdsaXNoIG9yIENoaW5lc2UgY2hhcmFjdGVycywgbXVzdCBzdGFydCB3aXRoIGEgbGV0dGVyIG9yIENoaW5lc2UgaW4gc2l6ZSwgY2FuIGNvbnRhaW4gbnVtYmVycywgJ18nIG9yICcuJywgJy0nLiBcbiAgICAgKiBTdXBwb3J0IHRvIHVzZSB0aGUgcmVndWxhciBleHByZXNzaW9uIHRvIHNldCB0aGUgZGlmZmVyZW50IGluc3RhbmNlIG5hbWUgZm9yIGVhY2ggRUNTIGluc3RhbmNlLiBJbnN0YW5jZU5hbWUgY291bGQgYmUgc3BlY2lmaWVkIGFzICduYW1lX3ByZWZpeFtiZWdpbl9udW1iZXIsYml0c11uYW1lX3N1ZmZpeCcsIHN1Y2ggYXMgJ3Rlc3RpbnN0YW5jZVsxMjMsNF10YWlsJy4gSWYgeW91IGNyZWF0ZXMgMyBpbnN0YW5jZXMgd2l0aCB0aGUgaW5zdGFuY2UgbmFtZSAndGVzdGluc3RhbmNlWzEyMyw0XXRhaWwnLCBhbGwgdGhlIGluc3RhbmNlcycgbmFtZXMgYXJlIHRlc3RpbnN0YW5jZTAxMjN0YWlsLCB0ZXN0aW5zdGFuY2UwMTI0dGFpbCwgdGVzdGluc3RhbmNlMDEyNXRhaWwuIFxuICAgICAqIFRoZSAnbmFtZV9wcmVmaXhbYmVnaW5fbnVtYmVyLGJpdHNdbmFtZV9zdWZmaXgnIHNob3VsZCBmb2xsb3cgdGhvc2UgcnVsZXM6IFxuICAgICAqIDEuICduYW1lX3ByZWZpeCcgaXMgcmVxdWlyZWQuIFxuICAgICAqIDIuICduYW1lX3N1ZmZpeCcgaXMgb3B0aW9uYWwuIFxuICAgICAqIDMuIFRoZSBuYW1lIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYW4ndCBpbmNsdWRlIGFueSBzcGFjZXMuIFxuICAgICAqIDQuIFRoZSAnYml0cycgbXVzdCBiZSBpbiByYW5nZSBbMSwgNl0uIFxuICAgICAqIDUuIFRoZSAnYmVnaW5fbnVtYmVyJyBtdXN0IGJlIGluIHJhbmdlIFswLCA5OTk5OTldLiBcbiAgICAgKiA2LiBZb3UgY291bGQgb25seSBzcGVjaWZ5ICdiZWdpbl9udW1iZXInLiBUaGUgJ2JpdHMnIHdpbGwgYmUgc2V0IGFzIDYgYnkgZGVmYXVsdC4gXG4gICAgICogNy4gWW91IGFsc28gY291bGQgb25seSBzcGVjaWZ5IHRoZSBbXSBvciBbLF0uIFRoZSAnYmVnaW5fbnVtYmVyJyB3aWxsIGJlIHNldCBhcyAwIGJ5IGRlZmF1bHQsIHRoZSAnYml0cycgd2lsbCBiZSBzZXQgYXMgNiBieSBkZWZhdWx0LiBcbiAgICAgKiA4LiBJZiB0aGUgYml0cyBvZiAnYmVnaW5fbnVtYmVyJyBpcyBsZXNzIHRoYW4gdGhlICdiaXRzJyB5b3Ugc3BlY2lmaWVkLCBsaWtlIFsxMjM0LDFdLCB0aGUgJ2JpdHMnIHdpbGwgYmUgc2V0IGFzIDYgYnkgZGVmYXVsdC5cbiAgICAgKi9cbiAgICByZWFkb25seSBpbnN0YW5jZU5hbWU/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBpbnRlcm5ldENoYXJnZVR5cGU6IEluc3RhbmNlIGludGVybmV0IGFjY2VzcyBjaGFyZ2UgdHlwZS5TdXBwb3J0ICdQYXlCeUJhbmR3aWR0aCcgYW5kICdQYXlCeVRyYWZmaWMnIG9ubHkuIERlZmF1bHQgaXMgUGF5QnlUcmFmZmljXG4gICAgICovXG4gICAgcmVhZG9ubHkgaW50ZXJuZXRDaGFyZ2VUeXBlPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgaW50ZXJuZXRNYXhCYW5kd2lkdGhPdXQ6IFNldCBpbnRlcm5ldCBvdXRwdXQgYmFuZHdpZHRoIG9mIGluc3RhbmNlLiBVbml0IGlzIE1icHMoTWVnYSBiaXQgcGVyIHNlY29uZCkuIFJhbmdlIGlzIFswLDIwMF0uIERlZmF1bHQgaXMgMS5XaGlsZSB0aGUgcHJvcGVydHkgaXMgbm90IDAsIHB1YmxpYyBpcCB3aWxsIGJlIGFzc2lnbmVkIGZvciBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBpbnRlcm5ldE1heEJhbmR3aWR0aE91dD86IG51bWJlciB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGlvT3B0aW1pemVkOiBUaGUgJ29wdGltaXplZCcgaW5zdGFuY2UgY2FuIHByb3ZpZGUgYmV0dGVyIElPIHBlcmZvcm1hbmNlLiBTdXBwb3J0ICdub25lJyBhbmQgJ29wdGltaXplZCcgb25seSwgZGVmYXVsdCBpcyAnb3B0aW1pemVkJy5cbiAgICAgKi9cbiAgICByZWFkb25seSBpb09wdGltaXplZD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGlwdjZBZGRyZXNzQ291bnQ6IFNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHJhbmRvbWx5IGdlbmVyYXRlZCBJUHY2IGFkZHJlc3NlcyBmb3IgdGhlIGVsYXN0aWMgTklDLlxuICAgICAqIE5vdGUgWW91IGNhbm5vdCBzcGVjaWZ5IHRoZSBwYXJhbWV0ZXJzIElwdjZBZGRyZXNzZXMgYW5kIElwdjZBZGRyZXNzQ291bnQgYXQgdGhlIHNhbWUgdGltZS5cbiAgICAgKiBUaGUgY2hhbmdlIG9mIHRoZSBwcm9wZXJ0eSBkb2VzIG5vdCBhZmZlY3QgZXhpc3RpbmcgaW5zdGFuY2VzLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IGlwdjZBZGRyZXNzQ291bnQ/OiBudW1iZXIgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBpcHY2QWRkcmVzc2VzOiBTcGVjaWZ5IG9uZSBvciBtb3JlIElQdjYgYWRkcmVzc2VzIGZvciB0aGUgZWxhc3RpYyBOSUMuIEN1cnJlbnRseSwgdGhlIG1heGltdW0gbGlzdCBzaXplIGlzIDEuIEV4YW1wbGUgdmFsdWU6IDIwMDE6ZGI4OjEyMzQ6MWEwMDo6KioqIC5cbiAgICAgKiBOb3RlIFlvdSBjYW5ub3Qgc3BlY2lmeSB0aGUgcGFyYW1ldGVycyBJcHY2QWRkcmVzc2VzIGFuZCBJcHY2QWRkcmVzc0NvdW50IGF0IHRoZSBzYW1lIHRpbWUuXG4gICAgICogVGhlIGNoYW5nZSBvZiB0aGUgcHJvcGVydHkgZG9lcyBub3QgYWZmZWN0IGV4aXN0aW5nIGluc3RhbmNlcy5cbiAgICAgKi9cbiAgICByZWFkb25seSBpcHY2QWRkcmVzc2VzPzogQXJyYXk8YW55IHwgcm9zLklSZXNvbHZhYmxlPiB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGtleVBhaXJOYW1lOiBTU0gga2V5IHBhaXIgbmFtZS5PbGQgaW5zdGFuY2VzIHdpbGwgbm90IGJlIGNoYW5nZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkga2V5UGFpck5hbWU/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBsYXVuY2hUZW1wbGF0ZUlkOiBJRCBvZiBsYXVuY2ggdGVtcGxhdGUuIExhdW5jaCB0ZW1wbGF0ZSBpZCBvciBuYW1lIG11c3QgYmUgc3BlY2lmaWVkIHRvIHVzZSBsYXVuY2ggdGVtcGxhdGVcbiAgICAgKi9cbiAgICByZWFkb25seSBsYXVuY2hUZW1wbGF0ZUlkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgbGF1bmNoVGVtcGxhdGVOYW1lOiBOYW1lIG9mIGxhdW5jaCB0ZW1wbGF0ZS4gTGF1bmNoIHRlbXBsYXRlIGlkIG9yIG5hbWUgbXVzdCBiZSBzcGVjaWZpZWQgdG8gdXNlIGxhdW5jaCB0ZW1wbGF0ZVxuICAgICAqL1xuICAgIHJlYWRvbmx5IGxhdW5jaFRlbXBsYXRlTmFtZT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IGxhdW5jaFRlbXBsYXRlVmVyc2lvbjogVmVyc2lvbiBvZiBsYXVuY2ggdGVtcGxhdGUuIERlZmF1bHQgdmVyc2lvbiBpcyB1c2VkIGlmIHZlcnNpb24gaXMgbm90IHNwZWNpZmllZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBsYXVuY2hUZW1wbGF0ZVZlcnNpb24/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBuZXR3b3JrSW50ZXJmYWNlUXVldWVOdW1iZXI6IFRoZSBudW1iZXIgb2YgcXVldWVzIHN1cHBvcnRlZCBieSB0aGUgcHJpbWFyeSBFTkkuIFRha2Ugbm90ZSBvZiB0aGUgZm9sbG93aW5nIGl0ZW1zOlxuICAgICAqIC0gVGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyIGNhbm5vdCBleGNlZWQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHF1ZXVlcyBwZXIgRU5JIGFsbG93ZWQgZm9yIHRoZSBpbnN0YW5jZSB0eXBlLlxuICAgICAqIC0gVGhlIHRvdGFsIG51bWJlciBvZiBxdWV1ZXMgZm9yIGFsbCBFTklzIG9uIHRoZSBpbnN0YW5jZSBjYW5ub3QgZXhjZWVkIHRoZSBxdWV1ZSBxdW90YSBmb3IgdGhlIGluc3RhbmNlIHR5cGUuXG4gICAgICogLSBJZiBOZXR3b3JrSW50ZXJmYWNlLk4uSW5zdGFuY2VUeXBlIGlzIHNldCB0byBQcmltYXJ5LCB5b3UgY2Fubm90IHNwZWNpZnkgTmV0d29ya0ludGVyZmFjZVF1ZXVlTnVtYmVyIGJ1dCBjYW4gc3BlY2lmeSBOZXR3b3JrSW50ZXJmYWNlLk4uUXVldWVOdW1iZXJcbiAgICAgKi9cbiAgICByZWFkb25seSBuZXR3b3JrSW50ZXJmYWNlUXVldWVOdW1iZXI/OiBudW1iZXIgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBuZXR3b3JrT3B0aW9uczogTmV0d29yayBvcHRpb25zLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IG5ldHdvcmtPcHRpb25zPzogUm9zSW5zdGFuY2VHcm91cC5OZXR3b3JrT3B0aW9uc1Byb3BlcnR5IHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgbmV0d29ya1R5cGU6IEluc3RhbmNlIG5ldHdvcmsgdHlwZS4gU3VwcG9ydCAndnBjJyBhbmQgJ2NsYXNzaWMnLCBmb3IgY29tcGF0aWJsZSByZWFzb24sIGRlZmF1bHQgaXMgJ2NsYXNzaWMnLiBJZiB2c3dpdGNoIGlkIGFuZCB2cGMgaWQgaXMgc3BlY2lmaWVkLCB0aGUgcHJvcGVydHkgd2lsbCBiZSBmb3JjZWQgdG8gYmUgc2V0IHRvICd2cGMnXG4gICAgICovXG4gICAgcmVhZG9ubHkgbmV0d29ya1R5cGU/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBwYXNzd29yZDogUGFzc3dvcmQgb2YgY3JlYXRlZCBlY3MgaW5zdGFuY2UuIE11c3QgY29udGFpbiBhdCBsZWFzdCAzIHR5cGVzIG9mIHNwZWNpYWwgY2hhcmFjdGVyLCBsb3dlciBjaGFyYWN0ZXIsIHVwcGVyIGNoYXJhY3RlciwgbnVtYmVyLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHBhc3N3b3JkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgcGFzc3dvcmRJbmhlcml0OiBTcGVjaWZpZXMgd2hldGhlciB0byB1c2UgdGhlIHBhc3N3b3JkIHByZXNldCBpbiB0aGUgaW1hZ2UuIFRvIHVzZSB0aGUgUGFzc3dvcmRJbmhlcml0IHBhcmFtZXRlciwgdGhlIFBhc3N3b3JkIHBhcmFtZXRlciBtdXN0IGJlIGVtcHR5IGFuZCB5b3UgbXVzdCBtYWtlIHN1cmUgdGhhdCB0aGUgc2VsZWN0ZWQgaW1hZ2UgaGFzIGEgcGFzc3dvcmQgY29uZmlndXJlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBwYXNzd29yZEluaGVyaXQ/OiBib29sZWFuIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgcGVyaW9kOiBQcmVwYWlkIHRpbWUgcGVyaW9kLiBVbml0IGlzIG1vbnRoLCBpdCBjb3VsZCBiZSBmcm9tIDEgdG8gOSBvciAxMiwgMjQsIDM2LCA0OCwgNjAuIERlZmF1bHQgdmFsdWUgaXMgMS5PbGQgaW5zdGFuY2VzIHdpbGwgbm90IGJlIGNoYW5nZWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcGVyaW9kPzogbnVtYmVyIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgcGVyaW9kVW5pdDogVW5pdCBvZiBwcmVwYWlkIHRpbWUgcGVyaW9kLCBpdCBjb3VsZCBiZSBXZWVrXFwvTW9udGhcXC9ZZWFyLiBEZWZhdWx0IHZhbHVlIGlzIE1vbnRoLk9sZCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBwZXJpb2RVbml0Pzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgcHJpdmF0ZUlwQWRkcmVzczogUHJpdmF0ZSBJUCBmb3IgdGhlIGluc3RhbmNlIGNyZWF0ZWQuIE9ubHkgd29ya3MgZm9yIFZQQyBpbnN0YW5jZSBhbmQgY2Fubm90IGR1cGxpY2F0ZWQgd2l0aCBleGlzdGluZyBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBwcml2YXRlSXBBZGRyZXNzPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgcHJpdmF0ZVBvb2xPcHRpb25zOiBUaGUgb3B0aW9ucyBvZiB0aGUgcHJpdmF0ZSBwb29sLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHByaXZhdGVQb29sT3B0aW9ucz86IFJvc0luc3RhbmNlR3JvdXAuUHJpdmF0ZVBvb2xPcHRpb25zUHJvcGVydHkgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSByYW1Sb2xlTmFtZTogSW5zdGFuY2UgUkFNIHJvbGUgbmFtZS4gVGhlIG5hbWUgaXMgcHJvdmlkZWQgYW5kIG1haW50YWluZWQgYnkgUmVzb3VyY2UgQWNjZXNzIE1hbmFnZW1lbnQgKFJBTSkgYW5kIGNhbiBiZSBxdWVyaWVkIHVzaW5nIExpc3RSb2xlcy4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBSQU0gQVBJIENyZWF0ZVJvbGUgYW5kIExpc3RSb2xlcy5cbiAgICAgKi9cbiAgICByZWFkb25seSByYW1Sb2xlTmFtZT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHJlc291cmNlR3JvdXBJZDogUmVzb3VyY2UgZ3JvdXAgaWQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgcmVzb3VyY2VHcm91cElkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc2NoZWR1bGVyT3B0aW9uczogdW5kZWZpbmVkXG4gICAgICovXG4gICAgcmVhZG9ubHkgc2NoZWR1bGVyT3B0aW9ucz86IFJvc0luc3RhbmNlR3JvdXAuU2NoZWR1bGVyT3B0aW9uc1Byb3BlcnR5IHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc2VjdXJpdHlFbmhhbmNlbWVudFN0cmF0ZWd5OlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNlY3VyaXR5RW5oYW5jZW1lbnRTdHJhdGVneT86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHNlY3VyaXR5R3JvdXBJZDogU2VjdXJpdHkgZ3JvdXAgdG8gY3JlYXRlIGVjcyBpbnN0YW5jZS4gRm9yIGNsYXNzaWMgaW5zdGFuY2UgbmVlZCB0aGUgc2VjdXJpdHkgZ3JvdXAgbm90IGJlbG9uZyB0byBWUEMsIGZvciBWUEMgaW5zdGFuY2UsIHBsZWFzZSBtYWtlIHN1cmUgdGhlIHNlY3VyaXR5IGdyb3VwIGJlbG9uZyB0byBzcGVjaWZpZWQgVlBDLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHNlY3VyaXR5R3JvdXBJZHM6IFRoZSBJRHMgb2Ygc2VjdXJpdHkgZ3JvdXBzIE4gdG8gd2hpY2ggdGhlIGluc3RhbmNlIGJlbG9uZ3MuIFRoZSB2YWxpZCB2YWx1ZXMgb2YgTiBhcmUgYmFzZWQgb24gdGhlIG1heGltdW0gbnVtYmVyIG9mIHNlY3VyaXR5IGdyb3VwcyB0byB3aGljaCBhbiBpbnN0YW5jZSBjYW4gYmVsb25nLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIFNlY3VyaXR5IGdyb3VwIGxpbWl0cy5Ob3RlOiBZb3UgY2Fubm90IHNwZWNpZnkgYm90aCBTZWN1cml0eUdyb3VwSWQgYW5kIFNlY3VyaXR5R3JvdXBJZHMgYXQgdGhlIHNhbWUgdGltZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBzZWN1cml0eUdyb3VwSWRzPzogQXJyYXk8c3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlPiB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHNlY3VyaXR5T3B0aW9uczogU2VjdXJpdHkgb3B0aW9ucy5cbiAgICAgKi9cbiAgICByZWFkb25seSBzZWN1cml0eU9wdGlvbnM/OiBSb3NJbnN0YW5jZUdyb3VwLlNlY3VyaXR5T3B0aW9uc1Byb3BlcnR5IHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3BvdER1cmF0aW9uOiBUaGUgcHJvdGVjdGlvbiBwZXJpb2Qgb2YgdGhlIHByZWVtcHRpYmxlIGluc3RhbmNlLiBVbml0OiBob3Vycy4gVmFsaWQgdmFsdWVzOiAwLCAxLCAyLCAzLCA0LCA1LCBhbmQgNi5cbiAgICAgKiBQcm90ZWN0aW9uIHBlcmlvZHMgb2YgMiwgMywgNCwgNSwgYW5kIDYgaG91cnMgYXJlIGluIGludml0YXRpb25hbCBwcmV2aWV3LiBJZiB5b3Ugd2FudCB0byBzZXQgdGhpcyBwYXJhbWV0ZXIgdG8gb25lIG9mIHRoZXNlIHZhbHVlcywgc3VibWl0IGEgdGlja2V0LlxuICAgICAqIElmIHRoaXMgcGFyYW1ldGVyIGlzIHNldCB0byAwLCBubyBwcm90ZWN0aW9uIHBlcmlvZCBpcyBjb25maWd1cmVkIGZvciB0aGUgcHJlZW1wdGlibGUgaW5zdGFuY2UuXG4gICAgICogRGVmYXVsdCB2YWx1ZTogMS5cbiAgICAgKi9cbiAgICByZWFkb25seSBzcG90RHVyYXRpb24/OiBudW1iZXIgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzcG90SW50ZXJydXB0aW9uQmVoYXZpb3I6IFRoZSBpbnRlcnJ1cHRpb24gbW9kZSBvZiB0aGUgcHJlZW1wdGlibGUgaW5zdGFuY2UuIERlZmF1bHQgdmFsdWU6IFRlcm1pbmF0ZS4gU2V0IHRoZSB2YWx1ZSB0byBUZXJtaW5hdGUsIHdoaWNoIHNwZWNpZmllcyB0byByZWxlYXNlIHRoZSBpbnN0YW5jZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBzcG90SW50ZXJydXB0aW9uQmVoYXZpb3I/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzcG90UHJpY2VMaW1pdDogVGhlIGhvdXJseSBwcmljZSB0aHJlc2hvbGQgb2YgYSBpbnN0YW5jZSwgYW5kIGl0IHRha2VzIGVmZmVjdCBvbmx5IHdoZW4gcGFyYW1ldGVyIEluc3RhbmNlQ2hhcmdlVHlwZSBpcyBQb3N0UGFpZC4gVGhyZWUgZGVjaW1hbHMgaXMgYWxsb3dlZCBhdCBtb3N0LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHNwb3RQcmljZUxpbWl0Pzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3BvdFN0cmF0ZWd5OiBUaGUgc3BvdCBzdHJhdGVneSBvZiBhIFBheS1Bcy1Zb3UtR28gaW5zdGFuY2UsIGFuZCBpdCB0YWtlcyBlZmZlY3Qgb25seSB3aGVuIHBhcmFtZXRlciBJbnN0YW5jZUNoYXJnZVR5cGUgaXMgUG9zdFBhaWQuIFZhbHVlIHJhbmdlOiBcIk5vU3BvdDogQSByZWd1bGFyIFBheS1Bcy1Zb3UtR28gaW5zdGFuY2VcIiwgXCJTcG90V2l0aFByaWNlTGltaXQ6IEEgcHJpY2UgdGhyZXNob2xkIGZvciBhIHNwb3QgaW5zdGFuY2UsIFwiXCJTcG90QXNQcmljZUdvOiBBIHByaWNlIHRoYXQgaXMgYmFzZWQgb24gdGhlIGhpZ2hlc3QgUGF5LUFzLVlvdS1HbyBpbnN0YW5jZS4gXCJEZWZhdWx0IHZhbHVlOiBOb1Nwb3QuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3BvdFN0cmF0ZWd5Pzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3RvcmFnZVNldElkOiBUaGUgc3RvcmFnZSBzZXQgSUQuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3RvcmFnZVNldElkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3RvcmFnZVNldFBhcnRpdGlvbk51bWJlcjogVGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcnRpdGlvbnMgaW4gdGhlIHN0b3JhZ2Ugc2V0LiBUaGUgdmFsdWUgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gMi5cbiAgICAgKi9cbiAgICByZWFkb25seSBzdG9yYWdlU2V0UGFydGl0aW9uTnVtYmVyPzogbnVtYmVyIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3lzdGVtRGlza0F1dG9TbmFwc2hvdFBvbGljeUlkOiBBdXRvIHNuYXBzaG90IHBvbGljeSBJRC5cbiAgICAgKi9cbiAgICByZWFkb25seSBzeXN0ZW1EaXNrQXV0b1NuYXBzaG90UG9saWN5SWQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzeXN0ZW1EaXNrQnVyc3RpbmdFbmFibGVkOiBXaGV0aGVyIGVuYWJsZSBidXJzdGluZy5cbiAgICAgKi9cbiAgICByZWFkb25seSBzeXN0ZW1EaXNrQnVyc3RpbmdFbmFibGVkPzogYm9vbGVhbiB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHN5c3RlbURpc2tDYXRlZ29yeTogQ2F0ZWdvcnkgb2Ygc3lzdGVtIGRpc2suIERlZmF1bHQgaXMgY2xvdWRfZWZmaWNpZW5jeS4gc3VwcG9ydCBjbG91ZHxjbG91ZF9lZmZpY2llbmN5fGNsb3VkX3NzZHxjbG91ZF9lc3NkfGVwaGVtZXJhbF9zc2R8Y2xvdWRfYXV0b3xjbG91ZF9lc3NkX2VudHJ5Lk9sZCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBzeXN0ZW1EaXNrQ2F0ZWdvcnk/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzeXN0ZW1EaXNrRGVzY3JpcHRpb246IERlc2NyaXB0aW9uIG9mIGNyZWF0ZWQgc3lzdGVtIGRpc2suT2xkIGluc3RhbmNlcyB3aWxsIG5vdCBiZSBjaGFuZ2VkLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tEZXNjcmlwdGlvbj86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHN5c3RlbURpc2tEaXNrTmFtZTogTmFtZSBvZiBjcmVhdGVkIHN5c3RlbSBkaXNrLk9sZCBpbnN0YW5jZXMgd2lsbCBub3QgYmUgY2hhbmdlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSBzeXN0ZW1EaXNrRGlza05hbWU/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzeXN0ZW1EaXNrRW5jcnlwdEFsZ29yaXRobTogVGhlIGFsZ29yaXRobSB0byB1c2UgdG8gZW5jcnlwdCB0aGUgc3lzdGVtIGRpc2suIFZhbGlkIHZhbHVlczpcbiAgICAgKiAtIGFzZS0yNTZcbiAgICAgKiAtIHNtNC0xMjhcbiAgICAgKiBEZWZhdWx0IHZhbHVlOiBhc2UtMjU2LlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tFbmNyeXB0QWxnb3JpdGhtPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3lzdGVtRGlza0VuY3J5cHRlZDogU3BlY2lmaWVzIHdoZXRoZXIgdG8gZW5jcnlwdCB0aGUgc3lzdGVtIGRpc2suIFZhbGlkIHZhbHVlczpcbiAgICAgKiAtIHRydWU6IGVuY3J5cHRzIHRoZSBzeXN0ZW0gZGlzay5cbiAgICAgKiAtIGZhbHNlOiBkb2VzIG5vdCBlbmNyeXB0IHRoZSBzeXN0ZW0gZGlzay5cbiAgICAgKiBEZWZhdWx0IHZhbHVlOiBmYWxzZS5cbiAgICAgKi9cbiAgICByZWFkb25seSBzeXN0ZW1EaXNrRW5jcnlwdGVkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3lzdGVtRGlza0ttc0tleUlkOiBUaGUgSUQgb2YgdGhlIEtNUyBrZXkgdG8gdXNlIGZvciB0aGUgc3lzdGVtIGRpc2suXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3lzdGVtRGlza0ttc0tleUlkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3lzdGVtRGlza1BlcmZvcm1hbmNlTGV2ZWw6IFRoZSBwZXJmb3JtYW5jZSBsZXZlbCBvZiB0aGUgZW5oYW5jZWQgU1NEIHVzZWQgYXMgdGhlIHN5c3RlbSBkaXNrLkRlZmF1bHQgdmFsdWU6IFBMMS4gVmFsaWQgdmFsdWVzOlBMMDogQSBzaW5nbGUgZW5oYW5jZWQgU1NEIGRlbGl2ZXJzIHVwIHRvIDEwLDAwMCByYW5kb20gcmVhZFxcL3dyaXRlIElPUFMuUEwxOiBBIHNpbmdsZSBlbmhhbmNlZCBTU0QgZGVsaXZlcnMgdXAgdG8gNTAsMDAwIHJhbmRvbSByZWFkXFwvd3JpdGUgSU9QUy5QTDI6IEEgc2luZ2xlIGVuaGFuY2VkIFNTRCBkZWxpdmVycyB1cCB0byAxMDAsMDAwIHJhbmRvbSByZWFkXFwvd3JpdGUgSU9QUy5QTDM6IEEgc2luZ2xlIGVuaGFuY2VkIFNTRCBkZWxpdmVycyB1cCB0byAxLDAwMCwwMDAgcmFuZG9tIHJlYWRcXC93cml0ZSBJT1BTLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tQZXJmb3JtYW5jZUxldmVsPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgc3lzdGVtRGlza1Byb3Zpc2lvbmVkSW9wczogUHJvdmlzaW9uaW5nIElPUFMuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3lzdGVtRGlza1Byb3Zpc2lvbmVkSW9wcz86IG51bWJlciB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHN5c3RlbURpc2tTaXplOiBEaXNrIHNpemUgb2YgdGhlIHN5c3RlbSBkaXNrLCByYW5nZSBmcm9tIDIwIHRvIDUwMCBHQi4gSWYgeW91IHNwZWNpZnkgd2l0aCB5b3VyIG93biBpbWFnZSwgbWFrZSBzdXJlIHRoZSBzeXN0ZW0gZGlzayBzaXplIGJpZ2dlciB0aGFuIGltYWdlIHNpemUuXG4gICAgICovXG4gICAgcmVhZG9ubHkgc3lzdGVtRGlza1NpemU/OiBudW1iZXIgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSBzeXN0ZW1EaXNrU3RvcmFnZUNsdXN0ZXJJZDogVGhlIElEIG9mIHRoZSBkZWRpY2F0ZWQgYmxvY2sgc3RvcmFnZSBjbHVzdGVyLiBJZiB5b3Ugd2FudCB0byB1c2UgZGlza3MgaW4gYSBkZWRpY2F0ZWQgYmxvY2sgc3RvcmFnZSBjbHVzdGVyIGFzIHN5c3RlbSBkaXNrcyB3aGVuIHlvdSBjcmVhdGUgaW5zdGFuY2VzLCB5b3UgbXVzdCBzcGVjaWZ5IHRoaXMgcGFyYW1ldGVyLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHN5c3RlbURpc2tTdG9yYWdlQ2x1c3RlcklkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgdGFnczogVGFncyB0byBhdHRhY2ggdG8gaW5zdGFuY2UuIE1heCBzdXBwb3J0IDIwIHRhZ3MgdG8gYWRkIGR1cmluZyBjcmVhdGUgaW5zdGFuY2UuIEVhY2ggdGFnIHdpdGggdHdvIHByb3BlcnRpZXMgS2V5IGFuZCBWYWx1ZSwgYW5kIEtleSBpcyByZXF1aXJlZC5cbiAgICAgKi9cbiAgICByZWFkb25seSB0YWdzPzogUm9zSW5zdGFuY2VHcm91cC5UYWdzUHJvcGVydHlbXTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHRlbmFuY3k6IFNwZWNpZmllcyB3aGV0aGVyIHRvIGNyZWF0ZSB0aGUgaW5zdGFuY2Ugb24gYSBkZWRpY2F0ZWQgaG9zdC4gVmFsaWQgdmFsdWVzOlxuICAgICAqIC0gKipkZWZhdWx0Kio6IGNyZWF0ZXMgdGhlIGluc3RhbmNlIG9uIGEgbm9uLWRlZGljYXRlZCBob3N0LlxuICAgICAqIC0gKipob3N0Kio6IGNyZWF0ZXMgdGhlIGluc3RhbmNlIG9uIGEgZGVkaWNhdGVkIGhvc3QuIElmIHlvdSBkbyBub3Qgc3BlY2lmeSAqKkRlZGljYXRlZEhvc3RJZCoqLCBBbGliYWJhIENsb3VkIHNlbGVjdHMgYSBkZWRpY2F0ZWQgaG9zdCBmb3IgdGhlIGluc3RhbmNlLlxuICAgICAqIERlZmF1bHQgdmFsdWU6ICoqZGVmYXVsdCoqLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHRlbmFuY3k/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB1bmlxdWVTdWZmaXg6IFNwZWNpZmllcyB3aGV0aGVyIHRvIGF1dG9tYXRpY2FsbHkgYXBwZW5kIGluY3JlbWVudGFsIHN1ZmZpeGVzIHRvIHRoZSBob3N0bmFtZSBzcGVjaWZpZWQgYnkgdGhlICoqSG9zdE5hbWUqKiBwYXJhbWV0ZXIgYW5kIHRvIHRoZSBpbnN0YW5jZSBuYW1lIHNwZWNpZmllZCBieSB0aGUgKipJbnN0YW5jZU5hbWUqKiBwYXJhbWV0ZXIgd2hlbiB5b3UgYmF0Y2ggY3JlYXRlIGluc3RhbmNlcy4gVGhlIGluY3JlbWVudGFsIHN1ZmZpeGVzIGNhbiByYW5nZSBmcm9tIDAwMSB0byA5OTkuIFZhbGlkIHZhbHVlczpcbiAgICAgKiAtICoqdHJ1ZSoqOiBhcHBlbmRzIGluY3JlbWVudGFsIHN1ZmZpeGVzIHRvIHRoZSBob3N0bmFtZSBhbmQgdGhlIGluc3RhbmNlIG5hbWUuXG4gICAgICogLSAqKmZhbHNlKio6IGRvZXMgbm90IGFwcGVuZCBpbmNyZW1lbnRhbCBzdWZmaXhlcyB0byB0aGUgaG9zdG5hbWUgb3IgdGhlIGluc3RhbmNlIG5hbWUuXG4gICAgICogRGVmYXVsdCB2YWx1ZTogKipmYWxzZSoqLlxuICAgICAqIFdoZW4gdGhlICoqSG9zdE5hbWUqKiBvciAqKkluc3RhbmNlTmFtZSoqIHZhbHVlIGlzIHNldCBpbiB0aGUgbmFtZV9wcmVmaXhbYmVnaW5fbnVtYmVyLGJpdHNdIGZvcm1hdCB3aXRob3V0IGEgc3VmZml4IChuYW1lX3N1ZmZpeCksIHRoZSAqKlVuaXF1ZVN1ZmZpeCoqIHBhcmFtZXRlciBkb2VzIG5vdCB0YWtlIGVmZmVjdC4gVGhlIG5hbWVzIGFyZSBzb3J0ZWQgaW4gdGhlIHNwZWNpZmllZCBzZXF1ZW5jZS5cbiAgICAgKi9cbiAgICByZWFkb25seSB1bmlxdWVTdWZmaXg/OiBib29sZWFuIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgdXBkYXRlUG9saWN5OiBTcGVjaWZ5IHRoZSBwb2xpY3kgYXQgdXBkYXRlLiBcbiAgICAgKiBUaGUgdmFsdWUgY2FuIGJlICdGb3JOZXdJbnN0YW5jZXMnIG9yICdGb3JBbGxJbnN0YW5jZXMnLlxuICAgICAqIElmIFVwZGF0ZVBvbGljeSBpcyAnRm9yQWxsSW5zdGFuY2UnLCBUaGUgdXBkYXRhYmxlIHBhcmFtZXRlcnMgYXJlIEluc3RhbmNlVHlwZSwgSW1hZ2VJZCwgU3lzdGVtRGlza1NpemUsIFN5c3RlbURpc2tDYXRlZ29yeSwgUGFzc3dvcmQsIFVzZXJEYXRhLEludGVybmV0Q2hhcmdlVHlwZSwgSW50ZXJuZXRNYXhCYW5kd2lkdGhPdXQsIEludGVybmV0TWF4QmFuZHdpZHRoSW4uXG4gICAgICogVGhlIGRlZmF1bHQgaXMgJ0Zvck5ld0luc3RhbmNlcydcbiAgICAgKi9cbiAgICByZWFkb25seSB1cGRhdGVQb2xpY3k/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB1c2VBZGRpdGlvbmFsU2VydmljZTogU3BlY2lmaWVzIHdoZXRoZXIgdG8gdXNlIHRoZSBzeXN0ZW0gY29uZmlndXJhdGlvbnMgZm9yIHZpcnR1YWwgbWFjaGluZXMgcHJvdmlkZWQgYnkgQWxpYmFiYSBDbG91ZC4gU3lzdGVtIGNvbmZpZ3VyYXRpb25zIGZvciBXaW5kb3dzOiBOVFAgYW5kIEtNUy4gU3lzdGVtIGNvbmZpZ3VyYXRpb25zIGZvciBMaW51eDogTlRQIGFuZCBZVU0uXG4gICAgICovXG4gICAgcmVhZG9ubHkgdXNlQWRkaXRpb25hbFNlcnZpY2U/OiBib29sZWFuIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgdXNlckRhdGE6IFVzZXIgZGF0YSB0byBwYXNzIHRvIGluc3RhbmNlLiBbMSwgMTZLQl0gY2hhcmFjdGVycy5Vc2VyIGRhdGEgc2hvdWxkIG5vdCBiZSBiYXNlNjQgZW5jb2RlZC4gSWYgeW91IHdhbnQgdG8gcGFzcyBiYXNlNjQgZW5jb2RlZCBzdHJpbmcgdG8gdGhlIHByb3BlcnR5LCB1c2UgZnVuY3Rpb24gRm46OkJhc2U2NERlY29kZSB0byBkZWNvZGUgdGhlIGJhc2U2NCBzdHJpbmcgZmlyc3QuXG4gICAgICovXG4gICAgcmVhZG9ubHkgdXNlckRhdGE/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB2cGNJZDogVGhlIFZQQyBpZCB0byBjcmVhdGUgZWNzIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nIHwgcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUHJvcGVydHkgdlN3aXRjaElkOiBUaGUgdlN3aXRjaCBJZCB0byBjcmVhdGUgZWNzIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHJlYWRvbmx5IHZTd2l0Y2hJZD86IHN0cmluZyB8IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIFByb3BlcnR5IHpvbmVJZDogVGhlIElEIG9mIHRoZSB6b25lIHRvIHdoaWNoIHRoZSBpbnN0YW5jZSBiZWxvbmdzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgXG4gICAgICogY2FsbCB0aGUgRGVzY3JpYmVab25lcyBvcGVyYXRpb24gdG8gcXVlcnkgdGhlIG1vc3QgcmVjZW50IHpvbmUgbGlzdC4gXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyBlbXB0eSwgd2hpY2ggbWVhbnMgcmFuZG9tIHNlbGVjdGlvbi5cbiAgICAgKi9cbiAgICByZWFkb25seSB6b25lSWQ/OiBzdHJpbmcgfCByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBQcm9wZXJ0eSB6b25lSWRzOiBab25lIGlkcyBmb3IgcXVlcnkgcGFyYW1ldGVyc1xuICAgICAqL1xuICAgIHJlYWRvbmx5IHpvbmVJZHM/OiBBcnJheTxzdHJpbmcgfCByb3MuSVJlc29sdmFibGU+IHwgcm9zLklSZXNvbHZhYmxlO1xufVxuXG4vKipcbiAqIFRoaXMgY2xhc3MgZW5jYXBzdWxhdGVzIGFuZCBleHRlbmRzIHRoZSBST1MgcmVzb3VyY2UgdHlwZSBgQUxJWVVOOjpFQ1M6Okluc3RhbmNlR3JvdXBgLCB3aGljaCBpcyB1c2VkIHRvIGNyZWF0ZSBhIGdyb3VwIG9mIEVsYXN0aWMgQ29tcHV0ZSBTZXJ2aWNlIChFQ1MpIGluc3RhbmNlcyB0aGF0IGhhdmUgdGhlIHNhbWUgY29uZmlndXJhdGlvbnMuXG4gKiBATm90ZSBUaGlzIGNsYXNzIG1heSBoYXZlIHNvbWUgbmV3IGZ1bmN0aW9ucyB0byBmYWNpbGl0YXRlIGRldmVsb3BtZW50LCBzbyBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhpcyBjbGFzcyBpbnN0ZWFkIG9mIGBSb3NJbnN0YW5jZUdyb3VwYGZvciBhIG1vcmUgY29udmVuaWVudCBkZXZlbG9wbWVudCBleHBlcmllbmNlLlxuICogU2VlIGh0dHBzOi8vd3d3LmFsaWJhYmFjbG91ZC5jb20vaGVscC9yb3MvZGV2ZWxvcGVyLXJlZmVyZW5jZS9hbGl5dW4tZWNzLWluc3RhbmNlZ3JvdXBcbiAqL1xuZXhwb3J0IGNsYXNzIEluc3RhbmNlR3JvdXAgZXh0ZW5kcyByb3MuUmVzb3VyY2Uge1xuICAgIHByb3RlY3RlZCBzY29wZTogcm9zLkNvbnN0cnVjdDtcbiAgICBwcm90ZWN0ZWQgaWQ6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgcHJvcHM6IEluc3RhbmNlR3JvdXBQcm9wcztcbiAgICBwcm90ZWN0ZWQgZW5hYmxlUmVzb3VyY2VQcm9wZXJ0eUNvbnN0cmFpbnQ6IGJvb2xlYW47XG5cbiAgICAvKipcbiAgICAgKiBBdHRyaWJ1dGUgSG9zdE5hbWVzOiBIb3N0IG5hbWVzIG9mIGNyZWF0ZWQgaW5zdGFuY2VzLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdHRySG9zdE5hbWVzOiByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBBdHRyaWJ1dGUgSW5uZXJJcHM6IElubmVyIElQIGFkZHJlc3MgbGlzdCBvZiB0aGUgc3BlY2lmaWVkIGluc3RhbmNlcy4gT25seSBmb3IgY2xhc3NpY2FsIGluc3RhbmNlcy5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXR0cklubmVySXBzOiByb3MuSVJlc29sdmFibGU7XG5cbiAgICAvKipcbiAgICAgKiBBdHRyaWJ1dGUgSW5zdGFuY2VJZHM6IFRoZSBpbnN0YW5jZSBpZCBsaXN0IG9mIGNyZWF0ZWQgZWNzIGluc3RhbmNlc1xuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdHRySW5zdGFuY2VJZHM6IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBJcHY2QWRkcmVzc0lkczogSVB2NiBhZGRyZXNzIElEcyBsaXN0IG9mIGNyZWF0ZWQgZWNzIGluc3RhbmNlcy4gTm90ZTogVGhlIHJldHVybiB0eXBlIGlzIGEgdHdvLXRpZXIgbGlzdC5JZiB0aGUgaW5zdGFuY2UgZG9lcyBub3QgaGF2ZSBhbnkgSVB2NiBhZGRyZXNzLCB0aGUgZWxlbWVudCBhdCB0aGUgY29ycmVzcG9uZGluZyBwb3NpdGlvbiBpbiB0aGUgbGlzdCBpcyBudWxsLiBJZiBhbGwgaW5zdGFuY2VzIGRvZXMgbm90IGhhdmUgYW55IElQdiBhZGRyZXNzLCB3aWxsIHJldHVybiBudWxsLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdHRySXB2NkFkZHJlc3NJZHM6IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBJcHY2QWRkcmVzc2VzOiBJUHY2IGFkZHJlc3NlcyBsaXN0IG9mIGNyZWF0ZWQgZWNzIGluc3RhbmNlcy4gTm90ZTogVGhlIHJldHVybiB0eXBlIGlzIGEgdHdvLXRpZXIgbGlzdC4gSWYgdGhlIGluc3RhbmNlIGRvZXMgbm90IGhhdmUgYW55IElQdjYgYWRkcmVzcywgdGhlIGVsZW1lbnQgYXQgdGhlIGNvcnJlc3BvbmRpbmcgcG9zaXRpb24gaW4gdGhlIGxpc3QgaXMgbnVsbC4gSWYgYWxsIGluc3RhbmNlcyBkb2VzIG5vdCBoYXZlIGFueSBJUHYgYWRkcmVzcywgd2lsbCByZXR1cm4gbnVsbC5cbiAgICAgKi9cbiAgICBwdWJsaWMgcmVhZG9ubHkgYXR0cklwdjZBZGRyZXNzZXM6IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBPcmRlcklkOiBUaGUgb3JkZXIgaWQgbGlzdCBvZiBjcmVhdGVkIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdHRyT3JkZXJJZDogcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlIFByaXZhdGVJcHM6IFByaXZhdGUgSVAgYWRkcmVzcyBsaXN0IG9mIGNyZWF0ZWQgZWNzIGluc3RhbmNlcy4gT25seSBmb3IgVlBDIGluc3RhbmNlLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdHRyUHJpdmF0ZUlwczogcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogQXR0cmlidXRlIFB1YmxpY0lwczogUHVibGljIElQIGFkZHJlc3MgbGlzdCBvZiBjcmVhdGVkIGVjcyBpbnN0YW5jZXMuXG4gICAgICovXG4gICAgcHVibGljIHJlYWRvbmx5IGF0dHJQdWJsaWNJcHM6IHJvcy5JUmVzb2x2YWJsZTtcblxuICAgIC8qKlxuICAgICAqIEF0dHJpYnV0ZSBab25lSWRzOiBab25lIGlkIG9mIGNyZWF0ZWQgaW5zdGFuY2VzLlxuICAgICAqL1xuICAgIHB1YmxpYyByZWFkb25seSBhdHRyWm9uZUlkczogcm9zLklSZXNvbHZhYmxlO1xuXG4gICAgLyoqXG4gICAgICogUGFyYW0gc2NvcGUgLSBzY29wZSBpbiB3aGljaCB0aGlzIHJlc291cmNlIGlzIGRlZmluZWRcbiAgICAgKiBQYXJhbSBpZCAgICAtIHNjb3BlZCBpZCBvZiB0aGUgcmVzb3VyY2VcbiAgICAgKiBQYXJhbSBwcm9wcyAtIHJlc291cmNlIHByb3BlcnRpZXNcbiAgICAgKi9cbiAgICBjb25zdHJ1Y3RvcihzY29wZTogcm9zLkNvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEluc3RhbmNlR3JvdXBQcm9wcywgZW5hYmxlUmVzb3VyY2VQcm9wZXJ0eUNvbnN0cmFpbnQ6Ym9vbGVhbiA9IHRydWUpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAgICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICAgICAgICB0aGlzLmlkID0gaWQ7XG4gICAgICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICAgICAgdGhpcy5lbmFibGVSZXNvdXJjZVByb3BlcnR5Q29uc3RyYWludCA9IGVuYWJsZVJlc291cmNlUHJvcGVydHlDb25zdHJhaW50O1xuXG4gICAgICAgIGNvbnN0IHJvc0luc3RhbmNlR3JvdXAgPSBuZXcgUm9zSW5zdGFuY2VHcm91cCh0aGlzLCBpZCwgIHtcbiAgICAgICAgICAgIGRlZGljYXRlZEhvc3RJZDogcHJvcHMuZGVkaWNhdGVkSG9zdElkLFxuICAgICAgICAgICAgcmVzb3VyY2VHcm91cElkOiBwcm9wcy5yZXNvdXJjZUdyb3VwSWQsXG4gICAgICAgICAgICBzeXN0ZW1EaXNrRGVzY3JpcHRpb246IHByb3BzLnN5c3RlbURpc2tEZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGluc3RhbmNlQ2hhcmdlVHlwZTogcHJvcHMuaW5zdGFuY2VDaGFyZ2VUeXBlID09PSB1bmRlZmluZWQgfHwgcHJvcHMuaW5zdGFuY2VDaGFyZ2VUeXBlID09PSBudWxsID8gJ1Bvc3RQYWlkJyA6IHByb3BzLmluc3RhbmNlQ2hhcmdlVHlwZSxcbiAgICAgICAgICAgIHN5c3RlbURpc2tQcm92aXNpb25lZElvcHM6IHByb3BzLnN5c3RlbURpc2tQcm92aXNpb25lZElvcHMsXG4gICAgICAgICAgICBzeXN0ZW1EaXNrRW5jcnlwdEFsZ29yaXRobTogcHJvcHMuc3lzdGVtRGlza0VuY3J5cHRBbGdvcml0aG0sXG4gICAgICAgICAgICByYW1Sb2xlTmFtZTogcHJvcHMucmFtUm9sZU5hbWUsXG4gICAgICAgICAgICBwcml2YXRlUG9vbE9wdGlvbnM6IHByb3BzLnByaXZhdGVQb29sT3B0aW9ucyxcbiAgICAgICAgICAgIHN5c3RlbURpc2tQZXJmb3JtYW5jZUxldmVsOiBwcm9wcy5zeXN0ZW1EaXNrUGVyZm9ybWFuY2VMZXZlbCxcbiAgICAgICAgICAgIGltYWdlSWQ6IHByb3BzLmltYWdlSWQsXG4gICAgICAgICAgICBpbWFnZU9wdGlvbnM6IHByb3BzLmltYWdlT3B0aW9ucyxcbiAgICAgICAgICAgIHN5c3RlbURpc2tEaXNrTmFtZTogcHJvcHMuc3lzdGVtRGlza0Rpc2tOYW1lLFxuICAgICAgICAgICAgc3RvcmFnZVNldElkOiBwcm9wcy5zdG9yYWdlU2V0SWQsXG4gICAgICAgICAgICB1c2VBZGRpdGlvbmFsU2VydmljZTogcHJvcHMudXNlQWRkaXRpb25hbFNlcnZpY2UsXG4gICAgICAgICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgICAgICAgaG9zdE5hbWU6IHByb3BzLmhvc3ROYW1lLFxuICAgICAgICAgICAgc3lzdGVtRGlza1N0b3JhZ2VDbHVzdGVySWQ6IHByb3BzLnN5c3RlbURpc2tTdG9yYWdlQ2x1c3RlcklkLFxuICAgICAgICAgICAgbGF1bmNoVGVtcGxhdGVOYW1lOiBwcm9wcy5sYXVuY2hUZW1wbGF0ZU5hbWUsXG4gICAgICAgICAgICB1cGRhdGVQb2xpY3k6IHByb3BzLnVwZGF0ZVBvbGljeSA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLnVwZGF0ZVBvbGljeSA9PT0gbnVsbCA/ICdGb3JOZXdJbnN0YW5jZXMnIDogcHJvcHMudXBkYXRlUG9saWN5LFxuICAgICAgICAgICAgc3lzdGVtRGlza0ttc0tleUlkOiBwcm9wcy5zeXN0ZW1EaXNrS21zS2V5SWQsXG4gICAgICAgICAgICBjcHVPcHRpb25zOiBwcm9wcy5jcHVPcHRpb25zLFxuICAgICAgICAgICAgdlN3aXRjaElkOiBwcm9wcy52U3dpdGNoSWQsXG4gICAgICAgICAgICBwZXJpb2Q6IHByb3BzLnBlcmlvZCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLnBlcmlvZCA9PT0gbnVsbCA/IDEgOiBwcm9wcy5wZXJpb2QsXG4gICAgICAgICAgICBpbWFnZUZhbWlseTogcHJvcHMuaW1hZ2VGYW1pbHksXG4gICAgICAgICAgICBsYXVuY2hUZW1wbGF0ZUlkOiBwcm9wcy5sYXVuY2hUZW1wbGF0ZUlkLFxuICAgICAgICAgICAgZGVsZXRpb25Qcm90ZWN0aW9uOiBwcm9wcy5kZWxldGlvblByb3RlY3Rpb24sXG4gICAgICAgICAgICBodHRwRW5kcG9pbnQ6IHByb3BzLmh0dHBFbmRwb2ludCxcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBJZHM6IHByb3BzLnNlY3VyaXR5R3JvdXBJZHMsXG4gICAgICAgICAgICBpbnRlcm5ldENoYXJnZVR5cGU6IHByb3BzLmludGVybmV0Q2hhcmdlVHlwZSA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmludGVybmV0Q2hhcmdlVHlwZSA9PT0gbnVsbCA/ICdQYXlCeVRyYWZmaWMnIDogcHJvcHMuaW50ZXJuZXRDaGFyZ2VUeXBlLFxuICAgICAgICAgICAgZGVwbG95bWVudFNldElkOiBwcm9wcy5kZXBsb3ltZW50U2V0SWQsXG4gICAgICAgICAgICBzcG90SW50ZXJydXB0aW9uQmVoYXZpb3I6IHByb3BzLnNwb3RJbnRlcnJ1cHRpb25CZWhhdmlvciA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLnNwb3RJbnRlcnJ1cHRpb25CZWhhdmlvciA9PT0gbnVsbCA/ICdUZXJtaW5hdGUnIDogcHJvcHMuc3BvdEludGVycnVwdGlvbkJlaGF2aW9yLFxuICAgICAgICAgICAgaW5zdGFuY2VOYW1lOiBwcm9wcy5pbnN0YW5jZU5hbWUsXG4gICAgICAgICAgICBpbnRlcm5ldE1heEJhbmR3aWR0aE91dDogcHJvcHMuaW50ZXJuZXRNYXhCYW5kd2lkdGhPdXQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5pbnRlcm5ldE1heEJhbmR3aWR0aE91dCA9PT0gbnVsbCA/IDEgOiBwcm9wcy5pbnRlcm5ldE1heEJhbmR3aWR0aE91dCxcbiAgICAgICAgICAgIHZwY0lkOiBwcm9wcy52cGNJZCxcbiAgICAgICAgICAgIHVuaXF1ZVN1ZmZpeDogcHJvcHMudW5pcXVlU3VmZml4ID09PSB1bmRlZmluZWQgfHwgcHJvcHMudW5pcXVlU3VmZml4ID09PSBudWxsID8gZmFsc2UgOiBwcm9wcy51bmlxdWVTdWZmaXgsXG4gICAgICAgICAgICBsYXVuY2hUZW1wbGF0ZVZlcnNpb246IHByb3BzLmxhdW5jaFRlbXBsYXRlVmVyc2lvbixcbiAgICAgICAgICAgIHNlY3VyaXR5T3B0aW9uczogcHJvcHMuc2VjdXJpdHlPcHRpb25zLFxuICAgICAgICAgICAgYWZmaW5pdHk6IHByb3BzLmFmZmluaXR5LFxuICAgICAgICAgICAgc2VjdXJpdHlFbmhhbmNlbWVudFN0cmF0ZWd5OiBwcm9wcy5zZWN1cml0eUVuaGFuY2VtZW50U3RyYXRlZ3ksXG4gICAgICAgICAgICBhdXRvUmVsZWFzZVRpbWU6IHByb3BzLmF1dG9SZWxlYXNlVGltZSxcbiAgICAgICAgICAgIHBlcmlvZFVuaXQ6IHByb3BzLnBlcmlvZFVuaXQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5wZXJpb2RVbml0ID09PSBudWxsID8gJ01vbnRoJyA6IHByb3BzLnBlcmlvZFVuaXQsXG4gICAgICAgICAgICB0ZW5hbmN5OiBwcm9wcy50ZW5hbmN5LFxuICAgICAgICAgICAgcHJpdmF0ZUlwQWRkcmVzczogcHJvcHMucHJpdmF0ZUlwQWRkcmVzcyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbixcbiAgICAgICAgICAgIGRpc2tNYXBwaW5nczogcHJvcHMuZGlza01hcHBpbmdzLFxuICAgICAgICAgICAgc3lzdGVtRGlza1NpemU6IHByb3BzLnN5c3RlbURpc2tTaXplLFxuICAgICAgICAgICAgdXNlckRhdGE6IHByb3BzLnVzZXJEYXRhLFxuICAgICAgICAgICAgYXV0b1JlbmV3OiBwcm9wcy5hdXRvUmVuZXcgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5hdXRvUmVuZXcgPT09IG51bGwgPyAnRmFsc2UnIDogcHJvcHMuYXV0b1JlbmV3LFxuICAgICAgICAgICAgc3BvdER1cmF0aW9uOiBwcm9wcy5zcG90RHVyYXRpb24sXG4gICAgICAgICAgICBzdG9yYWdlU2V0UGFydGl0aW9uTnVtYmVyOiBwcm9wcy5zdG9yYWdlU2V0UGFydGl0aW9uTnVtYmVyLFxuICAgICAgICAgICAgaXB2NkFkZHJlc3NlczogcHJvcHMuaXB2NkFkZHJlc3NlcyxcbiAgICAgICAgICAgIHN5c3RlbURpc2tFbmNyeXB0ZWQ6IHByb3BzLnN5c3RlbURpc2tFbmNyeXB0ZWQsXG4gICAgICAgICAgICBtYXhBbW91bnQ6IHByb3BzLm1heEFtb3VudCxcbiAgICAgICAgICAgIHN5c3RlbURpc2tBdXRvU25hcHNob3RQb2xpY3lJZDogcHJvcHMuc3lzdGVtRGlza0F1dG9TbmFwc2hvdFBvbGljeUlkLFxuICAgICAgICAgICAgZGVsZXRpb25Gb3JjZTogcHJvcHMuZGVsZXRpb25Gb3JjZSA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmRlbGV0aW9uRm9yY2UgPT09IG51bGwgPyBmYWxzZSA6IHByb3BzLmRlbGV0aW9uRm9yY2UsXG4gICAgICAgICAgICBuZXR3b3JrVHlwZTogcHJvcHMubmV0d29ya1R5cGUsXG4gICAgICAgICAgICBpcHY2QWRkcmVzc0NvdW50OiBwcm9wcy5pcHY2QWRkcmVzc0NvdW50LFxuICAgICAgICAgICAgc2NoZWR1bGVyT3B0aW9uczogcHJvcHMuc2NoZWR1bGVyT3B0aW9ucyxcbiAgICAgICAgICAgIHNwb3RQcmljZUxpbWl0OiBwcm9wcy5zcG90UHJpY2VMaW1pdCxcbiAgICAgICAgICAgIGhvc3ROYW1lczogcHJvcHMuaG9zdE5hbWVzLFxuICAgICAgICAgICAgem9uZUlkczogcHJvcHMuem9uZUlkcyxcbiAgICAgICAgICAgIGluc3RhbmNlVHlwZTogcHJvcHMuaW5zdGFuY2VUeXBlLFxuICAgICAgICAgICAgYWxsb2NhdGVQdWJsaWNJcDogcHJvcHMuYWxsb2NhdGVQdWJsaWNJcCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmFsbG9jYXRlUHVibGljSXAgPT09IG51bGwgPyB0cnVlIDogcHJvcHMuYWxsb2NhdGVQdWJsaWNJcCxcbiAgICAgICAgICAgIHNwb3RTdHJhdGVneTogcHJvcHMuc3BvdFN0cmF0ZWd5LFxuICAgICAgICAgICAgcGFzc3dvcmRJbmhlcml0OiBwcm9wcy5wYXNzd29yZEluaGVyaXQsXG4gICAgICAgICAgICBwYXNzd29yZDogcHJvcHMucGFzc3dvcmQsXG4gICAgICAgICAgICBhdXRvUmVuZXdQZXJpb2Q6IHByb3BzLmF1dG9SZW5ld1BlcmlvZCA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLmF1dG9SZW5ld1BlcmlvZCA9PT0gbnVsbCA/IDEgOiBwcm9wcy5hdXRvUmVuZXdQZXJpb2QsXG4gICAgICAgICAgICBrZXlQYWlyTmFtZTogcHJvcHMua2V5UGFpck5hbWUsXG4gICAgICAgICAgICBpb09wdGltaXplZDogcHJvcHMuaW9PcHRpbWl6ZWQgPT09IHVuZGVmaW5lZCB8fCBwcm9wcy5pb09wdGltaXplZCA9PT0gbnVsbCA/ICdvcHRpbWl6ZWQnIDogcHJvcHMuaW9PcHRpbWl6ZWQsXG4gICAgICAgICAgICB6b25lSWQ6IHByb3BzLnpvbmVJZCxcbiAgICAgICAgICAgIGhwY0NsdXN0ZXJJZDogcHJvcHMuaHBjQ2x1c3RlcklkLFxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cElkOiBwcm9wcy5zZWN1cml0eUdyb3VwSWQsXG4gICAgICAgICAgICBkZXBsb3ltZW50U2V0R3JvdXBObzogcHJvcHMuZGVwbG95bWVudFNldEdyb3VwTm8sXG4gICAgICAgICAgICBzeXN0ZW1EaXNrQ2F0ZWdvcnk6IHByb3BzLnN5c3RlbURpc2tDYXRlZ29yeSA9PT0gdW5kZWZpbmVkIHx8IHByb3BzLnN5c3RlbURpc2tDYXRlZ29yeSA9PT0gbnVsbCA/ICdjbG91ZF9lZmZpY2llbmN5JyA6IHByb3BzLnN5c3RlbURpc2tDYXRlZ29yeSxcbiAgICAgICAgICAgIHN5c3RlbURpc2tCdXJzdGluZ0VuYWJsZWQ6IHByb3BzLnN5c3RlbURpc2tCdXJzdGluZ0VuYWJsZWQsXG4gICAgICAgICAgICBlbmlNYXBwaW5nczogcHJvcHMuZW5pTWFwcGluZ3MsXG4gICAgICAgICAgICBuZXR3b3JrT3B0aW9uczogcHJvcHMubmV0d29ya09wdGlvbnMsXG4gICAgICAgICAgICBodHRwVG9rZW5zOiBwcm9wcy5odHRwVG9rZW5zLFxuICAgICAgICAgICAgbmV0d29ya0ludGVyZmFjZVF1ZXVlTnVtYmVyOiBwcm9wcy5uZXR3b3JrSW50ZXJmYWNlUXVldWVOdW1iZXIsXG4gICAgICAgICAgICBjcmVkaXRTcGVjaWZpY2F0aW9uOiBwcm9wcy5jcmVkaXRTcGVjaWZpY2F0aW9uLFxuICAgICAgICB9LCBlbmFibGVSZXNvdXJjZVByb3BlcnR5Q29uc3RyYWludCAmJiB0aGlzLnN0YWNrLmVuYWJsZVJlc291cmNlUHJvcGVydHlDb25zdHJhaW50KTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZSA9IHJvc0luc3RhbmNlR3JvdXA7XG4gICAgICAgIHRoaXMuYXR0ckhvc3ROYW1lcyA9IHJvc0luc3RhbmNlR3JvdXAuYXR0ckhvc3ROYW1lcztcbiAgICAgICAgdGhpcy5hdHRySW5uZXJJcHMgPSByb3NJbnN0YW5jZUdyb3VwLmF0dHJJbm5lcklwcztcbiAgICAgICAgdGhpcy5hdHRySW5zdGFuY2VJZHMgPSByb3NJbnN0YW5jZUdyb3VwLmF0dHJJbnN0YW5jZUlkcztcbiAgICAgICAgdGhpcy5hdHRySXB2NkFkZHJlc3NJZHMgPSByb3NJbnN0YW5jZUdyb3VwLmF0dHJJcHY2QWRkcmVzc0lkcztcbiAgICAgICAgdGhpcy5hdHRySXB2NkFkZHJlc3NlcyA9IHJvc0luc3RhbmNlR3JvdXAuYXR0cklwdjZBZGRyZXNzZXM7XG4gICAgICAgIHRoaXMuYXR0ck9yZGVySWQgPSByb3NJbnN0YW5jZUdyb3VwLmF0dHJPcmRlcklkO1xuICAgICAgICB0aGlzLmF0dHJQcml2YXRlSXBzID0gcm9zSW5zdGFuY2VHcm91cC5hdHRyUHJpdmF0ZUlwcztcbiAgICAgICAgdGhpcy5hdHRyUHVibGljSXBzID0gcm9zSW5zdGFuY2VHcm91cC5hdHRyUHVibGljSXBzO1xuICAgICAgICB0aGlzLmF0dHJab25lSWRzID0gcm9zSW5zdGFuY2VHcm91cC5hdHRyWm9uZUlkcztcbiAgICB9XG59XG4iXX0=