@anansi/webpack-config
Version:
Production ready webpack for React
137 lines (136 loc) • 20.1 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime-corejs3/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime-corejs3/helpers/interopRequireDefault").default;
exports.__esModule = true;
var _exportNames = {
makeStorybookConfigGenerator: true,
makeConfig: true
};
exports.makeConfig = makeConfig;
exports.makeStorybookConfigGenerator = void 0;
var _ramda = require("ramda");
var _webpack = _interopRequireDefault(require("webpack"));
var _webpackBundleAnalyzer = require("webpack-bundle-analyzer");
var _base = _interopRequireWildcard(require("./base"));
Object.keys(_base).forEach(function (key) {
if (key === "default" || key === "__esModule") return;
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
if (key in exports && exports[key] === _base[key]) return;
exports[key] = _base[key];
});
var _check = _interopRequireDefault(require("./check"));
var _dev = _interopRequireDefault(require("./dev"));
var _library = _interopRequireDefault(require("./library"));
var _nobuild = _interopRequireDefault(require("./nobuild"));
var _node = _interopRequireDefault(require("./node"));
var _prod = _interopRequireDefault(require("./prod"));
var _storybook = _interopRequireDefault(require("./storybook"));
exports.makeStorybookConfigGenerator = _storybook.default;
function makeConfig(options) {
return (env, argv) => {
if (argv?.mode && !process.env.NODE_ENV) process.env.NODE_ENV = argv?.mode;
// eslint-disable-next-line no-param-reassign
options = {
rootPath: _base.ROOT_PATH,
basePath: 'src',
babelRoot: '',
globalStyleDir: 'style',
libraryInclude: (0, _ramda.always)(false),
libraryExclude: /node_modules/,
buildDir: 'generated_assets/',
serverDir: 'server_assets/',
manifestFilename: 'manifest.json',
extraJsLoaders: [],
...options,
mode: argv?.mode || process.env.NODE_ENV,
nohash: env?.nohash ?? env?.analyze ?? (process.env.WEBPACK_ANALYZE === 'true' || process.env.WEBPACK_ANALYZE === true),
argv,
env,
isStackblitz: Object.prototype.hasOwnProperty.call(process.versions, 'webcontainer')
};
// option validation done here
if ('sassOptions' in options && options.sassOptions === undefined) {
throw new Error('Undefined is not a valid option for sassOptions. To disable use `false`');
}
if ('htmlOptions' in options && options.htmlOptions === undefined) {
throw new Error('Undefined is not a valid option for htmlOptions. To disable use `false`');
}
if ('svgoOptions' in options && options.svgoOptions === undefined) {
throw new Error('Undefined is not a valid option for svgoOptions. To disable use `false`');
}
if ('svgrOptions' in options && options.svgrOptions === undefined) {
throw new Error('Undefined is not a valid option for svgrOptions. To disable use `false`');
}
if ('inJSOptions' in options && options.inJSOptions === undefined) {
throw new Error('Undefined is not a valid option for inJSOptions. To disable use `false`');
}
if ('cssExtractOptions' in options && options.cssExtractOptions === undefined) {
throw new Error('Undefined is not a valid option for cssExtractOptions. To disable use `false`');
}
if ('tsconfigPathsOptions' in options && options.tsconfigPathsOptions === undefined) {
throw new Error('Undefined is not a valid option for tsconfigPathsOptions. To disable use `false`');
}
if ('globalStyleDir' in options && options.globalStyleDir === undefined) {
throw new Error('Undefined is not a valid option for globalStyleDir. To disable use `false`');
}
// defaults
options.svgoOptions = {
plugins: [{
name: 'preset-default',
params: {
overrides: {
removeTitle: false,
removeViewBox: false,
convertShapeToPath: false
}
}
}, 'removeComments', 'removeDesc', 'removeUselessDefs', 'removeDoctype', 'removeMetadata', 'convertColors', 'prefixIds'],
...options.svgoOptions
};
const baseConfig = (0, _base.default)(options);
let config;
if (env?.check === 'nobuild') {
config = (0, _nobuild.default)(baseConfig, options);
} else {
switch (options.mode) {
case 'development':
config = (0, _dev.default)(baseConfig, options);
break;
case 'production':
config = (0, _prod.default)(baseConfig, options);
break;
default:
config = baseConfig;
break;
}
}
if (argv?.target?.includes?.('node')) {
config = (0, _node.default)(config, options);
} else {
config.plugins.push(new _webpack.default.EnvironmentPlugin({
NODE_DEBUG: false,
DEBUG: false
}), new _webpack.default.ProvidePlugin({
Buffer: require.resolve('buffer'),
process: require.resolve('process/browser.js')
}));
}
if (options.library) {
config = (0, _library.default)(config, options);
}
if (env?.check) {
config = (0, _check.default)(config, options, env?.check);
}
if (env?.analyze || process.env.WEBPACK_ANALYZE === 'true' || process.env.WEBPACK_ANALYZE === true) {
config.plugins.push(new _webpackBundleAnalyzer.BundleAnalyzerPlugin({
analyzerMode: 'static',
generateStatsFile: false,
defaultSizes: 'gzip',
...options.bundleAnalyzerOptions
}));
delete config.output.globalObject;
}
return config;
};
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmFtZGEiLCJyZXF1aXJlIiwiX3dlYnBhY2siLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3dlYnBhY2tCdW5kbGVBbmFseXplciIsIl9iYXNlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9leHBvcnROYW1lcyIsImV4cG9ydHMiLCJfY2hlY2siLCJfZGV2IiwiX2xpYnJhcnkiLCJfbm9idWlsZCIsIl9ub2RlIiwiX3Byb2QiLCJfc3Rvcnlib29rIiwibWFrZVN0b3J5Ym9va0NvbmZpZ0dlbmVyYXRvciIsImRlZmF1bHQiLCJtYWtlQ29uZmlnIiwib3B0aW9ucyIsImVudiIsImFyZ3YiLCJtb2RlIiwicHJvY2VzcyIsIk5PREVfRU5WIiwicm9vdFBhdGgiLCJST09UX1BBVEgiLCJiYXNlUGF0aCIsImJhYmVsUm9vdCIsImdsb2JhbFN0eWxlRGlyIiwibGlicmFyeUluY2x1ZGUiLCJhbHdheXMiLCJsaWJyYXJ5RXhjbHVkZSIsImJ1aWxkRGlyIiwic2VydmVyRGlyIiwibWFuaWZlc3RGaWxlbmFtZSIsImV4dHJhSnNMb2FkZXJzIiwibm9oYXNoIiwiYW5hbHl6ZSIsIldFQlBBQ0tfQU5BTFlaRSIsImlzU3RhY2tibGl0eiIsInZlcnNpb25zIiwic2Fzc09wdGlvbnMiLCJ1bmRlZmluZWQiLCJFcnJvciIsImh0bWxPcHRpb25zIiwic3Znb09wdGlvbnMiLCJzdmdyT3B0aW9ucyIsImluSlNPcHRpb25zIiwiY3NzRXh0cmFjdE9wdGlvbnMiLCJ0c2NvbmZpZ1BhdGhzT3B0aW9ucyIsInBsdWdpbnMiLCJuYW1lIiwicGFyYW1zIiwib3ZlcnJpZGVzIiwicmVtb3ZlVGl0bGUiLCJyZW1vdmVWaWV3Qm94IiwiY29udmVydFNoYXBlVG9QYXRoIiwiYmFzZUNvbmZpZyIsIm1ha2VCYXNlQ29uZmlnIiwiY29uZmlnIiwiY2hlY2siLCJtYWtlTm9idWlsZENvbmZpZyIsIm1ha2VEZXZDb25maWciLCJtYWtlUHJvZENvbmZpZyIsInRhcmdldCIsImluY2x1ZGVzIiwibWFrZU5vZGVDb25maWciLCJwdXNoIiwid2VicGFjayIsIkVudmlyb25tZW50UGx1Z2luIiwiTk9ERV9ERUJVRyIsIkRFQlVHIiwiUHJvdmlkZVBsdWdpbiIsIkJ1ZmZlciIsInJlc29sdmUiLCJsaWJyYXJ5IiwibWFrZUxpYnJhcnlDb25maWciLCJtYWtlQ2hlY2tDb25maWciLCJCdW5kbGVBbmFseXplclBsdWdpbiIsImFuYWx5emVyTW9kZSIsImdlbmVyYXRlU3RhdHNGaWxlIiwiZGVmYXVsdFNpemVzIiwiYnVuZGxlQW5hbHl6ZXJPcHRpb25zIiwib3V0cHV0IiwiZ2xvYmFsT2JqZWN0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFsd2F5cyB9IGZyb20gJ3JhbWRhJztcbmltcG9ydCB3ZWJwYWNrIGZyb20gJ3dlYnBhY2snO1xuaW1wb3J0IHsgQnVuZGxlQW5hbHl6ZXJQbHVnaW4gfSBmcm9tICd3ZWJwYWNrLWJ1bmRsZS1hbmFseXplcic7XG5cbmltcG9ydCBtYWtlQmFzZUNvbmZpZywgeyBST09UX1BBVEggfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IG1ha2VDaGVja0NvbmZpZyBmcm9tICcuL2NoZWNrJztcbmltcG9ydCBtYWtlRGV2Q29uZmlnIGZyb20gJy4vZGV2JztcbmltcG9ydCBtYWtlTGlicmFyeUNvbmZpZyBmcm9tICcuL2xpYnJhcnknO1xuaW1wb3J0IG1ha2VOb2J1aWxkQ29uZmlnIGZyb20gJy4vbm9idWlsZCc7XG5pbXBvcnQgbWFrZU5vZGVDb25maWcgZnJvbSAnLi9ub2RlJztcbmltcG9ydCBtYWtlUHJvZENvbmZpZyBmcm9tICcuL3Byb2QnO1xuXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYWtlU3Rvcnlib29rQ29uZmlnR2VuZXJhdG9yIH0gZnJvbSAnLi9zdG9yeWJvb2snO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvbmZpZyhvcHRpb25zKSB7XG4gIHJldHVybiAoZW52LCBhcmd2KSA9PiB7XG4gICAgaWYgKGFyZ3Y/Lm1vZGUgJiYgIXByb2Nlc3MuZW52Lk5PREVfRU5WKSBwcm9jZXNzLmVudi5OT0RFX0VOViA9IGFyZ3Y/Lm1vZGU7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXBhcmFtLXJlYXNzaWduXG4gICAgb3B0aW9ucyA9IHtcbiAgICAgIHJvb3RQYXRoOiBST09UX1BBVEgsXG4gICAgICBiYXNlUGF0aDogJ3NyYycsXG4gICAgICBiYWJlbFJvb3Q6ICcnLFxuICAgICAgZ2xvYmFsU3R5bGVEaXI6ICdzdHlsZScsXG4gICAgICBsaWJyYXJ5SW5jbHVkZTogYWx3YXlzKGZhbHNlKSxcbiAgICAgIGxpYnJhcnlFeGNsdWRlOiAvbm9kZV9tb2R1bGVzLyxcbiAgICAgIGJ1aWxkRGlyOiAnZ2VuZXJhdGVkX2Fzc2V0cy8nLFxuICAgICAgc2VydmVyRGlyOiAnc2VydmVyX2Fzc2V0cy8nLFxuICAgICAgbWFuaWZlc3RGaWxlbmFtZTogJ21hbmlmZXN0Lmpzb24nLFxuICAgICAgZXh0cmFKc0xvYWRlcnM6IFtdLFxuICAgICAgLi4ub3B0aW9ucyxcbiAgICAgIG1vZGU6IGFyZ3Y/Lm1vZGUgfHwgcHJvY2Vzcy5lbnYuTk9ERV9FTlYsXG4gICAgICBub2hhc2g6XG4gICAgICAgIGVudj8ubm9oYXNoID8/XG4gICAgICAgIGVudj8uYW5hbHl6ZSA/P1xuICAgICAgICAocHJvY2Vzcy5lbnYuV0VCUEFDS19BTkFMWVpFID09PSAndHJ1ZScgfHxcbiAgICAgICAgICBwcm9jZXNzLmVudi5XRUJQQUNLX0FOQUxZWkUgPT09IHRydWUpLFxuICAgICAgYXJndixcbiAgICAgIGVudixcbiAgICAgIGlzU3RhY2tibGl0ejogT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKFxuICAgICAgICBwcm9jZXNzLnZlcnNpb25zLFxuICAgICAgICAnd2ViY29udGFpbmVyJyxcbiAgICAgICksXG4gICAgfTtcbiAgICAvLyBvcHRpb24gdmFsaWRhdGlvbiBkb25lIGhlcmVcbiAgICBpZiAoJ3Nhc3NPcHRpb25zJyBpbiBvcHRpb25zICYmIG9wdGlvbnMuc2Fzc09wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5kZWZpbmVkIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3Igc2Fzc09wdGlvbnMuIFRvIGRpc2FibGUgdXNlIGBmYWxzZWAnLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCdodG1sT3B0aW9ucycgaW4gb3B0aW9ucyAmJiBvcHRpb25zLmh0bWxPcHRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VuZGVmaW5lZCBpcyBub3QgYSB2YWxpZCBvcHRpb24gZm9yIGh0bWxPcHRpb25zLiBUbyBkaXNhYmxlIHVzZSBgZmFsc2VgJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICgnc3Znb09wdGlvbnMnIGluIG9wdGlvbnMgJiYgb3B0aW9ucy5zdmdvT3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmRlZmluZWQgaXMgbm90IGEgdmFsaWQgb3B0aW9uIGZvciBzdmdvT3B0aW9ucy4gVG8gZGlzYWJsZSB1c2UgYGZhbHNlYCcsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoJ3N2Z3JPcHRpb25zJyBpbiBvcHRpb25zICYmIG9wdGlvbnMuc3Znck9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5kZWZpbmVkIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3Igc3Znck9wdGlvbnMuIFRvIGRpc2FibGUgdXNlIGBmYWxzZWAnLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCdpbkpTT3B0aW9ucycgaW4gb3B0aW9ucyAmJiBvcHRpb25zLmluSlNPcHRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VuZGVmaW5lZCBpcyBub3QgYSB2YWxpZCBvcHRpb24gZm9yIGluSlNPcHRpb25zLiBUbyBkaXNhYmxlIHVzZSBgZmFsc2VgJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICdjc3NFeHRyYWN0T3B0aW9ucycgaW4gb3B0aW9ucyAmJlxuICAgICAgb3B0aW9ucy5jc3NFeHRyYWN0T3B0aW9ucyA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmRlZmluZWQgaXMgbm90IGEgdmFsaWQgb3B0aW9uIGZvciBjc3NFeHRyYWN0T3B0aW9ucy4gVG8gZGlzYWJsZSB1c2UgYGZhbHNlYCcsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICAndHNjb25maWdQYXRoc09wdGlvbnMnIGluIG9wdGlvbnMgJiZcbiAgICAgIG9wdGlvbnMudHNjb25maWdQYXRoc09wdGlvbnMgPT09IHVuZGVmaW5lZFxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5kZWZpbmVkIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgdHNjb25maWdQYXRoc09wdGlvbnMuIFRvIGRpc2FibGUgdXNlIGBmYWxzZWAnLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCdnbG9iYWxTdHlsZURpcicgaW4gb3B0aW9ucyAmJiBvcHRpb25zLmdsb2JhbFN0eWxlRGlyID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VuZGVmaW5lZCBpcyBub3QgYSB2YWxpZCBvcHRpb24gZm9yIGdsb2JhbFN0eWxlRGlyLiBUbyBkaXNhYmxlIHVzZSBgZmFsc2VgJyxcbiAgICAgICk7XG4gICAgfVxuICAgIC8vIGRlZmF1bHRzXG4gICAgb3B0aW9ucy5zdmdvT3B0aW9ucyA9IHtcbiAgICAgIHBsdWdpbnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIG5hbWU6ICdwcmVzZXQtZGVmYXVsdCcsXG4gICAgICAgICAgcGFyYW1zOiB7XG4gICAgICAgICAgICBvdmVycmlkZXM6IHtcbiAgICAgICAgICAgICAgcmVtb3ZlVGl0bGU6IGZhbHNlLFxuICAgICAgICAgICAgICByZW1vdmVWaWV3Qm94OiBmYWxzZSxcbiAgICAgICAgICAgICAgY29udmVydFNoYXBlVG9QYXRoOiBmYWxzZSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgJ3JlbW92ZUNvbW1lbnRzJyxcbiAgICAgICAgJ3JlbW92ZURlc2MnLFxuICAgICAgICAncmVtb3ZlVXNlbGVzc0RlZnMnLFxuICAgICAgICAncmVtb3ZlRG9jdHlwZScsXG4gICAgICAgICdyZW1vdmVNZXRhZGF0YScsXG4gICAgICAgICdjb252ZXJ0Q29sb3JzJyxcbiAgICAgICAgJ3ByZWZpeElkcycsXG4gICAgICBdLFxuICAgICAgLi4ub3B0aW9ucy5zdmdvT3B0aW9ucyxcbiAgICB9O1xuXG4gICAgY29uc3QgYmFzZUNvbmZpZyA9IG1ha2VCYXNlQ29uZmlnKG9wdGlvbnMpO1xuXG4gICAgbGV0IGNvbmZpZztcbiAgICBpZiAoZW52Py5jaGVjayA9PT0gJ25vYnVpbGQnKSB7XG4gICAgICBjb25maWcgPSBtYWtlTm9idWlsZENvbmZpZyhiYXNlQ29uZmlnLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3dpdGNoIChvcHRpb25zLm1vZGUpIHtcbiAgICAgICAgY2FzZSAnZGV2ZWxvcG1lbnQnOlxuICAgICAgICAgIGNvbmZpZyA9IG1ha2VEZXZDb25maWcoYmFzZUNvbmZpZywgb3B0aW9ucyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ3Byb2R1Y3Rpb24nOlxuICAgICAgICAgIGNvbmZpZyA9IG1ha2VQcm9kQ29uZmlnKGJhc2VDb25maWcsIG9wdGlvbnMpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIGNvbmZpZyA9IGJhc2VDb25maWc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhcmd2Py50YXJnZXQ/LmluY2x1ZGVzPy4oJ25vZGUnKSkge1xuICAgICAgY29uZmlnID0gbWFrZU5vZGVDb25maWcoY29uZmlnLCBvcHRpb25zKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnLnBsdWdpbnMucHVzaChcbiAgICAgICAgbmV3IHdlYnBhY2suRW52aXJvbm1lbnRQbHVnaW4oe1xuICAgICAgICAgIE5PREVfREVCVUc6IGZhbHNlLFxuICAgICAgICAgIERFQlVHOiBmYWxzZSxcbiAgICAgICAgfSksXG4gICAgICAgIG5ldyB3ZWJwYWNrLlByb3ZpZGVQbHVnaW4oe1xuICAgICAgICAgIEJ1ZmZlcjogcmVxdWlyZS5yZXNvbHZlKCdidWZmZXInKSxcbiAgICAgICAgICBwcm9jZXNzOiByZXF1aXJlLnJlc29sdmUoJ3Byb2Nlc3MvYnJvd3Nlci5qcycpLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxpYnJhcnkpIHtcbiAgICAgIGNvbmZpZyA9IG1ha2VMaWJyYXJ5Q29uZmlnKGNvbmZpZywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGlmIChlbnY/LmNoZWNrKSB7XG4gICAgICBjb25maWcgPSBtYWtlQ2hlY2tDb25maWcoY29uZmlnLCBvcHRpb25zLCBlbnY/LmNoZWNrKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgZW52Py5hbmFseXplIHx8XG4gICAgICBwcm9jZXNzLmVudi5XRUJQQUNLX0FOQUxZWkUgPT09ICd0cnVlJyB8fFxuICAgICAgcHJvY2Vzcy5lbnYuV0VCUEFDS19BTkFMWVpFID09PSB0cnVlXG4gICAgKSB7XG4gICAgICBjb25maWcucGx1Z2lucy5wdXNoKFxuICAgICAgICBuZXcgQnVuZGxlQW5hbHl6ZXJQbHVnaW4oe1xuICAgICAgICAgIGFuYWx5emVyTW9kZTogJ3N0YXRpYycsXG4gICAgICAgICAgZ2VuZXJhdGVTdGF0c0ZpbGU6IGZhbHNlLFxuICAgICAgICAgIGRlZmF1bHRTaXplczogJ2d6aXAnLFxuICAgICAgICAgIC4uLm9wdGlvbnMuYnVuZGxlQW5hbHl6ZXJPcHRpb25zLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgICBkZWxldGUgY29uZmlnLm91dHB1dC5nbG9iYWxPYmplY3Q7XG4gICAgfVxuICAgIHJldHVybiBjb25maWc7XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUEsSUFBQUEsTUFBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQUcsc0JBQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLEtBQUEsR0FBQUMsdUJBQUEsQ0FBQUwsT0FBQTtBQVFBTSxNQUFBLENBQUFDLElBQUEsQ0FBQUgsS0FBQSxFQUFBSSxPQUFBLFdBQUFDLEdBQUE7RUFBQSxJQUFBQSxHQUFBLGtCQUFBQSxHQUFBO0VBQUEsSUFBQUgsTUFBQSxDQUFBSSxTQUFBLENBQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBQyxZQUFBLEVBQUFKLEdBQUE7RUFBQSxJQUFBQSxHQUFBLElBQUFLLE9BQUEsSUFBQUEsT0FBQSxDQUFBTCxHQUFBLE1BQUFMLEtBQUEsQ0FBQUssR0FBQTtFQUFBSyxPQUFBLENBQUFMLEdBQUEsSUFBQUwsS0FBQSxDQUFBSyxHQUFBO0FBQUE7QUFQQSxJQUFBTSxNQUFBLEdBQUFiLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBZ0IsSUFBQSxHQUFBZCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWlCLFFBQUEsR0FBQWYsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFrQixRQUFBLEdBQUFoQixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQW1CLEtBQUEsR0FBQWpCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBb0IsS0FBQSxHQUFBbEIsc0JBQUEsQ0FBQUYsT0FBQTtBQUdBLElBQUFxQixVQUFBLEdBQUFuQixzQkFBQSxDQUFBRixPQUFBO0FBQXNFYyxPQUFBLENBQUFRLDRCQUFBLEdBQUFELFVBQUEsQ0FBQUUsT0FBQTtBQUUvRCxTQUFTQyxVQUFVQSxDQUFDQyxPQUFPLEVBQUU7RUFDbEMsT0FBTyxDQUFDQyxHQUFHLEVBQUVDLElBQUksS0FBSztJQUNwQixJQUFJQSxJQUFJLEVBQUVDLElBQUksSUFBSSxDQUFDQyxPQUFPLENBQUNILEdBQUcsQ0FBQ0ksUUFBUSxFQUFFRCxPQUFPLENBQUNILEdBQUcsQ0FBQ0ksUUFBUSxHQUFHSCxJQUFJLEVBQUVDLElBQUk7SUFDMUU7SUFDQUgsT0FBTyxHQUFHO01BQ1JNLFFBQVEsRUFBRUMsZUFBUztNQUNuQkMsUUFBUSxFQUFFLEtBQUs7TUFDZkMsU0FBUyxFQUFFLEVBQUU7TUFDYkMsY0FBYyxFQUFFLE9BQU87TUFDdkJDLGNBQWMsRUFBRSxJQUFBQyxhQUFNLEVBQUMsS0FBSyxDQUFDO01BQzdCQyxjQUFjLEVBQUUsY0FBYztNQUM5QkMsUUFBUSxFQUFFLG1CQUFtQjtNQUM3QkMsU0FBUyxFQUFFLGdCQUFnQjtNQUMzQkMsZ0JBQWdCLEVBQUUsZUFBZTtNQUNqQ0MsY0FBYyxFQUFFLEVBQUU7TUFDbEIsR0FBR2pCLE9BQU87TUFDVkcsSUFBSSxFQUFFRCxJQUFJLEVBQUVDLElBQUksSUFBSUMsT0FBTyxDQUFDSCxHQUFHLENBQUNJLFFBQVE7TUFDeENhLE1BQU0sRUFDSmpCLEdBQUcsRUFBRWlCLE1BQU0sSUFDWGpCLEdBQUcsRUFBRWtCLE9BQU8sS0FDWGYsT0FBTyxDQUFDSCxHQUFHLENBQUNtQixlQUFlLEtBQUssTUFBTSxJQUNyQ2hCLE9BQU8sQ0FBQ0gsR0FBRyxDQUFDbUIsZUFBZSxLQUFLLElBQUksQ0FBQztNQUN6Q2xCLElBQUk7TUFDSkQsR0FBRztNQUNIb0IsWUFBWSxFQUFFeEMsTUFBTSxDQUFDSSxTQUFTLENBQUNDLGNBQWMsQ0FBQ0MsSUFBSSxDQUNoRGlCLE9BQU8sQ0FBQ2tCLFFBQVEsRUFDaEIsY0FDRjtJQUNGLENBQUM7SUFDRDtJQUNBLElBQUksYUFBYSxJQUFJdEIsT0FBTyxJQUFJQSxPQUFPLENBQUN1QixXQUFXLEtBQUtDLFNBQVMsRUFBRTtNQUNqRSxNQUFNLElBQUlDLEtBQUssQ0FDYix5RUFDRixDQUFDO0lBQ0g7SUFDQSxJQUFJLGFBQWEsSUFBSXpCLE9BQU8sSUFBSUEsT0FBTyxDQUFDMEIsV0FBVyxLQUFLRixTQUFTLEVBQUU7TUFDakUsTUFBTSxJQUFJQyxLQUFLLENBQ2IseUVBQ0YsQ0FBQztJQUNIO0lBQ0EsSUFBSSxhQUFhLElBQUl6QixPQUFPLElBQUlBLE9BQU8sQ0FBQzJCLFdBQVcsS0FBS0gsU0FBUyxFQUFFO01BQ2pFLE1BQU0sSUFBSUMsS0FBSyxDQUNiLHlFQUNGLENBQUM7SUFDSDtJQUNBLElBQUksYUFBYSxJQUFJekIsT0FBTyxJQUFJQSxPQUFPLENBQUM0QixXQUFXLEtBQUtKLFNBQVMsRUFBRTtNQUNqRSxNQUFNLElBQUlDLEtBQUssQ0FDYix5RUFDRixDQUFDO0lBQ0g7SUFDQSxJQUFJLGFBQWEsSUFBSXpCLE9BQU8sSUFBSUEsT0FBTyxDQUFDNkIsV0FBVyxLQUFLTCxTQUFTLEVBQUU7TUFDakUsTUFBTSxJQUFJQyxLQUFLLENBQ2IseUVBQ0YsQ0FBQztJQUNIO0lBQ0EsSUFDRSxtQkFBbUIsSUFBSXpCLE9BQU8sSUFDOUJBLE9BQU8sQ0FBQzhCLGlCQUFpQixLQUFLTixTQUFTLEVBQ3ZDO01BQ0EsTUFBTSxJQUFJQyxLQUFLLENBQ2IsK0VBQ0YsQ0FBQztJQUNIO0lBQ0EsSUFDRSxzQkFBc0IsSUFBSXpCLE9BQU8sSUFDakNBLE9BQU8sQ0FBQytCLG9CQUFvQixLQUFLUCxTQUFTLEVBQzFDO01BQ0EsTUFBTSxJQUFJQyxLQUFLLENBQ2Isa0ZBQ0YsQ0FBQztJQUNIO0lBQ0EsSUFBSSxnQkFBZ0IsSUFBSXpCLE9BQU8sSUFBSUEsT0FBTyxDQUFDVSxjQUFjLEtBQUtjLFNBQVMsRUFBRTtNQUN2RSxNQUFNLElBQUlDLEtBQUssQ0FDYiw0RUFDRixDQUFDO0lBQ0g7SUFDQTtJQUNBekIsT0FBTyxDQUFDMkIsV0FBVyxHQUFHO01BQ3BCSyxPQUFPLEVBQUUsQ0FDUDtRQUNFQyxJQUFJLEVBQUUsZ0JBQWdCO1FBQ3RCQyxNQUFNLEVBQUU7VUFDTkMsU0FBUyxFQUFFO1lBQ1RDLFdBQVcsRUFBRSxLQUFLO1lBQ2xCQyxhQUFhLEVBQUUsS0FBSztZQUNwQkMsa0JBQWtCLEVBQUU7VUFDdEI7UUFDRjtNQUNGLENBQUMsRUFDRCxnQkFBZ0IsRUFDaEIsWUFBWSxFQUNaLG1CQUFtQixFQUNuQixlQUFlLEVBQ2YsZ0JBQWdCLEVBQ2hCLGVBQWUsRUFDZixXQUFXLENBQ1o7TUFDRCxHQUFHdEMsT0FBTyxDQUFDMkI7SUFDYixDQUFDO0lBRUQsTUFBTVksVUFBVSxHQUFHLElBQUFDLGFBQWMsRUFBQ3hDLE9BQU8sQ0FBQztJQUUxQyxJQUFJeUMsTUFBTTtJQUNWLElBQUl4QyxHQUFHLEVBQUV5QyxLQUFLLEtBQUssU0FBUyxFQUFFO01BQzVCRCxNQUFNLEdBQUcsSUFBQUUsZ0JBQWlCLEVBQUNKLFVBQVUsRUFBRXZDLE9BQU8sQ0FBQztJQUNqRCxDQUFDLE1BQU07TUFDTCxRQUFRQSxPQUFPLENBQUNHLElBQUk7UUFDbEIsS0FBSyxhQUFhO1VBQ2hCc0MsTUFBTSxHQUFHLElBQUFHLFlBQWEsRUFBQ0wsVUFBVSxFQUFFdkMsT0FBTyxDQUFDO1VBQzNDO1FBQ0YsS0FBSyxZQUFZO1VBQ2Z5QyxNQUFNLEdBQUcsSUFBQUksYUFBYyxFQUFDTixVQUFVLEVBQUV2QyxPQUFPLENBQUM7VUFDNUM7UUFDRjtVQUNFeUMsTUFBTSxHQUFHRixVQUFVO1VBQ25CO01BQ0o7SUFDRjtJQUNBLElBQUlyQyxJQUFJLEVBQUU0QyxNQUFNLEVBQUVDLFFBQVEsR0FBRyxNQUFNLENBQUMsRUFBRTtNQUNwQ04sTUFBTSxHQUFHLElBQUFPLGFBQWMsRUFBQ1AsTUFBTSxFQUFFekMsT0FBTyxDQUFDO0lBQzFDLENBQUMsTUFBTTtNQUNMeUMsTUFBTSxDQUFDVCxPQUFPLENBQUNpQixJQUFJLENBQ2pCLElBQUlDLGdCQUFPLENBQUNDLGlCQUFpQixDQUFDO1FBQzVCQyxVQUFVLEVBQUUsS0FBSztRQUNqQkMsS0FBSyxFQUFFO01BQ1QsQ0FBQyxDQUFDLEVBQ0YsSUFBSUgsZ0JBQU8sQ0FBQ0ksYUFBYSxDQUFDO1FBQ3hCQyxNQUFNLEVBQUVoRixPQUFPLENBQUNpRixPQUFPLENBQUMsUUFBUSxDQUFDO1FBQ2pDcEQsT0FBTyxFQUFFN0IsT0FBTyxDQUFDaUYsT0FBTyxDQUFDLG9CQUFvQjtNQUMvQyxDQUFDLENBQ0gsQ0FBQztJQUNIO0lBQ0EsSUFBSXhELE9BQU8sQ0FBQ3lELE9BQU8sRUFBRTtNQUNuQmhCLE1BQU0sR0FBRyxJQUFBaUIsZ0JBQWlCLEVBQUNqQixNQUFNLEVBQUV6QyxPQUFPLENBQUM7SUFDN0M7SUFDQSxJQUFJQyxHQUFHLEVBQUV5QyxLQUFLLEVBQUU7TUFDZEQsTUFBTSxHQUFHLElBQUFrQixjQUFlLEVBQUNsQixNQUFNLEVBQUV6QyxPQUFPLEVBQUVDLEdBQUcsRUFBRXlDLEtBQUssQ0FBQztJQUN2RDtJQUNBLElBQ0V6QyxHQUFHLEVBQUVrQixPQUFPLElBQ1pmLE9BQU8sQ0FBQ0gsR0FBRyxDQUFDbUIsZUFBZSxLQUFLLE1BQU0sSUFDdENoQixPQUFPLENBQUNILEdBQUcsQ0FBQ21CLGVBQWUsS0FBSyxJQUFJLEVBQ3BDO01BQ0FxQixNQUFNLENBQUNULE9BQU8sQ0FBQ2lCLElBQUksQ0FDakIsSUFBSVcsMkNBQW9CLENBQUM7UUFDdkJDLFlBQVksRUFBRSxRQUFRO1FBQ3RCQyxpQkFBaUIsRUFBRSxLQUFLO1FBQ3hCQyxZQUFZLEVBQUUsTUFBTTtRQUNwQixHQUFHL0QsT0FBTyxDQUFDZ0U7TUFDYixDQUFDLENBQ0gsQ0FBQztNQUNELE9BQU92QixNQUFNLENBQUN3QixNQUFNLENBQUNDLFlBQVk7SUFDbkM7SUFDQSxPQUFPekIsTUFBTTtFQUNmLENBQUM7QUFDSCIsImlnbm9yZUxpc3QiOltdfQ==