UNPKG

@cdklabs/cdk-ecs-codedeploy

Version:

CDK Constructs for performing ECS Deployments with CodeDeploy

106 lines 16.9 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.EcsAppSpec = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); /** * Represents an AppSpec to be used for ECS services. * * see: https://docs.aws.amazon.com/codedeploy/latest/userguide/reference-appspec-file-structure-resources.html#reference-appspec-file-structure-resources-ecs */ class EcsAppSpec { constructor(targetService, hooks) { this.targetService = targetService; this.hooks = hooks; } /** * Render JSON string for this AppSpec to be used * * @returns string representation of this AppSpec */ toString() { const appSpec = { version: '0.0', Resources: [{ TargetService: { Type: 'AWS::ECS::Service', Properties: { TaskDefinition: this.targetService.taskDefinition.taskDefinitionArn, LoadBalancerInfo: { ContainerName: this.targetService.containerName, ContainerPort: this.targetService.containerPort, }, PlatformVersion: this.targetService.platformVersion, NetworkConfiguration: this.configureAwsVpcNetworkingWithSecurityGroups(this.targetService.awsvpcConfiguration), CapacityProviderStrategy: this.targetService.capacityProviderStrategy?.map(capacityProviderStrategy => { return { Base: capacityProviderStrategy.base, CapacityProvider: capacityProviderStrategy.capacityProvider, Weight: capacityProviderStrategy.weight, }; }), }, }, }], ...this.hooksSection(), }; return JSON.stringify(appSpec); } hooksSection() { if (this.hooks == undefined) { return {}; } const hooks = this.hooks; if (this.hooks.beforeInstall == undefined && this.hooks.afterInstall == undefined && this.hooks.afterAllowTestTraffic == undefined && this.hooks.beforeAllowTraffic == undefined && this.hooks.afterAllowTraffic == undefined) { return {}; } const capitalize = (s) => s && s[0].toUpperCase() + s.slice(1); const hook = (name) => { const hookValue = hooks[name]; if (hookValue == undefined) { return []; } else { return [{ [capitalize(name)]: typeof hookValue === 'string' ? hookValue : hookValue.functionArn, }]; } }; const beforeInstall = hook('beforeInstall'); const afterInstall = hook('afterInstall'); const afterAllowTestTraffic = hook('afterAllowTestTraffic'); const beforeAllowTraffic = hook('beforeAllowTraffic'); const afterAllowTraffic = hook('afterAllowTraffic'); return { Hooks: [ ...beforeInstall, ...afterInstall, ...afterAllowTestTraffic, ...beforeAllowTraffic, ...afterAllowTraffic, ], }; } configureAwsVpcNetworkingWithSecurityGroups(awsvpcConfiguration) { if (!awsvpcConfiguration) { return undefined; } return { awsvpcConfiguration: { assignPublicIp: awsvpcConfiguration.assignPublicIp ? 'ENABLED' : 'DISABLED', subnets: awsvpcConfiguration.vpc.selectSubnets(awsvpcConfiguration.vpcSubnets).subnetIds, securityGroups: awsvpcConfiguration.securityGroups?.map((sg) => sg.securityGroupId), }, }; } } exports.EcsAppSpec = EcsAppSpec; _a = JSII_RTTI_SYMBOL_1; EcsAppSpec[_a] = { fqn: "@cdklabs/cdk-ecs-codedeploy.EcsAppSpec", version: "0.0.421" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZWNzLWFwcHNwZWMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFJQTs7OztHQUlHO0FBQ0gsTUFBYSxVQUFVO0lBVXJCLFlBQVksYUFBNEIsRUFBRSxLQUFvQjtRQUM1RCxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRUQ7Ozs7T0FJRztJQUNILFFBQVE7UUFDTixNQUFNLE9BQU8sR0FBRztZQUNkLE9BQU8sRUFBRSxLQUFLO1lBQ2QsU0FBUyxFQUFFLENBQUM7b0JBQ1YsYUFBYSxFQUFFO3dCQUNiLElBQUksRUFBRSxtQkFBbUI7d0JBQ3pCLFVBQVUsRUFBRTs0QkFDVixjQUFjLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxjQUFjLENBQUMsaUJBQWlCOzRCQUNuRSxnQkFBZ0IsRUFBRTtnQ0FDaEIsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYTtnQ0FDL0MsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsYUFBYTs2QkFDaEQ7NEJBQ0QsZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZTs0QkFDbkQsb0JBQW9CLEVBQUUsSUFBSSxDQUFDLDJDQUEyQyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsbUJBQW1CLENBQUM7NEJBQzlHLHdCQUF3QixFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsd0JBQXdCLEVBQUUsR0FBRyxDQUFDLHdCQUF3QixDQUFDLEVBQUU7Z0NBQ3BHLE9BQU87b0NBQ0wsSUFBSSxFQUFFLHdCQUF3QixDQUFDLElBQUk7b0NBQ25DLGdCQUFnQixFQUFFLHdCQUF3QixDQUFDLGdCQUFnQjtvQ0FDM0QsTUFBTSxFQUFFLHdCQUF3QixDQUFDLE1BQU07aUNBQ3hDLENBQUM7NEJBQ0osQ0FBQyxDQUFDO3lC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J2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgbGFtYmRhIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sYW1iZGEnO1xuXG4vKipcbiAqIFJlcHJlc2VudHMgYW4gQXBwU3BlYyB0byBiZSB1c2VkIGZvciBFQ1Mgc2VydmljZXMuXG4gKlxuICogc2VlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vY29kZWRlcGxveS9sYXRlc3QvdXNlcmd1aWRlL3JlZmVyZW5jZS1hcHBzcGVjLWZpbGUtc3RydWN0dXJlLXJlc291cmNlcy5odG1sI3JlZmVyZW5jZS1hcHBzcGVjLWZpbGUtc3RydWN0dXJlLXJlc291cmNlcy1lY3NcbiAqL1xuZXhwb3J0IGNsYXNzIEVjc0FwcFNwZWMge1xuICAvKipcbiAgICogU2VydmljZSB0byB0YXJnZXQgZm9yIHRoZSBkZXBsb3ltZW50XG4gICAqL1xuICBwcml2YXRlIHJlYWRvbmx5IHRhcmdldFNlcnZpY2U6IFRhcmdldFNlcnZpY2U7XG4gIC8qKlxuICAgKiBPcHRpb25hbCBsaWZlY3ljbGUgaG9va3NcbiAgICovXG4gIHByaXZhdGUgcmVhZG9ubHkgaG9va3M/OiBBcHBTcGVjSG9va3M7XG5cbiAgY29uc3RydWN0b3IodGFyZ2V0U2VydmljZTogVGFyZ2V0U2VydmljZSwgaG9va3M/OiBBcHBTcGVjSG9va3MpIHtcbiAgICB0aGlzLnRhcmdldFNlcnZpY2UgPSB0YXJnZXRTZXJ2aWNlO1xuICAgIHRoaXMuaG9va3MgPSBob29rcztcbiAgfVxuXG4gIC8qKlxuICAgKiBSZW5kZXIgSlNPTiBzdHJpbmcgZm9yIHRoaXMgQXBwU3BlYyB0byBiZSB1c2VkXG4gICAqXG4gICAqIEByZXR1cm5zIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGlzIEFwcFNwZWNcbiAgICovXG4gIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYXBwU3BlYyA9IHtcbiAgICAgIHZlcnNpb246ICcwLjAnLFxuICAgICAgUmVzb3VyY2VzOiBbe1xuICAgICAgICBUYXJnZXRTZXJ2aWNlOiB7XG4gICAgICAgICAgVHlwZTogJ0FXUzo6RUNTOjpTZXJ2aWNlJyxcbiAgICAgICAgICBQcm9wZXJ0aWVzOiB7XG4gICAgICAgICAgICBUYXNrRGVmaW5pdGlvbjogdGhpcy50YXJnZXRTZXJ2aWNlLnRhc2tEZWZpbml0aW9uLnRhc2tEZWZpbml0aW9uQXJuLFxuICAgICAgICAgICAgTG9hZEJhbGFuY2VySW5mbzoge1xuICAgICAgICAgICAgICBDb250YWluZXJOYW1lOiB0aGlzLnRhcmdldFNlcnZpY2UuY29udGFpbmVyTmFtZSxcbiAgICAgICAgICAgICAgQ29udGFpbmVyUG9ydDogdGhpcy50YXJnZXRTZXJ2aWNlLmNvbnRhaW5lclBvcnQsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgUGxhdGZvcm1WZXJzaW9uOiB0aGlzLnRhcmdldFNlcnZpY2UucGxhdGZvcm1WZXJzaW9uLFxuICAgICAgICAgICAgTmV0d29ya0NvbmZpZ3VyYXRpb246IHRoaXMuY29uZmlndXJlQXdzVnBjTmV0d29ya2luZ1dpdGhTZWN1cml0eUdyb3Vwcyh0aGlzLnRhcmdldFNlcnZpY2UuYXdzdnBjQ29uZmlndXJhdGlvbiksXG4gICAgICAgICAgICBDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3k6IHRoaXMudGFyZ2V0U2VydmljZS5jYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3k/Lm1hcChjYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3kgPT4ge1xuICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIEJhc2U6IGNhcGFjaXR5UHJvdmlkZXJTdHJhdGVneS5iYXNlLFxuICAgICAgICAgICAgICAgIENhcGFjaXR5UHJvdmlkZXI6IGNhcGFjaXR5UHJvdmlkZXJTdHJhdGVneS5jYXBhY2l0eVByb3ZpZGVyLFxuICAgICAgICAgICAgICAgIFdlaWdodDogY2FwYWNpdHlQcm92aWRlclN0cmF0ZWd5LndlaWdodCxcbiAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICB9XSxcbiAgICAgIC4uLnRoaXMuaG9va3NTZWN0aW9uKCksXG4gICAgfTtcbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXBwU3BlYyk7XG4gIH1cblxuICBwcml2YXRlIGhvb2tzU2VjdGlvbigpIHtcbiAgICBpZiAodGhpcy5ob29rcyA9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgaG9va3MgPSB0aGlzLmhvb2tzO1xuICAgIGlmIChcbiAgICAgIHRoaXMuaG9va3MuYmVmb3JlSW5zdGFsbCA9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuaG9va3MuYWZ0ZXJJbnN0YWxsID09IHVuZGVmaW5lZCAmJlxuICAgICAgdGhpcy5ob29rcy5hZnRlckFsbG93VGVzdFRyYWZmaWMgPT0gdW5kZWZpbmVkICYmXG4gICAgICB0aGlzLmhvb2tzLmJlZm9yZUFsbG93VHJhZmZpYyA9PSB1bmRlZmluZWQgJiZcbiAgICAgIHRoaXMuaG9va3MuYWZ0ZXJBbGxvd1RyYWZmaWMgPT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICAgIGNvbnN0IGNhcGl0YWxpemUgPSAoczogc3RyaW5nKSA9PiBzICYmIHNbMF0udG9VcHBlckNhc2UoKSArIHMuc2xpY2UoMSk7XG4gICAgY29uc3QgaG9vayA9IChuYW1lOiBrZXlvZiBBcHBTcGVjSG9va3MpID0+IHtcbiAgICAgIGNvbnN0IGhvb2tWYWx1ZSA9IGhvb2tzW25hbWVdO1xuICAgICAgaWYgKGhvb2tWYWx1ZSA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmV0dXJuIFt7XG4gICAgICAgICAgW2NhcGl0YWxpemUobmFtZSldOlxuICAgICAgICAgICAgdHlwZW9mIGhvb2tWYWx1ZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgPyBob29rVmFsdWVcbiAgICAgICAgICAgICAgOiBob29rVmFsdWUuZnVuY3Rpb25Bcm4sXG4gICAgICAgIH1dO1xuICAgICAgfVxuICAgIH07XG4gICAgY29uc3QgYmVmb3JlSW5zdGFsbCA9IGhvb2soJ2JlZm9yZUluc3RhbGwnKTtcbiAgICBjb25zdCBhZnRlckluc3RhbGwgPSBob29rKCdhZnRlckluc3RhbGwnKTtcbiAgICBjb25zdCBhZnRlckFsbG93VGVzdFRyYWZmaWMgPSBob29rKCdhZnRlckFsbG93VGVzdFRyYWZmaWMnKTtcbiAgICBjb25zdCBiZWZvcmVBbGxvd1RyYWZmaWMgPSBob29rKCdiZWZvcmVBbGxvd1RyYWZmaWMnKTtcbiAgICBjb25zdCBhZnRlckFsbG93VHJhZmZpYyA9IGhvb2soJ2FmdGVyQWxsb3dUcmFmZmljJyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgSG9va3M6IFtcbiAgICAgICAgLi4uYmVmb3JlSW5zdGFsbCxcbiAgICAgICAgLi4uYWZ0ZXJJbnN0YWxsLFxuICAgICAgICAuLi5hZnRlckFsbG93VGVzdFRyYWZmaWMsXG4gICAgICAgIC4uLmJlZm9yZUFsbG93VHJhZmZpYyxcbiAgICAgICAgLi4uYWZ0ZXJBbGxvd1RyYWZmaWMsXG4gICAgICBdLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIGNvbmZpZ3VyZUF3c1ZwY05ldHdvcmtpbmdXaXRoU2VjdXJpdHlHcm91cHMoYXdzdnBjQ29uZmlndXJhdGlvbj86IEF3c3ZwY0NvbmZpZ3VyYXRpb24pIHtcbiAgICBpZiAoIWF3c3ZwY0NvbmZpZ3VyYXRpb24pIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBhd3N2cGNDb25maWd1cmF0aW9uOiB7XG4gICAgICAgIGFzc2lnblB1YmxpY0lwOiBhd3N2cGNDb25maWd1cmF0aW9uLmFzc2lnblB1YmxpY0lwID8gJ0VOQUJMRUQnIDogJ0RJU0FCTEVEJyxcbiAgICAgICAgc3VibmV0czogYXdzdnBjQ29uZmlndXJhdGlvbi52cGMuc2VsZWN0U3VibmV0cyhhd3N2cGNDb25maWd1cmF0aW9uLnZwY1N1Ym5ldHMpLnN1Ym5ldElkcyxcbiAgICAgICAgc2VjdXJpdHlHcm91cHM6IGF3c3ZwY0NvbmZpZ3VyYXRpb24uc2VjdXJpdHlHcm91cHM/Lm1hcCgoc2cpID0+IHNnLnNlY3VyaXR5R3JvdXBJZCksXG4gICAgICB9LFxuICAgIH07XG4gIH1cbn1cblxuLyoqXG4gKiBEZXNjcmliZSB0aGUgdGFyZ2V0IGZvciBDb2RlRGVwbG95IHRvIHVzZSB3aGVuIGNyZWF0aW5nIGEgZGVwbG95bWVudCBmb3IgYW4gZWNzLkVjc0RlcGxveW1lbnRHcm91cC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBUYXJnZXRTZXJ2aWNlIHtcbiAgLyoqXG4gICAqIFRoZSBUYXNrRGVmaW50aW9uIHRvIGRlcGxveSB0byB0aGUgdGFyZ2V0IHNlcnZpY2VzLlxuICAgKi9cbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IGVjcy5JVGFza0RlZmluaXRpb247XG5cbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBBbWF6b24gRUNTIGNvbnRhaW5lciB0aGF0IGNvbnRhaW5zIHlvdXIgQW1hem9uIEVDUyBhcHBsaWNhdGlvbi4gSXQgbXVzdCBiZSBhIGNvbnRhaW5lciBzcGVjaWZpZWQgaW4geW91ciBBbWF6b24gRUNTIHRhc2sgZGVmaW5pdGlvbi5cbiAgICovXG4gIHJlYWRvbmx5IGNvbnRhaW5lck5hbWU6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIHBvcnQgb24gdGhlIGNvbnRhaW5lciB3aGVyZSB0cmFmZmljIHdpbGwgYmUgcm91dGVkIHRvLlxuICAgKi9cbiAgcmVhZG9ubHkgY29udGFpbmVyUG9ydDogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBUaGUgcGxhdGZvcm0gdmVyc2lvbiBvZiB0aGUgRmFyZ2F0ZSB0YXNrcyBpbiB0aGUgZGVwbG95ZWQgQW1hem9uIEVDUyBzZXJ2aWNlLlxuICAgKiBzZWU6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BbWF6b25FQ1MvbGF0ZXN0L2RldmVsb3Blcmd1aWRlL3BsYXRmb3JtX3ZlcnNpb25zLmh0bWxcbiAgICpcbiAgICogQGRlZmF1bHQgTEFURVNUXG4gICAqL1xuICByZWFkb25seSBwbGF0Zm9ybVZlcnNpb24/OiBlY3MuRmFyZ2F0ZVBsYXRmb3JtVmVyc2lvbjtcblxuICAvKipcbiAgICogTmV0d29yayBjb25maWd1cmF0aW9uIGZvciBFQ1Mgc2VydmljZXMgdGhhdCBoYXZlIGEgbmV0d29yayB0eXBlIG9mIGBhd3N2cGNgLlxuICAgKlxuICAgKiBAZGVmYXVsdCByZXVzZSBjdXJyZW50IG5ldHdvcmsgc2V0dGluZ3MgZm9yIEVDUyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgYXdzdnBjQ29uZmlndXJhdGlvbj86IEF3c3ZwY0NvbmZpZ3VyYXRpb247XG5cbiAgLyoqXG4gICAqIEEgbGlzdCBvZiBBbWF6b24gRUNTIGNhcGFjaXR5IHByb3ZpZGVycyB0byB1c2UgZm9yIHRoZSBkZXBsb3ltZW50LlxuICAgKlxuICAgKiBAZGVmYXVsdCByZXVzZSBjdXJyZW50IGNhcGNpdHkgcHJvdmlkZXIgc3RyYXRlZ3kgZm9yIEVDUyBzZXJ2aWNlLlxuICAgKi9cbiAgcmVhZG9ubHkgY2FwYWNpdHlQcm92aWRlclN0cmF0ZWd5PzogZWNzLkNhcGFjaXR5UHJvdmlkZXJTdHJhdGVneVtdO1xuXG59XG5cbi8qKlxuICogTmV0d29yayBjb25maWd1cmF0aW9uIGZvciBFQ1Mgc2VydmljZXMgdGhhdCBoYXZlIGEgbmV0d29yayB0eXBlIG9mIGBhd3N2cGNgLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIEF3c3ZwY0NvbmZpZ3VyYXRpb24ge1xuICAvKipcbiAgICogVGhlIFZQQyB0byB1c2UgZm9yIHRoZSB0YXNrLlxuICAgKi9cbiAgcmVhZG9ubHkgdnBjOiBlYzIuSVZwYztcblxuICAvKipcbiAgICogVGhlIFN1Ym5ldHMgdG8gdXNlIGZvciB0aGUgdGFzay5cbiAgICovXG4gIHJlYWRvbmx5IHZwY1N1Ym5ldHM6IGVjMi5TdWJuZXRTZWxlY3Rpb247XG5cbiAgLyoqXG4gICAqIFRoZSBTZWN1cml0eSBHcm91cHMgdG8gdXNlIGZvciB0aGUgdGFzay5cbiAgICovXG4gIHJlYWRvbmx5IHNlY3VyaXR5R3JvdXBzOiBlYzIuSVNlY3VyaXR5R3JvdXBbXTtcblxuICAvKipcbiAgICogQXNzaWduIGEgcHVibGljIElQIGFkZHJlc3MgdG8gdGhlIHRhc2suXG4gICAqL1xuICByZWFkb25seSBhc3NpZ25QdWJsaWNJcDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBMaWZlY3ljbGUgaG9va3MgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEFwcFNwZWNIb29rcyB7XG4gIC8qKlxuICAgKiBMYW1iZGEgb3IgQVJOIG9mIGEgbGFtYmRhIHRvIHJ1biB0YXNrcyBiZWZvcmUgdGhlIHJlcGxhY2VtZW50IHRhc2sgc2V0IGlzIGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBiZWZvcmVJbnN0YWxsPzogc3RyaW5nIHwgbGFtYmRhLklGdW5jdGlvbjtcbiAgLyoqXG4gICAqIExhbWJkYSBvciBBUk4gb2YgYSBsYW1iZGEgdG8gcnVuIHRhc2tzIGFmdGVyIHRoZSByZXBsYWNlbWVudCB0YXNrIHNldCBpcyBjcmVhdGVkIGFuZCBvbmUgb2YgdGhlIHRhcmdldCBncm91cHMgaXMgYXNzb2NpYXRlZCB3aXRoIGl0LlxuICAgKi9cbiAgcmVhZG9ubHkgYWZ0ZXJJbnN0YWxsPzogc3RyaW5nIHwgbGFtYmRhLklGdW5jdGlvbjtcbiAgLyoqXG4gICAqIExhbWJkYSBvciBBUk4gb2YgYSBsYW1iZGEgdG8gcnVuIHRhc2tzIGFmdGVyIHRoZSB0ZXN0IGxpc3RlbmVyIHNlcnZlcyB0cmFmZmljIHRvIHRoZSByZXBsYWNlbWVudCB0YXNrIHNldC5cbiAgICovXG4gIHJlYWRvbmx5IGFmdGVyQWxsb3dUZXN0VHJhZmZpYz86IHN0cmluZyB8IGxhbWJkYS5JRnVuY3Rpb247XG4gIC8qKlxuICAgKiBMYW1iZGEgb3IgQVJOIG9mIGEgbGFtYmRhIHRvIHJ1biB0YXNrcyBhZnRlciB0aGUgc2Vjb25kIHRhcmdldCBncm91cCBpcyBhc3NvY2lhdGVkIHdpdGggdGhlIHJlcGxhY2VtZW50IHRhc2sgc2V0LCBidXQgYmVmb3JlIHRyYWZmaWMgaXMgc2hpZnRlZCB0byB0aGUgcmVwbGFjZW1lbnQgdGFzayBzZXQuXG4gICAqL1xuICByZWFkb25seSBiZWZvcmVBbGxvd1RyYWZmaWM/OiBzdHJpbmcgfCBsYW1iZGEuSUZ1bmN0aW9uO1xuICAvKipcbiAgICogTGFtYmRhIG9yIEFSTiBvZiBhIGxhbWJkYSB0byBydW4gdGFza3MgYWZ0ZXIgdGhlIHNlY29uZCB0YXJnZXQgZ3JvdXAgc2VydmVzIHRyYWZmaWMgdG8gdGhlIHJlcGxhY2VtZW50IHRhc2sgc2V0LlxuICAgKi9cbiAgcmVhZG9ubHkgYWZ0ZXJBbGxvd1RyYWZmaWM/OiBzdHJpbmcgfCBsYW1iZGEuSUZ1bmN0aW9uO1xufVxuIl19