terraconstructs 0.0.24 → 0.1.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 (422) hide show
  1. package/.jsii +83665 -54911
  2. package/.mise.toml +1 -1
  3. package/.nvmrc +1 -1
  4. package/LICENSE +202 -674
  5. package/go.mod +9 -7
  6. package/go.sum +18 -14
  7. package/lib/asset-manager.d.ts +23 -0
  8. package/lib/asset-manager.js +3 -0
  9. package/lib/asset-staging.d.ts +178 -0
  10. package/lib/asset-staging.js +589 -0
  11. package/lib/assets.d.ts +359 -0
  12. package/lib/assets.js +55 -0
  13. package/lib/aws/arn.js +16 -15
  14. package/lib/aws/aws-asset-manager.d.ts +91 -0
  15. package/lib/aws/aws-asset-manager.js +244 -0
  16. package/lib/aws/aws-construct.js +1 -1
  17. package/lib/aws/aws-stack.d.ts +37 -0
  18. package/lib/aws/aws-stack.js +30 -9
  19. package/lib/aws/aws-tags.js +2 -2
  20. package/lib/aws/cloudwatch/actions/appscaling.d.ts +15 -0
  21. package/lib/aws/cloudwatch/actions/appscaling.js +24 -0
  22. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  23. package/lib/aws/cloudwatch/actions/index.d.ts +3 -0
  24. package/lib/aws/cloudwatch/actions/index.js +4 -4
  25. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  26. package/lib/aws/cloudwatch/actions/sns.d.ts +14 -0
  27. package/lib/aws/cloudwatch/actions/sns.js +23 -0
  28. package/lib/aws/cloudwatch/actions/ssm.d.ts +72 -0
  29. package/lib/aws/cloudwatch/actions/ssm.js +104 -0
  30. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  31. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  32. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  33. package/lib/aws/cloudwatch/alarm.js +1 -1
  34. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  35. package/lib/aws/cloudwatch/dashboard.js +1 -1
  36. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  37. package/lib/aws/cloudwatch/graph.js +8 -8
  38. package/lib/aws/cloudwatch/layout.js +3 -3
  39. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  40. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  41. package/lib/aws/cloudwatch/log-group.js +1 -1
  42. package/lib/aws/cloudwatch/log-query.js +1 -1
  43. package/lib/aws/cloudwatch/log-stream.js +1 -1
  44. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  45. package/lib/aws/cloudwatch/metric.js +2 -2
  46. package/lib/aws/cloudwatch/pattern.js +3 -3
  47. package/lib/aws/cloudwatch/policy.js +1 -1
  48. package/lib/aws/cloudwatch/query-definition.js +2 -2
  49. package/lib/aws/cloudwatch/stats.js +1 -1
  50. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  51. package/lib/aws/cloudwatch/text.js +1 -1
  52. package/lib/aws/cloudwatch/variable.js +3 -3
  53. package/lib/aws/cloudwatch/widget.js +1 -1
  54. package/lib/aws/compute/access-log.d.ts +478 -0
  55. package/lib/aws/compute/access-log.js +649 -0
  56. package/lib/aws/compute/activity.js +1 -1
  57. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  58. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  59. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  60. package/lib/aws/compute/alb/application-listener.js +1 -1
  61. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  62. package/lib/aws/compute/alb/application-target-group.js +1 -1
  63. package/lib/aws/compute/alb/conditions.js +1 -1
  64. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  65. package/lib/aws/compute/alb/trust-store.js +1 -1
  66. package/lib/aws/compute/api-definition.d.ts +106 -0
  67. package/lib/aws/compute/api-definition.js +200 -0
  68. package/lib/aws/compute/api-key.d.ts +184 -0
  69. package/lib/aws/compute/api-key.js +197 -0
  70. package/lib/aws/compute/apigateway-canned-metrics.generated.d.ts +169 -0
  71. package/lib/aws/compute/apigateway-canned-metrics.generated.js +63 -0
  72. package/lib/aws/compute/apigateway-util.d.ts +31 -0
  73. package/lib/aws/compute/apigateway-util.js +152 -0
  74. package/lib/aws/compute/architecture.js +1 -1
  75. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  76. package/lib/aws/compute/authorizer.d.ts +35 -0
  77. package/lib/aws/compute/authorizer.js +28 -0
  78. package/lib/aws/compute/authorizers/identity-source.d.ts +37 -0
  79. package/lib/aws/compute/authorizers/identity-source.js +61 -0
  80. package/lib/aws/compute/authorizers/index.d.ts +2 -0
  81. package/lib/aws/compute/authorizers/index.js +20 -0
  82. package/lib/aws/compute/authorizers/lambda.d.ts +140 -0
  83. package/lib/aws/compute/authorizers/lambda.js +208 -0
  84. package/lib/aws/compute/base-path-mapping.d.ts +49 -0
  85. package/lib/aws/compute/base-path-mapping.js +52 -0
  86. package/lib/aws/compute/base-scalable-attribute.js +3 -3
  87. package/lib/aws/compute/bastion-host.js +1 -1
  88. package/lib/aws/compute/chain.js +1 -1
  89. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  90. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  91. package/lib/aws/compute/client-vpn-route.js +2 -2
  92. package/lib/aws/compute/code.d.ts +415 -0
  93. package/lib/aws/compute/code.js +424 -0
  94. package/lib/aws/compute/condition.js +1 -1
  95. package/lib/aws/compute/connections.js +1 -1
  96. package/lib/aws/compute/cors.d.ts +102 -0
  97. package/lib/aws/compute/cors.js +33 -0
  98. package/lib/aws/compute/deployment.d.ts +83 -0
  99. package/lib/aws/compute/deployment.js +158 -0
  100. package/lib/aws/compute/domain-name.d.ts +153 -0
  101. package/lib/aws/compute/domain-name.js +158 -0
  102. package/lib/aws/compute/event-invoke-config.d.ts +2 -2
  103. package/lib/aws/compute/event-invoke-config.js +4 -4
  104. package/lib/aws/compute/event-source-filter.js +2 -2
  105. package/lib/aws/compute/event-source-mapping.d.ts +2 -2
  106. package/lib/aws/compute/event-source-mapping.js +9 -7
  107. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  108. package/lib/aws/compute/event-sources/s3.js +1 -1
  109. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  110. package/lib/aws/compute/event-sources/sqs.js +3 -2
  111. package/lib/aws/compute/fields.js +4 -4
  112. package/lib/aws/compute/function-alias.d.ts +1 -0
  113. package/lib/aws/compute/function-alias.js +8 -2
  114. package/lib/aws/compute/function-base.d.ts +15 -0
  115. package/lib/aws/compute/function-base.js +4 -4
  116. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  117. package/lib/aws/compute/function-destinations/function.js +1 -1
  118. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  119. package/lib/aws/compute/function-nodejs/bundling.d.ts +75 -0
  120. package/lib/aws/compute/function-nodejs/bundling.js +405 -0
  121. package/lib/aws/compute/function-nodejs/function.d.ts +99 -0
  122. package/lib/aws/compute/function-nodejs/function.js +175 -0
  123. package/lib/aws/compute/function-nodejs/index.d.ts +2 -0
  124. package/lib/aws/compute/function-nodejs/index.js +19 -0
  125. package/lib/aws/compute/function-nodejs/package-installation.d.ts +8 -0
  126. package/lib/aws/compute/function-nodejs/package-installation.js +36 -0
  127. package/lib/aws/compute/function-nodejs/package-manager.d.ts +33 -0
  128. package/lib/aws/compute/function-nodejs/package-manager.js +99 -0
  129. package/lib/aws/compute/function-nodejs/types.d.ts +410 -0
  130. package/lib/aws/compute/function-nodejs/types.js +81 -0
  131. package/lib/aws/compute/function-nodejs/util.d.ts +60 -0
  132. package/lib/aws/compute/function-nodejs/util.js +202 -0
  133. package/lib/aws/compute/function-url.d.ts +2 -2
  134. package/lib/aws/compute/function-url.js +4 -4
  135. package/lib/aws/compute/function.d.ts +34 -4
  136. package/lib/aws/compute/function.js +91 -17
  137. package/lib/aws/compute/gateway-response.d.ts +157 -0
  138. package/lib/aws/compute/gateway-response.js +156 -0
  139. package/lib/aws/compute/handler.d.ts +10 -0
  140. package/lib/aws/compute/handler.js +20 -0
  141. package/lib/aws/compute/index.d.ts +27 -0
  142. package/lib/aws/compute/index.js +29 -1
  143. package/lib/aws/compute/instance-types.js +1 -1
  144. package/lib/aws/compute/instance.js +1 -1
  145. package/lib/aws/compute/integration.d.ts +311 -0
  146. package/lib/aws/compute/integration.js +165 -0
  147. package/lib/aws/compute/integrations/aws.d.ts +72 -0
  148. package/lib/aws/compute/integrations/aws.js +55 -0
  149. package/lib/aws/compute/integrations/http.d.ts +37 -0
  150. package/lib/aws/compute/integrations/http.js +35 -0
  151. package/lib/aws/compute/integrations/index.d.ts +6 -0
  152. package/lib/aws/compute/integrations/index.js +24 -0
  153. package/lib/aws/compute/integrations/lambda.d.ts +40 -0
  154. package/lib/aws/compute/integrations/lambda.js +73 -0
  155. package/lib/aws/compute/integrations/mock.d.ts +16 -0
  156. package/lib/aws/compute/integrations/mock.js +30 -0
  157. package/lib/aws/compute/integrations/request-context.d.ts +144 -0
  158. package/lib/aws/compute/integrations/request-context.js +3 -0
  159. package/lib/aws/compute/integrations/stepfunctions.d.ts +102 -0
  160. package/lib/aws/compute/integrations/stepfunctions.js +268 -0
  161. package/lib/aws/compute/ip-addresses.js +2 -2
  162. package/lib/aws/compute/ipam.js +1 -1
  163. package/lib/aws/compute/json-schema.d.ts +75 -0
  164. package/lib/aws/compute/json-schema.js +23 -0
  165. package/lib/aws/compute/key-pair.js +1 -1
  166. package/lib/aws/compute/lambda-api.d.ts +46 -0
  167. package/lib/aws/compute/lambda-api.js +64 -0
  168. package/lib/aws/compute/launch-template.js +2 -2
  169. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  170. package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
  171. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  172. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  173. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  174. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  175. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  176. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  177. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  178. package/lib/aws/compute/load-balancer.js +3 -3
  179. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  180. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  181. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  182. package/lib/aws/compute/machine-image/common.js +1 -1
  183. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  184. package/lib/aws/compute/method.d.ts +219 -0
  185. package/lib/aws/compute/method.js +396 -0
  186. package/lib/aws/compute/methodresponse.d.ts +28 -0
  187. package/lib/aws/compute/methodresponse.js +3 -0
  188. package/lib/aws/compute/model.d.ts +143 -0
  189. package/lib/aws/compute/model.js +141 -0
  190. package/lib/aws/compute/nat.js +5 -5
  191. package/lib/aws/compute/network-acl-types.js +2 -2
  192. package/lib/aws/compute/network-acl.js +3 -3
  193. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  194. package/lib/aws/compute/nlb/network-listener.js +1 -1
  195. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  196. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  197. package/lib/aws/compute/peer.js +1 -1
  198. package/lib/aws/compute/placement-group.js +1 -1
  199. package/lib/aws/compute/port.js +1 -1
  200. package/lib/aws/compute/prefix-list.js +1 -1
  201. package/lib/aws/compute/requestvalidator.d.ts +50 -0
  202. package/lib/aws/compute/requestvalidator.js +59 -0
  203. package/lib/aws/compute/resource.d.ts +223 -0
  204. package/lib/aws/compute/resource.js +316 -0
  205. package/lib/aws/compute/restapi.d.ts +510 -0
  206. package/lib/aws/compute/restapi.js +626 -0
  207. package/lib/aws/compute/route.js +8 -8
  208. package/lib/aws/compute/runtime.d.ts +282 -0
  209. package/lib/aws/compute/runtime.js +337 -0
  210. package/lib/aws/compute/scalable-target.js +3 -3
  211. package/lib/aws/compute/schedule.js +3 -3
  212. package/lib/aws/compute/security-group.js +1 -1
  213. package/lib/aws/compute/stage.d.ts +350 -0
  214. package/lib/aws/compute/stage.js +304 -0
  215. package/lib/aws/compute/state-graph.js +1 -1
  216. package/lib/aws/compute/state-machine-fragment.js +1 -1
  217. package/lib/aws/compute/state-machine.js +4 -4
  218. package/lib/aws/compute/states/choice.js +1 -1
  219. package/lib/aws/compute/states/custom-state.js +1 -1
  220. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  221. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  222. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  223. package/lib/aws/compute/states/distributed-map.js +1 -1
  224. package/lib/aws/compute/states/fail.js +1 -1
  225. package/lib/aws/compute/states/map-base.js +1 -1
  226. package/lib/aws/compute/states/map.js +1 -1
  227. package/lib/aws/compute/states/parallel.js +1 -1
  228. package/lib/aws/compute/states/pass.js +2 -2
  229. package/lib/aws/compute/states/state.js +1 -1
  230. package/lib/aws/compute/states/succeed.js +1 -1
  231. package/lib/aws/compute/states/task-base.js +2 -2
  232. package/lib/aws/compute/states/task.js +1 -1
  233. package/lib/aws/compute/states/wait.js +2 -2
  234. package/lib/aws/compute/step-scaling-action.js +3 -3
  235. package/lib/aws/compute/step-scaling-policy.js +1 -1
  236. package/lib/aws/compute/stepfunctions-api.d.ts +103 -0
  237. package/lib/aws/compute/stepfunctions-api.js +39 -0
  238. package/lib/aws/compute/subnet-v2.js +2 -2
  239. package/lib/aws/compute/subnet.js +1 -1
  240. package/lib/aws/compute/target-tracking-scaling-policy.js +3 -3
  241. package/lib/aws/compute/task-credentials.js +1 -1
  242. package/lib/aws/compute/task-input.js +1 -1
  243. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  244. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  245. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  246. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  247. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  248. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  249. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  250. package/lib/aws/compute/types.js +1 -1
  251. package/lib/aws/compute/usage-plan.d.ts +194 -0
  252. package/lib/aws/compute/usage-plan.js +174 -0
  253. package/lib/aws/compute/user-data.js +3 -3
  254. package/lib/aws/compute/volume.js +2 -2
  255. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  256. package/lib/aws/compute/vpc-endpoint.js +6 -6
  257. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  258. package/lib/aws/compute/vpc-link.d.ts +104 -0
  259. package/lib/aws/compute/vpc-link.js +137 -0
  260. package/lib/aws/compute/vpc-v2-base.js +1 -1
  261. package/lib/aws/compute/vpc-v2.js +2 -2
  262. package/lib/aws/compute/vpc.js +4 -4
  263. package/lib/aws/compute/vpn.js +3 -3
  264. package/lib/aws/edge/certificate.js +1 -1
  265. package/lib/aws/edge/distribution.js +3 -3
  266. package/lib/aws/edge/dns-alias-record-targets.js +3 -3
  267. package/lib/aws/edge/dns-record.js +13 -13
  268. package/lib/aws/edge/dns-zone.js +1 -1
  269. package/lib/aws/edge/function.js +2 -2
  270. package/lib/aws/edge/key-value-store.js +4 -4
  271. package/lib/aws/edge/origin.js +3 -3
  272. package/lib/aws/edge/response-headers-policy.js +1 -1
  273. package/lib/aws/encryption/alias.js +1 -1
  274. package/lib/aws/encryption/key.js +1 -1
  275. package/lib/aws/encryption/via-service-principal.js +1 -1
  276. package/lib/aws/iam/grant.js +2 -2
  277. package/lib/aws/iam/group.js +1 -1
  278. package/lib/aws/iam/instance-profile.js +1 -1
  279. package/lib/aws/iam/managed-policy.js +1 -1
  280. package/lib/aws/iam/oidc-provider.js +1 -1
  281. package/lib/aws/iam/policy-document.js +1 -1
  282. package/lib/aws/iam/policy-statement.js +1 -1
  283. package/lib/aws/iam/policy.js +1 -1
  284. package/lib/aws/iam/principals.js +20 -20
  285. package/lib/aws/iam/role.js +1 -1
  286. package/lib/aws/iam/saml-provider.js +2 -2
  287. package/lib/aws/iam/unknown-principal.js +1 -1
  288. package/lib/aws/iam/user.js +5 -5
  289. package/lib/aws/index.d.ts +1 -0
  290. package/lib/aws/index.js +4 -1
  291. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  292. package/lib/aws/network/subnet-group.js +3 -3
  293. package/lib/aws/network/subnet.js +4 -4
  294. package/lib/aws/notify/archive.js +1 -1
  295. package/lib/aws/notify/connection.js +3 -3
  296. package/lib/aws/notify/event-bus.js +3 -3
  297. package/lib/aws/notify/event-pattern.js +1 -1
  298. package/lib/aws/notify/input.js +2 -2
  299. package/lib/aws/notify/kinesis-stream.js +1 -1
  300. package/lib/aws/notify/notification-rule.d.ts +1 -1
  301. package/lib/aws/notify/notification-rule.js +5 -5
  302. package/lib/aws/notify/policy.js +1 -1
  303. package/lib/aws/notify/queue-policy.js +1 -1
  304. package/lib/aws/notify/queue.js +1 -1
  305. package/lib/aws/notify/resource-policy.js +1 -1
  306. package/lib/aws/notify/rule.js +1 -1
  307. package/lib/aws/notify/schedule.js +1 -1
  308. package/lib/aws/notify/subscription-filter.js +1 -1
  309. package/lib/aws/notify/subscription.js +4 -4
  310. package/lib/aws/notify/subscriptions/email.js +1 -1
  311. package/lib/aws/notify/subscriptions/lambda.js +1 -1
  312. package/lib/aws/notify/subscriptions/sms.js +1 -1
  313. package/lib/aws/notify/subscriptions/sqs.js +1 -1
  314. package/lib/aws/notify/subscriptions/url.js +1 -1
  315. package/lib/aws/notify/targets/event-bus.js +1 -1
  316. package/lib/aws/notify/targets/function.js +1 -1
  317. package/lib/aws/notify/targets/log-group.js +2 -2
  318. package/lib/aws/notify/targets/sqs.js +1 -1
  319. package/lib/aws/notify/targets/state-machine.js +1 -1
  320. package/lib/aws/notify/topic-base.js +1 -1
  321. package/lib/aws/notify/topic.js +6 -5
  322. package/lib/aws/partition.d.ts +21 -0
  323. package/lib/aws/partition.js +42 -0
  324. package/lib/aws/storage/assets/image-asset.d.ts +379 -0
  325. package/lib/aws/storage/assets/image-asset.js +247 -0
  326. package/lib/aws/storage/assets/index.d.ts +2 -0
  327. package/lib/aws/storage/assets/index.js +21 -0
  328. package/lib/aws/storage/assets/s3.d.ts +125 -0
  329. package/lib/aws/storage/assets/s3.js +80 -0
  330. package/lib/aws/storage/auth-token.d.ts +25 -0
  331. package/lib/aws/storage/auth-token.js +54 -0
  332. package/lib/aws/storage/billing.js +1 -1
  333. package/lib/aws/storage/bucket-notifications.js +1 -1
  334. package/lib/aws/storage/bucket-policy.js +1 -1
  335. package/lib/aws/storage/bucket-source.d.ts +1 -1
  336. package/lib/aws/storage/bucket-source.js +4 -4
  337. package/lib/aws/storage/bucket.d.ts +14 -6
  338. package/lib/aws/storage/bucket.js +48 -40
  339. package/lib/aws/storage/capacity.js +1 -1
  340. package/lib/aws/storage/ecr-lifecycle.d.ts +88 -0
  341. package/lib/aws/storage/ecr-lifecycle.js +23 -0
  342. package/lib/aws/storage/ecr-repository.d.ts +446 -0
  343. package/lib/aws/storage/ecr-repository.js +685 -0
  344. package/lib/aws/storage/encryption.js +1 -1
  345. package/lib/aws/storage/index.d.ts +5 -0
  346. package/lib/aws/storage/index.js +10 -3
  347. package/lib/aws/storage/location.d.ts +17 -0
  348. package/lib/aws/storage/location.js +4 -0
  349. package/lib/aws/storage/notification-targets/function.js +1 -1
  350. package/lib/aws/storage/notification-targets/queue.js +1 -1
  351. package/lib/aws/storage/origin-access-identity.js +1 -1
  352. package/lib/aws/storage/parameter.js +2 -2
  353. package/lib/aws/storage/table.js +3 -3
  354. package/lib/aws/storage/util.d.ts +8 -20
  355. package/lib/aws/storage/util.js +56 -34
  356. package/lib/aws/util.d.ts +1 -0
  357. package/lib/aws/util.js +6 -1
  358. package/lib/bundling.d.ts +434 -0
  359. package/lib/bundling.js +368 -0
  360. package/lib/construct-base.js +2 -2
  361. package/lib/duration.js +1 -1
  362. package/lib/expiration.js +1 -1
  363. package/lib/fs/copy.d.ts +2 -0
  364. package/lib/fs/copy.js +57 -0
  365. package/lib/fs/fingerprint.d.ts +21 -0
  366. package/lib/fs/fingerprint.js +165 -0
  367. package/lib/fs/ignore.d.ts +107 -0
  368. package/lib/fs/ignore.js +190 -0
  369. package/lib/fs/index.d.ts +47 -0
  370. package/lib/fs/index.js +88 -0
  371. package/lib/fs/options.d.ts +110 -0
  372. package/lib/fs/options.js +60 -0
  373. package/lib/fs/utils.d.ts +11 -0
  374. package/lib/fs/utils.js +34 -0
  375. package/lib/index.d.ts +5 -0
  376. package/lib/index.js +7 -1
  377. package/lib/private/asset-staging.d.ts +83 -0
  378. package/lib/private/asset-staging.js +205 -0
  379. package/lib/private/cache.d.ts +17 -0
  380. package/lib/private/cache.js +35 -0
  381. package/lib/private/jsii-deprecated.d.ts +2 -0
  382. package/lib/private/jsii-deprecated.js +19 -0
  383. package/lib/private/unique-resource-name.js +3 -2
  384. package/lib/size.js +1 -1
  385. package/lib/stack-base.js +1 -1
  386. package/lib/terra-func.js +2 -2
  387. package/lib/time-zone.js +1 -1
  388. package/node_modules/@balena/dockerignore/CHANGELOG.md +31 -0
  389. package/node_modules/@balena/dockerignore/LICENSE.md +206 -0
  390. package/node_modules/@balena/dockerignore/README.md +261 -0
  391. package/node_modules/@balena/dockerignore/ignore.js +363 -0
  392. package/node_modules/@balena/dockerignore/index.d.ts +45 -0
  393. package/node_modules/@balena/dockerignore/package.json +49 -0
  394. package/node_modules/balanced-match/.github/FUNDING.yml +2 -0
  395. package/node_modules/balanced-match/LICENSE.md +21 -0
  396. package/node_modules/balanced-match/README.md +97 -0
  397. package/node_modules/balanced-match/index.js +62 -0
  398. package/node_modules/balanced-match/package.json +48 -0
  399. package/node_modules/concat-map/.travis.yml +4 -0
  400. package/node_modules/concat-map/LICENSE +18 -0
  401. package/node_modules/concat-map/README.markdown +62 -0
  402. package/node_modules/concat-map/example/map.js +6 -0
  403. package/node_modules/concat-map/index.js +13 -0
  404. package/node_modules/concat-map/package.json +43 -0
  405. package/node_modules/concat-map/test/map.js +39 -0
  406. package/node_modules/ignore/LICENSE-MIT +21 -0
  407. package/node_modules/ignore/README.md +412 -0
  408. package/node_modules/ignore/index.d.ts +61 -0
  409. package/node_modules/ignore/index.js +636 -0
  410. package/node_modules/ignore/legacy.js +559 -0
  411. package/node_modules/ignore/package.json +74 -0
  412. package/node_modules/minimatch/LICENSE +15 -0
  413. package/node_modules/minimatch/README.md +230 -0
  414. package/node_modules/minimatch/minimatch.js +947 -0
  415. package/node_modules/minimatch/node_modules/brace-expansion/LICENSE +21 -0
  416. package/node_modules/minimatch/node_modules/brace-expansion/README.md +129 -0
  417. package/node_modules/minimatch/node_modules/brace-expansion/index.js +201 -0
  418. package/node_modules/minimatch/node_modules/brace-expansion/package.json +47 -0
  419. package/node_modules/minimatch/package.json +33 -0
  420. package/package.json +14 -5
  421. package/lib/aws/compute/function-nodejs.d.ts +0 -55
  422. package/lib/aws/compute/function-nodejs.js +0 -70
@@ -0,0 +1,158 @@
1
+ "use strict";
2
+ var _a;
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.DomainName = exports.SecurityPolicy = void 0;
5
+ const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
+ // https://github.com/aws/aws-cdk/blob/v2.186.0/packages/aws-cdk-lib/aws-apigateway/lib/domain-name.ts
7
+ const provider_aws_1 = require("@cdktf/provider-aws");
8
+ const cdktf_1 = require("cdktf");
9
+ const base_path_mapping_1 = require("./base-path-mapping"); // Assuming this will be converted
10
+ const restapi_1 = require("./restapi"); // Assuming these will be converted/available
11
+ const aws_construct_1 = require("../aws-construct");
12
+ const aws_stack_1 = require("../aws-stack");
13
+ /**
14
+ * The minimum version of the SSL protocol that you want API Gateway to use for HTTPS connections.
15
+ */
16
+ var SecurityPolicy;
17
+ (function (SecurityPolicy) {
18
+ /** Cipher suite TLS 1.0 */
19
+ SecurityPolicy["TLS_1_0"] = "TLS_1_0";
20
+ /** Cipher suite TLS 1.2 */
21
+ SecurityPolicy["TLS_1_2"] = "TLS_1_2";
22
+ })(SecurityPolicy || (exports.SecurityPolicy = SecurityPolicy = {}));
23
+ class DomainName extends aws_construct_1.AwsConstructBase {
24
+ /**
25
+ * Imports an existing domain name.
26
+ */
27
+ static fromDomainNameAttributes(scope, id, attrs) {
28
+ class Import extends aws_construct_1.AwsConstructBase {
29
+ get outputs() {
30
+ return {
31
+ domainName: this.domainName,
32
+ domainNameAliasDomainName: this.domainNameAliasDomainName,
33
+ domainNameAliasHostedZoneId: this.domainNameAliasHostedZoneId,
34
+ };
35
+ }
36
+ constructor(s, i) {
37
+ super(s, i, {
38
+ environmentFromArn: `arn:aws:apigateway:${aws_stack_1.AwsStack.ofAwsConstruct(s).region}::/restapis`,
39
+ }); // Dummy ARN for region/account context
40
+ this.domainName = attrs.domainName;
41
+ this.domainNameAliasDomainName = attrs.domainNameAliasTarget;
42
+ this.domainNameAliasHostedZoneId = attrs.domainNameAliasHostedZoneId;
43
+ }
44
+ }
45
+ return new Import(scope, id);
46
+ }
47
+ get outputs() {
48
+ return {
49
+ domainName: this.domainName,
50
+ domainNameAliasDomainName: this.domainNameAliasDomainName,
51
+ domainNameAliasHostedZoneId: this.domainNameAliasHostedZoneId,
52
+ };
53
+ }
54
+ constructor(scope, id, props) {
55
+ super(scope, id, props);
56
+ this.basePaths = new Set();
57
+ this.endpointType = props.endpointType || restapi_1.EndpointType.REGIONAL;
58
+ const edge = this.endpointType === restapi_1.EndpointType.EDGE;
59
+ this.securityPolicy = props.securityPolicy;
60
+ if (!cdktf_1.Token.isUnresolved(props.domainName) &&
61
+ /[A-Z]/.test(props.domainName)) {
62
+ throw new Error(`Domain name does not support uppercase letters. Got: ${props.domainName}`); // TODO: Implement UnscopedValidationError
63
+ }
64
+ const mtlsConfig = this.configureMTLS(props.mtls);
65
+ this.resource = new provider_aws_1.apiGatewayDomainName.ApiGatewayDomainName(this, "Resource", {
66
+ domainName: props.domainName,
67
+ certificateArn: edge ? props.certificate.certificateArn : undefined,
68
+ regionalCertificateArn: !edge
69
+ ? props.certificate.certificateArn
70
+ : undefined,
71
+ endpointConfiguration: { types: [this.endpointType] },
72
+ mutualTlsAuthentication: mtlsConfig,
73
+ securityPolicy: props.securityPolicy,
74
+ });
75
+ this.domainName = this.resource.domainName;
76
+ this.domainNameAliasDomainName = edge
77
+ ? this.resource.cloudfrontDomainName
78
+ : this.resource.regionalDomainName;
79
+ this.domainNameAliasHostedZoneId = edge
80
+ ? this.resource.cloudfrontZoneId
81
+ : this.resource.regionalZoneId;
82
+ const multiLevel = this.validateBasePath(props.basePath);
83
+ if (props.mapping && !multiLevel) {
84
+ this.addBasePathMapping(props.mapping, {
85
+ basePath: props.basePath,
86
+ });
87
+ }
88
+ else if (props.mapping && multiLevel) {
89
+ this.addApiMapping(props.mapping.deploymentStage, {
90
+ basePath: props.basePath,
91
+ });
92
+ }
93
+ }
94
+ validateBasePath(path) {
95
+ if (this.isMultiLevel(path)) {
96
+ if (this.endpointType === restapi_1.EndpointType.EDGE) {
97
+ throw new Error("multi-level basePath is only supported when endpointType is EndpointType.REGIONAL"); // TODO: Implement UnscopedValidationError
98
+ }
99
+ if (this.securityPolicy &&
100
+ this.securityPolicy !== SecurityPolicy.TLS_1_2) {
101
+ throw new Error("securityPolicy must be set to TLS_1_2 if multi-level basePath is provided"); // TODO: Implement UnscopedValidationError
102
+ }
103
+ return true;
104
+ }
105
+ return false;
106
+ }
107
+ isMultiLevel(path) {
108
+ return (path?.split("/").filter((x) => !!x) ?? []).length >= 2;
109
+ }
110
+ addBasePathMapping(targetApi, options = {}) {
111
+ if (this.basePaths.has(options.basePath)) {
112
+ throw new Error(`DomainName ${this.friendlyName} already has a mapping for path ${options.basePath}`); // TODO: Implement UnscopedValidationError
113
+ }
114
+ if (this.isMultiLevel(options.basePath)) {
115
+ throw new Error('BasePathMapping does not support multi-level paths. Use "addApiMapping instead.'); // TODO: Implement UnscopedValidationError
116
+ }
117
+ this.basePaths.add(options.basePath);
118
+ const basePathIdPart = options.basePath
119
+ ? options.basePath.replace(/\//g, "_")
120
+ : "root";
121
+ const id = `Map-${basePathIdPart}-${aws_stack_1.AwsStack.ofAwsConstruct(this).uniqueResourceName(targetApi.node)}`;
122
+ // Assuming BasePathMapping is a TerraConstruct that wraps apiGatewayBasePathMapping.ApiGatewayBasePathMapping
123
+ return new base_path_mapping_1.BasePathMapping(this, id, {
124
+ domainName: this, // Pass the DomainName construct itself
125
+ restApi: targetApi,
126
+ ...options,
127
+ });
128
+ }
129
+ addApiMapping(targetStage, options = {}) {
130
+ if (this.basePaths.has(options.basePath)) {
131
+ throw new Error(`DomainName ${this.node.id} already has a mapping for path ${options.basePath}. (${this.node.path})`); // TODO: Implement UnscopedValidationError
132
+ }
133
+ this.validateBasePath(options.basePath);
134
+ this.basePaths.add(options.basePath);
135
+ const basePathIdPart = options.basePath
136
+ ? options.basePath.replace(/\//g, "_")
137
+ : "root";
138
+ const id = `ApiMap-${basePathIdPart}-${aws_stack_1.AwsStack.ofAwsConstruct(this).uniqueResourceName(targetStage.node)}`;
139
+ new provider_aws_1.apigatewayv2ApiMapping.Apigatewayv2ApiMapping(this, id, {
140
+ apiId: targetStage.restApi.restApiId,
141
+ stage: targetStage.stageName,
142
+ domainName: this.domainName,
143
+ apiMappingKey: options.basePath,
144
+ });
145
+ }
146
+ configureMTLS(mtlsConfig) {
147
+ if (!mtlsConfig)
148
+ return undefined;
149
+ return {
150
+ truststoreUri: mtlsConfig.bucket.s3UrlForObject(mtlsConfig.key),
151
+ truststoreVersion: mtlsConfig.version,
152
+ };
153
+ }
154
+ }
155
+ exports.DomainName = DomainName;
156
+ _a = JSII_RTTI_SYMBOL_1;
157
+ DomainName[_a] = { fqn: "terraconstructs.aws.compute.DomainName", version: "0.1.0" };
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZG9tYWluLW5hbWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzR0FBc0c7QUFFdEcsc0RBRzZCO0FBQzdCLGlDQUE4QjtBQUU5QiwyREFBOEUsQ0FBQyxrQ0FBa0M7QUFDakgsdUNBQW1ELENBQUMsNkNBQTZDO0FBRWpHLG9EQUkwQjtBQUMxQiw0Q0FBd0M7QUF1QnhDOztHQUVHO0FBQ0gsSUFBWSxjQU1YO0FBTkQsV0FBWSxjQUFjO0lBQ3hCLDJCQUEyQjtJQUMzQixxQ0FBbUIsQ0FBQTtJQUVuQiwyQkFBMkI7SUFDM0IscUNBQW1CLENBQUE7QUFDckIsQ0FBQyxFQU5XLGNBQWMsOEJBQWQsY0FBYyxRQU16QjtBQStFRCxNQUFhLFVBQVcsU0FBUSxnQ0FBZ0I7SUFDOUM7O09BRUc7SUFDSSxNQUFNLENBQUMsd0JBQXdCLENBQ3BDLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixLQUEyQjtRQUUzQixNQUFNLE1BQU8sU0FBUSxnQ0FBZ0I7WUFLbkMsSUFBVyxPQUFPO2dCQUNoQixPQUFPO29CQUNMLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtvQkFDM0IseUJBQXlCLEVBQUUsSUFBSSxDQUFDLHlCQUF5QjtvQkFDekQsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLDJCQUEyQjtpQkFDOUQsQ0FBQztZQUNKLENBQUM7WUFDRCxZQUFZLENBQVksRUFBRSxDQUFTO2dCQUNqQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRTtvQkFDVixrQkFBa0IsRUFBRSxzQkFBc0Isb0JBQVEsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxhQUFhO2lCQUN6RixDQUFDLENBQUMsQ0FBQyx1Q0FBdUM7Z0JBZDdCLGVBQVUsR0FBRyxLQUFLLENBQUMsVUFBVSxDQUFDO2dCQUM5Qiw4QkFBeUIsR0FBRyxLQUFLLENBQUMscUJBQXFCLENBQUM7Z0JBQ3hELGdDQUEyQixHQUN6QyxLQUFLLENBQUMsMkJBQTJCLENBQUM7WUFZcEMsQ0FBQztTQUNGO1FBRUQsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQVVELElBQVcsT0FBTztRQUNoQixPQUFPO1lBQ0wsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLHlCQUF5QixFQUFFLElBQUksQ0FBQyx5QkFBeUI7WUFDekQsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLDJCQUEyQjtTQUM5RCxDQUFDO0lBQ0osQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0I7UUFDOUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFkVCxjQUFTLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFnQnpELElBQUksQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLFlBQVksSUFBSSxzQkFBWSxDQUFDLFFBQVEsQ0FBQztRQUNoRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsWUFBWSxLQUFLLHNCQUFZLENBQUMsSUFBSSxDQUFDO1FBQ3JELElBQUksQ0FBQyxjQUFjLEdBQUcsS0FBSyxDQUFDLGNBQWMsQ0FBQztRQUUzQyxJQUNFLENBQUMsYUFBSyxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDO1lBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUM5QixDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYix3REFBd0QsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUMzRSxDQUFDLENBQUMsMENBQTBDO1FBQy9DLENBQUM7UUFFRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNsRCxJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksbUNBQW9CLENBQUMsb0JBQW9CLENBQzNELElBQUksRUFDSixVQUFVLEVBQ1Y7WUFDRSxVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsY0FBYyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxjQUFjLENBQUMsQ0FBQyxDQUFDLFNBQVM7WUFDbkUsc0JBQXNCLEVBQUUsQ0FBQyxJQUFJO2dCQUMzQixDQUFDLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxjQUFjO2dCQUNsQyxDQUFDLENBQUMsU0FBUztZQUNiLHFCQUFxQixFQUFFLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxFQUFFO1lBQ3JELHVCQUF1QixFQUFFLFVBQVU7WUFDbkMsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO1NBQ3JDLENBQ0YsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUM7UUFFM0MsSUFBSSxDQUFDLHlCQUF5QixHQUFHLElBQUk7WUFDbkMsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsb0JBQW9CO1lBQ3BDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDO1FBRXJDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxJQUFJO1lBQ3JDLENBQUMsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQjtZQUNoQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUM7UUFFakMsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN6RCxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNqQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsS0FBSyxDQUFDLE9BQU8sRUFBRTtnQkFDckMsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQ3pCLENBQUMsQ0FBQztRQUNMLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7WUFDdkMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRTtnQkFDaEQsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO2FBQ3pCLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRU8sZ0JBQWdCLENBQUMsSUFBYTtRQUNwQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssc0JBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDNUMsTUFBTSxJQUFJLEtBQUssQ0FDYixtRkFBbUYsQ0FDcEYsQ0FBQyxDQUFDLDBDQUEwQztZQUMvQyxDQUFDO1lBQ0QsSUFDRSxJQUFJLENBQUMsY0FBYztnQkFDbkIsSUFBSSxDQUFDLGNBQWMsS0FBSyxjQUFjLENBQUMsT0FBTyxFQUM5QyxDQUFDO2dCQUNELE1BQU0sSUFBSSxLQUFLLENBQ2IsMkVBQTJFLENBQzVFLENBQUMsQ0FBQywwQ0FBMEM7WUFDL0MsQ0FBQztZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVPLFlBQVksQ0FBQyxJQUFhO1FBQ2hDLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVNLGtCQUFrQixDQUN2QixTQUFtQixFQUNuQixVQUFrQyxFQUFFO1FBRXBDLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDekMsTUFBTSxJQUFJLEtBQUssQ0FDYixjQUFjLElBQUksQ0FBQyxZQUFZLG1DQUFtQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQ3JGLENBQUMsQ0FBQywwQ0FBMEM7UUFDL0MsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN4QyxNQUFNLElBQUksS0FBSyxDQUNiLGlGQUFpRixDQUNsRixDQUFDLENBQUMsMENBQTBDO1FBQy9DLENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckMsTUFBTSxjQUFjLEdBQUcsT0FBTyxDQUFDLFFBQVE7WUFDckMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUM7WUFDdEMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUNYLE1BQU0sRUFBRSxHQUFHLE9BQU8sY0FBYyxJQUFJLG9CQUFRLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBRXZHLDhHQUE4RztRQUM5RyxPQUFPLElBQUksbUNBQWUsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQ25DLFVBQVUsRUFBRSxJQUFJLEVBQUUsdUNBQXVDO1lBQ3pELE9BQU8sRUFBRSxTQUFTO1lBQ2xCLEdBQUcsT0FBTztTQUNYLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxhQUFhLENBQ2xCLFdBQW1CLEVBQ25CLFVBQTZCLEVBQUU7UUFFL0IsSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUN6QyxNQUFNLElBQUksS0FBSyxDQUNiLGNBQWMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLG1DQUFtQyxPQUFPLENBQUMsUUFBUSxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxHQUFHLENBQ3JHLENBQUMsQ0FBQywwQ0FBMEM7UUFDL0MsQ0FBQztRQUNELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FBQyxRQUFRO1lBQ3JDLENBQUMsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDO1lBQ3RDLENBQUMsQ0FBQyxNQUFNLENBQUM7UUFDWCxNQUFNLEVBQUUsR0FBRyxVQUFVLGNBQWMsSUFBSSxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUU1RyxJQUFJLHFDQUFzQixDQUFDLHNCQUFzQixDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDMUQsS0FBSyxFQUFFLFdBQVcsQ0FBQyxPQUFPLENBQUMsU0FBUztZQUNwQyxLQUFLLEVBQUUsV0FBVyxDQUFDLFNBQVM7WUFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVO1lBQzNCLGFBQWEsRUFBRSxPQUFPLENBQUMsUUFBUTtTQUNoQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sYUFBYSxDQUNuQixVQUF1QjtRQUl2QixJQUFJLENBQUMsVUFBVTtZQUFFLE9BQU8sU0FBUyxDQUFDO1FBQ2xDLE9BQU87WUFDTCxhQUFhLEVBQUUsVUFBVSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztZQUMvRCxpQkFBaUIsRUFBRSxVQUFVLENBQUMsT0FBTztTQUN0QyxDQUFDO0lBQ0osQ0FBQzs7QUE1TEgsZ0NBNkxDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTg2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWFwaWdhdGV3YXkvbGliL2RvbWFpbi1uYW1lLnRzXG5cbmltcG9ydCB7XG4gIGFwaUdhdGV3YXlEb21haW5OYW1lLFxuICBhcGlnYXRld2F5djJBcGlNYXBwaW5nLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgVG9rZW4gfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBCYXNlUGF0aE1hcHBpbmcsIEJhc2VQYXRoTWFwcGluZ09wdGlvbnMgfSBmcm9tIFwiLi9iYXNlLXBhdGgtbWFwcGluZ1wiOyAvLyBBc3N1bWluZyB0aGlzIHdpbGwgYmUgY29udmVydGVkXG5pbXBvcnQgeyBFbmRwb2ludFR5cGUsIElSZXN0QXBpIH0gZnJvbSBcIi4vcmVzdGFwaVwiOyAvLyBBc3N1bWluZyB0aGVzZSB3aWxsIGJlIGNvbnZlcnRlZC9hdmFpbGFibGVcbmltcG9ydCB7IElTdGFnZSB9IGZyb20gXCIuL3N0YWdlXCI7IC8vIEFzc3VtaW5nIHRoaXMgd2lsbCBiZSBjb252ZXJ0ZWQvYXZhaWxhYmxlXG5pbXBvcnQge1xuICBBd3NDb25zdHJ1Y3RCYXNlLFxuICBBd3NDb25zdHJ1Y3RQcm9wcyxcbiAgSUF3c0NvbnN0cnVjdCxcbn0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IEF3c1N0YWNrIH0gZnJvbSBcIi4uL2F3cy1zdGFja1wiO1xuaW1wb3J0ICogYXMgYWNtIGZyb20gXCIuLi9lZGdlXCI7XG5pbXBvcnQgeyBJQnVja2V0IH0gZnJvbSBcIi4uL3N0b3JhZ2VcIjtcbi8vIGltcG9ydCB7IFZhbGlkYXRpb25FcnJvciB9IGZyb20gXCIuLi8uLi9jb3JlL2xpYi9lcnJvcnNcIjsgLy8gVE9ETzogSW1wbGVtZW50IGFkdmFuY2VkIGVycm9yIGhhbmRsaW5nXG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYW4gYXBpIG1hcHBpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBcGlNYXBwaW5nT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgYXBpIHBhdGggbmFtZSB0aGF0IGNhbGxlcnMgb2YgdGhlIEFQSSBtdXN0IHByb3ZpZGUgaW4gdGhlIFVSTCBhZnRlclxuICAgKiB0aGUgZG9tYWluIG5hbWUgKGUuZy4gYGV4YW1wbGUuY29tL2Jhc2UtcGF0aGApLiBJZiB5b3Ugc3BlY2lmeSB0aGlzXG4gICAqIHByb3BlcnR5LCBpdCBjYW4ndCBiZSBhbiBlbXB0eSBzdHJpbmcuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgdW5kZWZpbmVkLCBhIG1hcHBpbmcgd2lsbCBiZSBhZGRlZCBmb3IgdGhlIGVtcHR5IHBhdGguIEFueSByZXF1ZXN0XG4gICAqIHRoYXQgZG9lcyBub3QgbWF0Y2ggYSBtYXBwaW5nIHdpbGwgZ2V0IHNlbnQgdG8gdGhlIEFQSSB0aGF0IGhhcyBiZWVuIG1hcHBlZFxuICAgKiB0byB0aGUgZW1wdHkgcGF0aC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBtYXAgcmVxdWVzdHMgZnJvbSB0aGUgZG9tYWluIHJvb3QgKGUuZy4gYGV4YW1wbGUuY29tYCkuXG4gICAqL1xuICByZWFkb25seSBiYXNlUGF0aD86IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCB5b3Ugd2FudCBBUEkgR2F0ZXdheSB0byB1c2UgZm9yIEhUVFBTIGNvbm5lY3Rpb25zLlxuICovXG5leHBvcnQgZW51bSBTZWN1cml0eVBvbGljeSB7XG4gIC8qKiBDaXBoZXIgc3VpdGUgVExTIDEuMCAqL1xuICBUTFNfMV8wID0gXCJUTFNfMV8wXCIsXG5cbiAgLyoqIENpcGhlciBzdWl0ZSBUTFMgMS4yICovXG4gIFRMU18xXzIgPSBcIlRMU18xXzJcIixcbn1cblxuZXhwb3J0IGludGVyZmFjZSBEb21haW5OYW1lT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgY3VzdG9tIGRvbWFpbiBuYW1lIGZvciB5b3VyIEFQSS4gVXBwZXJjYXNlIGxldHRlcnMgYXJlIG5vdCBzdXBwb3J0ZWQuXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSByZWZlcmVuY2UgdG8gYW4gQVdTLW1hbmFnZWQgY2VydGlmaWNhdGUgZm9yIHVzZSBieSB0aGUgZWRnZS1vcHRpbWl6ZWRcbiAgICogZW5kcG9pbnQgZm9yIHRoZSBkb21haW4gbmFtZS4gRm9yIFwiRURHRVwiIGRvbWFpbiBuYW1lcywgdGhlIGNlcnRpZmljYXRlXG4gICAqIG5lZWRzIHRvIGJlIGluIHRoZSBVUyBFYXN0IChOLiBWaXJnaW5pYSkgcmVnaW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGU6IGFjbS5JQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIFRoZSB0eXBlIG9mIGVuZHBvaW50IGZvciB0aGlzIERvbWFpbk5hbWUuXG4gICAqIEBkZWZhdWx0IFJFR0lPTkFMXG4gICAqL1xuICByZWFkb25seSBlbmRwb2ludFR5cGU/OiBFbmRwb2ludFR5cGU7XG5cbiAgLyoqXG4gICAqIFRoZSBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgKFRMUykgdmVyc2lvbiArIGNpcGhlciBzdWl0ZSBmb3IgdGhpcyBkb21haW4gbmFtZS5cbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtYXBpZ2F0ZXdheS1kb21haW5uYW1lLmh0bWxcbiAgICogQGRlZmF1bHQgU2VjdXJpdHlQb2xpY3kuVExTXzFfMlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlQb2xpY3k/OiBTZWN1cml0eVBvbGljeTtcblxuICAvKipcbiAgICogVGhlIG11dHVhbCBUTFMgYXV0aGVudGljYXRpb24gY29uZmlndXJhdGlvbiBmb3IgYSBjdXN0b20gZG9tYWluIG5hbWUuXG4gICAqIEBkZWZhdWx0IC0gbVRMUyBpcyBub3QgY29uZmlndXJlZC5cbiAgICovXG4gIHJlYWRvbmx5IG10bHM/OiBNVExTQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBUaGUgYmFzZSBwYXRoIG5hbWUgdGhhdCBjYWxsZXJzIG9mIHRoZSBBUEkgbXVzdCBwcm92aWRlIGluIHRoZSBVUkwgYWZ0ZXJcbiAgICogdGhlIGRvbWFpbiBuYW1lIChlLmcuIGBleGFtcGxlLmNvbS9iYXNlLXBhdGhgKS4gSWYgeW91IHNwZWNpZnkgdGhpc1xuICAgKiBwcm9wZXJ0eSwgaXQgY2FuJ3QgYmUgYW4gZW1wdHkgc3RyaW5nLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG1hcCByZXF1ZXN0cyBmcm9tIHRoZSBkb21haW4gcm9vdCAoZS5nLiBgZXhhbXBsZS5jb21gKS5cbiAgICovXG4gIHJlYWRvbmx5IGJhc2VQYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvbWFpbk5hbWVQcm9wcyBleHRlbmRzIERvbWFpbk5hbWVPcHRpb25zLCBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBJZiBzcGVjaWZpZWQsIGFsbCByZXF1ZXN0cyB0byB0aGlzIGRvbWFpbiB3aWxsIGJlIG1hcHBlZCB0byB0aGUgcHJvZHVjdGlvblxuICAgKiBkZXBsb3ltZW50IG9mIHRoaXMgQVBJLiBJZiB5b3Ugd2lzaCB0byBtYXAgdGhpcyBkb21haW4gdG8gbXVsdGlwbGUgQVBJc1xuICAgKiB3aXRoIGRpZmZlcmVudCBiYXNlIHBhdGhzLCB1c2UgYGFkZEJhc2VQYXRoTWFwcGluZ2Agb3IgYGFkZEFwaU1hcHBpbmdgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHlvdSB3aWxsIGhhdmUgdG8gY2FsbCBgYWRkQmFzZVBhdGhNYXBwaW5nYCB0byBtYXAgdGhpcyBkb21haW4gdG9cbiAgICogQVBJIGVuZHBvaW50cy5cbiAgICovXG4gIHJlYWRvbmx5IG1hcHBpbmc/OiBJUmVzdEFwaTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBJRG9tYWluTmFtZSBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKipcbiAgICogVGhlIGRvbWFpbiBuYW1lIChlLmcuIGBleGFtcGxlLmNvbWApXG4gICAqXG4gICAqIEBhdHRyaWJ1dGUgRG9tYWluTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgUm91dGU1MyBhbGlhcyB0YXJnZXQgdG8gdXNlIGluIG9yZGVyIHRvIGNvbm5lY3QgYSByZWNvcmQgc2V0IHRvIHRoaXMgZG9tYWluIHRocm91Z2ggYW4gYWxpYXMuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGUgRGlzdHJpYnV0aW9uRG9tYWluTmFtZSxSZWdpb25hbERvbWFpbk5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWVBbGlhc0RvbWFpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFJvdXRlNTMgaG9zdGVkIHpvbmUgSUQgdG8gdXNlIGluIG9yZGVyIHRvIGNvbm5lY3QgYSByZWNvcmQgc2V0IHRvIHRoaXMgZG9tYWluIHRocm91Z2ggYW4gYWxpYXMuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGUgRGlzdHJpYnV0aW9uSG9zdGVkWm9uZUlkLFJlZ2lvbmFsSG9zdGVkWm9uZUlkXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lQWxpYXNIb3N0ZWRab25lSWQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIERvbWFpbk5hbWUgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSURvbWFpbk5hbWUge1xuICAvKipcbiAgICogSW1wb3J0cyBhbiBleGlzdGluZyBkb21haW4gbmFtZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbURvbWFpbk5hbWVBdHRyaWJ1dGVzKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBhdHRyczogRG9tYWluTmFtZUF0dHJpYnV0ZXMsXG4gICk6IElEb21haW5OYW1lIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSURvbWFpbk5hbWUge1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRvbWFpbk5hbWUgPSBhdHRycy5kb21haW5OYW1lO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGRvbWFpbk5hbWVBbGlhc0RvbWFpbk5hbWUgPSBhdHRycy5kb21haW5OYW1lQWxpYXNUYXJnZXQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgZG9tYWluTmFtZUFsaWFzSG9zdGVkWm9uZUlkID1cbiAgICAgICAgYXR0cnMuZG9tYWluTmFtZUFsaWFzSG9zdGVkWm9uZUlkO1xuICAgICAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRvbWFpbk5hbWU6IHRoaXMuZG9tYWluTmFtZSxcbiAgICAgICAgICBkb21haW5OYW1lQWxpYXNEb21haW5OYW1lOiB0aGlzLmRvbWFpbk5hbWVBbGlhc0RvbWFpbk5hbWUsXG4gICAgICAgICAgZG9tYWluTmFtZUFsaWFzSG9zdGVkWm9uZUlkOiB0aGlzLmRvbWFpbk5hbWVBbGlhc0hvc3RlZFpvbmVJZCxcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICAgIGNvbnN0cnVjdG9yKHM6IENvbnN0cnVjdCwgaTogc3RyaW5nKSB7XG4gICAgICAgIHN1cGVyKHMsIGksIHtcbiAgICAgICAgICBlbnZpcm9ubWVudEZyb21Bcm46IGBhcm46YXdzOmFwaWdhdGV3YXk6JHtBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChzKS5yZWdpb259OjovcmVzdGFwaXNgLFxuICAgICAgICB9KTsgLy8gRHVtbXkgQVJOIGZvciByZWdpb24vYWNjb3VudCBjb250ZXh0XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBkb21haW5OYW1lQWxpYXNEb21haW5OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBkb21haW5OYW1lQWxpYXNIb3N0ZWRab25lSWQ6IHN0cmluZztcbiAgcHJpdmF0ZSByZWFkb25seSBiYXNlUGF0aHMgPSBuZXcgU2V0PHN0cmluZyB8IHVuZGVmaW5lZD4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBzZWN1cml0eVBvbGljeT86IFNlY3VyaXR5UG9saWN5O1xuICBwcml2YXRlIHJlYWRvbmx5IGVuZHBvaW50VHlwZTogRW5kcG9pbnRUeXBlO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBhcGlHYXRld2F5RG9tYWluTmFtZS5BcGlHYXRld2F5RG9tYWluTmFtZTtcblxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRvbWFpbk5hbWU6IHRoaXMuZG9tYWluTmFtZSxcbiAgICAgIGRvbWFpbk5hbWVBbGlhc0RvbWFpbk5hbWU6IHRoaXMuZG9tYWluTmFtZUFsaWFzRG9tYWluTmFtZSxcbiAgICAgIGRvbWFpbk5hbWVBbGlhc0hvc3RlZFpvbmVJZDogdGhpcy5kb21haW5OYW1lQWxpYXNIb3N0ZWRab25lSWQsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEb21haW5OYW1lUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHRoaXMuZW5kcG9pbnRUeXBlID0gcHJvcHMuZW5kcG9pbnRUeXBlIHx8IEVuZHBvaW50VHlwZS5SRUdJT05BTDtcbiAgICBjb25zdCBlZGdlID0gdGhpcy5lbmRwb2ludFR5cGUgPT09IEVuZHBvaW50VHlwZS5FREdFO1xuICAgIHRoaXMuc2VjdXJpdHlQb2xpY3kgPSBwcm9wcy5zZWN1cml0eVBvbGljeTtcblxuICAgIGlmIChcbiAgICAgICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZG9tYWluTmFtZSkgJiZcbiAgICAgIC9bQS1aXS8udGVzdChwcm9wcy5kb21haW5OYW1lKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRG9tYWluIG5hbWUgZG9lcyBub3Qgc3VwcG9ydCB1cHBlcmNhc2UgbGV0dGVycy4gR290OiAke3Byb3BzLmRvbWFpbk5hbWV9YCxcbiAgICAgICk7IC8vIFRPRE86IEltcGxlbWVudCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvclxuICAgIH1cblxuICAgIGNvbnN0IG10bHNDb25maWcgPSB0aGlzLmNvbmZpZ3VyZU1UTFMocHJvcHMubXRscyk7XG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBhcGlHYXRld2F5RG9tYWluTmFtZS5BcGlHYXRld2F5RG9tYWluTmFtZShcbiAgICAgIHRoaXMsXG4gICAgICBcIlJlc291cmNlXCIsXG4gICAgICB7XG4gICAgICAgIGRvbWFpbk5hbWU6IHByb3BzLmRvbWFpbk5hbWUsXG4gICAgICAgIGNlcnRpZmljYXRlQXJuOiBlZGdlID8gcHJvcHMuY2VydGlmaWNhdGUuY2VydGlmaWNhdGVBcm4gOiB1bmRlZmluZWQsXG4gICAgICAgIHJlZ2lvbmFsQ2VydGlmaWNhdGVBcm46ICFlZGdlXG4gICAgICAgICAgPyBwcm9wcy5jZXJ0aWZpY2F0ZS5jZXJ0aWZpY2F0ZUFyblxuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBlbmRwb2ludENvbmZpZ3VyYXRpb246IHsgdHlwZXM6IFt0aGlzLmVuZHBvaW50VHlwZV0gfSxcbiAgICAgICAgbXV0dWFsVGxzQXV0aGVudGljYXRpb246IG10bHNDb25maWcsXG4gICAgICAgIHNlY3VyaXR5UG9saWN5OiBwcm9wcy5zZWN1cml0eVBvbGljeSxcbiAgICAgIH0sXG4gICAgKTtcblxuICAgIHRoaXMuZG9tYWluTmFtZSA9IHRoaXMucmVzb3VyY2UuZG9tYWluTmFtZTtcblxuICAgIHRoaXMuZG9tYWluTmFtZUFsaWFzRG9tYWluTmFtZSA9IGVkZ2VcbiAgICAgID8gdGhpcy5yZXNvdXJjZS5jbG91ZGZyb250RG9tYWluTmFtZVxuICAgICAgOiB0aGlzLnJlc291cmNlLnJlZ2lvbmFsRG9tYWluTmFtZTtcblxuICAgIHRoaXMuZG9tYWluTmFtZUFsaWFzSG9zdGVkWm9uZUlkID0gZWRnZVxuICAgICAgPyB0aGlzLnJlc291cmNlLmNsb3VkZnJvbnRab25lSWRcbiAgICAgIDogdGhpcy5yZXNvdXJjZS5yZWdpb25hbFpvbmVJZDtcblxuICAgIGNvbnN0IG11bHRpTGV2ZWwgPSB0aGlzLnZhbGlkYXRlQmFzZVBhdGgocHJvcHMuYmFzZVBhdGgpO1xuICAgIGlmIChwcm9wcy5tYXBwaW5nICYmICFtdWx0aUxldmVsKSB7XG4gICAgICB0aGlzLmFkZEJhc2VQYXRoTWFwcGluZyhwcm9wcy5tYXBwaW5nLCB7XG4gICAgICAgIGJhc2VQYXRoOiBwcm9wcy5iYXNlUGF0aCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAocHJvcHMubWFwcGluZyAmJiBtdWx0aUxldmVsKSB7XG4gICAgICB0aGlzLmFkZEFwaU1hcHBpbmcocHJvcHMubWFwcGluZy5kZXBsb3ltZW50U3RhZ2UsIHtcbiAgICAgICAgYmFzZVBhdGg6IHByb3BzLmJhc2VQYXRoLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUJhc2VQYXRoKHBhdGg/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICBpZiAodGhpcy5pc011bHRpTGV2ZWwocGF0aCkpIHtcbiAgICAgIGlmICh0aGlzLmVuZHBvaW50VHlwZSA9PT0gRW5kcG9pbnRUeXBlLkVER0UpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwibXVsdGktbGV2ZWwgYmFzZVBhdGggaXMgb25seSBzdXBwb3J0ZWQgd2hlbiBlbmRwb2ludFR5cGUgaXMgRW5kcG9pbnRUeXBlLlJFR0lPTkFMXCIsXG4gICAgICAgICk7IC8vIFRPRE86IEltcGxlbWVudCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvclxuICAgICAgfVxuICAgICAgaWYgKFxuICAgICAgICB0aGlzLnNlY3VyaXR5UG9saWN5ICYmXG4gICAgICAgIHRoaXMuc2VjdXJpdHlQb2xpY3kgIT09IFNlY3VyaXR5UG9saWN5LlRMU18xXzJcbiAgICAgICkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgXCJzZWN1cml0eVBvbGljeSBtdXN0IGJlIHNldCB0byBUTFNfMV8yIGlmIG11bHRpLWxldmVsIGJhc2VQYXRoIGlzIHByb3ZpZGVkXCIsXG4gICAgICAgICk7IC8vIFRPRE86IEltcGxlbWVudCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvclxuICAgICAgfVxuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHByaXZhdGUgaXNNdWx0aUxldmVsKHBhdGg/OiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKHBhdGg/LnNwbGl0KFwiL1wiKS5maWx0ZXIoKHgpID0+ICEheCkgPz8gW10pLmxlbmd0aCA+PSAyO1xuICB9XG5cbiAgcHVibGljIGFkZEJhc2VQYXRoTWFwcGluZyhcbiAgICB0YXJnZXRBcGk6IElSZXN0QXBpLFxuICAgIG9wdGlvbnM6IEJhc2VQYXRoTWFwcGluZ09wdGlvbnMgPSB7fSxcbiAgKTogQmFzZVBhdGhNYXBwaW5nIHtcbiAgICBpZiAodGhpcy5iYXNlUGF0aHMuaGFzKG9wdGlvbnMuYmFzZVBhdGgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBEb21haW5OYW1lICR7dGhpcy5mcmllbmRseU5hbWV9IGFscmVhZHkgaGFzIGEgbWFwcGluZyBmb3IgcGF0aCAke29wdGlvbnMuYmFzZVBhdGh9YCxcbiAgICAgICk7IC8vIFRPRE86IEltcGxlbWVudCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvclxuICAgIH1cbiAgICBpZiAodGhpcy5pc011bHRpTGV2ZWwob3B0aW9ucy5iYXNlUGF0aCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ0Jhc2VQYXRoTWFwcGluZyBkb2VzIG5vdCBzdXBwb3J0IG11bHRpLWxldmVsIHBhdGhzLiBVc2UgXCJhZGRBcGlNYXBwaW5nIGluc3RlYWQuJyxcbiAgICAgICk7IC8vIFRPRE86IEltcGxlbWVudCBVbnNjb3BlZFZhbGlkYXRpb25FcnJvclxuICAgIH1cblxuICAgIHRoaXMuYmFzZVBhdGhzLmFkZChvcHRpb25zLmJhc2VQYXRoKTtcbiAgICBjb25zdCBiYXNlUGF0aElkUGFydCA9IG9wdGlvbnMuYmFzZVBhdGhcbiAgICAgID8gb3B0aW9ucy5iYXNlUGF0aC5yZXBsYWNlKC9cXC8vZywgXCJfXCIpXG4gICAgICA6IFwicm9vdFwiO1xuICAgIGNvbnN0IGlkID0gYE1hcC0ke2Jhc2VQYXRoSWRQYXJ0fS0ke0F3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHRoaXMpLnVuaXF1ZVJlc291cmNlTmFtZSh0YXJnZXRBcGkubm9kZSl9YDtcblxuICAgIC8vIEFzc3VtaW5nIEJhc2VQYXRoTWFwcGluZyBpcyBhIFRlcnJhQ29uc3RydWN0IHRoYXQgd3JhcHMgYXBpR2F0ZXdheUJhc2VQYXRoTWFwcGluZy5BcGlHYXRld2F5QmFzZVBhdGhNYXBwaW5nXG4gICAgcmV0dXJuIG5ldyBCYXNlUGF0aE1hcHBpbmcodGhpcywgaWQsIHtcbiAgICAgIGRvbWFpbk5hbWU6IHRoaXMsIC8vIFBhc3MgdGhlIERvbWFpbk5hbWUgY29uc3RydWN0IGl0c2VsZlxuICAgICAgcmVzdEFwaTogdGFyZ2V0QXBpLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRBcGlNYXBwaW5nKFxuICAgIHRhcmdldFN0YWdlOiBJU3RhZ2UsXG4gICAgb3B0aW9uczogQXBpTWFwcGluZ09wdGlvbnMgPSB7fSxcbiAgKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYmFzZVBhdGhzLmhhcyhvcHRpb25zLmJhc2VQYXRoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRG9tYWluTmFtZSAke3RoaXMubm9kZS5pZH0gYWxyZWFkeSBoYXMgYSBtYXBwaW5nIGZvciBwYXRoICR7b3B0aW9ucy5iYXNlUGF0aH0uICgke3RoaXMubm9kZS5wYXRofSlgLFxuICAgICAgKTsgLy8gVE9ETzogSW1wbGVtZW50IFVuc2NvcGVkVmFsaWRhdGlvbkVycm9yXG4gICAgfVxuICAgIHRoaXMudmFsaWRhdGVCYXNlUGF0aChvcHRpb25zLmJhc2VQYXRoKTtcbiAgICB0aGlzLmJhc2VQYXRocy5hZGQob3B0aW9ucy5iYXNlUGF0aCk7XG4gICAgY29uc3QgYmFzZVBhdGhJZFBhcnQgPSBvcHRpb25zLmJhc2VQYXRoXG4gICAgICA/IG9wdGlvbnMuYmFzZVBhdGgucmVwbGFjZSgvXFwvL2csIFwiX1wiKVxuICAgICAgOiBcInJvb3RcIjtcbiAgICBjb25zdCBpZCA9IGBBcGlNYXAtJHtiYXNlUGF0aElkUGFydH0tJHtBd3NTdGFjay5vZkF3c0NvbnN0cnVjdCh0aGlzKS51bmlxdWVSZXNvdXJjZU5hbWUodGFyZ2V0U3RhZ2Uubm9kZSl9YDtcblxuICAgIG5ldyBhcGlnYXRld2F5djJBcGlNYXBwaW5nLkFwaWdhdGV3YXl2MkFwaU1hcHBpbmcodGhpcywgaWQsIHtcbiAgICAgIGFwaUlkOiB0YXJnZXRTdGFnZS5yZXN0QXBpLnJlc3RBcGlJZCxcbiAgICAgIHN0YWdlOiB0YXJnZXRTdGFnZS5zdGFnZU5hbWUsXG4gICAgICBkb21haW5OYW1lOiB0aGlzLmRvbWFpbk5hbWUsXG4gICAgICBhcGlNYXBwaW5nS2V5OiBvcHRpb25zLmJhc2VQYXRoLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBjb25maWd1cmVNVExTKFxuICAgIG10bHNDb25maWc/OiBNVExTQ29uZmlnLFxuICApOlxuICAgIHwgYXBpR2F0ZXdheURvbWFpbk5hbWUuQXBpR2F0ZXdheURvbWFpbk5hbWVNdXR1YWxUbHNBdXRoZW50aWNhdGlvblxuICAgIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIW10bHNDb25maWcpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgcmV0dXJuIHtcbiAgICAgIHRydXN0c3RvcmVVcmk6IG10bHNDb25maWcuYnVja2V0LnMzVXJsRm9yT2JqZWN0KG10bHNDb25maWcua2V5KSxcbiAgICAgIHRydXN0c3RvcmVWZXJzaW9uOiBtdGxzQ29uZmlnLnZlcnNpb24sXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIERvbWFpbk5hbWVBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBkb21haW4gbmFtZSAoZS5nLiBgZXhhbXBsZS5jb21gKVxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgUm91dGU1MyBhbGlhcyB0YXJnZXQgdG8gdXNlIGluIG9yZGVyIHRvIGNvbm5lY3QgYSByZWNvcmQgc2V0IHRvIHRoaXMgZG9tYWluIHRocm91Z2ggYW4gYWxpYXMuXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lQWxpYXNUYXJnZXQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFJvdXRlNTMgaG9zdGVkIHpvbmUgSUQgdG8gdXNlIGluIG9yZGVyIHRvIGNvbm5lY3QgYSByZWNvcmQgc2V0IHRvIHRoaXMgZG9tYWluIHRocm91Z2ggYW4gYWxpYXMuXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lQWxpYXNIb3N0ZWRab25lSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgbVRMUyBhdXRoZW50aWNhdGlvbiBjb25maWd1cmF0aW9uIGZvciBhIGN1c3RvbSBkb21haW4gbmFtZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNVExTQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBidWNrZXQgdGhhdCB0aGUgdHJ1c3Qgc3RvcmUgaXMgaG9zdGVkIGluLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0OiBJQnVja2V0O1xuXG4gIC8qKlxuICAgKiBUaGUga2V5IGluIFMzIHRvIGxvb2sgYXQgZm9yIHRoZSB0cnVzdCBzdG9yZS5cbiAgICovXG4gIHJlYWRvbmx5IGtleTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiAgVGhlIHZlcnNpb24gb2YgdGhlIFMzIG9iamVjdCB0aGF0IGNvbnRhaW5zIHlvdXIgdHJ1c3RzdG9yZS5cbiAgICogIFRvIHNwZWNpZnkgYSB2ZXJzaW9uLCB5b3UgbXVzdCBoYXZlIHZlcnNpb25pbmcgZW5hYmxlZCBmb3IgdGhlIFMzIGJ1Y2tldC5cbiAgICogIEBkZWZhdWx0IC0gbGF0ZXN0IHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmc7XG59XG4iXX0=
@@ -1,9 +1,9 @@
1
1
  import { lambdaFunctionEventInvokeConfig } from "@cdktf/provider-aws";
2
2
  import { Construct } from "constructs";
3
- import { AwsConstructBase, AwsConstructProps } from "..";
3
+ import { AwsConstructBase, AwsConstructProps } from "../aws-construct";
4
4
  import { IFunction } from "./function-base";
5
5
  import { IDestination } from "./function-destination";
6
- import { Duration } from "../..";
6
+ import { Duration } from "../../duration";
7
7
  /**
8
8
  * Options to add an EventInvokeConfig to a function.
9
9
  */
@@ -4,7 +4,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  exports.EventInvokeConfig = void 0;
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const provider_aws_1 = require("@cdktf/provider-aws");
7
- const __1 = require("..");
7
+ const aws_construct_1 = require("../aws-construct");
8
8
  const function_destination_1 = require("./function-destination");
9
9
  /**
10
10
  * Configure options for asynchronous invocation on a version or an alias
@@ -14,7 +14,7 @@ const function_destination_1 = require("./function-destination");
14
14
  * event fails all processing attempts or stays in the asynchronous invocation
15
15
  * queue for too long, Lambda discards it.
16
16
  */
17
- class EventInvokeConfig extends __1.AwsConstructBase {
17
+ class EventInvokeConfig extends aws_construct_1.AwsConstructBase {
18
18
  // TODO: output undefined support...
19
19
  get outputs() {
20
20
  return {};
@@ -59,5 +59,5 @@ class EventInvokeConfig extends __1.AwsConstructBase {
59
59
  }
60
60
  exports.EventInvokeConfig = EventInvokeConfig;
61
61
  _a = JSII_RTTI_SYMBOL_1;
62
- EventInvokeConfig[_a] = { fqn: "terraconstructs.aws.compute.EventInvokeConfig", version: "0.0.24" };
63
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtaW52b2tlLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9ldmVudC1pbnZva2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQXNFO0FBRXRFLDBCQUF5RDtBQUV6RCxpRUFBdUU7QUFnRXZFOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLGlCQUFrQixTQUFRLG9CQUFnQjtJQUVyRCxvQ0FBb0M7SUFDcEMsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUNFLEtBQUssQ0FBQyxXQUFXO1lBQ2pCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUNqQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUN4QyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixxRkFBcUYsQ0FDdEYsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUNFLEtBQUssQ0FBQyxhQUFhO1lBQ25CLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsRUFDcEQsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVE7WUFDWCxJQUFJLDhDQUErQixDQUFDLCtCQUErQixDQUNqRSxJQUFJLEVBQ0osVUFBVSxFQUNWO2dCQUNFLGlCQUFpQixFQUNmLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVM7b0JBQ2hDLENBQUMsQ0FBQzt3QkFDRSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVM7NEJBQ2pCLENBQUMsQ0FBQztnQ0FDRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7b0NBQ3BELElBQUksRUFBRSxzQ0FBZSxDQUFDLE9BQU87aUNBQzlCLENBQUM7NkJBQ0g7NEJBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDUCxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVM7NEJBQ2pCLENBQUMsQ0FBQztnQ0FDRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7b0NBQ3BELElBQUksRUFBRSxzQ0FBZSxDQUFDLE9BQU87aUNBQzlCLENBQUM7NkJBQ0g7NEJBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztxQkFDUjtvQkFDSCxDQUFDLENBQUMsU0FBUztnQkFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO2dCQUN6Qyx3QkFBd0IsRUFDdEIsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFDcEQsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxTQUFTO2dCQUN0RCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxTQUFTO2FBQ3hDLENBQ0YsQ0FBQztJQUNOLENBQUM7O0FBekRILDhDQTBEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxhbWJkYUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF3c0NvbnN0cnVjdEJhc2UsIEF3c0NvbnN0cnVjdFByb3BzIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tIFwiLi9mdW5jdGlvbi1iYXNlXCI7XG5pbXBvcnQgeyBEZXN0aW5hdGlvblR5cGUsIElEZXN0aW5hdGlvbiB9IGZyb20gXCIuL2Z1bmN0aW9uLWRlc3RpbmF0aW9uXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCIuLi8uLlwiO1xuXG4vKipcbiAqIE9wdGlvbnMgdG8gYWRkIGFuIEV2ZW50SW52b2tlQ29uZmlnIHRvIGEgZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRJbnZva2VDb25maWdPcHRpb25zIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIGRlc3RpbmF0aW9uIGZvciBmYWlsZWQgaW52b2NhdGlvbnMuXG4gICAqXG4gICAqIEVuc3VyZSB0aGUgTGFtYmRhIEZ1bmN0aW9uIElBTSBSb2xlIGhhcyBuZWNlc3NhcnkgcGVybWlzc2lvbnMgZm9yIHRoZSBkZXN0aW5hdGlvblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGRlc3RpbmF0aW9uXG4gICAqL1xuICByZWFkb25seSBvbkZhaWx1cmU/OiBJRGVzdGluYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBkZXN0aW5hdGlvbiBmb3Igc3VjY2Vzc2Z1bCBpbnZvY2F0aW9ucy5cbiAgICpcbiAgICogRW5zdXJlIHRoZSBMYW1iZGEgRnVuY3Rpb24gSUFNIFJvbGUgaGFzIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyBmb3IgdGhlIGRlc3RpbmF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVzdGluYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IG9uU3VjY2Vzcz86IElEZXN0aW5hdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gYWdlIG9mIGEgcmVxdWVzdCB0aGF0IExhbWJkYSBzZW5kcyB0byBhIGZ1bmN0aW9uIGZvclxuICAgKiBwcm9jZXNzaW5nLlxuICAgKlxuICAgKiBNaW5pbXVtOiA2MCBzZWNvbmRzXG4gICAqIE1heGltdW06IDYgaG91cnNcbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uaG91cnMoNilcbiAgICovXG4gIHJlYWRvbmx5IG1heEV2ZW50QWdlPzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aW1lcyB0byByZXRyeSB3aGVuIHRoZSBmdW5jdGlvbiByZXR1cm5zIGFuIGVycm9yLlxuICAgKlxuICAgKiBNaW5pbXVtOiAwXG4gICAqIE1heGltdW06IDJcbiAgICpcbiAgICogQGRlZmF1bHQgMlxuICAgKi9cbiAgcmVhZG9ubHkgcmV0cnlBdHRlbXB0cz86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBhbiBFdmVudEludm9rZUNvbmZpZ1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50SW52b2tlQ29uZmlnUHJvcHMgZXh0ZW5kcyBFdmVudEludm9rZUNvbmZpZ09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIExhbWJkYSBmdW5jdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgZnVuY3Rpb246IElGdW5jdGlvbjtcblxuICAvKipcbiAgICogVGhlIHF1YWxpZmllclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGxhdGVzdCB2ZXJzaW9uXG4gICAqL1xuICByZWFkb25seSBxdWFsaWZpZXI/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQ29uZmlndXJlIG9wdGlvbnMgZm9yIGFzeW5jaHJvbm91cyBpbnZvY2F0aW9uIG9uIGEgdmVyc2lvbiBvciBhbiBhbGlhc1xuICpcbiAqIEJ5IGRlZmF1bHQsIExhbWJkYSByZXRyaWVzIGFuIGFzeW5jaHJvbm91cyBpbnZvY2F0aW9uIHR3aWNlIGlmIHRoZSBmdW5jdGlvblxuICogcmV0dXJucyBhbiBlcnJvci4gSXQgcmV0YWlucyBldmVudHMgaW4gYSBxdWV1ZSBmb3IgdXAgdG8gc2l4IGhvdXJzLiBXaGVuIGFuXG4gKiBldmVudCBmYWlscyBhbGwgcHJvY2Vzc2luZyBhdHRlbXB0cyBvciBzdGF5cyBpbiB0aGUgYXN5bmNocm9ub3VzIGludm9jYXRpb25cbiAqIHF1ZXVlIGZvciB0b28gbG9uZywgTGFtYmRhIGRpc2NhcmRzIGl0LlxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRJbnZva2VDb25maWcgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIHtcbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBsYW1iZGFGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnLkxhbWJkYUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWc7XG4gIC8vIFRPRE86IG91dHB1dCB1bmRlZmluZWQgc3VwcG9ydC4uLlxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmVudEludm9rZUNvbmZpZ1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGlmIChcbiAgICAgIHByb3BzLm1heEV2ZW50QWdlICYmXG4gICAgICAocHJvcHMubWF4RXZlbnRBZ2UudG9TZWNvbmRzKCkgPCA2MCB8fFxuICAgICAgICBwcm9wcy5tYXhFdmVudEFnZS50b1NlY29uZHMoKSA+IDIxNjAwKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImBtYXhpbXVtRXZlbnRBZ2VgIG11c3QgcmVwcmVzZW50IGEgYER1cmF0aW9uYCB0aGF0IGlzIGJldHdlZW4gNjAgYW5kIDIxNjAwIHNlY29uZHMuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByb3BzLnJldHJ5QXR0ZW1wdHMgJiZcbiAgICAgIChwcm9wcy5yZXRyeUF0dGVtcHRzIDwgMCB8fCBwcm9wcy5yZXRyeUF0dGVtcHRzID4gMilcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImByZXRyeUF0dGVtcHRzYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMi5cIik7XG4gICAgfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9XG4gICAgICBuZXcgbGFtYmRhRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZy5MYW1iZGFGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnKFxuICAgICAgICB0aGlzLFxuICAgICAgICBcIlJlc291cmNlXCIsXG4gICAgICAgIHtcbiAgICAgICAgICBkZXN0aW5hdGlvbkNvbmZpZzpcbiAgICAgICAgICAgIHByb3BzLm9uRmFpbHVyZSB8fCBwcm9wcy5vblN1Y2Nlc3NcbiAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAuLi4ocHJvcHMub25GYWlsdXJlXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25GYWlsdXJlOiBwcm9wcy5vbkZhaWx1cmUuYmluZCh0aGlzLCBwcm9wcy5mdW5jdGlvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBEZXN0aW5hdGlvblR5cGUuRkFJTFVSRSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICAuLi4ocHJvcHMub25TdWNjZXNzXG4gICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25TdWNjZXNzOiBwcm9wcy5vblN1Y2Nlc3MuYmluZCh0aGlzLCBwcm9wcy5mdW5jdGlvbiwge1xuICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBEZXN0aW5hdGlvblR5cGUuU1VDQ0VTUyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBmdW5jdGlvbk5hbWU6IHByb3BzLmZ1bmN0aW9uLmZ1bmN0aW9uTmFtZSxcbiAgICAgICAgICBtYXhpbXVtRXZlbnRBZ2VJblNlY29uZHM6XG4gICAgICAgICAgICBwcm9wcy5tYXhFdmVudEFnZSAmJiBwcm9wcy5tYXhFdmVudEFnZS50b1NlY29uZHMoKSxcbiAgICAgICAgICBtYXhpbXVtUmV0cnlBdHRlbXB0czogcHJvcHMucmV0cnlBdHRlbXB0cyA/PyB1bmRlZmluZWQsXG4gICAgICAgICAgcXVhbGlmaWVyOiBwcm9wcy5xdWFsaWZpZXIgfHwgXCIkTEFURVNUXCIsXG4gICAgICAgIH0sXG4gICAgICApO1xuICB9XG59XG4iXX0=
62
+ EventInvokeConfig[_a] = { fqn: "terraconstructs.aws.compute.EventInvokeConfig", version: "0.1.0" };
63
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtaW52b2tlLWNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9ldmVudC1pbnZva2UtY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQXNFO0FBRXRFLG9EQUF1RTtBQUV2RSxpRUFBdUU7QUFnRXZFOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLGlCQUFrQixTQUFRLGdDQUFnQjtJQUVyRCxvQ0FBb0M7SUFDcEMsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUNELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBNkI7UUFDckUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUNFLEtBQUssQ0FBQyxXQUFXO1lBQ2pCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsR0FBRyxFQUFFO2dCQUNqQyxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxHQUFHLEtBQUssQ0FBQyxFQUN4QyxDQUFDO1lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FDYixxRkFBcUYsQ0FDdEYsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUNFLEtBQUssQ0FBQyxhQUFhO1lBQ25CLENBQUMsS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksS0FBSyxDQUFDLGFBQWEsR0FBRyxDQUFDLENBQUMsRUFDcEQsQ0FBQztZQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsMENBQTBDLENBQUMsQ0FBQztRQUM5RCxDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVE7WUFDWCxJQUFJLDhDQUErQixDQUFDLCtCQUErQixDQUNqRSxJQUFJLEVBQ0osVUFBVSxFQUNWO2dCQUNFLGlCQUFpQixFQUNmLEtBQUssQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLFNBQVM7b0JBQ2hDLENBQUMsQ0FBQzt3QkFDRSxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVM7NEJBQ2pCLENBQUMsQ0FBQztnQ0FDRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7b0NBQ3BELElBQUksRUFBRSxzQ0FBZSxDQUFDLE9BQU87aUNBQzlCLENBQUM7NkJBQ0g7NEJBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQzt3QkFDUCxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVM7NEJBQ2pCLENBQUMsQ0FBQztnQ0FDRSxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxRQUFRLEVBQUU7b0NBQ3BELElBQUksRUFBRSxzQ0FBZSxDQUFDLE9BQU87aUNBQzlCLENBQUM7NkJBQ0g7NEJBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztxQkFDUjtvQkFDSCxDQUFDLENBQUMsU0FBUztnQkFDZixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO2dCQUN6Qyx3QkFBd0IsRUFDdEIsS0FBSyxDQUFDLFdBQVcsSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRTtnQkFDcEQsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLGFBQWEsSUFBSSxTQUFTO2dCQUN0RCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVMsSUFBSSxTQUFTO2FBQ3hDLENBQ0YsQ0FBQztJQUNOLENBQUM7O0FBekRILDhDQTBEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxhbWJkYUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcgfSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEF3c0NvbnN0cnVjdEJhc2UsIEF3c0NvbnN0cnVjdFByb3BzIH0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IElGdW5jdGlvbiB9IGZyb20gXCIuL2Z1bmN0aW9uLWJhc2VcIjtcbmltcG9ydCB7IERlc3RpbmF0aW9uVHlwZSwgSURlc3RpbmF0aW9uIH0gZnJvbSBcIi4vZnVuY3Rpb24tZGVzdGluYXRpb25cIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL2R1cmF0aW9uXCI7XG5cbi8qKlxuICogT3B0aW9ucyB0byBhZGQgYW4gRXZlbnRJbnZva2VDb25maWcgdG8gYSBmdW5jdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudEludm9rZUNvbmZpZ09wdGlvbnMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZGVzdGluYXRpb24gZm9yIGZhaWxlZCBpbnZvY2F0aW9ucy5cbiAgICpcbiAgICogRW5zdXJlIHRoZSBMYW1iZGEgRnVuY3Rpb24gSUFNIFJvbGUgaGFzIG5lY2Vzc2FyeSBwZXJtaXNzaW9ucyBmb3IgdGhlIGRlc3RpbmF0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVzdGluYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IG9uRmFpbHVyZT86IElEZXN0aW5hdGlvbjtcblxuICAvKipcbiAgICogVGhlIGRlc3RpbmF0aW9uIGZvciBzdWNjZXNzZnVsIGludm9jYXRpb25zLlxuICAgKlxuICAgKiBFbnN1cmUgdGhlIExhbWJkYSBGdW5jdGlvbiBJQU0gUm9sZSBoYXMgbmVjZXNzYXJ5IHBlcm1pc3Npb25zIGZvciB0aGUgZGVzdGluYXRpb25cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkZXN0aW5hdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgb25TdWNjZXNzPzogSURlc3RpbmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhZ2Ugb2YgYSByZXF1ZXN0IHRoYXQgTGFtYmRhIHNlbmRzIHRvIGEgZnVuY3Rpb24gZm9yXG4gICAqIHByb2Nlc3NpbmcuXG4gICAqXG4gICAqIE1pbmltdW06IDYwIHNlY29uZHNcbiAgICogTWF4aW11bTogNiBob3Vyc1xuICAgKlxuICAgKiBAZGVmYXVsdCBEdXJhdGlvbi5ob3Vycyg2KVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4RXZlbnRBZ2U/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gbnVtYmVyIG9mIHRpbWVzIHRvIHJldHJ5IHdoZW4gdGhlIGZ1bmN0aW9uIHJldHVybnMgYW4gZXJyb3IuXG4gICAqXG4gICAqIE1pbmltdW06IDBcbiAgICogTWF4aW11bTogMlxuICAgKlxuICAgKiBAZGVmYXVsdCAyXG4gICAqL1xuICByZWFkb25seSByZXRyeUF0dGVtcHRzPzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGFuIEV2ZW50SW52b2tlQ29uZmlnXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRJbnZva2VDb25maWdQcm9wcyBleHRlbmRzIEV2ZW50SW52b2tlQ29uZmlnT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgTGFtYmRhIGZ1bmN0aW9uXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbjogSUZ1bmN0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgcXVhbGlmaWVyXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbGF0ZXN0IHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHF1YWxpZmllcj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb25maWd1cmUgb3B0aW9ucyBmb3IgYXN5bmNocm9ub3VzIGludm9jYXRpb24gb24gYSB2ZXJzaW9uIG9yIGFuIGFsaWFzXG4gKlxuICogQnkgZGVmYXVsdCwgTGFtYmRhIHJldHJpZXMgYW4gYXN5bmNocm9ub3VzIGludm9jYXRpb24gdHdpY2UgaWYgdGhlIGZ1bmN0aW9uXG4gKiByZXR1cm5zIGFuIGVycm9yLiBJdCByZXRhaW5zIGV2ZW50cyBpbiBhIHF1ZXVlIGZvciB1cCB0byBzaXggaG91cnMuIFdoZW4gYW5cbiAqIGV2ZW50IGZhaWxzIGFsbCBwcm9jZXNzaW5nIGF0dGVtcHRzIG9yIHN0YXlzIGluIHRoZSBhc3luY2hyb25vdXMgaW52b2NhdGlvblxuICogcXVldWUgZm9yIHRvbyBsb25nLCBMYW1iZGEgZGlzY2FyZHMgaXQuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudEludm9rZUNvbmZpZyBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGxhbWJkYUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcuTGFtYmRhRnVuY3Rpb25FdmVudEludm9rZUNvbmZpZztcbiAgLy8gVE9ETzogb3V0cHV0IHVuZGVmaW5lZCBzdXBwb3J0Li4uXG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEV2ZW50SW52b2tlQ29uZmlnUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMubWF4RXZlbnRBZ2UgJiZcbiAgICAgIChwcm9wcy5tYXhFdmVudEFnZS50b1NlY29uZHMoKSA8IDYwIHx8XG4gICAgICAgIHByb3BzLm1heEV2ZW50QWdlLnRvU2Vjb25kcygpID4gMjE2MDApXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiYG1heGltdW1FdmVudEFnZWAgbXVzdCByZXByZXNlbnQgYSBgRHVyYXRpb25gIHRoYXQgaXMgYmV0d2VlbiA2MCBhbmQgMjE2MDAgc2Vjb25kcy5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgcHJvcHMucmV0cnlBdHRlbXB0cyAmJlxuICAgICAgKHByb3BzLnJldHJ5QXR0ZW1wdHMgPCAwIHx8IHByb3BzLnJldHJ5QXR0ZW1wdHMgPiAyKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiYHJldHJ5QXR0ZW1wdHNgIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAyLlwiKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID1cbiAgICAgIG5ldyBsYW1iZGFGdW5jdGlvbkV2ZW50SW52b2tlQ29uZmlnLkxhbWJkYUZ1bmN0aW9uRXZlbnRJbnZva2VDb25maWcoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgICAge1xuICAgICAgICAgIGRlc3RpbmF0aW9uQ29uZmlnOlxuICAgICAgICAgICAgcHJvcHMub25GYWlsdXJlIHx8IHByb3BzLm9uU3VjY2Vzc1xuICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIC4uLihwcm9wcy5vbkZhaWx1cmVcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvbkZhaWx1cmU6IHByb3BzLm9uRmFpbHVyZS5iaW5kKHRoaXMsIHByb3BzLmZ1bmN0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IERlc3RpbmF0aW9uVHlwZS5GQUlMVVJFLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgIC4uLihwcm9wcy5vblN1Y2Nlc3NcbiAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICBvblN1Y2Nlc3M6IHByb3BzLm9uU3VjY2Vzcy5iaW5kKHRoaXMsIHByb3BzLmZ1bmN0aW9uLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IERlc3RpbmF0aW9uVHlwZS5TVUNDRVNTLFxuICAgICAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICAgIGZ1bmN0aW9uTmFtZTogcHJvcHMuZnVuY3Rpb24uZnVuY3Rpb25OYW1lLFxuICAgICAgICAgIG1heGltdW1FdmVudEFnZUluU2Vjb25kczpcbiAgICAgICAgICAgIHByb3BzLm1heEV2ZW50QWdlICYmIHByb3BzLm1heEV2ZW50QWdlLnRvU2Vjb25kcygpLFxuICAgICAgICAgIG1heGltdW1SZXRyeUF0dGVtcHRzOiBwcm9wcy5yZXRyeUF0dGVtcHRzID8/IHVuZGVmaW5lZCxcbiAgICAgICAgICBxdWFsaWZpZXI6IHByb3BzLnF1YWxpZmllciB8fCBcIiRMQVRFU1RcIixcbiAgICAgICAgfSxcbiAgICAgICk7XG4gIH1cbn1cbiJdfQ==
@@ -68,7 +68,7 @@ class FilterRule {
68
68
  }
69
69
  exports.FilterRule = FilterRule;
70
70
  _a = JSII_RTTI_SYMBOL_1;
71
- FilterRule[_a] = { fqn: "terraconstructs.aws.compute.FilterRule", version: "0.0.24" };
71
+ FilterRule[_a] = { fqn: "terraconstructs.aws.compute.FilterRule", version: "0.1.0" };
72
72
  /**
73
73
  * Filter criteria for Lambda event filtering
74
74
  */
@@ -82,5 +82,5 @@ class FilterCriteria {
82
82
  }
83
83
  exports.FilterCriteria = FilterCriteria;
84
84
  _b = JSII_RTTI_SYMBOL_1;
85
- FilterCriteria[_b] = { fqn: "terraconstructs.aws.compute.FilterCriteria", version: "0.0.24" };
85
+ FilterCriteria[_b] = { fqn: "terraconstructs.aws.compute.FilterCriteria", version: "0.1.0" };
86
86
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc291cmNlLWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9ldmVudC1zb3VyY2UtZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsK0dBQStHO0FBQy9HOztHQUVHO0FBQ0gsTUFBYSxVQUFVO0lBQ3JCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLElBQUk7UUFDaEIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxLQUFLO1FBQ2pCLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNkLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBK0I7UUFDbkQsSUFBSSxPQUFPLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3QixPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ3BDLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQWM7UUFDaEMsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsU0FBUyxDQUFDLElBQVk7UUFDbEMsT0FBTyxDQUFDLEVBQUUsY0FBYyxFQUFFLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxPQUFPLENBQ25CLEtBQWEsRUFDYixNQUFjO1FBRWQsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ25ELENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNO1FBQ2xCLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxTQUFTO1FBQ3JCLE9BQU8sQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsSUFBWTtRQUNuQyxPQUFPLENBQUMsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM1QixDQUFDOztBQXBFSCxnQ0FxRUM7OztBQUVEOztHQUVHO0FBQ0gsTUFBYSxjQUFjO0lBQ3pCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUE4QjtRQUNqRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztJQUM3QyxDQUFDOztBQU5ILHdDQU9DIiwic291cmNlc0NvbnRlbnQiOlsiLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNTYuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtbGFtYmRhL2xpYi9ldmVudC1zb3VyY2UtZmlsdGVyLnRzXG4vKipcbiAqIEZpbHRlciBydWxlcyBmb3IgTGFtYmRhIGV2ZW50IGZpbHRlcmluZ1xuICovXG5leHBvcnQgY2xhc3MgRmlsdGVyUnVsZSB7XG4gIC8qKlxuICAgKiBOdWxsIGNvbXBhcmlzb24gb3BlcmF0b3JcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbnVsbCgpOiBhbnkge1xuICAgIHJldHVybiBbbnVsbF07XG4gIH1cblxuICAvKipcbiAgICogRW1wdHkgY29tcGFyaXNvbiBvcGVyYXRvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlbXB0eSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFtcIlwiXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFcXVhbHMgY29tcGFyaXNvbiBvcGVyYXRvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc0VxdWFsKGl0ZW06IHN0cmluZyB8IG51bWJlciB8IGJvb2xlYW4pOiBhbnkge1xuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgcmV0dXJuIFt7IG51bWVyaWM6IFtcIj1cIiwgaXRlbV0gfV07XG4gICAgfVxuICAgIHJldHVybiBbaXRlbV07XG4gIH1cblxuICAvKipcbiAgICogT3IgY29tcGFyaXNvbiBvcGVyYXRvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBvciguLi5lbGVtOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gZWxlbTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3QgZXF1YWxzIGNvbXBhcmlzb24gb3BlcmF0b3JcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgbm90RXF1YWxzKGVsZW06IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nW10gfVtdIHtcbiAgICByZXR1cm4gW3sgXCJhbnl0aGluZy1idXRcIjogW2VsZW1dIH1dO1xuICB9XG5cbiAgLyoqXG4gICAqIE51bWVyaWMgcmFuZ2UgY29tcGFyaXNvbiBvcGVyYXRvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBiZXR3ZWVuKFxuICAgIGZpcnN0OiBudW1iZXIsXG4gICAgc2Vjb25kOiBudW1iZXIsXG4gICk6IHsgW2tleTogc3RyaW5nXTogYW55W10gfVtdIHtcbiAgICByZXR1cm4gW3sgbnVtZXJpYzogW1wiPlwiLCBmaXJzdCwgXCI8PVwiLCBzZWNvbmRdIH1dO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4aXN0cyBjb21wYXJpc29uIG9wZXJhdG9yXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGV4aXN0cygpOiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfVtdIHtcbiAgICByZXR1cm4gW3sgZXhpc3RzOiB0cnVlIH1dO1xuICB9XG5cbiAgLyoqXG4gICAqIE5vdCBleGlzdHMgY29tcGFyaXNvbiBvcGVyYXRvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBub3RFeGlzdHMoKTogeyBba2V5OiBzdHJpbmddOiBib29sZWFuIH1bXSB7XG4gICAgcmV0dXJuIFt7IGV4aXN0czogZmFsc2UgfV07XG4gIH1cblxuICAvKipcbiAgICogQmVnaW5zIHdpdGggY29tcGFyaXNvbiBvcGVyYXRvclxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBiZWdpbnNXaXRoKGVsZW06IHN0cmluZyk6IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH1bXSB7XG4gICAgcmV0dXJuIFt7IHByZWZpeDogZWxlbSB9XTtcbiAgfVxufVxuXG4vKipcbiAqIEZpbHRlciBjcml0ZXJpYSBmb3IgTGFtYmRhIGV2ZW50IGZpbHRlcmluZ1xuICovXG5leHBvcnQgY2xhc3MgRmlsdGVyQ3JpdGVyaWEge1xuICAvKipcbiAgICogRmlsdGVyIGZvciBldmVudCBzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZmlsdGVyKGZpbHRlcjogeyBba2V5OiBzdHJpbmddOiBhbnkgfSk6IHsgW2tleTogc3RyaW5nXTogYW55IH0ge1xuICAgIHJldHVybiB7IHBhdHRlcm46IEpTT04uc3RyaW5naWZ5KGZpbHRlcikgfTtcbiAgfVxufVxuIl19
@@ -1,8 +1,8 @@
1
1
  import { Construct } from "constructs";
2
- import { IAwsConstruct, AwsConstructBase, AwsConstructProps } from "..";
2
+ import { IAwsConstruct, AwsConstructBase, AwsConstructProps } from "../aws-construct";
3
3
  import { IEventSourceDlq } from "./function";
4
4
  import { IFunction } from "./function-base";
5
- import { Duration } from "../..";
5
+ import { Duration } from "../../duration";
6
6
  export interface EventSourceMappingOptions extends AwsConstructProps {
7
7
  /**
8
8
  * The Amazon Resource Name (ARN) of the event source. Any record added to
@@ -5,7 +5,9 @@ exports.StartingPosition = exports.SourceAccessConfigurationType = exports.Event
5
5
  const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
6
6
  const provider_aws_1 = require("@cdktf/provider-aws");
7
7
  const cdktf = require("cdktf");
8
- const __1 = require("..");
8
+ const arn_1 = require("../arn");
9
+ const aws_construct_1 = require("../aws-construct");
10
+ const aws_stack_1 = require("../aws-stack");
9
11
  const token_1 = require("../../token");
10
12
  /**
11
13
  * Defines a Lambda EventSourceMapping resource.
@@ -25,13 +27,13 @@ const token_1 = require("../../token");
25
27
  * The `SqsEventSource` class will automatically create the mapping, and will also
26
28
  * modify the Lambda's execution role so it can consume messages from the queue.
27
29
  */
28
- class EventSourceMapping extends __1.AwsConstructBase {
30
+ class EventSourceMapping extends aws_construct_1.AwsConstructBase {
29
31
  /**
30
32
  * Import an event source into this stack from its event source id.
31
33
  */
32
34
  static fromEventSourceMappingId(scope, id, eventSourceMappingId) {
33
35
  const eventSourceMappingArn = EventSourceMapping.formatArn(scope, eventSourceMappingId);
34
- class Import extends __1.AwsConstructBase {
36
+ class Import extends aws_construct_1.AwsConstructBase {
35
37
  constructor() {
36
38
  super(...arguments);
37
39
  this.eventSourceMappingId = eventSourceMappingId;
@@ -47,11 +49,11 @@ class EventSourceMapping extends __1.AwsConstructBase {
47
49
  return new Import(scope, id);
48
50
  }
49
51
  static formatArn(scope, eventSourceMappingId) {
50
- return __1.AwsStack.ofAwsConstruct(scope).formatArn({
52
+ return aws_stack_1.AwsStack.ofAwsConstruct(scope).formatArn({
51
53
  service: "lambda",
52
54
  resource: "event-source-mapping",
53
55
  resourceName: eventSourceMappingId,
54
- arnFormat: __1.ArnFormat.COLON_RESOURCE_NAME,
56
+ arnFormat: arn_1.ArnFormat.COLON_RESOURCE_NAME,
55
57
  });
56
58
  }
57
59
  get outputs() {
@@ -204,7 +206,7 @@ class EventSourceMapping extends __1.AwsConstructBase {
204
206
  }
205
207
  exports.EventSourceMapping = EventSourceMapping;
206
208
  _a = JSII_RTTI_SYMBOL_1;
207
- EventSourceMapping[_a] = { fqn: "terraconstructs.aws.compute.EventSourceMapping", version: "0.0.24" };
209
+ EventSourceMapping[_a] = { fqn: "terraconstructs.aws.compute.EventSourceMapping", version: "0.1.0" };
208
210
  /**
209
211
  * The type of authentication protocol or the VPC components for your event source's SourceAccessConfiguration
210
212
  * @see https://docs.aws.amazon.com/lambda/latest/dg/API_SourceAccessConfiguration.html#SSS-Type-SourceAccessConfiguration-Type
@@ -264,4 +266,4 @@ var StartingPosition;
264
266
  */
265
267
  StartingPosition["AT_TIMESTAMP"] = "AT_TIMESTAMP";
266
268
  })(StartingPosition || (exports.StartingPosition = StartingPosition = {}));
267
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtc291cmNlLW1hcHBpbmcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvZXZlbnQtc291cmNlLW1hcHBpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxzREFBK0Q7QUFDL0QsK0JBQStCO0FBRS9CLDBCQU1ZO0FBSVosdUNBQTJDO0FBZ1AzQzs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FpQkc7QUFDSCxNQUFhLGtCQUNYLFNBQVEsb0JBQWdCO0lBR3hCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLHdCQUF3QixDQUNwQyxLQUFnQixFQUNoQixFQUFVLEVBQ1Ysb0JBQTRCO1FBRTVCLE1BQU0scUJBQXFCLEdBQUcsa0JBQWtCLENBQUMsU0FBUyxDQUN4RCxLQUFLLEVBQ0wsb0JBQW9CLENBQ3JCLENBQUM7UUFFRixNQUFNLE1BQU8sU0FBUSxvQkFBZ0I7WUFBckM7O2dCQUNrQix5QkFBb0IsR0FBRyxvQkFBb0IsQ0FBQztnQkFDNUMsMEJBQXFCLEdBQUcscUJBQXFCLENBQUM7Z0JBQzlDLDhCQUF5QixHQUFHO29CQUMxQyxJQUFJLEVBQUUsb0JBQW9CO2lCQUMzQixDQUFDO1lBSUosQ0FBQztZQUhDLElBQVcsT0FBTztnQkFDaEIsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUM7WUFDeEMsQ0FBQztTQUNGO1FBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDL0IsQ0FBQztJQUVPLE1BQU0sQ0FBQyxTQUFTLENBQ3RCLEtBQWdCLEVBQ2hCLG9CQUE0QjtRQUU1QixPQUFPLFlBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsU0FBUyxDQUFDO1lBQzlDLE9BQU8sRUFBRSxRQUFRO1lBQ2pCLFFBQVEsRUFBRSxzQkFBc0I7WUFDaEMsWUFBWSxFQUFFLG9CQUFvQjtZQUNsQyxTQUFTLEVBQUUsYUFBUyxDQUFDLG1CQUFtQjtTQUN6QyxDQUFD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LGdDQUFoQixnQkFBZ0IsUUFtQjNCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbGFtYmRhRXZlbnRTb3VyY2VNYXBwaW5nIH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCAqIGFzIGNka3RmIGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7XG4gIEF3c1N0YWNrLFxuICBJQXdzQ29uc3RydWN0LFxuICBBd3NDb25zdHJ1Y3RCYXNlLFxuICBBd3NDb25zdHJ1Y3RQcm9wcyxcbiAgQXJuRm9ybWF0LFxufSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IElFdmVudFNvdXJjZURscSB9IGZyb20gXCIuL2Z1bmN0aW9uXCI7XG5pbXBvcnQgeyBJRnVuY3Rpb24gfSBmcm9tIFwiLi9mdW5jdGlvbi1iYXNlXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCIuLi8uLlwiO1xuaW1wb3J0IHsgd2l0aFJlc29sdmVkIH0gZnJvbSBcIi4uLy4uL3Rva2VuXCI7XG4vLyBUT0RPOiByZS1hZGQgc3VwcG9ydCBmb3IgS01TXG4vLyBpbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uL2lhbVwiOyAvLyByZXF1aXJlZCB0byBncmFudCBLTVMgcGVybWlzc2lvbnNcbi8vIGltcG9ydCB7IElLZXkgfSBmcm9tIFwiLi4vZW5jcnlwdGlvblwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U291cmNlTWFwcGluZ09wdGlvbnMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgQW1hem9uIFJlc291cmNlIE5hbWUgKEFSTikgb2YgdGhlIGV2ZW50IHNvdXJjZS4gQW55IHJlY29yZCBhZGRlZCB0b1xuICAgKiB0aGlzIHN0cmVhbSBjYW4gaW52b2tlIHRoZSBMYW1iZGEgZnVuY3Rpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm90IHNldCBpZiB1c2luZyBhIHNlbGYgbWFuYWdlZCBLYWZrYSBjbHVzdGVyLCB0aHJvd3MgYW4gZXJyb3Igb3RoZXJ3aXNlXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZUFybj86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxhcmdlc3QgbnVtYmVyIG9mIHJlY29yZHMgdGhhdCBBV1MgTGFtYmRhIHdpbGwgcmV0cmlldmUgZnJvbSB5b3VyIGV2ZW50XG4gICAqIHNvdXJjZSBhdCB0aGUgdGltZSBvZiBpbnZva2luZyB5b3VyIGZ1bmN0aW9uLiBZb3VyIGZ1bmN0aW9uIHJlY2VpdmVzIGFuXG4gICAqIGV2ZW50IHdpdGggYWxsIHRoZSByZXRyaWV2ZWQgcmVjb3Jkcy5cbiAgICpcbiAgICogVmFsaWQgUmFuZ2U6IE1pbmltdW0gdmFsdWUgb2YgMS4gTWF4aW11bSB2YWx1ZSBvZiAxMDAwMC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBBbWF6b24gS2luZXNpcywgQW1hem9uIER5bmFtb0RCLCBhbmQgQW1hem9uIE1TSyBpcyAxMDAgcmVjb3Jkcy5cbiAgICogVGhlIGRlZmF1bHQgZm9yIEFtYXpvbiBTUVMgaXMgMTAgbWVzc2FnZXMuIEZvciBzdGFuZGFyZCBTUVMgcXVldWVzLCB0aGUgbWF4aW11bSBpcyAxMCwwMDAuIEZvciBGSUZPIFNRUyBxdWV1ZXMsIHRoZSBtYXhpbXVtIGlzIDEwLlxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hTaXplPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBJZiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvciwgc3BsaXQgdGhlIGJhdGNoIGluIHR3byBhbmQgcmV0cnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBiaXNlY3RCYXRjaE9uRXJyb3I/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBbiBBbWF6b24gU1FTIHF1ZXVlIG9yIEFtYXpvbiBTTlMgdG9waWMgZGVzdGluYXRpb24gZm9yIGRpc2NhcmRlZCByZWNvcmRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBkaXNjYXJkZWQgcmVjb3JkcyBhcmUgaWdub3JlZFxuICAgKi9cbiAgcmVhZG9ubHkgb25GYWlsdXJlPzogSUV2ZW50U291cmNlRGxxO1xuXG4gIC8qKlxuICAgKiBTZXQgdG8gZmFsc2UgdG8gZGlzYWJsZSB0aGUgZXZlbnQgc291cmNlIHVwb24gY3JlYXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgcG9zaXRpb24gaW4gdGhlIER5bmFtb0RCLCBLaW5lc2lzIG9yIE1TSyBzdHJlYW0gd2hlcmUgQVdTIExhbWJkYSBzaG91bGRcbiAgICogc3RhcnQgcmVhZGluZy5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va2luZXNpcy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9HZXRTaGFyZEl0ZXJhdG9yLmh0bWwjS2luZXNpcy1HZXRTaGFyZEl0ZXJhdG9yLXJlcXVlc3QtU2hhcmRJdGVyYXRvclR5cGVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBzdGFydGluZyBwb3NpdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgc3RhcnRpbmdQb3NpdGlvbj86IFN0YXJ0aW5nUG9zaXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSB0aW1lIGZyb20gd2hpY2ggdG8gc3RhcnQgcmVhZGluZywgaW4gVW5peCB0aW1lIHNlY29uZHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdGltZXN0YW1wXG4gICAqL1xuICByZWFkb25seSBzdGFydGluZ1Bvc2l0aW9uVGltZXN0YW1wPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBBbGxvdyBmdW5jdGlvbnMgdG8gcmV0dXJuIHBhcnRpYWxseSBzdWNjZXNzZnVsIHJlc3BvbnNlcyBmb3IgYSBiYXRjaCBvZiByZWNvcmRzLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3dpdGgtZGRiLmh0bWwjc2VydmljZXMtZGRiLWJhdGNoZmFpbHVyZXJlcG9ydGluZ1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXM/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZSB0byBnYXRoZXIgcmVjb3JkcyBiZWZvcmUgaW52b2tpbmcgdGhlIGZ1bmN0aW9uLlxuICAgKiBNYXhpbXVtIG9mIER1cmF0aW9uLm1pbnV0ZXMoNSlcbiAgICpcbiAgICogQGRlZmF1bHQgRHVyYXRpb24uc2Vjb25kcygwKVxuICAgKi9cbiAgcmVhZG9ubHkgbWF4QmF0Y2hpbmdXaW5kb3c/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIG1heGltdW0gY29uY3VycmVuY3kgc2V0dGluZyBsaW1pdHMgdGhlIG51bWJlciBvZiBjb25jdXJyZW50IGluc3RhbmNlcyBvZiB0aGUgZnVuY3Rpb24gdGhhdCBhbiBBbWF6b24gU1FTIGV2ZW50IHNvdXJjZSBjYW4gaW52b2tlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL3dpdGgtc3FzLmh0bWwjZXZlbnRzLXNxcy1tYXgtY29uY3VycmVuY3lcbiAgICpcbiAgICogVmFsaWQgUmFuZ2U6IE1pbmltdW0gdmFsdWUgb2YgMi4gTWF4aW11bSB2YWx1ZSBvZiAxMDAwLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHNwZWNpZmljIGxpbWl0LlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4Q29uY3VycmVuY3k/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBtYXhpbXVtIGFnZSBvZiBhIHJlY29yZCB0aGF0IExhbWJkYSBzZW5kcyB0byBhIGZ1bmN0aW9uIGZvciBwcm9jZXNzaW5nLlxuICAgKiBWYWxpZCBSYW5nZTpcbiAgICogKiBNaW5pbXVtIHZhbHVlIG9mIDYwIHNlY29uZHNcbiAgICogKiBNYXhpbXVtIHZhbHVlIG9mIDcgZGF5c1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIGluZmluaXRlIG9yIHVudGlsIHRoZSByZWNvcmQgZXhwaXJlcy5cbiAgICovXG4gIHJlYWRvbmx5IG1heFJlY29yZEFnZT86IER1cmF0aW9uO1xuXG4gIC8qKlxuICAgKiBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXMgdG8gcmV0cnkgd2hlbiB0aGUgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvci5cbiAgICogU2V0IHRvIGB1bmRlZmluZWRgIGlmIHlvdSB3YW50IGxhbWJkYSB0byBrZWVwIHJldHJ5aW5nIGluZmluaXRlbHkgb3IgdW50aWxcbiAgICogdGhlIHJlY29yZCBleHBpcmVzLlxuICAgKlxuICAgKiBWYWxpZCBSYW5nZTpcbiAgICogKiBNaW5pbXVtIHZhbHVlIG9mIDBcbiAgICogKiBNYXhpbXVtIHZhbHVlIG9mIDEwMDAwXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gaW5maW5pdGUgb3IgdW50aWwgdGhlIHJlY29yZCBleHBpcmVzLlxuICAgKi9cbiAgcmVhZG9ubHkgcmV0cnlBdHRlbXB0cz86IG51bWJlcjtcblxuICAvKipcbiAgICogVGhlIG51bWJlciBvZiBiYXRjaGVzIHRvIHByb2Nlc3MgZnJvbSBlYWNoIHNoYXJkIGNvbmN1cnJlbnRseS5cbiAgICogVmFsaWQgUmFuZ2U6XG4gICAqICogTWluaW11bSB2YWx1ZSBvZiAxXG4gICAqICogTWF4aW11bSB2YWx1ZSBvZiAxMFxuICAgKlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICByZWFkb25seSBwYXJhbGxlbGl6YXRpb25GYWN0b3I/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBLYWZrYSB0b3BpYy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyB0b3BpY1xuICAgKi9cbiAgcmVhZG9ubHkga2Fma2FUb3BpYz86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHNpemUgb2YgdGhlIHR1bWJsaW5nIHdpbmRvd3MgdG8gZ3JvdXAgcmVjb3JkcyBzZW50IHRvIER5bmFtb0RCIG9yIEtpbmVzaXNcbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy93aXRoLWRkYi5odG1sI3NlcnZpY2VzLWRkYi13aW5kb3dzXG4gICAqXG4gICAqIFZhbGlkIFJhbmdlOiAwIC0gMTUgbWludXRlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHR1bWJsaW5nV2luZG93PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBob3N0IGFuZCBwb3J0IHBhaXJzIHRoYXQgYXJlIHRoZSBhZGRyZXNzZXMgb2YgdGhlIEthZmthIGJyb2tlcnMgaW4gYSBzZWxmIG1hbmFnZWQgXCJib290c3RyYXBcIiBLYWZrYSBjbHVzdGVyXG4gICAqIHRoYXQgYSBLYWZrYSBjbGllbnQgY29ubmVjdHMgdG8gaW5pdGlhbGx5IHRvIGJvb3RzdHJhcCBpdHNlbGYuXG4gICAqIFRoZXkgYXJlIGluIHRoZSBmb3JtYXQgYGFiYy5leGFtcGxlLmNvbTo5MDk2YC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBrYWZrYUJvb3RzdHJhcFNlcnZlcnM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBLYWZrYSBjb25zdW1lciBncm91cCB0byBqb2luLiBUaGUgY29uc3VtZXIgZ3JvdXAgSUQgbXVzdCBiZSB1bmlxdWUgYW1vbmcgYWxsIHlvdXIgS2Fma2EgZXZlbnQgc291cmNlcy4gQWZ0ZXIgY3JlYXRpbmcgYSBLYWZrYSBldmVudCBzb3VyY2UgbWFwcGluZyB3aXRoIHRoZSBjb25zdW1lciBncm91cCBJRCBzcGVjaWZpZWQsIHlvdSBjYW5ub3QgdXBkYXRlIHRoaXMgdmFsdWUuIFRoZSB2YWx1ZSBtdXN0IGhhdmUgYSBsZW5naHQgYmV0d2VlbiAxIGFuZCAyMDAgYW5kIGZ1bGwgdGhlIHBhdHRlcm4gJ1thLXpBLVowLTktXFwvKjpfKz0uQC1dKicuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWUgW0N1c3RvbWl6YWJsZSBjb25zdW1lciBncm91cCBJRF0oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvd2l0aC1tc2suaHRtbCNzZXJ2aWNlcy1tc2stY29uc3VtZXItZ3JvdXAtaWQpLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWxhbWJkYS1ldmVudHNvdXJjZW1hcHBpbmctYW1hem9ubWFuYWdlZGthZmthZXZlbnRzb3VyY2Vjb25maWcuaHRtbFxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWxhbWJkYS1ldmVudHNvdXJjZW1hcHBpbmctc2VsZm1hbmFnZWRrYWZrYWV2ZW50c291cmNlY29uZmlnLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBrYWZrYUNvbnN1bWVyR3JvdXBJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWMgc2V0dGluZ3MgbGlrZSB0aGUgYXV0aGVudGljYXRpb24gcHJvdG9jb2wgb3IgdGhlIFZQQyBjb21wb25lbnRzIHRvIHNlY3VyZSBhY2Nlc3MgdG8geW91ciBldmVudCBzb3VyY2UuXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtbGFtYmRhLWV2ZW50c291cmNlbWFwcGluZy1zb3VyY2VhY2Nlc3Njb25maWd1cmF0aW9uLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBzb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9ucz86IFNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb25bXTtcblxuICAvKipcbiAgICogQWRkIGZpbHRlciBjcml0ZXJpYSB0byBFdmVudCBTb3VyY2UuXG4gICAqXG4gICAqIEEgc2V0IG9mIHVwIHRvIDUgZmlsdGVyLiBJZiBhbiBldmVudCBzYXRpc2ZpZXMgYXQgbGVhc3Qgb25lLCBMYW1iZGEgc2VuZHMgdGhlIGV2ZW50IHRvIHRoZSBmdW5jdGlvbiBvciBhZGRzIGl0IHRvIHRoZSBuZXh0IGJhdGNoLlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2ludm9jYXRpb24tZXZlbnRmaWx0ZXJpbmcuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGZpbHRlcnM/OiBBcnJheTx7IFtrZXk6IHN0cmluZ106IGFueSB9PjtcblxuICAvLyBUT0RPOiByZS1hZGQgS01TIHN1cHBvcnRcbiAgLy8gLyoqXG4gIC8vICAqIEFkZCBDdXN0b21lciBtYW5hZ2VkIEtNUyBrZXkgdG8gZW5jcnlwdCBGaWx0ZXIgQ3JpdGVyaWEuXG4gIC8vICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2xhbWJkYS9sYXRlc3QvZGcvaW52b2NhdGlvbi1ldmVudGZpbHRlcmluZy5odG1sXG4gIC8vICAqIEJ5IGRlZmF1bHQsIExhbWJkYSB3aWxsIGVuY3J5cHQgRmlsdGVyIENyaXRlcmlhIHVzaW5nIEFXUyBtYW5hZ2VkIGtleXNcbiAgLy8gICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20va21zL2xhdGVzdC9kZXZlbG9wZXJndWlkZS9jb25jZXB0cy5odG1sI2F3cy1tYW5hZ2VkLWNta1xuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IGZpbHRlckVuY3J5cHRpb24/OiBJS2V5O1xuXG4gIC8qKlxuICAgKiBDaGVjayBpZiBzdXBwb3J0IFMzIG9uZmFpbHVyZSBkZXN0aW5hdGlvbihPREYpLiBDdXJyZW50bHkgb25seSBNU0sgYW5kIHNlbGYgbWFuYWdlZCBrYWZrYSBldmVudCBzdXBwb3J0IFMzIE9ERlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcG9ydFMzT25GYWlsdXJlRGVzdGluYXRpb24/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlY2xhcmluZyBhIG5ldyBldmVudCBzb3VyY2UgbWFwcGluZy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudFNvdXJjZU1hcHBpbmdQcm9wcyBleHRlbmRzIEV2ZW50U291cmNlTWFwcGluZ09wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHRhcmdldCBBV1MgTGFtYmRhIGZ1bmN0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFyZ2V0OiBJRnVuY3Rpb247XG59XG5cbi8qKlxuICogT3V0cHV0cyB0byBleHBvc2UgdmlhIHRoZSBncmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50U291cmNlTWFwcGluZ091dHB1dHMge1xuICAvKipcbiAgICogVGhlIGlkZW50aWZpZXIgZm9yIHRoZSBFdmVudFNvdXJjZU1hcHBpbmcuXG4gICAqL1xuICByZWFkb25seSB1dWlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhbiBldmVudCBzb3VyY2UgbWFwcGluZyBmb3IgYSBsYW1iZGEgZnVuY3Rpb24uXG4gKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9sYW1iZGEvbGF0ZXN0L2RnL2ludm9jYXRpb24tZXZlbnRzb3VyY2VtYXBwaW5nLmh0bWxcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJRXZlbnRTb3VyY2VNYXBwaW5nIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKlxuICAgKiBzdHJvbmdseSB0eXBlZCBvdXRwdXRzXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdPdXRwdXRzOiBFdmVudFNvdXJjZU1hcHBpbmdPdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBUaGUgaWRlbnRpZmllciBmb3IgdGhpcyBFdmVudFNvdXJjZU1hcHBpbmdcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRTb3VyY2VNYXBwaW5nSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZXZlbnQgc291cmNlIG1hcHBpbmcgKGkuZS4gYXJuOmF3czpsYW1iZGE6cmVnaW9uOmFjY291bnQtaWQ6ZXZlbnQtc291cmNlLW1hcHBpbmcvZXZlbnQtc291cmNlLW1hcHBpbmctaWQpXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdBcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBEZWZpbmVzIGEgTGFtYmRhIEV2ZW50U291cmNlTWFwcGluZyByZXNvdXJjZS5cbiAqXG4gKiBVc3VhbGx5LCB5b3Ugd29uJ3QgbmVlZCB0byBkZWZpbmUgdGhlIG1hcHBpbmcgeW91cnNlbGYuIFRoaXMgd2lsbCB1c3VhbGx5IGJlIGRvbmUgYnlcbiAqIGV2ZW50IHNvdXJjZXMuIEZvciBleGFtcGxlLCB0byBhZGQgYW4gU1FTIGV2ZW50IHNvdXJjZSB0byBhIGZ1bmN0aW9uOlxuICpcbiAqIGBgYHRzXG4gKiBpbXBvcnQgeyBub3RpZnksIGNvbXB1dGUgfSBmcm9tICd0ZXJyYWNvbnN0cnVjdHMnO1xuICpcbiAqIGRlY2xhcmUgY29uc3QgaGFuZGxlcjogY29tcHV0ZS5GdW5jdGlvbjtcbiAqIGRlY2xhcmUgY29uc3QgcXVldWU6IG5vdGlmeS5RdWV1ZTtcbiAqXG4gKiBoYW5kbGVyLmFkZEV2ZW50U291cmNlKG5ldyBjb21wdXRlLmV2ZW50c291cmNlcy5TcXNFdmVudFNvdXJjZShxdWV1ZSkpO1xuICogYGBgXG4gKlxuICogVGhlIGBTcXNFdmVudFNvdXJjZWAgY2xhc3Mgd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSB0aGUgbWFwcGluZywgYW5kIHdpbGwgYWxzb1xuICogbW9kaWZ5IHRoZSBMYW1iZGEncyBleGVjdXRpb24gcm9sZSBzbyBpdCBjYW4gY29uc3VtZSBtZXNzYWdlcyBmcm9tIHRoZSBxdWV1ZS5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50U291cmNlTWFwcGluZ1xuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJRXZlbnRTb3VyY2VNYXBwaW5nXG57XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXZlbnQgc291cmNlIGludG8gdGhpcyBzdGFjayBmcm9tIGl0cyBldmVudCBzb3VyY2UgaWQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21FdmVudFNvdXJjZU1hcHBpbmdJZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZXZlbnRTb3VyY2VNYXBwaW5nSWQ6IHN0cmluZyxcbiAgKTogSUV2ZW50U291cmNlTWFwcGluZyB7XG4gICAgY29uc3QgZXZlbnRTb3VyY2VNYXBwaW5nQXJuID0gRXZlbnRTb3VyY2VNYXBwaW5nLmZvcm1hdEFybihcbiAgICAgIHNjb3BlLFxuICAgICAgZXZlbnRTb3VyY2VNYXBwaW5nSWQsXG4gICAgKTtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJRXZlbnRTb3VyY2VNYXBwaW5nIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdJZCA9IGV2ZW50U291cmNlTWFwcGluZ0lkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IGV2ZW50U291cmNlTWFwcGluZ0FybiA9IGV2ZW50U291cmNlTWFwcGluZ0FybjtcbiAgICAgIHB1YmxpYyByZWFkb25seSBldmVudFNvdXJjZU1hcHBpbmdPdXRwdXRzID0ge1xuICAgICAgICB1dWlkOiBldmVudFNvdXJjZU1hcHBpbmdJZCxcbiAgICAgIH07XG4gICAgICBwdWJsaWMgZ2V0IG91dHB1dHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmV2ZW50U291cmNlTWFwcGluZ091dHB1dHM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBmb3JtYXRBcm4oXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBldmVudFNvdXJjZU1hcHBpbmdJZDogc3RyaW5nLFxuICApOiBzdHJpbmcge1xuICAgIHJldHVybiBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgIHNlcnZpY2U6IFwibGFtYmRhXCIsXG4gICAgICByZXNvdXJjZTogXCJldmVudC1zb3VyY2UtbWFwcGluZ1wiLFxuICAgICAgcmVzb3VyY2VOYW1lOiBldmVudFNvdXJjZU1hcHBpbmdJZCxcbiAgICAgIGFybkZvcm1hdDogQXJuRm9ybWF0LkNPTE9OX1JFU09VUkNFX05BTUUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRTb3VyY2VNYXBwaW5nSWQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50U291cmNlTWFwcGluZ0Fybjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRTb3VyY2VNYXBwaW5nT3V0cHV0czogRXZlbnRTb3VyY2VNYXBwaW5nT3V0cHV0cztcbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmV2ZW50U291cmNlTWFwcGluZ091dHB1dHM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRXZlbnRTb3VyY2VNYXBwaW5nUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgaWYgKFxuICAgICAgcHJvcHMuZXZlbnRTb3VyY2VBcm4gPT0gdW5kZWZpbmVkICYmXG4gICAgICBwcm9wcy5rYWZrYUJvb3RzdHJhcFNlcnZlcnMgPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiRWl0aGVyIGV2ZW50U291cmNlQXJuIG9yIGthZmthQm9vdHN0cmFwU2VydmVycyBtdXN0IGJlIHNldFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5ldmVudFNvdXJjZUFybiAhPT0gdW5kZWZpbmVkICYmXG4gICAgICBwcm9wcy5rYWZrYUJvb3RzdHJhcFNlcnZlcnMgIT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcImV2ZW50U291cmNlQXJuIGFuZCBrYWZrYUJvb3RzdHJhcFNlcnZlcnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5rYWZrYUJvb3RzdHJhcFNlcnZlcnMgJiZcbiAgICAgIHByb3BzLmthZmthQm9vdHN0cmFwU2VydmVycz8ubGVuZ3RoIDwgMVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwia2Fma2FCb290U3RyYXBTZXJ2ZXJzIG11c3Qgbm90IGJlIGVtcHR5IGlmIHNldFwiKTtcbiAgICB9XG5cbiAgICBpZiAocHJvcHMubWF4QmF0Y2hpbmdXaW5kb3cgJiYgcHJvcHMubWF4QmF0Y2hpbmdXaW5kb3cudG9TZWNvbmRzKCkgPiAzMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYG1heEJhdGNoaW5nV2luZG93IGNhbm5vdCBiZSBvdmVyIDMwMCBzZWNvbmRzLCBnb3QgJHtwcm9wcy5tYXhCYXRjaGluZ1dpbmRvdy50b1NlY29uZHMoKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5tYXhDb25jdXJyZW5jeSAmJlxuICAgICAgIWNka3RmLlRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5tYXhDb25jdXJyZW5jeSkgJiZcbiAgICAgIChwcm9wcy5tYXhDb25jdXJyZW5jeSA8IDIgfHwgcHJvcHMubWF4Q29uY3VycmVuY3kgPiAxMDAwKVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIm1heENvbmN1cnJlbmN5IG11c3QgYmUgYmV0d2VlbiAyIGFuZCAxMDAwIGNvbmN1cnJlbnQgaW5zdGFuY2VzXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgIHByb3BzLm1heFJlY29yZEFnZSAmJlxuICAgICAgKHByb3BzLm1heFJlY29yZEFnZS50b1NlY29uZHMoKSA8IDYwIHx8XG4gICAgICAgIHByb3BzLm1heFJlY29yZEFnZS50b0RheXMoeyBpbnRlZ3JhbDogZmFsc2UgfSkgPiA3KVxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIm1heFJlY29yZEFnZSBtdXN0IGJlIGJldHdlZW4gNjAgc2Vjb25kcyBhbmQgNyBkYXlzIGluY2x1c2l2ZVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBwcm9wcy5yZXRyeUF0dGVtcHRzICE9PSB1bmRlZmluZWQgJiZcbiAgICAgIHdpdGhSZXNvbHZlZChwcm9wcy5yZXRyeUF0dGVtcHRzLCAoYXR0ZW1wdHMpID0+IHtcbiAgICAgICAgaWYgKGF0dGVtcHRzIDwgMCB8fCBhdHRlbXB0cyA+IDEwMDAwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHJldHJ5QXR0ZW1wdHMgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDEwMDAwIGluY2x1c2l2ZSwgZ290ICR7YXR0ZW1wdHN9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIHByb3BzLnBhcmFsbGVsaXphdGlvbkZhY3RvciAhPT0gdW5kZWZpbmVkICYmXG4gICAgICB3aXRoUmVzb2x2ZWQocHJvcHMucGFyYWxsZWxpemF0aW9uRmFjdG9yLCAoZmFjdG9yKSA9PiB7XG4gICAgICAgIGlmIChmYWN0b3IgPCAxIHx8IGZhY3RvciA+IDEwKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYHBhcmFsbGVsaXphdGlvbkZhY3RvciBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAgaW5jbHVzaXZlLCBnb3QgJHtmYWN0b3J9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgIGlmIChcbiAgICAgIHByb3BzLnR1bWJsaW5nV2luZG93ICYmXG4gICAgICAhY2RrdGYuVG9rZW4uaXNVbnJlc29sdmVkKHByb3BzLnR1bWJsaW5nV2luZG93KSAmJlxuICAgICAgcHJvcHMudHVtYmxpbmdXaW5kb3cudG9TZWNvbmRzKCkgPiA5MDBcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYHR1bWJsaW5nV2luZG93IGNhbm5vdCBiZSBvdmVyIDkwMCBzZWNvbmRzLCBnb3QgJHtwcm9wcy50dW1ibGluZ1dpbmRvdy50b1NlY29uZHMoKX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5zdGFydGluZ1Bvc2l0aW9uID09PSBTdGFydGluZ1Bvc2l0aW9uLkFUX1RJTUVTVEFNUCAmJlxuICAgICAgIXByb3BzLnN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXBcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJzdGFydGluZ1Bvc2l0aW9uVGltZXN0YW1wIG11c3QgYmUgcHJvdmlkZWQgd2hlbiBzdGFydGluZ1Bvc2l0aW9uIGlzIEFUX1RJTUVTVEFNUFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICBwcm9wcy5zdGFydGluZ1Bvc2l0aW9uICE9PSBTdGFydGluZ1Bvc2l0aW9uLkFUX1RJTUVTVEFNUCAmJlxuICAgICAgcHJvcHMuc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcInN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXAgY2FuIG9ubHkgYmUgdXNlZCB3aGVuIHN0YXJ0aW5nUG9zaXRpb24gaXMgQVRfVElNRVNUQU1QXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChwcm9wcy5rYWZrYUNvbnN1bWVyR3JvdXBJZCkge1xuICAgICAgdGhpcy52YWxpZGF0ZUthZmthQ29uc3VtZXJHcm91cElkT3JUaHJvdyhwcm9wcy5rYWZrYUNvbnN1bWVyR3JvdXBJZCk7XG4gICAgfVxuXG4gICAgLy8gVE9ETzogcmUtYWRkIEtNUyBzdXBwb3J0XG4gICAgLy8gaWYgKHByb3BzLmZpbHRlckVuY3J5cHRpb24gIT09IHVuZGVmaW5lZCAmJiBwcm9wcy5maWx0ZXJzID09IHVuZGVmaW5lZCkge1xuICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKFxuICAgIC8vICAgICBcImZpbHRlciBjcml0ZXJpYSBtdXN0IGJlIHByb3ZpZGVkIHRvIGVuYWJsZSBzZXR0aW5nIGZpbHRlciBjcml0ZXJpYSBlbmNyeXB0aW9uXCIsXG4gICAgLy8gICApO1xuICAgIC8vIH1cbiAgICAvL1xuICAgIC8vIC8qKlxuICAgIC8vICAqIEdyYW50cyB0aGUgTGFtYmRhIGZ1bmN0aW9uIHBlcm1pc3Npb24gdG8gZGVjcnlwdCBkYXRhIHVzaW5nIHRoZSBzcGVjaWZpZWQgS01TIGtleS5cbiAgICAvLyAgKiBUaGlzIHN0ZXAgaXMgbmVjZXNzYXJ5IGZvciBzZXR0aW5nIHVwIGVuY3J5cHRlZCBmaWx0ZXIgY3JpdGVyaWEuXG4gICAgLy8gICpcbiAgICAvLyAgKiBJZiB0aGUgS01TIGtleSB3YXMgY3JlYXRlZCB3aXRoaW4gdGhpcyBDbG91ZEZvcm1hdGlvbiBzdGFjayAodmlhIGBuZXcgS2V5YCksIGEgS2V5IHBvbGljeVxuICAgIC8vICAqIHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIGtleSB0byBhbGxvdyB0aGUgTGFtYmRhIGZ1bmN0aW9uIHRvIGFjY2VzcyBpdC4gSG93ZXZlciwgaWYgdGhlXG4gICAgLy8gICogS2V5IGlzIGltcG9ydGVkIGZyb20gYW4gZXhpc3RpbmcgQVJOIChgS2V5LmZyb21LZXlBcm5gKSwgbm8gYWN0aW9uIHdpbGwgYmUgdGFrZW4uXG4gICAgLy8gICovXG4gICAgLy8gaWYgKHByb3BzLmZpbHRlckVuY3J5cHRpb24gIT09IHVuZGVmaW5lZCkge1xuICAgIC8vICAgY29uc3QgbGFtYmRhUHJpbmNpcGFsID0gbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKFwibGFtYmRhLmFtYXpvbmF3cy5jb21cIik7XG4gICAgLy8gICBwcm9wcy5maWx0ZXJFbmNyeXB0aW9uLmdyYW50RGVjcnlwdChsYW1iZGFQcmluY2lwYWwpO1xuICAgIC8vIH1cblxuICAgIGxldCBkZXN0aW5hdGlvbkNvbmZpZzogYW55O1xuXG4gICAgaWYgKHByb3BzLm9uRmFpbHVyZSkge1xuICAgICAgZGVzdGluYXRpb25Db25maWcgPSB7XG4gICAgICAgIG9uRmFpbHVyZTogcHJvcHMub25GYWlsdXJlLmJpbmQodGhpcywgcHJvcHMudGFyZ2V0KSxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgbGV0IHNlbGZNYW5hZ2VkRXZlbnRTb3VyY2U6XG4gICAgICB8IGxhbWJkYUV2ZW50U291cmNlTWFwcGluZy5MYW1iZGFFdmVudFNvdXJjZU1hcHBpbmdTZWxmTWFuYWdlZEV2ZW50U291cmNlXG4gICAgICB8IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHMua2Fma2FCb290c3RyYXBTZXJ2ZXJzKSB7XG4gICAgICBzZWxmTWFuYWdlZEV2ZW50U291cmNlID0ge1xuICAgICAgICBlbmRwb2ludHM6IHtcbiAgICAgICAgICBLQUZLQV9CT09UU1RSQVBfU0VSVkVSUzogcHJvcHMua2Fma2FCb290c3RyYXBTZXJ2ZXJzLmpvaW4oXCIsXCIpLFxuICAgICAgICB9LFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBjb25zdW1lckdyb3VwQ29uZmlnID0gcHJvcHMua2Fma2FDb25zdW1lckdyb3VwSWRcbiAgICAgID8geyBjb25zdW1lckdyb3VwSWQ6IHByb3BzLmthZmthQ29uc3VtZXJHcm91cElkIH1cbiAgICAgIDogdW5kZWZpbmVkO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgbGFtYmRhRXZlbnRTb3VyY2VNYXBwaW5nLkxhbWJkYUV2ZW50U291cmNlTWFwcGluZyhcbiAgICAgIHRoaXMsXG4gICAgICBcIlJlc291cmNlXCIsXG4gICAgICB7XG4gICAgICAgIGJhdGNoU2l6ZTogcHJvcHMuYmF0Y2hTaXplLFxuICAgICAgICBiaXNlY3RCYXRjaE9uRnVuY3Rpb25FcnJvcjogcHJvcHMuYmlzZWN0QmF0Y2hPbkVycm9yLFxuICAgICAgICBkZXN0aW5hdGlvbkNvbmZpZyxcbiAgICAgICAgZW5hYmxlZDogcHJvcHMuZW5hYmxlZCxcbiAgICAgICAgZXZlbnRTb3VyY2VBcm46IHByb3BzLmV2ZW50U291cmNlQXJuLFxuICAgICAgICBmdW5jdGlvbk5hbWU6IHByb3BzLnRhcmdldC5mdW5jdGlvbk5hbWUsXG4gICAgICAgIHN0YXJ0aW5nUG9zaXRpb246IHByb3BzLnN0YXJ0aW5nUG9zaXRpb24sXG4gICAgICAgIHN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXA6IHByb3BzLnN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXBcbiAgICAgICAgICA/IG5ldyBEYXRlKHByb3BzLnN0YXJ0aW5nUG9zaXRpb25UaW1lc3RhbXAgKiAxMDAwKS50b0lTT1N0cmluZygpXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIGZ1bmN0aW9uUmVzcG9uc2VUeXBlczogcHJvcHMucmVwb3J0QmF0Y2hJdGVtRmFpbHVyZXNcbiAgICAgICAgICA/IFtcIlJlcG9ydEJhdGNoSXRlbUZhaWx1cmVzXCJdXG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgIG1heGltdW1CYXRjaGluZ1dpbmRvd0luU2Vjb25kczogcHJvcHMubWF4QmF0Y2hpbmdXaW5kb3c/LnRvU2Vjb25kcygpLFxuICAgICAgICBtYXhpbXVtUmVjb3JkQWdlSW5TZWNvbmRzOiBwcm9wcy5tYXhSZWNvcmRBZ2U/LnRvU2Vjb25kcygpLFxuICAgICAgICBtYXhpbXVtUmV0cnlBdHRlbXB0czogcHJvcHMucmV0cnlBdHRlbXB0cyxcbiAgICAgICAgcGFyYWxsZWxpemF0aW9uRmFjdG9yOiBwcm9wcy5wYXJhbGxlbGl6YXRpb25GYWN0b3IsXG4gICAgICAgIHRvcGljczogcHJvcHMua2Fma2FUb3BpYyAhPT0gdW5kZWZpbmVkID8gW3Byb3BzLmthZmthVG9waWNdIDogdW5kZWZpbmVkLFxuICAgICAgICB0dW1ibGluZ1dpbmRvd0luU2Vjb25kczogcHJvcHMudHVtYmxpbmdXaW5kb3c/LnRvU2Vjb25kcygpLFxuICAgICAgICBzY2FsaW5nQ29uZmlnOiBwcm9wcy5tYXhDb25jdXJyZW5jeVxuICAgICAgICAgID8geyBtYXhpbXVtQ29uY3VycmVuY3k6IHByb3BzLm1heENvbmN1cnJlbmN5IH1cbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgc291cmNlQWNjZXNzQ29uZmlndXJhdGlvbjogcHJvcHMuc291cmNlQWNjZXNzQ29uZmlndXJhdGlvbnMsXG4gICAgICAgIHNlbGZNYW5hZ2VkRXZlbnRTb3VyY2UsXG4gICAgICAgIGZpbHRlckNyaXRlcmlhOiBwcm9wcy5maWx0ZXJzID8geyBmaWx0ZXI6IHByb3BzLmZpbHRlcnMgfSA6IHVuZGVmaW5lZCxcbiAgICAgICAgLy8ga21zS2V5QXJuOiBwcm9wcy5maWx0ZXJFbmNyeXB0aW9uPy5rZXlBcm4sIC8vIFRPRE86IHJlLWFkZCBLTVMgc3VwcG9ydFxuICAgICAgICBzZWxmTWFuYWdlZEthZmthRXZlbnRTb3VyY2VDb25maWc6IHByb3BzLmthZmthQm9vdHN0cmFwU2VydmVyc1xuICAgICAgICAgID8gY29uc3VtZXJHcm91cENvbmZpZ1xuICAgICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgICBhbWF6b25NYW5hZ2VkS2Fma2FFdmVudFNvdXJjZUNvbmZpZzogcHJvcHMuZXZlbnRTb3VyY2VBcm5cbiAgICAgICAgICA/IGNvbnN1bWVyR3JvdXBDb25maWdcbiAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIH0sXG4gICAgKTtcbiAgICB0aGlzLmV2ZW50U291cmNlTWFwcGluZ0lkID0gcmVzb3VyY2UudXVpZDtcbiAgICB0aGlzLmV2ZW50U291cmNlTWFwcGluZ0FybiA9IEV2ZW50U291cmNlTWFwcGluZy5mb3JtYXRBcm4oXG4gICAgICB0aGlzLFxuICAgICAgdGhpcy5ldmVudFNvdXJjZU1hcHBpbmdJZCxcbiAgICApO1xuXG4gICAgdGhpcy5ldmVudFNvdXJjZU1hcHBpbmdPdXRwdXRzID0ge1xuICAgICAgdXVpZDogdGhpcy5ldmVudFNvdXJjZU1hcHBpbmdJZCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUthZmthQ29uc3VtZXJHcm91cElkT3JUaHJvdyhrYWZrYUNvbnN1bWVyR3JvdXBJZDogc3RyaW5nKSB7XG4gICAgaWYgKGNka3RmLlRva2VuLmlzVW5yZXNvbHZlZChrYWZrYUNvbnN1bWVyR3JvdXBJZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoa2Fma2FDb25zdW1lckdyb3VwSWQubGVuZ3RoID4gMjAwIHx8IGthZmthQ29uc3VtZXJHcm91cElkLmxlbmd0aCA8IDEpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJrYWZrYUNvbnN1bWVyR3JvdXBJZCBtdXN0IGJlIGEgdmFsaWQgc3RyaW5nIGJldHdlZW4gMSBhbmQgMjAwIGNoYXJhY3RlcnNcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVnZXggPSBuZXcgUmVnRXhwKC9bYS16QS1aMC05LVxcLyo6Xys9LkAtXSovKTtcbiAgICBjb25zdCBwYXR0ZXJuTWF0Y2ggPSByZWdleC5leGVjKGthZmthQ29uc3VtZXJHcm91cElkKTtcbiAgICBpZiAocGF0dGVybk1hdGNoID09PSBudWxsIHx8IHBhdHRlcm5NYXRjaFswXSAhPT0ga2Fma2FDb25zdW1lckdyb3VwSWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ2thZmthQ29uc3VtZXJHcm91cElkIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycy4gQWxsb3dlZCB2YWx1ZXMgYXJlIFwiW2EtekEtWjAtOS0vKjpfKz0uQC1dXCInLFxuICAgICAgKTtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgdHlwZSBvZiBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCBvciB0aGUgVlBDIGNvbXBvbmVudHMgZm9yIHlvdXIgZXZlbnQgc291cmNlJ3MgU291cmNlQWNjZXNzQ29uZmlndXJhdGlvblxuICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vbGFtYmRhL2xhdGVzdC9kZy9BUElfU291cmNlQWNjZXNzQ29uZmlndXJhdGlvbi5odG1sI1NTUy1UeXBlLVNvdXJjZUFjY2Vzc0NvbmZpZ3VyYXRpb24tVHlwZVxuICovXG5leHBvcnQgZW51bSBTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uVHlwZSB7XG4gIC8qKlxuICAgKiAoTVEpIFRoZSBTZWNyZXRzIE1hbmFnZXIgc2VjcmV0IHRoYXQgc3RvcmVzIHlvdXIgYnJva2VyIGNyZWRlbnRpYWxzLlxuICAgKi9cbiAgQkFTSUNfQVVUSCA9IFwiQkFTSUNfQVVUSFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgc3VibmV0cyBhc3NvY2lhdGVkIHdpdGggeW91ciBWUEMuIExhbWJkYSBjb25uZWN0cyB0byB0aGVzZSBzdWJuZXRzIHRvIGZldGNoIGRhdGEgZnJvbSB5b3VyIFNlbGYtTWFuYWdlZCBBcGFjaGUgS2Fma2EgY2x1c3Rlci5cbiAgICovXG4gIFZQQ19TVUJORVQgPSBcIlZQQ19TVUJORVRcIixcblxuICAvKipcbiAgICogVGhlIFZQQyBzZWN1cml0eSBncm91cCB1c2VkIHRvIG1hbmFnZSBhY2Nlc3MgdG8geW91ciBTZWxmLU1hbmFnZWQgQXBhY2hlIEthZmthIGJyb2tlcnMuXG4gICAqL1xuICBWUENfU0VDVVJJVFlfR1JPVVAgPSBcIlZQQ19TRUNVUklUWV9HUk9VUFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0cyBNYW5hZ2VyIEFSTiBvZiB5b3VyIHNlY3JldCBrZXkgdXNlZCBmb3IgU0FTTCBTQ1JBTS0yNTYgYXV0aGVudGljYXRpb24gb2YgeW91ciBTZWxmLU1hbmFnZWQgQXBhY2hlIEthZmthIGJyb2tlcnMuXG4gICAqL1xuICBTQVNMX1NDUkFNXzI1Nl9BVVRIID0gXCJTQVNMX1NDUkFNXzI1Nl9BVVRIXCIsXG5cbiAgLyoqXG4gICAqIFRoZSBTZWNyZXRzIE1hbmFnZXIgQVJOIG9mIHlvdXIgc2VjcmV0IGtleSB1c2VkIGZvciBTQVNMIFNDUkFNLTUxMiBhdXRoZW50aWNhdGlvbiBvZiB5b3VyIFNlbGYtTWFuYWdlZCBBcGFjaGUgS2Fma2EgYnJva2Vycy5cbiAgICovXG4gIFNBU0xfU0NSQU1fNTEyX0FVVEggPSBcIlNBU0xfU0NSQU1fNTEyX0FVVEhcIixcblxuICAvKipcbiAgICogVGhlIFNlY3JldHMgTWFuYWdlciBBUk4gb2YgeW91ciBzZWNyZXQga2V5IGNvbnRhaW5pbmcgdGhlIGNlcnRpZmljYXRlIGNoYWluIChYLjUwOSBQRU0pLCBwcml2YXRlIGtleSAoUEtDUyM4IFBFTSksXG4gICAqIGFuZCBwcml2YXRlIGtleSBwYXNzd29yZCAob3B0aW9uYWwpIHVzZWQgZm9yIG11dHVhbCBUTFMgYXV0aGVudGljYXRpb24gb2YgeW91ciBNU0svQXBhY2hlIEthZmthIGJyb2tlcnMuXG4gICAqL1xuICBDTElFTlRfQ0VSVElGSUNBVEVfVExTX0FVVEggPSBcIkNMSUVOVF9DRVJUSUZJQ0FURV9UTFNfQVVUSFwiLFxuXG4gIC8qKlxuICAgKiBUaGUgU2VjcmV0cyBNYW5hZ2VyIEFSTiBvZiB5b3VyIHNlY3JldCBrZXkgY29udGFpbmluZyB0aGUgcm9vdCBDQSBjZXJ0aWZpY2F0ZSAoWC41MDkgUEVNKSB1c2VkIGZvciBUTFMgZW5jcnlwdGlvbiBvZiB5b3VyIEFwYWNoZSBLYWZrYSBicm9rZXJzLlxuICAgKi9cbiAgU0VSVkVSX1JPT1RfQ0FfQ0VSVElGSUNBVEUgPSBcIlNFUlZFUl9ST09UX0NBX0NFUlRJRklDQVRFXCIsXG59XG5cbi8qKlxuICogU3BlY2lmaWMgc2V0dGluZ3MgbGlrZSB0aGUgYXV0aGVudGljYXRpb24gcHJvdG9jb2wgb3IgdGhlIFZQQyBjb21wb25lbnRzIHRvIHNlY3VyZSBhY2Nlc3MgdG8geW91ciBldmVudCBzb3VyY2UuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU291cmNlQWNjZXNzQ29uZmlndXJhdGlvbiB7XG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBhdXRoZW50aWNhdGlvbiBwcm90b2NvbCBvciB0aGUgVlBDIGNvbXBvbmVudHMgZm9yIHlvdXIgZXZlbnQgc291cmNlLiBGb3IgZXhhbXBsZTogXCJTQVNMX1NDUkFNXzUxMl9BVVRIXCIuXG4gICAqL1xuICByZWFkb25seSB0eXBlOiBTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uVHlwZTtcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBmb3IgeW91ciBjaG9zZW4gY29uZmlndXJhdGlvbiBpbiB0eXBlLlxuICAgKiBGb3IgZXhhbXBsZTogXCJVUklcIjogXCJhcm46YXdzOnNlY3JldHNtYW5hZ2VyOnVzLWVhc3QtMTowMTIzNDU2Nzg5MDpzZWNyZXQ6TXlCcm9rZXJTZWNyZXROYW1lXCIuXG4gICAqIFRoZSBleGFjdCBzdHJpbmcgZGVwZW5kcyBvbiB0aGUgdHlwZS5cbiAgICogQHNlZSBTb3VyY2VBY2Nlc3NDb25maWd1cmF0aW9uVHlwZVxuICAgKi9cbiAgcmVhZG9ubHkgdXJpOiBzdHJpbmc7XG59XG4vKipcbiAqIFRoZSBwb3NpdGlvbiBpbiB0aGUgRHluYW1vREIsIEtpbmVzaXMgb3IgTVNLIHN0cmVhbSB3aGVyZSBBV1MgTGFtYmRhIHNob3VsZCBzdGFydFxuICogcmVhZGluZy5cbiAqL1xuZXhwb3J0IGVudW0gU3RhcnRpbmdQb3NpdGlvbiB7XG4gIC8qKlxuICAgKiBTdGFydCByZWFkaW5nIGF0IHRoZSBsYXN0IHVudHJpbW1lZCByZWNvcmQgaW4gdGhlIHNoYXJkIGluIHRoZSBzeXN0ZW0sXG4gICAqIHdoaWNoIGlzIHRoZSBvbGRlc3QgZGF0YSByZWNvcmQgaW4gdGhlIHNoYXJkLlxuICAgKi9cbiAgVFJJTV9IT1JJWk9OID0gXCJUUklNX0hPUklaT05cIixcblxuICAvKipcbiAgICogU3RhcnQgcmVhZGluZyBqdXN0IGFmdGVyIHRoZSBtb3N0IHJlY2VudCByZWNvcmQgaW4gdGhlIHNoYXJkLCBzbyB0aGF0IHlvdVxuICAgKiBhbHdheXMgcmVhZCB0aGUgbW9zdCByZWNlbnQgZGF0YSBpbiB0aGUgc2hhcmRcbiAgICovXG4gIExBVEVTVCA9IFwiTEFURVNUXCIsXG5cbiAgLyoqXG4gICAqIFN0YXJ0IHJlYWRpbmcgZnJvbSBhIHBvc2l0aW9uIGRlZmluZWQgYnkgYSB0aW1lIHN0YW1wLlxuICAgKiBPbmx5IHN1cHBvcnRlZCBmb3IgQW1hem9uIEtpbmVzaXMgc3RyZWFtcywgb3RoZXJ3aXNlIGFuIGVycm9yIHdpbGwgb2NjdXIuXG4gICAqIElmIHN1cHBsaWVkLCBgc3RhcnRpbmdQb3NpdGlvblRpbWVzdGFtcGAgbXVzdCBhbHNvIGJlIHNldC5cbiAgICovXG4gIEFUX1RJTUVTVEFNUCA9IFwiQVRfVElNRVNUQU1QXCIsXG59XG4iXX0=
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=
@@ -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.0.24" };
25
+ S3OnFailureDestination[_a] = { fqn: "terraconstructs.aws.compute.sources.S3OnFailureDestination", version: "0.1.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.0.24" };
24
+ S3EventSource[_a] = { fqn: "terraconstructs.aws.compute.sources.S3EventSource", version: "0.1.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.0.24" };
25
+ SqsDlq[_a] = { fqn: "terraconstructs.aws.compute.sources.SqsDlq", version: "0.1.0" };
26
26
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLWRscS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9ldmVudC1zb3VyY2VzL3Nxcy1kbHEudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFRQTs7R0FFRztBQUNILE1BQWEsTUFBTTtJQUNqQixZQUE2QixLQUFvQjtRQUFwQixVQUFLLEdBQUwsS0FBSyxDQUFlO0lBQUcsQ0FBQztJQUVyRDs7T0FFRztJQUNJLElBQUksQ0FDVCxPQUE0QixFQUM1QixhQUF3QjtRQUV4QixJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRTVDLE9BQU87WUFDTCxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRO1NBQ2pDLENBQUM7SUFDSixDQUFDOztBQWZILHdCQWdCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERscURlc3RpbmF0aW9uQ29uZmlnLFxuICBJRXZlbnRTb3VyY2VEbHEsXG4gIElFdmVudFNvdXJjZU1hcHBpbmcsXG4gIElGdW5jdGlvbixcbn0gZnJvbSBcIi4uL1wiO1xuaW1wb3J0ICogYXMgbm90aWZ5IGZyb20gXCIuLi8uLi9ub3RpZnlcIjtcblxuLyoqXG4gKiBBbiBTUVMgZGVhZCBsZXR0ZXIgcXVldWUgZGVzdGluYXRpb24gY29uZmlndXJhdGlvbiBmb3IgYSBMYW1iZGEgZXZlbnQgc291cmNlXG4gKi9cbmV4cG9ydCBjbGFzcyBTcXNEbHEgaW1wbGVtZW50cyBJRXZlbnRTb3VyY2VEbHEge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IHF1ZXVlOiBub3RpZnkuSVF1ZXVlKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIGEgZGVzdGluYXRpb24gY29uZmlndXJhdGlvbiBmb3IgdGhlIERMUVxuICAgKi9cbiAgcHVibGljIGJpbmQoXG4gICAgX3RhcmdldDogSUV2ZW50U291cmNlTWFwcGluZyxcbiAgICB0YXJnZXRIYW5kbGVyOiBJRnVuY3Rpb24sXG4gICk6IERscURlc3RpbmF0aW9uQ29uZmlnIHtcbiAgICB0aGlzLnF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKHRhcmdldEhhbmRsZXIpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRlc3RpbmF0aW9uOiB0aGlzLnF1ZXVlLnF1ZXVlQXJuLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==