oxygen-cli 1.20.0 → 1.21.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +8 -0
- package/build/core/OxygenCore.js +3 -2
- package/build/errors/helper.js +6 -2
- package/build/lib/util.js +22 -9
- package/build/ox_modules/module-db.js +2 -2
- package/build/ox_modules/module-email.js +42 -49
- package/build/ox_modules/module-eyes.js +4 -21
- package/build/ox_modules/module-http.js +59 -49
- package/build/ox_modules/module-mailinator.js +25 -32
- package/build/ox_modules/module-mob/commands/selectWindow.js +4 -7
- package/build/ox_modules/module-mob/commands/sendKeys.js +2 -2
- package/build/ox_modules/module-mob.js +65 -52
- package/build/ox_modules/module-pdf.js +12 -32
- package/build/ox_modules/module-proxy.js +9 -9
- package/build/ox_modules/module-serial.js +14 -12
- package/build/ox_modules/module-soap.js +88 -78
- package/build/ox_modules/module-twilio.js +27 -27
- package/build/ox_modules/module-utils.js +29 -5
- package/build/ox_modules/module-web/commands/selectWindow.js +4 -7
- package/build/ox_modules/module-web/commands/waitForNotExist.js +2 -3
- package/build/ox_modules/module-web.js +88 -64
- package/build/ox_modules/utils.js +13 -2
- package/build/runners/WorkerProcess.js +22 -20
- package/package.json +2 -1
|
@@ -266,9 +266,14 @@ module.exports = {
|
|
|
266
266
|
this._prevImplicitTimeout = timeouts.implicit;
|
|
267
267
|
}
|
|
268
268
|
|
|
269
|
+
if (timeouts && timeouts.pageLoad) {
|
|
270
|
+
this._prevPageLoadTimeout = timeouts.pageLoad;
|
|
271
|
+
}
|
|
272
|
+
|
|
269
273
|
if (this.driver.setTimeout) {
|
|
270
274
|
await this.driver.setTimeout({
|
|
271
|
-
'implicit': timeout
|
|
275
|
+
'implicit': timeout,
|
|
276
|
+
'pageLoad': timeout
|
|
272
277
|
});
|
|
273
278
|
}
|
|
274
279
|
},
|
|
@@ -278,6 +283,12 @@ module.exports = {
|
|
|
278
283
|
'implicit': this._prevImplicitTimeout
|
|
279
284
|
});
|
|
280
285
|
}
|
|
286
|
+
|
|
287
|
+
if (this._prevPageLoadTimeout && this.driver.setTimeout) {
|
|
288
|
+
await this.driver.setTimeout({
|
|
289
|
+
'pageLoad': this._prevPageLoadTimeout
|
|
290
|
+
});
|
|
291
|
+
}
|
|
281
292
|
},
|
|
282
293
|
assertArgument: function (arg, name) {
|
|
283
294
|
if (arg === undefined || arg === null) {
|
|
@@ -378,4 +389,4 @@ module.exports = {
|
|
|
378
389
|
return null;
|
|
379
390
|
}
|
|
380
391
|
};
|
|
381
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL3V0aWxzLmpzIl0sIm5hbWVzIjpbImVyckhlbHBlciIsInJlcXVpcmUiLCJwcm92aWRlcnMiLCJQRVJGRUNUTyIsIkJST1dTRVJTVEFDSyIsIlNBVUNFTEFCUyIsIkxBTUJEQVRFU1QiLCJURVNUSU5HQk9UIiwiY29udGV4dExpc3QiLCJhbmRyb2lkIiwiaW9zIiwiaHlicmlkIiwid2ViIiwiaXNFbGVtZW50Tm90Rm91bmQiLCJlbCIsInJlc3VsdCIsImVycm9yIiwibWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJtb2R1bGUiLCJleHBvcnRzIiwibWF0Y2hQYXR0ZXJuIiwidmFsIiwicGF0dGVybiIsImdsb2JUb1JlZ2V4IiwidG9TdHJpbmciLCJyZXBsYWNlIiwicmVnZXgiLCJpbmRleE9mIiwiUmVnRXhwIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwidGVzdCIsImZsYWdzIiwiZ2V0RWxlbWVudCIsImxvY2F0b3IiLCJ3YWl0Rm9yVmlzaWJsZSIsInRpbWVvdXQiLCJzZXRUaW1lb3V0SW1wbGljaXQiLCJjYWxsIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiaGVscGVycyIsImdldFdkaW9Mb2NhdG9yIiwiZHJpdmVyIiwiJCIsImVsZW1lbnROb3RGb3VuZCIsInJlc3RvcmVUaW1lb3V0SW1wbGljaXQiLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiRUxFTUVOVF9OT1RfRk9VTkQiLCJ3YWl0Rm9yRGlzcGxheWVkIiwid2FpdEZvclRpbWVvdXQiLCJlIiwiaW5jbHVkZXMiLCJFTEVNRU5UX05PVF9WSVNJQkxFIiwiZ2V0RWxlbWVudHMiLCJlbHMiLCIkJCIsImVsZW1lbnRzTm90Rm91bmQiLCJnZXRDaGlsZEVsZW1lbnQiLCJwYXJlbnRFbGVtZW50IiwiU0NSSVBUX0VSUk9SIiwiZ2V0Q2hpbGRFbGVtZW50cyIsInNlbGVuaXVtVGltZW91dCIsInNlbGVuaXVtQnJvd3NlclRpbWVvdXQiLCJ0aW1lb3V0cyIsImNhcGFiaWxpdGllcyIsImJyb3dzZXJOYW1lIiwiZ2V0VGltZW91dHMiLCJzdG9wVXJsIiwiY29uc29sZSIsImxvZyIsImltcGxpY2l0IiwiX3ByZXZJbXBsaWNpdFRpbWVvdXQiLCJzZXRUaW1lb3V0IiwiYXNzZXJ0QXJndW1lbnQiLCJhcmciLCJ1bmRlZmluZWQiLCJhc3NlcnRBcmd1bWVudFN0cmluZyIsImFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmciLCJhc3NlcnRBcmd1bWVudE51bWJlciIsImFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmUiLCJhc3NlcnRBcmd1bWVudEJvb2wiLCJhc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbCIsImFzc2VydEFyZ3VtZW50VGltZW91dCIsImFzc2VydENvbnRleHQiLCJhbG93ZWRDb250ZXh0cyIsImNvbnRleHQiLCJnZXRDb250ZXh0IiwiaXNXZWIiLCJzdWJzdHIiLCJnZXRMb2dUeXBlcyIsInByb3ZpZGVyIiwiZGV0ZXJtaW5lUHJvdmlkZXIiLCJ3ZGlvT3B0cyIsImhvc3RuYW1lIl0sIm1hcHBpbmdzIjoiOzs7O0FBVUE7Ozs7QUFWQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsTUFBTUEsU0FBUyxHQUFHQyxPQUFPLENBQUMsa0JBQUQsQ0FBekI7O0FBR0EsTUFBTUMsU0FBUyxHQUFHO0FBQ2RDLEVBQUFBLFFBQVEsRUFBRSxVQURJO0FBRWRDLEVBQUFBLFlBQVksRUFBRSxjQUZBO0FBR2RDLEVBQUFBLFNBQVMsRUFBRSxPQUhHO0FBSWRDLEVBQUFBLFVBQVUsRUFBRSxRQUpFO0FBS2RDLEVBQUFBLFVBQVUsRUFBRTtBQUxFLENBQWxCO0FBUUEsTUFBTUMsV0FBVyxHQUFHO0FBQ2hCQyxFQUFBQSxPQUFPLEVBQUUsU0FETztBQUVoQkMsRUFBQUEsR0FBRyxFQUFFLEtBRlc7QUFHaEJDLEVBQUFBLE1BQU0sRUFBRSxRQUhRO0FBSWhCQyxFQUFBQSxHQUFHLEVBQUU7QUFKVyxDQUFwQjs7QUFPQSxNQUFNQyxpQkFBaUIsR0FBSUMsRUFB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SCxLQUZNLE1BRUEsSUFBSTJGLFFBQVEsQ0FBQzVCLFlBQVQsQ0FBc0IsZUFBdEIsQ0FBSixFQUE0QztBQUMvQyxhQUFPakUsU0FBUyxDQUFDRyxTQUFqQjtBQUNILEtBRk0sTUFFQSxJQUFJMEYsUUFBUSxDQUFDQyxRQUFULENBQWtCMUMsUUFBbEIsQ0FBMkIsWUFBM0IsQ0FBSixFQUE4QztBQUNqRCxhQUFPcEQsU0FBUyxDQUFDSSxVQUFqQjtBQUNILEtBRk0sTUFFQSxJQUFJeUYsUUFBUSxDQUFDNUIsWUFBVCxDQUFzQixvQkFBdEIsQ0FBSixFQUFpRDtBQUNwRCxhQUFPakUsU0FBUyxDQUFDSyxVQUFqQjtBQUNIOztBQUVELFdBQU8sSUFBUDtBQUNIO0FBN1ZZLENBQWpCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG5jb25zdCBlcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcblxyXG5jb25zdCBwcm92aWRlcnMgPSB7XHJcbiAgICBQRVJGRUNUTzogJ3BlcmZlY3RvJyxcclxuICAgIEJST1dTRVJTVEFDSzogJ2Jyb3dzZXJzdGFjaycsXHJcbiAgICBTQVVDRUxBQlM6ICdzYXVjZScsXHJcbiAgICBMQU1CREFURVNUOiAnbGFtYmRhJyxcclxuICAgIFRFU1RJTkdCT1Q6ICd0ZXN0aW5nYm90J1xyXG59O1xyXG5cclxuY29uc3QgY29udGV4dExpc3QgPSB7XHJcbiAgICBhbmRyb2lkOiAnYW5kcm9pZCcsXHJcbiAgICBpb3M6ICdpb3MnLFxyXG4gICAgaHlicmlkOiAnaHlicmlkJyxcclxuICAgIHdlYjogJ3dlYidcclxufTtcclxuXHJcbmNvbnN0IGlzRWxlbWVudE5vdEZvdW5kID0gKGVsKSA9PiB7XHJcbiAgICBsZXQgcmVzdWx0ID0gZmFsc2U7XHJcbiAgICBpZiAoXHJcbiAgICAgICAgZWwuZXJyb3IgJiYgKFxyXG4gICAgICAgIGVsLmVycm9yLmVycm9yID09PSAnbm8gc3VjaCBlbGVtZW50JyB8fFxyXG4gICAgICAgIChlbC5lcnJvci5tZXNzYWdlICYmIC8qIHdpbmFwcGRyaXZlciB3aW4ucmlnaHRDbGljayAqLyBlbC5lcnJvci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ25vIHN1Y2ggZWxlbWVudCcpIHx8XHJcbiAgICAgICAgZWwuZXJyb3IubWVzc2FnZSAmJiAvKiB3aW5hcHBkcml2ZXIgKi8gZWwuZXJyb3IubWVzc2FnZS5zdGFydHNXaXRoKCdBbiBlbGVtZW50IGNvdWxkIG5vdCBiZSBsb2NhdGVkJykpKVxyXG4gICAgKSB7XHJcbiAgICAgICAgcmVzdWx0ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuICAgIG1hdGNoUGF0dGVybjogZnVuY3Rpb24odmFsLCBwYXR0ZXJuKSB7XHJcbiAgICAgICAgaWYgKCF2YWwgJiYgIXBhdHRlcm4pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZ2xvYlRvUmVnZXggPSByZXF1aXJlKCdnbG9iLXRvLXJlZ2V4cCcpO1xyXG4gICAgICAgIHBhdHRlcm4gPSBwYXR0ZXJuLnRvU3RyaW5nKCkucmVwbGFjZSgvXFxzKy9nLCAnICcpO1xyXG5cclxuICAgICAgICB2YXIgcmVnZXg7XHJcbiAgICAgICAgaWYgKHBhdHRlcm4uaW5kZXhPZigncmVnZXg6JykgPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoIHVzaW5nIGEgcmVndWxhci1leHByZXNzaW9uXHJcbiAgICAgICAgICAgIHJlZ2V4ID0gbmV3IFJlZ0V4cChwYXR0ZXJuLnN1YnN0cmluZygncmVnZXg6Jy5sZW5ndGgpLCAnZycpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVnZXgudGVzdCh2YWwpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGF0dGVybi5pbmRleE9mKCdyZWdleGk6JykgPT0gMCkgeyAgICAgICAgICAgICAgICAgICAvLyBtYXRjaCB1c2luZyBhIGNhc2UtaW5zZW5zaXRpdmUgcmVndWxhci1leHByZXNzaW9uXHJcbiAgICAgICAgICAgIHJlZ2V4ID0gbmV3IFJlZ0V4cChwYXR0ZXJuLnN1YnN0cmluZygncmVnZXhpOicubGVuZ3RoKSwgJ2lnJyk7XHJcbiAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KHZhbCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwYXR0ZXJuLmluZGV4T2YoJ2V4YWN0OicpID09IDAgfHwgcGF0dGVybiA9PT0gJycpIHsgIC8vIG1hdGNoIGEgc3RyaW5nIGV4YWN0bHksIHZlcmJhdGltXHJcbiAgICAgICAgICAgIHJldHVybiBwYXR0ZXJuLnN1YnN0cmluZygnZXhhY3Q6Jy5sZW5ndGgpID09PSB2YWw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChwYXR0ZXJuLmluZGV4T2YoJ2dsb2I6JykgPT0gMCkgeyAgICAgICAgICAgICAgICAgICAgIC8vIG1hdGNoIGFnYWluc3QgYSBjYXNlLWluc2Vuc2l0aXZlIFwiZ2xvYlwiIHBhdHRlcm5cclxuICAgICAgICAgICAgcmVnZXggPSBnbG9iVG9SZWdleChwYXR0ZXJuLnN1YnN0cmluZygnZ2xvYjonLmxlbmd0aCksIHsgZmxhZ3M6ICdpZycgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KHZhbCk7XHJcbiAgICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vIHByZWZpeCBzYW1lIGFzIGdsb2IgbWF0Y2hpbmdcclxuICAgICAgICAgICAgcmVnZXggPSBnbG9iVG9SZWdleChwYXR0ZXJuLCB7IGZsYWdzOiAnaWcnIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVnZXgudGVzdCh2YWwpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0RWxlbWVudDogYXN5bmMgZnVuY3Rpb24obG9jYXRvciwgd2FpdEZvclZpc2libGUsIHRpbWVvdXQpIHtcclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5zZXRUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzLCB0aW1lb3V0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBlbDtcclxuICAgICAgICBpZiAobG9jYXRvciAmJiBsb2NhdG9yLmNvbnN0cnVjdG9yICYmIGxvY2F0b3IuY29uc3RydWN0b3IubmFtZSA9PT0gJ0VsZW1lbnQnKSB7XHJcbiAgICAgICAgICAgIGVsID0gbG9jYXRvcjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBsb2NhdG9yID0gdGhpcy5oZWxwZXJzLmdldFdkaW9Mb2NhdG9yKGxvY2F0b3IpO1xyXG4gICAgICAgICAgICBlbCA9IGF3YWl0IHRoaXMuZHJpdmVyLiQobG9jYXRvcik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCBlbGVtZW50Tm90Rm91bmQgPSBpc0VsZW1lbnROb3RGb3VuZChlbCk7XHJcbiAgICAgICAgaWYgKGVsZW1lbnROb3RGb3VuZCkge1xyXG4gICAgICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRUxFTUVOVF9OT1RfRk9VTkQsIGBVbmFibGUgdG8gZmluZCBlbGVtZW50OiAke2xvY2F0b3J9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAod2FpdEZvclZpc2libGUpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IGVsLndhaXRGb3JEaXNwbGF5ZWQoeyB0aW1lb3V0OnRpbWVvdXQgPyB0aW1lb3V0IDogdGhpcy53YWl0Rm9yVGltZW91dH0pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChlLm1lc3NhZ2UgJiYgZS5tZXNzYWdlLmluY2x1ZGVzKCdzdGlsbCBub3QgZGlzcGxheWVkJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkVMRU1FTlRfTk9UX1ZJU0lCTEUsIGBFbGVtZW50IG5vdCB2aXNpYmxlOiAke2xvY2F0b3J9YCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5yZXN0b3JlVGltZW91dEltcGxpY2l0LmNhbGwodGhpcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZWw7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldEVsZW1lbnRzOiBhc3luYyBmdW5jdGlvbihsb2NhdG9yLCB0aW1lb3V0KSB7XHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMuc2V0VGltZW91dEltcGxpY2l0LmNhbGwodGhpcywgdGltZW91dCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgZWxzID0gW107XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGVscyA9IGF3YWl0IHRoaXMuZHJpdmVyLiQkKHRoaXMuaGVscGVycy5nZXRXZGlvTG9jYXRvcihsb2NhdG9yKSk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50c05vdEZvdW5kID0gaXNFbGVtZW50Tm90Rm91bmQoZWxzKTtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzTm90Rm91bmQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnNcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5yZXN0b3JlVGltZW91dEltcGxpY2l0LmNhbGwodGhpcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZWxzO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRDaGlsZEVsZW1lbnQ6IGFzeW5jIGZ1bmN0aW9uKGxvY2F0b3IsIHBhcmVudEVsZW1lbnQsIHdhaXRGb3JWaXNpYmxlLCB0aW1lb3V0KSB7XHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMuc2V0VGltZW91dEltcGxpY2l0LmNhbGwodGhpcywgdGltZW91dCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsb2NhdG9yID0gdGhpcy5oZWxwZXJzLmdldFdkaW9Mb2NhdG9yKGxvY2F0b3IpO1xyXG5cclxuICAgICAgICBpZiAoIShwYXJlbnRFbGVtZW50ICYmIHBhcmVudEVsZW1lbnQuJCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsICdJbnZhbGlkIGFyZ3VtZW50IC0gcGFyZW50RWxlbWVudCwgbXVzdCBiZSBhIHZhbGlkIGVsZW1lbnQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHZhciBlbCA9IGF3YWl0IHBhcmVudEVsZW1lbnQuJChsb2NhdG9yKTtcclxuXHJcbiAgICAgICAgY29uc3QgZWxlbWVudE5vdEZvdW5kID0gaXNFbGVtZW50Tm90Rm91bmQoZWwpO1xyXG4gICAgICAgIGlmIChlbGVtZW50Tm90Rm91bmQpIHtcclxuICAgICAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkVMRU1FTlRfTk9UX0ZPVU5ELCBgVW5hYmxlIHRvIGZpbmQgZWxlbWVudDogJHtsb2NhdG9yfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHdhaXRGb3JWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBlbC53YWl0Rm9yRGlzcGxheWVkKHsgdGltZW91dDogdGltZW91dCA/IHRpbWVvdXQgOiB0aGlzLndhaXRGb3JUaW1lb3V0fSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKGUubWVzc2FnZSAmJiBlLm1lc3NhZ2UuaW5jbHVkZXMoJ3N0aWxsIG5vdCBkaXNwbGF5ZWQnKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuRUxFTUVOVF9OT1RfVklTSUJMRSwgYEVsZW1lbnQgbm90IHZpc2libGU6ICR7bG9jYXRvcn1gKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlbDtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0Q2hpbGRFbGVtZW50czogYXN5bmMgZnVuY3Rpb24obG9jYXRvciwgcGFyZW50RWxlbWVudCwgdGltZW91dCkge1xyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIG1vZHVsZS5leHBvcnRzLnNldFRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMsIHRpbWVvdXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbG9jYXRvciA9IHRoaXMuaGVscGVycy5nZXRXZGlvTG9jYXRvcihsb2NhdG9yKTtcclxuXHJcbiAgICAgICAgaWYgKCEocGFyZW50RWxlbWVudCAmJiBwYXJlbnRFbGVtZW50LiQkKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgJ0ludmFsaWQgYXJndW1lbnQgLSBwYXJlbnRFbGVtZW50LCBtdXN0IGJlIGEgdmFsaWQgZWxlbWVudCcpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGVscyA9IFtdO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGVscyA9IGF3YWl0IHBhcmVudEVsZW1lbnQuJCQobG9jYXRvcik7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zdCBlbGVtZW50c05vdEZvdW5kID0gaXNFbGVtZW50Tm90Rm91bmQoZWxzKTtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnRzTm90Rm91bmQpIHtcclxuICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBlcnJvcnNcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRocm93IGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBlbHM7XHJcbiAgICB9LFxyXG5cclxuICAgIHNldFRpbWVvdXRJbXBsaWNpdDogYXN5bmMgZnVuY3Rpb24odGltZW91dCkge1xyXG4gICAgICAgIGlmICghdGhpcy5kcml2ZXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZHJpdmVyLnNlbGVuaXVtVGltZW91dCAmJiB0aW1lb3V0ID4gdGhpcy5kcml2ZXIuc2VsZW5pdW1UaW1lb3V0ICogMTAwMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgYHRpbWVvdXQgbXVzdCBiZSBsZXNzIHRoYW4gJHt0aGlzLmRyaXZlci5zZWxlbml1bVRpbWVvdXQgKiAxMDAwfWApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5kcml2ZXIuc2VsZW5pdW1Ccm93c2VyVGltZW91dCAmJiB0aW1lb3V0ID4gdGhpcy5kcml2ZXIuc2VsZW5pdW1Ccm93c2VyVGltZW91dCAqIDEwMDApIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIGB0aW1lb3V0IG11c3QgYmUgbGVzcyB0aGFuICR7dGhpcy5kcml2ZXIuc2VsZW5pdW1Ccm93c2VyVGltZW91dCAqIDEwMDB9YCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgdGltZW91dHM7XHJcblxyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgICAgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzICYmXHJcbiAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcy5icm93c2VyTmFtZSA9PT0gJ01pY3Jvc29mdEVkZ2UnXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIC8vIG5vdCBzdXBwb3J0ZWQgb24gRWRnZVxyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyaXZlci5nZXRUaW1lb3V0cykge1xyXG4gICAgICAgICAgICAvLyBjaHJvbWUgPj0gNzVcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMuc3RvcFVybCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcy5zdG9wVXJsLmluY2x1ZGVzKCdwZXJmZWN0b21vYmlsZS5jb20nKVxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgLy9pZ25vcmVcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGltZW91dHMgPSBhd2FpdCB0aGlzLmRyaXZlci5nZXRUaW1lb3V0cygpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBmYWlscyBvbiBwZXJmZWN0byBtb2JpbGVcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdnZXRUaW1lb3V0cyBlcnJvcicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMgJiYgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLnRpbWVvdXRzKSB7XHJcbiAgICAgICAgICAgIC8vIGNocm9tZSA+PSA3MiAmJiBjaHJvbWUgPCA3NVxyXG4gICAgICAgICAgICB0aW1lb3V0cyA9IHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcy50aW1lb3V0cztcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aW1lb3V0cyAmJiB0aW1lb3V0cy5pbXBsaWNpdCkge1xyXG4gICAgICAgICAgICB0aGlzLl9wcmV2SW1wbGljaXRUaW1lb3V0ID0gdGltZW91dHMuaW1wbGljaXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLmRyaXZlci5zZXRUaW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZHJpdmVyLnNldFRpbWVvdXQoeyAnaW1wbGljaXQnOiB0aW1lb3V0IH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgcmVzdG9yZVRpbWVvdXRJbXBsaWNpdDogYXN5bmMgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZJbXBsaWNpdFRpbWVvdXQgJiYgdGhpcy5kcml2ZXIuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zZXRUaW1lb3V0KHsgJ2ltcGxpY2l0JzogdGhpcy5fcHJldkltcGxpY2l0VGltZW91dCB9KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50OiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAoYXJnID09PSB1bmRlZmluZWQgfHwgYXJnID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBcIkludmFsaWQgYXJndW1lbnQgLSAnXCIgKyBuYW1lICsgXCInIGlzIHJlcXVpcmVkLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50U3RyaW5nOiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgc3RyaW5nLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmc6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICghYXJnIHx8IHR5cGVvZiBhcmcgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBcIkludmFsaWQgYXJndW1lbnQgLSAnXCIgKyBuYW1lICsgXCInIHNob3VsZCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYXNzZXJ0QXJndW1lbnROdW1iZXI6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgbnVtYmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmU6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgXCJJbnZhbGlkIGFyZ3VtZW50IC0gJ1wiICsgbmFtZSArIFwiJyBzaG91bGQgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50Qm9vbDogZnVuY3Rpb24oYXJnLCBuYW1lKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihhcmcpICE9IHR5cGVvZih0cnVlKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgXCJJbnZhbGlkIGFyZ3VtZW50IC0gJ1wiICsgbmFtZSArIFwiJyBzaG91bGQgYmUgdHJ1ZSBvciBmYWxzZS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBhc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbDogZnVuY3Rpb24oYXJnLCBuYW1lKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihhcmcpICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YoYXJnKSAhPSB0eXBlb2YodHJ1ZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIHRydWUgb3IgZmFsc2UuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYXNzZXJ0QXJndW1lbnRUaW1lb3V0OiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAoYXJnICYmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgbm9uIG5lZ2F0aXZlIG51bWJlci5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjb250ZXh0TGlzdDogY29udGV4dExpc3QsXHJcblxyXG4gICAgYXNzZXJ0Q29udGV4dDogYXN5bmMgZnVuY3Rpb24oLi4uYWxvd2VkQ29udGV4dHMpIHtcclxuICAgICAgICB2YXIgY29udGV4dCA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldENvbnRleHQoKTtcclxuICAgICAgICBjb25zdCBpc1dlYiA9IChjb250ZXh0ICYmIChjb250ZXh0LmluZGV4T2YoJ1dFQlZJRVcnKSA+IC0xIHx8IGNvbnRleHQuaW5kZXhPZignQ0hST01JVU0nKSA+IC0xKSk7XHJcblxyXG4gICAgICAgIGlmIChpc1dlYikge1xyXG4gICAgICAgICAgICBpZiAoYWxvd2VkQ29udGV4dHMuaW5jbHVkZXMoY29udGV4dExpc3Qud2ViKSB8fCBhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5oeWJyaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUsIGFsbCBpcyBva1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsICdJbnZhbGlkIGNvbnRleHQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5hbmRyb2lkKSB8fCBhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5pb3MpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUsIGFsbCBpcyBva1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsICdJbnZhbGlkIGNvbnRleHQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0V2Rpb0xvY2F0b3I6IGZ1bmN0aW9uKGxvY2F0b3IpIHtcclxuICAgICAgICBpZiAoIWxvY2F0b3IpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCAnSW52YWxpZCBhcmd1bWVudCAtIGxvY2F0b3Igbm90IHNwZWNpZmllZCcpO1xyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBsb2NhdG9yID09PSAnb2JqZWN0JylcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3I7XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCcvJykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBsb2NhdG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlYXZlIHhwYXRoIGxvY2F0b3IgYXMgaXNcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2lkPScpID09PSAwKSB7XHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIFhQYXRoIGluc3RlYWQgb2YgQ1NTIGZvciBicm93c2VyIHRlc3RzLCBzaW5jZSBJRCBjYW4gY29udGFpbiBpbGxlZ2FsIGNoYXJhY3RlcnNcclxuICAgICAgICAgICAgLy8gYW5kIGVzY2FwaW5nIGRvZXNuJ3Qgd29yayByZWxpYWJseSBvciBpbiBpZGVudGljYWwgbWFubmVyIGluIGFsbCBicm93c2VyXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMgJiYgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYC8vKltAaWQ9XCIke2xvY2F0b3Iuc3Vic3RyKCdpZD0nLmxlbmd0aCl9XCJdYDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAnIycgKyBsb2NhdG9yLnN1YnN0cignaWQ9Jy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignbmFtZT0nKSA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuICdbbmFtZT1cIicgKyBsb2NhdG9yLnN1YnN0cignbmFtZT0nLmxlbmd0aCkgKyAnXCJdJztcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2xpbms9JykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiAnPScgKyBsb2NhdG9yLnN1YnN0cignbGluaz0nLmxlbmd0aCk7XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdsaW5rLWNvbnRhaW5zPScpID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gJyo9JyArIGxvY2F0b3Iuc3Vic3RyKCdsaW5rPScubGVuZ3RoKTtcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2Nzcz0nKSA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3Iuc3Vic3RyKCdjc3M9Jy5sZW5ndGgpOyAgICAgICAgICAgLy8gaW4gY2FzZSBvZiBjc3MsIGp1c3QgcmVtb3ZlIGNzcz0gcHJlZml4XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCd0YWc9JykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiAnPCcgKyBsb2NhdG9yLnN1YnN0cigndGFnPScubGVuZ3RoKSArICcgLz4nO1xyXG5cclxuICAgICAgICByZXR1cm4gbG9jYXRvcjtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0TG9nVHlwZXM6IGZ1bmN0aW9uKGNvbnRleHQpIHtcclxuICAgICAgICBpZiAoY29udGV4dCA9PT0gJ05BVElWRV9BUFAnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ2xvZ2NhdCcsICdidWdyZXBvcnQnLCAnc2VydmVyJ107XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnYnJvd3NlcicsICdkcml2ZXInXTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHByb3ZpZGVyOiBwcm92aWRlcnMsXHJcblxyXG4gICAgZGV0ZXJtaW5lUHJvdmlkZXI6IGZ1bmN0aW9uKHdkaW9PcHRzKSB7XHJcbiAgICAgICAgaWYgKCF3ZGlvT3B0cyB8fCAhd2Rpb09wdHMuY2FwYWJpbGl0aWVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHdkaW9PcHRzLmNhcGFiaWxpdGllc1sncGVyZmVjdG9Nb2JpbGU6b3B0aW9ucyddIHx8ICh3ZGlvT3B0cy5ob3N0bmFtZSAmJiB3ZGlvT3B0cy5ob3N0bmFtZS5pbmNsdWRlcygncGVyZmVjdG9tb2JpbGUuY29tJykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlcnMuUEVSRkVDVE87XHJcbiAgICAgICAgfSBlbHNlIGlmICh3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2Jyb3dzZXJzdGFjazpvcHRpb25zJ10pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5CUk9XU0VSU1RBQ0s7XHJcbiAgICAgICAgfSBlbHNlIGlmICh3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ3NhdWNlOm9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLlNBVUNFTEFCUztcclxuICAgICAgICB9IGVsc2UgaWYgKHdkaW9PcHRzLmhvc3RuYW1lLmluY2x1ZGVzKCdsYW1iZGF0ZXN0JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5MQU1CREFURVNUO1xyXG4gICAgICAgIH0gZWxzZSBpZiAod2Rpb09wdHMuY2FwYWJpbGl0aWVzWyd0ZXN0aW5nQm90Om9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLlRFU1RJTkdCT1Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufTtcclxuIl19
|
|
392
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL3V0aWxzLmpzIl0sIm5hbWVzIjpbImVyckhlbHBlciIsInJlcXVpcmUiLCJwcm92aWRlcnMiLCJQRVJGRUNUTyIsIkJST1dTRVJTVEFDSyIsIlNBVUNFTEFCUyIsIkxBTUJEQVRFU1QiLCJURVNUSU5HQk9UIiwiY29udGV4dExpc3QiLCJhbmRyb2lkIiwiaW9zIiwiaHlicmlkIiwid2ViIiwiaXNFbGVtZW50Tm90Rm91bmQiLCJlbCIsInJlc3VsdCIsImVycm9yIiwibWVzc2FnZSIsInN0YXJ0c1dpdGgiLCJtb2R1bGUiLCJleHBvcnRzIiwibWF0Y2hQYXR0ZXJuIiwidmFsIiwicGF0dGVybiIsImdsb2JUb1JlZ2V4IiwidG9TdHJpbmciLCJyZXBsYWNlIiwicmVnZXgiLCJpbmRleE9mIiwiUmVnRXhwIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwidGVzdCIsImZsYWdzIiwiZ2V0RWxlbWVudCIsImxvY2F0b3IiLCJ3YWl0Rm9yVmlzaWJsZSIsInRpbWVvdXQiLCJzZXRUaW1lb3V0SW1wbGljaXQiLCJjYWxsIiwiY29uc3RydWN0b3IiLCJuYW1lIiwiaGVscGVycyIsImdldFdkaW9Mb2NhdG9yIiwiZHJpdmVyIiwiJCIsImVsZW1lbnROb3RGb3VuZCIsInJlc3RvcmVUaW1lb3V0SW1wbGljaXQiLCJPeEVycm9yIiwiZXJyb3JDb2RlIiwiRUxFTUVOVF9OT1RfRk9VTkQiLCJ3YWl0Rm9yRGlzcGxheWVkIiwid2FpdEZvclRpbWVvdXQiLCJlIiwiaW5jbHVkZXMiLCJFTEVNRU5UX05PVF9WSVNJQkxFIiwiZ2V0RWxlbWVudHMiLCJlbHMiLCIkJCIsImVsZW1lbnRzTm90Rm91bmQiLCJnZXRDaGlsZEVsZW1lbnQiLCJwYXJlbnRFbGVtZW50IiwiU0NSSVBUX0VSUk9SIiwiZ2V0Q2hpbGRFbGVtZW50cyIsInNlbGVuaXVtVGltZW91dCIsInNlbGVuaXVtQnJvd3NlclRpbWVvdXQiLCJ0aW1lb3V0cyIsImNhcGFiaWxpdGllcyIsImJyb3dzZXJOYW1lIiwiZ2V0VGltZW91dHMiLCJzdG9wVXJsIiwiY29uc29sZSIsImxvZyIsImltcGxpY2l0IiwiX3ByZXZJbXBsaWNpdFRpbWVvdXQiLCJwYWdlTG9hZCIsIl9wcmV2UGFnZUxvYWRUaW1lb3V0Iiwic2V0VGltZW91dCIsImFzc2VydEFyZ3VtZW50IiwiYXJnIiwidW5kZWZpbmVkIiwiYXNzZXJ0QXJndW1lbnRTdHJpbmciLCJhc3NlcnRBcmd1bWVudE5vbkVtcHR5U3RyaW5nIiwiYXNzZXJ0QXJndW1lbnROdW1iZXIiLCJhc3NlcnRBcmd1bWVudE51bWJlck5vbk5lZ2F0aXZlIiwiYXNzZXJ0QXJndW1lbnRCb29sIiwiYXNzZXJ0QXJndW1lbnRCb29sT3B0aW9uYWwiLCJhc3NlcnRBcmd1bWVudFRpbWVvdXQiLCJhc3NlcnRDb250ZXh0IiwiYWxvd2VkQ29udGV4dHMiLCJjb250ZXh0IiwiZ2V0Q29udGV4dCIsImlzV2ViIiwic3Vic3RyIiwiZ2V0TG9nVHlwZXMiLCJwcm92aWRlciIsImRldGVybWluZVByb3ZpZGVyIiwid2Rpb09wdHMiLCJob3N0bmFtZSJdLCJtYXBwaW5ncyI6Ijs7OztBQVVBOzs7O0FBVkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBLE1BQU1BLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXpCOztBQUdBLE1BQU1DLFNBQVMsR0FBRztBQUNkQyxFQUFBQSxRQUFRLEVBQUUsVUFESTtBQUVkQyxFQUFBQSxZQUFZLEVBQUUsY0FGQTtBQUdkQyxFQUFBQSxTQUFTLEVBQUUsT0FIRztBQUlkQyxFQUFBQSxVQUFVLEVBQUUsUUFKRTtBQUtkQyxFQUFBQSxVQUFVLEVBQUU7QUFMRSxDQUFsQjtBQVFBLE1BQU1DLFdBQVcsR0FBRztBQUNoQkMsRUFBQUEsT0FBTyxFQUFFLFNBRE87QUFFaEJDLEVBQUFBLEdBQUcsRUFBRSxLQUZXO0FBR2hCQyxFQUFBQSxNQUFNLEVBQUUsUUFIUTtBQUloQkMsRUFBQUEsR0FBRyxFQUFFO0FBSlcs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QTNCLEVBQXlDO0FBQ3JDLGFBQU8sSUFBUDtBQUNIOztBQUVELFFBQUk4QixRQUFRLENBQUM5QixZQUFULENBQXNCLHdCQUF0QixLQUFvRDhCLFFBQVEsQ0FBQ0MsUUFBVCxJQUFxQkQsUUFBUSxDQUFDQyxRQUFULENBQWtCNUMsUUFBbEIsQ0FBMkIsb0JBQTNCLENBQTdFLEVBQWdJO0FBQzVILGFBQU9wRCxTQUFTLENBQUNDLFFBQWpCO0FBQ0gsS0FGRCxNQUVPLElBQUk4RixRQUFRLENBQUM5QixZQUFULENBQXNCLHNCQUF0QixDQUFKLEVBQW1EO0FBQ3RELGFBQU9qRSxTQUFTLENBQUNFLFlBQWpCO0FBQ0gsS0FGTSxNQUVBLElBQUk2RixRQUFRLENBQUM5QixZQUFULENBQXNCLGVBQXRCLENBQUosRUFBNEM7QUFDL0MsYUFBT2pFLFNBQVMsQ0FBQ0csU0FBakI7QUFDSCxLQUZNLE1BRUEsSUFBSTRGLFFBQVEsQ0FBQ0MsUUFBVCxDQUFrQjVDLFFBQWxCLENBQTJCLFlBQTNCLENBQUosRUFBOEM7QUFDakQsYUFBT3BELFNBQVMsQ0FBQ0ksVUFBakI7QUFDSCxLQUZNLE1BRUEsSUFBSTJGLFFBQVEsQ0FBQzlCLFlBQVQsQ0FBc0Isb0JBQXRCLENBQUosRUFBaUQ7QUFDcEQsYUFBT2pFLFNBQVMsQ0FBQ0ssVUFBakI7QUFDSDs7QUFFRCxXQUFPLElBQVA7QUFDSDtBQXRXWSxDQUFqQiIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuY29uc3QgZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuLi9lcnJvcnMvT3h5Z2VuRXJyb3InO1xyXG5cclxuY29uc3QgcHJvdmlkZXJzID0ge1xyXG4gICAgUEVSRkVDVE86ICdwZXJmZWN0bycsXHJcbiAgICBCUk9XU0VSU1RBQ0s6ICdicm93c2Vyc3RhY2snLFxyXG4gICAgU0FVQ0VMQUJTOiAnc2F1Y2UnLFxyXG4gICAgTEFNQkRBVEVTVDogJ2xhbWJkYScsXHJcbiAgICBURVNUSU5HQk9UOiAndGVzdGluZ2JvdCdcclxufTtcclxuXHJcbmNvbnN0IGNvbnRleHRMaXN0ID0ge1xyXG4gICAgYW5kcm9pZDogJ2FuZHJvaWQnLFxyXG4gICAgaW9zOiAnaW9zJyxcclxuICAgIGh5YnJpZDogJ2h5YnJpZCcsXHJcbiAgICB3ZWI6ICd3ZWInXHJcbn07XHJcblxyXG5jb25zdCBpc0VsZW1lbnROb3RGb3VuZCA9IChlbCkgPT4ge1xyXG4gICAgbGV0IHJlc3VsdCA9IGZhbHNlO1xyXG4gICAgaWYgKFxyXG4gICAgICAgIGVsLmVycm9yICYmIChcclxuICAgICAgICBlbC5lcnJvci5lcnJvciA9PT0gJ25vIHN1Y2ggZWxlbWVudCcgfHxcclxuICAgICAgICAoZWwuZXJyb3IubWVzc2FnZSAmJiAvKiB3aW5hcHBkcml2ZXIgd2luLnJpZ2h0Q2xpY2sgKi8gZWwuZXJyb3IubWVzc2FnZS5zdGFydHNXaXRoKCdubyBzdWNoIGVsZW1lbnQnKSB8fFxyXG4gICAgICAgIGVsLmVycm9yLm1lc3NhZ2UgJiYgLyogd2luYXBwZHJpdmVyICovIGVsLmVycm9yLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnQW4gZWxlbWVudCBjb3VsZCBub3QgYmUgbG9jYXRlZCcpKSlcclxuICAgICkge1xyXG4gICAgICAgIHJlc3VsdCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBtYXRjaFBhdHRlcm46IGZ1bmN0aW9uKHZhbCwgcGF0dGVybikge1xyXG4gICAgICAgIGlmICghdmFsICYmICFwYXR0ZXJuKSB7XHJcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGdsb2JUb1JlZ2V4ID0gcmVxdWlyZSgnZ2xvYi10by1yZWdleHAnKTtcclxuICAgICAgICBwYXR0ZXJuID0gcGF0dGVybi50b1N0cmluZygpLnJlcGxhY2UoL1xccysvZywgJyAnKTtcclxuXHJcbiAgICAgICAgdmFyIHJlZ2V4O1xyXG4gICAgICAgIGlmIChwYXR0ZXJuLmluZGV4T2YoJ3JlZ2V4OicpID09IDApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaCB1c2luZyBhIHJlZ3VsYXItZXhwcmVzc2lvblxyXG4gICAgICAgICAgICByZWdleCA9IG5ldyBSZWdFeHAocGF0dGVybi5zdWJzdHJpbmcoJ3JlZ2V4OicubGVuZ3RoKSwgJ2cnKTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHBhdHRlcm4uaW5kZXhPZigncmVnZXhpOicpID09IDApIHsgICAgICAgICAgICAgICAgICAgLy8gbWF0Y2ggdXNpbmcgYSBjYXNlLWluc2Vuc2l0aXZlIHJlZ3VsYXItZXhwcmVzc2lvblxyXG4gICAgICAgICAgICByZWdleCA9IG5ldyBSZWdFeHAocGF0dGVybi5zdWJzdHJpbmcoJ3JlZ2V4aTonLmxlbmd0aCksICdpZycpO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVnZXgudGVzdCh2YWwpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGF0dGVybi5pbmRleE9mKCdleGFjdDonKSA9PSAwIHx8IHBhdHRlcm4gPT09ICcnKSB7ICAvLyBtYXRjaCBhIHN0cmluZyBleGFjdGx5LCB2ZXJiYXRpbVxyXG4gICAgICAgICAgICByZXR1cm4gcGF0dGVybi5zdWJzdHJpbmcoJ2V4YWN0OicubGVuZ3RoKSA9PT0gdmFsO1xyXG4gICAgICAgIH0gZWxzZSBpZiAocGF0dGVybi5pbmRleE9mKCdnbG9iOicpID09IDApIHsgICAgICAgICAgICAgICAgICAgICAvLyBtYXRjaCBhZ2FpbnN0IGEgY2FzZS1pbnNlbnNpdGl2ZSBcImdsb2JcIiBwYXR0ZXJuXHJcbiAgICAgICAgICAgIHJlZ2V4ID0gZ2xvYlRvUmVnZXgocGF0dGVybi5zdWJzdHJpbmcoJ2dsb2I6Jy5sZW5ndGgpLCB7IGZsYWdzOiAnaWcnIH0pO1xyXG4gICAgICAgICAgICByZXR1cm4gcmVnZXgudGVzdCh2YWwpO1xyXG4gICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBubyBwcmVmaXggc2FtZSBhcyBnbG9iIG1hdGNoaW5nXHJcbiAgICAgICAgICAgIHJlZ2V4ID0gZ2xvYlRvUmVnZXgocGF0dGVybiwgeyBmbGFnczogJ2lnJyB9KTtcclxuICAgICAgICAgICAgcmV0dXJuIHJlZ2V4LnRlc3QodmFsKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGdldEVsZW1lbnQ6IGFzeW5jIGZ1bmN0aW9uKGxvY2F0b3IsIHdhaXRGb3JWaXNpYmxlLCB0aW1lb3V0KSB7XHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMuc2V0VGltZW91dEltcGxpY2l0LmNhbGwodGhpcywgdGltZW91dCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZWw7XHJcbiAgICAgICAgaWYgKGxvY2F0b3IgJiYgbG9jYXRvci5jb25zdHJ1Y3RvciAmJiBsb2NhdG9yLmNvbnN0cnVjdG9yLm5hbWUgPT09ICdFbGVtZW50Jykge1xyXG4gICAgICAgICAgICBlbCA9IGxvY2F0b3I7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgbG9jYXRvciA9IHRoaXMuaGVscGVycy5nZXRXZGlvTG9jYXRvcihsb2NhdG9yKTtcclxuICAgICAgICAgICAgZWwgPSBhd2FpdCB0aGlzLmRyaXZlci4kKGxvY2F0b3IpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZWxlbWVudE5vdEZvdW5kID0gaXNFbGVtZW50Tm90Rm91bmQoZWwpO1xyXG4gICAgICAgIGlmIChlbGVtZW50Tm90Rm91bmQpIHtcclxuICAgICAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkVMRU1FTlRfTk9UX0ZPVU5ELCBgVW5hYmxlIHRvIGZpbmQgZWxlbWVudDogJHtsb2NhdG9yfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHdhaXRGb3JWaXNpYmxlKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBlbC53YWl0Rm9yRGlzcGxheWVkKHsgdGltZW91dDp0aW1lb3V0ID8gdGltZW91dCA6IHRoaXMud2FpdEZvclRpbWVvdXR9KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5yZXN0b3JlVGltZW91dEltcGxpY2l0LmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBpZiAoZS5tZXNzYWdlICYmIGUubWVzc2FnZS5pbmNsdWRlcygnc3RpbGwgbm90IGRpc3BsYXllZCcpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5FTEVNRU5UX05PVF9WSVNJQkxFLCBgRWxlbWVudCBub3QgdmlzaWJsZTogJHtsb2NhdG9yfWApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhyb3cgZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVsO1xyXG4gICAgfSxcclxuXHJcbiAgICBnZXRFbGVtZW50czogYXN5bmMgZnVuY3Rpb24obG9jYXRvciwgdGltZW91dCkge1xyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnNldFRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMsIHRpbWVvdXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IGVscyA9IFtdO1xyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBlbHMgPSBhd2FpdCB0aGlzLmRyaXZlci4kJCh0aGlzLmhlbHBlcnMuZ2V0V2Rpb0xvY2F0b3IobG9jYXRvcikpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudHNOb3RGb3VuZCA9IGlzRWxlbWVudE5vdEZvdW5kKGVscyk7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50c05vdEZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUgZXJyb3JzXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRpbWVvdXQpIHtcclxuICAgICAgICAgICAgYXdhaXQgbW9kdWxlLmV4cG9ydHMucmVzdG9yZVRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGVscztcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0Q2hpbGRFbGVtZW50OiBhc3luYyBmdW5jdGlvbihsb2NhdG9yLCBwYXJlbnRFbGVtZW50LCB3YWl0Rm9yVmlzaWJsZSwgdGltZW91dCkge1xyXG4gICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnNldFRpbWVvdXRJbXBsaWNpdC5jYWxsKHRoaXMsIHRpbWVvdXQpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbG9jYXRvciA9IHRoaXMuaGVscGVycy5nZXRXZGlvTG9jYXRvcihsb2NhdG9yKTtcclxuXHJcbiAgICAgICAgaWYgKCEocGFyZW50RWxlbWVudCAmJiBwYXJlbnRFbGVtZW50LiQpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCAnSW52YWxpZCBhcmd1bWVudCAtIHBhcmVudEVsZW1lbnQsIG11c3QgYmUgYSB2YWxpZCBlbGVtZW50Jyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZWwgPSBhd2FpdCBwYXJlbnRFbGVtZW50LiQobG9jYXRvcik7XHJcblxyXG4gICAgICAgIGNvbnN0IGVsZW1lbnROb3RGb3VuZCA9IGlzRWxlbWVudE5vdEZvdW5kKGVsKTtcclxuICAgICAgICBpZiAoZWxlbWVudE5vdEZvdW5kKSB7XHJcbiAgICAgICAgICAgIGlmICh0aW1lb3V0KSB7XHJcbiAgICAgICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5yZXN0b3JlVGltZW91dEltcGxpY2l0LmNhbGwodGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5FTEVNRU5UX05PVF9GT1VORCwgYFVuYWJsZSB0byBmaW5kIGVsZW1lbnQ6ICR7bG9jYXRvcn1gKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh3YWl0Rm9yVmlzaWJsZSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgZWwud2FpdEZvckRpc3BsYXllZCh7IHRpbWVvdXQ6IHRpbWVvdXQgPyB0aW1lb3V0IDogdGhpcy53YWl0Rm9yVGltZW91dH0pO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IG1vZHVsZS5leHBvcnRzLnJlc3RvcmVUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGlmIChlLm1lc3NhZ2UgJiYgZS5tZXNzYWdlLmluY2x1ZGVzKCdzdGlsbCBub3QgZGlzcGxheWVkJykpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkVMRU1FTlRfTk9UX1ZJU0lCTEUsIGBFbGVtZW50IG5vdCB2aXNpYmxlOiAke2xvY2F0b3J9YCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5yZXN0b3JlVGltZW91dEltcGxpY2l0LmNhbGwodGhpcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZWw7XHJcbiAgICB9LFxyXG5cclxuICAgIGdldENoaWxkRWxlbWVudHM6IGFzeW5jIGZ1bmN0aW9uKGxvY2F0b3IsIHBhcmVudEVsZW1lbnQsIHRpbWVvdXQpIHtcclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBtb2R1bGUuZXhwb3J0cy5zZXRUaW1lb3V0SW1wbGljaXQuY2FsbCh0aGlzLCB0aW1lb3V0KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxvY2F0b3IgPSB0aGlzLmhlbHBlcnMuZ2V0V2Rpb0xvY2F0b3IobG9jYXRvcik7XHJcblxyXG4gICAgICAgIGlmICghKHBhcmVudEVsZW1lbnQgJiYgcGFyZW50RWxlbWVudC4kJCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsICdJbnZhbGlkIGFyZ3VtZW50IC0gcGFyZW50RWxlbWVudCwgbXVzdCBiZSBhIHZhbGlkIGVsZW1lbnQnKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGxldCBlbHMgPSBbXTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBlbHMgPSBhd2FpdCBwYXJlbnRFbGVtZW50LiQkKGxvY2F0b3IpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudHNOb3RGb3VuZCA9IGlzRWxlbWVudE5vdEZvdW5kKGVscyk7XHJcbiAgICAgICAgICAgIGlmIChlbGVtZW50c05vdEZvdW5kKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUgZXJyb3JzXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aHJvdyBlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCBtb2R1bGUuZXhwb3J0cy5yZXN0b3JlVGltZW91dEltcGxpY2l0LmNhbGwodGhpcyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gZWxzO1xyXG4gICAgfSxcclxuXHJcbiAgICBzZXRUaW1lb3V0SW1wbGljaXQ6IGFzeW5jIGZ1bmN0aW9uKHRpbWVvdXQpIHtcclxuICAgICAgICBpZiAoIXRoaXMuZHJpdmVyKSB7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmICh0aGlzLmRyaXZlci5zZWxlbml1bVRpbWVvdXQgJiYgdGltZW91dCA+IHRoaXMuZHJpdmVyLnNlbGVuaXVtVGltZW91dCAqIDEwMDApIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIGB0aW1lb3V0IG11c3QgYmUgbGVzcyB0aGFuICR7dGhpcy5kcml2ZXIuc2VsZW5pdW1UaW1lb3V0ICogMTAwMH1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuZHJpdmVyLnNlbGVuaXVtQnJvd3NlclRpbWVvdXQgJiYgdGltZW91dCA+IHRoaXMuZHJpdmVyLnNlbGVuaXVtQnJvd3NlclRpbWVvdXQgKiAxMDAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBgdGltZW91dCBtdXN0IGJlIGxlc3MgdGhhbiAke3RoaXMuZHJpdmVyLnNlbGVuaXVtQnJvd3NlclRpbWVvdXQgKiAxMDAwfWApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgbGV0IHRpbWVvdXRzO1xyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcyAmJlxyXG4gICAgICAgICAgICB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMuYnJvd3Nlck5hbWUgPT09ICdNaWNyb3NvZnRFZGdlJ1xyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICAvLyBub3Qgc3VwcG9ydGVkIG9uIEVkZ2VcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcml2ZXIuZ2V0VGltZW91dHMpIHtcclxuICAgICAgICAgICAgLy8gY2hyb21lID49IDc1XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLnN0b3BVcmwgJiZcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMuc3RvcFVybC5pbmNsdWRlcygncGVyZmVjdG9tb2JpbGUuY29tJylcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vaWdub3JlXHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIHRpbWVvdXRzID0gYXdhaXQgdGhpcy5kcml2ZXIuZ2V0VGltZW91dHMoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgLy8gZmFpbHMgb24gcGVyZmVjdG8gbW9iaWxlXHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZ2V0VGltZW91dHMgZXJyb3InLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzICYmIHRoaXMuZHJpdmVyLmNhcGFiaWxpdGllcy50aW1lb3V0cykge1xyXG4gICAgICAgICAgICAvLyBjaHJvbWUgPj0gNzIgJiYgY2hyb21lIDwgNzVcclxuICAgICAgICAgICAgdGltZW91dHMgPSB0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMudGltZW91dHM7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGltZW91dHMgJiYgdGltZW91dHMuaW1wbGljaXQpIHtcclxuICAgICAgICAgICAgdGhpcy5fcHJldkltcGxpY2l0VGltZW91dCA9IHRpbWVvdXRzLmltcGxpY2l0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGltZW91dHMgJiYgdGltZW91dHMucGFnZUxvYWQpIHtcclxuICAgICAgICAgICAgdGhpcy5fcHJldlBhZ2VMb2FkVGltZW91dCA9IHRpbWVvdXRzLnBhZ2VMb2FkO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5kcml2ZXIuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zZXRUaW1lb3V0KHtcclxuICAgICAgICAgICAgICAgICdpbXBsaWNpdCc6IHRpbWVvdXQsXHJcbiAgICAgICAgICAgICAgICAncGFnZUxvYWQnOiB0aW1lb3V0XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgcmVzdG9yZVRpbWVvdXRJbXBsaWNpdDogYXN5bmMgZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZJbXBsaWNpdFRpbWVvdXQgJiYgdGhpcy5kcml2ZXIuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zZXRUaW1lb3V0KHsgJ2ltcGxpY2l0JzogdGhpcy5fcHJldkltcGxpY2l0VGltZW91dCB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX3ByZXZQYWdlTG9hZFRpbWVvdXQgJiYgdGhpcy5kcml2ZXIuc2V0VGltZW91dCkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmRyaXZlci5zZXRUaW1lb3V0KHsgJ3BhZ2VMb2FkJzogdGhpcy5fcHJldlBhZ2VMb2FkVGltZW91dCB9KTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50OiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAoYXJnID09PSB1bmRlZmluZWQgfHwgYXJnID09PSBudWxsKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBcIkludmFsaWQgYXJndW1lbnQgLSAnXCIgKyBuYW1lICsgXCInIGlzIHJlcXVpcmVkLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50U3RyaW5nOiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgc3RyaW5nLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50Tm9uRW1wdHlTdHJpbmc6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICghYXJnIHx8IHR5cGVvZiBhcmcgIT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCBcIkludmFsaWQgYXJndW1lbnQgLSAnXCIgKyBuYW1lICsgXCInIHNob3VsZCBiZSBhIG5vbi1lbXB0eSBzdHJpbmcuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYXNzZXJ0QXJndW1lbnROdW1iZXI6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgbnVtYmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50TnVtYmVyTm9uTmVnYXRpdmU6IGZ1bmN0aW9uKGFyZywgbmFtZSkge1xyXG4gICAgICAgIGlmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgXCJJbnZhbGlkIGFyZ3VtZW50IC0gJ1wiICsgbmFtZSArIFwiJyBzaG91bGQgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLlwiKTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIGFzc2VydEFyZ3VtZW50Qm9vbDogZnVuY3Rpb24oYXJnLCBuYW1lKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihhcmcpICE9IHR5cGVvZih0cnVlKSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlNDUklQVF9FUlJPUiwgXCJJbnZhbGlkIGFyZ3VtZW50IC0gJ1wiICsgbmFtZSArIFwiJyBzaG91bGQgYmUgdHJ1ZSBvciBmYWxzZS5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBhc3NlcnRBcmd1bWVudEJvb2xPcHRpb25hbDogZnVuY3Rpb24oYXJnLCBuYW1lKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZihhcmcpICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YoYXJnKSAhPSB0eXBlb2YodHJ1ZSkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIHRydWUgb3IgZmFsc2UuXCIpO1xyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgYXNzZXJ0QXJndW1lbnRUaW1lb3V0OiBmdW5jdGlvbihhcmcsIG5hbWUpIHtcclxuICAgICAgICBpZiAoYXJnICYmICh0eXBlb2YoYXJnKSAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCkpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsIFwiSW52YWxpZCBhcmd1bWVudCAtICdcIiArIG5hbWUgKyBcIicgc2hvdWxkIGJlIGEgbm9uIG5lZ2F0aXZlIG51bWJlci5cIik7XHJcbiAgICAgICAgfVxyXG4gICAgfSxcclxuXHJcbiAgICBjb250ZXh0TGlzdDogY29udGV4dExpc3QsXHJcblxyXG4gICAgYXNzZXJ0Q29udGV4dDogYXN5bmMgZnVuY3Rpb24oLi4uYWxvd2VkQ29udGV4dHMpIHtcclxuICAgICAgICB2YXIgY29udGV4dCA9IGF3YWl0IHRoaXMuZHJpdmVyLmdldENvbnRleHQoKTtcclxuICAgICAgICBjb25zdCBpc1dlYiA9IChjb250ZXh0ICYmIChjb250ZXh0LmluZGV4T2YoJ1dFQlZJRVcnKSA+IC0xIHx8IGNvbnRleHQuaW5kZXhPZignQ0hST01JVU0nKSA+IC0xKSk7XHJcblxyXG4gICAgICAgIGlmIChpc1dlYikge1xyXG4gICAgICAgICAgICBpZiAoYWxvd2VkQ29udGV4dHMuaW5jbHVkZXMoY29udGV4dExpc3Qud2ViKSB8fCBhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5oeWJyaWQpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUsIGFsbCBpcyBva1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsICdJbnZhbGlkIGNvbnRleHQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5hbmRyb2lkKSB8fCBhbG93ZWRDb250ZXh0cy5pbmNsdWRlcyhjb250ZXh0TGlzdC5pb3MpKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBpZ25vcmUsIGFsbCBpcyBva1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5TQ1JJUFRfRVJST1IsICdJbnZhbGlkIGNvbnRleHQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH0sXHJcblxyXG4gICAgZ2V0V2Rpb0xvY2F0b3I6IGZ1bmN0aW9uKGxvY2F0b3IpIHtcclxuICAgICAgICBpZiAoIWxvY2F0b3IpXHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuU0NSSVBUX0VSUk9SLCAnSW52YWxpZCBhcmd1bWVudCAtIGxvY2F0b3Igbm90IHNwZWNpZmllZCcpO1xyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBsb2NhdG9yID09PSAnb2JqZWN0JylcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3I7XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCcvJykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiBsb2NhdG9yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxlYXZlIHhwYXRoIGxvY2F0b3IgYXMgaXNcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2lkPScpID09PSAwKSB7XHJcbiAgICAgICAgICAgIC8vIGdlbmVyYXRlIFhQYXRoIGluc3RlYWQgb2YgQ1NTIGZvciBicm93c2VyIHRlc3RzLCBzaW5jZSBJRCBjYW4gY29udGFpbiBpbGxlZ2FsIGNoYXJhY3RlcnNcclxuICAgICAgICAgICAgLy8gYW5kIGVzY2FwaW5nIGRvZXNuJ3Qgd29yayByZWxpYWJseSBvciBpbiBpZGVudGljYWwgbWFubmVyIGluIGFsbCBicm93c2VyXHJcbiAgICAgICAgICAgIGlmICh0aGlzLmRyaXZlci5jYXBhYmlsaXRpZXMgJiYgdGhpcy5kcml2ZXIuY2FwYWJpbGl0aWVzLmJyb3dzZXJOYW1lKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYC8vKltAaWQ9XCIke2xvY2F0b3Iuc3Vic3RyKCdpZD0nLmxlbmd0aCl9XCJdYDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAnIycgKyBsb2NhdG9yLnN1YnN0cignaWQ9Jy5sZW5ndGgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGxvY2F0b3IuaW5kZXhPZignbmFtZT0nKSA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuICdbbmFtZT1cIicgKyBsb2NhdG9yLnN1YnN0cignbmFtZT0nLmxlbmd0aCkgKyAnXCJdJztcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2xpbms9JykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiAnPScgKyBsb2NhdG9yLnN1YnN0cignbGluaz0nLmxlbmd0aCk7XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCdsaW5rLWNvbnRhaW5zPScpID09PSAwKVxyXG4gICAgICAgICAgICByZXR1cm4gJyo9JyArIGxvY2F0b3Iuc3Vic3RyKCdsaW5rPScubGVuZ3RoKTtcclxuICAgICAgICBlbHNlIGlmIChsb2NhdG9yLmluZGV4T2YoJ2Nzcz0nKSA9PT0gMClcclxuICAgICAgICAgICAgcmV0dXJuIGxvY2F0b3Iuc3Vic3RyKCdjc3M9Jy5sZW5ndGgpOyAgICAgICAgICAgLy8gaW4gY2FzZSBvZiBjc3MsIGp1c3QgcmVtb3ZlIGNzcz0gcHJlZml4XHJcbiAgICAgICAgZWxzZSBpZiAobG9jYXRvci5pbmRleE9mKCd0YWc9JykgPT09IDApXHJcbiAgICAgICAgICAgIHJldHVybiAnPCcgKyBsb2NhdG9yLnN1YnN0cigndGFnPScubGVuZ3RoKSArICcgLz4nO1xyXG5cclxuICAgICAgICByZXR1cm4gbG9jYXRvcjtcclxuICAgIH0sXHJcblxyXG4gICAgZ2V0TG9nVHlwZXM6IGZ1bmN0aW9uKGNvbnRleHQpIHtcclxuICAgICAgICBpZiAoY29udGV4dCA9PT0gJ05BVElWRV9BUFAnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBbJ2xvZ2NhdCcsICdidWdyZXBvcnQnLCAnc2VydmVyJ107XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIFsnYnJvd3NlcicsICdkcml2ZXInXTtcclxuICAgICAgICB9XHJcbiAgICB9LFxyXG5cclxuICAgIHByb3ZpZGVyOiBwcm92aWRlcnMsXHJcblxyXG4gICAgZGV0ZXJtaW5lUHJvdmlkZXI6IGZ1bmN0aW9uKHdkaW9PcHRzKSB7XHJcbiAgICAgICAgaWYgKCF3ZGlvT3B0cyB8fCAhd2Rpb09wdHMuY2FwYWJpbGl0aWVzKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHdkaW9PcHRzLmNhcGFiaWxpdGllc1sncGVyZmVjdG9Nb2JpbGU6b3B0aW9ucyddIHx8ICh3ZGlvT3B0cy5ob3N0bmFtZSAmJiB3ZGlvT3B0cy5ob3N0bmFtZS5pbmNsdWRlcygncGVyZmVjdG9tb2JpbGUuY29tJykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBwcm92aWRlcnMuUEVSRkVDVE87XHJcbiAgICAgICAgfSBlbHNlIGlmICh3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ2Jyb3dzZXJzdGFjazpvcHRpb25zJ10pIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5CUk9XU0VSU1RBQ0s7XHJcbiAgICAgICAgfSBlbHNlIGlmICh3ZGlvT3B0cy5jYXBhYmlsaXRpZXNbJ3NhdWNlOm9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLlNBVUNFTEFCUztcclxuICAgICAgICB9IGVsc2UgaWYgKHdkaW9PcHRzLmhvc3RuYW1lLmluY2x1ZGVzKCdsYW1iZGF0ZXN0JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5MQU1CREFURVNUO1xyXG4gICAgICAgIH0gZWxzZSBpZiAod2Rpb09wdHMuY2FwYWJpbGl0aWVzWyd0ZXN0aW5nQm90Om9wdGlvbnMnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLlRFU1RJTkdCT1Q7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgIH1cclxufTtcclxuIl19
|
|
@@ -13,8 +13,6 @@ var _events = require("events");
|
|
|
13
13
|
|
|
14
14
|
var _when = require("when");
|
|
15
15
|
|
|
16
|
-
var _deasync = _interopRequireDefault(require("deasync"));
|
|
17
|
-
|
|
18
16
|
var _logger = _interopRequireDefault(require("../lib/logger"));
|
|
19
17
|
|
|
20
18
|
var _debugger = _interopRequireDefault(require("../lib/debugger"));
|
|
@@ -70,23 +68,27 @@ class WorkerProcess extends _events.EventEmitter {
|
|
|
70
68
|
let globalNpmModulesPath;
|
|
71
69
|
|
|
72
70
|
if (process.platform === 'darwin') {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
71
|
+
await (() => {
|
|
72
|
+
return new Promise((resolve, reject) => {
|
|
73
|
+
try {
|
|
74
|
+
(0, _child_process.exec)('npm root -g', {
|
|
75
|
+
cwd: process.cwd()
|
|
76
|
+
}, function (err, stdout) {
|
|
77
|
+
if (err) {
|
|
78
|
+
console.log('darwin npm root error:', err);
|
|
79
|
+
resolve();
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
if (stdout && stdout.toString) {
|
|
83
|
+
globalNpmModulesPath = stdout.toString().trim();
|
|
84
|
+
resolve();
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
} catch (e) {
|
|
88
|
+
reject(e);
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
})();
|
|
90
92
|
} else {
|
|
91
93
|
const execResult = (0, _child_process.execSync)('npm root -g');
|
|
92
94
|
|
|
@@ -460,4 +462,4 @@ class WorkerProcess extends _events.EventEmitter {
|
|
|
460
462
|
}
|
|
461
463
|
|
|
462
464
|
exports.default = WorkerProcess;
|
|
463
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5uZXJzL1dvcmtlclByb2Nlc3MuanMiXSwibmFtZXMiOlsibG9nIiwic25vb3plIiwibXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJXb3JrZXJQcm9jZXNzIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJwaWQiLCJ3b3JrZXJQYXRoIiwiZGVidWdNb2RlIiwiZGVidWdQb3J0IiwibmFtZSIsIm5wbUdSb290RXhlY3V0aW9uIiwiX25hbWUiLCJfaXNSdW5uaW5nIiwiX2lzSW5pdGlhbGl6ZWQiLCJfc3RvcHBlZEJ5VXNlciIsIl9waWQiLCJfY2hpbGRQcm9jIiwiX2RlYnVnTW9kZSIsIl9kZWJ1Z1BvcnQiLCJfd29ya2VyUGF0aCIsIl9ucG1HUm9vdEV4ZWN1dGlvbiIsIl9icmVha3BvaW50RXJyb3JzIiwiX2NhbGxzIiwiX2V2ZW50SGFuZGxlcnMiLCJzdGFydCIsImVudiIsIk9iamVjdCIsImFzc2lnbiIsInByb2Nlc3MiLCJPWF9XT1JLRVIiLCJERUJVRyIsImlzTmFOIiwiTk9fVVBEQVRFX05PVElGSUVSIiwiaW5mbyIsImZvcmtPcHRzIiwiY3dkIiwiZXhlY0FyZ3YiLCJkZXRhY2hlZCIsInB1c2giLCJnbG9iYWxOcG1Nb2R1bGVzUGF0aCIsInBsYXRmb3JtIiwiZG9uZSIsImVyciIsInN0ZG91dCIsImNvbnNvbGUiLCJ0b1N0cmluZyIsInRyaW0iLCJkZWFzeW5jIiwibG9vcFdoaWxlIiwiZXhlY1Jlc3VsdCIsIk5PREVfUEFUSCIsImUiLCJfaG9va0NoaWxkUHJvY0V2ZW50cyIsInN0YXJ0RGVidWdnZXIiLCJfaW5pdGlhbGl6ZURlYnVnZ2VyIiwic3RvcCIsInN0YXR1cyIsIl9kZWJ1Z2dlciIsIl9wYXVzZWQiLCJkaXNhYmxlIiwicmVzdW1lVGVybWluYXRlIiwiaW52b2tlIiwiY2xvc2UiLCJfc2VuZCIsInR5cGUiLCJraWxsIiwiX3Jlc2V0IiwiaW5pdCIsInJpZCIsIm9wdGlvbnMiLCJjYXBzIiwiYmVmb3JlVGltZSIsIkRhdGUiLCJnZXRUaW1lIiwiYWZ0ZXJUaW1lIiwiZHVyYXRpb24iLCJkaXNwb3NlIiwiZGlzcG9zZU1vZHVsZXMiLCJkZWJ1Z2dlciIsImlzUnVubmluZyIsImlzSW5pdGlhbGl6ZWQiLCJydW4iLCJydW5PcHRzIiwic3Vic2NyaWJlIiwiZXZlbnROYW1lIiwiaGFuZGxlciIsImV2ZW50IiwibWV0aG9kIiwiYXJncyIsIkFycmF5IiwicHJvdG90eXBlIiwic2xpY2UiLCJjYWxsIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwic2hpZnQiLCJjYWxsSWQiLCJveHV0aWwiLCJnZW5lcmF0ZVVuaXF1ZUlkIiwicHJvbWlzZSIsImludm9rZVRlc3RIb29rIiwiaG9va05hbWUiLCJob29rQXJncyIsIm1lc3NhZ2UiLCJzZW5kIiwiX3doZW5PeHlnZW5EaXNwb3NlZCIsIl93aGVuT3h5Z2VuSW5pdGlhbGl6ZWQiLCJfd2hlbk1vZHVsZXNEaXNwb3NlZCIsIm9uIiwiX2hhbmRsZUNoaWxkTWVzc2FnZSIsImJpbmQiLCJfaGFuZGxlQ2hpbGRFcnJvciIsIl9oYW5kbGVDaGlsZEV4aXQiLCJfaGFuZGxlQ2hpbGREaXNjb25uZWN0IiwiX2hhbmRsZUNoaWxkVW5jYXVnaHRFeGNlcHRpb24iLCJfaGFuZGxlQ2hpbGRTaWdJbnQiLCJtc2ciLCJoYXNPd25Qcm9wZXJ0eSIsImVycm9yIiwicmVqZWN0IiwicmV0dmFsIiwiZW1pdCIsIl9oYW5kbGVXb3JrZXJFdmVudCIsImFwcGx5IiwidW5kZWZpbmVkIiwiZGVidWciLCJleGl0Q29kZSIsInNpZ25hbCIsIkRlYnVnZ2VyIiwid2hlbkRlYnVnZ2VyUmVhZHkiLCJfdGhpcyIsImNvbnRpbnVlIiwiaXNSZXNvbHZlZCIsImJyZWFrcG9pbnREYXRhIiwiYnJlYWtFcnJvciIsImluY2x1ZGVzIiwiY29ubmVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBR0E7O0FBQ0E7Ozs7QUFIQSxNQUFN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QTFYbUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JrLCBleGVjU3luYywgZXhlYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xyXG5pbXBvcnQgeyBkZWZlciB9IGZyb20gJ3doZW4nO1xyXG5pbXBvcnQgZGVhc3luYyBmcm9tICdkZWFzeW5jJztcclxuXHJcbi8vIHNldHVwIGxvZ2dlclxyXG5pbXBvcnQgbG9nZ2VyIGZyb20gJy4uL2xpYi9sb2dnZXInO1xyXG5jb25zdCBsb2cgPSBsb2dnZXIoJ1dvcmtlclByb2Nlc3MnKTtcclxuXHJcbmltcG9ydCBEZWJ1Z2dlciBmcm9tICcuLi9saWIvZGVidWdnZXInO1xyXG5pbXBvcnQgb3h1dGlsIGZyb20gJy4uL2xpYi91dGlsJztcclxuXHJcbi8vIHNub296ZSBmdW5jdGlvbiAtIGFzeW5jIHdyYXBwZXIgYXJvdW5kIHNldFRpbWVvdXQgZnVuY3Rpb25cclxuY29uc3Qgc25vb3plID0gbXMgPT4gbmV3IFByb21pc2UocmVzb2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIG1zKSk7XHJcblxyXG4vKipcclxuICogV29ya2VyUHJvY2VzcyByZXNwb25zaWJsZSBmb3Igc3Bhd25pbmcgYSB3b3JrZXIgcHJvY2VzcyB0aGUgdGVzdCBpbnN0YW5jZS5cclxuICovXHJcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFdvcmtlclByb2Nlc3MgZXh0ZW5kcyBFdmVudEVtaXR0ZXIge1xyXG4gICAgY29uc3RydWN0b3IocGlkLCB3b3JrZXJQYXRoLCBkZWJ1Z01vZGUsIGRlYnVnUG9ydCwgbmFtZSA9IG51bGwsIG5wbUdSb290RXhlY3V0aW9uID0gdHJ1ZSkge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICAgICAgdGhpcy5fbmFtZSA9IG5hbWU7XHJcbiAgICAgICAgdGhpcy5faXNSdW5uaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuX3N0b3BwZWRCeVVzZXIgPSB0cnVlO1xyXG4gICAgICAgIHRoaXMuX3BpZCA9IHBpZDtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2MgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnTW9kZSA9IGRlYnVnTW9kZTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z1BvcnQgPSBkZWJ1Z1BvcnQ7XHJcbiAgICAgICAgdGhpcy5fd29ya2VyUGF0aCA9IHdvcmtlclBhdGg7XHJcbiAgICAgICAgdGhpcy5fbnBtR1Jvb3RFeGVjdXRpb24gPSBucG1HUm9vdEV4ZWN1dGlvbjtcclxuICAgICAgICB0aGlzLl9icmVha3BvaW50RXJyb3JzID0gW107XHJcbiAgICAgICAgLy8gaG9sZCB0aGUgcmVtb3RlIGludm9jYXRpb24gcHJvbWlzZVxyXG4gICAgICAgIHRoaXMuX2NhbGxzID0ge307XHJcbiAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVycyA9IHt9O1xyXG4gICAgfVxyXG4gICAgYXN5bmMgc3RhcnQoKSB7XHJcbiAgICAgICAgY29uc3QgZW52ID0gT2JqZWN0LmFzc2lnbihwcm9jZXNzLmVudiwge1xyXG4gICAgICAgICAgICBPWF9XT1JLRVI6IHRydWUsXHJcbiAgICAgICAgICAgIERFQlVHOiAhaXNOYU4odGhpcy5fZGVidWdQb3J0KSxcclxuICAgICAgICAgICAgTk9fVVBEQVRFX05PVElGSUVSOiB0cnVlXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGxvZy5pbmZvKGBTdGFydGluZyB3b3JrZXIgcHJvY2VzcyAke3RoaXMuX3BpZH0uYCk7XHJcbiAgICAgICAgbGV0IGZvcmtPcHRzID0ge1xyXG4gICAgICAgICAgICBjd2Q6IHByb2Nlc3MuY3dkKCksXHJcbiAgICAgICAgICAgIGVudixcclxuICAgICAgICAgICAgZXhlY0FyZ3Y6IFtdLFxyXG4gICAgICAgICAgICBkZXRhY2hlZDogZmFsc2UsXHJcbiAgICAgICAgICAgIC8vc2lsZW50OiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnUG9ydCkge1xyXG4gICAgICAgICAgICAvLyBhZGQgLS1pbnNwZWN0LWJyayBhcmd1bWVudCBpZiBkZWJ1ZyBwb3J0IGlzIHNwZWNpZmllZFxyXG4gICAgICAgICAgICBmb3JrT3B0cy5leGVjQXJndiA9IE9iamVjdC5hc3NpZ24oZm9ya09wdHMuZXhlY0FyZ3YsIFsnLS1pbnNwZWN0LWJyaz0nICsgdGhpcy5fZGVidWdQb3J0XSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBwcmludCBtb3JlIGluZm9ybWF0aW9uIGZvciBub2RlanMgZXJyb3JzXHJcbiAgICAgICAgZm9ya09wdHMuZXhlY0FyZ3YucHVzaCgnLS10cmFjZS13YXJuaW5ncycpO1xyXG5cclxuICAgICAgICBpZiAodGhpcy5fbnBtR1Jvb3RFeGVjdXRpb24pIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGxldCBnbG9iYWxOcG1Nb2R1bGVzUGF0aDtcclxuXHJcbiAgICAgICAgICAgICAgICBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ2RhcndpbicpIHtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgZG9uZSA9IGZhbHNlO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBleGVjKCducG0gcm9vdCAtZycsIHtjd2Q6IHByb2Nlc3MuY3dkKCl9LCBmdW5jdGlvbiAoZXJyLCBzdGRvdXQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVycikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5sb2coJ2RhcndpbiBucG0gcm9vdCBlcnJvcjonLCBlcnIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ZG91dCAmJiBzdGRvdXQudG9TdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE5wbU1vZHVsZXNQYXRoID0gc3Rkb3V0LnRvU3RyaW5nKCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBkZWFzeW5jLmxvb3BXaGlsZSgoKSA9PiAhZG9uZSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4ZWNSZXN1bHQgPSBleGVjU3luYygnbnBtIHJvb3QgLWcnKTtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGV4ZWNSZXN1bHQgJiYgZXhlY1Jlc3VsdC50b1N0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBnbG9iYWxOcG1Nb2R1bGVzUGF0aCA9IGV4ZWNSZXN1bHQudG9TdHJpbmcoKS50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICBnbG9iYWxOcG1Nb2R1bGVzUGF0aCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcmtPcHRzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgZm9ya09wdHMuZW52XHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICBmb3JrT3B0cy5lbnYuTk9ERV9QQVRIID0gZ2xvYmFsTnBtTW9kdWxlc1BhdGg7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCducG0gcm9vdCBlcnJvcjonLCBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gZm9yayB3b3JrZXJcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2MgPSBmb3JrKHRoaXMuX3dvcmtlclBhdGgsIGZvcmtPcHRzKTtcclxuXHJcbiAgICAgICAgdGhpcy5faG9va0NoaWxkUHJvY0V2ZW50cygpO1xyXG4gICAgICAgIC8vIGlmIHdlIGFyZSBpbiBkZWJ1ZyBtb2RlLCBpbml0aWFsaXplIGRlYnVnZ2VyIGFuZCBvbmx5IHRoZW4gc3RhcnQgbW9kdWxlcyAnaW5pdCdcclxuXHJcbiAgICAgICAgdGhpcy5faXNSdW5uaW5nID0gdHJ1ZTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2hpbGRQcm9jO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHN0YXJ0RGVidWdnZXIoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnTW9kZSkge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9pbml0aWFsaXplRGVidWdnZXIoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgc3RvcChzdGF0dXMgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzSW5pdGlhbGl6ZWQgJiYgdGhpcy5fY2hpbGRQcm9jKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlciAmJiB0aGlzLl9kZWJ1Z2dlci5fcGF1c2VkKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoJ0NBTkNFTEVEJyA9PT0gc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVidWdnZXIuZGlzYWJsZSgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBhd2FpdCB0aGlzLl9kZWJ1Z2dlci5yZXN1bWVUZXJtaW5hdGUoKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZSgnZGlzcG9zZScsIHN0YXR1cyk7XHJcbiAgICAgICAgICAgIGF3YWl0IHNub296ZSgxMDApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5fY2hpbGRQcm9jKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHNub296ZSgxMDApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fZGVidWdnZXIpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVidWdnZXIuY2xvc2UoKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuX3NlbmQoe1xyXG4gICAgICAgICAgICB0eXBlOiAnZXhpdCcsXHJcbiAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMua2lsbCgpO1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0KCk7XHJcbiAgICB9XHJcblxyXG4gICAga2lsbCgpIHtcclxuICAgICAgICBpZiAodGhpcy5fY2hpbGRQcm9jKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2NoaWxkUHJvYy5raWxsKCdTSUdJTlQnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW5pdChyaWQsIG9wdGlvbnMsIGNhcHMpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2lzSW5pdGlhbGl6ZWQpIHtcclxuICAgICAgICAgICAgY29uc3QgYmVmb3JlVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZSgnaW5pdCcsIHJpZCwgb3B0aW9ucywgY2Fwcyk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBhZnRlclRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgY29uc3QgZHVyYXRpb24gPSBhZnRlclRpbWUgLSBiZWZvcmVUaW1lO1xyXG4gICAgICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgbGV0IHN0YXJ0ID0gJyc7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLl9uYW1lKSB7XHJcbiAgICAgICAgICAgICAgICBzdGFydCA9IHRoaXMuX25hbWUrJyAnO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKHN0YXJ0KydXb3JrZXIgaW5pdGlhbGl6ZWQgaW4gJyArIGR1cmF0aW9uICsgJyBtcycpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBkaXNwb3NlKHN0YXR1cyA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5fZGVidWdnZXIpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVidWdnZXIuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX2lzSW5pdGlhbGl6ZWQgJiYgdGhpcy5fY2hpbGRQcm9jKSB7XHJcbiAgICAgICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW52b2tlKCdkaXNwb3NlJywgc3RhdHVzKTtcclxuICAgICAgICAgICAgdGhpcy5fc2VuZCh7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnZXhpdCcsXHJcbiAgICAgICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMua2lsbCgpO1xyXG5cclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlbmQoe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2V4aXQnLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmtpbGwoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGlzcG9zZU1vZHVsZXMoc3RhdHVzID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1Z2dlcikge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLl9kZWJ1Z2dlci5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAodGhpcy5fY2hpbGRQcm9jKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuaW52b2tlKCdkaXNwb3NlTW9kdWxlcycsIHN0YXR1cyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGdldCBkZWJ1Z2dlciAoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2RlYnVnZ2VyO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc1J1bm5pbmcgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc1J1bm5pbmc7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IGlzSW5pdGlhbGl6ZWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSW5pdGlhbGl6ZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgcnVuKHJ1bk9wdHMpIHtcclxuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5pbnZva2UoJ3J1bicsIHJ1bk9wdHMpO1xyXG4gICAgfVxyXG5cclxuICAgIHN1YnNjcmliZShldmVudE5hbWUsIGhhbmRsZXIpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2V2ZW50SGFuZGxlcnNbZXZlbnROYW1lXSAmJiB0eXBlb2YgaGFuZGxlciA9PT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXJzW2V2ZW50TmFtZV0gPSBoYW5kbGVyO1xyXG4gICAgICAgICAgICB0aGlzLl9zZW5kKHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdzdWJzY3JpYmUnLFxyXG4gICAgICAgICAgICAgICAgZXZlbnQ6IGV2ZW50TmFtZSxcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGludm9rZShtZXRob2QpIHtcclxuICAgICAgICBsZXQgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyk7XHJcbiAgICAgICAgLy8gaWdub3JlIGZpcnN0IGFyZ3VtZW50IC0gZS5nLiBtZXRob2RcclxuICAgICAgICBpZiAoYXJncy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgIGFyZ3Muc2hpZnQoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICBjb25zdCBjYWxsSWQgPSBveHV0aWwuZ2VuZXJhdGVVbmlxdWVJZCgpO1xyXG4gICAgICAgICAgICB0aGlzLl9zZW5kKHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdpbnZva2UnLFxyXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBtZXRob2QsXHJcbiAgICAgICAgICAgICAgICBjYWxsSWQ6IGNhbGxJZCxcclxuICAgICAgICAgICAgICAgIGFyZ3M6IGFyZ3NcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMuX2NhbGxzW2NhbGxJZF0gPSBkZWZlcigpO1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5fY2FsbHNbY2FsbElkXS5wcm9taXNlO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbnZva2VUZXN0SG9vayhob29rTmFtZSwgaG9va0FyZ3MpIHtcclxuICAgICAgICBjb25zdCBjYWxsSWQgPSBveHV0aWwuZ2VuZXJhdGVVbmlxdWVJZCgpO1xyXG4gICAgICAgIHRoaXMuX3NlbmQoe1xyXG4gICAgICAgICAgICB0eXBlOiAnaW52b2tlOmhvb2snLFxyXG4gICAgICAgICAgICBtZXRob2Q6IGhvb2tOYW1lLFxyXG4gICAgICAgICAgICBjYWxsSWQ6IGNhbGxJZCxcclxuICAgICAgICAgICAgYXJnczogaG9va0FyZ3NcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9jYWxsc1tjYWxsSWRdID0gZGVmZXIoKTtcclxuICAgICAgICByZXR1cm4gdGhpcy5fY2FsbHNbY2FsbElkXS5wcm9taXNlO1xyXG4gICAgfVxyXG5cclxuICAgIF9zZW5kKG1lc3NhZ2UpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5zZW5kKG1lc3NhZ2UpO1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIF9yZXNldCgpIHtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2MgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnZ2VyID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z01vZGUgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnUG9ydCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fd2hlbk94eWdlbkRpc3Bvc2VkID0gbnVsbDtcclxuICAgICAgICB0aGlzLl93aGVuT3h5Z2VuSW5pdGlhbGl6ZWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3doZW5Nb2R1bGVzRGlzcG9zZWQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX2lzSW5pdGlhbGl6ZWQgPSBmYWxzZTtcclxuICAgIH1cclxuXHJcbiAgICBfaG9va0NoaWxkUHJvY0V2ZW50cygpIHtcclxuICAgICAgICBpZiAoIXRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5vbignbWVzc2FnZScsIHRoaXMuX2hhbmRsZUNoaWxkTWVzc2FnZS5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2Mub24oJ2Vycm9yJywgdGhpcy5faGFuZGxlQ2hpbGRFcnJvci5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2Mub24oJ2V4aXQnLCB0aGlzLl9oYW5kbGVDaGlsZEV4aXQuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5fY2hpbGRQcm9jLm9uKCdkaXNjb25uZWN0JywgdGhpcy5faGFuZGxlQ2hpbGREaXNjb25uZWN0LmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCB0aGlzLl9oYW5kbGVDaGlsZFVuY2F1Z2h0RXhjZXB0aW9uLmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5vbignU0lHSU5UJywgdGhpcy5faGFuZGxlQ2hpbGRTaWdJbnQuYmluZCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUNoaWxkTWVzc2FnZShtc2cpIHtcclxuICAgICAgICBpZiAobXNnLmV2ZW50KSB7XHJcbiAgICAgICAgICAgIHN3aXRjaCAobXNnLmV2ZW50KSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdpbnZva2U6cmVzdWx0JzpcclxuICAgICAgICAgICAgICAgICAgICBpZiAobXNnLmNhbGxJZCAmJiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodGhpcy5fY2FsbHMsIG1zZy5jYWxsSWQpKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHByb21pc2UgPSB0aGlzLl9jYWxsc1ttc2cuY2FsbElkXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1zZy5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZWplY3QobXNnLmVycm9yKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVzb2x2ZShtc2cucmV0dmFsKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkZWxldGUgdGhpcy5fY2FsbHNbbXNnLmNhbGxJZF07XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSAncmVwb3J0ZXInOlxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChtc2cubWV0aG9kKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgncmVwb3J0ZXInLCB7IHBpZDogdGhpcy5fcGlkLCBtZXRob2Q6IG1zZy5tZXRob2QsIGFyZ3M6IG1zZy5hcmdzIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ2V2ZW50JzpcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9oYW5kbGVXb3JrZXJFdmVudChtc2cubmFtZSwgbXNnLmFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZW1pdCgnbWVzc2FnZScsIE9iamVjdC5hc3NpZ24obXNnLCB7IHBpZDogdGhpcy5fcGlkIH0pKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfaGFuZGxlV29ya2VyRXZlbnQobmFtZSwgYXJncykge1xyXG4gICAgICAgIGlmIChuYW1lICYmIHRoaXMuX2V2ZW50SGFuZGxlcnMgJiYgdGhpcy5fZXZlbnRIYW5kbGVyc1tuYW1lXSkge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZXZlbnRIYW5kbGVyc1tuYW1lXS5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBsb2cuZXJyb3IoJ0Vycm9yIHRocm93biBieSB3b3JrZXIgZXZlbnQgaGFuZGxlciBcIiR7bmFtZX06JywgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUNoaWxkRXJyb3IoZXJyb3IpIHtcclxuICAgICAgICBsb2cuZGVidWcoYFdvcmtlciAke3RoaXMuX3BpZH0gdGhyb3duIGFuIGVycm9yOiAke2Vycm9yfS5gKTtcclxuICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgT2JqZWN0LmFzc2lnbih7IGVycm9yIDogZXJyb3IgfSwgeyBwaWQ6IHRoaXMuX3BpZCB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUNoaWxkRXhpdChleGl0Q29kZSwgc2lnbmFsKSB7XHJcbiAgICAgICAgbG9nLmRlYnVnKGBXb3JrZXIgJHt0aGlzLl9waWR9IGZpbmlzaGVkIHdpdGggZXhpdCBjb2RlICR7ZXhpdENvZGV9IGFuZCBzaWduYWwgJHtzaWduYWx9LmApO1xyXG4gICAgICAgIHRoaXMuX3Jlc2V0KCk7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdleGl0JywgeyBwaWQ6IHRoaXMuX3BpZCwgZXhpdENvZGUsIHNpZ25hbCB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQ2hpbGREaXNjb25uZWN0KCkge1xyXG4gICAgICAgIGxvZy5kZWJ1ZyhgV29ya2VyICR7dGhpcy5fcGlkfSBkaXNjb25uZWN0ZWQuYCk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUNoaWxkVW5jYXVnaHRFeGNlcHRpb24oZXJyb3IpIHtcclxuICAgICAgICBsb2cuZGVidWcoYFdvcmtlciAke3RoaXMuX3BpZH0gdGhyb3duIGFuIHVuY2F1Z2h0IGVycm9yOiAke2Vycm9yfS5gKTtcclxuICAgICAgICB0aGlzLl9yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZW1pdCgnZXJyb3InLCBPYmplY3QuYXNzaWduKHsgZXJyb3IgOiBlcnJvciB9LCB7IHBpZDogdGhpcy5fcGlkIH0pKTtcclxuICAgICAgICB0aGlzLmVtaXQoJ2V4aXQnLCB7IHBpZDogdGhpcy5fcGlkLCBleGl0Q29kZTogMSB9KTtcclxuICAgIH1cclxuXHJcbiAgICBfaGFuZGxlQ2hpbGRTaWdJbnQoKSB7XHJcbiAgICAgICAgbG9nLmRlYnVnKGBXb3JrZXIgJHt0aGlzLl9waWR9IHJlY2VpdmVkIFNJR0lOVCBzaWduYWwuYCk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX2luaXRpYWxpemVEZWJ1Z2dlcigpIHtcclxuICAgICAgICB0aGlzLl9kZWJ1Z2dlciA9IG5ldyBEZWJ1Z2dlcih0aGlzLl9waWQpO1xyXG4gICAgICAgIGxldCB3aGVuRGVidWdnZXJSZWFkeSA9IGRlZmVyKCk7XHJcbiAgICAgICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgICAgIC8vIGhhbmRsZSBkZWJ1Z2dlciBldmVudHNcclxuICAgICAgICB0aGlzLl9kZWJ1Z2dlci5vbigncmVhZHknLCBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICAgICAgLy8gcmVzdW1lIHRoZSBmaXJzdCBicmVha3BvaW50IHdoaWNoIGlzIGF1dG9tYXRpY2FsbHkgYWRkZWQgYnkgdGhlIGRlYnVnZ2VyXHJcbiAgICAgICAgICAgIGlmIChfdGhpcy5fZGVidWdnZXIgJiYgX3RoaXMuX2RlYnVnZ2VyLmNvbnRpbnVlKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5fZGVidWdnZXIuY29udGludWUoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB3aGVuRGVidWdnZXJSZWFkeS5yZXNvbHZlKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fZGVidWdnZXIub24oJ2Vycm9yJywgZnVuY3Rpb24oZXJyKSB7XHJcblxyXG4gICAgICAgICAgICBsb2cuZXJyb3IoJ2RlYnVnZ2VyIG9uIGVycm9yIDonLCBlcnIpO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5lbWl0KCdkZWJ1Z2dlcjplcnJvcicsIE9iamVjdC5hc3NpZ24oZXJyLCB7IHBpZDogdGhpcy5fcGlkIH0pKTtcclxuICAgICAgICAgICAgLy8gcmVqZWN0IHRoZSBwcm9taXNlIG9ubHkgaWYgd2UgZ290IGFuIGVycm9yIHJpZ2h0IGFmdGVyIF9kZWJ1Z2dlci5jb25uZWN0KCkgY2FsbCBiZWxvdyAtIHdlIG5lZWQgdGhpcyB0byBpbmRpY2F0ZSBkZWJ1Z2dlciBpbml0aWFsaXphdGlvbiBlcnJvclxyXG4gICAgICAgICAgICBpZiAoIXdoZW5EZWJ1Z2dlclJlYWR5LmlzUmVzb2x2ZWQpIHtcclxuICAgICAgICAgICAgICAgIHdoZW5EZWJ1Z2dlclJlYWR5LnJlamVjdChlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z2dlci5vbignYnJlYWsnLCBmdW5jdGlvbihicmVha3BvaW50RGF0YSkge1xyXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ2RlYnVnZ2VyOmJyZWFrJywgYnJlYWtwb2ludERhdGEpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnZ2VyLm9uKCdicmVha0Vycm9yJywgYXN5bmMgZnVuY3Rpb24oYnJlYWtFcnJvcikge1xyXG5cclxuICAgICAgICAgICAgaWYgKGJyZWFrRXJyb3IgJiYgYnJlYWtFcnJvci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoX3RoaXMuX2JyZWFrcG9pbnRFcnJvcnMuaW5jbHVkZXMoYnJlYWtFcnJvci5tZXNzYWdlKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZVxyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5fYnJlYWtwb2ludEVycm9ycy5wdXNoKGJyZWFrRXJyb3IubWVzc2FnZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5lbWl0KCdkZWJ1Z2dlcjpicmVha0Vycm9yJywgYnJlYWtFcnJvcik7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgbG9nLmluZm8oYENvbm5lY3RpbmcgdG8gZGVidWdnZXIgb24gcG9ydCAke3RoaXMuX2RlYnVnUG9ydH0uLi5gKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVidWdnZXIuY29ubmVjdCh0aGlzLl9kZWJ1Z1BvcnQsICcxMjcuMC4wLjEnKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGxvZy5lcnJvcignQ2Fubm90IGNvbm5lY3QgdG8gdGhlIGRlYnVnZ2VyOiAnLCBlKTtcclxuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9ICdDYW5ub3QgY29ubmVjdCB0byB0aGUgZGVidWdnZXI6ICcgKyBlLm1lc3NhZ2U7XHJcbiAgICAgICAgICAgIHdoZW5EZWJ1Z2dlclJlYWR5LnJlamVjdChtZXNzYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiB3aGVuRGVidWdnZXJSZWFkeS5wcm9taXNlO1xyXG4gICAgfVxyXG59Il19
|
|
465
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydW5uZXJzL1dvcmtlclByb2Nlc3MuanMiXSwibmFtZXMiOlsibG9nIiwic25vb3plIiwibXMiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJXb3JrZXJQcm9jZXNzIiwiRXZlbnRFbWl0dGVyIiwiY29uc3RydWN0b3IiLCJwaWQiLCJ3b3JrZXJQYXRoIiwiZGVidWdNb2RlIiwiZGVidWdQb3J0IiwibmFtZSIsIm5wbUdSb290RXhlY3V0aW9uIiwiX25hbWUiLCJfaXNSdW5uaW5nIiwiX2lzSW5pdGlhbGl6ZWQiLCJfc3RvcHBlZEJ5VXNlciIsIl9waWQiLCJfY2hpbGRQcm9jIiwiX2RlYnVnTW9kZSIsIl9kZWJ1Z1BvcnQiLCJfd29ya2VyUGF0aCIsIl9ucG1HUm9vdEV4ZWN1dGlvbiIsIl9icmVha3BvaW50RXJyb3JzIiwiX2NhbGxzIiwiX2V2ZW50SGFuZGxlcnMiLCJzdGFydCIsImVudiIsIk9iamVjdCIsImFzc2lnbiIsInByb2Nlc3MiLCJPWF9XT1JLRVIiLCJERUJVRyIsImlzTmFOIiwiTk9fVVBEQVRFX05PVElGSUVSIiwiaW5mbyIsImZvcmtPcHRzIiwiY3dkIiwiZXhlY0FyZ3YiLCJkZXRhY2hlZCIsInB1c2giLCJnbG9iYWxOcG1Nb2R1bGVzUGF0aCIsInBsYXRmb3JtIiwicmVqZWN0IiwiZXJyIiwic3Rkb3V0IiwiY29uc29sZSIsInRvU3RyaW5nIiwidHJpbSIsImUiLCJleGVjUmVzdWx0IiwiTk9ERV9QQVRIIiwiX2hvb2tDaGlsZFByb2NFdmVudHMiLCJzdGFydERlYnVnZ2VyIiwiX2luaXRpYWxpemVEZWJ1Z2dlciIsInN0b3AiLCJzdGF0dXMiLCJfZGVidWdnZXIiLCJfcGF1c2VkIiwiZGlzYWJsZSIsInJlc3VtZVRlcm1pbmF0ZSIsImludm9rZSIsImNsb3NlIiwiX3NlbmQiLCJ0eXBlIiwia2lsbCIsIl9yZXNldCIsImluaXQiLCJyaWQiLCJvcHRpb25zIiwiY2FwcyIsImJlZm9yZVRpbWUiLCJEYXRlIiwiZ2V0VGltZSIsImFmdGVyVGltZSIsImR1cmF0aW9uIiwiZGlzcG9zZSIsImRpc3Bvc2VNb2R1bGVzIiwiZGVidWdnZXIiLCJpc1J1bm5pbmciLCJpc0luaXRpYWxpemVkIiwicnVuIiwicnVuT3B0cyIsInN1YnNjcmliZSIsImV2ZW50TmFtZSIsImhhbmRsZXIiLCJldmVudCIsIm1ldGhvZCIsImFyZ3MiLCJBcnJheSIsInByb3RvdHlwZSIsInNsaWNlIiwiY2FsbCIsImFyZ3VtZW50cyIsImxlbmd0aCIsInNoaWZ0IiwiY2FsbElkIiwib3h1dGlsIiwiZ2VuZXJhdGVVbmlxdWVJZCIsInByb21pc2UiLCJpbnZva2VUZXN0SG9vayIsImhvb2tOYW1lIiwiaG9va0FyZ3MiLCJtZXNzYWdlIiwic2VuZCIsIl93aGVuT3h5Z2VuRGlzcG9zZWQiLCJfd2hlbk94eWdlbkluaXRpYWxpemVkIiwiX3doZW5Nb2R1bGVzRGlzcG9zZWQiLCJvbiIsIl9oYW5kbGVDaGlsZE1lc3NhZ2UiLCJiaW5kIiwiX2hhbmRsZUNoaWxkRXJyb3IiLCJfaGFuZGxlQ2hpbGRFeGl0IiwiX2hhbmRsZUNoaWxkRGlzY29ubmVjdCIsIl9oYW5kbGVDaGlsZFVuY2F1Z2h0RXhjZXB0aW9uIiwiX2hhbmRsZUNoaWxkU2lnSW50IiwibXNnIiwiaGFzT3duUHJvcGVydHkiLCJlcnJvciIsInJldHZhbCIsImVtaXQiLCJfaGFuZGxlV29ya2VyRXZlbnQiLCJhcHBseSIsInVuZGVmaW5lZCIsImRlYnVnIiwiZXhpdENvZGUiLCJzaWduYWwiLCJEZWJ1Z2dlciIsIndoZW5EZWJ1Z2dlclJlYWR5IiwiX3RoaXMiLCJjb250aW51ZSIsImlzUmVzb2x2ZWQiLCJicmVha3BvaW50RGF0YSIsImJyZWFrRXJyb3IiLCJpbmNsdWRlcyIsImNvbm5lY3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBOztBQUdBOztBQUNBOzs7O0FBSEEsTUFBTUEsR0FBRyxHQUFHLHFCQUFPLGVBQVAsQ0FBWjs7QUFNQSxN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QUFBQSxpQkFBaUIsQ0FBQ3JGLE1BQWxCLENBQXlCNEQsT0FBekI7QUFDSDs7QUFFRCxXQUFPeUIsaUJBQWlCLENBQUM3QixPQUF6QjtBQUNIOztBQTlYbUQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmb3JrLCBleGVjU3luYywgZXhlYyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xyXG5pbXBvcnQgeyBFdmVudEVtaXR0ZXIgfSBmcm9tICdldmVudHMnO1xyXG5pbXBvcnQgeyBkZWZlciB9IGZyb20gJ3doZW4nO1xyXG5cclxuLy8gc2V0dXAgbG9nZ2VyXHJcbmltcG9ydCBsb2dnZXIgZnJvbSAnLi4vbGliL2xvZ2dlcic7XHJcbmNvbnN0IGxvZyA9IGxvZ2dlcignV29ya2VyUHJvY2VzcycpO1xyXG5cclxuaW1wb3J0IERlYnVnZ2VyIGZyb20gJy4uL2xpYi9kZWJ1Z2dlcic7XHJcbmltcG9ydCBveHV0aWwgZnJvbSAnLi4vbGliL3V0aWwnO1xyXG5cclxuLy8gc25vb3plIGZ1bmN0aW9uIC0gYXN5bmMgd3JhcHBlciBhcm91bmQgc2V0VGltZW91dCBmdW5jdGlvblxyXG5jb25zdCBzbm9vemUgPSBtcyA9PiBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcclxuXHJcbi8qKlxyXG4gKiBXb3JrZXJQcm9jZXNzIHJlc3BvbnNpYmxlIGZvciBzcGF3bmluZyBhIHdvcmtlciBwcm9jZXNzIHRoZSB0ZXN0IGluc3RhbmNlLlxyXG4gKi9cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgV29ya2VyUHJvY2VzcyBleHRlbmRzIEV2ZW50RW1pdHRlciB7XHJcbiAgICBjb25zdHJ1Y3RvcihwaWQsIHdvcmtlclBhdGgsIGRlYnVnTW9kZSwgZGVidWdQb3J0LCBuYW1lID0gbnVsbCwgbnBtR1Jvb3RFeGVjdXRpb24gPSB0cnVlKSB7XHJcbiAgICAgICAgc3VwZXIoKTtcclxuICAgICAgICB0aGlzLl9uYW1lID0gbmFtZTtcclxuICAgICAgICB0aGlzLl9pc1J1bm5pbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fc3RvcHBlZEJ5VXNlciA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fcGlkID0gcGlkO1xyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYyA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fZGVidWdNb2RlID0gZGVidWdNb2RlO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnUG9ydCA9IGRlYnVnUG9ydDtcclxuICAgICAgICB0aGlzLl93b3JrZXJQYXRoID0gd29ya2VyUGF0aDtcclxuICAgICAgICB0aGlzLl9ucG1HUm9vdEV4ZWN1dGlvbiA9IG5wbUdSb290RXhlY3V0aW9uO1xyXG4gICAgICAgIHRoaXMuX2JyZWFrcG9pbnRFcnJvcnMgPSBbXTtcclxuICAgICAgICAvLyBob2xkIHRoZSByZW1vdGUgaW52b2NhdGlvbiBwcm9taXNlXHJcbiAgICAgICAgdGhpcy5fY2FsbHMgPSB7fTtcclxuICAgICAgICB0aGlzLl9ldmVudEhhbmRsZXJzID0ge307XHJcbiAgICB9XHJcbiAgICBhc3luYyBzdGFydCgpIHtcclxuICAgICAgICBjb25zdCBlbnYgPSBPYmplY3QuYXNzaWduKHByb2Nlc3MuZW52LCB7XHJcbiAgICAgICAgICAgIE9YX1dPUktFUjogdHJ1ZSxcclxuICAgICAgICAgICAgREVCVUc6ICFpc05hTih0aGlzLl9kZWJ1Z1BvcnQpLFxyXG4gICAgICAgICAgICBOT19VUERBVEVfTk9USUZJRVI6IHRydWVcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbG9nLmluZm8oYFN0YXJ0aW5nIHdvcmtlciBwcm9jZXNzICR7dGhpcy5fcGlkfS5gKTtcclxuICAgICAgICBsZXQgZm9ya09wdHMgPSB7XHJcbiAgICAgICAgICAgIGN3ZDogcHJvY2Vzcy5jd2QoKSxcclxuICAgICAgICAgICAgZW52LFxyXG4gICAgICAgICAgICBleGVjQXJndjogW10sXHJcbiAgICAgICAgICAgIGRldGFjaGVkOiBmYWxzZSxcclxuICAgICAgICAgICAgLy9zaWxlbnQ6IGZhbHNlXHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAodGhpcy5fZGVidWdQb3J0KSB7XHJcbiAgICAgICAgICAgIC8vIGFkZCAtLWluc3BlY3QtYnJrIGFyZ3VtZW50IGlmIGRlYnVnIHBvcnQgaXMgc3BlY2lmaWVkXHJcbiAgICAgICAgICAgIGZvcmtPcHRzLmV4ZWNBcmd2ID0gT2JqZWN0LmFzc2lnbihmb3JrT3B0cy5leGVjQXJndiwgWyctLWluc3BlY3QtYnJrPScgKyB0aGlzLl9kZWJ1Z1BvcnRdKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHByaW50IG1vcmUgaW5mb3JtYXRpb24gZm9yIG5vZGVqcyBlcnJvcnNcclxuICAgICAgICBmb3JrT3B0cy5leGVjQXJndi5wdXNoKCctLXRyYWNlLXdhcm5pbmdzJyk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9ucG1HUm9vdEV4ZWN1dGlvbikge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgbGV0IGdsb2JhbE5wbU1vZHVsZXNQYXRoO1xyXG5cclxuICAgICAgICAgICAgICAgIGlmIChwcm9jZXNzLnBsYXRmb3JtID09PSAnZGFyd2luJykge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0ICgoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWMoJ25wbSByb290IC1nJywge2N3ZDogcHJvY2Vzcy5jd2QoKX0sIGZ1bmN0aW9uIChlcnIsIHN0ZG91dCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnZGFyd2luIG5wbSByb290IGVycm9yOicsIGVycik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0ZG91dCAmJiBzdGRvdXQudG9TdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbE5wbU1vZHVsZXNQYXRoID0gc3Rkb3V0LnRvU3RyaW5nKCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KSgpO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBleGVjUmVzdWx0ID0gZXhlY1N5bmMoJ25wbSByb290IC1nJyk7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChleGVjUmVzdWx0ICYmIGV4ZWNSZXN1bHQudG9TdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFsTnBtTW9kdWxlc1BhdGggPSBleGVjUmVzdWx0LnRvU3RyaW5nKCkudHJpbSgpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgICAgICAgICAgZ2xvYmFsTnBtTW9kdWxlc1BhdGggJiZcclxuICAgICAgICAgICAgICAgICAgICBmb3JrT3B0cyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGZvcmtPcHRzLmVudlxyXG4gICAgICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgZm9ya09wdHMuZW52Lk5PREVfUEFUSCA9IGdsb2JhbE5wbU1vZHVsZXNQYXRoO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmxvZygnbnBtIHJvb3QgZXJyb3I6JywgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIGZvcmsgd29ya2VyXHJcbiAgICAgICAgdGhpcy5fY2hpbGRQcm9jID0gZm9yayh0aGlzLl93b3JrZXJQYXRoLCBmb3JrT3B0cyk7XHJcblxyXG4gICAgICAgIHRoaXMuX2hvb2tDaGlsZFByb2NFdmVudHMoKTtcclxuICAgICAgICAvLyBpZiB3ZSBhcmUgaW4gZGVidWcgbW9kZSwgaW5pdGlhbGl6ZSBkZWJ1Z2dlciBhbmQgb25seSB0aGVuIHN0YXJ0IG1vZHVsZXMgJ2luaXQnXHJcblxyXG4gICAgICAgIHRoaXMuX2lzUnVubmluZyA9IHRydWU7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NoaWxkUHJvYztcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBzdGFydERlYnVnZ2VyKCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9kZWJ1Z01vZGUpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5faW5pdGlhbGl6ZURlYnVnZ2VyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHN0b3Aoc3RhdHVzID0gbnVsbCkge1xyXG4gICAgICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemVkICYmIHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fZGVidWdnZXIgJiYgdGhpcy5fZGVidWdnZXIuX3BhdXNlZCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKCdDQU5DRUxFRCcgPT09IHN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlYnVnZ2VyLmRpc2FibGUoKTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVidWdnZXIucmVzdW1lVGVybWluYXRlKCk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5pbnZva2UoJ2Rpc3Bvc2UnLCBzdGF0dXMpO1xyXG4gICAgICAgICAgICBhd2FpdCBzbm9vemUoMTAwKTtcclxuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICBhd2FpdCBzbm9vemUoMTAwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnZ2VyKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlYnVnZ2VyLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLl9zZW5kKHtcclxuICAgICAgICAgICAgdHlwZTogJ2V4aXQnLFxyXG4gICAgICAgICAgICBzdGF0dXM6IHN0YXR1cyxcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLmtpbGwoKTtcclxuICAgICAgICB0aGlzLl9yZXNldCgpO1xyXG4gICAgfVxyXG5cclxuICAgIGtpbGwoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICB0aGlzLl9jaGlsZFByb2Mua2lsbCgnU0lHSU5UJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGluaXQocmlkLCBvcHRpb25zLCBjYXBzKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9pc0luaXRpYWxpemVkKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGJlZm9yZVRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5pbnZva2UoJ2luaXQnLCByaWQsIG9wdGlvbnMsIGNhcHMpO1xyXG5cclxuICAgICAgICAgICAgY29uc3QgYWZ0ZXJUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGNvbnN0IGR1cmF0aW9uID0gYWZ0ZXJUaW1lIC0gYmVmb3JlVGltZTtcclxuICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IHRydWU7XHJcbiAgICAgICAgICAgIGxldCBzdGFydCA9ICcnO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5fbmFtZSkge1xyXG4gICAgICAgICAgICAgICAgc3RhcnQgPSB0aGlzLl9uYW1lKycgJztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBsb2cuaW5mbyhzdGFydCsnV29ya2VyIGluaXRpYWxpemVkIGluICcgKyBkdXJhdGlvbiArICcgbXMnKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgZGlzcG9zZShzdGF0dXMgPSBudWxsKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2RlYnVnZ2VyKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlYnVnZ2VyLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9pc0luaXRpYWxpemVkICYmIHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcblxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZSgnZGlzcG9zZScsIHN0YXR1cyk7XHJcbiAgICAgICAgICAgIHRoaXMuX3NlbmQoe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogJ2V4aXQnLFxyXG4gICAgICAgICAgICAgICAgc3RhdHVzOiBzdGF0dXMsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLmtpbGwoKTtcclxuXHJcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLl9jaGlsZFByb2MpIHtcclxuICAgICAgICAgICAgdGhpcy5faXNJbml0aWFsaXplZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl9zZW5kKHtcclxuICAgICAgICAgICAgICAgIHR5cGU6ICdleGl0JyxcclxuICAgICAgICAgICAgICAgIHN0YXR1czogc3RhdHVzLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5raWxsKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGRpc3Bvc2VNb2R1bGVzKHN0YXR1cyA9IG51bGwpIHtcclxuICAgICAgICBpZiAodGhpcy5fZGVidWdnZXIpIHtcclxuICAgICAgICAgICAgYXdhaXQgdGhpcy5fZGVidWdnZXIuY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKHRoaXMuX2NoaWxkUHJvYykge1xyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLmludm9rZSgnZGlzcG9zZU1vZHVsZXMnLCBzdGF0dXMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBnZXQgZGVidWdnZXIgKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9kZWJ1Z2dlcjtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNSdW5uaW5nICgpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXNSdW5uaW5nO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBpc0luaXRpYWxpemVkKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9pc0luaXRpYWxpemVkO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIHJ1bihydW5PcHRzKSB7XHJcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuaW52b2tlKCdydW4nLCBydW5PcHRzKTtcclxuICAgIH1cclxuXHJcbiAgICBzdWJzY3JpYmUoZXZlbnROYW1lLCBoYW5kbGVyKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9ldmVudEhhbmRsZXJzW2V2ZW50TmFtZV0gJiYgdHlwZW9mIGhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgdGhpcy5fZXZlbnRIYW5kbGVyc1tldmVudE5hbWVdID0gaGFuZGxlcjtcclxuICAgICAgICAgICAgdGhpcy5fc2VuZCh7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnc3Vic2NyaWJlJyxcclxuICAgICAgICAgICAgICAgIGV2ZW50OiBldmVudE5hbWUsXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBpbnZva2UobWV0aG9kKSB7XHJcbiAgICAgICAgbGV0IGFyZ3MgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpO1xyXG4gICAgICAgIC8vIGlnbm9yZSBmaXJzdCBhcmd1bWVudCAtIGUuZy4gbWV0aG9kXHJcbiAgICAgICAgaWYgKGFyZ3MubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBhcmdzLnNoaWZ0KCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh0aGlzLl9jaGlsZFByb2MpIHtcclxuICAgICAgICAgICAgY29uc3QgY2FsbElkID0gb3h1dGlsLmdlbmVyYXRlVW5pcXVlSWQoKTtcclxuICAgICAgICAgICAgdGhpcy5fc2VuZCh7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiAnaW52b2tlJyxcclxuICAgICAgICAgICAgICAgIG1ldGhvZDogbWV0aG9kLFxyXG4gICAgICAgICAgICAgICAgY2FsbElkOiBjYWxsSWQsXHJcbiAgICAgICAgICAgICAgICBhcmdzOiBhcmdzXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB0aGlzLl9jYWxsc1tjYWxsSWRdID0gZGVmZXIoKTtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxzW2NhbGxJZF0ucHJvbWlzZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgaW52b2tlVGVzdEhvb2soaG9va05hbWUsIGhvb2tBcmdzKSB7XHJcbiAgICAgICAgY29uc3QgY2FsbElkID0gb3h1dGlsLmdlbmVyYXRlVW5pcXVlSWQoKTtcclxuICAgICAgICB0aGlzLl9zZW5kKHtcclxuICAgICAgICAgICAgdHlwZTogJ2ludm9rZTpob29rJyxcclxuICAgICAgICAgICAgbWV0aG9kOiBob29rTmFtZSxcclxuICAgICAgICAgICAgY2FsbElkOiBjYWxsSWQsXHJcbiAgICAgICAgICAgIGFyZ3M6IGhvb2tBcmdzXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fY2FsbHNbY2FsbElkXSA9IGRlZmVyKCk7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2NhbGxzW2NhbGxJZF0ucHJvbWlzZTtcclxuICAgIH1cclxuXHJcbiAgICBfc2VuZChtZXNzYWdlKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9jaGlsZFByb2MpIHtcclxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jaGlsZFByb2Muc2VuZChtZXNzYWdlKTtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBfcmVzZXQoKSB7XHJcbiAgICAgICAgdGhpcy5fY2hpbGRQcm9jID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9kZWJ1Z2dlciA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5faXNSdW5uaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5fZGVidWdNb2RlID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9kZWJ1Z1BvcnQgPSBudWxsO1xyXG4gICAgICAgIHRoaXMuX3doZW5PeHlnZW5EaXNwb3NlZCA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fd2hlbk94eWdlbkluaXRpYWxpemVkID0gbnVsbDtcclxuICAgICAgICB0aGlzLl93aGVuTW9kdWxlc0Rpc3Bvc2VkID0gbnVsbDtcclxuICAgICAgICB0aGlzLl9pc0luaXRpYWxpemVkID0gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgX2hvb2tDaGlsZFByb2NFdmVudHMoKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLl9jaGlsZFByb2MpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLl9jaGlsZFByb2Mub24oJ21lc3NhZ2UnLCB0aGlzLl9oYW5kbGVDaGlsZE1lc3NhZ2UuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5fY2hpbGRQcm9jLm9uKCdlcnJvcicsIHRoaXMuX2hhbmRsZUNoaWxkRXJyb3IuYmluZCh0aGlzKSk7XHJcbiAgICAgICAgdGhpcy5fY2hpbGRQcm9jLm9uKCdleGl0JywgdGhpcy5faGFuZGxlQ2hpbGRFeGl0LmJpbmQodGhpcykpO1xyXG4gICAgICAgIHRoaXMuX2NoaWxkUHJvYy5vbignZGlzY29ubmVjdCcsIHRoaXMuX2hhbmRsZUNoaWxkRGlzY29ubmVjdC5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgdGhpcy5faGFuZGxlQ2hpbGRVbmNhdWdodEV4Y2VwdGlvbi5iaW5kKHRoaXMpKTtcclxuICAgICAgICB0aGlzLl9jaGlsZFByb2Mub24oJ1NJR0lOVCcsIHRoaXMuX2hhbmRsZUNoaWxkU2lnSW50LmJpbmQodGhpcykpO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVDaGlsZE1lc3NhZ2UobXNnKSB7XHJcbiAgICAgICAgaWYgKG1zZy5ldmVudCkge1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG1zZy5ldmVudCkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAnaW52b2tlOnJlc3VsdCc6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG1zZy5jYWxsSWQgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHRoaXMuX2NhbGxzLCBtc2cuY2FsbElkKSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwcm9taXNlID0gdGhpcy5fY2FsbHNbbXNnLmNhbGxJZF07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtc2cuZXJyb3IpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb21pc2UucmVqZWN0KG1zZy5lcnJvcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9taXNlLnJlc29sdmUobXNnLnJldHZhbCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2NhbGxzW21zZy5jYWxsSWRdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgJ3JlcG9ydGVyJzpcclxuICAgICAgICAgICAgICAgICAgICBpZiAobXNnLm1ldGhvZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmVtaXQoJ3JlcG9ydGVyJywgeyBwaWQ6IHRoaXMuX3BpZCwgbWV0aG9kOiBtc2cubWV0aG9kLCBhcmdzOiBtc2cuYXJncyB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlICdldmVudCc6XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5faGFuZGxlV29ya2VyRXZlbnQobXNnLm5hbWUsIG1zZy5hcmdzKTtcclxuICAgICAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmVtaXQoJ21lc3NhZ2UnLCBPYmplY3QuYXNzaWduKG1zZywgeyBwaWQ6IHRoaXMuX3BpZCB9KSk7XHJcbiAgICB9XHJcblxyXG4gICAgYXN5bmMgX2hhbmRsZVdvcmtlckV2ZW50KG5hbWUsIGFyZ3MpIHtcclxuICAgICAgICBpZiAobmFtZSAmJiB0aGlzLl9ldmVudEhhbmRsZXJzICYmIHRoaXMuX2V2ZW50SGFuZGxlcnNbbmFtZV0pIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuX2V2ZW50SGFuZGxlcnNbbmFtZV0uYXBwbHkodW5kZWZpbmVkLCBhcmdzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgbG9nLmVycm9yKCdFcnJvciB0aHJvd24gYnkgd29ya2VyIGV2ZW50IGhhbmRsZXIgXCIke25hbWV9OicsIGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVDaGlsZEVycm9yKGVycm9yKSB7XHJcbiAgICAgICAgbG9nLmRlYnVnKGBXb3JrZXIgJHt0aGlzLl9waWR9IHRocm93biBhbiBlcnJvcjogJHtlcnJvcn0uYCk7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdlcnJvcicsIE9iamVjdC5hc3NpZ24oeyBlcnJvciA6IGVycm9yIH0sIHsgcGlkOiB0aGlzLl9waWQgfSkpO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVDaGlsZEV4aXQoZXhpdENvZGUsIHNpZ25hbCkge1xyXG4gICAgICAgIGxvZy5kZWJ1ZyhgV29ya2VyICR7dGhpcy5fcGlkfSBmaW5pc2hlZCB3aXRoIGV4aXQgY29kZSAke2V4aXRDb2RlfSBhbmQgc2lnbmFsICR7c2lnbmFsfS5gKTtcclxuICAgICAgICB0aGlzLl9yZXNldCgpO1xyXG4gICAgICAgIHRoaXMuZW1pdCgnZXhpdCcsIHsgcGlkOiB0aGlzLl9waWQsIGV4aXRDb2RlLCBzaWduYWwgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUNoaWxkRGlzY29ubmVjdCgpIHtcclxuICAgICAgICBsb2cuZGVidWcoYFdvcmtlciAke3RoaXMuX3BpZH0gZGlzY29ubmVjdGVkLmApO1xyXG4gICAgfVxyXG5cclxuICAgIF9oYW5kbGVDaGlsZFVuY2F1Z2h0RXhjZXB0aW9uKGVycm9yKSB7XHJcbiAgICAgICAgbG9nLmRlYnVnKGBXb3JrZXIgJHt0aGlzLl9waWR9IHRocm93biBhbiB1bmNhdWdodCBlcnJvcjogJHtlcnJvcn0uYCk7XHJcbiAgICAgICAgdGhpcy5fcmVzZXQoKTtcclxuICAgICAgICB0aGlzLmVtaXQoJ2Vycm9yJywgT2JqZWN0LmFzc2lnbih7IGVycm9yIDogZXJyb3IgfSwgeyBwaWQ6IHRoaXMuX3BpZCB9KSk7XHJcbiAgICAgICAgdGhpcy5lbWl0KCdleGl0JywgeyBwaWQ6IHRoaXMuX3BpZCwgZXhpdENvZGU6IDEgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgX2hhbmRsZUNoaWxkU2lnSW50KCkge1xyXG4gICAgICAgIGxvZy5kZWJ1ZyhgV29ya2VyICR7dGhpcy5fcGlkfSByZWNlaXZlZCBTSUdJTlQgc2lnbmFsLmApO1xyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIF9pbml0aWFsaXplRGVidWdnZXIoKSB7XHJcbiAgICAgICAgdGhpcy5fZGVidWdnZXIgPSBuZXcgRGVidWdnZXIodGhpcy5fcGlkKTtcclxuICAgICAgICBsZXQgd2hlbkRlYnVnZ2VyUmVhZHkgPSBkZWZlcigpO1xyXG4gICAgICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgICAgICAvLyBoYW5kbGUgZGVidWdnZXIgZXZlbnRzXHJcbiAgICAgICAgdGhpcy5fZGVidWdnZXIub24oJ3JlYWR5JywgZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICAgIC8vIHJlc3VtZSB0aGUgZmlyc3QgYnJlYWtwb2ludCB3aGljaCBpcyBhdXRvbWF0aWNhbGx5IGFkZGVkIGJ5IHRoZSBkZWJ1Z2dlclxyXG4gICAgICAgICAgICBpZiAoX3RoaXMuX2RlYnVnZ2VyICYmIF90aGlzLl9kZWJ1Z2dlci5jb250aW51ZSkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuX2RlYnVnZ2VyLmNvbnRpbnVlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgd2hlbkRlYnVnZ2VyUmVhZHkucmVzb2x2ZSgpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHRoaXMuX2RlYnVnZ2VyLm9uKCdlcnJvcicsIGZ1bmN0aW9uKGVycikge1xyXG5cclxuICAgICAgICAgICAgbG9nLmVycm9yKCdkZWJ1Z2dlciBvbiBlcnJvciA6JywgZXJyKTtcclxuXHJcbiAgICAgICAgICAgIHRoaXMuZW1pdCgnZGVidWdnZXI6ZXJyb3InLCBPYmplY3QuYXNzaWduKGVyciwgeyBwaWQ6IHRoaXMuX3BpZCB9KSk7XHJcbiAgICAgICAgICAgIC8vIHJlamVjdCB0aGUgcHJvbWlzZSBvbmx5IGlmIHdlIGdvdCBhbiBlcnJvciByaWdodCBhZnRlciBfZGVidWdnZXIuY29ubmVjdCgpIGNhbGwgYmVsb3cgLSB3ZSBuZWVkIHRoaXMgdG8gaW5kaWNhdGUgZGVidWdnZXIgaW5pdGlhbGl6YXRpb24gZXJyb3JcclxuICAgICAgICAgICAgaWYgKCF3aGVuRGVidWdnZXJSZWFkeS5pc1Jlc29sdmVkKSB7XHJcbiAgICAgICAgICAgICAgICB3aGVuRGVidWdnZXJSZWFkeS5yZWplY3QoZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy5fZGVidWdnZXIub24oJ2JyZWFrJywgZnVuY3Rpb24oYnJlYWtwb2ludERhdGEpIHtcclxuICAgICAgICAgICAgdGhpcy5lbWl0KCdkZWJ1Z2dlcjpicmVhaycsIGJyZWFrcG9pbnREYXRhKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB0aGlzLl9kZWJ1Z2dlci5vbignYnJlYWtFcnJvcicsIGFzeW5jIGZ1bmN0aW9uKGJyZWFrRXJyb3IpIHtcclxuXHJcbiAgICAgICAgICAgIGlmIChicmVha0Vycm9yICYmIGJyZWFrRXJyb3IubWVzc2FnZSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKF90aGlzLl9icmVha3BvaW50RXJyb3JzLmluY2x1ZGVzKGJyZWFrRXJyb3IubWVzc2FnZSkpIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmVcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuX2JyZWFrcG9pbnRFcnJvcnMucHVzaChicmVha0Vycm9yLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZW1pdCgnZGVidWdnZXI6YnJlYWtFcnJvcicsIGJyZWFrRXJyb3IpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGxvZy5pbmZvKGBDb25uZWN0aW5nIHRvIGRlYnVnZ2VyIG9uIHBvcnQgJHt0aGlzLl9kZWJ1Z1BvcnR9Li4uYCk7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuX2RlYnVnZ2VyLmNvbm5lY3QodGhpcy5fZGVidWdQb3J0LCAnMTI3LjAuMC4xJyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsb2cuZXJyb3IoJ0Nhbm5vdCBjb25uZWN0IHRvIHRoZSBkZWJ1Z2dlcjogJywgZSk7XHJcbiAgICAgICAgICAgIGNvbnN0IG1lc3NhZ2UgPSAnQ2Fubm90IGNvbm5lY3QgdG8gdGhlIGRlYnVnZ2VyOiAnICsgZS5tZXNzYWdlO1xyXG4gICAgICAgICAgICB3aGVuRGVidWdnZXJSZWFkeS5yZWplY3QobWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gd2hlbkRlYnVnZ2VyUmVhZHkucHJvbWlzZTtcclxuICAgIH1cclxufSJdfQ==
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oxygen-cli",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.21.0-beta.2",
|
|
4
4
|
"description": "Automation framework for testing modern applications",
|
|
5
5
|
"main": "./build/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -69,6 +69,7 @@
|
|
|
69
69
|
"fibers": "5.0.0",
|
|
70
70
|
"glob": "7.1.7",
|
|
71
71
|
"glob-to-regexp": "0.4.1",
|
|
72
|
+
"got": "11.8.2",
|
|
72
73
|
"imap-simple": "5.1.0",
|
|
73
74
|
"is-glob": "4.0.1",
|
|
74
75
|
"jimp": "0.16.1",
|