appium-mac2-driver 0.14.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -13,6 +13,7 @@ On top of standard Appium requirements Mac2 driver also expects the following pr
13
13
  - macOS 10.15 or later
14
14
  - Xcode 12 or later should be installed
15
15
  - Xcode Helper app should be enabled for Accessibility access. The app itself could be usually found at `/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Agents/Xcode Helper.app`. In order to enable Accessibility access for it simply open the parent folder in Finder: `open /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Agents/` and drag & drop the `Xcode Helper` app to `Security & Privacy -> Privacy -> Accessibility` list of your `System Preferences`. This action must only be done once.
16
+ - Since the version `1.0.0` this driver is only compatible with Appium 2. Use the `appium driver install mac2` CLI command to add it to your server dist.
16
17
 
17
18
 
18
19
  ## Capabilities
@@ -613,7 +614,7 @@ useDefaultUiInterruptionsHandling | boolean | Whether to use the default XCTest
613
614
  import pytest
614
615
 
615
616
  from appium import webdriver
616
-
617
+ from appium.webdriver.common.appiumby import AppiumBy
617
618
 
618
619
  @pytest.fixture()
619
620
  def driver():
@@ -628,7 +629,7 @@ def driver():
628
629
 
629
630
 
630
631
  def test_edit_text(driver):
631
- edit_field = driver.find_element_by_class_name('XCUIElementTypeTextView')
632
+ edit_field = driver.find_element(by=AppiumBy.CLASS_NAME, value='XCUIElementTypeTextView')
632
633
  edit_field.send_keys('hello world')
633
634
  assert edit_field.text == 'hello world'
634
635
  edit_field.clear()
@@ -636,7 +637,7 @@ def test_edit_text(driver):
636
637
 
637
638
 
638
639
  def test_sending_custom_keys(driver):
639
- edit_field = driver.find_element_by_class_name('XCUIElementTypeTextView')
640
+ edit_field = driver.find_element(by=AppiumBy.CLASS_NAME, value='XCUIElementTypeTextView')
640
641
  flagsShift = 1 << 1
641
642
  driver.execute_script('macos: keys', {
642
643
  'keys': [{
@@ -648,7 +649,6 @@ def test_sending_custom_keys(driver):
648
649
  }]
649
650
  })
650
651
  assert edit_field.text == 'HI'
651
-
652
652
  ```
653
653
 
654
654
 
@@ -9,7 +9,7 @@ exports.default = exports.commands = void 0;
9
9
 
10
10
  require("source-map-support/register");
11
11
 
12
- var _appiumSupport = require("appium-support");
12
+ var _support = require("@appium/support");
13
13
 
14
14
  var _teen_process = require("teen_process");
15
15
 
@@ -51,17 +51,17 @@ commands.macosExecAppleScript = async function macosExecAppleScript(opts = {}) {
51
51
 
52
52
  try {
53
53
  if (shouldRunScript) {
54
- tmpRoot = await _appiumSupport.tempDir.openDir();
54
+ tmpRoot = await _support.tempDir.openDir();
55
55
 
56
56
  const tmpScriptPath = _path.default.resolve(tmpRoot, 'appium_script.scpt');
57
57
 
58
- await _appiumSupport.fs.writeFile(tmpScriptPath, script, 'utf8');
58
+ await _support.fs.writeFile(tmpScriptPath, script, 'utf8');
59
59
  args.push(tmpScriptPath);
60
60
  } else {
61
61
  args.push('-e', command);
62
62
  }
63
63
 
64
- _logger.default.info(`Running ${OSASCRIPT} with arguments: ${_appiumSupport.util.quote(args)}`);
64
+ _logger.default.info(`Running ${OSASCRIPT} with arguments: ${_support.util.quote(args)}`);
65
65
 
66
66
  try {
67
67
  const {
@@ -76,7 +76,7 @@ commands.macosExecAppleScript = async function macosExecAppleScript(opts = {}) {
76
76
  }
77
77
  } finally {
78
78
  if (tmpRoot) {
79
- await _appiumSupport.fs.rimraf(tmpRoot);
79
+ await _support.fs.rimraf(tmpRoot);
80
80
  }
81
81
  }
82
82
  };
@@ -85,4 +85,4 @@ var _default = commands;
85
85
  exports.default = _default;require('source-map-support').install();
86
86
 
87
87
 
88
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hcHBsZXNjcmlwdC5qcyJdLCJuYW1lcyI6WyJPU0FTQ1JJUFQiLCJBUFBMRV9TQ1JJUFRfRkVBVFVSRSIsImNvbW1hbmRzIiwibWFjb3NFeGVjQXBwbGVTY3JpcHQiLCJvcHRzIiwiZW5zdXJlRmVhdHVyZUVuYWJsZWQiLCJzY3JpcHQiLCJsYW5ndWFnZSIsImNvbW1hbmQiLCJjd2QiLCJ0aW1lb3V0IiwibG9nIiwiZXJyb3JBbmRUaHJvdyIsInRlc3QiLCJzaG91bGRSdW5TY3JpcHQiLCJhcmdzIiwicHVzaCIsInRtcFJvb3QiLCJ0ZW1wRGlyIiwib3BlbkRpciIsInRtcFNjcmlwdFBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImZzIiwid3JpdGVGaWxlIiwiaW5mbyIsInV0aWwiLCJxdW90ZSIsInN0ZG91dCIsImUiLCJFcnJvciIsInN0ZGVyciIsIm1lc3NhZ2UiLCJyaW1yYWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsU0FBUyxHQUFHLFdBQWxCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsY0FBN0I7QUFFQSxNQUFNQyxRQUFRLEdBQUcsRUFBakI7OztBQThCQUEsUUFBUSxDQUFDQyxvQkFBVCxHQUFnQyxlQUFlQSxvQkFBZixDQUFxQ0MsSUFBSSxHQUFHLEVBQTVDLEVBQWdEO0FBQzlFLE9BQUtDLG9CQUFMLENBQTBCSixvQkFBMUI7QUFFQSxRQUFNO0FBQ0pLLElBQUFBLE1BREk7QUFFSkMsSUFBQUEsUUFGSTtBQUdKQyxJQUFBQSxPQUhJO0FBSUpDLElBQUFBLEdBSkk7QUFLSkMsSUFBQUE7QUFMSSxNQU1GTixJQU5KOztBQU9BLE1BQUksQ0FBQ0UsTUFBRCxJQUFXLENBQUNFLE9BQWhCLEVBQXlCO0FBQ3ZCRyxvQkFBSUMsYUFBSixDQUFrQiw4Q0FBbEI7QUFDRDs7QUFDRCxNQUFJLEtBQUtDLElBQUwsQ0FBVUwsT0FBVixDQUFKLEVBQXdCO0FBQ3RCRyxvQkFBSUMsYUFBSixDQUFrQixpREFBbEI7QUFDRDs7QUFFRCxRQUFNRSxlQUFlLEdBQUcsQ0FBQ04sT0FBekI7QUFFQSxRQUFNTyxJQUFJLEdBQUcsRUFBYjs7QUFDQSxNQUFJUixRQUFKLEVBQWM7QUFDWlEsSUFBQUEsSUFBSSxDQUFDQyxJQUFMLENBQVUsSUFBVixFQUFnQlQsUUFBaEI7QUFDRDs7QUFDRCxNQUFJVSxPQUFKOztBQUNBLE1BQUk7QUFDRixRQUFJSCxlQUFKLEVBQXFCO0FBQ25CRyxNQUFBQSxPQUFPLEdBQUcsTUFBTUMsdUJBQVFDLE9BQVIsRUFBaEI7O0FBQ0EsWUFBTUMsYUFBYSxHQUFHQyxjQUFLQyxPQUFMLENBQWFMLE9BQWIsRUFBc0Isb0JBQXRCLENBQXRCOztBQUNBLFlBQU1NLGtCQUFHQyxTQUFILENBQWFKLGFBQWIsRUFBNEJkLE1BQTVCLEVBQW9DLE1BQXBDLENBQU47QUFDQVMsTUFBQUEsSUFBSSxDQUFDQyxJQUFMLENBQVVJLGFBQVY7QUFDRCxLQUxELE1BS087QUFDTEwsTUFBQUEsSUFBSSxDQUFDQyxJQUFMLENBQVUsSUFBVixFQUFnQlIsT0FBaEI7QUFDRDs7QUFDREcsb0JBQUljLElBQUosQ0FBVSxXQUFVekIsU0FBVSxvQkFBbUIwQixvQkFBS0MsS0FBTCxDQUFXWixJQUFYLENBQWlCLEVBQWxFOztBQUNBLFFBQUk7QUFDRixZQUFNO0FBQUNhLFFBQUFBO0FBQUQsVUFBVyxNQUFNLHdCQUFLNUIsU0FBTCxFQUFnQmUsSUFBaEIsRUFBc0I7QUFBQ04sUUFBQUEsR0FBRDtBQUFNQyxRQUFBQTtBQUFOLE9BQXRCLENBQXZCO0FBQ0EsYUFBT2tCLE1BQVA7QUFDRCxLQUhELENBR0UsT0FBT0MsQ0FBUCxFQUFVO0FBQ1YsWUFBTSxJQUFJQyxLQUFKLENBQVVELENBQUMsQ0FBQ0UsTUFBRixJQUFZRixDQUFDLENBQUNHLE9BQXhCLENBQU47QUFDRDtBQUNGLEdBaEJELFNBZ0JVO0FBQ1IsUUFBSWYsT0FBSixFQUFhO0FBQ1gsWUFBTU0sa0JBQUdVLE1BQUgsQ0FBVWhCLE9BQVYsQ0FBTjtBQUNEO0FBQ0Y7QUFDRixDQTdDRDs7ZUFnRGVmLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcywgdGVtcERpciwgdXRpbCB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCB7IGV4ZWMgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IGxvZyBmcm9tICcuLi9sb2dnZXInO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbmNvbnN0IE9TQVNDUklQVCA9ICdvc2FzY3JpcHQnO1xuY29uc3QgQVBQTEVfU0NSSVBUX0ZFQVRVUkUgPSAnYXBwbGVfc2NyaXB0JztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBFeGVjQXBwbGVTY3JpcHRPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IHNjcmlwdCBBIHZhbGlkIEFwcGxlU2NyaXB0IHRvIGV4ZWN1dGVcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gbGFuZ3VhZ2UgT3ZlcnJpZGVzIHRoZSBzY3JpcHRpbmcgbGFuZ3VhZ2UuIEJhc2ljYWxseSwgc2V0cyB0aGUgdmFsdWUgb2YgYC1sYCBjb21tYW5kXG4gKiBsaW5lIGFyZ3VtZW50IG9mIGBvc2FzY3JpcHRgIHRvb2wuIElmIHVuc2V0IHRoZSBBcHBsZVNjcmlwdCBsYW5ndWFnZSBpcyBhc3N1bWVkLlxuICogQHByb3BlcnR5IHs/c3RyaW5nfSBjb21tYW5kIEEgdmFsaWQgQXBwbGVTY3JpcHQgYXMgYSBzaW5nbGUgY29tbWFuZCAobm8gbGluZSBicmVha3MpIHRvIGV4ZWN1dGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdGltZW91dCBbMjAwMDBdIFRoZSBudW1iZXIgb2Ygc2Vjb25kcyB0byB3YWl0IHVudGlsIGEgbG9uZy1ydW5uaW5nIGNvbW1hbmQgaXNcbiAqIGZpbmlzaGVkLiBBbiBlcnJvciBpcyB0aHJvd24gaWYgdGhlIGNvbW1hbmQgaXMgc3RpbGwgcnVubmluZyBhZnRlciB0aGlzIHRpbWVvdXQgZXhwaXJlcy5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY3dkIFRoZSBwYXRoIHRvIGFuIGV4aXN0aW5nIGZvbGRlciwgd2hpY2ggaXMgZ29pbmcgdG8gYmUgc2V0IGFzIHRoZVxuICogd29ya2luZyBkaXJlY3RvcnkgZm9yIHRoZSBjb21tYW5kL3NjcmlwdCBiZWluZyBleGVjdXRlZC5cbiAqL1xuXG4vKipcbiAqIEV4ZWN1dGVzIHRoZSBnaXZlbiBBcHBsZVNjcmlwdCBjb21tYW5kIG9yIGEgd2hvbGUgc2NyaXB0IGJhc2VkIG9uIHRoZVxuICogZ2l2ZW4gb3B0aW9ucy4gRWl0aGVyIG9mIHRoZXNlIG9wdGlvbnMgbXVzdCBiZSBwcm92aWRlZC4gSWYgYm90aCBhcmUgcHJvdmlkZWRcbiAqIHRoZW4gdGhlIGBjb21tYW5kYCBvbmUgZ2V0cyB0aGUgcHJpb3JpdHkuXG4gKiBOb3RlIHRoYXQgQXBwbGVTY3JpcHQgY29tbWFuZCBjYW5ub3QgY29udGFpbiBsaW5lIGJyZWFrcy4gQ29uc2lkZXIgbWFraW5nIGl0XG4gKiB0byBhIHNjcmlwdCBpbiBzdWNoIGNhc2UuXG4gKiBOb3RlIHRoYXQgYnkgZGVmYXVsdCBBcHBsZVNjcmlwdCBlbmdpbmUgYmxvY2tzIGNvbW1hbmRzL3NjcmlwdHMgZXhlY3V0aW9uIGlmIHlvdXIgc2NyaXB0XG4gKiBpcyB0cnlpbmcgdG8gYWNjZXNzIHNvbWUgcHJpdmF0ZSBlbnRpdGllcywgbGlrZSBjYW1lcmFzIG9yIHRoZSBkZXNrdG9wIHNjcmVlblxuICogYW5kIG5vIHBlcm1pc3Npb25zIHRvIGRvIGl0IGFyZSBnaXZlbiB0byB0aGUgcGFyZW50IChmb3IgZXhhbXBsZSwgQXBwaXVtIG9yIFRlcm1pbmFsKVxuICogcHJvY2VzcyBpbiBTeXN0ZW0gUHJlZmVyZW5jZXMgLT4gUHJpdmFjeSBsaXN0LlxuICpcbiAqIEBwYXJhbSB7IUV4ZWNBcHBsZVNjcmlwdE9wdGlvbnN9IG9wdHNcbiAqIEByZXR1cm5zIHtzdHJpbmd9IFRoZSBhY3R1YWwgc3Rkb3V0IG9mIHRoZSBnaXZlbiBjb21tYW5kL3NjcmlwdFxuICogQHRocm93cyB7RXJyb3J9IElmIHRoZSBleGl0IGNvZGUgb2YgdGhlIGdpdmVuIGNvbW1hbmQvc2NyaXB0IGlzIG5vdCB6ZXJvLlxuICogVGhlIGFjdHVhbCBzdGRlcnIgb3V0cHV0IGlzIHNldCB0byB0aGUgZXJyb3IgbWVzc2FnZSB2YWx1ZS5cbiAqL1xuY29tbWFuZHMubWFjb3NFeGVjQXBwbGVTY3JpcHQgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0V4ZWNBcHBsZVNjcmlwdCAob3B0cyA9IHt9KSB7XG4gIHRoaXMuZW5zdXJlRmVhdHVyZUVuYWJsZWQoQVBQTEVfU0NSSVBUX0ZFQVRVUkUpO1xuXG4gIGNvbnN0IHtcbiAgICBzY3JpcHQsXG4gICAgbGFuZ3VhZ2UsXG4gICAgY29tbWFuZCxcbiAgICBjd2QsXG4gICAgdGltZW91dCxcbiAgfSA9IG9wdHM7XG4gIGlmICghc2NyaXB0ICYmICFjb21tYW5kKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ0FwcGxlU2NyaXB0IHNjcmlwdC9jb21tYW5kIG11c3Qgbm90IGJlIGVtcHR5Jyk7XG4gIH1cbiAgaWYgKC9cXG4vLnRlc3QoY29tbWFuZCkpIHtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdygnQXBwbGVTY3JpcHQgY29tbWFuZHMgY2Fubm90IGNvbnRhaW4gbGluZSBicmVha3MnKTtcbiAgfVxuICAvLyAnY29tbWFuZCcgaGFzIHByaW9yaXR5IG92ZXIgJ3NjcmlwdCdcbiAgY29uc3Qgc2hvdWxkUnVuU2NyaXB0ID0gIWNvbW1hbmQ7XG5cbiAgY29uc3QgYXJncyA9IFtdO1xuICBpZiAobGFuZ3VhZ2UpIHtcbiAgICBhcmdzLnB1c2goJy1sJywgbGFuZ3VhZ2UpO1xuICB9XG4gIGxldCB0bXBSb290O1xuICB0cnkge1xuICAgIGlmIChzaG91bGRSdW5TY3JpcHQpIHtcbiAgICAgIHRtcFJvb3QgPSBhd2FpdCB0ZW1wRGlyLm9wZW5EaXIoKTtcbiAgICAgIGNvbnN0IHRtcFNjcmlwdFBhdGggPSBwYXRoLnJlc29sdmUodG1wUm9vdCwgJ2FwcGl1bV9zY3JpcHQuc2NwdCcpO1xuICAgICAgYXdhaXQgZnMud3JpdGVGaWxlKHRtcFNjcmlwdFBhdGgsIHNjcmlwdCwgJ3V0ZjgnKTtcbiAgICAgIGFyZ3MucHVzaCh0bXBTY3JpcHRQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXJncy5wdXNoKCctZScsIGNvbW1hbmQpO1xuICAgIH1cbiAgICBsb2cuaW5mbyhgUnVubmluZyAke09TQVNDUklQVH0gd2l0aCBhcmd1bWVudHM6ICR7dXRpbC5xdW90ZShhcmdzKX1gKTtcbiAgICB0cnkge1xuICAgICAgY29uc3Qge3N0ZG91dH0gPSBhd2FpdCBleGVjKE9TQVNDUklQVCwgYXJncywge2N3ZCwgdGltZW91dH0pO1xuICAgICAgcmV0dXJuIHN0ZG91dDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoZS5zdGRlcnIgfHwgZS5tZXNzYWdlKTtcbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgaWYgKHRtcFJvb3QpIHtcbiAgICAgIGF3YWl0IGZzLnJpbXJhZih0bXBSb290KTtcbiAgICB9XG4gIH1cbn07XG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2FwcGxlc2NyaXB0LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
88
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9hcHBsZXNjcmlwdC5qcyJdLCJuYW1lcyI6WyJPU0FTQ1JJUFQiLCJBUFBMRV9TQ1JJUFRfRkVBVFVSRSIsImNvbW1hbmRzIiwibWFjb3NFeGVjQXBwbGVTY3JpcHQiLCJvcHRzIiwiZW5zdXJlRmVhdHVyZUVuYWJsZWQiLCJzY3JpcHQiLCJsYW5ndWFnZSIsImNvbW1hbmQiLCJjd2QiLCJ0aW1lb3V0IiwibG9nIiwiZXJyb3JBbmRUaHJvdyIsInRlc3QiLCJzaG91bGRSdW5TY3JpcHQiLCJhcmdzIiwicHVzaCIsInRtcFJvb3QiLCJ0ZW1wRGlyIiwib3BlbkRpciIsInRtcFNjcmlwdFBhdGgiLCJwYXRoIiwicmVzb2x2ZSIsImZzIiwid3JpdGVGaWxlIiwiaW5mbyIsInV0aWwiLCJxdW90ZSIsInN0ZG91dCIsImUiLCJFcnJvciIsInN0ZGVyciIsIm1lc3NhZ2UiLCJyaW1yYWYiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsU0FBUyxHQUFHLFdBQWxCO0FBQ0EsTUFBTUMsb0JBQW9CLEdBQUcsY0FBN0I7QUFFQSxNQUFNQyxRQUFRLEdBQUcsRUFBakI7OztBQThCQUEsUUFBUSxDQUFDQyxvQkFBVCxHQUFnQyxlQUFlQSxvQkFBZixDQUFxQ0MsSUFBSSxHQUFHLEVBQTVDLEVBQWdEO0FBQzlFLE9BQUtDLG9CQUFMLENBQTBCSixvQkFBMUI7QUFFQSxRQUFNO0FBQ0pLLElBQUFBLE1BREk7QUFFSkMsSUFBQUEsUUFGSTtBQUdKQyxJQUFBQSxPQUhJO0FBSUpDLElBQUFBLEdBSkk7QUFLSkMsSUFBQUE7QUFMSSxNQU1GTixJQU5KOztBQU9BLE1BQUksQ0FBQ0UsTUFBRCxJQUFXLENBQUNFLE9BQWhCLEVBQXlCO0FBQ3ZCRyxvQkFBSUMsYUFBSixDQUFrQiw4Q0FBbEI7QUFDRDs7QUFDRCxNQUFJLEtBQUtDLElBQUwsQ0FBVUwsT0FBVixDQUFKLEVBQXdCO0FBQ3RCRyxvQkFBSUMsYUFBSixDQUFrQixpREFBbEI7QUFDRDs7QUFFRCxRQUFNRSxlQUFlLEdBQUcsQ0FBQ04sT0FBekI7QUFFQSxRQUFNTyxJQUFJLEdBQUcsRUFBYjs7QUFDQSxNQUFJUixRQUFKLEVBQWM7QUFDWlEsSUFBQUEsSUFBSSxDQUFDQyxJQUFMLENBQVUsSUFBVixFQUFnQlQsUUFBaEI7QUFDRDs7QUFDRCxNQUFJVSxPQUFKOztBQUNBLE1BQUk7QUFDRixRQUFJSCxlQUFKLEVBQXFCO0FBQ25CRyxNQUFBQSxPQUFPLEdBQUcsTUFBTUMsaUJBQVFDLE9BQVIsRUFBaEI7O0FBQ0EsWUFBTUMsYUFBYSxHQUFHQyxjQUFLQyxPQUFMLENBQWFMLE9BQWIsRUFBc0Isb0JBQXRCLENBQXRCOztBQUNBLFlBQU1NLFlBQUdDLFNBQUgsQ0FBYUosYUFBYixFQUE0QmQsTUFBNUIsRUFBb0MsTUFBcEMsQ0FBTjtBQUNBUyxNQUFBQSxJQUFJLENBQUNDLElBQUwsQ0FBVUksYUFBVjtBQUNELEtBTEQsTUFLTztBQUNMTCxNQUFBQSxJQUFJLENBQUNDLElBQUwsQ0FBVSxJQUFWLEVBQWdCUixPQUFoQjtBQUNEOztBQUNERyxvQkFBSWMsSUFBSixDQUFVLFdBQVV6QixTQUFVLG9CQUFtQjBCLGNBQUtDLEtBQUwsQ0FBV1osSUFBWCxDQUFpQixFQUFsRTs7QUFDQSxRQUFJO0FBQ0YsWUFBTTtBQUFDYSxRQUFBQTtBQUFELFVBQVcsTUFBTSx3QkFBSzVCLFNBQUwsRUFBZ0JlLElBQWhCLEVBQXNCO0FBQUNOLFFBQUFBLEdBQUQ7QUFBTUMsUUFBQUE7QUFBTixPQUF0QixDQUF2QjtBQUNBLGFBQU9rQixNQUFQO0FBQ0QsS0FIRCxDQUdFLE9BQU9DLENBQVAsRUFBVTtBQUNWLFlBQU0sSUFBSUMsS0FBSixDQUFVRCxDQUFDLENBQUNFLE1BQUYsSUFBWUYsQ0FBQyxDQUFDRyxPQUF4QixDQUFOO0FBQ0Q7QUFDRixHQWhCRCxTQWdCVTtBQUNSLFFBQUlmLE9BQUosRUFBYTtBQUNYLFlBQU1NLFlBQUdVLE1BQUgsQ0FBVWhCLE9BQVYsQ0FBTjtBQUNEO0FBQ0Y7QUFDRixDQTdDRDs7ZUFnRGVmLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmcywgdGVtcERpciwgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuXG5jb25zdCBPU0FTQ1JJUFQgPSAnb3Nhc2NyaXB0JztcbmNvbnN0IEFQUExFX1NDUklQVF9GRUFUVVJFID0gJ2FwcGxlX3NjcmlwdCc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gRXhlY0FwcGxlU2NyaXB0T3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzY3JpcHQgQSB2YWxpZCBBcHBsZVNjcmlwdCB0byBleGVjdXRlXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGxhbmd1YWdlIE92ZXJyaWRlcyB0aGUgc2NyaXB0aW5nIGxhbmd1YWdlLiBCYXNpY2FsbHksIHNldHMgdGhlIHZhbHVlIG9mIGAtbGAgY29tbWFuZFxuICogbGluZSBhcmd1bWVudCBvZiBgb3Nhc2NyaXB0YCB0b29sLiBJZiB1bnNldCB0aGUgQXBwbGVTY3JpcHQgbGFuZ3VhZ2UgaXMgYXNzdW1lZC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gY29tbWFuZCBBIHZhbGlkIEFwcGxlU2NyaXB0IGFzIGEgc2luZ2xlIGNvbW1hbmQgKG5vIGxpbmUgYnJlYWtzKSB0byBleGVjdXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHRpbWVvdXQgWzIwMDAwXSBUaGUgbnVtYmVyIG9mIHNlY29uZHMgdG8gd2FpdCB1bnRpbCBhIGxvbmctcnVubmluZyBjb21tYW5kIGlzXG4gKiBmaW5pc2hlZC4gQW4gZXJyb3IgaXMgdGhyb3duIGlmIHRoZSBjb21tYW5kIGlzIHN0aWxsIHJ1bm5pbmcgYWZ0ZXIgdGhpcyB0aW1lb3V0IGV4cGlyZXMuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGN3ZCBUaGUgcGF0aCB0byBhbiBleGlzdGluZyBmb2xkZXIsIHdoaWNoIGlzIGdvaW5nIHRvIGJlIHNldCBhcyB0aGVcbiAqIHdvcmtpbmcgZGlyZWN0b3J5IGZvciB0aGUgY29tbWFuZC9zY3JpcHQgYmVpbmcgZXhlY3V0ZWQuXG4gKi9cblxuLyoqXG4gKiBFeGVjdXRlcyB0aGUgZ2l2ZW4gQXBwbGVTY3JpcHQgY29tbWFuZCBvciBhIHdob2xlIHNjcmlwdCBiYXNlZCBvbiB0aGVcbiAqIGdpdmVuIG9wdGlvbnMuIEVpdGhlciBvZiB0aGVzZSBvcHRpb25zIG11c3QgYmUgcHJvdmlkZWQuIElmIGJvdGggYXJlIHByb3ZpZGVkXG4gKiB0aGVuIHRoZSBgY29tbWFuZGAgb25lIGdldHMgdGhlIHByaW9yaXR5LlxuICogTm90ZSB0aGF0IEFwcGxlU2NyaXB0IGNvbW1hbmQgY2Fubm90IGNvbnRhaW4gbGluZSBicmVha3MuIENvbnNpZGVyIG1ha2luZyBpdFxuICogdG8gYSBzY3JpcHQgaW4gc3VjaCBjYXNlLlxuICogTm90ZSB0aGF0IGJ5IGRlZmF1bHQgQXBwbGVTY3JpcHQgZW5naW5lIGJsb2NrcyBjb21tYW5kcy9zY3JpcHRzIGV4ZWN1dGlvbiBpZiB5b3VyIHNjcmlwdFxuICogaXMgdHJ5aW5nIHRvIGFjY2VzcyBzb21lIHByaXZhdGUgZW50aXRpZXMsIGxpa2UgY2FtZXJhcyBvciB0aGUgZGVza3RvcCBzY3JlZW5cbiAqIGFuZCBubyBwZXJtaXNzaW9ucyB0byBkbyBpdCBhcmUgZ2l2ZW4gdG8gdGhlIHBhcmVudCAoZm9yIGV4YW1wbGUsIEFwcGl1bSBvciBUZXJtaW5hbClcbiAqIHByb2Nlc3MgaW4gU3lzdGVtIFByZWZlcmVuY2VzIC0+IFByaXZhY3kgbGlzdC5cbiAqXG4gKiBAcGFyYW0geyFFeGVjQXBwbGVTY3JpcHRPcHRpb25zfSBvcHRzXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgYWN0dWFsIHN0ZG91dCBvZiB0aGUgZ2l2ZW4gY29tbWFuZC9zY3JpcHRcbiAqIEB0aHJvd3Mge0Vycm9yfSBJZiB0aGUgZXhpdCBjb2RlIG9mIHRoZSBnaXZlbiBjb21tYW5kL3NjcmlwdCBpcyBub3QgemVyby5cbiAqIFRoZSBhY3R1YWwgc3RkZXJyIG91dHB1dCBpcyBzZXQgdG8gdGhlIGVycm9yIG1lc3NhZ2UgdmFsdWUuXG4gKi9cbmNvbW1hbmRzLm1hY29zRXhlY0FwcGxlU2NyaXB0ID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NFeGVjQXBwbGVTY3JpcHQgKG9wdHMgPSB7fSkge1xuICB0aGlzLmVuc3VyZUZlYXR1cmVFbmFibGVkKEFQUExFX1NDUklQVF9GRUFUVVJFKTtcblxuICBjb25zdCB7XG4gICAgc2NyaXB0LFxuICAgIGxhbmd1YWdlLFxuICAgIGNvbW1hbmQsXG4gICAgY3dkLFxuICAgIHRpbWVvdXQsXG4gIH0gPSBvcHRzO1xuICBpZiAoIXNjcmlwdCAmJiAhY29tbWFuZCkge1xuICAgIGxvZy5lcnJvckFuZFRocm93KCdBcHBsZVNjcmlwdCBzY3JpcHQvY29tbWFuZCBtdXN0IG5vdCBiZSBlbXB0eScpO1xuICB9XG4gIGlmICgvXFxuLy50ZXN0KGNvbW1hbmQpKSB7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coJ0FwcGxlU2NyaXB0IGNvbW1hbmRzIGNhbm5vdCBjb250YWluIGxpbmUgYnJlYWtzJyk7XG4gIH1cbiAgLy8gJ2NvbW1hbmQnIGhhcyBwcmlvcml0eSBvdmVyICdzY3JpcHQnXG4gIGNvbnN0IHNob3VsZFJ1blNjcmlwdCA9ICFjb21tYW5kO1xuXG4gIGNvbnN0IGFyZ3MgPSBbXTtcbiAgaWYgKGxhbmd1YWdlKSB7XG4gICAgYXJncy5wdXNoKCctbCcsIGxhbmd1YWdlKTtcbiAgfVxuICBsZXQgdG1wUm9vdDtcbiAgdHJ5IHtcbiAgICBpZiAoc2hvdWxkUnVuU2NyaXB0KSB7XG4gICAgICB0bXBSb290ID0gYXdhaXQgdGVtcERpci5vcGVuRGlyKCk7XG4gICAgICBjb25zdCB0bXBTY3JpcHRQYXRoID0gcGF0aC5yZXNvbHZlKHRtcFJvb3QsICdhcHBpdW1fc2NyaXB0LnNjcHQnKTtcbiAgICAgIGF3YWl0IGZzLndyaXRlRmlsZSh0bXBTY3JpcHRQYXRoLCBzY3JpcHQsICd1dGY4Jyk7XG4gICAgICBhcmdzLnB1c2godG1wU2NyaXB0UGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFyZ3MucHVzaCgnLWUnLCBjb21tYW5kKTtcbiAgICB9XG4gICAgbG9nLmluZm8oYFJ1bm5pbmcgJHtPU0FTQ1JJUFR9IHdpdGggYXJndW1lbnRzOiAke3V0aWwucXVvdGUoYXJncyl9YCk7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHtzdGRvdXR9ID0gYXdhaXQgZXhlYyhPU0FTQ1JJUFQsIGFyZ3MsIHtjd2QsIHRpbWVvdXR9KTtcbiAgICAgIHJldHVybiBzdGRvdXQ7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGUuc3RkZXJyIHx8IGUubWVzc2FnZSk7XG4gICAgfVxuICB9IGZpbmFsbHkge1xuICAgIGlmICh0bXBSb290KSB7XG4gICAgICBhd2FpdCBmcy5yaW1yYWYodG1wUm9vdCk7XG4gICAgfVxuICB9XG59O1xuXG5leHBvcnQgeyBjb21tYW5kcyB9O1xuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9hcHBsZXNjcmlwdC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -11,7 +11,7 @@ require("source-map-support/register");
11
11
 
12
12
  var _lodash = _interopRequireDefault(require("lodash"));
13
13
 
14
- var _appiumBaseDriver = require("appium-base-driver");
14
+ var _baseDriver = require("@appium/base-driver");
15
15
 
16
16
  var _logger = _interopRequireDefault(require("../logger"));
17
17
 
@@ -50,12 +50,12 @@ commands.execute = async function execute(script, args) {
50
50
  return await this.executeMacosCommand(script, _lodash.default.isArray(args) ? args[0] : args);
51
51
  }
52
52
 
53
- throw new _appiumBaseDriver.errors.NotImplementedError();
53
+ throw new _baseDriver.errors.NotImplementedError();
54
54
  };
55
55
 
56
56
  commands.executeMacosCommand = async function executeMacosCommand(command, opts = {}) {
57
57
  if (!_lodash.default.has(EXTENSION_COMMANDS_MAPPING, command)) {
58
- throw new _appiumBaseDriver.errors.UnknownCommandError(`Unknown extension command "${command}". ` + `Only ${_lodash.default.keys(EXTENSION_COMMANDS_MAPPING)} commands are supported.`);
58
+ throw new _baseDriver.errors.UnknownCommandError(`Unknown extension command "${command}". ` + `Only ${_lodash.default.keys(EXTENSION_COMMANDS_MAPPING)} commands are supported.`);
59
59
  }
60
60
 
61
61
  return await this[EXTENSION_COMMANDS_MAPPING[command]](opts);
@@ -65,4 +65,4 @@ var _default = commands;
65
65
  exports.default = _default;require('source-map-support').install();
66
66
 
67
67
 
68
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkciLCJzZXRWYWx1ZSIsImNsaWNrIiwic2Nyb2xsIiwic3dpcGUiLCJyaWdodENsaWNrIiwiaG92ZXIiLCJkb3VibGVDbGljayIsImNsaWNrQW5kRHJhZyIsImNsaWNrQW5kRHJhZ0FuZEhvbGQiLCJrZXlzIiwidGFwIiwiZG91YmxlVGFwIiwicHJlc3MiLCJwcmVzc0FuZERyYWciLCJwcmVzc0FuZERyYWdBbmRIb2xkIiwic291cmNlIiwibGF1bmNoQXBwIiwiYWN0aXZhdGVBcHAiLCJ0ZXJtaW5hdGVBcHAiLCJxdWVyeUFwcFN0YXRlIiwiYXBwbGVTY3JpcHQiLCJzdGFydFJlY29yZGluZ1NjcmVlbiIsInN0b3BSZWNvcmRpbmdTY3JlZW4iLCJleGVjdXRlIiwic2NyaXB0IiwiYXJncyIsIm1hdGNoIiwibG9nIiwiaW5mbyIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1hY29zQ29tbWFuZCIsIl8iLCJpc0FycmF5IiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImNvbW1hbmQiLCJvcHRzIiwiaGFzIiwiVW5rbm93bkNvbW1hbmRFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7QUFFQSxNQUFNQywwQkFBMEIsR0FBRztBQUNqQ0MsRUFBQUEsUUFBUSxFQUFFLGVBRHVCO0FBRWpDQyxFQUFBQSxLQUFLLEVBQUUsWUFGMEI7QUFHakNDLEVBQUFBLE1BQU0sRUFBRSxhQUh5QjtBQUlqQ0MsRUFBQUEsS0FBSyxFQUFFLFlBSjBCO0FBS2pDQyxFQUFBQSxVQUFVLEVBQUUsaUJBTHFCO0FBTWpDQyxFQUFBQSxLQUFLLEVBQUUsWUFOMEI7QUFPakNDLEVBQUFBLFdBQVcsRUFBRSxrQkFQb0I7QUFRakNDLEVBQUFBLFlBQVksRUFBRSxtQkFSbUI7QUFTakNDLEVBQUFBLG1CQUFtQixFQUFFLDBCQVRZO0FBVWpDQyxFQUFBQSxJQUFJLEVBQUUsV0FWMkI7QUFZakNDLEVBQUFBLEdBQUcsRUFBRSxVQVo0QjtBQWFqQ0MsRUFBQUEsU0FBUyxFQUFFLGdCQWJzQjtBQWNqQ0MsRUFBQUEsS0FBSyxFQUFFLFlBZDBCO0FBZWpDQyxFQUFBQSxZQUFZLEVBQUUsbUJBZm1CO0FBZ0JqQ0MsRUFBQUEsbUJBQW1CLEVBQUUsMEJBaEJZO0FBa0JqQ0MsRUFBQUEsTUFBTSxFQUFFLGFBbEJ5QjtBQW9CakNDLEVBQUFBLFNBQVMsRUFBRSxnQkFwQnNCO0FBcUJqQ0MsRUFBQUEsV0FBVyxFQUFFLGtCQXJCb0I7QUFzQmpDQyxFQUFBQSxZQUFZLEVBQUUsbUJBdEJtQjtBQXVCakNDLEVBQUFBLGFBQWEsRUFBRSxvQkF2QmtCO0FBeUJqQ0MsRUFBQUEsV0FBVyxFQUFFLHNCQXpCb0I7QUEyQmpDQyxFQUFBQSxvQkFBb0IsRUFBRSxzQkEzQlc7QUE0QmpDQyxFQUFBQSxtQkFBbUIsRUFBRTtBQTVCWSxDQUFuQzs7QUErQkF4QixRQUFRLENBQUN5QixPQUFULEdBQW1CLGVBQWVBLE9BQWYsQ0FBd0JDLE1BQXhCLEVBQWdDQyxJQUFoQyxFQUFzQztBQUN2RCxNQUFJRCxNQUFNLENBQUNFLEtBQVAsQ0FBYSxTQUFiLENBQUosRUFBNkI7QUFDM0JDLG9CQUFJQyxJQUFKLENBQVUsZ0NBQStCSixNQUFPLEdBQWhEOztBQUNBQSxJQUFBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ0ssT0FBUCxDQUFlLFNBQWYsRUFBMEIsRUFBMUIsRUFBOEJDLElBQTlCLEVBQVQ7QUFDQSxXQUFPLE1BQU0sS0FBS0MsbUJBQUwsQ0FBeUJQLE1BQXpCLEVBQWlDUSxnQkFBRUMsT0FBRixDQUFVUixJQUFWLElBQWtCQSxJQUFJLENBQUMsQ0FBRCxDQUF0QixHQUE0QkEsSUFBN0QsQ0FBYjtBQUNEOztBQUNELFFBQU0sSUFBSVMseUJBQU9DLG1CQUFYLEVBQU47QUFDRCxDQVBEOztBQVNBckMsUUFBUSxDQUFDaUMsbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsQ0FBb0NLLE9BQXBDLEVBQTZDQyxJQUFJLEdBQUcsRUFBcEQsRUFBd0Q7QUFDckYsTUFBSSxDQUFDTCxnQkFBRU0sR0FBRixDQUFNdkMsMEJBQU4sRUFBa0NxQyxPQUFsQyxDQUFMLEVBQWlEO0FBQy9DLFVBQU0sSUFBSUYseUJBQU9LLG1CQUFYLENBQWdDLDhCQUE2QkgsT0FBUSxLQUF0QyxHQUNsQyxRQUFPSixnQkFBRXZCLElBQUYsQ0FBT1YsMEJBQVAsQ0FBbUMsMEJBRHZDLENBQU47QUFFRDs7QUFDRCxTQUFPLE1BQU0sS0FBS0EsMEJBQTBCLENBQUNxQyxPQUFELENBQS9CLEVBQTBDQyxJQUExQyxDQUFiO0FBQ0QsQ0FORDs7ZUFRZXZDLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCBsb2cgZnJvbSAnLi4vbG9nZ2VyJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuY29uc3QgRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkcgPSB7XG4gIHNldFZhbHVlOiAnbWFjb3NTZXRWYWx1ZScsXG4gIGNsaWNrOiAnbWFjb3NDbGljaycsXG4gIHNjcm9sbDogJ21hY29zU2Nyb2xsJyxcbiAgc3dpcGU6ICdtYWNvc1N3aXBlJyxcbiAgcmlnaHRDbGljazogJ21hY29zUmlnaHRDbGljaycsXG4gIGhvdmVyOiAnbWFjb3NIb3ZlcicsXG4gIGRvdWJsZUNsaWNrOiAnbWFjb3NEb3VibGVDbGljaycsXG4gIGNsaWNrQW5kRHJhZzogJ21hY29zQ2xpY2tBbmREcmFnJyxcbiAgY2xpY2tBbmREcmFnQW5kSG9sZDogJ21hY29zQ2xpY2tBbmREcmFnQW5kSG9sZCcsXG4gIGtleXM6ICdtYWNvc0tleXMnLFxuXG4gIHRhcDogJ21hY29zVGFwJyxcbiAgZG91YmxlVGFwOiAnbWFjb3NEb3VibGVUYXAnLFxuICBwcmVzczogJ21hY29zUHJlc3MnLFxuICBwcmVzc0FuZERyYWc6ICdtYWNvc1ByZXNzQW5kRHJhZycsXG4gIHByZXNzQW5kRHJhZ0FuZEhvbGQ6ICdtYWNvc1ByZXNzQW5kRHJhZ0FuZEhvbGQnLFxuXG4gIHNvdXJjZTogJ21hY29zU291cmNlJyxcblxuICBsYXVuY2hBcHA6ICdtYWNvc0xhdW5jaEFwcCcsXG4gIGFjdGl2YXRlQXBwOiAnbWFjb3NBY3RpdmF0ZUFwcCcsXG4gIHRlcm1pbmF0ZUFwcDogJ21hY29zVGVybWluYXRlQXBwJyxcbiAgcXVlcnlBcHBTdGF0ZTogJ21hY29zUXVlcnlBcHBTdGF0ZScsXG5cbiAgYXBwbGVTY3JpcHQ6ICdtYWNvc0V4ZWNBcHBsZVNjcmlwdCcsXG5cbiAgc3RhcnRSZWNvcmRpbmdTY3JlZW46ICdzdGFydFJlY29yZGluZ1NjcmVlbicsXG4gIHN0b3BSZWNvcmRpbmdTY3JlZW46ICdzdG9wUmVjb3JkaW5nU2NyZWVuJyxcbn07XG5cbmNvbW1hbmRzLmV4ZWN1dGUgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlIChzY3JpcHQsIGFyZ3MpIHtcbiAgaWYgKHNjcmlwdC5tYXRjaCgvXm1hY29zOi8pKSB7XG4gICAgbG9nLmluZm8oYEV4ZWN1dGluZyBleHRlbnNpb24gY29tbWFuZCAnJHtzY3JpcHR9J2ApO1xuICAgIHNjcmlwdCA9IHNjcmlwdC5yZXBsYWNlKC9ebWFjb3M6LywgJycpLnRyaW0oKTtcbiAgICByZXR1cm4gYXdhaXQgdGhpcy5leGVjdXRlTWFjb3NDb21tYW5kKHNjcmlwdCwgXy5pc0FycmF5KGFyZ3MpID8gYXJnc1swXSA6IGFyZ3MpO1xuICB9XG4gIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xufTtcblxuY29tbWFuZHMuZXhlY3V0ZU1hY29zQ29tbWFuZCA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVNYWNvc0NvbW1hbmQgKGNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBpZiAoIV8uaGFzKEVYVEVOU0lPTl9DT01NQU5EU19NQVBQSU5HLCBjb21tYW5kKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkNvbW1hbmRFcnJvcihgVW5rbm93biBleHRlbnNpb24gY29tbWFuZCBcIiR7Y29tbWFuZH1cIi4gYCArXG4gICAgICBgT25seSAke18ua2V5cyhFWFRFTlNJT05fQ09NTUFORFNfTUFQUElORyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkdbY29tbWFuZF1dKG9wdHMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
68
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkciLCJzZXRWYWx1ZSIsImNsaWNrIiwic2Nyb2xsIiwic3dpcGUiLCJyaWdodENsaWNrIiwiaG92ZXIiLCJkb3VibGVDbGljayIsImNsaWNrQW5kRHJhZyIsImNsaWNrQW5kRHJhZ0FuZEhvbGQiLCJrZXlzIiwidGFwIiwiZG91YmxlVGFwIiwicHJlc3MiLCJwcmVzc0FuZERyYWciLCJwcmVzc0FuZERyYWdBbmRIb2xkIiwic291cmNlIiwibGF1bmNoQXBwIiwiYWN0aXZhdGVBcHAiLCJ0ZXJtaW5hdGVBcHAiLCJxdWVyeUFwcFN0YXRlIiwiYXBwbGVTY3JpcHQiLCJzdGFydFJlY29yZGluZ1NjcmVlbiIsInN0b3BSZWNvcmRpbmdTY3JlZW4iLCJleGVjdXRlIiwic2NyaXB0IiwiYXJncyIsIm1hdGNoIiwibG9nIiwiaW5mbyIsInJlcGxhY2UiLCJ0cmltIiwiZXhlY3V0ZU1hY29zQ29tbWFuZCIsIl8iLCJpc0FycmF5IiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImNvbW1hbmQiLCJvcHRzIiwiaGFzIiwiVW5rbm93bkNvbW1hbmRFcnJvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7QUFFQSxNQUFNQywwQkFBMEIsR0FBRztBQUNqQ0MsRUFBQUEsUUFBUSxFQUFFLGVBRHVCO0FBRWpDQyxFQUFBQSxLQUFLLEVBQUUsWUFGMEI7QUFHakNDLEVBQUFBLE1BQU0sRUFBRSxhQUh5QjtBQUlqQ0MsRUFBQUEsS0FBSyxFQUFFLFlBSjBCO0FBS2pDQyxFQUFBQSxVQUFVLEVBQUUsaUJBTHFCO0FBTWpDQyxFQUFBQSxLQUFLLEVBQUUsWUFOMEI7QUFPakNDLEVBQUFBLFdBQVcsRUFBRSxrQkFQb0I7QUFRakNDLEVBQUFBLFlBQVksRUFBRSxtQkFSbUI7QUFTakNDLEVBQUFBLG1CQUFtQixFQUFFLDBCQVRZO0FBVWpDQyxFQUFBQSxJQUFJLEVBQUUsV0FWMkI7QUFZakNDLEVBQUFBLEdBQUcsRUFBRSxVQVo0QjtBQWFqQ0MsRUFBQUEsU0FBUyxFQUFFLGdCQWJzQjtBQWNqQ0MsRUFBQUEsS0FBSyxFQUFFLFlBZDBCO0FBZWpDQyxFQUFBQSxZQUFZLEVBQUUsbUJBZm1CO0FBZ0JqQ0MsRUFBQUEsbUJBQW1CLEVBQUUsMEJBaEJZO0FBa0JqQ0MsRUFBQUEsTUFBTSxFQUFFLGFBbEJ5QjtBQW9CakNDLEVBQUFBLFNBQVMsRUFBRSxnQkFwQnNCO0FBcUJqQ0MsRUFBQUEsV0FBVyxFQUFFLGtCQXJCb0I7QUFzQmpDQyxFQUFBQSxZQUFZLEVBQUUsbUJBdEJtQjtBQXVCakNDLEVBQUFBLGFBQWEsRUFBRSxvQkF2QmtCO0FBeUJqQ0MsRUFBQUEsV0FBVyxFQUFFLHNCQXpCb0I7QUEyQmpDQyxFQUFBQSxvQkFBb0IsRUFBRSxzQkEzQlc7QUE0QmpDQyxFQUFBQSxtQkFBbUIsRUFBRTtBQTVCWSxDQUFuQzs7QUErQkF4QixRQUFRLENBQUN5QixPQUFULEdBQW1CLGVBQWVBLE9BQWYsQ0FBd0JDLE1BQXhCLEVBQWdDQyxJQUFoQyxFQUFzQztBQUN2RCxNQUFJRCxNQUFNLENBQUNFLEtBQVAsQ0FBYSxTQUFiLENBQUosRUFBNkI7QUFDM0JDLG9CQUFJQyxJQUFKLENBQVUsZ0NBQStCSixNQUFPLEdBQWhEOztBQUNBQSxJQUFBQSxNQUFNLEdBQUdBLE1BQU0sQ0FBQ0ssT0FBUCxDQUFlLFNBQWYsRUFBMEIsRUFBMUIsRUFBOEJDLElBQTlCLEVBQVQ7QUFDQSxXQUFPLE1BQU0sS0FBS0MsbUJBQUwsQ0FBeUJQLE1BQXpCLEVBQWlDUSxnQkFBRUMsT0FBRixDQUFVUixJQUFWLElBQWtCQSxJQUFJLENBQUMsQ0FBRCxDQUF0QixHQUE0QkEsSUFBN0QsQ0FBYjtBQUNEOztBQUNELFFBQU0sSUFBSVMsbUJBQU9DLG1CQUFYLEVBQU47QUFDRCxDQVBEOztBQVNBckMsUUFBUSxDQUFDaUMsbUJBQVQsR0FBK0IsZUFBZUEsbUJBQWYsQ0FBb0NLLE9BQXBDLEVBQTZDQyxJQUFJLEdBQUcsRUFBcEQsRUFBd0Q7QUFDckYsTUFBSSxDQUFDTCxnQkFBRU0sR0FBRixDQUFNdkMsMEJBQU4sRUFBa0NxQyxPQUFsQyxDQUFMLEVBQWlEO0FBQy9DLFVBQU0sSUFBSUYsbUJBQU9LLG1CQUFYLENBQWdDLDhCQUE2QkgsT0FBUSxLQUF0QyxHQUNsQyxRQUFPSixnQkFBRXZCLElBQUYsQ0FBT1YsMEJBQVAsQ0FBbUMsMEJBRHZDLENBQU47QUFFRDs7QUFDRCxTQUFPLE1BQU0sS0FBS0EsMEJBQTBCLENBQUNxQyxPQUFELENBQS9CLEVBQTBDQyxJQUExQyxDQUFiO0FBQ0QsQ0FORDs7ZUFRZXZDLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgbG9nIGZyb20gJy4uL2xvZ2dlcic7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbmNvbnN0IEVYVEVOU0lPTl9DT01NQU5EU19NQVBQSU5HID0ge1xuICBzZXRWYWx1ZTogJ21hY29zU2V0VmFsdWUnLFxuICBjbGljazogJ21hY29zQ2xpY2snLFxuICBzY3JvbGw6ICdtYWNvc1Njcm9sbCcsXG4gIHN3aXBlOiAnbWFjb3NTd2lwZScsXG4gIHJpZ2h0Q2xpY2s6ICdtYWNvc1JpZ2h0Q2xpY2snLFxuICBob3ZlcjogJ21hY29zSG92ZXInLFxuICBkb3VibGVDbGljazogJ21hY29zRG91YmxlQ2xpY2snLFxuICBjbGlja0FuZERyYWc6ICdtYWNvc0NsaWNrQW5kRHJhZycsXG4gIGNsaWNrQW5kRHJhZ0FuZEhvbGQ6ICdtYWNvc0NsaWNrQW5kRHJhZ0FuZEhvbGQnLFxuICBrZXlzOiAnbWFjb3NLZXlzJyxcblxuICB0YXA6ICdtYWNvc1RhcCcsXG4gIGRvdWJsZVRhcDogJ21hY29zRG91YmxlVGFwJyxcbiAgcHJlc3M6ICdtYWNvc1ByZXNzJyxcbiAgcHJlc3NBbmREcmFnOiAnbWFjb3NQcmVzc0FuZERyYWcnLFxuICBwcmVzc0FuZERyYWdBbmRIb2xkOiAnbWFjb3NQcmVzc0FuZERyYWdBbmRIb2xkJyxcblxuICBzb3VyY2U6ICdtYWNvc1NvdXJjZScsXG5cbiAgbGF1bmNoQXBwOiAnbWFjb3NMYXVuY2hBcHAnLFxuICBhY3RpdmF0ZUFwcDogJ21hY29zQWN0aXZhdGVBcHAnLFxuICB0ZXJtaW5hdGVBcHA6ICdtYWNvc1Rlcm1pbmF0ZUFwcCcsXG4gIHF1ZXJ5QXBwU3RhdGU6ICdtYWNvc1F1ZXJ5QXBwU3RhdGUnLFxuXG4gIGFwcGxlU2NyaXB0OiAnbWFjb3NFeGVjQXBwbGVTY3JpcHQnLFxuXG4gIHN0YXJ0UmVjb3JkaW5nU2NyZWVuOiAnc3RhcnRSZWNvcmRpbmdTY3JlZW4nLFxuICBzdG9wUmVjb3JkaW5nU2NyZWVuOiAnc3RvcFJlY29yZGluZ1NjcmVlbicsXG59O1xuXG5jb21tYW5kcy5leGVjdXRlID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoc2NyaXB0LCBhcmdzKSB7XG4gIGlmIChzY3JpcHQubWF0Y2goL15tYWNvczovKSkge1xuICAgIGxvZy5pbmZvKGBFeGVjdXRpbmcgZXh0ZW5zaW9uIGNvbW1hbmQgJyR7c2NyaXB0fSdgKTtcbiAgICBzY3JpcHQgPSBzY3JpcHQucmVwbGFjZSgvXm1hY29zOi8sICcnKS50cmltKCk7XG4gICAgcmV0dXJuIGF3YWl0IHRoaXMuZXhlY3V0ZU1hY29zQ29tbWFuZChzY3JpcHQsIF8uaXNBcnJheShhcmdzKSA/IGFyZ3NbMF0gOiBhcmdzKTtcbiAgfVxuICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbn07XG5cbmNvbW1hbmRzLmV4ZWN1dGVNYWNvc0NvbW1hbmQgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlTWFjb3NDb21tYW5kIChjb21tYW5kLCBvcHRzID0ge30pIHtcbiAgaWYgKCFfLmhhcyhFWFRFTlNJT05fQ09NTUFORFNfTUFQUElORywgY29tbWFuZCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoYFVua25vd24gZXh0ZW5zaW9uIGNvbW1hbmQgXCIke2NvbW1hbmR9XCIuIGAgK1xuICAgICAgYE9ubHkgJHtfLmtleXMoRVhURU5TSU9OX0NPTU1BTkRTX01BUFBJTkcpfSBjb21tYW5kcyBhcmUgc3VwcG9ydGVkLmApO1xuICB9XG4gIHJldHVybiBhd2FpdCB0aGlzW0VYVEVOU0lPTl9DT01NQU5EU19NQVBQSU5HW2NvbW1hbmRdXShvcHRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvZXhlY3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -7,13 +7,13 @@ exports.default = exports.commands = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
10
- var _appiumSupport = require("appium-support");
10
+ var _support = require("@appium/support");
11
11
 
12
12
  const commands = {};
13
13
  exports.commands = commands;
14
14
 
15
15
  commands.findElOrEls = async function findElOrEls(strategy, selector, mult, context) {
16
- context = _appiumSupport.util.unwrapElement(context);
16
+ context = _support.util.unwrapElement(context);
17
17
  const endpoint = `/element${context ? `/${context}/element` : ''}${mult ? 's' : ''}`;
18
18
 
19
19
  if (strategy === '-ios predicate string') {
@@ -32,4 +32,4 @@ var _default = commands;
32
32
  exports.default = _default;require('source-map-support').install();
33
33
 
34
34
 
35
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9maW5kLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiZmluZEVsT3JFbHMiLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibXVsdCIsImNvbnRleHQiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsImVuZHBvaW50Iiwid2RhIiwicHJveHkiLCJjb21tYW5kIiwidXNpbmciLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOzs7QUFHQUEsUUFBUSxDQUFDQyxXQUFULEdBQXVCLGVBQWVBLFdBQWYsQ0FBNEJDLFFBQTVCLEVBQXNDQyxRQUF0QyxFQUFnREMsSUFBaEQsRUFBc0RDLE9BQXRELEVBQStEO0FBQ3BGQSxFQUFBQSxPQUFPLEdBQUdDLG9CQUFLQyxhQUFMLENBQW1CRixPQUFuQixDQUFWO0FBQ0EsUUFBTUcsUUFBUSxHQUFJLFdBQVVILE9BQU8sR0FBSSxJQUFHQSxPQUFRLFVBQWYsR0FBMkIsRUFBRyxHQUFFRCxJQUFJLEdBQUcsR0FBSCxHQUFTLEVBQUcsRUFBbkY7O0FBRUEsTUFBSUYsUUFBUSxLQUFLLHVCQUFqQixFQUEwQztBQUN4Q0EsSUFBQUEsUUFBUSxHQUFHLGtCQUFYO0FBQ0QsR0FGRCxNQUVPLElBQUlBLFFBQVEsS0FBSyxrQkFBakIsRUFBcUM7QUFDMUNBLElBQUFBLFFBQVEsR0FBRyxhQUFYO0FBQ0Q7O0FBRUQsU0FBTyxNQUFNLEtBQUtPLEdBQUwsQ0FBU0MsS0FBVCxDQUFlQyxPQUFmLENBQXVCSCxRQUF2QixFQUFpQyxNQUFqQyxFQUF5QztBQUNwREksSUFBQUEsS0FBSyxFQUFFVixRQUQ2QztBQUVwRFcsSUFBQUEsS0FBSyxFQUFFVjtBQUY2QyxHQUF6QyxDQUFiO0FBSUQsQ0FkRDs7ZUFrQmVILFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8vIFRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgbG9va3VwIGJ5IGltYWdlIHdvcmtpbmdcbmNvbW1hbmRzLmZpbmRFbE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gZmluZEVsT3JFbHMgKHN0cmF0ZWd5LCBzZWxlY3RvciwgbXVsdCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gdXRpbC51bndyYXBFbGVtZW50KGNvbnRleHQpO1xuICBjb25zdCBlbmRwb2ludCA9IGAvZWxlbWVudCR7Y29udGV4dCA/IGAvJHtjb250ZXh0fS9lbGVtZW50YCA6ICcnfSR7bXVsdCA/ICdzJyA6ICcnfWA7XG5cbiAgaWYgKHN0cmF0ZWd5ID09PSAnLWlvcyBwcmVkaWNhdGUgc3RyaW5nJykge1xuICAgIHN0cmF0ZWd5ID0gJ3ByZWRpY2F0ZSBzdHJpbmcnO1xuICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSAnLWlvcyBjbGFzcyBjaGFpbicpIHtcbiAgICBzdHJhdGVneSA9ICdjbGFzcyBjaGFpbic7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZChlbmRwb2ludCwgJ1BPU1QnLCB7XG4gICAgdXNpbmc6IHN0cmF0ZWd5LFxuICAgIHZhbHVlOiBzZWxlY3RvcixcbiAgfSk7XG59O1xuXG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbmQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
35
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9maW5kLmpzIl0sIm5hbWVzIjpbImNvbW1hbmRzIiwiZmluZEVsT3JFbHMiLCJzdHJhdGVneSIsInNlbGVjdG9yIiwibXVsdCIsImNvbnRleHQiLCJ1dGlsIiwidW53cmFwRWxlbWVudCIsImVuZHBvaW50Iiwid2RhIiwicHJveHkiLCJjb21tYW5kIiwidXNpbmciLCJ2YWx1ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOzs7QUFHQUEsUUFBUSxDQUFDQyxXQUFULEdBQXVCLGVBQWVBLFdBQWYsQ0FBNEJDLFFBQTVCLEVBQXNDQyxRQUF0QyxFQUFnREMsSUFBaEQsRUFBc0RDLE9BQXRELEVBQStEO0FBQ3BGQSxFQUFBQSxPQUFPLEdBQUdDLGNBQUtDLGFBQUwsQ0FBbUJGLE9BQW5CLENBQVY7QUFDQSxRQUFNRyxRQUFRLEdBQUksV0FBVUgsT0FBTyxHQUFJLElBQUdBLE9BQVEsVUFBZixHQUEyQixFQUFHLEdBQUVELElBQUksR0FBRyxHQUFILEdBQVMsRUFBRyxFQUFuRjs7QUFFQSxNQUFJRixRQUFRLEtBQUssdUJBQWpCLEVBQTBDO0FBQ3hDQSxJQUFBQSxRQUFRLEdBQUcsa0JBQVg7QUFDRCxHQUZELE1BRU8sSUFBSUEsUUFBUSxLQUFLLGtCQUFqQixFQUFxQztBQUMxQ0EsSUFBQUEsUUFBUSxHQUFHLGFBQVg7QUFDRDs7QUFFRCxTQUFPLE1BQU0sS0FBS08sR0FBTCxDQUFTQyxLQUFULENBQWVDLE9BQWYsQ0FBdUJILFFBQXZCLEVBQWlDLE1BQWpDLEVBQXlDO0FBQ3BESSxJQUFBQSxLQUFLLEVBQUVWLFFBRDZDO0FBRXBEVyxJQUFBQSxLQUFLLEVBQUVWO0FBRjZDLEdBQXpDLENBQWI7QUFJRCxDQWREOztlQWtCZUgsUSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHV0aWwgfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbi8vIFRoaXMgaXMgbmVlZGVkIHRvIG1ha2UgbG9va3VwIGJ5IGltYWdlIHdvcmtpbmdcbmNvbW1hbmRzLmZpbmRFbE9yRWxzID0gYXN5bmMgZnVuY3Rpb24gZmluZEVsT3JFbHMgKHN0cmF0ZWd5LCBzZWxlY3RvciwgbXVsdCwgY29udGV4dCkge1xuICBjb250ZXh0ID0gdXRpbC51bndyYXBFbGVtZW50KGNvbnRleHQpO1xuICBjb25zdCBlbmRwb2ludCA9IGAvZWxlbWVudCR7Y29udGV4dCA/IGAvJHtjb250ZXh0fS9lbGVtZW50YCA6ICcnfSR7bXVsdCA/ICdzJyA6ICcnfWA7XG5cbiAgaWYgKHN0cmF0ZWd5ID09PSAnLWlvcyBwcmVkaWNhdGUgc3RyaW5nJykge1xuICAgIHN0cmF0ZWd5ID0gJ3ByZWRpY2F0ZSBzdHJpbmcnO1xuICB9IGVsc2UgaWYgKHN0cmF0ZWd5ID09PSAnLWlvcyBjbGFzcyBjaGFpbicpIHtcbiAgICBzdHJhdGVneSA9ICdjbGFzcyBjaGFpbic7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZChlbmRwb2ludCwgJ1BPU1QnLCB7XG4gICAgdXNpbmc6IHN0cmF0ZWd5LFxuICAgIHZhbHVlOiBzZWxlY3RvcixcbiAgfSk7XG59O1xuXG5cbmV4cG9ydCB7IGNvbW1hbmRzIH07XG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2ZpbmQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -7,16 +7,16 @@ exports.default = void 0;
7
7
 
8
8
  require("source-map-support/register");
9
9
 
10
- var _appiumSupport = require("appium-support");
10
+ var _support = require("@appium/support");
11
11
 
12
- var _appiumBaseDriver = require("appium-base-driver");
12
+ var _baseDriver = require("@appium/base-driver");
13
13
 
14
14
  const commands = {};
15
15
 
16
16
  function extractUuid(options = {}, keyNames = ['elementId', 'element']) {
17
17
  for (const name of keyNames) {
18
18
  if (options[name]) {
19
- const result = _appiumSupport.util.unwrapElement(options[name]);
19
+ const result = _support.util.unwrapElement(options[name]);
20
20
 
21
21
  if (result) {
22
22
  return result;
@@ -31,7 +31,7 @@ function requireUuid(options = {}, keyNames = ['elementId', 'element']) {
31
31
  const result = extractUuid(options, keyNames);
32
32
 
33
33
  if (!result) {
34
- throw new _appiumBaseDriver.errors.InvalidArgumentError(`${keyNames[0]} field is mandatory`);
34
+ throw new _baseDriver.errors.InvalidArgumentError(`${keyNames[0]} field is mandatory`);
35
35
  }
36
36
 
37
37
  return result;
@@ -162,7 +162,7 @@ commands.macosClickAndDrag = async function macosClickAndDrag(opts = {}) {
162
162
  } = opts;
163
163
  const url = sourceUuid && destUuid ? `/wda/element/${sourceUuid}/clickAndDrag` : '/wda/clickAndDrag';
164
164
 
165
- const dest = destUuid && _appiumSupport.util.wrapElement(destUuid);
165
+ const dest = destUuid && _support.util.wrapElement(destUuid);
166
166
 
167
167
  return await this.wda.proxy.command(url, 'POST', {
168
168
  startX,
@@ -190,7 +190,7 @@ commands.macosClickAndDragAndHold = async function macosClickAndDragAndHold(opts
190
190
  } = opts;
191
191
  const url = sourceUuid && destUuid ? `/wda/element/${sourceUuid}/clickAndDragAndHold` : '/wda/clickAndDragAndHold';
192
192
 
193
- const dest = destUuid && _appiumSupport.util.wrapElement(destUuid);
193
+ const dest = destUuid && _support.util.wrapElement(destUuid);
194
194
 
195
195
  return await this.wda.proxy.command(url, 'POST', {
196
196
  startX,
@@ -276,7 +276,7 @@ commands.macosPressAndDrag = async function macosPressAndDrag(opts = {}) {
276
276
  } = opts;
277
277
  const url = sourceUuid && destUuid ? `/wda/element/${sourceUuid}/pressAndDrag` : '/wda/pressAndDrag';
278
278
 
279
- const dest = destUuid && _appiumSupport.util.wrapElement(destUuid);
279
+ const dest = destUuid && _support.util.wrapElement(destUuid);
280
280
 
281
281
  return await this.wda.proxy.command(url, 'POST', {
282
282
  startX,
@@ -304,7 +304,7 @@ commands.macosPressAndDragAndHold = async function macosPressAndDragAndHold(opts
304
304
  } = opts;
305
305
  const url = sourceUuid && destUuid ? `/wda/element/${sourceUuid}/pressAndDragAndHold` : '/wda/pressAndDragAndHold';
306
306
 
307
- const dest = destUuid && _appiumSupport.util.wrapElement(destUuid);
307
+ const dest = destUuid && _support.util.wrapElement(destUuid);
308
308
 
309
309
  return await this.wda.proxy.command(url, 'POST', {
310
310
  startX,
@@ -323,4 +323,4 @@ var _default = commands;
323
323
  exports.default = _default;require('source-map-support').install();
324
324
 
325
325
 
326
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9nZXN0dXJlcy5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsImV4dHJhY3RVdWlkIiwib3B0aW9ucyIsImtleU5hbWVzIiwibmFtZSIsInJlc3VsdCIsInV0aWwiLCJ1bndyYXBFbGVtZW50IiwicmVxdWlyZVV1aWQiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIm1hY29zU2V0VmFsdWUiLCJvcHRzIiwidXVpZCIsInZhbHVlIiwidGV4dCIsImtleU1vZGlmaWVyRmxhZ3MiLCJ3ZGEiLCJwcm94eSIsImNvbW1hbmQiLCJtYWNvc0NsaWNrIiwieCIsInkiLCJ1cmwiLCJtYWNvc1Njcm9sbCIsImRlbHRhWCIsImRlbHRhWSIsIm1hY29zU3dpcGUiLCJkaXJlY3Rpb24iLCJ2ZWxvY2l0eSIsIm1hY29zUmlnaHRDbGljayIsIm1hY29zSG92ZXIiLCJtYWNvc0RvdWJsZUNsaWNrIiwibWFjb3NDbGlja0FuZERyYWciLCJzb3VyY2VVdWlkIiwiZGVzdFV1aWQiLCJzdGFydFgiLCJzdGFydFkiLCJlbmRYIiwiZW5kWSIsImR1cmF0aW9uIiwiZGVzdCIsIndyYXBFbGVtZW50IiwibWFjb3NDbGlja0FuZERyYWdBbmRIb2xkIiwiaG9sZER1cmF0aW9uIiwibWFjb3NLZXlzIiwia2V5cyIsIm1hY29zUHJlc3NBbmRIb2xkIiwibWFjb3NUYXAiLCJtYWNvc0RvdWJsZVRhcCIsIm1hY29zUHJlc3NBbmREcmFnIiwibWFjb3NQcmVzc0FuZERyYWdBbmRIb2xkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBRUEsU0FBU0MsV0FBVCxDQUFzQkMsT0FBTyxHQUFHLEVBQWhDLEVBQW9DQyxRQUFRLEdBQUcsQ0FBQyxXQUFELEVBQWMsU0FBZCxDQUEvQyxFQUF5RTtBQUN2RSxPQUFLLE1BQU1DLElBQVgsSUFBbUJELFFBQW5CLEVBQTZCO0FBQzNCLFFBQUlELE9BQU8sQ0FB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OztlQXdCZWhCLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuZnVuY3Rpb24gZXh0cmFjdFV1aWQgKG9wdGlvbnMgPSB7fSwga2V5TmFtZXMgPSBbJ2VsZW1lbnRJZCcsICdlbGVtZW50J10pIHtcbiAgZm9yIChjb25zdCBuYW1lIG9mIGtleU5hbWVzKSB7XG4gICAgaWYgKG9wdGlvbnNbbmFtZV0pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWwudW53cmFwRWxlbWVudChvcHRpb25zW25hbWVdKTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVVdWlkIChvcHRpb25zID0ge30sIGtleU5hbWVzID0gWydlbGVtZW50SWQnLCAnZWxlbWVudCddKSB7XG4gIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RVdWlkKG9wdGlvbnMsIGtleU5hbWVzKTtcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAke2tleU5hbWVzWzBdfSBmaWVsZCBpcyBtYW5kYXRvcnlgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2V0VmFsdWVPcHRpb25zXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIHNldCB2YWx1ZSBmb3JcbiAqIEBwcm9wZXJ0eSB7Kn0gdmFsdWUgdmFsdWUgdG8gc2V0LiBDb3VsZCBhbHNvIGJlIGFuIGFycmF5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCB0ZXh0IHRvIHNldC4gSWYgYm90aCB2YWx1ZSBhbmQgdGV4dCBhcmUgc2V0XG4gKiB0aGVuIGB2YWx1ZWAgaXMgcHJlZmVycmVkXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSB0aGUgZWxlbWVudCB2YWx1ZSBpcyBiZWluZyBzZXQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBTZXQgdmFsdWUgdG8gdGhlIGdpdmVuIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0ge1NldFZhbHVlT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1NldFZhbHVlID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NTZXRWYWx1ZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSByZXF1aXJlVXVpZChvcHRzKTtcbiAgY29uc3QgeyB2YWx1ZSwgdGV4dCwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7dXVpZH0vdmFsdWVgLCAnUE9TVCcsIHtcbiAgICB2YWx1ZSwgdGV4dCxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2xpY2tPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIGNsaWNrLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgY2xpY2sgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBjbGljayBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIGNsaWNrIGdlc3R1cmUgb24gYW4gZWxlbWVudCBvciBieSByZWxhdGl2ZS9hYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7Q2xpY2tPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zQ2xpY2sgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0NsaWNrIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IHgsIHksIGtleU1vZGlmaWVyRmxhZ3MgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL2VsZW1lbnQvJHt1dWlkfS9jbGlja2AgOiAnL3dkYS9jbGljayc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2Nyb2xsT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBiZSBzY3JvbGxlZC4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IHNjcm9sbCBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBzY3JvbGwgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGRlbHRhWCBob3Jpem9udGFsIGRlbHRhIGFzIGZsb2F0IG51bWJlclxuICogQHByb3BlcnR5IHshbnVtYmVyfSBkZWx0YVkgdmVydGljYWwgZGVsdGEgYXMgZmxvYXQgbnVtYmVyXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBzY3JvbGwgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBzY3JvbGwgZ2VzdHVyZSBvbiBhbiBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtTY3JvbGxPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zU2Nyb2xsID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NTY3JvbGwgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHtcbiAgICB4LCB5LFxuICAgIGRlbHRhWCwgZGVsdGFZLFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L3Njcm9sbGAgOiAnL3dkYS9zY3JvbGwnO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIGRlbHRhWCwgZGVsdGFZLFxuICAgIHgsIHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN3aXBlT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBiZSBzd2lwZWQuIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBzd2lwZSBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBzd2lwZSBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gZGlyZWN0aW9uIGVpdGhlciAndXAnLCAnZG93bicsICdsZWZ0JyBvciAncmlnaHQnXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHZlbG9jaXR5IFRoZSB2YWx1ZSBpcyBtZWFzdXJlZCBpbiBwaXhlbHMgcGVyIHNlY29uZCBhbmQgc2FtZVxuICogdmFsdWVzIGNvdWxkIGJlaGF2ZSBkaWZmZXJlbnRseSBvbiBkaWZmZXJlbnQgZGV2aWNlcyBkZXBlbmRpbmcgb24gdGhlaXIgZGlzcGxheVxuICogZGVuc2l0eS4gSGlnaGVyIHZhbHVlcyBtYWtlIHN3aXBlIGdlc3R1cmUgZmFzdGVyICh3aGljaCB1c3VhbGx5IHNjcm9sbHMgbGFyZ2VyXG4gKiBhcmVhcyBpZiB3ZSBhcHBseSBpdCB0byBhIGxpc3QpIGFuZCBsb3dlciB2YWx1ZXMgc2xvdyBpdCBkb3duLlxuICogT25seSB2YWx1ZXMgZ3JlYXRlciB0aGFuIHplcm8gaGF2ZSBlZmZlY3QuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBzY3JvbGwgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBzd2lwZSBnZXN0dXJlIG9uIGFuIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0ge1N3aXBlT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1N3aXBlID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NTd2lwZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3Qge1xuICAgIHgsIHksXG4gICAgZGlyZWN0aW9uLFxuICAgIHZlbG9jaXR5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L3N3aXBlYCA6IGAvd2RhL3N3aXBlYDtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGRpcmVjdGlvbixcbiAgICB2ZWxvY2l0eSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUmlnaHRDbGlja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gY2xpY2suIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBjbGljayBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBjbGljayBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGNsaWNrIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gcmlnaHQgY2xpY2sgZ2VzdHVyZSBvbiBhbiBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtSaWdodENsaWNrT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1JpZ2h0Q2xpY2sgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1JpZ2h0Q2xpY2sgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHsgeCwgeSwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS9yaWdodENsaWNrYCA6ICcvd2RhL3JpZ2h0Q2xpY2snO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHgsIHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEhvdmVyT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBob3Zlci4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IGNsaWNrIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IGNsaWNrIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgaG92ZXIgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBob3ZlciBnZXN0dXJlIG9uIGFuIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge0hvdmVyT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc0hvdmVyID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NIb3ZlciAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3QgeyB4LCB5LCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L2hvdmVyYCA6ICcvd2RhL2hvdmVyJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEb3VibGVDbGlja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gZG91YmxlIGNsaWNrLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgY2xpY2sgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBkb3VibGUgY2xpY2sgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBkb3VibGUgY2xpY2sgZ2VzdHVyZSBvbiBhbiBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtEb3VibGVDbGlja09wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NEb3VibGVDbGljayA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zRG91YmxlQ2xpY2sgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHsgeCwgeSwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS9kb3VibGVDbGlja2AgOiAnL3dkYS9kb3VibGVDbGljayc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2xpY2tBbmREcmFnT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzb3VyY2VFbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBzdGFydCB0aGUgZHJhZyBmcm9tLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBkZXN0aW5hdGlvbkVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGRlc3RpbmF0aW9uRWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gZW5kIHRoZSBkcmFnIG9uLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBzb3VyY2VFbGVtZW50YCBtdXN0IGJlIHByb3ZpZGVkIG9yIGBzdGFydFhgLCBgc3RhcnRZYCwgYGVuZFhgLCBgZW5kWWAgY29vcmRpbmF0ZXNcbiAqIG11c3QgYmUgc2V0LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFggc3RhcnRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WSBzdGFydGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWCBlbmRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFkgZW5kaW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHshbnVtYmVyfSBkdXJhdGlvbiBsb25nIGNsaWNrIGR1cmF0aW9uIGluIGZsb2F0IHNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGRyYWcgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBsb25nIGNsaWNrIGFuZCBkcmFnIGdlc3R1cmUgb24gYW4gZWxlbWVudCBvciBieSBhYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7Q2xpY2tBbmREcmFnT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc0NsaWNrQW5kRHJhZyA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zQ2xpY2tBbmREcmFnIChvcHRzID0ge30pIHtcbiAgY29uc3Qgc291cmNlVXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnc291cmNlRWxlbWVudElkJywgJ3NvdXJjZUVsZW1lbnQnXSk7XG4gIGNvbnN0IGRlc3RVdWlkID0gZXh0cmFjdFV1aWQob3B0cywgWydkZXN0aW5hdGlvbkVsZW1lbnRJZCcsICdkZXN0aW5hdGlvbkVsZW1lbnQnXSk7XG4gIGNvbnN0IHtcbiAgICBzdGFydFgsIHN0YXJ0WSxcbiAgICBlbmRYLCBlbmRZLFxuICAgIGR1cmF0aW9uLFxuICAgIGtleU1vZGlmaWVyRmxhZ3NcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHNvdXJjZVV1aWQgJiYgZGVzdFV1aWRcbiAgICA/IGAvd2RhL2VsZW1lbnQvJHtzb3VyY2VVdWlkfS9jbGlja0FuZERyYWdgXG4gICAgOiAnL3dkYS9jbGlja0FuZERyYWcnO1xuICBjb25zdCBkZXN0ID0gZGVzdFV1aWQgJiYgdXRpbC53cmFwRWxlbWVudChkZXN0VXVpZCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbixcbiAgICBkZXN0LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDbGlja0FuZERyYWdBbmRIb2xkT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzb3VyY2VFbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBzdGFydCB0aGUgZHJhZyBmcm9tLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBkZXN0aW5hdGlvbkVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGRlc3RpbmF0aW9uRWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gZW5kIHRoZSBkcmFnIG9uLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBzb3VyY2VFbGVtZW50YCBtdXN0IGJlIHByb3ZpZGVkIG9yIGBzdGFydFhgLCBgc3RhcnRZYCwgYGVuZFhgLCBgZW5kWWAgY29vcmRpbmF0ZXNcbiAqIG11c3QgYmUgc2V0LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFggc3RhcnRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WSBzdGFydGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWCBlbmRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFkgZW5kaW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHshbnVtYmVyfSBkdXJhdGlvbiBsb25nIGNsaWNrIGR1cmF0aW9uIGluIGZsb2F0IHNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdmVsb2NpdHkgZHJhZ2dpbmcgdmVsb2NpdHkgaW4gcGl4ZWxzIHBlciBzZWNvbmQuXG4gKiBJZiBub3QgcHJvdmlkZWQgdGhlbiB0aGUgZGVmYXVsdCB2ZWxvY2l0eSBpcyB1c2VkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZ2VzdHVyZXZlbG9jaXR5XG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBkcmFnIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gbG9uZyBjbGljaywgZHJhZyBhbmQgaG9sZCBnZXN0dXJlIG9uIGFuIGVsZW1lbnQgb3IgYnkgYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge0NsaWNrQW5kRHJhZ0FuZEhvbGRPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zQ2xpY2tBbmREcmFnQW5kSG9sZCA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zQ2xpY2tBbmREcmFnQW5kSG9sZCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvdXJjZVV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ3NvdXJjZUVsZW1lbnRJZCcsICdzb3VyY2VFbGVtZW50J10pO1xuICBjb25zdCBkZXN0VXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnZGVzdGluYXRpb25FbGVtZW50SWQnLCAnZGVzdGluYXRpb25FbGVtZW50J10pO1xuICBjb25zdCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbiwgaG9sZER1cmF0aW9uLFxuICAgIHZlbG9jaXR5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3NcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHNvdXJjZVV1aWQgJiYgZGVzdFV1aWRcbiAgICA/IGAvd2RhL2VsZW1lbnQvJHtzb3VyY2VVdWlkfS9jbGlja0FuZERyYWdBbmRIb2xkYFxuICAgIDogJy93ZGEvY2xpY2tBbmREcmFnQW5kSG9sZCc7XG4gIGNvbnN0IGRlc3QgPSBkZXN0VXVpZCAmJiB1dGlsLndyYXBFbGVtZW50KGRlc3RVdWlkKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICBzdGFydFgsIHN0YXJ0WSxcbiAgICBlbmRYLCBlbmRZLFxuICAgIGR1cmF0aW9uLCBob2xkRHVyYXRpb24sXG4gICAgdmVsb2NpdHksXG4gICAgZGVzdCxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gS2V5T3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfSBrZXkgYSBzdHJpbmcsIHRoYXQgcmVwcmVzZW50cyBhIGtleSB0byB0eXBlIChzZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNTAwNjA0LXR5cGVrZXk/bGFuZ3VhZ2U9b2JqY1xuICogYW5kIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5Ym9hcmRrZXk/bGFuZ3VhZ2U9b2JqYylcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gbW9kaWZpZXJGbGFncyBhIHNldCBvZiBtb2RpZmllciBmbGFnc1xuICogKGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFncz9sYW5ndWFnZT1vYmpjKVxuICogdG8gdXNlIHdoZW4gdHlwaW5nIHRoZSBrZXkuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBLZXlzT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBzZW5kIGtleXMgdG8uXG4gKiBJZiB0aGUgZWxlbWVudCBpcyBub3QgcHJvdmlkZWQgdGhlbiB0aGUga2V5cyB3aWxsIGJlIHNlbnQgdG8gdGhlIGN1cnJlbnQgYXBwbGljYXRpb24uXG4gKiBAcHJvcGVydHkgeyFBcnJheTxLZXlPcHRpb25zfHN0cmluZz59IGtleXMgQXJyYXkgb2Yga2V5cyB0byB0eXBlLlxuICogRWFjaCBpdGVtIGNvdWxkIGVpdGhlciBiZSBhIHN0cmluZywgdGhhdCByZXByZXNlbnRzIGEga2V5IGl0c2VsZiAoc2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTUwMDYwNC10eXBla2V5P2xhbmd1YWdlPW9iamNcbiAqIGFuZCBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleWJvYXJka2V5P2xhbmd1YWdlPW9iamMpXG4gKiBvciBhIGRpY3Rpb25hcnksIGlmIHRoZSBrZXkgc2hvdWxkIGFsc28gYmUgZW50ZXJlZCB3aXRoIG1vZGlmaWVycy5cbiAqL1xuXG4vKipcbiAqIFNlbmQga2V5cyB0byB0aGUgZ2l2ZW4gZWxlbWVudCBvciB0byB0aGUgYXBwbGljYXRpb24gdW5kZXIgdGVzdFxuICpcbiAqIEBwYXJhbSB7S2V5c09wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NLZXlzID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NLZXlzIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IGtleXMgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0va2V5c2AgOiAnL3dkYS9rZXlzJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHsga2V5cyB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUHJlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBUb3VjaCBCYXIgZWxlbWVudCB0byBiZSBwcmVzc2VkLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgVG91Y2ggQmFyIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IGxvbmcgY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgbG9uZyBjbGljayBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gZHVyYXRpb24gdGhlIG51bWJlciBvZiBmbG9hdCBzZWNvbmRzIHRvIGhvbGQgdGhlIG1vdXNlIGJ1dHRvblxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgY2xpY2sgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBwcmVzcyBnZXN0dXJlIG9uIGEgVG91Y2ggQmFyIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge1ByZXNzT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1ByZXNzQW5kSG9sZCA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zUHJlc3NBbmRIb2xkIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IHgsIHksIGR1cmF0aW9uLCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L3ByZXNzYCA6ICcvd2RhL3ByZXNzJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGR1cmF0aW9uLFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBUYXBPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBUb3VjaCBCYXIgZWxlbWVudCB0byB0YXAuIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBUb3VjaCBCYXIgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgY2xpY2sgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBjbGljayBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIHRhcCBnZXN0dXJlIG9uIGEgVG91Y2ggQmFyIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge1RhcE9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NUYXAgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1RhcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3QgeyB4LCB5LCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L3RhcGAgOiAnL3dkYS90YXAnO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHgsIHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERvdWJsZVRhcE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIFRvdWNoIEJhciBlbGVtZW50IHRvIHRhcC4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIFRvdWNoIEJhciBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBjbGljayBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBjbGljayBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGNsaWNrIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gdGFwIGdlc3R1cmUgb24gYSBUb3VjaCBCYXIgZWxlbWVudCBvciBieSByZWxhdGl2ZS9hYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7RG91YmxlVGFwT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc0RvdWJsZVRhcCA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zRG91YmxlVGFwIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IHgsIHksIGtleU1vZGlmaWVyRmxhZ3MgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0vZG91YmxlVGFwYCA6ICcvd2RhL2RvdWJsZVRhcCc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUHJlc3NBbmREcmFnT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzb3VyY2VFbGVtZW50SWQgdXVpZCBvZiBhIFRvdWNoIEJhciBlbGVtZW50IHRvIHN0YXJ0IHRoZSBkcmFnIGZyb20uIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBhbmQgYGRlc3RpbmF0aW9uRWxlbWVudGAgbXVzdCBiZSBwcm92aWRlZCBvciBgc3RhcnRYYCwgYHN0YXJ0WWAsIGBlbmRYYCwgYGVuZFlgIGNvb3JkaW5hdGVzXG4gKiBtdXN0IGJlIHNldC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZGVzdGluYXRpb25FbGVtZW50SWQgdXVpZCBvZiBhIFRvdWNoIEJhciBlbGVtZW50IHRvIGVuZCB0aGUgZHJhZyBvbi4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIGFuZCBgc291cmNlRWxlbWVudGAgbXVzdCBiZSBwcm92aWRlZCBvciBgc3RhcnRYYCwgYHN0YXJ0WWAsIGBlbmRYYCwgYGVuZFlgIGNvb3JkaW5hdGVzXG4gKiBtdXN0IGJlIHNldC5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRYIHN0YXJ0aW5nIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFkgc3RhcnRpbmcgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFggZW5kaW5nIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBlbmRZIGVuZGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gZHVyYXRpb24gbG9uZyBjbGljayBkdXJhdGlvbiBpbiBmbG9hdCBzZWNvbmRzXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBkcmFnIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gbG9uZyBwcmVzcyBhbmQgZHJhZyBnZXN0dXJlIG9uIGEgVG91Y2ggQmFyIGVsZW1lbnQgb3IgYnkgYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge1ByZXNzQW5kRHJhZ09wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NQcmVzc0FuZERyYWcgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1ByZXNzQW5kRHJhZyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvdXJjZVV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ3NvdXJjZUVsZW1lbnRJZCcsICdzb3VyY2VFbGVtZW50J10pO1xuICBjb25zdCBkZXN0VXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnZGVzdGluYXRpb25FbGVtZW50SWQnLCAnZGVzdGluYXRpb25FbGVtZW50J10pO1xuICBjb25zdCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbixcbiAgICBrZXlNb2RpZmllckZsYWdzXG4gIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSBzb3VyY2VVdWlkICYmIGRlc3RVdWlkXG4gICAgPyBgL3dkYS9lbGVtZW50LyR7c291cmNlVXVpZH0vcHJlc3NBbmREcmFnYFxuICAgIDogJy93ZGEvcHJlc3NBbmREcmFnJztcbiAgY29uc3QgZGVzdCA9IGRlc3RVdWlkICYmIHV0aWwud3JhcEVsZW1lbnQoZGVzdFV1aWQpO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgZHVyYXRpb24sXG4gICAgZGVzdCxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUHJlc3NBbmREcmFnQW5kSG9sZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc291cmNlRWxlbWVudElkIHV1aWQgb2YgYSBUb3VjaCBCYXIgZWxlbWVudCB0byBzdGFydCB0aGUgZHJhZyBmcm9tLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBkZXN0aW5hdGlvbkVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGRlc3RpbmF0aW9uRWxlbWVudElkIHV1aWQgb2YgYSBUb3VjaCBCYXIgZWxlbWVudCB0byBlbmQgdGhlIGRyYWcgb24uIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBhbmQgYHNvdXJjZUVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WCBzdGFydGluZyBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRZIHN0YXJ0aW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBlbmRYIGVuZGluZyBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWSBlbmRpbmcgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGR1cmF0aW9uIGxvbmcgY2xpY2sgZHVyYXRpb24gaW4gZmxvYXQgc2Vjb25kc1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSB2ZWxvY2l0eSBkcmFnZ2luZyB2ZWxvY2l0eSBpbiBwaXhlbHMgcGVyIHNlY29uZC5cbiAqIElmIG5vdCBwcm92aWRlZCB0aGVuIHRoZSBkZWZhdWx0IHZlbG9jaXR5IGlzIHVzZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlnZXN0dXJldmVsb2NpdHlcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGRyYWcgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBwcmVzcywgZHJhZyBhbmQgaG9sZCBnZXN0dXJlIG9uIGEgVG91Y2ggQmFyIGVsZW1lbnQgb3IgYnkgYWJzb2x1dGUgVG91Y2ggQmFyIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtQcmVzc0FuZERyYWdBbmRIb2xkT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1ByZXNzQW5kRHJhZ0FuZEhvbGQgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1ByZXNzQW5kRHJhZ0FuZEhvbGQgKG9wdHMgPSB7fSkge1xuICBjb25zdCBzb3VyY2VVdWlkID0gZXh0cmFjdFV1aWQob3B0cywgWydzb3VyY2VFbGVtZW50SWQnLCAnc291cmNlRWxlbWVudCddKTtcbiAgY29uc3QgZGVzdFV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ2Rlc3RpbmF0aW9uRWxlbWVudElkJywgJ2Rlc3RpbmF0aW9uRWxlbWVudCddKTtcbiAgY29uc3Qge1xuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgZHVyYXRpb24sIGhvbGREdXJhdGlvbixcbiAgICB2ZWxvY2l0eSxcbiAgICBrZXlNb2RpZmllckZsYWdzXG4gIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSBzb3VyY2VVdWlkICYmIGRlc3RVdWlkXG4gICAgPyBgL3dkYS9lbGVtZW50LyR7c291cmNlVXVpZH0vcHJlc3NBbmREcmFnQW5kSG9sZGBcbiAgICA6ICcvd2RhL3ByZXNzQW5kRHJhZ0FuZEhvbGQnO1xuICBjb25zdCBkZXN0ID0gZGVzdFV1aWQgJiYgdXRpbC53cmFwRWxlbWVudChkZXN0VXVpZCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbiwgaG9sZER1cmF0aW9uLFxuICAgIHZlbG9jaXR5LFxuICAgIGRlc3QsXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlc3R1cmVzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
326
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9nZXN0dXJlcy5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsImV4dHJhY3RVdWlkIiwib3B0aW9ucyIsImtleU5hbWVzIiwibmFtZSIsInJlc3VsdCIsInV0aWwiLCJ1bndyYXBFbGVtZW50IiwicmVxdWlyZVV1aWQiLCJlcnJvcnMiLCJJbnZhbGlkQXJndW1lbnRFcnJvciIsIm1hY29zU2V0VmFsdWUiLCJvcHRzIiwidXVpZCIsInZhbHVlIiwidGV4dCIsImtleU1vZGlmaWVyRmxhZ3MiLCJ3ZGEiLCJwcm94eSIsImNvbW1hbmQiLCJtYWNvc0NsaWNrIiwieCIsInkiLCJ1cmwiLCJtYWNvc1Njcm9sbCIsImRlbHRhWCIsImRlbHRhWSIsIm1hY29zU3dpcGUiLCJkaXJlY3Rpb24iLCJ2ZWxvY2l0eSIsIm1hY29zUmlnaHRDbGljayIsIm1hY29zSG92ZXIiLCJtYWNvc0RvdWJsZUNsaWNrIiwibWFjb3NDbGlja0FuZERyYWciLCJzb3VyY2VVdWlkIiwiZGVzdFV1aWQiLCJzdGFydFgiLCJzdGFydFkiLCJlbmRYIiwiZW5kWSIsImR1cmF0aW9uIiwiZGVzdCIsIndyYXBFbGVtZW50IiwibWFjb3NDbGlja0FuZERyYWdBbmRIb2xkIiwiaG9sZER1cmF0aW9uIiwibWFjb3NLZXlzIiwia2V5cyIsIm1hY29zUHJlc3NBbmRIb2xkIiwibWFjb3NUYXAiLCJtYWNvc0RvdWJsZVRhcCIsIm1hY29zUHJlc3NBbmREcmFnIiwibWFjb3NQcmVzc0FuZERyYWdBbmRIb2xkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFFQSxNQUFNQSxRQUFRLEdBQUcsRUFBakI7O0FBRUEsU0FBU0MsV0FBVCxDQUFzQkMsT0FBTyxHQUFHLEVBQWhDLEVBQW9DQyxRQUFRLEdBQUcsQ0FBQyxXQUFELEVBQWMsU0FBZCxDQUEvQyxFQUF5RTtBQUN2RSxPQUFLLE1BQU1DLElBQVgsSUFBbUJELFFBQW5CLEVBQTZCO0FBQzNCLFFBQUlELE9BQU8sQ0FB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QmVoQixRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXRpbCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcblxuY29uc3QgY29tbWFuZHMgPSB7fTtcblxuZnVuY3Rpb24gZXh0cmFjdFV1aWQgKG9wdGlvbnMgPSB7fSwga2V5TmFtZXMgPSBbJ2VsZW1lbnRJZCcsICdlbGVtZW50J10pIHtcbiAgZm9yIChjb25zdCBuYW1lIG9mIGtleU5hbWVzKSB7XG4gICAgaWYgKG9wdGlvbnNbbmFtZV0pIHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IHV0aWwudW53cmFwRWxlbWVudChvcHRpb25zW25hbWVdKTtcbiAgICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVVdWlkIChvcHRpb25zID0ge30sIGtleU5hbWVzID0gWydlbGVtZW50SWQnLCAnZWxlbWVudCddKSB7XG4gIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RVdWlkKG9wdGlvbnMsIGtleU5hbWVzKTtcbiAgaWYgKCFyZXN1bHQpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRBcmd1bWVudEVycm9yKGAke2tleU5hbWVzWzBdfSBmaWVsZCBpcyBtYW5kYXRvcnlgKTtcbiAgfVxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2V0VmFsdWVPcHRpb25zXG4gKiBAcHJvcGVydHkgeyFzdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIHNldCB2YWx1ZSBmb3JcbiAqIEBwcm9wZXJ0eSB7Kn0gdmFsdWUgdmFsdWUgdG8gc2V0LiBDb3VsZCBhbHNvIGJlIGFuIGFycmF5XG4gKiBAcHJvcGVydHkge3N0cmluZ30gdGV4dCB0ZXh0IHRvIHNldC4gSWYgYm90aCB2YWx1ZSBhbmQgdGV4dCBhcmUgc2V0XG4gKiB0aGVuIGB2YWx1ZWAgaXMgcHJlZmVycmVkXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSB0aGUgZWxlbWVudCB2YWx1ZSBpcyBiZWluZyBzZXQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBTZXQgdmFsdWUgdG8gdGhlIGdpdmVuIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0ge1NldFZhbHVlT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1NldFZhbHVlID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NTZXRWYWx1ZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSByZXF1aXJlVXVpZChvcHRzKTtcbiAgY29uc3QgeyB2YWx1ZSwgdGV4dCwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQoYC9lbGVtZW50LyR7dXVpZH0vdmFsdWVgLCAnUE9TVCcsIHtcbiAgICB2YWx1ZSwgdGV4dCxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2xpY2tPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBlbGVtZW50IHRvIGNsaWNrLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgY2xpY2sgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBjbGljayBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIGNsaWNrIGdlc3R1cmUgb24gYW4gZWxlbWVudCBvciBieSByZWxhdGl2ZS9hYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7Q2xpY2tPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zQ2xpY2sgPSBhc3luYyBmdW5jdGlvbiBtYWNvc0NsaWNrIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IHgsIHksIGtleU1vZGlmaWVyRmxhZ3MgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL2VsZW1lbnQvJHt1dWlkfS9jbGlja2AgOiAnL3dkYS9jbGljayc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gU2Nyb2xsT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBiZSBzY3JvbGxlZC4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IHNjcm9sbCBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBzY3JvbGwgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGRlbHRhWCBob3Jpem9udGFsIGRlbHRhIGFzIGZsb2F0IG51bWJlclxuICogQHByb3BlcnR5IHshbnVtYmVyfSBkZWx0YVkgdmVydGljYWwgZGVsdGEgYXMgZmxvYXQgbnVtYmVyXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBzY3JvbGwgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBzY3JvbGwgZ2VzdHVyZSBvbiBhbiBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtTY3JvbGxPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zU2Nyb2xsID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NTY3JvbGwgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHtcbiAgICB4LCB5LFxuICAgIGRlbHRhWCwgZGVsdGFZLFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L3Njcm9sbGAgOiAnL3dkYS9zY3JvbGwnO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIGRlbHRhWCwgZGVsdGFZLFxuICAgIHgsIHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IFN3aXBlT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBiZSBzd2lwZWQuIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBzd2lwZSBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBzd2lwZSBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7IXN0cmluZ30gZGlyZWN0aW9uIGVpdGhlciAndXAnLCAnZG93bicsICdsZWZ0JyBvciAncmlnaHQnXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHZlbG9jaXR5IFRoZSB2YWx1ZSBpcyBtZWFzdXJlZCBpbiBwaXhlbHMgcGVyIHNlY29uZCBhbmQgc2FtZVxuICogdmFsdWVzIGNvdWxkIGJlaGF2ZSBkaWZmZXJlbnRseSBvbiBkaWZmZXJlbnQgZGV2aWNlcyBkZXBlbmRpbmcgb24gdGhlaXIgZGlzcGxheVxuICogZGVuc2l0eS4gSGlnaGVyIHZhbHVlcyBtYWtlIHN3aXBlIGdlc3R1cmUgZmFzdGVyICh3aGljaCB1c3VhbGx5IHNjcm9sbHMgbGFyZ2VyXG4gKiBhcmVhcyBpZiB3ZSBhcHBseSBpdCB0byBhIGxpc3QpIGFuZCBsb3dlciB2YWx1ZXMgc2xvdyBpdCBkb3duLlxuICogT25seSB2YWx1ZXMgZ3JlYXRlciB0aGFuIHplcm8gaGF2ZSBlZmZlY3QuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBzY3JvbGwgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBzd2lwZSBnZXN0dXJlIG9uIGFuIGVsZW1lbnRcbiAqXG4gKiBAcGFyYW0ge1N3aXBlT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1N3aXBlID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NTd2lwZSAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3Qge1xuICAgIHgsIHksXG4gICAgZGlyZWN0aW9uLFxuICAgIHZlbG9jaXR5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L3N3aXBlYCA6IGAvd2RhL3N3aXBlYDtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGRpcmVjdGlvbixcbiAgICB2ZWxvY2l0eSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUmlnaHRDbGlja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gY2xpY2suIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBjbGljayBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBjbGljayBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGNsaWNrIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gcmlnaHQgY2xpY2sgZ2VzdHVyZSBvbiBhbiBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtSaWdodENsaWNrT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1JpZ2h0Q2xpY2sgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1JpZ2h0Q2xpY2sgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHsgeCwgeSwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS9yaWdodENsaWNrYCA6ICcvd2RhL3JpZ2h0Q2xpY2snO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHgsIHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEhvdmVyT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBob3Zlci4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IGNsaWNrIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB5IGNsaWNrIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgaG92ZXIgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBob3ZlciBnZXN0dXJlIG9uIGFuIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge0hvdmVyT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc0hvdmVyID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NIb3ZlciAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3QgeyB4LCB5LCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L2hvdmVyYCA6ICcvd2RhL2hvdmVyJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBEb3VibGVDbGlja09wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gZG91YmxlIGNsaWNrLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgY2xpY2sgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBkb3VibGUgY2xpY2sgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBkb3VibGUgY2xpY2sgZ2VzdHVyZSBvbiBhbiBlbGVtZW50IG9yIGJ5IHJlbGF0aXZlL2Fic29sdXRlIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtEb3VibGVDbGlja09wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NEb3VibGVDbGljayA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zRG91YmxlQ2xpY2sgKG9wdHMgPSB7fSkge1xuICBjb25zdCB1dWlkID0gZXh0cmFjdFV1aWQob3B0cyk7XG4gIGNvbnN0IHsgeCwgeSwga2V5TW9kaWZpZXJGbGFncyB9ID0gb3B0cztcbiAgY29uc3QgdXJsID0gdXVpZCA/IGAvd2RhL2VsZW1lbnQvJHt1dWlkfS9kb3VibGVDbGlja2AgOiAnL3dkYS9kb3VibGVDbGljayc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gQ2xpY2tBbmREcmFnT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzb3VyY2VFbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBzdGFydCB0aGUgZHJhZyBmcm9tLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBkZXN0aW5hdGlvbkVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGRlc3RpbmF0aW9uRWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gZW5kIHRoZSBkcmFnIG9uLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBzb3VyY2VFbGVtZW50YCBtdXN0IGJlIHByb3ZpZGVkIG9yIGBzdGFydFhgLCBgc3RhcnRZYCwgYGVuZFhgLCBgZW5kWWAgY29vcmRpbmF0ZXNcbiAqIG11c3QgYmUgc2V0LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFggc3RhcnRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WSBzdGFydGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWCBlbmRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFkgZW5kaW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHshbnVtYmVyfSBkdXJhdGlvbiBsb25nIGNsaWNrIGR1cmF0aW9uIGluIGZsb2F0IHNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGRyYWcgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBsb25nIGNsaWNrIGFuZCBkcmFnIGdlc3R1cmUgb24gYW4gZWxlbWVudCBvciBieSBhYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7Q2xpY2tBbmREcmFnT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc0NsaWNrQW5kRHJhZyA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zQ2xpY2tBbmREcmFnIChvcHRzID0ge30pIHtcbiAgY29uc3Qgc291cmNlVXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnc291cmNlRWxlbWVudElkJywgJ3NvdXJjZUVsZW1lbnQnXSk7XG4gIGNvbnN0IGRlc3RVdWlkID0gZXh0cmFjdFV1aWQob3B0cywgWydkZXN0aW5hdGlvbkVsZW1lbnRJZCcsICdkZXN0aW5hdGlvbkVsZW1lbnQnXSk7XG4gIGNvbnN0IHtcbiAgICBzdGFydFgsIHN0YXJ0WSxcbiAgICBlbmRYLCBlbmRZLFxuICAgIGR1cmF0aW9uLFxuICAgIGtleU1vZGlmaWVyRmxhZ3NcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHNvdXJjZVV1aWQgJiYgZGVzdFV1aWRcbiAgICA/IGAvd2RhL2VsZW1lbnQvJHtzb3VyY2VVdWlkfS9jbGlja0FuZERyYWdgXG4gICAgOiAnL3dkYS9jbGlja0FuZERyYWcnO1xuICBjb25zdCBkZXN0ID0gZGVzdFV1aWQgJiYgdXRpbC53cmFwRWxlbWVudChkZXN0VXVpZCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbixcbiAgICBkZXN0LFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBDbGlja0FuZERyYWdBbmRIb2xkT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzb3VyY2VFbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBzdGFydCB0aGUgZHJhZyBmcm9tLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBkZXN0aW5hdGlvbkVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGRlc3RpbmF0aW9uRWxlbWVudElkIHV1aWQgb2YgdGhlIGVsZW1lbnQgdG8gZW5kIHRoZSBkcmFnIG9uLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBzb3VyY2VFbGVtZW50YCBtdXN0IGJlIHByb3ZpZGVkIG9yIGBzdGFydFhgLCBgc3RhcnRZYCwgYGVuZFhgLCBgZW5kWWAgY29vcmRpbmF0ZXNcbiAqIG11c3QgYmUgc2V0LlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFggc3RhcnRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WSBzdGFydGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWCBlbmRpbmcgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFkgZW5kaW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHshbnVtYmVyfSBkdXJhdGlvbiBsb25nIGNsaWNrIGR1cmF0aW9uIGluIGZsb2F0IHNlY29uZHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gdmVsb2NpdHkgZHJhZ2dpbmcgdmVsb2NpdHkgaW4gcGl4ZWxzIHBlciBzZWNvbmQuXG4gKiBJZiBub3QgcHJvdmlkZWQgdGhlbiB0aGUgZGVmYXVsdCB2ZWxvY2l0eSBpcyB1c2VkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZ2VzdHVyZXZlbG9jaXR5XG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBkcmFnIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gbG9uZyBjbGljaywgZHJhZyBhbmQgaG9sZCBnZXN0dXJlIG9uIGFuIGVsZW1lbnQgb3IgYnkgYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge0NsaWNrQW5kRHJhZ0FuZEhvbGRPcHRpb25zfSBvcHRzXG4gKi9cbmNvbW1hbmRzLm1hY29zQ2xpY2tBbmREcmFnQW5kSG9sZCA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zQ2xpY2tBbmREcmFnQW5kSG9sZCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvdXJjZVV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ3NvdXJjZUVsZW1lbnRJZCcsICdzb3VyY2VFbGVtZW50J10pO1xuICBjb25zdCBkZXN0VXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnZGVzdGluYXRpb25FbGVtZW50SWQnLCAnZGVzdGluYXRpb25FbGVtZW50J10pO1xuICBjb25zdCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbiwgaG9sZER1cmF0aW9uLFxuICAgIHZlbG9jaXR5LFxuICAgIGtleU1vZGlmaWVyRmxhZ3NcbiAgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHNvdXJjZVV1aWQgJiYgZGVzdFV1aWRcbiAgICA/IGAvd2RhL2VsZW1lbnQvJHtzb3VyY2VVdWlkfS9jbGlja0FuZERyYWdBbmRIb2xkYFxuICAgIDogJy93ZGEvY2xpY2tBbmREcmFnQW5kSG9sZCc7XG4gIGNvbnN0IGRlc3QgPSBkZXN0VXVpZCAmJiB1dGlsLndyYXBFbGVtZW50KGRlc3RVdWlkKTtcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICBzdGFydFgsIHN0YXJ0WSxcbiAgICBlbmRYLCBlbmRZLFxuICAgIGR1cmF0aW9uLCBob2xkRHVyYXRpb24sXG4gICAgdmVsb2NpdHksXG4gICAgZGVzdCxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gS2V5T3B0aW9uc1xuICogQHByb3BlcnR5IHshc3RyaW5nfSBrZXkgYSBzdHJpbmcsIHRoYXQgcmVwcmVzZW50cyBhIGtleSB0byB0eXBlIChzZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNTAwNjA0LXR5cGVrZXk/bGFuZ3VhZ2U9b2JqY1xuICogYW5kIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5Ym9hcmRrZXk/bGFuZ3VhZ2U9b2JqYylcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gbW9kaWZpZXJGbGFncyBhIHNldCBvZiBtb2RpZmllciBmbGFnc1xuICogKGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFncz9sYW5ndWFnZT1vYmpjKVxuICogdG8gdXNlIHdoZW4gdHlwaW5nIHRoZSBrZXkuXG4gKi9cblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBLZXlzT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBlbGVtZW50SWQgdXVpZCBvZiB0aGUgZWxlbWVudCB0byBzZW5kIGtleXMgdG8uXG4gKiBJZiB0aGUgZWxlbWVudCBpcyBub3QgcHJvdmlkZWQgdGhlbiB0aGUga2V5cyB3aWxsIGJlIHNlbnQgdG8gdGhlIGN1cnJlbnQgYXBwbGljYXRpb24uXG4gKiBAcHJvcGVydHkgeyFBcnJheTxLZXlPcHRpb25zfHN0cmluZz59IGtleXMgQXJyYXkgb2Yga2V5cyB0byB0eXBlLlxuICogRWFjaCBpdGVtIGNvdWxkIGVpdGhlciBiZSBhIHN0cmluZywgdGhhdCByZXByZXNlbnRzIGEga2V5IGl0c2VsZiAoc2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTUwMDYwNC10eXBla2V5P2xhbmd1YWdlPW9iamNcbiAqIGFuZCBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleWJvYXJka2V5P2xhbmd1YWdlPW9iamMpXG4gKiBvciBhIGRpY3Rpb25hcnksIGlmIHRoZSBrZXkgc2hvdWxkIGFsc28gYmUgZW50ZXJlZCB3aXRoIG1vZGlmaWVycy5cbiAqL1xuXG4vKipcbiAqIFNlbmQga2V5cyB0byB0aGUgZ2l2ZW4gZWxlbWVudCBvciB0byB0aGUgYXBwbGljYXRpb24gdW5kZXIgdGVzdFxuICpcbiAqIEBwYXJhbSB7S2V5c09wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NLZXlzID0gYXN5bmMgZnVuY3Rpb24gbWFjb3NLZXlzIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IGtleXMgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0va2V5c2AgOiAnL3dkYS9rZXlzJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHsga2V5cyB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUHJlc3NPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBUb3VjaCBCYXIgZWxlbWVudCB0byBiZSBwcmVzc2VkLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogb3IvYW5kIHggYW5kIHkgbXVzdCBiZSBzZXQuIElmIGJvdGggYXJlIHNldCB0aGVuIHggYW5kIHkgYXJlIGNvbnNpZGVyZWQgYXMgcmVsYXRpdmVcbiAqIGVsZW1lbnQgY29vcmRpbmF0ZXMuIElmIG9ubHkgeCBhbmQgeSBhcmUgc2V0IHRoZW4gdGhlc2UgYXJlIHBhcnNlZCBhc1xuICogYWJzb2x1dGUgVG91Y2ggQmFyIGNvb3JkaW5hdGVzLlxuICogQHByb3BlcnR5IHs/bnVtYmVyfSB4IGxvbmcgY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgbG9uZyBjbGljayBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gZHVyYXRpb24gdGhlIG51bWJlciBvZiBmbG9hdCBzZWNvbmRzIHRvIGhvbGQgdGhlIG1vdXNlIGJ1dHRvblxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBrZXlNb2RpZmllckZsYWdzIGlmIHNldCB0aGVuIHRoZSBnaXZlbiBrZXkgbW9kaWZpZXJzIHdpbGwgYmVcbiAqIGFwcGxpZWQgd2hpbGUgY2xpY2sgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBwcmVzcyBnZXN0dXJlIG9uIGEgVG91Y2ggQmFyIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge1ByZXNzT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1ByZXNzQW5kSG9sZCA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zUHJlc3NBbmRIb2xkIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IHgsIHksIGR1cmF0aW9uLCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L3ByZXNzYCA6ICcvd2RhL3ByZXNzJztcbiAgcmV0dXJuIGF3YWl0IHRoaXMud2RhLnByb3h5LmNvbW1hbmQodXJsLCAnUE9TVCcsIHtcbiAgICB4LCB5LFxuICAgIGR1cmF0aW9uLFxuICAgIGtleU1vZGlmaWVyRmxhZ3MsXG4gIH0pO1xufTtcblxuLyoqXG4gKiBAdHlwZWRlZiB7T2JqZWN0fSBUYXBPcHRpb25zXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGVsZW1lbnRJZCB1dWlkIG9mIHRoZSBUb3VjaCBCYXIgZWxlbWVudCB0byB0YXAuIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBvci9hbmQgeCBhbmQgeSBtdXN0IGJlIHNldC4gSWYgYm90aCBhcmUgc2V0IHRoZW4geCBhbmQgeSBhcmUgY29uc2lkZXJlZCBhcyByZWxhdGl2ZVxuICogZWxlbWVudCBjb29yZGluYXRlcy4gSWYgb25seSB4IGFuZCB5IGFyZSBzZXQgdGhlbiB0aGVzZSBhcmUgcGFyc2VkIGFzXG4gKiBhYnNvbHV0ZSBUb3VjaCBCYXIgY29vcmRpbmF0ZXMuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHggY2xpY2sgWCBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHkgY2xpY2sgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBjbGljayBpcyBwZXJmb3JtZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlrZXltb2RpZmllcmZsYWdzXG4gKiBmb3IgbW9yZSBkZXRhaWxzXG4gKi9cblxuLyoqXG4gKiBQZXJmb3JtIHRhcCBnZXN0dXJlIG9uIGEgVG91Y2ggQmFyIGVsZW1lbnQgb3IgYnkgcmVsYXRpdmUvYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge1RhcE9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NUYXAgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1RhcCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHV1aWQgPSBleHRyYWN0VXVpZChvcHRzKTtcbiAgY29uc3QgeyB4LCB5LCBrZXlNb2RpZmllckZsYWdzIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSB1dWlkID8gYC93ZGEvZWxlbWVudC8ke3V1aWR9L3RhcGAgOiAnL3dkYS90YXAnO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHgsIHksXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IERvdWJsZVRhcE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZWxlbWVudElkIHV1aWQgb2YgdGhlIFRvdWNoIEJhciBlbGVtZW50IHRvIHRhcC4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIG9yL2FuZCB4IGFuZCB5IG11c3QgYmUgc2V0LiBJZiBib3RoIGFyZSBzZXQgdGhlbiB4IGFuZCB5IGFyZSBjb25zaWRlcmVkIGFzIHJlbGF0aXZlXG4gKiBlbGVtZW50IGNvb3JkaW5hdGVzLiBJZiBvbmx5IHggYW5kIHkgYXJlIHNldCB0aGVuIHRoZXNlIGFyZSBwYXJzZWQgYXNcbiAqIGFic29sdXRlIFRvdWNoIEJhciBjb29yZGluYXRlcy5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geCBjbGljayBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0geSBjbGljayBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGNsaWNrIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gdGFwIGdlc3R1cmUgb24gYSBUb3VjaCBCYXIgZWxlbWVudCBvciBieSByZWxhdGl2ZS9hYnNvbHV0ZSBjb29yZGluYXRlc1xuICpcbiAqIEBwYXJhbSB7RG91YmxlVGFwT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc0RvdWJsZVRhcCA9IGFzeW5jIGZ1bmN0aW9uIG1hY29zRG91YmxlVGFwIChvcHRzID0ge30pIHtcbiAgY29uc3QgdXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMpO1xuICBjb25zdCB7IHgsIHksIGtleU1vZGlmaWVyRmxhZ3MgfSA9IG9wdHM7XG4gIGNvbnN0IHVybCA9IHV1aWQgPyBgL3dkYS9lbGVtZW50LyR7dXVpZH0vZG91YmxlVGFwYCA6ICcvd2RhL2RvdWJsZVRhcCc7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgeCwgeSxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUHJlc3NBbmREcmFnT3B0aW9uc1xuICogQHByb3BlcnR5IHs/c3RyaW5nfSBzb3VyY2VFbGVtZW50SWQgdXVpZCBvZiBhIFRvdWNoIEJhciBlbGVtZW50IHRvIHN0YXJ0IHRoZSBkcmFnIGZyb20uIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBhbmQgYGRlc3RpbmF0aW9uRWxlbWVudGAgbXVzdCBiZSBwcm92aWRlZCBvciBgc3RhcnRYYCwgYHN0YXJ0WWAsIGBlbmRYYCwgYGVuZFlgIGNvb3JkaW5hdGVzXG4gKiBtdXN0IGJlIHNldC5cbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gZGVzdGluYXRpb25FbGVtZW50SWQgdXVpZCBvZiBhIFRvdWNoIEJhciBlbGVtZW50IHRvIGVuZCB0aGUgZHJhZyBvbi4gRWl0aGVyIHRoaXMgcHJvcGVydHlcbiAqIGFuZCBgc291cmNlRWxlbWVudGAgbXVzdCBiZSBwcm92aWRlZCBvciBgc3RhcnRYYCwgYHN0YXJ0WWAsIGBlbmRYYCwgYGVuZFlgIGNvb3JkaW5hdGVzXG4gKiBtdXN0IGJlIHNldC5cbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRYIHN0YXJ0aW5nIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBzdGFydFkgc3RhcnRpbmcgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGVuZFggZW5kaW5nIFggY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBlbmRZIGVuZGluZyBZIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7IW51bWJlcn0gZHVyYXRpb24gbG9uZyBjbGljayBkdXJhdGlvbiBpbiBmbG9hdCBzZWNvbmRzXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IGtleU1vZGlmaWVyRmxhZ3MgaWYgc2V0IHRoZW4gdGhlIGdpdmVuIGtleSBtb2RpZmllcnMgd2lsbCBiZVxuICogYXBwbGllZCB3aGlsZSBkcmFnIGlzIHBlcmZvcm1lZC4gU2VlXG4gKiBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWtleW1vZGlmaWVyZmxhZ3NcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqL1xuXG4vKipcbiAqIFBlcmZvcm0gbG9uZyBwcmVzcyBhbmQgZHJhZyBnZXN0dXJlIG9uIGEgVG91Y2ggQmFyIGVsZW1lbnQgb3IgYnkgYWJzb2x1dGUgY29vcmRpbmF0ZXNcbiAqXG4gKiBAcGFyYW0ge1ByZXNzQW5kRHJhZ09wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubWFjb3NQcmVzc0FuZERyYWcgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1ByZXNzQW5kRHJhZyAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHNvdXJjZVV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ3NvdXJjZUVsZW1lbnRJZCcsICdzb3VyY2VFbGVtZW50J10pO1xuICBjb25zdCBkZXN0VXVpZCA9IGV4dHJhY3RVdWlkKG9wdHMsIFsnZGVzdGluYXRpb25FbGVtZW50SWQnLCAnZGVzdGluYXRpb25FbGVtZW50J10pO1xuICBjb25zdCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbixcbiAgICBrZXlNb2RpZmllckZsYWdzXG4gIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSBzb3VyY2VVdWlkICYmIGRlc3RVdWlkXG4gICAgPyBgL3dkYS9lbGVtZW50LyR7c291cmNlVXVpZH0vcHJlc3NBbmREcmFnYFxuICAgIDogJy93ZGEvcHJlc3NBbmREcmFnJztcbiAgY29uc3QgZGVzdCA9IGRlc3RVdWlkICYmIHV0aWwud3JhcEVsZW1lbnQoZGVzdFV1aWQpO1xuICByZXR1cm4gYXdhaXQgdGhpcy53ZGEucHJveHkuY29tbWFuZCh1cmwsICdQT1NUJywge1xuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgZHVyYXRpb24sXG4gICAgZGVzdCxcbiAgICBrZXlNb2RpZmllckZsYWdzLFxuICB9KTtcbn07XG5cbi8qKlxuICogQHR5cGVkZWYge09iamVjdH0gUHJlc3NBbmREcmFnQW5kSG9sZE9wdGlvbnNcbiAqIEBwcm9wZXJ0eSB7P3N0cmluZ30gc291cmNlRWxlbWVudElkIHV1aWQgb2YgYSBUb3VjaCBCYXIgZWxlbWVudCB0byBzdGFydCB0aGUgZHJhZyBmcm9tLiBFaXRoZXIgdGhpcyBwcm9wZXJ0eVxuICogYW5kIGBkZXN0aW5hdGlvbkVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9zdHJpbmd9IGRlc3RpbmF0aW9uRWxlbWVudElkIHV1aWQgb2YgYSBUb3VjaCBCYXIgZWxlbWVudCB0byBlbmQgdGhlIGRyYWcgb24uIEVpdGhlciB0aGlzIHByb3BlcnR5XG4gKiBhbmQgYHNvdXJjZUVsZW1lbnRgIG11c3QgYmUgcHJvdmlkZWQgb3IgYHN0YXJ0WGAsIGBzdGFydFlgLCBgZW5kWGAsIGBlbmRZYCBjb29yZGluYXRlc1xuICogbXVzdCBiZSBzZXQuXG4gKiBAcHJvcGVydHkgez9udW1iZXJ9IHN0YXJ0WCBzdGFydGluZyBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gc3RhcnRZIHN0YXJ0aW5nIFkgY29vcmRpbmF0ZVxuICogQHByb3BlcnR5IHs/bnVtYmVyfSBlbmRYIGVuZGluZyBYIGNvb3JkaW5hdGVcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0gZW5kWSBlbmRpbmcgWSBjb29yZGluYXRlXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ9IGR1cmF0aW9uIGxvbmcgY2xpY2sgZHVyYXRpb24gaW4gZmxvYXQgc2Vjb25kc1xuICogQHByb3BlcnR5IHs/bnVtYmVyfSB2ZWxvY2l0eSBkcmFnZ2luZyB2ZWxvY2l0eSBpbiBwaXhlbHMgcGVyIHNlY29uZC5cbiAqIElmIG5vdCBwcm92aWRlZCB0aGVuIHRoZSBkZWZhdWx0IHZlbG9jaXR5IGlzIHVzZWQuIFNlZVxuICogaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWlnZXN0dXJldmVsb2NpdHlcbiAqIGZvciBtb3JlIGRldGFpbHNcbiAqIEBwcm9wZXJ0eSB7P251bWJlcn0ga2V5TW9kaWZpZXJGbGFncyBpZiBzZXQgdGhlbiB0aGUgZ2l2ZW4ga2V5IG1vZGlmaWVycyB3aWxsIGJlXG4gKiBhcHBsaWVkIHdoaWxlIGRyYWcgaXMgcGVyZm9ybWVkLiBTZWVcbiAqIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3Vpa2V5bW9kaWZpZXJmbGFnc1xuICogZm9yIG1vcmUgZGV0YWlsc1xuICovXG5cbi8qKlxuICogUGVyZm9ybSBwcmVzcywgZHJhZyBhbmQgaG9sZCBnZXN0dXJlIG9uIGEgVG91Y2ggQmFyIGVsZW1lbnQgb3IgYnkgYWJzb2x1dGUgVG91Y2ggQmFyIGNvb3JkaW5hdGVzXG4gKlxuICogQHBhcmFtIHtQcmVzc0FuZERyYWdBbmRIb2xkT3B0aW9uc30gb3B0c1xuICovXG5jb21tYW5kcy5tYWNvc1ByZXNzQW5kRHJhZ0FuZEhvbGQgPSBhc3luYyBmdW5jdGlvbiBtYWNvc1ByZXNzQW5kRHJhZ0FuZEhvbGQgKG9wdHMgPSB7fSkge1xuICBjb25zdCBzb3VyY2VVdWlkID0gZXh0cmFjdFV1aWQob3B0cywgWydzb3VyY2VFbGVtZW50SWQnLCAnc291cmNlRWxlbWVudCddKTtcbiAgY29uc3QgZGVzdFV1aWQgPSBleHRyYWN0VXVpZChvcHRzLCBbJ2Rlc3RpbmF0aW9uRWxlbWVudElkJywgJ2Rlc3RpbmF0aW9uRWxlbWVudCddKTtcbiAgY29uc3Qge1xuICAgIHN0YXJ0WCwgc3RhcnRZLFxuICAgIGVuZFgsIGVuZFksXG4gICAgZHVyYXRpb24sIGhvbGREdXJhdGlvbixcbiAgICB2ZWxvY2l0eSxcbiAgICBrZXlNb2RpZmllckZsYWdzXG4gIH0gPSBvcHRzO1xuICBjb25zdCB1cmwgPSBzb3VyY2VVdWlkICYmIGRlc3RVdWlkXG4gICAgPyBgL3dkYS9lbGVtZW50LyR7c291cmNlVXVpZH0vcHJlc3NBbmREcmFnQW5kSG9sZGBcbiAgICA6ICcvd2RhL3ByZXNzQW5kRHJhZ0FuZEhvbGQnO1xuICBjb25zdCBkZXN0ID0gZGVzdFV1aWQgJiYgdXRpbC53cmFwRWxlbWVudChkZXN0VXVpZCk7XG4gIHJldHVybiBhd2FpdCB0aGlzLndkYS5wcm94eS5jb21tYW5kKHVybCwgJ1BPU1QnLCB7XG4gICAgc3RhcnRYLCBzdGFydFksXG4gICAgZW5kWCwgZW5kWSxcbiAgICBkdXJhdGlvbiwgaG9sZER1cmF0aW9uLFxuICAgIHZlbG9jaXR5LFxuICAgIGRlc3QsXG4gICAga2V5TW9kaWZpZXJGbGFncyxcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBjb21tYW5kcztcbiJdLCJmaWxlIjoibGliL2NvbW1hbmRzL2dlc3R1cmVzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=