UNPKG

@almamedia-open-source/cdk-project-target

Version:

![CDK Version](https://img.shields.io/badge/CDK-v2-informational "CDK v2") ![Stability](https://img.shields.io/badge/Stability-Experimental-yellow "Stability: Experimental")

196 lines 16 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.EnvironmentContext = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const cdk_project_context_1 = require("@almamedia-open-source/cdk-project-context"); const change_case_1 = require("change-case"); const environments_1 = require("../configurations/environments"); /** * @experimental */ class EnvironmentContext { /** * (experimental) Get Environment Name. * * @param scope Construct. * @returns Environment Name (as given via `--context environment`) * @experimental * @example * * 'mock1' * 'mock2' * 'mock3' * 'development' * 'feature/foo-bar' * 'feature/ABC-123/new-stuff' * 'test' * 'staging' * 'qa1' * 'qa2' * 'qa3' * 'preproduction' * 'production' */ static getName(scope) { return cdk_project_context_1.ProjectContext.getEnvironment(scope); } /** * (experimental) Get Environment URL/DNS Compatible Name. * * @param scope Construct. * @returns Environment URL/DNS Compatible Name (as given via `--context environment` but `param-cased`) * @experimental * @example * * 'mock1' * 'mock2' * 'mock3' * 'development' * 'feature-foo-bar' * 'feature-abc-123-new-stuff' * 'test' * 'staging' * 'qa1' * 'qa2' * 'qa3' * 'preproduction' * 'production' */ static getUrlName(scope) { const name = EnvironmentContext.getName(scope); return change_case_1.paramCase(name); } /** * (experimental) Get Environment Label. * * Labels are useful since Environment Name can be complex, * such as `feature/foo-bar` or `qa3`, * but we need to be able to “label” all `feature/*` and `qaN` environments * as either `feature` or `qa`. * * @param scope Construct. * @returns Environment Label * @experimental * @example * * 'mock' * 'development' * 'feature' * 'test' * 'staging' * 'qa' * 'preproduction' * 'production' */ static getLabel(scope) { const name = EnvironmentContext.getName(scope); return environments_1.getLabelByName(name); } /** * (experimental) Get Environment Category. * * Categories are useful grouping to make distinction between `stable` * environments (`staging` & `production`) from `feature` or `verification` * environments (such as `test` or `preproduction`). * * @param scope Construct. * @returns Environment Category * @experimental * @example * * 'mock' * 'development' * 'feature' * 'verification' * 'stable' */ static getCategory(scope) { const label = EnvironmentContext.getLabel(scope); return environments_1.getCategoryByLabel(label); } /** * (experimental) Check if Environment is part of `mock` category. * * @param scope Construct. * @returns boolean indicating does Environment belong to `mock` category * @experimental */ static isMock(scope) { return EnvironmentContext.isEnvironmentCategoryMatch(scope, environments_1.EnvironmentCategory.MOCK); } /** * (experimental) Check if Environment is part of `development` category. * * Returns true for `development`, otherwise `false`. * * @param scope Construct. * @returns boolean indicating does Environment belong to `development` category * @experimental */ static isDevelopment(scope) { return EnvironmentContext.isEnvironmentCategoryMatch(scope, environments_1.EnvironmentCategory.DEVELOPMENT); } /** * (experimental) Check if Environment is part of `feature` category. * * Returns `true` for environments with name beginning with `feature/`-prefix, otherwise `false`. * * @param scope Construct. * @returns boolean indicating does Environment belong to `feature` category * @experimental */ static isFeature(scope) { return EnvironmentContext.isEnvironmentCategoryMatch(scope, environments_1.EnvironmentCategory.FEATURE); } /** * (experimental) Check if Environment is part of `verification` category. * * Returns `true` for `test` & `preproduction`, otherwise `false`. * * @param scope Construct. * @returns boolean indicating does Environment belong to `verification` category * @experimental */ static isVerification(scope) { return EnvironmentContext.isEnvironmentCategoryMatch(scope, environments_1.EnvironmentCategory.VERIFICATION); } /** * (experimental) Check if Environment is part of `stable` category. * * Returns `true` for `staging` & `production`, otherwise `false`. * * @param scope Construct. * @returns boolean indicating does Environment belong to `stable` category * @experimental */ static isStable(scope) { return EnvironmentContext.isEnvironmentCategoryMatch(scope, environments_1.EnvironmentCategory.STABLE); } /** * (experimental) Get Feature Info. * * If environment belongs to `feature` category, * this will return a string describing the feature (sting after `feature/`-prefix). * * If environment is not a feature environment, will return an empty string. * * @param scope Construct. * @returns string indicating the feature this environment relates to, if not feature environment returns an empty string * @experimental */ static getFeatureInfo(scope) { if (EnvironmentContext.isFeature(scope) !== false) return ''; const name = EnvironmentContext.getName(scope); return name.replace(/^feature\//i, ''); } static isEnvironmentCategoryMatch(scope, match) { const category = EnvironmentContext.getCategory(scope); return category === match; } } exports.EnvironmentContext = EnvironmentContext; _a = JSII_RTTI_SYMBOL_1; EnvironmentContext[_a] = { fqn: "@almamedia-open-source/cdk-project-target.EnvironmentContext", version: "0.0.10" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udGV4dC9lbnZpcm9ubWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLG9GQUE0RTtBQUM1RSw2Q0FBd0M7QUFFeEMsaUVBQTJIOzs7O0FBRTNILE1BQWEsa0JBQWtCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUc3QixNQUFNLENBQUMsT0FBTyxDQUFDLEtBQWdCO1FBQzdCLE9BQU8sb0NBQWMsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDOUMsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsVUFBVSxDQUFDLEtBQWdCO1FBQ2hDLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxPQUFPLHVCQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDekIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQWdCO1FBQzlCLE1BQU0sSUFBSSxHQUFHLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUMvQyxPQUFPLDZCQUFjLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7OztJQUdELE1BQU0sQ0FBQyxXQUFXLENBQUMsS0FBZ0I7UUFDakMsTUFBTSxLQUFLLEdBQUcsa0JBQWtCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pELE9BQU8saUNBQWtCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQzs7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsTUFBTSxDQUFDLEtBQWdCO1FBQzVCLE9BQU8sa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLGtDQUFtQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3hGLENBQUM7Ozs7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsYUFBYSxDQUFDLEtBQWdCO1FBQ25DLE9BQU8sa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLGtDQUFtQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQy9GLENBQUM7Ozs7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQWdCO1FBQy9CLE9BQU8sa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLGtDQUFtQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzNGLENBQUM7Ozs7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCO1FBQ3BDLE9BQU8sa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLGtDQUFtQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2hHLENBQUM7Ozs7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQWdCO1FBQzlCLE9BQU8sa0JBQWtCLENBQUMsMEJBQTBCLENBQUMsS0FBSyxFQUFFLGtDQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFGLENBQUM7Ozs7Ozs7Ozs7Ozs7SUFHRCxNQUFNLENBQUMsY0FBYyxDQUFDLEtBQWdCO1FBQ3BDLElBQUksa0JBQWtCLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxLQUFLLEtBQUs7WUFBRSxPQUFPLEVBQUUsQ0FBQztRQUM3RCxNQUFNLElBQUksR0FBRyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDL0MsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU8sTUFBTSxDQUFDLDBCQUEwQixDQUFDLEtBQWdCLEVBQUUsS0FBMEI7UUFDcEYsTUFBTSxRQUFRLEdBQUcsa0JBQWtCLENBQUMsV0FBVyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZELE9BQU8sUUFBUSxLQUFLLEtBQUssQ0FBQztJQUM1QixDQUFDOztBQTVESCxnREE4REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9qZWN0Q29udGV4dCB9IGZyb20gJ0BhbG1hbWVkaWEtb3Blbi1zb3VyY2UvY2RrLXByb2plY3QtY29udGV4dCc7XG5pbXBvcnQgeyBwYXJhbUNhc2UgfSBmcm9tICdjaGFuZ2UtY2FzZSc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IGdldExhYmVsQnlOYW1lLCBFbnZpcm9ubWVudExhYmVsLCBnZXRDYXRlZ29yeUJ5TGFiZWwsIEVudmlyb25tZW50Q2F0ZWdvcnkgfSBmcm9tICcuLi9jb25maWd1cmF0aW9ucy9lbnZpcm9ubWVudHMnO1xuXG5leHBvcnQgY2xhc3MgRW52aXJvbm1lbnRDb250ZXh0IHtcblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHN0YXRpYyBnZXROYW1lKHNjb3BlOiBDb25zdHJ1Y3QpOiBzdHJpbmcge1xuICAgIHJldHVybiBQcm9qZWN0Q29udGV4dC5nZXRFbnZpcm9ubWVudChzY29wZSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgc3RhdGljIGdldFVybE5hbWUoc2NvcGU6IENvbnN0cnVjdCk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IEVudmlyb25tZW50Q29udGV4dC5nZXROYW1lKHNjb3BlKTtcbiAgICByZXR1cm4gcGFyYW1DYXNlKG5hbWUpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHN0YXRpYyBnZXRMYWJlbChzY29wZTogQ29uc3RydWN0KTogRW52aXJvbm1lbnRMYWJlbCB7XG4gICAgY29uc3QgbmFtZSA9IEVudmlyb25tZW50Q29udGV4dC5nZXROYW1lKHNjb3BlKTtcbiAgICByZXR1cm4gZ2V0TGFiZWxCeU5hbWUobmFtZSk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgc3RhdGljIGdldENhdGVnb3J5KHNjb3BlOiBDb25zdHJ1Y3QpOiBFbnZpcm9ubWVudENhdGVnb3J5IHtcbiAgICBjb25zdCBsYWJlbCA9IEVudmlyb25tZW50Q29udGV4dC5nZXRMYWJlbChzY29wZSk7XG4gICAgcmV0dXJuIGdldENhdGVnb3J5QnlMYWJlbChsYWJlbCk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHN0YXRpYyBpc01vY2soc2NvcGU6IENvbnN0cnVjdCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBFbnZpcm9ubWVudENvbnRleHQuaXNFbnZpcm9ubWVudENhdGVnb3J5TWF0Y2goc2NvcGUsIEVudmlyb25tZW50Q2F0ZWdvcnkuTU9DSyk7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHN0YXRpYyBpc0RldmVsb3BtZW50KHNjb3BlOiBDb25zdHJ1Y3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRW52aXJvbm1lbnRDb250ZXh0LmlzRW52aXJvbm1lbnRDYXRlZ29yeU1hdGNoKHNjb3BlLCBFbnZpcm9ubWVudENhdGVnb3J5LkRFVkVMT1BNRU5UKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgc3RhdGljIGlzRmVhdHVyZShzY29wZTogQ29uc3RydWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEVudmlyb25tZW50Q29udGV4dC5pc0Vudmlyb25tZW50Q2F0ZWdvcnlNYXRjaChzY29wZSwgRW52aXJvbm1lbnRDYXRlZ29yeS5GRUFUVVJFKTtcbiAgfVxuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiAgc3RhdGljIGlzVmVyaWZpY2F0aW9uKHNjb3BlOiBDb25zdHJ1Y3QpOiBib29sZWFuIHtcbiAgICByZXR1cm4gRW52aXJvbm1lbnRDb250ZXh0LmlzRW52aXJvbm1lbnRDYXRlZ29yeU1hdGNoKHNjb3BlLCBFbnZpcm9ubWVudENhdGVnb3J5LlZFUklGSUNBVElPTik7XG4gIH1cblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4gIHN0YXRpYyBpc1N0YWJsZShzY29wZTogQ29uc3RydWN0KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIEVudmlyb25tZW50Q29udGV4dC5pc0Vudmlyb25tZW50Q2F0ZWdvcnlNYXRjaChzY29wZSwgRW52aXJvbm1lbnRDYXRlZ29yeS5TVEFCTEUpO1xuICB9XG5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuICBzdGF0aWMgZ2V0RmVhdHVyZUluZm8oc2NvcGU6IENvbnN0cnVjdCk6IHN0cmluZyB7XG4gICAgaWYgKEVudmlyb25tZW50Q29udGV4dC5pc0ZlYXR1cmUoc2NvcGUpICE9PSBmYWxzZSkgcmV0dXJuICcnO1xuICAgIGNvbnN0IG5hbWUgPSBFbnZpcm9ubWVudENvbnRleHQuZ2V0TmFtZShzY29wZSk7XG4gICAgcmV0dXJuIG5hbWUucmVwbGFjZSgvXmZlYXR1cmVcXC8vaSwgJycpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaXNFbnZpcm9ubWVudENhdGVnb3J5TWF0Y2goc2NvcGU6IENvbnN0cnVjdCwgbWF0Y2g6IEVudmlyb25tZW50Q2F0ZWdvcnkpOiBib29sZWFuIHtcbiAgICBjb25zdCBjYXRlZ29yeSA9IEVudmlyb25tZW50Q29udGV4dC5nZXRDYXRlZ29yeShzY29wZSk7XG4gICAgcmV0dXJuIGNhdGVnb3J5ID09PSBtYXRjaDtcbiAgfVxuXG59XG4iXX0=