appium-remote-debugger 5.3.0 → 5.7.0

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.
@@ -16,6 +16,8 @@ exports.simpleStringify = simpleStringify;
16
16
  exports.deferredPromise = deferredPromise;
17
17
  exports.isTargetBased = isTargetBased;
18
18
  exports.getElapsedTime = getElapsedTime;
19
+ exports.convertResult = convertResult;
20
+ exports.RESPONSE_LOG_LENGTH = void 0;
19
21
 
20
22
  require("source-map-support/register");
21
23
 
@@ -31,8 +33,12 @@ var _bluebird = _interopRequireDefault(require("bluebird"));
31
33
 
32
34
  var _appiumSupport = require("appium-support");
33
35
 
36
+ var _appiumBaseDriver = require("appium-base-driver");
37
+
34
38
  const WEB_CONTENT_BUNDLE_ID = 'com.apple.WebKit.WebContent';
35
39
  const MIN_PLATFORM_FOR_TARGET_BASED = '12.2';
40
+ const RESPONSE_LOG_LENGTH = 100;
41
+ exports.RESPONSE_LOG_LENGTH = RESPONSE_LOG_LENGTH;
36
42
 
37
43
  function appInfoFromDict(dict) {
38
44
  const id = dict.WIRApplicationIdentifierKey;
@@ -113,7 +119,7 @@ function appIdForBundle(bundleId, appDict) {
113
119
  let appId;
114
120
 
115
121
  for (const [key, data] of _lodash.default.toPairs(appDict)) {
116
- if (data.bundleId === bundleId) {
122
+ if (data.bundleId.endsWith(bundleId)) {
117
123
  appId = key;
118
124
  break;
119
125
  }
@@ -241,7 +247,27 @@ function isTargetBased(isSafari, platformVersion) {
241
247
  function getElapsedTime(startTime) {
242
248
  const endTime = process.hrtime(startTime);
243
249
  return parseInt((endTime[0] * 1e9 + endTime[1]) / 1e6, 10);
250
+ }
251
+
252
+ function convertResult(res) {
253
+ if (_lodash.default.isUndefined(res)) {
254
+ throw new Error(`Did not get OK result from remote debugger. Result was: ${_lodash.default.truncate(simpleStringify(res), {
255
+ length: RESPONSE_LOG_LENGTH
256
+ })}`);
257
+ } else if (_lodash.default.isString(res)) {
258
+ try {
259
+ res = JSON.parse(res);
260
+ } catch (err) {}
261
+ } else if (!_lodash.default.isObject(res)) {
262
+ throw new Error(`Result has unexpected type: (${typeof res}).`);
263
+ }
264
+
265
+ if (res.status && res.status !== 0) {
266
+ throw (0, _appiumBaseDriver.errorFromMJSONWPStatusCode)(res.status, res.value.message || res.value);
267
+ }
268
+
269
+ return _lodash.default.has(res, 'value') ? res.value : res;
244
270
  }require('source-map-support').install();
245
271
 
246
272
 
247
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbIldFQl9DT05URU5UX0JVTkRMRV9JRCIsIk1JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEIiwiYXBwSW5mb0Zyb21EaWN0IiwiZGljdCIsImlkIiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiaXNQcm94eSIsIl8iLCJpc1N0cmluZyIsIldJUklzQXBwbGljYXRpb25Qcm94eUtleSIsInRvTG93ZXJDYXNlIiwiZW50cnkiLCJuYW1lIiwiV0lSQXBwbGljYXRpb25OYW1lS2V5IiwiYnVuZGxlSWQiLCJXSVJBcHBsaWNhdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkiLCJob3N0SWQiLCJXSVJIb3N0QXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiaXNBY3RpdmUiLCJXSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5IiwiaXNBdXRvbWF0aW9uRW5hYmxlZCIsIldJUlJlbW90ZUF1dG9tYXRpb25FbmFibGVkS2V5IiwicGFnZUFycmF5RnJvbURpY3QiLCJwYWdlRGljdCIsIm5ld1BhZ2VBcnJheSIsInZhbHVlcyIsImlzVW5kZWZpbmVkIiwiV0lSVHlwZUtleSIsInB1c2giLCJXSVJQYWdlSWRlbnRpZmllcktleSIsInRpdGxlIiwiV0lSVGl0bGVLZXkiLCJ1cmwiLCJXSVJVUkxLZXkiLCJpc0tleSIsIldJUkNvbm5lY3Rpb25JZGVudGlmaWVyS2V5IiwiZ2V0RGVidWdnZXJBcHBLZXkiLCJwbGF0Zm9ybVZlcnNpb24iLCJhcHBEaWN0IiwiYXBwSWQiLCJwYXJzZUZsb2F0Iiwia2V5IiwiZGF0YSIsInRvUGFpcnMiLCJsb2ciLCJkZWJ1ZyIsInByb3hpZWRBcHBJZHMiLCJsZW5ndGgiLCJsYXN0IiwiaGFzIiwiYXBwSWRGb3JCdW5kbGUiLCJnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cyIsImJ1bmRsZUlkcyIsImNoZWNrUGFyYW1zIiwicGFyYW1zIiwiZXJyb3JzIiwicGFyYW0iLCJ2YWx1ZSIsImFzc2VydCIsIm9rIiwiZXJyIiwid3JhcFNjcmlwdEZvckZyYW1lIiwic2NyaXB0IiwiZnJhbWUiLCJlbEZyb21DYWNoZSIsInRvU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldFNjcmlwdEZvckF0b20iLCJhdG9tIiwiYXJncyIsImZyYW1lcyIsImFzeW5jQ2FsbEJhY2siLCJhdG9tU3JjIiwibWFwIiwiam9pbiIsInNpbXBsZVN0cmluZ2lmeSIsIm11bHRpbGluZSIsImNsZWFuVmFsdWUiLCJjbG9uZSIsInByb3BlcnR5IiwiZGVmZXJyZWRQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb21pc2UiLCJCIiwicmVzIiwicmVqIiwiaXNUYXJnZXRCYXNlZCIsImlzU2FmYXJpIiwiaXNIaWdoVmVyc2lvbiIsInV0aWwiLCJjb21wYXJlVmVyc2lvbnMiLCJnZXRFbGFwc2VkVGltZSIsInN0YXJ0VGltZSIsImVuZFRpbWUiLCJwcm9jZXNzIiwiaHJ0aW1lIiwicGFyc2VJbnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLHFCQUFxQixHQUFHLDZCQUE5QjtBQUNBLE1BQU1DLDZCQUE2QixHQUFHLE1BQXRDOztBQU1BLFNBQVNDLGVBQVQsQ0FBMEJDLElBQTFCLEVBQWdDO0FBQzlCLFFBQU1DLEVBQUUsR0FBR0QsSUFBSSxDQUFDRSwyQkFBaEI7QUFDQSxRQUFNQyxPQUFPLEdBQUdDLGdCQUFFQyxRQUFGLENBQVdMLElBQUksQ0FBQ00sd0JBQWhCLElBQ1pOLElBQUksQ0FBQ00sd0JBQUwsQ0FBOEJDLFdBQTlCLE9BQWdELE1BRHBDLEdBRVpQLElBQUksQ0FBQ00sd0JBRlQ7QUFHQSxRQUFNRSxLQUFLLEdBQUc7QUFDWlAsSUFBQUEsRUFEWTtBQUVaRSxJQUFBQSxPQUZZO0FBR1pNLElBQUFBLElBQUksRUFBRVQsSUFBSSxDQUFDVSxxQkFIQztBQUlaQyxJQUFBQSxRQUFRLEVBQUVYLElBQUksQ0FB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bXBvcnQgZ2V0QXRvbSBmcm9tICcuL2F0b21zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuXG5cbmNvbnN0IFdFQl9DT05URU5UX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQnO1xuY29uc3QgTUlOX1BMQVRGT1JNX0ZPUl9UQVJHRVRfQkFTRUQgPSAnMTIuMic7XG5cbi8qXG4gKiBUYWtlcyBhIGRpY3Rpb25hcnkgZnJvbSB0aGUgcmVtb3RlIGRlYnVnZ2VyIGFuZCBtYWtlcyBhIG1vcmUgbWFuYWdlYWJsZVxuICogZGljdGlvbmFyeSB3aG9zZSBrZXlzIGFyZSB1bmRlcnN0YW5kYWJsZVxuICovXG5mdW5jdGlvbiBhcHBJbmZvRnJvbURpY3QgKGRpY3QpIHtcbiAgY29uc3QgaWQgPSBkaWN0LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgY29uc3QgaXNQcm94eSA9IF8uaXNTdHJpbmcoZGljdC5XSVJJc0FwcGxpY2F0aW9uUHJveHlLZXkpXG4gICAgPyBkaWN0LldJUklzQXBwbGljYXRpb25Qcm94eUtleS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSdcbiAgICA6IGRpY3QuV0lSSXNBcHBsaWNhdGlvblByb3h5S2V5O1xuICBjb25zdCBlbnRyeSA9IHtcbiAgICBpZCxcbiAgICBpc1Byb3h5LFxuICAgIG5hbWU6IGRpY3QuV0lSQXBwbGljYXRpb25OYW1lS2V5LFxuICAgIGJ1bmRsZUlkOiBkaWN0LldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSxcbiAgICBob3N0SWQ6IGRpY3QuV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICBpc0FjdGl2ZTogZGljdC5XSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5LFxuICAgIGlzQXV0b21hdGlvbkVuYWJsZWQ6ICEhZGljdC5XSVJSZW1vdGVBdXRvbWF0aW9uRW5hYmxlZEtleSxcbiAgfTtcblxuICByZXR1cm4gW2lkLCBlbnRyeV07XG59XG5cbi8qXG4gKiBUYWtlIGEgZGljdGlvbmFyeSBmcm9tIHRoZSByZW1vdGUgZGVidWdnZXIgYW5kIG1ha2VzIGEgbW9yZSBtYW5hZ2VhYmxlXG4gKiBkaWN0aW9uYXJ5IG9mIHBhZ2VzIGF2YWlsYWJsZS5cbiAqL1xuZnVuY3Rpb24gcGFnZUFycmF5RnJvbURpY3QgKHBhZ2VEaWN0KSB7XG4gIGlmIChwYWdlRGljdC5pZCkge1xuICAgIC8vIHRoZSBwYWdlIGlzIGFscmVhZHkgdHJhbnNsYXRlZCwgc28gd3JhcCBpbiBhbiBhcnJheSBhbmQgcGFzcyBiYWNrXG4gICAgcmV0dXJuIFtwYWdlRGljdF07XG4gIH1cbiAgbGV0IG5ld1BhZ2VBcnJheSA9IFtdO1xuICBmb3IgKGNvbnN0IGRpY3Qgb2YgXy52YWx1ZXMocGFnZURpY3QpKSB7XG4gICAgLy8gY291bnQgb25seSBXSVJUeXBlV2ViIHBhZ2VzIGFuZCBpZ25vcmUgYWxsIG90aGVycyAoV0lSVHlwZUphdmFTY3JpcHQgZXRjKVxuICAgIGlmIChfLmlzVW5kZWZpbmVkKGRpY3QuV0lSVHlwZUtleSkgfHwgZGljdC5XSVJUeXBlS2V5ID09PSAnV0lSVHlwZVdlYicpIHtcbiAgICAgIG5ld1BhZ2VBcnJheS5wdXNoKHtcbiAgICAgICAgaWQ6IGRpY3QuV0lSUGFnZUlkZW50aWZpZXJLZXksXG4gICAgICAgIHRpdGxlOiBkaWN0LldJUlRpdGxlS2V5LFxuICAgICAgICB1cmw6IGRpY3QuV0lSVVJMS2V5LFxuICAgICAgICBpc0tleTogIV8uaXNVbmRlZmluZWQoZGljdC5XSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1BhZ2VBcnJheTtcbn1cblxuLypcbiAqIEdpdmVuIGEgYnVuZGxlIGlkLCBmaW5kcyB0aGUgY29ycmVjdCByZW1vdGUgZGVidWdnZXIgYXBwIHRoYXQgaXNcbiAqIGNvbm5lY3RlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0RGVidWdnZXJBcHBLZXkgKGJ1bmRsZUlkLCBwbGF0Zm9ybVZlcnNpb24sIGFwcERpY3QpIHtcbiAgbGV0IGFwcElkO1xuICBpZiAocGFyc2VGbG9hdChwbGF0Zm9ybVZlcnNpb24pID49IDgpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIGRhdGFdIG9mIF8udG9QYWlycyhhcHBEaWN0KSkge1xuICAgICAgaWYgKGRhdGEuYnVuZGxlSWQgPT09IGJ1bmRsZUlkKSB7XG4gICAgICAgIGFwcElkID0ga2V5O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gbm93IHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBwaWNrIGEgcHJveHkgZm9yIHRoaXMgaW5zdGVhZFxuICAgIGlmIChhcHBJZCkge1xuICAgICAgbG9nLmRlYnVnKGBGb3VuZCBhcHAgaWQga2V5ICcke2FwcElkfScgZm9yIGJ1bmRsZSAnJHtidW5kbGVJZH0nYCk7XG4gICAgICBsZXQgcHJveGllZEFwcElkcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBba2V5LCBkYXRhXSBvZiBfLnRvUGFpcnMoYXBwRGljdCkpIHtcbiAgICAgICAgaWYgKGRhdGEuaXNQcm94eSAmJiBkYXRhLmhvc3RJZCA9PT0gYXBwSWQpIHtcbiAgICAgICAgICBsb2cuZGVidWcoYEZvdW5kIHNlcGFyYXRlIGJ1bmRsZUlkICcke2RhdGEuYnVuZGxlSWR9JyBgICtcbiAgICAgICAgICAgICAgICAgICAgYGFjdGluZyBhcyBwcm94eSBmb3IgJyR7YnVuZGxlSWR9Jywgd2l0aCBhcHAgaWQgJyR7a2V5fSdgKTtcbiAgICAgICAgICBwcm94aWVkQXBwSWRzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3hpZWRBcHBJZHMubGVuZ3RoKSB7XG4gICAgICAgIC8vIHVzZSB0aGUgbGFzdCBhcHAgYmVpbmcgcHJveGllZFxuICAgICAgICBhcHBJZCA9IF8ubGFzdChwcm94aWVkQXBwSWRzKTtcbiAgICAgICAgbG9nLmRlYnVnKGBVc2luZyBwcm94aWVkIGFwcCBpZCAnJHthcHBJZH0nYCk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChfLmhhcyhhcHBEaWN0LCBidW5kbGVJZCkpIHtcbiAgICAgIGFwcElkID0gYnVuZGxlSWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFwcElkO1xufVxuXG5mdW5jdGlvbiBhcHBJZEZvckJ1bmRsZSAoYnVuZGxlSWQsIGFwcERpY3QpIHtcbiAgbGV0IGFwcElkO1xuICBmb3IgKGNvbnN0IFtrZXksIGRhdGFdIG9mIF8udG9QYWlycyhhcHBEaWN0KSkge1xuICAgIGlmIChkYXRhLmJ1bmRsZUlkID09PSBidW5kbGVJZCkge1xuICAgICAgYXBwSWQgPSBrZXk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBpZiBub3RoaW5nIGlzIGZvdW5kLCB0cnkgdG8gZ2V0IHRoZSBnZW5lcmljIGFwcFxuICBpZiAoIWFwcElkICYmIGJ1bmRsZUlkICE9PSBXRUJfQ09OVEVOVF9CVU5ETEVfSUQpIHtcbiAgICByZXR1cm4gYXBwSWRGb3JCdW5kbGUoV0VCX0NPTlRFTlRfQlVORExFX0lELCBhcHBEaWN0KTtcbiAgfVxuXG4gIHJldHVybiBhcHBJZDtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVEZWJ1Z2dlckFwcEtleXMgKGJ1bmRsZUlkcywgcGxhdGZvcm1WZXJzaW9uLCBhcHBEaWN0KSB7XG4gIGxldCBwcm94aWVkQXBwSWRzID0gW107XG5cbiAgZm9yIChjb25zdCBidW5kbGVJZCBvZiBidW5kbGVJZHMpIHtcbiAgICBjb25zdCBhcHBJZCA9IGFwcElkRm9yQnVuZGxlKGJ1bmRsZUlkLCBhcHBEaWN0KTtcblxuICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGljayBhIHByb3h5IGZvciB0aGlzIGluc3RlYWRcbiAgICBpZiAoYXBwSWQpIHtcbiAgICAgIHByb3hpZWRBcHBJZHMucHVzaChhcHBJZCk7XG4gICAgICBsb2cuZGVidWcoYEZvdW5kIGFwcCBpZCBrZXkgJyR7YXBwSWR9JyBmb3IgYnVuZGxlICcke2J1bmRsZUlkfSdgKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgZGF0YV0gb2YgXy50b1BhaXJzKGFwcERpY3QpKSB7XG4gICAgICAgIGlmIChkYXRhLmlzUHJveHkgJiYgZGF0YS5ob3N0SWQgPT09IGFwcElkKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBGb3VuZCBzZXBhcmF0ZSBidW5kbGVJZCAnJHtkYXRhLmJ1bmRsZUlkfScgYCArXG4gICAgICAgICAgICAgICAgICAgIGBhY3RpbmcgYXMgcHJveHkgZm9yICcke2J1bmRsZUlkfScsIHdpdGggYXBwIGlkICcke2tleX0nYCk7XG4gICAgICAgICAgcHJveGllZEFwcElkcy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJveGllZEFwcElkcztcbn1cblxuZnVuY3Rpb24gY2hlY2tQYXJhbXMgKHBhcmFtcykge1xuICBsZXQgZXJyb3JzID0gW107XG4gIGZvciAoY29uc3QgW3BhcmFtLCB2YWx1ZV0gb2YgXy50b1BhaXJzKHBhcmFtcykpIHtcbiAgICB0cnkge1xuICAgICAgYXNzZXJ0Lm9rKHZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVycm9ycy5wdXNoKHBhcmFtKTtcbiAgICB9XG4gIH1cbiAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyYXBTY3JpcHRGb3JGcmFtZSAoc2NyaXB0LCBmcmFtZSkge1xuICBsb2cuZGVidWcoYFdyYXBwaW5nIHNjcmlwdCBmb3IgZnJhbWUgJyR7ZnJhbWV9J2ApO1xuICBsZXQgZWxGcm9tQ2FjaGUgPSBhd2FpdCBnZXRBdG9tKCdnZXRfZWxlbWVudF9mcm9tX2NhY2hlJyk7XG4gIHJldHVybiBgKGZ1bmN0aW9uICh3aW5kb3cpIHsgdmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50OyBgICtcbiAgICAgICAgIGByZXR1cm4gKCR7c2NyaXB0fSk7IH0pKCgke2VsRnJvbUNhY2hlLnRvU3RyaW5nKCd1dGY4Jyl9KSgke0pTT04uc3RyaW5naWZ5KGZyYW1lKX0pKWA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFNjcmlwdEZvckF0b20gKGF0b20sIGFyZ3MsIGZyYW1lcywgYXN5bmNDYWxsQmFjayA9IG51bGwpIHtcbiAgbGV0IGF0b21TcmMgPSBhd2FpdCBnZXRBdG9tKGF0b20pO1xuICBsZXQgc2NyaXB0O1xuICBpZiAoZnJhbWVzLmxlbmd0aCA+IDApIHtcbiAgICBzY3JpcHQgPSBhdG9tU3JjO1xuICAgIGZvciAoY29uc3QgZnJhbWUgb2YgZnJhbWVzKSB7XG4gICAgICBzY3JpcHQgPSBhd2FpdCB3cmFwU2NyaXB0Rm9yRnJhbWUoc2NyaXB0LCBmcmFtZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxvZy5kZWJ1ZyhgRXhlY3V0aW5nICcke2F0b219JyBhdG9tIGluIGRlZmF1bHQgY29udGV4dGApO1xuICAgIHNjcmlwdCA9IGAoJHthdG9tU3JjfSlgO1xuICB9XG5cbiAgLy8gYWRkIHRoZSBhcmd1bWVudHMsIGFzIHN0cmluZ3NcbiAgYXJncyA9IGFyZ3MubWFwKEpTT04uc3RyaW5naWZ5KTtcbiAgaWYgKGFzeW5jQ2FsbEJhY2spIHtcbiAgICBzY3JpcHQgKz0gYCgke2FyZ3Muam9pbignLCcpfSwgJHthc3luY0NhbGxCYWNrfSwgdHJ1ZSApYDtcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHQgKz0gYCgke2FyZ3Muam9pbignLCcpfSlgO1xuICB9XG5cbiAgcmV0dXJuIHNjcmlwdDtcbn1cblxuZnVuY3Rpb24gc2ltcGxlU3RyaW5naWZ5ICh2YWx1ZSwgbXVsdGlsaW5lID0gZmFsc2UpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH1cblxuICAvLyB3ZSBnZXQgYmFjayBvYmplY3RzIHNvbWV0aW1lcyB3aXRoIHN0cmluZyB2ZXJzaW9ucyBvZiBmdW5jdGlvbnNcbiAgLy8gd2hpY2ggbXVkZHkgdGhlIGxvZ3NcbiAgbGV0IGNsZWFuVmFsdWUgPSBfLmNsb25lKHZhbHVlKTtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbJ2NlaWwnLCAnY2xvbmUnLCAnZmxvb3InLCAncm91bmQnLCAnc2NhbGUnLCAndG9TdHJpbmcnXSkge1xuICAgIGRlbGV0ZSBjbGVhblZhbHVlW3Byb3BlcnR5XTtcbiAgfVxuICByZXR1cm4gbXVsdGlsaW5lID8gSlNPTi5zdHJpbmdpZnkoY2xlYW5WYWx1ZSwgbnVsbCwgMikgOiBKU09OLnN0cmluZ2lmeShjbGVhblZhbHVlKTtcbn1cblxuZnVuY3Rpb24gZGVmZXJyZWRQcm9taXNlICgpIHtcbiAgLy8gaHR0cDovL2JsdWViaXJkanMuY29tL2RvY3MvYXBpL2RlZmVycmVkLW1pZ3JhdGlvbi5odG1sXG4gIGxldCByZXNvbHZlO1xuICBsZXQgcmVqZWN0O1xuICBjb25zdCBwcm9taXNlID0gbmV3IEIoKHJlcywgcmVqKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wYXJhbS1uYW1lc1xuICAgIHJlc29sdmUgPSByZXM7XG4gICAgcmVqZWN0ID0gcmVqO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBwcm9taXNlLFxuICAgIHJlc29sdmUsXG4gICAgcmVqZWN0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzVGFyZ2V0QmFzZWQgKGlzU2FmYXJpLCBwbGF0Zm9ybVZlcnNpb24pIHtcbiAgLy8gb24gaU9TIDEyLjIgdGhlIG1lc3NhZ2VzIGdldCBzZW50IHRocm91Z2ggdGhlIFRhcmdldCBkb21haW5cbiAgY29uc3QgaXNIaWdoVmVyc2lvbiA9IHV0aWwuY29tcGFyZVZlcnNpb25zKHBsYXRmb3JtVmVyc2lvbiwgJz49JywgTUlOX1BMQVRGT1JNX0ZPUl9UQVJHRVRfQkFTRUQpO1xuICBsb2cuZGVidWcoYENoZWNraW5nIHdoaWNoIGNvbW11bmljYXRpb24gc3R5bGUgdG8gdXNlICgke2lzU2FmYXJpID8gJycgOiAnbm9uLSd9U2FmYXJpIG9uIHBsYXRmb3JtIHZlcnNpb24gJyR7cGxhdGZvcm1WZXJzaW9ufScpYCk7XG4gIGxvZy5kZWJ1ZyhgUGxhdGZvcm0gdmVyc2lvbiBlcXVhbCBvciBoaWdoZXIgdGhhbiAnJHtNSU5fUExBVEZPUk1fRk9SX1RBUkdFVF9CQVNFRH0nOiAke2lzSGlnaFZlcnNpb259YCk7XG4gIHJldHVybiBpc1NhZmFyaSAmJiBpc0hpZ2hWZXJzaW9uO1xufVxuXG5mdW5jdGlvbiBnZXRFbGFwc2VkVGltZSAoc3RhcnRUaW1lKSB7XG4gIGNvbnN0IGVuZFRpbWUgPSBwcm9jZXNzLmhydGltZShzdGFydFRpbWUpO1xuICByZXR1cm4gcGFyc2VJbnQoKGVuZFRpbWVbMF0gKiAxZTkgKyBlbmRUaW1lWzFdKSAvIDFlNiwgMTApO1xufVxuXG5leHBvcnQge1xuICBhcHBJbmZvRnJvbURpY3QsIHBhZ2VBcnJheUZyb21EaWN0LCBnZXREZWJ1Z2dlckFwcEtleSxcbiAgZ2V0UG9zc2libGVEZWJ1Z2dlckFwcEtleXMsIGNoZWNrUGFyYW1zLCB3cmFwU2NyaXB0Rm9yRnJhbWUsIGdldFNjcmlwdEZvckF0b20sXG4gIHNpbXBsZVN0cmluZ2lmeSwgZGVmZXJyZWRQcm9taXNlLCBpc1RhcmdldEJhc2VkLCBnZXRFbGFwc2VkVGltZSxcbn07XG4iXSwiZmlsZSI6ImxpYi9oZWxwZXJzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
273
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9oZWxwZXJzLmpzIl0sIm5hbWVzIjpbIldFQl9DT05URU5UX0JVTkRMRV9JRCIsIk1JTl9QTEFURk9STV9GT1JfVEFSR0VUX0JBU0VEIiwiUkVTUE9OU0VfTE9HX0xFTkdUSCIsImFwcEluZm9Gcm9tRGljdCIsImRpY3QiLCJpZCIsIldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsImlzUHJveHkiLCJfIiwiaXNTdHJpbmciLCJXSVJJc0FwcGxpY2F0aW9uUHJveHlLZXkiLCJ0b0xvd2VyQ2FzZSIsImVudHJ5IiwibmFtZSIsIldJUkFwcGxpY2F0aW9uTmFtZUtleSIsImJ1bmRsZUlkIiwiV0lSQXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5IiwiaG9zdElkIiwiV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSIsImlzQWN0aXZlIiwiV0lSSXNBcHBsaWNhdGlvbkFjdGl2ZUtleSIsImlzQXV0b21hdGlvbkVuYWJsZWQiLCJXSVJSZW1vdGVBdXRvbWF0aW9uRW5hYmxlZEtleSIsInBhZ2VBcnJheUZyb21EaWN0IiwicGFnZURpY3QiLCJuZXdQYWdlQXJyYXkiLCJ2YWx1ZXMiLCJpc1VuZGVmaW5lZCIsIldJUlR5cGVLZXkiLCJwdXNoIiwiV0lSUGFnZUlkZW50aWZpZXJLZXkiLCJ0aXRsZSIsIldJUlRpdGxlS2V5IiwidXJsIiwiV0lSVVJMS2V5IiwiaXNLZXkiLCJXSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSIsImdldERlYnVnZ2VyQXBwS2V5IiwicGxhdGZvcm1WZXJzaW9uIiwiYXBwRGljdCIsImFwcElkIiwicGFyc2VGbG9hdCIsImtleSIsImRhdGEiLCJ0b1BhaXJzIiwibG9nIiwiZGVidWciLCJwcm94aWVkQXBwSWRzIiwibGVuZ3RoIiwibGFzdCIsImhhcyIsImFwcElkRm9yQnVuZGxlIiwiZW5kc1dpdGgiLCJnZXRQb3NzaWJsZURlYnVnZ2VyQXBwS2V5cyIsImJ1bmRsZUlkcyIsImNoZWNrUGFyYW1zIiwicGFyYW1zIiwiZXJyb3JzIiwicGFyYW0iLCJ2YWx1ZSIsImFzc2VydCIsIm9rIiwiZXJyIiwid3JhcFNjcmlwdEZvckZyYW1lIiwic2NyaXB0IiwiZnJhbWUiLCJlbEZyb21DYWNoZSIsInRvU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsImdldFNjcmlwdEZvckF0b20iLCJhdG9tIiwiYXJncyIsImZyYW1lcyIsImFzeW5jQ2FsbEJhY2siLCJhdG9tU3JjIiwibWFwIiwiam9pbiIsInNpbXBsZVN0cmluZ2lmeSIsIm11bHRpbGluZSIsImNsZWFuVmFsdWUiLCJjbG9uZSIsInByb3BlcnR5IiwiZGVmZXJyZWRQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInByb21pc2UiLCJCIiwicmVzIiwicmVqIiwiaXNUYXJnZXRCYXNlZCIsImlzU2FmYXJpIiwiaXNIaWdoVmVyc2lvbiIsInV0aWwiLCJjb21wYXJlVmVyc2lvbnMiLCJnZXRFbGFwc2VkVGltZSIsInN0YXJ0VGltZSIsImVuZFRpbWUiLCJwcm9jZXNzIiwiaHJ0aW1lIiwicGFyc2VJbnQiLCJjb252ZXJ0UmVzdWx0IiwiRXJyb3IiLCJ0cnVuY2F0ZSIsInBhcnNlIiwiaXNPYmplY3QiLCJzdGF0dXMiLCJtZXNzYWdlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLHFCQUFxQixHQUFHLDZCQUE5QjtBQUNBLE1BQU1DLDZCQUE2QixHQUFHLE1BQXRDO0FBRUEsTUFBTUMsbUJBQW1CLEdBQUcsR0FBNUI7OztBQU1BLFNBQVNDLGVBQVQsQ0FBMEJDLElBQTFCLEVBQWdDO0FBQzlCLFFBQU1DLEVBQUUsR0FBR0QsSUFBSSxDQUFDRSwyQkFBaEI7QUFDQSxRQUFNQyxPQUFPLEdBQUdDLGdCQUFFQyxRQUFGLENBQVdMLElBQUksQ0FBQ00sd0JBQWhCLElBQ1pOLElBQUksQ0FBQ00sd0JBQUwsQ0FBOEJDLFdBQTlCLE9BQWdELE1BRHBDLEdBRVpQ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cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgZ2V0QXRvbSBmcm9tICcuL2F0b21zJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgYXNzZXJ0IGZyb20gJ2Fzc2VydCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JGcm9tTUpTT05XUFN0YXR1c0NvZGUgfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuXG5cbmNvbnN0IFdFQl9DT05URU5UX0JVTkRMRV9JRCA9ICdjb20uYXBwbGUuV2ViS2l0LldlYkNvbnRlbnQnO1xuY29uc3QgTUlOX1BMQVRGT1JNX0ZPUl9UQVJHRVRfQkFTRUQgPSAnMTIuMic7XG5cbmNvbnN0IFJFU1BPTlNFX0xPR19MRU5HVEggPSAxMDA7XG5cbi8qXG4gKiBUYWtlcyBhIGRpY3Rpb25hcnkgZnJvbSB0aGUgcmVtb3RlIGRlYnVnZ2VyIGFuZCBtYWtlcyBhIG1vcmUgbWFuYWdlYWJsZVxuICogZGljdGlvbmFyeSB3aG9zZSBrZXlzIGFyZSB1bmRlcnN0YW5kYWJsZVxuICovXG5mdW5jdGlvbiBhcHBJbmZvRnJvbURpY3QgKGRpY3QpIHtcbiAgY29uc3QgaWQgPSBkaWN0LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgY29uc3QgaXNQcm94eSA9IF8uaXNTdHJpbmcoZGljdC5XSVJJc0FwcGxpY2F0aW9uUHJveHlLZXkpXG4gICAgPyBkaWN0LldJUklzQXBwbGljYXRpb25Qcm94eUtleS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZSdcbiAgICA6IGRpY3QuV0lSSXNBcHBsaWNhdGlvblByb3h5S2V5O1xuICBjb25zdCBlbnRyeSA9IHtcbiAgICBpZCxcbiAgICBpc1Byb3h5LFxuICAgIG5hbWU6IGRpY3QuV0lSQXBwbGljYXRpb25OYW1lS2V5LFxuICAgIGJ1bmRsZUlkOiBkaWN0LldJUkFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcktleSxcbiAgICBob3N0SWQ6IGRpY3QuV0lSSG9zdEFwcGxpY2F0aW9uSWRlbnRpZmllcktleSxcbiAgICBpc0FjdGl2ZTogZGljdC5XSVJJc0FwcGxpY2F0aW9uQWN0aXZlS2V5LFxuICAgIGlzQXV0b21hdGlvbkVuYWJsZWQ6ICEhZGljdC5XSVJSZW1vdGVBdXRvbWF0aW9uRW5hYmxlZEtleSxcbiAgfTtcblxuICByZXR1cm4gW2lkLCBlbnRyeV07XG59XG5cbi8qXG4gKiBUYWtlIGEgZGljdGlvbmFyeSBmcm9tIHRoZSByZW1vdGUgZGVidWdnZXIgYW5kIG1ha2VzIGEgbW9yZSBtYW5hZ2VhYmxlXG4gKiBkaWN0aW9uYXJ5IG9mIHBhZ2VzIGF2YWlsYWJsZS5cbiAqL1xuZnVuY3Rpb24gcGFnZUFycmF5RnJvbURpY3QgKHBhZ2VEaWN0KSB7XG4gIGlmIChwYWdlRGljdC5pZCkge1xuICAgIC8vIHRoZSBwYWdlIGlzIGFscmVhZHkgdHJhbnNsYXRlZCwgc28gd3JhcCBpbiBhbiBhcnJheSBhbmQgcGFzcyBiYWNrXG4gICAgcmV0dXJuIFtwYWdlRGljdF07XG4gIH1cbiAgbGV0IG5ld1BhZ2VBcnJheSA9IFtdO1xuICBmb3IgKGNvbnN0IGRpY3Qgb2YgXy52YWx1ZXMocGFnZURpY3QpKSB7XG4gICAgLy8gY291bnQgb25seSBXSVJUeXBlV2ViIHBhZ2VzIGFuZCBpZ25vcmUgYWxsIG90aGVycyAoV0lSVHlwZUphdmFTY3JpcHQgZXRjKVxuICAgIGlmIChfLmlzVW5kZWZpbmVkKGRpY3QuV0lSVHlwZUtleSkgfHwgZGljdC5XSVJUeXBlS2V5ID09PSAnV0lSVHlwZVdlYicpIHtcbiAgICAgIG5ld1BhZ2VBcnJheS5wdXNoKHtcbiAgICAgICAgaWQ6IGRpY3QuV0lSUGFnZUlkZW50aWZpZXJLZXksXG4gICAgICAgIHRpdGxlOiBkaWN0LldJUlRpdGxlS2V5LFxuICAgICAgICB1cmw6IGRpY3QuV0lSVVJMS2V5LFxuICAgICAgICBpc0tleTogIV8uaXNVbmRlZmluZWQoZGljdC5XSVJDb25uZWN0aW9uSWRlbnRpZmllcktleSksXG4gICAgICB9KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5ld1BhZ2VBcnJheTtcbn1cblxuLypcbiAqIEdpdmVuIGEgYnVuZGxlIGlkLCBmaW5kcyB0aGUgY29ycmVjdCByZW1vdGUgZGVidWdnZXIgYXBwIHRoYXQgaXNcbiAqIGNvbm5lY3RlZC5cbiAqL1xuZnVuY3Rpb24gZ2V0RGVidWdnZXJBcHBLZXkgKGJ1bmRsZUlkLCBwbGF0Zm9ybVZlcnNpb24sIGFwcERpY3QpIHtcbiAgbGV0IGFwcElkO1xuICBpZiAocGFyc2VGbG9hdChwbGF0Zm9ybVZlcnNpb24pID49IDgpIHtcbiAgICBmb3IgKGNvbnN0IFtrZXksIGRhdGFdIG9mIF8udG9QYWlycyhhcHBEaWN0KSkge1xuICAgICAgaWYgKGRhdGEuYnVuZGxlSWQgPT09IGJ1bmRsZUlkKSB7XG4gICAgICAgIGFwcElkID0ga2V5O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gbm93IHdlIG5lZWQgdG8gZGV0ZXJtaW5lIGlmIHdlIHNob3VsZCBwaWNrIGEgcHJveHkgZm9yIHRoaXMgaW5zdGVhZFxuICAgIGlmIChhcHBJZCkge1xuICAgICAgbG9nLmRlYnVnKGBGb3VuZCBhcHAgaWQga2V5ICcke2FwcElkfScgZm9yIGJ1bmRsZSAnJHtidW5kbGVJZH0nYCk7XG4gICAgICBsZXQgcHJveGllZEFwcElkcyA9IFtdO1xuICAgICAgZm9yIChjb25zdCBba2V5LCBkYXRhXSBvZiBfLnRvUGFpcnMoYXBwRGljdCkpIHtcbiAgICAgICAgaWYgKGRhdGEuaXNQcm94eSAmJiBkYXRhLmhvc3RJZCA9PT0gYXBwSWQpIHtcbiAgICAgICAgICBsb2cuZGVidWcoYEZvdW5kIHNlcGFyYXRlIGJ1bmRsZUlkICcke2RhdGEuYnVuZGxlSWR9JyBgICtcbiAgICAgICAgICAgICAgICAgICAgYGFjdGluZyBhcyBwcm94eSBmb3IgJyR7YnVuZGxlSWR9Jywgd2l0aCBhcHAgaWQgJyR7a2V5fSdgKTtcbiAgICAgICAgICBwcm94aWVkQXBwSWRzLnB1c2goa2V5KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHByb3hpZWRBcHBJZHMubGVuZ3RoKSB7XG4gICAgICAgIC8vIHVzZSB0aGUgbGFzdCBhcHAgYmVpbmcgcHJveGllZFxuICAgICAgICBhcHBJZCA9IF8ubGFzdChwcm94aWVkQXBwSWRzKTtcbiAgICAgICAgbG9nLmRlYnVnKGBVc2luZyBwcm94aWVkIGFwcCBpZCAnJHthcHBJZH0nYCk7XG4gICAgICB9XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGlmIChfLmhhcyhhcHBEaWN0LCBidW5kbGVJZCkpIHtcbiAgICAgIGFwcElkID0gYnVuZGxlSWQ7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGFwcElkO1xufVxuXG5mdW5jdGlvbiBhcHBJZEZvckJ1bmRsZSAoYnVuZGxlSWQsIGFwcERpY3QpIHtcbiAgbGV0IGFwcElkO1xuICBmb3IgKGNvbnN0IFtrZXksIGRhdGFdIG9mIF8udG9QYWlycyhhcHBEaWN0KSkge1xuICAgIGlmIChkYXRhLmJ1bmRsZUlkLmVuZHNXaXRoKGJ1bmRsZUlkKSkge1xuICAgICAgYXBwSWQgPSBrZXk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICAvLyBpZiBub3RoaW5nIGlzIGZvdW5kLCB0cnkgdG8gZ2V0IHRoZSBnZW5lcmljIGFwcFxuICBpZiAoIWFwcElkICYmIGJ1bmRsZUlkICE9PSBXRUJfQ09OVEVOVF9CVU5ETEVfSUQpIHtcbiAgICByZXR1cm4gYXBwSWRGb3JCdW5kbGUoV0VCX0NPTlRFTlRfQlVORExFX0lELCBhcHBEaWN0KTtcbiAgfVxuXG4gIHJldHVybiBhcHBJZDtcbn1cblxuZnVuY3Rpb24gZ2V0UG9zc2libGVEZWJ1Z2dlckFwcEtleXMgKGJ1bmRsZUlkcywgcGxhdGZvcm1WZXJzaW9uLCBhcHBEaWN0KSB7XG4gIGxldCBwcm94aWVkQXBwSWRzID0gW107XG5cbiAgZm9yIChjb25zdCBidW5kbGVJZCBvZiBidW5kbGVJZHMpIHtcbiAgICBjb25zdCBhcHBJZCA9IGFwcElkRm9yQnVuZGxlKGJ1bmRsZUlkLCBhcHBEaWN0KTtcblxuICAgIC8vIG5vdyB3ZSBuZWVkIHRvIGRldGVybWluZSBpZiB3ZSBzaG91bGQgcGljayBhIHByb3h5IGZvciB0aGlzIGluc3RlYWRcbiAgICBpZiAoYXBwSWQpIHtcbiAgICAgIHByb3hpZWRBcHBJZHMucHVzaChhcHBJZCk7XG4gICAgICBsb2cuZGVidWcoYEZvdW5kIGFwcCBpZCBrZXkgJyR7YXBwSWR9JyBmb3IgYnVuZGxlICcke2J1bmRsZUlkfSdgKTtcbiAgICAgIGZvciAoY29uc3QgW2tleSwgZGF0YV0gb2YgXy50b1BhaXJzKGFwcERpY3QpKSB7XG4gICAgICAgIGlmIChkYXRhLmlzUHJveHkgJiYgZGF0YS5ob3N0SWQgPT09IGFwcElkKSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBGb3VuZCBzZXBhcmF0ZSBidW5kbGVJZCAnJHtkYXRhLmJ1bmRsZUlkfScgYCArXG4gICAgICAgICAgICAgICAgICAgIGBhY3RpbmcgYXMgcHJveHkgZm9yICcke2J1bmRsZUlkfScsIHdpdGggYXBwIGlkICcke2tleX0nYCk7XG4gICAgICAgICAgcHJveGllZEFwcElkcy5wdXNoKGtleSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcHJveGllZEFwcElkcztcbn1cblxuZnVuY3Rpb24gY2hlY2tQYXJhbXMgKHBhcmFtcykge1xuICBsZXQgZXJyb3JzID0gW107XG4gIGZvciAoY29uc3QgW3BhcmFtLCB2YWx1ZV0gb2YgXy50b1BhaXJzKHBhcmFtcykpIHtcbiAgICB0cnkge1xuICAgICAgYXNzZXJ0Lm9rKHZhbHVlKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGVycm9ycy5wdXNoKHBhcmFtKTtcbiAgICB9XG4gIH1cbiAgaWYgKGVycm9ycy5sZW5ndGgpIHtcbiAgICByZXR1cm4gZXJyb3JzO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHdyYXBTY3JpcHRGb3JGcmFtZSAoc2NyaXB0LCBmcmFtZSkge1xuICBsb2cuZGVidWcoYFdyYXBwaW5nIHNjcmlwdCBmb3IgZnJhbWUgJyR7ZnJhbWV9J2ApO1xuICBsZXQgZWxGcm9tQ2FjaGUgPSBhd2FpdCBnZXRBdG9tKCdnZXRfZWxlbWVudF9mcm9tX2NhY2hlJyk7XG4gIHJldHVybiBgKGZ1bmN0aW9uICh3aW5kb3cpIHsgdmFyIGRvY3VtZW50ID0gd2luZG93LmRvY3VtZW50OyBgICtcbiAgICAgICAgIGByZXR1cm4gKCR7c2NyaXB0fSk7IH0pKCgke2VsRnJvbUNhY2hlLnRvU3RyaW5nKCd1dGY4Jyl9KSgke0pTT04uc3RyaW5naWZ5KGZyYW1lKX0pKWA7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGdldFNjcmlwdEZvckF0b20gKGF0b20sIGFyZ3MsIGZyYW1lcywgYXN5bmNDYWxsQmFjayA9IG51bGwpIHtcbiAgbGV0IGF0b21TcmMgPSBhd2FpdCBnZXRBdG9tKGF0b20pO1xuICBsZXQgc2NyaXB0O1xuICBpZiAoZnJhbWVzLmxlbmd0aCA+IDApIHtcbiAgICBzY3JpcHQgPSBhdG9tU3JjO1xuICAgIGZvciAoY29uc3QgZnJhbWUgb2YgZnJhbWVzKSB7XG4gICAgICBzY3JpcHQgPSBhd2FpdCB3cmFwU2NyaXB0Rm9yRnJhbWUoc2NyaXB0LCBmcmFtZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGxvZy5kZWJ1ZyhgRXhlY3V0aW5nICcke2F0b219JyBhdG9tIGluIGRlZmF1bHQgY29udGV4dGApO1xuICAgIHNjcmlwdCA9IGAoJHthdG9tU3JjfSlgO1xuICB9XG5cbiAgLy8gYWRkIHRoZSBhcmd1bWVudHMsIGFzIHN0cmluZ3NcbiAgYXJncyA9IGFyZ3MubWFwKEpTT04uc3RyaW5naWZ5KTtcbiAgaWYgKGFzeW5jQ2FsbEJhY2spIHtcbiAgICBzY3JpcHQgKz0gYCgke2FyZ3Muam9pbignLCcpfSwgJHthc3luY0NhbGxCYWNrfSwgdHJ1ZSApYDtcbiAgfSBlbHNlIHtcbiAgICBzY3JpcHQgKz0gYCgke2FyZ3Muam9pbignLCcpfSlgO1xuICB9XG5cbiAgcmV0dXJuIHNjcmlwdDtcbn1cblxuZnVuY3Rpb24gc2ltcGxlU3RyaW5naWZ5ICh2YWx1ZSwgbXVsdGlsaW5lID0gZmFsc2UpIHtcbiAgaWYgKCF2YWx1ZSkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh2YWx1ZSk7XG4gIH1cblxuICAvLyB3ZSBnZXQgYmFjayBvYmplY3RzIHNvbWV0aW1lcyB3aXRoIHN0cmluZyB2ZXJzaW9ucyBvZiBmdW5jdGlvbnNcbiAgLy8gd2hpY2ggbXVkZHkgdGhlIGxvZ3NcbiAgbGV0IGNsZWFuVmFsdWUgPSBfLmNsb25lKHZhbHVlKTtcbiAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBbJ2NlaWwnLCAnY2xvbmUnLCAnZmxvb3InLCAncm91bmQnLCAnc2NhbGUnLCAndG9TdHJpbmcnXSkge1xuICAgIGRlbGV0ZSBjbGVhblZhbHVlW3Byb3BlcnR5XTtcbiAgfVxuICByZXR1cm4gbXVsdGlsaW5lID8gSlNPTi5zdHJpbmdpZnkoY2xlYW5WYWx1ZSwgbnVsbCwgMikgOiBKU09OLnN0cmluZ2lmeShjbGVhblZhbHVlKTtcbn1cblxuZnVuY3Rpb24gZGVmZXJyZWRQcm9taXNlICgpIHtcbiAgLy8gaHR0cDovL2JsdWViaXJkanMuY29tL2RvY3MvYXBpL2RlZmVycmVkLW1pZ3JhdGlvbi5odG1sXG4gIGxldCByZXNvbHZlO1xuICBsZXQgcmVqZWN0O1xuICBjb25zdCBwcm9taXNlID0gbmV3IEIoKHJlcywgcmVqKSA9PiB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcHJvbWlzZS9wYXJhbS1uYW1lc1xuICAgIHJlc29sdmUgPSByZXM7XG4gICAgcmVqZWN0ID0gcmVqO1xuICB9KTtcbiAgcmV0dXJuIHtcbiAgICBwcm9taXNlLFxuICAgIHJlc29sdmUsXG4gICAgcmVqZWN0XG4gIH07XG59XG5cbmZ1bmN0aW9uIGlzVGFyZ2V0QmFzZWQgKGlzU2FmYXJpLCBwbGF0Zm9ybVZlcnNpb24pIHtcbiAgLy8gb24gaU9TIDEyLjIgdGhlIG1lc3NhZ2VzIGdldCBzZW50IHRocm91Z2ggdGhlIFRhcmdldCBkb21haW5cbiAgY29uc3QgaXNIaWdoVmVyc2lvbiA9IHV0aWwuY29tcGFyZVZlcnNpb25zKHBsYXRmb3JtVmVyc2lvbiwgJz49JywgTUlOX1BMQVRGT1JNX0ZPUl9UQVJHRVRfQkFTRUQpO1xuICBsb2cuZGVidWcoYENoZWNraW5nIHdoaWNoIGNvbW11bmljYXRpb24gc3R5bGUgdG8gdXNlICgke2lzU2FmYXJpID8gJycgOiAnbm9uLSd9U2FmYXJpIG9uIHBsYXRmb3JtIHZlcnNpb24gJyR7cGxhdGZvcm1WZXJzaW9ufScpYCk7XG4gIGxvZy5kZWJ1ZyhgUGxhdGZvcm0gdmVyc2lvbiBlcXVhbCBvciBoaWdoZXIgdGhhbiAnJHtNSU5fUExBVEZPUk1fRk9SX1RBUkdFVF9CQVNFRH0nOiAke2lzSGlnaFZlcnNpb259YCk7XG4gIHJldHVybiBpc1NhZmFyaSAmJiBpc0hpZ2hWZXJzaW9uO1xufVxuXG5mdW5jdGlvbiBnZXRFbGFwc2VkVGltZSAoc3RhcnRUaW1lKSB7XG4gIGNvbnN0IGVuZFRpbWUgPSBwcm9jZXNzLmhydGltZShzdGFydFRpbWUpO1xuICByZXR1cm4gcGFyc2VJbnQoKGVuZFRpbWVbMF0gKiAxZTkgKyBlbmRUaW1lWzFdKSAvIDFlNiwgMTApO1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0UmVzdWx0IChyZXMpIHtcbiAgaWYgKF8uaXNVbmRlZmluZWQocmVzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgRGlkIG5vdCBnZXQgT0sgcmVzdWx0IGZyb20gcmVtb3RlIGRlYnVnZ2VyLiBSZXN1bHQgd2FzOiAke18udHJ1bmNhdGUoc2ltcGxlU3RyaW5naWZ5KHJlcyksIHtsZW5ndGg6IFJFU1BPTlNFX0xPR19MRU5HVEh9KX1gKTtcbiAgfSBlbHNlIGlmIChfLmlzU3RyaW5nKHJlcykpIHtcbiAgICB0cnkge1xuICAgICAgcmVzID0gSlNPTi5wYXJzZShyZXMpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgLy8gd2UgbWlnaHQgZ2V0IGEgc2VyaWFsaXplZCBvYmplY3QsIGJ1dCB3ZSBtaWdodCBub3RcbiAgICAgIC8vIGlmIHdlIGdldCBoZXJlLCBpdCBpcyBqdXN0IGEgdmFsdWVcbiAgICB9XG4gIH0gZWxzZSBpZiAoIV8uaXNPYmplY3QocmVzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgUmVzdWx0IGhhcyB1bmV4cGVjdGVkIHR5cGU6ICgke3R5cGVvZiByZXN9KS5gKTtcbiAgfVxuXG4gIGlmIChyZXMuc3RhdHVzICYmIHJlcy5zdGF0dXMgIT09IDApIHtcbiAgICAvLyB3ZSBnb3Qgc29tZSBmb3JtIG9mIGVycm9yLlxuICAgIHRocm93IGVycm9yRnJvbU1KU09OV1BTdGF0dXNDb2RlKHJlcy5zdGF0dXMsIHJlcy52YWx1ZS5tZXNzYWdlIHx8IHJlcy52YWx1ZSk7XG4gIH1cblxuICAvLyB3aXRoIGVpdGhlciBoYXZlIGFuIG9iamVjdCB3aXRoIGEgYHZhbHVlYCBwcm9wZXJ0eSAoZXZlbiBpZiBgbnVsbGApLFxuICAvLyBvciBhIHBsYWluIG9iamVjdFxuICByZXR1cm4gXy5oYXMocmVzLCAndmFsdWUnKSA/IHJlcy52YWx1ZSA6IHJlcztcbn1cblxuZXhwb3J0IHtcbiAgYXBwSW5mb0Zyb21EaWN0LCBwYWdlQXJyYXlGcm9tRGljdCwgZ2V0RGVidWdnZXJBcHBLZXksXG4gIGdldFBvc3NpYmxlRGVidWdnZXJBcHBLZXlzLCBjaGVja1BhcmFtcywgd3JhcFNjcmlwdEZvckZyYW1lLCBnZXRTY3JpcHRGb3JBdG9tLFxuICBzaW1wbGVTdHJpbmdpZnksIGRlZmVycmVkUHJvbWlzZSwgaXNUYXJnZXRCYXNlZCwgZ2V0RWxhcHNlZFRpbWUsXG4gIGNvbnZlcnRSZXN1bHQsIFJFU1BPTlNFX0xPR19MRU5HVEgsXG59O1xuIl0sImZpbGUiOiJsaWIvaGVscGVycy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
@@ -168,25 +168,6 @@ class RpcMessageHandler {
168
168
  const dataKey = this.parseDataKey(plist);
169
169
  let msgId = (dataKey.id || '').toString();
170
170
  let result = dataKey.result;
171
- let error = dataKey.error || null;
172
-
173
- if (result && result.wasThrown) {
174
- let message = result.result && (result.result.value || result.result.description) ? result.result.value || result.result.description : 'Error occurred in handling data message';
175
- error = new Error(message);
176
- }
177
-
178
- if (error) {
179
- if (this.hasErrorHandler(msgId)) {
180
- this.errorHandlers[msgId](error);
181
- } else {
182
- _logger.default.error(`Error occurred in handling data message: ${error}`);
183
-
184
- _logger.default.error('No error handler present, ignoring');
185
- }
186
-
187
- return;
188
- }
189
-
190
171
  let method = dataKey.method;
191
172
  let params;
192
173
 
@@ -225,11 +206,28 @@ class RpcMessageHandler {
225
206
  params = dataKey.params;
226
207
  }
227
208
 
228
- if (!_lodash.default.isEmpty(msgId)) {
229
- _logger.default.debug(`Received response for message '${msgId}'`);
209
+ let error = dataKey.error || null;
210
+
211
+ if (result && result.wasThrown) {
212
+ const message = result.result && (result.result.value || result.result.description) ? result.result.value || result.result.description : 'Error occurred in handling data message';
213
+ error = new Error(message);
214
+ }
215
+
216
+ if (!error) {
217
+ if (!_lodash.default.isEmpty(msgId)) {
218
+ _logger.default.debug(`Received response for message '${msgId}'`);
219
+ }
220
+
221
+ return await this.dispatchDataMessage(msgId, method, params, result, error);
230
222
  }
231
223
 
232
- await this.dispatchDataMessage(msgId, method, params, result, error);
224
+ if (this.hasErrorHandler(msgId)) {
225
+ this.errorHandlers[msgId](error);
226
+ } else {
227
+ _logger.default.error(`Error occurred in handling data message: ${error}`);
228
+
229
+ _logger.default.error('No error handler present, ignoring');
230
+ }
233
231
  }
234
232
 
235
233
  setHandlers() {
@@ -266,4 +264,4 @@ class RpcMessageHandler {
266
264
  exports.default = RpcMessageHandler;require('source-map-support').install();
267
265
 
268
266
 
269
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZW1vdGUtZGVidWdnZXItbWVzc2FnZS1oYW5kbGVyLmpzIl0sIm5hbWVzIjpbIklHTk9SRURfRVZFTlRTIiwiUnBjTWVzc2FnZUhhbmRsZXIiLCJjb25zdHJ1Y3RvciIsInNwZWNpYWxIYW5kbGVycyIsImlzVGFyZ2V0QmFzZWQiLCJzZXRIYW5kbGVycyIsImVycm9ySGFuZGxlcnMiLCJfIiwiY2xvbmUiLCJkYXRhSGFuZGxlcnMiLCJ3aWxsTmF2aWdhdGVXaXRob3V0UmVsb2FkIiwic2V0Q29tbXVuaWNhdGlvblByb3RvY29sIiwic2V0RGF0YU1lc3NhZ2VIYW5kbGVyIiwia2V5IiwiZXJyb3JIYW5kbGVyIiwiaGFuZGxlciIsInNldFNwZWNpYWxNZXNzYWdlSGFuZGxlciIsImdldFNwZWNpYWxNZXNzYWdlSGFuZGxlciIsInNldFRpbWVsaW5lRXZlbnRIYW5kbGVyIiwidGltZWxpbmVFdmVudEhhbmRsZXIiLCJzZXRDb25zb2xlTG9nRXZlbnRIYW5kbGVyIiwiY29uc29sZUxvZ0V2ZW50SGFuZGxlciIsInNldE5ldHdvcmtFdmVudEhhbmRsZXIiLCJuZXR3b3JrTG9nRXZlbnRIYW5kbGVyIiwiaGFzRXJyb3JIYW5kbGVyIiwiaGFzIiwiaGFzU3BlY2lhbE1lc3NhZ2VIYW5kbGVyIiwiYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCIsImFsbG93IiwiaGFuZGxlTWVzc2FnZSIsInBsaXN0Iiwic2VsZWN0b3IiLCJfX3NlbGVjdG9yIiwibG9nIiwiZGVidWciLCJoYW5kbGVycyIsImhhbmRsZVNwZWNpYWxNZXNzYWdlIiwiYXJncyIsImZuIiwid2FybiIsInBhcnNlRGF0YUtleSIsIkpTT04iLCJwYXJzZSIsIl9fYXJndW1lbnQiLCJXSVJNZXNzYWdlRGF0YUtleSIsInRvU3RyaW5nIiwiZXJyIiwiZXJyb3IiLCJ0cnVuY2F0ZSIsInN0cmluZ2lmeSIsImxlbmd0aCIsIkVycm9yIiwibWVzc2FnZSIsImRpc3BhdGNoRGF0YU1lc3NhZ2UiLCJtc2dJZCIsIm1ldGhvZCIsInBhcmFtcyIsInJlc3VsdCIsImlzRW1wdHkiLCJwYWdlTG9hZGluZyIsImlzRnVuY3Rpb24iLCJpbmNsdWRlcyIsInBhZ2VMb2FkIiwiZnJhbWVEZXRhY2hlZCIsInJlY29yZCIsInN0YXJ0c1dpdGgiLCJ2YWx1ZSIsImxvZ0Z1bGxNZXNzYWdlIiwiYnVmZmVyVG9KU09OIiwiQnVmZmVyIiwicHJvdG90eXBlIiwidG9KU09OIiwiayIsInYiLCJpc0J1ZmZlciIsImhhbmRsZURhdGFNZXNzYWdlIiwiZGF0YUtleSIsImlkIiwid2FzVGhyb3duIiwiZGVzY3JpcHRpb24iLCJhcHAiLCJXSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXkiLCJ0YXJnZXRJbmZvIiwidGFyZ2V0Q3JlYXRlZCIsInRhcmdldERlc3Ryb3llZCIsIldJUlNpbXVsYXRvck5hbWVLZXkiLCJXSVJTaW11bGF0b3JCdWlsZEtleSIsIldJUlNpbXVsYXRvclByb2R1Y3RWZXJzaW9uS2V5IiwiV0lSQXBwbGljYXRpb25EaWN0aW9uYXJ5S2V5IiwiV0lSTGlzdGluZ0tleSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFLQSxNQUFNQSxjQUFjLEdBQUcsQ0FDckIsaUNBRHFCLEVBRXJCLDJCQUZxQixFQUdyQiwwQkFIcUIsRUFJckIsMEJBSnFCLEVBS3JCLCtCQUxxQixFQU1yQixzQ0FOcUIsRUFPckIseUJBUHFCLENBQXZCOztBQVVlLE1BQU1DLGlCQUFOLENBQXdCO0FBQ3JDQyxFQUFBQSxXQUFXLENBQUVDLGVBQUYsRUFBbUJDLGFBQWEsR0FBRyxLQUFuQyxFQUEwQztBQUNuRCxTQUFLQyxXQUFMO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQixFQUFyQjtBQUNBLFNBQUtILGVBQUwsR0FBdUJJLGdCQUFFQyxLQUFGLENBQVFMLGVBQVIsQ0FBdkI7QUFDQSxTQUFLTSxZQUFMLEdBQW9CLEVBQXBCO0FBQ0EsU0FBS0MseUJBQUwsR0FBaUMsS0FBakM7QUFFQSxTQUFLTixhQUFMLEdBQXFCQSxh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LElBQWlCO0FBQ2hELGNBQU0sS0FBS00sb0JBQUwsQ0FBMEIsK0JBQTFCLEVBQ0pOLEtBQUssQ0FBQ2EsVUFERixDQUFOO0FBRUQsT0F2QmE7QUF3QmQsa0NBQTRCLE1BQU9iLEtBQVAsSUFBaUI7QUFDM0MsY0FBTSxLQUFLTSxvQkFBTCxDQUEwQiwwQkFBMUIsRUFDSk4sS0FBSyxDQUFDYSxVQURGLENBQU47QUFFRCxPQTNCYTtBQTRCZCx5Q0FBbUMsTUFBT2IsS0FBUCxJQUFpQjtBQUNsRCxjQUFNLEtBQUtNLG9CQUFMLENBQTBCLGlDQUExQixFQUNKTixLQUFLLENBQUNhLFVBREYsQ0FBTjtBQUVELE9BL0JhO0FBZ0NkLG1DQUE2QixNQUFPYixLQUFQLElBQWlCO0FBQzVDLGNBQU0sS0FBSzZDLGlCQUFMLENBQXVCN0MsS0FBdkIsQ0FBTjtBQUNEO0FBbENhLEtBQWhCO0FBb0NEOztBQWhSb0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5cblxuLy8gd2Ugd2lsbCByZWNlaXZlIGV2ZW50cyB0aGF0IHdlIGRvIG5vdCBsaXN0ZW4gdG8uXG4vLyBpZiB3ZSBzdGFydCB0byBsaXN0ZW4gdG8gb25lIG9mIHRoZXNlLCByZW1vdmUgaXQgZnJvbSB0aGUgbGlzdFxuY29uc3QgSUdOT1JFRF9FVkVOVFMgPSBbXG4gICdQYWdlLmRlZmF1bHRBcHBlYXJhbmNlRGlkQ2hhbmdlJyxcbiAgJ1BhZ2UuZG9tQ29udGVudEV2ZW50RmlyZWQnLFxuICAnUGFnZS5mcmFtZVN0YXJ0ZWRMb2FkaW5nJyxcbiAgJ1BhZ2UuZnJhbWVTdG9wcGVkTG9hZGluZycsXG4gICdQYWdlLmZyYW1lU2NoZWR1bGVkTmF2aWdhdGlvbicsXG4gICdQYWdlLmZyYW1lQ2xlYXJlZFNjaGVkdWxlZE5hdmlnYXRpb24nLFxuICAnQ29uc29sZS5tZXNzYWdlc0NsZWFyZWQnLFxuXTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUnBjTWVzc2FnZUhhbmRsZXIge1xuICBjb25zdHJ1Y3RvciAoc3BlY2lhbEhhbmRsZXJzLCBpc1RhcmdldEJhc2VkID0gZmFsc2UpIHtcbiAgICB0aGlzLnNldEhhbmRsZXJzKCk7XG4gICAgdGhpcy5lcnJvckhhbmRsZXJzID0ge307XG4gICAgdGhpcy5zcGVjaWFsSGFuZGxlcnMgPSBfLmNsb25lKHNwZWNpYWxIYW5kbGVycyk7XG4gICAgdGhpcy5kYXRhSGFuZGxlcnMgPSB7fTtcbiAgICB0aGlzLndpbGxOYXZpZ2F0ZVdpdGhvdXRSZWxvYWQgPSBmYWxzZTtcblxuICAgIHRoaXMuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG4gIH1cblxuICBzZXRDb21tdW5pY2F0aW9uUHJvdG9jb2wgKGlzVGFyZ2V0QmFzZWQpIHtcbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgc2V0RGF0YU1lc3NhZ2VIYW5kbGVyIChrZXksIGVycm9ySGFuZGxlciwgaGFuZGxlcikge1xuICAgIHRoaXMuZXJyb3JIYW5kbGVyc1trZXldID0gZXJyb3JIYW5kbGVyO1xuICAgIHRoaXMuZGF0YUhhbmRsZXJzW2tleV0gPSBoYW5kbGVyO1xuICB9XG5cbiAgc2V0U3BlY2lhbE1lc3NhZ2VIYW5kbGVyIChrZXksIGVycm9ySGFuZGxlciwgaGFuZGxlcikge1xuICAgIHRoaXMuZXJyb3JIYW5kbGVyc1trZXldID0gZXJyb3JIYW5kbGVyO1xuICAgIHRoaXMuc3BlY2lhbEhhbmRsZXJzW2tleV0gPSBoYW5kbGVyO1xuICB9XG5cbiAgZ2V0U3BlY2lhbE1lc3NhZ2VIYW5kbGVyIChrZXkpIHtcbiAgICByZXR1cm4gdGhpcy5zcGVjaWFsSGFuZGxlcnNba2V5XTtcbiAgfVxuXG4gIHNldFRpbWVsaW5lRXZlbnRIYW5kbGVyICh0aW1lbGluZUV2ZW50SGFuZGxlcikge1xuICAgIHRoaXMudGltZWxpbmVFdmVudEhhbmRsZXIgPSB0aW1lbGluZUV2ZW50SGFuZGxlcjtcbiAgfVxuXG4gIHNldENvbnNvbGVMb2dFdmVudEhhbmRsZXIgKGNvbnNvbGVMb2dFdmVudEhhbmRsZXIpIHtcbiAgICB0aGlzLmNvbnNvbGVMb2dFdmVudEhhbmRsZXIgPSBjb25zb2xlTG9nRXZlbnRIYW5kbGVyO1xuICB9XG5cbiAgc2V0TmV0d29ya0V2ZW50SGFuZGxlciAobmV0d29ya0xvZ0V2ZW50SGFuZGxlcikge1xuICAgIHRoaXMubmV0d29ya0xvZ0V2ZW50SGFuZGxlciA9IG5ldHdvcmtMb2dFdmVudEhhbmRsZXI7XG4gIH1cblxuICBoYXNFcnJvckhhbmRsZXIgKGtleSkge1xuICAgIHJldHVybiBfLmhhcyh0aGlzLmVycm9ySGFuZGxlcnMsIGtleSk7XG4gIH1cblxuICBoYXNTcGVjaWFsTWVzc2FnZUhhbmRsZXIgKGtleSkge1xuICAgIHJldHVybiBfLmhhcyh0aGlzLnNwZWNpYWxIYW5kbGVycywga2V5KTtcbiAgfVxuXG4gIGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKGFsbG93ID0gdHJ1ZSkge1xuICAgIHRoaXMud2lsbE5hdmlnYXRlV2l0aG91dFJlbG9hZCA9IGFsbG93O1xuICB9XG5cbiAgYXN5bmMgaGFuZGxlTWVzc2FnZSAocGxpc3QpIHtcbiAgICBjb25zdCBzZWxlY3RvciA9IHBsaXN0Ll9fc2VsZWN0b3I7XG4gICAgaWYgKCFzZWxlY3Rvcikge1xuICAgICAgbG9nLmRlYnVnKCdHb3QgYW4gaW52YWxpZCBwbGlzdCcpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChfLmhhcyh0aGlzLmhhbmRsZXJzLCBzZWxlY3RvcikpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlcnNbc2VsZWN0b3JdKHBsaXN0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmRlYnVnKGBEZWJ1Z2dlciBnb3QgYSBtZXNzYWdlIGZvciAnJHtzZWxlY3Rvcn0nIGFuZCBoYXZlIG5vIGAgK1xuICAgICAgICAgICAgICAgIGBoYW5kbGVyLCBkb2luZyBub3RoaW5nLmApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZVNwZWNpYWxNZXNzYWdlIChoYW5kbGVyLCAuLi5hcmdzKSB7XG4gICAgY29uc3QgZm4gPSB0aGlzLnNwZWNpYWxIYW5kbGVyc1toYW5kbGVyXTtcblxuICAgIGlmIChmbikge1xuICAgICAgLy8gbW9zdCByZXNwb25zZXMgYXJlIG9ubHkgdG8gYmUgY2FsbGVkIG9uY2UsIHRoZW5cbiAgICAgIC8vIHJlbW92ZWQuIEJ1dCBub3QgdGhlIG9uZXMgYmVsb3csIHdoaWNoIGhhbmRsZVxuICAgICAgLy8gcGFnZSBjaGFuZ2UgYW5kIGFwcCBjb25uZWN0L2Rpc2Nvbm5lY3RcbiAgICAgIGlmIChoYW5kbGVyICE9PSAnX3JwY19mb3J3YXJkR2V0TGlzdGluZzonICYmXG4gICAgICAgICAgaGFuZGxlciAhPT0gJ19ycGNfYXBwbGljYXRpb25EaXNjb25uZWN0ZWQ6JyAmJlxuICAgICAgICAgIGhhbmRsZXIgIT09ICdfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOicgJiZcbiAgICAgICAgICBoYW5kbGVyICE9PSAnX3JwY19hcHBsaWNhdGlvblVwZGF0ZWQ6JyAmJlxuICAgICAgICAgIGhhbmRsZXIgIT09ICdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6Jykge1xuICAgICAgICB0aGlzLnNwZWNpYWxIYW5kbGVyc1toYW5kbGVyXSA9IG51bGw7XG4gICAgICB9XG4gICAgICBhd2FpdCBmbiguLi5hcmdzKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLndhcm4oYFRyaWVkIHRvIGFjY2VzcyBzcGVjaWFsIG1lc3NhZ2UgaGFuZGxlciAnJHtoYW5kbGVyfScgYCArXG4gICAgICAgICAgICAgICBgYnV0IG5vbmUgd2FzIGZvdW5kYCk7XG4gICAgfVxuICB9XG5cbiAgcGFyc2VEYXRhS2V5IChwbGlzdCkge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShwbGlzdC5fX2FyZ3VtZW50LldJUk1lc3NhZ2VEYXRhS2V5LnRvU3RyaW5nKCd1dGY4JykpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKGBVbnBhcnNlYWJsZSBtZXNzYWdlIGRhdGE6ICR7Xy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShwbGlzdCksIHtsZW5ndGg6IDEwMH0pfWApO1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcGFyc2UgbWVzc2FnZSBkYXRhOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGRpc3BhdGNoRGF0YU1lc3NhZ2UgKG1zZ0lkLCBtZXRob2QsIHBhcmFtcywgcmVzdWx0LCBlcnJvcikge1xuICAgIGlmICghXy5pc0VtcHR5KG1zZ0lkKSkge1xuICAgICAgbG9nLmRlYnVnKGBIYW5kbGluZyBtZXNzYWdlIChpZDogJyR7bXNnSWR9JylgKTtcbiAgICB9XG4gICAgaWYgKG1ldGhvZCA9PT0gJ1Byb2ZpbGVyLnJlc2V0UHJvZmlsZXMnKSB7XG4gICAgICBsb2cuZGVidWcoJ0RldmljZSBpcyB0ZWxsaW5nIHVzIHRvIHJlc2V0IHByb2ZpbGVzLiBTaG91bGQgcHJvYmFibHkgJyArXG4gICAgICAgICAgICAgICAgJ2RvIHNvbWUga2luZCBvZiBjYWxsYmFjayBoZXJlJyk7XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdQYWdlLmZyYW1lTmF2aWdhdGVkJykge1xuICAgICAgaWYgKCF0aGlzLndpbGxOYXZpZ2F0ZVdpdGhvdXRSZWxvYWQgJiYgIXRoaXMucGFnZUxvYWRpbmcpIHtcbiAgICAgICAgaWYgKF8uaXNGdW5jdGlvbih0aGlzLnNwZWNpYWxIYW5kbGVyc1snUGFnZS5mcmFtZU5hdmlnYXRlZCddKSkge1xuICAgICAgICAgIGF3YWl0IHRoaXMuc3BlY2lhbEhhbmRsZXJzWydQYWdlLmZyYW1lTmF2aWdhdGVkJ10oJ3JlbW90ZS1kZWJ1Z2dlcicpO1xuICAgICAgICAgIHRoaXMuc3BlY2lhbEhhbmRsZXJzWydQYWdlLmZyYW1lTmF2aWdhdGVkJ10gPSBudWxsO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cuZGVidWcoJ0ZyYW1lIG5hdmlnYXRlZCBidXQgd2Ugd2VyZSB3YXJuZWQgYWJvdXQgaXQsIG5vdCAnICtcbiAgICAgICAgICAgICAgICAgICdjb25zaWRlcmluZyBwYWdlIHN0YXRlIHVubG9hZGVkJyk7XG4gICAgICAgIHRoaXMud2lsbE5hdmlnYXRlV2l0aG91dFJlbG9hZCA9IGZhbHNlO1xuICAgICAgfVxuICAgIH0gZWxzZSBpZiAoSUdOT1JFRF9FVkVOVFMuaW5jbHVkZXMobWV0aG9kKSkge1xuICAgICAgLy8gcGFzc1xuICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAnUGFnZS5sb2FkRXZlbnRGaXJlZCcgJiYgXy5pc0Z1bmN0aW9uKHRoaXMuc3BlY2lhbEhhbmRsZXJzLnBhZ2VMb2FkKSkge1xuICAgICAgYXdhaXQgdGhpcy5zcGVjaWFsSGFuZGxlcnMucGFnZUxvYWQoKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ1BhZ2UuZnJhbWVEZXRhY2hlZCcgJiYgXy5pc0Z1bmN0aW9uKHRoaXMuc3BlY2lhbEhhbmRsZXJzLmZyYW1lRGV0YWNoZWQpKSB7XG4gICAgICBhd2FpdCB0aGlzLnNwZWNpYWxIYW5kbGVycy5mcmFtZURldGFjaGVkKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdUaW1lbGluZS5ldmVudFJlY29yZGVkJyAmJiBfLmlzRnVuY3Rpb24odGhpcy50aW1lbGluZUV2ZW50SGFuZGxlcikpIHtcbiAgICAgIHRoaXMudGltZWxpbmVFdmVudEhhbmRsZXIocGFyYW1zIHx8IHBhcmFtcy5yZWNvcmQpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAnQ29uc29sZS5tZXNzYWdlQWRkZWQnICYmIF8uaXNGdW5jdGlvbih0aGlzLmNvbnNvbGVMb2dFdmVudEhhbmRsZXIpKSB7XG4gICAgICB0aGlzLmNvbnNvbGVMb2dFdmVudEhhbmRsZXIocGFyYW1zLm1lc3NhZ2UpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kICYmIG1ldGhvZC5zdGFydHNXaXRoKCdOZXR3b3JrLicpICYmIF8uaXNGdW5jdGlvbih0aGlzLm5ldHdvcmtMb2dFdmVudEhhbmRsZXIpKSB7XG4gICAgICB0aGlzLm5ldHdvcmtMb2dFdmVudEhhbmRsZXIobWV0aG9kLCBwYXJhbXMpO1xuICAgIH0gZWxzZSBpZiAoXy5pc0Z1bmN0aW9uKHRoaXMuZGF0YUhhbmRsZXJzW21zZ0lkXSkpIHtcbiAgICAgIC8vIHdlIHdpbGwgZWl0aGVyIGdldCBiYWNrIGEgcmVzdWx0IG9iamVjdCB0aGF0IGhhcyBhIHJlc3VsdC52YWx1ZVxuICAgICAgLy8gaW4gd2hpY2ggY2FzZSB0aGF0IGlzIHdoYXQgd2Ugd2FudCxcbiAgICAgIC8vIG9yIGVsc2Ugd2UgcmV0dXJuIHRoZSB3aG9sZSB0aGluZ1xuICAgICAgaWYgKHJlc3VsdC5yZXN1bHQgJiYgcmVzdWx0LnJlc3VsdC52YWx1ZSkge1xuICAgICAgICByZXN1bHQgPSByZXN1bHQucmVzdWx0LnZhbHVlO1xuICAgICAgfVxuICAgICAgdGhpcy5kYXRhSGFuZGxlcnNbbXNnSWRdKHJlc3VsdCk7XG4gICAgICB0aGlzLmRhdGFIYW5kbGVyc1ttc2dJZF0gPSBudWxsO1xuICAgIH0gZWxzZSBpZiAodGhpcy5kYXRhSGFuZGxlcnNbbXNnSWRdID09PSBudWxsKSB7XG4gICAgICBsb2cuZXJyb3IoYERlYnVnZ2VyIHJldHVybmVkIGRhdGEgZm9yIG1lc3NhZ2UgJHttc2dJZH0gYCArXG4gICAgICAgICAgICAgICAgYGJ1dCB3ZSBhbHJlYWR5IHJhbiB0aGF0IGNhbGxiYWNrISBXVEY/P2ApO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobXNnSWQgfHwgcmVzdWx0IHx8IGVycm9yKSB7XG4gICAgICAgIGxvZy5lcnJvcihgRGVidWdnZXIgcmV0dXJuZWQgZGF0YSBmb3IgbWVzc2FnZSAnJHttc2dJZH0nIGAgK1xuICAgICAgICAgICAgICAgICAgYGJ1dCB3ZSB3ZXJlIG5vdCB3YWl0aW5nIGZvciB0aGF0IG1lc3NhZ2UhIGAgK1xuICAgICAgICAgICAgICAgICAgYHJlc3VsdDogJyR7SlNPTi5zdHJpbmdpZnkocmVzdWx0KX0nOyBgICtcbiAgICAgICAgICAgICAgICAgIGBlcnJvcjogJyR7ZXJyb3J9J2ApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGxvZ0Z1bGxNZXNzYWdlIChwbGlzdCkge1xuICAgIC8vIEJ1ZmZlcnMgY2Fubm90IGJlIHNlcmlhbGl6ZWQgaW4gYSByZWFkYWJsZSB3YXlcbiAgICBjb25zdCBidWZmZXJUb0pTT04gPSBCdWZmZXIucHJvdG90eXBlLnRvSlNPTjtcbiAgICBkZWxldGUgQnVmZmVyLnByb3RvdHlwZS50b0pTT047XG4gICAgdHJ5IHtcbiAgICAgIGxvZyhKU09OLnN0cmluZ2lmeShwbGlzdCwgKGssIHYpID0+IEJ1ZmZlci5pc0J1ZmZlcih2KSA/IHYudG9TdHJpbmcoJ3V0ZjgnKSA6IHYsIDIpKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgLy8gcmVzdG9yZSB0aGUgZnVuY3Rpb24sIHNvIGFzIHRvIG5vdCBicmVhayBmdXJ0aGVyIHNlcmlhbGl6YXRpb25cbiAgICAgIEJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gYnVmZmVyVG9KU09OO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGhhbmRsZURhdGFNZXNzYWdlIChwbGlzdCkge1xuICAgIGNvbnN0IGRhdGFLZXkgPSB0aGlzLnBhcnNlRGF0YUtleShwbGlzdCk7XG4gICAgbGV0IG1zZ0lkID0gKGRhdGFLZXkuaWQgfHwgJycpLnRvU3RyaW5nKCk7XG4gICAgbGV0IHJlc3VsdCA9IGRhdGFLZXkucmVzdWx0O1xuXG4gICAgLy8gd2UgY2FuIGdldCBhbiBlcnJvciwgb3Igd2UgY2FuIGdldCBhIHJlc3BvbnNlIHRoYXQgaXMgYW4gZXJyb3JcbiAgICBsZXQgZXJyb3IgPSBkYXRhS2V5LmVycm9yIHx8IG51bGw7XG4gICAgaWYgKHJlc3VsdCAmJiByZXN1bHQud2FzVGhyb3duKSB7XG4gICAgICBsZXQgbWVzc2FnZSA9IChyZXN1bHQucmVzdWx0ICYmIChyZXN1bHQucmVzdWx0LnZhbHVlIHx8IHJlc3VsdC5yZXN1bHQuZGVzY3JpcHRpb24pKVxuICAgICAgICA/IChyZXN1bHQucmVzdWx0LnZhbHVlIHx8IHJlc3VsdC5yZXN1bHQuZGVzY3JpcHRpb24pXG4gICAgICAgIDogJ0Vycm9yIG9jY3VycmVkIGluIGhhbmRsaW5nIGRhdGEgbWVzc2FnZSc7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAoZXJyb3IpIHtcbiAgICAgIGlmICh0aGlzLmhhc0Vycm9ySGFuZGxlcihtc2dJZCkpIHtcbiAgICAgICAgdGhpcy5lcnJvckhhbmRsZXJzW21zZ0lkXShlcnJvcik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cuZXJyb3IoYEVycm9yIG9jY3VycmVkIGluIGhhbmRsaW5nIGRhdGEgbWVzc2FnZTogJHtlcnJvcn1gKTtcbiAgICAgICAgbG9nLmVycm9yKCdObyBlcnJvciBoYW5kbGVyIHByZXNlbnQsIGlnbm9yaW5nJyk7XG4gICAgICB9XG5cbiAgICAgIC8vIHNob3J0IGNpcmN1aXRcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgbWV0aG9kID0gZGF0YUtleS5tZXRob2Q7XG4gICAgbGV0IHBhcmFtcztcbiAgICBpZiAodGhpcy5pc1RhcmdldEJhc2VkKSB7XG4gICAgICBpZiAobWV0aG9kID09PSAnVGFyZ2V0LnRhcmdldENyZWF0ZWQnKSB7XG4gICAgICAgIC8vIHRoaXMgaXMgaW4gcmVzcG9uc2UgdG8gYSBgX3JwY19mb3J3YXJkU29ja2V0U2V0dXA6YCBjYWxsXG4gICAgICAgIC8vIHRhcmdldEluZm86IHsgdGFyZ2V0SWQ6ICdwYWdlLTEnLCB0eXBlOiAncGFnZScgfVxuICAgICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5mbyA9IGRhdGFLZXkucGFyYW1zLnRhcmdldEluZm87XG4gICAgICAgIGF3YWl0IHRoaXMuc3BlY2lhbEhhbmRsZXJzLnRhcmdldENyZWF0ZWQoYXBwLCB0YXJnZXRJbmZvKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBpZiAobWV0aG9kID09PSAnVGFyZ2V0LnRhcmdldERlc3Ryb3llZCcpIHtcbiAgICAgICAgY29uc3QgYXBwID0gcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICAgIGNvbnN0IHRhcmdldEluZm8gPSBkYXRhS2V5LnBhcmFtcy50YXJnZXRJbmZvO1xuICAgICAgICBhd2FpdCB0aGlzLnNwZWNpYWxIYW5kbGVycy50YXJnZXREZXN0cm95ZWQoYXBwLCB0YXJnZXRJbmZvKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfSBlbHNlIGlmIChkYXRhS2V5Lm1ldGhvZCAhPT0gJ1RhcmdldC5kaXNwYXRjaE1lc3NhZ2VGcm9tVGFyZ2V0Jykge1xuICAgICAgICAvLyB0aGlzIHNvcnQgb2YgbWVzc2FnZSwgYXQgdGhpcyBwb2ludCwgaXMganVzdCBhbiBhY2tub3dsZWRnZW1lbnRcbiAgICAgICAgLy8gdGhhdCB0aGUgb3JpZ2luYWwgbWVzc2FnZSB3YXMgcmVjZWl2ZWRcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAvLyBhdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgVGFyZ2V0LWJhc2VkIG1lc3NhZ2Ugd3JhcHBpbmcgYSBwcm90b2NvbCBtZXNzYWdlXG4gICAgICBsZXQgbWVzc2FnZTtcbiAgICAgIHRyeSB7XG4gICAgICAgIG1lc3NhZ2UgPSBKU09OLnBhcnNlKGRhdGFLZXkucGFyYW1zLm1lc3NhZ2UpO1xuICAgICAgICBtc2dJZCA9IG1lc3NhZ2UuaWQ7XG4gICAgICAgIG1ldGhvZCA9IG1lc3NhZ2UubWV0aG9kO1xuICAgICAgICByZXN1bHQgPSBtZXNzYWdlLnJlc3VsdCB8fCBtZXNzYWdlO1xuICAgICAgICBwYXJhbXMgPSByZXN1bHQucGFyYW1zO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIC8vIGlmIHRoaXMgaGFwcGVucyB0aGVuIHNvbWUgYXNwZWN0IG9mIHRoZSBwcm90b2NvbCBpcyBtaXNzaW5nIHRvIHVzXG4gICAgICAgIC8vIHNvIHByaW50IHRoZSBlbnRpcmUgbWVzc2FnZSB0byBnZXQgdmlzaWJpaXR5IGludG8gd2hhdCBpcyBnb2luZyBvblxuICAgICAgICBsb2cuZXJyb3IoYFVuZXhwZWN0ZWQgbWVzc2FnZSBmb3JtYXQgZnJvbSBXZWIgSW5zcGVjdG9yOmApO1xuICAgICAgICB0aGlzLmxvZ0Z1bGxNZXNzYWdlKHBsaXN0KTtcbiAgICAgICAgdGhyb3cgZXJyO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBwYXJhbXMgPSBkYXRhS2V5LnBhcmFtcztcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNFbXB0eShtc2dJZCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgcmVzcG9uc2UgZm9yIG1lc3NhZ2UgJyR7bXNnSWR9J2ApO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuZGlzcGF0Y2hEYXRhTWVzc2FnZShtc2dJZCwgbWV0aG9kLCBwYXJhbXMsIHJlc3VsdCwgZXJyb3IpO1xuICB9XG5cbiAgc2V0SGFuZGxlcnMgKCkge1xuICAgIHRoaXMuaGFuZGxlcnMgPSB7XG4gICAgICAnX3JwY19yZXBvcnRTZXR1cDonOiBhc3luYyAocGxpc3QpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTcGVjaWFsTWVzc2FnZSgnX3JwY19yZXBvcnRJZGVudGlmaWVyOicsXG4gICAgICAgICAgcGxpc3QuX19hcmd1bWVudC5XSVJTaW11bGF0b3JOYW1lS2V5LFxuICAgICAgICAgIHBsaXN0Ll9fYXJndW1lbnQuV0lSU2ltdWxhdG9yQnVpbGRLZXksXG4gICAgICAgICAgcGxpc3QuX19hcmd1bWVudC5XSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleSk7XG4gICAgICB9LFxuICAgICAgJ19ycGNfcmVwb3J0Q29ubmVjdGVkQXBwbGljYXRpb25MaXN0Oic6IGFzeW5jIChwbGlzdCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVNwZWNpYWxNZXNzYWdlKCdfcnBjX3JlcG9ydENvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdDonLFxuICAgICAgICAgIHBsaXN0Ll9fYXJndW1lbnQuV0lSQXBwbGljYXRpb25EaWN0aW9uYXJ5S2V5KTtcbiAgICAgIH0sXG4gICAgICAnX3JwY19hcHBsaWNhdGlvblNlbnRMaXN0aW5nOic6IGFzeW5jIChwbGlzdCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVNwZWNpYWxNZXNzYWdlKCdfcnBjX2ZvcndhcmRHZXRMaXN0aW5nOicsXG4gICAgICAgICAgcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXksXG4gICAgICAgICAgcGxpc3QuX19hcmd1bWVudC5XSVJMaXN0aW5nS2V5KTtcbiAgICAgIH0sXG4gICAgICAnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonOiBhc3luYyAocGxpc3QpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTcGVjaWFsTWVzc2FnZSgnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonLFxuICAgICAgICAgIHBsaXN0Ll9fYXJndW1lbnQpO1xuICAgICAgfSxcbiAgICAgICdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOic6IGFzeW5jIChwbGlzdCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVNwZWNpYWxNZXNzYWdlKCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsXG4gICAgICAgICAgcGxpc3QuX19hcmd1bWVudCk7XG4gICAgICB9LFxuICAgICAgJ19ycGNfYXBwbGljYXRpb25VcGRhdGVkOic6IGFzeW5jIChwbGlzdCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVNwZWNpYWxNZXNzYWdlKCdfcnBjX2FwcGxpY2F0aW9uVXBkYXRlZDonLFxuICAgICAgICAgIHBsaXN0Ll9fYXJndW1lbnQpO1xuICAgICAgfSxcbiAgICAgICdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JzogYXN5bmMgKHBsaXN0KSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU3BlY2lhbE1lc3NhZ2UoJ19ycGNfcmVwb3J0Q29ubmVjdGVkRHJpdmVyTGlzdDonLFxuICAgICAgICAgIHBsaXN0Ll9fYXJndW1lbnQpO1xuICAgICAgfSxcbiAgICAgICdfcnBjX2FwcGxpY2F0aW9uU2VudERhdGE6JzogYXN5bmMgKHBsaXN0KSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRGF0YU1lc3NhZ2UocGxpc3QpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9yZW1vdGUtZGVidWdnZXItbWVzc2FnZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
267
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZW1vdGUtZGVidWdnZXItbWVzc2FnZS1oYW5kbGVyLmpzIl0sIm5hbWVzIjpbIklHTk9SRURfRVZFTlRTIiwiUnBjTWVzc2FnZUhhbmRsZXIiLCJjb25zdHJ1Y3RvciIsInNwZWNpYWxIYW5kbGVycyIsImlzVGFyZ2V0QmFzZWQiLCJzZXRIYW5kbGVycyIsImVycm9ySGFuZGxlcnMiLCJfIiwiY2xvbmUiLCJkYXRhSGFuZGxlcnMiLCJ3aWxsTmF2aWdhdGVXaXRob3V0UmVsb2FkIiwic2V0Q29tbXVuaWNhdGlvblByb3RvY29sIiwic2V0RGF0YU1lc3NhZ2VIYW5kbGVyIiwia2V5IiwiZXJyb3JIYW5kbGVyIiwiaGFuZGxlciIsInNldFNwZWNpYWxNZXNzYWdlSGFuZGxlciIsImdldFNwZWNpYWxNZXNzYWdlSGFuZGxlciIsInNldFRpbWVsaW5lRXZlbnRIYW5kbGVyIiwidGltZWxpbmVFdmVudEhhbmRsZXIiLCJzZXRDb25zb2xlTG9nRXZlbnRIYW5kbGVyIiwiY29uc29sZUxvZ0V2ZW50SGFuZGxlciIsInNldE5ldHdvcmtFdmVudEhhbmRsZXIiLCJuZXR3b3JrTG9nRXZlbnRIYW5kbGVyIiwiaGFzRXJyb3JIYW5kbGVyIiwiaGFzIiwiaGFzU3BlY2lhbE1lc3NhZ2VIYW5kbGVyIiwiYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCIsImFsbG93IiwiaGFuZGxlTWVzc2FnZSIsInBsaXN0Iiwic2VsZWN0b3IiLCJfX3NlbGVjdG9yIiwibG9nIiwiZGVidWciLCJoYW5kbGVycyIsImhhbmRsZVNwZWNpYWxNZXNzYWdlIiwiYXJncyIsImZuIiwid2FybiIsInBhcnNlRGF0YUtleSIsIkpTT04iLCJwYXJzZSIsIl9fYXJndW1lbnQiLCJXSVJNZXNzYWdlRGF0YUtleSIsInRvU3RyaW5nIiwiZXJyIiwiZXJyb3IiLCJ0cnVuY2F0ZSIsInN0cmluZ2lmeSIsImxlbmd0aCIsIkVycm9yIiwibWVzc2FnZSIsImRpc3BhdGNoRGF0YU1lc3NhZ2UiLCJtc2dJZCIsIm1ldGhvZCIsInBhcmFtcyIsInJlc3VsdCIsImlzRW1wdHkiLCJwYWdlTG9hZGluZyIsImlzRnVuY3Rpb24iLCJpbmNsdWRlcyIsInBhZ2VMb2FkIiwiZnJhbWVEZXRhY2hlZCIsInJlY29yZCIsInN0YXJ0c1dpdGgiLCJ2YWx1ZSIsImxvZ0Z1bGxNZXNzYWdlIiwiYnVmZmVyVG9KU09OIiwiQnVmZmVyIiwicHJvdG90eXBlIiwidG9KU09OIiwiayIsInYiLCJpc0J1ZmZlciIsImhhbmRsZURhdGFNZXNzYWdlIiwiZGF0YUtleSIsImlkIiwiYXBwIiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwidGFyZ2V0SW5mbyIsInRhcmdldENyZWF0ZWQiLCJ0YXJnZXREZXN0cm95ZWQiLCJ3YXNUaHJvd24iLCJkZXNjcmlwdGlvbiIsIldJUlNpbXVsYXRvck5hbWVLZXkiLCJXSVJTaW11bGF0b3JCdWlsZEtleSIsIldJUlNpbXVsYXRvclByb2R1Y3RWZXJzaW9uS2V5IiwiV0lSQXBwbGljYXRpb25EaWN0aW9uYXJ5S2V5IiwiV0lSTGlzdGluZ0tleSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFLQSxNQUFNQSxjQUFjLEdBQUcsQ0FDckIsaUNBRHFCLEVBRXJCLDJCQUZxQixFQUdyQiwwQkFIcUIsRUFJckIsMEJBSnFCLEVBS3JCLCtCQUxxQixFQU1yQixzQ0FOcUIsRUFPckIseUJBUHFCLENBQXZCOztBQVVlLE1BQU1DLGlCQUFOLENBQXdCO0FBQ3JDQyxFQUFBQSxXQUFXLENBQUVDLGVBQUYsRUFBbUJDLGFBQWEsR0FBRyxLQUFuQyxFQUEwQztBQUNuRCxTQUFLQyxXQUFMO0FBQ0EsU0FBS0MsYUFBTCxHQUFxQixFQUFyQjtBQUNBLFNBQUtILGVBQUwsR0FBdUJJLGdCQUFFQyxLQUFGLENBQVFMLGVBQVIsQ0FBdkI7QUFDQSxTQUFLTSxZQUFMLEdBQW9CLEVBQXBCO0FBQ0EsU0FBS0MseUJBQUwsR0FBaUMsS0FBakM7QUFFQSxTQUFLTixhQUFMLEdBQXFCQSxh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S0FBUCxJQUFpQjtBQUNoRCxjQUFNLEtBQUtNLG9CQUFMLENBQTBCLCtCQUExQixFQUNKTixLQUFLLENBQUNhLFVBREYsQ0FBTjtBQUVELE9BdkJhO0FBd0JkLGtDQUE0QixNQUFPYixLQUFQLElBQWlCO0FBQzNDLGNBQU0sS0FBS00sb0JBQUwsQ0FBMEIsMEJBQTFCLEVBQ0pOLEtBQUssQ0FBQ2EsVUFERixDQUFOO0FBRUQsT0EzQmE7QUE0QmQseUNBQW1DLE1BQU9iLEtBQVAsSUFBaUI7QUFDbEQsY0FBTSxLQUFLTSxvQkFBTCxDQUEwQixpQ0FBMUIsRUFDSk4sS0FBSyxDQUFDYSxVQURGLENBQU47QUFFRCxPQS9CYTtBQWdDZCxtQ0FBNkIsTUFBT2IsS0FBUCxJQUFpQjtBQUM1QyxjQUFNLEtBQUs2QyxpQkFBTCxDQUF1QjdDLEtBQXZCLENBQU47QUFDRDtBQWxDYSxLQUFoQjtBQW9DRDs7QUE5UW9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuXG5cbi8vIHdlIHdpbGwgcmVjZWl2ZSBldmVudHMgdGhhdCB3ZSBkbyBub3QgbGlzdGVuIHRvLlxuLy8gaWYgd2Ugc3RhcnQgdG8gbGlzdGVuIHRvIG9uZSBvZiB0aGVzZSwgcmVtb3ZlIGl0IGZyb20gdGhlIGxpc3RcbmNvbnN0IElHTk9SRURfRVZFTlRTID0gW1xuICAnUGFnZS5kZWZhdWx0QXBwZWFyYW5jZURpZENoYW5nZScsXG4gICdQYWdlLmRvbUNvbnRlbnRFdmVudEZpcmVkJyxcbiAgJ1BhZ2UuZnJhbWVTdGFydGVkTG9hZGluZycsXG4gICdQYWdlLmZyYW1lU3RvcHBlZExvYWRpbmcnLFxuICAnUGFnZS5mcmFtZVNjaGVkdWxlZE5hdmlnYXRpb24nLFxuICAnUGFnZS5mcmFtZUNsZWFyZWRTY2hlZHVsZWROYXZpZ2F0aW9uJyxcbiAgJ0NvbnNvbGUubWVzc2FnZXNDbGVhcmVkJyxcbl07XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJwY01lc3NhZ2VIYW5kbGVyIHtcbiAgY29uc3RydWN0b3IgKHNwZWNpYWxIYW5kbGVycywgaXNUYXJnZXRCYXNlZCA9IGZhbHNlKSB7XG4gICAgdGhpcy5zZXRIYW5kbGVycygpO1xuICAgIHRoaXMuZXJyb3JIYW5kbGVycyA9IHt9O1xuICAgIHRoaXMuc3BlY2lhbEhhbmRsZXJzID0gXy5jbG9uZShzcGVjaWFsSGFuZGxlcnMpO1xuICAgIHRoaXMuZGF0YUhhbmRsZXJzID0ge307XG4gICAgdGhpcy53aWxsTmF2aWdhdGVXaXRob3V0UmVsb2FkID0gZmFsc2U7XG5cbiAgICB0aGlzLmlzVGFyZ2V0QmFzZWQgPSBpc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgc2V0Q29tbXVuaWNhdGlvblByb3RvY29sIChpc1RhcmdldEJhc2VkKSB7XG4gICAgdGhpcy5pc1RhcmdldEJhc2VkID0gaXNUYXJnZXRCYXNlZDtcbiAgfVxuXG4gIHNldERhdGFNZXNzYWdlSGFuZGxlciAoa2V5LCBlcnJvckhhbmRsZXIsIGhhbmRsZXIpIHtcbiAgICB0aGlzLmVycm9ySGFuZGxlcnNba2V5XSA9IGVycm9ySGFuZGxlcjtcbiAgICB0aGlzLmRhdGFIYW5kbGVyc1trZXldID0gaGFuZGxlcjtcbiAgfVxuXG4gIHNldFNwZWNpYWxNZXNzYWdlSGFuZGxlciAoa2V5LCBlcnJvckhhbmRsZXIsIGhhbmRsZXIpIHtcbiAgICB0aGlzLmVycm9ySGFuZGxlcnNba2V5XSA9IGVycm9ySGFuZGxlcjtcbiAgICB0aGlzLnNwZWNpYWxIYW5kbGVyc1trZXldID0gaGFuZGxlcjtcbiAgfVxuXG4gIGdldFNwZWNpYWxNZXNzYWdlSGFuZGxlciAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuc3BlY2lhbEhhbmRsZXJzW2tleV07XG4gIH1cblxuICBzZXRUaW1lbGluZUV2ZW50SGFuZGxlciAodGltZWxpbmVFdmVudEhhbmRsZXIpIHtcbiAgICB0aGlzLnRpbWVsaW5lRXZlbnRIYW5kbGVyID0gdGltZWxpbmVFdmVudEhhbmRsZXI7XG4gIH1cblxuICBzZXRDb25zb2xlTG9nRXZlbnRIYW5kbGVyIChjb25zb2xlTG9nRXZlbnRIYW5kbGVyKSB7XG4gICAgdGhpcy5jb25zb2xlTG9nRXZlbnRIYW5kbGVyID0gY29uc29sZUxvZ0V2ZW50SGFuZGxlcjtcbiAgfVxuXG4gIHNldE5ldHdvcmtFdmVudEhhbmRsZXIgKG5ldHdvcmtMb2dFdmVudEhhbmRsZXIpIHtcbiAgICB0aGlzLm5ldHdvcmtMb2dFdmVudEhhbmRsZXIgPSBuZXR3b3JrTG9nRXZlbnRIYW5kbGVyO1xuICB9XG5cbiAgaGFzRXJyb3JIYW5kbGVyIChrZXkpIHtcbiAgICByZXR1cm4gXy5oYXModGhpcy5lcnJvckhhbmRsZXJzLCBrZXkpO1xuICB9XG5cbiAgaGFzU3BlY2lhbE1lc3NhZ2VIYW5kbGVyIChrZXkpIHtcbiAgICByZXR1cm4gXy5oYXModGhpcy5zcGVjaWFsSGFuZGxlcnMsIGtleSk7XG4gIH1cblxuICBhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIChhbGxvdyA9IHRydWUpIHtcbiAgICB0aGlzLndpbGxOYXZpZ2F0ZVdpdGhvdXRSZWxvYWQgPSBhbGxvdztcbiAgfVxuXG4gIGFzeW5jIGhhbmRsZU1lc3NhZ2UgKHBsaXN0KSB7XG4gICAgY29uc3Qgc2VsZWN0b3IgPSBwbGlzdC5fX3NlbGVjdG9yO1xuICAgIGlmICghc2VsZWN0b3IpIHtcbiAgICAgIGxvZy5kZWJ1ZygnR290IGFuIGludmFsaWQgcGxpc3QnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoXy5oYXModGhpcy5oYW5kbGVycywgc2VsZWN0b3IpKSB7XG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZXJzW3NlbGVjdG9yXShwbGlzdCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5kZWJ1ZyhgRGVidWdnZXIgZ290IGEgbWVzc2FnZSBmb3IgJyR7c2VsZWN0b3J9JyBhbmQgaGF2ZSBubyBgICtcbiAgICAgICAgICAgICAgICBgaGFuZGxlciwgZG9pbmcgbm90aGluZy5gKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBoYW5kbGVTcGVjaWFsTWVzc2FnZSAoaGFuZGxlciwgLi4uYXJncykge1xuICAgIGNvbnN0IGZuID0gdGhpcy5zcGVjaWFsSGFuZGxlcnNbaGFuZGxlcl07XG5cbiAgICBpZiAoZm4pIHtcbiAgICAgIC8vIG1vc3QgcmVzcG9uc2VzIGFyZSBvbmx5IHRvIGJlIGNhbGxlZCBvbmNlLCB0aGVuXG4gICAgICAvLyByZW1vdmVkLiBCdXQgbm90IHRoZSBvbmVzIGJlbG93LCB3aGljaCBoYW5kbGVcbiAgICAgIC8vIHBhZ2UgY2hhbmdlIGFuZCBhcHAgY29ubmVjdC9kaXNjb25uZWN0XG4gICAgICBpZiAoaGFuZGxlciAhPT0gJ19ycGNfZm9yd2FyZEdldExpc3Rpbmc6JyAmJlxuICAgICAgICAgIGhhbmRsZXIgIT09ICdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicgJiZcbiAgICAgICAgICBoYW5kbGVyICE9PSAnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonICYmXG4gICAgICAgICAgaGFuZGxlciAhPT0gJ19ycGNfYXBwbGljYXRpb25VcGRhdGVkOicgJiZcbiAgICAgICAgICBoYW5kbGVyICE9PSAnX3JwY19yZXBvcnRDb25uZWN0ZWREcml2ZXJMaXN0OicpIHtcbiAgICAgICAgdGhpcy5zcGVjaWFsSGFuZGxlcnNbaGFuZGxlcl0gPSBudWxsO1xuICAgICAgfVxuICAgICAgYXdhaXQgZm4oLi4uYXJncyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy53YXJuKGBUcmllZCB0byBhY2Nlc3Mgc3BlY2lhbCBtZXNzYWdlIGhhbmRsZXIgJyR7aGFuZGxlcn0nIGAgK1xuICAgICAgICAgICAgICAgYGJ1dCBub25lIHdhcyBmb3VuZGApO1xuICAgIH1cbiAgfVxuXG4gIHBhcnNlRGF0YUtleSAocGxpc3QpIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UocGxpc3QuX19hcmd1bWVudC5XSVJNZXNzYWdlRGF0YUtleS50b1N0cmluZygndXRmOCcpKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy5lcnJvcihgVW5wYXJzZWFibGUgbWVzc2FnZSBkYXRhOiAke18udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkocGxpc3QpLCB7bGVuZ3RoOiAxMDB9KX1gKTtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHBhcnNlIG1lc3NhZ2UgZGF0YTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkaXNwYXRjaERhdGFNZXNzYWdlIChtc2dJZCwgbWV0aG9kLCBwYXJhbXMsIHJlc3VsdCwgZXJyb3IpIHtcbiAgICBpZiAoIV8uaXNFbXB0eShtc2dJZCkpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgSGFuZGxpbmcgbWVzc2FnZSAoaWQ6ICcke21zZ0lkfScpYCk7XG4gICAgfVxuICAgIGlmIChtZXRob2QgPT09ICdQcm9maWxlci5yZXNldFByb2ZpbGVzJykge1xuICAgICAgbG9nLmRlYnVnKCdEZXZpY2UgaXMgdGVsbGluZyB1cyB0byByZXNldCBwcm9maWxlcy4gU2hvdWxkIHByb2JhYmx5ICcgK1xuICAgICAgICAgICAgICAgICdkbyBzb21lIGtpbmQgb2YgY2FsbGJhY2sgaGVyZScpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAnUGFnZS5mcmFtZU5hdmlnYXRlZCcpIHtcbiAgICAgIGlmICghdGhpcy53aWxsTmF2aWdhdGVXaXRob3V0UmVsb2FkICYmICF0aGlzLnBhZ2VMb2FkaW5nKSB7XG4gICAgICAgIGlmIChfLmlzRnVuY3Rpb24odGhpcy5zcGVjaWFsSGFuZGxlcnNbJ1BhZ2UuZnJhbWVOYXZpZ2F0ZWQnXSkpIHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnNwZWNpYWxIYW5kbGVyc1snUGFnZS5mcmFtZU5hdmlnYXRlZCddKCdyZW1vdGUtZGVidWdnZXInKTtcbiAgICAgICAgICB0aGlzLnNwZWNpYWxIYW5kbGVyc1snUGFnZS5mcmFtZU5hdmlnYXRlZCddID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmRlYnVnKCdGcmFtZSBuYXZpZ2F0ZWQgYnV0IHdlIHdlcmUgd2FybmVkIGFib3V0IGl0LCBub3QgJyArXG4gICAgICAgICAgICAgICAgICAnY29uc2lkZXJpbmcgcGFnZSBzdGF0ZSB1bmxvYWRlZCcpO1xuICAgICAgICB0aGlzLndpbGxOYXZpZ2F0ZVdpdGhvdXRSZWxvYWQgPSBmYWxzZTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKElHTk9SRURfRVZFTlRTLmluY2x1ZGVzKG1ldGhvZCkpIHtcbiAgICAgIC8vIHBhc3NcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ1BhZ2UubG9hZEV2ZW50RmlyZWQnICYmIF8uaXNGdW5jdGlvbih0aGlzLnNwZWNpYWxIYW5kbGVycy5wYWdlTG9hZCkpIHtcbiAgICAgIGF3YWl0IHRoaXMuc3BlY2lhbEhhbmRsZXJzLnBhZ2VMb2FkKCk7XG4gICAgfSBlbHNlIGlmIChtZXRob2QgPT09ICdQYWdlLmZyYW1lRGV0YWNoZWQnICYmIF8uaXNGdW5jdGlvbih0aGlzLnNwZWNpYWxIYW5kbGVycy5mcmFtZURldGFjaGVkKSkge1xuICAgICAgYXdhaXQgdGhpcy5zcGVjaWFsSGFuZGxlcnMuZnJhbWVEZXRhY2hlZCgpO1xuICAgIH0gZWxzZSBpZiAobWV0aG9kID09PSAnVGltZWxpbmUuZXZlbnRSZWNvcmRlZCcgJiYgXy5pc0Z1bmN0aW9uKHRoaXMudGltZWxpbmVFdmVudEhhbmRsZXIpKSB7XG4gICAgICB0aGlzLnRpbWVsaW5lRXZlbnRIYW5kbGVyKHBhcmFtcyB8fCBwYXJhbXMucmVjb3JkKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCA9PT0gJ0NvbnNvbGUubWVzc2FnZUFkZGVkJyAmJiBfLmlzRnVuY3Rpb24odGhpcy5jb25zb2xlTG9nRXZlbnRIYW5kbGVyKSkge1xuICAgICAgdGhpcy5jb25zb2xlTG9nRXZlbnRIYW5kbGVyKHBhcmFtcy5tZXNzYWdlKTtcbiAgICB9IGVsc2UgaWYgKG1ldGhvZCAmJiBtZXRob2Quc3RhcnRzV2l0aCgnTmV0d29yay4nKSAmJiBfLmlzRnVuY3Rpb24odGhpcy5uZXR3b3JrTG9nRXZlbnRIYW5kbGVyKSkge1xuICAgICAgdGhpcy5uZXR3b3JrTG9nRXZlbnRIYW5kbGVyKG1ldGhvZCwgcGFyYW1zKTtcbiAgICB9IGVsc2UgaWYgKF8uaXNGdW5jdGlvbih0aGlzLmRhdGFIYW5kbGVyc1ttc2dJZF0pKSB7XG4gICAgICAvLyB3ZSB3aWxsIGVpdGhlciBnZXQgYmFjayBhIHJlc3VsdCBvYmplY3QgdGhhdCBoYXMgYSByZXN1bHQudmFsdWVcbiAgICAgIC8vIGluIHdoaWNoIGNhc2UgdGhhdCBpcyB3aGF0IHdlIHdhbnQsXG4gICAgICAvLyBvciBlbHNlIHdlIHJldHVybiB0aGUgd2hvbGUgdGhpbmdcbiAgICAgIGlmIChyZXN1bHQucmVzdWx0ICYmIHJlc3VsdC5yZXN1bHQudmFsdWUpIHtcbiAgICAgICAgcmVzdWx0ID0gcmVzdWx0LnJlc3VsdC52YWx1ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZGF0YUhhbmRsZXJzW21zZ0lkXShyZXN1bHQpO1xuICAgICAgdGhpcy5kYXRhSGFuZGxlcnNbbXNnSWRdID0gbnVsbDtcbiAgICB9IGVsc2UgaWYgKHRoaXMuZGF0YUhhbmRsZXJzW21zZ0lkXSA9PT0gbnVsbCkge1xuICAgICAgbG9nLmVycm9yKGBEZWJ1Z2dlciByZXR1cm5lZCBkYXRhIGZvciBtZXNzYWdlICR7bXNnSWR9IGAgK1xuICAgICAgICAgICAgICAgIGBidXQgd2UgYWxyZWFkeSByYW4gdGhhdCBjYWxsYmFjayEgV1RGPz9gKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWYgKG1zZ0lkIHx8IHJlc3VsdCB8fCBlcnJvcikge1xuICAgICAgICBsb2cuZXJyb3IoYERlYnVnZ2VyIHJldHVybmVkIGRhdGEgZm9yIG1lc3NhZ2UgJyR7bXNnSWR9JyBgICtcbiAgICAgICAgICAgICAgICAgIGBidXQgd2Ugd2VyZSBub3Qgd2FpdGluZyBmb3IgdGhhdCBtZXNzYWdlISBgICtcbiAgICAgICAgICAgICAgICAgIGByZXN1bHQ6ICcke0pTT04uc3RyaW5naWZ5KHJlc3VsdCl9JzsgYCArXG4gICAgICAgICAgICAgICAgICBgZXJyb3I6ICcke2Vycm9yfSdgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBsb2dGdWxsTWVzc2FnZSAocGxpc3QpIHtcbiAgICAvLyBCdWZmZXJzIGNhbm5vdCBiZSBzZXJpYWxpemVkIGluIGEgcmVhZGFibGUgd2F5XG4gICAgY29uc3QgYnVmZmVyVG9KU09OID0gQnVmZmVyLnByb3RvdHlwZS50b0pTT047XG4gICAgZGVsZXRlIEJ1ZmZlci5wcm90b3R5cGUudG9KU09OO1xuICAgIHRyeSB7XG4gICAgICBsb2coSlNPTi5zdHJpbmdpZnkocGxpc3QsIChrLCB2KSA9PiBCdWZmZXIuaXNCdWZmZXIodikgPyB2LnRvU3RyaW5nKCd1dGY4JykgOiB2LCAyKSk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIC8vIHJlc3RvcmUgdGhlIGZ1bmN0aW9uLCBzbyBhcyB0byBub3QgYnJlYWsgZnVydGhlciBzZXJpYWxpemF0aW9uXG4gICAgICBCdWZmZXIucHJvdG90eXBlLnRvSlNPTiA9IGJ1ZmZlclRvSlNPTjtcbiAgICB9XG4gIH1cblxuICBhc3luYyBoYW5kbGVEYXRhTWVzc2FnZSAocGxpc3QpIHtcbiAgICBjb25zdCBkYXRhS2V5ID0gdGhpcy5wYXJzZURhdGFLZXkocGxpc3QpO1xuICAgIGxldCBtc2dJZCA9IChkYXRhS2V5LmlkIHx8ICcnKS50b1N0cmluZygpO1xuICAgIGxldCByZXN1bHQgPSBkYXRhS2V5LnJlc3VsdDtcblxuICAgIGxldCBtZXRob2QgPSBkYXRhS2V5Lm1ldGhvZDtcbiAgICBsZXQgcGFyYW1zO1xuICAgIGlmICh0aGlzLmlzVGFyZ2V0QmFzZWQpIHtcbiAgICAgIGlmIChtZXRob2QgPT09ICdUYXJnZXQudGFyZ2V0Q3JlYXRlZCcpIHtcbiAgICAgICAgLy8gdGhpcyBpcyBpbiByZXNwb25zZSB0byBhIGBfcnBjX2ZvcndhcmRTb2NrZXRTZXR1cDpgIGNhbGxcbiAgICAgICAgLy8gdGFyZ2V0SW5mbzogeyB0YXJnZXRJZDogJ3BhZ2UtMScsIHR5cGU6ICdwYWdlJyB9XG4gICAgICAgIGNvbnN0IGFwcCA9IHBsaXN0Ll9fYXJndW1lbnQuV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICAgICAgICBjb25zdCB0YXJnZXRJbmZvID0gZGF0YUtleS5wYXJhbXMudGFyZ2V0SW5mbztcbiAgICAgICAgYXdhaXQgdGhpcy5zcGVjaWFsSGFuZGxlcnMudGFyZ2V0Q3JlYXRlZChhcHAsIHRhcmdldEluZm8pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGlmIChtZXRob2QgPT09ICdUYXJnZXQudGFyZ2V0RGVzdHJveWVkJykge1xuICAgICAgICBjb25zdCBhcHAgPSBwbGlzdC5fX2FyZ3VtZW50LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcbiAgICAgICAgY29uc3QgdGFyZ2V0SW5mbyA9IGRhdGFLZXkucGFyYW1zLnRhcmdldEluZm87XG4gICAgICAgIGF3YWl0IHRoaXMuc3BlY2lhbEhhbmRsZXJzLnRhcmdldERlc3Ryb3llZChhcHAsIHRhcmdldEluZm8pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9IGVsc2UgaWYgKGRhdGFLZXkubWV0aG9kICE9PSAnVGFyZ2V0LmRpc3BhdGNoTWVzc2FnZUZyb21UYXJnZXQnKSB7XG4gICAgICAgIC8vIHRoaXMgc29ydCBvZiBtZXNzYWdlLCBhdCB0aGlzIHBvaW50LCBpcyBqdXN0IGFuIGFja25vd2xlZGdlbWVudFxuICAgICAgICAvLyB0aGF0IHRoZSBvcmlnaW5hbCBtZXNzYWdlIHdhcyByZWNlaXZlZFxuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIGF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgYSBUYXJnZXQtYmFzZWQgbWVzc2FnZSB3cmFwcGluZyBhIHByb3RvY29sIG1lc3NhZ2VcbiAgICAgIGxldCBtZXNzYWdlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgbWVzc2FnZSA9IEpTT04ucGFyc2UoZGF0YUtleS5wYXJhbXMubWVzc2FnZSk7XG4gICAgICAgIG1zZ0lkID0gbWVzc2FnZS5pZDtcbiAgICAgICAgbWV0aG9kID0gbWVzc2FnZS5tZXRob2Q7XG4gICAgICAgIHJlc3VsdCA9IG1lc3NhZ2UucmVzdWx0IHx8IG1lc3NhZ2U7XG4gICAgICAgIHBhcmFtcyA9IHJlc3VsdC5wYXJhbXM7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgLy8gaWYgdGhpcyBoYXBwZW5zIHRoZW4gc29tZSBhc3BlY3Qgb2YgdGhlIHByb3RvY29sIGlzIG1pc3NpbmcgdG8gdXNcbiAgICAgICAgLy8gc28gcHJpbnQgdGhlIGVudGlyZSBtZXNzYWdlIHRvIGdldCB2aXNpYmlpdHkgaW50byB3aGF0IGlzIGdvaW5nIG9uXG4gICAgICAgIGxvZy5lcnJvcihgVW5leHBlY3RlZCBtZXNzYWdlIGZvcm1hdCBmcm9tIFdlYiBJbnNwZWN0b3I6YCk7XG4gICAgICAgIHRoaXMubG9nRnVsbE1lc3NhZ2UocGxpc3QpO1xuICAgICAgICB0aHJvdyBlcnI7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHBhcmFtcyA9IGRhdGFLZXkucGFyYW1zO1xuICAgIH1cblxuICAgIC8vIHdlIGNhbiBnZXQgYW4gZXJyb3IsIG9yIHdlIGNhbiBnZXQgYSByZXNwb25zZSB0aGF0IGlzIGFuIGVycm9yXG4gICAgbGV0IGVycm9yID0gZGF0YUtleS5lcnJvciB8fCBudWxsO1xuICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0Lndhc1Rocm93bikge1xuICAgICAgY29uc3QgbWVzc2FnZSA9IChyZXN1bHQucmVzdWx0ICYmIChyZXN1bHQucmVzdWx0LnZhbHVlIHx8IHJlc3VsdC5yZXN1bHQuZGVzY3JpcHRpb24pKVxuICAgICAgICA/IChyZXN1bHQucmVzdWx0LnZhbHVlIHx8IHJlc3VsdC5yZXN1bHQuZGVzY3JpcHRpb24pXG4gICAgICAgIDogJ0Vycm9yIG9jY3VycmVkIGluIGhhbmRsaW5nIGRhdGEgbWVzc2FnZSc7XG4gICAgICBlcnJvciA9IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9XG5cbiAgICBpZiAoIWVycm9yKSB7XG4gICAgICBpZiAoIV8uaXNFbXB0eShtc2dJZCkpIHtcbiAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCByZXNwb25zZSBmb3IgbWVzc2FnZSAnJHttc2dJZH0nYCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLmRpc3BhdGNoRGF0YU1lc3NhZ2UobXNnSWQsIG1ldGhvZCwgcGFyYW1zLCByZXN1bHQsIGVycm9yKTtcbiAgICB9XG5cbiAgICAvLyBoYW5kbGUgdGhlIGVycm9yXG4gICAgaWYgKHRoaXMuaGFzRXJyb3JIYW5kbGVyKG1zZ0lkKSkge1xuICAgICAgdGhpcy5lcnJvckhhbmRsZXJzW21zZ0lkXShlcnJvcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvZy5lcnJvcihgRXJyb3Igb2NjdXJyZWQgaW4gaGFuZGxpbmcgZGF0YSBtZXNzYWdlOiAke2Vycm9yfWApO1xuICAgICAgbG9nLmVycm9yKCdObyBlcnJvciBoYW5kbGVyIHByZXNlbnQsIGlnbm9yaW5nJyk7XG4gICAgfVxuICB9XG5cbiAgc2V0SGFuZGxlcnMgKCkge1xuICAgIHRoaXMuaGFuZGxlcnMgPSB7XG4gICAgICAnX3JwY19yZXBvcnRTZXR1cDonOiBhc3luYyAocGxpc3QpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTcGVjaWFsTWVzc2FnZSgnX3JwY19yZXBvcnRJZGVudGlmaWVyOicsXG4gICAgICAgICAgcGxpc3QuX19hcmd1bWVudC5XSVJTaW11bGF0b3JOYW1lS2V5LFxuICAgICAgICAgIHBsaXN0Ll9fYXJndW1lbnQuV0lSU2ltdWxhdG9yQnVpbGRLZXksXG4gICAgICAgICAgcGxpc3QuX19hcmd1bWVudC5XSVJTaW11bGF0b3JQcm9kdWN0VmVyc2lvbktleSk7XG4gICAgICB9LFxuICAgICAgJ19ycGNfcmVwb3J0Q29ubmVjdGVkQXBwbGljYXRpb25MaXN0Oic6IGFzeW5jIChwbGlzdCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVNwZWNpYWxNZXNzYWdlKCdfcnBjX3JlcG9ydENvbm5lY3RlZEFwcGxpY2F0aW9uTGlzdDonLFxuICAgICAgICAgIHBsaXN0Ll9fYXJndW1lbnQuV0lSQXBwbGljYXRpb25EaWN0aW9uYXJ5S2V5KTtcbiAgICAgIH0sXG4gICAgICAnX3JwY19hcHBsaWNhdGlvblNlbnRMaXN0aW5nOic6IGFzeW5jIChwbGlzdCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVNwZWNpYWxNZXNzYWdlKCdfcnBjX2ZvcndhcmRHZXRMaXN0aW5nOicsXG4gICAgICAgICAgcGxpc3QuX19hcmd1bWVudC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXksXG4gICAgICAgICAgcGxpc3QuX19hcmd1bWVudC5XSVJMaXN0aW5nS2V5KTtcbiAgICAgIH0sXG4gICAgICAnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonOiBhc3luYyAocGxpc3QpID0+IHtcbiAgICAgICAgYXdhaXQgdGhpcy5oYW5kbGVTcGVjaWFsTWVzc2FnZSgnX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonLFxuICAgICAgICAgIHBsaXN0Ll9fYXJndW1lbnQpO1xuICAgICAgfSxcbiAgICAgICdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOic6IGFzeW5jIChwbGlzdCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVNwZWNpYWxNZXNzYWdlKCdfcnBjX2FwcGxpY2F0aW9uRGlzY29ubmVjdGVkOicsXG4gICAgICAgICAgcGxpc3QuX19hcmd1bWVudCk7XG4gICAgICB9LFxuICAgICAgJ19ycGNfYXBwbGljYXRpb25VcGRhdGVkOic6IGFzeW5jIChwbGlzdCkgPT4ge1xuICAgICAgICBhd2FpdCB0aGlzLmhhbmRsZVNwZWNpYWxNZXNzYWdlKCdfcnBjX2FwcGxpY2F0aW9uVXBkYXRlZDonLFxuICAgICAgICAgIHBsaXN0Ll9fYXJndW1lbnQpO1xuICAgICAgfSxcbiAgICAgICdfcnBjX3JlcG9ydENvbm5lY3RlZERyaXZlckxpc3Q6JzogYXN5bmMgKHBsaXN0KSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU3BlY2lhbE1lc3NhZ2UoJ19ycGNfcmVwb3J0Q29ubmVjdGVkRHJpdmVyTGlzdDonLFxuICAgICAgICAgIHBsaXN0Ll9fYXJndW1lbnQpO1xuICAgICAgfSxcbiAgICAgICdfcnBjX2FwcGxpY2F0aW9uU2VudERhdGE6JzogYXN5bmMgKHBsaXN0KSA9PiB7XG4gICAgICAgIGF3YWl0IHRoaXMuaGFuZGxlRGF0YU1lc3NhZ2UocGxpc3QpO1xuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9yZW1vdGUtZGVidWdnZXItbWVzc2FnZS1oYW5kbGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
@@ -25,6 +25,7 @@ class RemoteDebuggerRealDevice extends _remoteDebugger.RemoteDebugger {
25
25
  async connect() {
26
26
  this.setup();
27
27
  this.rpcClient = new _rpcClientRealDevice.default({
28
+ bundleId: this.bundleId,
28
29
  platformVersion: this.platformVersion,
29
30
  isSafari: this.isSafari,
30
31
  host: this.host,
@@ -54,4 +55,4 @@ class RemoteDebuggerRealDevice extends _remoteDebugger.RemoteDebugger {
54
55
  exports.default = RemoteDebuggerRealDevice;require('source-map-support').install();
55
56
 
56
57
 
57
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZW1vdGUtZGVidWdnZXItcmVhbC1kZXZpY2UuanMiXSwibmFtZXMiOlsiUmVtb3RlRGVidWdnZXJSZWFsRGV2aWNlIiwiUmVtb3RlRGVidWdnZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJ1ZGlkIiwic2tpcHBlZEFwcHMiLCJjb25uZWN0Iiwic2V0dXAiLCJycGNDbGllbnQiLCJScGNDbGllbnRSZWFsRGV2aWNlIiwicGxhdGZvcm1WZXJzaW9uIiwiaXNTYWZhcmkiLCJob3N0IiwicG9ydCIsInNvY2tldFBhdGgiLCJzcGVjaWFsTWVzc2FnZUhhbmRsZXJzIiwic3BlY2lhbENicyIsIm1lc3NhZ2VQcm94eSIsInJlbW90ZURlYnVnUHJveHkiLCJsb2dGdWxsUmVzcG9uc2UiLCJhcHBJbmZvIiwic2V0Q29ubmVjdGlvbktleSIsImxvZyIsImRlYnVnIiwiZXJyIiwiZGlzY29ubmVjdCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHZSxNQUFNQSx3QkFBTixTQUF1Q0MsOEJBQXZDLENBQXNEO0FBQ25FQyxFQUFBQSxXQUFXLENBQUVDLElBQUksR0FBRyxFQUFULEVBQWE7QUFDdEIsVUFBTUEsSUFBTjtBQUVBLFNBQUtDLElBQUwsR0FBWUQsSUFBSSxDQUFDQyxJQUFqQjtBQUVBLFNBQUtDLFdBQUwsR0FBbUIsQ0FBQyxXQUFELENBQW5CO0FBQ0Q7O0FBRUQsUUFBTUMsT0FBTixHQUFpQjtBQUNmLFNBQUtDLEtBQUw7QUFHQSxTQUFLQyxTQUFMLEdBQWlCLElBQUlDLDRCQUFKLENBQXdCO0FBQ3ZDQyxNQUFBQSxlQUFlLEVBQUUsS0FBS0EsZUFEaUI7QUFFdkNDLE1BQUFBLFFBQVEsRUFBRSxLQUFLQSxRQUZ3QjtBQUd2Q0MsTUFBQUEsSUFBSSxFQUFFLEtBQUtBLElBSDRCO0FBSXZDQyxNQUFBQSxJQUFJLEVBQUUsS0FBS0EsSUFKNEI7QUFLdkNDLE1BQUFBLFVBQVUsRUFBRSxLQUFLQSxVQUxzQjtBQU12Q0MsTUFBQUEsc0JBQXNCLEVBQUUsS0FBS0MsVUFOVTtBQU92Q0MsTUFBQUEsWUFBWSxFQUFFLEtBQUtDLGdCQVBvQjtBQVF2Q0MsTUFBQUEsZUFBZSxFQUFFLEtBQUtBLGVBUmlCO0FBU3ZDZixNQUFBQSxJQUFJLEVBQUUsS0FBS0E7QUFUNEIsS0FBeEIsQ0FBakI7QUFXQSxVQUFNLEtBQUtJLFNBQUwsQ0FBZUYsT0FBZixFQUFOOztBQUdBLFFBQUk7QUFDRixZQUFNYyxPQUFPLEdBQUcsTUFBTSxLQUFLQyxnQkFBTCxFQUF0Qjs7QUFDQUMsc0JBQUlDLEtBQUosQ0FBVSwwQkFBVjs7QUFDQSxhQUFPSCxPQUFQO0FBQ0QsS0FKRCxDQUlFLE9BQU9JLEdBQVAsRUFBWTtBQUNaLFlBQU0sS0FBS0MsVUFBTCxFQUFOO0FBQ0EsYUFBTyxJQUFQO0FBQ0Q7QUFDRjs7QUFuQ2tFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgeyBSZW1vdGVEZWJ1Z2dlciB9IGZyb20gJy4vcmVtb3RlLWRlYnVnZ2VyJztcbmltcG9ydCBScGNDbGllbnRSZWFsRGV2aWNlIGZyb20gJy4vcnBjLWNsaWVudC1yZWFsLWRldmljZSc7XG5cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVtb3RlRGVidWdnZXJSZWFsRGV2aWNlIGV4dGVuZHMgUmVtb3RlRGVidWdnZXIge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgc3VwZXIob3B0cyk7XG5cbiAgICB0aGlzLnVkaWQgPSBvcHRzLnVkaWQ7XG5cbiAgICB0aGlzLnNraXBwZWRBcHBzID0gWydsb2NrZG93bmQnXTtcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3QgKCkge1xuICAgIHRoaXMuc2V0dXAoKTtcblxuICAgIC8vIGluaXRpYWxpemUgdGhlIHJwYyBjbGllbnRcbiAgICB0aGlzLnJwY0NsaWVudCA9IG5ldyBScGNDbGllbnRSZWFsRGV2aWNlKHtcbiAgICAgIHBsYXRmb3JtVmVyc2lvbjogdGhpcy5wbGF0Zm9ybVZlcnNpb24sXG4gICAgICBpc1NhZmFyaTogdGhpcy5pc1NhZmFyaSxcbiAgICAgIGhvc3Q6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMucG9ydCxcbiAgICAgIHNvY2tldFBhdGg6IHRoaXMuc29ja2V0UGF0aCxcbiAgICAgIHNwZWNpYWxNZXNzYWdlSGFuZGxlcnM6IHRoaXMuc3BlY2lhbENicyxcbiAgICAgIG1lc3NhZ2VQcm94eTogdGhpcy5yZW1vdGVEZWJ1Z1Byb3h5LFxuICAgICAgbG9nRnVsbFJlc3BvbnNlOiB0aGlzLmxvZ0Z1bGxSZXNwb25zZSxcbiAgICAgIHVkaWQ6IHRoaXMudWRpZFxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMucnBjQ2xpZW50LmNvbm5lY3QoKTtcblxuICAgIC8vIGdldCB0aGUgY29ubmVjdGlvbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXBwXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGFwcEluZm8gPSBhd2FpdCB0aGlzLnNldENvbm5lY3Rpb25LZXkoKTtcbiAgICAgIGxvZy5kZWJ1ZygnQ29ubmVjdGVkIHRvIGFwcGxpY2F0aW9uJyk7XG4gICAgICByZXR1cm4gYXBwSW5mbztcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGF3YWl0IHRoaXMuZGlzY29ubmVjdCgpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9yZW1vdGUtZGVidWdnZXItcmVhbC1kZXZpY2UuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
58
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9yZW1vdGUtZGVidWdnZXItcmVhbC1kZXZpY2UuanMiXSwibmFtZXMiOlsiUmVtb3RlRGVidWdnZXJSZWFsRGV2aWNlIiwiUmVtb3RlRGVidWdnZXIiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJ1ZGlkIiwic2tpcHBlZEFwcHMiLCJjb25uZWN0Iiwic2V0dXAiLCJycGNDbGllbnQiLCJScGNDbGllbnRSZWFsRGV2aWNlIiwiYnVuZGxlSWQiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc1NhZmFyaSIsImhvc3QiLCJwb3J0Iiwic29ja2V0UGF0aCIsInNwZWNpYWxNZXNzYWdlSGFuZGxlcnMiLCJzcGVjaWFsQ2JzIiwibWVzc2FnZVByb3h5IiwicmVtb3RlRGVidWdQcm94eSIsImxvZ0Z1bGxSZXNwb25zZSIsImFwcEluZm8iLCJzZXRDb25uZWN0aW9uS2V5IiwibG9nIiwiZGVidWciLCJlcnIiLCJkaXNjb25uZWN0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdlLE1BQU1BLHdCQUFOLFNBQXVDQyw4QkFBdkMsQ0FBc0Q7QUFDbkVDLEVBQUFBLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtBQUN0QixVQUFNQSxJQUFOO0FBRUEsU0FBS0MsSUFBTCxHQUFZRCxJQUFJLENBQUNDLElBQWpCO0FBRUEsU0FBS0MsV0FBTCxHQUFtQixDQUFDLFdBQUQsQ0FBbkI7QUFDRDs7QUFFRCxRQUFNQyxPQUFOLEdBQWlCO0FBQ2YsU0FBS0MsS0FBTDtBQUdBLFNBQUtDLFNBQUwsR0FBaUIsSUFBSUMsNEJBQUosQ0FBd0I7QUFDdkNDLE1BQUFBLFFBQVEsRUFBRSxLQUFLQSxRQUR3QjtBQUV2Q0MsTUFBQUEsZUFBZSxFQUFFLEtBQUtBLGVBRmlCO0FBR3ZDQyxNQUFBQSxRQUFRLEVBQUUsS0FBS0EsUUFId0I7QUFJdkNDLE1BQUFBLElBQUksRUFBRSxLQUFLQSxJQUo0QjtBQUt2Q0MsTUFBQUEsSUFBSSxFQUFFLEtBQUtBLElBTDRCO0FBTXZDQyxNQUFBQSxVQUFVLEVBQUUsS0FBS0EsVUFOc0I7QUFPdkNDLE1BQUFBLHNCQUFzQixFQUFFLEtBQUtDLFVBUFU7QUFRdkNDLE1BQUFBLFlBQVksRUFBRSxLQUFLQyxnQkFSb0I7QUFTdkNDLE1BQUFBLGVBQWUsRUFBRSxLQUFLQSxlQVRpQjtBQVV2Q2hCLE1BQUFBLElBQUksRUFBRSxLQUFLQTtBQVY0QixLQUF4QixDQUFqQjtBQVlBLFVBQU0sS0FBS0ksU0FBTCxDQUFlRixPQUFmLEVBQU47O0FBR0EsUUFBSTtBQUNGLFlBQU1lLE9BQU8sR0FBRyxNQUFNLEtBQUtDLGdCQUFMLEVBQXRCOztBQUNBQyxzQkFBSUMsS0FBSixDQUFVLDBCQUFWOztBQUNBLGFBQU9ILE9BQVA7QUFDRCxLQUpELENBSUUsT0FBT0ksR0FBUCxFQUFZO0FBQ1osWUFBTSxLQUFLQyxVQUFMLEVBQU47QUFDQSxhQUFPLElBQVA7QUFDRDtBQUNGOztBQXBDa0UiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IFJlbW90ZURlYnVnZ2VyIH0gZnJvbSAnLi9yZW1vdGUtZGVidWdnZXInO1xuaW1wb3J0IFJwY0NsaWVudFJlYWxEZXZpY2UgZnJvbSAnLi9ycGMtY2xpZW50LXJlYWwtZGV2aWNlJztcblxuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBSZW1vdGVEZWJ1Z2dlclJlYWxEZXZpY2UgZXh0ZW5kcyBSZW1vdGVEZWJ1Z2dlciB7XG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBzdXBlcihvcHRzKTtcblxuICAgIHRoaXMudWRpZCA9IG9wdHMudWRpZDtcblxuICAgIHRoaXMuc2tpcHBlZEFwcHMgPSBbJ2xvY2tkb3duZCddO1xuICB9XG5cbiAgYXN5bmMgY29ubmVjdCAoKSB7XG4gICAgdGhpcy5zZXR1cCgpO1xuXG4gICAgLy8gaW5pdGlhbGl6ZSB0aGUgcnBjIGNsaWVudFxuICAgIHRoaXMucnBjQ2xpZW50ID0gbmV3IFJwY0NsaWVudFJlYWxEZXZpY2Uoe1xuICAgICAgYnVuZGxlSWQ6IHRoaXMuYnVuZGxlSWQsXG4gICAgICBwbGF0Zm9ybVZlcnNpb246IHRoaXMucGxhdGZvcm1WZXJzaW9uLFxuICAgICAgaXNTYWZhcmk6IHRoaXMuaXNTYWZhcmksXG4gICAgICBob3N0OiB0aGlzLmhvc3QsXG4gICAgICBwb3J0OiB0aGlzLnBvcnQsXG4gICAgICBzb2NrZXRQYXRoOiB0aGlzLnNvY2tldFBhdGgsXG4gICAgICBzcGVjaWFsTWVzc2FnZUhhbmRsZXJzOiB0aGlzLnNwZWNpYWxDYnMsXG4gICAgICBtZXNzYWdlUHJveHk6IHRoaXMucmVtb3RlRGVidWdQcm94eSxcbiAgICAgIGxvZ0Z1bGxSZXNwb25zZTogdGhpcy5sb2dGdWxsUmVzcG9uc2UsXG4gICAgICB1ZGlkOiB0aGlzLnVkaWRcbiAgICB9KTtcbiAgICBhd2FpdCB0aGlzLnJwY0NsaWVudC5jb25uZWN0KCk7XG5cbiAgICAvLyBnZXQgdGhlIGNvbm5lY3Rpb24gaW5mb3JtYXRpb24gYWJvdXQgdGhlIGFwcFxuICAgIHRyeSB7XG4gICAgICBjb25zdCBhcHBJbmZvID0gYXdhaXQgdGhpcy5zZXRDb25uZWN0aW9uS2V5KCk7XG4gICAgICBsb2cuZGVidWcoJ0Nvbm5lY3RlZCB0byBhcHBsaWNhdGlvbicpO1xuICAgICAgcmV0dXJuIGFwcEluZm87XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBhd2FpdCB0aGlzLmRpc2Nvbm5lY3QoKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl0sImZpbGUiOiJsaWIvcmVtb3RlLWRlYnVnZ2VyLXJlYWwtZGV2aWNlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=