serverless-webpack-layers
Advanced tools
| "use strict"; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= |
| "use strict"; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0= |
+31
-3
@@ -139,2 +139,26 @@ "use strict"; | ||
| function getForceModulesFromLayer(sls, layerRefName) { | ||
| let forceIncludeAll = []; | ||
| let forceExcludeAll = []; | ||
| const layer = sls.service.layers[layerRefName.replace(/LambdaLayer$/, '').toLocaleLowerCase()]; | ||
| if (!layer) { | ||
| return { | ||
| forceInclude: forceIncludeAll, | ||
| forceExclude: forceExcludeAll | ||
| }; | ||
| } | ||
| const { | ||
| forceInclude = [], | ||
| forceExclude = [] | ||
| } = layer; | ||
| forceIncludeAll = forceIncludeAll.concat(forceInclude); | ||
| forceExcludeAll = forceIncludeAll.concat(forceExclude); | ||
| return { | ||
| forceInclude: forceIncludeAll, | ||
| forceExclude: forceExcludeAll | ||
| }; | ||
| } | ||
| function getForceModulesFromFunctions(sls, layerRefName) { | ||
@@ -195,2 +219,6 @@ let forceIncludeAll = []; | ||
| } = getForceModulesFromFunctions(sls, layerRefName); | ||
| const { | ||
| forceInclude: forceIncludeLayer = [], | ||
| forceExclude: forceExcludeLayer = [] | ||
| } = getForceModulesFromLayer(sls, layerRefName); | ||
| config.entry = await resolvedEntries(sls, layerRefName); | ||
@@ -205,4 +233,4 @@ const packageJson = await require(_path.default.join(runPath, 'package.json')); | ||
| forceInclude.concat(forceIncludeFunction).forEach(forceIncludedModule => moduleNames.add(forceIncludedModule)); | ||
| forceExclude.concat(forceExcludeFunction).forEach(forceExcludedModule => moduleNames.delete(forceExcludedModule)); | ||
| forceInclude.concat(forceIncludeFunction).concat(forceIncludeLayer).forEach(forceIncludedModule => moduleNames.add(forceIncludedModule)); | ||
| forceExclude.concat(forceExcludeFunction).concat(forceExcludeLayer).forEach(forceExcludedModule => moduleNames.delete(forceExcludedModule)); | ||
| return Array.from(moduleNames).map(name => packageJson.dependencies[name] || packageJson.devDependencies[name] ? `${name}@${packageJson.dependencies[name] || packageJson.devDependencies[name]}` : name); | ||
@@ -214,2 +242,2 @@ } catch (err) { | ||
| } | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHRlcm5hbC50cyJdLCJuYW1lcyI6WyJnbG9iYWwiLCJjb21waWxlIiwiZmlsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicnVuIiwiZXJyIiwic3RhdHMiLCJkZWZhdWx0V2VicGFja0NvbmZpZyIsImNsZWFuIiwiYmFja3VwRmlsZVR5cGUiLCJjb25maWdQYXRoIiwiZGlzY292ZXJNb2R1bGVzIiwiZm9yY2VJbmNsdWRlIiwiZm9yY2VFeGNsdWRlIiwiaXNFeHRlcm5hbE1vZHVsZSIsIm1vZHVsZSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldEV4dGVybmFsTW9kdWxlTmFtZSIsInJlZ2V4IiwiZXh0ZXJuYWxUeXBlIiwiUmVnRXhwIiwicGF0aFBhcnRzIiwiZXhlYyIsImlkZW50aWZpZXIiLCJtb2R1bGVQYXRoIiwicGF0aENvbXBvbmVudHMiLCJzcGxpdCIsIm1haW4iLCJjaGFyQXQiLCJyZXBsYWNlIiwidHJpbSIsImdldEV4dGVybmFsTW9kdWxlc0Zyb21TdGF0cyIsImNvbXBpbGF0aW9uIiwiY2h1bmtzIiwiZXh0ZXJuYWxzIiwiU2V0IiwiY2h1bmsiLCJtb2R1bGVzIiwiY2h1bmtHcmFwaCIsImdldENodW5rTW9kdWxlcyIsImV4dGVybmFsTW9kdWxlTmFtZSIsInVuZGVmaW5lZCIsImFkZCIsIkFycmF5IiwiZnJvbSIsImdsb2JQcm9taXNlIiwicGF0dGVybiIsIm1hdGNoZXMiLCJmaW5kRW50cmllc1NwZWNpZmllZCIsInNwZWNpZmllZEVudHJpZXMiLCJlbnRyaWVzIiwiaXNBcnJheSIsImFsbE1hcHBlZCIsImFsbCIsIm1hcCIsInJlZHVjZSIsImFyciIsImxpc3QiLCJjb25jYXQiLCJyZXNvbHZlZEVudHJpZXMiLCJzbHMiLCJsYXllclJlZk5hbWUiLCJuZXdFbnRyaWVzIiwic2VydmljZSIsImN1c3RvbSIsImxheWVyQ29uZmlnIiwid2VicGFjayIsImZ1bmMiLCJ2YWx1ZXMiLCJmdW5jdGlvbnMiLCJjb25zb2xlIiwiZXJyb3IiLCJoYW5kbGVyIiwibGF5ZXJzIiwiZW50cnkiLCJzaG91bGRMYXllciIsInNvbWUiLCJsYXllciIsIlJlZiIsIm1hdGNoZWRTcGVjaWZpZWRFbnRyaWVzIiwicGF0aCIsIm1hdGNoIiwiaGFuZGxlck5hbWUiLCJmb2xkZXJOYW1lIiwiZmlsZXMiLCJmcyIsInByb21pc2VzIiwicmVhZGRpciIsImZpbGVOYW1lIiwiZmlsdGVyZWRGaWxlcyIsImZpbHRlciIsInN0YXJ0c1dpdGgiLCJsZW5ndGgiLCJqb2luIiwiZ2V0Rm9yY2VNb2R1bGVzRnJvbUZ1bmN0aW9ucyIsImZvcmNlSW5jbHVkZUFsbCIsImZvcmNlRXhjbHVkZUFsbCIsImdldEV4dGVybmFsTW9kdWxlcyIsInJ1blBhdGgiLCJwcm9jZXNzIiwiY3dkIiwid2VicGFja0NvbmZpZ1VubWVyZ2VkIiwid2VicGFja0NvbmZpZyIsImNvbmZpZyIsInJlcXVpcmUiLCJuZXdDb25maWdWYWx1ZSIsImZvcmNlSW5jbHVkZUZ1bmN0aW9uIiwiZm9yY2VFeGNsdWRlRnVuY3Rpb24iLCJwYWNrYWdlSnNvbiIsIm1vZHVsZU5hbWVzIiwiZm9yRWFjaCIsImZvcmNlSW5jbHVkZWRNb2R1bGUiLCJmb3JjZUV4Y2x1ZGVkTW9kdWxlIiwiZGVsZXRlIiwibmFtZSIsImRlcGVuZGVuY2llcyIsImRldkRlcGVuZGVuY2llcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUVBOzs7O0FBRUFBLE1BQU0sQ0FBQyxrQkFBRCxDQUFOLEdBQTZCLElBQTdCOztBQUVBLE1BQU1DLE9BQU8sR0FBSUMsSUFBRCxJQUNkLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FDVixzQkFBUUgsSUFBUixFQUFjSSxHQUFkLENBQWtCLENBQUNDLEdBQUQsRUFBY0MsS0FBZCxLQUFpQ0QsR0FBRyxHQUFHRixNQUFNLENBQUNFLEdBQUQsQ0FB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LG9CQUFwQixFQUEwQ0csT0FBMUMsQ0FBa0RFLG1CQUFtQixJQUFJSCxXQUFXLENBQUNJLE1BQVosQ0FBbUJELG1CQUFuQixDQUF6RTtBQUNBLFdBQU9yRSxLQUFLLENBQUNDLElBQU4sQ0FBV2lFLFdBQVgsRUFBd0J2RCxHQUF4QixDQUE0QjRELElBQUksSUFDckNOLFdBQVcsQ0FBQ08sWUFBWixDQUF5QkQsSUFBekIsS0FBa0NOLFdBQVcsQ0FBQ1EsZUFBWixDQUE0QkYsSUFBNUIsQ0FBbEMsR0FDSyxHQUFFQSxJQUFLLElBQUdOLFdBQVcsQ0FBQ08sWUFBWixDQUF5QkQsSUFBekIsS0FBa0NOLFdBQVcsQ0FBQ1EsZUFBWixDQUE0QkYsSUFBNUIsQ0FBa0MsRUFEbkYsR0FFSUEsSUFIQyxDQUFQO0FBS0QsR0FyQ0QsQ0FxQ0UsT0FBT2hILEdBQVAsRUFBWTtBQUNab0UsSUFBQUEsT0FBTyxDQUFDQyxLQUFSLENBQWNyRSxHQUFkO0FBQ0EsVUFBTUEsR0FBTjtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgd2VicGFjaywgeyBFeHRlcm5hbE1vZHVsZSB9IGZyb20gJ3dlYnBhY2snO1xuaW1wb3J0IG1lcmdlIGZyb20gJ2xvZGFzaC5tZXJnZSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgZ2xvYiBmcm9tICdnbG9iJztcbmltcG9ydCBTZXJ2ZXJsZXNzIGZyb20gJ3NlcnZlcmxlc3MnO1xuaW1wb3J0IGlzQnVpbHRpbk1vZHVsZSBmcm9tICdpcy1idWlsdGluLW1vZHVsZSc7XG5pbXBvcnQgeyBTdGF0cywgTW9kdWxlIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBpc0Z1bmN0aW9uRGVmaW5pdGlvbiwgTWF5YmUgfSBmcm9tICcuL3R5cGVzJztcblxuZ2xvYmFsWydQQUNLQUdJTkdfTEFCRUxTJ10gPSB0cnVlO1xuXG5jb25zdCBjb21waWxlID0gKGZpbGU6IHdlYnBhY2suQ29uZmlndXJhdGlvbik6IFByb21pc2U8TWF5YmU8U3RhdHM+PiA9PlxuICBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PlxuICAgIHdlYnBhY2soZmlsZSkucnVuKChlcnI/OiBFcnJvciwgc3RhdHM/OiBTdGF0cykgPT4gKGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShzdGF0cykpKVxuICApO1xuXG5jb25zdCBkZWZhdWx0V2VicGFja0NvbmZpZyA9IHtcbiAgY2xlYW46IHRydWUsXG4gIGJhY2t1cEZpbGVUeXBlOiAnanMnLFxuICBjb25maWdQYXRoOiAnLi93ZWJwYWNrLmNvbmZpZy5qcycsXG4gIGRpc2NvdmVyTW9kdWxlczogdHJ1ZSxcbiAgZm9yY2VJbmNsdWRlOiBbXSxcbiAgZm9yY2VFeGNsdWRlOiBbXSxcbn07XG5cbmZ1bmN0aW9uIGlzRXh0ZXJuYWxNb2R1bGUobW9kdWxlOiBNb2R1bGUpOiBtb2R1bGUgaXMgRXh0ZXJuYWxNb2R1bGUge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZHVsZSwgJ2V4dGVybmFsVHlwZScpO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRlcm5hbE1vZHVsZU5hbWUobW9kdWxlOiBFeHRlcm5hbE1vZHVsZSk6IHN0cmluZyB7XG4gIGNvbnN0IHJlZ2V4ID0gbW9kdWxlLmV4dGVybmFsVHlwZSA/IG5ldyBSZWdFeHAoYF5leHRlcm5hbCAke21vZHVsZS5leHRlcm5hbFR5cGV9IFwiKC4qKVwiJGApIDogL15leHRlcm5hbCBcIiguKilcIiQvO1xuICBjb25zdCBwYXRoUGFydHMgPSByZWdleC5leGVjKFxuICAgIHR5cGVvZiBtb2R1bGUuaWRlbnRpZmllciA9PT0gJ2Z1bmN0aW9uJyA/IG1vZHVsZS5pZGVudGlmaWVyKCkgOiAobW9kdWxlLmlkZW50aWZpZXIgYXMgdW5rbm93biBhcyBzdHJpbmcpXG4gICk7XG4gIGlmIChwYXRoUGFydHMgPT09IG51bGwpIHJldHVybiAnJztcbiAgY29uc3QgbW9kdWxlUGF0aCA9IHBhdGhQYXJ0c1sxXTtcbiAgY29uc3QgcGF0aENvbXBvbmVudHMgPSBtb2R1bGVQYXRoLnNwbGl0KCcvJyk7XG4gIGNvbnN0IG1haW4gPSBwYXRoQ29tcG9uZW50c1swXTtcblxuICAvLyB0aGlzIGlzIGEgcGFja2FnZSB3aXRoaW4gYSBuYW1lc3BhY2VcbiAgaWYgKG1haW4uY2hhckF0KDApID09ICdAJykge1xuICAgIHJldHVybiBgJHttYWlufS8ke3BhdGhDb21wb25lbnRzWzFdfWA7XG4gIH1cblxuICByZXR1cm4gbWFpbi5yZXBsYWNlKCdleHRlcm5hbCcsICcnKS5yZXBsYWNlKG1vZHVsZS5leHRlcm5hbFR5cGUsICcnKS5yZXBsYWNlKC9cIi9nLCAnJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBnZXRFeHRlcm5hbE1vZHVsZXNGcm9tU3RhdHMoc3RhdHM6IE1heWJlPFN0YXRzPik6IHN0cmluZ1tdIHtcbiAgaWYgKCFzdGF0cyB8fCAhc3RhdHMuY29tcGlsYXRpb24uY2h1bmtzKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGNvbnN0IGV4dGVybmFsczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gIGZvciAoY29uc3QgY2h1bmsgb2Ygc3RhdHMuY29tcGlsYXRpb24uY2h1bmtzKSB7XG4gICAgY29uc3QgbW9kdWxlcyA9IHN0YXRzLmNvbXBpbGF0aW9uLmNodW5rR3JhcGguZ2V0Q2h1bmtNb2R1bGVzKGNodW5rKTtcblxuICAgIC8vIEV4cGxvcmUgZWFjaCBtb2R1bGUgd2l0aGluIHRoZSBjaHVuayAoYnVpbHQgaW5wdXRzKTpcbiAgICBmb3IgKGNvbnN0IG1vZHVsZSBvZiBtb2R1bGVzKSB7XG4gICAgICBpZiAoaXNFeHRlcm5hbE1vZHVsZShtb2R1bGUpKSB7XG4gICAgICAgIGlmIChpc0J1aWx0aW5Nb2R1bGUoZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lKG1vZHVsZSkpKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgZXh0ZXJuYWxNb2R1bGVOYW1lID0gZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lKG1vZHVsZSk7XG4gICAgICAgIGlmIChleHRlcm5hbE1vZHVsZU5hbWUgPT09IHVuZGVmaW5lZCkgY29udGludWU7XG4gICAgICAgIGV4dGVybmFscy5hZGQoZXh0ZXJuYWxNb2R1bGVOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIEFycmF5LmZyb20oZXh0ZXJuYWxzKTtcbn1cblxuY29uc3QgZ2xvYlByb21pc2UgPSAocGF0dGVybjogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gZ2xvYihwYXR0ZXJuLCAoZXJyLCBtYXRjaGVzKSA9PiAoZXJyID8gcmVqZWN0KGVycikgOiByZXNvbHZlKG1hdGNoZXMpKSkpO1xuXG5hc3luYyBmdW5jdGlvbiBmaW5kRW50cmllc1NwZWNpZmllZChzcGVjaWZpZWRFbnRyaWVzOiBzdHJpbmcgfCBzdHJpbmdbXSkge1xuICBsZXQgZW50cmllcyA9IHNwZWNpZmllZEVudHJpZXM7XG4gIGlmICh0eXBlb2Ygc3BlY2lmaWVkRW50cmllcyA9PT0gJ3N0cmluZycpIHtcbiAgICBlbnRyaWVzID0gW3NwZWNpZmllZEVudHJpZXNdO1xuICB9XG4gIGlmICghQXJyYXkuaXNBcnJheShlbnRyaWVzKSkge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBhbGxNYXBwZWQgPSBhd2FpdCBQcm9taXNlLmFsbChlbnRyaWVzLm1hcChnbG9iUHJvbWlzZSkpO1xuICByZXR1cm4gYWxsTWFwcGVkLnJlZHVjZSgoYXJyLCBsaXN0KSA9PiBhcnIuY29uY2F0KGxpc3QpLCBbXSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHJlc29sdmVkRW50cmllcyhzbHM6IFNlcnZlcmxlc3MsIGxheWVyUmVmTmFtZTogc3RyaW5nKSB7XG4gIGNvbnN0IG5ld0VudHJpZXMgPSB7fTtcbiAgY29uc3QgYmFja3VwRmlsZVR5cGUgPVxuICAgIHNscy5zZXJ2aWNlLmN1c3RvbS5sYXllckNvbmZpZy5iYWNrdXBGaWxlVHlwZSA/PyBzbHMuc2VydmljZS5jdXN0b20ubGF5ZXJDb25maWcud2VicGFjay5iYWNrdXBGaWxlVHlwZSA/PyAnZGVmYXVsdCc7XG4gIGZvciAoY29uc3QgZnVuYyBvZiBPYmplY3QudmFsdWVzKHNscy5zZXJ2aWNlLmZ1bmN0aW9ucykpIHtcbiAgICBpZiAoIWlzRnVuY3Rpb25EZWZpbml0aW9uKGZ1bmMpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBUaGlzIGxpYnJhcnkgZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCBmdW5jdGlvbnMgd2l0aCBhbiBpbWFnZWApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHsgaGFuZGxlciwgbGF5ZXJzID0gW10sIGVudHJ5OiBzcGVjaWZpZWRFbnRyaWVzID0gW10sIHNob3VsZExheWVyID0gdHJ1ZSB9ID0gZnVuYztcbiAgICBpZiAoIXNob3VsZExheWVyKSBjb250aW51ZTtcbiAgICBpZiAoIWxheWVycy5zb21lKGxheWVyID0+IGxheWVyLlJlZiA9PT0gbGF5ZXJSZWZOYW1lKSkgY29udGludWU7XG4gICAgY29uc3QgbWF0Y2hlZFNwZWNpZmllZEVudHJpZXMgPSBhd2FpdCBmaW5kRW50cmllc1NwZWNpZmllZChzcGVjaWZpZWRFbnRyaWVzKTtcbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIG1hdGNoZWRTcGVjaWZpZWRFbnRyaWVzKSB7XG4gICAgICBuZXdFbnRyaWVzW2VudHJ5XSA9IHBhdGgucmVzb2x2ZShlbnRyeSk7XG4gICAgfVxuICAgIGNvbnN0IG1hdGNoID0gaGFuZGxlci5tYXRjaCgvXigoKD86W15cXC9cXG5dK1xcLykrKT9bXi5dKyguanN4P3wudHN4Pyk/KS8pO1xuICAgIGlmICghbWF0Y2gpIGNvbnRpbnVlO1xuICAgIGNvbnN0IFtoYW5kbGVyTmFtZSwgLCBmb2xkZXJOYW1lID0gJyddID0gbWF0Y2g7XG4gICAgY29uc3QgZmlsZXMgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkZGlyKHBhdGgucmVzb2x2ZShmb2xkZXJOYW1lLnJlcGxhY2UoL1xcLyQvLCAnJykpKTtcbiAgICBsZXQgZmlsZU5hbWUgPSBoYW5kbGVyTmFtZS5yZXBsYWNlKGZvbGRlck5hbWUsICcnKTtcbiAgICBjb25zdCBmaWx0ZXJlZEZpbGVzID0gZmlsZXMuZmlsdGVyKGZpbGUgPT4gZmlsZS5zdGFydHNXaXRoKGZpbGVOYW1lKSk7XG4gICAgaWYgKGZpbHRlcmVkRmlsZXMubGVuZ3RoID4gMSkge1xuICAgICAgZmlsZU5hbWUgKz0gYC4ke2JhY2t1cEZpbGVUeXBlfWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGVOYW1lID0gZmlsdGVyZWRGaWxlc1swXTtcbiAgICB9XG4gICAgbmV3RW50cmllc1toYW5kbGVyTmFtZV0gPSBwYXRoLnJlc29sdmUocGF0aC5qb2luKGZvbGRlck5hbWUsIGZpbGVOYW1lKSk7XG4gIH1cbiAgcmV0dXJuIG5ld0VudHJpZXM7XG59XG5mdW5jdGlvbiBnZXRGb3JjZU1vZHVsZXNGcm9tRnVuY3Rpb25zKHNsczogU2VydmVybGVzcywgbGF5ZXJSZWZOYW1lOiBzdHJpbmcpIHtcbiAgbGV0IGZvcmNlSW5jbHVkZUFsbDogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGZvcmNlRXhjbHVkZUFsbDogc3RyaW5nW10gPSBbXTtcbiAgZm9yIChjb25zdCBmdW5jIG9mIE9iamVjdC52YWx1ZXMoc2xzLnNlcnZpY2UuZnVuY3Rpb25zKSkge1xuICAgIGlmICghaXNGdW5jdGlvbkRlZmluaXRpb24oZnVuYykpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoYFRoaXMgbGlicmFyeSBkb2Vzbid0IGN1cnJlbnRseSBzdXBwb3J0IGZ1bmN0aW9ucyB3aXRoIGFuIGltYWdlYCk7XG4gICAgICBjb250aW51ZTtcbiAgICB9XG4gICAgY29uc3QgeyBsYXllcnMgPSBbXSwgZm9yY2VJbmNsdWRlID0gW10sIGZvcmNlRXhjbHVkZSA9IFtdIH0gPSBmdW5jO1xuICAgIGlmICghbGF5ZXJzLnNvbWUobGF5ZXIgPT4gbGF5ZXIuUmVmID09PSBsYXllclJlZk5hbWUpKSBjb250aW51ZTtcbiAgICBmb3JjZUluY2x1ZGVBbGwgPSBmb3JjZUluY2x1ZGVBbGwuY29uY2F0KGZvcmNlSW5jbHVkZSk7XG4gICAgZm9yY2VFeGNsdWRlQWxsID0gZm9yY2VJbmNsdWRlQWxsLmNvbmNhdChmb3JjZUV4Y2x1ZGUpO1xuICB9XG4gIHJldHVybiB7XG4gICAgZm9yY2VJbmNsdWRlOiBmb3JjZUluY2x1ZGVBbGwsXG4gICAgZm9yY2VFeGNsdWRlOiBmb3JjZUV4Y2x1ZGVBbGwsXG4gIH07XG59XG5cbnR5cGUgV2VicGFja0NvbmZpZ0FzT2JqT3JGdW5jID1cbiAgfCB3ZWJwYWNrLkNvbmZpZ3VyYXRpb25cbiAgfCAoKCkgPT4gd2VicGFjay5Db25maWd1cmF0aW9uKVxuICB8ICgoKSA9PiBQcm9taXNlPHdlYnBhY2suQ29uZmlndXJhdGlvbj4pO1xuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0RXh0ZXJuYWxNb2R1bGVzKHNsczogU2VydmVybGVzcywgbGF5ZXJSZWZOYW1lOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZ1tdPiB7XG4gIHRyeSB7XG4gICAgY29uc3QgcnVuUGF0aCA9IHByb2Nlc3MuY3dkKCk7XG4gICAgY29uc3QgeyB3ZWJwYWNrOiB3ZWJwYWNrQ29uZmlnVW5tZXJnZWQgPSB7fSB9ID0gc2xzLnNlcnZpY2UuY3VzdG9tLmxheWVyQ29uZmlnO1xuICAgIGNvbnN0IHdlYnBhY2tDb25maWcgPSBtZXJnZShkZWZhdWx0V2VicGFja0NvbmZpZywgd2VicGFja0NvbmZpZ1VubWVyZ2VkKTtcbiAgICBjb25zdCBmb3JjZUluY2x1ZGUgPSBbXG4gICAgICAuLi53ZWJwYWNrQ29uZmlnLmZvcmNlSW5jbHVkZSxcbiAgICAgIC4uLihBcnJheS5pc0FycmF5KHdlYnBhY2tDb25maWdVbm1lcmdlZC5mb3JjZUluY2x1ZGUpID8gd2VicGFja0NvbmZpZ1VubWVyZ2VkLmZvcmNlSW5jbHVkZSA6IFtdKSxcbiAgICBdO1xuICAgIGNvbnN0IGZvcmNlRXhjbHVkZSA9IFtcbiAgICAgIC4uLndlYnBhY2tDb25maWcuZm9yY2VFeGNsdWRlLFxuICAgICAgLi4uKEFycmF5LmlzQXJyYXkod2VicGFja0NvbmZpZ1VubWVyZ2VkLmZvcmNlRXhjbHVkZSkgPyB3ZWJwYWNrQ29uZmlnVW5tZXJnZWQuZm9yY2VFeGNsdWRlIDogW10pLFxuICAgIF07XG4gICAgY29uc3QgeyBjb25maWdQYXRoID0gJy4vd2VicGFjay5jb25maWcuanMnLCBkaXNjb3Zlck1vZHVsZXMgPSB0cnVlIH0gPSB3ZWJwYWNrQ29uZmlnO1xuICAgIGxldCBjb25maWc6IFdlYnBhY2tDb25maWdBc09iak9yRnVuYyA9IGF3YWl0IHJlcXVpcmUocGF0aC5qb2luKHJ1blBhdGgsIGNvbmZpZ1BhdGgpKTtcbiAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgbGV0IG5ld0NvbmZpZ1ZhbHVlID0gY29uZmlnKCk7XG4gICAgICBpZiAobmV3Q29uZmlnVmFsdWUgaW5zdGFuY2VvZiBQcm9taXNlKSB7XG4gICAgICAgIG5ld0NvbmZpZ1ZhbHVlID0gYXdhaXQgbmV3Q29uZmlnVmFsdWU7XG4gICAgICB9XG4gICAgICBjb25maWcgPSBuZXdDb25maWdWYWx1ZTtcbiAgICB9XG4gICAgY29uc3QgeyBmb3JjZUluY2x1ZGU6IGZvcmNlSW5jbHVkZUZ1bmN0aW9uID0gW10sIGZvcmNlRXhjbHVkZTogZm9yY2VFeGNsdWRlRnVuY3Rpb24gPSBbXSB9ID1cbiAgICAgIGdldEZvcmNlTW9kdWxlc0Zyb21GdW5jdGlvbnMoc2xzLCBsYXllclJlZk5hbWUpO1xuICAgIGNvbmZpZy5lbnRyeSA9IGF3YWl0IHJlc29sdmVkRW50cmllcyhzbHMsIGxheWVyUmVmTmFtZSk7XG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCByZXF1aXJlKHBhdGguam9pbihydW5QYXRoLCAncGFja2FnZS5qc29uJykpO1xuICAgIGxldCBtb2R1bGVOYW1lczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gICAgaWYgKGRpc2NvdmVyTW9kdWxlcykge1xuICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBjb21waWxlKGNvbmZpZyk7XG4gICAgICBtb2R1bGVOYW1lcyA9IG5ldyBTZXQoZ2V0RXh0ZXJuYWxNb2R1bGVzRnJvbVN0YXRzKHN0YXRzKSk7XG4gICAgfVxuICAgIGZvcmNlSW5jbHVkZS5jb25jYXQoZm9yY2VJbmNsdWRlRnVuY3Rpb24pLmZvckVhY2goZm9yY2VJbmNsdWRlZE1vZHVsZSA9PiBtb2R1bGVOYW1lcy5hZGQoZm9yY2VJbmNsdWRlZE1vZHVsZSkpO1xuICAgIGZvcmNlRXhjbHVkZS5jb25jYXQoZm9yY2VFeGNsdWRlRnVuY3Rpb24pLmZvckVhY2goZm9yY2VFeGNsdWRlZE1vZHVsZSA9PiBtb2R1bGVOYW1lcy5kZWxldGUoZm9yY2VFeGNsdWRlZE1vZHVsZSkpO1xuICAgIHJldHVybiBBcnJheS5mcm9tKG1vZHVsZU5hbWVzKS5tYXAobmFtZSA9PlxuICAgICAgcGFja2FnZUpzb24uZGVwZW5kZW5jaWVzW25hbWVdIHx8IHBhY2thZ2VKc29uLmRldkRlcGVuZGVuY2llc1tuYW1lXVxuICAgICAgICA/IGAke25hbWV9QCR7cGFja2FnZUpzb24uZGVwZW5kZW5jaWVzW25hbWVdIHx8IHBhY2thZ2VKc29uLmRldkRlcGVuZGVuY2llc1tuYW1lXX1gXG4gICAgICAgIDogbmFtZVxuICAgICk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyKTtcbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cbiJdfQ== | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9leHRlcm5hbC50cyJdLCJuYW1lcyI6WyJnbG9iYWwiLCJjb21waWxlIiwiZmlsZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwicnVuIiwiZXJyIiwic3RhdHMiLCJkZWZhdWx0V2VicGFja0NvbmZpZyIsImNsZWFuIiwiYmFja3VwRmlsZVR5cGUiLCJjb25maWdQYXRoIiwiZGlzY292ZXJNb2R1bGVzIiwiZm9yY2VJbmNsdWRlIiwiZm9yY2VFeGNsdWRlIiwiaXNFeHRlcm5hbE1vZHVsZSIsIm1vZHVsZSIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImdldEV4dGVybmFsTW9kdWxlTmFtZSIsInJlZ2V4IiwiZXh0ZXJuYWxUeXBlIiwiUmVnRXhwIiwicGF0aFBhcnRzIiwiZXhlYyIsImlkZW50aWZpZXIiLCJtb2R1bGVQYXRoIiwicGF0aENvbXBvbmVudHMiLCJzcGxpdCIsIm1haW4iLCJjaGFyQXQiLCJyZXBsYWNlIiwidHJpbSIsImdldEV4dGVybmFsTW9kdWxlc0Zyb21TdGF0cyIsImNvbXBpbGF0aW9uIiwiY2h1bmtzIiwiZXh0ZXJuYWxzIiwiU2V0IiwiY2h1bmsiLCJtb2R1bGVzIiwiY2h1bmtHcmFwaCIsImdldENodW5rTW9kdWxlcyIsImV4dGVybmFsTW9kdWxlTmFtZSIsInVuZGVmaW5lZCIsImFkZCIsIkFycmF5IiwiZnJvbSIsImdsb2JQcm9taXNlIiwicGF0dGVybiIsIm1hdGNoZXMiLCJmaW5kRW50cmllc1NwZWNpZmllZCIsInNwZWNpZmllZEVudHJpZXMiLCJlbnRyaWVzIiwiaXNBcnJheSIsImFsbE1hcHBlZCIsImFsbCIsIm1hcCIsInJlZHVjZSIsImFyciIsImxpc3QiLCJjb25jYXQiLCJyZXNvbHZlZEVudHJpZXMiLCJzbHMiLCJsYXllclJlZk5hbWUiLCJuZXdFbnRyaWVzIiwic2VydmljZSIsImN1c3RvbSIsImxheWVyQ29uZmlnIiwid2VicGFjayIsImZ1bmMiLCJ2YWx1ZXMiLCJmdW5jdGlvbnMiLCJjb25zb2xlIiwiZXJyb3IiLCJoYW5kbGVyIiwibGF5ZXJzIiwiZW50cnkiLCJzaG91bGRMYXllciIsInNvbWUiLCJsYXllciIsIlJlZiIsIm1hdGNoZWRTcGVjaWZpZWRFbnRyaWVzIiwicGF0aCIsIm1hdGNoIiwiaGFuZGxlck5hbWUiLCJmb2xkZXJOYW1lIiwiZmlsZXMiLCJmcyIsInByb21pc2VzIiwicmVhZGRpciIsImZpbGVOYW1lIiwiZmlsdGVyZWRGaWxlcyIsImZpbHRlciIsInN0YXJ0c1dpdGgiLCJsZW5ndGgiLCJqb2luIiwiZ2V0Rm9yY2VNb2R1bGVzRnJvbUxheWVyIiwiZm9yY2VJbmNsdWRlQWxsIiwiZm9yY2VFeGNsdWRlQWxsIiwidG9Mb2NhbGVMb3dlckNhc2UiLCJnZXRGb3JjZU1vZHVsZXNGcm9tRnVuY3Rpb25zIiwiZ2V0RXh0ZXJuYWxNb2R1bGVzIiwicnVuUGF0aCIsInByb2Nlc3MiLCJjd2QiLCJ3ZWJwYWNrQ29uZmlnVW5tZXJnZWQiLCJ3ZWJwYWNrQ29uZmlnIiwiY29uZmlnIiwicmVxdWlyZSIsIm5ld0NvbmZpZ1ZhbHVlIiwiZm9yY2VJbmNsdWRlRnVuY3Rpb24iLCJmb3JjZUV4Y2x1ZGVGdW5jdGlvbiIsImZvcmNlSW5jbHVkZUxheWVyIiwiZm9yY2VFeGNsdWRlTGF5ZXIiLCJwYWNrYWdlSnNvbiIsIm1vZHVsZU5hbWVzIiwiZm9yRWFjaCIsImZvcmNlSW5jbHVkZWRNb2R1bGUiLCJmb3JjZUV4Y2x1ZGVkTW9kdWxlIiwiZGVsZXRlIiwibmFtZSIsImRlcGVuZGVuY2llcyIsImRldkRlcGVuZGVuY2llcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUVBOzs7O0FBSUFBLE1BQU0sQ0FBQyxrQkFBRCxDQUFOLEdBQTZCLElBQTdCOztBQUVBLE1BQU1DLE9BQU8sR0FBSUMsSUFBRCxJQUNkLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FDVixzQkFBUUgsSUFBUixFQUFjSSxHQUFkLENBQWtCLENBQUNDLEdBQUQsRUFBY0MsS0FBZCxLQUFpQ0QsR0FBRyxHQUFHRixNQUFNLENBQUNFLEdBQUQsQ0FBVCxHQUFpQkgsT0FBTyxDQUFDSSxLQUFELENBQTlFLENBREYsQ0FERjs7QUFLQSxNQUFNQyxvQkFBb0IsR0FBRztBQUMzQkMsRUFBQUEsS0FBSyxFQUFFLElBRG9CO0FBRTNCQyxFQUFBQSxjQUFjLEVBQUUsSUFGVztBQUczQkMsRUFBQUEsVUFBVSxFQUFFLHFCQUhlO0FBSTNCQyxFQUFBQSxlQUFlLEVBQUUsSUFKVTtBQUszQkMsRUFBQUEsWUFBWSxFQUFFLEVBTGE7QUFNM0JDLEVBQUFBLFlBQVksRUFBRTtBQU5hLENBQTdCOztBQVNBLFNBQVNDLGdCQUFULENBQTBCQyxNQUExQixFQUFvRTtBQUNsRSxTQUFPQyxNQUFNLENBQUNDLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDQyxJQUFoQyxDQUFxQ0osTUFBckMsRUFBNkMsY0FBN0MsQ0FBUDtBQUNEOztBQUVELFNBQVNLLHFCQUFULENBQStCTCxNQUEvQixFQUErRDtBQUM3RCxRQUFNTSxLQUFLLEdBQUdOLE1BQU0sQ0FBQ08sWUFBUCxHQUFzQixJQUFJQyxNQUFKLENBQVksYUFBWVIsTUFBTSxDQUFDTyxZQUFhLFVBQTVDLENBQXRCLEdBQStFLG1CQUE3RjtBQUNBLFFBQU1FLFNBQVMsR0FBR0gsS0FBSyxDQUFDSSxJQUFOLENBQ2hCLE9BQU9WLE1BQU0sQ0FBQ1csVUFBZCxLQUE2QixVQUE3QixHQUEwQ1gsTUFBTSxDQUFDVyxVQUFQLEVBQTFDLEdBQWlFWCxNQUFNLENBQUNXLFVBRHhELENBQWxCO0FBR0EsTUFBSUYsU0FBUyxLQUFLLElBQWxCLEVBQXdCLE9BQU8sRUFBUDtBQUN4QixRQUFNRyxVQUFVLEdBQUdILFNBQVMsQ0FBQyxDQUFELENBQTVCO0FBQ0EsUUFBTUksY0FBYyxHQUFHRCxVQUFVLENBQUNFLEtBQVgsQ0FBaUIsR0FBakIsQ0FBdkI7QUFDQSxRQUFNQyxJQUFJLEdBQUdGLGNBQWMsQ0FBQyxDQUFELENBQTNCLENBUjZELENBVTdEOztBQUNBLE1BQUlFLElBQUksQ0FBQ0MsTUFBTCxDQUFZLENBQVosS0FBa0IsR0FBdEIsRUFBMkI7QUFDekIsV0FBUSxHQUFFRCxJQUFLLElBQUdGLGNBQWMsQ0FBQyxDQUFELENBQUksRUFBcEM7QUFDRDs7QUFFRCxTQUFPRSxJQUFJLENBQUNFLE9BQUwsQ0FBYSxVQUFiLEVBQXlCLEVBQXpCLEVBQTZCQSxPQUE3QixDQUFxQ2pCLE1BQU0sQ0FBQ08sWUFBNUMsRUFBMEQsRUFBMUQsRUFBOERVLE9BQTlELENBQXNFLElBQXRFLEVBQTRFLEVBQTVFLEVBQWdGQyxJQUFoRixFQUFQO0FBQ0Q7O0FBRUQsU0FBU0MsMkJBQVQsQ0FBcUM1QixLQUFyQyxFQUFvRTtBQUNsRSxNQUFJLENBQUNBLEtBQUQsSUFBVSxDQUFDQSxLQUFLLENBQUM2QixXQUFOLENBQWtCQyxNQUFqQyxFQUF5QztBQUN2QyxXQUFPLEVBQVA7QUFDRDs7QUFDRCxRQUFNQyxTQUFzQixHQUFHLElBQUlDLEdBQUosRUFBL0I7O0FBQ0EsT0FBSyxNQUFNQyxLQUFYLElBQW9CakMsS0FBSyxDQUFDNkIsV0FBTixDQUFrQkMsTUFBdEMsRUFBOEM7QUFDNUMsVUFBTUksT0FBTyxHQUFHbEMsS0FBSyxDQUFDNkIsV0FBTixDQUFrQk0sVUFBbEIsQ0FBNkJDLGVBQTdCLENBQTZDSCxLQUE3QyxDQUFoQixDQUQ0QyxDQUc1Qzs7QUFDQSxTQUFLLE1BQU14QixNQUFYLElBQXFCeUIsT0FBckIsRUFBOEI7QUFDNUIsVUFBSTFCLGdCQUFnQixDQUFDQyxNQUFELENBQXBCLEVBQThCO0FBQzVCLFlBQUksOEJBQWdCSyxxQkFBcUIsQ0FBQ0wsTUFBRCxDQUFyQyxDQUFKLEVBQW9EO0FBQ3BELGNBQU00QixrQkFBa0IsR0FBR3ZCLHFCQUFxQixDQUFDTCxNQUFELENBQWhEO0FBQ0EsWUFBSTRCLGtCQUFrQixLQUFLQyxTQUEzQixFQUFzQztBQUN0Q1AsUUFBQUEsU0FBUyxDQUFDUSxHQUFWLENBQWNGLGtCQUFkO0FBQ0Q7QUFDRjtBQUNGOztBQUNELFNBQU9HLEtBQUssQ0FBQ0MsSUFBTixDQUFXVixTQUFYLENBQVA7QUFDRDs7QUFFRCxNQUFNVyxXQUFXLEdBQUlDLE9BQUQsSUFDbEIsSUFBSWhELE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUIsbUJBQUs4QyxPQUFMLEVBQWMsQ0FBQzVDLEdBQUQsRUFBTTZDLE9BQU4sS0FBbUI3QyxHQUFHLEdBQUdGLE1BQU0sQ0FBQ0UsR0FBRCxDQUFULEdBQWlCSCxPQUFPLENBQUNnRCxPQUFELENBQTVELENBQWpDLENBREY7O0FBR0EsZUFBZUMsb0JBQWYsQ0FBb0NDLGdCQUFwQyxFQUF5RTtBQUN2RSxNQUFJQyxPQUFPLEdBQUdELGdCQUFkOztBQUNBLE1BQUksT0FBT0EsZ0JBQVAsS0FBNEIsUUFBaEMsRUFBMEM7QUFDeENDLElBQUFBLE9BQU8sR0FBRyxDQUFDRCxnQkFBRCxDQUFWO0FBQ0Q7O0FBQ0QsTUFBSSxDQUFDTixLQUFLLENBQUNRLE9BQU4sQ0FBY0QsT0FBZCxDQUFMLEVBQTZCO0FBQzNCLFdBQU8sRUFBUDtBQUNEOztBQUNELFFBQU1FLFNBQVMsR0FBRyxNQUFNdEQsT0FBTyxDQUFDdUQsR0FBUixDQUFZSCxPQUFPLENBQUNJLEdBQVIsQ0FBWVQsV0FBWixDQUFaLENBQXhCO0FBQ0EsU0FBT08sU0FBUyxDQUFDRyxNQUFWLENBQWlCLENBQUNDLEdBQUQsRUFBTUMsSUFBTixLQUFlRCxHQUFHLENBQUNFLE1BQUosQ0FBV0QsSUFBWCxDQUFoQyxFQUFrRCxFQUFsRCxDQUFQO0FBQ0Q7O0FBRUQsZUFBZUUsZUFBZixDQUErQkMsR0FBL0IsRUFBZ0RDLFlBQWhELEVBQXNFO0FBQ3BFLFFBQU1DLFVBQWtDLEdBQUcsRUFBM0M7QUFDQSxRQUFNeEQsY0FBYyxHQUNsQnNELEdBQUcsQ0FBQ0csT0FBSixDQUFZQyxNQUFaLENBQW1CQyxXQUFuQixDQUErQjNELGNBQS9CLElBQWlEc0QsR0FBRyxDQUFDRyxPQUFKLENBQVlDLE1BQVosQ0FBbUJDLFdBQW5CLENBQStCQyxPQUEvQixDQUF1QzVELGNBQXhGLElBQTBHLFNBRDVHOztBQUVBLE9BQUssTUFBTTZELElBQVgsSUFBbUJ0RCxNQUFNLENBQUN1RCxNQUFQLENBQWNSLEdBQUcsQ0FBQ0csT0FBSixDQUFZTSxTQUExQixDQUFuQixFQUF5RDtBQUN2RCxRQUFJLENBQUMsaUNBQXFCRixJQUFyQixDQUFMLEVBQWlDO0FBQy9CRyxNQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBZSxnRUFBZjtBQUNBO0FBQ0Q7O0FBQ0QsVUFBTTtBQUFFQyxNQUFBQSxPQUFGO0FBQVdDLE1BQUFBLE1BQU0sR0FBRyxFQUFwQjtBQUF3QkMsTUFBQUEsS0FBSyxFQUFFekIsZ0JBQWdCLEdBQUcsRUFBbEQ7QUFBc0QwQixNQUFBQSxXQUFXLEdBQUc7QUFBcEUsUUFBNkVSLElBQW5GO0FBQ0EsUUFBSSxDQUFDUSxXQUFMLEVBQWtCO0FBQ2xCLFFBQUksQ0FBQ0YsTUFBTSxDQUFDRyxJQUFQLENBQVlDLEtBQUssSUFBSUEsS0FBSyxDQUFDQyxHQUFOLEtBQWNqQixZQUFuQyxDQUFMLEVBQXVEO0FBQ3ZELFVBQU1rQix1QkFBdUIsR0FBRyxNQUFNL0Isb0JBQW9CLENBQUNDLGdCQUFELENBQTFEOztBQUNBLFNBQUssTUFBTXlCLEtBQVgsSUFBb0JLLHVCQUFwQixFQUE2QztBQUMzQ2pCLE1BQUFBLFVBQVUsQ0FBQ1ksS0FBRCxDQUFWLEdBQW9CTSxjQUFLakYsT0FBTCxDQUFhMkUsS0FBYixDQUFwQjtBQUNEOztBQUNELFVBQU1PLEtBQUssR0FBR1QsT0FBTyxDQUFDUyxLQUFSLENBQWMsMENBQWQsQ0FBZDtBQUNBLFFBQUksQ0FBQ0EsS0FBTCxFQUFZO0FBQ1osVUFBTSxDQUFDQyxXQUFELEdBQWdCQyxVQUFVLEdBQUcsRUFBN0IsSUFBbUNGLEtBQXpDO0FBQ0EsVUFBTUcsS0FBSyxHQUFHLE1BQU1DLFlBQUdDLFFBQUgsQ0FBWUMsT0FBWixDQUFvQlAsY0FBS2pGLE9BQUwsQ0FBYW9GLFVBQVUsQ0FBQ3RELE9BQVgsQ0FBbUIsS0FBbkIsRUFBMEIsRUFBMUIsQ0FBYixDQUFwQixDQUFwQjtBQUNBLFFBQUkyRCxRQUFRLEdBQUdOLFdBQVcsQ0FBQ3JELE9BQVosQ0FBb0JzRCxVQUFwQixFQUFnQyxFQUFoQyxDQUFmO0FBQ0EsVUFBTU0sYUFBYSxHQUFHTCxLQUFLLENBQUNNLE1BQU4sQ0FBYTdGLElBQUksSUFBSUEsSUFBSSxDQUFDOEYsVUFBTCxDQUFnQkgsUUFBaEIsQ0FBckIsQ0FBdEI7O0FBQ0EsUUFBSUMsYUFBYSxDQUFDRyxNQUFkLEdBQXVCLENBQTNCLEVBQThCO0FBQzVCSixNQUFBQSxRQUFRLElBQUssSUFBR2xGLGNBQWUsRUFBL0I7QUFDRCxLQUZELE1BRU87QUFDTGtGLE1BQUFBLFFBQVEsR0FBR0MsYUFBYSxDQUFDLENBQUQsQ0FBeEI7QUFDRDs7QUFDRDNCLElBQUFBLFVBQVUsQ0FBQ29CLFdBQUQsQ0FBVixHQUEwQkYsY0FBS2pGLE9BQUwsQ0FBYWlGLGNBQUthLElBQUwsQ0FBVVYsVUFBVixFQUFzQkssUUFBdEIsQ0FBYixDQUExQjtBQUNEOztBQUNELFNBQU8xQixVQUFQO0FBQ0Q7O0FBQ0QsU0FBU2dDLHdCQUFULENBQWtDbEMsR0FBbEMsRUFBbURDLFlBQW5ELEVBQXlFO0FBQ3ZFLE1BQUlrQyxlQUF5QixHQUFHLEVBQWhDO0FBQ0EsTUFBSUMsZUFBeUIsR0FBRyxFQUFoQztBQUNBLFFBQU1uQixLQUFLLEdBQUdqQixHQUFHLENBQUNHLE9BQUosQ0FBWVUsTUFBWixDQUFtQlosWUFBWSxDQUFDaEMsT0FBYixDQUFxQixjQUFyQixFQUFxQyxFQUFyQyxFQUF5Q29FLGlCQUF6QyxFQUFuQixDQUFkOztBQUNBLE1BQUksQ0FBQ3BCLEtBQUwsRUFBWTtBQUNWLFdBQU87QUFDTHBFLE1BQUFBLFlBQVksRUFBRXNGLGVBRFQ7QUFFTHJGLE1BQUFBLFlBQVksRUFBRXNGO0FBRlQsS0FBUDtBQUlEOztBQUNELFFBQU07QUFBRXZGLElBQUFBLFlBQVksR0FBRyxFQUFqQjtBQUFxQkMsSUFBQUEsWUFBWSxHQUFHO0FBQXBDLE1BQTJDbUUsS0FBakQ7QUFDQWtCLEVBQUFBLGVBQWUsR0FBR0EsZUFBZSxDQUFDckMsTUFBaEIsQ0FBdUJqRCxZQUF2QixDQUFsQjtBQUNBdUYsRUFBQUEsZUFBZSxHQUFHRCxlQUFlLENBQUNyQyxNQUFoQixDQUF1QmhELFlBQXZCLENBQWxCO0FBQ0EsU0FBTztBQUNMRCxJQUFBQSxZQUFZLEVBQUVzRixlQURUO0FBRUxyRixJQUFBQSxZQUFZLEVBQUVzRjtBQUZULEdBQVA7QUFJRDs7QUFFRCxTQUFTRSw0QkFBVCxDQUFzQ3RDLEdBQXRDLEVBQXVEQyxZQUF2RCxFQUE2RTtBQUMzRSxNQUFJa0MsZUFBeUIsR0FBRyxFQUFoQztBQUNBLE1BQUlDLGVBQXlCLEdBQUcsRUFBaEM7O0FBQ0EsT0FBSyxNQUFNN0IsSUFBWCxJQUFtQnRELE1BQU0sQ0FBQ3VELE1BQVAsQ0FBY1IsR0FBRyxDQUFDRyxPQUFKLENBQVlNLFNBQTFCLENBQW5CLEVBQXlEO0FBQ3ZELFFBQUksQ0FBQyxpQ0FBcUJGLElBQXJCLENBQUwsRUFBaUM7QUFDL0JHLE1BQUFBLE9BQU8sQ0FBQ0MsS0FBUixDQUFlLGdFQUFmO0FBQ0E7QUFDRDs7QUFDRCxVQUFNO0FBQUVFLE1BQUFBLE1BQU0sR0FBRyxFQUFYO0FBQWVoRSxNQUFBQSxZQUFZLEdBQUcsRUFBOUI7QUFBa0NDLE1BQUFBLFlBQVksR0FBRztBQUFqRCxRQUF3RHlELElBQTlEO0FBQ0EsUUFBSSxDQUFDTSxNQUFNLENBQUNHLElBQVAsQ0FBWUMsS0FBSyxJQUFJQSxLQUFLLENBQUNDLEdBQU4sS0FBY2pCLFlBQW5DLENBQUwsRUFBdUQ7QUFDdkRrQyxJQUFBQSxlQUFlLEdBQUdBLGVBQWUsQ0FBQ3JDLE1BQWhCLENBQXVCakQsWUFBdkIsQ0FBbEI7QUFDQXVGLElBQUFBLGVBQWUsR0FBR0QsZUFBZSxDQUFDckMsTUFBaEIsQ0FBdUJoRCxZQUF2QixDQUFsQjtBQUNEOztBQUNELFNBQU87QUFDTEQsSUFBQUEsWUFBWSxFQUFFc0YsZUFEVDtBQUVMckYsSUFBQUEsWUFBWSxFQUFFc0Y7QUFGVCxHQUFQO0FBSUQ7O0FBT00sZUFBZUcsa0JBQWYsQ0FBa0N2QyxHQUFsQyxFQUFtREMsWUFBbkQsRUFBNEY7QUFDakcsTUFBSTtBQUNGLFVBQU11QyxPQUFPLEdBQUdDLE9BQU8sQ0FBQ0MsR0FBUixFQUFoQjtBQUNBLFVBQU07QUFBRXBDLE1BQUFBLE9BQU8sRUFBRXFDLHFCQUFxQixHQUFHO0FBQW5DLFFBQTBDM0MsR0FBRyxDQUFDRyxPQUFKLENBQVlDLE1BQVosQ0FBbUJDLFdBQW5FO0FBQ0EsVUFBTXVDLGFBQWEsR0FBRyxxQkFBTXBHLG9CQUFOLEVBQTRCbUcscUJBQTVCLENBQXRCO0FBQ0EsVUFBTTlGLFlBQVksR0FBRyxDQUNuQixHQUFHK0YsYUFBYSxDQUFDL0YsWUFERSxFQUVuQixJQUFJa0MsS0FBSyxDQUFDUSxPQUFOLENBQWNvRCxxQkFBcUIsQ0FBQzlGLFlBQXBDLElBQW9EOEYscUJBQXFCLENBQUM5RixZQUExRSxHQUF5RixFQUE3RixDQUZtQixDQUFyQjtBQUlBLFVBQU1DLFlBQVksR0FBRyxDQUNuQixHQUFHOEYsYUFBYSxDQUFDOUYsWUFERSxFQUVuQixJQUFJaUMsS0FBSyxDQUFDUSxPQUFOLENBQWNvRCxxQkFBcUIsQ0FBQzdGLFlBQXBDLElBQW9ENkYscUJBQXFCLENBQUM3RixZQUExRSxHQUF5RixFQUE3RixDQUZtQixDQUFyQjtBQUlBLFVBQU07QUFBRUgsTUFBQUEsVUFBVSxHQUFHLHFCQUFmO0FBQXNDQyxNQUFBQSxlQUFlLEdBQUc7QUFBeEQsUUFBaUVnRyxhQUF2RTtBQUNBLFFBQUlDLE1BQWdDLEdBQUcsTUFBTUMsT0FBTyxDQUFDMUIsY0FBS2EsSUFBTCxDQUFVTyxPQUFWLEVBQW1CN0YsVUFBbkIsQ0FBRCxDQUFwRDs7QUFDQSxRQUFJLE9BQU9rRyxNQUFQLEtBQWtCLFVBQXRCLEVBQWtDO0FBQ2hDLFVBQUlFLGNBQWMsR0FBR0YsTUFBTSxFQUEzQjs7QUFDQSxVQUFJRSxjQUFjLFlBQVk3RyxPQUE5QixFQUF1QztBQUNyQzZHLFFBQUFBLGNBQWMsR0FBRyxNQUFNQSxjQUF2QjtBQUNEOztBQUNERixNQUFBQSxNQUFNLEdBQUdFLGNBQVQ7QUFDRDs7QUFDRCxVQUFNO0FBQUVsRyxNQUFBQSxZQUFZLEVBQUVtRyxvQkFBb0IsR0FBRyxFQUF2QztBQUEyQ2xHLE1BQUFBLFlBQVksRUFBRW1HLG9CQUFvQixHQUFHO0FBQWhGLFFBQ0pYLDRCQUE0QixDQUFDdEMsR0FBRCxFQUFNQyxZQUFOLENBRDlCO0FBRUEsVUFBTTtBQUFFcEQsTUFBQUEsWUFBWSxFQUFFcUcsaUJBQWlCLEdBQUcsRUFBcEM7QUFBd0NwRyxNQUFBQSxZQUFZLEVBQUVxRyxpQkFBaUIsR0FBRztBQUExRSxRQUFpRmpCLHdCQUF3QixDQUM3R2xDLEdBRDZHLEVBRTdHQyxZQUY2RyxDQUEvRztBQUlBNEMsSUFBQUEsTUFBTSxDQUFDL0IsS0FBUCxHQUFlLE1BQU1mLGVBQWUsQ0FBQ0MsR0FBRCxFQUFNQyxZQUFOLENBQXBDO0FBQ0EsVUFBTW1ELFdBQVcsR0FBRyxNQUFNTixPQUFPLENBQUMxQixjQUFLYSxJQUFMLENBQVVPLE9BQVYsRUFBbUIsY0FBbkIsQ0FBRCxDQUFqQztBQUNBLFFBQUlhLFdBQXdCLEdBQUcsSUFBSTlFLEdBQUosRUFBL0I7O0FBQ0EsUUFBSTNCLGVBQUosRUFBcUI7QUFDbkIsWUFBTUwsS0FBSyxHQUFHLE1BQU1QLE9BQU8sQ0FBQzZHLE1BQUQsQ0FBM0I7QUFDQVEsTUFBQUEsV0FBVyxHQUFHLElBQUk5RSxHQUFKLENBQVFKLDJCQUEyQixDQUFDNUIsS0FBRCxDQUFuQyxDQUFkO0FBQ0Q7O0FBQ0RNLElBQUFBLFlBQVksQ0FDVGlELE1BREgsQ0FDVWtELG9CQURWLEVBRUdsRCxNQUZILENBRVVvRCxpQkFGVixFQUdHSSxPQUhILENBR1dDLG1CQUFtQixJQUFJRixXQUFXLENBQUN2RSxHQUFaLENBQWdCeUUsbUJBQWhCLENBSGxDO0FBSUF6RyxJQUFBQSxZQUFZLENBQ1RnRCxNQURILENBQ1VtRCxvQkFEVixFQUVHbkQsTUFGSCxDQUVVcUQsaUJBRlYsRUFHR0csT0FISCxDQUdXRSxtQkFBbUIsSUFBSUgsV0FBVyxDQUFDSSxNQUFaLENBQW1CRCxtQkFBbkIsQ0FIbEM7QUFJQSxXQUFPekUsS0FBSyxDQUFDQyxJQUFOLENBQVdxRSxXQUFYLEVBQXdCM0QsR0FBeEIsQ0FBNEJnRSxJQUFJLElBQ3JDTixXQUFXLENBQUNPLFlBQVosQ0FBeUJELElBQXpCLEtBQWtDTixXQUFXLENBQUNRLGVBQVosQ0FBNEJGLElBQTVCLENBQWxDLEdBQ0ssR0FBRUEsSUFBSyxJQUFHTixXQUFXLENBQUNPLFlBQVosQ0FBeUJELElBQXpCLEtBQWtDTixXQUFXLENBQUNRLGVBQVosQ0FBNEJGLElBQTVCLENBQWtDLEVBRG5GLEdBRUlBLElBSEMsQ0FBUDtBQUtELEdBL0NELENBK0NFLE9BQU9wSCxHQUFQLEVBQVk7QUFDWm9FLElBQUFBLE9BQU8sQ0FBQ0MsS0FBUixDQUFjckUsR0FBZDtBQUNBLFVBQU1BLEdBQU47QUFDRDtBQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHdlYnBhY2ssIHsgRXh0ZXJuYWxNb2R1bGUgfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCBtZXJnZSBmcm9tICdsb2Rhc2gubWVyZ2UnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IGdsb2IgZnJvbSAnZ2xvYic7XG5pbXBvcnQgU2VydmVybGVzcyBmcm9tICdzZXJ2ZXJsZXNzJztcbmltcG9ydCBpc0J1aWx0aW5Nb2R1bGUgZnJvbSAnaXMtYnVpbHRpbi1tb2R1bGUnO1xuaW1wb3J0IHsgU3RhdHMsIE1vZHVsZSB9IGZyb20gJ3dlYnBhY2snO1xuaW1wb3J0IHsgaXNGdW5jdGlvbkRlZmluaXRpb24sIE1heWJlIH0gZnJvbSAnLi90eXBlcyc7XG5cbmRlY2xhcmUgY29uc3QgZ2xvYmFsOiBDdXN0b21HbG9iYWw7XG5cbmdsb2JhbFsnUEFDS0FHSU5HX0xBQkVMUyddID0gdHJ1ZTtcblxuY29uc3QgY29tcGlsZSA9IChmaWxlOiB3ZWJwYWNrLkNvbmZpZ3VyYXRpb24pOiBQcm9taXNlPE1heWJlPFN0YXRzPj4gPT5cbiAgbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT5cbiAgICB3ZWJwYWNrKGZpbGUpLnJ1bigoZXJyPzogRXJyb3IsIHN0YXRzPzogU3RhdHMpID0+IChlcnIgPyByZWplY3QoZXJyKSA6IHJlc29sdmUoc3RhdHMpKSlcbiAgKTtcblxuY29uc3QgZGVmYXVsdFdlYnBhY2tDb25maWcgPSB7XG4gIGNsZWFuOiB0cnVlLFxuICBiYWNrdXBGaWxlVHlwZTogJ2pzJyxcbiAgY29uZmlnUGF0aDogJy4vd2VicGFjay5jb25maWcuanMnLFxuICBkaXNjb3Zlck1vZHVsZXM6IHRydWUsXG4gIGZvcmNlSW5jbHVkZTogW10sXG4gIGZvcmNlRXhjbHVkZTogW10sXG59O1xuXG5mdW5jdGlvbiBpc0V4dGVybmFsTW9kdWxlKG1vZHVsZTogTW9kdWxlKTogbW9kdWxlIGlzIEV4dGVybmFsTW9kdWxlIHtcbiAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2R1bGUsICdleHRlcm5hbFR5cGUnKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0ZXJuYWxNb2R1bGVOYW1lKG1vZHVsZTogRXh0ZXJuYWxNb2R1bGUpOiBzdHJpbmcge1xuICBjb25zdCByZWdleCA9IG1vZHVsZS5leHRlcm5hbFR5cGUgPyBuZXcgUmVnRXhwKGBeZXh0ZXJuYWwgJHttb2R1bGUuZXh0ZXJuYWxUeXBlfSBcIiguKilcIiRgKSA6IC9eZXh0ZXJuYWwgXCIoLiopXCIkLztcbiAgY29uc3QgcGF0aFBhcnRzID0gcmVnZXguZXhlYyhcbiAgICB0eXBlb2YgbW9kdWxlLmlkZW50aWZpZXIgPT09ICdmdW5jdGlvbicgPyBtb2R1bGUuaWRlbnRpZmllcigpIDogKG1vZHVsZS5pZGVudGlmaWVyIGFzIHVua25vd24gYXMgc3RyaW5nKVxuICApO1xuICBpZiAocGF0aFBhcnRzID09PSBudWxsKSByZXR1cm4gJyc7XG4gIGNvbnN0IG1vZHVsZVBhdGggPSBwYXRoUGFydHNbMV07XG4gIGNvbnN0IHBhdGhDb21wb25lbnRzID0gbW9kdWxlUGF0aC5zcGxpdCgnLycpO1xuICBjb25zdCBtYWluID0gcGF0aENvbXBvbmVudHNbMF07XG5cbiAgLy8gdGhpcyBpcyBhIHBhY2thZ2Ugd2l0aGluIGEgbmFtZXNwYWNlXG4gIGlmIChtYWluLmNoYXJBdCgwKSA9PSAnQCcpIHtcbiAgICByZXR1cm4gYCR7bWFpbn0vJHtwYXRoQ29tcG9uZW50c1sxXX1gO1xuICB9XG5cbiAgcmV0dXJuIG1haW4ucmVwbGFjZSgnZXh0ZXJuYWwnLCAnJykucmVwbGFjZShtb2R1bGUuZXh0ZXJuYWxUeXBlLCAnJykucmVwbGFjZSgvXCIvZywgJycpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gZ2V0RXh0ZXJuYWxNb2R1bGVzRnJvbVN0YXRzKHN0YXRzOiBNYXliZTxTdGF0cz4pOiBzdHJpbmdbXSB7XG4gIGlmICghc3RhdHMgfHwgIXN0YXRzLmNvbXBpbGF0aW9uLmNodW5rcykge1xuICAgIHJldHVybiBbXTtcbiAgfVxuICBjb25zdCBleHRlcm5hbHM6IFNldDxzdHJpbmc+ID0gbmV3IFNldCgpO1xuICBmb3IgKGNvbnN0IGNodW5rIG9mIHN0YXRzLmNvbXBpbGF0aW9uLmNodW5rcykge1xuICAgIGNvbnN0IG1vZHVsZXMgPSBzdGF0cy5jb21waWxhdGlvbi5jaHVua0dyYXBoLmdldENodW5rTW9kdWxlcyhjaHVuayk7XG5cbiAgICAvLyBFeHBsb3JlIGVhY2ggbW9kdWxlIHdpdGhpbiB0aGUgY2h1bmsgKGJ1aWx0IGlucHV0cyk6XG4gICAgZm9yIChjb25zdCBtb2R1bGUgb2YgbW9kdWxlcykge1xuICAgICAgaWYgKGlzRXh0ZXJuYWxNb2R1bGUobW9kdWxlKSkge1xuICAgICAgICBpZiAoaXNCdWlsdGluTW9kdWxlKGdldEV4dGVybmFsTW9kdWxlTmFtZShtb2R1bGUpKSkgY29udGludWU7XG4gICAgICAgIGNvbnN0IGV4dGVybmFsTW9kdWxlTmFtZSA9IGdldEV4dGVybmFsTW9kdWxlTmFtZShtb2R1bGUpO1xuICAgICAgICBpZiAoZXh0ZXJuYWxNb2R1bGVOYW1lID09PSB1bmRlZmluZWQpIGNvbnRpbnVlO1xuICAgICAgICBleHRlcm5hbHMuYWRkKGV4dGVybmFsTW9kdWxlTmFtZSk7XG4gICAgICB9XG4gICAgfVxuICB9XG4gIHJldHVybiBBcnJheS5mcm9tKGV4dGVybmFscyk7XG59XG5cbmNvbnN0IGdsb2JQcm9taXNlID0gKHBhdHRlcm46IHN0cmluZyk6IFByb21pc2U8c3RyaW5nW10+ID0+XG4gIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IGdsb2IocGF0dGVybiwgKGVyciwgbWF0Y2hlcykgPT4gKGVyciA/IHJlamVjdChlcnIpIDogcmVzb2x2ZShtYXRjaGVzKSkpKTtcblxuYXN5bmMgZnVuY3Rpb24gZmluZEVudHJpZXNTcGVjaWZpZWQoc3BlY2lmaWVkRW50cmllczogc3RyaW5nIHwgc3RyaW5nW10pIHtcbiAgbGV0IGVudHJpZXMgPSBzcGVjaWZpZWRFbnRyaWVzO1xuICBpZiAodHlwZW9mIHNwZWNpZmllZEVudHJpZXMgPT09ICdzdHJpbmcnKSB7XG4gICAgZW50cmllcyA9IFtzcGVjaWZpZWRFbnRyaWVzXTtcbiAgfVxuICBpZiAoIUFycmF5LmlzQXJyYXkoZW50cmllcykpIHtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgY29uc3QgYWxsTWFwcGVkID0gYXdhaXQgUHJvbWlzZS5hbGwoZW50cmllcy5tYXAoZ2xvYlByb21pc2UpKTtcbiAgcmV0dXJuIGFsbE1hcHBlZC5yZWR1Y2UoKGFyciwgbGlzdCkgPT4gYXJyLmNvbmNhdChsaXN0KSwgW10pO1xufVxuXG5hc3luYyBmdW5jdGlvbiByZXNvbHZlZEVudHJpZXMoc2xzOiBTZXJ2ZXJsZXNzLCBsYXllclJlZk5hbWU6IHN0cmluZykge1xuICBjb25zdCBuZXdFbnRyaWVzOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+ID0ge307XG4gIGNvbnN0IGJhY2t1cEZpbGVUeXBlID1cbiAgICBzbHMuc2VydmljZS5jdXN0b20ubGF5ZXJDb25maWcuYmFja3VwRmlsZVR5cGUgPz8gc2xzLnNlcnZpY2UuY3VzdG9tLmxheWVyQ29uZmlnLndlYnBhY2suYmFja3VwRmlsZVR5cGUgPz8gJ2RlZmF1bHQnO1xuICBmb3IgKGNvbnN0IGZ1bmMgb2YgT2JqZWN0LnZhbHVlcyhzbHMuc2VydmljZS5mdW5jdGlvbnMpKSB7XG4gICAgaWYgKCFpc0Z1bmN0aW9uRGVmaW5pdGlvbihmdW5jKSkge1xuICAgICAgY29uc29sZS5lcnJvcihgVGhpcyBsaWJyYXJ5IGRvZXNuJ3QgY3VycmVudGx5IHN1cHBvcnQgZnVuY3Rpb25zIHdpdGggYW4gaW1hZ2VgKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgICBjb25zdCB7IGhhbmRsZXIsIGxheWVycyA9IFtdLCBlbnRyeTogc3BlY2lmaWVkRW50cmllcyA9IFtdLCBzaG91bGRMYXllciA9IHRydWUgfSA9IGZ1bmM7XG4gICAgaWYgKCFzaG91bGRMYXllcikgY29udGludWU7XG4gICAgaWYgKCFsYXllcnMuc29tZShsYXllciA9PiBsYXllci5SZWYgPT09IGxheWVyUmVmTmFtZSkpIGNvbnRpbnVlO1xuICAgIGNvbnN0IG1hdGNoZWRTcGVjaWZpZWRFbnRyaWVzID0gYXdhaXQgZmluZEVudHJpZXNTcGVjaWZpZWQoc3BlY2lmaWVkRW50cmllcyk7XG4gICAgZm9yIChjb25zdCBlbnRyeSBvZiBtYXRjaGVkU3BlY2lmaWVkRW50cmllcykge1xuICAgICAgbmV3RW50cmllc1tlbnRyeV0gPSBwYXRoLnJlc29sdmUoZW50cnkpO1xuICAgIH1cbiAgICBjb25zdCBtYXRjaCA9IGhhbmRsZXIubWF0Y2goL14oKCg/OlteXFwvXFxuXStcXC8pKyk/W14uXSsoLmpzeD98LnRzeD8pPykvKTtcbiAgICBpZiAoIW1hdGNoKSBjb250aW51ZTtcbiAgICBjb25zdCBbaGFuZGxlck5hbWUsICwgZm9sZGVyTmFtZSA9ICcnXSA9IG1hdGNoO1xuICAgIGNvbnN0IGZpbGVzID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZGRpcihwYXRoLnJlc29sdmUoZm9sZGVyTmFtZS5yZXBsYWNlKC9cXC8kLywgJycpKSk7XG4gICAgbGV0IGZpbGVOYW1lID0gaGFuZGxlck5hbWUucmVwbGFjZShmb2xkZXJOYW1lLCAnJyk7XG4gICAgY29uc3QgZmlsdGVyZWRGaWxlcyA9IGZpbGVzLmZpbHRlcihmaWxlID0+IGZpbGUuc3RhcnRzV2l0aChmaWxlTmFtZSkpO1xuICAgIGlmIChmaWx0ZXJlZEZpbGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGZpbGVOYW1lICs9IGAuJHtiYWNrdXBGaWxlVHlwZX1gO1xuICAgIH0gZWxzZSB7XG4gICAgICBmaWxlTmFtZSA9IGZpbHRlcmVkRmlsZXNbMF07XG4gICAgfVxuICAgIG5ld0VudHJpZXNbaGFuZGxlck5hbWVdID0gcGF0aC5yZXNvbHZlKHBhdGguam9pbihmb2xkZXJOYW1lLCBmaWxlTmFtZSkpO1xuICB9XG4gIHJldHVybiBuZXdFbnRyaWVzO1xufVxuZnVuY3Rpb24gZ2V0Rm9yY2VNb2R1bGVzRnJvbUxheWVyKHNsczogU2VydmVybGVzcywgbGF5ZXJSZWZOYW1lOiBzdHJpbmcpIHtcbiAgbGV0IGZvcmNlSW5jbHVkZUFsbDogc3RyaW5nW10gPSBbXTtcbiAgbGV0IGZvcmNlRXhjbHVkZUFsbDogc3RyaW5nW10gPSBbXTtcbiAgY29uc3QgbGF5ZXIgPSBzbHMuc2VydmljZS5sYXllcnNbbGF5ZXJSZWZOYW1lLnJlcGxhY2UoL0xhbWJkYUxheWVyJC8sICcnKS50b0xvY2FsZUxvd2VyQ2FzZSgpXTtcbiAgaWYgKCFsYXllcikge1xuICAgIHJldHVybiB7XG4gICAgICBmb3JjZUluY2x1ZGU6IGZvcmNlSW5jbHVkZUFsbCxcbiAgICAgIGZvcmNlRXhjbHVkZTogZm9yY2VFeGNsdWRlQWxsLFxuICAgIH07XG4gIH1cbiAgY29uc3QgeyBmb3JjZUluY2x1ZGUgPSBbXSwgZm9yY2VFeGNsdWRlID0gW10gfSA9IGxheWVyO1xuICBmb3JjZUluY2x1ZGVBbGwgPSBmb3JjZUluY2x1ZGVBbGwuY29uY2F0KGZvcmNlSW5jbHVkZSk7XG4gIGZvcmNlRXhjbHVkZUFsbCA9IGZvcmNlSW5jbHVkZUFsbC5jb25jYXQoZm9yY2VFeGNsdWRlKTtcbiAgcmV0dXJuIHtcbiAgICBmb3JjZUluY2x1ZGU6IGZvcmNlSW5jbHVkZUFsbCxcbiAgICBmb3JjZUV4Y2x1ZGU6IGZvcmNlRXhjbHVkZUFsbCxcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0Rm9yY2VNb2R1bGVzRnJvbUZ1bmN0aW9ucyhzbHM6IFNlcnZlcmxlc3MsIGxheWVyUmVmTmFtZTogc3RyaW5nKSB7XG4gIGxldCBmb3JjZUluY2x1ZGVBbGw6IHN0cmluZ1tdID0gW107XG4gIGxldCBmb3JjZUV4Y2x1ZGVBbGw6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3QgZnVuYyBvZiBPYmplY3QudmFsdWVzKHNscy5zZXJ2aWNlLmZ1bmN0aW9ucykpIHtcbiAgICBpZiAoIWlzRnVuY3Rpb25EZWZpbml0aW9uKGZ1bmMpKSB7XG4gICAgICBjb25zb2xlLmVycm9yKGBUaGlzIGxpYnJhcnkgZG9lc24ndCBjdXJyZW50bHkgc3VwcG9ydCBmdW5jdGlvbnMgd2l0aCBhbiBpbWFnZWApO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGNvbnN0IHsgbGF5ZXJzID0gW10sIGZvcmNlSW5jbHVkZSA9IFtdLCBmb3JjZUV4Y2x1ZGUgPSBbXSB9ID0gZnVuYztcbiAgICBpZiAoIWxheWVycy5zb21lKGxheWVyID0+IGxheWVyLlJlZiA9PT0gbGF5ZXJSZWZOYW1lKSkgY29udGludWU7XG4gICAgZm9yY2VJbmNsdWRlQWxsID0gZm9yY2VJbmNsdWRlQWxsLmNvbmNhdChmb3JjZUluY2x1ZGUpO1xuICAgIGZvcmNlRXhjbHVkZUFsbCA9IGZvcmNlSW5jbHVkZUFsbC5jb25jYXQoZm9yY2VFeGNsdWRlKTtcbiAgfVxuICByZXR1cm4ge1xuICAgIGZvcmNlSW5jbHVkZTogZm9yY2VJbmNsdWRlQWxsLFxuICAgIGZvcmNlRXhjbHVkZTogZm9yY2VFeGNsdWRlQWxsLFxuICB9O1xufVxuXG50eXBlIFdlYnBhY2tDb25maWdBc09iak9yRnVuYyA9XG4gIHwgd2VicGFjay5Db25maWd1cmF0aW9uXG4gIHwgKCgpID0+IHdlYnBhY2suQ29uZmlndXJhdGlvbilcbiAgfCAoKCkgPT4gUHJvbWlzZTx3ZWJwYWNrLkNvbmZpZ3VyYXRpb24+KTtcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldEV4dGVybmFsTW9kdWxlcyhzbHM6IFNlcnZlcmxlc3MsIGxheWVyUmVmTmFtZTogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICB0cnkge1xuICAgIGNvbnN0IHJ1blBhdGggPSBwcm9jZXNzLmN3ZCgpO1xuICAgIGNvbnN0IHsgd2VicGFjazogd2VicGFja0NvbmZpZ1VubWVyZ2VkID0ge30gfSA9IHNscy5zZXJ2aWNlLmN1c3RvbS5sYXllckNvbmZpZztcbiAgICBjb25zdCB3ZWJwYWNrQ29uZmlnID0gbWVyZ2UoZGVmYXVsdFdlYnBhY2tDb25maWcsIHdlYnBhY2tDb25maWdVbm1lcmdlZCk7XG4gICAgY29uc3QgZm9yY2VJbmNsdWRlID0gW1xuICAgICAgLi4ud2VicGFja0NvbmZpZy5mb3JjZUluY2x1ZGUsXG4gICAgICAuLi4oQXJyYXkuaXNBcnJheSh3ZWJwYWNrQ29uZmlnVW5tZXJnZWQuZm9yY2VJbmNsdWRlKSA/IHdlYnBhY2tDb25maWdVbm1lcmdlZC5mb3JjZUluY2x1ZGUgOiBbXSksXG4gICAgXTtcbiAgICBjb25zdCBmb3JjZUV4Y2x1ZGUgPSBbXG4gICAgICAuLi53ZWJwYWNrQ29uZmlnLmZvcmNlRXhjbHVkZSxcbiAgICAgIC4uLihBcnJheS5pc0FycmF5KHdlYnBhY2tDb25maWdVbm1lcmdlZC5mb3JjZUV4Y2x1ZGUpID8gd2VicGFja0NvbmZpZ1VubWVyZ2VkLmZvcmNlRXhjbHVkZSA6IFtdKSxcbiAgICBdO1xuICAgIGNvbnN0IHsgY29uZmlnUGF0aCA9ICcuL3dlYnBhY2suY29uZmlnLmpzJywgZGlzY292ZXJNb2R1bGVzID0gdHJ1ZSB9ID0gd2VicGFja0NvbmZpZztcbiAgICBsZXQgY29uZmlnOiBXZWJwYWNrQ29uZmlnQXNPYmpPckZ1bmMgPSBhd2FpdCByZXF1aXJlKHBhdGguam9pbihydW5QYXRoLCBjb25maWdQYXRoKSk7XG4gICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIGxldCBuZXdDb25maWdWYWx1ZSA9IGNvbmZpZygpO1xuICAgICAgaWYgKG5ld0NvbmZpZ1ZhbHVlIGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICBuZXdDb25maWdWYWx1ZSA9IGF3YWl0IG5ld0NvbmZpZ1ZhbHVlO1xuICAgICAgfVxuICAgICAgY29uZmlnID0gbmV3Q29uZmlnVmFsdWU7XG4gICAgfVxuICAgIGNvbnN0IHsgZm9yY2VJbmNsdWRlOiBmb3JjZUluY2x1ZGVGdW5jdGlvbiA9IFtdLCBmb3JjZUV4Y2x1ZGU6IGZvcmNlRXhjbHVkZUZ1bmN0aW9uID0gW10gfSA9XG4gICAgICBnZXRGb3JjZU1vZHVsZXNGcm9tRnVuY3Rpb25zKHNscywgbGF5ZXJSZWZOYW1lKTtcbiAgICBjb25zdCB7IGZvcmNlSW5jbHVkZTogZm9yY2VJbmNsdWRlTGF5ZXIgPSBbXSwgZm9yY2VFeGNsdWRlOiBmb3JjZUV4Y2x1ZGVMYXllciA9IFtdIH0gPSBnZXRGb3JjZU1vZHVsZXNGcm9tTGF5ZXIoXG4gICAgICBzbHMsXG4gICAgICBsYXllclJlZk5hbWVcbiAgICApO1xuICAgIGNvbmZpZy5lbnRyeSA9IGF3YWl0IHJlc29sdmVkRW50cmllcyhzbHMsIGxheWVyUmVmTmFtZSk7XG4gICAgY29uc3QgcGFja2FnZUpzb24gPSBhd2FpdCByZXF1aXJlKHBhdGguam9pbihydW5QYXRoLCAncGFja2FnZS5qc29uJykpO1xuICAgIGxldCBtb2R1bGVOYW1lczogU2V0PHN0cmluZz4gPSBuZXcgU2V0KCk7XG4gICAgaWYgKGRpc2NvdmVyTW9kdWxlcykge1xuICAgICAgY29uc3Qgc3RhdHMgPSBhd2FpdCBjb21waWxlKGNvbmZpZyk7XG4gICAgICBtb2R1bGVOYW1lcyA9IG5ldyBTZXQoZ2V0RXh0ZXJuYWxNb2R1bGVzRnJvbVN0YXRzKHN0YXRzKSk7XG4gICAgfVxuICAgIGZvcmNlSW5jbHVkZVxuICAgICAgLmNvbmNhdChmb3JjZUluY2x1ZGVGdW5jdGlvbilcbiAgICAgIC5jb25jYXQoZm9yY2VJbmNsdWRlTGF5ZXIpXG4gICAgICAuZm9yRWFjaChmb3JjZUluY2x1ZGVkTW9kdWxlID0+IG1vZHVsZU5hbWVzLmFkZChmb3JjZUluY2x1ZGVkTW9kdWxlKSk7XG4gICAgZm9yY2VFeGNsdWRlXG4gICAgICAuY29uY2F0KGZvcmNlRXhjbHVkZUZ1bmN0aW9uKVxuICAgICAgLmNvbmNhdChmb3JjZUV4Y2x1ZGVMYXllcilcbiAgICAgIC5mb3JFYWNoKGZvcmNlRXhjbHVkZWRNb2R1bGUgPT4gbW9kdWxlTmFtZXMuZGVsZXRlKGZvcmNlRXhjbHVkZWRNb2R1bGUpKTtcbiAgICByZXR1cm4gQXJyYXkuZnJvbShtb2R1bGVOYW1lcykubWFwKG5hbWUgPT5cbiAgICAgIHBhY2thZ2VKc29uLmRlcGVuZGVuY2llc1tuYW1lXSB8fCBwYWNrYWdlSnNvbi5kZXZEZXBlbmRlbmNpZXNbbmFtZV1cbiAgICAgICAgPyBgJHtuYW1lfUAke3BhY2thZ2VKc29uLmRlcGVuZGVuY2llc1tuYW1lXSB8fCBwYWNrYWdlSnNvbi5kZXZEZXBlbmRlbmNpZXNbbmFtZV19YFxuICAgICAgICA6IG5hbWVcbiAgICApO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG4iXX0= |
+8
-1
| import { Layer, TransformedLayerResources } from './types'; | ||
| import Serverless from 'serverless'; | ||
| declare const LEVELS: { | ||
| none: number; | ||
| info: number; | ||
| verbose: number; | ||
| debug: number; | ||
| }; | ||
| export default class LayerManagerPlugin { | ||
| level: string; | ||
| level: keyof typeof LEVELS; | ||
| hooks: { | ||
@@ -35,1 +41,2 @@ [key: string]: () => Promise<unknown>; | ||
| } | ||
| export {}; |
+2
-2
@@ -247,3 +247,3 @@ "use strict"; | ||
| const nodeLayerPath = `${folder}/nodejs`; | ||
| const exclude = sls.service?.package?.exclude ?? sls.service?.package?.patterns?.filter(p => p.startsWith('!'))?.map(p => p.replace(/^!/, '')) ?? []; | ||
| const exclude = sls.service?.package?.exclude ?? sls.service?.package?.patterns?.filter(p => p.startsWith('!')).map(p => p.replace(/^!/, '')) ?? []; | ||
| info(this, `Cleaning ${exclude.map(rule => _path.default.join(nodeLayerPath, rule)).join(', ')}`); | ||
@@ -354,2 +354,2 @@ const filesDeleted = await (0, _del.default)(exclude.map(rule => _path.default.join(nodeLayerPath, rule))); | ||
| module.exports = exports.default; | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJleGVjIiwidXRpbCIsInByb21pc2lmeSIsImNvbW1hbmQiLCJvcHRpb25zIiwiY2FsbGJhY2siLCJMT0dfTEVWRUwiLCJwcm9jZXNzIiwiZW52IiwiREVGQVVMVF9DT05GSUciLCJpbnN0YWxsTGF5ZXJzIiwiZXhwb3J0TGF5ZXJzIiwiYnVsa0luc3RhbGwiLCJ1cGdyYWRlTGF5ZXJSZWZlcmVuY2VzIiwiZXhwb3J0UHJlZml4IiwibWFuYWdlTm9kZUZvbGRlciIsInBhY2thZ2VyIiwicmVzb2x1dGlvbnMiLCJ3ZWJwYWNrIiwiY2xlYW4iLCJtaW5pZnkiLCJiYWNrdXBGaWxlVHlwZSIsImNvbmZpZ1BhdGgiLCJkaXNjb3Zlck1vZHVsZXMiLCJwcm9kdWN0aW9uTW9kZSIsIkxFVkVMUyIsIm5vbmUiLCJpbmZvIiwidmVyYm9zZSIsImRlYnVnIiwibG9nIiwicyIsImNvbnNvbGUiLCJsZXZlbCIsImdldExheWVycyIsInNlcnZlcmxlc3MiLCJzZXJ2aWNlIiwibGF5ZXJzIiwiZ2V0Q29uZmlnIiwiY3VzdG9tIiwibGF5ZXJDb25maWciLCJMYXllck1hbmFnZXJQbHVnaW4iLCJjb25zdHJ1Y3RvciIsInNscyIsInYiLCJpbml0IiwiaG9va3MiLCJ0cmFuc2Zvcm1MYXllclJlc291cmNlcyIsImNvbmZpZyIsImluc3RhbGxMYXllciIsImxheWVyIiwibGF5ZXJOYW1lIiwicGF0aCIsImxvY2FsUGF0aCIsImxheWVyUmVmTmFtZSIsInJlcGxhY2UiLCJ4IiwidG9VcHBlckNhc2UiLCJub2RlTGF5ZXJQYXRoIiwicGFja2FnZUpzb25QYXRoIiwiam9pbiIsImZzIiwiZXhpc3RzU3luYyIsInByb21pc2VzIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJjb3B5RmlsZSIsImN3ZCIsIndyaXRlRmlsZSIsInByb2R1Y3Rpb25Nb2RlRmxhZyIsInBhY2thZ2VzIiwibGVuZ3RoIiwidHJpbSIsIk9iamVjdCIsImtleXMiLCJqc29uU3RyaW5nIiwicmVhZEZpbGUiLCJlbmNvZGluZyIsImpzb24iLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJlIiwiZXJyb3IiLCJpbnN0YWxsZWRMYXllcnMiLCJhdHRlbXB0ZWRJbnN0YWxsTGF5ZXJzIiwiUHJvbWlzZSIsImFsbCIsImVudHJpZXMiLCJtYXAiLCJpbnN0YWxsZWQiLCJkZWxldGUiLCJmaWx0ZXIiLCJub3RFbXB0eSIsInB1c2giLCJmb2xkZXIiLCJleGNsdWRlIiwicGFja2FnZSIsInBhdHRlcm5zIiwicCIsInN0YXJ0c1dpdGgiLCJydWxlIiwiZmlsZXNEZWxldGVkIiwiY29tcHJlc3NfanNvbiIsIm1vZHVsZSIsIm1hbmdsZSIsInBhY2thZ2Vqc29uIiwiZXhwb3J0ZWRMYXllcnMiLCJ1cGdyYWRlZExheWVyUmVmZXJlbmNlcyIsImNvbXBpbGVkQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSIsImNmIiwicHJvdmlkZXIiLCJsYXllcnNLZXlzIiwidHJhbnNmb3JtZWRSZXNvdXJjZXMiLCJyZWR1Y2UiLCJyZXN1bHQiLCJpZCIsIm5hbWUiLCJleHBvcnROYW1lIiwib3V0cHV0IiwiT3V0cHV0cyIsIkV4cG9ydCIsIk5hbWUiLCJyZXNvdXJjZVJlZiIsInZlcnNpb25lZFJlc291cmNlUmVmIiwiVmFsdWUiLCJSZWYiLCJyZXNvdXJjZXMiLCJSZXNvdXJjZXMiLCJyZXNvdXJjZSIsIlR5cGUiLCJ0eXBlIiwiUHJvcGVydGllcyIsIkxheWVycyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOzs7Ozs7QUFFQSxNQUFNQSxJQUFJLEdBQUdDLGNBQUtDLFNBQUwsQ0FDWCxDQUNFQyxPQURGLEVBRUVDLE9BRkYsRUFLRUMsUUFMRixLQU1LLHlCQUFlRixPQUFmLEVBQXdCQyxPQUF4QixFQUFpQ0MsUUFBakMsQ0FQTSxDQUFiOztBQVVBLE1BQU07QUFBRUMsRUFBQUEsU0FBUyxHQUFHO0FBQWQsSUFB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QUNBLGtCQUFNO0FBQ0pJLGNBQUFBLE1BQU0sRUFBRWhHLE1BQU0sR0FBRztBQURiLGdCQUVvRitGLFVBRjFGOztBQUdBLGdCQUFJRCxJQUFJLEtBQUssdUJBQWIsRUFBc0M7QUFDcEMsbUJBQUssTUFBTWpGLEtBQVgsSUFBb0JiLE1BQXBCLEVBQTRCO0FBQzFCLG9CQUFJYSxLQUFLLENBQUM0RSxHQUFOLEtBQWNILFdBQWxCLEVBQStCO0FBQzdCL0Ysa0JBQUFBLE9BQU8sQ0FBQyxJQUFELEVBQVEsR0FBRXdGLEVBQUcseUNBQXdDUSxvQkFBcUIsRUFBMUUsQ0FBUDtBQUNBMUUsa0JBQUFBLEtBQUssQ0FBQzRFLEdBQU4sR0FBWUYsb0JBQVo7QUFDQVQsa0JBQUFBLE1BQU0sQ0FBQ1AsdUJBQVAsQ0FBK0JkLElBQS9CLENBQW9DNUMsS0FBcEM7QUFDRDtBQUNGO0FBQ0Y7QUFDRjtBQUNGO0FBQ0Y7O0FBRUR0QixNQUFBQSxPQUFPLENBQUMsSUFBRCxFQUFPLDRCQUFQLEVBQXFDbUQsSUFBSSxDQUFDRSxTQUFMLENBQWU2QixFQUFmLEVBQW1CLElBQW5CLEVBQXlCLENBQXpCLENBQXJDLENBQVA7QUFFQSxhQUFPSyxNQUFQO0FBQ0QsS0FyRDBCLEVBc0QzQjtBQUNFUixNQUFBQSxjQUFjLEVBQUUsRUFEbEI7QUFFRUMsTUFBQUEsdUJBQXVCLEVBQUU7QUFGM0IsS0F0RDJCLENBQTdCO0FBMkRBLFdBQ0VLLG9CQUFvQixJQUFJO0FBQ3RCTixNQUFBQSxjQUFjLEVBQUUsRUFETTtBQUV0QkMsTUFBQUEsdUJBQXVCLEVBQUU7QUFGSCxLQUQxQjtBQU1EOztBQWhQcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjIGFzIGV4ZWNOb25Qcm9taXNlLCBFeGVjT3B0aW9ucywgRXhlY0V4Y2VwdGlvbiB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgcGFzY2FsY2FzZSBmcm9tICdwYXNjYWxjYXNlJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBkZWwgZnJvbSAnZGVsJztcbmltcG9ydCB7IGdldEV4dGVybmFsTW9kdWxlcyB9IGZyb20gJy4vZXh0ZXJuYWwnO1xuaW1wb3J0IHsgTWF5YmUsIExheWVyLCBGdW5jdGlvbkxheWVyUmVmZXJlbmNlLCBUcmFuc2Zvcm1lZExheWVyUmVzb3VyY2VzLCBub3RFbXB0eSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IFNlcnZlcmxlc3MgZnJvbSAnc2VydmVybGVzcyc7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvblJlc291cmNlLCBPdXRwdXQgfSBmcm9tICdzZXJ2ZXJsZXNzL2F3cyc7XG5pbXBvcnQgbWluaWZ5QWxsIGZyb20gJ21pbmlmeS1hbGwtanMnO1xuXG5jb25zdCBleGVjID0gdXRpbC5wcm9taXNpZnkoXG4gIChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgZW5jb2Rpbmc6ICdidWZmZXInIHwgbnVsbDtcbiAgICB9ICYgRXhlY09wdGlvbnMsXG4gICAgY2FsbGJhY2s6IChlcnJvcjogRXhlY0V4Y2VwdGlvbiB8IG51bGwsIHN0ZG91dDogQnVmZmVyLCBzdGRlcnI6IEJ1ZmZlcikgPT4gdm9pZFxuICApID0+IGV4ZWNOb25Qcm9taXNlKGNvbW1hbmQsIG9wdGlvbnMsIGNhbGxiYWNrKVxuKTtcblxuY29uc3QgeyBMT0dfTEVWRUwgPSAnaW5mbycgfSA9IHByb2Nlc3MuZW52O1xuXG5jb25zdCBERUZBVUxUX0NPTkZJRyA9IHtcbiAgaW5zdGFsbExheWVyczogdHJ1ZSxcbiAgZXhwb3J0TGF5ZXJzOiB0cnVlLFxuICBidWxrSW5zdGFsbDogZmFsc2UsXG4gIHVwZ3JhZGVMYXllclJlZmVyZW5jZXM6IHRydWUsXG4gIGV4cG9ydFByZWZpeDogJyR7QVdTOjpTdGFja05hbWV9LScsXG4gIG1hbmFnZU5vZGVGb2xkZXI6IGZhbHNlLFxuICBwYWNrYWdlcjogJ25wbScsXG4gIHJlc29sdXRpb25zOiB7fSxcbiAgd2VicGFjazoge1xuICAgIGNsZWFuOiB0cnVlLFxuICAgIG1pbmlmeTogZmFsc2UsXG4gICAgYmFja3VwRmlsZVR5cGU6ICdqcycsXG4gICAgY29uZmlnUGF0aDogJy4vd2VicGFjay5jb25maWcuanMnLFxuICAgIGRpc2NvdmVyTW9kdWxlczogdHJ1ZSxcbiAgfSxcbiAgcHJvZHVjdGlvbk1vZGU6IHRydWUsXG59O1xuXG5jb25zdCBMRVZFTFMgPSB7XG4gIG5vbmU6IDAsXG4gIGluZm86IDEsXG4gIHZlcmJvc2U6IDIsXG4gIGRlYnVnOiAzLFxufTtcblxuZnVuY3Rpb24gbG9nKC4uLnM6IHVua25vd25bXSkge1xuICBjb25zb2xlLmxvZygnW3dlYnBhY2stbGF5ZXJzXScsIC4uLnMpO1xufVxuXG5mdW5jdGlvbiB2ZXJib3NlKHsgbGV2ZWwgfSwgLi4uczogdW5rbm93bltdKSB7XG4gIExFVkVMU1tsZXZlbF0gPj0gTEVWRUxTLnZlcmJvc2UgJiYgbG9nKC4uLnMpO1xufVxuXG5mdW5jdGlvbiBpbmZvKHsgbGV2ZWwgfSwgLi4uczogdW5rbm93bltdKSB7XG4gIExFVkVMU1tsZXZlbF0gPj0gTEVWRUxTLmluZm8gJiYgbG9nKC4uLnMpO1xufVxuXG5mdW5jdGlvbiBkZWJ1Zyh7IGxldmVsIH0sIC4uLnM6IHVua25vd25bXSkge1xuICBMRVZFTFNbbGV2ZWxdID49IExFVkVMUy5kZWJ1ZyAmJiBsb2coLi4ucyk7XG59XG5cbmZ1bmN0aW9uIGdldExheWVycyhzZXJ2ZXJsZXNzOiBTZXJ2ZXJsZXNzKTogeyBba2V5OiBzdHJpbmddOiBMYXllciB9IHtcbiAgcmV0dXJuIHNlcnZlcmxlc3Muc2VydmljZS5sYXllcnMgfHwge307XG59XG5cbmZ1bmN0aW9uIGdldENvbmZpZyhzZXJ2ZXJsZXNzOiBTZXJ2ZXJsZXNzKSB7XG4gIGNvbnN0IGN1c3RvbSA9IHNlcnZlcmxlc3Muc2VydmljZS5jdXN0b20gfHwge307XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5ERUZBVUxUX0NPTkZJRyxcbiAgICAuLi5jdXN0b20ubGF5ZXJDb25maWcsXG4gICAgd2VicGFjazoge1xuICAgICAgLi4uREVGQVVMVF9DT05GSUcud2VicGFjayxcbiAgICAgIC4uLihjdXN0b20ubGF5ZXJDb25maWcud2VicGFjayA/PyB7fSksXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGF5ZXJNYW5hZ2VyUGx1Z2luIHtcbiAgbGV2ZWw6IHN0cmluZztcbiAgaG9va3M6IHtcbiAgICBba2V5OiBzdHJpbmddOiAoKSA9PiBQcm9taXNlPHVua25vd24+O1xuICB9O1xuICBjb25maWc6IHtcbiAgICBpbnN0YWxsTGF5ZXJzPzogYm9vbGVhbjtcbiAgICBidWxrSW5zdGFsbD86IGJvb2xlYW47XG4gICAgZXhwb3J0TGF5ZXJzPzogYm9vbGVhbjtcbiAgICB1cGdyYWRlTGF5ZXJSZWZlcmVuY2VzPzogYm9vbGVhbjtcbiAgICBleHBvcnRQcmVmaXg/OiBzdHJpbmc7XG4gICAgbWFuYWdlTm9kZUZvbGRlcj86IGJvb2xlYW47XG4gICAgcGFja2FnZXI/OiAnbnBtJyB8ICd5YXJuJztcbiAgICByZXNvbHV0aW9ucz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgd2VicGFjazogUGFydGlhbDx7XG4gICAgICBjbGVhbjogYm9vbGVhbjtcbiAgICAgIG1pbmlmeTogYm9vbGVhbjtcbiAgICAgIGJhY2t1cEZpbGVUeXBlOiAnanMnIHwgJ3RzJyB8ICdjanMnO1xuICAgICAgY29uZmlnUGF0aDogc3RyaW5nO1xuICAgICAgZGlzY292ZXJNb2R1bGVzOiBib29sZWFuO1xuICAgIH0+O1xuICAgIHByb2R1Y3Rpb25Nb2RlPzogYm9vbGVhbjtcbiAgfSA9IHsgd2VicGFjazoge30gfTtcbiAgY29uc3RydWN0b3Ioc2xzOiBTZXJ2ZXJsZXNzLCBvcHRpb25zOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IHt9KSB7XG4gICAgdGhpcy5sZXZlbCA9IG9wdGlvbnMudiB8fCBvcHRpb25zLnZlcmJvc2UgPyAndmVyYm9zZScgOiBMT0dfTEVWRUw7XG5cbiAgICBkZWJ1Zyh0aGlzLCBgSW52b2tpbmcgd2VicGFjay1sYXllcnMgcGx1Z2luYCk7XG4gICAgdGhpcy5pbml0KHNscyk7XG5cbiAgICB0aGlzLmhvb2tzID0ge1xuICAgICAgJ3BhY2thZ2U6aW5pdGlhbGl6ZSc6ICgpID0+IHRoaXMuaW5zdGFsbExheWVycyhzbHMpLFxuICAgICAgJ2JlZm9yZTpkZXBsb3k6ZGVwbG95JzogKCkgPT4gdGhpcy50cmFuc2Zvcm1MYXllclJlc291cmNlcyhzbHMpLFxuICAgIH07XG4gIH1cblxuICBpbml0KHNsczogU2VydmVybGVzcyk6IHZvaWQge1xuICAgIHRoaXMuY29uZmlnID0gZ2V0Q29uZmlnKHNscyk7XG4gICAgdmVyYm9zZSh0aGlzLCBgQ29uZmlnOiBgLCB0aGlzLmNvbmZpZyk7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsTGF5ZXIoc2xzOiBTZXJ2ZXJsZXNzLCBsYXllcjogTGF5ZXIsIGxheWVyTmFtZTogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgY29uc3QgeyBwYXRoOiBsb2NhbFBhdGggfSA9IGxheWVyO1xuICAgIGNvbnN0IGxheWVyUmVmTmFtZSA9IGAke2xheWVyTmFtZS5yZXBsYWNlKC9eLi8sIHggPT4geC50b1VwcGVyQ2FzZSgpKX1MYW1iZGFMYXllcmA7XG4gICAgY29uc3Qgbm9kZUxheWVyUGF0aCA9IGAke2xvY2FsUGF0aH0vbm9kZWpzYDtcbiAgICBjb25zdCBwYWNrYWdlSnNvblBhdGggPSBwYXRoLmpvaW4obm9kZUxheWVyUGF0aCwgJ3BhY2thZ2UuanNvbicpO1xuICAgIGlmICghdGhpcy5jb25maWcubWFuYWdlTm9kZUZvbGRlciAmJiAhZnMuZXhpc3RzU3luYyhub2RlTGF5ZXJQYXRoKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAodGhpcy5jb25maWcubWFuYWdlTm9kZUZvbGRlcikge1xuICAgICAgYXdhaXQgZGVsKGAke25vZGVMYXllclBhdGh9LyoqYCk7XG4gICAgfVxuXG4gICAgaWYgKCFmcy5leGlzdHNTeW5jKG5vZGVMYXllclBhdGgpICYmIHRoaXMuY29uZmlnLm1hbmFnZU5vZGVGb2xkZXIpIHtcbiAgICAgIGF3YWl0IGZzLnByb21pc2VzLm1rZGlyKG5vZGVMYXllclBhdGgsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cbiAgICBpZiAoIXRoaXMuY29uZmlnLndlYnBhY2spIHtcbiAgICAgIGF3YWl0IGZzLnByb21pc2VzLmNvcHlGaWxlKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAncGFja2FnZS5qc29uJyksIHBhY2thZ2VKc29uUGF0aCk7XG4gICAgICBpZiAodGhpcy5jb25maWcucGFja2FnZXIgPT09ICducG0nKSB7XG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLmNvcHlGaWxlKFxuICAgICAgICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAncGFja2FnZS1sb2NrLmpzb24nKSxcbiAgICAgICAgICBwYXRoLmpvaW4obm9kZUxheWVyUGF0aCwgJ3BhY2thZ2UtbG9jay5qc29uJylcbiAgICAgICAgKTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcucGFja2FnZXIgPT09ICd5YXJuJykge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy5jb3B5RmlsZShwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ3lhcm4ubG9jaycpLCBwYXRoLmpvaW4obm9kZUxheWVyUGF0aCwgJ3lhcm4ubG9jaycpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMuY29uZmlnLm1hbmFnZU5vZGVGb2xkZXIpIHtcbiAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShwYWNrYWdlSnNvblBhdGgsICd7fScpO1xuICAgIH1cbiAgICB2ZXJib3NlKHRoaXMsIGBJbnN0YWxsaW5nIG5vZGVqcyBsYXllciAke2xvY2FsUGF0aH0gd2l0aCAke3RoaXMuY29uZmlnLnBhY2thZ2VyfWApO1xuICAgIGNvbnN0IHByb2R1Y3Rpb25Nb2RlRmxhZyA9IHRoaXMuY29uZmlnLnByb2R1Y3Rpb25Nb2RlID8gJ05PREVfRU5WPXByb2R1Y3Rpb24nIDogJyc7XG4gICAgbGV0IGNvbW1hbmQgPSBwcm9kdWN0aW9uTW9kZUZsYWcgKyB0aGlzLmNvbmZpZy5wYWNrYWdlciA9PT0gJ25wbScgPyAnbnBtIGluc3RhbGwnIDogJ3lhcm4gaW5zdGFsbCc7XG4gICAgaWYgKHRoaXMuY29uZmlnLndlYnBhY2spIHtcbiAgICAgIGNvbnN0IHBhY2thZ2VzID0gYXdhaXQgZ2V0RXh0ZXJuYWxNb2R1bGVzKHNscywgbGF5ZXJSZWZOYW1lKTtcbiAgICAgIGlmIChwYWNrYWdlcy5sZW5ndGggIT09IDApIHtcbiAgICAgICAgY29tbWFuZCA9XG4gICAgICAgICAgdGhpcy5jb25maWcucGFja2FnZXIgPT09ICducG0nXG4gICAgICAgICAgICA/IGAke3Byb2R1Y3Rpb25Nb2RlRmxhZ30gbnBtIGluc3RhbGwgJHtwYWNrYWdlcy5qb2luKCcgJykudHJpbSgpfWBcbiAgICAgICAgICAgIDogYCR7cHJvZHVjdGlvbk1vZGVGbGFnfSB5YXJuIGFkZCAke3BhY2thZ2VzLmpvaW4oJyAnKS50cmltKCl9YDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbW1hbmQgPSAnbHMnO1xuICAgICAgfVxuICAgIH1cbiAgICBpbmZvKHRoaXMsIGBSdW5uaW5nIGNvbW1hbmQgJHtjb21tYW5kfWApO1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWNrYWdlciA9PT0gJ3lhcm4nICYmIE9iamVjdC5rZXlzKHRoaXMuY29uZmlnLnJlc29sdXRpb25zID8/IHt9KS5sZW5ndGggPiAwKSB7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBqc29uU3RyaW5nID0gYXdhaXQgZnMucHJvbWlzZXMucmVhZEZpbGUocGFja2FnZUpzb25QYXRoLCB7XG4gICAgICAgICAgZW5jb2Rpbmc6ICd1dGYtOCcsXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zdCBqc29uID0gSlNPTi5wYXJzZShqc29uU3RyaW5nKTtcbiAgICAgICAganNvblsncmVzb2x1dGlvbnMnXSA9IHRoaXMuY29uZmlnLnJlc29sdXRpb25zO1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUocGFja2FnZUpzb25QYXRoLCBKU09OLnN0cmluZ2lmeShqc29uKSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoYFVuYWJsZSB0byBhZGQgcmVzb2x1dGlvbnNgLCBlKTtcbiAgICAgIH1cbiAgICB9XG4gICAgYXdhaXQgZXhlYyhjb21tYW5kLCB7XG4gICAgICBjd2Q6IG5vZGVMYXllclBhdGgsXG4gICAgICBlbmNvZGluZzogbnVsbCxcbiAgICB9KTtcbiAgICBpZiAodGhpcy5jb25maWcucGFja2FnZXIgPT09ICd5YXJuJykge1xuICAgICAgYXdhaXQgZXhlYyhgeWFybiBhdXRvY2xlYW4gLS1pbml0YCwgeyBjd2Q6IG5vZGVMYXllclBhdGgsIGVuY29kaW5nOiBudWxsIH0pO1xuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGxMYXllcnMoc2xzOiBTZXJ2ZXJsZXNzKTogUHJvbWlzZTx7IGluc3RhbGxlZExheWVyczogTGF5ZXJbXSB9PiB7XG4gICAgY29uc3QgeyBpbnN0YWxsTGF5ZXJzLCBidWxrSW5zdGFsbCA9IGZhbHNlIH0gPSB0aGlzLmNvbmZpZztcblxuICAgIGlmICghaW5zdGFsbExheWVycykge1xuICAgICAgdmVyYm9zZSh0aGlzLCBgU2tpcHBpbmcgaW5zdGFsbGF0aW9uIG9mIGxheWVycyBhcyBwZXIgY29uZmlnYCk7XG4gICAgICByZXR1cm4geyBpbnN0YWxsZWRMYXllcnM6IFtdIH07XG4gICAgfVxuXG4gICAgY29uc3QgbGF5ZXJzID0gZ2V0TGF5ZXJzKHNscyk7XG4gICAgbGV0IGluc3RhbGxlZExheWVyczogTGF5ZXJbXSA9IFtdO1xuICAgIGlmIChidWxrSW5zdGFsbCkge1xuICAgICAgY29uc3QgYXR0ZW1wdGVkSW5zdGFsbExheWVycyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBPYmplY3QuZW50cmllcyhsYXllcnMpLm1hcChhc3luYyAoW2xheWVyTmFtZSwgbGF5ZXJdKSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gJ29iamVjdCcpIHJldHVybjtcbiAgICAgICAgICBjb25zdCBpbnN0YWxsZWQgPSBhd2FpdCB0aGlzLmluc3RhbGxMYXllcihzbHMsIGxheWVyLCBsYXllck5hbWUpO1xuICAgICAgICAgIGlmICghaW5zdGFsbGVkKSByZXR1cm47XG4gICAgICAgICAgYXdhaXQgdGhpcy5kZWxldGUoc2xzLCBsYXllci5wYXRoKTtcbiAgICAgICAgICByZXR1cm4gbGF5ZXI7XG4gICAgICAgIH0pXG4gICAgICApO1xuICAgICAgaW5zdGFsbGVkTGF5ZXJzID0gYXR0ZW1wdGVkSW5zdGFsbExheWVycy5maWx0ZXIobm90RW1wdHkpO1xuICAgIH0gZWxzZSB7XG4gICAgICBmb3IgKGNvbnN0IFtsYXllck5hbWUsIGxheWVyXSBvZiBPYmplY3QuZW50cmllcyhsYXllcnMpKSB7XG4gICAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09ICdvYmplY3QnKSBjb250aW51ZTtcbiAgICAgICAgY29uc3QgaW5zdGFsbGVkID0gYXdhaXQgdGhpcy5pbnN0YWxsTGF5ZXIoc2xzLCBsYXllciwgbGF5ZXJOYW1lKTtcbiAgICAgICAgaWYgKCFpbnN0YWxsZWQpIGNvbnRpbnVlO1xuICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZShzbHMsIGxheWVyLnBhdGgpO1xuICAgICAgICBpbnN0YWxsZWRMYXllcnMucHVzaChsYXllcik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaW5mbyh0aGlzLCBgSW5zdGFsbGVkICR7aW5zdGFsbGVkTGF5ZXJzLmxlbmd0aH0gbGF5ZXIke2luc3RhbGxlZExheWVycy5sZW5ndGggPiAxID8gJ3MnIDogJyd9YCk7XG4gICAgcmV0dXJuIHsgaW5zdGFsbGVkTGF5ZXJzIH07XG4gIH1cblxuICBhc3luYyBkZWxldGUoc2xzOiBTZXJ2ZXJsZXNzLCBmb2xkZXI6IHN0cmluZyk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHsgY2xlYW4sIG1pbmlmeSB9ID0gdGhpcy5jb25maWcud2VicGFjaztcbiAgICBpZiAoIWNsZWFuKSByZXR1cm47XG4gICAgY29uc3Qgbm9kZUxheWVyUGF0aCA9IGAke2ZvbGRlcn0vbm9kZWpzYDtcbiAgICBjb25zdCBleGNsdWRlOiBzdHJpbmdbXSA9XG4gICAgICBzbHMuc2VydmljZT8ucGFja2FnZT8uZXhjbHVkZSA/P1xuICAgICAgc2xzLnNlcnZpY2U/LnBhY2thZ2U/LnBhdHRlcm5zPy5maWx0ZXIocCA9PiBwLnN0YXJ0c1dpdGgoJyEnKSk/Lm1hcChwID0+IHAucmVwbGFjZSgvXiEvLCAnJykpID8/XG4gICAgICBbXTtcbiAgICBpbmZvKHRoaXMsIGBDbGVhbmluZyAke2V4Y2x1ZGUubWFwKHJ1bGUgPT4gcGF0aC5qb2luKG5vZGVMYXllclBhdGgsIHJ1bGUpKS5qb2luKCcsICcpfWApO1xuICAgIGNvbnN0IGZpbGVzRGVsZXRlZCA9IGF3YWl0IGRlbChleGNsdWRlLm1hcChydWxlID0+IHBhdGguam9pbihub2RlTGF5ZXJQYXRoLCBydWxlKSkpO1xuICAgIGlmIChmcy5leGlzdHNTeW5jKG5vZGVMYXllclBhdGgpICYmIG1pbmlmeSkge1xuICAgICAgYXdhaXQgbWluaWZ5QWxsKG5vZGVMYXllclBhdGgsIHtcbiAgICAgICAgY29tcHJlc3NfanNvbjogdHJ1ZSxcbiAgICAgICAgbW9kdWxlOiB0cnVlLFxuICAgICAgICBtYW5nbGU6IHRydWUsXG4gICAgICAgIHBhY2thZ2Vqc29uOiB0cnVlLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGluZm8odGhpcywgYENsZWFuZWQgJHtmaWxlc0RlbGV0ZWQubGVuZ3RofSBmaWxlcyBhdCAke25vZGVMYXllclBhdGh9YCk7XG4gIH1cblxuICBhc3luYyB0cmFuc2Zvcm1MYXllclJlc291cmNlcyhzbHM6IFNlcnZlcmxlc3MpOiBQcm9taXNlPFRyYW5zZm9ybWVkTGF5ZXJSZXNvdXJjZXM+IHtcbiAgICBpZiAoIXRoaXMuY29uZmlnKSB7XG4gICAgICBsb2codGhpcywgJ1VuYWJsZSB0byBhZGQgbGF5ZXJzIGN1cnJlbnRseSBhcyBjb25maWcgdW5hdmFpbGFibGUnKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGV4cG9ydGVkTGF5ZXJzOiBbXSxcbiAgICAgICAgdXBncmFkZWRMYXllclJlZmVyZW5jZXM6IFtdLFxuICAgICAgfTtcbiAgICB9XG4gICAgY29uc3QgeyBleHBvcnRMYXllcnMsIGV4cG9ydFByZWZpeCwgdXBncmFkZUxheWVyUmVmZXJlbmNlcyB9ID0gdGhpcy5jb25maWc7XG4gICAgY29uc3QgbGF5ZXJzID0gZ2V0TGF5ZXJzKHNscyk7XG4gICAgY29uc3QgeyBjb21waWxlZENsb3VkRm9ybWF0aW9uVGVtcGxhdGU6IGNmIH0gPSBzbHMuc2VydmljZS5wcm92aWRlcjtcblxuICAgIGNvbnN0IGxheWVyc0tleXMgPSBPYmplY3Qua2V5cyhsYXllcnMpO1xuXG4gICAgY29uc3QgdHJhbnNmb3JtZWRSZXNvdXJjZXMgPSBsYXllcnNLZXlzLnJlZHVjZShcbiAgICAgIChyZXN1bHQ6IE1heWJlPFRyYW5zZm9ybWVkTGF5ZXJSZXNvdXJjZXM+LCBpZDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGlmICghcmVzdWx0KSB7XG4gICAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgZXhwb3J0ZWRMYXllcnM6IFtdLFxuICAgICAgICAgICAgdXBncmFkZWRMYXllclJlZmVyZW5jZXM6IFtdLFxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgbmFtZSA9IHBhc2NhbGNhc2UoaWQpO1xuICAgICAgICBjb25zdCBleHBvcnROYW1lID0gYCR7bmFtZX1MYW1iZGFMYXllclF1YWxpZmllZEFybmA7XG4gICAgICAgIGNvbnN0IG91dHB1dDogTWF5YmU8T3V0cHV0PiA9IChjZi5PdXRwdXRzID8/IHt9KVtleHBvcnROYW1lXTtcblxuICAgICAgICBpZiAoIW91dHB1dCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZXhwb3J0TGF5ZXJzKSB7XG4gICAgICAgICAgb3V0cHV0LkV4cG9ydCA9IHtcbiAgICAgICAgICAgIE5hbWU6IHtcbiAgICAgICAgICAgICAgJ0ZuOjpTdWInOiBleHBvcnRQcmVmaXggKyBleHBvcnROYW1lLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICB9O1xuICAgICAgICAgIHJlc3VsdC5leHBvcnRlZExheWVycy5wdXNoKG91dHB1dCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXBncmFkZUxheWVyUmVmZXJlbmNlcykge1xuICAgICAgICAgIGNvbnN0IHJlc291cmNlUmVmID0gYCR7bmFtZX1MYW1iZGFMYXllcmA7XG4gICAgICAgICAgY29uc3QgdmVyc2lvbmVkUmVzb3VyY2VSZWYgPSBvdXRwdXQuVmFsdWUuUmVmO1xuXG4gICAgICAgICAgaWYgKHJlc291cmNlUmVmICE9PSB2ZXJzaW9uZWRSZXNvdXJjZVJlZikge1xuICAgICAgICAgICAgaW5mbyh0aGlzLCBgUmVwbGFjaW5nIHJlZmVyZW5jZXMgdG8gJHtyZXNvdXJjZVJlZn0gd2l0aCAke3ZlcnNpb25lZFJlc291cmNlUmVmfWApO1xuICAgICAgICAgICAgY29uc3QgcmVzb3VyY2VzID0gY2YuUmVzb3VyY2VzIGFzIHsgW2tleTogc3RyaW5nXTogQ2xvdWRGb3JtYXRpb25SZXNvdXJjZSB9O1xuICAgICAgICAgICAgZm9yIChjb25zdCByZXNvdXJjZSBvZiBPYmplY3QuZW50cmllcyhyZXNvdXJjZXMpKSB7XG4gICAgICAgICAgICAgIGNvbnN0IFtpZCwgeyBUeXBlOiB0eXBlLCBQcm9wZXJ0aWVzID0ge30gfV0gPSByZXNvdXJjZTtcbiAgICAgICAgICAgICAgY29uc3Qge1xuICAgICAgICAgICAgICAgIExheWVyczogbGF5ZXJzID0gW10sXG4gICAgICAgICAgICAgIH06IFBhcnRpYWw8Q2xvdWRGb3JtYXRpb25SZXNvdXJjZVsnUHJvcGVydGllcyddICYgeyBMYXllcnM6IEZ1bmN0aW9uTGF5ZXJSZWZlcmVuY2VbXSB9PiA9IFByb3BlcnRpZXM7XG4gICAgICAgICAgICAgIGlmICh0eXBlID09PSAnQVdTOjpMYW1iZGE6OkZ1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgbGF5ZXIgb2YgbGF5ZXJzKSB7XG4gICAgICAgICAgICAgICAgICBpZiAobGF5ZXIuUmVmID09PSByZXNvdXJjZVJlZikge1xuICAgICAgICAgICAgICAgICAgICB2ZXJib3NlKHRoaXMsIGAke2lkfTogVXBkYXRpbmcgcmVmZXJlbmNlIHRvIGxheWVyIHZlcnNpb24gJHt2ZXJzaW9uZWRSZXNvdXJjZVJlZn1gKTtcbiAgICAgICAgICAgICAgICAgICAgbGF5ZXIuUmVmID0gdmVyc2lvbmVkUmVzb3VyY2VSZWY7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC51cGdyYWRlZExheWVyUmVmZXJlbmNlcy5wdXNoKGxheWVyKTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICB2ZXJib3NlKHRoaXMsICdDRiBhZnRlciB0cmFuc2Zvcm1hdGlvbjpcXG4nLCBKU09OLnN0cmluZ2lmeShjZiwgbnVsbCwgMikpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBleHBvcnRlZExheWVyczogW10sXG4gICAgICAgIHVwZ3JhZGVkTGF5ZXJSZWZlcmVuY2VzOiBbXSxcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiAoXG4gICAgICB0cmFuc2Zvcm1lZFJlc291cmNlcyA/PyB7XG4gICAgICAgIGV4cG9ydGVkTGF5ZXJzOiBbXSxcbiAgICAgICAgdXBncmFkZWRMYXllclJlZmVyZW5jZXM6IFtdLFxuICAgICAgfVxuICAgICk7XG4gIH1cbn1cbiJdfQ== | ||
| //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6WyJleGVjIiwidXRpbCIsInByb21pc2lmeSIsImNvbW1hbmQiLCJvcHRpb25zIiwiY2FsbGJhY2siLCJMT0dfTEVWRUwiLCJwcm9jZXNzIiwiZW52IiwiREVGQVVMVF9DT05GSUciLCJpbnN0YWxsTGF5ZXJzIiwiZXhwb3J0TGF5ZXJzIiwiYnVsa0luc3RhbGwiLCJ1cGdyYWRlTGF5ZXJSZWZlcmVuY2VzIiwiZXhwb3J0UHJlZml4IiwibWFuYWdlTm9kZUZvbGRlciIsInBhY2thZ2VyIiwicmVzb2x1dGlvbnMiLCJ3ZWJwYWNrIiwiY2xlYW4iLCJtaW5pZnkiLCJiYWNrdXBGaWxlVHlwZSIsImNvbmZpZ1BhdGgiLCJkaXNjb3Zlck1vZHVsZXMiLCJwcm9kdWN0aW9uTW9kZSIsIkxFVkVMUyIsIm5vbmUiLCJpbmZvIiwidmVyYm9zZSIsImRlYnVnIiwibG9nIiwicyIsImNvbnNvbGUiLCJsZXZlbCIsImdldExheWVycyIsInNlcnZlcmxlc3MiLCJzZXJ2aWNlIiwibGF5ZXJzIiwiZ2V0Q29uZmlnIiwiY3VzdG9tIiwibGF5ZXJDb25maWciLCJMYXllck1hbmFnZXJQbHVnaW4iLCJjb25zdHJ1Y3RvciIsInNscyIsInYiLCJpbml0IiwiaG9va3MiLCJ0cmFuc2Zvcm1MYXllclJlc291cmNlcyIsImNvbmZpZyIsImluc3RhbGxMYXllciIsImxheWVyIiwibGF5ZXJOYW1lIiwicGF0aCIsImxvY2FsUGF0aCIsImxheWVyUmVmTmFtZSIsInJlcGxhY2UiLCJ4IiwidG9VcHBlckNhc2UiLCJub2RlTGF5ZXJQYXRoIiwicGFja2FnZUpzb25QYXRoIiwiam9pbiIsImZzIiwiZXhpc3RzU3luYyIsInByb21pc2VzIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJjb3B5RmlsZSIsImN3ZCIsIndyaXRlRmlsZSIsInByb2R1Y3Rpb25Nb2RlRmxhZyIsInBhY2thZ2VzIiwibGVuZ3RoIiwidHJpbSIsIk9iamVjdCIsImtleXMiLCJqc29uU3RyaW5nIiwicmVhZEZpbGUiLCJlbmNvZGluZyIsImpzb24iLCJKU09OIiwicGFyc2UiLCJzdHJpbmdpZnkiLCJlIiwiZXJyb3IiLCJpbnN0YWxsZWRMYXllcnMiLCJhdHRlbXB0ZWRJbnN0YWxsTGF5ZXJzIiwiUHJvbWlzZSIsImFsbCIsImVudHJpZXMiLCJtYXAiLCJpbnN0YWxsZWQiLCJkZWxldGUiLCJmaWx0ZXIiLCJub3RFbXB0eSIsInB1c2giLCJmb2xkZXIiLCJleGNsdWRlIiwicGFja2FnZSIsInBhdHRlcm5zIiwicCIsInN0YXJ0c1dpdGgiLCJydWxlIiwiZmlsZXNEZWxldGVkIiwiY29tcHJlc3NfanNvbiIsIm1vZHVsZSIsIm1hbmdsZSIsInBhY2thZ2Vqc29uIiwiZXhwb3J0ZWRMYXllcnMiLCJ1cGdyYWRlZExheWVyUmVmZXJlbmNlcyIsImNvbXBpbGVkQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZSIsImNmIiwicHJvdmlkZXIiLCJsYXllcnNLZXlzIiwidHJhbnNmb3JtZWRSZXNvdXJjZXMiLCJyZWR1Y2UiLCJyZXN1bHQiLCJpZCIsIm5hbWUiLCJleHBvcnROYW1lIiwib3V0cHV0IiwiT3V0cHV0cyIsIkV4cG9ydCIsIk5hbWUiLCJyZXNvdXJjZVJlZiIsInZlcnNpb25lZFJlc291cmNlUmVmIiwiVmFsdWUiLCJSZWYiLCJyZXNvdXJjZXMiLCJSZXNvdXJjZXMiLCJyZXNvdXJjZSIsIlR5cGUiLCJ0eXBlIiwiUHJvcGVydGllcyIsIkxheWVycyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBOzs7Ozs7QUFFQSxNQUFNQSxJQUFJLEdBQUdDLGNBQUtDLFNBQUwsQ0FDWCxDQUNFQyxPQURGLEVBRUVDLE9BRkYsRUFLRUMsUUFMRixLQU1LLHlCQUFlRixPQUFmLEVBQXdCQyxPQUF4QixFQUFpQ0MsUUFBakMsQ0FQTSxDQUFiOztBQVVBLE1BQU07QUFBRUMsRUFBQUEsU0FBUyxHQUFHO0FBQWQsSUFB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QUFNO0FBQ0pJLGNBQUFBLE1BQU0sRUFBRWhHLE1BQU0sR0FBRztBQURiLGdCQUVvRitGLFVBRjFGOztBQUdBLGdCQUFJRCxJQUFJLEtBQUssdUJBQWIsRUFBc0M7QUFDcEMsbUJBQUssTUFBTWpGLEtBQVgsSUFBb0JiLE1BQXBCLEVBQTRCO0FBQzFCLG9CQUFJYSxLQUFLLENBQUM0RSxHQUFOLEtBQWNILFdBQWxCLEVBQStCO0FBQzdCL0Ysa0JBQUFBLE9BQU8sQ0FBQyxJQUFELEVBQVEsR0FBRXdGLEVBQUcseUNBQXdDUSxvQkFBcUIsRUFBMUUsQ0FBUDtBQUNBMUUsa0JBQUFBLEtBQUssQ0FBQzRFLEdBQU4sR0FBWUYsb0JBQVo7QUFDQVQsa0JBQUFBLE1BQU0sQ0FBQ1AsdUJBQVAsQ0FBK0JkLElBQS9CLENBQW9DNUMsS0FBcEM7QUFDRDtBQUNGO0FBQ0Y7QUFDRjtBQUNGO0FBQ0Y7O0FBRUR0QixNQUFBQSxPQUFPLENBQUMsSUFBRCxFQUFPLDRCQUFQLEVBQXFDbUQsSUFBSSxDQUFDRSxTQUFMLENBQWU2QixFQUFmLEVBQW1CLElBQW5CLEVBQXlCLENBQXpCLENBQXJDLENBQVA7QUFFQSxhQUFPSyxNQUFQO0FBQ0QsS0FyRDBCLEVBc0QzQjtBQUNFUixNQUFBQSxjQUFjLEVBQUUsRUFEbEI7QUFFRUMsTUFBQUEsdUJBQXVCLEVBQUU7QUFGM0IsS0F0RDJCLENBQTdCO0FBMkRBLFdBQ0VLLG9CQUFvQixJQUFJO0FBQ3RCTixNQUFBQSxjQUFjLEVBQUUsRUFETTtBQUV0QkMsTUFBQUEsdUJBQXVCLEVBQUU7QUFGSCxLQUQxQjtBQU1EOztBQWxQcUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBleGVjIGFzIGV4ZWNOb25Qcm9taXNlLCBFeGVjT3B0aW9ucywgRXhlY0V4Y2VwdGlvbiB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHV0aWwgZnJvbSAndXRpbCc7XG5pbXBvcnQgcGFzY2FsY2FzZSBmcm9tICdwYXNjYWxjYXNlJztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBkZWwgZnJvbSAnZGVsJztcbmltcG9ydCB7IGdldEV4dGVybmFsTW9kdWxlcyB9IGZyb20gJy4vZXh0ZXJuYWwnO1xuaW1wb3J0IHsgTWF5YmUsIExheWVyLCBGdW5jdGlvbkxheWVyUmVmZXJlbmNlLCBUcmFuc2Zvcm1lZExheWVyUmVzb3VyY2VzLCBub3RFbXB0eSB9IGZyb20gJy4vdHlwZXMnO1xuaW1wb3J0IFNlcnZlcmxlc3MgZnJvbSAnc2VydmVybGVzcyc7XG5pbXBvcnQgeyBDbG91ZEZvcm1hdGlvblJlc291cmNlLCBPdXRwdXQgfSBmcm9tICdzZXJ2ZXJsZXNzL2F3cyc7XG5pbXBvcnQgbWluaWZ5QWxsIGZyb20gJ21pbmlmeS1hbGwtanMnO1xuXG5jb25zdCBleGVjID0gdXRpbC5wcm9taXNpZnkoXG4gIChcbiAgICBjb21tYW5kOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgZW5jb2Rpbmc6ICdidWZmZXInIHwgbnVsbDtcbiAgICB9ICYgRXhlY09wdGlvbnMsXG4gICAgY2FsbGJhY2s6IChlcnJvcjogRXhlY0V4Y2VwdGlvbiB8IG51bGwsIHN0ZG91dDogQnVmZmVyLCBzdGRlcnI6IEJ1ZmZlcikgPT4gdm9pZFxuICApID0+IGV4ZWNOb25Qcm9taXNlKGNvbW1hbmQsIG9wdGlvbnMsIGNhbGxiYWNrKVxuKTtcblxuY29uc3QgeyBMT0dfTEVWRUwgPSAnaW5mbycgfSA9IHByb2Nlc3MuZW52O1xuXG5jb25zdCBERUZBVUxUX0NPTkZJRyA9IHtcbiAgaW5zdGFsbExheWVyczogdHJ1ZSxcbiAgZXhwb3J0TGF5ZXJzOiB0cnVlLFxuICBidWxrSW5zdGFsbDogZmFsc2UsXG4gIHVwZ3JhZGVMYXllclJlZmVyZW5jZXM6IHRydWUsXG4gIGV4cG9ydFByZWZpeDogJyR7QVdTOjpTdGFja05hbWV9LScsXG4gIG1hbmFnZU5vZGVGb2xkZXI6IGZhbHNlLFxuICBwYWNrYWdlcjogJ25wbScsXG4gIHJlc29sdXRpb25zOiB7fSxcbiAgd2VicGFjazoge1xuICAgIGNsZWFuOiB0cnVlLFxuICAgIG1pbmlmeTogZmFsc2UsXG4gICAgYmFja3VwRmlsZVR5cGU6ICdqcycsXG4gICAgY29uZmlnUGF0aDogJy4vd2VicGFjay5jb25maWcuanMnLFxuICAgIGRpc2NvdmVyTW9kdWxlczogdHJ1ZSxcbiAgfSxcbiAgcHJvZHVjdGlvbk1vZGU6IHRydWUsXG59O1xuXG5jb25zdCBMRVZFTFMgPSB7XG4gIG5vbmU6IDAsXG4gIGluZm86IDEsXG4gIHZlcmJvc2U6IDIsXG4gIGRlYnVnOiAzLFxufTtcblxuZnVuY3Rpb24gbG9nKC4uLnM6IHVua25vd25bXSkge1xuICBjb25zb2xlLmxvZygnW3dlYnBhY2stbGF5ZXJzXScsIC4uLnMpO1xufVxuXG5mdW5jdGlvbiB2ZXJib3NlKHsgbGV2ZWwgfTogeyBsZXZlbDoga2V5b2YgdHlwZW9mIExFVkVMUyB9LCAuLi5zOiB1bmtub3duW10pIHtcbiAgTEVWRUxTW2xldmVsXSA+PSBMRVZFTFMudmVyYm9zZSAmJiBsb2coLi4ucyk7XG59XG5cbmZ1bmN0aW9uIGluZm8oeyBsZXZlbCB9OiB7IGxldmVsOiBrZXlvZiB0eXBlb2YgTEVWRUxTIH0sIC4uLnM6IHVua25vd25bXSkge1xuICBMRVZFTFNbbGV2ZWxdID49IExFVkVMUy5pbmZvICYmIGxvZyguLi5zKTtcbn1cblxuZnVuY3Rpb24gZGVidWcoeyBsZXZlbCB9OiB7IGxldmVsOiBrZXlvZiB0eXBlb2YgTEVWRUxTIH0sIC4uLnM6IHVua25vd25bXSkge1xuICBMRVZFTFNbbGV2ZWxdID49IExFVkVMUy5kZWJ1ZyAmJiBsb2coLi4ucyk7XG59XG5cbmZ1bmN0aW9uIGdldExheWVycyhzZXJ2ZXJsZXNzOiBTZXJ2ZXJsZXNzKTogeyBba2V5OiBzdHJpbmddOiBMYXllciB9IHtcbiAgcmV0dXJuIHNlcnZlcmxlc3Muc2VydmljZS5sYXllcnMgfHwge307XG59XG5cbmZ1bmN0aW9uIGdldENvbmZpZyhzZXJ2ZXJsZXNzOiBTZXJ2ZXJsZXNzKSB7XG4gIGNvbnN0IGN1c3RvbSA9IHNlcnZlcmxlc3Muc2VydmljZS5jdXN0b20gfHwge307XG5cbiAgcmV0dXJuIHtcbiAgICAuLi5ERUZBVUxUX0NPTkZJRyxcbiAgICAuLi5jdXN0b20ubGF5ZXJDb25maWcsXG4gICAgd2VicGFjazoge1xuICAgICAgLi4uREVGQVVMVF9DT05GSUcud2VicGFjayxcbiAgICAgIC4uLihjdXN0b20ubGF5ZXJDb25maWcud2VicGFjayA/PyB7fSksXG4gICAgfSxcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGF5ZXJNYW5hZ2VyUGx1Z2luIHtcbiAgbGV2ZWw6IGtleW9mIHR5cGVvZiBMRVZFTFM7XG4gIGhvb2tzOiB7XG4gICAgW2tleTogc3RyaW5nXTogKCkgPT4gUHJvbWlzZTx1bmtub3duPjtcbiAgfTtcbiAgY29uZmlnOiB7XG4gICAgaW5zdGFsbExheWVycz86IGJvb2xlYW47XG4gICAgYnVsa0luc3RhbGw/OiBib29sZWFuO1xuICAgIGV4cG9ydExheWVycz86IGJvb2xlYW47XG4gICAgdXBncmFkZUxheWVyUmVmZXJlbmNlcz86IGJvb2xlYW47XG4gICAgZXhwb3J0UHJlZml4Pzogc3RyaW5nO1xuICAgIG1hbmFnZU5vZGVGb2xkZXI/OiBib29sZWFuO1xuICAgIHBhY2thZ2VyPzogJ25wbScgfCAneWFybic7XG4gICAgcmVzb2x1dGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAgIHdlYnBhY2s6IFBhcnRpYWw8e1xuICAgICAgY2xlYW46IGJvb2xlYW47XG4gICAgICBtaW5pZnk6IGJvb2xlYW47XG4gICAgICBiYWNrdXBGaWxlVHlwZTogJ2pzJyB8ICd0cycgfCAnY2pzJztcbiAgICAgIGNvbmZpZ1BhdGg6IHN0cmluZztcbiAgICAgIGRpc2NvdmVyTW9kdWxlczogYm9vbGVhbjtcbiAgICB9PjtcbiAgICBwcm9kdWN0aW9uTW9kZT86IGJvb2xlYW47XG4gIH0gPSB7IHdlYnBhY2s6IHt9IH07XG4gIGNvbnN0cnVjdG9yKHNsczogU2VydmVybGVzcywgb3B0aW9uczogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSkge1xuICAgIHRoaXMubGV2ZWwgPSAob3B0aW9ucy52IHx8IG9wdGlvbnMudmVyYm9zZSA/ICd2ZXJib3NlJyA6IExPR19MRVZFTCkgYXMga2V5b2YgdHlwZW9mIExFVkVMUztcblxuICAgIGRlYnVnKHRoaXMsIGBJbnZva2luZyB3ZWJwYWNrLWxheWVycyBwbHVnaW5gKTtcbiAgICB0aGlzLmluaXQoc2xzKTtcblxuICAgIHRoaXMuaG9va3MgPSB7XG4gICAgICAncGFja2FnZTppbml0aWFsaXplJzogKCkgPT4gdGhpcy5pbnN0YWxsTGF5ZXJzKHNscyksXG4gICAgICAnYmVmb3JlOmRlcGxveTpkZXBsb3knOiAoKSA9PiB0aGlzLnRyYW5zZm9ybUxheWVyUmVzb3VyY2VzKHNscyksXG4gICAgfTtcbiAgfVxuXG4gIGluaXQoc2xzOiBTZXJ2ZXJsZXNzKTogdm9pZCB7XG4gICAgdGhpcy5jb25maWcgPSBnZXRDb25maWcoc2xzKTtcbiAgICB2ZXJib3NlKHRoaXMsIGBDb25maWc6IGAsIHRoaXMuY29uZmlnKTtcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGxMYXllcihzbHM6IFNlcnZlcmxlc3MsIGxheWVyOiBMYXllciwgbGF5ZXJOYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCB7IHBhdGg6IGxvY2FsUGF0aCB9ID0gbGF5ZXI7XG4gICAgY29uc3QgbGF5ZXJSZWZOYW1lID0gYCR7bGF5ZXJOYW1lLnJlcGxhY2UoL14uLywgeCA9PiB4LnRvVXBwZXJDYXNlKCkpfUxhbWJkYUxheWVyYDtcbiAgICBjb25zdCBub2RlTGF5ZXJQYXRoID0gYCR7bG9jYWxQYXRofS9ub2RlanNgO1xuICAgIGNvbnN0IHBhY2thZ2VKc29uUGF0aCA9IHBhdGguam9pbihub2RlTGF5ZXJQYXRoLCAncGFja2FnZS5qc29uJyk7XG4gICAgaWYgKCF0aGlzLmNvbmZpZy5tYW5hZ2VOb2RlRm9sZGVyICYmICFmcy5leGlzdHNTeW5jKG5vZGVMYXllclBhdGgpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIGlmICh0aGlzLmNvbmZpZy5tYW5hZ2VOb2RlRm9sZGVyKSB7XG4gICAgICBhd2FpdCBkZWwoYCR7bm9kZUxheWVyUGF0aH0vKipgKTtcbiAgICB9XG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMobm9kZUxheWVyUGF0aCkgJiYgdGhpcy5jb25maWcubWFuYWdlTm9kZUZvbGRlcikge1xuICAgICAgYXdhaXQgZnMucHJvbWlzZXMubWtkaXIobm9kZUxheWVyUGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfVxuICAgIGlmICghdGhpcy5jb25maWcud2VicGFjaykge1xuICAgICAgYXdhaXQgZnMucHJvbWlzZXMuY29weUZpbGUocGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdwYWNrYWdlLmpzb24nKSwgcGFja2FnZUpzb25QYXRoKTtcbiAgICAgIGlmICh0aGlzLmNvbmZpZy5wYWNrYWdlciA9PT0gJ25wbScpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMuY29weUZpbGUoXG4gICAgICAgICAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICdwYWNrYWdlLWxvY2suanNvbicpLFxuICAgICAgICAgIHBhdGguam9pbihub2RlTGF5ZXJQYXRoLCAncGFja2FnZS1sb2NrLmpzb24nKVxuICAgICAgICApO1xuICAgICAgfSBlbHNlIGlmICh0aGlzLmNvbmZpZy5wYWNrYWdlciA9PT0gJ3lhcm4nKSB7XG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLmNvcHlGaWxlKHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAneWFybi5sb2NrJyksIHBhdGguam9pbihub2RlTGF5ZXJQYXRoLCAneWFybi5sb2NrJykpO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAodGhpcy5jb25maWcubWFuYWdlTm9kZUZvbGRlcikge1xuICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKHBhY2thZ2VKc29uUGF0aCwgJ3t9Jyk7XG4gICAgfVxuICAgIHZlcmJvc2UodGhpcywgYEluc3RhbGxpbmcgbm9kZWpzIGxheWVyICR7bG9jYWxQYXRofSB3aXRoICR7dGhpcy5jb25maWcucGFja2FnZXJ9YCk7XG4gICAgY29uc3QgcHJvZHVjdGlvbk1vZGVGbGFnID0gdGhpcy5jb25maWcucHJvZHVjdGlvbk1vZGUgPyAnTk9ERV9FTlY9cHJvZHVjdGlvbicgOiAnJztcbiAgICBsZXQgY29tbWFuZCA9IHByb2R1Y3Rpb25Nb2RlRmxhZyArIHRoaXMuY29uZmlnLnBhY2thZ2VyID09PSAnbnBtJyA/ICducG0gaW5zdGFsbCcgOiAneWFybiBpbnN0YWxsJztcbiAgICBpZiAodGhpcy5jb25maWcud2VicGFjaykge1xuICAgICAgY29uc3QgcGFja2FnZXMgPSBhd2FpdCBnZXRFeHRlcm5hbE1vZHVsZXMoc2xzLCBsYXllclJlZk5hbWUpO1xuICAgICAgaWYgKHBhY2thZ2VzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICBjb21tYW5kID1cbiAgICAgICAgICB0aGlzLmNvbmZpZy5wYWNrYWdlciA9PT0gJ25wbSdcbiAgICAgICAgICAgID8gYCR7cHJvZHVjdGlvbk1vZGVGbGFnfSBucG0gaW5zdGFsbCAke3BhY2thZ2VzLmpvaW4oJyAnKS50cmltKCl9YFxuICAgICAgICAgICAgOiBgJHtwcm9kdWN0aW9uTW9kZUZsYWd9IHlhcm4gYWRkICR7cGFja2FnZXMuam9pbignICcpLnRyaW0oKX1gO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tbWFuZCA9ICdscyc7XG4gICAgICB9XG4gICAgfVxuICAgIGluZm8odGhpcywgYFJ1bm5pbmcgY29tbWFuZCAke2NvbW1hbmR9YCk7XG4gICAgaWYgKHRoaXMuY29uZmlnLnBhY2thZ2VyID09PSAneWFybicgJiYgT2JqZWN0LmtleXModGhpcy5jb25maWcucmVzb2x1dGlvbnMgPz8ge30pLmxlbmd0aCA+IDApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGpzb25TdHJpbmcgPSBhd2FpdCBmcy5wcm9taXNlcy5yZWFkRmlsZShwYWNrYWdlSnNvblBhdGgsIHtcbiAgICAgICAgICBlbmNvZGluZzogJ3V0Zi04JyxcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IGpzb24gPSBKU09OLnBhcnNlKGpzb25TdHJpbmcpO1xuICAgICAgICBqc29uWydyZXNvbHV0aW9ucyddID0gdGhpcy5jb25maWcucmVzb2x1dGlvbnM7XG4gICAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShwYWNrYWdlSnNvblBhdGgsIEpTT04uc3RyaW5naWZ5KGpzb24pKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihgVW5hYmxlIHRvIGFkZCByZXNvbHV0aW9uc2AsIGUpO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCBleGVjKGNvbW1hbmQsIHtcbiAgICAgIGN3ZDogbm9kZUxheWVyUGF0aCxcbiAgICAgIGVuY29kaW5nOiBudWxsLFxuICAgIH0pO1xuICAgIGlmICh0aGlzLmNvbmZpZy5wYWNrYWdlciA9PT0gJ3lhcm4nKSB7XG4gICAgICBhd2FpdCBleGVjKGB5YXJuIGF1dG9jbGVhbiAtLWluaXRgLCB7IGN3ZDogbm9kZUxheWVyUGF0aCwgZW5jb2Rpbmc6IG51bGwgfSk7XG4gICAgfVxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgYXN5bmMgaW5zdGFsbExheWVycyhzbHM6IFNlcnZlcmxlc3MpOiBQcm9taXNlPHsgaW5zdGFsbGVkTGF5ZXJzOiBMYXllcltdIH0+IHtcbiAgICBjb25zdCB7IGluc3RhbGxMYXllcnMsIGJ1bGtJbnN0YWxsID0gZmFsc2UgfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKCFpbnN0YWxsTGF5ZXJzKSB7XG4gICAgICB2ZXJib3NlKHRoaXMsIGBTa2lwcGluZyBpbnN0YWxsYXRpb24gb2YgbGF5ZXJzIGFzIHBlciBjb25maWdgKTtcbiAgICAgIHJldHVybiB7IGluc3RhbGxlZExheWVyczogW10gfTtcbiAgICB9XG5cbiAgICBjb25zdCBsYXllcnMgPSBnZXRMYXllcnMoc2xzKTtcbiAgICBsZXQgaW5zdGFsbGVkTGF5ZXJzOiBMYXllcltdID0gW107XG4gICAgaWYgKGJ1bGtJbnN0YWxsKSB7XG4gICAgICBjb25zdCBhdHRlbXB0ZWRJbnN0YWxsTGF5ZXJzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGxheWVycykubWFwKGFzeW5jIChbbGF5ZXJOYW1lLCBsYXllcl0pID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIGxheWVyICE9PSAnb2JqZWN0JykgcmV0dXJuO1xuICAgICAgICAgIGNvbnN0IGluc3RhbGxlZCA9IGF3YWl0IHRoaXMuaW5zdGFsbExheWVyKHNscywgbGF5ZXIsIGxheWVyTmFtZSk7XG4gICAgICAgICAgaWYgKCFpbnN0YWxsZWQpIHJldHVybjtcbiAgICAgICAgICBhd2FpdCB0aGlzLmRlbGV0ZShzbHMsIGxheWVyLnBhdGgpO1xuICAgICAgICAgIHJldHVybiBsYXllcjtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgICBpbnN0YWxsZWRMYXllcnMgPSBhdHRlbXB0ZWRJbnN0YWxsTGF5ZXJzLmZpbHRlcihub3RFbXB0eSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZvciAoY29uc3QgW2xheWVyTmFtZSwgbGF5ZXJdIG9mIE9iamVjdC5lbnRyaWVzKGxheWVycykpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBsYXllciAhPT0gJ29iamVjdCcpIGNvbnRpbnVlO1xuICAgICAgICBjb25zdCBpbnN0YWxsZWQgPSBhd2FpdCB0aGlzLmluc3RhbGxMYXllcihzbHMsIGxheWVyLCBsYXllck5hbWUpO1xuICAgICAgICBpZiAoIWluc3RhbGxlZCkgY29udGludWU7XG4gICAgICAgIGF3YWl0IHRoaXMuZGVsZXRlKHNscywgbGF5ZXIucGF0aCk7XG4gICAgICAgIGluc3RhbGxlZExheWVycy5wdXNoKGxheWVyKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpbmZvKHRoaXMsIGBJbnN0YWxsZWQgJHtpbnN0YWxsZWRMYXllcnMubGVuZ3RofSBsYXllciR7aW5zdGFsbGVkTGF5ZXJzLmxlbmd0aCA+IDEgPyAncycgOiAnJ31gKTtcbiAgICByZXR1cm4geyBpbnN0YWxsZWRMYXllcnMgfTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZShzbHM6IFNlcnZlcmxlc3MsIGZvbGRlcjogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgeyBjbGVhbiwgbWluaWZ5IH0gPSB0aGlzLmNvbmZpZy53ZWJwYWNrO1xuICAgIGlmICghY2xlYW4pIHJldHVybjtcbiAgICBjb25zdCBub2RlTGF5ZXJQYXRoID0gYCR7Zm9sZGVyfS9ub2RlanNgO1xuICAgIGNvbnN0IGV4Y2x1ZGU6IHN0cmluZ1tdID1cbiAgICAgIHNscy5zZXJ2aWNlPy5wYWNrYWdlPy5leGNsdWRlID8/XG4gICAgICBzbHMuc2VydmljZT8ucGFja2FnZT8ucGF0dGVybnNcbiAgICAgICAgPy5maWx0ZXIoKHA6IHN0cmluZykgPT4gcC5zdGFydHNXaXRoKCchJykpXG4gICAgICAgIC5tYXAoKHA6IHN0cmluZykgPT4gcC5yZXBsYWNlKC9eIS8sICcnKSkgPz9cbiAgICAgIFtdO1xuICAgIGluZm8odGhpcywgYENsZWFuaW5nICR7ZXhjbHVkZS5tYXAocnVsZSA9PiBwYXRoLmpvaW4obm9kZUxheWVyUGF0aCwgcnVsZSkpLmpvaW4oJywgJyl9YCk7XG4gICAgY29uc3QgZmlsZXNEZWxldGVkID0gYXdhaXQgZGVsKGV4Y2x1ZGUubWFwKHJ1bGUgPT4gcGF0aC5qb2luKG5vZGVMYXllclBhdGgsIHJ1bGUpKSk7XG4gICAgaWYgKGZzLmV4aXN0c1N5bmMobm9kZUxheWVyUGF0aCkgJiYgbWluaWZ5KSB7XG4gICAgICBhd2FpdCBtaW5pZnlBbGwobm9kZUxheWVyUGF0aCwge1xuICAgICAgICBjb21wcmVzc19qc29uOiB0cnVlLFxuICAgICAgICBtb2R1bGU6IHRydWUsXG4gICAgICAgIG1hbmdsZTogdHJ1ZSxcbiAgICAgICAgcGFja2FnZWpzb246IHRydWUsXG4gICAgICB9KTtcbiAgICB9XG4gICAgaW5mbyh0aGlzLCBgQ2xlYW5lZCAke2ZpbGVzRGVsZXRlZC5sZW5ndGh9IGZpbGVzIGF0ICR7bm9kZUxheWVyUGF0aH1gKTtcbiAgfVxuXG4gIGFzeW5jIHRyYW5zZm9ybUxheWVyUmVzb3VyY2VzKHNsczogU2VydmVybGVzcyk6IFByb21pc2U8VHJhbnNmb3JtZWRMYXllclJlc291cmNlcz4ge1xuICAgIGlmICghdGhpcy5jb25maWcpIHtcbiAgICAgIGxvZyh0aGlzLCAnVW5hYmxlIHRvIGFkZCBsYXllcnMgY3VycmVudGx5IGFzIGNvbmZpZyB1bmF2YWlsYWJsZScpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZXhwb3J0ZWRMYXllcnM6IFtdLFxuICAgICAgICB1cGdyYWRlZExheWVyUmVmZXJlbmNlczogW10sXG4gICAgICB9O1xuICAgIH1cbiAgICBjb25zdCB7IGV4cG9ydExheWVycywgZXhwb3J0UHJlZml4LCB1cGdyYWRlTGF5ZXJSZWZlcmVuY2VzIH0gPSB0aGlzLmNvbmZpZztcbiAgICBjb25zdCBsYXllcnMgPSBnZXRMYXllcnMoc2xzKTtcbiAgICBjb25zdCB7IGNvbXBpbGVkQ2xvdWRGb3JtYXRpb25UZW1wbGF0ZTogY2YgfSA9IHNscy5zZXJ2aWNlLnByb3ZpZGVyO1xuXG4gICAgY29uc3QgbGF5ZXJzS2V5cyA9IE9iamVjdC5rZXlzKGxheWVycyk7XG5cbiAgICBjb25zdCB0cmFuc2Zvcm1lZFJlc291cmNlcyA9IGxheWVyc0tleXMucmVkdWNlKFxuICAgICAgKHJlc3VsdDogTWF5YmU8VHJhbnNmb3JtZWRMYXllclJlc291cmNlcz4sIGlkOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgICByZXN1bHQgPSB7XG4gICAgICAgICAgICBleHBvcnRlZExheWVyczogW10sXG4gICAgICAgICAgICB1cGdyYWRlZExheWVyUmVmZXJlbmNlczogW10sXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBuYW1lID0gcGFzY2FsY2FzZShpZCk7XG4gICAgICAgIGNvbnN0IGV4cG9ydE5hbWUgPSBgJHtuYW1lfUxhbWJkYUxheWVyUXVhbGlmaWVkQXJuYDtcbiAgICAgICAgY29uc3Qgb3V0cHV0OiBNYXliZTxPdXRwdXQ+ID0gKGNmLk91dHB1dHMgPz8ge30pW2V4cG9ydE5hbWVdO1xuXG4gICAgICAgIGlmICghb3V0cHV0KSB7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChleHBvcnRMYXllcnMpIHtcbiAgICAgICAgICBvdXRwdXQuRXhwb3J0ID0ge1xuICAgICAgICAgICAgTmFtZToge1xuICAgICAgICAgICAgICAnRm46OlN1Yic6IGV4cG9ydFByZWZpeCArIGV4cG9ydE5hbWUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH07XG4gICAgICAgICAgcmVzdWx0LmV4cG9ydGVkTGF5ZXJzLnB1c2gob3V0cHV0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1cGdyYWRlTGF5ZXJSZWZlcmVuY2VzKSB7XG4gICAgICAgICAgY29uc3QgcmVzb3VyY2VSZWYgPSBgJHtuYW1lfUxhbWJkYUxheWVyYDtcbiAgICAgICAgICBjb25zdCB2ZXJzaW9uZWRSZXNvdXJjZVJlZiA9IG91dHB1dC5WYWx1ZS5SZWY7XG5cbiAgICAgICAgICBpZiAocmVzb3VyY2VSZWYgIT09IHZlcnNpb25lZFJlc291cmNlUmVmKSB7XG4gICAgICAgICAgICBpbmZvKHRoaXMsIGBSZXBsYWNpbmcgcmVmZXJlbmNlcyB0byAke3Jlc291cmNlUmVmfSB3aXRoICR7dmVyc2lvbmVkUmVzb3VyY2VSZWZ9YCk7XG4gICAgICAgICAgICBjb25zdCByZXNvdXJjZXMgPSBjZi5SZXNvdXJjZXMgYXMgeyBba2V5OiBzdHJpbmddOiBDbG91ZEZvcm1hdGlvblJlc291cmNlIH07XG4gICAgICAgICAgICBmb3IgKGNvbnN0IHJlc291cmNlIG9mIE9iamVjdC5lbnRyaWVzKHJlc291cmNlcykpIHtcbiAgICAgICAgICAgICAgY29uc3QgW2lkLCB7IFR5cGU6IHR5cGUsIFByb3BlcnRpZXMgPSB7fSB9XSA9IHJlc291cmNlO1xuICAgICAgICAgICAgICBjb25zdCB7XG4gICAgICAgICAgICAgICAgTGF5ZXJzOiBsYXllcnMgPSBbXSxcbiAgICAgICAgICAgICAgfTogUGFydGlhbDxDbG91ZEZvcm1hdGlvblJlc291cmNlWydQcm9wZXJ0aWVzJ10gJiB7IExheWVyczogRnVuY3Rpb25MYXllclJlZmVyZW5jZVtdIH0+ID0gUHJvcGVydGllcztcbiAgICAgICAgICAgICAgaWYgKHR5cGUgPT09ICdBV1M6OkxhbWJkYTo6RnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBsYXllciBvZiBsYXllcnMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChsYXllci5SZWYgPT09IHJlc291cmNlUmVmKSB7XG4gICAgICAgICAgICAgICAgICAgIHZlcmJvc2UodGhpcywgYCR7aWR9OiBVcGRhdGluZyByZWZlcmVuY2UgdG8gbGF5ZXIgdmVyc2lvbiAke3ZlcnNpb25lZFJlc291cmNlUmVmfWApO1xuICAgICAgICAgICAgICAgICAgICBsYXllci5SZWYgPSB2ZXJzaW9uZWRSZXNvdXJjZVJlZjtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnVwZ3JhZGVkTGF5ZXJSZWZlcmVuY2VzLnB1c2gobGF5ZXIpO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHZlcmJvc2UodGhpcywgJ0NGIGFmdGVyIHRyYW5zZm9ybWF0aW9uOlxcbicsIEpTT04uc3RyaW5naWZ5KGNmLCBudWxsLCAyKSk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGV4cG9ydGVkTGF5ZXJzOiBbXSxcbiAgICAgICAgdXBncmFkZWRMYXllclJlZmVyZW5jZXM6IFtdLFxuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIChcbiAgICAgIHRyYW5zZm9ybWVkUmVzb3VyY2VzID8/IHtcbiAgICAgICAgZXhwb3J0ZWRMYXllcnM6IFtdLFxuICAgICAgICB1cGdyYWRlZExheWVyUmVmZXJlbmNlczogW10sXG4gICAgICB9XG4gICAgKTtcbiAgfVxufVxuIl19 |
+3
-2
| { | ||
| "name": "serverless-webpack-layers", | ||
| "version": "2.0.5", | ||
| "version": "2.0.6", | ||
| "description": "Plugin for the Serverless framework that offers AWS Lambda layer management using webpack", | ||
@@ -39,5 +39,6 @@ "main": "dist/index.js", | ||
| "@babel/preset-typescript": "^7.13.0", | ||
| "@types/glob": "^7.2.0", | ||
| "@types/jest": "27.0.3", | ||
| "@types/lodash.merge": "^4.6.6", | ||
| "@types/node": "^16.11.12", | ||
| "@types/node": "^17.0.21", | ||
| "@types/pascalcase": "^1.0.0", | ||
@@ -44,0 +45,0 @@ "@types/serverless": "^1.78.22", |
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
83642
5.04%11
22.22%561
6.45%23
4.55%