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
|
@@ -205,7 +205,6 @@ class Distribution extends aws_construct_1.AwsConstructBase {
|
|
|
205
205
|
}
|
|
206
206
|
locations.forEach((location) => {
|
|
207
207
|
if (!LOCATION_REGEX.test(location)) {
|
|
208
|
-
// eslint-disable-next-line max-len
|
|
209
208
|
throw new Error(`Invalid location format for location: ${location}, location should be two-letter and uppercase country ISO 3166-1-alpha-2 code`);
|
|
210
209
|
}
|
|
211
210
|
});
|
|
@@ -243,7 +242,7 @@ class Distribution extends aws_construct_1.AwsConstructBase {
|
|
|
243
242
|
}
|
|
244
243
|
exports.Distribution = Distribution;
|
|
245
244
|
_a = JSII_RTTI_SYMBOL_1;
|
|
246
|
-
Distribution[_a] = { fqn: "terraconstructs.aws.edge.Distribution", version: "0.0.
|
|
245
|
+
Distribution[_a] = { fqn: "terraconstructs.aws.edge.Distribution", version: "0.0.24" };
|
|
247
246
|
var GeoRestrictionType;
|
|
248
247
|
(function (GeoRestrictionType) {
|
|
249
248
|
GeoRestrictionType["NONE"] = "none";
|
|
@@ -321,7 +320,7 @@ class AllowedMethods {
|
|
|
321
320
|
}
|
|
322
321
|
exports.AllowedMethods = AllowedMethods;
|
|
323
322
|
_b = JSII_RTTI_SYMBOL_1;
|
|
324
|
-
AllowedMethods[_b] = { fqn: "terraconstructs.aws.edge.AllowedMethods", version: "0.0.
|
|
323
|
+
AllowedMethods[_b] = { fqn: "terraconstructs.aws.edge.AllowedMethods", version: "0.0.24" };
|
|
325
324
|
/** HEAD and GET */
|
|
326
325
|
AllowedMethods.ALLOW_GET_HEAD = new AllowedMethods(["GET", "HEAD"]);
|
|
327
326
|
/** HEAD, GET, and OPTIONS */
|
|
@@ -350,7 +349,7 @@ class CachedMethods {
|
|
|
350
349
|
}
|
|
351
350
|
exports.CachedMethods = CachedMethods;
|
|
352
351
|
_c = JSII_RTTI_SYMBOL_1;
|
|
353
|
-
CachedMethods[_c] = { fqn: "terraconstructs.aws.edge.CachedMethods", version: "0.0.
|
|
352
|
+
CachedMethods[_c] = { fqn: "terraconstructs.aws.edge.CachedMethods", version: "0.0.24" };
|
|
354
353
|
/** HEAD and GET */
|
|
355
354
|
CachedMethods.CACHE_GET_HEAD = new CachedMethods(["GET", "HEAD"]);
|
|
356
355
|
/** HEAD, GET, and OPTIONS */
|
|
@@ -431,4 +430,4 @@ var ManagedOriginRequestPolicy;
|
|
|
431
430
|
/** This policy includes all values (query strings, and cookies) except the header in the viewer request. */
|
|
432
431
|
ManagedOriginRequestPolicy["ALL_VIEWER_EXCEPT_HOST_HEADER"] = "Managed-AllViewerExceptHostHeader";
|
|
433
432
|
})(ManagedOriginRequestPolicy || (exports.ManagedOriginRequestPolicy = ManagedOriginRequestPolicy = {}));
|
|
434
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lZGdlL2Rpc3RyaWJ1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHVJQUF1STtBQUN2SSxzREFLNkI7QUFDN0IsaUNBQWlEO0FBSWpELGdDQUFtQztBQUNuQyxvREFJMEI7QUFDMUIsNENBQXdDO0FBME14Qzs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLGdDQUFnQjtJQUtoRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBVUQsWUFBWSxLQUFnQixFQUFFLElBQVksRUFBRSxLQUF3QjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQVJYLGFBQVEsR0FBRyxJQUFJLEtBQUssRUFBZSxDQUFDO1FBRXBDLHdCQUFtQixHQUFvQixFQUFFLENBQUM7UUFRekQsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxpQkFBaUIsR0FBRyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQzlELEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUNoQyxlQUFTLENBQUMsbUJBQW1CLENBQzlCLENBQUMsTUFBTSxDQUFDO1lBQ1QsSUFDRSxDQUFDLGFBQUssQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3RDLGlCQUFpQixLQUFLLFdBQVcsRUFDakMsQ0FBQztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUNiLG9HQUFvRyxpQkFBaUIsR0FBRyxDQUN6SCxDQUFDO1lBQ0osQ0FB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QyxvQ0FBb0M7SUFDcEMsK0NBQXVCLENBQUE7QUFDekIsQ0FBQyxFQVBXLG9CQUFvQixvQ0FBcEIsb0JBQW9CLFFBTy9CO0FBRUQ7Ozs7OztHQU1HO0FBQ0gsSUFBWSxrQkE0Qlg7QUE1QkQsV0FBWSxrQkFBa0I7SUFDNUI7O09BRUc7SUFDSCxpREFBMkIsQ0FBQTtJQUMzQjs7O09BR0c7SUFDSCxvRUFBOEMsQ0FBQTtJQUM5Qzs7OztPQUlHO0lBQ0gsbUhBQTZGLENBQUE7SUFDN0YsMkdBQTJHO0lBQzNHLGtFQUE0QyxDQUFBO0lBQzVDLHNGQUFzRjtJQUN0RixnRkFBMEQsQ0FBQTtJQUMxRDs7T0FFRztJQUNILCtGQUF5RSxDQUFBO0lBQ3pFOztPQUVHO0lBQ0gsMEhBQW9HLENBQUE7QUFDdEcsQ0FBQyxFQTVCVyxrQkFBa0Isa0NBQWxCLGtCQUFrQixRQTRCN0I7QUFFRDs7Ozs7R0FLRztBQUNILElBQVksMEJBZVg7QUFmRCxXQUFZLDBCQUEwQjtJQUNwQyxxSEFBcUg7SUFDckgsNEZBQThELENBQUE7SUFDOUQscUlBQXFJO0lBQ3JJLDhFQUFnRCxDQUFBO0lBQ2hELHlJQUF5STtJQUN6SSxzRUFBd0MsQ0FBQTtJQUN4QyxtR0FBbUc7SUFDbkcsOERBQWdDLENBQUE7SUFDaEMsb0dBQW9HO0lBQ3BHLDRHQUE4RSxDQUFBO0lBQzlFLG1PQUFtTztJQUNuTyw4R0FBZ0YsQ0FBQTtJQUNoRiw0R0FBNEc7SUFDNUcsaUdBQW1FLENBQUE7QUFDckUsQ0FBQyxFQWZXLDBCQUEwQiwwQ0FBMUIsMEJBQTBCLFFBZXJDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtY2RrL2Jsb2IvNjRhMGUyY2Y1YmIwN2Y2ZGViZmM0YjE2OWJiM2UxODUyY2U2NjhhYS9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC9saWIvZGlzdHJpYnV0aW9uLnRzXG5pbXBvcnQge1xuICBjbG91ZGZyb250RGlzdHJpYnV0aW9uLFxuICBkYXRhQXdzQ2xvdWRmcm9udENhY2hlUG9saWN5LFxuICBkYXRhQXdzQ2xvdWRmcm9udE9yaWdpblJlcXVlc3RQb2xpY3ksXG4gIGRhdGFBd3NDbG91ZGZyb250UmVzcG9uc2VIZWFkZXJzUG9saWN5LFxufSBmcm9tIFwiQGNka3RmL3Byb3ZpZGVyLWF3c1wiO1xuaW1wb3J0IHsgSVJlc29sdmFibGUsIFRva2VuLCBMYXp5IH0gZnJvbSBcImNka3RmXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgSUNlcnRpZmljYXRlLCBJT3JpZ2luLCBGdW5jdGlvbkFzc29jaWF0aW9uIH0gZnJvbSBcIi5cIjtcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSBcIi4uLy4uL2R1cmF0aW9uXCI7XG5pbXBvcnQgeyBBcm5Gb3JtYXQgfSBmcm9tIFwiLi4vYXJuXCI7XG5pbXBvcnQge1xuICBBd3NDb25zdHJ1Y3RCYXNlLFxuICBJQXdzQ29uc3RydWN0LFxuICBBd3NDb25zdHJ1Y3RQcm9wcyxcbn0gZnJvbSBcIi4uL2F3cy1jb25zdHJ1Y3RcIjtcbmltcG9ydCB7IEF3c1N0YWNrIH0gZnJvbSBcIi4uL2F3cy1zdGFja1wiO1xuaW1wb3J0IHtcbiAgSVJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbiAgTWFuYWdlZFJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbn0gZnJvbSBcIi4vcmVzcG9uc2UtaGVhZGVycy1wb2xpY3lcIjtcblxuLy8gVE9ETzogUmUtYWRkIGludmFsaWRhdGlvbiBzdXBwb3J0XG4vLyBUT0RPOiBSZS1hZGQgb3JpZ2luIGdyb3VwIChmYWlsb3Zlcikgc3VwcG9ydFxuLy8gVE9ETzogUmUtYWRkIGtleSBncm91cCBzdXBwb3J0XG4vLyBUT0RPOiBSZS1hZGQgV0FGIHN1cHBvcnRcbi8vIFRPRE86IFJlLWFkZCBsb2dnaW5nIHN1cHBvcnRcbi8vIFRPRE86IFJlLWFkZCBjdXN0b20gY2FjaGUsIG9yaWdpblJlcXVlc3QgcG9saWN5IHN1cHBvcnQ/XG5cbi8qKlxuICogT3V0cHV0cyB3aGljaCBtYXkgYmUgcmVnaXN0ZXJlZCBmb3Igb3V0cHV0IHZpYSB0aGUgR3JpZC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXN0cmlidXRpb25PdXRwdXRzIHtcbiAgLyoqXG4gICAqIElkZW50aWZpZXIgZm9yIHRoZSBkaXN0cmlidXRpb24uIEZvciBleGFtcGxlOiBgRURGRFZCRDYzMkJIRFM1YC5cbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENsb3VkRnJvbnQgUm91dGUgNTMgem9uZSBJRCB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICAqIHJvdXRlIGFuIEFsaWFzIFJlc291cmNlIFJlY29yZCBTZXQgdG8uXG4gICAqXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHNpbXBseSBhbiBhbGlhcyBmb3IgdGhlIHpvbmUgSURcbiAgICovXG4gIHJlYWRvbmx5IGhvc3RlZFpvbmVJZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDdXJyZW50IHN0YXR1cyBvZiB0aGUgZGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBgRGVwbG95ZWRgIGlmIHRoZSBkaXN0cmlidXRpb24ncyBpbmZvcm1hdGlvbiBpcyBmdWxseSBwcm9wYWdhdGVkXG4gICAqIHRocm91Z2hvdXQgdGhlIEFtYXpvbiBDbG91ZEZyb250IHN5c3RlbS5cbiAgICovXG4gIHJlYWRvbmx5IHN0YXR1czogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBBUk4gZm9yIHRoZSBkaXN0cmlidXRpb25cbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBEb21haW4gbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBkaXN0cmlidXRpb24uXG4gICAqXG4gICAqIEZvciBleGFtcGxlOiBgZDYwNDcyMWZ4YWFxeTkuY2xvdWRmcm9udC5uZXRgXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG59XG5cbi8qKlxuICogSW1wb3J0ZWQgb3IgY3JlYXRlZCBETlMgem9uZSBhdHRyaWJ1dGVzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSURpc3RyaWJ1dGlvbiBleHRlbmRzIElBd3NDb25zdHJ1Y3Qge1xuICAvKiogU3Ryb25nbHkgdHlwZWQgb3V0cHV0c1xuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBkaXN0cmlidXRpb25PdXRwdXRzOiBEaXN0cmlidXRpb25PdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBEb21haW4gbmFtZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBkaXN0cmlidXRpb24uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICogRm9yIGV4YW1wbGU6IGBkNjA0NzIxZnhhYXF5OS5jbG91ZGZyb250Lm5ldGBcbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogQ2xvdWRGcm9udCBSb3V0ZSA1MyB6b25lIElEIHRoYXQgY2FuIGJlIHVzZWQgdG9cbiAgICogcm91dGUgYW4gQWxpYXMgUmVzb3VyY2UgUmVjb3JkIFNldCB0by5cbiAgICpcbiAgICogVGhpcyBhdHRyaWJ1dGUgaXMgc2ltcGx5IGFuIGFsaWFzIGZvciB0aGUgem9uZSBJRFxuICAgKi9cbiAgcmVhZG9ubHkgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBEaXN0cmlidXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEaXN0cmlidXRpb25Qcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIEV4dHJhIENOQU1FcyAoYWx0ZXJuYXRlIGRvbWFpbiBuYW1lcyksIGlmIGFueSwgZm9yIHRoaXMgZGlzdHJpYnV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgYWxpYXNlcz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBXaGV0aGVyIHRoZSBkaXN0cmlidXRpb24gaXMgZW5hYmxlZCB0byBhY2NlcHQgZW5kIHVzZXIgcmVxdWVzdHMgZm9yIGNvbnRlbnQuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZWQ/OiBib29sZWFuIHwgSVJlc29sdmFibGU7XG5cbiAgLyoqXG4gICAqIElmIGVuYWJsZWQsIHRoZSByZXNvdXJjZSB3aWxsIHdhaXQgZm9yIHRoZSBkaXN0cmlidXRpb24gc3RhdHVzIHRvIGNoYW5nZVxuICAgKiBmcm9tIEluUHJvZ3Jlc3MgdG8gRGVwbG95ZWQuXG4gICAqXG4gICAqIFNldHRpbmcgdGhpcyB0b2ZhbHNlIHdpbGwgc2tpcCB0aGUgcHJvY2Vzcy5cbiAgICpcbiAgICogQGRlZmF1bHQ6IHRydWUuXG4gICAqL1xuICByZWFkb25seSB3YWl0Rm9yRGVwbG95bWVudD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciB0aGUgZGlzdHJpYnV0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdEJlaGF2aW9yOiBCZWhhdmlvck9wdGlvbnM7XG5cbiAgLyoqXG4gICAqIEFkZGl0aW9uYWwgYmVoYXZpb3JzIGZvciB0aGUgZGlzdHJpYnV0aW9uLCBtYXBwZWQgYnkgdGhlIHBhdGhQYXR0ZXJuIHRoYXQgc3BlY2lmaWVzIHdoaWNoIHJlcXVlc3RzIHRvIGFwcGx5IHRoZSBiZWhhdmlvciB0by5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBhZGRpdGlvbmFsIGJlaGF2aW9ycyBhcmUgYWRkZWQuXG4gICAqL1xuICByZWFkb25seSBhZGRpdGlvbmFsQmVoYXZpb3JzPzogUmVjb3JkPHN0cmluZywgQmVoYXZpb3JPcHRpb25zPjtcblxuICAvKipcbiAgICogQSBjZXJ0aWZpY2F0ZSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiBUaGUgY2VydGlmaWNhdGUgbXVzdCBiZSBsb2NhdGVkIGluIE4uIFZpcmdpbmlhICh1cy1lYXN0LTEpLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBDbG91ZEZyb250IHdpbGRjYXJkIGNlcnRpZmljYXRlICgqLmNsb3VkZnJvbnQubmV0KSB3aWxsIGJlIHVzZWQuXG4gICAqL1xuICByZWFkb25seSBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcblxuICAvKipcbiAgICogQW55IGNvbW1lbnRzIHlvdSB3YW50IHRvIGluY2x1ZGUgYWJvdXQgdGhlIGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBjb21tZW50XG4gICAqL1xuICByZWFkb25seSBjb21tZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgb2JqZWN0IHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byByZXF1ZXN0IGZyb20geW91ciBvcmlnaW4gKGZvciBleGFtcGxlLCBpbmRleC5odG1sKVxuICAgKiB3aGVuIGEgdmlld2VyIHJlcXVlc3RzIHRoZSByb290IFVSTCBmb3IgeW91ciBkaXN0cmlidXRpb24uIElmIG5vIGRlZmF1bHQgb2JqZWN0IGlzIHNldCwgdGhlXG4gICAqIHJlcXVlc3QgZ29lcyB0byB0aGUgb3JpZ2luJ3Mgcm9vdCAoZS5nLiwgZXhhbXBsZS5jb20vKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBkZWZhdWx0IHJvb3Qgb2JqZWN0XG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0Um9vdE9iamVjdD86IHN0cmluZztcblxuICAvKipcbiAgICogQ29udHJvbHMgdGhlIGNvdW50cmllcyBpbiB3aGljaCB5b3VyIGNvbnRlbnQgaXMgZGlzdHJpYnV0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gZ2VvZ3JhcGhpYyByZXN0cmljdGlvbnNcbiAgICovXG4gIHJlYWRvbmx5IGdlb1Jlc3RyaWN0aW9uPzogR2VvUmVzdHJpY3Rpb247XG5cbiAgLyoqXG4gICAqIFNwZWNpZnkgdGhlIG1heGltdW0gSFRUUCB2ZXJzaW9uIHRoYXQgeW91IHdhbnQgdmlld2VycyB0byB1c2UgdG8gY29tbXVuaWNhdGUgd2l0aCBDbG91ZEZyb250LlxuICAgKlxuICAgKiBGb3Igdmlld2VycyBhbmQgQ2xvdWRGcm9udCB0byB1c2UgSFRUUC8yLCB2aWV3ZXJzIG11c3Qgc3VwcG9ydCBUTFMgMS4yIG9yIGxhdGVyLCBhbmQgbXVzdCBzdXBwb3J0IHNlcnZlciBuYW1lIGlkZW50aWZpY2F0aW9uIChTTkkpLlxuICAgKlxuICAgKiBAZGVmYXVsdCBIdHRwVmVyc2lvbi5IVFRQMlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cFZlcnNpb24/OiBIdHRwVmVyc2lvbjtcblxuICAvKipcbiAgICogVGhlIHByaWNlIGNsYXNzIHRoYXQgY29ycmVzcG9uZHMgd2l0aCB0aGUgbWF4aW11bSBwcmljZSB0aGF0IHlvdSB3YW50IHRvIHBheSBmb3IgQ2xvdWRGcm9udCBzZXJ2aWNlLlxuICAgKiBJZiB5b3Ugc3BlY2lmeSBQcmljZUNsYXNzX0FsbCwgQ2xvdWRGcm9udCByZXNwb25kcyB0byByZXF1ZXN0cyBmb3IgeW91ciBvYmplY3RzIGZyb20gYWxsIENsb3VkRnJvbnQgZWRnZSBsb2NhdGlvbnMuXG4gICAqIElmIHlvdSBzcGVjaWZ5IGEgcHJpY2UgY2xhc3Mgb3RoZXIgdGhhbiBQcmljZUNsYXNzX0FsbCwgQ2xvdWRGcm9udCBzZXJ2ZXMgeW91ciBvYmplY3RzIGZyb20gdGhlIENsb3VkRnJvbnQgZWRnZSBsb2NhdGlvblxuICAgKiB0aGF0IGhhcyB0aGUgbG93ZXN0IGxhdGVuY3kgYW1vbmcgdGhlIGVkZ2UgbG9jYXRpb25zIGluIHlvdXIgcHJpY2UgY2xhc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IFByaWNlQ2xhc3MuUFJJQ0VfQ0xBU1NfQUxMXG4gICAqL1xuICByZWFkb25seSBwcmljZUNsYXNzPzogUHJpY2VDbGFzcztcblxuICAvKipcbiAgICogSG93IENsb3VkRnJvbnQgc2hvdWxkIGhhbmRsZSByZXF1ZXN0cyB0aGF0IGFyZSBub3Qgc3VjY2Vzc2Z1bCAoZS5nLiwgUGFnZU5vdEZvdW5kKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBObyBjdXN0b20gZXJyb3IgcmVzcG9uc2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgZXJyb3JSZXNwb25zZXM/OiBFcnJvclJlc3BvbnNlW107XG5cbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIHZlcnNpb24gb2YgdGhlIFNTTCBwcm90b2NvbCB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gdXNlIGZvciBIVFRQUyBjb25uZWN0aW9ucy5cbiAgICpcbiAgICogQ2xvdWRGcm9udCBzZXJ2ZXMgeW91ciBvYmplY3RzIG9ubHkgdG8gYnJvd3NlcnMgb3IgZGV2aWNlcyB0aGF0IHN1cHBvcnQgYXRcbiAgICogbGVhc3QgdGhlIFNTTCB2ZXJzaW9uIHRoYXQgeW91IHNwZWNpZnkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDIxLlxuICAgKi9cbiAgcmVhZG9ubHkgbWluaW11bVByb3RvY29sVmVyc2lvbj86IFNlY3VyaXR5UG9saWN5UHJvdG9jb2w7XG5cbiAgLyoqXG4gICAqIFRoZSBTU0wgbWV0aG9kIENsb3VkRnJvbnQgd2lsbCB1c2UgZm9yIHlvdXIgZGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uIChTTkkpIC0gaXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBUTFMgY29tcHV0ZXIgbmV0d29ya2luZyBwcm90b2NvbCBieSB3aGljaCBhIGNsaWVudCBpbmRpY2F0ZXNcbiAgICogd2hpY2ggaG9zdG5hbWUgaXQgaXMgYXR0ZW1wdGluZyB0byBjb25uZWN0IHRvIGF0IHRoZSBzdGFydCBvZiB0aGUgaGFuZHNoYWtpbmcgcHJvY2Vzcy4gVGhpcyBhbGxvd3MgYSBzZXJ2ZXIgdG8gcHJlc2VudFxuICAgKiBtdWx0aXBsZSBjZXJ0aWZpY2F0ZXMgb24gdGhlIHNhbWUgSVAgYWRkcmVzcyBhbmQgVENQIHBvcnQgbnVtYmVyIGFuZCBoZW5jZSBhbGxvd3MgbXVsdGlwbGUgc2VjdXJlIChIVFRQUykgd2Vic2l0ZXNcbiAgICogKG9yIGFueSBvdGhlciBzZXJ2aWNlIG92ZXIgVExTKSB0byBiZSBzZXJ2ZWQgYnkgdGhlIHNhbWUgSVAgYWRkcmVzcyB3aXRob3V0IHJlcXVpcmluZyBhbGwgdGhvc2Ugc2l0ZXMgdG8gdXNlIHRoZSBzYW1lIGNlcnRpZmljYXRlLlxuICAgKlxuICAgKiBDbG91ZEZyb250IGNhbiB1c2UgU05JIHRvIGhvc3QgbXVsdGlwbGUgZGlzdHJpYnV0aW9ucyBvbiB0aGUgc2FtZSBJUCAtIHdoaWNoIGEgbGFyZ2UgbWFqb3JpdHkgb2YgY2xpZW50cyB3aWxsIHN1cHBvcnQuXG4gICAqXG4gICAqIElmIHlvdXIgY2xpZW50cyBjYW5ub3Qgc3VwcG9ydCBTTkkgaG93ZXZlciAtIENsb3VkRnJvbnQgY2FuIHVzZSBkZWRpY2F0ZWQgSVBzIGZvciB5b3VyIGRpc3RyaWJ1dGlvbiAtIGJ1dCB0aGVyZSBpcyBhIHByb3JhdGVkIG1vbnRobHkgY2hhcmdlIGZvclxuICAgKiB1c2luZyB0aGlzIGZlYXR1cmUuIEJ5IGRlZmF1bHQsIHdlIHVzZSBTTkkgLSBidXQgeW91IGNhbiBvcHRpb25hbGx5IGVuYWJsZSBkZWRpY2F0ZWQgSVBzIChWSVApLlxuICAgKlxuICAgKiBTZWUgdGhlIENsb3VkRnJvbnQgU1NMIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgcHJpY2luZyA6IGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vY2xvdWRmcm9udC9jdXN0b20tc3NsLWRvbWFpbnMvXG4gICAqXG4gICAqIEBkZWZhdWx0IFNTTE1ldGhvZC5TTklcbiAgICovXG4gIHJlYWRvbmx5IHNzbFN1cHBvcnRNZXRob2Q/OiBTU0xNZXRob2Q7XG59XG5cbi8qKlxuICogQW1hem9uIENsb3VkZnJvbnQgRGlzdHJpYnV0aW9uXG4gKi9cbmV4cG9ydCBjbGFzcyBEaXN0cmlidXRpb24gZXh0ZW5kcyBBd3NDb25zdHJ1Y3RCYXNlIGltcGxlbWVudHMgSURpc3RyaWJ1dGlvbiB7XG4gIC8vIFRPRE86IEFkZCBzdGF0aWMgZnJvbUxvb2t1cD9cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX291dHB1dHM6IERpc3RyaWJ1dGlvbk91dHB1dHM7XG4gIHB1YmxpYyBnZXQgZGlzdHJpYnV0aW9uT3V0cHV0cygpOiBEaXN0cmlidXRpb25PdXRwdXRzIHtcbiAgICByZXR1cm4gdGhpcy5fb3V0cHV0cztcbiAgfVxuICBwdWJsaWMgZ2V0IG91dHB1dHMoKTogUmVjb3JkPHN0cmluZywgYW55PiB7XG4gICAgcmV0dXJuIHRoaXMuZGlzdHJpYnV0aW9uT3V0cHV0cztcbiAgfVxuICBwcml2YXRlIHJlYWRvbmx5IF9kb21haW5OYW1lOiBzdHJpbmc7XG4gIHB1YmxpYyBnZXQgZG9tYWluTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9kb21haW5OYW1lO1xuICB9XG4gIHB1YmxpYyByZWFkb25seSBob3N0ZWRab25lSWQ6IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcmlnaW5zID0gbmV3IEFycmF5PE9yaWdpbkluZGV4PigpO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgYWRkaXRpb25hbEJlaGF2aW9yczogQ2FjaGVCZWhhdmlvcltdID0gW107XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlcnJvclJlc3BvbnNlczogRXJyb3JSZXNwb25zZVtdO1xuICBwcml2YXRlIHJlYWRvbmx5IGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIG5hbWU6IHN0cmluZywgcHJvcHM6IERpc3RyaWJ1dGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIG5hbWUsIHByb3BzKTtcblxuICAgIGlmIChwcm9wcy5jZXJ0aWZpY2F0ZSkge1xuICAgICAgY29uc3QgY2VydGlmaWNhdGVSZWdpb24gPSBBd3NTdGFjay5vZkF3c0NvbnN0cnVjdCh0aGlzKS5zcGxpdEFybihcbiAgICAgICAgcHJvcHMuY2VydGlmaWNhdGUuY2VydGlmaWNhdGVBcm4sXG4gICAgICAgIEFybkZvcm1hdC5TTEFTSF9SRVNPVVJDRV9OQU1FLFxuICAgICAgKS5yZWdpb247XG4gICAgICBpZiAoXG4gICAgICAgICFUb2tlbi5pc1VucmVzb2x2ZWQoY2VydGlmaWNhdGVSZWdpb24pICYmXG4gICAgICAgIGNlcnRpZmljYXRlUmVnaW9uICE9PSBcInVzLWVhc3QtMVwiXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBEaXN0cmlidXRpb24gY2VydGlmaWNhdGVzIG11c3QgYmUgaW4gdGhlIHVzLWVhc3QtMSByZWdpb24gYW5kIHRoZSBjZXJ0aWZpY2F0ZSB5b3UgcHJvdmlkZWQgaXMgaW4gJHtjZXJ0aWZpY2F0ZVJlZ2lvbn0uYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhpcy5jZXJ0aWZpY2F0ZSA9IHByb3BzLmNlcnRpZmljYXRlO1xuICAgIHRoaXMuZXJyb3JSZXNwb25zZXMgPSBwcm9wcy5lcnJvclJlc3BvbnNlcyA/PyBbXTtcblxuICAgIGNvbnN0IGRlZmF1bHRPcmlnaW5JZCA9IHRoaXMuYWRkT3JpZ2luKHByb3BzLmRlZmF1bHRCZWhhdmlvci5vcmlnaW4pO1xuICAgIGlmIChwcm9wcy5hZGRpdGlvbmFsQmVoYXZpb3JzKSB7XG4gICAgICBPYmplY3QuZW50cmllcyhwcm9wcy5hZGRpdGlvbmFsQmVoYXZpb3JzKS5mb3JFYWNoKFxuICAgICAgICAoW3BhdGhQYXR0ZXJuLCBiZWhhdmlvck9wdGlvbnNdKSA9PiB7XG4gICAgICAgICAgdGhpcy5hZGRCZWhhdmlvcihcbiAgICAgICAgICAgIHBhdGhQYXR0ZXJuLFxuICAgICAgICAgICAgYmVoYXZpb3JPcHRpb25zLm9yaWdpbixcbiAgICAgICAgICAgIGJlaGF2aW9yT3B0aW9ucyxcbiAgICAgICAgICApO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBDb21tZW50cyBoYXZlIGFuIHVuZG9jdW1lbnRlZCBsaW1pdCBvZiAxMjggY2hhcmFjdGVyc1xuICAgIGNvbnN0IHRyaW1tZWRDb21tZW50ID1cbiAgICAgIHByb3BzLmNvbW1lbnQgJiYgcHJvcHMuY29tbWVudC5sZW5ndGggPiAxMjhcbiAgICAgICAgPyBgJHtwcm9wcy5jb21tZW50LnNsaWNlKDAsIDEyOCAtIDMpfS4uLmBcbiAgICAgICAgOiBwcm9wcy5jb21tZW50O1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBjbG91ZGZyb250RGlzdHJpYnV0aW9uLkNsb3VkZnJvbnREaXN0cmlidXRpb24oXG4gICAgICB0aGlzLFxuICAgICAgXCJSZXNvdXJjZVwiLFxuICAgICAge1xuICAgICAgICBlbmFibGVkOiBwcm9wcy5lbmFibGVkID8/IHRydWUsXG4gICAgICAgIG9yaWdpbjogTGF6eS5hbnlWYWx1ZSh7XG4gICAgICAgICAgcHJvZHVjZTogKCkgPT5cbiAgICAgICAgICAgIHRoaXMuX29yaWdpbnMubWFwKChvKSA9PlxuICAgICAgICAgICAgICAvLyBMYXp5IHByb2R1Y2VycyBuZWVkIGFkZGl0aW9uYWwgeHh4VG9UZXJyYWZvcm0gd3JhcFxuICAgICAgICAgICAgICBjbG91ZGZyb250RGlzdHJpYnV0aW9uLmNsb3VkZnJvbnREaXN0cmlidXRpb25PcmlnaW5Ub1RlcnJhZm9ybShcbiAgICAgICAgICAgICAgICBvLm9yaWdpbi5yZW5kZXIoby5pZCksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICApLFxuICAgICAgICB9KSxcbiAgICAgICAgZGVmYXVsdENhY2hlQmVoYXZpb3I6IHRoaXMuX3JlbmRlckRlZmF1bHRDYWNoZUJlaGF2aW9yKHtcbiAgICAgICAgICBwYXRoUGF0dGVybjogXCIqXCIsIC8vIGlnbm9yZWQgZm9yIERlZmF1bHQgQ2FjaGUgQmVoYXZpb3JcbiAgICAgICAgICB0YXJnZXRPcmlnaW5JZDogZGVmYXVsdE9yaWdpbklkLFxuICAgICAgICAgIC4uLnByb3BzLmRlZmF1bHRCZWhhdmlvcixcbiAgICAgICAgfSksXG4gICAgICAgIG9yZGVyZWRDYWNoZUJlaGF2aW9yOiBMYXp5LmFueVZhbHVlKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICAgIHRoaXMuYWRkaXRpb25hbEJlaGF2aW9ycy5tYXAoKGIpID0+XG4gICAgICAgICAgICAgICAgLy8gTGF6eSBwcm9kdWNlcnMgbmVlZCBhZGRpdGlvbmFsIHh4eFRvVGVycmFmb3JtIHdyYXBcbiAgICAgICAgICAgICAgICBjbG91ZGZyb250RGlzdHJpYnV0aW9uLmNsb3VkZnJvbnREaXN0cmlidXRpb25PcmRlcmVkQ2FjaGVCZWhhdmlvclRvVGVycmFmb3JtKFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwYXRoUGF0dGVybjogYi5wYXRoUGF0dGVybixcbiAgICAgICAgICAgICAgICAgICAgLi4udGhpcy5fcmVuZGVyRGVmYXVsdENhY2hlQmVoYXZpb3IoYiksXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IG9taXRFbXB0eUFycmF5OiB0cnVlIH0sXG4gICAgICAgICksXG4gICAgICAgIGFsaWFzZXM6IHByb3BzLmFsaWFzZXMsXG4gICAgICAgIGNvbW1lbnQ6IHRyaW1tZWRDb21tZW50LFxuICAgICAgICBjdXN0b21FcnJvclJlc3BvbnNlOiB0aGlzLnJlbmRlckVycm9yUmVzcG9uc2VzKCksXG4gICAgICAgIGRlZmF1bHRSb290T2JqZWN0OiBwcm9wcy5kZWZhdWx0Um9vdE9iamVjdCxcbiAgICAgICAgaHR0cFZlcnNpb246IHByb3BzLmh0dHBWZXJzaW9uID8/IEh0dHBWZXJzaW9uLkhUVFAyLFxuICAgICAgICBwcmljZUNsYXNzOiBwcm9wcy5wcmljZUNsYXNzID8/IHVuZGVmaW5lZCxcbiAgICAgICAgcmVzdHJpY3Rpb25zOiB0aGlzLnJlbmRlclJlc3RyaWN0aW9ucyhwcm9wcy5nZW9SZXN0cmljdGlvbiksXG4gICAgICAgIHZpZXdlckNlcnRpZmljYXRlOiB0aGlzLnJlbmRlclZpZXdlckNlcnRpZmljYXRlKFxuICAgICAgICAgIHRoaXMuY2VydGlmaWNhdGUsXG4gICAgICAgICAgcHJvcHMubWluaW11bVByb3RvY29sVmVyc2lvbixcbiAgICAgICAgICBwcm9wcy5zc2xTdXBwb3J0TWV0aG9kLFxuICAgICAgICApLFxuICAgICAgICB3YWl0Rm9yRGVwbG95bWVudDogcHJvcHMud2FpdEZvckRlcGxveW1lbnQsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICB0aGlzLl9kb21haW5OYW1lID0gdGhpcy5yZXNvdXJjZS5kb21haW5OYW1lO1xuICAgIHRoaXMuaG9zdGVkWm9uZUlkID0gdGhpcy5yZXNvdXJjZS5ob3N0ZWRab25lSWQ7XG4gICAgdGhpcy5fb3V0cHV0cyA9IHtcbiAgICAgIGlkOiB0aGlzLnJlc291cmNlLmlkLFxuICAgICAgaG9zdGVkWm9uZUlkOiB0aGlzLnJlc291cmNlLmhvc3RlZFpvbmVJZCxcbiAgICAgIHN0YXR1czogdGhpcy5yZXNvdXJjZS5zdGF0dXMsXG4gICAgICBhcm46IHRoaXMucmVzb3VyY2UuYXJuLFxuICAgICAgZG9tYWluTmFtZTogdGhpcy5fZG9tYWluTmFtZSxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhbiBPcmlnaW4gdG8gdGhpcyBEaXN0cmlidXRpb24uXG4gICAqXG4gICAqIEBwYXJhbSBvcmlnaW4gVGhlIE9yaWdpbiB0byBhZGQuXG4gICAqIEBwYXJhbSBvcmlnaW5JZCBBbiBvcHRpb25hbCBpZCB0byB1c2UgZm9yIHRoZSBPcmlnaW4gb3Igb25lIHdpbGwgYmUgZ2VuZXJhdGVkLlxuICAgKi9cbiAgcHVibGljIGFkZE9yaWdpbihvcmlnaW46IElPcmlnaW4sIG9yaWdpbklkPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBpbmRleGVkT3JpZ2luID0gdGhpcy5fb3JpZ2lucy5maW5kKFxuICAgICAgKG9yaWdpbkluZGV4KSA9PiBvcmlnaW5JbmRleC5vcmlnaW4gPT09IG9yaWdpbixcbiAgICApO1xuICAgIGlmIChpbmRleGVkT3JpZ2luKSB7XG4gICAgICBpZiAob3JpZ2luSWQgJiYgb3JpZ2luSWQgIT09IGluZGV4ZWRPcmlnaW4uaWQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBEdXBsaWNhdGUgb3JpZ2luIGZvciAke2luZGV4ZWRPcmlnaW4uaWR9IGFuZCAke29yaWdpbklkfS5gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGluZGV4ZWRPcmlnaW4uaWQ7XG4gICAgfVxuICAgIGNvbnN0IG5leHRJbmRleCA9IHRoaXMuX29yaWdpbnMubGVuZ3RoO1xuICAgIGNvbnN0IGlkID0gb3JpZ2luSWQgPz8gYG9yaWdpbi0ke25leHRJbmRleH1gO1xuICAgIC8vIGVuc3VyZSBpZCAoaWYgcHJvdmlkZWQpIGlzIHVuaXF1ZSB3aXRoaW4gRGlzdHJpYnV0aW9uXG4gICAgaWYgKHRoaXMuX29yaWdpbnMuc29tZSgob3JpZ2luSW5kZXgpID0+IG9yaWdpbkluZGV4LmlkID09PSBpZCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYER1cGxpY2F0ZSBvcmlnaW4gaWQgJHtpZH0uIE9yaWdpbklkcyBtdXN0IGJlIHVuaXF1ZSB3aXRoaW4gYSBkaXN0cmlidXRpb25gLFxuICAgICAgKTtcbiAgICB9XG4gICAgdGhpcy5fb3JpZ2lucy5wdXNoKHsgb3JpZ2luLCBpZCB9KTtcbiAgICByZXR1cm4gaWQ7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlckVycm9yUmVzcG9uc2VzKCk6XG4gICAgfCBjbG91ZGZyb250RGlzdHJpYnV0aW9uLkNsb3VkZnJvbnREaXN0cmlidXRpb25DdXN0b21FcnJvclJlc3BvbnNlW11cbiAgICB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuZXJyb3JSZXNwb25zZXMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLmVycm9yUmVzcG9uc2VzLm1hcCgoZXJyb3JDb25maWcpID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgIWVycm9yQ29uZmlnLnJlc3BvbnNlSHR0cFN0YXR1cyAmJlxuICAgICAgICAhZXJyb3JDb25maWcudHRsICYmXG4gICAgICAgICFlcnJvckNvbmZpZy5yZXNwb25zZVBhZ2VQYXRoXG4gICAgICApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIFwiQSBjdXN0b20gZXJyb3IgcmVzcG9uc2Ugd2l0aG91dCBlaXRoZXIgYSAncmVzcG9uc2VIdHRwU3RhdHVzJywgJ3R0bCcgb3IgJ3Jlc3BvbnNlUGFnZVBhdGgnIGlzIG5vdCB2YWxpZC5cIixcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXJyb3JDYWNoaW5nTWluVHRsOiBlcnJvckNvbmZpZy50dGw/LnRvU2Vjb25kcygpLFxuICAgICAgICBlcnJvckNvZGU6IGVycm9yQ29uZmlnLmh0dHBTdGF0dXMsXG4gICAgICAgIHJlc3BvbnNlQ29kZTogZXJyb3JDb25maWcucmVzcG9uc2VQYWdlUGF0aFxuICAgICAgICAgID8gKGVycm9yQ29uZmlnLnJlc3BvbnNlSHR0cFN0YXR1cyA/PyBlcnJvckNvbmZpZy5odHRwU3RhdHVzKVxuICAgICAgICAgIDogZXJyb3JDb25maWcucmVzcG9uc2VIdHRwU3RhdHVzLFxuICAgICAgICByZXNwb25zZVBhZ2VQYXRoOiBlcnJvckNvbmZpZy5yZXNwb25zZVBhZ2VQYXRoLFxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGRzIGEgbmV3IGJlaGF2aW9yIHRvIHRoaXMgZGlzdHJpYnV0aW9uIGZvciB0aGUgZ2l2ZW4gcGF0aFBhdHRlcm4uXG4gICAqXG4gICAqIEBwYXJhbSBwYXRoUGF0dGVybiB0aGUgcGF0aCBwYXR0ZXJuIChlLmcuLCAnaW1hZ2VzLyonKSB0aGF0IHNwZWNpZmllcyB3aGljaCByZXF1ZXN0cyB0byBhcHBseSB0aGUgYmVoYXZpb3IgdG8uXG4gICAqIEBwYXJhbSBvcmlnaW4gdGhlIG9yaWdpbiB0byB1c2UgZm9yIHRoaXMgYmVoYXZpb3JcbiAgICogQHBhcmFtIGJlaGF2aW9yT3B0aW9ucyB0aGUgb3B0aW9ucyBmb3IgdGhlIGJlaGF2aW9yIGF0IHRoaXMgcGF0aC5cbiAgICovXG4gIHB1YmxpYyBhZGRCZWhhdmlvcihcbiAgICBwYXRoUGF0dGVybjogc3RyaW5nLFxuICAgIG9yaWdpbjogSU9yaWdpbixcbiAgICBiZWhhdmlvck9wdGlvbnM6IEFkZEJlaGF2aW9yT3B0aW9ucyA9IHt9LFxuICApIHtcbiAgICBpZiAocGF0aFBhdHRlcm4gPT09IFwiKlwiKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiT25seSB0aGUgZGVmYXVsdCBiZWhhdmlvciBjYW4gaGF2ZSBhIHBhdGggcGF0dGVybiBvZiAnKidcIixcbiAgICAgICk7XG4gICAgfVxuICAgIGNvbnN0IHRhcmdldE9yaWdpbklkID0gdGhpcy5hZGRPcmlnaW4ob3JpZ2luKTtcbiAgICB0aGlzLmFkZGl0aW9uYWxCZWhhdmlvcnMucHVzaCh7XG4gICAgICBwYXRoUGF0dGVybixcbiAgICAgIG9yaWdpbixcbiAgICAgIHRhcmdldE9yaWdpbklkLFxuICAgICAgLi4uYmVoYXZpb3JPcHRpb25zLFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYW5kIHJldHVybnMgdGhlIFRlcnJhZm9ybSByZXByZXNlbnRhdGlvbiBvZiB0aGlzIGJlaGF2aW9yLlxuICAgKiBUaGlzIHJlbmRlcnMgYXMgYSBcIkNsb3VkZnJvbnREaXN0cmlidXRpb25EZWZhdWx0Q2FjaGVCZWhhdmlvclwiXG4gICAqIHJlZ2FyZGxlc3MgaWYgdGhpcyBpcyBhIGRlZmF1bHQgY2FjaGUgYmVoYXZpb3Igb3Igbm90LCBhcyB0aGUgdHdvXG4gICAqIGFyZSBpZGVudGljYWwgZXhjZXB0IHRoZSBgcGF0aFBhdHRlcm5gIGlzIG9taXR0ZWQgZm9yIHRoZSBkZWZhdWx0XG4gICAqIGNhY2hlIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIHByaXZhdGUgX3JlbmRlckRlZmF1bHRDYWNoZUJlaGF2aW9yKFxuICAgIHByb3BzOiBDYWNoZUJlaGF2aW9yLFxuICApOiBjbG91ZGZyb250RGlzdHJpYnV0aW9uLkNsb3VkZnJvbnREaXN0cmlidXRpb25EZWZhdWx0Q2FjaGVCZWhhdmlvciB7XG4gICAgLy8gVE9ETzogc2hvdWxkIGl0IGJlIHBvc3NpYmxlIHRvIGxlYXZlIGNhY2hlUG9saWN5IGJlIHVuZGVmaW5lZD9cbiAgICBjb25zdCBtYW5hZ2VkQ2FjaGVQb2xpY3lOYW1lID1cbiAgICAgIHByb3BzLmNhY2hlUG9saWN5ID8/IE1hbmFnZWRDYWNoZVBvbGljeS5DQUNISU5HX09QVElNSVpFRDtcbiAgICBjb25zdCBjYWNoZVBvbGljeSA9IHRoaXMuZGF0YUxvb2t1cChcbiAgICAgIG1hbmFnZWRDYWNoZVBvbGljeU5hbWUsXG4gICAgICBkYXRhQXdzQ2xvdWRmcm9udENhY2hlUG9saWN5LkRhdGFBd3NDbG91ZGZyb250Q2FjaGVQb2xpY3ksXG4gICAgICB7IG5hbWU6IG1hbmFnZWRDYWNoZVBvbGljeU5hbWUgfSxcbiAgICApO1xuICAgIGNvbnN0IG9yaWdpblJlcXVlc3RQb2xpY3kgPSB0aGlzLmRhdGFMb29rdXAoXG4gICAgICBwcm9wcy5vcmlnaW5SZXF1ZXN0UG9saWN5LFxuICAgICAgZGF0YUF3c0Nsb3VkZnJvbnRPcmlnaW5SZXF1ZXN0UG9saWN5LkRhdGFBd3NDbG91ZGZyb250T3JpZ2luUmVxdWVzdFBvbGljeSxcbiAgICAgIHsgbmFtZTogcHJvcHMub3JpZ2luUmVxdWVzdFBvbGljeSB9LFxuICAgICk7XG4gICAgbGV0IHJlc3BvbnNlSGVhZGVyc1BvbGljeUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgaWYgKHR5cGVvZiBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kgPT0gXCJzdHJpbmdcIikge1xuICAgICAgY29uc3QgbWFuYWdlZFBvbGljeSA9IHRoaXMuZGF0YUxvb2t1cChcbiAgICAgICAgcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5LFxuICAgICAgICBkYXRhQXdzQ2xvdWRmcm9udFJlc3BvbnNlSGVhZGVyc1BvbGljeS5EYXRhQXdzQ2xvdWRmcm9udFJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbiAgICAgICAgeyBuYW1lOiBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3kgfSxcbiAgICAgICk7XG4gICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lJZCA9IG1hbmFnZWRQb2xpY3k/LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lJZCA9XG4gICAgICAgIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeT8ucmVzcG9uc2VIZWFkZXJzUG9saWN5SWQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHRhcmdldE9yaWdpbklkOiBwcm9wcy50YXJnZXRPcmlnaW5JZCxcbiAgICAgIGFsbG93ZWRNZXRob2RzOlxuICAgICAgICBwcm9wcy5hbGxvd2VkTWV0aG9kcz8ubWV0aG9kcyA/PyBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRC5tZXRob2RzLFxuICAgICAgY2FjaGVkTWV0aG9kczpcbiAgICAgICAgcHJvcHMuY2FjaGVkTWV0aG9kcz8ubWV0aG9kcyA/PyBDYWNoZWRNZXRob2RzLkNBQ0hFX0dFVF9IRUFELm1ldGhvZHMsXG4gICAgICBjYWNoZVBvbGljeUlkOiBjYWNoZVBvbGljeT8uaWQsXG4gICAgICBjb21wcmVzczogcHJvcHMuY29tcHJlc3MgPz8gdHJ1ZSxcbiAgICAgIG9yaWdpblJlcXVlc3RQb2xpY3lJZDogb3JpZ2luUmVxdWVzdFBvbGljeT8uaWQsXG4gICAgICByZXNwb25zZUhlYWRlcnNQb2xpY3lJZCxcbiAgICAgIHNtb290aFN0cmVhbWluZzogcHJvcHMuc21vb3RoU3RyZWFtaW5nLFxuICAgICAgdmlld2VyUHJvdG9jb2xQb2xpY3k6XG4gICAgICAgIHByb3BzLnZpZXdlclByb3RvY29sUG9saWN5ID8/IFZpZXdlclByb3RvY29sUG9saWN5LkFMTE9XX0FMTCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJSZXN0cmljdGlvbnMoZ2VvUmVzdHJpY3Rpb24/OiBHZW9SZXN0cmljdGlvbikge1xuICAgIHJldHVybiBnZW9SZXN0cmljdGlvblxuICAgICAgPyB7XG4gICAgICAgICAgZ2VvUmVzdHJpY3Rpb246IHtcbiAgICAgICAgICAgIHJlc3RyaWN0aW9uVHlwZTogZ2VvUmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UeXBlLFxuICAgICAgICAgICAgbG9jYXRpb25zOlxuICAgICAgICAgICAgICBnZW9SZXN0cmljdGlvbi5yZXN0cmljdGlvblR5cGUgIT09IEdlb1Jlc3RyaWN0aW9uVHlwZS5OT05FXG4gICAgICAgICAgICAgICAgPyB0aGlzLnZhbGlkYXRlTG9jYXRpb25zKGdlb1Jlc3RyaWN0aW9uLmxvY2F0aW9ucylcbiAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICA6IHtcbiAgICAgICAgICBnZW9SZXN0cmljdGlvbjoge1xuICAgICAgICAgICAgcmVzdHJpY3Rpb25UeXBlOiBHZW9SZXN0cmljdGlvblR5cGUuTk9ORSxcbiAgICAgICAgICB9LFxuICAgICAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZUxvY2F0aW9ucyhsb2NhdGlvbnM6IHN0cmluZ1tdKSB7XG4gICAgY29uc3QgTE9DQVRJT05fUkVHRVggPSAvXltBLVpdezJ9JC87XG4gICAgaWYgKGxvY2F0aW9ucy5sZW5ndGggPT09IDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlNob3VsZCBwcm92aWRlIGF0IGxlYXN0IDEgbG9jYXRpb25cIik7XG4gICAgfVxuICAgIGxvY2F0aW9ucy5mb3JFYWNoKChsb2NhdGlvbikgPT4ge1xuICAgICAgaWYgKCFMT0NBVElPTl9SRUdFWC50ZXN0KGxvY2F0aW9uKSkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbWF4LWxlblxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgYEludmFsaWQgbG9jYXRpb24gZm9ybWF0IGZvciBsb2NhdGlvbjogJHtsb2NhdGlvbn0sIGxvY2F0aW9uIHNob3VsZCBiZSB0d28tbGV0dGVyIGFuZCB1cHBlcmNhc2UgY291bnRyeSBJU08gMzE2Ni0xLWFscGhhLTIgY29kZWAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGxvY2F0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyVmlld2VyQ2VydGlmaWNhdGUoXG4gICAgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGUsXG4gICAgbWluaW11bVByb3RvY29sVmVyc2lvblByb3A/OiBTZWN1cml0eVBvbGljeVByb3RvY29sLFxuICAgIHNzbFN1cHBvcnRNZXRob2RQcm9wPzogU1NMTWV0aG9kLFxuICApOiBjbG91ZGZyb250RGlzdHJpYnV0aW9uLkNsb3VkZnJvbnREaXN0cmlidXRpb25WaWV3ZXJDZXJ0aWZpY2F0ZSB7XG4gICAgY29uc3QgbWluaW11bVByb3RvY29sVmVyc2lvbiA9XG4gICAgICBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uUHJvcCA/PyBTZWN1cml0eVBvbGljeVByb3RvY29sLlRMU19WMV8yXzIwMjE7XG4gICAgY29uc3Qgc3NsU3VwcG9ydE1ldGhvZCA9IHNzbFN1cHBvcnRNZXRob2RQcm9wID8/IFNTTE1ldGhvZC5TTkk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4uKGNlcnRpZmljYXRlXG4gICAgICAgID8geyBhY21DZXJ0aWZpY2F0ZUFybjogY2VydGlmaWNhdGUuY2VydGlmaWNhdGVBcm4gfVxuICAgICAgICA6IHsgY2xvdWRmcm9udERlZmF1bHRDZXJ0aWZpY2F0ZTogdHJ1ZSB9KSxcbiAgICAgIG1pbmltdW1Qcm90b2NvbFZlcnNpb246IG1pbmltdW1Qcm90b2NvbFZlcnNpb24sXG4gICAgICBzc2xTdXBwb3J0TWV0aG9kOiBzc2xTdXBwb3J0TWV0aG9kLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogQ29uZGl0aW9uYWxseSBsb29rdXAgb3IgY3JlYXRlIGEgY2hpbGQgYmFzZWQgb24gdGhlIGlkIHByb3ZpZGVkLlxuICAgKiBJZiB0aGUgaWQgaXMgdW5kZWZpbmVkLCBpdCB3aWxsIHJldHVybiB1bmRlZmluZWQuXG4gICAqXG4gICAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgdGhlIGNoaWxkIHRvIGxvb2t1cCBvciBjcmVhdGVcbiAgICogQHBhcmFtIGNvbnN0cnVjdFR5cGUgdGhlIHR5cGUgb2YgdGhlIGNoaWxkIHRvIGNyZWF0ZVxuICAgKiBAcGFyYW0gY29uZmlnIHRoZSBjb25maWd1cmF0aW9uIHRvIHBhc3MgdG8gdGhlIGNoaWxkXG4gICAqL1xuICBwcml2YXRlIGRhdGFMb29rdXA8VENvbnN0cnVjdCBleHRlbmRzIENvbnN0cnVjdD4oXG4gICAgaWQ6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgICBjb25zdHJ1Y3RUeXBlOiBuZXcgKFxuICAgICAgc2NvcGU6IENvbnN0cnVjdCxcbiAgICAgIGlkSW5wdXQ6IHN0cmluZyxcbiAgICAgIGNvbmZpZzogYW55LFxuICAgICkgPT4gVENvbnN0cnVjdCxcbiAgICBjb25maWc/OiBhbnksXG4gICk6IFRDb25zdHJ1Y3QgfCB1bmRlZmluZWQge1xuICAgIGlmICghaWQpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIGxldCBjaGlsZCA9IHRoaXMubm9kZS50cnlGaW5kQ2hpbGQoaWQpIGFzIFRDb25zdHJ1Y3QgfCB1bmRlZmluZWQ7XG4gICAgaWYgKCFjaGlsZCkge1xuICAgICAgY2hpbGQgPSBuZXcgY29uc3RydWN0VHlwZSh0aGlzLCBpZCwgY29uZmlnKTtcbiAgICB9XG4gICAgcmV0dXJuIGNoaWxkO1xuICB9XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgR2VvUmVzdHJpY3Rpb24ge1xuICByZWFkb25seSBsb2NhdGlvbnM6IHN0cmluZ1tdO1xuICByZWFkb25seSByZXN0cmljdGlvblR5cGU6IEdlb1Jlc3RyaWN0aW9uVHlwZTtcbn1cblxuZXhwb3J0IGVudW0gR2VvUmVzdHJpY3Rpb25UeXBlIHtcbiAgTk9ORSA9IFwibm9uZVwiLFxuICBXSElURUxJU1QgPSBcIndoaXRlbGlzdFwiLFxuICBCTEFDS0xJU1QgPSBcImJsYWNrbGlzdFwiLFxufVxuXG4vLyByZWY6IGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iL3YyLjE1Ni4wL3BhY2thZ2VzL2F3cy1jZGstbGliL2F3cy1jbG91ZGZyb250L2xpYi9kaXN0cmlidXRpb24udHNcblxuLyoqIE1heGltdW0gSFRUUCB2ZXJzaW9uIHRvIHN1cHBvcnQgKi9cbmV4cG9ydCBlbnVtIEh0dHBWZXJzaW9uIHtcbiAgLyoqIEhUVFAgMS4xICovXG4gIEhUVFAxXzEgPSBcImh0dHAxLjFcIixcbiAgLyoqIEhUVFAgMiAqL1xuICBIVFRQMiA9IFwiaHR0cDJcIixcbiAgLyoqIEhUVFAgMiBhbmQgSFRUUCAzICovXG4gIEhUVFAyX0FORF8zID0gXCJodHRwMmFuZDNcIixcbiAgLyoqIEhUVFAgMyAqL1xuICBIVFRQMyA9IFwiaHR0cDNcIixcbn1cblxuLyoqXG4gKiBUaGUgcHJpY2UgY2xhc3MgZGV0ZXJtaW5lcyBob3cgbWFueSBlZGdlIGxvY2F0aW9ucyBDbG91ZEZyb250IHdpbGwgdXNlIGZvciB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAqIFNlZSBodHRwczovL2F3cy5hbWF6b24uY29tL2Nsb3VkZnJvbnQvcHJpY2luZy8gZm9yIGZ1bGwgbGlzdCBvZiBzdXBwb3J0ZWQgcmVnaW9ucy5cbiAqL1xuZXhwb3J0IGVudW0gUHJpY2VDbGFzcyB7XG4gIC8qKiBVU0EsIENhbmFkYSwgRXVyb3BlLCAmIElzcmFlbCAqL1xuICBQUklDRV9DTEFTU18xMDAgPSBcIlByaWNlQ2xhc3NfMTAwXCIsXG4gIC8qKiBQUklDRV9DTEFTU18xMDAgKyBTb3V0aCBBZnJpY2EsIEtlbnlhLCBNaWRkbGUgRWFzdCwgSmFwYW4sIFNpbmdhcG9yZSwgU291dGggS29yZWEsIFRhaXdhbiwgSG9uZyBLb25nLCAmIFBoaWxpcHBpbmVzICovXG4gIFBSSUNFX0NMQVNTXzIwMCA9IFwiUHJpY2VDbGFzc18yMDBcIixcbiAgLyoqIEFsbCBsb2NhdGlvbnMgKi9cbiAgUFJJQ0VfQ0xBU1NfQUxMID0gXCJQcmljZUNsYXNzX0FsbFwiLFxufVxuXG4vKipcbiAqIFRoZSBTU0wgbWV0aG9kIENsb3VkRnJvbnQgd2lsbCB1c2UgZm9yIHlvdXIgZGlzdHJpYnV0aW9uLlxuICpcbiAqIFNlcnZlciBOYW1lIEluZGljYXRpb24gKFNOSSkgLSBpcyBhbiBleHRlbnNpb24gdG8gdGhlIFRMUyBjb21wdXRlciBuZXR3b3JraW5nIHByb3RvY29sIGJ5IHdoaWNoIGEgY2xpZW50IGluZGljYXRlc1xuICogIHdoaWNoIGhvc3RuYW1lIGl0IGlzIGF0dGVtcHRpbmcgdG8gY29ubmVjdCB0byBhdCB0aGUgc3RhcnQgb2YgdGhlIGhhbmRzaGFraW5nIHByb2Nlc3MuIFRoaXMgYWxsb3dzIGEgc2VydmVyIHRvIHByZXNlbnRcbiAqICBtdWx0aXBsZSBjZXJ0aWZpY2F0ZXMgb24gdGhlIHNhbWUgSVAgYWRkcmVzcyBhbmQgVENQIHBvcnQgbnVtYmVyIGFuZCBoZW5jZSBhbGxvd3MgbXVsdGlwbGUgc2VjdXJlIChIVFRQUykgd2Vic2l0ZXNcbiAqIChvciBhbnkgb3RoZXIgc2VydmljZSBvdmVyIFRMUykgdG8gYmUgc2VydmVkIGJ5IHRoZSBzYW1lIElQIGFkZHJlc3Mgd2l0aG91dCByZXF1aXJpbmcgYWxsIHRob3NlIHNpdGVzIHRvIHVzZSB0aGUgc2FtZSBjZXJ0aWZpY2F0ZS5cbiAqXG4gKiBDbG91ZEZyb250IGNhbiB1c2UgU05JIHRvIGhvc3QgbXVsdGlwbGUgZGlzdHJpYnV0aW9ucyBvbiB0aGUgc2FtZSBJUCAtIHdoaWNoIGEgbGFyZ2UgbWFqb3JpdHkgb2YgY2xpZW50cyB3aWxsIHN1cHBvcnQuXG4gKlxuICogSWYgeW91ciBjbGllbnRzIGNhbm5vdCBzdXBwb3J0IFNOSSBob3dldmVyIC0gQ2xvdWRGcm9udCBjYW4gdXNlIGRlZGljYXRlZCBJUHMgZm9yIHlvdXIgZGlzdHJpYnV0aW9uIC0gYnV0IHRoZXJlIGlzIGEgcHJvcmF0ZWQgbW9udGhseSBjaGFyZ2UgZm9yXG4gKiB1c2luZyB0aGlzIGZlYXR1cmUuIEJ5IGRlZmF1bHQsIHdlIHVzZSBTTkkgLSBidXQgeW91IGNhbiBvcHRpb25hbGx5IGVuYWJsZSBkZWRpY2F0ZWQgSVBzIChWSVApLlxuICpcbiAqIFNlZSB0aGUgQ2xvdWRGcm9udCBTU0wgZm9yIG1vcmUgZGV0YWlscyBhYm91dCBwcmljaW5nIDogaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9jbG91ZGZyb250L2N1c3RvbS1zc2wtZG9tYWlucy9cbiAqXG4gKi9cbmV4cG9ydCBlbnVtIFNTTE1ldGhvZCB7XG4gIFNOSSA9IFwic25pLW9ubHlcIixcbiAgVklQID0gXCJ2aXBcIixcbn1cblxuLyoqXG4gKiBUaGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCB5b3Ugd2FudCBDbG91ZEZyb250IHRvIHVzZSBmb3IgSFRUUFMgY29ubmVjdGlvbnMuXG4gKiBDbG91ZEZyb250IHNlcnZlcyB5b3VyIG9iamVjdHMgb25seSB0byBicm93c2VycyBvciBkZXZpY2VzIHRoYXQgc3VwcG9ydCBhdCBsZWFzdCB0aGUgU1NMIHZlcnNpb24gdGhhdCB5b3Ugc3BlY2lmeS5cbiAqL1xuZXhwb3J0IGVudW0gU2VjdXJpdHlQb2xpY3lQcm90b2NvbCB7XG4gIFNTTF9WMyA9IFwiU1NMdjNcIixcbiAgVExTX1YxID0gXCJUTFN2MVwiLFxuICBUTFNfVjFfMjAxNiA9IFwiVExTdjFfMjAxNlwiLFxuICBUTFNfVjFfMV8yMDE2ID0gXCJUTFN2MS4xXzIwMTZcIixcbiAgVExTX1YxXzJfMjAxOCA9IFwiVExTdjEuMl8yMDE4XCIsXG4gIFRMU19WMV8yXzIwMTkgPSBcIlRMU3YxLjJfMjAxOVwiLFxuICBUTFNfVjFfMl8yMDIxID0gXCJUTFN2MS4yXzIwMjFcIixcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjb25maWd1cmluZyBjdXN0b20gZXJyb3IgcmVzcG9uc2VzLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEVycm9yUmVzcG9uc2Uge1xuICAvKipcbiAgICogVGhlIG1pbmltdW0gYW1vdW50IG9mIHRpbWUsIGluIHNlY29uZHMsIHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byBjYWNoZSB0aGUgSFRUUCBzdGF0dXMgY29kZSBzcGVjaWZpZWQgaW4gRXJyb3JDb2RlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBkZWZhdWx0IGNhY2hpbmcgVFRMIGJlaGF2aW9yIGFwcGxpZXNcbiAgICovXG4gIHJlYWRvbmx5IHR0bD86IER1cmF0aW9uO1xuICAvKipcbiAgICogVGhlIEhUVFAgc3RhdHVzIGNvZGUgZm9yIHdoaWNoIHlvdSB3YW50IHRvIHNwZWNpZnkgYSBjdXN0b20gZXJyb3IgcGFnZSBhbmQvb3IgYSBjYWNoaW5nIGR1cmF0aW9uLlxuICAgKi9cbiAgcmVhZG9ubHkgaHR0cFN0YXR1czogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIEhUVFAgc3RhdHVzIGNvZGUgdGhhdCB5b3Ugd2FudCBDbG91ZEZyb250IHRvIHJldHVybiB0byB0aGUgdmlld2VyIGFsb25nIHdpdGggdGhlIGN1c3RvbSBlcnJvciBwYWdlLlxuICAgKlxuICAgKiBJZiB5b3Ugc3BlY2lmeSBhIHZhbHVlIGZvciBgcmVzcG9uc2VIdHRwU3RhdHVzYCwgeW91IG11c3QgYWxzbyBzcGVjaWZ5IGEgdmFsdWUgZm9yIGByZXNwb25zZVBhZ2VQYXRoYC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZXJyb3IgY29kZSB3aWxsIGJlIHJldHVybmVkIGFzIHRoZSByZXNwb25zZSBjb2RlLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzcG9uc2VIdHRwU3RhdHVzPzogbnVtYmVyO1xuICAvKipcbiAgICogVGhlIHBhdGggdG8gdGhlIGN1c3RvbSBlcnJvciBwYWdlIHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byByZXR1cm4gdG8gYSB2aWV3ZXIgd2hlbiB5b3VyIG9yaWdpbiByZXR1cm5zIHRoZVxuICAgKiBgaHR0cFN0YXR1c2AsIGZvciBleGFtcGxlLCAvNHh4LWVycm9ycy80MDMtZm9yYmlkZGVuLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCBDbG91ZEZyb250IHJlc3BvbnNlIGlzIHNob3duLlxuICAgKi9cbiAgcmVhZG9ubHkgcmVzcG9uc2VQYWdlUGF0aD86IHN0cmluZztcbn1cblxuLy8gcHJpdmF0ZSBpbnRlcmZhY2UgdG8ga2VlcCB0cmFjayBvZiBDYWNoZUJlaGF2aW9yc1xuaW50ZXJmYWNlIENhY2hlQmVoYXZpb3IgZXh0ZW5kcyBCZWhhdmlvck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIHBhdHRlcm4gKGUuZy4sIGBpbWFnZXMvKi5qcGdgKSB0aGF0IHNwZWNpZmllcyB3aGljaCByZXF1ZXN0cyB0byBhcHBseSB0aGUgYmVoYXZpb3IgdG8uXG4gICAqIFRoZXJlIG11c3QgYmUgZXhhY3RseSBvbmUgYmVoYXZpb3IgYXNzb2NpYXRlZCB3aXRoIGVhY2ggYERpc3RyaWJ1dGlvbmAgdGhhdCBoYXMgYSBwYXRoIHBhdHRlcm5cbiAgICogb2YgJyonLCB3aGljaCBhY3RzIGFzIHRoZSBjYXRjaC1hbGwgZGVmYXVsdCBiZWhhdmlvci5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGhQYXR0ZXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFZhbHVlIG9mIElEIGZvciB0aGUgb3JpZ2luIHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byByb3V0ZSByZXF1ZXN0cyB0byB3aGVuIGEgcmVxdWVzdCBtYXRjaGVzXG4gICAqIHRoZSBwYXRoIHBhdHRlcm4gZWl0aGVyIGZvciBhIGNhY2hlIGJlaGF2aW9yIG9yIGZvciB0aGUgZGVmYXVsdCBjYWNoZSBiZWhhdmlvci5cbiAgICovXG4gIHJlYWRvbmx5IHRhcmdldE9yaWdpbklkOiBzdHJpbmc7XG59XG5cbi8vIHByaXZhdGUgaW50ZXJmYWNlIHRvIGluZGV4IG9yaWdpbnMgYnkgaWRcbmludGVyZmFjZSBPcmlnaW5JbmRleCB7XG4gIG9yaWdpbjogSU9yaWdpbjtcbiAgaWQ6IHN0cmluZztcbn1cblxuLyoqXG4gKiBPcHRpb25zIGZvciBjcmVhdGluZyBhIG5ldyBiZWhhdmlvci5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBCZWhhdmlvck9wdGlvbnMgZXh0ZW5kcyBBZGRCZWhhdmlvck9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG9yaWdpbiB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gcm91dGUgcmVxdWVzdHMgdG8gd2hlbiB0aGV5IG1hdGNoIHRoaXMgYmVoYXZpb3IuXG4gICAqL1xuICByZWFkb25seSBvcmlnaW46IElPcmlnaW47XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgYWRkaW5nIGEgbmV3IGJlaGF2aW9yIHRvIGEgRGlzdHJpYnV0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFkZEJlaGF2aW9yT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBIVFRQIG1ldGhvZHMgdG8gYWxsb3cgZm9yIHRoaXMgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IEFsbG93ZWRNZXRob2RzLkFMTE9XX0dFVF9IRUFEXG4gICAqL1xuICByZWFkb25seSBhbGxvd2VkTWV0aG9kcz86IEFsbG93ZWRNZXRob2RzO1xuXG4gIC8qKlxuICAgKiBIVFRQIG1ldGhvZHMgdG8gY2FjaGUgZm9yIHRoaXMgYmVoYXZpb3IuXG4gICAqXG4gICAqIEBkZWZhdWx0IENhY2hlZE1ldGhvZHMuQ0FDSEVfR0VUX0hFQURcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlZE1ldGhvZHM/OiBDYWNoZWRNZXRob2RzO1xuXG4gIC8qKlxuICAgKiBUaGUgY2FjaGUgcG9saWN5IGZvciB0aGlzIGJlaGF2aW9yLiBUaGUgY2FjaGUgcG9saWN5IGRldGVybWluZXMgd2hhdCB2YWx1ZXMgYXJlIGluY2x1ZGVkIGluIHRoZSBjYWNoZSBrZXksXG4gICAqIGFuZCB0aGUgdGltZS10by1saXZlIChUVEwpIHZhbHVlcyBmb3IgdGhlIGNhY2hlLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9jb250cm9sbGluZy10aGUtY2FjaGUta2V5Lmh0bWwuXG4gICAqIEBkZWZhdWx0IE1hbmFnZWRDYWNoZVBvbGljeS5DQUNISU5HX09QVElNSVpFRFxuICAgKi9cbiAgcmVhZG9ubHkgY2FjaGVQb2xpY3k/OiBNYW5hZ2VkQ2FjaGVQb2xpY3k7IC8vVE9ETzogc3VwcG9ydCBjdXN0b20gY2FjaGUgcG9saWNpZXNcblxuICAvKipcbiAgICogV2hldGhlciB5b3Ugd2FudCBDbG91ZEZyb250IHRvIGF1dG9tYXRpY2FsbHkgY29tcHJlc3MgY2VydGFpbiBmaWxlcyBmb3IgdGhpcyBjYWNoZSBiZWhhdmlvci5cbiAgICogU2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25DbG91ZEZyb250L2xhdGVzdC9EZXZlbG9wZXJHdWlkZS9TZXJ2aW5nQ29tcHJlc3NlZEZpbGVzLmh0bWwjY29tcHJlc3NlZC1jb250ZW50LWNsb3VkZnJvbnQtZmlsZS10eXBlc1xuICAgKiBmb3IgZmlsZSB0eXBlcyBDbG91ZEZyb250IHdpbGwgY29tcHJlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGNvbXByZXNzPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIG9yaWdpbiByZXF1ZXN0IHBvbGljeSBmb3IgdGhpcyBiZWhhdmlvci4gVGhlIG9yaWdpbiByZXF1ZXN0IHBvbGljeSBkZXRlcm1pbmVzIHdoaWNoIHZhbHVlcyAoZS5nLiwgaGVhZGVycywgY29va2llcylcbiAgICogYXJlIGluY2x1ZGVkIGluIHJlcXVlc3RzIHRoYXQgQ2xvdWRGcm9udCBzZW5kcyB0byB0aGUgb3JpZ2luLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IG9yaWdpblJlcXVlc3RQb2xpY3k/OiBNYW5hZ2VkT3JpZ2luUmVxdWVzdFBvbGljeTsgLy9UT0RPOiBzdXBwb3J0IGN1c3RvbSBvcmlnaW4gcmVxdWVzdCBwb2xpY2llc1xuXG4gIC8qKlxuICAgKiBUaGUgcmVzcG9uc2UgaGVhZGVycyBwb2xpY3kgZm9yIHRoaXMgYmVoYXZpb3IuIFRoZSByZXNwb25zZSBoZWFkZXJzIHBvbGljeSBkZXRlcm1pbmVzIHdoaWNoIGhlYWRlcnMgYXJlIGluY2x1ZGVkIGluIHJlc3BvbnNlc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlSGVhZGVyc1BvbGljeT86XG4gICAgfCBNYW5hZ2VkUmVzcG9uc2VIZWFkZXJzUG9saWN5XG4gICAgfCBJUmVzcG9uc2VIZWFkZXJzUG9saWN5O1xuXG4gIC8qKlxuICAgKiBTZXQgdGhpcyB0byB0cnVlIHRvIGluZGljYXRlIHlvdSB3YW50IHRvIGRpc3RyaWJ1dGUgbWVkaWEgZmlsZXMgaW4gdGhlIE1pY3Jvc29mdCBTbW9vdGggU3RyZWFtaW5nIGZvcm1hdCB1c2luZyB0aGlzIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc21vb3RoU3RyZWFtaW5nPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogVGhlIHByb3RvY29sIHRoYXQgdmlld2VycyBjYW4gdXNlIHRvIGFjY2VzcyB0aGUgZmlsZXMgY29udHJvbGxlZCBieSB0aGlzIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBWaWV3ZXJQcm90b2NvbFBvbGljeS5BTExPV19BTExcbiAgICovXG4gIHJlYWRvbmx5IHZpZXdlclByb3RvY29sUG9saWN5PzogVmlld2VyUHJvdG9jb2xQb2xpY3k7XG5cbiAgLyoqXG4gICAqIFRoZSBDbG91ZEZyb250IGZ1bmN0aW9ucyB0byBpbnZva2UgYmVmb3JlIHNlcnZpbmcgdGhlIGNvbnRlbnRzLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIGZ1bmN0aW9ucyB3aWxsIGJlIGludm9rZWRcbiAgICovXG4gIHJlYWRvbmx5IGZ1bmN0aW9uQXNzb2NpYXRpb25zPzogRnVuY3Rpb25Bc3NvY2lhdGlvbltdO1xufVxuXG4vKipcbiAqIFRoZSBIVFRQIG1ldGhvZHMgdGhhdCB0aGUgQmVoYXZpb3Igd2lsbCBhY2NlcHQgcmVxdWVzdHMgb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBBbGxvd2VkTWV0aG9kcyB7XG4gIC8qKiBIRUFEIGFuZCBHRVQgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTExPV19HRVRfSEVBRCA9IG5ldyBBbGxvd2VkTWV0aG9kcyhbXCJHRVRcIiwgXCJIRUFEXCJdKTtcbiAgLyoqIEhFQUQsIEdFVCwgYW5kIE9QVElPTlMgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBBTExPV19HRVRfSEVBRF9PUFRJT05TID0gbmV3IEFsbG93ZWRNZXRob2RzKFtcbiAgICBcIkdFVFwiLFxuICAgIFwiSEVBRFwiLFxuICAgIFwiT1BUSU9OU1wiLFxuICBdKTtcbiAgLyoqIEFsbCBzdXBwb3J0ZWQgSFRUUCBtZXRob2RzICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMT1dfQUxMID0gbmV3IEFsbG93ZWRNZXRob2RzKFtcbiAgICBcIkdFVFwiLFxuICAgIFwiSEVBRFwiLFxuICAgIFwiT1BUSU9OU1wiLFxuICAgIFwiUFVUXCIsXG4gICAgXCJQQVRDSFwiLFxuICAgIFwiUE9TVFwiLFxuICAgIFwiREVMRVRFXCIsXG4gIF0pO1xuXG4gIC8qKiBIVFRQIG1ldGhvZHMgc3VwcG9ydGVkICovXG4gIHB1YmxpYyByZWFkb25seSBtZXRob2RzOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKG1ldGhvZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5tZXRob2RzID0gbWV0aG9kcztcbiAgfVxufVxuXG4vKipcbiAqIFRoZSBIVFRQIG1ldGhvZHMgdGhhdCB0aGUgQmVoYXZpb3Igd2lsbCBjYWNoZSByZXF1ZXN0cyBvbi5cbiAqL1xuZXhwb3J0IGNsYXNzIENhY2hlZE1ldGhvZHMge1xuICAvKiogSEVBRCBhbmQgR0VUICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfR0VUX0hFQUQgPSBuZXcgQ2FjaGVkTWV0aG9kcyhbXCJHRVRcIiwgXCJIRUFEXCJdKTtcbiAgLyoqIEhFQUQsIEdFVCwgYW5kIE9QVElPTlMgKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBDQUNIRV9HRVRfSEVBRF9PUFRJT05TID0gbmV3IENhY2hlZE1ldGhvZHMoW1xuICAgIFwiR0VUXCIsXG4gICAgXCJIRUFEXCIsXG4gICAgXCJPUFRJT05TXCIsXG4gIF0pO1xuXG4gIC8qKiBIVFRQIG1ldGhvZHMgc3VwcG9ydGVkICovXG4gIHB1YmxpYyByZWFkb25seSBtZXRob2RzOiBzdHJpbmdbXTtcblxuICBwcml2YXRlIGNvbnN0cnVjdG9yKG1ldGhvZHM6IHN0cmluZ1tdKSB7XG4gICAgdGhpcy5tZXRob2RzID0gbWV0aG9kcztcbiAgfVxufVxuXG4vKipcbiAqIEhvdyBIVFRQcyBzaG91bGQgYmUgaGFuZGxlZCB3aXRoIHlvdXIgZGlzdHJpYnV0aW9uLlxuICovXG5leHBvcnQgZW51bSBWaWV3ZXJQcm90b2NvbFBvbGljeSB7XG4gIC8qKiBIVFRQUyBvbmx5ICovXG4gIEhUVFBTX09OTFkgPSBcImh0dHBzLW9ubHlcIixcbiAgLyoqIFdpbGwgcmVkaXJlY3QgSFRUUCByZXF1ZXN0cyB0byBIVFRQUyAqL1xuICBSRURJUkVDVF9UT19IVFRQUyA9IFwicmVkaXJlY3QtdG8taHR0cHNcIixcbiAgLyoqIEJvdGggSFRUUCBhbmQgSFRUUFMgc3VwcG9ydGVkICovXG4gIEFMTE9XX0FMTCA9IFwiYWxsb3ctYWxsXCIsXG59XG5cbi8qKlxuICogQ2xvdWRGcm9udCBwcm92aWRlcyBhIHNldCBvZiBtYW5hZ2VkIGNhY2hlIHBvbGljaWVzIHRoYXQgeW91IGNhbiBhdHRhY2ggdG8gYW55IG9mIHlvdXIgZGlzdHJpYnV0aW9uJ3MgY2FjaGUgYmVoYXZpb3JzLlxuICogV2l0aCBhIG1hbmFnZWQgY2FjaGUgcG9saWN5LCB5b3UgZG9uJ3QgbmVlZCB0byB3cml0ZSBvciBtYWludGFpbiB5b3VyIG93biBjYWNoZSBwb2xpY3kuIFRoZSBtYW5hZ2VkIHBvbGljaWVzIHVzZSBzZXR0aW5ncyB0aGF0IGFyZSBvcHRpbWl6ZWQgZm9yIHNwZWNpZmljIHVzZSBjYXNlcy5cbiAqXG4gKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvdXNpbmctbWFuYWdlZC1jYWNoZS1wb2xpY2llcy5odG1sXG4gKiBAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjYwLjAvZG9jcy9kYXRhLXNvdXJjZXMvY2xvdWRmcm9udF9jYWNoZV9wb2xpY3kjYXdzLW1hbmFnZWQtcG9saWNpZXNcbiAqL1xuZXhwb3J0IGVudW0gTWFuYWdlZENhY2hlUG9saWN5IHtcbiAgLyoqXG4gICAqIFRoaXMgcG9saWN5IGlzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBhbiBvcmlnaW4gdGhhdCBpcyBhbiBBV1MgQW1wbGlmeSB3ZWIgYXBwLlxuICAgKi9cbiAgQU1QTElGWSA9IFwiTWFuYWdlZC1BbXBsaWZ5XCIsXG4gIC8qKlxuICAgKiBPcHRpbWl6ZSBjYWNoZSBlZmZpY2llbmN5IGJ5IG1pbmltaXppbmcgdGhlIHZhbHVlcyB0aGF0IENsb3VkRnJvbnQgaW5jbHVkZXMgaW4gdGhlIGNhY2hlIGtleS5cbiAgICogUXVlcnkgc3RyaW5ncyBhbmQgY29va2llcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBjYWNoZSBrZXksIGFuZCBvbmx5IHRoZSBub3JtYWxpemVkICdBY2NlcHQtRW5jb2RpbmcnIGhlYWRlciBpcyBpbmNsdWRlZC5cbiAgICovXG4gIENBQ0hJTkdfT1BUSU1JWkVEID0gXCJNYW5hZ2VkLUNhY2hpbmdPcHRpbWl6ZWRcIixcbiAgLyoqXG4gICAqIE9wdGltaXplIGNhY2hlIGVmZmljaWVuY3kgYnkgbWluaW1pemluZyB0aGUgdmFsdWVzIHRoYXQgQ2xvdWRGcm9udCBpbmNsdWRlcyBpbiB0aGUgY2FjaGUga2V5LlxuICAgKiBRdWVyeSBzdHJpbmdzIGFuZCBjb29raWVzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGNhY2hlIGtleSwgYW5kIG9ubHkgdGhlIG5vcm1hbGl6ZWQgJ0FjY2VwdC1FbmNvZGluZycgaGVhZGVyIGlzIGluY2x1ZGVkLlxuICAgKiBEaXNhYmxlcyBjYWNoZSBjb21wcmVzc2lvbi5cbiAgICovXG4gIENBQ0hJTkdfT1BUSU1JWkVEX0ZPUl9VTkNPTVBSRVNTRURfT0JKRUNUUyA9IFwiTWFuYWdlZC1DYWNoaW5nT3B0aW1pemVkRm9yVW5jb21wcmVzc2VkT2JqZWN0c1wiLFxuICAvKiogRGlzYWJsZXMgY2FjaGluZy4gVGhpcyBwb2xpY3kgaXMgdXNlZnVsIGZvciBkeW5hbWljIGNvbnRlbnQgYW5kIGZvciByZXF1ZXN0cyB0aGF0IGFyZSBub3QgY2FjaGVhYmxlLiAqL1xuICBDQUNISU5HX0RJU0FCTEVEID0gXCJNYW5hZ2VkLUNhY2hpbmdEaXNhYmxlZFwiLFxuICAvKiogRGVzaWduZWQgZm9yIHVzZSB3aXRoIGFuIG9yaWdpbiB0aGF0IGlzIGFuIEFXUyBFbGVtZW50YWwgTWVkaWFQYWNrYWdlIGVuZHBvaW50LiAqL1xuICBFTEVNRU5UQUxfTUVESUFfUEFDS0FHRSA9IFwiTWFuYWdlZC1FbGVtZW50YWwtTWVkaWFQYWNrYWdlXCIsXG4gIC8qKlxuICAgKiBEZXNpZ25lZCBmb3IgdXNlIHdpdGggYW4gb3JpZ2luIHRoYXQgcmV0dXJucyBDYWNoZS1Db250cm9sIEhUVFAgcmVzcG9uc2UgaGVhZGVycyBhbmQgZG9lcyBub3Qgc2VydmUgZGlmZmVyZW50IGNvbnRlbnQgYmFzZWQgb24gdmFsdWVzIHByZXNlbnQgaW4gdGhlIHF1ZXJ5IHN0cmluZy5cbiAgICovXG4gIFVTRV9PUklHSU5fQ0FDSEVfQ09OVFJPTF9IRUFERVJTID0gXCJNYW5hZ2VkLVVzZU9yaWdpbkNhY2hlQ29udHJvbEhlYWRlcnNcIixcbiAgLyoqXG4gICAqIERlc2lnbmVkIGZvciB1c2Ugd2l0aCBhbiBvcmlnaW4gdGhhdCByZXR1cm5zIENhY2hlLUNvbnRyb2wgSFRUUCByZXNwb25zZSBoZWFkZXJzIGFuZCBzZXJ2ZXMgZGlmZmVyZW50IGNvbnRlbnQgYmFzZWQgb24gdmFsdWVzIHByZXNlbnQgaW4gdGhlIHF1ZXJ5IHN0cmluZy5cbiAgICovXG4gIFVTRV9PUklHSU5fQ0FDSEVfQ09OVFJPTF9IRUFERVJTX1FVRVJZX1NUUklOR1MgPSBcIk1hbmFnZWQtVXNlT3JpZ2luQ2FjaGVDb250cm9sSGVhZGVycy1RdWVyeVN0cmluZ3NcIixcbn1cblxuLyoqXG4gKiBPcmlnaW4gUmVxdWVzdCBQb2xpY3kgY29uZmlndXJhdGlvbi5cbiAqXG4gKiBAbGluayBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvdXNpbmctbWFuYWdlZC1vcmlnaW4tcmVxdWVzdC1wb2xpY2llcy5odG1sXG4gKiBAbGluayBodHRwczovL3JlZ2lzdHJ5LnRlcnJhZm9ybS5pby9wcm92aWRlcnMvaGFzaGljb3JwL2F3cy81LjYwLjAvZG9jcy9kYXRhLXNvdXJjZXMvY2xvdWRmcm9udF9vcmlnaW5fcmVxdWVzdF9wb2xpY3kjYXdzLW1hbmFnZWQtcG9saWNpZXNcbiAqL1xuZXhwb3J0IGVudW0gTWFuYWdlZE9yaWdpblJlcXVlc3RQb2xpY3kge1xuICAvKiogVGhpcyBwb2xpY3kgaW5jbHVkZXMgb25seSB0aGUgVXNlci1BZ2VudCBhbmQgUmVmZXJlciBoZWFkZXJzLiBJdCBkb2VzbuKAmXQgaW5jbHVkZSBhbnkgcXVlcnkgc3RyaW5ncyBvciBjb29raWVzLiAqL1xuICBVU0VSX0FHRU5UX1JFRkVSRVJfSEVBREVSUyA9IFwiTWFuYWdlZC1Vc2VyQWdlbnRSZWZlcmVySGVhZGVyc1wiLFxuICAvKiogVGhpcyBwb2xpY3kgaW5jbHVkZXMgdGhlIGhlYWRlciB0aGF0IGVuYWJsZXMgY3Jvc3Mtb3JpZ2luIHJlc291cmNlIHNoYXJpbmcgKENPUlMpIHJlcXVlc3RzIHdoZW4gdGhlIG9yaWdpbiBpcyBhIGN1c3RvbSBvcmlnaW4uICovXG4gIENPUlNfQ1VTVE9NX09SSUdJTiA9IFwiTWFuYWdlZC1DT1JTLUN1c3RvbU9yaWdpblwiLFxuICAvKiogVGhpcyBwb2xpY3kgaW5jbHVkZXMgdGhlIGhlYWRlcnMgdGhhdCBlbmFibGUgY3Jvc3Mtb3JpZ2luIHJlc291cmNlIHNoYXJpbmcgKENPUlMpIHJlcXVlc3RzIHdoZW4gdGhlIG9yaWdpbiBpcyBhbiBBbWF6b24gUzMgYnVja2V0LiAqL1xuICBDT1JTX1MzX09SSUdJTiA9IFwiTWFuYWdlZC1DT1JTLVMzT3JpZ2luXCIsXG4gIC8qKiBUaGlzIHBvbGljeSBpbmNsdWRlcyBhbGwgdmFsdWVzIChxdWVyeSBzdHJpbmdzLCBoZWFkZXJzLCBhbmQgY29va2llcykgaW4gdGhlIHZpZXdlciByZXF1ZXN0LiAqL1xuICBBTExfVklFV0VSID0gXCJNYW5hZ2VkLUFsbFZpZXdlclwiLFxuICAvKiogVGhpcyBwb2xpY3kgaXMgZGVzaWduZWQgZm9yIHVzZSB3aXRoIGFuIG9yaWdpbiB0aGF0IGlzIGFuIEFXUyBFbGVtZW50YWwgTWVkaWFUYWlsb3IgZW5kcG9pbnQuICovXG4gIEVMRU1FTlRBTF9NRURJQV9UQUlMT1IgPSBcIk1hbmFnZWQtRWxlbWVudGFsLU1lZGlhVGFpbG9yLVBlcnNvbmFsaXplZE1hbmlmZXN0c1wiLFxuICAvKiogVGhpcyBwb2xpY3kgaW5jbHVkZXMgYWxsIHZhbHVlcyAoaGVhZGVycywgY29va2llcywgYW5kIHF1ZXJ5IHN0cmluZ3MpIGluIHRoZSB2aWV3ZXIgcmVxdWVzdCwgYW5kIGFsbCBDbG91ZEZyb250IGhlYWRlcnMgdGhhdCB3ZXJlIHJlbGVhc2VkIHRocm91Z2ggSnVuZSAyMDIyIChDbG91ZEZyb250IGhlYWRlcnMgcmVsZWFzZWQgYWZ0ZXIgSnVuZSAyMDIyIGFyZSBub3QgaW5jbHVkZWQpLiAqL1xuICBBTExfVklFV0VSX0FORF9DTE9VREZST05UXzIwMjIgPSBcIk1hbmFnZWQtQWxsVmlld2VyQW5kQ2xvdWRGcm9udEhlYWRlcnMtMjAyMi0wNlwiLFxuICAvKiogVGhpcyBwb2xpY3kgaW5jbHVkZXMgYWxsIHZhbHVlcyAocXVlcnkgc3RyaW5ncywgYW5kIGNvb2tpZXMpIGV4Y2VwdCB0aGUgaGVhZGVyIGluIHRoZSB2aWV3ZXIgcmVxdWVzdC4gKi9cbiAgQUxMX1ZJRVdFUl9FWENFUFRfSE9TVF9IRUFERVIgPSBcIk1hbmFnZWQtQWxsVmlld2VyRXhjZXB0SG9zdEhlYWRlclwiLFxufVxuIl19
|
|
433
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlzdHJpYnV0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lZGdlL2Rpc3RyaWJ1dGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHVJQUF1STtBQUN2SSxzREFLNkI7QUFDN0IsaUNBQWlEO0FBSWpELGdDQUFtQztBQUNuQyxvREFJMEI7QUFDMUIsNENBQXdDO0FBME14Qzs7R0FFRztBQUNILE1BQWEsWUFBYSxTQUFRLGdDQUFnQjtJQUtoRCxJQUFXLG1CQUFtQjtRQUM1QixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUNELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxtQkFBbUIsQ0FBQztJQUNsQyxDQUFDO0lBRUQsSUFBVyxVQUFVO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBVUQsWUFBWSxLQUFnQixFQUFFLElBQVksRUFBRSxLQUF3QjtRQUNsRSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztRQVJYLGFBQVEsR0FBRyxJQUFJLEtBQUssRUFBZSxDQUFDO1FBRXBDLHdCQUFtQixHQUFvQixFQUFFLENBQUM7UUFRekQsSUFBSSxLQUFLLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEIsTUFBTSxpQkFBaUIsR0FBRyxvQkFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQzlELEtBQUssQ0FBQyxXQUFXLENBQUMsY0FBYyxFQUNoQyxlQUFTLENBQUMsbUJBQW1CLENBQzlCLENBQUMsTUFBTSxDQUFDO1lBQ1QsSUFDRSxDQUFDLGFBQUssQ0FBQyxZQUFZLENBQUMsaUJBQWlCLENBQUM7Z0JBQ3RDLGlCQUFpQixLQUFLLFdBQVcsRUFDakMsQ0FBQztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUNiLG9HQUFvRyxpQkFBaUIsR0FBRyxDQUN6SCxDQUFDO1lBQ0osQ0FB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LCtDQUF1QixDQUFBO0FBQ3pCLENBQUMsRUFQVyxvQkFBb0Isb0NBQXBCLG9CQUFvQixRQU8vQjtBQUVEOzs7Ozs7R0FNRztBQUNILElBQVksa0JBNEJYO0FBNUJELFdBQVksa0JBQWtCO0lBQzVCOztPQUVHO0lBQ0gsaURBQTJCLENBQUE7SUFDM0I7OztPQUdHO0lBQ0gsb0VBQThDLENBQUE7SUFDOUM7Ozs7T0FJRztJQUNILG1IQUE2RixDQUFBO0lBQzdGLDJHQUEyRztJQUMzRyxrRUFBNEMsQ0FBQTtJQUM1QyxzRkFBc0Y7SUFDdEYsZ0ZBQTBELENBQUE7SUFDMUQ7O09BRUc7SUFDSCwrRkFBeUUsQ0FBQTtJQUN6RTs7T0FFRztJQUNILDBIQUFvRyxDQUFBO0FBQ3RHLENBQUMsRUE1Qlcsa0JBQWtCLGtDQUFsQixrQkFBa0IsUUE0QjdCO0FBRUQ7Ozs7O0dBS0c7QUFDSCxJQUFZLDBCQWVYO0FBZkQsV0FBWSwwQkFBMEI7SUFDcEMscUhBQXFIO0lBQ3JILDRGQUE4RCxDQUFBO0lBQzlELHFJQUFxSTtJQUNySSw4RUFBZ0QsQ0FBQTtJQUNoRCx5SUFBeUk7SUFDekksc0VBQXdDLENBQUE7SUFDeEMsbUdBQW1HO0lBQ25HLDhEQUFnQyxDQUFBO0lBQ2hDLG9HQUFvRztJQUNwRyw0R0FBOEUsQ0FBQTtJQUM5RSxtT0FBbU87SUFDbk8sOEdBQWdGLENBQUE7SUFDaEYsNEdBQTRHO0lBQzVHLGlHQUFtRSxDQUFBO0FBQ3JFLENBQUMsRUFmVywwQkFBMEIsMENBQTFCLDBCQUEwQixRQWVyQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hd3MvYXdzLWNkay9ibG9iLzY0YTBlMmNmNWJiMDdmNmRlYmZjNGIxNjliYjNlMTg1MmNlNjY4YWEvcGFja2FnZXMvYXdzLWNkay1saWIvYXdzLWNsb3VkZnJvbnQvbGliL2Rpc3RyaWJ1dGlvbi50c1xuaW1wb3J0IHtcbiAgY2xvdWRmcm9udERpc3RyaWJ1dGlvbixcbiAgZGF0YUF3c0Nsb3VkZnJvbnRDYWNoZVBvbGljeSxcbiAgZGF0YUF3c0Nsb3VkZnJvbnRPcmlnaW5SZXF1ZXN0UG9saWN5LFxuICBkYXRhQXdzQ2xvdWRmcm9udFJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbn0gZnJvbSBcIkBjZGt0Zi9wcm92aWRlci1hd3NcIjtcbmltcG9ydCB7IElSZXNvbHZhYmxlLCBUb2tlbiwgTGF6eSB9IGZyb20gXCJjZGt0ZlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IElDZXJ0aWZpY2F0ZSwgSU9yaWdpbiwgRnVuY3Rpb25Bc3NvY2lhdGlvbiB9IGZyb20gXCIuXCI7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gXCIuLi8uLi9kdXJhdGlvblwiO1xuaW1wb3J0IHsgQXJuRm9ybWF0IH0gZnJvbSBcIi4uL2FyblwiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5pbXBvcnQgeyBBd3NTdGFjayB9IGZyb20gXCIuLi9hd3Mtc3RhY2tcIjtcbmltcG9ydCB7XG4gIElSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG4gIE1hbmFnZWRSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG59IGZyb20gXCIuL3Jlc3BvbnNlLWhlYWRlcnMtcG9saWN5XCI7XG5cbi8vIFRPRE86IFJlLWFkZCBpbnZhbGlkYXRpb24gc3VwcG9ydFxuLy8gVE9ETzogUmUtYWRkIG9yaWdpbiBncm91cCAoZmFpbG92ZXIpIHN1cHBvcnRcbi8vIFRPRE86IFJlLWFkZCBrZXkgZ3JvdXAgc3VwcG9ydFxuLy8gVE9ETzogUmUtYWRkIFdBRiBzdXBwb3J0XG4vLyBUT0RPOiBSZS1hZGQgbG9nZ2luZyBzdXBwb3J0XG4vLyBUT0RPOiBSZS1hZGQgY3VzdG9tIGNhY2hlLCBvcmlnaW5SZXF1ZXN0IHBvbGljeSBzdXBwb3J0P1xuXG4vKipcbiAqIE91dHB1dHMgd2hpY2ggbWF5IGJlIHJlZ2lzdGVyZWQgZm9yIG91dHB1dCB2aWEgdGhlIEdyaWQuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uT3V0cHV0cyB7XG4gIC8qKlxuICAgKiBJZGVudGlmaWVyIGZvciB0aGUgZGlzdHJpYnV0aW9uLiBGb3IgZXhhbXBsZTogYEVERkRWQkQ2MzJCSERTNWAuXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDbG91ZEZyb250IFJvdXRlIDUzIHpvbmUgSUQgdGhhdCBjYW4gYmUgdXNlZCB0b1xuICAgKiByb3V0ZSBhbiBBbGlhcyBSZXNvdXJjZSBSZWNvcmQgU2V0IHRvLlxuICAgKlxuICAgKiBUaGlzIGF0dHJpYnV0ZSBpcyBzaW1wbHkgYW4gYWxpYXMgZm9yIHRoZSB6b25lIElEXG4gICAqL1xuICByZWFkb25seSBob3N0ZWRab25lSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3VycmVudCBzdGF0dXMgb2YgdGhlIGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogYERlcGxveWVkYCBpZiB0aGUgZGlzdHJpYnV0aW9uJ3MgaW5mb3JtYXRpb24gaXMgZnVsbHkgcHJvcGFnYXRlZFxuICAgKiB0aHJvdWdob3V0IHRoZSBBbWF6b24gQ2xvdWRGcm9udCBzeXN0ZW0uXG4gICAqL1xuICByZWFkb25seSBzdGF0dXM6IHN0cmluZztcblxuICAvKipcbiAgICogQVJOIGZvciB0aGUgZGlzdHJpYnV0aW9uXG4gICAqL1xuICByZWFkb25seSBhcm46IHN0cmluZztcblxuICAvKipcbiAgICogRG9tYWluIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBGb3IgZXhhbXBsZTogYGQ2MDQ3MjFmeGFhcXk5LmNsb3VkZnJvbnQubmV0YFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEltcG9ydGVkIG9yIGNyZWF0ZWQgRE5TIHpvbmUgYXR0cmlidXRlc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIElEaXN0cmlidXRpb24gZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIFN0cm9uZ2x5IHR5cGVkIG91dHB1dHNcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgZGlzdHJpYnV0aW9uT3V0cHV0czogRGlzdHJpYnV0aW9uT3V0cHV0cztcblxuICAvKipcbiAgICogRG9tYWluIG5hbWUgY29ycmVzcG9uZGluZyB0byB0aGUgZGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqIEZvciBleGFtcGxlOiBgZDYwNDcyMWZ4YWFxeTkuY2xvdWRmcm9udC5uZXRgXG4gICAqL1xuICByZWFkb25seSBkb21haW5OYW1lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENsb3VkRnJvbnQgUm91dGUgNTMgem9uZSBJRCB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICAqIHJvdXRlIGFuIEFsaWFzIFJlc291cmNlIFJlY29yZCBTZXQgdG8uXG4gICAqXG4gICAqIFRoaXMgYXR0cmlidXRlIGlzIHNpbXBseSBhbiBhbGlhcyBmb3IgdGhlIHpvbmUgSURcbiAgICovXG4gIHJlYWRvbmx5IGhvc3RlZFpvbmVJZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGEgRGlzdHJpYnV0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdHJpYnV0aW9uUHJvcHMgZXh0ZW5kcyBBd3NDb25zdHJ1Y3RQcm9wcyB7XG4gIC8qKlxuICAgKiBFeHRyYSBDTkFNRXMgKGFsdGVybmF0ZSBkb21haW4gbmFtZXMpLCBpZiBhbnksIGZvciB0aGlzIGRpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGFsaWFzZXM/OiBzdHJpbmdbXTtcblxuICAvKipcbiAgICogV2hldGhlciB0aGUgZGlzdHJpYnV0aW9uIGlzIGVuYWJsZWQgdG8gYWNjZXB0IGVuZCB1c2VyIHJlcXVlc3RzIGZvciBjb250ZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBlbmFibGVkPzogYm9vbGVhbiB8IElSZXNvbHZhYmxlO1xuXG4gIC8qKlxuICAgKiBJZiBlbmFibGVkLCB0aGUgcmVzb3VyY2Ugd2lsbCB3YWl0IGZvciB0aGUgZGlzdHJpYnV0aW9uIHN0YXR1cyB0byBjaGFuZ2VcbiAgICogZnJvbSBJblByb2dyZXNzIHRvIERlcGxveWVkLlxuICAgKlxuICAgKiBTZXR0aW5nIHRoaXMgdG9mYWxzZSB3aWxsIHNraXAgdGhlIHByb2Nlc3MuXG4gICAqXG4gICAqIEBkZWZhdWx0OiB0cnVlLlxuICAgKi9cbiAgcmVhZG9ubHkgd2FpdEZvckRlcGxveW1lbnQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgdGhlIGRpc3RyaWJ1dGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRCZWhhdmlvcjogQmVoYXZpb3JPcHRpb25zO1xuXG4gIC8qKlxuICAgKiBBZGRpdGlvbmFsIGJlaGF2aW9ycyBmb3IgdGhlIGRpc3RyaWJ1dGlvbiwgbWFwcGVkIGJ5IHRoZSBwYXRoUGF0dGVybiB0aGF0IHNwZWNpZmllcyB3aGljaCByZXF1ZXN0cyB0byBhcHBseSB0aGUgYmVoYXZpb3IgdG8uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gYWRkaXRpb25hbCBiZWhhdmlvcnMgYXJlIGFkZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYWRkaXRpb25hbEJlaGF2aW9ycz86IFJlY29yZDxzdHJpbmcsIEJlaGF2aW9yT3B0aW9ucz47XG5cbiAgLyoqXG4gICAqIEEgY2VydGlmaWNhdGUgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4gVGhlIGNlcnRpZmljYXRlIG11c3QgYmUgbG9jYXRlZCBpbiBOLiBWaXJnaW5pYSAodXMtZWFzdC0xKS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgQ2xvdWRGcm9udCB3aWxkY2FyZCBjZXJ0aWZpY2F0ZSAoKi5jbG91ZGZyb250Lm5ldCkgd2lsbCBiZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgY2VydGlmaWNhdGU/OiBJQ2VydGlmaWNhdGU7XG5cbiAgLyoqXG4gICAqIEFueSBjb21tZW50cyB5b3Ugd2FudCB0byBpbmNsdWRlIGFib3V0IHRoZSBkaXN0cmlidXRpb24uXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gY29tbWVudFxuICAgKi9cbiAgcmVhZG9ubHkgY29tbWVudD86IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIG9iamVjdCB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gcmVxdWVzdCBmcm9tIHlvdXIgb3JpZ2luIChmb3IgZXhhbXBsZSwgaW5kZXguaHRtbClcbiAgICogd2hlbiBhIHZpZXdlciByZXF1ZXN0cyB0aGUgcm9vdCBVUkwgZm9yIHlvdXIgZGlzdHJpYnV0aW9uLiBJZiBubyBkZWZhdWx0IG9iamVjdCBpcyBzZXQsIHRoZVxuICAgKiByZXF1ZXN0IGdvZXMgdG8gdGhlIG9yaWdpbidzIHJvb3QgKGUuZy4sIGV4YW1wbGUuY29tLykuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gZGVmYXVsdCByb290IG9iamVjdFxuICAgKi9cbiAgcmVhZG9ubHkgZGVmYXVsdFJvb3RPYmplY3Q/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENvbnRyb2xzIHRoZSBjb3VudHJpZXMgaW4gd2hpY2ggeW91ciBjb250ZW50IGlzIGRpc3RyaWJ1dGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vIGdlb2dyYXBoaWMgcmVzdHJpY3Rpb25zXG4gICAqL1xuICByZWFkb25seSBnZW9SZXN0cmljdGlvbj86IEdlb1Jlc3RyaWN0aW9uO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBtYXhpbXVtIEhUVFAgdmVyc2lvbiB0aGF0IHlvdSB3YW50IHZpZXdlcnMgdG8gdXNlIHRvIGNvbW11bmljYXRlIHdpdGggQ2xvdWRGcm9udC5cbiAgICpcbiAgICogRm9yIHZpZXdlcnMgYW5kIENsb3VkRnJvbnQgdG8gdXNlIEhUVFAvMiwgdmlld2VycyBtdXN0IHN1cHBvcnQgVExTIDEuMiBvciBsYXRlciwgYW5kIG11c3Qgc3VwcG9ydCBzZXJ2ZXIgbmFtZSBpZGVudGlmaWNhdGlvbiAoU05JKS5cbiAgICpcbiAgICogQGRlZmF1bHQgSHR0cFZlcnNpb24uSFRUUDJcbiAgICovXG4gIHJlYWRvbmx5IGh0dHBWZXJzaW9uPzogSHR0cFZlcnNpb247XG5cbiAgLyoqXG4gICAqIFRoZSBwcmljZSBjbGFzcyB0aGF0IGNvcnJlc3BvbmRzIHdpdGggdGhlIG1heGltdW0gcHJpY2UgdGhhdCB5b3Ugd2FudCB0byBwYXkgZm9yIENsb3VkRnJvbnQgc2VydmljZS5cbiAgICogSWYgeW91IHNwZWNpZnkgUHJpY2VDbGFzc19BbGwsIENsb3VkRnJvbnQgcmVzcG9uZHMgdG8gcmVxdWVzdHMgZm9yIHlvdXIgb2JqZWN0cyBmcm9tIGFsbCBDbG91ZEZyb250IGVkZ2UgbG9jYXRpb25zLlxuICAgKiBJZiB5b3Ugc3BlY2lmeSBhIHByaWNlIGNsYXNzIG90aGVyIHRoYW4gUHJpY2VDbGFzc19BbGwsIENsb3VkRnJvbnQgc2VydmVzIHlvdXIgb2JqZWN0cyBmcm9tIHRoZSBDbG91ZEZyb250IGVkZ2UgbG9jYXRpb25cbiAgICogdGhhdCBoYXMgdGhlIGxvd2VzdCBsYXRlbmN5IGFtb25nIHRoZSBlZGdlIGxvY2F0aW9ucyBpbiB5b3VyIHByaWNlIGNsYXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCBQcmljZUNsYXNzLlBSSUNFX0NMQVNTX0FMTFxuICAgKi9cbiAgcmVhZG9ubHkgcHJpY2VDbGFzcz86IFByaWNlQ2xhc3M7XG5cbiAgLyoqXG4gICAqIEhvdyBDbG91ZEZyb250IHNob3VsZCBoYW5kbGUgcmVxdWVzdHMgdGhhdCBhcmUgbm90IHN1Y2Nlc3NmdWwgKGUuZy4sIFBhZ2VOb3RGb3VuZCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm8gY3VzdG9tIGVycm9yIHJlc3BvbnNlcy5cbiAgICovXG4gIHJlYWRvbmx5IGVycm9yUmVzcG9uc2VzPzogRXJyb3JSZXNwb25zZVtdO1xuXG4gIC8qKlxuICAgKiBUaGUgbWluaW11bSB2ZXJzaW9uIG9mIHRoZSBTU0wgcHJvdG9jb2wgdGhhdCB5b3Ugd2FudCBDbG91ZEZyb250IHRvIHVzZSBmb3IgSFRUUFMgY29ubmVjdGlvbnMuXG4gICAqXG4gICAqIENsb3VkRnJvbnQgc2VydmVzIHlvdXIgb2JqZWN0cyBvbmx5IHRvIGJyb3dzZXJzIG9yIGRldmljZXMgdGhhdCBzdXBwb3J0IGF0XG4gICAqIGxlYXN0IHRoZSBTU0wgdmVyc2lvbiB0aGF0IHlvdSBzcGVjaWZ5LlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIFNlY3VyaXR5UG9saWN5UHJvdG9jb2wuVExTX1YxXzJfMjAyMS5cbiAgICovXG4gIHJlYWRvbmx5IG1pbmltdW1Qcm90b2NvbFZlcnNpb24/OiBTZWN1cml0eVBvbGljeVByb3RvY29sO1xuXG4gIC8qKlxuICAgKiBUaGUgU1NMIG1ldGhvZCBDbG91ZEZyb250IHdpbGwgdXNlIGZvciB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAgICpcbiAgICogU2VydmVyIE5hbWUgSW5kaWNhdGlvbiAoU05JKSAtIGlzIGFuIGV4dGVuc2lvbiB0byB0aGUgVExTIGNvbXB1dGVyIG5ldHdvcmtpbmcgcHJvdG9jb2wgYnkgd2hpY2ggYSBjbGllbnQgaW5kaWNhdGVzXG4gICAqIHdoaWNoIGhvc3RuYW1lIGl0IGlzIGF0dGVtcHRpbmcgdG8gY29ubmVjdCB0byBhdCB0aGUgc3RhcnQgb2YgdGhlIGhhbmRzaGFraW5nIHByb2Nlc3MuIFRoaXMgYWxsb3dzIGEgc2VydmVyIHRvIHByZXNlbnRcbiAgICogbXVsdGlwbGUgY2VydGlmaWNhdGVzIG9uIHRoZSBzYW1lIElQIGFkZHJlc3MgYW5kIFRDUCBwb3J0IG51bWJlciBhbmQgaGVuY2UgYWxsb3dzIG11bHRpcGxlIHNlY3VyZSAoSFRUUFMpIHdlYnNpdGVzXG4gICAqIChvciBhbnkgb3RoZXIgc2VydmljZSBvdmVyIFRMUykgdG8gYmUgc2VydmVkIGJ5IHRoZSBzYW1lIElQIGFkZHJlc3Mgd2l0aG91dCByZXF1aXJpbmcgYWxsIHRob3NlIHNpdGVzIHRvIHVzZSB0aGUgc2FtZSBjZXJ0aWZpY2F0ZS5cbiAgICpcbiAgICogQ2xvdWRGcm9udCBjYW4gdXNlIFNOSSB0byBob3N0IG11bHRpcGxlIGRpc3RyaWJ1dGlvbnMgb24gdGhlIHNhbWUgSVAgLSB3aGljaCBhIGxhcmdlIG1ham9yaXR5IG9mIGNsaWVudHMgd2lsbCBzdXBwb3J0LlxuICAgKlxuICAgKiBJZiB5b3VyIGNsaWVudHMgY2Fubm90IHN1cHBvcnQgU05JIGhvd2V2ZXIgLSBDbG91ZEZyb250IGNhbiB1c2UgZGVkaWNhdGVkIElQcyBmb3IgeW91ciBkaXN0cmlidXRpb24gLSBidXQgdGhlcmUgaXMgYSBwcm9yYXRlZCBtb250aGx5IGNoYXJnZSBmb3JcbiAgICogdXNpbmcgdGhpcyBmZWF0dXJlLiBCeSBkZWZhdWx0LCB3ZSB1c2UgU05JIC0gYnV0IHlvdSBjYW4gb3B0aW9uYWxseSBlbmFibGUgZGVkaWNhdGVkIElQcyAoVklQKS5cbiAgICpcbiAgICogU2VlIHRoZSBDbG91ZEZyb250IFNTTCBmb3IgbW9yZSBkZXRhaWxzIGFib3V0IHByaWNpbmcgOiBodHRwczovL2F3cy5hbWF6b24uY29tL2Nsb3VkZnJvbnQvY3VzdG9tLXNzbC1kb21haW5zL1xuICAgKlxuICAgKiBAZGVmYXVsdCBTU0xNZXRob2QuU05JXG4gICAqL1xuICByZWFkb25seSBzc2xTdXBwb3J0TWV0aG9kPzogU1NMTWV0aG9kO1xufVxuXG4vKipcbiAqIEFtYXpvbiBDbG91ZGZyb250IERpc3RyaWJ1dGlvblxuICovXG5leHBvcnQgY2xhc3MgRGlzdHJpYnV0aW9uIGV4dGVuZHMgQXdzQ29uc3RydWN0QmFzZSBpbXBsZW1lbnRzIElEaXN0cmlidXRpb24ge1xuICAvLyBUT0RPOiBBZGQgc3RhdGljIGZyb21Mb29rdXA/XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVzb3VyY2U6IGNsb3VkZnJvbnREaXN0cmlidXRpb24uQ2xvdWRmcm9udERpc3RyaWJ1dGlvbjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBEaXN0cmlidXRpb25PdXRwdXRzO1xuICBwdWJsaWMgZ2V0IGRpc3RyaWJ1dGlvbk91dHB1dHMoKTogRGlzdHJpYnV0aW9uT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmRpc3RyaWJ1dGlvbk91dHB1dHM7XG4gIH1cbiAgcHJpdmF0ZSByZWFkb25seSBfZG9tYWluTmFtZTogc3RyaW5nO1xuICBwdWJsaWMgZ2V0IGRvbWFpbk5hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZG9tYWluTmFtZTtcbiAgfVxuICBwdWJsaWMgcmVhZG9ubHkgaG9zdGVkWm9uZUlkOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3JpZ2lucyA9IG5ldyBBcnJheTxPcmlnaW5JbmRleD4oKTtcblxuICBwcml2YXRlIHJlYWRvbmx5IGFkZGl0aW9uYWxCZWhhdmlvcnM6IENhY2hlQmVoYXZpb3JbXSA9IFtdO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgZXJyb3JSZXNwb25zZXM6IEVycm9yUmVzcG9uc2VbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBjZXJ0aWZpY2F0ZT86IElDZXJ0aWZpY2F0ZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBuYW1lOiBzdHJpbmcsIHByb3BzOiBEaXN0cmlidXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBuYW1lLCBwcm9wcyk7XG5cbiAgICBpZiAocHJvcHMuY2VydGlmaWNhdGUpIHtcbiAgICAgIGNvbnN0IGNlcnRpZmljYXRlUmVnaW9uID0gQXdzU3RhY2sub2ZBd3NDb25zdHJ1Y3QodGhpcykuc3BsaXRBcm4oXG4gICAgICAgIHByb3BzLmNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJuLFxuICAgICAgICBBcm5Gb3JtYXQuU0xBU0hfUkVTT1VSQ0VfTkFNRSxcbiAgICAgICkucmVnaW9uO1xuICAgICAgaWYgKFxuICAgICAgICAhVG9rZW4uaXNVbnJlc29sdmVkKGNlcnRpZmljYXRlUmVnaW9uKSAmJlxuICAgICAgICBjZXJ0aWZpY2F0ZVJlZ2lvbiAhPT0gXCJ1cy1lYXN0LTFcIlxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRGlzdHJpYnV0aW9uIGNlcnRpZmljYXRlcyBtdXN0IGJlIGluIHRoZSB1cy1lYXN0LTEgcmVnaW9uIGFuZCB0aGUgY2VydGlmaWNhdGUgeW91IHByb3ZpZGVkIGlzIGluICR7Y2VydGlmaWNhdGVSZWdpb259LmAsXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIHRoaXMuY2VydGlmaWNhdGUgPSBwcm9wcy5jZXJ0aWZpY2F0ZTtcbiAgICB0aGlzLmVycm9yUmVzcG9uc2VzID0gcHJvcHMuZXJyb3JSZXNwb25zZXMgPz8gW107XG5cbiAgICBjb25zdCBkZWZhdWx0T3JpZ2luSWQgPSB0aGlzLmFkZE9yaWdpbihwcm9wcy5kZWZhdWx0QmVoYXZpb3Iub3JpZ2luKTtcbiAgICBpZiAocHJvcHMuYWRkaXRpb25hbEJlaGF2aW9ycykge1xuICAgICAgT2JqZWN0LmVudHJpZXMocHJvcHMuYWRkaXRpb25hbEJlaGF2aW9ycykuZm9yRWFjaChcbiAgICAgICAgKFtwYXRoUGF0dGVybiwgYmVoYXZpb3JPcHRpb25zXSkgPT4ge1xuICAgICAgICAgIHRoaXMuYWRkQmVoYXZpb3IoXG4gICAgICAgICAgICBwYXRoUGF0dGVybixcbiAgICAgICAgICAgIGJlaGF2aW9yT3B0aW9ucy5vcmlnaW4sXG4gICAgICAgICAgICBiZWhhdmlvck9wdGlvbnMsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSxcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gQ29tbWVudHMgaGF2ZSBhbiB1bmRvY3VtZW50ZWQgbGltaXQgb2YgMTI4IGNoYXJhY3RlcnNcbiAgICBjb25zdCB0cmltbWVkQ29tbWVudCA9XG4gICAgICBwcm9wcy5jb21tZW50ICYmIHByb3BzLmNvbW1lbnQubGVuZ3RoID4gMTI4XG4gICAgICAgID8gYCR7cHJvcHMuY29tbWVudC5zbGljZSgwLCAxMjggLSAzKX0uLi5gXG4gICAgICAgIDogcHJvcHMuY29tbWVudDtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgZW5hYmxlZDogcHJvcHMuZW5hYmxlZCA/PyB0cnVlLFxuICAgICAgICBvcmlnaW46IExhenkuYW55VmFsdWUoe1xuICAgICAgICAgIHByb2R1Y2U6ICgpID0+XG4gICAgICAgICAgICB0aGlzLl9vcmlnaW5zLm1hcCgobykgPT5cbiAgICAgICAgICAgICAgLy8gTGF6eSBwcm9kdWNlcnMgbmVlZCBhZGRpdGlvbmFsIHh4eFRvVGVycmFmb3JtIHdyYXBcbiAgICAgICAgICAgICAgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5jbG91ZGZyb250RGlzdHJpYnV0aW9uT3JpZ2luVG9UZXJyYWZvcm0oXG4gICAgICAgICAgICAgICAgby5vcmlnaW4ucmVuZGVyKG8uaWQpLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgKSxcbiAgICAgICAgfSksXG4gICAgICAgIGRlZmF1bHRDYWNoZUJlaGF2aW9yOiB0aGlzLl9yZW5kZXJEZWZhdWx0Q2FjaGVCZWhhdmlvcih7XG4gICAgICAgICAgcGF0aFBhdHRlcm46IFwiKlwiLCAvLyBpZ25vcmVkIGZvciBEZWZhdWx0IENhY2hlIEJlaGF2aW9yXG4gICAgICAgICAgdGFyZ2V0T3JpZ2luSWQ6IGRlZmF1bHRPcmlnaW5JZCxcbiAgICAgICAgICAuLi5wcm9wcy5kZWZhdWx0QmVoYXZpb3IsXG4gICAgICAgIH0pLFxuICAgICAgICBvcmRlcmVkQ2FjaGVCZWhhdmlvcjogTGF6eS5hbnlWYWx1ZShcbiAgICAgICAgICB7XG4gICAgICAgICAgICBwcm9kdWNlOiAoKSA9PlxuICAgICAgICAgICAgICB0aGlzLmFkZGl0aW9uYWxCZWhhdmlvcnMubWFwKChiKSA9PlxuICAgICAgICAgICAgICAgIC8vIExhenkgcHJvZHVjZXJzIG5lZWQgYWRkaXRpb25hbCB4eHhUb1RlcnJhZm9ybSB3cmFwXG4gICAgICAgICAgICAgICAgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5jbG91ZGZyb250RGlzdHJpYnV0aW9uT3JkZXJlZENhY2hlQmVoYXZpb3JUb1RlcnJhZm9ybShcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGF0aFBhdHRlcm46IGIucGF0aFBhdHRlcm4sXG4gICAgICAgICAgICAgICAgICAgIC4uLnRoaXMuX3JlbmRlckRlZmF1bHRDYWNoZUJlaGF2aW9yKGIpLFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgeyBvbWl0RW1wdHlBcnJheTogdHJ1ZSB9LFxuICAgICAgICApLFxuICAgICAgICBhbGlhc2VzOiBwcm9wcy5hbGlhc2VzLFxuICAgICAgICBjb21tZW50OiB0cmltbWVkQ29tbWVudCxcbiAgICAgICAgY3VzdG9tRXJyb3JSZXNwb25zZTogdGhpcy5yZW5kZXJFcnJvclJlc3BvbnNlcygpLFxuICAgICAgICBkZWZhdWx0Um9vdE9iamVjdDogcHJvcHMuZGVmYXVsdFJvb3RPYmplY3QsXG4gICAgICAgIGh0dHBWZXJzaW9uOiBwcm9wcy5odHRwVmVyc2lvbiA/PyBIdHRwVmVyc2lvbi5IVFRQMixcbiAgICAgICAgcHJpY2VDbGFzczogcHJvcHMucHJpY2VDbGFzcyA/PyB1bmRlZmluZWQsXG4gICAgICAgIHJlc3RyaWN0aW9uczogdGhpcy5yZW5kZXJSZXN0cmljdGlvbnMocHJvcHMuZ2VvUmVzdHJpY3Rpb24pLFxuICAgICAgICB2aWV3ZXJDZXJ0aWZpY2F0ZTogdGhpcy5yZW5kZXJWaWV3ZXJDZXJ0aWZpY2F0ZShcbiAgICAgICAgICB0aGlzLmNlcnRpZmljYXRlLFxuICAgICAgICAgIHByb3BzLm1pbmltdW1Qcm90b2NvbFZlcnNpb24sXG4gICAgICAgICAgcHJvcHMuc3NsU3VwcG9ydE1ldGhvZCxcbiAgICAgICAgKSxcbiAgICAgICAgd2FpdEZvckRlcGxveW1lbnQ6IHByb3BzLndhaXRGb3JEZXBsb3ltZW50LFxuICAgICAgfSxcbiAgICApO1xuXG4gICAgdGhpcy5fZG9tYWluTmFtZSA9IHRoaXMucmVzb3VyY2UuZG9tYWluTmFtZTtcbiAgICB0aGlzLmhvc3RlZFpvbmVJZCA9IHRoaXMucmVzb3VyY2UuaG9zdGVkWm9uZUlkO1xuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICBpZDogdGhpcy5yZXNvdXJjZS5pZCxcbiAgICAgIGhvc3RlZFpvbmVJZDogdGhpcy5yZXNvdXJjZS5ob3N0ZWRab25lSWQsXG4gICAgICBzdGF0dXM6IHRoaXMucmVzb3VyY2Uuc3RhdHVzLFxuICAgICAgYXJuOiB0aGlzLnJlc291cmNlLmFybixcbiAgICAgIGRvbWFpbk5hbWU6IHRoaXMuX2RvbWFpbk5hbWUsXG4gICAgfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBBZGQgYW4gT3JpZ2luIHRvIHRoaXMgRGlzdHJpYnV0aW9uLlxuICAgKlxuICAgKiBAcGFyYW0gb3JpZ2luIFRoZSBPcmlnaW4gdG8gYWRkLlxuICAgKiBAcGFyYW0gb3JpZ2luSWQgQW4gb3B0aW9uYWwgaWQgdG8gdXNlIGZvciB0aGUgT3JpZ2luIG9yIG9uZSB3aWxsIGJlIGdlbmVyYXRlZC5cbiAgICovXG4gIHB1YmxpYyBhZGRPcmlnaW4ob3JpZ2luOiBJT3JpZ2luLCBvcmlnaW5JZD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgaW5kZXhlZE9yaWdpbiA9IHRoaXMuX29yaWdpbnMuZmluZChcbiAgICAgIChvcmlnaW5JbmRleCkgPT4gb3JpZ2luSW5kZXgub3JpZ2luID09PSBvcmlnaW4sXG4gICAgKTtcbiAgICBpZiAoaW5kZXhlZE9yaWdpbikge1xuICAgICAgaWYgKG9yaWdpbklkICYmIG9yaWdpbklkICE9PSBpbmRleGVkT3JpZ2luLmlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBgRHVwbGljYXRlIG9yaWdpbiBmb3IgJHtpbmRleGVkT3JpZ2luLmlkfSBhbmQgJHtvcmlnaW5JZH0uYCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBpbmRleGVkT3JpZ2luLmlkO1xuICAgIH1cbiAgICBjb25zdCBuZXh0SW5kZXggPSB0aGlzLl9vcmlnaW5zLmxlbmd0aDtcbiAgICBjb25zdCBpZCA9IG9yaWdpbklkID8/IGBvcmlnaW4tJHtuZXh0SW5kZXh9YDtcbiAgICAvLyBlbnN1cmUgaWQgKGlmIHByb3ZpZGVkKSBpcyB1bmlxdWUgd2l0aGluIERpc3RyaWJ1dGlvblxuICAgIGlmICh0aGlzLl9vcmlnaW5zLnNvbWUoKG9yaWdpbkluZGV4KSA9PiBvcmlnaW5JbmRleC5pZCA9PT0gaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBEdXBsaWNhdGUgb3JpZ2luIGlkICR7aWR9LiBPcmlnaW5JZHMgbXVzdCBiZSB1bmlxdWUgd2l0aGluIGEgZGlzdHJpYnV0aW9uYCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuX29yaWdpbnMucHVzaCh7IG9yaWdpbiwgaWQgfSk7XG4gICAgcmV0dXJuIGlkO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJFcnJvclJlc3BvbnNlcygpOlxuICAgIHwgY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uQ3VzdG9tRXJyb3JSZXNwb25zZVtdXG4gICAgfCB1bmRlZmluZWQge1xuICAgIGlmICh0aGlzLmVycm9yUmVzcG9uc2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5lcnJvclJlc3BvbnNlcy5tYXAoKGVycm9yQ29uZmlnKSA9PiB7XG4gICAgICBpZiAoXG4gICAgICAgICFlcnJvckNvbmZpZy5yZXNwb25zZUh0dHBTdGF0dXMgJiZcbiAgICAgICAgIWVycm9yQ29uZmlnLnR0bCAmJlxuICAgICAgICAhZXJyb3JDb25maWcucmVzcG9uc2VQYWdlUGF0aFxuICAgICAgKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgICBcIkEgY3VzdG9tIGVycm9yIHJlc3BvbnNlIHdpdGhvdXQgZWl0aGVyIGEgJ3Jlc3BvbnNlSHR0cFN0YXR1cycsICd0dGwnIG9yICdyZXNwb25zZVBhZ2VQYXRoJyBpcyBub3QgdmFsaWQuXCIsXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGVycm9yQ2FjaGluZ01pblR0bDogZXJyb3JDb25maWcudHRsPy50b1NlY29uZHMoKSxcbiAgICAgICAgZXJyb3JDb2RlOiBlcnJvckNvbmZpZy5odHRwU3RhdHVzLFxuICAgICAgICByZXNwb25zZUNvZGU6IGVycm9yQ29uZmlnLnJlc3BvbnNlUGFnZVBhdGhcbiAgICAgICAgICA/IChlcnJvckNvbmZpZy5yZXNwb25zZUh0dHBTdGF0dXMgPz8gZXJyb3JDb25maWcuaHR0cFN0YXR1cylcbiAgICAgICAgICA6IGVycm9yQ29uZmlnLnJlc3BvbnNlSHR0cFN0YXR1cyxcbiAgICAgICAgcmVzcG9uc2VQYWdlUGF0aDogZXJyb3JDb25maWcucmVzcG9uc2VQYWdlUGF0aCxcbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIG5ldyBiZWhhdmlvciB0byB0aGlzIGRpc3RyaWJ1dGlvbiBmb3IgdGhlIGdpdmVuIHBhdGhQYXR0ZXJuLlxuICAgKlxuICAgKiBAcGFyYW0gcGF0aFBhdHRlcm4gdGhlIHBhdGggcGF0dGVybiAoZS5nLiwgJ2ltYWdlcy8qJykgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcmVxdWVzdHMgdG8gYXBwbHkgdGhlIGJlaGF2aW9yIHRvLlxuICAgKiBAcGFyYW0gb3JpZ2luIHRoZSBvcmlnaW4gdG8gdXNlIGZvciB0aGlzIGJlaGF2aW9yXG4gICAqIEBwYXJhbSBiZWhhdmlvck9wdGlvbnMgdGhlIG9wdGlvbnMgZm9yIHRoZSBiZWhhdmlvciBhdCB0aGlzIHBhdGguXG4gICAqL1xuICBwdWJsaWMgYWRkQmVoYXZpb3IoXG4gICAgcGF0aFBhdHRlcm46IHN0cmluZyxcbiAgICBvcmlnaW46IElPcmlnaW4sXG4gICAgYmVoYXZpb3JPcHRpb25zOiBBZGRCZWhhdmlvck9wdGlvbnMgPSB7fSxcbiAgKSB7XG4gICAgaWYgKHBhdGhQYXR0ZXJuID09PSBcIipcIikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk9ubHkgdGhlIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGhhdmUgYSBwYXRoIHBhdHRlcm4gb2YgJyonXCIsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCB0YXJnZXRPcmlnaW5JZCA9IHRoaXMuYWRkT3JpZ2luKG9yaWdpbik7XG4gICAgdGhpcy5hZGRpdGlvbmFsQmVoYXZpb3JzLnB1c2goe1xuICAgICAgcGF0aFBhdHRlcm4sXG4gICAgICBvcmlnaW4sXG4gICAgICB0YXJnZXRPcmlnaW5JZCxcbiAgICAgIC4uLmJlaGF2aW9yT3B0aW9ucyxcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGFuZCByZXR1cm5zIHRoZSBUZXJyYWZvcm0gcmVwcmVzZW50YXRpb24gb2YgdGhpcyBiZWhhdmlvci5cbiAgICogVGhpcyByZW5kZXJzIGFzIGEgXCJDbG91ZGZyb250RGlzdHJpYnV0aW9uRGVmYXVsdENhY2hlQmVoYXZpb3JcIlxuICAgKiByZWdhcmRsZXNzIGlmIHRoaXMgaXMgYSBkZWZhdWx0IGNhY2hlIGJlaGF2aW9yIG9yIG5vdCwgYXMgdGhlIHR3b1xuICAgKiBhcmUgaWRlbnRpY2FsIGV4Y2VwdCB0aGUgYHBhdGhQYXR0ZXJuYCBpcyBvbWl0dGVkIGZvciB0aGUgZGVmYXVsdFxuICAgKiBjYWNoZSBiZWhhdmlvci5cbiAgICpcbiAgICogQGludGVybmFsXG4gICAqL1xuICBwcml2YXRlIF9yZW5kZXJEZWZhdWx0Q2FjaGVCZWhhdmlvcihcbiAgICBwcm9wczogQ2FjaGVCZWhhdmlvcixcbiAgKTogY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uRGVmYXVsdENhY2hlQmVoYXZpb3Ige1xuICAgIC8vIFRPRE86IHNob3VsZCBpdCBiZSBwb3NzaWJsZSB0byBsZWF2ZSBjYWNoZVBvbGljeSBiZSB1bmRlZmluZWQ/XG4gICAgY29uc3QgbWFuYWdlZENhY2hlUG9saWN5TmFtZSA9XG4gICAgICBwcm9wcy5jYWNoZVBvbGljeSA/PyBNYW5hZ2VkQ2FjaGVQb2xpY3kuQ0FDSElOR19PUFRJTUlaRUQ7XG4gICAgY29uc3QgY2FjaGVQb2xpY3kgPSB0aGlzLmRhdGFMb29rdXAoXG4gICAgICBtYW5hZ2VkQ2FjaGVQb2xpY3lOYW1lLFxuICAgICAgZGF0YUF3c0Nsb3VkZnJvbnRDYWNoZVBvbGljeS5EYXRhQXdzQ2xvdWRmcm9udENhY2hlUG9saWN5LFxuICAgICAgeyBuYW1lOiBtYW5hZ2VkQ2FjaGVQb2xpY3lOYW1lIH0sXG4gICAgKTtcbiAgICBjb25zdCBvcmlnaW5SZXF1ZXN0UG9saWN5ID0gdGhpcy5kYXRhTG9va3VwKFxuICAgICAgcHJvcHMub3JpZ2luUmVxdWVzdFBvbGljeSxcbiAgICAgIGRhdGFBd3NDbG91ZGZyb250T3JpZ2luUmVxdWVzdFBvbGljeS5EYXRhQXdzQ2xvdWRmcm9udE9yaWdpblJlcXVlc3RQb2xpY3ksXG4gICAgICB7IG5hbWU6IHByb3BzLm9yaWdpblJlcXVlc3RQb2xpY3kgfSxcbiAgICApO1xuICAgIGxldCByZXNwb25zZUhlYWRlcnNQb2xpY3lJZDogc3RyaW5nIHwgdW5kZWZpbmVkO1xuICAgIGlmICh0eXBlb2YgcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5ID09IFwic3RyaW5nXCIpIHtcbiAgICAgIGNvbnN0IG1hbmFnZWRQb2xpY3kgPSB0aGlzLmRhdGFMb29rdXAoXG4gICAgICAgIHByb3BzLnJlc3BvbnNlSGVhZGVyc1BvbGljeSxcbiAgICAgICAgZGF0YUF3c0Nsb3VkZnJvbnRSZXNwb25zZUhlYWRlcnNQb2xpY3kuRGF0YUF3c0Nsb3VkZnJvbnRSZXNwb25zZUhlYWRlcnNQb2xpY3ksXG4gICAgICAgIHsgbmFtZTogcHJvcHMucmVzcG9uc2VIZWFkZXJzUG9saWN5IH0sXG4gICAgICApO1xuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5SWQgPSBtYW5hZ2VkUG9saWN5Py5pZDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5SWQgPVxuICAgICAgICBwcm9wcy5yZXNwb25zZUhlYWRlcnNQb2xpY3k/LnJlc3BvbnNlSGVhZGVyc1BvbGljeUlkO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0YXJnZXRPcmlnaW5JZDogcHJvcHMudGFyZ2V0T3JpZ2luSWQsXG4gICAgICBhbGxvd2VkTWV0aG9kczpcbiAgICAgICAgcHJvcHMuYWxsb3dlZE1ldGhvZHM/Lm1ldGhvZHMgPz8gQWxsb3dlZE1ldGhvZHMuQUxMT1dfR0VUX0hFQUQubWV0aG9kcyxcbiAgICAgIGNhY2hlZE1ldGhvZHM6XG4gICAgICAgIHByb3BzLmNhY2hlZE1ldGhvZHM/Lm1ldGhvZHMgPz8gQ2FjaGVkTWV0aG9kcy5DQUNIRV9HRVRfSEVBRC5tZXRob2RzLFxuICAgICAgY2FjaGVQb2xpY3lJZDogY2FjaGVQb2xpY3k/LmlkLFxuICAgICAgY29tcHJlc3M6IHByb3BzLmNvbXByZXNzID8/IHRydWUsXG4gICAgICBvcmlnaW5SZXF1ZXN0UG9saWN5SWQ6IG9yaWdpblJlcXVlc3RQb2xpY3k/LmlkLFxuICAgICAgcmVzcG9uc2VIZWFkZXJzUG9saWN5SWQsXG4gICAgICBzbW9vdGhTdHJlYW1pbmc6IHByb3BzLnNtb290aFN0cmVhbWluZyxcbiAgICAgIHZpZXdlclByb3RvY29sUG9saWN5OlxuICAgICAgICBwcm9wcy52aWV3ZXJQcm90b2NvbFBvbGljeSA/PyBWaWV3ZXJQcm90b2NvbFBvbGljeS5BTExPV19BTEwsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgcmVuZGVyUmVzdHJpY3Rpb25zKGdlb1Jlc3RyaWN0aW9uPzogR2VvUmVzdHJpY3Rpb24pIHtcbiAgICByZXR1cm4gZ2VvUmVzdHJpY3Rpb25cbiAgICAgID8ge1xuICAgICAgICAgIGdlb1Jlc3RyaWN0aW9uOiB7XG4gICAgICAgICAgICByZXN0cmljdGlvblR5cGU6IGdlb1Jlc3RyaWN0aW9uLnJlc3RyaWN0aW9uVHlwZSxcbiAgICAgICAgICAgIGxvY2F0aW9uczpcbiAgICAgICAgICAgICAgZ2VvUmVzdHJpY3Rpb24ucmVzdHJpY3Rpb25UeXBlICE9PSBHZW9SZXN0cmljdGlvblR5cGUuTk9ORVxuICAgICAgICAgICAgICAgID8gdGhpcy52YWxpZGF0ZUxvY2F0aW9ucyhnZW9SZXN0cmljdGlvbi5sb2NhdGlvbnMpXG4gICAgICAgICAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICAgICAgfSxcbiAgICAgICAgfVxuICAgICAgOiB7XG4gICAgICAgICAgZ2VvUmVzdHJpY3Rpb246IHtcbiAgICAgICAgICAgIHJlc3RyaWN0aW9uVHlwZTogR2VvUmVzdHJpY3Rpb25UeXBlLk5PTkUsXG4gICAgICAgICAgfSxcbiAgICAgICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgdmFsaWRhdGVMb2NhdGlvbnMobG9jYXRpb25zOiBzdHJpbmdbXSkge1xuICAgIGNvbnN0IExPQ0FUSU9OX1JFR0VYID0gL15bQS1aXXsyfSQvO1xuICAgIGlmIChsb2NhdGlvbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJTaG91bGQgcHJvdmlkZSBhdCBsZWFzdCAxIGxvY2F0aW9uXCIpO1xuICAgIH1cbiAgICBsb2NhdGlvbnMuZm9yRWFjaCgobG9jYXRpb24pID0+IHtcbiAgICAgIGlmICghTE9DQVRJT05fUkVHRVgudGVzdChsb2NhdGlvbikpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAgIGBJbnZhbGlkIGxvY2F0aW9uIGZvcm1hdCBmb3IgbG9jYXRpb246ICR7bG9jYXRpb259LCBsb2NhdGlvbiBzaG91bGQgYmUgdHdvLWxldHRlciBhbmQgdXBwZXJjYXNlIGNvdW50cnkgSVNPIDMxNjYtMS1hbHBoYS0yIGNvZGVgLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBsb2NhdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHJlbmRlclZpZXdlckNlcnRpZmljYXRlKFxuICAgIGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlLFxuICAgIG1pbmltdW1Qcm90b2NvbFZlcnNpb25Qcm9wPzogU2VjdXJpdHlQb2xpY3lQcm90b2NvbCxcbiAgICBzc2xTdXBwb3J0TWV0aG9kUHJvcD86IFNTTE1ldGhvZCxcbiAgKTogY2xvdWRmcm9udERpc3RyaWJ1dGlvbi5DbG91ZGZyb250RGlzdHJpYnV0aW9uVmlld2VyQ2VydGlmaWNhdGUge1xuICAgIGNvbnN0IG1pbmltdW1Qcm90b2NvbFZlcnNpb24gPVxuICAgICAgbWluaW11bVByb3RvY29sVmVyc2lvblByb3AgPz8gU2VjdXJpdHlQb2xpY3lQcm90b2NvbC5UTFNfVjFfMl8yMDIxO1xuICAgIGNvbnN0IHNzbFN1cHBvcnRNZXRob2QgPSBzc2xTdXBwb3J0TWV0aG9kUHJvcCA/PyBTU0xNZXRob2QuU05JO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLihjZXJ0aWZpY2F0ZVxuICAgICAgICA/IHsgYWNtQ2VydGlmaWNhdGVBcm46IGNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJuIH1cbiAgICAgICAgOiB7IGNsb3VkZnJvbnREZWZhdWx0Q2VydGlmaWNhdGU6IHRydWUgfSksXG4gICAgICBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uOiBtaW5pbXVtUHJvdG9jb2xWZXJzaW9uLFxuICAgICAgc3NsU3VwcG9ydE1ldGhvZDogc3NsU3VwcG9ydE1ldGhvZCxcbiAgICB9O1xuICB9XG5cbiAgLyoqXG4gICAqIENvbmRpdGlvbmFsbHkgbG9va3VwIG9yIGNyZWF0ZSBhIGNoaWxkIGJhc2VkIG9uIHRoZSBpZCBwcm92aWRlZC5cbiAgICogSWYgdGhlIGlkIGlzIHVuZGVmaW5lZCwgaXQgd2lsbCByZXR1cm4gdW5kZWZpbmVkLlxuICAgKlxuICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIHRoZSBjaGlsZCB0byBsb29rdXAgb3IgY3JlYXRlXG4gICAqIEBwYXJhbSBjb25zdHJ1Y3RUeXBlIHRoZSB0eXBlIG9mIHRoZSBjaGlsZCB0byBjcmVhdGVcbiAgICogQHBhcmFtIGNvbmZpZyB0aGUgY29uZmlndXJhdGlvbiB0byBwYXNzIHRvIHRoZSBjaGlsZFxuICAgKi9cbiAgcHJpdmF0ZSBkYXRhTG9va3VwPFRDb25zdHJ1Y3QgZXh0ZW5kcyBDb25zdHJ1Y3Q+KFxuICAgIGlkOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gICAgY29uc3RydWN0VHlwZTogbmV3IChcbiAgICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgICBpZElucHV0OiBzdHJpbmcsXG4gICAgICBjb25maWc6IGFueSxcbiAgICApID0+IFRDb25zdHJ1Y3QsXG4gICAgY29uZmlnPzogYW55LFxuICApOiBUQ29uc3RydWN0IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIWlkKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBsZXQgY2hpbGQgPSB0aGlzLm5vZGUudHJ5RmluZENoaWxkKGlkKSBhcyBUQ29uc3RydWN0IHwgdW5kZWZpbmVkO1xuICAgIGlmICghY2hpbGQpIHtcbiAgICAgIGNoaWxkID0gbmV3IGNvbnN0cnVjdFR5cGUodGhpcywgaWQsIGNvbmZpZyk7XG4gICAgfVxuICAgIHJldHVybiBjaGlsZDtcbiAgfVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEdlb1Jlc3RyaWN0aW9uIHtcbiAgcmVhZG9ubHkgbG9jYXRpb25zOiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgcmVzdHJpY3Rpb25UeXBlOiBHZW9SZXN0cmljdGlvblR5cGU7XG59XG5cbmV4cG9ydCBlbnVtIEdlb1Jlc3RyaWN0aW9uVHlwZSB7XG4gIE5PTkUgPSBcIm5vbmVcIixcbiAgV0hJVEVMSVNUID0gXCJ3aGl0ZWxpc3RcIixcbiAgQkxBQ0tMSVNUID0gXCJibGFja2xpc3RcIixcbn1cblxuLy8gcmVmOiBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvYmxvYi92Mi4xNTYuMC9wYWNrYWdlcy9hd3MtY2RrLWxpYi9hd3MtY2xvdWRmcm9udC9saWIvZGlzdHJpYnV0aW9uLnRzXG5cbi8qKiBNYXhpbXVtIEhUVFAgdmVyc2lvbiB0byBzdXBwb3J0ICovXG5leHBvcnQgZW51bSBIdHRwVmVyc2lvbiB7XG4gIC8qKiBIVFRQIDEuMSAqL1xuICBIVFRQMV8xID0gXCJodHRwMS4xXCIsXG4gIC8qKiBIVFRQIDIgKi9cbiAgSFRUUDIgPSBcImh0dHAyXCIsXG4gIC8qKiBIVFRQIDIgYW5kIEhUVFAgMyAqL1xuICBIVFRQMl9BTkRfMyA9IFwiaHR0cDJhbmQzXCIsXG4gIC8qKiBIVFRQIDMgKi9cbiAgSFRUUDMgPSBcImh0dHAzXCIsXG59XG5cbi8qKlxuICogVGhlIHByaWNlIGNsYXNzIGRldGVybWluZXMgaG93IG1hbnkgZWRnZSBsb2NhdGlvbnMgQ2xvdWRGcm9udCB3aWxsIHVzZSBmb3IgeW91ciBkaXN0cmlidXRpb24uXG4gKiBTZWUgaHR0cHM6Ly9hd3MuYW1hem9uLmNvbS9jbG91ZGZyb250L3ByaWNpbmcvIGZvciBmdWxsIGxpc3Qgb2Ygc3VwcG9ydGVkIHJlZ2lvbnMuXG4gKi9cbmV4cG9ydCBlbnVtIFByaWNlQ2xhc3Mge1xuICAvKiogVVNBLCBDYW5hZGEsIEV1cm9wZSwgJiBJc3JhZWwgKi9cbiAgUFJJQ0VfQ0xBU1NfMTAwID0gXCJQcmljZUNsYXNzXzEwMFwiLFxuICAvKiogUFJJQ0VfQ0xBU1NfMTAwICsgU291dGggQWZyaWNhLCBLZW55YSwgTWlkZGxlIEVhc3QsIEphcGFuLCBTaW5nYXBvcmUsIFNvdXRoIEtvcmVhLCBUYWl3YW4sIEhvbmcgS29uZywgJiBQaGlsaXBwaW5lcyAqL1xuICBQUklDRV9DTEFTU18yMDAgPSBcIlByaWNlQ2xhc3NfMjAwXCIsXG4gIC8qKiBBbGwgbG9jYXRpb25zICovXG4gIFBSSUNFX0NMQVNTX0FMTCA9IFwiUHJpY2VDbGFzc19BbGxcIixcbn1cblxuLyoqXG4gKiBUaGUgU1NMIG1ldGhvZCBDbG91ZEZyb250IHdpbGwgdXNlIGZvciB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAqXG4gKiBTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uIChTTkkpIC0gaXMgYW4gZXh0ZW5zaW9uIHRvIHRoZSBUTFMgY29tcHV0ZXIgbmV0d29ya2luZyBwcm90b2NvbCBieSB3aGljaCBhIGNsaWVudCBpbmRpY2F0ZXNcbiAqICB3aGljaCBob3N0bmFtZSBpdCBpcyBhdHRlbXB0aW5nIHRvIGNvbm5lY3QgdG8gYXQgdGhlIHN0YXJ0IG9mIHRoZSBoYW5kc2hha2luZyBwcm9jZXNzLiBUaGlzIGFsbG93cyBhIHNlcnZlciB0byBwcmVzZW50XG4gKiAgbXVsdGlwbGUgY2VydGlmaWNhdGVzIG9uIHRoZSBzYW1lIElQIGFkZHJlc3MgYW5kIFRDUCBwb3J0IG51bWJlciBhbmQgaGVuY2UgYWxsb3dzIG11bHRpcGxlIHNlY3VyZSAoSFRUUFMpIHdlYnNpdGVzXG4gKiAob3IgYW55IG90aGVyIHNlcnZpY2Ugb3ZlciBUTFMpIHRvIGJlIHNlcnZlZCBieSB0aGUgc2FtZSBJUCBhZGRyZXNzIHdpdGhvdXQgcmVxdWlyaW5nIGFsbCB0aG9zZSBzaXRlcyB0byB1c2UgdGhlIHNhbWUgY2VydGlmaWNhdGUuXG4gKlxuICogQ2xvdWRGcm9udCBjYW4gdXNlIFNOSSB0byBob3N0IG11bHRpcGxlIGRpc3RyaWJ1dGlvbnMgb24gdGhlIHNhbWUgSVAgLSB3aGljaCBhIGxhcmdlIG1ham9yaXR5IG9mIGNsaWVudHMgd2lsbCBzdXBwb3J0LlxuICpcbiAqIElmIHlvdXIgY2xpZW50cyBjYW5ub3Qgc3VwcG9ydCBTTkkgaG93ZXZlciAtIENsb3VkRnJvbnQgY2FuIHVzZSBkZWRpY2F0ZWQgSVBzIGZvciB5b3VyIGRpc3RyaWJ1dGlvbiAtIGJ1dCB0aGVyZSBpcyBhIHByb3JhdGVkIG1vbnRobHkgY2hhcmdlIGZvclxuICogdXNpbmcgdGhpcyBmZWF0dXJlLiBCeSBkZWZhdWx0LCB3ZSB1c2UgU05JIC0gYnV0IHlvdSBjYW4gb3B0aW9uYWxseSBlbmFibGUgZGVkaWNhdGVkIElQcyAoVklQKS5cbiAqXG4gKiBTZWUgdGhlIENsb3VkRnJvbnQgU1NMIGZvciBtb3JlIGRldGFpbHMgYWJvdXQgcHJpY2luZyA6IGh0dHBzOi8vYXdzLmFtYXpvbi5jb20vY2xvdWRmcm9udC9jdXN0b20tc3NsLWRvbWFpbnMvXG4gKlxuICovXG5leHBvcnQgZW51bSBTU0xNZXRob2Qge1xuICBTTkkgPSBcInNuaS1vbmx5XCIsXG4gIFZJUCA9IFwidmlwXCIsXG59XG5cbi8qKlxuICogVGhlIG1pbmltdW0gdmVyc2lvbiBvZiB0aGUgU1NMIHByb3RvY29sIHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byB1c2UgZm9yIEhUVFBTIGNvbm5lY3Rpb25zLlxuICogQ2xvdWRGcm9udCBzZXJ2ZXMgeW91ciBvYmplY3RzIG9ubHkgdG8gYnJvd3NlcnMgb3IgZGV2aWNlcyB0aGF0IHN1cHBvcnQgYXQgbGVhc3QgdGhlIFNTTCB2ZXJzaW9uIHRoYXQgeW91IHNwZWNpZnkuXG4gKi9cbmV4cG9ydCBlbnVtIFNlY3VyaXR5UG9saWN5UHJvdG9jb2wge1xuICBTU0xfVjMgPSBcIlNTTHYzXCIsXG4gIFRMU19WMSA9IFwiVExTdjFcIixcbiAgVExTX1YxXzIwMTYgPSBcIlRMU3YxXzIwMTZcIixcbiAgVExTX1YxXzFfMjAxNiA9IFwiVExTdjEuMV8yMDE2XCIsXG4gIFRMU19WMV8yXzIwMTggPSBcIlRMU3YxLjJfMjAxOFwiLFxuICBUTFNfVjFfMl8yMDE5ID0gXCJUTFN2MS4yXzIwMTlcIixcbiAgVExTX1YxXzJfMjAyMSA9IFwiVExTdjEuMl8yMDIxXCIsXG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY29uZmlndXJpbmcgY3VzdG9tIGVycm9yIHJlc3BvbnNlcy5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFcnJvclJlc3BvbnNlIHtcbiAgLyoqXG4gICAqIFRoZSBtaW5pbXVtIGFtb3VudCBvZiB0aW1lLCBpbiBzZWNvbmRzLCB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gY2FjaGUgdGhlIEhUVFAgc3RhdHVzIGNvZGUgc3BlY2lmaWVkIGluIEVycm9yQ29kZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgZGVmYXVsdCBjYWNoaW5nIFRUTCBiZWhhdmlvciBhcHBsaWVzXG4gICAqL1xuICByZWFkb25seSB0dGw/OiBEdXJhdGlvbjtcbiAgLyoqXG4gICAqIFRoZSBIVFRQIHN0YXR1cyBjb2RlIGZvciB3aGljaCB5b3Ugd2FudCB0byBzcGVjaWZ5IGEgY3VzdG9tIGVycm9yIHBhZ2UgYW5kL29yIGEgY2FjaGluZyBkdXJhdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGh0dHBTdGF0dXM6IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBIVFRQIHN0YXR1cyBjb2RlIHRoYXQgeW91IHdhbnQgQ2xvdWRGcm9udCB0byByZXR1cm4gdG8gdGhlIHZpZXdlciBhbG9uZyB3aXRoIHRoZSBjdXN0b20gZXJyb3IgcGFnZS5cbiAgICpcbiAgICogSWYgeW91IHNwZWNpZnkgYSB2YWx1ZSBmb3IgYHJlc3BvbnNlSHR0cFN0YXR1c2AsIHlvdSBtdXN0IGFsc28gc3BlY2lmeSBhIHZhbHVlIGZvciBgcmVzcG9uc2VQYWdlUGF0aGAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGVycm9yIGNvZGUgd2lsbCBiZSByZXR1cm5lZCBhcyB0aGUgcmVzcG9uc2UgY29kZS5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlSHR0cFN0YXR1cz86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBwYXRoIHRvIHRoZSBjdXN0b20gZXJyb3IgcGFnZSB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gcmV0dXJuIHRvIGEgdmlld2VyIHdoZW4geW91ciBvcmlnaW4gcmV0dXJucyB0aGVcbiAgICogYGh0dHBTdGF0dXNgLCBmb3IgZXhhbXBsZSwgLzR4eC1lcnJvcnMvNDAzLWZvcmJpZGRlbi5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdGhlIGRlZmF1bHQgQ2xvdWRGcm9udCByZXNwb25zZSBpcyBzaG93bi5cbiAgICovXG4gIHJlYWRvbmx5IHJlc3BvbnNlUGFnZVBhdGg/OiBzdHJpbmc7XG59XG5cbi8vIHByaXZhdGUgaW50ZXJmYWNlIHRvIGtlZXAgdHJhY2sgb2YgQ2FjaGVCZWhhdmlvcnNcbmludGVyZmFjZSBDYWNoZUJlaGF2aW9yIGV4dGVuZHMgQmVoYXZpb3JPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBwYXR0ZXJuIChlLmcuLCBgaW1hZ2VzLyouanBnYCkgdGhhdCBzcGVjaWZpZXMgd2hpY2ggcmVxdWVzdHMgdG8gYXBwbHkgdGhlIGJlaGF2aW9yIHRvLlxuICAgKiBUaGVyZSBtdXN0IGJlIGV4YWN0bHkgb25lIGJlaGF2aW9yIGFzc29jaWF0ZWQgd2l0aCBlYWNoIGBEaXN0cmlidXRpb25gIHRoYXQgaGFzIGEgcGF0aCBwYXR0ZXJuXG4gICAqIG9mICcqJywgd2hpY2ggYWN0cyBhcyB0aGUgY2F0Y2gtYWxsIGRlZmF1bHQgYmVoYXZpb3IuXG4gICAqL1xuICByZWFkb25seSBwYXRoUGF0dGVybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBWYWx1ZSBvZiBJRCBmb3IgdGhlIG9yaWdpbiB0aGF0IHlvdSB3YW50IENsb3VkRnJvbnQgdG8gcm91dGUgcmVxdWVzdHMgdG8gd2hlbiBhIHJlcXVlc3QgbWF0Y2hlc1xuICAgKiB0aGUgcGF0aCBwYXR0ZXJuIGVpdGhlciBmb3IgYSBjYWNoZSBiZWhhdmlvciBvciBmb3IgdGhlIGRlZmF1bHQgY2FjaGUgYmVoYXZpb3IuXG4gICAqL1xuICByZWFkb25seSB0YXJnZXRPcmlnaW5JZDogc3RyaW5nO1xufVxuXG4vLyBwcml2YXRlIGludGVyZmFjZSB0byBpbmRleCBvcmlnaW5zIGJ5IGlkXG5pbnRlcmZhY2UgT3JpZ2luSW5kZXgge1xuICBvcmlnaW46IElPcmlnaW47XG4gIGlkOiBzdHJpbmc7XG59XG5cbi8qKlxuICogT3B0aW9ucyBmb3IgY3JlYXRpbmcgYSBuZXcgYmVoYXZpb3IuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQmVoYXZpb3JPcHRpb25zIGV4dGVuZHMgQWRkQmVoYXZpb3JPcHRpb25zIHtcbiAgLyoqXG4gICAqIFRoZSBvcmlnaW4gdGhhdCB5b3Ugd2FudCBDbG91ZEZyb250IHRvIHJvdXRlIHJlcXVlc3RzIHRvIHdoZW4gdGhleSBtYXRjaCB0aGlzIGJlaGF2aW9yLlxuICAgKi9cbiAgcmVhZG9ubHkgb3JpZ2luOiBJT3JpZ2luO1xufVxuXG4vKipcbiAqIE9wdGlvbnMgZm9yIGFkZGluZyBhIG5ldyBiZWhhdmlvciB0byBhIERpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBBZGRCZWhhdmlvck9wdGlvbnMge1xuICAvKipcbiAgICogSFRUUCBtZXRob2RzIHRvIGFsbG93IGZvciB0aGlzIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBbGxvd2VkTWV0aG9kcy5BTExPV19HRVRfSEVBRFxuICAgKi9cbiAgcmVhZG9ubHkgYWxsb3dlZE1ldGhvZHM/OiBBbGxvd2VkTWV0aG9kcztcblxuICAvKipcbiAgICogSFRUUCBtZXRob2RzIHRvIGNhY2hlIGZvciB0aGlzIGJlaGF2aW9yLlxuICAgKlxuICAgKiBAZGVmYXVsdCBDYWNoZWRNZXRob2RzLkNBQ0hFX0dFVF9IRUFEXG4gICAqL1xuICByZWFkb25seSBjYWNoZWRNZXRob2RzPzogQ2FjaGVkTWV0aG9kcztcblxuICAvKipcbiAgICogVGhlIGNhY2hlIHBvbGljeSBmb3IgdGhpcyBiZWhhdmlvci4gVGhlIGNhY2hlIHBvbGljeSBkZXRlcm1pbmVzIHdoYXQgdmFsdWVzIGFyZSBpbmNsdWRlZCBpbiB0aGUgY2FjaGUga2V5LFxuICAgKiBhbmQgdGhlIHRpbWUtdG8tbGl2ZSAoVFRMKSB2YWx1ZXMgZm9yIHRoZSBjYWNoZS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvY29udHJvbGxpbmctdGhlLWNhY2hlLWtleS5odG1sLlxuICAgKiBAZGVmYXVsdCBNYW5hZ2VkQ2FjaGVQb2xpY3kuQ0FDSElOR19PUFRJTUlaRURcbiAgICovXG4gIHJlYWRvbmx5IGNhY2hlUG9saWN5PzogTWFuYWdlZENhY2hlUG9saWN5OyAvL1RPRE86IHN1cHBvcnQgY3VzdG9tIGNhY2hlIHBvbGljaWVzXG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgeW91IHdhbnQgQ2xvdWRGcm9udCB0byBhdXRvbWF0aWNhbGx5IGNvbXByZXNzIGNlcnRhaW4gZmlsZXMgZm9yIHRoaXMgY2FjaGUgYmVoYXZpb3IuXG4gICAqIFNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQW1hem9uQ2xvdWRGcm9udC9sYXRlc3QvRGV2ZWxvcGVyR3VpZGUvU2VydmluZ0NvbXByZXNzZWRGaWxlcy5odG1sI2NvbXByZXNzZWQtY29udGVudC1jbG91ZGZyb250LWZpbGUtdHlwZXNcbiAgICogZm9yIGZpbGUgdHlwZXMgQ2xvdWRGcm9udCB3aWxsIGNvbXByZXNzLlxuICAgKlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICByZWFkb25seSBjb21wcmVzcz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBvcmlnaW4gcmVxdWVzdCBwb2xpY3kgZm9yIHRoaXMgYmVoYXZpb3IuIFRoZSBvcmlnaW4gcmVxdWVzdCBwb2xpY3kgZGV0ZXJtaW5lcyB3aGljaCB2YWx1ZXMgKGUuZy4sIGhlYWRlcnMsIGNvb2tpZXMpXG4gICAqIGFyZSBpbmNsdWRlZCBpbiByZXF1ZXN0cyB0aGF0IENsb3VkRnJvbnQgc2VuZHMgdG8gdGhlIG9yaWdpbi5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBvcmlnaW5SZXF1ZXN0UG9saWN5PzogTWFuYWdlZE9yaWdpblJlcXVlc3RQb2xpY3k7IC8vVE9ETzogc3VwcG9ydCBjdXN0b20gb3JpZ2luIHJlcXVlc3QgcG9saWNpZXNcblxuICAvKipcbiAgICogVGhlIHJlc3BvbnNlIGhlYWRlcnMgcG9saWN5IGZvciB0aGlzIGJlaGF2aW9yLiBUaGUgcmVzcG9uc2UgaGVhZGVycyBwb2xpY3kgZGV0ZXJtaW5lcyB3aGljaCBoZWFkZXJzIGFyZSBpbmNsdWRlZCBpbiByZXNwb25zZXNcbiAgICpcbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSByZXNwb25zZUhlYWRlcnNQb2xpY3k/OlxuICAgIHwgTWFuYWdlZFJlc3BvbnNlSGVhZGVyc1BvbGljeVxuICAgIHwgSVJlc3BvbnNlSGVhZGVyc1BvbGljeTtcblxuICAvKipcbiAgICogU2V0IHRoaXMgdG8gdHJ1ZSB0byBpbmRpY2F0ZSB5b3Ugd2FudCB0byBkaXN0cmlidXRlIG1lZGlhIGZpbGVzIGluIHRoZSBNaWNyb3NvZnQgU21vb3RoIFN0cmVhbWluZyBmb3JtYXQgdXNpbmcgdGhpcyBiZWhhdmlvci5cbiAgICpcbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIHJlYWRvbmx5IHNtb290aFN0cmVhbWluZz86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFRoZSBwcm90b2NvbCB0aGF0IHZpZXdlcnMgY2FuIHVzZSB0byBhY2Nlc3MgdGhlIGZpbGVzIGNvbnRyb2xsZWQgYnkgdGhpcyBiZWhhdmlvci5cbiAgICpcbiAgICogQGRlZmF1bHQgVmlld2VyUHJvdG9jb2xQb2xpY3kuQUxMT1dfQUxMXG4gICAqL1xuICByZWFkb25seSB2aWV3ZXJQcm90b2NvbFBvbGljeT86IFZpZXdlclByb3RvY29sUG9saWN5O1xuXG4gIC8qKlxuICAgKiBUaGUgQ2xvdWRGcm9udCBmdW5jdGlvbnMgdG8gaW52b2tlIGJlZm9yZSBzZXJ2aW5nIHRoZSBjb250ZW50cy5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyBmdW5jdGlvbnMgd2lsbCBiZSBpbnZva2VkXG4gICAqL1xuICByZWFkb25seSBmdW5jdGlvbkFzc29jaWF0aW9ucz86IEZ1bmN0aW9uQXNzb2NpYXRpb25bXTtcbn1cblxuLyoqXG4gKiBUaGUgSFRUUCBtZXRob2RzIHRoYXQgdGhlIEJlaGF2aW9yIHdpbGwgYWNjZXB0IHJlcXVlc3RzIG9uLlxuICovXG5leHBvcnQgY2xhc3MgQWxsb3dlZE1ldGhvZHMge1xuICAvKiogSEVBRCBhbmQgR0VUICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMT1dfR0VUX0hFQUQgPSBuZXcgQWxsb3dlZE1ldGhvZHMoW1wiR0VUXCIsIFwiSEVBRFwiXSk7XG4gIC8qKiBIRUFELCBHRVQsIGFuZCBPUFRJT05TICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQUxMT1dfR0VUX0hFQURfT1BUSU9OUyA9IG5ldyBBbGxvd2VkTWV0aG9kcyhbXG4gICAgXCJHRVRcIixcbiAgICBcIkhFQURcIixcbiAgICBcIk9QVElPTlNcIixcbiAgXSk7XG4gIC8qKiBBbGwgc3VwcG9ydGVkIEhUVFAgbWV0aG9kcyAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEFMTE9XX0FMTCA9IG5ldyBBbGxvd2VkTWV0aG9kcyhbXG4gICAgXCJHRVRcIixcbiAgICBcIkhFQURcIixcbiAgICBcIk9QVElPTlNcIixcbiAgICBcIlBVVFwiLFxuICAgIFwiUEFUQ0hcIixcbiAgICBcIlBPU1RcIixcbiAgICBcIkRFTEVURVwiLFxuICBdKTtcblxuICAvKiogSFRUUCBtZXRob2RzIHN1cHBvcnRlZCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kczogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtZXRob2RzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMubWV0aG9kcyA9IG1ldGhvZHM7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGUgSFRUUCBtZXRob2RzIHRoYXQgdGhlIEJlaGF2aW9yIHdpbGwgY2FjaGUgcmVxdWVzdHMgb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBDYWNoZWRNZXRob2RzIHtcbiAgLyoqIEhFQUQgYW5kIEdFVCAqL1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENBQ0hFX0dFVF9IRUFEID0gbmV3IENhY2hlZE1ldGhvZHMoW1wiR0VUXCIsIFwiSEVBRFwiXSk7XG4gIC8qKiBIRUFELCBHRVQsIGFuZCBPUFRJT05TICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0FDSEVfR0VUX0hFQURfT1BUSU9OUyA9IG5ldyBDYWNoZWRNZXRob2RzKFtcbiAgICBcIkdFVFwiLFxuICAgIFwiSEVBRFwiLFxuICAgIFwiT1BUSU9OU1wiLFxuICBdKTtcblxuICAvKiogSFRUUCBtZXRob2RzIHN1cHBvcnRlZCAqL1xuICBwdWJsaWMgcmVhZG9ubHkgbWV0aG9kczogc3RyaW5nW107XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcihtZXRob2RzOiBzdHJpbmdbXSkge1xuICAgIHRoaXMubWV0aG9kcyA9IG1ldGhvZHM7XG4gIH1cbn1cblxuLyoqXG4gKiBIb3cgSFRUUHMgc2hvdWxkIGJlIGhhbmRsZWQgd2l0aCB5b3VyIGRpc3RyaWJ1dGlvbi5cbiAqL1xuZXhwb3J0IGVudW0gVmlld2VyUHJvdG9jb2xQb2xpY3kge1xuICAvKiogSFRUUFMgb25seSAqL1xuICBIVFRQU19PTkxZID0gXCJodHRwcy1vbmx5XCIsXG4gIC8qKiBXaWxsIHJlZGlyZWN0IEhUVFAgcmVxdWVzdHMgdG8gSFRUUFMgKi9cbiAgUkVESVJFQ1RfVE9fSFRUUFMgPSBcInJlZGlyZWN0LXRvLWh0dHBzXCIsXG4gIC8qKiBCb3RoIEhUVFAgYW5kIEhUVFBTIHN1cHBvcnRlZCAqL1xuICBBTExPV19BTEwgPSBcImFsbG93LWFsbFwiLFxufVxuXG4vKipcbiAqIENsb3VkRnJvbnQgcHJvdmlkZXMgYSBzZXQgb2YgbWFuYWdlZCBjYWNoZSBwb2xpY2llcyB0aGF0IHlvdSBjYW4gYXR0YWNoIHRvIGFueSBvZiB5b3VyIGRpc3RyaWJ1dGlvbidzIGNhY2hlIGJlaGF2aW9ycy5cbiAqIFdpdGggYSBtYW5hZ2VkIGNhY2hlIHBvbGljeSwgeW91IGRvbid0IG5lZWQgdG8gd3JpdGUgb3IgbWFpbnRhaW4geW91ciBvd24gY2FjaGUgcG9saWN5LiBUaGUgbWFuYWdlZCBwb2xpY2llcyB1c2Ugc2V0dGluZ3MgdGhhdCBhcmUgb3B0aW1pemVkIGZvciBzcGVjaWZpYyB1c2UgY2FzZXMuXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3VzaW5nLW1hbmFnZWQtY2FjaGUtcG9saWNpZXMuaHRtbFxuICogQGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvZGF0YS1zb3VyY2VzL2Nsb3VkZnJvbnRfY2FjaGVfcG9saWN5I2F3cy1tYW5hZ2VkLXBvbGljaWVzXG4gKi9cbmV4cG9ydCBlbnVtIE1hbmFnZWRDYWNoZVBvbGljeSB7XG4gIC8qKlxuICAgKiBUaGlzIHBvbGljeSBpcyBkZXNpZ25lZCBmb3IgdXNlIHdpdGggYW4gb3JpZ2luIHRoYXQgaXMgYW4gQVdTIEFtcGxpZnkgd2ViIGFwcC5cbiAgICovXG4gIEFNUExJRlkgPSBcIk1hbmFnZWQtQW1wbGlmeVwiLFxuICAvKipcbiAgICogT3B0aW1pemUgY2FjaGUgZWZmaWNpZW5jeSBieSBtaW5pbWl6aW5nIHRoZSB2YWx1ZXMgdGhhdCBDbG91ZEZyb250IGluY2x1ZGVzIGluIHRoZSBjYWNoZSBrZXkuXG4gICAqIFF1ZXJ5IHN0cmluZ3MgYW5kIGNvb2tpZXMgYXJlIG5vdCBpbmNsdWRlZCBpbiB0aGUgY2FjaGUga2V5LCBhbmQgb25seSB0aGUgbm9ybWFsaXplZCAnQWNjZXB0LUVuY29kaW5nJyBoZWFkZXIgaXMgaW5jbHVkZWQuXG4gICAqL1xuICBDQUNISU5HX09QVElNSVpFRCA9IFwiTWFuYWdlZC1DYWNoaW5nT3B0aW1pemVkXCIsXG4gIC8qKlxuICAgKiBPcHRpbWl6ZSBjYWNoZSBlZmZpY2llbmN5IGJ5IG1pbmltaXppbmcgdGhlIHZhbHVlcyB0aGF0IENsb3VkRnJvbnQgaW5jbHVkZXMgaW4gdGhlIGNhY2hlIGtleS5cbiAgICogUXVlcnkgc3RyaW5ncyBhbmQgY29va2llcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSBjYWNoZSBrZXksIGFuZCBvbmx5IHRoZSBub3JtYWxpemVkICdBY2NlcHQtRW5jb2RpbmcnIGhlYWRlciBpcyBpbmNsdWRlZC5cbiAgICogRGlzYWJsZXMgY2FjaGUgY29tcHJlc3Npb24uXG4gICAqL1xuICBDQUNISU5HX09QVElNSVpFRF9GT1JfVU5DT01QUkVTU0VEX09CSkVDVFMgPSBcIk1hbmFnZWQtQ2FjaGluZ09wdGltaXplZEZvclVuY29tcHJlc3NlZE9iamVjdHNcIixcbiAgLyoqIERpc2FibGVzIGNhY2hpbmcuIFRoaXMgcG9saWN5IGlzIHVzZWZ1bCBmb3IgZHluYW1pYyBjb250ZW50IGFuZCBmb3IgcmVxdWVzdHMgdGhhdCBhcmUgbm90IGNhY2hlYWJsZS4gKi9cbiAgQ0FDSElOR19ESVNBQkxFRCA9IFwiTWFuYWdlZC1DYWNoaW5nRGlzYWJsZWRcIixcbiAgLyoqIERlc2lnbmVkIGZvciB1c2Ugd2l0aCBhbiBvcmlnaW4gdGhhdCBpcyBhbiBBV1MgRWxlbWVudGFsIE1lZGlhUGFja2FnZSBlbmRwb2ludC4gKi9cbiAgRUxFTUVOVEFMX01FRElBX1BBQ0tBR0UgPSBcIk1hbmFnZWQtRWxlbWVudGFsLU1lZGlhUGFja2FnZVwiLFxuICAvKipcbiAgICogRGVzaWduZWQgZm9yIHVzZSB3aXRoIGFuIG9yaWdpbiB0aGF0IHJldHVybnMgQ2FjaGUtQ29udHJvbCBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgYW5kIGRvZXMgbm90IHNlcnZlIGRpZmZlcmVudCBjb250ZW50IGJhc2VkIG9uIHZhbHVlcyBwcmVzZW50IGluIHRoZSBxdWVyeSBzdHJpbmcuXG4gICAqL1xuICBVU0VfT1JJR0lOX0NBQ0hFX0NPTlRST0xfSEVBREVSUyA9IFwiTWFuYWdlZC1Vc2VPcmlnaW5DYWNoZUNvbnRyb2xIZWFkZXJzXCIsXG4gIC8qKlxuICAgKiBEZXNpZ25lZCBmb3IgdXNlIHdpdGggYW4gb3JpZ2luIHRoYXQgcmV0dXJucyBDYWNoZS1Db250cm9sIEhUVFAgcmVzcG9uc2UgaGVhZGVycyBhbmQgc2VydmVzIGRpZmZlcmVudCBjb250ZW50IGJhc2VkIG9uIHZhbHVlcyBwcmVzZW50IGluIHRoZSBxdWVyeSBzdHJpbmcuXG4gICAqL1xuICBVU0VfT1JJR0lOX0NBQ0hFX0NPTlRST0xfSEVBREVSU19RVUVSWV9TVFJJTkdTID0gXCJNYW5hZ2VkLVVzZU9yaWdpbkNhY2hlQ29udHJvbEhlYWRlcnMtUXVlcnlTdHJpbmdzXCIsXG59XG5cbi8qKlxuICogT3JpZ2luIFJlcXVlc3QgUG9saWN5IGNvbmZpZ3VyYXRpb24uXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL3VzaW5nLW1hbmFnZWQtb3JpZ2luLXJlcXVlc3QtcG9saWNpZXMuaHRtbFxuICogQGxpbmsgaHR0cHM6Ly9yZWdpc3RyeS50ZXJyYWZvcm0uaW8vcHJvdmlkZXJzL2hhc2hpY29ycC9hd3MvNS42MC4wL2RvY3MvZGF0YS1zb3VyY2VzL2Nsb3VkZnJvbnRfb3JpZ2luX3JlcXVlc3RfcG9saWN5I2F3cy1tYW5hZ2VkLXBvbGljaWVzXG4gKi9cbmV4cG9ydCBlbnVtIE1hbmFnZWRPcmlnaW5SZXF1ZXN0UG9saWN5IHtcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIG9ubHkgdGhlIFVzZXItQWdlbnQgYW5kIFJlZmVyZXIgaGVhZGVycy4gSXQgZG9lc27igJl0IGluY2x1ZGUgYW55IHF1ZXJ5IHN0cmluZ3Mgb3IgY29va2llcy4gKi9cbiAgVVNFUl9BR0VOVF9SRUZFUkVSX0hFQURFUlMgPSBcIk1hbmFnZWQtVXNlckFnZW50UmVmZXJlckhlYWRlcnNcIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIHRoZSBoZWFkZXIgdGhhdCBlbmFibGVzIGNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nIChDT1JTKSByZXF1ZXN0cyB3aGVuIHRoZSBvcmlnaW4gaXMgYSBjdXN0b20gb3JpZ2luLiAqL1xuICBDT1JTX0NVU1RPTV9PUklHSU4gPSBcIk1hbmFnZWQtQ09SUy1DdXN0b21PcmlnaW5cIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIHRoZSBoZWFkZXJzIHRoYXQgZW5hYmxlIGNyb3NzLW9yaWdpbiByZXNvdXJjZSBzaGFyaW5nIChDT1JTKSByZXF1ZXN0cyB3aGVuIHRoZSBvcmlnaW4gaXMgYW4gQW1hem9uIFMzIGJ1Y2tldC4gKi9cbiAgQ09SU19TM19PUklHSU4gPSBcIk1hbmFnZWQtQ09SUy1TM09yaWdpblwiLFxuICAvKiogVGhpcyBwb2xpY3kgaW5jbHVkZXMgYWxsIHZhbHVlcyAocXVlcnkgc3RyaW5ncywgaGVhZGVycywgYW5kIGNvb2tpZXMpIGluIHRoZSB2aWV3ZXIgcmVxdWVzdC4gKi9cbiAgQUxMX1ZJRVdFUiA9IFwiTWFuYWdlZC1BbGxWaWV3ZXJcIixcbiAgLyoqIFRoaXMgcG9saWN5IGlzIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCBhbiBvcmlnaW4gdGhhdCBpcyBhbiBBV1MgRWxlbWVudGFsIE1lZGlhVGFpbG9yIGVuZHBvaW50LiAqL1xuICBFTEVNRU5UQUxfTUVESUFfVEFJTE9SID0gXCJNYW5hZ2VkLUVsZW1lbnRhbC1NZWRpYVRhaWxvci1QZXJzb25hbGl6ZWRNYW5pZmVzdHNcIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIGFsbCB2YWx1ZXMgKGhlYWRlcnMsIGNvb2tpZXMsIGFuZCBxdWVyeSBzdHJpbmdzKSBpbiB0aGUgdmlld2VyIHJlcXVlc3QsIGFuZCBhbGwgQ2xvdWRGcm9udCBoZWFkZXJzIHRoYXQgd2VyZSByZWxlYXNlZCB0aHJvdWdoIEp1bmUgMjAyMiAoQ2xvdWRGcm9udCBoZWFkZXJzIHJlbGVhc2VkIGFmdGVyIEp1bmUgMjAyMiBhcmUgbm90IGluY2x1ZGVkKS4gKi9cbiAgQUxMX1ZJRVdFUl9BTkRfQ0xPVURGUk9OVF8yMDIyID0gXCJNYW5hZ2VkLUFsbFZpZXdlckFuZENsb3VkRnJvbnRIZWFkZXJzLTIwMjItMDZcIixcbiAgLyoqIFRoaXMgcG9saWN5IGluY2x1ZGVzIGFsbCB2YWx1ZXMgKHF1ZXJ5IHN0cmluZ3MsIGFuZCBjb29raWVzKSBleGNlcHQgdGhlIGhlYWRlciBpbiB0aGUgdmlld2VyIHJlcXVlc3QuICovXG4gIEFMTF9WSUVXRVJfRVhDRVBUX0hPU1RfSEVBREVSID0gXCJNYW5hZ2VkLUFsbFZpZXdlckV4Y2VwdEhvc3RIZWFkZXJcIixcbn1cbiJdfQ==
|
|
@@ -21,7 +21,7 @@ class DistributionTarget {
|
|
|
21
21
|
}
|
|
22
22
|
exports.DistributionTarget = DistributionTarget;
|
|
23
23
|
_a = JSII_RTTI_SYMBOL_1;
|
|
24
|
-
DistributionTarget[_a] = { fqn: "terraconstructs.aws.edge.DistributionTarget", version: "0.0.
|
|
24
|
+
DistributionTarget[_a] = { fqn: "terraconstructs.aws.edge.DistributionTarget", version: "0.0.24" };
|
|
25
25
|
/**
|
|
26
26
|
* Use Bucket as an alias record target
|
|
27
27
|
*/
|
|
@@ -43,7 +43,7 @@ class BucketWebsiteTarget {
|
|
|
43
43
|
}
|
|
44
44
|
exports.BucketWebsiteTarget = BucketWebsiteTarget;
|
|
45
45
|
_b = JSII_RTTI_SYMBOL_1;
|
|
46
|
-
BucketWebsiteTarget[_b] = { fqn: "terraconstructs.aws.edge.BucketWebsiteTarget", version: "0.0.
|
|
46
|
+
BucketWebsiteTarget[_b] = { fqn: "terraconstructs.aws.edge.BucketWebsiteTarget", version: "0.0.24" };
|
|
47
47
|
// /**
|
|
48
48
|
// * Use an ELBv2 as an alias record target
|
|
49
49
|
// */
|
|
@@ -65,5 +65,5 @@ class LoadBalancerTarget {
|
|
|
65
65
|
}
|
|
66
66
|
exports.LoadBalancerTarget = LoadBalancerTarget;
|
|
67
67
|
_c = JSII_RTTI_SYMBOL_1;
|
|
68
|
-
LoadBalancerTarget[_c] = { fqn: "terraconstructs.aws.edge.LoadBalancerTarget", version: "0.0.
|
|
68
|
+
LoadBalancerTarget[_c] = { fqn: "terraconstructs.aws.edge.LoadBalancerTarget", version: "0.0.24" };
|
|
69
69
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG5zLWFsaWFzLXJlY29yZC10YXJnZXRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lZGdlL2Rucy1hbGlhcy1yZWNvcmQtdGFyZ2V0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUVBLGdGQUdpRDtBQWNqRDs7R0FFRztBQUNILE1BQWEsa0JBQWtCO0lBQzdCLFlBQTZCLFlBQTJCO1FBQTNCLGlCQUFZLEdBQVosWUFBWSxDQUFlO0lBQUcsQ0FBQztJQUVyRCxJQUFJLENBQ1QsT0FBbUIsRUFDbkIsS0FBZ0I7UUFFaEIsT0FBTztZQUNMLE1BQU0sRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLFlBQVk7WUFDdEMsSUFBSSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsVUFBVTtZQUNsQyxvQkFBb0IsRUFBRSxLQUFLO1NBQzVCLENBQUM7SUFDSixDQUFDOztBQVpILGdEQWFDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW1CO0lBQzlCLFlBQTZCLE1BQWU7UUFBZixXQUFNLEdBQU4sTUFBTSxDQUFTO0lBQUcsQ0FBQztJQUV6QyxJQUFJLENBQ1QsT0FBbUIsRUFDbkIsS0FBZ0I7UUFFaEIsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQztZQUM3QixNQUFNLElBQUksS0FBSyxDQUNiLDJEQUEyRCxDQUM1RCxDQUFDO1FBQ0osQ0FBQztRQUNELElBQUksQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDLGlCQUFpQixDQUFDO1FBRTVDLE9BQU87WUFDTCxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxZQUFZO1lBQ2hDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLGlCQUFpQjtZQUNuQyxvQkFBb0IsRUFBRSxJQUFJO1NBQzNCLENBQUM7SUFDSixDQUFDOztBQW5CSCxrREFvQkM7OztBQUVELE1BQU07QUFDTiw0Q0FBNEM7QUFDNUMsTUFBTTtBQUNOLE1BQWEsa0JBQWtCO0lBQ3RCLE1BQU0sQ0FBQyxjQUFjLENBQzFCLGlDQUF5QyxFQUN6QyxtQkFBMkI7UUFFM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSx5Q0FBb0IsQ0FDdkMsaUNBQWlDLEVBQ2pDLG1CQUFtQixDQUNwQixDQUFDO1FBQ0YsT0FBTyxJQUFJLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxZQUE2QixZQUFpQztRQUFqQyxpQkFBWSxHQUFaLFlBQVksQ0FBcUI7SUFBRyxDQUFDO0lBRTNELElBQUksQ0FDVCxPQUFtQixFQUNuQixLQUFnQjtRQUVoQixPQUFPO1lBQ0wsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsaUNBQWlDO1lBQzNELElBQUksRUFBRSxhQUFhLElBQUksQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUU7WUFDMUQsb0JBQW9CLEVBQUUsSUFBSTtTQUMzQixDQUFDO0lBQ0osQ0FBQzs7QUF0QkgsZ0RBdUJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcm91dGU1M1JlY29yZCB9IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBJUmVjb3JkU2V0LCBJRG5zWm9uZSwgSURpc3RyaWJ1dGlvbiB9IGZyb20gXCIuXCI7XG5pbXBvcnQge1xuICBJTG9hZEJhbGFuY2VyQmFzZVYyLFxuICBJbXBvcnRlZExvYWRCYWxhbmNlcixcbn0gZnJvbSBcIi4uL2NvbXB1dGUvbGItc2hhcmVkL2Jhc2UtbG9hZC1iYWxhbmNlclwiO1xuaW1wb3J0IHsgSUJ1Y2tldCB9IGZyb20gXCIuLi9zdG9yYWdlXCI7XG5cbi8qKlxuICogQ2xhc3NlcyB0aGF0IGFyZSB2YWxpZCBhbGlhcyByZWNvcmQgdGFyZ2V0cywgbGlrZSBDbG91ZEZyb250IGRpc3RyaWJ1dGlvbnMgYW5kIGxvYWRcbiAqIGJhbGFuY2Vycywgc2hvdWxkIGltcGxlbWVudCB0aGlzIGludGVyZmFjZS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQWxpYXNSZWNvcmRUYXJnZXQge1xuICAvKipcbiAgICogUmV0dXJuIGhvc3RlZCB6b25lIElEIGFuZCBETlMgbmFtZSwgdXNhYmxlIGZvciBSb3V0ZTUzIGFsaWFzIHRhcmdldHNcbiAgICovXG4gIGJpbmQocmVjb3JkOiBJUmVjb3JkU2V0LCB6b25lPzogSURuc1pvbmUpOiByb3V0ZTUzUmVjb3JkLlJvdXRlNTNSZWNvcmRBbGlhcztcbn1cblxuLyoqXG4gKiBVc2UgYSBDbG91ZEZyb250IERpc3RyaWJ1dGlvbiBhcyBhbiBhbGlhcyByZWNvcmQgdGFyZ2V0XG4gKi9cbmV4cG9ydCBjbGFzcyBEaXN0cmlidXRpb25UYXJnZXQgaW1wbGVtZW50cyBJQWxpYXNSZWNvcmRUYXJnZXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGRpc3RyaWJ1dGlvbjogSURpc3RyaWJ1dGlvbikge31cblxuICBwdWJsaWMgYmluZChcbiAgICBfcmVjb3JkOiBJUmVjb3JkU2V0LFxuICAgIF96b25lPzogSURuc1pvbmUsXG4gICk6IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZEFsaWFzIHtcbiAgICByZXR1cm4ge1xuICAgICAgem9uZUlkOiB0aGlzLmRpc3RyaWJ1dGlvbi5ob3N0ZWRab25lSWQsXG4gICAgICBuYW1lOiB0aGlzLmRpc3RyaWJ1dGlvbi5kb21haW5OYW1lLFxuICAgICAgZXZhbHVhdGVUYXJnZXRIZWFsdGg6IGZhbHNlLFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBVc2UgQnVja2V0IGFzIGFuIGFsaWFzIHJlY29yZCB0YXJnZXRcbiAqL1xuZXhwb3J0IGNsYXNzIEJ1Y2tldFdlYnNpdGVUYXJnZXQgaW1wbGVtZW50cyBJQWxpYXNSZWNvcmRUYXJnZXQge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHJlYWRvbmx5IGJ1Y2tldDogSUJ1Y2tldCkge31cblxuICBwdWJsaWMgYmluZChcbiAgICBfcmVjb3JkOiBJUmVjb3JkU2V0LFxuICAgIF96b25lPzogSURuc1pvbmUsXG4gICk6IHJvdXRlNTNSZWNvcmQuUm91dGU1M1JlY29yZEFsaWFzIHtcbiAgICBpZiAoIXRoaXMuYnVja2V0LmlzV2Vic2l0ZSgpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIFwiQ2Fubm90IHVzZSBhIG5vbi13ZWJzaXRlIGJ1Y2tldCBhcyBhbiBhbGlhcyByZWNvcmQgdGFyZ2V0XCIsXG4gICAgICApO1xuICAgIH1cbiAgICB0aGlzLmJ1Y2tldC5idWNrZXRPdXRwdXRzLndlYnNpdGVEb21haW5OYW1lO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHpvbmVJZDogdGhpcy5idWNrZXQuaG9zdGVkWm9uZUlkLFxuICAgICAgbmFtZTogdGhpcy5idWNrZXQud2Vic2l0ZURvbWFpbk5hbWUsXG4gICAgICBldmFsdWF0ZVRhcmdldEhlYWx0aDogdHJ1ZSxcbiAgICB9O1xuICB9XG59XG5cbi8vIC8qKlxuLy8gICogVXNlIGFuIEVMQnYyIGFzIGFuIGFsaWFzIHJlY29yZCB0YXJnZXRcbi8vICAqL1xuZXhwb3J0IGNsYXNzIExvYWRCYWxhbmNlclRhcmdldCBpbXBsZW1lbnRzIElBbGlhc1JlY29yZFRhcmdldCB7XG4gIHB1YmxpYyBzdGF0aWMgZnJvbUF0dHJpYnV0ZXMoXG4gICAgbG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkOiBzdHJpbmcsXG4gICAgbG9hZEJhbGFuY2VyRG5zTmFtZTogc3RyaW5nLFxuICApIHtcbiAgICBjb25zdCBpbXBvcnRlZCA9IG5ldyBJbXBvcnRlZExvYWRCYWxhbmNlcihcbiAgICAgIGxvYWRCYWxhbmNlckNhbm9uaWNhbEhvc3RlZFpvbmVJZCxcbiAgICAgIGxvYWRCYWxhbmNlckRuc05hbWUsXG4gICAgKTtcbiAgICByZXR1cm4gbmV3IExvYWRCYWxhbmNlclRhcmdldChpbXBvcnRlZCk7XG4gIH1cbiAgY29uc3RydWN0b3IocHJpdmF0ZSByZWFkb25seSBsb2FkQmFsYW5jZXI6IElMb2FkQmFsYW5jZXJCYXNlVjIpIHt9XG5cbiAgcHVibGljIGJpbmQoXG4gICAgX3JlY29yZDogSVJlY29yZFNldCxcbiAgICBfem9uZT86IElEbnNab25lLFxuICApOiByb3V0ZTUzUmVjb3JkLlJvdXRlNTNSZWNvcmRBbGlhcyB7XG4gICAgcmV0dXJuIHtcbiAgICAgIHpvbmVJZDogdGhpcy5sb2FkQmFsYW5jZXIubG9hZEJhbGFuY2VyQ2Fub25pY2FsSG9zdGVkWm9uZUlkLFxuICAgICAgbmFtZTogYGR1YWxzdGFjay4ke3RoaXMubG9hZEJhbGFuY2VyLmxvYWRCYWxhbmNlckRuc05hbWV9YCxcbiAgICAgIGV2YWx1YXRlVGFyZ2V0SGVhbHRoOiB0cnVlLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
|
|
@@ -134,7 +134,7 @@ class RecordSet extends __1.AwsConstructBase {
|
|
|
134
134
|
}
|
|
135
135
|
exports.RecordSet = RecordSet;
|
|
136
136
|
_a = JSII_RTTI_SYMBOL_1;
|
|
137
|
-
RecordSet[_a] = { fqn: "terraconstructs.aws.edge.RecordSet", version: "0.0.
|
|
137
|
+
RecordSet[_a] = { fqn: "terraconstructs.aws.edge.RecordSet", version: "0.0.24" };
|
|
138
138
|
/**
|
|
139
139
|
* The record type.
|
|
140
140
|
*/
|
|
@@ -259,7 +259,7 @@ class RecordTarget {
|
|
|
259
259
|
}
|
|
260
260
|
exports.RecordTarget = RecordTarget;
|
|
261
261
|
_b = JSII_RTTI_SYMBOL_1;
|
|
262
|
-
RecordTarget[_b] = { fqn: "terraconstructs.aws.edge.RecordTarget", version: "0.0.
|
|
262
|
+
RecordTarget[_b] = { fqn: "terraconstructs.aws.edge.RecordTarget", version: "0.0.24" };
|
|
263
263
|
/**
|
|
264
264
|
* A DNS A record
|
|
265
265
|
*
|
|
@@ -276,7 +276,7 @@ class ARecord extends RecordSet {
|
|
|
276
276
|
}
|
|
277
277
|
exports.ARecord = ARecord;
|
|
278
278
|
_c = JSII_RTTI_SYMBOL_1;
|
|
279
|
-
ARecord[_c] = { fqn: "terraconstructs.aws.edge.ARecord", version: "0.0.
|
|
279
|
+
ARecord[_c] = { fqn: "terraconstructs.aws.edge.ARecord", version: "0.0.24" };
|
|
280
280
|
/**
|
|
281
281
|
* A DNS AAAA record
|
|
282
282
|
*
|
|
@@ -293,7 +293,7 @@ class AaaaRecord extends RecordSet {
|
|
|
293
293
|
}
|
|
294
294
|
exports.AaaaRecord = AaaaRecord;
|
|
295
295
|
_d = JSII_RTTI_SYMBOL_1;
|
|
296
|
-
AaaaRecord[_d] = { fqn: "terraconstructs.aws.edge.AaaaRecord", version: "0.0.
|
|
296
|
+
AaaaRecord[_d] = { fqn: "terraconstructs.aws.edge.AaaaRecord", version: "0.0.24" };
|
|
297
297
|
/**
|
|
298
298
|
* A DNS CNAME record
|
|
299
299
|
*
|
|
@@ -310,7 +310,7 @@ class CnameRecord extends RecordSet {
|
|
|
310
310
|
}
|
|
311
311
|
exports.CnameRecord = CnameRecord;
|
|
312
312
|
_e = JSII_RTTI_SYMBOL_1;
|
|
313
|
-
CnameRecord[_e] = { fqn: "terraconstructs.aws.edge.CnameRecord", version: "0.0.
|
|
313
|
+
CnameRecord[_e] = { fqn: "terraconstructs.aws.edge.CnameRecord", version: "0.0.24" };
|
|
314
314
|
/**
|
|
315
315
|
* A DNS TXT record
|
|
316
316
|
*
|
|
@@ -327,7 +327,7 @@ class TxtRecord extends RecordSet {
|
|
|
327
327
|
}
|
|
328
328
|
exports.TxtRecord = TxtRecord;
|
|
329
329
|
_f = JSII_RTTI_SYMBOL_1;
|
|
330
|
-
TxtRecord[_f] = { fqn: "terraconstructs.aws.edge.TxtRecord", version: "0.0.
|
|
330
|
+
TxtRecord[_f] = { fqn: "terraconstructs.aws.edge.TxtRecord", version: "0.0.24" };
|
|
331
331
|
/**
|
|
332
332
|
* Formats a text value for use in a TXT record
|
|
333
333
|
*
|
|
@@ -363,7 +363,7 @@ class SrvRecord extends RecordSet {
|
|
|
363
363
|
}
|
|
364
364
|
exports.SrvRecord = SrvRecord;
|
|
365
365
|
_g = JSII_RTTI_SYMBOL_1;
|
|
366
|
-
SrvRecord[_g] = { fqn: "terraconstructs.aws.edge.SrvRecord", version: "0.0.
|
|
366
|
+
SrvRecord[_g] = { fqn: "terraconstructs.aws.edge.SrvRecord", version: "0.0.24" };
|
|
367
367
|
/**
|
|
368
368
|
* The CAA tag.
|
|
369
369
|
*/
|
|
@@ -401,7 +401,7 @@ class CaaRecord extends RecordSet {
|
|
|
401
401
|
}
|
|
402
402
|
exports.CaaRecord = CaaRecord;
|
|
403
403
|
_h = JSII_RTTI_SYMBOL_1;
|
|
404
|
-
CaaRecord[_h] = { fqn: "terraconstructs.aws.edge.CaaRecord", version: "0.0.
|
|
404
|
+
CaaRecord[_h] = { fqn: "terraconstructs.aws.edge.CaaRecord", version: "0.0.24" };
|
|
405
405
|
/**
|
|
406
406
|
* A DNS Amazon CAA record.
|
|
407
407
|
*
|
|
@@ -426,7 +426,7 @@ class CaaAmazonRecord extends CaaRecord {
|
|
|
426
426
|
}
|
|
427
427
|
exports.CaaAmazonRecord = CaaAmazonRecord;
|
|
428
428
|
_j = JSII_RTTI_SYMBOL_1;
|
|
429
|
-
CaaAmazonRecord[_j] = { fqn: "terraconstructs.aws.edge.CaaAmazonRecord", version: "0.0.
|
|
429
|
+
CaaAmazonRecord[_j] = { fqn: "terraconstructs.aws.edge.CaaAmazonRecord", version: "0.0.24" };
|
|
430
430
|
/**
|
|
431
431
|
* A DNS MX record
|
|
432
432
|
*
|
|
@@ -443,7 +443,7 @@ class MxRecord extends RecordSet {
|
|
|
443
443
|
}
|
|
444
444
|
exports.MxRecord = MxRecord;
|
|
445
445
|
_k = JSII_RTTI_SYMBOL_1;
|
|
446
|
-
MxRecord[_k] = { fqn: "terraconstructs.aws.edge.MxRecord", version: "0.0.
|
|
446
|
+
MxRecord[_k] = { fqn: "terraconstructs.aws.edge.MxRecord", version: "0.0.24" };
|
|
447
447
|
/**
|
|
448
448
|
* A DNS NS record
|
|
449
449
|
*
|
|
@@ -460,7 +460,7 @@ class NsRecord extends RecordSet {
|
|
|
460
460
|
}
|
|
461
461
|
exports.NsRecord = NsRecord;
|
|
462
462
|
_l = JSII_RTTI_SYMBOL_1;
|
|
463
|
-
NsRecord[_l] = { fqn: "terraconstructs.aws.edge.NsRecord", version: "0.0.
|
|
463
|
+
NsRecord[_l] = { fqn: "terraconstructs.aws.edge.NsRecord", version: "0.0.24" };
|
|
464
464
|
/**
|
|
465
465
|
* A DNS DS record
|
|
466
466
|
*
|
|
@@ -477,7 +477,7 @@ class DsRecord extends RecordSet {
|
|
|
477
477
|
}
|
|
478
478
|
exports.DsRecord = DsRecord;
|
|
479
479
|
_m = JSII_RTTI_SYMBOL_1;
|
|
480
|
-
DsRecord[_m] = { fqn: "terraconstructs.aws.edge.DsRecord", version: "0.0.
|
|
480
|
+
DsRecord[_m] = { fqn: "terraconstructs.aws.edge.DsRecord", version: "0.0.24" };
|
|
481
481
|
/**
|
|
482
482
|
* A record to delegate further lookups to a different set of name servers.
|
|
483
483
|
*/
|
|
@@ -495,7 +495,7 @@ class ZoneDelegationRecord extends RecordSet {
|
|
|
495
495
|
}
|
|
496
496
|
exports.ZoneDelegationRecord = ZoneDelegationRecord;
|
|
497
497
|
_o = JSII_RTTI_SYMBOL_1;
|
|
498
|
-
ZoneDelegationRecord[_o] = { fqn: "terraconstructs.aws.edge.ZoneDelegationRecord", version: "0.0.
|
|
498
|
+
ZoneDelegationRecord[_o] = { fqn: "terraconstructs.aws.edge.ZoneDelegationRecord", version: "0.0.24" };
|
|
499
499
|
// ref https://github.com/aws/aws-cdk/blob/v2.156.0/packages/aws-cdk-lib/aws-route53/lib/util.ts
|
|
500
500
|
/**
|
|
501
501
|
* Route53 requires the record names are specified as fully qualified names, but this
|
package/lib/aws/edge/dns-zone.js
CHANGED
|
@@ -132,7 +132,7 @@ class DnsZone extends __1.AwsConstructBase {
|
|
|
132
132
|
}
|
|
133
133
|
exports.DnsZone = DnsZone;
|
|
134
134
|
_a = JSII_RTTI_SYMBOL_1;
|
|
135
|
-
DnsZone[_a] = { fqn: "terraconstructs.aws.edge.DnsZone", version: "0.0.
|
|
135
|
+
DnsZone[_a] = { fqn: "terraconstructs.aws.edge.DnsZone", version: "0.0.24" };
|
|
136
136
|
function makeHostedZoneArn(construct, hostedZoneId) {
|
|
137
137
|
return __1.AwsStack.ofAwsConstruct(construct).formatArn({
|
|
138
138
|
account: "",
|
package/lib/aws/edge/function.js
CHANGED
|
@@ -30,7 +30,7 @@ class FunctionCode {
|
|
|
30
30
|
}
|
|
31
31
|
exports.FunctionCode = FunctionCode;
|
|
32
32
|
_a = JSII_RTTI_SYMBOL_1;
|
|
33
|
-
FunctionCode[_a] = { fqn: "terraconstructs.aws.edge.FunctionCode", version: "0.0.
|
|
33
|
+
FunctionCode[_a] = { fqn: "terraconstructs.aws.edge.FunctionCode", version: "0.0.24" };
|
|
34
34
|
/**
|
|
35
35
|
* Represents the function's source code as inline code
|
|
36
36
|
*/
|
|
@@ -108,7 +108,7 @@ class Function extends aws_construct_1.AwsConstructBase {
|
|
|
108
108
|
}
|
|
109
109
|
exports.Function = Function;
|
|
110
110
|
_b = JSII_RTTI_SYMBOL_1;
|
|
111
|
-
Function[_b] = { fqn: "terraconstructs.aws.edge.Function", version: "0.0.
|
|
111
|
+
Function[_b] = { fqn: "terraconstructs.aws.edge.Function", version: "0.0.24" };
|
|
112
112
|
/**
|
|
113
113
|
* The type of events that a CloudFront function can be invoked in response to.
|
|
114
114
|
*/
|
|
@@ -57,7 +57,7 @@ class KeyValuePairs {
|
|
|
57
57
|
}
|
|
58
58
|
exports.KeyValuePairs = KeyValuePairs;
|
|
59
59
|
_a = JSII_RTTI_SYMBOL_1;
|
|
60
|
-
KeyValuePairs[_a] = { fqn: "terraconstructs.aws.edge.KeyValuePairs", version: "0.0.
|
|
60
|
+
KeyValuePairs[_a] = { fqn: "terraconstructs.aws.edge.KeyValuePairs", version: "0.0.24" };
|
|
61
61
|
/**
|
|
62
62
|
* inline Key Value pairs.
|
|
63
63
|
*/
|
|
@@ -72,7 +72,7 @@ class InlineKeyValuePairs extends KeyValuePairs {
|
|
|
72
72
|
}
|
|
73
73
|
exports.InlineKeyValuePairs = InlineKeyValuePairs;
|
|
74
74
|
_b = JSII_RTTI_SYMBOL_1;
|
|
75
|
-
InlineKeyValuePairs[_b] = { fqn: "terraconstructs.aws.edge.InlineKeyValuePairs", version: "0.0.
|
|
75
|
+
InlineKeyValuePairs[_b] = { fqn: "terraconstructs.aws.edge.InlineKeyValuePairs", version: "0.0.24" };
|
|
76
76
|
/**
|
|
77
77
|
* Key Value pairs stored in a local file.
|
|
78
78
|
*/
|
|
@@ -105,7 +105,7 @@ class FileKeyValuePairs extends KeyValuePairs {
|
|
|
105
105
|
}
|
|
106
106
|
exports.FileKeyValuePairs = FileKeyValuePairs;
|
|
107
107
|
_c = JSII_RTTI_SYMBOL_1;
|
|
108
|
-
FileKeyValuePairs[_c] = { fqn: "terraconstructs.aws.edge.FileKeyValuePairs", version: "0.0.
|
|
108
|
+
FileKeyValuePairs[_c] = { fqn: "terraconstructs.aws.edge.FileKeyValuePairs", version: "0.0.24" };
|
|
109
109
|
/**
|
|
110
110
|
* A CloudFront Key Value Store.
|
|
111
111
|
*
|
|
@@ -159,5 +159,5 @@ class KeyValueStore extends aws_construct_1.AwsConstructBase {
|
|
|
159
159
|
}
|
|
160
160
|
exports.KeyValueStore = KeyValueStore;
|
|
161
161
|
_d = JSII_RTTI_SYMBOL_1;
|
|
162
|
-
KeyValueStore[_d] = { fqn: "terraconstructs.aws.edge.KeyValueStore", version: "0.0.
|
|
162
|
+
KeyValueStore[_d] = { fqn: "terraconstructs.aws.edge.KeyValueStore", version: "0.0.24" };
|
|
163
163
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5LXZhbHVlLXN0b3JlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9lZGdlL2tleS12YWx1ZS1zdG9yZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHlCQUF5QjtBQUN6QixzREFHNkI7QUFFN0Isb0RBSTBCO0FBWTFCOzs7OztHQUtHO0FBQ0gsTUFBc0IsYUFBYTtJQUFuQztRQTJCRSxxRUFBcUU7UUFDM0QsU0FBSSxHQUF3QixFQUFFLENBQUM7S0FpQjFDO0lBNUNDOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLE1BQU0sQ0FBQyxRQUFRLENBQUMsUUFBZ0I7UUFDckMsT0FBTyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRDs7OztPQUlHO0lBQ0ksTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUF5QjtRQUNoRCxPQUFPLElBQUksbUJBQW1CLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUlEOztPQUVHO0lBQ0ksTUFBTSxDQUNYLGdCQUF3QjtRQUV4QixPQUFPLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQyxFQUFFLEVBQUU7WUFDdkQsTUFBTSxLQUFLLEdBQ1QsT0FBTyxRQUFRLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDckUsT0FBTztnQkFDTCxHQUFHLEVBQUUsbURBQW1EO2dCQUN4RCxLQUFLLEVBQUUsc0RBQXNEO2dCQUM3RCxnQkFBZ0I7YUFDakIsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7QUE1Q0gsc0NBNkNDOzs7QUFFRDs7R0FFRztBQUNILE1BQWEsbUJBQW9CLFNBQVEsYUFBYTtJQUNwRDs7T0FFRztJQUNI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QUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztnQkFDckMsSUFBSSx5Q0FBMEIsQ0FBQywwQkFBMEIsQ0FDdkQsSUFBSSxFQUNKLE9BQU8sQ0FBQyxFQUFFLEVBQ1YsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNSLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztRQUVELElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7UUFDN0IsSUFBSSxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQztRQUMzQixJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxRQUFRLEdBQUc7WUFDZCxHQUFHLEVBQUUsSUFBSSxDQUFDLEdBQUc7WUFDYixFQUFFLEVBQUUsSUFBSSxDQUFDLEVBQUU7U0FDWixDQUFDO0lBQ0osQ0FBQzs7QUExREgsc0NBMkRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQge1xuICBjbG91ZGZyb250S2V5VmFsdWVTdG9yZSxcbiAgY2xvdWRmcm9udGtleXZhbHVlc3RvcmVLZXksXG59IGZyb20gXCJAY2RrdGYvcHJvdmlkZXItYXdzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHtcbiAgQXdzQ29uc3RydWN0QmFzZSxcbiAgSUF3c0NvbnN0cnVjdCxcbiAgQXdzQ29uc3RydWN0UHJvcHMsXG59IGZyb20gXCIuLi9hd3MtY29uc3RydWN0XCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVN0b3JlRGF0YSB7XG4gIC8qKlxuICAgKiBUaGUgbWV0aG9kIGNhbGxlZCB3aGVuIGdpdmVuIFN0b3JlRGF0YSBpcyBhZGRlZFxuICAgKiAoZm9yIHRoZSBmaXJzdCB0aW1lKSB0byBhIEtleVZhbHVlU3RvcmUuXG4gICAqL1xuICByZW5kZXIoXG4gICAga2V5VmFsdWVTdG9yZUFybjogc3RyaW5nLFxuICApOiBjbG91ZGZyb250a2V5dmFsdWVzdG9yZUtleS5DbG91ZGZyb250a2V5dmFsdWVzdG9yZUtleUNvbmZpZ1tdO1xufVxuXG4vKipcbiAqIFRoZSBpbml0aWFsIGRhdGEgdG8gc2V0IGZvciB0aGUga2V5IHZhbHVlIHN0b3JlLlxuICpcbiAqIFRoaXMgaXMgd29yayBhcm91bmQgZm9yIGxhY2sgb2Ygc3VwcG9ydCBmb3IgaW1wb3J0X3NvdXJjZVxuICogQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL2hhc2hpY29ycC90ZXJyYWZvcm0tcHJvdmlkZXItYXdzL2lzc3Vlcy8zNjUyNFxuICovXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgS2V5VmFsdWVQYWlycyBpbXBsZW1lbnRzIElTdG9yZURhdGEge1xuICAvKipcbiAgICogS2V5IFZhbHVlIHBhaXJzIHN0b3JlZCBpbiBhIGxvY2FsIGZpbGUuXG4gICAqXG4gICAqIFRoZSBrZXktdmFsdWUgcGFpcnMgaGF2ZSB0aGUgZm9sbG93aW5nIGxpbWl0czpcbiAgICpcbiAgICogLSBGaWxlIHNpemUg4oCTIDUgTUJcbiAgICogLSBLZXkgc2l6ZSDigJMgNTEyIGNoYXJhY3RlcnNcbiAgICogLSBWYWx1ZSBzaXplIOKAkyAxMDI0IGNoYXJhY3RlcnNcbiAgICpcbiAgICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2t2cy13aXRoLWZ1bmN0aW9ucy1jcmVhdGUtczMta3ZwLmh0bWxcbiAgICpcbiAgICogQHBhcmFtIGZpbGVQYXRoIHRoZSBwYXRoIHRvIHRoZSBsb2NhbCBmaWxlXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21QYXRoKGZpbGVQYXRoOiBzdHJpbmcpOiBLZXlWYWx1ZVBhaXJzIHtcbiAgICByZXR1cm4gbmV3IEZpbGVLZXlWYWx1ZVBhaXJzKGZpbGVQYXRoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBLZXkgVmFsdWUgcGFpcnMgaW5saW5lIHdpdGggQ29uc3RydWN0IHByb3BzLlxuICAgKlxuICAgKiBAcGFyYW0gZGF0YSB0aGUgY29udGVudHMgb2YgdGhlIEtleVZhbHVlU3RvcmVcbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUlubGluZShkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogS2V5VmFsdWVQYWlycyB7XG4gICAgcmV0dXJuIG5ldyBJbmxpbmVLZXlWYWx1ZVBhaXJzKGRhdGEpO1xuICB9XG5cbiAgLy8gVE9ETzogc3VwcG9ydCBUZXJyYWZvcm1SZXNvdXJjZUxpZmVjeWNsZSBvbiB0aGUga2V5IHZhbHVlIGVudHJpZXM/XG4gIHByb3RlY3RlZCBkYXRhOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIC8qKlxuICAgKiBDYWxsZWQgaW50ZXJuYWxseSBieSB0aGUgS2V5VmFsdWVTdG9yZSB0byByZW5kZXIgdGhlIHN0b3JlIGRhdGEuXG4gICAqL1xuICBwdWJsaWMgcmVuZGVyKFxuICAgIGtleVZhbHVlU3RvcmVBcm46IHN0cmluZyxcbiAgKTogY2xvdWRmcm9udGtleXZhbHVlc3RvcmVLZXkuQ2xvdWRmcm9udGtleXZhbHVlc3RvcmVLZXlDb25maWdbXSB7XG4gICAgcmV0dXJuIE9iamVjdC5lbnRyaWVzKHRoaXMuZGF0YSkubWFwKChba2V5LCB2YWx1ZUFueV0pID0+IHtcbiAgICAgIGNvbnN0IHZhbHVlID1cbiAgICAgICAgdHlwZW9mIHZhbHVlQW55ID09PSBcInN0cmluZ1wiID8gdmFsdWVBbnkgOiBKU09OLnN0cmluZ2lmeSh2YWx1ZUFueSk7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBrZXksIC8vVE9ETzogdmFsaWRhdGUga2V5IHN0cmluZyBsaW1pdCAoNTEyIGNoYXJhY3RlcnMpP1xuICAgICAgICB2YWx1ZSwgLy9UT0RPOiB2YWxpZGF0ZSB2YWx1ZSBzdHJpbmcgbGltaXQgKDEwMjQgY2hhcmFjdGVycyk/XG4gICAgICAgIGtleVZhbHVlU3RvcmVBcm4sXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG59XG5cbi8qKlxuICogaW5saW5lIEtleSBWYWx1ZSBwYWlycy5cbiAqL1xuZXhwb3J0IGNsYXNzIElubGluZUtleVZhbHVlUGFpcnMgZXh0ZW5kcyBLZXlWYWx1ZVBhaXJzIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBkYXRhIHRoZSBjb250ZW50cyBvZiB0aGUgS2V5VmFsdWVTdG9yZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZGF0YTogUmVjb3JkPHN0cmluZywgYW55Pikge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5kYXRhID0gZGF0YTtcbiAgfVxufVxuXG4vKipcbiAqIEtleSBWYWx1ZSBwYWlycyBzdG9yZWQgaW4gYSBsb2NhbCBmaWxlLlxuICovXG5leHBvcnQgY2xhc3MgRmlsZUtleVZhbHVlUGFpcnMgZXh0ZW5kcyBLZXlWYWx1ZVBhaXJzIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBmaWxlUGF0aCB0aGUgcGF0aCB0byB0aGUgbG9jYWwgZmlsZVxuICAgKi9cbiAgY29uc3RydWN0b3IoZmlsZVBhdGg6IHN0cmluZykge1xuICAgIHN1cGVyKCk7XG4gICAgY29uc3Qgc3RhdHMgPSBmcy5zdGF0U3luYyhmaWxlUGF0aCk7XG4gICAgaWYgKHN0YXRzLnNpemUgPiA1ICogMTAyNCAqIDEwMjQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBmaWxlIHNpemUgb2YgJHtmaWxlUGF0aH0gc2hvdWxkIG5vdCBleGNlZWQgNU1CLiBSZWNlaXZlZDogJHtzdGF0cy5zaXplfWAsXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCBjb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCBcInV0ZjhcIik7XG4gICAgbGV0IHBhcnNlZERhdGE6IGFueTtcbiAgICB0cnkge1xuICAgICAgcGFyc2VkRGF0YSA9IEpTT04ucGFyc2UoY29udGVudCk7XG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBJbnZhbGlkIEpTT04gZm9ybWF0OiAke2Vycm9yLm1lc3NhZ2V9YCk7XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLmlzUmVjb3JkT2ZTdHJpbmdBbnkocGFyc2VkRGF0YSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSAke2ZpbGVQYXRofSBjb250ZW50cyBkb2VzIG5vdCBtYXRjaCB0aGUgcmVxdWlyZWQgdHlwZSBSZWNvcmQ8c3RyaW5nLCBhbnk+YCxcbiAgICAgICk7XG4gICAgfVxuICAgIHRoaXMuZGF0YSA9IHBhcnNlZERhdGE7XG4gIH1cbiAgcHJpdmF0ZSBpc1JlY29yZE9mU3RyaW5nQW55KG9iajogYW55KTogb2JqIGlzIFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0eXBlb2Ygb2JqID09PSBcIm9iamVjdFwiICYmIG9iaiAhPT0gbnVsbCAmJiAhQXJyYXkuaXNBcnJheShvYmopO1xuICB9XG59XG5cbi8qKlxuICogVGhlIHByb3BlcnRpZXMgdG8gY3JlYXRlIGEgS2V5IFZhbHVlIFN0b3JlLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEtleVZhbHVlU3RvcmVQcm9wcyBleHRlbmRzIEF3c0NvbnN0cnVjdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSB1bmlxdWUgbmFtZSBvZiB0aGUgS2V5IFZhbHVlIFN0b3JlLlxuICAgKlxuICAgKiBAZGVmYXVsdCBBIGdlbmVyYXRlZCBuYW1lXG4gICAqL1xuICByZWFkb25seSBuYW1lU3VmZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEEgY29tbWVudCBmb3IgdGhlIEtleSBWYWx1ZSBTdG9yZVxuICAgKlxuICAgKiBAZGVmYXVsdCBObyBjb21tZW50IHdpbGwgYmUgc3BlY2lmaWVkXG4gICAqL1xuICByZWFkb25seSBjb21tZW50Pzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgS2V5IFZhbHVlIHN0b3JlIGRhdGEuXG4gICAqXG4gICAqIFRoaXMgd2lsbCBwb3B1bGF0ZSB0aGUgaW5pdGlhbCBpdGVtcyBpbiB0aGUgS2V5IFZhbHVlIFN0b3JlLiBUaGVcbiAgICogc291cmNlIGRhdGEgbXVzdCBiZSBpbiBhIHZhbGlkIEpTT04gZm9ybWF0LlxuICAgKlxuICAgKiBUaGUga2V5LXZhbHVlIHBhaXJzIGhhdmUgdGhlIGZvbGxvd2luZyBsaW1pdHM6XG4gICAqXG4gICAqIC0gRmlsZSBzaXplIOKAkyA1IE1CXG4gICAqIC0gS2V5IHNpemUg4oCTIDUxMiBjaGFyYWN0ZXJzXG4gICAqIC0gVmFsdWUgc2l6ZSDigJMgMTAyNCBjaGFyYWN0ZXJzXG4gICAqXG4gICAqIEBkZWZhdWx0IE5vIGRhdGEgd2lsbCBiZSBpbXBvcnRlZCB0byB0aGUgc3RvcmVcbiAgICovXG4gIHJlYWRvbmx5IGRhdGE/OiBJU3RvcmVEYXRhO1xufVxuXG4vKipcbiAqIENsb3VkRnJvbnQgS2V5IFZhbHVlIFN0b3JlIG91dHB1dHMgZm9yIGEgc3RhY2suXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgS2V5VmFsdWVTdG9yZU91dHB1dHMge1xuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgS2V5IFZhbHVlIFN0b3JlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBhcm46IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIFVuaXF1ZSBJRCBvZiB0aGUgS2V5IFZhbHVlIFN0b3JlLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSBpZDogc3RyaW5nO1xufVxuXG4vKipcbiAqIEEgQ2xvdWRGcm9udCBLZXkgVmFsdWUgU3RvcmUuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSUtleVZhbHVlU3RvcmUgZXh0ZW5kcyBJQXdzQ29uc3RydWN0IHtcbiAgLyoqIFN0cm9uZ2x5IHR5cGVkIG91dHB1dHNcbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkga2V5VmFsdWVTdG9yZU91dHB1dHM6IEtleVZhbHVlU3RvcmVPdXRwdXRzO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBLZXkgVmFsdWUgU3RvcmUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgVW5pcXVlIElEIG9mIHRoZSBLZXkgVmFsdWUgU3RvcmUuXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBzdGF0dXMgb2YgdGhlIEtleSBWYWx1ZSBTdG9yZS5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgc3RhdHVzOiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBDbG91ZEZyb250IEtleSBWYWx1ZSBTdG9yZS5cbiAqXG4gKiBZb3UgY2FuIHN0b3JlIGFueSBvZiB0aGUgZm9sbG93aW5nIGZvcm1hdHM6XG4gKlxuICogLSBTdHJpbmdcbiAqIC0gQnl0ZS1lbmNvZGVkIHN0cmluZ1xuICogLSBKU09OXG4gKlxuICogQGxpbmsgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkNsb3VkRnJvbnQvbGF0ZXN0L0RldmVsb3Blckd1aWRlL2t2cy13aXRoLWZ1bmN0aW9ucy5odG1sXG4gKlxuICogQHJlc291cmNlIGF3c19jbG91ZGZyb250X2tleV92YWx1ZV9zdG9yZVxuICovXG5leHBvcnQgY2xhc3MgS2V5VmFsdWVTdG9yZSBleHRlbmRzIEF3c0NvbnN0cnVjdEJhc2UgaW1wbGVtZW50cyBJS2V5VmFsdWVTdG9yZSB7XG4gIC8vIFRPRE86IEFkZCBzdGF0aWMgZnJvbUxvb2t1cD9cbiAgcHVibGljIHJlYWRvbmx5IHJlc291cmNlOiBjbG91ZGZyb250S2V5VmFsdWVTdG9yZS5DbG91ZGZyb250S2V5VmFsdWVTdG9yZTtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vdXRwdXRzOiBLZXlWYWx1ZVN0b3JlT3V0cHV0cztcbiAgcHVibGljIGdldCBrZXlWYWx1ZVN0b3JlT3V0cHV0cygpOiBLZXlWYWx1ZVN0b3JlT3V0cHV0cyB7XG4gICAgcmV0dXJuIHRoaXMuX291dHB1dHM7XG4gIH1cbiAgcHVibGljIGdldCBvdXRwdXRzKCk6IFJlY29yZDxzdHJpbmcsIGFueT4ge1xuICAgIHJldHVybiB0aGlzLmtleVZhbHVlU3RvcmVPdXRwdXRzO1xuICB9XG4gIHJlYWRvbmx5IGFybjogc3RyaW5nO1xuICByZWFkb25seSBpZDogc3RyaW5nO1xuICByZWFkb25seSBzdGF0dXM6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogS2V5VmFsdWVTdG9yZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XG5cbiAgICBjb25zdCB7IG5hbWVTdWZmaXggfSA9IHByb3BzO1xuICAgIC8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIHRoZSBgdGhpcy5zdGFjay5tYWtlVW5pcXVlUmVzb3VyY2VOYW1lYCBmdW5jdGlvbj9cbiAgICBsZXQgbmFtZSA9IHRoaXMuZ3JpZFVVSUQ7XG4gICAgaWYgKG5hbWVTdWZmaXgpIHtcbiAgICAgIG5hbWUgPSBgJHtuYW1lfS0ke25hbWVTdWZmaXh9YDtcbiAgICB9XG4gICAgaWYgKG5hbWUubGVuZ3RoID4gNjQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYFRoZSBuYW1lIG9mIHRoZSBLZXkgVmFsdWUgU3RvcmUgbXVzdCBiZSBsZXNzIHRoYW4gNjQgY2hhcmFjdGVycy4gUmVjZWl2ZWQ6ICR7bmFtZX1gLFxuICAgICAgKTtcbiAgICB9XG5cbiAgICB0aGlzLnJlc291cmNlID0gbmV3IGNsb3VkZnJvbnRLZXlWYWx1ZVN0b3JlLkNsb3VkZnJvbnRLZXlWYWx1ZVN0b3JlKFxuICAgICAgdGhpcyxcbiAgICAgIFwiUmVzb3VyY2VcIixcbiAgICAgIHtcbiAgICAgICAgbmFtZSxcbiAgICAgICAgY29tbWVudDogcHJvcHM/LmNvbW1lbnQsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICBpZiAocHJvcHMuZGF0YSkge1xuICAgICAgLy8gVE9ETzogc3VwcG9ydCBUZXJyYWZvcm1SZXNvdXJjZUxpZmVjeWNsZSBvbiB0aGUga2V5IHZhbHVlIGVudHJpZXM/XG4gICAgICBjb25zdCBkYXRhID0gcHJvcHMuZGF0YS5yZW5kZXIodGhpcy5yZXNvdXJjZS5hcm4pO1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIG5ldyBjbG91ZGZyb250a2V5dmFsdWVzdG9yZUtleS5DbG91ZGZyb250a2V5dmFsdWVzdG9yZUtleShcbiAgICAgICAgICB0aGlzLFxuICAgICAgICAgIGBLZXktJHtpfWAsXG4gICAgICAgICAgZGF0YVtpXSxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLmFybiA9IHRoaXMucmVzb3VyY2UuYXJuO1xuICAgIHRoaXMuaWQgPSB0aGlzLnJlc291cmNlLmlkO1xuICAgIHRoaXMuc3RhdHVzID0gdGhpcy5yZXNvdXJjZS5ldGFnO1xuICAgIHRoaXMuX291dHB1dHMgPSB7XG4gICAgICBhcm46IHRoaXMuYXJuLFxuICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgfTtcbiAgfVxufVxuIl19
|
package/lib/aws/edge/origin.js
CHANGED
|
@@ -98,7 +98,7 @@ class OriginBase {
|
|
|
98
98
|
}
|
|
99
99
|
exports.OriginBase = OriginBase;
|
|
100
100
|
_a = JSII_RTTI_SYMBOL_1;
|
|
101
|
-
OriginBase[_a] = { fqn: "terraconstructs.aws.edge.OriginBase", version: "0.0.
|
|
101
|
+
OriginBase[_a] = { fqn: "terraconstructs.aws.edge.OriginBase", version: "0.0.24" };
|
|
102
102
|
/**
|
|
103
103
|
* Throws an error if a value is defined and not an integer or not in a range.
|
|
104
104
|
*/
|
|
@@ -183,7 +183,7 @@ class S3Origin {
|
|
|
183
183
|
}
|
|
184
184
|
exports.S3Origin = S3Origin;
|
|
185
185
|
_b = JSII_RTTI_SYMBOL_1;
|
|
186
|
-
S3Origin[_b] = { fqn: "terraconstructs.aws.edge.S3Origin", version: "0.0.
|
|
186
|
+
S3Origin[_b] = { fqn: "terraconstructs.aws.edge.S3Origin", version: "0.0.24" };
|
|
187
187
|
// https://github.com/aws/aws-cdk/blob/v2.156.0/packages/aws-cdk-lib/aws-cloudfront-origins/lib/s3-origin.ts#L51
|
|
188
188
|
/**
|
|
189
189
|
* An Origin specific to a S3 bucket (not configured for website hosting).
|
|
@@ -231,7 +231,7 @@ class HttpOrigin extends OriginBase {
|
|
|
231
231
|
}
|
|
232
232
|
exports.HttpOrigin = HttpOrigin;
|
|
233
233
|
_c = JSII_RTTI_SYMBOL_1;
|
|
234
|
-
HttpOrigin[_c] = { fqn: "terraconstructs.aws.edge.HttpOrigin", version: "0.0.
|
|
234
|
+
HttpOrigin[_c] = { fqn: "terraconstructs.aws.edge.HttpOrigin", version: "0.0.24" };
|
|
235
235
|
/**
|
|
236
236
|
* Throws an error if a duration is defined and not an integer number of seconds within a range.
|
|
237
237
|
*/
|
|
@@ -141,7 +141,7 @@ class ResponseHeadersPolicy extends aws_construct_1.AwsConstructBase {
|
|
|
141
141
|
}
|
|
142
142
|
exports.ResponseHeadersPolicy = ResponseHeadersPolicy;
|
|
143
143
|
_a = JSII_RTTI_SYMBOL_1;
|
|
144
|
-
ResponseHeadersPolicy[_a] = { fqn: "terraconstructs.aws.edge.ResponseHeadersPolicy", version: "0.0.
|
|
144
|
+
ResponseHeadersPolicy[_a] = { fqn: "terraconstructs.aws.edge.ResponseHeadersPolicy", version: "0.0.24" };
|
|
145
145
|
/**
|
|
146
146
|
* Enum representing possible values of the X-Frame-Options HTTP response header.
|
|
147
147
|
*/
|