terraconstructs 0.1.10 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/.jsii +1297 -629
  2. package/lib/asset-staging.js +1 -1
  3. package/lib/aws/arn.js +4 -3
  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.js +1 -1
  7. package/lib/aws/aws-tags.js +2 -2
  8. package/lib/aws/cloudwatch/actions/appscaling.js +1 -1
  9. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  10. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  11. package/lib/aws/cloudwatch/actions/sns.js +1 -1
  12. package/lib/aws/cloudwatch/actions/ssm.js +2 -2
  13. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  14. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  15. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  16. package/lib/aws/cloudwatch/alarm.js +1 -1
  17. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  18. package/lib/aws/cloudwatch/dashboard.js +1 -1
  19. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  20. package/lib/aws/cloudwatch/graph.js +8 -8
  21. package/lib/aws/cloudwatch/layout.js +3 -3
  22. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  23. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  24. package/lib/aws/cloudwatch/log-group.js +1 -1
  25. package/lib/aws/cloudwatch/log-query.js +1 -1
  26. package/lib/aws/cloudwatch/log-stream.js +1 -1
  27. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  28. package/lib/aws/cloudwatch/metric.js +2 -2
  29. package/lib/aws/cloudwatch/pattern.js +3 -3
  30. package/lib/aws/cloudwatch/policy.js +1 -1
  31. package/lib/aws/cloudwatch/query-definition.js +2 -2
  32. package/lib/aws/cloudwatch/stats.js +1 -1
  33. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  34. package/lib/aws/cloudwatch/text.js +1 -1
  35. package/lib/aws/cloudwatch/variable.js +3 -3
  36. package/lib/aws/cloudwatch/widget.js +1 -1
  37. package/lib/aws/compute/access-log.js +4 -4
  38. package/lib/aws/compute/activity.js +1 -1
  39. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  40. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  41. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  42. package/lib/aws/compute/alb/application-listener.js +1 -1
  43. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  44. package/lib/aws/compute/alb/application-target-group.js +1 -1
  45. package/lib/aws/compute/alb/conditions.js +1 -1
  46. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  47. package/lib/aws/compute/alb/trust-store.js +1 -1
  48. package/lib/aws/compute/api-definition.js +3 -3
  49. package/lib/aws/compute/api-key.js +2 -2
  50. package/lib/aws/compute/architecture.js +1 -1
  51. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  52. package/lib/aws/compute/authorizer.js +1 -1
  53. package/lib/aws/compute/authorizers/identity-source.js +1 -1
  54. package/lib/aws/compute/authorizers/lambda.js +2 -2
  55. package/lib/aws/compute/base-path-mapping.js +1 -1
  56. package/lib/aws/compute/base-scalable-attribute.js +1 -1
  57. package/lib/aws/compute/bastion-host.js +1 -1
  58. package/lib/aws/compute/chain.js +1 -1
  59. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  60. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  61. package/lib/aws/compute/client-vpn-route.js +2 -2
  62. package/lib/aws/compute/code.js +8 -8
  63. package/lib/aws/compute/condition.js +1 -1
  64. package/lib/aws/compute/connections.js +1 -1
  65. package/lib/aws/compute/cors.js +1 -1
  66. package/lib/aws/compute/deployment.js +1 -1
  67. package/lib/aws/compute/domain-name.js +1 -1
  68. package/lib/aws/compute/event-invoke-config.js +1 -1
  69. package/lib/aws/compute/event-source-filter.js +2 -2
  70. package/lib/aws/compute/event-source-mapping.d.ts +10 -0
  71. package/lib/aws/compute/event-source-mapping.js +20 -23
  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.d.ts +10 -0
  76. package/lib/aws/compute/event-sources/sqs.js +3 -3
  77. package/lib/aws/compute/fields.js +4 -4
  78. package/lib/aws/compute/function-alias.js +1 -1
  79. package/lib/aws/compute/function-base.js +2 -2
  80. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  81. package/lib/aws/compute/function-destinations/function.js +1 -1
  82. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  83. package/lib/aws/compute/function-nodejs/function.js +1 -1
  84. package/lib/aws/compute/function-url.js +1 -1
  85. package/lib/aws/compute/function.js +3 -3
  86. package/lib/aws/compute/gateway-response.js +2 -2
  87. package/lib/aws/compute/handler.js +1 -1
  88. package/lib/aws/compute/instance-types.js +1 -1
  89. package/lib/aws/compute/instance.js +1 -1
  90. package/lib/aws/compute/integration.js +1 -1
  91. package/lib/aws/compute/integrations/aws.js +1 -1
  92. package/lib/aws/compute/integrations/http.js +1 -1
  93. package/lib/aws/compute/integrations/lambda.js +1 -1
  94. package/lib/aws/compute/integrations/mock.js +1 -1
  95. package/lib/aws/compute/integrations/stepfunctions.js +1 -1
  96. package/lib/aws/compute/ip-addresses.js +2 -2
  97. package/lib/aws/compute/ipam.js +1 -1
  98. package/lib/aws/compute/key-pair.js +1 -1
  99. package/lib/aws/compute/lambda-api.js +1 -1
  100. package/lib/aws/compute/launch-template.js +2 -2
  101. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  102. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  103. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  104. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  105. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  106. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  107. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  108. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  109. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  110. package/lib/aws/compute/load-balancer.js +3 -3
  111. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  112. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  113. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  114. package/lib/aws/compute/machine-image/common.js +1 -1
  115. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  116. package/lib/aws/compute/method.js +1 -1
  117. package/lib/aws/compute/model.js +3 -3
  118. package/lib/aws/compute/nat.js +5 -5
  119. package/lib/aws/compute/network-acl-types.js +2 -2
  120. package/lib/aws/compute/network-acl.js +3 -3
  121. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  122. package/lib/aws/compute/nlb/network-listener.js +1 -1
  123. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  124. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  125. package/lib/aws/compute/peer.js +1 -1
  126. package/lib/aws/compute/placement-group.js +1 -1
  127. package/lib/aws/compute/port.js +1 -1
  128. package/lib/aws/compute/prefix-list.js +1 -1
  129. package/lib/aws/compute/requestvalidator.js +1 -1
  130. package/lib/aws/compute/resource.js +3 -3
  131. package/lib/aws/compute/restapi.js +3 -3
  132. package/lib/aws/compute/route.js +8 -8
  133. package/lib/aws/compute/runtime.js +1 -1
  134. package/lib/aws/compute/scalable-target.js +1 -1
  135. package/lib/aws/compute/schedule.js +1 -1
  136. package/lib/aws/compute/security-group.js +1 -1
  137. package/lib/aws/compute/stage.js +2 -2
  138. package/lib/aws/compute/state-graph.js +1 -1
  139. package/lib/aws/compute/state-machine-fragment.js +1 -1
  140. package/lib/aws/compute/state-machine.js +4 -4
  141. package/lib/aws/compute/states/choice.js +1 -1
  142. package/lib/aws/compute/states/custom-state.js +1 -1
  143. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  144. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  145. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  146. package/lib/aws/compute/states/distributed-map.js +1 -1
  147. package/lib/aws/compute/states/fail.js +1 -1
  148. package/lib/aws/compute/states/map-base.js +1 -1
  149. package/lib/aws/compute/states/map.js +1 -1
  150. package/lib/aws/compute/states/parallel.js +1 -1
  151. package/lib/aws/compute/states/pass.js +2 -2
  152. package/lib/aws/compute/states/state.js +1 -1
  153. package/lib/aws/compute/states/succeed.js +1 -1
  154. package/lib/aws/compute/states/task-base.js +2 -2
  155. package/lib/aws/compute/states/task.js +1 -1
  156. package/lib/aws/compute/states/wait.js +2 -2
  157. package/lib/aws/compute/step-scaling-action.js +1 -1
  158. package/lib/aws/compute/step-scaling-policy.js +1 -1
  159. package/lib/aws/compute/stepfunctions-api.js +1 -1
  160. package/lib/aws/compute/subnet-v2.js +2 -2
  161. package/lib/aws/compute/subnet.js +1 -1
  162. package/lib/aws/compute/target-tracking-scaling-policy.js +1 -1
  163. package/lib/aws/compute/task-credentials.js +1 -1
  164. package/lib/aws/compute/task-input.js +1 -1
  165. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  166. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  167. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  168. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  169. package/lib/aws/compute/tasks/sqs/send-message.js +10 -13
  170. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  171. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  172. package/lib/aws/compute/types.js +1 -1
  173. package/lib/aws/compute/usage-plan.js +1 -1
  174. package/lib/aws/compute/user-data.js +3 -3
  175. package/lib/aws/compute/volume.js +2 -2
  176. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  177. package/lib/aws/compute/vpc-endpoint.js +6 -6
  178. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  179. package/lib/aws/compute/vpc-link.js +1 -1
  180. package/lib/aws/compute/vpc-v2-base.js +1 -1
  181. package/lib/aws/compute/vpc-v2.js +2 -2
  182. package/lib/aws/compute/vpc.js +4 -4
  183. package/lib/aws/compute/vpn.js +3 -3
  184. package/lib/aws/edge/certificate.js +1 -1
  185. package/lib/aws/edge/distribution.js +3 -3
  186. package/lib/aws/edge/dns-alias-record-targets.js +6 -6
  187. package/lib/aws/edge/dns-record.js +13 -13
  188. package/lib/aws/edge/dns-zone.js +1 -1
  189. package/lib/aws/edge/function.js +2 -2
  190. package/lib/aws/edge/key-value-store.js +4 -4
  191. package/lib/aws/edge/origin.js +3 -3
  192. package/lib/aws/edge/response-headers-policy.js +1 -1
  193. package/lib/aws/encryption/alias.js +1 -1
  194. package/lib/aws/encryption/key.js +1 -1
  195. package/lib/aws/encryption/via-service-principal.js +1 -1
  196. package/lib/aws/environment-aware.d.ts +41 -0
  197. package/lib/aws/environment-aware.js +3 -0
  198. package/lib/aws/iam/grant.d.ts +34 -0
  199. package/lib/aws/iam/grant.js +27 -6
  200. package/lib/aws/iam/group.js +1 -1
  201. package/lib/aws/iam/instance-profile.js +1 -1
  202. package/lib/aws/iam/managed-policy.js +1 -1
  203. package/lib/aws/iam/oidc-provider.js +1 -1
  204. package/lib/aws/iam/policy-document.js +1 -1
  205. package/lib/aws/iam/policy-statement.js +1 -1
  206. package/lib/aws/iam/policy.js +1 -1
  207. package/lib/aws/iam/principals.js +20 -20
  208. package/lib/aws/iam/role.js +1 -1
  209. package/lib/aws/iam/saml-provider.js +2 -2
  210. package/lib/aws/iam/unknown-principal.js +1 -1
  211. package/lib/aws/iam/user.js +1 -1
  212. package/lib/aws/index.d.ts +1 -0
  213. package/lib/aws/index.js +2 -1
  214. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  215. package/lib/aws/network/subnet-group.js +3 -3
  216. package/lib/aws/network/subnet.js +4 -4
  217. package/lib/aws/notify/archive.js +1 -1
  218. package/lib/aws/notify/connection.js +3 -3
  219. package/lib/aws/notify/event-bus.d.ts +1 -1
  220. package/lib/aws/notify/event-bus.js +4 -4
  221. package/lib/aws/notify/event-pattern.js +1 -1
  222. package/lib/aws/notify/index.d.ts +3 -1
  223. package/lib/aws/notify/index.js +5 -5
  224. package/lib/aws/notify/input.js +2 -2
  225. package/lib/aws/notify/kinesis-stream.js +1 -1
  226. package/lib/aws/notify/notification-rule.js +1 -1
  227. package/lib/aws/notify/policy.js +1 -1
  228. package/lib/aws/notify/queue-base.d.ts +241 -0
  229. package/lib/aws/notify/queue-base.js +161 -0
  230. package/lib/aws/notify/queue-policy.js +1 -1
  231. package/lib/aws/notify/queue.d.ts +157 -190
  232. package/lib/aws/notify/queue.js +239 -186
  233. package/lib/aws/notify/resource-policy.js +1 -1
  234. package/lib/aws/notify/rule.js +1 -1
  235. package/lib/aws/notify/schedule.js +1 -1
  236. package/lib/aws/notify/sqs-augmentations.generated.d.ts +3 -3
  237. package/lib/aws/notify/sqs-augmentations.generated.js +23 -26
  238. package/lib/aws/notify/sqs-grants.generated.d.ts +72 -0
  239. package/lib/aws/notify/sqs-grants.generated.js +139 -0
  240. package/lib/aws/notify/subscription-filter.js +1 -1
  241. package/lib/aws/notify/subscription.js +4 -4
  242. package/lib/aws/notify/subscriptions/email.js +1 -1
  243. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  244. package/lib/aws/notify/subscriptions/sms.js +1 -1
  245. package/lib/aws/notify/subscriptions/sqs.js +30 -27
  246. package/lib/aws/notify/subscriptions/subscription.d.ts +1 -1
  247. package/lib/aws/notify/subscriptions/subscription.js +1 -1
  248. package/lib/aws/notify/subscriptions/url.js +1 -1
  249. package/lib/aws/notify/targets/event-bus.d.ts +1 -1
  250. package/lib/aws/notify/targets/event-bus.js +2 -2
  251. package/lib/aws/notify/targets/function.js +1 -1
  252. package/lib/aws/notify/targets/log-group.js +2 -2
  253. package/lib/aws/notify/targets/sqs.js +12 -14
  254. package/lib/aws/notify/targets/state-machine.js +1 -1
  255. package/lib/aws/notify/topic-base.js +1 -1
  256. package/lib/aws/notify/topic.js +1 -1
  257. package/lib/aws/storage/assets/image-asset.js +3 -3
  258. package/lib/aws/storage/assets/s3.js +1 -1
  259. package/lib/aws/storage/auth-token.js +2 -2
  260. package/lib/aws/storage/billing.js +1 -1
  261. package/lib/aws/storage/bucket-notifications.js +1 -1
  262. package/lib/aws/storage/bucket-policy.js +1 -1
  263. package/lib/aws/storage/bucket-source.js +1 -1
  264. package/lib/aws/storage/bucket.js +2 -2
  265. package/lib/aws/storage/capacity.js +1 -1
  266. package/lib/aws/storage/ecr-repository.js +3 -3
  267. package/lib/aws/storage/encryption.js +1 -1
  268. package/lib/aws/storage/notification-targets/function.js +1 -1
  269. package/lib/aws/storage/notification-targets/queue.js +17 -21
  270. package/lib/aws/storage/origin-access-identity.js +1 -1
  271. package/lib/aws/storage/parameter.js +2 -2
  272. package/lib/aws/storage/table.js +3 -3
  273. package/lib/bundling.js +3 -3
  274. package/lib/construct-base.js +2 -2
  275. package/lib/duration.js +1 -1
  276. package/lib/errors.js +1 -1
  277. package/lib/expiration.js +1 -1
  278. package/lib/fs/ignore.js +4 -4
  279. package/lib/fs/index.js +1 -1
  280. package/lib/helpers-internal/index.d.ts +1 -0
  281. package/lib/helpers-internal/index.js +16 -1
  282. package/lib/helpers-internal/validate-all-props.d.ts +29 -0
  283. package/lib/helpers-internal/validate-all-props.js +23 -0
  284. package/lib/size.js +1 -1
  285. package/lib/stack-base.js +1 -1
  286. package/lib/terra-func.js +1 -1
  287. package/lib/time-zone.js +1 -1
  288. package/package.json +1 -1
  289. package/lib/aws/notify/queue-config.generated.d.ts +0 -98
  290. package/lib/aws/notify/queue-config.generated.js +0 -3
@@ -9,6 +9,7 @@ const arn_1 = require("../arn");
9
9
  const aws_construct_1 = require("../aws-construct");
10
10
  const aws_stack_1 = require("../aws-stack");
11
11
  const token_1 = require("../../token");
12
+ const iam = require("../iam");
12
13
  /**
13
14
  * Defines a Lambda EventSourceMapping resource.
14
15
  *
@@ -114,25 +115,21 @@ class EventSourceMapping extends aws_construct_1.AwsConstructBase {
114
115
  if (props.kafkaConsumerGroupId) {
115
116
  this.validateKafkaConsumerGroupIdOrThrow(props.kafkaConsumerGroupId);
116
117
  }
117
- // TODO: re-add KMS support
118
- // if (props.filterEncryption !== undefined && props.filters == undefined) {
119
- // throw new Error(
120
- // "filter criteria must be provided to enable setting filter criteria encryption",
121
- // );
122
- // }
123
- //
124
- // /**
125
- // * Grants the Lambda function permission to decrypt data using the specified KMS key.
126
- // * This step is necessary for setting up encrypted filter criteria.
127
- // *
128
- // * If the KMS key was created within this CloudFormation stack (via `new Key`), a Key policy
129
- // * will be attached to the key to allow the Lambda function to access it. However, if the
130
- // * Key is imported from an existing ARN (`Key.fromKeyArn`), no action will be taken.
131
- // */
132
- // if (props.filterEncryption !== undefined) {
133
- // const lambdaPrincipal = new iam.ServicePrincipal("lambda.amazonaws.com");
134
- // props.filterEncryption.grantDecrypt(lambdaPrincipal);
135
- // }
118
+ if (props.filterEncryption !== undefined && props.filters == undefined) {
119
+ throw new Error("filter criteria must be provided to enable setting filter criteria encryption");
120
+ }
121
+ /**
122
+ * Grants the Lambda function permission to decrypt data using the specified KMS key.
123
+ * This step is necessary for setting up encrypted filter criteria.
124
+ *
125
+ * If the KMS key was created within this CloudFormation stack (via `new Key`), a Key policy
126
+ * will be attached to the key to allow the Lambda function to access it. However, if the
127
+ * Key is imported from an existing ARN (`Key.fromKeyArn`), no action will be taken.
128
+ */
129
+ if (props.filterEncryption !== undefined) {
130
+ const lambdaPrincipal = new iam.ServicePrincipal("lambda.amazonaws.com");
131
+ props.filterEncryption.grantDecrypt(lambdaPrincipal);
132
+ }
136
133
  let destinationConfig;
137
134
  if (props.onFailure) {
138
135
  destinationConfig = {
@@ -168,7 +165,7 @@ class EventSourceMapping extends aws_construct_1.AwsConstructBase {
168
165
  maximumRecordAgeInSeconds: props.maxRecordAge?.toSeconds(),
169
166
  maximumRetryAttempts: props.retryAttempts,
170
167
  parallelizationFactor: props.parallelizationFactor,
171
- topics: props.kafkaTopic !== undefined ? [props.kafkaTopic] : undefined,
168
+ topics: props.kafkaTopic ? [props.kafkaTopic] : undefined,
172
169
  tumblingWindowInSeconds: props.tumblingWindow?.toSeconds(),
173
170
  scalingConfig: props.maxConcurrency
174
171
  ? { maximumConcurrency: props.maxConcurrency }
@@ -176,7 +173,7 @@ class EventSourceMapping extends aws_construct_1.AwsConstructBase {
176
173
  sourceAccessConfiguration: props.sourceAccessConfigurations,
177
174
  selfManagedEventSource,
178
175
  filterCriteria: props.filters ? { filter: props.filters } : undefined,
179
- // kmsKeyArn: props.filterEncryption?.keyArn, // TODO: re-add KMS support
176
+ kmsKeyArn: props.filterEncryption?.keyArn,
180
177
  selfManagedKafkaEventSourceConfig: props.kafkaBootstrapServers
181
178
  ? consumerGroupConfig
182
179
  : undefined,
@@ -206,7 +203,7 @@ class EventSourceMapping extends aws_construct_1.AwsConstructBase {
206
203
  }
207
204
  exports.EventSourceMapping = EventSourceMapping;
208
205
  _a = JSII_RTTI_SYMBOL_1;
209
- EventSourceMapping[_a] = { fqn: "terraconstructs.aws.compute.EventSourceMapping", version: "0.1.10" };
206
+ EventSourceMapping[_a] = { fqn: "terraconstructs.aws.compute.EventSourceMapping", version: "0.2.0" };
210
207
  /**
211
208
  * The type of authentication protocol or the VPC components for your event source's SourceAccessConfiguration
212
209
  * @see https://docs.aws.amazon.com/lambda/latest/dg/API_SourceAccessConfiguration.html#SSS-Type-SourceAccessConfiguration-Type
@@ -266,4 +263,4 @@ var StartingPosition;
266
263
  */
267
264
  StartingPosition["AT_TIMESTAMP"] = "AT_TIMESTAMP";
268
265
  })(StartingPosition || (exports.StartingPosition = StartingPosition = {}));
269
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc291cmNlLW1hcHBpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZXZlbnQtc291cmNlLW1hcHBpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBK0Q7QUFDL0QsK0JBQStCO0FBRS9CLGdDQUFtQztBQUNuQyxvREFJMEI7QUFDMUIsNENBQXdDO0FBSXhDLHVDQUEyQztBQWdQM0M7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBYSxrQkFDWCxTQUFRLGdDQUFnQjtJQUd4Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyx3QkFBd0IsQ0FDcEMsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLG9CQUE0QjtRQUU1QixNQUFNLHFCQUFxQixHQUFHLGtCQUFrQixDQUFDLFNBQVMsQ0FDeEQsS0FBSyxFQUNMLG9CQUFvQixDQUNyQixDQUFDO1FBRUYsTUFBTSxNQUFPLFNBQVEsZ0NBQWdCO1lBQXJDOztnQkFDa0IseUJBQW9CLEdBQUcsb0JBQW9CLENBQUM7Z0JBQzVDLDBCQUFxQixHQUFHLHFCQUFxQixDQUFDO2dCQUM5Qyw4QkFBeUIsR0FBRztvQkFDMUMsSUFBSSxFQUFFLG9CQUFvQjtpQkFDM0IsQ0FBQztZQUlKLENBQUM7WUFIQyxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLHlCQUF5QixDQUFDO1lBQ3hDLENBQUM7U0FDRjtRQUNELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFTyxNQUFNLENBQUMsU0FBUyxDQUN0QixLQUFnQixFQUNoQixvQkFBNEI7UUFFNUIsT0FBTyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLENBQUM7WUFDOUMsT0FBTyxFQUFFLFFBQVE7WUFDakIsUUFBUSxFQUFFLHNCQUFzQjtZQUNoQyxZQUFZLEVBQUUsb0JBQW9CO1lBQ2xDLFNBQVMsRUFB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LENBQUE7QUFDL0IsQ0FBQyxFQW5CVyxnQkFBZ0IsZ0NBQWhCLGdCQUFnQixRQW1CM0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYW1iZGFFdmVudFNvdXJjZU1hcHBpbmcgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0ICogYXMgY2RrdGYgZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXJuRm9ybWF0IH0gZnJvbSBcIi4uL2FyblwiO1xuaW1wb3J0IHtcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7IElFdmVudFNvdXJjZURscSB9IGZyb20gXCIuL2Z1bmN0aW9uXCI7XG5pbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tIFwiLi9mdW5jdGlvbi1iYXNlXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCIuLi8uLi9kdXJhdGlvblwiO1xuaW1wb3J0IHsgd2l0aFJlc29sdmVkIH0gZnJvbSBcIi4uLy4uL3Rva2VuXCI7XG4vLyBUT0RPOiByZS1hZGQgc3VwcG9ydCBmb3IgS01TXG4vLyBpbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uL2lhbVwiOyAvLyByZXF1aXJlZCB0byBncmFudCBLTVMgcGVybWlzc2lvbnNcbi8vIGltcG9ydCB7IElLZXkgfSBmcm9tIFwiLi4vZW5jcnlwdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U291cmNlTWFwcGluZ09wdGlvbnMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGV2ZW50IHNvdXJjZS4gQW55IHJlY29yZCBhZGRlZCB0b1xuICAgKiB0aGlzIHN0cmVhbSBjYW4gaW52b2tlIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm90IHNldCBpZiB1c2luZyBhIHNlbGYgbWFuYWdlZCBLYWZrYSBjbHVzdGVyLCB0aHJvd3MgYW4gZXJyb3Igb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxhcmdlc3QgbnVtYmVyIG9mIHJlY29yZHMgdGhhdCBBV1MgTGFtYmRhIHdpbGwgcmV0cmlldmUgZnJvbSB5b3VyIGV2ZW50XG4gICAqIHNvdXJjZSBhdCB0aGUgdGltZSBvZiBpbnZva2luZyB5b3VyIGZ1bmN0aW9uLiBZb3VyIGZ1bmN0aW9uIHJlY2VpdmVzIGFuXG4gICAqIGV2ZW50IHdpdGggYWxsIHRoZSByZXRyaWV2ZWQgcmVjb3Jkcy5cbiAgICpcbiAgICogVmFsaWQgUmFuZ2U6IE1pbmltdW0gdmFsdWUgb2YgMS4gTWF4aW11bSB2YWx1ZSBvZiAxMDAwMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbWF6b24gS2luZXNpcywgQW1hem9uIER5bmFtb0RCLCBhbmQgQW1hem9uIE1TSyBpcyAxMDAgcmVjb3Jkcy5cbiAgICogVGhlIGRlZmF1bHQgZm9yIEFtYXpvbiBTUVMgaXMgMTAgbWVzc2FnZXMuIEZvciBzdGFuZGFyZCBTUVMgcXVldWVzLCB0aGUgbWF4aW11bSBpcyAxMCwwMDAuIEZvciBGSUZPIFNRUyBxdWV1ZXMsIHRoZSBtYXhpbXVtIGlzIDEwLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciwgc3BsaXQgdGhlIGJhdGNoIGluIHR3byBhbmQgcmV0cnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBiaXNlY3RCYXRjaE9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbiBBbWF6b24gU1FTIHF1ZXVlIG9yIEFtYXpvbiBTTlMgdG9waWMgZGVzdGluYXRpb24gZm9yIGRpc2NhcmRlZCByZWNvcmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBkaXNjYXJkZWQgcmVjb3JkcyBhcmUgaWdub3JlZFxuICAgKi9cbiAgcmVhZG9ubHkgb25GYWlsdXJlPzogSUV2ZW50U291cmNlRGxxO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSB0aGUgZXZlbnQgc291cmNlIHVwb24gY3JlYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gaW4gdGhlIER5bmFtb0RCLCBLaW5lc2lzIG9yIE1TSyBzdHJlYW0gd2hlcmUgQVdTIExhbWJkYSBzaG91bGRcbiAgICogc3RhcnQgcmVhZGluZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va2luZXNpcy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRTaGFyZEl0ZXJhdG9yLmh0bWwjS2luZXNpcy1HZXRTaGFyZEl0ZXJhdG9yLXJlcXVlc3QtU2hhcmRJdGVyYXRvclR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzdGFydGluZyBwb3NpdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRpbmdQb3NpdGlvbj86IFN0YXJ0aW5nUG9zaXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGZyb20gd2hpY2ggdG8gc3RhcnQgcmVhZGluZywgaW4gVW5peCB0aW1lIHNlY29uZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdGltZXN0YW1wXG4gICAqL1xuICByZWFkb25seSBzdGFydGluZ1Bvc2l0aW9uVGltZXN0YW1wPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBmdW5jdGlvbnMgdG8gcmV0dXJuIHBhcnRpYWxseSBzdWNjZXNzZnVsIHJlc3BvbnNlcyBmb3IgYSBiYXRjaCBvZiByZWNvcmRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3dpdGgtZGRiLmh0bWwjc2VydmljZXMtZGRiLWJhdGNoZmFpbHVyZXJlcG9ydGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0byBnYXRoZXIgcmVjb3JkcyBiZWZvcmUgaW52b2tpbmcgdGhlIGZ1bmN0aW9uLlxuICAgKiBNYXhpbXVtIG9mIER1cmF0aW9uLm1pbnV0ZXMoNSlcbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uc2Vjb25kcygwKVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4QmF0Y2hpbmdXaW5kb3c/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gY29uY3VycmVuY3kgc2V0dGluZyBsaW1pdHMgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IGluc3RhbmNlcyBvZiB0aGUgZnVuY3Rpb24gdGhhdCBhbiBBbWF6b24gU1FTIGV2ZW50IHNvdXJjZSBjYW4gaW52b2tlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3dpdGgtc3FzLmh0bWwjZXZlbnRzLXNxcy1tYXgtY29uY3VycmVuY3lcbiAgICpcbiAgICogVmFsaWQgUmFuZ2U6IE1pbmltdW0gdmFsdWUgb2YgMi4gTWF4aW11bSB2YWx1ZSBvZiAxMDAwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHNwZWNpZmljIGxpbWl0LlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFnZSBvZiBhIHJlY29yZCB0aGF0IExhbWJkYSBzZW5kcyB0byBhIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nLlxuICAgKiBWYWxpZCBSYW5nZTpcbiAgICogKiBNaW5pbXVtIHZhbHVlIG9mIDYwIHNlY29uZHNcbiAgICogKiBNYXhpbXVtIHZhbHVlIG9mIDcgZGF5c1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGluZmluaXRlIG9yIHVudGlsIHRoZSByZWNvcmQgZXhwaXJlcy5cbiAgICovXG4gIHJlYWRvbmx5IG1heFJlY29yZEFnZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXMgdG8gcmV0cnkgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvci5cbiAgICogU2V0IHRvIGB1bmRlZmluZWRgIGlmIHlvdSB3YW50IGxhbWJkYSB0byBrZWVwIHJldHJ5aW5nIGluZmluaXRlbHkgb3IgdW50aWxcbiAgICogdGhlIHJlY29yZCBleHBpcmVzLlxuICAgKlxuICAgKiBWYWxpZCBSYW5nZTpcbiAgICogKiBNaW5pbXVtIHZhbHVlIG9mIDBcbiAgICogKiBNYXhpbXVtIHZhbHVlIG9mIDEwMDAwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gaW5maW5pdGUgb3IgdW50aWwgdGhlIHJlY29yZCBleHBpcmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV0cnlBdHRlbXB0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBiYXRjaGVzIHRvIHByb2Nlc3MgZnJvbSBlYWNoIHNoYXJkIGNvbmN1cnJlbnRseS5cbiAgICogVmFsaWQgUmFuZ2U6XG4gICAqICogTWluaW11bSB2YWx1ZSBvZiAxXG4gICAqICogTWF4aW11bSB2YWx1ZSBvZiAxMFxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBwYXJhbGxlbGl6YXRpb25GYWN0b3I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBLYWZrYSB0b3BpYy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB0b3BpY1xuICAgKi9cbiAgcmVhZG9ubHkga2Fma2FUb3BpYz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIHR1bWJsaW5nIHdpbmRvd3MgdG8gZ3JvdXAgcmVjb3JkcyBzZW50IHRvIER5bmFtb0RCIG9yIEtpbmVzaXNcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy93aXRoLWRkYi5odG1sI3NlcnZpY2VzLWRkYi13aW5kb3dzXG4gICAqXG4gICAqIFZhbGlkIFJhbmdlOiAwIC0gMTUgbWludXRlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHR1bWJsaW5nV2luZG93PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBob3N0IGFuZCBwb3J0IHBhaXJzIHRoYXQgYXJlIHRoZSBhZGRyZXNzZXMgb2YgdGhlIEthZmthIGJyb2tlcnMgaW4gYSBzZWxmIG1hbmFnZWQgXCJib290c3RyYXBcIiBLYWZrYSBjbHVzdGVyXG4gICAqIHRoYXQgYSBLYWZrYSBjbGllbnQgY29ubmVjdHMgdG8gaW5pdGlhbGx5IHRvIGJvb3RzdHJhcCBpdHNlbGYuXG4gICAqIFRoZXkgYXJlIGluIHRoZSBmb3JtYXQgYGFiYy5leGFtcGxlLmNvbTo5MDk2YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBrYWZrYUJvb3RzdHJhcFNlcnZlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBLYWZrYSBjb25zdW1lciBncm91cCB0byBqb2luLiBUaGUgY29uc3VtZXIgZ3JvdXAgSUQgbXVzdCBiZSB1bmlxdWUgYW1vbmcgYWxsIHlvdXIgS2Fma2EgZXZlbnQgc291cmNlcy4gQWZ0ZXIgY3JlYXRpbmcgYSBLYWZrYSBldmVudCBzb3VyY2UgbWFwcGluZyB3aXRoIHRoZSBjb25zdW1lciBncm91cCBJRCBzcGVjaWZpZWQsIHlvdSBjYW5ub3QgdXBkYXRlIHRoaXMgdmFsdWUuIFRoZSB2YWx1ZSBtdXN0IGhhdmUgYSBsZW5naHQgYmV0d2VlbiAxIGFuZCAyMDAgYW5kIGZ1bGwgdGhlIHBhdHRlcm4gJ1thLXpBLVowLTktXFwvKjpfKz0uQC1dKicuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0N1c3RvbWl6YWJsZSBjb25zdW1lciBncm91cCBJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvd2l0aC1tc2suaHRtbCNzZXJ2aWNlcy1tc2stY29uc3VtZXItZ3JvdXAtaWQpLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWxhbWJkYS1ldmVudHNvdXJjZW1hcHBpbmctYW1hem9ubWFuYWdlZGthZmthZXZlbnRzb3VyY2Vjb25maWcuaHRtbFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWxhbWJkYS1ldmVudHNvdXJjZW1hcHBpbmctc2VsZm1hbmFnZWRrYWZrYWV2ZW50c291cmNlY29uZmlnLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBrYWZrYUNvbnN1bWVyR3JvdXBJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWMgc2V0dGluZ3MgbGlrZSB0aGUgYXV0aGVudGljYXRpb24gcHJvdG9jb2wgb3IgdGhlIFZQQyBjb21wb25lbnRzIHRvIHNlY3VyZSBhY2Nlc3MgdG8geW91ciBldmVudCBzb3VyY2UuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtbGFtYmRhLWV2ZW50c291cmNlbWFwcGluZy1zb3VyY2VhY2Nlc3Njb25maWd1cmF0aW9uLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9ucz86IFNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogQWRkIGZpbHRlciBjcml0ZXJpYSB0byBFdmVudCBTb3VyY2UuXG4gICAqXG4gICAqIEEgc2V0IG9mIHVwIHRvIDUgZmlsdGVyLiBJZiBhbiBldmVudCBzYXRpc2ZpZXMgYXQgbGVhc3Qgb25lLCBMYW1iZGEgc2VuZHMgdGhlIGV2ZW50IHRvIHRoZSBmdW5jdGlvbiBvciBhZGRzIGl0IHRvIHRoZSBuZXh0IGJhdGNoLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2ludm9jYXRpb24tZXZlbnRmaWx0ZXJpbmcuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcnM/OiBBcnJheTx7IFtrZXk6IHN0cmluZ106IGFueSB9PjtcblxuICAvLyBUT0RPOiByZS1hZGQgS01TIHN1cHBvcnRcbiAgLy8gLyoqXG4gIC8vICAqIEFkZCBDdXN0b21lciBtYW5hZ2VkIEtNUyBrZXkgdG8gZW5jcnlwdCBGaWx0ZXIgQ3JpdGVyaWEuXG4gIC8vICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvaW52b2NhdGlvbi1ldmVudGZpbHRlcmluZy5odG1sXG4gIC8vICAqIEJ5IGRlZmF1bHQsIExhbWJkYSB3aWxsIGVuY3J5cHQgRmlsdGVyIENyaXRlcmlhIHVzaW5nIEFXUyBtYW5hZ2VkIGtleXNcbiAgLy8gICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9jb25jZXB0cy5odG1sI2F3cy1tYW5hZ2VkLWNta1xuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IGZpbHRlckVuY3J5cHRpb24/OiBJS2V5O1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBzdXBwb3J0IFMzIG9uZmFpbHVyZSBkZXN0aW5hdGlvbihPREYpLiBDdXJyZW50bHkgb25seSBNU0sgYW5kIHNlbGYgbWFuYWdlZCBrYWZrYSBldmVudCBzdXBwb3J0IFMzIE9ERlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydFMzT25GYWlsdXJlRGVzdGluYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlY2xhcmluZyBhIG5ldyBldmVudCBzb3VyY2UgbWFwcGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudFNvdXJjZU1hcHBpbmdQcm9wcyBleHRlbmRzIEV2ZW50U291cmNlTWFwcGluZ09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHRhcmdldCBBV1MgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBJRnVuY3Rpb247XG59XG5cbi8qKlxuICogT3V0cHV0cyB0byBleHBvc2UgdmlhIHRoZSBncmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U291cmNlTWFwcGluZ091dHB1dHMge1xuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBFdmVudFNvdXJjZU1hcHBpbmcuXG4gICAqL1xuICByZWFkb25seSB1dWlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBldmVudCBzb3VyY2UgbWFwcGluZyBmb3IgYSBsYW1iZGEgZnVuY3Rpb24uXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2ludm9jYXRpb24tZXZlbnRzb3VyY2VtYXBwaW5nLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRXZlbnRTb3VyY2VNYXBwaW5nIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBzdHJvbmdseSB0eXBlZCBvdXRwdXRzXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdPdXRwdXRzOiBFdmVudFNvdXJjZU1hcHBpbmdPdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBmb3IgdGhpcyBFdmVudFNvdXJjZU1hcHBpbmdcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRTb3VyY2VNYXBwaW5nSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZXZlbnQgc291cmNlIG1hcHBpbmcgKGkuZS4gYXJuOmF3czpsYW1iZGE6cmVnaW9uOmFjY291bnQtaWQ6ZXZlbnQtc291cmNlLW1hcHBpbmcvZXZlbnQtc291cmNlLW1hcHBpbmctaWQpXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgTGFtYmRhIEV2ZW50U291cmNlTWFwcGluZyByZXNvdXJjZS5cbiAqXG4gKiBVc3VhbGx5LCB5b3Ugd29uJ3QgbmVlZCB0byBkZWZpbmUgdGhlIG1hcHBpbmcgeW91cnNlbGYuIFRoaXMgd2lsbCB1c3VhbGx5IGJlIGRvbmUgYnlcbiAqIGV2ZW50IHNvdXJjZXMuIEZvciBleGFtcGxlLCB0byBhZGQgYW4gU1FTIGV2ZW50IHNvdXJjZSB0byBhIGZ1bmN0aW9uOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBub3RpZnksIGNvbXB1dGUgfSBmcm9tICd0ZXJyYWNvbnN0cnVjdHMnO1xuICpcbiAqIGRlY2xhcmUgY29uc3QgaGFuZGxlcjogY29tcHV0ZS5GdW5jdGlvbjtcbiAqIGRlY2xhcmUgY29uc3QgcXVldWU6IG5vdGlmeS5RdWV1ZTtcbiAqXG4gKiBoYW5kbGVyLmFkZEV2ZW50U291cmNlKG5ldyBjb21wdXRlLmV2ZW50c291cmNlcy5TcXNFdmVudFNvdXJjZShxdWV1ZSkpO1xuICogYGBgXG4gKlxuICogVGhlIGBTcXNFdmVudFNvdXJjZWAgY2xhc3Mgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgbWFwcGluZywgYW5kIHdpbGwgYWxzb1xuICogbW9kaWZ5IHRoZSBMYW1iZGEncyBleGVjdXRpb24gcm9sZSBzbyBpdCBjYW4gY29uc3VtZSBtZXNzYWdlcyBmcm9tIHRoZSBxdWV1ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50U291cmNlTWFwcGluZ1xuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJRXZlbnRTb3VyY2VNYXBwaW5nXG57XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXZlbnQgc291cmNlIGludG8gdGhpcyBzdGFjayBmcm9tIGl0cyBldmVudCBzb3VyY2UgaWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21FdmVudFNvdXJjZU1hcHBpbmdJZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZXZlbnRTb3VyY2VNYXBwaW5nSWQ6IHN0cmluZyxcbiAgKTogSUV2ZW50U291cmNlTWFwcGluZyB7XG4gICAgY29uc3QgZXZlbnRTb3VyY2VNYXBwaW5nQXJuID0gRXZlbnRTb3VyY2VNYXBwaW5nLmZvcm1hdEFybihcbiAgICAgIHNjb3BlLFxuICAgICAgZXZlbnRTb3VyY2VNYXBwaW5nSWQsXG4gICAgKTtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJRXZlbnRTb3VyY2VNYXBwaW5nIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdJZCA9IGV2ZW50U291cmNlTWFwcGluZ0lkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGV2ZW50U291cmNlTWFwcGluZ0FybiA9IGV2ZW50U291cmNlTWFwcGluZ0FybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdPdXRwdXRzID0ge1xuICAgICAgICB1dWlkOiBldmVudFNvdXJjZU1hcHBpbmdJZCxcbiAgICAgIH07XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW50U291cmNlTWFwcGluZ091dHB1dHM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JtYXRBcm4oXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBldmVudFNvdXJjZU1hcHBpbmdJZDogc3RyaW5nLFxuICApOiBzdHJpbmcge1xuICAgIHJldHVybiBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6IFwibGFtYmRhXCIsXG4gICAgICByZXNvdXJjZTogXCJldmVudC1zb3VyY2UtbWFwcGluZ1wiLFxuICAgICAgcmVzb3VyY2VOYW1lOiBldmVudFNvdXJjZU1hcHBpbmdJZCxcbiAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LkNPTE9OX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRTb3VyY2VNYXBwaW5nSWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50U291cmNlTWFwcGluZ0Fybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRTb3VyY2VNYXBwaW5nT3V0cHV0czogRXZlbnRTb3VyY2VNYXBwaW5nT3V0cHV0cztcbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50U291cmNlTWFwcGluZ091dHB1dHM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRXZlbnRTb3VyY2VNYXBwaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMuZXZlbnRTb3VyY2VBcm4gPT0gdW5kZWZpbmVkICYmXG4gICAgICBwcm9wcy5rYWZrYUJvb3RzdHJhcFNlcnZlcnMgPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiRWl0aGVyIGV2ZW50U291cmNlQXJuIG9yIGthZmthQm9vdHN0cmFwU2VydmVycyBtdXN0IGJlIHNldFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5ldmVudFNvdXJjZUFybiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwcm9wcy5rYWZrYUJvb3RzdHJhcFNlcnZlcnMgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImV2ZW50U291cmNlQXJuIGFuZCBrYWZrYUJvb3RzdHJhcFNlcnZlcnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5rYWZrYUJvb3RzdHJhcFNlcnZlcnMgJiZcbiAgICAgIHByb3BzLmthZmthQm9vdHN0cmFwU2VydmVycz8ubGVuZ3RoIDwgMVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwia2Fma2FCb290U3RyYXBTZXJ2ZXJzIG11c3Qgbm90IGJlIGVtcHR5IGlmIHNldFwiKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMubWF4QmF0Y2hpbmdXaW5kb3cgJiYgcHJvcHMubWF4QmF0Y2hpbmdXaW5kb3cudG9TZWNvbmRzKCkgPiAzMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYG1heEJhdGNoaW5nV2luZG93IGNhbm5vdCBiZSBvdmVyIDMwMCBzZWNvbmRzLCBnb3QgJHtwcm9wcy5tYXhCYXRjaGluZ1dpbmRvdy50b1NlY29uZHMoKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5tYXhDb25jdXJyZW5jeSAmJlxuICAgICAgIWNka3RmLlRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5tYXhDb25jdXJyZW5jeSkgJiZcbiAgICAgIChwcm9wcy5tYXhDb25jdXJyZW5jeSA8IDIgfHwgcHJvcHMubWF4Q29uY3VycmVuY3kgPiAxMDAwKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIm1heENvbmN1cnJlbmN5IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAxMDAwIGNvbmN1cnJlbnQgaW5zdGFuY2VzXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByb3BzLm1heFJlY29yZEFnZSAmJlxuICAgICAgKHByb3BzLm1heFJlY29yZEFnZS50b1NlY29uZHMoKSA8IDYwIHx8XG4gICAgICAgIHByb3BzLm1heFJlY29yZEFnZS50b0RheXMoeyBpbnRlZ3JhbDogZmFsc2UgfSkgPiA3KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIm1heFJlY29yZEFnZSBtdXN0IGJlIGJldHdlZW4gNjAgc2Vjb25kcyBhbmQgNyBkYXlzIGluY2x1c2l2ZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm9wcy5yZXRyeUF0dGVtcHRzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHdpdGhSZXNvbHZlZChwcm9wcy5yZXRyeUF0dGVtcHRzLCAoYXR0ZW1wdHMpID0+IHtcbiAgICAgICAgaWYgKGF0dGVtcHRzIDwgMCB8fCBhdHRlbXB0cyA+IDEwMDAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHJldHJ5QXR0ZW1wdHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEwMDAwIGluY2x1c2l2ZSwgZ290ICR7YXR0ZW1wdHN9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHByb3BzLnBhcmFsbGVsaXphdGlvbkZhY3RvciAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB3aXRoUmVzb2x2ZWQocHJvcHMucGFyYWxsZWxpemF0aW9uRmFjdG9yLCAoZmFjdG9yKSA9PiB7XG4gICAgICAgIGlmIChmYWN0b3IgPCAxIHx8IGZhY3RvciA+IDEwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHBhcmFsbGVsaXphdGlvbkZhY3RvciBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAgaW5jbHVzaXZlLCBnb3QgJHtmYWN0b3J9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGlmIChcbiAgICAgIHByb3BzLnR1bWJsaW5nV2luZG93ICYmXG4gICAgICAhY2RrdGYuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLnR1bWJsaW5nV2luZG93KSAmJlxuICAgICAgcHJvcHMudHVtYmxpbmdXaW5kb3cudG9TZWNvbmRzKCkgPiA5MDBcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHR1bWJsaW5nV2luZG93IGNhbm5vdCBiZSBvdmVyIDkwMCBzZWNvbmRzLCBnb3QgJHtwcm9wcy50dW1ibGluZ1dpbmRvdy50b1NlY29uZHMoKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5zdGFydGluZ1Bvc2l0aW9uID09PSBTdGFydGluZ1Bvc2l0aW9uLkFUX1RJTUVTVEFNUCAmJlxuICAgICAgIXByb3BzLnN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXBcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJzdGFydGluZ1Bvc2l0aW9uVGltZXN0YW1wIG11c3QgYmUgcHJvdmlkZWQgd2hlbiBzdGFydGluZ1Bvc2l0aW9uIGlzIEFUX1RJTUVTVEFNUFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5zdGFydGluZ1Bvc2l0aW9uICE9PSBTdGFydGluZ1Bvc2l0aW9uLkFUX1RJTUVTVEFNUCAmJlxuICAgICAgcHJvcHMuc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcInN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXAgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHN0YXJ0aW5nUG9zaXRpb24gaXMgQVRfVElNRVNUQU1QXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5rYWZrYUNvbnN1bWVyR3JvdXBJZCkge1xuICAgICAgdGhpcy52YWxpZGF0ZUthZmthQ29uc3VtZXJHcm91cElkT3JUaHJvdyhwcm9wcy5rYWZrYUNvbnN1bWVyR3JvdXBJZCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogcmUtYWRkIEtNUyBzdXBwb3J0XG4gICAgLy8gaWYgKHByb3BzLmZpbHRlckVuY3J5cHRpb24gIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5maWx0ZXJzID09IHVuZGVmaW5lZCkge1xuICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKFxuICAgIC8vICAgICBcImZpbHRlciBjcml0ZXJpYSBtdXN0IGJlIHByb3ZpZGVkIHRvIGVuYWJsZSBzZXR0aW5nIGZpbHRlciBjcml0ZXJpYSBlbmNyeXB0aW9uXCIsXG4gICAgLy8gICApO1xuICAgIC8vIH1cbiAgICAvL1xuICAgIC8vIC8qKlxuICAgIC8vICAqIEdyYW50cyB0aGUgTGFtYmRhIGZ1bmN0aW9uIHBlcm1pc3Npb24gdG8gZGVjcnlwdCBkYXRhIHVzaW5nIHRoZSBzcGVjaWZpZWQgS01TIGtleS5cbiAgICAvLyAgKiBUaGlzIHN0ZXAgaXMgbmVjZXNzYXJ5IGZvciBzZXR0aW5nIHVwIGVuY3J5cHRlZCBmaWx0ZXIgY3JpdGVyaWEuXG4gICAgLy8gICpcbiAgICAvLyAgKiBJZiB0aGUgS01TIGtleSB3YXMgY3JlYXRlZCB3aXRoaW4gdGhpcyBDbG91ZEZvcm1hdGlvbiBzdGFjayAodmlhIGBuZXcgS2V5YCksIGEgS2V5IHBvbGljeVxuICAgIC8vICAqIHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIGtleSB0byBhbGxvdyB0aGUgTGFtYmRhIGZ1bmN0aW9uIHRvIGFjY2VzcyBpdC4gSG93ZXZlciwgaWYgdGhlXG4gICAgLy8gICogS2V5IGlzIGltcG9ydGVkIGZyb20gYW4gZXhpc3RpbmcgQVJOIChgS2V5LmZyb21LZXlBcm5gKSwgbm8gYWN0aW9uIHdpbGwgYmUgdGFrZW4uXG4gICAgLy8gICovXG4gICAgLy8gaWYgKHByb3BzLmZpbHRlckVuY3J5cHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgIC8vICAgY29uc3QgbGFtYmRhUHJpbmNpcGFsID0gbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwibGFtYmRhLmFtYXpvbmF3cy5jb21cIik7XG4gICAgLy8gICBwcm9wcy5maWx0ZXJFbmNyeXB0aW9uLmdyYW50RGVjcnlwdChsYW1iZGFQcmluY2lwYWwpO1xuICAgIC8vIH1cblxuICAgIGxldCBkZXN0aW5hdGlvbkNvbmZpZzogYW55O1xuXG4gICAgaWYgKHByb3BzLm9uRmFpbHVyZSkge1xuICAgICAgZGVzdGluYXRpb25Db25maWcgPSB7XG4gICAgICAgIG9uRmFpbHVyZTogcHJvcHMub25GYWlsdXJlLmJpbmQodGhpcywgcHJvcHMudGFyZ2V0KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IHNlbGZNYW5hZ2VkRXZlbnRTb3VyY2U6XG4gICAgICB8IGxhbWJkYUV2ZW50U291cmNlTWFwcGluZy5MYW1iZGFFdmVudFNvdXJjZU1hcHBpbmdTZWxmTWFuYWdlZEV2ZW50U291cmNlXG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHMua2Fma2FCb290c3RyYXBTZXJ2ZXJzKSB7XG4gICAgICBzZWxmTWFuYWdlZEV2ZW50U291cmNlID0ge1xuICAgICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgICBLQUZLQV9CT09UU1RSQVBfU0VSVkVSUzogcHJvcHMua2Fma2FCb290c3RyYXBTZXJ2ZXJzLmpvaW4oXCIsXCIpLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25zdW1lckdyb3VwQ29uZmlnID0gcHJvcHMua2Fma2FDb25zdW1lckdyb3VwSWRcbiAgICAgID8geyBjb25zdW1lckdyb3VwSWQ6IHByb3BzLmthZmthQ29uc3VtZXJHcm91cElkIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgbGFtYmRhRXZlbnRTb3VyY2VNYXBwaW5nLkxhbWJkYUV2ZW50U291cmNlTWFwcGluZyhcbiAgICAgIHRoaXMsXG4gICAgICBcIlJlc291cmNlXCIsXG4gICAgICB7XG4gICAgICAgIGJhdGNoU2l6ZTogcHJvcHMuYmF0Y2hTaXplLFxuICAgICAgICBiaXNlY3RCYXRjaE9uRnVuY3Rpb25FcnJvcjogcHJvcHMuYmlzZWN0QmF0Y2hPbkVycm9yLFxuICAgICAgICBkZXN0aW5hdGlvbkNvbmZpZyxcbiAgICAgICAgZW5hYmxlZDogcHJvcHMuZW5hYmxlZCxcbiAgICAgICAgZXZlbnRTb3VyY2VBcm46IHByb3BzLmV2ZW50U291cmNlQXJuLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHByb3BzLnRhcmdldC5mdW5jdGlvbk5hbWUsXG4gICAgICAgIHN0YXJ0aW5nUG9zaXRpb246IHByb3BzLnN0YXJ0aW5nUG9zaXRpb24sXG4gICAgICAgIHN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXA6IHByb3BzLnN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXBcbiAgICAgICAgICA/IG5ldyBEYXRlKHByb3BzLnN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXAgKiAxMDAwKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGZ1bmN0aW9uUmVzcG9uc2VUeXBlczogcHJvcHMucmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXNcbiAgICAgICAgICA/IFtcIlJlcG9ydEJhdGNoSXRlbUZhaWx1cmVzXCJdXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIG1heGltdW1CYXRjaGluZ1dpbmRvd0luU2Vjb25kczogcHJvcHMubWF4QmF0Y2hpbmdXaW5kb3c/LnRvU2Vjb25kcygpLFxuICAgICAgICBtYXhpbXVtUmVjb3JkQWdlSW5TZWNvbmRzOiBwcm9wcy5tYXhSZWNvcmRBZ2U/LnRvU2Vjb25kcygpLFxuICAgICAgICBtYXhpbXVtUmV0cnlBdHRlbXB0czogcHJvcHMucmV0cnlBdHRlbXB0cyxcbiAgICAgICAgcGFyYWxsZWxpemF0aW9uRmFjdG9yOiBwcm9wcy5wYXJhbGxlbGl6YXRpb25GYWN0b3IsXG4gICAgICAgIHRvcGljczogcHJvcHMua2Fma2FUb3BpYyAhPT0gdW5kZWZpbmVkID8gW3Byb3BzLmthZmthVG9waWNdIDogdW5kZWZpbmVkLFxuICAgICAgICB0dW1ibGluZ1dpbmRvd0luU2Vjb25kczogcHJvcHMudHVtYmxpbmdXaW5kb3c/LnRvU2Vjb25kcygpLFxuICAgICAgICBzY2FsaW5nQ29uZmlnOiBwcm9wcy5tYXhDb25jdXJyZW5jeVxuICAgICAgICAgID8geyBtYXhpbXVtQ29uY3VycmVuY3k6IHByb3BzLm1heENvbmN1cnJlbmN5IH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgc291cmNlQWNjZXNzQ29uZmlndXJhdGlvbjogcHJvcHMuc291cmNlQWNjZXNzQ29uZmlndXJhdGlvbnMsXG4gICAgICAgIHNlbGZNYW5hZ2VkRXZlbnRTb3VyY2UsXG4gICAgICAgIGZpbHRlckNyaXRlcmlhOiBwcm9wcy5maWx0ZXJzID8geyBmaWx0ZXI6IHByb3BzLmZpbHRlcnMgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgLy8ga21zS2V5QXJuOiBwcm9wcy5maWx0ZXJFbmNyeXB0aW9uPy5rZXlBcm4sIC8vIFRPRE86IHJlLWFkZCBLTVMgc3VwcG9ydFxuICAgICAgICBzZWxmTWFuYWdlZEthZmthRXZlbnRTb3VyY2VDb25maWc6IHByb3BzLmthZmthQm9vdHN0cmFwU2VydmVyc1xuICAgICAgICAgID8gY29uc3VtZXJHcm91cENvbmZpZ1xuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBhbWF6b25NYW5hZ2VkS2Fma2FFdmVudFNvdXJjZUNvbmZpZzogcHJvcHMuZXZlbnRTb3VyY2VBcm5cbiAgICAgICAgICA/IGNvbnN1bWVyR3JvdXBDb25maWdcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLmV2ZW50U291cmNlTWFwcGluZ0lkID0gcmVzb3VyY2UudXVpZDtcbiAgICB0aGlzLmV2ZW50U291cmNlTWFwcGluZ0FybiA9IEV2ZW50U291cmNlTWFwcGluZy5mb3JtYXRBcm4oXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5ldmVudFNvdXJjZU1hcHBpbmdJZCxcbiAgICApO1xuXG4gICAgdGhpcy5ldmVudFNvdXJjZU1hcHBpbmdPdXRwdXRzID0ge1xuICAgICAgdXVpZDogdGhpcy5ldmVudFNvdXJjZU1hcHBpbmdJZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUthZmthQ29uc3VtZXJHcm91cElkT3JUaHJvdyhrYWZrYUNvbnN1bWVyR3JvdXBJZDogc3RyaW5nKSB7XG4gICAgaWYgKGNka3RmLlRva2VuLmlzVW5yZXNvbHZlZChrYWZrYUNvbnN1bWVyR3JvdXBJZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2Fma2FDb25zdW1lckdyb3VwSWQubGVuZ3RoID4gMjAwIHx8IGthZmthQ29uc3VtZXJHcm91cElkLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJrYWZrYUNvbnN1bWVyR3JvdXBJZCBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGJldHdlZW4gMSBhbmQgMjAwIGNoYXJhY3RlcnNcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKC9bYS16QS1aMC05LVxcLyo6Xys9LkAtXSovKTtcbiAgICBjb25zdCBwYXR0ZXJuTWF0Y2ggPSByZWdleC5leGVjKGthZmthQ29uc3VtZXJHcm91cElkKTtcbiAgICBpZiAocGF0dGVybk1hdGNoID09PSBudWxsIHx8IHBhdHRlcm5NYXRjaFswXSAhPT0ga2Fma2FDb25zdW1lckdyb3VwSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ2thZmthQ29uc3VtZXJHcm91cElkIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycy4gQWxsb3dlZCB2YWx1ZXMgYXJlIFwiW2EtekEtWjAtOS0vKjpfKz0uQC1dXCInLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCBvciB0aGUgVlBDIGNvbXBvbmVudHMgZm9yIHlvdXIgZXZlbnQgc291cmNlJ3MgU291cmNlQWNjZXNzQ29uZmlndXJhdGlvblxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy9BUElfU291cmNlQWNjZXNzQ29uZmlndXJhdGlvbi5odG1sI1NTUy1UeXBlLVNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb24tVHlwZVxuICovXG5leHBvcnQgZW51bSBTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uVHlwZSB7XG4gIC8qKlxuICAgKiAoTVEpIFRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IHRoYXQgc3RvcmVzIHlvdXIgYnJva2VyIGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgQkFTSUNfQVVUSCA9IFwiQkFTSUNfQVVUSFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0cyBhc3NvY2lhdGVkIHdpdGggeW91ciBWUEMuIExhbWJkYSBjb25uZWN0cyB0byB0aGVzZSBzdWJuZXRzIHRvIGZldGNoIGRhdGEgZnJvbSB5b3VyIFNlbGYtTWFuYWdlZCBBcGFjaGUgS2Fma2EgY2x1c3Rlci5cbiAgICovXG4gIFZQQ19TVUJORVQgPSBcIlZQQ19TVUJORVRcIixcblxuICAvKipcbiAgICogVGhlIFZQQyBzZWN1cml0eSBncm91cCB1c2VkIHRvIG1hbmFnZSBhY2Nlc3MgdG8geW91ciBTZWxmLU1hbmFnZWQgQXBhY2hlIEthZmthIGJyb2tlcnMuXG4gICAqL1xuICBWUENfU0VDVVJJVFlfR1JPVVAgPSBcIlZQQ19TRUNVUklUWV9HUk9VUFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0cyBNYW5hZ2VyIEFSTiBvZiB5b3VyIHNlY3JldCBrZXkgdXNlZCBmb3IgU0FTTCBTQ1JBTS0yNTYgYXV0aGVudGljYXRpb24gb2YgeW91ciBTZWxmLU1hbmFnZWQgQXBhY2hlIEthZmthIGJyb2tlcnMuXG4gICAqL1xuICBTQVNMX1NDUkFNXzI1Nl9BVVRIID0gXCJTQVNMX1NDUkFNXzI1Nl9BVVRIXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBTZWNyZXRzIE1hbmFnZXIgQVJOIG9mIHlvdXIgc2VjcmV0IGtleSB1c2VkIGZvciBTQVNMIFNDUkFNLTUxMiBhdXRoZW50aWNhdGlvbiBvZiB5b3VyIFNlbGYtTWFuYWdlZCBBcGFjaGUgS2Fma2EgYnJva2Vycy5cbiAgICovXG4gIFNBU0xfU0NSQU1fNTEyX0FVVEggPSBcIlNBU0xfU0NSQU1fNTEyX0FVVEhcIixcblxuICAvKipcbiAgICogVGhlIFNlY3JldHMgTWFuYWdlciBBUk4gb2YgeW91ciBzZWNyZXQga2V5IGNvbnRhaW5pbmcgdGhlIGNlcnRpZmljYXRlIGNoYWluIChYLjUwOSBQRU0pLCBwcml2YXRlIGtleSAoUEtDUyM4IFBFTSksXG4gICAqIGFuZCBwcml2YXRlIGtleSBwYXNzd29yZCAob3B0aW9uYWwpIHVzZWQgZm9yIG11dHVhbCBUTFMgYXV0aGVudGljYXRpb24gb2YgeW91ciBNU0svQXBhY2hlIEthZmthIGJyb2tlcnMuXG4gICAqL1xuICBDTElFTlRfQ0VSVElGSUNBVEVfVExTX0FVVEggPSBcIkNMSUVOVF9DRVJUSUZJQ0FURV9UTFNfQVVUSFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0cyBNYW5hZ2VyIEFSTiBvZiB5b3VyIHNlY3JldCBrZXkgY29udGFpbmluZyB0aGUgcm9vdCBDQSBjZXJ0aWZpY2F0ZSAoWC41MDkgUEVNKSB1c2VkIGZvciBUTFMgZW5jcnlwdGlvbiBvZiB5b3VyIEFwYWNoZSBLYWZrYSBicm9rZXJzLlxuICAgKi9cbiAgU0VSVkVSX1JPT1RfQ0FfQ0VSVElGSUNBVEUgPSBcIlNFUlZFUl9ST09UX0NBX0NFUlRJRklDQVRFXCIsXG59XG5cbi8qKlxuICogU3BlY2lmaWMgc2V0dGluZ3MgbGlrZSB0aGUgYXV0aGVudGljYXRpb24gcHJvdG9jb2wgb3IgdGhlIFZQQyBjb21wb25lbnRzIHRvIHNlY3VyZSBhY2Nlc3MgdG8geW91ciBldmVudCBzb3VyY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlQWNjZXNzQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCBvciB0aGUgVlBDIGNvbXBvbmVudHMgZm9yIHlvdXIgZXZlbnQgc291cmNlLiBGb3IgZXhhbXBsZTogXCJTQVNMX1NDUkFNXzUxMl9BVVRIXCIuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uVHlwZTtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgeW91ciBjaG9zZW4gY29uZmlndXJhdGlvbiBpbiB0eXBlLlxuICAgKiBGb3IgZXhhbXBsZTogXCJVUklcIjogXCJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMTowMTIzNDU2Nzg5MDpzZWNyZXQ6TXlCcm9rZXJTZWNyZXROYW1lXCIuXG4gICAqIFRoZSBleGFjdCBzdHJpbmcgZGVwZW5kcyBvbiB0aGUgdHlwZS5cbiAgICogQHNlZSBTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdXJpOiBzdHJpbmc7XG59XG4vKipcbiAqIFRoZSBwb3NpdGlvbiBpbiB0aGUgRHluYW1vREIsIEtpbmVzaXMgb3IgTVNLIHN0cmVhbSB3aGVyZSBBV1MgTGFtYmRhIHNob3VsZCBzdGFydFxuICogcmVhZGluZy5cbiAqL1xuZXhwb3J0IGVudW0gU3RhcnRpbmdQb3NpdGlvbiB7XG4gIC8qKlxuICAgKiBTdGFydCByZWFkaW5nIGF0IHRoZSBsYXN0IHVudHJpbW1lZCByZWNvcmQgaW4gdGhlIHNoYXJkIGluIHRoZSBzeXN0ZW0sXG4gICAqIHdoaWNoIGlzIHRoZSBvbGRlc3QgZGF0YSByZWNvcmQgaW4gdGhlIHNoYXJkLlxuICAgKi9cbiAgVFJJTV9IT1JJWk9OID0gXCJUUklNX0hPUklaT05cIixcblxuICAvKipcbiAgICogU3RhcnQgcmVhZGluZyBqdXN0IGFmdGVyIHRoZSBtb3N0IHJlY2VudCByZWNvcmQgaW4gdGhlIHNoYXJkLCBzbyB0aGF0IHlvdVxuICAgKiBhbHdheXMgcmVhZCB0aGUgbW9zdCByZWNlbnQgZGF0YSBpbiB0aGUgc2hhcmRcbiAgICovXG4gIExBVEVTVCA9IFwiTEFURVNUXCIsXG5cbiAgLyoqXG4gICAqIFN0YXJ0IHJlYWRpbmcgZnJvbSBhIHBvc2l0aW9uIGRlZmluZWQgYnkgYSB0aW1lIHN0YW1wLlxuICAgKiBPbmx5IHN1cHBvcnRlZCBmb3IgQW1hem9uIEtpbmVzaXMgc3RyZWFtcywgb3RoZXJ3aXNlIGFuIGVycm9yIHdpbGwgb2NjdXIuXG4gICAqIElmIHN1cHBsaWVkLCBgc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcGAgbXVzdCBhbHNvIGJlIHNldC5cbiAgICovXG4gIEFUX1RJTUVTVEFNUCA9IFwiQVRfVElNRVNUQU1QXCIsXG59XG4iXX0=
266
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc291cmNlLW1hcHBpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZXZlbnQtc291cmNlLW1hcHBpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBK0Q7QUFDL0QsK0JBQStCO0FBRS9CLGdDQUFtQztBQUNuQyxvREFJMEI7QUFDMUIsNENBQXdDO0FBSXhDLHVDQUEyQztBQUUzQyw4QkFBOEI7QUE0TzlCOzs7Ozs7Ozs7Ozs7Ozs7OztHQWlCRztBQUNILE1BQWEsa0JBQ1gsU0FBUSxnQ0FBZ0I7SUFHeEI7O09BRUc7SUFDSSxNQUFNLENBQUMsd0JBQXdCLENBQ3BDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixvQkFBNEI7UUFFNUIsTUFBTSxxQkFBcUIsR0FBRyxrQkFBa0IsQ0FBQyxTQUFTLENBQ3hELEtBQUssRUFDTCxvQkFBb0IsQ0FDckIsQ0FBQztRQUVGLE1BQU0sTUFBTyxTQUFRLGdDQUFnQjtZQUFyQzs7Z0JBQ2tCLHlCQUFvQixHQUFHLG9CQUFvQixDQUFDO2dCQUM1QywwQkFBcUIsR0FBRyxxQkFBcUIsQ0FBQztnQkFDOUMsOEJBQXlCLEdBQUc7b0JBQzFDLElBQUksRUFBRSxvQkFBb0I7aUJBQzNCLENBQUM7WUFJSixDQUFDO1lBSEMsSUFBVyxPQUFPO2dCQUNoQixPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQztZQUN4QyxDQUFDO1NBQ0Y7UUFDRCxPQUFPLElBQUksTUFBTSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRU8sTUFBTSxDQUFDLFNBQVMsQ0FDdEIsS0FBZ0IsRUFDaEIsb0JBQTRCO1FBRTVCLE9BQU8sb0JBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzlDLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsWUFBWSxFQUFFLG9CQUFvQjtZ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QkQ7OztHQUdHO0FBQ0gsSUFBWSxnQkFtQlg7QUFuQkQsV0FBWSxnQkFBZ0I7SUFDMUI7OztPQUdHO0lBQ0gsaURBQTZCLENBQUE7SUFFN0I7OztPQUdHO0lBQ0gscUNBQWlCLENBQUE7SUFFakI7Ozs7T0FJRztJQUNILGlEQUE2QixDQUFBO0FBQy9CLENBQUMsRUFuQlcsZ0JBQWdCLGdDQUFoQixnQkFBZ0IsUUFtQjNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGFtYmRhRXZlbnRTb3VyY2VNYXBwaW5nIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFybkZvcm1hdCB9IGZyb20gXCIuLi9hcm5cIjtcbmltcG9ydCB7XG4gIElBd3NDb25zdHJ1Y3QsXG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vYXdzLXN0YWNrXCI7XG5pbXBvcnQgeyBJRXZlbnRTb3VyY2VEbHEgfSBmcm9tIFwiLi9mdW5jdGlvblwiO1xuaW1wb3J0IHsgSUZ1bmN0aW9uIH0gZnJvbSBcIi4vZnVuY3Rpb24tYmFzZVwiO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiLi4vLi4vZHVyYXRpb25cIjtcbmltcG9ydCB7IHdpdGhSZXNvbHZlZCB9IGZyb20gXCIuLi8uLi90b2tlblwiO1xuaW1wb3J0IHsgSUtleSB9IGZyb20gXCIuLi9lbmNyeXB0aW9uXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uL2lhbVwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U291cmNlTWFwcGluZ09wdGlvbnMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGV2ZW50IHNvdXJjZS4gQW55IHJlY29yZCBhZGRlZCB0b1xuICAgKiB0aGlzIHN0cmVhbSBjYW4gaW52b2tlIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm90IHNldCBpZiB1c2luZyBhIHNlbGYgbWFuYWdlZCBLYWZrYSBjbHVzdGVyLCB0aHJvd3MgYW4gZXJyb3Igb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxhcmdlc3QgbnVtYmVyIG9mIHJlY29yZHMgdGhhdCBBV1MgTGFtYmRhIHdpbGwgcmV0cmlldmUgZnJvbSB5b3VyIGV2ZW50XG4gICAqIHNvdXJjZSBhdCB0aGUgdGltZSBvZiBpbnZva2luZyB5b3VyIGZ1bmN0aW9uLiBZb3VyIGZ1bmN0aW9uIHJlY2VpdmVzIGFuXG4gICAqIGV2ZW50IHdpdGggYWxsIHRoZSByZXRyaWV2ZWQgcmVjb3Jkcy5cbiAgICpcbiAgICogVmFsaWQgUmFuZ2U6IE1pbmltdW0gdmFsdWUgb2YgMS4gTWF4aW11bSB2YWx1ZSBvZiAxMDAwMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbWF6b24gS2luZXNpcywgQW1hem9uIER5bmFtb0RCLCBhbmQgQW1hem9uIE1TSyBpcyAxMDAgcmVjb3Jkcy5cbiAgICogVGhlIGRlZmF1bHQgZm9yIEFtYXpvbiBTUVMgaXMgMTAgbWVzc2FnZXMuIEZvciBzdGFuZGFyZCBTUVMgcXVldWVzLCB0aGUgbWF4aW11bSBpcyAxMCwwMDAuIEZvciBGSUZPIFNRUyBxdWV1ZXMsIHRoZSBtYXhpbXVtIGlzIDEwLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciwgc3BsaXQgdGhlIGJhdGNoIGluIHR3byBhbmQgcmV0cnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBiaXNlY3RCYXRjaE9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbiBBbWF6b24gU1FTIHF1ZXVlIG9yIEFtYXpvbiBTTlMgdG9waWMgZGVzdGluYXRpb24gZm9yIGRpc2NhcmRlZCByZWNvcmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBkaXNjYXJkZWQgcmVjb3JkcyBhcmUgaWdub3JlZFxuICAgKi9cbiAgcmVhZG9ubHkgb25GYWlsdXJlPzogSUV2ZW50U291cmNlRGxxO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSB0aGUgZXZlbnQgc291cmNlIHVwb24gY3JlYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gaW4gdGhlIER5bmFtb0RCLCBLaW5lc2lzIG9yIE1TSyBzdHJlYW0gd2hlcmUgQVdTIExhbWJkYSBzaG91bGRcbiAgICogc3RhcnQgcmVhZGluZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va2luZXNpcy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRTaGFyZEl0ZXJhdG9yLmh0bWwjS2luZXNpcy1HZXRTaGFyZEl0ZXJhdG9yLXJlcXVlc3QtU2hhcmRJdGVyYXRvclR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzdGFydGluZyBwb3NpdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRpbmdQb3NpdGlvbj86IFN0YXJ0aW5nUG9zaXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGZyb20gd2hpY2ggdG8gc3RhcnQgcmVhZGluZywgaW4gVW5peCB0aW1lIHNlY29uZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdGltZXN0YW1wXG4gICAqL1xuICByZWFkb25seSBzdGFydGluZ1Bvc2l0aW9uVGltZXN0YW1wPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBmdW5jdGlvbnMgdG8gcmV0dXJuIHBhcnRpYWxseSBzdWNjZXNzZnVsIHJlc3BvbnNlcyBmb3IgYSBiYXRjaCBvZiByZWNvcmRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3dpdGgtZGRiLmh0bWwjc2VydmljZXMtZGRiLWJhdGNoZmFpbHVyZXJlcG9ydGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0byBnYXRoZXIgcmVjb3JkcyBiZWZvcmUgaW52b2tpbmcgdGhlIGZ1bmN0aW9uLlxuICAgKiBNYXhpbXVtIG9mIER1cmF0aW9uLm1pbnV0ZXMoNSlcbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uc2Vjb25kcygwKVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4QmF0Y2hpbmdXaW5kb3c/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gY29uY3VycmVuY3kgc2V0dGluZyBsaW1pdHMgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IGluc3RhbmNlcyBvZiB0aGUgZnVuY3Rpb24gdGhhdCBhbiBBbWF6b24gU1FTIGV2ZW50IHNvdXJjZSBjYW4gaW52b2tlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3dpdGgtc3FzLmh0bWwjZXZlbnRzLXNxcy1tYXgtY29uY3VycmVuY3lcbiAgICpcbiAgICogVmFsaWQgUmFuZ2U6IE1pbmltdW0gdmFsdWUgb2YgMi4gTWF4aW11bSB2YWx1ZSBvZiAxMDAwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHNwZWNpZmljIGxpbWl0LlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFnZSBvZiBhIHJlY29yZCB0aGF0IExhbWJkYSBzZW5kcyB0byBhIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nLlxuICAgKiBWYWxpZCBSYW5nZTpcbiAgICogKiBNaW5pbXVtIHZhbHVlIG9mIDYwIHNlY29uZHNcbiAgICogKiBNYXhpbXVtIHZhbHVlIG9mIDcgZGF5c1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGluZmluaXRlIG9yIHVudGlsIHRoZSByZWNvcmQgZXhwaXJlcy5cbiAgICovXG4gIHJlYWRvbmx5IG1heFJlY29yZEFnZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXMgdG8gcmV0cnkgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvci5cbiAgICogU2V0IHRvIGB1bmRlZmluZWRgIGlmIHlvdSB3YW50IGxhbWJkYSB0byBrZWVwIHJldHJ5aW5nIGluZmluaXRlbHkgb3IgdW50aWxcbiAgICogdGhlIHJlY29yZCBleHBpcmVzLlxuICAgKlxuICAgKiBWYWxpZCBSYW5nZTpcbiAgICogKiBNaW5pbXVtIHZhbHVlIG9mIDBcbiAgICogKiBNYXhpbXVtIHZhbHVlIG9mIDEwMDAwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gaW5maW5pdGUgb3IgdW50aWwgdGhlIHJlY29yZCBleHBpcmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV0cnlBdHRlbXB0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBiYXRjaGVzIHRvIHByb2Nlc3MgZnJvbSBlYWNoIHNoYXJkIGNvbmN1cnJlbnRseS5cbiAgICogVmFsaWQgUmFuZ2U6XG4gICAqICogTWluaW11bSB2YWx1ZSBvZiAxXG4gICAqICogTWF4aW11bSB2YWx1ZSBvZiAxMFxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBwYXJhbGxlbGl6YXRpb25GYWN0b3I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBLYWZrYSB0b3BpYy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB0b3BpY1xuICAgKi9cbiAgcmVhZG9ubHkga2Fma2FUb3BpYz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIHR1bWJsaW5nIHdpbmRvd3MgdG8gZ3JvdXAgcmVjb3JkcyBzZW50IHRvIER5bmFtb0RCIG9yIEtpbmVzaXNcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy93aXRoLWRkYi5odG1sI3NlcnZpY2VzLWRkYi13aW5kb3dzXG4gICAqXG4gICAqIFZhbGlkIFJhbmdlOiAwIC0gMTUgbWludXRlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHR1bWJsaW5nV2luZG93PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBob3N0IGFuZCBwb3J0IHBhaXJzIHRoYXQgYXJlIHRoZSBhZGRyZXNzZXMgb2YgdGhlIEthZmthIGJyb2tlcnMgaW4gYSBzZWxmIG1hbmFnZWQgXCJib290c3RyYXBcIiBLYWZrYSBjbHVzdGVyXG4gICAqIHRoYXQgYSBLYWZrYSBjbGllbnQgY29ubmVjdHMgdG8gaW5pdGlhbGx5IHRvIGJvb3RzdHJhcCBpdHNlbGYuXG4gICAqIFRoZXkgYXJlIGluIHRoZSBmb3JtYXQgYGFiYy5leGFtcGxlLmNvbTo5MDk2YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBrYWZrYUJvb3RzdHJhcFNlcnZlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBLYWZrYSBjb25zdW1lciBncm91cCB0byBqb2luLiBUaGUgY29uc3VtZXIgZ3JvdXAgSUQgbXVzdCBiZSB1bmlxdWUgYW1vbmcgYWxsIHlvdXIgS2Fma2EgZXZlbnQgc291cmNlcy4gQWZ0ZXIgY3JlYXRpbmcgYSBLYWZrYSBldmVudCBzb3VyY2UgbWFwcGluZyB3aXRoIHRoZSBjb25zdW1lciBncm91cCBJRCBzcGVjaWZpZWQsIHlvdSBjYW5ub3QgdXBkYXRlIHRoaXMgdmFsdWUuIFRoZSB2YWx1ZSBtdXN0IGhhdmUgYSBsZW5naHQgYmV0d2VlbiAxIGFuZCAyMDAgYW5kIGZ1bGwgdGhlIHBhdHRlcm4gJ1thLXpBLVowLTktXFwvKjpfKz0uQC1dKicuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0N1c3RvbWl6YWJsZSBjb25zdW1lciBncm91cCBJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvd2l0aC1tc2suaHRtbCNzZXJ2aWNlcy1tc2stY29uc3VtZXItZ3JvdXAtaWQpLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWxhbWJkYS1ldmVudHNvdXJjZW1hcHBpbmctYW1hem9ubWFuYWdlZGthZmthZXZlbnRzb3VyY2Vjb25maWcuaHRtbFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWxhbWJkYS1ldmVudHNvdXJjZW1hcHBpbmctc2VsZm1hbmFnZWRrYWZrYWV2ZW50c291cmNlY29uZmlnLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBrYWZrYUNvbnN1bWVyR3JvdXBJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWMgc2V0dGluZ3MgbGlrZSB0aGUgYXV0aGVudGljYXRpb24gcHJvdG9jb2wgb3IgdGhlIFZQQyBjb21wb25lbnRzIHRvIHNlY3VyZSBhY2Nlc3MgdG8geW91ciBldmVudCBzb3VyY2UuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtbGFtYmRhLWV2ZW50c291cmNlbWFwcGluZy1zb3VyY2VhY2Nlc3Njb25maWd1cmF0aW9uLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9ucz86IFNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogQWRkIGZpbHRlciBjcml0ZXJpYSB0byBFdmVudCBTb3VyY2UuXG4gICAqXG4gICAqIEEgc2V0IG9mIHVwIHRvIDUgZmlsdGVyLiBJZiBhbiBldmVudCBzYXRpc2ZpZXMgYXQgbGVhc3Qgb25lLCBMYW1iZGEgc2VuZHMgdGhlIGV2ZW50IHRvIHRoZSBmdW5jdGlvbiBvciBhZGRzIGl0IHRvIHRoZSBuZXh0IGJhdGNoLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2ludm9jYXRpb24tZXZlbnRmaWx0ZXJpbmcuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcnM/OiBBcnJheTx7IFtrZXk6IHN0cmluZ106IGFueSB9PjtcblxuICAvKipcbiAgICogQWRkIEN1c3RvbWVyIG1hbmFnZWQgS01TIGtleSB0byBlbmNyeXB0IEZpbHRlciBDcml0ZXJpYS5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy9pbnZvY2F0aW9uLWV2ZW50ZmlsdGVyaW5nLmh0bWxcbiAgICogQnkgZGVmYXVsdCwgTGFtYmRhIHdpbGwgZW5jcnlwdCBGaWx0ZXIgQ3JpdGVyaWEgdXNpbmcgQVdTIG1hbmFnZWQga2V5c1xuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2NvbmNlcHRzLmh0bWwjYXdzLW1hbmFnZWQtY21rXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVyRW5jcnlwdGlvbj86IElLZXk7XG5cbiAgLyoqXG4gICAqIENoZWNrIGlmIHN1cHBvcnQgUzMgb25mYWlsdXJlIGRlc3RpbmF0aW9uKE9ERikuIEN1cnJlbnRseSBvbmx5IE1TSyBhbmQgc2VsZiBtYW5hZ2VkIGthZmthIGV2ZW50IHN1cHBvcnQgUzMgT0RGXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdXBwb3J0UzNPbkZhaWx1cmVEZXN0aW5hdGlvbj86IGJvb2xlYW47XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgZGVjbGFyaW5nIGEgbmV3IGV2ZW50IHNvdXJjZSBtYXBwaW5nLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U291cmNlTWFwcGluZ1Byb3BzIGV4dGVuZHMgRXZlbnRTb3VyY2VNYXBwaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgdGFyZ2V0IEFXUyBMYW1iZGEgZnVuY3Rpb24uXG4gICAqL1xuICByZWFkb25seSB0YXJnZXQ6IElGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBPdXRwdXRzIHRvIGV4cG9zZSB2aWEgdGhlIGdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRTb3VyY2VNYXBwaW5nT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBmb3IgdGhlIEV2ZW50U291cmNlTWFwcGluZy5cbiAgICovXG4gIHJlYWRvbmx5IHV1aWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGFuIGV2ZW50IHNvdXJjZSBtYXBwaW5nIGZvciBhIGxhbWJkYSBmdW5jdGlvbi5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvaW52b2NhdGlvbi1ldmVudHNvdXJjZW1hcHBpbmcuaHRtbFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFdmVudFNvdXJjZU1hcHBpbmcgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqXG4gICAqIHN0cm9uZ2x5IHR5cGVkIG91dHB1dHNcbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50U291cmNlTWFwcGluZ091dHB1dHM6IEV2ZW50U291cmNlTWFwcGluZ091dHB1dHM7XG5cbiAgLyoqXG4gICAqIFRoZSBpZGVudGlmaWVyIGZvciB0aGlzIEV2ZW50U291cmNlTWFwcGluZ1xuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBldmVudCBzb3VyY2UgbWFwcGluZyAoaS5lLiBhcm46YXdzOmxhbWJkYTpyZWdpb246YWNjb3VudC1pZDpldmVudC1zb3VyY2UtbWFwcGluZy9ldmVudC1zb3VyY2UtbWFwcGluZy1pZClcbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50U291cmNlTWFwcGluZ0Fybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIERlZmluZXMgYSBMYW1iZGEgRXZlbnRTb3VyY2VNYXBwaW5nIHJlc291cmNlLlxuICpcbiAqIFVzdWFsbHksIHlvdSB3b24ndCBuZWVkIHRvIGRlZmluZSB0aGUgbWFwcGluZyB5b3Vyc2VsZi4gVGhpcyB3aWxsIHVzdWFsbHkgYmUgZG9uZSBieVxuICogZXZlbnQgc291cmNlcy4gRm9yIGV4YW1wbGUsIHRvIGFkZCBhbiBTUVMgZXZlbnQgc291cmNlIHRvIGEgZnVuY3Rpb246XG4gKlxuICogYGBgdHNcbiAqIGltcG9ydCB7IG5vdGlmeSwgY29tcHV0ZSB9IGZyb20gJ3RlcnJhY29uc3RydWN0cyc7XG4gKlxuICogZGVjbGFyZSBjb25zdCBoYW5kbGVyOiBjb21wdXRlLkZ1bmN0aW9uO1xuICogZGVjbGFyZSBjb25zdCBxdWV1ZTogbm90aWZ5LlF1ZXVlO1xuICpcbiAqIGhhbmRsZXIuYWRkRXZlbnRTb3VyY2UobmV3IGNvbXB1dGUuZXZlbnRzb3VyY2VzLlNxc0V2ZW50U291cmNlKHF1ZXVlKSk7XG4gKiBgYGBcbiAqXG4gKiBUaGUgYFNxc0V2ZW50U291cmNlYCBjbGFzcyB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIHRoZSBtYXBwaW5nLCBhbmQgd2lsbCBhbHNvXG4gKiBtb2RpZnkgdGhlIExhbWJkYSdzIGV4ZWN1dGlvbiByb2xlIHNvIGl0IGNhbiBjb25zdW1lIG1lc3NhZ2VzIGZyb20gdGhlIHF1ZXVlLlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRTb3VyY2VNYXBwaW5nXG4gIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZVxuICBpbXBsZW1lbnRzIElFdmVudFNvdXJjZU1hcHBpbmdcbntcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBldmVudCBzb3VyY2UgaW50byB0aGlzIHN0YWNrIGZyb20gaXRzIGV2ZW50IHNvdXJjZSBpZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUV2ZW50U291cmNlTWFwcGluZ0lkKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBldmVudFNvdXJjZU1hcHBpbmdJZDogc3RyaW5nLFxuICApOiBJRXZlbnRTb3VyY2VNYXBwaW5nIHtcbiAgICBjb25zdCBldmVudFNvdXJjZU1hcHBpbmdBcm4gPSBFdmVudFNvdXJjZU1hcHBpbmcuZm9ybWF0QXJuKFxuICAgICAgc2NvcGUsXG4gICAgICBldmVudFNvdXJjZU1hcHBpbmdJZCxcbiAgICApO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElFdmVudFNvdXJjZU1hcHBpbmcge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGV2ZW50U291cmNlTWFwcGluZ0lkID0gZXZlbnRTb3VyY2VNYXBwaW5nSWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRTb3VyY2VNYXBwaW5nQXJuID0gZXZlbnRTb3VyY2VNYXBwaW5nQXJuO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGV2ZW50U291cmNlTWFwcGluZ091dHB1dHMgPSB7XG4gICAgICAgIHV1aWQ6IGV2ZW50U291cmNlTWFwcGluZ0lkLFxuICAgICAgfTtcbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZXZlbnRTb3VyY2VNYXBwaW5nT3V0cHV0cztcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZvcm1hdEFybihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGV2ZW50U291cmNlTWFwcGluZ0lkOiBzdHJpbmcsXG4gICk6IHN0cmluZyB7XG4gICAgcmV0dXJuIEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgc2VydmljZTogXCJsYW1iZGFcIixcbiAgICAgIHJlc291cmNlOiBcImV2ZW50LXNvdXJjZS1tYXBwaW5nXCIsXG4gICAgICByZXNvdXJjZU5hbWU6IGV2ZW50U291cmNlTWFwcGluZ0lkLFxuICAgICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdJZDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRTb3VyY2VNYXBwaW5nQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdPdXRwdXRzOiBFdmVudFNvdXJjZU1hcHBpbmdPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRTb3VyY2VNYXBwaW5nT3V0cHV0cztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmVudFNvdXJjZU1hcHBpbmdQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5ldmVudFNvdXJjZUFybiA9PSB1bmRlZmluZWQgJiZcbiAgICAgIHByb3BzLmthZmthQm9vdHN0cmFwU2VydmVycyA9PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJFaXRoZXIgZXZlbnRTb3VyY2VBcm4gb3Iga2Fma2FCb290c3RyYXBTZXJ2ZXJzIG11c3QgYmUgc2V0XCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByb3BzLmV2ZW50U291cmNlQXJuICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHByb3BzLmthZmthQm9vdHN0cmFwU2VydmVycyAhPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiZXZlbnRTb3VyY2VBcm4gYW5kIGthZmthQm9vdHN0cmFwU2VydmVycyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByb3BzLmthZmthQm9vdHN0cmFwU2VydmVycyAmJlxuICAgICAgcHJvcHMua2Fma2FCb290c3RyYXBTZXJ2ZXJzPy5sZW5ndGggPCAxXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJrYWZrYUJvb3RTdHJhcFNlcnZlcnMgbXVzdCBub3QgYmUgZW1wdHkgaWYgc2V0XCIpO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5tYXhCYXRjaGluZ1dpbmRvdyAmJiBwcm9wcy5tYXhCYXRjaGluZ1dpbmRvdy50b1NlY29uZHMoKSA+IDMwMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgbWF4QmF0Y2hpbmdXaW5kb3cgY2Fubm90IGJlIG92ZXIgMzAwIHNlY29uZHMsIGdvdCAke3Byb3BzLm1heEJhdGNoaW5nV2luZG93LnRvU2Vjb25kcygpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByb3BzLm1heENvbmN1cnJlbmN5ICYmXG4gICAgICAhY2RrdGYuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLm1heENvbmN1cnJlbmN5KSAmJlxuICAgICAgKHByb3BzLm1heENvbmN1cnJlbmN5IDwgMiB8fCBwcm9wcy5tYXhDb25jdXJyZW5jeSA+IDEwMDApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwibWF4Q29uY3VycmVuY3kgbXVzdCBiZSBiZXR3ZWVuIDIgYW5kIDEwMDAgY29uY3VycmVudCBpbnN0YW5jZXNcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJvcHMubWF4UmVjb3JkQWdlICYmXG4gICAgICAocHJvcHMubWF4UmVjb3JkQWdlLnRvU2Vjb25kcygpIDwgNjAgfHxcbiAgICAgICAgcHJvcHMubWF4UmVjb3JkQWdlLnRvRGF5cyh7IGludGVncmFsOiBmYWxzZSB9KSA+IDcpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwibWF4UmVjb3JkQWdlIG11c3QgYmUgYmV0d2VlbiA2MCBzZWNvbmRzIGFuZCA3IGRheXMgaW5jbHVzaXZlXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHByb3BzLnJldHJ5QXR0ZW1wdHMgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgd2l0aFJlc29sdmVkKHByb3BzLnJldHJ5QXR0ZW1wdHMsIChhdHRlbXB0cykgPT4ge1xuICAgICAgICBpZiAoYXR0ZW1wdHMgPCAwIHx8IGF0dGVtcHRzID4gMTAwMDApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgcmV0cnlBdHRlbXB0cyBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMTAwMDAgaW5jbHVzaXZlLCBnb3QgJHthdHRlbXB0c31gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgcHJvcHMucGFyYWxsZWxpemF0aW9uRmFjdG9yICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHdpdGhSZXNvbHZlZChwcm9wcy5wYXJhbGxlbGl6YXRpb25GYWN0b3IsIChmYWN0b3IpID0+IHtcbiAgICAgICAgaWYgKGZhY3RvciA8IDEgfHwgZmFjdG9yID4gMTApIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgcGFyYWxsZWxpemF0aW9uRmFjdG9yIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMCBpbmNsdXNpdmUsIGdvdCAke2ZhY3Rvcn1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMudHVtYmxpbmdXaW5kb3cgJiZcbiAgICAgICFjZGt0Zi5Ub2tlbi5pc1VucmVzb2x2ZWQocHJvcHMudHVtYmxpbmdXaW5kb3cpICYmXG4gICAgICBwcm9wcy50dW1ibGluZ1dpbmRvdy50b1NlY29uZHMoKSA+IDkwMFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgdHVtYmxpbmdXaW5kb3cgY2Fubm90IGJlIG92ZXIgOTAwIHNlY29uZHMsIGdvdCAke3Byb3BzLnR1bWJsaW5nV2luZG93LnRvU2Vjb25kcygpfWAsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByb3BzLnN0YXJ0aW5nUG9zaXRpb24gPT09IFN0YXJ0aW5nUG9zaXRpb24uQVRfVElNRVNUQU1QICYmXG4gICAgICAhcHJvcHMuc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcInN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXAgbXVzdCBiZSBwcm92aWRlZCB3aGVuIHN0YXJ0aW5nUG9zaXRpb24gaXMgQVRfVElNRVNUQU1QXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByb3BzLnN0YXJ0aW5nUG9zaXRpb24gIT09IFN0YXJ0aW5nUG9zaXRpb24uQVRfVElNRVNUQU1QICYmXG4gICAgICBwcm9wcy5zdGFydGluZ1Bvc2l0aW9uVGltZXN0YW1wXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwic3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcCBjYW4gb25seSBiZSB1c2VkIHdoZW4gc3RhcnRpbmdQb3NpdGlvbiBpcyBBVF9USU1FU1RBTVBcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLmthZmthQ29uc3VtZXJHcm91cElkKSB7XG4gICAgICB0aGlzLnZhbGlkYXRlS2Fma2FDb25zdW1lckdyb3VwSWRPclRocm93KHByb3BzLmthZmthQ29uc3VtZXJHcm91cElkKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMuZmlsdGVyRW5jcnlwdGlvbiAhPT0gdW5kZWZpbmVkICYmIHByb3BzLmZpbHRlcnMgPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiZmlsdGVyIGNyaXRlcmlhIG11c3QgYmUgcHJvdmlkZWQgdG8gZW5hYmxlIHNldHRpbmcgZmlsdGVyIGNyaXRlcmlhIGVuY3J5cHRpb25cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR3JhbnRzIHRoZSBMYW1iZGEgZnVuY3Rpb24gcGVybWlzc2lvbiB0byBkZWNyeXB0IGRhdGEgdXNpbmcgdGhlIHNwZWNpZmllZCBLTVMga2V5LlxuICAgICAqIFRoaXMgc3RlcCBpcyBuZWNlc3NhcnkgZm9yIHNldHRpbmcgdXAgZW5jcnlwdGVkIGZpbHRlciBjcml0ZXJpYS5cbiAgICAgKlxuICAgICAqIElmIHRoZSBLTVMga2V5IHdhcyBjcmVhdGVkIHdpdGhpbiB0aGlzIENsb3VkRm9ybWF0aW9uIHN0YWNrICh2aWEgYG5ldyBLZXlgKSwgYSBLZXkgcG9saWN5XG4gICAgICogd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUga2V5IHRvIGFsbG93IHRoZSBMYW1iZGEgZnVuY3Rpb24gdG8gYWNjZXNzIGl0LiBIb3dldmVyLCBpZiB0aGVcbiAgICAgKiBLZXkgaXMgaW1wb3J0ZWQgZnJvbSBhbiBleGlzdGluZyBBUk4gKGBLZXkuZnJvbUtleUFybmApLCBubyBhY3Rpb24gd2lsbCBiZSB0YWtlbi5cbiAgICAgKi9cbiAgICBpZiAocHJvcHMuZmlsdGVyRW5jcnlwdGlvbiAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBjb25zdCBsYW1iZGFQcmluY2lwYWwgPSBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJsYW1iZGEuYW1hem9uYXdzLmNvbVwiKTtcbiAgICAgIHByb3BzLmZpbHRlckVuY3J5cHRpb24uZ3JhbnREZWNyeXB0KGxhbWJkYVByaW5jaXBhbCk7XG4gICAgfVxuXG4gICAgbGV0IGRlc3RpbmF0aW9uQ29uZmlnOiBhbnk7XG5cbiAgICBpZiAocHJvcHMub25GYWlsdXJlKSB7XG4gICAgICBkZXN0aW5hdGlvbkNvbmZpZyA9IHtcbiAgICAgICAgb25GYWlsdXJlOiBwcm9wcy5vbkZhaWx1cmUuYmluZCh0aGlzLCBwcm9wcy50YXJnZXQpLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQgc2VsZk1hbmFnZWRFdmVudFNvdXJjZTpcbiAgICAgIHwgbGFtYmRhRXZlbnRTb3VyY2VNYXBwaW5nLkxhbWJkYUV2ZW50U291cmNlTWFwcGluZ1NlbGZNYW5hZ2VkRXZlbnRTb3VyY2VcbiAgICAgIHwgdW5kZWZpbmVkO1xuICAgIGlmIChwcm9wcy5rYWZrYUJvb3RzdHJhcFNlcnZlcnMpIHtcbiAgICAgIHNlbGZNYW5hZ2VkRXZlbnRTb3VyY2UgPSB7XG4gICAgICAgIGVuZHBvaW50czoge1xuICAgICAgICAgIEtBRktBX0JPT1RTVFJBUF9TRVJWRVJTOiBwcm9wcy5rYWZrYUJvb3RzdHJhcFNlcnZlcnMuam9pbihcIixcIiksXG4gICAgICAgIH0sXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNvbnN1bWVyR3JvdXBDb25maWcgPSBwcm9wcy5rYWZrYUNvbnN1bWVyR3JvdXBJZFxuICAgICAgPyB7IGNvbnN1bWVyR3JvdXBJZDogcHJvcHMua2Fma2FDb25zdW1lckdyb3VwSWQgfVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBsYW1iZGFFdmVudFNvdXJjZU1hcHBpbmcuTGFtYmRhRXZlbnRTb3VyY2VNYXBwaW5nKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgYmF0Y2hTaXplOiBwcm9wcy5iYXRjaFNpemUsXG4gICAgICAgIGJpc2VjdEJhdGNoT25GdW5jdGlvbkVycm9yOiBwcm9wcy5iaXNlY3RCYXRjaE9uRXJyb3IsXG4gICAgICAgIGRlc3RpbmF0aW9uQ29uZmlnLFxuICAgICAgICBlbmFibGVkOiBwcm9wcy5lbmFibGVkLFxuICAgICAgICBldmVudFNvdXJjZUFybjogcHJvcHMuZXZlbnRTb3VyY2VBcm4sXG4gICAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHMudGFyZ2V0LmZ1bmN0aW9uTmFtZSxcbiAgICAgICAgc3RhcnRpbmdQb3NpdGlvbjogcHJvcHMuc3RhcnRpbmdQb3NpdGlvbixcbiAgICAgICAgc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcDogcHJvcHMuc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcFxuICAgICAgICAgID8gbmV3IERhdGUocHJvcHMuc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcCAqIDEwMDApLnRvSVNPU3RyaW5nKClcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgZnVuY3Rpb25SZXNwb25zZVR5cGVzOiBwcm9wcy5yZXBvcnRCYXRjaEl0ZW1GYWlsdXJlc1xuICAgICAgICAgID8gW1wiUmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXNcIl1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgbWF4aW11bUJhdGNoaW5nV2luZG93SW5TZWNvbmRzOiBwcm9wcy5tYXhCYXRjaGluZ1dpbmRvdz8udG9TZWNvbmRzKCksXG4gICAgICAgIG1heGltdW1SZWNvcmRBZ2VJblNlY29uZHM6IHByb3BzLm1heFJlY29yZEFnZT8udG9TZWNvbmRzKCksXG4gICAgICAgIG1heGltdW1SZXRyeUF0dGVtcHRzOiBwcm9wcy5yZXRyeUF0dGVtcHRzLFxuICAgICAgICBwYXJhbGxlbGl6YXRpb25GYWN0b3I6IHByb3BzLnBhcmFsbGVsaXphdGlvbkZhY3RvcixcbiAgICAgICAgdG9waWNzOiBwcm9wcy5rYWZrYVRvcGljID8gW3Byb3BzLmthZmthVG9waWNdIDogdW5kZWZpbmVkLFxuICAgICAgICB0dW1ibGluZ1dpbmRvd0luU2Vjb25kczogcHJvcHMudHVtYmxpbmdXaW5kb3c/LnRvU2Vjb25kcygpLFxuICAgICAgICBzY2FsaW5nQ29uZmlnOiBwcm9wcy5tYXhDb25jdXJyZW5jeVxuICAgICAgICAgID8geyBtYXhpbXVtQ29uY3VycmVuY3k6IHByb3BzLm1heENvbmN1cnJlbmN5IH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgc291cmNlQWNjZXNzQ29uZmlndXJhdGlvbjogcHJvcHMuc291cmNlQWNjZXNzQ29uZmlndXJhdGlvbnMsXG4gICAgICAgIHNlbGZNYW5hZ2VkRXZlbnRTb3VyY2UsXG4gICAgICAgIGZpbHRlckNyaXRlcmlhOiBwcm9wcy5maWx0ZXJzID8geyBmaWx0ZXI6IHByb3BzLmZpbHRlcnMgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAga21zS2V5QXJuOiBwcm9wcy5maWx0ZXJFbmNyeXB0aW9uPy5rZXlBcm4sXG4gICAgICAgIHNlbGZNYW5hZ2VkS2Fma2FFdmVudFNvdXJjZUNvbmZpZzogcHJvcHMua2Fma2FCb290c3RyYXBTZXJ2ZXJzXG4gICAgICAgICAgPyBjb25zdW1lckdyb3VwQ29uZmlnXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGFtYXpvbk1hbmFnZWRLYWZrYUV2ZW50U291cmNlQ29uZmlnOiBwcm9wcy5ldmVudFNvdXJjZUFyblxuICAgICAgICAgID8gY29uc3VtZXJHcm91cENvbmZpZ1xuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgfSxcbiAgICApO1xuICAgIHRoaXMuZXZlbnRTb3VyY2VNYXBwaW5nSWQgPSByZXNvdXJjZS51dWlkO1xuICAgIHRoaXMuZXZlbnRTb3VyY2VNYXBwaW5nQXJuID0gRXZlbnRTb3VyY2VNYXBwaW5nLmZvcm1hdEFybihcbiAgICAgIHRoaXMsXG4gICAgICB0aGlzLmV2ZW50U291cmNlTWFwcGluZ0lkLFxuICAgICk7XG5cbiAgICB0aGlzLmV2ZW50U291cmNlTWFwcGluZ091dHB1dHMgPSB7XG4gICAgICB1dWlkOiB0aGlzLmV2ZW50U291cmNlTWFwcGluZ0lkLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlS2Fma2FDb25zdW1lckdyb3VwSWRPclRocm93KGthZmthQ29uc3VtZXJHcm91cElkOiBzdHJpbmcpIHtcbiAgICBpZiAoY2RrdGYuVG9rZW4uaXNVbnJlc29sdmVkKGthZmthQ29uc3VtZXJHcm91cElkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChrYWZrYUNvbnN1bWVyR3JvdXBJZC5sZW5ndGggPiAyMDAgfHwga2Fma2FDb25zdW1lckdyb3VwSWQubGVuZ3RoIDwgMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImthZmthQ29uc3VtZXJHcm91cElkIG11c3QgYmUgYSB2YWxpZCBzdHJpbmcgYmV0d2VlbiAxIGFuZCAyMDAgY2hhcmFjdGVyc1wiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWdleCA9IG5ldyBSZWdFeHAoL1thLXpBLVowLTktXFwvKjpfKz0uQC1dKi8pO1xuICAgIGNvbnN0IHBhdHRlcm5NYXRjaCA9IHJlZ2V4LmV4ZWMoa2Fma2FDb25zdW1lckdyb3VwSWQpO1xuICAgIGlmIChwYXR0ZXJuTWF0Y2ggPT09IG51bGwgfHwgcGF0dGVybk1hdGNoWzBdICE9PSBrYWZrYUNvbnN1bWVyR3JvdXBJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAna2Fma2FDb25zdW1lckdyb3VwSWQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzLiBBbGxvd2VkIHZhbHVlcyBhcmUgXCJbYS16QS1aMC05LS8qOl8rPS5ALV1cIicsXG4gICAgICApO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoZSB0eXBlIG9mIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sIG9yIHRoZSBWUEMgY29tcG9uZW50cyBmb3IgeW91ciBldmVudCBzb3VyY2UncyBTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL0FQSV9Tb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uLmh0bWwjU1NTLVR5cGUtU291cmNlQWNjZXNzQ29uZmlndXJhdGlvbi1UeXBlXG4gKi9cbmV4cG9ydCBlbnVtIFNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25UeXBlIHtcbiAgLyoqXG4gICAqIChNUSkgVGhlIFNlY3JldHMgTWFuYWdlciBzZWNyZXQgdGhhdCBzdG9yZXMgeW91ciBicm9rZXIgY3JlZGVudGlhbHMuXG4gICAqL1xuICBCQVNJQ19BVVRIID0gXCJCQVNJQ19BVVRIXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBzdWJuZXRzIGFzc29jaWF0ZWQgd2l0aCB5b3VyIFZQQy4gTGFtYmRhIGNvbm5lY3RzIHRvIHRoZXNlIHN1Ym5ldHMgdG8gZmV0Y2ggZGF0YSBmcm9tIHlvdXIgU2VsZi1NYW5hZ2VkIEFwYWNoZSBLYWZrYSBjbHVzdGVyLlxuICAgKi9cbiAgVlBDX1NVQk5FVCA9IFwiVlBDX1NVQk5FVFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgVlBDIHNlY3VyaXR5IGdyb3VwIHVzZWQgdG8gbWFuYWdlIGFjY2VzcyB0byB5b3VyIFNlbGYtTWFuYWdlZCBBcGFjaGUgS2Fma2EgYnJva2Vycy5cbiAgICovXG4gIFZQQ19TRUNVUklUWV9HUk9VUCA9IFwiVlBDX1NFQ1VSSVRZX0dST1VQXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBTZWNyZXRzIE1hbmFnZXIgQVJOIG9mIHlvdXIgc2VjcmV0IGtleSB1c2VkIGZvciBTQVNMIFNDUkFNLTI1NiBhdXRoZW50aWNhdGlvbiBvZiB5b3VyIFNlbGYtTWFuYWdlZCBBcGFjaGUgS2Fma2EgYnJva2Vycy5cbiAgICovXG4gIFNBU0xfU0NSQU1fMjU2X0FVVEggPSBcIlNBU0xfU0NSQU1fMjU2X0FVVEhcIixcblxuICAvKipcbiAgICogVGhlIFNlY3JldHMgTWFuYWdlciBBUk4gb2YgeW91ciBzZWNyZXQga2V5IHVzZWQgZm9yIFNBU0wgU0NSQU0tNTEyIGF1dGhlbnRpY2F0aW9uIG9mIHlvdXIgU2VsZi1NYW5hZ2VkIEFwYWNoZSBLYWZrYSBicm9rZXJzLlxuICAgKi9cbiAgU0FTTF9TQ1JBTV81MTJfQVVUSCA9IFwiU0FTTF9TQ1JBTV81MTJfQVVUSFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0cyBNYW5hZ2VyIEFSTiBvZiB5b3VyIHNlY3JldCBrZXkgY29udGFpbmluZyB0aGUgY2VydGlmaWNhdGUgY2hhaW4gKFguNTA5IFBFTSksIHByaXZhdGUga2V5IChQS0NTIzggUEVNKSxcbiAgICogYW5kIHByaXZhdGUga2V5IHBhc3N3b3JkIChvcHRpb25hbCkgdXNlZCBmb3IgbXV0dWFsIFRMUyBhdXRoZW50aWNhdGlvbiBvZiB5b3VyIE1TSy9BcGFjaGUgS2Fma2EgYnJva2Vycy5cbiAgICovXG4gIENMSUVOVF9DRVJUSUZJQ0FURV9UTFNfQVVUSCA9IFwiQ0xJRU5UX0NFUlRJRklDQVRFX1RMU19BVVRIXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBTZWNyZXRzIE1hbmFnZXIgQVJOIG9mIHlvdXIgc2VjcmV0IGtleSBjb250YWluaW5nIHRoZSByb290IENBIGNlcnRpZmljYXRlIChYLjUwOSBQRU0pIHVzZWQgZm9yIFRMUyBlbmNyeXB0aW9uIG9mIHlvdXIgQXBhY2hlIEthZmthIGJyb2tlcnMuXG4gICAqL1xuICBTRVJWRVJfUk9PVF9DQV9DRVJUSUZJQ0FURSA9IFwiU0VSVkVSX1JPT1RfQ0FfQ0VSVElGSUNBVEVcIixcbn1cblxuLyoqXG4gKiBTcGVjaWZpYyBzZXR0aW5ncyBsaWtlIHRoZSBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCBvciB0aGUgVlBDIGNvbXBvbmVudHMgdG8gc2VjdXJlIGFjY2VzcyB0byB5b3VyIGV2ZW50IHNvdXJjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGF1dGhlbnRpY2F0aW9uIHByb3RvY29sIG9yIHRoZSBWUEMgY29tcG9uZW50cyBmb3IgeW91ciBldmVudCBzb3VyY2UuIEZvciBleGFtcGxlOiBcIlNBU0xfU0NSQU1fNTEyX0FVVEhcIi5cbiAgICovXG4gIHJlYWRvbmx5IHR5cGU6IFNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25UeXBlO1xuICAvKipcbiAgICogVGhlIHZhbHVlIGZvciB5b3VyIGNob3NlbiBjb25maWd1cmF0aW9uIGluIHR5cGUuXG4gICAqIEZvciBleGFtcGxlOiBcIlVSSVwiOiBcImFybjphd3M6c2VjcmV0c21hbmFnZXI6dXMtZWFzdC0xOjAxMjM0NTY3ODkwOnNlY3JldDpNeUJyb2tlclNlY3JldE5hbWVcIi5cbiAgICogVGhlIGV4YWN0IHN0cmluZyBkZXBlbmRzIG9uIHRoZSB0eXBlLlxuICAgKiBAc2VlIFNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25UeXBlXG4gICAqL1xuICByZWFkb25seSB1cmk6IHN0cmluZztcbn1cbi8qKlxuICogVGhlIHBvc2l0aW9uIGluIHRoZSBEeW5hbW9EQiwgS2luZXNpcyBvciBNU0sgc3RyZWFtIHdoZXJlIEFXUyBMYW1iZGEgc2hvdWxkIHN0YXJ0XG4gKiByZWFkaW5nLlxuICovXG5leHBvcnQgZW51bSBTdGFydGluZ1Bvc2l0aW9uIHtcbiAgLyoqXG4gICAqIFN0YXJ0IHJlYWRpbmcgYXQgdGhlIGxhc3QgdW50cmltbWVkIHJlY29yZCBpbiB0aGUgc2hhcmQgaW4gdGhlIHN5c3RlbSxcbiAgICogd2hpY2ggaXMgdGhlIG9sZGVzdCBkYXRhIHJlY29yZCBpbiB0aGUgc2hhcmQuXG4gICAqL1xuICBUUklNX0hPUklaT04gPSBcIlRSSU1fSE9SSVpPTlwiLFxuXG4gIC8qKlxuICAgKiBTdGFydCByZWFkaW5nIGp1c3QgYWZ0ZXIgdGhlIG1vc3QgcmVjZW50IHJlY29yZCBpbiB0aGUgc2hhcmQsIHNvIHRoYXQgeW91XG4gICAqIGFsd2F5cyByZWFkIHRoZSBtb3N0IHJlY2VudCBkYXRhIGluIHRoZSBzaGFyZFxuICAgKi9cbiAgTEFURVNUID0gXCJMQVRFU1RcIixcblxuICAvKipcbiAgICogU3RhcnQgcmVhZGluZyBmcm9tIGEgcG9zaXRpb24gZGVmaW5lZCBieSBhIHRpbWUgc3RhbXAuXG4gICAqIE9ubHkgc3VwcG9ydGVkIGZvciBBbWF6b24gS2luZXNpcyBzdHJlYW1zLCBvdGhlcndpc2UgYW4gZXJyb3Igd2lsbCBvY2N1ci5cbiAgICogSWYgc3VwcGxpZWQsIGBzdGFydGluZ1Bvc2l0aW9uVGltZXN0YW1wYCBtdXN0IGFsc28gYmUgc2V0LlxuICAgKi9cbiAgQVRfVElNRVNUQU1QID0gXCJBVF9USU1FU1RBTVBcIixcbn1cbiJdfQ==
@@ -22,5 +22,5 @@ class S3OnFailureDestination {
22
22
  }
23
23
  exports.S3OnFailureDestination = S3OnFailureDestination;
24
24
  _a = JSII_RTTI_SYMBOL_1;
25
- S3OnFailureDestination[_a] = { fqn: "terraconstructs.aws.compute.sources.S3OnFailureDestination", version: "0.1.10" };
25
+ S3OnFailureDestination[_a] = { fqn: "terraconstructs.aws.compute.sources.S3OnFailureDestination", version: "0.2.0" };
26
26
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMtb25mYWlsdXJlLWRlc3RpbmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL2V2ZW50LXNvdXJjZXMvczMtb25mYWlsdXJlLWRlc3RpbmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBUUE7O0dBRUc7QUFDSCxNQUFhLHNCQUFzQjtJQUNqQyxZQUE2QixNQUF1QjtRQUF2QixXQUFNLEdBQU4sTUFBTSxDQUFpQjtJQUFHLENBQUM7SUFFeEQ7O09BRUc7SUFDSSxJQUFJLENBQ1QsT0FBNEIsRUFDNUIsYUFBd0I7UUFFeEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsYUFBYSxDQUFDLENBQUM7UUFFMUMsT0FBTztZQUNMLFdBQVcsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVM7U0FDbkMsQ0FBQztJQUNKLENBQUM7O0FBZkgsd0RBZ0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgRGxxRGVzdGluYXRpb25Db25maWcsXG4gIElFdmVudFNvdXJjZURscSxcbiAgSUV2ZW50U291cmNlTWFwcGluZyxcbiAgSUZ1bmN0aW9uLFxufSBmcm9tIFwiLi4vXCI7XG5pbXBvcnQgKiBhcyBzdG9yYWdlIGZyb20gXCIuLi8uLi9zdG9yYWdlXCI7XG5cbi8qKlxuICogQW4gUzMgZGVhZCBsZXR0ZXIgYnVja2V0IGRlc3RpbmF0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIGEgTGFtYmRhIGV2ZW50IHNvdXJjZVxuICovXG5leHBvcnQgY2xhc3MgUzNPbkZhaWx1cmVEZXN0aW5hdGlvbiBpbXBsZW1lbnRzIElFdmVudFNvdXJjZURscSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYnVja2V0OiBzdG9yYWdlLklCdWNrZXQpIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgYSBkZXN0aW5hdGlvbiBjb25maWd1cmF0aW9uIGZvciB0aGUgRExRXG4gICAqL1xuICBwdWJsaWMgYmluZChcbiAgICBfdGFyZ2V0OiBJRXZlbnRTb3VyY2VNYXBwaW5nLFxuICAgIHRhcmdldEhhbmRsZXI6IElGdW5jdGlvbixcbiAgKTogRGxxRGVzdGluYXRpb25Db25maWcge1xuICAgIHRoaXMuYnVja2V0LmdyYW50UmVhZFdyaXRlKHRhcmdldEhhbmRsZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLmJ1Y2tldC5idWNrZXRBcm4sXG4gICAgfTtcbiAgfVxufVxuIl19
@@ -21,5 +21,5 @@ class S3EventSource {
21
21
  }
22
22
  exports.S3EventSource = S3EventSource;
23
23
  _a = JSII_RTTI_SYMBOL_1;
24
- S3EventSource[_a] = { fqn: "terraconstructs.aws.compute.sources.S3EventSource", version: "0.1.10" };
24
+ S3EventSource[_a] = { fqn: "terraconstructs.aws.compute.sources.S3EventSource", version: "0.2.0" };
25
25
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZXZlbnQtc291cmNlcy9zMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLDZEQUE2RDtBQWlCN0Q7O0dBRUc7QUFDSCxNQUFhLGFBQWE7SUFDeEIsWUFDbUIsTUFBdUIsRUFDdkIsS0FBeUI7UUFEekIsV0FBTSxHQUFOLE1BQU0sQ0FBaUI7UUFDdkIsVUFBSyxHQUFMLEtBQUssQ0FBb0I7SUFDekMsQ0FBQztJQUVHLElBQUksQ0FBQyxNQUF5QjtRQUNuQyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sSUFBSSxFQUFFLENBQUM7UUFDekMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ3RDLElBQUksQ0FBQyxNQUFNLENBQUMsb0JBQW9CLENBQzlCLEtBQUssRUFDTCxJQUFJLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxNQUFNLENBQUMsRUFDdEMsR0FBRyxPQUFPLENBQ1gsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDOztBQWZILHNDQWdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGNvbXB1dGUgZnJvbSBcIi4uXCI7XG5pbXBvcnQgKiBhcyBzdG9yYWdlIGZyb20gXCIuLi8uLi9zdG9yYWdlXCI7XG5pbXBvcnQgKiBhcyBub3RpZnMgZnJvbSBcIi4uLy4uL3N0b3JhZ2Uvbm90aWZpY2F0aW9uLXRhcmdldHNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTM0V2ZW50U291cmNlUHJvcHMge1xuICAvKipcbiAgICogVGhlIHMzIGV2ZW50IHR5cGVzIHRoYXQgd2lsbCB0cmlnZ2VyIHRoZSBub3RpZmljYXRpb24uXG4gICAqL1xuICByZWFkb25seSBldmVudHM6IHN0b3JhZ2UuRXZlbnRUeXBlW107XG5cbiAgLyoqXG4gICAqIFMzIG9iamVjdCBrZXkgZmlsdGVyIHJ1bGVzIHRvIGRldGVybWluZSB3aGljaCBvYmplY3RzIHRyaWdnZXIgdGhpcyBldmVudC5cbiAgICogRWFjaCBmaWx0ZXIgbXVzdCBpbmNsdWRlIGEgYHByZWZpeGAgYW5kL29yIGBzdWZmaXhgIHRoYXQgd2lsbCBiZSBtYXRjaGVkXG4gICAqIGFnYWluc3QgdGhlIHMzIG9iamVjdCBrZXkuIFJlZmVyIHRvIHRoZSBTMyBEZXZlbG9wZXIgR3VpZGUgZm9yIGRldGFpbHNcbiAgICogYWJvdXQgYWxsb3dlZCBmaWx0ZXIgcnVsZXMuXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJzPzogc3RvcmFnZS5Ob3RpZmljYXRpb25LZXlGaWx0ZXJbXTtcbn1cblxuLyoqXG4gKiBVc2UgUzMgYnVja2V0IG5vdGlmaWNhdGlvbnMgYXMgYW4gZXZlbnQgc291cmNlIGZvciBBV1MgTGFtYmRhLlxuICovXG5leHBvcnQgY2xhc3MgUzNFdmVudFNvdXJjZSBpbXBsZW1lbnRzIGNvbXB1dGUuSUV2ZW50U291cmNlIHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBidWNrZXQ6IHN0b3JhZ2UuSUJ1Y2tldCxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBTM0V2ZW50U291cmNlUHJvcHMsXG4gICkge31cblxuICBwdWJsaWMgYmluZCh0YXJnZXQ6IGNvbXB1dGUuSUZ1bmN0aW9uKSB7XG4gICAgY29uc3QgZmlsdGVycyA9IHRoaXMucHJvcHMuZmlsdGVycyB8fCBbXTtcbiAgICBmb3IgKGNvbnN0IGV2ZW50IG9mIHRoaXMucHJvcHMuZXZlbnRzKSB7XG4gICAgICB0aGlzLmJ1Y2tldC5hZGRFdmVudE5vdGlmaWNhdGlvbihcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIG5ldyBub3RpZnMuRnVuY3Rpb25EZXN0aW5hdGlvbih0YXJnZXQpLFxuICAgICAgICAuLi5maWx0ZXJzLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
@@ -22,5 +22,5 @@ class SqsDlq {
22
22
  }
23
23
  exports.SqsDlq = SqsDlq;
24
24
  _a = JSII_RTTI_SYMBOL_1;
25
- SqsDlq[_a] = { fqn: "terraconstructs.aws.compute.sources.SqsDlq", version: "0.1.10" };
25
+ SqsDlq[_a] = { fqn: "terraconstructs.aws.compute.sources.SqsDlq", version: "0.2.0" };
26
26
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLWRscS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9ldmVudC1zb3VyY2VzL3Nxcy1kbHEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFRQTs7R0FFRztBQUNILE1BQWEsTUFBTTtJQUNqQixZQUE2QixLQUFvQjtRQUFwQixVQUFLLEdBQUwsS0FBSyxDQUFlO0lBQUcsQ0FBQztJQUVyRDs7T0FFRztJQUNJLElBQUksQ0FDVCxPQUE0QixFQUM1QixhQUF3QjtRQUV4QixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTVDLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1NBQ2pDLENBQUM7SUFDSixDQUFDOztBQWZILHdCQWdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERscURlc3RpbmF0aW9uQ29uZmlnLFxuICBJRXZlbnRTb3VyY2VEbHEsXG4gIElFdmVudFNvdXJjZU1hcHBpbmcsXG4gIElGdW5jdGlvbixcbn0gZnJvbSBcIi4uL1wiO1xuaW1wb3J0ICogYXMgbm90aWZ5IGZyb20gXCIuLi8uLi9ub3RpZnlcIjtcblxuLyoqXG4gKiBBbiBTUVMgZGVhZCBsZXR0ZXIgcXVldWUgZGVzdGluYXRpb24gY29uZmlndXJhdGlvbiBmb3IgYSBMYW1iZGEgZXZlbnQgc291cmNlXG4gKi9cbmV4cG9ydCBjbGFzcyBTcXNEbHEgaW1wbGVtZW50cyBJRXZlbnRTb3VyY2VEbHEge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHF1ZXVlOiBub3RpZnkuSVF1ZXVlKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgZGVzdGluYXRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIERMUVxuICAgKi9cbiAgcHVibGljIGJpbmQoXG4gICAgX3RhcmdldDogSUV2ZW50U291cmNlTWFwcGluZyxcbiAgICB0YXJnZXRIYW5kbGVyOiBJRnVuY3Rpb24sXG4gICk6IERscURlc3RpbmF0aW9uQ29uZmlnIHtcbiAgICB0aGlzLnF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKHRhcmdldEhhbmRsZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLnF1ZXVlLnF1ZXVlQXJuLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +1,6 @@
1
1
  import * as compute from "..";
2
2
  import { Duration } from "../../..";
3
+ import { IKey } from "../../encryption";
3
4
  import * as notify from "../../notify";
4
5
  export interface SqsEventSourceProps {
5
6
  /**
@@ -43,6 +44,15 @@ export interface SqsEventSourceProps {
43
44
  readonly filters?: Array<{
44
45
  [key: string]: any;
45
46
  }>;
47
+ /**
48
+ * Add Customer managed KMS key to encrypt Filter Criteria.
49
+ * @see https://docs.aws.amazon.com/lambda/latest/dg/invocation-eventfiltering.html
50
+ * By default, Lambda will encrypt Filter Criteria using AWS managed keys
51
+ * @see https://docs.aws.amazon.com/kms/latest/developerguide/concepts.html#aws-managed-cmk
52
+ *
53
+ * @default - none
54
+ */
55
+ readonly filterEncryption?: IKey;
46
56
  /**
47
57
  * The maximum concurrency setting limits the number of concurrent instances of the function that an Amazon SQS event source can invoke.
48
58
  *
@@ -45,7 +45,7 @@ class SqsEventSource {
45
45
  enabled: this.props.enabled,
46
46
  eventSourceArn: this.queue.queueArn,
47
47
  filters: this.props.filters,
48
- // filterEncryption: this.props.filterEncryption, // TODO: Re-Add KMS support
48
+ filterEncryption: this.props.filterEncryption,
49
49
  });
50
50
  this._eventSourceMappingId = eventSourceMapping.eventSourceMappingId;
51
51
  this._eventSourceMappingArn = eventSourceMapping.eventSourceMappingArn;
@@ -81,5 +81,5 @@ class SqsEventSource {
81
81
  }
82
82
  exports.SqsEventSource = SqsEventSource;
83
83
  _a = JSII_RTTI_SYMBOL_1;
84
- SqsEventSource[_a] = { fqn: "terraconstructs.aws.compute.sources.SqsEventSource", version: "0.1.10" };
85
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL2V2ZW50LXNvdXJjZXMvc3FzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOEdBQThHO0FBRTlHLGlDQUEyQztBQUUzQyw2QkFBaUM7QUF5RWpDOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBSXpCLFlBQ1csS0FBb0IsRUFDWixRQUE2QixFQUFFO1FBRHZDLFVBQUssR0FBTCxLQUFLLENBQWU7UUFDWixVQUFLLEdBQUwsS0FBSyxDQUEwQjtRQUwxQywwQkFBcUIsR0FBWSxTQUFTLENBQUM7UUFDM0MsMkJBQXNCLEdBQVksU0FBUyxDQUFDO1FBTWxELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7WUFDdEUsQ0FBQztZQUNELElBQ0UsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtnQkFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsR0FBRyxHQUFHLEVBQzlDLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiw4REFBOEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUM5RyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFDRCxJQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLFNBQVM7WUFDbEMsQ0FBQyxhQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQ3pDLENBQUM7WUFDRCxJQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssU0FBUztnQkFDMUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLEVBQzFELENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixtRUFBbUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLHNDQUFzQyxDQUM5SCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTO2dCQUMxQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsRUFDdkQsQ0FBQztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUNiLGdFQUFnRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsMENBQTBDLENBQy9ILENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxJQUFJLENBQUMsTUFBeUI7UUFDbkMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQ3JELGtCQUFrQixZQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFDdEQ7WUFDRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO1lBQy9CLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCO1lBQy9DLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7WUFDekMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUI7WUFDM0QsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztZQUMzQixjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQ25DLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDM0IsNkVBQTZFO1NBQzlFLENBQ0YsQ0FBQztRQUNGLElBQUksQ0FBQyxxQkFBcUIsR0FBRyxrQkFBa0IsQ0FBQyxvQkFBb0IsQ0FBQztRQUNyRSxJQUFJLENBQUMsc0JBQXNCLEdBQUcsa0JBQWtCLENBQUMscUJBQXFCLENBQUM7UUFFdkUsMkRBQTJEO1FBQzNELCtDQUErQztRQUMvQyxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQzFDLENBQUM7YUFBTSxDQUFDO1lBQ04sb0VBQW9FO1lBQ3BFLG1CQUFXLENBQUMsRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLFVBQVUsQ0FDL0IsYUFBYSxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUkscUNBQXFDO2dCQUNoRSwwREFBMEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQ3BGLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxvQkFBb0I7UUFDN0IsSUFBSSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1lBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTRELENBQzdELENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxxQkFBcUI7UUFDOUIsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1lBQ2pDLE1BQU0sSUFBSSxLQUFLLENBQ2IsNERBQTRELENBQzdELENBQUM7UUFDSixDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsc0JBQXNCLENBQUM7SUFDckMsQ0FBQzs7QUFoR0gsd0NBaUdDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTg2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWxhbWJkYS1ldmVudC1zb3VyY2VzL3Rlc3Qvc3FzLnRlc3QudHNcblxuaW1wb3J0IHsgVG9rZW4sIEFubm90YXRpb25zIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgKiBhcyBjb21wdXRlIGZyb20gXCIuLlwiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vLi5cIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcIi4uLy4uLy4uXCI7XG5pbXBvcnQgKiBhcyBub3RpZnkgZnJvbSBcIi4uLy4uL25vdGlmeVwiO1xuLy8gaW1wb3J0IHsgSUtleSB9IGZyb20gXCIuLi8uLi9lbmNyeXB0aW9uXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3FzRXZlbnRTb3VyY2VQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbGFyZ2VzdCBudW1iZXIgb2YgcmVjb3JkcyB0aGF0IEFXUyBMYW1iZGEgd2lsbCByZXRyaWV2ZSBmcm9tIHlvdXIgZXZlbnRcbiAgICogc291cmNlIGF0IHRoZSB0aW1lIG9mIGludm9raW5nIHlvdXIgZnVuY3Rpb24uIFlvdXIgZnVuY3Rpb24gcmVjZWl2ZXMgYW5cbiAgICogZXZlbnQgd2l0aCBhbGwgdGhlIHJldHJpZXZlZCByZWNvcmRzLlxuICAgKlxuICAgKiBWYWxpZCBSYW5nZTogTWluaW11bSB2YWx1ZSBvZiAxLiBNYXhpbXVtIHZhbHVlIG9mIDEwLlxuICAgKiBJZiBgbWF4QmF0Y2hpbmdXaW5kb3dgIGlzIGNvbmZpZ3VyZWQsIHRoaXMgdmFsdWUgY2FuIGdvIHVwIHRvIDEwLDAwMC5cbiAgICpcbiAgICogQGRlZmF1bHQgMTBcbiAgICovXG4gIHJlYWRvbmx5IGJhdGNoU2l6ZT86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYW1vdW50IG9mIHRpbWUgdG8gZ2F0aGVyIHJlY29yZHMgYmVmb3JlIGludm9raW5nIHRoZSBmdW5jdGlvbi5cbiAgICpcbiAgICogVmFsaWQgUmFuZ2U6IE1pbmltdW0gdmFsdWUgb2YgMCBtaW51dGVzLiBNYXhpbXVtIHZhbHVlIG9mIDUgbWludXRlcy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBiYXRjaGluZyB3aW5kb3cuIFRoZSBsYW1iZGEgZnVuY3Rpb24gd2lsbCBiZSBpbnZva2VkIGltbWVkaWF0ZWx5IHdpdGggdGhlIHJlY29yZHMgdGhhdCBhcmUgYXZhaWxhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4QmF0Y2hpbmdXaW5kb3c/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQWxsb3cgZnVuY3Rpb25zIHRvIHJldHVybiBwYXJ0aWFsbHkgc3VjY2Vzc2Z1bCByZXNwb25zZXMgZm9yIGEgYmF0Y2ggb2YgcmVjb3Jkcy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy93aXRoLXNxcy5odG1sI3NlcnZpY2VzLXNxcy1iYXRjaGZhaWx1cmVyZXBvcnRpbmdcbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHJlcG9ydEJhdGNoSXRlbUZhaWx1cmVzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogSWYgdGhlIFNRUyBldmVudCBzb3VyY2UgbWFwcGluZyBzaG91bGQgYmUgZW5hYmxlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEFkZCBmaWx0ZXIgY3JpdGVyaWEgb3B0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgZmlsdGVycz86IEFycmF5PHsgW2tleTogc3RyaW5nXTogYW55IH0+O1xuXG4gIC8vIC8vIFRPRE86IFJlLUFkZCBLTVMgc3VwcG9ydFxuICAvLyAvKipcbiAgLy8gICogQWRkIEN1c3RvbWVyIG1hbmFnZWQgS01TIGtleSB0byBlbmNyeXB0IEZpbHRlciBDcml0ZXJpYS5cbiAgLy8gICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy9pbnZvY2F0aW9uLWV2ZW50ZmlsdGVyaW5nLmh0bWxcbiAgLy8gICogQnkgZGVmYXVsdCwgTGFtYmRhIHdpbGwgZW5jcnlwdCBGaWx0ZXIgQ3JpdGVyaWEgdXNpbmcgQVdTIG1hbmFnZWQga2V5c1xuICAvLyAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9rbXMvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL2NvbmNlcHRzLmh0bWwjYXdzLW1hbmFnZWQtY21rXG4gIC8vICAqXG4gIC8vICAqIEBkZWZhdWx0IC0gbm9uZVxuICAvLyAgKi9cbiAgLy8gcmVhZG9ubHkgZmlsdGVyRW5jcnlwdGlvbj86IElLZXk7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGNvbmN1cnJlbmN5IHNldHRpbmcgbGltaXRzIHRoZSBudW1iZXIgb2YgY29uY3VycmVudCBpbnN0YW5jZXMgb2YgdGhlIGZ1bmN0aW9uIHRoYXQgYW4gQW1hem9uIFNRUyBldmVudCBzb3VyY2UgY2FuIGludm9rZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy93aXRoLXNxcy5odG1sI2V2ZW50cy1zcXMtbWF4LWNvbmN1cnJlbmN5XG4gICAqXG4gICAqIFZhbGlkIFJhbmdlOiBNaW5pbXVtIHZhbHVlIG9mIDIuIE1heGltdW0gdmFsdWUgb2YgMTAwMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBzcGVjaWZpYyBsaW1pdC5cbiAgICovXG4gIHJlYWRvbmx5IG1heENvbmN1cnJlbmN5PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFVzZSBhbiBBbWF6b24gU1FTIHF1ZXVlIGFzIGFuIGV2ZW50IHNvdXJjZSBmb3IgQVdTIExhbWJkYS5cbiAqL1xuZXhwb3J0IGNsYXNzIFNxc0V2ZW50U291cmNlIGltcGxlbWVudHMgY29tcHV0ZS5JRXZlbnRTb3VyY2Uge1xuICBwcml2YXRlIF9ldmVudFNvdXJjZU1hcHBpbmdJZD86IHN0cmluZyA9IHVuZGVmaW5lZDtcbiAgcHJpdmF0ZSBfZXZlbnRTb3VyY2VNYXBwaW5nQXJuPzogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHJlYWRvbmx5IHF1ZXVlOiBub3RpZnkuSVF1ZXVlLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFNxc0V2ZW50U291cmNlUHJvcHMgPSB7fSxcbiAgKSB7XG4gICAgaWYgKHRoaXMucHJvcHMubWF4QmF0Y2hpbmdXaW5kb3cgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHF1ZXVlLmZpZm8pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQmF0Y2hpbmcgd2luZG93IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEZJRk8gcXVldWVzXCIpO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5wcm9wcy5tYXhCYXRjaGluZ1dpbmRvdy5pc1VucmVzb2x2ZWQoKSAmJlxuICAgICAgICB0aGlzLnByb3BzLm1heEJhdGNoaW5nV2luZG93LnRvU2Vjb25kcygpID4gMzAwXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBNYXhpbXVtIGJhdGNoaW5nIHdpbmRvdyBtdXN0IGJlIDMwMCBzZWNvbmRzIG9yIGxlc3MgKGdpdmVuICR7dGhpcy5wcm9wcy5tYXhCYXRjaGluZ1dpbmRvdy50b0h1bWFuU3RyaW5nKCl9KWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChcbiAgICAgIHRoaXMucHJvcHMuYmF0Y2hTaXplICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICFUb2tlbi5pc1VucmVzb2x2ZWQodGhpcy5wcm9wcy5iYXRjaFNpemUpXG4gICAgKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMucHJvcHMubWF4QmF0Y2hpbmdXaW5kb3cgIT09IHVuZGVmaW5lZCAmJlxuICAgICAgICAodGhpcy5wcm9wcy5iYXRjaFNpemUgPCAxIHx8IHRoaXMucHJvcHMuYmF0Y2hTaXplID4gMTAwMDApXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBNYXhpbXVtIGJhdGNoIHNpemUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDEwMDAwIGluY2x1c2l2ZSAoZ2l2ZW4gJHt0aGlzLnByb3BzLmJhdGNoU2l6ZX0pIHdoZW4gYmF0Y2hpbmcgd2luZG93IGlzIHNwZWNpZmllZC5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnByb3BzLm1heEJhdGNoaW5nV2luZG93ID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKHRoaXMucHJvcHMuYmF0Y2hTaXplIDwgMSB8fCB0aGlzLnByb3BzLmJhdGNoU2l6ZSA+IDEwKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgTWF4aW11bSBiYXRjaCBzaXplIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMCBpbmNsdXNpdmUgKGdpdmVuICR7dGhpcy5wcm9wcy5iYXRjaFNpemV9KSB3aGVuIGJhdGNoaW5nIHdpbmRvdyBpcyBub3Qgc3BlY2lmaWVkLmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGJpbmQodGFyZ2V0OiBjb21wdXRlLklGdW5jdGlvbikge1xuICAgIGNvbnN0IGV2ZW50U291cmNlTWFwcGluZyA9IHRhcmdldC5hZGRFdmVudFNvdXJjZU1hcHBpbmcoXG4gICAgICBgU3FzRXZlbnRTb3VyY2U6JHtBd3NTdGFjay51bmlxdWVJZCh0aGlzLnF1ZXVlLm5vZGUpfWAsXG4gICAgICB7XG4gICAgICAgIGJhdGNoU2l6ZTogdGhpcy5wcm9wcy5iYXRjaFNpemUsXG4gICAgICAgIG1heEJhdGNoaW5nV2luZG93OiB0aGlzLnByb3BzLm1heEJhdGNoaW5nV2luZG93LFxuICAgICAgICBtYXhDb25jdXJyZW5jeTogdGhpcy5wcm9wcy5tYXhDb25jdXJyZW5jeSxcbiAgICAgICAgcmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXM6IHRoaXMucHJvcHMucmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXMsXG4gICAgICAgIGVuYWJsZWQ6IHRoaXMucHJvcHMuZW5hYmxlZCxcbiAgICAgICAgZXZlbnRTb3VyY2VBcm46IHRoaXMucXVldWUucXVldWVBcm4sXG4gICAgICAgIGZpbHRlcnM6IHRoaXMucHJvcHMuZmlsdGVycyxcbiAgICAgICAgLy8gZmlsdGVyRW5jcnlwdGlvbjogdGhpcy5wcm9wcy5maWx0ZXJFbmNyeXB0aW9uLCAvLyBUT0RPOiBSZS1BZGQgS01TIHN1cHBvcnRcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLl9ldmVudFNvdXJjZU1hcHBpbmdJZCA9IGV2ZW50U291cmNlTWFwcGluZy5ldmVudFNvdXJjZU1hcHBpbmdJZDtcbiAgICB0aGlzLl9ldmVudFNvdXJjZU1hcHBpbmdBcm4gPSBldmVudFNvdXJjZU1hcHBpbmcuZXZlbnRTb3VyY2VNYXBwaW5nQXJuO1xuXG4gICAgLy8gb25seSBncmFudCBhY2Nlc3MgaWYgdGhlIGxhbWJkYSBmdW5jdGlvbiBoYXMgYW4gSUFNIHJvbGVcbiAgICAvLyBvdGhlcndpc2UgdGhlIElBTSBtb2R1bGUgd2lsbCB0aHJvdyBhbiBlcnJvclxuICAgIGlmICh0YXJnZXQucm9sZSkge1xuICAgICAgdGhpcy5xdWV1ZS5ncmFudENvbnN1bWVNZXNzYWdlcyh0YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBcIkBhd3MtY2RrL2F3cy1sYW1iZGEtZXZlbnQtc291cmNlczpzcXNGdW5jdGlvbkltcG9ydFdpdGhvdXRSb2xlXCIsXG4gICAgICBBbm5vdGF0aW9ucy5vZih0YXJnZXQpLmFkZFdhcm5pbmcoXG4gICAgICAgIGBGdW5jdGlvbiAnJHt0YXJnZXQubm9kZS5wYXRofScgd2FzIGltcG9ydGVkIHdpdGhvdXQgYW4gSUFNIHJvbGUgYCArXG4gICAgICAgICAgYHNvIGl0IHdhcyBub3QgZ3JhbnRlZCBhY2Nlc3MgdG8gY29uc3VtZSBtZXNzYWdlcyBmcm9tICcke3RoaXMucXVldWUubm9kZS5wYXRofSdgLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgZm9yIHRoaXMgRXZlbnRTb3VyY2VNYXBwaW5nXG4gICAqL1xuICBwdWJsaWMgZ2V0IGV2ZW50U291cmNlTWFwcGluZ0lkKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9ldmVudFNvdXJjZU1hcHBpbmdJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlNxc0V2ZW50U291cmNlIGlzIG5vdCB5ZXQgYm91bmQgdG8gYW4gZXZlbnQgc291cmNlIG1hcHBpbmdcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ldmVudFNvdXJjZU1hcHBpbmdJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIGZvciB0aGlzIEV2ZW50U291cmNlTWFwcGluZ1xuICAgKi9cbiAgcHVibGljIGdldCBldmVudFNvdXJjZU1hcHBpbmdBcm4oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2V2ZW50U291cmNlTWFwcGluZ0Fybikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlNxc0V2ZW50U291cmNlIGlzIG5vdCB5ZXQgYm91bmQgdG8gYW4gZXZlbnQgc291cmNlIG1hcHBpbmdcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ldmVudFNvdXJjZU1hcHBpbmdBcm47XG4gIH1cbn1cbiJdfQ==
84
+ SqsEventSource[_a] = { fqn: "terraconstructs.aws.compute.sources.SqsEventSource", version: "0.2.0" };
85
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL2V2ZW50LXNvdXJjZXMvc3FzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsOEdBQThHO0FBRTlHLGlDQUEyQztBQUUzQyw2QkFBaUM7QUF3RWpDOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBSXpCLFlBQ1csS0FBb0IsRUFDWixRQUE2QixFQUFFO1FBRHZDLFVBQUssR0FBTCxLQUFLLENBQWU7UUFDWixVQUFLLEdBQUwsS0FBSyxDQUEwQjtRQUwxQywwQkFBcUIsR0FBWSxTQUFTLENBQUM7UUFDM0MsMkJBQXNCLEdBQVksU0FBUyxDQUFDO1FBTWxELElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTLEVBQUUsQ0FBQztZQUMvQyxJQUFJLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDZixNQUFNLElBQUksS0FBSyxDQUFDLGtEQUFrRCxDQUFDLENBQUM7WUFDdEUsQ0FBQztZQUNELElBQ0UsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLFlBQVksRUFBRTtnQkFDNUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxTQUFTLEVBQUUsR0FBRyxHQUFHLEVBQzlDLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYiw4REFBOEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsR0FBRyxDQUM5RyxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7UUFDRCxJQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxLQUFLLFNBQVM7WUFDbEMsQ0FBQyxhQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQ3pDLENBQUM7WUFDRCxJQUNFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLEtBQUssU0FBUztnQkFDMUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxDQUFDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDLEVBQzFELENBQUM7Z0JBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixtRUFBbUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLHNDQUFzQyxDQUM5SCxDQUFDO1lBQ0osQ0FBQztZQUNELElBQ0UsSUFBSSxDQUFDLEtBQUssQ0FBQyxpQkFBaUIsS0FBSyxTQUFTO2dCQUMxQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsRUFDdkQsQ0FBQztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUNiLGdFQUFnRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsMENBQTBDLENBQy9ILENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFFTSxJQUFJLENBQUMsTUFBeUI7UUFDbkMsTUFBTSxrQkFBa0IsR0FBRyxNQUFNLENBQUMscUJBQXFCLENBQ3JELGtCQUFrQixZQUFRLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFDdEQ7WUFDRSxTQUFTLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTO1lBQy9CLGlCQUFpQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCO1lBQy9DLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWM7WUFDekMsdUJBQXVCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyx1QkFBdUI7WUFDM0QsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztZQUMzQixjQUFjLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1lBQ25DLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU87WUFDM0IsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7U0FDOUMsQ0FDRixDQUFDO1FBQ0YsSUFBSSxDQUFDLHFCQUFxQixHQUFHLGtCQUFrQixDQUFDLG9CQUFvQixDQUFDO1FBQ3JFLElBQUksQ0FBQyxzQkFBc0IsR0FBRyxrQkFBa0IsQ0FBQyxxQkFBcUIsQ0FBQztRQUV2RSwyREFBMkQ7UUFDM0QsK0NBQStDO1FBQy9DLElBQUksTUFBTSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ2hCLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDMUMsQ0FBQzthQUFNLENBQUM7WUFDTixvRUFBb0U7WUFDcEUsbUJBQVcsQ0FBQyxFQUFFLENBQUMsTUFBTSxDQUFDLENBQUMsVUFBVSxDQUMvQixhQUFhLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxxQ0FBcUM7Z0JBQ2hFLDBEQUEwRCxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FDcEYsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLG9CQUFvQjtRQUM3QixJQUFJLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7WUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxxQkFBcUIsQ0FBQztJQUNwQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxJQUFXLHFCQUFxQjtRQUM5QixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFLENBQUM7WUFDakMsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxzQkFBc0IsQ0FBQztJQUNyQyxDQUFDOztBQWhHSCx3Q0FpR0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xODYuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtbGFtYmRhLWV2ZW50LXNvdXJjZXMvdGVzdC9zcXMudGVzdC50c1xuXG5pbXBvcnQgeyBUb2tlbiwgQW5ub3RhdGlvbnMgfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCAqIGFzIGNvbXB1dGUgZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi8uLlwiO1xuaW1wb3J0IHsgRHVyYXRpb24gfSBmcm9tIFwiLi4vLi4vLi5cIjtcbmltcG9ydCB7IElLZXkgfSBmcm9tIFwiLi4vLi4vZW5jcnlwdGlvblwiO1xuaW1wb3J0ICogYXMgbm90aWZ5IGZyb20gXCIuLi8uLi9ub3RpZnlcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTcXNFdmVudFNvdXJjZVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBsYXJnZXN0IG51bWJlciBvZiByZWNvcmRzIHRoYXQgQVdTIExhbWJkYSB3aWxsIHJldHJpZXZlIGZyb20geW91ciBldmVudFxuICAgKiBzb3VyY2UgYXQgdGhlIHRpbWUgb2YgaW52b2tpbmcgeW91ciBmdW5jdGlvbi4gWW91ciBmdW5jdGlvbiByZWNlaXZlcyBhblxuICAgKiBldmVudCB3aXRoIGFsbCB0aGUgcmV0cmlldmVkIHJlY29yZHMuXG4gICAqXG4gICAqIFZhbGlkIFJhbmdlOiBNaW5pbXVtIHZhbHVlIG9mIDEuIE1heGltdW0gdmFsdWUgb2YgMTAuXG4gICAqIElmIGBtYXhCYXRjaGluZ1dpbmRvd2AgaXMgY29uZmlndXJlZCwgdGhpcyB2YWx1ZSBjYW4gZ28gdXAgdG8gMTAsMDAwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAxMFxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0byBnYXRoZXIgcmVjb3JkcyBiZWZvcmUgaW52b2tpbmcgdGhlIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBWYWxpZCBSYW5nZTogTWluaW11bSB2YWx1ZSBvZiAwIG1pbnV0ZXMuIE1heGltdW0gdmFsdWUgb2YgNSBtaW51dGVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGJhdGNoaW5nIHdpbmRvdy4gVGhlIGxhbWJkYSBmdW5jdGlvbiB3aWxsIGJlIGludm9rZWQgaW1tZWRpYXRlbHkgd2l0aCB0aGUgcmVjb3JkcyB0aGF0IGFyZSBhdmFpbGFibGUuXG4gICAqL1xuICByZWFkb25seSBtYXhCYXRjaGluZ1dpbmRvdz86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBmdW5jdGlvbnMgdG8gcmV0dXJuIHBhcnRpYWxseSBzdWNjZXNzZnVsIHJlc3BvbnNlcyBmb3IgYSBiYXRjaCBvZiByZWNvcmRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3dpdGgtc3FzLmh0bWwjc2VydmljZXMtc3FzLWJhdGNoZmFpbHVyZXJlcG9ydGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgU1FTIGV2ZW50IHNvdXJjZSBtYXBwaW5nIHNob3VsZCBiZSBlbmFibGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQWRkIGZpbHRlciBjcml0ZXJpYSBvcHRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBmaWx0ZXJzPzogQXJyYXk8eyBba2V5OiBzdHJpbmddOiBhbnkgfT47XG5cbiAgLyoqXG4gICAqIEFkZCBDdXN0b21lciBtYW5hZ2VkIEtNUyBrZXkgdG8gZW5jcnlwdCBGaWx0ZXIgQ3JpdGVyaWEuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvaW52b2NhdGlvbi1ldmVudGZpbHRlcmluZy5odG1sXG4gICAqIEJ5IGRlZmF1bHQsIExhbWJkYSB3aWxsIGVuY3J5cHQgRmlsdGVyIENyaXRlcmlhIHVzaW5nIEFXUyBtYW5hZ2VkIGtleXNcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9jb25jZXB0cy5odG1sI2F3cy1tYW5hZ2VkLWNta1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlckVuY3J5cHRpb24/OiBJS2V5O1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBjb25jdXJyZW5jeSBzZXR0aW5nIGxpbWl0cyB0aGUgbnVtYmVyIG9mIGNvbmN1cnJlbnQgaW5zdGFuY2VzIG9mIHRoZSBmdW5jdGlvbiB0aGF0IGFuIEFtYXpvbiBTUVMgZXZlbnQgc291cmNlIGNhbiBpbnZva2UuXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvd2l0aC1zcXMuaHRtbCNldmVudHMtc3FzLW1heC1jb25jdXJyZW5jeVxuICAgKlxuICAgKiBWYWxpZCBSYW5nZTogTWluaW11bSB2YWx1ZSBvZiAyLiBNYXhpbXVtIHZhbHVlIG9mIDEwMDAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gc3BlY2lmaWMgbGltaXQuXG4gICAqL1xuICByZWFkb25seSBtYXhDb25jdXJyZW5jeT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBVc2UgYW4gQW1hem9uIFNRUyBxdWV1ZSBhcyBhbiBldmVudCBzb3VyY2UgZm9yIEFXUyBMYW1iZGEuXG4gKi9cbmV4cG9ydCBjbGFzcyBTcXNFdmVudFNvdXJjZSBpbXBsZW1lbnRzIGNvbXB1dGUuSUV2ZW50U291cmNlIHtcbiAgcHJpdmF0ZSBfZXZlbnRTb3VyY2VNYXBwaW5nSWQ/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG4gIHByaXZhdGUgX2V2ZW50U291cmNlTWFwcGluZ0Fybj86IHN0cmluZyA9IHVuZGVmaW5lZDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICByZWFkb25seSBxdWV1ZTogbm90aWZ5LklRdWV1ZSxcbiAgICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBTcXNFdmVudFNvdXJjZVByb3BzID0ge30sXG4gICkge1xuICAgIGlmICh0aGlzLnByb3BzLm1heEJhdGNoaW5nV2luZG93ICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChxdWV1ZS5maWZvKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcIkJhdGNoaW5nIHdpbmRvdyBpcyBub3Qgc3VwcG9ydGVkIGZvciBGSUZPIHF1ZXVlc1wiKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgIXRoaXMucHJvcHMubWF4QmF0Y2hpbmdXaW5kb3cuaXNVbnJlc29sdmVkKCkgJiZcbiAgICAgICAgdGhpcy5wcm9wcy5tYXhCYXRjaGluZ1dpbmRvdy50b1NlY29uZHMoKSA+IDMwMFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgTWF4aW11bSBiYXRjaGluZyB3aW5kb3cgbXVzdCBiZSAzMDAgc2Vjb25kcyBvciBsZXNzIChnaXZlbiAke3RoaXMucHJvcHMubWF4QmF0Y2hpbmdXaW5kb3cudG9IdW1hblN0cmluZygpfSlgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgICBpZiAoXG4gICAgICB0aGlzLnByb3BzLmJhdGNoU2l6ZSAhPT0gdW5kZWZpbmVkICYmXG4gICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKHRoaXMucHJvcHMuYmF0Y2hTaXplKVxuICAgICkge1xuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnByb3BzLm1heEJhdGNoaW5nV2luZG93ICE9PSB1bmRlZmluZWQgJiZcbiAgICAgICAgKHRoaXMucHJvcHMuYmF0Y2hTaXplIDwgMSB8fCB0aGlzLnByb3BzLmJhdGNoU2l6ZSA+IDEwMDAwKVxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgTWF4aW11bSBiYXRjaCBzaXplIG11c3QgYmUgYmV0d2VlbiAxIGFuZCAxMDAwMCBpbmNsdXNpdmUgKGdpdmVuICR7dGhpcy5wcm9wcy5iYXRjaFNpemV9KSB3aGVuIGJhdGNoaW5nIHdpbmRvdyBpcyBzcGVjaWZpZWQuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgdGhpcy5wcm9wcy5tYXhCYXRjaGluZ1dpbmRvdyA9PT0gdW5kZWZpbmVkICYmXG4gICAgICAgICh0aGlzLnByb3BzLmJhdGNoU2l6ZSA8IDEgfHwgdGhpcy5wcm9wcy5iYXRjaFNpemUgPiAxMClcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYE1heGltdW0gYmF0Y2ggc2l6ZSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAgaW5jbHVzaXZlIChnaXZlbiAke3RoaXMucHJvcHMuYmF0Y2hTaXplfSkgd2hlbiBiYXRjaGluZyB3aW5kb3cgaXMgbm90IHNwZWNpZmllZC5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBiaW5kKHRhcmdldDogY29tcHV0ZS5JRnVuY3Rpb24pIHtcbiAgICBjb25zdCBldmVudFNvdXJjZU1hcHBpbmcgPSB0YXJnZXQuYWRkRXZlbnRTb3VyY2VNYXBwaW5nKFxuICAgICAgYFNxc0V2ZW50U291cmNlOiR7QXdzU3RhY2sudW5pcXVlSWQodGhpcy5xdWV1ZS5ub2RlKX1gLFxuICAgICAge1xuICAgICAgICBiYXRjaFNpemU6IHRoaXMucHJvcHMuYmF0Y2hTaXplLFxuICAgICAgICBtYXhCYXRjaGluZ1dpbmRvdzogdGhpcy5wcm9wcy5tYXhCYXRjaGluZ1dpbmRvdyxcbiAgICAgICAgbWF4Q29uY3VycmVuY3k6IHRoaXMucHJvcHMubWF4Q29uY3VycmVuY3ksXG4gICAgICAgIHJlcG9ydEJhdGNoSXRlbUZhaWx1cmVzOiB0aGlzLnByb3BzLnJlcG9ydEJhdGNoSXRlbUZhaWx1cmVzLFxuICAgICAgICBlbmFibGVkOiB0aGlzLnByb3BzLmVuYWJsZWQsXG4gICAgICAgIGV2ZW50U291cmNlQXJuOiB0aGlzLnF1ZXVlLnF1ZXVlQXJuLFxuICAgICAgICBmaWx0ZXJzOiB0aGlzLnByb3BzLmZpbHRlcnMsXG4gICAgICAgIGZpbHRlckVuY3J5cHRpb246IHRoaXMucHJvcHMuZmlsdGVyRW5jcnlwdGlvbixcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLl9ldmVudFNvdXJjZU1hcHBpbmdJZCA9IGV2ZW50U291cmNlTWFwcGluZy5ldmVudFNvdXJjZU1hcHBpbmdJZDtcbiAgICB0aGlzLl9ldmVudFNvdXJjZU1hcHBpbmdBcm4gPSBldmVudFNvdXJjZU1hcHBpbmcuZXZlbnRTb3VyY2VNYXBwaW5nQXJuO1xuXG4gICAgLy8gb25seSBncmFudCBhY2Nlc3MgaWYgdGhlIGxhbWJkYSBmdW5jdGlvbiBoYXMgYW4gSUFNIHJvbGVcbiAgICAvLyBvdGhlcndpc2UgdGhlIElBTSBtb2R1bGUgd2lsbCB0aHJvdyBhbiBlcnJvclxuICAgIGlmICh0YXJnZXQucm9sZSkge1xuICAgICAgdGhpcy5xdWV1ZS5ncmFudENvbnN1bWVNZXNzYWdlcyh0YXJnZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBcIkBhd3MtY2RrL2F3cy1sYW1iZGEtZXZlbnQtc291cmNlczpzcXNGdW5jdGlvbkltcG9ydFdpdGhvdXRSb2xlXCIsXG4gICAgICBBbm5vdGF0aW9ucy5vZih0YXJnZXQpLmFkZFdhcm5pbmcoXG4gICAgICAgIGBGdW5jdGlvbiAnJHt0YXJnZXQubm9kZS5wYXRofScgd2FzIGltcG9ydGVkIHdpdGhvdXQgYW4gSUFNIHJvbGUgYCArXG4gICAgICAgICAgYHNvIGl0IHdhcyBub3QgZ3JhbnRlZCBhY2Nlc3MgdG8gY29uc3VtZSBtZXNzYWdlcyBmcm9tICcke3RoaXMucXVldWUubm9kZS5wYXRofSdgLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgZm9yIHRoaXMgRXZlbnRTb3VyY2VNYXBwaW5nXG4gICAqL1xuICBwdWJsaWMgZ2V0IGV2ZW50U291cmNlTWFwcGluZ0lkKCk6IHN0cmluZyB7XG4gICAgaWYgKCF0aGlzLl9ldmVudFNvdXJjZU1hcHBpbmdJZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlNxc0V2ZW50U291cmNlIGlzIG5vdCB5ZXQgYm91bmQgdG8gYW4gZXZlbnQgc291cmNlIG1hcHBpbmdcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ldmVudFNvdXJjZU1hcHBpbmdJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIGZvciB0aGlzIEV2ZW50U291cmNlTWFwcGluZ1xuICAgKi9cbiAgcHVibGljIGdldCBldmVudFNvdXJjZU1hcHBpbmdBcm4oKTogc3RyaW5nIHtcbiAgICBpZiAoIXRoaXMuX2V2ZW50U291cmNlTWFwcGluZ0Fybikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIlNxc0V2ZW50U291cmNlIGlzIG5vdCB5ZXQgYm91bmQgdG8gYW4gZXZlbnQgc291cmNlIG1hcHBpbmdcIixcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl9ldmVudFNvdXJjZU1hcHBpbmdBcm47XG4gIH1cbn1cbiJdfQ==
@@ -357,7 +357,7 @@ class JsonPath {
357
357
  }
358
358
  exports.JsonPath = JsonPath;
359
359
  _a = JSII_RTTI_SYMBOL_1;
360
- JsonPath[_a] = { fqn: "terraconstructs.aws.compute.JsonPath", version: "0.1.10" };
360
+ JsonPath[_a] = { fqn: "terraconstructs.aws.compute.JsonPath", version: "0.2.0" };
361
361
  /**
362
362
  * Special string value to discard state input, output or result.
363
363
  */
@@ -414,7 +414,7 @@ class Data {
414
414
  }
415
415
  exports.Data = Data;
416
416
  _b = JSII_RTTI_SYMBOL_1;
417
- Data[_b] = { fqn: "terraconstructs.aws.compute.Data", version: "0.1.10" };
417
+ Data[_b] = { fqn: "terraconstructs.aws.compute.Data", version: "0.2.0" };
418
418
  /**
419
419
  * Extract a field from the State Machine Context data
420
420
  *
@@ -460,7 +460,7 @@ class Context {
460
460
  }
461
461
  exports.Context = Context;
462
462
  _c = JSII_RTTI_SYMBOL_1;
463
- Context[_c] = { fqn: "terraconstructs.aws.compute.Context", version: "0.1.10" };
463
+ Context[_c] = { fqn: "terraconstructs.aws.compute.Context", version: "0.2.0" };
464
464
  /**
465
465
  * Helper functions to work with structures containing fields
466
466
  */
@@ -491,7 +491,7 @@ class FieldUtils {
491
491
  }
492
492
  exports.FieldUtils = FieldUtils;
493
493
  _d = JSII_RTTI_SYMBOL_1;
494
- FieldUtils[_d] = { fqn: "terraconstructs.aws.compute.FieldUtils", version: "0.1.10" };
494
+ FieldUtils[_d] = { fqn: "terraconstructs.aws.compute.FieldUtils", version: "0.2.0" };
495
495
  function validateJsonPath(path) {
496
496
  const intrinsicFunctionNames = [
497
497
  // Intrinsics for arrays
@@ -184,5 +184,5 @@ class Alias extends function_base_1.QualifiedFunctionBase {
184
184
  }
185
185
  exports.Alias = Alias;
186
186
  _a = JSII_RTTI_SYMBOL_1;
187
- Alias[_a] = { fqn: "terraconstructs.aws.compute.Alias", version: "0.1.10" };
187
+ Alias[_a] = { fqn: "terraconstructs.aws.compute.Alias", version: "0.2.0" };
188
188
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb24tYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZnVuY3Rpb24tYWxpYXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBc0U7QUFJdEUsbURBQW1FO0FBb0huRTs7R0FFRztBQUNILE1BQWEsS0FBTSxTQUFRLHFDQUFxQjtJQUN2QyxNQUFNLENBQUMsbUJBQW1CLENBQy9CLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUFzQjtRQUV0QixNQUFNLFFBQVMsU0FBUSxxQ0FBcUI7WUFHMUM7O2VBRUc7WUFDSCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUM7WUFDdkMsQ0FBQztZQUNELElBQVcsMEJBQTBCO2dCQUNuQyxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDO1lBQ2pDLENBQUM7WUFDRCxJQUFXLGlCQUFpQjtnQkFDMUIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQztZQUNqQyxDQUFDO1lBUUQsSUFBVyxZQUFZO2dCQUNyQixPQUFPO29CQUNMLElBQUksRUFBRSxLQUFLLENBQUMsU0FBUztvQkFDckIsU0FBUyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsU0FBUztpQkFDbkMsQ0FBQztZQUNKLENBQUM7WUFDRCxJQUFXLE9BQU87Z0JBQ2hCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQztZQUMzQixDQUFDO1lBR0QsWUFBWSxDQUFZLEVBQUUsQ0FBUztnQkFDakMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFoQ0UsY0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7Z0JBYTVCLFdBQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxDQUFDO2dCQUN4QixnQkFBVyxHQUFHLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxXQUFXLElBQUksS0FBSyxDQUFDLFNBQVMs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K0NBQStDO0lBQy9DLDBDQUEwQztJQUMxQyxxREFBcUQ7SUFDckQsNkRBQTZEO0lBQzdELDhEQUE4RDtJQUM5RCxnQ0FBZ0M7SUFDaEMsU0FBUztJQUNULFFBQVE7SUFDUixJQUFJO0lBRUo7O09BRUc7SUFDSyxzQkFBc0IsQ0FDNUIsS0FBaUI7UUFFakIsSUFBSSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsSUFBSSxLQUFLLENBQUMsa0JBQWtCLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3ZFLE9BQU8sU0FBUyxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLEtBQUssR0FBRyxDQUFDLENBQUM7UUFDZCxNQUFNLHdCQUF3QixHQUE4QixFQUFFLENBQUM7UUFDL0QsS0FBSyxNQUFNLEVBQUUsSUFBSSxLQUFLLENBQUMsa0JBQWtCLEVBQUUsQ0FBQztZQUMxQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ25DLE1BQU0sSUFBSSxLQUFLLENBQ2IsMkRBQTJELEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FDdkUsQ0FBQztZQUNKLENBQUM7WUFDRCxLQUFLLElBQUksRUFBRSxDQUFDLE1BQU0sQ0FBQztZQUNuQix3QkFBd0IsQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNuRCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDZCxNQUFNLElBQUksS0FBSyxDQUNiLDZEQUE2RCxLQUFLLEVBQUUsQ0FDckUsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPO1lBQ0wsd0JBQXdCO1NBQ3pCLENBQUM7SUFDSixDQUFDOztBQXJQSCxzQkErUUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBsYW1iZGFBbGlhcywgZGF0YUF3c0xhbWJkYUFsaWFzIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBcmNoaXRlY3R1cmUgfSBmcm9tIFwiLi9hcmNoaXRlY3R1cmVcIjtcbmltcG9ydCB7IEV2ZW50SW52b2tlQ29uZmlnT3B0aW9ucyB9IGZyb20gXCIuL2V2ZW50LWludm9rZS1jb25maWdcIjtcbmltcG9ydCB7IElGdW5jdGlvbiwgUXVhbGlmaWVkRnVuY3Rpb25CYXNlIH0gZnJvbSBcIi4vZnVuY3Rpb24tYmFzZVwiO1xuLy8gaW1wb3J0IHsgU2NhbGFibGVGdW5jdGlvbkF0dHJpYnV0ZSB9IGZyb20gXCIuL3ByaXZhdGUvc2NhbGFibGUtZnVuY3Rpb24tYXR0cmlidXRlXCI7XG4vLyBpbXBvcnQge1xuLy8gICBBdXRvU2NhbGluZ09wdGlvbnMsXG4vLyAgIElTY2FsYWJsZUZ1bmN0aW9uQXR0cmlidXRlLFxuLy8gfSBmcm9tIFwiLi9zY2FsYWJsZS1hdHRyaWJ1dGUtYXBpXCI7XG4vLyBpbXBvcnQgeyBBcm5Gb3JtYXQgfSBmcm9tIFwiLi4vXCI7XG5cbi8qKlxuICogT3V0cHV0cyB0aGF0IGNhbiBiZSBleHBvc2VkIHRocm91Z2ggdGhlIGdyaWRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBbGlhc091dHB1dHMge1xuICAvKipcbiAgICogVGhlIEFtYXpvbiBSZXNvdXJjZSBOYW1lIChBUk4pIGlkZW50aWZ5aW5nIHlvdXIgTGFtYmRhIGZ1bmN0aW9uIGFsaWFzLlxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIHRvIGJlIHVzZWQgZm9yIGludm9raW5nIExhbWJkYSBGdW5jdGlvbiBmcm9tIEFQSSBHYXRld2F5IC0gdG8gYmUgdXNlZCBpbiBgYXdzX2FwaV9nYXRld2F5X2ludGVncmF0aW9uYCdzIHVyaVxuICAgKi9cbiAgcmVhZG9ubHkgaW52b2tlQXJuOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSUFsaWFzIGV4dGVuZHMgSUZ1bmN0aW9uIHtcbiAgLyoqIHN0cm9uZ2x5IHR5cGVkIGFsaWFzT3V0cHV0cyAqL1xuICByZWFkb25seSBhbGlhc091dHB1dHM6IEFsaWFzT3V0cHV0cztcblxuICAvKipcbiAgICogTmFtZSBvZiB0aGlzIGFsaWFzLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgTGFtYmRhIGZ1bmN0aW9uXG4gICAqL1xuICByZWFkb25seSBsYW1iZGE6IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIHVuZGVybHlpbmcgTGFtYmRhIGZ1bmN0aW9uIHZlcnNpb24uXG4gICAqL1xuICByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYGxhbWJkYS5BbGlhc2AuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNPcHRpb25zIGV4dGVuZHMgRXZlbnRJbnZva2VDb25maWdPcHRpb25zIHtcbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIGZvciB0aGUgYWxpYXNcbiAgICpcbiAgICogQGRlZmF1bHQgTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIHZlcnNpb25zIHdpdGggaW5kaXZpZHVhbCB3ZWlnaHRzIHRoaXMgYWxpYXMgcG9pbnRzIHRvXG4gICAqXG4gICAqIEluZGl2aWR1YWwgYWRkaXRpb25hbCB2ZXJzaW9uIHdlaWdodHMgc3BlY2lmaWVkIGhlcmUgc2hvdWxkIGFkZCB1cCB0b1xuICAgKiAobGVzcyB0aGFuKSBvbmUuIEFsbCByZW1haW5pbmcgd2VpZ2h0IGlzIHJvdXRlZCB0byB0aGUgZGVmYXVsdFxuICAgKiB2ZXJzaW9uLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgdGhlIGNvbmZpZyBpc1xuICAgKlxuICAgKiAgICB2ZXJzaW9uOiBcIjFcIlxuICAgKiAgICBhZGRpdGlvbmFsVmVyc2lvbnM6IFt7IHZlcnNpb246IFwiMlwiLCB3ZWlnaHQ6IDAuMDUgfV1cbiAgICpcbiAgICogVGhlbiA1JSBvZiB0cmFmZmljIHdpbGwgYmUgcm91dGVkIHRvIGZ1bmN0aW9uIHZlcnNpb24gMiwgd2hpbGVcbiAgICogdGhlIHJlbWFpbmluZyA5NSUgb2YgdHJhZmZpYyB3aWxsIGJlIHJvdXRlZCB0byBmdW5jdGlvbiB2ZXJzaW9uIDEuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGFkZGl0aW9uYWwgdmVyc2lvbnNcbiAgICovXG4gIHJlYWRvbmx5IGFkZGl0aW9uYWxWZXJzaW9ucz86IFZlcnNpb25XZWlnaHRbXTtcblxuICAvLyBUT0RPOiByZS1hZGQgc3VwcG9ydCBmb3IgcHJvdmlzaW9uZWQgY29uY3VycmVuY3lcbiAgLy8gLyoqXG4gIC8vICAqIFNwZWNpZmllcyBhIHByb3Zpc2lvbmVkIGNvbmN1cnJlbmN5IGNvbmZpZ3VyYXRpb24gZm9yIGEgZnVuY3Rpb24ncyBhbGlhcy5cbiAgLy8gICpcbiAgLy8gICogQGRlZmF1bHQgTm8gcHJvdmlzaW9uZWQgY29uY3VycmVuY3lcbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IHByb3Zpc2lvbmVkQ29uY3VycmVudEV4ZWN1dGlvbnM/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBuZXcgTGFtYmRhIGFsaWFzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWxpYXNQcm9wcyBleHRlbmRzIEFsaWFzT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgYWxpYXNcbiAgICpcbiAgICogTWluaW11bSBsZW5ndGggb2YgMS4gTWF4aW11bSBsZW5ndGggb2YgMTI4LlxuICAgKiBQYXR0ZXJuOiAoPyFeWzAtOV0rJCkoW2EtekEtWjAtOS1fXSspXG4gICAqXG4gICAqL1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogRnVuY3Rpb24gdGhpcyBhbGlhcyByZWZlcnMgdG9cbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uOiBJRnVuY3Rpb247XG5cbiAgLyoqXG4gICAqIEZ1bmN0aW9uIHZlcnNpb24gdGhpcyBhbGlhcyByZWZlcnMgdG9cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjY4LjAvZG9jcy9yZXNvdXJjZXMvbGFtYmRhX2FsaWFzI2Z1bmN0aW9uX3ZlcnNpb24gTGFtYmRhQWxpYXMjZnVuY3Rpb25fdmVyc2lvbn1cbiAgICogcGF0dGVybiAoXFwkTEFURVNUfFswLTldKylcbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBBbGlhc0F0dHJpYnV0ZXMge1xuICByZWFkb25seSBhbGlhc05hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcbn1cblxuLyoqXG4gKiBBIG5ldyBhbGlhcyB0byBhIHBhcnRpY3VsYXIgdmVyc2lvbiBvZiBhIExhbWJkYSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIEFsaWFzIGV4dGVuZHMgUXVhbGlmaWVkRnVuY3Rpb25CYXNlIGltcGxlbWVudHMgSUFsaWFzIHtcbiAgcHVibGljIHN0YXRpYyBmcm9tQWxpYXNBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogQWxpYXNBdHRyaWJ1dGVzLFxuICApOiBJQWxpYXMge1xuICAgIGNsYXNzIEltcG9ydGVkIGV4dGVuZHMgUXVhbGlmaWVkRnVuY3Rpb25CYXNlIGltcGxlbWVudHMgSUFsaWFzIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogZGF0YUF3c0xhbWJkYUFsaWFzLkRhdGFBd3NMYW1iZGFBbGlhcztcbiAgICAgIHB1YmxpYyByZWFkb25seSBhbGlhc05hbWUgPSBhdHRycy5hbGlhc05hbWU7XG4gICAgICAvKipcbiAgICAgICAqIExhbWJkYSBmdW5jdGlvbiB2ZXJzaW9uIHdoaWNoIHRoZSBhbGlhcyB1c2VzLlxuICAgICAgICovXG4gICAgICBwdWJsaWMgZ2V0IHZlcnNpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlLmZ1bmN0aW9uVmVyc2lvbjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgZnVuY3Rpb25RdWFsaWZpZWRJbnZva2VBcm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgZnVuY3Rpb25JbnZva2VBcm4oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyByZWFkb25seSBsYW1iZGEgPSBhdHRycy5mdW5jdGlvbjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbkFybiA9IGAke2F0dHJzLmZ1bmN0aW9uLmZ1bmN0aW9uQXJufToke2F0dHJzLmFsaWFzTmFtZX1gO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGZ1bmN0aW9uTmFtZSA9IGAke2F0dHJzLmZ1bmN0aW9uLmZ1bmN0aW9uTmFtZX06JHthdHRycy5hbGlhc05hbWV9YDtcbiAgICAgIHB1YmxpYyByZWFkb25seSBncmFudFByaW5jaXBhbCA9IGF0dHJzLmZ1bmN0aW9uLmdyYW50UHJpbmNpcGFsO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJvbGUgPSBhdHRycy5mdW5jdGlvbi5yb2xlO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGFyY2hpdGVjdHVyZSA9IGF0dHJzLmZ1bmN0aW9uLmFyY2hpdGVjdHVyZTtcblxuICAgICAgcHVibGljIGdldCBhbGlhc091dHB1dHMoKTogQWxpYXNPdXRwdXRzIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBuYW1lOiBhdHRycy5hbGlhc05hbWUsXG4gICAgICAgICAgaW52b2tlQXJuOiB0aGlzLnJlc291cmNlLmludm9rZUFybixcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIHB1YmxpYyBnZXQgb3V0cHV0cygpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuYWxpYXNPdXRwdXRzO1xuICAgICAgfVxuICAgICAgcHJvdGVjdGVkIHJlYWRvbmx5IGNhbkNyZWF0ZVBlcm1pc3Npb25zID0gdGhpcy5faXNTdGFja0FjY291bnQoKTtcbiAgICAgIHByb3RlY3RlZCByZWFkb25seSBxdWFsaWZpZXIgPSBhdHRycy5hbGlhc05hbWU7XG4gICAgICBjb25zdHJ1Y3RvcihzOiBDb25zdHJ1Y3QsIGk6IHN0cmluZykge1xuICAgICAgICBzdXBlcihzLCBpKTtcbiAgICAgICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBkYXRhQXdzTGFtYmRhQWxpYXMuRGF0YUF3c0xhbWJkYUFsaWFzKFxuICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6IHRoaXMuYWxpYXNOYW1lLFxuICAgICAgICAgICAgZnVuY3Rpb25OYW1lOiBhdHRycy5mdW5jdGlvbi5mdW5jdGlvbk5hbWUsXG4gICAgICAgICAgfSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydGVkKHNjb3BlLCBpZCk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbGlhc091dHB1dHM6IEFsaWFzT3V0cHV0cztcbiAgcHVibGljIGdldCBhbGlhc091dHB1dHMoKTogQWxpYXNPdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy5fYWxpYXNPdXRwdXRzO1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fYWxpYXNPdXRwdXRzO1xuICB9XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhpcyBhbGlhcy5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsaWFzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoaXMgYWxpYXNcbiAgICpcbiAgICogVXNlZCB0byBiZSBhYmxlIHRvIHVzZSBBbGlhcyBpbiBwbGFjZSBvZiBhIHJlZ3VsYXIgTGFtYmRhLiBMYW1iZGEgYWNjZXB0c1xuICAgKiBBUk5zIGV2ZXJ5d2hlcmUgaXQgYWNjZXB0cyBmdW5jdGlvbiBuYW1lcy5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBmdW5jdGlvbk5hbWU6IHN0cmluZztcblxuICBwdWJsaWMgcmVhZG9ubHkgbGFtYmRhOiBJRnVuY3Rpb247XG5cbiAgcHVibGljIHJlYWRvbmx5IGFyY2hpdGVjdHVyZTogQXJjaGl0ZWN0dXJlO1xuXG4gIHB1YmxpYyByZWFkb25seSB2ZXJzaW9uOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEFSTiBvZiB0aGlzIGFsaWFzXG4gICAqXG4gICAqIFVzZWQgdG8gYmUgYWJsZSB0byB1c2UgQWxpYXMgaW4gcGxhY2Ugb2YgYSByZWd1bGFyIExhbWJkYS4gTGFtYmRhIGFjY2VwdHNcbiAgICogQVJOcyBldmVyeXdoZXJlIGl0IGFjY2VwdHMgZnVuY3Rpb24gbmFtZXMuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZnVuY3Rpb25Bcm46IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IGZ1bmN0aW9uUXVhbGlmaWVkSW52b2tlQXJuKCkge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgfVxuICBwdWJsaWMgZ2V0IGZ1bmN0aW9uSW52b2tlQXJuKCkge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmludm9rZUFybjtcbiAgfVxuXG4gIHByb3RlY3RlZCByZWFkb25seSBxdWFsaWZpZXI6IHN0cmluZztcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgY2FuQ3JlYXRlUGVybWlzc2lvbnM6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIC8vIC8vIFRPRE86IFJlLUFkZCBzY2FsYWJsZSBmdW5jdGlvbnNcbiAgLy8gcHJpdmF0ZSBzY2FsYWJsZUFsaWFzPzogU2NhbGFibGVGdW5jdGlvbkF0dHJpYnV0ZTtcbiAgLy8gcHJpdmF0ZSByZWFkb25seSBzY2FsaW5nUm9sZTogaWFtLklSb2xlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBBbGlhc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICB0aGlzLmxhbWJkYSA9IHByb3BzLmZ1bmN0aW9uO1xuICAgIC8vIFRPRE86IERvZXMgaXQgbWFrZSBzZW5zZSB0byBqdXN0IHByZWZpeCBhbGlhc05hbWUgd2l0aCBHcmlkVVVJRD9cbiAgICAvLyBzaG91bGQgdXNlIHRoaXMuc3RhY2sudW5pcXVlUmVzb3VyY2VOYW1lIGluc3RlYWQ/XG4gICAgdGhpcy5hbGlhc05hbWUgPSBgJHt0aGlzLmdyaWRVVUlEfS0ke3Byb3BzLmFsaWFzTmFtZX1gO1xuICAgIHRoaXMudmVyc2lvbiA9IHByb3BzLnZlcnNpb247XG4gICAgdGhpcy5hcmNoaXRlY3R1cmUgPSB0aGlzLmxhbWJkYS5hcmNoaXRlY3R1cmU7XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgbmFtZTogdGhpcy5hbGlhc05hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICBmdW5jdGlvbk5hbWU6IHRoaXMubGFtYmRhLmZ1bmN0aW9uTmFtZSxcbiAgICAgIGZ1bmN0aW9uVmVyc2lvbjogcHJvcHMudmVyc2lvbixcbiAgICAgIHJvdXRpbmdDb25maWc6IHRoaXMuZGV0ZXJtaW5lUm91dGluZ0NvbmZpZyhwcm9wcyksXG4gICAgfSk7XG5cbiAgICAvLyBUT0RPOiBBZGQgYXdzX2xhbWJkYV9wcm92aXNpb25lZF9jb25jdXJyZW5jeV9jb25maWdcblxuICAgIC8vIC8vIFVzZSBhIFNlcnZpY2UgTGlua2VkIFJvbGVcbiAgICAvLyAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vYXV0b3NjYWxpbmcvYXBwbGljYXRpb24vdXNlcmd1aWRlL2FwcGxpY2F0aW9uLWF1dG8tc2NhbGluZy1zZXJ2aWNlLWxpbmtlZC1yb2xlcy5odG1sXG4gICAgLy8gdGhpcy5zY2FsaW5nUm9sZSA9IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKFxuICAgIC8vICAgdGhpcyxcbiAgICAvLyAgIFwiU2NhbGluZ1JvbGVcIixcbiAgICAvLyAgIHRoaXMuc3RhY2suZm9ybWF0QXJuKHtcbiAgICAvLyAgICAgc2VydmljZTogXCJpYW1cIixcbiAgICAvLyAgICAgcmVnaW9uOiBcIlwiLFxuICAgIC8vICAgICByZXNvdXJjZTpcbiAgICAvLyAgICAgICBcInJvbGUvYXdzLXNlcnZpY2Utcm9sZS9sYW1iZGEuYXBwbGljYXRpb24tYXV0b3NjYWxpbmcuYW1hem9uYXdzLmNvbVwiLFxuICAgIC8vICAgICByZXNvdXJjZU5hbWU6XG4gICAgLy8gICAgICAgXCJBV1NTZXJ2aWNlUm9sZUZvckFwcGxpY2F0aW9uQXV0b1NjYWxpbmdfTGFtYmRhQ29uY3VycmVuY3lcIixcbiAgICAvLyAgIH0pLFxuICAgIC8vICk7XG5cbiAgICAvLyBpbmNsdWRlcyBxdWFsaWZpZXJcbiAgICB0aGlzLmZ1bmN0aW9uQXJuID0gdGhpcy5yZXNvdXJjZS5pbnZva2VBcm47XG5cbiAgICAvLyB0aGlzLmdldFJlc291cmNlQXJuQXR0cmlidXRlKGFsaWFzLnJlZiwge1xuICAgIC8vICAgc2VydmljZTogXCJsYW1iZGFcIixcbiAgICAvLyAgIHJlc291cmNlOiBcImZ1bmN0aW9uXCIsXG4gICAgLy8gICByZXNvdXJjZU5hbWU6IGAke3RoaXMubGFtYmRhLmZ1bmN0aW9uTmFtZX06JHt0aGlzLmFsaWFzTmFtZX1gLFxuICAgIC8vICAgYXJuRm9ybWF0OiBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSxcbiAgICAvLyB9KTtcblxuICAgIHRoaXMucXVhbGlmaWVyID0gdGhpcy5hbGlhc05hbWU7XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5vbkZhaWx1cmUgfHxcbiAgICAgIHByb3BzLm9uU3VjY2VzcyB8fFxuICAgICAgcHJvcHMubWF4RXZlbnRBZ2UgfHxcbiAgICAgIHByb3BzLnJldHJ5QXR0ZW1wdHMgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhpcy5jb25maWd1cmVBc3luY0ludm9rZSh7XG4gICAgICAgIG9uRmFpbHVyZTogcHJvcHMub25GYWlsdXJlLFxuICAgICAgICBvblN1Y2Nlc3M6IHByb3BzLm9uU3VjY2VzcyxcbiAgICAgICAgbWF4RXZlbnRBZ2U6IHByb3BzLm1heEV2ZW50QWdlLFxuICAgICAgICByZXRyeUF0dGVtcHRzOiBwcm9wcy5yZXRyeUF0dGVtcHRzLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gQVJOIHBhcnNpbmcgc3BsaXRzIG9uIGA6YCwgc28gd2UgY2FuIG9ubHkgZ2V0IHRoZSBmdW5jdGlvbidzIG5hbWUgZnJvbSB0aGUgQVJOIGFzIHJlc291cmNlTmFtZS4uLlxuICAgIC8vIEFuZCB3ZSdyZSBwYXJzaW5nIGl0IG91dCAoaW5zdGVhZCBvZiB1c2luZyB0aGUgdW5kZXJseWluZyBmdW5jdGlvbiBkaXJlY3RseSkgaW4gb3JkZXIgdG8gaGF2ZSB1c2Ugb2YgaXQgaW5jdXJcbiAgICAvLyBhbiBpbXBsaWNpdCBkZXBlbmRlbmN5IG9uIHRoZSByZXNvdXJjZS5cblxuICAgIC8vYCR7dGhpcy5zdGFjay5zcGxpdEFybih0aGlzLmZ1bmN0aW9uQXJuLCBBcm5Gb3JtYXQuQ09MT05fUkVTT1VSQ0VfTkFNRSkucmVzb3VyY2VOYW1lIX06JHt0aGlzLmFsaWFzTmFtZX1gO1xuICAgIHRoaXMuZnVuY3Rpb25OYW1lID0gdGhpcy5yZXNvdXJjZS5mdW5jdGlvbk5hbWU7XG4gICAgdGhpcy5fYWxpYXNPdXRwdXRzID0ge1xuICAgICAgaW52b2tlQXJuOiB0aGlzLnJlc291cmNlLmludm9rZUFybixcbiAgICAgIG5hbWU6IHRoaXMuYWxpYXNOYW1lLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgZ2V0IGdyYW50UHJpbmNpcGFsKCkge1xuICAgIHJldHVybiB0aGlzLmxhbWJkYS5ncmFudFByaW5jaXBhbDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcm9sZSgpIHtcbiAgICByZXR1cm4gdGhpcy5sYW1iZGEucm9sZTtcbiAgfVxuXG4gIC8vIC8qKlxuICAvLyAgKiBDb25maWd1cmUgcHJvdmlzaW9uZWQgY29uY3VycmVuY3kgYXV0b3NjYWxpbmcgb24gYSBmdW5jdGlvbiBhbGlhcy4gUmV0dXJucyBhIHNjYWxhYmxlIGF0dHJpYnV0ZSB0aGF0IGNhbiBjYWxsXG4gIC8vICAqIGBzY2FsZU9uVXRpbGl6YXRpb24oKWAgYW5kIGBzY2FsZU9uU2NoZWR1bGUoKWAuXG4gIC8vICAqXG4gIC8vICAqIEBwYXJhbSBvcHRpb25zIEF1dG9zY2FsaW5nIG9wdGlvbnNcbiAgLy8gICovXG4gIC8vIHB1YmxpYyBhZGRBdXRvU2NhbGluZyhcbiAgLy8gICBvcHRpb25zOiBBdXRvU2NhbGluZ09wdGlvbnMsXG4gIC8vICk6IElTY2FsYWJsZUZ1bmN0aW9uQXR0cmlidXRlIHtcbiAgLy8gICBpZiAodGhpcy5zY2FsYWJsZUFsaWFzKSB7XG4gIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoXCJBdXRvU2NhbGluZyBhbHJlYWR5IGVuYWJsZWQgZm9yIHRoaXMgYWxpYXNcIik7XG4gIC8vICAgfVxuICAvLyAgIHJldHVybiAodGhpcy5zY2FsYWJsZUFsaWFzID0gbmV3IFNjYWxhYmxlRnVuY3Rpb25BdHRyaWJ1dGUoXG4gIC8vICAgICB0aGlzLFxuICAvLyAgICAgXCJBbGlhc1NjYWxpbmdcIixcbiAgLy8gICAgIHtcbiAgLy8gICAgICAgbWluQ2FwYWNpdHk6IG9wdGlvbnMubWluQ2FwYWNpdHkgPz8gMSxcbiAgLy8gICAgICAgbWF4Q2FwYWNpdHk6IG9wdGlvbnMubWF4Q2FwYWNpdHksXG4gIC8vICAgICAgIHJlc291cmNlSWQ6IGBmdW5jdGlvbjoke3RoaXMuZnVuY3Rpb25OYW1lfWAsXG4gIC8vICAgICAgIGRpbWVuc2lvbjogXCJsYW1iZGE6ZnVuY3Rpb246UHJvdmlzaW9uZWRDb25jdXJyZW5jeVwiLFxuICAvLyAgICAgICBzZXJ2aWNlTmFtZXNwYWNlOiBhcHBzY2FsaW5nLlNlcnZpY2VOYW1lc3BhY2UuTEFNQkRBLFxuICAvLyAgICAgICByb2xlOiB0aGlzLnNjYWxpbmdSb2xlLFxuICAvLyAgICAgfSxcbiAgLy8gICApKTtcbiAgLy8gfVxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgdGhlIHJvdXRpbmdDb25maWcgcGFyYW1ldGVyIGZyb20gdGhlIGlucHV0IHByb3BzXG4gICAqL1xuICBwcml2YXRlIGRldGVybWluZVJvdXRpbmdDb25maWcoXG4gICAgcHJvcHM6IEFsaWFzUHJvcHMsXG4gICk6IGxhbWJkYUFsaWFzLkxhbWJkYUFsaWFzUm91dGluZ0NvbmZpZyB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCFwcm9wcy5hZGRpdGlvbmFsVmVyc2lvbnMgfHwgcHJvcHMuYWRkaXRpb25hbFZlcnNpb25zLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBsZXQgdG90YWwgPSAwO1xuICAgIGNvbnN0IGFkZGl0aW9uYWxWZXJzaW9uV2VpZ2h0czogeyBba2V5OiBzdHJpbmddOiBudW1iZXIgfSA9IHt9O1xuICAgIGZvciAoY29uc3Qgdncgb2YgcHJvcHMuYWRkaXRpb25hbFZlcnNpb25zKSB7XG4gICAgICBpZiAodncud2VpZ2h0IDwgMCB8fCB2dy53ZWlnaHQgPiAxKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgQWRkaXRpb25hbCB2ZXJzaW9uIHdlaWdodCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMSwgZ290OiAke3Z3LndlaWdodH1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgdG90YWwgKz0gdncud2VpZ2h0O1xuICAgICAgYWRkaXRpb25hbFZlcnNpb25XZWlnaHRzW3Z3LnZlcnNpb25dID0gdncud2VpZ2h0O1xuICAgIH1cbiAgICBpZiAodG90YWwgPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBTdW0gb2YgYWRkaXRpb25hbCB2ZXJzaW9uIHdlaWdodHMgbXVzdCBub3QgZXhjZWVkIDEsIGdvdDogJHt0b3RhbH1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgYWRkaXRpb25hbFZlcnNpb25XZWlnaHRzLFxuICAgIH07XG4gIH1cblxuICAvLyAvKipcbiAgLy8gICogVmFsaWRhdGUgdGhhdCB0aGUgcHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyBtYWtlcyBzZW5zZVxuICAvLyAgKlxuICAvLyAgKiBNZW1iZXIgbXVzdCBoYXZlIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byAxXG4gIC8vICAqL1xuICAvLyBwcml2YXRlIGRldGVybWluZVByb3Zpc2lvbmVkQ29uY3VycmVuY3koXG4gIC8vICAgcHJvcHM6IEFsaWFzUHJvcHMsXG4gIC8vICk6XG4gIC8vICAgfCBsYW1iZGFBbGlhcy5MYW1iZGFBbGlhcy5Qcm92aXNpb25lZENvbmN1cnJlbmN5Q29uZmlndXJhdGlvblByb3BlcnR5XG4gIC8vICAgfCB1bmRlZmluZWQge1xuICAvLyAgIGlmICghcHJvcHMucHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucykge1xuICAvLyAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgLy8gICB9XG5cbiAgLy8gICBpZiAocHJvcHMucHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyA8PSAwKSB7XG4gIC8vICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gIC8vICAgICAgIFwicHJvdmlzaW9uZWRDb25jdXJyZW50RXhlY3V0aW9ucyBtdXN0IGhhdmUgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIDFcIixcbiAgLy8gICAgICk7XG4gIC8vICAgfVxuXG4gIC8vICAgcmV0dXJuIHtcbiAgLy8gICAgIHByb3Zpc2lvbmVkQ29uY3VycmVudEV4ZWN1dGlvbnM6IHByb3BzLnByb3Zpc2lvbmVkQ29uY3VycmVudEV4ZWN1dGlvbnMsXG4gIC8vICAgfTtcbiAgLy8gfVxufVxuXG4vKipcbiAqIEEgdmVyc2lvbi93ZWlnaHQgcGFpciBmb3Igcm91dGluZyB0cmFmZmljIHRvIExhbWJkYSBmdW5jdGlvbnNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBWZXJzaW9uV2VpZ2h0IHtcbiAgLyoqXG4gICAqIFRoZSB2ZXJzaW9uIHRvIHJvdXRlIHRyYWZmaWMgdG9cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZztcblxuICAvKipcbiAgICogSG93IG11Y2ggd2VpZ2h0IHRvIGFzc2lnbiB0byB0aGlzIHZlcnNpb24gKDAuLjEpXG4gICAqL1xuICByZWFkb25seSB3ZWlnaHQ6IG51bWJlcjtcbn1cbiJdfQ==