terraconstructs 0.2.2 → 0.2.4

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 (281) hide show
  1. package/.jsii +899 -409
  2. package/lib/asset-staging.js +1 -1
  3. package/lib/aws/arn.js +1 -1
  4. package/lib/aws/aws-asset-manager.js +1 -1
  5. package/lib/aws/aws-construct.js +1 -1
  6. package/lib/aws/aws-stack.d.ts +16 -0
  7. package/lib/aws/aws-stack.js +14 -2
  8. package/lib/aws/aws-tags.js +2 -2
  9. package/lib/aws/cloudwatch/actions/appscaling.js +1 -1
  10. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  11. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  12. package/lib/aws/cloudwatch/actions/sns.js +1 -1
  13. package/lib/aws/cloudwatch/actions/ssm.js +2 -2
  14. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  15. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  16. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  17. package/lib/aws/cloudwatch/alarm.js +1 -1
  18. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  19. package/lib/aws/cloudwatch/dashboard.js +1 -1
  20. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  21. package/lib/aws/cloudwatch/graph.js +8 -8
  22. package/lib/aws/cloudwatch/layout.js +3 -3
  23. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  24. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  25. package/lib/aws/cloudwatch/log-group.js +1 -1
  26. package/lib/aws/cloudwatch/log-query.js +1 -1
  27. package/lib/aws/cloudwatch/log-stream.js +1 -1
  28. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  29. package/lib/aws/cloudwatch/metric.js +2 -2
  30. package/lib/aws/cloudwatch/pattern.js +3 -3
  31. package/lib/aws/cloudwatch/policy.js +1 -1
  32. package/lib/aws/cloudwatch/query-definition.js +2 -2
  33. package/lib/aws/cloudwatch/stats.js +1 -1
  34. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  35. package/lib/aws/cloudwatch/text.js +1 -1
  36. package/lib/aws/cloudwatch/variable.js +3 -3
  37. package/lib/aws/cloudwatch/widget.js +1 -1
  38. package/lib/aws/compute/access-log.js +4 -4
  39. package/lib/aws/compute/activity.js +1 -1
  40. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  41. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  42. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  43. package/lib/aws/compute/alb/application-listener.js +1 -1
  44. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  45. package/lib/aws/compute/alb/application-target-group.js +1 -1
  46. package/lib/aws/compute/alb/conditions.js +1 -1
  47. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  48. package/lib/aws/compute/alb/trust-store.js +1 -1
  49. package/lib/aws/compute/api-definition.js +3 -3
  50. package/lib/aws/compute/api-key.js +2 -2
  51. package/lib/aws/compute/architecture.js +1 -1
  52. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  53. package/lib/aws/compute/authorizer.js +1 -1
  54. package/lib/aws/compute/authorizers/identity-source.js +1 -1
  55. package/lib/aws/compute/authorizers/lambda.js +2 -2
  56. package/lib/aws/compute/base-path-mapping.js +1 -1
  57. package/lib/aws/compute/base-scalable-attribute.js +1 -1
  58. package/lib/aws/compute/bastion-host.js +1 -1
  59. package/lib/aws/compute/chain.js +1 -1
  60. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  61. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  62. package/lib/aws/compute/client-vpn-route.js +2 -2
  63. package/lib/aws/compute/code.js +8 -8
  64. package/lib/aws/compute/condition.js +1 -1
  65. package/lib/aws/compute/connections.js +1 -1
  66. package/lib/aws/compute/cors.js +1 -1
  67. package/lib/aws/compute/deployment.js +1 -1
  68. package/lib/aws/compute/domain-name.js +1 -1
  69. package/lib/aws/compute/event-invoke-config.js +1 -1
  70. package/lib/aws/compute/event-source-filter.js +2 -2
  71. package/lib/aws/compute/event-source-mapping.js +1 -1
  72. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  73. package/lib/aws/compute/event-sources/s3.js +1 -1
  74. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  75. package/lib/aws/compute/event-sources/sqs.js +1 -1
  76. package/lib/aws/compute/fields.js +4 -4
  77. package/lib/aws/compute/function-alias.js +1 -1
  78. package/lib/aws/compute/function-base.js +2 -2
  79. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  80. package/lib/aws/compute/function-destinations/function.js +1 -1
  81. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  82. package/lib/aws/compute/function-nodejs/function.js +1 -1
  83. package/lib/aws/compute/function-url.js +1 -1
  84. package/lib/aws/compute/function.js +1 -1
  85. package/lib/aws/compute/gateway-response.js +2 -2
  86. package/lib/aws/compute/handler.js +1 -1
  87. package/lib/aws/compute/instance-types.js +1 -1
  88. package/lib/aws/compute/instance.js +1 -1
  89. package/lib/aws/compute/integration.js +1 -1
  90. package/lib/aws/compute/integrations/aws.js +1 -1
  91. package/lib/aws/compute/integrations/http.js +1 -1
  92. package/lib/aws/compute/integrations/lambda.js +1 -1
  93. package/lib/aws/compute/integrations/mock.js +1 -1
  94. package/lib/aws/compute/integrations/stepfunctions.js +1 -1
  95. package/lib/aws/compute/ip-addresses.js +2 -2
  96. package/lib/aws/compute/ipam.js +1 -1
  97. package/lib/aws/compute/key-pair.js +1 -1
  98. package/lib/aws/compute/lambda-api.js +1 -1
  99. package/lib/aws/compute/launch-template.js +2 -2
  100. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  101. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  102. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  103. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  104. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  105. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  106. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  107. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  108. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  109. package/lib/aws/compute/load-balancer.js +3 -3
  110. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  111. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  112. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  113. package/lib/aws/compute/machine-image/common.js +1 -1
  114. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  115. package/lib/aws/compute/method.js +1 -1
  116. package/lib/aws/compute/model.js +3 -3
  117. package/lib/aws/compute/nat.js +5 -5
  118. package/lib/aws/compute/network-acl-types.js +2 -2
  119. package/lib/aws/compute/network-acl.js +3 -3
  120. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  121. package/lib/aws/compute/nlb/network-listener.js +1 -1
  122. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  123. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  124. package/lib/aws/compute/peer.js +1 -1
  125. package/lib/aws/compute/placement-group.js +1 -1
  126. package/lib/aws/compute/port.js +1 -1
  127. package/lib/aws/compute/prefix-list.js +1 -1
  128. package/lib/aws/compute/requestvalidator.js +1 -1
  129. package/lib/aws/compute/resource.js +3 -3
  130. package/lib/aws/compute/restapi.js +3 -3
  131. package/lib/aws/compute/route.js +10 -9
  132. package/lib/aws/compute/runtime.js +1 -1
  133. package/lib/aws/compute/scalable-target.js +1 -1
  134. package/lib/aws/compute/schedule.js +1 -1
  135. package/lib/aws/compute/security-group.js +39 -13
  136. package/lib/aws/compute/stage.js +2 -2
  137. package/lib/aws/compute/state-graph.js +1 -1
  138. package/lib/aws/compute/state-machine-fragment.js +1 -1
  139. package/lib/aws/compute/state-machine.js +4 -4
  140. package/lib/aws/compute/states/choice.js +1 -1
  141. package/lib/aws/compute/states/custom-state.js +1 -1
  142. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  143. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  144. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  145. package/lib/aws/compute/states/distributed-map.js +1 -1
  146. package/lib/aws/compute/states/fail.js +1 -1
  147. package/lib/aws/compute/states/map-base.js +1 -1
  148. package/lib/aws/compute/states/map.js +1 -1
  149. package/lib/aws/compute/states/parallel.js +1 -1
  150. package/lib/aws/compute/states/pass.js +2 -2
  151. package/lib/aws/compute/states/state.js +1 -1
  152. package/lib/aws/compute/states/succeed.js +1 -1
  153. package/lib/aws/compute/states/task-base.js +2 -2
  154. package/lib/aws/compute/states/task.js +1 -1
  155. package/lib/aws/compute/states/wait.js +2 -2
  156. package/lib/aws/compute/step-scaling-action.js +1 -1
  157. package/lib/aws/compute/step-scaling-policy.js +1 -1
  158. package/lib/aws/compute/stepfunctions-api.js +1 -1
  159. package/lib/aws/compute/subnet-v2.js +2 -2
  160. package/lib/aws/compute/subnet.js +1 -1
  161. package/lib/aws/compute/target-tracking-scaling-policy.js +1 -1
  162. package/lib/aws/compute/task-credentials.js +1 -1
  163. package/lib/aws/compute/task-input.js +1 -1
  164. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  165. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  166. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  167. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  168. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  169. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  170. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  171. package/lib/aws/compute/types.js +1 -1
  172. package/lib/aws/compute/usage-plan.js +1 -1
  173. package/lib/aws/compute/user-data.js +3 -3
  174. package/lib/aws/compute/volume.js +2 -2
  175. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  176. package/lib/aws/compute/vpc-endpoint.js +6 -6
  177. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  178. package/lib/aws/compute/vpc-link.js +1 -1
  179. package/lib/aws/compute/vpc-v2-base.js +1 -1
  180. package/lib/aws/compute/vpc-v2.js +2 -2
  181. package/lib/aws/compute/vpc.d.ts +47 -4
  182. package/lib/aws/compute/vpc.js +304 -148
  183. package/lib/aws/compute/vpn.js +3 -3
  184. package/lib/aws/context-provider.d.ts +117 -0
  185. package/lib/aws/context-provider.js +141 -0
  186. package/lib/aws/cx-api.d.ts +171 -0
  187. package/lib/aws/cx-api.js +23 -3
  188. package/lib/aws/edge/certificate.js +1 -1
  189. package/lib/aws/edge/distribution.js +3 -3
  190. package/lib/aws/edge/dns-alias-record-targets.js +6 -6
  191. package/lib/aws/edge/dns-record.js +13 -13
  192. package/lib/aws/edge/dns-zone.js +1 -1
  193. package/lib/aws/edge/function.js +2 -2
  194. package/lib/aws/edge/key-value-store.js +4 -4
  195. package/lib/aws/edge/origin.js +3 -3
  196. package/lib/aws/edge/response-headers-policy.js +1 -1
  197. package/lib/aws/encryption/alias.js +1 -1
  198. package/lib/aws/encryption/key.js +1 -1
  199. package/lib/aws/encryption/via-service-principal.js +1 -1
  200. package/lib/aws/iam/grant.js +3 -3
  201. package/lib/aws/iam/group.js +1 -1
  202. package/lib/aws/iam/instance-profile.js +1 -1
  203. package/lib/aws/iam/managed-policy.js +1 -1
  204. package/lib/aws/iam/oidc-provider.js +1 -1
  205. package/lib/aws/iam/policy-document.js +1 -1
  206. package/lib/aws/iam/policy-statement.js +1 -1
  207. package/lib/aws/iam/policy.js +1 -1
  208. package/lib/aws/iam/principals.js +20 -20
  209. package/lib/aws/iam/role.js +1 -1
  210. package/lib/aws/iam/saml-provider.js +2 -2
  211. package/lib/aws/iam/unknown-principal.js +1 -1
  212. package/lib/aws/iam/user.js +1 -1
  213. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  214. package/lib/aws/network/subnet-group.js +3 -3
  215. package/lib/aws/network/subnet.js +4 -4
  216. package/lib/aws/notify/archive.js +1 -1
  217. package/lib/aws/notify/connection.js +3 -3
  218. package/lib/aws/notify/event-bus.js +3 -3
  219. package/lib/aws/notify/event-pattern.js +1 -1
  220. package/lib/aws/notify/index.d.ts +1 -0
  221. package/lib/aws/notify/index.js +3 -1
  222. package/lib/aws/notify/input.js +2 -2
  223. package/lib/aws/notify/kinesis-stream.js +1 -1
  224. package/lib/aws/notify/notification-rule.js +1 -1
  225. package/lib/aws/notify/policy.js +1 -1
  226. package/lib/aws/notify/queue-base.js +1 -1
  227. package/lib/aws/notify/queue-policy.js +1 -1
  228. package/lib/aws/notify/queue.js +1 -1
  229. package/lib/aws/notify/resource-policy.js +1 -1
  230. package/lib/aws/notify/rule.js +1 -1
  231. package/lib/aws/notify/schedule.js +1 -1
  232. package/lib/aws/notify/sns-grants.generated.d.ts +39 -0
  233. package/lib/aws/notify/sns-grants.generated.js +77 -0
  234. package/lib/aws/notify/sqs-grants.generated.js +1 -1
  235. package/lib/aws/notify/subscription-filter.js +1 -1
  236. package/lib/aws/notify/subscription.d.ts +8 -2
  237. package/lib/aws/notify/subscription.js +6 -7
  238. package/lib/aws/notify/subscriptions/email.js +1 -1
  239. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  240. package/lib/aws/notify/subscriptions/sms.js +1 -1
  241. package/lib/aws/notify/subscriptions/sqs.js +1 -1
  242. package/lib/aws/notify/subscriptions/url.js +1 -1
  243. package/lib/aws/notify/targets/event-bus.js +1 -1
  244. package/lib/aws/notify/targets/function.js +1 -1
  245. package/lib/aws/notify/targets/log-group.js +2 -2
  246. package/lib/aws/notify/targets/sqs.js +1 -1
  247. package/lib/aws/notify/targets/state-machine.js +1 -1
  248. package/lib/aws/notify/topic-base.d.ts +6 -0
  249. package/lib/aws/notify/topic-base.js +16 -19
  250. package/lib/aws/notify/topic.d.ts +29 -6
  251. package/lib/aws/notify/topic.js +50 -47
  252. package/lib/aws/storage/assets/image-asset.js +3 -3
  253. package/lib/aws/storage/assets/s3.js +1 -1
  254. package/lib/aws/storage/auth-token.js +2 -2
  255. package/lib/aws/storage/billing.js +1 -1
  256. package/lib/aws/storage/bucket-notifications.js +1 -1
  257. package/lib/aws/storage/bucket-policy.js +1 -1
  258. package/lib/aws/storage/bucket-source.js +1 -1
  259. package/lib/aws/storage/bucket.js +2 -2
  260. package/lib/aws/storage/capacity.js +1 -1
  261. package/lib/aws/storage/ecr-repository.js +3 -3
  262. package/lib/aws/storage/encryption.js +1 -1
  263. package/lib/aws/storage/notification-targets/function.js +1 -1
  264. package/lib/aws/storage/notification-targets/queue.js +1 -1
  265. package/lib/aws/storage/origin-access-identity.js +1 -1
  266. package/lib/aws/storage/parameter.js +2 -2
  267. package/lib/aws/storage/stream-grants.js +1 -1
  268. package/lib/aws/storage/table-grants.js +1 -1
  269. package/lib/aws/storage/table.js +3 -3
  270. package/lib/bundling.js +3 -3
  271. package/lib/construct-base.js +2 -2
  272. package/lib/duration.js +1 -1
  273. package/lib/errors.js +1 -1
  274. package/lib/expiration.js +1 -1
  275. package/lib/fs/ignore.js +4 -4
  276. package/lib/fs/index.js +1 -1
  277. package/lib/size.js +1 -1
  278. package/lib/stack-base.js +1 -1
  279. package/lib/terra-func.js +1 -1
  280. package/lib/time-zone.js +1 -1
  281. package/package.json +3 -1
@@ -22,7 +22,7 @@ class AmazonLinuxImageSsmParameterBase {
22
22
  }
23
23
  exports.AmazonLinuxImageSsmParameterBase = AmazonLinuxImageSsmParameterBase;
24
24
  _a = JSII_RTTI_SYMBOL_1;
25
- AmazonLinuxImageSsmParameterBase[_a] = { fqn: "terraconstructs.aws.compute.AmazonLinuxImageSsmParameterBase", version: "0.2.2" };
25
+ AmazonLinuxImageSsmParameterBase[_a] = { fqn: "terraconstructs.aws.compute.AmazonLinuxImageSsmParameterBase", version: "0.2.4" };
26
26
  /**
27
27
  * What generation of Amazon Linux to use
28
28
  */
@@ -186,7 +186,7 @@ class MachineImage {
186
186
  }
187
187
  exports.MachineImage = MachineImage;
188
188
  _a = JSII_RTTI_SYMBOL_1;
189
- MachineImage[_a] = { fqn: "terraconstructs.aws.compute.MachineImage", version: "0.2.2" };
189
+ MachineImage[_a] = { fqn: "terraconstructs.aws.compute.MachineImage", version: "0.2.4" };
190
190
  /**
191
191
  * Select the image based on a given SSM parameter at deployment time of the CloudFormation Stack.
192
192
  *
@@ -220,7 +220,7 @@ class GenericSSMParameterImage {
220
220
  }
221
221
  exports.GenericSSMParameterImage = GenericSSMParameterImage;
222
222
  _b = JSII_RTTI_SYMBOL_1;
223
- GenericSSMParameterImage[_b] = { fqn: "terraconstructs.aws.compute.GenericSSMParameterImage", version: "0.2.2" };
223
+ GenericSSMParameterImage[_b] = { fqn: "terraconstructs.aws.compute.GenericSSMParameterImage", version: "0.2.4" };
224
224
  /**
225
225
  * Select the image based on a given SSM parameter at instance launch time.
226
226
  *
@@ -256,7 +256,7 @@ class ResolveSsmParameterAtLaunchImage {
256
256
  }
257
257
  exports.ResolveSsmParameterAtLaunchImage = ResolveSsmParameterAtLaunchImage;
258
258
  _c = JSII_RTTI_SYMBOL_1;
259
- ResolveSsmParameterAtLaunchImage[_c] = { fqn: "terraconstructs.aws.compute.ResolveSsmParameterAtLaunchImage", version: "0.2.2" };
259
+ ResolveSsmParameterAtLaunchImage[_c] = { fqn: "terraconstructs.aws.compute.ResolveSsmParameterAtLaunchImage", version: "0.2.4" };
260
260
  /**
261
261
  * Select the image based on a given SSM parameter at deployment time of the CloudFormation Stack.
262
262
  *
@@ -308,7 +308,7 @@ class WindowsImage extends GenericSSMParameterImage {
308
308
  }
309
309
  exports.WindowsImage = WindowsImage;
310
310
  _d = JSII_RTTI_SYMBOL_1;
311
- WindowsImage[_d] = { fqn: "terraconstructs.aws.compute.WindowsImage", version: "0.2.2" };
311
+ WindowsImage[_d] = { fqn: "terraconstructs.aws.compute.WindowsImage", version: "0.2.4" };
312
312
  WindowsImage.DEPRECATED_VERSION_NAME_MAP = {
313
313
  [windows_versions_1.WindowsVersion.WINDOWS_SERVER_2016_GERMAL_FULL_BASE]: windows_versions_1.WindowsVersion.WINDOWS_SERVER_2016_GERMAN_FULL_BASE,
314
314
  [windows_versions_1.WindowsVersion.WINDOWS_SERVER_2012_R2_SP1_PORTUGESE_BRAZIL_64BIT_CORE]: windows_versions_1.WindowsVersion.WINDOWS_SERVER_2012_R2_SP1_PORTUGUESE_BRAZIL_64BIT_CORE,
@@ -398,7 +398,7 @@ class AmazonLinuxImage extends GenericSSMParameterImage {
398
398
  }
399
399
  exports.AmazonLinuxImage = AmazonLinuxImage;
400
400
  _e = JSII_RTTI_SYMBOL_1;
401
- AmazonLinuxImage[_e] = { fqn: "terraconstructs.aws.compute.AmazonLinuxImage", version: "0.2.2" };
401
+ AmazonLinuxImage[_e] = { fqn: "terraconstructs.aws.compute.AmazonLinuxImage", version: "0.2.4" };
402
402
  /**
403
403
  * Amazon Linux Kernel
404
404
  */
@@ -454,7 +454,7 @@ class GenericLinuxImage {
454
454
  }
455
455
  exports.GenericLinuxImage = GenericLinuxImage;
456
456
  _f = JSII_RTTI_SYMBOL_1;
457
- GenericLinuxImage[_f] = { fqn: "terraconstructs.aws.compute.GenericLinuxImage", version: "0.2.2" };
457
+ GenericLinuxImage[_f] = { fqn: "terraconstructs.aws.compute.GenericLinuxImage", version: "0.2.4" };
458
458
  /**
459
459
  * Construct a Windows machine image from an AMI map
460
460
  *
@@ -495,7 +495,7 @@ class GenericWindowsImage {
495
495
  }
496
496
  exports.GenericWindowsImage = GenericWindowsImage;
497
497
  _g = JSII_RTTI_SYMBOL_1;
498
- GenericWindowsImage[_g] = { fqn: "terraconstructs.aws.compute.GenericWindowsImage", version: "0.2.2" };
498
+ GenericWindowsImage[_g] = { fqn: "terraconstructs.aws.compute.GenericWindowsImage", version: "0.2.4" };
499
499
  /**
500
500
  * A machine image whose AMI ID will be searched using DescribeImages.
501
501
  *
@@ -562,5 +562,5 @@ class LookupMachineImage {
562
562
  }
563
563
  exports.LookupMachineImage = LookupMachineImage;
564
564
  _h = JSII_RTTI_SYMBOL_1;
565
- LookupMachineImage[_h] = { fqn: "terraconstructs.aws.compute.LookupMachineImage", version: "0.2.2" };
565
+ LookupMachineImage[_h] = { fqn: "terraconstructs.aws.compute.LookupMachineImage", version: "0.2.4" };
566
566
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFjaGluZS1pbWFnZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9tYWNoaW5lLWltYWdlL21hY2hpbmUtaW1hZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrSUFBK0k7QUFFL0ksc0RBQWlEO0FBU2pELDJEQUk2QjtBQUM3QiwyREFJNkI7QUFDN0IsbURBSXlCO0FBQ3pCLHFDQVNrQjtBQUNsQixtQ0FBc0M7QUFDdEMsK0NBQTJDO0FBQzNDLHFDQUFxQztBQUNyQyw0Q0FBd0M7QUFDeEMsMERBQXFEO0FBRXJEOztHQUVHO0FBQ0gsTUFBc0IsWUFBWTtJQUNoQzs7Ozs7OztPQU9HO0lBQ0ksTUFBTSxDQUFDLGFBQWEsQ0FDekIsT0FBdUIsRUFDdkIsS0FBeUI7UUFFekIsT0FBTyxJQUFJLFlBQVksQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMsa0JBQWtCLENBQzlCLEtBQTBDO1FBRTFDLE9BQU8sSUFBSSw2Q0FBNkIsQ0FBQztZQUN2QyxlQUFlLEVBQUUsS0FBSztZQUN0QixHQUFHLEtBQUs7WUFDUixNQUFNLEVBQUUsa0NBQWtCLENBQUMsVUFBVTtTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLHFCQUFxQixDQUNqQyxLQUE2QztRQUU3QyxPQUFPLElBQUksb0RBQWdDLENBQUM7WUFDMUMsZUFBZSxFQUFFLEtBQUs7WUFDdEIsR0FBRyxLQUFLO1lBQ1IsTUFBTSxFQUFFLHlDQUFxQixDQUFDLFVBQVU7U0FDekMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxNQUFNLENBQUMscUJBQXFCLENBQ2pDLEtBQTZDO1FBRTdDLE9BQU8sSUFBSSxvREFBZ0MsQ0FBQztZQUMxQyxlQUFlLEVBQUUsS0FBSztZQUN0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OztBQXRESCxnREF1REMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi80MWNkNTcyOTBlMDNlOTI1NmNjNzc0NjZmZDM5ZTdmM2U3YTI5NWI0L3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1lYzIvbGliL21hY2hpbmUtaW1hZ2UvbWFjaGluZS1pbWFnZS50c1xuXG5pbXBvcnQgeyBkYXRhQXdzQW1pIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbi8vIGltcG9ydCB7XG4vLyAgIC8vIFRPRE86IFVzZSBHcmlkIGFzIGNvbnRleHRQcm92aWRlclxuLy8gICAvLyBDb250ZXh0UHJvdmlkZXIsXG4vLyAgIC8vIENmbk1hcHBpbmcsXG4vLyAgIC8vIEF3cyxcbi8vICAgVG9rZW4sXG4vLyB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIEFtYXpvbkxpbnV4MjAyMkltYWdlU3NtUGFyYW1ldGVyLFxuICBBbWF6b25MaW51eDIwMjJJbWFnZVNzbVBhcmFtZXRlclByb3BzLFxuICBBbWF6b25MaW51eDIwMjJLZXJuZWwsXG59IGZyb20gXCIuL2FtYXpvbi1saW51eC0yMDIyXCI7XG5pbXBvcnQge1xuICBBbWF6b25MaW51eDIwMjNJbWFnZVNzbVBhcmFtZXRlcixcbiAgQW1hem9uTGludXgyMDIzSW1hZ2VTc21QYXJhbWV0ZXJQcm9wcyxcbiAgQW1hem9uTGludXgyMDIzS2VybmVsLFxufSBmcm9tIFwiLi9hbWF6b24tbGludXgtMjAyM1wiO1xuaW1wb3J0IHtcbiAgQW1hem9uTGludXgySW1hZ2VTc21QYXJhbWV0ZXIsXG4gIEFtYXpvbkxpbnV4MkltYWdlU3NtUGFyYW1ldGVyUHJvcHMsXG4gIEFtYXpvbkxpbnV4Mktlcm5lbCxcbn0gZnJvbSBcIi4vYW1hem9uLWxpbnV4MlwiO1xuaW1wb3J0IHtcbiAgQW1hem9uTGludXhDcHVUeXBlLFxuICBBbWF6b25MaW51eEVkaXRpb24sXG4gIEFtYXpvbkxpbnV4R2VuZXJhdGlvbixcbiAgQW1hem9uTGludXhTdG9yYWdlLFxuICBBbWF6b25MaW51eFZpcnQsXG4gIElNYWNoaW5lSW1hZ2UsXG4gIE1hY2hpbmVJbWFnZUNvbmZpZyxcbiAgT3BlcmF0aW5nU3lzdGVtVHlwZSxcbn0gZnJvbSBcIi4vY29tbW9uXCI7XG5pbXBvcnQgeyBsb29rdXBJbWFnZSB9IGZyb20gXCIuL3V0aWxzXCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi8uLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCAqIGFzIHNzbSBmcm9tIFwiLi4vLi4vc3RvcmFnZVwiO1xuaW1wb3J0IHsgVXNlckRhdGEgfSBmcm9tIFwiLi4vdXNlci1kYXRhXCI7XG5pbXBvcnQgeyBXaW5kb3dzVmVyc2lvbiB9IGZyb20gXCIuLi93aW5kb3dzLXZlcnNpb25zXCI7XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbnMgZm9yIHN0YW5kYXJkIEFtYXpvbiBNYWNoaW5lIEltYWdlIG9iamVjdHMuXG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBNYWNoaW5lSW1hZ2Uge1xuICAvKipcbiAgICogQSBXaW5kb3dzIGltYWdlIHRoYXQgaXMgYXV0b21hdGljYWxseSBrZXB0IHVwLXRvLWRhdGVcbiAgICpcbiAgICogVGhpcyBNYWNoaW5lIEltYWdlIGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb24gZXZlcnlcbiAgICogZGVwbG95bWVudC4gQmUgYXdhcmUgdGhpcyB3aWxsIGNhdXNlIHlvdXIgaW5zdGFuY2VzIHRvIGJlIHJlcGxhY2VkIHdoZW4gYVxuICAgKiBuZXcgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgYmVjb21lcyBhdmFpbGFibGUuIERvIG5vdCBzdG9yZSBzdGF0ZWZ1bCBpbmZvcm1hdGlvblxuICAgKiBvbiB0aGUgaW5zdGFuY2UgaWYgeW91IGFyZSB1c2luZyB0aGlzIGltYWdlLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsYXRlc3RXaW5kb3dzKFxuICAgIHZlcnNpb246IFdpbmRvd3NWZXJzaW9uLFxuICAgIHByb3BzPzogV2luZG93c0ltYWdlUHJvcHMsXG4gICk6IElNYWNoaW5lSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgV2luZG93c0ltYWdlKHZlcnNpb24sIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBBbWF6b24gTGludXggMiBpbWFnZSB0aGF0IGlzIGF1dG9tYXRpY2FsbHkga2VwdCB1cC10by1kYXRlXG4gICAqXG4gICAqIFRoaXMgTWFjaGluZSBJbWFnZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIG9uIGV2ZXJ5XG4gICAqIGRlcGxveW1lbnQuIEJlIGF3YXJlIHRoaXMgd2lsbCBjYXVzZSB5b3VyIGluc3RhbmNlcyB0byBiZSByZXBsYWNlZCB3aGVuIGFcbiAgICogbmV3IHZlcnNpb24gb2YgdGhlIGltYWdlIGJlY29tZXMgYXZhaWxhYmxlLiBEbyBub3Qgc3RvcmUgc3RhdGVmdWwgaW5mb3JtYXRpb25cbiAgICogb24gdGhlIGluc3RhbmNlIGlmIHlvdSBhcmUgdXNpbmcgdGhpcyBpbWFnZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbGF0ZXN0QW1hem9uTGludXgyKFxuICAgIHByb3BzPzogQW1hem9uTGludXgySW1hZ2VTc21QYXJhbWV0ZXJQcm9wcyxcbiAgKTogSU1hY2hpbmVJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBBbWF6b25MaW51eDJJbWFnZVNzbVBhcmFtZXRlcih7XG4gICAgICBjYWNoZWRJbkNvbnRleHQ6IGZhbHNlLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBrZXJuZWw6IEFtYXpvbkxpbnV4Mktlcm5lbC5DREtfTEFURVNULFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIEFtYXpvbiBMaW51eCAyMDIyIGltYWdlIHRoYXQgaXMgYXV0b21hdGljYWxseSBrZXB0IHVwLXRvLWRhdGVcbiAgICpcbiAgICogVGhpcyBNYWNoaW5lIEltYWdlIGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb24gZXZlcnlcbiAgICogZGVwbG95bWVudC4gQmUgYXdhcmUgdGhpcyB3aWxsIGNhdXNlIHlvdXIgaW5zdGFuY2VzIHRvIGJlIHJlcGxhY2VkIHdoZW4gYVxuICAgKiBuZXcgdmVyc2lvbiBvZiB0aGUgaW1hZ2UgYmVjb21lcyBhdmFpbGFibGUuIERvIG5vdCBzdG9yZSBzdGF0ZWZ1bCBpbmZvcm1hdGlvblxuICAgKiBvbiB0aGUgaW5zdGFuY2UgaWYgeW91IGFyZSB1c2luZyB0aGlzIGltYWdlLlxuICAgKlxuICAgKiBAZGVwcmVjYXRlZCAtIHVzZSBsYXRlc3RBbWF6b25MaW51eDIwMjMoKSBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxhdGVzdEFtYXpvbkxpbnV4MjAyMihcbiAgICBwcm9wcz86IEFtYXpvbkxpbnV4MjAyMkltYWdlU3NtUGFyYW1ldGVyUHJvcHMsXG4gICk6IElNYWNoaW5lSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgQW1hem9uTGludXgyMDIySW1hZ2VTc21QYXJhbWV0ZXIoe1xuICAgICAgY2FjaGVkSW5Db250ZXh0OiBmYWxzZSxcbiAgICAgIC4uLnByb3BzLFxuICAgICAga2VybmVsOiBBbWF6b25MaW51eDIwMjJLZXJuZWwuQ0RLX0xBVEVTVCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBBbWF6b24gTGludXggMjAyMyBpbWFnZSB0aGF0IGlzIGF1dG9tYXRpY2FsbHkga2VwdCB1cC10by1kYXRlXG4gICAqXG4gICAqIFRoaXMgTWFjaGluZSBJbWFnZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIG9uIGV2ZXJ5XG4gICAqIGRlcGxveW1lbnQuIEJlIGF3YXJlIHRoaXMgd2lsbCBjYXVzZSB5b3VyIGluc3RhbmNlcyB0byBiZSByZXBsYWNlZCB3aGVuIGFcbiAgICogbmV3IHZlcnNpb24gb2YgdGhlIGltYWdlIGJlY29tZXMgYXZhaWxhYmxlLiBEbyBub3Qgc3RvcmUgc3RhdGVmdWwgaW5mb3JtYXRpb25cbiAgICogb24gdGhlIGluc3RhbmNlIGlmIHlvdSBhcmUgdXNpbmcgdGhpcyBpbWFnZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbGF0ZXN0QW1hem9uTGludXgyMDIzKFxuICAgIHByb3BzPzogQW1hem9uTGludXgyMDIzSW1hZ2VTc21QYXJhbWV0ZXJQcm9wcyxcbiAgKTogSU1hY2hpbmVJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBBbWF6b25MaW51eDIwMjNJbWFnZVNzbVBhcmFtZXRlcih7XG4gICAgICBjYWNoZWRJbkNvbnRleHQ6IGZhbHNlLFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBrZXJuZWw6IEFtYXpvbkxpbnV4MjAyM0tlcm5lbC5DREtfTEFURVNULFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFuIEFtYXpvbiBMaW51eCBpbWFnZSB0aGF0IGlzIGF1dG9tYXRpY2FsbHkga2VwdCB1cC10by1kYXRlXG4gICAqXG4gICAqIFRoaXMgTWFjaGluZSBJbWFnZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIG9uIGV2ZXJ5XG4gICAqIGRlcGxveW1lbnQuIEJlIGF3YXJlIHRoaXMgd2lsbCBjYXVzZSB5b3VyIGluc3RhbmNlcyB0byBiZSByZXBsYWNlZCB3aGVuIGFcbiAgICogbmV3IHZlcnNpb24gb2YgdGhlIGltYWdlIGJlY29tZXMgYXZhaWxhYmxlLiBEbyBub3Qgc3RvcmUgc3RhdGVmdWwgaW5mb3JtYXRpb25cbiAgICogb24gdGhlIGluc3RhbmNlIGlmIHlvdSBhcmUgdXNpbmcgdGhpcyBpbWFnZS5cbiAgICpcbiAgICogTi5CLjogXCJsYXRlc3RcIiBpbiB0aGUgbmFtZSBvZiB0aGlzIGZ1bmN0aW9uIGluZGljYXRlcyB0aGF0IGl0IGFsd2F5cyB1c2VzIHRoZSBtb3N0IHJlY2VudFxuICAgKiBpbWFnZSBvZiBhIHBhcnRpY3VsYXIgZ2VuZXJhdGlvbiBvZiBBbWF6b24gTGludXgsIG5vdCB0aGF0IGl0IHVzZXMgdGhlIFwibGF0ZXN0IGdlbmVyYXRpb25cIi5cbiAgICogRm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LCB0aGlzIGZ1bmN0aW9uIHVzZXMgQW1hem9uIExpbnV4IDEgaWYgbm8gZ2VuZXJhdGlvblxuICAgKiBpcyBzcGVjaWZpZWQuXG4gICAqXG4gICAqIFNwZWNpZnkgdGhlIGRlc2lyZWQgZ2VuZXJhdGlvbiB1c2luZyB0aGUgYGdlbmVyYXRpb25gIHByb3BlcnR5OlxuICAgKlxuICAgKiBgYGB0c1xuICAgKiBjb21wdXRlLk1hY2hpbmVJbWFnZS5sYXRlc3RBbWF6b25MaW51eCh7XG4gICAqICAgLy8gVXNlIEFtYXpvbiBMaW51eCAyXG4gICAqICAgZ2VuZXJhdGlvbjogZWMyLkFtYXpvbkxpbnV4R2VuZXJhdGlvbi5BTUFaT05fTElOVVhfMixcbiAgICogfSlcbiAgICogYGBgXG4gICAqIEBkZXByZWNhdGVkIHVzZSBNYWNoaW5lSW1hZ2UubGF0ZXN0QW1hem9uTGludXgyIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbGF0ZXN0QW1hem9uTGludXgoXG4gICAgcHJvcHM/OiBBbWF6b25MaW51eEltYWdlUHJvcHMsXG4gICk6IElNYWNoaW5lSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgQW1hem9uTGludXhJbWFnZShwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQSBMaW51eCBpbWFnZSB3aGVyZSB5b3Ugc3BlY2lmeSB0aGUgQU1JIElEIGZvciBldmVyeSByZWdpb25cbiAgICpcbiAgICogQHBhcmFtIGFtaU1hcCBGb3IgZXZlcnkgcmVnaW9uIHdoZXJlIHlvdSBhcmUgZGVwbG95aW5nIHRoZSBzdGFjayxcbiAgICogc3BlY2lmeSB0aGUgQU1JIElEIGZvciB0aGF0IHJlZ2lvbi5cbiAgICogQHBhcmFtIHByb3BzIEN1c3RvbWl6ZSB0aGUgaW1hZ2UgYnkgc3VwcGx5aW5nIGFkZGl0aW9uYWwgcHJvcHNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2VuZXJpY0xpbnV4KFxuICAgIGFtaU1hcDogUmVjb3JkPHN0cmluZywgc3RyaW5nPixcbiAgICBwcm9wcz86IEdlbmVyaWNMaW51eEltYWdlUHJvcHMsXG4gICk6IElNYWNoaW5lSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgR2VuZXJpY0xpbnV4SW1hZ2UoYW1pTWFwLCBwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogQSBXaW5kb3dzIGltYWdlIHdoZXJlIHlvdSBzcGVjaWZ5IHRoZSBBTUkgSUQgZm9yIGV2ZXJ5IHJlZ2lvblxuICAgKlxuICAgKiBAcGFyYW0gYW1pTWFwIEZvciBldmVyeSByZWdpb24gd2hlcmUgeW91IGFyZSBkZXBsb3lpbmcgdGhlIHN0YWNrLFxuICAgKiBzcGVjaWZ5IHRoZSBBTUkgSUQgZm9yIHRoYXQgcmVnaW9uLlxuICAgKiBAcGFyYW0gcHJvcHMgQ3VzdG9taXplIHRoZSBpbWFnZSBieSBzdXBwbHlpbmcgYWRkaXRpb25hbCBwcm9wc1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZW5lcmljV2luZG93cyhcbiAgICBhbWlNYXA6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sXG4gICAgcHJvcHM/OiBHZW5lcmljV2luZG93c0ltYWdlUHJvcHMsXG4gICk6IElNYWNoaW5lSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgR2VuZXJpY1dpbmRvd3NJbWFnZShhbWlNYXAsIHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBbiBpbWFnZSBzcGVjaWZpZWQgaW4gU1NNIHBhcmFtZXRlciBzdG9yZSB0aGF0IGlzIGF1dG9tYXRpY2FsbHkga2VwdCB1cC10by1kYXRlXG4gICAqXG4gICAqIFRoaXMgTWFjaGluZSBJbWFnZSBhdXRvbWF0aWNhbGx5IHVwZGF0ZXMgdG8gdGhlIGxhdGVzdCB2ZXJzaW9uIG9uIGV2ZXJ5XG4gICAqIGRlcGxveW1lbnQuIEJlIGF3YXJlIHRoaXMgd2lsbCBjYXVzZSB5b3VyIGluc3RhbmNlcyB0byBiZSByZXBsYWNlZCB3aGVuIGFcbiAgICogbmV3IHZlcnNpb24gb2YgdGhlIGltYWdlIGJlY29tZXMgYXZhaWxhYmxlLiBEbyBub3Qgc3RvcmUgc3RhdGVmdWwgaW5mb3JtYXRpb25cbiAgICogb24gdGhlIGluc3RhbmNlIGlmIHlvdSBhcmUgdXNpbmcgdGhpcyBpbWFnZS5cbiAgICpcbiAgICogQHBhcmFtIHBhcmFtZXRlck5hbWUgVGhlIG5hbWUgb2YgU1NNIHBhcmFtZXRlciBjb250YWluaW5nIHRoZSBBTWkgaWRcbiAgICogQHBhcmFtIG9zIFRoZSBvcGVyYXRpbmcgc3lzdGVtIHR5cGUgb2YgdGhlIEFNSVxuICAgKiBAcGFyYW0gdXNlckRhdGEgb3B0aW9uYWwgdXNlciBkYXRhIGZvciB0aGUgZ2l2ZW4gaW1hZ2VcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBNYWNoaW5lSW1hZ2UuZnJvbVNzbVBhcmFtZXRlcigpYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TU01QYXJhbWV0ZXIoXG4gICAgcGFyYW1ldGVyTmFtZTogc3RyaW5nLFxuICAgIG9zOiBPcGVyYXRpbmdTeXN0ZW1UeXBlLFxuICAgIHVzZXJEYXRhPzogVXNlckRhdGEsXG4gICk6IElNYWNoaW5lSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgR2VuZXJpY1NTTVBhcmFtZXRlckltYWdlKHBhcmFtZXRlck5hbWUsIG9zLCB1c2VyRGF0YSk7XG4gIH1cblxuICAvKipcbiAgICogQW4gaW1hZ2Ugc3BlY2lmaWVkIGluIFNTTSBwYXJhbWV0ZXIgc3RvcmVcbiAgICpcbiAgICogQnkgZGVmYXVsdCwgdGhlIFNTTSBwYXJhbWV0ZXIgaXMgcmVmcmVzaGVkIGF0IGV2ZXJ5IGRlcGxveW1lbnQsXG4gICAqIGNhdXNpbmcgeW91ciBpbnN0YW5jZXMgdG8gYmUgcmVwbGFjZWQgd2hlbmV2ZXIgYSBuZXcgdmVyc2lvbiBvZiB0aGUgQU1JXG4gICAqIGlzIHJlbGVhc2VkLlxuICAgKlxuICAgKiBQYXNzIGB7IGNhY2hlZEluQ29udGV4dDogdHJ1ZSB9YCB0byBrZWVwIHRoZSBBTUkgSUQgc3RhYmxlLiBJZiB5b3UgZG8sIHlvdVxuICAgKiB3aWxsIGhhdmUgdG8gcmVtZW1iZXIgdG8gcGVyaW9kaWNhbGx5IGludmFsaWRhdGUgdGhlIGNvbnRleHQgdG8gcmVmcmVzaFxuICAgKiB0byB0aGUgbmV3ZXN0IEFNSSBJRC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVNzbVBhcmFtZXRlcihcbiAgICBwYXJhbWV0ZXJOYW1lOiBzdHJpbmcsXG4gICAgb3B0aW9ucz86IFNzbVBhcmFtZXRlckltYWdlT3B0aW9ucyxcbiAgKTogSU1hY2hpbmVJbWFnZSB7XG4gICAgcmV0dXJuIG5ldyBHZW5lcmljU3NtUGFyYW1ldGVySW1hZ2UocGFyYW1ldGVyTmFtZSwgb3B0aW9ucyk7XG4gIH1cblxuICAvKipcbiAgICogQW4gaW1hZ2Ugc3BlY2lmaWVkIGluIFNTTSBwYXJhbWV0ZXIgc3RvcmUgdGhhdCB3aWxsIGJlIHJlc29sdmVkIGF0IGluc3RhbmNlIGxhdW5jaCB0aW1lLlxuICAgKlxuICAgKiBUaGUgQU1JIElEIHdpbGwgYmUgcmVzb2x2ZWQgYXQgaW5zdGFuY2UgbGF1bmNoIHRpbWUuXG4gICAqXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJOYW1lIFRoZSBuYW1lIG9mIFNTTSBwYXJhbWV0ZXIgY29udGFpbmluZyB0aGUgQU1JIElEXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBwYXJhbWV0ZXIgaW1hZ2Ugb3B0aW9uc1xuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9hdXRvc2NhbGluZy9lYzIvdXNlcmd1aWRlL3VzaW5nLXN5c3RlbXMtbWFuYWdlci1wYXJhbWV0ZXJzLmh0bWxcbiAgICpcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgcmVzb2x2ZVNzbVBhcmFtZXRlckF0TGF1bmNoKFxuICAgIHBhcmFtZXRlck5hbWU6IHN0cmluZyxcbiAgICBvcHRpb25zPzogU3NtUGFyYW1ldGVySW1hZ2VPcHRpb25zLFxuICApOiBJTWFjaGluZUltYWdlIHtcbiAgICByZXR1cm4gbmV3IFJlc29sdmVTc21QYXJhbWV0ZXJBdExhdW5jaEltYWdlKHBhcmFtZXRlck5hbWUsIG9wdGlvbnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIExvb2sgdXAgYSBzaGFyZWQgTWFjaGluZSBJbWFnZSB1c2luZyBEZXNjcmliZUltYWdlc1xuICAgKlxuICAgKiBUaGUgbW9zdCByZWNlbnQsIGF2YWlsYWJsZSwgbGF1bmNoYWJsZSBpbWFnZSBtYXRjaGluZyB0aGUgZ2l2ZW4gZmlsdGVyXG4gICAqIGNyaXRlcmlhIHdpbGwgYmUgdXNlZC4gTG9va2luZyB1cCBBTUlzIG1heSB0YWtlIGEgbG9uZyB0aW1lOyBzcGVjaWZ5XG4gICAqIGFzIG1hbnkgZmlsdGVyIGNyaXRlcmlhIGFzIHBvc3NpYmxlIHRvIG5hcnJvdyBkb3duIHRoZSBzZWFyY2guXG4gICAqXG4gICAqIFRoZSBBTUkgc2VsZWN0ZWQgd2lsbCBiZSBjYWNoZWQgaW4gYGNkay5jb250ZXh0Lmpzb25gIGFuZCB0aGUgc2FtZSB2YWx1ZVxuICAgKiB3aWxsIGJlIHVzZWQgb24gZnV0dXJlIHJ1bnMuIFRvIHJlZnJlc2ggdGhlIEFNSSBsb29rdXAsIHlvdSB3aWxsIGhhdmUgdG9cbiAgICogZXZpY3QgdGhlIHZhbHVlIGZyb20gdGhlIGNhY2hlIHVzaW5nIHRoZSBgY2RrIGNvbnRleHRgIGNvbW1hbmQuIFNlZVxuICAgKiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2xhdGVzdC9ndWlkZS9jb250ZXh0Lmh0bWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIFRoaXMgZnVuY3Rpb24gY2FuIG5vdCBiZSB1c2VkIGluIGVudmlyb25tZW50LWFnbm9zdGljIHN0YWNrcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbG9va3VwKHByb3BzOiBMb29rdXBNYWNoaW5lSW1hZ2VQcm9wcyk6IElNYWNoaW5lSW1hZ2Uge1xuICAgIHJldHVybiBuZXcgTG9va3VwTWFjaGluZUltYWdlKHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIFNlbGVjdCB0aGUgaW1hZ2UgYmFzZWQgb24gYSBnaXZlbiBTU00gcGFyYW1ldGVyIGF0IGRlcGxveW1lbnQgdGltZSBvZiB0aGUgQ2xvdWRGb3JtYXRpb24gU3RhY2suXG4gKlxuICogVGhpcyBNYWNoaW5lIEltYWdlIGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb24gZXZlcnlcbiAqIGRlcGxveW1lbnQuIEJlIGF3YXJlIHRoaXMgd2lsbCBjYXVzZSB5b3VyIGluc3RhbmNlcyB0byBiZSByZXBsYWNlZCB3aGVuIGFcbiAqIG5ldyB2ZXJzaW9uIG9mIHRoZSBpbWFnZSBiZWNvbWVzIGF2YWlsYWJsZS4gRG8gbm90IHN0b3JlIHN0YXRlZnVsIGluZm9ybWF0aW9uXG4gKiBvbiB0aGUgaW5zdGFuY2UgaWYgeW91IGFyZSB1c2luZyB0aGlzIGltYWdlLlxuICpcbiAqIFRoZSBBTUkgSUQgaXMgc2VsZWN0ZWQgdXNpbmcgdGhlIHZhbHVlcyBwdWJsaXNoZWQgdG8gdGhlIFNTTSBwYXJhbWV0ZXIgc3RvcmUuXG4gKi9cbmV4cG9ydCBjbGFzcyBHZW5lcmljU1NNUGFyYW1ldGVySW1hZ2UgaW1wbGVtZW50cyBJTWFjaGluZUltYWdlIHtcbiAgLy8gRklYTUU6IHRoaXMgY2xhc3Mgb3VnaHQgdG8gYmUgYEBkZXByZWNhdGVkYCBhbmQgcmVtb3ZlZCBmcm9tIHYyLCBidXQgdGhhdFxuICAvLyBpcyBjYXVzaW5nIGJ1aWxkIGZhaWx1cmUgcmlnaHQgbm93LiBSZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvanNpaS9pc3N1ZXMvMzAyNVxuICAvLyBALWRlcHJlY2F0ZWQgVXNlIGBNYWNoaW5lSW1hZ2UuZnJvbVNzbVBhcmFtZXRlcigpYCBpbnN0ZWFkXG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIFNTTSBwYXJhbWV0ZXIgd2UncmUgbG9va2luZyB1cFxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtZXRlck5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihcbiAgICBwYXJhbWV0ZXJOYW1lOiBzdHJpbmcsXG4gICAgcHJpdmF0ZSByZWFkb25seSBvczogT3BlcmF0aW5nU3lzdGVtVHlwZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJEYXRhPzogVXNlckRhdGEsXG4gICkge1xuICAgIHRoaXMucGFyYW1ldGVyTmFtZSA9IHBhcmFtZXRlck5hbWU7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpbWFnZSB0byB1c2UgaW4gdGhlIGdpdmVuIGNvbnRleHRcbiAgICovXG4gIHB1YmxpYyBnZXRJbWFnZShzY29wZTogQ29uc3RydWN0KTogTWFjaGluZUltYWdlQ29uZmlnIHtcbiAgICBjb25zdCBhbWkgPSBzc20uU3RyaW5nUGFyYW1ldGVyLnZhbHVlRm9yVHlwZWRTdHJpbmdQYXJhbWV0ZXJWMihcbiAgICAgIHNjb3BlLFxuICAgICAgdGhpcy5wYXJhbWV0ZXJOYW1lLFxuICAgICAgc3NtLlBhcmFtZXRlclZhbHVlVHlwZS5BV1NfRUMyX0lNQUdFX0lELFxuICAgICk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGltYWdlSWQ6IGFtaSxcbiAgICAgIG9zVHlwZTogdGhpcy5vcyxcbiAgICAgIHVzZXJEYXRhOlxuICAgICAgICB0aGlzLnVzZXJEYXRhID8/XG4gICAgICAgICh0aGlzLm9zID09PSBPcGVyYXRpbmdTeXN0ZW1UeXBlLldJTkRPV1NcbiAgICAgICAgICA/IFVzZXJEYXRhLmZvcldpbmRvd3MoKVxuICAgICAgICAgIDogVXNlckRhdGEuZm9yTGludXgoKSksXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIFNlbGVjdCB0aGUgaW1hZ2UgYmFzZWQgb24gYSBnaXZlbiBTU00gcGFyYW1ldGVyIGF0IGluc3RhbmNlIGxhdW5jaCB0aW1lLlxuICpcbiAqIFRoaXMgTWFjaGluZSBJbWFnZSBjb21lcyB3aXRoIGFuIGltYWdlSWQgYXMgYHJlc29sdmU6c3NtOnBhcmFtZXRlci1uYW1lYCBvciBgcmVzb2x2ZTpzc206cGFyYW1ldGVyLW5hbWU6dmVyc2lvbmAgZm9ybWF0XG4gKiBhcyBkZXNjcmliZWQgaW4gdGhlIGRvY3VtZW50OlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2F1dG9zY2FsaW5nL2VjMi91c2VyZ3VpZGUvdXNpbmctc3lzdGVtcy1tYW5hZ2VyLXBhcmFtZXRlcnMuaHRtbFxuICpcbiAqIFRoZSBBTUkgSUQgd291bGQgYmUgc2VsZWN0ZWQgYXQgaW5zdGFuY2UgbGF1bmNoIHRpbWUuXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvbHZlU3NtUGFyYW1ldGVyQXRMYXVuY2hJbWFnZSBpbXBsZW1lbnRzIElNYWNoaW5lSW1hZ2Uge1xuICAvKipcbiAgICogTmFtZSBvZiB0aGUgU1NNIHBhcmFtZXRlciB3ZSdyZSBsb29raW5nIHVwXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcGFyYW1ldGVyTmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHBhcmFtZXRlck5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBTc21QYXJhbWV0ZXJJbWFnZU9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgdGhpcy5wYXJhbWV0ZXJOYW1lID0gcGFyYW1ldGVyTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGltYWdlIHRvIHVzZSBpbiB0aGUgZ2l2ZW4gY29udGV4dFxuICAgKi9cbiAgcHVibGljIGdldEltYWdlKF86IENvbnN0cnVjdCk6IE1hY2hpbmVJbWFnZUNvbmZpZyB7XG4gICAgY29uc3QgdmVyc2lvblN0cmluZyA9IHRoaXMucHJvcHMucGFyYW1ldGVyVmVyc2lvblxuICAgICAgPyBgOiR7dGhpcy5wcm9wcy5wYXJhbWV0ZXJWZXJzaW9ufWBcbiAgICAgIDogXCJcIjtcbiAgICBjb25zdCBvc1R5cGUgPSB0aGlzLnByb3BzLm9zID8/IE9wZXJhdGluZ1N5c3RlbVR5cGUuTElOVVg7XG4gICAgcmV0dXJuIHtcbiAgICAgIGltYWdlSWQ6IGByZXNvbHZlOnNzbToke3RoaXMucGFyYW1ldGVyTmFtZX0ke3ZlcnNpb25TdHJpbmd9YCxcbiAgICAgIG9zVHlwZSxcbiAgICAgIHVzZXJEYXRhOlxuICAgICAgICB0aGlzLnByb3BzLnVzZXJEYXRhID8/XG4gICAgICAgIChvc1R5cGUgPT09IE9wZXJhdGluZ1N5c3RlbVR5cGUuV0lORE9XU1xuICAgICAgICAgID8gVXNlckRhdGEuZm9yV2luZG93cygpXG4gICAgICAgICAgOiBVc2VyRGF0YS5mb3JMaW51eCgpKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgR2VuZXJpY1NzbVBhcmFtZXRlckltYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3NtUGFyYW1ldGVySW1hZ2VPcHRpb25zIHtcbiAgLyoqXG4gICAqIE9wZXJhdGluZyBzeXN0ZW1cbiAgICpcbiAgICogQGRlZmF1bHQgT3BlcmF0aW5nU3lzdGVtVHlwZS5MSU5VWFxuICAgKi9cbiAgcmVhZG9ubHkgb3M/OiBPcGVyYXRpbmdTeXN0ZW1UeXBlO1xuXG4gIC8qKlxuICAgKiBDdXN0b20gVXNlckRhdGFcbiAgICpcbiAgICogQGRlZmF1bHQgLSBVc2VyRGF0YSBhcHByb3ByaWF0ZSBmb3IgdGhlIE9TXG4gICAqL1xuICByZWFkb25seSB1c2VyRGF0YT86IFVzZXJEYXRhO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBBTUkgSUQgaXMgY2FjaGVkIHRvIGJlIHN0YWJsZSBiZXR3ZWVuIGRlcGxveW1lbnRzXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBuZXdlc3QgaW1hZ2UgaXMgdXNlZCBvbiBlYWNoIGRlcGxveW1lbnQuIFRoaXMgd2lsbCBjYXVzZVxuICAgKiBpbnN0YW5jZXMgdG8gYmUgcmVwbGFjZWQgd2hlbmV2ZXIgYSBuZXcgdmVyc2lvbiBpcyByZWxlYXNlZCwgYW5kIG1heSBjYXVzZVxuICAgKiBkb3dudGltZSBpZiB0aGVyZSBhcmVuJ3QgZW5vdWdoIHJ1bm5pbmcgaW5zdGFuY2VzIGluIHRoZSBBdXRvU2NhbGluZ0dyb3VwXG4gICAqIHRvIHJlc2NoZWR1bGUgdGhlIHRhc2tzIG9uLlxuICAgKlxuICAgKiBJZiBzZXQgdG8gdHJ1ZSwgdGhlIEFNSSBJRCB3aWxsIGJlIGNhY2hlZCBpbiBgY2RrLmNvbnRleHQuanNvbmAgYW5kIHRoZVxuICAgKiBzYW1lIHZhbHVlIHdpbGwgYmUgdXNlZCBvbiBmdXR1cmUgcnVucy4gWW91ciBpbnN0YW5jZXMgd2lsbCBub3QgYmUgcmVwbGFjZWRcbiAgICogYnV0IHlvdXIgQU1JIHZlcnNpb24gd2lsbCBncm93IG9sZCBvdmVyIHRpbWUuIFRvIHJlZnJlc2ggdGhlIEFNSSBsb29rdXAsXG4gICAqIHlvdSB3aWxsIGhhdmUgdG8gZXZpY3QgdGhlIHZhbHVlIGZyb20gdGhlIGNhY2hlIHVzaW5nIHRoZSBgY2RrIGNvbnRleHRgXG4gICAqIGNvbW1hbmQuIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY2RrL2xhdGVzdC9ndWlkZS9jb250ZXh0Lmh0bWwgZm9yXG4gICAqIG1vcmUgaW5mb3JtYXRpb24uXG4gICAqXG4gICAqIENhbiBub3QgYmUgc2V0IHRvIGB0cnVlYCBpbiBlbnZpcm9ubWVudC1hZ25vc3RpYyBzdGFja3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBjYWNoZWRJbkNvbnRleHQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgdmVyc2lvbiBvZiB0aGUgU1NNIHBhcmFtZXRlci5cbiAgICpcbiAgICogQGRlZmF1bHQgbm8gdmVyc2lvbiBzcGVjaWZpZWQuXG4gICAqL1xuICByZWFkb25seSBwYXJhbWV0ZXJWZXJzaW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIFNlbGVjdCB0aGUgaW1hZ2UgYmFzZWQgb24gYSBnaXZlbiBTU00gcGFyYW1ldGVyIGF0IGRlcGxveW1lbnQgdGltZSBvZiB0aGUgQ2xvdWRGb3JtYXRpb24gU3RhY2suXG4gKlxuICogVGhpcyBNYWNoaW5lIEltYWdlIGF1dG9tYXRpY2FsbHkgdXBkYXRlcyB0byB0aGUgbGF0ZXN0IHZlcnNpb24gb24gZXZlcnlcbiAqIGRlcGxveW1lbnQuIEJlIGF3YXJlIHRoaXMgd2lsbCBjYXVzZSB5b3VyIGluc3RhbmNlcyB0byBiZSByZXBsYWNlZCB3aGVuIGFcbiAqIG5ldyB2ZXJzaW9uIG9mIHRoZSBpbWFnZSBiZWNvbWVzIGF2YWlsYWJsZS4gRG8gbm90IHN0b3JlIHN0YXRlZnVsIGluZm9ybWF0aW9uXG4gKiBvbiB0aGUgaW5zdGFuY2UgaWYgeW91IGFyZSB1c2luZyB0aGlzIGltYWdlLlxuICpcbiAqIFRoZSBBTUkgSUQgaXMgc2VsZWN0ZWQgdXNpbmcgdGhlIHZhbHVlcyBwdWJsaXNoZWQgdG8gdGhlIFNTTSBwYXJhbWV0ZXIgc3RvcmUuXG4gKi9cbmNsYXNzIEdlbmVyaWNTc21QYXJhbWV0ZXJJbWFnZSBpbXBsZW1lbnRzIElNYWNoaW5lSW1hZ2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IHBhcmFtZXRlck5hbWU6IHN0cmluZyxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBTc21QYXJhbWV0ZXJJbWFnZU9wdGlvbnMgPSB7fSxcbiAgKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGltYWdlIHRvIHVzZSBpbiB0aGUgZ2l2ZW4gY29udGV4dFxuICAgKi9cbiAgcHVibGljIGdldEltYWdlKHNjb3BlOiBDb25zdHJ1Y3QpOiBNYWNoaW5lSW1hZ2VDb25maWcge1xuICAgIGNvbnN0IGltYWdlSWQgPSBsb29rdXBJbWFnZShcbiAgICAgIHNjb3BlLFxuICAgICAgdGhpcy5wcm9wcy5jYWNoZWRJbkNvbnRleHQsXG4gICAgICB0aGlzLnBhcmFtZXRlck5hbWUsXG4gICAgKTtcblxuICAgIGNvbnN0IG9zVHlwZSA9IHRoaXMucHJvcHMub3MgPz8gT3BlcmF0aW5nU3lzdGVtVHlwZS5MSU5VWDtcbiAgICByZXR1cm4ge1xuICAgICAgaW1hZ2VJZCxcbiAgICAgIG9zVHlwZSxcbiAgICAgIHVzZXJEYXRhOlxuICAgICAgICB0aGlzLnByb3BzLnVzZXJEYXRhID8/XG4gICAgICAgIChvc1R5cGUgPT09IE9wZXJhdGluZ1N5c3RlbVR5cGUuV0lORE9XU1xuICAgICAgICAgID8gVXNlckRhdGEuZm9yV2luZG93cygpXG4gICAgICAgICAgOiBVc2VyRGF0YS5mb3JMaW51eCgpKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQ29uZmlndXJhdGlvbiBvcHRpb25zIGZvciBXaW5kb3dzSW1hZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBXaW5kb3dzSW1hZ2VQcm9wcyB7XG4gIC8qKlxuICAgKiBJbml0aWFsIHVzZXIgZGF0YVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEVtcHR5IFVzZXJEYXRhIGZvciBXaW5kb3dzIG1hY2hpbmVzXG4gICAqL1xuICByZWFkb25seSB1c2VyRGF0YT86IFVzZXJEYXRhO1xufVxuXG4vKipcbiAqIFNlbGVjdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIGluZGljYXRlZCBXaW5kb3dzIHZlcnNpb25cbiAqXG4gKiBUaGlzIE1hY2hpbmUgSW1hZ2UgYXV0b21hdGljYWxseSB1cGRhdGVzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvbiBldmVyeVxuICogZGVwbG95bWVudC4gQmUgYXdhcmUgdGhpcyB3aWxsIGNhdXNlIHlvdXIgaW5zdGFuY2VzIHRvIGJlIHJlcGxhY2VkIHdoZW4gYVxuICogbmV3IHZlcnNpb24gb2YgdGhlIGltYWdlIGJlY29tZXMgYXZhaWxhYmxlLiBEbyBub3Qgc3RvcmUgc3RhdGVmdWwgaW5mb3JtYXRpb25cbiAqIG9uIHRoZSBpbnN0YW5jZSBpZiB5b3UgYXJlIHVzaW5nIHRoaXMgaW1hZ2UuXG4gKlxuICogVGhlIEFNSSBJRCBpcyBzZWxlY3RlZCB1c2luZyB0aGUgdmFsdWVzIHB1Ymxpc2hlZCB0byB0aGUgU1NNIHBhcmFtZXRlciBzdG9yZS5cbiAqXG4gKiBodHRwczovL2F3cy5hbWF6b24uY29tL2Jsb2dzL210L3F1ZXJ5LWZvci10aGUtbGF0ZXN0LXdpbmRvd3MtYW1pLXVzaW5nLXN5c3RlbXMtbWFuYWdlci1wYXJhbWV0ZXItc3RvcmUvXG4gKi9cbmV4cG9ydCBjbGFzcyBXaW5kb3dzSW1hZ2UgZXh0ZW5kcyBHZW5lcmljU1NNUGFyYW1ldGVySW1hZ2Uge1xuICBwcml2YXRlIHN0YXRpYyBERVBSRUNBVEVEX1ZFUlNJT05fTkFNRV9NQVA6IFBhcnRpYWw8XG4gICAgUmVjb3JkPFdpbmRvd3NWZXJzaW9uLCBXaW5kb3dzVmVyc2lvbj5cbiAgPiA9IHtcbiAgICBbV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAxNl9HRVJNQUxfRlVMTF9CQVNFXTpcbiAgICAgIFdpbmRvd3NWZXJzaW9uLldJTkRPV1NfU0VSVkVSXzIwMTZfR0VSTUFOX0ZVTExfQkFTRSxcbiAgICBbV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAxMl9SMl9TUDFfUE9SVFVHRVNFX0JSQVpJTF82NEJJVF9DT1JFXTpcbiAgICAgIFdpbmRvd3NWZXJzaW9uLldJTkRPV1NfU0VSVkVSXzIwMTJfUjJfU1AxX1BPUlRVR1VFU0VfQlJBWklMXzY0QklUX0NPUkUsXG4gICAgW1dpbmRvd3NWZXJzaW9uLldJTkRPV1NfU0VSVkVSXzIwMTZfUE9SVFVHRVNFX1BPUlRVR0FMX0ZVTExfQkFTRV06XG4gICAgICBXaW5kb3dzVmVyc2lvbi5XSU5ET1dTX1NFUlZFUl8yMDE2X1BPUlRVR1VFU0VfUE9SVFVHQUxfRlVMTF9CQVNFLFxuICAgIFtXaW5kb3dzVmVyc2lvbi5XSU5ET1dTX1NFUlZFUl8yMDEyX1IyX1JUTV9QT1JUVUdFU0VfQlJBWklMXzY0QklUX0JBU0VdOlxuICAgICAgV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAxMl9SMl9SVE1fUE9SVFVHVUVTRV9CUkFaSUxfNjRCSVRfQkFTRSxcbiAgICBbV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAxMl9SMl9SVE1fUE9SVFVHRVNFX1BPUlRVR0FMXzY0QklUX0JBU0VdOlxuICAgICAgV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAxMl9SMl9SVE1fUE9SVFVHVUVTRV9QT1JUVUdBTF82NEJJVF9CQVNFLFxuICAgIFtXaW5kb3dzVmVyc2lvbi5XSU5ET1dTX1NFUlZFUl8yMDE2X1BPUlRVR0VTRV9CUkFaSUxfRlVMTF9CQVNFXTpcbiAgICAgIFdpbmRvd3NWZXJzaW9uLldJTkRPV1NfU0VSVkVSXzIwMTZfUE9SVFVHVUVTRV9CUkFaSUxfRlVMTF9CQVNFLFxuICAgIFtXaW5kb3dzVmVyc2lvbi5XSU5ET1dTX1NFUlZFUl8yMDEyX1NQMl9QT1JUVUdFU0VfQlJBWklMXzY0QklUX0JBU0VdOlxuICAgICAgV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAxMl9TUDJfUE9SVFVHVUVTRV9CUkFaSUxfNjRCSVRfQkFTRSxcbiAgICBbV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAxMl9SVE1fUE9SVFVHRVNFX0JSQVpJTF82NEJJVF9CQVNFXTpcbiAgICAgIFdpbmRvd3NWZXJzaW9uLldJTkRPV1NfU0VSVkVSXzIwMTJfUlRNX1BPUlRVR1VFU0VfQlJBWklMXzY0QklUX0JBU0UsXG4gICAgW1dpbmRvd3NWZXJzaW9uLldJTkRPV1NfU0VSVkVSXzIwMDhfUjJfU1AxX1BPUlRVR0VTRV9CUkFaSUxfNjRCSVRfQkFTRV06XG4gICAgICBXaW5kb3dzVmVyc2lvbi5XSU5ET1dTX1NFUlZFUl8yMDA4X1IyX1NQMV9QT1JUVUdVRVNFX0JSQVpJTF82NEJJVF9CQVNFLFxuICAgIFtXaW5kb3dzVmVyc2lvbi5XSU5ET1dTX1NFUlZFUl8yMDA4X1NQMl9QT1JUVUdFU0VfQlJBWklMXzMyQklUX0JBU0VdOlxuICAgICAgV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAwOF9TUDJfUE9SVFVHVUVTRV9CUkFaSUxfMzJCSVRfQkFTRSxcbiAgICBbV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAxMl9SVE1fUE9SVFVHRVNFX1BPUlRVR0FMXzY0QklUX0JBU0VdOlxuICAgICAgV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAxMl9SVE1fUE9SVFVHVUVTRV9QT1JUVUdBTF82NEJJVF9CQVNFLFxuICAgIFtXaW5kb3dzVmVyc2lvbi5XSU5ET1dTX1NFUlZFUl8yMDE5X1BPUlRVR0VTRV9CUkFaSUxfRlVMTF9CQVNFXTpcbiAgICAgIFdpbmRvd3NWZXJzaW9uLldJTkRPV1NfU0VSVkVSXzIwMTlfUE9SVFVHVUVTRV9CUkFaSUxfRlVMTF9CQVNFLFxuICAgIFtXaW5kb3dzVmVyc2lvbi5XSU5ET1dTX1NFUlZFUl8yMDE5X1BPUlRVR0VTRV9QT1JUVUdBTF9GVUxMX0JBU0VdOlxuICAgICAgV2luZG93c1ZlcnNpb24uV0lORE9XU19TRVJWRVJfMjAxOV9QT1JUVUdVRVNFX1BPUlRVR0FMX0ZVTExfQkFTRSxcbiAgfTtcbiAgY29uc3RydWN0b3IodmVyc2lvbjogV2luZG93c1ZlcnNpb24sIHByb3BzOiBXaW5kb3dzSW1hZ2VQcm9wcyA9IHt9KSB7XG4gICAgY29uc3Qgbm9uRGVwcmVjYXRlZFZlcnNpb25OYW1lID1cbiAgICAgIFdpbmRvd3NJbWFnZS5ERVBSRUNBVEVEX1ZFUlNJT05fTkFNRV9NQVBbdmVyc2lvbl0gPz8gdmVyc2lvbjtcbiAgICBzdXBlcihcbiAgICAgIFwiL2F3cy9zZXJ2aWNlL2FtaS13aW5kb3dzLWxhdGVzdC9cIiArIG5vbkRlcHJlY2F0ZWRWZXJzaW9uTmFtZSxcbiAgICAgIE9wZXJhdGluZ1N5c3RlbVR5cGUuV0lORE9XUyxcbiAgICAgIHByb3BzLnVzZXJEYXRhLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBBbWF6b24gTGludXggaW1hZ2UgcHJvcGVydGllc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEFtYXpvbkxpbnV4SW1hZ2VQcm9wcyB7XG4gIC8qKlxuICAgKiBXaGF0IGdlbmVyYXRpb24gb2YgQW1hem9uIExpbnV4IHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCBBbWF6b25MaW51eFxuICAgKi9cbiAgcmVhZG9ubHkgZ2VuZXJhdGlvbj86IEFtYXpvbkxpbnV4R2VuZXJhdGlvbjtcblxuICAvKipcbiAgICogV2hhdCBlZGl0aW9uIG9mIEFtYXpvbiBMaW51eCB0byB1c2VcbiAgICpcbiAgICogQGRlZmF1bHQgU3RhbmRhcmRcbiAgICovXG4gIHJlYWRvbmx5IGVkaXRpb24/OiBBbWF6b25MaW51eEVkaXRpb247XG5cbiAgLyoqXG4gICAqIFdoYXQga2VybmVsIHZlcnNpb24gb2YgQW1hem9uIExpbnV4IHRvIHVzZVxuICAgKlxuICAgKiBAZGVmYXVsdCAtXG4gICAqL1xuICByZWFkb25seSBrZXJuZWw/OiBBbWF6b25MaW51eEtlcm5lbDtcblxuICAvKipcbiAgICogV2hhdCBzdG9yYWdlIGJhY2tlZCBpbWFnZSB0byB1c2VcbiAgICpcbiAgICogQGRlZmF1bHQgR2VuZXJhbFB1cnBvc2VcbiAgICovXG4gIHJlYWRvbmx5IHN0b3JhZ2U/OiBBbWF6b25MaW51eFN0b3JhZ2U7XG5cbiAgLyoqXG4gICAqIEluaXRpYWwgdXNlciBkYXRhXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRW1wdHkgVXNlckRhdGEgZm9yIExpbnV4IG1hY2hpbmVzXG4gICAqL1xuICByZWFkb25seSB1c2VyRGF0YT86IFVzZXJEYXRhO1xuXG4gIC8qKlxuICAgKiBDUFUgVHlwZVxuICAgKlxuICAgKiBAZGVmYXVsdCBYODZfNjRcbiAgICovXG4gIHJlYWRvbmx5IGNwdVR5cGU/OiBBbWF6b25MaW51eENwdVR5cGU7XG5cbiAgLyoqXG4gICAqIFZpcnR1YWxpemF0aW9uIHR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgSFZNXG4gICAqL1xuICByZWFkb25seSB2aXJ0dWFsaXphdGlvbj86IEFtYXpvbkxpbnV4VmlydDtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgQU1JIElEIGlzIGNhY2hlZCB0byBiZSBzdGFibGUgYmV0d2VlbiBkZXBsb3ltZW50c1xuICAgKlxuICAgKiBCeSBkZWZhdWx0LCB0aGUgbmV3ZXN0IGltYWdlIGlzIHVzZWQgb24gZWFjaCBkZXBsb3ltZW50LiBUaGlzIHdpbGwgY2F1c2VcbiAgICogaW5zdGFuY2VzIHRvIGJlIHJlcGxhY2VkIHdoZW5ldmVyIGEgbmV3IHZlcnNpb24gaXMgcmVsZWFzZWQsIGFuZCBtYXkgY2F1c2VcbiAgICogZG93bnRpbWUgaWYgdGhlcmUgYXJlbid0IGVub3VnaCBydW5uaW5nIGluc3RhbmNlcyBpbiB0aGUgQXV0b1NjYWxpbmdHcm91cFxuICAgKiB0byByZXNjaGVkdWxlIHRoZSB0YXNrcyBvbi5cbiAgICpcbiAgICogSWYgc2V0IHRvIHRydWUsIHRoZSBBTUkgSUQgd2lsbCBiZSBjYWNoZWQgaW4gYGNkay5jb250ZXh0Lmpzb25gIGFuZCB0aGVcbiAgICogc2FtZSB2YWx1ZSB3aWxsIGJlIHVzZWQgb24gZnV0dXJlIHJ1bnMuIFlvdXIgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHJlcGxhY2VkXG4gICAqIGJ1dCB5b3VyIEFNSSB2ZXJzaW9uIHdpbGwgZ3JvdyBvbGQgb3ZlciB0aW1lLiBUbyByZWZyZXNoIHRoZSBBTUkgbG9va3VwLFxuICAgKiB5b3Ugd2lsbCBoYXZlIHRvIGV2aWN0IHRoZSB2YWx1ZSBmcm9tIHRoZSBjYWNoZSB1c2luZyB0aGUgYGNkayBjb250ZXh0YFxuICAgKiBjb21tYW5kLiBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9sYXRlc3QvZ3VpZGUvY29udGV4dC5odG1sIGZvclxuICAgKiBtb3JlIGluZm9ybWF0aW9uLlxuICAgKlxuICAgKiBDYW4gbm90IGJlIHNldCB0byBgdHJ1ZWAgaW4gZW52aXJvbm1lbnQtYWdub3N0aWMgc3RhY2tzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVkSW5Db250ZXh0PzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBTZWxlY3RzIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBBbWF6b24gTGludXhcbiAqXG4gKiBUaGlzIE1hY2hpbmUgSW1hZ2UgYXV0b21hdGljYWxseSB1cGRhdGVzIHRvIHRoZSBsYXRlc3QgdmVyc2lvbiBvbiBldmVyeVxuICogZGVwbG95bWVudC4gQmUgYXdhcmUgdGhpcyB3aWxsIGNhdXNlIHlvdXIgaW5zdGFuY2VzIHRvIGJlIHJlcGxhY2VkIHdoZW4gYVxuICogbmV3IHZlcnNpb24gb2YgdGhlIGltYWdlIGJlY29tZXMgYXZhaWxhYmxlLiBEbyBub3Qgc3RvcmUgc3RhdGVmdWwgaW5mb3JtYXRpb25cbiAqIG9uIHRoZSBpbnN0YW5jZSBpZiB5b3UgYXJlIHVzaW5nIHRoaXMgaW1hZ2UuXG4gKlxuICogVGhlIEFNSSBJRCBpcyBzZWxlY3RlZCB1c2luZyB0aGUgdmFsdWVzIHB1Ymxpc2hlZCB0byB0aGUgU1NNIHBhcmFtZXRlciBzdG9yZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEFtYXpvbkxpbnV4SW1hZ2UgZXh0ZW5kcyBHZW5lcmljU1NNUGFyYW1ldGVySW1hZ2Uge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBTU00gcGFyYW1ldGVyIG5hbWUgdGhhdCB3aWxsIGNvbnRhaW4gdGhlIEFtYXpvbiBMaW51eCBpbWFnZSB3aXRoIHRoZSBnaXZlbiBhdHRyaWJ1dGVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHNzbVBhcmFtZXRlck5hbWUocHJvcHM6IEFtYXpvbkxpbnV4SW1hZ2VQcm9wcyA9IHt9KSB7XG4gICAgY29uc3QgZ2VuZXJhdGlvbiA9XG4gICAgICAocHJvcHMgJiYgcHJvcHMuZ2VuZXJhdGlvbikgfHwgQW1hem9uTGludXhHZW5lcmF0aW9uLkFNQVpPTl9MSU5VWDtcbiAgICBjb25zdCBlZGl0aW9uID0gKHByb3BzICYmIHByb3BzLmVkaXRpb24pIHx8IEFtYXpvbkxpbnV4RWRpdGlvbi5TVEFOREFSRDtcbiAgICBjb25zdCBjcHUgPSAocHJvcHMgJiYgcHJvcHMuY3B1VHlwZSkgfHwgQW1hem9uTGludXhDcHVUeXBlLlg4Nl82NDtcbiAgICBsZXQga2VybmVsID0gKHByb3BzICYmIHByb3BzLmtlcm5lbCkgfHwgdW5kZWZpbmVkO1xuICAgIGxldCB2aXJ0dWFsaXphdGlvbjogQW1hem9uTGludXhWaXJ0IHwgdW5kZWZpbmVkO1xuICAgIGxldCBzdG9yYWdlOiBBbWF6b25MaW51eFN0b3JhZ2UgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAoZ2VuZXJhdGlvbiA9PT0gQW1hem9uTGludXhHZW5lcmF0aW9uLkFNQVpPTl9MSU5VWF8yMDIyKSB7XG4gICAgICBrZXJuZWwgPSBBbWF6b25MaW51eEtlcm5lbC5LRVJORUw1X1g7XG4gICAgICBpZiAocHJvcHMgJiYgcHJvcHMuc3RvcmFnZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJTdG9yYWdlIHBhcmFtZXRlciBkb2VzIG5vdCBleGlzdCBpbiBTU00gcGFyYW1ldGVyIG5hbWUgZm9yIEFtYXpvbiBMaW51eCAyMDIyLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzICYmIHByb3BzLnZpcnR1YWxpemF0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIlZpcnR1YWxpemF0aW9uIHBhcmFtZXRlciBkb2VzIG5vdCBleGlzdCBpbiBTU00gcGFyYW1ldGVyIG5hbWUgZm9yIEFtYXpvbiBMaW51eCAyMDIyLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoZ2VuZXJhdGlvbiA9PT0gQW1hem9uTGludXhHZW5lcmF0aW9uLkFNQVpPTl9MSU5VWF8yMDIzKSB7XG4gICAgICBrZXJuZWwgPSBBbWF6b25MaW51eEtlcm5lbC5LRVJORUw2XzE7XG4gICAgICBpZiAocHJvcHMgJiYgcHJvcHMuc3RvcmFnZSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJTdG9yYWdlIHBhcmFtZXRlciBkb2VzIG5vdCBleGlzdCBpbiBTU00gcGFyYW1ldGVyIG5hbWUgZm9yIEFtYXpvbiBMaW51eCAyMDIzLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKHByb3BzICYmIHByb3BzLnZpcnR1YWxpemF0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIlZpcnR1YWxpemF0aW9uIHBhcmFtZXRlciBkb2VzIG5vdCBleGlzdCBpbiBTU00gcGFyYW1ldGVyIG5hbWUgZm9yIEFtYXpvbiBMaW51eCAyMDIzLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2aXJ0dWFsaXphdGlvbiA9IChwcm9wcyAmJiBwcm9wcy52aXJ0dWFsaXphdGlvbikgfHwgQW1hem9uTGludXhWaXJ0LkhWTTtcbiAgICAgIHN0b3JhZ2UgPSAocHJvcHMgJiYgcHJvcHMuc3RvcmFnZSkgfHwgQW1hem9uTGludXhTdG9yYWdlLkdFTkVSQUxfUFVSUE9TRTtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJ0czogQXJyYXk8c3RyaW5nIHwgdW5kZWZpbmVkPiA9IFtcbiAgICAgIGdlbmVyYXRpb24sXG4gICAgICBcImFtaVwiLFxuICAgICAgZWRpdGlvbiAhPT0gQW1hem9uTGludXhFZGl0aW9uLlNUQU5EQVJEID8gZWRpdGlvbiA6IHVuZGVmaW5lZCxcbiAgICAgIGtlcm5lbCxcbiAgICAgIHZpcnR1YWxpemF0aW9uLFxuICAgICAgY3B1LFxuICAgICAgc3RvcmFnZSxcbiAgICBdLmZpbHRlcigoeCkgPT4geCAhPT0gdW5kZWZpbmVkKTsgLy8gR2V0IHJpZCBvZiB1bmRlZmluZWRzXG5cbiAgICByZXR1cm4gXCIvYXdzL3NlcnZpY2UvYW1pLWFtYXpvbi1saW51eC1sYXRlc3QvXCIgKyBwYXJ0cy5qb2luKFwiLVwiKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVhZG9ubHkgY2FjaGVkSW5Db250ZXh0OiBib29sZWFuO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEFtYXpvbkxpbnV4SW1hZ2VQcm9wcyA9IHt9KSB7XG4gICAgc3VwZXIoXG4gICAgICBBbWF6b25MaW51eEltYWdlLnNzbVBhcmFtZXRlck5hbWUocHJvcHMpLFxuICAgICAgT3BlcmF0aW5nU3lzdGVtVHlwZS5MSU5VWCxcbiAgICAgIHByb3BzLnVzZXJEYXRhLFxuICAgICk7XG5cbiAgICB0aGlzLmNhY2hlZEluQ29udGV4dCA9IHByb3BzLmNhY2hlZEluQ29udGV4dCA/PyBmYWxzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGltYWdlIHRvIHVzZSBpbiB0aGUgZ2l2ZW4gY29udGV4dFxuICAgKi9cbiAgcHVibGljIGdldEltYWdlKHNjb3BlOiBDb25zdHJ1Y3QpOiBNYWNoaW5lSW1hZ2VDb25maWcge1xuICAgIGNvbnN0IGltYWdlSWQgPSBsb29rdXBJbWFnZShcbiAgICAgIHNjb3BlLFxuICAgICAgdGhpcy5jYWNoZWRJbkNvbnRleHQsXG4gICAgICB0aGlzLnBhcmFtZXRlck5hbWUsXG4gICAgKTtcblxuICAgIGNvbnN0IG9zVHlwZSA9IE9wZXJhdGluZ1N5c3RlbVR5cGUuTElOVVg7XG4gICAgcmV0dXJuIHtcbiAgICAgIGltYWdlSWQsXG4gICAgICBvc1R5cGUsXG4gICAgICB1c2VyRGF0YTogdGhpcy5wcm9wcy51c2VyRGF0YSA/PyBVc2VyRGF0YS5mb3JMaW51eCgpLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBBbWF6b24gTGludXggS2VybmVsXG4gKi9cbmV4cG9ydCBlbnVtIEFtYXpvbkxpbnV4S2VybmVsIHtcbiAgLyoqXG4gICAqIEtlcm5lbCB2ZXJzaW9uIDUuMTBcbiAgICovXG4gIEtFUk5FTDVfWCA9IFwia2VybmVsLTUuMTBcIixcblxuICAvKipcbiAgICogS2VybmVsIHZlcnNpb24gNi4xXG4gICAqL1xuICBLRVJORUw2XzEgPSBcImtlcm5lbC02LjFcIixcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdlbmVyaWNMaW51eEltYWdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VuZXJpY0xpbnV4SW1hZ2VQcm9wcyB7XG4gIC8qKlxuICAgKiBJbml0aWFsIHVzZXIgZGF0YVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEVtcHR5IFVzZXJEYXRhIGZvciBMaW51eCBtYWNoaW5lc1xuICAgKi9cbiAgcmVhZG9ubHkgdXNlckRhdGE/OiBVc2VyRGF0YTtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdlbmVyaWNXaW5kb3dzSW1hZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW5lcmljV2luZG93c0ltYWdlUHJvcHMge1xuICAvKipcbiAgICogSW5pdGlhbCB1c2VyIGRhdGFcbiAgICpcbiAgICogQGRlZmF1bHQgLSBFbXB0eSBVc2VyRGF0YSBmb3IgV2luZG93cyBtYWNoaW5lc1xuICAgKi9cbiAgcmVhZG9ubHkgdXNlckRhdGE/OiBVc2VyRGF0YTtcbn1cblxuLyoqXG4gKiBDb25zdHJ1Y3QgYSBMaW51eCBtYWNoaW5lIGltYWdlIGZyb20gYW4gQU1JIG1hcFxuICpcbiAqIExpbnV4IGltYWdlcyBJRHMgYXJlIG5vdCBwdWJsaXNoZWQgdG8gU1NNIHBhcmFtZXRlciBzdG9yZSB5ZXQsIHNvIHlvdSdsbCBoYXZlIHRvXG4gKiBtYW51YWxseSBzcGVjaWZ5IGFuIEFNSSBtYXAuXG4gKi9cbmV4cG9ydCBjbGFzcyBHZW5lcmljTGludXhJbWFnZSBpbXBsZW1lbnRzIElNYWNoaW5lSW1hZ2Uge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGFtaU1hcDogeyBbcmVnaW9uOiBzdHJpbmddOiBzdHJpbmcgfSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBHZW5lcmljTGludXhJbWFnZVByb3BzID0ge30sXG4gICkge31cblxuICBwdWJsaWMgZ2V0SW1hZ2Uoc2NvcGU6IENvbnN0cnVjdCk6IE1hY2hpbmVJbWFnZUNvbmZpZyB7XG4gICAgY29uc3QgdXNlckRhdGEgPSB0aGlzLnByb3BzLnVzZXJEYXRhID8/IFVzZXJEYXRhLmZvckxpbnV4KCk7XG4gICAgY29uc3Qgb3NUeXBlID0gT3BlcmF0aW5nU3lzdGVtVHlwZS5MSU5VWDtcbiAgICBjb25zdCByZWdpb24gPSBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChzY29wZSkucmVnaW9uO1xuICAgIC8vIC8vIEdyaWQgc3RhY2tzIGFyZSBzaW5nbGUgcmVnaW9uLCByZWdpb24gaXMgYWx3YXlzIGtub3duXG4gICAgLy8gaWYgKFRva2VuLmlzVW5yZXNvbHZlZChyZWdpb24pKSB7XG4gICAgLy8gICBjb25zdCBtYXBwaW5nOiB7IFtrMTogc3RyaW5nXTogeyBbazI6IHN0cmluZ106IGFueSB9IH0gPSB7fTtcbiAgICAvLyAgIGZvciAoY29uc3QgW3JnbiwgYW1pXSBvZiBPYmplY3QuZW50cmllcyh0aGlzLmFtaU1hcCkpIHtcbiAgICAvLyAgICAgbWFwcGluZ1tyZ25dID0geyBhbWkgfTtcbiAgICAvLyAgIH1cbiAgICAvLyAgIGNvbnN0IGFtaU1hcCA9IG5ldyBUZXJyYWZvcm1Mb2NhbChzY29wZSwgXCJBbWlNYXBcIiwgeyBtYXBwaW5nIH0pO1xuICAgIC8vICAgcmV0dXJuIHtcbiAgICAvLyAgICAgaW1hZ2VJZDogRm4ubG9va3VwTmVzdGVkKGFtaU1hcCwgQXdzLlJFR0lPTiwgXCJhbWlcIiksXG4gICAgLy8gICAgIHVzZXJEYXRhLFxuICAgIC8vICAgICBvc1R5cGUsXG4gICAgLy8gICB9O1xuICAgIC8vIH1cbiAgICBjb25zdCBpbWFnZUlkID1cbiAgICAgIHJlZ2lvbiAhPT0gXCJ0ZXN0LXJlZ2lvblwiID8gdGhpcy5hbWlNYXBbcmVnaW9uXSA6IFwiYW1pLTEyMzQ1XCI7XG4gICAgaWYgKCFpbWFnZUlkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBVbmFibGUgdG8gZmluZCBBTUkgaW4gQU1JIG1hcDogbm8gQU1JIHNwZWNpZmllZCBmb3IgcmVnaW9uICcke3JlZ2lvbn0nYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBpbWFnZUlkLFxuICAgICAgdXNlckRhdGEsXG4gICAgICBvc1R5cGUsXG4gICAgfTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnN0cnVjdCBhIFdpbmRvd3MgbWFjaGluZSBpbWFnZSBmcm9tIGFuIEFNSSBtYXBcbiAqXG4gKiBBbGxvd3MgeW91IHRvIGNyZWF0ZSBhIGdlbmVyaWMgV2luZG93cyBFQzIgLCBtYW51YWxseSBzcGVjaWZ5IGFuIEFNSSBtYXAuXG4gKi9cbmV4cG9ydCBjbGFzcyBHZW5lcmljV2luZG93c0ltYWdlIGltcGxlbWVudHMgSU1hY2hpbmVJbWFnZSB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgYW1pTWFwOiB7IFtyZWdpb246IHN0cmluZ106IHN0cmluZyB9LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IEdlbmVyaWNXaW5kb3dzSW1hZ2VQcm9wcyA9IHt9LFxuICApIHt9XG5cbiAgcHVibGljIGdldEltYWdlKHNjb3BlOiBDb25zdHJ1Y3QpOiBNYWNoaW5lSW1hZ2VDb25maWcge1xuICAgIGNvbnN0IHVzZXJEYXRhID0gdGhpcy5wcm9wcy51c2VyRGF0YSA/PyBVc2VyRGF0YS5mb3JXaW5kb3dzKCk7XG4gICAgY29uc3Qgb3NUeXBlID0gT3BlcmF0aW5nU3lzdGVtVHlwZS5XSU5ET1dTO1xuICAgIGNvbnN0IHJlZ2lvbiA9IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHNjb3BlKS5yZWdpb247XG4gICAgLy8gLy8gR3JpZCBzdGFja3MgYXJlIHNpbmdsZSByZWdpb24sIHJlZ2lvbiBpcyBhbHdheXMga25vd25cbiAgICAvLyBpZiAoVG9rZW4uaXNVbnJlc29sdmVkKHJlZ2lvbikpIHtcbiAgICAvLyAgIGNvbnN0IG1hcHBpbmc6IHsgW2sxOiBzdHJpbmddOiB7IFtrMjogc3RyaW5nXTogYW55IH0gfSA9IHt9O1xuICAgIC8vICAgZm9yIChjb25zdCBbcmduLCBhbWldIG9mIE9iamVjdC5lbnRyaWVzKHRoaXMuYW1pTWFwKSkge1xuICAgIC8vICAgICBtYXBwaW5nW3Jnbl0gPSB7IGFtaSB9O1xuICAgIC8vICAgfVxuICAgIC8vICAgY29uc3QgYW1pTWFwID0gbmV3IFRlcnJhZm9ybUxvY2FsKHNjb3BlLCBcIkFtaU1hcFwiLCB7IG1hcHBpbmcgfSk7XG4gICAgLy8gICByZXR1cm4ge1xuICAgIC8vICAgICBpbWFnZUlkOiBGbi5sb29rdXBOZXN0ZWQoYW1pTWFwLCBBd3MuUkVHSU9OLCBcImFtaVwiKSxcbiAgICAvLyAgICAgdXNlckRhdGEsXG4gICAgLy8gICAgIG9zVHlwZSxcbiAgICAvLyAgIH07XG4gICAgLy8gfVxuICAgIGNvbnN0IGltYWdlSWQgPVxuICAgICAgcmVnaW9uICE9PSBcInRlc3QtcmVnaW9uXCIgPyB0aGlzLmFtaU1hcFtyZWdpb25dIDogXCJhbWktMTIzNDVcIjtcbiAgICBpZiAoIWltYWdlSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFVuYWJsZSB0byBmaW5kIEFNSSBpbiBBTUkgbWFwOiBubyBBTUkgc3BlY2lmaWVkIGZvciByZWdpb24gJyR7cmVnaW9ufSdgLFxuICAgICAgKTtcbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgIGltYWdlSWQsXG4gICAgICB1c2VyRGF0YSxcbiAgICAgIG9zVHlwZSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogQSBtYWNoaW5lIGltYWdlIHdob3NlIEFNSSBJRCB3aWxsIGJlIHNlYXJjaGVkIHVzaW5nIERlc2NyaWJlSW1hZ2VzLlxuICpcbiAqIFRoZSBtb3N0IHJlY2VudCwgYXZhaWxhYmxlLCBsYXVuY2hhYmxlIGltYWdlIG1hdGNoaW5nIHRoZSBnaXZlbiBmaWx0ZXJcbiAqIGNyaXRlcmlhIHdpbGwgYmUgdXNlZC4gTG9va2luZyB1cCBBTUlzIG1heSB0YWtlIGEgbG9uZyB0aW1lOyBzcGVjaWZ5XG4gKiBhcyBtYW55IGZpbHRlciBjcml0ZXJpYSBhcyBwb3NzaWJsZSB0byBuYXJyb3cgZG93biB0aGUgc2VhcmNoLlxuICpcbiAqIFRoZSBBTUkgc2VsZWN0ZWQgd2lsbCBiZSBjYWNoZWQgaW4gYGdyaWQuY29udGV4dC5qc29uYCBhbmQgdGhlIHNhbWUgdmFsdWVcbiAqIHdpbGwgYmUgdXNlZCBvbiBmdXR1cmUgcnVucy4gVG8gcmVmcmVzaCB0aGUgQU1JIGxvb2t1cCwgeW91IHdpbGwgaGF2ZSB0b1xuICogZXZpY3QgdGhlIHZhbHVlIGZyb20gdGhlIGNhY2hlIHVzaW5nIHRoZSBgZ3JpZCBjb250ZXh0YCBjb21tYW5kLiBTZWVcbiAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvbGF0ZXN0L2d1aWRlL2NvbnRleHQuaHRtbCBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIExvb2t1cE1hY2hpbmVJbWFnZSBpbXBsZW1lbnRzIElNYWNoaW5lSW1hZ2Uge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBMb29rdXBNYWNoaW5lSW1hZ2VQcm9wcykge31cblxuICBwdWJsaWMgZ2V0SW1hZ2Uoc2NvcGU6IENvbnN0cnVjdCk6IE1hY2hpbmVJbWFnZUNvbmZpZyB7XG4gICAgLy8gTmVlZCB0byBrbm93ICd3aW5kb3dzJyBvciBub3QgYmVmb3JlIGRvaW5nIHRoZSBxdWVyeSB0byByZXR1cm4gdGhlIHJpZ2h0XG4gICAgLy8gb3NUeXBlIGZvciB0aGUgZHVtbXkgdmFsdWUsIHNvIG1pZ2h0IGFzIHdlbGwgYWRkIGl0IHRvIHRoZSBmaWx0ZXIuXG4gICAgY29uc3QgZmlsdGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nW10gfCB1bmRlZmluZWQ+ID0ge1xuICAgICAgbmFtZTogW3RoaXMucHJvcHMubmFtZV0sXG4gICAgICBzdGF0ZTogW1wiYXZhaWxhYmxlXCJdLFxuICAgICAgXCJpbWFnZS10eXBlXCI6IFtcIm1hY2hpbmVcIl0sXG4gICAgICBwbGF0Zm9ybTogdGhpcy5wcm9wcy53aW5kb3dzID8gW1wid2luZG93c1wiXSA6IHVuZGVmaW5lZCxcbiAgICB9O1xuICAgIE9iamVjdC5hc3NpZ24oZmlsdGVycywgdGhpcy5wcm9wcy5maWx0ZXJzKTtcblxuICAgIGxldCB1bmlxdWVJZCA9IFwiQW1pXCI7XG4gICAgbGV0IGNvdW50ZXIgPSAxO1xuICAgIHdoaWxlIChzY29wZS5ub2RlLnRyeUZpbmRDaGlsZCh1bmlxdWVJZCkpIHtcbiAgICAgIHVuaXF1ZUlkID0gYEFtaSR7Y291bnRlcisrfWA7XG4gICAgfVxuXG4gICAgY29uc3QgZGF0YVNvdXJjZSA9IG5ldyBkYXRhQXdzQW1pLkRhdGFBd3NBbWkoc2NvcGUsIHVuaXF1ZUlkLCB7XG4gICAgICBvd25lcnM6IHRoaXMucHJvcHMub3duZXJzLFxuICAgICAgZmlsdGVyOiBPYmplY3QuZW50cmllcyhmaWx0ZXJzKVxuICAgICAgICAuZmlsdGVyKChbX2tleSwgdmFsdWVzXSkgPT4gdmFsdWVzICE9PSB1bmRlZmluZWQpXG4gICAgICAgIC5tYXAoKFtuYW1lLCB2YWx1ZXNdKSA9PiAoe1xuICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgdmFsdWVzOiB2YWx1ZXMgYXMgc3RyaW5nW10sXG4gICAgICAgIH0pKSxcbiAgICB9KTtcbiAgICBjb25zdCB2YWx1ZSA9IGRhdGFTb3VyY2UuaWQ7XG5cbiAgICAvLyAvLyBUT0RPOiBVc2UgR3JpZCBhcyBjb250ZXh0UHJvdmlkZXJcbiAgICAvLyBjb25zdCB2YWx1ZSA9IENvbnRleHRQcm92aWRlci5nZXRWYWx1ZShzY29wZSwge1xuICAgIC8vICAgcHJvdmlkZXI6IGN4c2NoZW1hLkNvbnRleHRQcm92aWRlci5BTUlfUFJPVklERVIsXG4gICAgLy8gICBwcm9wczoge1xuICAgIC8vICAgICBvd25lcnM6IHRoaXMucHJvcHMub3duZXJzLFxuICAgIC8vICAgICBmaWx0ZXJzLFxuICAgIC8vICAgfSBhcyBjeHNjaGVtYS5BbWlDb250ZXh0UXVlcnksXG4gICAgLy8gICBkdW1teVZhbHVlOiBcImFtaS0xMjM0XCIsXG4gICAgLy8gfSkudmFsdWUgYXMgY3hhcGkuQW1pQ29udGV4dFJlc3BvbnNlO1xuICAgIC8vXG4gICAgLy8gaWYgKHR5cGVvZiB2YWx1ZSAhPT0gXCJzdHJpbmdcIikge1xuICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKGBSZXNwb25zZSB0byBBTUkgbG9va3VwIGludmFsaWQsIGdvdDogJHt2YWx1ZX1gKTtcbiAgICAvLyB9XG5cbiAgICBjb25zdCBvc1R5cGUgPSB0aGlzLnByb3BzLndpbmRvd3NcbiAgICAgID8gT3BlcmF0aW5nU3lzdGVtVHlwZS5XSU5ET1dTXG4gICAgICA6IE9wZXJhdGluZ1N5c3RlbVR5cGUuTElOVVg7XG5cbiAgICByZXR1cm4ge1xuICAgICAgaW1hZ2VJZDogdmFsdWUsXG4gICAgICBvc1R5cGUsXG4gICAgICB1c2VyRGF0YTogdGhpcy5wcm9wcy51c2VyRGF0YSA/PyBVc2VyRGF0YS5mb3JPcGVyYXRpbmdTeXN0ZW0ob3NUeXBlKSxcbiAgICB9O1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgbG9va2luZyB1cCBhbiBpbWFnZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIExvb2t1cE1hY2hpbmVJbWFnZVByb3BzIHtcbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIGltYWdlIChtYXkgY29udGFpbiB3aWxkY2FyZHMpXG4gICAqL1xuICByZWFkb25seSBuYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE93bmVyIGFjY291bnQgSURzIG9yIGFsaWFzZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbGwgb3duZXJzXG4gICAqL1xuICByZWFkb25seSBvd25lcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQWRkaXRpb25hbCBmaWx0ZXJzIG9uIHRoZSBBTUlcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTRUMyL2xhdGVzdC9BUElSZWZlcmVuY2UvQVBJX0Rlc2NyaWJlSW1hZ2VzLmh0bWxcbiAgICogQGRlZmF1bHQgLSBObyBhZGRpdGlvbmFsIGZpbHRlcnNcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcnM/OiB7IFtrZXk6IHN0cmluZ106IHN0cmluZ1tdIH07XG5cbiAgLyoqXG4gICAqIExvb2sgZm9yIFdpbmRvd3MgaW1hZ2VzXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB3aW5kb3dzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3VzdG9tIHVzZXJkYXRhIGZvciB0aGlzIGltYWdlXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRW1wdHkgdXNlciBkYXRhIGFwcHJvcHJpYXRlIGZvciB0aGUgcGxhdGZvcm0gdHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdXNlckRhdGE/OiBVc2VyRGF0YTtcbn1cbiJdfQ==
@@ -397,7 +397,7 @@ class Method extends aws_construct_1.AwsConstructBase {
397
397
  }
398
398
  exports.Method = Method;
399
399
  _a = JSII_RTTI_SYMBOL_1;
400
- Method[_a] = { fqn: "terraconstructs.aws.compute.Method", version: "0.2.2" };
400
+ Method[_a] = { fqn: "terraconstructs.aws.compute.Method", version: "0.2.4" };
401
401
  var AuthorizationType;
402
402
  (function (AuthorizationType) {
403
403
  AuthorizationType["NONE"] = "NONE";
@@ -32,7 +32,7 @@ class EmptyModel {
32
32
  }
33
33
  exports.EmptyModel = EmptyModel;
34
34
  _a = JSII_RTTI_SYMBOL_1;
35
- EmptyModel[_a] = { fqn: "terraconstructs.aws.compute.EmptyModel", version: "0.2.2" };
35
+ EmptyModel[_a] = { fqn: "terraconstructs.aws.compute.EmptyModel", version: "0.2.4" };
36
36
  /**
37
37
  * Represents a reference to a REST API's Error model, which is available
38
38
  * as part of the model collection by default. This can be used for mapping
@@ -56,7 +56,7 @@ class ErrorModel {
56
56
  }
57
57
  exports.ErrorModel = ErrorModel;
58
58
  _b = JSII_RTTI_SYMBOL_1;
59
- ErrorModel[_b] = { fqn: "terraconstructs.aws.compute.ErrorModel", version: "0.2.2" };
59
+ ErrorModel[_b] = { fqn: "terraconstructs.aws.compute.ErrorModel", version: "0.2.4" };
60
60
  class Model extends aws_construct_1.AwsConstructBase {
61
61
  static fromModelName(scope, id, modelName) {
62
62
  class ImportModel extends aws_construct_1.AwsConstructBase {
@@ -102,7 +102,7 @@ class Model extends aws_construct_1.AwsConstructBase {
102
102
  }
103
103
  exports.Model = Model;
104
104
  _c = JSII_RTTI_SYMBOL_1;
105
- Model[_c] = { fqn: "terraconstructs.aws.compute.Model", version: "0.2.2" };
105
+ Model[_c] = { fqn: "terraconstructs.aws.compute.Model", version: "0.2.4" };
106
106
  /**
107
107
  * Represents a reference to a REST API's Error model, which is available
108
108
  * as part of the model collection by default. This can be used for mapping
@@ -85,7 +85,7 @@ class NatProvider {
85
85
  }
86
86
  exports.NatProvider = NatProvider;
87
87
  _a = JSII_RTTI_SYMBOL_1;
88
- NatProvider[_a] = { fqn: "terraconstructs.aws.compute.NatProvider", version: "0.2.2" };
88
+ NatProvider[_a] = { fqn: "terraconstructs.aws.compute.NatProvider", version: "0.2.4" };
89
89
  /**
90
90
  * Provider for NAT Gateways
91
91
  */
@@ -131,7 +131,7 @@ class NatGatewayProvider extends NatProvider {
131
131
  }
132
132
  exports.NatGatewayProvider = NatGatewayProvider;
133
133
  _b = JSII_RTTI_SYMBOL_1;
134
- NatGatewayProvider[_b] = { fqn: "terraconstructs.aws.compute.NatGatewayProvider", version: "0.2.2" };
134
+ NatGatewayProvider[_b] = { fqn: "terraconstructs.aws.compute.NatGatewayProvider", version: "0.2.4" };
135
135
  /**
136
136
  * NAT provider which uses NAT Instances
137
137
  *
@@ -245,7 +245,7 @@ class NatInstanceProvider extends NatProvider {
245
245
  }
246
246
  exports.NatInstanceProvider = NatInstanceProvider;
247
247
  _c = JSII_RTTI_SYMBOL_1;
248
- NatInstanceProvider[_c] = { fqn: "terraconstructs.aws.compute.NatInstanceProvider", version: "0.2.2" };
248
+ NatInstanceProvider[_c] = { fqn: "terraconstructs.aws.compute.NatInstanceProvider", version: "0.2.4" };
249
249
  /**
250
250
  * Preferential set
251
251
  *
@@ -401,7 +401,7 @@ class NatInstanceProviderV2 extends NatProvider {
401
401
  }
402
402
  exports.NatInstanceProviderV2 = NatInstanceProviderV2;
403
403
  _d = JSII_RTTI_SYMBOL_1;
404
- NatInstanceProviderV2[_d] = { fqn: "terraconstructs.aws.compute.NatInstanceProviderV2", version: "0.2.2" };
404
+ NatInstanceProviderV2[_d] = { fqn: "terraconstructs.aws.compute.NatInstanceProviderV2", version: "0.2.4" };
405
405
  /**
406
406
  * Amazon Linux 2023 NAT instance user data commands
407
407
  * Enable iptables on the instance, enable persistent IP forwarding, configure NAT on instance
@@ -432,7 +432,7 @@ class NatInstanceImage extends machine_image_1.LookupMachineImage {
432
432
  }
433
433
  exports.NatInstanceImage = NatInstanceImage;
434
434
  _e = JSII_RTTI_SYMBOL_1;
435
- NatInstanceImage[_e] = { fqn: "terraconstructs.aws.compute.NatInstanceImage", version: "0.2.2" };
435
+ NatInstanceImage[_e] = { fqn: "terraconstructs.aws.compute.NatInstanceImage", version: "0.2.4" };
436
436
  function isOutboundAllowed(direction) {
437
437
  return (direction === NatTrafficDirection.INBOUND_AND_OUTBOUND ||
438
438
  direction === NatTrafficDirection.OUTBOUND_ONLY);
@@ -39,7 +39,7 @@ class AclCidr {
39
39
  }
40
40
  exports.AclCidr = AclCidr;
41
41
  _a = JSII_RTTI_SYMBOL_1;
42
- AclCidr[_a] = { fqn: "terraconstructs.aws.compute.AclCidr", version: "0.2.2" };
42
+ AclCidr[_a] = { fqn: "terraconstructs.aws.compute.AclCidr", version: "0.2.4" };
43
43
  class AclCidrImpl extends AclCidr {
44
44
  constructor(config) {
45
45
  super();
@@ -134,7 +134,7 @@ class AclTraffic {
134
134
  }
135
135
  exports.AclTraffic = AclTraffic;
136
136
  _b = JSII_RTTI_SYMBOL_1;
137
- AclTraffic[_b] = { fqn: "terraconstructs.aws.compute.AclTraffic", version: "0.2.2" };
137
+ AclTraffic[_b] = { fqn: "terraconstructs.aws.compute.AclTraffic", version: "0.2.4" };
138
138
  class AclTrafficImpl extends AclTraffic {
139
139
  constructor(config) {
140
140
  super();
@@ -83,7 +83,7 @@ class NetworkAcl extends NetworkAclBase {
83
83
  }
84
84
  exports.NetworkAcl = NetworkAcl;
85
85
  _a = JSII_RTTI_SYMBOL_1;
86
- NetworkAcl[_a] = { fqn: "terraconstructs.aws.compute.NetworkAcl", version: "0.2.2" };
86
+ NetworkAcl[_a] = { fqn: "terraconstructs.aws.compute.NetworkAcl", version: "0.2.4" };
87
87
  /**
88
88
  * What action to apply to traffic matching the ACL
89
89
  *
@@ -159,7 +159,7 @@ class NetworkAclEntry extends NetworkAclEntryBase {
159
159
  }
160
160
  exports.NetworkAclEntry = NetworkAclEntry;
161
161
  _b = JSII_RTTI_SYMBOL_1;
162
- NetworkAclEntry[_b] = { fqn: "terraconstructs.aws.compute.NetworkAclEntry", version: "0.2.2" };
162
+ NetworkAclEntry[_b] = { fqn: "terraconstructs.aws.compute.NetworkAclEntry", version: "0.2.4" };
163
163
  /**
164
164
  * Associate a network ACL with a subnet
165
165
  *
@@ -203,5 +203,5 @@ class SubnetNetworkAclAssociation extends SubnetNetworkAclAssociationBase {
203
203
  }
204
204
  exports.SubnetNetworkAclAssociation = SubnetNetworkAclAssociation;
205
205
  _c = JSII_RTTI_SYMBOL_1;
206
- SubnetNetworkAclAssociation[_c] = { fqn: "terraconstructs.aws.compute.SubnetNetworkAclAssociation", version: "0.2.2" };
206
+ SubnetNetworkAclAssociation[_c] = { fqn: "terraconstructs.aws.compute.SubnetNetworkAclAssociation", version: "0.2.4" };
207
207
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1hY2wuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvbmV0d29yay1hY2wudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwrRkFBK0Y7QUFFL0Ysc0RBSTZCO0FBSTdCLG9EQUkwQjtBQUMxQiw4Q0FBOEM7QUFDOUMsMENBQW1DO0FBQ25DLHdDQUF3QztBQUV4Qzs7R0FFRztBQUNILE1BQU0sUUFBUSxHQUFXLE1BQU0sQ0FBQztBQTRCaEM7Ozs7R0FJRztBQUNILE1BQWUsY0FBZSxTQUFRLGdDQUFnQjtJQUNwRCxJQUFXLGlCQUFpQjtRQUMxQixPQUFPO1lBQ0wsWUFBWSxFQUFFLElBQUksQ0FBQyxZQUFZO1NBQ2hDLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLGlCQUFpQixDQUFDO0lBQ2hDLENBQUM7SUFHRDs7T0FFRztJQUNJLFFBQVEsQ0FDYixFQUFVLEVBQ1YsT0FBcUM7UUFFckMsT0FBTyxJQUFJLGVBQWUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ25DLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWlDRDs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxVQUFXLFNBQVEsY0FBYztJQUM1Qzs7T0FFRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FDNUIsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLFlBQW9CO1FBRXBCLE1BQU0sTUFBTyxTQUFRLGNBQWM7WUFBbkM7O2dCQUNrQixpQkFBWSxHQUFHLFlBQVksQ0FBQztZQUM5QyxDQUFDO1NBQUE7UUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBbUJELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFB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UUFFRixJQUFJLENBQUMsVUFBVSxHQUFHLEtBQUssQ0FBQyxVQUFVLENBQUM7UUFDbkMsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUMsTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyx3Q0FBd0MsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztJQUN0RSxDQUFDOztBQXpESCxrRUEwREMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzUuMS9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtZWMyL2xpYi9uZXR3b3JrLWFjbC50c1xuXG5pbXBvcnQge1xuICBuZXR3b3JrQWNsIGFzIHRmTmV0d29ya0FjbCxcbiAgbmV0d29ya0FjbFJ1bGUgYXMgdGZOZXR3b3JrQWNsUnVsZSxcbiAgbmV0d29ya0FjbEFzc29jaWF0aW9uIGFzIHRmTmV0d29ya0FjbEFzc29jaWF0aW9uLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFjbENpZHIsIEFjbFRyYWZmaWMgfSBmcm9tIFwiLi9uZXR3b3JrLWFjbC10eXBlc1wiO1xuaW1wb3J0IHsgSVN1Ym5ldCwgSVZwYywgU3VibmV0U2VsZWN0aW9uIH0gZnJvbSBcIi4vdnBjXCI7XG5pbXBvcnQge1xuICBJQXdzQ29uc3RydWN0LFxuICBBd3NDb25zdHJ1Y3RCYXNlLFxuICBBd3NDb25zdHJ1Y3RQcm9wcyxcbn0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcbi8vIFRPRE86IFVzZSBUYWdNYW5hZ2VyIGFuZCB0YWctYXNwZWN0IGluc3RlYWRcbmltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiLi4vYXdzLXRhZ3NcIjtcbi8vIGltcG9ydCB7IFRhZ3MgfSBmcm9tIFwiLi4vdGFnLWFzcGVjdFwiO1xuXG4vKipcbiAqIE5hbWUgdGFnIGNvbnN0YW50XG4gKi9cbmNvbnN0IE5BTUVfVEFHOiBzdHJpbmcgPSBcIk5hbWVcIjtcblxuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrQWNsT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIE5ldHdvcmtBQ0xcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtBY2xJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgTmV0d29ya0FjbFxuICpcbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5ldHdvcmtBY2wgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgcmVhZG9ubHkgbmV0d29ya0FjbE91dHB1dHM6IE5ldHdvcmtBY2xPdXRwdXRzO1xuICAvKipcbiAgICogSUQgZm9yIHRoZSBjdXJyZW50IE5ldHdvcmsgQUNMXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtBY2xJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIEFDTFxuICAgKi9cbiAgYWRkRW50cnkoaWQ6IHN0cmluZywgb3B0aW9uczogQ29tbW9uTmV0d29ya0FjbEVudHJ5T3B0aW9ucyk6IE5ldHdvcmtBY2xFbnRyeTtcbn1cblxuLyoqXG4gKiBBIE5ldHdvcmtBY2xCYXNlIHRoYXQgaXMgbm90IGNyZWF0ZWQgaW4gdGhpcyB0ZW1wbGF0ZVxuICpcbiAqXG4gKi9cbmFic3RyYWN0IGNsYXNzIE5ldHdvcmtBY2xCYXNlIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElOZXR3b3JrQWNsIHtcbiAgcHVibGljIGdldCBuZXR3b3JrQWNsT3V0cHV0cygpOiBOZXR3b3JrQWNsT3V0cHV0cyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG5ldHdvcmtBY2xJZDogdGhpcy5uZXR3b3JrQWNsSWQsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMubmV0d29ya0FjbE91dHB1dHM7XG4gIH1cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IG5ldHdvcmtBY2xJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGQgYSBuZXcgZW50cnkgdG8gdGhlIEFDTFxuICAgKi9cbiAgcHVibGljIGFkZEVudHJ5KFxuICAgIGlkOiBzdHJpbmcsXG4gICAgb3B0aW9uczogQ29tbW9uTmV0d29ya0FjbEVudHJ5T3B0aW9ucyxcbiAgKTogTmV0d29ya0FjbEVudHJ5IHtcbiAgICByZXR1cm4gbmV3IE5ldHdvcmtBY2xFbnRyeSh0aGlzLCBpZCwge1xuICAgICAgbmV0d29ya0FjbDogdGhpcyxcbiAgICAgIC4uLm9wdGlvbnMsXG4gICAgfSk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGNyZWF0ZSBOZXR3b3JrQWNsXG4gKlxuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrQWNsUHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIE5ldHdvcmtBY2wuXG4gICAqXG4gICAqIFNpbmNlIHRoZSBOZXR3b3JrQWNsIHJlc291cmNlIGRvZXNuJ3Qgc3VwcG9ydCBwcm92aWRpbmcgYSBwaHlzaWNhbCBuYW1lLCB0aGUgdmFsdWUgcHJvdmlkZWQgaGVyZSB3aWxsIGJlIHJlY29yZGVkIGluIHRoZSBgTmFtZWAgdGFnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDREsgZ2VuZXJhdGVkIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtBY2xOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUgTmV0d29ya0FDTC5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwYztcblxuICAvKipcbiAgICogU3VibmV0cyBpbiB0aGUgZ2l2ZW4gVlBDIHRvIGFzc29jaWF0ZSB0aGUgQUNMIHdpdGhcbiAgICpcbiAgICogTW9yZSBzdWJuZXRzIGNhbiBhbHdheXMgYmUgYWRkZWQgbGF0ZXIgYnkgY2FsbGluZ1xuICAgKiBgYXNzb2NpYXRlV2l0aFN1Ym5ldHMoKWAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc3VibmV0cyBhc3NvY2lhdGVkXG4gICAqL1xuICByZWFkb25seSBzdWJuZXRTZWxlY3Rpb24/OiBTdWJuZXRTZWxlY3Rpb247XG59XG5cbi8qKlxuICogRGVmaW5lIGEgbmV3IGN1c3RvbSBuZXR3b3JrIEFDTFxuICpcbiAqIEJ5IGRlZmF1bHQsIHdpbGwgZGVueSBhbGwgaW5ib3VuZCBhbmQgb3V0Ym91bmQgdHJhZmZpYyB1bmxlc3MgZW50cmllcyBhcmVcbiAqIGFkZGVkIGV4cGxpY2l0bHkgYWxsb3dpbmcgaXQuXG4gKlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtBY2wgZXh0ZW5kcyBOZXR3b3JrQWNsQmFzZSB7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgTmV0d29ya0FjbCBpbnRvIHRoaXMgYXBwLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTmV0d29ya0FjbElkKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBuZXR3b3JrQWNsSWQ6IHN0cmluZyxcbiAgKTogSU5ldHdvcmtBY2wge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIE5ldHdvcmtBY2xCYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBuZXR3b3JrQWNsSWQgPSBuZXR3b3JrQWNsSWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIE5ldHdvcmtBQ0xcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5ldHdvcmtBY2xJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIElEIGZvciB0aGlzIE5ldHdvcmtBQ0xcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IG5ldHdvcmtBY2xWcGNJZDogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgbmV0d29ya0FjbDogdGZOZXR3b3JrQWNsLk5ldHdvcmtBY2w7XG4gIHByaXZhdGUgcmVhZG9ubHkgdnBjOiBJVnBjO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXR3b3JrQWNsUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy52cGMgPSBwcm9wcy52cGM7XG5cbiAgICBUYWdzLm9mKHRoaXMpLmFkZChOQU1FX1RBRywgcHJvcHMubmV0d29ya0FjbE5hbWUgfHwgdGhpcy5ub2RlLnBhdGgpO1xuXG4gICAgdGhpcy5uZXR3b3JrQWNsID0gbmV3IHRmTmV0d29ya0FjbC5OZXR3b3JrQWNsKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgdnBjSWQ6IHByb3BzLnZwYy52cGNJZCxcbiAgICB9KTtcblxuICAgIHRoaXMubmV0d29ya0FjbElkID0gdGhpcy5uZXR3b3JrQWNsLmlkO1xuICAgIHRoaXMubmV0d29ya0FjbFZwY0lkID0gdGhpcy5uZXR3b3JrQWNsLnZwY0lkO1xuXG4gICAgaWYgKHByb3BzLnN1Ym5ldFNlbGVjdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmFzc29jaWF0ZVdpdGhTdWJuZXQoXCJEZWZhdWx0QXNzb2NpYXRpb25cIiwgcHJvcHMuc3VibmV0U2VsZWN0aW9uKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQXNzb2NpYXRlIHRoZSBBQ0wgd2l0aCBhIGdpdmVuIHNldCBvZiBzdWJuZXRzXG4gICAqL1xuICBwdWJsaWMgYXNzb2NpYXRlV2l0aFN1Ym5ldChpZDogc3RyaW5nLCBzZWxlY3Rpb246IFN1Ym5ldFNlbGVjdGlvbikge1xuICAgIGNvbnN0IHN1Ym5ldHMgPSB0aGlzLnZwYy5zZWxlY3RTdWJuZXRzKHNlbGVjdGlvbik7XG4gICAgZm9yIChjb25zdCBzdWJuZXQgb2Ygc3VibmV0cy5zdWJuZXRzKSB7XG4gICAgICBzdWJuZXQuYXNzb2NpYXRlTmV0d29ya0FjbChpZCwgdGhpcyk7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogV2hhdCBhY3Rpb24gdG8gYXBwbHkgdG8gdHJhZmZpYyBtYXRjaGluZyB0aGUgQUNMXG4gKlxuICpcbiAqL1xuZXhwb3J0IGVudW0gQWN0aW9uIHtcbiAgLyoqXG4gICAqIEFsbG93IHRoZSB0cmFmZmljXG4gICAqL1xuICBBTExPVyA9IFwiYWxsb3dcIixcblxuICAvKipcbiAgICogRGVueSB0aGUgdHJhZmZpY1xuICAgKi9cbiAgREVOWSA9IFwiZGVueVwiLFxufVxuXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtBY2xFbnRyeU91dHB1dHMge1xuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBOZXR3b3JrQUNMXG4gICAqL1xuICByZWFkb25seSBuZXR3b3JrQWNsSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBBIE5ldHdvcmtBY2xFbnRyeVxuICpcbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5ldHdvcmtBY2xFbnRyeSBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICByZWFkb25seSBuZXR3b3JrQWNsRW50cnlPdXRwdXRzOiBOZXR3b3JrQWNsRW50cnlPdXRwdXRzO1xuICAvKipcbiAgICogVGhlIG5ldHdvcmsgQUNMLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG59XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgTmV0d29ya0FjbEVudHJpZXNcbiAqXG4gKlxuICovXG5hYnN0cmFjdCBjbGFzcyBOZXR3b3JrQWNsRW50cnlCYXNlXG4gIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuICBpbXBsZW1lbnRzIElOZXR3b3JrQWNsRW50cnlcbntcbiAgcHVibGljIGdldCBuZXR3b3JrQWNsRW50cnlPdXRwdXRzKCk6IE5ldHdvcmtBY2xFbnRyeU91dHB1dHMge1xuICAgIHJldHVybiB7XG4gICAgICBuZXR3b3JrQWNsSWQ6IHRoaXMubmV0d29ya0FjbC5uZXR3b3JrQWNsSWQsXG4gICAgfTtcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMubmV0d29ya0FjbEVudHJ5T3V0cHV0cztcbiAgfVxuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG59XG5cbi8qKlxuICogRGlyZWN0aW9uIG9mIHRyYWZmaWMgdGhlIEFjbEVudHJ5IGFwcGxpZXMgdG9cbiAqXG4gKlxuICovXG5leHBvcnQgZW51bSBUcmFmZmljRGlyZWN0aW9uIHtcbiAgLyoqXG4gICAqIFRyYWZmaWMgbGVhdmluZyB0aGUgc3VibmV0XG4gICAqL1xuICBFR1JFU1MsXG5cbiAgLyoqXG4gICAqIFRyYWZmaWMgZW50ZXJpbmcgdGhlIHN1Ym5ldFxuICAgKi9cbiAgSU5HUkVTUyxcbn1cblxuLyoqXG4gKiBCYXNpYyBOZXR3b3JrQUNMIGVudHJ5IHByb3BzXG4gKlxuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb21tb25OZXR3b3JrQWNsRW50cnlPcHRpb25zIHtcbiAgLy8gLyoqXG4gIC8vICAqIFRoZSBuYW1lIG9mIHRoZSBOZXR3b3JrQWNsRW50cnkuXG4gIC8vICAqXG4gIC8vICAqIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgYW4gZXhwbGljaXQgZ3JvdXAgbmFtZS5cbiAgLy8gICpcbiAgLy8gICogQGRlZmF1bHQgSWYgeW91IGRvbid0IHNwZWNpZnkgYSBOZXR3b3JrQWNsTmFtZSwgQVdTIENsb3VkRm9ybWF0aW9uIGdlbmVyYXRlcyBhXG4gIC8vICAqIHVuaXF1ZSBwaHlzaWNhbCBJRCBhbmQgdXNlcyB0aGF0IElEIGZvciB0aGUgZ3JvdXAgbmFtZS5cbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IG5ldHdvcmtBY2xFbnRyeU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBDSURSIHJhbmdlIHRvIGFsbG93IG9yIGRlbnkuXG4gICAqL1xuICByZWFkb25seSBjaWRyOiBBY2xDaWRyO1xuXG4gIC8qKlxuICAgKiBXaGF0IGtpbmQgb2YgdHJhZmZpYyB0aGlzIEFDTCBydWxlIGFwcGxpZXMgdG9cbiAgICovXG4gIHJlYWRvbmx5IHRyYWZmaWM6IEFjbFRyYWZmaWM7XG5cbiAgLyoqXG4gICAqIFRyYWZmaWMgZGlyZWN0aW9uLCB3aXRoIHJlc3BlY3QgdG8gdGhlIHN1Ym5ldCwgdGhpcyBydWxlIGFwcGxpZXMgdG9cbiAgICpcbiAgICogQGRlZmF1bHQgVHJhZmZpY0RpcmVjdGlvbi5JTkdSRVNTXG4gICAqL1xuICByZWFkb25seSBkaXJlY3Rpb24/OiBUcmFmZmljRGlyZWN0aW9uO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGFsbG93IG9yIGRlbnkgdHJhZmZpYyB0aGF0IG1hdGNoZXMgdGhlIHJ1bGU7IHZhbGlkIHZhbHVlcyBhcmUgXCJhbGxvd1wiIG9yIFwiZGVueVwiLlxuICAgKlxuICAgKiBBbnkgdHJhZmZpYyB0aGF0IGlzIG5vdCBleHBsaWNpdGx5IGFsbG93ZWQgaXMgYXV0b21hdGljYWxseSBkZW5pZWQgaW4gYSBjdXN0b21cbiAgICogQUNMLCBhbGwgdHJhZmZpYyBpcyBhdXRvbWF0aWNhbGx5IGFsbG93ZWQgaW4gYSBkZWZhdWx0IEFDTC5cbiAgICpcbiAgICogQGRlZmF1bHQgQUxMT1dcbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVBY3Rpb24/OiBBY3Rpb247XG5cbiAgLyoqXG4gICAqIFJ1bGUgbnVtYmVyIHRvIGFzc2lnbiB0byB0aGUgZW50cnksIHN1Y2ggYXMgMTAwLiBBQ0wgZW50cmllcyBhcmUgcHJvY2Vzc2VkIGluIGFzY2VuZGluZyBvcmRlciBieSBydWxlIG51bWJlci5cbiAgICogRW50cmllcyBjYW4ndCB1c2UgdGhlIHNhbWUgcnVsZSBudW1iZXIgdW5sZXNzIG9uZSBpcyBhbiBlZ3Jlc3MgcnVsZSBhbmQgdGhlIG90aGVyIGlzIGFuIGluZ3Jlc3MgcnVsZS5cbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVOdW1iZXI6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGNyZWF0ZSBOZXR3b3JrQWNsRW50cnlcbiAqXG4gKlxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtBY2xFbnRyeVByb3BzXG4gIGV4dGVuZHMgQ29tbW9uTmV0d29ya0FjbEVudHJ5T3B0aW9ucyxcbiAgICBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmV0d29yayBBQ0wgdGhpcyBlbnRyeSBhcHBsaWVzIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG59XG5cbi8qKlxuICogRGVmaW5lIGFuIGVudHJ5IGluIGEgTmV0d29yayBBQ0wgdGFibGVcbiAqXG4gKlxuICovXG5leHBvcnQgY2xhc3MgTmV0d29ya0FjbEVudHJ5IGV4dGVuZHMgTmV0d29ya0FjbEVudHJ5QmFzZSB7XG4gIHB1YmxpYyByZWFkb25seSBuZXR3b3JrQWNsOiBJTmV0d29ya0FjbDtcbiAgcHVibGljIHJlc291cmNlOiB0Zk5ldHdvcmtBY2xSdWxlLk5ldHdvcmtBY2xSdWxlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXR3b3JrQWNsRW50cnlQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIC8vIGNvbnN0IG5ldHdvcmtBY2xFbnRyeU5hbWUgPVxuICAgIC8vICAgcHJvcHMubmV0d29ya0FjbEVudHJ5TmFtZSB8fFxuICAgIC8vICAgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgIC8vICAgICBwcmVmaXg6IHRoaXMuZ3JpZFVVSUQsXG4gICAgLy8gICB9KTtcblxuICAgIHRoaXMubmV0d29ya0FjbCA9IHByb3BzLm5ldHdvcmtBY2w7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IHRmTmV0d29ya0FjbFJ1bGUuTmV0d29ya0FjbFJ1bGUodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBuZXR3b3JrQWNsSWQ6IHRoaXMubmV0d29ya0FjbC5uZXR3b3JrQWNsSWQsXG4gICAgICBydWxlTnVtYmVyOiBwcm9wcy5ydWxlTnVtYmVyLFxuICAgICAgcnVsZUFjdGlvbjogcHJvcHMucnVsZUFjdGlvbiA/PyBBY3Rpb24uQUxMT1csXG4gICAgICBlZ3Jlc3M6XG4gICAgICAgIHByb3BzLmRpcmVjdGlvbiAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgPyBwcm9wcy5kaXJlY3Rpb24gPT09IFRyYWZmaWNEaXJlY3Rpb24uRUdSRVNTXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAuLi5wcm9wcy50cmFmZmljLnRvVGZUcmFmZmljQ29uZmlnKCksXG4gICAgICAuLi5wcm9wcy5jaWRyLnRvQ2lkckNvbmZpZygpLFxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQXNzb2NpYXRpb25JZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uXG4gKlxuICpcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIHJlYWRvbmx5IHN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbk91dHB1dHM6IFN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbk91dHB1dHM7XG4gIC8qKlxuICAgKiBJRCBmb3IgdGhlIGN1cnJlbnQgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbkFzc29jaWF0aW9uSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGNyZWF0ZSBhIFN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvblxuICpcbiAqXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8vIC8qKlxuICAvLyAgKiBUaGUgbmFtZSBvZiB0aGUgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uLlxuICAvLyAgKlxuICAvLyAgKiBJdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gdXNlIGFuIGV4cGxpY2l0IG5hbWUuXG4gIC8vICAqXG4gIC8vICAqIEBkZWZhdWx0IElmIHlvdSBkb24ndCBzcGVjaWZ5IGEgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uTmFtZSwgQVdTIENsb3VkRm9ybWF0aW9uIGdlbmVyYXRlcyBhXG4gIC8vICAqIHVuaXF1ZSBwaHlzaWNhbCBJRCBhbmQgdXNlcyB0aGF0IElEIGZvciB0aGUgZ3JvdXAgbmFtZS5cbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IHN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbk5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBOZXR3b3JrIEFDTCB0aGlzIGFzc29jaWF0aW9uIGlzIGRlZmluZWQgZm9yXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IG5ldHdvcmtBY2w6IElOZXR3b3JrQWNsO1xuXG4gIC8qKlxuICAgKiBJRCBvZiB0aGUgU3VibmV0XG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHN1Ym5ldDogSVN1Ym5ldDtcbn1cblxuLyoqXG4gKiBBc3NvY2lhdGUgYSBuZXR3b3JrIEFDTCB3aXRoIGEgc3VibmV0XG4gKlxuICpcbiAqL1xuYWJzdHJhY3QgY2xhc3MgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQmFzZVxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uXG57XG4gIHB1YmxpYyBnZXQgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uT3V0cHV0cygpOiBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25PdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQXNzb2NpYXRpb25JZDpcbiAgICAgICAgdGhpcy5zdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25Bc3NvY2lhdGlvbklkLFxuICAgIH07XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLnN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbk91dHB1dHM7XG4gIH1cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbkFzc29jaWF0aW9uSWQ6IHN0cmluZztcbn1cbmV4cG9ydCBjbGFzcyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb24gZXh0ZW5kcyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25CYXNlIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQXNzb2NpYXRpb25JZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQXNzb2NpYXRpb25JZDogc3RyaW5nLFxuICApOiBJU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25CYXNlIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBzdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25Bc3NvY2lhdGlvbklkID1cbiAgICAgICAgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uQXNzb2NpYXRpb25JZDtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG4gIC8qKlxuICAgKiBJRCBmb3IgdGhlIGN1cnJlbnQgU3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBzdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25Bc3NvY2lhdGlvbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElEIGZvciB0aGUgY3VycmVudCBOZXR3b3JrIEFDTFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbmV0d29ya0FjbDogSU5ldHdvcmtBY2w7XG5cbiAgLyoqXG4gICAqIElEIG9mIHRoZSBTdWJuZXRcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN1Ym5ldDogSVN1Ym5ldDtcblxuICBwcml2YXRlIGFzc29jaWF0aW9uOiB0Zk5ldHdvcmtBY2xBc3NvY2lhdGlvbi5OZXR3b3JrQWNsQXNzb2NpYXRpb247XG5cbiAgY29uc3RydWN0b3IoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25Qcm9wcyxcbiAgKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgLy8gY29uc3Qgc3VibmV0TmV0d29ya0FjbEFzc29jaWF0aW9uTmFtZSA9XG4gICAgLy8gICBwcm9wcy5zdWJuZXROZXR3b3JrQWNsQXNzb2NpYXRpb25OYW1lIHx8XG4gICAgLy8gICB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZSh0aGlzLCB7XG4gICAgLy8gICAgIHByZWZpeDogdGhpcy5ncmlkVVVJRCxcbiAgICAvLyAgIH0pO1xuXG4gICAgdGhpcy5hc3NvY2lhdGlvbiA9IG5ldyB0Zk5ldHdvcmtBY2xBc3NvY2lhdGlvbi5OZXR3b3JrQWNsQXNzb2NpYXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBuZXR3b3JrQWNsSWQ6IHByb3BzLm5ldHdvcmtBY2wubmV0d29ya0FjbElkLFxuICAgICAgICBzdWJuZXRJZDogcHJvcHMuc3VibmV0LnN1Ym5ldElkLFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5uZXR3b3JrQWNsID0gcHJvcHMubmV0d29ya0FjbDtcbiAgICB0aGlzLnN1Ym5ldCA9IHByb3BzLnN1Ym5ldDtcbiAgICB0aGlzLnN1Ym5ldE5ldHdvcmtBY2xBc3NvY2lhdGlvbkFzc29jaWF0aW9uSWQgPSB0aGlzLmFzc29jaWF0aW9uLmlkO1xuICB9XG59XG4iXX0=
@@ -128,7 +128,7 @@ class NetworkListenerAction {
128
128
  }
129
129
  exports.NetworkListenerAction = NetworkListenerAction;
130
130
  _a = JSII_RTTI_SYMBOL_1;
131
- NetworkListenerAction[_a] = { fqn: "terraconstructs.aws.compute.NetworkListenerAction", version: "0.2.2" };
131
+ NetworkListenerAction[_a] = { fqn: "terraconstructs.aws.compute.NetworkListenerAction", version: "0.2.4" };
132
132
  /**
133
133
  * Listener Action that calls "registerListener" on TargetGroups
134
134
  */
@@ -212,5 +212,5 @@ class NetworkListener extends base_listener_1.BaseListener {
212
212
  }
213
213
  exports.NetworkListener = NetworkListener;
214
214
  _a = JSII_RTTI_SYMBOL_1;
215
- NetworkListener[_a] = { fqn: "terraconstructs.aws.compute.NetworkListener", version: "0.2.2" };
215
+ NetworkListener[_a] = { fqn: "terraconstructs.aws.compute.NetworkListener", version: "0.2.4" };
216
216
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1saXN0ZW5lci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9ubGIvbmV0d29yay1saXN0ZW5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDJIQUEySDtBQUUzSCxpQ0FBb0M7QUFFcEMsdUVBQWtFO0FBQ2xFLGlGQUE0RTtBQUU1RSxpRUFJZ0M7QUFDaEMsZ0RBQTZDO0FBQzdDLHVEQUF1RDtBQUN2RCw4REFJb0M7QUFFcEMsOENBQXVFO0FBTXZFLDRDQUE0RDtBQTRHNUQ7Ozs7R0FJRztBQUNILE1BQWEsZUFBZ0IsU0FBUSw0QkFBWTtJQUMvQyxnQ0FBZ0M7SUFDaEMsTUFBTTtJQUNOLGlDQUFpQztJQUNqQyxNQUFNO0lBQ04sNEJBQTRCO0lBQzVCLHNCQUFzQjtJQUN0QixnQkFBZ0I7SUFDaEIsMkNBQTJDO0lBQzNDLHdCQUF3QjtJQUN4QixvRUFBb0U7SUFDcEUsb0NBQW9DO0lBQ3BDLHlEQUF5RDtJQUV6RCwwQ0FBMEM7SUFDMUMsMkJBQTJCO0lBQzNCLCtEQUErRDtJQUMvRCxpQkFBaUI7SUFDakIsMkJBQTJCO0lBQzNCLCtEQUErRDtJQUMvRCxpQkFBaUI7SUFDakIsK0JBQStCO0lBQy9CLG1FQUFtRTtJQUNuRSxpQkFBaUI7SUFDakIsMkJBQTJCO0lBQzNCLCtEQUErRDtJQUMvRCxpQkFBaUI7SUFDakIsUUFBUTtJQUNSLE1BQU07SUFFTiw4REFBOEQ7SUFDOUQsNEJBQTRCO0lBQzVCLDBDQUEwQztJQUMxQyxrREFBa0Q7SUFDbEQsUUFBUTtJQUVSLDBFQUEwRTtJQUMxRSw4Q0FBOEM7SUFDOUMsTUFBTTtJQUVOLG9DQUFvQztJQUNwQyxJQUFJO0lBRUo7O09BRUc7SUFDSSxNQUFNLENBQUMsc0JBQXNCLENBQ2xDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixrQkFBMEI7UUFFMUIsTUFBTSxNQUFPLFNBQVEsZ0NBQWdCO1lBQXJDOztnQkFDUyxnQkFBVyxH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RCxNQUFNLEtBQUssR0FBRyxJQUFJLHlDQUFrQixDQUFDLElBQUksRUFBRSxFQUFFLEdBQUcsT0FBTyxFQUFFO1lBQ3ZELG1CQUFtQixFQUFFLEtBQUssQ0FBQyxtQkFBbUI7WUFDOUMsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUTtZQUN6QyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7WUFDdEMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLEdBQUcsRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLEdBQUc7U0FDM0IsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLGVBQWUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFaEMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBRUQ7O09BRUc7SUFDSyxnQkFBZ0IsQ0FBQyxNQUE2QjtRQUNwRCxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDakMsQ0FBQzs7QUFuUkgsMENBb1JDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTc1LjEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjIvbGliL25sYi9uZXR3b3JrLWxpc3RlbmVyLnRzXG5cbmltcG9ydCB7IExhenksIFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgTmV0d29ya0xpc3RlbmVyQWN0aW9uIH0gZnJvbSBcIi4vbmV0d29yay1saXN0ZW5lci1hY3Rpb25cIjtcbmltcG9ydCB7IE5ldHdvcmtMaXN0ZW5lckNlcnRpZmljYXRlIH0gZnJvbSBcIi4vbmV0d29yay1saXN0ZW5lci1jZXJ0aWZpY2F0ZVwiO1xuaW1wb3J0IHsgSU5ldHdvcmtMb2FkQmFsYW5jZXIgfSBmcm9tIFwiLi9uZXR3b3JrLWxvYWQtYmFsYW5jZXJcIjtcbmltcG9ydCB7XG4gIElOZXR3b3JrTG9hZEJhbGFuY2VyVGFyZ2V0LFxuICBJTmV0d29ya1RhcmdldEdyb3VwLFxuICBOZXR3b3JrVGFyZ2V0R3JvdXAsXG59IGZyb20gXCIuL25ldHdvcmstdGFyZ2V0LWdyb3VwXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCIuLi8uLi8uLi9kdXJhdGlvblwiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSB9IGZyb20gXCIuLi8uLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQge1xuICBCYXNlTGlzdGVuZXIsXG4gIEJhc2VMaXN0ZW5lckxvb2t1cE9wdGlvbnMsXG4gIElMaXN0ZW5lcixcbn0gZnJvbSBcIi4uL2xiLXNoYXJlZC9iYXNlLWxpc3RlbmVyXCI7XG5pbXBvcnQgeyBIZWFsdGhDaGVjayB9IGZyb20gXCIuLi9sYi1zaGFyZWQvYmFzZS10YXJnZXQtZ3JvdXBcIjtcbmltcG9ydCB7IEFscG5Qb2xpY3ksIExiUHJvdG9jb2wsIFNzbFBvbGljeSB9IGZyb20gXCIuLi9sYi1zaGFyZWQvZW51bXNcIjtcbi8vIGltcG9ydCB7XG4vLyAgIExvYWRCYWxhbmNlclR5cGUsXG4vLyAgIExvYWRCYWxhbmNlckxpc3RlbmVyUHJvdG9jb2wsXG4vLyB9IGZyb20gXCIuLi9sYi1zaGFyZWQvZ3JpZC1sb29rdXAtdHlwZXNcIjtcbmltcG9ydCB7IElMaXN0ZW5lckNlcnRpZmljYXRlIH0gZnJvbSBcIi4uL2xiLXNoYXJlZC9saXN0ZW5lci1jZXJ0aWZpY2F0ZVwiO1xuaW1wb3J0IHsgdmFsaWRhdGVOZXR3b3JrUHJvdG9jb2wgfSBmcm9tIFwiLi4vbGItc2hhcmVkL3V0aWxcIjtcblxuLyoqXG4gKiBCYXNpYyBwcm9wZXJ0aWVzIGZvciBhIE5ldHdvcmsgTGlzdGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMge1xuICAvKipcbiAgICogVGhlIHBvcnQgb24gd2hpY2ggdGhlIGxpc3RlbmVyIGxpc3RlbnMgZm9yIHJlcXVlc3RzLlxuICAgKi9cbiAgcmVhZG9ubHkgcG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZWZhdWx0IHRhcmdldCBncm91cHMgdG8gbG9hZCBiYWxhbmNlIHRvXG4gICAqXG4gICAqIEFsbCB0YXJnZXQgZ3JvdXBzIHdpbGwgYmUgbG9hZCBiYWxhbmNlZCB0byB3aXRoIGVxdWFsIHdlaWdodCBhbmQgd2l0aG91dFxuICAgKiBzdGlja2luZXNzLiBGb3IgYSBtb3JlIGNvbXBsZXggY29uZmlndXJhdGlvbiB0aGFuIHRoYXQsIHVzZVxuICAgKiBlaXRoZXIgYGRlZmF1bHRBY3Rpb25gIG9yIGBhZGRBY3Rpb24oKWAuXG4gICAqXG4gICAqIENhbm5vdCBiZSBzcGVjaWZpZWQgdG9nZXRoZXIgd2l0aCBgZGVmYXVsdEFjdGlvbmAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRUYXJnZXRHcm91cHM/OiBJTmV0d29ya1RhcmdldEdyb3VwW107XG5cbiAgLyoqXG4gICAqIERlZmF1bHQgYWN0aW9uIHRvIHRha2UgZm9yIHJlcXVlc3RzIHRvIHRoaXMgbGlzdGVuZXJcbiAgICpcbiAgICogVGhpcyBhbGxvd3MgZnVsbCBjb250cm9sIG9mIHRoZSBkZWZhdWx0IEFjdGlvbiBvZiB0aGUgbG9hZCBiYWxhbmNlcixcbiAgICogaW5jbHVkaW5nIHdlaWdodGVkIGZvcndhcmRpbmcuIFNlZSB0aGUgYE5ldHdvcmtMaXN0ZW5lckFjdGlvbmAgY2xhc3MgZm9yXG4gICAqIGFsbCBvcHRpb25zLlxuICAgKlxuICAgKiBDYW5ub3QgYmUgc3BlY2lmaWVkIHRvZ2V0aGVyIHdpdGggYGRlZmF1bHRUYXJnZXRHcm91cHNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0QWN0aW9uPzogTmV0d29ya0xpc3RlbmVyQWN0aW9uO1xuXG4gIC8qKlxuICAgKiBQcm90b2NvbCBmb3IgbGlzdGVuZXIsIGV4cGVjdHMgVENQLCBUTFMsIFVEUCwgb3IgVENQX1VEUC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBUTFMgaWYgY2VydGlmaWNhdGVzIGFyZSBwcm92aWRlZC4gVENQIG90aGVyd2lzZS5cbiAgICovXG4gIHJlYWRvbmx5IHByb3RvY29sPzogTGJQcm90b2NvbDtcblxuICAvKipcbiAgICogQ2VydGlmaWNhdGUgbGlzdCBvZiBBQ00gY2VydCBBUk5zLiBZb3UgbXVzdCBwcm92aWRlIGV4YWN0bHkgb25lIGNlcnRpZmljYXRlIGlmIHRoZSBsaXN0ZW5lciBwcm90b2NvbCBpcyBIVFRQUyBvciBUTFMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gY2VydGlmaWNhdGVzLlxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGVzPzogSUxpc3RlbmVyQ2VydGlmaWNhdGVbXTtcblxuICAvKipcbiAgICogU1NMIFBvbGljeVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIEN1cnJlbnQgcHJlZGVmaW5lZCBzZWN1cml0eSBwb2xpY3kuXG4gICAqL1xuICByZWFkb25seSBzc2xQb2xpY3k/OiBTc2xQb2xpY3k7XG5cbiAgLyoqXG4gICAqIEFwcGxpY2F0aW9uLUxheWVyIFByb3RvY29sIE5lZ290aWF0aW9uIChBTFBOKSBpcyBhIFRMUyBleHRlbnNpb24gdGhhdCBpcyBzZW50IG9uIHRoZSBpbml0aWFsIFRMUyBoYW5kc2hha2UgaGVsbG8gbWVzc2FnZXMuXG4gICAqIEFMUE4gZW5hYmxlcyB0aGUgYXBwbGljYXRpb24gbGF5ZXIgdG8gbmVnb3RpYXRlIHdoaWNoIHByb3RvY29scyBzaG91bGQgYmUgdXNlZCBvdmVyIGEgc2VjdXJlIGNvbm5lY3Rpb24sIHN1Y2ggYXMgSFRUUC8xIGFuZCBIVFRQLzIuXG4gICAqXG4gICAqIENhbiBvbmx5IGJlIHNwZWNpZmllZCB0b2dldGhlciB3aXRoIFByb3RvY29sIFRMUy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBhbHBuUG9saWN5PzogQWxwblBvbGljeTtcblxuICAvKipcbiAgICogVGhlIGxvYWQgYmFsYW5jZXIgVENQIGlkbGUgdGltZW91dC5cbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uc2Vjb25kcygzNTApXG4gICAqL1xuICByZWFkb25seSB0Y3BJZGxlVGltZW91dD86IER1cmF0aW9uO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFkZGluZyBhIGNlcnRpZmljYXRlIHRvIGEgbGlzdGVuZXJcbiAqXG4gKiBUaGlzIGludGVyZmFjZSBleGlzdHMgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuICpcbiAqIEBkZXByZWNhdGVkIFVzZSBJTGlzdGVuZXJDZXJ0aWZpY2F0ZSBpbnN0ZWFkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSU5ldHdvcmtMaXN0ZW5lckNlcnRpZmljYXRlUHJvcHNcbiAgZXh0ZW5kcyBJTGlzdGVuZXJDZXJ0aWZpY2F0ZSB7fVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgTmV0d29yayBMaXN0ZW5lciBhdHRhY2hlZCB0byBhIExvYWQgQmFsYW5jZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrTGlzdGVuZXJQcm9wcyBleHRlbmRzIEJhc2VOZXR3b3JrTGlzdGVuZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbG9hZCBiYWxhbmNlciB0byBhdHRhY2ggdGhpcyBsaXN0ZW5lciB0b1xuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyOiBJTmV0d29ya0xvYWRCYWxhbmNlcjtcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBsb29raW5nIHVwIGEgbmV0d29yayBsaXN0ZW5lci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBOZXR3b3JrTGlzdGVuZXJMb29rdXBPcHRpb25zXG4gIGV4dGVuZHMgQmFzZUxpc3RlbmVyTG9va3VwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBQcm90b2NvbCBvZiB0aGUgbGlzdGVuZXIgcG9ydFxuICAgKiBAZGVmYXVsdCAtIGxpc3RlbmVyIGlzIG5vdCBmaWx0ZXJlZCBieSBwcm90b2NvbFxuICAgKi9cbiAgcmVhZG9ubHkgbGlzdGVuZXJQcm90b2NvbD86IExiUHJvdG9jb2w7XG59XG5cbi8qKlxuICogRGVmaW5lIGEgTmV0d29yayBMaXN0ZW5lclxuICpcbiAqIEByZXNvdXJjZSBBV1M6OkVsYXN0aWNMb2FkQmFsYW5jaW5nVjI6Okxpc3RlbmVyXG4gKi9cbmV4cG9ydCBjbGFzcyBOZXR3b3JrTGlzdGVuZXIgZXh0ZW5kcyBCYXNlTGlzdGVuZXIgaW1wbGVtZW50cyBJTmV0d29ya0xpc3RlbmVyIHtcbiAgLy8gVE9ETzogQWRkIEdyaWQgTG9va3VwIHN1cHBvcnRcbiAgLy8gLyoqXG4gIC8vICAqIExvb2tzIHVwIGEgbmV0d29yayBsaXN0ZW5lclxuICAvLyAgKi9cbiAgLy8gcHVibGljIHN0YXRpYyBmcm9tTG9va3VwKFxuICAvLyAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gIC8vICAgaWQ6IHN0cmluZyxcbiAgLy8gICBvcHRpb25zOiBOZXR3b3JrTGlzdGVuZXJMb29rdXBPcHRpb25zLFxuICAvLyApOiBJTmV0d29ya0xpc3RlbmVyIHtcbiAgLy8gICBsZXQgbGlzdGVuZXJQcm90b2NvbDogTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbCB8IHVuZGVmaW5lZDtcbiAgLy8gICBpZiAob3B0aW9ucy5saXN0ZW5lclByb3RvY29sKSB7XG4gIC8vICAgICB2YWxpZGF0ZU5ldHdvcmtQcm90b2NvbChvcHRpb25zLmxpc3RlbmVyUHJvdG9jb2wpO1xuXG4gIC8vICAgICBzd2l0Y2ggKG9wdGlvbnMubGlzdGVuZXJQcm90b2NvbCkge1xuICAvLyAgICAgICBjYXNlIFByb3RvY29sLlRDUDpcbiAgLy8gICAgICAgICBsaXN0ZW5lclByb3RvY29sID0gTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbC5UQ1A7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIGNhc2UgUHJvdG9jb2wuVURQOlxuICAvLyAgICAgICAgIGxpc3RlbmVyUHJvdG9jb2wgPSBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sLlVEUDtcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgICAgY2FzZSBQcm90b2NvbC5UQ1BfVURQOlxuICAvLyAgICAgICAgIGxpc3RlbmVyUHJvdG9jb2wgPSBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sLlRDUF9VRFA7XG4gIC8vICAgICAgICAgYnJlYWs7XG4gIC8vICAgICAgIGNhc2UgUHJvdG9jb2wuVExTOlxuICAvLyAgICAgICAgIGxpc3RlbmVyUHJvdG9jb2wgPSBMb2FkQmFsYW5jZXJMaXN0ZW5lclByb3RvY29sLlRMUztcbiAgLy8gICAgICAgICBicmVhaztcbiAgLy8gICAgIH1cbiAgLy8gICB9XG5cbiAgLy8gICBjb25zdCBwcm9wcyA9IEJhc2VMaXN0ZW5lci5fcXVlcnlDb250ZXh0UHJvdmlkZXIoc2NvcGUsIHtcbiAgLy8gICAgIHVzZXJPcHRpb25zOiBvcHRpb25zLFxuICAvLyAgICAgbGlzdGVuZXJQcm90b2NvbDogbGlzdGVuZXJQcm90b2NvbCxcbiAgLy8gICAgIGxvYWRCYWxhbmNlclR5cGU6IExvYWRCYWxhbmNlclR5cGUuTkVUV09SSyxcbiAgLy8gICB9KTtcblxuICAvLyAgIGNsYXNzIExvb2tlZFVwIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElOZXR3b3JrTGlzdGVuZXIge1xuICAvLyAgICAgcHVibGljIGxpc3RlbmVyQXJuID0gcHJvcHMubGlzdGVuZXJBcm47XG4gIC8vICAgfVxuXG4gIC8vICAgcmV0dXJuIG5ldyBMb29rZWRVcChzY29wZSwgaWQpO1xuICAvLyB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBsaXN0ZW5lclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTmV0d29ya0xpc3RlbmVyQXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBuZXR3b3JrTGlzdGVuZXJBcm46IHN0cmluZyxcbiAgKTogSU5ldHdvcmtMaXN0ZW5lciB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElOZXR3b3JrTGlzdGVuZXIge1xuICAgICAgcHVibGljIGxpc3RlbmVyQXJuID0gbmV0d29ya0xpc3RlbmVyQXJuO1xuICAgICAgcHVibGljIGxpc3RlbmVyT3V0cHV0cyA9IHtcbiAgICAgICAgbGlzdGVuZXJBcm46IG5ldHdvcmtMaXN0ZW5lckFybixcbiAgICAgIH07XG4gICAgICBwdWJsaWMgb3V0cHV0cyA9IHtcbiAgICAgICAgbGlzdGVuZXJBcm46IG5ldHdvcmtMaXN0ZW5lckFybixcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbG9hZCBiYWxhbmNlciB0aGlzIGxpc3RlbmVyIGlzIGF0dGFjaGVkIHRvXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbG9hZEJhbGFuY2VyOiBJTmV0d29ya0xvYWRCYWxhbmNlcjtcblxuICAvKipcbiAgICogQVJOcyBvZiBjZXJ0aWZpY2F0ZXMgYWRkZWQgdG8gdGhpcyBsaXN0ZW5lclxuICAgKlxuICAgKiBUaGUgZmlyc3QgY2VydGlmaWNhdGUgaXMgdXNlZCBhcyB0aGUgZGVmYXVsdCBjZXJ0aWZpY2F0ZS5cbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgY2VydGlmaWNhdGVBcm5zOiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogdGhlIHByb3RvY29sIG9mIHRoZSBsaXN0ZW5lclxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBwcm90b2NvbDogTGJQcm90b2NvbDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTmV0d29ya0xpc3RlbmVyUHJvcHMpIHtcbiAgICBjb25zdCBjZXJ0cyA9IHByb3BzLmNlcnRpZmljYXRlcyB8fCBbXTtcbiAgICBjb25zdCBwcm90byA9XG4gICAgICBwcm9wcy5wcm90b2NvbCB8fCAoY2VydHMubGVuZ3RoID4gMCA/IExiUHJvdG9jb2wuVExTIDogTGJQcm90b2NvbC5UQ1ApO1xuXG4gICAgdmFsaWRhdGVOZXR3b3JrUHJvdG9jb2wocHJvdG8pO1xuXG4gICAgaWYgKFxuICAgICAgcHJvdG8gPT09IExiUHJvdG9jb2wuVExTICYmXG4gICAgICBjZXJ0cy5maWx0ZXIoKHYpID0+IHYgIT0gbnVsbCkubGVuZ3RoID09PSAwXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiV2hlbiB0aGUgcHJvdG9jb2wgaXMgc2V0IHRvIFRMUywgeW91IG11c3Qgc3BlY2lmeSBjZXJ0aWZpY2F0ZXNcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3RvICE9PSBMYlByb3RvY29sLlRMUyAmJiBjZXJ0cy5sZW5ndGggPiAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiUHJvdG9jb2wgbXVzdCBiZSBUTFMgd2hlbiBjZXJ0aWZpY2F0ZXMgaGF2ZSBiZWVuIHNwZWNpZmllZFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAocHJvdG8gIT09IExiUHJvdG9jb2wuVExTICYmIHByb3BzLmFscG5Qb2xpY3kpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJQcm90b2NvbCBtdXN0IGJlIFRMUyB3aGVuIGFscG5Qb2xpY3kgaGF2ZSBiZWVuIHNwZWNpZmllZFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGxvYWRCYWxhbmNlckFybjogcHJvcHMubG9hZEJhbGFuY2VyLmxvYWRCYWxhbmNlckFybixcbiAgICAgIHByb3RvY29sOiBwcm90byxcbiAgICAgIHBvcnQ6IHByb3BzLnBvcnQsXG4gICAgICBzc2xQb2xpY3k6IHByb3BzLnNzbFBvbGljeSxcbiAgICAgIGNlcnRpZmljYXRlQXJuOiBMYXp5LnN0cmluZ1ZhbHVlKHtcbiAgICAgICAgcHJvZHVjZTogKCkgPT5cbiAgICAgICAgICB0aGlzLmNlcnRpZmljYXRlQXJucy5sZW5ndGggPiAwID8gdGhpcy5jZXJ0aWZpY2F0ZUFybnNbMF0gOiB1bmRlZmluZWQsXG4gICAgICB9KSxcbiAgICAgIGFscG5Qb2xpY3k6IHByb3BzLmFscG5Qb2xpY3kgPyBwcm9wcy5hbHBuUG9saWN5IDogdW5kZWZpbmVkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5jZXJ0aWZpY2F0ZUFybnMgPSBbXTtcbiAgICB0aGlzLmxvYWRCYWxhbmNlciA9IHByb3BzLmxvYWRCYWxhbmNlcjtcbiAgICB0aGlzLnByb3RvY29sID0gcHJvdG87XG5cbiAgICBpZiAoY2VydHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5hZGRDZXJ0aWZpY2F0ZXMoXCJEZWZhdWx0Q2VydGlmaWNhdGVzXCIsIGNlcnRzKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLmRlZmF1bHRBY3Rpb24gJiYgcHJvcHMuZGVmYXVsdFRhcmdldEdyb3Vwcykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlNwZWNpZnkgYXQgbW9zdCBvbmUgb2YgJ2RlZmF1bHRBY3Rpb24nIGFuZCAnZGVmYXVsdFRhcmdldEdyb3VwcydcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmRlZmF1bHRBY3Rpb24pIHtcbiAgICAgIHRoaXMuc2V0RGVmYXVsdEFjdGlvbihwcm9wcy5kZWZhdWx0QWN0aW9uKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZGVmYXVsdFRhcmdldEdyb3Vwcykge1xuICAgICAgdGhpcy5zZXREZWZhdWx0QWN0aW9uKFxuICAgICAgICBOZXR3b3JrTGlzdGVuZXJBY3Rpb24uZm9yd2FyZChwcm9wcy5kZWZhdWx0VGFyZ2V0R3JvdXBzKSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJvcHMudGNwSWRsZVRpbWVvdXQgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy50Y3BJZGxlVGltZW91dClcbiAgICApIHtcbiAgICAgIGlmIChcbiAgICAgICAgcHJvcHMudGNwSWRsZVRpbWVvdXQudG9NaWxsaXNlY29uZHMoKSA8XG4gICAgICAgIER1cmF0aW9uLnNlY29uZHMoMSkudG9NaWxsaXNlY29uZHMoKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgXFxgdGNwSWRsZVRpbWVvdXRcXGAgbXVzdCBiZSBiZXR3ZWVuIDYwIGFuZCA2MDAwIHNlY29uZHMsIGdvdCAke3Byb3BzLnRjcElkbGVUaW1lb3V0LnRvTWlsbGlzZWNvbmRzKCl9IG1pbGxpc2Vjb25kcy5gLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB0Y3BJZGxlVGltZW91dFNlY29uZHMgPSBwcm9wcy50Y3BJZGxlVGltZW91dC50b1NlY29uZHMoKTtcblxuICAgICAgaWYgKHByb3RvID09PSBMYlByb3RvY29sLlVEUCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJgdGNwSWRsZVRpbWVvdXRgIGNhbm5vdCBiZSBzZXQgd2hlbiBgcHJvdG9jb2xgIGlzIGBQcm90b2NvbC5VRFBgLlwiLFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAodGNwSWRsZVRpbWVvdXRTZWNvbmRzIDwgNjAgfHwgdGNwSWRsZVRpbWVvdXRTZWNvbmRzID4gNjAwMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYFxcYHRjcElkbGVUaW1lb3V0XFxgIG11c3QgYmUgYmV0d2VlbiA2MCBhbmQgNjAwMCBzZWNvbmRzLCBnb3QgJHt0Y3BJZGxlVGltZW91dFNlY29uZHN9IHNlY29uZHMuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIFwidGNwLmlkbGVfdGltZW91dC5zZWNvbmRzXCIsXG4gICAgICAgIHRjcElkbGVUaW1lb3V0U2Vjb25kcy50b1N0cmluZygpLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIG9uZSBvciBtb3JlIGNlcnRpZmljYXRlcyB0byB0aGlzIGxpc3RlbmVyLlxuICAgKlxuICAgKiBBZnRlciB0aGUgZmlyc3QgY2VydGlmaWNhdGUsIHRoaXMgY3JlYXRlcyBOZXR3b3JrTGlzdGVuZXJDZXJ0aWZpY2F0ZXNcbiAgICogcmVzb3VyY2VzIHNpbmNlIGNsb3VkZm9ybWF0aW9uIHJlcXVpcmVzIHRoZSBjZXJ0aWZpY2F0ZXMgYXJyYXkgb24gdGhlXG4gICAqIGxpc3RlbmVyIHJlc291cmNlIHRvIGhhdmUgYSBsZW5ndGggb2YgMS5cbiAgICovXG4gIHB1YmxpYyBhZGRDZXJ0aWZpY2F0ZXMoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBjZXJ0aWZpY2F0ZXM6IElMaXN0ZW5lckNlcnRpZmljYXRlW10sXG4gICk6IHZvaWQge1xuICAgIGNvbnN0IGFkZGl0aW9uYWxDZXJ0cyA9IFsuLi5jZXJ0aWZpY2F0ZXNdO1xuICAgIGlmICh0aGlzLmNlcnRpZmljYXRlQXJucy5sZW5ndGggPT09IDAgJiYgYWRkaXRpb25hbENlcnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IGZpcnN0ID0gYWRkaXRpb25hbENlcnRzLnNwbGljZSgwLCAxKVswXTtcbiAgICAgIHRoaXMuY2VydGlmaWNhdGVBcm5zLnB1c2goZmlyc3QuY2VydGlmaWNhdGVBcm4pO1xuICAgIH1cbiAgICAvLyBPbmx5IG9uZSBjZXJ0aWZpY2F0ZSBjYW4gYmUgc3BlY2lmaWVkIHBlciByZXNvdXJjZSwgZXZlbiB0aG91Z2hcbiAgICAvLyBgY2VydGlmaWNhdGVzYCBpcyBvZiB0eXBlIEFycmF5XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhZGRpdGlvbmFsQ2VydHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5ldyBOZXR3b3JrTGlzdGVuZXJDZXJ0aWZpY2F0ZSh0aGlzLCBgJHtpZH0ke2kgKyAxfWAsIHtcbiAgICAgICAgbGlzdGVuZXI6IHRoaXMsXG4gICAgICAgIGNlcnRpZmljYXRlczogW2FkZGl0aW9uYWxDZXJ0c1tpXV0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBiYWxhbmNlIGluY29taW5nIHJlcXVlc3RzIHRvIHRoZSBnaXZlbiB0YXJnZXQgZ3JvdXBzLlxuICAgKlxuICAgKiBBbGwgdGFyZ2V0IGdyb3VwcyB3aWxsIGJlIGxvYWQgYmFsYW5jZWQgdG8gd2l0aCBlcXVhbCB3ZWlnaHQgYW5kIHdpdGhvdXRcbiAgICogc3RpY2tpbmVzcy4gRm9yIGEgbW9yZSBjb21wbGV4IGNvbmZpZ3VyYXRpb24gdGhhbiB0aGF0LCB1c2UgYGFkZEFjdGlvbigpYC5cbiAgICovXG4gIHB1YmxpYyBhZGRUYXJnZXRHcm91cHMoXG4gICAgX2lkOiBzdHJpbmcsXG4gICAgLi4udGFyZ2V0R3JvdXBzOiBJTmV0d29ya1RhcmdldEdyb3VwW11cbiAgKTogdm9pZCB7XG4gICAgdGhpcy5zZXREZWZhdWx0QWN0aW9uKE5ldHdvcmtMaXN0ZW5lckFjdGlvbi5mb3J3YXJkKHRhcmdldEdyb3VwcykpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcmZvcm0gdGhlIGdpdmVuIEFjdGlvbiBvbiBpbmNvbWluZyByZXF1ZXN0c1xuICAgKlxuICAgKiBUaGlzIGFsbG93cyBmdWxsIGNvbnRyb2wgb2YgdGhlIGRlZmF1bHQgQWN0aW9uIG9mIHRoZSBsb2FkIGJhbGFuY2VyLFxuICAgKiBpbmNsdWRpbmcgd2VpZ2h0ZWQgZm9yd2FyZGluZy4gU2VlIHRoZSBgTmV0d29ya0xpc3RlbmVyQWN0aW9uYCBjbGFzcyBmb3JcbiAgICogYWxsIG9wdGlvbnMuXG4gICAqL1xuICBwdWJsaWMgYWRkQWN0aW9uKF9pZDogc3RyaW5nLCBwcm9wczogQWRkTmV0d29ya0FjdGlvblByb3BzKTogdm9pZCB7XG4gICAgdGhpcy5zZXREZWZhdWx0QWN0aW9uKHByb3BzLmFjdGlvbik7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBiYWxhbmNlIGluY29taW5nIHJlcXVlc3RzIHRvIHRoZSBnaXZlbiBsb2FkIGJhbGFuY2luZyB0YXJnZXRzLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCBpbXBsaWNpdGx5IGNyZWF0ZXMgYSBOZXR3b3JrVGFyZ2V0R3JvdXAgZm9yIHRoZSB0YXJnZXRzXG4gICAqIGludm9sdmVkLCBhbmQgYSAnZm9yd2FyZCcgYWN0aW9uIHRvIHJvdXRlIHRyYWZmaWMgdG8gdGhlIGdpdmVuIFRhcmdldEdyb3VwLlxuICAgKlxuICAgKiBJZiB5b3Ugd2FudCBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgcHJlY2lzZSBzZXR1cCwgY3JlYXRlIHRoZSBUYXJnZXRHcm91cFxuICAgKiBhbmQgdXNlIGBhZGRBY3Rpb25gIHlvdXJzZWxmLlxuICAgKlxuICAgKiBJdCdzIHBvc3NpYmxlIHRvIGFkZCBjb25kaXRpb25zIHRvIHRoZSB0YXJnZXRzIGFkZGVkIGluIHRoaXMgd2F5LiBBdCBsZWFzdFxuICAgKiBvbmUgc2V0IG9mIHRhcmdldHMgbXVzdCBiZSBhZGRlZCB3aXRob3V0IGNvbmRpdGlvbnMuXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGVkIHRhcmdldCBncm91cFxuICAgKi9cbiAgcHVibGljIGFkZFRhcmdldHMoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wczogQWRkTmV0d29ya1RhcmdldHNQcm9wcyxcbiAgKTogTmV0d29ya1RhcmdldEdyb3VwIHtcbiAgICBpZiAoIXRoaXMubG9hZEJhbGFuY2VyLnZwYykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkNhbiBvbmx5IGNhbGwgYWRkVGFyZ2V0cygpIHdoZW4gdXNpbmcgYSBjb25zdHJ1Y3RlZCBMb2FkIEJhbGFuY2VyIG9yIGltcG9ydGVkIExvYWQgQmFsYW5jZXIgd2l0aCBzcGVjaWZpZWQgVlBDOyBjb25zdHJ1Y3QgYSBuZXcgVGFyZ2V0R3JvdXAgYW5kIHVzZSBhZGRUYXJnZXRHcm91cFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBncm91cCA9IG5ldyBOZXR3b3JrVGFyZ2V0R3JvdXAodGhpcywgaWQgKyBcIkdyb3VwXCIsIHtcbiAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6IHByb3BzLmRlcmVnaXN0cmF0aW9uRGVsYXksXG4gICAgICBoZWFsdGhDaGVjazogcHJvcHMuaGVhbHRoQ2hlY2ssXG4gICAgICBwb3J0OiBwcm9wcy5wb3J0LFxuICAgICAgcHJvdG9jb2w6IHByb3BzLnByb3RvY29sID8/IHRoaXMucHJvdG9jb2wsXG4gICAgICBwcm94eVByb3RvY29sVjI6IHByb3BzLnByb3h5UHJvdG9jb2xWMixcbiAgICAgIHByZXNlcnZlQ2xpZW50SXA6IHByb3BzLnByZXNlcnZlQ2xpZW50SXAsXG4gICAgICB0YXJnZXRHcm91cE5hbWU6IHByb3BzLnRhcmdldEdyb3VwTmFtZSxcbiAgICAgIHRhcmdldHM6IHByb3BzLnRhcmdldHMsXG4gICAgICB2cGM6IHRoaXMubG9hZEJhbGFuY2VyLnZwYyxcbiAgICB9KTtcblxuICAgIHRoaXMuYWRkVGFyZ2V0R3JvdXBzKGlkLCBncm91cCk7XG5cbiAgICByZXR1cm4gZ3JvdXA7XG4gIH1cblxuICAvKipcbiAgICogV3JhcHBlciBmb3IgX3NldERlZmF1bHRBY3Rpb24gd2hpY2ggZG9lcyBhIHR5cGUtc2FmZSBiaW5kXG4gICAqL1xuICBwcml2YXRlIHNldERlZmF1bHRBY3Rpb24oYWN0aW9uOiBOZXR3b3JrTGlzdGVuZXJBY3Rpb24pIHtcbiAgICBhY3Rpb24uYmluZCh0aGlzLCB0aGlzKTtcbiAgICB0aGlzLl9zZXREZWZhdWx0QWN0aW9uKGFjdGlvbik7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIHJlZmVyZW5jZSBhbiBleGlzdGluZyBsaXN0ZW5lclxuICovXG5leHBvcnQgaW50ZXJmYWNlIElOZXR3b3JrTGlzdGVuZXIgZXh0ZW5kcyBJTGlzdGVuZXIge31cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhZGRpbmcgYSBuZXcgYWN0aW9uIHRvIGEgbGlzdGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGROZXR3b3JrQWN0aW9uUHJvcHMge1xuICAvKipcbiAgICogQWN0aW9uIHRvIHBlcmZvcm1cbiAgICovXG4gIHJlYWRvbmx5IGFjdGlvbjogTmV0d29ya0xpc3RlbmVyQWN0aW9uO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFkZGluZyBuZXcgbmV0d29yayB0YXJnZXRzIHRvIGEgbGlzdGVuZXJcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGROZXR3b3JrVGFyZ2V0c1Byb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBwb3J0IG9uIHdoaWNoIHRoZSB0YXJnZXQgcmVjZWl2ZXMgdHJhZmZpYy5cbiAgICpcbiAgICogQGRlZmF1bHQgRGV0ZXJtaW5lZCBmcm9tIHByb3RvY29sIGlmIGtub3duXG4gICAqL1xuICByZWFkb25seSBwb3J0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFByb3RvY29sIGZvciB0YXJnZXQgZ3JvdXAsIGV4cGVjdHMgVENQLCBUTFMsIFVEUCwgb3IgVENQX1VEUC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBpbmhlcml0cyB0aGUgcHJvdG9jb2wgb2YgdGhlIGxpc3RlbmVyXG4gICAqL1xuICByZWFkb25seSBwcm90b2NvbD86IExiUHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIFRoZSB0YXJnZXRzIHRvIGFkZCB0byB0aGlzIHRhcmdldCBncm91cC5cbiAgICpcbiAgICogQ2FuIGJlIGBJbnN0YW5jZWAsIGBJUEFkZHJlc3NgLCBvciBhbnkgc2VsZi1yZWdpc3RlcmluZyBsb2FkIGJhbGFuY2luZ1xuICAgKiB0YXJnZXQuIElmIHlvdSB1c2UgZWl0aGVyIGBJbnN0YW5jZWAgb3IgYElQQWRkcmVzc2AgYXMgdGFyZ2V0cywgYWxsXG4gICAqIHRhcmdldCBtdXN0IGJlIG9mIHRoZSBzYW1lIHR5cGUuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRzPzogSU5ldHdvcmtMb2FkQmFsYW5jZXJUYXJnZXRbXTtcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHRhcmdldCBncm91cC5cbiAgICpcbiAgICogVGhpcyBuYW1lIG11c3QgYmUgdW5pcXVlIHBlciByZWdpb24gcGVyIGFjY291bnQsIGNhbiBoYXZlIGEgbWF4aW11bSBvZlxuICAgKiAzMiBjaGFyYWN0ZXJzLCBtdXN0IGNvbnRhaW4gb25seSBhbHBoYW51bWVyaWMgY2hhcmFjdGVycyBvciBoeXBoZW5zLCBhbmRcbiAgICogbXVzdCBub3QgYmVnaW4gb3IgZW5kIHdpdGggYSBoeXBoZW4uXG4gICAqXG4gICAqIEBkZWZhdWx0IEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBhbW91bnQgb2YgdGltZSBmb3IgRWxhc3RpYyBMb2FkIEJhbGFuY2luZyB0byB3YWl0IGJlZm9yZSBkZXJlZ2lzdGVyaW5nIGEgdGFyZ2V0LlxuICAgKlxuICAgKiBUaGUgcmFuZ2UgaXMgMC0zNjAwIHNlY29uZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IER1cmF0aW9uLm1pbnV0ZXMoNSlcbiAgICovXG4gIHJlYWRvbmx5IGRlcmVnaXN0cmF0aW9uRGVsYXk/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgUHJveHkgUHJvdG9jb2wgdmVyc2lvbiAyIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcm94eVByb3RvY29sVjI/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciBjbGllbnQgSVAgcHJlc2VydmF0aW9uIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlIGlmIHRoZSB0YXJnZXQgZ3JvdXAgdHlwZSBpcyBJUCBhZGRyZXNzIGFuZCB0aGVcbiAgICogdGFyZ2V0IGdyb3VwIHByb3RvY29sIGlzIFRDUCBvciBUTFMuIE90aGVyd2lzZSwgdHJ1ZS5cbiAgICovXG4gIHJlYWRvbmx5IHByZXNlcnZlQ2xpZW50SXA/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBIZWFsdGggY2hlY2sgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFRoZSBkZWZhdWx0IHZhbHVlIGZvciBlYWNoIHByb3BlcnR5IGluIHRoaXMgY29uZmlndXJhdGlvbiB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSB0YXJnZXQuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjItdGFyZ2V0Z3JvdXAuaHRtbCNhd3MtcmVzb3VyY2UtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi10YXJnZXRncm91cC1wcm9wZXJ0aWVzXG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVjaz86IEhlYWx0aENoZWNrO1xufVxuIl19
@@ -356,5 +356,5 @@ class NetworkLoadBalancer extends base_load_balancer_1.BaseLoadBalancer {
356
356
  }
357
357
  exports.NetworkLoadBalancer = NetworkLoadBalancer;
358
358
  _a = JSII_RTTI_SYMBOL_1;
359
- NetworkLoadBalancer[_a] = { fqn: "terraconstructs.aws.compute.NetworkLoadBalancer", version: "0.2.2" };
359
+ NetworkLoadBalancer[_a] = { fqn: "terraconstructs.aws.compute.NetworkLoadBalancer", version: "0.2.4" };
360
360
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29yay1sb2FkLWJhbGFuY2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL25sYi9uZXR3b3JrLWxvYWQtYmFsYW5jZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnSUFBZ0k7QUFFaEksc0RBQWdEO0FBQ2hELGlDQUE2QjtBQUU3Qix5REFBK0U7QUFDL0UsdURBQTBFO0FBQzFFLCtDQUErQztBQUMvQyxnREFBMkQ7QUFDM0QsV0FBVztBQUNYLHNCQUFzQjtBQUN0QixrQ0FBa0M7QUFDbEMsMkNBQTJDO0FBQzNDLHdIQUF1RjtBQUN2Rix3RUFNeUM7QUFDekMsOENBQStEO0FBQy9ELDRDQUE4RDtBQUM5RCxzREFBa0U7QUFRbEU7Ozs7R0FJRztBQUNILElBQVksbUJBYVg7QUFiRCxXQUFZLG1CQUFtQjtJQUM3Qjs7T0FFRztJQUNILGdGQUF5RCxDQUFBO0lBQ3pEOztPQUVHO0lBQ0gsZ0dBQXlFLENBQUE7SUFDekU7O09BRUc7SUFDSCxzRUFBK0MsQ0FBQTtBQUNqRCxDQUFDLEVBYlcsbUJBQW1CLG1DQUFuQixtQkFBbUIsUUFhOUI7QUF5R0Q7O0dBRUc7QUFDSCxNQUFNLDBCQUEwQjtJQUk5QixZQUFZLEtBQWdCLEVBQUUsb0JBQTRCO1FBQ3hELElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztJQUNuRCxDQUFDO0lBRU0sTUFBTSxDQUNYLFVBQWtCLEVBQ2xCLEtBQWdDO1FBRWhDLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxDQUFDO1lBQzNCLFNBQVMsRUFBRSxnQkFBZ0I7WUFDM0IsVUFBVTtZQUNWLGFBQWEsRUFBRSxFQUFFLFlBQVksRUFBRSxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDMUQsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxD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QUNwQixHQUFHLEtBQUs7U0FDVCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSx3QkFBd0IsQ0FBQyxLQUFnQztRQUM5RCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLEVBQUU7WUFDdkMsU0FBUyxFQUFFLFNBQVM7WUFDcEIsR0FBRyxLQUFLO1NBQ1QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksa0JBQWtCLENBQUMsS0FBZ0M7UUFDeEQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSSxvQkFBb0IsQ0FBQyxLQUFnQztRQUMxRCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0kseUJBQXlCLENBQUMsS0FBZ0M7UUFDL0QsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLHNCQUFzQixDQUFDLEtBQWdDO1FBQzVELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNJLHlCQUF5QixDQUFDLEtBQWdDO1FBQy9ELE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRCxDQUFDOztBQWxWSCxrREFtVkMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzUuMS9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi9saWIvbmxiL25ldHdvcmstbG9hZC1iYWxhbmNlci50c1xuXG5pbXBvcnQgeyBkYXRhQXdzTGIgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgTGF6eSB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEJhc2VOZXR3b3JrTGlzdGVuZXJQcm9wcywgTmV0d29ya0xpc3RlbmVyIH0gZnJvbSBcIi4vbmV0d29yay1saXN0ZW5lclwiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSwgQXdzQ29uc3RydWN0UHJvcHMgfSBmcm9tIFwiLi4vLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0ICogYXMgY2xvdWR3YXRjaCBmcm9tIFwiLi4vLi4vY2xvdWR3YXRjaFwiO1xuaW1wb3J0IHsgQ29ubmVjdGlvbnMsIElDb25uZWN0YWJsZSB9IGZyb20gXCIuLi9jb25uZWN0aW9uc1wiO1xuLy8gaW1wb3J0IHtcbi8vICAgTG9hZEJhbGFuY2VyVHlwZSxcbi8vICAgTG9hZEJhbGFuY2VyTGlzdGVuZXJQcm90b2NvbCxcbi8vIH0gZnJvbSBcIi4uL2xiLXNoYXJlZC9ncmlkLWxvb2t1cC10eXBlc1wiO1xuaW1wb3J0IHsgTmV0d29ya0VMQk1ldHJpY3MgfSBmcm9tIFwiLi4vZWxhc3RpY2xvYWRiYWxhbmNpbmd2Mi1jYW5uZWQtbWV0cmljcy5nZW5lcmF0ZWRcIjtcbmltcG9ydCB7XG4gIEJhc2VMb2FkQmFsYW5jZXIsXG4gIEJhc2VMb2FkQmFsYW5jZXJMb29rdXBPcHRpb25zLFxuICBCYXNlTG9hZEJhbGFuY2VyUHJvcHMsXG4gIElMb2FkQmFsYW5jZXJWMixcbiAgTG9hZEJhbGFuY2VyVjJPdXRwdXRzLFxufSBmcm9tIFwiLi4vbGItc2hhcmVkL2Jhc2UtbG9hZC1iYWxhbmNlclwiO1xuaW1wb3J0IHsgSXBBZGRyZXNzVHlwZSwgTGJQcm90b2NvbCB9IGZyb20gXCIuLi9sYi1zaGFyZWQvZW51bXNcIjtcbmltcG9ydCB7IHBhcnNlTG9hZEJhbGFuY2VyRnVsbE5hbWUgfSBmcm9tIFwiLi4vbGItc2hhcmVkL3V0aWxcIjtcbmltcG9ydCB7IElTZWN1cml0eUdyb3VwLCBTZWN1cml0eUdyb3VwIH0gZnJvbSBcIi4uL3NlY3VyaXR5LWdyb3VwXCI7XG5pbXBvcnQge1xuICBJVnBjLFxuICAvLyBUT0RPOiBBZGQgR3JpZCBMb29rdXAgc3VwcG9ydFxuICAvLyBWcGMsXG59IGZyb20gXCIuLi92cGNcIjtcbmltcG9ydCB7IElWcGNFbmRwb2ludFNlcnZpY2VMb2FkQmFsYW5jZXIgfSBmcm9tIFwiLi4vdnBjLWVuZHBvaW50LXNlcnZpY2VcIjtcblxuLyoqXG4gKiBJbmRpY2F0ZXMgaG93IHRyYWZmaWMgaXMgZGlzdHJpYnV0ZWQgYW1vbmcgdGhlIGxvYWQgYmFsYW5jZXIgQXZhaWxhYmlsaXR5IFpvbmVzLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2VsYXN0aWNsb2FkYmFsYW5jaW5nL2xhdGVzdC9uZXR3b3JrL25ldHdvcmstbG9hZC1iYWxhbmNlcnMuaHRtbCN6b25hbC1kbnMtYWZmaW5pdHlcbiAqL1xuZXhwb3J0IGVudW0gQ2xpZW50Um91dGluZ1BvbGljeSB7XG4gIC8qKlxuICAgKiAxMDAgcGVyY2VudCB6b25hbCBhZmZpbml0eVxuICAgKi9cbiAgQVZBSUxBQklMSVRZX1pPTkVfQUZGSU5JVFkgPSBcImF2YWlsYWJpbGl0eV96b25lX2FmZmluaXR5XCIsXG4gIC8qKlxuICAgKiA4NSBwZXJjZW50IHpvbmFsIGFmZmluaXR5XG4gICAqL1xuICBQQVJUSUFMX0FWQUlMQUJJTElUWV9aT05FX0FGRklOSVRZID0gXCJwYXJ0aWFsX2F2YWlsYWJpbGl0eV96b25lX2FmZmluaXR5XCIsXG4gIC8qKlxuICAgKiBObyB6b25hbCBhZmZpbml0eVxuICAgKi9cbiAgQU5ZX0FWQUlMQUJJTElUWV9aT05FID0gXCJhbnlfYXZhaWxhYmlsaXR5X3pvbmVcIixcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhIG5ldHdvcmsgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtMb2FkQmFsYW5jZXJQcm9wcyBleHRlbmRzIEJhc2VMb2FkQmFsYW5jZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBTZWN1cml0eSBncm91cHMgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc2VjdXJpdHkgZ3JvdXBzIGFzc29jaWF0ZWQgd2l0aCB0aGUgbG9hZCBiYWxhbmNlci5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogSVNlY3VyaXR5R3JvdXBbXTtcblxuICAvKipcbiAgICogVGhlIHR5cGUgb2YgSVAgYWRkcmVzc2VzIHRvIHVzZVxuICAgKlxuICAgKiBJZiB5b3Ugd2FudCB0byBhZGQgYSBVRFAgb3IgVENQX1VEUCBsaXN0ZW5lciB0byB0aGUgbG9hZCBiYWxhbmNlcixcbiAgICogeW91IG11c3QgY2hvb3NlIElQdjQuXG4gICAqXG4gICAqIEBkZWZhdWx0IElwQWRkcmVzc1R5cGUuSVBWNFxuICAgKi9cbiAgcmVhZG9ubHkgaXBBZGRyZXNzVHlwZT86IElwQWRkcmVzc1R5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBBWiBhZmZpbml0eSByb3V0aW5nIHBvbGljeVxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvbmV0d29yay9uZXR3b3JrLWxvYWQtYmFsYW5jZXJzLmh0bWwjem9uYWwtZG5zLWFmZmluaXR5XG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQVogYWZmaW5pdHkgaXMgZGlzYWJsZWQuXG4gICAqL1xuICByZWFkb25seSBjbGllbnRSb3V0aW5nUG9saWN5PzogQ2xpZW50Um91dGluZ1BvbGljeTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZXZhbHVhdGUgaW5ib3VuZCBzZWN1cml0eSBncm91cCBydWxlcyBmb3IgdHJhZmZpYyBzZW50IHRvIGEgTmV0d29yayBMb2FkIEJhbGFuY2VyIHRocm91Z2ggQVdTIFByaXZhdGVMaW5rLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgem9uYWwgc2hpZnQgaXMgZW5hYmxlZFxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9lbGFzdGljbG9hZGJhbGFuY2luZy9sYXRlc3QvbmV0d29yay96b25hbC1zaGlmdC5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSB6b25hbFNoaWZ0PzogYm9vbGVhbjtcblxuICAvLyBUT0RPOiBNaXNzaW5nIGluIHByb3ZpZGVyLWF3c1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1wcm92aWRlci1hd3MvaXNzdWVzLzQwMzc5XG4gIC8vIC8qKlxuICAvLyAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byB1c2UgYW4gSVB2NiBwcmVmaXggZnJvbSBlYWNoIHN1Ym5ldCBmb3Igc291cmNlIE5BVC5cbiAgLy8gICpcbiAgLy8gICogVGhlIElQIGFkZHJlc3MgdHlwZSBtdXN0IGJlIElwQWRkcmVzc1R5cGUuRFVBTFNUQUNLLlxuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCB1bmRlZmluZWQgLSBOTEIgZGVmYXVsdCBiZWhhdmlvciBpcyBmYWxzZVxuICAvLyAgKi9cbiAgLy8gcmVhZG9ubHkgZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byByZWZlcmVuY2UgYW4gZXhpc3RpbmcgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtMb2FkQmFsYW5jZXJBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIEFSTiBvZiB0aGUgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBjYW5vbmljYWwgaG9zdGVkIHpvbmUgSUQgb2YgdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVG9rZW4gdmlhIGRhdGEgc291cmNlIGZyb20gbG9hZEJhbGFuY2VyQXJuLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgRE5TIG5hbWUgb2YgdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVG9rZW4gdmlhIGRhdGEgc291cmNlIGZyb20gbG9hZEJhbGFuY2VyQXJuLlxuICAgKi9cbiAgcmVhZG9ubHkgbG9hZEJhbGFuY2VyRG5zTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFZQQyB0byBhc3NvY2lhdGUgd2l0aCB0aGUgbG9hZCBiYWxhbmNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBXaGVuIG5vdCBwcm92aWRlZCwgbGlzdGVuZXJzIGNhbm5vdCBiZSBjcmVhdGVkIG9uIGltcG9ydGVkIGxvYWRcbiAgICogYmFsYW5jZXJzLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogSVZwYztcblxuICAvKipcbiAgICogU2VjdXJpdHkgZ3JvdXBzIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgbG9hZCBiYWxhbmNlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHNlY3VyaXR5IGdyb3VwcyBhc3NvY2lhdGVkIHdpdGggdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqL1xuICByZWFkb25seSBsb2FkQmFsYW5jZXJTZWN1cml0eUdyb3Vwcz86IHN0cmluZ1tdO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGxvb2tpbmcgdXAgYW4gTmV0d29ya0xvYWRCYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE5ldHdvcmtMb2FkQmFsYW5jZXJMb29rdXBPcHRpb25zXG4gIGV4dGVuZHMgQmFzZUxvYWRCYWxhbmNlckxvb2t1cE9wdGlvbnMge31cblxuLyoqXG4gKiBUaGUgbWV0cmljcyBmb3IgYSBuZXR3b3JrIGxvYWQgYmFsYW5jZXIuXG4gKi9cbmNsYXNzIE5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzIGltcGxlbWVudHMgSU5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzIHtcbiAgcHJpdmF0ZSByZWFkb25seSBsb2FkQmFsYW5jZXJGdWxsTmFtZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHNjb3BlOiBDb25zdHJ1Y3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgbG9hZEJhbGFuY2VyRnVsbE5hbWU6IHN0cmluZykge1xuICAgIHRoaXMuc2NvcGUgPSBzY29wZTtcbiAgICB0aGlzLmxvYWRCYWxhbmNlckZ1bGxOYW1lID0gbG9hZEJhbGFuY2VyRnVsbE5hbWU7XG4gIH1cblxuICBwdWJsaWMgY3VzdG9tKFxuICAgIG1ldHJpY05hbWU6IHN0cmluZyxcbiAgICBwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyxcbiAgKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgbmFtZXNwYWNlOiBcIkFXUy9OZXR3b3JrRUxCXCIsXG4gICAgICBtZXRyaWNOYW1lLFxuICAgICAgZGltZW5zaW9uc01hcDogeyBMb2FkQmFsYW5jZXI6IHRoaXMubG9hZEJhbGFuY2VyRnVsbE5hbWUgfSxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pLmF0dGFjaFRvKHRoaXMuc2NvcGUpO1xuICB9XG5cbiAgcHVibGljIGFjdGl2ZUZsb3dDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy5hY3RpdmVGbG93Q291bnRBdmVyYWdlLCBwcm9wcyk7XG4gIH1cblxuICBwdWJsaWMgY29uc3VtZWRMQ1VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKE5ldHdvcmtFTEJNZXRyaWNzLmNvbnN1bWVkTGNVc0F2ZXJhZ2UsIHtcbiAgICAgIHN0YXRpc3RpYzogXCJTdW1cIixcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG5ld0Zsb3dDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy5uZXdGbG93Q291bnRTdW0sIHByb3BzKTtcbiAgfVxuXG4gIHB1YmxpYyBwcm9jZXNzZWRCeXRlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy5wcm9jZXNzZWRCeXRlc1N1bSwgcHJvcHMpO1xuICB9XG5cbiAgcHVibGljIHRjcENsaWVudFJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5jYW5uZWRNZXRyaWMoTmV0d29ya0VMQk1ldHJpY3MudGNwQ2xpZW50UmVzZXRDb3VudFN1bSwgcHJvcHMpO1xuICB9XG4gIHB1YmxpYyB0Y3BFbGJSZXNldENvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMuY2FubmVkTWV0cmljKE5ldHdvcmtFTEJNZXRyaWNzLnRjcEVsYlJlc2V0Q291bnRTdW0sIHByb3BzKTtcbiAgfVxuICBwdWJsaWMgdGNwVGFyZ2V0UmVzZXRDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLmNhbm5lZE1ldHJpYyhOZXR3b3JrRUxCTWV0cmljcy50Y3BUYXJnZXRSZXNldENvdW50U3VtLCBwcm9wcyk7XG4gIH1cblxuICBwcml2YXRlIGNhbm5lZE1ldHJpYyhcbiAgICBmbjogKGRpbXM6IHsgTG9hZEJhbGFuY2VyOiBzdHJpbmcgfSkgPT4gY2xvdWR3YXRjaC5NZXRyaWNQcm9wcyxcbiAgICBwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyxcbiAgKTogY2xvdWR3YXRjaC5NZXRyaWMge1xuICAgIHJldHVybiBuZXcgY2xvdWR3YXRjaC5NZXRyaWMoe1xuICAgICAgLi4uZm4oeyBMb2FkQmFsYW5jZXI6IHRoaXMubG9hZEJhbGFuY2VyRnVsbE5hbWUgfSksXG4gICAgICAuLi5wcm9wcyxcbiAgICB9KS5hdHRhY2hUbyh0aGlzLnNjb3BlKTtcbiAgfVxufVxuXG4vKipcbiAqIERlZmluZSBhIG5ldyBuZXR3b3JrIGxvYWQgYmFsYW5jZXJcbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpFbGFzdGljTG9hZEJhbGFuY2luZ1YyOjpMb2FkQmFsYW5jZXJcbiAqL1xuZXhwb3J0IGNsYXNzIE5ldHdvcmtMb2FkQmFsYW5jZXJcbiAgZXh0ZW5kcyBCYXNlTG9hZEJhbGFuY2VyXG4gIGltcGxlbWVudHMgSU5ldHdvcmtMb2FkQmFsYW5jZXJcbntcbiAgLy8gVE9ETzogQWRkIEdyaWQgbG9va3VwIHN1cHBvcnRcbiAgLy8gLyoqXG4gIC8vICAqIExvb2tzIHVwIHRoZSBuZXR3b3JrIGxvYWQgYmFsYW5jZXIuXG4gIC8vICAqL1xuICAvLyBwdWJsaWMgc3RhdGljIGZyb21Mb29rdXAoXG4gIC8vICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgLy8gICBpZDogc3RyaW5nLFxuICAvLyAgIG9wdGlvbnM6IE5ldHdvcmtMb2FkQmFsYW5jZXJMb29rdXBPcHRpb25zLFxuICAvLyApOiBJTmV0d29ya0xvYWRCYWxhbmNlciB7XG4gIC8vICAgY29uc3QgcHJvcHMgPSBCYXNlTG9hZEJhbGFuY2VyLl9xdWVyeUNvbnRleHRQcm92aWRlcihzY29wZSwge1xuICAvLyAgICAgdXNlck9wdGlvbnM6IG9wdGlvbnMsXG4gIC8vICAgICBsb2FkQmFsYW5jZXJUeXBlOiBMb2FkQmFsYW5jZXJUeXBlLk5FVFdPUkssXG4gIC8vICAgfSk7XG5cbiAgLy8gICByZXR1cm4gbmV3IExvb2tlZFVwTmV0d29ya0xvYWRCYWxhbmNlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgLy8gfVxuXG4gIHB1YmxpYyBzdGF0aWMgZnJvbU5ldHdvcmtMb2FkQmFsYW5jZXJBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogTmV0d29ya0xvYWRCYWxhbmNlckF0dHJpYnV0ZXMsXG4gICk6IElOZXR3b3JrTG9hZEJhbGFuY2VyIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSU5ldHdvcmtMb2FkQmFsYW5jZXIge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucyA9IG5ldyBDb25uZWN0aW9ucyh7XG4gICAgICAgIHNlY3VyaXR5R3JvdXBzOiBhdHRycy5sb2FkQmFsYW5jZXJTZWN1cml0eUdyb3Vwcz8ubWFwKFxuICAgICAgICAgIChzZWN1cml0eUdyb3VwSWQsIGluZGV4KSA9PlxuICAgICAgICAgICAgU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKFxuICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICBgU2VjdXJpdHlHcm91cC0ke2luZGV4fWAsXG4gICAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBJZCxcbiAgICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICB9KTtcbiAgICAgIHB1YmxpYyByZWFkb25seSBsb2FkQmFsYW5jZXJBcm4gPSBhdHRycy5sb2FkQmFsYW5jZXJBcm47XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgdnBjPzogSVZwYyA9IGF0dHJzLnZwYztcbiAgICAgIHB1YmxpYyByZWFkb25seSBtZXRyaWNzOiBJTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3MgPVxuICAgICAgICBuZXcgTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3MoXG4gICAgICAgICAgdGhpcyxcbiAgICAgICAgICBwYXJzZUxvYWRCYWxhbmNlckZ1bGxOYW1lKGF0dHJzLmxvYWRCYWxhbmNlckFybiksXG4gICAgICAgICk7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM/OiBzdHJpbmdbXSA9XG4gICAgICAgIGF0dHJzLmxvYWRCYWxhbmNlclNlY3VyaXR5R3JvdXBzO1xuXG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGRhdGFBd3NMYi5EYXRhQXdzTGI7XG4gICAgICBjb25zdHJ1Y3Rvcihwcm9wczogQXdzQ29uc3RydWN0UHJvcHMpIHtcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgZGF0YUF3c0xiLkRhdGFBd3NMYih0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgICAgICBhcm46IGF0dHJzLmxvYWRCYWxhbmNlckFybixcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyBhZGRMaXN0ZW5lcihcbiAgICAgICAgbGlkOiBzdHJpbmcsXG4gICAgICAgIHByb3BzOiBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMsXG4gICAgICApOiBOZXR3b3JrTGlzdGVuZXIge1xuICAgICAgICByZXR1cm4gbmV3IE5ldHdvcmtMaXN0ZW5lcih0aGlzLCBsaWQsIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXI6IHRoaXMsXG4gICAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBwdWJsaWMgZ2V0IGxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAoYXR0cnMubG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkKSB7XG4gICAgICAgICAgcmV0dXJuIGF0dHJzLmxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS56b25lSWQ7XG4gICAgICAgIC8vIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBtYXgtbGVuXG4gICAgICAgIC8vIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgLy8gICBgJ2xvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCcgd2FzIG5vdCBwcm92aWRlZCB3aGVuIGNvbnN0cnVjdGluZyBOZXR3b3JrIExvYWQgQmFsYW5jZXIgJHt0aGlzLm5vZGUucGF0aH0gZnJvbSBhdHRyaWJ1dGVzYCxcbiAgICAgICAgLy8gKTtcbiAgICAgIH1cblxuICAgICAgcHVibGljIGdldCBsb2FkQmFsYW5jZXJEbnNOYW1lKCk6IHN0cmluZyB7XG4gICAgICAgIGlmIChhdHRycy5sb2FkQmFsYW5jZXJEbnNOYW1lKSB7XG4gICAgICAgICAgcmV0dXJuIGF0dHJzLmxvYWRCYWxhbmNlckRuc05hbWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuZG5zTmFtZTtcbiAgICAgICAgLy8gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG1heC1sZW5cbiAgICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAvLyAgIGAnbG9hZEJhbGFuY2VyRG5zTmFtZScgd2FzIG5vdCBwcm92aWRlZCB3aGVuIGNvbnN0cnVjdGluZyBOZXR3b3JrIExvYWQgQmFsYW5jZXIgJHt0aGlzLm5vZGUucGF0aH0gZnJvbSBhdHRyaWJ1dGVzYCxcbiAgICAgICAgLy8gKTtcbiAgICAgIH1cblxuICAgICAgcHVibGljIGdldCBsb2FkQmFsYW5jZXJWMk91dHB1dHMoKTogTG9hZEJhbGFuY2VyVjJPdXRwdXRzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBsb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQ6XG4gICAgICAgICAgICB0aGlzLmxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCxcbiAgICAgICAgICBsb2FkQmFsYW5jZXJEbnNOYW1lOiB0aGlzLmxvYWRCYWxhbmNlckRuc05hbWUsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgICAgIHJldHVybiB0aGlzLmxvYWRCYWxhbmNlclYyT3V0cHV0cztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydCh7IGVudmlyb25tZW50RnJvbUFybjogYXR0cnMubG9hZEJhbGFuY2VyQXJuIH0pO1xuICB9XG5cbiAgcHVibGljIHJlYWRvbmx5IG1ldHJpY3M6IElOZXR3b3JrTG9hZEJhbGFuY2VyTWV0cmljcztcbiAgcHVibGljIHJlYWRvbmx5IGlwQWRkcmVzc1R5cGU/OiBJcEFkZHJlc3NUeXBlO1xuICBwdWJsaWMgcmVhZG9ubHkgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuICBwcml2YXRlIHJlYWRvbmx5IGlzU2VjdXJpdHlHcm91cHNQcm9wZXJ0eURlZmluZWQ6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgX2VuZm9yY2VTZWN1cml0eUdyb3VwSW5ib3VuZFJ1bGVzT25Qcml2YXRlTGlua1RyYWZmaWM/OiBib29sZWFuO1xuICAvLyBUT0RPOiBNaXNzaW5nIGluIHByb3ZpZGVyLWF3c1xuICAvLyBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1wcm92aWRlci1hd3MvaXNzdWVzLzQwMzc5XG4gIC8vIHByaXZhdGUgZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFmdGVyIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBgSUNvbm5lY3RhYmxlYCAoc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9wdWxsLzI4NDk0KSwgdGhlIGRlZmF1bHRcbiAgICogdmFsdWUgZm9yIGBzZWN1cml0eUdyb3Vwc2DCoGlzIHNldCBieSB0aGUgYENvbm5lY3Rpb25zYMKgY29uc3RydWN0b3IgdG8gYW4gZW1wdHkgYXJyYXkuXG4gICAqIFRvIGtlZXAgYmFja3dhcmQgY29tcGF0aWJpbGl0eSAoYHNlY3VyaXR5R3JvdXBzYMKgaXMgYHVuZGVmaW5lZGDCoGlmIHRoZSByZWxhdGVkIHByb3BlcnR5IGlzIG5vdCBzcGVjaWZpZWQpXG4gICAqIGEgZ2V0dGVyIGhhcyBiZWVuIGFkZGVkLlxuICAgKi9cbiAgcHVibGljIGdldCBzZWN1cml0eUdyb3VwcygpOiBzdHJpbmdbXSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIHRoaXMuaXNTZWN1cml0eUdyb3Vwc1Byb3BlcnR5RGVmaW5lZCB8fFxuICAgICAgdGhpcy5jb25uZWN0aW9ucy5zZWN1cml0eUdyb3Vwcy5sZW5ndGhcbiAgICAgID8gdGhpcy5jb25uZWN0aW9ucy5zZWN1cml0eUdyb3Vwcy5tYXAoKHNnKSA9PiBzZy5zZWN1cml0eUdyb3VwSWQpXG4gICAgICA6IHVuZGVmaW5lZDtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBOZXR3b3JrTG9hZEJhbGFuY2VyUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzLCB7XG4gICAgICBsb2FkQmFsYW5jZXJUeXBlOiBcIm5ldHdvcmtcIixcbiAgICAgIHNlY3VyaXR5R3JvdXBzOiBMYXp5Lmxpc3RWYWx1ZSh7IHByb2R1Y2U6ICgpID0+IHRoaXMuc2VjdXJpdHlHcm91cHMgfSksXG4gICAgICBpcEFkZHJlc3NUeXBlOiBwcm9wcy5pcEFkZHJlc3NUeXBlLFxuICAgICAgZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYzogTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgdGhpcy5lbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljLFxuICAgICAgfSksXG4gICAgICAvLyBUT0RPOiBNaXNzaW5nIGluIHByb3ZpZGVyLWF3c1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy80MDM3OVxuICAgICAgLy8gZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdDpcbiAgICAgIC8vICAgcHJvcHMuZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdCA9PT0gdHJ1ZVxuICAgICAgLy8gICAgID8gXCJvblwiXG4gICAgICAvLyAgICAgOiBwcm9wcy5lbmFibGVQcmVmaXhGb3JJcHY2U291cmNlTmF0ID09PSBmYWxzZVxuICAgICAgLy8gICAgICAgPyBcIm9mZlwiXG4gICAgICAvLyAgICAgICA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIC8vIHRoaXMuZW5hYmxlUHJlZml4Rm9ySXB2NlNvdXJjZU5hdCA9IHByb3BzLmVuYWJsZVByZWZpeEZvcklwdjZTb3VyY2VOYXQ7XG4gICAgdGhpcy5tZXRyaWNzID0gbmV3IE5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzKFxuICAgICAgdGhpcyxcbiAgICAgIHRoaXMubG9hZEJhbGFuY2VyRnVsbE5hbWUsXG4gICAgKTtcbiAgICB0aGlzLmlzU2VjdXJpdHlHcm91cHNQcm9wZXJ0eURlZmluZWQgPSAhIXByb3BzLnNlY3VyaXR5R3JvdXBzO1xuICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBzLFxuICAgIH0pO1xuICAgIHRoaXMuaXBBZGRyZXNzVHlwZSA9IHByb3BzLmlwQWRkcmVzc1R5cGUgPz8gSXBBZGRyZXNzVHlwZS5JUFY0O1xuICAgIGlmIChwcm9wcy5jbGllbnRSb3V0aW5nUG9saWN5KSB7XG4gICAgICB0aGlzLnNldEF0dHJpYnV0ZShcbiAgICAgICAgXCJkbnNfcmVjb3JkLmNsaWVudF9yb3V0aW5nX3BvbGljeVwiLFxuICAgICAgICBwcm9wcy5jbGllbnRSb3V0aW5nUG9saWN5LFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKHByb3BzLnpvbmFsU2hpZnQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoXG4gICAgICAgIFwiem9uYWxfc2hpZnQuY29uZmlnLmVuYWJsZWRcIixcbiAgICAgICAgcHJvcHMuem9uYWxTaGlmdCA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYyA9XG4gICAgICBwcm9wcy5lbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljO1xuICB9XG5cbiAgcHVibGljIGdldCBlbmZvcmNlU2VjdXJpdHlHcm91cEluYm91bmRSdWxlc09uUHJpdmF0ZUxpbmtUcmFmZmljKCk6XG4gICAgfCBzdHJpbmdcbiAgICB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKFxuICAgICAgdGhpcy5fZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYyA9PT0gdW5kZWZpbmVkXG4gICAgKVxuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gdGhpcy5fZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpY1xuICAgICAgPyBcIm9uXCJcbiAgICAgIDogXCJvZmZcIjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBsaXN0ZW5lciB0byB0aGlzIGxvYWQgYmFsYW5jZXJcbiAgICpcbiAgICogQHJldHVybnMgVGhlIG5ld2x5IGNyZWF0ZWQgbGlzdGVuZXJcbiAgICovXG4gIHB1YmxpYyBhZGRMaXN0ZW5lcihcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMsXG4gICk6IE5ldHdvcmtMaXN0ZW5lciB7XG4gICAgLy8gVURQIGxpc3RlbmVyIHdpdGggZHVhbCBzdGFjayBOTEIgcmVxdWlyZXMgcHJlZml4IElQdjYgc291cmNlIE5BVCB0byBiZSBlbmFibGVkXG4gICAgaWYgKFxuICAgICAgKHByb3BzLnByb3RvY29sID09PSBMYlByb3RvY29sLlVEUCB8fFxuICAgICAgICBwcm9wcy5wcm90b2NvbCA9PT0gTGJQcm90b2NvbC5UQ1BfVURQKSAmJlxuICAgICAgKHRoaXMuaXBBZGRyZXNzVHlwZSA9PT0gSXBBZGRyZXNzVHlwZS5EVUFMX1NUQUNLIHx8XG4gICAgICAgIHRoaXMuaXBBZGRyZXNzVHlwZSA9PT0gSXBBZGRyZXNzVHlwZS5EVUFMX1NUQUNLX1dJVEhPVVRfUFVCTElDX0lQVjQpIC8vICYmXG4gICAgICAvLyB0aGlzLmVuYWJsZVByZWZpeEZvcklwdjZTb3VyY2VOYXQgIT09IHRydWVcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJUbyBhZGQgYSBsaXN0ZW5lciB3aXRoIFVEUCBwcm90b2NvbCB0byBhIGR1YWwgc3RhY2sgTkxCLCBtaXNzaW5nIGluIHRlcnJhZm9ybSBzZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9pc3N1ZXMvNDAzNzkuXCIsXG4gICAgICApO1xuICAgICAgLy8gdGhyb3cgbmV3IEVycm9yKFxuICAgICAgLy8gICBcIlRvIGFkZCBhIGxpc3RlbmVyIHdpdGggVURQIHByb3RvY29sIHRvIGEgZHVhbCBzdGFjayBOTEIsICdlbmFibGVQcmVmaXhGb3JJcHY2U291cmNlTmF0JyBtdXN0IGJlIHNldCB0byB0cnVlLlwiLFxuICAgICAgLy8gKTtcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBOZXR3b3JrTGlzdGVuZXIodGhpcywgaWQsIHtcbiAgICAgIGxvYWRCYWxhbmNlcjogdGhpcyxcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHNlY3VyaXR5IGdyb3VwIHRvIHRoaXMgbG9hZCBiYWxhbmNlclxuICAgKi9cbiAgcHVibGljIGFkZFNlY3VyaXR5R3JvdXAoc2VjdXJpdHlHcm91cDogSVNlY3VyaXR5R3JvdXApIHtcbiAgICB0aGlzLmNvbm5lY3Rpb25zLmFkZFNlY3VyaXR5R3JvdXAoc2VjdXJpdHlHcm91cCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgTmV0d29yayBMb2FkIEJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBgTmV0d29ya0xvYWRCYWxhbmNlci5tZXRyaWNzLmN1c3RvbWBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWMoXG4gICAgbWV0cmljTmFtZTogc3RyaW5nLFxuICAgIHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zLFxuICApOiBjbG91ZHdhdGNoLk1ldHJpYyB7XG4gICAgcmV0dXJuIG5ldyBjbG91ZHdhdGNoLk1ldHJpYyh7XG4gICAgICBuYW1lc3BhY2U6IFwiQVdTL05ldHdvcmtFTEJcIixcbiAgICAgIG1ldHJpY05hbWUsXG4gICAgICBkaW1lbnNpb25zTWFwOiB7IExvYWRCYWxhbmNlcjogdGhpcy5sb2FkQmFsYW5jZXJGdWxsTmFtZSB9LFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSkuYXR0YWNoVG8odGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBjb25jdXJyZW50IFRDUCBmbG93cyAob3IgY29ubmVjdGlvbnMpIGZyb20gY2xpZW50cyB0byB0YXJnZXRzLlxuICAgKlxuICAgKiBUaGlzIG1ldHJpYyBpbmNsdWRlcyBjb25uZWN0aW9ucyBpbiB0aGUgU1lOX1NFTlQgYW5kIEVTVEFCTElTSEVEIHN0YXRlcy5cbiAgICogVENQIGNvbm5lY3Rpb25zIGFyZSBub3QgdGVybWluYXRlZCBhdCB0aGUgbG9hZCBiYWxhbmNlciwgc28gYSBjbGllbnRcbiAgICogb3BlbmluZyBhIFRDUCBjb25uZWN0aW9uIHRvIGEgdGFyZ2V0IGNvdW50cyBhcyBhIHNpbmdsZSBmbG93LlxuICAgKlxuICAgKiBAZGVmYXVsdCBBdmVyYWdlIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy5hY3RpdmVGbG93Q291bnRgYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQWN0aXZlRmxvd0NvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy5hY3RpdmVGbG93Q291bnQocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgbG9hZCBiYWxhbmNlciBjYXBhY2l0eSB1bml0cyAoTENVKSB1c2VkIGJ5IHlvdXIgbG9hZCBiYWxhbmNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy5hY3RpdmVGbG93Q291bnRgYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgbWV0cmljQ29uc3VtZWRMQ1VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy5jb25zdW1lZExDVXMocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGFyZ2V0cyB0aGF0IGFyZSBjb25zaWRlcmVkIGhlYWx0aHkuXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGBgTmV0d29ya1RhcmdldEdyb3VwLm1ldHJpY0hlYWx0aHlIb3N0Q291bnRgYCBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgbWV0cmljSGVhbHRoeUhvc3RDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYyhcIkhlYWx0aHlIb3N0Q291bnRcIiwge1xuICAgICAgc3RhdGlzdGljOiBcIkF2ZXJhZ2VcIixcbiAgICAgIC4uLnByb3BzLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgdGFyZ2V0cyB0aGF0IGFyZSBjb25zaWRlcmVkIHVuaGVhbHRoeS5cbiAgICpcbiAgICogQGRlZmF1bHQgQXZlcmFnZSBvdmVyIDUgbWludXRlc1xuICAgKiBAZGVwcmVjYXRlZCB1c2UgYGBOZXR3b3JrVGFyZ2V0R3JvdXAubWV0cmljVW5IZWFsdGh5SG9zdENvdW50YGAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIG1ldHJpY1VuSGVhbHRoeUhvc3RDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm1ldHJpYyhcIlVuSGVhbHRoeUhvc3RDb3VudFwiLCB7XG4gICAgICBzdGF0aXN0aWM6IFwiQXZlcmFnZVwiLFxuICAgICAgLi4ucHJvcHMsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBuZXcgVENQIGZsb3dzIChvciBjb25uZWN0aW9ucykgZXN0YWJsaXNoZWQgZnJvbSBjbGllbnRzIHRvIHRhcmdldHMgaW4gdGhlIHRpbWUgcGVyaW9kLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICogQGRlcHJlY2F0ZWQgVXNlIGBgTmV0d29ya0xvYWRCYWxhbmNlci5tZXRyaWNzLm5ld0Zsb3dDb3VudGBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNOZXdGbG93Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNzLm5ld0Zsb3dDb3VudChwcm9wcyk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBwcm9jZXNzZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIsIGluY2x1ZGluZyBUQ1AvSVAgaGVhZGVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy5wcm9jZXNzZWRCeXRlc2BgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNQcm9jZXNzZWRCeXRlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucykge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY3MucHJvY2Vzc2VkQnl0ZXMocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgcmVzZXQgKFJTVCkgcGFja2V0cyBzZW50IGZyb20gYSBjbGllbnQgdG8gYSB0YXJnZXQuXG4gICAqXG4gICAqIFRoZXNlIHJlc2V0cyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSBjbGllbnQgYW5kIGZvcndhcmRlZCBieSB0aGUgbG9hZCBiYWxhbmNlci5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqIEBkZXByZWNhdGVkIFVzZSBgYE5ldHdvcmtMb2FkQmFsYW5jZXIubWV0cmljcy50Y3BDbGllbnRSZXNldENvdW50YGAgaW5zdGVhZFxuICAgKi9cbiAgcHVibGljIG1ldHJpY1RjcENsaWVudFJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNzLnRjcENsaWVudFJlc2V0Q291bnQocHJvcHMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgcmVzZXQgKFJTVCkgcGFja2V0cyBnZW5lcmF0ZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGBOZXR3b3JrTG9hZEJhbGFuY2VyLm1ldHJpY3MudGNwRWxiUmVzZXRDb3VudGBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNUY3BFbGJSZXNldENvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy50Y3BFbGJSZXNldENvdW50KHByb3BzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHJlc2V0IChSU1QpIHBhY2tldHMgc2VudCBmcm9tIGEgdGFyZ2V0IHRvIGEgY2xpZW50LlxuICAgKlxuICAgKiBUaGVzZSByZXNldHMgYXJlIGdlbmVyYXRlZCBieSB0aGUgdGFyZ2V0IGFuZCBmb3J3YXJkZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKiBAZGVwcmVjYXRlZCBVc2UgYGBOZXR3b3JrTG9hZEJhbGFuY2VyLm1ldHJpY3MudGNwVGFyZ2V0UmVzZXRDb3VudGBgIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBtZXRyaWNUY3BUYXJnZXRSZXNldENvdW50KHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljcy50Y3BUYXJnZXRSZXNldENvdW50KHByb3BzKTtcbiAgfVxufVxuXG4vKipcbiAqIENvbnRhaW5zIGFsbCBtZXRyaWNzIGZvciBhIE5ldHdvcmsgTG9hZCBCYWxhbmNlci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3Mge1xuICAvKipcbiAgICogUmV0dXJuIHRoZSBnaXZlbiBuYW1lZCBtZXRyaWMgZm9yIHRoaXMgTmV0d29yayBMb2FkIEJhbGFuY2VyXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIGN1c3RvbShcbiAgICBtZXRyaWNOYW1lOiBzdHJpbmcsXG4gICAgcHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMsXG4gICk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIGNvbmN1cnJlbnQgVENQIGZsb3dzIChvciBjb25uZWN0aW9ucykgZnJvbSBjbGllbnRzIHRvIHRhcmdldHMuXG4gICAqXG4gICAqIFRoaXMgbWV0cmljIGluY2x1ZGVzIGNvbm5lY3Rpb25zIGluIHRoZSBTWU5fU0VOVCBhbmQgRVNUQUJMSVNIRUQgc3RhdGVzLlxuICAgKiBUQ1AgY29ubmVjdGlvbnMgYXJlIG5vdCB0ZXJtaW5hdGVkIGF0IHRoZSBsb2FkIGJhbGFuY2VyLCBzbyBhIGNsaWVudFxuICAgKiBvcGVuaW5nIGEgVENQIGNvbm5lY3Rpb24gdG8gYSB0YXJnZXQgY291bnRzIGFzIGEgc2luZ2xlIGZsb3cuXG4gICAqXG4gICAqIEBkZWZhdWx0IEF2ZXJhZ2Ugb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIGFjdGl2ZUZsb3dDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgbnVtYmVyIG9mIGxvYWQgYmFsYW5jZXIgY2FwYWNpdHkgdW5pdHMgKExDVSkgdXNlZCBieSB5b3VyIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgY29uc3VtZWRMQ1VzKHByb3BzPzogY2xvdWR3YXRjaC5NZXRyaWNPcHRpb25zKTogY2xvdWR3YXRjaC5NZXRyaWM7XG5cbiAgLyoqXG4gICAqIFRoZSB0b3RhbCBudW1iZXIgb2YgbmV3IFRDUCBmbG93cyAob3IgY29ubmVjdGlvbnMpIGVzdGFibGlzaGVkIGZyb20gY2xpZW50cyB0byB0YXJnZXRzIGluIHRoZSB0aW1lIHBlcmlvZC5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBuZXdGbG93Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiBieXRlcyBwcm9jZXNzZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIsIGluY2x1ZGluZyBUQ1AvSVAgaGVhZGVycy5cbiAgICpcbiAgICogQGRlZmF1bHQgU3VtIG92ZXIgNSBtaW51dGVzXG4gICAqL1xuICBwcm9jZXNzZWRCeXRlcyhwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHJlc2V0IChSU1QpIHBhY2tldHMgc2VudCBmcm9tIGEgY2xpZW50IHRvIGEgdGFyZ2V0LlxuICAgKlxuICAgKiBUaGVzZSByZXNldHMgYXJlIGdlbmVyYXRlZCBieSB0aGUgY2xpZW50IGFuZCBmb3J3YXJkZWQgYnkgdGhlIGxvYWQgYmFsYW5jZXIuXG4gICAqXG4gICAqIEBkZWZhdWx0IFN1bSBvdmVyIDUgbWludXRlc1xuICAgKi9cbiAgdGNwQ2xpZW50UmVzZXRDb3VudChwcm9wcz86IGNsb3Vkd2F0Y2guTWV0cmljT3B0aW9ucyk6IGNsb3Vkd2F0Y2guTWV0cmljO1xuXG4gIC8qKlxuICAgKiBUaGUgdG90YWwgbnVtYmVyIG9mIHJlc2V0IChSU1QpIHBhY2tldHMgZ2VuZXJhdGVkIGJ5IHRoZSBsb2FkIGJhbGFuY2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIHRjcEVsYlJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcblxuICAvKipcbiAgICogVGhlIHRvdGFsIG51bWJlciBvZiByZXNldCAoUlNUKSBwYWNrZXRzIHNlbnQgZnJvbSBhIHRhcmdldCB0byBhIGNsaWVudC5cbiAgICpcbiAgICogVGhlc2UgcmVzZXRzIGFyZSBnZW5lcmF0ZWQgYnkgdGhlIHRhcmdldCBhbmQgZm9yd2FyZGVkIGJ5IHRoZSBsb2FkIGJhbGFuY2VyLlxuICAgKlxuICAgKiBAZGVmYXVsdCBTdW0gb3ZlciA1IG1pbnV0ZXNcbiAgICovXG4gIHRjcFRhcmdldFJlc2V0Q291bnQocHJvcHM/OiBjbG91ZHdhdGNoLk1ldHJpY09wdGlvbnMpOiBjbG91ZHdhdGNoLk1ldHJpYztcbn1cblxuLyoqXG4gKiBBIG5ldHdvcmsgbG9hZCBiYWxhbmNlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIElOZXR3b3JrTG9hZEJhbGFuY2VyXG4gIGV4dGVuZHMgSUxvYWRCYWxhbmNlclYyLFxuICAgIElWcGNFbmRwb2ludFNlcnZpY2VMb2FkQmFsYW5jZXIsXG4gICAgSUNvbm5lY3RhYmxlIHtcbiAgLyoqXG4gICAqIFRoZSBWUEMgdGhpcyBsb2FkIGJhbGFuY2VyIGhhcyBiZWVuIGNyZWF0ZWQgaW4gKGlmIGF2YWlsYWJsZSlcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGM7XG5cbiAgLyoqXG4gICAqIEFsbCBtZXRyaWNzIGF2YWlsYWJsZSBmb3IgdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICByZWFkb25seSBtZXRyaWNzOiBJTmV0d29ya0xvYWRCYWxhbmNlck1ldHJpY3M7XG5cbiAgLyoqXG4gICAqIFNlY3VyaXR5IGdyb3VwcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3Vwcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBJUCBhZGRyZXNzZXMgdG8gdXNlXG4gICAqXG4gICAqIEBkZWZhdWx0IElwQWRkcmVzc1R5cGUuSVBWNFxuICAgKi9cbiAgcmVhZG9ubHkgaXBBZGRyZXNzVHlwZT86IElwQWRkcmVzc1R5cGU7XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGV2YWx1YXRlIGluYm91bmQgc2VjdXJpdHkgZ3JvdXAgcnVsZXMgZm9yIHRyYWZmaWMgc2VudCB0byBhIE5ldHdvcmsgTG9hZCBCYWxhbmNlciB0aHJvdWdoIEFXUyBQcml2YXRlTGlua1xuICAgKlxuICAgKiBAZGVmYXVsdCBvblxuICAgKi9cbiAgcmVhZG9ubHkgZW5mb3JjZVNlY3VyaXR5R3JvdXBJbmJvdW5kUnVsZXNPblByaXZhdGVMaW5rVHJhZmZpYz86IHN0cmluZztcblxuICAvKipcbiAgICogQWRkIGEgbGlzdGVuZXIgdG8gdGhpcyBsb2FkIGJhbGFuY2VyXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBuZXdseSBjcmVhdGVkIGxpc3RlbmVyXG4gICAqL1xuICBhZGRMaXN0ZW5lcihpZDogc3RyaW5nLCBwcm9wczogQmFzZU5ldHdvcmtMaXN0ZW5lclByb3BzKTogTmV0d29ya0xpc3RlbmVyO1xufVxuXG4vLyBUT0RPOiBBZGQgR3JpZCBMb29rdXAgc3VwcG9ydFxuLy8gY2xhc3MgTG9va2VkVXBOZXR3b3JrTG9hZEJhbGFuY2VyXG4vLyAgIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuLy8gICBpbXBsZW1lbnRzIElOZXR3b3JrTG9hZEJhbGFuY2VyXG4vLyB7XG4vLyAgIHB1YmxpYyByZWFkb25seSBsb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQ6IHN0cmluZztcbi8vICAgcHVibGljIHJlYWRvbmx5IGxvYWRCYWxhbmNlckRuc05hbWU6IHN0cmluZztcbi8vICAgcHVibGljIHJlYWRvbmx5IGxvYWRCYWxhbmNlckFybjogc3RyaW5nO1xuLy8gICBwdWJsaWMgcmVhZG9ubHkgdnBjPzogSVZwYztcbi8vICAgcHVibGljIHJlYWRvbmx5IG1ldHJpY3M6IElOZXR3b3JrTG9hZEJhbGFuY2VyTWV0cmljcztcbi8vICAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzPzogc3RyaW5nW107XG4vLyAgIHB1YmxpYyByZWFkb25seSBpcEFkZHJlc3NUeXBlPzogSXBBZGRyZXNzVHlwZTtcbi8vICAgcHVibGljIHJlYWRvbmx5IGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcblxuLy8gICBjb25zdHJ1Y3Rvcihcbi8vICAgICBzY29wZTogQ29uc3RydWN0LFxuLy8gICAgIGlkOiBzdHJpbmcsXG4vLyAgICAgcHJvcHM6IGN4YXBpLkxvYWRCYWxhbmNlckNvbnRleHRSZXNwb25zZSxcbi8vICAgKSB7XG4vLyAgICAgc3VwZXIoc2NvcGUsIGlkLCB7IGVudmlyb25tZW50RnJvbUFybjogcHJvcHMubG9hZEJhbGFuY2VyQXJuIH0pO1xuXG4vLyAgICAgdGhpcy5sb2FkQmFsYW5jZXJBcm4gPSBwcm9wcy5sb2FkQmFsYW5jZXJBcm47XG4vLyAgICAgdGhpcy5sb2FkQmFsYW5jZXJDYW5vbmljYWxIb3N0ZWRab25lSWQgPVxuLy8gICAgICAgcHJvcHMubG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkO1xuLy8gICAgIHRoaXMubG9hZEJhbGFuY2VyRG5zTmFtZSA9IHByb3BzLmxvYWRCYWxhbmNlckRuc05hbWU7XG4vLyAgICAgdGhpcy5tZXRyaWNzID0gbmV3IE5ldHdvcmtMb2FkQmFsYW5jZXJNZXRyaWNzKFxuLy8gICAgICAgdGhpcyxcbi8vICAgICAgIHBhcnNlTG9hZEJhbGFuY2VyRnVsbE5hbWUocHJvcHMubG9hZEJhbGFuY2VyQXJuKSxcbi8vICAgICApO1xuLy8gICAgIHRoaXMuc2VjdXJpdHlHcm91cHMgPSBwcm9wcy5zZWN1cml0eUdyb3VwSWRzO1xuLy8gICAgIHRoaXMuY29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuLy8gICAgICAgc2VjdXJpdHlHcm91cHM6IHByb3BzLnNlY3VyaXR5R3JvdXBJZHMubWFwKChzZWN1cml0eUdyb3VwSWQsIGluZGV4KSA9PlxuLy8gICAgICAgICBTZWN1cml0eUdyb3VwLmZyb21Mb29rdXBCeUlkKFxuLy8gICAgICAgICAgIHRoaXMsXG4vLyAgICAgICAgICAgYFNlY3VyaXR5R3JvdXAtJHtpbmRleH1gLFxuLy8gICAgICAgICAgIHNlY3VyaXR5R3JvdXBJZCxcbi8vICAgICAgICAgKSxcbi8vICAgICAgICksXG4vLyAgICAgfSk7XG5cbi8vICAgICBpZiAocHJvcHMuaXBBZGRyZXNzVHlwZSA9PT0gY3hhcGkuTG9hZEJhbGFuY2VySXBBZGRyZXNzVHlwZS5JUFY0KSB7XG4vLyAgICAgICB0aGlzLmlwQWRkcmVzc1R5cGUgPSBJcEFkZHJlc3NUeXBlLklQVjQ7XG4vLyAgICAgfSBlbHNlIGlmIChcbi8vICAgICAgIHByb3BzLmlwQWRkcmVzc1R5cGUgPT09IGN4YXBpLkxvYWRCYWxhbmNlcklwQWRkcmVzc1R5cGUuRFVBTF9TVEFDS1xuLy8gICAgICkge1xuLy8gICAgICAgdGhpcy5pcEFkZHJlc3NUeXBlID0gSXBBZGRyZXNzVHlwZS5EVUFMX1NUQUNLO1xuLy8gICAgIH1cblxuLy8gICAgIHRoaXMudnBjID0gVnBjLmZyb21Mb29rdXAodGhpcywgXCJWcGNcIiwge1xuLy8gICAgICAgdnBjSWQ6IHByb3BzLnZwY0lkLFxuLy8gICAgIH0pO1xuLy8gICB9XG5cbi8vICAgcHVibGljIGFkZExpc3RlbmVyKFxuLy8gICAgIGxpZDogc3RyaW5nLFxuLy8gICAgIHByb3BzOiBCYXNlTmV0d29ya0xpc3RlbmVyUHJvcHMsXG4vLyAgICk6IE5ldHdvcmtMaXN0ZW5lciB7XG4vLyAgICAgcmV0dXJuIG5ldyBOZXR3b3JrTGlzdGVuZXIodGhpcywgbGlkLCB7XG4vLyAgICAgICBsb2FkQmFsYW5jZXI6IHRoaXMsXG4vLyAgICAgICAuLi5wcm9wcyxcbi8vICAgICB9KTtcbi8vICAgfVxuLy8gfVxuIl19
@@ -182,7 +182,7 @@ class NetworkTargetGroup extends base_target_group_1.TargetGroupBase {
182
182
  }
183
183
  exports.NetworkTargetGroup = NetworkTargetGroup;
184
184
  _a = JSII_RTTI_SYMBOL_1;
185
- NetworkTargetGroup[_a] = { fqn: "terraconstructs.aws.compute.NetworkTargetGroup", version: "0.2.2" };
185
+ NetworkTargetGroup[_a] = { fqn: "terraconstructs.aws.compute.NetworkTargetGroup", version: "0.2.4" };
186
186
  /**
187
187
  * An imported network target group
188
188
  */
@@ -62,7 +62,7 @@ class Peer {
62
62
  }
63
63
  exports.Peer = Peer;
64
64
  _a = JSII_RTTI_SYMBOL_1;
65
- Peer[_a] = { fqn: "terraconstructs.aws.compute.Peer", version: "0.2.2" };
65
+ Peer[_a] = { fqn: "terraconstructs.aws.compute.Peer", version: "0.2.4" };
66
66
  /**
67
67
  * A connection to and from a given IP range
68
68
  */