appium-ios-device 1.4.1 → 1.7.1

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/README.md CHANGED
@@ -7,8 +7,6 @@ appium-ios-device
7
7
  [![devDependency Status](https://david-dm.org/appium/appium-ios-device/master/dev-status.svg)](https://david-dm.org/appium/appium-ios-device/master#info=devDependencies)
8
8
 
9
9
  [![Build Status](https://api.travis-ci.org/appium/appium-ios-device.png?branch=master)](https://travis-ci.org/appium/appium-ios-device)
10
- [![Coverage Status](https://coveralls.io/repos/appium/appium-ios-device/badge.svg?branch=master)](https://coveralls.io/r/appium/appium-ios-device?branch=master)
11
- [![Greenkeeper badge](https://badges.greenkeeper.io/appium/appium-ios-device.svg)](https://greenkeeper.io/)
12
10
 
13
11
  Appium API for dealing with iOS devices. This is mainly a rewrite of libimobiledevice in nodejs. The APIs allow Appium to talk directly to the phone over usbmuxd
14
12
 
@@ -46,12 +46,12 @@ class InstallationProxyService extends _baseService.BaseServicePlist {
46
46
  this._plistService.sendPlist(request);
47
47
 
48
48
  const messages = await this._waitMessageCompletion();
49
- return messages.reduce((acc, message) => {
49
+ return messages.reduce(function (acc, message) {
50
50
  if (!message.CurrentList) {
51
51
  return acc;
52
52
  }
53
53
 
54
- message.CurrentList.forEach(app => {
54
+ message.CurrentList.forEach(function (app) {
55
55
  acc[app.CFBundleIdentifier] = app;
56
56
  });
57
57
  return acc;
@@ -132,4 +132,4 @@ var _default = InstallationProxyService;
132
132
  exports.default = _default;require('source-map-support').install();
133
133
 
134
134
 
135
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbnN0YWxsYXRpb24tcHJveHkvaW5kZXguanMiXSwibmFtZXMiOlsiSU5TVEFMTEFUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSIsIkluc3RhbGxhdGlvblByb3h5U2VydmljZSIsIkJhc2VTZXJ2aWNlUGxpc3QiLCJpbnN0YWxsQXBwbGljYXRpb24iLCJwYXRoIiwiY2xpZW50T3B0aW9ucyIsInRpbWVvdXQiLCJyZXF1ZXN0IiwiQ29tbWFuZCIsIlBhY2thZ2VQYXRoIiwiQ2xpZW50T3B0aW9ucyIsIl9wbGlzdFNlcnZpY2UiLCJzZW5kUGxpc3QiLCJfd2FpdE1lc3NhZ2VDb21wbGV0aW9uIiwibGlzdEFwcGxpY2F0aW9ucyIsIm9wdHMiLCJhcHBsaWNhdGlvblR5cGUiLCJBcHBsaWNhdGlvblR5cGUiLCJyZXR1cm5BdHRyaWJ1dGVzIiwiUmV0dXJuQXR0cmlidXRlcyIsIm1lc3NhZ2VzIiwicmVkdWNlIiwiYWNjIiwibWVzc2FnZSIsIkN1cnJlbnRMaXN0IiwiZm9yRWFjaCIsImFwcCIsIkNGQnVuZGxlSWRlbnRpZmllciIsImxvb2t1cEFwcGxpY2F0aW9ucyIsImJ1bmRsZUlkcyIsIkJ1bmRsZUlEcyIsIl8iLCJpc1N0cmluZyIsIkxvb2t1cFJlc3VsdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuaW5zdGFsbEFwcGxpY2F0aW9uIiwiYnVuZGxlSWQiLCJBcHBsaWNhdGlvbklkZW50aWZpZXIiLCJpIiwiTnVtYmVyIiwiTUFYX1NBRkVfSU5URUdFUiIsImRhdGEiLCJyZWNlaXZlUGxpc3QiLCJwdXNoIiwiX2lzRmluaXNoZWQiLCJyZXNwb25zZSIsIlN0YXR1cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSwrQkFBK0IsR0FBRyxxQ0FBeEM7OztBQUVBLE1BQU1DLHdCQUFOLFNBQXVDQyw2QkFBdkMsQ0FBd0Q7QUFPdEQsUUFBTUMsa0JBQU4sQ0FBMEJDLElBQTFCLEVBQWdDQyxhQUFhLEdBQUcs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dCB7IEJhc2VTZXJ2aWNlUGxpc3QgfSBmcm9tICcuLi9iYXNlLXNlcnZpY2UnO1xuXG5jb25zdCBJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FID0gJ2NvbS5hcHBsZS5tb2JpbGUuaW5zdGFsbGF0aW9uX3Byb3h5JztcblxuY2xhc3MgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2VQbGlzdCB7XG4gIC8qKlxuICAgKiBJbnN0YWxsIHRoZSBhcHBsaWNhdGlvbiBvbiB0aGUgcmVsYXRpdmUgcGF0aCBvbiB0aGUgcGhvbmVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIHBhdGggd2hlcmUgdGhlIC5hcHAgYW5kIC5pcGEgaXMgbG9jYXRlZCBhdCBvbiB0aGUgcGhvbmVcbiAgICogQHBhcmFtIHtPYmplY3R9IGNsaWVudE9wdGlvbnMgVGhlIGV4dHJhIG9wdGlvbnMgdGhhdCB3YW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIGluc3RhbGxkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFs2MDAwMF0gVGhlIHRpbWVvdXQgYmV0d2VlbiBtZXNzYWdlcyByZWNlaXZlZCBmcm9tIHRoZSBwaG9uZSBhcyBzdGF0dXMgdXBkYXRlc1xuICAgKi9cbiAgYXN5bmMgaW5zdGFsbEFwcGxpY2F0aW9uIChwYXRoLCBjbGllbnRPcHRpb25zID0ge30sIHRpbWVvdXQgPSA2MDAwMCkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnSW5zdGFsbCcsXG4gICAgICBQYWNrYWdlUGF0aDogcGF0aCxcbiAgICAgIENsaWVudE9wdGlvbnM6IGNsaWVudE9wdGlvbnNcbiAgICB9O1xuXG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdChyZXF1ZXN0KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKHRpbWVvdXQpO1xuICB9XG5cbiAgLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMaXN0QXBwbGljYXRpb25PcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwcGxpY2F0aW9uVHlwZSBvZiB0aGUgd2hpY2ggZ3JvdXAgeW91IHdhbnQgdG8gbGlzdC4gVGhlc2UgY2FuIGJlIFVzZXIsIFN5c3RlbSBvciBsZWF2ZSBpdCBlbXB0eSBmb3IgYm90aFxuICogQHByb3BlcnR5IHtBcnJheX0gcmV0dXJuQXR0cmlidXRlcyB0aGUgZmllbGRzIHdoaWNoIHNob3VsZCBiZSBmaWx0ZXJlZCBhbmQgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4gTGVhdmUgdGhpcyBwYXJhbWV0ZXIgZW1wdHkgaWYgeW91IGRvbid0IHdhbnQgdG8gZmlsdGVyXG4gKi9cblxuICAvKipcbiAgICogTGlzdHMgYXBwbGljYXRpb25zIGFjY29yZGluZyB0byB0aGUgb3B0cyBhbmQgcmV0dXJucyB0aGVtIGFzIGEgbWFwXG4gICAqIEBwYXJhbSB7TGlzdEFwcGxpY2F0aW9uT3B0aW9uc30gb3B0cyB0aGUgbGlzdGluZyBvcHRpb25zIHRoYXQgd2FudHMgdG8gYmUgcGFzc2VkXG4gICAqIEByZXR1cm5zIEEgbWFwIG9mIHRoZSBhcHBsaWNhdGlvbnMgd2hpY2ggdGhlIGtleSBpcyB0aGUgYnVuZGxlSWRcbiAgICovXG4gIGFzeW5jIGxpc3RBcHBsaWNhdGlvbnMgKG9wdHMgPSB7fSkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnQnJvd3NlJyxcbiAgICAgIENsaWVudE9wdGlvbnM6IHt9XG4gICAgfTtcblxuICAgIGlmIChvcHRzLmFwcGxpY2F0aW9uVHlwZSkge1xuICAgICAgcmVxdWVzdC5DbGllbnRPcHRpb25zLkFwcGxpY2F0aW9uVHlwZSA9IG9wdHMuYXBwbGljYXRpb25UeXBlO1xuICAgIH1cbiAgICBpZiAob3B0cy5yZXR1cm5BdHRyaWJ1dGVzKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuUmV0dXJuQXR0cmlidXRlcyA9IG9wdHMucmV0dXJuQXR0cmlidXRlcztcbiAgICB9XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKCk7XG4gICAgcmV0dXJuIG1lc3NhZ2VzLnJlZHVjZSgoYWNjLCBtZXNzYWdlKSA9PiB7XG4gICAgICBpZiAoIW1lc3NhZ2UuQ3VycmVudExpc3QpIHtcbiAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgIH1cbiAgICAgIG1lc3NhZ2UuQ3VycmVudExpc3QuZm9yRWFjaChhcHAgPT4ge1xuICAgICAgICBhY2NbYXBwLkNGQnVuZGxlSWRlbnRpZmllcl0gPSBhcHA7XG4gICAgICB9KTtcbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuICB9XG5cbiAgLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBMb29rdXBBcHBsaWNhdGlvbk9wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBwbGljYXRpb25UeXBlIG9mIHRoZSB3aGljaCBncm91cCB5b3Ugd2FudCB0byBsaXN0LiBUaGVzZSBjYW4gYmUgVXNlciwgU3lzdGVtIG9yIGxlYXZlIGl0IGVtcHR5IGZvciBib3RoXG4gKiBAcHJvcGVydHkge0FycmF5fSByZXR1cm5BdHRyaWJ1dGVzIHRoZSBmaWVsZHMgd2hpY2ggc2hvdWxkIGJlIGZpbHRlcmVkIGFuZCByZXR1cm5lZCB0byB0aGUgY2xpZW50LiBMZWF2ZSB0aGlzIHBhcmFtZXRlciBlbXB0eSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBmaWx0ZXJcbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfEFycmF5fSBidW5kbGVJZHMgQnVuZGxlIElkcyBvZiB0aGUgYXBwcyB0aGF0IHNob3VsZCBiZSBzZWFyY2hlZFxuICovXG5cbiAgLyoqXG4gICAqIExpc3RzIGFwcGxpY2F0aW9ucyBhY2NvcmRpbmcgdG8gdGhlIG9wdHMgYW5kIHJldHVybnMgdGhlbSBhcyBhIG1hcFxuICAgKiBAcGFyYW0ge0xvb2t1cEFwcGxpY2F0aW9uT3B0aW9uc30gb3B0cyB0aGUgbG9va3VwIG9wdGlvbnMgdGhhdCB3YW50cyB0byBiZSBwYXNzZWRcbiAgICogQHJldHVybnMgQSBtYXAgb2YgdGhlIGFwcGxpY2F0aW9ucyB3aGljaCB0aGUga2V5IGlzIHRoZSBidW5kbGVJZFxuICAgKi9cbiAgYXN5bmMgbG9va3VwQXBwbGljYXRpb25zIChvcHRzID0ge30pIHtcbiAgICBjb25zdCByZXF1ZXN0ID0ge1xuICAgICAgQ29tbWFuZDogJ0xvb2t1cCcsXG4gICAgICBDbGllbnRPcHRpb25zOiB7fVxuICAgIH07XG4gICAgaWYgKG9wdHMuYnVuZGxlSWRzKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuQnVuZGxlSURzID0gXy5pc1N0cmluZyhvcHRzLmJ1bmRsZUlkcykgPyBbb3B0cy5idW5kbGVJZHNdIDogb3B0cy5idW5kbGVJZHM7XG4gICAgfVxuICAgIGlmIChvcHRzLmFwcGxpY2F0aW9uVHlwZSkge1xuICAgICAgcmVxdWVzdC5DbGllbnRPcHRpb25zLkFwcGxpY2F0aW9uVHlwZSA9IG9wdHMuYXBwbGljYXRpb25UeXBlO1xuICAgIH1cbiAgICBpZiAob3B0cy5yZXR1cm5BdHRyaWJ1dGVzKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuUmV0dXJuQXR0cmlidXRlcyA9IG9wdHMucmV0dXJuQXR0cmlidXRlcztcbiAgICB9XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IG1lc3NhZ2VzID0gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKCk7XG4gICAgZm9yIChjb25zdCBtZXNzYWdlIG9mIG1lc3NhZ2VzKSB7XG4gICAgICBpZiAobWVzc2FnZS5Mb29rdXBSZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIG1lc3NhZ2UuTG9va3VwUmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIExvb2t1cFJlc3VsdCBpbiB0aGUgcmVzcG9uc2U6IFJlc3BvbnNlOiAke0pTT04uc3RyaW5naWZ5KG1lc3NhZ2VzKX1gKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBVbmluc3RhbGxzIGFuIGFwcGxpY2F0aW9uIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gYnVuZGxlSWRcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJ1bmRsZUlkIG9mIHRoZSBhcHAgdGhhdCBuZWVkcyB0byBiZSBwYXNzZWQgZm9yIHVuaW5zdGFsbGF0aW9uXG4gICAqIEBwYXJhbSB7bnVtYmVyfSB0aW1lb3V0IFRoZSB0aW1lb3V0IGJldHdlZW4gbWVzc2FnZXMgcmVjZWl2ZWQgZnJvbSB0aGUgcGhvbmUgYXMgc3RhdHVzIHVwZGF0ZXNcbiAgICovXG4gIGFzeW5jIHVuaW5zdGFsbEFwcGxpY2F0aW9uIChidW5kbGVJZCwgdGltZW91dCA9IDIwMDAwKSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIENvbW1hbmQ6ICdVbmluc3RhbGwnLFxuICAgICAgQXBwbGljYXRpb25JZGVudGlmaWVyOiBidW5kbGVJZFxuICAgIH07XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl93YWl0TWVzc2FnZUNvbXBsZXRpb24odGltZW91dCk7XG4gIH1cblxuICBhc3luYyBfd2FpdE1lc3NhZ2VDb21wbGV0aW9uICh0aW1lb3V0KSB7XG4gICAgbGV0IG1lc3NhZ2VzID0gW107XG4gICAgLy8gSnVzdCBhZGRlZCBmb3Igc2FmZXR5LiBUaGlzIHNob3VsZG4ndCBoYXBwZW5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IE51bWJlci5NQVhfU0FGRV9JTlRFR0VSOyBpKyspIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLl9wbGlzdFNlcnZpY2UucmVjZWl2ZVBsaXN0KHRpbWVvdXQpO1xuICAgICAgbWVzc2FnZXMucHVzaChkYXRhKTtcbiAgICAgIGlmICh0aGlzLl9pc0ZpbmlzaGVkKGRhdGEpKSB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlcztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfaXNGaW5pc2hlZCAocmVzcG9uc2UpIHtcbiAgICBpZiAocmVzcG9uc2UuRXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KHJlc3BvbnNlKX1gKTtcbiAgICB9XG5cbiAgICBpZiAoIXJlc3BvbnNlLlN0YXR1cykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gcmVzcG9uc2UuU3RhdHVzID09PSAnQ29tcGxldGUnO1xuICB9XG59XG5cbmV4cG9ydCB7IEluc3RhbGxhdGlvblByb3h5U2VydmljZSwgSU5TVEFMTEFUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSB9O1xuZXhwb3J0IGRlZmF1bHQgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlO1xuIl0sImZpbGUiOiJsaWIvaW5zdGFsbGF0aW9uLXByb3h5L2luZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
135
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9pbnN0YWxsYXRpb24tcHJveHkvaW5kZXguanMiXSwibmFtZXMiOlsiSU5TVEFMTEFUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSIsIkluc3RhbGxhdGlvblByb3h5U2VydmljZSIsIkJhc2VTZXJ2aWNlUGxpc3QiLCJpbnN0YWxsQXBwbGljYXRpb24iLCJwYXRoIiwiY2xpZW50T3B0aW9ucyIsInRpbWVvdXQiLCJyZXF1ZXN0IiwiQ29tbWFuZCIsIlBhY2thZ2VQYXRoIiwiQ2xpZW50T3B0aW9ucyIsIl9wbGlzdFNlcnZpY2UiLCJzZW5kUGxpc3QiLCJfd2FpdE1lc3NhZ2VDb21wbGV0aW9uIiwibGlzdEFwcGxpY2F0aW9ucyIsIm9wdHMiLCJhcHBsaWNhdGlvblR5cGUiLCJBcHBsaWNhdGlvblR5cGUiLCJyZXR1cm5BdHRyaWJ1dGVzIiwiUmV0dXJuQXR0cmlidXRlcyIsIm1lc3NhZ2VzIiwicmVkdWNlIiwiYWNjIiwibWVzc2FnZSIsIkN1cnJlbnRMaXN0IiwiZm9yRWFjaCIsImFwcCIsIkNGQnVuZGxlSWRlbnRpZmllciIsImxvb2t1cEFwcGxpY2F0aW9ucyIsImJ1bmRsZUlkcyIsIkJ1bmRsZUlEcyIsIl8iLCJpc1N0cmluZyIsIkxvb2t1cFJlc3VsdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuaW5zdGFsbEFwcGxpY2F0aW9uIiwiYnVuZGxlSWQiLCJBcHBsaWNhdGlvbklkZW50aWZpZXIiLCJpIiwiTnVtYmVyIiwiTUFYX1NBRkVfSU5URUdFUiIsImRhdGEiLCJyZWNlaXZlUGxpc3QiLCJwdXNoIiwiX2lzRmluaXNoZWQiLCJyZXNwb25zZSIsIlN0YXR1cyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSwrQkFBK0IsR0FBRyxxQ0FBeEM7OztBQUVBLE1BQU1DLHdCQUFOLFNBQXVDQyw2QkFBdkMsQ0FBd0Q7QUFPdEQsUUFBTUMsa0JBQU4sQ0FBMEJDLElBQTFCLEVBQWdDQyxhQUFhLEdBQUcs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aW1wb3J0IHsgQmFzZVNlcnZpY2VQbGlzdCB9IGZyb20gJy4uL2Jhc2Utc2VydmljZSc7XG5cbmNvbnN0IElOU1RBTExBVElPTl9QUk9YWV9TRVJWSUNFX05BTUUgPSAnY29tLmFwcGxlLm1vYmlsZS5pbnN0YWxsYXRpb25fcHJveHknO1xuXG5jbGFzcyBJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZVBsaXN0IHtcbiAgLyoqXG4gICAqIEluc3RhbGwgdGhlIGFwcGxpY2F0aW9uIG9uIHRoZSByZWxhdGl2ZSBwYXRoIG9uIHRoZSBwaG9uZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgcGF0aCB3aGVyZSB0aGUgLmFwcCBhbmQgLmlwYSBpcyBsb2NhdGVkIGF0IG9uIHRoZSBwaG9uZVxuICAgKiBAcGFyYW0ge09iamVjdH0gY2xpZW50T3B0aW9ucyBUaGUgZXh0cmEgb3B0aW9ucyB0aGF0IHdhbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUgaW5zdGFsbGRcbiAgICogQHBhcmFtIHtudW1iZXJ9IHRpbWVvdXQgWzYwMDAwXSBUaGUgdGltZW91dCBiZXR3ZWVuIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gdGhlIHBob25lIGFzIHN0YXR1cyB1cGRhdGVzXG4gICAqL1xuICBhc3luYyBpbnN0YWxsQXBwbGljYXRpb24gKHBhdGgsIGNsaWVudE9wdGlvbnMgPSB7fSwgdGltZW91dCA9IDYwMDAwKSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIENvbW1hbmQ6ICdJbnN0YWxsJyxcbiAgICAgIFBhY2thZ2VQYXRoOiBwYXRoLFxuICAgICAgQ2xpZW50T3B0aW9uczogY2xpZW50T3B0aW9uc1xuICAgIH07XG5cbiAgICB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0KHJlcXVlc3QpO1xuICAgIHJldHVybiBhd2FpdCB0aGlzLl93YWl0TWVzc2FnZUNvbXBsZXRpb24odGltZW91dCk7XG4gIH1cblxuICAvKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IExpc3RBcHBsaWNhdGlvbk9wdGlvbnNcbiAqXG4gKiBAcHJvcGVydHkge3N0cmluZ30gYXBwbGljYXRpb25UeXBlIG9mIHRoZSB3aGljaCBncm91cCB5b3Ugd2FudCB0byBsaXN0LiBUaGVzZSBjYW4gYmUgVXNlciwgU3lzdGVtIG9yIGxlYXZlIGl0IGVtcHR5IGZvciBib3RoXG4gKiBAcHJvcGVydHkge0FycmF5fSByZXR1cm5BdHRyaWJ1dGVzIHRoZSBmaWVsZHMgd2hpY2ggc2hvdWxkIGJlIGZpbHRlcmVkIGFuZCByZXR1cm5lZCB0byB0aGUgY2xpZW50LiBMZWF2ZSB0aGlzIHBhcmFtZXRlciBlbXB0eSBpZiB5b3UgZG9uJ3Qgd2FudCB0byBmaWx0ZXJcbiAqL1xuXG4gIC8qKlxuICAgKiBMaXN0cyBhcHBsaWNhdGlvbnMgYWNjb3JkaW5nIHRvIHRoZSBvcHRzIGFuZCByZXR1cm5zIHRoZW0gYXMgYSBtYXBcbiAgICogQHBhcmFtIHtMaXN0QXBwbGljYXRpb25PcHRpb25zfSBvcHRzIHRoZSBsaXN0aW5nIG9wdGlvbnMgdGhhdCB3YW50cyB0byBiZSBwYXNzZWRcbiAgICogQHJldHVybnMgQSBtYXAgb2YgdGhlIGFwcGxpY2F0aW9ucyB3aGljaCB0aGUga2V5IGlzIHRoZSBidW5kbGVJZFxuICAgKi9cbiAgYXN5bmMgbGlzdEFwcGxpY2F0aW9ucyAob3B0cyA9IHt9KSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIENvbW1hbmQ6ICdCcm93c2UnLFxuICAgICAgQ2xpZW50T3B0aW9uczoge31cbiAgICB9O1xuXG4gICAgaWYgKG9wdHMuYXBwbGljYXRpb25UeXBlKSB7XG4gICAgICByZXF1ZXN0LkNsaWVudE9wdGlvbnMuQXBwbGljYXRpb25UeXBlID0gb3B0cy5hcHBsaWNhdGlvblR5cGU7XG4gICAgfVxuICAgIGlmIChvcHRzLnJldHVybkF0dHJpYnV0ZXMpIHtcbiAgICAgIHJlcXVlc3QuQ2xpZW50T3B0aW9ucy5SZXR1cm5BdHRyaWJ1dGVzID0gb3B0cy5yZXR1cm5BdHRyaWJ1dGVzO1xuICAgIH1cblxuICAgIHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3QocmVxdWVzdCk7XG4gICAgY29uc3QgbWVzc2FnZXMgPSBhd2FpdCB0aGlzLl93YWl0TWVzc2FnZUNvbXBsZXRpb24oKTtcbiAgICByZXR1cm4gbWVzc2FnZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIG1lc3NhZ2UpIHtcbiAgICAgIGlmICghbWVzc2FnZS5DdXJyZW50TGlzdCkge1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfVxuICAgICAgbWVzc2FnZS5DdXJyZW50TGlzdC5mb3JFYWNoKGZ1bmN0aW9uIChhcHApIHtcbiAgICAgICAgYWNjW2FwcC5DRkJ1bmRsZUlkZW50aWZpZXJdID0gYXBwO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcbiAgfVxuXG4gIC8qKlxuICogQHR5cGVkZWYge09iamVjdH0gTG9va3VwQXBwbGljYXRpb25PcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHtzdHJpbmd9IGFwcGxpY2F0aW9uVHlwZSBvZiB0aGUgd2hpY2ggZ3JvdXAgeW91IHdhbnQgdG8gbGlzdC4gVGhlc2UgY2FuIGJlIFVzZXIsIFN5c3RlbSBvciBsZWF2ZSBpdCBlbXB0eSBmb3IgYm90aFxuICogQHByb3BlcnR5IHtBcnJheX0gcmV0dXJuQXR0cmlidXRlcyB0aGUgZmllbGRzIHdoaWNoIHNob3VsZCBiZSBmaWx0ZXJlZCBhbmQgcmV0dXJuZWQgdG8gdGhlIGNsaWVudC4gTGVhdmUgdGhpcyBwYXJhbWV0ZXIgZW1wdHkgaWYgeW91IGRvbid0IHdhbnQgdG8gZmlsdGVyXG4gKiBAcHJvcGVydHkge3N0cmluZ3xBcnJheX0gYnVuZGxlSWRzIEJ1bmRsZSBJZHMgb2YgdGhlIGFwcHMgdGhhdCBzaG91bGQgYmUgc2VhcmNoZWRcbiAqL1xuXG4gIC8qKlxuICAgKiBMaXN0cyBhcHBsaWNhdGlvbnMgYWNjb3JkaW5nIHRvIHRoZSBvcHRzIGFuZCByZXR1cm5zIHRoZW0gYXMgYSBtYXBcbiAgICogQHBhcmFtIHtMb29rdXBBcHBsaWNhdGlvbk9wdGlvbnN9IG9wdHMgdGhlIGxvb2t1cCBvcHRpb25zIHRoYXQgd2FudHMgdG8gYmUgcGFzc2VkXG4gICAqIEByZXR1cm5zIEEgbWFwIG9mIHRoZSBhcHBsaWNhdGlvbnMgd2hpY2ggdGhlIGtleSBpcyB0aGUgYnVuZGxlSWRcbiAgICovXG4gIGFzeW5jIGxvb2t1cEFwcGxpY2F0aW9ucyAob3B0cyA9IHt9KSB7XG4gICAgY29uc3QgcmVxdWVzdCA9IHtcbiAgICAgIENvbW1hbmQ6ICdMb29rdXAnLFxuICAgICAgQ2xpZW50T3B0aW9uczoge31cbiAgICB9O1xuICAgIGlmIChvcHRzLmJ1bmRsZUlkcykge1xuICAgICAgcmVxdWVzdC5DbGllbnRPcHRpb25zLkJ1bmRsZUlEcyA9IF8uaXNTdHJpbmcob3B0cy5idW5kbGVJZHMpID8gW29wdHMuYnVuZGxlSWRzXSA6IG9wdHMuYnVuZGxlSWRzO1xuICAgIH1cbiAgICBpZiAob3B0cy5hcHBsaWNhdGlvblR5cGUpIHtcbiAgICAgIHJlcXVlc3QuQ2xpZW50T3B0aW9ucy5BcHBsaWNhdGlvblR5cGUgPSBvcHRzLmFwcGxpY2F0aW9uVHlwZTtcbiAgICB9XG4gICAgaWYgKG9wdHMucmV0dXJuQXR0cmlidXRlcykge1xuICAgICAgcmVxdWVzdC5DbGllbnRPcHRpb25zLlJldHVybkF0dHJpYnV0ZXMgPSBvcHRzLnJldHVybkF0dHJpYnV0ZXM7XG4gICAgfVxuXG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdChyZXF1ZXN0KTtcbiAgICBjb25zdCBtZXNzYWdlcyA9IGF3YWl0IHRoaXMuX3dhaXRNZXNzYWdlQ29tcGxldGlvbigpO1xuICAgIGZvciAoY29uc3QgbWVzc2FnZSBvZiBtZXNzYWdlcykge1xuICAgICAgaWYgKG1lc3NhZ2UuTG9va3VwUmVzdWx0KSB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlLkxvb2t1cFJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBMb29rdXBSZXN1bHQgaW4gdGhlIHJlc3BvbnNlOiBSZXNwb25zZTogJHtKU09OLnN0cmluZ2lmeShtZXNzYWdlcyl9YCk7XG4gIH1cblxuICAvKipcbiAgICogVW5pbnN0YWxscyBhbiBhcHBsaWNhdGlvbiBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIGJ1bmRsZUlkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBidW5kbGVJZCBvZiB0aGUgYXBwIHRoYXQgbmVlZHMgdG8gYmUgcGFzc2VkIGZvciB1bmluc3RhbGxhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0gdGltZW91dCBUaGUgdGltZW91dCBiZXR3ZWVuIG1lc3NhZ2VzIHJlY2VpdmVkIGZyb20gdGhlIHBob25lIGFzIHN0YXR1cyB1cGRhdGVzXG4gICAqL1xuICBhc3luYyB1bmluc3RhbGxBcHBsaWNhdGlvbiAoYnVuZGxlSWQsIHRpbWVvdXQgPSAyMDAwMCkge1xuICAgIGNvbnN0IHJlcXVlc3QgPSB7XG4gICAgICBDb21tYW5kOiAnVW5pbnN0YWxsJyxcbiAgICAgIEFwcGxpY2F0aW9uSWRlbnRpZmllcjogYnVuZGxlSWRcbiAgICB9O1xuXG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlLnNlbmRQbGlzdChyZXF1ZXN0KTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5fd2FpdE1lc3NhZ2VDb21wbGV0aW9uKHRpbWVvdXQpO1xuICB9XG5cbiAgYXN5bmMgX3dhaXRNZXNzYWdlQ29tcGxldGlvbiAodGltZW91dCkge1xuICAgIGxldCBtZXNzYWdlcyA9IFtdO1xuICAgIC8vIEp1c3QgYWRkZWQgZm9yIHNhZmV0eS4gVGhpcyBzaG91bGRuJ3QgaGFwcGVuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBOdW1iZXIuTUFYX1NBRkVfSU5URUdFUjsgaSsrKSB7XG4gICAgICBjb25zdCBkYXRhID0gYXdhaXQgdGhpcy5fcGxpc3RTZXJ2aWNlLnJlY2VpdmVQbGlzdCh0aW1lb3V0KTtcbiAgICAgIG1lc3NhZ2VzLnB1c2goZGF0YSk7XG4gICAgICBpZiAodGhpcy5faXNGaW5pc2hlZChkYXRhKSkge1xuICAgICAgICByZXR1cm4gbWVzc2FnZXM7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2lzRmluaXNoZWQgKHJlc3BvbnNlKSB7XG4gICAgaWYgKHJlc3BvbnNlLkVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YTogJHtKU09OLnN0cmluZ2lmeShyZXNwb25zZSl9YCk7XG4gICAgfVxuXG4gICAgaWYgKCFyZXNwb25zZS5TdGF0dXMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3BvbnNlLlN0YXR1cyA9PT0gJ0NvbXBsZXRlJztcbiAgfVxufVxuXG5leHBvcnQgeyBJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UsIElOU1RBTExBVElPTl9QUk9YWV9TRVJWSUNFX05BTUUgfTtcbmV4cG9ydCBkZWZhdWx0IEluc3RhbGxhdGlvblByb3h5U2VydmljZTtcbiJdLCJmaWxlIjoibGliL2luc3RhbGxhdGlvbi1wcm94eS9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -1,5 +1,7 @@
1
1
  "use strict";
2
2
 
3
+ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
+
3
5
  Object.defineProperty(exports, "__esModule", {
4
6
  value: true
5
7
  });
@@ -7,6 +9,8 @@ exports.default = exports.LOCKDOWN_PORT = exports.Lockdown = void 0;
7
9
 
8
10
  require("source-map-support/register");
9
11
 
12
+ var _lodash = _interopRequireDefault(require("lodash"));
13
+
10
14
  var _baseService = require("../base-service");
11
15
 
12
16
  const LOCKDOWN_PORT = 62078;
@@ -53,19 +57,18 @@ class Lockdown extends _baseService.BaseServicePlist {
53
57
  }
54
58
 
55
59
  async getValue(query = {}, timeout = 5000) {
56
- let plist = {
60
+ const plist = Object.assign({
57
61
  Label: LABEL,
58
62
  ProtocolVersion: PROTOCOL_VERSION,
59
63
  Request: 'GetValue'
60
- };
61
- Object.assign(plist, query);
64
+ }, query);
62
65
  const data = await this._plistService.sendPlistAndReceive(plist, timeout);
63
66
 
64
- if (data.Request === 'GetValue' && data.Value) {
67
+ if ((data === null || data === void 0 ? void 0 : data.Request) === 'GetValue' && !_lodash.default.isNil(data === null || data === void 0 ? void 0 : data.Value)) {
65
68
  return data.Value;
66
- } else {
67
- throw new Error(`Unexpected data: ${JSON.stringify(data)}`);
68
69
  }
70
+
71
+ throw new Error(`Unexpected data received for ${JSON.stringify(query)} request: ` + JSON.stringify(data));
69
72
  }
70
73
 
71
74
  async startService(serviceName, timeout = 5000) {
@@ -90,4 +93,4 @@ var _default = Lockdown;
90
93
  exports.default = _default;require('source-map-support').install();
91
94
 
92
95
 
93
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2NrZG93bi9pbmRleC5qcyJdLCJuYW1lcyI6WyJMT0NLRE9XTl9QT1JUIiwiTEFCRUwiLCJQUk9UT0NPTF9WRVJTSU9OIiwiTG9ja2Rvd24iLCJCYXNlU2VydmljZVBsaXN0IiwicXVlcnlUeXBlIiwidGltZW91dCIsImRhdGEiLCJfcGxpc3RTZXJ2aWNlIiwic2VuZFBsaXN0QW5kUmVjZWl2ZSIsIkxhYmVsIiwiUHJvdG9jb2xWZXJzaW9uIiwiUmVxdWVzdCIsIlR5cGUiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydFNlc3Npb24iLCJob3N0SUQiLCJzeXN0ZW1CVUlEIiwiSG9zdElEIiwiU3lzdGVtQlVJRCIsIlNlc3Npb25JRCIsInNlc3Npb25JRCIsImVuYWJsZVNlc3Npb25TU0wiLCJFbmFibGVTZXNzaW9uU1NMIiwiaG9zdFByaXZhdGVLZXkiLCJob3N0Q2VydGlmaWNhdGUiLCJnZXRWYWx1ZSIsInF1ZXJ5IiwicGxpc3QiLCJPYmplY3QiLCJhc3NpZ24iLCJWYWx1ZSIsInN0YXJ0U2VydmljZSIsInNlcnZpY2VOYW1lIiwiU2VydmljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsYUFBYSxHQUFHLEtBQXRCOztBQUNBLE1BQU1DLEtBQUssR0FBRyxTQUFkO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUcsQ0FBekI7O0FBRUEsTUFBTUMsUUFBTixTQUF1QkMsNkJBQXZCLENBQXdDO0FBTXRDLFFBQU1DLFNBQU4sQ0FBaUJDLE9BQU8sR0FBRyxJQUEzQixFQUFpQztBQUMvQixVQUFNQyxJQUFJLEdBQUcsTUFBTSxLQUFLQyxhQUFMLENBQW1CQyxtQkFBbkIsQ0FBdUM7QUFDeERDLE1BQUFBLEtBQUssRUFBRVQsS0FEaUQ7QUFFeERVLE1BQUFBLGVBQWUsRUFBRVQsZ0JBRnVDO0FBR3hEVSxNQUFBQSxPQUFPLEVBQUU7QUFIK0MsS0FBdkMsRUFJaEJOLE9BSmdCLENBQW5COztBQUtBLFFBQUlDLElBQUks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QUNMLGFBQU9BLElBQVA7QUFDRDtBQUNGOztBQWxHcUM7OztlQXNHekJKLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlU2VydmljZVBsaXN0IH0gZnJvbSAnLi4vYmFzZS1zZXJ2aWNlJztcblxuXG5jb25zdCBMT0NLRE9XTl9QT1JUID0gNjIwNzg7XG5jb25zdCBMQUJFTCA9ICd1c2JtdXhkJztcbmNvbnN0IFBST1RPQ09MX1ZFUlNJT04gPSAyO1xuXG5jbGFzcyBMb2NrZG93biBleHRlbmRzIEJhc2VTZXJ2aWNlUGxpc3Qge1xuICAvKipcbiAgICogTWFrZXMgYSBxdWVyeSB0eXBlIHJlcXVlc3QgdG8gbG9ja2Rvd25cbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gbG9ja2Rvd25kXG4gICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAqL1xuICBhc3luYyBxdWVyeVR5cGUgKHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3RBbmRSZWNlaXZlKHtcbiAgICAgIExhYmVsOiBMQUJFTCxcbiAgICAgIFByb3RvY29sVmVyc2lvbjogUFJPVE9DT0xfVkVSU0lPTixcbiAgICAgIFJlcXVlc3Q6ICdRdWVyeVR5cGUnXG4gICAgfSwgdGltZW91dCk7XG4gICAgaWYgKGRhdGEuUmVxdWVzdCA9PT0gJ1F1ZXJ5VHlwZScgJiYgZGF0YS5UeXBlID09PSAnY29tLmFwcGxlLm1vYmlsZS5sb2NrZG93bicpIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIGEgbG9ja2Rvd24gc2Vzc2lvbiB3aGljaCBhbGxvd3MgdG8gdXNlIGNlcnRhaW4gYXBpc1xuICAgKiBAcGFyYW0ge3N0cmluZ30gaG9zdElEIHRoZSBob3N0IGlkIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgcGFpciByZWNvcmRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHN5c3RlbUJVSUQgdGhlIGhvc3QgQlVJRCB3aGljaCBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIHBhaXIgcmVjb3JkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZW91dD01MDAwXSB0aGUgdGltZW91dCBvZiByZWNlaXZpbmcgYSByZXNwb25zZSBmcm9tIGxvY2tkb3duZFxuICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgKi9cbiAgYXN5bmMgc3RhcnRTZXNzaW9uIChob3N0SUQsIHN5c3RlbUJVSUQsIHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3RBbmRSZWNlaXZlKHtcbiAgICAgIExhYmVsOiBMQUJFTCxcbiAgICAgIFByb3RvY29sVmVyc2lvbjogUFJPVE9DT0xfVkVSU0lPTixcbiAgICAgIFJlcXVlc3Q6ICdTdGFydFNlc3Npb24nLFxuICAgICAgSG9zdElEOiBob3N0SUQsXG4gICAgICBTeXN0ZW1CVUlEOiBzeXN0ZW1CVUlEXG4gICAgfSwgdGltZW91dCk7XG5cbiAgICBpZiAoZGF0YS5SZXF1ZXN0ID09PSAnU3RhcnRTZXNzaW9uJyAmJiBkYXRhLlNlc3Npb25JRCkge1xuICAgICAgcmV0dXJuIHsgc2Vzc2lvbklEOiBkYXRhLlNlc3Npb25JRCwgZW5hYmxlU2Vzc2lvblNTTDogZGF0YS5FbmFibGVTZXNzaW9uU1NMIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFbmFibGVzIHNzbCBpbiB0aGUgdW5kZXJseWluZyBzb2NrZXQgc29ja2V0IGNvbm5lY3Rpb25cbiAgICogQHBhcmFtIHtCdWZmZXJ9IGhvc3RQcml2YXRlS2V5IHRoZSBwcml2YXRlIGtleSB3aGljaCBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIHBhaXIgcmVjb3JkXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBob3N0Q2VydGlmaWNhdGUgdGhlIGNlcnRpZmljYXRlIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgcGFpciByZWNvcmRcbiAgICovXG4gIGVuYWJsZVNlc3Npb25TU0wgKGhvc3RQcml2YXRlS2V5LCBob3N0Q2VydGlmaWNhdGUpIHtcbiAgICB0aGlzLl9wbGlzdFNlcnZpY2UuZW5hYmxlU2Vzc2lvblNTTChob3N0UHJpdmF0ZUtleSwgaG9zdENlcnRpZmljYXRlKTtcbiAgfVxuXG4gIC8qKlxuICAqIEB0eXBlZGVmIHtPYmplY3R9IFF1ZXJ5XG4gICpcbiAgKiBAcHJvcGVydHkgez9zdHJpbmd9IGtleSBUaGUga2V5IHdlIHdhbnQgdG8gYWNjZXNzXG4gICogQHByb3BlcnR5IHs/c3RyaW5nfSBkb21pYW4gVGhlIGRvbWFpbiB3aGVyZSB3ZSB3YW50IHRvIGFjY2Vzc1xuICAqL1xuXG4gIC8qKlxuICAgKiBHZXRzIHZhbHVlcyBmcm9tIHRoZSBkZXZpY2UgYWNjb3JkaW5nIHRvIHRoZSBxdWVyeSBwYXNzZWRcbiAgICogQHBhcmFtIHtRdWVyeX0gcXVlcnkgdGhlIHF1ZXJ5IHdlIHdhbnQgdG8gc2VuZCB0byBsb2NrZG93bmRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gbG9ja2Rvd25kXG4gICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAqL1xuICBhc3luYyBnZXRWYWx1ZSAocXVlcnkgPSB7fSwgdGltZW91dCA9IDUwMDApIHtcbiAgICBsZXQgcGxpc3QgPSB7XG4gICAgICBMYWJlbDogTEFCRUwsXG4gICAgICBQcm90b2NvbFZlcnNpb246IFBST1RPQ09MX1ZFUlNJT04sXG4gICAgICBSZXF1ZXN0OiAnR2V0VmFsdWUnXG4gICAgfTtcbiAgICBPYmplY3QuYXNzaWduKHBsaXN0LCBxdWVyeSk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3RBbmRSZWNlaXZlKHBsaXN0LCB0aW1lb3V0KTtcbiAgICBpZiAoZGF0YS5SZXF1ZXN0ID09PSAnR2V0VmFsdWUnICYmIGRhdGEuVmFsdWUpIHtcbiAgICAgIHJldHVybiBkYXRhLlZhbHVlO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RhcnRzIGEgc2VydmljZSBvbiB0aGUgcGhvbmUgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gc2VydmljZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHNlcnZpY2Ugd2hpY2ggd2Ugd2FudCB0byBzdGFydFxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVvdXQ9NTAwMF0gdGhlIHRpbWVvdXQgb2YgcmVjZWl2aW5nIGEgcmVzcG9uc2UgZnJvbSBsb2NrZG93bmRcbiAgICogQHJldHVybnMge09iamVjdH1cbiAgICovXG4gIGFzeW5jIHN0YXJ0U2VydmljZSAoc2VydmljZU5hbWUsIHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3RBbmRSZWNlaXZlKHtcbiAgICAgIExhYmVsOiBMQUJFTCxcbiAgICAgIFByb3RvY29sVmVyc2lvbjogUFJPVE9DT0xfVkVSU0lPTixcbiAgICAgIFJlcXVlc3Q6ICdTdGFydFNlcnZpY2UnLFxuICAgICAgU2VydmljZTogc2VydmljZU5hbWUsXG4gICAgfSwgdGltZW91dCk7XG5cbiAgICBpZiAoZGF0YS5FcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBkYXRhO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgeyBMb2NrZG93biwgTE9DS0RPV05fUE9SVCB9O1xuZXhwb3J0IGRlZmF1bHQgTG9ja2Rvd247XG4iXSwiZmlsZSI6ImxpYi9sb2NrZG93bi9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
96
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9sb2NrZG93bi9pbmRleC5qcyJdLCJuYW1lcyI6WyJMT0NLRE9XTl9QT1JUIiwiTEFCRUwiLCJQUk9UT0NPTF9WRVJTSU9OIiwiTG9ja2Rvd24iLCJCYXNlU2VydmljZVBsaXN0IiwicXVlcnlUeXBlIiwidGltZW91dCIsImRhdGEiLCJfcGxpc3RTZXJ2aWNlIiwic2VuZFBsaXN0QW5kUmVjZWl2ZSIsIkxhYmVsIiwiUHJvdG9jb2xWZXJzaW9uIiwiUmVxdWVzdCIsIlR5cGUiLCJFcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGFydFNlc3Npb24iLCJob3N0SUQiLCJzeXN0ZW1CVUlEIiwiSG9zdElEIiwiU3lzdGVtQlVJRCIsIlNlc3Npb25JRCIsInNlc3Npb25JRCIsImVuYWJsZVNlc3Npb25TU0wiLCJFbmFibGVTZXNzaW9uU1NMIiwiaG9zdFByaXZhdGVLZXkiLCJob3N0Q2VydGlmaWNhdGUiLCJnZXRWYWx1ZSIsInF1ZXJ5IiwicGxpc3QiLCJPYmplY3QiLCJhc3NpZ24iLCJfIiwiaXNOaWwiLCJWYWx1ZSIsInN0YXJ0U2VydmljZSIsInNlcnZpY2VOYW1lIiwiU2VydmljZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFHQSxNQUFNQSxhQUFhLEdBQUcsS0FBdEI7O0FBQ0EsTUFBTUMsS0FBSyxHQUFHLFNBQWQ7QUFDQSxNQUFNQyxnQkFBZ0IsR0FBRyxDQUF6Qjs7QUFFQSxNQUFNQyxRQUFOLFNBQXVCQyw2QkFBdkIsQ0FBd0M7QUFNdEMsUUFBTUMsU0FBTixDQUFpQkMsT0FBTyxHQUFHLElBQTNCLEVBQWlDO0FBQy9CLFVBQU1DLElBQUksR0FBRyxNQUFNLEtBQUtDLGFBQUwsQ0FBbUJDLG1CQUFuQixDQUF1QztBQUN4REMsTUFBQUEsS0FBSyxFQUFFVCxLQURpRDtBQUV4RFUsTUFBQUEsZUFBZSxFQUFFVCxnQkFGdUM7QUFHeERVLE1BQUFBLE9BQU8sRUFBRTtBQUgrQyxLQUF2QyxFQUloQk4sT0FKZ0IsQ0FB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QU9BLFFBQUlDLElBQUksQ0FBQ08sS0FBVCxFQUFnQjtBQUNkLFlBQU0sSUFBSUEsS0FBSixDQUFXLG9CQUFtQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVULElBQWYsQ0FBcUIsRUFBbkQsQ0FBTjtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU9BLElBQVA7QUFDRDtBQUNGOztBQW5HcUM7OztlQXVHekJKLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2VQbGlzdCB9IGZyb20gJy4uL2Jhc2Utc2VydmljZSc7XG5cblxuY29uc3QgTE9DS0RPV05fUE9SVCA9IDYyMDc4O1xuY29uc3QgTEFCRUwgPSAndXNibXV4ZCc7XG5jb25zdCBQUk9UT0NPTF9WRVJTSU9OID0gMjtcblxuY2xhc3MgTG9ja2Rvd24gZXh0ZW5kcyBCYXNlU2VydmljZVBsaXN0IHtcbiAgLyoqXG4gICAqIE1ha2VzIGEgcXVlcnkgdHlwZSByZXF1ZXN0IHRvIGxvY2tkb3duXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZW91dD01MDAwXSB0aGUgdGltZW91dCBvZiByZWNlaXZpbmcgYSByZXNwb25zZSBmcm9tIGxvY2tkb3duZFxuICAgKiBAcmV0dXJucyB7T2JqZWN0fVxuICAgKi9cbiAgYXN5bmMgcXVlcnlUeXBlICh0aW1lb3V0ID0gNTAwMCkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0QW5kUmVjZWl2ZSh7XG4gICAgICBMYWJlbDogTEFCRUwsXG4gICAgICBQcm90b2NvbFZlcnNpb246IFBST1RPQ09MX1ZFUlNJT04sXG4gICAgICBSZXF1ZXN0OiAnUXVlcnlUeXBlJ1xuICAgIH0sIHRpbWVvdXQpO1xuICAgIGlmIChkYXRhLlJlcXVlc3QgPT09ICdRdWVyeVR5cGUnICYmIGRhdGEuVHlwZSA9PT0gJ2NvbS5hcHBsZS5tb2JpbGUubG9ja2Rvd24nKSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBhIGxvY2tkb3duIHNlc3Npb24gd2hpY2ggYWxsb3dzIHRvIHVzZSBjZXJ0YWluIGFwaXNcbiAgICogQHBhcmFtIHtzdHJpbmd9IGhvc3RJRCB0aGUgaG9zdCBpZCB3aGljaCBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIHBhaXIgcmVjb3JkXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBzeXN0ZW1CVUlEIHRoZSBob3N0IEJVSUQgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBwYWlyIHJlY29yZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVvdXQ9NTAwMF0gdGhlIHRpbWVvdXQgb2YgcmVjZWl2aW5nIGEgcmVzcG9uc2UgZnJvbSBsb2NrZG93bmRcbiAgICogQHJldHVybnMge09iamVjdH1cbiAgICovXG4gIGFzeW5jIHN0YXJ0U2Vzc2lvbiAoaG9zdElELCBzeXN0ZW1CVUlELCB0aW1lb3V0ID0gNTAwMCkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0QW5kUmVjZWl2ZSh7XG4gICAgICBMYWJlbDogTEFCRUwsXG4gICAgICBQcm90b2NvbFZlcnNpb246IFBST1RPQ09MX1ZFUlNJT04sXG4gICAgICBSZXF1ZXN0OiAnU3RhcnRTZXNzaW9uJyxcbiAgICAgIEhvc3RJRDogaG9zdElELFxuICAgICAgU3lzdGVtQlVJRDogc3lzdGVtQlVJRFxuICAgIH0sIHRpbWVvdXQpO1xuXG4gICAgaWYgKGRhdGEuUmVxdWVzdCA9PT0gJ1N0YXJ0U2Vzc2lvbicgJiYgZGF0YS5TZXNzaW9uSUQpIHtcbiAgICAgIHJldHVybiB7IHNlc3Npb25JRDogZGF0YS5TZXNzaW9uSUQsIGVuYWJsZVNlc3Npb25TU0w6IGRhdGEuRW5hYmxlU2Vzc2lvblNTTCB9O1xuICAgIH0gZWxzZSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogRW5hYmxlcyBzc2wgaW4gdGhlIHVuZGVybHlpbmcgc29ja2V0IHNvY2tldCBjb25uZWN0aW9uXG4gICAqIEBwYXJhbSB7QnVmZmVyfSBob3N0UHJpdmF0ZUtleSB0aGUgcHJpdmF0ZSBrZXkgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBwYWlyIHJlY29yZFxuICAgKiBAcGFyYW0ge0J1ZmZlcn0gaG9zdENlcnRpZmljYXRlIHRoZSBjZXJ0aWZpY2F0ZSB3aGljaCBjYW4gYmUgcmV0cmlldmVkIGZyb20gdGhlIHBhaXIgcmVjb3JkXG4gICAqL1xuICBlbmFibGVTZXNzaW9uU1NMIChob3N0UHJpdmF0ZUtleSwgaG9zdENlcnRpZmljYXRlKSB7XG4gICAgdGhpcy5fcGxpc3RTZXJ2aWNlLmVuYWJsZVNlc3Npb25TU0woaG9zdFByaXZhdGVLZXksIGhvc3RDZXJ0aWZpY2F0ZSk7XG4gIH1cblxuICAvKipcbiAgKiBAdHlwZWRlZiB7T2JqZWN0fSBRdWVyeVxuICAqXG4gICogQHByb3BlcnR5IHs/c3RyaW5nfSBrZXkgVGhlIGtleSB3ZSB3YW50IHRvIGFjY2Vzc1xuICAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZG9tYWluIFRoZSBkb21haW4gd2hlcmUgd2Ugd2FudCB0byBhY2Nlc3NcbiAgKi9cblxuICAvKipcbiAgICogR2V0cyB2YWx1ZXMgZnJvbSB0aGUgZGV2aWNlIGFjY29yZGluZyB0byB0aGUgcXVlcnkgcGFzc2VkXG4gICAqXG4gICAqIEBwYXJhbSB7UXVlcnl9IHF1ZXJ5IHRoZSBxdWVyeSB3ZSB3YW50IHRvIHNlbmQgdG8gbG9ja2Rvd25kXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZW91dD01MDAwXSB0aGUgdGltZW91dCBvZiByZWNlaXZpbmcgYSByZXNwb25zZSBmcm9tIGxvY2tkb3duZFxuICAgKiBAcmV0dXJucyB7Kn0gVGhlIGFjdHVhbCByZXNwb25zZSB2YWx1ZS4gSXQgc2hvdWxkIG5ldmVyIGJlIGBudWxsYCBvciBgdW5kZWZpbmVkYFxuICAgKiBAdGhyb3dzIHtFcnJvcn0gSWYgYW4gdW5leHBlY3RlZCByZXNwb25zZSBpcyByZWNlaXZlZCBmcm9tIGxvY2tkb3duZFxuICAgKi9cbiAgYXN5bmMgZ2V0VmFsdWUgKHF1ZXJ5ID0ge30sIHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3QgcGxpc3QgPSBPYmplY3QuYXNzaWduKHtcbiAgICAgIExhYmVsOiBMQUJFTCxcbiAgICAgIFByb3RvY29sVmVyc2lvbjogUFJPVE9DT0xfVkVSU0lPTixcbiAgICAgIFJlcXVlc3Q6ICdHZXRWYWx1ZSdcbiAgICB9LCBxdWVyeSk7XG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHRoaXMuX3BsaXN0U2VydmljZS5zZW5kUGxpc3RBbmRSZWNlaXZlKHBsaXN0LCB0aW1lb3V0KTtcbiAgICBpZiAoZGF0YT8uUmVxdWVzdCA9PT0gJ0dldFZhbHVlJyAmJiAhXy5pc05pbChkYXRhPy5WYWx1ZSkpIHtcbiAgICAgIHJldHVybiBkYXRhLlZhbHVlO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YSByZWNlaXZlZCBmb3IgJHtKU09OLnN0cmluZ2lmeShxdWVyeSl9IHJlcXVlc3Q6IGAgK1xuICAgICAgSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIFN0YXJ0cyBhIHNlcnZpY2Ugb24gdGhlIHBob25lIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlcnZpY2VOYW1lIHRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIHdoaWNoIHdlIHdhbnQgdG8gc3RhcnRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gbG9ja2Rvd25kXG4gICAqIEByZXR1cm5zIHtPYmplY3R9XG4gICAqL1xuICBhc3luYyBzdGFydFNlcnZpY2UgKHNlcnZpY2VOYW1lLCB0aW1lb3V0ID0gNTAwMCkge1xuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLl9wbGlzdFNlcnZpY2Uuc2VuZFBsaXN0QW5kUmVjZWl2ZSh7XG4gICAgICBMYWJlbDogTEFCRUwsXG4gICAgICBQcm90b2NvbFZlcnNpb246IFBST1RPQ09MX1ZFUlNJT04sXG4gICAgICBSZXF1ZXN0OiAnU3RhcnRTZXJ2aWNlJyxcbiAgICAgIFNlcnZpY2U6IHNlcnZpY2VOYW1lLFxuICAgIH0sIHRpbWVvdXQpO1xuXG4gICAgaWYgKGRhdGEuRXJyb3IpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWApO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHsgTG9ja2Rvd24sIExPQ0tET1dOX1BPUlQgfTtcbmV4cG9ydCBkZWZhdWx0IExvY2tkb3duO1xuIl0sImZpbGUiOiJsaWIvbG9ja2Rvd24vaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -51,6 +51,7 @@ async function startWebInspectorService(udid, opts = {}) {
51
51
  const verbose = !!opts.verbose;
52
52
  const verboseHexDump = !!opts.verboseHexDump;
53
53
  const socketChunkSize = opts.socketChunkSize;
54
+ const maxFrameLength = opts.maxFrameLength;
54
55
 
55
56
  const semverVersion = _semver.default.coerce(osVersion);
56
57
 
@@ -65,7 +66,8 @@ async function startWebInspectorService(udid, opts = {}) {
65
66
  socketChunkSize,
66
67
  verbose,
67
68
  verboseHexDump,
68
- socketClient: opts.socket
69
+ socketClient: opts.socket,
70
+ maxFrameLength
69
71
  });
70
72
  }
71
73
 
@@ -76,7 +78,8 @@ async function startWebInspectorService(udid, opts = {}) {
76
78
  socketChunkSize,
77
79
  verbose,
78
80
  verboseHexDump,
79
- socketClient: socket
81
+ socketClient: socket,
82
+ maxFrameLength
80
83
  });
81
84
  }
82
85
 
@@ -117,4 +120,4 @@ async function startService(udid, serviceName, socket) {
117
120
  }require('source-map-support').install();
118
121
 
119
122
 
120
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy5qcyJdLCJuYW1lcyI6WyJzdGFydFN5c2xvZ1NlcnZpY2UiLCJ1ZGlkIiwib3B0cyIsInNvY2tldCIsInN0YXJ0U2VydmljZSIsIlNZU0xPR19TRVJWSUNFX05BTUUiLCJTeXNsb2dTZXJ2aWNlIiwic3RhcnRTaW11bGF0ZUxvY2F0aW9uU2VydmljZSIsIlNJTVVMQVRFX0xPQ0FUSU9OX1NFUlZJQ0VfTkFNRSIsIlNpbXVsYXRlTG9jYXRpb25TZXJ2aWNlIiwic3RhcnRXZWJJbnNwZWN0b3JTZXJ2aWNlIiwib3NWZXJzaW9uIiwiaXNTaW11bGF0b3IiLCJ2ZXJib3NlIiwidmVyYm9zZUhleER1bXAiLCJzb2NrZXRDaHVua1NpemUiLCJzZW12ZXJWZXJzaW9uIiwic2VtdmVyIiwiY29lcmNlIiwiRXJyb3IiLCJXZWJJbnNwZWN0b3JTZXJ2aWNlIiwibWFqb3JPc1ZlcnNpb24iLCJtYWpvciIsInNvY2tldENsaWVudCIsIldFQl9JTlNQRUNUT1JfU0VSVklDRV9OQU1FIiwidW5kZWZpbmVkIiwic3RhcnRJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UiLCJJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIiwiSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlIiwiUGxpc3RTZXJ2aWNlIiwic3RhcnRBZmNTZXJ2aWNlIiwiQUZDX1NFUlZJQ0VfTkFNRSIsIkFmY1NlcnZpY2UiLCJzdGFydE5vdGlmaWNhdGlvblByb3h5U2VydmljZSIsIk5PVElGSUNBVElPTl9QUk9YWV9TRVJWSUNFX05BTUUiLCJOb3RpZmljYXRpb25Qcm94eVNlcnZpY2UiLCJzdGFydEhvdXNlQXJyZXN0U2VydmljZSIsIkhPVVNFX0FSUkVTVF9TRVJWSUNFX05BTUUiLCJIb3VzZUFycmVzdFNlcnZpY2UiLCJzZXJ2aWNlTmFtZSIsImxvY2tkb3duIiwic2VydmljZSIsIkVuYWJsZVNlcnZpY2VTU0wiLCJQb3J0IiwiY2xvc2UiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7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ZXNDb250ZW50IjpbImltcG9ydCB7IGNvbm5lY3RQb3J0LCBjb25uZWN0UG9ydFNTTCwgc3RhcnRMb2NrZG93blNlc3Npb24sIGdldE9TVmVyc2lvbiB9IGZyb20gJy4vdXRpbGl0aWVzJztcbmltcG9ydCB7IFN5c2xvZ1NlcnZpY2UsIFNZU0xPR19TRVJWSUNFX05BTUUgfSBmcm9tICcuL3N5c2xvZyc7XG5pbXBvcnQgeyBTaW11bGF0ZUxvY2F0aW9uU2VydmljZSwgU0lNVUxBVEVfTE9DQVRJT05fU0VSVklDRV9OQU1FIH0gZnJvbSAnLi9zaW11bGF0ZWxvY2F0aW9uJztcbmltcG9ydCB7IFdlYkluc3BlY3RvclNlcnZpY2UsIFdFQl9JTlNQRUNUT1JfU0VSVklDRV9OQU1FIH0gZnJvbSAnLi93ZWJpbnNwZWN0b3InO1xuaW1wb3J0IHsgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlLCBJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIH0gZnJvbSAnLi9pbnN0YWxsYXRpb24tcHJveHknO1xuaW1wb3J0IHsgQWZjU2VydmljZSwgQUZDX1NFUlZJQ0VfTkFNRSB9IGZyb20gJy4vYWZjJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblByb3h5U2VydmljZSwgTk9USUZJQ0FUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXByb3h5JztcbmltcG9ydCB7IEhvdXNlQXJyZXN0U2VydmljZSwgSE9VU0VfQVJSRVNUX1NFUlZJQ0VfTkFNRSB9IGZyb20gJy4vaG91c2UtYXJyZXN0JztcbmltcG9ydCBQbGlzdFNlcnZpY2UgZnJvbSAnLi9wbGlzdC1zZXJ2aWNlJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcblxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFN5c2xvZ1NlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgU1lTTE9HX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IFN5c2xvZ1NlcnZpY2Uoc29ja2V0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRTaW11bGF0ZUxvY2F0aW9uU2VydmljZSAodWRpZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBTSU1VTEFURV9MT0NBVElPTl9TRVJWSUNFX05BTUUsIG9wdHMuc29ja2V0KTtcbiAgcmV0dXJuIG5ldyBTaW11bGF0ZUxvY2F0aW9uU2VydmljZShzb2NrZXQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFdlYkluc3BlY3RvclNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBvc1ZlcnNpb24gPSBvcHRzLm9zVmVyc2lvbiB8fCBhd2FpdCBnZXRPU1ZlcnNpb24odWRpZCwgb3B0cy5zb2NrZXQpO1xuICBjb25zdCBpc1NpbXVsYXRvciA9ICEhb3B0cy5pc1NpbXVsYXRvcjtcbiAgY29uc3QgdmVyYm9zZSA9ICEhb3B0cy52ZXJib3NlO1xuICBjb25zdCB2ZXJib3NlSGV4RHVtcCA9ICEhb3B0cy52ZXJib3NlSGV4RHVtcDtcbiAgY29uc3Qgc29ja2V0Q2h1bmtTaXplID0gb3B0cy5zb2NrZXRDaHVua1NpemU7XG4gIGNvbnN0IHNlbXZlclZlcnNpb24gPSBzZW12ZXIuY29lcmNlKG9zVmVyc2lvbik7XG4gIGlmICghc2VtdmVyVmVyc2lvbikge1xuICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGNyZWF0ZSBhIHNlbXZlciB2ZXJzaW9uIG91dCBvZiAnJHtvc1ZlcnNpb259J2ApO1xuICB9XG4gIGlmIChvcHRzLnNvY2tldCkge1xuICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yU2VydmljZSh7XG4gICAgICBtYWpvck9zVmVyc2lvbjogc2VtdmVyVmVyc2lvbi5tYWpvcixcbiAgICAgIGlzU2ltdWxhdG9yLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgdmVyYm9zZSxcbiAgICAgIHZlcmJvc2VIZXhEdW1wLFxuICAgICAgc29ja2V0Q2xpZW50OiBvcHRzLnNvY2tldCxcbiAgICB9KTtcbiAgfVxuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgV0VCX0lOU1BFQ1RPUl9TRVJWSUNFX05BTUUsIHVuZGVmaW5lZCk7XG4gIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yU2VydmljZSh7XG4gICAgbWFqb3JPc1ZlcnNpb246IHNlbXZlclZlcnNpb24ubWFqb3IsXG4gICAgaXNTaW11bGF0b3IsXG4gICAgc29ja2V0Q2h1bmtTaXplLFxuICAgIHZlcmJvc2UsXG4gICAgdmVyYm9zZUhleER1bXAsXG4gICAgc29ja2V0Q2xpZW50OiBzb2NrZXQsXG4gIH0pO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydEluc3RhbGxhdGlvblByb3h5U2VydmljZSAodWRpZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FLCBvcHRzLnNvY2tldCk7XG4gIHJldHVybiBuZXcgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlKG5ldyBQbGlzdFNlcnZpY2Uoc29ja2V0KSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0QWZjU2VydmljZSAodWRpZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBBRkNfU0VSVklDRV9OQU1FLCBvcHRzLnNvY2tldCk7XG4gIHJldHVybiBuZXcgQWZjU2VydmljZShzb2NrZXQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydE5vdGlmaWNhdGlvblByb3h5U2VydmljZSAodWRpZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBOT1RJRklDQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FLCBvcHRzLnNvY2tldCk7XG4gIHJldHVybiBuZXcgTm90aWZpY2F0aW9uUHJveHlTZXJ2aWNlKHNvY2tldCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0SG91c2VBcnJlc3RTZXJ2aWNlICh1ZGlkLCBvcHRzID0ge30pIHtcbiAgY29uc3Qgc29ja2V0ID0gYXdhaXQgc3RhcnRTZXJ2aWNlKHVkaWQsIEhPVVNFX0FSUkVTVF9TRVJWSUNFX05BTUUsIG9wdHMuc29ja2V0KTtcbiAgcmV0dXJuIG5ldyBIb3VzZUFycmVzdFNlcnZpY2Uoc29ja2V0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXJ2aWNlICh1ZGlkLCBzZXJ2aWNlTmFtZSwgc29ja2V0KSB7XG4gIGNvbnN0IGxvY2tkb3duID0gYXdhaXQgc3RhcnRMb2NrZG93blNlc3Npb24odWRpZCwgc29ja2V0KTtcbiAgdHJ5IHtcbiAgICBjb25zdCBzZXJ2aWNlID0gYXdhaXQgbG9ja2Rvd24uc3RhcnRTZXJ2aWNlKHNlcnZpY2VOYW1lKTtcbiAgICBpZiAoc2VydmljZS5FbmFibGVTZXJ2aWNlU1NMKSB7XG4gICAgICByZXR1cm4gYXdhaXQgY29ubmVjdFBvcnRTU0wodWRpZCwgc2VydmljZS5Qb3J0LCBzb2NrZXQpO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYXdhaXQgY29ubmVjdFBvcnQodWRpZCwgc2VydmljZS5Qb3J0LCBzb2NrZXQpO1xuICAgIH1cbiAgfSBmaW5hbGx5IHtcbiAgICBsb2NrZG93bi5jbG9zZSgpO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIHN0YXJ0U3lzbG9nU2VydmljZSwgc3RhcnRXZWJJbnNwZWN0b3JTZXJ2aWNlLFxuICBzdGFydEluc3RhbGxhdGlvblByb3h5U2VydmljZSwgc3RhcnRTaW11bGF0ZUxvY2F0aW9uU2VydmljZSxcbiAgc3RhcnRBZmNTZXJ2aWNlLCBzdGFydE5vdGlmaWNhdGlvblByb3h5U2VydmljZSxcbiAgc3RhcnRIb3VzZUFycmVzdFNlcnZpY2Vcbn07XG4iXSwiZmlsZSI6ImxpYi9zZXJ2aWNlcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
123
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zZXJ2aWNlcy5qcyJdLCJuYW1lcyI6WyJzdGFydFN5c2xvZ1NlcnZpY2UiLCJ1ZGlkIiwib3B0cyIsInNvY2tldCIsInN0YXJ0U2VydmljZSIsIlNZU0xPR19TRVJWSUNFX05BTUUiLCJTeXNsb2dTZXJ2aWNlIiwic3RhcnRTaW11bGF0ZUxvY2F0aW9uU2VydmljZSIsIlNJTVVMQVRFX0xPQ0FUSU9OX1NFUlZJQ0VfTkFNRSIsIlNpbXVsYXRlTG9jYXRpb25TZXJ2aWNlIiwic3RhcnRXZWJJbnNwZWN0b3JTZXJ2aWNlIiwib3NWZXJzaW9uIiwiaXNTaW11bGF0b3IiLCJ2ZXJib3NlIiwidmVyYm9zZUhleER1bXAiLCJzb2NrZXRDaHVua1NpemUiLCJtYXhGcmFtZUxlbmd0aCIsInNlbXZlclZlcnNpb24iLCJzZW12ZXIiLCJjb2VyY2UiLCJFcnJvciIsIldlYkluc3BlY3RvclNlcnZpY2UiLCJtYWpvck9zVmVyc2lvbiIsIm1ham9yIiwic29ja2V0Q2xpZW50IiwiV0VCX0lOU1BFQ1RPUl9TRVJWSUNFX05BTUUiLCJ1bmRlZmluZWQiLCJzdGFydEluc3RhbGxhdGlvblByb3h5U2VydmljZSIsIklOU1RBTExBVElPTl9QUk9YWV9TRVJWSUNFX05BTUUiLCJJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UiLCJQbGlzdFNlcnZpY2UiLCJzdGFydEFmY1NlcnZpY2UiLCJBRkNfU0VSVklDRV9OQU1FIiwiQWZjU2VydmljZSIsInN0YXJ0Tm90aWZpY2F0aW9uUHJveHlTZXJ2aWNlIiwiTk9USUZJQ0FUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSIsIk5vdGlmaWNhdGlvblByb3h5U2VydmljZSIsInN0YXJ0SG91c2VBcnJlc3RTZXJ2aWNlIiwiSE9VU0VfQVJSRVNUX1NFUlZJQ0VfTkFNRSIsIkhvdXNlQXJyZXN0U2VydmljZSIsInNlcnZpY2VOYW1lIiwibG9ja2Rvd24iLCJzZXJ2aWNlIiwiRW5hYmxlU2VydmljZVNTTCIsIlBvcnQiLCJjbG9zZSJdLCJtYXBw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RSxJQUExQixFQUFnQ3pDLE1BQWhDLENBQWI7QUFDRDtBQUNGLEdBUEQsU0FPVTtBQUNSc0MsSUFBQUEsUUFBUSxDQUFDSSxLQUFUO0FBQ0Q7QUFDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNvbm5lY3RQb3J0LCBjb25uZWN0UG9ydFNTTCwgc3RhcnRMb2NrZG93blNlc3Npb24sIGdldE9TVmVyc2lvbiB9IGZyb20gJy4vdXRpbGl0aWVzJztcbmltcG9ydCB7IFN5c2xvZ1NlcnZpY2UsIFNZU0xPR19TRVJWSUNFX05BTUUgfSBmcm9tICcuL3N5c2xvZyc7XG5pbXBvcnQgeyBTaW11bGF0ZUxvY2F0aW9uU2VydmljZSwgU0lNVUxBVEVfTE9DQVRJT05fU0VSVklDRV9OQU1FIH0gZnJvbSAnLi9zaW11bGF0ZWxvY2F0aW9uJztcbmltcG9ydCB7IFdlYkluc3BlY3RvclNlcnZpY2UsIFdFQl9JTlNQRUNUT1JfU0VSVklDRV9OQU1FIH0gZnJvbSAnLi93ZWJpbnNwZWN0b3InO1xuaW1wb3J0IHsgSW5zdGFsbGF0aW9uUHJveHlTZXJ2aWNlLCBJTlNUQUxMQVRJT05fUFJPWFlfU0VSVklDRV9OQU1FIH0gZnJvbSAnLi9pbnN0YWxsYXRpb24tcHJveHknO1xuaW1wb3J0IHsgQWZjU2VydmljZSwgQUZDX1NFUlZJQ0VfTkFNRSB9IGZyb20gJy4vYWZjJztcbmltcG9ydCB7IE5vdGlmaWNhdGlvblByb3h5U2VydmljZSwgTk9USUZJQ0FUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSB9IGZyb20gJy4vbm90aWZpY2F0aW9uLXByb3h5JztcbmltcG9ydCB7IEhvdXNlQXJyZXN0U2VydmljZSwgSE9VU0VfQVJSRVNUX1NFUlZJQ0VfTkFNRSB9IGZyb20gJy4vaG91c2UtYXJyZXN0JztcbmltcG9ydCBQbGlzdFNlcnZpY2UgZnJvbSAnLi9wbGlzdC1zZXJ2aWNlJztcbmltcG9ydCBzZW12ZXIgZnJvbSAnc2VtdmVyJztcblxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFN5c2xvZ1NlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgU1lTTE9HX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IFN5c2xvZ1NlcnZpY2Uoc29ja2V0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRTaW11bGF0ZUxvY2F0aW9uU2VydmljZSAodWRpZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBTSU1VTEFURV9MT0NBVElPTl9TRVJWSUNFX05BTUUsIG9wdHMuc29ja2V0KTtcbiAgcmV0dXJuIG5ldyBTaW11bGF0ZUxvY2F0aW9uU2VydmljZShzb2NrZXQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydFdlYkluc3BlY3RvclNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBvc1ZlcnNpb24gPSBvcHRzLm9zVmVyc2lvbiB8fCBhd2FpdCBnZXRPU1ZlcnNpb24odWRpZCwgb3B0cy5zb2NrZXQpO1xuICBjb25zdCBpc1NpbXVsYXRvciA9ICEhb3B0cy5pc1NpbXVsYXRvcjtcbiAgY29uc3QgdmVyYm9zZSA9ICEhb3B0cy52ZXJib3NlO1xuICBjb25zdCB2ZXJib3NlSGV4RHVtcCA9ICEhb3B0cy52ZXJib3NlSGV4RHVtcDtcbiAgY29uc3Qgc29ja2V0Q2h1bmtTaXplID0gb3B0cy5zb2NrZXRDaHVua1NpemU7XG4gIGNvbnN0IG1heEZyYW1lTGVuZ3RoID0gb3B0cy5tYXhGcmFtZUxlbmd0aDtcbiAgY29uc3Qgc2VtdmVyVmVyc2lvbiA9IHNlbXZlci5jb2VyY2Uob3NWZXJzaW9uKTtcbiAgaWYgKCFzZW12ZXJWZXJzaW9uKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgY3JlYXRlIGEgc2VtdmVyIHZlcnNpb24gb3V0IG9mICcke29zVmVyc2lvbn0nYCk7XG4gIH1cbiAgaWYgKG9wdHMuc29ja2V0KSB7XG4gICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3JTZXJ2aWNlKHtcbiAgICAgIG1ham9yT3NWZXJzaW9uOiBzZW12ZXJWZXJzaW9uLm1ham9yLFxuICAgICAgaXNTaW11bGF0b3IsXG4gICAgICBzb2NrZXRDaHVua1NpemUsXG4gICAgICB2ZXJib3NlLFxuICAgICAgdmVyYm9zZUhleER1bXAsXG4gICAgICBzb2NrZXRDbGllbnQ6IG9wdHMuc29ja2V0LFxuICAgICAgbWF4RnJhbWVMZW5ndGgsXG4gICAgfSk7XG4gIH1cbiAgY29uc3Qgc29ja2V0ID0gYXdhaXQgc3RhcnRTZXJ2aWNlKHVkaWQsIFdFQl9JTlNQRUNUT1JfU0VSVklDRV9OQU1FLCB1bmRlZmluZWQpO1xuICByZXR1cm4gbmV3IFdlYkluc3BlY3RvclNlcnZpY2Uoe1xuICAgIG1ham9yT3NWZXJzaW9uOiBzZW12ZXJWZXJzaW9uLm1ham9yLFxuICAgIGlzU2ltdWxhdG9yLFxuICAgIHNvY2tldENodW5rU2l6ZSxcbiAgICB2ZXJib3NlLFxuICAgIHZlcmJvc2VIZXhEdW1wLFxuICAgIHNvY2tldENsaWVudDogc29ja2V0LFxuICAgIG1heEZyYW1lTGVuZ3RoLFxuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgSU5TVEFMTEFUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IEluc3RhbGxhdGlvblByb3h5U2VydmljZShuZXcgUGxpc3RTZXJ2aWNlKHNvY2tldCkpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydEFmY1NlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgQUZDX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IEFmY1NlcnZpY2Uoc29ja2V0KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnROb3RpZmljYXRpb25Qcm94eVNlcnZpY2UgKHVkaWQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBzb2NrZXQgPSBhd2FpdCBzdGFydFNlcnZpY2UodWRpZCwgTk9USUZJQ0FUSU9OX1BST1hZX1NFUlZJQ0VfTkFNRSwgb3B0cy5zb2NrZXQpO1xuICByZXR1cm4gbmV3IE5vdGlmaWNhdGlvblByb3h5U2VydmljZShzb2NrZXQpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzdGFydEhvdXNlQXJyZXN0U2VydmljZSAodWRpZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvY2tldCA9IGF3YWl0IHN0YXJ0U2VydmljZSh1ZGlkLCBIT1VTRV9BUlJFU1RfU0VSVklDRV9OQU1FLCBvcHRzLnNvY2tldCk7XG4gIHJldHVybiBuZXcgSG91c2VBcnJlc3RTZXJ2aWNlKHNvY2tldCk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0U2VydmljZSAodWRpZCwgc2VydmljZU5hbWUsIHNvY2tldCkge1xuICBjb25zdCBsb2NrZG93biA9IGF3YWl0IHN0YXJ0TG9ja2Rvd25TZXNzaW9uKHVkaWQsIHNvY2tldCk7XG4gIHRyeSB7XG4gICAgY29uc3Qgc2VydmljZSA9IGF3YWl0IGxvY2tkb3duLnN0YXJ0U2VydmljZShzZXJ2aWNlTmFtZSk7XG4gICAgaWYgKHNlcnZpY2UuRW5hYmxlU2VydmljZVNTTCkge1xuICAgICAgcmV0dXJuIGF3YWl0IGNvbm5lY3RQb3J0U1NMKHVkaWQsIHNlcnZpY2UuUG9ydCwgc29ja2V0KTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIGF3YWl0IGNvbm5lY3RQb3J0KHVkaWQsIHNlcnZpY2UuUG9ydCwgc29ja2V0KTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgbG9ja2Rvd24uY2xvc2UoKTtcbiAgfVxufVxuXG5leHBvcnQge1xuICBzdGFydFN5c2xvZ1NlcnZpY2UsIHN0YXJ0V2ViSW5zcGVjdG9yU2VydmljZSxcbiAgc3RhcnRJbnN0YWxsYXRpb25Qcm94eVNlcnZpY2UsIHN0YXJ0U2ltdWxhdGVMb2NhdGlvblNlcnZpY2UsXG4gIHN0YXJ0QWZjU2VydmljZSwgc3RhcnROb3RpZmljYXRpb25Qcm94eVNlcnZpY2UsXG4gIHN0YXJ0SG91c2VBcnJlc3RTZXJ2aWNlXG59O1xuIl0sImZpbGUiOiJsaWIvc2VydmljZXMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -5,6 +5,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
+ exports.unescape = unescape;
8
9
  exports.default = exports.SyslogDecoder = void 0;
9
10
 
10
11
  require("source-map-support/register");
@@ -13,6 +14,67 @@ var _stream = _interopRequireDefault(require("stream"));
13
14
 
14
15
  const NEW_LINE_CODE = 0x0A;
15
16
  const NULL_DELIMETER_CODE = 0x00;
17
+ const BACKSLASH_CODE = '\\'.codePointAt(0);
18
+ const SHIFTS_MAPPING = {
19
+ '-': 0x80,
20
+ '^': 0x40
21
+ };
22
+ const ESCAPE_TOKEN_LEN = 4;
23
+ const ESCAPE_TOKEN_PATTERN = /\\M(-|\^)(.)/;
24
+
25
+ function toUtf8Byte(escapedChar, modifier) {
26
+ const shift = SHIFTS_MAPPING[modifier];
27
+ return isNaN(shift) ? null : escapedChar.codePointAt(0) + shift;
28
+ }
29
+
30
+ function unescape(logBuffer) {
31
+ const parseUtf8Chars = start => {
32
+ let cursor = start;
33
+ const token = new Uint8Array(ESCAPE_TOKEN_LEN);
34
+ const utf8CharsAsBytes = [];
35
+
36
+ while (cursor <= logBuffer.length - ESCAPE_TOKEN_LEN) {
37
+ logBuffer.copy(token, 0, cursor, cursor + ESCAPE_TOKEN_LEN);
38
+ const tokenStr = Buffer.from(token).toString('latin1');
39
+ const tokenMatch = ESCAPE_TOKEN_PATTERN.exec(tokenStr);
40
+
41
+ if (!tokenMatch) {
42
+ break;
43
+ }
44
+
45
+ const byte = toUtf8Byte(tokenMatch[2], tokenMatch[1]);
46
+
47
+ if (byte === null) {
48
+ break;
49
+ }
50
+
51
+ utf8CharsAsBytes.push(byte);
52
+ cursor += ESCAPE_TOKEN_LEN;
53
+ }
54
+
55
+ return utf8CharsAsBytes.length ? [cursor, Buffer.from(utf8CharsAsBytes).toString('utf8')] : [start, null];
56
+ };
57
+
58
+ let index = 0;
59
+ let result = '';
60
+ const bytesView = new Uint8Array(logBuffer);
61
+
62
+ while (index < bytesView.length) {
63
+ if (bytesView[index] === BACKSLASH_CODE) {
64
+ const [newIndex, chars] = parseUtf8Chars(index);
65
+
66
+ if (newIndex > index) {
67
+ result += chars;
68
+ index = newIndex;
69
+ continue;
70
+ }
71
+ }
72
+
73
+ result += String.fromCharCode(bytesView[index++]);
74
+ }
75
+
76
+ return result;
77
+ }
16
78
 
17
79
  class SyslogDecoder extends _stream.default.Transform {
18
80
  constructor(bufferLength) {
@@ -36,10 +98,10 @@ class SyslogDecoder extends _stream.default.Transform {
36
98
  }
37
99
 
38
100
  if (data[i] === NEW_LINE_CODE) {
39
- if (this.bufferIndex !== 0) {
101
+ if (this.bufferIndex > 0) {
40
102
  const stringBuffer = Buffer.allocUnsafe(this.bufferIndex);
41
103
  this.buffer.copy(stringBuffer, 0, 0, this.bufferIndex);
42
- this.push(stringBuffer.toString('utf8'), 'utf8');
104
+ this.push(unescape(stringBuffer), 'utf8');
43
105
  this.bufferIndex = 0;
44
106
  }
45
107
 
@@ -58,4 +120,4 @@ var _default = SyslogDecoder;
58
120
  exports.default = _default;require('source-map-support').install();
59
121
 
60
122
 
61
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zeXNsb2cvdHJhbnNmb3JtZXIvc3lzbG9nLWRlY29kZXIuanMiXSwibmFtZXMiOlsiTkVXX0xJTkVfQ09ERSIsIk5VTExfREVMSU1FVEVSX0NPREUiLCJTeXNsb2dEZWNvZGVyIiwiU3RyZWFtIiwiVHJhbnNmb3JtIiwiY29uc3RydWN0b3IiLCJidWZmZXJMZW5ndGgiLCJvYmplY3RNb2RlIiwiYnVmZmVySW5kZXgiLCJidWZmZXIiLCJCdWZmZXIiLCJhbGxvY1Vuc2FmZSIsIl90cmFuc2Zvcm0iLCJkYXRhIiwiZW5jb2RpbmciLCJvbkRhdGEiLCJfZGVjb2RlIiwiaSIsImxlbmd0aCIsInN0cmluZ0J1ZmZlciIsImNvcHkiLCJwdXNoIiwidG9TdHJpbmciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsYUFBYSxHQUFHLElBQXRCO0FBQ0EsTUFBTUMsbUJBQW1CLEdBQUcsSUFBNUI7O0FBRUEsTUFBTUMsYUFBTixTQUE0QkMsZ0JBQU9DLFNBQW5DLENBQTZDO0FBRTNDQyxFQUFBQSxXQUFXLENBQUVDLFlBQUYsRUFBZ0I7QUFDekIsVUFBTTtBQUFFQyxNQUFBQSxVQUFVLEVBQUU7QUFBZCxLQUFOO0FBQ0EsU0FBS0MsV0FBTCxHQUFtQixDQUFuQjtBQUNBLFNBQUtDLE1BQUwsR0FBY0MsTUFBTSxDQUFDQyxXQUFQLENBQW1CTCxZQUFuQixDQUFkO0FBQ0Q7O0FBRURNLEVBQUFBLFVBQVUsQ0FBRUMsSUFBRixFQUFRQyxRQUFSLEVBQWtCQyxNQUFsQixFQUEwQjtBQUNsQyxTQUFLQyxPQUFMLENBQWFILElBQWI7O0FBQ0FFLElBQUFBLE1BQU07QUFDUDs7QUFFREMsRUFBQUEsT0FBTyxDQUFFSCxJQUFGLEVBQVE7QUFDYixTQUFLLElBQUlJLENBQUMsR0FBRyxDQUFiLEVBQWdCQSxDQUFDLEdBQUdKLElBQUksQ0FBQ0ssTUFBekIsRUFBaUNELENBQUMsRUFBbEMsRUFBc0M7QUFFcEMsVUFBSUosSUFBSSxDQUFDSSxDQUFELENBQUosS0FBWWhCLG1CQUFoQixFQUFxQztBQUNuQztBQUNEOztBQUVELFVBQUlZLElBQUksQ0FBQ0ksQ0FBRCxDQUFKLEtBQVlqQixhQUFoQixFQUErQjtBQUM3QixZQUFJLEtBQUtRLFdBQUwsS0FBcUIsQ0FBekIsRUFBNEI7QUFDMUIsZ0JBQU1XLFlBQVksR0FBR1QsTUFBTSxDQUFDQyxXQUFQLENBQW1CLEtBQUtILFdBQXhCLENBQXJCO0FBQ0EsZUFBS0MsTUFBTCxDQUFZVyxJQUFaLENBQWlCRCxZQUFqQixFQUErQixDQUEvQixFQUFrQyxDQUFsQyxFQUFxQyxLQUFLWCxXQUExQztBQUNBLGVBQUthLElBQUwsQ0FBVUYsWUFBWSxDQUFDRyxRQUFiLENBQXNCLE1BQXRCLENBQVYsRUFBeUMsTUFBekM7QUFDQSxlQUFLZCxXQUFMLEdBQW1CLENBQW5CO0FBQ0Q7O0FBQ0Q7QUFDRDs7QUFDRCxXQUFLQyxNQUFMLENBQVksS0FBS0QsV0FBakIsSUFBZ0NLLElBQUksQ0FBQ0ksQ0FBRCxDQUFwQztBQUNBLFdBQUtULFdBQUw7QUFDRDtBQUNGOztBQWhDMEM7OztlQW9DOUJOLGEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgU3RyZWFtIGZyb20gJ3N0cmVhbSc7XG5cbmNvbnN0IE5FV19MSU5FX0NPREUgPSAweDBBO1xuY29uc3QgTlVMTF9ERUxJTUVURVJfQ09ERSA9IDB4MDA7XG5cbmNsYXNzIFN5c2xvZ0RlY29kZXIgZXh0ZW5kcyBTdHJlYW0uVHJhbnNmb3JtIHtcblxuICBjb25zdHJ1Y3RvciAoYnVmZmVyTGVuZ3RoKSB7XG4gICAgc3VwZXIoeyBvYmplY3RNb2RlOiB0cnVlIH0pO1xuICAgIHRoaXMuYnVmZmVySW5kZXggPSAwO1xuICAgIHRoaXMuYnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKGJ1ZmZlckxlbmd0aCk7XG4gIH1cblxuICBfdHJhbnNmb3JtIChkYXRhLCBlbmNvZGluZywgb25EYXRhKSB7XG4gICAgdGhpcy5fZGVjb2RlKGRhdGEpO1xuICAgIG9uRGF0YSgpO1xuICB9XG5cbiAgX2RlY29kZSAoZGF0YSkge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuICAgICAgLy8gRG9uJ3Qgc3RvcmUgdGhlIG51bGwgZGVsaW1ldGVyIG1lc3NhZ2VzXG4gICAgICBpZiAoZGF0YVtpXSA9PT0gTlVMTF9ERUxJTUVURVJfQ09ERSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIC8vIFB1c2ggdGhlIGRhdGEgd2hlbiBuZXcgbGluZSBpcyBzZW50XG4gICAgICBpZiAoZGF0YVtpXSA9PT0gTkVXX0xJTkVfQ09ERSkge1xuICAgICAgICBpZiAodGhpcy5idWZmZXJJbmRleCAhPT0gMCkge1xuICAgICAgICAgIGNvbnN0IHN0cmluZ0J1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZSh0aGlzLmJ1ZmZlckluZGV4KTtcbiAgICAgICAgICB0aGlzLmJ1ZmZlci5jb3B5KHN0cmluZ0J1ZmZlciwgMCwgMCwgdGhpcy5idWZmZXJJbmRleCk7XG4gICAgICAgICAgdGhpcy5wdXNoKHN0cmluZ0J1ZmZlci50b1N0cmluZygndXRmOCcpLCAndXRmOCcpO1xuICAgICAgICAgIHRoaXMuYnVmZmVySW5kZXggPSAwO1xuICAgICAgICB9XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdGhpcy5idWZmZXJbdGhpcy5idWZmZXJJbmRleF0gPSBkYXRhW2ldO1xuICAgICAgdGhpcy5idWZmZXJJbmRleCsrO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgeyBTeXNsb2dEZWNvZGVyIH07XG5leHBvcnQgZGVmYXVsdCBTeXNsb2dEZWNvZGVyO1xuIl0sImZpbGUiOiJsaWIvc3lzbG9nL3RyYW5zZm9ybWVyL3N5c2xvZy1kZWNvZGVyLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uLy4uIn0=
123
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9zeXNsb2cvdHJhbnNmb3JtZXIvc3lzbG9nLWRlY29kZXIuanMiXSwibmFtZXMiOlsiTkVXX0xJTkVfQ09ERSIsIk5VTExfREVMSU1FVEVSX0NPREUiLCJCQUNLU0xBU0hfQ09ERSIsImNvZGVQb2ludEF0IiwiU0hJRlRTX01BUFBJTkciLCJFU0NBUEVfVE9LRU5fTEVOIiwiRVNDQVBFX1RPS0VOX1BBVFRFUk4iLCJ0b1V0ZjhCeXRlIiwiZXNjYXBlZENoYXIiLCJtb2RpZmllciIsInNoaWZ0IiwiaXNOYU4iLCJ1bmVzY2FwZSIsImxvZ0J1ZmZlciIsInBhcnNlVXRmOENoYXJzIiwic3RhcnQiLCJjdXJzb3IiLCJ0b2tlbiIsIlVpbnQ4QXJyYXkiLCJ1dGY4Q2hhcnNBc0J5dGVzIiwibGVuZ3RoIiwiY29weSIsInRva2VuU3RyIiwiQnVmZmVyIiwiZnJvbSIsInRvU3RyaW5nIiwidG9rZW5NYXRjaCIsImV4ZWMiLCJieXRlIiwicHVzaCIsImluZGV4IiwicmVzdWx0IiwiYnl0ZXNWaWV3IiwibmV3SW5kZXgiLCJjaGFycyIsIlN0cmluZyIsImZyb21DaGFyQ29kZSIsIlN5c2xvZ0RlY29kZXIiLCJTdHJlYW0iLCJUcmFuc2Zvcm0iLCJjb25zdHJ1Y3RvciIsImJ1ZmZlckxlbmd0aCIsIm9iamVjdE1vZGUiLCJidWZmZXJJbmRleCIsImJ1ZmZlciIsImFsbG9jVW5zYWZlIiwiX3RyYW5zZm9ybSIsImRhdGEiLCJlbmNvZGluZyIsIm9uRGF0YSIsIl9kZWNvZGUiLCJpIiwic3RyaW5nQnVmZmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFFQSxNQUFNQSxhQUFhLEdBQUcsSUFBdEI7QUFDQSxNQUFNQyxtQkFBbUIsR0FBRyxJQUE1QjtBQUNBLE1BQU1DLGNBQWMsR0FBRyxLQUFLQyxXQUFMLENBQWlCLENBQWpCLENBQXZCO0FBQ0EsTUFBTUMsY0FBYyxHQUFHO0FBQ3JCLE9BQUssSUFEZ0I7QUFFckIsT0FBSztBQUZnQixDQUF2QjtB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QW5CLENBQWQ7QUFDRDs7QUFFREssRUFBQUEsVUFBVSxDQUFFQyxJQUFGLEVBQVFDLFFBQVIsRUFBa0JDLE1BQWxCLEVBQTBCO0FBQ2xDLFNBQUtDLE9BQUwsQ0FBYUgsSUFBYjs7QUFDQUUsSUFBQUEsTUFBTTtBQUNQOztBQUVEQyxFQUFBQSxPQUFPLENBQUVILElBQUYsRUFBUTtBQUNiLFNBQUssSUFBSUksQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBR0osSUFBSSxDQUFDM0IsTUFBekIsRUFBaUMrQixDQUFDLEVBQWxDLEVBQXNDO0FBRXBDLFVBQUlKLElBQUksQ0FBQ0ksQ0FBRCxDQUFKLEtBQVlsRCxtQkFBaEIsRUFBcUM7QUFDbkM7QUFDRDs7QUFFRCxVQUFJOEMsSUFBSSxDQUFDSSxDQUFELENBQUosS0FBWW5ELGFBQWhCLEVBQStCO0FBQzdCLFlBQUksS0FBSzJDLFdBQUwsR0FBbUIsQ0FBdkIsRUFBMEI7QUFDeEIsZ0JBQU1TLFlBQVksR0FBRzdCLE1BQU0sQ0FBQ3NCLFdBQVAsQ0FBbUIsS0FBS0YsV0FBeEIsQ0FBckI7QUFDQSxlQUFLQyxNQUFMLENBQVl2QixJQUFaLENBQWlCK0IsWUFBakIsRUFBK0IsQ0FBL0IsRUFBa0MsQ0FBbEMsRUFBcUMsS0FBS1QsV0FBMUM7QUFDQSxlQUFLZCxJQUFMLENBQVVqQixRQUFRLENBQUN3QyxZQUFELENBQWxCLEVBQWtDLE1BQWxDO0FBQ0EsZUFBS1QsV0FBTCxHQUFtQixDQUFuQjtBQUNEOztBQUNEO0FBQ0Q7O0FBQ0QsV0FBS0MsTUFBTCxDQUFZLEtBQUtELFdBQWpCLElBQWdDSSxJQUFJLENBQUNJLENBQUQsQ0FBcEM7QUFDQSxXQUFLUixXQUFMO0FBQ0Q7QUFDRjs7QUFoQzBDOzs7ZUFvQzlCTixhIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFN0cmVhbSBmcm9tICdzdHJlYW0nO1xuXG5jb25zdCBORVdfTElORV9DT0RFID0gMHgwQTtcbmNvbnN0IE5VTExfREVMSU1FVEVSX0NPREUgPSAweDAwO1xuY29uc3QgQkFDS1NMQVNIX0NPREUgPSAnXFxcXCcuY29kZVBvaW50QXQoMCk7XG5jb25zdCBTSElGVFNfTUFQUElORyA9IHtcbiAgJy0nOiAweDgwLFxuICAnXic6IDB4NDAsXG59O1xuY29uc3QgRVNDQVBFX1RPS0VOX0xFTiA9IDQ7XG5jb25zdCBFU0NBUEVfVE9LRU5fUEFUVEVSTiA9IC9cXFxcTSgtfFxcXikoLikvO1xuXG5cbmZ1bmN0aW9uIHRvVXRmOEJ5dGUgKGVzY2FwZWRDaGFyLCBtb2RpZmllcikge1xuICBjb25zdCBzaGlmdCA9IFNISUZUU19NQVBQSU5HW21vZGlmaWVyXTtcbiAgcmV0dXJuIGlzTmFOKHNoaWZ0KSA/IG51bGwgOiBlc2NhcGVkQ2hhci5jb2RlUG9pbnRBdCgwKSArIHNoaWZ0O1xufVxuXG4vKipcbiAqIFVuZXNjYXBlcyB1dGY4LWVuY29kZWQgY2hhcmFjdGVycywgc28gdGhlIG91dHB1dCBsb29rc1xuICogbGlrZSBhIHZhbGlkIHN0cmluZy4gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL2lzc3Vlcy8xNDQ3NlxuICogZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBAcGFyYW0ge0J1ZmZlcn0gbG9nQnVmZmVyIEEgc2luZ2xlIGVzY2FwZWQgbG9nIGxpbmVcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSB1bmVzY2FwZWQgc3RyaW5nIG9yIHRoZSBzYW1lIHN0cmluZyBpZiBubyB1bmVzY2FwaW5nXG4gKiBpcyBuZWNlc3NhcnkuXG4gKi9cbmZ1bmN0aW9uIHVuZXNjYXBlIChsb2dCdWZmZXIpIHtcbiAgY29uc3QgcGFyc2VVdGY4Q2hhcnMgPSAoc3RhcnQpID0+IHtcbiAgICBsZXQgY3Vyc29yID0gc3RhcnQ7XG4gICAgY29uc3QgdG9rZW4gPSBuZXcgVWludDhBcnJheShFU0NBUEVfVE9LRU5fTEVOKTtcbiAgICBjb25zdCB1dGY4Q2hhcnNBc0J5dGVzID0gW107XG4gICAgd2hpbGUgKGN1cnNvciA8PSBsb2dCdWZmZXIubGVuZ3RoIC0gRVNDQVBFX1RPS0VOX0xFTikge1xuICAgICAgbG9nQnVmZmVyLmNvcHkodG9rZW4sIDAsIGN1cnNvciwgY3Vyc29yICsgRVNDQVBFX1RPS0VOX0xFTik7XG4gICAgICBjb25zdCB0b2tlblN0ciA9IEJ1ZmZlci5mcm9tKHRva2VuKS50b1N0cmluZygnbGF0aW4xJyk7XG4gICAgICBjb25zdCB0b2tlbk1hdGNoID0gRVNDQVBFX1RPS0VOX1BBVFRFUk4uZXhlYyh0b2tlblN0cik7XG4gICAgICBpZiAoIXRva2VuTWF0Y2gpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBjb25zdCBieXRlID0gdG9VdGY4Qnl0ZSh0b2tlbk1hdGNoWzJdLCB0b2tlbk1hdGNoWzFdKTtcbiAgICAgIGlmIChieXRlID09PSBudWxsKSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdXRmOENoYXJzQXNCeXRlcy5wdXNoKGJ5dGUpO1xuICAgICAgY3Vyc29yICs9IEVTQ0FQRV9UT0tFTl9MRU47XG4gICAgfVxuICAgIHJldHVybiB1dGY4Q2hhcnNBc0J5dGVzLmxlbmd0aFxuICAgICAgPyBbY3Vyc29yLCBCdWZmZXIuZnJvbSh1dGY4Q2hhcnNBc0J5dGVzKS50b1N0cmluZygndXRmOCcpXVxuICAgICAgOiBbc3RhcnQsIG51bGxdO1xuICB9O1xuXG4gIGxldCBpbmRleCA9IDA7XG4gIGxldCByZXN1bHQgPSAnJztcbiAgY29uc3QgYnl0ZXNWaWV3ID0gbmV3IFVpbnQ4QXJyYXkobG9nQnVmZmVyKTtcbiAgd2hpbGUgKGluZGV4IDwgYnl0ZXNWaWV3Lmxlbmd0aCkge1xuICAgIGlmIChieXRlc1ZpZXdbaW5kZXhdID09PSBCQUNLU0xBU0hfQ09ERSkge1xuICAgICAgY29uc3QgW25ld0luZGV4LCBjaGFyc10gPSBwYXJzZVV0ZjhDaGFycyhpbmRleCk7XG4gICAgICBpZiAobmV3SW5kZXggPiBpbmRleCkge1xuICAgICAgICByZXN1bHQgKz0gY2hhcnM7XG4gICAgICAgIGluZGV4ID0gbmV3SW5kZXg7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShieXRlc1ZpZXdbaW5kZXgrK10pO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuXG5jbGFzcyBTeXNsb2dEZWNvZGVyIGV4dGVuZHMgU3RyZWFtLlRyYW5zZm9ybSB7XG5cbiAgY29uc3RydWN0b3IgKGJ1ZmZlckxlbmd0aCkge1xuICAgIHN1cGVyKHsgb2JqZWN0TW9kZTogdHJ1ZSB9KTtcbiAgICB0aGlzLmJ1ZmZlckluZGV4ID0gMDtcbiAgICB0aGlzLmJ1ZmZlciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShidWZmZXJMZW5ndGgpO1xuICB9XG5cbiAgX3RyYW5zZm9ybSAoZGF0YSwgZW5jb2RpbmcsIG9uRGF0YSkge1xuICAgIHRoaXMuX2RlY29kZShkYXRhKTtcbiAgICBvbkRhdGEoKTtcbiAgfVxuXG4gIF9kZWNvZGUgKGRhdGEpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGEubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIERvbid0IHN0b3JlIHRoZSBudWxsIGRlbGltZXRlciBtZXNzYWdlc1xuICAgICAgaWYgKGRhdGFbaV0gPT09IE5VTExfREVMSU1FVEVSX0NPREUpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICAvLyBQdXNoIHRoZSBkYXRhIHdoZW4gbmV3IGxpbmUgaXMgc2VudFxuICAgICAgaWYgKGRhdGFbaV0gPT09IE5FV19MSU5FX0NPREUpIHtcbiAgICAgICAgaWYgKHRoaXMuYnVmZmVySW5kZXggPiAwKSB7XG4gICAgICAgICAgY29uc3Qgc3RyaW5nQnVmZmVyID0gQnVmZmVyLmFsbG9jVW5zYWZlKHRoaXMuYnVmZmVySW5kZXgpO1xuICAgICAgICAgIHRoaXMuYnVmZmVyLmNvcHkoc3RyaW5nQnVmZmVyLCAwLCAwLCB0aGlzLmJ1ZmZlckluZGV4KTtcbiAgICAgICAgICB0aGlzLnB1c2godW5lc2NhcGUoc3RyaW5nQnVmZmVyKSwgJ3V0ZjgnKTtcbiAgICAgICAgICB0aGlzLmJ1ZmZlckluZGV4ID0gMDtcbiAgICAgICAgfVxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuYnVmZmVyW3RoaXMuYnVmZmVySW5kZXhdID0gZGF0YVtpXTtcbiAgICAgIHRoaXMuYnVmZmVySW5kZXgrKztcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHsgU3lzbG9nRGVjb2RlciwgdW5lc2NhcGUgfTtcbmV4cG9ydCBkZWZhdWx0IFN5c2xvZ0RlY29kZXI7XG4iXSwiZmlsZSI6ImxpYi9zeXNsb2cvdHJhbnNmb3JtZXIvc3lzbG9nLWRlY29kZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4ifQ==
@@ -12,6 +12,8 @@ require("source-map-support/register");
12
12
 
13
13
  var _net = _interopRequireDefault(require("net"));
14
14
 
15
+ var _os = _interopRequireDefault(require("os"));
16
+
15
17
  var _lodash = _interopRequireDefault(require("lodash"));
16
18
 
17
19
  var _bluebird = _interopRequireDefault(require("bluebird"));
@@ -56,6 +58,8 @@ try {
56
58
  }
57
59
 
58
60
  const DEFAULT_USBMUXD_SOCKET = '/var/run/usbmuxd';
61
+ const DEFAULT_USBMUXD_PORT = 27015;
62
+ const DEFAULT_USBMUXD_HOST = '127.0.0.1';
59
63
  const PROG_NAME = name;
60
64
  const CLIENT_VERSION_STRING = `${name}-${version}`;
61
65
 
@@ -63,14 +67,24 @@ function swap16(val) {
63
67
  return (val & 0xFF) << 8 | val >> 8 & 0xFF;
64
68
  }
65
69
 
66
- async function getDefaultSocket(socketPath = DEFAULT_USBMUXD_SOCKET, timeout = 5000) {
67
- if (!(await _appiumSupport.fs.exists(socketPath))) {
70
+ async function getDefaultSocket(opts = {}) {
71
+ const {
72
+ socketPath = DEFAULT_USBMUXD_SOCKET,
73
+ socketPort = DEFAULT_USBMUXD_PORT,
74
+ socketHost = DEFAULT_USBMUXD_HOST,
75
+ timeout = 5000
76
+ } = opts;
77
+ let socket;
78
+
79
+ if (await _appiumSupport.fs.exists(socketPath)) {
80
+ socket = _net.default.createConnection(socketPath);
81
+ } else if (process.platform === 'win32' || process.platform === 'linux' && /microsoft/i.test(_os.default.release())) {
82
+ socket = _net.default.createConnection(socketPort, socketHost);
83
+ } else {
68
84
  throw new Error(`The usbmuxd socket at '${socketPath}' does not exist or is not accessible`);
69
85
  }
70
86
 
71
87
  return await new _bluebird.default((resolve, reject) => {
72
- const socket = _net.default.createConnection(socketPath);
73
-
74
88
  socket.once('error', reject);
75
89
  socket.once('connect', () => resolve(socket));
76
90
  }).timeout(timeout);
@@ -269,4 +283,4 @@ var _default = Usbmux;
269
283
  exports.default = _default;require('source-map-support').install();
270
284
 
271
285
 
272
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91c2JtdXgvaW5kZXguanMiXSwibmFtZXMiOlsiTUFYX0ZSQU1FX1NJWkUiLCJNQiIsIlVTQk1VWF9SRVNVTFQiLCJPSyIsIkJBRENPTU1BTkQiLCJCQURERVYiLCJDT05OUkVGVVNFRCIsIm5hbWUiLCJ2ZXJzaW9uIiwicmVxdWlyZSIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwiZXJyIiwiREVGQVVMVF9VU0JNVVhEX1NPQ0tFVCIsIlBST0dfTkFNRSIsIkNMSUVOVF9WRVJTSU9OX1NUUklORyIsInN3YXAxNiIsInZhbCIsImdldERlZmF1bHRTb2NrZXQiLCJzb2NrZXRQYXRoIiwidGltZW91dCIsImZzIiwiZXhpc3RzIiwiRXJyb3IiLCJCIiwicmVqZWN0Iiwic29ja2V0IiwibmV0IiwiY3JlYXRlQ29ubmVjdGlvbiIsIm9uY2UiLCJVc2JtdXgiLCJCYXNlU2VydmljZVNvY2tldCIsImNvbnN0cnVjdG9yIiwic29ja2V0Q2xpZW50IiwiX2RlY29kZXIiLCJVc2JtdXhEZWNvZGVyIiwiX3NwbGl0dGVyIiwiTGVuZ3RoQmFzZWRTcGxpdHRlciIsInJlYWRhYmxlU3RyZWFtIiwibGl0dGxlRW5kaWFuIiwibWF4RnJhbWVMZW5ndGgiLCJsZW5ndGhGaWVsZE9mZnNldCIsImxlbmd0aEZpZWxkTGVuZ3RoIiwibGVuZ3RoQWRqdXN0bWVudCIsIl9zb2NrZXRDbGllbnQiLCJwaXBlIiwiX2VuY29kZXIiLCJVc2JtdXhFbmNvZGVyIiwiX2Fzc2lnbkNsaWVudEZhaWx1cmVIYW5kbGVycyIsIl90YWciLCJfcmVzcG9uc2VDYWxsYmFja3MiLCJvbiIsIl9oYW5kbGVEYXRhIiwiYmluZCIsImRhdGEiLCJjYiIsImhlYWRlciIsInRhZyIsIl8iLCJub29wIiwicmVhZEJVSUQiLCJyZWNlaXZlUHJvbWlzZSIsIl9yZWNlaXZlUGxpc3RQcm9taXNlIiwicGF5bG9hZCIsIkJVSUQiLCJKU09OIiwic3RyaW5naWZ5IiwiX3NlbmRQbGlzdCIsIk1lc3NhZ2VUeXBlIiwiUHJvZ05hbWUiLCJDbGllbnRWZXJzaW9uU3RyaW5nIiwicmVhZFBhaXJSZWNvcmQiLCJ1ZGlkIiwiUGFpclJlY29yZERhdGEiLCJwbGlzdCIsInBhcnNlUGxpc3QiLCJQYWlyUmVjb3JkSUQiLCJqc29uIiwid3JpdGUiLCJyZXNwb25zZUNhbGxiYWNrIiwiZSIsInNldFRpbWVvdXQiLCJsaXN0RGV2aWNlcyIsIkRldmljZUxpc3QiLCJmaW5kRGV2aWNlIiwiZGV2aWNlcyIsImZpbmQiLCJkZXZpY2UiLCJQcm9wZXJ0aWVzIiwiU2VyaWFsTnVtYmVyIiwiY29ubmVjdExvY2tkb3duIiwiY29ubmVjdCIsIkRldmljZUlEIiwiTE9DS0RPV05fUE9SVCIsIkxvY2tkb3duIiwiUGxpc3RTZXJ2aWNlIiwiZGV2aWNlSUQiLCJwb3J0IiwiTnVtYmVyIiwic2h1dGRvd24iLCJ1bnBpcGUiLCJQb3J0TnVtYmVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxjQUFjLEdBQUcsSUFBSUMsYUFBM0I7QUFFQSxNQUFNQyxhQUFhLEdBQUc7QUFDcEJDLEVBQUFBLEVBQUUsRUFBRSxDQURnQjtBQUVwQkMsRUFBQUEsVUFBVSxFQUFFLENBRlE7QUFHcEJDLEVBQUFBLE1BQU0sRUFBRSxDQUhZO0FBSXBCQyxFQUFBQSxXQUFXLEVBQUU7QUFKTyxDQUF0QjtBQU9BLElBQUlDLElBQUosRUFBVUMsT0FBVjs7QUFDQSxJQUFJO0FBRUYsR0FBQztBQUFFRCxJQUFBQSxJQUFGO0FBQVFDLElBQUFBO0FBQVIsTUFBb0JDLE9BQU8sQ0FBQ0MsY0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCLElBQXhCLEVBQThCLElBQTlCLEVBQW9DLElBQXBDLEVBQTBDLGNBQTFDLENBQUQsQ0FBNUI7QUFDRCxDQUhELENBR0UsT0FBT0MsR0FBUCxFQUFZO0FBRVosR0FBQztBQUFFTixJ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LENBQU47QUFDRDtBQUNGLEtBZDZCLENBQTlCOztBQWdCQSxTQUFLYSxVQUFMLENBQWdCO0FBQ2RWLE1BQUFBLEdBRGM7QUFFZE0sTUFBQUEsT0FBTyxFQUFFO0FBQ1BLLFFBQUFBLFdBQVcsRUFBRSxTQUROO0FBRVBDLFFBQUFBLFFBQVEsRUFBRXZELFNBRkg7QUFHUHdELFFBQUFBLG1CQUFtQixFQUFFdkQscUJBSGQ7QUFJUDZFLFFBQUFBLFFBQVEsRUFBRUksUUFKSDtBQUtQSyxRQUFBQSxVQUFVLEVBQUVyRixNQUFNLENBQUNpRixJQUFEO0FBTFg7QUFGSyxLQUFoQjs7QUFXQSxXQUFPLE1BQU1wQyxjQUFiO0FBQ0Q7O0FBOUxvQzs7O2VBa014Qi9CLE0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbmV0IGZyb20gJ25ldCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgcGxpc3QsIGZzIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IExlbmd0aEJhc2VkU3BsaXR0ZXIgZnJvbSAnLi4vdXRpbC90cmFuc2Zvcm1lci9sZW5ndGgtYmFzZWQtc3BsaXR0ZXInO1xuaW1wb3J0IFVzYm11eERlY29kZXIgZnJvbSAnLi90cmFuc2Zvcm1lci91c2JtdXgtZGVjb2Rlci5qcyc7XG5pbXBvcnQgVXNibXV4RW5jb2RlciBmcm9tICcuL3RyYW5zZm9ybWVyL3VzYm11eC1lbmNvZGVyLmpzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IFBsaXN0U2VydmljZSBmcm9tICcuLi9wbGlzdC1zZXJ2aWNlJztcbmltcG9ydCB7IExvY2tkb3duLCBMT0NLRE9XTl9QT1JUIH0gZnJvbSAnLi4vbG9ja2Rvd24nO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2VTb2NrZXQgfSBmcm9tICcuLi9iYXNlLXNlcnZpY2UnO1xuaW1wb3J0IHsgTUIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5cbmNvbnN0IE1BWF9GUkFNRV9TSVpFID0gMSAqIE1CO1xuXG5jb25zdCBVU0JNVVhfUkVTVUxUID0ge1xuICBPSzogMCxcbiAgQkFEQ09NTUFORDogMSxcbiAgQkFEREVWOiAyLFxuICBDT05OUkVGVVNFRDogMyxcbn07XG5cbmxldCBuYW1lLCB2ZXJzaW9uO1xudHJ5IHtcbiAgLy8gZmlyc3QgdHJ5IGFzc3VtaW5nIHRoaXMgaXMgaW4gdGhlIGBidWlsZGAgZm9sZGVyXG4gICh7IG5hbWUsIHZlcnNpb24gfSA9IHJlcXVpcmUocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ3BhY2thZ2UuanNvbicpKSk7XG59IGNhdGNoIChlcnIpIHtcbiAgLy8gdGhlbiB0cnkgYXNzdW1pbmcgaXQgaXMgbm90XG4gICh7IG5hbWUsIHZlcnNpb24gfSA9IHJlcXVpcmUocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ3BhY2thZ2UuanNvbicpKSk7XG59XG5cbmNvbnN0IERFRkFVTFRfVVNCTVVYRF9TT0NLRVQgPSAnL3Zhci9ydW4vdXNibXV4ZCc7XG5jb25zdCBQUk9HX05BTUUgPSBuYW1lO1xuY29uc3QgQ0xJRU5UX1ZFUlNJT05fU1RSSU5HID0gYCR7bmFtZX0tJHt2ZXJzaW9ufWA7XG5cbmZ1bmN0aW9uIHN3YXAxNiAodmFsKSB7XG4gIHJldHVybiAoKHZhbCAmIDB4RkYpIDw8IDgpIHwgKCh2YWwgPj4gOCkgJiAweEZGKTtcbn1cblxuLyoqXG4gKiBDb25uZWN0cyBhIHNvY2tldCB0byB1c2JtdXhkIHNlcnZpY2VcbiAqXG4gKiBAcGFyYW0gez9zdHJpbmd9IHNvY2tldFBhdGggWy92YXIvcnVuL3VzYm11eGRdIFRoZSBmdWxsIHBhdGggdG8gdGhlIHVzYm11eGQgVW5peCBzb2NrZXRcbiAqIEBwYXJhbSB7P251bWJlcn0gdGltZW91dCBbNTAwMF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCB1bnRpbFxuICogdGhlIHNvY2tldCBpcyBjb25uZWN0ZWRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgYWNjZXNzaW5nIHRoZSBzb2NrZXQgb3JcbiAqIGEgY29ubmVjdGlvbiBlcnJvciBoYXBwZW5lZFxuICogQHRocm93cyB7Qi5UaW1lb3V0RXJyb3J9IGlmIGNvbm5lY3Rpb24gdGltZW91dCBoYXBwZW5lZFxuICogQHJldHVybnMge25ldC5Tb2NrZXR9IENvbm5lY3RlZCBzb2NrZXQgaW5zdGFuY2VcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0RGVmYXVsdFNvY2tldCAoc29ja2V0UGF0aCA9IERFRkFVTFRfVVNCTVVYRF9TT0NLRVQsIHRpbWVvdXQgPSA1MDAwKSB7XG4gIGlmICghYXdhaXQgZnMuZXhpc3RzKHNvY2tldFBhdGgpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKGBUaGUgdXNibXV4ZCBzb2NrZXQgYXQgJyR7c29ja2V0UGF0aH0nIGRvZXMgbm90IGV4aXN0IG9yIGlzIG5vdCBhY2Nlc3NpYmxlYCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGNvbnN0IHNvY2tldCA9IG5ldC5jcmVhdGVDb25uZWN0aW9uKHNvY2tldFBhdGgpO1xuICAgIHNvY2tldC5vbmNlKCdlcnJvcicsIHJlamVjdCk7XG4gICAgc29ja2V0Lm9uY2UoJ2Nvbm5lY3QnLCAoKSA9PiByZXNvbHZlKHNvY2tldCkpO1xuICB9KS50aW1lb3V0KHRpbWVvdXQpO1xufVxuXG5cbmNsYXNzIFVzYm11eCBleHRlbmRzIEJhc2VTZXJ2aWNlU29ja2V0IHtcbiAgY29uc3RydWN0b3IgKHNvY2tldENsaWVudCkge1xuICAgIHN1cGVyKHNvY2tldENsaWVudCk7XG5cbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFVzYm11eERlY29kZXIoKTtcbiAgICB0aGlzLl9zcGxpdHRlciA9IG5ldyBMZW5ndGhCYXNlZFNwbGl0dGVyKHtcbiAgICAgIHJlYWRhYmxlU3RyZWFtOiBzb2NrZXRDbGllbnQsXG4gICAgICBsaXR0bGVFbmRpYW46IHRydWUsXG4gICAgICBtYXhGcmFtZUxlbmd0aDogTUFYX0ZSQU1FX1NJWkUsXG4gICAgICBsZW5ndGhGaWVsZE9mZnNldDogMCxcbiAgICAgIGxlbmd0aEZpZWxkTGVuZ3RoOiA0LFxuICAgICAgbGVuZ3RoQWRqdXN0bWVudDogMCxcbiAgICB9KTtcbiAgICB0aGlzLl9zb2NrZXRDbGllbnQucGlwZSh0aGlzLl9zcGxpdHRlcikucGlwZSh0aGlzLl9kZWNvZGVyKTtcblxuICAgIHRoaXMuX2VuY29kZXIgPSBuZXcgVXNibXV4RW5jb2RlcigpO1xuICAgIHRoaXMuX2VuY29kZXIucGlwZSh0aGlzLl9zb2NrZXRDbGllbnQpO1xuICAgIHRoaXMuX2Fzc2lnbkNsaWVudEZhaWx1cmVIYW5kbGVycyh0aGlzLl9lbmNvZGVyKTtcblxuICAgIHRoaXMuX3RhZyA9IDA7XG4gICAgdGhpcy5fcmVzcG9uc2VDYWxsYmFja3MgPSB7fTtcbiAgICB0aGlzLl9kZWNvZGVyLm9uKCdkYXRhJywgdGhpcy5faGFuZGxlRGF0YS5iaW5kKHRoaXMpKTtcbiAgfVxuXG4gIF9oYW5kbGVEYXRhIChkYXRhKSB7XG4gICAgY29uc3QgY2IgPSB0aGlzLl9yZXNwb25zZUNhbGxiYWNrc1tkYXRhLmhlYWRlci50YWddIHx8IF8ubm9vcDtcbiAgICBjYihkYXRhKTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by1jYWxsYmFja3NcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBCVUlEIG9mIHRoZSBob3N0IGNvbXB1dGVyIGZyb20gdXNibXV4ZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVvdXQ9NTAwMF0gdGhlIHRpbWVvdXQgb2YgcmVjZWl2aW5nIGEgcmVzcG9uc2UgZnJvbSB1c2JtdXhkXG4gICAqIEByZXR1cm5zIHtzdHJpbmd9XG4gICAqL1xuICBhc3luYyByZWFkQlVJRCAodGltZW91dCA9IDUwMDApIHtcbiAgICBjb25zdCB7dGFnLCByZWNlaXZlUHJvbWlzZX0gPSB0aGlzLl9yZWNlaXZlUGxpc3RQcm9taXNlKHRpbWVvdXQsIChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YS5wYXlsb2FkLkJVSUQpIHtcbiAgICAgICAgcmV0dXJuIGRhdGEucGF5bG9hZC5CVUlEO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zZW5kUGxpc3Qoe1xuICAgICAgdGFnLFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICBNZXNzYWdlVHlwZTogJ1JlYWRCVUlEJyxcbiAgICAgICAgUHJvZ05hbWU6IFBST0dfTkFNRSxcbiAgICAgICAgQ2xpZW50VmVyc2lvblN0cmluZzogQ0xJRU5UX1ZFUlNJT05fU1RSSU5HXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgcmVjZWl2ZVByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdGhlIHBhaXIgcmVjb3JkIG9mIGEgZGV2aWNlLiBJdCB3aWxsIHJldHVybiBudWxsIGlmIGl0IGRvZXNuJ3QgZXhpc3RzXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIHRoZSB1ZGlkIG9mIHRoZSBkZXZpY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gdXNibXV4ZFxuICAgKiBAcmV0dXJucyB7P09iamVjdH1cbiAgICovXG4gIGFzeW5jIHJlYWRQYWlyUmVjb3JkICh1ZGlkLCB0aW1lb3V0ID0gNTAwMCkge1xuICAgIGNvbnN0IHt0YWcsIHJlY2VpdmVQcm9taXNlfSA9IHRoaXMuX3JlY2VpdmVQbGlzdFByb21pc2UodGltZW91dCwgKGRhdGEpID0+IHtcbiAgICAgIGlmICghZGF0YS5wYXlsb2FkLlBhaXJSZWNvcmREYXRhKSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHBsaXN0LnBhcnNlUGxpc3QoZGF0YS5wYXlsb2FkLlBhaXJSZWNvcmREYXRhKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuX3NlbmRQbGlzdCh7XG4gICAgICB0YWcsXG4gICAgICBwYXlsb2FkOiB7XG4gICAgICAgIE1lc3NhZ2VUeXBlOiAnUmVhZFBhaXJSZWNvcmQnLFxuICAgICAgICBQYWlyUmVjb3JkSUQ6IHVkaWQsXG4gICAgICAgIFByb2dOYW1lOiBQUk9HX05BTUUsXG4gICAgICAgIENsaWVudFZlcnNpb25TdHJpbmc6IENMSUVOVF9WRVJTSU9OX1NUUklOR1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBhd2FpdCByZWNlaXZlUHJvbWlzZTtcbiAgfVxuXG4gIF9zZW5kUGxpc3QgKGpzb24pIHtcbiAgICB0aGlzLl9lbmNvZGVyLndyaXRlKGpzb24pO1xuICB9XG5cbiAgX3JlY2VpdmVQbGlzdFByb21pc2UgKHRpbWVvdXQgPSA1MDAwLCByZXNwb25zZUNhbGxiYWNrKSB7XG4gICAgY29uc3QgdGFnID0gdGhpcy5fdGFnKys7XG4gICAgY29uc3QgcmVjZWl2ZVByb21pc2UgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICB0aGlzLl9yZXNwb25zZUNhbGxiYWNrc1t0YWddID0gKGRhdGEpID0+IHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICByZXNvbHZlKHJlc3BvbnNlQ2FsbGJhY2soZGF0YSkpO1xuICAgICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgICAgcmVqZWN0KGUpO1xuICAgICAgICB9XG4gICAgICB9O1xuICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKGBGYWlsZWQgdG8gcmVjZWl2ZSBhbnkgZGF0YSB3aXRoaW4gdGhlIHRpbWVvdXQ6ICR7dGltZW91dH1gKSksIHRpbWVvdXQpO1xuICAgIH0pO1xuICAgIHJldHVybiB7dGFnLCByZWNlaXZlUHJvbWlzZX07XG4gIH1cblxuICAvKipcbiAgICogTGlzdHMgYWxsIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBob3N0XG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZW91dD01MDAwXSB0aGUgdGltZW91dCBvZiByZWNlaXZpbmcgYSByZXNwb25zZSBmcm9tIHVzYm11eGRcbiAgICogQHJldHVybnMge0FycmF5fVxuICAgKi9cbiAgYXN5bmMgbGlzdERldmljZXMgKHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3Qge3RhZywgcmVjZWl2ZVByb21pc2V9ID0gdGhpcy5fcmVjZWl2ZVBsaXN0UHJvbWlzZSh0aW1lb3V0LCAoZGF0YSkgPT4ge1xuICAgICAgaWYgKGRhdGEucGF5bG9hZC5EZXZpY2VMaXN0KSB7XG4gICAgICAgIHJldHVybiBkYXRhLnBheWxvYWQuRGV2aWNlTGlzdDtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWApO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc2VuZFBsaXN0KHtcbiAgICAgIHRhZyxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgTWVzc2FnZVR5cGU6ICdMaXN0RGV2aWNlcycsXG4gICAgICAgIFByb2dOYW1lOiBQUk9HX05BTUUsXG4gICAgICAgIENsaWVudFZlcnNpb25TdHJpbmc6IENMSUVOVF9WRVJTSU9OX1NUUklOR1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHJlY2VpdmVQcm9taXNlO1xuICB9XG5cbiAgLyoqXG4gICAqIExvb2tzIGZvciBhIGRldmljZSB3aXRoIHRoZSBwYXNzZWQgdWRpZC4gSXQgd2lsbCByZXR1cm4gdW5kZWZpbmVkIGlmIHRoZSBkZXZpY2UgaXMgbm90IGZvdW5kXG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIHRoZSB1ZGlkIG9mIHRoZSBkZXZpY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gdXNibXV4ZFxuICAgKiBAcmV0dXJucyB7P09iamVjdH1cbiAgICovXG4gIGFzeW5jIGZpbmREZXZpY2UgKHVkaWQsIHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3QgZGV2aWNlcyA9IGF3YWl0IHRoaXMubGlzdERldmljZXModGltZW91dCk7XG4gICAgcmV0dXJuIF8uZmluZChkZXZpY2VzLCAoZGV2aWNlKSA9PiBkZXZpY2UuUHJvcGVydGllcy5TZXJpYWxOdW1iZXIgPT09IHVkaWQpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRvIHRoZSBsb2NrZG93bmQgb24gdGhlIGRldmljZSBhbmQgcmV0dXJucyBhIExvY2tkb3duIGNsaWVudFxuICAgKiBAcGFyYW0ge3N0cmluZ30gdWRpZCB0aGUgdWRpZCBvZiB0aGUgZGV2aWNlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZW91dD01MDAwXSB0aGUgdGltZW91dCBvZiByZWNlaXZpbmcgYSByZXNwb25zZSBmcm9tIHVzYm11eGRcbiAgICogQHJldHVybnMge0xvY2tkb3dufVxuICAgKi9cbiAgYXN5bmMgY29ubmVjdExvY2tkb3duICh1ZGlkLCB0aW1lb3V0ID0gNTAwMCkge1xuICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IHRoaXMuZmluZERldmljZSh1ZGlkLCB0aW1lb3V0KTtcbiAgICBpZiAoIWRldmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCB0aGUgZXhwZWN0ZWQgZGV2aWNlICcke3VkaWR9J2ApO1xuICAgIH1cbiAgICBjb25zdCBzb2NrZXQgPSBhd2FpdCB0aGlzLmNvbm5lY3QoZGV2aWNlLlByb3BlcnRpZXMuRGV2aWNlSUQsIExPQ0tET1dOX1BPUlQsIHRpbWVvdXQpO1xuICAgIHJldHVybiBuZXcgTG9ja2Rvd24obmV3IFBsaXN0U2VydmljZShzb2NrZXQpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDb25uZWN0cyB0byBhIGNlcnRhaW4gcG9ydCBvbiB0aGUgZGV2aWNlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBkZXZpY2VJRCB0aGUgZGV2aWNlIGlkIHdoaWNoIGNhbiBiZSByZXRyaWV2ZWQgZnJvbSB0aGUgcHJvcGVydGllcyBvZiBhIGRldmljZVxuICAgKiBAcGFyYW0ge251bWJlcn0gcG9ydCB0aGUgcG9ydCBudW1iZXIgdGhhdCB3YW50cyB0byBiZSBjb25uZWN0ZWRcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gdXNibXV4ZFxuICAgKiBAcmV0dXJucyB7bmV0LlNvY2tldHxPYmplY3R9IFRoZSBzb2NrZXQgb3IgdGhlIG9iamVjdCByZXR1cm5lZCBpbiB0aGUgY2FsbGJhY2sgaWYgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGV4aXN0c1xuICAgKi9cbiAgYXN5bmMgY29ubmVjdCAoZGV2aWNlSUQsIHBvcnQsIHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3Qge3RhZywgcmVjZWl2ZVByb21pc2V9ID0gdGhpcy5fcmVjZWl2ZVBsaXN0UHJvbWlzZSh0aW1lb3V0LCAoZGF0YSkgPT4ge1xuICAgICAgaWYgKGRhdGEucGF5bG9hZC5NZXNzYWdlVHlwZSAhPT0gJ1Jlc3VsdCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YCk7XG4gICAgICB9XG4gICAgICBpZiAoZGF0YS5wYXlsb2FkLk51bWJlciA9PT0gVVNCTVVYX1JFU1VMVC5PSykge1xuICAgICAgICB0aGlzLl9zcGxpdHRlci5zaHV0ZG93bigpO1xuICAgICAgICB0aGlzLl9zb2NrZXRDbGllbnQudW5waXBlKHRoaXMuX3NwbGl0dGVyKTtcbiAgICAgICAgdGhpcy5fc3BsaXR0ZXIudW5waXBlKHRoaXMuX2RlY29kZXIpO1xuICAgICAgICByZXR1cm4gdGhpcy5fc29ja2V0Q2xpZW50O1xuICAgICAgfSBlbHNlIGlmIChkYXRhLnBheWxvYWQuTnVtYmVyID09PSBVU0JNVVhfUkVTVUxULkNPTk5SRUZVU0VEKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgQ29ubmVjdGlvbiB3YXMgcmVmdXNlZCB0byBwb3J0ICR7cG9ydH1gKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fc2VuZFBsaXN0KHtcbiAgICAgIHRhZyxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgTWVzc2FnZVR5cGU6ICdDb25uZWN0JyxcbiAgICAgICAgUHJvZ05hbWU6IFBST0dfTkFNRSxcbiAgICAgICAgQ2xpZW50VmVyc2lvblN0cmluZzogQ0xJRU5UX1ZFUlNJT05fU1RSSU5HLFxuICAgICAgICBEZXZpY2VJRDogZGV2aWNlSUQsXG4gICAgICAgIFBvcnROdW1iZXI6IHN3YXAxNihwb3J0KVxuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGF3YWl0IHJlY2VpdmVQcm9taXNlO1xuICB9XG59XG5cbmV4cG9ydCB7IFVzYm11eCwgZ2V0RGVmYXVsdFNvY2tldCB9O1xuZXhwb3J0IGRlZmF1bHQgVXNibXV4O1xuIl0sImZpbGUiOiJsaWIvdXNibXV4L2luZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
286
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91c2JtdXgvaW5kZXguanMiXSwibmFtZXMiOlsiTUFYX0ZSQU1FX1NJWkUiLCJNQiIsIlVTQk1VWF9SRVNVTFQiLCJPSyIsIkJBRENPTU1BTkQiLCJCQURERVYiLCJDT05OUkVGVVNFRCIsIm5hbWUiLCJ2ZXJzaW9uIiwicmVxdWlyZSIsInBhdGgiLCJyZXNvbHZlIiwiX19kaXJuYW1lIiwiZXJyIiwiREVGQVVMVF9VU0JNVVhEX1NPQ0tFVCIsIkRFRkFVTFRfVVNCTVVYRF9QT1JUIiwiREVGQVVMVF9VU0JNVVhEX0hPU1QiLCJQUk9HX05BTUUiLCJDTElFTlRfVkVSU0lPTl9TVFJJTkciLCJzd2FwMTYiLCJ2YWwiLCJnZXREZWZhdWx0U29ja2V0Iiwib3B0cyIsInNvY2tldFBhdGgiLCJzb2NrZXRQb3J0Iiwic29ja2V0SG9zdCIsInRpbWVvdXQiLCJzb2NrZXQiLCJmcyIsImV4aXN0cyIsIm5ldCIsImNyZWF0ZUNvbm5lY3Rpb24iLCJwcm9jZXNzIiwicGxhdGZvcm0iLCJ0ZXN0Iiwib3MiLCJyZWxlYXNlIiwiRXJyb3IiLCJCIiwicmVqZWN0Iiwib25jZSIsIlVzYm11eCIsIkJhc2VTZXJ2aWNlU29ja2V0IiwiY29uc3RydWN0b3IiLCJzb2NrZXRDbGllbnQiLCJfZGVjb2RlciIsIlVzYm11eERlY29kZXIiLCJfc3BsaXR0ZXIiLCJMZW5ndGhCYXNlZFNwbGl0dGVyIiwicmVhZGFibGVTdHJlYW0iLCJsaXR0bGVFbmRpYW4iLCJtYXhGcmFtZUxlbmd0aCIsImxlbmd0aEZpZWxkT2Zmc2V0IiwibGVuZ3RoRmllbGRMZW5ndGgiLCJsZW5ndGhBZGp1c3RtZW50IiwiX3NvY2tldENsaWVudCIsInBpcGUiLCJfZW5jb2RlciIsIlVzYm11eEVuY29kZXIiLCJfYXNzaWduQ2xpZW50RmFpbHVyZUhhbmRsZXJzIiwiX3RhZyIsIl9yZXNwb25zZUNhbGxiYWNrcyIsIm9uIiwiX2hhbmRsZURhdGEiLCJiaW5kIiwiZGF0YSIsImNiIiwiaGVhZGVyIiwidGFnIiwiXyIsIm5vb3AiLCJyZWFkQlVJRCIsInJlY2VpdmVQcm9taXNlIiwiX3JlY2VpdmVQbGlzdFByb21pc2UiLCJwYXlsb2FkIiwiQlVJRCIsIkpTT04iLCJzdHJpbmdpZnkiLCJfc2VuZFBsaXN0IiwiTWVzc2FnZVR5cGUiLCJQcm9nTmFtZSIsIkNsaWVudFZlcnNpb25TdHJpbmciLCJyZWFkUGFpclJlY29yZCIsInVkaWQiLCJQYWlyUmVjb3JkRGF0YSIsInBsaXN0IiwicGFyc2VQbGlzdCIsIlBhaXJSZWNvcmRJRCIsImpzb24iLCJ3cml0ZSIsInJlc3BvbnNlQ2FsbGJhY2siLCJlIiwic2V0VGltZW91dCIsImxpc3REZXZpY2VzIiwiRGV2aWNlTGlzdCIsImZpbmREZXZpY2UiLCJkZXZpY2VzIiwiZmluZCIsImRldmljZSIsIlByb3BlcnRpZXMiLCJTZXJpYWxOdW1iZXIiLCJjb25uZWN0TG9ja2Rvd24iLCJjb25uZWN0IiwiRGV2aWNlSUQiLCJMT0NLRE9XTl9QT1JUIiwiTG9ja2Rvd24iLCJQbGlzdFNlcnZpY2UiLCJkZXZpY2VJRCIsInBvcnQiLCJOdW1iZXIiLCJzaHV0ZG93biIsInVucGlwZSIsIlBvcnROdW1iZXIiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLGNBQWMsR0FBRyxJQUFJQyxhQUEzQjtBQUVBLE1BQU1DLGFBQWEsR0FBRztBQUNwQkMsRUFBQUEsRUFBRSxFQUFFLENBRGdCO0FBRXBCQyxFQUFBQSxVQUFVLEVBQUUsQ0FGUTtBQUdwQkMsRUFBQUEsTUFBTSxFQUFFLENBSFk7QUFJcEJDLEVBQUFBLFdBQVcsRUFBRTtBQUpPLENBQXRCO0FBT0EsSUFBSUMsSUFBSixFQUFVQyxPQUFWOztBQUNBLElBQUk7QUFFRixHQUFDO0FBQUVELElBQUFBLElBQUY7QUFBUUMsSUFBQUE7QUFBUixNQUFvQkMsT0FBTyxDQUFDQyxjQUFLQyxPQUFMLENBQWFDLFNBQWIsRUFBd0IsSUFBeEIsRUFBOEIsSUFBOUIsRUFBb0MsSUFBcEMsRUFBMEMsY0FBMUMsQ0FBRCxDQUE1QjtBQUNELENBSEQsQ0FHRSxPQUFPQyxHQUFQLEVBQVk7QUFFWixHQUFDO0FBQUVOLElBQUFBLElBQUY7QUFBUUMsSUFBQUE7QUFBUixNQUFvQkMsT0FBTyxDQUFDQyxjQUFLQyxPQUFMLENBQWFDLFNBQWIsRUFBd0IsSUFBeEIsRUFBOEIsSUFBOUIsRUFBb0MsY0FBcEMsQ0FBRCxDQUE1QjtBQUNEOztBQUVELE1BQU1FLHNCQUFzQixHQUFHLGtCQUEvQjtBQUNBLE1BQU1DLG9CQUFvQixHQUFHLEtBQTdCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsV0FBN0I7QUFDQSxNQUFNQyxTQUFTLEdBQUdWLElBQWxCO0FBQ0EsTUFBTVcscUJBQXFCLEdBQUksR0FBRVgsSUFBSyxJQUFHQyxPQUFRLEVBQWpEOztBQUVBLFNBQVNXLE1BQVQsQ0FBaUJDLEdBQWpCLEVBQXNCO0FBQ3BCLFNBQVEsQ0FBQ0EsR0FBRyxHQUFHLElBQVAsS0FBZ0IsQ0FBakIsR0FBd0JBLEdBQUcsSUFBSSxDQUFSLEdBQWEsSUFBM0M7QUFDRDs7QUFzQkQsZUFBZUMsZ0JBQWYsQ0FBaUNDLElBQUksR0FBRyxFQUF4QyxFQUE0QztBQUMxQyxRQUFNO0FBQ0pDLElBQUFBLFVBQVUsR0FBR1Qsc0JBRFQ7QUFFSlUsSUFBQUEsVUFBVSxHQUFHVCxvQkFGVDtBQUdKVSxJQUFBQSxVQUFVLEdBQUdULG9CQUhUO0FBSUpVLElBQUFBLE9BQU8sR0FBRztBQUpOLE1BS0ZKLElBTEo7QUFPQSxNQUFJSyxNQUFKOztBQUNBLE1BQUksTUFBTUMsa0JBQUdDLE1BQUgsQ0FBVU4sVUFBVixDQUFWLEVBQWlDO0FBQy9CSSxJQUFBQSxNQUFNLEdBQUdHLGFBQUlDLGdCQUFKLENBQXFCUixVQUFyQixDQUFUO0FBQ0QsR0FGRCxNQUVPLElBQUlTLE9BQU8sQ0FBQ0MsUUFBUixLQUFxQixPQUFyQixJQUNIRCxPQUFPLENBQUNDLFFBQVIsS0FBcUIsT0FBckIsSUFBZ0MsYUFBYUMsSUFBYixDQUFrQkMsWUFBR0MsT0FBSCxFQUFsQixDQURqQyxFQUNtRTtBQUV4RVQsSUFBQUEsTUFBTSxHQUFHRyxhQUFJQyxnQkFBSixDQUFxQlAsVUFBckIsRUFBaUNDLFVBQWpDLENBQVQ7QUFDRCxHQUpNLE1BSUE7QUFDTCxVQUFNLElBQUlZLEtBQUosQ0FBVywwQkFBeUJkLFVBQVcsdUNBQS9DLENBQU47QUFDRDs7QUFFRCxTQUFPLE1BQU0sSUFBSWUsaUJBQUosQ0FBTSxDQUFDM0IsT0FBRCxFQUFVNEIsTUFBVixLQUFxQjtBQUN0Q1osSUFBQUEsTUFBTSxDQUFDYSxJQUFQLENBQVksT0FBWixFQUFxQkQsTUFBckI7QUFDQVosSUFBQUEsTUFBTSxDQUFDYSxJQUFQLENBQVksU0FBWixFQUF1QixNQUFNN0IsT0FBTyxDQUFDZ0IsTUFBRCxDQUFwQztBQUNELEdBSFksRUFHVkQsT0FIVSxDQUdGQSxPQUhFLENBQWI7QUFJRDs7QUFHRCxNQUFNZSxNQUFOLFNBQXFCQyw4QkFBckIsQ0FBdUM7QUFDckNDLEVBQUFBLFdBQVcsQ0FBRUMsWUFBRixFQUFnQjtBQUN6QixVQUFNQSxZQUFOO0FBRUEsU0FBS0MsUUFBTCxHQUFnQixJQUFJQyxzQkFBSixFQUFoQjtBQUNBLFNBQUtDLFNBQUwsR0FBaUIsSUFBSUMsNEJBQUosQ0FBd0I7QUFDdkNDLE1BQUFBLGNBQWMsRUFBRUwsWUFEdUI7QUFFdkNNLE1BQUFBLFlBQVksRUFBRSxJQUZ5QjtBQUd2Q0MsTUFBQUEsY0FBYyxFQUFFbkQsY0FIdUI7QUFJdkNvRCxNQUFBQSxpQkFBaUIsRUFBRSxDQUpvQjtBQUt2Q0MsTUFBQUEsaUJBQWlCLEVBQUUsQ0FMb0I7QUFNdkNDLE1BQUFBLGdCQUFnQixFQUFFO0FBTnFCLEtBQXhCLENBQWpCOztBQVFBLFNBQUtDLGFBQUwsQ0FBbUJDLElBQW5CLENBQXdCLEtBQUtULFNBQTdCLEVBQXdDUyxJQUF4QyxDQUE2QyxLQUFLWCxRQUFsRDs7QUFFQSxTQUFLWSxRQUFMLEdBQWdCLElBQUlDLHNCQUFKLEVBQWhCOztBQUNBLFNBQUtELFFBQUwsQ0FBY0QsSUFBZCxDQUFtQixLQUFLRCxhQUF4Qjs7QUFDQSxTQUFLSSw0QkFBTCxDQUFrQyxLQUFLRixRQUF2Qzs7QUFFQSxTQUFLRyxJQUFMLEdBQVksQ0FBWjtBQUNBLFNBQUtDLGtCQUFMLEdBQTBCLEVBQTFCOztBQUNBLFNBQUtoQixRQUFMLENBQWNpQixFQUFkLENBQWlCLE1BQWpCLEVBQXlCLEtBQUtDLFdBQUwsQ0FBaUJDLElBQWpCLENBQXNCLElBQXRCLENBQXpCO0FBQ0Q7O0FBRURELEVBQUFBLFdBQVcsQ0FBRUUsSUFBRixFQUFRO0FBQ2pCLFVBQU1DLEVBQUUsR0FBRyxLQUFLTCxrQkFBTCxDQUF3QkksSUFBSSxDQUFDRSxNQUFMLENBQVlDLEdBQXBDLEtBQTRDQyxnQkFBRUMsSUFBekQ7QUFDQUosSUFBQUEsRUFBRSxDQUFDRCxJQUFELENBQUY7QUFDRDs7QUFPRCxRQUFNTSxRQUFOLENBQWdCN0MsT0FBTyxHQUFHLElBQTFCLEVBQWdDO0FBQzlCLFVBQU07QUFBQzBDLE1BQUFBLEdBQUQ7QUFBTUksTUFBQUE7QUFBTixRQUF3QixLQUFLQyxvQkFBTCxDQUEwQi9DLE9BQTFCLEVBQW9DdUMsSUFBRCxJQUFVO0FBQ3pFLFVBQUlBLElBQUksQ0FBQ1MsT0FBTCxDQUFhQyxJQUFqQixFQUF1QjtBQUNyQixlQUFPVixJQUFJLENBQUNTLE9BQUwsQ0FBYUMsSUFBcEI7QUFDRDs7QUFDRCxZQUFNLElBQUl0QyxLQUFKLENBQVcsb0JBQW1CdUMsSUFBSSxDQUFDQyxTQUFMLENBQWVaLElBQWYsQ0FBcUIsRUFBbkQsQ0FBTjtBQUNELEtBTDZCLENBQTlCOztBQU9BLFNBQUthLFVBQUwsQ0FBZ0I7QUFDZFYsTUFBQUEsR0FEYztBQUVkTSxNQUFBQSxPQUFPLEVBQUU7QUFDUEssUUFBQUEsV0FBVyxFQUFFLFVBRE47QUFFUEMsUUFBQUEsUUFBUSxFQUFFL0QsU0FGSDtBQUdQZ0UsUUFBQUEsbUJBQW1CLEVBQUUvRDtBQUhkO0FBRkssS0FBaEI7O0FBU0EsV0FBTyxNQUFNc0QsY0FBYjtBQUNEOztBQVFELFFBQU1VLGNBQU4sQ0FBc0JDLElBQXRCLEVBQTRCekQsT0FBTyxHQUFHLElBQXRDLEVBQTRDO0FBQzFDLFVBQU07QUFBQzBDLE1BQUFBLEdBQUQ7QUFBTUksTUFBQUE7QUFBTixRQUF3QixLQUFLQyxvQkFBTCxDQUEwQi9DLE9BQTFCLEVBQW9DdUMsSUFBRCxJQUFVO0FBQ3pFLFVBQUksQ0FBQ0EsSUFBSSxDQUFDUyxPQUFMLENBQWFVLGNBQWxCLEVBQWtDO0FBQ2hDLGVBQU8sSUFBUDtBQUNEOztBQUNELFVBQUk7QUFDRixlQUFPQyxxQkFBTUMsVUFBTixDQUFpQnJCLElBQUksQ0FBQ1MsT0FBTCxDQUFhVSxjQUE5QixDQUFQO0FBQ0QsT0FGRCxDQUVFLE9BQU92RSxHQUFQLEVBQVk7QUFDWixjQUFNLElBQUl3QixLQUFKLENBQVcsb0JBQW1CdUMsSUFBSSxDQUFDQyxTQUFMLENBQWVaLElBQWYsQ0FBcUIsRUFBbkQsQ0FBTjtBQUNEO0FBQ0YsS0FUNkIsQ0FBOUI7O0FBV0EsU0FBS2EsVUFBTCxDQUFnQjtBQUNkVixNQUFBQSxHQURjO0FBRWRNLE1BQUFBLE9BQU8sRUFBRTtBQUNQSyxRQUFBQSxXQUFXLEVBQUUsZ0JBRE47QUFFUFEsUUFBQUEsWUFBWSxFQUFFSixJQUZQO0FBR1BILFFBQUFBLFFBQVEsRUFBRS9ELFNBSEg7QUFJUGdFLFFBQUFBLG1CQUFtQixFQUFFL0Q7QUFKZDtBQUZLLEtBQWhCOztBQVNBLFdBQU8sTUFBTXNELGNBQWI7QUFDRDs7QUFFRE0sRUFBQUEsVUFBVSxDQUFFVSxJQUFGLEVBQVE7QUFDaEIsU0FBSy9CLFFBQUwsQ0FBY2dDLEtBQWQsQ0FBb0JELElBQXBCO0FBQ0Q7O0FBRURmLEVBQUFBLG9CQUFvQixDQUFFL0MsT0FBTyxHQUFHLElBQVosRUFBa0JnRSxnQkFBbEIsRUFBb0M7QUFDdEQsVUFBTXRCLEdBQUcsR0FBRyxLQUFLUixJQUFMLEVBQVo7QUFDQSxVQUFNWSxjQUFjLEdBQUcsSUFBSWxDLGlCQUFKLENBQU0sQ0FBQzNCLE9BQUQsRUFBVTRCLE1BQVYsS0FBcUI7QUFDaEQsV0FBS3NCLGtCQUFMLENBQXdCTyxHQUF4QixJQUFnQ0gsSUFBRCxJQUFVO0FBQ3ZDLFlBQUk7QUFDRnRELFVBQUFBLE9BQU8sQ0FBQytFLGdCQUFnQixDQUFDekIsSUFBRCxDQUFqQixDQUFQO0FBQ0QsU0FGRCxDQUVFLE9BQU8wQixDQUFQLEVBQVU7QUFDVnBELFVBQUFBLE1BQU0sQ0FBQ29ELENBQUQsQ0FBTjtBQUNEO0FBQ0YsT0FORDs7QUFPQUMsTUFBQUEsVUFBVSxDQUFDLE1BQU1yRCxNQUFNLENBQUMsSUFBSUYsS0FBSixDQUFXLGtEQUFpRFgsT0FBUSxFQUFwRSxDQUFELENBQWIsRUFBdUZBLE9BQXZGLENBQVY7QUFDRCxLQVRzQixDQUF2QjtBQVVBLFdBQU87QUFBQzBDLE1BQUFBLEdBQUQ7QUFBTUksTUFBQUE7QUFBTixLQUFQO0FBQ0Q7O0FBT0QsUUFBTXFCLFdBQU4sQ0FBbUJuRSxPQUFPLEdBQUcsSUFBN0IsRUFBbUM7QUFDakMsVUFBTTtBQUFDMEMsTUFBQUEsR0FBRDtBQUFNSSxNQUFBQTtBQUFOLFFBQXdCLEtBQUtDLG9CQUFMLENBQTBCL0MsT0FBMUIsRUFBb0N1QyxJQUFELElBQVU7QUFDekUsVUFBSUEsSUFBSSxDQUFDUyxPQUFMLENBQWFvQixVQUFqQixFQUE2QjtBQUMzQixlQUFPN0IsSUFBSSxDQUFDUyxPQUFMLENBQWFvQixVQUFwQjtBQUNEOztBQUNELFlBQU0sSUFBSXpELEtBQUosQ0FBVyxvQkFBbUJ1QyxJQUFJLENBQUNDLFNBQUwsQ0FBZVosSUFBZixDQUFxQixFQUFuRCxDQUFOO0FBQ0QsS0FMNkIsQ0FBOUI7O0FBT0EsU0FBS2EsVUFBTCxDQUFnQjtBQUNkVixNQUFBQSxHQURjO0FBRWRNLE1BQUFBLE9BQU8sRUFBRTtBQUNQSyxRQUFBQSxXQUFXLEVBQUUsYUFETjtBQUVQQyxRQUFBQSxRQUFRLEVBQUUvRCxTQUZIO0FBR1BnRSxRQUFBQSxtQkFBbUIsRUFBRS9EO0FBSGQ7QUFGSyxLQUFoQjs7QUFTQSxXQUFPLE1BQU1zRCxjQUFiO0FBQ0Q7O0FBUUQsUUFBTXVCLFVBQU4sQ0FBa0JaLElBQWxCLEVBQXdCekQsT0FBTyxHQUFHLElBQWxDLEVBQXdDO0FBQ3RDLFVBQU1zRSxPQUFPLEdBQUcsTUFBTSxLQUFLSCxXQUFMLENBQWlCbkUsT0FBakIsQ0FBdEI7QUFDQSxXQUFPMkMsZ0JBQUU0QixJQUFGLENBQU9ELE9BQVAsRUFBaUJFLE1BQUQsSUFBWUEsTUFBTSxDQUFDQyxVQUFQLENBQWtCQyxZQUFsQixLQUFtQ2pCLElBQS9ELENBQVA7QUFDRDs7QUFRRCxRQUFNa0IsZUFBTixDQUF1QmxCLElBQXZCLEVBQTZCekQsT0FBTyxHQUFHLElBQXZDLEVBQTZDO0FBQzNDLFVBQU13RSxNQUFNLEdBQUcsTUFBTSxLQUFLSCxVQUFMLENBQWdCWixJQUFoQixFQUFzQnpELE9BQXRCLENBQXJCOztBQUNBLFFBQUksQ0FBQ3dFLE1BQUwsRUFBYTtBQUNYLFlBQU0sSUFBSTdELEtBQUosQ0FBVyx1Q0FBc0M4QyxJQUFLLEdBQXRELENBQU47QUFDRDs7QUFDRCxVQUFNeEQsTUFBTSxHQUFHLE1BQU0sS0FBSzJFLE9BQUwsQ0FBYUosTUFBTSxDQUFDQyxVQUFQLENBQWtCSSxRQUEvQixFQUF5Q0MsdUJBQXpDLEVBQXdEOUUsT0FBeEQsQ0FBckI7QUFDQSxXQUFPLElBQUkrRSxrQkFBSixDQUFhLElBQUlDLHFCQUFKLENBQWlCL0UsTUFBakIsQ0FBYixDQUFQO0FBQ0Q7O0FBU0QsUUFBTTJFLE9BQU4sQ0FBZUssUUFBZixFQUF5QkMsSUFBekIsRUFBK0JsRixPQUFPLEdBQUcsSUFBekMsRUFBK0M7QUFDN0MsVUFBTTtBQUFDMEMsTUFBQUEsR0FBRDtBQUFNSSxNQUFBQTtBQUFOLFFBQXdCLEtBQUtDLG9CQUFMLENBQTBCL0MsT0FBMUIsRUFBb0N1QyxJQUFELElBQVU7QUFDekUsVUFBSUEsSUFBSSxDQUFDUyxPQUFMLENBQWFLLFdBQWIsS0FBNkIsUUFBakMsRUFBMkM7QUFDekMsY0FBTSxJQUFJMUMsS0FBSixDQUFXLG9CQUFtQnVDLElBQUksQ0FBQ0MsU0FBTCxDQUFlWixJQUFmLENBQXFCLEVBQW5ELENBQU47QUFDRDs7QUFDRCxVQUFJQSxJQUFJLENBQUNTLE9BQUwsQ0FBYW1DLE1BQWIsS0FBd0IzRyxhQUFhLENBQUNDLEVBQTFDLEVBQThDO0FBQzVDLGFBQUs0QyxTQUFMLENBQWUrRCxRQUFmOztBQUNBLGFBQUt2RCxhQUFMLENBQW1Cd0QsTUFBbkIsQ0FBMEIsS0FBS2hFLFNBQS9COztBQUNBLGFBQUtBLFNBQUwsQ0FBZWdFLE1BQWYsQ0FBc0IsS0FBS2xFLFFBQTNCOztBQUNBLGVBQU8sS0FBS1UsYUFBWjtBQUNELE9BTEQsTUFLTyxJQUFJVSxJQUFJLENBQUNTLE9BQUwsQ0FBYW1DLE1BQWIsS0FBd0IzRyxhQUFhLENBQUNJLFdBQTFDLEVBQXVEO0FBQzVELGNBQU0sSUFBSStCLEtBQUosQ0FBVyxrQ0FBaUN1RSxJQUFLLEVBQWpELENBQU47QUFDRCxPQUZNLE1BRUE7QUFDTCxjQUFNLElBQUl2RSxLQUFKLENBQVcsb0JBQW1CdUMsSUFBSSxDQUFDQyxTQUFMLENBQWVaLElBQWYsQ0FBcUIsRUFBbkQsQ0FBTjtBQUNEO0FBQ0YsS0FkNkIsQ0FBOUI7O0FBZ0JBLFNBQUthLFVBQUwsQ0FBZ0I7QUFDZFYsTUFBQUEsR0FEYztBQUVkTSxNQUFBQSxPQUFPLEVBQUU7QUFDUEssUUFBQUEsV0FBVyxFQUFFLFNBRE47QUFFUEMsUUFBQUEsUUFBUSxFQUFFL0QsU0FGSDtBQUdQZ0UsUUFBQUEsbUJBQW1CLEVBQUUvRCxxQkFIZDtBQUlQcUYsUUFBQUEsUUFBUSxFQUFFSSxRQUpIO0FBS1BLLFFBQUFBLFVBQVUsRUFBRTdGLE1BQU0sQ0FBQ3lGLElBQUQ7QUFMWDtBQUZLLEtBQWhCOztBQVdBLFdBQU8sTUFBTXBDLGNBQWI7QUFDRDs7QUE5TG9DOzs7ZUFrTXhCL0IsTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBuZXQgZnJvbSAnbmV0JztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHsgcGxpc3QsIGZzIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IExlbmd0aEJhc2VkU3BsaXR0ZXIgZnJvbSAnLi4vdXRpbC90cmFuc2Zvcm1lci9sZW5ndGgtYmFzZWQtc3BsaXR0ZXInO1xuaW1wb3J0IFVzYm11eERlY29kZXIgZnJvbSAnLi90cmFuc2Zvcm1lci91c2JtdXgtZGVjb2Rlci5qcyc7XG5pbXBvcnQgVXNibXV4RW5jb2RlciBmcm9tICcuL3RyYW5zZm9ybWVyL3VzYm11eC1lbmNvZGVyLmpzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IFBsaXN0U2VydmljZSBmcm9tICcuLi9wbGlzdC1zZXJ2aWNlJztcbmltcG9ydCB7IExvY2tkb3duLCBMT0NLRE9XTl9QT1JUIH0gZnJvbSAnLi4vbG9ja2Rvd24nO1xuaW1wb3J0IHsgQmFzZVNlcnZpY2VTb2NrZXQgfSBmcm9tICcuLi9iYXNlLXNlcnZpY2UnO1xuaW1wb3J0IHsgTUIgfSBmcm9tICcuLi9jb25zdGFudHMnO1xuXG5cbmNvbnN0IE1BWF9GUkFNRV9TSVpFID0gMSAqIE1CO1xuXG5jb25zdCBVU0JNVVhfUkVTVUxUID0ge1xuICBPSzogMCxcbiAgQkFEQ09NTUFORDogMSxcbiAgQkFEREVWOiAyLFxuICBDT05OUkVGVVNFRDogMyxcbn07XG5cbmxldCBuYW1lLCB2ZXJzaW9uO1xudHJ5IHtcbiAgLy8gZmlyc3QgdHJ5IGFzc3VtaW5nIHRoaXMgaXMgaW4gdGhlIGBidWlsZGAgZm9sZGVyXG4gICh7IG5hbWUsIHZlcnNpb24gfSA9IHJlcXVpcmUocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJy4uJywgJ3BhY2thZ2UuanNvbicpKSk7XG59IGNhdGNoIChlcnIpIHtcbiAgLy8gdGhlbiB0cnkgYXNzdW1pbmcgaXQgaXMgbm90XG4gICh7IG5hbWUsIHZlcnNpb24gfSA9IHJlcXVpcmUocGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ3BhY2thZ2UuanNvbicpKSk7XG59XG5cbmNvbnN0IERFRkFVTFRfVVNCTVVYRF9TT0NLRVQgPSAnL3Zhci9ydW4vdXNibXV4ZCc7XG5jb25zdCBERUZBVUxUX1VTQk1VWERfUE9SVCA9IDI3MDE1O1xuY29uc3QgREVGQVVMVF9VU0JNVVhEX0hPU1QgPSAnMTI3LjAuMC4xJztcbmNvbnN0IFBST0dfTkFNRSA9IG5hbWU7XG5jb25zdCBDTElFTlRfVkVSU0lPTl9TVFJJTkcgPSBgJHtuYW1lfS0ke3ZlcnNpb259YDtcblxuZnVuY3Rpb24gc3dhcDE2ICh2YWwpIHtcbiAgcmV0dXJuICgodmFsICYgMHhGRikgPDwgOCkgfCAoKHZhbCA+PiA4KSAmIDB4RkYpO1xufVxuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFNvY2tldE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc29ja2V0UGF0aCBbL3Zhci9ydW4vdXNibXV4ZF0gVGhlIGZ1bGwgcGF0aCB0byB0aGUgdXNibXV4ZCBVbml4IHNvY2tldFxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzb2NrZXRQb3J0IFsyNzAxNV0gVGhlIHBvcnQgbnVtYmVyIHRvIGNvbm5lY3QgdG8gaWYgcnVubmluZyBvbiBXaW5kb3dzXG4gKiBvciBpbiBXU0wxIG1vZGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc29ja2V0SG9zdCBbMTI3LjAuMC4xXSBUaGUgaG9zdCBuYW1lIHRvIGNvbm5lY3QgdG8gaWYgcnVubmluZyBvbiBXaW5kb3dzXG4gKiBvciBpbiBXU0wxIG1vZGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdGltZW91dCBbNTAwMF0gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgdG8gd2FpdCB1bnRpbFxuICogdGhlIHNvY2tldCBpcyBjb25uZWN0ZWRcbiAqL1xuXG4vKipcbiAqIENvbm5lY3RzIGEgc29ja2V0IHRvIHVzYm11eGQgc2VydmljZVxuICpcbiAqIEBwYXJhbSB7P1NvY2tldE9wdGlvbnN9IG9wdHNcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGVyZSB3YXMgYW4gZXJyb3Igd2hpbGUgYWNjZXNzaW5nIHRoZSBzb2NrZXQgb3JcbiAqIGEgY29ubmVjdGlvbiBlcnJvciBoYXBwZW5lZFxuICogQHRocm93cyB7Qi5UaW1lb3V0RXJyb3J9IGlmIGNvbm5lY3Rpb24gdGltZW91dCBoYXBwZW5lZFxuICogQHJldHVybnMge25ldC5Tb2NrZXR9IENvbm5lY3RlZCBzb2NrZXQgaW5zdGFuY2VcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0RGVmYXVsdFNvY2tldCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHtcbiAgICBzb2NrZXRQYXRoID0gREVGQVVMVF9VU0JNVVhEX1NPQ0tFVCxcbiAgICBzb2NrZXRQb3J0ID0gREVGQVVMVF9VU0JNVVhEX1BPUlQsXG4gICAgc29ja2V0SG9zdCA9IERFRkFVTFRfVVNCTVVYRF9IT1NULFxuICAgIHRpbWVvdXQgPSA1MDAwLFxuICB9ID0gb3B0cztcblxuICBsZXQgc29ja2V0O1xuICBpZiAoYXdhaXQgZnMuZXhpc3RzKHNvY2tldFBhdGgpKSB7XG4gICAgc29ja2V0ID0gbmV0LmNyZWF0ZUNvbm5lY3Rpb24oc29ja2V0UGF0aCk7XG4gIH0gZWxzZSBpZiAocHJvY2Vzcy5wbGF0Zm9ybSA9PT0gJ3dpbjMyJ1xuICAgICAgfHwgKHByb2Nlc3MucGxhdGZvcm0gPT09ICdsaW51eCcgJiYgL21pY3Jvc29mdC9pLnRlc3Qob3MucmVsZWFzZSgpKSkpIHtcbiAgICAvLyBDb25uZWN0IHRvIHVzYm11eGQgd2hlbiBydW5uaW5nIG9uIFdTTDFcbiAgICBzb2NrZXQgPSBuZXQuY3JlYXRlQ29ubmVjdGlvbihzb2NrZXRQb3J0LCBzb2NrZXRIb3N0KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSB1c2JtdXhkIHNvY2tldCBhdCAnJHtzb2NrZXRQYXRofScgZG9lcyBub3QgZXhpc3Qgb3IgaXMgbm90IGFjY2Vzc2libGVgKTtcbiAgfVxuXG4gIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgc29ja2V0Lm9uY2UoJ2Vycm9yJywgcmVqZWN0KTtcbiAgICBzb2NrZXQub25jZSgnY29ubmVjdCcsICgpID0+IHJlc29sdmUoc29ja2V0KSk7XG4gIH0pLnRpbWVvdXQodGltZW91dCk7XG59XG5cblxuY2xhc3MgVXNibXV4IGV4dGVuZHMgQmFzZVNlcnZpY2VTb2NrZXQge1xuICBjb25zdHJ1Y3RvciAoc29ja2V0Q2xpZW50KSB7XG4gICAgc3VwZXIoc29ja2V0Q2xpZW50KTtcblxuICAgIHRoaXMuX2RlY29kZXIgPSBuZXcgVXNibXV4RGVjb2RlcigpO1xuICAgIHRoaXMuX3NwbGl0dGVyID0gbmV3IExlbmd0aEJhc2VkU3BsaXR0ZXIoe1xuICAgICAgcmVhZGFibGVTdHJlYW06IHNvY2tldENsaWVudCxcbiAgICAgIGxpdHRsZUVuZGlhbjogdHJ1ZSxcbiAgICAgIG1heEZyYW1lTGVuZ3RoOiBNQVhfRlJBTUVfU0laRSxcbiAgICAgIGxlbmd0aEZpZWxkT2Zmc2V0OiAwLFxuICAgICAgbGVuZ3RoRmllbGRMZW5ndGg6IDQsXG4gICAgICBsZW5ndGhBZGp1c3RtZW50OiAwLFxuICAgIH0pO1xuICAgIHRoaXMuX3NvY2tldENsaWVudC5waXBlKHRoaXMuX3NwbGl0dGVyKS5waXBlKHRoaXMuX2RlY29kZXIpO1xuXG4gICAgdGhpcy5fZW5jb2RlciA9IG5ldyBVc2JtdXhFbmNvZGVyKCk7XG4gICAgdGhpcy5fZW5jb2Rlci5waXBlKHRoaXMuX3NvY2tldENsaWVudCk7XG4gICAgdGhpcy5fYXNzaWduQ2xpZW50RmFpbHVyZUhhbmRsZXJzKHRoaXMuX2VuY29kZXIpO1xuXG4gICAgdGhpcy5fdGFnID0gMDtcbiAgICB0aGlzLl9yZXNwb25zZUNhbGxiYWNrcyA9IHt9O1xuICAgIHRoaXMuX2RlY29kZXIub24oJ2RhdGEnLCB0aGlzLl9oYW5kbGVEYXRhLmJpbmQodGhpcykpO1xuICB9XG5cbiAgX2hhbmRsZURhdGEgKGRhdGEpIHtcbiAgICBjb25zdCBjYiA9IHRoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW2RhdGEuaGVhZGVyLnRhZ10gfHwgXy5ub29wO1xuICAgIGNiKGRhdGEpOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLWNhbGxiYWNrc1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIEJVSUQgb2YgdGhlIGhvc3QgY29tcHV0ZXIgZnJvbSB1c2JtdXhkXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBbdGltZW91dD01MDAwXSB0aGUgdGltZW91dCBvZiByZWNlaXZpbmcgYSByZXNwb25zZSBmcm9tIHVzYm11eGRcbiAgICogQHJldHVybnMge3N0cmluZ31cbiAgICovXG4gIGFzeW5jIHJlYWRCVUlEICh0aW1lb3V0ID0gNTAwMCkge1xuICAgIGNvbnN0IHt0YWcsIHJlY2VpdmVQcm9taXNlfSA9IHRoaXMuX3JlY2VpdmVQbGlzdFByb21pc2UodGltZW91dCwgKGRhdGEpID0+IHtcbiAgICAgIGlmIChkYXRhLnBheWxvYWQuQlVJRCkge1xuICAgICAgICByZXR1cm4gZGF0YS5wYXlsb2FkLkJVSUQ7XG4gICAgICB9XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcbiAgICB9KTtcblxuICAgIHRoaXMuX3NlbmRQbGlzdCh7XG4gICAgICB0YWcsXG4gICAgICBwYXlsb2FkOiB7XG4gICAgICAgIE1lc3NhZ2VUeXBlOiAnUmVhZEJVSUQnLFxuICAgICAgICBQcm9nTmFtZTogUFJPR19OQU1FLFxuICAgICAgICBDbGllbnRWZXJzaW9uU3RyaW5nOiBDTElFTlRfVkVSU0lPTl9TVFJJTkdcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHJldHVybiBhd2FpdCByZWNlaXZlUHJvbWlzZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgcGFpciByZWNvcmQgb2YgYSBkZXZpY2UuIEl0IHdpbGwgcmV0dXJuIG51bGwgaWYgaXQgZG9lc24ndCBleGlzdHNcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVkaWQgdGhlIHVkaWQgb2YgdGhlIGRldmljZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVvdXQ9NTAwMF0gdGhlIHRpbWVvdXQgb2YgcmVjZWl2aW5nIGEgcmVzcG9uc2UgZnJvbSB1c2JtdXhkXG4gICAqIEByZXR1cm5zIHs/T2JqZWN0fVxuICAgKi9cbiAgYXN5bmMgcmVhZFBhaXJSZWNvcmQgKHVkaWQsIHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3Qge3RhZywgcmVjZWl2ZVByb21pc2V9ID0gdGhpcy5fcmVjZWl2ZVBsaXN0UHJvbWlzZSh0aW1lb3V0LCAoZGF0YSkgPT4ge1xuICAgICAgaWYgKCFkYXRhLnBheWxvYWQuUGFpclJlY29yZERhdGEpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gcGxpc3QucGFyc2VQbGlzdChkYXRhLnBheWxvYWQuUGFpclJlY29yZERhdGEpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5leHBlY3RlZCBkYXRhOiAke0pTT04uc3RyaW5naWZ5KGRhdGEpfWApO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgdGhpcy5fc2VuZFBsaXN0KHtcbiAgICAgIHRhZyxcbiAgICAgIHBheWxvYWQ6IHtcbiAgICAgICAgTWVzc2FnZVR5cGU6ICdSZWFkUGFpclJlY29yZCcsXG4gICAgICAgIFBhaXJSZWNvcmRJRDogdWRpZCxcbiAgICAgICAgUHJvZ05hbWU6IFBST0dfTkFNRSxcbiAgICAgICAgQ2xpZW50VmVyc2lvblN0cmluZzogQ0xJRU5UX1ZFUlNJT05fU1RSSU5HXG4gICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGF3YWl0IHJlY2VpdmVQcm9taXNlO1xuICB9XG5cbiAgX3NlbmRQbGlzdCAoanNvbikge1xuICAgIHRoaXMuX2VuY29kZXIud3JpdGUoanNvbik7XG4gIH1cblxuICBfcmVjZWl2ZVBsaXN0UHJvbWlzZSAodGltZW91dCA9IDUwMDAsIHJlc3BvbnNlQ2FsbGJhY2spIHtcbiAgICBjb25zdCB0YWcgPSB0aGlzLl90YWcrKztcbiAgICBjb25zdCByZWNlaXZlUHJvbWlzZSA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIHRoaXMuX3Jlc3BvbnNlQ2FsbGJhY2tzW3RhZ10gPSAoZGF0YSkgPT4ge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHJlc29sdmUocmVzcG9uc2VDYWxsYmFjayhkYXRhKSk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZWplY3QoZSk7XG4gICAgICAgIH1cbiAgICAgIH07XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoYEZhaWxlZCB0byByZWNlaXZlIGFueSBkYXRhIHdpdGhpbiB0aGUgdGltZW91dDogJHt0aW1lb3V0fWApKSwgdGltZW91dCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIHt0YWcsIHJlY2VpdmVQcm9taXNlfTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMaXN0cyBhbGwgZGV2aWNlcyBjb25uZWN0ZWQgdG8gdGhlIGhvc3RcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gdXNibXV4ZFxuICAgKiBAcmV0dXJucyB7QXJyYXl9XG4gICAqL1xuICBhc3luYyBsaXN0RGV2aWNlcyAodGltZW91dCA9IDUwMDApIHtcbiAgICBjb25zdCB7dGFnLCByZWNlaXZlUHJvbWlzZX0gPSB0aGlzLl9yZWNlaXZlUGxpc3RQcm9taXNlKHRpbWVvdXQsIChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YS5wYXlsb2FkLkRldmljZUxpc3QpIHtcbiAgICAgICAgcmV0dXJuIGRhdGEucGF5bG9hZC5EZXZpY2VMaXN0O1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zZW5kUGxpc3Qoe1xuICAgICAgdGFnLFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICBNZXNzYWdlVHlwZTogJ0xpc3REZXZpY2VzJyxcbiAgICAgICAgUHJvZ05hbWU6IFBST0dfTkFNRSxcbiAgICAgICAgQ2xpZW50VmVyc2lvblN0cmluZzogQ0xJRU5UX1ZFUlNJT05fU1RSSU5HXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgcmVjZWl2ZVByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogTG9va3MgZm9yIGEgZGV2aWNlIHdpdGggdGhlIHBhc3NlZCB1ZGlkLiBJdCB3aWxsIHJldHVybiB1bmRlZmluZWQgaWYgdGhlIGRldmljZSBpcyBub3QgZm91bmRcbiAgICogQHBhcmFtIHtzdHJpbmd9IHVkaWQgdGhlIHVkaWQgb2YgdGhlIGRldmljZVxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVvdXQ9NTAwMF0gdGhlIHRpbWVvdXQgb2YgcmVjZWl2aW5nIGEgcmVzcG9uc2UgZnJvbSB1c2JtdXhkXG4gICAqIEByZXR1cm5zIHs/T2JqZWN0fVxuICAgKi9cbiAgYXN5bmMgZmluZERldmljZSAodWRpZCwgdGltZW91dCA9IDUwMDApIHtcbiAgICBjb25zdCBkZXZpY2VzID0gYXdhaXQgdGhpcy5saXN0RGV2aWNlcyh0aW1lb3V0KTtcbiAgICByZXR1cm4gXy5maW5kKGRldmljZXMsIChkZXZpY2UpID0+IGRldmljZS5Qcm9wZXJ0aWVzLlNlcmlhbE51bWJlciA9PT0gdWRpZCk7XG4gIH1cblxuICAvKipcbiAgICogQ29ubmVjdHMgdG8gdGhlIGxvY2tkb3duZCBvbiB0aGUgZGV2aWNlIGFuZCByZXR1cm5zIGEgTG9ja2Rvd24gY2xpZW50XG4gICAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIHRoZSB1ZGlkIG9mIHRoZSBkZXZpY2VcbiAgICogQHBhcmFtIHtudW1iZXJ9IFt0aW1lb3V0PTUwMDBdIHRoZSB0aW1lb3V0IG9mIHJlY2VpdmluZyBhIHJlc3BvbnNlIGZyb20gdXNibXV4ZFxuICAgKiBAcmV0dXJucyB7TG9ja2Rvd259XG4gICAqL1xuICBhc3luYyBjb25uZWN0TG9ja2Rvd24gKHVkaWQsIHRpbWVvdXQgPSA1MDAwKSB7XG4gICAgY29uc3QgZGV2aWNlID0gYXdhaXQgdGhpcy5maW5kRGV2aWNlKHVkaWQsIHRpbWVvdXQpO1xuICAgIGlmICghZGV2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHRoZSBleHBlY3RlZCBkZXZpY2UgJyR7dWRpZH0nYCk7XG4gICAgfVxuICAgIGNvbnN0IHNvY2tldCA9IGF3YWl0IHRoaXMuY29ubmVjdChkZXZpY2UuUHJvcGVydGllcy5EZXZpY2VJRCwgTE9DS0RPV05fUE9SVCwgdGltZW91dCk7XG4gICAgcmV0dXJuIG5ldyBMb2NrZG93bihuZXcgUGxpc3RTZXJ2aWNlKHNvY2tldCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIENvbm5lY3RzIHRvIGEgY2VydGFpbiBwb3J0IG9uIHRoZSBkZXZpY2VcbiAgICogQHBhcmFtIHtzdHJpbmd9IGRldmljZUlEIHRoZSBkZXZpY2UgaWQgd2hpY2ggY2FuIGJlIHJldHJpZXZlZCBmcm9tIHRoZSBwcm9wZXJ0aWVzIG9mIGEgZGV2aWNlXG4gICAqIEBwYXJhbSB7bnVtYmVyfSBwb3J0IHRoZSBwb3J0IG51bWJlciB0aGF0IHdhbnRzIHRvIGJlIGNvbm5lY3RlZFxuICAgKiBAcGFyYW0ge251bWJlcn0gW3RpbWVvdXQ9NTAwMF0gdGhlIHRpbWVvdXQgb2YgcmVjZWl2aW5nIGEgcmVzcG9uc2UgZnJvbSB1c2JtdXhkXG4gICAqIEByZXR1cm5zIHtuZXQuU29ja2V0fE9iamVjdH0gVGhlIHNvY2tldCBvciB0aGUgb2JqZWN0IHJldHVybmVkIGluIHRoZSBjYWxsYmFjayBpZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gZXhpc3RzXG4gICAqL1xuICBhc3luYyBjb25uZWN0IChkZXZpY2VJRCwgcG9ydCwgdGltZW91dCA9IDUwMDApIHtcbiAgICBjb25zdCB7dGFnLCByZWNlaXZlUHJvbWlzZX0gPSB0aGlzLl9yZWNlaXZlUGxpc3RQcm9taXNlKHRpbWVvdXQsIChkYXRhKSA9PiB7XG4gICAgICBpZiAoZGF0YS5wYXlsb2FkLk1lc3NhZ2VUeXBlICE9PSAnUmVzdWx0Jykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFVuZXhwZWN0ZWQgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhKX1gKTtcbiAgICAgIH1cbiAgICAgIGlmIChkYXRhLnBheWxvYWQuTnVtYmVyID09PSBVU0JNVVhfUkVTVUxULk9LKSB7XG4gICAgICAgIHRoaXMuX3NwbGl0dGVyLnNodXRkb3duKCk7XG4gICAgICAgIHRoaXMuX3NvY2tldENsaWVudC51bnBpcGUodGhpcy5fc3BsaXR0ZXIpO1xuICAgICAgICB0aGlzLl9zcGxpdHRlci51bnBpcGUodGhpcy5fZGVjb2Rlcik7XG4gICAgICAgIHJldHVybiB0aGlzLl9zb2NrZXRDbGllbnQ7XG4gICAgICB9IGVsc2UgaWYgKGRhdGEucGF5bG9hZC5OdW1iZXIgPT09IFVTQk1VWF9SRVNVTFQuQ09OTlJFRlVTRUQpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb25uZWN0aW9uIHdhcyByZWZ1c2VkIHRvIHBvcnQgJHtwb3J0fWApO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmV4cGVjdGVkIGRhdGE6ICR7SlNPTi5zdHJpbmdpZnkoZGF0YSl9YCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLl9zZW5kUGxpc3Qoe1xuICAgICAgdGFnLFxuICAgICAgcGF5bG9hZDoge1xuICAgICAgICBNZXNzYWdlVHlwZTogJ0Nvbm5lY3QnLFxuICAgICAgICBQcm9nTmFtZTogUFJPR19OQU1FLFxuICAgICAgICBDbGllbnRWZXJzaW9uU3RyaW5nOiBDTElFTlRfVkVSU0lPTl9TVFJJTkcsXG4gICAgICAgIERldmljZUlEOiBkZXZpY2VJRCxcbiAgICAgICAgUG9ydE51bWJlcjogc3dhcDE2KHBvcnQpXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gYXdhaXQgcmVjZWl2ZVByb21pc2U7XG4gIH1cbn1cblxuZXhwb3J0IHsgVXNibXV4LCBnZXREZWZhdWx0U29ja2V0IH07XG5leHBvcnQgZGVmYXVsdCBVc2JtdXg7XG4iXSwiZmlsZSI6ImxpYi91c2JtdXgvaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -32,6 +32,9 @@ const LOCKDOWN_REQUEST = {
32
32
  DEVICE_UTC_OFFSET: {
33
33
  Key: 'TimeZoneOffsetFromUTC'
34
34
  },
35
+ DEVICE_TIME_ZONE: {
36
+ Key: 'TimeZone'
37
+ },
35
38
  DEVICE_VERSION: {
36
39
  Key: 'ProductVersion'
37
40
  },
@@ -86,11 +89,10 @@ async function getDeviceTime(udid, socket = null) {
86
89
  const lockdown = await startLockdownSession(udid, socket);
87
90
 
88
91
  try {
89
- const timestamp = await lockdown.getValue(LOCKDOWN_REQUEST.DEVICE_TIME);
90
- const utcOffset = (await lockdown.getValue(LOCKDOWN_REQUEST.DEVICE_UTC_OFFSET)) / 60;
91
92
  return {
92
- timestamp,
93
- utcOffset
93
+ timestamp: await lockdown.getValue(LOCKDOWN_REQUEST.DEVICE_TIME),
94
+ utcOffset: (await lockdown.getValue(LOCKDOWN_REQUEST.DEVICE_UTC_OFFSET)) / 60,
95
+ timeZone: await lockdown.getValue(LOCKDOWN_REQUEST.DEVICE_TIME_ZONE)
94
96
  };
95
97
  } finally {
96
98
  lockdown.close();
@@ -159,4 +161,4 @@ async function connectPort(udid, port, socket = null) {
159
161
  }require('source-map-support').install();
160
162
 
161
163
 
162
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlsaXRpZXMuanMiXSwibmFtZXMiOlsiTE9DS0RPV05fUkVRVUVTVCIsIkRFVklDRV9USU1FIiwiS2V5IiwiREVWSUNFX1VUQ19PRkZTRVQiLCJERVZJQ0VfVkVSU0lPTiIsIkRFVklDRV9OQU1FIiwiZ2V0Q29ubmVjdGVkRGV2aWNlcyIsInNvY2tldCIsInVzYm11eCIsIlVzYm11eCIsImUiLCJsb2ciLCJkZWJ1ZyIsImRldmljZXMiLCJsaXN0RGV2aWNlcyIsInVkaWRzIiwibWFwIiwiZGV2aWNlIiwiUHJvcGVydGllcyIsIlNlcmlhbE51bWJlciIsIl8iLCJ1bmlxIiwiY2xvc2UiLCJnZXRPU1ZlcnNpb24iLCJ1ZGlkIiwibG9ja2Rvd24iLCJjb25uZWN0TG9ja2Rvd24iLCJnZXRWYWx1ZSIsImdldERldmljZU5hbWUiLCJnZXREZXZpY2VUaW1lIiwic3RhcnRMb2NrZG93blNlc3Npb24iLCJ0aW1lc3RhbXAiLCJ1dGNPZmZzZXQiLCJwYWlyUmVjb3JkIiwicmVhZFBhaXJSZWNvcmQiLCJFcnJvciIsInN0YXJ0U2Vzc2lvbiIsIkhvc3RJRCIsIlN5c3RlbUJVSUQiLCJlbmFibGVTZXNzaW9uU1NMIiwiSG9zdFByaXZhdGVLZXkiLCJIb3N0Q2VydGlmaWNhdGUiLCJjb25uZWN0UG9ydFNTTCIsInBvcnQiLCJmaW5kRGV2aWNlIiwiY29ubmVjdCIsIkRldmljZUlEIiwidW5kZWZpbmVkIiwiY29ubmVjdFBvcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxnQkFBZ0IsR0FBRztBQUN2QkMsRUFBQUEsV0FBVyxFQUFFO0FBQUVDLElBQUFBLEdBQUcsRUFBRTtBQUFQLEdBRFU7QUFFdkJDLEVBQUFBLGlCQUFpQixFQUFFO0FBQUVELElBQUFBLEdBQUcsRUFBRTtBQUFQLEdBRkk7QUFHdkJFLEVBQUFBLGNBQWMsRUFBRTtBQUFFRixJQUFBQSxHQUFHLEVBQUU7QUFBUCxH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QVAsQ0FBZTVCLE1BQU0sQ0FBQ0MsVUFBUCxDQUFrQjRCLFFBQWpDLEVBQTJDSCxJQUEzQyxFQUFpREksU0FBakQsQ0FBckI7QUFDQSxXQUFPLDZCQUFheEMsTUFBYixFQUFxQjBCLFVBQVUsQ0FBQ08sY0FBaEMsRUFBZ0RQLFVBQVUsQ0FBQ1EsZUFBM0QsQ0FBUDtBQUNELEdBWEQsQ0FXRSxPQUFPL0IsQ0FBUCxFQUFVO0FBQ1ZGLElBQUFBLE1BQU0sQ0FBQ2MsS0FBUDtBQUNBLFVBQU1aLENBQU47QUFDRDtBQUNGOztBQVVELGVBQWVzQyxXQUFmLENBQTRCeEIsSUFBNUIsRUFBa0NtQixJQUFsQyxFQUF3Q3BDLE1BQU0sR0FBRyxJQUFqRCxFQUF1RDtBQUNyRCxRQUFNQyxNQUFNLEdBQUcsSUFBSUMsZUFBSixDQUFXRixNQUFNLEtBQUksTUFBTSwrQkFBVixDQUFqQixDQUFmOztBQUNBLE1BQUk7QUFDRixVQUFNVSxNQUFNLEdBQUcsTUFBTVQsTUFBTSxDQUFDb0MsVUFBUCxDQUFrQnBCLElBQWxCLENBQXJCOztBQUNBLFFBQUksQ0FBQ1AsTUFBTCxFQUFhO0FBQ1gsWUFBTSxJQUFJa0IsS0FBSixDQUFXLHNDQUFxQ1gsSUFBSyxFQUFyRCxDQUFOO0FBQ0Q7O0FBQ0QsV0FBTyxNQUFNaEIsTUFBTSxDQUFDcUMsT0FBUCxDQUFlNUIsTUFBTSxDQUFDQyxVQUFQLENBQWtCNEIsUUFBakMsRUFBMkNILElBQTNDLEVBQWlESSxTQUFqRCxDQUFiO0FBQ0QsR0FORCxDQU1FLE9BQU9yQyxDQUFQLEVBQVU7QUFDVkYsSUFBQUEsTUFBTSxDQUFDYyxLQUFQO0FBQ0EsVUFBTVosQ0FBTjtBQUNEO0FBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVXNibXV4LCB7IGdldERlZmF1bHRTb2NrZXQgfSBmcm9tICcuL3VzYm11eCc7XG5pbXBvcnQgeyB1cGdyYWRlVG9TU0wgfSBmcm9tICcuL3NzbC1oZWxwZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuXG5jb25zdCBMT0NLRE9XTl9SRVFVRVNUID0ge1xuICBERVZJQ0VfVElNRTogeyBLZXk6ICdUaW1lSW50ZXJ2YWxTaW5jZTE5NzAnIH0sXG4gIERFVklDRV9VVENfT0ZGU0VUOiB7IEtleTogJ1RpbWVab25lT2Zmc2V0RnJvbVVUQycgfSxcbiAgREVWSUNFX1ZFUlNJT046IHsgS2V5OiAnUHJvZHVjdFZlcnNpb24nIH0sXG4gIERFVklDRV9OQU1FOiB7IEtleTogJ0RldmljZU5hbWUnIH1cbn07XG5cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIHVkaWRzIG9mIHRoZSBjb25uZWN0ZWQgZGV2aWNlc1xuICpcbiAqIEBwYXJhbSB7P25ldC5Tb2NrZXR9IHNvY2tldCB0aGUgc29ja2V0IG9mIHVzYm11eGQuIEl0IHdpbGwgZGVmYXVsdCB0byAvdmFyL3J1bi91c2JtdXhkIGlmIGl0IGlzIG5vdCBwYXNzZWRcbiAqIEByZXR1cm5zIHtBcnJheS48c3RyaW5nPn0gVGhlIGxpc3Qgb2YgZGV2aWNlIHNlcmlhbCBudW1iZXJzICh1ZGlkKSBvclxuICogYW4gZW1wdHkgbGlzdCBpZiBubyBkZXZpY2VzIGFyZSBjb25uZWN0ZWRcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0Q29ubmVjdGVkRGV2aWNlcyAoc29ja2V0ID0gbnVsbCkge1xuICBsZXQgdXNibXV4O1xuICB0cnkge1xuICAgIHVzYm11eCA9IG5ldyBVc2JtdXgoc29ja2V0IHx8IGF3YWl0IGdldERlZmF1bHRTb2NrZXQoKSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2cuZGVidWcoZSk7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIHRyeSB7XG4gICAgY29uc3QgZGV2aWNlcyA9IGF3YWl0IHVzYm11eC5saXN0RGV2aWNlcygpO1xuICAgIGNvbnN0IHVkaWRzID0gZGV2aWNlcy5tYXAoKGRldmljZSkgPT4gZGV2aWNlLlByb3BlcnRpZXMuU2VyaWFsTnVtYmVyKTtcbiAgICByZXR1cm4gXy51bmlxKHVkaWRzKTtcbiAgfSBmaW5hbGx5IHtcbiAgICB1c2JtdXguY2xvc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgb3MgdmVyc2lvbiBvZiB0aGUgZGV2aWNlXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVkaWQgRGV2aWNlIFVESURcbiAqIEBwYXJhbSB7P25ldC5Tb2NrZXR9IHNvY2tldCB0aGUgc29ja2V0IG9mIHVzYm11eGQuIEl0IHdpbGwgZGVmYXVsdCB0byAvdmFyL3J1bi91c2JtdXhkIGlmIGl0IGlzIG5vdCBwYXNzZWRcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldE9TVmVyc2lvbiAodWRpZCwgc29ja2V0ID0gbnVsbCkge1xuICBjb25zdCB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB0cnkge1xuICAgIC8vIGxvY2tkb3duIGRvZXNuJ3QgbmVlZCB0byBiZSBjbG9zZWQgc2luY2UgaXQgdXNlcyB0aGUgc2FtZSBzb2NrZXQgdXNibXV4IHVzZXNcbiAgICBjb25zdCBsb2NrZG93biA9IGF3YWl0IHVzYm11eC5jb25uZWN0TG9ja2Rvd24odWRpZCk7XG4gICAgcmV0dXJuIGF3YWl0IGxvY2tkb3duLmdldFZhbHVlKExPQ0tET1dOX1JFUVVFU1QuREVWSUNFX1ZFUlNJT04pO1xuICB9IGZpbmFsbHkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBuYW1lIG9mIHRoZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0RGV2aWNlTmFtZSAodWRpZCwgc29ja2V0ID0gbnVsbCkge1xuICBjb25zdCB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB0cnkge1xuICAgIC8vIGxvY2tkb3duIGRvZXNuJ3QgbmVlZCB0byBiZSBjbG9zZWQgc2luY2UgaXQgdXNlcyB0aGUgc2FtZSBzb2NrZXQgdXNibXV4IHVzZXNcbiAgICBjb25zdCBsb2NrZG93biA9IGF3YWl0IHVzYm11eC5jb25uZWN0TG9ja2Rvd24odWRpZCk7XG4gICAgcmV0dXJuIGF3YWl0IGxvY2tkb3duLmdldFZhbHVlKExPQ0tET1dOX1JFUVVFU1QuREVWSUNFX05BTUUpO1xuICB9IGZpbmFsbHkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICB9XG59XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRGV2aWNlVGltZVxuICpcbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSB0aW1lc3RhbXAgVW5peCB0aW1lc3RhbXAgaW4gc2Vjb25kcyBzaW5jZSAxOTcwLTAxLTAxVDAwOjAwOjAwWlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHV0Y09mZnNldCBUaGUgZGlmZmVyZW5jZSBpbiBzZWNvbmRzIGJldHdlZW4gdGhlIFVUQyB0aW1lIGFuZCB0aGUgbG9jYWwgZGV2aWNlIHRpbWUuXG4gKiBDYW4gYmUgbmVnYXRpdmUuXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxvY2FsIHRpbWUgZnJvbSB0aGUgZGV2aWNlIHVuZGVyIHRlc3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge0RldmljZVRpbWV9XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldERldmljZVRpbWUgKHVkaWQsIHNvY2tldCA9IG51bGwpIHtcbiAgY29uc3QgbG9ja2Rvd24gPSBhd2FpdCBzdGFydExvY2tkb3duU2Vzc2lvbih1ZGlkLCBzb2NrZXQpO1xuICB0cnkge1xuICAgIGNvbnN0IHRpbWVzdGFtcCA9IGF3YWl0IGxvY2tkb3duLmdldFZhbHVlKExPQ0tET1dOX1JFUVVFU1QuREVWSUNFX1RJTUUpO1xuICAgIC8vIEFwcGxlIHJldHVybnMgdXRjT2Zmc2V0IGluIHNlY29uZHMgd2hpY2ggZG9lc250IGNvbXBseSB3aXRoIHRoZSBnZW5lcmFsIHN0YW5kYXJkXG4gICAgY29uc3QgdXRjT2Zmc2V0ID0gYXdhaXQgbG9ja2Rvd24uZ2V0VmFsdWUoTE9DS0RPV05fUkVRVUVTVC5ERVZJQ0VfVVRDX09GRlNFVCkgLyA2MDtcbiAgICByZXR1cm4ge1xuICAgICAgdGltZXN0YW1wLFxuICAgICAgdXRjT2Zmc2V0LFxuICAgIH07XG4gIH0gZmluYWxseSB7XG4gICAgbG9ja2Rvd24uY2xvc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFN0YXJ0cyBhIGxvY2tkb3duIHNlc3Npb24gb24gdGhlIGdpdmVuIGRldmljZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIERldmljZSBVRElEXG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7TG9ja2Rvd259XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0TG9ja2Rvd25TZXNzaW9uICh1ZGlkLCBzb2NrZXQgPSBudWxsKSB7XG4gIGNvbnN0IHVzYm11eCA9IG5ldyBVc2JtdXgoc29ja2V0IHx8IGF3YWl0IGdldERlZmF1bHRTb2NrZXQoKSk7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFpclJlY29yZCA9IGF3YWl0IHVzYm11eC5yZWFkUGFpclJlY29yZCh1ZGlkKTtcbiAgICBpZiAoIXBhaXJSZWNvcmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgYSBwYWlyIHJlY29yZCBmb3IgZGV2aWNlICcke3VkaWR9Jy4gUGxlYXNlIGZpcnN0IHBhaXIgd2l0aCB0aGUgZGV2aWNlYCk7XG4gICAgfVxuICAgIC8vIGxvY2tkb3duIGRvZXNuJ3QgbmVlZCB0byBiZSBjbG9zZWQgc2luY2UgaXQgdXNlcyB0aGUgc2FtZSBzb2NrZXQgdXNibXV4IHVzZXNcbiAgICBjb25zdCBsb2NrZG93biA9IGF3YWl0IHVzYm11eC5jb25uZWN0TG9ja2Rvd24odWRpZCk7XG4gICAgYXdhaXQgbG9ja2Rvd24uc3RhcnRTZXNzaW9uKHBhaXJSZWNvcmQuSG9zdElELCBwYWlyUmVjb3JkLlN5c3RlbUJVSUQpO1xuICAgIGxvY2tkb3duLmVuYWJsZVNlc3Npb25TU0wocGFpclJlY29yZC5Ib3N0UHJpdmF0ZUtleSwgcGFpclJlY29yZC5Ib3N0Q2VydGlmaWNhdGUpO1xuICAgIHJldHVybiBsb2NrZG93bjtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25uZWN0cyB0byBhIGdpdmVuIHBvcnQgd2l0aCB0aGUgY2VydHMgYW5kIGtleXMgdXNlZCBpbiB0aGUgcGFpcmluZyBwcm9jZXNzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVkaWQgRGV2aWNlIFVESURcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3J0IFBvcnQgdG8gY29ubmVjdFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge3Rscy5UTFNTb2NrZXR8T2JqZWN0fSBUaGUgc29ja2V0IG9yIHRoZSBvYmplY3QgcmV0dXJuZWQgaW4gdGhlIGNhbGxiYWNrIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBleGlzdHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29ubmVjdFBvcnRTU0wgKHVkaWQsIHBvcnQsIHNvY2tldCA9IG51bGwpIHtcbiAgY29uc3QgdXNibXV4ID0gbmV3IFVzYm11eChzb2NrZXQgfHwgYXdhaXQgZ2V0RGVmYXVsdFNvY2tldCgpKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCB1c2JtdXguZmluZERldmljZSh1ZGlkKTtcbiAgICBpZiAoIWRldmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCB0aGUgZXhwZWN0ZWQgZGV2aWNlICcke3VkaWR9J2ApO1xuICAgIH1cbiAgICBjb25zdCBwYWlyUmVjb3JkID0gYXdhaXQgdXNibXV4LnJlYWRQYWlyUmVjb3JkKHVkaWQpO1xuICAgIGlmICghcGFpclJlY29yZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIHBhaXIgcmVjb3JkIGZvciBkZXZpY2UgJyR7dWRpZH0nLiBQbGVhc2UgZmlyc3QgcGFpciB3aXRoIHRoZSBkZXZpY2VgKTtcbiAgICB9XG4gICAgY29uc3Qgc29ja2V0ID0gYXdhaXQgdXNibXV4LmNvbm5lY3QoZGV2aWNlLlByb3BlcnRpZXMuRGV2aWNlSUQsIHBvcnQsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHVwZ3JhZGVUb1NTTChzb2NrZXQsIHBhaXJSZWNvcmQuSG9zdFByaXZhdGVLZXksIHBhaXJSZWNvcmQuSG9zdENlcnRpZmljYXRlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25uZWN0cyB0byBhIGdpdmVuIHBvcnRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHtudW1iZXJ9IHBvcnQgUG9ydCB0byBjb25uZWN0XG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7bmV0LlNvY2tldHxPYmplY3R9IFRoZSBzb2NrZXQgb3IgdGhlIG9iamVjdCByZXR1cm5lZCBpbiB0aGUgY2FsbGJhY2sgaWYgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGV4aXN0c1xuICovXG5hc3luYyBmdW5jdGlvbiBjb25uZWN0UG9ydCAodWRpZCwgcG9ydCwgc29ja2V0ID0gbnVsbCkge1xuICBjb25zdCB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IHVzYm11eC5maW5kRGV2aWNlKHVkaWQpO1xuICAgIGlmICghZGV2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHRoZSBleHBlY3RlZCBkZXZpY2UgJHt1ZGlkfWApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdXNibXV4LmNvbm5lY3QoZGV2aWNlLlByb3BlcnRpZXMuRGV2aWNlSUQsIHBvcnQsIHVuZGVmaW5lZCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB1c2JtdXguY2xvc2UoKTtcbiAgICB0aHJvdyBlO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIGdldENvbm5lY3RlZERldmljZXMsIGdldE9TVmVyc2lvbiwgZ2V0RGV2aWNlTmFtZSwgZ2V0RGV2aWNlVGltZSxcbiAgc3RhcnRMb2NrZG93blNlc3Npb24sIGNvbm5lY3RQb3J0LCBjb25uZWN0UG9ydFNTTCxcbn07XG4iXSwiZmlsZSI6ImxpYi91dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
164
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi91dGlsaXRpZXMuanMiXSwibmFtZXMiOlsiTE9DS0RPV05fUkVRVUVTVCIsIkRFVklDRV9USU1FIiwiS2V5IiwiREVWSUNFX1VUQ19PRkZTRVQiLCJERVZJQ0VfVElNRV9aT05FIiwiREVWSUNFX1ZFUlNJT04iLCJERVZJQ0VfTkFNRSIsImdldENvbm5lY3RlZERldmljZXMiLCJzb2NrZXQiLCJ1c2JtdXgiLCJVc2JtdXgiLCJlIiwibG9nIiwiZGVidWciLCJkZXZpY2VzIiwibGlzdERldmljZXMiLCJ1ZGlkcyIsIm1hcCIsImRldmljZSIsIlByb3BlcnRpZXMiLCJTZXJpYWxOdW1iZXIiLCJfIiwidW5pcSIsImNsb3NlIiwiZ2V0T1NWZXJzaW9uIiwidWRpZCIsImxvY2tkb3duIiwiY29ubmVjdExvY2tkb3duIiwiZ2V0VmFsdWUiLCJnZXREZXZpY2VOYW1lIiwiZ2V0RGV2aWNlVGltZSIsInN0YXJ0TG9ja2Rvd25TZXNzaW9uIiwidGltZXN0YW1wIiwidXRjT2Zmc2V0IiwidGltZVpvbmUiLCJwYWlyUmVjb3JkIiwicmVhZFBhaXJSZWNvcmQiLCJFcnJvciIsInN0YXJ0U2Vzc2lvbiIsIkhvc3RJRCIsIlN5c3RlbUJVSUQiLCJlbmFibGVTZXNzaW9uU1NMIiwiSG9zdFByaXZhdGVLZXkiLCJIb3N0Q2VydGlmaWNhdGUiLCJjb25uZWN0UG9ydFNTTCIsInBvcnQiLCJmaW5kRGV2aWNlIiwiY29ubmVjdCIsIkRldmljZUlEIiwidW5kZWZpbmVkIiwiY29ubmVjdFBvcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSxnQkFBZ0IsR0FBRztBQUN2QkMsRUFBQUEsV0FBVyxFQUFFO0FBQUVDLElBQUFBLEdBQUcsRUFBRTtBQUFQLEdBRFU7QUFFdkJDLEVBQUFBLGlCQUFpQixFQUFFO0FBQUVELElBQUFBLEdBQUcsRUFBRTtBQUFQLEdBRkk7QUFHdkJFLEVBQUFBLGdCQUFnQixF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ZXREZWZhdWx0U29ja2V0IH0gZnJvbSAnLi91c2JtdXgnO1xuaW1wb3J0IHsgdXBncmFkZVRvU1NMIH0gZnJvbSAnLi9zc2wtaGVscGVyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcblxuLy8gaHR0cHM6Ly9naXRodWIuY29tL3NhbWRtYXJzaGFsbC9pT1MtSW50ZXJuYWxzL2Jsb2IvbWFzdGVyL2xvY2tib3QvbG9ja2JvdC9sb2NrZG93bl9rZXlzLmhcbmNvbnN0IExPQ0tET1dOX1JFUVVFU1QgPSB7XG4gIERFVklDRV9USU1FOiB7IEtleTogJ1RpbWVJbnRlcnZhbFNpbmNlMTk3MCcgfSxcbiAgREVWSUNFX1VUQ19PRkZTRVQ6IHsgS2V5OiAnVGltZVpvbmVPZmZzZXRGcm9tVVRDJyB9LFxuICBERVZJQ0VfVElNRV9aT05FOiB7IEtleTogJ1RpbWVab25lJyB9LFxuICBERVZJQ0VfVkVSU0lPTjogeyBLZXk6ICdQcm9kdWN0VmVyc2lvbicgfSxcbiAgREVWSUNFX05BTUU6IHsgS2V5OiAnRGV2aWNlTmFtZScgfVxufTtcblxuXG4vKipcbiAqIFJldHJpZXZlcyB0aGUgdWRpZHMgb2YgdGhlIGNvbm5lY3RlZCBkZXZpY2VzXG4gKlxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge0FycmF5LjxzdHJpbmc+fSBUaGUgbGlzdCBvZiBkZXZpY2Ugc2VyaWFsIG51bWJlcnMgKHVkaWQpIG9yXG4gKiBhbiBlbXB0eSBsaXN0IGlmIG5vIGRldmljZXMgYXJlIGNvbm5lY3RlZFxuICovXG5hc3luYyBmdW5jdGlvbiBnZXRDb25uZWN0ZWREZXZpY2VzIChzb2NrZXQgPSBudWxsKSB7XG4gIGxldCB1c2JtdXg7XG4gIHRyeSB7XG4gICAgdXNibXV4ID0gbmV3IFVzYm11eChzb2NrZXQgfHwgYXdhaXQgZ2V0RGVmYXVsdFNvY2tldCgpKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxvZy5kZWJ1ZyhlKTtcbiAgICByZXR1cm4gW107XG4gIH1cbiAgdHJ5IHtcbiAgICBjb25zdCBkZXZpY2VzID0gYXdhaXQgdXNibXV4Lmxpc3REZXZpY2VzKCk7XG4gICAgY29uc3QgdWRpZHMgPSBkZXZpY2VzLm1hcCgoZGV2aWNlKSA9PiBkZXZpY2UuUHJvcGVydGllcy5TZXJpYWxOdW1iZXIpO1xuICAgIHJldHVybiBfLnVuaXEodWRpZHMpO1xuICB9IGZpbmFsbHkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICB9XG59XG5cbi8qKlxuICogUmV0cmlldmVzIHRoZSBvcyB2ZXJzaW9uIG9mIHRoZSBkZXZpY2VcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuYXN5bmMgZnVuY3Rpb24gZ2V0T1NWZXJzaW9uICh1ZGlkLCBzb2NrZXQgPSBudWxsKSB7XG4gIGNvbnN0IHVzYm11eCA9IG5ldyBVc2JtdXgoc29ja2V0IHx8IGF3YWl0IGdldERlZmF1bHRTb2NrZXQoKSk7XG4gIHRyeSB7XG4gICAgLy8gbG9ja2Rvd24gZG9lc24ndCBuZWVkIHRvIGJlIGNsb3NlZCBzaW5jZSBpdCB1c2VzIHRoZSBzYW1lIHNvY2tldCB1c2JtdXggdXNlc1xuICAgIGNvbnN0IGxvY2tkb3duID0gYXdhaXQgdXNibXV4LmNvbm5lY3RMb2NrZG93bih1ZGlkKTtcbiAgICByZXR1cm4gYXdhaXQgbG9ja2Rvd24uZ2V0VmFsdWUoTE9DS0RPV05fUkVRVUVTVC5ERVZJQ0VfVkVSU0lPTik7XG4gIH0gZmluYWxseSB7XG4gICAgdXNibXV4LmNsb3NlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIG5hbWUgb2YgdGhlIGRldmljZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIERldmljZSBVRElEXG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7c3RyaW5nfVxuICovXG5hc3luYyBmdW5jdGlvbiBnZXREZXZpY2VOYW1lICh1ZGlkLCBzb2NrZXQgPSBudWxsKSB7XG4gIGNvbnN0IHVzYm11eCA9IG5ldyBVc2JtdXgoc29ja2V0IHx8IGF3YWl0IGdldERlZmF1bHRTb2NrZXQoKSk7XG4gIHRyeSB7XG4gICAgLy8gbG9ja2Rvd24gZG9lc24ndCBuZWVkIHRvIGJlIGNsb3NlZCBzaW5jZSBpdCB1c2VzIHRoZSBzYW1lIHNvY2tldCB1c2JtdXggdXNlc1xuICAgIGNvbnN0IGxvY2tkb3duID0gYXdhaXQgdXNibXV4LmNvbm5lY3RMb2NrZG93bih1ZGlkKTtcbiAgICByZXR1cm4gYXdhaXQgbG9ja2Rvd24uZ2V0VmFsdWUoTE9DS0RPV05fUkVRVUVTVC5ERVZJQ0VfTkFNRSk7XG4gIH0gZmluYWxseSB7XG4gICAgdXNibXV4LmNsb3NlKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEZXZpY2VUaW1lXG4gKlxuICogQHByb3BlcnR5IHtudW1iZXJ9IHRpbWVzdGFtcCBVbml4IHRpbWVzdGFtcCBpbiBzZWNvbmRzIHNpbmNlIDE5NzAtMDEtMDFUMDA6MDA6MDBaXG4gKiBAcHJvcGVydHkge251bWJlcn0gdXRjT2Zmc2V0IFRoZSBkaWZmZXJlbmNlIGluIG1pbnV0ZXMgYmV0d2VlbiB0aGUgVVRDIHRpbWUgYW5kIHRoZSBsb2NhbCBkZXZpY2UgdGltZS5cbiAqIENhbiBiZSBuZWdhdGl2ZS5cbiAqIEBwcm9wZXJ0eSB7c3RyaW5nfSB0aW1lWm9uZSBUaW1lIHpvbmUgbmFtZSBjb25maWd1cmVkIG9uIHRoZSBkZXZpY2UsIGZvciBleGFtcGxlIGBFdXJvcGUvUGFyaXNgXG4gKi9cblxuLyoqXG4gKiBSZXRyaWV2ZXMgdGhlIGxvY2FsIHRpbWUgZnJvbSB0aGUgZGV2aWNlIHVuZGVyIHRlc3RcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge0RldmljZVRpbWV9XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIGdldERldmljZVRpbWUgKHVkaWQsIHNvY2tldCA9IG51bGwpIHtcbiAgY29uc3QgbG9ja2Rvd24gPSBhd2FpdCBzdGFydExvY2tkb3duU2Vzc2lvbih1ZGlkLCBzb2NrZXQpO1xuICB0cnkge1xuICAgIHJldHVybiB7XG4gICAgICB0aW1lc3RhbXA6IGF3YWl0IGxvY2tkb3duLmdldFZhbHVlKExPQ0tET1dOX1JFUVVFU1QuREVWSUNFX1RJTUUpLFxuICAgICAgLy8gQXBwbGUgcmV0dXJucyB1dGNPZmZzZXQgaW4gc2Vjb25kcyB3aGljaCBkb2VzbnQgY29tcGx5IHdpdGggdGhlIGdlbmVyYWwgc3RhbmRhcmRcbiAgICAgIHV0Y09mZnNldDogYXdhaXQgbG9ja2Rvd24uZ2V0VmFsdWUoTE9DS0RPV05fUkVRVUVTVC5ERVZJQ0VfVVRDX09GRlNFVCkgLyA2MCxcbiAgICAgIHRpbWVab25lOiBhd2FpdCBsb2NrZG93bi5nZXRWYWx1ZShMT0NLRE9XTl9SRVFVRVNULkRFVklDRV9USU1FX1pPTkUpLFxuICAgIH07XG4gIH0gZmluYWxseSB7XG4gICAgbG9ja2Rvd24uY2xvc2UoKTtcbiAgfVxufVxuXG4vKipcbiAqIFN0YXJ0cyBhIGxvY2tkb3duIHNlc3Npb24gb24gdGhlIGdpdmVuIGRldmljZVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSB1ZGlkIERldmljZSBVRElEXG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7TG9ja2Rvd259XG4gKi9cbmFzeW5jIGZ1bmN0aW9uIHN0YXJ0TG9ja2Rvd25TZXNzaW9uICh1ZGlkLCBzb2NrZXQgPSBudWxsKSB7XG4gIGNvbnN0IHVzYm11eCA9IG5ldyBVc2JtdXgoc29ja2V0IHx8IGF3YWl0IGdldERlZmF1bHRTb2NrZXQoKSk7XG4gIHRyeSB7XG4gICAgY29uc3QgcGFpclJlY29yZCA9IGF3YWl0IHVzYm11eC5yZWFkUGFpclJlY29yZCh1ZGlkKTtcbiAgICBpZiAoIXBhaXJSZWNvcmQpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgQ291bGQgbm90IGZpbmQgYSBwYWlyIHJlY29yZCBmb3IgZGV2aWNlICcke3VkaWR9Jy4gUGxlYXNlIGZpcnN0IHBhaXIgd2l0aCB0aGUgZGV2aWNlYCk7XG4gICAgfVxuICAgIC8vIGxvY2tkb3duIGRvZXNuJ3QgbmVlZCB0byBiZSBjbG9zZWQgc2luY2UgaXQgdXNlcyB0aGUgc2FtZSBzb2NrZXQgdXNibXV4IHVzZXNcbiAgICBjb25zdCBsb2NrZG93biA9IGF3YWl0IHVzYm11eC5jb25uZWN0TG9ja2Rvd24odWRpZCk7XG4gICAgYXdhaXQgbG9ja2Rvd24uc3RhcnRTZXNzaW9uKHBhaXJSZWNvcmQuSG9zdElELCBwYWlyUmVjb3JkLlN5c3RlbUJVSUQpO1xuICAgIGxvY2tkb3duLmVuYWJsZVNlc3Npb25TU0wocGFpclJlY29yZC5Ib3N0UHJpdmF0ZUtleSwgcGFpclJlY29yZC5Ib3N0Q2VydGlmaWNhdGUpO1xuICAgIHJldHVybiBsb2NrZG93bjtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25uZWN0cyB0byBhIGdpdmVuIHBvcnQgd2l0aCB0aGUgY2VydHMgYW5kIGtleXMgdXNlZCBpbiB0aGUgcGFpcmluZyBwcm9jZXNzXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IHVkaWQgRGV2aWNlIFVESURcbiAqIEBwYXJhbSB7bnVtYmVyfSBwb3J0IFBvcnQgdG8gY29ubmVjdFxuICogQHBhcmFtIHs/bmV0LlNvY2tldH0gc29ja2V0IHRoZSBzb2NrZXQgb2YgdXNibXV4ZC4gSXQgd2lsbCBkZWZhdWx0IHRvIC92YXIvcnVuL3VzYm11eGQgaWYgaXQgaXMgbm90IHBhc3NlZFxuICogQHJldHVybnMge3Rscy5UTFNTb2NrZXR8T2JqZWN0fSBUaGUgc29ja2V0IG9yIHRoZSBvYmplY3QgcmV0dXJuZWQgaW4gdGhlIGNhbGxiYWNrIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBleGlzdHNcbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29ubmVjdFBvcnRTU0wgKHVkaWQsIHBvcnQsIHNvY2tldCA9IG51bGwpIHtcbiAgY29uc3QgdXNibXV4ID0gbmV3IFVzYm11eChzb2NrZXQgfHwgYXdhaXQgZ2V0RGVmYXVsdFNvY2tldCgpKTtcbiAgdHJ5IHtcbiAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCB1c2JtdXguZmluZERldmljZSh1ZGlkKTtcbiAgICBpZiAoIWRldmljZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCB0aGUgZXhwZWN0ZWQgZGV2aWNlICcke3VkaWR9J2ApO1xuICAgIH1cbiAgICBjb25zdCBwYWlyUmVjb3JkID0gYXdhaXQgdXNibXV4LnJlYWRQYWlyUmVjb3JkKHVkaWQpO1xuICAgIGlmICghcGFpclJlY29yZCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZCBub3QgZmluZCBhIHBhaXIgcmVjb3JkIGZvciBkZXZpY2UgJyR7dWRpZH0nLiBQbGVhc2UgZmlyc3QgcGFpciB3aXRoIHRoZSBkZXZpY2VgKTtcbiAgICB9XG4gICAgY29uc3Qgc29ja2V0ID0gYXdhaXQgdXNibXV4LmNvbm5lY3QoZGV2aWNlLlByb3BlcnRpZXMuRGV2aWNlSUQsIHBvcnQsIHVuZGVmaW5lZCk7XG4gICAgcmV0dXJuIHVwZ3JhZGVUb1NTTChzb2NrZXQsIHBhaXJSZWNvcmQuSG9zdFByaXZhdGVLZXksIHBhaXJSZWNvcmQuSG9zdENlcnRpZmljYXRlKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHVzYm11eC5jbG9zZSgpO1xuICAgIHRocm93IGU7XG4gIH1cbn1cblxuLyoqXG4gKiBDb25uZWN0cyB0byBhIGdpdmVuIHBvcnRcbiAqXG4gKiBAcGFyYW0ge3N0cmluZ30gdWRpZCBEZXZpY2UgVURJRFxuICogQHBhcmFtIHtudW1iZXJ9IHBvcnQgUG9ydCB0byBjb25uZWN0XG4gKiBAcGFyYW0gez9uZXQuU29ja2V0fSBzb2NrZXQgdGhlIHNvY2tldCBvZiB1c2JtdXhkLiBJdCB3aWxsIGRlZmF1bHQgdG8gL3Zhci9ydW4vdXNibXV4ZCBpZiBpdCBpcyBub3QgcGFzc2VkXG4gKiBAcmV0dXJucyB7bmV0LlNvY2tldHxPYmplY3R9IFRoZSBzb2NrZXQgb3IgdGhlIG9iamVjdCByZXR1cm5lZCBpbiB0aGUgY2FsbGJhY2sgaWYgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uIGV4aXN0c1xuICovXG5hc3luYyBmdW5jdGlvbiBjb25uZWN0UG9ydCAodWRpZCwgcG9ydCwgc29ja2V0ID0gbnVsbCkge1xuICBjb25zdCB1c2JtdXggPSBuZXcgVXNibXV4KHNvY2tldCB8fCBhd2FpdCBnZXREZWZhdWx0U29ja2V0KCkpO1xuICB0cnkge1xuICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IHVzYm11eC5maW5kRGV2aWNlKHVkaWQpO1xuICAgIGlmICghZGV2aWNlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvdWxkIG5vdCBmaW5kIHRoZSBleHBlY3RlZCBkZXZpY2UgJHt1ZGlkfWApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgdXNibXV4LmNvbm5lY3QoZGV2aWNlLlByb3BlcnRpZXMuRGV2aWNlSUQsIHBvcnQsIHVuZGVmaW5lZCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICB1c2JtdXguY2xvc2UoKTtcbiAgICB0aHJvdyBlO1xuICB9XG59XG5cbmV4cG9ydCB7XG4gIGdldENvbm5lY3RlZERldmljZXMsIGdldE9TVmVyc2lvbiwgZ2V0RGV2aWNlTmFtZSwgZ2V0RGV2aWNlVGltZSxcbiAgc3RhcnRMb2NrZG93blNlc3Npb24sIGNvbm5lY3RQb3J0LCBjb25uZWN0UG9ydFNTTCxcbn07XG4iXSwiZmlsZSI6ImxpYi91dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -44,7 +44,8 @@ class WebInspectorService extends _baseService.BaseServiceSocket {
44
44
  socketChunkSize,
45
45
  verbose = false,
46
46
  verboseHexDump = false,
47
- socketClient
47
+ socketClient,
48
+ maxFrameLength = MAX_FRAME_SIZE
48
49
  } = opts;
49
50
  super(socketClient);
50
51
 
@@ -61,19 +62,19 @@ class WebInspectorService extends _baseService.BaseServiceSocket {
61
62
  this._majorOsVersion = majorOsVersion;
62
63
 
63
64
  if (!isSimulator && majorOsVersion < PARTIAL_MESSAGE_SUPPORT_DEPRECATION_VERSION) {
64
- this._initializePartialMessageSupport(verboseHexDump);
65
+ this._initializePartialMessageSupport(verboseHexDump, maxFrameLength);
65
66
  } else {
66
- this._initializeFullMessageSupport(verboseHexDump);
67
+ this._initializeFullMessageSupport(verboseHexDump, maxFrameLength);
67
68
  }
68
69
  }
69
70
 
70
- _initializeFullMessageSupport(verbose) {
71
+ _initializeFullMessageSupport(verbose, maxFrameLength) {
71
72
  this._decoder = new _plistServiceDecoder.default();
72
73
 
73
74
  this._socketClient.pipe(new _streamLogger.default(_streamLogger.default.RECEIVE, verbose)).pipe(this._splitter = new _lengthBasedSplitter.default({
74
75
  readableStream: this._socketClient,
75
76
  littleEndian: false,
76
- maxFrameLength: MAX_FRAME_SIZE,
77
+ maxFrameLength,
77
78
  lengthFieldOffset: 0,
78
79
  lengthFieldLength: 4,
79
80
  lengthAdjustment: 4
@@ -84,13 +85,13 @@ class WebInspectorService extends _baseService.BaseServiceSocket {
84
85
  this._encoder.pipe(new _streamLogger.default(_streamLogger.default.SEND, verbose)).pipe(this._socketClient);
85
86
  }
86
87
 
87
- _initializePartialMessageSupport(verbose) {
88
+ _initializePartialMessageSupport(verbose, maxFrameLength) {
88
89
  this._decoder = new _webinspectorDecoder.default(_constants.MB);
89
90
 
90
91
  this._socketClient.pipe(new _streamLogger.default(_streamLogger.default.RECEIVE, verbose)).pipe(this._splitter = new _lengthBasedSplitter.default({
91
92
  readableStream: this._socketClient,
92
93
  littleEndian: false,
93
- maxFrameLength: MAX_FRAME_SIZE,
94
+ maxFrameLength,
94
95
  lengthFieldOffset: 0,
95
96
  lengthFieldLength: 4,
96
97
  lengthAdjustment: 4
@@ -138,4 +139,4 @@ var _default = WebInspectorService;
138
139
  exports.default = _default;require('source-map-support').install();
139
140
 
140
141
 
141
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi93ZWJpbnNwZWN0b3IvaW5kZXguanMiXSwibmFtZXMiOlsiV0VCX0lOU1BFQ1RPUl9TRVJWSUNFX05BTUUiLCJNQVhfRlJBTUVfU0laRSIsIk1CIiwiUEFSVElBTF9NRVNTQUdFX1NVUFBPUlRfREVQUkVDQVRJT05fVkVSU0lPTiIsIldlYkluc3BlY3RvclNlcnZpY2UiLCJCYXNlU2VydmljZVNvY2tldCIsImNvbnN0cnVjdG9yIiwib3B0cyIsIm1ham9yT3NWZXJzaW9uIiwiaXNTaW11bGF0b3IiLCJzb2NrZXRDaHVua1NpemUiLCJ2ZXJib3NlIiwidmVyYm9zZUhleER1bXAiLCJzb2NrZXRDbGllbnQiLCJfIiwiaXNGdW5jdGlvbiIsInNldE1heFNlbmRGcmFnbWVudCIsImlzTmlsIiwibG9nIiwiZGVidWciLCJ3YXJuIiwiX3ZlcmJvc2UiLCJfaXNTaW11bGF0b3IiLCJfbWFqb3JPc1ZlcnNpb24iLCJfaW5pdGlhbGl6ZVBhcnRpYWxNZXNzYWdlU3VwcG9ydCIsIl9pbml0aWFsaXplRnVsbE1lc3NhZ2VTdXBwb3J0IiwiX2RlY29kZXIiLCJQbGlzdFNlcnZpY2VEZWNvZGVyIiwiX3NvY2tldENsaWVudCIsInBpcGUiLCJTdHJlYW1Mb2dnZXIiLCJSRUNFSVZFIiwiX3NwbGl0dGVyIiwiTGVuZ3RoQmFzZWRTcGxpdHRlciIsInJlYWRhYmxlU3RyZWFtIiwibGl0dGxlRW5kaWFuIiwibWF4RnJhbWVMZW5ndGgiLCJsZW5ndGhGaWVsZE9mZnNldCIsImxlbmd0aEZpZWxkTGVuZ3RoIiwibGVuZ3RoQWRqdXN0bWVudCIsIl9lbmNvZGVyIiwiUGxpc3RTZXJ2aWNlRW5jb2RlciIsIlNFTkQiLCJXZWJJbnNwZWN0b3JEZWNvZGVyIiwiV2ViSW5zcGVjdG9yRW5jb2RlciIsInNlbmRNZXNzYWdlIiwicnBjT2JqZWN0IiwiRXJyb3IiLCJ1dGlsIiwianNvblN0cmluZ2lmeSIsIndyaXRlIiwibGlzdGVuTWVzc2FnZSIsIm9uRGF0YSIsIm9uIiwiZGF0YSJd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LE1BQWpCLEVBQTBCQyxJQUFELElBQVU7QUFDakMsVUFBSSxLQUFLakMsUUFBVCxFQUFtQjtBQUNqQkgsd0JBQUlDLEtBQUosQ0FBVSxzQ0FBVjs7QUFDQUQsd0JBQUlDLEtBQUosQ0FBVTZCLG9CQUFLQyxhQUFMLENBQW1CSyxJQUFuQixDQUFWO0FBQ0Q7O0FBQ0RGLE1BQUFBLE1BQU0sQ0FBQ0UsSUFBRCxDQUFOO0FBQ0QsS0FORDtBQU9EOztBQTNJaUQ7OztlQStJckNsRCxtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXZWJJbnNwZWN0b3JEZWNvZGVyIGZyb20gJy4vdHJhbnNmb3JtZXIvd2ViaW5zcGVjdG9yLWRlY29kZXInO1xuaW1wb3J0IFdlYkluc3BlY3RvckVuY29kZXIgZnJvbSAnLi90cmFuc2Zvcm1lci93ZWJpbnNwZWN0b3ItZW5jb2Rlcic7XG5pbXBvcnQgUGxpc3RTZXJ2aWNlRGVjb2RlciBmcm9tICcuLi9wbGlzdC1zZXJ2aWNlL3RyYW5zZm9ybWVyL3BsaXN0LXNlcnZpY2UtZGVjb2Rlcic7XG5pbXBvcnQgUGxpc3RTZXJ2aWNlRW5jb2RlciBmcm9tICcuLi9wbGlzdC1zZXJ2aWNlL3RyYW5zZm9ybWVyL3BsaXN0LXNlcnZpY2UtZW5jb2Rlcic7XG5pbXBvcnQgTGVuZ3RoQmFzZWRTcGxpdHRlciBmcm9tICcuLi91dGlsL3RyYW5zZm9ybWVyL2xlbmd0aC1iYXNlZC1zcGxpdHRlcic7XG5pbXBvcnQgU3RyZWFtTG9nZ2VyIGZyb20gJy4uL3V0aWwvdHJhbnNmb3JtZXIvc3RyZWFtLWxvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCB7IE1CIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlU29ja2V0IH0gZnJvbSAnLi4vYmFzZS1zZXJ2aWNlJztcblxuXG5jb25zdCBXRUJfSU5TUEVDVE9SX1NFUlZJQ0VfTkFNRSA9ICdjb20uYXBwbGUud2ViaW5zcGVjdG9yJztcbmNvbnN0IE1BWF9GUkFNRV9TSVpFID0gMjAgKiBNQjtcblxuY29uc3QgUEFSVElBTF9NRVNTQUdFX1NVUFBPUlRfREVQUkVDQVRJT05fVkVSU0lPTiA9IDExO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFdlYkluc3BlY3RvclNlcnZpY2VPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHtudW1iZXJ9IG1ham9yT3NWZXJzaW9uIFRoZSBtYWpvciB2ZXJzaW9uIG9mIHRoZSBvcyB2ZXJzaW9uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzU2ltdWxhdG9yIFdoZXRoZXIgdGhlIGRldmljZSBpcyBhIHNpbXVsYXRvclxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzb2NrZXRDaHVua1NpemUgU2l6ZSwgaW4gYnl0ZXMgb2YgdGhlIGNodW5rcyB0byBzZW5kIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsIGRldmljZSAob25seSBpT1MgMTErKS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2Mzg0IGJ5dGVzICh0aGUgVExTU29ja2V0IG1heCkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHZlcmJvc2UgVHVybiBvbiBsb2dnaW5nIG9mIGVhY2ggbWVzc2FnZSBzZW50IG9yIHJlY2VpdmVkLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIGZhbHNlXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHZlcmJvc2VIZXhEdW1wIFR1cm4gb24gbG9nZ2luZyBvZiBfYWxsXyBjb21tdW5pY2F0aW9uIGFzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleCBkdW1wLiBEZWZhdWx0cyB0byBmYWxzZVxuICogQHByb3BlcnR5IHsqfSBzb2NrZXRDbGllbnQgVGhlIHNvY2tldCBjbGllbnQgd2hlcmUgdGhlIGNvbW11bmljYXRpb24gd2lsbCBoYXBwZW5cbiAqL1xuXG5jbGFzcyBXZWJJbnNwZWN0b3JTZXJ2aWNlIGV4dGVuZHMgQmFzZVNlcnZpY2VTb2NrZXQge1xuICAvKipcbiAgICogVGhlIG1haW4gc2VydmljZSBmb3IgY29tbXVuaWNhdGlvbiB3aXRoIHRoZSB3ZWJpbnNwZWN0b3JkXG4gICAqXG4gICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yU2VydmljZU9wdGlvbnN9XG4gICAqL1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgY29uc3Qge1xuICAgICAgbWFqb3JPc1ZlcnNpb24sXG4gICAgICBpc1NpbXVsYXRvciA9IGZhbHNlLFxuICAgICAgc29ja2V0Q2h1bmtTaXplLFxuICAgICAgdmVyYm9zZSA9IGZhbHNlLFxuICAgICAgdmVyYm9zZUhleER1bXAgPSBmYWxzZSxcbiAgICAgIHNvY2tldENsaWVudCxcbiAgICB9ID0gb3B0cztcblxuICAgIHN1cGVyKHNvY2tldENsaWVudCk7XG5cbiAgICAvLyBzZXQgdGhlIGxhcmdlc3QgZnJhZ21lbnQgc2l6ZSBmb3IgdGhlIHNvY2tldCwgaWYgdGhlIG9wdGlvbiBpcyB0aGVyZVxuICAgIGlmIChfLmlzRnVuY3Rpb24oc29ja2V0Q2xpZW50LnNldE1heFNlbmRGcmFnbWVudCkgJiYgIV8uaXNOaWwoc29ja2V0Q2h1bmtTaXplKSAmJiBzb2NrZXRDaHVua1NpemUgPiAwKSB7XG4gICAgICBpZiAoc29ja2V0Q2xpZW50LnNldE1heFNlbmRGcmFnbWVudChzb2NrZXRDaHVua1NpemUpKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgTWF4aW11bSBUTFMgZnJhZ21lbnQgc2l6ZSBzZXQgdG8gJyR7c29ja2V0Q2h1bmtTaXplfSdgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGFueXRoaW5nIG92ZXIgdGhlIF9hY3R1YWxfIG1heGltdW0gd2lsbCBmYWlsLCBhbmQgdGhpbmdzIHdpbGwgcmVtYWluIHRoZSBzYW1lXG4gICAgICAgIGxvZy53YXJuKGBVbmFibGUgdG8gc2V0IFRMUyBmcmFnbWVudCBzaXplIHRvICcke3NvY2tldENodW5rU2l6ZX0nYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdmVyYm9zZSA9IHZlcmJvc2U7XG4gICAgdGhpcy5faXNTaW11bGF0b3IgPSBpc1NpbXVsYXRvcjtcbiAgICB0aGlzLl9tYWpvck9zVmVyc2lvbiA9IG1ham9yT3NWZXJzaW9uO1xuXG4gICAgaWYgKCFpc1NpbXVsYXRvciAmJiBtYWpvck9zVmVyc2lvbiA8IFBBUlRJQUxfTUVTU0FHRV9TVVBQT1JUX0RFUFJFQ0FUSU9OX1ZFUlNJT04pIHtcbiAgICAgIHRoaXMuX2luaXRpYWxpemVQYXJ0aWFsTWVzc2FnZVN1cHBvcnQodmVyYm9zZUhleER1bXApO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl9pbml0aWFsaXplRnVsbE1lc3NhZ2VTdXBwb3J0KHZlcmJvc2VIZXhEdW1wKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogSW50aWFsaXplcyB0aGUgZGF0YSBmbG93IGZvciBpT1MgMTErLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZlcmJvc2UgLSB3aGV0aGVyIHRvIHByaW50IG91dCB0aGUgaGV4IGR1bXAgZm9yIGNvbW11bmljYXRpb25cbiAgICovXG4gIF9pbml0aWFsaXplRnVsbE1lc3NhZ2VTdXBwb3J0ICh2ZXJib3NlKSB7XG4gICAgdGhpcy5fZGVjb2RlciA9IG5ldyBQbGlzdFNlcnZpY2VEZWNvZGVyKCk7XG4gICAgdGhpcy5fc29ja2V0Q2xpZW50XG4gICAgICAvLyBsb2cgZmlyc3QsIGluIGNhc2UgdGhlcmUgaXMgYSBwcm9ibGVtIGluIHByb2Nlc3NpbmdcbiAgICAgIC5waXBlKG5ldyBTdHJlYW1Mb2dnZXIoU3RyZWFtTG9nZ2VyLlJFQ0VJVkUsIHZlcmJvc2UpKVxuICAgICAgLnBpcGUodGhpcy5fc3BsaXR0ZXIgPSBuZXcgTGVuZ3RoQmFzZWRTcGxpdHRlcih7XG4gICAgICAgIHJlYWRhYmxlU3RyZWFtOiB0aGlzLl9zb2NrZXRDbGllbnQsXG4gICAgICAgIGxpdHRsZUVuZGlhbjogZmFsc2UsXG4gICAgICAgIG1heEZyYW1lTGVuZ3RoOiBNQVhfRlJBTUVfU0laRSxcbiAgICAgICAgbGVuZ3RoRmllbGRPZmZzZXQ6IDAsXG4gICAgICAgIGxlbmd0aEZpZWxkTGVuZ3RoOiA0LFxuICAgICAgICBsZW5ndGhBZGp1c3RtZW50OiA0LFxuICAgICAgfSkpXG4gICAgICAucGlwZSh0aGlzLl9kZWNvZGVyKTtcblxuICAgIHRoaXMuX2VuY29kZXIgPSBuZXcgUGxpc3RTZXJ2aWNlRW5jb2RlcigpO1xuICAgIHRoaXMuX2VuY29kZXJcbiAgICAgIC5waXBlKG5ldyBTdHJlYW1Mb2dnZXIoU3RyZWFtTG9nZ2VyLlNFTkQsIHZlcmJvc2UpKVxuICAgICAgLnBpcGUodGhpcy5fc29ja2V0Q2xpZW50KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRpYWxpemVzIHRoZSBkYXRhIGZsb3cgZm9yIGlPUyA8IDExLCB3aGVyZSBkYXRhIGlzIHNlcGFyYXRlZCBpbnRvIHBhcnRpYWxcbiAgICogbWVzc2FnZXMgYmVmb3JlIHNlbmRpbmcuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdmVyYm9zZSAtIHdoZXRoZXIgdG8gcHJpbnQgb3V0IHRoZSBoZXggZHVtcCBmb3IgY29tbXVuaWNhdGlvblxuICAgKi9cbiAgX2luaXRpYWxpemVQYXJ0aWFsTWVzc2FnZVN1cHBvcnQgKHZlcmJvc2UpIHtcbiAgICAvLyAxTUIgYXMgYnVmZmVyIGZvciBidWxkaW5nIHdlYmluc3BlY3RvciBmdWxsIG1lc3NhZ2VzLiBXZSBjYW4gaW5jcmVhc2UgdGhlIHZhbHVlIGlmIG1vcmUgYnVmZmVyIGlzIG5lZWRlZFxuICAgIHRoaXMuX2RlY29kZXIgPSBuZXcgV2ViSW5zcGVjdG9yRGVjb2RlcihNQik7XG4gICAgdGhpcy5fc29ja2V0Q2xpZW50XG4gICAgICAvLyBsb2cgZmlyc3QsIGluIGNhc2UgdGhlcmUgaXMgYSBwcm9ibGVtIGluIHByb2Nlc3NpbmdcbiAgICAgIC5waXBlKG5ldyBTdHJlYW1Mb2dnZXIoU3RyZWFtTG9nZ2VyLlJFQ0VJVkUsIHZlcmJvc2UpKVxuICAgICAgLnBpcGUodGhpcy5fc3BsaXR0ZXIgPSBuZXcgTGVuZ3RoQmFzZWRTcGxpdHRlcih7XG4gICAgICAgIHJlYWRhYmxlU3RyZWFtOiB0aGlzLl9zb2NrZXRDbGllbnQsXG4gICAgICAgIGxpdHRsZUVuZGlhbjogZmFsc2UsXG4gICAgICAgIG1heEZyYW1lTGVuZ3RoOiBNQVhfRlJBTUVfU0laRSxcbiAgICAgICAgbGVuZ3RoRmllbGRPZmZzZXQ6IDAsXG4gICAgICAgIGxlbmd0aEZpZWxkTGVuZ3RoOiA0LFxuICAgICAgICBsZW5ndGhBZGp1c3RtZW50OiA0LFxuICAgICAgfSkpXG4gICAgICAucGlwZShuZXcgUGxpc3RTZXJ2aWNlRGVjb2RlcigpKVxuICAgICAgLnBpcGUodGhpcy5fZGVjb2Rlcik7XG5cbiAgICB0aGlzLl9lbmNvZGVyID0gbmV3IFdlYkluc3BlY3RvckVuY29kZXIoKTtcbiAgICB0aGlzLl9lbmNvZGVyXG4gICAgICAucGlwZShuZXcgUGxpc3RTZXJ2aWNlRW5jb2RlcigpKVxuICAgICAgLnBpcGUobmV3IFN0cmVhbUxvZ2dlcihTdHJlYW1Mb2dnZXIuU0VORCwgdmVyYm9zZSkpXG4gICAgICAucGlwZSh0aGlzLl9zb2NrZXRDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIGFuIG9iamVjdCB0byB0aGUgd2ViaW5zcGVjdG9yZCBzb2NrZXRcbiAgICogQHBhcmFtIHtPYmplY3R9IHJwY09iamVjdCBUaGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBzZW50XG4gICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciB3aGVuIHRoZSBvYmplY3QgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICovXG4gIHNlbmRNZXNzYWdlIChycGNPYmplY3QpIHtcbiAgICBpZiAoXy5pc05pbChycGNPYmplY3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzZW5kIGEgbnVsbCBvYmplY3QnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdmVyYm9zZSkge1xuICAgICAgbG9nLmRlYnVnKCdTZW5kaW5nIG1lc3NhZ2UgdG8gV2ViIEluc3BlY3RvcjonKTtcbiAgICAgIGxvZy5kZWJ1Zyh1dGlsLmpzb25TdHJpbmdpZnkocnBjT2JqZWN0KSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZW5jb2Rlci53cml0ZShycGNPYmplY3QpO1xuXG4gICAgLy8gd3JpdGUgYW4gZW1wdHkgbWVzc2FnZSwgd2hpY2ggb24gcmVhbCBkZXZpY2VzIGVuc3VyZXMgdGhlIGFjdHVhbCBtZXNzYWdlXG4gICAgLy8gZ2V0cyBzZW50IHRvIHRoZSBkZXZpY2UuIHdpdGhvdXQgdGhpcyBpdCB3aWxsIHBlcmlvZGljYWxseSBoYW5nIHdpdGhcbiAgICAvLyBub3RoaW5nIHNlbnRcbiAgICAvLyBob3dldmVyLCB0aGlzIGNhdXNlcyB3ZWJpbnNwZWN0b3JkIHRvIGNyYXNoIG9uIGRldmljZXMgcnVubmluZyBpT1MgMTBcbiAgICBpZiAoIXRoaXMuX2lzU2ltdWxhdG9yICYmIHRoaXMuX21ham9yT3NWZXJzaW9uID49IFBBUlRJQUxfTUVTU0FHRV9TVVBQT1JUX0RFUFJFQ0FUSU9OX1ZFUlNJT04pIHtcbiAgICAgIHRoaXMuX2VuY29kZXIud3JpdGUoJyAnKTtcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGR1cmluZyBtZXNzYWdlIGxpc3RlbmluZ1xuICAgKiBAbmFtZSBNZXNzYWdlQ2FsbGJhY2tcbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHJwYyBvYmplY3QgdGhhdCBpcyBzZW50IGZyb20gdGhlIHdlYmluc3BlY3RvcmRcbiAgKi9cblxuICAvKipcbiAgICogTGlzdGVuIHRvIG1lc3NhZ2VzIGNvbWluZyBmcm9tIHdlYmluc3BlY3RvcmRcbiAgICogQHBhcmFtIHtNZXNzYWdlQ2FsbGJhY2t9IGNhbGxiYWNrXG4gICAqL1xuICBsaXN0ZW5NZXNzYWdlIChvbkRhdGEpIHtcbiAgICB0aGlzLl9kZWNvZGVyLm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICAgIGlmICh0aGlzLl92ZXJib3NlKSB7XG4gICAgICAgIGxvZy5kZWJ1ZygnUmVjZWl2ZWQgbWVzc2FnZSBmcm9tIFdlYiBJbnNwZWN0b3I6Jyk7XG4gICAgICAgIGxvZy5kZWJ1Zyh1dGlsLmpzb25TdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgfVxuICAgICAgb25EYXRhKGRhdGEpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCB7IFdlYkluc3BlY3RvclNlcnZpY2UsIFdFQl9JTlNQRUNUT1JfU0VSVklDRV9OQU1FIH07XG5leHBvcnQgZGVmYXVsdCBXZWJJbnNwZWN0b3JTZXJ2aWNlO1xuIl0sImZpbGUiOiJsaWIvd2ViaW5zcGVjdG9yL2luZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
142
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi93ZWJpbnNwZWN0b3IvaW5kZXguanMiXSwibmFtZXMiOlsiV0VCX0lOU1BFQ1RPUl9TRVJWSUNFX05BTUUiLCJNQVhfRlJBTUVfU0laRSIsIk1CIiwiUEFSVElBTF9NRVNTQUdFX1NVUFBPUlRfREVQUkVDQVRJT05fVkVSU0lPTiIsIldlYkluc3BlY3RvclNlcnZpY2UiLCJCYXNlU2VydmljZVNvY2tldCIsImNvbnN0cnVjdG9yIiwib3B0cyIsIm1ham9yT3NWZXJzaW9uIiwiaXNTaW11bGF0b3IiLCJzb2NrZXRDaHVua1NpemUiLCJ2ZXJib3NlIiwidmVyYm9zZUhleER1bXAiLCJzb2NrZXRDbGllbnQiLCJtYXhGcmFtZUxlbmd0aCIsIl8iLCJpc0Z1bmN0aW9uIiwic2V0TWF4U2VuZEZyYWdtZW50IiwiaXNOaWwiLCJsb2ciLCJkZWJ1ZyIsIndhcm4iLCJfdmVyYm9zZSIsIl9pc1NpbXVsYXRvciIsIl9tYWpvck9zVmVyc2lvbiIsIl9pbml0aWFsaXplUGFydGlhbE1lc3NhZ2VTdXBwb3J0IiwiX2luaXRpYWxpemVGdWxsTWVzc2FnZVN1cHBvcnQiLCJfZGVjb2RlciIsIlBsaXN0U2VydmljZURlY29kZXIiLCJfc29ja2V0Q2xpZW50IiwicGlwZSIsIlN0cmVhbUxvZ2dlciIsIlJFQ0VJVkUiLCJfc3BsaXR0ZXIiLCJMZW5ndGhCYXNlZFNwbGl0dGVyIiwicmVhZGFibGVTdHJlYW0iLCJsaXR0bGVFbmRpYW4iLCJsZW5ndGhGaWVsZE9mZnNldCIsImxlbmd0aEZpZWxkTGVuZ3RoIiwibGVuZ3RoQWRqdXN0bWVudCIsIl9lbmNvZGVyIiwiUGxpc3RTZXJ2aWNlRW5jb2RlciIsIlNFTkQiLCJXZWJJbnNwZWN0b3JEZWNvZGVyIiwiV2ViSW5zcGVjdG9yRW5jb2RlciIsInNlbmRNZXNzYWdlIiwicnBjT2JqZWN0IiwiRXJyb3IiLCJ1dGlsIiwianNvblN0cmluZ2lmeSIsIndyaXRlIiwibGlzdGVuTWVzc2FnZSIsIm9uRGF0YSIsIm9uIiwiZGF0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQSxNQUFNQSwwQkFBMEIsR0FBRyx3QkFBbkM7O0FBQ0EsTUFBTUMsY0FBYyxHQUFHLEtBQUtDLGFBQTVCO0FBRUEsTUFBTUMsMkNBQTJDLEdBQUcsRUFBcEQ7O0FBb0JBLE1BQU1DLG1CQUFOLFNBQWtDQyw4QkFBbEMsQ0FBb0Q7QUFNbERDLEVBQUFBLFdBQVcsQ0FBRUMsSUFBSSxHQUFHLEVBQVQsRUFBYTtBQUN0QixVQUFNO0FBQ0pDLE1BQUFBLGNBREk7QUFFSkMsTUFBQUEsV0FBVyxHQUFHLEtBRlY7QUFHSkMsTUFBQUEsZUFISTtBQUlKQyxNQUFBQSxPQUFPLEdBQUcsS0FKTjtBQUtKQyxNQUFBQSxjQUFjLEdBQUcsS0FMYjtBQU1KQyxNQUFBQSxZQU5JO0FBT0pDLE1BQUFBLGNBQWMsR0FBR2I7QUFQYixRQVFGTSxJQVJKO0FBVUEsVUFBTU0sWUFBTjs7QUFHQSxRQUFJRSxnQkFBRUMsVUFBRixDQUFhSCxZQUFZLENBQUNJLGtCQUExQixLQUFpRCxDQUFDRixnQkFBRUcsS0FBRixDQUFRUixlQUFSLENBQWxELElBQThFQSxlQUFlLEdBQUcsQ0FBcEcsRUFBdUc7QUFDckcsVUFBSUcsWUFBWSxDQUFDSSxrQkFBYixDQUFnQ1AsZUFBaEMsQ0FBSixFQUFzRDtBQUNwRFMsd0JBQUlDLEtBQUosQ0FBVyxxQ0FBb0NWLGVBQWdCLEdBQS9EO0FBQ0QsT0FGRCxNQUVPO0FBRUxTLHdCQUFJRSxJQUFKLENBQVUsdUNBQXNDWCxlQUFnQixHQUFoRTtBQUNEO0FBQ0Y7O0FBRUQsU0FBS1ksUUFBTCxHQUFnQlgsT0FBaEI7QUFDQSxTQUFLWSxZQUFMLEdBQW9CZCxXQUFwQjtBQUNBLFNBQUtlLGVBQUwsR0FBdUJoQixjQUF2Qjs7QUFFQSxRQUFJLENBQUNDLFdBQUQsSUFBZ0JELGNBQWMsR0FBR0wsMkNBQXJDLEVBQWtGO0FBQ2hGLFdBQUtzQixnQ0FBTCxDQUFzQ2IsY0FBdEMsRUFBc0RFLGNBQXREO0FBQ0QsS0FGRCxNQUVPO0FBQ0wsV0FBS1ksNkJBQUwsQ0FBbUNkLGNBQW5DLEVBQW1ERSxjQUFuRDtBQUNEO0FBQ0Y7O0FBU0RZLEVBQUFBLDZCQUE2QixDQUFFZixPQUFGLEVBQVdHLGNBQVgsRUFBMkI7QUFDdEQsU0FBS2EsUUFBTCxHQUFnQixJQUFJQyw0QkFBSixFQUFoQjs7QUFDQSxTQUFLQyxhQUFMLENBRUdDLElBRkgsQ0FFUSxJQUFJQyxxQkFBSixDQUFpQkEsc0JBQWFDLE9BQTlCLEVBQXVDckIsT0FBdkMsQ0FGUixFQUdHbUIsSUFISCxDQUdRLEtBQUtHLFNBQUwsR0FBaUIsSUFBSUMsNEJBQUosQ0FBd0I7QUFDN0NDLE1BQUFBLGNBQWMsRUFBRSxLQUFLTixhQUR3QjtBQUU3Q08sTUFBQUEsWUFBWSxFQUFFLEtBRitCO0FBRzdDdEIsTUFBQUEsY0FINkM7QUFJN0N1QixNQUFBQSxpQkFBaUIsRUFBRSxDQUowQjtBQUs3Q0MsTUFBQUEsaUJBQWlCLEVBQUUsQ0FMMEI7QUFNN0NDLE1BQUFBLGdCQUFnQixFQUFFO0FBTjJCLEtBQXhCLENBSHpCLEVBV0dULElBWEgsQ0FXUSxLQUFLSCxRQVhiOztBQWFBLFNBQUthLFFBQUwsR0FBZ0IsSUFBSUMsNEJBQUosRUFBaEI7O0FBQ0EsU0FBS0QsUUFBTCxDQUNHVixJQURILENBQ1EsSUFBSUMscUJBQUosQ0FBaUJBLHNCQUFhVyxJQUE5QixFQUFvQy9CLE9BQXBDLENBRFIsRUFFR21CLElBRkgsQ0FFUSxLQUFLRCxhQUZiO0FBR0Q7O0FBVURKLEVBQUFBLGdDQUFnQyxDQUFFZCxPQUFGLEVBQVdHLGNBQVgsRUFBMkI7QUFFekQsU0FBS2EsUUFBTCxHQUFnQixJQUFJZ0IsNEJBQUosQ0FBd0J6QyxhQUF4QixDQUFoQjs7QUFDQSxTQUFLMkIsYUFBTCxDQUVHQyxJQUZILENBRVEsSUFBSUMscUJBQUosQ0FBaUJBLHNCQUFhQyxPQUE5QixFQUF1Q3JCLE9BQXZDLENBRlIsRUFHR21CLElBSEgsQ0FHUSxLQUFLRyxTQUFMLEdBQWlCLElBQUlDLDRCQUFKLENBQXdCO0FBQzdDQyxNQUFBQSxjQUFjLEVBQUUsS0FBS04sYUFEd0I7QUFFN0NPLE1BQUFBLFlBQVksRUFBRSxLQUYrQjtBQUc3Q3RCLE1BQUFBLGNBSDZDO0FBSTdDdUIsTUFBQUEsaUJBQWlCLEVBQUUsQ0FKMEI7QUFLN0NDLE1BQUFBLGlCQUFpQixFQUFFLENBTDBCO0FBTTdDQyxNQUFBQSxnQkFBZ0IsRUFBRTtBQU4yQixLQUF4QixDQUh6QixFQVdHVCxJQVhILENBV1EsSUFBSUYsNEJBQUosRUFYUixFQVlHRSxJQVpILENBWVEsS0FBS0gsUUFaYjs7QUFjQSxTQUFLYSxRQUFMLEdBQWdCLElBQUlJLDRCQUFKLEVBQWhCOztBQUNBLFNBQUtKLFFBQUwsQ0FDR1YsSUFESCxDQUNRLElBQUlXLDRCQUFKLEVBRFIsRUFFR1gsSUFGSCxDQUVRLElBQUlDLHFCQUFKLENBQWlCQSxzQkFBYVcsSUFBOUIsRUFBb0MvQixPQUFwQyxDQUZSLEVBR0dtQixJQUhILENBR1EsS0FBS0QsYUFIYjtBQUlEOztBQU9EZ0IsRUFBQUEsV0FBVyxDQUFFQyxTQUFGLEVBQWE7QUFDdEIsUUFBSS9CLGdCQUFFRyxLQUFGLENBQVE0QixTQUFSLENBQUosRUFBd0I7QUFDdEIsWUFBTSxJQUFJQyxLQUFKLENBQVUsMkJBQVYsQ0FBTjtBQUNEOztBQUVELFFBQUksS0FBS3pCLFFBQVQsRUFBbUI7QUFDakJILHNCQUFJQyxLQUFKLENBQVUsbUNBQVY7O0FBQ0FELHNCQUFJQyxLQUFKLENBQVU0QixvQkFBS0MsYUFBTCxDQUFtQkgsU0FBbkIsQ0FBVjtBQUNEOztBQUVELFNBQUtOLFFBQUwsQ0FBY1UsS0FBZCxDQUFvQkosU0FBcEI7O0FBTUEsUUFBSSxDQUFDLEtBQUt2QixZQUFOLElBQXNCLEtBQUtDLGVBQUwsSUFBd0JyQiwyQ0FBbEQsRUFBK0Y7QUFDN0YsV0FBS3FDLFFBQUwsQ0FBY1UsS0FBZCxDQUFvQixHQUFwQjtBQUNEO0FBQ0Y7O0FBWURDLEVBQUFBLGFBQWEsQ0FBRUMsTUFBRixFQUFVO0FBQ3JCLFNBQUt6QixRQUFMLENBQWMwQixFQUFkLENBQWlCLE1BQWpCLEVBQTBCQyxJQUFELElBQVU7QUFDakMsVUFBSSxLQUFLaEMsUUFBVCxFQUFtQjtBQUNqQkgsd0JBQUlDLEtBQUosQ0FBVSxzQ0FBVjs7QUFDQUQsd0JBQUlDLEtBQUosQ0FBVTRCLG9CQUFLQyxhQUFMLENBQW1CSyxJQUFuQixDQUFWO0FBQ0Q7O0FBQ0RGLE1BQUFBLE1BQU0sQ0FBQ0UsSUFBRCxDQUFOO0FBQ0QsS0FORDtBQU9EOztBQWhKaUQ7OztlQW9KckNsRCxtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBXZWJJbnNwZWN0b3JEZWNvZGVyIGZyb20gJy4vdHJhbnNmb3JtZXIvd2ViaW5zcGVjdG9yLWRlY29kZXInO1xuaW1wb3J0IFdlYkluc3BlY3RvckVuY29kZXIgZnJvbSAnLi90cmFuc2Zvcm1lci93ZWJpbnNwZWN0b3ItZW5jb2Rlcic7XG5pbXBvcnQgUGxpc3RTZXJ2aWNlRGVjb2RlciBmcm9tICcuLi9wbGlzdC1zZXJ2aWNlL3RyYW5zZm9ybWVyL3BsaXN0LXNlcnZpY2UtZGVjb2Rlcic7XG5pbXBvcnQgUGxpc3RTZXJ2aWNlRW5jb2RlciBmcm9tICcuLi9wbGlzdC1zZXJ2aWNlL3RyYW5zZm9ybWVyL3BsaXN0LXNlcnZpY2UtZW5jb2Rlcic7XG5pbXBvcnQgTGVuZ3RoQmFzZWRTcGxpdHRlciBmcm9tICcuLi91dGlsL3RyYW5zZm9ybWVyL2xlbmd0aC1iYXNlZC1zcGxpdHRlcic7XG5pbXBvcnQgU3RyZWFtTG9nZ2VyIGZyb20gJy4uL3V0aWwvdHJhbnNmb3JtZXIvc3RyZWFtLWxvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCB7IE1CIH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCB7IEJhc2VTZXJ2aWNlU29ja2V0IH0gZnJvbSAnLi4vYmFzZS1zZXJ2aWNlJztcblxuXG5jb25zdCBXRUJfSU5TUEVDVE9SX1NFUlZJQ0VfTkFNRSA9ICdjb20uYXBwbGUud2ViaW5zcGVjdG9yJztcbmNvbnN0IE1BWF9GUkFNRV9TSVpFID0gMjAgKiBNQjtcblxuY29uc3QgUEFSVElBTF9NRVNTQUdFX1NVUFBPUlRfREVQUkVDQVRJT05fVkVSU0lPTiA9IDExO1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFdlYkluc3BlY3RvclNlcnZpY2VPcHRpb25zXG4gKlxuICogQHByb3BlcnR5IHtudW1iZXJ9IG1ham9yT3NWZXJzaW9uIFRoZSBtYWpvciB2ZXJzaW9uIG9mIHRoZSBvcyB2ZXJzaW9uXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IGlzU2ltdWxhdG9yIFdoZXRoZXIgdGhlIGRldmljZSBpcyBhIHNpbXVsYXRvclxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzb2NrZXRDaHVua1NpemUgU2l6ZSwgaW4gYnl0ZXMgb2YgdGhlIGNodW5rcyB0byBzZW5kIHRvXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsIGRldmljZSAob25seSBpT1MgMTErKS4gRGVmYXVsdHMgdG9cbiAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2Mzg0IGJ5dGVzICh0aGUgVExTU29ja2V0IG1heCkuXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHZlcmJvc2UgVHVybiBvbiBsb2dnaW5nIG9mIGVhY2ggbWVzc2FnZSBzZW50IG9yIHJlY2VpdmVkLlxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHRzIHRvIGZhbHNlXG4gKiBAcHJvcGVydHkge2Jvb2xlYW59IHZlcmJvc2VIZXhEdW1wIFR1cm4gb24gbG9nZ2luZyBvZiBfYWxsXyBjb21tdW5pY2F0aW9uIGFzXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhleCBkdW1wLiBEZWZhdWx0cyB0byBmYWxzZVxuICogQHByb3BlcnR5IHsqfSBzb2NrZXRDbGllbnQgVGhlIHNvY2tldCBjbGllbnQgd2hlcmUgdGhlIGNvbW11bmljYXRpb24gd2lsbCBoYXBwZW5cbiAqIEBwcm9wZXJ0eSB7bnVtYmVyfSBtYXhGcmFtZUxlbmd0aCBbMjAgKiAxMDI0ICogMTAyNF0gLSBUaGUgbWF4aW11bSBzaXplXG4gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYnl0ZXMgb2YgYSBzaW5nbGUgZGF0YSBmcmFtZVxuICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBkZXZpY2UgY29tbXVuaWNhdGlvbiBwcm90b2NvbFxuICovXG5cbmNsYXNzIFdlYkluc3BlY3RvclNlcnZpY2UgZXh0ZW5kcyBCYXNlU2VydmljZVNvY2tldCB7XG4gIC8qKlxuICAgKiBUaGUgbWFpbiBzZXJ2aWNlIGZvciBjb21tdW5pY2F0aW9uIHdpdGggdGhlIHdlYmluc3BlY3RvcmRcbiAgICpcbiAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3JTZXJ2aWNlT3B0aW9uc31cbiAgICovXG4gIGNvbnN0cnVjdG9yIChvcHRzID0ge30pIHtcbiAgICBjb25zdCB7XG4gICAgICBtYWpvck9zVmVyc2lvbixcbiAgICAgIGlzU2ltdWxhdG9yID0gZmFsc2UsXG4gICAgICBzb2NrZXRDaHVua1NpemUsXG4gICAgICB2ZXJib3NlID0gZmFsc2UsXG4gICAgICB2ZXJib3NlSGV4RHVtcCA9IGZhbHNlLFxuICAgICAgc29ja2V0Q2xpZW50LFxuICAgICAgbWF4RnJhbWVMZW5ndGggPSBNQVhfRlJBTUVfU0laRSxcbiAgICB9ID0gb3B0cztcblxuICAgIHN1cGVyKHNvY2tldENsaWVudCk7XG5cbiAgICAvLyBzZXQgdGhlIGxhcmdlc3QgZnJhZ21lbnQgc2l6ZSBmb3IgdGhlIHNvY2tldCwgaWYgdGhlIG9wdGlvbiBpcyB0aGVyZVxuICAgIGlmIChfLmlzRnVuY3Rpb24oc29ja2V0Q2xpZW50LnNldE1heFNlbmRGcmFnbWVudCkgJiYgIV8uaXNOaWwoc29ja2V0Q2h1bmtTaXplKSAmJiBzb2NrZXRDaHVua1NpemUgPiAwKSB7XG4gICAgICBpZiAoc29ja2V0Q2xpZW50LnNldE1heFNlbmRGcmFnbWVudChzb2NrZXRDaHVua1NpemUpKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgTWF4aW11bSBUTFMgZnJhZ21lbnQgc2l6ZSBzZXQgdG8gJyR7c29ja2V0Q2h1bmtTaXplfSdgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIGFueXRoaW5nIG92ZXIgdGhlIF9hY3R1YWxfIG1heGltdW0gd2lsbCBmYWlsLCBhbmQgdGhpbmdzIHdpbGwgcmVtYWluIHRoZSBzYW1lXG4gICAgICAgIGxvZy53YXJuKGBVbmFibGUgdG8gc2V0IFRMUyBmcmFnbWVudCBzaXplIHRvICcke3NvY2tldENodW5rU2l6ZX0nYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fdmVyYm9zZSA9IHZlcmJvc2U7XG4gICAgdGhpcy5faXNTaW11bGF0b3IgPSBpc1NpbXVsYXRvcjtcbiAgICB0aGlzLl9tYWpvck9zVmVyc2lvbiA9IG1ham9yT3NWZXJzaW9uO1xuXG4gICAgaWYgKCFpc1NpbXVsYXRvciAmJiBtYWpvck9zVmVyc2lvbiA8IFBBUlRJQUxfTUVTU0FHRV9TVVBQT1JUX0RFUFJFQ0FUSU9OX1ZFUlNJT04pIHtcbiAgICAgIHRoaXMuX2luaXRpYWxpemVQYXJ0aWFsTWVzc2FnZVN1cHBvcnQodmVyYm9zZUhleER1bXAsIG1heEZyYW1lTGVuZ3RoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5faW5pdGlhbGl6ZUZ1bGxNZXNzYWdlU3VwcG9ydCh2ZXJib3NlSGV4RHVtcCwgbWF4RnJhbWVMZW5ndGgpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRpYWxpemVzIHRoZSBkYXRhIGZsb3cgZm9yIGlPUyAxMSsuXG4gICAqXG4gICAqIEBwYXJhbSB7Ym9vbGVhbn0gdmVyYm9zZSAtIHdoZXRoZXIgdG8gcHJpbnQgb3V0IHRoZSBoZXggZHVtcCBmb3IgY29tbXVuaWNhdGlvblxuICAgKiBAcGFyYW0ge251bWJlcn0gbWF4RnJhbWVMZW5ndGggLSBUaGUgbWF4aW11bSBzaXplIGluIGJ5dGVzIG9mIGEgc2luZ2xlIGRhdGEgZnJhbWVcbiAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGRldmljZSBjb21tdW5pY2F0aW9uIHByb3RvY29sXG4gICAqL1xuICBfaW5pdGlhbGl6ZUZ1bGxNZXNzYWdlU3VwcG9ydCAodmVyYm9zZSwgbWF4RnJhbWVMZW5ndGgpIHtcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFBsaXN0U2VydmljZURlY29kZXIoKTtcbiAgICB0aGlzLl9zb2NrZXRDbGllbnRcbiAgICAgIC8vIGxvZyBmaXJzdCwgaW4gY2FzZSB0aGVyZSBpcyBhIHByb2JsZW0gaW4gcHJvY2Vzc2luZ1xuICAgICAgLnBpcGUobmV3IFN0cmVhbUxvZ2dlcihTdHJlYW1Mb2dnZXIuUkVDRUlWRSwgdmVyYm9zZSkpXG4gICAgICAucGlwZSh0aGlzLl9zcGxpdHRlciA9IG5ldyBMZW5ndGhCYXNlZFNwbGl0dGVyKHtcbiAgICAgICAgcmVhZGFibGVTdHJlYW06IHRoaXMuX3NvY2tldENsaWVudCxcbiAgICAgICAgbGl0dGxlRW5kaWFuOiBmYWxzZSxcbiAgICAgICAgbWF4RnJhbWVMZW5ndGgsXG4gICAgICAgIGxlbmd0aEZpZWxkT2Zmc2V0OiAwLFxuICAgICAgICBsZW5ndGhGaWVsZExlbmd0aDogNCxcbiAgICAgICAgbGVuZ3RoQWRqdXN0bWVudDogNCxcbiAgICAgIH0pKVxuICAgICAgLnBpcGUodGhpcy5fZGVjb2Rlcik7XG5cbiAgICB0aGlzLl9lbmNvZGVyID0gbmV3IFBsaXN0U2VydmljZUVuY29kZXIoKTtcbiAgICB0aGlzLl9lbmNvZGVyXG4gICAgICAucGlwZShuZXcgU3RyZWFtTG9nZ2VyKFN0cmVhbUxvZ2dlci5TRU5ELCB2ZXJib3NlKSlcbiAgICAgIC5waXBlKHRoaXMuX3NvY2tldENsaWVudCk7XG4gIH1cblxuICAvKipcbiAgICogSW50aWFsaXplcyB0aGUgZGF0YSBmbG93IGZvciBpT1MgPCAxMSwgd2hlcmUgZGF0YSBpcyBzZXBhcmF0ZWQgaW50byBwYXJ0aWFsXG4gICAqIG1lc3NhZ2VzIGJlZm9yZSBzZW5kaW5nLlxuICAgKlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHZlcmJvc2UgLSB3aGV0aGVyIHRvIHByaW50IG91dCB0aGUgaGV4IGR1bXAgZm9yIGNvbW11bmljYXRpb25cbiAgICogQHBhcmFtIHtudW1iZXJ9IG1heEZyYW1lTGVuZ3RoIC0gVGhlIG1heGltdW0gc2l6ZSBpbiBieXRlcyBvZiBhIHNpbmdsZSBkYXRhIGZyYW1lXG4gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBkZXZpY2UgY29tbXVuaWNhdGlvbiBwcm90b2NvbFxuICAgKi9cbiAgX2luaXRpYWxpemVQYXJ0aWFsTWVzc2FnZVN1cHBvcnQgKHZlcmJvc2UsIG1heEZyYW1lTGVuZ3RoKSB7XG4gICAgLy8gMU1CIGFzIGJ1ZmZlciBmb3IgYnVsZGluZyB3ZWJpbnNwZWN0b3IgZnVsbCBtZXNzYWdlcy4gV2UgY2FuIGluY3JlYXNlIHRoZSB2YWx1ZSBpZiBtb3JlIGJ1ZmZlciBpcyBuZWVkZWRcbiAgICB0aGlzLl9kZWNvZGVyID0gbmV3IFdlYkluc3BlY3RvckRlY29kZXIoTUIpO1xuICAgIHRoaXMuX3NvY2tldENsaWVudFxuICAgICAgLy8gbG9nIGZpcnN0LCBpbiBjYXNlIHRoZXJlIGlzIGEgcHJvYmxlbSBpbiBwcm9jZXNzaW5nXG4gICAgICAucGlwZShuZXcgU3RyZWFtTG9nZ2VyKFN0cmVhbUxvZ2dlci5SRUNFSVZFLCB2ZXJib3NlKSlcbiAgICAgIC5waXBlKHRoaXMuX3NwbGl0dGVyID0gbmV3IExlbmd0aEJhc2VkU3BsaXR0ZXIoe1xuICAgICAgICByZWFkYWJsZVN0cmVhbTogdGhpcy5fc29ja2V0Q2xpZW50LFxuICAgICAgICBsaXR0bGVFbmRpYW46IGZhbHNlLFxuICAgICAgICBtYXhGcmFtZUxlbmd0aCxcbiAgICAgICAgbGVuZ3RoRmllbGRPZmZzZXQ6IDAsXG4gICAgICAgIGxlbmd0aEZpZWxkTGVuZ3RoOiA0LFxuICAgICAgICBsZW5ndGhBZGp1c3RtZW50OiA0LFxuICAgICAgfSkpXG4gICAgICAucGlwZShuZXcgUGxpc3RTZXJ2aWNlRGVjb2RlcigpKVxuICAgICAgLnBpcGUodGhpcy5fZGVjb2Rlcik7XG5cbiAgICB0aGlzLl9lbmNvZGVyID0gbmV3IFdlYkluc3BlY3RvckVuY29kZXIoKTtcbiAgICB0aGlzLl9lbmNvZGVyXG4gICAgICAucGlwZShuZXcgUGxpc3RTZXJ2aWNlRW5jb2RlcigpKVxuICAgICAgLnBpcGUobmV3IFN0cmVhbUxvZ2dlcihTdHJlYW1Mb2dnZXIuU0VORCwgdmVyYm9zZSkpXG4gICAgICAucGlwZSh0aGlzLl9zb2NrZXRDbGllbnQpO1xuICB9XG5cbiAgLyoqXG4gICAqIFNlbmRzIGFuIG9iamVjdCB0byB0aGUgd2ViaW5zcGVjdG9yZCBzb2NrZXRcbiAgICogQHBhcmFtIHtPYmplY3R9IHJwY09iamVjdCBUaGUgb2JqZWN0IHRoYXQgd2lsbCBiZSBzZW50XG4gICAqIEB0aHJvd3MgV2lsbCB0aHJvdyBhbiBlcnJvciB3aGVuIHRoZSBvYmplY3QgaXMgbnVsbCBvciB1bmRlZmluZWRcbiAgICovXG4gIHNlbmRNZXNzYWdlIChycGNPYmplY3QpIHtcbiAgICBpZiAoXy5pc05pbChycGNPYmplY3QpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzZW5kIGEgbnVsbCBvYmplY3QnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fdmVyYm9zZSkge1xuICAgICAgbG9nLmRlYnVnKCdTZW5kaW5nIG1lc3NhZ2UgdG8gV2ViIEluc3BlY3RvcjonKTtcbiAgICAgIGxvZy5kZWJ1Zyh1dGlsLmpzb25TdHJpbmdpZnkocnBjT2JqZWN0KSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZW5jb2Rlci53cml0ZShycGNPYmplY3QpO1xuXG4gICAgLy8gd3JpdGUgYW4gZW1wdHkgbWVzc2FnZSwgd2hpY2ggb24gcmVhbCBkZXZpY2VzIGVuc3VyZXMgdGhlIGFjdHVhbCBtZXNzYWdlXG4gICAgLy8gZ2V0cyBzZW50IHRvIHRoZSBkZXZpY2UuIHdpdGhvdXQgdGhpcyBpdCB3aWxsIHBlcmlvZGljYWxseSBoYW5nIHdpdGhcbiAgICAvLyBub3RoaW5nIHNlbnRcbiAgICAvLyBob3dldmVyLCB0aGlzIGNhdXNlcyB3ZWJpbnNwZWN0b3JkIHRvIGNyYXNoIG9uIGRldmljZXMgcnVubmluZyBpT1MgMTBcbiAgICBpZiAoIXRoaXMuX2lzU2ltdWxhdG9yICYmIHRoaXMuX21ham9yT3NWZXJzaW9uID49IFBBUlRJQUxfTUVTU0FHRV9TVVBQT1JUX0RFUFJFQ0FUSU9OX1ZFUlNJT04pIHtcbiAgICAgIHRoaXMuX2VuY29kZXIud3JpdGUoJyAnKTtcbiAgICB9XG4gIH1cblxuICAvKiogVGhlIGNhbGxiYWNrIGZ1bmN0aW9uIHdoaWNoIHdpbGwgYmUgY2FsbGVkIGR1cmluZyBtZXNzYWdlIGxpc3RlbmluZ1xuICAgKiBAbmFtZSBNZXNzYWdlQ2FsbGJhY2tcbiAgICogQGZ1bmN0aW9uXG4gICAqIEBwYXJhbSB7T2JqZWN0fSBvYmplY3QgVGhlIHJwYyBvYmplY3QgdGhhdCBpcyBzZW50IGZyb20gdGhlIHdlYmluc3BlY3RvcmRcbiAgKi9cblxuICAvKipcbiAgICogTGlzdGVuIHRvIG1lc3NhZ2VzIGNvbWluZyBmcm9tIHdlYmluc3BlY3RvcmRcbiAgICogQHBhcmFtIHtNZXNzYWdlQ2FsbGJhY2t9IGNhbGxiYWNrXG4gICAqL1xuICBsaXN0ZW5NZXNzYWdlIChvbkRhdGEpIHtcbiAgICB0aGlzLl9kZWNvZGVyLm9uKCdkYXRhJywgKGRhdGEpID0+IHtcbiAgICAgIGlmICh0aGlzLl92ZXJib3NlKSB7XG4gICAgICAgIGxvZy5kZWJ1ZygnUmVjZWl2ZWQgbWVzc2FnZSBmcm9tIFdlYiBJbnNwZWN0b3I6Jyk7XG4gICAgICAgIGxvZy5kZWJ1Zyh1dGlsLmpzb25TdHJpbmdpZnkoZGF0YSkpO1xuICAgICAgfVxuICAgICAgb25EYXRhKGRhdGEpO1xuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCB7IFdlYkluc3BlY3RvclNlcnZpY2UsIFdFQl9JTlNQRUNUT1JfU0VSVklDRV9OQU1FIH07XG5leHBvcnQgZGVmYXVsdCBXZWJJbnNwZWN0b3JTZXJ2aWNlO1xuIl0sImZpbGUiOiJsaWIvd2ViaW5zcGVjdG9yL2luZGV4LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
@@ -48,11 +48,11 @@ class InstallationProxyService extends BaseServicePlist {
48
48
 
49
49
  this._plistService.sendPlist(request);
50
50
  const messages = await this._waitMessageCompletion();
51
- return messages.reduce((acc, message) => {
51
+ return messages.reduce(function (acc, message) {
52
52
  if (!message.CurrentList) {
53
53
  return acc;
54
54
  }
55
- message.CurrentList.forEach(app => {
55
+ message.CurrentList.forEach(function (app) {
56
56
  acc[app.CFBundleIdentifier] = app;
57
57
  });
58
58
  return acc;
@@ -1,3 +1,4 @@
1
+ import _ from 'lodash';
1
2
  import { BaseServicePlist } from '../base-service';
2
3
 
3
4
 
@@ -60,28 +61,29 @@ class Lockdown extends BaseServicePlist {
60
61
  * @typedef {Object} Query
61
62
  *
62
63
  * @property {?string} key The key we want to access
63
- * @property {?string} domian The domain where we want to access
64
+ * @property {?string} domain The domain where we want to access
64
65
  */
65
66
 
66
67
  /**
67
68
  * Gets values from the device according to the query passed
69
+ *
68
70
  * @param {Query} query the query we want to send to lockdownd
69
71
  * @param {number} [timeout=5000] the timeout of receiving a response from lockdownd
70
- * @returns {Object}
72
+ * @returns {*} The actual response value. It should never be `null` or `undefined`
73
+ * @throws {Error} If an unexpected response is received from lockdownd
71
74
  */
72
75
  async getValue (query = {}, timeout = 5000) {
73
- let plist = {
76
+ const plist = Object.assign({
74
77
  Label: LABEL,
75
78
  ProtocolVersion: PROTOCOL_VERSION,
76
79
  Request: 'GetValue'
77
- };
78
- Object.assign(plist, query);
80
+ }, query);
79
81
  const data = await this._plistService.sendPlistAndReceive(plist, timeout);
80
- if (data.Request === 'GetValue' && data.Value) {
82
+ if (data?.Request === 'GetValue' && !_.isNil(data?.Value)) {
81
83
  return data.Value;
82
- } else {
83
- throw new Error(`Unexpected data: ${JSON.stringify(data)}`);
84
84
  }
85
+ throw new Error(`Unexpected data received for ${JSON.stringify(query)} request: ` +
86
+ JSON.stringify(data));
85
87
  }
86
88
 
87
89
  /**
package/lib/services.js CHANGED
@@ -26,6 +26,7 @@ async function startWebInspectorService (udid, opts = {}) {
26
26
  const verbose = !!opts.verbose;
27
27
  const verboseHexDump = !!opts.verboseHexDump;
28
28
  const socketChunkSize = opts.socketChunkSize;
29
+ const maxFrameLength = opts.maxFrameLength;
29
30
  const semverVersion = semver.coerce(osVersion);
30
31
  if (!semverVersion) {
31
32
  throw new Error(`Could not create a semver version out of '${osVersion}'`);
@@ -38,6 +39,7 @@ async function startWebInspectorService (udid, opts = {}) {
38
39
  verbose,
39
40
  verboseHexDump,
40
41
  socketClient: opts.socket,
42
+ maxFrameLength,
41
43
  });
42
44
  }
43
45
  const socket = await startService(udid, WEB_INSPECTOR_SERVICE_NAME, undefined);
@@ -48,6 +50,7 @@ async function startWebInspectorService (udid, opts = {}) {
48
50
  verbose,
49
51
  verboseHexDump,
50
52
  socketClient: socket,
53
+ maxFrameLength,
51
54
  });
52
55
  }
53
56
 
@@ -2,6 +2,71 @@ import Stream from 'stream';
2
2
 
3
3
  const NEW_LINE_CODE = 0x0A;
4
4
  const NULL_DELIMETER_CODE = 0x00;
5
+ const BACKSLASH_CODE = '\\'.codePointAt(0);
6
+ const SHIFTS_MAPPING = {
7
+ '-': 0x80,
8
+ '^': 0x40,
9
+ };
10
+ const ESCAPE_TOKEN_LEN = 4;
11
+ const ESCAPE_TOKEN_PATTERN = /\\M(-|\^)(.)/;
12
+
13
+
14
+ function toUtf8Byte (escapedChar, modifier) {
15
+ const shift = SHIFTS_MAPPING[modifier];
16
+ return isNaN(shift) ? null : escapedChar.codePointAt(0) + shift;
17
+ }
18
+
19
+ /**
20
+ * Unescapes utf8-encoded characters, so the output looks
21
+ * like a valid string. See https://github.com/appium/appium/issues/14476
22
+ * for more details.
23
+ *
24
+ * @param {Buffer} logBuffer A single escaped log line
25
+ * @returns {string} The unescaped string or the same string if no unescaping
26
+ * is necessary.
27
+ */
28
+ function unescape (logBuffer) {
29
+ const parseUtf8Chars = (start) => {
30
+ let cursor = start;
31
+ const token = new Uint8Array(ESCAPE_TOKEN_LEN);
32
+ const utf8CharsAsBytes = [];
33
+ while (cursor <= logBuffer.length - ESCAPE_TOKEN_LEN) {
34
+ logBuffer.copy(token, 0, cursor, cursor + ESCAPE_TOKEN_LEN);
35
+ const tokenStr = Buffer.from(token).toString('latin1');
36
+ const tokenMatch = ESCAPE_TOKEN_PATTERN.exec(tokenStr);
37
+ if (!tokenMatch) {
38
+ break;
39
+ }
40
+ const byte = toUtf8Byte(tokenMatch[2], tokenMatch[1]);
41
+ if (byte === null) {
42
+ break;
43
+ }
44
+ utf8CharsAsBytes.push(byte);
45
+ cursor += ESCAPE_TOKEN_LEN;
46
+ }
47
+ return utf8CharsAsBytes.length
48
+ ? [cursor, Buffer.from(utf8CharsAsBytes).toString('utf8')]
49
+ : [start, null];
50
+ };
51
+
52
+ let index = 0;
53
+ let result = '';
54
+ const bytesView = new Uint8Array(logBuffer);
55
+ while (index < bytesView.length) {
56
+ if (bytesView[index] === BACKSLASH_CODE) {
57
+ const [newIndex, chars] = parseUtf8Chars(index);
58
+ if (newIndex > index) {
59
+ result += chars;
60
+ index = newIndex;
61
+ continue;
62
+ }
63
+ }
64
+ result += String.fromCharCode(bytesView[index++]);
65
+ }
66
+
67
+ return result;
68
+ }
69
+
5
70
 
6
71
  class SyslogDecoder extends Stream.Transform {
7
72
 
@@ -24,10 +89,10 @@ class SyslogDecoder extends Stream.Transform {
24
89
  }
25
90
  // Push the data when new line is sent
26
91
  if (data[i] === NEW_LINE_CODE) {
27
- if (this.bufferIndex !== 0) {
92
+ if (this.bufferIndex > 0) {
28
93
  const stringBuffer = Buffer.allocUnsafe(this.bufferIndex);
29
94
  this.buffer.copy(stringBuffer, 0, 0, this.bufferIndex);
30
- this.push(stringBuffer.toString('utf8'), 'utf8');
95
+ this.push(unescape(stringBuffer), 'utf8');
31
96
  this.bufferIndex = 0;
32
97
  }
33
98
  continue;
@@ -38,5 +103,5 @@ class SyslogDecoder extends Stream.Transform {
38
103
  }
39
104
  }
40
105
 
41
- export { SyslogDecoder };
106
+ export { SyslogDecoder, unescape };
42
107
  export default SyslogDecoder;
@@ -1,4 +1,5 @@
1
1
  import net from 'net';
2
+ import os from 'os';
2
3
  import _ from 'lodash';
3
4
  import B from 'bluebird';
4
5
  import { plist, fs } from 'appium-support';
@@ -31,6 +32,8 @@ try {
31
32
  }
32
33
 
33
34
  const DEFAULT_USBMUXD_SOCKET = '/var/run/usbmuxd';
35
+ const DEFAULT_USBMUXD_PORT = 27015;
36
+ const DEFAULT_USBMUXD_HOST = '127.0.0.1';
34
37
  const PROG_NAME = name;
35
38
  const CLIENT_VERSION_STRING = `${name}-${version}`;
36
39
 
@@ -38,24 +41,46 @@ function swap16 (val) {
38
41
  return ((val & 0xFF) << 8) | ((val >> 8) & 0xFF);
39
42
  }
40
43
 
44
+ /**
45
+ * @typedef {Object} SocketOptions
46
+ * @property {?string} socketPath [/var/run/usbmuxd] The full path to the usbmuxd Unix socket
47
+ * @property {?number} socketPort [27015] The port number to connect to if running on Windows
48
+ * or in WSL1 mode
49
+ * @property {?string} socketHost [127.0.0.1] The host name to connect to if running on Windows
50
+ * or in WSL1 mode
51
+ * @property {?number} timeout [5000] The number of milliseconds to wait until
52
+ * the socket is connected
53
+ */
54
+
41
55
  /**
42
56
  * Connects a socket to usbmuxd service
43
57
  *
44
- * @param {?string} socketPath [/var/run/usbmuxd] The full path to the usbmuxd Unix socket
45
- * @param {?number} timeout [5000] The number of milliseconds to wait until
46
- * the socket is connected
58
+ * @param {?SocketOptions} opts
47
59
  * @throws {Error} If there was an error while accessing the socket or
48
60
  * a connection error happened
49
61
  * @throws {B.TimeoutError} if connection timeout happened
50
62
  * @returns {net.Socket} Connected socket instance
51
63
  */
52
- async function getDefaultSocket (socketPath = DEFAULT_USBMUXD_SOCKET, timeout = 5000) {
53
- if (!await fs.exists(socketPath)) {
64
+ async function getDefaultSocket (opts = {}) {
65
+ const {
66
+ socketPath = DEFAULT_USBMUXD_SOCKET,
67
+ socketPort = DEFAULT_USBMUXD_PORT,
68
+ socketHost = DEFAULT_USBMUXD_HOST,
69
+ timeout = 5000,
70
+ } = opts;
71
+
72
+ let socket;
73
+ if (await fs.exists(socketPath)) {
74
+ socket = net.createConnection(socketPath);
75
+ } else if (process.platform === 'win32'
76
+ || (process.platform === 'linux' && /microsoft/i.test(os.release()))) {
77
+ // Connect to usbmuxd when running on WSL1
78
+ socket = net.createConnection(socketPort, socketHost);
79
+ } else {
54
80
  throw new Error(`The usbmuxd socket at '${socketPath}' does not exist or is not accessible`);
55
81
  }
56
82
 
57
83
  return await new B((resolve, reject) => {
58
- const socket = net.createConnection(socketPath);
59
84
  socket.once('error', reject);
60
85
  socket.once('connect', () => resolve(socket));
61
86
  }).timeout(timeout);
package/lib/utilities.js CHANGED
@@ -3,9 +3,11 @@ import { upgradeToSSL } from './ssl-helper';
3
3
  import _ from 'lodash';
4
4
  import log from './logger';
5
5
 
6
+ // https://github.com/samdmarshall/iOS-Internals/blob/master/lockbot/lockbot/lockdown_keys.h
6
7
  const LOCKDOWN_REQUEST = {
7
8
  DEVICE_TIME: { Key: 'TimeIntervalSince1970' },
8
9
  DEVICE_UTC_OFFSET: { Key: 'TimeZoneOffsetFromUTC' },
10
+ DEVICE_TIME_ZONE: { Key: 'TimeZone' },
9
11
  DEVICE_VERSION: { Key: 'ProductVersion' },
10
12
  DEVICE_NAME: { Key: 'DeviceName' }
11
13
  };
@@ -75,8 +77,9 @@ async function getDeviceName (udid, socket = null) {
75
77
  * @typedef {Object} DeviceTime
76
78
  *
77
79
  * @property {number} timestamp Unix timestamp in seconds since 1970-01-01T00:00:00Z
78
- * @property {number} utcOffset The difference in seconds between the UTC time and the local device time.
80
+ * @property {number} utcOffset The difference in minutes between the UTC time and the local device time.
79
81
  * Can be negative.
82
+ * @property {string} timeZone Time zone name configured on the device, for example `Europe/Paris`
80
83
  */
81
84
 
82
85
  /**
@@ -89,12 +92,11 @@ async function getDeviceName (udid, socket = null) {
89
92
  async function getDeviceTime (udid, socket = null) {
90
93
  const lockdown = await startLockdownSession(udid, socket);
91
94
  try {
92
- const timestamp = await lockdown.getValue(LOCKDOWN_REQUEST.DEVICE_TIME);
93
- // Apple returns utcOffset in seconds which doesnt comply with the general standard
94
- const utcOffset = await lockdown.getValue(LOCKDOWN_REQUEST.DEVICE_UTC_OFFSET) / 60;
95
95
  return {
96
- timestamp,
97
- utcOffset,
96
+ timestamp: await lockdown.getValue(LOCKDOWN_REQUEST.DEVICE_TIME),
97
+ // Apple returns utcOffset in seconds which doesnt comply with the general standard
98
+ utcOffset: await lockdown.getValue(LOCKDOWN_REQUEST.DEVICE_UTC_OFFSET) / 60,
99
+ timeZone: await lockdown.getValue(LOCKDOWN_REQUEST.DEVICE_TIME_ZONE),
98
100
  };
99
101
  } finally {
100
102
  lockdown.close();
@@ -29,6 +29,9 @@ const PARTIAL_MESSAGE_SUPPORT_DEPRECATION_VERSION = 11;
29
29
  * @property {boolean} verboseHexDump Turn on logging of _all_ communication as
30
30
  * hex dump. Defaults to false
31
31
  * @property {*} socketClient The socket client where the communication will happen
32
+ * @property {number} maxFrameLength [20 * 1024 * 1024] - The maximum size
33
+ * in bytes of a single data frame
34
+ * in the device communication protocol
32
35
  */
33
36
 
34
37
  class WebInspectorService extends BaseServiceSocket {
@@ -45,6 +48,7 @@ class WebInspectorService extends BaseServiceSocket {
45
48
  verbose = false,
46
49
  verboseHexDump = false,
47
50
  socketClient,
51
+ maxFrameLength = MAX_FRAME_SIZE,
48
52
  } = opts;
49
53
 
50
54
  super(socketClient);
@@ -64,9 +68,9 @@ class WebInspectorService extends BaseServiceSocket {
64
68
  this._majorOsVersion = majorOsVersion;
65
69
 
66
70
  if (!isSimulator && majorOsVersion < PARTIAL_MESSAGE_SUPPORT_DEPRECATION_VERSION) {
67
- this._initializePartialMessageSupport(verboseHexDump);
71
+ this._initializePartialMessageSupport(verboseHexDump, maxFrameLength);
68
72
  } else {
69
- this._initializeFullMessageSupport(verboseHexDump);
73
+ this._initializeFullMessageSupport(verboseHexDump, maxFrameLength);
70
74
  }
71
75
  }
72
76
 
@@ -74,8 +78,10 @@ class WebInspectorService extends BaseServiceSocket {
74
78
  * Intializes the data flow for iOS 11+.
75
79
  *
76
80
  * @param {boolean} verbose - whether to print out the hex dump for communication
81
+ * @param {number} maxFrameLength - The maximum size in bytes of a single data frame
82
+ * in the device communication protocol
77
83
  */
78
- _initializeFullMessageSupport (verbose) {
84
+ _initializeFullMessageSupport (verbose, maxFrameLength) {
79
85
  this._decoder = new PlistServiceDecoder();
80
86
  this._socketClient
81
87
  // log first, in case there is a problem in processing
@@ -83,7 +89,7 @@ class WebInspectorService extends BaseServiceSocket {
83
89
  .pipe(this._splitter = new LengthBasedSplitter({
84
90
  readableStream: this._socketClient,
85
91
  littleEndian: false,
86
- maxFrameLength: MAX_FRAME_SIZE,
92
+ maxFrameLength,
87
93
  lengthFieldOffset: 0,
88
94
  lengthFieldLength: 4,
89
95
  lengthAdjustment: 4,
@@ -101,8 +107,10 @@ class WebInspectorService extends BaseServiceSocket {
101
107
  * messages before sending.
102
108
  *
103
109
  * @param {boolean} verbose - whether to print out the hex dump for communication
110
+ * @param {number} maxFrameLength - The maximum size in bytes of a single data frame
111
+ * in the device communication protocol
104
112
  */
105
- _initializePartialMessageSupport (verbose) {
113
+ _initializePartialMessageSupport (verbose, maxFrameLength) {
106
114
  // 1MB as buffer for bulding webinspector full messages. We can increase the value if more buffer is needed
107
115
  this._decoder = new WebInspectorDecoder(MB);
108
116
  this._socketClient
@@ -111,7 +119,7 @@ class WebInspectorService extends BaseServiceSocket {
111
119
  .pipe(this._splitter = new LengthBasedSplitter({
112
120
  readableStream: this._socketClient,
113
121
  littleEndian: false,
114
- maxFrameLength: MAX_FRAME_SIZE,
122
+ maxFrameLength,
115
123
  lengthFieldOffset: 0,
116
124
  lengthFieldLength: 4,
117
125
  lengthAdjustment: 4,
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "keywords": [
5
5
  "appium"
6
6
  ],
7
- "version": "1.4.1",
7
+ "version": "1.7.1",
8
8
  "author": "appium",
9
9
  "license": "Apache-2.0",
10
10
  "repository": {
@@ -52,7 +52,7 @@
52
52
  "precommit-test"
53
53
  ],
54
54
  "devDependencies": {
55
- "appium-gulp-plugins": "^5.0.0",
55
+ "appium-gulp-plugins": "^5.4.0",
56
56
  "chai": "^4.1.2",
57
57
  "chai-as-promised": "^7.1.1",
58
58
  "eslint-config-appium": "^4.2.0",