@aws-cdk/aws-ivs-alpha
Version:
The CDK Construct Library for AWS::IVS
189 lines • 25.2 kB
JavaScript
;
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
var _, done = false;
for (var i = decorators.length - 1; i >= 0; i--) {
var context = {};
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
if (kind === "accessor") {
if (result === void 0) continue;
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
if (_ = accept(result.get)) descriptor.get = _;
if (_ = accept(result.set)) descriptor.set = _;
if (_ = accept(result.init)) initializers.unshift(_);
}
else if (_ = accept(result)) {
if (kind === "field") initializers.unshift(_);
else descriptor[key] = _;
}
}
if (target) Object.defineProperty(target, contextIn.name, descriptor);
done = true;
};
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
var useValue = arguments.length > 2;
for (var i = 0; i < initializers.length; i++) {
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
}
return useValue ? value : void 0;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.RecordingConfiguration = void 0;
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_ivs_1 = require("aws-cdk-lib/aws-ivs");
const core_1 = require("aws-cdk-lib/core");
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
/**
* The IVS Recording configuration
*
* @resource AWS::IVS::RecordingConfiguration
*/
let RecordingConfiguration = (() => {
let _classDecorators = [prop_injectable_1.propertyInjectable];
let _classDescriptor;
let _classExtraInitializers = [];
let _classThis;
let _classSuper = core_1.Resource;
var RecordingConfiguration = class extends _classSuper {
static { _classThis = this; }
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
RecordingConfiguration = _classThis = _classDescriptor.value;
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
}
static [JSII_RTTI_SYMBOL_1] = { fqn: "@aws-cdk/aws-ivs-alpha.RecordingConfiguration", version: "2.257.0-alpha.0" };
/** Uniquely identifies this class. */
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-ivs-alpha.RecordingConfiguration';
/**
* Imports an IVS Recording Configuration from attributes.
*/
static fromRecordingConfigurationId(scope, id, recordingConfigurationId) {
class Import extends core_1.Resource {
recordingConfigurationId = recordingConfigurationId;
recordingConfigurationArn = core_1.Stack.of(this).formatArn({
resource: 'recording-configuration',
service: 'ivs',
resourceName: recordingConfigurationId,
});
}
return new Import(scope, id);
}
/**
* Imports an IVS Recording Configuration from its ARN
*/
static fromArn(scope, id, recordingConfigurationArn) {
const resourceParts = core_1.Fn.split('/', recordingConfigurationArn);
if (!resourceParts || resourceParts.length < 2) {
throw new Error(`Unexpected ARN format: ${recordingConfigurationArn}`);
}
const recordingConfigurationId = core_1.Fn.select(1, resourceParts);
class Import extends core_1.Resource {
recordingConfigurationId = recordingConfigurationId;
recordingConfigurationArn = recordingConfigurationArn;
}
return new Import(scope, id);
}
/**
* The ID of the Recording configuration.
* @attribute
*/
recordingConfigurationId;
/**
* The ARN of the Recording configuration.
* @attribute
*/
recordingConfigurationArn;
props;
constructor(scope, id, props) {
super(scope, id, {
physicalName: props.recordingConfigurationName,
});
try {
jsiiDeprecationWarnings._aws_cdk_aws_ivs_alpha_RecordingConfigurationProps(props);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, RecordingConfiguration);
}
throw error;
}
// Enhanced CDK Analytics Telemetry
(0, metadata_resource_1.addConstructMetadata)(this, props);
this.props = props;
this.validateRecordingConfigurationName();
this.validateRecordingReconnectWindowSeconds();
const resource = new aws_ivs_1.CfnRecordingConfiguration(this, 'Resource', {
destinationConfiguration: {
s3: {
bucketName: this.props.bucket.bucketRef.bucketName,
},
},
name: this.props.recordingConfigurationName,
recordingReconnectWindowSeconds: this.props.recordingReconnectWindow?.toSeconds(),
renditionConfiguration: this._renderRenditionConfiguration(),
thumbnailConfiguration: this._renderThumbnailConfiguration(),
});
this.recordingConfigurationId = resource.ref;
this.recordingConfigurationArn = resource.attrArn;
}
_renderRenditionConfiguration() {
if (!this.props.renditionConfiguration) {
return;
}
return {
renditions: this.props.renditionConfiguration.renditions,
renditionSelection: this.props.renditionConfiguration.renditionSelection,
};
}
_renderThumbnailConfiguration() {
if (!this.props.thumbnailConfiguration) {
return;
}
return {
recordingMode: this.props.thumbnailConfiguration.recordingMode,
resolution: this.props.thumbnailConfiguration.resolution,
storage: this.props.thumbnailConfiguration.storage,
targetIntervalSeconds: this.props.thumbnailConfiguration.targetInterval?.toSeconds(),
};
}
validateRecordingConfigurationName() {
const recordingConfigurationName = this.props.recordingConfigurationName;
if (recordingConfigurationName == undefined || core_1.Token.isUnresolved(recordingConfigurationName)) {
return;
}
if (!/^[a-zA-Z0-9-_]*$/.test(recordingConfigurationName)) {
throw new Error(`\`recordingConfigurationName\` must consist only of alphanumeric characters, hyphens or underbars, got: ${recordingConfigurationName}.`);
}
if (recordingConfigurationName.length > 128) {
throw new Error(`\`recordingConfigurationName\` must be less than or equal to 128 characters, got: ${recordingConfigurationName.length} characters.`);
}
}
validateRecordingReconnectWindowSeconds() {
const recordingReconnectWindow = this.props.recordingReconnectWindow;
if (recordingReconnectWindow === undefined || core_1.Token.isUnresolved(recordingReconnectWindow)) {
return;
}
if (0 < recordingReconnectWindow.toMilliseconds() && recordingReconnectWindow.toMilliseconds() < core_1.Duration.seconds(1).toMilliseconds()) {
throw new Error(`\`recordingReconnectWindow\` must be between 0 and 300 seconds, got ${recordingReconnectWindow.toMilliseconds()} milliseconds.`);
}
if (recordingReconnectWindow.toSeconds() > 300) {
throw new Error(`\`recordingReconnectWindow\` must be between 0 and 300 seconds, got ${recordingReconnectWindow.toSeconds()} seconds.`);
}
}
static {
__runInitializers(_classThis, _classExtraInitializers);
}
};
return RecordingConfiguration = _classThis;
})();
exports.RecordingConfiguration = RecordingConfiguration;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWNvcmRpbmctY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBZ0U7QUFHaEUsMkNBQXdFO0FBQ3hFLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFvRTFFOzs7O0dBSUc7SUFFVSxzQkFBc0I7NEJBRGxDLG9DQUFrQjs7OztzQkFDeUIsZUFBUTtzQ0FBaEIsU0FBUSxXQUFROzs7O1lBQXBELDZLQTBJQzs7Ozs7UUF6SUMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVywrQ0FBK0MsQ0FBQztRQUV2Rzs7V0FFRztRQUNJLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFDckUsd0JBQWdDO1lBQ2hDLE1BQU0sTUFBTyxTQUFRLGVBQVE7Z0JBQ1gsd0JBQXdCLEdBQUcsd0JBQXdCLENBQUM7Z0JBQ3BELHlCQUF5QixHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUNuRSxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxPQUFPLEVBQUUsS0FBSztvQkFDZCxZQUFZLEVBQUUsd0JBQXdCO2lCQUN2QyxDQUFDLENBQUM7YUFDSjtZQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlCO1FBRUQ7O1dBRUc7UUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLHlCQUFpQztZQUNuRixNQUFNLGFBQWEsR0FBRyxTQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1lBRS9ELElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0Ms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UmVjb3JkaW5nQ29uZmlndXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pdnMnO1xuaW1wb3J0IHR5cGUgeyBJQnVja2V0UmVmIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXMzJztcbmltcG9ydCB0eXBlIHsgSVJlc291cmNlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgRm4sIFJlc291cmNlLCBTdGFjaywgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IGFkZENvbnN0cnVjdE1ldGFkYXRhIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvbWV0YWRhdGEtcmVzb3VyY2UnO1xuaW1wb3J0IHsgcHJvcGVydHlJbmplY3RhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvcHJvcC1pbmplY3RhYmxlJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgdHlwZSB7IFJlbmRpdGlvbkNvbmZpZ3VyYXRpb24gfSBmcm9tICcuL3JlbmRpdGlvbi1jb25maWd1cmF0aW9uJztcbmltcG9ydCB0eXBlIHsgVGh1bWJuYWlsQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vdGh1bWJuYWlsLWNvbmZpZ3VyYXRpb24nO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgb2YgdGhlIElWUyBSZWNvcmRpbmcgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJlY29yZGluZ0NvbmZpZ3VyYXRpb25Qcm9wcyB7XG4gIC8qKlxuICAgKiBTMyBidWNrZXQgd2hlcmUgcmVjb3JkZWQgdmlkZW9zIHdpbGwgYmUgc3RvcmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYnVja2V0OiBJQnVja2V0UmVmO1xuXG4gIC8qKlxuICAgKiBUaGUgbmFtZSBvZiB0aGUgUmVjb3JkaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqIFRoZSB2YWx1ZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHVuaXF1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBhdXRvIGdlbmVyYXRlXG4gICAqL1xuICByZWFkb25seSByZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogSWYgYSBicm9hZGNhc3QgZGlzY29ubmVjdHMgYW5kIHRoZW4gcmVjb25uZWN0cyB3aXRoaW4gdGhlIHNwZWNpZmllZCBpbnRlcnZhbCxcbiAgICogdGhlIG11bHRpcGxlIHN0cmVhbXMgd2lsbCBiZSBjb25zaWRlcmVkIGEgc2luZ2xlIGJyb2FkY2FzdCBhbmQgbWVyZ2VkIHRvZ2V0aGVyLlxuICAgKlxuICAgKiBgcmVjb3JkaW5nUmVjb25uZWN0V2luZG93YCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMzAwIHNlY29uZHNcbiAgICpcbiAgICogQGRlZmF1bHQgLSAwIHNlY29uZHMgKG1lYW5zIGRpc2FibGVkKVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjb3JkaW5nUmVjb25uZWN0V2luZG93PzogRHVyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgcmVuZGl0aW9uIGNvbmZpZ3VyYXRpb24gZGVzY3JpYmVzIHdoaWNoIHJlbmRpdGlvbnMgc2hvdWxkIGJlIHJlY29yZGVkIGZvciBhIHN0cmVhbS5cbiAgICpcbiAgICogQHNlZSBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1pdnMtcmVjb3JkaW5nY29uZmlndXJhdGlvbi1yZW5kaXRpb25jb25maWd1cmF0aW9uLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgLSBubyByZW5kaXRpb24gY29uZmlndXJhdGlvblxuICAgKi9cbiAgcmVhZG9ubHkgcmVuZGl0aW9uQ29uZmlndXJhdGlvbj86IFJlbmRpdGlvbkNvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgdGh1bWJuYWlsIGNvbmZpZ3VyYXRpb24gZW5hYmxlcy9kaXNhYmxlcyB0aGUgcmVjb3JkaW5nIG9mIHRodW1ibmFpbHMgZm9yIGEgbGl2ZSBzZXNzaW9uIGFuZCBjb250cm9scyB0aGUgaW50ZXJ2YWwgYXQgd2hpY2ggdGh1bWJuYWlscyBhcmUgZ2VuZXJhdGVkIGZvciB0aGUgbGl2ZSBzZXNzaW9uLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWl2cy1yZWNvcmRpbmdjb25maWd1cmF0aW9uLXRodW1ibmFpbGNvbmZpZ3VyYXRpb24uaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHRodW1ibmFpbCBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSB0aHVtYm5haWxDb25maWd1cmF0aW9uPzpUaHVtYm5haWxDb25maWd1cmF0aW9uO1xufVxuXG4vKipcbiAqIFJlcHJlc2VudHMgdGhlIElWUyBSZWNvcmRpbmcgY29uZmlndXJhdGlvbi5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJUmVjb3JkaW5nQ29uZmlndXJhdGlvbiBleHRlbmRzIElSZXNvdXJjZSB7XG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFJlY29yZGluZyBjb25maWd1cmF0aW9uLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByZWNvcmRpbmdDb25maWd1cmF0aW9uSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgUmVjb3JkaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25Bcm46IHN0cmluZztcbn1cblxuLyoqXG4gKiBUaGUgSVZTIFJlY29yZGluZyBjb25maWd1cmF0aW9uXG4gKlxuICogQHJlc291cmNlIEFXUzo6SVZTOjpSZWNvcmRpbmdDb25maWd1cmF0aW9uXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBSZWNvcmRpbmdDb25maWd1cmF0aW9uIGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUmVjb3JkaW5nQ29uZmlndXJhdGlvbiB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWl2cy1hbHBoYS5SZWNvcmRpbmdDb25maWd1cmF0aW9uJztcblxuICAvKipcbiAgICogSW1wb3J0cyBhbiBJVlMgUmVjb3JkaW5nIENvbmZpZ3VyYXRpb24gZnJvbSBhdHRyaWJ1dGVzLlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tUmVjb3JkaW5nQ29uZmlndXJhdGlvbklkKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsXG4gICAgcmVjb3JkaW5nQ29uZmlndXJhdGlvbklkOiBzdHJpbmcpOiBJUmVjb3JkaW5nQ29uZmlndXJhdGlvbiB7XG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUmVjb3JkaW5nQ29uZmlndXJhdGlvbiB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVjb3JkaW5nQ29uZmlndXJhdGlvbklkID0gcmVjb3JkaW5nQ29uZmlndXJhdGlvbklkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25Bcm4gPSBTdGFjay5vZih0aGlzKS5mb3JtYXRBcm4oe1xuICAgICAgICByZXNvdXJjZTogJ3JlY29yZGluZy1jb25maWd1cmF0aW9uJyxcbiAgICAgICAgc2VydmljZTogJ2l2cycsXG4gICAgICAgIHJlc291cmNlTmFtZTogcmVjb3JkaW5nQ29uZmlndXJhdGlvbklkLFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbXBvcnRzIGFuIElWUyBSZWNvcmRpbmcgQ29uZmlndXJhdGlvbiBmcm9tIGl0cyBBUk5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbUFybihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCByZWNvcmRpbmdDb25maWd1cmF0aW9uQXJuOiBzdHJpbmcpOiBJUmVjb3JkaW5nQ29uZmlndXJhdGlvbiB7XG4gICAgY29uc3QgcmVzb3VyY2VQYXJ0cyA9IEZuLnNwbGl0KCcvJywgcmVjb3JkaW5nQ29uZmlndXJhdGlvbkFybik7XG5cbiAgICBpZiAoIXJlc291cmNlUGFydHMgfHwgcmVzb3VyY2VQYXJ0cy5sZW5ndGggPCAyKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgQVJOIGZvcm1hdDogJHtyZWNvcmRpbmdDb25maWd1cmF0aW9uQXJufWApO1xuICAgIH1cblxuICAgIGNvbnN0IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZCA9IEZuLnNlbGVjdCgxLCByZXNvdXJjZVBhcnRzKTtcblxuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJlY29yZGluZ0NvbmZpZ3VyYXRpb24ge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZCA9IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSByZWNvcmRpbmdDb25maWd1cmF0aW9uQXJuID0gcmVjb3JkaW5nQ29uZmlndXJhdGlvbkFybjtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgUmVjb3JkaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBSZWNvcmRpbmcgY29uZmlndXJhdGlvbi5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjb3JkaW5nQ29uZmlndXJhdGlvbkFybjogc3RyaW5nO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvcHM6IFJlY29yZGluZ0NvbmZpZ3VyYXRpb25Qcm9wcztcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJlY29yZGluZ0NvbmZpZ3VyYXRpb25Qcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgcGh5c2ljYWxOYW1lOiBwcm9wcy5yZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZSxcbiAgICB9KTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcblxuICAgIHRoaXMudmFsaWRhdGVSZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZSgpO1xuICAgIHRoaXMudmFsaWRhdGVSZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3dTZWNvbmRzKCk7XG5cbiAgICBjb25zdCByZXNvdXJjZSA9IG5ldyBDZm5SZWNvcmRpbmdDb25maWd1cmF0aW9uKHRoaXMsICdSZXNvdXJjZScsIHtcbiAgICAgIGRlc3RpbmF0aW9uQ29uZmlndXJhdGlvbjoge1xuICAgICAgICBzMzoge1xuICAgICAgICAgIGJ1Y2tldE5hbWU6IHRoaXMucHJvcHMuYnVja2V0LmJ1Y2tldFJlZi5idWNrZXROYW1lLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG5hbWU6IHRoaXMucHJvcHMucmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWUsXG4gICAgICByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3dTZWNvbmRzOiB0aGlzLnByb3BzLnJlY29yZGluZ1JlY29ubmVjdFdpbmRvdz8udG9TZWNvbmRzKCksXG4gICAgICByZW5kaXRpb25Db25maWd1cmF0aW9uOiB0aGlzLl9yZW5kZXJSZW5kaXRpb25Db25maWd1cmF0aW9uKCksXG4gICAgICB0aHVtYm5haWxDb25maWd1cmF0aW9uOiB0aGlzLl9yZW5kZXJUaHVtYm5haWxDb25maWd1cmF0aW9uKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZCA9IHJlc291cmNlLnJlZjtcbiAgICB0aGlzLnJlY29yZGluZ0NvbmZpZ3VyYXRpb25Bcm4gPSByZXNvdXJjZS5hdHRyQXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyUmVuZGl0aW9uQ29uZmlndXJhdGlvbigpOiBDZm5SZWNvcmRpbmdDb25maWd1cmF0aW9uLlJlbmRpdGlvbkNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnJlbmRpdGlvbkNvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVuZGl0aW9uczogdGhpcy5wcm9wcy5yZW5kaXRpb25Db25maWd1cmF0aW9uLnJlbmRpdGlvbnMsXG4gICAgICByZW5kaXRpb25TZWxlY3Rpb246IHRoaXMucHJvcHMucmVuZGl0aW9uQ29uZmlndXJhdGlvbi5yZW5kaXRpb25TZWxlY3Rpb24sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlclRodW1ibmFpbENvbmZpZ3VyYXRpb24oKTogQ2ZuUmVjb3JkaW5nQ29uZmlndXJhdGlvbi5UaHVtYm5haWxDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5wcm9wcy50aHVtYm5haWxDb25maWd1cmF0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlY29yZGluZ01vZGU6IHRoaXMucHJvcHMudGh1bWJuYWlsQ29uZmlndXJhdGlvbi5yZWNvcmRpbmdNb2RlLFxuICAgICAgcmVzb2x1dGlvbjogdGhpcy5wcm9wcy50aHVtYm5haWxDb25maWd1cmF0aW9uLnJlc29sdXRpb24sXG4gICAgICBzdG9yYWdlOiB0aGlzLnByb3BzLnRodW1ibmFpbENvbmZpZ3VyYXRpb24uc3RvcmFnZSxcbiAgICAgIHRhcmdldEludGVydmFsU2Vjb25kczogdGhpcy5wcm9wcy50aHVtYm5haWxDb25maWd1cmF0aW9uLnRhcmdldEludGVydmFsPy50b1NlY29uZHMoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lKCk6IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWUgPSB0aGlzLnByb3BzLnJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lO1xuXG4gICAgaWYgKHJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lID09IHVuZGVmaW5lZCB8fCBUb2tlbi5pc1VucmVzb2x2ZWQocmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEvXlthLXpBLVowLTktX10qJC8udGVzdChyZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgcmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWVcXGAgbXVzdCBjb25zaXN0IG9ubHkgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGh5cGhlbnMgb3IgdW5kZXJiYXJzLCBnb3Q6ICR7cmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWV9LmApO1xuICAgIH1cblxuICAgIGlmIChyZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgcmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWVcXGAgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMTI4IGNoYXJhY3RlcnMsIGdvdDogJHtyZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZS5sZW5ndGh9IGNoYXJhY3RlcnMuYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJlY29yZGluZ1JlY29ubmVjdFdpbmRvd1NlY29uZHMoKTogdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3cgPSB0aGlzLnByb3BzLnJlY29yZGluZ1JlY29ubmVjdFdpbmRvdztcblxuICAgIGlmIChyZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3cgPT09IHVuZGVmaW5lZCB8fCBUb2tlbi5pc1VucmVzb2x2ZWQocmVjb3JkaW5nUmVjb25uZWN0V2luZG93KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgwIDwgcmVjb3JkaW5nUmVjb25uZWN0V2luZG93LnRvTWlsbGlzZWNvbmRzKCkgJiYgcmVjb3JkaW5nUmVjb25uZWN0V2luZG93LnRvTWlsbGlzZWNvbmRzKCkgPCBEdXJhdGlvbi5zZWNvbmRzKDEpLnRvTWlsbGlzZWNvbmRzKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgcmVjb3JkaW5nUmVjb25uZWN0V2luZG93XFxgIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAzMDAgc2Vjb25kcywgZ290ICR7cmVjb3JkaW5nUmVjb25uZWN0V2luZG93LnRvTWlsbGlzZWNvbmRzKCl9IG1pbGxpc2Vjb25kcy5gKTtcbiAgICB9XG5cbiAgICBpZiAocmVjb3JkaW5nUmVjb25uZWN0V2luZG93LnRvU2Vjb25kcygpID4gMzAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxcYHJlY29yZGluZ1JlY29ubmVjdFdpbmRvd1xcYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMzAwIHNlY29uZHMsIGdvdCAke3JlY29yZGluZ1JlY29ubmVjdFdpbmRvdy50b1NlY29uZHMoKX0gc2Vjb25kcy5gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==