UNPKG

cdk-monitoring-constructs

Version:

[![NPM version](https://badge.fury.io/js/cdk-monitoring-constructs.svg)](https://badge.fury.io/js/cdk-monitoring-constructs) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdkmonitoringconstructs/badge.svg)](https://m

73 lines 16 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.KinesisFirehoseMetricFactory = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const common_1 = require("../../common"); const FirehoseNamespace = "AWS/Firehose"; /** * @see https://docs.aws.amazon.com/firehose/latest/dev/monitoring-with-cloudwatch-metrics.html */ class KinesisFirehoseMetricFactory extends common_1.BaseMetricFactory { constructor(metricFactory, props) { super(metricFactory, props); this.dimensionsMap = { DeliveryStreamName: props.deliveryStreamName, }; } metricSuccessfulConversionCount() { return this.metricFactory.createMetric("SucceedConversion.Records", common_1.MetricStatistic.SUM, "Succeed", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } metricFailedConversionCount() { return this.metricFactory.createMetric("FailedConversion.Records", common_1.MetricStatistic.SUM, "Failed", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } metricIncomingBytes() { return this.metricFactory.createMetric("IncomingBytes", common_1.MetricStatistic.SUM, "Incoming (bytes)", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } metricIncomingPutRequests() { return this.metricFactory.createMetric("IncomingPutRequests", common_1.MetricStatistic.SUM, "Incoming (PutRequest)", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } metricIncomingRecordCount() { return this.metricFactory.createMetric("IncomingRecords", common_1.MetricStatistic.SUM, "Incoming (Records)", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } metricThrottledRecordCount() { return this.metricFactory.createMetric("ThrottledRecords", common_1.MetricStatistic.SUM, "Throttled", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } metricPutRecordLatencyP90InMillis() { return this.metricFactory.createMetric("PutRecord.Latency", common_1.MetricStatistic.P90, "PutRecord P90", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } metricPutRecordBatchLatencyP90InMillis() { return this.metricFactory.createMetric("PutRecordBatch.Latency", common_1.MetricStatistic.P90, "PutRecordBatch P90", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } metricIncomingBytesToLimitRate() { return this.metricFactory.createMetricMath("(bytes_in / PERIOD(bytes_in)) / bytes_max", { bytes_in: this.metricIncomingBytes(), bytes_max: this.metricBytesPerSecondLimit(), }, "Incoming Bytes / Limit"); } metricIncomingRecordsToLimitRate() { return this.metricFactory.createMetricMath("(records_in / PERIOD(records_in)) / records_max", { records_in: this.metricIncomingRecordCount(), records_max: this.metricRecordsPerSecondLimit(), }, "Incoming Records / Limit"); } metricIncomingPutRequestsToLimitRate() { return this.metricFactory.createMetricMath("(requests_in / PERIOD(requests_in)) / requests_max", { requests_in: this.metricIncomingPutRequests(), requests_max: this.metricPutRequestsPerSecondLimit(), }, "Incoming PutRequests / Limit"); } metricBytesPerSecondLimit() { return this.metricFactory.createMetric("BytesPerSecondLimit", common_1.MetricStatistic.AVERAGE, "Incoming Bytes/s Limit", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } metricRecordsPerSecondLimit() { return this.metricFactory.createMetric("RecordsPerSecondLimit", common_1.MetricStatistic.AVERAGE, "Records/s Limit", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } metricPutRequestsPerSecondLimit() { return this.metricFactory.createMetric("PutRequestsPerSecondLimit", common_1.MetricStatistic.AVERAGE, "PutRequests/s Limit", this.dimensionsMap, undefined, FirehoseNamespace, undefined, this.region, this.account); } } exports.KinesisFirehoseMetricFactory = KinesisFirehoseMetricFactory; _a = JSII_RTTI_SYMBOL_1; KinesisFirehoseMetricFactory[_a] = { fqn: "cdk-monitoring-constructs.KinesisFirehoseMetricFactory", version: "10.2.0" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiS2luZXNpc0ZpcmVob3NlTWV0cmljRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIktpbmVzaXNGaXJlaG9zZU1ldHJpY0ZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFFQSx5Q0FLc0I7QUFFdEIsTUFBTSxpQkFBaUIsR0FBRyxjQUFjLENBQUM7QUFPekM7O0dBRUc7QUFDSCxNQUFhLDRCQUE2QixTQUFRLDBCQUFpQjtJQUdqRSxZQUNFLGFBQTRCLEVBQzVCLEtBQXdDO1FBRXhDLEtBQUssQ0FBQyxhQUFhLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFNUIsSUFBSSxDQUFDLGFBQWEsR0FBRztZQUNuQixrQkFBa0IsRUFBRSxLQUFLLENBQUMsa0JBQWtCO1NBQzdDLENBQUM7SUFDSixDQUFDO0lBRUQsK0JBQStCO1FBQzdCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQ3BDLDJCQUEyQixFQUMzQix3QkFBZSxDQUFDLEdBQUcsRUFDbkIsU0FBUyxFQUNULElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELDJCQUEyQjtRQUN6QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQywwQkFBMEIsRUFDMUIsd0JBQWUsQ0FBQyxHQUFHLEVBQ25CLFFBQVEsRUFDUixJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7SUFFRCxtQkFBbUI7UUFDakIsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FDcEMsZUFBZSxFQUNmLHdCQUFlLENBQUMsR0FBRyxFQUNuQixrQkFBa0IsRUFDbEIsSUFB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RUFDeEIsSUFBSSxDQUFDLGFBQWEsRUFDbEIsU0FBUyxFQUNULGlCQUFpQixFQUNqQixTQUFTLEVBQ1QsSUFBSSxDQUFDLE1BQU0sRUFDWCxJQUFJLENBQUMsT0FBTyxDQUNiLENBQUM7SUFDSixDQUFDO0lBRUQsMkJBQTJCO1FBQ3pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxZQUFZLENBQ3BDLHVCQUF1QixFQUN2Qix3QkFBZSxDQUFDLE9BQU8sRUFDdkIsaUJBQWlCLEVBQ2pCLElBQUksQ0FBQyxhQUFhLEVBQ2xCLFNBQVMsRUFDVCxpQkFBaUIsRUFDakIsU0FBUyxFQUNULElBQUksQ0FBQyxNQUFNLEVBQ1gsSUFBSSxDQUFDLE9BQU8sQ0FDYixDQUFDO0lBQ0osQ0FBQztJQUVELCtCQUErQjtRQUM3QixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUNwQywyQkFBMkIsRUFDM0Isd0JBQWUsQ0FBQyxPQUFPLEVBQ3ZCLHFCQUFxQixFQUNyQixJQUFJLENBQUMsYUFBYSxFQUNsQixTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxJQUFJLENBQUMsTUFBTSxFQUNYLElBQUksQ0FBQyxPQUFPLENBQ2IsQ0FBQztJQUNKLENBQUM7O0FBdk1ILG9FQXdNQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERpbWVuc2lvbnNNYXAgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcblxuaW1wb3J0IHtcbiAgQmFzZU1ldHJpY0ZhY3RvcnksXG4gIEJhc2VNZXRyaWNGYWN0b3J5UHJvcHMsXG4gIE1ldHJpY0ZhY3RvcnksXG4gIE1ldHJpY1N0YXRpc3RpYyxcbn0gZnJvbSBcIi4uLy4uL2NvbW1vblwiO1xuXG5jb25zdCBGaXJlaG9zZU5hbWVzcGFjZSA9IFwiQVdTL0ZpcmVob3NlXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgS2luZXNpc0ZpcmVob3NlTWV0cmljRmFjdG9yeVByb3BzXG4gIGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3RvcnlQcm9wcyB7XG4gIHJlYWRvbmx5IGRlbGl2ZXJ5U3RyZWFtTmFtZTogc3RyaW5nO1xufVxuXG4vKipcbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2ZpcmVob3NlL2xhdGVzdC9kZXYvbW9uaXRvcmluZy13aXRoLWNsb3Vkd2F0Y2gtbWV0cmljcy5odG1sXG4gKi9cbmV4cG9ydCBjbGFzcyBLaW5lc2lzRmlyZWhvc2VNZXRyaWNGYWN0b3J5IGV4dGVuZHMgQmFzZU1ldHJpY0ZhY3Rvcnkge1xuICBwcm90ZWN0ZWQgcmVhZG9ubHkgZGltZW5zaW9uc01hcDogRGltZW5zaW9uc01hcDtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBtZXRyaWNGYWN0b3J5OiBNZXRyaWNGYWN0b3J5LFxuICAgIHByb3BzOiBLaW5lc2lzRmlyZWhvc2VNZXRyaWNGYWN0b3J5UHJvcHMsXG4gICkge1xuICAgIHN1cGVyKG1ldHJpY0ZhY3RvcnksIHByb3BzKTtcblxuICAgIHRoaXMuZGltZW5zaW9uc01hcCA9IHtcbiAgICAgIERlbGl2ZXJ5U3RyZWFtTmFtZTogcHJvcHMuZGVsaXZlcnlTdHJlYW1OYW1lLFxuICAgIH07XG4gIH1cblxuICBtZXRyaWNTdWNjZXNzZnVsQ29udmVyc2lvbkNvdW50KCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJTdWNjZWVkQ29udmVyc2lvbi5SZWNvcmRzXCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuU1VNLFxuICAgICAgXCJTdWNjZWVkXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBGaXJlaG9zZU5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNGYWlsZWRDb252ZXJzaW9uQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIkZhaWxlZENvbnZlcnNpb24uUmVjb3Jkc1wiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiRmFpbGVkXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBGaXJlaG9zZU5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNJbmNvbWluZ0J5dGVzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJJbmNvbWluZ0J5dGVzXCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuU1VNLFxuICAgICAgXCJJbmNvbWluZyAoYnl0ZXMpXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBGaXJlaG9zZU5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNJbmNvbWluZ1B1dFJlcXVlc3RzKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJJbmNvbWluZ1B1dFJlcXVlc3RzXCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuU1VNLFxuICAgICAgXCJJbmNvbWluZyAoUHV0UmVxdWVzdClcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIEZpcmVob3NlTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0luY29taW5nUmVjb3JkQ291bnQoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIkluY29taW5nUmVjb3Jkc1wiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiSW5jb21pbmcgKFJlY29yZHMpXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBGaXJlaG9zZU5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNUaHJvdHRsZWRSZWNvcmRDb3VudCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiVGhyb3R0bGVkUmVjb3Jkc1wiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlNVTSxcbiAgICAgIFwiVGhyb3R0bGVkXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBGaXJlaG9zZU5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNQdXRSZWNvcmRMYXRlbmN5UDkwSW5NaWxsaXMoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWMoXG4gICAgICBcIlB1dFJlY29yZC5MYXRlbmN5XCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuUDkwLFxuICAgICAgXCJQdXRSZWNvcmQgUDkwXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBGaXJlaG9zZU5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNQdXRSZWNvcmRCYXRjaExhdGVuY3lQOTBJbk1pbGxpcygpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiUHV0UmVjb3JkQmF0Y2guTGF0ZW5jeVwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLlA5MCxcbiAgICAgIFwiUHV0UmVjb3JkQmF0Y2ggUDkwXCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBGaXJlaG9zZU5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNJbmNvbWluZ0J5dGVzVG9MaW1pdFJhdGUoKSB7XG4gICAgcmV0dXJuIHRoaXMubWV0cmljRmFjdG9yeS5jcmVhdGVNZXRyaWNNYXRoKFxuICAgICAgXCIoYnl0ZXNfaW4gLyBQRVJJT0QoYnl0ZXNfaW4pKSAvIGJ5dGVzX21heFwiLFxuICAgICAge1xuICAgICAgICBieXRlc19pbjogdGhpcy5tZXRyaWNJbmNvbWluZ0J5dGVzKCksXG4gICAgICAgIGJ5dGVzX21heDogdGhpcy5tZXRyaWNCeXRlc1BlclNlY29uZExpbWl0KCksXG4gICAgICB9LFxuICAgICAgXCJJbmNvbWluZyBCeXRlcyAvIExpbWl0XCIsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0luY29taW5nUmVjb3Jkc1RvTGltaXRSYXRlKCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljTWF0aChcbiAgICAgIFwiKHJlY29yZHNfaW4gLyBQRVJJT0QocmVjb3Jkc19pbikpIC8gcmVjb3Jkc19tYXhcIixcbiAgICAgIHtcbiAgICAgICAgcmVjb3Jkc19pbjogdGhpcy5tZXRyaWNJbmNvbWluZ1JlY29yZENvdW50KCksXG4gICAgICAgIHJlY29yZHNfbWF4OiB0aGlzLm1ldHJpY1JlY29yZHNQZXJTZWNvbmRMaW1pdCgpLFxuICAgICAgfSxcbiAgICAgIFwiSW5jb21pbmcgUmVjb3JkcyAvIExpbWl0XCIsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY0luY29taW5nUHV0UmVxdWVzdHNUb0xpbWl0UmF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpY01hdGgoXG4gICAgICBcIihyZXF1ZXN0c19pbiAvIFBFUklPRChyZXF1ZXN0c19pbikpIC8gcmVxdWVzdHNfbWF4XCIsXG4gICAgICB7XG4gICAgICAgIHJlcXVlc3RzX2luOiB0aGlzLm1ldHJpY0luY29taW5nUHV0UmVxdWVzdHMoKSxcbiAgICAgICAgcmVxdWVzdHNfbWF4OiB0aGlzLm1ldHJpY1B1dFJlcXVlc3RzUGVyU2Vjb25kTGltaXQoKSxcbiAgICAgIH0sXG4gICAgICBcIkluY29taW5nIFB1dFJlcXVlc3RzIC8gTGltaXRcIixcbiAgICApO1xuICB9XG5cbiAgbWV0cmljQnl0ZXNQZXJTZWNvbmRMaW1pdCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiQnl0ZXNQZXJTZWNvbmRMaW1pdFwiLFxuICAgICAgTWV0cmljU3RhdGlzdGljLkFWRVJBR0UsXG4gICAgICBcIkluY29taW5nIEJ5dGVzL3MgTGltaXRcIixcbiAgICAgIHRoaXMuZGltZW5zaW9uc01hcCxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIEZpcmVob3NlTmFtZXNwYWNlLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgdGhpcy5yZWdpb24sXG4gICAgICB0aGlzLmFjY291bnQsXG4gICAgKTtcbiAgfVxuXG4gIG1ldHJpY1JlY29yZHNQZXJTZWNvbmRMaW1pdCgpIHtcbiAgICByZXR1cm4gdGhpcy5tZXRyaWNGYWN0b3J5LmNyZWF0ZU1ldHJpYyhcbiAgICAgIFwiUmVjb3Jkc1BlclNlY29uZExpbWl0XCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuQVZFUkFHRSxcbiAgICAgIFwiUmVjb3Jkcy9zIExpbWl0XCIsXG4gICAgICB0aGlzLmRpbWVuc2lvbnNNYXAsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICBGaXJlaG9zZU5hbWVzcGFjZSxcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIHRoaXMucmVnaW9uLFxuICAgICAgdGhpcy5hY2NvdW50LFxuICAgICk7XG4gIH1cblxuICBtZXRyaWNQdXRSZXF1ZXN0c1BlclNlY29uZExpbWl0KCkge1xuICAgIHJldHVybiB0aGlzLm1ldHJpY0ZhY3RvcnkuY3JlYXRlTWV0cmljKFxuICAgICAgXCJQdXRSZXF1ZXN0c1BlclNlY29uZExpbWl0XCIsXG4gICAgICBNZXRyaWNTdGF0aXN0aWMuQVZFUkFHRSxcbiAgICAgIFwiUHV0UmVxdWVzdHMvcyBMaW1pdFwiLFxuICAgICAgdGhpcy5kaW1lbnNpb25zTWFwLFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgRmlyZWhvc2VOYW1lc3BhY2UsXG4gICAgICB1bmRlZmluZWQsXG4gICAgICB0aGlzLnJlZ2lvbixcbiAgICAgIHRoaXMuYWNjb3VudCxcbiAgICApO1xuICB9XG59XG4iXX0=