terraconstructs 0.0.13 → 0.0.15

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 (205) hide show
  1. package/.jsii +6338 -4793
  2. package/lib/aws/arn.js +1 -1
  3. package/lib/aws/aws-construct.js +1 -1
  4. package/lib/aws/aws-stack.js +1 -1
  5. package/lib/aws/aws-tags.js +2 -2
  6. package/lib/aws/cloudwatch/actions/ec2.js +1 -1
  7. package/lib/aws/cloudwatch/actions/lambda.js +1 -1
  8. package/lib/aws/cloudwatch/alarm-base.js +1 -1
  9. package/lib/aws/cloudwatch/alarm-rule.js +1 -1
  10. package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
  11. package/lib/aws/cloudwatch/alarm.js +1 -1
  12. package/lib/aws/cloudwatch/composite-alarm.js +1 -1
  13. package/lib/aws/cloudwatch/dashboard.js +1 -1
  14. package/lib/aws/cloudwatch/data-protection-policy.js +3 -3
  15. package/lib/aws/cloudwatch/graph.js +8 -8
  16. package/lib/aws/cloudwatch/layout.js +3 -3
  17. package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
  18. package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
  19. package/lib/aws/cloudwatch/log-group.js +1 -1
  20. package/lib/aws/cloudwatch/log-query.js +1 -1
  21. package/lib/aws/cloudwatch/log-stream.js +1 -1
  22. package/lib/aws/cloudwatch/metric-filter.js +1 -1
  23. package/lib/aws/cloudwatch/metric.js +2 -2
  24. package/lib/aws/cloudwatch/pattern.js +3 -3
  25. package/lib/aws/cloudwatch/policy.js +1 -1
  26. package/lib/aws/cloudwatch/query-definition.js +2 -2
  27. package/lib/aws/cloudwatch/stats.js +1 -1
  28. package/lib/aws/cloudwatch/subscription-filter.js +1 -1
  29. package/lib/aws/cloudwatch/text.js +1 -1
  30. package/lib/aws/cloudwatch/variable.js +3 -3
  31. package/lib/aws/cloudwatch/widget.js +1 -1
  32. package/lib/aws/compute/activity.js +1 -1
  33. package/lib/aws/compute/alb/application-listener-action.js +1 -1
  34. package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
  35. package/lib/aws/compute/alb/application-listener-rule.js +1 -1
  36. package/lib/aws/compute/alb/application-listener.js +1 -1
  37. package/lib/aws/compute/alb/application-load-balancer.js +1 -1
  38. package/lib/aws/compute/alb/application-target-group.js +1 -1
  39. package/lib/aws/compute/alb/conditions.js +1 -1
  40. package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
  41. package/lib/aws/compute/alb/trust-store.js +1 -1
  42. package/lib/aws/compute/architecture.js +1 -1
  43. package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
  44. package/lib/aws/compute/bastion-host.js +1 -1
  45. package/lib/aws/compute/chain.js +1 -1
  46. package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
  47. package/lib/aws/compute/client-vpn-endpoint.js +2 -2
  48. package/lib/aws/compute/client-vpn-route.js +2 -2
  49. package/lib/aws/compute/condition.js +1 -1
  50. package/lib/aws/compute/connections.js +1 -1
  51. package/lib/aws/compute/event-invoke-config.js +1 -1
  52. package/lib/aws/compute/event-source-filter.js +2 -2
  53. package/lib/aws/compute/event-source-mapping.js +1 -1
  54. package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
  55. package/lib/aws/compute/event-sources/s3.js +1 -1
  56. package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
  57. package/lib/aws/compute/event-sources/sqs.js +1 -1
  58. package/lib/aws/compute/fields.js +4 -4
  59. package/lib/aws/compute/function-alias.js +1 -1
  60. package/lib/aws/compute/function-base.js +2 -2
  61. package/lib/aws/compute/function-destinations/event-bridge.js +1 -1
  62. package/lib/aws/compute/function-destinations/function.js +1 -1
  63. package/lib/aws/compute/function-destinations/sqs.js +1 -1
  64. package/lib/aws/compute/function-nodejs.js +1 -1
  65. package/lib/aws/compute/function-url.js +1 -1
  66. package/lib/aws/compute/function.js +1 -1
  67. package/lib/aws/compute/instance-types.js +1 -1
  68. package/lib/aws/compute/instance.js +1 -1
  69. package/lib/aws/compute/ip-addresses.js +2 -2
  70. package/lib/aws/compute/ipam.js +1 -1
  71. package/lib/aws/compute/key-pair.js +1 -1
  72. package/lib/aws/compute/launch-template.js +2 -2
  73. package/lib/aws/compute/lb-shared/base-listener.js +1 -1
  74. package/lib/aws/compute/lb-shared/base-load-balancer.js +1 -1
  75. package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
  76. package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
  77. package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
  78. package/lib/aws/compute/lb-targets/alb-target.js +3 -3
  79. package/lib/aws/compute/lb-targets/instance-target.js +2 -2
  80. package/lib/aws/compute/lb-targets/ip-target.js +1 -1
  81. package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
  82. package/lib/aws/compute/load-balancer.js +3 -3
  83. package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
  84. package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
  85. package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
  86. package/lib/aws/compute/machine-image/common.js +1 -1
  87. package/lib/aws/compute/machine-image/machine-image.js +8 -8
  88. package/lib/aws/compute/nat.js +5 -5
  89. package/lib/aws/compute/network-acl-types.js +2 -2
  90. package/lib/aws/compute/network-acl.js +3 -3
  91. package/lib/aws/compute/nlb/network-listener-action.js +1 -1
  92. package/lib/aws/compute/nlb/network-listener.js +1 -1
  93. package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
  94. package/lib/aws/compute/nlb/network-target-group.js +1 -1
  95. package/lib/aws/compute/peer.js +1 -1
  96. package/lib/aws/compute/placement-group.js +1 -1
  97. package/lib/aws/compute/port.js +1 -1
  98. package/lib/aws/compute/prefix-list.js +1 -1
  99. package/lib/aws/compute/route.js +8 -8
  100. package/lib/aws/compute/security-group.js +1 -1
  101. package/lib/aws/compute/state-graph.js +1 -1
  102. package/lib/aws/compute/state-machine-fragment.js +1 -1
  103. package/lib/aws/compute/state-machine.js +4 -4
  104. package/lib/aws/compute/states/choice.js +1 -1
  105. package/lib/aws/compute/states/custom-state.js +1 -1
  106. package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
  107. package/lib/aws/compute/states/distributed-map/item-reader.js +5 -5
  108. package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
  109. package/lib/aws/compute/states/distributed-map.js +1 -1
  110. package/lib/aws/compute/states/fail.js +1 -1
  111. package/lib/aws/compute/states/map-base.js +1 -1
  112. package/lib/aws/compute/states/map.js +1 -1
  113. package/lib/aws/compute/states/parallel.js +1 -1
  114. package/lib/aws/compute/states/pass.js +2 -2
  115. package/lib/aws/compute/states/state.js +1 -1
  116. package/lib/aws/compute/states/succeed.js +1 -1
  117. package/lib/aws/compute/states/task-base.js +2 -2
  118. package/lib/aws/compute/states/task.js +1 -1
  119. package/lib/aws/compute/states/wait.js +2 -2
  120. package/lib/aws/compute/subnet-v2.js +2 -2
  121. package/lib/aws/compute/subnet.js +1 -1
  122. package/lib/aws/compute/task-credentials.js +1 -1
  123. package/lib/aws/compute/task-input.js +1 -1
  124. package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
  125. package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
  126. package/lib/aws/compute/tasks/http/invoke.js +1 -1
  127. package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
  128. package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
  129. package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
  130. package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
  131. package/lib/aws/compute/types.js +1 -1
  132. package/lib/aws/compute/user-data.js +3 -3
  133. package/lib/aws/compute/volume.js +2 -2
  134. package/lib/aws/compute/vpc-endpoint-service.js +1 -1
  135. package/lib/aws/compute/vpc-endpoint.js +6 -6
  136. package/lib/aws/compute/vpc-flow-logs.js +4 -4
  137. package/lib/aws/compute/vpc-v2-base.js +1 -1
  138. package/lib/aws/compute/vpc-v2.js +2 -2
  139. package/lib/aws/compute/vpc.js +4 -4
  140. package/lib/aws/compute/vpn.js +3 -3
  141. package/lib/aws/edge/certificate.js +1 -1
  142. package/lib/aws/edge/distribution.js +3 -3
  143. package/lib/aws/edge/dns-alias-record-targets.js +2 -2
  144. package/lib/aws/edge/dns-record.js +13 -13
  145. package/lib/aws/edge/dns-zone.js +1 -1
  146. package/lib/aws/edge/function.js +2 -2
  147. package/lib/aws/edge/key-value-store.js +4 -4
  148. package/lib/aws/edge/origin.js +3 -3
  149. package/lib/aws/edge/response-headers-policy.js +1 -1
  150. package/lib/aws/encryption/alias.js +1 -1
  151. package/lib/aws/encryption/key.js +1 -1
  152. package/lib/aws/encryption/via-service-principal.js +1 -1
  153. package/lib/aws/iam/grant.js +2 -2
  154. package/lib/aws/iam/group.d.ts +146 -0
  155. package/lib/aws/iam/group.js +199 -0
  156. package/lib/aws/iam/index.d.ts +2 -0
  157. package/lib/aws/iam/index.js +3 -1
  158. package/lib/aws/iam/instance-profile.js +1 -1
  159. package/lib/aws/iam/managed-policy.js +1 -1
  160. package/lib/aws/iam/oidc-provider.js +1 -1
  161. package/lib/aws/iam/policy-document.js +1 -1
  162. package/lib/aws/iam/policy-statement.js +1 -1
  163. package/lib/aws/iam/policy.d.ts +26 -0
  164. package/lib/aws/iam/policy.js +65 -4
  165. package/lib/aws/iam/principals.js +20 -20
  166. package/lib/aws/iam/role.js +1 -1
  167. package/lib/aws/iam/saml-provider.js +2 -2
  168. package/lib/aws/iam/unknown-principal.js +1 -1
  169. package/lib/aws/iam/user.d.ts +174 -0
  170. package/lib/aws/iam/user.js +236 -0
  171. package/lib/aws/network/simple-ipv4-vpc.js +1 -1
  172. package/lib/aws/network/subnet-group.js +3 -3
  173. package/lib/aws/network/subnet.js +4 -4
  174. package/lib/aws/notify/archive.js +1 -1
  175. package/lib/aws/notify/connection.js +3 -3
  176. package/lib/aws/notify/event-bus.d.ts +7 -0
  177. package/lib/aws/notify/event-bus.js +52 -38
  178. package/lib/aws/notify/event-pattern.js +1 -1
  179. package/lib/aws/notify/input.js +3 -3
  180. package/lib/aws/notify/kinesis-stream.js +1 -1
  181. package/lib/aws/notify/queue-policy.js +1 -1
  182. package/lib/aws/notify/queue.js +1 -1
  183. package/lib/aws/notify/resource-policy.js +1 -1
  184. package/lib/aws/notify/rule.js +1 -1
  185. package/lib/aws/notify/schedule.js +1 -1
  186. package/lib/aws/notify/targets/event-bus.js +1 -1
  187. package/lib/aws/notify/targets/function.js +1 -1
  188. package/lib/aws/notify/targets/log-group.js +2 -2
  189. package/lib/aws/notify/targets/sqs.js +1 -1
  190. package/lib/aws/notify/targets/state-machine.js +1 -1
  191. package/lib/aws/storage/bucket-notifications.js +1 -1
  192. package/lib/aws/storage/bucket-policy.js +1 -1
  193. package/lib/aws/storage/bucket-source.js +1 -1
  194. package/lib/aws/storage/bucket.js +2 -2
  195. package/lib/aws/storage/notification-targets/function.js +1 -1
  196. package/lib/aws/storage/notification-targets/queue.js +1 -1
  197. package/lib/aws/storage/origin-access-identity.js +1 -1
  198. package/lib/aws/storage/parameter.js +2 -2
  199. package/lib/construct-base.js +2 -2
  200. package/lib/duration.js +1 -1
  201. package/lib/expiration.js +1 -1
  202. package/lib/size.js +1 -1
  203. package/lib/stack-base.js +1 -1
  204. package/lib/terra-func.js +1 -1
  205. package/package.json +1 -1
@@ -10,7 +10,6 @@ const arn_1 = require("../arn");
10
10
  const aws_construct_1 = require("../aws-construct");
11
11
  const aws_stack_1 = require("../aws-stack");
12
12
  const archive_1 = require("./archive");
13
- // import * as encryption from "../encryption";
14
13
  const iam = require("../iam");
15
14
  class EventBusBase extends aws_construct_1.AwsConstructBase {
16
15
  archive(id, props) {
@@ -172,41 +171,56 @@ class EventBus extends EventBusBase {
172
171
  this.resource = new provider_aws_1.cloudwatchEventBus.CloudwatchEventBus(this, "Resource", {
173
172
  name: eventBusName,
174
173
  eventSourceName,
175
- // kmsKeyIdentifier: props?.kmsKey?.keyArn, // TODO: Re-add KMS support
174
+ kmsKeyIdentifier: props?.kmsKey?.keyArn,
176
175
  // description: props?.description, // Description is not supported by terraform-provider-aws
176
+ // TODO: Missing in terraform-provider-aws
177
+ // ref:
178
+ // - https://github.com/hashicorp/terraform-provider-aws/issues/41563
179
+ // - https://github.com/hashicorp/terraform-provider-aws/blob/v5.88.0/internal/service/events/bus.go#L79
180
+ // - https://docs.aws.amazon.com/eventbridge/latest/APIReference/API_CreateEventBus.html#API_CreateEventBus_RequestSyntax
181
+ // deadletter_config: props?.deadLetterQueue
177
182
  });
178
- // TODO: Re-add KMS support
179
- // /**
180
- // * Allow EventBridge to use customer managed key
181
- // *
182
- // * @see https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-encryption-key-policy.html#eb-encryption-key-policy-bus
183
- // */
184
- // if (props?.kmsKey) {
185
- // props?.kmsKey.addToResourcePolicy(
186
- // new iam.PolicyStatement({
187
- // resources: ["*"],
188
- // actions: ["kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey"],
189
- // principals: [new iam.ServicePrincipal("events.amazonaws.com")],
190
- // conditions: {
191
- // StringEquals: {
192
- // "aws:SourceAccount": this.stack.account,
193
- // "aws:SourceArn": AwsStack.ofAwsConstruct(this).formatArn({
194
- // service: "events",
195
- // resource: "event-bus",
196
- // resourceName: eventBusName,
197
- // }),
198
- // "kms:EncryptionContext:aws:events:event-bus:arn": AwsStack.ofAwsConstruct(
199
- // this,
200
- // ).formatArn({
201
- // service: "events",
202
- // resource: "event-bus",
203
- // resourceName: eventBusName,
204
- // }),
205
- // },
206
- // },
207
- // }),
208
- // );
209
- // }
183
+ /**
184
+ * Allow EventBridge to use customer managed key
185
+ *
186
+ * @see https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-encryption-key-policy.html#eb-encryption-key-policy-bus
187
+ */
188
+ if (props?.kmsKey) {
189
+ props?.kmsKey.addToResourcePolicy(new iam.PolicyStatement({
190
+ resources: ["*"],
191
+ actions: ["kms:Decrypt", "kms:GenerateDataKey", "kms:DescribeKey"],
192
+ principals: [new iam.ServicePrincipal("events.amazonaws.com")],
193
+ condition: [
194
+ {
195
+ test: "StringEquals",
196
+ variable: "aws:SourceAccount",
197
+ values: [this.stack.account],
198
+ },
199
+ {
200
+ test: "StringEquals",
201
+ variable: "aws:SourceArn",
202
+ values: [
203
+ aws_stack_1.AwsStack.ofAwsConstruct(this).formatArn({
204
+ service: "events",
205
+ resource: "event-bus",
206
+ resourceName: eventBusName,
207
+ }),
208
+ ],
209
+ },
210
+ {
211
+ test: "StringEquals",
212
+ variable: "kms:EncryptionContext:aws:events:event-bus:arn",
213
+ values: [
214
+ aws_stack_1.AwsStack.ofAwsConstruct(this).formatArn({
215
+ service: "events",
216
+ resource: "event-bus",
217
+ resourceName: eventBusName,
218
+ }),
219
+ ],
220
+ },
221
+ ],
222
+ }));
223
+ }
210
224
  this.eventSourceName = this.resource.eventSourceName;
211
225
  this.eventBusOutputs = {
212
226
  name: this.eventBusName,
@@ -230,7 +244,7 @@ class EventBus extends EventBusBase {
230
244
  }
231
245
  exports.EventBus = EventBus;
232
246
  _a = JSII_RTTI_SYMBOL_1;
233
- EventBus[_a] = { fqn: "terraconstructs.aws.notify.EventBus", version: "0.0.13" };
247
+ EventBus[_a] = { fqn: "terraconstructs.aws.notify.EventBus", version: "0.0.15" };
234
248
  class ImportedEventBus extends EventBusBase {
235
249
  get outputs() {
236
250
  return this.eventBusOutputs;
@@ -293,7 +307,7 @@ class EventBusPolicy extends aws_construct_1.AwsConstructBase {
293
307
  }
294
308
  exports.EventBusPolicy = EventBusPolicy;
295
309
  _b = JSII_RTTI_SYMBOL_1;
296
- EventBusPolicy[_b] = { fqn: "terraconstructs.aws.notify.EventBusPolicy", version: "0.0.13" };
310
+ EventBusPolicy[_b] = { fqn: "terraconstructs.aws.notify.EventBusPolicy", version: "0.0.15" };
297
311
  /**
298
312
  * A single permission for an Event Bus
299
313
  *
@@ -323,5 +337,5 @@ class EventBridgePermission extends aws_construct_1.AwsConstructBase {
323
337
  }
324
338
  exports.EventBridgePermission = EventBridgePermission;
325
339
  _c = JSII_RTTI_SYMBOL_1;
326
- EventBridgePermission[_c] = { fqn: "terraconstructs.aws.notify.EventBridgePermission", version: "0.0.13" };
327
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtYnVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvZXZlbnQtYnVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0dBQWdHO0FBRWhHLHNEQUk2QjtBQUM3QixpQ0FBb0M7QUFFcEMsZ0NBQW1DO0FBQ25DLG9EQUF1RTtBQUN2RSw0Q0FBd0M7QUFDeEMsdUNBQXNEO0FBQ3RELCtDQUErQztBQUMvQyw4QkFBOEI7QUEySTlCLE1BQWUsWUFBYSxTQUFRLGdDQUFnQjtJQWlCM0MsT0FBTyxDQUFDLEVBQVUsRUFBRSxLQUF1QjtRQUNoRCxPQUFPLElBQUksaUJBQU8sQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQzNCLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLFdBQVcsRUFDVCxLQUFLLENBQUMsV0FBVyxJQUFJLHFCQUFxQixJQUFJLENBQUMsWUFBWSxZQUFZO1lBQ3pFLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQy9CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxnQkFBZ0IsQ0FBQyxPQUF1QjtRQUM3QyxPQUFPLEdBQUcsQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDO1lBQzlCLE9BQU87WUFDUCxPQUFPLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztZQUM3QixZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQ2pDLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FLRjtBQUVEOzs7O0dBSUc7QUFDSCxNQUFhLFFBQVMsU0FBUSxZQUFZO0lBQ3hDOzs7OztPQUtHO0lBQ0ksTUFBTSxDQUFDLGVBQWUsQ0FDM0IsS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLFdBQW1CO1FBRW5CLE1BQU0sS0FBSyxHQUFHLG9CQUFRLENBQUMsY0FBYyxDQUFDLEtBQUssQ0FBQyxDQUFD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QUNaLENBQUM7SUFDRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLElBQUksd0NBQXlCLENBQUMseUJBQXlCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN4RSx1RkFBdUY7WUFDdkYsR0FBRyxLQUFLO1lBQ1IsWUFBWSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsWUFBWTtTQUMxQyxDQUFDLENBQUM7SUFDTCxDQUFDOztBQVpILHNEQWFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWV2ZW50cy9saWIvZXZlbnQtYnVzLnRzXG5cbmltcG9ydCB7XG4gIGNsb3Vkd2F0Y2hFdmVudEJ1cyxcbiAgY2xvdWR3YXRjaEV2ZW50QnVzUG9saWN5LFxuICBjbG91ZHdhdGNoRXZlbnRQZXJtaXNzaW9uLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgTGF6eSwgVG9rZW4gfSBmcm9tIFwiY2RrdGZcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBcm5Gb3JtYXQgfSBmcm9tIFwiLi4vYXJuXCI7XG5pbXBvcnQgeyBBd3NDb25zdHJ1Y3RCYXNlLCBBd3NDb25zdHJ1Y3RQcm9wcyB9IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7IEFyY2hpdmUsIEJhc2VBcmNoaXZlUHJvcHMgfSBmcm9tIFwiLi9hcmNoaXZlXCI7XG4vLyBpbXBvcnQgKiBhcyBlbmNyeXB0aW9uIGZyb20gXCIuLi9lbmNyeXB0aW9uXCI7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSBcIi4uL2lhbVwiO1xuXG4vKipcbiAqIE91dHB1dHMgdG8gcmVnaXN0ZXIgd2l0aCB0aGUgR3JpZFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QnVzT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgSUQgb2YgdGhpcyBldmVudCBidXMgcmVzb3VyY2VcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGlzIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJ0bmVyIGV2ZW50IHNvdXJjZSB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSB3aGljaCBhbGwgRXZlbnRCdXMgYmFzZWQgY2xhc3NlcyBNVVNUIGltcGxlbWVudFxuICovXG5leHBvcnQgaW50ZXJmYWNlIElFdmVudEJ1cyBleHRlbmRzIGlhbS5JQXdzQ29uc3RydWN0V2l0aFBvbGljeSB7XG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgSUQgb2YgdGhpcyBldmVudCBidXMgcmVzb3VyY2VcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZXZlbnRzLWV2ZW50YnVzLmh0bWwjY2ZuLWV2ZW50cy1ldmVudGJ1cy1uYW1lXG4gICAqL1xuICByZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGlzIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1ldmVudHMtZXZlbnRidXMuaHRtbCNBcm4tZm46OmdldGF0dFxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRCdXNBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnRuZXIgZXZlbnQgc291cmNlIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1ldmVudHMtZXZlbnRidXMuaHRtbCNjZm4tZXZlbnRzLWV2ZW50YnVzLWV2ZW50c291cmNlbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGUgYW4gRXZlbnRCcmlkZ2UgYXJjaGl2ZSB0byBzZW5kIGV2ZW50cyB0by5cbiAgICogV2hlbiB5b3UgY3JlYXRlIGFuIGFyY2hpdmUsIGluY29taW5nIGV2ZW50cyBtaWdodCBub3QgaW1tZWRpYXRlbHkgc3RhcnQgYmVpbmcgc2VudCB0byB0aGUgYXJjaGl2ZS5cbiAgICogQWxsb3cgYSBzaG9ydCBwZXJpb2Qgb2YgdGltZSBmb3IgY2hhbmdlcyB0byB0YWtlIGVmZmVjdC5cbiAgICpcbiAgICogQHBhcmFtIHByb3BzIFByb3BlcnRpZXMgb2YgdGhlIGFyY2hpdmVcbiAgICovXG4gIGFyY2hpdmUoaWQ6IHN0cmluZywgcHJvcHM6IEJhc2VBcmNoaXZlUHJvcHMpOiBBcmNoaXZlO1xuXG4gIC8qKlxuICAgKiBHcmFudHMgYW4gSUFNIFByaW5jaXBhbCB0byBzZW5kIGN1c3RvbSBldmVudHMgdG8gdGhlIGV2ZW50QnVzXG4gICAqIHNvIHRoYXQgdGhleSBjYW4gYmUgbWF0Y2hlZCB0byBydWxlcy5cbiAgICpcbiAgICogQHBhcmFtIGdyYW50ZWUgVGhlIHByaW5jaXBhbCAobm8tb3AgaWYgdW5kZWZpbmVkKVxuICAgKi9cbiAgZ3JhbnRQdXRFdmVudHNUbyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudDtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGRlZmluZSBhbiBldmVudCBidXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudEJ1c1Byb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGV2ZW50IGJ1cyB5b3UgYXJlIGNyZWF0aW5nXG4gICAqIE5vdGU6IElmICdldmVudFNvdXJjZU5hbWUnIGlzIHBhc3NlZCBpbiwgeW91IGNhbm5vdCBzZXQgdGhpc1xuICAgKlxuICAgKiBOT1RFOiB0aGUgbmFtZXMgb2YgY3VzdG9tIGV2ZW50IGJ1c2VzIGNhbid0IGNvbnRhaW4gdGhlICcvJyBjaGFyYWN0ZXJcbiAgICpcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWV2ZW50cy1ldmVudGJ1cy5odG1sI2Nmbi1ldmVudHMtZXZlbnRidXMtbmFtZVxuICAgKiBAZGVmYXVsdCAtIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50QnVzTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnRuZXIgZXZlbnQgc291cmNlIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqIE5vdGU6IElmICdldmVudEJ1c05hbWUnIGlzIHBhc3NlZCBpbiwgeW91IGNhbm5vdCBzZXQgdGhpc1xuICAgKlxuICAgKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZXZlbnRzLWV2ZW50YnVzLmh0bWwjY2ZuLWV2ZW50cy1ldmVudGJ1cy1ldmVudHNvdXJjZW5hbWVcbiAgICogQGRlZmF1bHQgLSBubyBwYXJ0bmVyIGV2ZW50IHNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lPzogc3RyaW5nO1xuXG4gIC8vIFRPRE86IFJlLWFkZCBLTVMgc3VwcG9ydFxuICAvLyAvKipcbiAgLy8gICogVGhlIGN1c3RvbWVyIG1hbmFnZWQga2V5IHRoYXQgZW5jcnlwdCBldmVudHMgb24gdGhpcyBldmVudCBidXMuXG4gIC8vICAqXG4gIC8vICAqIEBkZWZhdWx0IC0gVXNlIGFuIEFXUyBtYW5hZ2VkIGtleVxuICAvLyAgKi9cbiAgLy8gcmVhZG9ubHkga21zS2V5PzogZW5jcnlwdGlvbi5JS2V5O1xuXG4gIC8vIC8vIERlc2NyaXB0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGVycmFmb3JtLXByb3ZpZGVyLWF3c1xuICAvLyAvKipcbiAgLy8gICogVGhlIGV2ZW50IGJ1cyBkZXNjcmlwdGlvbi5cbiAgLy8gICpcbiAgLy8gICogVGhlIGRlc2NyaXB0aW9uIGNhbiBiZSB1cCB0byA1MTIgY2hhcmFjdGVycyBsb25nLlxuICAvLyAgKlxuICAvLyAgKiBAc2VlIGh0dHA6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWV2ZW50cy1ldmVudGJ1cy5odG1sI2Nmbi1ldmVudHMtZXZlbnRidXMtZGVzY3JpcHRpb25cbiAgLy8gICpcbiAgLy8gICogQGRlZmF1bHQgLSBubyBkZXNjcmlwdGlvblxuICAvLyAgKi9cbiAgLy8gcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHdpdGggcHJvcGVydGllcyBuZWNlc3NhcnkgdG8gaW1wb3J0IGEgcmV1c2FibGUgRXZlbnRCdXNcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmVudEJ1c0F0dHJpYnV0ZXMge1xuICAvKipcbiAgICogVGhlIHBoeXNpY2FsIElEIG9mIHRoaXMgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1ldmVudHMtZXZlbnRidXMuaHRtbCNjZm4tZXZlbnRzLWV2ZW50YnVzLW5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50QnVzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoaXMgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1ldmVudHMtZXZlbnRidXMuaHRtbCNBcm4tZm46OmdldGF0dFxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRCdXNBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnRuZXIgZXZlbnQgc291cmNlIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1ldmVudHMtZXZlbnRidXMuaHRtbCNjZm4tZXZlbnRzLWV2ZW50YnVzLWV2ZW50c291cmNlbmFtZVxuICAgKiBAZGVmYXVsdCAtIG5vIHBhcnRuZXIgZXZlbnQgc291cmNlXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZU5hbWU/OiBzdHJpbmc7XG59XG5cbmFic3RyYWN0IGNsYXNzIEV2ZW50QnVzQmFzZSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJRXZlbnRCdXMge1xuICAvKipcbiAgICogVGhlIHBoeXNpY2FsIElEIG9mIHRoaXMgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZXZlbnRCdXNOYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGV2ZW50IGJ1cywgc3VjaCBhczpcbiAgICogYXJuOmF3czpldmVudHM6dXMtZWFzdC0yOjEyMzQ1Njc4OTAxMjpldmVudC1idXMvYXdzLnBhcnRuZXIvUGFydG5lck5hbWUvYWNjdDEvcmVwbzEuXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZXZlbnRCdXNBcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhcnRuZXIgZXZlbnQgc291cmNlXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lPzogc3RyaW5nO1xuXG4gIHB1YmxpYyBhcmNoaXZlKGlkOiBzdHJpbmcsIHByb3BzOiBCYXNlQXJjaGl2ZVByb3BzKTogQXJjaGl2ZSB7XG4gICAgcmV0dXJuIG5ldyBBcmNoaXZlKHRoaXMsIGlkLCB7XG4gICAgICBzb3VyY2VFdmVudEJ1czogdGhpcyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBwcm9wcy5kZXNjcmlwdGlvbiB8fCBgRXZlbnQgQXJjaGl2ZSBmb3IgJHt0aGlzLmV2ZW50QnVzTmFtZX0gRXZlbnQgQnVzYCxcbiAgICAgIGV2ZW50UGF0dGVybjogcHJvcHMuZXZlbnRQYXR0ZXJuLFxuICAgICAgcmV0ZW50aW9uOiBwcm9wcy5yZXRlbnRpb24sXG4gICAgICBhcmNoaXZlTmFtZTogcHJvcHMuYXJjaGl2ZU5hbWUsXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ3JhbnRQdXRFdmVudHNUbyhncmFudGVlOiBpYW0uSUdyYW50YWJsZSk6IGlhbS5HcmFudCB7XG4gICAgcmV0dXJuIGlhbS5HcmFudC5hZGRUb1ByaW5jaXBhbCh7XG4gICAgICBncmFudGVlLFxuICAgICAgYWN0aW9uczogW1wiZXZlbnRzOlB1dEV2ZW50c1wiXSxcbiAgICAgIHJlc291cmNlQXJuczogW3RoaXMuZXZlbnRCdXNBcm5dLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IGFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50LFxuICApOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdDtcbn1cblxuLyoqXG4gKiBEZWZpbmUgYW4gRXZlbnRCcmlkZ2UgRXZlbnRCdXNcbiAqXG4gKiBAcmVzb3VyY2UgYXdzX2Nsb3Vkd2F0Y2hfZXZlbnRfYnVzXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudEJ1cyBleHRlbmRzIEV2ZW50QnVzQmFzZSB7XG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqIEBwYXJhbSBzY29wZSBQYXJlbnQgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCBDb25zdHJ1Y3QgSURcbiAgICogQHBhcmFtIGV2ZW50QnVzQXJuIEFSTiBvZiBpbXBvcnRlZCBldmVudCBidXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUV2ZW50QnVzQXJuKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBldmVudEJ1c0Fybjogc3RyaW5nLFxuICApOiBJRXZlbnRCdXMge1xuICAgIGNvbnN0IHBhcnRzID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3Qoc2NvcGUpLnNwbGl0QXJuKFxuICAgICAgZXZlbnRCdXNBcm4sXG4gICAgICBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApO1xuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZEV2ZW50QnVzKHNjb3BlLCBpZCwge1xuICAgICAgZXZlbnRCdXNBcm46IGV2ZW50QnVzQXJuLFxuICAgICAgZXZlbnRCdXNOYW1lOiBwYXJ0cy5yZXNvdXJjZU5hbWUgfHwgXCJcIixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqIEBwYXJhbSBzY29wZSBQYXJlbnQgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCBDb25zdHJ1Y3QgSURcbiAgICogQHBhcmFtIGV2ZW50QnVzTmFtZSBOYW1lIG9mIGltcG9ydGVkIGV2ZW50IGJ1c1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRXZlbnRCdXNOYW1lKFxuICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgaWQ6IHN0cmluZyxcbiAgICBldmVudEJ1c05hbWU6IHN0cmluZyxcbiAgKTogSUV2ZW50QnVzIHtcbiAgICBjb25zdCBldmVudEJ1c0FybiA9IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHNjb3BlKS5mb3JtYXRBcm4oe1xuICAgICAgcmVzb3VyY2U6IFwiZXZlbnQtYnVzXCIsXG4gICAgICBzZXJ2aWNlOiBcImV2ZW50c1wiLFxuICAgICAgcmVzb3VyY2VOYW1lOiBldmVudEJ1c05hbWUsXG4gICAgfSk7XG5cbiAgICByZXR1cm4gRXZlbnRCdXMuZnJvbUV2ZW50QnVzQXR0cmlidXRlcyhzY29wZSwgaWQsIHtcbiAgICAgIGV2ZW50QnVzTmFtZTogZXZlbnRCdXNOYW1lLFxuICAgICAgZXZlbnRCdXNBcm46IGV2ZW50QnVzQXJuLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBldmVudCBidXMgcmVzb3VyY2VcbiAgICogQHBhcmFtIHNjb3BlIFBhcmVudCBjb25zdHJ1Y3RcbiAgICogQHBhcmFtIGlkIENvbnN0cnVjdCBJRFxuICAgKiBAcGFyYW0gYXR0cnMgSW1wb3J0ZWQgZXZlbnQgYnVzIHByb3BlcnRpZXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUV2ZW50QnVzQXR0cmlidXRlcyhcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgYXR0cnM6IEV2ZW50QnVzQXR0cmlidXRlcyxcbiAgKTogSUV2ZW50QnVzIHtcbiAgICByZXR1cm4gbmV3IEltcG9ydGVkRXZlbnRCdXMoc2NvcGUsIGlkLCBhdHRycyk7XG4gIH1cblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gUHJpbmNpcGFsIHRvIHNlbmQgY3VzdG9tIGV2ZW50cyB0byBFdmVudEJyaWRnZVxuICAgKiBzbyB0aGF0IHRoZXkgY2FuIGJlIG1hdGNoZWQgdG8gcnVsZXMuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWwgKG5vLW9wIGlmIHVuZGVmaW5lZClcbiAgICogQGRlcHJlY2F0ZWQgdXNlIGdyYW50QWxsUHV0RXZlbnRzIGluc3RlYWRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ3JhbnRQdXRFdmVudHMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIC8vIEl0J3MgY3VycmVudGx5IG5vdCBwb3NzaWJsZSB0byByZXN0cmljdCBQdXRFdmVudHMgdG8gc3BlY2lmaWMgcmVzb3VyY2VzLlxuICAgIC8vIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vZXZlbnRicmlkZ2UvbGF0ZXN0L3VzZXJndWlkZS9wZXJtaXNzaW9ucy1yZWZlcmVuY2UtZXZlbnRicmlkZ2UuaHRtbFxuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IFtcImV2ZW50czpQdXRFdmVudHNcIl0sXG4gICAgICByZXNvdXJjZUFybnM6IFtcIipcIl0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogUGVybWl0cyBhbiBJQU0gUHJpbmNpcGFsIHRvIHNlbmQgY3VzdG9tIGV2ZW50cyB0byBFdmVudEJyaWRnZVxuICAgKiBzbyB0aGF0IHRoZXkgY2FuIGJlIG1hdGNoZWQgdG8gcnVsZXMuXG4gICAqXG4gICAqIEBwYXJhbSBncmFudGVlIFRoZSBwcmluY2lwYWwgKG5vLW9wIGlmIHVuZGVmaW5lZClcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ3JhbnRBbGxQdXRFdmVudHMoZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IFtcImV2ZW50czpQdXRFdmVudHNcIl0sXG4gICAgICByZXNvdXJjZUFybnM6IFtcIipcIl0sXG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBldmVudEJ1c1Byb3BzKFxuICAgIGRlZmF1bHRFdmVudEJ1c05hbWU6IHN0cmluZyxcbiAgICBwcm9wczogRXZlbnRCdXNQcm9wcyA9IHt9LFxuICApIHtcbiAgICBjb25zdCB7IGV2ZW50QnVzTmFtZSwgZXZlbnRTb3VyY2VOYW1lIH0gPSBwcm9wcztcbiAgICBjb25zdCBldmVudEJ1c05hbWVSZWdleCA9IC9eW1xcL1xcLlxcLV9BLVphLXowLTldezEsMjU2fSQvO1xuXG4gICAgaWYgKGV2ZW50QnVzTmFtZSAhPT0gdW5kZWZpbmVkICYmIGV2ZW50U291cmNlTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiJ2V2ZW50QnVzTmFtZScgYW5kICdldmVudFNvdXJjZU5hbWUnIGNhbm5vdCBib3RoIGJlIHByb3ZpZGVkXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChldmVudEJ1c05hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoZXZlbnRCdXNOYW1lKSkge1xuICAgICAgICBpZiAoZXZlbnRCdXNOYW1lID09PSBcImRlZmF1bHRcIikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIidldmVudEJ1c05hbWUnIG11c3Qgbm90IGJlICdkZWZhdWx0J1wiKTtcbiAgICAgICAgfSBlbHNlIGlmIChldmVudEJ1c05hbWUuaW5kZXhPZihcIi9cIikgPiAtMSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIidldmVudEJ1c05hbWUnIG11c3Qgbm90IGNvbnRhaW4gJy8nXCIpO1xuICAgICAgICB9IGVsc2UgaWYgKCFldmVudEJ1c05hbWVSZWdleC50ZXN0KGV2ZW50QnVzTmFtZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCdldmVudEJ1c05hbWUnIG11c3Qgc2F0aXNmeTogJHtldmVudEJ1c05hbWVSZWdleH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHsgZXZlbnRCdXNOYW1lIH07XG4gICAgfVxuXG4gICAgaWYgKGV2ZW50U291cmNlTmFtZSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChldmVudFNvdXJjZU5hbWUpKSB7XG4gICAgICAgIC8vIEV4OiBhd3MucGFydG5lci9QYXJ0bmVyTmFtZS9hY2N0MS9yZXBvMVxuICAgICAgICBjb25zdCBldmVudFNvdXJjZU5hbWVSZWdleCA9IC9eYXdzXFwucGFydG5lcihcXC9bXFwuXFwtX0EtWmEtejAtOV0rKXsyLH0kLztcbiAgICAgICAgaWYgKCFldmVudFNvdXJjZU5hbWVSZWdleC50ZXN0KGV2ZW50U291cmNlTmFtZSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgJ2V2ZW50U291cmNlTmFtZScgbXVzdCBzYXRpc2Z5OiAke2V2ZW50U291cmNlTmFtZVJlZ2V4fWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSBlbHNlIGlmICghZXZlbnRCdXNOYW1lUmVnZXgudGVzdChldmVudFNvdXJjZU5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYCdldmVudFNvdXJjZU5hbWUnIG11c3Qgc2F0aXNmeTogJHtldmVudEJ1c05hbWVSZWdleH1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGV2ZW50QnVzTmFtZTogZXZlbnRTb3VyY2VOYW1lLCBldmVudFNvdXJjZU5hbWUgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBldmVudEJ1c05hbWU6IGRlZmF1bHRFdmVudEJ1c05hbWUgfTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogY2xvdWR3YXRjaEV2ZW50QnVzLkNsb3Vkd2F0Y2hFdmVudEJ1cztcblxuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRCdXNPdXRwdXRzOiBFdmVudEJ1c091dHB1dHM7XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5ldmVudEJ1c091dHB1dHM7XG4gIH1cblxuICBwcml2YXRlIHBvbGljeT86IEV2ZW50QnVzUG9saWN5O1xuXG4gIC8qKlxuICAgKiBUaGUgcGh5c2ljYWwgSUQgb2YgdGhpcyBldmVudCBidXMgcmVzb3VyY2VcbiAgICovXG4gIHB1YmxpYyBnZXQgZXZlbnRCdXNOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UubmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBldmVudCBidXMsIHN1Y2ggYXM6XG4gICAqIGFybjphd3M6ZXZlbnRzOnVzLWVhc3QtMjoxMjM0NTY3ODkwMTI6ZXZlbnQtYnVzL2F3cy5wYXJ0bmVyL1BhcnRuZXJOYW1lL2FjY3QxL3JlcG8xLlxuICAgKi9cbiAgcHVibGljIGdldCBldmVudEJ1c0FybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLmFybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgcGFydG5lciBldmVudCBzb3VyY2VcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBldmVudFNvdXJjZU5hbWU/OiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBFdmVudEJ1c1Byb3BzKSB7XG4gICAgY29uc3QgeyBldmVudEJ1c05hbWUsIGV2ZW50U291cmNlTmFtZSB9ID0gRXZlbnRCdXMuZXZlbnRCdXNQcm9wcyhcbiAgICAgIC8vIFRPRE8odmluY2VudCk6IEZpZ3VyZSBvdXQgaG93IHRoaXMgd29ya3MuLi5cbiAgICAgIExhenkuc3RyaW5nVmFsdWUoeyBwcm9kdWNlOiAoKSA9PiBBd3NTdGFjay51bmlxdWVJZCh0aGlzKSB9KSxcbiAgICAgIHByb3BzLFxuICAgICk7XG5cbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIC8vIGlmIChcbiAgICAvLyAgIHByb3BzPy5kZXNjcmlwdGlvbiAmJlxuICAgIC8vICAgIVRva2VuLmlzVW5yZXNvbHZlZChwcm9wcy5kZXNjcmlwdGlvbikgJiZcbiAgICAvLyAgIHByb3BzLmRlc2NyaXB0aW9uLmxlbmd0aCA+IDUxMlxuICAgIC8vICkge1xuICAgIC8vICAgdGhyb3cgbmV3IEVycm9yKFxuICAgIC8vICAgICBgZGVzY3JpcHRpb24gbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gNTEyIGNoYXJhY3RlcnMsIGdvdCAke3Byb3BzLmRlc2NyaXB0aW9uLmxlbmd0aH1gLFxuICAgIC8vICAgKTtcbiAgICAvLyB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGNsb3Vkd2F0Y2hFdmVudEJ1cy5DbG91ZHdhdGNoRXZlbnRCdXMoXG4gICAgICB0aGlzLFxuICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBuYW1lOiBldmVudEJ1c05hbWUsXG4gICAgICAgIGV2ZW50U291cmNlTmFtZSxcbiAgICAgICAgLy8ga21zS2V5SWRlbnRpZmllcjogcHJvcHM/Lmttc0tleT8ua2V5QXJuLCAvLyBUT0RPOiBSZS1hZGQgS01TIHN1cHBvcnRcbiAgICAgICAgLy8gZGVzY3JpcHRpb246IHByb3BzPy5kZXNjcmlwdGlvbiwgLy8gRGVzY3JpcHRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0ZXJyYWZvcm0tcHJvdmlkZXItYXdzXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBUT0RPOiBSZS1hZGQgS01TIHN1cHBvcnRcbiAgICAvLyAvKipcbiAgICAvLyAgKiBBbGxvdyBFdmVudEJyaWRnZSB0byB1c2UgY3VzdG9tZXIgbWFuYWdlZCBrZXlcbiAgICAvLyAgKlxuICAgIC8vICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2V2ZW50YnJpZGdlL2xhdGVzdC91c2VyZ3VpZGUvZWItZW5jcnlwdGlvbi1rZXktcG9saWN5Lmh0bWwjZWItZW5jcnlwdGlvbi1rZXktcG9saWN5LWJ1c1xuICAgIC8vICAqL1xuICAgIC8vIGlmIChwcm9wcz8ua21zS2V5KSB7XG4gICAgLy8gICBwcm9wcz8ua21zS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgLy8gICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAvLyAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgLy8gICAgICAgYWN0aW9uczogW1wia21zOkRlY3J5cHRcIiwgXCJrbXM6R2VuZXJhdGVEYXRhS2V5XCIsIFwia21zOkRlc2NyaWJlS2V5XCJdLFxuICAgIC8vICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJldmVudHMuYW1hem9uYXdzLmNvbVwiKV0sXG4gICAgLy8gICAgICAgY29uZGl0aW9uczoge1xuICAgIC8vICAgICAgICAgU3RyaW5nRXF1YWxzOiB7XG4gICAgLy8gICAgICAgICAgIFwiYXdzOlNvdXJjZUFjY291bnRcIjogdGhpcy5zdGFjay5hY2NvdW50LFxuICAgIC8vICAgICAgICAgICBcImF3czpTb3VyY2VBcm5cIjogQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcykuZm9ybWF0QXJuKHtcbiAgICAvLyAgICAgICAgICAgICBzZXJ2aWNlOiBcImV2ZW50c1wiLFxuICAgIC8vICAgICAgICAgICAgIHJlc291cmNlOiBcImV2ZW50LWJ1c1wiLFxuICAgIC8vICAgICAgICAgICAgIHJlc291cmNlTmFtZTogZXZlbnRCdXNOYW1lLFxuICAgIC8vICAgICAgICAgICB9KSxcbiAgICAvLyAgICAgICAgICAgXCJrbXM6RW5jcnlwdGlvbkNvbnRleHQ6YXdzOmV2ZW50czpldmVudC1idXM6YXJuXCI6IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KFxuICAgIC8vICAgICAgICAgICAgIHRoaXMsXG4gICAgLy8gICAgICAgICAgICkuZm9ybWF0QXJuKHtcbiAgICAvLyAgICAgICAgICAgICBzZXJ2aWNlOiBcImV2ZW50c1wiLFxuICAgIC8vICAgICAgICAgICAgIHJlc291cmNlOiBcImV2ZW50LWJ1c1wiLFxuICAgIC8vICAgICAgICAgICAgIHJlc291cmNlTmFtZTogZXZlbnRCdXNOYW1lLFxuICAgIC8vICAgICAgICAgICB9KSxcbiAgICAvLyAgICAgICAgIH0sXG4gICAgLy8gICAgICAgfSxcbiAgICAvLyAgICAgfSksXG4gICAgLy8gICApO1xuICAgIC8vIH1cblxuICAgIHRoaXMuZXZlbnRTb3VyY2VOYW1lID0gdGhpcy5yZXNvdXJjZS5ldmVudFNvdXJjZU5hbWU7XG4gICAgdGhpcy5ldmVudEJ1c091dHB1dHMgPSB7XG4gICAgICBuYW1lOiB0aGlzLmV2ZW50QnVzTmFtZSxcbiAgICAgIGFybjogdGhpcy5ldmVudEJ1c0FybixcbiAgICAgIGV2ZW50U291cmNlTmFtZTogdGhpcy5ldmVudFNvdXJjZU5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgc3RhdGVtZW50IHRvIHRoZSBJQU0gcmVzb3VyY2UgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGV2ZW50IGJ1cy5cbiAgICovXG4gIHB1YmxpYyBhZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCxcbiAgKTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQge1xuICAgIGlmICghdGhpcy5wb2xpY3kpIHtcbiAgICAgIHRoaXMucG9saWN5ID0gbmV3IEV2ZW50QnVzUG9saWN5KHRoaXMsIFwiUG9saWN5XCIsIHsgZXZlbnRCdXM6IHRoaXMgfSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucG9saWN5KSB7XG4gICAgICB0aGlzLnBvbGljeS5kb2N1bWVudC5hZGRTdGF0ZW1lbnRzKHN0YXRlbWVudCk7XG4gICAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogdHJ1ZSwgcG9saWN5RGVwZW5kYWJsZTogdGhpcy5wb2xpY3kgfTtcbiAgICB9XG5cbiAgICByZXR1cm4geyBzdGF0ZW1lbnRBZGRlZDogZmFsc2UgfTtcbiAgfVxufVxuXG5jbGFzcyBJbXBvcnRlZEV2ZW50QnVzIGV4dGVuZHMgRXZlbnRCdXNCYXNlIHtcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50QnVzQXJuOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50U291cmNlTmFtZT86IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50QnVzT3V0cHV0czogRXZlbnRCdXNPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IG91dHB1dHMoKSB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCdXNPdXRwdXRzO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgYXR0cnM6IEV2ZW50QnVzQXR0cmlidXRlcykge1xuICAgIGNvbnN0IGFyblBhcnRzID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3Qoc2NvcGUpLnNwbGl0QXJuKFxuICAgICAgYXR0cnMuZXZlbnRCdXNBcm4sXG4gICAgICBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApO1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgYWNjb3VudDogYXJuUGFydHMuYWNjb3VudCxcbiAgICAgIHJlZ2lvbjogYXJuUGFydHMucmVnaW9uLFxuICAgIH0pO1xuXG4gICAgdGhpcy5ldmVudEJ1c0FybiA9IGF0dHJzLmV2ZW50QnVzQXJuO1xuICAgIHRoaXMuZXZlbnRCdXNOYW1lID0gYXR0cnMuZXZlbnRCdXNOYW1lO1xuICAgIHRoaXMuZXZlbnRTb3VyY2VOYW1lID0gYXR0cnMuZXZlbnRTb3VyY2VOYW1lO1xuICAgIHRoaXMuZXZlbnRCdXNPdXRwdXRzID0ge1xuICAgICAgbmFtZTogdGhpcy5ldmVudEJ1c05hbWUsXG4gICAgICBhcm46IHRoaXMuZXZlbnRCdXNBcm4sXG4gICAgICBldmVudFNvdXJjZU5hbWU6IHRoaXMuZXZlbnRTb3VyY2VOYW1lLFxuICAgIH07XG4gIH1cblxuICBwdWJsaWMgYWRkVG9SZXNvdXJjZVBvbGljeShcbiAgICBfc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50LFxuICApOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdCB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgW1xuICAgICAgICBcIkNhbm5vdCBhZGQgYSBzdGF0ZW1lbnQgdG8gYW4gaW1wb3J0ZWQgRXZlbnRCdXMuIFlvdSBtYXkgdXNlIGBFdmVudEJyaWRnZVBlcm1pc3Npb25gIGluc3RlYWQuXCIsXG4gICAgICAgIFwiSWYgdGhlIEV2ZW50QnVzIGFscmVhZHkgaGFzIGEgcG9saWN5IGF0dGFjaGVkLCB0aGUgcGVybWlzc2lvbnMgd2lsbCBiZSBvdmVyd3JpdHRlbi5cIixcbiAgICAgIF0uam9pbihcIlxcblwiKSxcbiAgICApO1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBhc3NvY2lhdGUgRXZlbnQgQnVzZXMgd2l0aCBhIHBvbGljeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QnVzUG9saWN5UHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgYnVzIHRvIHdoaWNoIHRoZSBwb2xpY3kgYXBwbGllc1xuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRCdXM6IElFdmVudEJ1cztcbn1cblxuLyoqXG4gKiBUaGUgcG9saWN5IGZvciBhbiBFdmVudCBCdXNcbiAqXG4gKiBQb2xpY2llcyBkZWZpbmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBhcmUgYWxsb3dlZCBvbiB0aGlzIHJlc291cmNlLlxuICpcbiAqIFlvdSBhbG1vc3QgbmV2ZXIgbmVlZCB0byBkZWZpbmUgdGhpcyBjb25zdHJ1Y3QgZGlyZWN0bHkuXG4gKlxuICogVGhlIEV2ZW50QnVzUG9saWN5IHJlc291cmNlIChgYXdzX2Nsb3Vkd2F0Y2hfZXZlbnRfYnVzX3BvbGljeWApXG4gKiBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgRXZlbnRCcmlkZ2VQZXJtaXNzaW9uIHJlc291cmNlIChgYXdzX2Nsb3Vkd2F0Y2hfZXZlbnRfcGVybWlzc2lvbmApXG4gKiBhbmQgd2lsbCBvdmVyd3JpdGUgcGVybWlzc2lvbnMuXG4gKlxuICogQWxsIEFXUyByZXNvdXJjZXMgdGhhdCBzdXBwb3J0IHJlc291cmNlIHBvbGljaWVzIGhhdmUgYSBtZXRob2QgY2FsbGVkXG4gKiBgYWRkVG9SZXNvdXJjZVBvbGljeSgpYCwgd2hpY2ggd2lsbCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhIG5ldyByZXNvdXJjZVxuICogcG9saWN5IGlmIG9uZSBkb2Vzbid0IGV4aXN0IHlldCwgb3RoZXJ3aXNlIGl0IHdpbGwgYWRkIHRvIHRoZSBleGlzdGluZ1xuICogcG9saWN5LlxuICpcbiAqIFByZWZlciB0byB1c2UgYGFkZFRvUmVzb3VyY2VQb2xpY3koKWAgaW5zdGVhZC5cbiAqXG4gKiBAcmVzb3VyY2UgYXdzX2Nsb3Vkd2F0Y2hfZXZlbnRfYnVzX3BvbGljeVxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRCdXNQb2xpY3kgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBJQU0gcG9saWN5IGRvY3VtZW50IGZvciB0aGlzIHBvbGljeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudDogaWFtLlBvbGljeURvY3VtZW50O1xuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZG9jdW1lbnQub3V0cHV0cztcbiAgfVxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogRXZlbnRCdXNQb2xpY3lQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIHRoaXMuZG9jdW1lbnQgPSBuZXcgaWFtLlBvbGljeURvY3VtZW50KHRoaXMsIFwiRG9jdW1lbnRcIik7XG5cbiAgICBuZXcgY2xvdWR3YXRjaEV2ZW50QnVzUG9saWN5LkNsb3Vkd2F0Y2hFdmVudEJ1c1BvbGljeSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9wdWxsLzE2ODc0I2Rpc2N1c3Npb25fcjY1NjAyNDgzMFxuICAgICAgcG9saWN5OiB0aGlzLmRvY3VtZW50Lmpzb24sXG4gICAgICBldmVudEJ1c05hbWU6IHByb3BzLmV2ZW50QnVzLmV2ZW50QnVzTmFtZSxcbiAgICB9KTtcbiAgfVxufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gYWRkIHBlcm1pc3Npb25zIHRvIGFuIEV2ZW50IEJ1c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QnJpZGdlUGVybWlzc2lvblByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvLyBUT0RPOiBBdXRvIGdlbmVyYXRlIHRoaXMgdXNpbmcgc3RydWN0IGJ1aWxkZXIgdG8ga2VlcCBkb2NzIHVwZGF0ZWQ/XG4gIC8qKlxuICAgKiBUaGUgZXZlbnQgYnVzIHRvIHdoaWNoIHRoZSBwb2xpY3kgYXBwbGllc1xuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRCdXM6IElFdmVudEJ1cztcbiAgLyoqXG4gICAqIEFuIGlkZW50aWZpZXIgc3RyaW5nIGZvciB0aGUgZXh0ZXJuYWwgYWNjb3VudCB0aGF0XG4gICAqIHlvdSBhcmUgZ3JhbnRpbmcgcGVybWlzc2lvbnMgdG8uXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42OC4wL2RvY3MvcmVzb3VyY2VzL2Nsb3Vkd2F0Y2hfZXZlbnRfcGVybWlzc2lvbiNzdGF0ZW1lbnRfaWQgQ2xvdWR3YXRjaEV2ZW50UGVybWlzc2lvbiNzdGF0ZW1lbnRfaWR9XG4gICAqL1xuICByZWFkb25seSBzdGF0ZW1lbnRJZDogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGFjdGlvbiB0aGF0IHlvdSBhcmUgZW5hYmxpbmcgdGhlIG90aGVyIGFjY291bnQgdG8gcGVyZm9ybS4gRGVmYXVsdHMgdG8gZXZlbnRzOlB1dEV2ZW50c1xuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuNjguMC9kb2NzL3Jlc291cmNlcy9jbG91ZHdhdGNoX2V2ZW50X3Blcm1pc3Npb24jYWN0aW9uIENsb3Vkd2F0Y2hFdmVudFBlcm1pc3Npb24jYWN0aW9ufVxuICAgKiBAZGVmYXVsdCBcImV2ZW50czpQdXRFdmVudHNcIlxuICAgKi9cbiAgcmVhZG9ubHkgYWN0aW9uPzogc3RyaW5nO1xuICAvKipcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjY4LjAvZG9jcy9yZXNvdXJjZXMvY2xvdWR3YXRjaF9ldmVudF9wZXJtaXNzaW9uI2V2ZW50X2J1c19uYW1lIENsb3Vkd2F0Y2hFdmVudFBlcm1pc3Npb24jZXZlbnRfYnVzX25hbWV9XG4gICAqL1xuICByZWFkb25seSBldmVudEJ1c05hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuNjguMC9kb2NzL3Jlc291cmNlcy9jbG91ZHdhdGNoX2V2ZW50X3Blcm1pc3Npb24jaWQgQ2xvdWR3YXRjaEV2ZW50UGVybWlzc2lvbiNpZH1cbiAgICpcbiAgICogUGxlYXNlIGJlIGF3YXJlIHRoYXQgdGhlIGlkIGZpZWxkIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gYWxsIHJlc291cmNlcyBpbiBUZXJyYWZvcm0gcHJvdmlkZXJzIHVzaW5nIGEgVGVycmFmb3JtIHByb3ZpZGVyIFNESyB2ZXJzaW9uIGJlbG93IDIuXG4gICAqIElmIHlvdSBleHBlcmllbmNlIHByb2JsZW1zIHNldHRpbmcgdGhpcyB2YWx1ZSBpdCBtaWdodCBub3QgYmUgc2V0dGFibGUuIFBsZWFzZSB0YWtlIGEgbG9vayBhdCB0aGUgcHJvdmlkZXIgZG9jdW1lbnRhdGlvbiB0byBlbnN1cmUgaXQgc2hvdWxkIGJlIHNldHRhYmxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgMTItZGlnaXQgQVdTIGFjY291bnQgSUQgdGhhdCB5b3UgYXJlIHBlcm1pdHRpbmcgdG8gcHV0IGV2ZW50cyB0byB5b3VyIGRlZmF1bHQgZXZlbnQgYnVzLlxuICAgKiBTcGVjaWZ5ICogdG8gcGVybWl0IGFueSBhY2NvdW50IHRvIHB1dCBldmVudHMgdG8geW91ciBkZWZhdWx0IGV2ZW50IGJ1cywgb3B0aW9uYWxseSBsaW1pdGVkXG4gICAqIGJ5IGNvbmRpdGlvbi5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjY4LjAvZG9jcy9yZXNvdXJjZXMvY2xvdWR3YXRjaF9ldmVudF9wZXJtaXNzaW9uI3ByaW5jaXBhbCBDbG91ZHdhdGNoRXZlbnRQZXJtaXNzaW9uI3ByaW5jaXBhbH1cbiAgICovXG4gIHJlYWRvbmx5IHByaW5jaXBhbDogc3RyaW5nO1xuICAvKipcbiAgICogQ29uZmlndXJhdGlvbiBibG9jayB0byBsaW1pdCB0aGUgZXZlbnQgYnVzIHBlcm1pc3Npb25zIHlvdSBhcmUgZ3JhbnRpbmcgdG8gb25seSBhY2NvdW50cyB0aGF0XG4gICAqIGZ1bGZpbGwgdGhlIGNvbmRpdGlvbi5jb25kaXRpb24gYmxvY2tcbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjY4LjAvZG9jcy9yZXNvdXJjZXMvY2xvdWR3YXRjaF9ldmVudF9wZXJtaXNzaW9uI2NvbmRpdGlvbiBDbG91ZHdhdGNoRXZlbnRQZXJtaXNzaW9uI2NvbmRpdGlvbn1cbiAgICovXG4gIHJlYWRvbmx5IGNvbmRpdGlvbj86IGNsb3Vkd2F0Y2hFdmVudFBlcm1pc3Npb24uQ2xvdWR3YXRjaEV2ZW50UGVybWlzc2lvbkNvbmRpdGlvbjtcbn1cblxuLyoqXG4gKiBBIHNpbmdsZSBwZXJtaXNzaW9uIGZvciBhbiBFdmVudCBCdXNcbiAqXG4gKiBBbGwgQVdTIHJlc291cmNlcyB0aGF0IHN1cHBvcnQgcmVzb3VyY2UgcG9saWNpZXMgaGF2ZSBhIG1ldGhvZCBjYWxsZWRcbiAqIGBhZGRUb1Jlc291cmNlUG9saWN5KClgLCB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgbmV3IHJlc291cmNlXG4gKiBwb2xpY3kgaWYgb25lIGRvZXNuJ3QgZXhpc3QgeWV0LCBvdGhlcndpc2UgaXQgd2lsbCBhZGQgdG8gdGhlIGV4aXN0aW5nXG4gKiBwb2xpY3kuXG4gKlxuICogSWYgYGFkZFRvUmVzb3VyY2VQb2xpY3koKWAgd2FzIHVzZWQgb24gdGhlIGV2ZW50IGJ1cywgVGhlIEV2ZW50QnVzUG9saWN5IHJlc291cmNlXG4gKiAoYGF3c19jbG91ZHdhdGNoX2V2ZW50X2J1c19wb2xpY3lgKSBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGlzIHJlc291cmNlIGFuZFxuICogd2lsbCBvdmVyd3JpdGUgcGVybWlzc2lvbnMuXG4gKlxuICogQHJlc291cmNlIGF3c19jbG91ZHdhdGNoX2V2ZW50X3Blcm1pc3Npb25cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50QnJpZGdlUGVybWlzc2lvbiBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2Uge1xuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmVudEJyaWRnZVBlcm1pc3Npb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuXG4gICAgbmV3IGNsb3Vkd2F0Y2hFdmVudFBlcm1pc3Npb24uQ2xvdWR3YXRjaEV2ZW50UGVybWlzc2lvbih0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9wdWxsLzE2ODc0I2Rpc2N1c3Npb25fcjY1NjAyNDgzMFxuICAgICAgLi4ucHJvcHMsXG4gICAgICBldmVudEJ1c05hbWU6IHByb3BzLmV2ZW50QnVzLmV2ZW50QnVzTmFtZSxcbiAgICB9KTtcbiAgfVxufVxuIl19
340
+ EventBridgePermission[_c] = { fqn: "terraconstructs.aws.notify.EventBridgePermission", version: "0.0.15" };
341
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtYnVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvZXZlbnQtYnVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0dBQWdHO0FBRWhHLHNEQUk2QjtBQUM3QixpQ0FBb0M7QUFFcEMsZ0NBQW1DO0FBQ25DLG9EQUF1RTtBQUN2RSw0Q0FBd0M7QUFDeEMsdUNBQXNEO0FBR3RELDhCQUE4QjtBQW9KOUIsTUFBZSxZQUFhLFNBQVEsZ0NBQWdCO0lBaUIzQyxPQUFPLENBQUMsRUFBVSxFQUFFLEtBQXVCO1FBQ2hELE9BQU8sSUFBSSxpQkFBTyxDQUFDLElBQUksRUFBRSxFQUFFLEVBQUU7WUFDM0IsY0FBYyxFQUFFLElBQUk7WUFDcEIsV0FBVyxFQUNULEtBQUssQ0FBQyxXQUFXLElBQUkscUJBQXFCLElBQUksQ0FBQyxZQUFZLFlBQVk7WUFDekUsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7U0FDL0IsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVNLGdCQUFnQixDQUFDLE9BQXVCO1FBQzdDLE9BQU8sR0FBRyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUM7WUFDOUIsT0FBTztZQUNQLE9BQU8sRUFBRSxDQUFDLGtCQUFrQixDQUFDO1lBQzdCLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUM7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUtGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQWEsUUFBUyxTQUFRLFlBQVk7SUFDeEM7Ozs7O09BS0c7SUFDSSxNQUFNLENBQUMsZUFBZSxDQUMzQixLQUFnQixFQUNoQixFQUFVLEVBQ1YsV0FBbUI7UUFFbkIsTUFBTSxLQUFLLEdBQUcsb0JBQVEsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUNuRCxX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R0FtQkc7QUFDSCxNQUFhLGNBQWUsU0FBUSxnQ0FBZ0I7SUFLbEQsSUFBVyxPQUFPO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUM7SUFDL0IsQ0FBQztJQUNELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBRXpELElBQUksdUNBQXdCLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN0RSx1RkFBdUY7WUFDdkYsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUMxQixZQUFZLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZO1NBQzFDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBakJILHdDQWtCQzs7O0FBcUREOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFhLHFCQUFzQixTQUFRLGdDQUFnQjtJQUN6RCxJQUFXLE9BQU87UUFDaEIsT0FBTyxFQUFFLENBQUM7SUFDWixDQUFDO0lBQ0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUV4QixJQUFJLHdDQUF5QixDQUFDLHlCQUF5QixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDeEUsdUZBQXVGO1lBQ3ZGLEdBQUcsS0FBSztZQUNSLFlBQVksRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFlBQVk7U0FDMUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUFaSCxzREFhQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1ldmVudHMvbGliL2V2ZW50LWJ1cy50c1xuXG5pbXBvcnQge1xuICBjbG91ZHdhdGNoRXZlbnRCdXMsXG4gIGNsb3Vkd2F0Y2hFdmVudEJ1c1BvbGljeSxcbiAgY2xvdWR3YXRjaEV2ZW50UGVybWlzc2lvbixcbn0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IExhenksIFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXJuRm9ybWF0IH0gZnJvbSBcIi4uL2FyblwiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSwgQXdzQ29uc3RydWN0UHJvcHMgfSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vYXdzLXN0YWNrXCI7XG5pbXBvcnQgeyBBcmNoaXZlLCBCYXNlQXJjaGl2ZVByb3BzIH0gZnJvbSBcIi4vYXJjaGl2ZVwiO1xuLy8gaW1wb3J0IHsgSVF1ZXVlIH0gZnJvbSBcIi4vcXVldWVcIjtcbmltcG9ydCAqIGFzIGVuY3J5cHRpb24gZnJvbSBcIi4uL2VuY3J5cHRpb25cIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiLi4vaWFtXCI7XG5cbi8qKlxuICogT3V0cHV0cyB0byByZWdpc3RlciB3aXRoIHRoZSBHcmlkXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRCdXNPdXRwdXRzIHtcbiAgLyoqXG4gICAqIFRoZSBwaHlzaWNhbCBJRCBvZiB0aGlzIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgbmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoaXMgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBhcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBhcnRuZXIgZXZlbnQgc291cmNlIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZU5hbWU/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW50ZXJmYWNlIHdoaWNoIGFsbCBFdmVudEJ1cyBiYXNlZCBjbGFzc2VzIE1VU1QgaW1wbGVtZW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUV2ZW50QnVzIGV4dGVuZHMgaWFtLklBd3NDb25zdHJ1Y3RXaXRoUG9saWN5IHtcbiAgLyoqXG4gICAqIFRoZSBwaHlzaWNhbCBJRCBvZiB0aGlzIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1ldmVudHMtZXZlbnRidXMuaHRtbCNjZm4tZXZlbnRzLWV2ZW50YnVzLW5hbWVcbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50QnVzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoaXMgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWV2ZW50cy1ldmVudGJ1cy5odG1sI0Fybi1mbjo6Z2V0YXR0XG4gICAqL1xuICByZWFkb25seSBldmVudEJ1c0Fybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFydG5lciBldmVudCBzb3VyY2UgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBldmVudCBidXMgcmVzb3VyY2VcbiAgICpcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXJlc291cmNlLWV2ZW50cy1ldmVudGJ1cy5odG1sI2Nmbi1ldmVudHMtZXZlbnRidXMtZXZlbnRzb3VyY2VuYW1lXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhbiBFdmVudEJyaWRnZSBhcmNoaXZlIHRvIHNlbmQgZXZlbnRzIHRvLlxuICAgKiBXaGVuIHlvdSBjcmVhdGUgYW4gYXJjaGl2ZSwgaW5jb21pbmcgZXZlbnRzIG1pZ2h0IG5vdCBpbW1lZGlhdGVseSBzdGFydCBiZWluZyBzZW50IHRvIHRoZSBhcmNoaXZlLlxuICAgKiBBbGxvdyBhIHNob3J0IHBlcmlvZCBvZiB0aW1lIGZvciBjaGFuZ2VzIHRvIHRha2UgZWZmZWN0LlxuICAgKlxuICAgKiBAcGFyYW0gcHJvcHMgUHJvcGVydGllcyBvZiB0aGUgYXJjaGl2ZVxuICAgKi9cbiAgYXJjaGl2ZShpZDogc3RyaW5nLCBwcm9wczogQmFzZUFyY2hpdmVQcm9wcyk6IEFyY2hpdmU7XG5cbiAgLyoqXG4gICAqIEdyYW50cyBhbiBJQU0gUHJpbmNpcGFsIHRvIHNlbmQgY3VzdG9tIGV2ZW50cyB0byB0aGUgZXZlbnRCdXNcbiAgICogc28gdGhhdCB0aGV5IGNhbiBiZSBtYXRjaGVkIHRvIHJ1bGVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIChuby1vcCBpZiB1bmRlZmluZWQpXG4gICAqL1xuICBncmFudFB1dEV2ZW50c1RvKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50O1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gZGVmaW5lIGFuIGV2ZW50IGJ1c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2ZW50QnVzUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgYnVzIHlvdSBhcmUgY3JlYXRpbmdcbiAgICogTm90ZTogSWYgJ2V2ZW50U291cmNlTmFtZScgaXMgcGFzc2VkIGluLCB5b3UgY2Fubm90IHNldCB0aGlzXG4gICAqXG4gICAqIE5PVEU6IHRoZSBuYW1lcyBvZiBjdXN0b20gZXZlbnQgYnVzZXMgY2FuJ3QgY29udGFpbiB0aGUgJy8nIGNoYXJhY3RlclxuICAgKlxuICAgKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZXZlbnRzLWV2ZW50YnVzLmh0bWwjY2ZuLWV2ZW50cy1ldmVudGJ1cy1uYW1lXG4gICAqIEBkZWZhdWx0IC0gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgbmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRCdXNOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgcGFydG5lciBldmVudCBzb3VyY2UgdG8gYXNzb2NpYXRlIHdpdGggdGhpcyBldmVudCBidXMgcmVzb3VyY2VcbiAgICogTm90ZTogSWYgJ2V2ZW50QnVzTmFtZScgaXMgcGFzc2VkIGluLCB5b3UgY2Fubm90IHNldCB0aGlzXG4gICAqXG4gICAqIEBsaW5rIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1ldmVudHMtZXZlbnRidXMuaHRtbCNjZm4tZXZlbnRzLWV2ZW50YnVzLWV2ZW50c291cmNlbmFtZVxuICAgKiBAZGVmYXVsdCAtIG5vIHBhcnRuZXIgZXZlbnQgc291cmNlXG4gICAqL1xuICByZWFkb25seSBldmVudFNvdXJjZU5hbWU/OiBzdHJpbmc7XG5cbiAgLy8gLy8gVE9ETzogRGVhZC1sZXR0ZXIgcXVldWUgaXMgbm90IHN1cHBvcnRlZCBieSB0ZXJyYWZvcm0tcHJvdmlkZXItYXdzXG4gIC8vIC8qKlxuICAvLyAgKiBEZWFkLWxldHRlciBxdWV1ZSBmb3IgdGhlIGV2ZW50IGJ1c1xuICAvLyAgKlxuICAvLyAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ldmVudGJyaWRnZS9sYXRlc3QvdXNlcmd1aWRlL2ViLXJ1bGUtZXZlbnQtZGVsaXZlcnkuaHRtbCNlYi1ydWxlLWRscVxuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCAtIG5vIGRlYWQtbGV0dGVyIHF1ZXVlXG4gIC8vICAqL1xuICAvLyByZWFkb25seSBkZWFkTGV0dGVyUXVldWU/OiBJUXVldWU7XG5cbiAgLyoqXG4gICAqIFRoZSBjdXN0b21lciBtYW5hZ2VkIGtleSB0aGF0IGVuY3J5cHQgZXZlbnRzIG9uIHRoaXMgZXZlbnQgYnVzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFVzZSBhbiBBV1MgbWFuYWdlZCBrZXlcbiAgICovXG4gIHJlYWRvbmx5IGttc0tleT86IGVuY3J5cHRpb24uSUtleTtcblxuICAvLyAvLyBUT0RPOiBEZXNjcmlwdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRlcnJhZm9ybS1wcm92aWRlci1hd3NcbiAgLy8gLyoqXG4gIC8vICAqIFRoZSBldmVudCBidXMgZGVzY3JpcHRpb24uXG4gIC8vICAqXG4gIC8vICAqIFRoZSBkZXNjcmlwdGlvbiBjYW4gYmUgdXAgdG8gNTEyIGNoYXJhY3RlcnMgbG9uZy5cbiAgLy8gICpcbiAgLy8gICogQHNlZSBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1ldmVudHMtZXZlbnRidXMuaHRtbCNjZm4tZXZlbnRzLWV2ZW50YnVzLWRlc2NyaXB0aW9uXG4gIC8vICAqXG4gIC8vICAqIEBkZWZhdWx0IC0gbm8gZGVzY3JpcHRpb25cbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIEludGVyZmFjZSB3aXRoIHByb3BlcnRpZXMgbmVjZXNzYXJ5IHRvIGltcG9ydCBhIHJldXNhYmxlIEV2ZW50QnVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRCdXNBdHRyaWJ1dGVzIHtcbiAgLyoqXG4gICAqIFRoZSBwaHlzaWNhbCBJRCBvZiB0aGlzIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKlxuICAgKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZXZlbnRzLWV2ZW50YnVzLmh0bWwjY2ZuLWV2ZW50cy1ldmVudGJ1cy1uYW1lXG4gICAqL1xuICByZWFkb25seSBldmVudEJ1c05hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGlzIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKlxuICAgKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZXZlbnRzLWV2ZW50YnVzLmh0bWwjQXJuLWZuOjpnZXRhdHRcbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50QnVzQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBwYXJ0bmVyIGV2ZW50IHNvdXJjZSB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKlxuICAgKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcmVzb3VyY2UtZXZlbnRzLWV2ZW50YnVzLmh0bWwjY2ZuLWV2ZW50cy1ldmVudGJ1cy1ldmVudHNvdXJjZW5hbWVcbiAgICogQGRlZmF1bHQgLSBubyBwYXJ0bmVyIGV2ZW50IHNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lPzogc3RyaW5nO1xufVxuXG5hYnN0cmFjdCBjbGFzcyBFdmVudEJ1c0Jhc2UgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSUV2ZW50QnVzIHtcbiAgLyoqXG4gICAqIFRoZSBwaHlzaWNhbCBJRCBvZiB0aGlzIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGV2ZW50QnVzTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBldmVudCBidXMsIHN1Y2ggYXM6XG4gICAqIGFybjphd3M6ZXZlbnRzOnVzLWVhc3QtMjoxMjM0NTY3ODkwMTI6ZXZlbnQtYnVzL2F3cy5wYXJ0bmVyL1BhcnRuZXJOYW1lL2FjY3QxL3JlcG8xLlxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGV2ZW50QnVzQXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBwYXJ0bmVyIGV2ZW50IHNvdXJjZVxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGV2ZW50U291cmNlTmFtZT86IHN0cmluZztcblxuICBwdWJsaWMgYXJjaGl2ZShpZDogc3RyaW5nLCBwcm9wczogQmFzZUFyY2hpdmVQcm9wcyk6IEFyY2hpdmUge1xuICAgIHJldHVybiBuZXcgQXJjaGl2ZSh0aGlzLCBpZCwge1xuICAgICAgc291cmNlRXZlbnRCdXM6IHRoaXMsXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgcHJvcHMuZGVzY3JpcHRpb24gfHwgYEV2ZW50IEFyY2hpdmUgZm9yICR7dGhpcy5ldmVudEJ1c05hbWV9IEV2ZW50IEJ1c2AsXG4gICAgICBldmVudFBhdHRlcm46IHByb3BzLmV2ZW50UGF0dGVybixcbiAgICAgIHJldGVudGlvbjogcHJvcHMucmV0ZW50aW9uLFxuICAgICAgYXJjaGl2ZU5hbWU6IHByb3BzLmFyY2hpdmVOYW1lLFxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdyYW50UHV0RXZlbnRzVG8oZ3JhbnRlZTogaWFtLklHcmFudGFibGUpOiBpYW0uR3JhbnQge1xuICAgIHJldHVybiBpYW0uR3JhbnQuYWRkVG9QcmluY2lwYWwoe1xuICAgICAgZ3JhbnRlZSxcbiAgICAgIGFjdGlvbnM6IFtcImV2ZW50czpQdXRFdmVudHNcIl0sXG4gICAgICByZXNvdXJjZUFybnM6IFt0aGlzLmV2ZW50QnVzQXJuXSxcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBhZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIHN0YXRlbWVudDogaWFtLlBvbGljeVN0YXRlbWVudCxcbiAgKTogaWFtLkFkZFRvUmVzb3VyY2VQb2xpY3lSZXN1bHQ7XG59XG5cbi8qKlxuICogRGVmaW5lIGFuIEV2ZW50QnJpZGdlIEV2ZW50QnVzXG4gKlxuICogQHJlc291cmNlIGF3c19jbG91ZHdhdGNoX2V2ZW50X2J1c1xuICovXG5leHBvcnQgY2xhc3MgRXZlbnRCdXMgZXh0ZW5kcyBFdmVudEJ1c0Jhc2Uge1xuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKiBAcGFyYW0gc2NvcGUgUGFyZW50IGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgQ29uc3RydWN0IElEXG4gICAqIEBwYXJhbSBldmVudEJ1c0FybiBBUk4gb2YgaW1wb3J0ZWQgZXZlbnQgYnVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21FdmVudEJ1c0FybihcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZXZlbnRCdXNBcm46IHN0cmluZyxcbiAgKTogSUV2ZW50QnVzIHtcbiAgICBjb25zdCBwYXJ0cyA9IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHNjb3BlKS5zcGxpdEFybihcbiAgICAgIGV2ZW50QnVzQXJuLFxuICAgICAgQXJuRm9ybWF0LlNMQVNIX1JFU09VUkNFX05BTUUsXG4gICAgKTtcblxuICAgIHJldHVybiBuZXcgSW1wb3J0ZWRFdmVudEJ1cyhzY29wZSwgaWQsIHtcbiAgICAgIGV2ZW50QnVzQXJuOiBldmVudEJ1c0FybixcbiAgICAgIGV2ZW50QnVzTmFtZTogcGFydHMucmVzb3VyY2VOYW1lIHx8IFwiXCIsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0IGFuIGV4aXN0aW5nIGV2ZW50IGJ1cyByZXNvdXJjZVxuICAgKiBAcGFyYW0gc2NvcGUgUGFyZW50IGNvbnN0cnVjdFxuICAgKiBAcGFyYW0gaWQgQ29uc3RydWN0IElEXG4gICAqIEBwYXJhbSBldmVudEJ1c05hbWUgTmFtZSBvZiBpbXBvcnRlZCBldmVudCBidXNcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUV2ZW50QnVzTmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgZXZlbnRCdXNOYW1lOiBzdHJpbmcsXG4gICk6IElFdmVudEJ1cyB7XG4gICAgY29uc3QgZXZlbnRCdXNBcm4gPSBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChzY29wZSkuZm9ybWF0QXJuKHtcbiAgICAgIHJlc291cmNlOiBcImV2ZW50LWJ1c1wiLFxuICAgICAgc2VydmljZTogXCJldmVudHNcIixcbiAgICAgIHJlc291cmNlTmFtZTogZXZlbnRCdXNOYW1lLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIEV2ZW50QnVzLmZyb21FdmVudEJ1c0F0dHJpYnV0ZXMoc2NvcGUsIGlkLCB7XG4gICAgICBldmVudEJ1c05hbWU6IGV2ZW50QnVzTmFtZSxcbiAgICAgIGV2ZW50QnVzQXJuOiBldmVudEJ1c0FybixcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnQgYW4gZXhpc3RpbmcgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqIEBwYXJhbSBzY29wZSBQYXJlbnQgY29uc3RydWN0XG4gICAqIEBwYXJhbSBpZCBDb25zdHJ1Y3QgSURcbiAgICogQHBhcmFtIGF0dHJzIEltcG9ydGVkIGV2ZW50IGJ1cyBwcm9wZXJ0aWVzXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21FdmVudEJ1c0F0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGF0dHJzOiBFdmVudEJ1c0F0dHJpYnV0ZXMsXG4gICk6IElFdmVudEJ1cyB7XG4gICAgcmV0dXJuIG5ldyBJbXBvcnRlZEV2ZW50QnVzKHNjb3BlLCBpZCwgYXR0cnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcm1pdHMgYW4gSUFNIFByaW5jaXBhbCB0byBzZW5kIGN1c3RvbSBldmVudHMgdG8gRXZlbnRCcmlkZ2VcbiAgICogc28gdGhhdCB0aGV5IGNhbiBiZSBtYXRjaGVkIHRvIHJ1bGVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIChuby1vcCBpZiB1bmRlZmluZWQpXG4gICAqIEBkZXByZWNhdGVkIHVzZSBncmFudEFsbFB1dEV2ZW50cyBpbnN0ZWFkXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdyYW50UHV0RXZlbnRzKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICAvLyBJdCdzIGN1cnJlbnRseSBub3QgcG9zc2libGUgdG8gcmVzdHJpY3QgUHV0RXZlbnRzIHRvIHNwZWNpZmljIHJlc291cmNlcy5cbiAgICAvLyBTZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2V2ZW50YnJpZGdlL2xhdGVzdC91c2VyZ3VpZGUvcGVybWlzc2lvbnMtcmVmZXJlbmNlLWV2ZW50YnJpZGdlLmh0bWxcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiBbXCJldmVudHM6UHV0RXZlbnRzXCJdLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbXCIqXCJdLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFBlcm1pdHMgYW4gSUFNIFByaW5jaXBhbCB0byBzZW5kIGN1c3RvbSBldmVudHMgdG8gRXZlbnRCcmlkZ2VcbiAgICogc28gdGhhdCB0aGV5IGNhbiBiZSBtYXRjaGVkIHRvIHJ1bGVzLlxuICAgKlxuICAgKiBAcGFyYW0gZ3JhbnRlZSBUaGUgcHJpbmNpcGFsIChuby1vcCBpZiB1bmRlZmluZWQpXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdyYW50QWxsUHV0RXZlbnRzKGdyYW50ZWU6IGlhbS5JR3JhbnRhYmxlKTogaWFtLkdyYW50IHtcbiAgICByZXR1cm4gaWFtLkdyYW50LmFkZFRvUHJpbmNpcGFsKHtcbiAgICAgIGdyYW50ZWUsXG4gICAgICBhY3Rpb25zOiBbXCJldmVudHM6UHV0RXZlbnRzXCJdLFxuICAgICAgcmVzb3VyY2VBcm5zOiBbXCIqXCJdLFxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZXZlbnRCdXNQcm9wcyhcbiAgICBkZWZhdWx0RXZlbnRCdXNOYW1lOiBzdHJpbmcsXG4gICAgcHJvcHM6IEV2ZW50QnVzUHJvcHMgPSB7fSxcbiAgKSB7XG4gICAgY29uc3QgeyBldmVudEJ1c05hbWUsIGV2ZW50U291cmNlTmFtZSB9ID0gcHJvcHM7XG4gICAgY29uc3QgZXZlbnRCdXNOYW1lUmVnZXggPSAvXltcXC9cXC5cXC1fQS1aYS16MC05XXsxLDI1Nn0kLztcblxuICAgIGlmIChldmVudEJ1c05hbWUgIT09IHVuZGVmaW5lZCAmJiBldmVudFNvdXJjZU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIidldmVudEJ1c05hbWUnIGFuZCAnZXZlbnRTb3VyY2VOYW1lJyBjYW5ub3QgYm90aCBiZSBwcm92aWRlZFwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoZXZlbnRCdXNOYW1lICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKGV2ZW50QnVzTmFtZSkpIHtcbiAgICAgICAgaWYgKGV2ZW50QnVzTmFtZSA9PT0gXCJkZWZhdWx0XCIpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCInZXZlbnRCdXNOYW1lJyBtdXN0IG5vdCBiZSAnZGVmYXVsdCdcIik7XG4gICAgICAgIH0gZWxzZSBpZiAoZXZlbnRCdXNOYW1lLmluZGV4T2YoXCIvXCIpID4gLTEpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCInZXZlbnRCdXNOYW1lJyBtdXN0IG5vdCBjb250YWluICcvJ1wiKTtcbiAgICAgICAgfSBlbHNlIGlmICghZXZlbnRCdXNOYW1lUmVnZXgudGVzdChldmVudEJ1c05hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnZXZlbnRCdXNOYW1lJyBtdXN0IHNhdGlzZnk6ICR7ZXZlbnRCdXNOYW1lUmVnZXh9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7IGV2ZW50QnVzTmFtZSB9O1xuICAgIH1cblxuICAgIGlmIChldmVudFNvdXJjZU5hbWUgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKCFUb2tlbi5pc1VucmVzb2x2ZWQoZXZlbnRTb3VyY2VOYW1lKSkge1xuICAgICAgICAvLyBFeDogYXdzLnBhcnRuZXIvUGFydG5lck5hbWUvYWNjdDEvcmVwbzFcbiAgICAgICAgY29uc3QgZXZlbnRTb3VyY2VOYW1lUmVnZXggPSAvXmF3c1xcLnBhcnRuZXIoXFwvW1xcLlxcLV9BLVphLXowLTldKyl7Mix9JC87XG4gICAgICAgIGlmICghZXZlbnRTb3VyY2VOYW1lUmVnZXgudGVzdChldmVudFNvdXJjZU5hbWUpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYCdldmVudFNvdXJjZU5hbWUnIG11c3Qgc2F0aXNmeTogJHtldmVudFNvdXJjZU5hbWVSZWdleH1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH0gZWxzZSBpZiAoIWV2ZW50QnVzTmFtZVJlZ2V4LnRlc3QoZXZlbnRTb3VyY2VOYW1lKSkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGAnZXZlbnRTb3VyY2VOYW1lJyBtdXN0IHNhdGlzZnk6ICR7ZXZlbnRCdXNOYW1lUmVnZXh9YCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4geyBldmVudEJ1c05hbWU6IGV2ZW50U291cmNlTmFtZSwgZXZlbnRTb3VyY2VOYW1lIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHsgZXZlbnRCdXNOYW1lOiBkZWZhdWx0RXZlbnRCdXNOYW1lIH07XG4gIH1cblxuICBwdWJsaWMgcmVhZG9ubHkgcmVzb3VyY2U6IGNsb3Vkd2F0Y2hFdmVudEJ1cy5DbG91ZHdhdGNoRXZlbnRCdXM7XG5cbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50QnVzT3V0cHV0czogRXZlbnRCdXNPdXRwdXRzO1xuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCdXNPdXRwdXRzO1xuICB9XG5cbiAgcHJpdmF0ZSBwb2xpY3k/OiBFdmVudEJ1c1BvbGljeTtcblxuICAvKipcbiAgICogVGhlIHBoeXNpY2FsIElEIG9mIHRoaXMgZXZlbnQgYnVzIHJlc291cmNlXG4gICAqL1xuICBwdWJsaWMgZ2V0IGV2ZW50QnVzTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlc291cmNlLm5hbWU7XG4gIH1cblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgZXZlbnQgYnVzLCBzdWNoIGFzOlxuICAgKiBhcm46YXdzOmV2ZW50czp1cy1lYXN0LTI6MTIzNDU2Nzg5MDEyOmV2ZW50LWJ1cy9hd3MucGFydG5lci9QYXJ0bmVyTmFtZS9hY2N0MS9yZXBvMS5cbiAgICovXG4gIHB1YmxpYyBnZXQgZXZlbnRCdXNBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5yZXNvdXJjZS5hcm47XG4gIH1cblxuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHBhcnRuZXIgZXZlbnQgc291cmNlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lPzogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogRXZlbnRCdXNQcm9wcykge1xuICAgIGNvbnN0IHsgZXZlbnRCdXNOYW1lLCBldmVudFNvdXJjZU5hbWUgfSA9IEV2ZW50QnVzLmV2ZW50QnVzUHJvcHMoXG4gICAgICAvLyBUT0RPKHZpbmNlbnQpOiBGaWd1cmUgb3V0IGhvdyB0aGlzIHdvcmtzLi4uXG4gICAgICBMYXp5LnN0cmluZ1ZhbHVlKHsgcHJvZHVjZTogKCkgPT4gQXdzU3RhY2sudW5pcXVlSWQodGhpcykgfSksXG4gICAgICBwcm9wcyxcbiAgICApO1xuXG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICAvLyBpZiAoXG4gICAgLy8gICBwcm9wcz8uZGVzY3JpcHRpb24gJiZcbiAgICAvLyAgICFUb2tlbi5pc1VucmVzb2x2ZWQocHJvcHMuZGVzY3JpcHRpb24pICYmXG4gICAgLy8gICBwcm9wcy5kZXNjcmlwdGlvbi5sZW5ndGggPiA1MTJcbiAgICAvLyApIHtcbiAgICAvLyAgIHRocm93IG5ldyBFcnJvcihcbiAgICAvLyAgICAgYGRlc2NyaXB0aW9uIG11c3QgYmUgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIDUxMiBjaGFyYWN0ZXJzLCBnb3QgJHtwcm9wcy5kZXNjcmlwdGlvbi5sZW5ndGh9YCxcbiAgICAvLyAgICk7XG4gICAgLy8gfVxuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZHdhdGNoRXZlbnRCdXMuQ2xvdWR3YXRjaEV2ZW50QnVzKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgbmFtZTogZXZlbnRCdXNOYW1lLFxuICAgICAgICBldmVudFNvdXJjZU5hbWUsXG4gICAgICAgIGttc0tleUlkZW50aWZpZXI6IHByb3BzPy5rbXNLZXk/LmtleUFybixcbiAgICAgICAgLy8gZGVzY3JpcHRpb246IHByb3BzPy5kZXNjcmlwdGlvbiwgLy8gRGVzY3JpcHRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0ZXJyYWZvcm0tcHJvdmlkZXItYXdzXG4gICAgICAgIC8vIFRPRE86IE1pc3NpbmcgaW4gdGVycmFmb3JtLXByb3ZpZGVyLWF3c1xuICAgICAgICAvLyByZWY6XG4gICAgICAgIC8vICAtIGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLXByb3ZpZGVyLWF3cy9pc3N1ZXMvNDE1NjNcbiAgICAgICAgLy8gIC0gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2Jsb2IvdjUuODguMC9pbnRlcm5hbC9zZXJ2aWNlL2V2ZW50cy9idXMuZ28jTDc5XG4gICAgICAgIC8vICAtIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ldmVudGJyaWRnZS9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9DcmVhdGVFdmVudEJ1cy5odG1sI0FQSV9DcmVhdGVFdmVudEJ1c19SZXF1ZXN0U3ludGF4XG4gICAgICAgIC8vIGRlYWRsZXR0ZXJfY29uZmlnOiBwcm9wcz8uZGVhZExldHRlclF1ZXVlXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvKipcbiAgICAgKiBBbGxvdyBFdmVudEJyaWRnZSB0byB1c2UgY3VzdG9tZXIgbWFuYWdlZCBrZXlcbiAgICAgKlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2V2ZW50YnJpZGdlL2xhdGVzdC91c2VyZ3VpZGUvZWItZW5jcnlwdGlvbi1rZXktcG9saWN5Lmh0bWwjZWItZW5jcnlwdGlvbi1rZXktcG9saWN5LWJ1c1xuICAgICAqL1xuICAgIGlmIChwcm9wcz8ua21zS2V5KSB7XG4gICAgICBwcm9wcz8ua21zS2V5LmFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgICAgIG5ldyBpYW0uUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICAgICAgYWN0aW9uczogW1wia21zOkRlY3J5cHRcIiwgXCJrbXM6R2VuZXJhdGVEYXRhS2V5XCIsIFwia21zOkRlc2NyaWJlS2V5XCJdLFxuICAgICAgICAgIHByaW5jaXBhbHM6IFtuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoXCJldmVudHMuYW1hem9uYXdzLmNvbVwiKV0sXG4gICAgICAgICAgY29uZGl0aW9uOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRlc3Q6IFwiU3RyaW5nRXF1YWxzXCIsXG4gICAgICAgICAgICAgIHZhcmlhYmxlOiBcImF3czpTb3VyY2VBY2NvdW50XCIsXG4gICAgICAgICAgICAgIHZhbHVlczogW3RoaXMuc3RhY2suYWNjb3VudF0sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICB0ZXN0OiBcIlN0cmluZ0VxdWFsc1wiLFxuICAgICAgICAgICAgICB2YXJpYWJsZTogXCJhd3M6U291cmNlQXJuXCIsXG4gICAgICAgICAgICAgIHZhbHVlczogW1xuICAgICAgICAgICAgICAgIEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHRoaXMpLmZvcm1hdEFybih7XG4gICAgICAgICAgICAgICAgICBzZXJ2aWNlOiBcImV2ZW50c1wiLFxuICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6IFwiZXZlbnQtYnVzXCIsXG4gICAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU6IGV2ZW50QnVzTmFtZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIHRlc3Q6IFwiU3RyaW5nRXF1YWxzXCIsXG4gICAgICAgICAgICAgIHZhcmlhYmxlOiBcImttczpFbmNyeXB0aW9uQ29udGV4dDphd3M6ZXZlbnRzOmV2ZW50LWJ1czphcm5cIixcbiAgICAgICAgICAgICAgdmFsdWVzOiBbXG4gICAgICAgICAgICAgICAgQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgICAgICAgICAgICAgIHNlcnZpY2U6IFwiZXZlbnRzXCIsXG4gICAgICAgICAgICAgICAgICByZXNvdXJjZTogXCJldmVudC1idXNcIixcbiAgICAgICAgICAgICAgICAgIHJlc291cmNlTmFtZTogZXZlbnRCdXNOYW1lLFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICBdLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdGhpcy5ldmVudFNvdXJjZU5hbWUgPSB0aGlzLnJlc291cmNlLmV2ZW50U291cmNlTmFtZTtcbiAgICB0aGlzLmV2ZW50QnVzT3V0cHV0cyA9IHtcbiAgICAgIG5hbWU6IHRoaXMuZXZlbnRCdXNOYW1lLFxuICAgICAgYXJuOiB0aGlzLmV2ZW50QnVzQXJuLFxuICAgICAgZXZlbnRTb3VyY2VOYW1lOiB0aGlzLmV2ZW50U291cmNlTmFtZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSBzdGF0ZW1lbnQgdG8gdGhlIElBTSByZXNvdXJjZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZXZlbnQgYnVzLlxuICAgKi9cbiAgcHVibGljIGFkZFRvUmVzb3VyY2VQb2xpY3koXG4gICAgc3RhdGVtZW50OiBpYW0uUG9saWN5U3RhdGVtZW50LFxuICApOiBpYW0uQWRkVG9SZXNvdXJjZVBvbGljeVJlc3VsdCB7XG4gICAgaWYgKCF0aGlzLnBvbGljeSkge1xuICAgICAgdGhpcy5wb2xpY3kgPSBuZXcgRXZlbnRCdXNQb2xpY3kodGhpcywgXCJQb2xpY3lcIiwgeyBldmVudEJ1czogdGhpcyB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wb2xpY3kpIHtcbiAgICAgIHRoaXMucG9saWN5LmRvY3VtZW50LmFkZFN0YXRlbWVudHMoc3RhdGVtZW50KTtcbiAgICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiB0cnVlLCBwb2xpY3lEZXBlbmRhYmxlOiB0aGlzLnBvbGljeSB9O1xuICAgIH1cblxuICAgIHJldHVybiB7IHN0YXRlbWVudEFkZGVkOiBmYWxzZSB9O1xuICB9XG59XG5cbmNsYXNzIEltcG9ydGVkRXZlbnRCdXMgZXh0ZW5kcyBFdmVudEJ1c0Jhc2Uge1xuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRCdXNBcm46IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGV2ZW50QnVzTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRTb3VyY2VOYW1lPzogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZXZlbnRCdXNPdXRwdXRzOiBFdmVudEJ1c091dHB1dHM7XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpIHtcbiAgICByZXR1cm4gdGhpcy5ldmVudEJ1c091dHB1dHM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBhdHRyczogRXZlbnRCdXNBdHRyaWJ1dGVzKSB7XG4gICAgY29uc3QgYXJuUGFydHMgPSBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChzY29wZSkuc3BsaXRBcm4oXG4gICAgICBhdHRycy5ldmVudEJ1c0FybixcbiAgICAgIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICk7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBhY2NvdW50OiBhcm5QYXJ0cy5hY2NvdW50LFxuICAgICAgcmVnaW9uOiBhcm5QYXJ0cy5yZWdpb24sXG4gICAgfSk7XG5cbiAgICB0aGlzLmV2ZW50QnVzQXJuID0gYXR0cnMuZXZlbnRCdXNBcm47XG4gICAgdGhpcy5ldmVudEJ1c05hbWUgPSBhdHRycy5ldmVudEJ1c05hbWU7XG4gICAgdGhpcy5ldmVudFNvdXJjZU5hbWUgPSBhdHRycy5ldmVudFNvdXJjZU5hbWU7XG4gICAgdGhpcy5ldmVudEJ1c091dHB1dHMgPSB7XG4gICAgICBuYW1lOiB0aGlzLmV2ZW50QnVzTmFtZSxcbiAgICAgIGFybjogdGhpcy5ldmVudEJ1c0FybixcbiAgICAgIGV2ZW50U291cmNlTmFtZTogdGhpcy5ldmVudFNvdXJjZU5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRUb1Jlc291cmNlUG9saWN5KFxuICAgIF9zdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQsXG4gICk6IGlhbS5BZGRUb1Jlc291cmNlUG9saWN5UmVzdWx0IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICBbXG4gICAgICAgIFwiQ2Fubm90IGFkZCBhIHN0YXRlbWVudCB0byBhbiBpbXBvcnRlZCBFdmVudEJ1cy4gWW91IG1heSB1c2UgYEV2ZW50QnJpZGdlUGVybWlzc2lvbmAgaW5zdGVhZC5cIixcbiAgICAgICAgXCJJZiB0aGUgRXZlbnRCdXMgYWxyZWFkeSBoYXMgYSBwb2xpY3kgYXR0YWNoZWQsIHRoZSBwZXJtaXNzaW9ucyB3aWxsIGJlIG92ZXJ3cml0dGVuLlwiLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICk7XG4gIH1cbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGFzc29jaWF0ZSBFdmVudCBCdXNlcyB3aXRoIGEgcG9saWN5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRCdXNQb2xpY3lQcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBldmVudCBidXMgdG8gd2hpY2ggdGhlIHBvbGljeSBhcHBsaWVzXG4gICAqL1xuICByZWFkb25seSBldmVudEJ1czogSUV2ZW50QnVzO1xufVxuXG4vKipcbiAqIFRoZSBwb2xpY3kgZm9yIGFuIEV2ZW50IEJ1c1xuICpcbiAqIFBvbGljaWVzIGRlZmluZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIG9uIHRoaXMgcmVzb3VyY2UuXG4gKlxuICogWW91IGFsbW9zdCBuZXZlciBuZWVkIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdCBkaXJlY3RseS5cbiAqXG4gKiBUaGUgRXZlbnRCdXNQb2xpY3kgcmVzb3VyY2UgKGBhd3NfY2xvdWR3YXRjaF9ldmVudF9idXNfcG9saWN5YClcbiAqIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBFdmVudEJyaWRnZVBlcm1pc3Npb24gcmVzb3VyY2UgKGBhd3NfY2xvdWR3YXRjaF9ldmVudF9wZXJtaXNzaW9uYClcbiAqIGFuZCB3aWxsIG92ZXJ3cml0ZSBwZXJtaXNzaW9ucy5cbiAqXG4gKiBBbGwgQVdTIHJlc291cmNlcyB0aGF0IHN1cHBvcnQgcmVzb3VyY2UgcG9saWNpZXMgaGF2ZSBhIG1ldGhvZCBjYWxsZWRcbiAqIGBhZGRUb1Jlc291cmNlUG9saWN5KClgLCB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgbmV3IHJlc291cmNlXG4gKiBwb2xpY3kgaWYgb25lIGRvZXNuJ3QgZXhpc3QgeWV0LCBvdGhlcndpc2UgaXQgd2lsbCBhZGQgdG8gdGhlIGV4aXN0aW5nXG4gKiBwb2xpY3kuXG4gKlxuICogUHJlZmVyIHRvIHVzZSBgYWRkVG9SZXNvdXJjZVBvbGljeSgpYCBpbnN0ZWFkLlxuICpcbiAqIEByZXNvdXJjZSBhd3NfY2xvdWR3YXRjaF9ldmVudF9idXNfcG9saWN5XG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudEJ1c1BvbGljeSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2Uge1xuICAvKipcbiAgICogVGhlIElBTSBwb2xpY3kgZG9jdW1lbnQgZm9yIHRoaXMgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50OiBpYW0uUG9saWN5RG9jdW1lbnQ7XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5kb2N1bWVudC5vdXRwdXRzO1xuICB9XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmVudEJ1c1BvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG4gICAgdGhpcy5kb2N1bWVudCA9IG5ldyBpYW0uUG9saWN5RG9jdW1lbnQodGhpcywgXCJEb2N1bWVudFwiKTtcblxuICAgIG5ldyBjbG91ZHdhdGNoRXZlbnRCdXNQb2xpY3kuQ2xvdWR3YXRjaEV2ZW50QnVzUG9saWN5KHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL3B1bGwvMTY4NzQjZGlzY3Vzc2lvbl9yNjU2MDI0ODMwXG4gICAgICBwb2xpY3k6IHRoaXMuZG9jdW1lbnQuanNvbixcbiAgICAgIGV2ZW50QnVzTmFtZTogcHJvcHMuZXZlbnRCdXMuZXZlbnRCdXNOYW1lLFxuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogUHJvcGVydGllcyB0byBhZGQgcGVybWlzc2lvbnMgdG8gYW4gRXZlbnQgQnVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRCcmlkZ2VQZXJtaXNzaW9uUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8vIFRPRE86IEF1dG8gZ2VuZXJhdGUgdGhpcyB1c2luZyBzdHJ1Y3QgYnVpbGRlciB0byBrZWVwIGRvY3MgdXBkYXRlZD9cbiAgLyoqXG4gICAqIFRoZSBldmVudCBidXMgdG8gd2hpY2ggdGhlIHBvbGljeSBhcHBsaWVzXG4gICAqL1xuICByZWFkb25seSBldmVudEJ1czogSUV2ZW50QnVzO1xuICAvKipcbiAgICogQW4gaWRlbnRpZmllciBzdHJpbmcgZm9yIHRoZSBleHRlcm5hbCBhY2NvdW50IHRoYXRcbiAgICogeW91IGFyZSBncmFudGluZyBwZXJtaXNzaW9ucyB0by5cbiAgICpcbiAgICogRG9jcyBhdCBUZXJyYWZvcm0gUmVnaXN0cnk6IHtAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjY4LjAvZG9jcy9yZXNvdXJjZXMvY2xvdWR3YXRjaF9ldmVudF9wZXJtaXNzaW9uI3N0YXRlbWVudF9pZCBDbG91ZHdhdGNoRXZlbnRQZXJtaXNzaW9uI3N0YXRlbWVudF9pZH1cbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlbWVudElkOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBUaGUgYWN0aW9uIHRoYXQgeW91IGFyZSBlbmFibGluZyB0aGUgb3RoZXIgYWNjb3VudCB0byBwZXJmb3JtLiBEZWZhdWx0cyB0byBldmVudHM6UHV0RXZlbnRzXG4gICAqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42OC4wL2RvY3MvcmVzb3VyY2VzL2Nsb3Vkd2F0Y2hfZXZlbnRfcGVybWlzc2lvbiNhY3Rpb24gQ2xvdWR3YXRjaEV2ZW50UGVybWlzc2lvbiNhY3Rpb259XG4gICAqIEBkZWZhdWx0IFwiZXZlbnRzOlB1dEV2ZW50c1wiXG4gICAqL1xuICByZWFkb25seSBhY3Rpb24/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuNjguMC9kb2NzL3Jlc291cmNlcy9jbG91ZHdhdGNoX2V2ZW50X3Blcm1pc3Npb24jZXZlbnRfYnVzX25hbWUgQ2xvdWR3YXRjaEV2ZW50UGVybWlzc2lvbiNldmVudF9idXNfbmFtZX1cbiAgICovXG4gIHJlYWRvbmx5IGV2ZW50QnVzTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIERvY3MgYXQgVGVycmFmb3JtIFJlZ2lzdHJ5OiB7QGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42OC4wL2RvY3MvcmVzb3VyY2VzL2Nsb3Vkd2F0Y2hfZXZlbnRfcGVybWlzc2lvbiNpZCBDbG91ZHdhdGNoRXZlbnRQZXJtaXNzaW9uI2lkfVxuICAgKlxuICAgKiBQbGVhc2UgYmUgYXdhcmUgdGhhdCB0aGUgaWQgZmllbGQgaXMgYXV0b21hdGljYWxseSBhZGRlZCB0byBhbGwgcmVzb3VyY2VzIGluIFRlcnJhZm9ybSBwcm92aWRlcnMgdXNpbmcgYSBUZXJyYWZvcm0gcHJvdmlkZXIgU0RLIHZlcnNpb24gYmVsb3cgMi5cbiAgICogSWYgeW91IGV4cGVyaWVuY2UgcHJvYmxlbXMgc2V0dGluZyB0aGlzIHZhbHVlIGl0IG1pZ2h0IG5vdCBiZSBzZXR0YWJsZS4gUGxlYXNlIHRha2UgYSBsb29rIGF0IHRoZSBwcm92aWRlciBkb2N1bWVudGF0aW9uIHRvIGVuc3VyZSBpdCBzaG91bGQgYmUgc2V0dGFibGUuXG4gICAqL1xuICByZWFkb25seSBpZD86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSAxMi1kaWdpdCBBV1MgYWNjb3VudCBJRCB0aGF0IHlvdSBhcmUgcGVybWl0dGluZyB0byBwdXQgZXZlbnRzIHRvIHlvdXIgZGVmYXVsdCBldmVudCBidXMuXG4gICAqIFNwZWNpZnkgKiB0byBwZXJtaXQgYW55IGFjY291bnQgdG8gcHV0IGV2ZW50cyB0byB5b3VyIGRlZmF1bHQgZXZlbnQgYnVzLCBvcHRpb25hbGx5IGxpbWl0ZWRcbiAgICogYnkgY29uZGl0aW9uLlxuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuNjguMC9kb2NzL3Jlc291cmNlcy9jbG91ZHdhdGNoX2V2ZW50X3Blcm1pc3Npb24jcHJpbmNpcGFsIENsb3Vkd2F0Y2hFdmVudFBlcm1pc3Npb24jcHJpbmNpcGFsfVxuICAgKi9cbiAgcmVhZG9ubHkgcHJpbmNpcGFsOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBDb25maWd1cmF0aW9uIGJsb2NrIHRvIGxpbWl0IHRoZSBldmVudCBidXMgcGVybWlzc2lvbnMgeW91IGFyZSBncmFudGluZyB0byBvbmx5IGFjY291bnRzIHRoYXRcbiAgICogZnVsZmlsbCB0aGUgY29uZGl0aW9uLmNvbmRpdGlvbiBibG9ja1xuICAgKlxuICAgKiBEb2NzIGF0IFRlcnJhZm9ybSBSZWdpc3RyeToge0BsaW5rIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuNjguMC9kb2NzL3Jlc291cmNlcy9jbG91ZHdhdGNoX2V2ZW50X3Blcm1pc3Npb24jY29uZGl0aW9uIENsb3Vkd2F0Y2hFdmVudFBlcm1pc3Npb24jY29uZGl0aW9ufVxuICAgKi9cbiAgcmVhZG9ubHkgY29uZGl0aW9uPzogY2xvdWR3YXRjaEV2ZW50UGVybWlzc2lvbi5DbG91ZHdhdGNoRXZlbnRQZXJtaXNzaW9uQ29uZGl0aW9uO1xufVxuXG4vKipcbiAqIEEgc2luZ2xlIHBlcm1pc3Npb24gZm9yIGFuIEV2ZW50IEJ1c1xuICpcbiAqIEFsbCBBV1MgcmVzb3VyY2VzIHRoYXQgc3VwcG9ydCByZXNvdXJjZSBwb2xpY2llcyBoYXZlIGEgbWV0aG9kIGNhbGxlZFxuICogYGFkZFRvUmVzb3VyY2VQb2xpY3koKWAsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgYSBuZXcgcmVzb3VyY2VcbiAqIHBvbGljeSBpZiBvbmUgZG9lc24ndCBleGlzdCB5ZXQsIG90aGVyd2lzZSBpdCB3aWxsIGFkZCB0byB0aGUgZXhpc3RpbmdcbiAqIHBvbGljeS5cbiAqXG4gKiBJZiBgYWRkVG9SZXNvdXJjZVBvbGljeSgpYCB3YXMgdXNlZCBvbiB0aGUgZXZlbnQgYnVzLCBUaGUgRXZlbnRCdXNQb2xpY3kgcmVzb3VyY2VcbiAqIChgYXdzX2Nsb3Vkd2F0Y2hfZXZlbnRfYnVzX3BvbGljeWApIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoaXMgcmVzb3VyY2UgYW5kXG4gKiB3aWxsIG92ZXJ3cml0ZSBwZXJtaXNzaW9ucy5cbiAqXG4gKiBAcmVzb3VyY2UgYXdzX2Nsb3Vkd2F0Y2hfZXZlbnRfcGVybWlzc2lvblxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRCcmlkZ2VQZXJtaXNzaW9uIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSB7XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4ge307XG4gIH1cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEV2ZW50QnJpZGdlUGVybWlzc2lvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBuZXcgY2xvdWR3YXRjaEV2ZW50UGVybWlzc2lvbi5DbG91ZHdhdGNoRXZlbnRQZXJtaXNzaW9uKHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL3B1bGwvMTY4NzQjZGlzY3Vzc2lvbl9yNjU2MDI0ODMwXG4gICAgICAuLi5wcm9wcyxcbiAgICAgIGV2ZW50QnVzTmFtZTogcHJvcHMuZXZlbnRCdXMuZXZlbnRCdXNOYW1lLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -237,5 +237,5 @@ class Match {
237
237
  }
238
238
  exports.Match = Match;
239
239
  _a = JSII_RTTI_SYMBOL_1;
240
- Match[_a] = { fqn: "terraconstructs.aws.notify.Match", version: "0.0.13" };
240
+ Match[_a] = { fqn: "terraconstructs.aws.notify.Match", version: "0.0.15" };
241
241
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtcGF0dGVybi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3Mvbm90aWZ5L2V2ZW50LXBhdHRlcm4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxvR0FBb0c7QUFFcEcsaUNBQTREO0FBYzVEOztHQUVHO0FBQ0gsTUFBYSxLQUFLO0lBQ2hCOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFNBQVM7UUFDckIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsTUFBTTtRQUNsQixPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTSxDQUFDLFlBQVk7UUFDeEIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDLENBQUMsRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQy9DLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBYTtRQUNyQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxLQUFhO1FBQzFDLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBYTtRQUNoQyxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVEOztP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LDBGQUEwRjtRQUMxRixJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDbkQsTUFBTSxJQUFJLEtBQUssQ0FDYiw0REFBNEQsQ0FDN0QsQ0FBQztRQUNKLENBQUM7UUFFRCxPQUFPLENBQUMsRUFBRSxPQUFPLEVBQUUsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sYUFBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSCxNQUFNO1FBQ0osT0FBTyxhQUFLLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVCLENBQUM7O0FBaFNILHNCQWlTQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1ldmVudHMvbGliL2V2ZW50LXBhdHRlcm4udHNcblxuaW1wb3J0IHsgSVJlc29sdmFibGUsIElSZXNvbHZlQ29udGV4dCwgVG9rZW4gfSBmcm9tIFwiY2RrdGZcIjtcblxudHlwZSBDb21wYXJpc29uT3BlcmF0b3IgPSBcIj5cIiB8IFwiPj1cIiB8IFwiPFwiIHwgXCI8PVwiIHwgXCI9XCI7XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgaG93IHRvIGNvbnN0cnVjdCBtYXRjaGVyc1xuICovXG5pbnRlcmZhY2UgTWF0Y2hPcHRpb25zIHtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhlIGxpc3Qgb2YgbWF0Y2hlcnMgc2hvdWxkIGJlIG1lcmdlZCBpbnRvIGEgc2luZ2xlIG1hdGNoZXJcbiAgICovXG4gIHJlYWRvbmx5IG1lcmdlTWF0Y2hlcnM6IGJvb2xlYW47XG59XG5cbi8qKlxuICogQW4gZXZlbnQgcGF0dGVybiBtYXRjaGVyXG4gKi9cbmV4cG9ydCBjbGFzcyBNYXRjaCBpbXBsZW1lbnRzIElSZXNvbHZhYmxlIHtcbiAgLyoqXG4gICAqIE1hdGNoZXMgYSBudWxsIHZhbHVlIGluIHRoZSBKU09OIG9mIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBudWxsVmFsdWUoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFtudWxsXSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyB3aGVuIHRoZSBmaWVsZCBpcyBwcmVzZW50IGluIHRoZSBKU09OIG9mIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBleGlzdHMoKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFt7IGV4aXN0czogdHJ1ZSB9XSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyB3aGVuIHRoZSBmaWVsZCBpcyBhYnNlbnQgZnJvbSB0aGUgSlNPTiBvZiB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZG9lc05vdEV4aXN0KCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0cyhbeyBleGlzdHM6IGZhbHNlIH1dKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGEgc3RyaW5nLCBleGFjdGx5LCBpbiB0aGUgSlNPTiBvZiB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZXhhY3RTdHJpbmcodmFsdWU6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0cyhbdmFsdWVdKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGEgc3RyaW5nLCByZWdhcmRsZXNzIG9mIGNhc2UsIGluIHRoZSBKU09OIG9mIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlcXVhbHNJZ25vcmVDYXNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdHMoW3sgXCJlcXVhbHMtaWdub3JlLWNhc2VcIjogdmFsdWUgfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaW4gdGhlIEpTT04gb2YgdGhlIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHByZWZpeCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFt7IHByZWZpeDogdmFsdWUgfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBzdWZmaXggaW4gdGhlIEpTT04gb2YgdGhlIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIHN1ZmZpeCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFt7IHN1ZmZpeDogdmFsdWUgfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBwcmVmaXggaW4gdGhlIEpTT04gb2YgdGhlIGV2ZW50IHJlZ2FyZGxlc3Mgb2YgdGhlIGNhc2luZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBwcmVmaXhFcXVhbHNJZ25vcmVDYXNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdHMoW3sgcHJlZml4OiB7IFwiZXF1YWxzLWlnbm9yZS1jYXNlXCI6IHZhbHVlIH0gfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiBzdWZmaXggaW4gdGhlIEpTT04gb2YgdGhlIGV2ZW50IHJlZ2FyZGxlc3Mgb2YgdGhlIGNhc2luZ1xuICAgKi9cbiAgcHVibGljIHN0YXRpYyBzdWZmaXhFcXVhbHNJZ25vcmVDYXNlKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdHMoW3sgc3VmZml4OiB7IFwiZXF1YWxzLWlnbm9yZS1jYXNlXCI6IHZhbHVlIH0gfV0pO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgc3RyaW5ncyB3aXRoIHRoZSBnaXZlbiB3aWxkY2FyZCBwYXR0ZXJuIGluIHRoZSBKU09OIG9mIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyB3aWxkY2FyZCh2YWx1ZTogc3RyaW5nKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFt7IHdpbGRjYXJkOiB2YWx1ZSB9XSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBJUHY0IGFuZCBJUHY2IG5ldHdvcmsgYWRkcmVzc2VzIHVzaW5nIHRoZSBDbGFzc2xlc3MgSW50ZXItRG9tYWluIFJvdXRpbmcgKENJRFIpIGZvcm1hdFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBjaWRyKHJhbmdlOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gICAgY29uc3QgaXB2NFJlZ2V4ID1cbiAgICAgIC9eKFswLTldezEsM31cXC4pezN9WzAtOV17MSwzfShcXC8oWzAtOV18WzEtMl1bMC05XXwzWzAtMl0pKT8kL2dpbTtcbiAgICBjb25zdCBpcHY2UmVnZXggPVxuICAgICAgL15zKigoKFswLTlBLUZhLWZdezEsNH06KXs3fShbMC05QS1GYS1mXXsxLDR9fDopKXwoKFswLTlBLUZhLWZdezEsNH06KXs2fSg6WzAtOUEtRmEtZl17MSw0fXwoKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezV9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsMn0pfDooKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezR9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsM30pfCgoOlswLTlBLUZhLWZdezEsNH0pPzooKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSkpfDopKXwoKFswLTlBLUZhLWZdezEsNH06KXszfSgoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDR9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDJ9OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KSl8OikpfCgoWzAtOUEtRmEtZl17MSw0fTopezJ9KCgoOlswLTlBLUZhLWZdezEsNH0pezEsNX0pfCgoOlswLTlBLUZhLWZdezEsNH0pezAsM306KCgyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKC4oMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSl7M30pKXw6KSl8KChbMC05QS1GYS1mXXsxLDR9Oil7MX0oKCg6WzAtOUEtRmEtZl17MSw0fSl7MSw2fSl8KCg6WzAtOUEtRmEtZl17MSw0fSl7MCw0fTooKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkoLigyNVswLTVdfDJbMC00XWR8MWRkfFsxLTldP2QpKXszfSkpfDopKXwoOigoKDpbMC05QS1GYS1mXXsxLDR9KXsxLDd9KXwoKDpbMC05QS1GYS1mXXsxLDR9KXswLDV9OigoMjVbMC01XXwyWzAtNF1kfDFkZHxbMS05XT9kKSguKDI1WzAtNV18MlswLTRdZHwxZGR8WzEtOV0/ZCkpezN9KSl8OikpKSglLispP3MqKFxcLyhbMC05XXxbMS05XVswLTldfDFbMC0xXVswLTldfDEyWzAtOF0pKT8kL2dpbTtcblxuICAgIGlmICghaXB2NFJlZ2V4LnRlc3QocmFuZ2UpICYmICFpcHY2UmVnZXgudGVzdChyYW5nZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgSW52YWxpZCBJUCBhZGRyZXNzIHJhbmdlOiAke3JhbmdlfWApO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKFt7IGNpZHI6IHJhbmdlIH1dKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIElQdjQgYW5kIElQdjYgbmV0d29yayBhZGRyZXNzZXMgdXNpbmcgdGhlIENsYXNzbGVzcyBJbnRlci1Eb21haW4gUm91dGluZyAoQ0lEUikgZm9ybWF0LlxuICAgKiBBbGlhcyBvZiBgY2lkcigpYC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaXBBZGRyZXNzUmFuZ2UocmFuZ2U6IHN0cmluZyk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gTWF0Y2guY2lkcihyYW5nZSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBhbnl0aGluZyBleGNlcHQgd2hhdCdzIHByb3ZpZGVkIGluIHRoZSBydWxlLiBUaGUgbGlzdCBvZiBwcm92aWRlZCB2YWx1ZXMgbXVzdCBjb250YWluXG4gICAqIG9ubHkgc3RyaW5ncyBvciBvbmx5IG51bWJlcnMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFueXRoaW5nQnV0KC4uLnZhbHVlczogYW55W10pOiBzdHJpbmdbXSB7XG4gICAgaWYgKHZhbHVlcy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcImFueXRoaW5nQnV0IG1hdGNoZXJzIG11c3QgYmUgbm9uLWVtcHR5IGxpc3RzXCIpO1xuICAgIH1cblxuICAgIGNvbnN0IGFsbE51bWJlcnMgPSB2YWx1ZXMuZXZlcnkoKHYpID0+IHR5cGVvZiB2ID09PSBcIm51bWJlclwiKTtcbiAgICBjb25zdCBhbGxTdHJpbmdzID0gdmFsdWVzLmV2ZXJ5KCh2KSA9PiB0eXBlb2YgdiA9PT0gXCJzdHJpbmdcIik7XG5cbiAgICBpZiAoIShhbGxOdW1iZXJzIHx8IGFsbFN0cmluZ3MpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiYW55dGhpbmdCdXQgbWF0Y2hlcnMgbXVzdCBiZSBsaXN0cyB0aGF0IGNvbnRhaW4gb25seSBzdHJpbmdzIG9yIG9ubHkgbnVtYmVycy5cIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdHMoW3sgXCJhbnl0aGluZy1idXRcIjogdmFsdWVzIH1dKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGFueSBzdHJpbmcgdGhhdCBkb2Vzbid0IHN0YXJ0IHdpdGggdGhlIGdpdmVuIHByZWZpeC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW55dGhpbmdCdXRQcmVmaXgoLi4udmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5hbnl0aGluZ0J1dENvbmp1bmN0aW9uKFwicHJlZml4XCIsIHZhbHVlcyk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBhbnkgc3RyaW5nIHRoYXQgZG9lc24ndCBlbmQgd2l0aCB0aGUgZ2l2ZW4gc3VmZml4LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbnl0aGluZ0J1dFN1ZmZpeCguLi52YWx1ZXM6IHN0cmluZ1tdKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLmFueXRoaW5nQnV0Q29uanVuY3Rpb24oXCJzdWZmaXhcIiwgdmFsdWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGFueSBzdHJpbmcgdGhhdCBkb2Vzbid0IG1hdGNoIHdpdGggdGhlIGdpdmVuIHdpbGRjYXJkIHBhdHRlcm4uXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGFueXRoaW5nQnV0V2lsZGNhcmQoLi4udmFsdWVzOiBzdHJpbmdbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5hbnl0aGluZ0J1dENvbmp1bmN0aW9uKFwid2lsZGNhcmRcIiwgdmFsdWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIGFueSBzdHJpbmcgdGhhdCBkb2Vzbid0IG1hdGNoIHdpdGggdGhlIGdpdmVuIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgY2hhcmFjdGVyIGNhc2luZy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgYW55dGhpbmdCdXRFcXVhbHNJZ25vcmVDYXNlKC4uLnZhbHVlczogc3RyaW5nW10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuYW55dGhpbmdCdXRDb25qdW5jdGlvbihcImVxdWFscy1pZ25vcmUtY2FzZVwiLCB2YWx1ZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgbnVtYmVycyBncmVhdGVyIHRoYW4gdGhlIHByb3ZpZGVkIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdyZWF0ZXJUaGFuKHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMubnVtZXJpYyhcIj5cIiwgdmFsdWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgbnVtYmVycyBncmVhdGVyIHRoYW4sIG9yIGVxdWFsIHRvLCB0aGUgcHJvdmlkZWQgdmFsdWVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ3JlYXRlclRoYW5PckVxdWFsKHZhbHVlOiBudW1iZXIpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMubnVtZXJpYyhcIj49XCIsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIG51bWJlcnMgbGVzcyB0aGFuIHRoZSBwcm92aWRlZCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBsZXNzVGhhbih2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLm51bWVyaWMoXCI8XCIsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIG51bWJlcnMgbGVzcyB0aGFuLCBvciBlcXVhbCB0bywgdGhlIHByb3ZpZGVkIHZhbHVlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGxlc3NUaGFuT3JFcXVhbCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLm51bWVyaWMoXCI8PVwiLCB2YWx1ZSk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBudW1iZXJzIGVxdWFsIHRvIHRoZSBwcm92aWRlZCB2YWx1ZVxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBlcXVhbCh2YWx1ZTogbnVtYmVyKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLm51bWVyaWMoXCI9XCIsIHZhbHVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBNYXRjaGVzIG51bWJlcnMgaW5zaWRlIGEgY2xvc2VkIG51bWVyaWMgaW50ZXJ2YWwuIEVxdWl2YWxlbnQgdG86XG4gICAqXG4gICAqICAgIE1hdGNoLmFsbE9mKE1hdGNoLmdyZWF0ZXJUaGFuT3JFcXVhbChsb3dlciksIE1hdGNoLmxlc3NUaGFuT3JFcXVhbCh1cHBlcikpXG4gICAqXG4gICAqIEBwYXJhbSBsb3dlciBMb3dlciBib3VuZCAoaW5jbHVzaXZlKVxuICAgKiBAcGFyYW0gdXBwZXIgVXBwZXIgYm91bmQgKGluY2x1c2l2ZSlcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgaW50ZXJ2YWwobG93ZXI6IG51bWJlciwgdXBwZXI6IG51bWJlcik6IHN0cmluZ1tdIHtcbiAgICBpZiAobG93ZXIgPiB1cHBlcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIGludGVydmFsOiBbJHtsb3dlcn0sICR7dXBwZXJ9XWApO1xuICAgIH1cblxuICAgIHJldHVybiBNYXRjaC5hbGxPZihcbiAgICAgIE1hdGNoLmdyZWF0ZXJUaGFuT3JFcXVhbChsb3dlciksXG4gICAgICBNYXRjaC5sZXNzVGhhbk9yRXF1YWwodXBwZXIpLFxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogTWF0Y2hlcyBhbiBldmVudCBpZiBhbnkgb2YgdGhlIHByb3ZpZGVkIG1hdGNoZXJzIGRvLiBPbmx5IG51bWVyaWMgbWF0Y2hlcnMgYXJlIGFjY2VwdGVkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbGxPZiguLi5tYXRjaGVyczogYW55W10pOiBzdHJpbmdbXSB7XG4gICAgaWYgKG1hdGNoZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQSBsaXN0IG9mIG1hdGNoZXJzIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgZWxlbWVudC5cIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZnJvbU1lcmdlZE9iamVjdHMobWF0Y2hlcnMpO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hdGNoZXMgYW4gZXZlbnQgaWYgYW55IG9mIHRoZSBwcm92aWRlZCBtYXRjaGVycyBkb2VzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBhbnlPZiguLi5tYXRjaGVyczogYW55W10pOiBzdHJpbmdbXSB7XG4gICAgaWYgKG1hdGNoZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiQSBsaXN0IG9mIG1hdGNoZXJzIG11c3QgY29udGFpbiBhdCBsZWFzdCBvbmUgZWxlbWVudC5cIik7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLmZyb21PYmplY3RzKG1hdGNoZXJzKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGFueXRoaW5nQnV0Q29uanVuY3Rpb24oXG4gICAgZmlsdGVyS2V5OiBzdHJpbmcsXG4gICAgdmFsdWVzOiBzdHJpbmdbXSxcbiAgKTogc3RyaW5nW10ge1xuICAgIGlmICh2YWx1ZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJhbnl0aGluZ0J1dCBtYXRjaGVycyBtdXN0IGJlIG5vbi1lbXB0eSBsaXN0c1wiKTtcbiAgICB9XG5cbiAgICAvLyBXaGVuIHRoZXJlIGlzIGEgc2luZ2xlIHZhbHVlIHJldHVybiBpdCwgb3RoZXJ3aXNlIHJldHVybiB0aGUgYXJyYXlcbiAgICBjb25zdCBmaWx0ZXJWYWx1ZSA9IHZhbHVlcy5sZW5ndGggPT09IDEgPyB2YWx1ZXNbMF0gOiB2YWx1ZXM7XG5cbiAgICByZXR1cm4gdGhpcy5mcm9tT2JqZWN0cyhbeyBcImFueXRoaW5nLWJ1dFwiOiB7IFtmaWx0ZXJLZXldOiBmaWx0ZXJWYWx1ZSB9IH1dKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG51bWVyaWMoXG4gICAgb3BlcmF0b3I6IENvbXBhcmlzb25PcGVyYXRvcixcbiAgICB2YWx1ZTogbnVtYmVyLFxuICApOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbU9iamVjdHMoW3sgbnVtZXJpYzogW29wZXJhdG9yLCB2YWx1ZV0gfV0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZnJvbU9iamVjdHModmFsdWVzOiBhbnlbXSk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gbmV3IE1hdGNoKHZhbHVlcywgeyBtZXJnZU1hdGNoZXJzOiBmYWxzZSB9KS5hc0xpc3QoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGZyb21NZXJnZWRPYmplY3RzKHZhbHVlczogYW55W10pOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIG5ldyBNYXRjaCh2YWx1ZXMsIHsgbWVyZ2VNYXRjaGVyczogdHJ1ZSB9KS5hc0xpc3QoKTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSBjcmVhdGlvblN0YWNrOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgcmVhZG9ubHkgbWF0Y2hlcnM6IGFueVtdLFxuICAgIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogTWF0Y2hPcHRpb25zLFxuICApIHtcbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgc3RhY2sgdHJhY2VzXG4gICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvYmxvYi92MC4yMC45L3BhY2thZ2VzL2Nka3RmL2xpYi90b2tlbnMvcHJpdmF0ZS9zdGFjay10cmFjZS50cyNMOVxuICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTQzLjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvc3RhY2stdHJhY2UudHMjTDIyXG4gICAgdGhpcy5jcmVhdGlvblN0YWNrID0gW1wic3RhY2sgdHJhY2VzIGRpc2FibGVkXCJdO1xuICB9XG5cbiAgcmVzb2x2ZShjb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpOiBhbnkge1xuICAgIGNvbnN0IG1hdGNoZXJzID0gdGhpcy5tYXRjaGVycy5mbGF0TWFwKChtYXRjaGVyKSA9PlxuICAgICAgY29udGV4dC5yZXNvbHZlKG1hdGNoZXIpLFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5tZXJnZU1hdGNoZXJzID8gdGhpcy5tZXJnZShtYXRjaGVycykgOiBtYXRjaGVycztcbiAgfVxuXG4gIHByaXZhdGUgbWVyZ2UobWF0Y2hlcnM6IGFueVtdKTogYW55IHtcbiAgICAvLyBUaGlzIGlzIHRoZSBvbmx5IHN1cHBvcnRlZCBjYXNlIGZvciBtZXJnaW5nIGF0IHRoZSBtb21lbnQuXG4gICAgLy8gV2UgY2FuIGdlbmVyYWxpemUgdGhpcyBsb2dpYyBpZiBFdmVudEJyaWRnZSBzdGFydHMgc3VwcG9ydGluZyBtb3JlIGNhc2VzIGluIHRoZSBmdXR1cmUuXG4gICAgaWYgKCFtYXRjaGVycy5ldmVyeSgobWF0Y2hlcikgPT4gbWF0Y2hlcj8ubnVtZXJpYykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJPbmx5IG51bWVyaWMgbWF0Y2hlcnMgY2FuIGJlIG1lcmdlZCBpbnRvIGEgc2luZ2xlIG1hdGNoZXIuXCIsXG4gICAgICApO1xuICAgIH1cblxuICAgIHJldHVybiBbeyBudW1lcmljOiBtYXRjaGVycy5mbGF0TWFwKChtYXRjaGVyKSA9PiBtYXRjaGVyLm51bWVyaWMpIH1dO1xuICB9XG5cbiAgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodGhpcyk7XG4gIH1cblxuICAvKipcbiAgICogQSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIG1hdGNoZXIgYXMgYSBsaXN0IG9mIHN0cmluZ3NcbiAgICovXG4gIGFzTGlzdCgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIFRva2VuLmFzTGlzdCh0aGlzKTtcbiAgfVxufVxuXG4vKipcbiAqIEV2ZW50cyBpbiBBbWF6b24gQ2xvdWRXYXRjaCBFdmVudHMgYXJlIHJlcHJlc2VudGVkIGFzIEpTT04gb2JqZWN0cy4gRm9yIG1vcmVcbiAqIGluZm9ybWF0aW9uIGFib3V0IEpTT04gb2JqZWN0cywgc2VlIFJGQyA3MTU5LlxuICpcbiAqICoqSW1wb3J0YW50Kio6IHRoaXMgY2xhc3MgY2FuIG9ubHkgYmUgdXNlZCB3aXRoIGEgYFJ1bGVgIGNsYXNzLiBJbiBwYXJ0aWN1bGFyLFxuICogZG8gbm90IHVzZSBpdCB3aXRoIGBDZm5SdWxlYCBjbGFzczogeW91ciBwYXR0ZXJuIHdpbGwgbm90IGJlIHJlbmRlcmVkXG4gKiBjb3JyZWN0bHkuIEluIGEgYENmblJ1bGVgIGNsYXNzLCB3cml0ZSB0aGUgcGF0dGVybiBhcyB5b3Ugbm9ybWFsbHkgd291bGQgd2hlblxuICogZGlyZWN0bHkgd3JpdGluZyBDbG91ZEZvcm1hdGlvbi5cbiAqXG4gKiBSdWxlcyB1c2UgZXZlbnQgcGF0dGVybnMgdG8gc2VsZWN0IGV2ZW50cyBhbmQgcm91dGUgdGhlbSB0byB0YXJnZXRzLiBBXG4gKiBwYXR0ZXJuIGVpdGhlciBtYXRjaGVzIGFuIGV2ZW50IG9yIGl0IGRvZXNuJ3QuIEV2ZW50IHBhdHRlcm5zIGFyZSByZXByZXNlbnRlZFxuICogYXMgSlNPTiBvYmplY3RzIHdpdGggYSBzdHJ1Y3R1cmUgdGhhdCBpcyBzaW1pbGFyIHRvIHRoYXQgb2YgZXZlbnRzLlxuICpcbiAqIEl0IGlzIGltcG9ydGFudCB0byByZW1lbWJlciB0aGUgZm9sbG93aW5nIGFib3V0IGV2ZW50IHBhdHRlcm4gbWF0Y2hpbmc6XG4gKlxuICogLSBGb3IgYSBwYXR0ZXJuIHRvIG1hdGNoIGFuIGV2ZW50LCB0aGUgZXZlbnQgbXVzdCBjb250YWluIGFsbCB0aGUgZmllbGQgbmFtZXNcbiAqICAgbGlzdGVkIGluIHRoZSBwYXR0ZXJuLiBUaGUgZmllbGQgbmFtZXMgbXVzdCBhcHBlYXIgaW4gdGhlIGV2ZW50IHdpdGggdGhlXG4gKiAgIHNhbWUgbmVzdGluZyBzdHJ1Y3R1cmUuXG4gKlxuICogLSBPdGhlciBmaWVsZHMgb2YgdGhlIGV2ZW50IG5vdCBtZW50aW9uZWQgaW4gdGhlIHBhdHRlcm4gYXJlIGlnbm9yZWQ7XG4gKiAgIGVmZmVjdGl2ZWx5LCB0aGVyZSBpcyBhIGBgXCIqXCI6IFwiKlwiYGAgd2lsZGNhcmQgZm9yIGZpZWxkcyBub3QgbWVudGlvbmVkLlxuICpcbiAqIC0gVGhlIG1hdGNoaW5nIGlzIGV4YWN0IChjaGFyYWN0ZXItYnktY2hhcmFjdGVyKSwgd2l0aG91dCBjYXNlLWZvbGRpbmcgb3IgYW55XG4gKiAgIG90aGVyIHN0cmluZyBub3JtYWxpemF0aW9uLlxuICpcbiAqIC0gVGhlIHZhbHVlcyBiZWluZyBtYXRjaGVkIGZvbGxvdyBKU09OIHJ1bGVzOiBTdHJpbmdzIGVuY2xvc2VkIGluIHF1b3RlcyxcbiAqICAgbnVtYmVycywgYW5kIHRoZSB1bnF1b3RlZCBrZXl3b3JkcyB0cnVlLCBmYWxzZSwgYW5kIG51bGwuXG4gKlxuICogLSBOdW1iZXIgbWF0Y2hpbmcgaXMgYXQgdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBsZXZlbC4gRm9yIGV4YW1wbGUsIDMwMCxcbiAqICAgMzAwLjAsIGFuZCAzLjBlMiBhcmUgbm90IGNvbnNpZGVyZWQgZXF1YWwuXG4gKlxuICogRm9yIGN1c3RvbSBldmVudHMsIHNvbWUgb3B0aW9uYWwgcHJvcGVydGllcyBhcmUgcmVxdWlyZWQuIEZvciBtb3JlIGluZm9ybWF0aW9uLCBzZWVcbiAqIFtNaW5pbXVtIGluZm9ybWF0aW9uIG5lZWRlZCBmb3IgYSB2YWxpZCBjdXN0b20gZXZlbnRdKGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ldmVudGJyaWRnZS9sYXRlc3QvdXNlcmd1aWRlL2ViLWV2ZW50cy1zdHJ1Y3R1cmUuaHRtbCNlYi1jdXN0b20tZXZlbnQpLlxuICpcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkV2F0Y2gvbGF0ZXN0L2V2ZW50cy9DbG91ZFdhdGNoRXZlbnRzYW5kRXZlbnRQYXR0ZXJucy5odG1sXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRQYXR0ZXJuIHtcbiAgLyoqXG4gICAqIEJ5IGRlZmF1bHQsIHRoaXMgaXMgc2V0IHRvIDAgKHplcm8pIGluIGFsbCBldmVudHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZmlsdGVyaW5nIG9uIHZlcnNpb25cbiAgICovXG4gIHJlYWRvbmx5IHZlcnNpb24/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogQSB1bmlxdWUgdmFsdWUgaXMgZ2VuZXJhdGVkIGZvciBldmVyeSBldmVudC4gVGhpcyBjYW4gYmUgaGVscGZ1bCBpblxuICAgKiB0cmFjaW5nIGV2ZW50cyBhcyB0aGV5IG1vdmUgdGhyb3VnaCBydWxlcyB0byB0YXJnZXRzLCBhbmQgYXJlIHByb2Nlc3NlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBmaWx0ZXJpbmcgb24gaWRcbiAgICovXG4gIHJlYWRvbmx5IGlkPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIElkZW50aWZpZXMsIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlIHNvdXJjZSBmaWVsZCwgdGhlIGZpZWxkcyBhbmQgdmFsdWVzXG4gICAqIHRoYXQgYXBwZWFyIGluIHRoZSBkZXRhaWwgZmllbGQuXG4gICAqXG4gICAqIFJlcHJlc2VudHMgdGhlIFwiZGV0YWlsLXR5cGVcIiBldmVudCBmaWVsZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBmaWx0ZXJpbmcgb24gZGV0YWlsIHR5cGVcbiAgICovXG4gIHJlYWRvbmx5IGRldGFpbFR5cGU/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogSWRlbnRpZmllcyB0aGUgc2VydmljZSB0aGF0IHNvdXJjZWQgdGhlIGV2ZW50LiBBbGwgZXZlbnRzIHNvdXJjZWQgZnJvbVxuICAgKiB3aXRoaW4gQVdTIGJlZ2luIHdpdGggXCJhd3MuXCIgQ3VzdG9tZXItZ2VuZXJhdGVkIGV2ZW50cyBjYW4gaGF2ZSBhbnkgdmFsdWVcbiAgICogaGVyZSwgYXMgbG9uZyBhcyBpdCBkb2Vzbid0IGJlZ2luIHdpdGggXCJhd3MuXCIgV2UgcmVjb21tZW5kIHRoZSB1c2Ugb2ZcbiAgICogSmF2YSBwYWNrYWdlLW5hbWUgc3R5bGUgcmV2ZXJzZSBkb21haW4tbmFtZSBzdHJpbmdzLlxuICAgKlxuICAgKiBUbyBmaW5kIHRoZSBjb3JyZWN0IHZhbHVlIGZvciBzb3VyY2UgZm9yIGFuIEFXUyBzZXJ2aWNlLCBzZWUgdGhlIHRhYmxlIGluXG4gICAqIEFXUyBTZXJ2aWNlIE5hbWVzcGFjZXMuIEZvciBleGFtcGxlLCB0aGUgc291cmNlIHZhbHVlIGZvciBBbWF6b25cbiAgICogQ2xvdWRGcm9udCBpcyBhd3MuY2xvdWRmcm9udC5cbiAgICpcbiAgICogQHNlZSBodHRwOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9nZW5lcmFsL2xhdGVzdC9nci9hd3MtYXJucy1hbmQtbmFtZXNwYWNlcy5odG1sI2dlbnJlZi1hd3Mtc2VydmljZS1uYW1lc3BhY2VzXG4gICAqIEBkZWZhdWx0IC0gTm8gZmlsdGVyaW5nIG9uIHNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgc291cmNlPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIFRoZSAxMi1kaWdpdCBudW1iZXIgaWRlbnRpZnlpbmcgYW4gQVdTIGFjY291bnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZmlsdGVyaW5nIG9uIGFjY291bnRcbiAgICovXG4gIHJlYWRvbmx5IGFjY291bnQ/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogVGhlIGV2ZW50IHRpbWVzdGFtcCwgd2hpY2ggY2FuIGJlIHNwZWNpZmllZCBieSB0aGUgc2VydmljZSBvcmlnaW5hdGluZ1xuICAgKiB0aGUgZXZlbnQuIElmIHRoZSBldmVudCBzcGFucyBhIHRpbWUgaW50ZXJ2YWwsIHRoZSBzZXJ2aWNlIG1pZ2h0IGNob29zZVxuICAgKiB0byByZXBvcnQgdGhlIHN0YXJ0IHRpbWUsIHNvIHRoaXMgdmFsdWUgY2FuIGJlIG5vdGljZWFibHkgYmVmb3JlIHRoZSB0aW1lXG4gICAqIHRoZSBldmVudCBpcyBhY3R1YWxseSByZWNlaXZlZC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBmaWx0ZXJpbmcgb24gdGltZVxuICAgKi9cbiAgcmVhZG9ubHkgdGltZT86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBJZGVudGlmaWVzIHRoZSBBV1MgcmVnaW9uIHdoZXJlIHRoZSBldmVudCBvcmlnaW5hdGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGZpbHRlcmluZyBvbiByZWdpb25cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGlzIEpTT04gYXJyYXkgY29udGFpbnMgQVJOcyB0aGF0IGlkZW50aWZ5IHJlc291cmNlcyB0aGF0IGFyZSBpbnZvbHZlZFxuICAgKiBpbiB0aGUgZXZlbnQuIEluY2x1c2lvbiBvZiB0aGVzZSBBUk5zIGlzIGF0IHRoZSBkaXNjcmV0aW9uIG9mIHRoZVxuICAgKiBzZXJ2aWNlLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgQW1hem9uIEVDMiBpbnN0YW5jZSBzdGF0ZS1jaGFuZ2VzIGluY2x1ZGUgQW1hem9uIEVDMlxuICAgKiBpbnN0YW5jZSBBUk5zLCBBdXRvIFNjYWxpbmcgZXZlbnRzIGluY2x1ZGUgQVJOcyBmb3IgYm90aCBpbnN0YW5jZXMgYW5kXG4gICAqIEF1dG8gU2NhbGluZyBncm91cHMsIGJ1dCBBUEkgY2FsbHMgd2l0aCBBV1MgQ2xvdWRUcmFpbCBkbyBub3QgaW5jbHVkZVxuICAgKiByZXNvdXJjZSBBUk5zLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGZpbHRlcmluZyBvbiByZXNvdXJjZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVzb3VyY2VzPzogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqIEEgSlNPTiBvYmplY3QsIHdob3NlIGNvbnRlbnQgaXMgYXQgdGhlIGRpc2NyZXRpb24gb2YgdGhlIHNlcnZpY2VcbiAgICogb3JpZ2luYXRpbmcgdGhlIGV2ZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGZpbHRlcmluZyBvbiBkZXRhaWxcbiAgICovXG4gIHJlYWRvbmx5IGRldGFpbD86IHsgW2tleTogc3RyaW5nXTogYW55IH07XG59XG4iXX0=
@@ -54,7 +54,7 @@ class RuleTargetInput {
54
54
  }
55
55
  exports.RuleTargetInput = RuleTargetInput;
56
56
  _a = JSII_RTTI_SYMBOL_1;
57
- RuleTargetInput[_a] = { fqn: "terraconstructs.aws.notify.RuleTargetInput", version: "0.0.13" };
57
+ RuleTargetInput[_a] = { fqn: "terraconstructs.aws.notify.RuleTargetInput", version: "0.0.15" };
58
58
  /**
59
59
  * Event Input that is directly derived from the construct
60
60
  */
@@ -269,7 +269,7 @@ class EventField {
269
269
  }
270
270
  exports.EventField = EventField;
271
271
  _b = JSII_RTTI_SYMBOL_1;
272
- EventField[_b] = { fqn: "terraconstructs.aws.notify.EventField", version: "0.0.13" };
272
+ EventField[_b] = { fqn: "terraconstructs.aws.notify.EventField", version: "0.0.15" };
273
273
  var InputType;
274
274
  (function (InputType) {
275
275
  InputType[InputType["Object"] = 0] = "Object";
@@ -280,4 +280,4 @@ function isEventField(x) {
280
280
  return EVENT_FIELD_SYMBOL in x;
281
281
  }
282
282
  const EVENT_FIELD_SYMBOL = Symbol.for("terraconstructs/lib/aws/notify.EventField");
283
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL25vdGlmeS9pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRGQUE0RjtBQUU1RixpQ0FTZTtBQUVmLDRDQUF3QztBQUV4Qzs7R0FFRztBQUNILE1BQXNCLGVBQWU7SUFDbkM7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ2pDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFZO1FBQzFDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBUTtRQUMvQixPQUFPLElBQUksb0JBQW9CLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQVk7UUFDdEMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGdCQUF5QixDQUFDOztBQTdDNUIsMENBbURDOzs7QUFvQ0Q7O0dBRUc7QUFDSCxNQUFNLGlCQUFrQixTQUFRLGVBQWU7SUFDN0MsWUFBNkIsS0FBZ0M7UUFDM0QsS0FBSyxFQUFFLENBQUM7UUFEbUIsVUFBSyxHQUFMLEtBQUssQ0FBMkI7SUFFN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLEtBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQUVEOzs7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LDJDQUEyQyxDQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWV2ZW50cy9saWIvaW5wdXQudHNcblxuaW1wb3J0IHtcbiAgLy8gY2FwdHVyZVN0YWNrVHJhY2UsXG4gIERlZmF1bHRUb2tlblJlc29sdmVyLFxuICBJUmVzb2x2YWJsZSxcbiAgSVJlc29sdmVDb250ZXh0LFxuICBMYXp5LFxuICBTdHJpbmdDb25jYXQsXG4gIFRva2VuLFxuICBUb2tlbml6YXRpb24sXG59IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgSVJ1bGUgfSBmcm9tIFwiLi9ydWxlXCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcblxuLyoqXG4gKiBUaGUgaW5wdXQgdG8gc2VuZCB0byB0aGUgZXZlbnQgdGFyZ2V0XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBSdWxlVGFyZ2V0SW5wdXQge1xuICAvKipcbiAgICogUGFzcyB0ZXh0IHRvIHRoZSBldmVudCB0YXJnZXRcbiAgICpcbiAgICogTWF5IGNvbnRhaW4gc3RyaW5ncyByZXR1cm5lZCBieSBgRXZlbnRGaWVsZC5mcm9tKClgIHRvIHN1YnN0aXR1dGUgaW4gcGFydHMgb2YgdGhlXG4gICAqIG1hdGNoZWQgZXZlbnQuXG4gICAqXG4gICAqIFRoZSBSdWxlIFRhcmdldCBpbnB1dCB2YWx1ZSB3aWxsIGJlIGEgc2luZ2xlIHN0cmluZzogdGhlIHN0cmluZyB5b3UgcGFzc1xuICAgKiBoZXJlLiAgRG8gbm90IHVzZSB0aGlzIG1ldGhvZCB0byBwYXNzIGEgY29tcGxleCB2YWx1ZSBsaWtlIGEgSlNPTiBvYmplY3QgdG9cbiAgICogYSBSdWxlIFRhcmdldC4gIFVzZSBgUnVsZVRhcmdldElucHV0LmZyb21PYmplY3QoKWAgaW5zdGVhZC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVRleHQodGV4dDogc3RyaW5nKTogUnVsZVRhcmdldElucHV0IHtcbiAgICByZXR1cm4gbmV3IEZpZWxkQXdhcmVFdmVudElucHV0KHRleHQsIElucHV0VHlwZS5UZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXNzIHRleHQgdG8gdGhlIGV2ZW50IHRhcmdldCwgc3BsaXR0aW5nIG9uIG5ld2xpbmVzLlxuICAgKlxuICAgKiBUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gcGFzc2luZyB0byBhIHRhcmdldCB0aGF0IGRvZXMgbm90XG4gICAqIHRha2UgYSBzaW5nbGUgYXJndW1lbnQuXG4gICAqXG4gICAqIE1heSBjb250YWluIHN0cmluZ3MgcmV0dXJuZWQgYnkgYEV2ZW50RmllbGQuZnJvbSgpYCB0byBzdWJzdGl0dXRlIGluIHBhcnRzXG4gICAqIG9mIHRoZSBtYXRjaGVkIGV2ZW50LlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTXVsdGlsaW5lVGV4dCh0ZXh0OiBzdHJpbmcpOiBSdWxlVGFyZ2V0SW5wdXQge1xuICAgIHJldHVybiBuZXcgRmllbGRBd2FyZUV2ZW50SW5wdXQodGV4dCwgSW5wdXRUeXBlLk11bHRpbGluZSk7XG4gIH1cblxuICAvKipcbiAgICogUGFzcyBhIEpTT04gb2JqZWN0IHRvIHRoZSBldmVudCB0YXJnZXRcbiAgICpcbiAgICogTWF5IGNvbnRhaW4gc3RyaW5ncyByZXR1cm5lZCBieSBgRXZlbnRGaWVsZC5mcm9tKClgIHRvIHN1YnN0aXR1dGUgaW4gcGFydHMgb2YgdGhlXG4gICAqIG1hdGNoZWQgZXZlbnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21PYmplY3Qob2JqOiBhbnkpOiBSdWxlVGFyZ2V0SW5wdXQge1xuICAgIHJldHVybiBuZXcgRmllbGRBd2FyZUV2ZW50SW5wdXQob2JqLCBJbnB1dFR5cGUuT2JqZWN0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUYWtlIHRoZSBldmVudCB0YXJnZXQgaW5wdXQgZnJvbSBhIHBhdGggaW4gdGhlIGV2ZW50IEpTT05cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUV2ZW50UGF0aChwYXRoOiBzdHJpbmcpOiBSdWxlVGFyZ2V0SW5wdXQge1xuICAgIHJldHVybiBuZXcgTGl0ZXJhbEV2ZW50SW5wdXQoeyBpbnB1dFBhdGg6IHBhdGggfSk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoKSB7fVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIGlucHV0IHByb3BlcnRpZXMgZm9yIHRoaXMgaW5wdXQgb2JqZWN0XG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgYmluZChydWxlOiBJUnVsZSk6IFJ1bGVUYXJnZXRJbnB1dFByb3BlcnRpZXM7XG59XG5cbi8qKlxuICogVGhlIGlucHV0IHByb3BlcnRpZXMgZm9yIGFuIGV2ZW50IHRhcmdldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1bGVUYXJnZXRJbnB1dFByb3BlcnRpZXMge1xuICAvKipcbiAgICogTGl0ZXJhbCBpbnB1dCB0byB0aGUgdGFyZ2V0IHNlcnZpY2UgKG11c3QgYmUgdmFsaWQgSlNPTilcbiAgICpcbiAgICogQGRlZmF1bHQgLSBpbnB1dCBmb3IgdGhlIGV2ZW50IHRhcmdldC4gSWYgdGhlIGlucHV0IGNvbnRhaW5zIGEgcGF0aHMgbWFwXG4gICAqICAgdmFsdWVzIHdpbCBiZSBleHRyYWN0ZWQgZnJvbSBldmVudCBhbmQgaW5zZXJ0ZWQgaW50byB0aGUgYGlucHV0VGVtcGxhdGVgLlxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEpzb25QYXRoIHRvIHRha2UgaW5wdXQgZnJvbSB0aGUgaW5wdXQgZXZlbnRcbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lLiBUaGUgZW50aXJlIG1hdGNoZWQgZXZlbnQgaXMgcGFzc2VkIGFzIGlucHV0XG4gICAqL1xuICByZWFkb25seSBpbnB1dFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIElucHV0IHRlbXBsYXRlIHRvIGluc2VydCBwYXRocyBtYXAgaW50b1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSBpbnB1dFRlbXBsYXRlPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBQYXRocyBtYXAgdG8gZXh0cmFjdCB2YWx1ZXMgZnJvbSBldmVudCBhbmQgaW5zZXJ0IGludG8gYGlucHV0VGVtcGxhdGVgXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gdmFsdWVzIGV4dHJhY3RlZCBmcm9tIGV2ZW50LlxuICAgKi9cbiAgcmVhZG9ubHkgaW5wdXRQYXRoc01hcD86IHsgW2tleTogc3RyaW5nXTogc3RyaW5nIH07XG59XG5cbi8qKlxuICogRXZlbnQgSW5wdXQgdGhhdCBpcyBkaXJlY3RseSBkZXJpdmVkIGZyb20gdGhlIGNvbnN0cnVjdFxuICovXG5jbGFzcyBMaXRlcmFsRXZlbnRJbnB1dCBleHRlbmRzIFJ1bGVUYXJnZXRJbnB1dCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFJ1bGVUYXJnZXRJbnB1dFByb3BlcnRpZXMpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgaW5wdXQgcHJvcGVydGllcyBmb3IgdGhpcyBpbnB1dCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBiaW5kKF9ydWxlOiBJUnVsZSk6IFJ1bGVUYXJnZXRJbnB1dFByb3BlcnRpZXMge1xuICAgIHJldHVybiB0aGlzLnByb3BzO1xuICB9XG59XG5cbi8qKlxuICogSW5wdXQgb2JqZWN0IHRoYXQgY2FuIGNvbnRhaW4gZmllbGQgcmVwbGFjZW1lbnRzXG4gKlxuICogRXZhbHVhdGlvbiBpcyBkb25lIGluIHRoZSBiaW5kKCkgbWV0aG9kIGJlY2F1c2UgdG9rZW4gcmVzb2x1dGlvblxuICogcmVxdWlyZXMgYWNjZXNzIHRvIHRoZSBjb25zdHJ1Y3QgdHJlZS5cbiAqXG4gKiBNdWx0aXBsZSB0b2tlbnMgdGhhdCB1c2UgdGhlIHNhbWUgcGF0aCB3aWxsIHVzZSB0aGUgc2FtZSBzdWJzdGl0dXRpb25cbiAqIGtleS5cbiAqXG4gKiBPbmUgd2VpcmQgZXhjZXB0aW9uOiBpZiB3ZSdyZSBpbiBvYmplY3QgY29udGV4dCwgd2UgTVVTVCBza2lwIHRoZSBxdW90ZXNcbiAqIGFyb3VuZCB0aGUgcGxhY2Vob2xkZXIuIEkgYXNzdW1lIHRoaXMgaXMgc28gb25jZSBhIHRyaXZpYWwgc3RyaW5nIHJlcGxhY2UgaXNcbiAqIGRvbmUgbGF0ZXIgb24gYnkgRXZlbnRCcmlkZ2UsIG51bWJlcnMgYXJlIHN0aWxsIG51bWJlcnMuXG4gKlxuICogU28gaW4gc3RyaW5nIGNvbnRleHQ6XG4gKlxuICogICAgXCJ0aGlzIGlzIGEgc3RyaW5nIHdpdGggYSA8ZmllbGQ+XCJcbiAqXG4gKiBCdXQgaW4gb2JqZWN0IGNvbnRleHQ6XG4gKlxuICogICAgXCJ7IFxcXCJ0aGlzIGlzIHRoZVxcXCI6IDxmaWVsZD4gfVwiXG4gKlxuICogVG8gYWNoaWV2ZSB0aGUgbGF0dGVyLCB3ZSBwb3N0cHJvY2VzcyB0aGUgSlNPTiBzdHJpbmcgdG8gcmVtb3ZlIHRoZSBzdXJyb3VuZGluZ1xuICogcXVvdGVzIGJ5IHVzaW5nIGEgc3RyaW5nIHJlcGxhY2UuXG4gKi9cbmNsYXNzIEZpZWxkQXdhcmVFdmVudElucHV0IGV4dGVuZHMgUnVsZVRhcmdldElucHV0IHtcbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dDogYW55LFxuICAgIHByaXZhdGUgcmVhZG9ubHkgaW5wdXRUeXBlOiBJbnB1dFR5cGUsXG4gICkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgYmluZChydWxlOiBJUnVsZSk6IFJ1bGVUYXJnZXRJbnB1dFByb3BlcnRpZXMge1xuICAgIGxldCBmaWVsZENvdW50ZXIgPSAwO1xuICAgIGNvbnN0IHBhdGhUb0tleSA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XG4gICAgY29uc3QgaW5wdXRQYXRoc01hcDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gICAgZnVuY3Rpb24ga2V5Rm9yRmllbGQoZjogRXZlbnRGaWVsZCkge1xuICAgICAgY29uc3QgZXhpc3RpbmcgPSBwYXRoVG9LZXkuZ2V0KGYucGF0aCk7XG4gICAgICBpZiAoZXhpc3RpbmcgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICByZXR1cm4gZXhpc3Rpbmc7XG4gICAgICB9XG5cbiAgICAgIGZpZWxkQ291bnRlciArPSAxO1xuICAgICAgY29uc3Qga2V5ID0gZi5kaXNwbGF5SGludCB8fCBgZiR7ZmllbGRDb3VudGVyfWA7XG4gICAgICBwYXRoVG9LZXkuc2V0KGYucGF0aCwga2V5KTtcbiAgICAgIHJldHVybiBrZXk7XG4gICAgfVxuXG4gICAgY2xhc3MgRXZlbnRGaWVsZFJlcGxhY2VyIGV4dGVuZHMgRGVmYXVsdFRva2VuUmVzb2x2ZXIge1xuICAgICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKG5ldyBTdHJpbmdDb25jYXQoKSk7XG4gICAgICB9XG5cbiAgICAgIHB1YmxpYyByZXNvbHZlVG9rZW4odDogVG9rZW4sIF9jb250ZXh0OiBJUmVzb2x2ZUNvbnRleHQpIHtcbiAgICAgICAgaWYgKCFpc0V2ZW50RmllbGQodCkpIHtcbiAgICAgICAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBrZXkgPSBrZXlGb3JGaWVsZCh0KTtcbiAgICAgICAgaWYgKGlucHV0UGF0aHNNYXBba2V5XSAmJiBpbnB1dFBhdGhzTWFwW2tleV0gIT09IHQucGF0aCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICAgIGBTaW5nbGUga2V5ICcke2tleX0nIGlzIHVzZWQgZm9yIHR3byBkaWZmZXJlbnQgSlNPTiBwYXRoczogJyR7dC5wYXRofScgYW5kICcke2lucHV0UGF0aHNNYXBba2V5XX0nYCxcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICAgIGlucHV0UGF0aHNNYXBba2V5XSA9IHQucGF0aDtcblxuICAgICAgICByZXR1cm4gYDwke2tleX0+YDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBzdGFjayA9IEF3c1N0YWNrLm9mQXdzQ29uc3RydWN0KHJ1bGUpO1xuICAgIGxldCByZXNvbHZlZDogc3RyaW5nO1xuICAgIGlmICh0aGlzLmlucHV0VHlwZSA9PT0gSW5wdXRUeXBlLk11bHRpbGluZSkge1xuICAgICAgLy8gSlNPTmlmeSBpbmRpdmlkdWFsIGxpbmVzXG4gICAgICByZXNvbHZlZCA9IFRva2VuaXphdGlvbi5yZXNvbHZlKHRoaXMuaW5wdXQsIHtcbiAgICAgICAgc2NvcGU6IHJ1bGUsXG4gICAgICAgIHJlc29sdmVyOiBuZXcgRXZlbnRGaWVsZFJlcGxhY2VyKCksXG4gICAgICB9KTtcbiAgICAgIHJlc29sdmVkID0gcmVzb2x2ZWQuc3BsaXQoXCJcXG5cIikubWFwKHN0YWNrLnRvSnNvblN0cmluZykuam9pbihcIlxcblwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzb2x2ZWQgPSBzdGFjay50b0pzb25TdHJpbmcoXG4gICAgICAgIFRva2VuaXphdGlvbi5yZXNvbHZlKHRoaXMuaW5wdXQsIHtcbiAgICAgICAgICBzY29wZTogcnVsZSxcbiAgICAgICAgICByZXNvbHZlcjogbmV3IEV2ZW50RmllbGRSZXBsYWNlcigpLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGlucHV0UGF0aHNNYXApO1xuXG4gICAgaWYgKGtleXMubGVuZ3RoID09PSAwKSB7XG4gICAgICAvLyBOb3RoaW5nIHNwZWNpYWwsIGp1c3QgcmV0dXJuICdpbnB1dCdcbiAgICAgIHJldHVybiB7IGlucHV0OiByZXNvbHZlZCB9O1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpbnB1dFRlbXBsYXRlOiB0aGlzLnVucXVvdGVLZXlQbGFjZWhvbGRlcnMocmVzb2x2ZWQsIGtleXMpLFxuICAgICAgaW5wdXRQYXRoc01hcCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIFJlbW92aW5nIHN1cnJvdW5kaW5nIHF1b3RlcyBmcm9tIGFueSBvYmplY3QgcGxhY2Vob2xkZXJzXG4gICAqIHdoZW4ga2V5IGlzIHRoZSBsb25lIHZhbHVlLlxuICAgKlxuICAgKiBUaG9zZSBoYXZlIGJlZW4gcHV0IHRoZXJlIGJ5IEpTT04uc3RyaW5naWZ5KCksIGJ1dCB3ZSBuZWVkIHRvXG4gICAqIHJlbW92ZSB0aGVtLlxuICAgKlxuICAgKiBEbyBub3QgcmVtb3ZlIHF1b3RlcyB3aGVuIHRoZSBrZXkgaXMgcGFydCBvZiBhIGxhcmdlciBzdHJpbmcuXG4gICAqXG4gICAqIFZhbGlkOiB7IFwiZGF0YVwiOiBcIlNvbWUgc3RyaW5nIHdpdGggXFxcInF1b3Rlc1xcXCI8a2V5PlwiIH0gLy8ga2V5IHdpbGwgYmUgc3RyaW5nXG4gICAqIFZhbGlkOiB7IFwiZGF0YVwiOiA8a2V5PiB9IC8vIEtleSBjb3VsZCBiZSBudW1iZXIsIGJvb2wsIG9iaiwgb3Igc3RyaW5nXG4gICAqL1xuICBwcml2YXRlIHVucXVvdGVLZXlQbGFjZWhvbGRlcnMoc3ViOiBzdHJpbmcsIGtleXM6IHN0cmluZ1tdKSB7XG4gICAgaWYgKHRoaXMuaW5wdXRUeXBlICE9PSBJbnB1dFR5cGUuT2JqZWN0KSB7XG4gICAgICByZXR1cm4gc3ViO1xuICAgIH1cblxuICAgIHJldHVybiBMYXp5LnN0cmluZ1ZhbHVlKHtcbiAgICAgIHByb2R1Y2U6IChjdHg6IElSZXNvbHZlQ29udGV4dCkgPT5cbiAgICAgICAgVG9rZW4uYXNTdHJpbmcoZGVlcFVucXVvdGUoY3R4LnJlc29sdmUoc3ViKSkpLFxuICAgIH0pO1xuXG4gICAgZnVuY3Rpb24gZGVlcFVucXVvdGUocmVzb2x2ZWQ6IGFueSk6IGFueSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheShyZXNvbHZlZCkpIHtcbiAgICAgICAgcmV0dXJuIHJlc29sdmVkLm1hcChkZWVwVW5xdW90ZSk7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZXNvbHZlZCA9PT0gXCJvYmplY3RcIiAmJiByZXNvbHZlZCAhPT0gbnVsbCkge1xuICAgICAgICBmb3IgKGNvbnN0IFtrZXksIHZhbHVlXSBvZiBPYmplY3QuZW50cmllcyhyZXNvbHZlZCkpIHtcbiAgICAgICAgICByZXNvbHZlZFtrZXldID0gZGVlcFVucXVvdGUodmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByZXNvbHZlZDtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlc29sdmVkID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgIHJldHVybiBrZXlzLnJlZHVjZShcbiAgICAgICAgICAociwga2V5KSA9PlxuICAgICAgICAgICAgci5yZXBsYWNlKG5ldyBSZWdFeHAoYCg/PCFcXFxcXFxcXClcXFwiXFw8JHtrZXl9XFw+XFxcImAsIFwiZ1wiKSwgYDwke2tleX0+YCksXG4gICAgICAgICAgcmVzb2x2ZWQsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzb2x2ZWQ7XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZpZWxkIGluIHRoZSBldmVudCBwYXR0ZXJuXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudEZpZWxkIGltcGxlbWVudHMgSVJlc29sdmFibGUge1xuICAvKipcbiAgICogRXh0cmFjdCB0aGUgZXZlbnQgSUQgZnJvbSB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGV2ZW50SWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tUGF0aChcIiQuaWRcIik7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCB0aGUgZGV0YWlsIHR5cGUgZnJvbSB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGRldGFpbFR5cGUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tUGF0aChcIiQuZGV0YWlsLXR5cGVcIik7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCB0aGUgc291cmNlIGZyb20gdGhlIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCBzb3VyY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tUGF0aChcIiQuc291cmNlXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdGhlIGFjY291bnQgZnJvbSB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGFjY291bnQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tUGF0aChcIiQuYWNjb3VudFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHRoZSB0aW1lIGZyb20gdGhlIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCB0aW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZnJvbVBhdGgoXCIkLnRpbWVcIik7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCB0aGUgcmVnaW9uIGZyb20gdGhlIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGdldCByZWdpb24oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tUGF0aChcIiQucmVnaW9uXCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgYSBjdXN0b20gSlNPTiBwYXRoIGZyb20gdGhlIGV2ZW50XG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21QYXRoKHBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIG5ldyBFdmVudEZpZWxkKHBhdGgpLnRvU3RyaW5nKCk7XG4gIH1cblxuICAvKipcbiAgICogSHVtYW4gcmVhZGFibGUgZGlzcGxheSBoaW50IGFib3V0IHRoZSBldmVudCBwYXR0ZXJuXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZGlzcGxheUhpbnQ6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGNyZWF0aW9uU3RhY2s6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aCB0aGUgcGF0aCB0byBhIGZpZWxkIGluIHRoZSBldmVudCBwYXR0ZXJuXG4gICAqL1xuICBwcml2YXRlIGNvbnN0cnVjdG9yKHB1YmxpYyByZWFkb25seSBwYXRoOiBzdHJpbmcpIHtcbiAgICB0aGlzLmRpc3BsYXlIaW50ID0gdGhpcy5wYXRoXG4gICAgICAucmVwbGFjZSgvXlteYS16QS1aMC05Xy1dKy8sIFwiXCIpXG4gICAgICAucmVwbGFjZSgvW15hLXpBLVowLTlfLV0vZywgXCItXCIpO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0aGlzLCBFVkVOVF9GSUVMRF9TWU1CT0wsIHsgdmFsdWU6IHRydWUgfSk7XG5cbiAgICAvLyBUT0RPOiBJbXBsZW1lbnQgc3RhY2sgdHJhY2VzXG4gICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvYmxvYi92MC4yMC43L3BhY2thZ2VzL2Nka3RmL2xpYi9hcHAudHMjTDExMVxuICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tY2RrL2Jsb2IvdjAuMjAuOS9wYWNrYWdlcy9jZGt0Zi9saWIvdG9rZW5zL3ByaXZhdGUvc3RhY2stdHJhY2UudHMjTDlcbiAgICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE0My4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2NvcmUvbGliL3N0YWNrLXRyYWNlLnRzI0wyMlxuICAgIHRoaXMuY3JlYXRpb25TdGFjayA9IFtcInN0YWNrIHRyYWNlcyBkaXNhYmxlZFwiXTtcbiAgfVxuXG4gIHB1YmxpYyByZXNvbHZlKF9jdHg6IElSZXNvbHZlQ29udGV4dCk6IGFueSB7XG4gICAgcmV0dXJuIHRoaXMucGF0aDtcbiAgfVxuXG4gIHB1YmxpYyB0b1N0cmluZygpIHtcbiAgICByZXR1cm4gVG9rZW4uYXNTdHJpbmcodGhpcywgeyBkaXNwbGF5SGludDogdGhpcy5kaXNwbGF5SGludCB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb252ZXJ0IHRoZSBwYXRoIHRvIHRoZSBmaWVsZCBpbiB0aGUgZXZlbnQgcGF0dGVybiB0byBKU09OXG4gICAqL1xuICBwdWJsaWMgdG9KU09OKCkge1xuICAgIHJldHVybiBgPHBhdGg6JHt0aGlzLnBhdGh9PmA7XG4gIH1cbn1cblxuZW51bSBJbnB1dFR5cGUge1xuICBPYmplY3QsXG4gIFRleHQsXG4gIE11bHRpbGluZSxcbn1cblxuZnVuY3Rpb24gaXNFdmVudEZpZWxkKHg6IGFueSk6IHggaXMgRXZlbnRGaWVsZCB7XG4gIHJldHVybiBFVkVOVF9GSUVMRF9TWU1CT0wgaW4geDtcbn1cblxuY29uc3QgRVZFTlRfRklFTERfU1lNQk9MID0gU3ltYm9sLmZvcihcbiAgXCJ0ZXJyYWNvbnN0cnVjdHMvbGliL2F3cy9ub3RpZnkuRXZlbnRGaWVsZFwiLFxuKTtcbiJdfQ==
283
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5wdXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL25vdGlmeS9pbnB1dC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLDRGQUE0RjtBQUU1RixpQ0FRZTtBQUVmLDRDQUF3QztBQUV4Qzs7R0FFRztBQUNILE1BQXNCLGVBQWU7SUFDbkM7Ozs7Ozs7OztPQVNHO0lBQ0ksTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFZO1FBQ2pDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNJLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxJQUFZO1FBQzFDLE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQzdELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLE1BQU0sQ0FBQyxVQUFVLENBQUMsR0FBUTtRQUMvQixPQUFPLElBQUksb0JBQW9CLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUN6RCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsYUFBYSxDQUFDLElBQVk7UUFDdEMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVELGdCQUF5QixDQUFDOztBQTdDNUIsMENBbURDOzs7QUFvQ0Q7O0dBRUc7QUFDSCxNQUFNLGlCQUFrQixTQUFRLGVBQWU7SUFDN0MsWUFBNkIsS0FBZ0M7UUFDM0QsS0FBSyxFQUFFLENBQUM7UUFEbUIsVUFBSyxHQUFMLEtBQUssQ0FBMkI7SUFFN0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLEtBQVk7UUFDdEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQUVEOzs7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LDJDQUEyQyxDQUM1QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTU2LjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWV2ZW50cy9saWIvaW5wdXQudHNcblxuaW1wb3J0IHtcbiAgRGVmYXVsdFRva2VuUmVzb2x2ZXIsXG4gIElSZXNvbHZhYmxlLFxuICBJUmVzb2x2ZUNvbnRleHQsXG4gIExhenksXG4gIFN0cmluZ0NvbmNhdCxcbiAgVG9rZW4sXG4gIFRva2VuaXphdGlvbixcbn0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBJUnVsZSB9IGZyb20gXCIuL3J1bGVcIjtcbmltcG9ydCB7IEF3c1N0YWNrIH0gZnJvbSBcIi4uL2F3cy1zdGFja1wiO1xuXG4vKipcbiAqIFRoZSBpbnB1dCB0byBzZW5kIHRvIHRoZSBldmVudCB0YXJnZXRcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFJ1bGVUYXJnZXRJbnB1dCB7XG4gIC8qKlxuICAgKiBQYXNzIHRleHQgdG8gdGhlIGV2ZW50IHRhcmdldFxuICAgKlxuICAgKiBNYXkgY29udGFpbiBzdHJpbmdzIHJldHVybmVkIGJ5IGBFdmVudEZpZWxkLmZyb20oKWAgdG8gc3Vic3RpdHV0ZSBpbiBwYXJ0cyBvZiB0aGVcbiAgICogbWF0Y2hlZCBldmVudC5cbiAgICpcbiAgICogVGhlIFJ1bGUgVGFyZ2V0IGlucHV0IHZhbHVlIHdpbGwgYmUgYSBzaW5nbGUgc3RyaW5nOiB0aGUgc3RyaW5nIHlvdSBwYXNzXG4gICAqIGhlcmUuICBEbyBub3QgdXNlIHRoaXMgbWV0aG9kIHRvIHBhc3MgYSBjb21wbGV4IHZhbHVlIGxpa2UgYSBKU09OIG9iamVjdCB0b1xuICAgKiBhIFJ1bGUgVGFyZ2V0LiAgVXNlIGBSdWxlVGFyZ2V0SW5wdXQuZnJvbU9iamVjdCgpYCBpbnN0ZWFkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tVGV4dCh0ZXh0OiBzdHJpbmcpOiBSdWxlVGFyZ2V0SW5wdXQge1xuICAgIHJldHVybiBuZXcgRmllbGRBd2FyZUV2ZW50SW5wdXQodGV4dCwgSW5wdXRUeXBlLlRleHQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFBhc3MgdGV4dCB0byB0aGUgZXZlbnQgdGFyZ2V0LCBzcGxpdHRpbmcgb24gbmV3bGluZXMuXG4gICAqXG4gICAqIFRoaXMgaXMgb25seSB1c2VmdWwgd2hlbiBwYXNzaW5nIHRvIGEgdGFyZ2V0IHRoYXQgZG9lcyBub3RcbiAgICogdGFrZSBhIHNpbmdsZSBhcmd1bWVudC5cbiAgICpcbiAgICogTWF5IGNvbnRhaW4gc3RyaW5ncyByZXR1cm5lZCBieSBgRXZlbnRGaWVsZC5mcm9tKClgIHRvIHN1YnN0aXR1dGUgaW4gcGFydHNcbiAgICogb2YgdGhlIG1hdGNoZWQgZXZlbnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21NdWx0aWxpbmVUZXh0KHRleHQ6IHN0cmluZyk6IFJ1bGVUYXJnZXRJbnB1dCB7XG4gICAgcmV0dXJuIG5ldyBGaWVsZEF3YXJlRXZlbnRJbnB1dCh0ZXh0LCBJbnB1dFR5cGUuTXVsdGlsaW5lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBQYXNzIGEgSlNPTiBvYmplY3QgdG8gdGhlIGV2ZW50IHRhcmdldFxuICAgKlxuICAgKiBNYXkgY29udGFpbiBzdHJpbmdzIHJldHVybmVkIGJ5IGBFdmVudEZpZWxkLmZyb20oKWAgdG8gc3Vic3RpdHV0ZSBpbiBwYXJ0cyBvZiB0aGVcbiAgICogbWF0Y2hlZCBldmVudC5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbU9iamVjdChvYmo6IGFueSk6IFJ1bGVUYXJnZXRJbnB1dCB7XG4gICAgcmV0dXJuIG5ldyBGaWVsZEF3YXJlRXZlbnRJbnB1dChvYmosIElucHV0VHlwZS5PYmplY3QpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRha2UgdGhlIGV2ZW50IHRhcmdldCBpbnB1dCBmcm9tIGEgcGF0aCBpbiB0aGUgZXZlbnQgSlNPTlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tRXZlbnRQYXRoKHBhdGg6IHN0cmluZyk6IFJ1bGVUYXJnZXRJbnB1dCB7XG4gICAgcmV0dXJuIG5ldyBMaXRlcmFsRXZlbnRJbnB1dCh7IGlucHV0UGF0aDogcGF0aCB9KTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgLyoqXG4gICAqIFJldHVybiB0aGUgaW5wdXQgcHJvcGVydGllcyBmb3IgdGhpcyBpbnB1dCBvYmplY3RcbiAgICovXG4gIHB1YmxpYyBhYnN0cmFjdCBiaW5kKHJ1bGU6IElSdWxlKTogUnVsZVRhcmdldElucHV0UHJvcGVydGllcztcbn1cblxuLyoqXG4gKiBUaGUgaW5wdXQgcHJvcGVydGllcyBmb3IgYW4gZXZlbnQgdGFyZ2V0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZVRhcmdldElucHV0UHJvcGVydGllcyB7XG4gIC8qKlxuICAgKiBMaXRlcmFsIGlucHV0IHRvIHRoZSB0YXJnZXQgc2VydmljZSAobXVzdCBiZSB2YWxpZCBKU09OKVxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGlucHV0IGZvciB0aGUgZXZlbnQgdGFyZ2V0LiBJZiB0aGUgaW5wdXQgY29udGFpbnMgYSBwYXRocyBtYXBcbiAgICogICB2YWx1ZXMgd2lsIGJlIGV4dHJhY3RlZCBmcm9tIGV2ZW50IGFuZCBpbnNlcnRlZCBpbnRvIHRoZSBgaW5wdXRUZW1wbGF0ZWAuXG4gICAqL1xuICByZWFkb25seSBpbnB1dD86IHN0cmluZztcblxuICAvKipcbiAgICogSnNvblBhdGggdG8gdGFrZSBpbnB1dCBmcm9tIHRoZSBpbnB1dCBldmVudFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuIFRoZSBlbnRpcmUgbWF0Y2hlZCBldmVudCBpcyBwYXNzZWQgYXMgaW5wdXRcbiAgICovXG4gIHJlYWRvbmx5IGlucHV0UGF0aD86IHN0cmluZztcblxuICAvKipcbiAgICogSW5wdXQgdGVtcGxhdGUgdG8gaW5zZXJ0IHBhdGhzIG1hcCBpbnRvXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZS5cbiAgICovXG4gIHJlYWRvbmx5IGlucHV0VGVtcGxhdGU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFBhdGhzIG1hcCB0byBleHRyYWN0IHZhbHVlcyBmcm9tIGV2ZW50IGFuZCBpbnNlcnQgaW50byBgaW5wdXRUZW1wbGF0ZWBcbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyB2YWx1ZXMgZXh0cmFjdGVkIGZyb20gZXZlbnQuXG4gICAqL1xuICByZWFkb25seSBpbnB1dFBhdGhzTWFwPzogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfTtcbn1cblxuLyoqXG4gKiBFdmVudCBJbnB1dCB0aGF0IGlzIGRpcmVjdGx5IGRlcml2ZWQgZnJvbSB0aGUgY29uc3RydWN0XG4gKi9cbmNsYXNzIExpdGVyYWxFdmVudElucHV0IGV4dGVuZHMgUnVsZVRhcmdldElucHV0IHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBwcm9wczogUnVsZVRhcmdldElucHV0UHJvcGVydGllcykge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHRoZSBpbnB1dCBwcm9wZXJ0aWVzIGZvciB0aGlzIGlucHV0IG9iamVjdFxuICAgKi9cbiAgcHVibGljIGJpbmQoX3J1bGU6IElSdWxlKTogUnVsZVRhcmdldElucHV0UHJvcGVydGllcyB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHM7XG4gIH1cbn1cblxuLyoqXG4gKiBJbnB1dCBvYmplY3QgdGhhdCBjYW4gY29udGFpbiBmaWVsZCByZXBsYWNlbWVudHNcbiAqXG4gKiBFdmFsdWF0aW9uIGlzIGRvbmUgaW4gdGhlIGJpbmQoKSBtZXRob2QgYmVjYXVzZSB0b2tlbiByZXNvbHV0aW9uXG4gKiByZXF1aXJlcyBhY2Nlc3MgdG8gdGhlIGNvbnN0cnVjdCB0cmVlLlxuICpcbiAqIE11bHRpcGxlIHRva2VucyB0aGF0IHVzZSB0aGUgc2FtZSBwYXRoIHdpbGwgdXNlIHRoZSBzYW1lIHN1YnN0aXR1dGlvblxuICoga2V5LlxuICpcbiAqIE9uZSB3ZWlyZCBleGNlcHRpb246IGlmIHdlJ3JlIGluIG9iamVjdCBjb250ZXh0LCB3ZSBNVVNUIHNraXAgdGhlIHF1b3Rlc1xuICogYXJvdW5kIHRoZSBwbGFjZWhvbGRlci4gSSBhc3N1bWUgdGhpcyBpcyBzbyBvbmNlIGEgdHJpdmlhbCBzdHJpbmcgcmVwbGFjZSBpc1xuICogZG9uZSBsYXRlciBvbiBieSBFdmVudEJyaWRnZSwgbnVtYmVycyBhcmUgc3RpbGwgbnVtYmVycy5cbiAqXG4gKiBTbyBpbiBzdHJpbmcgY29udGV4dDpcbiAqXG4gKiAgICBcInRoaXMgaXMgYSBzdHJpbmcgd2l0aCBhIDxmaWVsZD5cIlxuICpcbiAqIEJ1dCBpbiBvYmplY3QgY29udGV4dDpcbiAqXG4gKiAgICBcInsgXFxcInRoaXMgaXMgdGhlXFxcIjogPGZpZWxkPiB9XCJcbiAqXG4gKiBUbyBhY2hpZXZlIHRoZSBsYXR0ZXIsIHdlIHBvc3Rwcm9jZXNzIHRoZSBKU09OIHN0cmluZyB0byByZW1vdmUgdGhlIHN1cnJvdW5kaW5nXG4gKiBxdW90ZXMgYnkgdXNpbmcgYSBzdHJpbmcgcmVwbGFjZS5cbiAqL1xuY2xhc3MgRmllbGRBd2FyZUV2ZW50SW5wdXQgZXh0ZW5kcyBSdWxlVGFyZ2V0SW5wdXQge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHJlYWRvbmx5IGlucHV0OiBhbnksXG4gICAgcHJpdmF0ZSByZWFkb25seSBpbnB1dFR5cGU6IElucHV0VHlwZSxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBiaW5kKHJ1bGU6IElSdWxlKTogUnVsZVRhcmdldElucHV0UHJvcGVydGllcyB7XG4gICAgbGV0IGZpZWxkQ291bnRlciA9IDA7XG4gICAgY29uc3QgcGF0aFRvS2V5ID0gbmV3IE1hcDxzdHJpbmcsIHN0cmluZz4oKTtcbiAgICBjb25zdCBpbnB1dFBhdGhzTWFwOiB7IFtrZXk6IHN0cmluZ106IHN0cmluZyB9ID0ge307XG5cbiAgICBmdW5jdGlvbiBrZXlGb3JGaWVsZChmOiBFdmVudEZpZWxkKSB7XG4gICAgICBjb25zdCBleGlzdGluZyA9IHBhdGhUb0tleS5nZXQoZi5wYXRoKTtcbiAgICAgIGlmIChleGlzdGluZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHJldHVybiBleGlzdGluZztcbiAgICAgIH1cblxuICAgICAgZmllbGRDb3VudGVyICs9IDE7XG4gICAgICBjb25zdCBrZXkgPSBmLmRpc3BsYXlIaW50IHx8IGBmJHtmaWVsZENvdW50ZXJ9YDtcbiAgICAgIHBhdGhUb0tleS5zZXQoZi5wYXRoLCBrZXkpO1xuICAgICAgcmV0dXJuIGtleTtcbiAgICB9XG5cbiAgICBjbGFzcyBFdmVudEZpZWxkUmVwbGFjZXIgZXh0ZW5kcyBEZWZhdWx0VG9rZW5SZXNvbHZlciB7XG4gICAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgc3VwZXIobmV3IFN0cmluZ0NvbmNhdCgpKTtcbiAgICAgIH1cblxuICAgICAgcHVibGljIHJlc29sdmVUb2tlbih0OiBUb2tlbiwgX2NvbnRleHQ6IElSZXNvbHZlQ29udGV4dCkge1xuICAgICAgICBpZiAoIWlzRXZlbnRGaWVsZCh0KSkge1xuICAgICAgICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyh0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleSA9IGtleUZvckZpZWxkKHQpO1xuICAgICAgICBpZiAoaW5wdXRQYXRoc01hcFtrZXldICYmIGlucHV0UGF0aHNNYXBba2V5XSAhPT0gdC5wYXRoKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgICAgYFNpbmdsZSBrZXkgJyR7a2V5fScgaXMgdXNlZCBmb3IgdHdvIGRpZmZlcmVudCBKU09OIHBhdGhzOiAnJHt0LnBhdGh9JyBhbmQgJyR7aW5wdXRQYXRoc01hcFtrZXldfSdgLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaW5wdXRQYXRoc01hcFtrZXldID0gdC5wYXRoO1xuXG4gICAgICAgIHJldHVybiBgPCR7a2V5fT5gO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IHN0YWNrID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QocnVsZSk7XG4gICAgbGV0IHJlc29sdmVkOiBzdHJpbmc7XG4gICAgaWYgKHRoaXMuaW5wdXRUeXBlID09PSBJbnB1dFR5cGUuTXVsdGlsaW5lKSB7XG4gICAgICAvLyBKU09OaWZ5IGluZGl2aWR1YWwgbGluZXNcbiAgICAgIHJlc29sdmVkID0gVG9rZW5pemF0aW9uLnJlc29sdmUodGhpcy5pbnB1dCwge1xuICAgICAgICBzY29wZTogcnVsZSxcbiAgICAgICAgcmVzb2x2ZXI6IG5ldyBFdmVudEZpZWxkUmVwbGFjZXIoKSxcbiAgICAgIH0pO1xuICAgICAgcmVzb2x2ZWQgPSByZXNvbHZlZC5zcGxpdChcIlxcblwiKS5tYXAoc3RhY2sudG9Kc29uU3RyaW5nKS5qb2luKFwiXFxuXCIpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNvbHZlZCA9IHN0YWNrLnRvSnNvblN0cmluZyhcbiAgICAgICAgVG9rZW5pemF0aW9uLnJlc29sdmUodGhpcy5pbnB1dCwge1xuICAgICAgICAgIHNjb3BlOiBydWxlLFxuICAgICAgICAgIHJlc29sdmVyOiBuZXcgRXZlbnRGaWVsZFJlcGxhY2VyKCksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMoaW5wdXRQYXRoc01hcCk7XG5cbiAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgIC8vIE5vdGhpbmcgc3BlY2lhbCwganVzdCByZXR1cm4gJ2lucHV0J1xuICAgICAgcmV0dXJuIHsgaW5wdXQ6IHJlc29sdmVkIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGlucHV0VGVtcGxhdGU6IHRoaXMudW5xdW90ZUtleVBsYWNlaG9sZGVycyhyZXNvbHZlZCwga2V5cyksXG4gICAgICBpbnB1dFBhdGhzTWFwLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogUmVtb3Zpbmcgc3Vycm91bmRpbmcgcXVvdGVzIGZyb20gYW55IG9iamVjdCBwbGFjZWhvbGRlcnNcbiAgICogd2hlbiBrZXkgaXMgdGhlIGxvbmUgdmFsdWUuXG4gICAqXG4gICAqIFRob3NlIGhhdmUgYmVlbiBwdXQgdGhlcmUgYnkgSlNPTi5zdHJpbmdpZnkoKSwgYnV0IHdlIG5lZWQgdG9cbiAgICogcmVtb3ZlIHRoZW0uXG4gICAqXG4gICAqIERvIG5vdCByZW1vdmUgcXVvdGVzIHdoZW4gdGhlIGtleSBpcyBwYXJ0IG9mIGEgbGFyZ2VyIHN0cmluZy5cbiAgICpcbiAgICogVmFsaWQ6IHsgXCJkYXRhXCI6IFwiU29tZSBzdHJpbmcgd2l0aCBcXFwicXVvdGVzXFxcIjxrZXk+XCIgfSAvLyBrZXkgd2lsbCBiZSBzdHJpbmdcbiAgICogVmFsaWQ6IHsgXCJkYXRhXCI6IDxrZXk+IH0gLy8gS2V5IGNvdWxkIGJlIG51bWJlciwgYm9vbCwgb2JqLCBvciBzdHJpbmdcbiAgICovXG4gIHByaXZhdGUgdW5xdW90ZUtleVBsYWNlaG9sZGVycyhzdWI6IHN0cmluZywga2V5czogc3RyaW5nW10pIHtcbiAgICBpZiAodGhpcy5pbnB1dFR5cGUgIT09IElucHV0VHlwZS5PYmplY3QpIHtcbiAgICAgIHJldHVybiBzdWI7XG4gICAgfVxuXG4gICAgcmV0dXJuIExhenkuc3RyaW5nVmFsdWUoe1xuICAgICAgcHJvZHVjZTogKGN0eDogSVJlc29sdmVDb250ZXh0KSA9PlxuICAgICAgICBUb2tlbi5hc1N0cmluZyhkZWVwVW5xdW90ZShjdHgucmVzb2x2ZShzdWIpKSksXG4gICAgfSk7XG5cbiAgICBmdW5jdGlvbiBkZWVwVW5xdW90ZShyZXNvbHZlZDogYW55KTogYW55IHtcbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlc29sdmVkKSkge1xuICAgICAgICByZXR1cm4gcmVzb2x2ZWQubWFwKGRlZXBVbnF1b3RlKTtcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlc29sdmVkID09PSBcIm9iamVjdFwiICYmIHJlc29sdmVkICE9PSBudWxsKSB7XG4gICAgICAgIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKHJlc29sdmVkKSkge1xuICAgICAgICAgIHJlc29sdmVkW2tleV0gPSBkZWVwVW5xdW90ZSh2YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc29sdmVkO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcmVzb2x2ZWQgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgcmV0dXJuIGtleXMucmVkdWNlKFxuICAgICAgICAgIChyLCBrZXkpID0+XG4gICAgICAgICAgICByLnJlcGxhY2UobmV3IFJlZ0V4cChgKD88IVxcXFxcXFxcKVxcXCJcXDwke2tleX1cXD5cXFwiYCwgXCJnXCIpLCBgPCR7a2V5fT5gKSxcbiAgICAgICAgICByZXNvbHZlZCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiByZXNvbHZlZDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZmllbGQgaW4gdGhlIGV2ZW50IHBhdHRlcm5cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50RmllbGQgaW1wbGVtZW50cyBJUmVzb2x2YWJsZSB7XG4gIC8qKlxuICAgKiBFeHRyYWN0IHRoZSBldmVudCBJRCBmcm9tIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgZXZlbnRJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyb21QYXRoKFwiJC5pZFwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHRoZSBkZXRhaWwgdHlwZSBmcm9tIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgZGV0YWlsVHlwZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyb21QYXRoKFwiJC5kZXRhaWwtdHlwZVwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHRoZSBzb3VyY2UgZnJvbSB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHNvdXJjZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyb21QYXRoKFwiJC5zb3VyY2VcIik7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCB0aGUgYWNjb3VudCBmcm9tIHRoZSBldmVudFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBnZXQgYWNjb3VudCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyb21QYXRoKFwiJC5hY2NvdW50XCIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEV4dHJhY3QgdGhlIHRpbWUgZnJvbSB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHRpbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5mcm9tUGF0aChcIiQudGltZVwiKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBFeHRyYWN0IHRoZSByZWdpb24gZnJvbSB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IHJlZ2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmZyb21QYXRoKFwiJC5yZWdpb25cIik7XG4gIH1cblxuICAvKipcbiAgICogRXh0cmFjdCBhIGN1c3RvbSBKU09OIHBhdGggZnJvbSB0aGUgZXZlbnRcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVBhdGgocGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICByZXR1cm4gbmV3IEV2ZW50RmllbGQocGF0aCkudG9TdHJpbmcoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBIdW1hbiByZWFkYWJsZSBkaXNwbGF5IGhpbnQgYWJvdXQgdGhlIGV2ZW50IHBhdHRlcm5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkaXNwbGF5SGludDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgY3JlYXRpb25TdGFjazogc3RyaW5nW107XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoIHRoZSBwYXRoIHRvIGEgZmllbGQgaW4gdGhlIGV2ZW50IHBhdHRlcm5cbiAgICovXG4gIHByaXZhdGUgY29uc3RydWN0b3IocHVibGljIHJlYWRvbmx5IHBhdGg6IHN0cmluZykge1xuICAgIHRoaXMuZGlzcGxheUhpbnQgPSB0aGlzLnBhdGhcbiAgICAgIC5yZXBsYWNlKC9eW15hLXpBLVowLTlfLV0rLywgXCJcIilcbiAgICAgIC5yZXBsYWNlKC9bXmEtekEtWjAtOV8tXS9nLCBcIi1cIik7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRoaXMsIEVWRU5UX0ZJRUxEX1NZTUJPTCwgeyB2YWx1ZTogdHJ1ZSB9KTtcblxuICAgIC8vIFRPRE86IEltcGxlbWVudCBzdGFjayB0cmFjZXNcbiAgICAvLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9oYXNoaWNvcnAvdGVycmFmb3JtLWNkay9ibG9iL3YwLjIwLjcvcGFja2FnZXMvY2RrdGYvbGliL2FwcC50cyNMMTExXG4gICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vaGFzaGljb3JwL3RlcnJhZm9ybS1jZGsvYmxvYi92MC4yMC45L3BhY2thZ2VzL2Nka3RmL2xpYi90b2tlbnMvcHJpdmF0ZS9zdGFjay10cmFjZS50cyNMOVxuICAgIC8vIHJlZjogaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTQzLjAvcGFja2FnZXMvYXdzLWNkay1saWIvY29yZS9saWIvc3RhY2stdHJhY2UudHMjTDIyXG4gICAgdGhpcy5jcmVhdGlvblN0YWNrID0gW1wic3RhY2sgdHJhY2VzIGRpc2FibGVkXCJdO1xuICB9XG5cbiAgcHVibGljIHJlc29sdmUoX2N0eDogSVJlc29sdmVDb250ZXh0KTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5wYXRoO1xuICB9XG5cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIHJldHVybiBUb2tlbi5hc1N0cmluZyh0aGlzLCB7IGRpc3BsYXlIaW50OiB0aGlzLmRpc3BsYXlIaW50IH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnZlcnQgdGhlIHBhdGggdG8gdGhlIGZpZWxkIGluIHRoZSBldmVudCBwYXR0ZXJuIHRvIEpTT05cbiAgICovXG4gIHB1YmxpYyB0b0pTT04oKSB7XG4gICAgcmV0dXJuIGA8cGF0aDoke3RoaXMucGF0aH0+YDtcbiAgfVxufVxuXG5lbnVtIElucHV0VHlwZSB7XG4gIE9iamVjdCxcbiAgVGV4dCxcbiAgTXVsdGlsaW5lLFxufVxuXG5mdW5jdGlvbiBpc0V2ZW50RmllbGQoeDogYW55KTogeCBpcyBFdmVudEZpZWxkIHtcbiAgcmV0dXJuIEVWRU5UX0ZJRUxEX1NZTUJPTCBpbiB4O1xufVxuXG5jb25zdCBFVkVOVF9GSUVMRF9TWU1CT0wgPSBTeW1ib2wuZm9yKFxuICBcInRlcnJhY29uc3RydWN0cy9saWIvYXdzL25vdGlmeS5FdmVudEZpZWxkXCIsXG4pO1xuIl19
@@ -494,7 +494,7 @@ class Stream extends StreamBase {
494
494
  }
495
495
  exports.Stream = Stream;
496
496
  _a = JSII_RTTI_SYMBOL_1;
497
- Stream[_a] = { fqn: "terraconstructs.aws.notify.Stream", version: "0.0.13" };
497
+ Stream[_a] = { fqn: "terraconstructs.aws.notify.Stream", version: "0.0.15" };
498
498
  /**
499
499
  * What kind of server-side encryption to apply to this stream
500
500
  */
@@ -35,5 +35,5 @@ class QueuePolicy extends aws_construct_1.AwsConstructBase {
35
35
  }
36
36
  exports.QueuePolicy = QueuePolicy;
37
37
  _a = JSII_RTTI_SYMBOL_1;
38
- QueuePolicy[_a] = { fqn: "terraconstructs.aws.notify.QueuePolicy", version: "0.0.13" };
38
+ QueuePolicy[_a] = { fqn: "terraconstructs.aws.notify.QueuePolicy", version: "0.0.15" };
39
39
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVldWUtcG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvcXVldWUtcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsc0RBQXFEO0FBRXJELG9EQUF1RTtBQUV2RSxnQ0FBd0M7QUFZeEM7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQWEsV0FBWSxTQUFRLGdDQUFnQjtJQUsvQyxJQUFXLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQztJQUMvQixDQUFDO0lBQ0QsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF1QjtRQUMvRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksb0JBQWMsQ0FBQyxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFFbkQsSUFBSSw2QkFBYyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2xELE1BQU0sRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUk7WUFDMUIsUUFBUSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsUUFBUTtTQUMvQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQWhCSCxrQ0FpQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBzcXNRdWV1ZVBvbGljeSB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQXdzQ29uc3RydWN0QmFzZSwgQXdzQ29uc3RydWN0UHJvcHMgfSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgSVF1ZXVlIH0gZnJvbSBcIi4vXCI7XG5pbXBvcnQgeyBQb2xpY3lEb2N1bWVudCB9IGZyb20gXCIuLi9pYW1cIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIHRvIGFzc29jaWF0ZSBTUVMgcXVldWVzIHdpdGggYSBwb2xpY3lcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBRdWV1ZVBvbGljeVByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIHNldCBvZiBxdWV1ZXMgdGhpcyBwb2xpY3kgYXBwbGllcyB0by5cbiAgICovXG4gIHJlYWRvbmx5IHF1ZXVlOiBJUXVldWU7XG59XG5cbi8qKlxuICogVGhlIHBvbGljeSBmb3IgYW4gU1FTIFF1ZXVlXG4gKlxuICogUG9saWNpZXMgZGVmaW5lIHRoZSBvcGVyYXRpb25zIHRoYXQgYXJlIGFsbG93ZWQgb24gdGhpcyByZXNvdXJjZS5cbiAqXG4gKiBZb3UgYWxtb3N0IG5ldmVyIG5lZWQgdG8gZGVmaW5lIHRoaXMgY29uc3RydWN0IGRpcmVjdGx5LlxuICpcbiAqIEFsbCBBV1MgcmVzb3VyY2VzIHRoYXQgc3VwcG9ydCByZXNvdXJjZSBwb2xpY2llcyBoYXZlIGEgbWV0aG9kIGNhbGxlZFxuICogYGFkZFRvUmVzb3VyY2VQb2xpY3koKWAsIHdoaWNoIHdpbGwgYXV0b21hdGljYWxseSBjcmVhdGUgYSBuZXcgcmVzb3VyY2VcbiAqIHBvbGljeSBpZiBvbmUgZG9lc24ndCBleGlzdCB5ZXQsIG90aGVyd2lzZSBpdCB3aWxsIGFkZCB0byB0aGUgZXhpc3RpbmdcbiAqIHBvbGljeS5cbiAqXG4gKiBQcmVmZXIgdG8gdXNlIGBhZGRUb1Jlc291cmNlUG9saWN5KClgIGluc3RlYWQuXG4gKi9cbmV4cG9ydCBjbGFzcyBRdWV1ZVBvbGljeSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2Uge1xuICAvKipcbiAgICogVGhlIElBTSBwb2xpY3kgZG9jdW1lbnQgZm9yIHRoaXMgcG9saWN5LlxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvY3VtZW50OiBQb2xpY3lEb2N1bWVudDtcbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRvY3VtZW50Lm91dHB1dHM7XG4gIH1cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFF1ZXVlUG9saWN5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcbiAgICB0aGlzLmRvY3VtZW50ID0gbmV3IFBvbGljeURvY3VtZW50KHRoaXMsIFwiUG9saWN5XCIpO1xuXG4gICAgbmV3IHNxc1F1ZXVlUG9saWN5LlNxc1F1ZXVlUG9saWN5KHRoaXMsIFwiUmVzb3VyY2VcIiwge1xuICAgICAgcG9saWN5OiB0aGlzLmRvY3VtZW50Lmpzb24sXG4gICAgICBxdWV1ZVVybDogcHJvcHMucXVldWUucXVldWVVcmwsXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -255,7 +255,7 @@ class Queue extends aws_construct_1.AwsConstructBase {
255
255
  }
256
256
  exports.Queue = Queue;
257
257
  _a = JSII_RTTI_SYMBOL_1;
258
- Queue[_a] = { fqn: "terraconstructs.aws.notify.Queue", version: "0.0.13" };
258
+ Queue[_a] = { fqn: "terraconstructs.aws.notify.Queue", version: "0.0.15" };
259
259
  /**
260
260
  * The permission type that defines which source queues can specify the current queue as the dead-letter queue
261
261
  */
@@ -39,5 +39,5 @@ class ResourcePolicy extends aws_construct_1.AwsConstructBase {
39
39
  }
40
40
  exports.ResourcePolicy = ResourcePolicy;
41
41
  _a = JSII_RTTI_SYMBOL_1;
42
- ResourcePolicy[_a] = { fqn: "terraconstructs.aws.notify.ResourcePolicy", version: "0.0.13" };
42
+ ResourcePolicy[_a] = { fqn: "terraconstructs.aws.notify.ResourcePolicy", version: "0.0.15" };
43
43
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2UtcG9saWN5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ub3RpZnkvcmVzb3VyY2UtcG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUdBQXVHO0FBRXZHLHNEQUE0RDtBQUU1RCxvREFBdUU7QUFFdkUsZ0NBQXdDO0FBbUJ4Qzs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBYSxjQUFlLFNBQVEsZ0NBQWdCO0lBS2xELElBQVcsT0FBTztRQUNoQjs7V0FFRztRQUNILE9BQU8sRUFBRSxDQUFDO0lBQ1osQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxjQUFjLElBQUksSUFBSSxvQkFBYyxDQUFDLElBQUksRUFBRSxRQUFRLENBQUMsQ0FBQztRQUUzRSxJQUFJLG9DQUFxQixDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxVQUFVLEVBQUU7WUFDaEUsTUFBTSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSTtZQUMxQixXQUFXLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxTQUFTO1NBQ3BDLENBQUMsQ0FBQztJQUNMLENBQUM7O0FBckJILHdDQXNCQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3MC4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1raW5lc2lzL2xpYi9yZXNvdXJjZS1wb2xpY3kudHNcblxuaW1wb3J0IHsga2luZXNpc1Jlc291cmNlUG9saWN5IH0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBBd3NDb25zdHJ1Y3RCYXNlLCBBd3NDb25zdHJ1Y3RQcm9wcyB9IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBJU3RyZWFtIH0gZnJvbSBcIi4va2luZXNpcy1zdHJlYW1cIjtcbmltcG9ydCB7IFBvbGljeURvY3VtZW50IH0gZnJvbSBcIi4uL2lhbVwiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgdG8gYXNzb2NpYXRlIGEgZGF0YSBzdHJlYW0gd2l0aCBhIHBvbGljeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlUG9saWN5UHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgc3RyZWFtIHRoaXMgcG9saWN5IGFwcGxpZXMgdG8uXG4gICAqL1xuICByZWFkb25seSBzdHJlYW06IElTdHJlYW07XG5cbiAgLyoqXG4gICAqIElBTSBwb2xpY3kgZG9jdW1lbnQgdG8gYXBwbHkgdG8gYSBkYXRhIHN0cmVhbS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBlbXB0eSBwb2xpY3kgZG9jdW1lbnRcbiAgICovXG4gIHJlYWRvbmx5IHBvbGljeURvY3VtZW50PzogUG9saWN5RG9jdW1lbnQ7XG59XG5cbi8qKlxuICogVGhlIHBvbGljeSBmb3IgYSBkYXRhIHN0cmVhbSBvciByZWdpc3RlcmVkIGNvbnN1bWVyLlxuICpcbiAqIFBvbGljaWVzIGRlZmluZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGFyZSBhbGxvd2VkIG9uIHRoaXMgcmVzb3VyY2UuXG4gKlxuICogWW91IGFsbW9zdCBuZXZlciBuZWVkIHRvIGRlZmluZSB0aGlzIGNvbnN0cnVjdCBkaXJlY3RseS5cbiAqXG4gKiBBbGwgQVdTIHJlc291cmNlcyB0aGF0IHN1cHBvcnQgcmVzb3VyY2UgcG9saWNpZXMgaGF2ZSBhIG1ldGhvZCBjYWxsZWRcbiAqIGBhZGRUb1Jlc291cmNlUG9saWN5KClgLCB3aGljaCB3aWxsIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgbmV3IHJlc291cmNlXG4gKiBwb2xpY3kgaWYgb25lIGRvZXNuJ3QgZXhpc3QgeWV0LCBvdGhlcndpc2UgaXQgd2lsbCBhZGQgdG8gdGhlIGV4aXN0aW5nXG4gKiBwb2xpY3kuXG4gKlxuICogUHJlZmVyIHRvIHVzZSBgYWRkVG9SZXNvdXJjZVBvbGljeSgpYCBpbnN0ZWFkLlxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VQb2xpY3kgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIHtcbiAgLyoqXG4gICAqIFRoZSBJQU0gcG9saWN5IGRvY3VtZW50IGZvciB0aGlzIHBvbGljeS5cbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkb2N1bWVudDogUG9saWN5RG9jdW1lbnQ7XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICAvKipcbiAgICAgKiBUaGlzIHJlc291cmNlIGV4cG9ydHMgbm8gYWRkaXRpb25hbCBhdHRyaWJ1dGVzLlxuICAgICAqL1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZXNvdXJjZVBvbGljeVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMuZG9jdW1lbnQgPSBwcm9wcy5wb2xpY3lEb2N1bWVudCA/PyBuZXcgUG9saWN5RG9jdW1lbnQodGhpcywgXCJQb2xpY3lcIik7XG5cbiAgICBuZXcga2luZXNpc1Jlc291cmNlUG9saWN5LktpbmVzaXNSZXNvdXJjZVBvbGljeSh0aGlzLCBcIlJlc291cmNlXCIsIHtcbiAgICAgIHBvbGljeTogdGhpcy5kb2N1bWVudC5qc29uLFxuICAgICAgcmVzb3VyY2VBcm46IHByb3BzLnN0cmVhbS5zdHJlYW1Bcm4sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -224,5 +224,5 @@ class Rule extends aws_construct_1.AwsConstructBase {
224
224
  }
225
225
  exports.Rule = Rule;
226
226
  _a = JSII_RTTI_SYMBOL_1;
227
- Rule[_a] = { fqn: "terraconstructs.aws.notify.Rule", version: "0.0.13" };
227
+ Rule[_a] = { fqn: "terraconstructs.aws.notify.Rule", version: "0.0.15" };
228
228
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3Mvbm90aWZ5L3J1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyRkFBMkY7QUFFM0Ysc0RBSTZCO0FBQzdCLGlDQUFvQztBQUVwQyxnQ0FBbUM7QUFDbkMsb0RBSTBCO0FBQzFCLDRDQUF3QztBQVF4QyxpQ0FBK0Q7QUFvRy9ELE1BQWEsSUFBSyxTQUFRLGdDQUFnQjtJQUN4Qzs7Ozs7O09BTUc7SUFDSSxNQUFNLENBQUMsZ0JBQWdCLENBQzVCLEtBQWdCLEVBQ2hCLEVBQVUsRUFDVixZQUFvQjtRQUVwQixNQUFNLEtBQUssR0FBRyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxRQUFRLENBQ25ELFlBQVksRUFDWixlQUFTLENBQUMsbUJBQW1CLENBQzlCLENBQUM7UUFFRixNQUFNLE1BQU8sU0FBUSxnQ0FBZ0I7WUFBckM7O2dCQUNTLFlBQU8sR0FBRyxZQUFZLENBQUM7Z0JBQ3ZCLGFBQVEsR0FBRyxLQUFLLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQztnQkFDcEMsZ0JBQVcsR0FBRztvQkFDbkIsSUFBSSxFQUFFLElBQUksQ0FBQyxRQUFRO29CQUNuQixHQUFHLEVBQUUsSUFBSSxDQUFDLE9BQU87aUJBQ2xCLENBQUM7Z0JBQ0ssWUFBTyxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDcEMsQ0FBQztTQUFBO1FBQ0QsT0FBTyxJQUFJLE1BQU0sQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQzNCLGtCQUFrQixFQUFFLFlBQVk7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUdELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDO0lBQzNCLENBQUM7SUFDRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQztJQUM1QixDQUFDO0lB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LGFBQWEsS0FBSyxTQUFTO2dCQUNyQyxDQUFDLENBQUM7b0JBQ0UsYUFBYSxFQUFFLFVBQVUsQ0FBQyxhQUFhO29CQUN2QyxVQUFVLEVBQUUsVUFBVSxDQUFDLGFBQWE7aUJBQ3JDO2dCQUNILENBQUMsQ0FBQyxTQUFTO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksV0FBVztRQUNoQjs7V0FFRztRQUNILEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ2xDLDhDQUE4QztZQUM5QyxtR0FBbUc7WUFDbkcsNEdBQTRHO1lBQzVHLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLFFBQVMsQ0FBQztnQkFBRSxTQUFTLENBQUMsOEJBQThCO1lBQ3RGLElBQUksb0NBQXFCLENBQUMscUJBQXFCLENBQzdDLElBQUksRUFDSixNQUFNLENBQUMsUUFBUyxFQUNoQixNQUFNLENBQ1AsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7O0FBOVBILG9CQStQQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1ldmVudHMvbGliL3J1bGUudHNcblxuaW1wb3J0IHtcbiAgY2xvdWR3YXRjaEV2ZW50UnVsZSxcbiAgY2xvdWR3YXRjaEV2ZW50VGFyZ2V0LFxuICAvL3NjaGVkdWxlclNjaGVkdWxlR3JvdXAgLy9UT0RPOiBzdXBwb3J0IHNjaGVkdWxlciBncm91cHM/XG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBMYXp5LCBUb2tlbiB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IEFybkZvcm1hdCB9IGZyb20gXCIuLi9hcm5cIjtcbmltcG9ydCB7XG4gIEF3c0NvbnN0cnVjdEJhc2UsXG4gIElBd3NDb25zdHJ1Y3QsXG4gIEF3c0NvbnN0cnVjdFByb3BzLFxufSBmcm9tIFwiLi4vYXdzLWNvbnN0cnVjdFwiO1xuaW1wb3J0IHsgQXdzU3RhY2sgfSBmcm9tIFwiLi4vYXdzLXN0YWNrXCI7XG5pbXBvcnQge1xuICBTY2hlZHVsZSxcbiAgRXZlbnRQYXR0ZXJuLFxuICBJUnVsZVRhcmdldCxcbiAgSUV2ZW50QnVzLFxuICBFdmVudENvbW1vbk9wdGlvbnMsXG59IGZyb20gXCIuL1wiO1xuaW1wb3J0IHsgbWVyZ2VFdmVudFBhdHRlcm4sIHJlbmRlckV2ZW50UGF0dGVybiB9IGZyb20gXCIuL3V0aWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSdWxlUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcywgRXZlbnRDb21tb25PcHRpb25zIHtcbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRoZSBydWxlIGlzIGVuYWJsZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBSdWxlIE5hbWUgcHJlZml4IHRvIGFwcGVuZCB0byBHcmlkIFVVSURcbiAgICpcbiAgICogUnVsZSBuYW1lcyBtdXN0IGJlIG1hZGUgdXAgb2Ygb25seSB1cHBlcmNhc2UgYW5kIGxvd2VyY2FzZSBBU0NJSSBsZXR0ZXJzLFxuICAgKiBudW1iZXJzLCB1bmRlcnNjb3JlcywgYW5kIGh5cGhlbnMsIGFuZCBEdWUgdG8gdGhlIGxlbmd0aCBvZiB0aGUgdGYgZ2VuZXJhdGVkXG4gICAqIHN1ZmZpeCwgbXVzdCBiZSA2NCBjaGFyYWN0ZXJzIG9yIGxlc3MgbG9uZy5cbiAgICpcbiAgICpcbiAgICogQGRlZmF1bHQgLSBHcmlkVVVJRCArIFN0YWNrIFVuaXF1ZSBOYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lUHJlZml4Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgc2NoZWR1bGUgb3IgcmF0ZSAoZnJlcXVlbmN5KSB0aGF0IGRldGVybWluZXMgd2hlbiBFdmVudEJyaWRnZVxuICAgKiBydW5zIHRoZSBydWxlLlxuICAgKlxuICAgKiBZb3UgbXVzdCBzcGVjaWZ5IHRoaXMgcHJvcGVydHksIHRoZSBgZXZlbnRQYXR0ZXJuYCBwcm9wZXJ0eSwgb3IgYm90aC5cbiAgICpcbiAgICogRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZSBTY2hlZHVsZSBFeHByZXNzaW9uIFN5bnRheCBmb3JcbiAgICogUnVsZXMgaW4gdGhlIEFtYXpvbiBFdmVudEJyaWRnZSBVc2VyIEd1aWRlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9ldmVudGJyaWRnZS9sYXRlc3QvdXNlcmd1aWRlL3NjaGVkdWxlZC1ldmVudHMuaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmUuXG4gICAqL1xuICByZWFkb25seSBzY2hlZHVsZT86IFNjaGVkdWxlO1xuXG4gIC8qKlxuICAgKiBUYXJnZXRzIHRvIGludm9rZSB3aGVuIHRoaXMgcnVsZSBtYXRjaGVzIGFuIGV2ZW50LlxuICAgKlxuICAgKiBJbnB1dCB3aWxsIGJlIHRoZSBmdWxsIG1hdGNoZWQgZXZlbnQuIElmIHlvdSB3aXNoIHRvIHNwZWNpZnkgY3VzdG9tXG4gICAqIHRhcmdldCBpbnB1dCwgdXNlIGBhZGRUYXJnZXQodGFyZ2V0WywgaW5wdXRPcHRpb25zXSlgLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIHRhcmdldHMuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRzPzogSVJ1bGVUYXJnZXRbXTtcblxuICAvKipcbiAgICogVGhlIGV2ZW50IGJ1cyB0byBhc3NvY2lhdGUgd2l0aCB0aGlzIHJ1bGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gVGhlIGRlZmF1bHQgZXZlbnQgYnVzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXZlbnRCdXM/OiBJRXZlbnRCdXM7XG5cbiAgLy8gLyoqXG4gIC8vICAqIEFkZGl0aW9uYWwgcmVzdHJpY3Rpb25zIGZvciB0aGUgZXZlbnQgdG8gcm91dGUgdG8gdGhlIHNwZWNpZmllZCB0YXJnZXRcbiAgLy8gICpcbiAgLy8gICogVGhlIG1ldGhvZCB0aGF0IGdlbmVyYXRlcyB0aGUgcnVsZSBwcm9iYWJseSBpbXBvc2VzIHNvbWUgdHlwZSBvZiBldmVudFxuICAvLyAgKiBmaWx0ZXJpbmcuIFRoZSBmaWx0ZXJpbmcgaW1wbGllZCBieSB3aGF0IHlvdSBwYXNzIGhlcmUgaXMgYWRkZWRcbiAgLy8gICogb24gdG9wIG9mIHRoYXQgZmlsdGVyaW5nLlxuICAvLyAgKlxuICAvLyAgKiBAZGVmYXVsdCAtIE5vIGFkZGl0aW9uYWwgZmlsdGVyaW5nIGJhc2VkIG9uIGFuIGV2ZW50IHBhdHRlcm4uXG4gIC8vICAqXG4gIC8vICAqIEBzZWVcbiAgLy8gICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2V2ZW50YnJpZGdlL2xhdGVzdC91c2VyZ3VpZGUvZXZlbnRicmlkZ2UtYW5kLWV2ZW50LXBhdHRlcm5zLmh0bWxcbiAgLy8gICovXG4gIC8vIHJlYWRvbmx5IGV2ZW50UGF0dGVybj86IEV2ZW50UGF0dGVybjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSdWxlT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBSdWxlIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogUnVsZSBhcm5cbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElSdWxlIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCB7XG4gIC8qKiBTdHJvbmdseSB0eXBlZCBvdXRwdXRzICovXG4gIHJlYWRvbmx5IHJ1bGVPdXRwdXRzOiBSdWxlT3V0cHV0cztcbiAgLyoqXG4gICAqIFRoZSB2YWx1ZSBvZiB0aGUgZXZlbnQgcnVsZSBBbWF6b24gUmVzb3VyY2UgTmFtZSAoQVJOKSwgc3VjaCBhc1xuICAgKiBhcm46YXdzOmV2ZW50czp1cy1lYXN0LTI6MTIzNDU2Nzg5MDEyOnJ1bGUvZXhhbXBsZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcnVsZUFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBldmVudCBydWxlXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJ1bGVOYW1lOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBSdWxlIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElSdWxlIHtcbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBFdmVudEJyaWRnZSBSdWxlIHByb3ZpZGVkIGFuIEFSTlxuICAgKlxuICAgKiBAcGFyYW0gc2NvcGUgVGhlIHBhcmVudCBjcmVhdGluZyBjb25zdHJ1Y3QgKHVzdWFsbHkgYHRoaXNgKS5cbiAgICogQHBhcmFtIGlkIFRoZSBjb25zdHJ1Y3QncyBuYW1lLlxuICAgKiBAcGFyYW0gZXZlbnRSdWxlQXJuIEV2ZW50IFJ1bGUgQVJOIChpLmUuIGFybjphd3M6ZXZlbnRzOjxyZWdpb24+OjxhY2NvdW50LWlkPjpydWxlL015U2NoZWR1bGVkUnVsZSkuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21FdmVudFJ1bGVBcm4oXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIGV2ZW50UnVsZUFybjogc3RyaW5nLFxuICApOiBJUnVsZSB7XG4gICAgY29uc3QgcGFydHMgPSBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdChzY29wZSkuc3BsaXRBcm4oXG4gICAgICBldmVudFJ1bGVBcm4sXG4gICAgICBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICApO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElSdWxlIHtcbiAgICAgIHB1YmxpYyBydWxlQXJuID0gZXZlbnRSdWxlQXJuO1xuICAgICAgcHVibGljIHJ1bGVOYW1lID0gcGFydHMucmVzb3VyY2VOYW1lIHx8IFwiXCI7XG4gICAgICBwdWJsaWMgcnVsZU91dHB1dHMgPSB7XG4gICAgICAgIG5hbWU6IHRoaXMucnVsZU5hbWUsXG4gICAgICAgIGFybjogdGhpcy5ydWxlQXJuLFxuICAgICAgfTtcbiAgICAgIHB1YmxpYyBvdXRwdXRzID0gdGhpcy5ydWxlT3V0cHV0cztcbiAgICB9XG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkLCB7XG4gICAgICBlbnZpcm9ubWVudEZyb21Bcm46IGV2ZW50UnVsZUFybixcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWFkb25seSByZXNvdXJjZTogY2xvdWR3YXRjaEV2ZW50UnVsZS5DbG91ZHdhdGNoRXZlbnRSdWxlO1xuICBwdWJsaWMgZ2V0IHJ1bGVBcm4oKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UuYXJuO1xuICB9XG4gIHB1YmxpYyBnZXQgcnVsZU5hbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVzb3VyY2UubmFtZTtcbiAgfVxuICBwdWJsaWMgZ2V0IHJ1bGVPdXRwdXRzKCk6IFJ1bGVPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogdGhpcy5ydWxlTmFtZSxcbiAgICAgIGFybjogdGhpcy5ydWxlQXJuLFxuICAgIH07XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLnJ1bGVPdXRwdXRzO1xuICB9XG5cbiAgcHJpdmF0ZSByZWFkb25seSB0YXJnZXRzID1cbiAgICBuZXcgQXJyYXk8Y2xvdWR3YXRjaEV2ZW50VGFyZ2V0LkNsb3Vkd2F0Y2hFdmVudFRhcmdldENvbmZpZz4oKTtcbiAgcHJpdmF0ZSByZWFkb25seSBldmVudFBhdHRlcm46IEV2ZW50UGF0dGVybiA9IHt9O1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2NoZWR1bGVFeHByZXNzaW9uPzogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBSdWxlUHJvcHMgPSB7fSkge1xuICAgIHN1cGVyKHNjb3BlLCBuYW1lLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuZXZlbnRCdXMgJiYgcHJvcHMuc2NoZWR1bGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgXCJDYW5ub3QgYXNzb2NpYXRlIHJ1bGUgd2l0aCAnZXZlbnRCdXMnIHdoZW4gdXNpbmcgJ3NjaGVkdWxlJ1wiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBsZXQgbmFtZVByZWZpeDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICghcHJvcHMucnVsZU5hbWUpIHtcbiAgICAgIG5hbWVQcmVmaXggPSB0aGlzLnN0YWNrLnVuaXF1ZVJlc291cmNlTmFtZVByZWZpeCh0aGlzLCB7XG4gICAgICAgIHByZWZpeDogcHJvcHMubmFtZVByZWZpeCA/PyB0aGlzLmdyaWRVVUlEICsgXCItXCIsXG4gICAgICAgIGFsbG93ZWRTcGVjaWFsQ2hhcmFjdGVyczogXCIuLV9cIixcbiAgICAgICAgbWF4TGVuZ3RoOiA2NCxcbiAgICAgIH0pO1xuICAgIH1cbiAgICB0aGlzLmRlc2NyaXB0aW9uID0gcHJvcHMuZGVzY3JpcHRpb247XG4gICAgdGhpcy5zY2hlZHVsZUV4cHJlc3Npb24gPSBwcm9wcy5zY2hlZHVsZT8uZXhwcmVzc2lvblN0cmluZztcblxuICAgIC8vIGFkZCBhIHdhcm5pbmcgb24gc3ludGggd2hlbiBtaW51dGUgaXMgbm90IGRlZmluZWQgaW4gYSBjcm9uIHNjaGVkdWxlXG4gICAgcHJvcHMuc2NoZWR1bGU/Ll9iaW5kKHRoaXMpO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZHdhdGNoRXZlbnRSdWxlLkNsb3Vkd2F0Y2hFdmVudFJ1bGUoXG4gICAgICB0aGlzLFxuICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBuYW1lOiBwcm9wcy5ydWxlTmFtZSxcbiAgICAgICAgbmFtZVByZWZpeCxcbiAgICAgICAgZGVzY3JpcHRpb246IHRoaXMuZGVzY3JpcHRpb24sXG4gICAgICAgIHN0YXRlOlxuICAgICAgICAgIHByb3BzLmVuYWJsZWQgPT0gbnVsbFxuICAgICAgICAgICAgPyBcIkVOQUJMRURcIlxuICAgICAgICAgICAgOiBwcm9wcy5lbmFibGVkXG4gICAgICAgICAgICAgID8gXCJFTkFCTEVEXCJcbiAgICAgICAgICAgICAgOiBcIkRJU0FCTEVEXCIsIC8vVE9ETzogc3VwcG9ydCBFTkFCTEVEX1dJVEhfQUxMX0NMT1VEVFJBSUxfTUFOQUdFTUVOVF9FVkVOVFM/XG4gICAgICAgIHNjaGVkdWxlRXhwcmVzc2lvbjogdGhpcy5zY2hlZHVsZUV4cHJlc3Npb24sXG4gICAgICAgIGV2ZW50UGF0dGVybjogTGF6eS5zdHJpbmdWYWx1ZSh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT4gdGhpcy5zdGFjay50b0pzb25TdHJpbmcodGhpcy5fcmVuZGVyRXZlbnRQYXR0ZXJuKCkpLFxuICAgICAgICB9KSxcbiAgICAgICAgLy8gdGVycmFmb3JtLXByb3ZpZGVyLWF3cyBzZXBhcmF0ZXMgdGFyZ2V0cyB0byBkaWZmZXJlbnQgcmVzb3VyY2VzLlxuICAgICAgICAvLyB0YXJnZXRzOiBMYXp5LmFueVZhbHVlKHsgcHJvZHVjZTogKCkgPT4gdGhpcy5yZW5kZXJUYXJnZXRzKCkgfSksXG4gICAgICAgIGV2ZW50QnVzTmFtZTogcHJvcHMuZXZlbnRCdXM/LmV2ZW50QnVzTmFtZSxcbiAgICAgICAgZGVwZW5kc09uOiBwcm9wcy5kZXBlbmRzT24sXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLmFkZEV2ZW50UGF0dGVybihwcm9wcy5ldmVudFBhdHRlcm4pO1xuXG4gICAgZm9yIChjb25zdCB0YXJnZXQgb2YgcHJvcHMudGFyZ2V0cyB8fCBbXSkge1xuICAgICAgdGhpcy5hZGRUYXJnZXQodGFyZ2V0KTtcbiAgICB9XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7XG4gICAgICB2YWxpZGF0ZTogKCkgPT4gdGhpcy52YWxpZGF0ZVJ1bGUocHJvcHMucnVsZU5hbWUpLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYW4gZXZlbnQgcGF0dGVybiBmaWx0ZXIgdG8gdGhpcyBydWxlLiBJZiBhIHBhdHRlcm4gd2FzIGFscmVhZHkgc3BlY2lmaWVkLFxuICAgKiB0aGVzZSB2YWx1ZXMgYXJlIG1lcmdlZCBpbnRvIHRoZSBleGlzdGluZyBwYXR0ZXJuLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIHJ1bGUgYWxyZWFkeSBjb250YWlucyB0aGUgcGF0dGVybjpcbiAgICpcbiAgICogICAge1xuICAgKiAgICAgIFwicmVzb3VyY2VzXCI6IFsgXCJyMVwiIF0sXG4gICAqICAgICAgXCJkZXRhaWxcIjoge1xuICAgKiAgICAgICAgXCJoZWxsb1wiOiBbIDEgXVxuICAgKiAgICAgIH1cbiAgICogICAgfVxuICAgKlxuICAgKiBBbmQgYGFkZEV2ZW50UGF0dGVybmAgaXMgY2FsbGVkIHdpdGggdGhlIHBhdHRlcm46XG4gICAqXG4gICAqICAgIHtcbiAgICogICAgICBcInJlc291cmNlc1wiOiBbIFwicjJcIiBdLFxuICAgKiAgICAgIFwiZGV0YWlsXCI6IHtcbiAgICogICAgICAgIFwiZm9vXCI6IFsgXCJiYXJcIiBdXG4gICAqICAgICAgfVxuICAgKiAgICB9XG4gICAqXG4gICAqIFRoZSByZXN1bHRpbmcgZXZlbnQgcGF0dGVybiB3aWxsIGJlOlxuICAgKlxuICAgKiAgICB7XG4gICAqICAgICAgXCJyZXNvdXJjZXNcIjogWyBcInIxXCIsIFwicjJcIiBdLFxuICAgKiAgICAgIFwiZGV0YWlsXCI6IHtcbiAgICogICAgICAgIFwiaGVsbG9cIjogWyAxIF0sXG4gICAqICAgICAgICBcImZvb1wiOiBbIFwiYmFyXCIgXVxuICAgKiAgICAgIH1cbiAgICogICAgfVxuICAgKlxuICAgKi9cbiAgcHVibGljIGFkZEV2ZW50UGF0dGVybihldmVudFBhdHRlcm4/OiBFdmVudFBhdHRlcm4pIHtcbiAgICBpZiAoIWV2ZW50UGF0dGVybikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBtZXJnZUV2ZW50UGF0dGVybih0aGlzLmV2ZW50UGF0dGVybiwgZXZlbnRQYXR0ZXJuKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBOb3QgcHJpdmF0ZSBvbmx5IHRvIGJlIG92ZXJyaWRlZW4gaW4gQ29weVJ1bGUuXG4gICAqXG4gICAqIEBpbnRlcm5hbFxuICAgKi9cbiAgcHVibGljIF9yZW5kZXJFdmVudFBhdHRlcm4oKTogYW55IHtcbiAgICByZXR1cm4gcmVuZGVyRXZlbnRQYXR0ZXJuKHRoaXMuZXZlbnRQYXR0ZXJuKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVJ1bGUocnVsZU5hbWU/OiBzdHJpbmcpIHtcbiAgICBpZiAocnVsZU5hbWUgIT09IHVuZGVmaW5lZCAmJiAhVG9rZW4uaXNVbnJlc29sdmVkKHJ1bGVOYW1lKSkge1xuICAgICAgaWYgKHJ1bGVOYW1lLmxlbmd0aCA8IDEgfHwgcnVsZU5hbWUubGVuZ3RoID4gNjQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBFdmVudCBydWxlIG5hbWUgbXVzdCBiZSBiZXR3ZWVuIDEgYW5kIDY0IGNoYXJhY3RlcnMuIFJlY2VpdmVkOiAke3J1bGVOYW1lfWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoIS9eW1xcLlxcLV9BLVphLXowLTldKyQvLnRlc3QocnVsZU5hbWUpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRXZlbnQgcnVsZSBuYW1lICR7cnVsZU5hbWV9IGNhbiBjb250YWluIG9ubHkgbGV0dGVycywgbnVtYmVycywgcGVyaW9kcywgaHlwaGVucywgb3IgdW5kZXJzY29yZXMgd2l0aCBubyBzcGFjZXMuYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBjb25zdCBlcnJvcnM6IHN0cmluZ1tdID0gW107XG4gICAgaWYgKFxuICAgICAgT2JqZWN0LmtleXModGhpcy5ldmVudFBhdHRlcm4pLmxlbmd0aCA9PT0gMCAmJlxuICAgICAgIXRoaXMuc2NoZWR1bGVFeHByZXNzaW9uXG4gICAgKSB7XG4gICAgICBlcnJvcnMucHVzaChcIkVpdGhlciAnZXZlbnRQYXR0ZXJuJyBvciAnc2NoZWR1bGUnIG11c3QgYmUgZGVmaW5lZFwiKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50YXJnZXRzLmxlbmd0aCA+IDUpIHtcbiAgICAgIGVycm9ycy5wdXNoKFwiRXZlbnQgcnVsZSBjYW5ub3QgaGF2ZSBtb3JlIHRoYW4gNSB0YXJnZXRzLlwiKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZHMgYSB0YXJnZXQgdG8gdGhlIHJ1bGUuIFRoZSBhYnN0cmFjdCBjbGFzcyBSdWxlVGFyZ2V0IGNhbiBiZSBleHRlbmRlZCB0byBkZWZpbmUgbmV3XG4gICAqIHRhcmdldHMuXG4gICAqXG4gICAqIE5vLW9wIGlmIHRhcmdldCBpcyB1bmRlZmluZWQuXG4gICAqL1xuICBwdWJsaWMgYWRkVGFyZ2V0KHRhcmdldD86IElSdWxlVGFyZ2V0KTogdm9pZCB7XG4gICAgaWYgKCF0YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgLy8gU2ltcGx5IGluY3JlbWVudCBpZCBmb3IgZWFjaCBgYWRkVGFyZ2V0YCBjYWxsLiBUaGlzIGlzIGd1YXJhbnRlZWQgdG8gYmUgdW5pcXVlLlxuICAgIGNvbnN0IHRhcmdldElkID0gYFRhcmdldCR7dGhpcy50YXJnZXRzLmxlbmd0aH1gO1xuICAgIGNvbnN0IHRhcmdldFByb3BzID0gdGFyZ2V0LmJpbmQodGhpcywgdGFyZ2V0SWQpO1xuICAgIGNvbnN0IGlucHV0UHJvcHMgPSB0YXJnZXRQcm9wcy5pbnB1dCAmJiB0YXJnZXRQcm9wcy5pbnB1dC5iaW5kKHRoaXMpO1xuICAgIHRoaXMudGFyZ2V0cy5wdXNoKHtcbiAgICAgIHRhcmdldElkLFxuICAgICAgcm9sZUFybjogdGFyZ2V0UHJvcHMucm9sZT8ucm9sZUFybixcbiAgICAgIHJ1bGU6IHRoaXMucmVzb3VyY2UubmFtZSxcbiAgICAgIGFybjogdGFyZ2V0UHJvcHMuYXJuLFxuICAgICAgZWNzVGFyZ2V0OiB0YXJnZXRQcm9wcy5lY3NQYXJhbWV0ZXJzLFxuICAgICAgaHR0cFRhcmdldDogdGFyZ2V0UHJvcHMuaHR0cFBhcmFtZXRlcnMsXG4gICAgICBraW5lc2lzVGFyZ2V0OiB0YXJnZXRQcm9wcy5raW5lc2lzUGFyYW1ldGVycyxcbiAgICAgIHJ1bkNvbW1hbmRUYXJnZXRzOiB0YXJnZXRQcm9wcy5ydW5Db21tYW5kUGFyYW1ldGVycyxcbiAgICAgIGJhdGNoVGFyZ2V0OiB0YXJnZXRQcm9wcy5iYXRjaFBhcmFtZXRlcnMsXG4gICAgICBkZWFkTGV0dGVyQ29uZmlnOiB0YXJnZXRQcm9wcy5kZWFkTGV0dGVyQ29uZmlnLFxuICAgICAgcmV0cnlQb2xpY3k6IHRhcmdldFByb3BzLnJldHJ5UG9saWN5LFxuICAgICAgc3FzVGFyZ2V0OiB0YXJnZXRQcm9wcy5zcXNQYXJhbWV0ZXJzLFxuICAgICAgcmVkc2hpZnRUYXJnZXQ6IHRhcmdldFByb3BzLnJlZHNoaWZ0RGF0YVBhcmFtZXRlcnMsXG4gICAgICAvLyBUT0RPOiBub3QgYXZhaWxhYmxlIGluIHRlcnJhZm9ybS1wcm92aWRlci1hd3NcbiAgICAgIC8vIGFwcFN5bmNQYXJhbWV0ZXJzOiB0YXJnZXRQcm9wcy5hcHBTeW5jUGFyYW1ldGVycyxcbiAgICAgIGlucHV0OiBpbnB1dFByb3BzICYmIGlucHV0UHJvcHMuaW5wdXQsXG4gICAgICBpbnB1dFBhdGg6IGlucHV0UHJvcHMgJiYgaW5wdXRQcm9wcy5pbnB1dFBhdGgsXG4gICAgICBpbnB1dFRyYW5zZm9ybWVyOlxuICAgICAgICBpbnB1dFByb3BzPy5pbnB1dFRlbXBsYXRlICE9PSB1bmRlZmluZWRcbiAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgaW5wdXRUZW1wbGF0ZTogaW5wdXRQcm9wcy5pbnB1dFRlbXBsYXRlLFxuICAgICAgICAgICAgICBpbnB1dFBhdGhzOiBpbnB1dFByb3BzLmlucHV0UGF0aHNNYXAsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyByZXNvdXJjZSB0byB0aGUgVGVycmFmb3JtIEpTT04gb3V0cHV0IGF0IFN5bnRoIHRpbWUuXG4gICAqXG4gICAqIGNhbGxlZCBieSBUZXJyYWZvcm1TdGFjay5wcmVwYXJlU3RhY2soKVxuICAgKi9cbiAgcHVibGljIHRvVGVycmFmb3JtKCk6IGFueSB7XG4gICAgLyoqXG4gICAgICogQSBwcmVwYXJpbmcgcmVzb2x2ZSBtaWdodCBhZGQgbmV3IHJlc291cmNlcyB0byB0aGUgc3RhY2tcbiAgICAgKi9cbiAgICBmb3IgKGNvbnN0IHRhcmdldCBvZiB0aGlzLnRhcmdldHMpIHtcbiAgICAgIC8vIG5vdGU6IHRhcmdldElkIGlzIGNhbGN1bGF0ZWQgaW4gYWRkVGFyZ2V0KClcbiAgICAgIC8vIFRPRE86IElkZWFsbHkgd2Ugc2hvdWxkIGhhdmUgdXNlZCBJUmVzb2x2YWJsZS5yZXNvbHZlIGFuZCB1c2UgdGhlIElSZXNvbHZlQ29udGV4dC5wcmVwYXJpbmcgZmxhZ1xuICAgICAgLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNzAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtaWFtL2xpYi9wb2xpY3ktZG9jdW1lbnQudHMjTDQ4XG4gICAgICBpZiAodGhpcy5ub2RlLnRyeUZpbmRDaGlsZCh0YXJnZXQudGFyZ2V0SWQhKSkgY29udGludWU7IC8vIGlnbm9yZSBpZiBhbHJlYWR5IGdlbmVyYXRlZFxuICAgICAgbmV3IGNsb3Vkd2F0Y2hFdmVudFRhcmdldC5DbG91ZHdhdGNoRXZlbnRUYXJnZXQoXG4gICAgICAgIHRoaXMsXG4gICAgICAgIHRhcmdldC50YXJnZXRJZCEsXG4gICAgICAgIHRhcmdldCxcbiAgICAgICk7XG4gICAgfVxuICAgIHJldHVybiB7fTtcbiAgfVxufVxuIl19
@@ -85,7 +85,7 @@ class Schedule {
85
85
  }
86
86
  exports.Schedule = Schedule;
87
87
  _a = JSII_RTTI_SYMBOL_1;
88
- Schedule[_a] = { fqn: "terraconstructs.aws.notify.Schedule", version: "0.0.13" };
88
+ Schedule[_a] = { fqn: "terraconstructs.aws.notify.Schedule", version: "0.0.15" };
89
89
  class LiteralSchedule extends Schedule {
90
90
  constructor(expressionString) {
91
91
  super();