verdaccio 5.3.2 → 5.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = void 0;
7
+
8
+ var _express = require("express");
9
+
10
+ var _rateLimiter = require("../../rate-limiter");
11
+
12
+ var _package = _interopRequireDefault(require("./package"));
13
+
14
+ var _search = _interopRequireDefault(require("./search"));
15
+
16
+ var _user = _interopRequireDefault(require("./user"));
17
+
18
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
19
+
20
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
21
+
22
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
23
+
24
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
25
+
26
+ var _default = (auth, storage, config) => {
27
+ var _config$web;
28
+
29
+ const route = (0, _express.Router)();
30
+ /* eslint new-cap: 0 */
31
+
32
+ route.use('/data/', (0, _rateLimiter.limiter)(_objectSpread({
33
+ windowMs: 2 * 60 * 1000,
34
+ // 2 minutes
35
+ max: 5000
36
+ }, config === null || config === void 0 ? void 0 : (_config$web = config.web) === null || _config$web === void 0 ? void 0 : _config$web.rateLimit)));
37
+ route.use('/data/', (0, _package.default)(storage, auth, config));
38
+ route.use('/data/', (0, _search.default)(storage, auth));
39
+ route.use('/sec/', (0, _rateLimiter.limiter)(config === null || config === void 0 ? void 0 : config.userRateLimit));
40
+ route.use('/sec/', (0, _user.default)(auth, storage));
41
+ return route;
42
+ };
43
+
44
+ exports.default = _default;
45
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvd2ViL2VuZHBvaW50L2luZGV4LnRzIl0sIm5hbWVzIjpbImF1dGgiLCJzdG9yYWdlIiwiY29uZmlnIiwicm91dGUiLCJ1c2UiLCJ3aW5kb3dNcyIsIm1heCIsIndlYiIsInJhdGVMaW1pdCIsInVzZXJSYXRlTGltaXQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztlQUVlLENBQUNBLElBQUQsRUFBT0MsT0FBUCxFQUFnQkMsTUFBaEIsS0FBMkI7QUFBQTs7QUFDeEMsUUFBTUMsS0FBSyxHQUFHLHNCQUFkO0FBQXdCOztBQUN4QkEsRUFBQUEsS0FBSyxDQUFDQyxHQUFOLENBQ0UsUUFERixFQUVFO0FBQ0VDLElBQUFBLFFBQVEsRUFBRSxJQUFJLEVBQUosR0FBUyxJQURyQjtBQUMyQjtBQUN6QkMsSUFBQUEsR0FBRyxFQUFFO0FBRlAsS0FHS0osTUFITCxhQUdLQSxNQUhMLHNDQUdLQSxNQUFNLENBQUVLLEdBSGIsZ0RBR0ssWUFBYUMsU0FIbEIsRUFGRjtBQVFBTCxFQUFBQSxLQUFLLENBQUNDLEdBQU4sQ0FBVSxRQUFWLEVBQW9CLHNCQUFXSCxPQUFYLEVBQW9CRCxJQUFwQixFQUEwQkUsTUFBMUIsQ0FBcEI7QUFDQUMsRUFBQUEsS0FBSyxDQUFDQyxHQUFOLENBQVUsUUFBVixFQUFvQixxQkFBT0gsT0FBUCxFQUFnQkQsSUFBaEIsQ0FBcEI7QUFDQUcsRUFBQUEsS0FBSyxDQUFDQyxHQUFOLENBQVUsT0FBVixFQUFtQiwwQkFBUUYsTUFBUixhQUFRQSxNQUFSLHVCQUFRQSxNQUFNLENBQUVPLGFBQWhCLENBQW5CO0FBQ0FOLEVBQUFBLEtBQUssQ0FBQ0MsR0FBTixDQUFVLE9BQVYsRUFBbUIsbUJBQUtKLElBQUwsRUFBV0MsT0FBWCxDQUFuQjtBQUNBLFNBQU9FLEtBQVA7QUFDRCxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVzcG9uc2UsIFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgbGltaXRlciB9IGZyb20gJy4uLy4uL3JhdGUtbGltaXRlcic7XG5pbXBvcnQgcGFja2FnZUFwaSBmcm9tICcuL3BhY2thZ2UnO1xuaW1wb3J0IHNlYXJjaCBmcm9tICcuL3NlYXJjaCc7XG5pbXBvcnQgdXNlciBmcm9tICcuL3VzZXInO1xuXG5leHBvcnQgZGVmYXVsdCAoYXV0aCwgc3RvcmFnZSwgY29uZmlnKSA9PiB7XG4gIGNvbnN0IHJvdXRlID0gUm91dGVyKCk7IC8qIGVzbGludCBuZXctY2FwOiAwICovXG4gIHJvdXRlLnVzZShcbiAgICAnL2RhdGEvJyxcbiAgICBsaW1pdGVyKHtcbiAgICAgIHdpbmRvd01zOiAyICogNjAgKiAxMDAwLCAvLyAyICBtaW51dGVzXG4gICAgICBtYXg6IDUwMDAsIC8vIGxpbWl0IGVhY2ggSVAgdG8gMTAwMCByZXF1ZXN0cyBwZXIgd2luZG93TXNcbiAgICAgIC4uLmNvbmZpZz8ud2ViPy5yYXRlTGltaXQsXG4gICAgfSlcbiAgKTtcbiAgcm91dGUudXNlKCcvZGF0YS8nLCBwYWNrYWdlQXBpKHN0b3JhZ2UsIGF1dGgsIGNvbmZpZykpO1xuICByb3V0ZS51c2UoJy9kYXRhLycsIHNlYXJjaChzdG9yYWdlLCBhdXRoKSk7XG4gIHJvdXRlLnVzZSgnL3NlYy8nLCBsaW1pdGVyKGNvbmZpZz8udXNlclJhdGVMaW1pdCkpO1xuICByb3V0ZS51c2UoJy9zZWMvJywgdXNlcihhdXRoLCBzdG9yYWdlKSk7XG4gIHJldHVybiByb3V0ZTtcbn07XG4iXX0=
@@ -7,6 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _lodash = _interopRequireDefault(require("lodash"));
9
9
 
10
+ var _express = require("express");
11
+
10
12
  var _utils = require("../../../lib/utils");
11
13
 
12
14
  var _middleware = require("../../middleware");
@@ -29,8 +31,10 @@ const getOrder = (order = 'asc') => {
29
31
  return order === 'asc';
30
32
  };
31
33
 
32
- function addPackageWebApi(route, storage, auth, config) {
34
+ function addPackageWebApi(storage, auth, config) {
33
35
  const can = (0, _middleware.allow)(auth);
36
+ const pkgRouter = (0, _express.Router)();
37
+ /* eslint new-cap: 0 */
34
38
 
35
39
  const checkAllow = (name, remoteUser) => new Promise((resolve, reject) => {
36
40
  try {
@@ -49,7 +53,7 @@ function addPackageWebApi(route, storage, auth, config) {
49
53
  }); // Get list of all visible package
50
54
 
51
55
 
52
- route.get('/packages', function (req, res, next) {
56
+ pkgRouter.get('/packages', function (req, res, next) {
53
57
  storage.getLocalDatabase(async function (err, packages) {
54
58
  if (err) {
55
59
  throw err;
@@ -103,7 +107,7 @@ function addPackageWebApi(route, storage, auth, config) {
103
107
  });
104
108
  }); // Get package readme
105
109
 
106
- route.get('/package/readme/(@:scope/)?:package/:version?', can('access'), function (req, res, next) {
110
+ pkgRouter.get('/package/readme/(@:scope/)?:package/:version?', can('access'), function (req, res, next) {
107
111
  const packageName = req.params.scope ? (0, _utils.addScope)(req.params.scope, req.params.package) : req.params.package;
108
112
  storage.getPackage({
109
113
  name: packageName,
@@ -123,7 +127,7 @@ function addPackageWebApi(route, storage, auth, config) {
123
127
  }
124
128
  });
125
129
  });
126
- route.get('/sidebar/(@:scope/)?:package', can('access'), function (req, res, next) {
130
+ pkgRouter.get('/sidebar/(@:scope/)?:package', can('access'), function (req, res, next) {
127
131
  const packageName = req.params.scope ? (0, _utils.addScope)(req.params.scope, req.params.package) : req.params.package;
128
132
  storage.getPackage({
129
133
  name: packageName,
@@ -174,8 +178,9 @@ function addPackageWebApi(route, storage, auth, config) {
174
178
  }
175
179
  });
176
180
  });
181
+ return pkgRouter;
177
182
  }
178
183
 
179
184
  var _default = addPackageWebApi;
180
185
  exports.default = _default;
181
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvd2ViL2VuZHBvaW50L3BhY2thZ2UudHMiXSwibmFtZXMiOlsiZ2V0T3JkZXIiLCJvcmRlciIsImFkZFBhY2thZ2VXZWJBcGkiLCJyb3V0ZSIsInN0b3JhZ2UiLCJhdXRoIiwiY29uZmlnIiwiY2FuIiwiY2hlY2tBbGxvdyIsIm5hbWUiLCJyZW1vdGVVc2VyIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJhbGxvd19hY2Nlc3MiLCJwYWNrYWdlTmFtZSIsImVyciIsImFsbG93ZWQiLCJnZXQiLCJyZXEiLCJyZXMiLCJuZXh0IiwiZ2V0TG9jYWxEYXRhYmFzZSIsInBhY2thZ2VzIiwicHJvY2Vzc1BhY2thZ2VzIiwicGVybWlzc2lvbnMiLCJwYWNrZ2VzQ29weSIsInNsaWNlIiwicGtnIiwicGtnQ29weSIsImF1dGhvciIsInJlbW90ZV91c2VyIiwid2ViIiwiYXZhdGFyIiwiZW1haWwiLCJncmF2YXRhciIsIl8iLCJpc05pbCIsImRpc3QiLCJpc051bGwiLCJ0YXJiYWxsIiwidXJsX3ByZWZpeCIsInB1c2giLCJsb2dnZXIiLCJlcnJvciIsInNvcnRfcGFja2FnZXMiLCJFcnJvckNvZGUiLCJnZXRJbnRlcm5hbEVycm9yIiwicGFyYW1zIiwic2NvcGUiLCJwYWNrYWdlIiwiZ2V0UGFja2FnZSIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJpbmZvIiwic2V0IiwiSEVBREVSX1RZUEUiLCJDT05URU5UX1RZUEUiLCJIRUFERVJTIiwiVEVYVF9QTEFJTiIsInJlZmVyZXIiLCJwYXRobmFtZSIsIlVSTCIsInVuZGVmaW5lZCIsInJlYWRtZSIsImtlZXBVcExpbmtEYXRhIiwidiIsInF1ZXJ5Iiwic2lkZUJhckluZm8iLCJjbG9uZSIsInZlcnNpb25zIiwibGF0ZXN0IiwiRElTVF9UQUdTIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJOT1RfRk9VTkQiLCJlbmQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFH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QUFHLDZCQUFpQixDQUFDLFFBQUQsRUFBVyxjQUFYLEVBQTJCLE1BQTNCLEVBQW1DLE1BQW5DLENBQWpCLEVBQTZEQSxXQUE3RCxDQUFkOztBQUNBLGNBQUk5RCxNQUFNLENBQUMwQixHQUFYLEVBQWdCO0FBQ2RvQyxZQUFBQSxXQUFXLEdBQUcsK0JBQW1CQSxXQUFuQixFQUFnQzlELE1BQU0sQ0FBQzBCLEdBQVAsQ0FBV0csUUFBM0MsQ0FBZDtBQUNELFdBRkQsTUFFTztBQUNMaUMsWUFBQUEsV0FBVyxHQUFHLCtCQUFtQkEsV0FBbkIsQ0FBZDtBQUNEOztBQUNEL0MsVUFBQUEsSUFBSSxDQUFDK0MsV0FBRCxDQUFKO0FBQ0QsU0F6QkQsTUF5Qk87QUFDTGhELFVBQUFBLEdBQUcsQ0FBQ3FELE1BQUosQ0FBV0MsdUJBQVlDLFNBQXZCO0FBQ0F2RCxVQUFBQSxHQUFHLENBQUN3RCxHQUFKO0FBQ0Q7QUFDRjtBQW5DZ0IsS0FBbkI7QUFxQ0QsR0F4Q0Q7QUF5Q0Q7O2VBRWMxRSxnQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdleHByZXNzJztcbmltcG9ydCB7IENvbmZpZywgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHtcbiAgYWRkU2NvcGUsXG4gIGFkZEdyYXZhdGFyU3VwcG9ydCxcbiAgZGVsZXRlUHJvcGVydGllcyxcbiAgc29ydEJ5TmFtZSxcbiAgcGFyc2VSZWFkbWUsXG4gIGZvcm1hdEF1dGhvcixcbiAgY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMsXG4gIGdldExvY2FsUmVnaXN0cnlUYXJiYWxsVXJpLFxuICBpc1ZlcnNpb25WYWxpZCxcbiAgRXJyb3JDb2RlLFxufSBmcm9tICcuLi8uLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgYWxsb3cgfSBmcm9tICcuLi8uLi9taWRkbGV3YXJlJztcbmltcG9ydCB7IERJU1RfVEFHUywgSEVBREVSX1RZUEUsIEhFQURFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBnZW5lcmF0ZUdyYXZhdGFyVXJsIH0gZnJvbSAnLi4vLi4vLi4vdXRpbHMvdXNlcic7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tICcuLi8uLi8uLi9saWIvbG9nZ2VyJztcbmltcG9ydCB7IElBdXRoLCAkUmVzcG9uc2VFeHRlbmQsICRSZXF1ZXN0RXh0ZW5kLCAkTmV4dEZ1bmN0aW9uVmVyLCBJU3RvcmFnZUhhbmRsZXIsICRTaWRlYmFyUGFja2FnZSB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcblxuY29uc3QgZ2V0T3JkZXIgPSAob3JkZXIgPSAnYXNjJykgPT4ge1xuICByZXR1cm4gb3JkZXIgPT09ICdhc2MnO1xufTtcblxuZXhwb3J0IHR5cGUgUGFja2NhZ2VFeHQgPSBQYWNrYWdlICYgeyBhdXRob3I6IGFueTsgZGlzdD86IHsgdGFyYmFsbDogc3RyaW5nIH0gfTtcblxuZnVuY3Rpb24gYWRkUGFja2FnZVdlYkFwaShyb3V0ZTogUm91dGVyLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGF1dGg6IElBdXRoLCBjb25maWc6IENvbmZpZyk6IHZvaWQge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoKTtcblxuICBjb25zdCBjaGVja0FsbG93ID0gKG5hbWUsIHJlbW90ZVVzZXIpOiBQcm9taXNlPGJvb2xlYW4+ID0+XG4gICAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXV0aC5hbGxvd19hY2Nlc3MoeyBwYWNrYWdlTmFtZTogbmFtZSB9LCByZW1vdGVVc2VyLCAoZXJyLCBhbGxvd2VkKTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgICAgcmVzb2x2ZShmYWxzZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlc29sdmUoYWxsb3dlZCk7XG4gICAgICAgIH0pO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gIC8vIEdldCBsaXN0IG9mIGFsbCB2aXNpYmxlIHBhY2thZ2VcbiAgcm91dGUuZ2V0KCcvcGFja2FnZXMnLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBzdG9yYWdlLmdldExvY2FsRGF0YWJhc2UoYXN5bmMgZnVuY3Rpb24gKGVyciwgcGFja2FnZXMpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuXG4gICAgICBhc3luYyBmdW5jdGlvbiBwcm9jZXNzUGFja2FnZXMocGFja2FnZXM6IFBhY2tjYWdlRXh0W10gPSBbXSk6IFByb21pc2U8YW55PiB7XG4gICAgICAgIGNvbnN0IHBlcm1pc3Npb25zOiBQYWNrY2FnZUV4dFtdID0gW107XG4gICAgICAgIGNvbnN0IHBhY2tnZXNDb3B5ID0gcGFja2FnZXMuc2xpY2UoKTtcbiAgICAgICAgZm9yIChjb25zdCBwa2cgb2YgcGFja2dlc0NvcHkpIHtcbiAgICAgICAgICBjb25zdCBwa2dDb3B5ID0geyAuLi5wa2cgfTtcbiAgICAgICAgICBwa2dDb3B5LmF1dGhvciA9IGZvcm1hdEF1dGhvcihwa2cuYXV0aG9yKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaWYgKGF3YWl0IGNoZWNrQWxsb3cocGtnLm5hbWUsIHJlcS5yZW1vdGVfdXNlcikpIHtcbiAgICAgICAgICAgICAgaWYgKGNvbmZpZy53ZWIpIHtcbiAgICAgICAgICAgICAgICBwa2dDb3B5LmF1dGhvci5hdmF0YXIgPSBnZW5lcmF0ZUdyYXZhdGFyVXJsKHBrZ0NvcHkuYXV0aG9yLmVtYWlsLCBjb25maWcud2ViLmdyYXZhdGFyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBpZiAoIV8uaXNOaWwocGtnQ29weS5kaXN0KSAmJiAhXy5pc051bGwocGtnQ29weS5kaXN0LnRhcmJhbGwpKSB7XG4gICAgICAgICAgICAgICAgcGtnQ29weS5kaXN0LnRhcmJhbGwgPSBnZXRMb2NhbFJlZ2lzdHJ5VGFyYmFsbFVyaShwa2dDb3B5LmRpc3QudGFyYmFsbCwgcGtnLm5hbWUsIHJlcSwgY29uZmlnLnVybF9wcmVmaXgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIHBlcm1pc3Npb25zLnB1c2gocGtnQ29weSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBsb2dnZXIuZXJyb3IoeyBuYW1lOiBwa2cubmFtZSwgZXJyb3I6IGVyciB9LCAncGVybWlzc2lvbiBwcm9jZXNzIGZvciBAe25hbWV9IGhhcyBmYWlsZWQ6IEB7ZXJyb3J9Jyk7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25zO1xuICAgICAgfVxuXG4gICAgICBjb25zdCB7IHdlYiB9ID0gY29uZmlnO1xuICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgY29uc3Qgb3JkZXI6IGJvb2xlYW4gPSBjb25maWcud2ViID8gZ2V0T3JkZXIod2ViLnNvcnRfcGFja2FnZXMpIDogdHJ1ZTtcblxuICAgICAgdHJ5IHtcbiAgICAgICAgbmV4dChzb3J0QnlOYW1lKGF3YWl0IHByb2Nlc3NQYWNrYWdlcyhwYWNrYWdlcyksIG9yZGVyKSk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBuZXh0KEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKCkpO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcblxuICAvLyBHZXQgcGFja2FnZSByZWFkbWVcbiAgcm91dGUuZ2V0KCcvcGFja2FnZS9yZWFkbWUvKEA6c2NvcGUvKT86cGFja2FnZS86dmVyc2lvbj8nLCBjYW4oJ2FjY2VzcycpLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMuc2NvcGUgPyBhZGRTY29wZShyZXEucGFyYW1zLnNjb3BlLCByZXEucGFyYW1zLnBhY2thZ2UpIDogcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgIG5hbWU6IHBhY2thZ2VOYW1lLFxuICAgICAgdXBsaW5rc0xvb2s6IHRydWUsXG4gICAgICByZXEsXG4gICAgICBjYWxsYmFjazogZnVuY3Rpb24gKGVyciwgaW5mbyk6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5zZXQoSEVBREVSX1RZUEUuQ09OVEVOVF9UWVBFLCBIRUFERVJTLlRFWFRfUExBSU4pO1xuICAgICAgICBjb25zdCByZWZlcmVyID0gcmVxLmdldCgnUmVmZXJlcicpO1xuICAgICAgICBjb25zdCBwYXRobmFtZSA9IHJlZmVyZXIgPyAobmV3IFVSTChyZWZlcmVyKSkucGF0aG5hbWUgOiB1bmRlZmluZWQ7XG4gICAgICAgIG5leHQocGFyc2VSZWFkbWUoaW5mby5uYW1lLCBpbmZvLnJlYWRtZSwge3BhdGhuYW1lfSkpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcm91dGUuZ2V0KCcvc2lkZWJhci8oQDpzY29wZS8pPzpwYWNrYWdlJywgY2FuKCdhY2Nlc3MnKSwgZnVuY3Rpb24gKHJlcTogJFJlcXVlc3RFeHRlbmQsIHJlczogJFJlc3BvbnNlRXh0ZW5kLCBuZXh0OiAkTmV4dEZ1bmN0aW9uVmVyKTogdm9pZCB7XG4gICAgY29uc3QgcGFja2FnZU5hbWU6IHN0cmluZyA9IHJlcS5wYXJhbXMuc2NvcGUgPyBhZGRTY29wZShyZXEucGFyYW1zLnNjb3BlLCByZXEucGFyYW1zLnBhY2thZ2UpIDogcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgIG5hbWU6IHBhY2thZ2VOYW1lLFxuICAgICAgdXBsaW5rc0xvb2s6IHRydWUsXG4gICAgICBrZWVwVXBMaW5rRGF0YTogdHJ1ZSxcbiAgICAgIHJlcSxcbiAgICAgIGNhbGxiYWNrOiBmdW5jdGlvbiAoZXJyOiBFcnJvciwgaW5mbzogJFNpZGViYXJQYWNrYWdlKTogdm9pZCB7XG4gICAgICAgIGlmIChfLmlzTmlsKGVycikpIHtcbiAgICAgICAgICBjb25zdCB7IHYgfSA9IHJlcS5xdWVyeTtcbiAgICAgICAgICBsZXQgc2lkZUJhckluZm86IGFueSA9IF8uY2xvbmUoaW5mbyk7XG4gICAgICAgICAgc2lkZUJhckluZm8udmVyc2lvbnMgPSBjb252ZXJ0RGlzdFJlbW90ZVRvTG9jYWxUYXJiYWxsVXJscyhpbmZvLCByZXEsIGNvbmZpZy51cmxfcHJlZml4KS52ZXJzaW9ucztcbiAgICAgICAgICBpZiAoaXNWZXJzaW9uVmFsaWQoaW5mbywgdikpIHtcbiAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgIHNpZGVCYXJJbmZvLmxhdGVzdCA9IHNpZGVCYXJJbmZvLnZlcnNpb25zW3ZdO1xuICAgICAgICAgICAgc2lkZUJhckluZm8ubGF0ZXN0LmF1dGhvciA9IGZvcm1hdEF1dGhvcihzaWRlQmFySW5mby5sYXRlc3QuYXV0aG9yKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2lkZUJhckluZm8ubGF0ZXN0ID0gc2lkZUJhckluZm8udmVyc2lvbnNbaW5mb1tESVNUX1RBR1NdLmxhdGVzdF07XG4gICAgICAgICAgICBpZiAoc2lkZUJhckluZm8/LmxhdGVzdCkge1xuICAgICAgICAgICAgICBzaWRlQmFySW5mby5sYXRlc3QuYXV0aG9yID0gZm9ybWF0QXV0aG9yKHNpZGVCYXJJbmZvLmxhdGVzdC5hdXRob3IpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpO1xuICAgICAgICAgICAgICByZXMuZW5kKCk7XG4gICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgc2lkZUJhckluZm8gPSBkZWxldGVQcm9wZXJ0aWVzKFsncmVhZG1lJywgJ19hdHRhY2htZW50cycsICdfcmV2JywgJ25hbWUnXSwgc2lkZUJhckluZm8pO1xuICAgICAgICAgIGlmIChjb25maWcud2ViKSB7XG4gICAgICAgICAgICBzaWRlQmFySW5mbyA9IGFkZEdyYXZhdGFyU3VwcG9ydChzaWRlQmFySW5mbywgY29uZmlnLndlYi5ncmF2YXRhcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZGVCYXJJbmZvID0gYWRkR3JhdmF0YXJTdXBwb3J0KHNpZGVCYXJJbmZvKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgbmV4dChzaWRlQmFySW5mbyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5OT1RfRk9VTkQpO1xuICAgICAgICAgIHJlcy5lbmQoKTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFkZFBhY2thZ2VXZWJBcGk7XG4iXX0=
186
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvd2ViL2VuZHBvaW50L3BhY2thZ2UudHMiXSwibmFtZXMiOlsiZ2V0T3JkZXIiLCJvcmRlciIsImFkZFBhY2thZ2VXZWJBcGkiLCJzdG9yYWdlIiwiYXV0aCIsImNvbmZpZyIsImNhbiIsInBrZ1JvdXRlciIsImNoZWNrQWxsb3ciLCJuYW1lIiwicmVtb3RlVXNlciIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiYWxsb3dfYWNjZXNzIiwicGFja2FnZU5hbWUiLCJlcnIiLCJhbGxvd2VkIiwiZ2V0IiwicmVxIiwicmVzIiwibmV4dCIsImdldExvY2FsRGF0YWJhc2UiLCJwYWNrYWdlcyIsInByb2Nlc3NQYWNrYWdlcyIsInBlcm1pc3Npb25zIiwicGFja2dlc0NvcHkiLCJzbGljZSIsInBrZyIsInBrZ0NvcHkiLCJhdXRob3IiLCJyZW1vdGVfdXNlciIsIndlYiIsImF2YXRhciIsImVtYWlsIiwiZ3JhdmF0YXIiLCJfIiwiaXNOaWwiLCJkaXN0IiwiaXNOdWxsIiwidGFyYmFsbCIsInVybF9wcmVmaXgiLCJwdXNoIiwibG9nZ2VyIiwiZXJyb3IiLCJzb3J0X3BhY2thZ2VzIiwiRXJyb3JDb2RlIiwiZ2V0SW50ZXJuYWxFcnJvciIsInBhcmFtcyIsInNjb3BlIiwicGFja2FnZSIsImdldFBhY2thZ2UiLCJ1cGxpbmtzTG9vayIsImNhbGxiYWNrIiwiaW5mbyIsInNldCIsIkhFQURFUl9UWVBFIiwiQ09OVEVOVF9UWVBFIiwiSEVBREVSUyIsIlRFWFRfUExBSU4iLCJyZWZlcmVyIiwicGF0aG5hbWUiLCJVUkwiLCJ1bmRlZmluZWQiLCJyZWFkbWUiLCJrZWVwVXBMaW5rRGF0YSIsInYiLCJxdWVyeSIsInNpZGVCYXJJbmZvIiwiY2xvbmUiLCJ2ZXJzaW9ucyIsImxhdGVzdCIsIkRJU1RfVEFHUyIsInN0YXR1cyIsIkhUVFBfU1RBVFVTIiwiTk9UX0ZPVU5EIiwiZW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7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Q0Q7QUFDRjs7QUFDRFIsVUFBQUEsV0FBVyxHQUFHLDZCQUFpQixDQUFDLFFBQUQsRUFBVyxjQUFYLEVBQTJCLE1BQTNCLEVBQW1DLE1BQW5DLENBQWpCLEVBQTZEQSxXQUE3RCxDQUFkOztBQUNBLGNBQUkvRCxNQUFNLENBQUMyQixHQUFYLEVBQWdCO0FBQ2RvQyxZQUFBQSxXQUFXLEdBQUcsK0JBQW1CQSxXQUFuQixFQUFnQy9ELE1BQU0sQ0FBQzJCLEdBQVAsQ0FBV0csUUFBM0MsQ0FBZDtBQUNELFdBRkQsTUFFTztBQUNMaUMsWUFBQUEsV0FBVyxHQUFHLCtCQUFtQkEsV0FBbkIsQ0FBZDtBQUNEOztBQUNEL0MsVUFBQUEsSUFBSSxDQUFDK0MsV0FBRCxDQUFKO0FBQ0QsU0F6QkQsTUF5Qk87QUFDTGhELFVBQUFBLEdBQUcsQ0FBQ3FELE1BQUosQ0FBV0MsdUJBQVlDLFNBQXZCO0FBQ0F2RCxVQUFBQSxHQUFHLENBQUN3RCxHQUFKO0FBQ0Q7QUFDRjtBQW5DZ0IsS0FBbkI7QUFxQ0QsR0F4Q0Q7QUEwQ0EsU0FBT3JFLFNBQVA7QUFDRDs7ZUFFY0wsZ0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBDb25maWcsIFBhY2thZ2UgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7XG4gIGFkZFNjb3BlLFxuICBhZGRHcmF2YXRhclN1cHBvcnQsXG4gIGRlbGV0ZVByb3BlcnRpZXMsXG4gIHNvcnRCeU5hbWUsXG4gIHBhcnNlUmVhZG1lLFxuICBmb3JtYXRBdXRob3IsXG4gIGNvbnZlcnREaXN0UmVtb3RlVG9Mb2NhbFRhcmJhbGxVcmxzLFxuICBnZXRMb2NhbFJlZ2lzdHJ5VGFyYmFsbFVyaSxcbiAgaXNWZXJzaW9uVmFsaWQsXG4gIEVycm9yQ29kZSxcbn0gZnJvbSAnLi4vLi4vLi4vbGliL3V0aWxzJztcbmltcG9ydCB7IGFsbG93IH0gZnJvbSAnLi4vLi4vbWlkZGxld2FyZSc7XG5pbXBvcnQgeyBESVNUX1RBR1MsIEhFQURFUl9UWVBFLCBIRUFERVJTLCBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVHcmF2YXRhclVybCB9IGZyb20gJy4uLy4uLy4uL3V0aWxzL3VzZXInO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgeyBJQXV0aCwgJFJlc3BvbnNlRXh0ZW5kLCAkUmVxdWVzdEV4dGVuZCwgJE5leHRGdW5jdGlvblZlciwgSVN0b3JhZ2VIYW5kbGVyLCAkU2lkZWJhclBhY2thZ2UgfSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcyc7XG5cbmNvbnN0IGdldE9yZGVyID0gKG9yZGVyID0gJ2FzYycpID0+IHtcbiAgcmV0dXJuIG9yZGVyID09PSAnYXNjJztcbn07XG5cbmV4cG9ydCB0eXBlIFBhY2tjYWdlRXh0ID0gUGFja2FnZSAmIHsgYXV0aG9yOiBhbnk7IGRpc3Q/OiB7IHRhcmJhbGw6IHN0cmluZyB9IH07XG5cbmZ1bmN0aW9uIGFkZFBhY2thZ2VXZWJBcGkoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLCBhdXRoOiBJQXV0aCwgY29uZmlnOiBDb25maWcpOiBSb3V0ZXIge1xuICBjb25zdCBjYW4gPSBhbGxvdyhhdXRoKTtcbiAgY29uc3QgcGtnUm91dGVyID0gUm91dGVyKCk7IC8qIGVzbGludCBuZXctY2FwOiAwICovXG5cbiAgY29uc3QgY2hlY2tBbGxvdyA9IChuYW1lLCByZW1vdGVVc2VyKTogUHJvbWlzZTxib29sZWFuPiA9PlxuICAgIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpOiB2b2lkID0+IHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF1dGguYWxsb3dfYWNjZXNzKHsgcGFja2FnZU5hbWU6IG5hbWUgfSwgcmVtb3RlVXNlciwgKGVyciwgYWxsb3dlZCk6IHZvaWQgPT4ge1xuICAgICAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgICAgIHJlc29sdmUoZmFsc2UpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXNvbHZlKGFsbG93ZWQpO1xuICAgICAgICB9KTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAvLyBHZXQgbGlzdCBvZiBhbGwgdmlzaWJsZSBwYWNrYWdlXG4gIHBrZ1JvdXRlci5nZXQoJy9wYWNrYWdlcycsIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIHN0b3JhZ2UuZ2V0TG9jYWxEYXRhYmFzZShhc3luYyBmdW5jdGlvbiAoZXJyLCBwYWNrYWdlcyk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG5cbiAgICAgIGFzeW5jIGZ1bmN0aW9uIHByb2Nlc3NQYWNrYWdlcyhwYWNrYWdlczogUGFja2NhZ2VFeHRbXSA9IFtdKTogUHJvbWlzZTxhbnk+IHtcbiAgICAgICAgY29uc3QgcGVybWlzc2lvbnM6IFBhY2tjYWdlRXh0W10gPSBbXTtcbiAgICAgICAgY29uc3QgcGFja2dlc0NvcHkgPSBwYWNrYWdlcy5zbGljZSgpO1xuICAgICAgICBmb3IgKGNvbnN0IHBrZyBvZiBwYWNrZ2VzQ29weSkge1xuICAgICAgICAgIGNvbnN0IHBrZ0NvcHkgPSB7IC4uLnBrZyB9O1xuICAgICAgICAgIHBrZ0NvcHkuYXV0aG9yID0gZm9ybWF0QXV0aG9yKHBrZy5hdXRob3IpO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpZiAoYXdhaXQgY2hlY2tBbGxvdyhwa2cubmFtZSwgcmVxLnJlbW90ZV91c2VyKSkge1xuICAgICAgICAgICAgICBpZiAoY29uZmlnLndlYikge1xuICAgICAgICAgICAgICAgIHBrZ0NvcHkuYXV0aG9yLmF2YXRhciA9IGdlbmVyYXRlR3JhdmF0YXJVcmwocGtnQ29weS5hdXRob3IuZW1haWwsIGNvbmZpZy53ZWIuZ3JhdmF0YXIpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGlmICghXy5pc05pbChwa2dDb3B5LmRpc3QpICYmICFfLmlzTnVsbChwa2dDb3B5LmRpc3QudGFyYmFsbCkpIHtcbiAgICAgICAgICAgICAgICBwa2dDb3B5LmRpc3QudGFyYmFsbCA9IGdldExvY2FsUmVnaXN0cnlUYXJiYWxsVXJpKHBrZ0NvcHkuZGlzdC50YXJiYWxsLCBwa2cubmFtZSwgcmVxLCBjb25maWcudXJsX3ByZWZpeCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgcGVybWlzc2lvbnMucHVzaChwa2dDb3B5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICAgIGxvZ2dlci5lcnJvcih7IG5hbWU6IHBrZy5uYW1lLCBlcnJvcjogZXJyIH0sICdwZXJtaXNzaW9uIHByb2Nlc3MgZm9yIEB7bmFtZX0gaGFzIGZhaWxlZDogQHtlcnJvcn0nKTtcbiAgICAgICAgICAgIHRocm93IGVycjtcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbnM7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgd2ViIH0gPSBjb25maWc7XG4gICAgICAvLyBAdHMtaWdub3JlXG4gICAgICBjb25zdCBvcmRlcjogYm9vbGVhbiA9IGNvbmZpZy53ZWIgPyBnZXRPcmRlcih3ZWIuc29ydF9wYWNrYWdlcykgOiB0cnVlO1xuXG4gICAgICB0cnkge1xuICAgICAgICBuZXh0KHNvcnRCeU5hbWUoYXdhaXQgcHJvY2Vzc1BhY2thZ2VzKHBhY2thZ2VzKSwgb3JkZXIpKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIG5leHQoRXJyb3JDb2RlLmdldEludGVybmFsRXJyb3IoKSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIC8vIEdldCBwYWNrYWdlIHJlYWRtZVxuICBwa2dSb3V0ZXIuZ2V0KCcvcGFja2FnZS9yZWFkbWUvKEA6c2NvcGUvKT86cGFja2FnZS86dmVyc2lvbj8nLCBjYW4oJ2FjY2VzcycpLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCBwYWNrYWdlTmFtZSA9IHJlcS5wYXJhbXMuc2NvcGUgPyBhZGRTY29wZShyZXEucGFyYW1zLnNjb3BlLCByZXEucGFyYW1zLnBhY2thZ2UpIDogcmVxLnBhcmFtcy5wYWNrYWdlO1xuXG4gICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgIG5hbWU6IHBhY2thZ2VOYW1lLFxuICAgICAgdXBsaW5rc0xvb2s6IHRydWUsXG4gICAgICByZXEsXG4gICAgICBjYWxsYmFjazogZnVuY3Rpb24gKGVyciwgaW5mbyk6IHZvaWQge1xuICAgICAgICBpZiAoZXJyKSB7XG4gICAgICAgICAgcmV0dXJuIG5leHQoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlcy5zZXQoSEVBREVSX1RZUEUuQ09OVEVOVF9UWVBFLCBIRUFERVJTLlRFWFRfUExBSU4pO1xuICAgICAgICBjb25zdCByZWZlcmVyID0gcmVxLmdldCgnUmVmZXJlcicpO1xuICAgICAgICBjb25zdCBwYXRobmFtZSA9IHJlZmVyZXIgPyBuZXcgVVJMKHJlZmVyZXIpLnBhdGhuYW1lIDogdW5kZWZpbmVkO1xuICAgICAgICBuZXh0KHBhcnNlUmVhZG1lKGluZm8ubmFtZSwgaW5mby5yZWFkbWUsIHsgcGF0aG5hbWUgfSkpO1xuICAgICAgfSxcbiAgICB9KTtcbiAgfSk7XG5cbiAgcGtnUm91dGVyLmdldCgnL3NpZGViYXIvKEA6c2NvcGUvKT86cGFja2FnZScsIGNhbignYWNjZXNzJyksIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHBhY2thZ2VOYW1lOiBzdHJpbmcgPSByZXEucGFyYW1zLnNjb3BlID8gYWRkU2NvcGUocmVxLnBhcmFtcy5zY29wZSwgcmVxLnBhcmFtcy5wYWNrYWdlKSA6IHJlcS5wYXJhbXMucGFja2FnZTtcblxuICAgIHN0b3JhZ2UuZ2V0UGFja2FnZSh7XG4gICAgICBuYW1lOiBwYWNrYWdlTmFtZSxcbiAgICAgIHVwbGlua3NMb29rOiB0cnVlLFxuICAgICAga2VlcFVwTGlua0RhdGE6IHRydWUsXG4gICAgICByZXEsXG4gICAgICBjYWxsYmFjazogZnVuY3Rpb24gKGVycjogRXJyb3IsIGluZm86ICRTaWRlYmFyUGFja2FnZSk6IHZvaWQge1xuICAgICAgICBpZiAoXy5pc05pbChlcnIpKSB7XG4gICAgICAgICAgY29uc3QgeyB2IH0gPSByZXEucXVlcnk7XG4gICAgICAgICAgbGV0IHNpZGVCYXJJbmZvOiBhbnkgPSBfLmNsb25lKGluZm8pO1xuICAgICAgICAgIHNpZGVCYXJJbmZvLnZlcnNpb25zID0gY29udmVydERpc3RSZW1vdGVUb0xvY2FsVGFyYmFsbFVybHMoaW5mbywgcmVxLCBjb25maWcudXJsX3ByZWZpeCkudmVyc2lvbnM7XG4gICAgICAgICAgaWYgKGlzVmVyc2lvblZhbGlkKGluZm8sIHYpKSB7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICBzaWRlQmFySW5mby5sYXRlc3QgPSBzaWRlQmFySW5mby52ZXJzaW9uc1t2XTtcbiAgICAgICAgICAgIHNpZGVCYXJJbmZvLmxhdGVzdC5hdXRob3IgPSBmb3JtYXRBdXRob3Ioc2lkZUJhckluZm8ubGF0ZXN0LmF1dGhvcik7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNpZGVCYXJJbmZvLmxhdGVzdCA9IHNpZGVCYXJJbmZvLnZlcnNpb25zW2luZm9bRElTVF9UQUdTXS5sYXRlc3RdO1xuICAgICAgICAgICAgaWYgKHNpZGVCYXJJbmZvPy5sYXRlc3QpIHtcbiAgICAgICAgICAgICAgc2lkZUJhckluZm8ubGF0ZXN0LmF1dGhvciA9IGZvcm1hdEF1dGhvcihzaWRlQmFySW5mby5sYXRlc3QuYXV0aG9yKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKTtcbiAgICAgICAgICAgICAgcmVzLmVuZCgpO1xuICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIHNpZGVCYXJJbmZvID0gZGVsZXRlUHJvcGVydGllcyhbJ3JlYWRtZScsICdfYXR0YWNobWVudHMnLCAnX3JldicsICduYW1lJ10sIHNpZGVCYXJJbmZvKTtcbiAgICAgICAgICBpZiAoY29uZmlnLndlYikge1xuICAgICAgICAgICAgc2lkZUJhckluZm8gPSBhZGRHcmF2YXRhclN1cHBvcnQoc2lkZUJhckluZm8sIGNvbmZpZy53ZWIuZ3JhdmF0YXIpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzaWRlQmFySW5mbyA9IGFkZEdyYXZhdGFyU3VwcG9ydChzaWRlQmFySW5mbyk7XG4gICAgICAgICAgfVxuICAgICAgICAgIG5leHQoc2lkZUJhckluZm8pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlcy5zdGF0dXMoSFRUUF9TVEFUVVMuTk9UX0ZPVU5EKTtcbiAgICAgICAgICByZXMuZW5kKCk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfSk7XG4gIH0pO1xuXG4gIHJldHVybiBwa2dSb3V0ZXI7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFkZFBhY2thZ2VXZWJBcGk7XG4iXX0=
@@ -5,6 +5,8 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.default = void 0;
7
7
 
8
+ var _express = require("express");
9
+
8
10
  var _search = _interopRequireDefault(require("../../../lib/search"));
9
11
 
10
12
  var _constants = require("../../../lib/constants");
@@ -15,8 +17,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
15
17
  * @prettier
16
18
  * @flow
17
19
  */
18
- function addSearchWebApi(route, storage, auth) {
20
+ function addSearchWebApi(storage, auth) {
21
+ const route = (0, _express.Router)();
22
+ /* eslint new-cap: 0 */
19
23
  // Search package
24
+
20
25
  route.get('/search/:anything', function (req, res, next) {
21
26
  const results = _search.default.query(req.params.anything); // FUTURE: figure out here the correct type
22
27
 
@@ -55,8 +60,9 @@ function addSearchWebApi(route, storage, auth) {
55
60
  next([]);
56
61
  }
57
62
  });
63
+ return route;
58
64
  }
59
65
 
60
66
  var _default = addSearchWebApi;
61
67
  exports.default = _default;
62
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvd2ViL2VuZHBvaW50L3NlYXJjaC50cyJdLCJuYW1lcyI6WyJhZGRTZWFyY2hXZWJBcGkiLCJyb3V0ZSIsInN0b3JhZ2UiLCJhdXRoIiwiZ2V0IiwicmVxIiwicmVzIiwibmV4dCIsInJlc3VsdHMiLCJTZWFyY2giLCJxdWVyeSIsInBhcmFtcyIsImFueXRoaW5nIiwicGFja2FnZXMiLCJnZXRQYWNrYWdlSW5mbyIsImkiLCJnZXRQYWNrYWdlIiwibmFtZSIsInJlZiIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJlcnIiLCJlbnRyeSIsImFsbG93X2FjY2VzcyIsInBhY2thZ2VOYW1lIiwicmVtb3RlX3VzZXIiLCJhbGxvd2VkIiwicHVzaCIsInZlcnNpb25zIiwiRElTVF9UQUdTIiwibGF0ZXN0IiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBT0E7O0FBQ0E7Ozs7QUFSQTtBQUNBO0FBQ0E7QUFDQTtBQWNBLFNBQVNBLGVBQVQsQ0FBeUJDLEtBQXpCLEVBQXdDQyxPQUF4QyxFQUFrRUMsSUFBbEUsRUFBcUY7QUFDbkY7QUFDQUYsRUFBQUEsS0FBSyxDQUFDRyxHQUFOLENBQ0UsbUJBREYsRUFFRSxVQUFVQyxHQUFWLEVBQStCQyxHQUEvQixFQUFxREMsSUFBckQsRUFBbUY7QUFDakYsVUFBTUMsT0FBWSxHQUFHQyxnQkFBT0MsS0FBUCxDQUFhTCxHQUFHLENBQUNNLE1BQUosQ0FBV0MsUUFBeEIsQ0FBckIsQ0FEaUYsQ0FFakY7OztBQUNBLFVBQU1DLFFBQWUsR0FBRyxFQUF4Qjs7QUFFQSxVQUFNQyxjQUFjLEdBQUcsVUFBVUMsQ0FBVixFQUFtQjtBQUN4Q2IsTUFBQUEsT0FBTyxDQUFDYyxVQUFSLENBQW1CO0FBQ2pCQyxRQUFBQSxJQUFJLEVBQUVULE9BQU8sQ0FBQ08sQ0FBRCxDQUFQLENBQVdHLEdBREE7QUFFakJDLFFBQUFBLFdBQVcsRUFBRSxLQUZJO0FBR2pCQyxRQUFBQSxRQUFRLEVBQUUsQ0FBQ0MsR0FBRCxFQUFNQyxLQUFOLEtBQStCO0FBQ3ZDLGNBQUksQ0FBQ0QsR0FBRCxJQUFRQyxLQUFaLEVBQW1CO0FBQ2pCbkIsWUFBQUEsSUFBSSxDQUFDb0IsWUFBTCxDQUNFO0FBQUVDLGNBQUFBLFdBQVcsRUFBRUYsS0FBSyxDQUFDTDtBQUFyQixhQURGLEVBRUVaLEdBQUcsQ0FBQ29CLFdBRk4sRUFHRSxVQUFVSixHQUFWLEVBQWVLLE9BQWYsRUFBOEI7QUFDNUIsa0JBQUlMLEdBQUcsSUFBSSxDQUFDSyxPQUFaLEVBQXFCO0FBQ25CO0FBQ0Q7O0FBRURiLGNBQUFBLFFBQVEsQ0FBQ2MsSUFBVCxDQUFjTCxLQUFLLENBQUNNLFFBQU4sQ0FBZU4sS0FBSyxDQUFDTyxvQkFBRCxDQUFMLENBQWlCQyxNQUFoQyxDQUFkO0FBQ0QsYUFUSDtBQVdEOztBQUVELGNBQUlmLENBQUMsSUFBSVAsT0FBTyxDQUFDdUIsTUFBUixHQUFpQixDQUExQixFQUE2QjtBQUMzQnhCLFlBQUFBLElBQUksQ0FBQ00sUUFBRCxDQUFKO0FBQ0QsV0FGRCxNQUVPO0FBQ0xDLFlBQUFBLGNBQWMsQ0FBQ0MsQ0FBQyxHQUFHLENBQUwsQ0FBZDtBQUNEO0FBQ0Y7QUF2QmdCLE9BQW5CO0FBeUJELEtBMUJEOztBQTRCQSxRQUFJUCxPQUFPLENBQUN1QixNQUFaLEVBQW9CO0FBQ2xCakIsTUFBQUEsY0FBYyxDQUFDLENBQUQsQ0FBZDtBQUNELEtBRkQsTUFFTztBQUNMUCxNQUFBQSxJQUFJLENBQUMsRUFBRCxDQUFKO0FBQ0Q7QUFDRixHQXhDSDtBQTBDRDs7ZUFFY1AsZSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQHByZXR0aWVyXG4gKiBAZmxvd1xuICovXG5cbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgUGFja2FnZSB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IFNlYXJjaCBmcm9tICcuLi8uLi8uLi9saWIvc2VhcmNoJztcbmltcG9ydCB7IERJU1RfVEFHUyB9IGZyb20gJy4uLy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IHtcbiAgSUF1dGgsXG4gICRSZXNwb25zZUV4dGVuZCxcbiAgJFJlcXVlc3RFeHRlbmQsXG4gICROZXh0RnVuY3Rpb25WZXIsXG4gIElTdG9yYWdlSGFuZGxlclxufSBmcm9tICcuLi8uLi8uLi8uLi90eXBlcyc7XG5cbmZ1bmN0aW9uIGFkZFNlYXJjaFdlYkFwaShyb3V0ZTogUm91dGVyLCBzdG9yYWdlOiBJU3RvcmFnZUhhbmRsZXIsIGF1dGg6IElBdXRoKTogdm9pZCB7XG4gIC8vIFNlYXJjaCBwYWNrYWdlXG4gIHJvdXRlLmdldChcbiAgICAnL3NlYXJjaC86YW55dGhpbmcnLFxuICAgIGZ1bmN0aW9uIChyZXE6ICRSZXF1ZXN0RXh0ZW5kLCByZXM6ICRSZXNwb25zZUV4dGVuZCwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgICAgY29uc3QgcmVzdWx0czogYW55ID0gU2VhcmNoLnF1ZXJ5KHJlcS5wYXJhbXMuYW55dGhpbmcpO1xuICAgICAgLy8gRlVUVVJFOiBmaWd1cmUgb3V0IGhlcmUgdGhlIGNvcnJlY3QgdHlwZVxuICAgICAgY29uc3QgcGFja2FnZXM6IGFueVtdID0gW107XG5cbiAgICAgIGNvbnN0IGdldFBhY2thZ2VJbmZvID0gZnVuY3Rpb24gKGkpOiB2b2lkIHtcbiAgICAgICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgICAgICBuYW1lOiByZXN1bHRzW2ldLnJlZixcbiAgICAgICAgICB1cGxpbmtzTG9vazogZmFsc2UsXG4gICAgICAgICAgY2FsbGJhY2s6IChlcnIsIGVudHJ5OiBQYWNrYWdlKTogdm9pZCA9PiB7XG4gICAgICAgICAgICBpZiAoIWVyciAmJiBlbnRyeSkge1xuICAgICAgICAgICAgICBhdXRoLmFsbG93X2FjY2VzcyhcbiAgICAgICAgICAgICAgICB7IHBhY2thZ2VOYW1lOiBlbnRyeS5uYW1lIH0sXG4gICAgICAgICAgICAgICAgcmVxLnJlbW90ZV91c2VyLFxuICAgICAgICAgICAgICAgIGZ1bmN0aW9uIChlcnIsIGFsbG93ZWQpOiB2b2lkIHtcbiAgICAgICAgICAgICAgICAgIGlmIChlcnIgfHwgIWFsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICBwYWNrYWdlcy5wdXNoKGVudHJ5LnZlcnNpb25zW2VudHJ5W0RJU1RfVEFHU10ubGF0ZXN0XSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoaSA+PSByZXN1bHRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgbmV4dChwYWNrYWdlcyk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBnZXRQYWNrYWdlSW5mbyhpICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH07XG5cbiAgICAgIGlmIChyZXN1bHRzLmxlbmd0aCkge1xuICAgICAgICBnZXRQYWNrYWdlSW5mbygwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHQoW10pO1xuICAgICAgfVxuICAgIH1cbiAgKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYWRkU2VhcmNoV2ViQXBpO1xuIl19
68
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvd2ViL2VuZHBvaW50L3NlYXJjaC50cyJdLCJuYW1lcyI6WyJhZGRTZWFyY2hXZWJBcGkiLCJzdG9yYWdlIiwiYXV0aCIsInJvdXRlIiwiZ2V0IiwicmVxIiwicmVzIiwibmV4dCIsInJlc3VsdHMiLCJTZWFyY2giLCJxdWVyeSIsInBhcmFtcyIsImFueXRoaW5nIiwicGFja2FnZXMiLCJnZXRQYWNrYWdlSW5mbyIsImkiLCJnZXRQYWNrYWdlIiwibmFtZSIsInJlZiIsInVwbGlua3NMb29rIiwiY2FsbGJhY2siLCJlcnIiLCJlbnRyeSIsImFsbG93X2FjY2VzcyIsInBhY2thZ2VOYW1lIiwicmVtb3RlX3VzZXIiLCJhbGxvd2VkIiwicHVzaCIsInZlcnNpb25zIiwiRElTVF9UQUdTIiwibGF0ZXN0IiwibGVuZ3RoIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBS0E7O0FBRUE7O0FBQ0E7Ozs7QUFSQTtBQUNBO0FBQ0E7QUFDQTtBQVFBLFNBQVNBLGVBQVQsQ0FBeUJDLE9BQXpCLEVBQW1EQyxJQUFuRCxFQUF3RTtBQUN0RSxRQUFNQyxLQUFLLEdBQUcsc0JBQWQ7QUFBd0I7QUFDeEI7O0FBQ0FBLEVBQUFBLEtBQUssQ0FBQ0MsR0FBTixDQUFVLG1CQUFWLEVBQStCLFVBQVVDLEdBQVYsRUFBK0JDLEdBQS9CLEVBQXFEQyxJQUFyRCxFQUFtRjtBQUNoSCxVQUFNQyxPQUFZLEdBQUdDLGdCQUFPQyxLQUFQLENBQWFMLEdBQUcsQ0FBQ00sTUFBSixDQUFXQyxRQUF4QixDQUFyQixDQURnSCxDQUVoSDs7O0FBQ0EsVUFBTUMsUUFBZSxHQUFHLEVBQXhCOztBQUVBLFVBQU1DLGNBQWMsR0FBRyxVQUFVQyxDQUFWLEVBQW1CO0FBQ3hDZCxNQUFBQSxPQUFPLENBQUNlLFVBQVIsQ0FBbUI7QUFDakJDLFFBQUFBLElBQUksRUFBRVQsT0FBTyxDQUFDTyxDQUFELENBQVAsQ0FBV0csR0FEQTtBQUVqQkMsUUFBQUEsV0FBVyxFQUFFLEtBRkk7QUFHakJDLFFBQUFBLFFBQVEsRUFBRSxDQUFDQyxHQUFELEVBQU1DLEtBQU4sS0FBK0I7QUFDdkMsY0FBSSxDQUFDRCxHQUFELElBQVFDLEtBQVosRUFBbUI7QUFDakJwQixZQUFBQSxJQUFJLENBQUNxQixZQUFMLENBQWtCO0FBQUVDLGNBQUFBLFdBQVcsRUFBRUYsS0FBSyxDQUFDTDtBQUFyQixhQUFsQixFQUErQ1osR0FBRyxDQUFDb0IsV0FBbkQsRUFBZ0UsVUFBVUosR0FBVixFQUFlSyxPQUFmLEVBQThCO0FBQzVGLGtCQUFJTCxHQUFHLElBQUksQ0FBQ0ssT0FBWixFQUFxQjtBQUNuQjtBQUNEOztBQUVEYixjQUFBQSxRQUFRLENBQUNjLElBQVQsQ0FBY0wsS0FBSyxDQUFDTSxRQUFOLENBQWVOLEtBQUssQ0FBQ08sb0JBQUQsQ0FBTCxDQUFpQkMsTUFBaEMsQ0FBZDtBQUNELGFBTkQ7QUFPRDs7QUFFRCxjQUFJZixDQUFDLElBQUlQLE9BQU8sQ0FBQ3VCLE1BQVIsR0FBaUIsQ0FBMUIsRUFBNkI7QUFDM0J4QixZQUFBQSxJQUFJLENBQUNNLFFBQUQsQ0FBSjtBQUNELFdBRkQsTUFFTztBQUNMQyxZQUFBQSxjQUFjLENBQUNDLENBQUMsR0FBRyxDQUFMLENBQWQ7QUFDRDtBQUNGO0FBbkJnQixPQUFuQjtBQXFCRCxLQXRCRDs7QUF3QkEsUUFBSVAsT0FBTyxDQUFDdUIsTUFBWixFQUFvQjtBQUNsQmpCLE1BQUFBLGNBQWMsQ0FBQyxDQUFELENBQWQ7QUFDRCxLQUZELE1BRU87QUFDTFAsTUFBQUEsSUFBSSxDQUFDLEVBQUQsQ0FBSjtBQUNEO0FBQ0YsR0FsQ0Q7QUFvQ0EsU0FBT0osS0FBUDtBQUNEOztlQUVjSCxlIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqIEBmbG93XG4gKi9cblxuaW1wb3J0IHsgUm91dGVyIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgeyBQYWNrYWdlIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5pbXBvcnQgU2VhcmNoIGZyb20gJy4uLy4uLy4uL2xpYi9zZWFyY2gnO1xuaW1wb3J0IHsgRElTVF9UQUdTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJQXV0aCwgJFJlc3BvbnNlRXh0ZW5kLCAkUmVxdWVzdEV4dGVuZCwgJE5leHRGdW5jdGlvblZlciwgSVN0b3JhZ2VIYW5kbGVyIH0gZnJvbSAnLi4vLi4vLi4vLi4vdHlwZXMnO1xuXG5mdW5jdGlvbiBhZGRTZWFyY2hXZWJBcGkoc3RvcmFnZTogSVN0b3JhZ2VIYW5kbGVyLCBhdXRoOiBJQXV0aCk6IFJvdXRlciB7XG4gIGNvbnN0IHJvdXRlID0gUm91dGVyKCk7IC8qIGVzbGludCBuZXctY2FwOiAwICovXG4gIC8vIFNlYXJjaCBwYWNrYWdlXG4gIHJvdXRlLmdldCgnL3NlYXJjaC86YW55dGhpbmcnLCBmdW5jdGlvbiAocmVxOiAkUmVxdWVzdEV4dGVuZCwgcmVzOiAkUmVzcG9uc2VFeHRlbmQsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCByZXN1bHRzOiBhbnkgPSBTZWFyY2gucXVlcnkocmVxLnBhcmFtcy5hbnl0aGluZyk7XG4gICAgLy8gRlVUVVJFOiBmaWd1cmUgb3V0IGhlcmUgdGhlIGNvcnJlY3QgdHlwZVxuICAgIGNvbnN0IHBhY2thZ2VzOiBhbnlbXSA9IFtdO1xuXG4gICAgY29uc3QgZ2V0UGFja2FnZUluZm8gPSBmdW5jdGlvbiAoaSk6IHZvaWQge1xuICAgICAgc3RvcmFnZS5nZXRQYWNrYWdlKHtcbiAgICAgICAgbmFtZTogcmVzdWx0c1tpXS5yZWYsXG4gICAgICAgIHVwbGlua3NMb29rOiBmYWxzZSxcbiAgICAgICAgY2FsbGJhY2s6IChlcnIsIGVudHJ5OiBQYWNrYWdlKTogdm9pZCA9PiB7XG4gICAgICAgICAgaWYgKCFlcnIgJiYgZW50cnkpIHtcbiAgICAgICAgICAgIGF1dGguYWxsb3dfYWNjZXNzKHsgcGFja2FnZU5hbWU6IGVudHJ5Lm5hbWUgfSwgcmVxLnJlbW90ZV91c2VyLCBmdW5jdGlvbiAoZXJyLCBhbGxvd2VkKTogdm9pZCB7XG4gICAgICAgICAgICAgIGlmIChlcnIgfHwgIWFsbG93ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBwYWNrYWdlcy5wdXNoKGVudHJ5LnZlcnNpb25zW2VudHJ5W0RJU1RfVEFHU10ubGF0ZXN0XSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoaSA+PSByZXN1bHRzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgIG5leHQocGFja2FnZXMpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnZXRQYWNrYWdlSW5mbyhpICsgMSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGlmIChyZXN1bHRzLmxlbmd0aCkge1xuICAgICAgZ2V0UGFja2FnZUluZm8oMCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIG5leHQoW10pO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJvdXRlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhZGRTZWFyY2hXZWJBcGk7XG4iXX0=
@@ -7,6 +7,8 @@ exports.default = void 0;
7
7
 
8
8
  var _lodash = _interopRequireDefault(require("lodash"));
9
9
 
10
+ var _express = require("express");
11
+
10
12
  var _constants = require("../../../lib/constants");
11
13
 
12
14
  var _utils = require("../../../lib/utils");
@@ -17,9 +19,11 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
17
19
 
18
20
  /**
19
21
  * @prettier
20
- * @flow
21
22
  */
22
- function addUserAuthApi(route, auth, config) {
23
+ function addUserAuthApi(auth, config) {
24
+ const route = (0, _express.Router)();
25
+ /* eslint new-cap: 0 */
26
+
23
27
  route.post('/login', function (req, res, next) {
24
28
  const {
25
29
  username,
@@ -32,6 +36,7 @@ function addUserAuthApi(route, auth, config) {
32
36
  } else {
33
37
  req.remote_user = user;
34
38
  const jWTSignOptions = (0, _authUtils.getSecurity)(config).web.sign;
39
+ res.set(_constants.HEADERS.CACHE_CONTROL, 'no-cache, no-store');
35
40
  next({
36
41
  token: await auth.jwtEncrypt(user, jWTSignOptions),
37
42
  username: req.remote_user.name
@@ -69,8 +74,9 @@ function addUserAuthApi(route, auth, config) {
69
74
  return next(_utils.ErrorCode.getCode(_constants.HTTP_STATUS.BAD_REQUEST, _constants.APP_ERROR.PASSWORD_VALIDATION));
70
75
  }
71
76
  });
77
+ return route;
72
78
  }
73
79
 
74
80
  var _default = addUserAuthApi;
75
81
  exports.default = _default;
76
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvd2ViL2VuZHBvaW50L3VzZXIudHMiXSwibmFtZXMiOlsiYWRkVXNlckF1dGhBcGkiLCJyb3V0ZSIsImF1dGgiLCJjb25maWciLCJwb3N0IiwicmVxIiwicmVzIiwibmV4dCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJib2R5IiwiYXV0aGVudGljYXRlIiwiZXJyIiwidXNlciIsImVycm9yQ29kZSIsIm1lc3NhZ2UiLCJIVFRQX1NUQVRVUyIsIlVOQVVUSE9SSVpFRCIsIklOVEVSTkFMX0VSUk9SIiwiRXJyb3JDb2RlIiwiZ2V0Q29kZSIsInJlbW90ZV91c2VyIiwialdUU2lnbk9wdGlvbnMiLCJ3ZWIiLCJzaWduIiwidG9rZW4iLCJqd3RFbmNyeXB0IiwibmFtZSIsInB1dCIsIl8iLCJpc05pbCIsInN0YXR1cyIsIkFQSV9FUlJPUiIsIk1VU1RfQkVfTE9HR0VEIiwibmV3IiwiY2hhbmdlUGFzc3dvcmQiLCJvbGQiLCJpc1VwZGF0ZWQiLCJvayIsImdldEludGVybmFsRXJyb3IiLCJJTlRFUk5BTF9TRVJWRVJfRVJST1IiLCJCQURfUkVRVUVTVCIsIkFQUF9FUlJPUiIsIlBBU1NXT1JEX1ZBTElEQVRJT04iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFLQTs7QUFJQTs7QUFFQTs7QUFDQTs7OztBQVpBO0FBQ0E7QUFDQTtBQUNBO0FBV0EsU0FBU0EsY0FBVCxDQUF3QkMsS0FBeEIsRUFBdUNDLElBQXZDLEVBQW9EQyxNQUFwRCxFQUEwRTtBQUN4RUYsRUFBQUEsS0FBSyxDQUFDRyxJQUFOLENBQVcsUUFBWCxFQUFxQixVQUFVQyxHQUFWLEVBQXdCQyxHQUF4QixFQUF1Q0MsSUFBdkMsRUFBcUU7QUFDeEYsVUFBTTtBQUFFQyxNQUFBQSxRQUFGO0FBQVlDLE1BQUFBO0FBQVosUUFBeUJKLEdBQUcsQ0FBQ0ssSUFBbkM7QUFFQVIsSUFBQUEsSUFBSSxDQUFDUyxZQUFMLENBQWtCSCxRQUFsQixFQUE0QkMsUUFBNUIsRUFBc0MsT0FBT0csR0FBUCxFQUFZQyxJQUFaLEtBQWdEO0FBQ3BGLFVBQUlELEdBQUosRUFBUztBQUNQLGNBQU1FLFNBQVMsR0FBR0YsR0FBRyxDQUFDRyxPQUFKLEdBQWNDLHVCQUFZQyxZQUExQixHQUF5Q0QsdUJBQVlFLGNBQXZFO0FBQ0FYLFFBQUFBLElBQUksQ0FBQ1ksaUJBQVVDLE9BQVYsQ0FBa0JOLFNBQWxCLEVBQTZCRixHQUFHLENBQUNHLE9BQWpDLENBQUQsQ0FBSjtBQUNELE9BSEQsTUFHTztBQUNMVixRQUFBQSxHQUFHLENBQUNnQixXQUFKLEdBQWtCUixJQUFsQjtBQUNBLGNBQU1TLGNBQThCLEdBQUcsNEJBQVluQixNQUFaLEVBQW9Cb0IsR0FBcEIsQ0FBd0JDLElBQS9EO0FBRUFqQixRQUFBQSxJQUFJLENBQUM7QUFDSGtCLFVBQUFBLEtBQUssRUFBRSxNQUFNdkIsSUFBSSxDQUFDd0IsVUFBTCxDQUFnQmIsSUFBaEIsRUFBc0JTLGNBQXRCLENBRFY7QUFFSGQsVUFBQUEsUUFBUSxFQUFFSCxHQUFHLENBQUNnQixXQUFKLENBQWdCTTtBQUZ2QixTQUFELENBQUo7QUFJRDtBQUNGLEtBYkQ7QUFjRCxHQWpCRDtBQW1CQTFCLEVBQUFBLEtBQUssQ0FBQzJCLEdBQU4sQ0FBVSxpQkFBVixFQUE2QixVQUFVdkIsR0FBVixFQUF3QkMsR0FBeEIsRUFBdUNDLElBQXZDLEVBQXFFO0FBQ2hHLFFBQUlzQixnQkFBRUMsS0FBRixDQUFRekIsR0FBRyxDQUFDZ0IsV0FBSixDQUFnQk0sSUFBeEIsQ0FBSixFQUFtQztBQUNqQ3JCLE1BQUFBLEdBQUcsQ0FBQ3lCLE1BQUosQ0FBV2YsdUJBQVlDLFlBQXZCO0FBQ0EsYUFBT1YsSUFBSSxDQUFDO0FBQ1Y7QUFDQVEsUUFBQUEsT0FBTyxFQUFFaUIscUJBQVVDO0FBRlQsT0FBRCxDQUFYO0FBSUQ7O0FBRUQsVUFBTTtBQUFFeEIsTUFBQUE7QUFBRixRQUFlSixHQUFHLENBQUNLLElBQXpCO0FBQ0EsVUFBTTtBQUFFaUIsTUFBQUE7QUFBRixRQUFXdEIsR0FBRyxDQUFDZ0IsV0FBckI7O0FBRUEsUUFBSSxpQ0FBaUJaLFFBQVEsQ0FBQ3lCLEdBQTFCLE1BQW1DLEtBQXZDLEVBQThDO0FBQzVDaEMsTUFBQUEsSUFBSSxDQUFDaUMsY0FBTCxDQUFvQlIsSUFBcEIsRUFBb0NsQixRQUFRLENBQUMyQixHQUE3QyxFQUFrRDNCLFFBQVEsQ0FBQ3lCLEdBQTNELEVBQWdFLENBQUN0QixHQUFELEVBQU15QixTQUFOLEtBQTBCO0FBQ3hGLFlBQUlSLGdCQUFFQyxLQUFGLENBQVFsQixHQUFSLEtBQWdCeUIsU0FBcEIsRUFBK0I7QUFDN0I5QixVQUFBQSxJQUFJLENBQUM7QUFDSCtCLFlBQUFBLEVBQUUsRUFBRTtBQURELFdBQUQsQ0FBSjtBQUdELFNBSkQsTUFJTztBQUNMLGlCQUFPL0IsSUFBSSxDQUFDWSxpQkFBVW9CLGdCQUFWLENBQTJCUCxxQkFBVVEscUJBQXJDLENBQUQsQ0FBWDtBQUNEO0FBQ0YsT0FSRDtBQVNELEtBVkQsTUFVTztBQUNMLGFBQU9qQyxJQUFJLENBQUNZLGlCQUFVQyxPQUFWLENBQWtCSix1QkFBWXlCLFdBQTlCLEVBQTJDQyxxQkFBVUMsbUJBQXJELENBQUQsQ0FBWDtBQUNEO0FBQ0YsR0F6QkQ7QUEwQkQ7O2VBRWMzQyxjIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqIEBmbG93XG4gKi9cblxuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IHsgUm91dGVyLCBSZXNwb25zZSwgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgQ29uZmlnLCBSZW1vdGVVc2VyLCBKV1RTaWduT3B0aW9ucyB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBBUFBfRVJST1IsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJQXV0aCwgJE5leHRGdW5jdGlvblZlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBnZXRTZWN1cml0eSwgdmFsaWRhdGVQYXNzd29yZCB9IGZyb20gJy4uLy4uLy4uL2xpYi9hdXRoLXV0aWxzJztcblxuZnVuY3Rpb24gYWRkVXNlckF1dGhBcGkocm91dGU6IFJvdXRlciwgYXV0aDogSUF1dGgsIGNvbmZpZzogQ29uZmlnKTogdm9pZCB7XG4gIHJvdXRlLnBvc3QoJy9sb2dpbicsIGZ1bmN0aW9uIChyZXE6IFJlcXVlc3QsIHJlczogUmVzcG9uc2UsIG5leHQ6ICROZXh0RnVuY3Rpb25WZXIpOiB2b2lkIHtcbiAgICBjb25zdCB7IHVzZXJuYW1lLCBwYXNzd29yZCB9ID0gcmVxLmJvZHk7XG5cbiAgICBhdXRoLmF1dGhlbnRpY2F0ZSh1c2VybmFtZSwgcGFzc3dvcmQsIGFzeW5jIChlcnIsIHVzZXI6IFJlbW90ZVVzZXIpOiBQcm9taXNlPHZvaWQ+ID0+IHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgY29uc3QgZXJyb3JDb2RlID0gZXJyLm1lc3NhZ2UgPyBIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQgOiBIVFRQX1NUQVRVUy5JTlRFUk5BTF9FUlJPUjtcbiAgICAgICAgbmV4dChFcnJvckNvZGUuZ2V0Q29kZShlcnJvckNvZGUsIGVyci5tZXNzYWdlKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXEucmVtb3RlX3VzZXIgPSB1c2VyO1xuICAgICAgICBjb25zdCBqV1RTaWduT3B0aW9uczogSldUU2lnbk9wdGlvbnMgPSBnZXRTZWN1cml0eShjb25maWcpLndlYi5zaWduO1xuXG4gICAgICAgIG5leHQoe1xuICAgICAgICAgIHRva2VuOiBhd2FpdCBhdXRoLmp3dEVuY3J5cHQodXNlciwgaldUU2lnbk9wdGlvbnMpLFxuICAgICAgICAgIHVzZXJuYW1lOiByZXEucmVtb3RlX3VzZXIubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJvdXRlLnB1dCgnL3Jlc2V0X3Bhc3N3b3JkJywgZnVuY3Rpb24gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGlmIChfLmlzTmlsKHJlcS5yZW1vdGVfdXNlci5uYW1lKSkge1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAvLyBGVVRVUkU6IHVwZGF0ZSB0byBhIG1vcmUgbWVhbmluZ2Z1bCBtZXNzYWdlXG4gICAgICAgIG1lc3NhZ2U6IEFQSV9FUlJPUi5NVVNUX0JFX0xPR0dFRCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IHsgbmFtZSB9ID0gcmVxLnJlbW90ZV91c2VyO1xuXG4gICAgaWYgKHZhbGlkYXRlUGFzc3dvcmQocGFzc3dvcmQubmV3KSA9PT0gZmFsc2UpIHtcbiAgICAgIGF1dGguY2hhbmdlUGFzc3dvcmQobmFtZSBhcyBzdHJpbmcsIHBhc3N3b3JkLm9sZCwgcGFzc3dvcmQubmV3LCAoZXJyLCBpc1VwZGF0ZWQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSAmJiBpc1VwZGF0ZWQpIHtcbiAgICAgICAgICBuZXh0KHtcbiAgICAgICAgICAgIG9rOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKEFQSV9FUlJPUi5JTlRFUk5BTF9TRVJWRVJfRVJST1IpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNULCBBUFBfRVJST1IuUEFTU1dPUkRfVkFMSURBVElPTikpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGFkZFVzZXJBdXRoQXBpO1xuIl19
82
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvd2ViL2VuZHBvaW50L3VzZXIudHMiXSwibmFtZXMiOlsiYWRkVXNlckF1dGhBcGkiLCJhdXRoIiwiY29uZmlnIiwicm91dGUiLCJwb3N0IiwicmVxIiwicmVzIiwibmV4dCIsInVzZXJuYW1lIiwicGFzc3dvcmQiLCJib2R5IiwiYXV0aGVudGljYXRlIiwiZXJyIiwidXNlciIsImVycm9yQ29kZSIsIm1lc3NhZ2UiLCJIVFRQX1NUQVRVUyIsIlVOQVVUSE9SSVpFRCIsIklOVEVSTkFMX0VSUk9SIiwiRXJyb3JDb2RlIiwiZ2V0Q29kZSIsInJlbW90ZV91c2VyIiwialdUU2lnbk9wdGlvbnMiLCJ3ZWIiLCJzaWduIiwic2V0IiwiSEVBREVSUyIsIkNBQ0hFX0NPTlRST0wiLCJ0b2tlbiIsImp3dEVuY3J5cHQiLCJuYW1lIiwicHV0IiwiXyIsImlzTmlsIiwic3RhdHVzIiwiQVBJX0VSUk9SIiwiTVVTVF9CRV9MT0dHRUQiLCJuZXciLCJjaGFuZ2VQYXNzd29yZCIsIm9sZCIsImlzVXBkYXRlZCIsIm9rIiwiZ2V0SW50ZXJuYWxFcnJvciIsIklOVEVSTkFMX1NFUlZFUl9FUlJPUiIsIkJBRF9SRVFVRVNUIiwiQVBQX0VSUk9SIiwiUEFTU1dPUkRfVkFMSURBVElPTiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBOztBQUVBOztBQUVBOztBQUVBOztBQUNBOzs7O0FBVkE7QUFDQTtBQUNBO0FBVUEsU0FBU0EsY0FBVCxDQUF3QkMsSUFBeEIsRUFBcUNDLE1BQXJDLEVBQTZEO0FBQzNELFFBQU1DLEtBQUssR0FBRyxzQkFBZDtBQUF3Qjs7QUFDeEJBLEVBQUFBLEtBQUssQ0FBQ0MsSUFBTixDQUFXLFFBQVgsRUFBcUIsVUFBVUMsR0FBVixFQUF3QkMsR0FBeEIsRUFBdUNDLElBQXZDLEVBQXFFO0FBQ3hGLFVBQU07QUFBRUMsTUFBQUEsUUFBRjtBQUFZQyxNQUFBQTtBQUFaLFFBQXlCSixHQUFHLENBQUNLLElBQW5DO0FBRUFULElBQUFBLElBQUksQ0FBQ1UsWUFBTCxDQUFrQkgsUUFBbEIsRUFBNEJDLFFBQTVCLEVBQXNDLE9BQU9HLEdBQVAsRUFBWUMsSUFBWixLQUFnRDtBQUNwRixVQUFJRCxHQUFKLEVBQVM7QUFDUCxjQUFNRSxTQUFTLEdBQUdGLEdBQUcsQ0FBQ0csT0FBSixHQUFjQyx1QkFBWUMsWUFBMUIsR0FBeUNELHVCQUFZRSxjQUF2RTtBQUNBWCxRQUFBQSxJQUFJLENBQUNZLGlCQUFVQyxPQUFWLENBQWtCTixTQUFsQixFQUE2QkYsR0FBRyxDQUFDRyxPQUFqQyxDQUFELENBQUo7QUFDRCxPQUhELE1BR087QUFDTFYsUUFBQUEsR0FBRyxDQUFDZ0IsV0FBSixHQUFrQlIsSUFBbEI7QUFDQSxjQUFNUyxjQUE4QixHQUFHLDRCQUFZcEIsTUFBWixFQUFvQnFCLEdBQXBCLENBQXdCQyxJQUEvRDtBQUNBbEIsUUFBQUEsR0FBRyxDQUFDbUIsR0FBSixDQUFRQyxtQkFBUUMsYUFBaEIsRUFBK0Isb0JBQS9CO0FBQ0FwQixRQUFBQSxJQUFJLENBQUM7QUFDSHFCLFVBQUFBLEtBQUssRUFBRSxNQUFNM0IsSUFBSSxDQUFDNEIsVUFBTCxDQUFnQmhCLElBQWhCLEVBQXNCUyxjQUF0QixDQURWO0FBRUhkLFVBQUFBLFFBQVEsRUFBRUgsR0FBRyxDQUFDZ0IsV0FBSixDQUFnQlM7QUFGdkIsU0FBRCxDQUFKO0FBSUQ7QUFDRixLQWJEO0FBY0QsR0FqQkQ7QUFtQkEzQixFQUFBQSxLQUFLLENBQUM0QixHQUFOLENBQVUsaUJBQVYsRUFBNkIsVUFBVTFCLEdBQVYsRUFBd0JDLEdBQXhCLEVBQXVDQyxJQUF2QyxFQUFxRTtBQUNoRyxRQUFJeUIsZ0JBQUVDLEtBQUYsQ0FBUTVCLEdBQUcsQ0FBQ2dCLFdBQUosQ0FBZ0JTLElBQXhCLENBQUosRUFBbUM7QUFDakN4QixNQUFBQSxHQUFHLENBQUM0QixNQUFKLENBQVdsQix1QkFBWUMsWUFBdkI7QUFDQSxhQUFPVixJQUFJLENBQUM7QUFDVjtBQUNBUSxRQUFBQSxPQUFPLEVBQUVvQixxQkFBVUM7QUFGVCxPQUFELENBQVg7QUFJRDs7QUFFRCxVQUFNO0FBQUUzQixNQUFBQTtBQUFGLFFBQWVKLEdBQUcsQ0FBQ0ssSUFBekI7QUFDQSxVQUFNO0FBQUVvQixNQUFBQTtBQUFGLFFBQVd6QixHQUFHLENBQUNnQixXQUFyQjs7QUFFQSxRQUFJLGlDQUFpQlosUUFBUSxDQUFDNEIsR0FBMUIsTUFBbUMsS0FBdkMsRUFBOEM7QUFDNUNwQyxNQUFBQSxJQUFJLENBQUNxQyxjQUFMLENBQW9CUixJQUFwQixFQUFvQ3JCLFFBQVEsQ0FBQzhCLEdBQTdDLEVBQWtEOUIsUUFBUSxDQUFDNEIsR0FBM0QsRUFBZ0UsQ0FBQ3pCLEdBQUQsRUFBTTRCLFNBQU4sS0FBMEI7QUFDeEYsWUFBSVIsZ0JBQUVDLEtBQUYsQ0FBUXJCLEdBQVIsS0FBZ0I0QixTQUFwQixFQUErQjtBQUM3QmpDLFVBQUFBLElBQUksQ0FBQztBQUNIa0MsWUFBQUEsRUFBRSxFQUFFO0FBREQsV0FBRCxDQUFKO0FBR0QsU0FKRCxNQUlPO0FBQ0wsaUJBQU9sQyxJQUFJLENBQUNZLGlCQUFVdUIsZ0JBQVYsQ0FBMkJQLHFCQUFVUSxxQkFBckMsQ0FBRCxDQUFYO0FBQ0Q7QUFDRixPQVJEO0FBU0QsS0FWRCxNQVVPO0FBQ0wsYUFBT3BDLElBQUksQ0FBQ1ksaUJBQVVDLE9BQVYsQ0FBa0JKLHVCQUFZNEIsV0FBOUIsRUFBMkNDLHFCQUFVQyxtQkFBckQsQ0FBRCxDQUFYO0FBQ0Q7QUFDRixHQXpCRDtBQTJCQSxTQUFPM0MsS0FBUDtBQUNEOztlQUVjSCxjIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBAcHJldHRpZXJcbiAqL1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IGV4cHJlc3MsIHsgUm91dGVyLCBSZXNwb25zZSwgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgQ29uZmlnLCBSZW1vdGVVc2VyLCBKV1RTaWduT3B0aW9ucyB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgQVBJX0VSUk9SLCBBUFBfRVJST1IsIEhFQURFUlMsIEhUVFBfU1RBVFVTIH0gZnJvbSAnLi4vLi4vLi4vbGliL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBJQXV0aCwgJE5leHRGdW5jdGlvblZlciB9IGZyb20gJy4uLy4uLy4uLy4uL3R5cGVzJztcbmltcG9ydCB7IEVycm9yQ29kZSB9IGZyb20gJy4uLy4uLy4uL2xpYi91dGlscyc7XG5pbXBvcnQgeyBnZXRTZWN1cml0eSwgdmFsaWRhdGVQYXNzd29yZCB9IGZyb20gJy4uLy4uLy4uL2xpYi9hdXRoLXV0aWxzJztcblxuZnVuY3Rpb24gYWRkVXNlckF1dGhBcGkoYXV0aDogSUF1dGgsIGNvbmZpZzogQ29uZmlnKTogUm91dGVyIHtcbiAgY29uc3Qgcm91dGUgPSBSb3V0ZXIoKTsgLyogZXNsaW50IG5ldy1jYXA6IDAgKi9cbiAgcm91dGUucG9zdCgnL2xvZ2luJywgZnVuY3Rpb24gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGNvbnN0IHsgdXNlcm5hbWUsIHBhc3N3b3JkIH0gPSByZXEuYm9keTtcblxuICAgIGF1dGguYXV0aGVudGljYXRlKHVzZXJuYW1lLCBwYXNzd29yZCwgYXN5bmMgKGVyciwgdXNlcjogUmVtb3RlVXNlcik6IFByb21pc2U8dm9pZD4gPT4ge1xuICAgICAgaWYgKGVycikge1xuICAgICAgICBjb25zdCBlcnJvckNvZGUgPSBlcnIubWVzc2FnZSA/IEhUVFBfU1RBVFVTLlVOQVVUSE9SSVpFRCA6IEhUVFBfU1RBVFVTLklOVEVSTkFMX0VSUk9SO1xuICAgICAgICBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKGVycm9yQ29kZSwgZXJyLm1lc3NhZ2UpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJlcS5yZW1vdGVfdXNlciA9IHVzZXI7XG4gICAgICAgIGNvbnN0IGpXVFNpZ25PcHRpb25zOiBKV1RTaWduT3B0aW9ucyA9IGdldFNlY3VyaXR5KGNvbmZpZykud2ViLnNpZ247XG4gICAgICAgIHJlcy5zZXQoSEVBREVSUy5DQUNIRV9DT05UUk9MLCAnbm8tY2FjaGUsIG5vLXN0b3JlJyk7XG4gICAgICAgIG5leHQoe1xuICAgICAgICAgIHRva2VuOiBhd2FpdCBhdXRoLmp3dEVuY3J5cHQodXNlciwgaldUU2lnbk9wdGlvbnMpLFxuICAgICAgICAgIHVzZXJuYW1lOiByZXEucmVtb3RlX3VzZXIubmFtZSxcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG4gIHJvdXRlLnB1dCgnL3Jlc2V0X3Bhc3N3b3JkJywgZnVuY3Rpb24gKHJlcTogUmVxdWVzdCwgcmVzOiBSZXNwb25zZSwgbmV4dDogJE5leHRGdW5jdGlvblZlcik6IHZvaWQge1xuICAgIGlmIChfLmlzTmlsKHJlcS5yZW1vdGVfdXNlci5uYW1lKSkge1xuICAgICAgcmVzLnN0YXR1cyhIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQpO1xuICAgICAgcmV0dXJuIG5leHQoe1xuICAgICAgICAvLyBGVVRVUkU6IHVwZGF0ZSB0byBhIG1vcmUgbWVhbmluZ2Z1bCBtZXNzYWdlXG4gICAgICAgIG1lc3NhZ2U6IEFQSV9FUlJPUi5NVVNUX0JFX0xPR0dFRCxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHsgcGFzc3dvcmQgfSA9IHJlcS5ib2R5O1xuICAgIGNvbnN0IHsgbmFtZSB9ID0gcmVxLnJlbW90ZV91c2VyO1xuXG4gICAgaWYgKHZhbGlkYXRlUGFzc3dvcmQocGFzc3dvcmQubmV3KSA9PT0gZmFsc2UpIHtcbiAgICAgIGF1dGguY2hhbmdlUGFzc3dvcmQobmFtZSBhcyBzdHJpbmcsIHBhc3N3b3JkLm9sZCwgcGFzc3dvcmQubmV3LCAoZXJyLCBpc1VwZGF0ZWQpOiB2b2lkID0+IHtcbiAgICAgICAgaWYgKF8uaXNOaWwoZXJyKSAmJiBpc1VwZGF0ZWQpIHtcbiAgICAgICAgICBuZXh0KHtcbiAgICAgICAgICAgIG9rOiB0cnVlLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRJbnRlcm5hbEVycm9yKEFQSV9FUlJPUi5JTlRFUk5BTF9TRVJWRVJfRVJST1IpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBuZXh0KEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLkJBRF9SRVFVRVNULCBBUFBfRVJST1IuUEFTU1dPUkRfVkFMSURBVElPTikpO1xuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHJvdXRlO1xufVxuXG5leHBvcnQgZGVmYXVsdCBhZGRVc2VyQXV0aEFwaTtcbiJdfQ==
@@ -83,7 +83,9 @@ function _default(config, auth, storage) {
83
83
  /* eslint new-cap:off */
84
84
 
85
85
 
86
- const router = _express.default.Router();
86
+ const router = _express.default.Router(); // run in production mode by default, just in case
87
+ // it shouldn't make any difference anyway
88
+
87
89
 
88
90
  router.use(auth.webUIJWTmiddleware());
89
91
  router.use(setSecurityWebHeaders); // static assets
@@ -107,6 +109,7 @@ function _default(config, auth, storage) {
107
109
  // Use POSIX version `path.posix.join` instead.
108
110
  config.web.logo = _path.default.posix.join('/-/static/', _path.default.basename(config.web.logo));
109
111
  router.get(config.web.logo, function (_req, res, next) {
112
+ // @ts-ignore
110
113
  debug('serve custom logo web:%s - local:%s', config.web.logo, absoluteLocalFile);
111
114
  res.sendFile(absoluteLocalFile, sendFileCallback(next));
112
115
  });
@@ -133,4 +136,4 @@ function _default(config, auth, storage) {
133
136
  });
134
137
  return router;
135
138
  }
136
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvd2ViL2luZGV4LnRzIl0sIm5hbWVzIjpbInNldFNlY3VyaXR5V2ViSGVhZGVycyIsInJlcXVpcmUiLCJkZWJ1ZyIsImxvYWRUaGVtZSIsImNvbmZpZyIsIl8iLCJpc05pbCIsInRoZW1lIiwiaGVhZCIsInBsdWdpbiIsInN0YXRpY1BhdGgiLCJtYW5pZmVzdCIsIm1hbmlmZXN0RmlsZXMiLCJ2YWxpZGF0ZVByaW1hcnlDb2xvciIsInByaW1hcnlDb2xvciIsImlzSGV4IiwidGVzdCIsInNlbmRGaWxlQ2FsbGJhY2siLCJuZXh0IiwiZXJyIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJOT1RfRk9VTkQiLCJhdXRoIiwic3RvcmFnZSIsIlNlYXJjaCIsImNvbmZpZ3VyZVN0b3JhZ2UiLCJyb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwidXNlIiwid2ViVUlKV1RtaWRkbGV3YXJlIiwiZ2V0IiwicmVxIiwicmVzIiwiZmlsZW5hbWUiLCJwYXJhbXMiLCJmaWxlIiwic2VuZEZpbGUiLCJ3ZWIiLCJsb2dvIiwiYWJzb2x1dGVMb2NhbEZpbGUiLCJwYXRoIiwicG9zaXgiLCJyZXNvbHZlIiwiZnMiLCJleGlzdHNTeW5jIiwiYWNjZXNzU3luYyIsImNvbnN0YW50cyIsIlJfT0siLCJqb2luIiwiYmFzZW5hbWUiLCJfcmVxIiwidW5kZWZpbmVkIiwibG9nZ2VyIiwid2FybiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBNEJDLE9BQU8sQ0FBQyxlQUFELENBQXpDOztBQUVBLE1BQU1DLEtBQUssR0FBRyxvQkFBVyxXQUFYLENBQWQ7O0FBRU8sU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkI7QUFDaEMsTUFBSUMsZ0JBQUVDLEtBQUYsQ0FBUUYsTUFBTSxDQUFD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WCxFQUFtQk8sUUFBbkIsRUFBNkJDLGFBQTdCLEVBQTRDcUIsR0FBNUMsRUFBaURDLEdBQWpEO0FBQ0FoQyxJQUFBQSxLQUFLLENBQUMscUJBQUQsQ0FBTDtBQUNELEdBSEQ7QUFLQXlCLEVBQUFBLE1BQU0sQ0FBQ0ssR0FBUCxDQUFXLEdBQVgsRUFBZ0IsVUFBVUMsR0FBVixFQUFlQyxHQUFmLEVBQW9CaEIsSUFBcEIsRUFBMEI7QUFDeEMsNkJBQVdkLE1BQVgsRUFBbUJPLFFBQW5CLEVBQTZCQyxhQUE3QixFQUE0Q3FCLEdBQTVDLEVBQWlEQyxHQUFqRDtBQUNBaEMsSUFBQUEsS0FBSyxDQUFDLGFBQUQsQ0FBTDtBQUNELEdBSEQ7QUFLQSxTQUFPeUIsTUFBUDtBQUNEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcblxuaW1wb3J0IGV4cHJlc3MgZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5cbmltcG9ydCBTZWFyY2ggZnJvbSAnLi4vLi4vbGliL3NlYXJjaCc7XG5pbXBvcnQgeyBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IGxvYWRQbHVnaW4gZnJvbSAnLi4vLi4vbGliL3BsdWdpbi1sb2FkZXInO1xuaW1wb3J0IHsgaXNIVFRQUHJvdG9jb2wgfSBmcm9tICcuLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgcmVuZGVySFRNTCBmcm9tICcuL2h0bWwvcmVuZGVySFRNTCc7XG5cbmNvbnN0IHsgc2V0U2VjdXJpdHlXZWJIZWFkZXJzIH0gPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlJyk7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkVGhlbWUoY29uZmlnKSB7XG4gIGlmIChfLmlzTmlsKGNvbmZpZy50aGVtZSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIF8uaGVhZChcbiAgICAgIGxvYWRQbHVnaW4oXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgY29uZmlnLnRoZW1lLFxuICAgICAgICB7fSxcbiAgICAgICAgZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgICAgIHJldHVybiBwbHVnaW4uc3RhdGljUGF0aCAmJiBwbHVnaW4ubWFuaWZlc3QgJiYgcGx1Z2luLm1hbmlmZXN0RmlsZXM7XG4gICAgICAgIH0sXG4gICAgICAgICd2ZXJkYWNjaW8tdGhlbWUnXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcmltYXJ5Q29sb3IocHJpbWFyeUNvbG9yKSB7XG4gIGNvbnN0IGlzSGV4ID0gL14jKyhbYS1mQS1GMC05XXs2fXxbYS1mQS1GMC05XXszfSkkL2kudGVzdChwcmltYXJ5Q29sb3IpO1xuICBpZiAoIWlzSGV4KSB7XG4gICAgZGVidWcoJ2ludmFsaWQgcHJpbWFyeSBjb2xvciAlbycsIHByaW1hcnlDb2xvcik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIHByaW1hcnlDb2xvcjtcbn1cblxuY29uc3Qgc2VuZEZpbGVDYWxsYmFjayA9IChuZXh0KSA9PiAoZXJyKSA9PiB7XG4gIGlmICghZXJyKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChlcnIuc3RhdHVzID09PSBIVFRQX1NUQVRVUy5OT1RfRk9VTkQpIHtcbiAgICBuZXh0KCk7XG4gIH0gZWxzZSB7XG4gICAgbmV4dChlcnIpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoY29uZmlnLCBhdXRoLCBzdG9yYWdlKSB7XG4gIGxldCB7IHN0YXRpY1BhdGgsIG1hbmlmZXN0LCBtYW5pZmVzdEZpbGVzIH0gPSBsb2FkVGhlbWUoY29uZmlnKSB8fCByZXF1aXJlKCdAdmVyZGFjY2lvL3VpLXRoZW1lJykoKTtcbiAgZGVidWcoJ3N0YXRpYyBwYXRoICVvJywgc3RhdGljUGF0aCk7XG4gIFNlYXJjaC5jb25maWd1cmVTdG9yYWdlKHN0b3JhZ2UpO1xuXG4gIC8qIGVzbGludCBuZXctY2FwOm9mZiAqL1xuICBjb25zdCByb3V0ZXIgPSBleHByZXNzLlJvdXRlcigpO1xuICByb3V0ZXIudXNlKGF1dGgud2ViVUlKV1RtaWRkbGV3YXJlKCkpO1xuICByb3V0ZXIudXNlKHNldFNlY3VyaXR5V2ViSGVhZGVycyk7XG5cbiAgLy8gc3RhdGljIGFzc2V0c1xuICByb3V0ZXIuZ2V0KCcvLS9zdGF0aWMvKicsIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gcmVxLnBhcmFtc1swXTtcbiAgICBjb25zdCBmaWxlID0gYCR7c3RhdGljUGF0aH0vJHtmaWxlbmFtZX1gO1xuICAgIGRlYnVnKCdyZW5kZXIgc3RhdGljIGZpbGUgJW8nLCBmaWxlKTtcbiAgICByZXMuc2VuZEZpbGUoZmlsZSwgc2VuZEZpbGVDYWxsYmFjayhuZXh0KSk7XG4gIH0pO1xuXG4gIC8vIGxvZ29cbiAgaWYgKGNvbmZpZz8ud2ViPy5sb2dvICYmICFpc0hUVFBQcm90b2NvbChjb25maWc/LndlYj8ubG9nbykpIHtcbiAgICAvLyBVUkkgcmVsYXRlZCB0byBhIGxvY2FsIGZpbGVcbiAgICBjb25zdCBhYnNvbHV0ZUxvY2FsRmlsZSA9IHBhdGgucG9zaXgucmVzb2x2ZShjb25maWcud2ViLmxvZ28pO1xuICAgIGRlYnVnKCdzZXJ2ZSBsb2NhbCBsb2dvICVzJywgYWJzb2x1dGVMb2NhbEZpbGUpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhhYnNvbHV0ZUxvY2FsRmlsZSkgJiYgdHlwZW9mIGZzLmFjY2Vzc1N5bmMoYWJzb2x1dGVMb2NhbEZpbGUsIGZzLmNvbnN0YW50cy5SX09LKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgLy8gTm90ZTogYHBhdGguam9pbmAgd2lsbCBicmVhayBvbiBXaW5kb3dzLCBiZWNhdXNlIGl0IHRyYW5zZm9ybXMgYC9gIHRvIGBcXGBcbiAgICAgICAgLy8gVXNlIFBPU0lYIHZlcnNpb24gYHBhdGgucG9zaXguam9pbmAgaW5zdGVhZC5cbiAgICAgICAgY29uZmlnLndlYi5sb2dvID0gcGF0aC5wb3NpeC5qb2luKCcvLS9zdGF0aWMvJywgcGF0aC5iYXNlbmFtZShjb25maWcud2ViLmxvZ28pKTtcbiAgICAgICAgcm91dGVyLmdldChjb25maWcud2ViLmxvZ28sIGZ1bmN0aW9uIChfcmVxLCByZXMsIG5leHQpIHtcbiAgICAgICAgICBkZWJ1Zygnc2VydmUgY3VzdG9tIGxvZ28gIHdlYjolcyAtIGxvY2FsOiVzJywgY29uZmlnLndlYi5sb2dvLCBhYnNvbHV0ZUxvY2FsRmlsZSk7XG4gICAgICAgICAgcmVzLnNlbmRGaWxlKGFic29sdXRlTG9jYWxGaWxlLCBzZW5kRmlsZUNhbGxiYWNrKG5leHQpKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGRlYnVnKCdlbmFibGVkIGN1c3RvbSBsb2dvICVzJywgY29uZmlnLndlYi5sb2dvKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbmZpZy53ZWIubG9nbyA9IHVuZGVmaW5lZDtcbiAgICAgICAgbG9nZ2VyLndhcm4oYHdlYiBsb2dvIGlzIHdyb25nLCBwYXRoICR7YWJzb2x1dGVMb2NhbEZpbGV9IGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCByZWFkYWJsZWApO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgY29uZmlnLndlYi5sb2dvID0gdW5kZWZpbmVkO1xuICAgICAgbG9nZ2VyLndhcm4oYHdlYiBsb2dvIGlzIHdyb25nLCBwYXRoICR7YWJzb2x1dGVMb2NhbEZpbGV9IGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCByZWFkYWJsZWApO1xuICAgIH1cbiAgfVxuXG4gIHJvdXRlci5nZXQoJy8tL3dlYi86c2VjdGlvbi8qJywgZnVuY3Rpb24gKHJlcSwgcmVzKSB7XG4gICAgcmVuZGVySFRNTChjb25maWcsIG1hbmlmZXN0LCBtYW5pZmVzdEZpbGVzLCByZXEsIHJlcyk7XG4gICAgZGVidWcoJ3JlbmRlciBodG1sIHNlY3Rpb24nKTtcbiAgfSk7XG5cbiAgcm91dGVyLmdldCgnLycsIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xuICAgIHJlbmRlckhUTUwoY29uZmlnLCBtYW5pZmVzdCwgbWFuaWZlc3RGaWxlcywgcmVxLCByZXMpO1xuICAgIGRlYnVnKCdyZW5kZXIgcm9vdCcpO1xuICB9KTtcblxuICByZXR1cm4gcm91dGVyO1xufVxuIl19
139
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hcGkvd2ViL2luZGV4LnRzIl0sIm5hbWVzIjpbInNldFNlY3VyaXR5V2ViSGVhZGVycyIsInJlcXVpcmUiLCJkZWJ1ZyIsImxvYWRUaGVtZSIsImNvbmZpZyIsIl8iLCJpc05pbCIsInRoZW1lIiwiaGVhZCIsInBsdWdpbiIsInN0YXRpY1BhdGgiLCJtYW5pZmVzdCIsIm1hbmlmZXN0RmlsZXMiLCJ2YWxpZGF0ZVByaW1hcnlDb2xvciIsInByaW1hcnlDb2xvciIsImlzSGV4IiwidGVzdCIsInNlbmRGaWxlQ2FsbGJhY2siLCJuZXh0IiwiZXJyIiwic3RhdHVzIiwiSFRUUF9TVEFUVVMiLCJOT1RfRk9VTkQiLCJhdXRoIiwic3RvcmFnZSIsIlNlYXJjaCIsImNvbmZpZ3VyZVN0b3JhZ2UiLCJyb3V0ZXIiLCJleHByZXNzIiwiUm91dGVyIiwidXNlIiwid2ViVUlKV1RtaWRkbGV3YXJlIiwiZ2V0IiwicmVxIiwicmVzIiwiZmlsZW5hbWUiLCJwYXJhbXMiLCJmaWxlIiwic2VuZEZpbGUiLCJ3ZWIiLCJsb2dvIiwiYWJzb2x1dGVMb2NhbEZpbGUiLCJwYXRoIiwicG9zaXgiLCJyZXNvbHZlIiwiZnMiLCJleGlzdHNTeW5jIiwiYWNjZXNzU3luYyIsImNvbnN0YW50cyIsIlJfT0siLCJqb2luIiwiYmFzZW5hbWUiLCJfcmVxIiwidW5kZWZpbmVkIiwibG9nZ2VyIiwid2FybiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBSUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNO0FBQUVBLEVBQUFBO0FBQUYsSUFBNEJDLE9BQU8sQ0FBQyxlQUFELENBQXpDOztBQUVBLE1BQU1DLEtBQUssR0FBRyxvQkFBVyxXQUFYLENBQWQ7O0FBRU8sU0FBU0MsU0FBVCxDQUFtQkMsTUFBbkIsRUFBMkI7QUFDaEMsTUFBSUMsZ0JBQUVDLEtBQUYsQ0FBUUYsTUFBTSxDQUFD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RUFBb0I7QUFDbEQsNkJBQVc5QixNQUFYLEVBQW1CTyxRQUFuQixFQUE2QkMsYUFBN0IsRUFBNENxQixHQUE1QyxFQUFpREMsR0FBakQ7QUFDQWhDLElBQUFBLEtBQUssQ0FBQyxxQkFBRCxDQUFMO0FBQ0QsR0FIRDtBQUtBeUIsRUFBQUEsTUFBTSxDQUFDSyxHQUFQLENBQVcsR0FBWCxFQUFnQixVQUFVQyxHQUFWLEVBQWVDLEdBQWYsRUFBb0JoQixJQUFwQixFQUEwQjtBQUN4Qyw2QkFBV2QsTUFBWCxFQUFtQk8sUUFBbkIsRUFBNkJDLGFBQTdCLEVBQTRDcUIsR0FBNUMsRUFBaURDLEdBQWpEO0FBQ0FoQyxJQUFBQSxLQUFLLENBQUMsYUFBRCxDQUFMO0FBQ0QsR0FIRDtBQUtBLFNBQU95QixNQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgZXhwcmVzcyBmcm9tICdleHByZXNzJztcbmltcG9ydCBidWlsZERlYnVnIGZyb20gJ2RlYnVnJztcblxuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSAnQHZlcmRhY2Npby90eXBlcyc7XG5cbmltcG9ydCBTZWFyY2ggZnJvbSAnLi4vLi4vbGliL3NlYXJjaCc7XG5pbXBvcnQgeyBIVFRQX1NUQVRVUyB9IGZyb20gJy4uLy4uL2xpYi9jb25zdGFudHMnO1xuaW1wb3J0IGxvYWRQbHVnaW4gZnJvbSAnLi4vLi4vbGliL3BsdWdpbi1sb2FkZXInO1xuaW1wb3J0IHsgaXNIVFRQUHJvdG9jb2wgfSBmcm9tICcuLi8uLi9saWIvdXRpbHMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgcmVuZGVySFRNTCBmcm9tICcuL2h0bWwvcmVuZGVySFRNTCc7XG5cbmNvbnN0IHsgc2V0U2VjdXJpdHlXZWJIZWFkZXJzIH0gPSByZXF1aXJlKCcuLi9taWRkbGV3YXJlJyk7XG5cbmNvbnN0IGRlYnVnID0gYnVpbGREZWJ1ZygndmVyZGFjY2lvJyk7XG5cbmV4cG9ydCBmdW5jdGlvbiBsb2FkVGhlbWUoY29uZmlnKSB7XG4gIGlmIChfLmlzTmlsKGNvbmZpZy50aGVtZSkgPT09IGZhbHNlKSB7XG4gICAgcmV0dXJuIF8uaGVhZChcbiAgICAgIGxvYWRQbHVnaW4oXG4gICAgICAgIGNvbmZpZyxcbiAgICAgICAgY29uZmlnLnRoZW1lLFxuICAgICAgICB7fSxcbiAgICAgICAgZnVuY3Rpb24gKHBsdWdpbikge1xuICAgICAgICAgIHJldHVybiBwbHVnaW4uc3RhdGljUGF0aCAmJiBwbHVnaW4ubWFuaWZlc3QgJiYgcGx1Z2luLm1hbmlmZXN0RmlsZXM7XG4gICAgICAgIH0sXG4gICAgICAgICd2ZXJkYWNjaW8tdGhlbWUnXG4gICAgICApXG4gICAgKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGVQcmltYXJ5Q29sb3IocHJpbWFyeUNvbG9yKSB7XG4gIGNvbnN0IGlzSGV4ID0gL14jKyhbYS1mQS1GMC05XXs2fXxbYS1mQS1GMC05XXszfSkkL2kudGVzdChwcmltYXJ5Q29sb3IpO1xuICBpZiAoIWlzSGV4KSB7XG4gICAgZGVidWcoJ2ludmFsaWQgcHJpbWFyeSBjb2xvciAlbycsIHByaW1hcnlDb2xvcik7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcmV0dXJuIHByaW1hcnlDb2xvcjtcbn1cblxuY29uc3Qgc2VuZEZpbGVDYWxsYmFjayA9IChuZXh0KSA9PiAoZXJyKSA9PiB7XG4gIGlmICghZXJyKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChlcnIuc3RhdHVzID09PSBIVFRQX1NUQVRVUy5OT1RfRk9VTkQpIHtcbiAgICBuZXh0KCk7XG4gIH0gZWxzZSB7XG4gICAgbmV4dChlcnIpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoY29uZmlnOiBDb25maWcsIGF1dGgsIHN0b3JhZ2UpIHtcbiAgbGV0IHsgc3RhdGljUGF0aCwgbWFuaWZlc3QsIG1hbmlmZXN0RmlsZXMgfSA9IGxvYWRUaGVtZShjb25maWcpIHx8IHJlcXVpcmUoJ0B2ZXJkYWNjaW8vdWktdGhlbWUnKSgpO1xuICBkZWJ1Zygnc3RhdGljIHBhdGggJW8nLCBzdGF0aWNQYXRoKTtcbiAgU2VhcmNoLmNvbmZpZ3VyZVN0b3JhZ2Uoc3RvcmFnZSk7XG5cbiAgLyogZXNsaW50IG5ldy1jYXA6b2ZmICovXG4gIGNvbnN0IHJvdXRlciA9IGV4cHJlc3MuUm91dGVyKCk7XG4gIC8vIHJ1biBpbiBwcm9kdWN0aW9uIG1vZGUgYnkgZGVmYXVsdCwganVzdCBpbiBjYXNlXG4gIC8vIGl0IHNob3VsZG4ndCBtYWtlIGFueSBkaWZmZXJlbmNlIGFueXdheVxuICByb3V0ZXIudXNlKGF1dGgud2ViVUlKV1RtaWRkbGV3YXJlKCkpO1xuICByb3V0ZXIudXNlKHNldFNlY3VyaXR5V2ViSGVhZGVycyk7XG5cbiAgLy8gc3RhdGljIGFzc2V0c1xuICByb3V0ZXIuZ2V0KCcvLS9zdGF0aWMvKicsIGZ1bmN0aW9uIChyZXEsIHJlcywgbmV4dCkge1xuICAgIGNvbnN0IGZpbGVuYW1lID0gcmVxLnBhcmFtc1swXTtcbiAgICBjb25zdCBmaWxlID0gYCR7c3RhdGljUGF0aH0vJHtmaWxlbmFtZX1gO1xuICAgIGRlYnVnKCdyZW5kZXIgc3RhdGljIGZpbGUgJW8nLCBmaWxlKTtcbiAgICByZXMuc2VuZEZpbGUoZmlsZSwgc2VuZEZpbGVDYWxsYmFjayhuZXh0KSk7XG4gIH0pO1xuXG4gIC8vIGxvZ29cbiAgaWYgKGNvbmZpZz8ud2ViPy5sb2dvICYmICFpc0hUVFBQcm90b2NvbChjb25maWc/LndlYj8ubG9nbykpIHtcbiAgICAvLyBVUkkgcmVsYXRlZCB0byBhIGxvY2FsIGZpbGVcbiAgICBjb25zdCBhYnNvbHV0ZUxvY2FsRmlsZSA9IHBhdGgucG9zaXgucmVzb2x2ZShjb25maWcud2ViLmxvZ28pO1xuICAgIGRlYnVnKCdzZXJ2ZSBsb2NhbCBsb2dvICVzJywgYWJzb2x1dGVMb2NhbEZpbGUpO1xuICAgIHRyeSB7XG4gICAgICBpZiAoZnMuZXhpc3RzU3luYyhhYnNvbHV0ZUxvY2FsRmlsZSkgJiYgdHlwZW9mIGZzLmFjY2Vzc1N5bmMoYWJzb2x1dGVMb2NhbEZpbGUsIGZzLmNvbnN0YW50cy5SX09LKSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgLy8gTm90ZTogYHBhdGguam9pbmAgd2lsbCBicmVhayBvbiBXaW5kb3dzLCBiZWNhdXNlIGl0IHRyYW5zZm9ybXMgYC9gIHRvIGBcXGBcbiAgICAgICAgLy8gVXNlIFBPU0lYIHZlcnNpb24gYHBhdGgucG9zaXguam9pbmAgaW5zdGVhZC5cbiAgICAgICAgY29uZmlnLndlYi5sb2dvID0gcGF0aC5wb3NpeC5qb2luKCcvLS9zdGF0aWMvJywgcGF0aC5iYXNlbmFtZShjb25maWcud2ViLmxvZ28pKTtcbiAgICAgICAgcm91dGVyLmdldChjb25maWcud2ViLmxvZ28sIGZ1bmN0aW9uIChfcmVxLCByZXMsIG5leHQpIHtcbiAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgZGVidWcoJ3NlcnZlIGN1c3RvbSBsb2dvICB3ZWI6JXMgLSBsb2NhbDolcycsIGNvbmZpZy53ZWIubG9nbywgYWJzb2x1dGVMb2NhbEZpbGUpO1xuICAgICAgICAgIHJlcy5zZW5kRmlsZShhYnNvbHV0ZUxvY2FsRmlsZSwgc2VuZEZpbGVDYWxsYmFjayhuZXh0KSk7XG4gICAgICAgIH0pO1xuICAgICAgICBkZWJ1ZygnZW5hYmxlZCBjdXN0b20gbG9nbyAlcycsIGNvbmZpZy53ZWIubG9nbyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25maWcud2ViLmxvZ28gPSB1bmRlZmluZWQ7XG4gICAgICAgIGxvZ2dlci53YXJuKGB3ZWIgbG9nbyBpcyB3cm9uZywgcGF0aCAke2Fic29sdXRlTG9jYWxGaWxlfSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGVgKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIHtcbiAgICAgIGNvbmZpZy53ZWIubG9nbyA9IHVuZGVmaW5lZDtcbiAgICAgIGxvZ2dlci53YXJuKGB3ZWIgbG9nbyBpcyB3cm9uZywgcGF0aCAke2Fic29sdXRlTG9jYWxGaWxlfSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGVgKTtcbiAgICB9XG4gIH1cblxuICByb3V0ZXIuZ2V0KCcvLS93ZWIvOnNlY3Rpb24vKicsIGZ1bmN0aW9uIChyZXEsIHJlcykge1xuICAgIHJlbmRlckhUTUwoY29uZmlnLCBtYW5pZmVzdCwgbWFuaWZlc3RGaWxlcywgcmVxLCByZXMpO1xuICAgIGRlYnVnKCdyZW5kZXIgaHRtbCBzZWN0aW9uJyk7XG4gIH0pO1xuXG4gIHJvdXRlci5nZXQoJy8nLCBmdW5jdGlvbiAocmVxLCByZXMsIG5leHQpIHtcbiAgICByZW5kZXJIVE1MKGNvbmZpZywgbWFuaWZlc3QsIG1hbmlmZXN0RmlsZXMsIHJlcSwgcmVzKTtcbiAgICBkZWJ1ZygncmVuZGVyIHJvb3QnKTtcbiAgfSk7XG5cbiAgcmV0dXJuIHJvdXRlcjtcbn1cbiJdfQ==
@@ -8,7 +8,7 @@ exports.buildUserBuffer = buildUserBuffer;
8
8
  exports.createAnonymousRemoteUser = createAnonymousRemoteUser;
9
9
  exports.createRemoteUser = createRemoteUser;
10
10
  exports.createSessionToken = createSessionToken;
11
- exports.expireReasons = exports.defaultSecurity = void 0;
11
+ exports.expireReasons = exports.defaultUserRateLimiting = exports.defaultSecurity = void 0;
12
12
  exports.getApiToken = getApiToken;
13
13
  exports.getAuthenticatedMessage = getAuthenticatedMessage;
14
14
  exports.getDefaultPlugins = getDefaultPlugins;
@@ -153,14 +153,21 @@ function createSessionToken() {
153
153
 
154
154
  const defaultWebTokenOptions = {
155
155
  sign: {
156
- // The expiration token for the website is 7 days
157
- expiresIn: _constants.TIME_EXPIRATION_7D
156
+ // The expiration token for the website is 1 hour
157
+ expiresIn: _constants.TIME_EXPIRATION_1H
158
158
  },
159
159
  verify: {}
160
160
  };
161
161
  const defaultApiTokenConf = {
162
162
  legacy: true
163
+ }; // we limit max 1000 request per 15 minutes on user endpoints
164
+
165
+ const defaultUserRateLimiting = {
166
+ windowMs: 15 * 60 * 1000,
167
+ // 15 minutes
168
+ max: 1000
163
169
  };
170
+ exports.defaultUserRateLimiting = defaultUserRateLimiting;
164
171
  const defaultSecurity = {
165
172
  web: defaultWebTokenOptions,
166
173
  api: defaultApiTokenConf
@@ -305,4 +312,4 @@ function getMiddlewareCredentials(security, secret, authorizationHeader) {
305
312
  return verifyJWTPayload(token, secret);
306
313
  }
307
314
  }
308
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXV0aC11dGlscy50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsInZhbGlkYXRlUGFzc3dvcmQiLCJwYXNzd29yZCIsIm1pbkxlbmd0aCIsIkRFRkFVTFRfTUlOX0xJTUlUX1BBU1NXT1JEIiwibGVuZ3RoIiwiY3JlYXRlUmVtb3RlVXNlciIsIm5hbWUiLCJwbHVnaW5Hcm91cHMiLCJpc0dyb3VwVmFsaWQiLCJBcnJheSIsImlzQXJyYXkiLCJncm91cHMiLCJjb25jYXQiLCJST0xFUyIsIiRBTEwiLCIkQVVUSCIsIkRFUFJFQ0FURURfQUxMIiwiREVQUkVDQVRFRF9BVVRIIiwiQUxMIiwicmVhbF9ncm91cHMiLCJjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyIiwidW5kZWZpbmVkIiwiJEFOT05ZTU9VUyIsIkRFUFJFQ0FURURfQU5PTllNT1VTIiwiYWxsb3dfYWN0aW9uIiwiYWN0aW9uIiwidXNlciIsInBrZyIsImNhbGxiYWNrIiwiZ3JvdXBBY2Nlc3MiLCJoYXNQZXJtaXNzaW9uIiwic29tZSIsImdyb3VwIiwiaW5jbHVkZXMiLCJsb2dnZXIiLCJpbmZvIiwicmVtb3RlIiwiRXJyb3JDb2RlIiwiZ2V0Rm9yYmlkZGVuIiwiZ2V0VW5hdXRob3JpemVkIiwiaGFuZGxlU3BlY2lhbFVucHVibGlzaCIsImlzVW5wdWJsaXNoTWlzc2luZyIsIl8iLCJpc05pbCIsImhhc0dyb3VwcyIsImdldERlZmF1bHRQbHVnaW5zIiwiYXV0aGVudGljYXRlIiwiX3VzZXIiLCJfcGFzc3dvcmQiLCJjYiIsIkFQSV9FUlJPUiIsIkJBRF9VU0VSTkFNRV9QQVNTV09SRCIsImFkZF91c2VyIiwiZ2V0Q29uZmxpY3QiLCJhbGxvd19hY2Nlc3MiLCJhbGxvd19wdWJsaXNoIiwiYWxsb3dfdW5wdWJsaXNoIiwiY3JlYXRlU2Vzc2lvblRva2VuIiwidGVuSG91cnNUaW1lIiwiZXhwaXJlcyIsIkRhdGUiLCJub3ciLCJkZWZhdWx0V2ViVG9rZW5PcHRpb25zIiwic2lnbiIsImV4cGlyZXNJbiIsIlRJTUVfRVhQSVJBVElPTl83RCIsInZlcmlmeSIsImRlZmF1bHRBcGlUb2tlbkNvbmYiLCJsZWdhY3kiLCJkZWZhdWx0U2VjdXJpdHkiLCJ3ZWIiLCJhcGkiLCJnZXRTZWN1cml0eSIsImNvbmZpZyIsInNlY3VyaXR5IiwibWVyZ2UiLCJnZXRBdXRoZW50aWNhdGVkTWVzc2FnZSIsImJ1aWxkVXNlckJ1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJpc0FFU0xlZ2FjeSIsImp3dCIsImdldEFwaVRva2VuIiwiYXV0aCIsInJlbW90ZVVzZXIiLCJhZXNQYXNzd29yZCIsIlByb21pc2UiLCJyZXNvbHZlIiwiYWVzRW5jcnlwdCIsInRvU3RyaW5nIiwiand0RW5jcnlwdCIsInBhcnNlQXV0aFRva2VuSGVhZGVyIiwiYXV0aG9yaXphdGlvbkhlYWRlciIsInBhcnRzIiwic3BsaXQiLCJzY2hlbWUiLCJ0b2tlbiIsInBhcnNlQmFzaWNQYXlsb2FkIiwiY3JlZGVudGlhbHMiLCJpbmRleCIsImluZGV4T2YiLCJzbGljZSIsInBhcnNlQUVTQ3JlZGVudGlhbHMiLCJzZWNyZXQiLCJ0b1VwcGVyQ2FzZSIsIlRPS0VOX0JBU0lDIiwiVE9LRU5fQkVBUkVSIiwidG9rZW5Bc0J1ZmZlciIsImV4cGlyZVJlYXNvbnMiLCJ2ZXJpZnlKV1RQYXlsb2FkIiwicGF5bG9hZCIsImVycm9yIiwiZ2V0Q29kZSIsIkhUVFBfU1RBVFVTIiwiVU5BVVRIT1JJWkVEIiwibWVzc2FnZSIsImlzQXV0aEhlYWRlclZhbGlkIiwiYXV0aG9yaXphdGlvbiIsImdldE1pZGRsZXdhcmVDcmVkZW50aWFscyIsInBhcnNlZENyZWRlbnRpYWxzIiwiaXNTdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQTs7QUFDQTs7QUFDQTs7QUFDQTs7OztBQUVBLE1BQU1BLEtBQUssR0FBRyxvQkFBVyxXQUFYLENBQWQ7O0FBRU8sU0FBU0MsZ0JBQVQsQ0FDTEMsUUFESyxF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L0gsTUFBSVosV0FBVyxDQUFDTixRQUFELENBQWYsRUFBMkI7QUFDekIsVUFBTXdCLFdBQVcsR0FBR0ksbUJBQW1CLENBQUNWLG1CQUFELEVBQXNCVyxNQUF0QixDQUF2Qzs7QUFDQSxRQUFJLENBQUNMLFdBQUwsRUFBa0I7QUFDaEI7QUFDRDs7QUFFRCxVQUFNcUIsaUJBQWlCLEdBQUd0QixpQkFBaUIsQ0FBQ0MsV0FBRCxDQUEzQzs7QUFDQSxRQUFJLENBQUNxQixpQkFBTCxFQUF3QjtBQUN0QjtBQUNEOztBQUVELFdBQU9BLGlCQUFQO0FBQ0Q7O0FBQ0QsUUFBTTtBQUFFeEIsSUFBQUEsTUFBRjtBQUFVQyxJQUFBQTtBQUFWLE1BQW9CTCxvQkFBb0IsQ0FBQ0MsbUJBQUQsQ0FBOUM7O0FBRUEsTUFBSWxELGdCQUFFOEUsUUFBRixDQUFXeEIsS0FBWCxLQUFxQkQsTUFBTSxDQUFDUyxXQUFQLE9BQXlCRSx3QkFBYUYsV0FBYixFQUFsRCxFQUE4RTtBQUM1RSxXQUFPSyxnQkFBZ0IsQ0FBQ2IsS0FBRCxFQUFRTyxNQUFSLENBQXZCO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSZW1vdGVVc2VyLCBQYWNrYWdlLCBDYWxsYmFjaywgQ29uZmlnLCBTZWN1cml0eSwgQVBJVG9rZW5PcHRpb25zLCBKV1RPcHRpb25zLCBJUGx1Z2luQXV0aCB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgQ29va2llU2Vzc2lvblRva2VuLCBJQXV0aFdlYlVJLCBBdXRoTWlkZGxld2FyZVBheWxvYWQsIEF1dGhUb2tlbkhlYWRlciwgQmFzaWNQYXlsb2FkIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgeyBjb252ZXJ0UGF5bG9hZFRvQmFzZTY0LCBFcnJvckNvZGUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgSFRUUF9TVEFUVVMsIFJPTEVTLCBUSU1FX0VYUElSQVRJT05fN0QsIFRPS0VOX0JBU0lDLCBUT0tFTl9CRUFSRVIsIERFRkFVTFRfTUlOX0xJTUlUX1BBU1NXT1JEIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgYWVzRGVjcnlwdCwgdmVyaWZ5UGF5bG9hZCB9IGZyb20gJy4vY3J5cHRvLXV0aWxzJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW8nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUGFzc3dvcmQoXG4gIHBhc3N3b3JkOiBzdHJpbmcsIC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuICBtaW5MZW5ndGg6IG51bWJlciA9IERFRkFVTFRfTUlOX0xJTUlUX1BBU1NXT1JEXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBwYXNzd29yZCA9PT0gJ3N0cmluZycgJiYgcGFzc3dvcmQubGVuZ3RoID49IG1pbkxlbmd0aDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBSZW1vdGVVc2VyIG9iamVjdFxuICogQHJldHVybiB7T2JqZWN0fSB7IG5hbWU6IHh4LCBwbHVnaW5Hcm91cHM6IFtdLCByZWFsX2dyb3VwczogW10gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVtb3RlVXNlcihuYW1lOiBzdHJpbmcsIHBsdWdpbkdyb3Vwczogc3RyaW5nW10pOiBSZW1vdGVVc2VyIHtcbiAgY29uc3QgaXNHcm91cFZhbGlkOiBib29sZWFuID0gQXJyYXkuaXNBcnJheShwbHVnaW5Hcm91cHMpO1xuICBjb25zdCBncm91cHMgPSAoaXNHcm91cFZhbGlkID8gcGx1Z2luR3JvdXBzIDogW10pLmNvbmNhdChbUk9MRVMuJEFMTCwgUk9MRVMuJEFVVEgsIFJPTEVTLkRFUFJFQ0FURURfQUxMLCBST0xFUy5ERVBSRUNBVEVEX0FVVEgsIFJPTEVTLkFMTF0pO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZSxcbiAgICBncm91cHMsXG4gICAgcmVhbF9ncm91cHM6IHBsdWdpbkdyb3VwcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYW4gYW5vbnltb3VzIHJlbW90ZSB1c2VyIGluIGNhc2Ugbm9uZSBpcyBsb2dnZWQgaW4uXG4gKiBAcmV0dXJuIHtPYmplY3R9IHsgbmFtZTogeHgsIGdyb3VwczogW10sIHJlYWxfZ3JvdXBzOiBbXSB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk6IFJlbW90ZVVzZXIge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICAvLyBncm91cHMgd2l0aG91dCAnJCcgYXJlIGdvaW5nIHRvIGJlIGRlcHJlY2F0ZWQgZXZlbnR1YWxseVxuICAgIGdyb3VwczogW1JPTEVTLiRBTEwsIFJPTEVTLiRBTk9OWU1PVVMsIFJPTEVTLkRFUFJFQ0FURURfQUxMLCBST0xFUy5ERVBSRUNBVEVEX0FOT05ZTU9VU10sXG4gICAgcmVhbF9ncm91cHM6IFtdLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsb3dfYWN0aW9uKGFjdGlvbjogc3RyaW5nKTogRnVuY3Rpb24ge1xuICByZXR1cm4gZnVuY3Rpb24gKHVzZXI6IFJlbW90ZVVzZXIsIHBrZzogUGFja2FnZSwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgZGVidWcoJ1thdXRoL2FsbG93X2FjdGlvbl06IHVzZXI6ICVvJywgdXNlcj8ubmFtZSk7XG4gICAgY29uc3QgeyBuYW1lLCBncm91cHMgfSA9IHVzZXI7XG4gICAgY29uc3QgZ3JvdXBBY2Nlc3MgPSBwa2dbYWN0aW9uXTtcbiAgICBjb25zdCBoYXNQZXJtaXNzaW9uID0gZ3JvdXBBY2Nlc3Muc29tZSgoZ3JvdXApID0+IG5hbWUgPT09IGdyb3VwIHx8IGdyb3Vwcy5pbmNsdWRlcyhncm91cCkpO1xuICAgIGRlYnVnKCdbYXV0aC9hbGxvd19hY3Rpb25dOiBoYXNQZXJtaXNzaW9uPyAlb30gZm9yIHVzZXI6ICVvJywgaGFzUGVybWlzc2lvbiwgdXNlcj8ubmFtZSk7XG5cbiAgICBpZiAoaGFzUGVybWlzc2lvbikge1xuICAgICAgbG9nZ2VyLmluZm8oeyByZW1vdGU6IHVzZXIubmFtZSB9LCBgYXV0aC9hbGxvd19hY3Rpb246IGFjY2VzcyBncmFudGVkIHRvOiBAe3VzZXJ9YCk7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGNhbGxiYWNrKEVycm9yQ29kZS5nZXRGb3JiaWRkZW4oYHVzZXIgJHtuYW1lfSBpcyBub3QgYWxsb3dlZCB0byAke2FjdGlvbn0gcGFja2FnZSAke3BrZy5uYW1lfWApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soRXJyb3JDb2RlLmdldFVuYXV0aG9yaXplZChgYXV0aG9yaXphdGlvbiByZXF1aXJlZCB0byAke2FjdGlvbn0gcGFja2FnZSAke3BrZy5uYW1lfWApKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVNwZWNpYWxVbnB1Ymxpc2goKTogYW55IHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh1c2VyOiBSZW1vdGVVc2VyLCBwa2c6IFBhY2thZ2UsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbiA9ICd1bnB1Ymxpc2gnO1xuICAgIC8vIHZlcmlmeSB3aGV0aGVyIHRoZSB1bnB1Ymxpc2ggcHJvcCBoYXMgYmVlbiBkZWZpbmVkXG4gICAgY29uc3QgaXNVbnB1Ymxpc2hNaXNzaW5nOiBib29sZWFuID0gXy5pc05pbChwa2dbYWN0aW9uXSk7XG4gICAgY29uc3QgaGFzR3JvdXBzOiBib29sZWFuID0gaXNVbnB1Ymxpc2hNaXNzaW5nID8gZmFsc2UgOiBwa2dbYWN0aW9uXS5sZW5ndGggPiAwO1xuICAgIGRlYnVnKCdmYWxsYmFjayB1bnB1Ymxpc2ggZm9yIEB7bmFtZX0gaGFzIGdyb3VwczogJW8gZm9yICVvJywgaGFzR3JvdXBzLCB1c2VyPy5uYW1lKTtcbiAgICBpZiAoaXNVbnB1Ymxpc2hNaXNzaW5nIHx8IGhhc0dyb3VwcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCB1bmRlZmluZWQpO1xuICAgIH1cbiAgICBkZWJ1ZygnYWxsb3dfYWN0aW9uIGZvciAlbyBmb3IgJW8gaGFzIGdyb3VwczogJW8gZm9yICVvJywgYWN0aW9uLCB1c2VyPy5uYW1lLCBoYXNHcm91cHMsIHVzZXIpO1xuICAgIHJldHVybiBhbGxvd19hY3Rpb24oYWN0aW9uKSh1c2VyLCBwa2csIGNhbGxiYWNrKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRQbHVnaW5zKGxvZ2dlcjogYW55KTogSVBsdWdpbkF1dGg8Q29uZmlnPiB7XG4gIHJldHVybiB7XG4gICAgYXV0aGVudGljYXRlKF91c2VyOiBzdHJpbmcsIF9wYXNzd29yZDogc3RyaW5nLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuICAgICAgY2IoRXJyb3JDb2RlLmdldEZvcmJpZGRlbihBUElfRVJST1IuQkFEX1VTRVJOQU1FX1BBU1NXT1JEKSk7XG4gICAgfSxcblxuICAgIGFkZF91c2VyKF91c2VyOiBzdHJpbmcsIF9wYXNzd29yZDogc3RyaW5nLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuICAgICAgcmV0dXJuIGNiKEVycm9yQ29kZS5nZXRDb25mbGljdChBUElfRVJST1IuQkFEX1VTRVJOQU1FX1BBU1NXT1JEKSk7XG4gICAgfSxcblxuICAgIC8vIEZJWE1FOiBhbGxvd19hY3Rpb24gYW5kIGFsbG93X3B1Ymxpc2ggc2hvdWxkIGJlIGluIHRoZSBAdmVyZGFjY2lvL3R5cGVzXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGFsbG93X2FjY2VzczogYWxsb3dfYWN0aW9uKCdhY2Nlc3MnLCBsb2dnZXIpLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBhbGxvd19wdWJsaXNoOiBhbGxvd19hY3Rpb24oJ3B1Ymxpc2gnLCBsb2dnZXIpLFxuICAgIGFsbG93X3VucHVibGlzaDogaGFuZGxlU3BlY2lhbFVucHVibGlzaCgpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvblRva2VuKCk6IENvb2tpZVNlc3Npb25Ub2tlbiB7XG4gIGNvbnN0IHRlbkhvdXJzVGltZSA9IDEwICogNjAgKiA2MCAqIDEwMDA7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBucG1qcy5vcmcgc2V0cyAxMGggZXhwaXJlXG4gICAgZXhwaXJlczogbmV3IERhdGUoRGF0ZS5ub3coKSArIHRlbkhvdXJzVGltZSksXG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRXZWJUb2tlbk9wdGlvbnM6IEpXVE9wdGlvbnMgPSB7XG4gIHNpZ246IHtcbiAgICAvLyBUaGUgZXhwaXJhdGlvbiB0b2tlbiBmb3IgdGhlIHdlYnNpdGUgaXMgNyBkYXlzXG4gICAgZXhwaXJlc0luOiBUSU1FX0VYUElSQVRJT05fN0QsXG4gIH0sXG4gIHZlcmlmeToge30sXG59O1xuXG5jb25zdCBkZWZhdWx0QXBpVG9rZW5Db25mOiBBUElUb2tlbk9wdGlvbnMgPSB7XG4gIGxlZ2FjeTogdHJ1ZSxcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VjdXJpdHk6IFNlY3VyaXR5ID0ge1xuICB3ZWI6IGRlZmF1bHRXZWJUb2tlbk9wdGlvbnMsXG4gIGFwaTogZGVmYXVsdEFwaVRva2VuQ29uZixcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWN1cml0eShjb25maWc6IENvbmZpZyk6IFNlY3VyaXR5IHtcbiAgaWYgKF8uaXNOaWwoY29uZmlnLnNlY3VyaXR5KSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gXy5tZXJnZShkZWZhdWx0U2VjdXJpdHksIGNvbmZpZy5zZWN1cml0eSk7XG4gIH1cblxuICByZXR1cm4gZGVmYXVsdFNlY3VyaXR5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UodXNlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGB5b3UgYXJlIGF1dGhlbnRpY2F0ZWQgYXMgJyR7dXNlcn0nYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVXNlckJ1ZmZlcihuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBCdWZmZXIge1xuICByZXR1cm4gQnVmZmVyLmZyb20oYCR7bmFtZX06JHtwYXNzd29yZH1gLCAndXRmOCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBRVNMZWdhY3koc2VjdXJpdHk6IFNlY3VyaXR5KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgbGVnYWN5LCBqd3QgfSA9IHNlY3VyaXR5LmFwaTtcblxuICByZXR1cm4gXy5pc05pbChsZWdhY3kpID09PSBmYWxzZSAmJiBfLmlzTmlsKGp3dCkgJiYgbGVnYWN5ID09PSB0cnVlO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXBpVG9rZW4oYXV0aDogSUF1dGhXZWJVSSwgY29uZmlnOiBDb25maWcsIHJlbW90ZVVzZXI6IFJlbW90ZVVzZXIsIGFlc1Bhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBzZWN1cml0eTogU2VjdXJpdHkgPSBnZXRTZWN1cml0eShjb25maWcpO1xuXG4gIGlmIChpc0FFU0xlZ2FjeShzZWN1cml0eSkpIHtcbiAgICAvLyBmYWxsYmFjayBhbGwgZ29lcyB0byBBRVMgZW5jcnlwdGlvblxuICAgIHJldHVybiBhd2FpdCBuZXcgUHJvbWlzZSgocmVzb2x2ZSk6IHZvaWQgPT4ge1xuICAgICAgcmVzb2x2ZShhdXRoLmFlc0VuY3J5cHQoYnVpbGRVc2VyQnVmZmVyKHJlbW90ZVVzZXIubmFtZSBhcyBzdHJpbmcsIGFlc1Bhc3N3b3JkKSkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgICB9KTtcbiAgfVxuICAvLyBpIGFtIHdpbGluZyB0byB1c2UgaGVyZSBfLmlzTmlsIGJ1dCBmbG93IGRvZXMgbm90IGxpa2UgaXQgeWV0LlxuICBjb25zdCB7IGp3dCB9ID0gc2VjdXJpdHkuYXBpO1xuXG4gIGlmIChqd3QgJiYgand0LnNpZ24pIHtcbiAgICByZXR1cm4gYXdhaXQgYXV0aC5qd3RFbmNyeXB0KHJlbW90ZVVzZXIsIGp3dC5zaWduKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICByZXNvbHZlKGF1dGguYWVzRW5jcnlwdChidWlsZFVzZXJCdWZmZXIocmVtb3RlVXNlci5uYW1lIGFzIHN0cmluZywgYWVzUGFzc3dvcmQpKS50b1N0cmluZygnYmFzZTY0JykpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXV0aFRva2VuSGVhZGVyKGF1dGhvcml6YXRpb25IZWFkZXI6IHN0cmluZyk6IEF1dGhUb2tlbkhlYWRlciB7XG4gIGNvbnN0IHBhcnRzID0gYXV0aG9yaXphdGlvbkhlYWRlci5zcGxpdCgnICcpO1xuICBjb25zdCBbc2NoZW1lLCB0b2tlbl0gPSBwYXJ0cztcblxuICByZXR1cm4geyBzY2hlbWUsIHRva2VuIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUJhc2ljUGF5bG9hZChjcmVkZW50aWFsczogc3RyaW5nKTogQmFzaWNQYXlsb2FkIHtcbiAgY29uc3QgaW5kZXggPSBjcmVkZW50aWFscy5pbmRleE9mKCc6Jyk7XG4gIGlmIChpbmRleCA8IDApIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCB1c2VyOiBzdHJpbmcgPSBjcmVkZW50aWFscy5zbGljZSgwLCBpbmRleCk7XG4gIGNvbnN0IHBhc3N3b3JkOiBzdHJpbmcgPSBjcmVkZW50aWFscy5zbGljZShpbmRleCArIDEpO1xuXG4gIHJldHVybiB7IHVzZXIsIHBhc3N3b3JkIH07XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUFFU0NyZWRlbnRpYWxzKGF1dGhvcml6YXRpb25IZWFkZXI6IHN0cmluZywgc2VjcmV0OiBzdHJpbmcpIHtcbiAgY29uc3QgeyBzY2hlbWUsIHRva2VuIH0gPSBwYXJzZUF1dGhUb2tlbkhlYWRlcihhdXRob3JpemF0aW9uSGVhZGVyKTtcblxuICAvLyBiYXNpYyBpcyBkZXByZWNhdGVkIGFuZCBzaG91bGQgbm90IGJlIGVuZm9yY2VkXG4gIGlmIChzY2hlbWUudG9VcHBlckNhc2UoKSA9PT0gVE9LRU5fQkFTSUMudG9VcHBlckNhc2UoKSkge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gY29udmVydFBheWxvYWRUb0Jhc2U2NCh0b2tlbikudG9TdHJpbmcoKTtcblxuICAgIHJldHVybiBjcmVkZW50aWFscztcbiAgfSBlbHNlIGlmIChzY2hlbWUudG9VcHBlckNhc2UoKSA9PT0gVE9LRU5fQkVBUkVSLnRvVXBwZXJDYXNlKCkpIHtcbiAgICBjb25zdCB0b2tlbkFzQnVmZmVyID0gY29udmVydFBheWxvYWRUb0Jhc2U2NCh0b2tlbik7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBhZXNEZWNyeXB0KHRva2VuQXNCdWZmZXIsIHNlY3JldCkudG9TdHJpbmcoJ3V0ZjgnKTtcblxuICAgIHJldHVybiBjcmVkZW50aWFscztcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgZXhwaXJlUmVhc29uczogc3RyaW5nW10gPSBbJ0pzb25XZWJUb2tlbkVycm9yJywgJ1Rva2VuRXhwaXJlZEVycm9yJ107XG5cbmV4cG9ydCBmdW5jdGlvbiB2ZXJpZnlKV1RQYXlsb2FkKHRva2VuOiBzdHJpbmcsIHNlY3JldDogc3RyaW5nKTogUmVtb3RlVXNlciB7XG4gIHRyeSB7XG4gICAgY29uc3QgcGF5bG9hZDogUmVtb3RlVXNlciA9IHZlcmlmeVBheWxvYWQodG9rZW4sIHNlY3JldCk7XG5cbiAgICByZXR1cm4gcGF5bG9hZDtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAvLyAjMTY4IHRoaXMgY2hlY2sgc2hvdWxkIGJlIHJlbW92ZWQgYXMgc29vbiBBRVMgZW5jcnlwdCBpcyByZW1vdmVkLlxuICAgIGlmIChleHBpcmVSZWFzb25zLmluY2x1ZGVzKGVycm9yLm5hbWUpKSB7XG4gICAgICAvLyBpdCBtaWdodCBiZSBwb3NzaWJsZSB0aGUgand0IGNvbmZpZ3VyYXRpb24gaXMgZW5hYmxlZCBhbmRcbiAgICAgIC8vIG9sZCB0b2tlbnMgZmFpbHMgc3RpbGwgcmVtYWlucyBpbiB1c2FnZSwgdGh1c1xuICAgICAgLy8gd2UgcmV0dXJuIGFuIGFub255bW91cyB1c2VyIHRvIGZvcmNlIGxvZyBpbi5cbiAgICAgIHJldHVybiBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk7XG4gICAgfVxuICAgIHRocm93IEVycm9yQ29kZS5nZXRDb2RlKEhUVFBfU1RBVFVTLlVOQVVUSE9SSVpFRCwgZXJyb3IubWVzc2FnZSk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQXV0aEhlYWRlclZhbGlkKGF1dGhvcml6YXRpb246IHN0cmluZyk6IGJvb2xlYW4ge1xuICByZXR1cm4gYXV0aG9yaXphdGlvbi5zcGxpdCgnICcpLmxlbmd0aCA9PT0gMjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldE1pZGRsZXdhcmVDcmVkZW50aWFscyhzZWN1cml0eTogU2VjdXJpdHksIHNlY3JldDogc3RyaW5nLCBhdXRob3JpemF0aW9uSGVhZGVyOiBzdHJpbmcpOiBBdXRoTWlkZGxld2FyZVBheWxvYWQge1xuICBpZiAoaXNBRVNMZWdhY3koc2VjdXJpdHkpKSB7XG4gICAgY29uc3QgY3JlZGVudGlhbHMgPSBwYXJzZUFFU0NyZWRlbnRpYWxzKGF1dGhvcml6YXRpb25IZWFkZXIsIHNlY3JldCk7XG4gICAgaWYgKCFjcmVkZW50aWFscykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHBhcnNlZENyZWRlbnRpYWxzID0gcGFyc2VCYXNpY1BheWxvYWQoY3JlZGVudGlhbHMpO1xuICAgIGlmICghcGFyc2VkQ3JlZGVudGlhbHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICByZXR1cm4gcGFyc2VkQ3JlZGVudGlhbHM7XG4gIH1cbiAgY29uc3QgeyBzY2hlbWUsIHRva2VuIH0gPSBwYXJzZUF1dGhUb2tlbkhlYWRlcihhdXRob3JpemF0aW9uSGVhZGVyKTtcblxuICBpZiAoXy5pc1N0cmluZyh0b2tlbikgJiYgc2NoZW1lLnRvVXBwZXJDYXNlKCkgPT09IFRPS0VOX0JFQVJFUi50b1VwcGVyQ2FzZSgpKSB7XG4gICAgcmV0dXJuIHZlcmlmeUpXVFBheWxvYWQodG9rZW4sIHNlY3JldCk7XG4gIH1cbn1cbiJdfQ==
315
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvYXV0aC11dGlscy50cyJdLCJuYW1lcyI6WyJkZWJ1ZyIsInZhbGlkYXRlUGFzc3dvcmQiLCJwYXNzd29yZCIsIm1pbkxlbmd0aCIsIkRFRkFVTFRfTUlOX0xJTUlUX1BBU1NXT1JEIiwibGVuZ3RoIiwiY3JlYXRlUmVtb3RlVXNlciIsIm5hbWUiLCJwbHVnaW5Hcm91cHMiLCJpc0dyb3VwVmFsaWQiLCJBcnJheSIsImlzQXJyYXkiLCJncm91cHMiLCJjb25jYXQiLCJST0xFUyIsIiRBTEwiLCIkQVVUSCIsIkRFUFJFQ0FURURfQUxMIiwiREVQUkVDQVRFRF9BVVRIIiwiQUxMIiwicmVhbF9ncm91cHMiLCJjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyIiwidW5kZWZpbmVkIiwiJEFOT05ZTU9VUyIsIkRFUFJFQ0FURURfQU5PTllNT1VTIiwiYWxsb3dfYWN0aW9uIiwiYWN0aW9uIiwidXNlciIsInBrZyIsImNhbGxiYWNrIiwiZ3JvdXBBY2Nlc3MiLCJoYXNQZXJtaXNzaW9uIiwic29tZSIsImdyb3VwIiwiaW5jbHVkZXMiLCJsb2dnZXIiLCJpbmZvIiwicmVtb3RlIiwiRXJyb3JDb2RlIiwiZ2V0Rm9yYmlkZGVuIiwiZ2V0VW5hdXRob3JpemVkIiwiaGFuZGxlU3BlY2lhbFVucHVibGlzaCIsImlzVW5wdWJsaXNoTWlzc2luZyIsIl8iLCJpc05pbCIsImhhc0dyb3VwcyIsImdldERlZmF1bHRQbHVnaW5zIiwiYXV0aGVudGljYXRlIiwiX3VzZXIiLCJfcGFzc3dvcmQiLCJjYiIsIkFQSV9FUlJPUiIsIkJBRF9VU0VSTkFNRV9QQVNTV09SRCIsImFkZF91c2VyIiwiZ2V0Q29uZmxpY3QiLCJhbGxvd19hY2Nlc3MiLCJhbGxvd19wdWJsaXNoIiwiYWxsb3dfdW5wdWJsaXNoIiwiY3JlYXRlU2Vzc2lvblRva2VuIiwidGVuSG91cnNUaW1lIiwiZXhwaXJlcyIsIkRhdGUiLCJub3ciLCJkZWZhdWx0V2ViVG9rZW5PcHRpb25zIiwic2lnbiIsImV4cGlyZXNJbiIsIlRJTUVfRVhQSVJBVElPTl8xSCIsInZlcmlmeSIsImRlZmF1bHRBcGlUb2tlbkNvbmYiLCJsZWdhY3kiLCJkZWZhdWx0VXNlclJhdGVMaW1pdGluZyIsIndpbmRvd01zIiwibWF4IiwiZGVmYXVsdFNlY3VyaXR5Iiwid2ViIiwiYXBpIiwiZ2V0U2VjdXJpdHkiLCJjb25maWciLCJzZWN1cml0eSIsIm1lcmdlIiwiZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UiLCJidWlsZFVzZXJCdWZmZXIiLCJCdWZmZXIiLCJmcm9tIiwiaXNBRVNMZWdhY3kiLCJqd3QiLCJnZXRBcGlUb2tlbiIsImF1dGgiLCJyZW1vdGVVc2VyIiwiYWVzUGFzc3dvcmQiLCJQcm9taXNlIiwicmVzb2x2ZSIsImFlc0VuY3J5cHQiLCJ0b1N0cmluZyIsImp3dEVuY3J5cHQiLCJwYXJzZUF1dGhUb2tlbkhlYWRlciIsImF1dGhvcml6YXRpb25IZWFkZXIiLCJwYXJ0cyIsInNwbGl0Iiwic2NoZW1lIiwidG9rZW4iLCJwYXJzZUJhc2ljUGF5bG9hZCIsImNyZWRlbnRpYWxzIiwiaW5kZXgiLCJpbmRleE9mIiwic2xpY2UiLCJwYXJzZUFFU0NyZWRlbnRpYWxzIiwic2VjcmV0IiwidG9VcHBlckNhc2UiLCJUT0tFTl9CQVNJQyIsIlRPS0VOX0JFQVJFUiIsInRva2VuQXNCdWZmZXIiLCJleHBpcmVSZWFzb25zIiwidmVyaWZ5SldUUGF5bG9hZCIsInBheWxvYWQiLCJlcnJvciIsImdldENvZGUiLCJIVFRQX1NUQVRVUyIsIlVOQVVUSE9SSVpFRCIsIm1lc3NhZ2UiLCJpc0F1dGhIZWFkZXJWYWxpZCIsImF1dGhvcml6YXRpb24iLCJnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMiLCJwYXJzZWRDcmVkZW50aWFscyIsImlzU3RyaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7Ozs7QUFFQSxNQUFNQSxLQUFLLEdBQUcsb0JB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LENBQTJCQyxhQUEzQixFQUEyRDtBQUNoRSxTQUFPQSxhQUFhLENBQUN2QixLQUFkLENBQW9CLEdBQXBCLEVBQXlCN0YsTUFBekIsS0FBb0MsQ0FBM0M7QUFDRDs7QUFFTSxTQUFTcUgsd0JBQVQsQ0FBa0M1QyxRQUFsQyxFQUFzRDZCLE1BQXRELEVBQXNFWCxtQkFBdEUsRUFBMEg7QUFDL0gsTUFBSVosV0FBVyxDQUFDTixRQUFELENBQWYsRUFBMkI7QUFDekIsVUFBTXdCLFdBQVcsR0FBR0ksbUJBQW1CLENBQUNWLG1CQUFELEVBQXNCVyxNQUF0QixDQUF2Qzs7QUFDQSxRQUFJLENBQUNMLFdBQUwsRUFBa0I7QUFDaEI7QUFDRDs7QUFFRCxVQUFNcUIsaUJBQWlCLEdBQUd0QixpQkFBaUIsQ0FBQ0MsV0FBRCxDQUEzQzs7QUFDQSxRQUFJLENBQUNxQixpQkFBTCxFQUF3QjtBQUN0QjtBQUNEOztBQUVELFdBQU9BLGlCQUFQO0FBQ0Q7O0FBQ0QsUUFBTTtBQUFFeEIsSUFBQUEsTUFBRjtBQUFVQyxJQUFBQTtBQUFWLE1BQW9CTCxvQkFBb0IsQ0FBQ0MsbUJBQUQsQ0FBOUM7O0FBRUEsTUFBSXJELGdCQUFFaUYsUUFBRixDQUFXeEIsS0FBWCxLQUFxQkQsTUFBTSxDQUFDUyxXQUFQLE9BQXlCRSx3QkFBYUYsV0FBYixFQUFsRCxFQUE4RTtBQUM1RSxXQUFPSyxnQkFBZ0IsQ0FBQ2IsS0FBRCxFQUFRTyxNQUFSLENBQXZCO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYnVpbGREZWJ1ZyBmcm9tICdkZWJ1Zyc7XG5pbXBvcnQgeyBSZW1vdGVVc2VyLCBQYWNrYWdlLCBDYWxsYmFjaywgQ29uZmlnLCBTZWN1cml0eSwgQVBJVG9rZW5PcHRpb25zLCBKV1RPcHRpb25zLCBJUGx1Z2luQXV0aCB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgQ29va2llU2Vzc2lvblRva2VuLCBJQXV0aFdlYlVJLCBBdXRoTWlkZGxld2FyZVBheWxvYWQsIEF1dGhUb2tlbkhlYWRlciwgQmFzaWNQYXlsb2FkIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vbGliL2xvZ2dlcic7XG5pbXBvcnQgeyBjb252ZXJ0UGF5bG9hZFRvQmFzZTY0LCBFcnJvckNvZGUgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCB7IEFQSV9FUlJPUiwgSFRUUF9TVEFUVVMsIFJPTEVTLCBUSU1FX0VYUElSQVRJT05fMUgsIFRPS0VOX0JBU0lDLCBUT0tFTl9CRUFSRVIsIERFRkFVTFRfTUlOX0xJTUlUX1BBU1NXT1JEIH0gZnJvbSAnLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgYWVzRGVjcnlwdCwgdmVyaWZ5UGF5bG9hZCB9IGZyb20gJy4vY3J5cHRvLXV0aWxzJztcblxuY29uc3QgZGVidWcgPSBidWlsZERlYnVnKCd2ZXJkYWNjaW8nKTtcblxuZXhwb3J0IGZ1bmN0aW9uIHZhbGlkYXRlUGFzc3dvcmQoXG4gIHBhc3N3b3JkOiBzdHJpbmcsIC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuICBtaW5MZW5ndGg6IG51bWJlciA9IERFRkFVTFRfTUlOX0xJTUlUX1BBU1NXT1JEXG4pOiBib29sZWFuIHtcbiAgcmV0dXJuIHR5cGVvZiBwYXNzd29yZCA9PT0gJ3N0cmluZycgJiYgcGFzc3dvcmQubGVuZ3RoID49IG1pbkxlbmd0aDtcbn1cblxuLyoqXG4gKiBDcmVhdGUgYSBSZW1vdGVVc2VyIG9iamVjdFxuICogQHJldHVybiB7T2JqZWN0fSB7IG5hbWU6IHh4LCBwbHVnaW5Hcm91cHM6IFtdLCByZWFsX2dyb3VwczogW10gfVxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlUmVtb3RlVXNlcihuYW1lOiBzdHJpbmcsIHBsdWdpbkdyb3Vwczogc3RyaW5nW10pOiBSZW1vdGVVc2VyIHtcbiAgY29uc3QgaXNHcm91cFZhbGlkOiBib29sZWFuID0gQXJyYXkuaXNBcnJheShwbHVnaW5Hcm91cHMpO1xuICBjb25zdCBncm91cHMgPSAoaXNHcm91cFZhbGlkID8gcGx1Z2luR3JvdXBzIDogW10pLmNvbmNhdChbUk9MRVMuJEFMTCwgUk9MRVMuJEFVVEgsIFJPTEVTLkRFUFJFQ0FURURfQUxMLCBST0xFUy5ERVBSRUNBVEVEX0FVVEgsIFJPTEVTLkFMTF0pO1xuXG4gIHJldHVybiB7XG4gICAgbmFtZSxcbiAgICBncm91cHMsXG4gICAgcmVhbF9ncm91cHM6IHBsdWdpbkdyb3VwcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBCdWlsZHMgYW4gYW5vbnltb3VzIHJlbW90ZSB1c2VyIGluIGNhc2Ugbm9uZSBpcyBsb2dnZWQgaW4uXG4gKiBAcmV0dXJuIHtPYmplY3R9IHsgbmFtZTogeHgsIGdyb3VwczogW10sIHJlYWxfZ3JvdXBzOiBbXSB9XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVBbm9ueW1vdXNSZW1vdGVVc2VyKCk6IFJlbW90ZVVzZXIge1xuICByZXR1cm4ge1xuICAgIG5hbWU6IHVuZGVmaW5lZCxcbiAgICAvLyBncm91cHMgd2l0aG91dCAnJCcgYXJlIGdvaW5nIHRvIGJlIGRlcHJlY2F0ZWQgZXZlbnR1YWxseVxuICAgIGdyb3VwczogW1JPTEVTLiRBTEwsIFJPTEVTLiRBTk9OWU1PVVMsIFJPTEVTLkRFUFJFQ0FURURfQUxMLCBST0xFUy5ERVBSRUNBVEVEX0FOT05ZTU9VU10sXG4gICAgcmVhbF9ncm91cHM6IFtdLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYWxsb3dfYWN0aW9uKGFjdGlvbjogc3RyaW5nKTogRnVuY3Rpb24ge1xuICByZXR1cm4gZnVuY3Rpb24gKHVzZXI6IFJlbW90ZVVzZXIsIHBrZzogUGFja2FnZSwgY2FsbGJhY2s6IENhbGxiYWNrKTogdm9pZCB7XG4gICAgZGVidWcoJ1thdXRoL2FsbG93X2FjdGlvbl06IHVzZXI6ICVvJywgdXNlcj8ubmFtZSk7XG4gICAgY29uc3QgeyBuYW1lLCBncm91cHMgfSA9IHVzZXI7XG4gICAgY29uc3QgZ3JvdXBBY2Nlc3MgPSBwa2dbYWN0aW9uXTtcbiAgICBjb25zdCBoYXNQZXJtaXNzaW9uID0gZ3JvdXBBY2Nlc3Muc29tZSgoZ3JvdXApID0+IG5hbWUgPT09IGdyb3VwIHx8IGdyb3Vwcy5pbmNsdWRlcyhncm91cCkpO1xuICAgIGRlYnVnKCdbYXV0aC9hbGxvd19hY3Rpb25dOiBoYXNQZXJtaXNzaW9uPyAlb30gZm9yIHVzZXI6ICVvJywgaGFzUGVybWlzc2lvbiwgdXNlcj8ubmFtZSk7XG5cbiAgICBpZiAoaGFzUGVybWlzc2lvbikge1xuICAgICAgbG9nZ2VyLmluZm8oeyByZW1vdGU6IHVzZXIubmFtZSB9LCBgYXV0aC9hbGxvd19hY3Rpb246IGFjY2VzcyBncmFudGVkIHRvOiBAe3VzZXJ9YCk7XG4gICAgICByZXR1cm4gY2FsbGJhY2sobnVsbCwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGNhbGxiYWNrKEVycm9yQ29kZS5nZXRGb3JiaWRkZW4oYHVzZXIgJHtuYW1lfSBpcyBub3QgYWxsb3dlZCB0byAke2FjdGlvbn0gcGFja2FnZSAke3BrZy5uYW1lfWApKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2soRXJyb3JDb2RlLmdldFVuYXV0aG9yaXplZChgYXV0aG9yaXphdGlvbiByZXF1aXJlZCB0byAke2FjdGlvbn0gcGFja2FnZSAke3BrZy5uYW1lfWApKTtcbiAgICB9XG4gIH07XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGhhbmRsZVNwZWNpYWxVbnB1Ymxpc2goKTogYW55IHtcbiAgcmV0dXJuIGZ1bmN0aW9uICh1c2VyOiBSZW1vdGVVc2VyLCBwa2c6IFBhY2thZ2UsIGNhbGxiYWNrOiBDYWxsYmFjayk6IHZvaWQge1xuICAgIGNvbnN0IGFjdGlvbiA9ICd1bnB1Ymxpc2gnO1xuICAgIC8vIHZlcmlmeSB3aGV0aGVyIHRoZSB1bnB1Ymxpc2ggcHJvcCBoYXMgYmVlbiBkZWZpbmVkXG4gICAgY29uc3QgaXNVbnB1Ymxpc2hNaXNzaW5nOiBib29sZWFuID0gXy5pc05pbChwa2dbYWN0aW9uXSk7XG4gICAgY29uc3QgaGFzR3JvdXBzOiBib29sZWFuID0gaXNVbnB1Ymxpc2hNaXNzaW5nID8gZmFsc2UgOiBwa2dbYWN0aW9uXS5sZW5ndGggPiAwO1xuICAgIGRlYnVnKCdmYWxsYmFjayB1bnB1Ymxpc2ggZm9yIEB7bmFtZX0gaGFzIGdyb3VwczogJW8gZm9yICVvJywgaGFzR3JvdXBzLCB1c2VyPy5uYW1lKTtcbiAgICBpZiAoaXNVbnB1Ymxpc2hNaXNzaW5nIHx8IGhhc0dyb3VwcyA9PT0gZmFsc2UpIHtcbiAgICAgIHJldHVybiBjYWxsYmFjayhudWxsLCB1bmRlZmluZWQpO1xuICAgIH1cbiAgICBkZWJ1ZygnYWxsb3dfYWN0aW9uIGZvciAlbyBmb3IgJW8gaGFzIGdyb3VwczogJW8gZm9yICVvJywgYWN0aW9uLCB1c2VyPy5uYW1lLCBoYXNHcm91cHMsIHVzZXIpO1xuICAgIHJldHVybiBhbGxvd19hY3Rpb24oYWN0aW9uKSh1c2VyLCBwa2csIGNhbGxiYWNrKTtcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldERlZmF1bHRQbHVnaW5zKGxvZ2dlcjogYW55KTogSVBsdWdpbkF1dGg8Q29uZmlnPiB7XG4gIHJldHVybiB7XG4gICAgYXV0aGVudGljYXRlKF91c2VyOiBzdHJpbmcsIF9wYXNzd29yZDogc3RyaW5nLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuICAgICAgY2IoRXJyb3JDb2RlLmdldEZvcmJpZGRlbihBUElfRVJST1IuQkFEX1VTRVJOQU1FX1BBU1NXT1JEKSk7XG4gICAgfSxcblxuICAgIGFkZF91c2VyKF91c2VyOiBzdHJpbmcsIF9wYXNzd29yZDogc3RyaW5nLCBjYjogQ2FsbGJhY2spOiB2b2lkIHtcbiAgICAgIC8vIHByYWdtYTogYWxsb3dsaXN0IHNlY3JldFxuICAgICAgcmV0dXJuIGNiKEVycm9yQ29kZS5nZXRDb25mbGljdChBUElfRVJST1IuQkFEX1VTRVJOQU1FX1BBU1NXT1JEKSk7XG4gICAgfSxcblxuICAgIC8vIEZJWE1FOiBhbGxvd19hY3Rpb24gYW5kIGFsbG93X3B1Ymxpc2ggc2hvdWxkIGJlIGluIHRoZSBAdmVyZGFjY2lvL3R5cGVzXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGFsbG93X2FjY2VzczogYWxsb3dfYWN0aW9uKCdhY2Nlc3MnLCBsb2dnZXIpLFxuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBhbGxvd19wdWJsaXNoOiBhbGxvd19hY3Rpb24oJ3B1Ymxpc2gnLCBsb2dnZXIpLFxuICAgIGFsbG93X3VucHVibGlzaDogaGFuZGxlU3BlY2lhbFVucHVibGlzaCgpLFxuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlU2Vzc2lvblRva2VuKCk6IENvb2tpZVNlc3Npb25Ub2tlbiB7XG4gIGNvbnN0IHRlbkhvdXJzVGltZSA9IDEwICogNjAgKiA2MCAqIDEwMDA7XG5cbiAgcmV0dXJuIHtcbiAgICAvLyBucG1qcy5vcmcgc2V0cyAxMGggZXhwaXJlXG4gICAgZXhwaXJlczogbmV3IERhdGUoRGF0ZS5ub3coKSArIHRlbkhvdXJzVGltZSksXG4gIH07XG59XG5cbmNvbnN0IGRlZmF1bHRXZWJUb2tlbk9wdGlvbnM6IEpXVE9wdGlvbnMgPSB7XG4gIHNpZ246IHtcbiAgICAvLyBUaGUgZXhwaXJhdGlvbiB0b2tlbiBmb3IgdGhlIHdlYnNpdGUgaXMgMSBob3VyXG4gICAgZXhwaXJlc0luOiBUSU1FX0VYUElSQVRJT05fMUgsXG4gIH0sXG4gIHZlcmlmeToge30sXG59O1xuXG5jb25zdCBkZWZhdWx0QXBpVG9rZW5Db25mOiBBUElUb2tlbk9wdGlvbnMgPSB7XG4gIGxlZ2FjeTogdHJ1ZSxcbn07XG5cbi8vIHdlIGxpbWl0IG1heCAxMDAwIHJlcXVlc3QgcGVyIDE1IG1pbnV0ZXMgb24gdXNlciBlbmRwb2ludHNcbmV4cG9ydCBjb25zdCBkZWZhdWx0VXNlclJhdGVMaW1pdGluZyA9IHtcbiAgd2luZG93TXM6IDE1ICogNjAgKiAxMDAwLCAvLyAxNSBtaW51dGVzXG4gIG1heDogMTAwMCxcbn07XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0U2VjdXJpdHk6IFNlY3VyaXR5ID0ge1xuICB3ZWI6IGRlZmF1bHRXZWJUb2tlbk9wdGlvbnMsXG4gIGFwaTogZGVmYXVsdEFwaVRva2VuQ29uZixcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRTZWN1cml0eShjb25maWc6IENvbmZpZyk6IFNlY3VyaXR5IHtcbiAgaWYgKF8uaXNOaWwoY29uZmlnLnNlY3VyaXR5KSA9PT0gZmFsc2UpIHtcbiAgICByZXR1cm4gXy5tZXJnZShkZWZhdWx0U2VjdXJpdHksIGNvbmZpZy5zZWN1cml0eSk7XG4gIH1cblxuICByZXR1cm4gZGVmYXVsdFNlY3VyaXR5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXV0aGVudGljYXRlZE1lc3NhZ2UodXNlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGB5b3UgYXJlIGF1dGhlbnRpY2F0ZWQgYXMgJyR7dXNlcn0nYDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkVXNlckJ1ZmZlcihuYW1lOiBzdHJpbmcsIHBhc3N3b3JkOiBzdHJpbmcpOiBCdWZmZXIge1xuICByZXR1cm4gQnVmZmVyLmZyb20oYCR7bmFtZX06JHtwYXNzd29yZH1gLCAndXRmOCcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNBRVNMZWdhY3koc2VjdXJpdHk6IFNlY3VyaXR5KTogYm9vbGVhbiB7XG4gIGNvbnN0IHsgbGVnYWN5LCBqd3QgfSA9IHNlY3VyaXR5LmFwaTtcblxuICByZXR1cm4gXy5pc05pbChsZWdhY3kpID09PSBmYWxzZSAmJiBfLmlzTmlsKGp3dCkgJiYgbGVnYWN5ID09PSB0cnVlO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0QXBpVG9rZW4oYXV0aDogSUF1dGhXZWJVSSwgY29uZmlnOiBDb25maWcsIHJlbW90ZVVzZXI6IFJlbW90ZVVzZXIsIGFlc1Bhc3N3b3JkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xuICBjb25zdCBzZWN1cml0eTogU2VjdXJpdHkgPSBnZXRTZWN1cml0eShjb25maWcpO1xuICBpZiAoaXNBRVNMZWdhY3koc2VjdXJpdHkpKSB7XG4gICAgLy8gZmFsbGJhY2sgYWxsIGdvZXMgdG8gQUVTIGVuY3J5cHRpb25cbiAgICByZXR1cm4gYXdhaXQgbmV3IFByb21pc2UoKHJlc29sdmUpOiB2b2lkID0+IHtcbiAgICAgIHJlc29sdmUoYXV0aC5hZXNFbmNyeXB0KGJ1aWxkVXNlckJ1ZmZlcihyZW1vdGVVc2VyLm5hbWUgYXMgc3RyaW5nLCBhZXNQYXNzd29yZCkpLnRvU3RyaW5nKCdiYXNlNjQnKSk7XG4gICAgfSk7XG4gIH1cbiAgLy8gaSBhbSB3aWxpbmcgdG8gdXNlIGhlcmUgXy5pc05pbCBidXQgZmxvdyBkb2VzIG5vdCBsaWtlIGl0IHlldC5cbiAgY29uc3QgeyBqd3QgfSA9IHNlY3VyaXR5LmFwaTtcblxuICBpZiAoand0ICYmIGp3dC5zaWduKSB7XG4gICAgcmV0dXJuIGF3YWl0IGF1dGguand0RW5jcnlwdChyZW1vdGVVc2VyLCBqd3Quc2lnbik7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IG5ldyBQcm9taXNlKChyZXNvbHZlKTogdm9pZCA9PiB7XG4gICAgcmVzb2x2ZShhdXRoLmFlc0VuY3J5cHQoYnVpbGRVc2VyQnVmZmVyKHJlbW90ZVVzZXIubmFtZSBhcyBzdHJpbmcsIGFlc1Bhc3N3b3JkKSkudG9TdHJpbmcoJ2Jhc2U2NCcpKTtcbiAgfSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZUF1dGhUb2tlbkhlYWRlcihhdXRob3JpemF0aW9uSGVhZGVyOiBzdHJpbmcpOiBBdXRoVG9rZW5IZWFkZXIge1xuICBjb25zdCBwYXJ0cyA9IGF1dGhvcml6YXRpb25IZWFkZXIuc3BsaXQoJyAnKTtcbiAgY29uc3QgW3NjaGVtZSwgdG9rZW5dID0gcGFydHM7XG5cbiAgcmV0dXJuIHsgc2NoZW1lLCB0b2tlbiB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VCYXNpY1BheWxvYWQoY3JlZGVudGlhbHM6IHN0cmluZyk6IEJhc2ljUGF5bG9hZCB7XG4gIGNvbnN0IGluZGV4ID0gY3JlZGVudGlhbHMuaW5kZXhPZignOicpO1xuICBpZiAoaW5kZXggPCAwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdXNlcjogc3RyaW5nID0gY3JlZGVudGlhbHMuc2xpY2UoMCwgaW5kZXgpO1xuICBjb25zdCBwYXNzd29yZDogc3RyaW5nID0gY3JlZGVudGlhbHMuc2xpY2UoaW5kZXggKyAxKTtcblxuICByZXR1cm4geyB1c2VyLCBwYXNzd29yZCB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VBRVNDcmVkZW50aWFscyhhdXRob3JpemF0aW9uSGVhZGVyOiBzdHJpbmcsIHNlY3JldDogc3RyaW5nKSB7XG4gIGNvbnN0IHsgc2NoZW1lLCB0b2tlbiB9ID0gcGFyc2VBdXRoVG9rZW5IZWFkZXIoYXV0aG9yaXphdGlvbkhlYWRlcik7XG5cbiAgLy8gYmFzaWMgaXMgZGVwcmVjYXRlZCBhbmQgc2hvdWxkIG5vdCBiZSBlbmZvcmNlZFxuICBpZiAoc2NoZW1lLnRvVXBwZXJDYXNlKCkgPT09IFRPS0VOX0JBU0lDLnRvVXBwZXJDYXNlKCkpIHtcbiAgICBjb25zdCBjcmVkZW50aWFscyA9IGNvbnZlcnRQYXlsb2FkVG9CYXNlNjQodG9rZW4pLnRvU3RyaW5nKCk7XG5cbiAgICByZXR1cm4gY3JlZGVudGlhbHM7XG4gIH0gZWxzZSBpZiAoc2NoZW1lLnRvVXBwZXJDYXNlKCkgPT09IFRPS0VOX0JFQVJFUi50b1VwcGVyQ2FzZSgpKSB7XG4gICAgY29uc3QgdG9rZW5Bc0J1ZmZlciA9IGNvbnZlcnRQYXlsb2FkVG9CYXNlNjQodG9rZW4pO1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gYWVzRGVjcnlwdCh0b2tlbkFzQnVmZmVyLCBzZWNyZXQpLnRvU3RyaW5nKCd1dGY4Jyk7XG5cbiAgICByZXR1cm4gY3JlZGVudGlhbHM7XG4gIH1cbn1cblxuZXhwb3J0IGNvbnN0IGV4cGlyZVJlYXNvbnM6IHN0cmluZ1tdID0gWydKc29uV2ViVG9rZW5FcnJvcicsICdUb2tlbkV4cGlyZWRFcnJvciddO1xuXG5leHBvcnQgZnVuY3Rpb24gdmVyaWZ5SldUUGF5bG9hZCh0b2tlbjogc3RyaW5nLCBzZWNyZXQ6IHN0cmluZyk6IFJlbW90ZVVzZXIge1xuICB0cnkge1xuICAgIGNvbnN0IHBheWxvYWQ6IFJlbW90ZVVzZXIgPSB2ZXJpZnlQYXlsb2FkKHRva2VuLCBzZWNyZXQpO1xuXG4gICAgcmV0dXJuIHBheWxvYWQ7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgLy8gIzE2OCB0aGlzIGNoZWNrIHNob3VsZCBiZSByZW1vdmVkIGFzIHNvb24gQUVTIGVuY3J5cHQgaXMgcmVtb3ZlZC5cbiAgICBpZiAoZXhwaXJlUmVhc29ucy5pbmNsdWRlcyhlcnJvci5uYW1lKSkge1xuICAgICAgLy8gaXQgbWlnaHQgYmUgcG9zc2libGUgdGhlIGp3dCBjb25maWd1cmF0aW9uIGlzIGVuYWJsZWQgYW5kXG4gICAgICAvLyBvbGQgdG9rZW5zIGZhaWxzIHN0aWxsIHJlbWFpbnMgaW4gdXNhZ2UsIHRodXNcbiAgICAgIC8vIHdlIHJldHVybiBhbiBhbm9ueW1vdXMgdXNlciB0byBmb3JjZSBsb2cgaW4uXG4gICAgICByZXR1cm4gY3JlYXRlQW5vbnltb3VzUmVtb3RlVXNlcigpO1xuICAgIH1cbiAgICB0aHJvdyBFcnJvckNvZGUuZ2V0Q29kZShIVFRQX1NUQVRVUy5VTkFVVEhPUklaRUQsIGVycm9yLm1lc3NhZ2UpO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0F1dGhIZWFkZXJWYWxpZChhdXRob3JpemF0aW9uOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIGF1dGhvcml6YXRpb24uc3BsaXQoJyAnKS5sZW5ndGggPT09IDI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRNaWRkbGV3YXJlQ3JlZGVudGlhbHMoc2VjdXJpdHk6IFNlY3VyaXR5LCBzZWNyZXQ6IHN0cmluZywgYXV0aG9yaXphdGlvbkhlYWRlcjogc3RyaW5nKTogQXV0aE1pZGRsZXdhcmVQYXlsb2FkIHtcbiAgaWYgKGlzQUVTTGVnYWN5KHNlY3VyaXR5KSkge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gcGFyc2VBRVNDcmVkZW50aWFscyhhdXRob3JpemF0aW9uSGVhZGVyLCBzZWNyZXQpO1xuICAgIGlmICghY3JlZGVudGlhbHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBwYXJzZWRDcmVkZW50aWFscyA9IHBhcnNlQmFzaWNQYXlsb2FkKGNyZWRlbnRpYWxzKTtcbiAgICBpZiAoIXBhcnNlZENyZWRlbnRpYWxzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgcmV0dXJuIHBhcnNlZENyZWRlbnRpYWxzO1xuICB9XG4gIGNvbnN0IHsgc2NoZW1lLCB0b2tlbiB9ID0gcGFyc2VBdXRoVG9rZW5IZWFkZXIoYXV0aG9yaXphdGlvbkhlYWRlcik7XG5cbiAgaWYgKF8uaXNTdHJpbmcodG9rZW4pICYmIHNjaGVtZS50b1VwcGVyQ2FzZSgpID09PSBUT0tFTl9CRUFSRVIudG9VcHBlckNhc2UoKSkge1xuICAgIHJldHVybiB2ZXJpZnlKV1RQYXlsb2FkKHRva2VuLCBzZWNyZXQpO1xuICB9XG59XG4iXX0=
@@ -17,8 +17,14 @@ var _utils = require("./utils");
17
17
 
18
18
  var _constants = require("./constants");
19
19
 
20
+ var _authUtils = require("./auth-utils");
21
+
20
22
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
23
 
24
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }
25
+
26
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }
27
+
22
28
  function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
23
29
 
24
30
  const LoggerApi = require('./logger');
@@ -30,6 +36,7 @@ const allowedEnvConfig = ['http_proxy', 'https_proxy', 'no_proxy'];
30
36
  */
31
37
 
32
38
  class Config {
39
+ // @ts-ignore
33
40
  // @ts-ignore
34
41
  // @ts-ignore
35
42
  constructor(config) {
@@ -45,6 +52,8 @@ class Config {
45
52
 
46
53
  _defineProperty(this, "users", void 0);
47
54
 
55
+ _defineProperty(this, "userRateLimit", void 0);
56
+
48
57
  _defineProperty(this, "server_id", void 0);
49
58
 
50
59
  _defineProperty(this, "self_path", void 0);
@@ -65,13 +74,13 @@ class Config {
65
74
  if (self[configProp] == null) {
66
75
  self[configProp] = config[configProp];
67
76
  }
68
- } // @ts-ignore
69
-
77
+ }
70
78
 
71
- if (_lodash.default.isNil(this.user_agent)) {
72
- this.user_agent = (0, _utils.getUserAgent)();
73
- } // some weird shell scripts are valid yaml files parsed as string
79
+ if (config !== null && config !== void 0 && config.user_agent) {
80
+ this.user_agent = (0, _utils.getUserAgent)(config === null || config === void 0 ? void 0 : config.user_agent);
81
+ }
74
82
 
83
+ this.userRateLimit = _objectSpread(_objectSpread({}, _authUtils.defaultUserRateLimiting), config === null || config === void 0 ? void 0 : config.userRateLimit); // some weird shell scripts are valid yaml files parsed as string
75
84
 
76
85
  (0, _assert.default)(_lodash.default.isObject(config), _constants.APP_ERROR.CONFIG_NOT_VALID); // sanity check for strategic config properties
77
86
 
@@ -131,4 +140,4 @@ class Config {
131
140
 
132
141
  var _default = Config;
133
142
  exports.default = _default;
134
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29uZmlnLnRzIl0sIm5hbWVzIjpbIkxvZ2dlckFwaSIsInJlcXVpcmUiLCJzdHJhdGVnaWNDb25maWdQcm9wcyIsImFsbG93ZWRFbnZDb25maWciLCJDb25maWciLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsInNlbGYiLCJsb2dnZXIiLCJzZWxmX3BhdGgiLCJzdG9yYWdlIiwicGx1Z2lucyIsImNvbmZpZ1Byb3AiLCJfIiwiaXNOaWwiLCJ1c2VyX2FnZW50IiwiaXNPYmplY3QiLCJBUFBfRVJST1IiLCJDT05GSUdfTk9UX1ZBTElEIiwiZm9yRWFjaCIsIngiLCJ1cGxpbmtzIiwidXNlcnMiLCJ3YXJuIiwicGFja2FnZXMiLCJlbnZDb25mIiwicHJvY2VzcyIsImVudiIsInRvVXBwZXJDYXNlIiwic2VydmVyX2lkIiwiZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyIsInBrZ05hbWUiLCJjaGVja1NlY3JldEtleSIsInNlY3JldCIsImlzU3RyaW5nIiwiaXNFbXB0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUlBOztBQUNBOztBQU1BOztBQUNBOzs7Ozs7QUFFQSxNQUFNQSxTQUFTLEdBQUdDLE9BQU8sQ0FBQyxVQUFELENBQXpCOztBQUNBLE1BQU1DLG9CQUFvQixHQUFHLENBQUMsU0FBRCxFQUFZLFVBQVosQ0FBN0I7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxDQUFDLFlBQUQsRUFBZSxhQUFmLEVBQThCLFVBQTlCLENBQXpCO0FBRUE7QUFDQTtBQUNBOztBQUNBLE1BQU1DLE1BQU4sQ0FBa0M7QUFHaEM7QUFTQTtBQUdPQyxFQUFBQSxXQUFXLENBQUNDLE1BQUQsRUFBd0I7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFDeEMsVUFBTUMsSUFBSSxHQUFHLElBQWI7QUFDQSxTQUFLQyxNQUFMLEdBQWNSLFNBQVMsQ0FBQ1EsTUFBeEI7QUFDQSxTQUFLQyxTQUFMLEdBQWlCSCxNQUFNLENBQUNHLFNBQXhCO0FBQ0EsU0FBS0MsT0FBTCxHQUFlSixNQUFNLENBQUNJLE9BQXRCO0FBQ0EsU0FBS0MsT0FBTCxHQUFlTCxNQUFNLENBQUNLLE9BQXRCOztBQUVBLFNBQUssTUFBTUMsVUFBWCxJQUF5Qk4sTUFBekIsRUFBaUM7QUFDL0IsVUFBSUMsSUFBSSxDQUFDSyxVQUFELENBQUosSUFBb0IsSUFBeEIsRUFBOEI7QUFDNUJMLFFBQUFBLElBQUksQ0FBQ0ssVUFBRCxDQUFKLEdBQW1CTixNQUFNLENBQUNNLFVBQUQsQ0FBekI7QUFDRDtBQUNGLEtBWHVDLENBYXhDOzs7QUFDQSxRQUFJQyxnQkFBRUMsS0FBRixDQUFRLEtBQUtDLFVBQWIsQ0FBSixFQUE4QjtBQUM1QixXQUFLQSxVQUFMLEdBQWtCLDBCQUFsQjtBQUNELEtBaEJ1QyxDQWtCeEM7OztBQUNBLHlCQUFPRixnQkFBRUcsUUFBRixDQUFXVixNQUFYLENBQVAsRUFBMkJXLHFCQUFVQyxnQkFBckMsRUFuQndDLENBcUJ4Qzs7QUFDQWhCLElBQUFBLG9CQUFvQixDQUFDaUIsT0FBckIsQ0FBNkIsVUFBVUMsQ0FBVixFQUFtQjtBQUM5QyxVQUFJYixJQUFJLENBQUNhLENBQUQsQ0FBSixJQUFXLElBQWYsRUFBcUI7QUFDbkJiLFFBQUFBLElBQUksQ0FBQ2EsQ0FBRCxDQUFKLEdBQVUsRUFBVjtBQUNEOztBQUVELDJCQUFPLHFCQUFTYixJQUFJLENBQUNhLENBQUQsQ0FBYixDQUFQLEVBQTJCLGdCQUFlQSxDQUFFLDJCQUE1QztBQUNELEtBTkQ7QUFRQSxTQUFLQyxPQUFMLEdBQWUsMENBQXdCLG9DQUFrQixLQUFLQSxPQUF2QixDQUF4QixDQUFmOztBQUVBLFFBQUlSLGdCQUFFQyxLQUFGLENBQVEsS0FBS1EsS0FBYixNQUF3QixLQUE1QixFQUFtQztBQUNqQyxXQUFLZCxNQUFMLENBQVllLElBQVosQ0FBa0I7QUFDeEIsc0RBRE07QUFFRDs7QUFFRCxTQUFLQyxRQUFMLEdBQWdCLHlDQUF1QmpCLElBQUksQ0FBQ2lCLFFBQTVCLENBQWhCLENBckN3QyxDQXVDeEM7O0FBQ0FyQixJQUFBQSxnQkFBZ0IsQ0FBQ2dCLE9BQWpCLENBQTBCTSxPQUFELElBQW1CO0FBQzFDLFVBQUksRUFBRUEsT0FBTyxJQUFJbEIsSUFBYixDQUFKLEVBQXdCO0FBQ3RCQSxRQUFBQSxJQUFJLENBQUNrQixPQUFELENBQUosR0FBZ0JDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZRixPQUFaLEtBQXdCQyxPQUFPLENBQUNDLEdBQVIsQ0FBWUYsT0FBTyxDQUFDRyxXQUFSLEVBQVosQ0FBeEM7QUFDRDtBQUNGLEtBSkQsRUF4Q3dDLENBOEN4QztBQUNBOztBQUNBLFFBQUksQ0FBQyxLQUFLQyxTQUFWLEVBQXFCO0FBQ25CLFdBQUtBLFNBQUwsR0FBaUIsMENBQXdCLENBQXhCLENBQWpCO0FBQ0Q7QUFDRjtBQUVEO0FBQ0Y7QUFDQTs7O0FBQ1NDLEVBQUFBLHNCQUFzQixDQUFDQyxPQUFELEVBQWtDO0FBQzdELFdBQU8seUNBQXVCQSxPQUF2QixFQUFnQyxLQUFLUCxRQUFyQyxDQUFQO0FBQ0Q7QUFFRDtBQUNGO0FBQ0E7OztBQUNTUSxFQUFBQSxjQUFjLENBQUNDLE1BQUQsRUFBeUI7QUFDNUMsUUFBSXBCLGdCQUFFcUIsUUFBRixDQUFXRCxNQUFYLEtBQXNCcEIsZ0JBQUVzQixPQUFGLENBQVVGLE1BQVYsTUFBc0IsS0FBaEQsRUFBdUQ7QUFDckQsV0FBS0EsTUFBTCxHQUFjQSxNQUFkO0FBQ0EsYUFBT0EsTUFBUDtBQUNELEtBSjJDLENBSzVDO0FBQ0E7OztBQUNBLFNBQUtBLE1BQUwsR0FBYywwQ0FBd0IsRUFBeEIsQ0FBZDtBQUNBLFdBQU8sS0FBS0EsTUFBWjtBQUNEOztBQXZGK0I7O2VBMEZuQjdCLE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5pbXBvcnQgeyBQYWNrYWdlTGlzdCwgQ29uZmlnIGFzIEFwcENvbmZpZywgU2VjdXJpdHksIExvZ2dlciB9IGZyb20gJ0B2ZXJkYWNjaW8vdHlwZXMnO1xuaW1wb3J0IHsgTWF0Y2hlZFBhY2thZ2UsIFN0YXJ0VXBDb25maWcgfSBmcm9tICcuLi8uLi90eXBlcyc7XG5pbXBvcnQgeyBnZW5lcmF0ZVJhbmRvbUhleFN0cmluZyB9IGZyb20gJy4vY3J5cHRvLXV0aWxzJztcbmltcG9ydCB7XG4gIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMsXG4gIG5vcm1hbGlzZVBhY2thZ2VBY2Nlc3MsXG4gIHNhbml0eUNoZWNrVXBsaW5rc1Byb3BzLFxuICB1cGxpbmtTYW5pdHlDaGVja1xufSBmcm9tICcuL2NvbmZpZy11dGlscyc7XG5pbXBvcnQgeyBnZXRVc2VyQWdlbnQsIGlzT2JqZWN0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBBUFBfRVJST1IgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5cbmNvbnN0IExvZ2dlckFwaSA9IHJlcXVpcmUoJy4vbG9nZ2VyJyk7XG5jb25zdCBzdHJhdGVnaWNDb25maWdQcm9wcyA9IFsndXBsaW5rcycsICdwYWNrYWdlcyddO1xuY29uc3QgYWxsb3dlZEVudkNvbmZpZyA9IFsnaHR0cF9wcm94eScsICdodHRwc19wcm94eScsICdub19wcm94eSddO1xuXG4vKipcbiAqIENvb3JkaW5hdGVzIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uXG4gKi9cbmNsYXNzIENvbmZpZyBpbXBsZW1lbnRzIEFwcENvbmZpZyB7XG4gIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcbiAgcHVibGljIHVzZXJfYWdlbnQ6IHN0cmluZztcbiAgLy8gQHRzLWlnbm9yZVxuICBwdWJsaWMgc2VjcmV0OiBzdHJpbmc7XG4gIHB1YmxpYyB1cGxpbmtzOiBhbnk7XG4gIHB1YmxpYyBwYWNrYWdlczogUGFja2FnZUxpc3Q7XG4gIHB1YmxpYyB1c2VyczogYW55O1xuICBwdWJsaWMgc2VydmVyX2lkOiBzdHJpbmc7XG4gIHB1YmxpYyBzZWxmX3BhdGg6IHN0cmluZztcbiAgcHVibGljIHN0b3JhZ2U6IHN0cmluZyB8IHZvaWQ7XG4gIHB1YmxpYyBwbHVnaW5zOiBzdHJpbmcgfCB2b2lkO1xuICAvLyBAdHMtaWdub3JlXG4gIHB1YmxpYyBzZWN1cml0eTogU2VjdXJpdHk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZzogU3RhcnRVcENvbmZpZykge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubG9nZ2VyID0gTG9nZ2VyQXBpLmxvZ2dlcjtcbiAgICB0aGlzLnNlbGZfcGF0aCA9IGNvbmZpZy5zZWxmX3BhdGg7XG4gICAgdGhpcy5zdG9yYWdlID0gY29uZmlnLnN0b3JhZ2U7XG4gICAgdGhpcy5wbHVnaW5zID0gY29uZmlnLnBsdWdpbnM7XG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ1Byb3AgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoc2VsZltjb25maWdQcm9wXSA9PSBudWxsKSB7XG4gICAgICAgIHNlbGZbY29uZmlnUHJvcF0gPSBjb25maWdbY29uZmlnUHJvcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQHRzLWlnbm9yZVxuICAgIGlmIChfLmlzTmlsKHRoaXMudXNlcl9hZ2VudCkpIHtcbiAgICAgIHRoaXMudXNlcl9hZ2VudCA9IGdldFVzZXJBZ2VudCgpO1xuICAgIH1cblxuICAgIC8vIHNvbWUgd2VpcmQgc2hlbGwgc2NyaXB0cyBhcmUgdmFsaWQgeWFtbCBmaWxlcyBwYXJzZWQgYXMgc3RyaW5nXG4gICAgYXNzZXJ0KF8uaXNPYmplY3QoY29uZmlnKSwgQVBQX0VSUk9SLkNPTkZJR19OT1RfVkFMSUQpO1xuXG4gICAgLy8gc2FuaXR5IGNoZWNrIGZvciBzdHJhdGVnaWMgY29uZmlnIHByb3BlcnRpZXNcbiAgICBzdHJhdGVnaWNDb25maWdQcm9wcy5mb3JFYWNoKGZ1bmN0aW9uICh4KTogdm9pZCB7XG4gICAgICBpZiAoc2VsZlt4XSA9PSBudWxsKSB7XG4gICAgICAgIHNlbGZbeF0gPSB7fTtcbiAgICAgIH1cblxuICAgICAgYXNzZXJ0KGlzT2JqZWN0KHNlbGZbeF0pLCBgQ09ORklHOiBiYWQgXCIke3h9XCIgdmFsdWUgKG9iamVjdCBleHBlY3RlZClgKTtcbiAgICB9KTtcblxuICAgIHRoaXMudXBsaW5rcyA9IHNhbml0eUNoZWNrVXBsaW5rc1Byb3BzKHVwbGlua1Nhbml0eUNoZWNrKHRoaXMudXBsaW5rcykpO1xuXG4gICAgaWYgKF8uaXNOaWwodGhpcy51c2VycykgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLmxvZ2dlci53YXJuKGBbdXNlcnNdOiBwcm9wZXJ0eSBvbiBjb25maWd1cmF0aW9uIGZpbGVcbiAgICAgIGlzIG5vdCBsb25nZXIgc3VwcG9ydGVkLCBwcm9wZXJ0eSBiZWluZyBpZ25vcmVkYCk7XG4gICAgfVxuXG4gICAgdGhpcy5wYWNrYWdlcyA9IG5vcm1hbGlzZVBhY2thZ2VBY2Nlc3Moc2VsZi5wYWNrYWdlcyk7XG5cbiAgICAvLyBsb2FkaW5nIHRoZXNlIGZyb20gRU5WIGlmIGFyZW4ndCBpbiBjb25maWdcbiAgICBhbGxvd2VkRW52Q29uZmlnLmZvckVhY2goKGVudkNvbmYpOiB2b2lkID0+IHtcbiAgICAgIGlmICghKGVudkNvbmYgaW4gc2VsZikpIHtcbiAgICAgICAgc2VsZltlbnZDb25mXSA9IHByb2Nlc3MuZW52W2VudkNvbmZdIHx8IHByb2Nlc3MuZW52W2VudkNvbmYudG9VcHBlckNhc2UoKV07XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyB1bmlxdWUgaWRlbnRpZmllciBvZiBzZWxmIHNlcnZlciAob3IgYSBjbHVzdGVyKSwgdXNlZCB0byBhdm9pZCBsb29wc1xuICAgIC8vIEB0cy1pZ25vcmVcbiAgICBpZiAoIXRoaXMuc2VydmVyX2lkKSB7XG4gICAgICB0aGlzLnNlcnZlcl9pZCA9IGdlbmVyYXRlUmFuZG9tSGV4U3RyaW5nKDYpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBDaGVjayBmb3IgcGFja2FnZSBzcGVjXG4gICAqL1xuICBwdWJsaWMgZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyhwa2dOYW1lOiBzdHJpbmcpOiBNYXRjaGVkUGFja2FnZSB7XG4gICAgcmV0dXJuIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGtnTmFtZSwgdGhpcy5wYWNrYWdlcyk7XG4gIH1cblxuICAvKipcbiAgICogU3RvcmUgb3IgY3JlYXRlIHdoZXRoZXIgcmVjZWl2ZSBhIHNlY3JldCBrZXlcbiAgICovXG4gIHB1YmxpYyBjaGVja1NlY3JldEtleShzZWNyZXQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgaWYgKF8uaXNTdHJpbmcoc2VjcmV0KSAmJiBfLmlzRW1wdHkoc2VjcmV0KSA9PT0gZmFsc2UpIHtcbiAgICAgIHRoaXMuc2VjcmV0ID0gc2VjcmV0O1xuICAgICAgcmV0dXJuIHNlY3JldDtcbiAgICB9XG4gICAgLy8gaXQgZ2VuZXJhdGVzIGEgc2VjcmV0IGtleVxuICAgIC8vIEZVVFVSRTogdGhpcyBtaWdodCBiZSBhbiBleHRlcm5hbCBzZWNyZXQga2V5LCBwZXJoYXBzIHdpdGhpbiBjb25maWcgZmlsZT9cbiAgICB0aGlzLnNlY3JldCA9IGdlbmVyYXRlUmFuZG9tSGV4U3RyaW5nKDMyKTtcbiAgICByZXR1cm4gdGhpcy5zZWNyZXQ7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgQ29uZmlnO1xuIl19
143
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY29uZmlnLnRzIl0sIm5hbWVzIjpbIkxvZ2dlckFwaSIsInJlcXVpcmUiLCJzdHJhdGVnaWNDb25maWdQcm9wcyIsImFsbG93ZWRFbnZDb25maWciLCJDb25maWciLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsInNlbGYiLCJsb2dnZXIiLCJzZWxmX3BhdGgiLCJzdG9yYWdlIiwicGx1Z2lucyIsImNvbmZpZ1Byb3AiLCJ1c2VyX2FnZW50IiwidXNlclJhdGVMaW1pdCIsImRlZmF1bHRVc2VyUmF0ZUxpbWl0aW5nIiwiXyIsImlzT2JqZWN0IiwiQVBQX0VSUk9SIiwiQ09ORklHX05PVF9WQUxJRCIsImZvckVhY2giLCJ4IiwidXBsaW5rcyIsImlzTmlsIiwidXNlcnMiLCJ3YXJuIiwicGFja2FnZXMiLCJlbnZDb25mIiwicHJvY2VzcyIsImVudiIsInRvVXBwZXJDYXNlIiwic2VydmVyX2lkIiwiZ2V0TWF0Y2hlZFBhY2thZ2VzU3BlYyIsInBrZ05hbWUiLCJjaGVja1NlY3JldEtleSIsInNlY3JldCIsImlzU3RyaW5nIiwiaXNFbXB0eSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUlBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOzs7Ozs7Ozs7O0FBRUEsTUFBTUEsU0FBUyxHQUFHQyxPQUFPLENBQUMsVUFBRCxDQUF6Qjs7QUFDQSxNQUFNQyxvQkFBb0IsR0FBRyxDQUFDLFNBQUQsRUFBWSxVQUFaLENBQTdCO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsQ0FBQyxZQUFELEVBQWUsYUFBZixFQUE4QixVQUE5QixDQUF6QjtBQUVBO0FBQ0E7QUFDQTs7QUFDQSxNQUFNQyxNQUFOLENBQWtDO0FBRWhDO0FBRUE7QUFVQTtBQUdPQyxFQUFBQSxXQUFXLENBQUNDLE1BQUQsRUFBd0I7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFBQTs7QUFDeEMs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LDBDQUF3QixFQUF4QixDQUFkO0FBQ0EsV0FBTyxLQUFLQSxNQUFaO0FBQ0Q7O0FBMUYrQjs7ZUE2Rm5CL0IsTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBhc3NlcnQgZnJvbSAnYXNzZXJ0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cbmltcG9ydCB7IFBhY2thZ2VMaXN0LCBDb25maWcgYXMgQXBwQ29uZmlnLCBTZWN1cml0eSwgTG9nZ2VyLCBSYXRlTGltaXQgfSBmcm9tICdAdmVyZGFjY2lvL3R5cGVzJztcbmltcG9ydCB7IE1hdGNoZWRQYWNrYWdlLCBTdGFydFVwQ29uZmlnIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgZ2VuZXJhdGVSYW5kb21IZXhTdHJpbmcgfSBmcm9tICcuL2NyeXB0by11dGlscyc7XG5pbXBvcnQgeyBnZXRNYXRjaGVkUGFja2FnZXNTcGVjLCBub3JtYWxpc2VQYWNrYWdlQWNjZXNzLCBzYW5pdHlDaGVja1VwbGlua3NQcm9wcywgdXBsaW5rU2FuaXR5Q2hlY2sgfSBmcm9tICcuL2NvbmZpZy11dGlscyc7XG5pbXBvcnQgeyBnZXRVc2VyQWdlbnQsIGlzT2JqZWN0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQgeyBBUFBfRVJST1IgfSBmcm9tICcuL2NvbnN0YW50cyc7XG5pbXBvcnQgeyBkZWZhdWx0VXNlclJhdGVMaW1pdGluZyB9IGZyb20gJy4vYXV0aC11dGlscyc7XG5cbmNvbnN0IExvZ2dlckFwaSA9IHJlcXVpcmUoJy4vbG9nZ2VyJyk7XG5jb25zdCBzdHJhdGVnaWNDb25maWdQcm9wcyA9IFsndXBsaW5rcycsICdwYWNrYWdlcyddO1xuY29uc3QgYWxsb3dlZEVudkNvbmZpZyA9IFsnaHR0cF9wcm94eScsICdodHRwc19wcm94eScsICdub19wcm94eSddO1xuXG4vKipcbiAqIENvb3JkaW5hdGVzIHRoZSBhcHBsaWNhdGlvbiBjb25maWd1cmF0aW9uXG4gKi9cbmNsYXNzIENvbmZpZyBpbXBsZW1lbnRzIEFwcENvbmZpZyB7XG4gIHB1YmxpYyBsb2dnZXI6IExvZ2dlcjtcbiAgLy8gQHRzLWlnbm9yZVxuICBwdWJsaWMgdXNlcl9hZ2VudDogYm9vbGVhbiB8IHN0cmluZztcbiAgLy8gQHRzLWlnbm9yZVxuICBwdWJsaWMgc2VjcmV0OiBzdHJpbmc7XG4gIHB1YmxpYyB1cGxpbmtzOiBhbnk7XG4gIHB1YmxpYyBwYWNrYWdlczogUGFja2FnZUxpc3Q7XG4gIHB1YmxpYyB1c2VyczogYW55O1xuICBwdWJsaWMgdXNlclJhdGVMaW1pdDogUmF0ZUxpbWl0O1xuICBwdWJsaWMgc2VydmVyX2lkOiBzdHJpbmc7XG4gIHB1YmxpYyBzZWxmX3BhdGg6IHN0cmluZztcbiAgcHVibGljIHN0b3JhZ2U6IHN0cmluZyB8IHZvaWQ7XG4gIHB1YmxpYyBwbHVnaW5zOiBzdHJpbmcgfCB2b2lkO1xuICAvLyBAdHMtaWdub3JlXG4gIHB1YmxpYyBzZWN1cml0eTogU2VjdXJpdHk7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGNvbmZpZzogU3RhcnRVcENvbmZpZykge1xuICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgIHRoaXMubG9nZ2VyID0gTG9nZ2VyQXBpLmxvZ2dlcjtcbiAgICB0aGlzLnNlbGZfcGF0aCA9IGNvbmZpZy5zZWxmX3BhdGg7XG4gICAgdGhpcy5zdG9yYWdlID0gY29uZmlnLnN0b3JhZ2U7XG4gICAgdGhpcy5wbHVnaW5zID0gY29uZmlnLnBsdWdpbnM7XG5cbiAgICBmb3IgKGNvbnN0IGNvbmZpZ1Byb3AgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoc2VsZltjb25maWdQcm9wXSA9PSBudWxsKSB7XG4gICAgICAgIHNlbGZbY29uZmlnUHJvcF0gPSBjb25maWdbY29uZmlnUHJvcF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNvbmZpZz8udXNlcl9hZ2VudCkge1xuICAgICAgdGhpcy51c2VyX2FnZW50ID0gZ2V0VXNlckFnZW50KGNvbmZpZz8udXNlcl9hZ2VudCk7XG4gICAgfVxuXG4gICAgdGhpcy51c2VyUmF0ZUxpbWl0ID0geyAuLi5kZWZhdWx0VXNlclJhdGVMaW1pdGluZywgLi4uY29uZmlnPy51c2VyUmF0ZUxpbWl0IH07XG5cbiAgICAvLyBzb21lIHdlaXJkIHNoZWxsIHNjcmlwdHMgYXJlIHZhbGlkIHlhbWwgZmlsZXMgcGFyc2VkIGFzIHN0cmluZ1xuICAgIGFzc2VydChfLmlzT2JqZWN0KGNvbmZpZyksIEFQUF9FUlJPUi5DT05GSUdfTk9UX1ZBTElEKTtcblxuICAgIC8vIHNhbml0eSBjaGVjayBmb3Igc3RyYXRlZ2ljIGNvbmZpZyBwcm9wZXJ0aWVzXG4gICAgc3RyYXRlZ2ljQ29uZmlnUHJvcHMuZm9yRWFjaChmdW5jdGlvbiAoeCk6IHZvaWQge1xuICAgICAgaWYgKHNlbGZbeF0gPT0gbnVsbCkge1xuICAgICAgICBzZWxmW3hdID0ge307XG4gICAgICB9XG5cbiAgICAgIGFzc2VydChpc09iamVjdChzZWxmW3hdKSwgYENPTkZJRzogYmFkIFwiJHt4fVwiIHZhbHVlIChvYmplY3QgZXhwZWN0ZWQpYCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLnVwbGlua3MgPSBzYW5pdHlDaGVja1VwbGlua3NQcm9wcyh1cGxpbmtTYW5pdHlDaGVjayh0aGlzLnVwbGlua3MpKTtcblxuICAgIGlmIChfLmlzTmlsKHRoaXMudXNlcnMpID09PSBmYWxzZSkge1xuICAgICAgdGhpcy5sb2dnZXIud2FybihgW3VzZXJzXTogcHJvcGVydHkgb24gY29uZmlndXJhdGlvbiBmaWxlXG4gICAgICBpcyBub3QgbG9uZ2VyIHN1cHBvcnRlZCwgcHJvcGVydHkgYmVpbmcgaWdub3JlZGApO1xuICAgIH1cblxuICAgIHRoaXMucGFja2FnZXMgPSBub3JtYWxpc2VQYWNrYWdlQWNjZXNzKHNlbGYucGFja2FnZXMpO1xuXG4gICAgLy8gbG9hZGluZyB0aGVzZSBmcm9tIEVOViBpZiBhcmVuJ3QgaW4gY29uZmlnXG4gICAgYWxsb3dlZEVudkNvbmZpZy5mb3JFYWNoKChlbnZDb25mKTogdm9pZCA9PiB7XG4gICAgICBpZiAoIShlbnZDb25mIGluIHNlbGYpKSB7XG4gICAgICAgIHNlbGZbZW52Q29uZl0gPSBwcm9jZXNzLmVudltlbnZDb25mXSB8fCBwcm9jZXNzLmVudltlbnZDb25mLnRvVXBwZXJDYXNlKCldO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy8gdW5pcXVlIGlkZW50aWZpZXIgb2Ygc2VsZiBzZXJ2ZXIgKG9yIGEgY2x1c3RlciksIHVzZWQgdG8gYXZvaWQgbG9vcHNcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKCF0aGlzLnNlcnZlcl9pZCkge1xuICAgICAgdGhpcy5zZXJ2ZXJfaWQgPSBnZW5lcmF0ZVJhbmRvbUhleFN0cmluZyg2KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2hlY2sgZm9yIHBhY2thZ2Ugc3BlY1xuICAgKi9cbiAgcHVibGljIGdldE1hdGNoZWRQYWNrYWdlc1NwZWMocGtnTmFtZTogc3RyaW5nKTogTWF0Y2hlZFBhY2thZ2Uge1xuICAgIHJldHVybiBnZXRNYXRjaGVkUGFja2FnZXNTcGVjKHBrZ05hbWUsIHRoaXMucGFja2FnZXMpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0b3JlIG9yIGNyZWF0ZSB3aGV0aGVyIHJlY2VpdmUgYSBzZWNyZXQga2V5XG4gICAqL1xuICBwdWJsaWMgY2hlY2tTZWNyZXRLZXkoc2VjcmV0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGlmIChfLmlzU3RyaW5nKHNlY3JldCkgJiYgXy5pc0VtcHR5KHNlY3JldCkgPT09IGZhbHNlKSB7XG4gICAgICB0aGlzLnNlY3JldCA9IHNlY3JldDtcbiAgICAgIHJldHVybiBzZWNyZXQ7XG4gICAgfVxuICAgIC8vIGl0IGdlbmVyYXRlcyBhIHNlY3JldCBrZXlcbiAgICAvLyBGVVRVUkU6IHRoaXMgbWlnaHQgYmUgYW4gZXh0ZXJuYWwgc2VjcmV0IGtleSwgcGVyaGFwcyB3aXRoaW4gY29uZmlnIGZpbGU/XG4gICAgdGhpcy5zZWNyZXQgPSBnZW5lcmF0ZVJhbmRvbUhleFN0cmluZygzMik7XG4gICAgcmV0dXJuIHRoaXMuc2VjcmV0O1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENvbmZpZztcbiJdfQ==