terraconstructs 0.0.23 → 0.0.24
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.
- package/.jsii +61226 -46941
- package/go.mod +2 -1
- package/go.sum +2 -0
- package/lib/aws/arn.js +1 -1
- package/lib/aws/aws-construct.js +1 -1
- package/lib/aws/aws-stack.js +1 -1
- package/lib/aws/aws-tags.js +2 -2
- package/lib/aws/cloudwatch/actions/ec2.js +1 -1
- package/lib/aws/cloudwatch/actions/lambda.js +1 -1
- package/lib/aws/cloudwatch/alarm-base.js +1 -1
- package/lib/aws/cloudwatch/alarm-rule.js +1 -1
- package/lib/aws/cloudwatch/alarm-status-widget.js +1 -1
- package/lib/aws/cloudwatch/alarm.js +4 -5
- package/lib/aws/cloudwatch/composite-alarm.js +1 -1
- package/lib/aws/cloudwatch/dashboard.js +1 -1
- package/lib/aws/cloudwatch/data-protection-policy.js +5 -5
- package/lib/aws/cloudwatch/graph.js +8 -8
- package/lib/aws/cloudwatch/layout.js +3 -3
- package/lib/aws/cloudwatch/log-destinations/kinesis.js +1 -1
- package/lib/aws/cloudwatch/log-destinations/lambda.js +1 -1
- package/lib/aws/cloudwatch/log-group.js +3 -3
- package/lib/aws/cloudwatch/log-query.js +1 -1
- package/lib/aws/cloudwatch/log-stream.js +1 -1
- package/lib/aws/cloudwatch/metric-filter.js +1 -1
- package/lib/aws/cloudwatch/metric.js +4 -4
- package/lib/aws/cloudwatch/pattern.js +3 -3
- package/lib/aws/cloudwatch/policy.js +1 -1
- package/lib/aws/cloudwatch/private/metric-util.js +1 -2
- package/lib/aws/cloudwatch/query-definition.js +2 -2
- package/lib/aws/cloudwatch/stats.js +1 -1
- package/lib/aws/cloudwatch/subscription-filter.js +1 -1
- package/lib/aws/cloudwatch/text.js +1 -1
- package/lib/aws/cloudwatch/variable.js +3 -3
- package/lib/aws/cloudwatch/widget.js +1 -1
- package/lib/aws/compute/activity.js +1 -1
- package/lib/aws/compute/alb/application-listener-action.js +1 -1
- package/lib/aws/compute/alb/application-listener-certificate.js +1 -1
- package/lib/aws/compute/alb/application-listener-rule.js +1 -1
- package/lib/aws/compute/alb/application-listener.js +2 -4
- package/lib/aws/compute/alb/application-load-balancer.js +2 -4
- package/lib/aws/compute/alb/application-target-group.js +1 -1
- package/lib/aws/compute/alb/conditions.js +1 -1
- package/lib/aws/compute/alb/trust-store-revocation.js +1 -1
- package/lib/aws/compute/alb/trust-store.js +1 -1
- package/lib/aws/compute/architecture.js +1 -1
- package/lib/aws/compute/aspects/require-imdsv2-aspect.js +2 -2
- package/lib/aws/compute/autoscaling-common/index.d.ts +3 -0
- package/lib/aws/compute/autoscaling-common/index.js +21 -0
- package/lib/aws/compute/autoscaling-common/interval-utils.d.ts +21 -0
- package/lib/aws/compute/autoscaling-common/interval-utils.js +213 -0
- package/lib/aws/compute/autoscaling-common/test-utils.d.ts +21 -0
- package/lib/aws/compute/autoscaling-common/test-utils.js +94 -0
- package/lib/aws/compute/autoscaling-common/types.d.ts +34 -0
- package/lib/aws/compute/autoscaling-common/types.js +3 -0
- package/lib/aws/compute/base-scalable-attribute.d.ts +74 -0
- package/lib/aws/compute/base-scalable-attribute.js +58 -0
- package/lib/aws/compute/bastion-host.js +1 -1
- package/lib/aws/compute/chain.js +1 -1
- package/lib/aws/compute/client-vpn-authorization-rule.js +1 -1
- package/lib/aws/compute/client-vpn-endpoint.js +2 -2
- package/lib/aws/compute/client-vpn-route.js +2 -2
- package/lib/aws/compute/condition.js +1 -1
- package/lib/aws/compute/connections.js +1 -1
- package/lib/aws/compute/ec2-util.js +1 -4
- package/lib/aws/compute/event-invoke-config.js +1 -1
- package/lib/aws/compute/event-source-filter.js +2 -2
- package/lib/aws/compute/event-source-mapping.js +3 -3
- package/lib/aws/compute/event-sources/s3-onfailure-destination.js +1 -1
- package/lib/aws/compute/event-sources/s3.js +1 -1
- package/lib/aws/compute/event-sources/sqs-dlq.js +1 -1
- package/lib/aws/compute/event-sources/sqs.js +1 -1
- package/lib/aws/compute/fields.js +4 -4
- package/lib/aws/compute/function-alias.js +1 -1
- package/lib/aws/compute/function-base.js +7 -8
- package/lib/aws/compute/function-destinations/event-bridge.js +3 -3
- package/lib/aws/compute/function-destinations/function.js +1 -1
- package/lib/aws/compute/function-destinations/sqs.js +1 -1
- package/lib/aws/compute/function-nodejs.js +1 -1
- package/lib/aws/compute/function-url.js +1 -1
- package/lib/aws/compute/function.js +1 -1
- package/lib/aws/compute/index.d.ts +7 -0
- package/lib/aws/compute/index.js +11 -2
- package/lib/aws/compute/instance-types.js +1 -1
- package/lib/aws/compute/instance.js +1 -1
- package/lib/aws/compute/ip-addresses.js +2 -2
- package/lib/aws/compute/ipam.js +1 -1
- package/lib/aws/compute/key-pair.js +1 -1
- package/lib/aws/compute/launch-template.js +2 -2
- package/lib/aws/compute/lb-shared/base-listener.js +1 -1
- package/lib/aws/compute/lb-shared/base-load-balancer.js +2 -2
- package/lib/aws/compute/lb-shared/base-target-group.js +1 -1
- package/lib/aws/compute/lb-shared/listener-certificate.js +1 -1
- package/lib/aws/compute/lb-shared/load-balancer-targets.js +2 -2
- package/lib/aws/compute/lb-shared/util.js +1 -2
- package/lib/aws/compute/lb-targets/alb-target.js +3 -3
- package/lib/aws/compute/lb-targets/instance-target.js +2 -2
- package/lib/aws/compute/lb-targets/ip-target.js +1 -1
- package/lib/aws/compute/lb-targets/lambda-target.js +1 -1
- package/lib/aws/compute/load-balancer.js +3 -3
- package/lib/aws/compute/machine-image/amazon-linux-2022.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux-2023.js +2 -2
- package/lib/aws/compute/machine-image/amazon-linux2.js +2 -2
- package/lib/aws/compute/machine-image/common.js +1 -1
- package/lib/aws/compute/machine-image/machine-image.js +8 -8
- package/lib/aws/compute/machine-image/utils.js +6 -6
- package/lib/aws/compute/nat.js +5 -5
- package/lib/aws/compute/network-acl-types.js +2 -2
- package/lib/aws/compute/network-acl.js +3 -3
- package/lib/aws/compute/nlb/network-listener-action.js +1 -1
- package/lib/aws/compute/nlb/network-listener.js +2 -3
- package/lib/aws/compute/nlb/network-load-balancer.js +1 -1
- package/lib/aws/compute/nlb/network-target-group.js +1 -1
- package/lib/aws/compute/peer.js +1 -1
- package/lib/aws/compute/placement-group.js +1 -1
- package/lib/aws/compute/port.js +1 -1
- package/lib/aws/compute/prefix-list.js +1 -1
- package/lib/aws/compute/private/context-stub.js +2 -2
- package/lib/aws/compute/route.js +11 -11
- package/lib/aws/compute/scalable-target.d.ts +197 -0
- package/lib/aws/compute/scalable-target.js +168 -0
- package/lib/aws/compute/schedule.d.ts +81 -0
- package/lib/aws/compute/schedule.js +145 -0
- package/lib/aws/compute/security-group.js +4 -4
- package/lib/aws/compute/state-graph.js +1 -1
- package/lib/aws/compute/state-machine-fragment.js +1 -1
- package/lib/aws/compute/state-machine.js +4 -4
- package/lib/aws/compute/states/choice.js +1 -1
- package/lib/aws/compute/states/custom-state.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-batcher.js +1 -1
- package/lib/aws/compute/states/distributed-map/item-reader.js +7 -7
- package/lib/aws/compute/states/distributed-map/result-writer.js +1 -1
- package/lib/aws/compute/states/distributed-map.js +4 -4
- package/lib/aws/compute/states/fail.js +1 -1
- package/lib/aws/compute/states/map-base.js +1 -1
- package/lib/aws/compute/states/map.js +1 -1
- package/lib/aws/compute/states/parallel.js +1 -1
- package/lib/aws/compute/states/pass.js +2 -2
- package/lib/aws/compute/states/state.js +1 -1
- package/lib/aws/compute/states/succeed.js +1 -1
- package/lib/aws/compute/states/task-base.js +2 -2
- package/lib/aws/compute/states/task.js +1 -1
- package/lib/aws/compute/states/wait.js +2 -2
- package/lib/aws/compute/step-scaling-action.d.ts +148 -0
- package/lib/aws/compute/step-scaling-action.js +109 -0
- package/lib/aws/compute/step-scaling-policy.d.ts +132 -0
- package/lib/aws/compute/step-scaling-policy.js +153 -0
- package/lib/aws/compute/subnet-v2.js +2 -2
- package/lib/aws/compute/subnet.js +1 -1
- package/lib/aws/compute/target-tracking-scaling-policy.d.ts +262 -0
- package/lib/aws/compute/target-tracking-scaling-policy.js +234 -0
- package/lib/aws/compute/task-credentials.js +1 -1
- package/lib/aws/compute/task-input.js +1 -1
- package/lib/aws/compute/tasks/aws-sdk/call-aws-service.js +1 -1
- package/lib/aws/compute/tasks/eventbridge/put-events.js +1 -1
- package/lib/aws/compute/tasks/http/invoke.js +1 -1
- package/lib/aws/compute/tasks/lambda/invoke.js +1 -1
- package/lib/aws/compute/tasks/sqs/send-message.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/invoke-activity.js +1 -1
- package/lib/aws/compute/tasks/stepfunctions/start-execution.js +1 -1
- package/lib/aws/compute/types.js +1 -1
- package/lib/aws/compute/user-data.js +3 -3
- package/lib/aws/compute/volume.js +2 -2
- package/lib/aws/compute/vpc-endpoint-service.js +1 -1
- package/lib/aws/compute/vpc-endpoint.js +6 -6
- package/lib/aws/compute/vpc-flow-logs.js +4 -4
- package/lib/aws/compute/vpc-v2-base.js +1 -1
- package/lib/aws/compute/vpc-v2.js +2 -2
- package/lib/aws/compute/vpc.d.ts +1 -1
- package/lib/aws/compute/vpc.js +10 -16
- package/lib/aws/compute/vpn.js +4 -7
- package/lib/aws/compute/windows-versions.js +1 -2
- package/lib/aws/edge/certificate.js +1 -1
- package/lib/aws/edge/distribution.js +4 -5
- package/lib/aws/edge/dns-alias-record-targets.js +3 -3
- package/lib/aws/edge/dns-record.js +13 -13
- package/lib/aws/edge/dns-zone.js +1 -1
- package/lib/aws/edge/function.js +2 -2
- package/lib/aws/edge/key-value-store.js +4 -4
- package/lib/aws/edge/origin.js +3 -3
- package/lib/aws/edge/response-headers-policy.js +1 -1
- package/lib/aws/encryption/alias.js +1 -1
- package/lib/aws/encryption/key.js +1 -1
- package/lib/aws/encryption/via-service-principal.js +1 -1
- package/lib/aws/iam/grant.js +3 -4
- package/lib/aws/iam/group.js +1 -1
- package/lib/aws/iam/instance-profile.js +1 -1
- package/lib/aws/iam/managed-policy.js +1 -1
- package/lib/aws/iam/oidc-provider.js +3 -3
- package/lib/aws/iam/policy-document.js +1 -1
- package/lib/aws/iam/policy-statement.js +1 -1
- package/lib/aws/iam/policy.js +1 -1
- package/lib/aws/iam/principals.js +20 -20
- package/lib/aws/iam/role.js +1 -1
- package/lib/aws/iam/saml-provider.js +2 -2
- package/lib/aws/iam/unknown-principal.js +1 -1
- package/lib/aws/iam/user.js +1 -1
- package/lib/aws/network/simple-ipv4-vpc.js +1 -1
- package/lib/aws/network/subnet-group.js +3 -3
- package/lib/aws/network/subnet.js +4 -4
- package/lib/aws/notify/archive.js +1 -1
- package/lib/aws/notify/connection.js +7 -7
- package/lib/aws/notify/event-bus.js +3 -3
- package/lib/aws/notify/event-pattern.js +1 -1
- package/lib/aws/notify/input.js +2 -2
- package/lib/aws/notify/kinesis-stream.js +1 -1
- package/lib/aws/notify/notification-rule.js +1 -1
- package/lib/aws/notify/policy.js +1 -1
- package/lib/aws/notify/queue-policy.js +1 -1
- package/lib/aws/notify/queue.js +1 -1
- package/lib/aws/notify/resource-policy.js +1 -1
- package/lib/aws/notify/rule.js +1 -1
- package/lib/aws/notify/schedule.js +1 -1
- package/lib/aws/notify/subscription-filter.js +1 -1
- package/lib/aws/notify/subscription.js +4 -4
- package/lib/aws/notify/subscriptions/email.js +1 -1
- package/lib/aws/notify/subscriptions/lambda.js +1 -1
- package/lib/aws/notify/subscriptions/sms.js +1 -1
- package/lib/aws/notify/subscriptions/sqs.js +1 -1
- package/lib/aws/notify/subscriptions/url.js +1 -1
- package/lib/aws/notify/targets/event-bus.js +1 -1
- package/lib/aws/notify/targets/function.js +1 -1
- package/lib/aws/notify/targets/log-group.js +2 -2
- package/lib/aws/notify/targets/sqs.js +3 -3
- package/lib/aws/notify/targets/state-machine.js +1 -1
- package/lib/aws/notify/targets/util.js +2 -2
- package/lib/aws/notify/topic-base.js +1 -1
- package/lib/aws/notify/topic.js +1 -1
- package/lib/aws/storage/billing.d.ts +62 -0
- package/lib/aws/storage/billing.js +49 -0
- package/lib/aws/storage/bucket-notifications.js +1 -1
- package/lib/aws/storage/bucket-policy.js +1 -1
- package/lib/aws/storage/bucket-source.js +3 -3
- package/lib/aws/storage/bucket.js +2 -2
- package/lib/aws/storage/capacity.d.ts +96 -0
- package/lib/aws/storage/capacity.js +103 -0
- package/lib/aws/storage/dynamodb-canned-metrics.generated.d.ts +493 -0
- package/lib/aws/storage/dynamodb-canned-metrics.generated.js +263 -0
- package/lib/aws/storage/dynamodb-perms.d.ts +8 -0
- package/lib/aws/storage/dynamodb-perms.js +45 -0
- package/lib/aws/storage/encryption.d.ts +54 -0
- package/lib/aws/storage/encryption.js +116 -0
- package/lib/aws/storage/index.d.ts +6 -0
- package/lib/aws/storage/index.js +10 -1
- package/lib/aws/storage/notification-targets/function.js +1 -1
- package/lib/aws/storage/notification-targets/queue.js +1 -1
- package/lib/aws/storage/origin-access-identity.js +1 -1
- package/lib/aws/storage/parameter.js +2 -2
- package/lib/aws/storage/scalable-attribute-api.d.ts +36 -0
- package/lib/aws/storage/scalable-attribute-api.js +3 -0
- package/lib/aws/storage/scalable-table-attribute.d.ts +32 -0
- package/lib/aws/storage/scalable-table-attribute.js +48 -0
- package/lib/aws/storage/shared.d.ts +419 -0
- package/lib/aws/storage/shared.js +161 -0
- package/lib/aws/storage/table.d.ts +536 -0
- package/lib/aws/storage/table.js +1054 -0
- package/lib/construct-base.js +2 -2
- package/lib/duration.js +1 -1
- package/lib/expiration.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +2 -1
- package/lib/size.js +1 -1
- package/lib/stack-base.js +1 -1
- package/lib/terra-func.js +1 -1
- package/lib/time-zone.d.ts +724 -0
- package/lib/time-zone.js +737 -0
- package/package.json +2 -1
|
@@ -389,7 +389,7 @@ class SecurityGroup extends SecurityGroupBase {
|
|
|
389
389
|
* Add a direct ingress rule
|
|
390
390
|
*/
|
|
391
391
|
addDirectIngressRule(rule) {
|
|
392
|
-
|
|
392
|
+
const r = normalizeDirectRule(rule);
|
|
393
393
|
if (!this.hasIngressRule(r)) {
|
|
394
394
|
this.directIngressRules.push(r);
|
|
395
395
|
}
|
|
@@ -404,7 +404,7 @@ class SecurityGroup extends SecurityGroupBase {
|
|
|
404
404
|
* Add a direct egress rule
|
|
405
405
|
*/
|
|
406
406
|
addDirectEgressRule(rule) {
|
|
407
|
-
|
|
407
|
+
const r = normalizeDirectRule(rule);
|
|
408
408
|
if (!this.hasEgressRule(r)) {
|
|
409
409
|
this.directEgressRules.push(r);
|
|
410
410
|
}
|
|
@@ -469,7 +469,7 @@ class SecurityGroup extends SecurityGroupBase {
|
|
|
469
469
|
}
|
|
470
470
|
exports.SecurityGroup = SecurityGroup;
|
|
471
471
|
_a = JSII_RTTI_SYMBOL_1;
|
|
472
|
-
SecurityGroup[_a] = { fqn: "terraconstructs.aws.compute.SecurityGroup", version: "0.0.
|
|
472
|
+
SecurityGroup[_a] = { fqn: "terraconstructs.aws.compute.SecurityGroup", version: "0.0.24" };
|
|
473
473
|
/**
|
|
474
474
|
* Fix up a direct rule to have fromPort/toPort defined
|
|
475
475
|
*/
|
|
@@ -535,4 +535,4 @@ function isAllTrafficRule(rule) {
|
|
|
535
535
|
rule.cidrIpv6 === "::/0") &&
|
|
536
536
|
rule.ipProtocol === "-1");
|
|
537
537
|
}
|
|
538
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvc2VjdXJpdHktZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrR0FBa0c7QUFFbEcsc0RBSzZCO0FBQzdCLGlDQUFpRDtBQUVqRCwrQ0FBNEM7QUFDNUMsaUNBQXFDO0FBQ3JDLGlDQUE4QjtBQUU5QixvREFJMEI7QUFDMUIsNENBQXdDO0FBQ3hDLGtFQUFrRTtBQUVsRSxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQ3RDLCtDQUErQyxDQUNoRCxDQUFDO0FBRUYsTUFBTSwrQ0FBK0MsR0FDbkQsNkRBQTZELENBQUM7QUFnRWhFOztHQUVHO0FBQ0gsTUFBZSxpQkFDYixTQUFRLGdDQUFnQjtJQUd4Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBTTtRQUNsQyxPQUFPLHFCQUFxQixJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBR0QsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBWUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQVRWLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGdCQUFXLEdBQWdCLElBQUkseUJBQVcsQ0FBQztZQUN6RCxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUM7U0FDdkIsQ0FBQyxDQUFDO1FBR0sscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBS25DLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsS0FBSyxF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QyxRQUFRLEtBQUssQ0FBQyxDQUFDLFFBQVE7UUFDekIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTTtRQUNyQixDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxRQUFRO1FBQ3pCLENBQUMsQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDLGFBQWE7UUFDbkMsQ0FBQyxDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUN0QyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FDdkIsQ0FBb0MsRUFDcEMsQ0FBb0M7SUFFcEMsT0FBTyxDQUNMLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFVBQVU7UUFDN0IsQ0FBQyxDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUMsY0FBYztRQUNyQyxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxRQUFRO1FBQ3pCLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU07UUFDckIsQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsUUFBUTtRQUN6QixDQUFDLENBQUMsYUFBYSxLQUFLLENBQUMsQ0FBQyxhQUFhO1FBQ25DLENBQUMsQ0FBQyxjQUFjLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FDdEMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZ0JBQWdCLENBQUMsSUFBUztJQUNqQyxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVc7UUFDNUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUN6QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3NS4xL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1lYzIvbGliL3NlY3VyaXR5LWdyb3VwLnRzXG5cbmltcG9ydCB7XG4gIGRhdGFBd3NTZWN1cml0eUdyb3VwLFxuICBzZWN1cml0eUdyb3VwLFxuICB2cGNTZWN1cml0eUdyb3VwRWdyZXNzUnVsZSxcbiAgdnBjU2VjdXJpdHlHcm91cEluZ3Jlc3NSdWxlLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbnMsIExhenksIFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ29ubmVjdGlvbnMgfSBmcm9tIFwiLi9jb25uZWN0aW9uc1wiO1xuaW1wb3J0IHsgSVBlZXIsIFBlZXIgfSBmcm9tIFwiLi9wZWVyXCI7XG5pbXBvcnQgeyBQb3J0IH0gZnJvbSBcIi4vcG9ydFwiO1xuaW1wb3J0IHsgSVZwYyB9IGZyb20gXCIuL3ZwY1wiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbi8vIGltcG9ydCB7IGFsbG93QWxsT3V0Ym91bmRMb2NhbCB9IGZyb20gXCIuL3ByaXZhdGUvY29udGV4dC1zdHViXCI7XG5cbmNvbnN0IFNFQ1VSSVRZX0dST1VQX1NZTUJPTCA9IFN5bWJvbC5mb3IoXG4gIFwidGVycmFjb25zdHJ1Y3RzL2xpYi9hd3MvY29tcHV0ZS5TZWN1cml0eUdyb3VwXCIsXG4pO1xuXG5jb25zdCBTRUNVUklUWV9HUk9VUF9ESVNBQkxFX0lOTElORV9SVUxFU19DT05URVhUX0tFWSA9XG4gIFwidGVycmFjb25zdHJ1Y3RzL2F3cy9jb21wdXRlLnNlY3VyaXR5R3JvdXBEaXNhYmxlSW5saW5lUnVsZXNcIjtcblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBPdXRwdXRzIHtcbiAgLyoqXG4gICAqIElEIGZvciB0aGUgY3VycmVudCBzZWN1cml0eSBncm91cFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIHNlY3VyaXR5IGdyb3VwLWxpa2Ugb2JqZWN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZWN1cml0eUdyb3VwIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCwgSVBlZXIge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0cyAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwT3V0cHV0czogU2VjdXJpdHlHcm91cE91dHB1dHM7XG5cbiAgLyoqXG4gICAqIElEIGZvciB0aGUgY3VycmVudCBzZWN1cml0eSBncm91cFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgU2VjdXJpdHlHcm91cCBoYXMgYmVlbiBjb25maWd1cmVkIHRvIGFsbG93IGFsbCBvdXRib3VuZCB0cmFmZmljXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FsbE91dGJvdW5kOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgYW4gaW5ncmVzcyBydWxlIGZvciB0aGUgY3VycmVudCBzZWN1cml0eSBncm91cFxuICAgKlxuICAgKiBgcmVtb3RlUnVsZWAgY29udHJvbHMgd2hlcmUgdGhlIFJ1bGUgb2JqZWN0IGlzIGNyZWF0ZWQgaWYgdGhlIHBlZXIgaXMgYWxzbyBhXG4gICAqIHNlY3VyaXR5R3JvdXAgYW5kIHRoZXkgYXJlIGluIGRpZmZlcmVudCBzdGFjay4gSWYgZmFsc2UgKGRlZmF1bHQpIHRoZVxuICAgKiBydWxlIG9iamVjdCBpcyBjcmVhdGVkIHVuZGVyIHRoZSBjdXJyZW50IFNlY3VyaXR5R3JvdXAgb2JqZWN0LiBJZiB0cnVlIGFuZCB0aGVcbiAgICogcGVlciBpcyBhbHNvIGEgU2VjdXJpdHlHcm91cCwgdGhlIHJ1bGUgb2JqZWN0IGlzIGNyZWF0ZWQgdW5kZXIgdGhlIHJlbW90ZVxuICAgKiBTZWN1cml0eUdyb3VwIG9iamVjdC5cbiAgICovXG4gIGFkZEluZ3Jlc3NSdWxlKFxuICAgIHBlZXI6IElQZWVyLFxuICAgIGNvbm5lY3Rpb246IFBvcnQsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgcmVtb3RlUnVsZT86IGJvb2xlYW4sXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBlZ3Jlc3MgcnVsZSBmb3IgdGhlIGN1cnJlbnQgc2VjdXJpdHkgZ3JvdXBcbiAgICpcbiAgICogYHJlbW90ZVJ1bGVgIGNvbnRyb2xzIHdoZXJlIHRoZSBSdWxlIG9iamVjdCBpcyBjcmVhdGVkIGlmIHRoZSBwZWVyIGlzIGFsc28gYVxuICAgKiBzZWN1cml0eUdyb3VwIGFuZCB0aGV5IGFyZSBpbiBkaWZmZXJlbnQgc3RhY2suIElmIGZhbHNlIChkZWZhdWx0KSB0aGVcbiAgICogcnVsZSBvYmplY3QgaXMgY3JlYXRlZCB1bmRlciB0aGUgY3VycmVudCBTZWN1cml0eUdyb3VwIG9iamVjdC4gSWYgdHJ1ZSBhbmQgdGhlXG4gICAqIHBlZXIgaXMgYWxzbyBhIFNlY3VyaXR5R3JvdXAsIHRoZSBydWxlIG9iamVjdCBpcyBjcmVhdGVkIHVuZGVyIHRoZSByZW1vdGVcbiAgICogU2VjdXJpdHlHcm91cCBvYmplY3QuXG4gICAqL1xuICBhZGRFZ3Jlc3NSdWxlKFxuICAgIHBlZXI6IElQZWVyLFxuICAgIGNvbm5lY3Rpb246IFBvcnQsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgcmVtb3RlUnVsZT86IGJvb2xlYW4sXG4gICk6IHZvaWQ7XG59XG5cbi8qKlxuICogQSBTZWN1cml0eUdyb3VwIHRoYXQgaXMgbm90IGNyZWF0ZWQgaW4gdGhpcyB0ZW1wbGF0ZVxuICovXG5hYnN0cmFjdCBjbGFzcyBTZWN1cml0eUdyb3VwQmFzZVxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJU2VjdXJpdHlHcm91cFxue1xuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGluZGljYXRlZCBvYmplY3QgaXMgYSBzZWN1cml0eSBncm91cFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1NlY3VyaXR5R3JvdXAoeDogYW55KTogeCBpcyBTZWN1cml0eUdyb3VwQmFzZSB7XG4gICAgcmV0dXJuIFNFQ1VSSVRZX0dST1VQX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZDogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IHNlY3VyaXR5R3JvdXBPdXRwdXRzKCk6IFNlY3VyaXR5R3JvdXBPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VjdXJpdHlHcm91cElkOiB0aGlzLnNlY3VyaXR5R3JvdXBJZCxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zZWN1cml0eUdyb3VwT3V0cHV0cztcbiAgfVxuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWxsb3dBbGxPdXRib3VuZDogYm9vbGVhbjtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFsbG93QWxsSXB2Nk91dGJvdW5kOiBib29sZWFuO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5JbmxpbmVSdWxlID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogQ29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuICAgIHNlY3VyaXR5R3JvdXBzOiBbdGhpc10sXG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdFBvcnQ/OiBQb3J0O1xuXG4gIHByaXZhdGUgcGVlckFzVG9rZW5Db3VudDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEF3c0NvbnN0cnVjdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgU0VDVVJJVFlfR1JPVVBfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCB1bmlxdWVJZCgpIHtcbiAgICByZXR1cm4gQXdzU3RhY2sudW5pcXVlSWQodGhpcy5ub2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRJbmdyZXNzUnVsZShcbiAgICBwZWVyOiBJUGVlcixcbiAgICBjb25uZWN0aW9uOiBQb3J0LFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHJlbW90ZVJ1bGU/OiBib29sZWFuLFxuICApIHtcbiAgICBpZiAoZGVzY3JpcHRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVzY3JpcHRpb24gPSBgZnJvbSAke3BlZXIudW5pcXVlSWR9OiR7Y29ubmVjdGlvbn1gO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2NvcGUsIGlkIH0gPSB0aGlzLmRldGVybWluZVJ1bGVTY29wZShcbiAgICAgIHBlZXIsXG4gICAgICBjb25uZWN0aW9uLFxuICAgICAgXCJmcm9tXCIsXG4gICAgICByZW1vdGVSdWxlLFxuICAgICk7XG5cbiAgICAvLyBTa2lwIGR1cGxpY2F0ZXNcbiAgICBpZiAoc2NvcGUubm9kZS50cnlGaW5kQ2hpbGQoaWQpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ldyB2cGNTZWN1cml0eUdyb3VwSW5ncmVzc1J1bGUuVnBjU2VjdXJpdHlHcm91cEluZ3Jlc3NSdWxlKHNjb3BlLCBpZCwge1xuICAgICAgICBzZWN1cml0eUdyb3VwSWQ6IHRoaXMuc2VjdXJpdHlHcm91cElkLFxuICAgICAgICAuLi5wZWVyLnRvSW5ncmVzc1J1bGVDb25maWcoKSxcbiAgICAgICAgLi4uY29ubmVjdGlvbi50b1J1bGVKc29uKCksXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEVncmVzc1J1bGUoXG4gICAgcGVlcjogSVBlZXIsXG4gICAgY29ubmVjdGlvbjogUG9ydCxcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICByZW1vdGVSdWxlPzogYm9vbGVhbixcbiAgKSB7XG4gICAgaWYgKGRlc2NyaXB0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlc2NyaXB0aW9uID0gYHRvICR7cGVlci51bmlxdWVJZH06JHtjb25uZWN0aW9ufWA7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzY29wZSwgaWQgfSA9IHRoaXMuZGV0ZXJtaW5lUnVsZVNjb3BlKFxuICAgICAgcGVlcixcbiAgICAgIGNvbm5lY3Rpb24sXG4gICAgICBcInRvXCIsXG4gICAgICByZW1vdGVSdWxlLFxuICAgICk7XG5cbiAgICAvLyBTa2lwIGR1cGxpY2F0ZXNcbiAgICBpZiAoc2NvcGUubm9kZS50cnlGaW5kQ2hpbGQoaWQpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ldyB2cGNTZWN1cml0eUdyb3VwRWdyZXNzUnVsZS5WcGNTZWN1cml0eUdyb3VwRWdyZXNzUnVsZShzY29wZSwgaWQsIHtcbiAgICAgICAgc2VjdXJpdHlHcm91cElkOiB0aGlzLnNlY3VyaXR5R3JvdXBJZCxcbiAgICAgICAgLi4ucGVlci50b0VncmVzc1J1bGVDb25maWcoKSxcbiAgICAgICAgLi4uY29ubmVjdGlvbi50b1J1bGVKc29uKCksXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvSW5ncmVzc1J1bGVDb25maWcoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy50b1J1bGVDb25maWcoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0VncmVzc1J1bGVDb25maWcoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy50b1J1bGVDb25maWcoKTtcbiAgfVxuXG4gIC8vIFRlcnJhZm9ybSBkb2VzIG5vdCB1c2UgZGlmZmVyZW50IHByb3BlcnRpZXMgYmV0d2VlbiBpbmdyZXNzIGFuZCBlZ3Jlc3MgcnVsZXNcbiAgcHJpdmF0ZSB0b1J1bGVDb25maWcoKTogYW55IHtcbiAgICByZXR1cm4geyByZWZlcmVuY2VkU2VjdXJpdHlHcm91cElkOiB0aGlzLnNlY3VyaXR5R3JvdXBJZCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGVyZSB0byBwYXJlbnQgYSBuZXcgaW5ncmVzcy9lZ3Jlc3MgcnVsZVxuICAgKlxuICAgKiBBIFNlY3VyaXR5R3JvdXAgcnVsZSBpcyBwYXJlbnRlZCB1bmRlciB0aGUgZ3JvdXAgaXQncyByZWxhdGVkIHRvLCBVTkxFU1NcbiAgICogd2UncmUgaW4gYSBjcm9zcy1zdGFjayBzY2VuYXJpbyB3aXRoIGFub3RoZXIgU2VjdXJpdHkgR3JvdXAuIEluIHRoYXQgY2FzZSxcbiAgICogd2UgcmVzcGVjdCB0aGUgJ3JlbW90ZVJ1bGUnIGZsYWcgYW5kIHdpbGwgcGFyZW50IHVuZGVyIHRoZSBvdGhlciBzZWN1cml0eVxuICAgKiBncm91cC5cbiAgICpcbiAgICogVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgY3ljbGljIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN0YWNrcywgc2luY2UgYm90aFxuICAgKiBpbmdyZXNzIGFuZCBlZ3Jlc3MgcnVsZXMgd2lsbCByZWZlcmVuY2UgYm90aCBzZWN1cml0eSBncm91cHMsIGFuZCBhIG5haXZlXG4gICAqIHBhcmVudGluZyB3aWxsIGxlYWQgdG8gdGhlIGZvbGxvd2luZyBzaXR1YXRpb246XG4gICAqXG4gICAqICAg4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXICAgICAgICAg4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXXG4gICAqICAg4pWRICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgIOKVkSAgICAgICAgIOKVkSAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICDilZFcbiAgICogICDilZEgIOKUgiAgR3JvdXBBICAg4pSC4peA4pSA4pSA4pSA4pSA4pWs4pSA4pSQICAg4pSM4pSA4pSA4pSA4pWs4pSA4pSA4pSA4pa24pSCICBHcm91cEIgICDilIIgICDilZFcbiAgICogICDilZEgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAg4pWRIOKUgiAgIOKUgiAgIOKVkSAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICDilZFcbiAgICogICDilZEgICAgICAgIOKWsiAgICAgICAgICAg4pWRIOKUgiAgIOKUgiAgIOKVkSAgICAgICAgICDilrIgICAgICAgICDilZFcbiAgICogICDilZEgICAgICAgIOKUgiAgICAgICAgICAg4pWRIOKUgiAgIOKUgiAgIOKVkSAgICAgICAgICDilIIgICAgICAgICDilZFcbiAgICogICDilZEgICAgICAgIOKUgiAgICAgICAgICAg4pWRIOKUgiAgIOKUgiAgIOKVkSAgICAgICAgICDilIIgICAgICAgICDilZFcbiAgICogICDilZEgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAg4pWRIOKUlOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKVrOKUgOKUgOKUgOKUgOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgIOKVkVxuICAgKiAgIOKVkSAg4pSCICBFZ3Jlc3NBICDilILilIDilIDilIDilIDilIDilazilIDilIDilIDilIDilIDilJggICDilZEgICAg4pSCIEluZ3Jlc3NCICDilIIgICDilZFcbiAgICogICDilZEgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAg4pWRICAgICAgICAg4pWRICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgIOKVkVxuICAgKiAgIOKVkSAgICAgICAgICAgICAgICAgICAg4pWRICAgICAgICAg4pWRICAgICAgICAgICAgICAgICAgICDilZFcbiAgICogICDilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ0gICAgICAgICDilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ1cbiAgICpcbiAgICogQnkgaGF2aW5nIHRoZSBhYmlsaXR5IHRvIHN3aXRjaCB0aGUgcGFyZW50LCB3ZSBhdm9pZCB0aGUgY3ljbGljIHJlZmVyZW5jZSBieVxuICAgKiBrZWVwaW5nIGFsbCBydWxlcyBpbiBhIHNpbmdsZSBzdGFjay5cbiAgICpcbiAgICogSWYgdGhpcyBoYXBwZW5zLCB3ZSBhbHNvIGhhdmUgdG8gY2hhbmdlIHRoZSBjb25zdHJ1Y3QgSUQsIGJlY2F1c2VcbiAgICogb3RoZXJ3aXNlIHdlIG1pZ2h0IGhhdmUgdHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBJRCBpZiB3ZSBoYXZlXG4gICAqIG11bHRpcGxlIHJldmVyc2VkIHNlY3VyaXR5IGdyb3VwIHJlbGF0aW9uc2hpcHMuXG4gICAqXG4gICAqICAg4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXXG4gICAqICAg4pWR4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAgICAgICAgICAgICAgICAgICAgIOKVkVxuICAgKiAgIOKVkeKUgiAgR3JvdXBCICAg4pSCICAgICAgICAgICAgICAgICAgICAgIOKVkVxuICAgKiAgIOKVkeKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAgICAgICAgICAgICAgICAgICDilZFcbiAgICogICDilZEgICAgICDilrIgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRXG4gICAqICAg4pWRICAgICAg4pSCICAgICAgICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAg4pWRXG4gICAqICAg4pWRICAgICAg4pSc4pSA4pSA4pSA4pSAXCJmcm9tIEFcIuKUgOKUgOKUgiBJbmdyZXNzQiAg4pSCIOKVkVxuICAgKiAgIOKVkSAgICAgIOKUgiAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYIOKVkVxuICAgKiAgIOKVkSAgICAgIOKUgiAgICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQIOKVkVxuICAgKiAgIOKVkSAgICAgIOKUnOKUgOKUgOKUgOKUgOKUgFwidG8gQlwi4pSA4pSA4pSA4pSCICBFZ3Jlc3NBICDilIIg4pWRXG4gICAqICAg4pWRICAgICAg4pSCICAgICAgICAgICAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgg4pWRXG4gICAqICAg4pWRICAgICAg4pSCICAgICAgICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAg4pWRXG4gICAqICAg4pWRICAgICAg4pSU4pSA4pSA4pSA4pSA4pSAXCJ0byBCXCLilIDilIDilIDilIIgIEVncmVzc0MgIOKUgiDilZEgIDwtLSBvb3BzXG4gICAqICAg4pWRICAgICAgICAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYIOKVkVxuICAgKiAgIOKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnVxuICAgKi9cblxuICBwcm90ZWN0ZWQgZGV0ZXJtaW5lUnVsZVNjb3BlKFxuICAgIHBlZXI6IElQZWVyLFxuICAgIGNvbm5lY3Rpb246IFBvcnQsXG4gICAgZnJvbVRvOiBcImZyb21cIiB8IFwidG9cIixcbiAgICByZW1vdGVSdWxlPzogYm9vbGVhbixcbiAgKTogUnVsZVNjb3BlIHtcbiAgICBpZiAoXG4gICAgICByZW1vdGVSdWxlICYmXG4gICAgICBTZWN1cml0eUdyb3VwQmFzZS5pc1NlY3VyaXR5R3JvdXAocGVlcikgJiZcbiAgICAgIGRpZmZlcmVudFN0YWNrcyh0aGlzLCBwZWVyKVxuICAgICkge1xuICAgICAgLy8gUmV2ZXJzZWRcbiAgICAgIGNvbnN0IHJldmVyc2VkRnJvbVRvID0gZnJvbVRvID09PSBcImZyb21cIiA/IFwidG9cIiA6IFwiZnJvbVwiO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NvcGU6IHBlZXIsXG4gICAgICAgIGlkOiBgJHt0aGlzLnVuaXF1ZUlkfToke2Nvbm5lY3Rpb259ICR7cmV2ZXJzZWRGcm9tVG99YCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlZ3VsYXIgKGRvIG9sZCBJRCBlc2NhcGluZyBpbiBvcmRlciB0byBub3QgZGlzdHVyYiBleGlzdGluZyBkZXBsb3ltZW50cylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgICBpZDogYCR7ZnJvbVRvfSAke3RoaXMucmVuZGVyUGVlcihwZWVyKX06JHtjb25uZWN0aW9ufWAucmVwbGFjZShcbiAgICAgICAgICBcIi9cIixcbiAgICAgICAgICBcIl9cIixcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJQZWVyKHBlZXI6IElQZWVyKSB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChwZWVyLnVuaXF1ZUlkKSkge1xuICAgICAgLy8gTmVlZCB0byByZXR1cm4gYSB1bmlxdWUgdmFsdWUgZWFjaCB0aW1lIGEgcGVlclxuICAgICAgLy8gaXMgYW4gdW5yZXNvbHZlZCB0b2tlbiwgZWxzZSB0aGUgZHVwbGljYXRlIHNraXBwZXJcbiAgICAgIC8vIGluIGBzZy5hZGRYeHhSdWxlYCBjYW4gZGV0ZWN0IHVuaXF1ZSBydWxlcyBhcyBkdXBsaWNhdGVzXG4gICAgICByZXR1cm4gdGhpcy5wZWVyQXNUb2tlbkNvdW50KytcbiAgICAgICAgPyBgJ3tJbmRpcmVjdFBlZXIke3RoaXMucGVlckFzVG9rZW5Db3VudH19J2BcbiAgICAgICAgOiBcIntJbmRpcmVjdFBlZXJ9XCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwZWVyLnVuaXF1ZUlkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzY29wZSBhbmQgaWQgaW4gd2hpY2ggYSBnaXZlbiBTZWN1cml0eUdyb3VwIHJ1bGUgc2hvdWxkIGJlIGRlZmluZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZVNjb3BlIHtcbiAgLyoqXG4gICAqIFRoZSBTZWN1cml0eUdyb3VwIGluIHdoaWNoIGEgcnVsZSBzaG91bGQgYmUgc2NvcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IElTZWN1cml0eUdyb3VwO1xuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdCBJRCB0byB1c2UgZm9yIHRoZSBydWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZGlmZmVyZW50U3RhY2tzKGdyb3VwMTogU2VjdXJpdHlHcm91cEJhc2UsIGdyb3VwMjogU2VjdXJpdHlHcm91cEJhc2UpIHtcbiAgcmV0dXJuIEF3c1N0YWNrLm9mKGdyb3VwMSkgIT09IEF3c1N0YWNrLm9mKGdyb3VwMik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cFByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHNlY3VyaXR5IGdyb3VwLiBGb3IgdmFsaWQgdmFsdWVzLCBzZWUgdGhlIEdyb3VwTmFtZVxuICAgKiBwYXJhbWV0ZXIgb2YgdGhlIENyZWF0ZVNlY3VyaXR5R3JvdXAgYWN0aW9uIGluIHRoZSBBbWF6b24gRUMyIEFQSVxuICAgKiBSZWZlcmVuY2UuXG4gICAqXG4gICAqIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgYW4gZXhwbGljaXQgZ3JvdXAgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgSWYgeW91IGRvbid0IHNwZWNpZnkgYSBHcm91cE5hbWUsIEFXUyBDbG91ZEZvcm1hdGlvbiBnZW5lcmF0ZXMgYVxuICAgKiB1bmlxdWUgcGh5c2ljYWwgSUQgYW5kIHVzZXMgdGhhdCBJRCBmb3IgdGhlIGdyb3VwIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBvZiB0aGUgc2VjdXJpdHkgZ3JvdXAuXG4gICAqXG4gICAqIEZvcmNlcyBuZXcgcmVzb3VyY2VcbiAgICpcbiAgICogU2VjdXJpdHkgZ3JvdXAgZGVzY3JpcHRpb24uIERlZmF1bHRzIHRvIGBNYW5hZ2VkIGJ5IFRlcnJhZm9ybWAuIENhbm5vdCBiZSBgXCJcImAuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgZmllbGQgbWFwcyB0byB0aGUgQVdTIGBHcm91cERlc2NyaXB0aW9uYCBhdHRyaWJ1dGUsIGZvciB3aGljaCB0aGVyZSBpcyBubyBVcGRhdGUgQVBJLlxuICAgKiBJZiB5b3UnZCBsaWtlIHRvIGNsYXNzaWZ5IHlvdXIgc2VjdXJpdHkgZ3JvdXBzIGluIGEgd2F5IHRoYXQgY2FuIGJlIHVwZGF0ZWQsIHVzZSB0YWdzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgZGVmYXVsdCBuYW1lIHdpbGwgYmUgdGhlIGNvbnN0cnVjdCdzIENESyBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZSBzZWN1cml0eSBncm91cC5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwYztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBhbGwgb3V0Ym91bmQgdHJhZmZpYyBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIHNldCB0byB0cnVlLCB0aGVyZSB3aWxsIG9ubHkgYmUgYSBzaW5nbGUgZWdyZXNzIHJ1bGUgd2hpY2ggYWxsb3dzIGFsbFxuICAgKiBvdXRib3VuZCB0cmFmZmljLiBJZiB0aGlzIGlzIHNldCB0byBmYWxzZSwgbm8gb3V0Ym91bmQgdHJhZmZpYyB3aWxsIGJlIGFsbG93ZWQgYnlcbiAgICogZGVmYXVsdCBhbmQgYWxsIGVncmVzcyB0cmFmZmljIG11c3QgYmUgZXhwbGljaXRseSBhdXRob3JpemVkLlxuICAgKlxuICAgKiBUbyBhbGxvdyBhbGwgaXB2NiB0cmFmZmljIHVzZSBhbGxvd0FsbElwdjZPdXRib3VuZFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FsbE91dGJvdW5kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBhbGwgb3V0Ym91bmQgaXB2NiB0cmFmZmljIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIHRydWUsIHRoZXJlIHdpbGwgb25seSBiZSBhIHNpbmdsZSBlZ3Jlc3MgcnVsZSB3aGljaCBhbGxvd3MgYWxsXG4gICAqIG91dGJvdW5kIGlwdjYgdHJhZmZpYy4gSWYgdGhpcyBpcyBzZXQgdG8gZmFsc2UsIG5vIG91dGJvdW5kIHRyYWZmaWMgd2lsbCBiZSBhbGxvd2VkIGJ5XG4gICAqIGRlZmF1bHQgYW5kIGFsbCBlZ3Jlc3MgaXB2NiB0cmFmZmljIG11c3QgYmUgZXhwbGljaXRseSBhdXRob3JpemVkLlxuICAgKlxuICAgKiBUbyBhbGxvdyBhbGwgaXB2NCB0cmFmZmljIHVzZSBhbGxvd0FsbE91dGJvdW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FsbElwdjZPdXRib3VuZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSBpbmxpbmUgaW5ncmVzcyBhbmQgZWdyZXNzIHJ1bGUgb3B0aW1pemF0aW9uLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIHNldCB0byB0cnVlLCBpbmdyZXNzIGFuZCBlZ3Jlc3MgcnVsZXMgd2lsbCBub3QgYmUgZGVjbGFyZWQgdW5kZXIgdGhlXG4gICAqIFNlY3VyaXR5R3JvdXAgaW4gY2xvdWRmb3JtYXRpb24sIGJ1dCB3aWxsIGJlIHNlcGFyYXRlIGVsZW1lbnRzLlxuICAgKlxuICAgKiBJbmxpbmluZyBydWxlcyBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIHByb2R1Y2luZyBzbWFsbGVyIHN0YWNrIHRlbXBsYXRlcy4gU29tZXRpbWVzXG4gICAqIHRoaXMgaXMgbm90IGRlc2lyYWJsZSwgZm9yIGV4YW1wbGUgd2hlbiBzZWN1cml0eSBncm91cCBhY2Nlc3MgaXMgbWFuYWdlZCB2aWEgdGFncy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgY2FuIGJlIG92ZXJyaWRlbiBnbG9iYWxseSBieSBzZXR0aW5nIHRoZSBjb250ZXh0IHZhcmlhYmxlXG4gICAqICdAYXdzLWNkay9hd3MtZWMyLnNlY3VyaXR5R3JvdXBEaXNhYmxlSW5saW5lUnVsZXMnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZUlubGluZVJ1bGVzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGltcG9ydGVkIHNlY3VyaXR5IGdyb3Vwc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBJbXBvcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIE1hcmsgdGhlIFNlY3VyaXR5R3JvdXAgYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCBhbGxvd2luZyBhbGwgb3V0Ym91bmQgdHJhZmZpY1xuICAgKlxuICAgKiBPbmx5IGlmIHRoaXMgaXMgc2V0IHRvIGZhbHNlIHdpbGwgZWdyZXNzIHJ1bGVzIGJlIGFkZGVkIHRvIHRoaXMgc2VjdXJpdHlcbiAgICogZ3JvdXAuIEJlIGF3YXJlLCB0aGlzIHdvdWxkIHVuZG8gYW55IHBvdGVudGlhbCBcImFsbCBvdXRib3VuZCB0cmFmZmljXCJcbiAgICogZGVmYXVsdC5cbiAgICpcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dBbGxPdXRib3VuZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhlIFNlY3VyaXR5R3JvdXAgYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCBhbGxvd2luZyBhbGwgb3V0Ym91bmQgaXB2NiB0cmFmZmljXG4gICAqXG4gICAqIE9ubHkgaWYgdGhpcyBpcyBzZXQgdG8gZmFsc2Ugd2lsbCBlZ3Jlc3MgcnVsZXMgZm9yIGlwdjYgYmUgYWRkZWQgdG8gdGhpcyBzZWN1cml0eVxuICAgKiBncm91cC4gQmUgYXdhcmUsIHRoaXMgd291bGQgdW5kbyBhbnkgcG90ZW50aWFsIFwiYWxsIG91dGJvdW5kIHRyYWZmaWNcIlxuICAgKiBkZWZhdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dBbGxJcHY2T3V0Ym91bmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBhIFNlY3VyaXR5R3JvdXAgaXMgbXV0YWJsZSBDREsgY2FuIGFkZCBydWxlcyB0byBleGlzdGluZyBncm91cHNcbiAgICpcbiAgICogQmV3YXJlIHRoYXQgbWFraW5nIGEgU2VjdXJpdHlHcm91cCBpbW11dGFibGUgbWlnaHQgbGVhZCB0byBpc3N1ZVxuICAgKiBkdWUgdG8gbWlzc2luZyBpbmdyZXNzL2VncmVzcyBydWxlcyBmb3IgbmV3IHJlc291cmNlcy5cbiAgICpcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbXV0YWJsZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBBbWF6b24gRUMyIHNlY3VyaXR5IGdyb3VwIHdpdGhpbiBhIFZQQy5cbiAqXG4gKiBTZWN1cml0eSBHcm91cHMgYWN0IGxpa2UgYSBmaXJld2FsbCB3aXRoIGEgc2V0IG9mIHJ1bGVzLCBhbmQgYXJlIGFzc29jaWF0ZWRcbiAqIHdpdGggYW55IEFXUyByZXNvdXJjZSB0aGF0IGhhcyBvciBjcmVhdGVzIEVsYXN0aWMgTmV0d29yayBJbnRlcmZhY2VzIChFTklzKS5cbiAqIEEgdHlwaWNhbCBleGFtcGxlIG9mIGEgcmVzb3VyY2UgdGhhdCBoYXMgYSBzZWN1cml0eSBncm91cCBpcyBhbiBJbnN0YW5jZSAob3JcbiAqIEF1dG8gU2NhbGluZyBHcm91cCBvZiBpbnN0YW5jZXMpXG4gKlxuICogSWYgeW91IGFyZSBkZWZpbmluZyBuZXcgaW5mcmFzdHJ1Y3R1cmUgaW4gQ0RLLCB0aGVyZSBpcyBhIGdvb2QgY2hhbmNlIHlvdVxuICogd29uJ3QgaGF2ZSB0byBpbnRlcmFjdCB3aXRoIHRoaXMgY2xhc3MgYXQgYWxsLiBMaWtlIElBTSBSb2xlcywgU2VjdXJpdHlcbiAqIEdyb3VwcyBuZWVkIHRvIGV4aXN0IHRvIGNvbnRyb2wgYWNjZXNzIGJldHdlZW4gQVdTIHJlc291cmNlcywgYnV0IENESyB3aWxsXG4gKiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGFuZCBwb3B1bGF0ZSB0aGVtIHdpdGggbGVhc3QtcHJpdmlsZWdlIHBlcm1pc3Npb25zXG4gKiBmb3IgeW91IHNvIHlvdSBjYW4gY29uY2VudHJhdGUgb24geW91ciBidXNpbmVzcyBsb2dpYy5cbiAqXG4gKiBBbGwgQ29uc3RydWN0cyB0aGF0IHJlcXVpcmUgU2VjdXJpdHkgR3JvdXBzIHdpbGwgY3JlYXRlIG9uZSBmb3IgeW91IGlmIHlvdVxuICogZG9uJ3Qgc3BlY2lmeSBvbmUgYXQgY29uc3RydWN0aW9uLiBBZnRlciBjb25zdHJ1Y3Rpb24sIHlvdSBjYW4gc2VsZWN0aXZlbHlcbiAqIGFsbG93IGNvbm5lY3Rpb25zIHRvIGFuZCBiZXR3ZWVuIGNvbnN0cnVjdHMgdmlhLS1mb3IgZXhhbXBsZS0tIHRoZSBgaW5zdGFuY2UuY29ubmVjdGlvbnNgXG4gKiBvYmplY3QuIFRoaW5rIG9mIGl0IGFzIFwiYWxsb3dpbmcgY29ubmVjdGlvbnMgdG8geW91ciBpbnN0YW5jZVwiLCByYXRoZXIgdGhhblxuICogXCJhZGRpbmcgaW5ncmVzcyBydWxlcyBhIHNlY3VyaXR5IGdyb3VwXCIuIFNlZSB0aGUgW0FsbG93aW5nXG4gKiBDb25uZWN0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9hcGkvbGF0ZXN0L2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi1yZWFkbWUuaHRtbCNhbGxvd2luZy1jb25uZWN0aW9ucylcbiAqIHNlY3Rpb24gaW4gdGhlIGxpYnJhcnkgZG9jdW1lbnRhdGlvbiBmb3IgZXhhbXBsZXMuXG4gKlxuICogRGlyZWN0IG1hbmlwdWxhdGlvbiBvZiB0aGUgU2VjdXJpdHkgR3JvdXAgdGhyb3VnaCBgYWRkSW5ncmVzc1J1bGVgIGFuZFxuICogYGFkZEVncmVzc1J1bGVgIGlzIHBvc3NpYmxlLCBidXQgbXV0YXRpb24gdGhyb3VnaCB0aGUgYC5jb25uZWN0aW9uc2Agb2JqZWN0XG4gKiBpcyByZWNvbW1lbmRlZC4gSWYgeW91IHBlZXIgdHdvIGNvbnN0cnVjdHMgd2l0aCBzZWN1cml0eSBncm91cHMgdGhpcyB3YXksXG4gKiBhcHByb3ByaWF0ZSBydWxlcyB3aWxsIGJlIGNyZWF0ZWQgaW4gYm90aC5cbiAqXG4gKiBJZiB5b3UgaGF2ZSBhbiBleGlzdGluZyBzZWN1cml0eSBncm91cCB5b3Ugd2FudCB0byB1c2UgaW4geW91ciBDREsgYXBwbGljYXRpb24sXG4gKiB5b3Ugd291bGQgaW1wb3J0IGl0IGxpa2UgdGhpczpcbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgc2VjdXJpdHlHcm91cCA9IGNvbXB1dGUuU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKHRoaXMsICdTRycsICdzZy0xMjM0NScsIHtcbiAqICAgbXV0YWJsZTogZmFsc2VcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWN1cml0eUdyb3VwIGV4dGVuZHMgU2VjdXJpdHlHcm91cEJhc2Uge1xuICAvKipcbiAgICogTG9vayB1cCBhIHNlY3VyaXR5IGdyb3VwIGJ5IGlkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTG9va3VwQnlJZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgc2VjdXJpdHlHcm91cElkOiBzdHJpbmcsXG4gICAgYWxsb3dBbGxPdXRib3VuZD86IGJvb2xlYW4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLmZyb21Mb29rdXBBdHRyaWJ1dGVzKHNjb3BlLCBpZCwge1xuICAgICAgc2VjdXJpdHlHcm91cElkLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rIHVwIGEgc2VjdXJpdHkgZ3JvdXAgYnkgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUxvb2t1cEJ5TmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgc2VjdXJpdHlHcm91cE5hbWU6IHN0cmluZyxcbiAgICB2cGM6IElWcGMsXG4gICAgYWxsb3dBbGxPdXRib3VuZD86IGJvb2xlYW4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLmZyb21Mb29rdXBBdHRyaWJ1dGVzKHNjb3BlLCBpZCwge1xuICAgICAgc2VjdXJpdHlHcm91cE5hbWUsXG4gICAgICB2cGMsXG4gICAgICBhbGxvd0FsbE91dGJvdW5kLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBzZWN1cml0eSBncm91cCBpbnRvIHRoaXMgYXBwLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFzc3VtZSB0aGF0IHRoZSBTZWN1cml0eSBHcm91cCBoYXMgYSBydWxlIGluIGl0IHdoaWNoIGFsbG93c1xuICAgKiBhbGwgb3V0Ym91bmQgdHJhZmZpYywgYW5kIHNvIHdpbGwgbm90IGFkZCBlZ3Jlc3MgcnVsZXMgdG8gdGhlIGltcG9ydGVkIFNlY3VyaXR5XG4gICAqIEdyb3VwIChvbmx5IGluZ3Jlc3MgcnVsZXMpLlxuICAgKlxuICAgKiBJZiB5b3VyIGV4aXN0aW5nIFNlY3VyaXR5IEdyb3VwIG5lZWRzIHRvIGhhdmUgZWdyZXNzIHJ1bGVzIGFkZGVkLCBwYXNzIHRoZVxuICAgKiBgYWxsb3dBbGxPdXRib3VuZDogZmFsc2VgIG9wdGlvbiBvbiBpbXBvcnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZWN1cml0eUdyb3VwSWQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHNlY3VyaXR5R3JvdXBJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFNlY3VyaXR5R3JvdXBJbXBvcnRPcHRpb25zID0ge30sXG4gICk6IElTZWN1cml0eUdyb3VwIHtcbiAgICBjbGFzcyBNdXRhYmxlSW1wb3J0IGV4dGVuZHMgU2VjdXJpdHlHcm91cEJhc2Uge1xuICAgICAgcHVibGljIHNlY3VyaXR5R3JvdXBJZCA9IHNlY3VyaXR5R3JvdXBJZDtcbiAgICAgIHB1YmxpYyBhbGxvd0FsbE91dGJvdW5kID0gb3B0aW9ucy5hbGxvd0FsbE91dGJvdW5kID8/IHRydWU7XG4gICAgICBwdWJsaWMgYWxsb3dBbGxJcHY2T3V0Ym91bmQgPSBvcHRpb25zLmFsbG93QWxsSXB2Nk91dGJvdW5kID8/IGZhbHNlO1xuXG4gICAgICBwdWJsaWMgYWRkRWdyZXNzUnVsZShcbiAgICAgICAgcGVlcjogSVBlZXIsXG4gICAgICAgIGNvbm5lY3Rpb246IFBvcnQsXG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgICAgICByZW1vdGVSdWxlPzogYm9vbGVhbixcbiAgICAgICkge1xuICAgICAgICAvLyBPbmx5IGlmIGFsbG93QWxsT3V0Ym91bmQgaGFzIGJlZW4gZGlzYWJsZWRcbiAgICAgICAgaWYgKG9wdGlvbnMuYWxsb3dBbGxPdXRib3VuZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBzdXBlci5hZGRFZ3Jlc3NSdWxlKHBlZXIsIGNvbm5lY3Rpb24sIGRlc2NyaXB0aW9uLCByZW1vdGVSdWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNsYXNzIEltbXV0YWJsZUltcG9ydCBleHRlbmRzIFNlY3VyaXR5R3JvdXBCYXNlIHtcbiAgICAgIHB1YmxpYyBzZWN1cml0eUdyb3VwSWQgPSBzZWN1cml0eUdyb3VwSWQ7XG4gICAgICBwdWJsaWMgYWxsb3dBbGxPdXRib3VuZCA9IG9wdGlvbnMuYWxsb3dBbGxPdXRib3VuZCA/PyB0cnVlO1xuICAgICAgcHVibGljIGFsbG93QWxsSXB2Nk91dGJvdW5kID0gb3B0aW9ucy5hbGxvd0FsbElwdjZPdXRib3VuZCA/PyBmYWxzZTtcblxuICAgICAgcHVibGljIGFkZEVncmVzc1J1bGUoXG4gICAgICAgIF9wZWVyOiBJUGVlcixcbiAgICAgICAgX2Nvbm5lY3Rpb246IFBvcnQsXG4gICAgICAgIF9kZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICAgICAgX3JlbW90ZVJ1bGU/OiBib29sZWFuLFxuICAgICAgKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgIH1cblxuICAgICAgcHVibGljIGFkZEluZ3Jlc3NSdWxlKFxuICAgICAgICBfcGVlcjogSVBlZXIsXG4gICAgICAgIF9jb25uZWN0aW9uOiBQb3J0LFxuICAgICAgICBfZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgICAgIF9yZW1vdGVSdWxlPzogYm9vbGVhbixcbiAgICAgICkge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnMubXV0YWJsZSAhPT0gZmFsc2VcbiAgICAgID8gbmV3IE11dGFibGVJbXBvcnQoc2NvcGUsIGlkKVxuICAgICAgOiBuZXcgSW1tdXRhYmxlSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogTG9vayB1cCBhIHNlY3VyaXR5IGdyb3VwLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZnJvbUxvb2t1cEF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFNlY3VyaXR5R3JvdXBMb29rdXBPcHRpb25zLFxuICApIHtcbiAgICBpZiAoXG4gICAgICBUb2tlbi5pc1VucmVzb2x2ZWQob3B0aW9ucy5zZWN1cml0eUdyb3VwSWQpIHx8XG4gICAgICBUb2tlbi5pc1VucmVzb2x2ZWQob3B0aW9ucy5zZWN1cml0eUdyb3VwTmFtZSkgfHxcbiAgICAgIFRva2VuLmlzVW5yZXNvbHZlZChvcHRpb25zLnZwYz8udnBjSWQpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQWxsIGFyZ3VtZW50cyB0byBsb29rIHVwIGEgc2VjdXJpdHkgZ3JvdXAgbXVzdCBiZSBjb25jcmV0ZSAobm8gVG9rZW5zKVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gbmV3IGRhdGFBd3NTZWN1cml0eUdyb3VwLkRhdGFBd3NTZWN1cml0eUdyb3VwKHNjb3BlLCBpZCwge1xuICAgICAgdnBjSWQ6IG9wdGlvbnMudnBjPy52cGNJZCxcbiAgICAgIGlkOiBvcHRpb25zLnNlY3VyaXR5R3JvdXBJZCxcbiAgICAgIG5hbWU6IG9wdGlvbnMuc2VjdXJpdHlHcm91cE5hbWUsXG4gICAgfSk7XG5cbiAgICAvLyBUT0RPOiBVc2UgR3JpZCBhcyBjb250ZXh0UHJvdmlkZXJcbiAgICAvLyBXYXJuaW5nOiB1c2luZyBkYXRhIHNvdXJjZSB0byBkZXRlcm1pbmUgaWYgdGhlIHNlY3VyaXR5IGdyb3VwIGFsbG93c1xuICAgIC8vIGFsbCBvdXRib3VuZCB3aXRoIGFsbG93QWxsT3V0Ym91bmRMb2NhbChzY29wZSwgaWQsIGRhdGEuaWQpXG4gICAgLy8gd291bGQgZm9yY2UgYWxsIGRlcGVuZGluZyBjb2RlIHRvIGRlYWwgd2l0aCBUb2tlbnNcbiAgICByZXR1cm4gU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKHNjb3BlLCBpZCwgZGF0YS5pZCwge1xuICAgICAgYWxsb3dBbGxPdXRib3VuZDogb3B0aW9ucy5hbGxvd0FsbE91dGJvdW5kID8/IHRydWUsXG4gICAgICBtdXRhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgc2VjdXJpdHkgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIElEIHRoaXMgc2VjdXJpdHkgZ3JvdXAgaXMgcGFydCBvZi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBWcGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBTZWN1cml0eUdyb3VwIGhhcyBiZWVuIGNvbmZpZ3VyZWQgdG8gYWxsb3cgYWxsIG91dGJvdW5kIHRyYWZmaWNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGxvd0FsbE91dGJvdW5kOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBTZWN1cml0eUdyb3VwIGhhcyBiZWVuIGNvbmZpZ3VyZWQgdG8gYWxsb3cgYWxsIG91dGJvdW5kIGlwdjYgdHJhZmZpY1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsbG93QWxsSXB2Nk91dGJvdW5kOiBib29sZWFuO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwO1xuICBwcml2YXRlIHJlYWRvbmx5IGRpcmVjdEluZ3Jlc3NSdWxlczogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwSW5ncmVzc1tdID1cbiAgICBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXJlY3RFZ3Jlc3NSdWxlczogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwRWdyZXNzW10gPSBbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIG9wdGltaXphdGlvbiBmb3IgaW5saW5lIHNlY3VyaXR5IGdyb3VwIHJ1bGVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkaXNhYmxlSW5saW5lUnVsZXM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlY3VyaXR5R3JvdXBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGNvbnN0IGdyb3VwTmFtZSA9XG4gICAgICBwcm9wcy5zZWN1cml0eUdyb3VwTmFtZSB8fFxuICAgICAgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICBwcmVmaXg6IHRoaXMuZ3JpZFVVSUQsXG4gICAgICB9KTtcblxuICAgIGNvbnN0IGdyb3VwRGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbiB8fCB0aGlzLm5vZGUucGF0aDtcblxuICAgIHRoaXMuYWxsb3dBbGxPdXRib3VuZCA9IHByb3BzLmFsbG93QWxsT3V0Ym91bmQgIT09IGZhbHNlO1xuICAgIHRoaXMuYWxsb3dBbGxJcHY2T3V0Ym91bmQgPSBwcm9wcy5hbGxvd0FsbElwdjZPdXRib3VuZCA/PyBmYWxzZTtcblxuICAgIHRoaXMuZGlzYWJsZUlubGluZVJ1bGVzID1cbiAgICAgIHByb3BzLmRpc2FibGVJbmxpbmVSdWxlcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gISFwcm9wcy5kaXNhYmxlSW5saW5lUnVsZXNcbiAgICAgICAgOiAhIXRoaXMubm9kZS50cnlHZXRDb250ZXh0KFxuICAgICAgICAgICAgU0VDVVJJVFlfR1JPVVBfRElTQUJMRV9JTkxJTkVfUlVMRVNfQ09OVEVYVF9LRVksXG4gICAgICAgICAgKTtcblxuICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IG5ldyBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXAodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBuYW1lOiBncm91cE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogZ3JvdXBEZXNjcmlwdGlvbixcbiAgICAgIGluZ3Jlc3M6IExhenkuYW55VmFsdWUoXG4gICAgICAgIHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgdGhpcy5kaXJlY3RJbmdyZXNzUnVsZXMubWFwKFxuICAgICAgICAgICAgICBzZWN1cml0eUdyb3VwLnNlY3VyaXR5R3JvdXBJbmdyZXNzVG9UZXJyYWZvcm0sXG4gICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICB7IG9taXRFbXB0eUFycmF5OiB0cnVlIH0sXG4gICAgICApLFxuICAgICAgZWdyZXNzOiBMYXp5LmFueVZhbHVlKFxuICAgICAgICB7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT5cbiAgICAgICAgICAgIHRoaXMuZGlyZWN0RWdyZXNzUnVsZXMubWFwKFxuICAgICAgICAgICAgICBzZWN1cml0eUdyb3VwLnNlY3VyaXR5R3JvdXBFZ3Jlc3NUb1RlcnJhZm9ybSxcbiAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIHsgb21pdEVtcHR5QXJyYXk6IHRydWUgfSxcbiAgICAgICksXG4gICAgICB2cGNJZDogcHJvcHMudnBjLnZwY0lkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwSWQgPSB0aGlzLnNlY3VyaXR5R3JvdXAuaWQ7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwVnBjSWQgPSB0aGlzLnNlY3VyaXR5R3JvdXAudnBjSWQ7XG5cbiAgICB0aGlzLmFkZERlZmF1bHRFZ3Jlc3NSdWxlKCk7XG4gICAgdGhpcy5hZGREZWZhdWx0SXB2NkVncmVzc1J1bGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRJbmdyZXNzUnVsZShcbiAgICBwZWVyOiBJUGVlcixcbiAgICBjb25uZWN0aW9uOiBQb3J0LFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHJlbW90ZVJ1bGU/OiBib29sZWFuLFxuICApIHtcbiAgICBpZiAoXG4gICAgICAhcGVlci5jYW5JbmxpbmVSdWxlIHx8XG4gICAgICAhY29ubmVjdGlvbi5jYW5JbmxpbmVSdWxlIHx8XG4gICAgICB0aGlzLmRpc2FibGVJbmxpbmVSdWxlc1xuICAgICkge1xuICAgICAgc3VwZXIuYWRkSW5ncmVzc1J1bGUocGVlciwgY29ubmVjdGlvbiwgZGVzY3JpcHRpb24sIHJlbW90ZVJ1bGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZXNjcmlwdGlvbiA9IGBmcm9tICR7cGVlci51bmlxdWVJZH06JHtjb25uZWN0aW9ufWA7XG4gICAgfVxuXG4gICAgdGhpcy5hZGREaXJlY3RJbmdyZXNzUnVsZSh7XG4gICAgICAuLi5wZWVyLnRvSW5ncmVzc1J1bGVDb25maWcoKSxcbiAgICAgIC4uLmNvbm5lY3Rpb24udG9SdWxlSnNvbigpLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkRWdyZXNzUnVsZShcbiAgICBwZWVyOiBJUGVlcixcbiAgICBjb25uZWN0aW9uOiBQb3J0LFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHJlbW90ZVJ1bGU/OiBib29sZWFuLFxuICApIHtcbiAgICBjb25zdCBpc0lwdjYgPSBwZWVyLnRvRWdyZXNzUnVsZUNvbmZpZygpLmhhc093blByb3BlcnR5KFwiY2lkcklwdjZcIik7XG5cbiAgICBpZiAoIWlzSXB2NiAmJiB0aGlzLmFsbG93QWxsT3V0Ym91bmQpIHtcbiAgICAgIC8vIEluIHRoZSBjYXNlIG9mIFwiYWxsb3dBbGxPdXRib3VuZFwiLCB3ZSBkb24ndCBhZGQgYW55IG1vcmUgcnVsZXMuIFRoZXJlXG4gICAgICAvLyBpcyBvbmx5IG9uZSBydWxlIHdoaWNoIGFsbG93cyBhbGwgdHJhZmZpYyBhbmQgdGhhdCBzdWJzdW1lcyBhbnkgb3RoZXJcbiAgICAgIC8vIHJ1bGUuXG4gICAgICBpZiAoIXJlbW90ZVJ1bGUpIHtcbiAgICAgICAgLy8gV2FybiBvbmx5IGlmIGFkZEVncmVzc1J1bGUoKSB3YXMgZXhwbGljaXRlbHkgY2FsbGVkXG4gICAgICAgIC8vIFwiQGF3cy1jZGsvYXdzLWVjMjppcHY0SWdub3JlRWdyZXNzUnVsZVwiLFxuICAgICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKFxuICAgICAgICAgIFwiSWdub3JpbmcgRWdyZXNzIHJ1bGUgc2luY2UgJ2FsbG93QWxsT3V0Ym91bmQnIGlzIHNldCB0byB0cnVlOyBUbyBhZGQgY3VzdG9taXplZCBydWxlcywgc2V0IGFsbG93QWxsT3V0Ym91bmQ9ZmFsc2Ugb24gdGhlIFNlY3VyaXR5R3JvdXBcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNJcHY2ICYmIHRoaXMuYWxsb3dBbGxJcHY2T3V0Ym91bmQpIHtcbiAgICAgIC8vIEluIHRoZSBjYXNlIG9mIFwiYWxsb3dBbGxJcHY2T3V0Ym91bmRcIiwgd2UgZG9uJ3QgYWRkIGFueSBtb3JlIHJ1bGVzLiBUaGVyZVxuICAgICAgLy8gaXMgb25seSBvbmUgcnVsZSB3aGljaCBhbGxvd3MgYWxsIHRyYWZmaWMgYW5kIHRoYXQgc3Vic3VtZXMgYW55IG90aGVyXG4gICAgICAvLyBydWxlLlxuICAgICAgaWYgKCFyZW1vdGVSdWxlKSB7XG4gICAgICAgIC8vIFdhcm4gb25seSBpZiBhZGRFZ3Jlc3NSdWxlKCkgd2FzIGV4cGxpY2l0ZWx5IGNhbGxlZFxuICAgICAgICAvLyBcIkBhd3MtY2RrL2F3cy1lYzI6aXB2Nklnbm9yZUVncmVzc1J1bGVcIixcbiAgICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZyhcbiAgICAgICAgICBcIklnbm9yaW5nIEVncmVzcyBydWxlIHNpbmNlICdhbGxvd0FsbElwdjZPdXRib3VuZCcgaXMgc2V0IHRvIHRydWU7IFRvIGFkZCBjdXN0b21pemVkIHJ1bGVzLCBzZXQgYWxsb3dBbGxJcHY2T3V0Ym91bmQ9ZmFsc2Ugb24gdGhlIFNlY3VyaXR5R3JvdXBcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhcGVlci5jYW5JbmxpbmVSdWxlIHx8XG4gICAgICAhY29ubmVjdGlvbi5jYW5JbmxpbmVSdWxlIHx8XG4gICAgICB0aGlzLmRpc2FibGVJbmxpbmVSdWxlc1xuICAgICkge1xuICAgICAgc3VwZXIuYWRkRWdyZXNzUnVsZShwZWVyLCBjb25uZWN0aW9uLCBkZXNjcmlwdGlvbiwgcmVtb3RlUnVsZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaXB0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlc2NyaXB0aW9uID0gYGZyb20gJHtwZWVyLnVuaXF1ZUlkfToke2Nvbm5lY3Rpb259YDtcbiAgICB9XG5cbiAgICBjb25zdCBydWxlID0ge1xuICAgICAgLi4ucGVlci50b0VncmVzc1J1bGVDb25maWcoKSxcbiAgICAgIC4uLmNvbm5lY3Rpb24udG9SdWxlSnNvbigpLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgfTtcblxuICAgIGlmIChpc0FsbFRyYWZmaWNSdWxlKHJ1bGUpKSB7XG4gICAgICAvLyBXZSBjYW5ub3QgYWxsb3cgdGhpczsgaWYgc29tZW9uZSBhZGRzIHRoZSBydWxlIGluIHRoaXMgd2F5LCBpdCB3aWxsIGJlXG4gICAgICAvLyByZW1vdmVkIGFnYWluIGlmIHRoZXkgYWRkIG90aGVyIHJ1bGVzLiBXZSBhbHNvIGNhbid0IGF1dG9tYXRpY2FsbHkgc3dpdGNoXG4gICAgICAvLyB0byBcImFsbE91dGJvdW5kPXRydWVcIiBtb2RlLCBiZWNhdXNlIHdlIG1pZ2h0IGhhdmUgYWxyZWFkeSBlbWl0dGVkXG4gICAgICAvLyBFZ3Jlc3NSdWxlIG9iamVjdHMgKHdoaWNoIGNvdW50IGFzIHJ1bGVzIGFkZGVkIGxhdGVyKSBhbmQgdGhlcmUncyBubyB3YXlcbiAgICAgIC8vIHRvIHJlY2FsbCB0aG9zZS4gQmV0dGVyIHRvIHByZXZlbnQgdGhpcyBmb3Igbm93LlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IGFkZCBhbiBcImFsbCB0cmFmZmljXCIgZWdyZXNzIHJ1bGUgaW4gdGhpcyB3YXk7IHNldCBhbGxvd0FsbE91dGJvdW5kPXRydWUgKGZvciBpcHY2KSBvciBhbGxvd0FsbElwdjZPdXRib3VuZD10cnVlIChmb3IgaXB2Nikgb24gdGhlIFNlY3VyaXR5R3JvdXAgaW5zdGVhZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZERpcmVjdEVncmVzc1J1bGUocnVsZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgZGlyZWN0IGluZ3Jlc3MgcnVsZVxuICAgKi9cbiAgcHJpdmF0ZSBhZGREaXJlY3RJbmdyZXNzUnVsZShydWxlOiBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBJbmdyZXNzKSB7XG4gICAgbGV0IHIgPSBub3JtYWxpemVEaXJlY3RSdWxlKHJ1bGUpO1xuICAgIGlmICghdGhpcy5oYXNJbmdyZXNzUnVsZShyKSkge1xuICAgICAgdGhpcy5kaXJlY3RJbmdyZXNzUnVsZXMucHVzaChyKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIGluZ3Jlc3MgcnVsZSBleGlzdHMgb24gdGhlIGdyb3VwXG4gICAqL1xuICBwcml2YXRlIGhhc0luZ3Jlc3NSdWxlKHJ1bGU6IHNlY3VyaXR5R3JvdXAuU2VjdXJpdHlHcm91cEluZ3Jlc3MpOiBib29sZWFuIHtcbiAgICByZXR1cm4gKFxuICAgICAgdGhpcy5kaXJlY3RJbmdyZXNzUnVsZXMuZmluZEluZGV4KChyKSA9PiBpbmdyZXNzUnVsZXNFcXVhbChyLCBydWxlKSkgPiAtMVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgZGlyZWN0IGVncmVzcyBydWxlXG4gICAqL1xuICBwcml2YXRlIGFkZERpcmVjdEVncmVzc1J1bGUocnVsZTogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwRWdyZXNzKSB7XG4gICAgbGV0IHIgPSBub3JtYWxpemVEaXJlY3RSdWxlKHJ1bGUpO1xuICAgIGlmICghdGhpcy5oYXNFZ3Jlc3NSdWxlKHIpKSB7XG4gICAgICB0aGlzLmRpcmVjdEVncmVzc1J1bGVzLnB1c2gocik7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybiB3aGV0aGVyIHRoZSBnaXZlbiBlZ3Jlc3MgcnVsZSBleGlzdHMgb24gdGhlIGdyb3VwXG4gICAqL1xuICBwcml2YXRlIGhhc0VncmVzc1J1bGUocnVsZTogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwRWdyZXNzKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIChcbiAgICAgIHRoaXMuZGlyZWN0RWdyZXNzUnVsZXMuZmluZEluZGV4KChyKSA9PiBlZ3Jlc3NSdWxlc0VxdWFsKHIsIHJ1bGUpKSA+IC0xXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgdGhlIGRlZmF1bHQgZWdyZXNzIHJ1bGUgdG8gdGhlIHNlY3VyaXR5R3JvdXBcbiAgICpcbiAgICogQnkgZGVmYXVsdCwgQVdTIGNyZWF0ZXMgYW4gYEFMTE9XIEFMTGAgZWdyZXNzIHJ1bGUgd2hlbiBjcmVhdGluZyBhIG5ldyBTZWN1cml0eSBHcm91cCBpbnNpZGUgb2YgYSBWUEMuXG4gICAqIFdoZW4gY3JlYXRpbmcgYSBuZXcgU2VjdXJpdHkgR3JvdXAgaW5zaWRlIGEgVlBDLCBUZXJyYWZvcm0gd2lsbCByZW1vdmUgdGhpcyBkZWZhdWx0IHJ1bGUsIGFuZCByZXF1aXJlXG4gICAqIHlvdSBzcGVjaWZpY2FsbHkgcmUtY3JlYXRlIGl0IGlmIHlvdSBkZXNpcmUgdGhhdCBydWxlLlxuICAgKlxuICAgKiBUaGlzIGRlcGVuZHMgb24gYWxsb3dBbGxPdXRib3VuZFxuICAgKlxuICAgKiAtIElmIGFsbG93QWxsT3V0Ym91bmQgaXMgdHJ1ZSwgd2Ugd2lsbCBhZGQgYW4gYWxsb3cgYWxsIHJ1bGUuXG4gICAqIC0gSWYgYWxsb3dBbGxPdXRib3VuZCBpcyBmYWxzZSwgd2UgZG9uJ3QgZG8gYW55dGhpbmcgc2luY2UgVEYgZG9lcyBub3QgYWRkXG4gICAqICAgYSBkZWZhdWx0IGFsbG93IGFsbCBpcHY0IHJ1bGUuXG4gICAqL1xuICBwcml2YXRlIGFkZERlZmF1bHRFZ3Jlc3NSdWxlKCkge1xuICAgIGlmICghdGhpcy5hbGxvd0FsbE91dGJvdW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICh0aGlzLmRpc2FibGVJbmxpbmVSdWxlcykge1xuICAgICAgc3VwZXIuYWRkRWdyZXNzUnVsZShcbiAgICAgICAgQUxMX1RSQUZGSUNfUEVFUixcbiAgICAgICAgQUxMX1RSQUZGSUNfUE9SVCxcbiAgICAgICAgQUxMT1dfQUxMX1JVTEUuZGVzY3JpcHRpb24sXG4gICAgICAgIGZhbHNlLFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5kaXJlY3RFZ3Jlc3NSdWxlcy5wdXNoKEFMTE9XX0FMTF9SVUxFKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgYWxsb3cgYWxsIGlwdjYgZWdyZXNzIHJ1bGUgdG8gdGhlIHNlY3VyaXR5R3JvdXBcbiAgICpcbiAgICogVGhpcyBkZXBlbmRzIG9uIGFsbG93QWxsSXB2Nk91dGJvdW5kOlxuICAgKlxuICAgKiAtIElmIGFsbG93QWxsSXB2Nk91dGJvdW5kIGlzIHRydWUsIHdlIHdpbGwgYWRkIGFuIGFsbG93IGFsbCBydWxlLlxuICAgKiAtIElmIGFsbG93QWxsT3V0Ym91bmQgaXMgZmFsc2UsIHdlIGRvbid0IGRvIGFueXRoaW5nIHNpbmNlIEVDMiBkb2VzIG5vdCBhZGRcbiAgICogICBhIGRlZmF1bHQgYWxsb3cgYWxsIGlwdjYgcnVsZS5cbiAgICovXG4gIHByaXZhdGUgYWRkRGVmYXVsdElwdjZFZ3Jlc3NSdWxlKCkge1xuICAgIGNvbnN0IGRlc2NyaXB0aW9uID0gXCJBbGxvdyBhbGwgb3V0Ym91bmQgaXB2NiB0cmFmZmljIGJ5IGRlZmF1bHRcIjtcbiAgICBjb25zdCBwZWVyID0gUGVlci5hbnlJcHY2KCk7XG4gICAgaWYgKHRoaXMuYWxsb3dBbGxJcHY2T3V0Ym91bmQpIHtcbiAgICAgIGlmICh0aGlzLmRpc2FibGVJbmxpbmVSdWxlcykge1xuICAgICAgICBzdXBlci5hZGRFZ3Jlc3NSdWxlKHBlZXIsIFBvcnQuYWxsVHJhZmZpYygpLCBkZXNjcmlwdGlvbiwgZmFsc2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5kaXJlY3RFZ3Jlc3NSdWxlcy5wdXNoKHtcbiAgICAgICAgICBwcm90b2NvbDogXCItMVwiLFxuICAgICAgICAgIGZyb21Qb3J0OiAwLFxuICAgICAgICAgIHRvUG9ydDogMCxcbiAgICAgICAgICBpcHY2Q2lkckJsb2NrczogW3BlZXIudW5pcXVlSWRdLFxuICAgICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBGaXggdXAgYSBkaXJlY3QgcnVsZSB0byBoYXZlIGZyb21Qb3J0L3RvUG9ydCBkZWZpbmVkXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZURpcmVjdFJ1bGUoXG4gIHJ1bGU6IHNlY3VyaXR5R3JvdXAuU2VjdXJpdHlHcm91cEVncmVzcyB8IHNlY3VyaXR5R3JvdXAuU2VjdXJpdHlHcm91cEluZ3Jlc3MsXG4pOiBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBFZ3Jlc3MgfCBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBJbmdyZXNzIHtcbiAgLy8gVW5saWtlIHNlY3VyaXR5X2dyb3VwXyhpbnxlKWdyZXNzX3J1bGUsIFRGIFNlY3VyaXR5IEdyb3VwIGRpcmVjdCBydWxlc1xuICAvLyBjYW4ndCBoYXZlIGZyb21Qb3J0L3RvUG9ydCB1bmRlZmluZWQuXG4gIC8vIHJlZnM6XG4gIC8vIC0gaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS44OC4wL2RvY3MvcmVzb3VyY2VzL3ZwY19zZWN1cml0eV9ncm91cF9lZ3Jlc3NfcnVsZSNpcF9wcm90b2NvbC0xXG4gIC8vICAgdnNcbiAgLy8gLSBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81Ljg4LjAvZG9jcy9yZXNvdXJjZXMvc2VjdXJpdHlfZ3JvdXAjcHJvdG9jb2wtMVxuICByZXR1cm4ge1xuICAgIC4uLnJ1bGUsXG4gICAgZnJvbVBvcnQ6IHJ1bGUuZnJvbVBvcnQgPz8gMCxcbiAgICB0b1BvcnQ6IHJ1bGUudG9Qb3J0ID8/IDAsXG4gIH07XG59XG5cbi8qKlxuICogRWdyZXNzIHJ1bGUgdGhhdCBtYXRjaGVzIGFsbCB0cmFmZmljXG4gKi9cbmNvbnN0IEFMTE9XX0FMTF9SVUxFOiBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBFZ3Jlc3MgPSB7XG4gIGNpZHJCbG9ja3M6IFtcIjAuMC4wLjAvMFwiXSxcbiAgZGVzY3JpcHRpb246IFwiQWxsb3cgYWxsIG91dGJvdW5kIHRyYWZmaWMgYnkgZGVmYXVsdFwiLFxuICAvKipcbiAgICogSWYgeW91IHNlbGVjdCBhIHByb3RvY29sIG9mIC0xIChzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0byBhbGwsIHdoaWNoIGlzIG5vdCBhIHZhbGlkIHZhbHVlIGhlcmUpLFxuICAgKiB5b3UgbXVzdCBzcGVjaWZ5IGEgZnJvbV9wb3J0IGFuZCB0b19wb3J0IGVxdWFsIHRvIDAuXG4gICAqL1xuICBwcm90b2NvbDogXCItMVwiLFxuICBmcm9tUG9ydDogMCxcbiAgdG9Qb3J0OiAwLFxufTtcblxuY29uc3QgQUxMX1RSQUZGSUNfUEVFUiA9IFBlZXIuYW55SXB2NCgpO1xuY29uc3QgQUxMX1RSQUZGSUNfUE9SVCA9IFBvcnQuYWxsVHJhZmZpYygpO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbm5lY3Rpb25SdWxlIHtcbiAgLyoqXG4gICAqIFRoZSBJUCBwcm90b2NvbCBuYW1lICh0Y3AsIHVkcCwgaWNtcCkgb3IgbnVtYmVyIChzZWUgUHJvdG9jb2wgTnVtYmVycykuXG4gICAqIFVzZSAtMSB0byBzcGVjaWZ5IGFsbCBwcm90b2NvbHMuIElmIHlvdSBzcGVjaWZ5IC0xLCBvciBhIHByb3RvY29sIG51bWJlclxuICAgKiBvdGhlciB0aGFuIHRjcCwgdWRwLCBpY21wLCBvciA1OCAoSUNNUHY2KSwgdHJhZmZpYyBvbiBhbGwgcG9ydHMgaXNcbiAgICogYWxsb3dlZCwgcmVnYXJkbGVzcyBvZiBhbnkgcG9ydHMgeW91IHNwZWNpZnkuIEZvciB0Y3AsIHVkcCwgYW5kIGljbXAsIHlvdVxuICAgKiBtdXN0IHNwZWNpZnkgYSBwb3J0IHJhbmdlLiBGb3IgcHJvdG9jb2wgNTggKElDTVB2NiksIHlvdSBjYW4gb3B0aW9uYWxseVxuICAgKiBzcGVjaWZ5IGEgcG9ydCByYW5nZTsgaWYgeW91IGRvbid0LCB0cmFmZmljIGZvciBhbGwgdHlwZXMgYW5kIGNvZGVzIGlzXG4gICAqIGFsbG93ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRjcFxuICAgKi9cbiAgcmVhZG9ubHkgcHJvdG9jb2w/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFN0YXJ0IG9mIHBvcnQgcmFuZ2UgZm9yIHRoZSBUQ1AgYW5kIFVEUCBwcm90b2NvbHMsIG9yIGFuIElDTVAgdHlwZSBudW1iZXIuXG4gICAqXG4gICAqIElmIHlvdSBzcGVjaWZ5IGljbXAgZm9yIHRoZSBJcFByb3RvY29sIHByb3BlcnR5LCB5b3UgY2FuIHNwZWNpZnlcbiAgICogLTEgYXMgYSB3aWxkY2FyZCAoaS5lLiwgYW55IElDTVAgdHlwZSBudW1iZXIpLlxuICAgKi9cbiAgcmVhZG9ubHkgZnJvbVBvcnQ6IG51bWJlcjtcblxuICAvKipcbiAgICogRW5kIG9mIHBvcnQgcmFuZ2UgZm9yIHRoZSBUQ1AgYW5kIFVEUCBwcm90b2NvbHMsIG9yIGFuIElDTVAgY29kZS5cbiAgICpcbiAgICogSWYgeW91IHNwZWNpZnkgaWNtcCBmb3IgdGhlIElwUHJvdG9jb2wgcHJvcGVydHksIHlvdSBjYW4gc3BlY2lmeSAtMSBhcyBhXG4gICAqIHdpbGRjYXJkIChpLmUuLCBhbnkgSUNNUCBjb2RlKS5cbiAgICpcbiAgICogQGRlZmF1bHQgSWYgdG9Qb3J0IGlzIG5vdCBzcGVjaWZpZWQsIGl0IHdpbGwgYmUgdGhlIHNhbWUgYXMgZnJvbVBvcnQuXG4gICAqL1xuICByZWFkb25seSB0b1BvcnQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIERlc2NyaXB0aW9uIG9mIHRoaXMgY29ubmVjdGlvbi4gSXQgaXMgYXBwbGllZCB0byBib3RoIHRoZSBpbmdyZXNzIHJ1bGVcbiAgICogYW5kIHRoZSBlZ3Jlc3MgcnVsZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gZGVzY3JpcHRpb25cbiAgICovXG4gIHJlYWRvbmx5IGRlc2NyaXB0aW9uPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIGluZ3Jlc3MgcnVsZXMgZm9yIGVxdWFsaXR5IHRoZSBzYW1lIHdheSBDbG91ZEZvcm1hdGlvbiB3b3VsZCAoZGlzY2FyZGluZyBkZXNjcmlwdGlvbilcbiAqL1xuZnVuY3Rpb24gaW5ncmVzc1J1bGVzRXF1YWwoXG4gIGE6IHNlY3VyaXR5R3JvdXAuU2VjdXJpdHlHcm91cEluZ3Jlc3MsXG4gIGI6IHNlY3VyaXR5R3JvdXAuU2VjdXJpdHlHcm91cEluZ3Jlc3MsXG4pIHtcbiAgcmV0dXJuIChcbiAgICBhLmNpZHJCbG9ja3MgPT09IGIuY2lkckJsb2NrcyAmJlxuICAgIGEuaXB2NkNpZHJCbG9ja3MgPT09IGIuaXB2NkNpZHJCbG9ja3MgJiZcbiAgICBhLmZyb21Qb3J0ID09PSBiLmZyb21Qb3J0ICYmXG4gICAgYS50b1BvcnQgPT09IGIudG9Qb3J0ICYmXG4gICAgYS5wcm90b2NvbCA9PT0gYi5wcm90b2NvbCAmJlxuICAgIGEucHJlZml4TGlzdElkcyA9PT0gYi5wcmVmaXhMaXN0SWRzICYmXG4gICAgYS5zZWN1cml0eUdyb3VwcyA9PT0gYi5zZWN1cml0eUdyb3Vwc1xuICApO1xufVxuXG4vKipcbiAqIENvbXBhcmUgdHdvIGVncmVzcyBydWxlcyBmb3IgZXF1YWxpdHkgdGhlIHNhbWUgd2F5IENsb3VkRm9ybWF0aW9uIHdvdWxkIChkaXNjYXJkaW5nIGRlc2NyaXB0aW9uKVxuICovXG5mdW5jdGlvbiBlZ3Jlc3NSdWxlc0VxdWFsKFxuICBhOiBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBFZ3Jlc3MsXG4gIGI6IHNlY3VyaXR5R3JvdXAuU2VjdXJpdHlHcm91cEVncmVzcyxcbikge1xuICByZXR1cm4gKFxuICAgIGEuY2lkckJsb2NrcyA9PT0gYi5jaWRyQmxvY2tzICYmXG4gICAgYS5pcHY2Q2lkckJsb2NrcyA9PT0gYi5pcHY2Q2lkckJsb2NrcyAmJlxuICAgIGEuZnJvbVBvcnQgPT09IGIuZnJvbVBvcnQgJiZcbiAgICBhLnRvUG9ydCA9PT0gYi50b1BvcnQgJiZcbiAgICBhLnByb3RvY29sID09PSBiLnByb3RvY29sICYmXG4gICAgYS5wcmVmaXhMaXN0SWRzID09PSBiLnByZWZpeExpc3RJZHMgJiZcbiAgICBhLnNlY3VyaXR5R3JvdXBzID09PSBiLnNlY3VyaXR5R3JvdXBzXG4gICk7XG59XG5cbi8qKlxuICogV2hldGhlciB0aGlzIHJ1bGUgcmVmZXJzIHRvIGFsbCB0cmFmZmljXG4gKi9cbmZ1bmN0aW9uIGlzQWxsVHJhZmZpY1J1bGUocnVsZTogYW55KSB7XG4gIHJldHVybiAoXG4gICAgKHJ1bGUuY2lkcklwdjQgPT09IFwiMC4wLjAuMC8wXCIgfHxcbiAgICAgIChydWxlLmNpZHJCbG9ja3MgJiYgcnVsZS5jaWRyQmxvY2tzWzBdID09PSBcIjAuMC4wLjAvMFwiKSB8fFxuICAgICAgcnVsZS5jaWRySXB2NiA9PT0gXCI6Oi8wXCIpICYmXG4gICAgcnVsZS5pcFByb3RvY29sID09PSBcIi0xXCJcbiAgKTtcbn1cblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBsb29raW5nIHVwIGFuIGV4aXN0aW5nIFNlY3VyaXR5R3JvdXAuXG4gKlxuICogRWl0aGVyIGBzZWN1cml0eUdyb3VwTmFtZWAgb3IgYHNlY3VyaXR5R3JvdXBJZGAgaGFzIHRvIGJlIHNwZWNpZmllZC5cbiAqL1xuaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBMb29rdXBPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZWN1cml0eSBncm91cFxuICAgKlxuICAgKiBJZiBnaXZlbiwgd2lsbCBpbXBvcnQgdGhlIFNlY3VyaXR5R3JvdXAgd2l0aCB0aGlzIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IERvbid0IGZpbHRlciBvbiBzZWN1cml0eUdyb3VwTmFtZVxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cE5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgc2VjdXJpdHkgZ3JvdXBcbiAgICpcbiAgICogSWYgZ2l2ZW4sIHdpbGwgaW1wb3J0IHRoZSBTZWN1cml0eUdyb3VwIHdpdGggdGhpcyBJRC5cbiAgICpcbiAgICogQGRlZmF1bHQgRG9uJ3QgZmlsdGVyIG9uIHNlY3VyaXR5R3JvdXBJZFxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cElkPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIG9mIHRoZSBzZWN1cml0eSBncm91cFxuICAgKlxuICAgKiBJZiBnaXZlbiwgd2lsbCBmaWx0ZXIgdGhlIFNlY3VyaXR5R3JvdXAgYmFzZWQgb24gdGhlIFZQQy5cbiAgICpcbiAgICogQGRlZmF1bHQgRG9uJ3QgZmlsdGVyIG9uIFZQQ1xuICAgKi9cbiAgcmVhZG9ubHkgdnBjPzogSVZwYztcblxuICAvKipcbiAgICogTWFyayB0aGUgU2VjdXJpdHlHcm91cCBhcyBhbGxvd2luZyBhbGwgb3V0Ym91bmQgdHJhZmZpY1xuICAgKlxuICAgKiBPbmx5IGlmIHRoaXMgaXMgc2V0IHRvIGZhbHNlIHdpbGwgZWdyZXNzIHJ1bGVzIGJlIGFkZGVkIHRvIHRoaXMgc2VjdXJpdHlcbiAgICogZ3JvdXAuIEJlIGF3YXJlLCB0aGlzIHdvdWxkIHVuZG8gYW55IHBvdGVudGlhbCBcImFsbCBvdXRib3VuZCB0cmFmZmljXCJcbiAgICogZGVmYXVsdC5cbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dBbGxPdXRib3VuZD86IGJvb2xlYW47IC8vIFRPRE86IFVzZSBHcmlkIGFzIGNvbnRleHRQcm92aWRlclxufVxuIl19
|
|
538
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktZ3JvdXAuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvc2VjdXJpdHktZ3JvdXAudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxrR0FBa0c7QUFFbEcsc0RBSzZCO0FBQzdCLGlDQUFpRDtBQUVqRCwrQ0FBNEM7QUFDNUMsaUNBQXFDO0FBQ3JDLGlDQUE4QjtBQUU5QixvREFJMEI7QUFDMUIsNENBQXdDO0FBQ3hDLGtFQUFrRTtBQUVsRSxNQUFNLHFCQUFxQixHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQ3RDLCtDQUErQyxDQUNoRCxDQUFDO0FBRUYsTUFBTSwrQ0FBK0MsR0FDbkQsNkRBQTZELENBQUM7QUFnRWhFOztHQUVHO0FBQ0gsTUFBZSxpQkFDYixTQUFRLGdDQUFnQjtJQUd4Qjs7T0FFRztJQUNJLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBTTtRQUNsQyxPQUFPLHFCQUFxQixJQUFJLENBQUMsQ0FBQztJQUNwQyxDQUFDO0lBR0QsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTztZQUNMLGVBQWUsRUFBRSxJQUFJLENBQUMsZUFBZTtTQUN0QyxDQUFDO0lBQ0osQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztJQUNuQyxDQUFDO0lBWUQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF5QjtRQUNqRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRSxLQUFLLENBQUMsQ0FBQztRQVRWLGtCQUFhLEdBQUcsS0FBSyxDQUFDO1FBQ3RCLGdCQUFXLEdBQWdCLElBQUkseUJBQVcsQ0FBQztZQUN6RCxjQUFjLEVBQUUsQ0FBQyxJQUFJLENBQUM7U0FDdkIsQ0FBQyxDQUFDO1FBR0sscUJBQWdCLEdBQVcsQ0FBQyxDQUFDO1FBS25DLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEVBQUUsS0FBSyxF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QyxRQUFRLEtBQUssQ0FBQyxDQUFDLFFBQVE7UUFDekIsQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTTtRQUNyQixDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxRQUFRO1FBQ3pCLENBQUMsQ0FBQyxhQUFhLEtBQUssQ0FBQyxDQUFDLGFBQWE7UUFDbkMsQ0FBQyxDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUMsY0FBYyxDQUN0QyxDQUFDO0FBQ0osQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxnQkFBZ0IsQ0FDdkIsQ0FBb0MsRUFDcEMsQ0FBb0M7SUFFcEMsT0FBTyxDQUNMLENBQUMsQ0FBQyxVQUFVLEtBQUssQ0FBQyxDQUFDLFVBQVU7UUFDN0IsQ0FBQyxDQUFDLGNBQWMsS0FBSyxDQUFDLENBQUMsY0FBYztRQUNyQyxDQUFDLENBQUMsUUFBUSxLQUFLLENBQUMsQ0FBQyxRQUFRO1FBQ3pCLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU07UUFDckIsQ0FBQyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsUUFBUTtRQUN6QixDQUFDLENBQUMsYUFBYSxLQUFLLENBQUMsQ0FBQyxhQUFhO1FBQ25DLENBQUMsQ0FBQyxjQUFjLEtBQUssQ0FBQyxDQUFDLGNBQWMsQ0FDdEMsQ0FBQztBQUNKLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQVMsZ0JBQWdCLENBQUMsSUFBUztJQUNqQyxPQUFPLENBQ0wsQ0FBQyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVc7UUFDNUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssV0FBVyxDQUFDO1FBQ3ZELElBQUksQ0FBQyxRQUFRLEtBQUssTUFBTSxDQUFDO1FBQzNCLElBQUksQ0FBQyxVQUFVLEtBQUssSUFBSSxDQUN6QixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE3NS4xL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1lYzIvbGliL3NlY3VyaXR5LWdyb3VwLnRzXG5cbmltcG9ydCB7XG4gIGRhdGFBd3NTZWN1cml0eUdyb3VwLFxuICBzZWN1cml0eUdyb3VwLFxuICB2cGNTZWN1cml0eUdyb3VwRWdyZXNzUnVsZSxcbiAgdnBjU2VjdXJpdHlHcm91cEluZ3Jlc3NSdWxlLFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgQW5ub3RhdGlvbnMsIExhenksIFRva2VuIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ29ubmVjdGlvbnMgfSBmcm9tIFwiLi9jb25uZWN0aW9uc1wiO1xuaW1wb3J0IHsgSVBlZXIsIFBlZXIgfSBmcm9tIFwiLi9wZWVyXCI7XG5pbXBvcnQgeyBQb3J0IH0gZnJvbSBcIi4vcG9ydFwiO1xuaW1wb3J0IHsgSVZwYyB9IGZyb20gXCIuL3ZwY1wiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbi8vIGltcG9ydCB7IGFsbG93QWxsT3V0Ym91bmRMb2NhbCB9IGZyb20gXCIuL3ByaXZhdGUvY29udGV4dC1zdHViXCI7XG5cbmNvbnN0IFNFQ1VSSVRZX0dST1VQX1NZTUJPTCA9IFN5bWJvbC5mb3IoXG4gIFwidGVycmFjb25zdHJ1Y3RzL2xpYi9hd3MvY29tcHV0ZS5TZWN1cml0eUdyb3VwXCIsXG4pO1xuXG5jb25zdCBTRUNVUklUWV9HUk9VUF9ESVNBQkxFX0lOTElORV9SVUxFU19DT05URVhUX0tFWSA9XG4gIFwidGVycmFjb25zdHJ1Y3RzL2F3cy9jb21wdXRlLnNlY3VyaXR5R3JvdXBEaXNhYmxlSW5saW5lUnVsZXNcIjtcblxuLyoqXG4gKiBPdXRwdXRzIHdoaWNoIG1heSBiZSByZWdpc3RlcmVkIGZvciBvdXRwdXQgdmlhIHRoZSBHcmlkLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBPdXRwdXRzIHtcbiAgLyoqXG4gICAqIElEIGZvciB0aGUgY3VycmVudCBzZWN1cml0eSBncm91cFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBJbnRlcmZhY2UgZm9yIHNlY3VyaXR5IGdyb3VwLWxpa2Ugb2JqZWN0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElTZWN1cml0eUdyb3VwIGV4dGVuZHMgSUF3c0NvbnN0cnVjdCwgSVBlZXIge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0cyAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwT3V0cHV0czogU2VjdXJpdHlHcm91cE91dHB1dHM7XG5cbiAgLyoqXG4gICAqIElEIGZvciB0aGUgY3VycmVudCBzZWN1cml0eSBncm91cFxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgU2VjdXJpdHlHcm91cCBoYXMgYmVlbiBjb25maWd1cmVkIHRvIGFsbG93IGFsbCBvdXRib3VuZCB0cmFmZmljXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FsbE91dGJvdW5kOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBBZGQgYW4gaW5ncmVzcyBydWxlIGZvciB0aGUgY3VycmVudCBzZWN1cml0eSBncm91cFxuICAgKlxuICAgKiBgcmVtb3RlUnVsZWAgY29udHJvbHMgd2hlcmUgdGhlIFJ1bGUgb2JqZWN0IGlzIGNyZWF0ZWQgaWYgdGhlIHBlZXIgaXMgYWxzbyBhXG4gICAqIHNlY3VyaXR5R3JvdXAgYW5kIHRoZXkgYXJlIGluIGRpZmZlcmVudCBzdGFjay4gSWYgZmFsc2UgKGRlZmF1bHQpIHRoZVxuICAgKiBydWxlIG9iamVjdCBpcyBjcmVhdGVkIHVuZGVyIHRoZSBjdXJyZW50IFNlY3VyaXR5R3JvdXAgb2JqZWN0LiBJZiB0cnVlIGFuZCB0aGVcbiAgICogcGVlciBpcyBhbHNvIGEgU2VjdXJpdHlHcm91cCwgdGhlIHJ1bGUgb2JqZWN0IGlzIGNyZWF0ZWQgdW5kZXIgdGhlIHJlbW90ZVxuICAgKiBTZWN1cml0eUdyb3VwIG9iamVjdC5cbiAgICovXG4gIGFkZEluZ3Jlc3NSdWxlKFxuICAgIHBlZXI6IElQZWVyLFxuICAgIGNvbm5lY3Rpb246IFBvcnQsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgcmVtb3RlUnVsZT86IGJvb2xlYW4sXG4gICk6IHZvaWQ7XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBlZ3Jlc3MgcnVsZSBmb3IgdGhlIGN1cnJlbnQgc2VjdXJpdHkgZ3JvdXBcbiAgICpcbiAgICogYHJlbW90ZVJ1bGVgIGNvbnRyb2xzIHdoZXJlIHRoZSBSdWxlIG9iamVjdCBpcyBjcmVhdGVkIGlmIHRoZSBwZWVyIGlzIGFsc28gYVxuICAgKiBzZWN1cml0eUdyb3VwIGFuZCB0aGV5IGFyZSBpbiBkaWZmZXJlbnQgc3RhY2suIElmIGZhbHNlIChkZWZhdWx0KSB0aGVcbiAgICogcnVsZSBvYmplY3QgaXMgY3JlYXRlZCB1bmRlciB0aGUgY3VycmVudCBTZWN1cml0eUdyb3VwIG9iamVjdC4gSWYgdHJ1ZSBhbmQgdGhlXG4gICAqIHBlZXIgaXMgYWxzbyBhIFNlY3VyaXR5R3JvdXAsIHRoZSBydWxlIG9iamVjdCBpcyBjcmVhdGVkIHVuZGVyIHRoZSByZW1vdGVcbiAgICogU2VjdXJpdHlHcm91cCBvYmplY3QuXG4gICAqL1xuICBhZGRFZ3Jlc3NSdWxlKFxuICAgIHBlZXI6IElQZWVyLFxuICAgIGNvbm5lY3Rpb246IFBvcnQsXG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgcmVtb3RlUnVsZT86IGJvb2xlYW4sXG4gICk6IHZvaWQ7XG59XG5cbi8qKlxuICogQSBTZWN1cml0eUdyb3VwIHRoYXQgaXMgbm90IGNyZWF0ZWQgaW4gdGhpcyB0ZW1wbGF0ZVxuICovXG5hYnN0cmFjdCBjbGFzcyBTZWN1cml0eUdyb3VwQmFzZVxuICBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2VcbiAgaW1wbGVtZW50cyBJU2VjdXJpdHlHcm91cFxue1xuICAvKipcbiAgICogUmV0dXJuIHdoZXRoZXIgdGhlIGluZGljYXRlZCBvYmplY3QgaXMgYSBzZWN1cml0eSBncm91cFxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBpc1NlY3VyaXR5R3JvdXAoeDogYW55KTogeCBpcyBTZWN1cml0eUdyb3VwQmFzZSB7XG4gICAgcmV0dXJuIFNFQ1VSSVRZX0dST1VQX1NZTUJPTCBpbiB4O1xuICB9XG5cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZDogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IHNlY3VyaXR5R3JvdXBPdXRwdXRzKCk6IFNlY3VyaXR5R3JvdXBPdXRwdXRzIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2VjdXJpdHlHcm91cElkOiB0aGlzLnNlY3VyaXR5R3JvdXBJZCxcbiAgICB9O1xuICB9XG4gIHB1YmxpYyBnZXQgb3V0cHV0cygpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5zZWN1cml0eUdyb3VwT3V0cHV0cztcbiAgfVxuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgYWxsb3dBbGxPdXRib3VuZDogYm9vbGVhbjtcbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IGFsbG93QWxsSXB2Nk91dGJvdW5kOiBib29sZWFuO1xuXG4gIHB1YmxpYyByZWFkb25seSBjYW5JbmxpbmVSdWxlID0gZmFsc2U7XG4gIHB1YmxpYyByZWFkb25seSBjb25uZWN0aW9uczogQ29ubmVjdGlvbnMgPSBuZXcgQ29ubmVjdGlvbnMoe1xuICAgIHNlY3VyaXR5R3JvdXBzOiBbdGhpc10sXG4gIH0pO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVmYXVsdFBvcnQ/OiBQb3J0O1xuXG4gIHByaXZhdGUgcGVlckFzVG9rZW5Db3VudDogbnVtYmVyID0gMDtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wcz86IEF3c0NvbnN0cnVjdFByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkodGhpcywgU0VDVVJJVFlfR1JPVVBfU1lNQk9MLCB7IHZhbHVlOiB0cnVlIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCB1bmlxdWVJZCgpIHtcbiAgICByZXR1cm4gQXdzU3RhY2sudW5pcXVlSWQodGhpcy5ub2RlKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRJbmdyZXNzUnVsZShcbiAgICBwZWVyOiBJUGVlcixcbiAgICBjb25uZWN0aW9uOiBQb3J0LFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHJlbW90ZVJ1bGU/OiBib29sZWFuLFxuICApIHtcbiAgICBpZiAoZGVzY3JpcHRpb24gPT09IHVuZGVmaW5lZCkge1xuICAgICAgZGVzY3JpcHRpb24gPSBgZnJvbSAke3BlZXIudW5pcXVlSWR9OiR7Y29ubmVjdGlvbn1gO1xuICAgIH1cblxuICAgIGNvbnN0IHsgc2NvcGUsIGlkIH0gPSB0aGlzLmRldGVybWluZVJ1bGVTY29wZShcbiAgICAgIHBlZXIsXG4gICAgICBjb25uZWN0aW9uLFxuICAgICAgXCJmcm9tXCIsXG4gICAgICByZW1vdGVSdWxlLFxuICAgICk7XG5cbiAgICAvLyBTa2lwIGR1cGxpY2F0ZXNcbiAgICBpZiAoc2NvcGUubm9kZS50cnlGaW5kQ2hpbGQoaWQpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ldyB2cGNTZWN1cml0eUdyb3VwSW5ncmVzc1J1bGUuVnBjU2VjdXJpdHlHcm91cEluZ3Jlc3NSdWxlKHNjb3BlLCBpZCwge1xuICAgICAgICBzZWN1cml0eUdyb3VwSWQ6IHRoaXMuc2VjdXJpdHlHcm91cElkLFxuICAgICAgICAuLi5wZWVyLnRvSW5ncmVzc1J1bGVDb25maWcoKSxcbiAgICAgICAgLi4uY29ubmVjdGlvbi50b1J1bGVKc29uKCksXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFkZEVncmVzc1J1bGUoXG4gICAgcGVlcjogSVBlZXIsXG4gICAgY29ubmVjdGlvbjogUG9ydCxcbiAgICBkZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICByZW1vdGVSdWxlPzogYm9vbGVhbixcbiAgKSB7XG4gICAgaWYgKGRlc2NyaXB0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlc2NyaXB0aW9uID0gYHRvICR7cGVlci51bmlxdWVJZH06JHtjb25uZWN0aW9ufWA7XG4gICAgfVxuXG4gICAgY29uc3QgeyBzY29wZSwgaWQgfSA9IHRoaXMuZGV0ZXJtaW5lUnVsZVNjb3BlKFxuICAgICAgcGVlcixcbiAgICAgIGNvbm5lY3Rpb24sXG4gICAgICBcInRvXCIsXG4gICAgICByZW1vdGVSdWxlLFxuICAgICk7XG5cbiAgICAvLyBTa2lwIGR1cGxpY2F0ZXNcbiAgICBpZiAoc2NvcGUubm9kZS50cnlGaW5kQ2hpbGQoaWQpID09PSB1bmRlZmluZWQpIHtcbiAgICAgIG5ldyB2cGNTZWN1cml0eUdyb3VwRWdyZXNzUnVsZS5WcGNTZWN1cml0eUdyb3VwRWdyZXNzUnVsZShzY29wZSwgaWQsIHtcbiAgICAgICAgc2VjdXJpdHlHcm91cElkOiB0aGlzLnNlY3VyaXR5R3JvdXBJZCxcbiAgICAgICAgLi4ucGVlci50b0VncmVzc1J1bGVDb25maWcoKSxcbiAgICAgICAgLi4uY29ubmVjdGlvbi50b1J1bGVKc29uKCksXG4gICAgICAgIGRlc2NyaXB0aW9uLFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHRvSW5ncmVzc1J1bGVDb25maWcoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy50b1J1bGVDb25maWcoKTtcbiAgfVxuXG4gIHB1YmxpYyB0b0VncmVzc1J1bGVDb25maWcoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy50b1J1bGVDb25maWcoKTtcbiAgfVxuXG4gIC8vIFRlcnJhZm9ybSBkb2VzIG5vdCB1c2UgZGlmZmVyZW50IHByb3BlcnRpZXMgYmV0d2VlbiBpbmdyZXNzIGFuZCBlZ3Jlc3MgcnVsZXNcbiAgcHJpdmF0ZSB0b1J1bGVDb25maWcoKTogYW55IHtcbiAgICByZXR1cm4geyByZWZlcmVuY2VkU2VjdXJpdHlHcm91cElkOiB0aGlzLnNlY3VyaXR5R3JvdXBJZCB9O1xuICB9XG5cbiAgLyoqXG4gICAqIERldGVybWluZSB3aGVyZSB0byBwYXJlbnQgYSBuZXcgaW5ncmVzcy9lZ3Jlc3MgcnVsZVxuICAgKlxuICAgKiBBIFNlY3VyaXR5R3JvdXAgcnVsZSBpcyBwYXJlbnRlZCB1bmRlciB0aGUgZ3JvdXAgaXQncyByZWxhdGVkIHRvLCBVTkxFU1NcbiAgICogd2UncmUgaW4gYSBjcm9zcy1zdGFjayBzY2VuYXJpbyB3aXRoIGFub3RoZXIgU2VjdXJpdHkgR3JvdXAuIEluIHRoYXQgY2FzZSxcbiAgICogd2UgcmVzcGVjdCB0aGUgJ3JlbW90ZVJ1bGUnIGZsYWcgYW5kIHdpbGwgcGFyZW50IHVuZGVyIHRoZSBvdGhlciBzZWN1cml0eVxuICAgKiBncm91cC5cbiAgICpcbiAgICogVGhpcyBpcyBuZWNlc3NhcnkgdG8gYXZvaWQgY3ljbGljIGRlcGVuZGVuY2llcyBiZXR3ZWVuIHN0YWNrcywgc2luY2UgYm90aFxuICAgKiBpbmdyZXNzIGFuZCBlZ3Jlc3MgcnVsZXMgd2lsbCByZWZlcmVuY2UgYm90aCBzZWN1cml0eSBncm91cHMsIGFuZCBhIG5haXZlXG4gICAqIHBhcmVudGluZyB3aWxsIGxlYWQgdG8gdGhlIGZvbGxvd2luZyBzaXR1YXRpb246XG4gICAqXG4gICAqICAg4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXICAgICAgICAg4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXXG4gICAqICAg4pWRICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICAgIOKVkSAgICAgICAgIOKVkSAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAgICDilZFcbiAgICogICDilZEgIOKUgiAgR3JvdXBBICAg4pSC4peA4pSA4pSA4pSA4pSA4pWs4pSA4pSQICAg4pSM4pSA4pSA4pSA4pWs4pSA4pSA4pSA4pa24pSCICBHcm91cEIgICDilIIgICDilZFcbiAgICogICDilZEgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAg4pWRIOKUgiAgIOKUgiAgIOKVkSAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJggICDilZFcbiAgICogICDilZEgICAgICAgIOKWsiAgICAgICAgICAg4pWRIOKUgiAgIOKUgiAgIOKVkSAgICAgICAgICDilrIgICAgICAgICDilZFcbiAgICogICDilZEgICAgICAgIOKUgiAgICAgICAgICAg4pWRIOKUgiAgIOKUgiAgIOKVkSAgICAgICAgICDilIIgICAgICAgICDilZFcbiAgICogICDilZEgICAgICAgIOKUgiAgICAgICAgICAg4pWRIOKUgiAgIOKUgiAgIOKVkSAgICAgICAgICDilIIgICAgICAgICDilZFcbiAgICogICDilZEgIOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgICAg4pWRIOKUlOKUgOKUgOKUgOKUvOKUgOKUgOKUgOKVrOKUgOKUgOKUgOKUgOKUjOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUkCAgIOKVkVxuICAgKiAgIOKVkSAg4pSCICBFZ3Jlc3NBICDilILilIDilIDilIDilIDilIDilazilIDilIDilIDilIDilIDilJggICDilZEgICAg4pSCIEluZ3Jlc3NCICDilIIgICDilZFcbiAgICogICDilZEgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAg4pWRICAgICAgICAg4pWRICAgIOKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgIOKVkVxuICAgKiAgIOKVkSAgICAgICAgICAgICAgICAgICAg4pWRICAgICAgICAg4pWRICAgICAgICAgICAgICAgICAgICDilZFcbiAgICogICDilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ0gICAgICAgICDilZrilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZ1cbiAgICpcbiAgICogQnkgaGF2aW5nIHRoZSBhYmlsaXR5IHRvIHN3aXRjaCB0aGUgcGFyZW50LCB3ZSBhdm9pZCB0aGUgY3ljbGljIHJlZmVyZW5jZSBieVxuICAgKiBrZWVwaW5nIGFsbCBydWxlcyBpbiBhIHNpbmdsZSBzdGFjay5cbiAgICpcbiAgICogSWYgdGhpcyBoYXBwZW5zLCB3ZSBhbHNvIGhhdmUgdG8gY2hhbmdlIHRoZSBjb25zdHJ1Y3QgSUQsIGJlY2F1c2VcbiAgICogb3RoZXJ3aXNlIHdlIG1pZ2h0IGhhdmUgdHdvIG9iamVjdHMgd2l0aCB0aGUgc2FtZSBJRCBpZiB3ZSBoYXZlXG4gICAqIG11bHRpcGxlIHJldmVyc2VkIHNlY3VyaXR5IGdyb3VwIHJlbGF0aW9uc2hpcHMuXG4gICAqXG4gICAqICAg4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXXG4gICAqICAg4pWR4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQICAgICAgICAgICAgICAgICAgICAgIOKVkVxuICAgKiAgIOKVkeKUgiAgR3JvdXBCICAg4pSCICAgICAgICAgICAgICAgICAgICAgIOKVkVxuICAgKiAgIOKVkeKUlOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUgOKUmCAgICAgICAgICAgICAgICAgICAgICDilZFcbiAgICogICDilZEgICAgICDilrIgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRXG4gICAqICAg4pWRICAgICAg4pSCICAgICAgICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAg4pWRXG4gICAqICAg4pWRICAgICAg4pSc4pSA4pSA4pSA4pSAXCJmcm9tIEFcIuKUgOKUgOKUgiBJbmdyZXNzQiAg4pSCIOKVkVxuICAgKiAgIOKVkSAgICAgIOKUgiAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYIOKVkVxuICAgKiAgIOKVkSAgICAgIOKUgiAgICAgICAgICAgICAg4pSM4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSQIOKVkVxuICAgKiAgIOKVkSAgICAgIOKUnOKUgOKUgOKUgOKUgOKUgFwidG8gQlwi4pSA4pSA4pSA4pSCICBFZ3Jlc3NBICDilIIg4pWRXG4gICAqICAg4pWRICAgICAg4pSCICAgICAgICAgICAgICDilJTilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJgg4pWRXG4gICAqICAg4pWRICAgICAg4pSCICAgICAgICAgICAgICDilIzilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilIDilJAg4pWRXG4gICAqICAg4pWRICAgICAg4pSU4pSA4pSA4pSA4pSA4pSAXCJ0byBCXCLilIDilIDilIDilIIgIEVncmVzc0MgIOKUgiDilZEgIDwtLSBvb3BzXG4gICAqICAg4pWRICAgICAgICAgICAgICAgICAgICAg4pSU4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSA4pSYIOKVkVxuICAgKiAgIOKVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnVxuICAgKi9cblxuICBwcm90ZWN0ZWQgZGV0ZXJtaW5lUnVsZVNjb3BlKFxuICAgIHBlZXI6IElQZWVyLFxuICAgIGNvbm5lY3Rpb246IFBvcnQsXG4gICAgZnJvbVRvOiBcImZyb21cIiB8IFwidG9cIixcbiAgICByZW1vdGVSdWxlPzogYm9vbGVhbixcbiAgKTogUnVsZVNjb3BlIHtcbiAgICBpZiAoXG4gICAgICByZW1vdGVSdWxlICYmXG4gICAgICBTZWN1cml0eUdyb3VwQmFzZS5pc1NlY3VyaXR5R3JvdXAocGVlcikgJiZcbiAgICAgIGRpZmZlcmVudFN0YWNrcyh0aGlzLCBwZWVyKVxuICAgICkge1xuICAgICAgLy8gUmV2ZXJzZWRcbiAgICAgIGNvbnN0IHJldmVyc2VkRnJvbVRvID0gZnJvbVRvID09PSBcImZyb21cIiA/IFwidG9cIiA6IFwiZnJvbVwiO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgc2NvcGU6IHBlZXIsXG4gICAgICAgIGlkOiBgJHt0aGlzLnVuaXF1ZUlkfToke2Nvbm5lY3Rpb259ICR7cmV2ZXJzZWRGcm9tVG99YCxcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIFJlZ3VsYXIgKGRvIG9sZCBJRCBlc2NhcGluZyBpbiBvcmRlciB0byBub3QgZGlzdHVyYiBleGlzdGluZyBkZXBsb3ltZW50cylcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjb3BlOiB0aGlzLFxuICAgICAgICBpZDogYCR7ZnJvbVRvfSAke3RoaXMucmVuZGVyUGVlcihwZWVyKX06JHtjb25uZWN0aW9ufWAucmVwbGFjZShcbiAgICAgICAgICBcIi9cIixcbiAgICAgICAgICBcIl9cIixcbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJQZWVyKHBlZXI6IElQZWVyKSB7XG4gICAgaWYgKFRva2VuLmlzVW5yZXNvbHZlZChwZWVyLnVuaXF1ZUlkKSkge1xuICAgICAgLy8gTmVlZCB0byByZXR1cm4gYSB1bmlxdWUgdmFsdWUgZWFjaCB0aW1lIGEgcGVlclxuICAgICAgLy8gaXMgYW4gdW5yZXNvbHZlZCB0b2tlbiwgZWxzZSB0aGUgZHVwbGljYXRlIHNraXBwZXJcbiAgICAgIC8vIGluIGBzZy5hZGRYeHhSdWxlYCBjYW4gZGV0ZWN0IHVuaXF1ZSBydWxlcyBhcyBkdXBsaWNhdGVzXG4gICAgICByZXR1cm4gdGhpcy5wZWVyQXNUb2tlbkNvdW50KytcbiAgICAgICAgPyBgJ3tJbmRpcmVjdFBlZXIke3RoaXMucGVlckFzVG9rZW5Db3VudH19J2BcbiAgICAgICAgOiBcIntJbmRpcmVjdFBlZXJ9XCI7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBwZWVyLnVuaXF1ZUlkO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIFRoZSBzY29wZSBhbmQgaWQgaW4gd2hpY2ggYSBnaXZlbiBTZWN1cml0eUdyb3VwIHJ1bGUgc2hvdWxkIGJlIGRlZmluZWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVsZVNjb3BlIHtcbiAgLyoqXG4gICAqIFRoZSBTZWN1cml0eUdyb3VwIGluIHdoaWNoIGEgcnVsZSBzaG91bGQgYmUgc2NvcGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgc2NvcGU6IElTZWN1cml0eUdyb3VwO1xuICAvKipcbiAgICogVGhlIGNvbnN0cnVjdCBJRCB0byB1c2UgZm9yIHRoZSBydWxlLlxuICAgKi9cbiAgcmVhZG9ubHkgaWQ6IHN0cmluZztcbn1cblxuZnVuY3Rpb24gZGlmZmVyZW50U3RhY2tzKGdyb3VwMTogU2VjdXJpdHlHcm91cEJhc2UsIGdyb3VwMjogU2VjdXJpdHlHcm91cEJhc2UpIHtcbiAgcmV0dXJuIEF3c1N0YWNrLm9mKGdyb3VwMSkgIT09IEF3c1N0YWNrLm9mKGdyb3VwMik7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdXJpdHlHcm91cFByb3BzIGV4dGVuZHMgQXdzQ29uc3RydWN0UHJvcHMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIHNlY3VyaXR5IGdyb3VwLiBGb3IgdmFsaWQgdmFsdWVzLCBzZWUgdGhlIEdyb3VwTmFtZVxuICAgKiBwYXJhbWV0ZXIgb2YgdGhlIENyZWF0ZVNlY3VyaXR5R3JvdXAgYWN0aW9uIGluIHRoZSBBbWF6b24gRUMyIEFQSVxuICAgKiBSZWZlcmVuY2UuXG4gICAqXG4gICAqIEl0IGlzIG5vdCByZWNvbW1lbmRlZCB0byB1c2UgYW4gZXhwbGljaXQgZ3JvdXAgbmFtZS5cbiAgICpcbiAgICogQGRlZmF1bHQgSWYgeW91IGRvbid0IHNwZWNpZnkgYSBHcm91cE5hbWUsIEFXUyBDbG91ZEZvcm1hdGlvbiBnZW5lcmF0ZXMgYVxuICAgKiB1bmlxdWUgcGh5c2ljYWwgSUQgYW5kIHVzZXMgdGhhdCBJRCBmb3IgdGhlIGdyb3VwIG5hbWUuXG4gICAqL1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogQSBkZXNjcmlwdGlvbiBvZiB0aGUgc2VjdXJpdHkgZ3JvdXAuXG4gICAqXG4gICAqIEZvcmNlcyBuZXcgcmVzb3VyY2VcbiAgICpcbiAgICogU2VjdXJpdHkgZ3JvdXAgZGVzY3JpcHRpb24uIERlZmF1bHRzIHRvIGBNYW5hZ2VkIGJ5IFRlcnJhZm9ybWAuIENhbm5vdCBiZSBgXCJcImAuXG4gICAqXG4gICAqIE5PVEU6IFRoaXMgZmllbGQgbWFwcyB0byB0aGUgQVdTIGBHcm91cERlc2NyaXB0aW9uYCBhdHRyaWJ1dGUsIGZvciB3aGljaCB0aGVyZSBpcyBubyBVcGRhdGUgQVBJLlxuICAgKiBJZiB5b3UnZCBsaWtlIHRvIGNsYXNzaWZ5IHlvdXIgc2VjdXJpdHkgZ3JvdXBzIGluIGEgd2F5IHRoYXQgY2FuIGJlIHVwZGF0ZWQsIHVzZSB0YWdzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBUaGUgZGVmYXVsdCBuYW1lIHdpbGwgYmUgdGhlIGNvbnN0cnVjdCdzIENESyBwYXRoLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBWUEMgaW4gd2hpY2ggdG8gY3JlYXRlIHRoZSBzZWN1cml0eSBncm91cC5cbiAgICovXG4gIHJlYWRvbmx5IHZwYzogSVZwYztcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBhbGwgb3V0Ym91bmQgdHJhZmZpYyBieSBkZWZhdWx0LlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIHNldCB0byB0cnVlLCB0aGVyZSB3aWxsIG9ubHkgYmUgYSBzaW5nbGUgZWdyZXNzIHJ1bGUgd2hpY2ggYWxsb3dzIGFsbFxuICAgKiBvdXRib3VuZCB0cmFmZmljLiBJZiB0aGlzIGlzIHNldCB0byBmYWxzZSwgbm8gb3V0Ym91bmQgdHJhZmZpYyB3aWxsIGJlIGFsbG93ZWQgYnlcbiAgICogZGVmYXVsdCBhbmQgYWxsIGVncmVzcyB0cmFmZmljIG11c3QgYmUgZXhwbGljaXRseSBhdXRob3JpemVkLlxuICAgKlxuICAgKiBUbyBhbGxvdyBhbGwgaXB2NiB0cmFmZmljIHVzZSBhbGxvd0FsbElwdjZPdXRib3VuZFxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FsbE91dGJvdW5kPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogV2hldGhlciB0byBhbGxvdyBhbGwgb3V0Ym91bmQgaXB2NiB0cmFmZmljIGJ5IGRlZmF1bHQuXG4gICAqXG4gICAqIElmIHRoaXMgaXMgc2V0IHRvIHRydWUsIHRoZXJlIHdpbGwgb25seSBiZSBhIHNpbmdsZSBlZ3Jlc3MgcnVsZSB3aGljaCBhbGxvd3MgYWxsXG4gICAqIG91dGJvdW5kIGlwdjYgdHJhZmZpYy4gSWYgdGhpcyBpcyBzZXQgdG8gZmFsc2UsIG5vIG91dGJvdW5kIHRyYWZmaWMgd2lsbCBiZSBhbGxvd2VkIGJ5XG4gICAqIGRlZmF1bHQgYW5kIGFsbCBlZ3Jlc3MgaXB2NiB0cmFmZmljIG11c3QgYmUgZXhwbGljaXRseSBhdXRob3JpemVkLlxuICAgKlxuICAgKiBUbyBhbGxvdyBhbGwgaXB2NCB0cmFmZmljIHVzZSBhbGxvd0FsbE91dGJvdW5kXG4gICAqXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBhbGxvd0FsbElwdjZPdXRib3VuZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZGlzYWJsZSBpbmxpbmUgaW5ncmVzcyBhbmQgZWdyZXNzIHJ1bGUgb3B0aW1pemF0aW9uLlxuICAgKlxuICAgKiBJZiB0aGlzIGlzIHNldCB0byB0cnVlLCBpbmdyZXNzIGFuZCBlZ3Jlc3MgcnVsZXMgd2lsbCBub3QgYmUgZGVjbGFyZWQgdW5kZXIgdGhlXG4gICAqIFNlY3VyaXR5R3JvdXAgaW4gY2xvdWRmb3JtYXRpb24sIGJ1dCB3aWxsIGJlIHNlcGFyYXRlIGVsZW1lbnRzLlxuICAgKlxuICAgKiBJbmxpbmluZyBydWxlcyBpcyBhbiBvcHRpbWl6YXRpb24gZm9yIHByb2R1Y2luZyBzbWFsbGVyIHN0YWNrIHRlbXBsYXRlcy4gU29tZXRpbWVzXG4gICAqIHRoaXMgaXMgbm90IGRlc2lyYWJsZSwgZm9yIGV4YW1wbGUgd2hlbiBzZWN1cml0eSBncm91cCBhY2Nlc3MgaXMgbWFuYWdlZCB2aWEgdGFncy5cbiAgICpcbiAgICogVGhlIGRlZmF1bHQgdmFsdWUgY2FuIGJlIG92ZXJyaWRlbiBnbG9iYWxseSBieSBzZXR0aW5nIHRoZSBjb250ZXh0IHZhcmlhYmxlXG4gICAqICdAYXdzLWNkay9hd3MtZWMyLnNlY3VyaXR5R3JvdXBEaXNhYmxlSW5saW5lUnVsZXMnLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzYWJsZUlubGluZVJ1bGVzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGltcG9ydGVkIHNlY3VyaXR5IGdyb3Vwc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIFNlY3VyaXR5R3JvdXBJbXBvcnRPcHRpb25zIHtcbiAgLyoqXG4gICAqIE1hcmsgdGhlIFNlY3VyaXR5R3JvdXAgYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCBhbGxvd2luZyBhbGwgb3V0Ym91bmQgdHJhZmZpY1xuICAgKlxuICAgKiBPbmx5IGlmIHRoaXMgaXMgc2V0IHRvIGZhbHNlIHdpbGwgZWdyZXNzIHJ1bGVzIGJlIGFkZGVkIHRvIHRoaXMgc2VjdXJpdHlcbiAgICogZ3JvdXAuIEJlIGF3YXJlLCB0aGlzIHdvdWxkIHVuZG8gYW55IHBvdGVudGlhbCBcImFsbCBvdXRib3VuZCB0cmFmZmljXCJcbiAgICogZGVmYXVsdC5cbiAgICpcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dBbGxPdXRib3VuZD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhlIFNlY3VyaXR5R3JvdXAgYXMgaGF2aW5nIGJlZW4gY3JlYXRlZCBhbGxvd2luZyBhbGwgb3V0Ym91bmQgaXB2NiB0cmFmZmljXG4gICAqXG4gICAqIE9ubHkgaWYgdGhpcyBpcyBzZXQgdG8gZmFsc2Ugd2lsbCBlZ3Jlc3MgcnVsZXMgZm9yIGlwdjYgYmUgYWRkZWQgdG8gdGhpcyBzZWN1cml0eVxuICAgKiBncm91cC4gQmUgYXdhcmUsIHRoaXMgd291bGQgdW5kbyBhbnkgcG90ZW50aWFsIFwiYWxsIG91dGJvdW5kIHRyYWZmaWNcIlxuICAgKiBkZWZhdWx0LlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dBbGxJcHY2T3V0Ym91bmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBJZiBhIFNlY3VyaXR5R3JvdXAgaXMgbXV0YWJsZSBDREsgY2FuIGFkZCBydWxlcyB0byBleGlzdGluZyBncm91cHNcbiAgICpcbiAgICogQmV3YXJlIHRoYXQgbWFraW5nIGEgU2VjdXJpdHlHcm91cCBpbW11dGFibGUgbWlnaHQgbGVhZCB0byBpc3N1ZVxuICAgKiBkdWUgdG8gbWlzc2luZyBpbmdyZXNzL2VncmVzcyBydWxlcyBmb3IgbmV3IHJlc291cmNlcy5cbiAgICpcbiAgICpcbiAgICogQGRlZmF1bHQgdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgbXV0YWJsZT86IGJvb2xlYW47XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBBbWF6b24gRUMyIHNlY3VyaXR5IGdyb3VwIHdpdGhpbiBhIFZQQy5cbiAqXG4gKiBTZWN1cml0eSBHcm91cHMgYWN0IGxpa2UgYSBmaXJld2FsbCB3aXRoIGEgc2V0IG9mIHJ1bGVzLCBhbmQgYXJlIGFzc29jaWF0ZWRcbiAqIHdpdGggYW55IEFXUyByZXNvdXJjZSB0aGF0IGhhcyBvciBjcmVhdGVzIEVsYXN0aWMgTmV0d29yayBJbnRlcmZhY2VzIChFTklzKS5cbiAqIEEgdHlwaWNhbCBleGFtcGxlIG9mIGEgcmVzb3VyY2UgdGhhdCBoYXMgYSBzZWN1cml0eSBncm91cCBpcyBhbiBJbnN0YW5jZSAob3JcbiAqIEF1dG8gU2NhbGluZyBHcm91cCBvZiBpbnN0YW5jZXMpXG4gKlxuICogSWYgeW91IGFyZSBkZWZpbmluZyBuZXcgaW5mcmFzdHJ1Y3R1cmUgaW4gQ0RLLCB0aGVyZSBpcyBhIGdvb2QgY2hhbmNlIHlvdVxuICogd29uJ3QgaGF2ZSB0byBpbnRlcmFjdCB3aXRoIHRoaXMgY2xhc3MgYXQgYWxsLiBMaWtlIElBTSBSb2xlcywgU2VjdXJpdHlcbiAqIEdyb3VwcyBuZWVkIHRvIGV4aXN0IHRvIGNvbnRyb2wgYWNjZXNzIGJldHdlZW4gQVdTIHJlc291cmNlcywgYnV0IENESyB3aWxsXG4gKiBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGFuZCBwb3B1bGF0ZSB0aGVtIHdpdGggbGVhc3QtcHJpdmlsZWdlIHBlcm1pc3Npb25zXG4gKiBmb3IgeW91IHNvIHlvdSBjYW4gY29uY2VudHJhdGUgb24geW91ciBidXNpbmVzcyBsb2dpYy5cbiAqXG4gKiBBbGwgQ29uc3RydWN0cyB0aGF0IHJlcXVpcmUgU2VjdXJpdHkgR3JvdXBzIHdpbGwgY3JlYXRlIG9uZSBmb3IgeW91IGlmIHlvdVxuICogZG9uJ3Qgc3BlY2lmeSBvbmUgYXQgY29uc3RydWN0aW9uLiBBZnRlciBjb25zdHJ1Y3Rpb24sIHlvdSBjYW4gc2VsZWN0aXZlbHlcbiAqIGFsbG93IGNvbm5lY3Rpb25zIHRvIGFuZCBiZXR3ZWVuIGNvbnN0cnVjdHMgdmlhLS1mb3IgZXhhbXBsZS0tIHRoZSBgaW5zdGFuY2UuY29ubmVjdGlvbnNgXG4gKiBvYmplY3QuIFRoaW5rIG9mIGl0IGFzIFwiYWxsb3dpbmcgY29ubmVjdGlvbnMgdG8geW91ciBpbnN0YW5jZVwiLCByYXRoZXIgdGhhblxuICogXCJhZGRpbmcgaW5ncmVzcyBydWxlcyBhIHNlY3VyaXR5IGdyb3VwXCIuIFNlZSB0aGUgW0FsbG93aW5nXG4gKiBDb25uZWN0aW9uc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9hcGkvbGF0ZXN0L2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi1yZWFkbWUuaHRtbCNhbGxvd2luZy1jb25uZWN0aW9ucylcbiAqIHNlY3Rpb24gaW4gdGhlIGxpYnJhcnkgZG9jdW1lbnRhdGlvbiBmb3IgZXhhbXBsZXMuXG4gKlxuICogRGlyZWN0IG1hbmlwdWxhdGlvbiBvZiB0aGUgU2VjdXJpdHkgR3JvdXAgdGhyb3VnaCBgYWRkSW5ncmVzc1J1bGVgIGFuZFxuICogYGFkZEVncmVzc1J1bGVgIGlzIHBvc3NpYmxlLCBidXQgbXV0YXRpb24gdGhyb3VnaCB0aGUgYC5jb25uZWN0aW9uc2Agb2JqZWN0XG4gKiBpcyByZWNvbW1lbmRlZC4gSWYgeW91IHBlZXIgdHdvIGNvbnN0cnVjdHMgd2l0aCBzZWN1cml0eSBncm91cHMgdGhpcyB3YXksXG4gKiBhcHByb3ByaWF0ZSBydWxlcyB3aWxsIGJlIGNyZWF0ZWQgaW4gYm90aC5cbiAqXG4gKiBJZiB5b3UgaGF2ZSBhbiBleGlzdGluZyBzZWN1cml0eSBncm91cCB5b3Ugd2FudCB0byB1c2UgaW4geW91ciBDREsgYXBwbGljYXRpb24sXG4gKiB5b3Ugd291bGQgaW1wb3J0IGl0IGxpa2UgdGhpczpcbiAqXG4gKiBgYGB0c1xuICogY29uc3Qgc2VjdXJpdHlHcm91cCA9IGNvbXB1dGUuU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKHRoaXMsICdTRycsICdzZy0xMjM0NScsIHtcbiAqICAgbXV0YWJsZTogZmFsc2VcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWN1cml0eUdyb3VwIGV4dGVuZHMgU2VjdXJpdHlHcm91cEJhc2Uge1xuICAvKipcbiAgICogTG9vayB1cCBhIHNlY3VyaXR5IGdyb3VwIGJ5IGlkLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tTG9va3VwQnlJZChcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgc2VjdXJpdHlHcm91cElkOiBzdHJpbmcsXG4gICAgYWxsb3dBbGxPdXRib3VuZD86IGJvb2xlYW4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLmZyb21Mb29rdXBBdHRyaWJ1dGVzKHNjb3BlLCBpZCwge1xuICAgICAgc2VjdXJpdHlHcm91cElkLFxuICAgICAgYWxsb3dBbGxPdXRib3VuZCxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb29rIHVwIGEgc2VjdXJpdHkgZ3JvdXAgYnkgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUxvb2t1cEJ5TmFtZShcbiAgICBzY29wZTogQ29uc3RydWN0LFxuICAgIGlkOiBzdHJpbmcsXG4gICAgc2VjdXJpdHlHcm91cE5hbWU6IHN0cmluZyxcbiAgICB2cGM6IElWcGMsXG4gICAgYWxsb3dBbGxPdXRib3VuZD86IGJvb2xlYW4sXG4gICkge1xuICAgIHJldHVybiB0aGlzLmZyb21Mb29rdXBBdHRyaWJ1dGVzKHNjb3BlLCBpZCwge1xuICAgICAgc2VjdXJpdHlHcm91cE5hbWUsXG4gICAgICB2cGMsXG4gICAgICBhbGxvd0FsbE91dGJvdW5kLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydCBhbiBleGlzdGluZyBzZWN1cml0eSBncm91cCBpbnRvIHRoaXMgYXBwLlxuICAgKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIGFzc3VtZSB0aGF0IHRoZSBTZWN1cml0eSBHcm91cCBoYXMgYSBydWxlIGluIGl0IHdoaWNoIGFsbG93c1xuICAgKiBhbGwgb3V0Ym91bmQgdHJhZmZpYywgYW5kIHNvIHdpbGwgbm90IGFkZCBlZ3Jlc3MgcnVsZXMgdG8gdGhlIGltcG9ydGVkIFNlY3VyaXR5XG4gICAqIEdyb3VwIChvbmx5IGluZ3Jlc3MgcnVsZXMpLlxuICAgKlxuICAgKiBJZiB5b3VyIGV4aXN0aW5nIFNlY3VyaXR5IEdyb3VwIG5lZWRzIHRvIGhhdmUgZWdyZXNzIHJ1bGVzIGFkZGVkLCBwYXNzIHRoZVxuICAgKiBgYWxsb3dBbGxPdXRib3VuZDogZmFsc2VgIG9wdGlvbiBvbiBpbXBvcnQuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21TZWN1cml0eUdyb3VwSWQoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIHNlY3VyaXR5R3JvdXBJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFNlY3VyaXR5R3JvdXBJbXBvcnRPcHRpb25zID0ge30sXG4gICk6IElTZWN1cml0eUdyb3VwIHtcbiAgICBjbGFzcyBNdXRhYmxlSW1wb3J0IGV4dGVuZHMgU2VjdXJpdHlHcm91cEJhc2Uge1xuICAgICAgcHVibGljIHNlY3VyaXR5R3JvdXBJZCA9IHNlY3VyaXR5R3JvdXBJZDtcbiAgICAgIHB1YmxpYyBhbGxvd0FsbE91dGJvdW5kID0gb3B0aW9ucy5hbGxvd0FsbE91dGJvdW5kID8/IHRydWU7XG4gICAgICBwdWJsaWMgYWxsb3dBbGxJcHY2T3V0Ym91bmQgPSBvcHRpb25zLmFsbG93QWxsSXB2Nk91dGJvdW5kID8/IGZhbHNlO1xuXG4gICAgICBwdWJsaWMgYWRkRWdyZXNzUnVsZShcbiAgICAgICAgcGVlcjogSVBlZXIsXG4gICAgICAgIGNvbm5lY3Rpb246IFBvcnQsXG4gICAgICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgICAgICByZW1vdGVSdWxlPzogYm9vbGVhbixcbiAgICAgICkge1xuICAgICAgICAvLyBPbmx5IGlmIGFsbG93QWxsT3V0Ym91bmQgaGFzIGJlZW4gZGlzYWJsZWRcbiAgICAgICAgaWYgKG9wdGlvbnMuYWxsb3dBbGxPdXRib3VuZCA9PT0gZmFsc2UpIHtcbiAgICAgICAgICBzdXBlci5hZGRFZ3Jlc3NSdWxlKHBlZXIsIGNvbm5lY3Rpb24sIGRlc2NyaXB0aW9uLCByZW1vdGVSdWxlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGNsYXNzIEltbXV0YWJsZUltcG9ydCBleHRlbmRzIFNlY3VyaXR5R3JvdXBCYXNlIHtcbiAgICAgIHB1YmxpYyBzZWN1cml0eUdyb3VwSWQgPSBzZWN1cml0eUdyb3VwSWQ7XG4gICAgICBwdWJsaWMgYWxsb3dBbGxPdXRib3VuZCA9IG9wdGlvbnMuYWxsb3dBbGxPdXRib3VuZCA/PyB0cnVlO1xuICAgICAgcHVibGljIGFsbG93QWxsSXB2Nk91dGJvdW5kID0gb3B0aW9ucy5hbGxvd0FsbElwdjZPdXRib3VuZCA/PyBmYWxzZTtcblxuICAgICAgcHVibGljIGFkZEVncmVzc1J1bGUoXG4gICAgICAgIF9wZWVyOiBJUGVlcixcbiAgICAgICAgX2Nvbm5lY3Rpb246IFBvcnQsXG4gICAgICAgIF9kZXNjcmlwdGlvbj86IHN0cmluZyxcbiAgICAgICAgX3JlbW90ZVJ1bGU/OiBib29sZWFuLFxuICAgICAgKSB7XG4gICAgICAgIC8vIGRvIG5vdGhpbmdcbiAgICAgIH1cblxuICAgICAgcHVibGljIGFkZEluZ3Jlc3NSdWxlKFxuICAgICAgICBfcGVlcjogSVBlZXIsXG4gICAgICAgIF9jb25uZWN0aW9uOiBQb3J0LFxuICAgICAgICBfZGVzY3JpcHRpb24/OiBzdHJpbmcsXG4gICAgICAgIF9yZW1vdGVSdWxlPzogYm9vbGVhbixcbiAgICAgICkge1xuICAgICAgICAvLyBkbyBub3RoaW5nXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvbnMubXV0YWJsZSAhPT0gZmFsc2VcbiAgICAgID8gbmV3IE11dGFibGVJbXBvcnQoc2NvcGUsIGlkKVxuICAgICAgOiBuZXcgSW1tdXRhYmxlSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogTG9vayB1cCBhIHNlY3VyaXR5IGdyb3VwLlxuICAgKi9cbiAgcHJpdmF0ZSBzdGF0aWMgZnJvbUxvb2t1cEF0dHJpYnV0ZXMoXG4gICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBpZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFNlY3VyaXR5R3JvdXBMb29rdXBPcHRpb25zLFxuICApIHtcbiAgICBpZiAoXG4gICAgICBUb2tlbi5pc1VucmVzb2x2ZWQob3B0aW9ucy5zZWN1cml0eUdyb3VwSWQpIHx8XG4gICAgICBUb2tlbi5pc1VucmVzb2x2ZWQob3B0aW9ucy5zZWN1cml0eUdyb3VwTmFtZSkgfHxcbiAgICAgIFRva2VuLmlzVW5yZXNvbHZlZChvcHRpb25zLnZwYz8udnBjSWQpXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQWxsIGFyZ3VtZW50cyB0byBsb29rIHVwIGEgc2VjdXJpdHkgZ3JvdXAgbXVzdCBiZSBjb25jcmV0ZSAobm8gVG9rZW5zKVwiLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICBjb25zdCBkYXRhID0gbmV3IGRhdGFBd3NTZWN1cml0eUdyb3VwLkRhdGFBd3NTZWN1cml0eUdyb3VwKHNjb3BlLCBpZCwge1xuICAgICAgdnBjSWQ6IG9wdGlvbnMudnBjPy52cGNJZCxcbiAgICAgIGlkOiBvcHRpb25zLnNlY3VyaXR5R3JvdXBJZCxcbiAgICAgIG5hbWU6IG9wdGlvbnMuc2VjdXJpdHlHcm91cE5hbWUsXG4gICAgfSk7XG5cbiAgICAvLyBUT0RPOiBVc2UgR3JpZCBhcyBjb250ZXh0UHJvdmlkZXJcbiAgICAvLyBXYXJuaW5nOiB1c2luZyBkYXRhIHNvdXJjZSB0byBkZXRlcm1pbmUgaWYgdGhlIHNlY3VyaXR5IGdyb3VwIGFsbG93c1xuICAgIC8vIGFsbCBvdXRib3VuZCB3aXRoIGFsbG93QWxsT3V0Ym91bmRMb2NhbChzY29wZSwgaWQsIGRhdGEuaWQpXG4gICAgLy8gd291bGQgZm9yY2UgYWxsIGRlcGVuZGluZyBjb2RlIHRvIGRlYWwgd2l0aCBUb2tlbnNcbiAgICByZXR1cm4gU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKHNjb3BlLCBpZCwgZGF0YS5pZCwge1xuICAgICAgYWxsb3dBbGxPdXRib3VuZDogb3B0aW9ucy5hbGxvd0FsbE91dGJvdW5kID8/IHRydWUsXG4gICAgICBtdXRhYmxlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgc2VjdXJpdHkgZ3JvdXBcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVlBDIElEIHRoaXMgc2VjdXJpdHkgZ3JvdXAgaXMgcGFydCBvZi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBWcGNJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBTZWN1cml0eUdyb3VwIGhhcyBiZWVuIGNvbmZpZ3VyZWQgdG8gYWxsb3cgYWxsIG91dGJvdW5kIHRyYWZmaWNcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBhbGxvd0FsbE91dGJvdW5kOiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBTZWN1cml0eUdyb3VwIGhhcyBiZWVuIGNvbmZpZ3VyZWQgdG8gYWxsb3cgYWxsIG91dGJvdW5kIGlwdjYgdHJhZmZpY1xuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGFsbG93QWxsSXB2Nk91dGJvdW5kOiBib29sZWFuO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc2VjdXJpdHlHcm91cDogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwO1xuICBwcml2YXRlIHJlYWRvbmx5IGRpcmVjdEluZ3Jlc3NSdWxlczogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwSW5ncmVzc1tdID1cbiAgICBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBkaXJlY3RFZ3Jlc3NSdWxlczogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwRWdyZXNzW10gPSBbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0byBkaXNhYmxlIG9wdGltaXphdGlvbiBmb3IgaW5saW5lIHNlY3VyaXR5IGdyb3VwIHJ1bGVzLlxuICAgKi9cbiAgcHJpdmF0ZSByZWFkb25seSBkaXNhYmxlSW5saW5lUnVsZXM6IGJvb2xlYW47XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlY3VyaXR5R3JvdXBQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xuICAgIGNvbnN0IGdyb3VwTmFtZSA9XG4gICAgICBwcm9wcy5zZWN1cml0eUdyb3VwTmFtZSB8fFxuICAgICAgdGhpcy5zdGFjay51bmlxdWVSZXNvdXJjZU5hbWUodGhpcywge1xuICAgICAgICBwcmVmaXg6IHRoaXMuZ3JpZFVVSUQsXG4gICAgICB9KTtcblxuICAgIGNvbnN0IGdyb3VwRGVzY3JpcHRpb24gPSBwcm9wcy5kZXNjcmlwdGlvbiB8fCB0aGlzLm5vZGUucGF0aDtcblxuICAgIHRoaXMuYWxsb3dBbGxPdXRib3VuZCA9IHByb3BzLmFsbG93QWxsT3V0Ym91bmQgIT09IGZhbHNlO1xuICAgIHRoaXMuYWxsb3dBbGxJcHY2T3V0Ym91bmQgPSBwcm9wcy5hbGxvd0FsbElwdjZPdXRib3VuZCA/PyBmYWxzZTtcblxuICAgIHRoaXMuZGlzYWJsZUlubGluZVJ1bGVzID1cbiAgICAgIHByb3BzLmRpc2FibGVJbmxpbmVSdWxlcyAhPT0gdW5kZWZpbmVkXG4gICAgICAgID8gISFwcm9wcy5kaXNhYmxlSW5saW5lUnVsZXNcbiAgICAgICAgOiAhIXRoaXMubm9kZS50cnlHZXRDb250ZXh0KFxuICAgICAgICAgICAgU0VDVVJJVFlfR1JPVVBfRElTQUJMRV9JTkxJTkVfUlVMRVNfQ09OVEVYVF9LRVksXG4gICAgICAgICAgKTtcblxuICAgIHRoaXMuc2VjdXJpdHlHcm91cCA9IG5ldyBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXAodGhpcywgXCJSZXNvdXJjZVwiLCB7XG4gICAgICBuYW1lOiBncm91cE5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogZ3JvdXBEZXNjcmlwdGlvbixcbiAgICAgIGluZ3Jlc3M6IExhenkuYW55VmFsdWUoXG4gICAgICAgIHtcbiAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgdGhpcy5kaXJlY3RJbmdyZXNzUnVsZXMubWFwKFxuICAgICAgICAgICAgICBzZWN1cml0eUdyb3VwLnNlY3VyaXR5R3JvdXBJbmdyZXNzVG9UZXJyYWZvcm0sXG4gICAgICAgICAgICApLFxuICAgICAgICB9LFxuICAgICAgICB7IG9taXRFbXB0eUFycmF5OiB0cnVlIH0sXG4gICAgICApLFxuICAgICAgZWdyZXNzOiBMYXp5LmFueVZhbHVlKFxuICAgICAgICB7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT5cbiAgICAgICAgICAgIHRoaXMuZGlyZWN0RWdyZXNzUnVsZXMubWFwKFxuICAgICAgICAgICAgICBzZWN1cml0eUdyb3VwLnNlY3VyaXR5R3JvdXBFZ3Jlc3NUb1RlcnJhZm9ybSxcbiAgICAgICAgICAgICksXG4gICAgICAgIH0sXG4gICAgICAgIHsgb21pdEVtcHR5QXJyYXk6IHRydWUgfSxcbiAgICAgICksXG4gICAgICB2cGNJZDogcHJvcHMudnBjLnZwY0lkLFxuICAgIH0pO1xuXG4gICAgdGhpcy5zZWN1cml0eUdyb3VwSWQgPSB0aGlzLnNlY3VyaXR5R3JvdXAuaWQ7XG4gICAgdGhpcy5zZWN1cml0eUdyb3VwVnBjSWQgPSB0aGlzLnNlY3VyaXR5R3JvdXAudnBjSWQ7XG5cbiAgICB0aGlzLmFkZERlZmF1bHRFZ3Jlc3NSdWxlKCk7XG4gICAgdGhpcy5hZGREZWZhdWx0SXB2NkVncmVzc1J1bGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRJbmdyZXNzUnVsZShcbiAgICBwZWVyOiBJUGVlcixcbiAgICBjb25uZWN0aW9uOiBQb3J0LFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHJlbW90ZVJ1bGU/OiBib29sZWFuLFxuICApIHtcbiAgICBpZiAoXG4gICAgICAhcGVlci5jYW5JbmxpbmVSdWxlIHx8XG4gICAgICAhY29ubmVjdGlvbi5jYW5JbmxpbmVSdWxlIHx8XG4gICAgICB0aGlzLmRpc2FibGVJbmxpbmVSdWxlc1xuICAgICkge1xuICAgICAgc3VwZXIuYWRkSW5ncmVzc1J1bGUocGVlciwgY29ubmVjdGlvbiwgZGVzY3JpcHRpb24sIHJlbW90ZVJ1bGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChkZXNjcmlwdGlvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBkZXNjcmlwdGlvbiA9IGBmcm9tICR7cGVlci51bmlxdWVJZH06JHtjb25uZWN0aW9ufWA7XG4gICAgfVxuXG4gICAgdGhpcy5hZGREaXJlY3RJbmdyZXNzUnVsZSh7XG4gICAgICAuLi5wZWVyLnRvSW5ncmVzc1J1bGVDb25maWcoKSxcbiAgICAgIC4uLmNvbm5lY3Rpb24udG9SdWxlSnNvbigpLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgYWRkRWdyZXNzUnVsZShcbiAgICBwZWVyOiBJUGVlcixcbiAgICBjb25uZWN0aW9uOiBQb3J0LFxuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nLFxuICAgIHJlbW90ZVJ1bGU/OiBib29sZWFuLFxuICApIHtcbiAgICBjb25zdCBpc0lwdjYgPSBwZWVyLnRvRWdyZXNzUnVsZUNvbmZpZygpLmhhc093blByb3BlcnR5KFwiY2lkcklwdjZcIik7XG5cbiAgICBpZiAoIWlzSXB2NiAmJiB0aGlzLmFsbG93QWxsT3V0Ym91bmQpIHtcbiAgICAgIC8vIEluIHRoZSBjYXNlIG9mIFwiYWxsb3dBbGxPdXRib3VuZFwiLCB3ZSBkb24ndCBhZGQgYW55IG1vcmUgcnVsZXMuIFRoZXJlXG4gICAgICAvLyBpcyBvbmx5IG9uZSBydWxlIHdoaWNoIGFsbG93cyBhbGwgdHJhZmZpYyBhbmQgdGhhdCBzdWJzdW1lcyBhbnkgb3RoZXJcbiAgICAgIC8vIHJ1bGUuXG4gICAgICBpZiAoIXJlbW90ZVJ1bGUpIHtcbiAgICAgICAgLy8gV2FybiBvbmx5IGlmIGFkZEVncmVzc1J1bGUoKSB3YXMgZXhwbGljaXRlbHkgY2FsbGVkXG4gICAgICAgIC8vIFwiQGF3cy1jZGsvYXdzLWVjMjppcHY0SWdub3JlRWdyZXNzUnVsZVwiLFxuICAgICAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKFxuICAgICAgICAgIFwiSWdub3JpbmcgRWdyZXNzIHJ1bGUgc2luY2UgJ2FsbG93QWxsT3V0Ym91bmQnIGlzIHNldCB0byB0cnVlOyBUbyBhZGQgY3VzdG9taXplZCBydWxlcywgc2V0IGFsbG93QWxsT3V0Ym91bmQ9ZmFsc2Ugb24gdGhlIFNlY3VyaXR5R3JvdXBcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNJcHY2ICYmIHRoaXMuYWxsb3dBbGxJcHY2T3V0Ym91bmQpIHtcbiAgICAgIC8vIEluIHRoZSBjYXNlIG9mIFwiYWxsb3dBbGxJcHY2T3V0Ym91bmRcIiwgd2UgZG9uJ3QgYWRkIGFueSBtb3JlIHJ1bGVzLiBUaGVyZVxuICAgICAgLy8gaXMgb25seSBvbmUgcnVsZSB3aGljaCBhbGxvd3MgYWxsIHRyYWZmaWMgYW5kIHRoYXQgc3Vic3VtZXMgYW55IG90aGVyXG4gICAgICAvLyBydWxlLlxuICAgICAgaWYgKCFyZW1vdGVSdWxlKSB7XG4gICAgICAgIC8vIFdhcm4gb25seSBpZiBhZGRFZ3Jlc3NSdWxlKCkgd2FzIGV4cGxpY2l0ZWx5IGNhbGxlZFxuICAgICAgICAvLyBcIkBhd3MtY2RrL2F3cy1lYzI6aXB2Nklnbm9yZUVncmVzc1J1bGVcIixcbiAgICAgICAgQW5ub3RhdGlvbnMub2YodGhpcykuYWRkV2FybmluZyhcbiAgICAgICAgICBcIklnbm9yaW5nIEVncmVzcyBydWxlIHNpbmNlICdhbGxvd0FsbElwdjZPdXRib3VuZCcgaXMgc2V0IHRvIHRydWU7IFRvIGFkZCBjdXN0b21pemVkIHJ1bGVzLCBzZXQgYWxsb3dBbGxJcHY2T3V0Ym91bmQ9ZmFsc2Ugb24gdGhlIFNlY3VyaXR5R3JvdXBcIixcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXG4gICAgICAhcGVlci5jYW5JbmxpbmVSdWxlIHx8XG4gICAgICAhY29ubmVjdGlvbi5jYW5JbmxpbmVSdWxlIHx8XG4gICAgICB0aGlzLmRpc2FibGVJbmxpbmVSdWxlc1xuICAgICkge1xuICAgICAgc3VwZXIuYWRkRWdyZXNzUnVsZShwZWVyLCBjb25uZWN0aW9uLCBkZXNjcmlwdGlvbiwgcmVtb3RlUnVsZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGRlc2NyaXB0aW9uID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGRlc2NyaXB0aW9uID0gYGZyb20gJHtwZWVyLnVuaXF1ZUlkfToke2Nvbm5lY3Rpb259YDtcbiAgICB9XG5cbiAgICBjb25zdCBydWxlID0ge1xuICAgICAgLi4ucGVlci50b0VncmVzc1J1bGVDb25maWcoKSxcbiAgICAgIC4uLmNvbm5lY3Rpb24udG9SdWxlSnNvbigpLFxuICAgICAgZGVzY3JpcHRpb24sXG4gICAgfTtcblxuICAgIGlmIChpc0FsbFRyYWZmaWNSdWxlKHJ1bGUpKSB7XG4gICAgICAvLyBXZSBjYW5ub3QgYWxsb3cgdGhpczsgaWYgc29tZW9uZSBhZGRzIHRoZSBydWxlIGluIHRoaXMgd2F5LCBpdCB3aWxsIGJlXG4gICAgICAvLyByZW1vdmVkIGFnYWluIGlmIHRoZXkgYWRkIG90aGVyIHJ1bGVzLiBXZSBhbHNvIGNhbid0IGF1dG9tYXRpY2FsbHkgc3dpdGNoXG4gICAgICAvLyB0byBcImFsbE91dGJvdW5kPXRydWVcIiBtb2RlLCBiZWNhdXNlIHdlIG1pZ2h0IGhhdmUgYWxyZWFkeSBlbWl0dGVkXG4gICAgICAvLyBFZ3Jlc3NSdWxlIG9iamVjdHMgKHdoaWNoIGNvdW50IGFzIHJ1bGVzIGFkZGVkIGxhdGVyKSBhbmQgdGhlcmUncyBubyB3YXlcbiAgICAgIC8vIHRvIHJlY2FsbCB0aG9zZS4gQmV0dGVyIHRvIHByZXZlbnQgdGhpcyBmb3Igbm93LlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnQ2Fubm90IGFkZCBhbiBcImFsbCB0cmFmZmljXCIgZWdyZXNzIHJ1bGUgaW4gdGhpcyB3YXk7IHNldCBhbGxvd0FsbE91dGJvdW5kPXRydWUgKGZvciBpcHY2KSBvciBhbGxvd0FsbElwdjZPdXRib3VuZD10cnVlIChmb3IgaXB2Nikgb24gdGhlIFNlY3VyaXR5R3JvdXAgaW5zdGVhZC4nLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLmFkZERpcmVjdEVncmVzc1J1bGUocnVsZSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgZGlyZWN0IGluZ3Jlc3MgcnVsZVxuICAgKi9cbiAgcHJpdmF0ZSBhZGREaXJlY3RJbmdyZXNzUnVsZShydWxlOiBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBJbmdyZXNzKSB7XG4gICAgY29uc3QgciA9IG5vcm1hbGl6ZURpcmVjdFJ1bGUocnVsZSk7XG4gICAgaWYgKCF0aGlzLmhhc0luZ3Jlc3NSdWxlKHIpKSB7XG4gICAgICB0aGlzLmRpcmVjdEluZ3Jlc3NSdWxlcy5wdXNoKHIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gaW5ncmVzcyBydWxlIGV4aXN0cyBvbiB0aGUgZ3JvdXBcbiAgICovXG4gIHByaXZhdGUgaGFzSW5ncmVzc1J1bGUocnVsZTogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwSW5ncmVzcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmRpcmVjdEluZ3Jlc3NSdWxlcy5maW5kSW5kZXgoKHIpID0+IGluZ3Jlc3NSdWxlc0VxdWFsKHIsIHJ1bGUpKSA+IC0xXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYSBkaXJlY3QgZWdyZXNzIHJ1bGVcbiAgICovXG4gIHByaXZhdGUgYWRkRGlyZWN0RWdyZXNzUnVsZShydWxlOiBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBFZ3Jlc3MpIHtcbiAgICBjb25zdCByID0gbm9ybWFsaXplRGlyZWN0UnVsZShydWxlKTtcbiAgICBpZiAoIXRoaXMuaGFzRWdyZXNzUnVsZShyKSkge1xuICAgICAgdGhpcy5kaXJlY3RFZ3Jlc3NSdWxlcy5wdXNoKHIpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gd2hldGhlciB0aGUgZ2l2ZW4gZWdyZXNzIHJ1bGUgZXhpc3RzIG9uIHRoZSBncm91cFxuICAgKi9cbiAgcHJpdmF0ZSBoYXNFZ3Jlc3NSdWxlKHJ1bGU6IHNlY3VyaXR5R3JvdXAuU2VjdXJpdHlHcm91cEVncmVzcyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAoXG4gICAgICB0aGlzLmRpcmVjdEVncmVzc1J1bGVzLmZpbmRJbmRleCgocikgPT4gZWdyZXNzUnVsZXNFcXVhbChyLCBydWxlKSkgPiAtMVxuICAgICk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIHRoZSBkZWZhdWx0IGVncmVzcyBydWxlIHRvIHRoZSBzZWN1cml0eUdyb3VwXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIEFXUyBjcmVhdGVzIGFuIGBBTExPVyBBTExgIGVncmVzcyBydWxlIHdoZW4gY3JlYXRpbmcgYSBuZXcgU2VjdXJpdHkgR3JvdXAgaW5zaWRlIG9mIGEgVlBDLlxuICAgKiBXaGVuIGNyZWF0aW5nIGEgbmV3IFNlY3VyaXR5IEdyb3VwIGluc2lkZSBhIFZQQywgVGVycmFmb3JtIHdpbGwgcmVtb3ZlIHRoaXMgZGVmYXVsdCBydWxlLCBhbmQgcmVxdWlyZVxuICAgKiB5b3Ugc3BlY2lmaWNhbGx5IHJlLWNyZWF0ZSBpdCBpZiB5b3UgZGVzaXJlIHRoYXQgcnVsZS5cbiAgICpcbiAgICogVGhpcyBkZXBlbmRzIG9uIGFsbG93QWxsT3V0Ym91bmRcbiAgICpcbiAgICogLSBJZiBhbGxvd0FsbE91dGJvdW5kIGlzIHRydWUsIHdlIHdpbGwgYWRkIGFuIGFsbG93IGFsbCBydWxlLlxuICAgKiAtIElmIGFsbG93QWxsT3V0Ym91bmQgaXMgZmFsc2UsIHdlIGRvbid0IGRvIGFueXRoaW5nIHNpbmNlIFRGIGRvZXMgbm90IGFkZFxuICAgKiAgIGEgZGVmYXVsdCBhbGxvdyBhbGwgaXB2NCBydWxlLlxuICAgKi9cbiAgcHJpdmF0ZSBhZGREZWZhdWx0RWdyZXNzUnVsZSgpIHtcbiAgICBpZiAoIXRoaXMuYWxsb3dBbGxPdXRib3VuZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAodGhpcy5kaXNhYmxlSW5saW5lUnVsZXMpIHtcbiAgICAgIHN1cGVyLmFkZEVncmVzc1J1bGUoXG4gICAgICAgIEFMTF9UUkFGRklDX1BFRVIsXG4gICAgICAgIEFMTF9UUkFGRklDX1BPUlQsXG4gICAgICAgIEFMTE9XX0FMTF9SVUxFLmRlc2NyaXB0aW9uLFxuICAgICAgICBmYWxzZSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuZGlyZWN0RWdyZXNzUnVsZXMucHVzaChBTExPV19BTExfUlVMRSk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIGFsbG93IGFsbCBpcHY2IGVncmVzcyBydWxlIHRvIHRoZSBzZWN1cml0eUdyb3VwXG4gICAqXG4gICAqIFRoaXMgZGVwZW5kcyBvbiBhbGxvd0FsbElwdjZPdXRib3VuZDpcbiAgICpcbiAgICogLSBJZiBhbGxvd0FsbElwdjZPdXRib3VuZCBpcyB0cnVlLCB3ZSB3aWxsIGFkZCBhbiBhbGxvdyBhbGwgcnVsZS5cbiAgICogLSBJZiBhbGxvd0FsbE91dGJvdW5kIGlzIGZhbHNlLCB3ZSBkb24ndCBkbyBhbnl0aGluZyBzaW5jZSBFQzIgZG9lcyBub3QgYWRkXG4gICAqICAgYSBkZWZhdWx0IGFsbG93IGFsbCBpcHY2IHJ1bGUuXG4gICAqL1xuICBwcml2YXRlIGFkZERlZmF1bHRJcHY2RWdyZXNzUnVsZSgpIHtcbiAgICBjb25zdCBkZXNjcmlwdGlvbiA9IFwiQWxsb3cgYWxsIG91dGJvdW5kIGlwdjYgdHJhZmZpYyBieSBkZWZhdWx0XCI7XG4gICAgY29uc3QgcGVlciA9IFBlZXIuYW55SXB2NigpO1xuICAgIGlmICh0aGlzLmFsbG93QWxsSXB2Nk91dGJvdW5kKSB7XG4gICAgICBpZiAodGhpcy5kaXNhYmxlSW5saW5lUnVsZXMpIHtcbiAgICAgICAgc3VwZXIuYWRkRWdyZXNzUnVsZShwZWVyLCBQb3J0LmFsbFRyYWZmaWMoKSwgZGVzY3JpcHRpb24sIGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuZGlyZWN0RWdyZXNzUnVsZXMucHVzaCh7XG4gICAgICAgICAgcHJvdG9jb2w6IFwiLTFcIixcbiAgICAgICAgICBmcm9tUG9ydDogMCxcbiAgICAgICAgICB0b1BvcnQ6IDAsXG4gICAgICAgICAgaXB2NkNpZHJCbG9ja3M6IFtwZWVyLnVuaXF1ZUlkXSxcbiAgICAgICAgICBkZXNjcmlwdGlvbixcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogRml4IHVwIGEgZGlyZWN0IHJ1bGUgdG8gaGF2ZSBmcm9tUG9ydC90b1BvcnQgZGVmaW5lZFxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEaXJlY3RSdWxlKFxuICBydWxlOiBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBFZ3Jlc3MgfCBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBJbmdyZXNzLFxuKTogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwRWdyZXNzIHwgc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwSW5ncmVzcyB7XG4gIC8vIFVubGlrZSBzZWN1cml0eV9ncm91cF8oaW58ZSlncmVzc19ydWxlLCBURiBTZWN1cml0eSBHcm91cCBkaXJlY3QgcnVsZXNcbiAgLy8gY2FuJ3QgaGF2ZSBmcm9tUG9ydC90b1BvcnQgdW5kZWZpbmVkLlxuICAvLyByZWZzOlxuICAvLyAtIGh0dHBzOi8vcmVnaXN0cnkudGVycmFmb3JtLmlvL3Byb3ZpZGVycy9oYXNoaWNvcnAvYXdzLzUuODguMC9kb2NzL3Jlc291cmNlcy92cGNfc2VjdXJpdHlfZ3JvdXBfZWdyZXNzX3J1bGUjaXBfcHJvdG9jb2wtMVxuICAvLyAgIHZzXG4gIC8vIC0gaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS44OC4wL2RvY3MvcmVzb3VyY2VzL3NlY3VyaXR5X2dyb3VwI3Byb3RvY29sLTFcbiAgcmV0dXJuIHtcbiAgICAuLi5ydWxlLFxuICAgIGZyb21Qb3J0OiBydWxlLmZyb21Qb3J0ID8/IDAsXG4gICAgdG9Qb3J0OiBydWxlLnRvUG9ydCA/PyAwLFxuICB9O1xufVxuXG4vKipcbiAqIEVncmVzcyBydWxlIHRoYXQgbWF0Y2hlcyBhbGwgdHJhZmZpY1xuICovXG5jb25zdCBBTExPV19BTExfUlVMRTogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwRWdyZXNzID0ge1xuICBjaWRyQmxvY2tzOiBbXCIwLjAuMC4wLzBcIl0sXG4gIGRlc2NyaXB0aW9uOiBcIkFsbG93IGFsbCBvdXRib3VuZCB0cmFmZmljIGJ5IGRlZmF1bHRcIixcbiAgLyoqXG4gICAqIElmIHlvdSBzZWxlY3QgYSBwcm90b2NvbCBvZiAtMSAoc2VtYW50aWNhbGx5IGVxdWl2YWxlbnQgdG8gYWxsLCB3aGljaCBpcyBub3QgYSB2YWxpZCB2YWx1ZSBoZXJlKSxcbiAgICogeW91IG11c3Qgc3BlY2lmeSBhIGZyb21fcG9ydCBhbmQgdG9fcG9ydCBlcXVhbCB0byAwLlxuICAgKi9cbiAgcHJvdG9jb2w6IFwiLTFcIixcbiAgZnJvbVBvcnQ6IDAsXG4gIHRvUG9ydDogMCxcbn07XG5cbmNvbnN0IEFMTF9UUkFGRklDX1BFRVIgPSBQZWVyLmFueUlwdjQoKTtcbmNvbnN0IEFMTF9UUkFGRklDX1BPUlQgPSBQb3J0LmFsbFRyYWZmaWMoKTtcblxuZXhwb3J0IGludGVyZmFjZSBDb25uZWN0aW9uUnVsZSB7XG4gIC8qKlxuICAgKiBUaGUgSVAgcHJvdG9jb2wgbmFtZSAodGNwLCB1ZHAsIGljbXApIG9yIG51bWJlciAoc2VlIFByb3RvY29sIE51bWJlcnMpLlxuICAgKiBVc2UgLTEgdG8gc3BlY2lmeSBhbGwgcHJvdG9jb2xzLiBJZiB5b3Ugc3BlY2lmeSAtMSwgb3IgYSBwcm90b2NvbCBudW1iZXJcbiAgICogb3RoZXIgdGhhbiB0Y3AsIHVkcCwgaWNtcCwgb3IgNTggKElDTVB2NiksIHRyYWZmaWMgb24gYWxsIHBvcnRzIGlzXG4gICAqIGFsbG93ZWQsIHJlZ2FyZGxlc3Mgb2YgYW55IHBvcnRzIHlvdSBzcGVjaWZ5LiBGb3IgdGNwLCB1ZHAsIGFuZCBpY21wLCB5b3VcbiAgICogbXVzdCBzcGVjaWZ5IGEgcG9ydCByYW5nZS4gRm9yIHByb3RvY29sIDU4IChJQ01QdjYpLCB5b3UgY2FuIG9wdGlvbmFsbHlcbiAgICogc3BlY2lmeSBhIHBvcnQgcmFuZ2U7IGlmIHlvdSBkb24ndCwgdHJhZmZpYyBmb3IgYWxsIHR5cGVzIGFuZCBjb2RlcyBpc1xuICAgKiBhbGxvd2VkLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0Y3BcbiAgICovXG4gIHJlYWRvbmx5IHByb3RvY29sPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTdGFydCBvZiBwb3J0IHJhbmdlIGZvciB0aGUgVENQIGFuZCBVRFAgcHJvdG9jb2xzLCBvciBhbiBJQ01QIHR5cGUgbnVtYmVyLlxuICAgKlxuICAgKiBJZiB5b3Ugc3BlY2lmeSBpY21wIGZvciB0aGUgSXBQcm90b2NvbCBwcm9wZXJ0eSwgeW91IGNhbiBzcGVjaWZ5XG4gICAqIC0xIGFzIGEgd2lsZGNhcmQgKGkuZS4sIGFueSBJQ01QIHR5cGUgbnVtYmVyKS5cbiAgICovXG4gIHJlYWRvbmx5IGZyb21Qb3J0OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIEVuZCBvZiBwb3J0IHJhbmdlIGZvciB0aGUgVENQIGFuZCBVRFAgcHJvdG9jb2xzLCBvciBhbiBJQ01QIGNvZGUuXG4gICAqXG4gICAqIElmIHlvdSBzcGVjaWZ5IGljbXAgZm9yIHRoZSBJcFByb3RvY29sIHByb3BlcnR5LCB5b3UgY2FuIHNwZWNpZnkgLTEgYXMgYVxuICAgKiB3aWxkY2FyZCAoaS5lLiwgYW55IElDTVAgY29kZSkuXG4gICAqXG4gICAqIEBkZWZhdWx0IElmIHRvUG9ydCBpcyBub3Qgc3BlY2lmaWVkLCBpdCB3aWxsIGJlIHRoZSBzYW1lIGFzIGZyb21Qb3J0LlxuICAgKi9cbiAgcmVhZG9ubHkgdG9Qb3J0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBEZXNjcmlwdGlvbiBvZiB0aGlzIGNvbm5lY3Rpb24uIEl0IGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgaW5ncmVzcyBydWxlXG4gICAqIGFuZCB0aGUgZWdyZXNzIHJ1bGUuXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGRlc2NyaXB0aW9uXG4gICAqL1xuICByZWFkb25seSBkZXNjcmlwdGlvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBDb21wYXJlIHR3byBpbmdyZXNzIHJ1bGVzIGZvciBlcXVhbGl0eSB0aGUgc2FtZSB3YXkgQ2xvdWRGb3JtYXRpb24gd291bGQgKGRpc2NhcmRpbmcgZGVzY3JpcHRpb24pXG4gKi9cbmZ1bmN0aW9uIGluZ3Jlc3NSdWxlc0VxdWFsKFxuICBhOiBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBJbmdyZXNzLFxuICBiOiBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBJbmdyZXNzLFxuKSB7XG4gIHJldHVybiAoXG4gICAgYS5jaWRyQmxvY2tzID09PSBiLmNpZHJCbG9ja3MgJiZcbiAgICBhLmlwdjZDaWRyQmxvY2tzID09PSBiLmlwdjZDaWRyQmxvY2tzICYmXG4gICAgYS5mcm9tUG9ydCA9PT0gYi5mcm9tUG9ydCAmJlxuICAgIGEudG9Qb3J0ID09PSBiLnRvUG9ydCAmJlxuICAgIGEucHJvdG9jb2wgPT09IGIucHJvdG9jb2wgJiZcbiAgICBhLnByZWZpeExpc3RJZHMgPT09IGIucHJlZml4TGlzdElkcyAmJlxuICAgIGEuc2VjdXJpdHlHcm91cHMgPT09IGIuc2VjdXJpdHlHcm91cHNcbiAgKTtcbn1cblxuLyoqXG4gKiBDb21wYXJlIHR3byBlZ3Jlc3MgcnVsZXMgZm9yIGVxdWFsaXR5IHRoZSBzYW1lIHdheSBDbG91ZEZvcm1hdGlvbiB3b3VsZCAoZGlzY2FyZGluZyBkZXNjcmlwdGlvbilcbiAqL1xuZnVuY3Rpb24gZWdyZXNzUnVsZXNFcXVhbChcbiAgYTogc2VjdXJpdHlHcm91cC5TZWN1cml0eUdyb3VwRWdyZXNzLFxuICBiOiBzZWN1cml0eUdyb3VwLlNlY3VyaXR5R3JvdXBFZ3Jlc3MsXG4pIHtcbiAgcmV0dXJuIChcbiAgICBhLmNpZHJCbG9ja3MgPT09IGIuY2lkckJsb2NrcyAmJlxuICAgIGEuaXB2NkNpZHJCbG9ja3MgPT09IGIuaXB2NkNpZHJCbG9ja3MgJiZcbiAgICBhLmZyb21Qb3J0ID09PSBiLmZyb21Qb3J0ICYmXG4gICAgYS50b1BvcnQgPT09IGIudG9Qb3J0ICYmXG4gICAgYS5wcm90b2NvbCA9PT0gYi5wcm90b2NvbCAmJlxuICAgIGEucHJlZml4TGlzdElkcyA9PT0gYi5wcmVmaXhMaXN0SWRzICYmXG4gICAgYS5zZWN1cml0eUdyb3VwcyA9PT0gYi5zZWN1cml0eUdyb3Vwc1xuICApO1xufVxuXG4vKipcbiAqIFdoZXRoZXIgdGhpcyBydWxlIHJlZmVycyB0byBhbGwgdHJhZmZpY1xuICovXG5mdW5jdGlvbiBpc0FsbFRyYWZmaWNSdWxlKHJ1bGU6IGFueSkge1xuICByZXR1cm4gKFxuICAgIChydWxlLmNpZHJJcHY0ID09PSBcIjAuMC4wLjAvMFwiIHx8XG4gICAgICAocnVsZS5jaWRyQmxvY2tzICYmIHJ1bGUuY2lkckJsb2Nrc1swXSA9PT0gXCIwLjAuMC4wLzBcIikgfHxcbiAgICAgIHJ1bGUuY2lkcklwdjYgPT09IFwiOjovMFwiKSAmJlxuICAgIHJ1bGUuaXBQcm90b2NvbCA9PT0gXCItMVwiXG4gICk7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgbG9va2luZyB1cCBhbiBleGlzdGluZyBTZWN1cml0eUdyb3VwLlxuICpcbiAqIEVpdGhlciBgc2VjdXJpdHlHcm91cE5hbWVgIG9yIGBzZWN1cml0eUdyb3VwSWRgIGhhcyB0byBiZSBzcGVjaWZpZWQuXG4gKi9cbmludGVyZmFjZSBTZWN1cml0eUdyb3VwTG9va3VwT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgc2VjdXJpdHkgZ3JvdXBcbiAgICpcbiAgICogSWYgZ2l2ZW4sIHdpbGwgaW1wb3J0IHRoZSBTZWN1cml0eUdyb3VwIHdpdGggdGhpcyBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCBEb24ndCBmaWx0ZXIgb24gc2VjdXJpdHlHcm91cE5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBOYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIHNlY3VyaXR5IGdyb3VwXG4gICAqXG4gICAqIElmIGdpdmVuLCB3aWxsIGltcG9ydCB0aGUgU2VjdXJpdHlHcm91cCB3aXRoIHRoaXMgSUQuXG4gICAqXG4gICAqIEBkZWZhdWx0IERvbid0IGZpbHRlciBvbiBzZWN1cml0eUdyb3VwSWRcbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBJZD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFZQQyBvZiB0aGUgc2VjdXJpdHkgZ3JvdXBcbiAgICpcbiAgICogSWYgZ2l2ZW4sIHdpbGwgZmlsdGVyIHRoZSBTZWN1cml0eUdyb3VwIGJhc2VkIG9uIHRoZSBWUEMuXG4gICAqXG4gICAqIEBkZWZhdWx0IERvbid0IGZpbHRlciBvbiBWUENcbiAgICovXG4gIHJlYWRvbmx5IHZwYz86IElWcGM7XG5cbiAgLyoqXG4gICAqIE1hcmsgdGhlIFNlY3VyaXR5R3JvdXAgYXMgYWxsb3dpbmcgYWxsIG91dGJvdW5kIHRyYWZmaWNcbiAgICpcbiAgICogT25seSBpZiB0aGlzIGlzIHNldCB0byBmYWxzZSB3aWxsIGVncmVzcyBydWxlcyBiZSBhZGRlZCB0byB0aGlzIHNlY3VyaXR5XG4gICAqIGdyb3VwLiBCZSBhd2FyZSwgdGhpcyB3b3VsZCB1bmRvIGFueSBwb3RlbnRpYWwgXCJhbGwgb3V0Ym91bmQgdHJhZmZpY1wiXG4gICAqIGRlZmF1bHQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGFsbG93QWxsT3V0Ym91bmQ/OiBib29sZWFuOyAvLyBUT0RPOiBVc2UgR3JpZCBhcyBjb250ZXh0UHJvdmlkZXJcbn1cbiJdfQ==
|
|
@@ -173,5 +173,5 @@ class StateGraph {
|
|
|
173
173
|
}
|
|
174
174
|
exports.StateGraph = StateGraph;
|
|
175
175
|
_a = JSII_RTTI_SYMBOL_1;
|
|
176
|
-
StateGraph[_a] = { fqn: "terraconstructs.aws.compute.StateGraph", version: "0.0.
|
|
176
|
+
StateGraph[_a] = { fqn: "terraconstructs.aws.compute.StateGraph", version: "0.0.24" };
|
|
177
177
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtZ3JhcGguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2NvbXB1dGUvc3RhdGUtZ3JhcGgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFHQSw4QkFBOEI7QUFDOUIsOERBQTBEO0FBRzFEOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FxQkc7QUFDSCxNQUFhLFVBQVU7SUErQnJCOzs7T0FHRztJQUNILFlBQ2tCLFVBQWlCLEVBQ2hCLGdCQUF3QjtRQUR6QixlQUFVLEdBQVYsVUFBVSxDQUFPO1FBQ2hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBUTtRQTFCM0M7O1dBRUc7UUFDYSxxQkFBZ0IsR0FBRyxJQUFJLEtBQUssRUFBdUIsQ0FBQztRQUVwRTs7V0FFRztRQUNjLGNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBUyxDQUFDO1FBRTlDOztXQUVHO1FBQ2MsdUJBQWtCLEdBQUcsSUFBSSxHQUFHLEVBQXNCLENBQUM7UUFlbEUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDL0IsVUFBVSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMvQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNJLGFBQWEsQ0FBQyxLQUFZO1FBQy9CLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ2pELElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzVCLENBQUM7SUFFRDs7T0FFRztJQUNJLHVCQUF1QixDQUFDLFNBQThCO1FBQzNELElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO1lBQ3BCLElBQUksQ0FBQyxVQUFVLENBQUMsdUJBQXVCLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDckQsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLFNB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QWUsQ0FBQyxDQUFDO1FBQ3RELENBQUM7SUFDSCxDQUFDO0lBRUQ7O09BRUc7SUFDSSxJQUFJLENBQUMsWUFBMEI7UUFDcEMsS0FBSyxNQUFNLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDbkMsSUFBSSxnQ0FBYyxDQUFDLGdCQUFnQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLFlBQVksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQ2xDLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxZQUFZLEVBQUUsc0JBQXNCLEVBQUU7b0JBQ25ELFFBQVEsRUFBRSxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQzlCLFlBQVksRUFDWiw4QkFBOEIsRUFDOUI7d0JBQ0UsU0FBUyxFQUFFOzRCQUNULElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztnQ0FDdEIsT0FBTyxFQUFFLENBQUMsdUJBQXVCLENBQUM7Z0NBQ2xDLFNBQVMsRUFBRSxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUM7NkJBQzFDLENBQUM7NEJBQ0YsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDO2dDQUN0QixPQUFPLEVBQUU7b0NBQ1AsMEJBQTBCO29DQUMxQixzQkFBc0I7aUNBQ3ZCO2dDQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFDLGVBQWUsSUFBSSxDQUFDOzZCQUNqRCxDQUFDO3lCQUNIO3FCQUNGLENBQ0Y7aUJBQ0YsQ0FBQyxDQUNILENBQUM7Z0JBRUYsTUFBTTtZQUNSLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQzs7QUFyTEgsZ0NBc0xDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTYwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMvbGliL3N0YXRlLWdyYXBoLnRzXG5pbXBvcnQgeyBTdGF0ZU1hY2hpbmUgfSBmcm9tIFwiLi9zdGF0ZS1tYWNoaW5lXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCIuLi8uLlwiO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gXCIuLi9pYW1cIjtcbmltcG9ydCB7IERpc3RyaWJ1dGVkTWFwIH0gZnJvbSBcIi4vc3RhdGVzL2Rpc3RyaWJ1dGVkLW1hcFwiO1xuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi9zdGF0ZXMvc3RhdGVcIjtcblxuLyoqXG4gKiBBIGNvbGxlY3Rpb24gb2YgY29ubmVjdGVkIHN0YXRlc1xuICpcbiAqIEEgU3RhdGVHcmFwaCBpcyB1c2VkIHRvIGtlZXAgdHJhY2sgb2YgYWxsIHN0YXRlcyB0aGF0IGFyZSBjb25uZWN0ZWQgKGhhdmVcbiAqIHRyYW5zaXRpb25zIGJldHdlZW4gdGhlbSkuIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlIHN1YnN0YXRlbWFjaGluZXMgaW5cbiAqIGEgUGFyYWxsZWwncyBicmFuY2hlczogdGhvc2UgYXJlIHRoZWlyIG93biBTdGF0ZUdyYXBocywgYnV0IHRoZSBncmFwaHNcbiAqIHRoZW1zZWx2ZXMgaGF2ZSBhIGhpZXJhcmNoaWNhbCByZWxhdGlvbnNoaXAgYXMgd2VsbC5cbiAqXG4gKiBCeSBhc3NpZ25pbmcgc3RhdGVzIHRvIGEgZGVmaW5pdGl2ZSBTdGF0ZUdyYXBoLCB3ZSB2ZXJpZnkgdGhhdCBubyBzdGF0ZVxuICogbWFjaGluZXMgYXJlIGNvbnN0cnVjdGVkLiBJbiBwYXJ0aWN1bGFyOlxuICpcbiAqIC0gRXZlcnkgc3RhdGUgb2JqZWN0IGNhbiBvbmx5IGV2ZXIgYmUgaW4gMSBTdGF0ZUdyYXBoLCBhbmQgbm90IGluYWR2ZXJ0ZW50bHlcbiAqICAgYmUgdXNlZCBpbiB0d28gZ3JhcGhzLlxuICogLSBFdmVyeSBzdGF0ZUlkIG11c3QgYmUgdW5pcXVlIGFjcm9zcyBhbGwgc3RhdGVzIGluIHRoZSBlbnRpcmUgc3RhdGVcbiAqICAgbWFjaGluZS5cbiAqXG4gKiBBbGwgcG9saWN5IHN0YXRlbWVudHMgaW4gYWxsIHN0YXRlcyBpbiBhbGwgc3Vic3RhdGVtYWNoaW5lcyBhcmUgYnViYmxlZCBzb1xuICogdGhhdCB0aGUgdG9wLWxldmVsIFN0YXRlTWFjaGluZSBpbnN0YW50aWF0aW9uIGNhbiByZWFkIHRoZW0gYWxsIGFuZCBhZGRcbiAqIHRoZW0gdG8gdGhlIElBTSBSb2xlLlxuICpcbiAqIFlvdSBkbyBub3QgbmVlZCB0byBpbnN0YW50aWF0ZSB0aGlzIGNsYXNzOyBpdCBpcyB1c2VkIGludGVybmFsbHkuXG4gKi9cbmV4cG9ydCBjbGFzcyBTdGF0ZUdyYXBoIHtcbiAgLyoqXG4gICAqIFNldCBhIHRpbWVvdXQgdG8gcmVuZGVyIGludG8gdGhlIGdyYXBoIEpTT04uXG4gICAqXG4gICAqIFJlYWQvd3JpdGUuIE9ubHkgbWFrZXMgc2Vuc2Ugb24gdGhlIHRvcC1sZXZlbCBncmFwaCwgc3ViZ3JhcGhzXG4gICAqIGRvIG5vdCBzdXBwb3J0IHRoaXMgZmVhdHVyZS5cbiAgICpcbiAgICogQGRlZmF1bHQgTm8gdGltZW91dFxuICAgKi9cbiAgcHVibGljIHRpbWVvdXQ/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogVGhlIGFjY3VtdWxhdGVkIHBvbGljeSBzdGF0ZW1lbnRzXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgcG9saWN5U3RhdGVtZW50cyA9IG5ldyBBcnJheTxpYW0uUG9saWN5U3RhdGVtZW50PigpO1xuXG4gIC8qKlxuICAgKiBBbGwgc3RhdGVzIGluIHRoaXMgZ3JhcGhcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgYWxsU3RhdGVzID0gbmV3IFNldDxTdGF0ZT4oKTtcblxuICAvKipcbiAgICogQSBtYXBwaW5nIG9mIHN0YXRlSWQgLT4gR3JhcGggZm9yIGFsbCBzdGF0ZXMgaW4gdGhpcyBncmFwaCBhbmQgc3ViZ3JhcGhzXG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IGFsbENvbnRhaW5lZFN0YXRlcyA9IG5ldyBNYXA8c3RyaW5nLCBTdGF0ZUdyYXBoPigpO1xuXG4gIC8qKlxuICAgKiBDb250YWluaW5nIGdyYXBoIG9mIHRoaXMgZ3JhcGhcbiAgICovXG4gIHByaXZhdGUgc3VwZXJHcmFwaD86IFN0YXRlR3JhcGg7XG5cbiAgLyoqXG4gICAqIEBwYXJhbSBzdGFydFN0YXRlIHN0YXRlIHRoYXQgZ2V0cyBleGVjdXRlZCB3aGVuIHRoZSBzdGF0ZSBtYWNoaW5lIGlzIGxhdW5jaGVkXG4gICAqIEBwYXJhbSBncmFwaERlc2NyaXB0aW9uIGRlc2NyaXB0aW9uIG9mIHRoZSBzdGF0ZSBtYWNoaW5lXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhcnRTdGF0ZTogU3RhdGUsXG4gICAgcHJpdmF0ZSByZWFkb25seSBncmFwaERlc2NyaXB0aW9uOiBzdHJpbmcsXG4gICkge1xuICAgIHRoaXMuYWxsU3RhdGVzLmFkZChzdGFydFN0YXRlKTtcbiAgICBzdGFydFN0YXRlLmJpbmRUb0dyYXBoKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlZ2lzdGVyIGEgc3RhdGUgYXMgcGFydCBvZiB0aGlzIGdyYXBoXG4gICAqXG4gICAqIENhbGxlZCBieSBTdGF0ZS5iaW5kVG9HcmFwaCgpLlxuICAgKi9cbiAgcHVibGljIHJlZ2lzdGVyU3RhdGUoc3RhdGU6IFN0YXRlKSB7XG4gICAgdGhpcy5yZWdpc3RlckNvbnRhaW5lZFN0YXRlKHN0YXRlLnN0YXRlSWQsIHRoaXMpO1xuICAgIHRoaXMuYWxsU3RhdGVzLmFkZChzdGF0ZSk7XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgYSBQb2xpY3kgU3RhdGVtZW50IHVzZWQgYnkgc3RhdGVzIGluIHRoaXMgZ3JhcGhcbiAgICovXG4gIHB1YmxpYyByZWdpc3RlclBvbGljeVN0YXRlbWVudChzdGF0ZW1lbnQ6IGlhbS5Qb2xpY3lTdGF0ZW1lbnQpIHtcbiAgICBpZiAodGhpcy5zdXBlckdyYXBoKSB7XG4gICAgICB0aGlzLnN1cGVyR3JhcGgucmVnaXN0ZXJQb2xpY3lTdGF0ZW1lbnQoc3RhdGVtZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5wb2xpY3lTdGF0ZW1lbnRzLnB1c2goc3RhdGVtZW50KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVnaXN0ZXIgdGhpcyBncmFwaCBhcyBhIGNoaWxkIG9mIHRoZSBnaXZlbiBncmFwaFxuICAgKlxuICAgKiBSZXNvdXJjZSBjaGFuZ2VzIHdpbGwgYmUgYnViYmxlZCB1cCB0byB0aGUgZ2l2ZW4gZ3JhcGguXG4gICAqL1xuICBwdWJsaWMgcmVnaXN0ZXJTdXBlckdyYXBoKGdyYXBoOiBTdGF0ZUdyYXBoKSB7XG4gICAgaWYgKHRoaXMuc3VwZXJHcmFwaCA9PT0gZ3JhcGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHRoaXMuc3VwZXJHcmFwaCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIkV2ZXJ5IFN0YXRlR3JhcGggY2FuIG9ubHkgYmUgcmVnaXN0ZXJlZCBpbnRvIG9uZSBvdGhlciBTdGF0ZUdyYXBoXCIsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLnN1cGVyR3JhcGggPSBncmFwaDtcbiAgICB0aGlzLnB1c2hDb250YWluZWRTdGF0ZXNVcChncmFwaCk7XG4gICAgdGhpcy5wdXNoUG9saWN5U3RhdGVtZW50c1VwKGdyYXBoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gdGhlIEFtYXpvbiBTdGF0ZXMgTGFuZ3VhZ2UgSlNPTiBmb3IgdGhpcyBncmFwaFxuICAgKi9cbiAgcHVibGljIHRvR3JhcGhKc29uKCk6IG9iamVjdCB7XG4gICAgY29uc3Qgc3RhdGVzOiBhbnkgPSB7fTtcbiAgICBmb3IgKGNvbnN0IHN0YXRlIG9mIHRoaXMuYWxsU3RhdGVzKSB7XG4gICAgICBzdGF0ZXNbc3RhdGUuc3RhdGVJZF0gPSBzdGF0ZS50b1N0YXRlSnNvbigpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBTdGFydEF0OiB0aGlzLnN0YXJ0U3RhdGUuc3RhdGVJZCxcbiAgICAgIFN0YXRlczogc3RhdGVzLFxuICAgICAgVGltZW91dFNlY29uZHM6IHRoaXMudGltZW91dCAmJiB0aGlzLnRpbWVvdXQudG9TZWNvbmRzKCksXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm4gYSBzdHJpbmcgZGVzY3JpcHRpb24gb2YgdGhpcyBncmFwaFxuICAgKi9cbiAgcHVibGljIHRvU3RyaW5nKCkge1xuICAgIGNvbnN0IHNvbWVOb2RlcyA9IEFycmF5LmZyb20odGhpcy5hbGxTdGF0ZXMpXG4gICAgICAuc2xpY2UoMCwgMylcbiAgICAgIC5tYXAoKHgpID0+IHguc3RhdGVJZCk7XG4gICAgaWYgKHRoaXMuYWxsU3RhdGVzLnNpemUgPiAzKSB7XG4gICAgICBzb21lTm9kZXMucHVzaChcIi4uLlwiKTtcbiAgICB9XG4gICAgcmV0dXJuIGAke3RoaXMuZ3JhcGhEZXNjcmlwdGlvbn0gKCR7c29tZU5vZGVzLmpvaW4oXCIsIFwiKX0pYDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWdpc3RlciBhIHN0YXRlSWQgYW5kIGdyYXBoIHdoZXJlIGl0IHdhcyByZWdpc3RlcmVkXG4gICAqL1xuICBwcml2YXRlIHJlZ2lzdGVyQ29udGFpbmVkU3RhdGUoc3RhdGVJZDogc3RyaW5nLCBncmFwaDogU3RhdGVHcmFwaCkge1xuICAgIGlmICh0aGlzLnN1cGVyR3JhcGgpIHtcbiAgICAgIHRoaXMuc3VwZXJHcmFwaC5yZWdpc3RlckNvbnRhaW5lZFN0YXRlKHN0YXRlSWQsIGdyYXBoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZXhpc3RpbmdHcmFwaCA9IHRoaXMuYWxsQ29udGFpbmVkU3RhdGVzLmdldChzdGF0ZUlkKTtcbiAgICAgIGlmIChleGlzdGluZ0dyYXBoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgU3RhdGUgd2l0aCBuYW1lICcke3N0YXRlSWR9JyBvY2N1cnMgaW4gYm90aCAke2dyYXBofSBhbmQgJHtleGlzdGluZ0dyYXBofS4gQWxsIHN0YXRlcyBtdXN0IGhhdmUgdW5pcXVlIG5hbWVzLmAsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuYWxsQ29udGFpbmVkU3RhdGVzLnNldChzdGF0ZUlkLCBncmFwaCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFB1c2ggYWxsIGNvbnRhaW5lZCBzdGF0ZSBpbmZvIHVwIHRvIHRoZSBnaXZlbiBzdXBlciBncmFwaFxuICAgKi9cbiAgcHJpdmF0ZSBwdXNoQ29udGFpbmVkU3RhdGVzVXAoc3VwZXJHcmFwaDogU3RhdGVHcmFwaCkge1xuICAgIGZvciAoY29uc3QgW3N0YXRlSWQsIGdyYXBoXSBvZiB0aGlzLmFsbENvbnRhaW5lZFN0YXRlcykge1xuICAgICAgc3VwZXJHcmFwaC5yZWdpc3RlckNvbnRhaW5lZFN0YXRlKHN0YXRlSWQsIGdyYXBoKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUHVzaCBhbGwgcG9saWN5IHN0YXRlbWVudHMgdG8gaW50byB0aGUgZ2l2ZW4gc3VwZXIgZ3JhcGhcbiAgICovXG4gIHByaXZhdGUgcHVzaFBvbGljeVN0YXRlbWVudHNVcChzdXBlckdyYXBoOiBTdGF0ZUdyYXBoKSB7XG4gICAgZm9yIChjb25zdCBwb2xpY3lTdGF0ZW1lbnQgb2YgdGhpcy5wb2xpY3lTdGF0ZW1lbnRzKSB7XG4gICAgICBzdXBlckdyYXBoLnJlZ2lzdGVyUG9saWN5U3RhdGVtZW50KHBvbGljeVN0YXRlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEJpbmRzIHRoaXMgU3RhdGVHcmFwaCB0byB0aGUgU3RhdGVNYWNoaW5lIGl0IGRlZmluZXMgYW5kIHVwZGF0ZXMgc3RhdGUgbWFjaGluZSBwZXJtaXNzaW9uc1xuICAgKi9cbiAgcHVibGljIGJpbmQoc3RhdGVNYWNoaW5lOiBTdGF0ZU1hY2hpbmUpIHtcbiAgICBmb3IgKGNvbnN0IHN0YXRlIG9mIHRoaXMuYWxsU3RhdGVzKSB7XG4gICAgICBpZiAoRGlzdHJpYnV0ZWRNYXAuaXNEaXN0cmlidXRlZE1hcChzdGF0ZSkpIHtcbiAgICAgICAgc3RhdGVNYWNoaW5lLnJvbGUuYXR0YWNoSW5saW5lUG9saWN5KFxuICAgICAgICAgIG5ldyBpYW0uUG9saWN5KHN0YXRlTWFjaGluZSwgXCJEaXN0cmlidXRlZE1hcFBvbGljeVwiLCB7XG4gICAgICAgICAgICBkb2N1bWVudDogbmV3IGlhbS5Qb2xpY3lEb2N1bWVudChcbiAgICAgICAgICAgICAgc3RhdGVNYWNoaW5lLFxuICAgICAgICAgICAgICBcIkRpc3RyaWJ1dGVkTWFwUG9saWN5RG9jdW1lbnRcIixcbiAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHN0YXRlbWVudDogW1xuICAgICAgICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXCJzdGF0ZXM6U3RhcnRFeGVjdXRpb25cIl0sXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlczogW3N0YXRlTWFjaGluZS5zdGF0ZU1hY2hpbmVBcm5dLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICBuZXcgaWFtLlBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgICAgICBcInN0YXRlczpEZXNjcmliZUV4ZWN1dGlvblwiLFxuICAgICAgICAgICAgICAgICAgICAgIFwic3RhdGVzOlN0b3BFeGVjdXRpb25cIixcbiAgICAgICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbYCR7c3RhdGVNYWNoaW5lLnN0YXRlTWFjaGluZUFybn06KmBdLFxuICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICksXG4gICAgICAgICAgfSksXG4gICAgICAgICk7XG5cbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -52,5 +52,5 @@ class StateMachineFragment extends constructs_1.Construct {
|
|
|
52
52
|
}
|
|
53
53
|
exports.StateMachineFragment = StateMachineFragment;
|
|
54
54
|
_a = JSII_RTTI_SYMBOL_1;
|
|
55
|
-
StateMachineFragment[_a] = { fqn: "terraconstructs.aws.compute.StateMachineFragment", version: "0.0.
|
|
55
|
+
StateMachineFragment[_a] = { fqn: "terraconstructs.aws.compute.StateMachineFragment", version: "0.0.24" };
|
|
56
56
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGUtbWFjaGluZS1mcmFnbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hd3MvY29tcHV0ZS9zdGF0ZS1tYWNoaW5lLWZyYWdtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsb0hBQW9IO0FBQ3BILDJDQUF1QztBQUN2QyxtQ0FBZ0M7QUFDaEMsZ0RBQTREO0FBQzVELDBDQUF1QztBQUd2Qzs7R0FFRztBQUNILE1BQXNCLG9CQUNwQixTQUFRLHNCQUFTO0lBYWpCLElBQVcsRUFBRTtRQUNYLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSSxZQUFZLENBQUMsTUFBZTtRQUNqQyxhQUFLLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNuRCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0ksYUFBYSxDQUFDLFVBQThCLEVBQUU7UUFDbkQsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzNDLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxDQUFDLFlBQVksSUFBSSxHQUFHLE9BQU8sSUFBSSxDQUFDLENBQUM7UUFFMUQsT0FBTyxJQUFJLG1CQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLElBQWdCO1FBQzFCLE9BQU8sYUFBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdEMsQ0FBQzs7QUF0REgsb0RBdURDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvdjIuMTYwLjAvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLXN0ZXBmdW5jdGlvbnMvbGliL3N0YXRlLW1hY2hpbmUtZnJhZ21lbnQudHNcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDaGFpbiB9IGZyb20gXCIuL2NoYWluXCI7XG5pbXBvcnQgeyBQYXJhbGxlbCwgUGFyYWxsZWxQcm9wcyB9IGZyb20gXCIuL3N0YXRlcy9wYXJhbGxlbFwiO1xuaW1wb3J0IHsgU3RhdGUgfSBmcm9tIFwiLi9zdGF0ZXMvc3RhdGVcIjtcbmltcG9ydCB7IElDaGFpbmFibGUsIElOZXh0YWJsZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQmFzZSBjbGFzcyBmb3IgcmV1c2FibGUgc3RhdGUgbWFjaGluZSBmcmFnbWVudHNcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YXRlTWFjaGluZUZyYWdtZW50XG4gIGV4dGVuZHMgQ29uc3RydWN0XG4gIGltcGxlbWVudHMgSUNoYWluYWJsZVxue1xuICAvKipcbiAgICogVGhlIHN0YXJ0IHN0YXRlIG9mIHRoaXMgc3RhdGUgbWFjaGluZSBmcmFnbWVudFxuICAgKi9cbiAgcHVibGljIGFic3RyYWN0IHJlYWRvbmx5IHN0YXJ0U3RhdGU6IFN0YXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgc3RhdGVzIHRvIGNoYWluIG9udG8gaWYgdGhpcyBmcmFnbWVudCBpcyB1c2VkXG4gICAqL1xuICBwdWJsaWMgYWJzdHJhY3QgcmVhZG9ubHkgZW5kU3RhdGVzOiBJTmV4dGFibGVbXTtcblxuICBwdWJsaWMgZ2V0IGlkKCkge1xuICAgIHJldHVybiB0aGlzLm5vZGUuaWQ7XG4gIH1cblxuICAvKipcbiAgICogUHJlZml4IHRoZSBJRHMgb2YgYWxsIHN0YXRlcyBpbiB0aGlzIHN0YXRlIG1hY2hpbmUgZnJhZ21lbnRcbiAgICpcbiAgICogVXNlIHRoaXMgdG8gYXZvaWQgbXVsdGlwbGUgY29waWVzIG9mIHRoZSBzdGF0ZSBtYWNoaW5lIGFsbCBoYXZpbmcgdGhlXG4gICAqIHNhbWUgc3RhdGUgSURzLlxuICAgKlxuICAgKiBAcGFyYW0gcHJlZml4IFRoZSBwcmVmaXggdG8gYWRkLiBXaWxsIHVzZSBjb25zdHJ1Y3QgSUQgYnkgZGVmYXVsdC5cbiAgICovXG4gIHB1YmxpYyBwcmVmaXhTdGF0ZXMocHJlZml4Pzogc3RyaW5nKTogU3RhdGVNYWNoaW5lRnJhZ21lbnQge1xuICAgIFN0YXRlLnByZWZpeFN0YXRlcyh0aGlzLCBwcmVmaXggfHwgYCR7dGhpcy5pZH06IGApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIFdyYXAgYWxsIHN0YXRlcyBpbiB0aGlzIHN0YXRlIG1hY2hpbmUgZnJhZ21lbnQgdXAgaW50byBhIHNpbmdsZSBzdGF0ZS5cbiAgICpcbiAgICogVGhpcyBjYW4gYmUgdXNlZCB0byBhZGQgcmV0cnkgb3IgZXJyb3IgaGFuZGxpbmcgb250byB0aGlzIHN0YXRlXG4gICAqIG1hY2hpbmUgZnJhZ21lbnQuXG4gICAqXG4gICAqIEJlIGF3YXJlIHRoYXQgdGhpcyBjaGFuZ2VzIHRoZSByZXN1bHQgb2YgdGhlIGlubmVyIHN0YXRlIG1hY2hpbmVcbiAgICogdG8gYmUgYW4gYXJyYXkgd2l0aCB0aGUgcmVzdWx0IG9mIHRoZSBzdGF0ZSBtYWNoaW5lIGluIGl0LiBBZGp1c3RcbiAgICogeW91ciBwYXRocyBhY2NvcmRpbmdseS4gRm9yIGV4YW1wbGUsIGNoYW5nZSAnb3V0cHV0UGF0aCcgdG9cbiAgICogJyRbMF0nLlxuICAgKi9cbiAgcHVibGljIHRvU2luZ2xlU3RhdGUob3B0aW9uczogU2luZ2xlU3RhdGVPcHRpb25zID0ge30pOiBQYXJhbGxlbCB7XG4gICAgY29uc3Qgc3RhdGVJZCA9IG9wdGlvbnMuc3RhdGVJZCB8fCB0aGlzLmlkO1xuICAgIHRoaXMucHJlZml4U3RhdGVzKG9wdGlvbnMucHJlZml4U3RhdGVzIHx8IGAke3N0YXRlSWR9OiBgKTtcblxuICAgIHJldHVybiBuZXcgUGFyYWxsZWwodGhpcywgc3RhdGVJZCwgb3B0aW9ucykuYnJhbmNoKHRoaXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbnRpbnVlIG5vcm1hbCBleGVjdXRpb24gd2l0aCB0aGUgZ2l2ZW4gc3RhdGVcbiAgICovXG4gIHB1YmxpYyBuZXh0KG5leHQ6IElDaGFpbmFibGUpIHtcbiAgICByZXR1cm4gQ2hhaW4uc3RhcnQodGhpcykubmV4dChuZXh0KTtcbiAgfVxufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgc2luZ2xlIHN0YXRlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2luZ2xlU3RhdGVPcHRpb25zIGV4dGVuZHMgUGFyYWxsZWxQcm9wcyB7XG4gIC8qKlxuICAgKiBJRCBvZiBuZXdseSBjcmVhdGVkIGNvbnRhaW5pbmcgc3RhdGVcbiAgICpcbiAgICogQGRlZmF1bHQgQ29uc3RydWN0IElEIG9mIHRoZSBTdGF0ZU1hY2hpbmVGcmFnbWVudFxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdGVJZD86IHN0cmluZztcblxuICAvKipcbiAgICogU3RyaW5nIHRvIHByZWZpeCBhbGwgc3RhdGVJZHMgaW4gdGhlIHN0YXRlIG1hY2hpbmUgd2l0aFxuICAgKlxuICAgKiBAZGVmYXVsdCBzdGF0ZUlkXG4gICAqL1xuICByZWFkb25seSBwcmVmaXhTdGF0ZXM/OiBzdHJpbmc7XG59XG4iXX0=
|
|
@@ -303,7 +303,7 @@ class StateMachine extends StateMachineBase {
|
|
|
303
303
|
}
|
|
304
304
|
exports.StateMachine = StateMachine;
|
|
305
305
|
_a = JSII_RTTI_SYMBOL_1;
|
|
306
|
-
StateMachine[_a] = { fqn: "terraconstructs.aws.compute.StateMachine", version: "0.0.
|
|
306
|
+
StateMachine[_a] = { fqn: "terraconstructs.aws.compute.StateMachine", version: "0.0.24" };
|
|
307
307
|
class DefinitionBody {
|
|
308
308
|
static fromString(definition) {
|
|
309
309
|
return new StringDefinitionBody(definition);
|
|
@@ -314,7 +314,7 @@ class DefinitionBody {
|
|
|
314
314
|
}
|
|
315
315
|
exports.DefinitionBody = DefinitionBody;
|
|
316
316
|
_b = JSII_RTTI_SYMBOL_1;
|
|
317
|
-
DefinitionBody[_b] = { fqn: "terraconstructs.aws.compute.DefinitionBody", version: "0.0.
|
|
317
|
+
DefinitionBody[_b] = { fqn: "terraconstructs.aws.compute.DefinitionBody", version: "0.0.24" };
|
|
318
318
|
class StringDefinitionBody extends DefinitionBody {
|
|
319
319
|
constructor(body) {
|
|
320
320
|
super();
|
|
@@ -328,7 +328,7 @@ class StringDefinitionBody extends DefinitionBody {
|
|
|
328
328
|
}
|
|
329
329
|
exports.StringDefinitionBody = StringDefinitionBody;
|
|
330
330
|
_c = JSII_RTTI_SYMBOL_1;
|
|
331
|
-
StringDefinitionBody[_c] = { fqn: "terraconstructs.aws.compute.StringDefinitionBody", version: "0.0.
|
|
331
|
+
StringDefinitionBody[_c] = { fqn: "terraconstructs.aws.compute.StringDefinitionBody", version: "0.0.24" };
|
|
332
332
|
class ChainDefinitionBody extends DefinitionBody {
|
|
333
333
|
constructor(chainable) {
|
|
334
334
|
super();
|
|
@@ -346,7 +346,7 @@ class ChainDefinitionBody extends DefinitionBody {
|
|
|
346
346
|
}
|
|
347
347
|
exports.ChainDefinitionBody = ChainDefinitionBody;
|
|
348
348
|
_d = JSII_RTTI_SYMBOL_1;
|
|
349
|
-
ChainDefinitionBody[_d] = { fqn: "terraconstructs.aws.compute.ChainDefinitionBody", version: "0.0.
|
|
349
|
+
ChainDefinitionBody[_d] = { fqn: "terraconstructs.aws.compute.ChainDefinitionBody", version: "0.0.24" };
|
|
350
350
|
/**
|
|
351
351
|
* Two types of state machines are available in AWS Step Functions: EXPRESS AND STANDARD.
|
|
352
352
|
*
|
|
@@ -65,7 +65,7 @@ class Choice extends state_1.State {
|
|
|
65
65
|
}
|
|
66
66
|
exports.Choice = Choice;
|
|
67
67
|
_a = JSII_RTTI_SYMBOL_1;
|
|
68
|
-
Choice[_a] = { fqn: "terraconstructs.aws.compute.Choice", version: "0.0.
|
|
68
|
+
Choice[_a] = { fqn: "terraconstructs.aws.compute.Choice", version: "0.0.24" };
|
|
69
69
|
/**
|
|
70
70
|
* Adapter to make the .otherwise() transition settable through .next()
|
|
71
71
|
*/
|
|
@@ -110,5 +110,5 @@ class CustomState extends state_1.State {
|
|
|
110
110
|
}
|
|
111
111
|
exports.CustomState = CustomState;
|
|
112
112
|
_a = JSII_RTTI_SYMBOL_1;
|
|
113
|
-
CustomState[_a] = { fqn: "terraconstructs.aws.compute.CustomState", version: "0.0.
|
|
113
|
+
CustomState[_a] = { fqn: "terraconstructs.aws.compute.CustomState", version: "0.0.24" };
|
|
114
114
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3VzdG9tLXN0YXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL3N0YXRlcy9jdXN0b20tc3RhdGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxpSEFBaUg7QUFFakgsaUNBQW9DO0FBRXBDLDBCQUEyQjtBQUMzQixtQ0FBZ0M7QUFlaEM7OztHQUdHO0FBQ0gsTUFBYSxXQUFZLFNBQVEsYUFBSztJQVFwQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQy9ELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRXJCLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUM7SUFDbkMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0ksUUFBUSxDQUFDLFFBQW9CLEVBQUU7UUFDcEMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNJLFFBQVEsQ0FBQyxPQUFtQixFQUFFLFFBQW9CLEVBQUU7UUFDekQsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzNDLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUVEOztPQUVHO0lBQ0ksSUFBSSxDQUFDLElBQWdCO1FBQzFCLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ2hDLE9BQU8sU0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixNQUFNLEtBQUssR0FBRztZQUNaLEdBQUcsSUFBSSxDQUFDLGFBQWEs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LENBQUMsQ0FBQyxVQUFVLENBQzdCO1lBQ0UsdUhBQXVIO1lBQ3ZILG9HQUFvRztZQUNwRywwRkFBMEY7U0FDM0YsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQ2IsQ0FBQztJQUNKLENBQUM7O0FBNUhILGtDQTZIQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE2MC4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1zdGVwZnVuY3Rpb25zL2xpYi9zdGF0ZXMvY3VzdG9tLXN0YXRlLnRzXG5cbmltcG9ydCB7IEFubm90YXRpb25zIH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2hhaW4gfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IFN0YXRlIH0gZnJvbSBcIi4vc3RhdGVcIjtcbmltcG9ydCB7IENhdGNoUHJvcHMsIElDaGFpbmFibGUsIElOZXh0YWJsZSwgUmV0cnlQcm9wcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGRlZmluaW5nIGEgY3VzdG9tIHN0YXRlIGRlZmluaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDdXN0b21TdGF0ZVByb3BzIHtcbiAgLyoqXG4gICAqIEFtYXpvbiBTdGF0ZXMgTGFuZ3VhZ2UgKEpTT04tYmFzZWQpIGRlZmluaXRpb24gb2YgdGhlIHN0YXRlXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL3N0ZXAtZnVuY3Rpb25zL2xhdGVzdC9kZy9jb25jZXB0cy1hbWF6b24tc3RhdGVzLWxhbmd1YWdlLmh0bWxcbiAgICovXG4gIHJlYWRvbmx5IHN0YXRlSnNvbjogeyBba2V5OiBzdHJpbmddOiBhbnkgfTtcbn1cblxuLyoqXG4gKiBTdGF0ZSBkZWZpbmVkIGJ5IHN1cHBseWluZyBBbWF6b24gU3RhdGVzIExhbmd1YWdlIChBU0wpIGluIHRoZSBzdGF0ZSBtYWNoaW5lLlxuICpcbiAqL1xuZXhwb3J0IGNsYXNzIEN1c3RvbVN0YXRlIGV4dGVuZHMgU3RhdGUgaW1wbGVtZW50cyBJQ2hhaW5hYmxlLCBJTmV4dGFibGUge1xuICBwdWJsaWMgcmVhZG9ubHkgZW5kU3RhdGVzOiBJTmV4dGFibGVbXTtcblxuICAvKipcbiAgICogQW1hem9uIFN0YXRlcyBMYW5ndWFnZSAoSlNPTi1iYXNlZCkgZGVmaW5pdGlvbiBvZiB0aGUgc3RhdGVcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgc3RhdGVKc29uOiB7IFtrZXk6IHN0cmluZ106IGFueSB9O1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBDdXN0b21TdGF0ZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7fSk7XG5cbiAgICB0aGlzLmVuZFN0YXRlcyA9IFt0aGlzXTtcbiAgICB0aGlzLnN0YXRlSnNvbiA9IHByb3BzLnN0YXRlSnNvbjtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgdGhpcyBzdGF0ZVxuICAgKlxuICAgKiBUaGlzIGNvbnRyb2xzIGlmIGFuZCBob3cgdGhlIGV4ZWN1dGlvbiB3aWxsIGJlIHJldHJpZWQgaWYgYSBwYXJ0aWN1bGFyXG4gICAqIGVycm9yIG9jY3Vycy5cbiAgICovXG4gIHB1YmxpYyBhZGRSZXRyeShwcm9wczogUmV0cnlQcm9wcyA9IHt9KTogQ3VzdG9tU3RhdGUge1xuICAgIHN1cGVyLl9hZGRSZXRyeShwcm9wcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGEgcmVjb3ZlcnkgaGFuZGxlciBmb3IgdGhpcyBzdGF0ZVxuICAgKlxuICAgKiBXaGVuIGEgcGFydGljdWxhciBlcnJvciBvY2N1cnMsIGV4ZWN1dGlvbiB3aWxsIGNvbnRpbnVlIGF0IHRoZSBlcnJvclxuICAgKiBoYW5kbGVyIGluc3RlYWQgb2YgZmFpbGluZyB0aGUgc3RhdGUgbWFjaGluZSBleGVjdXRpb24uXG4gICAqL1xuICBwdWJsaWMgYWRkQ2F0Y2goaGFuZGxlcjogSUNoYWluYWJsZSwgcHJvcHM6IENhdGNoUHJvcHMgPSB7fSk6IEN1c3RvbVN0YXRlIHtcbiAgICBzdXBlci5fYWRkQ2F0Y2goaGFuZGxlci5zdGFydFN0YXRlLCBwcm9wcyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvKipcbiAgICogQ29udGludWUgbm9ybWFsIGV4ZWN1dGlvbiB3aXRoIHRoZSBnaXZlbiBzdGF0ZVxuICAgKi9cbiAgcHVibGljIG5leHQobmV4dDogSUNoYWluYWJsZSk6IENoYWluIHtcbiAgICBzdXBlci5tYWtlTmV4dChuZXh0LnN0YXJ0U3RhdGUpO1xuICAgIHJldHVybiBDaGFpbi5zZXF1ZW5jZSh0aGlzLCBuZXh0KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBBbWF6b24gU3RhdGVzIExhbmd1YWdlIG9iamVjdCBmb3IgdGhpcyBzdGF0ZVxuICAgKi9cbiAgcHVibGljIHRvU3RhdGVKc29uKCk6IG9iamVjdCB7XG4gICAgY29uc3Qgc3RhdGUgPSB7XG4gICAgICAuLi50aGlzLnJlbmRlck5leHRFbmQoKSxcbiAgICAgIC4uLnRoaXMuc3RhdGVKc29uLFxuICAgICAgLi4udGhpcy5yZW5kZXJSZXRyeUNhdGNoKCksXG4gICAgfTtcblxuICAgIGlmICh0aGlzLmhhc011bHRpcGxlUmV0cnlTb3VyY2VzKHN0YXRlKSkge1xuICAgICAgdGhpcy5hZGRNdWx0aXBsZVJldHJ5U291cmNlc1dhcm5pbmcoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5oYXNNdWx0aXBsZUNhdGNoU291cmNlcyhzdGF0ZSkpIHtcbiAgICAgIHRoaXMuYWRkTXVsdGlwbGVDYXRjaFNvdXJjZXNXYXJuaW5nKCk7XG4gICAgfVxuXG4gICAgLy8gUmV0cmllcnMgYW5kIENhdGNoZXJzIGNhbiBiZSBzcGVjaWZpZWQgZGlyZWN0bHkgaW4gdGhlIHN0YXRlSnNvbiBvciBpbmRpcmVjdGx5IHRvIHRoZSBjb25zdHJ1Y3Qgd2l0aCBhZGRSZXRyeSgpIGFuZCBhZGRDYXRjaCgpLlxuICAgIC8vIHJlbmRlclJldHJ5Q2F0Y2goKSBvbmx5IHJlbmRlcnMgdGhlIGluZGlyZWN0bHkgc3VwcGxpZWQgUmV0cmllcnMgYW5kIENhdGNoZXJzLCBzbyB3ZSBuZWVkIHRvIG1hbnVhbGx5IG1lcmdlIGluIHRob3NlIGRpcmVjdGx5IGluIHRoZSBzdGF0ZUpzb25cbiAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnN0YXRlSnNvbi5SZXRyeSkpIHtcbiAgICAgIHN0YXRlLlJldHJ5ID0gQXJyYXkuaXNBcnJheShzdGF0ZS5SZXRyeSlcbiAgICAgICAgPyBbLi4uc3RhdGUuUmV0cnksIC4uLnRoaXMuc3RhdGVKc29uLlJldHJ5XVxuICAgICAgICA6IFsuLi50aGlzLnN0YXRlSnNvbi5SZXRyeV07XG4gICAgfVxuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkodGhpcy5zdGF0ZUpzb24uQ2F0Y2gpKSB7XG4gICAgICBzdGF0ZS5DYXRjaCA9IEFycmF5LmlzQXJyYXkoc3RhdGUuQ2F0Y2gpXG4gICAgICAgID8gWy4uLnN0YXRlLkNhdGNoLCAuLi50aGlzLnN0YXRlSnNvbi5DYXRjaF1cbiAgICAgICAgOiBbLi4udGhpcy5zdGF0ZUpzb24uQ2F0Y2hdO1xuICAgIH1cblxuICAgIHJldHVybiBzdGF0ZTtcbiAgfVxuXG4gIHByaXZhdGUgaGFzTXVsdGlwbGVSZXRyeVNvdXJjZXMoc3RhdGU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShzdGF0ZS5SZXRyeSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5zdGF0ZUpzb24uUmV0cnkpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlLlJldHJ5Lmxlbmd0aCA+IDAgJiYgdGhpcy5zdGF0ZUpzb24uUmV0cnkubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgaGFzTXVsdGlwbGVDYXRjaFNvdXJjZXMoc3RhdGU6IGFueSk6IGJvb2xlYW4ge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShzdGF0ZS5DYXRjaCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5zdGF0ZUpzb24uQ2F0Y2gpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHN0YXRlLkNhdGNoLmxlbmd0aCA+IDAgJiYgdGhpcy5zdGF0ZUpzb24uQ2F0Y2gubGVuZ3RoID4gMDtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTXVsdGlwbGVSZXRyeVNvdXJjZXNXYXJuaW5nKCk6IHZvaWQge1xuICAgIC8vIFwiQGF3cy1jZGsvYXdzLXN0ZXBmdW5jdGlvbnM6bXVsdGlwbGVSZXRyeVNvdXJjZXNcIiwgLy8gVE9ETzogQ0RLVEYgZG9lcyBub3Qgc3VwcG9ydCBhY2tub3dsZWRnZWFibGUgd2FybmluZ3NcbiAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKFxuICAgICAgW1xuICAgICAgICBcIkN1c3RvbVN0YXRlIGNvbnN0cnVjdHMgY2FuIGNvbmZpZ3VyZSBzdGF0ZSByZXRyaWVzIHVzaW5nIHRoZSBzdGF0ZUpzb24gcHJvcGVydHkgb3IgYnkgdXNpbmcgdGhlIGFkZFJldHJ5KCkgZnVuY3Rpb24uXCIsXG4gICAgICAgIFwiV2hlbiByZXRyaWVzIGFyZSBjb25maWd1cmVkIHVzaW5nIGJvdGggb2YgdGhlc2UsIHRoZSBzdGF0ZSBkZWZpbml0aW9uJ3MgUmV0cnkgZmllbGQgaXMgZ2VuZXJhdGVkIFwiLFxuICAgICAgICBcImJ5IGZpcnN0IHJlbmRlcmluZyByZXRyaWVzIGZyb20gYWRkUmV0cnkoKSwgdGhlbiByZW5kZXJpbmcgcmV0cmllcyBmcm9tIHRoZSBzdGF0ZUpzb24uXCIsXG4gICAgICBdLmpvaW4oXCJcXG5cIiksXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkTXVsdGlwbGVDYXRjaFNvdXJjZXNXYXJuaW5nKCk6IHZvaWQge1xuICAgIC8vIFwiQGF3cy1jZGsvYXdzLXN0ZXBmdW5jdGlvbnM6bXVsdGlwbGVDYXRjaFNvdXJjZXNcIiwgLy8gVE9ETzogQ0RLVEYgZG9lcyBub3Qgc3VwcG9ydCBhY2tub3dsZWRnZWFibGUgd2FybmluZ3NcbiAgICBBbm5vdGF0aW9ucy5vZih0aGlzKS5hZGRXYXJuaW5nKFxuICAgICAgW1xuICAgICAgICBcIkN1c3RvbVN0YXRlIGNvbnN0cnVjdHMgY2FuIGNvbmZpZ3VyZSBzdGF0ZSBjYXRjaGVycyB1c2luZyB0aGUgc3RhdGVKc29uIHByb3BlcnR5IG9yIGJ5IHVzaW5nIHRoZSBhZGRDYXRjaCgpIGZ1bmN0aW9uLlwiLFxuICAgICAgICBcIldoZW4gY2F0Y2hlcnMgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgYm90aCBvZiB0aGVzZSwgdGhlIHN0YXRlIGRlZmluaXRpb24ncyBDYXRjaCBmaWVsZCBpcyBnZW5lcmF0ZWQgXCIsXG4gICAgICAgIFwiYnkgZmlyc3QgcmVuZGVyaW5nIGNhdGNoZXJzIGZyb20gYWRkQ2F0Y2goKSwgdGhlbiByZW5kZXJpbmcgY2F0Y2hlcnMgZnJvbSB0aGUgc3RhdGVKc29uLlwiLFxuICAgICAgXS5qb2luKFwiXFxuXCIpLFxuICAgICk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -54,5 +54,5 @@ class ItemBatcher {
|
|
|
54
54
|
}
|
|
55
55
|
exports.ItemBatcher = ItemBatcher;
|
|
56
56
|
_a = JSII_RTTI_SYMBOL_1;
|
|
57
|
-
ItemBatcher[_a] = { fqn: "terraconstructs.aws.compute.ItemBatcher", version: "0.0.
|
|
57
|
+
ItemBatcher[_a] = { fqn: "terraconstructs.aws.compute.ItemBatcher", version: "0.0.24" };
|
|
58
58
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXRlbS1iYXRjaGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2F3cy9jb21wdXRlL3N0YXRlcy9kaXN0cmlidXRlZC1tYXAvaXRlbS1iYXRjaGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBd0RBOztHQUVHO0FBQ0gsTUFBYSxXQUFXO0lBR3RCLFlBQVksS0FBdUI7UUFDakMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksTUFBTTtRQUNYLE9BQU87WUFDTCxHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSTtnQkFDakMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0I7YUFDOUMsQ0FBQztZQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixJQUFJO2dCQUNyQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQjthQUN0RCxDQUFDO1lBQ0YsR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCLElBQUk7Z0JBQ3RDLHFCQUFxQixFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCO2FBQ3hELENBQUM7WUFDRixHQUFHLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsSUFBSTtnQkFDMUMseUJBQXlCLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyx5QkFBeUI7YUFDaEUsQ0FBQztZQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsSUFBSSxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRSxDQUFDO1NBQ3BFLENBQUM7SUFDSixDQUFDO0lBRUQ7O09BRUc7SUFDSSxtQkFBbUI7UUFDeEIsTUFBTSxNQUFNLEdBQWEsRUFBRSxDQUFDO1FBQzVCLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDbkUsTUFBTSxDQUFDLElBQUksQ0FDVCwyRUFBMkUsQ0FDNUUsQ0FBQztRQUNKLENBQUM7UUFFRCxJQUNFLElBQUksQ0FBQyxLQUFLLENBQUMscUJBQXFCO1lBQ2hDLElBQUksQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQ3BDLENBQUM7WUFDRCxNQUFNLENBQUMsSUFBSSxDQUNULHFGQUFxRixDQUN0RixDQUFDO1FBQ0osQ0FBQztRQUVELElBQ0UsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQjtZQUM1QixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CO1lBQ2hDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxxQkFBcUI7WUFDakMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QjtZQUNyQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUN0QixDQUFDO1lBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQywrQ0FBK0MsQ0FBQyxDQUFDO1FBQy9ELENBQUM7UUFFRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDOztBQTNESCxrQ0E0REMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNjAuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3Mtc3RlcGZ1bmN0aW9ucy9saWIvc3RhdGVzL2l0ZW0tYmF0Y2hlci50c1xuXG4vKipcbiAqIEludGVyZmFjZSBmb3IgSXRlbUJhdGNoZXIgY29uZmlndXJhdGlvbiBwcm9wZXJ0aWVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSXRlbUJhdGNoZXJQcm9wcyB7XG4gIC8qKlxuICAgKiBNYXhJdGVtc1BlckJhdGNoXG4gICAqXG4gICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdGhhdCBlYWNoIGNoaWxkIHdvcmtmbG93IGV4ZWN1dGlvbiBwcm9jZXNzZXMsIGFzIHN0YXRpYyBudW1iZXJcbiAgICpcbiAgICogQGRlZmF1bHQgLSB1c2VzIHZhbHVlIG9mIGBtYXhJdGVtc1BlckJhdGNoUGF0aGAgYXMgdGhlIG1heCBpdGVtcyBwZXIgYmF0Y2gsXG4gICAqICAgbm8gbGltaXRzIG9uIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBiYXRjaCB1bmRlciB0aGUgMjU2S0IgbGltaXQgaWYgdGhhdCBwcm9wZXJ0eSB3YXMgYWxzbyBub3QgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IG1heEl0ZW1zUGVyQmF0Y2g/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIE1heEl0ZW1zUGVyQmF0Y2hQYXRoXG4gICAqXG4gICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMgdGhhdCBlYWNoIGNoaWxkIHdvcmtmbG93IGV4ZWN1dGlvbiBwcm9jZXNzZXMsIGFzIEpzb25QYXRoXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlcyB2YWx1ZSBvZiBgbWF4SXRlbXNQZXJCYXRjaGAgYXMgdGhlIG1heCBpdGVtcyBwZXIgYmF0Y2gsXG4gICAqICAgbm8gbGltaXRzIG9uIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBiYXRjaCB1bmRlciB0aGUgMjU2S0IgbGltaXQgaWYgdGhhdCBwcm9wZXJ0eSB3YXMgYWxzbyBub3QgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IG1heEl0ZW1zUGVyQmF0Y2hQYXRoPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBNYXhJbnB1dEJ5dGVzUGVyQmF0Y2hcbiAgICpcbiAgICogU3BlY2lmaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBieXRlcyB0aGF0IGVhY2ggY2hpbGQgd29ya2Zsb3cgZXhlY3V0aW9uIHByb2Nlc3NlcywgYXMgc3RhdGljIG51bWJlclxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZXMgdmFsdWUgb2YgYG1heElucHV0Qnl0ZXNQZXJCYXRjaFBhdGhgIGFzIHRoZSBtYXggc2l6ZSBwZXIgYmF0Y2gsXG4gICAqICAgbm8gbGltaXRzIG9uIHRoZSBiYXRjaCBzaXplIHVuZGVyIHRoZSAyNTZLQiBsaW1pdCBpZiB0aGF0IHByb3BlcnR5IHdhcyBhbHNvIG5vdCBwcm92aWRlZFxuICAgKi9cbiAgcmVhZG9ubHkgbWF4SW5wdXRCeXRlc1BlckJhdGNoPzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBNYXhJbnB1dEJ5dGVzUGVyQmF0Y2hQYXRoXG4gICAqXG4gICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBlYWNoIGNoaWxkIHdvcmtmbG93IGV4ZWN1dGlvbiBwcm9jZXNzZXMsIGFzIEpzb25QYXRoXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdXNlcyB2YWx1ZSBvZiBgbWF4SW5wdXRCeXRlc1BlckJhdGNoYCBhcyB0aGUgbWF4IHNpemUgcGVyIGJhdGNoLFxuICAgKiAgIG5vIGxpbWl0cyBvbiB0aGUgYmF0Y2ggc2l6ZSB1bmRlciB0aGUgMjU2S0IgbGltaXQgaWYgdGhhdCBwcm9wZXJ0eSB3YXMgYWxzbyBub3QgcHJvdmlkZWRcbiAgICovXG4gIHJlYWRvbmx5IG1heElucHV0Qnl0ZXNQZXJCYXRjaFBhdGg/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEJhdGNoSW5wdXRcbiAgICpcbiAgICogRml4ZWQgSlNPTiBpbnB1dCB0byBpbmNsdWRlIGluIGVhY2ggYmF0Y2ggcGFzc2VkIHRvIGVhY2ggY2hpbGQgd29ya2Zsb3cgZXhlY3V0aW9uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gYmF0Y2hJbnB1dFxuICAgKi9cbiAgcmVhZG9ubHkgYmF0Y2hJbnB1dD86IG9iamVjdDtcbn1cblxuLyoqXG4gKiBDb25maWd1cmF0aW9uIGZvciBwcm9jZXNzaW5nIGEgZ3JvdXAgb2YgaXRlbXMgaW4gYSBzaW5nbGUgY2hpbGQgd29ya2Zsb3cgZXhlY3V0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBJdGVtQmF0Y2hlciB7XG4gIHByaXZhdGUgcHJvcHM6IEl0ZW1CYXRjaGVyUHJvcHM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IEl0ZW1CYXRjaGVyUHJvcHMpIHtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIH1cblxuICAvKipcbiAgICogUmVuZGVyIEl0ZW1CYXRjaGVyIGluIEFTTCBKU09OIGZvcm1hdFxuICAgKi9cbiAgcHVibGljIHJlbmRlcigpOiBhbnkge1xuICAgIHJldHVybiB7XG4gICAgICAuLi4odGhpcy5wcm9wcy5tYXhJdGVtc1BlckJhdGNoICYmIHtcbiAgICAgICAgTWF4SXRlbXNQZXJCYXRjaDogdGhpcy5wcm9wcy5tYXhJdGVtc1BlckJhdGNoLFxuICAgICAgfSksXG4gICAgICAuLi4odGhpcy5wcm9wcy5tYXhJdGVtc1BlckJhdGNoUGF0aCAmJiB7XG4gICAgICAgIE1heEl0ZW1zUGVyQmF0Y2hQYXRoOiB0aGlzLnByb3BzLm1heEl0ZW1zUGVyQmF0Y2hQYXRoLFxuICAgICAgfSksXG4gICAgICAuLi4odGhpcy5wcm9wcy5tYXhJbnB1dEJ5dGVzUGVyQmF0Y2ggJiYge1xuICAgICAgICBNYXhJbnB1dEJ5dGVzUGVyQmF0Y2g6IHRoaXMucHJvcHMubWF4SW5wdXRCeXRlc1BlckJhdGNoLFxuICAgICAgfSksXG4gICAgICAuLi4odGhpcy5wcm9wcy5tYXhJbnB1dEJ5dGVzUGVyQmF0Y2hQYXRoICYmIHtcbiAgICAgICAgTWF4SW5wdXRCeXRlc1BlckJhdGNoUGF0aDogdGhpcy5wcm9wcy5tYXhJbnB1dEJ5dGVzUGVyQmF0Y2hQYXRoLFxuICAgICAgfSksXG4gICAgICAuLi4odGhpcy5wcm9wcy5iYXRjaElucHV0ICYmIHsgQmF0Y2hJbnB1dDogdGhpcy5wcm9wcy5iYXRjaElucHV0IH0pLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogVmFsaWRhdGUgdGhpcyBJdGVtQmF0Y2hlclxuICAgKi9cbiAgcHVibGljIHZhbGlkYXRlSXRlbUJhdGNoZXIoKTogc3RyaW5nW10ge1xuICAgIGNvbnN0IGVycm9yczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAodGhpcy5wcm9wcy5tYXhJdGVtc1BlckJhdGNoICYmIHRoaXMucHJvcHMubWF4SXRlbXNQZXJCYXRjaFBhdGgpIHtcbiAgICAgIGVycm9ycy5wdXNoKFxuICAgICAgICBcIlByb3ZpZGUgZWl0aGVyIGBtYXhJdGVtc1BlckJhdGNoYCBvciBgbWF4SXRlbXNQZXJCYXRjaFBhdGhgLCBidXQgbm90IGJvdGhcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgdGhpcy5wcm9wcy5tYXhJbnB1dEJ5dGVzUGVyQmF0Y2ggJiZcbiAgICAgIHRoaXMucHJvcHMubWF4SW5wdXRCeXRlc1BlckJhdGNoUGF0aFxuICAgICkge1xuICAgICAgZXJyb3JzLnB1c2goXG4gICAgICAgIFwiUHJvdmlkZSBlaXRoZXIgYG1heElucHV0Qnl0ZXNQZXJCYXRjaGAgb3IgYG1heElucHV0Qnl0ZXNQZXJCYXRjaFBhdGhgLCBidXQgbm90IGJvdGhcIixcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKFxuICAgICAgIXRoaXMucHJvcHMubWF4SXRlbXNQZXJCYXRjaCAmJlxuICAgICAgIXRoaXMucHJvcHMubWF4SXRlbXNQZXJCYXRjaFBhdGggJiZcbiAgICAgICF0aGlzLnByb3BzLm1heElucHV0Qnl0ZXNQZXJCYXRjaCAmJlxuICAgICAgIXRoaXMucHJvcHMubWF4SW5wdXRCeXRlc1BlckJhdGNoUGF0aCAmJlxuICAgICAgIXRoaXMucHJvcHMuYmF0Y2hJbnB1dFxuICAgICkge1xuICAgICAgZXJyb3JzLnB1c2goXCJQcm92aWRlIGF0IGxlYXN0IG9uZSB2YWx1ZSB0byB0aGUgSXRlbUJhdGNoZXJcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVycm9ycztcbiAgfVxufVxuIl19
|