@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.223.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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVjb3JkaW5nLWNvbmZpZ3VyYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJyZWNvcmRpbmctY29uZmlndXJhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxpREFBZ0U7QUFFaEUsMkNBQW1GO0FBSW5GLDhFQUE4RTtBQUM5RSwwRUFBMEU7QUFpRTFFOzs7O0dBSUc7SUFFVSxzQkFBc0I7NEJBRGxDLG9DQUFrQjs7OztzQkFDeUIsZUFBUTtzQ0FBaEIsU0FBUSxXQUFROzs7O1lBQXBELDZLQTBJQzs7Ozs7UUF6SUMsc0NBQXNDO1FBQy9CLE1BQU0sQ0FBVSxxQkFBcUIsR0FBVywrQ0FBK0MsQ0FBQztRQUV2Rzs7V0FFRztRQUNJLE1BQU0sQ0FBQyw0QkFBNEIsQ0FBQyxLQUFnQixFQUFFLEVBQVUsRUFDckUsd0JBQWdDO1lBQ2hDLE1BQU0sTUFBTyxTQUFRLGVBQVE7Z0JBQ1gsd0JBQXdCLEdBQUcsd0JBQXdCLENBQUM7Z0JBQ3BELHlCQUF5QixHQUFHLFlBQUssQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxDQUFDO29CQUNuRSxRQUFRLEVBQUUseUJBQXlCO29CQUNuQyxPQUFPLEVBQUUsS0FBSztvQkFDZCxZQUFZLEVBQUUsd0JBQXdCO2lCQUN2QyxDQUFDLENBQUM7YUFDSjtZQUVELE9BQU8sSUFBSSxNQUFNLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1NBQzlCO1FBRUQ7O1dBRUc7UUFDSSxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWdCLEVBQUUsRUFBVSxFQUFFLHlCQUFpQztZQUNuRixNQUFNLGFBQWEsR0FBRyxTQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSx5QkFBeUIsQ0FBQyxDQUFDO1lBRS9ELElBQUksQ0FBQyxhQUFhLElBQUksYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0Ms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UmVjb3JkaW5nQ29uZmlndXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1pdnMnO1xuaW1wb3J0IHsgSUJ1Y2tldFJlZiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zMyc7XG5pbXBvcnQgeyBEdXJhdGlvbiwgRm4sIElSZXNvdXJjZSwgUmVzb3VyY2UsIFN0YWNrLCBUb2tlbiB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBSZW5kaXRpb25Db25maWd1cmF0aW9uIH0gZnJvbSAnLi9yZW5kaXRpb24tY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBUaHVtYm5haWxDb25maWd1cmF0aW9uIH0gZnJvbSAnLi90aHVtYm5haWwtY29uZmlndXJhdGlvbic7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL21ldGFkYXRhLXJlc291cmNlJztcbmltcG9ydCB7IHByb3BlcnR5SW5qZWN0YWJsZSB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUvbGliL3Byb3AtaW5qZWN0YWJsZSc7XG5cbi8qKlxuICogUHJvcGVydGllcyBvZiB0aGUgSVZTIFJlY29yZGluZyBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUmVjb3JkaW5nQ29uZmlndXJhdGlvblByb3BzIHtcbiAgLyoqXG4gICAqIFMzIGJ1Y2tldCB3aGVyZSByZWNvcmRlZCB2aWRlb3Mgd2lsbCBiZSBzdG9yZWQuXG4gICAqL1xuICByZWFkb25seSBidWNrZXQ6IElCdWNrZXRSZWY7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBSZWNvcmRpbmcgY29uZmlndXJhdGlvbi5cbiAgICogVGhlIHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUgdW5pcXVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGF1dG8gZ2VuZXJhdGVcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJZiBhIGJyb2FkY2FzdCBkaXNjb25uZWN0cyBhbmQgdGhlbiByZWNvbm5lY3RzIHdpdGhpbiB0aGUgc3BlY2lmaWVkIGludGVydmFsLFxuICAgKiB0aGUgbXVsdGlwbGUgc3RyZWFtcyB3aWxsIGJlIGNvbnNpZGVyZWQgYSBzaW5nbGUgYnJvYWRjYXN0IGFuZCBtZXJnZWQgdG9nZXRoZXIuXG4gICAqXG4gICAqIGByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3dgIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAzMDAgc2Vjb25kc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIDAgc2Vjb25kcyAobWVhbnMgZGlzYWJsZWQpXG4gICAqL1xuICByZWFkb25seSByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3c/OiBEdXJhdGlvbjtcblxuICAvKipcbiAgICogQSByZW5kaXRpb24gY29uZmlndXJhdGlvbiBkZXNjcmliZXMgd2hpY2ggcmVuZGl0aW9ucyBzaG91bGQgYmUgcmVjb3JkZWQgZm9yIGEgc3RyZWFtLlxuICAgKlxuICAgKiBAc2VlIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1wcm9wZXJ0aWVzLWl2cy1yZWNvcmRpbmdjb25maWd1cmF0aW9uLXJlbmRpdGlvbmNvbmZpZ3VyYXRpb24uaHRtbFxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG5vIHJlbmRpdGlvbiBjb25maWd1cmF0aW9uXG4gICAqL1xuICByZWFkb25seSByZW5kaXRpb25Db25maWd1cmF0aW9uPzogUmVuZGl0aW9uQ29uZmlndXJhdGlvbjtcblxuICAvKipcbiAgICogQSB0aHVtYm5haWwgY29uZmlndXJhdGlvbiBlbmFibGVzL2Rpc2FibGVzIHRoZSByZWNvcmRpbmcgb2YgdGh1bWJuYWlscyBmb3IgYSBsaXZlIHNlc3Npb24gYW5kIGNvbnRyb2xzIHRoZSBpbnRlcnZhbCBhdCB3aGljaCB0aHVtYm5haWxzIGFyZSBnZW5lcmF0ZWQgZm9yIHRoZSBsaXZlIHNlc3Npb24uXG4gICAqXG4gICAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0Nsb3VkRm9ybWF0aW9uL2xhdGVzdC9Vc2VyR3VpZGUvYXdzLXByb3BlcnRpZXMtaXZzLXJlY29yZGluZ2NvbmZpZ3VyYXRpb24tdGh1bWJuYWlsY29uZmlndXJhdGlvbi5odG1sXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gbm8gdGh1bWJuYWlsIGNvbmZpZ3VyYXRpb25cbiAgICovXG4gIHJlYWRvbmx5IHRodW1ibmFpbENvbmZpZ3VyYXRpb24/OlRodW1ibmFpbENvbmZpZ3VyYXRpb247XG59XG5cbi8qKlxuICogUmVwcmVzZW50cyB0aGUgSVZTIFJlY29yZGluZyBjb25maWd1cmF0aW9uLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIElSZWNvcmRpbmdDb25maWd1cmF0aW9uIGV4dGVuZHMgSVJlc291cmNlIHtcbiAgLyoqXG4gICAqIFRoZSBJRCBvZiB0aGUgUmVjb3JkaW5nIGNvbmZpZ3VyYXRpb24uXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25JZDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgQVJOIG9mIHRoZSBSZWNvcmRpbmcgY29uZmlndXJhdGlvbi5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjb3JkaW5nQ29uZmlndXJhdGlvbkFybjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFRoZSBJVlMgUmVjb3JkaW5nIGNvbmZpZ3VyYXRpb25cbiAqXG4gKiBAcmVzb3VyY2UgQVdTOjpJVlM6OlJlY29yZGluZ0NvbmZpZ3VyYXRpb25cbiAqL1xuQHByb3BlcnR5SW5qZWN0YWJsZVxuZXhwb3J0IGNsYXNzIFJlY29yZGluZ0NvbmZpZ3VyYXRpb24gZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElSZWNvcmRpbmdDb25maWd1cmF0aW9uIHtcbiAgLyoqIFVuaXF1ZWx5IGlkZW50aWZpZXMgdGhpcyBjbGFzcy4gKi9cbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQUk9QRVJUWV9JTkpFQ1RJT05fSUQ6IHN0cmluZyA9ICdAYXdzLWNkay5hd3MtaXZzLWFscGhhLlJlY29yZGluZ0NvbmZpZ3VyYXRpb24nO1xuXG4gIC8qKlxuICAgKiBJbXBvcnRzIGFuIElWUyBSZWNvcmRpbmcgQ29uZmlndXJhdGlvbiBmcm9tIGF0dHJpYnV0ZXMuXG4gICAqL1xuICBwdWJsaWMgc3RhdGljIGZyb21SZWNvcmRpbmdDb25maWd1cmF0aW9uSWQoc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZyxcbiAgICByZWNvcmRpbmdDb25maWd1cmF0aW9uSWQ6IHN0cmluZyk6IElSZWNvcmRpbmdDb25maWd1cmF0aW9uIHtcbiAgICBjbGFzcyBJbXBvcnQgZXh0ZW5kcyBSZXNvdXJjZSBpbXBsZW1lbnRzIElSZWNvcmRpbmdDb25maWd1cmF0aW9uIHtcbiAgICAgIHB1YmxpYyByZWFkb25seSByZWNvcmRpbmdDb25maWd1cmF0aW9uSWQgPSByZWNvcmRpbmdDb25maWd1cmF0aW9uSWQ7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVjb3JkaW5nQ29uZmlndXJhdGlvbkFybiA9IFN0YWNrLm9mKHRoaXMpLmZvcm1hdEFybih7XG4gICAgICAgIHJlc291cmNlOiAncmVjb3JkaW5nLWNvbmZpZ3VyYXRpb24nLFxuICAgICAgICBzZXJ2aWNlOiAnaXZzJyxcbiAgICAgICAgcmVzb3VyY2VOYW1lOiByZWNvcmRpbmdDb25maWd1cmF0aW9uSWQsXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IEltcG9ydChzY29wZSwgaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIEltcG9ydHMgYW4gSVZTIFJlY29yZGluZyBDb25maWd1cmF0aW9uIGZyb20gaXRzIEFSTlxuICAgKi9cbiAgcHVibGljIHN0YXRpYyBmcm9tQXJuKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHJlY29yZGluZ0NvbmZpZ3VyYXRpb25Bcm46IHN0cmluZyk6IElSZWNvcmRpbmdDb25maWd1cmF0aW9uIHtcbiAgICBjb25zdCByZXNvdXJjZVBhcnRzID0gRm4uc3BsaXQoJy8nLCByZWNvcmRpbmdDb25maWd1cmF0aW9uQXJuKTtcblxuICAgIGlmICghcmVzb3VyY2VQYXJ0cyB8fCByZXNvdXJjZVBhcnRzLmxlbmd0aCA8IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBBUk4gZm9ybWF0OiAke3JlY29yZGluZ0NvbmZpZ3VyYXRpb25Bcm59YCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVjb3JkaW5nQ29uZmlndXJhdGlvbklkID0gRm4uc2VsZWN0KDEsIHJlc291cmNlUGFydHMpO1xuXG4gICAgY2xhc3MgSW1wb3J0IGV4dGVuZHMgUmVzb3VyY2UgaW1wbGVtZW50cyBJUmVjb3JkaW5nQ29uZmlndXJhdGlvbiB7XG4gICAgICBwdWJsaWMgcmVhZG9ubHkgcmVjb3JkaW5nQ29uZmlndXJhdGlvbklkID0gcmVjb3JkaW5nQ29uZmlndXJhdGlvbklkO1xuICAgICAgcHVibGljIHJlYWRvbmx5IHJlY29yZGluZ0NvbmZpZ3VyYXRpb25Bcm4gPSByZWNvcmRpbmdDb25maWd1cmF0aW9uQXJuO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgSW1wb3J0KHNjb3BlLCBpZCk7XG4gIH1cblxuICAvKipcbiAgICogVGhlIElEIG9mIHRoZSBSZWNvcmRpbmcgY29uZmlndXJhdGlvbi5cbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVjb3JkaW5nQ29uZmlndXJhdGlvbklkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIFJlY29yZGluZyBjb25maWd1cmF0aW9uLlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICByZWFkb25seSByZWNvcmRpbmdDb25maWd1cmF0aW9uQXJuOiBzdHJpbmc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9wczogUmVjb3JkaW5nQ29uZmlndXJhdGlvblByb3BzO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmVjb3JkaW5nQ29uZmlndXJhdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICBwaHlzaWNhbE5hbWU6IHByb3BzLnJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lLFxuICAgIH0pO1xuICAgIC8vIEVuaGFuY2VkIENESyBBbmFseXRpY3MgVGVsZW1ldHJ5XG4gICAgYWRkQ29uc3RydWN0TWV0YWRhdGEodGhpcywgcHJvcHMpO1xuXG4gICAgdGhpcy5wcm9wcyA9IHByb3BzO1xuXG4gICAgdGhpcy52YWxpZGF0ZVJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lKCk7XG4gICAgdGhpcy52YWxpZGF0ZVJlY29yZGluZ1JlY29ubmVjdFdpbmRvd1NlY29uZHMoKTtcblxuICAgIGNvbnN0IHJlc291cmNlID0gbmV3IENmblJlY29yZGluZ0NvbmZpZ3VyYXRpb24odGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgZGVzdGluYXRpb25Db25maWd1cmF0aW9uOiB7XG4gICAgICAgIHMzOiB7XG4gICAgICAgICAgYnVja2V0TmFtZTogdGhpcy5wcm9wcy5idWNrZXQuYnVja2V0UmVmLmJ1Y2tldE5hbWUsXG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICAgbmFtZTogdGhpcy5wcm9wcy5yZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZSxcbiAgICAgIHJlY29yZGluZ1JlY29ubmVjdFdpbmRvd1NlY29uZHM6IHRoaXMucHJvcHMucmVjb3JkaW5nUmVjb25uZWN0V2luZG93Py50b1NlY29uZHMoKSxcbiAgICAgIHJlbmRpdGlvbkNvbmZpZ3VyYXRpb246IHRoaXMuX3JlbmRlclJlbmRpdGlvbkNvbmZpZ3VyYXRpb24oKSxcbiAgICAgIHRodW1ibmFpbENvbmZpZ3VyYXRpb246IHRoaXMuX3JlbmRlclRodW1ibmFpbENvbmZpZ3VyYXRpb24oKSxcbiAgICB9KTtcblxuICAgIHRoaXMucmVjb3JkaW5nQ29uZmlndXJhdGlvbklkID0gcmVzb3VyY2UucmVmO1xuICAgIHRoaXMucmVjb3JkaW5nQ29uZmlndXJhdGlvbkFybiA9IHJlc291cmNlLmF0dHJBcm47XG4gIH1cblxuICBwcml2YXRlIF9yZW5kZXJSZW5kaXRpb25Db25maWd1cmF0aW9uKCk6IENmblJlY29yZGluZ0NvbmZpZ3VyYXRpb24uUmVuZGl0aW9uQ29uZmlndXJhdGlvblByb3BlcnR5IHwgdW5kZWZpbmVkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucmVuZGl0aW9uQ29uZmlndXJhdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICByZW5kaXRpb25zOiB0aGlzLnByb3BzLnJlbmRpdGlvbkNvbmZpZ3VyYXRpb24ucmVuZGl0aW9ucyxcbiAgICAgIHJlbmRpdGlvblNlbGVjdGlvbjogdGhpcy5wcm9wcy5yZW5kaXRpb25Db25maWd1cmF0aW9uLnJlbmRpdGlvblNlbGVjdGlvbixcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBfcmVuZGVyVGh1bWJuYWlsQ29uZmlndXJhdGlvbigpOiBDZm5SZWNvcmRpbmdDb25maWd1cmF0aW9uLlRodW1ibmFpbENvbmZpZ3VyYXRpb25Qcm9wZXJ0eSB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnRodW1ibmFpbENvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgcmVjb3JkaW5nTW9kZTogdGhpcy5wcm9wcy50aHVtYm5haWxDb25maWd1cmF0aW9uLnJlY29yZGluZ01vZGUsXG4gICAgICByZXNvbHV0aW9uOiB0aGlzLnByb3BzLnRodW1ibmFpbENvbmZpZ3VyYXRpb24ucmVzb2x1dGlvbixcbiAgICAgIHN0b3JhZ2U6IHRoaXMucHJvcHMudGh1bWJuYWlsQ29uZmlndXJhdGlvbi5zdG9yYWdlLFxuICAgICAgdGFyZ2V0SW50ZXJ2YWxTZWNvbmRzOiB0aGlzLnByb3BzLnRodW1ibmFpbENvbmZpZ3VyYXRpb24udGFyZ2V0SW50ZXJ2YWw/LnRvU2Vjb25kcygpLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWUoKTogdW5kZWZpbmVkIHtcbiAgICBjb25zdCByZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZSA9IHRoaXMucHJvcHMucmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWU7XG5cbiAgICBpZiAocmVjb3JkaW5nQ29uZmlndXJhdGlvbk5hbWUgPT0gdW5kZWZpbmVkIHx8IFRva2VuLmlzVW5yZXNvbHZlZChyZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIS9eW2EtekEtWjAtOS1fXSokLy50ZXN0KHJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcXGByZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZVxcYCBtdXN0IGNvbnNpc3Qgb25seSBvZiBhbHBoYW51bWVyaWMgY2hhcmFjdGVycywgaHlwaGVucyBvciB1bmRlcmJhcnMsIGdvdDogJHtyZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZX0uYCk7XG4gICAgfVxuXG4gICAgaWYgKHJlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lLmxlbmd0aCA+IDEyOCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcXGByZWNvcmRpbmdDb25maWd1cmF0aW9uTmFtZVxcYCBtdXN0IGJlIGxlc3MgdGhhbiBvciBlcXVhbCB0byAxMjggY2hhcmFjdGVycywgZ290OiAke3JlY29yZGluZ0NvbmZpZ3VyYXRpb25OYW1lLmxlbmd0aH0gY2hhcmFjdGVycy5gKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlUmVjb3JkaW5nUmVjb25uZWN0V2luZG93U2Vjb25kcygpOiB1bmRlZmluZWQge1xuICAgIGNvbnN0IHJlY29yZGluZ1JlY29ubmVjdFdpbmRvdyA9IHRoaXMucHJvcHMucmVjb3JkaW5nUmVjb25uZWN0V2luZG93O1xuXG4gICAgaWYgKHJlY29yZGluZ1JlY29ubmVjdFdpbmRvdyA9PT0gdW5kZWZpbmVkIHx8IFRva2VuLmlzVW5yZXNvbHZlZChyZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3cpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKDAgPCByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3cudG9NaWxsaXNlY29uZHMoKSAmJiByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3cudG9NaWxsaXNlY29uZHMoKSA8IER1cmF0aW9uLnNlY29uZHMoMSkudG9NaWxsaXNlY29uZHMoKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBcXGByZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3dcXGAgbXVzdCBiZSBiZXR3ZWVuIDAgYW5kIDMwMCBzZWNvbmRzLCBnb3QgJHtyZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3cudG9NaWxsaXNlY29uZHMoKX0gbWlsbGlzZWNvbmRzLmApO1xuICAgIH1cblxuICAgIGlmIChyZWNvcmRpbmdSZWNvbm5lY3RXaW5kb3cudG9TZWNvbmRzKCkgPiAzMDApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgcmVjb3JkaW5nUmVjb25uZWN0V2luZG93XFxgIG11c3QgYmUgYmV0d2VlbiAwIGFuZCAzMDAgc2Vjb25kcywgZ290ICR7cmVjb3JkaW5nUmVjb25uZWN0V2luZG93LnRvU2Vjb25kcygpfSBzZWNvbmRzLmApO1xuICAgIH1cbiAgfVxufVxuIl19