@anansi/generator-js
Version:
Generate Fast React Web Apps
137 lines (135 loc) • 16.4 kB
JavaScript
import Generator from 'yeoman-generator';
export const licenses = [{
name: 'Apache 2.0',
value: 'Apache-2.0'
}, {
name: 'MIT',
value: 'MIT'
}, {
name: 'Mozilla Public License 2.0',
value: 'MPL-2.0'
}, {
name: 'BSD 2-Clause (FreeBSD) License',
value: 'BSD-2-Clause-FreeBSD'
}, {
name: 'BSD 3-Clause (NewBSD) License',
value: 'BSD-3-Clause'
}, {
name: 'Internet Systems Consortium (ISC) License',
value: 'ISC'
}, {
name: 'GNU AGPL 3.0',
value: 'AGPL-3.0'
}, {
name: 'GNU GPL 3.0',
value: 'GPL-3.0'
}, {
name: 'GNU LGPL 3.0',
value: 'LGPL-3.0'
}, {
name: 'Unlicense',
value: 'unlicense'
}, {
name: 'No License (Copyrighted)',
value: 'UNLICENSED'
}];
export default class GeneratorLicense extends Generator {
constructor(args, options, features) {
if (options.resolved?.startsWith('file://')) options.resolved = options.resolved.substring(7);
// @ts-expect-error dynamic options
super(args, options, features);
this.option('name', {
type: String,
description: 'Name of the license owner'
});
this.option('email', {
type: String,
description: 'Email of the license owner'
});
this.option('website', {
type: String,
description: 'Website of the license owner'
});
this.option('year', {
type: String,
description: 'Year(s) to include on the license',
default: new Date().getFullYear()
});
this.option('licensePrompt', {
type: String,
description: 'License prompt text',
default: 'Which license do you want to use?',
hide: true
});
this.option('defaultLicense', {
type: String,
description: 'Default license'
});
this.option('license', {
type: String,
description: 'Select a license, so no license prompt will happen, in case you want to handle it outside of this generator'
});
this.option('output', {
type: String,
description: 'Set the output file for the generated license',
default: 'LICENSE'
});
this.option('publish', {
type: Boolean,
description: 'Publish the package'
});
}
async initializing() {
this.gitc = {
user: {
name: await this.git.name(),
email: await this.git.email()
}
};
}
prompting() {
const prompts = [{
type: 'select',
name: 'license',
message: this.options.licensePrompt,
default: this.options.defaultLicense,
when: !this.options.license || licenses.find(x => x.value === this.options.license) === undefined,
choices: licenses
}];
return this.prompt(prompts).then(props => {
this.props = Object.assign({
name: this.options.name || this.gitc.user.name,
email: this.options.email || this.gitc.user.email,
website: this.options.website,
license: this.options.license
}, props);
});
}
configuring() {
// License file
const filename = this.props.license + '.txt';
let author = this.props.name.trim();
if (this.props.email) {
author += ' <' + this.props.email.trim() + '>';
}
if (this.props.website) {
author += ' (' + this.props.website.trim() + ')';
}
this.fs.copyTpl(this.templatePath(filename), this.destinationPath(this.options.output), {
year: this.options.year,
author: author
});
// Package
if (!this.fs.exists(this.destinationPath('package.json'))) {
return;
}
const pkg = this.fs.readJSON(this.destinationPath('package.json'), {});
pkg.license = this.props.license;
if (this.options.publish === undefined && this.props.license === 'UNLICENSED' || this.options.publish === false) {
delete pkg.license;
pkg.private = true;
}
this.packageJson.merge(pkg);
}
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJHZW5lcmF0b3IiLCJsaWNlbnNlcyIsIm5hbWUiLCJ2YWx1ZSIsIkdlbmVyYXRvckxpY2Vuc2UiLCJjb25zdHJ1Y3RvciIsImFyZ3MiLCJvcHRpb25zIiwiZmVhdHVyZXMiLCJyZXNvbHZlZCIsInN0YXJ0c1dpdGgiLCJzdWJzdHJpbmciLCJvcHRpb24iLCJ0eXBlIiwiU3RyaW5nIiwiZGVzY3JpcHRpb24iLCJkZWZhdWx0IiwiRGF0ZSIsImdldEZ1bGxZZWFyIiwiaGlkZSIsIkJvb2xlYW4iLCJpbml0aWFsaXppbmciLCJnaXRjIiwidXNlciIsImdpdCIsImVtYWlsIiwicHJvbXB0aW5nIiwicHJvbXB0cyIsIm1lc3NhZ2UiLCJsaWNlbnNlUHJvbXB0IiwiZGVmYXVsdExpY2Vuc2UiLCJ3aGVuIiwibGljZW5zZSIsImZpbmQiLCJ4IiwidW5kZWZpbmVkIiwiY2hvaWNlcyIsInByb21wdCIsInRoZW4iLCJwcm9wcyIsIk9iamVjdCIsImFzc2lnbiIsIndlYnNpdGUiLCJjb25maWd1cmluZyIsImZpbGVuYW1lIiwiYXV0aG9yIiwidHJpbSIsImZzIiwiY29weVRwbCIsInRlbXBsYXRlUGF0aCIsImRlc3RpbmF0aW9uUGF0aCIsIm91dHB1dCIsInllYXIiLCJleGlzdHMiLCJwa2ciLCJyZWFkSlNPTiIsInB1Ymxpc2giLCJwcml2YXRlIiwicGFja2FnZUpzb24iLCJtZXJnZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWNlbnNlL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBHZW5lcmF0b3IsIHsgdHlwZSBCYXNlT3B0aW9ucyB9IGZyb20gJ3llb21hbi1nZW5lcmF0b3InO1xuXG5leHBvcnQgY29uc3QgbGljZW5zZXMgPSBbXG4gIHsgbmFtZTogJ0FwYWNoZSAyLjAnLCB2YWx1ZTogJ0FwYWNoZS0yLjAnIH0sXG4gIHsgbmFtZTogJ01JVCcsIHZhbHVlOiAnTUlUJyB9LFxuICB7IG5hbWU6ICdNb3ppbGxhIFB1YmxpYyBMaWNlbnNlIDIuMCcsIHZhbHVlOiAnTVBMLTIuMCcgfSxcbiAgeyBuYW1lOiAnQlNEIDItQ2xhdXNlIChGcmVlQlNEKSBMaWNlbnNlJywgdmFsdWU6ICdCU0QtMi1DbGF1c2UtRnJlZUJTRCcgfSxcbiAgeyBuYW1lOiAnQlNEIDMtQ2xhdXNlIChOZXdCU0QpIExpY2Vuc2UnLCB2YWx1ZTogJ0JTRC0zLUNsYXVzZScgfSxcbiAgeyBuYW1lOiAnSW50ZXJuZXQgU3lzdGVtcyBDb25zb3J0aXVtIChJU0MpIExpY2Vuc2UnLCB2YWx1ZTogJ0lTQycgfSxcbiAgeyBuYW1lOiAnR05VIEFHUEwgMy4wJywgdmFsdWU6ICdBR1BMLTMuMCcgfSxcbiAgeyBuYW1lOiAnR05VIEdQTCAzLjAnLCB2YWx1ZTogJ0dQTC0zLjAnIH0sXG4gIHsgbmFtZTogJ0dOVSBMR1BMIDMuMCcsIHZhbHVlOiAnTEdQTC0zLjAnIH0sXG4gIHsgbmFtZTogJ1VubGljZW5zZScsIHZhbHVlOiAndW5saWNlbnNlJyB9LFxuICB7IG5hbWU6ICdObyBMaWNlbnNlIChDb3B5cmlnaHRlZCknLCB2YWx1ZTogJ1VOTElDRU5TRUQnIH0sXG5dO1xuXG50eXBlIExpY2Vuc2VPcHRpb25zID0gQmFzZU9wdGlvbnMgJiB7XG4gIG5hbWU6IHN0cmluZztcbiAgZW1haWw6IHN0cmluZztcbiAgd2Vic2l0ZTogc3RyaW5nO1xuICB5ZWFyOiBzdHJpbmc7XG4gIGxpY2Vuc2VQcm9tcHQ6IHN0cmluZztcbiAgZGVmYXVsdExpY2Vuc2U6IHN0cmluZztcbiAgbGljZW5zZTogc3RyaW5nO1xuICBvdXRwdXQ6IHN0cmluZztcbiAgcHVibGlzaDogYm9vbGVhbjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdlbmVyYXRvckxpY2Vuc2UgZXh0ZW5kcyBHZW5lcmF0b3I8XG4gIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gIExpY2Vuc2VPcHRpb25zXG4+IHtcbiAgZGVjbGFyZSBwcml2YXRlIGdpdGM6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gIGRlY2xhcmUgcHJpdmF0ZSBwcm9wczogUmVjb3JkPHN0cmluZywgYW55PjtcblxuICBjb25zdHJ1Y3RvcihcbiAgICBhcmdzOiBzdHJpbmcgfCBzdHJpbmdbXSxcbiAgICBvcHRpb25zOiBMaWNlbnNlT3B0aW9ucyxcbiAgICBmZWF0dXJlczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gICkge1xuICAgIGlmIChvcHRpb25zLnJlc29sdmVkPy5zdGFydHNXaXRoKCdmaWxlOi8vJykpXG4gICAgICBvcHRpb25zLnJlc29sdmVkID0gb3B0aW9ucy5yZXNvbHZlZC5zdWJzdHJpbmcoNyk7XG5cbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yIGR5bmFtaWMgb3B0aW9uc1xuICAgIHN1cGVyKGFyZ3MsIG9wdGlvbnMsIGZlYXR1cmVzKTtcblxuICAgIHRoaXMub3B0aW9uKCduYW1lJywge1xuICAgICAgdHlwZTogU3RyaW5nLFxuICAgICAgZGVzY3JpcHRpb246ICdOYW1lIG9mIHRoZSBsaWNlbnNlIG93bmVyJyxcbiAgICB9KTtcblxuICAgIHRoaXMub3B0aW9uKCdlbWFpbCcsIHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnRW1haWwgb2YgdGhlIGxpY2Vuc2Ugb3duZXInLFxuICAgIH0pO1xuXG4gICAgdGhpcy5vcHRpb24oJ3dlYnNpdGUnLCB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1dlYnNpdGUgb2YgdGhlIGxpY2Vuc2Ugb3duZXInLFxuICAgIH0pO1xuXG4gICAgdGhpcy5vcHRpb24oJ3llYXInLCB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZXNjcmlwdGlvbjogJ1llYXIocykgdG8gaW5jbHVkZSBvbiB0aGUgbGljZW5zZScsXG4gICAgICBkZWZhdWx0OiBuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCksXG4gICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbignbGljZW5zZVByb21wdCcsIHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnTGljZW5zZSBwcm9tcHQgdGV4dCcsXG4gICAgICBkZWZhdWx0OiAnV2hpY2ggbGljZW5zZSBkbyB5b3Ugd2FudCB0byB1c2U/JyxcbiAgICAgIGhpZGU6IHRydWUsXG4gICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbignZGVmYXVsdExpY2Vuc2UnLCB7XG4gICAgICB0eXBlOiBTdHJpbmcsXG4gICAgICBkZXNjcmlwdGlvbjogJ0RlZmF1bHQgbGljZW5zZScsXG4gICAgfSk7XG5cbiAgICB0aGlzLm9wdGlvbignbGljZW5zZScsIHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICAnU2VsZWN0IGEgbGljZW5zZSwgc28gbm8gbGljZW5zZSBwcm9tcHQgd2lsbCBoYXBwZW4sIGluIGNhc2UgeW91IHdhbnQgdG8gaGFuZGxlIGl0IG91dHNpZGUgb2YgdGhpcyBnZW5lcmF0b3InLFxuICAgIH0pO1xuXG4gICAgdGhpcy5vcHRpb24oJ291dHB1dCcsIHtcbiAgICAgIHR5cGU6IFN0cmluZyxcbiAgICAgIGRlc2NyaXB0aW9uOiAnU2V0IHRoZSBvdXRwdXQgZmlsZSBmb3IgdGhlIGdlbmVyYXRlZCBsaWNlbnNlJyxcbiAgICAgIGRlZmF1bHQ6ICdMSUNFTlNFJyxcbiAgICB9KTtcblxuICAgIHRoaXMub3B0aW9uKCdwdWJsaXNoJywge1xuICAgICAgdHlwZTogQm9vbGVhbixcbiAgICAgIGRlc2NyaXB0aW9uOiAnUHVibGlzaCB0aGUgcGFja2FnZScsXG4gICAgfSk7XG4gIH1cblxuICBhc3luYyBpbml0aWFsaXppbmcoKSB7XG4gICAgdGhpcy5naXRjID0ge1xuICAgICAgdXNlcjoge1xuICAgICAgICBuYW1lOiBhd2FpdCB0aGlzLmdpdC5uYW1lKCksXG4gICAgICAgIGVtYWlsOiBhd2FpdCB0aGlzLmdpdC5lbWFpbCgpLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG5cbiAgcHJvbXB0aW5nKCkge1xuICAgIGNvbnN0IHByb21wdHM6IGFueVtdID0gW1xuICAgICAge1xuICAgICAgICB0eXBlOiAnc2VsZWN0JyBhcyBjb25zdCxcbiAgICAgICAgbmFtZTogJ2xpY2Vuc2UnLFxuICAgICAgICBtZXNzYWdlOiB0aGlzLm9wdGlvbnMubGljZW5zZVByb21wdCxcbiAgICAgICAgZGVmYXVsdDogdGhpcy5vcHRpb25zLmRlZmF1bHRMaWNlbnNlLFxuICAgICAgICB3aGVuOlxuICAgICAgICAgICF0aGlzLm9wdGlvbnMubGljZW5zZSB8fFxuICAgICAgICAgIGxpY2Vuc2VzLmZpbmQoeCA9PiB4LnZhbHVlID09PSB0aGlzLm9wdGlvbnMubGljZW5zZSkgPT09IHVuZGVmaW5lZCxcbiAgICAgICAgY2hvaWNlczogbGljZW5zZXMsXG4gICAgICB9LFxuICAgIF07XG5cbiAgICByZXR1cm4gdGhpcy5wcm9tcHQocHJvbXB0cykudGhlbihwcm9wcyA9PiB7XG4gICAgICB0aGlzLnByb3BzID0gT2JqZWN0LmFzc2lnbihcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6IHRoaXMub3B0aW9ucy5uYW1lIHx8IHRoaXMuZ2l0Yy51c2VyLm5hbWUsXG4gICAgICAgICAgZW1haWw6IHRoaXMub3B0aW9ucy5lbWFpbCB8fCB0aGlzLmdpdGMudXNlci5lbWFpbCxcbiAgICAgICAgICB3ZWJzaXRlOiB0aGlzLm9wdGlvbnMud2Vic2l0ZSxcbiAgICAgICAgICBsaWNlbnNlOiB0aGlzLm9wdGlvbnMubGljZW5zZSxcbiAgICAgICAgfSxcbiAgICAgICAgcHJvcHMsXG4gICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgY29uZmlndXJpbmcoKSB7XG4gICAgLy8gTGljZW5zZSBmaWxlXG4gICAgY29uc3QgZmlsZW5hbWUgPSB0aGlzLnByb3BzLmxpY2Vuc2UgKyAnLnR4dCc7XG4gICAgbGV0IGF1dGhvciA9IHRoaXMucHJvcHMubmFtZS50cmltKCk7XG4gICAgaWYgKHRoaXMucHJvcHMuZW1haWwpIHtcbiAgICAgIGF1dGhvciArPSAnIDwnICsgdGhpcy5wcm9wcy5lbWFpbC50cmltKCkgKyAnPic7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucHJvcHMud2Vic2l0ZSkge1xuICAgICAgYXV0aG9yICs9ICcgKCcgKyB0aGlzLnByb3BzLndlYnNpdGUudHJpbSgpICsgJyknO1xuICAgIH1cblxuICAgIHRoaXMuZnMuY29weVRwbChcbiAgICAgIHRoaXMudGVtcGxhdGVQYXRoKGZpbGVuYW1lKSxcbiAgICAgIHRoaXMuZGVzdGluYXRpb25QYXRoKHRoaXMub3B0aW9ucy5vdXRwdXQpLFxuICAgICAge1xuICAgICAgICB5ZWFyOiB0aGlzLm9wdGlvbnMueWVhcixcbiAgICAgICAgYXV0aG9yOiBhdXRob3IsXG4gICAgICB9LFxuICAgICk7XG5cbiAgICAvLyBQYWNrYWdlXG4gICAgaWYgKCF0aGlzLmZzLmV4aXN0cyh0aGlzLmRlc3RpbmF0aW9uUGF0aCgncGFja2FnZS5qc29uJykpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgcGtnOiBhbnkgPSB0aGlzLmZzLnJlYWRKU09OKHRoaXMuZGVzdGluYXRpb25QYXRoKCdwYWNrYWdlLmpzb24nKSwge30pO1xuICAgIHBrZy5saWNlbnNlID0gdGhpcy5wcm9wcy5saWNlbnNlO1xuXG4gICAgaWYgKFxuICAgICAgKHRoaXMub3B0aW9ucy5wdWJsaXNoID09PSB1bmRlZmluZWQgJiZcbiAgICAgICAgdGhpcy5wcm9wcy5saWNlbnNlID09PSAnVU5MSUNFTlNFRCcpIHx8XG4gICAgICB0aGlzLm9wdGlvbnMucHVibGlzaCA9PT0gZmFsc2VcbiAgICApIHtcbiAgICAgIGRlbGV0ZSBwa2cubGljZW5zZTtcbiAgICAgIHBrZy5wcml2YXRlID0gdHJ1ZTtcbiAgICB9XG5cbiAgICB0aGlzLnBhY2thZ2VKc29uLm1lcmdlKHBrZyk7XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsT0FBT0EsU0FBUyxNQUE0QixrQkFBa0I7QUFFOUQsT0FBTyxNQUFNQyxRQUFRLEdBQUcsQ0FDdEI7RUFBRUMsSUFBSSxFQUFFLFlBQVk7RUFBRUMsS0FBSyxFQUFFO0FBQWEsQ0FBQyxFQUMzQztFQUFFRCxJQUFJLEVBQUUsS0FBSztFQUFFQyxLQUFLLEVBQUU7QUFBTSxDQUFDLEVBQzdCO0VBQUVELElBQUksRUFBRSw0QkFBNEI7RUFBRUMsS0FBSyxFQUFFO0FBQVUsQ0FBQyxFQUN4RDtFQUFFRCxJQUFJLEVBQUUsZ0NBQWdDO0VBQUVDLEtBQUssRUFBRTtBQUF1QixDQUFDLEVBQ3pFO0VBQUVELElBQUksRUFBRSwrQkFBK0I7RUFBRUMsS0FBSyxFQUFFO0FBQWUsQ0FBQyxFQUNoRTtFQUFFRCxJQUFJLEVBQUUsMkNBQTJDO0VBQUVDLEtBQUssRUFBRTtBQUFNLENBQUMsRUFDbkU7RUFBRUQsSUFBSSxFQUFFLGNBQWM7RUFBRUMsS0FBSyxFQUFFO0FBQVcsQ0FBQyxFQUMzQztFQUFFRCxJQUFJLEVBQUUsYUFBYTtFQUFFQyxLQUFLLEVBQUU7QUFBVSxDQUFDLEVBQ3pDO0VBQUVELElBQUksRUFBRSxjQUFjO0VBQUVDLEtBQUssRUFBRTtBQUFXLENBQUMsRUFDM0M7RUFBRUQsSUFBSSxFQUFFLFdBQVc7RUFBRUMsS0FBSyxFQUFFO0FBQVksQ0FBQyxFQUN6QztFQUFFRCxJQUFJLEVBQUUsMEJBQTBCO0VBQUVDLEtBQUssRUFBRTtBQUFhLENBQUMsQ0FDMUQ7QUFjRCxlQUFlLE1BQU1DLGdCQUFnQixTQUFTSixTQUFTLENBR3JEO0VBSUFLLFdBQVdBLENBQ1RDLElBQXVCLEVBQ3ZCQyxPQUF1QixFQUN2QkMsUUFBaUMsRUFDakM7SUFDQSxJQUFJRCxPQUFPLENBQUNFLFFBQVEsRUFBRUMsVUFBVSxDQUFDLFNBQVMsQ0FBQyxFQUN6Q0gsT0FBTyxDQUFDRSxRQUFRLEdBQUdGLE9BQU8sQ0FBQ0UsUUFBUSxDQUFDRSxTQUFTLENBQUMsQ0FBQyxDQUFDOztJQUVsRDtJQUNBLEtBQUssQ0FBQ0wsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLFFBQVEsQ0FBQztJQUU5QixJQUFJLENBQUNJLE1BQU0sQ0FBQyxNQUFNLEVBQUU7TUFDbEJDLElBQUksRUFBRUMsTUFBTTtNQUNaQyxXQUFXLEVBQUU7SUFDZixDQUFDLENBQUM7SUFFRixJQUFJLENBQUNILE1BQU0sQ0FBQyxPQUFPLEVBQUU7TUFDbkJDLElBQUksRUFBRUMsTUFBTTtNQUNaQyxXQUFXLEVBQUU7SUFDZixDQUFDLENBQUM7SUFFRixJQUFJLENBQUNILE1BQU0sQ0FBQyxTQUFTLEVBQUU7TUFDckJDLElBQUksRUFBRUMsTUFBTTtNQUNaQyxXQUFXLEVBQUU7SUFDZixDQUFDLENBQUM7SUFFRixJQUFJLENBQUNILE1BQU0sQ0FBQyxNQUFNLEVBQUU7TUFDbEJDLElBQUksRUFBRUMsTUFBTTtNQUNaQyxXQUFXLEVBQUUsbUNBQW1DO01BQ2hEQyxPQUFPLEVBQUUsSUFBSUMsSUFBSSxDQUFDLENBQUMsQ0FBQ0MsV0FBVyxDQUFDO0lBQ2xDLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQ04sTUFBTSxDQUFDLGVBQWUsRUFBRTtNQUMzQkMsSUFBSSxFQUFFQyxNQUFNO01BQ1pDLFdBQVcsRUFBRSxxQkFBcUI7TUFDbENDLE9BQU8sRUFBRSxtQ0FBbUM7TUFDNUNHLElBQUksRUFBRTtJQUNSLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQ1AsTUFBTSxDQUFDLGdCQUFnQixFQUFFO01BQzVCQyxJQUFJLEVBQUVDLE1BQU07TUFDWkMsV0FBVyxFQUFFO0lBQ2YsQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDSCxNQUFNLENBQUMsU0FBUyxFQUFFO01BQ3JCQyxJQUFJLEVBQUVDLE1BQU07TUFDWkMsV0FBVyxFQUNUO0lBQ0osQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDSCxNQUFNLENBQUMsUUFBUSxFQUFFO01BQ3BCQyxJQUFJLEVBQUVDLE1BQU07TUFDWkMsV0FBVyxFQUFFLCtDQUErQztNQUM1REMsT0FBTyxFQUFFO0lBQ1gsQ0FBQyxDQUFDO0lBRUYsSUFBSSxDQUFDSixNQUFNLENBQUMsU0FBUyxFQUFFO01BQ3JCQyxJQUFJLEVBQUVPLE9BQU87TUFDYkwsV0FBVyxFQUFFO0lBQ2YsQ0FBQyxDQUFDO0VBQ0o7RUFFQSxNQUFNTSxZQUFZQSxDQUFBLEVBQUc7SUFDbkIsSUFBSSxDQUFDQyxJQUFJLEdBQUc7TUFDVkMsSUFBSSxFQUFFO1FBQ0pyQixJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUNzQixHQUFHLENBQUN0QixJQUFJLENBQUMsQ0FBQztRQUMzQnVCLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQ0QsR0FBRyxDQUFDQyxLQUFLLENBQUM7TUFDOUI7SUFDRixDQUFDO0VBQ0g7RUFFQUMsU0FBU0EsQ0FBQSxFQUFHO0lBQ1YsTUFBTUMsT0FBYyxHQUFHLENBQ3JCO01BQ0VkLElBQUksRUFBRSxRQUFpQjtNQUN2QlgsSUFBSSxFQUFFLFNBQVM7TUFDZjBCLE9BQU8sRUFBRSxJQUFJLENBQUNyQixPQUFPLENBQUNzQixhQUFhO01BQ25DYixPQUFPLEVBQUUsSUFBSSxDQUFDVCxPQUFPLENBQUN1QixjQUFjO01BQ3BDQyxJQUFJLEVBQ0YsQ0FBQyxJQUFJLENBQUN4QixPQUFPLENBQUN5QixPQUFPLElBQ3JCL0IsUUFBUSxDQUFDZ0MsSUFBSSxDQUFDQyxDQUFDLElBQUlBLENBQUMsQ0FBQy9CLEtBQUssS0FBSyxJQUFJLENBQUNJLE9BQU8sQ0FBQ3lCLE9BQU8sQ0FBQyxLQUFLRyxTQUFTO01BQ3BFQyxPQUFPLEVBQUVuQztJQUNYLENBQUMsQ0FDRjtJQUVELE9BQU8sSUFBSSxDQUFDb0MsTUFBTSxDQUFDVixPQUFPLENBQUMsQ0FBQ1csSUFBSSxDQUFDQyxLQUFLLElBQUk7TUFDeEMsSUFBSSxDQUFDQSxLQUFLLEdBQUdDLE1BQU0sQ0FBQ0MsTUFBTSxDQUN4QjtRQUNFdkMsSUFBSSxFQUFFLElBQUksQ0FBQ0ssT0FBTyxDQUFDTCxJQUFJLElBQUksSUFBSSxDQUFDb0IsSUFBSSxDQUFDQyxJQUFJLENBQUNyQixJQUFJO1FBQzlDdUIsS0FBSyxFQUFFLElBQUksQ0FBQ2xCLE9BQU8sQ0FBQ2tCLEtBQUssSUFBSSxJQUFJLENBQUNILElBQUksQ0FBQ0MsSUFBSSxDQUFDRSxLQUFLO1FBQ2pEaUIsT0FBTyxFQUFFLElBQUksQ0FBQ25DLE9BQU8sQ0FBQ21DLE9BQU87UUFDN0JWLE9BQU8sRUFBRSxJQUFJLENBQUN6QixPQUFPLENBQUN5QjtNQUN4QixDQUFDLEVBQ0RPLEtBQ0YsQ0FBQztJQUNILENBQUMsQ0FBQztFQUNKO0VBRUFJLFdBQVdBLENBQUEsRUFBRztJQUNaO0lBQ0EsTUFBTUMsUUFBUSxHQUFHLElBQUksQ0FBQ0wsS0FBSyxDQUFDUCxPQUFPLEdBQUcsTUFBTTtJQUM1QyxJQUFJYSxNQUFNLEdBQUcsSUFBSSxDQUFDTixLQUFLLENBQUNyQyxJQUFJLENBQUM0QyxJQUFJLENBQUMsQ0FBQztJQUNuQyxJQUFJLElBQUksQ0FBQ1AsS0FBSyxDQUFDZCxLQUFLLEVBQUU7TUFDcEJvQixNQUFNLElBQUksSUFBSSxHQUFHLElBQUksQ0FBQ04sS0FBSyxDQUFDZCxLQUFLLENBQUNxQixJQUFJLENBQUMsQ0FBQyxHQUFHLEdBQUc7SUFDaEQ7SUFFQSxJQUFJLElBQUksQ0FBQ1AsS0FBSyxDQUFDRyxPQUFPLEVBQUU7TUFDdEJHLE1BQU0sSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDTixLQUFLLENBQUNHLE9BQU8sQ0FBQ0ksSUFBSSxDQUFDLENBQUMsR0FBRyxHQUFHO0lBQ2xEO0lBRUEsSUFBSSxDQUFDQyxFQUFFLENBQUNDLE9BQU8sQ0FDYixJQUFJLENBQUNDLFlBQVksQ0FBQ0wsUUFBUSxDQUFDLEVBQzNCLElBQUksQ0FBQ00sZUFBZSxDQUFDLElBQUksQ0FBQzNDLE9BQU8sQ0FBQzRDLE1BQU0sQ0FBQyxFQUN6QztNQUNFQyxJQUFJLEVBQUUsSUFBSSxDQUFDN0MsT0FBTyxDQUFDNkMsSUFBSTtNQUN2QlAsTUFBTSxFQUFFQTtJQUNWLENBQ0YsQ0FBQzs7SUFFRDtJQUNBLElBQUksQ0FBQyxJQUFJLENBQUNFLEVBQUUsQ0FBQ00sTUFBTSxDQUFDLElBQUksQ0FBQ0gsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUU7TUFDekQ7SUFDRjtJQUVBLE1BQU1JLEdBQVEsR0FBRyxJQUFJLENBQUNQLEVBQUUsQ0FBQ1EsUUFBUSxDQUFDLElBQUksQ0FBQ0wsZUFBZSxDQUFDLGNBQWMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQzNFSSxHQUFHLENBQUN0QixPQUFPLEdBQUcsSUFBSSxDQUFDTyxLQUFLLENBQUNQLE9BQU87SUFFaEMsSUFDRyxJQUFJLENBQUN6QixPQUFPLENBQUNpRCxPQUFPLEtBQUtyQixTQUFTLElBQ2pDLElBQUksQ0FBQ0ksS0FBSyxDQUFDUCxPQUFPLEtBQUssWUFBWSxJQUNyQyxJQUFJLENBQUN6QixPQUFPLENBQUNpRCxPQUFPLEtBQUssS0FBSyxFQUM5QjtNQUNBLE9BQU9GLEdBQUcsQ0FBQ3RCLE9BQU87TUFDbEJzQixHQUFHLENBQUNHLE9BQU8sR0FBRyxJQUFJO0lBQ3BCO0lBRUEsSUFBSSxDQUFDQyxXQUFXLENBQUNDLEtBQUssQ0FBQ0wsR0FBRyxDQUFDO0VBQzdCO0FBQ0YiLCJpZ25vcmVMaXN0IjpbXX0=