Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

cci-pingu

Package Overview
Dependencies
Maintainers
1
Versions
25
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

cci-pingu - npm Package Compare versions

Comparing version 2.4.0 to 2.5.0

21

dist/lib/task.js

@@ -25,5 +25,9 @@ 'use strict';

var _lodash3 = require('lodash.filter');
var _lodash4 = _interopRequireDefault(_lodash3);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var _module = {}; // Module for talking to CCI, getting the artifacts, downloading them,
// Module for talking to CCI, getting the artifacts, downloading them,
// starting the action script, saving the updated config file, ...

@@ -34,2 +38,3 @@ //

var _module = {};
var options = void 0; // set once at first run()

@@ -240,2 +245,14 @@ var config = void 0; // re-read in each iteration

builds = (0, _lodash2.default)(builds, [config.order_by], ['desc']);
if (config.workflows_job_name) {
console.log('Filtering the available successful builds on workflows job name = ' + config.workflows_job_name + '.');
builds = (0, _lodash4.default)(builds, function (build) {
return build.workflows && build.workflows.job_name === config.workflows_job_name;
});
if (!builds.length) {
console.error('No successful build with specified workflows job name found!');
console.warn('CCI task finished with failure.');
scheduleNext();
return;
}
}
}

@@ -288,2 +305,2 @@ config._last = builds[0].build_num;

exports.default = _module;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90YXNrLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsIm9wdGlvbnMiLCJjb25maWciLCJkb3dubG9hZEVycm9yIiwiRVhJVF9DT0RFIiwic2NoZWR1bGVOZXh0IiwiX3NhdmUiLCJsYXN0IiwiX2xhc3QiLCJjZmdGaWxlIiwid3JpdGUiLCJjb25zb2xlIiwiaW5mbyIsInByb2Nlc3MiLCJleGl0Iiwic2V0VGltZW91dCIsInJ1biIsImludGVydmFsIiwibG9nUHJlZml4ZWQiLCJwcmVmaXgiLCJsb2dGbiIsImRhdGEiLCJ0b1N0cmluZyIsInNwbGl0Iiwic2xpY2UiLCJtYXAiLCJzIiwiam9pbiIsInN0YXJ0U2NyaXB0Iiwic2NyaXB0RmlsZSIsInJlc29sdmUiLCJzY3JpcHQiLCJfdGFyZ2V0IiwiY3dkIiwiZGlybmFtZSIsInN0ZG91dCIsIm9uIiwic3RkZXJyIiwid2FybiIsImVyciIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvZGUiLCJlIiwibWVzc2FnZSIsImNjaURvd25sb2FkT25lIiwiX3VybHMiLCJsZW5ndGgiLCJ1cmwiLCJwb3AiLCJmaWxlbmFtZSIsInN0cmVhbU5hbWUiLCJzdHJlYW0iLCJjcmVhdGVXcml0ZVN0cmVhbSIsInN0YXJ0IiwiRGF0ZSIsImdldFRpbWUiLCJnZXQiLCJxdWVyeSIsInRva2VuIiwidGltZW91dCIsImR1ciIsInNwbGljZSIsIm5leHRUaWNrIiwicGlwZSIsImNjaURvd25sb2FkIiwic3RhdFN5bmMiLCJkaXJlY3RvcnkiLCJiYXNlbmFtZSIsImkiLCJsb2ciLCJta2RpclN5bmMiLCJjY2lBcnRpZmFjdHNJbmZvSGFuZGxlciIsInJlcyIsIm9rIiwic3RhdHVzIiwidGV4dCIsImJvZHkiLCJwcmVmaXhlcyIsImFydGlmYWN0cyIsIm5hbWUiLCJpdGVtIiwiZm91bmQiLCJ1cmxzIiwiZm9yRWFjaCIsInBhdGgiLCJpbmRleE9mIiwicHVzaCIsImFsbEZvdW5kIiwiY2NpQnVpbGRJbmZvSGFuZGxlciIsImJ1aWxkcyIsImluc3RhbGwiLCJvcmRlcl9ieSIsImJ1aWxkX251bSIsIl9uYW1lIiwiYXBpUGF0aCIsImhvc3RpbmciLCJvcmdhbmlzYXRpb24iLCJwcm9qZWN0Iiwic2V0IiwiZW5kIiwiX29wdGlvbnMiLCJyZWFkIiwiaWdub3JlX2JyYW5jaCIsImJyYW5jaCIsImZpbHRlciIsImxpbWl0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFNQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7QUFDQTs7Ozs7O0FBRUEsSUFBTUEsVUFBUyxFQUFmLEMsQ0FaQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQVNBLElBQUlDLGdCQUFKLEMsQ0FBYTtBQUNiLElBQUlDLGVBQUosQyxDQUFhO0FBQ2IsSUFBSUMsc0JBQUosQyxDQUFtQjs7QUFFbkIsSUFBSUMsa0JBQUosQyxDQUFlOztBQUVmLElBQU1DLGVBQWUsU0FBZkEsWUFBZSxHQUFNO0FBQ3pCLE1BQUlILE9BQU9JLEtBQVgsRUFBa0I7QUFDaEJKLFdBQU9LLElBQVAsR0FBY0wsT0FBT00sS0FBckI7QUFDQSxRQUFJUCxRQUFRUSxPQUFSLENBQWdCQyxLQUFoQixDQUFzQlIsTUFBdEIsQ0FBSixFQUFtQztBQUNqQ1MsY0FBUUMsSUFBUixDQUFhLHFEQUFiO0FBQ0Q7QUFDRjtBQUNELE1BQUlYLFFBQVEsVUFBUixDQUFKLEVBQXlCO0FBQ3ZCVSxZQUFRQyxJQUFSLENBQWEscURBQWI7QUFDQUMsWUFBUUMsSUFBUixDQUFhVixTQUFiO0FBQ0QsR0FIRCxNQUdPO0FBQ0xXLGVBQVdmLFFBQU9nQixHQUFsQixFQUF1QmQsT0FBT2UsUUFBUCxHQUFrQixJQUF6QztBQUNBTixZQUFRQyxJQUFSLENBQWEsZ0NBQWdDVixPQUFPZSxRQUF2QyxHQUFrRCxXQUEvRDtBQUNEO0FBQ0YsQ0FkRDs7QUFnQkEsSUFBTUMsY0FBYyxTQUFkQSxXQUFjLENBQUNDLE1BQUQsRUFBU0MsS0FBVDtBQUFBLFNBQW1CLFVBQUNDLElBQUQsRUFBVTtBQUMvQ0QsVUFBTUMsS0FBS0Ms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LEVBQXNDL0YsT0FBT2dHLFlBQTdDLEVBQTJEaEcsT0FBT2lHLE9BQWxFLEVBQTJFLE1BQTNFLEVBQW1GakcsT0FBT3VHLE1BQTFGLEVBQWtHOUUsSUFBbEcsQ0FBdUcsR0FBdkcsQ0FITjtBQUlBaEIsVUFBUTRELEdBQVIsQ0FBWSxpREFBaURyRSxPQUFPNkYsS0FBeEQsR0FBZ0UsR0FBNUU7QUFDQSx1QkFDR3JDLEdBREgsQ0FDTyx5QkFBeUJzQyxPQURoQyxFQUVHckMsS0FGSCxDQUVTLEVBQUUsZ0JBQWdCekQsT0FBTzBELEtBQXpCLEVBQWdDOEMsUUFBUSxZQUF4QyxFQUFzREMsT0FBTyxHQUE3RCxFQUZULEVBR0dQLEdBSEgsQ0FHTyxRQUhQLEVBR2lCLGtCQUhqQixFQUlHdkMsT0FKSCxDQUlXM0QsT0FBTzJELE9BQVAsR0FBaUIsSUFKNUIsRUFLR3dDLEdBTEgsQ0FLT1gsbUJBTFA7QUFNRCxDQTNCRDs7a0JBNkJlMUYsTyIsImZpbGUiOiJ0YXNrLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTW9kdWxlIGZvciB0YWxraW5nIHRvIENDSSwgZ2V0dGluZyB0aGUgYXJ0aWZhY3RzLCBkb3dubG9hZGluZyB0aGVtLFxuLy8gc3RhcnRpbmcgdGhlIGFjdGlvbiBzY3JpcHQsIHNhdmluZyB0aGUgdXBkYXRlZCBjb25maWcgZmlsZSwgLi4uXG4vL1xuLy8gVGhlIHRhc2sucnVuKCkgc2NoZWR1bGVzIG5leHQgcnVuIGFzIG5lZWRlZC5cbi8vIEFsbCBkaXNrIG9wZXJhdGlvbnMgYXJlIHN5bmNocm9ub3VzLlxuXG5pbXBvcnQgcmVxdWVzdCBmcm9tICdzdXBlcmFnZW50JztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5cbmNvbnN0IG1vZHVsZSA9IHt9O1xubGV0IG9wdGlvbnM7IC8vIHNldCBvbmNlIGF0IGZpcnN0IHJ1bigpXG5sZXQgY29uZmlnOyAgLy8gcmUtcmVhZCBpbiBlYWNoIGl0ZXJhdGlvblxubGV0IGRvd25sb2FkRXJyb3I7IC8vIHN0b3AgdGhlIHByb2Nlc3MgaW4gY2FzZSBkb3dubG9hZCBmYWlsZWRcblxubGV0IEVYSVRfQ09ERTsgLy8gcmV0dXJuIGNvZGUgZm9yICctLXJ1bi1vbmNlJyBtb2RlXG5cbmNvbnN0IHNjaGVkdWxlTmV4dCA9ICgpID0+IHtcbiAgaWYgKGNvbmZpZy5fc2F2ZSkge1xuICAgIGNvbmZpZy5sYXN0ID0gY29uZmlnLl9sYXN0O1xuICAgIGlmIChvcHRpb25zLmNmZ0ZpbGUud3JpdGUoY29uZmlnKSkge1xuICAgICAgY29uc29sZS5pbmZvKCdOZXcgY29uZmlndXJhdGlvbiBmaWxlIHJldmlzaW9uIHN1Y2Nlc3NmdWxseSBzYXZlZC4nKTtcbiAgICB9XG4gIH1cbiAgaWYgKG9wdGlvbnNbJ3J1bi1vbmNlJ10pIHtcbiAgICBjb25zb2xlLmluZm8oJ0NDSS1QSU5HVSBhYm91dCB0byBleGl0LiBUaGFua3MgZm9yIGZseWluZyB3aXRoIHVzIScpO1xuICAgIHByb2Nlc3MuZXhpdChFWElUX0NPREUpO1xuICB9IGVsc2Uge1xuICAgIHNldFRpbWVvdXQobW9kdWxlLnJ1biwgY29uZmlnLmludGVydmFsICogMTAwMCk7XG4gICAgY29uc29sZS5pbmZvKCdOZXh0IENDSSB0YXNrIHNjaGVkdWxlZCBpbiAnICsgY29uZmlnLmludGVydmFsICsgJyBzZWNvbmRzLicpO1xuICB9XG59O1xuXG5jb25zdCBsb2dQcmVmaXhlZCA9IChwcmVmaXgsIGxvZ0ZuKSA9PiAoZGF0YSkgPT4ge1xuICBsb2dGbihkYXRhLnRvU3RyaW5nKCkuc3BsaXQoJ1xcbicpLnNsaWNlKDAsIC0xKS5tYXAoKHMpID0+IGAke3ByZWZpeH0gJHtzfWApLmpvaW4oJ1xcbicpKTtcbn07XG5cbmNvbnN0IHN0YXJ0U2NyaXB0ID0gKCkgPT4ge1xuICBjb25zdCBzY3JpcHRGaWxlID0gcGF0aC5yZXNvbHZlKGNvbmZpZy5zY3JpcHQpO1xuICBjb25zb2xlLmluZm8oJ0V4ZWN1dGluZyBcIicgKyBzY3JpcHRGaWxlICsgJ1wiLicpO1xuICB0cnkge1xuICAgIGNvbnN0IHNjcmlwdCA9IHNwYXduKHNjcmlwdEZpbGUsIFsgY29uZmlnLl90YXJnZXQsIGNvbmZpZy5fbGFzdCBdLCB7IGN3ZDogcGF0aC5kaXJuYW1lKHNjcmlwdEZpbGUpIH0pO1xuICAgIHNjcmlwdC5zdGRvdXQub24oJ2RhdGEnLCBsb2dQcmVmaXhlZCgnKicsIGNvbnNvbGUuaW5mbykpO1xuICAgIHNjcmlwdC5zdGRlcnIub24oJ2RhdGEnLCBsb2dQcmVmaXhlZCgnIScsIGNvbnNvbGUud2FybikpO1xuICAgIHNjcmlwdC5vbignZXJyb3InLCAoZXJyKSA9PiB7XG4gICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc3RhcnQgc2NyaXB0IFwiJyArIHNjcmlwdEZpbGUgKyAnXCIuJyk7XG4gICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycikpO1xuICAgICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9KTtcbiAgICBzY3JpcHQub24oJ2Nsb3NlJywgKGNvZGUpID0+IHtcbiAgICAgIGlmICghY29kZSkgeyAvLyBzdWNjZXNzXG4gICAgICAgIGNvbnNvbGUuaW5mbygnQ0NJIHRhc2sgc3VjY2Vzc2Z1bGx5IGZpbmlzaGVkLicpO1xuICAgICAgICBjb25maWcuX3NhdmUgPSB0cnVlO1xuICAgICAgfSBlbHNlIHsgLy8gZmFpbFxuICAgICAgICBjb25zb2xlLmVycm9yKCdJbnN0YWxsYXRpb24gc2NyaXB0IGZhaWxlZCB3aXRoIGV4aXQgY29kZSAoJyArIGNvZGUgKyAnKS4nKTtcbiAgICAgIH1cbiAgICAgIEVYSVRfQ09ERSA9IGNvZGU7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSkgeyAvLyBzcGF3biBjYW4gdGhyb3cgZXhjZXB0aW9ucyBvbiBpdHMgb3duXG4gICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHNjcmlwdCBcIicgKyBzY3JpcHRGaWxlICsgJ1wiLicpO1xuICAgIGNvbnNvbGUuZXJyb3IoZS5tZXNzYWdlKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgfVxufTtcblxuY29uc3QgY2NpRG93bmxvYWRPbmUgPSAoKSA9PiB7XG4gIGlmICghY29uZmlnLl91cmxzLmxlbmd0aCkge1xuICAgIHN0YXJ0U2NyaXB0KCk7XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgdXJsID0gY29uZmlnLl91cmxzLnBvcCgpO1xuICAgIGxldCBmaWxlbmFtZSA9IHVybC5zcGxpdCgnLycpO1xuICAgIGZpbGVuYW1lID0gZmlsZW5hbWVbZmlsZW5hbWUubGVuZ3RoIC0gMV07XG4gICAgY29uc3Qgc3RyZWFtTmFtZSA9IHBhdGguam9pbihjb25maWcuX3RhcmdldCwgZmlsZW5hbWUpO1xuICAgIGNvbnN0IHN0cmVhbSA9IGZzLmNyZWF0ZVdyaXRlU3RyZWFtKHN0cmVhbU5hbWUpO1xuICAgIGNvbnNvbGUuaW5mbygnRG93bmxvYWRpbmcgXCInICsgdXJsICsgJ1wiLicpO1xuICAgIGNvbnN0IHN0YXJ0ID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKTtcbiAgICBkb3dubG9hZEVycm9yID0gZmFsc2U7XG4gICAgcmVxdWVzdFxuICAgICAgLmdldCh1cmwpXG4gICAgICAucXVlcnkoeyAnY2lyY2xlLXRva2VuJzogY29uZmlnLnRva2VuIH0pXG4gICAgICAudGltZW91dChjb25maWcudGltZW91dCAqIDEwMDApXG4gICAgICAub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdEb3dubG9hZCBmYWlsZWQ6ICcgKyBKU09OLnN0cmluZ2lmeShlcnIpICsgJy4nKTtcbiAgICAgICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgICAgIGRvd25sb2FkRXJyb3IgPSB0cnVlO1xuICAgICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICAgIH0pXG4gICAgICAub24oJ2VuZCcsICgpID0+IHtcbiAgICAgICAgaWYgKGRvd25sb2FkRXJyb3IpIHsgcmV0dXJuOyB9XG4gICAgICAgIGxldCBkdXIgPSAobmV3IERhdGUoKSkuZ2V0VGltZSgpIC0gc3RhcnQ7XG4gICAgICAgIGlmIChkdXIgPiA5OTkpIHtcbiAgICAgICAgICBkdXIgPSAoJycgKyBkdXIpLnNwbGl0KCcnKTtcbiAgICAgICAgICBkdXIuc3BsaWNlKGR1ci5sZW5ndGggLSAzLCAwLCAnLicpO1xuICAgICAgICAgIGR1ciA9IGR1ci5qb2luKCcnKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmluZm8oJ1NhdmVkIGFzIFwiJyArIHN0cmVhbU5hbWUgKyAnXCIgaW4gJyArIGR1ciArICcgbXMuJyk7XG4gICAgICAgIHByb2Nlc3MubmV4dFRpY2soY2NpRG93bmxvYWRPbmUpO1xuICAgICAgfSlcbiAgICAgIC5waXBlKHN0cmVhbSk7XG4gIH1cbn07XG5jb25zdCBjY2lEb3dubG9hZCA9ICgpID0+IHtcbiAgLy8gY3JlYXRlIHRhcmdldCBkaXJlY3RvcnlcbiAgdHJ5IHtcbiAgICBmcy5zdGF0U3luYyhjb25maWcuZGlyZWN0b3J5KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ0RpcmVjdG9yeSBcIicgKyBjb25maWcuZGlyZWN0b3J5ICsgJ1wiIGRvZXMgbm90IGV4aXN0LCBjYW5ub3Qgd3JpdGUgdGhlcmUuJyk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGJhc2VuYW1lID0gJ2J1aWxkLScgKyBjb25maWcuX2xhc3Q7XG4gIGxldCBkaXJuYW1lO1xuICB0cnkge1xuICAgIGxldCBpID0gMTtcbiAgICB3aGlsZSAodHJ1ZSkgeyAgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1jb25zdGFudC1jb25kaXRpb25cbiAgICAgIGRpcm5hbWUgPSBiYXNlbmFtZSArIChpID4gMSA/ICcuJyArIGkgOiAnJyk7XG4gICAgICBmcy5zdGF0U3luYyhwYXRoLmpvaW4oY29uZmlnLmRpcmVjdG9yeSwgZGlybmFtZSkpO1xuICAgICAgaSsrO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIGV4Y2VwdGlvbiBpcyBmaW5lXG4gIH1cbiAgLy8gY3JlYXRlIG5ldyBkaXJcbiAgY29uZmlnLl90YXJnZXQgPSBwYXRoLnJlc29sdmUocGF0aC5qb2luKGNvbmZpZy5kaXJlY3RvcnksIGRpcm5hbWUpKTtcbiAgY29uc29sZS5sb2coJ0NyZWF0aW5nIGFydGlmYWN0IGRpcmVjdG9yeSBcIicgKyBjb25maWcuX3RhcmdldCArICdcIi4nKTtcbiAgdHJ5IHtcbiAgICBmcy5ta2RpclN5bmMoY29uZmlnLl90YXJnZXQpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignVGFyZ2V0IGRpcmVjdG9yeSBcIicgKyBjb25maWcuX3RhcmdldCArICdcIiBjYW5ub3QgYmUgY3JlYXRlZC4nKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cblxuICAvLyBzdGFydCB0aGUgZG93bmxvYWRzXG4gIGNjaURvd25sb2FkT25lKCk7XG59O1xuXG5jb25zdCBjY2lBcnRpZmFjdHNJbmZvSGFuZGxlciA9IChlcnIsIHJlcykgPT4ge1xuICBpZiAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKCFyZXMub2spIHtcbiAgICBjb25zb2xlLmVycm9yKCdTdGF0dXM6ICcgKyByZXMuc3RhdHVzICsgJywgJyArIHJlcy50ZXh0KTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgfSBlbHNlIHsgLy8gcmVzLm9rXG4gICAgY29uc29sZS5sb2coJ1Jlc3BvbnNlIGZyb20gQ0NJIHNlcnZlcjpcXG4nICsgSlNPTi5zdHJpbmdpZnkocmVzLmJvZHksIG51bGwsIDQpKTtcbiAgICBjb25zdCBwcmVmaXhlcyA9IGNvbmZpZy5hcnRpZmFjdHMubWFwKGl0ZW0gPT4ge1xuICAgICAgcmV0dXJuIHsgbmFtZTogaXRlbSwgZm91bmQ6IGZhbHNlIH07XG4gICAgfSk7XG4gICAgY29uc3QgdXJscyA9IFtdO1xuICAgIHJlcy5ib2R5LmZvckVhY2goaXRlbSA9PiB7XG4gICAgICBwcmVmaXhlcy5mb3JFYWNoKHByZWZpeCA9PiB7XG4gICAgICAgIGlmIChpdGVtLnBhdGguaW5kZXhPZihwcmVmaXgubmFtZSkgIT09IC0xKSB7XG4gICAgICAgICAgdXJscy5wdXNoKGl0ZW0udXJsKTtcbiAgICAgICAgICBwcmVmaXguZm91bmQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBjb25zb2xlLmxvZygnQ29sbGVjdGVkIGFydGlmYWN0IFVSTHMgKHRvIGRvd25sb2FkKTpcXG4nICsgSlNPTi5zdHJpbmdpZnkodXJscywgbnVsbCwgNCkpO1xuICAgIGxldCBhbGxGb3VuZCA9IHRydWU7XG4gICAgcHJlZml4ZXMuZm9yRWFjaChwcmVmaXggPT4geyBpZiAoIXByZWZpeC5mb3VuZCkgeyBhbGxGb3VuZCA9IGZhbHNlOyB9IH0pO1xuICAgIGlmICghYWxsRm91bmQpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ05vdCBhbGwgYXJ0aWZhY3RzIGZvdW5kISBNaXNzaW5nOicpO1xuICAgICAgcHJlZml4ZXMuZm9yRWFjaChwcmVmaXggPT4geyBpZiAoIXByZWZpeC5mb3VuZCkgeyBjb25zb2xlLmVycm9yKCcrICcgKyBwcmVmaXgubmFtZSk7IH0gfSk7XG4gICAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICAgIHNjaGVkdWxlTmV4dCgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25maWcuX3VybHMgPSB1cmxzO1xuICAgICAgY2NpRG93bmxvYWQoKTtcbiAgICB9XG4gIH1cbn07XG5cbmNvbnN0IGNjaUJ1aWxkSW5mb0hhbmRsZXIgPSAoZXJyLCByZXMpID0+IHtcbiAgaWYgKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyKSk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghcmVzLm9rKSB7XG4gICAgY29uc29sZS5lcnJvcignU3RhdHVzOiAnICsgcmVzLnN0YXR1cyArICcsICcgKyByZXMudGV4dCk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gIH0gZWxzZSBpZiAoIXJlcy5ib2R5IHx8ICFyZXMuYm9keS5sZW5ndGgpIHtcbiAgICBjb25zb2xlLmVycm9yKCdObyBzdWNjZXNzZnVsIGJ1aWxkIGZvdW5kIScpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICB9IGVsc2UgeyAvLyByZXMub2tcbiAgICBsZXQgYnVpbGRzID0gcmVzLmJvZHk7XG4gICAgaWYgKCFvcHRpb25zLmluc3RhbGwpIHtcbiAgICAgIGNvbnNvbGUubG9nKCdSZXNwb25zZSBmcm9tIENDSSBzZXJ2ZXI6XFxuJyArIEpTT04uc3RyaW5naWZ5KGJ1aWxkcywgbnVsbCwgNCkpO1xuICAgICAgYnVpbGRzID0gb3JkZXJCeShidWlsZHMsIFsgY29uZmlnLm9yZGVyX2J5IF0sIFsgJ2Rlc2MnIF0pO1xuICAgIH1cbiAgICBjb25maWcuX2xhc3QgPSBidWlsZHNbMF0uYnVpbGRfbnVtO1xuICAgICFvcHRpb25zLmluc3RhbGwgJiYgY29uc29sZS5pbmZvKCdMYXN0IHN1Y2Nlc3NmdWwgJyArIGNvbmZpZy5fbmFtZSArICcgYnVpbGQgbnVtYmVyOiAnICsgY29uZmlnLl9sYXN0ICsgJy4nKTtcbiAgICBpZiAoIW9wdGlvbnMuaW5zdGFsbCAmJiAoY29uZmlnLmxhc3QgPT09IGNvbmZpZy5fbGFzdCkpIHtcbiAgICAgIGNvbnNvbGUuaW5mbygnQnVpbGQgJyArIGNvbmZpZy5fbGFzdCArICcgYWxyZWFkeSBpbnN0YWxsZWQuJyk7XG4gICAgICBjb25zb2xlLmluZm8oJ0NDSSB0YXNrIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZC4nKTtcbiAgICAgIEVYSVRfQ09ERSA9IDA7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG9wdGlvbnMuaW5zdGFsbCAmJiAoY29uZmlnLmxhc3QgPT09IGNvbmZpZy5fbGFzdCkpIHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdCdWlsZCAnICsgY29uZmlnLl9sYXN0ICsgJyBhbHJlYWR5IGluc3RhbGxlZCwgYWJvdXQgdG8gaW5zdGFsbCBpdCBhZ2Fpbi4uLicpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc29sZS5pbmZvKCdCdWlsZCAnICsgY29uZmlnLl9sYXN0ICsgJyBpcyBub3QgaW5zdGFsbGVkIHlldC4nKTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IGFwaVBhdGggPSBbJy9hcGkvdjEuMS9wcm9qZWN0JywgY29uZmlnLmhvc3RpbmcsIGNvbmZpZy5vcmdhbmlzYXRpb24sXG4gICAgICAgIGNvbmZpZy5wcm9qZWN0LCBjb25maWcuX2xhc3QsICdhcnRpZmFjdHMnXS5qb2luKCcvJyk7XG4gICAgICBjb25zb2xlLmxvZygnR2V0dGluZyBpbmZvIGFib3V0IGJ1aWxkICcgKyBjb25maWcuX2xhc3QgKyAnIGFydGlmYWN0cy4nKTtcbiAgICAgIHJlcXVlc3RcbiAgICAgICAgLmdldCgnaHR0cHM6Ly9jaXJjbGVjaS5jb20nICsgYXBpUGF0aClcbiAgICAgICAgLnF1ZXJ5KHsgJ2NpcmNsZS10b2tlbic6IGNvbmZpZy50b2tlbiB9KVxuICAgICAgICAuc2V0KCdBY2NlcHQnLCAnYXBwbGljYXRpb24vanNvbicpXG4gICAgICAgIC50aW1lb3V0KGNvbmZpZy50aW1lb3V0ICogMTAwMClcbiAgICAgICAgLmVuZChjY2lBcnRpZmFjdHNJbmZvSGFuZGxlcik7XG4gICAgfVxuICB9XG59O1xuXG5tb2R1bGUucnVuID0gKF9vcHRpb25zID0gbnVsbCkgPT4ge1xuICBFWElUX0NPREUgPSAxOyAgIC8vIHVwZGF0ZSB0byAwIG9uIGZpbmFsIHN1Y2Nlc3NcbiAgaWYgKF9vcHRpb25zKSB7IG9wdGlvbnMgPSBfb3B0aW9uczsgfVxuICBjb25maWcgPSBvcHRpb25zLmNmZ0ZpbGUucmVhZCgpO1xuICBpZiAoY29uZmlnLmlnbm9yZV9icmFuY2gpIHtcbiAgICBjb25maWcuYnJhbmNoID0gJzxBTlk+JztcbiAgfVxuICBjb25maWcuX25hbWUgPSBbY29uZmlnLmhvc3RpbmcsIGNvbmZpZy5vcmdhbmlzYXRpb24sIGNvbmZpZy5wcm9qZWN0LCBjb25maWcuYnJhbmNoXS5qb2luKCcvJyk7XG4gIGNvbnNvbGUuaW5mbygnQ0NJIHRhc2sgc3RhcnRlZC4nKTtcbiAgaWYgKG9wdGlvbnMuaW5zdGFsbCkge1xuICAgIGNjaUJ1aWxkSW5mb0hhbmRsZXIobnVsbCwge1xuICAgICAgb2s6IHRydWUsXG4gICAgICBib2R5OiBbIHsgYnVpbGRfbnVtOiBvcHRpb25zLmluc3RhbGwgfSBdXG4gICAgfSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGNvbnN0IGFwaVBhdGggPVxuICAgIGNvbmZpZy5pZ25vcmVfYnJhbmNoXG4gICAgICA/IFsnL2FwaS92MS4xL3Byb2plY3QnLCBjb25maWcuaG9zdGluZywgY29uZmlnLm9yZ2FuaXNhdGlvbiwgY29uZmlnLnByb2plY3RdLmpvaW4oJy8nKVxuICAgICAgOiBbJy9hcGkvdjEuMS9wcm9qZWN0JywgY29uZmlnLmhvc3RpbmcsIGNvbmZpZy5vcmdhbmlzYXRpb24sIGNvbmZpZy5wcm9qZWN0LCAndHJlZScsIGNvbmZpZy5icmFuY2hdLmpvaW4oJy8nKTtcbiAgY29uc29sZS5sb2coJ0dldHRpbmcgaW5mbyBhYm91dCBsYXN0IHN1Y2Nlc3NmdWwgYnVpbGQgb2YgJyArIGNvbmZpZy5fbmFtZSArICcuJyk7XG4gIHJlcXVlc3RcbiAgICAuZ2V0KCdodHRwczovL2NpcmNsZWNpLmNvbScgKyBhcGlQYXRoKVxuICAgIC5xdWVyeSh7ICdjaXJjbGUtdG9rZW4nOiBjb25maWcudG9rZW4sIGZpbHRlcjogJ3N1Y2Nlc3NmdWwnLCBsaW1pdDogMTAwIH0pXG4gICAgLnNldCgnQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgIC50aW1lb3V0KGNvbmZpZy50aW1lb3V0ICogMTAwMClcbiAgICAuZW5kKGNjaUJ1aWxkSW5mb0hhbmRsZXIpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbW9kdWxlO1xuIl19
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90YXNrLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsIm9wdGlvbnMiLCJjb25maWciLCJkb3dubG9hZEVycm9yIiwiRVhJVF9DT0RFIiwic2NoZWR1bGVOZXh0IiwiX3NhdmUiLCJsYXN0IiwiX2xhc3QiLCJjZmdGaWxlIiwid3JpdGUiLCJjb25zb2xlIiwiaW5mbyIsInByb2Nlc3MiLCJleGl0Iiwic2V0VGltZW91dCIsInJ1biIsImludGVydmFsIiwibG9nUHJlZml4ZWQiLCJwcmVmaXgiLCJsb2dGbiIsImRhdGEiLCJ0b1N0cmluZyIsInNwbGl0Iiwic2xpY2UiLCJtYXAiLCJzIiwiam9pbiIsInN0YXJ0U2NyaXB0Iiwic2NyaXB0RmlsZSIsInJlc29sdmUiLCJzY3JpcHQiLCJfdGFyZ2V0IiwiY3dkIiwiZGlybmFtZSIsInN0ZG91dCIsIm9uIiwic3RkZXJyIiwid2FybiIsImVyciIsImVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImNvZGUiLCJlIiwibWVzc2FnZSIsImNjaURvd25sb2FkT25lIiwiX3VybHMiLCJsZW5ndGgiLCJ1cmwiLCJwb3AiLCJmaWxlbmFtZSIsInN0cmVhbU5hbWUiLCJzdHJlYW0iLCJjcmVhdGVXcml0ZVN0cmVhbSIsInN0YXJ0IiwiRGF0ZSIsImdldFRpbWUiLCJnZXQiLCJxdWVyeSIsInRva2VuIiwidGltZW91dCIsImR1ciIsInNwbGljZSIsIm5leHRUaWNrIiwicGlwZSIsImNjaURvd25sb2FkIiwic3RhdFN5bmMiLCJkaXJlY3RvcnkiLCJiYXNlbmFtZSIsImkiLCJsb2ciLCJta2RpclN5bmMiLCJjY2lBcnRpZmFjdHNJbmZvSGFuZGxlciIsInJlcyIsIm9rIiwic3RhdHVzIiwidGV4dCIsImJvZHkiLCJwcmVmaXhlcyIsImFydGlmYWN0cyIsIm5hbWUiLCJpdGVtIiwiZm91bmQiLCJ1cmxzIiwiZm9yRWFjaCIsInBhdGgiLCJpbmRleE9mIiwicHVzaCIsImFsbEZvdW5kIiwiY2NpQnVpbGRJbmZvSGFuZGxlciIsImJ1aWxkcyIsImluc3RhbGwiLCJvcmRlcl9ieSIsIndvcmtmbG93c19qb2JfbmFtZSIsImJ1aWxkIiwid29ya2Zsb3dzIiwiam9iX25hbWUiLCJidWlsZF9udW0iLCJfbmFtZSIsImFwaVBhdGgiLCJob3N0aW5nIiwib3JnYW5pc2F0aW9uIiwicHJvamVjdCIsInNldCIsImVuZCIsIl9vcHRpb25zIiwicmVhZCIsImlnbm9yZV9icmFuY2giLCJicmFuY2giLCJmaWx0ZXIiLCJsaW1pdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBTUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7O0FBQ0E7Ozs7QUFDQTs7Ozs7O0FBWEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFTQSxJQUFNQSxVQUFTLEVBQWY7QUFDQSxJQUFJQyxnQkFBSixDLENBQWE7QUFDYixJQUFJQyxlQUFKLEMsQ0FBYTtBQUNiLElBQUlDLHNCQUFKLEMsQ0FBbUI7O0FBRW5CLElBQUlDLGtCQUFKLEMsQ0FBZTs7QUFFZixJQUFNQyxlQUFlLFNBQWZBLFlBQWUsR0FBTTtBQUN6QixNQUFJSCxPQUFPSSxLQUFYLEVBQWtCO0FBQ2hCSixXQUFPSyxJQUFQLEdBQWNMLE9BQU9NLEtBQXJCO0FBQ0EsUUFBSVAsUUFBUVEsT0FBUixDQUFnQkMsS0FBaEIsQ0FBc0JSLE1BQXRCLENBQUosRUFBbUM7QUFDakNTLGNBQVFDLElBQVIsQ0FBYSxxREFBYjtBQUNEO0FBQ0Y7QUFDRCxNQUFJWCxRQUFRLFVBQVIsQ0FBSixFQUF5QjtBQUN2QlUsWUFBUUMsSUFBUixDQUFhLHFEQUFiO0FBQ0FDLFlBQVFDLElBQVIsQ0FBYVYsU0FBYjtBQUNELEdBSEQsTUFHTztBQUNMVyxlQUFXZixRQUFPZ0IsR0FBbEIsRUFBdUJkLE9BQU9lLFFBQVAsR0FBa0IsSUFBekM7QUFDQU4sWUFBUUMsSUFBUixDQUFhLGdDQUFnQ1YsT0FBT2UsUUFBdkMsR0FBa0QsV0FBL0Q7QUFDRDtBQUNGLENBZEQ7O0FBZ0JBLElBQU1DLGNBQWMsU0FBZEEsV0FBYyxDQUFDQyxNQUFE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QXNEckcsT0FBTzJHLE1BQTdELEVBQXFFbEYsSUFBckUsQ0FBMEUsR0FBMUUsQ0FBZjtBQUNBaEIsVUFBUUMsSUFBUixDQUFhLG1CQUFiO0FBQ0EsTUFBSVgsUUFBUTJGLE9BQVosRUFBcUI7QUFDbkJGLHdCQUFvQixJQUFwQixFQUEwQjtBQUN4QmYsVUFBSSxJQURvQjtBQUV4QkcsWUFBTSxDQUFFLEVBQUVvQixXQUFXakcsUUFBUTJGLE9BQXJCLEVBQUY7QUFGa0IsS0FBMUI7QUFJQTtBQUNEO0FBQ0QsTUFBTVEsVUFDSmxHLE9BQU8wRyxhQUFQLEdBQ0ksQ0FBQyxtQkFBRCxFQUFzQjFHLE9BQU9tRyxPQUE3QixFQUFzQ25HLE9BQU9vRyxZQUE3QyxFQUEyRHBHLE9BQU9xRyxPQUFsRSxFQUEyRTVFLElBQTNFLENBQWdGLEdBQWhGLENBREosR0FFSSxDQUFDLG1CQUFELEVBQXNCekIsT0FBT21HLE9BQTdCLEVBQXNDbkcsT0FBT29HLFlBQTdDLEVBQTJEcEcsT0FBT3FHLE9BQWxFLEVBQTJFLE1BQTNFLEVBQW1GckcsT0FBTzJHLE1BQTFGLEVBQWtHbEYsSUFBbEcsQ0FBdUcsR0FBdkcsQ0FITjtBQUlBaEIsVUFBUTRELEdBQVIsQ0FBWSxpREFBaURyRSxPQUFPaUcsS0FBeEQsR0FBZ0UsR0FBNUU7QUFDQSx1QkFDR3pDLEdBREgsQ0FDTyx5QkFBeUIwQyxPQURoQyxFQUVHekMsS0FGSCxDQUVTLEVBQUUsZ0JBQWdCekQsT0FBTzBELEtBQXpCLEVBQWdDa0QsUUFBUSxZQUF4QyxFQUFzREMsT0FBTyxHQUE3RCxFQUZULEVBR0dQLEdBSEgsQ0FHTyxRQUhQLEVBR2lCLGtCQUhqQixFQUlHM0MsT0FKSCxDQUlXM0QsT0FBTzJELE9BQVAsR0FBaUIsSUFKNUIsRUFLRzRDLEdBTEgsQ0FLT2YsbUJBTFA7QUFNRCxDQTNCRDs7a0JBNkJlMUYsTyIsImZpbGUiOiJ0YXNrLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTW9kdWxlIGZvciB0YWxraW5nIHRvIENDSSwgZ2V0dGluZyB0aGUgYXJ0aWZhY3RzLCBkb3dubG9hZGluZyB0aGVtLFxuLy8gc3RhcnRpbmcgdGhlIGFjdGlvbiBzY3JpcHQsIHNhdmluZyB0aGUgdXBkYXRlZCBjb25maWcgZmlsZSwgLi4uXG4vL1xuLy8gVGhlIHRhc2sucnVuKCkgc2NoZWR1bGVzIG5leHQgcnVuIGFzIG5lZWRlZC5cbi8vIEFsbCBkaXNrIG9wZXJhdGlvbnMgYXJlIHN5bmNocm9ub3VzLlxuXG5pbXBvcnQgcmVxdWVzdCBmcm9tICdzdXBlcmFnZW50JztcbmltcG9ydCBmcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHNwYXduIH0gZnJvbSAnY2hpbGRfcHJvY2Vzcyc7XG5pbXBvcnQgb3JkZXJCeSBmcm9tICdsb2Rhc2gub3JkZXJieSc7XG5pbXBvcnQgZmlsdGVyIGZyb20gJ2xvZGFzaC5maWx0ZXInO1xuXG5jb25zdCBtb2R1bGUgPSB7fTtcbmxldCBvcHRpb25zOyAvLyBzZXQgb25jZSBhdCBmaXJzdCBydW4oKVxubGV0IGNvbmZpZzsgIC8vIHJlLXJlYWQgaW4gZWFjaCBpdGVyYXRpb25cbmxldCBkb3dubG9hZEVycm9yOyAvLyBzdG9wIHRoZSBwcm9jZXNzIGluIGNhc2UgZG93bmxvYWQgZmFpbGVkXG5cbmxldCBFWElUX0NPREU7IC8vIHJldHVybiBjb2RlIGZvciAnLS1ydW4tb25jZScgbW9kZVxuXG5jb25zdCBzY2hlZHVsZU5leHQgPSAoKSA9PiB7XG4gIGlmIChjb25maWcuX3NhdmUpIHtcbiAgICBjb25maWcubGFzdCA9IGNvbmZpZy5fbGFzdDtcbiAgICBpZiAob3B0aW9ucy5jZmdGaWxlLndyaXRlKGNvbmZpZykpIHtcbiAgICAgIGNvbnNvbGUuaW5mbygnTmV3IGNvbmZpZ3VyYXRpb24gZmlsZSByZXZpc2lvbiBzdWNjZXNzZnVsbHkgc2F2ZWQuJyk7XG4gICAgfVxuICB9XG4gIGlmIChvcHRpb25zWydydW4tb25jZSddKSB7XG4gICAgY29uc29sZS5pbmZvKCdDQ0ktUElOR1UgYWJvdXQgdG8gZXhpdC4gVGhhbmtzIGZvciBmbHlpbmcgd2l0aCB1cyEnKTtcbiAgICBwcm9jZXNzLmV4aXQoRVhJVF9DT0RFKTtcbiAgfSBlbHNlIHtcbiAgICBzZXRUaW1lb3V0KG1vZHVsZS5ydW4sIGNvbmZpZy5pbnRlcnZhbCAqIDEwMDApO1xuICAgIGNvbnNvbGUuaW5mbygnTmV4dCBDQ0kgdGFzayBzY2hlZHVsZWQgaW4gJyArIGNvbmZpZy5pbnRlcnZhbCArICcgc2Vjb25kcy4nKTtcbiAgfVxufTtcblxuY29uc3QgbG9nUHJlZml4ZWQgPSAocHJlZml4LCBsb2dGbikgPT4gKGRhdGEpID0+IHtcbiAgbG9nRm4oZGF0YS50b1N0cmluZygpLnNwbGl0KCdcXG4nKS5zbGljZSgwLCAtMSkubWFwKChzKSA9PiBgJHtwcmVmaXh9ICR7c31gKS5qb2luKCdcXG4nKSk7XG59O1xuXG5jb25zdCBzdGFydFNjcmlwdCA9ICgpID0+IHtcbiAgY29uc3Qgc2NyaXB0RmlsZSA9IHBhdGgucmVzb2x2ZShjb25maWcuc2NyaXB0KTtcbiAgY29uc29sZS5pbmZvKCdFeGVjdXRpbmcgXCInICsgc2NyaXB0RmlsZSArICdcIi4nKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBzY3JpcHQgPSBzcGF3bihzY3JpcHRGaWxlLCBbIGNvbmZpZy5fdGFyZ2V0LCBjb25maWcuX2xhc3QgXSwgeyBjd2Q6IHBhdGguZGlybmFtZShzY3JpcHRGaWxlKSB9KTtcbiAgICBzY3JpcHQuc3Rkb3V0Lm9uKCdkYXRhJywgbG9nUHJlZml4ZWQoJyonLCBjb25zb2xlLmluZm8pKTtcbiAgICBzY3JpcHQuc3RkZXJyLm9uKCdkYXRhJywgbG9nUHJlZml4ZWQoJyEnLCBjb25zb2xlLndhcm4pKTtcbiAgICBzY3JpcHQub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIHN0YXJ0IHNjcmlwdCBcIicgKyBzY3JpcHRGaWxlICsgJ1wiLicpO1xuICAgICAgY29uc29sZS5lcnJvcihKU09OLnN0cmluZ2lmeShlcnIpKTtcbiAgICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgfSk7XG4gICAgc2NyaXB0Lm9uKCdjbG9zZScsIChjb2RlKSA9PiB7XG4gICAgICBpZiAoIWNvZGUpIHsgLy8gc3VjY2Vzc1xuICAgICAgICBjb25zb2xlLmluZm8oJ0NDSSB0YXNrIHN1Y2Nlc3NmdWxseSBmaW5pc2hlZC4nKTtcbiAgICAgICAgY29uZmlnLl9zYXZlID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7IC8vIGZhaWxcbiAgICAgICAgY29uc29sZS5lcnJvcignSW5zdGFsbGF0aW9uIHNjcmlwdCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgKCcgKyBjb2RlICsgJykuJyk7XG4gICAgICB9XG4gICAgICBFWElUX0NPREUgPSBjb2RlO1xuICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgfSk7XG4gIH0gY2F0Y2ggKGUpIHsgLy8gc3Bhd24gY2FuIHRocm93IGV4Y2VwdGlvbnMgb24gaXRzIG93blxuICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBzdGFydCBzY3JpcHQgXCInICsgc2NyaXB0RmlsZSArICdcIi4nKTtcbiAgICBjb25zb2xlLmVycm9yKGUubWVzc2FnZSk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gIH1cbn07XG5cbmNvbnN0IGNjaURvd25sb2FkT25lID0gKCkgPT4ge1xuICBpZiAoIWNvbmZpZy5fdXJscy5sZW5ndGgpIHtcbiAgICBzdGFydFNjcmlwdCgpO1xuICB9IGVsc2Uge1xuICAgIGNvbnN0IHVybCA9IGNvbmZpZy5fdXJscy5wb3AoKTtcbiAgICBsZXQgZmlsZW5hbWUgPSB1cmwuc3BsaXQoJy8nKTtcbiAgICBmaWxlbmFtZSA9IGZpbGVuYW1lW2ZpbGVuYW1lLmxlbmd0aCAtIDFdO1xuICAgIGNvbnN0IHN0cmVhbU5hbWUgPSBwYXRoLmpvaW4oY29uZmlnLl90YXJnZXQsIGZpbGVuYW1lKTtcbiAgICBjb25zdCBzdHJlYW0gPSBmcy5jcmVhdGVXcml0ZVN0cmVhbShzdHJlYW1OYW1lKTtcbiAgICBjb25zb2xlLmluZm8oJ0Rvd25sb2FkaW5nIFwiJyArIHVybCArICdcIi4nKTtcbiAgICBjb25zdCBzdGFydCA9IChuZXcgRGF0ZSgpKS5nZXRUaW1lKCk7XG4gICAgZG93bmxvYWRFcnJvciA9IGZhbHNlO1xuICAgIHJlcXVlc3RcbiAgICAgIC5nZXQodXJsKVxuICAgICAgLnF1ZXJ5KHsgJ2NpcmNsZS10b2tlbic6IGNvbmZpZy50b2tlbiB9KVxuICAgICAgLnRpbWVvdXQoY29uZmlnLnRpbWVvdXQgKiAxMDAwKVxuICAgICAgLm9uKCdlcnJvcicsIChlcnIpID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRG93bmxvYWQgZmFpbGVkOiAnICsgSlNPTi5zdHJpbmdpZnkoZXJyKSArICcuJyk7XG4gICAgICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgICAgICBkb3dubG9hZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgICB9KVxuICAgICAgLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgIGlmIChkb3dubG9hZEVycm9yKSB7IHJldHVybjsgfVxuICAgICAgICBsZXQgZHVyID0gKG5ldyBEYXRlKCkpLmdldFRpbWUoKSAtIHN0YXJ0O1xuICAgICAgICBpZiAoZHVyID4gOTk5KSB7XG4gICAgICAgICAgZHVyID0gKCcnICsgZHVyKS5zcGxpdCgnJyk7XG4gICAgICAgICAgZHVyLnNwbGljZShkdXIubGVuZ3RoIC0gMywgMCwgJy4nKTtcbiAgICAgICAgICBkdXIgPSBkdXIuam9pbignJyk7XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5pbmZvKCdTYXZlZCBhcyBcIicgKyBzdHJlYW1OYW1lICsgJ1wiIGluICcgKyBkdXIgKyAnIG1zLicpO1xuICAgICAgICBwcm9jZXNzLm5leHRUaWNrKGNjaURvd25sb2FkT25lKTtcbiAgICAgIH0pXG4gICAgICAucGlwZShzdHJlYW0pO1xuICB9XG59O1xuY29uc3QgY2NpRG93bmxvYWQgPSAoKSA9PiB7XG4gIC8vIGNyZWF0ZSB0YXJnZXQgZGlyZWN0b3J5XG4gIHRyeSB7XG4gICAgZnMuc3RhdFN5bmMoY29uZmlnLmRpcmVjdG9yeSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBjb25zb2xlLmVycm9yKCdEaXJlY3RvcnkgXCInICsgY29uZmlnLmRpcmVjdG9yeSArICdcIiBkb2VzIG5vdCBleGlzdCwgY2Fubm90IHdyaXRlIHRoZXJlLicpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBiYXNlbmFtZSA9ICdidWlsZC0nICsgY29uZmlnLl9sYXN0O1xuICBsZXQgZGlybmFtZTtcbiAgdHJ5IHtcbiAgICBsZXQgaSA9IDE7XG4gICAgd2hpbGUgKHRydWUpIHsgIC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc3RhbnQtY29uZGl0aW9uXG4gICAgICBkaXJuYW1lID0gYmFzZW5hbWUgKyAoaSA+IDEgPyAnLicgKyBpIDogJycpO1xuICAgICAgZnMuc3RhdFN5bmMocGF0aC5qb2luKGNvbmZpZy5kaXJlY3RvcnksIGRpcm5hbWUpKTtcbiAgICAgIGkrKztcbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBleGNlcHRpb24gaXMgZmluZVxuICB9XG4gIC8vIGNyZWF0ZSBuZXcgZGlyXG4gIGNvbmZpZy5fdGFyZ2V0ID0gcGF0aC5yZXNvbHZlKHBhdGguam9pbihjb25maWcuZGlyZWN0b3J5LCBkaXJuYW1lKSk7XG4gIGNvbnNvbGUubG9nKCdDcmVhdGluZyBhcnRpZmFjdCBkaXJlY3RvcnkgXCInICsgY29uZmlnLl90YXJnZXQgKyAnXCIuJyk7XG4gIHRyeSB7XG4gICAgZnMubWtkaXJTeW5jKGNvbmZpZy5fdGFyZ2V0KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1RhcmdldCBkaXJlY3RvcnkgXCInICsgY29uZmlnLl90YXJnZXQgKyAnXCIgY2Fubm90IGJlIGNyZWF0ZWQuJyk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgLy8gc3RhcnQgdGhlIGRvd25sb2Fkc1xuICBjY2lEb3dubG9hZE9uZSgpO1xufTtcblxuY29uc3QgY2NpQXJ0aWZhY3RzSW5mb0hhbmRsZXIgPSAoZXJyLCByZXMpID0+IHtcbiAgaWYgKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyKSk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICghcmVzLm9rKSB7XG4gICAgY29uc29sZS5lcnJvcignU3RhdHVzOiAnICsgcmVzLnN0YXR1cyArICcsICcgKyByZXMudGV4dCk7XG4gICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgc2NoZWR1bGVOZXh0KCk7XG4gIH0gZWxzZSB7IC8vIHJlcy5va1xuICAgIGNvbnNvbGUubG9nKCdSZXNwb25zZSBmcm9tIENDSSBzZXJ2ZXI6XFxuJyArIEpTT04uc3RyaW5naWZ5KHJlcy5ib2R5LCBudWxsLCA0KSk7XG4gICAgY29uc3QgcHJlZml4ZXMgPSBjb25maWcuYXJ0aWZhY3RzLm1hcChpdGVtID0+IHtcbiAgICAgIHJldHVybiB7IG5hbWU6IGl0ZW0sIGZvdW5kOiBmYWxzZSB9O1xuICAgIH0pO1xuICAgIGNvbnN0IHVybHMgPSBbXTtcbiAgICByZXMuYm9keS5mb3JFYWNoKGl0ZW0gPT4ge1xuICAgICAgcHJlZml4ZXMuZm9yRWFjaChwcmVmaXggPT4ge1xuICAgICAgICBpZiAoaXRlbS5wYXRoLmluZGV4T2YocHJlZml4Lm5hbWUpICE9PSAtMSkge1xuICAgICAgICAgIHVybHMucHVzaChpdGVtLnVybCk7XG4gICAgICAgICAgcHJlZml4LmZvdW5kID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgY29uc29sZS5sb2coJ0NvbGxlY3RlZCBhcnRpZmFjdCBVUkxzICh0byBkb3dubG9hZCk6XFxuJyArIEpTT04uc3RyaW5naWZ5KHVybHMsIG51bGwsIDQpKTtcbiAgICBsZXQgYWxsRm91bmQgPSB0cnVlO1xuICAgIHByZWZpeGVzLmZvckVhY2gocHJlZml4ID0+IHsgaWYgKCFwcmVmaXguZm91bmQpIHsgYWxsRm91bmQgPSBmYWxzZTsgfSB9KTtcbiAgICBpZiAoIWFsbEZvdW5kKSB7XG4gICAgICBjb25zb2xlLmVycm9yKCdOb3QgYWxsIGFydGlmYWN0cyBmb3VuZCEgTWlzc2luZzonKTtcbiAgICAgIHByZWZpeGVzLmZvckVhY2gocHJlZml4ID0+IHsgaWYgKCFwcmVmaXguZm91bmQpIHsgY29uc29sZS5lcnJvcignKyAnICsgcHJlZml4Lm5hbWUpOyB9IH0pO1xuICAgICAgY29uc29sZS53YXJuKCdDQ0kgdGFzayBmaW5pc2hlZCB3aXRoIGZhaWx1cmUuJyk7XG4gICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uZmlnLl91cmxzID0gdXJscztcbiAgICAgIGNjaURvd25sb2FkKCk7XG4gICAgfVxuICB9XG59O1xuXG5jb25zdCBjY2lCdWlsZEluZm9IYW5kbGVyID0gKGVyciwgcmVzKSA9PiB7XG4gIGlmIChlcnIpIHtcbiAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycikpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAoIXJlcy5vaykge1xuICAgIGNvbnNvbGUuZXJyb3IoJ1N0YXR1czogJyArIHJlcy5zdGF0dXMgKyAnLCAnICsgcmVzLnRleHQpO1xuICAgIGNvbnNvbGUud2FybignQ0NJIHRhc2sgZmluaXNoZWQgd2l0aCBmYWlsdXJlLicpO1xuICAgIHNjaGVkdWxlTmV4dCgpO1xuICB9IGVsc2UgaWYgKCFyZXMuYm9keSB8fCAhcmVzLmJvZHkubGVuZ3RoKSB7XG4gICAgY29uc29sZS5lcnJvcignTm8gc3VjY2Vzc2Z1bCBidWlsZCBmb3VuZCEnKTtcbiAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICBzY2hlZHVsZU5leHQoKTtcbiAgfSBlbHNlIHsgLy8gcmVzLm9rXG4gICAgbGV0IGJ1aWxkcyA9IHJlcy5ib2R5O1xuICAgIGlmICghb3B0aW9ucy5pbnN0YWxsKSB7XG4gICAgICBjb25zb2xlLmxvZygnUmVzcG9uc2UgZnJvbSBDQ0kgc2VydmVyOlxcbicgKyBKU09OLnN0cmluZ2lmeShidWlsZHMsIG51bGwsIDQpKTtcbiAgICAgIGJ1aWxkcyA9IG9yZGVyQnkoYnVpbGRzLCBbIGNvbmZpZy5vcmRlcl9ieSBdLCBbICdkZXNjJyBdKTtcbiAgICAgIGlmIChjb25maWcud29ya2Zsb3dzX2pvYl9uYW1lKSB7XG4gICAgICAgIGNvbnNvbGUubG9nKCdGaWx0ZXJpbmcgdGhlIGF2YWlsYWJsZSBzdWNjZXNzZnVsIGJ1aWxkcyBvbiB3b3JrZmxvd3Mgam9iIG5hbWUgPSAnICsgY29uZmlnLndvcmtmbG93c19qb2JfbmFtZSArICcuJyk7XG4gICAgICAgIGJ1aWxkcyA9IGZpbHRlcihidWlsZHMsIChidWlsZCkgPT4gKGJ1aWxkLndvcmtmbG93cyAmJiAoYnVpbGQud29ya2Zsb3dzLmpvYl9uYW1lID09PSBjb25maWcud29ya2Zsb3dzX2pvYl9uYW1lKSkpO1xuICAgICAgICBpZiAoIWJ1aWxkcy5sZW5ndGgpIHtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKCdObyBzdWNjZXNzZnVsIGJ1aWxkIHdpdGggc3BlY2lmaWVkIHdvcmtmbG93cyBqb2IgbmFtZSBmb3VuZCEnKTtcbiAgICAgICAgICBjb25zb2xlLndhcm4oJ0NDSSB0YXNrIGZpbmlzaGVkIHdpdGggZmFpbHVyZS4nKTtcbiAgICAgICAgICBzY2hlZHVsZU5leHQoKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgY29uZmlnLl9sYXN0ID0gYnVpbGRzWzBdLmJ1aWxkX251bTtcbiAgICAhb3B0aW9ucy5pbnN0YWxsICYmIGNvbnNvbGUuaW5mbygnTGFzdCBzdWNjZXNzZnVsICcgKyBjb25maWcuX25hbWUgKyAnIGJ1aWxkIG51bWJlcjogJyArIGNvbmZpZy5fbGFzdCArICcuJyk7XG4gICAgaWYgKCFvcHRpb25zLmluc3RhbGwgJiYgKGNvbmZpZy5sYXN0ID09PSBjb25maWcuX2xhc3QpKSB7XG4gICAgICBjb25zb2xlLmluZm8oJ0J1aWxkICcgKyBjb25maWcuX2xhc3QgKyAnIGFscmVhZHkgaW5zdGFsbGVkLicpO1xuICAgICAgY29uc29sZS5pbmZvKCdDQ0kgdGFzayBzdWNjZXNzZnVsbHkgZmluaXNoZWQuJyk7XG4gICAgICBFWElUX0NPREUgPSAwO1xuICAgICAgc2NoZWR1bGVOZXh0KCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGlmIChvcHRpb25zLmluc3RhbGwgJiYgKGNvbmZpZy5sYXN0ID09PSBjb25maWcuX2xhc3QpKSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnQnVpbGQgJyArIGNvbmZpZy5fbGFzdCArICcgYWxyZWFkeSBpbnN0YWxsZWQsIGFib3V0IHRvIGluc3RhbGwgaXQgYWdhaW4uLi4nKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnQnVpbGQgJyArIGNvbmZpZy5fbGFzdCArICcgaXMgbm90IGluc3RhbGxlZCB5ZXQuJyk7XG4gICAgICB9XG4gICAgICBjb25zdCBhcGlQYXRoID0gWycvYXBpL3YxLjEvcHJvamVjdCcsIGNvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLFxuICAgICAgICBjb25maWcucHJvamVjdCwgY29uZmlnLl9sYXN0LCAnYXJ0aWZhY3RzJ10uam9pbignLycpO1xuICAgICAgY29uc29sZS5sb2coJ0dldHRpbmcgaW5mbyBhYm91dCBidWlsZCAnICsgY29uZmlnLl9sYXN0ICsgJyBhcnRpZmFjdHMuJyk7XG4gICAgICByZXF1ZXN0XG4gICAgICAgIC5nZXQoJ2h0dHBzOi8vY2lyY2xlY2kuY29tJyArIGFwaVBhdGgpXG4gICAgICAgIC5xdWVyeSh7ICdjaXJjbGUtdG9rZW4nOiBjb25maWcudG9rZW4gfSlcbiAgICAgICAgLnNldCgnQWNjZXB0JywgJ2FwcGxpY2F0aW9uL2pzb24nKVxuICAgICAgICAudGltZW91dChjb25maWcudGltZW91dCAqIDEwMDApXG4gICAgICAgIC5lbmQoY2NpQXJ0aWZhY3RzSW5mb0hhbmRsZXIpO1xuICAgIH1cbiAgfVxufTtcblxubW9kdWxlLnJ1biA9IChfb3B0aW9ucyA9IG51bGwpID0+IHtcbiAgRVhJVF9DT0RFID0gMTsgICAvLyB1cGRhdGUgdG8gMCBvbiBmaW5hbCBzdWNjZXNzXG4gIGlmIChfb3B0aW9ucykgeyBvcHRpb25zID0gX29wdGlvbnM7IH1cbiAgY29uZmlnID0gb3B0aW9ucy5jZmdGaWxlLnJlYWQoKTtcbiAgaWYgKGNvbmZpZy5pZ25vcmVfYnJhbmNoKSB7XG4gICAgY29uZmlnLmJyYW5jaCA9ICc8QU5ZPic7XG4gIH1cbiAgY29uZmlnLl9uYW1lID0gW2NvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLCBjb25maWcucHJvamVjdCwgY29uZmlnLmJyYW5jaF0uam9pbignLycpO1xuICBjb25zb2xlLmluZm8oJ0NDSSB0YXNrIHN0YXJ0ZWQuJyk7XG4gIGlmIChvcHRpb25zLmluc3RhbGwpIHtcbiAgICBjY2lCdWlsZEluZm9IYW5kbGVyKG51bGwsIHtcbiAgICAgIG9rOiB0cnVlLFxuICAgICAgYm9keTogWyB7IGJ1aWxkX251bTogb3B0aW9ucy5pbnN0YWxsIH0gXVxuICAgIH0pO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBhcGlQYXRoID1cbiAgICBjb25maWcuaWdub3JlX2JyYW5jaFxuICAgICAgPyBbJy9hcGkvdjEuMS9wcm9qZWN0JywgY29uZmlnLmhvc3RpbmcsIGNvbmZpZy5vcmdhbmlzYXRpb24sIGNvbmZpZy5wcm9qZWN0XS5qb2luKCcvJylcbiAgICAgIDogWycvYXBpL3YxLjEvcHJvamVjdCcsIGNvbmZpZy5ob3N0aW5nLCBjb25maWcub3JnYW5pc2F0aW9uLCBjb25maWcucHJvamVjdCwgJ3RyZWUnLCBjb25maWcuYnJhbmNoXS5qb2luKCcvJyk7XG4gIGNvbnNvbGUubG9nKCdHZXR0aW5nIGluZm8gYWJvdXQgbGFzdCBzdWNjZXNzZnVsIGJ1aWxkIG9mICcgKyBjb25maWcuX25hbWUgKyAnLicpO1xuICByZXF1ZXN0XG4gICAgLmdldCgnaHR0cHM6Ly9jaXJjbGVjaS5jb20nICsgYXBpUGF0aClcbiAgICAucXVlcnkoeyAnY2lyY2xlLXRva2VuJzogY29uZmlnLnRva2VuLCBmaWx0ZXI6ICdzdWNjZXNzZnVsJywgbGltaXQ6IDEwMCB9KVxuICAgIC5zZXQoJ0FjY2VwdCcsICdhcHBsaWNhdGlvbi9qc29uJylcbiAgICAudGltZW91dChjb25maWcudGltZW91dCAqIDEwMDApXG4gICAgLmVuZChjY2lCdWlsZEluZm9IYW5kbGVyKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG1vZHVsZTtcbiJdfQ==

4

dist/lib/version.js

@@ -7,3 +7,3 @@ 'use strict';

// generated code, please see package.json
exports.default = '2.4.0';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi92ZXJzaW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7a0JBQ2UsTyIsImZpbGUiOiJ2ZXJzaW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGNvZGUsIHBsZWFzZSBzZWUgcGFja2FnZS5qc29uXG5leHBvcnQgZGVmYXVsdCAnMi40LjAnO1xuIl19
exports.default = '2.5.0';
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi92ZXJzaW9uLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7a0JBQ2UsTyIsImZpbGUiOiJ2ZXJzaW9uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gZ2VuZXJhdGVkIGNvZGUsIHBsZWFzZSBzZWUgcGFja2FnZS5qc29uXG5leHBvcnQgZGVmYXVsdCAnMi41LjAnO1xuIl19
{
"name": "cci-pingu",
"version": "2.4.0",
"version": "2.5.0",
"description": "Periodically check for new builds (artifacts) on CircleCI and install them in turn",

@@ -40,10 +40,11 @@ "license": "MIT",

"eslint-config-standard": "^11.0.0",
"eslint-plugin-import": "^2.10.0",
"eslint-plugin-import": "^2.11.0",
"eslint-plugin-node": "^6.0.0",
"eslint-plugin-promise": "^3.7.0",
"eslint-plugin-standard": "^3.0.1",
"mocha": "^5.0.5"
"mocha": "^5.1.0"
},
"dependencies": {
"argv": "0.0.2",
"lodash.filter": "^4.6.0",
"lodash.orderby": "^4.6.0",

@@ -50,0 +51,0 @@ "superagent": "^3.8.2"

@@ -33,2 +33,3 @@ [![Dependency Status](https://img.shields.io/david/salsita/cci-pingu.svg)](https://david-dm.org/salsita/cci-pingu)

| ignore_branch (1) | | boolean | `false` | If set to `true`, process builds from all branches. |
| workflows_job_name | | string | | When specified, the tool only looks for successful builds created as part of worflows by job with specified name. |
| artifacts | * | array of strings | | List of artifact names that will be downloaded for successful build. Actually, it is list of artifact name *substrings* so that you can have "test" string in the `artifacts` array and it would match "test-1.2.3.tgz" artifact on CircleCI. |

@@ -49,3 +50,3 @@ | order_by | | string | `build_num` | When looking for the latest build, use this field in [response](https://circleci.com/docs/api/v1-reference/#recent-builds-project) to define the order (`stop_time` could be an interesting option for someone, too). |

Unless you also pass specific CircleCI build number, the first thing cci-pingu does is figuring out what is the latest successful CircleCI build for given project on specified branch, or any branch in case ignore_branch is set to `true`. The order in which the latest successful build is looked up is defined with the `order_by` configuration option, and it is looked up in 100 lastest builds by `build_num`.
Unless you also pass specific CircleCI build number, the first thing cci-pingu does is figuring out what is the latest successful CircleCI build for given project on specified branch, or any branch in case ignore_branch is set to `true`. The order in which the latest successful build is looked up is defined with the `order_by` configuration option, and it is looked up in 100 lastest builds by `build_num`. In case `workflows_job_name` configuration option is provided, the successful builds are filtered on this specified workflows job name, other builds are not even considered.

@@ -52,0 +53,0 @@ This number (or number passed explicitly on command line as the build number to install) is then compared with the number of the latest CircleCI build installed locally (and stored in config file under `last` key).

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc