@aws-solutions-constructs/aws-apigatewayv2websocket-sqs
Version:
CDK constructs for defining an interaction between an AWS Lambda function and an Amazon S3 bucket.
79 lines • 17.7 kB
JavaScript
;
var _a;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ApiGatewayV2WebSocketToSqs = void 0;
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance
* with the License. A copy of the License is located at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* or in the 'license' file accompanying this file. This file is distributed on an 'AS IS' BASIS, WITHOUT WARRANTIES
* OR CONDITIONS OF ANY KIND, express or implied. See the License for the specific language governing permissions
* and limitations under the License.
*/
const defaults = require("@aws-solutions-constructs/core");
const cdk = require("aws-cdk-lib");
const sqs = require("aws-cdk-lib/aws-sqs");
const constructs_1 = require("constructs");
class ApiGatewayV2WebSocketToSqs extends constructs_1.Construct {
constructor(scope, id, props) {
super(scope, id);
if (props.existingWebSocketApi && props.webSocketApiProps) {
throw new Error("Provide either an existing WebSocketApi instance or WebSocketApiProps, not both");
}
if (!props.existingWebSocketApi && !props.createDefaultRoute && !props.customRouteName) {
throw new Error("Either createDefaultRoute or customRouteName must be specified when creating a WebSocketApi");
}
const constructMandatedDlqProps = {
fifo: true,
deduplicationScope: sqs.DeduplicationScope.MESSAGE_GROUP,
fifoThroughputLimit: sqs.FifoThroughputLimit.PER_MESSAGE_GROUP_ID,
};
const constructMandatedQueueProps = {
fifo: true,
deduplicationScope: sqs.DeduplicationScope.MESSAGE_GROUP,
fifoThroughputLimit: sqs.FifoThroughputLimit.PER_MESSAGE_GROUP_ID,
redriveAllowPolicy: {
redrivePermission: sqs.RedrivePermission.DENY_ALL,
},
visibilityTimeout: cdk.Duration.minutes(15),
};
// Setup the queue
const buildQueueResponse = defaults.buildQueue(this, "queue", {
existingQueueObj: props.existingQueueObj,
queueProps: props.queueProps,
deployDeadLetterQueue: props.deployDeadLetterQueue,
deadLetterQueueProps: props.deadLetterQueueProps,
maxReceiveCount: props.maxReceiveCount,
enableEncryptionWithCustomerManagedKey: props.enableEncryptionWithCustomerManagedKey,
encryptionKey: props.encryptionKey,
encryptionKeyProps: props.encryptionKeyProps,
constructDeadLetterQueueProps: constructMandatedDlqProps,
constructQueueProps: constructMandatedQueueProps,
});
this.sqsQueue = buildQueueResponse.queue;
this.deadLetterQueue = buildQueueResponse.dlq;
const buildWebSocketQueueApiResponse = defaults.buildWebSocketQueueApi(this, id, {
queue: this.sqsQueue,
defaultRouteRequestTemplate: props.defaultRouteRequestTemplate,
createDefaultRoute: props.createDefaultRoute,
webSocketApiProps: props.webSocketApiProps,
existingWebSocketApi: props.existingWebSocketApi,
logGroupProps: props.logGroupProps,
defaultIamAuthorization: props.defaultIamAuthorization ?? true,
customRouteName: props.customRouteName,
});
this.webSocketApi = buildWebSocketQueueApiResponse.webSocketApi;
this.webSocketStage = buildWebSocketQueueApiResponse.webSocketStage;
this.apiGatewayRole = buildWebSocketQueueApiResponse.apiGatewayRole;
this.apiGatewayLogGroup = buildWebSocketQueueApiResponse.apiGatewayLogGroup;
}
}
exports.ApiGatewayV2WebSocketToSqs = ApiGatewayV2WebSocketToSqs;
_a = JSII_RTTI_SYMBOL_1;
ApiGatewayV2WebSocketToSqs[_a] = { fqn: "@aws-solutions-constructs/aws-apigatewayv2websocket-sqs.ApiGatewayV2WebSocketToSqs", version: "2.102.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7Ozs7Ozs7OztHQVdHO0FBRUgsMkRBQTJEO0FBQzNELG1DQUFtQztBQUtuQywyQ0FBMkM7QUFDM0MsMkNBQXVDO0FBMkd2QyxNQUFhLDBCQUEyQixTQUFRLHNCQUFTO0lBUXZELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0M7UUFDOUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLEtBQUssQ0FBQyxvQkFBb0IsSUFBSSxLQUFLLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztZQUMxRCxNQUFNLElBQUksS0FBSyxDQUFDLGlGQUFpRixDQUFDLENBQUM7UUFDckcsQ0FBQztRQUVELElBQUksQ0FBQyxLQUFLLENBQUMsb0JBQW9CLElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLElBQUksQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7WUFDdkYsTUFBTSxJQUFJLEtBQUssQ0FBQyw2RkFBNkYsQ0FBQyxDQUFDO1FBQ2pILENBQUM7UUFFRCxNQUFNLHlCQUF5QixHQUFtQjtZQUNoRCxJQUFJLEVBQUUsSUFBSTtZQUNWLGtCQUFrQixFQUFFLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhO1lBQ3hELG1CQUFtQixFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxvQkFBb0I7U0FDbEUsQ0FBQztRQUVGLE1BQU0sMkJBQTJCLEdBQW1CO1lBQ2xELElBQUksRUFBRSxJQUFJO1lBQ1Ysa0JBQWtCLEVBQUUsR0FBRyxDQUFDLGtCQUFrQixDQUFDLGFBQWE7WUFDeEQsbUJBQW1CLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixDQUFDLG9CQUFvQjtZQUNqRSxrQkFBa0IsRUFBRTtnQkFDbEIsaUJBQWlCLEVBQUUsR0FBRyxDQUFDLGlCQUFpQixDQUFDLFFBQVE7YUFDbEQ7WUFDRCxpQkFBaUIsRUFBRSxHQUFHLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDNUMsQ0FBQztRQUVGLGtCQUFrQjtRQUNsQixNQUFNLGtCQUFrQixHQUFHLFFBQVEsQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRTtZQUM1RCxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixxQkFBcUIsRUFBRSxLQUFLLENBQUMscUJBQXFCO1lBQ2xELG9CQUFvQixFQUFFLEtBQUssQ0FBQyxvQkFBb0I7WUFDaEQsZUFBZSxFQUFFLEtBQUssQ0FBQyxlQUFlO1lBQ3RDLHNDQUFzQyxFQUFFLEtBQUssQ0FBQyxzQ0FBc0M7WUFDcEYsYUFBYSxFQUFFLEtBQUssQ0FBQyxhQUFhO1lBQ2xDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7WUFDNUMsNkJBQTZCLEVBQUUseUJBQXlCO1lBQ3hELG1CQUFtQixFQUFFLDJCQUEyQjtTQUNqRCxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLGtCQUFrQixDQUFDLEtBQUssQ0FBQztRQUN6QyxJQUFJLENBQUMsZUFBZSxHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQztRQUU5QyxNQUFNLDhCQUE4QixHQUFHLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLEVBQUUsRUFBRSxFQUFFO1lBQy9FLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUTtZQUNwQiwyQkFBMkIsRUFBRSxLQUFLLENBQUMsMkJBQTJCO1lBQzlELGtCQUFrQixFQUFFLEtBQUssQ0FBQyxrQkFBa0I7WUFDNUMsaUJBQWlCLEVBQUUsS0FBSyxDQUFDLGlCQUFpQjtZQUMxQyxvQkFBb0IsRUFBRSxLQUFLLENBQUMsb0JBQW9CO1lBQ2hELGFBQWEsRUFBRSxLQUFLLENBQUMsYUFBYTtZQUNsQyx1QkFBdUIsRUFBRSxLQUFLLENBQUMsdUJBQXVCLElBQUksSUFBSTtZQUM5RCxlQUFlLEVBQUUsS0FBSyxDQUFDLGVBQWU7U0FDdkMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFlBQVksR0FBRyw4QkFBOEIsQ0FBQyxZQUFZLENBQUM7UUFDaEUsSUFBSSxDQUFDLGNBQWMsR0FBRyw4QkFBOEIsQ0FBQyxjQUFjLENBQUM7UUFDcEUsSUFBSSxDQUFDLGNBQWMsR0FBRyw4QkFBOEIsQ0FBQyxjQUFjLENBQUM7UUFDcEUsSUFBSSxDQUFDLGtCQUFrQixHQUFHLDhCQUE4QixDQUFDLGtCQUFrQixDQUFDO0lBQzlFLENBQUM7O0FBbEVILGdFQW1FQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpLiBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4gKiAgd2l0aCB0aGUgTGljZW5zZS4gQSBjb3B5IG9mIHRoZSBMaWNlbnNlIGlzIGxvY2F0ZWQgYXRcbiAqXG4gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqICBvciBpbiB0aGUgJ2xpY2Vuc2UnIGZpbGUgYWNjb21wYW55aW5nIHRoaXMgZmlsZS4gVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICdBUyBJUycgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFU1xuICogIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXG4gKiAgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5cbmltcG9ydCAqIGFzIGRlZmF1bHRzIGZyb20gXCJAYXdzLXNvbHV0aW9ucy1jb25zdHJ1Y3RzL2NvcmVcIjtcbmltcG9ydCAqIGFzIGNkayBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCAqIGFzIGFwaWd3djIgZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5djJcIjtcbmltcG9ydCAqIGFzIGlhbSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0ICogYXMga21zIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mta21zXCI7XG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbG9nc1wiO1xuaW1wb3J0ICogYXMgc3FzIGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3FzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFRoZSBwcm9wZXJ0aWVzIGZvciB0aGUgQXBpR2F0ZXdheVYyV2ViU29ja2V0VG9TcXMgY2xhc3MuXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQXBpR2F0ZXdheVYyV2ViU29ja2V0VG9TcXNQcm9wcyB7XG4gIC8qKlxuICAgKiBFeGlzdGluZyBpbnN0YW5jZSBvZiBXZWJTb2NrZXQgQVBJIG9iamVjdCwgcHJvdmlkaW5nIGJvdGggdGhpcyBhbmQgd2ViU29ja2V0QXBpUHJvcHMgd2lsbCBjYXVzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBleGlzdGluZ1dlYlNvY2tldEFwaT86IGFwaWd3djIuV2ViU29ja2V0QXBpO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCB1c2VyLXByb3ZpZGVkIHByb3BzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BzIGZvciB0aGUgQVBJIEdhdGV3YXkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wZXJ0aWVzIGFyZSB1c2VkLlxuICAgKi9cbiAgcmVhZG9ubHkgd2ViU29ja2V0QXBpUHJvcHM/OiBhcGlnd3YyLldlYlNvY2tldEFwaVByb3BzO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCAtIHVzZXIgcHJvdmlkZWQgcHJvcGVydGllcyB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwcm9wZXJ0aWVzIGZvciB0aGUgU1FTIHF1ZXVlLlxuICAgKiBQcm92aWRpbmcgYm90aCB0aGlzIGFuZCBgZXhpc3RpbmdRdWV1ZU9iamAgd2lsbCBjYXVzZSBhbiBlcnJvci5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBxdWV1ZVByb3BzPzogc3FzLlF1ZXVlUHJvcHM7XG5cbiAgLyoqXG4gICAqIEV4aXN0aW5nIGluc3RhbmNlIG9mIFNRUyBxdWV1ZSBvYmplY3QsIHByb3ZpZGluZyBib3RoIHRoaXMgIGFuZCBxdWV1ZVByb3BzIHdpbGwgY2F1c2UgYW4gZXJyb3JcbiAgICovXG4gIHJlYWRvbmx5IGV4aXN0aW5nUXVldWVPYmo/OiBzcXMuUXVldWU7XG5cbiAgLyoqXG4gICAqIE9wdGlvbmFsIHVzZXItcHJvdmlkZWQgcHJvcHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcHJvcHMgZm9yIHRoZSBsb2cgZ3JvdXAuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRGVmYXVsdCBwcm9wcyBhcmUgdXNlZFxuICAgKi9cbiAgcmVhZG9ubHkgbG9nR3JvdXBQcm9wcz86IGxvZ3MuTG9nR3JvdXBQcm9wcztcbiAgLyoqXG4gICAqIElmIG5vIGtleSBpcyBwcm92aWRlZCwgdGhpcyBmbGFnIGRldGVybWluZXMgd2hldGhlciB0aGUgcXVldWUgaXMgZW5jcnlwdGVkIHdpdGggYSBuZXcgQ01LIG9yIGFuIEFXUyBtYW5hZ2VkIGtleS5cbiAgICogVGhpcyBmbGFnIGlzIGlnbm9yZWQgaWYgYW55IG9mIHRoZSBmb2xsb3dpbmcgYXJlIGRlZmluZWQ6IHF1ZXVlUHJvcHMuZW5jcnlwdGlvbk1hc3RlcktleSwgZW5jcnlwdGlvbktleSBvciBlbmNyeXB0aW9uS2V5UHJvcHMuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gRmFsc2UgaWYgcXVldWVQcm9wcy5lbmNyeXB0aW9uTWFzdGVyS2V5LCBlbmNyeXB0aW9uS2V5LCBhbmQgZW5jcnlwdGlvbktleVByb3BzIGFyZSBhbGwgdW5kZWZpbmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlRW5jcnlwdGlvbldpdGhDdXN0b21lck1hbmFnZWRLZXk/OiBib29sZWFuO1xuICAvKipcbiAgICogQW4gb3B0aW9uYWwsIGltcG9ydGVkIGVuY3J5cHRpb24ga2V5IHRvIGVuY3J5cHQgdGhlIFNRUyBRdWV1ZSB3aXRoLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIE5vbmVcbiAgICovXG4gIHJlYWRvbmx5IGVuY3J5cHRpb25LZXk/OiBrbXMuS2V5O1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wZXJ0aWVzIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHByb3BlcnRpZXMgZm9yIHRoZSBLTVMgZW5jcnlwdGlvbiBrZXkgdXNlZCB0byBlbmNyeXB0IHRoZSBTUVMgcXVldWUgd2l0aC5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBOb25lXG4gICAqL1xuICByZWFkb25seSBlbmNyeXB0aW9uS2V5UHJvcHM/OiBrbXMuS2V5UHJvcHM7XG4gIC8qKlxuICAgKiBXaGV0aGVyIHRvIGRlcGxveSBhIHNlY29uZGFyeSBxdWV1ZSB0byBiZSB1c2VkIGFzIGEgZGVhZCBsZXR0ZXIgcXVldWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVxdWlyZWQgZmllbGQuXG4gICAqL1xuICByZWFkb25seSBkZXBsb3lEZWFkTGV0dGVyUXVldWU/OiBib29sZWFuO1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBwcm9wZXJ0aWVzIGZvciB0aGUgZGVhZCBsZXR0ZXIgcXVldWVcbiAgICpcbiAgICogQGRlZmF1bHQgLSBEZWZhdWx0IHByb3BzIGFyZSB1c2VkXG4gICAqL1xuICByZWFkb25seSBkZWFkTGV0dGVyUXVldWVQcm9wcz86IHNxcy5RdWV1ZVByb3BzO1xuICAvKipcbiAgICogVGhlIG51bWJlciBvZiB0aW1lcyBhIG1lc3NhZ2UgY2FuIGJlIHVuc3VjY2Vzc2Z1bGx5IGRlcXVldWVkIGJlZm9yZSBiZWluZyBtb3ZlZCB0byB0aGUgZGVhZC1sZXR0ZXIgcXVldWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gcmVxdWlyZWQgb25seSBpZiBkZXBsb3lEZWFkTGV0dGVyUXVldWUgPSB0cnVlLlxuICAgKi9cbiAgcmVhZG9ubHkgbWF4UmVjZWl2ZUNvdW50PzogbnVtYmVyO1xuICAvKipcbiAgICogT3B0aW9uYWwgdXNlciBwcm92aWRlZCBBUEkgR2F0ZXdheSBSZXF1ZXN0IFRlbXBsYXRlIGZvciB0aGUgJGRlZmF1bHQgcm91dGUgb3IgY3VzdG9tUm91dGUgKGlmIGN1c3RvbVJvdXRlTmFtZSBpcyBwcm92aWRlZCkuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gY29uc3RydWN0IHdpbGwgY3JlYXRlIGFuZCBhc3NpZ24gYSB0ZW1wbGF0ZSB3aXRoIGRlZmF1bHQgc2V0dGluZ3MgdG8gc2VuZCBtZXNzYWdlcyB0byBRdWV1ZS5cbiAgICovXG4gIHJlYWRvbmx5IGRlZmF1bHRSb3V0ZVJlcXVlc3RUZW1wbGF0ZT86IHsgW2NvbnRlbnRUeXBlOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gY3JlYXRlIGEgJGRlZmF1bHQgcm91dGUuIElmIHNldCB0byB0cnVlLCB0aGVuIGl0IHdpbGwgdXNlIHRoZSB2YWx1ZSBzdXBwbGllZCB3aXRoIGBkZWZhdWx0Um91dGVSZXF1ZXN0VGVtcGxhdGVgLlxuICAgKiBBdCBsZWFzdCBvbmUgb2YgY3JlYXRlRGVmYXVsdFJvdXRlIG9yIGN1c3RvbVJvdXRlTmFtZSBtdXN0IGJlIHByb3ZpZGVkLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlRGVmYXVsdFJvdXRlPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSByb3V0ZSB0aGF0IHdpbGwgYmUgc2VudCB0aHJvdWdoIFdlYlNvY2tldEFwaVByb3BzLnJvdXRlU2VsZWN0aW9uRXhwcmVzc2lvbiB3aGVuIGludm9raW5nIHRoZSBXZWJTb2NrZXRcbiAgICogZW5kcG9pbnQuIEF0IGxlYXN0IG9uZSBvZiBjcmVhdGVEZWZhdWx0Um91dGUgb3IgY3VzdG9tUm91dGVOYW1lIG11c3QgYmUgcHJvdmlkZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gTm9uZVxuICAgKi9cbiAgcmVhZG9ubHkgY3VzdG9tUm91dGVOYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogQWRkIElBTSBhdXRob3JpemF0aW9uIHRvIHRoZSAkY29ubmVjdCBwYXRoIGJ5IGRlZmF1bHQuIE9ubHkgc2V0IHRoaXMgdG8gZmFsc2UgaWY6IDEpIElmIHBsYW4gdG8gcHJvdmlkZSBhbiBhdXRob3JpemVyIHdpdGhcbiAgICogdGhlIGAkY29ubmVjdGAgcm91dGU7IG9yIDIpIFRoZSBBUEkgc2hvdWxkIGJlIG9wZW4gKG5vIGF1dGhvcml6YXRpb24pIChBV1MgcmVjb21tZW5kcyBhZ2FpbnN0IGRlcGxveWluZyB1bnByb3RlY3RlZCBBUElzKS5cbiAgICpcbiAgICogSWYgYW4gYXV0aG9yaXplciBpcyBzcGVjaWZpZWQgaW4gY29ubmVjdFJvdXRlT3B0aW9ucywgdGhpcyBwYXJhbWV0ZXIgaXMgaWdub3JlZCBhbmQgbm8gZGVmYXVsdCBJQU0gYXV0aG9yaXplciB3aWxsIGJlIGNyZWF0ZWRcbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBkZWZhdWx0SWFtQXV0aG9yaXphdGlvbj86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBBcGlHYXRld2F5VjJXZWJTb2NrZXRUb1NxcyBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSB3ZWJTb2NrZXRBcGk6IGFwaWd3djIuV2ViU29ja2V0QXBpO1xuICBwdWJsaWMgcmVhZG9ubHkgd2ViU29ja2V0U3RhZ2U6IGFwaWd3djIuV2ViU29ja2V0U3RhZ2U7XG4gIHB1YmxpYyByZWFkb25seSBhcGlHYXRld2F5Um9sZTogaWFtLlJvbGU7XG4gIHB1YmxpYyByZWFkb25seSBhcGlHYXRld2F5TG9nR3JvdXA6IGxvZ3MuTG9nR3JvdXA7XG4gIHB1YmxpYyByZWFkb25seSBzcXNRdWV1ZTogc3FzLlF1ZXVlO1xuICBwdWJsaWMgcmVhZG9ubHkgZGVhZExldHRlclF1ZXVlPzogc3FzLkRlYWRMZXR0ZXJRdWV1ZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQXBpR2F0ZXdheVYyV2ViU29ja2V0VG9TcXNQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBpZiAocHJvcHMuZXhpc3RpbmdXZWJTb2NrZXRBcGkgJiYgcHJvcHMud2ViU29ja2V0QXBpUHJvcHMpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlByb3ZpZGUgZWl0aGVyIGFuIGV4aXN0aW5nIFdlYlNvY2tldEFwaSBpbnN0YW5jZSBvciBXZWJTb2NrZXRBcGlQcm9wcywgbm90IGJvdGhcIik7XG4gICAgfVxuXG4gICAgaWYgKCFwcm9wcy5leGlzdGluZ1dlYlNvY2tldEFwaSAmJiAhcHJvcHMuY3JlYXRlRGVmYXVsdFJvdXRlICYmICFwcm9wcy5jdXN0b21Sb3V0ZU5hbWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIkVpdGhlciBjcmVhdGVEZWZhdWx0Um91dGUgb3IgY3VzdG9tUm91dGVOYW1lIG11c3QgYmUgc3BlY2lmaWVkIHdoZW4gY3JlYXRpbmcgYSBXZWJTb2NrZXRBcGlcIik7XG4gICAgfVxuXG4gICAgY29uc3QgY29uc3RydWN0TWFuZGF0ZWREbHFQcm9wczogc3FzLlF1ZXVlUHJvcHMgPSB7XG4gICAgICBmaWZvOiB0cnVlLFxuICAgICAgZGVkdXBsaWNhdGlvblNjb3BlOiBzcXMuRGVkdXBsaWNhdGlvblNjb3BlLk1FU1NBR0VfR1JPVVAsXG4gICAgICBmaWZvVGhyb3VnaHB1dExpbWl0OiBzcXMuRmlmb1Rocm91Z2hwdXRMaW1pdC5QRVJfTUVTU0FHRV9HUk9VUF9JRCxcbiAgICB9O1xuXG4gICAgY29uc3QgY29uc3RydWN0TWFuZGF0ZWRRdWV1ZVByb3BzOiBzcXMuUXVldWVQcm9wcyA9IHtcbiAgICAgIGZpZm86IHRydWUsXG4gICAgICBkZWR1cGxpY2F0aW9uU2NvcGU6IHNxcy5EZWR1cGxpY2F0aW9uU2NvcGUuTUVTU0FHRV9HUk9VUCxcbiAgICAgIGZpZm9UaHJvdWdocHV0TGltaXQ6IHNxcy5GaWZvVGhyb3VnaHB1dExpbWl0LlBFUl9NRVNTQUdFX0dST1VQX0lELFxuICAgICAgcmVkcml2ZUFsbG93UG9saWN5OiB7XG4gICAgICAgIHJlZHJpdmVQZXJtaXNzaW9uOiBzcXMuUmVkcml2ZVBlcm1pc3Npb24uREVOWV9BTEwsXG4gICAgICB9LFxuICAgICAgdmlzaWJpbGl0eVRpbWVvdXQ6IGNkay5EdXJhdGlvbi5taW51dGVzKDE1KSxcbiAgICB9O1xuXG4gICAgLy8gU2V0dXAgdGhlIHF1ZXVlXG4gICAgY29uc3QgYnVpbGRRdWV1ZVJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRRdWV1ZSh0aGlzLCBcInF1ZXVlXCIsIHtcbiAgICAgIGV4aXN0aW5nUXVldWVPYmo6IHByb3BzLmV4aXN0aW5nUXVldWVPYmosXG4gICAgICBxdWV1ZVByb3BzOiBwcm9wcy5xdWV1ZVByb3BzLFxuICAgICAgZGVwbG95RGVhZExldHRlclF1ZXVlOiBwcm9wcy5kZXBsb3lEZWFkTGV0dGVyUXVldWUsXG4gICAgICBkZWFkTGV0dGVyUXVldWVQcm9wczogcHJvcHMuZGVhZExldHRlclF1ZXVlUHJvcHMsXG4gICAgICBtYXhSZWNlaXZlQ291bnQ6IHByb3BzLm1heFJlY2VpdmVDb3VudCxcbiAgICAgIGVuYWJsZUVuY3J5cHRpb25XaXRoQ3VzdG9tZXJNYW5hZ2VkS2V5OiBwcm9wcy5lbmFibGVFbmNyeXB0aW9uV2l0aEN1c3RvbWVyTWFuYWdlZEtleSxcbiAgICAgIGVuY3J5cHRpb25LZXk6IHByb3BzLmVuY3J5cHRpb25LZXksXG4gICAgICBlbmNyeXB0aW9uS2V5UHJvcHM6IHByb3BzLmVuY3J5cHRpb25LZXlQcm9wcyxcbiAgICAgIGNvbnN0cnVjdERlYWRMZXR0ZXJRdWV1ZVByb3BzOiBjb25zdHJ1Y3RNYW5kYXRlZERscVByb3BzLFxuICAgICAgY29uc3RydWN0UXVldWVQcm9wczogY29uc3RydWN0TWFuZGF0ZWRRdWV1ZVByb3BzLFxuICAgIH0pO1xuICAgIHRoaXMuc3FzUXVldWUgPSBidWlsZFF1ZXVlUmVzcG9uc2UucXVldWU7XG4gICAgdGhpcy5kZWFkTGV0dGVyUXVldWUgPSBidWlsZFF1ZXVlUmVzcG9uc2UuZGxxO1xuXG4gICAgY29uc3QgYnVpbGRXZWJTb2NrZXRRdWV1ZUFwaVJlc3BvbnNlID0gZGVmYXVsdHMuYnVpbGRXZWJTb2NrZXRRdWV1ZUFwaSh0aGlzLCBpZCwge1xuICAgICAgcXVldWU6IHRoaXMuc3FzUXVldWUsXG4gICAgICBkZWZhdWx0Um91dGVSZXF1ZXN0VGVtcGxhdGU6IHByb3BzLmRlZmF1bHRSb3V0ZVJlcXVlc3RUZW1wbGF0ZSxcbiAgICAgIGNyZWF0ZURlZmF1bHRSb3V0ZTogcHJvcHMuY3JlYXRlRGVmYXVsdFJvdXRlLFxuICAgICAgd2ViU29ja2V0QXBpUHJvcHM6IHByb3BzLndlYlNvY2tldEFwaVByb3BzLFxuICAgICAgZXhpc3RpbmdXZWJTb2NrZXRBcGk6IHByb3BzLmV4aXN0aW5nV2ViU29ja2V0QXBpLFxuICAgICAgbG9nR3JvdXBQcm9wczogcHJvcHMubG9nR3JvdXBQcm9wcyxcbiAgICAgIGRlZmF1bHRJYW1BdXRob3JpemF0aW9uOiBwcm9wcy5kZWZhdWx0SWFtQXV0aG9yaXphdGlvbiA/PyB0cnVlLFxuICAgICAgY3VzdG9tUm91dGVOYW1lOiBwcm9wcy5jdXN0b21Sb3V0ZU5hbWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLndlYlNvY2tldEFwaSA9IGJ1aWxkV2ViU29ja2V0UXVldWVBcGlSZXNwb25zZS53ZWJTb2NrZXRBcGk7XG4gICAgdGhpcy53ZWJTb2NrZXRTdGFnZSA9IGJ1aWxkV2ViU29ja2V0UXVldWVBcGlSZXNwb25zZS53ZWJTb2NrZXRTdGFnZTtcbiAgICB0aGlzLmFwaUdhdGV3YXlSb2xlID0gYnVpbGRXZWJTb2NrZXRRdWV1ZUFwaVJlc3BvbnNlLmFwaUdhdGV3YXlSb2xlO1xuICAgIHRoaXMuYXBpR2F0ZXdheUxvZ0dyb3VwID0gYnVpbGRXZWJTb2NrZXRRdWV1ZUFwaVJlc3BvbnNlLmFwaUdhdGV3YXlMb2dHcm91cDtcbiAgfVxufVxuIl19