mono/packages/osrl/options.js
2025-12-30 16:33:03 +01:00

173 lines
16 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.parse = exports.parseProfile = void 0;
const path = require("path");
const constants_1 = require("@plastichub/core/constants");
const read_1 = require("@plastichub/fs/read");
const exists_1 = require("@plastichub/fs/exists");
const primitives_1 = require("@plastichub/core/primitives");
const osr_commons_1 = require("@plastichub/osr-commons");
const _1 = require("./");
const lib_1 = require("./lib/");
const constants_2 = require("./constants");
const parseProfile = (profilePath, profile, options, rel) => {
var _a;
profilePath = path.resolve((0, osr_commons_1.resolve)(profilePath, false, profile.variables));
if (!(0, exists_1.sync)(profilePath)) {
_1.logger.warn(`Profile file not found: ${profilePath}`);
return;
}
const _profile = (0, read_1.sync)(profilePath, 'json') || { includes: [], variables: {} };
_profile.includes = _profile.includes || [];
_profile.variables = _profile.variables || {};
if (options.env && _profile.env && _profile.env[options.env] && _profile.env[options.env].includes) {
profile.includes = [
...profile.includes,
..._profile.includes,
..._profile.env[options.env].includes
];
}
else {
profile.includes = [
...profile.includes,
..._profile.includes
];
}
if (options.env && _profile.env && _profile.env[options.env] && _profile.env[options.env].variables) {
profile.variables = Object.assign(Object.assign(Object.assign({}, profile.variables), _profile.variables), _profile.env[options.env].variables);
}
for (const k in _profile.variables) {
if ((0, primitives_1.isString)(_profile.variables[k])) {
_profile.variables[k] = (0, _1.substitute)(false, _profile.variables[k], profile.variables);
}
}
profile.variables = Object.assign(Object.assign(Object.assign({}, profile.variables), _profile.variables), ((_a = _profile.env[options.env]) === null || _a === void 0 ? void 0 : _a.variables) || {});
for (const k in profile.variables) {
if ((0, primitives_1.isString)(profile.variables[k])) {
profile.variables[k] = (0, _1.substitute)(false, profile.variables[k], profile.variables);
}
}
profile.includes = Array.from(new Set(profile.includes));
profile.includes = [
...profile.includes.map((i) => {
if (!path.isAbsolute(i) && rel && !i.match(constants_1.REGEX_VAR)) {
return path.resolve(`${rel}/${i}`);
}
let ret = (0, osr_commons_1.resolve)(i, false, profile.variables);
ret = path.resolve((0, _1.substitute)(false, ret, profile.variables));
return ret;
})
];
profile.includes = profile.includes.filter((include) => include !== null &&
include !== '');
profile.includes = Array.from(new Set(profile.includes));
return profile;
};
exports.parseProfile = parseProfile;
const parse = (options, argv) => {
var _a;
for (const k in argv) {
if (!(k in options.variables)
&& k !== '_'
&& k !== '$0'
&& k !== 'variables'
&& k !== 'source'
&& k !== 'language'
&& k !== 'envVariables'
&& k !== 'env-variables'
&& k !== 'format'
&& k !== 'profile'
&& k !== 'output'
&& k !== 'plugins'
&& k !== 'dry'
&& k !== 'stdout'
&& k !== 'alt'
&& k !== 'template'
&& k !== 'trace'
&& k !== 'string'
&& k !== 'bootstrap') {
options.variables[k] = argv[k];
}
}
const variables = Object.assign(Object.assign(Object.assign({}, osr_commons_1.DEFAULT_ROOTS), options.variables), { sourceLanguage: argv.sourceLanguage, targetLanguage: argv.targetLanguage, cwd: ((_a = options.variables) === null || _a === void 0 ? void 0 : _a.cwd) || options.cwd, trace: argv.trace });
(0, lib_1.resolveConfig)(variables);
const profile = { variables: Object.assign({}, variables), includes: [] };
const srcInfo = (0, osr_commons_1.pathInfo)(options.source);
if (argv.profile) {
if (typeof argv.profile === 'string') {
argv.profile = [argv.profile];
}
else if ((0, primitives_1.isArray)(argv.profile)) {
argv.profile = argv.profile;
}
else {
argv.profile = [];
}
}
if (options.source) {
if (srcInfo && srcInfo.FILES && srcInfo.FILES.length) {
options.srcInfo = srcInfo;
for (const key in srcInfo) {
if (Object.prototype.hasOwnProperty.call(srcInfo, key)) {
options.variables['SRC_' + key] = srcInfo[key];
}
}
}
else {
options.source = path.resolve((0, _1.substitute)(options.alt, options.source, profile.variables));
}
}
if (argv.profile) {
argv.profile.forEach((p) => (0, exports.parseProfile)(p, profile, options));
}
if (srcInfo && srcInfo.FILES && srcInfo.FILES.length) {
options.srcInfo = srcInfo;
for (const key in srcInfo) {
if (Object.prototype.hasOwnProperty.call(srcInfo, key)) {
options.variables['SRC_' + key] = srcInfo[key];
}
}
srcInfo.FILES.forEach((f) => {
const srcParts = path.parse(f);
const profilePath = path.resolve(`${srcParts.dir}/${constants_2.PROFILE_FILE_NAME}`);
if ((0, exists_1.sync)(profilePath)) {
(0, exports.parseProfile)(profilePath, profile, options, srcParts.dir);
}
});
}
options.profile = profile;
if (options.plugins) {
options.plugins = options.plugins.map((p) => {
let dir = path.resolve((0, _1.substitute)(false, p, options.variables));
if ((0, exists_1.sync)(dir)) {
return dir;
}
});
}
if (options.output) {
const out = (0, _1.substitute)(options.alt, options.output, options.variables);
let targetInfo = (0, osr_commons_1.pathInfo)(out);
if (options.srcInfo && targetInfo) {
targetInfo.PATH = options.output;
for (const key in targetInfo) {
if (Object.prototype.hasOwnProperty.call(targetInfo, key)) {
options.variables['DST_' + key] = targetInfo[key];
}
}
options.targetInfo = targetInfo;
}
else {
options.output = path.resolve((0, _1.substitute)(options.alt, options.output || '', options.variables));
}
}
else {
options.stdout = true;
}
options.pathVariables = options.variables;
options.sourceLanguage = argv.sourceLanguage || 'en';
options.targetLanguage = argv.targetLanguage || 'en';
options.logLevel = argv.logLevel || 'warn';
return options;
};
exports.parse = parse;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3B0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9vcHRpb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZCQUE0QjtBQUU1QiwwREFBc0Q7QUFDdEQsOENBQWtEO0FBQ2xELGtEQUFzRDtBQUN0RCw0REFBK0Q7QUFDL0QseURBQW1GO0FBR25GLHlCQUF1QztBQUN2QyxnQ0FBc0M7QUFDdEMsMkNBQStDO0FBRXhDLE1BQU0sWUFBWSxHQUFHLENBQUMsV0FBbUIsRUFBRSxPQUFpQixFQUFFLE9BQWlCLEVBQUUsR0FBWSxFQUFFLEVBQUU7O0lBQ3ZHLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUEscUJBQU8sRUFBQyxXQUFXLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO0lBQzFFLElBQUksQ0FBQyxJQUFBLGFBQU0sRUFBQyxXQUFxQixDQUFDLEVBQUU7UUFDbkMsU0FBTSxDQUFDLElBQUksQ0FBQywyQkFBMkIsV0FBVyxFQUFFLENBQUMsQ0FBQTtRQUNyRCxPQUFNO0tBQ047SUFDRCxNQUFNLFFBQVEsR0FBRyxJQUFBLFdBQUksRUFBQyxXQUFxQixFQUFFLE1BQU0sQ0FBUSxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFjLENBQUE7SUFFMUcsUUFBUSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUMsUUFBUSxJQUFJLEVBQUUsQ0FBQTtJQUMzQyxRQUFRLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFBO0lBRTdDLElBQUksT0FBTyxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsR0FBRyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRTtRQUNuRyxPQUFPLENBQUMsUUFBUSxHQUFHO1lBQ2xCLEdBQUcsT0FBTyxDQUFDLFFBQVE7WUFDbkIsR0FBRyxRQUFRLENBQUMsUUFBUTtZQUNwQixHQUFHLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVE7U0FDckMsQ0FBQTtLQUNEO1NBQU07UUFDTixPQUFPLENBQUMsUUFBUSxHQUFHO1lBQ2xCLEdBQUcsT0FBTyxDQUFDLFFBQVE7WUFDbkIsR0FBRyxRQUFRLENBQUMsUUFBUTtTQUNwQixDQUFBO0tBQ0Q7SUFDRCxJQUFJLE9BQU8sQ0FBQyxHQUFHLElBQUksUUFBUSxDQUFDLEdBQUcsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxRQUFRLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQyxTQUFTLEVBQUU7UUFDcEcsT0FBTyxDQUFDLFNBQVMsaURBQ2IsT0FBTyxDQUFDLFNBQVMsR0FDakIsUUFBUSxDQUFDLFNBQVMsR0FDbEIsUUFBUSxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsU0FBUyxDQUN0QyxDQUFBO0tBQ0Q7SUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLFFBQVEsQ0FBQyxTQUFTLEVBQUU7UUFDbkMsSUFBSSxJQUFBLHFCQUFRLEVBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFO1lBQ3BDLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBQSxhQUFVLEVBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1NBQ25GO0tBQ0Q7SUFFRCxPQUFPLENBQUMsU0FBUyxpREFBUSxPQUFPLENBQUMsU0FBUyxHQUFLLFFBQVEsQ0FBQyxTQUFTLEdBQU0sQ0FBQSxNQUFBLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQywwQ0FBRSxTQUFTLEtBQUksRUFBRSxDQUFFLENBQUE7SUFDbkgsS0FBSyxNQUFNLENBQUMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFO1FBQ2xDLElBQUksSUFBQSxxQkFBUSxFQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtZQUNuQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUEsYUFBVSxFQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtTQUNqRjtLQUNEO0lBQ0QsT0FBTyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQ3hELE9BQU8sQ0FBQyxRQUFRLEdBQUc7UUFDbEIsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzdCLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMscUJBQVMsQ0FBQyxFQUFFO2dCQUN0RCxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQTthQUNsQztZQUNELElBQUksR0FBRyxHQUFHLElBQUEscUJBQU8sRUFBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQTtZQUM5QyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFBLGFBQVUsRUFBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1lBQzdELE9BQU8sR0FBRyxDQUFBO1FBQ1gsQ0FBQyxDQUFDO0tBQUMsQ0FBQTtJQUVKLE9BQU8sQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUN0RCxPQUFPLEtBQUssSUFBSTtRQUNoQixPQUFPLEtBQUssRUFBRSxDQUFDLENBQUE7SUFDaEIsT0FBTyxDQUFDLFFBQVEsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFBO0lBQ3hELE9BQU8sT0FBTyxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBMURZLFFBQUEsWUFBWSxnQkEwRHhCO0FBRU0sTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFpQixFQUFFLElBQVMsRUFBWSxFQUFFOztJQUUvRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRTtRQUNyQixJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQztlQUN6QixDQUFDLEtBQUssR0FBRztlQUNULENBQUMsS0FBSyxJQUFJO2VBQ1YsQ0FBQyxLQUFLLFdBQVc7ZUFDakIsQ0FBQyxLQUFLLFFBQVE7ZUFDZCxDQUFDLEtBQUssVUFBVTtlQUNoQixDQUFDLEtBQUssY0FBYztlQUNwQixDQUFDLEtBQUssZUFBZTtlQUNyQixDQUFDLEtBQUssUUFBUTtlQUNkLENBQUMsS0FBSyxTQUFTO2VBQ2YsQ0FBQyxLQUFLLFFBQVE7ZUFDZCxDQUFDLEtBQUssU0FBUztlQUNmLENBQUMsS0FBSyxLQUFLO2VBQ1gsQ0FBQyxLQUFLLFFBQVE7ZUFDZCxDQUFDLEtBQUssS0FBSztlQUNYLENBQUMsS0FBSyxVQUFVO2VBQ2hCLENBQUMsS0FBSyxPQUFPO2VBQ2IsQ0FBQyxLQUFLLFFBQVE7ZUFDZCxDQUFDLEtBQUssV0FBVyxFQUFFO1lBQ3RCLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQy9CO0tBQ0Q7SUFFRCxNQUFNLFNBQVMsaURBQ1gsMkJBQWEsR0FDYixPQUFPLENBQUMsU0FBUyxLQUNwQixjQUFjLEVBQUUsSUFBSSxDQUFDLGNBQWMsRUFDbkMsY0FBYyxFQUFFLElBQUksQ0FBQyxjQUFjLEVBQ25DLEdBQUcsRUFBRSxDQUFBLE1BQUEsT0FBTyxDQUFDLFNBQVMsMENBQUUsR0FBRyxLQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQzFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxHQUNqQixDQUFBO0lBQ0QsSUFBQSxtQkFBYSxFQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRXhCLE1BQU0sT0FBTyxHQUFhLEVBQUUsU0FBUyxvQkFBTyxTQUFTLENBQUUsRUFBRSxRQUFRLEVBQUUsRUFBRSxFQUFFLENBQUE7SUFFdkUsTUFBTSxPQUFPLEdBQUcsSUFBQSxzQkFBUSxFQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQTtJQUN4QyxJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUU7UUFDakIsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssUUFBUSxFQUFFO1lBQ3JDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUE7U0FDN0I7YUFBTSxJQUFJLElBQUEsb0JBQU8sRUFBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7WUFDakMsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFBO1NBQzNCO2FBQU07WUFDTixJQUFJLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQTtTQUNqQjtLQUNEO0lBRUQsSUFBSSxPQUFPLENBQUMsTUFBTSxFQUFFO1FBQ25CLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7WUFDckQsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDMUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7Z0JBQzFCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDdkQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2lCQUM5QzthQUNEO1NBQ0Q7YUFBTTtZQUNOLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFBLGFBQVUsRUFBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUE7U0FDekY7S0FDRDtJQUVELElBQUksSUFBSSxDQUFDLE9BQU8sRUFBRTtRQUNqQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBQSxvQkFBWSxFQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQTtLQUM5RDtJQUVELElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxLQUFLLElBQUksT0FBTyxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUU7UUFDckQsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDMUIsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7WUFDMUIsSUFBSSxNQUFNLENBQUMsU0FBUyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxFQUFFO2dCQUN2RCxPQUFPLENBQUMsU0FBUyxDQUFDLE1BQU0sR0FBRyxHQUFHLENBQUMsR0FBRyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7YUFDOUM7U0FDRDtRQUNELE9BQU8sQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDM0IsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQTtZQUM5QixNQUFNLFdBQVcsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsUUFBUSxDQUFDLEdBQUcsSUFBSSw2QkFBaUIsRUFBRSxDQUFDLENBQUE7WUFDeEUsSUFBSSxJQUFBLGFBQU0sRUFBQyxXQUFXLENBQUMsRUFBRTtnQkFDeEIsSUFBQSxvQkFBWSxFQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQTthQUN6RDtRQUNGLENBQUMsQ0FBQyxDQUFBO0tBQ0Y7SUFFRCxPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQTtJQUN6QixJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUU7UUFDcEIsT0FBTyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQzNDLElBQUksR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBQSxhQUFVLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQTtZQUMvRCxJQUFJLElBQUEsYUFBTSxFQUFDLEdBQUcsQ0FBQyxFQUFFO2dCQUNoQixPQUFPLEdBQUcsQ0FBQTthQUNWO1FBQ0YsQ0FBQyxDQUFDLENBQUE7S0FDRjtJQUVELElBQUksT0FBTyxDQUFDLE1BQU0sRUFBRTtRQUNuQixNQUFNLEdBQUcsR0FBRyxJQUFBLGFBQVUsRUFBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksVUFBVSxHQUFHLElBQUEsc0JBQVEsRUFBQyxHQUFHLENBQUMsQ0FBQTtRQUM5QixJQUFJLE9BQU8sQ0FBQyxPQUFPLElBQUksVUFBVSxFQUFFO1lBQ2xDLFVBQVUsQ0FBQyxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQWdCLENBQUE7WUFDMUMsS0FBSyxNQUFNLEdBQUcsSUFBSSxVQUFVLEVBQUU7Z0JBQzdCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxHQUFHLENBQUMsRUFBRTtvQkFDMUQsT0FBTyxDQUFDLFNBQVMsQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFBO2lCQUNqRDthQUNEO1lBQ0QsT0FBTyxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUE7U0FFL0I7YUFBTTtZQUNOLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFBLGFBQVUsRUFBQyxPQUFPLENBQUMsR0FBRyxFQUFFLE9BQU8sQ0FBQyxNQUFNLElBQUksRUFBRSxFQUFFLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFBO1NBQy9GO0tBQ0Q7U0FBTTtRQUNOLE9BQU8sQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFBO0tBQ3JCO0lBRUQsT0FBTyxDQUFDLGFBQWEsR0FBRyxPQUFPLENBQUMsU0FBUyxDQUFBO0lBQ3pDLE9BQU8sQ0FBQyxjQUFjLEdBQUcsSUFBSSxDQUFDLGNBQWMsSUFBSSxJQUFJLENBQUE7SUFDcEQsT0FBTyxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQTtJQUNwRCxPQUFPLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxRQUFRLElBQUksTUFBTSxDQUFBO0lBQzFDLE9BQU8sT0FBTyxDQUFBO0FBQ2YsQ0FBQyxDQUFBO0FBcEhZLFFBQUEsS0FBSyxTQW9IakIifQ==