appium-android-driver 5.0.4 → 5.0.7
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/build/lib/commands/actions.js +16 -20
- package/build/lib/commands/app-management.js +10 -18
- package/build/lib/commands/context.js +43 -56
- package/build/lib/commands/coverage.js +2 -6
- package/build/lib/commands/element.js +3 -9
- package/build/lib/commands/emu-console.js +3 -5
- package/build/lib/commands/execute.js +3 -6
- package/build/lib/commands/file-actions.js +22 -29
- package/build/lib/commands/general.js +18 -30
- package/build/lib/commands/ime.js +8 -21
- package/build/lib/commands/network.js +14 -27
- package/build/lib/commands/performance.js +3 -6
- package/build/lib/commands/recordscreen.js +27 -38
- package/build/lib/commands/shell.js +6 -7
- package/build/lib/commands/streamscreen.js +29 -43
- package/build/lib/commands/system-bars.js +10 -16
- package/build/lib/commands/touch.js +4 -10
- package/build/lib/driver.js +36 -60
- package/build/lib/webview-helpers.js +3 -3
- package/lib/commands/actions.js +18 -19
- package/lib/commands/app-management.js +10 -11
- package/lib/commands/context.js +33 -34
- package/lib/commands/coverage.js +1 -4
- package/lib/commands/element.js +2 -3
- package/lib/commands/emu-console.js +2 -2
- package/lib/commands/execute.js +2 -3
- package/lib/commands/file-actions.js +31 -25
- package/lib/commands/general.js +16 -18
- package/lib/commands/ime.js +7 -8
- package/lib/commands/network.js +15 -16
- package/lib/commands/performance.js +2 -3
- package/lib/commands/recordscreen.js +23 -22
- package/lib/commands/shell.js +6 -6
- package/lib/commands/streamscreen.js +22 -23
- package/lib/commands/system-bars.js +11 -10
- package/lib/commands/touch.js +3 -4
- package/lib/driver.js +35 -36
- package/lib/webview-helpers.js +3 -1
- package/package.json +2 -2
|
@@ -9,8 +9,6 @@ exports.helpers = exports.default = exports.commands = void 0;
|
|
|
9
9
|
|
|
10
10
|
require("source-map-support/register");
|
|
11
11
|
|
|
12
|
-
var _logger = _interopRequireDefault(require("../logger"));
|
|
13
|
-
|
|
14
12
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
15
13
|
|
|
16
14
|
var _androidHelpers = _interopRequireDefault(require("../android-helpers"));
|
|
@@ -77,13 +75,11 @@ commands.doTouchAction = async function doTouchAction(action, opts = {}) {
|
|
|
77
75
|
return await this.touchLongClick(null, x, y, duration || 1000);
|
|
78
76
|
|
|
79
77
|
case 'cancel':
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
this.log.warn('Cancel action currently has no effect');
|
|
82
79
|
break;
|
|
83
80
|
|
|
84
81
|
default:
|
|
85
|
-
|
|
86
|
-
|
|
82
|
+
this.log.errorAndThrow(`unknown action ${action}`);
|
|
87
83
|
}
|
|
88
84
|
};
|
|
89
85
|
|
|
@@ -176,9 +172,7 @@ helpers.performGesture = async function performGesture(gesture) {
|
|
|
176
172
|
} catch (e) {
|
|
177
173
|
if ((0, _baseDriver.isErrorType)(e, _baseDriver.errors.NoSuchElementError) && gesture.action === 'release' && gesture.options.element) {
|
|
178
174
|
delete gesture.options.element;
|
|
179
|
-
|
|
180
|
-
_logger.default.debug(`retrying release without element opts: ${gesture.options}.`);
|
|
181
|
-
|
|
175
|
+
this.log.debug(`retrying release without element opts: ${gesture.options}.`);
|
|
182
176
|
return await this.doTouchAction(gesture.action, gesture.options || {});
|
|
183
177
|
}
|
|
184
178
|
|
|
@@ -401,4 +395,4 @@ var _default = extensions;
|
|
|
401
395
|
exports.default = _default;require('source-map-support').install();
|
|
402
396
|
|
|
403
397
|
|
|
404
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy90b3VjaC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q29vcmREZWZhdWx0IiwidmFsIiwidXRpbCIsImhhc1ZhbHVlIiwiZ2V0U3dpcGVUb3VjaER1cmF0aW9uIiwid2FpdEdlc3R1cmUiLCJkdXJhdGlvbiIsIm9wdGlvbnMiLCJtcyIsImRvVG91Y2hBY3Rpb24iLCJhY3Rpb24iLCJvcHRzIiwiZWxlbWVudCIsIngiLCJ5IiwiY291bnQiLCJ0YXAiLCJ0b3VjaERvd24iLCJ0b3VjaFVwIiwidG91Y2hNb3ZlIiwiQiIsImRlbGF5IiwidG91Y2hMb25nQ2xpY2siLCJsb2ciLCJ3YXJuIiwiZXJyb3JBbmRUaHJvdyIsImRvVG91Y2hEcmFnIiwiZ2VzdHVyZXMiLCJsb25nUHJlc3MiLCJtb3ZlVG8iLCJzdGFydFgiLCJzdGFydFkiLCJlbmRYIiwiZW5kWSIsImdldExvY2F0aW9uSW5WaWV3IiwiYXBpTGV2ZWwiLCJhZGIiLCJnZXRBcGlMZXZlbCIsIk1hdGgiLCJtYXgiLCJkcmFnIiwiZml4UmVsZWFzZSIsInJlbGVhc2UiLCJfIiwibGFzdCIsImNsb25lIiwicmVmIiwiZ2VzdHVyZSIsInJldmVyc2UiLCJsb2MiLCJzaXplIiwiZ2V0U2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwicGljayIsInBlcmZvcm1HZXN0dXJlIiwiZSIsImVycm9ycyIsIk5vU3VjaEVsZW1lbnRFcnJvciIsImRlYnVnIiwiZ2V0U3dpcGVPcHRpb25zIiwidG91Y2hDb3VudCIsImRlc3RFbGVtZW50IiwibG9jUmVzdWx0Iiwic2l6ZVJlc3VsdCIsIm9mZnNldFgiLCJhYnMiLCJvZmZzZXRZIiwiZmlyc3RFbExvY2F0aW9uIiwicGVyZm9ybVRvdWNoIiwibGVuZ3RoIiwic3dpcGVPcHRzIiwic3dpcGUiLCJhY3Rpb25zIiwibWFwIiwiaGVhZCIsInBvcCIsInNsaWNlIiwicHJlc3MiLCJzaGlmdCIsIndhaXQiLCJmaXhlZEdlc3R1cmVzIiwicGFyc2VUb3VjaCIsImciLCJtdWx0aSIsInRvdWNoU3RhdGVPYmplY3RzIiwiaW5jbHVkZXMiLCJvZmZzZXQiLCJlbGVtZW50SWQiLCJwb3MiLCJ0b3VjaFN0YXRlT2JqZWN0IiwidGltZU9mZnNldCIsInBhcnNlSW50IiwicHJldlBvcyIsInRpbWUiLCJzdGF0ZSIsImlzVW5kZWZpbmVkIiwiYW5kcm9pZEhlbHBlcnMiLCJ0cnVuY2F0ZURlY2ltYWxzIiwidG91Y2giLCJwZXJmb3JtTXVsdGlBY3Rpb24iLCJFcnJvciIsInN0YXRlcyIsImRvUGVyZm9ybU11bHRpQWN0aW9uIiwiYm9vdHN0cmFwIiwic2VuZEFjdGlvbiIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBRUEsU0FBU0MsZUFBVCxDQUEwQkMsR0FBMUIsRUFBK0I7QUFJN0IsU0FBT0MsY0FBS0MsUUFBTCxDQUFjRixHQUFkLElBQXFCQSxHQUFyQixHQUEyQixHQUFsQztBQUNEOztBQUVELFNBQVNHLHFCQUFULENBQWdDQyxXQUFoQyxFQUE2QztBQUczQyxNQUFJQyxRQUFRLEdBQUcsR0FBZjs7QUFDQSxNQUFJLE9BQU9ELFdBQVcsQ0FBQ0UsT0FBWixDQUFvQkMsRUFBM0IsS0FBa0MsV0FBbEMsSUFBaURILFdBQVcsQ0FBQ0UsT0FBWixDQUFvQkMsRUFBekUsRUFBNkU7QUFDM0VGLElBQUFBLFFBQVEsR0FBR0QsV0FBVyxDQUFDRSxPQUFaLENBQW9CQyxFQUFwQixHQUF5QixJQUFwQzs7QUFDQSxRQUFJRixRQUFRLEtBQUssQ0FBakIsRUFBb0I7QUFHbEJBLE1BQUFBLFFBQVEsR0FBRyxHQUFYO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPQSxRQUFQO0FBQ0Q7O0FB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QUFLd0UsVUFBTCxDQUFnQnhFLE1BQWhCLEVBQXdCLElBQXhCLENBQTFDLEVBQXlFLEtBQXpFLENBQXJCO0FBRUEsU0FBTyxNQUFNLEtBQUs2RixvQkFBTCxDQUEwQmYsU0FBMUIsRUFBcUNjLE1BQXJDLENBQWI7QUFDRCxDQVZEOztBQWtCQXpHLFFBQVEsQ0FBQzBHLG9CQUFULEdBQWdDLGVBQWVBLG9CQUFmLENBQXFDZixTQUFyQyxFQUFnRGMsTUFBaEQsRUFBd0Q7QUFDdEYsTUFBSTNGLElBQUo7O0FBQ0EsTUFBSTZFLFNBQUosRUFBZTtBQUNiN0UsSUFBQUEsSUFBSSxHQUFHO0FBQ0w2RSxNQUFBQSxTQURLO0FBRUxmLE1BQUFBLE9BQU8sRUFBRTZCO0FBRkosS0FBUDtBQUlBLFdBQU8sTUFBTSxLQUFLRSxTQUFMLENBQWVDLFVBQWYsQ0FBMEIsb0NBQTFCLEVBQWdFOUYsSUFBaEUsQ0FBYjtBQUNELEdBTkQsTUFNTztBQUNMQSxJQUFBQSxJQUFJLEdBQUc7QUFDTDhELE1BQUFBLE9BQU8sRUFBRTZCO0FBREosS0FBUDtBQUdBLFdBQU8sTUFBTSxLQUFLRSxTQUFMLENBQWVDLFVBQWYsQ0FBMEIsNEJBQTFCLEVBQXdEOUYsSUFBeEQsQ0FBYjtBQUNEO0FBQ0YsQ0FkRDs7QUFnQkErRixNQUFNLENBQUNDLE1BQVAsQ0FBYzVHLFVBQWQsRUFBMEJGLFFBQTFCLEVBQW9DQyxPQUFwQztlQUVlQyxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgZXJyb3JzLCBpc0Vycm9yVHlwZSB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgYXN5bmNtYXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBnZXRDb29yZERlZmF1bHQgKHZhbCkge1xuICAvLyBnb2luZyB0aGUgbG9uZyB3YXkgYW5kIGNoZWNraW5nIGZvciB1bmRlZmluZWQgYW5kIG51bGwgc2luY2VcbiAgLy8gd2UgY2FuJ3QgYmUgYXNzdXJlZCBgZWxJZGAgaXMgYSBzdHJpbmcgYW5kIG5vdCBhbiBpbnQuIFNhbWVcbiAgLy8gdGhpbmcgd2l0aCBkZXN0RWxlbWVudCBiZWxvdy5cbiAgcmV0dXJuIHV0aWwuaGFzVmFsdWUodmFsKSA/IHZhbCA6IDAuNTtcbn1cblxuZnVuY3Rpb24gZ2V0U3dpcGVUb3VjaER1cmF0aW9uICh3YWl0R2VzdHVyZSkge1xuICAvLyB0aGUgdG91Y2ggYWN0aW9uIGFwaSB1c2VzIG1zLCB3ZSB3YW50IHNlY29uZHNcbiAgLy8gMC44IGlzIHRoZSBkZWZhdWx0IHRpbWUgZm9yIHRoZSBvcGVyYXRpb25cbiAgbGV0IGR1cmF0aW9uID0gMC44O1xuICBpZiAodHlwZW9mIHdhaXRHZXN0dXJlLm9wdGlvbnMubXMgIT09ICd1bmRlZmluZWQnICYmIHdhaXRHZXN0dXJlLm9wdGlvbnMubXMpIHtcbiAgICBkdXJhdGlvbiA9IHdhaXRHZXN0dXJlLm9wdGlvbnMubXMgLyAxMDAwO1xuICAgIGlmIChkdXJhdGlvbiA9PT0gMCkge1xuICAgICAgLy8gc2V0IHRvIGEgdmVyeSBsb3cgbnVtYmVyLCBzaW5jZSB0aGV5IHdhbnRlZCBpdCBmYXN0XG4gICAgICAvLyBidXQgYmVsb3cgMC4xIGJlY29tZXMgMCBzdGVwcywgd2hpY2ggY2F1c2VzIGVycm9yc1xuICAgICAgZHVyYXRpb24gPSAwLjE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkdXJhdGlvbjtcbn1cblxuY29tbWFuZHMuZG9Ub3VjaEFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGRvVG91Y2hBY3Rpb24gKGFjdGlvbiwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsgZWxlbWVudCwgeCwgeSwgY291bnQsIG1zLCBkdXJhdGlvbiB9ID0gb3B0cztcbiAgLy8gcGFyc2VUb3VjaCBwcmVjYWxjdWxhdGVzIGFic29sdXRlIGVsZW1lbnQgcG9zaXRpb25zXG4gIC8vIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcGFzcyBgZWxlbWVudGAgdG8gdGhlIGFmZmVjdGVkIGdlc3R1cmVzXG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSAndGFwJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRhcChudWxsLCB4LCB5LCBjb3VudCk7XG4gICAgY2FzZSAncHJlc3MnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hEb3duKG51bGwsIHgsIHkpO1xuICAgIGNhc2UgJ3JlbGVhc2UnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hVcChlbGVtZW50LCB4LCB5KTtcbiAgICBjYXNlICdtb3ZlVG8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hNb3ZlKG51bGwsIHgsIHkpO1xuICAgIGNhc2UgJ3dhaXQnOlxuICAgICAgcmV0dXJuIGF3YWl0IEIuZGVsYXkobXMpO1xuICAgIGNhc2UgJ2xvbmdQcmVzcyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy50b3VjaExvbmdDbGljayhudWxsLCB4LCB5LCBkdXJhdGlvbiB8fCAxMDAwKTtcbiAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgLy8gVE9ETzogY2xhcmlmeSBiZWhhdmlvciBvZiAnY2FuY2VsJyBhY3Rpb24gYW5kIGZpeCB0aGlzXG4gICAgICBsb2cud2FybignQ2FuY2VsIGFjdGlvbiBjdXJyZW50bHkgaGFzIG5vIGVmZmVjdCcpO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGB1bmtub3duIGFjdGlvbiAke2FjdGlvbn1gKTtcbiAgfVxufTtcblxuLy8gZHJhZyBpcyAqbm90KiBwcmVzcy1tb3ZlLXJlbGVhc2UsIHNvIHdlIG5lZWQgdG8gdHJhbnNsYXRlXG4vLyBkcmFnIHdvcmtzIGZpbmUgZm9yIHNjcm9sbCwgYXMgd2VsbFxuaGVscGVycy5kb1RvdWNoRHJhZyA9IGFzeW5jIGZ1bmN0aW9uIGRvVG91Y2hEcmFnIChnZXN0dXJlcykge1xuICBsZXQgbG9uZ1ByZXNzID0gZ2VzdHVyZXNbMF07XG4gIGxldCBtb3ZlVG8gPSBnZXN0dXJlc1sxXTtcbiAgbGV0IHN0YXJ0WCA9IGxvbmdQcmVzcy5vcHRpb25zLnggfHwgMCxcbiAgICAgIHN0YXJ0WSA9IGxvbmdQcmVzcy5vcHRpb25zLnkgfHwgMCxcbiAgICAgIGVuZFggPSBtb3ZlVG8ub3B0aW9ucy54IHx8IDAsXG4gICAgICBlbmRZID0gbW92ZVRvLm9wdGlvbnMueSB8fCAwO1xuICBpZiAobG9uZ1ByZXNzLm9wdGlvbnMuZWxlbWVudCkge1xuICAgIGxldCB7eCwgeX0gPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KGxvbmdQcmVzcy5vcHRpb25zLmVsZW1lbnQpO1xuICAgIHN0YXJ0WCArPSB4IHx8IDA7XG4gICAgc3RhcnRZICs9IHkgfHwgMDtcbiAgfVxuICBpZiAobW92ZVRvLm9wdGlvbnMuZWxlbWVudCkge1xuICAgIGxldCB7eCwgeX0gPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KG1vdmVUby5vcHRpb25zLmVsZW1lbnQpO1xuICAgIGVuZFggKz0geCB8fCAwO1xuICAgIGVuZFkgKz0geSB8fCAwO1xuICB9XG5cbiAgbGV0IGFwaUxldmVsID0gYXdhaXQgdGhpcy5hZGIuZ2V0QXBpTGV2ZWwoKTtcbiAgLy8gbG9sbGlwb3AgdGFrZXMgYSBsaXR0bGUgbG9uZ2VyIHRvIGdldCB0aGluZ3Mgcm9sbGluZ1xuICBsZXQgZHVyYXRpb24gPSBhcGlMZXZlbCA+PSA1ID8gMiA6IDE7XG4gIC8vIG1ha2Ugc3VyZSB0aGF0IGlmIHRoZSBsb25nIHByZXNzIGhhcyBhIGR1cmF0aW9uLCB3ZSB1c2UgaXQuXG4gIGlmIChsb25nUHJlc3Mub3B0aW9ucyAmJiBsb25nUHJlc3Mub3B0aW9ucy5kdXJhdGlvbikge1xuICAgIGR1cmF0aW9uID0gTWF0aC5tYXgobG9uZ1ByZXNzLm9wdGlvbnMuZHVyYXRpb24gLyAxMDAwLCBkdXJhdGlvbik7XG4gIH1cblxuICAvLyBgZHJhZ2Agd2lsbCB0YWtlIGNhcmUgb2Ygd2hldGhlciB0aGVyZSBpcyBhbiBlbGVtZW50IG9yIG5vdCBhdCB0aGF0IGxldmVsXG4gIHJldHVybiBhd2FpdCB0aGlzLmRyYWcoc3RhcnRYLCBzdGFydFksIGVuZFgsIGVuZFksIGR1cmF0aW9uLCAxLCBsb25nUHJlc3Mub3B0aW9ucy5lbGVtZW50LCBtb3ZlVG8ub3B0aW9ucy5lbGVtZW50KTtcbn07XG5cbi8vIFJlbGVhc2UgZ2VzdHVyZSBuZWVkcyBlbGVtZW50IG9yIGNvLW9yZGluYXRlcyB0byByZWxlYXNlIGl0IGZyb20gdGhhdCBwb3NpdGlvblxuLy8gb3IgZWxzZSByZWxlYXNlIGdlc3R1cmUgaXMgcGVyZm9ybWVkIGZyb20gY2VudGVyIG9mIHRoZSBzY3JlZW4sIHNvIHRvIGZpeCBpdFxuLy8gVGhpcyBtZXRob2Qgc2V0cyBjby1vcmRpbmF0ZXMvZWxlbWVudCB0byByZWxlYXNlIGdlc3R1cmUgaWYgaXQgaGFzIG5vIG9wdGlvbnMgc2V0IGFscmVhZHkuXG5oZWxwZXJzLmZpeFJlbGVhc2UgPSBhc3luYyBmdW5jdGlvbiBmaXhSZWxlYXNlIChnZXN0dXJlcykge1xuICBsZXQgcmVsZWFzZSA9IF8ubGFzdChnZXN0dXJlcyk7XG4gIC8vIHNvbWV0aW1lcyB0aGVyZSBhcmUgbm8gb3B0aW9uc1xuICByZWxlYXNlLm9wdGlvbnMgPSByZWxlYXNlLm9wdGlvbnMgfHwge307XG4gIC8vIG5vdGhpbmcgdG8gZG8gaWYgcmVsZWFzZSBvcHRpb25zIGFyZSBhbHJlYWR5IHNldFxuICBpZiAocmVsZWFzZS5vcHRpb25zLmVsZW1lbnQgfHwgKHJlbGVhc2Uub3B0aW9ucy54ICYmIHJlbGVhc2Uub3B0aW9ucy55KSkge1xuICAgIHJldHVybjtcbiAgfVxuICAvLyB3aXRob3V0IGNvb3JkaW5hdGVzLCBgcmVsZWFzZWAgdXNlcyB0aGUgY2VudGVyIG9mIHRoZSBzY3JlZW4sIHdoaWNoLFxuICAvLyBnZW5lcmFsbHkgc3BlYWtpbmcsIGlzIG5vdCB3aGF0IHdlIHdhbnRcbiAgLy8gdGhlcmVmb3JlOiBsb29wIGJhY2t3YXJkcyBhbmQgdXNlIHRoZSBsYXN0IGNvbW1hbmQgd2l0aCBhbiBlbGVtZW50IGFuZC9vclxuICAvLyBvZmZzZXQgY29vcmRpbmF0ZXNcbiAgZ2VzdHVyZXMgPSBfLmNsb25lKGdlc3R1cmVzKTtcbiAgbGV0IHJlZiA9IG51bGw7XG4gIGZvciAobGV0IGdlc3R1cmUgb2YgZ2VzdHVyZXMucmV2ZXJzZSgpKSB7XG4gICAgbGV0IG9wdHMgPSBnZXN0dXJlLm9wdGlvbnM7XG4gICAgaWYgKG9wdHMuZWxlbWVudCB8fCAob3B0cy54ICYmIG9wdHMueSkpIHtcbiAgICAgIHJlZiA9IGdlc3R1cmU7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cbiAgaWYgKHJlZikge1xuICAgIGxldCBvcHRzID0gcmVmLm9wdGlvbnM7XG4gICAgaWYgKG9wdHMuZWxlbWVudCkge1xuICAgICAgbGV0IGxvYyA9IGF3YWl0IHRoaXMuZ2V0TG9jYXRpb25JblZpZXcob3B0cy5lbGVtZW50KTtcbiAgICAgIGlmIChvcHRzLnggJiYgb3B0cy55KSB7XG4gICAgICAgIC8vIHRoaXMgaXMgYW4gb2Zmc2V0IGZyb20gdGhlIGVsZW1lbnRcbiAgICAgICAgcmVsZWFzZS5vcHRpb25zID0ge1xuICAgICAgICAgIHg6IGxvYy54ICsgb3B0cy54LFxuICAgICAgICAgIHk6IGxvYy55ICsgb3B0cy55XG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyB0aGlzIGlzIHRoZSBjZW50ZXIgb2YgdGhlIGVsZW1lbnRcbiAgICAgICAgbGV0IHNpemUgPSBhd2FpdCB0aGlzLmdldFNpemUob3B0cy5lbGVtZW50KTtcbiAgICAgICAgcmVsZWFzZS5vcHRpb25zID0ge1xuICAgICAgICAgIHg6IGxvYy54ICsgc2l6ZS53aWR0aCAvIDIsXG4gICAgICAgICAgeTogbG9jLnkgKyBzaXplLmhlaWdodCAvIDJcbiAgICAgICAgfTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgcmVsZWFzZS5vcHRpb25zID0gXy5waWNrKG9wdHMsICd4JywgJ3knKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlbGVhc2U7XG59O1xuXG4vLyBQZXJmb3JtIG9uZSBnZXN0dXJlXG5oZWxwZXJzLnBlcmZvcm1HZXN0dXJlID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybUdlc3R1cmUgKGdlc3R1cmUpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kb1RvdWNoQWN0aW9uKGdlc3R1cmUuYWN0aW9uLCBnZXN0dXJlLm9wdGlvbnMgfHwge30pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgLy8gc29tZXRpbWUgdGhlIGVsZW1lbnQgaXMgbm90IGF2YWlsYWJsZSB3aGVuIHJlbGVhc2luZywgcmV0cnkgd2l0aG91dCBpdFxuICAgIGlmIChpc0Vycm9yVHlwZShlLCBlcnJvcnMuTm9TdWNoRWxlbWVudEVycm9yKSAmJiBnZXN0dXJlLmFjdGlvbiA9PT0gJ3JlbGVhc2UnICYmXG4gICAgICAgIGdlc3R1cmUub3B0aW9ucy5lbGVtZW50KSB7XG4gICAgICBkZWxldGUgZ2VzdHVyZS5vcHRpb25zLmVsZW1lbnQ7XG4gICAgICBsb2cuZGVidWcoYHJldHJ5aW5nIHJlbGVhc2Ugd2l0aG91dCBlbGVtZW50IG9wdHM6ICR7Z2VzdHVyZS5vcHRpb25zfS5gKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRvVG91Y2hBY3Rpb24oZ2VzdHVyZS5hY3Rpb24sIGdlc3R1cmUub3B0aW9ucyB8fCB7fSk7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn07XG5cbmNvbW1hbmRzLmdldFN3aXBlT3B0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIGdldFN3aXBlT3B0aW9ucyAoZ2VzdHVyZXMsIHRvdWNoQ291bnQgPSAxKSB7XG4gIGxldCBzdGFydFggPSBnZXRDb29yZERlZmF1bHQoZ2VzdHVyZXNbMF0ub3B0aW9ucy54KSxcbiAgICAgIHN0YXJ0WSA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1swXS5vcHRpb25zLnkpLFxuICAgICAgZW5kWCA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1syXS5vcHRpb25zLngpLFxuICAgICAgZW5kWSA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1syXS5vcHRpb25zLnkpLFxuICAgICAgZHVyYXRpb24gPSBnZXRTd2lwZVRvdWNoRHVyYXRpb24oZ2VzdHVyZXNbMV0pLFxuICAgICAgZWxlbWVudCA9IGdlc3R1cmVzWzBdLm9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGRlc3RFbGVtZW50ID0gZ2VzdHVyZXNbMl0ub3B0aW9ucy5lbGVtZW50IHx8IGdlc3R1cmVzWzBdLm9wdGlvbnMuZWxlbWVudDtcblxuICAvLyB0aGVyZSdzIG5vIGRlc3RpbmF0aW9uIGVsZW1lbnQgaGFuZGxpbmcgaW4gYm9vdHN0cmFwIGFuZCBzaW5jZSBpdCBhcHBsaWVzIHRvIGFsbCBwbGF0Zm9ybXMsIHdlIGhhbmRsZSBpdCBoZXJlXG4gIGlmICh1dGlsLmhhc1ZhbHVlKGRlc3RFbGVtZW50KSkge1xuICAgIGxldCBsb2NSZXN1bHQgPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KGRlc3RFbGVtZW50KTtcbiAgICBsZXQgc2l6ZVJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0U2l6ZShkZXN0RWxlbWVudCk7XG4gICAgbGV0IG9mZnNldFggPSAoTWF0aC5hYnMoZW5kWCkgPCAxICYmIE1hdGguYWJzKGVuZFgpID4gMCkgPyBzaXplUmVzdWx0LndpZHRoICogZW5kWCA6IGVuZFg7XG4gICAgbGV0IG9mZnNldFkgPSAoTWF0aC5hYnMoZW5kWSkgPCAxICYmIE1hdGguYWJzKGVuZFkpID4gMCkgPyBzaXplUmVzdWx0LmhlaWdodCAqIGVuZFkgOiBlbmRZO1xuICAgIGVuZFggPSBsb2NSZXN1bHQueCArIG9mZnNldFg7XG4gICAgZW5kWSA9IGxvY1Jlc3VsdC55ICsgb2Zmc2V0WTtcbiAgICAvLyBpZiB0aGUgdGFyZ2V0IGVsZW1lbnQgd2FzIHByb3ZpZGVkLCB0aGUgY29vcmRpbmF0ZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBuZWVkIHRvIGJlIHJlbGF0aXZlIHRvIGl0LlxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKGVsZW1lbnQpKSB7XG4gICAgICBsZXQgZmlyc3RFbExvY2F0aW9uID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhlbGVtZW50KTtcbiAgICAgIGVuZFggLT0gZmlyc3RFbExvY2F0aW9uLng7XG4gICAgICBlbmRZIC09IGZpcnN0RWxMb2NhdGlvbi55O1xuICAgIH1cbiAgfVxuICAvLyBjbGllbnRzIGFyZSByZXNwb25zaWJsZSB0byB1c2UgdGhlc2Ugb3B0aW9ucyBjb3JyZWN0bHlcbiAgcmV0dXJuIHtzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIHRvdWNoQ291bnQsIGVsZW1lbnR9O1xufTtcblxuY29tbWFuZHMucGVyZm9ybVRvdWNoID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVRvdWNoIChnZXN0dXJlcykge1xuICAvLyBwcmVzcy13YWl0LW1vdmVUby1yZWxlYXNlIGlzIGBzd2lwZWAsIHNvIHVzZSBuYXRpdmUgbWV0aG9kXG4gIGlmIChnZXN0dXJlcy5sZW5ndGggPT09IDQgJiZcbiAgICAgIGdlc3R1cmVzWzBdLmFjdGlvbiA9PT0gJ3ByZXNzJyAmJlxuICAgICAgZ2VzdHVyZXNbMV0uYWN0aW9uID09PSAnd2FpdCcgJiZcbiAgICAgIGdlc3R1cmVzWzJdLmFjdGlvbiA9PT0gJ21vdmVUbycgJiZcbiAgICAgIGdlc3R1cmVzWzNdLmFjdGlvbiA9PT0gJ3JlbGVhc2UnKSB7XG5cbiAgICBsZXQgc3dpcGVPcHRzID0gYXdhaXQgdGhpcy5nZXRTd2lwZU9wdGlvbnMoZ2VzdHVyZXMpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnN3aXBlKHN3aXBlT3B0cy5zdGFydFgsIHN3aXBlT3B0cy5zdGFydFksIHN3aXBlT3B0cy5lbmRYLFxuICAgICAgICBzd2lwZU9wdHMuZW5kWSwgc3dpcGVPcHRzLmR1cmF0aW9uLCBzd2lwZU9wdHMudG91Y2hDb3VudCxcbiAgICAgICAgc3dpcGVPcHRzLmVsZW1lbnQpO1xuICB9XG4gIGxldCBhY3Rpb25zID0gXy5tYXAoZ2VzdHVyZXMsICdhY3Rpb24nKTtcblxuICBpZiAoYWN0aW9uc1swXSA9PT0gJ2xvbmdQcmVzcycgJiYgYWN0aW9uc1sxXSA9PT0gJ21vdmVUbycgJiYgYWN0aW9uc1syXSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgLy8gc29tZSB0aGluZ3MgYXJlIHNwZWNpYWxcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kb1RvdWNoRHJhZyhnZXN0dXJlcyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGFjdGlvbnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAvLyBgcHJlc3NgIHdpdGhvdXQgYSB3YWl0IGlzIHRvbyBzbG93IGFuZCBnZXRzIGludGVycHJldHRlZCBhcyBhIGBsb25nUHJlc3NgXG4gICAgICBpZiAoXy5oZWFkKGFjdGlvbnMpID09PSAncHJlc3MnICYmIF8ubGFzdChhY3Rpb25zKSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICAgIGFjdGlvbnNbMF0gPSAndGFwJztcbiAgICAgICAgZ2VzdHVyZXNbMF0uYWN0aW9uID0gJ3RhcCc7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBgbG9uZ1ByZXNzYCBhbmQgYHRhcGAgbWV0aG9kcyByZWxlYXNlIG9uIHRoZWlyIG93blxuICAgICAgaWYgKChfLmhlYWQoYWN0aW9ucykgPT09ICd0YXAnIHx8IF8uaGVhZChhY3Rpb25zKSA9PT0gJ2xvbmdQcmVzcycpICYmIF8ubGFzdChhY3Rpb25zKSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICAgIGdlc3R1cmVzLnBvcCgpO1xuICAgICAgICBhY3Rpb25zLnBvcCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsb25ncHJlc3MgZm9sbG93ZWQgYnkgYW55dGhpbmcgb3RoZXIgdGhhbiByZWxlYXNlIHNob3VsZCBiZWNvbWUgYSBwcmVzcyBhbmQgd2FpdFxuICAgICAgaWYgKGFjdGlvbnNbMF0gPT09ICdsb25nUHJlc3MnKSB7XG4gICAgICAgIGFjdGlvbnMgPSBbJ3ByZXNzJywgJ3dhaXQnLCAuLi5hY3Rpb25zLnNsaWNlKDEpXTtcblxuICAgICAgICBsZXQgcHJlc3MgPSBnZXN0dXJlcy5zaGlmdCgpO1xuICAgICAgICBwcmVzcy5hY3Rpb24gPSAncHJlc3MnO1xuICAgICAgICBsZXQgd2FpdCA9IHtcbiAgICAgICAgICBhY3Rpb246ICd3YWl0JyxcbiAgICAgICAgICBvcHRpb25zOiB7bXM6IHByZXNzLm9wdGlvbnMuZHVyYXRpb24gfHwgMTAwMH1cbiAgICAgICAgfTtcbiAgICAgICAgZGVsZXRlIHByZXNzLm9wdGlvbnMuZHVyYXRpb247XG4gICAgICAgIGdlc3R1cmVzID0gW3ByZXNzLCB3YWl0LCAuLi5nZXN0dXJlc107XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZpeGVkR2VzdHVyZXMgPSBhd2FpdCB0aGlzLnBhcnNlVG91Y2goZ2VzdHVyZXMsIGZhbHNlKTtcbiAgICAvLyBmaXggcmVsZWFzZSBhY3Rpb24gdGhlbiBwZXJmb3JtIGFsbCBhY3Rpb25zXG4gICAgaWYgKGFjdGlvbnNbYWN0aW9ucy5sZW5ndGggLSAxXSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICBhY3Rpb25zW2FjdGlvbnMubGVuZ3RoIC0gMV0gPSBhd2FpdCB0aGlzLmZpeFJlbGVhc2UoZ2VzdHVyZXMpO1xuICAgIH1cbiAgICBmb3IgKGxldCBnIG9mIGZpeGVkR2VzdHVyZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMucGVyZm9ybUdlc3R1cmUoZyk7XG4gICAgfVxuICB9XG59O1xuXG5oZWxwZXJzLnBhcnNlVG91Y2ggPSBhc3luYyBmdW5jdGlvbiBwYXJzZVRvdWNoIChnZXN0dXJlcywgbXVsdGkpIHtcbiAgLy8gYmVjYXVzZSBtdWx0aS10b3VjaCByZWxlYXNlcyBhdCB0aGUgZW5kIGJ5IGRlZmF1bHRcbiAgaWYgKG11bHRpICYmIF8ubGFzdChnZXN0dXJlcykuYWN0aW9uID09PSAncmVsZWFzZScpIHtcbiAgICBnZXN0dXJlcy5wb3AoKTtcbiAgfVxuXG4gIGxldCB0b3VjaFN0YXRlT2JqZWN0cyA9IGF3YWl0IGFzeW5jbWFwKGdlc3R1cmVzLCBhc3luYyAoZ2VzdHVyZSkgPT4ge1xuICAgIGxldCBvcHRpb25zID0gZ2VzdHVyZS5vcHRpb25zIHx8IHt9O1xuICAgIGlmIChfLmluY2x1ZGVzKFsncHJlc3MnLCAnbW92ZVRvJywgJ3RhcCcsICdsb25nUHJlc3MnXSwgZ2VzdHVyZS5hY3Rpb24pKSB7XG4gICAgICBvcHRpb25zLm9mZnNldCA9IGZhbHNlO1xuICAgICAgbGV0IGVsZW1lbnRJZCA9IGdlc3R1cmUub3B0aW9ucy5lbGVtZW50O1xuICAgICAgaWYgKGVsZW1lbnRJZCkge1xuICAgICAgICBsZXQgcG9zID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhlbGVtZW50SWQpO1xuICAgICAgICBpZiAoZ2VzdHVyZS5vcHRpb25zLnggfHwgZ2VzdHVyZS5vcHRpb25zLnkpIHtcbiAgICAgICAgICBvcHRpb25zLnggPSBwb3MueCArIChnZXN0dXJlLm9wdGlvbnMueCB8fCAwKTtcbiAgICAgICAgICBvcHRpb25zLnkgPSBwb3MueSArIChnZXN0dXJlLm9wdGlvbnMueSB8fCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBhd2FpdCB0aGlzLmdldFNpemUoZWxlbWVudElkKTtcbiAgICAgICAgICBvcHRpb25zLnggPSBwb3MueCArICh3aWR0aCAvIDIpO1xuICAgICAgICAgIG9wdGlvbnMueSA9IHBvcy55ICsgKGhlaWdodCAvIDIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0b3VjaFN0YXRlT2JqZWN0ID0ge1xuICAgICAgICAgIGFjdGlvbjogZ2VzdHVyZS5hY3Rpb24sXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICB0aW1lT2Zmc2V0OiAwLjAwNSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLnggPSAoZ2VzdHVyZS5vcHRpb25zLnggfHwgMCk7XG4gICAgICAgIG9wdGlvbnMueSA9IChnZXN0dXJlLm9wdGlvbnMueSB8fCAwKTtcblxuICAgICAgICBsZXQgdG91Y2hTdGF0ZU9iamVjdCA9IHtcbiAgICAgICAgICBhY3Rpb246IGdlc3R1cmUuYWN0aW9uLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgdGltZU9mZnNldDogMC4wMDUsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0b3VjaFN0YXRlT2JqZWN0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgb2Zmc2V0ID0gMC4wMDU7XG4gICAgICBpZiAoZ2VzdHVyZS5hY3Rpb24gPT09ICd3YWl0Jykge1xuICAgICAgICBvcHRpb25zID0gZ2VzdHVyZS5vcHRpb25zO1xuICAgICAgICBvZmZzZXQgPSAocGFyc2VJbnQoZ2VzdHVyZS5vcHRpb25zLm1zLCAxMCkgLyAxMDAwKTtcbiAgICAgIH1cbiAgICAgIGxldCB0b3VjaFN0YXRlT2JqZWN0ID0ge1xuICAgICAgICBhY3Rpb246IGdlc3R1cmUuYWN0aW9uLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICB0aW1lT2Zmc2V0OiBvZmZzZXQsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3Q7XG4gICAgfVxuICB9LCBmYWxzZSk7XG4gIC8vIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSB0aW1lICh3aGljaCBpcyBub3cgYW4gb2Zmc2V0KVxuICAvLyBhbmQgdGhlIHBvc2l0aW9uICh3aGljaCBtYXkgYmUgYW4gb2Zmc2V0KVxuICBsZXQgcHJldlBvcyA9IG51bGwsXG4gICAgICB0aW1lID0gMDtcbiAgZm9yIChsZXQgc3RhdGUgb2YgdG91Y2hTdGF0ZU9iamVjdHMpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChzdGF0ZS5vcHRpb25zLngpICYmIF8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSAmJiBwcmV2UG9zICE9PSBudWxsKSB7XG4gICAgICAvLyB0aGlzIGhhcHBlbnMgd2l0aCB3YWl0XG4gICAgICBzdGF0ZS5vcHRpb25zLnggPSBwcmV2UG9zLng7XG4gICAgICBzdGF0ZS5vcHRpb25zLnkgPSBwcmV2UG9zLnk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5vcHRpb25zLm9mZnNldCAmJiBwcmV2UG9zKSB7XG4gICAgICAvLyB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhbiBvZmZzZXRcbiAgICAgIHN0YXRlLm9wdGlvbnMueCArPSBwcmV2UG9zLng7XG4gICAgICBzdGF0ZS5vcHRpb25zLnkgKz0gcHJldlBvcy55O1xuICAgIH1cbiAgICBkZWxldGUgc3RhdGUub3B0aW9ucy5vZmZzZXQ7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueCkgJiYgIV8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSkge1xuICAgICAgcHJldlBvcyA9IHN0YXRlLm9wdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKG11bHRpKSB7XG4gICAgICBsZXQgdGltZU9mZnNldCA9IHN0YXRlLnRpbWVPZmZzZXQ7XG4gICAgICB0aW1lICs9IHRpbWVPZmZzZXQ7XG4gICAgICBzdGF0ZS50aW1lID0gYW5kcm9pZEhlbHBlcnMudHJ1bmNhdGVEZWNpbWFscyh0aW1lLCAzKTtcblxuICAgICAgLy8gbXVsdGkgZ2VzdHVyZXMgcmVxdWlyZSAndG91Y2gnIHJhdGhlciB0aGFuICdvcHRpb25zJ1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueCkgJiYgIV8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSkge1xuICAgICAgICBzdGF0ZS50b3VjaCA9IHtcbiAgICAgICAgICB4OiBzdGF0ZS5vcHRpb25zLngsXG4gICAgICAgICAgeTogc3RhdGUub3B0aW9ucy55XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWxldGUgc3RhdGUub3B0aW9ucztcbiAgICB9XG4gICAgZGVsZXRlIHN0YXRlLnRpbWVPZmZzZXQ7XG4gIH1cbiAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3RzO1xufTtcblxuXG5jb21tYW5kcy5wZXJmb3JtTXVsdGlBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBwZXJmb3JtTXVsdGlBY3Rpb24gKGFjdGlvbnMsIGVsZW1lbnRJZCkge1xuICAvLyBBbmRyb2lkIG5lZWRzIGF0IGxlYXN0IHR3byBhY3Rpb25zIHRvIGJlIGFibGUgdG8gcGVyZm9ybSBhIG11bHRpIHBvaW50ZXIgZ2VzdHVyZVxuICBpZiAoYWN0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ011bHRpIFBvaW50ZXIgR2VzdHVyZXMgbmVlZCBhdCBsZWFzdCB0d28gYWN0aW9ucy4gJyArXG4gICAgICAgICdVc2UgVG91Y2ggQWN0aW9ucyBmb3IgYSBzaW5nbGUgYWN0aW9uLicpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGVzID0gYXdhaXQgYXN5bmNtYXAoYWN0aW9ucywgYXN5bmMgKGFjdGlvbikgPT4gYXdhaXQgdGhpcy5wYXJzZVRvdWNoKGFjdGlvbiwgdHJ1ZSksIGZhbHNlKTtcblxuICByZXR1cm4gYXdhaXQgdGhpcy5kb1BlcmZvcm1NdWx0aUFjdGlvbihlbGVtZW50SWQsIHN0YXRlcyk7XG59O1xuXG4vKipcbiAqIFJlYXNvbiBmb3IgaXNvbGF0aW5nIGRvUGVyZm9ybU11bHRpQWN0aW9uIGZyb20gcGVyZm9ybU11bHRpQWN0aW9uIGlzIGZvciByZXVzaW5nIHBlcmZvcm1NdWx0aUFjdGlvblxuICogYWNyb3NzIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgYW5kIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uXG4gKiBPdGhlciBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIG5lZWQgdG8gb3ZlcnJpZGUgZG9QZXJmb3JtTXVsdGlBY3Rpb25cbiAqIHRvIGZhY2lsaXRhdGUgcGVyZm9ybU11bHRpQWN0aW9uLlxuICovXG5jb21tYW5kcy5kb1BlcmZvcm1NdWx0aUFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGRvUGVyZm9ybU11bHRpQWN0aW9uIChlbGVtZW50SWQsIHN0YXRlcykge1xuICBsZXQgb3B0cztcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIG9wdHMgPSB7XG4gICAgICBlbGVtZW50SWQsXG4gICAgICBhY3Rpb25zOiBzdGF0ZXNcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnBlcmZvcm1NdWx0aVBvaW50ZXJHZXN0dXJlJywgb3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgb3B0cyA9IHtcbiAgICAgIGFjdGlvbnM6IHN0YXRlc1xuICAgIH07XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3BlcmZvcm1NdWx0aVBvaW50ZXJHZXN0dXJlJywgb3B0cyk7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy90b3VjaC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|
|
398
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy90b3VjaC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsImhlbHBlcnMiLCJleHRlbnNpb25zIiwiZ2V0Q29vcmREZWZhdWx0IiwidmFsIiwidXRpbCIsImhhc1ZhbHVlIiwiZ2V0U3dpcGVUb3VjaER1cmF0aW9uIiwid2FpdEdlc3R1cmUiLCJkdXJhdGlvbiIsIm9wdGlvbnMiLCJtcyIsImRvVG91Y2hBY3Rpb24iLCJhY3Rpb24iLCJvcHRzIiwiZWxlbWVudCIsIngiLCJ5IiwiY291bnQiLCJ0YXAiLCJ0b3VjaERvd24iLCJ0b3VjaFVwIiwidG91Y2hNb3ZlIiwiQiIsImRlbGF5IiwidG91Y2hMb25nQ2xpY2siLCJsb2ciLCJ3YXJuIiwiZXJyb3JBbmRUaHJvdyIsImRvVG91Y2hEcmFnIiwiZ2VzdHVyZXMiLCJsb25nUHJlc3MiLCJtb3ZlVG8iLCJzdGFydFgiLCJzdGFydFkiLCJlbmRYIiwiZW5kWSIsImdldExvY2F0aW9uSW5WaWV3IiwiYXBpTGV2ZWwiLCJhZGIiLCJnZXRBcGlMZXZlbCIsIk1hdGgiLCJtYXgiLCJkcmFnIiwiZml4UmVsZWFzZSIsInJlbGVhc2UiLCJfIiwibGFzdCIsImNsb25lIiwicmVmIiwiZ2VzdHVyZSIsInJldmVyc2UiLCJsb2MiLCJzaXplIiwiZ2V0U2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwicGljayIsInBlcmZvcm1HZXN0dXJlIiwiZSIsImVycm9ycyIsIk5vU3VjaEVsZW1lbnRFcnJvciIsImRlYnVnIiwiZ2V0U3dpcGVPcHRpb25zIiwidG91Y2hDb3VudCIsImRlc3RFbGVtZW50IiwibG9jUmVzdWx0Iiwic2l6ZVJlc3VsdCIsIm9mZnNldFgiLCJhYnMiLCJvZmZzZXRZIiwiZmlyc3RFbExvY2F0aW9uIiwicGVyZm9ybVRvdWNoIiwibGVuZ3RoIiwic3dpcGVPcHRzIiwic3dpcGUiLCJhY3Rpb25zIiwibWFwIiwiaGVhZCIsInBvcCIsInNsaWNlIiwicHJlc3MiLCJzaGlmdCIsIndhaXQiLCJmaXhlZEdlc3R1cmVzIiwicGFyc2VUb3VjaCIsImciLCJtdWx0aSIsInRvdWNoU3RhdGVPYmplY3RzIiwiaW5jbHVkZXMiLCJvZmZzZXQiLCJlbGVtZW50SWQiLCJwb3MiLCJ0b3VjaFN0YXRlT2JqZWN0IiwidGltZU9mZnNldCIsInBhcnNlSW50IiwicHJldlBvcyIsInRpbWUiLCJzdGF0ZSIsImlzVW5kZWZpbmVkIiwiYW5kcm9pZEhlbHBlcnMiLCJ0cnVuY2F0ZURlY2ltYWxzIiwidG91Y2giLCJwZXJmb3JtTXVsdGlBY3Rpb24iLCJFcnJvciIsInN0YXRlcyIsImRvUGVyZm9ybU11bHRpQWN0aW9uIiwiYm9vdHN0cmFwIiwic2VuZEFjdGlvbiIsIk9iamVjdCIsImFzc2lnbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxJQUFJQSxRQUFRLEdBQUcsRUFBZjtBQUFBLElBQW1CQyxPQUFPLEdBQUcsRUFBN0I7QUFBQSxJQUFpQ0MsVUFBVSxHQUFHLEVBQTlDOzs7O0FBRUEsU0FBU0MsZUFBVCxDQUEwQkMsR0FBMUIsRUFBK0I7QUFJN0IsU0FBT0MsY0FBS0MsUUFBTCxDQUFjRixHQUFkLElBQXFCQSxHQUFyQixHQUEyQixHQUFsQztBQUNEOztBQUVELFNBQVNHLHFCQUFULENBQWdDQyxXQUFoQyxFQUE2QztBQUczQyxNQUFJQyxRQUFRLEdBQUcsR0FBZjs7QUFDQSxNQUFJLE9BQU9ELFdBQVcsQ0FBQ0UsT0FBWixDQUFvQkMsRUFBM0IsS0FBa0MsV0FBbEMsSUFBaURILFdBQVcsQ0FBQ0UsT0FBWixDQUFvQkMsRUFBekUsRUFBNkU7QUFDM0VGLElBQUFBLFFBQVEsR0FBR0QsV0FBVyxDQUFDRSxPQUFaLENBQW9CQyxFQUFwQixHQUF5QixJQUFwQzs7QUFDQSxRQUFJRixRQUFRLEtBQUssQ0FBakIsRUFBb0I7QUFHbEJBLE1BQUFBLFFBQVEsR0FBRyxHQUFYO0FBQ0Q7QUFDRjs7QUFDRCxTQUFPQSxRQUFQO0FBQ0Q7O0FBRURULFFB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LE1BQVAsSUFBa0IsTUFBTSxLQUFLd0UsVUFBTCxDQUFnQnhFLE1BQWhCLEVBQXdCLElBQXhCLENBQTFDLEVBQXlFLEtBQXpFLENBQXJCO0FBRUEsU0FBTyxNQUFNLEtBQUs2RixvQkFBTCxDQUEwQmYsU0FBMUIsRUFBcUNjLE1BQXJDLENBQWI7QUFDRCxDQVZEOztBQWtCQXpHLFFBQVEsQ0FBQzBHLG9CQUFULEdBQWdDLGVBQWVBLG9CQUFmLENBQXFDZixTQUFyQyxFQUFnRGMsTUFBaEQsRUFBd0Q7QUFDdEYsTUFBSTNGLElBQUo7O0FBQ0EsTUFBSTZFLFNBQUosRUFBZTtBQUNiN0UsSUFBQUEsSUFBSSxHQUFHO0FBQ0w2RSxNQUFBQSxTQURLO0FBRUxmLE1BQUFBLE9BQU8sRUFBRTZCO0FBRkosS0FBUDtBQUlBLFdBQU8sTUFBTSxLQUFLRSxTQUFMLENBQWVDLFVBQWYsQ0FBMEIsb0NBQTFCLEVBQWdFOUYsSUFBaEUsQ0FBYjtBQUNELEdBTkQsTUFNTztBQUNMQSxJQUFBQSxJQUFJLEdBQUc7QUFDTDhELE1BQUFBLE9BQU8sRUFBRTZCO0FBREosS0FBUDtBQUdBLFdBQU8sTUFBTSxLQUFLRSxTQUFMLENBQWVDLFVBQWYsQ0FBMEIsNEJBQTFCLEVBQXdEOUYsSUFBeEQsQ0FBYjtBQUNEO0FBQ0YsQ0FkRDs7QUFnQkErRixNQUFNLENBQUNDLE1BQVAsQ0FBYzVHLFVBQWQsRUFBMEJGLFFBQTFCLEVBQW9DQyxPQUFwQztlQUVlQyxVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBhbmRyb2lkSGVscGVycyBmcm9tICcuLi9hbmRyb2lkLWhlbHBlcnMnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgZXJyb3JzLCBpc0Vycm9yVHlwZSB9IGZyb20gJ0BhcHBpdW0vYmFzZS1kcml2ZXInO1xuaW1wb3J0IHsgYXN5bmNtYXAgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxubGV0IGNvbW1hbmRzID0ge30sIGhlbHBlcnMgPSB7fSwgZXh0ZW5zaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBnZXRDb29yZERlZmF1bHQgKHZhbCkge1xuICAvLyBnb2luZyB0aGUgbG9uZyB3YXkgYW5kIGNoZWNraW5nIGZvciB1bmRlZmluZWQgYW5kIG51bGwgc2luY2VcbiAgLy8gd2UgY2FuJ3QgYmUgYXNzdXJlZCBgZWxJZGAgaXMgYSBzdHJpbmcgYW5kIG5vdCBhbiBpbnQuIFNhbWVcbiAgLy8gdGhpbmcgd2l0aCBkZXN0RWxlbWVudCBiZWxvdy5cbiAgcmV0dXJuIHV0aWwuaGFzVmFsdWUodmFsKSA/IHZhbCA6IDAuNTtcbn1cblxuZnVuY3Rpb24gZ2V0U3dpcGVUb3VjaER1cmF0aW9uICh3YWl0R2VzdHVyZSkge1xuICAvLyB0aGUgdG91Y2ggYWN0aW9uIGFwaSB1c2VzIG1zLCB3ZSB3YW50IHNlY29uZHNcbiAgLy8gMC44IGlzIHRoZSBkZWZhdWx0IHRpbWUgZm9yIHRoZSBvcGVyYXRpb25cbiAgbGV0IGR1cmF0aW9uID0gMC44O1xuICBpZiAodHlwZW9mIHdhaXRHZXN0dXJlLm9wdGlvbnMubXMgIT09ICd1bmRlZmluZWQnICYmIHdhaXRHZXN0dXJlLm9wdGlvbnMubXMpIHtcbiAgICBkdXJhdGlvbiA9IHdhaXRHZXN0dXJlLm9wdGlvbnMubXMgLyAxMDAwO1xuICAgIGlmIChkdXJhdGlvbiA9PT0gMCkge1xuICAgICAgLy8gc2V0IHRvIGEgdmVyeSBsb3cgbnVtYmVyLCBzaW5jZSB0aGV5IHdhbnRlZCBpdCBmYXN0XG4gICAgICAvLyBidXQgYmVsb3cgMC4xIGJlY29tZXMgMCBzdGVwcywgd2hpY2ggY2F1c2VzIGVycm9yc1xuICAgICAgZHVyYXRpb24gPSAwLjE7XG4gICAgfVxuICB9XG4gIHJldHVybiBkdXJhdGlvbjtcbn1cblxuY29tbWFuZHMuZG9Ub3VjaEFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGRvVG91Y2hBY3Rpb24gKGFjdGlvbiwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHsgZWxlbWVudCwgeCwgeSwgY291bnQsIG1zLCBkdXJhdGlvbiB9ID0gb3B0cztcbiAgLy8gcGFyc2VUb3VjaCBwcmVjYWxjdWxhdGVzIGFic29sdXRlIGVsZW1lbnQgcG9zaXRpb25zXG4gIC8vIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcGFzcyBgZWxlbWVudGAgdG8gdGhlIGFmZmVjdGVkIGdlc3R1cmVzXG4gIHN3aXRjaCAoYWN0aW9uKSB7XG4gICAgY2FzZSAndGFwJzpcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnRhcChudWxsLCB4LCB5LCBjb3VudCk7XG4gICAgY2FzZSAncHJlc3MnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hEb3duKG51bGwsIHgsIHkpO1xuICAgIGNhc2UgJ3JlbGVhc2UnOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hVcChlbGVtZW50LCB4LCB5KTtcbiAgICBjYXNlICdtb3ZlVG8nOlxuICAgICAgcmV0dXJuIGF3YWl0IHRoaXMudG91Y2hNb3ZlKG51bGwsIHgsIHkpO1xuICAgIGNhc2UgJ3dhaXQnOlxuICAgICAgcmV0dXJuIGF3YWl0IEIuZGVsYXkobXMpO1xuICAgIGNhc2UgJ2xvbmdQcmVzcyc6XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy50b3VjaExvbmdDbGljayhudWxsLCB4LCB5LCBkdXJhdGlvbiB8fCAxMDAwKTtcbiAgICBjYXNlICdjYW5jZWwnOlxuICAgICAgLy8gVE9ETzogY2xhcmlmeSBiZWhhdmlvciBvZiAnY2FuY2VsJyBhY3Rpb24gYW5kIGZpeCB0aGlzXG4gICAgICB0aGlzLmxvZy53YXJuKCdDYW5jZWwgYWN0aW9uIGN1cnJlbnRseSBoYXMgbm8gZWZmZWN0Jyk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgdW5rbm93biBhY3Rpb24gJHthY3Rpb259YCk7XG4gIH1cbn07XG5cbi8vIGRyYWcgaXMgKm5vdCogcHJlc3MtbW92ZS1yZWxlYXNlLCBzbyB3ZSBuZWVkIHRvIHRyYW5zbGF0ZVxuLy8gZHJhZyB3b3JrcyBmaW5lIGZvciBzY3JvbGwsIGFzIHdlbGxcbmhlbHBlcnMuZG9Ub3VjaERyYWcgPSBhc3luYyBmdW5jdGlvbiBkb1RvdWNoRHJhZyAoZ2VzdHVyZXMpIHtcbiAgbGV0IGxvbmdQcmVzcyA9IGdlc3R1cmVzWzBdO1xuICBsZXQgbW92ZVRvID0gZ2VzdHVyZXNbMV07XG4gIGxldCBzdGFydFggPSBsb25nUHJlc3Mub3B0aW9ucy54IHx8IDAsXG4gICAgICBzdGFydFkgPSBsb25nUHJlc3Mub3B0aW9ucy55IHx8IDAsXG4gICAgICBlbmRYID0gbW92ZVRvLm9wdGlvbnMueCB8fCAwLFxuICAgICAgZW5kWSA9IG1vdmVUby5vcHRpb25zLnkgfHwgMDtcbiAgaWYgKGxvbmdQcmVzcy5vcHRpb25zLmVsZW1lbnQpIHtcbiAgICBsZXQge3gsIHl9ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhsb25nUHJlc3Mub3B0aW9ucy5lbGVtZW50KTtcbiAgICBzdGFydFggKz0geCB8fCAwO1xuICAgIHN0YXJ0WSArPSB5IHx8IDA7XG4gIH1cbiAgaWYgKG1vdmVUby5vcHRpb25zLmVsZW1lbnQpIHtcbiAgICBsZXQge3gsIHl9ID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhtb3ZlVG8ub3B0aW9ucy5lbGVtZW50KTtcbiAgICBlbmRYICs9IHggfHwgMDtcbiAgICBlbmRZICs9IHkgfHwgMDtcbiAgfVxuXG4gIGxldCBhcGlMZXZlbCA9IGF3YWl0IHRoaXMuYWRiLmdldEFwaUxldmVsKCk7XG4gIC8vIGxvbGxpcG9wIHRha2VzIGEgbGl0dGxlIGxvbmdlciB0byBnZXQgdGhpbmdzIHJvbGxpbmdcbiAgbGV0IGR1cmF0aW9uID0gYXBpTGV2ZWwgPj0gNSA/IDIgOiAxO1xuICAvLyBtYWtlIHN1cmUgdGhhdCBpZiB0aGUgbG9uZyBwcmVzcyBoYXMgYSBkdXJhdGlvbiwgd2UgdXNlIGl0LlxuICBpZiAobG9uZ1ByZXNzLm9wdGlvbnMgJiYgbG9uZ1ByZXNzLm9wdGlvbnMuZHVyYXRpb24pIHtcbiAgICBkdXJhdGlvbiA9IE1hdGgubWF4KGxvbmdQcmVzcy5vcHRpb25zLmR1cmF0aW9uIC8gMTAwMCwgZHVyYXRpb24pO1xuICB9XG5cbiAgLy8gYGRyYWdgIHdpbGwgdGFrZSBjYXJlIG9mIHdoZXRoZXIgdGhlcmUgaXMgYW4gZWxlbWVudCBvciBub3QgYXQgdGhhdCBsZXZlbFxuICByZXR1cm4gYXdhaXQgdGhpcy5kcmFnKHN0YXJ0WCwgc3RhcnRZLCBlbmRYLCBlbmRZLCBkdXJhdGlvbiwgMSwgbG9uZ1ByZXNzLm9wdGlvbnMuZWxlbWVudCwgbW92ZVRvLm9wdGlvbnMuZWxlbWVudCk7XG59O1xuXG4vLyBSZWxlYXNlIGdlc3R1cmUgbmVlZHMgZWxlbWVudCBvciBjby1vcmRpbmF0ZXMgdG8gcmVsZWFzZSBpdCBmcm9tIHRoYXQgcG9zaXRpb25cbi8vIG9yIGVsc2UgcmVsZWFzZSBnZXN0dXJlIGlzIHBlcmZvcm1lZCBmcm9tIGNlbnRlciBvZiB0aGUgc2NyZWVuLCBzbyB0byBmaXggaXRcbi8vIFRoaXMgbWV0aG9kIHNldHMgY28tb3JkaW5hdGVzL2VsZW1lbnQgdG8gcmVsZWFzZSBnZXN0dXJlIGlmIGl0IGhhcyBubyBvcHRpb25zIHNldCBhbHJlYWR5LlxuaGVscGVycy5maXhSZWxlYXNlID0gYXN5bmMgZnVuY3Rpb24gZml4UmVsZWFzZSAoZ2VzdHVyZXMpIHtcbiAgbGV0IHJlbGVhc2UgPSBfLmxhc3QoZ2VzdHVyZXMpO1xuICAvLyBzb21ldGltZXMgdGhlcmUgYXJlIG5vIG9wdGlvbnNcbiAgcmVsZWFzZS5vcHRpb25zID0gcmVsZWFzZS5vcHRpb25zIHx8IHt9O1xuICAvLyBub3RoaW5nIHRvIGRvIGlmIHJlbGVhc2Ugb3B0aW9ucyBhcmUgYWxyZWFkeSBzZXRcbiAgaWYgKHJlbGVhc2Uub3B0aW9ucy5lbGVtZW50IHx8IChyZWxlYXNlLm9wdGlvbnMueCAmJiByZWxlYXNlLm9wdGlvbnMueSkpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgLy8gd2l0aG91dCBjb29yZGluYXRlcywgYHJlbGVhc2VgIHVzZXMgdGhlIGNlbnRlciBvZiB0aGUgc2NyZWVuLCB3aGljaCxcbiAgLy8gZ2VuZXJhbGx5IHNwZWFraW5nLCBpcyBub3Qgd2hhdCB3ZSB3YW50XG4gIC8vIHRoZXJlZm9yZTogbG9vcCBiYWNrd2FyZHMgYW5kIHVzZSB0aGUgbGFzdCBjb21tYW5kIHdpdGggYW4gZWxlbWVudCBhbmQvb3JcbiAgLy8gb2Zmc2V0IGNvb3JkaW5hdGVzXG4gIGdlc3R1cmVzID0gXy5jbG9uZShnZXN0dXJlcyk7XG4gIGxldCByZWYgPSBudWxsO1xuICBmb3IgKGxldCBnZXN0dXJlIG9mIGdlc3R1cmVzLnJldmVyc2UoKSkge1xuICAgIGxldCBvcHRzID0gZ2VzdHVyZS5vcHRpb25zO1xuICAgIGlmIChvcHRzLmVsZW1lbnQgfHwgKG9wdHMueCAmJiBvcHRzLnkpKSB7XG4gICAgICByZWYgPSBnZXN0dXJlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuICB9XG4gIGlmIChyZWYpIHtcbiAgICBsZXQgb3B0cyA9IHJlZi5vcHRpb25zO1xuICAgIGlmIChvcHRzLmVsZW1lbnQpIHtcbiAgICAgIGxldCBsb2MgPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KG9wdHMuZWxlbWVudCk7XG4gICAgICBpZiAob3B0cy54ICYmIG9wdHMueSkge1xuICAgICAgICAvLyB0aGlzIGlzIGFuIG9mZnNldCBmcm9tIHRoZSBlbGVtZW50XG4gICAgICAgIHJlbGVhc2Uub3B0aW9ucyA9IHtcbiAgICAgICAgICB4OiBsb2MueCArIG9wdHMueCxcbiAgICAgICAgICB5OiBsb2MueSArIG9wdHMueVxuICAgICAgICB9O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gdGhpcyBpcyB0aGUgY2VudGVyIG9mIHRoZSBlbGVtZW50XG4gICAgICAgIGxldCBzaXplID0gYXdhaXQgdGhpcy5nZXRTaXplKG9wdHMuZWxlbWVudCk7XG4gICAgICAgIHJlbGVhc2Uub3B0aW9ucyA9IHtcbiAgICAgICAgICB4OiBsb2MueCArIHNpemUud2lkdGggLyAyLFxuICAgICAgICAgIHk6IGxvYy55ICsgc2l6ZS5oZWlnaHQgLyAyXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlbGVhc2Uub3B0aW9ucyA9IF8ucGljayhvcHRzLCAneCcsICd5Jyk7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWxlYXNlO1xufTtcblxuLy8gUGVyZm9ybSBvbmUgZ2VzdHVyZVxuaGVscGVycy5wZXJmb3JtR2VzdHVyZSA9IGFzeW5jIGZ1bmN0aW9uIHBlcmZvcm1HZXN0dXJlIChnZXN0dXJlKSB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZG9Ub3VjaEFjdGlvbihnZXN0dXJlLmFjdGlvbiwgZ2VzdHVyZS5vcHRpb25zIHx8IHt9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIC8vIHNvbWV0aW1lIHRoZSBlbGVtZW50IGlzIG5vdCBhdmFpbGFibGUgd2hlbiByZWxlYXNpbmcsIHJldHJ5IHdpdGhvdXQgaXRcbiAgICBpZiAoaXNFcnJvclR5cGUoZSwgZXJyb3JzLk5vU3VjaEVsZW1lbnRFcnJvcikgJiYgZ2VzdHVyZS5hY3Rpb24gPT09ICdyZWxlYXNlJyAmJlxuICAgICAgICBnZXN0dXJlLm9wdGlvbnMuZWxlbWVudCkge1xuICAgICAgZGVsZXRlIGdlc3R1cmUub3B0aW9ucy5lbGVtZW50O1xuICAgICAgdGhpcy5sb2cuZGVidWcoYHJldHJ5aW5nIHJlbGVhc2Ugd2l0aG91dCBlbGVtZW50IG9wdHM6ICR7Z2VzdHVyZS5vcHRpb25zfS5gKTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRvVG91Y2hBY3Rpb24oZ2VzdHVyZS5hY3Rpb24sIGdlc3R1cmUub3B0aW9ucyB8fCB7fSk7XG4gICAgfVxuICAgIHRocm93IGU7XG4gIH1cbn07XG5cbmNvbW1hbmRzLmdldFN3aXBlT3B0aW9ucyA9IGFzeW5jIGZ1bmN0aW9uIGdldFN3aXBlT3B0aW9ucyAoZ2VzdHVyZXMsIHRvdWNoQ291bnQgPSAxKSB7XG4gIGxldCBzdGFydFggPSBnZXRDb29yZERlZmF1bHQoZ2VzdHVyZXNbMF0ub3B0aW9ucy54KSxcbiAgICAgIHN0YXJ0WSA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1swXS5vcHRpb25zLnkpLFxuICAgICAgZW5kWCA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1syXS5vcHRpb25zLngpLFxuICAgICAgZW5kWSA9IGdldENvb3JkRGVmYXVsdChnZXN0dXJlc1syXS5vcHRpb25zLnkpLFxuICAgICAgZHVyYXRpb24gPSBnZXRTd2lwZVRvdWNoRHVyYXRpb24oZ2VzdHVyZXNbMV0pLFxuICAgICAgZWxlbWVudCA9IGdlc3R1cmVzWzBdLm9wdGlvbnMuZWxlbWVudCxcbiAgICAgIGRlc3RFbGVtZW50ID0gZ2VzdHVyZXNbMl0ub3B0aW9ucy5lbGVtZW50IHx8IGdlc3R1cmVzWzBdLm9wdGlvbnMuZWxlbWVudDtcblxuICAvLyB0aGVyZSdzIG5vIGRlc3RpbmF0aW9uIGVsZW1lbnQgaGFuZGxpbmcgaW4gYm9vdHN0cmFwIGFuZCBzaW5jZSBpdCBhcHBsaWVzIHRvIGFsbCBwbGF0Zm9ybXMsIHdlIGhhbmRsZSBpdCBoZXJlXG4gIGlmICh1dGlsLmhhc1ZhbHVlKGRlc3RFbGVtZW50KSkge1xuICAgIGxldCBsb2NSZXN1bHQgPSBhd2FpdCB0aGlzLmdldExvY2F0aW9uSW5WaWV3KGRlc3RFbGVtZW50KTtcbiAgICBsZXQgc2l6ZVJlc3VsdCA9IGF3YWl0IHRoaXMuZ2V0U2l6ZShkZXN0RWxlbWVudCk7XG4gICAgbGV0IG9mZnNldFggPSAoTWF0aC5hYnMoZW5kWCkgPCAxICYmIE1hdGguYWJzKGVuZFgpID4gMCkgPyBzaXplUmVzdWx0LndpZHRoICogZW5kWCA6IGVuZFg7XG4gICAgbGV0IG9mZnNldFkgPSAoTWF0aC5hYnMoZW5kWSkgPCAxICYmIE1hdGguYWJzKGVuZFkpID4gMCkgPyBzaXplUmVzdWx0LmhlaWdodCAqIGVuZFkgOiBlbmRZO1xuICAgIGVuZFggPSBsb2NSZXN1bHQueCArIG9mZnNldFg7XG4gICAgZW5kWSA9IGxvY1Jlc3VsdC55ICsgb2Zmc2V0WTtcbiAgICAvLyBpZiB0aGUgdGFyZ2V0IGVsZW1lbnQgd2FzIHByb3ZpZGVkLCB0aGUgY29vcmRpbmF0ZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBuZWVkIHRvIGJlIHJlbGF0aXZlIHRvIGl0LlxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKGVsZW1lbnQpKSB7XG4gICAgICBsZXQgZmlyc3RFbExvY2F0aW9uID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhlbGVtZW50KTtcbiAgICAgIGVuZFggLT0gZmlyc3RFbExvY2F0aW9uLng7XG4gICAgICBlbmRZIC09IGZpcnN0RWxMb2NhdGlvbi55O1xuICAgIH1cbiAgfVxuICAvLyBjbGllbnRzIGFyZSByZXNwb25zaWJsZSB0byB1c2UgdGhlc2Ugb3B0aW9ucyBjb3JyZWN0bHlcbiAgcmV0dXJuIHtzdGFydFgsIHN0YXJ0WSwgZW5kWCwgZW5kWSwgZHVyYXRpb24sIHRvdWNoQ291bnQsIGVsZW1lbnR9O1xufTtcblxuY29tbWFuZHMucGVyZm9ybVRvdWNoID0gYXN5bmMgZnVuY3Rpb24gcGVyZm9ybVRvdWNoIChnZXN0dXJlcykge1xuICAvLyBwcmVzcy13YWl0LW1vdmVUby1yZWxlYXNlIGlzIGBzd2lwZWAsIHNvIHVzZSBuYXRpdmUgbWV0aG9kXG4gIGlmIChnZXN0dXJlcy5sZW5ndGggPT09IDQgJiZcbiAgICAgIGdlc3R1cmVzWzBdLmFjdGlvbiA9PT0gJ3ByZXNzJyAmJlxuICAgICAgZ2VzdHVyZXNbMV0uYWN0aW9uID09PSAnd2FpdCcgJiZcbiAgICAgIGdlc3R1cmVzWzJdLmFjdGlvbiA9PT0gJ21vdmVUbycgJiZcbiAgICAgIGdlc3R1cmVzWzNdLmFjdGlvbiA9PT0gJ3JlbGVhc2UnKSB7XG5cbiAgICBsZXQgc3dpcGVPcHRzID0gYXdhaXQgdGhpcy5nZXRTd2lwZU9wdGlvbnMoZ2VzdHVyZXMpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLnN3aXBlKHN3aXBlT3B0cy5zdGFydFgsIHN3aXBlT3B0cy5zdGFydFksIHN3aXBlT3B0cy5lbmRYLFxuICAgICAgICBzd2lwZU9wdHMuZW5kWSwgc3dpcGVPcHRzLmR1cmF0aW9uLCBzd2lwZU9wdHMudG91Y2hDb3VudCxcbiAgICAgICAgc3dpcGVPcHRzLmVsZW1lbnQpO1xuICB9XG4gIGxldCBhY3Rpb25zID0gXy5tYXAoZ2VzdHVyZXMsICdhY3Rpb24nKTtcblxuICBpZiAoYWN0aW9uc1swXSA9PT0gJ2xvbmdQcmVzcycgJiYgYWN0aW9uc1sxXSA9PT0gJ21vdmVUbycgJiYgYWN0aW9uc1syXSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgLy8gc29tZSB0aGluZ3MgYXJlIHNwZWNpYWxcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5kb1RvdWNoRHJhZyhnZXN0dXJlcyk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKGFjdGlvbnMubGVuZ3RoID09PSAyKSB7XG4gICAgICAvLyBgcHJlc3NgIHdpdGhvdXQgYSB3YWl0IGlzIHRvbyBzbG93IGFuZCBnZXRzIGludGVycHJldHRlZCBhcyBhIGBsb25nUHJlc3NgXG4gICAgICBpZiAoXy5oZWFkKGFjdGlvbnMpID09PSAncHJlc3MnICYmIF8ubGFzdChhY3Rpb25zKSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICAgIGFjdGlvbnNbMF0gPSAndGFwJztcbiAgICAgICAgZ2VzdHVyZXNbMF0uYWN0aW9uID0gJ3RhcCc7XG4gICAgICB9XG5cbiAgICAgIC8vIHRoZSBgbG9uZ1ByZXNzYCBhbmQgYHRhcGAgbWV0aG9kcyByZWxlYXNlIG9uIHRoZWlyIG93blxuICAgICAgaWYgKChfLmhlYWQoYWN0aW9ucykgPT09ICd0YXAnIHx8IF8uaGVhZChhY3Rpb25zKSA9PT0gJ2xvbmdQcmVzcycpICYmIF8ubGFzdChhY3Rpb25zKSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICAgIGdlc3R1cmVzLnBvcCgpO1xuICAgICAgICBhY3Rpb25zLnBvcCgpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBsb25ncHJlc3MgZm9sbG93ZWQgYnkgYW55dGhpbmcgb3RoZXIgdGhhbiByZWxlYXNlIHNob3VsZCBiZWNvbWUgYSBwcmVzcyBhbmQgd2FpdFxuICAgICAgaWYgKGFjdGlvbnNbMF0gPT09ICdsb25nUHJlc3MnKSB7XG4gICAgICAgIGFjdGlvbnMgPSBbJ3ByZXNzJywgJ3dhaXQnLCAuLi5hY3Rpb25zLnNsaWNlKDEpXTtcblxuICAgICAgICBsZXQgcHJlc3MgPSBnZXN0dXJlcy5zaGlmdCgpO1xuICAgICAgICBwcmVzcy5hY3Rpb24gPSAncHJlc3MnO1xuICAgICAgICBsZXQgd2FpdCA9IHtcbiAgICAgICAgICBhY3Rpb246ICd3YWl0JyxcbiAgICAgICAgICBvcHRpb25zOiB7bXM6IHByZXNzLm9wdGlvbnMuZHVyYXRpb24gfHwgMTAwMH1cbiAgICAgICAgfTtcbiAgICAgICAgZGVsZXRlIHByZXNzLm9wdGlvbnMuZHVyYXRpb247XG4gICAgICAgIGdlc3R1cmVzID0gW3ByZXNzLCB3YWl0LCAuLi5nZXN0dXJlc107XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGV0IGZpeGVkR2VzdHVyZXMgPSBhd2FpdCB0aGlzLnBhcnNlVG91Y2goZ2VzdHVyZXMsIGZhbHNlKTtcbiAgICAvLyBmaXggcmVsZWFzZSBhY3Rpb24gdGhlbiBwZXJmb3JtIGFsbCBhY3Rpb25zXG4gICAgaWYgKGFjdGlvbnNbYWN0aW9ucy5sZW5ndGggLSAxXSA9PT0gJ3JlbGVhc2UnKSB7XG4gICAgICBhY3Rpb25zW2FjdGlvbnMubGVuZ3RoIC0gMV0gPSBhd2FpdCB0aGlzLmZpeFJlbGVhc2UoZ2VzdHVyZXMpO1xuICAgIH1cbiAgICBmb3IgKGxldCBnIG9mIGZpeGVkR2VzdHVyZXMpIHtcbiAgICAgIGF3YWl0IHRoaXMucGVyZm9ybUdlc3R1cmUoZyk7XG4gICAgfVxuICB9XG59O1xuXG5oZWxwZXJzLnBhcnNlVG91Y2ggPSBhc3luYyBmdW5jdGlvbiBwYXJzZVRvdWNoIChnZXN0dXJlcywgbXVsdGkpIHtcbiAgLy8gYmVjYXVzZSBtdWx0aS10b3VjaCByZWxlYXNlcyBhdCB0aGUgZW5kIGJ5IGRlZmF1bHRcbiAgaWYgKG11bHRpICYmIF8ubGFzdChnZXN0dXJlcykuYWN0aW9uID09PSAncmVsZWFzZScpIHtcbiAgICBnZXN0dXJlcy5wb3AoKTtcbiAgfVxuXG4gIGxldCB0b3VjaFN0YXRlT2JqZWN0cyA9IGF3YWl0IGFzeW5jbWFwKGdlc3R1cmVzLCBhc3luYyAoZ2VzdHVyZSkgPT4ge1xuICAgIGxldCBvcHRpb25zID0gZ2VzdHVyZS5vcHRpb25zIHx8IHt9O1xuICAgIGlmIChfLmluY2x1ZGVzKFsncHJlc3MnLCAnbW92ZVRvJywgJ3RhcCcsICdsb25nUHJlc3MnXSwgZ2VzdHVyZS5hY3Rpb24pKSB7XG4gICAgICBvcHRpb25zLm9mZnNldCA9IGZhbHNlO1xuICAgICAgbGV0IGVsZW1lbnRJZCA9IGdlc3R1cmUub3B0aW9ucy5lbGVtZW50O1xuICAgICAgaWYgKGVsZW1lbnRJZCkge1xuICAgICAgICBsZXQgcG9zID0gYXdhaXQgdGhpcy5nZXRMb2NhdGlvbkluVmlldyhlbGVtZW50SWQpO1xuICAgICAgICBpZiAoZ2VzdHVyZS5vcHRpb25zLnggfHwgZ2VzdHVyZS5vcHRpb25zLnkpIHtcbiAgICAgICAgICBvcHRpb25zLnggPSBwb3MueCArIChnZXN0dXJlLm9wdGlvbnMueCB8fCAwKTtcbiAgICAgICAgICBvcHRpb25zLnkgPSBwb3MueSArIChnZXN0dXJlLm9wdGlvbnMueSB8fCAwKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCB7d2lkdGgsIGhlaWdodH0gPSBhd2FpdCB0aGlzLmdldFNpemUoZWxlbWVudElkKTtcbiAgICAgICAgICBvcHRpb25zLnggPSBwb3MueCArICh3aWR0aCAvIDIpO1xuICAgICAgICAgIG9wdGlvbnMueSA9IHBvcy55ICsgKGhlaWdodCAvIDIpO1xuICAgICAgICB9XG4gICAgICAgIGxldCB0b3VjaFN0YXRlT2JqZWN0ID0ge1xuICAgICAgICAgIGFjdGlvbjogZ2VzdHVyZS5hY3Rpb24sXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICB0aW1lT2Zmc2V0OiAwLjAwNSxcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3Q7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25zLnggPSAoZ2VzdHVyZS5vcHRpb25zLnggfHwgMCk7XG4gICAgICAgIG9wdGlvbnMueSA9IChnZXN0dXJlLm9wdGlvbnMueSB8fCAwKTtcblxuICAgICAgICBsZXQgdG91Y2hTdGF0ZU9iamVjdCA9IHtcbiAgICAgICAgICBhY3Rpb246IGdlc3R1cmUuYWN0aW9uLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgdGltZU9mZnNldDogMC4wMDUsXG4gICAgICAgIH07XG4gICAgICAgIHJldHVybiB0b3VjaFN0YXRlT2JqZWN0O1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgb2Zmc2V0ID0gMC4wMDU7XG4gICAgICBpZiAoZ2VzdHVyZS5hY3Rpb24gPT09ICd3YWl0Jykge1xuICAgICAgICBvcHRpb25zID0gZ2VzdHVyZS5vcHRpb25zO1xuICAgICAgICBvZmZzZXQgPSAocGFyc2VJbnQoZ2VzdHVyZS5vcHRpb25zLm1zLCAxMCkgLyAxMDAwKTtcbiAgICAgIH1cbiAgICAgIGxldCB0b3VjaFN0YXRlT2JqZWN0ID0ge1xuICAgICAgICBhY3Rpb246IGdlc3R1cmUuYWN0aW9uLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICB0aW1lT2Zmc2V0OiBvZmZzZXQsXG4gICAgICB9O1xuICAgICAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3Q7XG4gICAgfVxuICB9LCBmYWxzZSk7XG4gIC8vIHdlIG5lZWQgdG8gY2hhbmdlIHRoZSB0aW1lICh3aGljaCBpcyBub3cgYW4gb2Zmc2V0KVxuICAvLyBhbmQgdGhlIHBvc2l0aW9uICh3aGljaCBtYXkgYmUgYW4gb2Zmc2V0KVxuICBsZXQgcHJldlBvcyA9IG51bGwsXG4gICAgICB0aW1lID0gMDtcbiAgZm9yIChsZXQgc3RhdGUgb2YgdG91Y2hTdGF0ZU9iamVjdHMpIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZChzdGF0ZS5vcHRpb25zLngpICYmIF8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSAmJiBwcmV2UG9zICE9PSBudWxsKSB7XG4gICAgICAvLyB0aGlzIGhhcHBlbnMgd2l0aCB3YWl0XG4gICAgICBzdGF0ZS5vcHRpb25zLnggPSBwcmV2UG9zLng7XG4gICAgICBzdGF0ZS5vcHRpb25zLnkgPSBwcmV2UG9zLnk7XG4gICAgfVxuICAgIGlmIChzdGF0ZS5vcHRpb25zLm9mZnNldCAmJiBwcmV2UG9zKSB7XG4gICAgICAvLyB0aGUgY3VycmVudCBwb3NpdGlvbiBpcyBhbiBvZmZzZXRcbiAgICAgIHN0YXRlLm9wdGlvbnMueCArPSBwcmV2UG9zLng7XG4gICAgICBzdGF0ZS5vcHRpb25zLnkgKz0gcHJldlBvcy55O1xuICAgIH1cbiAgICBkZWxldGUgc3RhdGUub3B0aW9ucy5vZmZzZXQ7XG4gICAgaWYgKCFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueCkgJiYgIV8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSkge1xuICAgICAgcHJldlBvcyA9IHN0YXRlLm9wdGlvbnM7XG4gICAgfVxuXG4gICAgaWYgKG11bHRpKSB7XG4gICAgICBsZXQgdGltZU9mZnNldCA9IHN0YXRlLnRpbWVPZmZzZXQ7XG4gICAgICB0aW1lICs9IHRpbWVPZmZzZXQ7XG4gICAgICBzdGF0ZS50aW1lID0gYW5kcm9pZEhlbHBlcnMudHJ1bmNhdGVEZWNpbWFscyh0aW1lLCAzKTtcblxuICAgICAgLy8gbXVsdGkgZ2VzdHVyZXMgcmVxdWlyZSAndG91Y2gnIHJhdGhlciB0aGFuICdvcHRpb25zJ1xuICAgICAgaWYgKCFfLmlzVW5kZWZpbmVkKHN0YXRlLm9wdGlvbnMueCkgJiYgIV8uaXNVbmRlZmluZWQoc3RhdGUub3B0aW9ucy55KSkge1xuICAgICAgICBzdGF0ZS50b3VjaCA9IHtcbiAgICAgICAgICB4OiBzdGF0ZS5vcHRpb25zLngsXG4gICAgICAgICAgeTogc3RhdGUub3B0aW9ucy55XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBkZWxldGUgc3RhdGUub3B0aW9ucztcbiAgICB9XG4gICAgZGVsZXRlIHN0YXRlLnRpbWVPZmZzZXQ7XG4gIH1cbiAgcmV0dXJuIHRvdWNoU3RhdGVPYmplY3RzO1xufTtcblxuXG5jb21tYW5kcy5wZXJmb3JtTXVsdGlBY3Rpb24gPSBhc3luYyBmdW5jdGlvbiBwZXJmb3JtTXVsdGlBY3Rpb24gKGFjdGlvbnMsIGVsZW1lbnRJZCkge1xuICAvLyBBbmRyb2lkIG5lZWRzIGF0IGxlYXN0IHR3byBhY3Rpb25zIHRvIGJlIGFibGUgdG8gcGVyZm9ybSBhIG11bHRpIHBvaW50ZXIgZ2VzdHVyZVxuICBpZiAoYWN0aW9ucy5sZW5ndGggPT09IDEpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ011bHRpIFBvaW50ZXIgR2VzdHVyZXMgbmVlZCBhdCBsZWFzdCB0d28gYWN0aW9ucy4gJyArXG4gICAgICAgICdVc2UgVG91Y2ggQWN0aW9ucyBmb3IgYSBzaW5nbGUgYWN0aW9uLicpO1xuICB9XG5cbiAgY29uc3Qgc3RhdGVzID0gYXdhaXQgYXN5bmNtYXAoYWN0aW9ucywgYXN5bmMgKGFjdGlvbikgPT4gYXdhaXQgdGhpcy5wYXJzZVRvdWNoKGFjdGlvbiwgdHJ1ZSksIGZhbHNlKTtcblxuICByZXR1cm4gYXdhaXQgdGhpcy5kb1BlcmZvcm1NdWx0aUFjdGlvbihlbGVtZW50SWQsIHN0YXRlcyk7XG59O1xuXG4vKipcbiAqIFJlYXNvbiBmb3IgaXNvbGF0aW5nIGRvUGVyZm9ybU11bHRpQWN0aW9uIGZyb20gcGVyZm9ybU11bHRpQWN0aW9uIGlzIGZvciByZXVzaW5nIHBlcmZvcm1NdWx0aUFjdGlvblxuICogYWNyb3NzIGFuZHJvaWQtZHJpdmVycyAobGlrZSBhcHBpdW0tdWlhdXRvbWF0b3IyLWRyaXZlcikgYW5kIHRvIGF2b2lkIGNvZGUgZHVwbGljYXRpb24uXG4gKiBPdGhlciBhbmRyb2lkLWRyaXZlcnMgKGxpa2UgYXBwaXVtLXVpYXV0b21hdG9yMi1kcml2ZXIpIG5lZWQgdG8gb3ZlcnJpZGUgZG9QZXJmb3JtTXVsdGlBY3Rpb25cbiAqIHRvIGZhY2lsaXRhdGUgcGVyZm9ybU11bHRpQWN0aW9uLlxuICovXG5jb21tYW5kcy5kb1BlcmZvcm1NdWx0aUFjdGlvbiA9IGFzeW5jIGZ1bmN0aW9uIGRvUGVyZm9ybU11bHRpQWN0aW9uIChlbGVtZW50SWQsIHN0YXRlcykge1xuICBsZXQgb3B0cztcbiAgaWYgKGVsZW1lbnRJZCkge1xuICAgIG9wdHMgPSB7XG4gICAgICBlbGVtZW50SWQsXG4gICAgICBhY3Rpb25zOiBzdGF0ZXNcbiAgICB9O1xuICAgIHJldHVybiBhd2FpdCB0aGlzLmJvb3RzdHJhcC5zZW5kQWN0aW9uKCdlbGVtZW50OnBlcmZvcm1NdWx0aVBvaW50ZXJHZXN0dXJlJywgb3B0cyk7XG4gIH0gZWxzZSB7XG4gICAgb3B0cyA9IHtcbiAgICAgIGFjdGlvbnM6IHN0YXRlc1xuICAgIH07XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuYm9vdHN0cmFwLnNlbmRBY3Rpb24oJ3BlcmZvcm1NdWx0aVBvaW50ZXJHZXN0dXJlJywgb3B0cyk7XG4gIH1cbn07XG5cbk9iamVjdC5hc3NpZ24oZXh0ZW5zaW9ucywgY29tbWFuZHMsIGhlbHBlcnMpO1xuZXhwb3J0IHsgY29tbWFuZHMsIGhlbHBlcnMgfTtcbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy90b3VjaC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
|