@aws-cdk/aws-amplify-alpha
Version:
The CDK Construct Library for AWS::Amplify
217 lines • 22.9 kB
JavaScript
;
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;
};
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;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.Domain = void 0;
const jsiiDeprecationWarnings = require("../.warnings.jsii.js");
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
const aws_amplify_1 = require("aws-cdk-lib/aws-amplify");
const core_1 = require("aws-cdk-lib/core");
const helpers_internal_1 = require("aws-cdk-lib/core/lib/helpers-internal");
const metadata_resource_1 = require("aws-cdk-lib/core/lib/metadata-resource");
const prop_injectable_1 = require("aws-cdk-lib/core/lib/prop-injectable");
/**
* An Amplify Console domain
*/
let Domain = (() => {
let _classDecorators = [prop_injectable_1.propertyInjectable];
let _classDescriptor;
let _classExtraInitializers = [];
let _classThis;
let _classSuper = core_1.Resource;
let _instanceExtraInitializers = [];
let _mapSubDomain_decorators;
let _mapRoot_decorators;
var Domain = class extends _classSuper {
static { _classThis = this; }
static {
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
_mapSubDomain_decorators = [(0, metadata_resource_1.MethodMetadata)()];
_mapRoot_decorators = [(0, metadata_resource_1.MethodMetadata)()];
__esDecorate(this, null, _mapSubDomain_decorators, { kind: "method", name: "mapSubDomain", static: false, private: false, access: { has: obj => "mapSubDomain" in obj, get: obj => obj.mapSubDomain }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(this, null, _mapRoot_decorators, { kind: "method", name: "mapRoot", static: false, private: false, access: { has: obj => "mapRoot" in obj, get: obj => obj.mapRoot }, metadata: _metadata }, null, _instanceExtraInitializers);
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
Domain = _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-amplify-alpha.Domain", version: "2.257.0-alpha.0" };
/** Uniquely identifies this class. */
static PROPERTY_INJECTION_ID = '@aws-cdk.aws-amplify-alpha.Domain';
/**
* The ARN of the domain
*
* @attribute
*/
arn = __runInitializers(this, _instanceExtraInitializers);
/**
* The DNS Record for certificate verification
*
* @attribute
*/
certificateRecord;
/**
* The name of the domain
*
* @attribute
*/
domainName;
/**
* The status of the domain association
*
* @attribute
*/
domainStatus;
/**
* The reason for the current status of the domain
*
* @attribute
*/
statusReason;
/**
* Branch patterns for the automatically created subdomain.
*
* @attribute
*/
domainAutoSubDomainCreationPatterns;
/**
* The IAM service role for the subdomain.
*
* @attribute
*/
domainAutoSubDomainIamRole;
/**
* Specifies whether the automated creation of subdomains for branches is enabled.
*
* @attribute
*/
domainEnableAutoSubDomain;
subDomains;
constructor(scope, id, props) {
super(scope, id);
try {
jsiiDeprecationWarnings._aws_cdk_aws_amplify_alpha_DomainProps(props);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, Domain);
}
throw error;
}
// Enhanced CDK Analytics Telemetry
(0, metadata_resource_1.addConstructMetadata)(this, props);
this.subDomains = props.subDomains || [];
const domainName = props.domainName || id;
if (!core_1.Token.isUnresolved(domainName) && domainName.length > 255) {
throw new core_1.ValidationError((0, helpers_internal_1.lit) `DomainNameTooLong`, `Domain name must be 255 characters or less, got: ${domainName.length} characters.`, this);
}
if (!core_1.Token.isUnresolved(domainName) && !/^(((?!-)[A-Za-z0-9-]{0,62}[A-Za-z0-9])\.)+((?!-)[A-Za-z0-9-]{1,62}[A-Za-z0-9])(\.)?$/.test(domainName)) {
throw new core_1.ValidationError((0, helpers_internal_1.lit) `InvalidDomainName`, `Domain name must be a valid hostname, got: ${domainName}.`, this);
}
const domain = new aws_amplify_1.CfnDomain(this, 'Resource', {
appId: props.app.appId,
domainName,
subDomainSettings: core_1.Lazy.any({ produce: () => this.renderSubDomainSettings() }, { omitEmptyArray: true }),
enableAutoSubDomain: !!props.enableAutoSubdomain,
autoSubDomainCreationPatterns: props.autoSubdomainCreationPatterns || ['*', 'pr*'],
autoSubDomainIamRole: props.autoSubDomainIamRole?.roleArn,
certificateSettings: props.customCertificate ? {
certificateType: 'CUSTOM',
customCertificateArn: props.customCertificate.certificateArn,
} : undefined,
});
this.arn = domain.attrArn;
this.certificateRecord = domain.attrCertificateRecord;
this.domainName = domain.attrDomainName;
this.domainStatus = domain.attrDomainStatus;
this.statusReason = domain.attrStatusReason;
this.domainAutoSubDomainCreationPatterns = domain.attrAutoSubDomainCreationPatterns;
this.domainAutoSubDomainIamRole = domain.attrAutoSubDomainIamRole;
this.domainEnableAutoSubDomain = domain.attrEnableAutoSubDomain;
this.node.addValidation({ validate: () => this.validateDomain() });
}
/**
* Maps a branch to a sub domain
*
* @param branch The branch
* @param prefix The prefix. Use '' to map to the root of the domain. Defaults to branch name.
*/
mapSubDomain(branch, prefix) {
try {
jsiiDeprecationWarnings._aws_cdk_aws_amplify_alpha_IBranch(branch);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, this.mapSubDomain);
}
throw error;
}
this.subDomains.push({ branch, prefix });
return this;
}
/**
* Maps a branch to the domain root
*/
mapRoot(branch) {
try {
jsiiDeprecationWarnings._aws_cdk_aws_amplify_alpha_IBranch(branch);
}
catch (error) {
if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") {
Error.captureStackTrace(error, this.mapRoot);
}
throw error;
}
return this.mapSubDomain(branch, '');
}
validateDomain() {
if (this.subDomains.length === 0) {
return ['The domain doesn\'t contain any subdomains'];
}
return [];
}
renderSubDomainSettings() {
return this.subDomains.map(s => ({
branchName: s.branch.branchName,
prefix: s.prefix ?? s.branch.branchName,
}));
}
static {
__runInitializers(_classThis, _classExtraInitializers);
}
};
return Domain = _classThis;
})();
exports.Domain = Domain;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZG9tYWluLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZG9tYWluLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHlEQUFvRDtBQUlwRCwyQ0FBMEU7QUFDMUUsNEVBQTREO0FBQzVELDhFQUE4RjtBQUM5RiwwRUFBMEU7QUE2RDFFOztHQUVHO0lBRVUsTUFBTTs0QkFEbEIsb0NBQWtCOzs7O3NCQUNTLGVBQVE7Ozs7c0JBQWhCLFNBQVEsV0FBUTs7Ozt3Q0EyR2pDLElBQUEsa0NBQWMsR0FBRTttQ0FTaEIsSUFBQSxrQ0FBYyxHQUFFO1lBUmpCLHVMQUFPLFlBQVksNkRBR2xCO1lBTUQsd0tBQU8sT0FBTyw2REFFYjtZQXZISCw2S0F1SUM7Ozs7O1FBdElDLHNDQUFzQztRQUMvQixNQUFNLENBQVUscUJBQXFCLEdBQVcsbUNBQW1DLENBQUM7UUFDM0Y7Ozs7V0FJRztRQUNhLEdBQUcsR0FSUixtREFBTSxDQVFXO1FBRTVCOzs7O1dBSUc7UUFDYSxpQkFBaUIsQ0FBUztRQUUxQzs7OztXQUlHO1FBQ2EsVUFBVSxDQUFTO1FBRW5DOzs7O1dBSUc7UUFDYSxZQUFZLENBQVM7UUFFckM7Ozs7V0FJRztRQUNhLFlBQVksQ0FBUztRQUVyQzs7OztXQUlHO1FBQ2EsbUNBQW1DLENBQVc7UUFFOUQ7Ozs7V0FJRztRQUNhLDBCQUEwQixDQUFTO1FBRW5EOzs7O1dBSUc7UUFDYSx5QkFBeUIsQ0FBYztRQUV0QyxVQUFVLENBQWM7UUFFekMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtZQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDOzs7Ozs7bURBOURSLE1BQU07Ozs7WUErRGYsbUNBQW1DO1lBQ25DLElBQUEsd0NBQW9CLEVBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO1lBRWxDLElBQUksQ0FBQyxVQUFVLEdBQUcsS0FBSyxDQUFDLFVB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LENBQUMsVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztnQkFDakMsT0FBTyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7WUFDeEQsQ0FBQztZQUVELE9BQU8sRUFBRSxDQUFDO1NBQ1g7UUFFTyx1QkFBdUI7WUFDN0IsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQy9CLFVBQVUsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFVBQVU7Z0JBQy9CLE1BQU0sRUFBRSxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBVTthQUN4QyxDQUFDLENBQUMsQ0FBQztTQUNMOztZQXRJVSx1REFBTTs7Ozs7QUFBTix3QkFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbkRvbWFpbiB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1hbXBsaWZ5JztcbmltcG9ydCB0eXBlICogYXMgYWNtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jZXJ0aWZpY2F0ZW1hbmFnZXInO1xuaW1wb3J0IHR5cGUgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgdHlwZSB7IElSZXNvbHZhYmxlIH0gZnJvbSAnYXdzLWNkay1saWIvY29yZSc7XG5pbXBvcnQgeyBMYXp5LCBSZXNvdXJjZSwgVG9rZW4sIFZhbGlkYXRpb25FcnJvciB9IGZyb20gJ2F3cy1jZGstbGliL2NvcmUnO1xuaW1wb3J0IHsgbGl0IH0gZnJvbSAnYXdzLWNkay1saWIvY29yZS9saWIvaGVscGVycy1pbnRlcm5hbCc7XG5pbXBvcnQgeyBhZGRDb25zdHJ1Y3RNZXRhZGF0YSwgTWV0aG9kTWV0YWRhdGEgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9tZXRhZGF0YS1yZXNvdXJjZSc7XG5pbXBvcnQgeyBwcm9wZXJ0eUluamVjdGFibGUgfSBmcm9tICdhd3MtY2RrLWxpYi9jb3JlL2xpYi9wcm9wLWluamVjdGFibGUnO1xuaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB0eXBlIHsgSUFwcCB9IGZyb20gJy4vYXBwJztcbmltcG9ydCB0eXBlIHsgSUJyYW5jaCB9IGZyb20gJy4vYnJhbmNoJztcblxuLyoqXG4gKiBPcHRpb25zIHRvIGFkZCBhIGRvbWFpbiB0byBhbiBhcHBsaWNhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIERvbWFpbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIG5hbWUgb2YgdGhlIGRvbWFpblxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRoZSBjb25zdHJ1Y3QncyBpZFxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogU3ViZG9tYWluc1xuICAgKlxuICAgKiBAZGVmYXVsdCAtIHVzZSBgYWRkU3ViRG9tYWluKClgIHRvIGFkZCBzdWJkb21haW5zXG4gICAqL1xuICByZWFkb25seSBzdWJEb21haW5zPzogU3ViRG9tYWluW107XG5cbiAgLyoqXG4gICAqIEF1dG9tYXRpY2FsbHkgY3JlYXRlIHN1YmRvbWFpbnMgZm9yIGNvbm5lY3RlZCBicmFuY2hlc1xuICAgKlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgZW5hYmxlQXV0b1N1YmRvbWFpbj86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEJyYW5jaGVzIHdoaWNoIHNob3VsZCBhdXRvbWF0aWNhbGx5IGNyZWF0ZSBzdWJkb21haW5zXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gYWxsIHJlcG9zaXRvcnkgYnJhbmNoZXMgWycqJywgJ3ByKiddXG4gICAqL1xuICByZWFkb25seSBhdXRvU3ViZG9tYWluQ3JlYXRpb25QYXR0ZXJucz86IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgdHlwZSBvZiBTU0wvVExTIGNlcnRpZmljYXRlIHRvIHVzZSBmb3IgeW91ciBjdXN0b20gZG9tYWluXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQW1wbGlmeSB1c2VzIHRoZSBkZWZhdWx0IGNlcnRpZmljYXRlIHRoYXQgaXQgcHJvdmlzaW9ucyBhbmQgbWFuYWdlcyBmb3IgeW91XG4gICAqL1xuICByZWFkb25seSBjdXN0b21DZXJ0aWZpY2F0ZT86IGFjbS5JQ2VydGlmaWNhdGU7XG59XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgYSBEb21haW5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEb21haW5Qcm9wcyBleHRlbmRzIERvbWFpbk9wdGlvbnMge1xuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIHRvIHdoaWNoIHRoZSBkb21haW4gbXVzdCBiZSBjb25uZWN0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGFwcDogSUFwcDtcblxuICAvKipcbiAgICogVGhlIElBTSByb2xlIHdpdGggYWNjZXNzIHRvIFJvdXRlNTMgd2hlbiB1c2luZyBlbmFibGVBdXRvU3ViZG9tYWluXG4gICAqIEBkZWZhdWx0IC0gdGhlIElBTSByb2xlIGZyb20gQXBwLmdyYW50UHJpbmNpcGFsXG4gICAqL1xuICByZWFkb25seSBhdXRvU3ViRG9tYWluSWFtUm9sZT86IGlhbS5JUm9sZTtcbn1cblxuLyoqXG4gKiBBbiBBbXBsaWZ5IENvbnNvbGUgZG9tYWluXG4gKi9cbkBwcm9wZXJ0eUluamVjdGFibGVcbmV4cG9ydCBjbGFzcyBEb21haW4gZXh0ZW5kcyBSZXNvdXJjZSB7XG4gIC8qKiBVbmlxdWVseSBpZGVudGlmaWVzIHRoaXMgY2xhc3MuICovXG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUFJPUEVSVFlfSU5KRUNUSU9OX0lEOiBzdHJpbmcgPSAnQGF3cy1jZGsuYXdzLWFtcGxpZnktYWxwaGEuRG9tYWluJztcbiAgLyoqXG4gICAqIFRoZSBBUk4gb2YgdGhlIGRvbWFpblxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgYXJuOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBETlMgUmVjb3JkIGZvciBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb25cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGNlcnRpZmljYXRlUmVjb3JkOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBkb21haW5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvbWFpbk5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHN0YXR1cyBvZiB0aGUgZG9tYWluIGFzc29jaWF0aW9uXG4gICAqXG4gICAqIEBhdHRyaWJ1dGVcbiAgICovXG4gIHB1YmxpYyByZWFkb25seSBkb21haW5TdGF0dXM6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHJlYXNvbiBmb3IgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBkb21haW5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IHN0YXR1c1JlYXNvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBCcmFuY2ggcGF0dGVybnMgZm9yIHRoZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgc3ViZG9tYWluLlxuICAgKlxuICAgKiBAYXR0cmlidXRlXG4gICAqL1xuICBwdWJsaWMgcmVhZG9ubHkgZG9tYWluQXV0b1N1YkRvbWFpbkNyZWF0aW9uUGF0dGVybnM6IHN0cmluZ1tdO1xuXG4gIC8qKlxuICAgKiBUaGUgSUFNIHNlcnZpY2Ugcm9sZSBmb3IgdGhlIHN1YmRvbWFpbi5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvbWFpbkF1dG9TdWJEb21haW5JYW1Sb2xlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB3aGV0aGVyIHRoZSBhdXRvbWF0ZWQgY3JlYXRpb24gb2Ygc3ViZG9tYWlucyBmb3IgYnJhbmNoZXMgaXMgZW5hYmxlZC5cbiAgICpcbiAgICogQGF0dHJpYnV0ZVxuICAgKi9cbiAgcHVibGljIHJlYWRvbmx5IGRvbWFpbkVuYWJsZUF1dG9TdWJEb21haW46IElSZXNvbHZhYmxlO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgc3ViRG9tYWluczogU3ViRG9tYWluW107XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERvbWFpblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICAvLyBFbmhhbmNlZCBDREsgQW5hbHl0aWNzIFRlbGVtZXRyeVxuICAgIGFkZENvbnN0cnVjdE1ldGFkYXRhKHRoaXMsIHByb3BzKTtcblxuICAgIHRoaXMuc3ViRG9tYWlucyA9IHByb3BzLnN1YkRvbWFpbnMgfHwgW107XG5cbiAgICBjb25zdCBkb21haW5OYW1lID0gcHJvcHMuZG9tYWluTmFtZSB8fCBpZDtcbiAgICBpZiAoIVRva2VuLmlzVW5yZXNvbHZlZChkb21haW5OYW1lKSAmJiBkb21haW5OYW1lLmxlbmd0aCA+IDI1NSkge1xuICAgICAgdGhyb3cgbmV3IFZhbGlkYXRpb25FcnJvcihsaXRgRG9tYWluTmFtZVRvb0xvbmdgLCBgRG9tYWluIG5hbWUgbXVzdCBiZSAyNTUgY2hhcmFjdGVycyBvciBsZXNzLCBnb3Q6ICR7ZG9tYWluTmFtZS5sZW5ndGh9IGNoYXJhY3RlcnMuYCwgdGhpcyk7XG4gICAgfVxuICAgIGlmICghVG9rZW4uaXNVbnJlc29sdmVkKGRvbWFpbk5hbWUpICYmICEvXigoKD8hLSlbQS1aYS16MC05LV17MCw2Mn1bQS1aYS16MC05XSlcXC4pKygoPyEtKVtBLVphLXowLTktXXsxLDYyfVtBLVphLXowLTldKShcXC4pPyQvLnRlc3QoZG9tYWluTmFtZSkpIHtcbiAgICAgIHRocm93IG5ldyBWYWxpZGF0aW9uRXJyb3IobGl0YEludmFsaWREb21haW5OYW1lYCwgYERvbWFpbiBuYW1lIG11c3QgYmUgYSB2YWxpZCBob3N0bmFtZSwgZ290OiAke2RvbWFpbk5hbWV9LmAsIHRoaXMpO1xuICAgIH1cblxuICAgIGNvbnN0IGRvbWFpbiA9IG5ldyBDZm5Eb21haW4odGhpcywgJ1Jlc291cmNlJywge1xuICAgICAgYXBwSWQ6IHByb3BzLmFwcC5hcHBJZCxcbiAgICAgIGRvbWFpbk5hbWUsXG4gICAgICBzdWJEb21haW5TZXR0aW5nczogTGF6eS5hbnkoeyBwcm9kdWNlOiAoKSA9PiB0aGlzLnJlbmRlclN1YkRvbWFpblNldHRpbmdzKCkgfSwgeyBvbWl0RW1wdHlBcnJheTogdHJ1ZSB9KSxcbiAgICAgIGVuYWJsZUF1dG9TdWJEb21haW46ICEhcHJvcHMuZW5hYmxlQXV0b1N1YmRvbWFpbixcbiAgICAgIGF1dG9TdWJEb21haW5DcmVhdGlvblBhdHRlcm5zOiBwcm9wcy5hdXRvU3ViZG9tYWluQ3JlYXRpb25QYXR0ZXJucyB8fCBbJyonLCAncHIqJ10sXG4gICAgICBhdXRvU3ViRG9tYWluSWFtUm9sZTogcHJvcHMuYXV0b1N1YkRvbWFpbklhbVJvbGU/LnJvbGVBcm4sXG4gICAgICBjZXJ0aWZpY2F0ZVNldHRpbmdzOiBwcm9wcy5jdXN0b21DZXJ0aWZpY2F0ZSA/IHtcbiAgICAgICAgY2VydGlmaWNhdGVUeXBlOiAnQ1VTVE9NJyxcbiAgICAgICAgY3VzdG9tQ2VydGlmaWNhdGVBcm46IHByb3BzLmN1c3RvbUNlcnRpZmljYXRlLmNlcnRpZmljYXRlQXJuLFxuICAgICAgfSA6IHVuZGVmaW5lZCxcbiAgICB9KTtcblxuICAgIHRoaXMuYXJuID0gZG9tYWluLmF0dHJBcm47XG4gICAgdGhpcy5jZXJ0aWZpY2F0ZVJlY29yZCA9IGRvbWFpbi5hdHRyQ2VydGlmaWNhdGVSZWNvcmQ7XG4gICAgdGhpcy5kb21haW5OYW1lID0gZG9tYWluLmF0dHJEb21haW5OYW1lO1xuICAgIHRoaXMuZG9tYWluU3RhdHVzID0gZG9tYWluLmF0dHJEb21haW5TdGF0dXM7XG4gICAgdGhpcy5zdGF0dXNSZWFzb24gPSBkb21haW4uYXR0clN0YXR1c1JlYXNvbjtcbiAgICB0aGlzLmRvbWFpbkF1dG9TdWJEb21haW5DcmVhdGlvblBhdHRlcm5zID0gZG9tYWluLmF0dHJBdXRvU3ViRG9tYWluQ3JlYXRpb25QYXR0ZXJucztcbiAgICB0aGlzLmRvbWFpbkF1dG9TdWJEb21haW5JYW1Sb2xlID0gZG9tYWluLmF0dHJBdXRvU3ViRG9tYWluSWFtUm9sZTtcbiAgICB0aGlzLmRvbWFpbkVuYWJsZUF1dG9TdWJEb21haW4gPSBkb21haW4uYXR0ckVuYWJsZUF1dG9TdWJEb21haW47XG5cbiAgICB0aGlzLm5vZGUuYWRkVmFsaWRhdGlvbih7IHZhbGlkYXRlOiAoKSA9PiB0aGlzLnZhbGlkYXRlRG9tYWluKCkgfSk7XG4gIH1cblxuICAvKipcbiAgICogTWFwcyBhIGJyYW5jaCB0byBhIHN1YiBkb21haW5cbiAgICpcbiAgICogQHBhcmFtIGJyYW5jaCBUaGUgYnJhbmNoXG4gICAqIEBwYXJhbSBwcmVmaXggVGhlIHByZWZpeC4gVXNlICcnIHRvIG1hcCB0byB0aGUgcm9vdCBvZiB0aGUgZG9tYWluLiBEZWZhdWx0cyB0byBicmFuY2ggbmFtZS5cbiAgICovXG4gIEBNZXRob2RNZXRhZGF0YSgpXG4gIHB1YmxpYyBtYXBTdWJEb21haW4oYnJhbmNoOiBJQnJhbmNoLCBwcmVmaXg/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnN1YkRvbWFpbnMucHVzaCh7IGJyYW5jaCwgcHJlZml4IH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLyoqXG4gICAqIE1hcHMgYSBicmFuY2ggdG8gdGhlIGRvbWFpbiByb290XG4gICAqL1xuICBATWV0aG9kTWV0YWRhdGEoKVxuICBwdWJsaWMgbWFwUm9vdChicmFuY2g6IElCcmFuY2gpIHtcbiAgICByZXR1cm4gdGhpcy5tYXBTdWJEb21haW4oYnJhbmNoLCAnJyk7XG4gIH1cblxuICBwcml2YXRlIHZhbGlkYXRlRG9tYWluKCkge1xuICAgIGlmICh0aGlzLnN1YkRvbWFpbnMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4gWydUaGUgZG9tYWluIGRvZXNuXFwndCBjb250YWluIGFueSBzdWJkb21haW5zJ107XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9XG5cbiAgcHJpdmF0ZSByZW5kZXJTdWJEb21haW5TZXR0aW5ncygpIHtcbiAgICByZXR1cm4gdGhpcy5zdWJEb21haW5zLm1hcChzID0+ICh7XG4gICAgICBicmFuY2hOYW1lOiBzLmJyYW5jaC5icmFuY2hOYW1lLFxuICAgICAgcHJlZml4OiBzLnByZWZpeCA/PyBzLmJyYW5jaC5icmFuY2hOYW1lLFxuICAgIH0pKTtcbiAgfVxufVxuXG4vKipcbiAqIFN1YiBkb21haW4gc2V0dGluZ3NcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdWJEb21haW4ge1xuICAvKipcbiAgICogVGhlIGJyYW5jaFxuICAgKi9cbiAgcmVhZG9ubHkgYnJhbmNoOiBJQnJhbmNoO1xuXG4gIC8qKlxuICAgKiBUaGUgcHJlZml4LiBVc2UgJycgdG8gbWFwIHRvIHRoZSByb290IG9mIHRoZSBkb21haW5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0aGUgYnJhbmNoIG5hbWVcbiAgICovXG4gIHJlYWRvbmx5IHByZWZpeD86IHN0cmluZztcbn1cbiJdfQ==