@aws-cdk/aws-ivs-alpha
Version:
The CDK Construct Library for AWS::IVS
131 lines • 20.7 kB
JavaScript
;
var _a;
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");
/**
* The IVS Recording configuration
*
* @resource AWS::IVS::RecordingConfiguration
*/
class RecordingConfiguration extends core_1.Resource {
/**
* Imports an IVS Recording Configuration from attributes.
*/
static fromRecordingConfigurationId(scope, id, recordingConfigurationId) {
class Import extends core_1.Resource {
constructor() {
super(...arguments);
this.recordingConfigurationId = recordingConfigurationId;
this.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 {
constructor() {
super(...arguments);
this.recordingConfigurationId = recordingConfigurationId;
this.recordingConfigurationArn = recordingConfigurationArn;
}
}
return new Import(scope, id);
}
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.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.`);
}
}
}
exports.RecordingConfiguration = RecordingConfiguration;
_a = JSII_RTTI_SYMBOL_1;
RecordingConfiguration[_a] = { fqn: "@aws-cdk/aws-ivs-alpha.RecordingConfiguration", version: "2.188.0-alpha.0" };
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWNvcmRpbmctY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxpREFBZ0U7QUFFaEUsMkNBQW1GO0FBSW5GLDhFQUE4RTtBQWlFOUU7Ozs7R0FJRztBQUNILE1BQWEsc0JBQXVCLFNBQVEsZUFBUTtJQUNsRDs7T0FFRztJQUNJLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFDckUsd0JBQWdDO1FBQ2hDLE1BQU0sTUFBTyxTQUFRLGVBQVE7WUFBN0I7O2dCQUNrQiw2QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztnQkFDcEQsOEJBQXlCLEdBQUcsWUFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFTLENBQUM7b0JBQ25FLFFBQVEsRUFBRSx5QkFBeUI7b0JBQ25DLE9BQU8sRUFBRSxLQUFLO29CQUNkLFlBQVksRUFBRSx3QkFBd0I7aUJBQ3ZDLENBQUMsQ0FBQztZQUNMLENBQUM7U0FBQTtRQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0tBQzlCO0lBRUQ7O09BRUc7SUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLHlCQUFpQztRQUNuRixNQUFNLGFBQWEsR0FBRyxTQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1FBRS9ELElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMvQyxNQUFNLElBQUksS0FBSyxDQUFDLDBCQUEwQix5QkFBeUIsRUFBRSxDQUFDLENBQUM7UUFDekUsQ0FBQztRQUVELE1BQU0sd0JBQXdCLEdBQUcsU0FBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFN0Qs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LEdBQUcsR0FBRyxFQUFFLENBQUM7WUFDNUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxxRkFBcUYsMEJBQTBCLENBQUMsTUFBTSxjQUFjLENBQUMsQ0FBQztRQUN4SixDQUFDO0tBQ0Y7SUFFTyx1Q0FBdUM7UUFDN0MsTUFBTSx3QkFBd0IsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLHdCQUF3QixDQUFDO1FBRXJFLElBQUksd0JBQXdCLEtBQUssU0FBUyxJQUFJLFlBQUssQ0FBQyxZQUFZLENBQUMsd0JBQXdCLENBQUMsRUFBRSxDQUFDO1lBQzNGLE9BQU87UUFDVCxDQUFDO1FBRUQsSUFBSSxDQUFDLEdBQUcsd0JBQXdCLENBQUMsY0FBYyxFQUFFLElBQUksd0JBQXdCLENBQUMsY0FBYyxFQUFFLEdBQUcsZUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO1lBQ3RJLE1BQU0sSUFBSSxLQUFLLENBQUMsdUVBQXVFLHdCQUF3QixDQUFDLGNBQWMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBQ3BKLENBQUM7UUFFRCxJQUFJLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxHQUFHLEdBQUcsRUFBRSxDQUFDO1lBQy9DLE1BQU0sSUFBSSxLQUFLLENBQUMsdUVBQXVFLHdCQUF3QixDQUFDLFNBQVMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUMxSSxDQUFDO0tBQ0Y7O0FBdElILHdEQXVJQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmblJlY29yZGluZ0NvbmZpZ3VyYXRpb24gfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaXZzJztcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0IHsgRHVyYXRpb24sIEZuLCBJUmVzb3VyY2UsIFJlc291cmNlLCBTdGFjaywgVG9rZW4gfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0IHsgUmVuZGl0aW9uQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vcmVuZGl0aW9uLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgVGh1bWJuYWlsQ29uZmlndXJhdGlvbiB9IGZyb20gJy4vdGh1bWJuYWlsLWNvbmZpZ3VyYXRpb24nO1xuaW1wb3J0IHsgYWRkQ29uc3RydWN0TWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiB0aGUgSVZTIFJlY29yZGluZyBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkaW5nQ29uZmlndXJhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFMzIGJ1Y2tldCB3aGVyZSByZWNvcmRlZCB2aWRlb3Mgd2lsbCBiZSBzdG9yZWQuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXQ7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBSZWNvcmRpbmcgY29uZmlndXJhdGlvbi5cbiAgICogVGhlIHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUgdW5pcXVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBhIGJyb2FkY2FzdCBkaXNjb25uZWN0cyBhbmQgdGhlbiByZWNvbm5lY3RzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGludGVydmFsLFxuICAgKiB0aGUgbXVsdGlwbGUgc3RyZWFtcyB3aWxsIGJlIGNvbnNpZGVyZWQgYSBzaW5nbGUgYnJvYWRjYXN0IGFuZCBtZXJnZWQgdG9nZXRoZXIuXG4gICAqXG4gICAqIGByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3dgIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAzMDAgc2Vjb25kc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIDAgc2Vjb25kcyAobWVhbnMgZGlzYWJsZWQpXG4gICAqL1xuICByZWFkb25seSByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3c/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQSByZW5kaXRpb24gY29uZmlndXJhdGlvbiBkZXNjcmliZXMgd2hpY2ggcmVuZGl0aW9ucyBzaG91bGQgYmUgcmVjb3JkZWQgZm9yIGEgc3RyZWFtLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWl2cy1yZWNvcmRpbmdjb25maWd1cmF0aW9uLXJlbmRpdGlvbmNvbmZpZ3VyYXRpb24uaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJlbmRpdGlvbiBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSByZW5kaXRpb25Db25maWd1cmF0aW9uPzogUmVuZGl0aW9uQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQSB0aHVtYm5haWwgY29uZmlndXJhdGlvbiBlbmFibGVzL2Rpc2FibGVzIHRoZSByZWNvcmRpbmcgb2YgdGh1bWJuYWlscyBmb3IgYSBsaXZlIHNlc3Npb24gYW5kIGNvbnRyb2xzIHRoZSBpbnRlcnZhbCBhdCB3aGljaCB0aHVtYm5haWxzIGFyZSBnZW5lcmF0ZWQgZm9yIHRoZSBsaXZlIHNlc3Npb24uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtaXZzLXJlY29yZGluZ2NvbmZpZ3VyYXRpb24tdGh1bWJuYWlsY29uZmlndXJhdGlvbi5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdGh1bWJuYWlsIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRodW1ibmFpbENvbmZpZ3VyYXRpb24/OlRodW1ibmFpbENvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgSVZTIFJlY29yZGluZyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSZWNvcmRpbmdDb25maWd1cmF0aW9uIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgUmVjb3JkaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBSZWNvcmRpbmcgY29uZmlndXJhdGlvbi5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjb3JkaW5nQ29uZmlndXJhdGlvbkFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBJVlMgUmVjb3JkaW5nIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpJVlM6OlJlY29yZGluZ0NvbmZpZ3VyYXRpb25cbiAqL1xuZXhwb3J0IGNsYXNzIFJlY29yZGluZ0NvbmZpZ3VyYXRpb24gZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElSZWNvcmRpbmdDb25maWd1cmF0aW9uIHtcbiAgLyoqXG4gICAqIEltcG9ydHMgYW4gSVZTIFJlY29yZGluZyBDb25maWd1cmF0aW9uIGZyb20gYXR0cmlidXRlcy5cbiAgICovXG4gIHB1YmxpYyBzdGF0aWMgZnJvbVJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZChzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLFxuICAgIHJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZDogc3RyaW5nKTogSVJlY29yZGluZ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNsYXNzIEltcG9ydCBleHRlbmRzIFJlc291cmNlIGltcGxlbWVudHMgSVJlY29yZGluZ0NvbmZpZ3VyYXRpb24ge1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZCA9IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZDtcbiAgICAgIHB1YmxpYyByZWFkb25seSByZWNvcmRpbmdDb25maWd1cmF0aW9uQXJuID0gU3RhY2sub2YodGhpcykuZm9ybWF0QXJuKHtcbiAgICAgICAgcmVzb3VyY2U6ICdyZWNvcmRpbmctY29uZmlndXJhdGlvbicsXG4gICAgICAgIHNlcnZpY2U6ICdpdnMnLFxuICAgICAgICByZXNvdXJjZU5hbWU6IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogSW1wb3J0cyBhbiBJVlMgUmVjb3JkaW5nIENvbmZpZ3VyYXRpb24gZnJvbSBpdHMgQVJOXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21Bcm4oc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcmVjb3JkaW5nQ29uZmlndXJhdGlvbkFybjogc3RyaW5nKTogSVJlY29yZGluZ0NvbmZpZ3VyYXRpb24ge1xuICAgIGNvbnN0IHJlc291cmNlUGFydHMgPSBGbi5zcGxpdCgnLycsIHJlY29yZGluZ0NvbmZpZ3VyYXRpb25Bcm4pO1xuXG4gICAgaWYgKCFyZXNvdXJjZVBhcnRzIHx8IHJlc291cmNlUGFydHMubGVuZ3RoIDwgMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIEFSTiBmb3JtYXQ6ICR7cmVjb3JkaW5nQ29uZmlndXJhdGlvbkFybn1gKTtcbiAgICB9XG5cbiAgICBjb25zdCByZWNvcmRpbmdDb25maWd1cmF0aW9uSWQgPSBGbi5zZWxlY3QoMSwgcmVzb3VyY2VQYXJ0cyk7XG5cbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElSZWNvcmRpbmdDb25maWd1cmF0aW9uIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSByZWNvcmRpbmdDb25maWd1cmF0aW9uSWQgPSByZWNvcmRpbmdDb25maWd1cmF0aW9uSWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVjb3JkaW5nQ29uZmlndXJhdGlvbkFybiA9IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25Bcm47XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBJbXBvcnQoc2NvcGUsIGlkKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBUaGUgSUQgb2YgdGhlIFJlY29yZGluZyBjb25maWd1cmF0aW9uLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByZWNvcmRpbmdDb25maWd1cmF0aW9uSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIEFSTiBvZiB0aGUgUmVjb3JkaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25Bcm46IHN0cmluZztcblxuICBwcml2YXRlIHJlYWRvbmx5IHByb3BzOiBSZWNvcmRpbmdDb25maWd1cmF0aW9uUHJvcHM7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBSZWNvcmRpbmdDb25maWd1cmF0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIHBoeXNpY2FsTmFtZTogcHJvcHMucmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWUsXG4gICAgfSk7XG4gICAgLy8gRW5oYW5jZWQgQ0RLIEFuYWx5dGljcyBUZWxlbWV0cnlcbiAgICBhZGRDb25zdHJ1Y3RNZXRhZGF0YSh0aGlzLCBwcm9wcyk7XG5cbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG5cbiAgICB0aGlzLnZhbGlkYXRlUmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWUoKTtcbiAgICB0aGlzLnZhbGlkYXRlUmVjb3JkaW5nUmVjb25uZWN0V2luZG93U2Vjb25kcygpO1xuXG4gICAgY29uc3QgcmVzb3VyY2UgPSBuZXcgQ2ZuUmVjb3JkaW5nQ29uZmlndXJhdGlvbih0aGlzLCAnUmVzb3VyY2UnLCB7XG4gICAgICBkZXN0aW5hdGlvbkNvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgczM6IHtcbiAgICAgICAgICBidWNrZXROYW1lOiB0aGlzLnByb3BzLmJ1Y2tldC5idWNrZXROYW1lLFxuICAgICAgICB9LFxuICAgICAgfSxcbiAgICAgIG5hbWU6IHRoaXMucHJvcHMucmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWUsXG4gICAgICByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3dTZWNvbmRzOiB0aGlzLnByb3BzLnJlY29yZGluZ1JlY29ubmVjdFdpbmRvdz8udG9TZWNvbmRzKCksXG4gICAgICByZW5kaXRpb25Db25maWd1cmF0aW9uOiB0aGlzLl9yZW5kZXJSZW5kaXRpb25Db25maWd1cmF0aW9uKCksXG4gICAgICB0aHVtYm5haWxDb25maWd1cmF0aW9uOiB0aGlzLl9yZW5kZXJUaHVtYm5haWxDb25maWd1cmF0aW9uKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLnJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZCA9IHJlc291cmNlLnJlZjtcbiAgICB0aGlzLnJlY29yZGluZ0NvbmZpZ3VyYXRpb25Bcm4gPSByZXNvdXJjZS5hdHRyQXJuO1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyUmVuZGl0aW9uQ29uZmlndXJhdGlvbigpOiBDZm5SZWNvcmRpbmdDb25maWd1cmF0aW9uLlJlbmRpdGlvbkNvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnJlbmRpdGlvbkNvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVuZGl0aW9uczogdGhpcy5wcm9wcy5yZW5kaXRpb25Db25maWd1cmF0aW9uLnJlbmRpdGlvbnMsXG4gICAgICByZW5kaXRpb25TZWxlY3Rpb246IHRoaXMucHJvcHMucmVuZGl0aW9uQ29uZmlndXJhdGlvbi5yZW5kaXRpb25TZWxlY3Rpb24sXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgX3JlbmRlclRodW1ibmFpbENvbmZpZ3VyYXRpb24oKTogQ2ZuUmVjb3JkaW5nQ29uZmlndXJhdGlvbi5UaHVtYm5haWxDb25maWd1cmF0aW9uUHJvcGVydHkgfCB1bmRlZmluZWQge1xuICAgIGlmICghdGhpcy5wcm9wcy50aHVtYm5haWxDb25maWd1cmF0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIHJlY29yZGluZ01vZGU6IHRoaXMucHJvcHMudGh1bWJuYWlsQ29uZmlndXJhdGlvbi5yZWNvcmRpbmdNb2RlLFxuICAgICAgcmVzb2x1dGlvbjogdGhpcy5wcm9wcy50aHVtYm5haWxDb25maWd1cmF0aW9uLnJlc29sdXRpb24sXG4gICAgICBzdG9yYWdlOiB0aGlzLnByb3BzLnRodW1ibmFpbENvbmZpZ3VyYXRpb24uc3RvcmFnZSxcbiAgICAgIHRhcmdldEludGVydmFsU2Vjb25kczogdGhpcy5wcm9wcy50aHVtYm5haWxDb25maWd1cmF0aW9uLnRhcmdldEludGVydmFsPy50b1NlY29uZHMoKSxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lKCk6IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgcmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWUgPSB0aGlzLnByb3BzLnJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lO1xuXG4gICAgaWYgKHJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lID09IHVuZGVmaW5lZCB8fCBUb2tlbi5pc1VucmVzb2x2ZWQocmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCEvXlthLXpBLVowLTktX10qJC8udGVzdChyZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgcmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWVcXGAgbXVzdCBjb25zaXN0IG9ubHkgb2YgYWxwaGFudW1lcmljIGNoYXJhY3RlcnMsIGh5cGhlbnMgb3IgdW5kZXJiYXJzLCBnb3Q6ICR7cmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWV9LmApO1xuICAgIH1cblxuICAgIGlmIChyZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZS5sZW5ndGggPiAxMjgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgcmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWVcXGAgbXVzdCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gMTI4IGNoYXJhY3RlcnMsIGdvdDogJHtyZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZS5sZW5ndGh9IGNoYXJhY3RlcnMuYCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSB2YWxpZGF0ZVJlY29yZGluZ1JlY29ubmVjdFdpbmRvd1NlY29uZHMoKTogdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3cgPSB0aGlzLnByb3BzLnJlY29yZGluZ1JlY29ubmVjdFdpbmRvdztcblxuICAgIGlmIChyZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3cgPT09IHVuZGVmaW5lZCB8fCBUb2tlbi5pc1VucmVzb2x2ZWQocmVjb3JkaW5nUmVjb25uZWN0V2luZG93KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICgwIDwgcmVjb3JkaW5nUmVjb25uZWN0V2luZG93LnRvTWlsbGlzZWNvbmRzKCkgJiYgcmVjb3JkaW5nUmVjb25uZWN0V2luZG93LnRvTWlsbGlzZWNvbmRzKCkgPCBEdXJhdGlvbi5zZWNvbmRzKDEpLnRvTWlsbGlzZWNvbmRzKCkpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgcmVjb3JkaW5nUmVjb25uZWN0V2luZG93XFxgIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAzMDAgc2Vjb25kcywgZ290ICR7cmVjb3JkaW5nUmVjb25uZWN0V2luZG93LnRvTWlsbGlzZWNvbmRzKCl9IG1pbGxpc2Vjb25kcy5gKTtcbiAgICB9XG5cbiAgICBpZiAocmVjb3JkaW5nUmVjb25uZWN0V2luZG93LnRvU2Vjb25kcygpID4gMzAwKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFxcYHJlY29yZGluZ1JlY29ubmVjdFdpbmRvd1xcYCBtdXN0IGJlIGJldHdlZW4gMCBhbmQgMzAwIHNlY29uZHMsIGdvdCAke3JlY29yZGluZ1JlY29ubmVjdFdpbmRvdy50b1NlY29uZHMoKX0gc2Vjb25kcy5gKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==