@rpii/wdio-html-reporter
Advanced tools
Comparing version 0.5.0 to 0.5.1
@@ -76,3 +76,3 @@ "use strict"; | ||
test.failing = 0; | ||
test.events = []; | ||
test.errors = []; | ||
} | ||
@@ -155,3 +155,3 @@ | ||
let test = this.getTest(this.testUid); | ||
test.events.push({ | ||
test.errors.push({ | ||
type: 'screenshot', | ||
@@ -164,3 +164,3 @@ value: filepath | ||
const test = this.getTest(this.testUid); | ||
test.events.push({ | ||
test.errors.push({ | ||
type: 'log', | ||
@@ -258,2 +258,9 @@ value: message | ||
}); | ||
Handlebars.registerHelper('ifEventIsError', function (event, options) { | ||
if (event.type === 'Error') { | ||
return options.fn(this); | ||
} | ||
return options.inverse(this); | ||
}); | ||
Handlebars.registerHelper('ifEventIsScreenshot', function (event, options) { | ||
@@ -313,2 +320,2 @@ if (event.type === 'screenshot') { | ||
exports.default = _default; | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXBvcnRlci5qcyJdLCJuYW1lcyI6WyJldmVudHMiLCJyZXF1aXJlIiwiSGFuZGxlYmFycyIsImZzIiwiXyIsInBhdGgiLCJtb21lbnQiLCJtb21lbnREdXJhdGlvbkZvcm1hdFNldHVwIiwiUG5nIiwiUE5HIiwiSnBlZyIsIm9wZW4iLCJIdG1sUmVwb3J0ZXIiLCJXRElPUmVwb3J0ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJzdGRvdXQiLCJvdXRwdXREaXIiLCJmaWxlbmFtZSIsInJlcG9ydFRpdGxlIiwic2hvd0luQnJvd3NlciIsInVzZU9uQWZ0ZXJDb21tYW5kRm9yU2NyZWVuc2hvdCIsIm9wdGlvbnMiLCJkaXIiLCJlbnN1cmVEaXJTeW5jIiwicHJvY2VzcyIsIm9uIiwic2F2ZU1lc3NhZ2UiLCJiaW5kIiwic2F2ZVNjcmVlbnNob3QiLCJvblJ1bm5lclN0YXJ0IiwicnVubmVyIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImNpZCIsInBhc3NpbmciLCJza2lwcGVkIiwiZmFpbGluZyIsIm9uU3VpdGVTdGFydCIsInN1aXRlIiwic3VpdGVVaWQiLCJ1aWQiLCJvblRlc3RTdGFydCIsImRhdGEiLCJ0ZXN0VWlkIiwidGVzdCIsImdldFRlc3QiLCJvblRlc3RQYXNzIiwib25UZXN0U2tpcCIsIm9uVGVzdEZhaWwiLCJvblRlc3RFbmQiLCJpc1NjcmVlbnNob3RDb21tYW5kIiwiY29tbWFuZCIsImlzU2NyZWVuc2hvdEVuZHBvaW50IiwiZW5kcG9pbnQiLCJvbkFmdGVyQ29tbWFuZCIsInJlc3VsdCIsInZhbHVlIiwidGltZXN0YW1wIiwiZm9ybWF0IiwiZmlsZXBhdGgiLCJqb2luIiwib3V0cHV0RmlsZVN5bmMiLCJCdWZmZXIiLCJmcm9tIiwicHVzaCIsInR5cGUiLCJvblJ1bm5lckVuZCIsImh0bWxPdXRwdXQiLCJtZXNzYWdlIiwib2JqZWN0IiwiZm9yY2UiLCJkZWJ1ZyIsImNvbnNvbGUiLCJnZXRTdWl0ZSIsInN1aXRlcyIsImkiLCJ0ZXN0cyIsImxlbmd0aCIsInN0YXRzIiwidGVtcGxhdGVGaWxlIiwicmVhZEZpbGVTeW5jIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsInJlZ2lzdGVySGVscGVyIiwic2NyZWVuc2hvdEZpbGUiLCJzY3JlZW5zaG90UGF0aCIsImV4aXN0c1N5bmMiLCJwbmciLCJzeW5jIiwicmVhZCIsImVuY29kZSIsInRvU3RyaW5nIiwidGl0bGUiLCJmbiIsInN0YXRlIiwibnVtVGVzdHMiLCJrZXlzIiwiZmFpbCIsInZhbHVlcyIsImZpbmQiLCJwZW5kaW5nIiwicGFzc2VzIiwiZmlsdGVyIiwiZHVyYXRpb24iLCJ0cmltIiwidGVzdHNIYXNoIiwiaW52ZXJzZSIsInByb3AiLCJjaWRWYXIiLCJldmVudCIsInJlcG9ydERhdGEiLCJpbmZvIiwicGF0aEV4aXN0c1N5bmMiLCJiYXNlbmFtZSIsInJlcGxhY2UiLCJyZXBvcnRmaWxlIiwidGVtcGxhdGUiLCJjb21waWxlIiwiaHRtbCIsInRoZW4iLCJleCIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7OztBQUVBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxVQUFELENBQWxCOztBQUNBLE1BQU1HLENBQUMsR0FBR0gsT0FBTyxDQUFDLFFBQUQsQ0FBakI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSixPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNSyxNQUFNLEdBQUdMLE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1NLHlCQUF5QixHQUFHTixPQUFPLENBQUMsd0JBQUQsQ0FBekM7O0FBQ0FNLHlCQUF5QixDQUFDRCxNQUFELENBQXpCOztBQUNBLE1BQU1FLEdBQUcsR0FBR1AsT0FBTyxDQUFDLE9BQUQsQ0FBUCxDQUFpQlEsR0FB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LEVBQVU7QUFDUmhELE1BQUFBLE9BQU8sQ0FBQ2lELEtBQVIsQ0FBYyxzQ0FBc0NELEVBQXBEO0FBQ0g7QUFDSjs7QUF2UW1DOztlQTBRekJoSCxZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFdESU9SZXBvcnRlciBmcm9tICdAd2Rpby9yZXBvcnRlcidcclxuXHJcbmNvbnN0IGV2ZW50cyA9IHJlcXVpcmUoJ2V2ZW50cycpO1xyXG5jb25zdCBIYW5kbGViYXJzID0gcmVxdWlyZSgnaGFuZGxlYmFycycpO1xyXG5jb25zdCBmcyA9IHJlcXVpcmUoJ2ZzLWV4dHJhJyk7XHJcbmNvbnN0IF8gPSByZXF1aXJlKCdsb2Rhc2gnKTtcclxuY29uc3QgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuY29uc3QgbW9tZW50ID0gcmVxdWlyZSgnbW9tZW50Jyk7XHJcbmNvbnN0IG1vbWVudER1cmF0aW9uRm9ybWF0U2V0dXAgPSByZXF1aXJlKFwibW9tZW50LWR1cmF0aW9uLWZvcm1hdFwiKTtcclxubW9tZW50RHVyYXRpb25Gb3JtYXRTZXR1cChtb21lbnQpO1xyXG5jb25zdCBQbmcgPSByZXF1aXJlKFwicG5nanNcIikuUE5HO1xyXG5jb25zdCBKcGVnID0gcmVxdWlyZShcImpwZWctanNcIik7XHJcbmNvbnN0IG9wZW4gPSByZXF1aXJlKCdvcG4nKTtcclxuXHJcbmNsYXNzIEh0bWxSZXBvcnRlciBleHRlbmRzIFdESU9SZXBvcnRlciB7XHJcblxyXG4gICAgY29uc3RydWN0b3Iob3B0cykge1xyXG4gICAgICAgIG9wdHMgPSBPYmplY3QuYXNzaWduKHt9LCB7XHJcbiAgICAgICAgICAgIHN0ZG91dDogdHJ1ZSxcclxuICAgICAgICAgICAgb3V0cHV0RGlyOiAncmVwb3J0cy9odG1sLXJlcG9ydHMvJyxcclxuICAgICAgICAgICAgZmlsZW5hbWU6ICdyZXBvcnQuaHRtbCcsXHJcbiAgICAgICAgICAgIHJlcG9ydFRpdGxlOiAnVGVzdCBSZXBvcnQgVGl0bGUnLFxyXG4gICAgICAgICAgICBzaG93SW5Ccm93c2VyOiBmYWxzZSxcclxuICAgICAgICAgICAgdXNlT25BZnRlckNvbW1hbmRGb3JTY3JlZW5zaG90OiB0cnVlLFxyXG4gICAgICAgIH0sIG9wdHMpO1xyXG4gICAgICAgIHN1cGVyKG9wdHMpO1xyXG4gICAgICAgIHRoaXMub3B0aW9ucyA9IG9wdHM7XHJcbiAgICAgICAgY29uc3QgZGlyID0gdGhpcy5vcHRpb25zLm91dHB1dERpciArICdzY3JlZW5zaG90cycgO1xyXG4gICAgICAgIGZzLmVuc3VyZURpclN5bmMoZGlyKSA7XHJcblxyXG4gICAgICAgIHByb2Nlc3Mub24oJ3Rlc3Q6bG9nJywgdGhpcy5zYXZlTWVzc2FnZS5iaW5kKHRoaXMpKTtcclxuICAgICAgICBwcm9jZXNzLm9uKCd0ZXN0OnNjcmVlbnNob3QnLCB0aGlzLnNhdmVTY3JlZW5zaG90LmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uUnVubmVyU3RhcnQocnVubmVyKSB7XHJcbiAgICAgICAgdGhpcy5sb2coXCJvblJ1bm5lclN0YXJ0OiBcIiAsIEpTT04uc3RyaW5naWZ5KHJ1bm5lcikpO1xyXG4gICAgICAgIC8vdG9kbyBsb29rIGF0IGZpeCwgbm90IGFzeW5jIHNhZmUuIGJ1dCBvbmUgY2lkIHBlciByZXBvcnQgZmlsZVxyXG4gICAgICAgIHRoaXMuY2lkID0gcnVubmVyLmNpZDtcclxuICAgICAgICB0aGlzLnJ1bm5lciA9IHJ1bm5lcjtcclxuICAgICAgICB0aGlzLnJ1bm5lci5wYXNzaW5nID0gMDtcclxuICAgICAgICB0aGlzLnJ1bm5lci5za2lwcGVkID0gMDtcclxuICAgICAgICB0aGlzLnJ1bm5lci5mYWlsaW5nID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBvblN1aXRlU3RhcnQoc3VpdGUpIHtcclxuICAgICAgICB0aGlzLnN1aXRlVWlkID0gc3VpdGUudWlkIDtcclxuICAgICAgICB0aGlzLmxvZyhcIm9uU3VpdGVTdGFydDogXCIgLCBKU09OLnN0cmluZ2lmeShzdWl0ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVGVzdFN0YXJ0KGRhdGEpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIm9uVGVzdFN0YXJ0OiBcIiAsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgICB0aGlzLnRlc3RVaWQgPSBkYXRhLnVpZCA7XHJcbiAgICAgICAgbGV0IHRlc3QgPSB0aGlzLmdldFRlc3QodGhpcy50ZXN0VWlkKSA7XHJcbiAgICAgICAgdGVzdC5wYXNzaW5nID0gMDtcclxuICAgICAgICB0ZXN0LnNraXBwZWQgPSAwO1xyXG4gICAgICAgIHRlc3QuZmFpbGluZyA9IDA7XHJcbiAgICAgICAgdGVzdC5ldmVudHMgPSBbXTtcclxuICAgIH1cclxuXHJcbiAgICBvblRlc3RQYXNzKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIm9uVGVzdFBhc3M6IFwiICwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgICAgIGxldCB0ZXN0ID0gdGhpcy5nZXRUZXN0KGRhdGEudWlkKSA7XHJcbiAgICAgICAgdGVzdC5wYXNzaW5nKys7XHJcbiAgICAgICAgdGhpcy5ydW5uZXIucGFzc2luZysrO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVGVzdFNraXAoZGF0YSkge1xyXG4gICAgICAgIHRoaXMubG9nKFwib25UZXN0U2tpcDogXCIgLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgbGV0IHRlc3QgPSB0aGlzLmdldFRlc3QoZGF0YS51aWQpIDtcclxuICAgICAgICB0ZXN0LnNraXBwZWQrKztcclxuICAgICAgICB0aGlzLnJ1bm5lci5za2lwcGVkKys7XHJcbiAgICB9XHJcblxyXG4gICAgb25UZXN0RmFpbChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5sb2coXCJvblRlc3RGYWlsOiBcIiAsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgICBsZXQgdGVzdCA9IHRoaXMuZ2V0VGVzdChkYXRhLnVpZCkgO1xyXG4gICAgICAgIHRlc3QuZmFpbGluZysrO1xyXG4gICAgICAgIHRoaXMucnVubmVyLmZhaWxpbmcrKztcclxuICAgIH1cclxuXHJcbiAgICBvblRlc3RFbmQoc3VpdGUpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIm9uVGVzdEVuZDogXCIgLCBKU09OLnN0cmluZ2lmeShzdWl0ZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU2NyZWVuc2hvdENvbW1hbmQoY29tbWFuZCkge1xyXG4gICAgICAgIGNvbnN0IGlzU2NyZWVuc2hvdEVuZHBvaW50ID0gL1xcL3Nlc3Npb25cXC9bXi9dKlxcL3NjcmVlbnNob3QvXHJcbiAgICAgICAgcmV0dXJuIGlzU2NyZWVuc2hvdEVuZHBvaW50LnRlc3QoY29tbWFuZC5lbmRwb2ludClcclxuICAgIH1cclxuXHJcbiAgICAvL3RoaXMgaXMgYSBoYWNrIHRvIGdldCBhcm91bmQgbGFjayBvZiBvblNjcmVlbnNob3QgZXZlbnRcclxuICAgIG9uQWZ0ZXJDb21tYW5kKGNvbW1hbmQpIHtcclxuICAgICAgICBpZiAodGhpcy5vcHRpb25zLnVzZU9uQWZ0ZXJDb21tYW5kRm9yU2NyZWVuc2hvdCkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc1NjcmVlbnNob3RDb21tYW5kKGNvbW1hbmQpICYmIGNvbW1hbmQucmVzdWx0LnZhbHVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB0aW1lc3RhbXAgPSBtb21lbnQoKS5mb3JtYXQoJ1lZWVlNTURELUhIbW1zcy5TU1MnKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZpbGVwYXRoID0gcGF0aC5qb2luKHRoaXMub3B0aW9ucy5vdXRwdXREaXIsICcvc2NyZWVuc2hvdHMvJywgdGhpcy5jaWQsIHRpbWVzdGFtcCwgdGhpcy5vcHRpb25zLmZpbGVuYW1lICsgJy5wbmcnKTtcclxuICAgICAgICAgICAgICAgIGZzLm91dHB1dEZpbGVTeW5jKGZpbGVwYXRoLCBCdWZmZXIuZnJvbShjb21tYW5kLnJlc3VsdC52YWx1ZSwgJ2Jhc2U2NCcpKTtcclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgdGVzdCA9IHRoaXMuZ2V0VGVzdCh0aGlzLnRlc3RVaWQpO1xyXG4gICAgICAgICAgICAgICAgdGVzdC5ldmVudHMucHVzaCh7dHlwZTogJ3NjcmVlbnNob3QnLCB2YWx1ZTogZmlsZXBhdGh9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvblJ1bm5lckVuZChydW5uZXIpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIm9uUnVubmVyRW5kOiBcIiAsIEpTT04uc3RyaW5naWZ5KHJ1bm5lcikpO1xyXG4gICAgICAgIHRoaXMuaHRtbE91dHB1dChydW5uZXIpO1xyXG4gICAgfVxyXG5cclxuICAgIGxvZyhtZXNzYWdlLG9iamVjdCxmb3JjZSkge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcgfHwgZm9yY2UpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2cobWVzc2FnZSArIG9iamVjdCkgO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGdldFN1aXRlKHVpZCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnN1aXRlc1t1aWRdO1xyXG4gICAgfVxyXG5cclxuICAgIGdldFRlc3QodWlkKSB7XHJcbiAgICAgICAgbGV0IHN1aXRlID0gdGhpcy5nZXRTdWl0ZSh0aGlzLnN1aXRlVWlkKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMCA7IGkgPCBzdWl0ZS50ZXN0cy5sZW5ndGggOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHVpZCA9PT0gc3VpdGUudGVzdHNbaV0udWlkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gc3VpdGUudGVzdHNbaV0gO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG5cclxuICAgIHNhdmVTY3JlZW5zaG90KGZpbGVwYXRoKSB7XHJcbiAgICAgICAgbGV0IHRlc3QgPSB0aGlzLmdldFRlc3QodGhpcy50ZXN0VWlkKSA7XHJcbiAgICAgICAgdGVzdC5ldmVudHMucHVzaCh7dHlwZTogJ3NjcmVlbnNob3QnLCB2YWx1ZTogZmlsZXBhdGh9KSA7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZU1lc3NhZ2UobWVzc2FnZSkge1xyXG4gICAgICAgIGNvbnN0IHRlc3QgPSB0aGlzLmdldFRlc3QodGhpcy50ZXN0VWlkKTtcclxuICAgICAgICB0ZXN0LmV2ZW50cy5wdXNoKHt0eXBlOiAnbG9nJywgdmFsdWU6IG1lc3NhZ2V9KSA7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIGh0bWxPdXRwdXQoc3RhdHMpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBsZXQgdGVtcGxhdGVGaWxlID0gZnMucmVhZEZpbGVTeW5jKHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLi9zcmMvd2Rpby1odG1sLXJlcG9ydGVyLXRlbXBsYXRlLmhicycpLCAndXRmOCcpO1xyXG5cclxuICAgICAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcignaW1hZ2VBc0Jhc2U2NCcsIGZ1bmN0aW9uIChzY3JlZW5zaG90RmlsZSwgc2NyZWVuc2hvdFBhdGgsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIC8vIG9jY3VycyB3aGVuIHRoZXJlIGlzIGFuIGVycm9yIGZpbGVcclxuICAgICAgICAgICAgICAgIGlmICghZnMuZXhpc3RzU3luYyhzY3JlZW5zaG90RmlsZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICBzY3JlZW5zaG90RmlsZSA9IGAke3NjcmVlbnNob3RQYXRofS8ke3NjcmVlbnNob3RGaWxlfWBcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGxldCBwbmcgPSBuZXcgUG5nLnN5bmMucmVhZChmcy5yZWFkRmlsZVN5bmMocGF0aC5yZXNvbHZlKGAke3NjcmVlbnNob3RGaWxlfWApKSlcclxuICAgICAgICAgICAgICAgIHJldHVybiBgZGF0YTppbWFnZS9qcGVnO2Jhc2U2NCwke0pwZWcuZW5jb2RlKHBuZywgNTApLmRhdGEudG9TdHJpbmcoJ2Jhc2U2NCcpfWBcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdpc1ZhbGlkU3VpdGUnLCBmdW5jdGlvbiAoc3VpdGUsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzdWl0ZS50aXRsZS5sZW5ndGggPiAwICYmIHN1aXRlLnR5cGUgPT09ICdzdWl0ZScpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mbih0aGlzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCd0ZXN0U3RhdGVDb2xvdXInLCBmdW5jdGlvbiAoc3RhdGUsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChzdGF0ZSA9PT0gJ3Bhc3NlZCcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3Rlc3QtcGFzcyc7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSAnZmFpbGVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndGVzdC1mYWlsJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09ICdwZW5kaW5nJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndGVzdC1wZW5kaW5nJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09ICdza2lwcGVkJykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuICd0ZXN0LXNraXBwZWQnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcigndGVzdFN0YXRlSWNvbicsIGZ1bmN0aW9uIChzdGF0ZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlID09PSAncGFzc2VkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9XCJzdWNjZXNzXCI+JiMxMDAwNDs8L3NwYW4+JyA7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSAnZmFpbGVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9XCJlcnJvclwiPiYjMTAwMDY7PC9zcGFuPicgO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gJ3BlbmRpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cInBlbmRpbmdcIj4mIzEwMDA0Ozwvc3Bhbj4nIDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09ICdza2lwcGVkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnPHNwYW4gY2xhc3M9XCJza2lwcGVkXCI+JiMxMDAzNDs8L3NwYW4+JyA7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcignc3VpdGVTdGF0ZUNvbG91cicsIGZ1bmN0aW9uICh0ZXN0cywgb3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgbGV0IG51bVRlc3RzID0gT2JqZWN0LmtleXModGVzdHMpLmxlbmd0aFxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBmYWlsID0gXy52YWx1ZXModGVzdHMpLmZpbmQoKHRlc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdC5zdGF0ZSA9PT0gJ2ZhaWwnXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgaWYgKGZhaWwgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnc3VpdGUtZmFpbCdcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgcGVuZGluZyA9IF8udmFsdWVzKHRlc3RzKS5maW5kKCh0ZXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRlc3Quc3RhdGUgPT09ICdwZW5kaW5nJ1xyXG4gICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgIGlmIChwZW5kaW5nICE9IG51bGwpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3N1aXRlLXBlbmRpbmcnXHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IHBhc3NlcyA9IF8udmFsdWVzKHRlc3RzKS5maWx0ZXIoKHRlc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdC5zdGF0ZSA9PT0gJ3Bhc3MnXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgaWYgKHBhc3Nlcy5sZW5ndGggPT09IG51bVRlc3RzICYmIG51bVRlc3RzID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnc3VpdGUtcGFzcydcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiAnc3VpdGUtdW5rbm93bidcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdodW1hbml6ZUR1cmF0aW9uJywgZnVuY3Rpb24gKGR1cmF0aW9uLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbW9tZW50LmR1cmF0aW9uKGR1cmF0aW9uLCBcIm1pbGxpc2Vjb25kc1wiKS5mb3JtYXQoJ2hoOm1tOnNzLlNTJywge3RyaW06IGZhbHNlfSlcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdpZlN1aXRlSGFzVGVzdHMnLCBmdW5jdGlvbiAodGVzdHNIYXNoLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LmtleXModGVzdHNIYXNoKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcylcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuXHJcbiAgICAgICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2FjY2Vzc0NpZCcsIGZ1bmN0aW9uIChyZXN1bHQsIGNpZCwgcHJvcCkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGNpZFZhciA9IHJlc3VsdFtjaWRdO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNpZFZhcltwcm9wXTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdhY2Nlc3MnLCBmdW5jdGlvbiAoY2lkKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2lkO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2lmRXZlbnRJc1NjcmVlbnNob3QnLCBmdW5jdGlvbiAoZXZlbnQsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSAnc2NyZWVuc2hvdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mbih0aGlzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcignaWZFdmVudElzTG9nTWVzc2FnZScsIGZ1bmN0aW9uIChldmVudCwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdsb2cnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgICAgICBjb25zdCByZXBvcnREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgaW5mbzogc3RhdHMsXHJcbiAgICAgICAgICAgICAgICBzdWl0ZXM6IHRoaXMuc3VpdGVzLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMub3B0aW9ucy5yZXBvcnRUaXRsZVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKHRydWUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyh0aGlzLm9wdGlvbnMub3V0cHV0RGlyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBiYXNlbmFtZSA9IHRoaXMub3B0aW9ucy5maWxlbmFtZS5yZXBsYWNlKCcuaHRtbCcgLCAnLmpzb24nKSA7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlcG9ydGZpbGUgPSBwYXRoLmpvaW4odGhpcy5vcHRpb25zLm91dHB1dERpciwgdGhpcy5jaWQsIGJhc2VuYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBmcy5vdXRwdXRGaWxlU3luYyhyZXBvcnRmaWxlLCBKU09OLnN0cmluZ2lmeShyZXBvcnREYXRhKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCB0ZW1wbGF0ZSA9IEhhbmRsZWJhcnMuY29tcGlsZSh0ZW1wbGF0ZUZpbGUpXHJcbiAgICAgICAgICAgIGxldCBodG1sID0gdGVtcGxhdGUocmVwb3J0RGF0YSk7XHJcblxyXG4gICAgICAgICAgICBsZXQgcmVwb3J0ZmlsZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5vdXRwdXREaXIpIHtcclxuICAgICAgICAgICAgICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyh0aGlzLm9wdGlvbnMub3V0cHV0RGlyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydGZpbGUgPSBwYXRoLmpvaW4odGhpcy5vcHRpb25zLm91dHB1dERpciwgdGhpcy5jaWQsdGhpcy5vcHRpb25zLmZpbGVuYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBmcy5vdXRwdXRGaWxlU3luYyhyZXBvcnRmaWxlLCBodG1sKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dJbkJyb3dzZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbihyZXBvcnRmaWxlKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJsYXVuY2hlZCBicm93c2VyIHdpdGggXCIgKyByZXBvcnRmaWxlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFZpZXcgSFRNTCBSZXBvcnQgYXQ6ICR7cmVwb3J0ZmlsZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2goZXgpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcHJvY2Vzc2luZyByZXBvcnQgdGVtcGxhdGU6JyArIGV4KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEh0bWxSZXBvcnRlcjtcclxuIl19 | ||
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9yZXBvcnRlci5qcyJdLCJuYW1lcyI6WyJldmVudHMiLCJyZXF1aXJlIiwiSGFuZGxlYmFycyIsImZzIiwiXyIsInBhdGgiLCJtb21lbnQiLCJtb21lbnREdXJhdGlvbkZvcm1hdFNldHVwIiwiUG5nIiwiUE5HIiwiSnBlZyIsIm9wZW4iLCJIdG1sUmVwb3J0ZXIiLCJXRElPUmVwb3J0ZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJPYmplY3QiLCJhc3NpZ24iLCJzdGRvdXQiLCJvdXRwdXREaXIiLCJmaWxlbmFtZSIsInJlcG9ydFRpdGxlIiwic2hvd0luQnJvd3NlciIsInVzZU9uQWZ0ZXJDb21tYW5kRm9yU2NyZWVuc2hvdCIsIm9wdGlvbnMiLCJkaXIiLCJlbnN1cmVEaXJTeW5jIiwicHJvY2VzcyIsIm9uIiwic2F2ZU1lc3NhZ2UiLCJiaW5kIiwic2F2ZVNjcmVlbnNob3QiLCJvblJ1bm5lclN0YXJ0IiwicnVubmVyIiwibG9nIiwiSlNPTiIsInN0cmluZ2lmeSIsImNpZCIsInBhc3NpbmciLCJza2lwcGVkIiwiZmFpbGluZyIsIm9uU3VpdGVTdGFydCIsInN1aXRlIiwic3VpdGVVaWQiLCJ1aWQiLCJvblRlc3RTdGFydCIsImRhdGEiLCJ0ZXN0VWlkIiwidGVzdCIsImdldFRlc3QiLCJlcnJvcnMiLCJvblRlc3RQYXNzIiwib25UZXN0U2tpcCIsIm9uVGVzdEZhaWwiLCJvblRlc3RFbmQiLCJpc1NjcmVlbnNob3RDb21tYW5kIiwiY29tbWFuZCIsImlzU2NyZWVuc2hvdEVuZHBvaW50IiwiZW5kcG9pbnQiLCJvbkFmdGVyQ29tbWFuZCIsInJlc3VsdCIsInZhbHVlIiwidGltZXN0YW1wIiwiZm9ybWF0IiwiZmlsZXBhdGgiLCJqb2luIiwib3V0cHV0RmlsZVN5bmMiLCJCdWZmZXIiLCJmcm9tIiwicHVzaCIsInR5cGUiLCJvblJ1bm5lckVuZCIsImh0bWxPdXRwdXQiLCJtZXNzYWdlIiwib2JqZWN0IiwiZm9yY2UiLCJkZWJ1ZyIsImNvbnNvbGUiLCJnZXRTdWl0ZSIsInN1aXRlcyIsImkiLCJ0ZXN0cyIsImxlbmd0aCIsInN0YXRzIiwidGVtcGxhdGVGaWxlIiwicmVhZEZpbGVTeW5jIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsInJlZ2lzdGVySGVscGVyIiwic2NyZWVuc2hvdEZpbGUiLCJzY3JlZW5zaG90UGF0aCIsImV4aXN0c1N5bmMiLCJwbmciLCJzeW5jIiwicmVhZCIsImVuY29kZSIsInRvU3RyaW5nIiwidGl0bGUiLCJmbiIsInN0YXRlIiwibnVtVGVzdHMiLCJrZXlzIiwiZmFpbCIsInZhbHVlcyIsImZpbmQiLCJwZW5kaW5nIiwicGFzc2VzIiwiZmlsdGVyIiwiZHVyYXRpb24iLCJ0cmltIiwidGVzdHNIYXNoIiwiaW52ZXJzZSIsInByb3AiLCJjaWRWYXIiLCJldmVudCIsInJlcG9ydERhdGEiLCJpbmZvIiwicGF0aEV4aXN0c1N5bmMiLCJiYXNlbmFtZSIsInJlcGxhY2UiLCJyZXBvcnRmaWxlIiwidGVtcGxhdGUiLCJjb21waWxlIiwiaHRtbCIsInRoZW4iLCJleCIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7OztBQUVBLE1BQU1BLE1BQU0sR0FBR0MsT0FBTyxDQUFDLFFBQUQsQ0FBdEI7O0FBQ0EsTUFBTUMsVUFBVSxHQUFHRCxPQUFPLENBQUMsWUFBRCxDQUExQjs7QUFDQSxNQUFNRSxFQUFFLEdBQUdGLE9BQU8sQ0FBQyxVQUFELENBQWxCOztBQUNBLE1BQU1HLENBQUMsR0FBR0gsT0FBTyxDQUFDLFFBQUQsQ0FBakI7O0FBQ0EsTUFBTUksSUFBSSxHQUFHSixPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFDQSxNQUFNSyxNQUFNLEdBQUdMLE9BQU8sQ0FBQyxRQUFELENBQXRCOztBQUNBLE1BQU1NLHlCQUF5QixHQUFHTixPQUFPLENBQUMsd0JBQUQsQ0FBekM7O0FBQ0FNLHlCQUF5QixDQUFDRCxNQUFELENBQXpCOztBQUNBLE1BQU1FLEdBQUcsR0FBR1AsT0FBTyxDQUFDLE9BQUQsQ0FBUCxD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QUksS0FBS25HLE9BQUwsQ0FBYUYsYUFBakIsRUFBZ0M7QUFDNUJYLFlBQUFBLElBQUksQ0FBQzZHLFVBQUQsQ0FBSixDQUFpQkksSUFBakIsQ0FDSS9DLE9BQU8sQ0FBQzNDLEdBQVIsQ0FBWSwyQkFBMkJzRixVQUF2QyxDQURKO0FBRUg7QUFDSjtBQUNKLE9BVEQsTUFTTztBQUNIM0MsUUFBQUEsT0FBTyxDQUFDM0MsR0FBUixDQUFhLHdCQUF1QnNGLFVBQVcsRUFBL0M7QUFDSDtBQUNKLEtBOUlELENBOElFLE9BQU1LLEVBQU4sRUFBVTtBQUNSaEQsTUFBQUEsT0FBTyxDQUFDaUQsS0FBUixDQUFjLHNDQUFzQ0QsRUFBcEQ7QUFDSDtBQUNKOztBQTlRbUM7O2VBaVJ6QmpILFkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgV0RJT1JlcG9ydGVyIGZyb20gJ0B3ZGlvL3JlcG9ydGVyJ1xyXG5cclxuY29uc3QgZXZlbnRzID0gcmVxdWlyZSgnZXZlbnRzJyk7XHJcbmNvbnN0IEhhbmRsZWJhcnMgPSByZXF1aXJlKCdoYW5kbGViYXJzJyk7XHJcbmNvbnN0IGZzID0gcmVxdWlyZSgnZnMtZXh0cmEnKTtcclxuY29uc3QgXyA9IHJlcXVpcmUoJ2xvZGFzaCcpO1xyXG5jb25zdCBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5jb25zdCBtb21lbnQgPSByZXF1aXJlKCdtb21lbnQnKTtcclxuY29uc3QgbW9tZW50RHVyYXRpb25Gb3JtYXRTZXR1cCA9IHJlcXVpcmUoXCJtb21lbnQtZHVyYXRpb24tZm9ybWF0XCIpO1xyXG5tb21lbnREdXJhdGlvbkZvcm1hdFNldHVwKG1vbWVudCk7XHJcbmNvbnN0IFBuZyA9IHJlcXVpcmUoXCJwbmdqc1wiKS5QTkc7XHJcbmNvbnN0IEpwZWcgPSByZXF1aXJlKFwianBlZy1qc1wiKTtcclxuY29uc3Qgb3BlbiA9IHJlcXVpcmUoJ29wbicpO1xyXG5cclxuY2xhc3MgSHRtbFJlcG9ydGVyIGV4dGVuZHMgV0RJT1JlcG9ydGVyIHtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcihvcHRzKSB7XHJcbiAgICAgICAgb3B0cyA9IE9iamVjdC5hc3NpZ24oe30sIHtcclxuICAgICAgICAgICAgc3Rkb3V0OiB0cnVlLFxyXG4gICAgICAgICAgICBvdXRwdXREaXI6ICdyZXBvcnRzL2h0bWwtcmVwb3J0cy8nLFxyXG4gICAgICAgICAgICBmaWxlbmFtZTogJ3JlcG9ydC5odG1sJyxcclxuICAgICAgICAgICAgcmVwb3J0VGl0bGU6ICdUZXN0IFJlcG9ydCBUaXRsZScsXHJcbiAgICAgICAgICAgIHNob3dJbkJyb3dzZXI6IGZhbHNlLFxyXG4gICAgICAgICAgICB1c2VPbkFmdGVyQ29tbWFuZEZvclNjcmVlbnNob3Q6IHRydWUsXHJcbiAgICAgICAgfSwgb3B0cyk7XHJcbiAgICAgICAgc3VwZXIob3B0cyk7XHJcbiAgICAgICAgdGhpcy5vcHRpb25zID0gb3B0cztcclxuICAgICAgICBjb25zdCBkaXIgPSB0aGlzLm9wdGlvbnMub3V0cHV0RGlyICsgJ3NjcmVlbnNob3RzJyA7XHJcbiAgICAgICAgZnMuZW5zdXJlRGlyU3luYyhkaXIpIDtcclxuXHJcbiAgICAgICAgcHJvY2Vzcy5vbigndGVzdDpsb2cnLCB0aGlzLnNhdmVNZXNzYWdlLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHByb2Nlc3Mub24oJ3Rlc3Q6c2NyZWVuc2hvdCcsIHRoaXMuc2F2ZVNjcmVlbnNob3QuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25SdW5uZXJTdGFydChydW5uZXIpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIm9uUnVubmVyU3RhcnQ6IFwiICwgSlNPTi5zdHJpbmdpZnkocnVubmVyKSk7XHJcbiAgICAgICAgLy90b2RvIGxvb2sgYXQgZml4LCBub3QgYXN5bmMgc2FmZS4gYnV0IG9uZSBjaWQgcGVyIHJlcG9ydCBmaWxlXHJcbiAgICAgICAgdGhpcy5jaWQgPSBydW5uZXIuY2lkO1xyXG4gICAgICAgIHRoaXMucnVubmVyID0gcnVubmVyO1xyXG4gICAgICAgIHRoaXMucnVubmVyLnBhc3NpbmcgPSAwO1xyXG4gICAgICAgIHRoaXMucnVubmVyLnNraXBwZWQgPSAwO1xyXG4gICAgICAgIHRoaXMucnVubmVyLmZhaWxpbmcgPSAwO1xyXG4gICAgfVxyXG5cclxuICAgIG9uU3VpdGVTdGFydChzdWl0ZSkge1xyXG4gICAgICAgIHRoaXMuc3VpdGVVaWQgPSBzdWl0ZS51aWQgO1xyXG4gICAgICAgIHRoaXMubG9nKFwib25TdWl0ZVN0YXJ0OiBcIiAsIEpTT04uc3RyaW5naWZ5KHN1aXRlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25UZXN0U3RhcnQoZGF0YSkge1xyXG4gICAgICAgIHRoaXMubG9nKFwib25UZXN0U3RhcnQ6IFwiICwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgICAgIHRoaXMudGVzdFVpZCA9IGRhdGEudWlkIDtcclxuICAgICAgICBsZXQgdGVzdCA9IHRoaXMuZ2V0VGVzdCh0aGlzLnRlc3RVaWQpIDtcclxuICAgICAgICB0ZXN0LnBhc3NpbmcgPSAwO1xyXG4gICAgICAgIHRlc3Quc2tpcHBlZCA9IDA7XHJcbiAgICAgICAgdGVzdC5mYWlsaW5nID0gMDtcclxuICAgICAgICB0ZXN0LmVycm9ycyA9IFtdO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVGVzdFBhc3MoZGF0YSkge1xyXG4gICAgICAgIHRoaXMubG9nKFwib25UZXN0UGFzczogXCIgLCBKU09OLnN0cmluZ2lmeShkYXRhKSk7XHJcbiAgICAgICAgbGV0IHRlc3QgPSB0aGlzLmdldFRlc3QoZGF0YS51aWQpIDtcclxuICAgICAgICB0ZXN0LnBhc3NpbmcrKztcclxuICAgICAgICB0aGlzLnJ1bm5lci5wYXNzaW5nKys7XHJcbiAgICB9XHJcblxyXG4gICAgb25UZXN0U2tpcChkYXRhKSB7XHJcbiAgICAgICAgdGhpcy5sb2coXCJvblRlc3RTa2lwOiBcIiAsIEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgICAgICBsZXQgdGVzdCA9IHRoaXMuZ2V0VGVzdChkYXRhLnVpZCkgO1xyXG4gICAgICAgIHRlc3Quc2tpcHBlZCsrO1xyXG4gICAgICAgIHRoaXMucnVubmVyLnNraXBwZWQrKztcclxuICAgIH1cclxuXHJcbiAgICBvblRlc3RGYWlsKGRhdGEpIHtcclxuICAgICAgICB0aGlzLmxvZyhcIm9uVGVzdEZhaWw6IFwiICwgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgICAgIGxldCB0ZXN0ID0gdGhpcy5nZXRUZXN0KGRhdGEudWlkKSA7XHJcbiAgICAgICAgdGVzdC5mYWlsaW5nKys7XHJcbiAgICAgICAgdGhpcy5ydW5uZXIuZmFpbGluZysrO1xyXG4gICAgfVxyXG5cclxuICAgIG9uVGVzdEVuZChzdWl0ZSkge1xyXG4gICAgICAgIHRoaXMubG9nKFwib25UZXN0RW5kOiBcIiAsIEpTT04uc3RyaW5naWZ5KHN1aXRlKSk7XHJcbiAgICB9XHJcblxyXG4gICAgaXNTY3JlZW5zaG90Q29tbWFuZChjb21tYW5kKSB7XHJcbiAgICAgICAgY29uc3QgaXNTY3JlZW5zaG90RW5kcG9pbnQgPSAvXFwvc2Vzc2lvblxcL1teL10qXFwvc2NyZWVuc2hvdC9cclxuICAgICAgICByZXR1cm4gaXNTY3JlZW5zaG90RW5kcG9pbnQudGVzdChjb21tYW5kLmVuZHBvaW50KVxyXG4gICAgfVxyXG5cclxuICAgIC8vdGhpcyBpcyBhIGhhY2sgdG8gZ2V0IGFyb3VuZCBsYWNrIG9mIG9uU2NyZWVuc2hvdCBldmVudFxyXG4gICAgb25BZnRlckNvbW1hbmQoY29tbWFuZCkge1xyXG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnMudXNlT25BZnRlckNvbW1hbmRGb3JTY3JlZW5zaG90KSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzU2NyZWVuc2hvdENvbW1hbmQoY29tbWFuZCkgJiYgY29tbWFuZC5yZXN1bHQudmFsdWUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRpbWVzdGFtcCA9IG1vbWVudCgpLmZvcm1hdCgnWVlZWU1NREQtSEhtbXNzLlNTUycpO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgZmlsZXBhdGggPSBwYXRoLmpvaW4odGhpcy5vcHRpb25zLm91dHB1dERpciwgJy9zY3JlZW5zaG90cy8nLCB0aGlzLmNpZCwgdGltZXN0YW1wLCB0aGlzLm9wdGlvbnMuZmlsZW5hbWUgKyAnLnBuZycpO1xyXG4gICAgICAgICAgICAgICAgZnMub3V0cHV0RmlsZVN5bmMoZmlsZXBhdGgsIEJ1ZmZlci5mcm9tKGNvbW1hbmQucmVzdWx0LnZhbHVlLCAnYmFzZTY0JykpO1xyXG5cclxuICAgICAgICAgICAgICAgIGxldCB0ZXN0ID0gdGhpcy5nZXRUZXN0KHRoaXMudGVzdFVpZCk7XHJcbiAgICAgICAgICAgICAgICB0ZXN0LmV2ZW50cy5wdXNoKHt0eXBlOiAnc2NyZWVuc2hvdCcsIHZhbHVlOiBmaWxlcGF0aH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uUnVubmVyRW5kKHJ1bm5lcikge1xyXG4gICAgICAgIHRoaXMubG9nKFwib25SdW5uZXJFbmQ6IFwiICwgSlNPTi5zdHJpbmdpZnkocnVubmVyKSk7XHJcbiAgICAgICAgdGhpcy5odG1sT3V0cHV0KHJ1bm5lcik7XHJcbiAgICB9XHJcblxyXG4gICAgbG9nKG1lc3NhZ2Usb2JqZWN0LGZvcmNlKSB7XHJcbiAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1ZyB8fCBmb3JjZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhtZXNzYWdlICsgb2JqZWN0KSA7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZ2V0U3VpdGUodWlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuc3VpdGVzW3VpZF07XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0VGVzdCh1aWQpIHtcclxuICAgICAgICBsZXQgc3VpdGUgPSB0aGlzLmdldFN1aXRlKHRoaXMuc3VpdGVVaWQpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwIDsgaSA8IHN1aXRlLnRlc3RzLmxlbmd0aCA7IGkrKykge1xyXG4gICAgICAgICAgICBpZiAodWlkID09PSBzdWl0ZS50ZXN0c1tpXS51aWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBzdWl0ZS50ZXN0c1tpXSA7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgc2F2ZVNjcmVlbnNob3QoZmlsZXBhdGgpIHtcclxuICAgICAgICBsZXQgdGVzdCA9IHRoaXMuZ2V0VGVzdCh0aGlzLnRlc3RVaWQpIDtcclxuICAgICAgICB0ZXN0LmVycm9ycy5wdXNoKHt0eXBlOiAnc2NyZWVuc2hvdCcsIHZhbHVlOiBmaWxlcGF0aH0pIDtcclxuICAgIH1cclxuXHJcbiAgICBzYXZlTWVzc2FnZShtZXNzYWdlKSB7XHJcbiAgICAgICAgY29uc3QgdGVzdCA9IHRoaXMuZ2V0VGVzdCh0aGlzLnRlc3RVaWQpO1xyXG4gICAgICAgIHRlc3QuZXJyb3JzLnB1c2goe3R5cGU6ICdsb2cnLCB2YWx1ZTogbWVzc2FnZX0pIDtcclxuICAgIH1cclxuXHJcblxyXG4gICAgaHRtbE91dHB1dChzdGF0cykge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxldCB0ZW1wbGF0ZUZpbGUgPSBmcy5yZWFkRmlsZVN5bmMocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uL3NyYy93ZGlvLWh0bWwtcmVwb3J0ZXItdGVtcGxhdGUuaGJzJyksICd1dGY4Jyk7XHJcblxyXG4gICAgICAgICAgICBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdpbWFnZUFzQmFzZTY0JywgZnVuY3Rpb24gKHNjcmVlbnNob3RGaWxlLCBzY3JlZW5zaG90UGF0aCwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgLy8gb2NjdXJzIHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IgZmlsZVxyXG4gICAgICAgICAgICAgICAgaWYgKCFmcy5leGlzdHNTeW5jKHNjcmVlbnNob3RGaWxlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHNjcmVlbnNob3RGaWxlID0gYCR7c2NyZWVuc2hvdFBhdGh9LyR7c2NyZWVuc2hvdEZpbGV9YFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IHBuZyA9IG5ldyBQbmcuc3luYy5yZWFkKGZzLnJlYWRGaWxlU3luYyhwYXRoLnJlc29sdmUoYCR7c2NyZWVuc2hvdEZpbGV9YCkpKVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGBkYXRhOmltYWdlL2pwZWc7YmFzZTY0LCR7SnBlZy5lbmNvZGUocG5nLCA1MCkuZGF0YS50b1N0cmluZygnYmFzZTY0Jyl9YFxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2lzVmFsaWRTdWl0ZScsIGZ1bmN0aW9uIChzdWl0ZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHN1aXRlLnRpdGxlLmxlbmd0aCA+IDAgJiYgc3VpdGUudHlwZSA9PT0gJ3N1aXRlJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmZuKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ3Rlc3RTdGF0ZUNvbG91cicsIGZ1bmN0aW9uIChzdGF0ZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHN0YXRlID09PSAncGFzc2VkJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAndGVzdC1wYXNzJztcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09ICdmYWlsZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0ZXN0LWZhaWwnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gJ3BlbmRpbmcnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICd0ZXN0LXBlbmRpbmcnO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gJ3NraXBwZWQnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gJ3Rlc3Qtc2tpcHBlZCc7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCd0ZXN0U3RhdGVJY29uJywgZnVuY3Rpb24gKHN0YXRlLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoc3RhdGUgPT09ICdwYXNzZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cInN1Y2Nlc3NcIj4mIzEwMDA0Ozwvc3Bhbj4nIDtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RhdGUgPT09ICdmYWlsZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cImVycm9yXCI+JiMxMDAwNjs8L3NwYW4+JyA7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09PSAncGVuZGluZycpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gJzxzcGFuIGNsYXNzPVwicGVuZGluZ1wiPiYjMTAwMDQ7PC9zcGFuPicgO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0ZSA9PT0gJ3NraXBwZWQnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICc8c3BhbiBjbGFzcz1cInNraXBwZWRcIj4mIzEwMDM0Ozwvc3Bhbj4nIDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICBIYW5kbGViYXJzLnJlZ2lzdGVySGVscGVyKCdzdWl0ZVN0YXRlQ29sb3VyJywgZnVuY3Rpb24gKHRlc3RzLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgbnVtVGVzdHMgPSBPYmplY3Qua2V5cyh0ZXN0cykubGVuZ3RoXHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGZhaWwgPSBfLnZhbHVlcyh0ZXN0cykuZmluZCgodGVzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0LnN0YXRlID09PSAnZmFpbCdcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBpZiAoZmFpbCAhPSBudWxsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdzdWl0ZS1mYWlsJ1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBwZW5kaW5nID0gXy52YWx1ZXModGVzdHMpLmZpbmQoKHRlc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGVzdC5zdGF0ZSA9PT0gJ3BlbmRpbmcnXHJcbiAgICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAgICAgaWYgKHBlbmRpbmcgIT0gbnVsbCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAnc3VpdGUtcGVuZGluZydcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBsZXQgcGFzc2VzID0gXy52YWx1ZXModGVzdHMpLmZpbHRlcigodGVzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB0ZXN0LnN0YXRlID09PSAncGFzcydcclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICBpZiAocGFzc2VzLmxlbmd0aCA9PT0gbnVtVGVzdHMgJiYgbnVtVGVzdHMgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICdzdWl0ZS1wYXNzJ1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuICdzdWl0ZS11bmtub3duJ1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2h1bWFuaXplRHVyYXRpb24nLCBmdW5jdGlvbiAoZHVyYXRpb24sIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBtb21lbnQuZHVyYXRpb24oZHVyYXRpb24sIFwibWlsbGlzZWNvbmRzXCIpLmZvcm1hdCgnaGg6bW06c3MuU1MnLCB7dHJpbTogZmFsc2V9KVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2lmU3VpdGVIYXNUZXN0cycsIGZ1bmN0aW9uICh0ZXN0c0hhc2gsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChPYmplY3Qua2V5cyh0ZXN0c0hhc2gpLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mbih0aGlzKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuaW52ZXJzZSh0aGlzKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuICAgICAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcignYWNjZXNzQ2lkJywgZnVuY3Rpb24gKHJlc3VsdCwgY2lkLCBwcm9wKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2lkVmFyID0gcmVzdWx0W2NpZF07XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gY2lkVmFyW3Byb3BdO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2FjY2VzcycsIGZ1bmN0aW9uIChjaWQpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBjaWQ7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcignaWZFdmVudElzRXJyb3InLCBmdW5jdGlvbiAoZXZlbnQsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSAnRXJyb3InKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIEhhbmRsZWJhcnMucmVnaXN0ZXJIZWxwZXIoJ2lmRXZlbnRJc1NjcmVlbnNob3QnLCBmdW5jdGlvbiAoZXZlbnQsIG9wdGlvbnMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChldmVudC50eXBlID09PSAnc2NyZWVuc2hvdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5mbih0aGlzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJldHVybiBvcHRpb25zLmludmVyc2UodGhpcyk7XHJcbiAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgSGFuZGxlYmFycy5yZWdpc3RlckhlbHBlcignaWZFdmVudElzTG9nTWVzc2FnZScsIGZ1bmN0aW9uIChldmVudCwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnR5cGUgPT09ICdsb2cnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9wdGlvbnMuZm4odGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9ucy5pbnZlcnNlKHRoaXMpO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcblxyXG4gICAgICAgICAgICBjb25zdCByZXBvcnREYXRhID0ge1xyXG4gICAgICAgICAgICAgICAgaW5mbzogc3RhdHMsXHJcbiAgICAgICAgICAgICAgICBzdWl0ZXM6IHRoaXMuc3VpdGVzLFxyXG4gICAgICAgICAgICAgICAgdGl0bGU6IHRoaXMub3B0aW9ucy5yZXBvcnRUaXRsZVxyXG4gICAgICAgICAgICB9O1xyXG5cclxuICAgICAgICAgICAgaWYgKHRydWUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlmICh0aGlzLm9wdGlvbnMuZGVidWcpIHtcclxuICAgICAgICAgICAgICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyh0aGlzLm9wdGlvbnMub3V0cHV0RGlyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBiYXNlbmFtZSA9IHRoaXMub3B0aW9ucy5maWxlbmFtZS5yZXBsYWNlKCcuaHRtbCcgLCAnLmpzb24nKSA7XHJcbiAgICAgICAgICAgICAgICAgICAgbGV0IHJlcG9ydGZpbGUgPSBwYXRoLmpvaW4odGhpcy5vcHRpb25zLm91dHB1dERpciwgdGhpcy5jaWQsIGJhc2VuYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBmcy5vdXRwdXRGaWxlU3luYyhyZXBvcnRmaWxlLCBKU09OLnN0cmluZ2lmeShyZXBvcnREYXRhKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGxldCB0ZW1wbGF0ZSA9IEhhbmRsZWJhcnMuY29tcGlsZSh0ZW1wbGF0ZUZpbGUpXHJcbiAgICAgICAgICAgIGxldCBodG1sID0gdGVtcGxhdGUocmVwb3J0RGF0YSk7XHJcblxyXG4gICAgICAgICAgICBsZXQgcmVwb3J0ZmlsZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMub3B0aW9ucy5vdXRwdXREaXIpIHtcclxuICAgICAgICAgICAgICAgIGlmIChmcy5wYXRoRXhpc3RzU3luYyh0aGlzLm9wdGlvbnMub3V0cHV0RGlyKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcG9ydGZpbGUgPSBwYXRoLmpvaW4odGhpcy5vcHRpb25zLm91dHB1dERpciwgdGhpcy5jaWQsdGhpcy5vcHRpb25zLmZpbGVuYW1lKTtcclxuICAgICAgICAgICAgICAgICAgICBmcy5vdXRwdXRGaWxlU3luYyhyZXBvcnRmaWxlLCBodG1sKTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5vcHRpb25zLnNob3dJbkJyb3dzZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbihyZXBvcnRmaWxlKS50aGVuKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJsYXVuY2hlZCBicm93c2VyIHdpdGggXCIgKyByZXBvcnRmaWxlKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5sb2coYFZpZXcgSFRNTCBSZXBvcnQgYXQ6ICR7cmVwb3J0ZmlsZX1gKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gY2F0Y2goZXgpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgcHJvY2Vzc2luZyByZXBvcnQgdGVtcGxhdGU6JyArIGV4KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEh0bWxSZXBvcnRlcjtcclxuIl19 |
{ | ||
"name": "@rpii/wdio-html-reporter", | ||
"version": "0.5.0", | ||
"version": "0.5.1", | ||
"description": "A WebdriverIO plugin. Create a basic HTML formatted report", | ||
@@ -5,0 +5,0 @@ "main": "build/reporter.js", |
@@ -57,3 +57,3 @@ import WDIOReporter from '@wdio/reporter' | ||
test.failing = 0; | ||
test.events = []; | ||
test.errors = []; | ||
} | ||
@@ -131,3 +131,3 @@ | ||
let test = this.getTest(this.testUid) ; | ||
test.events.push({type: 'screenshot', value: filepath}) ; | ||
test.errors.push({type: 'screenshot', value: filepath}) ; | ||
} | ||
@@ -137,3 +137,3 @@ | ||
const test = this.getTest(this.testUid); | ||
test.events.push({type: 'log', value: message}) ; | ||
test.errors.push({type: 'log', value: message}) ; | ||
} | ||
@@ -232,2 +232,9 @@ | ||
Handlebars.registerHelper('ifEventIsError', function (event, options) { | ||
if (event.type === 'Error') { | ||
return options.fn(this); | ||
} | ||
return options.inverse(this); | ||
}); | ||
Handlebars.registerHelper('ifEventIsScreenshot', function (event, options) { | ||
@@ -234,0 +241,0 @@ if (event.type === 'screenshot') { |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
1138
86112
11