UNPKG

@anansi/webpack-config

Version:
136 lines (135 loc) 20.1 kB
"use strict"; 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; 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 // Note: In SVGO v4, removeTitle and removeViewBox are no longer part of preset-default // and are disabled by default, so we don't need to override them. options.svgoOptions = { plugins: [{ name: 'preset-default', params: { overrides: { 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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmFtZGEiLCJyZXF1aXJlIiwiX3dlYnBhY2siLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX3dlYnBhY2tCdW5kbGVBbmFseXplciIsIl9iYXNlIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIl9leHBvcnROYW1lcyIsImV4cG9ydHMiLCJfY2hlY2siLCJfZGV2IiwiX2xpYnJhcnkiLCJfbm9idWlsZCIsIl9ub2RlIiwiX3Byb2QiLCJfc3Rvcnlib29rIiwibWFrZVN0b3J5Ym9va0NvbmZpZ0dlbmVyYXRvciIsImRlZmF1bHQiLCJtYWtlQ29uZmlnIiwib3B0aW9ucyIsImVudiIsImFyZ3YiLCJtb2RlIiwicHJvY2VzcyIsIk5PREVfRU5WIiwicm9vdFBhdGgiLCJST09UX1BBVEgiLCJiYXNlUGF0aCIsImJhYmVsUm9vdCIsImdsb2JhbFN0eWxlRGlyIiwibGlicmFyeUluY2x1ZGUiLCJhbHdheXMiLCJsaWJyYXJ5RXhjbHVkZSIsImJ1aWxkRGlyIiwic2VydmVyRGlyIiwibWFuaWZlc3RGaWxlbmFtZSIsImV4dHJhSnNMb2FkZXJzIiwibm9oYXNoIiwiYW5hbHl6ZSIsIldFQlBBQ0tfQU5BTFlaRSIsImlzU3RhY2tibGl0eiIsInZlcnNpb25zIiwic2Fzc09wdGlvbnMiLCJ1bmRlZmluZWQiLCJFcnJvciIsImh0bWxPcHRpb25zIiwic3Znb09wdGlvbnMiLCJzdmdyT3B0aW9ucyIsImluSlNPcHRpb25zIiwiY3NzRXh0cmFjdE9wdGlvbnMiLCJ0c2NvbmZpZ1BhdGhzT3B0aW9ucyIsInBsdWdpbnMiLCJuYW1lIiwicGFyYW1zIiwib3ZlcnJpZGVzIiwiY29udmVydFNoYXBlVG9QYXRoIiwiYmFzZUNvbmZpZyIsIm1ha2VCYXNlQ29uZmlnIiwiY29uZmlnIiwiY2hlY2siLCJtYWtlTm9idWlsZENvbmZpZyIsIm1ha2VEZXZDb25maWciLCJtYWtlUHJvZENvbmZpZyIsInRhcmdldCIsImluY2x1ZGVzIiwibWFrZU5vZGVDb25maWciLCJwdXNoIiwid2VicGFjayIsIkVudmlyb25tZW50UGx1Z2luIiwiTk9ERV9ERUJVRyIsIkRFQlVHIiwiUHJvdmlkZVBsdWdpbiIsIkJ1ZmZlciIsInJlc29sdmUiLCJsaWJyYXJ5IiwibWFrZUxpYnJhcnlDb25maWciLCJtYWtlQ2hlY2tDb25maWciLCJCdW5kbGVBbmFseXplclBsdWdpbiIsImFuYWx5emVyTW9kZSIsImdlbmVyYXRlU3RhdHNGaWxlIiwiZGVmYXVsdFNpemVzIiwiYnVuZGxlQW5hbHl6ZXJPcHRpb25zIiwib3V0cHV0IiwiZ2xvYmFsT2JqZWN0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGFsd2F5cyB9IGZyb20gJ3JhbWRhJztcbmltcG9ydCB3ZWJwYWNrIGZyb20gJ3dlYnBhY2snO1xuaW1wb3J0IHsgQnVuZGxlQW5hbHl6ZXJQbHVnaW4gfSBmcm9tICd3ZWJwYWNrLWJ1bmRsZS1hbmFseXplcic7XG5cbmltcG9ydCBtYWtlQmFzZUNvbmZpZywgeyBST09UX1BBVEggfSBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IG1ha2VDaGVja0NvbmZpZyBmcm9tICcuL2NoZWNrJztcbmltcG9ydCBtYWtlRGV2Q29uZmlnIGZyb20gJy4vZGV2JztcbmltcG9ydCBtYWtlTGlicmFyeUNvbmZpZyBmcm9tICcuL2xpYnJhcnknO1xuaW1wb3J0IG1ha2VOb2J1aWxkQ29uZmlnIGZyb20gJy4vbm9idWlsZCc7XG5pbXBvcnQgbWFrZU5vZGVDb25maWcgZnJvbSAnLi9ub2RlJztcbmltcG9ydCBtYWtlUHJvZENvbmZpZyBmcm9tICcuL3Byb2QnO1xuXG5leHBvcnQgKiBmcm9tICcuL2Jhc2UnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBtYWtlU3Rvcnlib29rQ29uZmlnR2VuZXJhdG9yIH0gZnJvbSAnLi9zdG9yeWJvb2snO1xuXG5leHBvcnQgZnVuY3Rpb24gbWFrZUNvbmZpZyhvcHRpb25zKSB7XG4gIHJldHVybiAoZW52LCBhcmd2KSA9PiB7XG4gICAgaWYgKGFyZ3Y/Lm1vZGUgJiYgIXByb2Nlc3MuZW52Lk5PREVfRU5WKSBwcm9jZXNzLmVudi5OT0RFX0VOViA9IGFyZ3Y/Lm1vZGU7XG5cbiAgICBvcHRpb25zID0ge1xuICAgICAgcm9vdFBhdGg6IFJPT1RfUEFUSCxcbiAgICAgIGJhc2VQYXRoOiAnc3JjJyxcbiAgICAgIGJhYmVsUm9vdDogJycsXG4gICAgICBnbG9iYWxTdHlsZURpcjogJ3N0eWxlJyxcbiAgICAgIGxpYnJhcnlJbmNsdWRlOiBhbHdheXMoZmFsc2UpLFxuICAgICAgbGlicmFyeUV4Y2x1ZGU6IC9ub2RlX21vZHVsZXMvLFxuICAgICAgYnVpbGREaXI6ICdnZW5lcmF0ZWRfYXNzZXRzLycsXG4gICAgICBzZXJ2ZXJEaXI6ICdzZXJ2ZXJfYXNzZXRzLycsXG4gICAgICBtYW5pZmVzdEZpbGVuYW1lOiAnbWFuaWZlc3QuanNvbicsXG4gICAgICBleHRyYUpzTG9hZGVyczogW10sXG4gICAgICAuLi5vcHRpb25zLFxuICAgICAgbW9kZTogYXJndj8ubW9kZSB8fCBwcm9jZXNzLmVudi5OT0RFX0VOVixcbiAgICAgIG5vaGFzaDpcbiAgICAgICAgZW52Py5ub2hhc2ggPz9cbiAgICAgICAgZW52Py5hbmFseXplID8/XG4gICAgICAgIChwcm9jZXNzLmVudi5XRUJQQUNLX0FOQUxZWkUgPT09ICd0cnVlJyB8fFxuICAgICAgICAgIHByb2Nlc3MuZW52LldFQlBBQ0tfQU5BTFlaRSA9PT0gdHJ1ZSksXG4gICAgICBhcmd2LFxuICAgICAgZW52LFxuICAgICAgaXNTdGFja2JsaXR6OiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoXG4gICAgICAgIHByb2Nlc3MudmVyc2lvbnMsXG4gICAgICAgICd3ZWJjb250YWluZXInLFxuICAgICAgKSxcbiAgICB9O1xuICAgIC8vIG9wdGlvbiB2YWxpZGF0aW9uIGRvbmUgaGVyZVxuICAgIGlmICgnc2Fzc09wdGlvbnMnIGluIG9wdGlvbnMgJiYgb3B0aW9ucy5zYXNzT3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmRlZmluZWQgaXMgbm90IGEgdmFsaWQgb3B0aW9uIGZvciBzYXNzT3B0aW9ucy4gVG8gZGlzYWJsZSB1c2UgYGZhbHNlYCcsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoJ2h0bWxPcHRpb25zJyBpbiBvcHRpb25zICYmIG9wdGlvbnMuaHRtbE9wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5kZWZpbmVkIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgaHRtbE9wdGlvbnMuIFRvIGRpc2FibGUgdXNlIGBmYWxzZWAnLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKCdzdmdvT3B0aW9ucycgaW4gb3B0aW9ucyAmJiBvcHRpb25zLnN2Z29PcHRpb25zID09PSB1bmRlZmluZWQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VuZGVmaW5lZCBpcyBub3QgYSB2YWxpZCBvcHRpb24gZm9yIHN2Z29PcHRpb25zLiBUbyBkaXNhYmxlIHVzZSBgZmFsc2VgJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmICgnc3Znck9wdGlvbnMnIGluIG9wdGlvbnMgJiYgb3B0aW9ucy5zdmdyT3B0aW9ucyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmRlZmluZWQgaXMgbm90IGEgdmFsaWQgb3B0aW9uIGZvciBzdmdyT3B0aW9ucy4gVG8gZGlzYWJsZSB1c2UgYGZhbHNlYCcsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoJ2luSlNPcHRpb25zJyBpbiBvcHRpb25zICYmIG9wdGlvbnMuaW5KU09wdGlvbnMgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5kZWZpbmVkIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgaW5KU09wdGlvbnMuIFRvIGRpc2FibGUgdXNlIGBmYWxzZWAnLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgJ2Nzc0V4dHJhY3RPcHRpb25zJyBpbiBvcHRpb25zICYmXG4gICAgICBvcHRpb25zLmNzc0V4dHJhY3RPcHRpb25zID09PSB1bmRlZmluZWRcbiAgICApIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgJ1VuZGVmaW5lZCBpcyBub3QgYSB2YWxpZCBvcHRpb24gZm9yIGNzc0V4dHJhY3RPcHRpb25zLiBUbyBkaXNhYmxlIHVzZSBgZmFsc2VgJyxcbiAgICAgICk7XG4gICAgfVxuICAgIGlmIChcbiAgICAgICd0c2NvbmZpZ1BhdGhzT3B0aW9ucycgaW4gb3B0aW9ucyAmJlxuICAgICAgb3B0aW9ucy50c2NvbmZpZ1BhdGhzT3B0aW9ucyA9PT0gdW5kZWZpbmVkXG4gICAgKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdVbmRlZmluZWQgaXMgbm90IGEgdmFsaWQgb3B0aW9uIGZvciB0c2NvbmZpZ1BhdGhzT3B0aW9ucy4gVG8gZGlzYWJsZSB1c2UgYGZhbHNlYCcsXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoJ2dsb2JhbFN0eWxlRGlyJyBpbiBvcHRpb25zICYmIG9wdGlvbnMuZ2xvYmFsU3R5bGVEaXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnVW5kZWZpbmVkIGlzIG5vdCBhIHZhbGlkIG9wdGlvbiBmb3IgZ2xvYmFsU3R5bGVEaXIuIFRvIGRpc2FibGUgdXNlIGBmYWxzZWAnLFxuICAgICAgKTtcbiAgICB9XG4gICAgLy8gZGVmYXVsdHNcbiAgICAvLyBOb3RlOiBJbiBTVkdPIHY0LCByZW1vdmVUaXRsZSBhbmQgcmVtb3ZlVmlld0JveCBhcmUgbm8gbG9uZ2VyIHBhcnQgb2YgcHJlc2V0LWRlZmF1bHRcbiAgICAvLyBhbmQgYXJlIGRpc2FibGVkIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0IG5lZWQgdG8gb3ZlcnJpZGUgdGhlbS5cbiAgICBvcHRpb25zLnN2Z29PcHRpb25zID0ge1xuICAgICAgcGx1Z2luczogW1xuICAgICAgICB7XG4gICAgICAgICAgbmFtZTogJ3ByZXNldC1kZWZhdWx0JyxcbiAgICAgICAgICBwYXJhbXM6IHtcbiAgICAgICAgICAgIG92ZXJyaWRlczoge1xuICAgICAgICAgICAgICBjb252ZXJ0U2hhcGVUb1BhdGg6IGZhbHNlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9LFxuICAgICAgICB9LFxuICAgICAgICAncmVtb3ZlQ29tbWVudHMnLFxuICAgICAgICAncmVtb3ZlRGVzYycsXG4gICAgICAgICdyZW1vdmVVc2VsZXNzRGVmcycsXG4gICAgICAgICdyZW1vdmVEb2N0eXBlJyxcbiAgICAgICAgJ3JlbW92ZU1ldGFkYXRhJyxcbiAgICAgICAgJ2NvbnZlcnRDb2xvcnMnLFxuICAgICAgICAncHJlZml4SWRzJyxcbiAgICAgIF0sXG4gICAgICAuLi5vcHRpb25zLnN2Z29PcHRpb25zLFxuICAgIH07XG5cbiAgICBjb25zdCBiYXNlQ29uZmlnID0gbWFrZUJhc2VDb25maWcob3B0aW9ucyk7XG5cbiAgICBsZXQgY29uZmlnO1xuICAgIGlmIChlbnY/LmNoZWNrID09PSAnbm9idWlsZCcpIHtcbiAgICAgIGNvbmZpZyA9IG1ha2VOb2J1aWxkQ29uZmlnKGJhc2VDb25maWcsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzd2l0Y2ggKG9wdGlvbnMubW9kZSkge1xuICAgICAgICBjYXNlICdkZXZlbG9wbWVudCc6XG4gICAgICAgICAgY29uZmlnID0gbWFrZURldkNvbmZpZyhiYXNlQ29uZmlnLCBvcHRpb25zKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAncHJvZHVjdGlvbic6XG4gICAgICAgICAgY29uZmlnID0gbWFrZVByb2RDb25maWcoYmFzZUNvbmZpZywgb3B0aW9ucyk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgY29uZmlnID0gYmFzZUNvbmZpZztcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKGFyZ3Y/LnRhcmdldD8uaW5jbHVkZXM/Lignbm9kZScpKSB7XG4gICAgICBjb25maWcgPSBtYWtlTm9kZUNvbmZpZyhjb25maWcsIG9wdGlvbnMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcucGx1Z2lucy5wdXNoKFxuICAgICAgICBuZXcgd2VicGFjay5FbnZpcm9ubWVudFBsdWdpbih7XG4gICAgICAgICAgTk9ERV9ERUJVRzogZmFsc2UsXG4gICAgICAgICAgREVCVUc6IGZhbHNlLFxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IHdlYnBhY2suUHJvdmlkZVBsdWdpbih7XG4gICAgICAgICAgQnVmZmVyOiByZXF1aXJlLnJlc29sdmUoJ2J1ZmZlcicpLFxuICAgICAgICAgIHByb2Nlc3M6IHJlcXVpcmUucmVzb2x2ZSgncHJvY2Vzcy9icm93c2VyLmpzJyksXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubGlicmFyeSkge1xuICAgICAgY29uZmlnID0gbWFrZUxpYnJhcnlDb25maWcoY29uZmlnLCBvcHRpb25zKTtcbiAgICB9XG4gICAgaWYgKGVudj8uY2hlY2spIHtcbiAgICAgIGNvbmZpZyA9IG1ha2VDaGVja0NvbmZpZyhjb25maWcsIG9wdGlvbnMsIGVudj8uY2hlY2spO1xuICAgIH1cbiAgICBpZiAoXG4gICAgICBlbnY/LmFuYWx5emUgfHxcbiAgICAgIHByb2Nlc3MuZW52LldFQlBBQ0tfQU5BTFlaRSA9PT0gJ3RydWUnIHx8XG4gICAgICBwcm9jZXNzLmVudi5XRUJQQUNLX0FOQUxZWkUgPT09IHRydWVcbiAgICApIHtcbiAgICAgIGNvbmZpZy5wbHVnaW5zLnB1c2goXG4gICAgICAgIG5ldyBCdW5kbGVBbmFseXplclBsdWdpbih7XG4gICAgICAgICAgYW5hbHl6ZXJNb2RlOiAnc3RhdGljJyxcbiAgICAgICAgICBnZW5lcmF0ZVN0YXRzRmlsZTogZmFsc2UsXG4gICAgICAgICAgZGVmYXVsdFNpemVzOiAnZ3ppcCcsXG4gICAgICAgICAgLi4ub3B0aW9ucy5idW5kbGVBbmFseXplck9wdGlvbnMsXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICAgIGRlbGV0ZSBjb25maWcub3V0cHV0Lmdsb2JhbE9iamVjdDtcbiAgICB9XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQSxJQUFBQSxNQUFBLEdBQUFDLE9BQUE7QUFDQSxJQUFBQyxRQUFBLEdBQUFDLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBRyxzQkFBQSxHQUFBSCxPQUFBO0FBRUEsSUFBQUksS0FBQSxHQUFBQyx1QkFBQSxDQUFBTCxPQUFBO0FBUUFNLE1BQUEsQ0FBQUMsSUFBQSxDQUFBSCxLQUFBLEVBQUFJLE9BQUEsV0FBQUMsR0FBQTtFQUFBLElBQUFBLEdBQUEsa0JBQUFBLEdBQUE7RUFBQSxJQUFBSCxNQUFBLENBQUFJLFNBQUEsQ0FBQUMsY0FBQSxDQUFBQyxJQUFBLENBQUFDLFlBQUEsRUFBQUosR0FBQTtFQUFBLElBQUFBLEdBQUEsSUFBQUssT0FBQSxJQUFBQSxPQUFBLENBQUFMLEdBQUEsTUFBQUwsS0FBQSxDQUFBSyxHQUFBO0VBQUFLLE9BQUEsQ0FBQUwsR0FBQSxJQUFBTCxLQUFBLENBQUFLLEdBQUE7QUFBQTtBQVBBLElBQUFNLE1BQUEsR0FBQWIsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFnQixJQUFBLEdBQUFkLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBaUIsUUFBQSxHQUFBZixzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQWtCLFFBQUEsR0FBQWhCLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBbUIsS0FBQSxHQUFBakIsc0JB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