@appium/base-driver 8.2.0 → 8.2.4

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.
Files changed (68) hide show
  1. package/build/lib/basedriver/capabilities.js +3 -1
  2. package/build/lib/basedriver/commands/index.js +2 -4
  3. package/build/lib/basedriver/driver.js +5 -5
  4. package/build/lib/basedriver/helpers.js +137 -81
  5. package/build/lib/express/express-logging.js +2 -2
  6. package/build/lib/index.js +126 -0
  7. package/build/lib/jsonwp-proxy/protocol-converter.js +2 -5
  8. package/build/lib/jsonwp-proxy/proxy.js +2 -5
  9. package/build/lib/protocol/errors.js +4 -2
  10. package/build/lib/protocol/helpers.js +3 -20
  11. package/build/lib/protocol/protocol.js +9 -19
  12. package/build/lib/protocol/routes.js +1 -10
  13. package/build/test/basedriver/capability-specs.js +10 -10
  14. package/build/test/basedriver/commands/event-specs.js +10 -10
  15. package/build/test/basedriver/driver-e2e-specs.js +3 -3
  16. package/build/test/basedriver/driver-e2e-tests.js +6 -223
  17. package/build/test/basedriver/driver-specs.js +3 -3
  18. package/build/test/basedriver/driver-tests.js +4 -4
  19. package/build/test/basedriver/helpers-specs.js +5 -1
  20. package/build/test/basedriver/timeout-specs.js +7 -7
  21. package/build/test/basedriver/websockets-e2e-specs.js +5 -5
  22. package/build/test/express/server-e2e-specs.js +156 -0
  23. package/build/test/express/server-specs.js +151 -0
  24. package/build/test/express/static-specs.js +23 -0
  25. package/build/test/helpers.js +57 -0
  26. package/build/test/jsonwp-proxy/mock-request.js +93 -0
  27. package/build/test/jsonwp-proxy/protocol-converter-specs.js +173 -0
  28. package/build/test/jsonwp-proxy/proxy-e2e-specs.js +61 -0
  29. package/build/test/jsonwp-proxy/proxy-specs.js +294 -0
  30. package/build/test/jsonwp-proxy/url-specs.js +167 -0
  31. package/build/test/jsonwp-status/status-specs.js +36 -0
  32. package/build/test/protocol/errors-specs.js +388 -0
  33. package/build/test/protocol/fake-driver.js +168 -0
  34. package/build/test/protocol/helpers.js +27 -0
  35. package/build/test/protocol/protocol-e2e-specs.js +1182 -0
  36. package/build/test/protocol/routes-specs.js +82 -0
  37. package/build/test/protocol/validator-specs.js +151 -0
  38. package/index.d.ts +0 -1
  39. package/index.js +1 -62
  40. package/lib/basedriver/capabilities.js +3 -0
  41. package/lib/basedriver/commands/index.js +0 -2
  42. package/lib/basedriver/driver.js +5 -5
  43. package/lib/basedriver/helpers.js +197 -81
  44. package/lib/express/express-logging.js +1 -1
  45. package/lib/index.js +64 -0
  46. package/lib/jsonwp-proxy/protocol-converter.js +1 -5
  47. package/lib/jsonwp-proxy/proxy.js +1 -3
  48. package/lib/protocol/errors.js +1 -1
  49. package/lib/protocol/helpers.js +5 -25
  50. package/lib/protocol/protocol.js +9 -25
  51. package/lib/protocol/routes.js +0 -3
  52. package/package.json +7 -15
  53. package/test/basedriver/capability-specs.js +1 -1
  54. package/test/basedriver/commands/event-specs.js +1 -1
  55. package/test/basedriver/driver-e2e-specs.js +1 -1
  56. package/test/basedriver/driver-e2e-tests.js +1 -179
  57. package/test/basedriver/driver-specs.js +1 -1
  58. package/test/basedriver/driver-tests.js +1 -1
  59. package/test/basedriver/helpers-specs.js +4 -0
  60. package/test/basedriver/timeout-specs.js +1 -1
  61. package/test/basedriver/websockets-e2e-specs.js +1 -1
  62. package/build/index.js +0 -124
  63. package/build/lib/basedriver/commands/execute-child.js +0 -137
  64. package/build/lib/basedriver/commands/execute.js +0 -119
  65. package/build/test/basedriver/fixtures/custom-element-finder-bad.js +0 -12
  66. package/build/test/basedriver/fixtures/custom-element-finder.js +0 -36
  67. package/lib/basedriver/commands/execute-child.js +0 -132
  68. package/lib/basedriver/commands/execute.js +0 -126
@@ -13,7 +13,7 @@ var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
14
  var _bluebird = _interopRequireDefault(require("bluebird"));
15
15
 
16
- var _2 = require("../..");
16
+ var _lib = require("../../lib");
17
17
 
18
18
  var _sinon = _interopRequireDefault(require("sinon"));
19
19
 
@@ -496,8 +496,8 @@ function baseDriverUnitTests(DriverClass, defaultCaps = {}) {
496
496
  let obj = {
497
497
  foo: 'bar'
498
498
  };
499
- let d1 = new _2.DeviceSettings(obj);
500
- let d2 = new _2.DeviceSettings(obj);
499
+ let d1 = new _lib.DeviceSettings(obj);
500
+ let d2 = new _lib.DeviceSettings(obj);
501
501
  d1._settings.foo = 'baz';
502
502
 
503
503
  d1._settings.should.not.eql(d2._settings);
@@ -547,4 +547,4 @@ var _default = baseDriverUnitTests;
547
547
  exports.default = _default;require('source-map-support').install();
548
548
 
549
549
 
550
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItdGVzdHMuanMiXSwibmFtZXMiOlsiYmFzZURyaXZlclVuaXRUZXN0cyIsIkRyaXZlckNsYXNzIiwiZGVmYXVsdENhcHMiLCJjbGFzc05hbWUiLCJuYW1lIiwiZGVzY3JpYmUiLCJkIiwidzNjQ2FwcyIsImJlZm9yZUVhY2giLCJhbHdheXNNYXRjaCIsIk9iamVjdCIsImFzc2lnbiIsInBsYXRmb3JtTmFtZSIsImZpcnN0TWF0Y2giLCJhZnRlckVhY2giLCJkZWxldGVTZXNzaW9uIiwiaXQiLCJzaG91bGQiLCJleGlzdCIsImJhc2VWZXJzaW9uIiwic3RhdHVzIiwiZ2V0U3RhdHVzIiwiZXFsIiwic2Vzc0lkIiwiY3JlYXRlU2Vzc2lvbiIsImJlIiwiYSIsImxlbmd0aCIsImFib3ZlIiwiXyIsImNsb25lRGVlcCIsImV2ZW50dWFsbHkiLCJyZWplY3RlZFdpdGgiLCJzZXNzaW9uSWQxIiwiZXF1YWwiLCJzZXNzaW9uSWQiLCJzZXNzaW9uSWQyIiwibm90IiwiY2FwcyIsImdldFNlc3Npb24iLCJzZXNzaW9ucyIsImdldFNlc3Npb25zIiwiY2xvbmUiLCJpbmNsdWRlIiwiaWQiLCJjYXBhYmlsaXRpZXMiLCJkZXZpY2VOYW1lIiwiQiIsImRlbGF5IiwiYmluZCIsImNtZFByb21pc2UiLCJleGVjdXRlQ29tbWFuZCIsInAiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIkVycm9yIiwib25VbmV4cGVjdGVkU2h1dGRvd24iLCJzdGFydFVuZXhwZWN0ZWRTaHV0ZG93biIsIm9sZERlbGV0ZVNlc3Npb24iLCJwcm90b2NvbCIsImRyaXZlckZvclNlc3Npb24iLCJ3YWl0TXMiLCJEYXRlIiwibm93IiwiY2xlYXJOZXdDb21tYW5kVGltZW91dCIsIm51bUNtZHMiLCJjbWRzIiwiaSIsInB1c2giLCJyZXN1bHRzIiwiYWxsIiwic2V0dGxlIiwidmFsdWUiLCJyZWFzb24iLCJtZXNzYWdlIiwiY29udGFpbiIsImJlZm9yZSIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJ0aW1lb3V0cyIsImltcGxpY2l0V2FpdE1zIiwidW5kZWZpbmVkIiwiZ2V0VGltZW91dHMiLCJoYXZlIiwicHJvcGVydHkiLCJkZWVwIiwiaW1wbGljaXQiLCJjb21tYW5kIiwibmV3Q2FwcyIsInByb3h5QWN0aXZlIiwiYW4iLCJpbnN0YW5jZW9mIiwiRnVuY3Rpb24iLCJmYWxzZSIsInRocm93IiwiZ2V0UHJveHlBdm9pZExpc3QiLCJBcnJheSIsImNhblByb3h5IiwiYXZvaWRTdHViIiwic2lub24iLCJzdHViIiwicmV0dXJucyIsInByb3h5Um91dGVJc0F2b2lkZWQiLCJyZXN0b3JlIiwidHJ1ZSIsImJlZm9yZVN0YXJ0VGltZSIsInNob3VsZFZhbGlkYXRlQ2FwcyIsImV2ZW50SGlzdG9yeSIsImNvbW1hbmRzIiwibmV3U2Vzc2lvblJlcXVlc3RlZCIsIm5ld1Nlc3Npb25TdGFydGVkIiwiY21kIiwic3RhcnRUaW1lIiwiZW5kVGltZSIsImxvZ0V2ZW50IiwiZm9vIiwiYmFyIiwicmVzIiwiZXZlbnRzIiwiZXZlbnRUaW1pbmdzIiwicmVzZXQiLCJvYmoiLCJkMSIsIkRldmljZVNldHRpbmdzIiwiZDIiLCJfc2V0dGluZ3MiLCJkZW55SW5zZWN1cmUiLCJhbGxvd0luc2VjdXJlIiwicmVsYXhlZFNlY3VyaXR5RW5hYmxlZCIsImlzRmVhdHVyZUVuYWJsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS0EsU0FBU0EsbUJBQVQsQ0FBOEJDLFdBQTlCLEVBQTJDQyxXQUFXLEdBQUcsRUFBekQsRUFBNkQ7QUFFM0QsUUFBTUMsU0FBUyxHQUFHRixXQUFXLENBQUNHLElBQVosSUFBb0Isa0JBQXRDO0FBRUFDLEVBQUFBLFFBQVEsQ0FBRSxrQkFBaUJGLFNBQVUsR0FBN0IsRUFBaUMsWUFBWTtBQUNuRCxRQUFJRyxDQUFKLEVBQU9DLE9BQVA7QUFFQUMsSUFBQUEsVUFBVSxDQUFDLFlBQVk7QUFDckJG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QUYsQ0FBbUIsS0FBbkIsRUFBMEJoSCxNQUExQixDQUFpQ1EsRUFBakMsQ0FBb0MrRSxJQUFwQztBQUNELEtBTkMsQ0FBRjtBQU9ELEdBM0NPLENBQVI7QUE0Q0Q7O2VBRWN4RyxtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBEZXZpY2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5cblxuLy8gd3JhcCB0aGVzZSB0ZXN0cyBpbiBhIGZ1bmN0aW9uIHNvIHdlIGNhbiBleHBvcnQgdGhlIHRlc3RzIGFuZCByZS11c2UgdGhlbVxuLy8gZm9yIGFjdHVhbCBkcml2ZXIgaW1wbGVtZW50YXRpb25zXG5mdW5jdGlvbiBiYXNlRHJpdmVyVW5pdFRlc3RzIChEcml2ZXJDbGFzcywgZGVmYXVsdENhcHMgPSB7fSkge1xuICAvLyB0byBkaXNwbGF5IHRoZSBkcml2ZXIgdW5kZXIgdGVzdCBpbiByZXBvcnRcbiAgY29uc3QgY2xhc3NOYW1lID0gRHJpdmVyQ2xhc3MubmFtZSB8fCAnKHVua25vd24gZHJpdmVyKSc7XG5cbiAgZGVzY3JpYmUoYEJhc2VEcml2ZXIgKGFzICR7Y2xhc3NOYW1lfSlgLCBmdW5jdGlvbiAoKSB7XG4gICAgbGV0IGQsIHczY0NhcHM7XG5cbiAgICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGQgPSBuZXcgRHJpdmVyQ2xhc3MoKTtcbiAgICAgIHczY0NhcHMgPSB7XG4gICAgICAgIGFsd2F5c01hdGNoOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2Fwcywge1xuICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgICdhcHBpdW06ZGV2aWNlTmFtZSc6ICdDb21tb2RvcmUgNjQnLFxuICAgICAgICB9KSxcbiAgICAgICAgZmlyc3RNYXRjaDogW3t9XSxcbiAgICAgIH07XG4gICAgfSk7XG4gICAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCByZXBvcnQgdGhlIHZlcnNpb24gb2YgQmFzZURyaXZlciB1c2VkJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2hvdWxkLmV4aXN0KERyaXZlckNsYXNzLmJhc2VWZXJzaW9uKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGFuIGVtcHR5IHN0YXR1cyBvYmplY3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgc3RhdHVzID0gYXdhaXQgZC5nZXRTdGF0dXMoKTtcbiAgICAgIHN0YXR1cy5zaG91bGQuZXFsKHt9KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgc2Vzc2lvbklkIGZyb20gY3JlYXRlU2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBbc2Vzc0lkXSA9IGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIHNob3VsZC5leGlzdChzZXNzSWQpO1xuICAgICAgc2Vzc0lkLnNob3VsZC5iZS5hKCdzdHJpbmcnKTtcbiAgICAgIHNlc3NJZC5sZW5ndGguc2hvdWxkLmJlLmFib3ZlKDUpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBub3QgYmUgYWJsZSB0byBzdGFydCB0d28gc2Vzc2lvbnMgd2l0aG91dCBjbG9zaW5nIHRoZSBmaXJzdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCBfLmNsb25lRGVlcCh3M2NDYXBzKSk7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgnc2Vzc2lvbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGRlbGV0ZSBhIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgc2Vzc2lvbklkMSA9IGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCBfLmNsb25lRGVlcCh3M2NDYXBzKSk7XG4gICAgICBhd2FpdCBkLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIHNob3VsZC5lcXVhbChkLnNlc3Npb25JZCwgbnVsbCk7XG4gICAgICBsZXQgc2Vzc2lvbklkMiA9IGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCBfLmNsb25lRGVlcCh3M2NDYXBzKSk7XG4gICAgICBzZXNzaW9uSWQxLnNob3VsZC5ub3QuZXFsKHNlc3Npb25JZDIpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGN1cnJlbnQgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBbLCBjYXBzXSA9IGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIGNhcHMuc2hvdWxkLmVxdWFsKGF3YWl0IGQuZ2V0U2Vzc2lvbigpKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHNlc3Npb25zIGlmIG5vIHNlc3Npb24gZXhpc3RzJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHNlc3Npb25zID0gYXdhaXQgZC5nZXRTZXNzaW9ucygpO1xuICAgICAgc2Vzc2lvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgwKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmV0dXJuIHNlc3Npb25zJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgY2FwcyA9IF8uY2xvbmUodzNjQ2Fwcyk7XG4gICAgICBjYXBzLmEgPSAnY2FwJztcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCBjYXBzKTtcbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcblxuICAgICAgc2Vzc2lvbnMubGVuZ3RoLnNob3VsZC5lcXVhbCgxKTtcbiAgICAgIHNlc3Npb25zWzBdLnNob3VsZC5pbmNsdWRlKHtcbiAgICAgICAgaWQ6IGQuc2Vzc2lvbklkXG4gICAgICB9KTtcbiAgICAgIHNlc3Npb25zWzBdLmNhcGFiaWxpdGllcy5zaG91bGQuaW5jbHVkZSh7XG4gICAgICAgIGRldmljZU5hbWU6ICdDb21tb2RvcmUgNjQnLFxuICAgICAgICBwbGF0Zm9ybU5hbWU6ICdGYWtlJ1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGZ1bGZpbGwgYW4gdW5leHBlY3RlZCBkcml2ZXIgcXVpdCBwcm9taXNlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gbWFrZSBhIGNvbW1hbmQgdGhhdCB3aWxsIHdhaXQgYSBiaXQgc28gd2UgY2FuIGNyYXNoIHdoaWxlIGl0J3MgcnVubmluZ1xuICAgICAgZC5nZXRTdGF0dXMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwMCk7XG4gICAgICAgIHJldHVybiAnZ29vZCBzdGF0dXMnO1xuICAgICAgfS5iaW5kKGQpO1xuICAgICAgbGV0IGNtZFByb21pc2UgPSBkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnKTtcbiAgICAgIGF3YWl0IEIuZGVsYXkoMTApO1xuICAgICAgY29uc3QgcCA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKCdvblVuZXhwZWN0ZWRTaHV0ZG93biBldmVudCBpcyBleHBlY3RlZCB0byBiZSBmaXJlZCB3aXRoaW4gNSBzZWNvbmRzIHRpbWVvdXQnKSksIDUwMDApO1xuICAgICAgICBkLm9uVW5leHBlY3RlZFNodXRkb3duKHJlc29sdmUpO1xuICAgICAgfSk7XG4gICAgICBkLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKG5ldyBFcnJvcignV2UgY3Jhc2hlZCcpKTtcbiAgICAgIGF3YWl0IGNtZFByb21pc2Uuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvV2UgY3Jhc2hlZC8pO1xuICAgICAgYXdhaXQgcDtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGFsbG93IGNvbW1hbmRzIGluIG1pZGRsZSBvZiB1bmV4cGVjdGVkIHNodXRkb3duJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gbWFrZSBhIGNvbW1hbmQgdGhhdCB3aWxsIHdhaXQgYSBiaXQgc28gd2UgY2FuIGNyYXNoIHdoaWxlIGl0J3MgcnVubmluZ1xuICAgICAgZC5vbGREZWxldGVTZXNzaW9uID0gZC5kZWxldGVTZXNzaW9uO1xuICAgICAgZC5kZWxldGVTZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMCk7XG4gICAgICAgIGF3YWl0IHRoaXMub2xkRGVsZXRlU2Vzc2lvbigpO1xuICAgICAgfS5iaW5kKGQpO1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgY29uc3QgcCA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKCdvblVuZXhwZWN0ZWRTaHV0ZG93biBldmVudCBpcyBleHBlY3RlZCB0byBiZSBmaXJlZCB3aXRoaW4gNSBzZWNvbmRzIHRpbWVvdXQnKSksIDUwMDApO1xuICAgICAgICBkLm9uVW5leHBlY3RlZFNodXRkb3duKHJlc29sdmUpO1xuICAgICAgfSk7XG4gICAgICBkLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKG5ldyBFcnJvcignV2UgY3Jhc2hlZCcpKTtcbiAgICAgIGF3YWl0IHA7XG4gICAgICBhd2FpdCBkLmV4ZWN1dGVDb21tYW5kKCdnZXRTZXNzaW9uJykuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgvc2h1dCBkb3duLyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IG5ldyBjb21tYW5kcyBhZnRlciBkb25lIHNodXR0aW5nIGRvd24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBtYWtlIGEgY29tbWFuZCB0aGF0IHdpbGwgd2FpdCBhIGJpdCBzbyB3ZSBjYW4gY3Jhc2ggd2hpbGUgaXQncyBydW5uaW5nXG4gICAgICBkLm9sZERlbGV0ZVNlc3Npb24gPSBkLmRlbGV0ZVNlc3Npb247XG4gICAgICBkLmRlbGV0ZVNlc3Npb24gPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwKTtcbiAgICAgICAgYXdhaXQgdGhpcy5vbGREZWxldGVTZXNzaW9uKCk7XG4gICAgICB9LmJpbmQoZCk7XG5cbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCBfLmNsb25lRGVlcCh3M2NDYXBzKSk7XG4gICAgICBjb25zdCBwID0gbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ29uVW5leHBlY3RlZFNodXRkb3duIGV2ZW50IGlzIGV4cGVjdGVkIHRvIGJlIGZpcmVkIHdpdGhpbiA1IHNlY29uZHMgdGltZW91dCcpKSwgNTAwMCk7XG4gICAgICAgIGQub25VbmV4cGVjdGVkU2h1dGRvd24ocmVzb2x2ZSk7XG4gICAgICB9KTtcbiAgICAgIGQuc3RhcnRVbmV4cGVjdGVkU2h1dGRvd24obmV3IEVycm9yKCdXZSBjcmFzaGVkJykpO1xuICAgICAgYXdhaXQgcDtcblxuICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnZ2V0U2Vzc2lvbicpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3NodXQgZG93bi8pO1xuICAgICAgYXdhaXQgQi5kZWxheSg1MDApO1xuXG4gICAgICBhd2FpdCBkLmV4ZWN1dGVDb21tYW5kKCdjcmVhdGVTZXNzaW9uJywgbnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGRpc3Rpbmd1aXNoIGJldHdlZW4gVzNDIGFuZCBKU09OV1Agc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFRlc3QgVzNDIChsZWF2ZSBmaXJzdCAyIGFyZ3MgbnVsbCBiZWNhdXNlIHRob3NlIGFyZSB0aGUgSlNPTldQIGFyZ3MpXG4gICAgICBhd2FpdCBkLmV4ZWN1dGVDb21tYW5kKCdjcmVhdGVTZXNzaW9uJywgbnVsbCwgbnVsbCwge1xuICAgICAgICBhbHdheXNNYXRjaDogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENhcHMsIHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdGYWtlJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnQ29tbW9kb3JlIDY0JyxcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICB9KTtcblxuICAgICAgZC5wcm90b2NvbC5zaG91bGQuZXF1YWwoJ1czQycpO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Byb3RvY29sIGRldGVjdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgdXNlIFczQyBpZiBvbmx5IFczQyBjYXBzIGFyZSBwcm92aWRlZCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHthbHdheXNNYXRjaDogXy5jbG9uZShkZWZhdWx0Q2FwcyksIGZpcnN0TWF0Y2g6IFt7fV19KTtcbiAgICAgICAgZC5wcm90b2NvbC5zaG91bGQuZXF1YWwoJ1czQycpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGhhdmUgYSBtZXRob2QgdG8gZ2V0IGRyaXZlciBmb3IgYSBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IFtzZXNzSWRdID0gYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgZC5kcml2ZXJGb3JTZXNzaW9uKHNlc3NJZCkuc2hvdWxkLmVxbChkKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdjb21tYW5kIHF1ZXVlJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IGQgPSBuZXcgRHJpdmVyQ2xhc3MoKTtcblxuICAgICAgbGV0IHdhaXRNcyA9IDEwO1xuICAgICAgZC5nZXRTdGF0dXMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkod2FpdE1zKTtcbiAgICAgICAgcmV0dXJuIERhdGUubm93KCk7XG4gICAgICB9LmJpbmQoZCk7XG5cbiAgICAgIGQuZ2V0U2Vzc2lvbnMgPSBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IEIuZGVsYXkod2FpdE1zKTtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdtdWx0aXBhc3MnKTtcbiAgICAgIH0uYmluZChkKTtcblxuICAgICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5jbGVhck5ld0NvbW1hbmRUaW1lb3V0KCk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBxdWV1ZSBjb21tYW5kcyBhbmQuZXhlY3V0ZUNvbW1hbmQvcmVzcG9uZCBpbiB0aGUgb3JkZXIgcmVjZWl2ZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBudW1DbWRzID0gMTA7XG4gICAgICAgIGxldCBjbWRzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgY21kcy5wdXNoKGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFN0YXR1cycpKTtcbiAgICAgICAgfVxuICAgICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IEIuYWxsKGNtZHMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGlmIChyZXN1bHRzW2ldIDw9IHJlc3VsdHNbaSAtIDFdKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvdCByZXN1bHQgb3V0IG9mIG9yZGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgZXJyb3JzIGNvcnJlY3RseSB3aGVuIHF1ZXVpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxldCBudW1DbWRzID0gMTA7XG4gICAgICAgIGxldCBjbWRzID0gW107XG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgaWYgKGkgPT09IDUpIHtcbiAgICAgICAgICAgIGNtZHMucHVzaChkLmV4ZWN1dGVDb21tYW5kKCdnZXRTZXNzaW9ucycpKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY21kcy5wdXNoKGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFN0YXR1cycpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBCLnNldHRsZShjbWRzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCA1OyBpKyspIHtcbiAgICAgICAgICBpZiAocmVzdWx0c1tpXS52YWx1ZSgpIDw9IHJlc3VsdHNbaSAtIDFdLnZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignR290IHJlc3VsdCBvdXQgb2Ygb3JkZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0c1s1XS5yZWFzb24oKS5tZXNzYWdlLnNob3VsZC5jb250YWluKCdtdWx0aXBhc3MnKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDc7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBpZiAocmVzdWx0c1tpXS52YWx1ZSgpIDw9IHJlc3VsdHNbaSAtIDFdLnZhbHVlKCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignR290IHJlc3VsdCBvdXQgb2Ygb3JkZXInKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIG5vdCBjYXJlIGlmIHF1ZXVlIGVtcHRpZXMgZm9yIGEgYml0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbnVtQ21kcyA9IDEwO1xuICAgICAgICBsZXQgY21kcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGNtZHMucHVzaChkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBCLmFsbChjbWRzKTtcbiAgICAgICAgY21kcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGNtZHMucHVzaChkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnKSk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0cyA9IGF3YWl0IEIuYWxsKGNtZHMpO1xuICAgICAgICBmb3IgKGxldCBpID0gMTsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGlmIChyZXN1bHRzW2ldIDw9IHJlc3VsdHNbaSAtIDFdKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvdCByZXN1bHQgb3V0IG9mIG9yZGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCd0aW1lb3V0cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIH0pO1xuICAgICAgZGVzY3JpYmUoJ2NvbW1hbmQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgZXhpc3QgYnkgZGVmYXVsdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLm5ld0NvbW1hbmRUaW1lb3V0TXMuc2hvdWxkLmVxdWFsKDYwMDAwKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgYmUgc2V0dGFibGUgdGhyb3VnaCBgdGltZW91dHNgJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGF3YWl0IGQudGltZW91dHMoJ2NvbW1hbmQnLCAyMCk7XG4gICAgICAgICAgZC5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcXVhbCgyMCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgICBkZXNjcmliZSgnaW1wbGljaXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgbm90IGV4aXN0IGJ5IGRlZmF1bHQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5pbXBsaWNpdFdhaXRNcy5zaG91bGQuZXF1YWwoMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGJlIHNldHRhYmxlIHRocm91Z2ggYHRpbWVvdXRzYCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKCdpbXBsaWNpdCcsIDIwKTtcbiAgICAgICAgICBkLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcXVhbCgyMCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndGltZW91dHMgKFczQyknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiZWZvcmVFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIHczY0NhcHMpO1xuICAgICAgfSk7XG4gICAgICBhZnRlckVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBnZXQgdGltZW91dHMgdGhhdCB3ZSBzZXQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQudGltZW91dHModW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAxMDAwKTtcbiAgICAgICAgYXdhaXQgZC5nZXRUaW1lb3V0cygpLnNob3VsZC5ldmVudHVhbGx5LmhhdmUucHJvcGVydHkoJ2ltcGxpY2l0JywgMTAwMCk7XG4gICAgICAgIGF3YWl0IGQudGltZW91dHMoJ2NvbW1hbmQnLCAyMDAwKTtcbiAgICAgICAgYXdhaXQgZC5nZXRUaW1lb3V0cygpLnNob3VsZC5ldmVudHVhbGx5LmRlZXAuZXF1YWwoe1xuICAgICAgICAgIGltcGxpY2l0OiAxMDAwLFxuICAgICAgICAgIGNvbW1hbmQ6IDIwMDAsXG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgMzAwMCk7XG4gICAgICAgIGF3YWl0IGQuZ2V0VGltZW91dHMoKS5zaG91bGQuZXZlbnR1YWxseS5kZWVwLmVxdWFsKHtcbiAgICAgICAgICBpbXBsaWNpdDogMzAwMCxcbiAgICAgICAgICBjb21tYW5kOiAyMDAwLFxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Jlc2V0IGNvbXBhdGliaWxpdHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIG5vdCBhbGxvdyBib3RoIGZ1bGxSZXNldCBhbmQgbm9SZXNldCB0byBiZSB0cnVlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBjb25zdCBuZXdDYXBzID0ge1xuICAgICAgICAgIGFsd2F5c01hdGNoOiBPYmplY3QuYXNzaWduKHt9LCBkZWZhdWx0Q2Fwcywge1xuICAgICAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZScsXG4gICAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnQ29tbW9kb3JlIDY0JyxcbiAgICAgICAgICAgICdhcHBpdW06ZnVsbFJlc2V0JzogdHJ1ZSxcbiAgICAgICAgICAgICdhcHBpdW06bm9SZXNldCc6IHRydWVcbiAgICAgICAgICB9KSxcbiAgICAgICAgfTtcbiAgICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIG5ld0NhcHMpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aChcbiAgICAgICAgICAgIC9ub1Jlc2V0LitmdWxsUmVzZXQvKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3Byb3h5aW5nJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHNlc3NJZDtcbiAgICAgIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBbc2Vzc0lkXSA9IGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIH0pO1xuICAgICAgZGVzY3JpYmUoJyNwcm94eUFjdGl2ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBleGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLnByb3h5QWN0aXZlLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEZ1bmN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQucHJveHlBY3RpdmUoc2Vzc0lkKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIHdoZW4gc2Vzc2lvbklkIGlzIHdyb25nJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICgoKSA9PiB7IGQucHJveHlBY3RpdmUoJ2FhYScpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCcjZ2V0UHJveHlBdm9pZExpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgZXhpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5nZXRQcm94eUF2b2lkTGlzdC5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihGdW5jdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmdldFByb3h5QXZvaWRMaXN0KHNlc3NJZCkuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoQXJyYXkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciB3aGVuIHNlc3Npb25JZCBpcyB3cm9uZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAoKCkgPT4geyBkLmdldFByb3h5QXZvaWRMaXN0KCdhYWEnKTsgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnI2NhblByb3h5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGhhdmUgYSAjY2FuUHJveHkgbWV0aG9kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuY2FuUHJveHkuc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoRnVuY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gYSBib29sZWFuIGZyb20gI2NhblByb3h5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuY2FuUHJveHkoc2Vzc0lkKS5zaG91bGQuYmUuYSgnYm9vbGVhbicpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciB3aGVuIHNlc3Npb25JZCBpcyB3cm9uZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAoKCkgPT4geyBkLmNhblByb3h5KCk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJyNwcm94eVJvdXRlSXNBdm9pZGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIHZhbGlkYXRlIGZvcm0gb2YgYXZvaWRhbmNlIGxpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2lub24uc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL1xcL2Zvby9dLCBbJ0dFVCddXSk7XG4gICAgICAgICAgKCgpID0+IHsgZC5wcm94eVJvdXRlSXNBdm9pZGVkKCk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL1xcL2Zvby9dLCBbJ0dFVCcsIC9eZm9vLywgJ2JhciddXSk7XG4gICAgICAgICAgKCgpID0+IHsgZC5wcm94eVJvdXRlSXNBdm9pZGVkKCk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgICBhdm9pZFN0dWIucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZWplY3QgYmFkIGh0dHAgbWV0aG9kcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzaW5vbi5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXmZvby9dLCBbJ0JBWkVURScsIC9eYmFyL11dKTtcbiAgICAgICAgICAoKCkgPT4geyBkLnByb3h5Um91dGVJc0F2b2lkZWQoKTsgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJlamVjdCBub24tcmVnZXggcm91dGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNpbm9uLnN0dWIoZCwgJ2dldFByb3h5QXZvaWRMaXN0Jyk7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9eZm9vL10sIFsnR0VUJywgJy9iYXInXV0pO1xuICAgICAgICAgICgoKSA9PiB7IGQucHJveHlSb3V0ZUlzQXZvaWRlZCgpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIHRydWUgZm9yIHJvdXRlcyBpbiB0aGUgYXZvaWQgbGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzaW5vbi5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXlxcL2Zvby9dXSk7XG4gICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKG51bGwsICdQT1NUJywgJy9mb28vYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgc3RyaXAgYXdheSBhbnkgd2QvaHViIHByZWZpeCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzaW5vbi5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXlxcL2Zvby9dXSk7XG4gICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKG51bGwsICdQT1NUJywgJy9mb28vYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGZhbHNlIGZvciByb3V0ZXMgbm90IGluIHRoZSBhdm9pZCBsaXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNpbm9uLnN0dWIoZCwgJ2dldFByb3h5QXZvaWRMaXN0Jyk7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9eXFwvZm9vL11dKTtcbiAgICAgICAgICBkLnByb3h5Um91dGVJc0F2b2lkZWQobnVsbCwgJ0dFVCcsICcvZm9vL2JhcicpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgICAgICBkLnByb3h5Um91dGVJc0F2b2lkZWQobnVsbCwgJ1BPU1QnLCAnL2JvbycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgICAgICBhdm9pZFN0dWIucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ2V2ZW50IHRpbWluZyBmcmFtZXdvcmsnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgYmVmb3JlU3RhcnRUaW1lO1xuICAgICAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGJlZm9yZVN0YXJ0VGltZSA9IERhdGUubm93KCk7XG4gICAgICAgIGQuc2hvdWxkVmFsaWRhdGVDYXBzID0gZmFsc2U7XG4gICAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2NyZWF0ZVNlc3Npb24nLCBudWxsLCBudWxsLCB7YWx3YXlzTWF0Y2g6IHsuLi5kZWZhdWx0Q2Fwc30sIGZpcnN0TWF0Y2g6IFt7fV19KTtcbiAgICAgIH0pO1xuICAgICAgZGVzY3JpYmUoJyNldmVudEhpc3RvcnknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgaGF2ZSBhbiBldmVudEhpc3RvcnkgcHJvcGVydHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KGQuZXZlbnRIaXN0b3J5KTtcbiAgICAgICAgICBzaG91bGQuZXhpc3QoZC5ldmVudEhpc3RvcnkuY29tbWFuZHMpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpdCgnc2hvdWxkIGhhdmUgYSBzZXNzaW9uIHN0YXJ0IHRpbWluZyBhZnRlciBzZXNzaW9uIHN0YXJ0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCB7bmV3U2Vzc2lvblJlcXVlc3RlZCwgbmV3U2Vzc2lvblN0YXJ0ZWR9ID0gZC5ldmVudEhpc3Rvcnk7XG4gICAgICAgICAgbmV3U2Vzc2lvblJlcXVlc3RlZC5zaG91bGQuaGF2ZS5sZW5ndGgoMSk7XG4gICAgICAgICAgbmV3U2Vzc2lvblN0YXJ0ZWQuc2hvdWxkLmhhdmUubGVuZ3RoKDEpO1xuICAgICAgICAgIG5ld1Nlc3Npb25SZXF1ZXN0ZWRbMF0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICAgIG5ld1Nlc3Npb25TdGFydGVkWzBdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgICAobmV3U2Vzc2lvblJlcXVlc3RlZFswXSA+PSBiZWZvcmVTdGFydFRpbWUpLnNob3VsZC5iZS50cnVlO1xuICAgICAgICAgIChuZXdTZXNzaW9uU3RhcnRlZFswXSA+PSBuZXdTZXNzaW9uUmVxdWVzdGVkWzBdKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBpbmNsdWRlIGEgY29tbWFuZHMgbGlzdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnLCBbXSk7XG4gICAgICAgICAgZC5ldmVudEhpc3RvcnkuY29tbWFuZHMubGVuZ3RoLnNob3VsZC5lcXVhbCgyKTtcbiAgICAgICAgICBkLmV2ZW50SGlzdG9yeS5jb21tYW5kc1sxXS5jbWQuc2hvdWxkLmVxdWFsKCdnZXRTdGF0dXMnKTtcbiAgICAgICAgICBkLmV2ZW50SGlzdG9yeS5jb21tYW5kc1sxXS5zdGFydFRpbWUuc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzWzFdLmVuZFRpbWUuc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgZGVzY3JpYmUoJyNsb2dFdmVudCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBhbGxvdyBsb2dnaW5nIGFyYml0cmFyeSBldmVudHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5sb2dFdmVudCgnZm9vJyk7XG4gICAgICAgICAgZC5ldmVudEhpc3RvcnkuZm9vWzBdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgICAoZC5ldmVudEhpc3RvcnkuZm9vWzBdID49IGJlZm9yZVN0YXJ0VGltZSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIG5vdCBhbGxvdyByZXNlcnZlZCBvciBvZGRseSBmb3JtZWQgZXZlbnQgbmFtZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgKCgpID0+IHtcbiAgICAgICAgICAgIGQubG9nRXZlbnQoJ2NvbW1hbmRzJyk7XG4gICAgICAgICAgfSkuc2hvdWxkLnRocm93KCk7XG4gICAgICAgICAgKCgpID0+IHtcbiAgICAgICAgICAgIGQubG9nRXZlbnQoMSk7XG4gICAgICAgICAgfSkuc2hvdWxkLnRocm93KCk7XG4gICAgICAgICAgKCgpID0+IHtcbiAgICAgICAgICAgIGQubG9nRXZlbnQoe30pO1xuICAgICAgICAgIH0pLnNob3VsZC50aHJvdygpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBhbGxvdyBsb2dnaW5nIHRoZSBzYW1lIGV2ZW50IG11bHRpcGxlIHRpbWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBkLmxvZ0V2ZW50KCdiYXInKTtcbiAgICAgICAgZC5sb2dFdmVudCgnYmFyJyk7XG4gICAgICAgIGQuZXZlbnRIaXN0b3J5LmJhci5zaG91bGQuaGF2ZS5sZW5ndGgoMik7XG4gICAgICAgIGQuZXZlbnRIaXN0b3J5LmJhclsxXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIChkLmV2ZW50SGlzdG9yeS5iYXJbMV0gPj0gZC5ldmVudEhpc3RvcnkuYmFyWzBdKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIH0pO1xuICAgICAgZGVzY3JpYmUoJ2dldFNlc3Npb24gZGVjb3JhdGlvbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBkZWNvcmF0ZSBnZXRTZXNzaW9uIHJlc3BvbnNlIGlmIG9wdC1pbiBjYXAgaXMgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgbGV0IHJlcyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbigpO1xuICAgICAgICAgIHNob3VsZC5ub3QuZXhpc3QocmVzLmV2ZW50cyk7XG5cbiAgICAgICAgICBkLmNhcHMuZXZlbnRUaW1pbmdzID0gdHJ1ZTtcbiAgICAgICAgICByZXMgPSBhd2FpdCBkLmdldFNlc3Npb24oKTtcbiAgICAgICAgICBzaG91bGQuZXhpc3QocmVzLmV2ZW50cyk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KHJlcy5ldmVudHMubmV3U2Vzc2lvblJlcXVlc3RlZCk7XG4gICAgICAgICAgcmVzLmV2ZW50cy5uZXdTZXNzaW9uUmVxdWVzdGVkWzBdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnLnJlc2V0JywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCByZXNldCBhcyBXM0MgaWYgdGhlIG9yaWdpbmFsIHNlc3Npb24gd2FzIFczQycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgY2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDogT2JqZWN0LmFzc2lnbih7fSwge1xuICAgICAgICAgICAgJ2FwcGl1bTphcHAnOiAnRmFrZScsXG4gICAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnRmFrZScsXG4gICAgICAgICAgICAnYXBwaXVtOmF1dG9tYXRpb25OYW1lJzogJ0Zha2UnLFxuICAgICAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZScsXG4gICAgICAgICAgfSwgZGVmYXVsdENhcHMpLFxuICAgICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbih1bmRlZmluZWQsIHVuZGVmaW5lZCwgY2Fwcyk7XG4gICAgICAgIGQucHJvdG9jb2wuc2hvdWxkLmVxdWFsKCdXM0MnKTtcbiAgICAgICAgYXdhaXQgZC5yZXNldCgpO1xuICAgICAgICBkLnByb3RvY29sLnNob3VsZC5lcXVhbCgnVzNDJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0RldmljZVNldHRpbmdzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgbm90IGhvbGQgb24gdG8gcmVmZXJlbmNlIG9mIGRlZmF1bHRzIGluIGNvbnN0cnVjdG9yJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IG9iaiA9IHtmb286ICdiYXInfTtcbiAgICAgIGxldCBkMSA9IG5ldyBEZXZpY2VTZXR0aW5ncyhvYmopO1xuICAgICAgbGV0IGQyID0gbmV3IERldmljZVNldHRpbmdzKG9iaik7XG4gICAgICBkMS5fc2V0dGluZ3MuZm9vID0gJ2Jheic7XG4gICAgICBkMS5fc2V0dGluZ3Muc2hvdWxkLm5vdC5lcWwoZDIuX3NldHRpbmdzKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJy5pc0ZlYXR1cmVFbmFibGVkJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGQgPSBuZXcgRHJpdmVyQ2xhc3MoKTtcblxuICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBkLmRlbnlJbnNlY3VyZSA9IG51bGw7XG4gICAgICBkLmFsbG93SW5zZWN1cmUgPSBudWxsO1xuICAgICAgZC5yZWxheGVkU2VjdXJpdHlFbmFibGVkID0gbnVsbDtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2F5IGEgZmVhdHVyZSBpcyBlbmFibGVkIHdoZW4gaXQgaXMgZXhwbGljaXRseSBhbGxvd2VkJywgZnVuY3Rpb24gKCkge1xuICAgICAgZC5hbGxvd0luc2VjdXJlID0gWydmb28nLCAnYmFyJ107XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2ZvbycpLnNob3VsZC5iZS50cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXInKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmF6Jykuc2hvdWxkLmJlLmZhbHNlO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBzYXkgYSBmZWF0dXJlIGlzIG5vdCBlbmFibGVkIGlmIGl0IGlzIG5vdCBlbmFibGVkJywgZnVuY3Rpb24gKCkge1xuICAgICAgZC5hbGxvd0luc2VjdXJlID0gW107XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2ZvbycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcHJlZmVyIGRlbnlJbnNlY3VyZSB0byBhbGxvd0luc2VjdXJlJywgZnVuY3Rpb24gKCkge1xuICAgICAgZC5hbGxvd0luc2VjdXJlID0gWydmb28nLCAnYmFyJ107XG4gICAgICBkLmRlbnlJbnNlY3VyZSA9IFsnZm9vJ107XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2ZvbycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JheicpLnNob3VsZC5iZS5mYWxzZTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYWxsb3cgZ2xvYmFsIHNldHRpbmcgZm9yIGluc2VjdXJpdHknLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkLnJlbGF4ZWRTZWN1cml0eUVuYWJsZWQgPSB0cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdmb28nKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JheicpLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuXG4gICAgaXQoJ2dsb2JhbCBzZXR0aW5nIHNob3VsZCBiZSBvdmVycmlkZWFibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkLnJlbGF4ZWRTZWN1cml0eUVuYWJsZWQgPSB0cnVlO1xuICAgICAgZC5kZW55SW5zZWN1cmUgPSBbJ2ZvbycsICdiYXInXTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnZm9vJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXInKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JheicpLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgYmFzZURyaXZlclVuaXRUZXN0cztcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2RyaXZlci10ZXN0cy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
550
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9kcml2ZXItdGVzdHMuanMiXSwibmFtZXMiOlsiYmFzZURyaXZlclVuaXRUZXN0cyIsIkRyaXZlckNsYXNzIiwiZGVmYXVsdENhcHMiLCJjbGFzc05hbWUiLCJuYW1lIiwiZGVzY3JpYmUiLCJkIiwidzNjQ2FwcyIsImJlZm9yZUVhY2giLCJhbHdheXNNYXRjaCIsIk9iamVjdCIsImFzc2lnbiIsInBsYXRmb3JtTmFtZSIsImZpcnN0TWF0Y2giLCJhZnRlckVhY2giLCJkZWxldGVTZXNzaW9uIiwiaXQiLCJzaG91bGQiLCJleGlzdCIsImJhc2VWZXJzaW9uIiwic3RhdHVzIiwiZ2V0U3RhdHVzIiwiZXFsIiwic2Vzc0lkIiwiY3JlYXRlU2Vzc2lvbiIsImJlIiwiYSIsImxlbmd0aCIsImFib3ZlIiwiXyIsImNsb25lRGVlcCIsImV2ZW50dWFsbHkiLCJyZWplY3RlZFdpdGgiLCJzZXNzaW9uSWQxIiwiZXF1YWwiLCJzZXNzaW9uSWQiLCJzZXNzaW9uSWQyIiwibm90IiwiY2FwcyIsImdldFNlc3Npb24iLCJzZXNzaW9ucyIsImdldFNlc3Npb25zIiwiY2xvbmUiLCJpbmNsdWRlIiwiaWQiLCJjYXBhYmlsaXRpZXMiLCJkZXZpY2VOYW1lIiwiQiIsImRlbGF5IiwiYmluZCIsImNtZFByb21pc2UiLCJleGVjdXRlQ29tbWFuZCIsInAiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2V0VGltZW91dCIsIkVycm9yIiwib25VbmV4cGVjdGVkU2h1dGRvd24iLCJzdGFydFVuZXhwZWN0ZWRTaHV0ZG93biIsIm9sZERlbGV0ZVNlc3Npb24iLCJwcm90b2NvbCIsImRyaXZlckZvclNlc3Npb24iLCJ3YWl0TXMiLCJEYXRlIiwibm93IiwiY2xlYXJOZXdDb21tYW5kVGltZW91dCIsIm51bUNtZHMiLCJjbWRzIiwiaSIsInB1c2giLCJyZXN1bHRzIiwiYWxsIiwic2V0dGxlIiwidmFsdWUiLCJyZWFzb24iLCJtZXNzYWdlIiwiY29udGFpbiIsImJlZm9yZSIsIm5ld0NvbW1hbmRUaW1lb3V0TXMiLCJ0aW1lb3V0cyIsImltcGxpY2l0V2FpdE1zIiwidW5kZWZpbmVkIiwiZ2V0VGltZW91dHMiLCJoYXZlIiwicHJvcGVydHkiLCJkZWVwIiwiaW1wbGljaXQiLCJjb21tYW5kIiwibmV3Q2FwcyIsInByb3h5QWN0aXZlIiwiYW4iLCJpbnN0YW5jZW9mIiwiRnVuY3Rpb24iLCJmYWxzZSIsInRocm93IiwiZ2V0UHJveHlBdm9pZExpc3QiLCJBcnJheSIsImNhblByb3h5IiwiYXZvaWRTdHViIiwic2lub24iLCJzdHViIiwicmV0dXJucyIsInByb3h5Um91dGVJc0F2b2lkZWQiLCJyZXN0b3JlIiwidHJ1ZSIsImJlZm9yZVN0YXJ0VGltZSIsInNob3VsZFZhbGlkYXRlQ2FwcyIsImV2ZW50SGlzdG9yeSIsImNvbW1hbmRzIiwibmV3U2Vzc2lvblJlcXVlc3RlZCIsIm5ld1Nlc3Npb25TdGFydGVkIiwiY21kIiwic3RhcnRUaW1lIiwiZW5kVGltZSIsImxvZ0V2ZW50IiwiZm9vIiwiYmFyIiwicmVzIiwiZXZlbnRzIiwiZXZlbnRUaW1pbmdzIiwicmVzZXQiLCJvYmoiLCJkMSIsIkRldmljZVNldHRpbmdzIiwiZDIiLCJfc2V0dGluZ3MiLCJkZW55SW5zZWN1cmUiLCJhbGxvd0luc2VjdXJlIiwicmVsYXhlZFNlY3VyaXR5RW5hYmxlZCIsImlzRmVhdHVyZUVuYWJsZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBS0EsU0FBU0EsbUJBQVQsQ0FBOEJDLFdBQTlCLEVBQTJDQyxXQUFXLEdBQUcsRUFBekQsRUFBNkQ7QUFFM0QsUUFBTUMsU0FBUyxHQUFHRixXQUFXLENBQUNHLElBQVosSUFBb0Isa0JBQXRDO0FBRUFDLEVBQUFBLFFBQVEsQ0FBRSxrQkFBaUJGLFNBQVUsR0FBN0IsRUFBaUMsWUFBWTtBQUNuRCxRQUFJRyxDQUFKLEVBQU9DLE9BQVA7QUFFQUMsSUFBQUEsVUFBVSxDQUFDLFlBQVk7QUFDckJG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QUYsQ0FBbUIsS0FBbkIsRUFBMEJoSCxNQUExQixDQUFpQ1EsRUFBakMsQ0FBb0MrRSxJQUFwQztBQUNELEtBTkMsQ0FBRjtBQU9ELEdBM0NPLENBQVI7QUE0Q0Q7O2VBRWN4RyxtQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeyBEZXZpY2VTZXR0aW5ncyB9IGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuXG5cbi8vIHdyYXAgdGhlc2UgdGVzdHMgaW4gYSBmdW5jdGlvbiBzbyB3ZSBjYW4gZXhwb3J0IHRoZSB0ZXN0cyBhbmQgcmUtdXNlIHRoZW1cbi8vIGZvciBhY3R1YWwgZHJpdmVyIGltcGxlbWVudGF0aW9uc1xuZnVuY3Rpb24gYmFzZURyaXZlclVuaXRUZXN0cyAoRHJpdmVyQ2xhc3MsIGRlZmF1bHRDYXBzID0ge30pIHtcbiAgLy8gdG8gZGlzcGxheSB0aGUgZHJpdmVyIHVuZGVyIHRlc3QgaW4gcmVwb3J0XG4gIGNvbnN0IGNsYXNzTmFtZSA9IERyaXZlckNsYXNzLm5hbWUgfHwgJyh1bmtub3duIGRyaXZlciknO1xuXG4gIGRlc2NyaWJlKGBCYXNlRHJpdmVyIChhcyAke2NsYXNzTmFtZX0pYCwgZnVuY3Rpb24gKCkge1xuICAgIGxldCBkLCB3M2NDYXBzO1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBkID0gbmV3IERyaXZlckNsYXNzKCk7XG4gICAgICB3M2NDYXBzID0ge1xuICAgICAgICBhbHdheXNNYXRjaDogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENhcHMsIHtcbiAgICAgICAgICBwbGF0Zm9ybU5hbWU6ICdGYWtlJyxcbiAgICAgICAgICAnYXBwaXVtOmRldmljZU5hbWUnOiAnQ29tbW9kb3JlIDY0JyxcbiAgICAgICAgfSksXG4gICAgICAgIGZpcnN0TWF0Y2g6IFt7fV0sXG4gICAgICB9O1xuICAgIH0pO1xuICAgIGFmdGVyRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmRlbGV0ZVNlc3Npb24oKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgcmVwb3J0IHRoZSB2ZXJzaW9uIG9mIEJhc2VEcml2ZXIgdXNlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNob3VsZC5leGlzdChEcml2ZXJDbGFzcy5iYXNlVmVyc2lvbik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBhbiBlbXB0eSBzdGF0dXMgb2JqZWN0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHN0YXR1cyA9IGF3YWl0IGQuZ2V0U3RhdHVzKCk7XG4gICAgICBzdGF0dXMuc2hvdWxkLmVxbCh7fSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBhIHNlc3Npb25JZCBmcm9tIGNyZWF0ZVNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgW3Nlc3NJZF0gPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICBzaG91bGQuZXhpc3Qoc2Vzc0lkKTtcbiAgICAgIHNlc3NJZC5zaG91bGQuYmUuYSgnc3RyaW5nJyk7XG4gICAgICBzZXNzSWQubGVuZ3RoLnNob3VsZC5iZS5hYm92ZSg1KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgbm90IGJlIGFibGUgdG8gc3RhcnQgdHdvIHNlc3Npb25zIHdpdGhvdXQgY2xvc2luZyB0aGUgZmlyc3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgYXdhaXQgZC5jcmVhdGVTZXNzaW9uKG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoJ3Nlc3Npb24nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBkZWxldGUgYSBzZXNzaW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IHNlc3Npb25JZDEgPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICBzaG91bGQuZXF1YWwoZC5zZXNzaW9uSWQsIG51bGwpO1xuICAgICAgbGV0IHNlc3Npb25JZDIgPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgc2Vzc2lvbklkMS5zaG91bGQubm90LmVxbChzZXNzaW9uSWQyKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBjdXJyZW50IHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgWywgY2Fwc10gPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICBjYXBzLnNob3VsZC5lcXVhbChhd2FpdCBkLmdldFNlc3Npb24oKSk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBzZXNzaW9ucyBpZiBubyBzZXNzaW9uIGV4aXN0cycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzZXNzaW9ucyA9IGF3YWl0IGQuZ2V0U2Vzc2lvbnMoKTtcbiAgICAgIHNlc3Npb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMCk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHJldHVybiBzZXNzaW9ucycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGNhcHMgPSBfLmNsb25lKHczY0NhcHMpO1xuICAgICAgY2Fwcy5hID0gJ2NhcCc7XG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgY2Fwcyk7XG4gICAgICBsZXQgc2Vzc2lvbnMgPSBhd2FpdCBkLmdldFNlc3Npb25zKCk7XG5cbiAgICAgIHNlc3Npb25zLmxlbmd0aC5zaG91bGQuZXF1YWwoMSk7XG4gICAgICBzZXNzaW9uc1swXS5zaG91bGQuaW5jbHVkZSh7XG4gICAgICAgIGlkOiBkLnNlc3Npb25JZFxuICAgICAgfSk7XG4gICAgICBzZXNzaW9uc1swXS5jYXBhYmlsaXRpZXMuc2hvdWxkLmluY2x1ZGUoe1xuICAgICAgICBkZXZpY2VOYW1lOiAnQ29tbW9kb3JlIDY0JyxcbiAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZSdcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBmdWxmaWxsIGFuIHVuZXhwZWN0ZWQgZHJpdmVyIHF1aXQgcHJvbWlzZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG1ha2UgYSBjb21tYW5kIHRoYXQgd2lsbCB3YWl0IGEgYml0IHNvIHdlIGNhbiBjcmFzaCB3aGlsZSBpdCdzIHJ1bm5pbmdcbiAgICAgIGQuZ2V0U3RhdHVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMDApO1xuICAgICAgICByZXR1cm4gJ2dvb2Qgc3RhdHVzJztcbiAgICAgIH0uYmluZChkKTtcbiAgICAgIGxldCBjbWRQcm9taXNlID0gZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJyk7XG4gICAgICBhd2FpdCBCLmRlbGF5KDEwKTtcbiAgICAgIGNvbnN0IHAgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignb25VbmV4cGVjdGVkU2h1dGRvd24gZXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZmlyZWQgd2l0aGluIDUgc2Vjb25kcyB0aW1lb3V0JykpLCA1MDAwKTtcbiAgICAgICAgZC5vblVuZXhwZWN0ZWRTaHV0ZG93bihyZXNvbHZlKTtcbiAgICAgIH0pO1xuICAgICAgZC5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoJ1dlIGNyYXNoZWQnKSk7XG4gICAgICBhd2FpdCBjbWRQcm9taXNlLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL1dlIGNyYXNoZWQvKTtcbiAgICAgIGF3YWl0IHA7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIG5vdCBhbGxvdyBjb21tYW5kcyBpbiBtaWRkbGUgb2YgdW5leHBlY3RlZCBzaHV0ZG93bicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIG1ha2UgYSBjb21tYW5kIHRoYXQgd2lsbCB3YWl0IGEgYml0IHNvIHdlIGNhbiBjcmFzaCB3aGlsZSBpdCdzIHJ1bm5pbmdcbiAgICAgIGQub2xkRGVsZXRlU2Vzc2lvbiA9IGQuZGVsZXRlU2Vzc2lvbjtcbiAgICAgIGQuZGVsZXRlU2Vzc2lvbiA9IGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgQi5kZWxheSgxMDApO1xuICAgICAgICBhd2FpdCB0aGlzLm9sZERlbGV0ZVNlc3Npb24oKTtcbiAgICAgIH0uYmluZChkKTtcbiAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIGNvbnN0IHAgPSBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignb25VbmV4cGVjdGVkU2h1dGRvd24gZXZlbnQgaXMgZXhwZWN0ZWQgdG8gYmUgZmlyZWQgd2l0aGluIDUgc2Vjb25kcyB0aW1lb3V0JykpLCA1MDAwKTtcbiAgICAgICAgZC5vblVuZXhwZWN0ZWRTaHV0ZG93bihyZXNvbHZlKTtcbiAgICAgIH0pO1xuICAgICAgZC5zdGFydFVuZXhwZWN0ZWRTaHV0ZG93bihuZXcgRXJyb3IoJ1dlIGNyYXNoZWQnKSk7XG4gICAgICBhd2FpdCBwO1xuICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnZ2V0U2Vzc2lvbicpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoL3NodXQgZG93bi8pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBhbGxvdyBuZXcgY29tbWFuZHMgYWZ0ZXIgZG9uZSBzaHV0dGluZyBkb3duJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gbWFrZSBhIGNvbW1hbmQgdGhhdCB3aWxsIHdhaXQgYSBiaXQgc28gd2UgY2FuIGNyYXNoIHdoaWxlIGl0J3MgcnVubmluZ1xuICAgICAgZC5vbGREZWxldGVTZXNzaW9uID0gZC5kZWxldGVTZXNzaW9uO1xuICAgICAgZC5kZWxldGVTZXNzaW9uID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KDEwMCk7XG4gICAgICAgIGF3YWl0IHRoaXMub2xkRGVsZXRlU2Vzc2lvbigpO1xuICAgICAgfS5iaW5kKGQpO1xuXG4gICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgXy5jbG9uZURlZXAodzNjQ2FwcykpO1xuICAgICAgY29uc3QgcCA9IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiByZWplY3QobmV3IEVycm9yKCdvblVuZXhwZWN0ZWRTaHV0ZG93biBldmVudCBpcyBleHBlY3RlZCB0byBiZSBmaXJlZCB3aXRoaW4gNSBzZWNvbmRzIHRpbWVvdXQnKSksIDUwMDApO1xuICAgICAgICBkLm9uVW5leHBlY3RlZFNodXRkb3duKHJlc29sdmUpO1xuICAgICAgfSk7XG4gICAgICBkLnN0YXJ0VW5leHBlY3RlZFNodXRkb3duKG5ldyBFcnJvcignV2UgY3Jhc2hlZCcpKTtcbiAgICAgIGF3YWl0IHA7XG5cbiAgICAgIGF3YWl0IGQuZXhlY3V0ZUNvbW1hbmQoJ2dldFNlc3Npb24nKS5zaG91bGQuYmUucmVqZWN0ZWRXaXRoKC9zaHV0IGRvd24vKTtcbiAgICAgIGF3YWl0IEIuZGVsYXkoNTAwKTtcblxuICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnY3JlYXRlU2Vzc2lvbicsIG51bGwsIG51bGwsIF8uY2xvbmVEZWVwKHczY0NhcHMpKTtcbiAgICAgIGF3YWl0IGQuZGVsZXRlU2Vzc2lvbigpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBkaXN0aW5ndWlzaCBiZXR3ZWVuIFczQyBhbmQgSlNPTldQIHNlc3Npb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBUZXN0IFczQyAobGVhdmUgZmlyc3QgMiBhcmdzIG51bGwgYmVjYXVzZSB0aG9zZSBhcmUgdGhlIEpTT05XUCBhcmdzKVxuICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnY3JlYXRlU2Vzc2lvbicsIG51bGwsIG51bGwsIHtcbiAgICAgICAgYWx3YXlzTWF0Y2g6IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRDYXBzLCB7XG4gICAgICAgICAgcGxhdGZvcm1OYW1lOiAnRmFrZScsXG4gICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgIH0pLFxuICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgfSk7XG5cbiAgICAgIGQucHJvdG9jb2wuc2hvdWxkLmVxdWFsKCdXM0MnKTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdwcm90b2NvbCBkZXRlY3Rpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHVzZSBXM0MgaWYgb25seSBXM0MgY2FwcyBhcmUgcHJvdmlkZWQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB7YWx3YXlzTWF0Y2g6IF8uY2xvbmUoZGVmYXVsdENhcHMpLCBmaXJzdE1hdGNoOiBbe31dfSk7XG4gICAgICAgIGQucHJvdG9jb2wuc2hvdWxkLmVxdWFsKCdXM0MnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBoYXZlIGEgbWV0aG9kIHRvIGdldCBkcml2ZXIgZm9yIGEgc2Vzc2lvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBbc2Vzc0lkXSA9IGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIGQuZHJpdmVyRm9yU2Vzc2lvbihzZXNzSWQpLnNob3VsZC5lcWwoZCk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnY29tbWFuZCBxdWV1ZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBkID0gbmV3IERyaXZlckNsYXNzKCk7XG5cbiAgICAgIGxldCB3YWl0TXMgPSAxMDtcbiAgICAgIGQuZ2V0U3RhdHVzID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KHdhaXRNcyk7XG4gICAgICAgIHJldHVybiBEYXRlLm5vdygpO1xuICAgICAgfS5iaW5kKGQpO1xuXG4gICAgICBkLmdldFNlc3Npb25zID0gYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBCLmRlbGF5KHdhaXRNcyk7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignbXVsdGlwYXNzJyk7XG4gICAgICB9LmJpbmQoZCk7XG5cbiAgICAgIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGQuY2xlYXJOZXdDb21tYW5kVGltZW91dCgpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgcXVldWUgY29tbWFuZHMgYW5kLmV4ZWN1dGVDb21tYW5kL3Jlc3BvbmQgaW4gdGhlIG9yZGVyIHJlY2VpdmVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbnVtQ21kcyA9IDEwO1xuICAgICAgICBsZXQgY21kcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGNtZHMucHVzaChkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnKSk7XG4gICAgICAgIH1cbiAgICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBCLmFsbChjbWRzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBpZiAocmVzdWx0c1tpXSA8PSByZXN1bHRzW2kgLSAxXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgcmVzdWx0IG91dCBvZiBvcmRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGVycm9ycyBjb3JyZWN0bHkgd2hlbiBxdWV1aW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBsZXQgbnVtQ21kcyA9IDEwO1xuICAgICAgICBsZXQgY21kcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG51bUNtZHM7IGkrKykge1xuICAgICAgICAgIGlmIChpID09PSA1KSB7XG4gICAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U2Vzc2lvbnMnKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNtZHMucHVzaChkLmV4ZWN1dGVDb21tYW5kKCdnZXRTdGF0dXMnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgQi5zZXR0bGUoY21kcyk7XG4gICAgICAgIGZvciAobGV0IGkgPSAxOyBpIDwgNTsgaSsrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHNbaV0udmFsdWUoKSA8PSByZXN1bHRzW2kgLSAxXS52YWx1ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvdCByZXN1bHQgb3V0IG9mIG9yZGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJlc3VsdHNbNV0ucmVhc29uKCkubWVzc2FnZS5zaG91bGQuY29udGFpbignbXVsdGlwYXNzJyk7XG4gICAgICAgIGZvciAobGV0IGkgPSA3OyBpIDwgbnVtQ21kczsgaSsrKSB7XG4gICAgICAgICAgaWYgKHJlc3VsdHNbaV0udmFsdWUoKSA8PSByZXN1bHRzW2kgLSAxXS52YWx1ZSgpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0dvdCByZXN1bHQgb3V0IG9mIG9yZGVyJyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBub3QgY2FyZSBpZiBxdWV1ZSBlbXB0aWVzIGZvciBhIGJpdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGV0IG51bUNtZHMgPSAxMDtcbiAgICAgICAgbGV0IGNtZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJykpO1xuICAgICAgICB9XG4gICAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgQi5hbGwoY21kcyk7XG4gICAgICAgIGNtZHMgPSBbXTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBjbWRzLnB1c2goZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJykpO1xuICAgICAgICB9XG4gICAgICAgIHJlc3VsdHMgPSBhd2FpdCBCLmFsbChjbWRzKTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBudW1DbWRzOyBpKyspIHtcbiAgICAgICAgICBpZiAocmVzdWx0c1tpXSA8PSByZXN1bHRzW2kgLSAxXSkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdHb3QgcmVzdWx0IG91dCBvZiBvcmRlcicpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgndGltZW91dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCdjb21tYW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGV4aXN0IGJ5IGRlZmF1bHQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcXVhbCg2MDAwMCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIGJlIHNldHRhYmxlIHRocm91Z2ggYHRpbWVvdXRzYCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKCdjb21tYW5kJywgMjApO1xuICAgICAgICAgIGQubmV3Q29tbWFuZFRpbWVvdXRNcy5zaG91bGQuZXF1YWwoMjApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgICAgZGVzY3JpYmUoJ2ltcGxpY2l0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIG5vdCBleGlzdCBieSBkZWZhdWx0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxdWFsKDApO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBiZSBzZXR0YWJsZSB0aHJvdWdoIGB0aW1lb3V0c2AnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgZC50aW1lb3V0cygnaW1wbGljaXQnLCAyMCk7XG4gICAgICAgICAgZC5pbXBsaWNpdFdhaXRNcy5zaG91bGQuZXF1YWwoMjApO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgZGVzY3JpYmUoJ3RpbWVvdXRzIChXM0MpJywgZnVuY3Rpb24gKCkge1xuICAgICAgYmVmb3JlRWFjaChhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCB3M2NDYXBzKTtcbiAgICAgIH0pO1xuICAgICAgYWZ0ZXJFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZC5kZWxldGVTZXNzaW9uKCk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZ2V0IHRpbWVvdXRzIHRoYXQgd2Ugc2V0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgMTAwMCk7XG4gICAgICAgIGF3YWl0IGQuZ2V0VGltZW91dHMoKS5zaG91bGQuZXZlbnR1YWxseS5oYXZlLnByb3BlcnR5KCdpbXBsaWNpdCcsIDEwMDApO1xuICAgICAgICBhd2FpdCBkLnRpbWVvdXRzKCdjb21tYW5kJywgMjAwMCk7XG4gICAgICAgIGF3YWl0IGQuZ2V0VGltZW91dHMoKS5zaG91bGQuZXZlbnR1YWxseS5kZWVwLmVxdWFsKHtcbiAgICAgICAgICBpbXBsaWNpdDogMTAwMCxcbiAgICAgICAgICBjb21tYW5kOiAyMDAwLFxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgZC50aW1lb3V0cyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDMwMDApO1xuICAgICAgICBhd2FpdCBkLmdldFRpbWVvdXRzKCkuc2hvdWxkLmV2ZW50dWFsbHkuZGVlcC5lcXVhbCh7XG4gICAgICAgICAgaW1wbGljaXQ6IDMwMDAsXG4gICAgICAgICAgY29tbWFuZDogMjAwMCxcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdyZXNldCBjb21wYXRpYmlsaXR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgYm90aCBmdWxsUmVzZXQgYW5kIG5vUmVzZXQgdG8gYmUgdHJ1ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgbmV3Q2FwcyA9IHtcbiAgICAgICAgICBhbHdheXNNYXRjaDogT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdENhcHMsIHtcbiAgICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0NvbW1vZG9yZSA2NCcsXG4gICAgICAgICAgICAnYXBwaXVtOmZ1bGxSZXNldCc6IHRydWUsXG4gICAgICAgICAgICAnYXBwaXVtOm5vUmVzZXQnOiB0cnVlXG4gICAgICAgICAgfSksXG4gICAgICAgIH07XG4gICAgICAgIGF3YWl0IGQuY3JlYXRlU2Vzc2lvbihudWxsLCBudWxsLCBuZXdDYXBzKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoXG4gICAgICAgICAgICAvbm9SZXNldC4rZnVsbFJlc2V0Lyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdwcm94eWluZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBzZXNzSWQ7XG4gICAgICBiZWZvcmVFYWNoKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgW3Nlc3NJZF0gPSBhd2FpdCBkLmNyZWF0ZVNlc3Npb24obnVsbCwgbnVsbCwgdzNjQ2Fwcyk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCcjcHJveHlBY3RpdmUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgZXhpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5wcm94eUFjdGl2ZS5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihGdW5jdGlvbik7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLnByb3h5QWN0aXZlKHNlc3NJZCkuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciB3aGVuIHNlc3Npb25JZCBpcyB3cm9uZycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAoKCkgPT4geyBkLnByb3h5QWN0aXZlKCdhYWEnKTsgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBkZXNjcmliZSgnI2dldFByb3h5QXZvaWRMaXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGV4aXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQuZ2V0UHJveHlBdm9pZExpc3Quc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoRnVuY3Rpb24pO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZXR1cm4gYW4gYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZC5nZXRQcm94eUF2b2lkTGlzdChzZXNzSWQpLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEFycmF5KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2hlbiBzZXNzaW9uSWQgaXMgd3JvbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgKCgpID0+IHsgZC5nZXRQcm94eUF2b2lkTGlzdCgnYWFhJyk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgfSk7XG4gICAgICB9KTtcblxuICAgICAgZGVzY3JpYmUoJyNjYW5Qcm94eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCBoYXZlIGEgI2NhblByb3h5IG1ldGhvZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmNhblByb3h5LnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKEZ1bmN0aW9uKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmV0dXJuIGEgYm9vbGVhbiBmcm9tICNjYW5Qcm94eScsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkLmNhblByb3h5KHNlc3NJZCkuc2hvdWxkLmJlLmEoJ2Jvb2xlYW4nKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3Igd2hlbiBzZXNzaW9uSWQgaXMgd3JvbmcnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgKCgpID0+IHsgZC5jYW5Qcm94eSgpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIGRlc2NyaWJlKCcjcHJveHlSb3V0ZUlzQXZvaWRlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaXQoJ3Nob3VsZCB2YWxpZGF0ZSBmb3JtIG9mIGF2b2lkYW5jZSBsaXN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGNvbnN0IGF2b2lkU3R1YiA9IHNpbm9uLnN0dWIoZCwgJ2dldFByb3h5QXZvaWRMaXN0Jyk7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9cXC9mb28vXSwgWydHRVQnXV0pO1xuICAgICAgICAgICgoKSA9PiB7IGQucHJveHlSb3V0ZUlzQXZvaWRlZCgpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgICAgYXZvaWRTdHViLnJldHVybnMoW1snUE9TVCcsIC9cXC9mb28vXSwgWydHRVQnLCAvXmZvby8sICdiYXInXV0pO1xuICAgICAgICAgICgoKSA9PiB7IGQucHJveHlSb3V0ZUlzQXZvaWRlZCgpOyB9KS5zaG91bGQudGhyb3c7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGl0KCdzaG91bGQgcmVqZWN0IGJhZCBodHRwIG1ldGhvZHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2lub24uc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL15mb28vXSwgWydCQVpFVEUnLCAvXmJhci9dXSk7XG4gICAgICAgICAgKCgpID0+IHsgZC5wcm94eVJvdXRlSXNBdm9pZGVkKCk7IH0pLnNob3VsZC50aHJvdztcbiAgICAgICAgICBhdm9pZFN0dWIucmVzdG9yZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCByZWplY3Qgbm9uLXJlZ2V4IHJvdXRlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzaW5vbi5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXmZvby9dLCBbJ0dFVCcsICcvYmFyJ11dKTtcbiAgICAgICAgICAoKCkgPT4geyBkLnByb3h5Um91dGVJc0F2b2lkZWQoKTsgfSkuc2hvdWxkLnRocm93O1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiB0cnVlIGZvciByb3V0ZXMgaW4gdGhlIGF2b2lkIGxpc3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2lub24uc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL15cXC9mb28vXV0pO1xuICAgICAgICAgIGQucHJveHlSb3V0ZUlzQXZvaWRlZChudWxsLCAnUE9TVCcsICcvZm9vL2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHN0cmlwIGF3YXkgYW55IHdkL2h1YiBwcmVmaXgnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgY29uc3QgYXZvaWRTdHViID0gc2lub24uc3R1YihkLCAnZ2V0UHJveHlBdm9pZExpc3QnKTtcbiAgICAgICAgICBhdm9pZFN0dWIucmV0dXJucyhbWydQT1NUJywgL15cXC9mb28vXV0pO1xuICAgICAgICAgIGQucHJveHlSb3V0ZUlzQXZvaWRlZChudWxsLCAnUE9TVCcsICcvZm9vL2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXN0b3JlKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBpdCgnc2hvdWxkIHJldHVybiBmYWxzZSBmb3Igcm91dGVzIG5vdCBpbiB0aGUgYXZvaWQgbGlzdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBjb25zdCBhdm9pZFN0dWIgPSBzaW5vbi5zdHViKGQsICdnZXRQcm94eUF2b2lkTGlzdCcpO1xuICAgICAgICAgIGF2b2lkU3R1Yi5yZXR1cm5zKFtbJ1BPU1QnLCAvXlxcL2Zvby9dXSk7XG4gICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKG51bGwsICdHRVQnLCAnL2Zvby9iYXInKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICAgICAgZC5wcm94eVJvdXRlSXNBdm9pZGVkKG51bGwsICdQT1NUJywgJy9ib28nKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICAgICAgYXZvaWRTdHViLnJlc3RvcmUoKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdldmVudCB0aW1pbmcgZnJhbWV3b3JrJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IGJlZm9yZVN0YXJ0VGltZTtcbiAgICAgIGJlZm9yZUVhY2goYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBiZWZvcmVTdGFydFRpbWUgPSBEYXRlLm5vdygpO1xuICAgICAgICBkLnNob3VsZFZhbGlkYXRlQ2FwcyA9IGZhbHNlO1xuICAgICAgICBhd2FpdCBkLmV4ZWN1dGVDb21tYW5kKCdjcmVhdGVTZXNzaW9uJywgbnVsbCwgbnVsbCwge2Fsd2F5c01hdGNoOiB7Li4uZGVmYXVsdENhcHN9LCBmaXJzdE1hdGNoOiBbe31dfSk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCcjZXZlbnRIaXN0b3J5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICBpdCgnc2hvdWxkIGhhdmUgYW4gZXZlbnRIaXN0b3J5IHByb3BlcnR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHNob3VsZC5leGlzdChkLmV2ZW50SGlzdG9yeSk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaXQoJ3Nob3VsZCBoYXZlIGEgc2Vzc2lvbiBzdGFydCB0aW1pbmcgYWZ0ZXIgc2Vzc2lvbiBzdGFydCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBsZXQge25ld1Nlc3Npb25SZXF1ZXN0ZWQsIG5ld1Nlc3Npb25TdGFydGVkfSA9IGQuZXZlbnRIaXN0b3J5O1xuICAgICAgICAgIG5ld1Nlc3Npb25SZXF1ZXN0ZWQuc2hvdWxkLmhhdmUubGVuZ3RoKDEpO1xuICAgICAgICAgIG5ld1Nlc3Npb25TdGFydGVkLnNob3VsZC5oYXZlLmxlbmd0aCgxKTtcbiAgICAgICAgICBuZXdTZXNzaW9uUmVxdWVzdGVkWzBdLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgICBuZXdTZXNzaW9uU3RhcnRlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgICAgKG5ld1Nlc3Npb25SZXF1ZXN0ZWRbMF0gPj0gYmVmb3JlU3RhcnRUaW1lKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgICAgICAobmV3U2Vzc2lvblN0YXJ0ZWRbMF0gPj0gbmV3U2Vzc2lvblJlcXVlc3RlZFswXSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGl0KCdzaG91bGQgaW5jbHVkZSBhIGNvbW1hbmRzIGxpc3QnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXdhaXQgZC5leGVjdXRlQ29tbWFuZCgnZ2V0U3RhdHVzJywgW10pO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmNvbW1hbmRzLmxlbmd0aC5zaG91bGQuZXF1YWwoMik7XG4gICAgICAgICAgZC5ldmVudEhpc3RvcnkuY29tbWFuZHNbMV0uY21kLnNob3VsZC5lcXVhbCgnZ2V0U3RhdHVzJyk7XG4gICAgICAgICAgZC5ldmVudEhpc3RvcnkuY29tbWFuZHNbMV0uc3RhcnRUaW1lLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgICBkLmV2ZW50SGlzdG9yeS5jb21tYW5kc1sxXS5lbmRUaW1lLnNob3VsZC5iZS5hKCdudW1iZXInKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCcjbG9nRXZlbnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgYWxsb3cgbG9nZ2luZyBhcmJpdHJhcnkgZXZlbnRzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGQubG9nRXZlbnQoJ2ZvbycpO1xuICAgICAgICAgIGQuZXZlbnRIaXN0b3J5LmZvb1swXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgICAgKGQuZXZlbnRIaXN0b3J5LmZvb1swXSA+PSBiZWZvcmVTdGFydFRpbWUpLnNob3VsZC5iZS50cnVlO1xuICAgICAgICB9KTtcbiAgICAgICAgaXQoJ3Nob3VsZCBub3QgYWxsb3cgcmVzZXJ2ZWQgb3Igb2RkbHkgZm9ybWVkIGV2ZW50IG5hbWVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLmxvZ0V2ZW50KCdjb21tYW5kcycpO1xuICAgICAgICAgIH0pLnNob3VsZC50aHJvdygpO1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLmxvZ0V2ZW50KDEpO1xuICAgICAgICAgIH0pLnNob3VsZC50aHJvdygpO1xuICAgICAgICAgICgoKSA9PiB7XG4gICAgICAgICAgICBkLmxvZ0V2ZW50KHt9KTtcbiAgICAgICAgICB9KS5zaG91bGQudGhyb3coKTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgYWxsb3cgbG9nZ2luZyB0aGUgc2FtZSBldmVudCBtdWx0aXBsZSB0aW1lcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZC5sb2dFdmVudCgnYmFyJyk7XG4gICAgICAgIGQubG9nRXZlbnQoJ2JhcicpO1xuICAgICAgICBkLmV2ZW50SGlzdG9yeS5iYXIuc2hvdWxkLmhhdmUubGVuZ3RoKDIpO1xuICAgICAgICBkLmV2ZW50SGlzdG9yeS5iYXJbMV0uc2hvdWxkLmJlLmEoJ251bWJlcicpO1xuICAgICAgICAoZC5ldmVudEhpc3RvcnkuYmFyWzFdID49IGQuZXZlbnRIaXN0b3J5LmJhclswXSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICB9KTtcbiAgICAgIGRlc2NyaWJlKCdnZXRTZXNzaW9uIGRlY29yYXRpb24nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGl0KCdzaG91bGQgZGVjb3JhdGUgZ2V0U2Vzc2lvbiByZXNwb25zZSBpZiBvcHQtaW4gY2FwIGlzIHByb3ZpZGVkJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGxldCByZXMgPSBhd2FpdCBkLmdldFNlc3Npb24oKTtcbiAgICAgICAgICBzaG91bGQubm90LmV4aXN0KHJlcy5ldmVudHMpO1xuXG4gICAgICAgICAgZC5jYXBzLmV2ZW50VGltaW5ncyA9IHRydWU7XG4gICAgICAgICAgcmVzID0gYXdhaXQgZC5nZXRTZXNzaW9uKCk7XG4gICAgICAgICAgc2hvdWxkLmV4aXN0KHJlcy5ldmVudHMpO1xuICAgICAgICAgIHNob3VsZC5leGlzdChyZXMuZXZlbnRzLm5ld1Nlc3Npb25SZXF1ZXN0ZWQpO1xuICAgICAgICAgIHJlcy5ldmVudHMubmV3U2Vzc2lvblJlcXVlc3RlZFswXS5zaG91bGQuYmUuYSgnbnVtYmVyJyk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJy5yZXNldCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgcmVzZXQgYXMgVzNDIGlmIHRoZSBvcmlnaW5hbCBzZXNzaW9uIHdhcyBXM0MnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGNvbnN0IGNhcHMgPSB7XG4gICAgICAgICAgYWx3YXlzTWF0Y2g6IE9iamVjdC5hc3NpZ24oe30sIHtcbiAgICAgICAgICAgICdhcHBpdW06YXBwJzogJ0Zha2UnLFxuICAgICAgICAgICAgJ2FwcGl1bTpkZXZpY2VOYW1lJzogJ0Zha2UnLFxuICAgICAgICAgICAgJ2FwcGl1bTphdXRvbWF0aW9uTmFtZSc6ICdGYWtlJyxcbiAgICAgICAgICAgIHBsYXRmb3JtTmFtZTogJ0Zha2UnLFxuICAgICAgICAgIH0sIGRlZmF1bHRDYXBzKSxcbiAgICAgICAgICBmaXJzdE1hdGNoOiBbe31dLFxuICAgICAgICB9O1xuICAgICAgICBhd2FpdCBkLmNyZWF0ZVNlc3Npb24odW5kZWZpbmVkLCB1bmRlZmluZWQsIGNhcHMpO1xuICAgICAgICBkLnByb3RvY29sLnNob3VsZC5lcXVhbCgnVzNDJyk7XG4gICAgICAgIGF3YWl0IGQucmVzZXQoKTtcbiAgICAgICAgZC5wcm90b2NvbC5zaG91bGQuZXF1YWwoJ1czQycpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdEZXZpY2VTZXR0aW5ncycsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIG5vdCBob2xkIG9uIHRvIHJlZmVyZW5jZSBvZiBkZWZhdWx0cyBpbiBjb25zdHJ1Y3RvcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBvYmogPSB7Zm9vOiAnYmFyJ307XG4gICAgICBsZXQgZDEgPSBuZXcgRGV2aWNlU2V0dGluZ3Mob2JqKTtcbiAgICAgIGxldCBkMiA9IG5ldyBEZXZpY2VTZXR0aW5ncyhvYmopO1xuICAgICAgZDEuX3NldHRpbmdzLmZvbyA9ICdiYXonO1xuICAgICAgZDEuX3NldHRpbmdzLnNob3VsZC5ub3QuZXFsKGQyLl9zZXR0aW5ncyk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcuaXNGZWF0dXJlRW5hYmxlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBjb25zdCBkID0gbmV3IERyaXZlckNsYXNzKCk7XG5cbiAgICBhZnRlckVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgZC5kZW55SW5zZWN1cmUgPSBudWxsO1xuICAgICAgZC5hbGxvd0luc2VjdXJlID0gbnVsbDtcbiAgICAgIGQucmVsYXhlZFNlY3VyaXR5RW5hYmxlZCA9IG51bGw7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHNheSBhIGZlYXR1cmUgaXMgZW5hYmxlZCB3aGVuIGl0IGlzIGV4cGxpY2l0bHkgYWxsb3dlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQuYWxsb3dJbnNlY3VyZSA9IFsnZm9vJywgJ2JhciddO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdmb28nKS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmFyJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JheicpLnNob3VsZC5iZS5mYWxzZTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgc2F5IGEgZmVhdHVyZSBpcyBub3QgZW5hYmxlZCBpZiBpdCBpcyBub3QgZW5hYmxlZCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQuYWxsb3dJbnNlY3VyZSA9IFtdO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdmb28nKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHByZWZlciBkZW55SW5zZWN1cmUgdG8gYWxsb3dJbnNlY3VyZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGQuYWxsb3dJbnNlY3VyZSA9IFsnZm9vJywgJ2JhciddO1xuICAgICAgZC5kZW55SW5zZWN1cmUgPSBbJ2ZvbyddO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdmb28nKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXonKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGFsbG93IGdsb2JhbCBzZXR0aW5nIGZvciBpbnNlY3VyaXR5JywgZnVuY3Rpb24gKCkge1xuICAgICAgZC5yZWxheGVkU2VjdXJpdHlFbmFibGVkID0gdHJ1ZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnZm9vJykuc2hvdWxkLmJlLnRydWU7XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2JhcicpLnNob3VsZC5iZS50cnVlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXonKS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcblxuICAgIGl0KCdnbG9iYWwgc2V0dGluZyBzaG91bGQgYmUgb3ZlcnJpZGVhYmxlJywgZnVuY3Rpb24gKCkge1xuICAgICAgZC5yZWxheGVkU2VjdXJpdHlFbmFibGVkID0gdHJ1ZTtcbiAgICAgIGQuZGVueUluc2VjdXJlID0gWydmb28nLCAnYmFyJ107XG4gICAgICBkLmlzRmVhdHVyZUVuYWJsZWQoJ2ZvbycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIGQuaXNGZWF0dXJlRW5hYmxlZCgnYmFyJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgZC5pc0ZlYXR1cmVFbmFibGVkKCdiYXonKS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGJhc2VEcml2ZXJVbml0VGVzdHM7XG4iXSwiZmlsZSI6InRlc3QvYmFzZWRyaXZlci9kcml2ZXItdGVzdHMuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -117,6 +117,10 @@ describe('helpers', function () {
117
117
  sandbox.stub(_support.zip, 'extractAllTo').resolves();
118
118
  sandbox.stub(_support.zip, 'assertValidZip').resolves();
119
119
  sandbox.stub(_support.fs, 'mv').resolves();
120
+ sandbox.stub(_support.fs, 'stat').resolves({
121
+ isFile: () => true,
122
+ isDirectory: () => false
123
+ });
120
124
  sandbox.stub(_support.fs, 'exists').resolves(true);
121
125
  sandbox.stub(_support.fs, 'hash').resolves('0xDEADBEEF');
122
126
  sandbox.stub(_support.fs, 'glob').resolves(['/path/to/an.apk']);
@@ -146,4 +150,4 @@ describe('parseCapsArray', function () {
146
150
  });require('source-map-support').install();
147
151
 
148
152
 
149
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9oZWxwZXJzLXNwZWNzLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaXQiLCJzaG91bGQiLCJiZSIsInRydWUiLCJmYWxzZSIsImVxbCIsInVuZGVmaW5lZCIsImZvckVhY2giLCJpdGVtIiwiZXF1YWwiLCJpbnB1dCIsImhlbGxvIiwid29ybGQiLCJmb28iLCJleHBlY3RlZE91dHB1dCIsIkZPTyIsImRlZXAiLCJzYW5kYm94IiwiYmVmb3JlRWFjaCIsInNpbm9uIiwiY3JlYXRlU2FuZGJveCIsInN0dWIiLCJ6aXAiLCJyZXNvbHZlcyIsImZzIiwidGVtcERpciIsImFmdGVyRWFjaCIsInJlc3RvcmUiLCJleHRyYWN0QWxsVG8iLCJnZXRDYWxsIiwibGFzdEFyZyIsInVzZVN5c3RlbVVuemlwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFHQUEsUUFBUSxDQUFDLFNBQUQsRUFBWSxZQUFZO0FBQzlCQSxFQUFBQSxRQUFRLENBQUMsb0JBQUQsRUFBdUIsWUFBWTtBQUN6Q0MsSUFBQUEsRUFBRSxDQUFDLG9DQUFELEVBQXVDLFlBQVk7QUFDbkQsc0NBQWtCLG1CQUFsQixFQUF1Q0MsTUFBdkMsQ0FBOENDLEVBQTlDLENBQWlEQyxJQUFqRDtBQUNELEtBRkMsQ0FBRjtBQUdBSCxJQUFBQSxFQUFFLENBQUMsK0NBQUQsRUFBa0QsWUFBWTtBQUM5RCxzQ0FBa0IsS0FBbEIsRUFBeUJDLE1BQXpCLENBQWdDQyxFQUFoQyxDQUFtQ0UsS0FBbkM7QUFDQSxzQ0FBa0IsaUJBQWxCLEVBQXFDSCxNQUFyQyxDQUE0Q0MsRUFBNUMsQ0FBK0NFLEtBQS9DO0FBQ0Esc0NBQWtCLGlCQUFsQixFQUFxQ0gsTUFBckMsQ0FBNENDLEVBQTVDLENBQStDRSxLQUEvQztBQUNELEtBSkMsQ0FBRjtBQUtELEdBVE8sQ0FBUjtBQVdBTCxFQUFBQSxRQUFRLENBQUMsZ0JBQUQsRUFBbUIsWUFBWTtBQUNyQ0MsSUFBQUEsRUFBRSxDQUFDLG1DQUFELEVBQXNDLFlBQVk7QUFDbEQsa0NBQWM7QUFBQyxlQUFPO0FBQVIsT0FBZCxFQUFzQyxLQUF0QyxFQUE2QyxLQUE3QyxFQUFvREMsTUFBcEQsQ0FBMkRJLEdBQTNELENBQStEO0FBQUMsZUFBTyxhQUFSO0FBQXVCLGVBQU87QUFBOUIsT0FBL0Q7QUFDRCxLQUZDLENBQUY7QUFHQUwsSUFBQUEsRUFBRSxDQUFDLG9EQUFELEVBQXVELFlBQVk7QUFDbkUsa0NBQWM7QUFBQyxlQUFPO0FBQUMsaUJBQU87QUFBUjtBQUFSLE9BQWQsRUFBK0MsS0FBL0MsRUFBc0QsS0FBdEQsRUFBNkRDLE1BQTdELENBQW9FSSxHQUFwRSxDQUF3RTtBQUFDLGVBQU87QUFBQyxpQkFBTyxhQUFSO0FBQXVCLGlCQUFPO0FBQTlCO0FBQVIsT0FBeEU7QUFDRCxLQUZDLENBQUY7QUFHQUwsSUFBQUEsRUFBRSxDQUFDLGlEQUFELEVBQW9ELFlBQVk7QUFDaEUsa0NBQWMsQ0FDWjtBQUFDLGVBQU87QUFBQyxpQkFBTztBQUFSO0FBQVIsT0FEWSxFQUVaO0FBQUMsZUFBTztBQUFSLE9BRlksQ0FBZCxFQUdHLEtBSEgsRUFHVSxLQUhWLEVBR2lCQyxNQUhqQixDQUd3QkksR0FIeEIsQ0FHNEIsQ0FDMUI7QUFBQyxlQUFPO0FBQUMsaUJBQU8sYUFBUjtBQUF1QixpQkFBTztBQUE5QjtBQUFSLE9BRDBCLEVBRTFCO0FBQUMsZUFBTyxhQUFSO0FBQXVCLGVBQU87QUFBOUIsT0FGMEIsQ0FINUI7QUFPRCxLQVJDLENBQUY7QUFTQUwsSUFBQUEsRUFBRSxDQUFDLDRCQUFELEVBQStCLFlBQVk7QUFDM0Msa0NBQWM7QUFDWixrQkFBVTtBQUNSLGlCQUFPO0FBREMsU0FERTtBQUlaLGtCQUFVO0FBQ1IsaUJBQU87QUFEQztBQUpFLE9BQWQsRUFPRyxLQVBILEVBT1UsS0FQVixFQU9pQkMsTUFQakIsQ0FPd0JJLEdBUHhCLENBTzRCO0FBQzFCLGtCQUFVO0FBQ1IsaUJBQU8sYUFEQztBQUVSLGlCQUFPO0FBRkMsU0FEZ0I7QUFLMUIsa0JBQVU7QUFDUixpQkFBTyxhQURDO0FBRVIsaUJBQU87QUFGQztBQUxnQixPQVA1QjtBQWlCRCxLQWxCQyxDQUFGO0FBbUJBTCxJQUFBQSxFQUFFLENBQUMsc0NBQUQsRUFBeUMsWUFBWTtBQUNyRCxPQUFDLENBQUQsRUFBSSxDQUFKLEVBQU8sQ0FBQyxDQUFSLEVBQVcsSUFBWCxFQUFpQixLQUFqQixFQUF3QixJQUF4QixFQUE4Qk0sU0FBOUIsRUFBeUMsRUFBekMsRUFBNkMsYUFBN0MsRUFBNERDLE9BQTVELENBQXFFQyxJQUFELElBQVU7QUFDNUVQLFFBQUFBLE1BQU0sQ0FBQ1EsS0FBUCxDQUFhLDRCQUFjRCxJQUFkLENBQWIsRUFBa0NBLElBQWxDO0FBQ0QsT0FGRDtBQUdELEtBSkMsQ0FBRjtBQUtBUixJQUFBQSxFQUFFLENBQUMsMkNBQUQsRUFBOEMsWUFBWTtBQUMxRCxZQUFNVSxLQUFLLEdBQUcsQ0FDWjtBQUFDLGVBQU87QUFBUixPQURZLEVBRVo7QUFDRUMsUUFBQUEsS0FBSyxFQUFFO0FBQ0xDLFVBQUFBLEtBQUssRUFBRTtBQUNMLG1CQUFPO0FBREY7QUFERixTQURUO0FBTUVDLFFBQUFBLEdBQUcsRUFBRTtBQU5QLE9BRlksRUFVWixLQVZZLEVBV1osSUFYWSxFQVlaLENBWlksQ0FBZDtBQWNBLFlBQU1DLGNBQWMsR0FBRyxDQUNyQjtBQUFDLGVBQU8sS0FBUjtBQUFlLGVBQU87QUFBdEIsT0FEcUIsRUFFckI7QUFDRUgsUUFBQUEsS0FBSyxFQUFFO0FBQ0xDLFVBQUFBLEtBQUssRUFBRTtBQUNMLG1CQUFPLEtBREY7QUFFTCxtQkFBTztBQUZGO0FBREYsU0FEVDtBQU9FQyxRQUFBQSxHQUFHLEVBQUUsTUFQUDtBQVFFRSxRQUFBQSxHQUFHLEVBQUU7QUFSUCxPQUZxQixFQVlyQixLQVpxQixFQWFyQixJQWJxQixFQWNyQixDQWRxQixDQUF2QjtBQWdCQSxrQ0FBY0wsS0FBZCxFQUFxQixLQUFyQixFQUE0QixLQUE1QixFQUFtQ1QsTUFBbkMsQ0FBMENlLElBQTFDLENBQStDUCxLQUEvQyxDQUFxREssY0FBckQ7QUFDRCxLQWhDQyxDQUFGO0FBaUNELEdBekVPLENBQVI7QUEyRUFmLEVBQUFBLFFBQVEsQ0FBQyxlQUFELEVBQWtCLFlBQVk7QUFDcEMsUUFBSWtCLE9BQUo7QUFFQUMsSUFBQUEsVUFBVSxDQUFDLFlBQVk7QUFDckJELE1BQUFBLE9BQU8sR0FBR0UsZUFBTUMsYUFBTixFQUFWO0FBQ0FILE1BQUFBLE9BQU8sQ0FBQ0ksSUFBUixDQUFhQyxZQUFiLEVBQWtCLGNBQWxCLEVBQWtDQyxRQUFsQztBQUNBTixNQUFBQSxPQUFPLENBQUNJLElBQVIsQ0FBYUMsWUFBYixFQUFrQixnQkFBbEIsRUFBb0NDLFFBQXBDO0FBQ0FOLE1BQUFBLE9BQU8sQ0FBQ0ksSUFBUixDQUFhRyxXQUFiLEVBQWlCLElBQWpCLEVBQXVCRCxRQUF2QjtBQUNBTixNQUFBQSxPQUFPLENBQUNJLElBQVIsQ0FBYUcsV0FBYixFQUFpQixRQUFqQixFQUEyQkQsUUFBM0IsQ0FBb0MsSUFBcEM7QUFDQU4sTUFBQUEsT0FBTyxDQUFDSSxJQUFSLENBQWFHLFdBQWIsRUFBaUIsTUFBakIsRUFBeUJELFFBQXpCLENBQWtDLFlBQWxDO0FBQ0FOLE1BQUFBLE9BQU8sQ0FBQ0ksSUFBUixDQUFhRyxXQUFiLEVBQWlCLE1BQWpCLEVBQXlCRCxRQUF6QixDQUFrQyxDQUFDLGlCQUFELENBQWxDO0FBQ0FOLE1BQUFBLE9BQU8sQ0FBQ0ksSUFBUixDQUFhRyxXQUFiLEVBQWlCLFFBQWpCLEVBQTJCRCxRQUEzQjtBQUNBTixNQUFBQSxPQUFPLENBQUNJLElBQVIsQ0FBYUksZ0JBQWIsRUFBc0IsU0FBdEIsRUFBaUNGLFFBQWpDLENBQTBDLFdBQTFDO0FBQ0QsS0FWUyxDQUFWO0FBWUFHLElBQUFBLFNBQVMsQ0FBQyxZQUFZO0FBQ3BCVCxNQUFBQSxPQUFPLENBQUNVLE9BQVI7QUFDRCxLQUZRLENBQVQ7QUFJQTNCLElBQUFBLEVBQUUsQ0FBQyw4REFBRCxFQUFpRSxrQkFBa0I7QUFDbkYsWUFBTSwyQkFBYSxxQkFBYixFQUFvQyxNQUFwQyxDQUFOO0FBQ0FzQixtQkFBSU0sWUFBSixDQUFpQkMsT0FBakIsQ0FBeUIsQ0FBekIsRUFBNEJDLE9BQTVCLENBQW9DQyxjQUFwQyxDQUFtRDlCLE1BQW5ELENBQTBEQyxFQUExRCxDQUE2REMsSUFBN0Q7QUFDRCxLQUhDLENBQUY7QUFJRCxHQXZCTyxDQUFSO0FBd0JELENBL0dPLENBQVI7QUFpSEFKLFFBQVEsQ0FBQyxnQkFBRCxFQUFtQixZQUFZO0FBQ3JDQyxFQUFBQSxFQUFFLENBQUMsZ0NBQUQsRUFBbUMsWUFBWTtBQUMvQyxpQ0FBZSxpQkFBZixFQUFrQ0MsTUFBbEMsQ0FBeUNJLEdBQXpDLENBQTZDLENBQUMsaUJBQUQsQ0FBN0M7QUFDRCxHQUZDLENBQUY7QUFHQUwsRUFBQUEsRUFBRSxDQUFDLHlDQUFELEVBQTRDLFlBQVk7QUFDeEQsaUNBQWUscUJBQWYsRUFBc0NDLE1BQXRDLENBQTZDSSxHQUE3QyxDQUFpRCxDQUFDLGlCQUFELENBQWpEO0FBQ0EsaUNBQWUsd0NBQWYsRUFBeURKLE1BQXpELENBQWdFSSxHQUFoRSxDQUFvRSxDQUNsRSxpQkFEa0UsRUFFbEUsa0JBRmtFLENBQXBFO0FBSUQsR0FOQyxDQUFGO0FBT0FMLEVBQUFBLEVBQUUsQ0FBQyx1Q0FBRCxFQUEwQyxZQUFZO0FBQ3RELGlDQUFlLENBQUMsR0FBRCxFQUFNLEdBQU4sQ0FBZixFQUEyQkMsTUFBM0IsQ0FBa0NJLEdBQWxDLENBQXNDLENBQUMsR0FBRCxFQUFNLEdBQU4sQ0FBdEM7QUFDRCxHQUZDLENBQUY7QUFHRCxDQWRPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB6aXAsIGZzLCB0ZW1wRGlyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IGNvbmZpZ3VyZUFwcCwgaXNQYWNrYWdlT3JCdW5kbGUsIGR1cGxpY2F0ZUtleXMsIHBhcnNlQ2Fwc0FycmF5IH0gZnJvbSAnLi4vLi4vbGliL2Jhc2Vkcml2ZXIvaGVscGVycyc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuXG5cbmRlc2NyaWJlKCdoZWxwZXJzJywgZnVuY3Rpb24gKCkge1xuICBkZXNjcmliZSgnI2lzUGFja2FnZU9yQnVuZGxlJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYWNjZXB0IHBhY2thZ2VzIGFuZCBidW5kbGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXNQYWNrYWdlT3JCdW5kbGUoJ2lvLmFwcGl1bS50ZXN0YXBwJykuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBub3QgYWNjZXB0IG5vbi1wYWNrYWdlcyBvciBub24tYnVuZGxlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlzUGFja2FnZU9yQnVuZGxlKCdmb28nKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICBpc1BhY2thZ2VPckJ1bmRsZSgnL3BhdGgvdG8vYW4uYXBwJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgaXNQYWNrYWdlT3JCdW5kbGUoJy9wYXRoL3RvL2FuLmFwaycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJyNkdXBsaWNhdGVLZXlzJywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgdHJhbnNsYXRlIGtleSBpbiBhbiBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkdXBsaWNhdGVLZXlzKHsnZm9vJzogJ2hlbGxvIHdvcmxkJ30sICdmb28nLCAnYmFyJykuc2hvdWxkLmVxbCh7J2Zvbyc6ICdoZWxsbyB3b3JsZCcsICdiYXInOiAnaGVsbG8gd29ybGQnfSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCB0cmFuc2xhdGUga2V5IGluIGFuIG9iamVjdCB3aXRoaW4gYW4gb2JqZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgZHVwbGljYXRlS2V5cyh7J2tleSc6IHsnZm9vJzogJ2hlbGxvIHdvcmxkJ319LCAnZm9vJywgJ2JhcicpLnNob3VsZC5lcWwoeydrZXknOiB7J2Zvbyc6ICdoZWxsbyB3b3JsZCcsICdiYXInOiAnaGVsbG8gd29ybGQnfX0pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgdHJhbnNsYXRlIGtleSBpbiBhbiBvYmplY3Qgd2l0aCBhbiBhcnJheScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGR1cGxpY2F0ZUtleXMoW1xuICAgICAgICB7J2tleSc6IHsnZm9vJzogJ2hlbGxvIHdvcmxkJ319LFxuICAgICAgICB7J2Zvbyc6ICdIRUxMTyBXT1JMRCd9XG4gICAgICBdLCAnZm9vJywgJ2JhcicpLnNob3VsZC5lcWwoW1xuICAgICAgICB7J2tleSc6IHsnZm9vJzogJ2hlbGxvIHdvcmxkJywgJ2Jhcic6ICdoZWxsbyB3b3JsZCd9fSxcbiAgICAgICAgeydmb28nOiAnSEVMTE8gV09STEQnLCAnYmFyJzogJ0hFTExPIFdPUkxEJ31cbiAgICAgIF0pO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgZHVwbGljYXRlIGJvdGgga2V5cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGR1cGxpY2F0ZUtleXMoe1xuICAgICAgICAna2V5T25lJzoge1xuICAgICAgICAgICdmb28nOiAnaGVsbG8gd29ybGQnLFxuICAgICAgICB9LFxuICAgICAgICAna2V5VHdvJzoge1xuICAgICAgICAgICdiYXInOiAnSEVMTE8gV09STEQnLFxuICAgICAgICB9LFxuICAgICAgfSwgJ2ZvbycsICdiYXInKS5zaG91bGQuZXFsKHtcbiAgICAgICAgJ2tleU9uZSc6IHtcbiAgICAgICAgICAnZm9vJzogJ2hlbGxvIHdvcmxkJyxcbiAgICAgICAgICAnYmFyJzogJ2hlbGxvIHdvcmxkJyxcbiAgICAgICAgfSxcbiAgICAgICAgJ2tleVR3byc6IHtcbiAgICAgICAgICAnYmFyJzogJ0hFTExPIFdPUkxEJyxcbiAgICAgICAgICAnZm9vJzogJ0hFTExPIFdPUkxEJyxcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBub3QgZG8gYW55dGhpbmcgdG8gcHJpbWl0aXZlcycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIFswLCAxLCAtMSwgdHJ1ZSwgZmFsc2UsIG51bGwsIHVuZGVmaW5lZCwgJycsICdIZWxsbyBXb3JsZCddLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgc2hvdWxkLmVxdWFsKGR1cGxpY2F0ZUtleXMoaXRlbSksIGl0ZW0pO1xuICAgICAgfSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCByZW5hbWUga2V5cyBvbiBiaWcgY29tcGxleCBvYmplY3RzJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgaW5wdXQgPSBbXG4gICAgICAgIHsnZm9vJzogJ2Jhcid9LFxuICAgICAgICB7XG4gICAgICAgICAgaGVsbG86IHtcbiAgICAgICAgICAgIHdvcmxkOiB7XG4gICAgICAgICAgICAgICdmb28nOiAnQkFSJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGZvbzogJ2JhaHInXG4gICAgICAgIH0sXG4gICAgICAgICdmb28nLFxuICAgICAgICBudWxsLFxuICAgICAgICAwXG4gICAgICBdO1xuICAgICAgY29uc3QgZXhwZWN0ZWRPdXRwdXQgPSBbXG4gICAgICAgIHsnZm9vJzogJ2JhcicsICdGT08nOiAnYmFyJ30sXG4gICAgICAgIHtcbiAgICAgICAgICBoZWxsbzoge1xuICAgICAgICAgICAgd29ybGQ6IHtcbiAgICAgICAgICAgICAgJ2Zvbyc6ICdCQVInLFxuICAgICAgICAgICAgICAnRk9PJzogJ0JBUicsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICBmb286ICdiYWhyJyxcbiAgICAgICAgICBGT086ICdiYWhyJ1xuICAgICAgICB9LFxuICAgICAgICAnZm9vJyxcbiAgICAgICAgbnVsbCxcbiAgICAgICAgMFxuICAgICAgXTtcbiAgICAgIGR1cGxpY2F0ZUtleXMoaW5wdXQsICdmb28nLCAnRk9PJykuc2hvdWxkLmRlZXAuZXF1YWwoZXhwZWN0ZWRPdXRwdXQpO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI2NvbmZpZ3VyZUFwcCcsIGZ1bmN0aW9uICgpIHtcbiAgICBsZXQgc2FuZGJveDtcblxuICAgIGJlZm9yZUVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgc2FuZGJveCA9IHNpbm9uLmNyZWF0ZVNhbmRib3goKTtcbiAgICAgIHNhbmRib3guc3R1Yih6aXAsICdleHRyYWN0QWxsVG8nKS5yZXNvbHZlcygpO1xuICAgICAgc2FuZGJveC5zdHViKHppcCwgJ2Fzc2VydFZhbGlkWmlwJykucmVzb2x2ZXMoKTtcbiAgICAgIHNhbmRib3guc3R1YihmcywgJ212JykucmVzb2x2ZXMoKTtcbiAgICAgIHNhbmRib3guc3R1YihmcywgJ2V4aXN0cycpLnJlc29sdmVzKHRydWUpO1xuICAgICAgc2FuZGJveC5zdHViKGZzLCAnaGFzaCcpLnJlc29sdmVzKCcweERFQURCRUVGJyk7XG4gICAgICBzYW5kYm94LnN0dWIoZnMsICdnbG9iJykucmVzb2x2ZXMoWycvcGF0aC90by9hbi5hcGsnXSk7XG4gICAgICBzYW5kYm94LnN0dWIoZnMsICdyaW1yYWYnKS5yZXNvbHZlcygpO1xuICAgICAgc2FuZGJveC5zdHViKHRlbXBEaXIsICdvcGVuRGlyJykucmVzb2x2ZXMoJy9zb21lL2RpcicpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIFwidXNlU3lzdGVtVW56aXBcIiBmbGFnIHRocm91Z2ggdG8gQGFwcGl1bS9zdXBwb3J0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgY29uZmlndXJlQXBwKCcvcGF0aC90by9hbi5hcGsuemlwJywgJy5hcGsnKTtcbiAgICAgIHppcC5leHRyYWN0QWxsVG8uZ2V0Q2FsbCgwKS5sYXN0QXJnLnVzZVN5c3RlbVVuemlwLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgncGFyc2VDYXBzQXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgcGFyc2Ugc3RyaW5nIGludG8gYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgcGFyc2VDYXBzQXJyYXkoJy90bXAvbXkvYXBwLnppcCcpLnNob3VsZC5lcWwoWycvdG1wL215L2FwcC56aXAnXSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHBhcnNlIGFycmF5IGFzIHN0cmluZyBpbnRvIGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgIHBhcnNlQ2Fwc0FycmF5KCdbXCIvdG1wL215L2FwcC56aXBcIl0nKS5zaG91bGQuZXFsKFsnL3RtcC9teS9hcHAuemlwJ10pO1xuICAgIHBhcnNlQ2Fwc0FycmF5KCdbXCIvdG1wL215L2FwcC56aXBcIixcIi90bXAvbXkvYXBwMi56aXBcIl0nKS5zaG91bGQuZXFsKFtcbiAgICAgICcvdG1wL215L2FwcC56aXAnLFxuICAgICAgJy90bXAvbXkvYXBwMi56aXAnXG4gICAgXSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHJldHVybiBhbiBhcnJheSB3aXRob3V0IGNoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICBwYXJzZUNhcHNBcnJheShbJ2EnLCAnYiddKS5zaG91bGQuZXFsKFsnYScsICdiJ10pO1xuICB9KTtcbn0pOyJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2hlbHBlcnMtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
153
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci9oZWxwZXJzLXNwZWNzLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiaXQiLCJzaG91bGQiLCJiZSIsInRydWUiLCJmYWxzZSIsImVxbCIsInVuZGVmaW5lZCIsImZvckVhY2giLCJpdGVtIiwiZXF1YWwiLCJpbnB1dCIsImhlbGxvIiwid29ybGQiLCJmb28iLCJleHBlY3RlZE91dHB1dCIsIkZPTyIsImRlZXAiLCJzYW5kYm94IiwiYmVmb3JlRWFjaCIsInNpbm9uIiwiY3JlYXRlU2FuZGJveCIsInN0dWIiLCJ6aXAiLCJyZXNvbHZlcyIsImZzIiwiaXNGaWxlIiwiaXNEaXJlY3RvcnkiLCJ0ZW1wRGlyIiwiYWZ0ZXJFYWNoIiwicmVzdG9yZSIsImV4dHJhY3RBbGxUbyIsImdldENhbGwiLCJsYXN0QXJnIiwidXNlU3lzdGVtVW56aXAiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBQSxRQUFRLENBQUMsU0FBRCxFQUFZLFlBQVk7QUFDOUJBLEVBQUFBLFFBQVEsQ0FBQyxvQkFBRCxFQUF1QixZQUFZO0FBQ3pDQyxJQUFBQSxFQUFFLENBQUMsb0NBQUQsRUFBdUMsWUFBWTtBQUNuRCxzQ0FBa0IsbUJBQWxCLEVBQXVDQyxNQUF2QyxDQUE4Q0MsRUFBOUMsQ0FBaURDLElBQWpEO0FBQ0QsS0FGQyxDQUFGO0FBR0FILElBQUFBLEVBQUUsQ0FBQywrQ0FBRCxFQUFrRCxZQUFZO0FBQzlELHNDQUFrQixLQUFsQixFQUF5QkMsTUFBekIsQ0FBZ0NDLEVBQWhDLENBQW1DRSxLQUFuQztBQUNBLHNDQUFrQixpQkFBbEIsRUFBcUNILE1BQXJDLENBQTRDQyxFQUE1QyxDQUErQ0UsS0FBL0M7QUFDQSxzQ0FBa0IsaUJBQWxCLEVBQXFDSCxNQUFyQyxDQUE0Q0MsRUFBNUMsQ0FBK0NFLEtBQS9DO0FBQ0QsS0FKQyxDQUFGO0FBS0QsR0FUTyxDQUFSO0FBV0FMLEVBQUFBLFFBQVEsQ0FBQyxnQkFBRCxFQUFtQixZ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ZnMsIHRlbXBEaXIgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IHsgY29uZmlndXJlQXBwLCBpc1BhY2thZ2VPckJ1bmRsZSwgZHVwbGljYXRlS2V5cywgcGFyc2VDYXBzQXJyYXkgfSBmcm9tICcuLi8uLi9saWIvYmFzZWRyaXZlci9oZWxwZXJzJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5cblxuZGVzY3JpYmUoJ2hlbHBlcnMnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCcjaXNQYWNrYWdlT3JCdW5kbGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBhY2NlcHQgcGFja2FnZXMgYW5kIGJ1bmRsZXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpc1BhY2thZ2VPckJ1bmRsZSgnaW8uYXBwaXVtLnRlc3RhcHAnKS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIG5vdCBhY2NlcHQgbm9uLXBhY2thZ2VzIG9yIG5vbi1idW5kbGVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgaXNQYWNrYWdlT3JCdW5kbGUoJ2ZvbycpLnNob3VsZC5iZS5mYWxzZTtcbiAgICAgIGlzUGFja2FnZU9yQnVuZGxlKCcvcGF0aC90by9hbi5hcHAnKS5zaG91bGQuYmUuZmFsc2U7XG4gICAgICBpc1BhY2thZ2VPckJ1bmRsZSgnL3BhdGgvdG8vYW4uYXBrJykuc2hvdWxkLmJlLmZhbHNlO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnI2R1cGxpY2F0ZUtleXMnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCB0cmFuc2xhdGUga2V5IGluIGFuIG9iamVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGR1cGxpY2F0ZUtleXMoeydmb28nOiAnaGVsbG8gd29ybGQnfSwgJ2ZvbycsICdiYXInKS5zaG91bGQuZXFsKHsnZm9vJzogJ2hlbGxvIHdvcmxkJywgJ2Jhcic6ICdoZWxsbyB3b3JsZCd9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRyYW5zbGF0ZSBrZXkgaW4gYW4gb2JqZWN0IHdpdGhpbiBhbiBvYmplY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkdXBsaWNhdGVLZXlzKHsna2V5Jzogeydmb28nOiAnaGVsbG8gd29ybGQnfX0sICdmb28nLCAnYmFyJykuc2hvdWxkLmVxbCh7J2tleSc6IHsnZm9vJzogJ2hlbGxvIHdvcmxkJywgJ2Jhcic6ICdoZWxsbyB3b3JsZCd9fSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCB0cmFuc2xhdGUga2V5IGluIGFuIG9iamVjdCB3aXRoIGFuIGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgICAgZHVwbGljYXRlS2V5cyhbXG4gICAgICAgIHsna2V5Jzogeydmb28nOiAnaGVsbG8gd29ybGQnfX0sXG4gICAgICAgIHsnZm9vJzogJ0hFTExPIFdPUkxEJ31cbiAgICAgIF0sICdmb28nLCAnYmFyJykuc2hvdWxkLmVxbChbXG4gICAgICAgIHsna2V5Jzogeydmb28nOiAnaGVsbG8gd29ybGQnLCAnYmFyJzogJ2hlbGxvIHdvcmxkJ319LFxuICAgICAgICB7J2Zvbyc6ICdIRUxMTyBXT1JMRCcsICdiYXInOiAnSEVMTE8gV09STEQnfVxuICAgICAgXSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBkdXBsaWNhdGUgYm90aCBrZXlzJywgZnVuY3Rpb24gKCkge1xuICAgICAgZHVwbGljYXRlS2V5cyh7XG4gICAgICAgICdrZXlPbmUnOiB7XG4gICAgICAgICAgJ2Zvbyc6ICdoZWxsbyB3b3JsZCcsXG4gICAgICAgIH0sXG4gICAgICAgICdrZXlUd28nOiB7XG4gICAgICAgICAgJ2Jhcic6ICdIRUxMTyBXT1JMRCcsXG4gICAgICAgIH0sXG4gICAgICB9LCAnZm9vJywgJ2JhcicpLnNob3VsZC5lcWwoe1xuICAgICAgICAna2V5T25lJzoge1xuICAgICAgICAgICdmb28nOiAnaGVsbG8gd29ybGQnLFxuICAgICAgICAgICdiYXInOiAnaGVsbG8gd29ybGQnLFxuICAgICAgICB9LFxuICAgICAgICAna2V5VHdvJzoge1xuICAgICAgICAgICdiYXInOiAnSEVMTE8gV09STEQnLFxuICAgICAgICAgICdmb28nOiAnSEVMTE8gV09STEQnLFxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIG5vdCBkbyBhbnl0aGluZyB0byBwcmltaXRpdmVzJywgZnVuY3Rpb24gKCkge1xuICAgICAgWzAsIDEsIC0xLCB0cnVlLCBmYWxzZSwgbnVsbCwgdW5kZWZpbmVkLCAnJywgJ0hlbGxvIFdvcmxkJ10uZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBzaG91bGQuZXF1YWwoZHVwbGljYXRlS2V5cyhpdGVtKSwgaXRlbSk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHJlbmFtZSBrZXlzIG9uIGJpZyBjb21wbGV4IG9iamVjdHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBpbnB1dCA9IFtcbiAgICAgICAgeydmb28nOiAnYmFyJ30sXG4gICAgICAgIHtcbiAgICAgICAgICBoZWxsbzoge1xuICAgICAgICAgICAgd29ybGQ6IHtcbiAgICAgICAgICAgICAgJ2Zvbyc6ICdCQVInLFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAgZm9vOiAnYmFocidcbiAgICAgICAgfSxcbiAgICAgICAgJ2ZvbycsXG4gICAgICAgIG51bGwsXG4gICAgICAgIDBcbiAgICAgIF07XG4gICAgICBjb25zdCBleHBlY3RlZE91dHB1dCA9IFtcbiAgICAgICAgeydmb28nOiAnYmFyJywgJ0ZPTyc6ICdiYXInfSxcbiAgICAgICAge1xuICAgICAgICAgIGhlbGxvOiB7XG4gICAgICAgICAgICB3b3JsZDoge1xuICAgICAgICAgICAgICAnZm9vJzogJ0JBUicsXG4gICAgICAgICAgICAgICdGT08nOiAnQkFSJyxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGZvbzogJ2JhaHInLFxuICAgICAgICAgIEZPTzogJ2JhaHInXG4gICAgICAgIH0sXG4gICAgICAgICdmb28nLFxuICAgICAgICBudWxsLFxuICAgICAgICAwXG4gICAgICBdO1xuICAgICAgZHVwbGljYXRlS2V5cyhpbnB1dCwgJ2ZvbycsICdGT08nKS5zaG91bGQuZGVlcC5lcXVhbChleHBlY3RlZE91dHB1dCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCcjY29uZmlndXJlQXBwJywgZnVuY3Rpb24gKCkge1xuICAgIGxldCBzYW5kYm94O1xuXG4gICAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBzYW5kYm94ID0gc2lub24uY3JlYXRlU2FuZGJveCgpO1xuICAgICAgc2FuZGJveC5zdHViKHppcCwgJ2V4dHJhY3RBbGxUbycpLnJlc29sdmVzKCk7XG4gICAgICBzYW5kYm94LnN0dWIoemlwLCAnYXNzZXJ0VmFsaWRaaXAnKS5yZXNvbHZlcygpO1xuICAgICAgc2FuZGJveC5zdHViKGZzLCAnbXYnKS5yZXNvbHZlcygpO1xuICAgICAgc2FuZGJveC5zdHViKGZzLCAnc3RhdCcpLnJlc29sdmVzKHtcbiAgICAgICAgaXNGaWxlOiAoKSA9PiB0cnVlLFxuICAgICAgICBpc0RpcmVjdG9yeTogKCkgPT4gZmFsc2UsXG4gICAgICB9KTtcbiAgICAgIHNhbmRib3guc3R1YihmcywgJ2V4aXN0cycpLnJlc29sdmVzKHRydWUpO1xuICAgICAgc2FuZGJveC5zdHViKGZzLCAnaGFzaCcpLnJlc29sdmVzKCcweERFQURCRUVGJyk7XG4gICAgICBzYW5kYm94LnN0dWIoZnMsICdnbG9iJykucmVzb2x2ZXMoWycvcGF0aC90by9hbi5hcGsnXSk7XG4gICAgICBzYW5kYm94LnN0dWIoZnMsICdyaW1yYWYnKS5yZXNvbHZlcygpO1xuICAgICAgc2FuZGJveC5zdHViKHRlbXBEaXIsICdvcGVuRGlyJykucmVzb2x2ZXMoJy9zb21lL2RpcicpO1xuICAgIH0pO1xuXG4gICAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHNhbmRib3gucmVzdG9yZSgpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBwYXNzIFwidXNlU3lzdGVtVW56aXBcIiBmbGFnIHRocm91Z2ggdG8gQGFwcGl1bS9zdXBwb3J0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgY29uZmlndXJlQXBwKCcvcGF0aC90by9hbi5hcGsuemlwJywgJy5hcGsnKTtcbiAgICAgIHppcC5leHRyYWN0QWxsVG8uZ2V0Q2FsbCgwKS5sYXN0QXJnLnVzZVN5c3RlbVVuemlwLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuXG5kZXNjcmliZSgncGFyc2VDYXBzQXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gIGl0KCdzaG91bGQgcGFyc2Ugc3RyaW5nIGludG8gYXJyYXknLCBmdW5jdGlvbiAoKSB7XG4gICAgcGFyc2VDYXBzQXJyYXkoJy90bXAvbXkvYXBwLnppcCcpLnNob3VsZC5lcWwoWycvdG1wL215L2FwcC56aXAnXSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHBhcnNlIGFycmF5IGFzIHN0cmluZyBpbnRvIGFycmF5JywgZnVuY3Rpb24gKCkge1xuICAgIHBhcnNlQ2Fwc0FycmF5KCdbXCIvdG1wL215L2FwcC56aXBcIl0nKS5zaG91bGQuZXFsKFsnL3RtcC9teS9hcHAuemlwJ10pO1xuICAgIHBhcnNlQ2Fwc0FycmF5KCdbXCIvdG1wL215L2FwcC56aXBcIixcIi90bXAvbXkvYXBwMi56aXBcIl0nKS5zaG91bGQuZXFsKFtcbiAgICAgICcvdG1wL215L2FwcC56aXAnLFxuICAgICAgJy90bXAvbXkvYXBwMi56aXAnXG4gICAgXSk7XG4gIH0pO1xuICBpdCgnc2hvdWxkIHJldHVybiBhbiBhcnJheSB3aXRob3V0IGNoYW5nZScsIGZ1bmN0aW9uICgpIHtcbiAgICBwYXJzZUNhcHNBcnJheShbJ2EnLCAnYiddKS5zaG91bGQuZXFsKFsnYScsICdiJ10pO1xuICB9KTtcbn0pOyJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL2hlbHBlcnMtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -4,12 +4,12 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
4
4
 
5
5
  require("source-map-support/register");
6
6
 
7
- var _ = _interopRequireDefault(require("../.."));
7
+ var _lib = _interopRequireDefault(require("../../lib"));
8
8
 
9
9
  var _sinon = _interopRequireDefault(require("sinon"));
10
10
 
11
11
  describe('timeout', function () {
12
- let driver = new _.default();
12
+ let driver = new _lib.default();
13
13
  let implicitWaitSpy, newCommandTimeoutSpy;
14
14
  before(function () {
15
15
  implicitWaitSpy = _sinon.default.spy(driver, 'setImplicitWait');
@@ -93,8 +93,8 @@ describe('timeout', function () {
93
93
  driver.implicitWaitMs.should.eql(42);
94
94
  });
95
95
  describe('with managed driver', function () {
96
- let managedDriver1 = new _.default();
97
- let managedDriver2 = new _.default();
96
+ let managedDriver1 = new _lib.default();
97
+ let managedDriver2 = new _lib.default();
98
98
  before(function () {
99
99
  driver.addManagedDriver(managedDriver1);
100
100
  driver.addManagedDriver(managedDriver2);
@@ -116,8 +116,8 @@ describe('timeout', function () {
116
116
  driver.newCommandTimeoutMs.should.eql(42);
117
117
  });
118
118
  describe('with managed driver', function () {
119
- let managedDriver1 = new _.default();
120
- let managedDriver2 = new _.default();
119
+ let managedDriver1 = new _lib.default();
120
+ let managedDriver2 = new _lib.default();
121
121
  before(function () {
122
122
  driver.addManagedDriver(managedDriver1);
123
123
  driver.addManagedDriver(managedDriver2);
@@ -136,4 +136,4 @@ describe('timeout', function () {
136
136
  });require('source-map-support').install();
137
137
 
138
138
 
139
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci90aW1lb3V0LXNwZWNzLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiZHJpdmVyIiwiQmFzZURyaXZlciIsImltcGxpY2l0V2FpdFNweSIsIm5ld0NvbW1hbmRUaW1lb3V0U3B5IiwiYmVmb3JlIiwic2lub24iLCJzcHkiLCJiZWZvcmVFYWNoIiwiaW1wbGljaXRXYWl0TXMiLCJhZnRlckVhY2giLCJyZXNldEhpc3RvcnkiLCJpdCIsInRpbWVvdXRzIiwic2hvdWxkIiwiZXZlbnR1YWxseSIsImJlIiwicmVqZWN0ZWQiLCJ1bmRlZmluZWQiLCJjYWxsZWRPbmNlIiwidHJ1ZSIsImZpcnN0Q2FsbCIsImFyZ3MiLCJlcXVhbCIsImVxbCIsImltcGxpY2l0V2FpdCIsInNldEltcGxpY2l0V2FpdCIsIm1hbmFnZWREcml2ZXIxIiwibWFuYWdlZERyaXZlcjIiLCJhZGRNYW5hZ2VkRHJpdmVyIiwiYWZ0ZXIiLCJtYW5hZ2VkRHJpdmVycyIsInNldE5ld0NvbW1hbmRUaW1lb3V0IiwibmV3Q29tbWFuZFRpbWVvdXRNcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBS0FBLFFBQVEsQ0FBQyxTQUFELEVBQVksWUFBWTtBQUM5QixNQUFJQyxNQUFNLEdBQUcsSUFBSUMsU0FBSixFQUFiO0FBQ0EsTUFBSUMsZUFBSixFQUFxQkMsb0JBQXJCO0FBQ0FDLEVBQUFBLE1BQU0sQ0FBQyxZQUFZO0FBQ2pCRixJQUFBQSxlQUFlLEdBQUdHLGVBQU1DLEdBQU4sQ0FBVU4sTUFBVixFQUFrQixpQkFBbEIsQ0FBbEI7QUFDQUcsSUFBQUEsb0JBQW9CLEdBQUdFLGVBQU1DLEdBQU4sQ0FBVU4sTUFBVixFQUFrQixzQkFBbEIsQ0FBdkI7QUFDRCxHQUhLLENBQU47QUFJQU8sRUFBQUEsVUFBVSxDQUFDLFlBQVk7QUFDckJQLElBQUFBLE1BQU0sQ0FBQ1EsY0FBUCxHQUF3QixDQUF4QjtBQUNELEdBRlMsQ0FBVjtBQUdBQyxFQUFBQSxTQUFT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b250ZW50IjpbImltcG9ydCBCYXNlRHJpdmVyIGZyb20gJy4uLy4uJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5cblxuXG5cbmRlc2NyaWJlKCd0aW1lb3V0JywgZnVuY3Rpb24gKCkge1xuICBsZXQgZHJpdmVyID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgbGV0IGltcGxpY2l0V2FpdFNweSwgbmV3Q29tbWFuZFRpbWVvdXRTcHk7XG4gIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgaW1wbGljaXRXYWl0U3B5ID0gc2lub24uc3B5KGRyaXZlciwgJ3NldEltcGxpY2l0V2FpdCcpO1xuICAgIG5ld0NvbW1hbmRUaW1lb3V0U3B5ID0gc2lub24uc3B5KGRyaXZlciwgJ3NldE5ld0NvbW1hbmRUaW1lb3V0Jyk7XG4gIH0pO1xuICBiZWZvcmVFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMgPSAwO1xuICB9KTtcbiAgYWZ0ZXJFYWNoKGZ1bmN0aW9uICgpIHtcbiAgICBpbXBsaWNpdFdhaXRTcHkucmVzZXRIaXN0b3J5KCk7XG4gICAgbmV3Q29tbWFuZFRpbWVvdXRTcHkucmVzZXRIaXN0b3J5KCk7XG4gIH0pO1xuICBkZXNjcmliZSgndGltZW91dHMnLCBmdW5jdGlvbiAoKSB7XG4gICAgZGVzY3JpYmUoJ2Vycm9ycycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgc29tZXRoaW5nIHJhbmRvbSBpcyBzZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIudGltZW91dHMoJ3JhbmRvbSB0aW1lb3V0JywgJ2hvd2R5Jykuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgdGltZW91dCBpcyBuZWdhdGl2ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLnRpbWVvdXRzKCdyYW5kb20gdGltZW91dCcsIC00Mikuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3JzIGlmIHRpbWVvdXQgdHlwZSBpcyB1bmtub3duJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIudGltZW91dHMoJ3JhbmRvbSB0aW1lb3V0JywgNDIpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHNvbWV0aGluZyByYW5kb20gaXMgc2VudCB0byBzY3JpcHREdXJhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLnRpbWVvdXRzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAxMjMsIHVuZGVmaW5lZCwgdW5kZWZpbmVkKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZDtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiBzb21ldGhpbmcgcmFuZG9tIGlzIHNlbnQgdG8gcGFnZUxvYWREdXJhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLnRpbWVvdXRzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDEyMywgdW5kZWZpbmVkKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZDtcbiAgICAgIH0pO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCdpbXBsaWNpdCB3YWl0JywgZnVuY3Rpb24gKCkge1xuICAgICAgaXQoJ3Nob3VsZCBjYWxsIHNldEltcGxpY2l0V2FpdCB3aGVuIGdpdmVuIGFuIGludGVnZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci50aW1lb3V0cygnaW1wbGljaXQnLCA0Mik7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgICAgICBpbXBsaWNpdFdhaXRTcHkuZmlyc3RDYWxsLmFyZ3NbMF0uc2hvdWxkLmVxdWFsKDQyKTtcbiAgICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGNhbGwgc2V0SW1wbGljaXRXYWl0IHdoZW4gZ2l2ZW4gYSBzdHJpbmcnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci50aW1lb3V0cygnaW1wbGljaXQnLCAnNDInKTtcbiAgICAgICAgaW1wbGljaXRXYWl0U3B5LmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXF1YWwoNDIpO1xuICAgICAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgY2FsbCBzZXRJbXBsaWNpdFdhaXQgd2hlbiBnaXZlbiBhbiBpbnRlZ2VyIHRvIGltcGxpY2l0RHVyYXRpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci50aW1lb3V0cyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIDQyKTtcbiAgICAgICAgaW1wbGljaXRXYWl0U3B5LmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXF1YWwoNDIpO1xuICAgICAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgY2FsbCBzZXRJbXBsaWNpdFdhaXQgd2hlbiBnaXZlbiBhIHN0cmluZyB0byBpbXBsaWNpdER1cmF0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIudGltZW91dHModW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAnNDInKTtcbiAgICAgICAgaW1wbGljaXRXYWl0U3B5LmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWU7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXF1YWwoNDIpO1xuICAgICAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCdpbXBsaWNpdFdhaXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIHNldEltcGxpY2l0V2FpdCB3aGVuIGdpdmVuIGFuIGludGVnZXInLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuaW1wbGljaXRXYWl0KDQyKTtcbiAgICAgIGltcGxpY2l0V2FpdFNweS5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgICAgaW1wbGljaXRXYWl0U3B5LmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcXVhbCg0Mik7XG4gICAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIHNldEltcGxpY2l0V2FpdCB3aGVuIGdpdmVuIGEgc3RyaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZHJpdmVyLmltcGxpY2l0V2FpdCgnNDInKTtcbiAgICAgIGltcGxpY2l0V2FpdFNweS5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgICAgaW1wbGljaXRXYWl0U3B5LmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcXVhbCg0Mik7XG4gICAgICBkcml2ZXIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiBzb21ldGhpbmcgcmFuZG9tIGlzIHNlbnQnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuaW1wbGljaXRXYWl0KCdob3dkeScpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgdGltZW91dCBpcyBuZWdhdGl2ZScsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGRyaXZlci5pbXBsaWNpdFdhaXQoLTQyKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZDtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NldCBpbXBsaWNpdCB3YWl0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgc2V0IHRoZSBpbXBsaWNpdCB3YWl0IHdpdGggYW4gaW50ZWdlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGRyaXZlci5zZXRJbXBsaWNpdFdhaXQoNDIpO1xuICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCd3aXRoIG1hbmFnZWQgZHJpdmVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IG1hbmFnZWREcml2ZXIxID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICAgIGxldCBtYW5hZ2VkRHJpdmVyMiA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICBkcml2ZXIuYWRkTWFuYWdlZERyaXZlcihtYW5hZ2VkRHJpdmVyMSk7XG4gICAgICAgIGRyaXZlci5hZGRNYW5hZ2VkRHJpdmVyKG1hbmFnZWREcml2ZXIyKTtcbiAgICAgIH0pO1xuICAgICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBkcml2ZXIubWFuYWdlZERyaXZlcnMgPSBbXTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzZXQgdGhlIGltcGxpY2l0IHdhaXQgb24gbWFuYWdlZCBkcml2ZXJzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBkcml2ZXIuc2V0SW1wbGljaXRXYWl0KDQyKTtcbiAgICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgICBtYW5hZ2VkRHJpdmVyMS5pbXBsaWNpdFdhaXRNcy5zaG91bGQuZXFsKDQyKTtcbiAgICAgICAgbWFuYWdlZERyaXZlcjIuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG4gIGRlc2NyaWJlKCdzZXQgbmV3IGNvbW1hbmQgdGltZW91dCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHNldCB0aGUgbmV3IGNvbW1hbmQgdGltZW91dCB3aXRoIGFuIGludGVnZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkcml2ZXIuc2V0TmV3Q29tbWFuZFRpbWVvdXQoNDIpO1xuICAgICAgZHJpdmVyLm5ld0NvbW1hbmRUaW1lb3V0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgfSk7XG4gICAgZGVzY3JpYmUoJ3dpdGggbWFuYWdlZCBkcml2ZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBsZXQgbWFuYWdlZERyaXZlcjEgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgICAgbGV0IG1hbmFnZWREcml2ZXIyID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICAgIGJlZm9yZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRyaXZlci5hZGRNYW5hZ2VkRHJpdmVyKG1hbmFnZWREcml2ZXIxKTtcbiAgICAgICAgZHJpdmVyLmFkZE1hbmFnZWREcml2ZXIobWFuYWdlZERyaXZlcjIpO1xuICAgICAgfSk7XG4gICAgICBhZnRlcihmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRyaXZlci5tYW5hZ2VkRHJpdmVycyA9IFtdO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHNldCB0aGUgbmV3IGNvbW1hbmQgdGltZW91dCBvbiBtYW5hZ2VkIGRyaXZlcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGRyaXZlci5zZXROZXdDb21tYW5kVGltZW91dCg0Mik7XG4gICAgICAgIGRyaXZlci5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgICBtYW5hZ2VkRHJpdmVyMS5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgICBtYW5hZ2VkRHJpdmVyMi5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwiZmlsZSI6InRlc3QvYmFzZWRyaXZlci90aW1lb3V0LXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
139
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci90aW1lb3V0LXNwZWNzLmpzIl0sIm5hbWVzIjpbImRlc2NyaWJlIiwiZHJpdmVyIiwiQmFzZURyaXZlciIsImltcGxpY2l0V2FpdFNweSIsIm5ld0NvbW1hbmRUaW1lb3V0U3B5IiwiYmVmb3JlIiwic2lub24iLCJzcHkiLCJiZWZvcmVFYWNoIiwiaW1wbGljaXRXYWl0TXMiLCJhZnRlckVhY2giLCJyZXNldEhpc3RvcnkiLCJpdCIsInRpbWVvdXRzIiwic2hvdWxkIiwiZXZlbnR1YWxseSIsImJlIiwicmVqZWN0ZWQiLCJ1bmRlZmluZWQiLCJjYWxsZWRPbmNlIiwidHJ1ZSIsImZpcnN0Q2FsbCIsImFyZ3MiLCJlcXVhbCIsImVxbCIsImltcGxpY2l0V2FpdCIsInNldEltcGxpY2l0V2FpdCIsIm1hbmFnZWREcml2ZXIxIiwibWFuYWdlZERyaXZlcjIiLCJhZGRNYW5hZ2VkRHJpdmVyIiwiYWZ0ZXIiLCJtYW5hZ2VkRHJpdmVycyIsInNldE5ld0NvbW1hbmRUaW1lb3V0IiwibmV3Q29tbWFuZFRpbWVvdXRNcyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7O0FBQ0E7O0FBS0FBLFFBQVEsQ0FBQyxTQUFELEVBQVksWUFBWTtBQUM5QixNQUFJQyxNQUFNLEdBQUcsSUFBSUMsWUFBSixFQUFiO0FBQ0EsTUFBSUMsZUFBSixFQUFxQkMsb0JBQXJCO0FBQ0FDLEVBQUFBLE1BQU0sQ0FBQyxZQUFZO0FBQ2pCRixJQUFBQSxlQUFlLEdBQUdHLGVBQU1DLEdBQU4sQ0FBVU4sTUFBVixFQUFrQixpQkFBbEIsQ0FBbEI7QUFDQUcsSUFBQUEsb0JBQW9CLEdBQUdFLGVBQU1DLEdBQU4sQ0FBVU4sTUFBVixFQUFrQixzQkFBbEIsQ0FBdkI7QUFDRCxHQUhLLENBQU47QUFJQU8sRUFBQUEsVUFBVSxDQUFDLFlBQVk7QUFDckJQLElBQUFBLE1BQU0sQ0FBQ1EsY0FBUCxHQUF3QixDQUF4QjtBQUNELEdBRlMsQ0FBVjtBQUdBQyxFQUFBQSxTQUFT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b250ZW50IjpbImltcG9ydCBCYXNlRHJpdmVyIGZyb20gJy4uLy4uL2xpYic7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuXG5cblxuXG5kZXNjcmliZSgndGltZW91dCcsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGRyaXZlciA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gIGxldCBpbXBsaWNpdFdhaXRTcHksIG5ld0NvbW1hbmRUaW1lb3V0U3B5O1xuICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgIGltcGxpY2l0V2FpdFNweSA9IHNpbm9uLnNweShkcml2ZXIsICdzZXRJbXBsaWNpdFdhaXQnKTtcbiAgICBuZXdDb21tYW5kVGltZW91dFNweSA9IHNpbm9uLnNweShkcml2ZXIsICdzZXROZXdDb21tYW5kVGltZW91dCcpO1xuICB9KTtcbiAgYmVmb3JlRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zID0gMDtcbiAgfSk7XG4gIGFmdGVyRWFjaChmdW5jdGlvbiAoKSB7XG4gICAgaW1wbGljaXRXYWl0U3B5LnJlc2V0SGlzdG9yeSgpO1xuICAgIG5ld0NvbW1hbmRUaW1lb3V0U3B5LnJlc2V0SGlzdG9yeSgpO1xuICB9KTtcbiAgZGVzY3JpYmUoJ3RpbWVvdXRzJywgZnVuY3Rpb24gKCkge1xuICAgIGRlc2NyaWJlKCdlcnJvcnMnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHNvbWV0aGluZyByYW5kb20gaXMgc2VudCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLnRpbWVvdXRzKCdyYW5kb20gdGltZW91dCcsICdob3dkeScpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHRpbWVvdXQgaXMgbmVnYXRpdmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci50aW1lb3V0cygncmFuZG9tIHRpbWVvdXQnLCAtNDIpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9ycyBpZiB0aW1lb3V0IHR5cGUgaXMgdW5rbm93bicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLnRpbWVvdXRzKCdyYW5kb20gdGltZW91dCcsIDQyKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZDtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiBzb21ldGhpbmcgcmFuZG9tIGlzIHNlbnQgdG8gc2NyaXB0RHVyYXRpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci50aW1lb3V0cyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgMTIzLCB1bmRlZmluZWQsIHVuZGVmaW5lZCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgc29tZXRoaW5nIHJhbmRvbSBpcyBzZW50IHRvIHBhZ2VMb2FkRHVyYXRpb24nLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGF3YWl0IGRyaXZlci50aW1lb3V0cyh1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCAxMjMsIHVuZGVmaW5lZCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnaW1wbGljaXQgd2FpdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGl0KCdzaG91bGQgY2FsbCBzZXRJbXBsaWNpdFdhaXQgd2hlbiBnaXZlbiBhbiBpbnRlZ2VyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIudGltZW91dHMoJ2ltcGxpY2l0JywgNDIpO1xuICAgICAgICBpbXBsaWNpdFdhaXRTcHkuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgICAgaW1wbGljaXRXYWl0U3B5LmZpcnN0Q2FsbC5hcmdzWzBdLnNob3VsZC5lcXVhbCg0Mik7XG4gICAgICAgIGRyaXZlci5pbXBsaWNpdFdhaXRNcy5zaG91bGQuZXFsKDQyKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBjYWxsIHNldEltcGxpY2l0V2FpdCB3aGVuIGdpdmVuIGEgc3RyaW5nJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIudGltZW91dHMoJ2ltcGxpY2l0JywgJzQyJyk7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgICAgICBpbXBsaWNpdFdhaXRTcHkuZmlyc3RDYWxsLmFyZ3NbMF0uc2hvdWxkLmVxdWFsKDQyKTtcbiAgICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGNhbGwgc2V0SW1wbGljaXRXYWl0IHdoZW4gZ2l2ZW4gYW4gaW50ZWdlciB0byBpbXBsaWNpdER1cmF0aW9uJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgICBhd2FpdCBkcml2ZXIudGltZW91dHModW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCA0Mik7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgICAgICBpbXBsaWNpdFdhaXRTcHkuZmlyc3RDYWxsLmFyZ3NbMF0uc2hvdWxkLmVxdWFsKDQyKTtcbiAgICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGNhbGwgc2V0SW1wbGljaXRXYWl0IHdoZW4gZ2l2ZW4gYSBzdHJpbmcgdG8gaW1wbGljaXREdXJhdGlvbicsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgYXdhaXQgZHJpdmVyLnRpbWVvdXRzKHVuZGVmaW5lZCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIHVuZGVmaW5lZCwgJzQyJyk7XG4gICAgICAgIGltcGxpY2l0V2FpdFNweS5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgICAgICBpbXBsaWNpdFdhaXRTcHkuZmlyc3RDYWxsLmFyZ3NbMF0uc2hvdWxkLmVxdWFsKDQyKTtcbiAgICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnaW1wbGljaXRXYWl0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgY2FsbCBzZXRJbXBsaWNpdFdhaXQgd2hlbiBnaXZlbiBhbiBpbnRlZ2VyJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZHJpdmVyLmltcGxpY2l0V2FpdCg0Mik7XG4gICAgICBpbXBsaWNpdFdhaXRTcHkuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGltcGxpY2l0V2FpdFNweS5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXF1YWwoNDIpO1xuICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgY2FsbCBzZXRJbXBsaWNpdFdhaXQgd2hlbiBnaXZlbiBhIHN0cmluZycsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGF3YWl0IGRyaXZlci5pbXBsaWNpdFdhaXQoJzQyJyk7XG4gICAgICBpbXBsaWNpdFdhaXRTcHkuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZTtcbiAgICAgIGltcGxpY2l0V2FpdFNweS5maXJzdENhbGwuYXJnc1swXS5zaG91bGQuZXF1YWwoNDIpO1xuICAgICAgZHJpdmVyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgc29tZXRoaW5nIHJhbmRvbSBpcyBzZW50JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgYXdhaXQgZHJpdmVyLmltcGxpY2l0V2FpdCgnaG93ZHknKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZDtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHRpbWVvdXQgaXMgbmVnYXRpdmUnLCBhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgICBhd2FpdCBkcml2ZXIuaW1wbGljaXRXYWl0KC00Mikuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWQ7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdzZXQgaW1wbGljaXQgd2FpdCcsIGZ1bmN0aW9uICgpIHtcbiAgICBpdCgnc2hvdWxkIHNldCB0aGUgaW1wbGljaXQgd2FpdCB3aXRoIGFuIGludGVnZXInLCBmdW5jdGlvbiAoKSB7XG4gICAgICBkcml2ZXIuc2V0SW1wbGljaXRXYWl0KDQyKTtcbiAgICAgIGRyaXZlci5pbXBsaWNpdFdhaXRNcy5zaG91bGQuZXFsKDQyKTtcbiAgICB9KTtcbiAgICBkZXNjcmliZSgnd2l0aCBtYW5hZ2VkIGRyaXZlcicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGxldCBtYW5hZ2VkRHJpdmVyMSA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgICBsZXQgbWFuYWdlZERyaXZlcjIgPSBuZXcgQmFzZURyaXZlcigpO1xuICAgICAgYmVmb3JlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZHJpdmVyLmFkZE1hbmFnZWREcml2ZXIobWFuYWdlZERyaXZlcjEpO1xuICAgICAgICBkcml2ZXIuYWRkTWFuYWdlZERyaXZlcihtYW5hZ2VkRHJpdmVyMik7XG4gICAgICB9KTtcbiAgICAgIGFmdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZHJpdmVyLm1hbmFnZWREcml2ZXJzID0gW107XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc2V0IHRoZSBpbXBsaWNpdCB3YWl0IG9uIG1hbmFnZWQgZHJpdmVycycsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZHJpdmVyLnNldEltcGxpY2l0V2FpdCg0Mik7XG4gICAgICAgIGRyaXZlci5pbXBsaWNpdFdhaXRNcy5zaG91bGQuZXFsKDQyKTtcbiAgICAgICAgbWFuYWdlZERyaXZlcjEuaW1wbGljaXRXYWl0TXMuc2hvdWxkLmVxbCg0Mik7XG4gICAgICAgIG1hbmFnZWREcml2ZXIyLmltcGxpY2l0V2FpdE1zLnNob3VsZC5lcWwoNDIpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xuICBkZXNjcmliZSgnc2V0IG5ldyBjb21tYW5kIHRpbWVvdXQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBzZXQgdGhlIG5ldyBjb21tYW5kIHRpbWVvdXQgd2l0aCBhbiBpbnRlZ2VyJywgZnVuY3Rpb24gKCkge1xuICAgICAgZHJpdmVyLnNldE5ld0NvbW1hbmRUaW1lb3V0KDQyKTtcbiAgICAgIGRyaXZlci5uZXdDb21tYW5kVGltZW91dE1zLnNob3VsZC5lcWwoNDIpO1xuICAgIH0pO1xuICAgIGRlc2NyaWJlKCd3aXRoIG1hbmFnZWQgZHJpdmVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgbGV0IG1hbmFnZWREcml2ZXIxID0gbmV3IEJhc2VEcml2ZXIoKTtcbiAgICAgIGxldCBtYW5hZ2VkRHJpdmVyMiA9IG5ldyBCYXNlRHJpdmVyKCk7XG4gICAgICBiZWZvcmUoZnVuY3Rpb24gKCkge1xuICAgICAgICBkcml2ZXIuYWRkTWFuYWdlZERyaXZlcihtYW5hZ2VkRHJpdmVyMSk7XG4gICAgICAgIGRyaXZlci5hZGRNYW5hZ2VkRHJpdmVyKG1hbmFnZWREcml2ZXIyKTtcbiAgICAgIH0pO1xuICAgICAgYWZ0ZXIoZnVuY3Rpb24gKCkge1xuICAgICAgICBkcml2ZXIubWFuYWdlZERyaXZlcnMgPSBbXTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzZXQgdGhlIG5ldyBjb21tYW5kIHRpbWVvdXQgb24gbWFuYWdlZCBkcml2ZXJzJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBkcml2ZXIuc2V0TmV3Q29tbWFuZFRpbWVvdXQoNDIpO1xuICAgICAgICBkcml2ZXIubmV3Q29tbWFuZFRpbWVvdXRNcy5zaG91bGQuZXFsKDQyKTtcbiAgICAgICAgbWFuYWdlZERyaXZlcjEubmV3Q29tbWFuZFRpbWVvdXRNcy5zaG91bGQuZXFsKDQyKTtcbiAgICAgICAgbWFuYWdlZERyaXZlcjIubmV3Q29tbWFuZFRpbWVvdXRNcy5zaG91bGQuZXFsKDQyKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sImZpbGUiOiJ0ZXN0L2Jhc2Vkcml2ZXIvdGltZW91dC1zcGVjcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -6,7 +6,7 @@ require("source-map-support/register");
6
6
 
7
7
  var _lodash = _interopRequireDefault(require("lodash"));
8
8
 
9
- var _2 = require("../..");
9
+ var _lib = require("../../lib");
10
10
 
11
11
  var _fakeDriver = require("../protocol/fake-driver");
12
12
 
@@ -26,8 +26,8 @@ describe('Websockets (e2e)', function () {
26
26
  driver = new _fakeDriver.FakeDriver();
27
27
  driver.sessionId = SESSION_ID;
28
28
  port = await (0, _helpers.getTestPort)();
29
- baseServer = await (0, _2.server)({
30
- routeConfiguringFunction: (0, _2.routeConfiguringFunction)(driver),
29
+ baseServer = await (0, _lib.server)({
30
+ routeConfiguringFunction: (0, _lib.routeConfiguringFunction)(driver),
31
31
  port
32
32
  });
33
33
  });
@@ -45,7 +45,7 @@ describe('Websockets (e2e)', function () {
45
45
  }
46
46
  });
47
47
  const previousListenerCount = baseServer.listenerCount('upgrade');
48
- const endpoint = `${_2.DEFAULT_WS_PATHNAME_PREFIX}/hello`;
48
+ const endpoint = `${_lib.DEFAULT_WS_PATHNAME_PREFIX}/hello`;
49
49
  const timeout = 5000;
50
50
  await baseServer.addWebSocketHandler(endpoint, wss);
51
51
  baseServer.listenerCount('upgrade').should.be.above(previousListenerCount);
@@ -81,4 +81,4 @@ describe('Websockets (e2e)', function () {
81
81
  });require('source-map-support').install();
82
82
 
83
83
 
84
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci93ZWJzb2NrZXRzLWUyZS1zcGVjcy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsImJhc2VTZXJ2ZXIiLCJkcml2ZXIiLCJwb3J0IiwiU0VTU0lPTl9JRCIsIldTX0RBVEEiLCJiZWZvcmUiLCJGYWtlRHJpdmVyIiwic2Vzc2lvbklkIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwiYWZ0ZXIiLCJjbG9zZSIsIml0Iiwid3NzIiwiV2ViU29ja2V0IiwiU2VydmVyIiwibm9TZXJ2ZXIiLCJvbiIsIndzIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwicHJldmlvdXNMaXN0ZW5lckNvdW50IiwibGlzdGVuZXJDb3VudCIsImVuZHBvaW50IiwiREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVgiLCJ0aW1lb3V0IiwiYWRkV2ViU29ja2V0SGFuZGxlciIsInNob3VsZCIsImJlIiwiYWJvdmUiLCJfIiwia2V5cyIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwibGVuZ3RoIiwiZXFsIiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJjbGllbnQiLCJURVNUX0hPU1QiLCJyZXEiLCJub3QiLCJlbXB0eSIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiZGF0YSIsInNldFRpbWVvdXQiLCJFcnJvciIsInJlbW92ZVdlYlNvY2tldEhhbmRsZXIiLCJ0cnVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQUEsUUFBUSxDQUFDLGtCQUFELEVBQXFCLFlBQVk7QUFDdkMsTUFBSUMsVUFBSjtBQUNBLE1BQUlDLE1BQUo7QUFDQSxNQUFJQyxJQUFKO0FBQ0EsUUFBTUMsVUFBVSxHQUFHLEtBQW5CO0FBQ0EsUUFBTUMsT0FBTyxHQUFHLE9BQWhCO0FBRUFDLEVBQUFBLE1BQU0sQ0FBQyxrQkFBa0I7QUFDdkJKLElBQUFBLE1BQU0sR0FBRyxJQUFJSyxzQkFBSixFQUFUO0FBQ0FMLElB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VSxDQUFDZ0Msb0JBQVgsRUFBYixFQUFnREMsTUFBaEQsQ0FBdUROLE1BQXZELENBQThETyxHQUE5RCxDQUFrRSxDQUFsRTs7QUFDQSxZQUFNLElBQUlDLGlCQUFKLENBQU0sQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQy9CLGNBQU1DLE1BQU0sR0FBRyxJQUFJekIsV0FBSixDQUFlLFFBQU8wQixrQkFBVSxJQUFHckMsSUFBSyxHQUFFcUIsUUFBUyxFQUFuRCxDQUFmO0FBQ0FlLFFBQUFBLE1BQU0sQ0FBQ3RCLEVBQVAsQ0FBVSxTQUFWLEVBQXNCNkIsSUFBRCxJQUNuQlIsTUFBTSxDQUFDLElBQUlVLEtBQUosQ0FBVyx1REFBRCxHQUNDLHNCQUFxQkYsSUFBSyx5QkFEckMsQ0FBRCxDQURSO0FBSUFQLFFBQUFBLE1BQU0sQ0FBQ3RCLEVBQVAsQ0FBVSxPQUFWLEVBQW1Cb0IsT0FBbkI7QUFDQVUsUUFBQUEsVUFBVSxDQUFDVixPQUFELEVBQVVYLE9BQVYsQ0FBVjtBQUNELE9BUkssQ0FBTjtBQVNBekIsTUFBQUEsVUFBVSxDQUFDc0IsYUFBWCxDQUF5QixTQUF6QixFQUFvQ0ssTUFBcEMsQ0FBMkNDLEVBQTNDLENBQThDQyxLQUE5QyxDQUFvRFIscUJBQXBEO0FBQ0QsS0ExQ0MsQ0FBRjtBQTJDRCxHQTVDTyxDQUFSO0FBNkNELENBakVPLENBQVIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgc2VydmVyLCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24sXG4gICAgICAgICBERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWCB9IGZyb20gJy4uLy4uJztcbmltcG9ydCB7IEZha2VEcml2ZXIgfSBmcm9tICcuLi9wcm90b2NvbC9mYWtlLWRyaXZlcic7XG5pbXBvcnQgV2ViU29ja2V0IGZyb20gJ3dzJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCB7VEVTVF9IT1NULCBnZXRUZXN0UG9ydH0gZnJvbSAnLi4vaGVscGVycyc7XG5cblxuZGVzY3JpYmUoJ1dlYnNvY2tldHMgKGUyZSknLCBmdW5jdGlvbiAoKSB7XG4gIGxldCBiYXNlU2VydmVyO1xuICBsZXQgZHJpdmVyO1xuICBsZXQgcG9ydDtcbiAgY29uc3QgU0VTU0lPTl9JRCA9ICdmb28nO1xuICBjb25zdCBXU19EQVRBID0gJ0hlbGxvJztcblxuICBiZWZvcmUoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGRyaXZlciA9IG5ldyBGYWtlRHJpdmVyKCk7XG4gICAgZHJpdmVyLnNlc3Npb25JZCA9IFNFU1NJT05fSUQ7XG4gICAgcG9ydCA9IGF3YWl0IGdldFRlc3RQb3J0KCk7XG4gICAgYmFzZVNlcnZlciA9IGF3YWl0IHNlcnZlcih7XG4gICAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbihkcml2ZXIpLFxuICAgICAgcG9ydCxcbiAgICB9KTtcbiAgfSk7XG4gIGFmdGVyKGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICBhd2FpdCBiYXNlU2VydmVyLmNsb3NlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCd3ZWIgc29ja2V0cyBzdXBwb3J0JywgZnVuY3Rpb24gKCkge1xuICAgIGl0KCdzaG91bGQgYmUgYWJsZSB0byBhZGQgd2Vic29ja2V0IGhhbmRsZXIgYW5kIHJlbW92ZSBpdCcsIGFzeW5jIGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IHdzcyA9IG5ldyBXZWJTb2NrZXQuU2VydmVyKHtcbiAgICAgICAgbm9TZXJ2ZXI6IHRydWUsXG4gICAgICB9KTtcbiAgICAgIHdzcy5vbignY29ubmVjdGlvbicsICh3cykgPT4ge1xuICAgICAgICBpZiAod3MgJiYgd3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHtcbiAgICAgICAgICB3cy5zZW5kKFdTX0RBVEEpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICAgIGNvbnN0IHByZXZpb3VzTGlzdGVuZXJDb3VudCA9IGJhc2VTZXJ2ZXIubGlzdGVuZXJDb3VudCgndXBncmFkZScpO1xuICAgICAgY29uc3QgZW5kcG9pbnQgPSBgJHtERUZBVUxUX1dTX1BBVEhOQU1FX1BSRUZJWH0vaGVsbG9gO1xuICAgICAgY29uc3QgdGltZW91dCA9IDUwMDA7XG4gICAgICBhd2FpdCBiYXNlU2VydmVyLmFkZFdlYlNvY2tldEhhbmRsZXIoZW5kcG9pbnQsIHdzcyk7XG4gICAgICBiYXNlU2VydmVyLmxpc3RlbmVyQ291bnQoJ3VwZ3JhZGUnKS5zaG91bGQuYmUuYWJvdmUocHJldmlvdXNMaXN0ZW5lckNvdW50KTtcbiAgICAgIF8ua2V5cyhhd2FpdCBiYXNlU2VydmVyLmdldFdlYlNvY2tldEhhbmRsZXJzKCkpLmxlbmd0aC5zaG91bGQuZXFsKDEpO1xuICAgICAgYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgICBjb25zdCBjbGllbnQgPSBuZXcgV2ViU29ja2V0KGB3czovLyR7VEVTVF9IT1NUfToke3BvcnR9JHtlbmRwb2ludH1gKTtcbiAgICAgICAgY2xpZW50Lm9uKCdjb25uZWN0aW9uJywgKHdzLCByZXEpID0+IHtcbiAgICAgICAgICB3cy5zaG91bGQubm90LmJlLmVtcHR5O1xuICAgICAgICAgIHJlcS5jb25uZWN0aW9uLnJlbW90ZUFkZHJlc3Muc2hvdWxkLm5vdC5iZS5lbXB0eTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsaWVudC5vbignbWVzc2FnZScsIChkYXRhKSA9PiB7XG4gICAgICAgICAgZGF0YS5zaG91bGQuZXFsKFdTX0RBVEEpO1xuICAgICAgICAgIHJlc29sdmUoKTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNsaWVudC5vbignZXJyb3InLCByZWplY3QpO1xuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHJlamVjdChuZXcgRXJyb3IoJ05vIHdlYnNvY2tldCBtZXNzYWdlcyBoYXZlIGJlZW4gcmVjZWl2ZWQgYWZ0ZXIgdGhlIHRpbWVvdXQnKSksXG4gICAgICAgICAgICAgICAgICAgdGltZW91dCk7XG4gICAgICB9KTtcblxuICAgICAgKGF3YWl0IGJhc2VTZXJ2ZXIucmVtb3ZlV2ViU29ja2V0SGFuZGxlcihlbmRwb2ludCkpLnNob3VsZC5iZS50cnVlO1xuICAgICAgXy5rZXlzKGF3YWl0IGJhc2VTZXJ2ZXIuZ2V0V2ViU29ja2V0SGFuZGxlcnMoKSkubGVuZ3RoLnNob3VsZC5lcWwoMCk7XG4gICAgICBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IG5ldyBXZWJTb2NrZXQoYHdzOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0ke2VuZHBvaW50fWApO1xuICAgICAgICBjbGllbnQub24oJ21lc3NhZ2UnLCAoZGF0YSkgPT5cbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKGBObyB3ZWJzb2NrZXQgbWVzc2FnZXMgYXJlIGV4cGVjdGVkIGFmdGVyIHRoZSBoYW5kbGVyIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgYGhhcyBiZWVuIHJlbW92ZWQuICcke2RhdGF9JyBpcyByZWNlaXZlZCBpbnN0ZWFkLiBgKSlcbiAgICAgICAgKTtcbiAgICAgICAgY2xpZW50Lm9uKCdlcnJvcicsIHJlc29sdmUpO1xuICAgICAgICBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWVvdXQpO1xuICAgICAgfSk7XG4gICAgICBiYXNlU2VydmVyLmxpc3RlbmVyQ291bnQoJ3VwZ3JhZGUnKS5zaG91bGQuYmUuYWJvdmUocHJldmlvdXNMaXN0ZW5lckNvdW50KTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJmaWxlIjoidGVzdC9iYXNlZHJpdmVyL3dlYnNvY2tldHMtZTJlLXNwZWNzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
84
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvYmFzZWRyaXZlci93ZWJzb2NrZXRzLWUyZS1zcGVjcy5qcyJdLCJuYW1lcyI6WyJkZXNjcmliZSIsImJhc2VTZXJ2ZXIiLCJkcml2ZXIiLCJwb3J0IiwiU0VTU0lPTl9JRCIsIldTX0RBVEEiLCJiZWZvcmUiLCJGYWtlRHJpdmVyIiwic2Vzc2lvbklkIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwiYWZ0ZXIiLCJjbG9zZSIsIml0Iiwid3NzIiwiV2ViU29ja2V0IiwiU2VydmVyIiwibm9TZXJ2ZXIiLCJvbiIsIndzIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwicHJldmlvdXNMaXN0ZW5lckNvdW50IiwibGlzdGVuZXJDb3VudCIsImVuZHBvaW50IiwiREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVgiLCJ0aW1lb3V0IiwiYWRkV2ViU29ja2V0SGFuZGxlciIsInNob3VsZCIsImJlIiwiYWJvdmUiLCJfIiwia2V5cyIsImdldFdlYlNvY2tldEhhbmRsZXJzIiwibGVuZ3RoIiwiZXFsIiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJjbGllbnQiLCJURVNUX0hPU1QiLCJyZXEiLCJub3QiLCJlbXB0eSIsImNvbm5lY3Rpb24iLCJyZW1vdGVBZGRyZXNzIiwiZGF0YSIsInNldFRpbWVvdXQiLCJFcnJvciIsInJlbW92ZVdlYlNvY2tldEhhbmRsZXIiLCJ0cnVlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFHQUEsUUFBUSxDQUFDLGtCQUFELEVBQXFCLFlBQVk7QUFDdkMsTUFBSUMsVUFBSjtBQUNBLE1BQUlDLE1BQUo7QUFDQSxNQUFJQyxJQUFKO0FBQ0EsUUFBTUMsVUFBVSxHQUFHLEtBQW5CO0FBQ0EsUUFBTUMsT0FBTyxHQUFHLE9BQWhCO0FBRUFDLEVBQUFBLE1BQU0sQ0FBQyxrQkFBa0I7QUFDdkJKLElBQUFBLE1BQU0sR0FBRyxJQUFJSyxzQkFBSixFQUFUO0FBQ0FMLElB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QVUsQ0FBQ2dDLG9CQUFYLEVBQWIsRUFBZ0RDLE1BQWhELENBQXVETixNQUF2RCxDQUE4RE8sR0FBOUQsQ0FBa0UsQ0FBbEU7O0FBQ0EsWUFBTSxJQUFJQyxpQkFBSixDQUFNLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUMvQixjQUFNQyxNQUFNLEdBQUcsSUFBSXpCLFdBQUosQ0FBZSxRQUFPMEIsa0JBQVUsSUFBR3JDLElBQUssR0FBRXFCLFFBQVMsRUFBbkQsQ0FBZjtBQUNBZSxRQUFBQSxNQUFNLENBQUN0QixFQUFQLENBQVUsU0FBVixFQUFzQjZCLElBQUQsSUFDbkJSLE1BQU0sQ0FBQyxJQUFJVSxLQUFKLENBQVcsdURBQUQsR0FDQyxzQkFBcUJGLElBQUsseUJBRHJDLENBQUQsQ0FEUjtBQUlBUCxRQUFBQSxNQUFNLENBQUN0QixFQUFQLENBQVUsT0FBVixFQUFtQm9CLE9BQW5CO0FBQ0FVLFFBQUFBLFVBQVUsQ0FBQ1YsT0FBRCxFQUFVWCxPQUFWLENBQVY7QUFDRCxPQVJLLENBQU47QUFTQXpCLE1BQUFBLFVBQVUsQ0FBQ3NCLGFBQVgsQ0FBeUIsU0FBekIsRUFBb0NLLE1BQXBDLENBQTJDQyxFQUEzQyxDQUE4Q0MsS0FBOUMsQ0FBb0RSLHFCQUFwRDtBQUNELEtBMUNDLENBQUY7QUEyQ0QsR0E1Q08sQ0FBUjtBQTZDRCxDQWpFTyxDQUFSIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IHNlcnZlciwgcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uLFxuICAgICAgICAgREVGQVVMVF9XU19QQVRITkFNRV9QUkVGSVggfSBmcm9tICcuLi8uLi9saWInO1xuaW1wb3J0IHsgRmFrZURyaXZlciB9IGZyb20gJy4uL3Byb3RvY29sL2Zha2UtZHJpdmVyJztcbmltcG9ydCBXZWJTb2NrZXQgZnJvbSAnd3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHtURVNUX0hPU1QsIGdldFRlc3RQb3J0fSBmcm9tICcuLi9oZWxwZXJzJztcblxuXG5kZXNjcmliZSgnV2Vic29ja2V0cyAoZTJlKScsIGZ1bmN0aW9uICgpIHtcbiAgbGV0IGJhc2VTZXJ2ZXI7XG4gIGxldCBkcml2ZXI7XG4gIGxldCBwb3J0O1xuICBjb25zdCBTRVNTSU9OX0lEID0gJ2Zvbyc7XG4gIGNvbnN0IFdTX0RBVEEgPSAnSGVsbG8nO1xuXG4gIGJlZm9yZShhc3luYyBmdW5jdGlvbiAoKSB7XG4gICAgZHJpdmVyID0gbmV3IEZha2VEcml2ZXIoKTtcbiAgICBkcml2ZXIuc2Vzc2lvbklkID0gU0VTU0lPTl9JRDtcbiAgICBwb3J0ID0gYXdhaXQgZ2V0VGVzdFBvcnQoKTtcbiAgICBiYXNlU2VydmVyID0gYXdhaXQgc2VydmVyKHtcbiAgICAgIHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbjogcm91dGVDb25maWd1cmluZ0Z1bmN0aW9uKGRyaXZlciksXG4gICAgICBwb3J0LFxuICAgIH0pO1xuICB9KTtcbiAgYWZ0ZXIoYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGF3YWl0IGJhc2VTZXJ2ZXIuY2xvc2UoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3dlYiBzb2NrZXRzIHN1cHBvcnQnLCBmdW5jdGlvbiAoKSB7XG4gICAgaXQoJ3Nob3VsZCBiZSBhYmxlIHRvIGFkZCB3ZWJzb2NrZXQgaGFuZGxlciBhbmQgcmVtb3ZlIGl0JywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3Qgd3NzID0gbmV3IFdlYlNvY2tldC5TZXJ2ZXIoe1xuICAgICAgICBub1NlcnZlcjogdHJ1ZSxcbiAgICAgIH0pO1xuICAgICAgd3NzLm9uKCdjb25uZWN0aW9uJywgKHdzKSA9PiB7XG4gICAgICAgIGlmICh3cyAmJiB3cy5yZWFkeVN0YXRlID09PSBXZWJTb2NrZXQuT1BFTikge1xuICAgICAgICAgIHdzLnNlbmQoV1NfREFUQSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgICAgY29uc3QgcHJldmlvdXNMaXN0ZW5lckNvdW50ID0gYmFzZVNlcnZlci5saXN0ZW5lckNvdW50KCd1cGdyYWRlJyk7XG4gICAgICBjb25zdCBlbmRwb2ludCA9IGAke0RFRkFVTFRfV1NfUEFUSE5BTUVfUFJFRklYfS9oZWxsb2A7XG4gICAgICBjb25zdCB0aW1lb3V0ID0gNTAwMDtcbiAgICAgIGF3YWl0IGJhc2VTZXJ2ZXIuYWRkV2ViU29ja2V0SGFuZGxlcihlbmRwb2ludCwgd3NzKTtcbiAgICAgIGJhc2VTZXJ2ZXIubGlzdGVuZXJDb3VudCgndXBncmFkZScpLnNob3VsZC5iZS5hYm92ZShwcmV2aW91c0xpc3RlbmVyQ291bnQpO1xuICAgICAgXy5rZXlzKGF3YWl0IGJhc2VTZXJ2ZXIuZ2V0V2ViU29ja2V0SGFuZGxlcnMoKSkubGVuZ3RoLnNob3VsZC5lcWwoMSk7XG4gICAgICBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAgIGNvbnN0IGNsaWVudCA9IG5ldyBXZWJTb2NrZXQoYHdzOi8vJHtURVNUX0hPU1R9OiR7cG9ydH0ke2VuZHBvaW50fWApO1xuICAgICAgICBjbGllbnQub24oJ2Nvbm5lY3Rpb24nLCAod3MsIHJlcSkgPT4ge1xuICAgICAgICAgIHdzLnNob3VsZC5ub3QuYmUuZW1wdHk7XG4gICAgICAgICAgcmVxLmNvbm5lY3Rpb24ucmVtb3RlQWRkcmVzcy5zaG91bGQubm90LmJlLmVtcHR5O1xuICAgICAgICB9KTtcbiAgICAgICAgY2xpZW50Lm9uKCdtZXNzYWdlJywgKGRhdGEpID0+IHtcbiAgICAgICAgICBkYXRhLnNob3VsZC5lcWwoV1NfREFUQSk7XG4gICAgICAgICAgcmVzb2x2ZSgpO1xuICAgICAgICB9KTtcbiAgICAgICAgY2xpZW50Lm9uKCdlcnJvcicsIHJlamVjdCk7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gcmVqZWN0KG5ldyBFcnJvcignTm8gd2Vic29ja2V0IG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhZnRlciB0aGUgdGltZW91dCcpKSxcbiAgICAgICAgICAgICAgICAgICB0aW1lb3V0KTtcbiAgICAgIH0pO1xuXG4gICAgICAoYXdhaXQgYmFzZVNlcnZlci5yZW1vdmVXZWJTb2NrZXRIYW5kbGVyKGVuZHBvaW50KSkuc2hvdWxkLmJlLnRydWU7XG4gICAgICBfLmtleXMoYXdhaXQgYmFzZVNlcnZlci5nZXRXZWJTb2NrZXRIYW5kbGVycygpKS5sZW5ndGguc2hvdWxkLmVxbCgwKTtcbiAgICAgIGF3YWl0IG5ldyBCKChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgICAgY29uc3QgY2xpZW50ID0gbmV3IFdlYlNvY2tldChgd3M6Ly8ke1RFU1RfSE9TVH06JHtwb3J0fSR7ZW5kcG9pbnR9YCk7XG4gICAgICAgIGNsaWVudC5vbignbWVzc2FnZScsIChkYXRhKSA9PlxuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoYE5vIHdlYnNvY2tldCBtZXNzYWdlcyBhcmUgZXhwZWN0ZWQgYWZ0ZXIgdGhlIGhhbmRsZXIgYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICBgaGFzIGJlZW4gcmVtb3ZlZC4gJyR7ZGF0YX0nIGlzIHJlY2VpdmVkIGluc3RlYWQuIGApKVxuICAgICAgICApO1xuICAgICAgICBjbGllbnQub24oJ2Vycm9yJywgcmVzb2x2ZSk7XG4gICAgICAgIHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZW91dCk7XG4gICAgICB9KTtcbiAgICAgIGJhc2VTZXJ2ZXIubGlzdGVuZXJDb3VudCgndXBncmFkZScpLnNob3VsZC5iZS5hYm92ZShwcmV2aW91c0xpc3RlbmVyQ291bnQpO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sImZpbGUiOiJ0ZXN0L2Jhc2Vkcml2ZXIvd2Vic29ja2V0cy1lMmUtc3BlY3MuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==