appium-xcuitest-driver 3.40.0 → 3.43.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
@@ -154,6 +154,8 @@ Capability | Description
154
154
  |`appium:screenshotQuality`| Changes the quality of phone display screenshots following [xctest/xctimagequality](https://developer.apple.com/documentation/xctest/xctimagequality?language=objc) Default value is `1`. `0` is the highest and `2` is the lowest quality. You can also change it via [settings](https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/settings.md) command. `0` might cause OutOfMemory crash on high-resolution devices like iPad Pro. | e.g. `0`, `1`, `2` |
155
155
  |`appium:autoAcceptAlerts`| Accept all iOS alerts automatically if they pop up. This includes privacy access permission alerts (e.g., location, contacts, photos). Default is `false`. |`true` or `false`|
156
156
  |`appium:autoDismissAlerts`| Dismiss all iOS alerts automatically if they pop up. This includes privacy access permission alerts (e.g., location, contacts, photos). Default is `false`. |`true` or `false`|
157
+ |`appium:disableAutomaticScreenshots`| Disable automatic screenshots taken by XCTest at every interaction. Default is up to `WebDriverAgent`'s config to decide, which currently defaults to `true`. |`true` or `false`|
158
+ |`appium:shouldTerminateApp`| Specify if the app should be terminated on session end. This capability only has an effect if an application identifier has been passed to the test session (either explicitly, by setting bundleId, or implicitly, by providing app). Default is `true`. |`true` or `false`|
157
159
 
158
160
  ### Simulator
159
161
 
@@ -652,6 +654,34 @@ name | string | yes | The name of the notification to expect | com.example.fooAl
652
654
  type | string | no | Which notification type to expect. Either `plain` (the default value) to wait for a notification from the *default* notification center or `darwin` to wait for a system notification. | darwin
653
655
  timeoutSeconds | number | no | For how long to wait until the notification is delivered in float seconds. 60 seconds by default | 5.5
654
656
 
657
+ ### mobile: performIoHidEvent
658
+
659
+ Emulates triggering of the given low-level IO HID device event. Constants for possible events are defined
660
+ in [XNU kernel IO HID usage tables](https://unix.superglobalmegacorp.com/xnu/newsrc/iokit/IOKit/hidsystem/IOHIDUsageTables.h.html).
661
+ For example, in order to emulate single press on Home button the extension should be called with the following arguments:
662
+ - page: `0x0C` (`kHIDPage_Consumer`, select the `Customer` page)
663
+ - usage: `0x40` (`kHIDUsage_Csmr_Menu`, the `Csmr` prefix here means this usage is dedicated to the `Customer` page)
664
+ - durationSeconds: `0.005` (The event duration should be 5 milliseconds to be recognized as a single press by iOS)
665
+
666
+ Some popular constants:
667
+
668
+ Name | Value | Description
669
+ --- | --- | ---
670
+ kHIDPage_Consumer | 0x0C | The page containing all usages prefixed with `kHIDUsage_Csmr_`
671
+ kHIDUsage_Csmr_VolumeIncrement | 0xE9 | Volume Up
672
+ kHIDUsage_Csmr_VolumeDecrement | 0xEA | Volume Down
673
+ kHIDUsage_Csmr_Menu | 0x40 | Home
674
+ kHIDUsage_Csmr_Power | 0x30 | Power/Lock
675
+ kHIDUsage_Csmr_Snapshot | 0x65 | Power + Home
676
+
677
+ #### Arguments
678
+
679
+ Name | Type | Required | Description | Example
680
+ --- | --- | --- | --- | ---
681
+ page | int | yes | The event page identifier. Look for constants perfixed with `kHIDPage_` in the table above | 0x0C
682
+ usage | int | yes | The event usage identifier (usages are defined per-page). Look for constants prefixed with `kHIDUsage_` in the table above | 0x40
683
+ durationSeconds | number | yes | The event duration in float seconds. XCTest uses `0.005` for a single press event duration | 2.5
684
+
655
685
  ### mobile: enrollBiometric
656
686
 
657
687
  Enrolls biometric authentication on Simulator.
@@ -95,7 +95,8 @@ extensions.executeMobile = async function executeMobile(mobileCommand, opts = {}
95
95
  listXCTestBundles: 'mobileListXCTestBundles',
96
96
  listXCTestsInTestBundle: 'mobileListXCTestsInTestBundle',
97
97
  pushNotification: 'mobilePushNotification',
98
- expectNotification: 'mobileExpectNotification'
98
+ expectNotification: 'mobileExpectNotification',
99
+ performIoHidEvent: 'mobilePerformIoHidEvent'
99
100
  };
100
101
 
101
102
  if (!_lodash.default.has(commandMap, mobileCommand)) {
@@ -109,4 +110,4 @@ var _default = extensions;
109
110
  exports.default = _default;require('source-map-support').install();
110
111
 
111
112
 
112
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJpb3NDb21tYW5kcyIsImV4ZWN1dGUiLCJpb3NFeGVjdXRlIiwic2NyaXB0IiwiYXJncyIsIm1hdGNoIiwiaXNXZWJDb250ZXh0IiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImNhbGwiLCJleGVjdXRlQXN5bmMiLCJjb252ZXJ0RWxlbWVudHNGb3JBdG9tcyIsImFzeW5jV2FpdE1zIiwicHJvbWlzZSIsInJlbW90ZSIsImV4ZWN1dGVBdG9tQXN5bmMiLCJjdXJXZWJGcmFtZXMiLCJ3YWl0Rm9yQXRvbSIsImV4ZWN1dGVNb2JpbGUiLCJtb2JpbGVDb21tYW5kIiwib3B0cyIsImNvbW1hbmRNYXAiLCJ0YXAiLCJzY3JvbGwiLCJzZWxlY3RQaWNrZXJXaGVlbFZhbHVlIiwic3dpcGUiLCJwaW5jaCIsImRvdWJsZVRhcCIsInR3b0ZpbmdlclRhcCIsInRhcFdpdGhOdW1iZXJPZlRhcHMiLCJ0b3VjaEFuZEhvbGQiLCJkcmFnRnJvbVRvRm9yRHVyYXRpb24iLCJyb3RhdGVFbGVtZW50IiwiYWxlcnQiLCJzZXRQYXN0ZWJvYXJkIiwiZ2V0UGFzdGVib2FyZCIsInNvdXJjZSIsImdldENvbnRleHRzIiwiaW5zdGFsbEFwcCIsImlzQXBwSW5zdGFsbGVkIiwicmVtb3ZlQXBwIiwibGF1bmNoQXBwIiwidGVybWluYXRlQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFjdGl2YXRlQXBwIiwidmlld3BvcnRTY3JlZW5zaG90Iiwidmlld3BvcnRSZWN0Iiwic3RhcnRQZXJmUmVjb3JkIiwic3RvcFBlcmZSZWNvcmQiLCJpbnN0YWxsQ2VydGlmaWNhdGUiLCJzdGFydExvZ3NCcm9hZGNhc3QiLCJzdG9wTG9nc0Jyb2FkY2FzdCIsImJhdHRlcnlJbmZvIiwiZGV2aWNlSW5mbyIsImdldERldmljZVRpbWUiLCJhY3RpdmVBcHBJbmZvIiwiZGV2aWNlU2NyZWVuSW5mbyIsInByZXNzQnV0dG9uIiwiZW5yb2xsQmlvbWV0cmljIiwic2VuZEJpb21ldHJpY01hdGNoIiwiaXNCaW9tZXRyaWNFbnJvbGxlZCIsImNsZWFyS2V5Y2hhaW5zIiwiZ2V0UGVybWlzc2lvbiIsInNldFBlcm1pc3Npb24iLCJyZXNldFBlcm1pc3Npb24iLCJnZXRBcHBlYXJhbmNlIiwic2V0QXBwZWFyYW5jZSIsInNpcmlDb21tYW5kIiwiZGVsZXRlRmlsZSIsImRlbGV0ZUZvbGRlciIsInN0YXJ0QXVkaW9SZWNvcmRpbmciLCJzdG9wQXVkaW9SZWNvcmRpbmciLCJydW5YQ1Rlc3QiLCJpbnN0YWxsWENUZXN0QnVuZGxlIiwibGlzdFhDVGVzdEJ1bmRsZXMiLCJsaXN0WENUZXN0c0luVGVzdEJ1bmRsZSIsInB1c2hOb3RpZmljYXRpb24iLCJleHBlY3ROb3RpZmljYXRpb24iLCJfIiwiaGFzIiwiVW5rbm93bkNvbW1hbmRFcnJvciIsImtleXMiLCJqb2luIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUdBLElBQUlBLFVBQVUsR0FBRyxFQUFqQjtBQUVBQyxNQUFNLENBQUNDLE1BQVAsQ0FBY0YsVUFBZCxFQUEwQkcsNkJBQVlDLE9BQXRDO0FBRUEsTUFBTUMsVUFBVSxHQUFHTCxVQUFVLENBQUNJLE9BQTlCOztBQUNBSixVQUFVLENBQUNJLE9BQVgsR0FBcUIsZUFBZUEsT0FBZixDQUF3QkUsTUFBeEIsRUFBZ0NDLElBQWhDLEVBQXNDO0FBQ3pELE1BQUksQ0FBQ0QsTUFBTSxDQUFDRSxLQUFQLENBQWEsVUFBYixDQUFELElBQTZCLENBQUMsS0FBS0MsWUFBTCxFQUFsQyxFQUF1RDtBQUNyRCxVQUFNLElBQUlDLHlCQUFPQyxtQkFBWCxFQUFOO0FBQ0Q7O0FBRUQsU0FBTyxNQUFNTixVQUFVLENBQUNPLElBQVgsQ0FBZ0IsSUFBaEIsRUFBc0JOLE1BQXRCLEVBQThCQyxJQUE5QixDQUFiO0FBQ0QsQ0FORDs7QUFRQVAsVUFBVSxDQUFDYSxZQUFY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QUFBLGFBQWEsRUFBRSxzQkF0RUU7QUF1RWpCQyxJQUFBQSxlQUFlLEVBQUUsdUJBdkVBO0FBeUVqQkMsSUFBQUEsYUFBYSxFQUFFLHFCQXpFRTtBQTBFakJDLElBQUFBLGFBQWEsRUFBRSxxQkExRUU7QUE0RWpCQyxJQUFBQSxXQUFXLEVBQUUsbUJBNUVJO0FBOEVqQkMsSUFBQUEsVUFBVSxFQUFFLGtCQTlFSztBQStFakJDLElBQUFBLFlBQVksRUFBRSxvQkEvRUc7QUFpRmpCQyxJQUFBQSxtQkFBbUIsRUFBRSxxQkFqRko7QUFrRmpCQyxJQUFBQSxrQkFBa0IsRUFBRSxvQkFsRkg7QUFxRmpCQyxJQUFBQSxTQUFTLEVBQUUsaUJBckZNO0FBc0ZqQkMsSUFBQUEsbUJBQW1CLEVBQUUsMkJBdEZKO0FBdUZqQkMsSUFBQUEsaUJBQWlCLEVBQUUseUJBdkZGO0FBd0ZqQkMsSUFBQUEsdUJBQXVCLEVBQUUsK0JBeEZSO0FBMEZqQkMsSUFBQUEsZ0JBQWdCLEVBQUUsd0JBMUZEO0FBMkZqQkMsSUFBQUEsa0JBQWtCLEVBQUU7QUEzRkgsR0FBbkI7O0FBOEZBLE1BQUksQ0FBQ0MsZ0JBQUVDLEdBQUYsQ0FBTTFELFVBQU4sRUFBa0JGLGFBQWxCLENBQUwsRUFBdUM7QUFDckMsVUFBTSxJQUFJWix5QkFBT3lFLG1CQUFYLENBQWdDLDJCQUEwQjdELGFBQWMsV0FBVTJELGdCQUFFRyxJQUFGLENBQU81RCxVQUFQLEVBQW1CNkQsSUFBbkIsQ0FBd0IsSUFBeEIsQ0FBOEIsMEJBQWhILENBQU47QUFDRDs7QUFDRCxTQUFPLE1BQU0sS0FBSzdELFVBQVUsQ0FBQ0YsYUFBRCxDQUFmLEVBQWdDQyxJQUFoQyxDQUFiO0FBQ0QsQ0FuR0Q7O2VBcUdldkIsVSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBpb3NDb21tYW5kcyB9IGZyb20gJ2FwcGl1bS1pb3MtZHJpdmVyJztcbmltcG9ydCB7IGVycm9ycyB9IGZyb20gJ2FwcGl1bS1iYXNlLWRyaXZlcic7XG5cblxubGV0IGV4dGVuc2lvbnMgPSB7fTtcblxuT2JqZWN0LmFzc2lnbihleHRlbnNpb25zLCBpb3NDb21tYW5kcy5leGVjdXRlKTtcblxuY29uc3QgaW9zRXhlY3V0ZSA9IGV4dGVuc2lvbnMuZXhlY3V0ZTtcbmV4dGVuc2lvbnMuZXhlY3V0ZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGUgKHNjcmlwdCwgYXJncykge1xuICBpZiAoIXNjcmlwdC5tYXRjaCgvXm1vYmlsZTovKSAmJiAhdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgcmV0dXJuIGF3YWl0IGlvc0V4ZWN1dGUuY2FsbCh0aGlzLCBzY3JpcHQsIGFyZ3MpO1xufTtcblxuZXh0ZW5zaW9ucy5leGVjdXRlQXN5bmMgPSBhc3luYyBmdW5jdGlvbiBleGVjdXRlQXN5bmMgKHNjcmlwdCwgYXJncykge1xuICBpZiAoIXRoaXMuaXNXZWJDb250ZXh0KCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLk5vdEltcGxlbWVudGVkRXJyb3IoKTtcbiAgfVxuXG4gIGFyZ3MgPSB0aGlzLmNvbnZlcnRFbGVtZW50c0ZvckF0b21zKGFyZ3MpO1xuICB0aGlzLmFzeW5jV2FpdE1zID0gdGhpcy5hc3luY1dhaXRNcyB8fCAwO1xuICBjb25zdCBwcm9taXNlID0gdGhpcy5yZW1vdGUuZXhlY3V0ZUF0b21Bc3luYygnZXhlY3V0ZV9hc3luY19zY3JpcHQnLCBbc2NyaXB0LCBhcmdzLCB0aGlzLmFzeW5jV2FpdE1zXSwgdGhpcy5jdXJXZWJGcmFtZXMpO1xuICByZXR1cm4gYXdhaXQgdGhpcy53YWl0Rm9yQXRvbShwcm9taXNlKTtcbn07XG5cbi8vIE92ZXJyaWRlcyB0aGUgJ2V4ZWN1dGVNb2JpbGUnIGZ1bmN0aW9uIGRlZmluZWQgaW4gYXBwaXVtLWlvcy1kcml2ZXJcbmV4dGVuc2lvbnMuZXhlY3V0ZU1vYmlsZSA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVNb2JpbGUgKG1vYmlsZUNvbW1hbmQsIG9wdHMgPSB7fSkge1xuICBjb25zdCBjb21tYW5kTWFwID0ge1xuICAgIC8vcmVnaW9uIGdlc3R1cmVzIHN1cHBvcnRcbiAgICB0YXA6ICdtb2JpbGVUYXAnLFxuICAgIHNjcm9sbDogJ21vYmlsZVNjcm9sbCcsXG4gICAgc2VsZWN0UGlja2VyV2hlZWxWYWx1ZTogJ21vYmlsZVNlbGVjdFBpY2tlcldoZWVsVmFsdWUnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY4LXN3aXBlbGVmdD9sYW5ndWFnZT1vYmpjXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzQtc3dpcGVyaWdodD9sYW5ndWFnZT1vYmpjXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2Njctc3dpcGV1cD9sYW5ndWFnZT1vYmpjXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjQtc3dpcGVkb3duP2xhbmd1YWdlPW9iamNcbiAgICBzd2lwZTogJ21vYmlsZVN3aXBlJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2OS1waW5jaHdpdGhzY2FsZT9sYW5ndWFnZT1vYmpjXG4gICAgcGluY2g6ICdtb2JpbGVQaW5jaCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzMtZG91YmxldGFwP2xhbmd1YWdlPW9iamNcbiAgICBkb3VibGVUYXA6ICdtb2JpbGVEb3VibGVUYXAnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4Njc1LXR3b2ZpbmdlcnRhcD9sYW5ndWFnZT1vYmpjXG4gICAgdHdvRmluZ2VyVGFwOiAnbW9iaWxlVHdvRmluZ2VyVGFwJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3MS10YXB3aXRobnVtYmVyb2Z0YXBzP2xhbmd1YWdlPW9iamNcbiAgICB0YXBXaXRoTnVtYmVyT2ZUYXBzOiAnbW9iaWxlVGFwV2l0aE51bWJlck9mVGFwcycsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjMtcHJlc3Nmb3JkdXJhdGlvbj9sYW5ndWFnZT1vYmpjXG4gICAgdG91Y2hBbmRIb2xkOiAnbW9iaWxlVG91Y2hBbmRIb2xkJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3MC1wcmVzc2ZvcmR1cmF0aW9uP2xhbmd1YWdlPW9iamNcbiAgICBkcmFnRnJvbVRvRm9yRHVyYXRpb246ICdtb2JpbGVEcmFnRnJvbVRvRm9yRHVyYXRpb24nLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY1LXJvdGF0ZT9sYW5ndWFnZT1vYmpjXG4gICAgcm90YXRlRWxlbWVudDogJ21vYmlsZVJvdGF0ZUVsZW1lbnQnLFxuXG4gICAgLy9lbmRyZWdpb24gZ2VzdHVyZXMgc3VwcG9ydFxuICAgIGFsZXJ0OiAnbW9iaWxlSGFuZGxlQWxlcnQnLFxuXG4gICAgc2V0UGFzdGVib2FyZDogJ21vYmlsZVNldFBhc3RlYm9hcmQnLFxuICAgIGdldFBhc3RlYm9hcmQ6ICdtb2JpbGVHZXRQYXN0ZWJvYXJkJyxcblxuICAgIHNvdXJjZTogJ21vYmlsZUdldFNvdXJjZScsXG4gICAgZ2V0Q29udGV4dHM6ICdtb2JpbGVHZXRDb250ZXh0cycsXG5cbiAgICAvL3JlZ2lvbiBtdWx0aXBsZSBhcHBzIG1hbmFnZW1lbnRcbiAgICBpbnN0YWxsQXBwOiAnbW9iaWxlSW5zdGFsbEFwcCcsXG4gICAgaXNBcHBJbnN0YWxsZWQ6ICdtb2JpbGVJc0FwcEluc3RhbGxlZCcsXG4gICAgcmVtb3ZlQXBwOiAnbW9iaWxlUmVtb3ZlQXBwJyxcbiAgICBsYXVuY2hBcHA6ICdtb2JpbGVMYXVuY2hBcHAnLFxuICAgIHRlcm1pbmF0ZUFwcDogJ21vYmlsZVRlcm1pbmF0ZUFwcCcsXG4gICAgcXVlcnlBcHBTdGF0ZTogJ21vYmlsZVF1ZXJ5QXBwU3RhdGUnLFxuICAgIGFjdGl2YXRlQXBwOiAnbW9iaWxlQWN0aXZhdGVBcHAnLFxuICAgIC8vZW5kcmVnaW9uIG11bHRpcGxlIGFwcHMgbWFuYWdlbWVudFxuXG4gICAgdmlld3BvcnRTY3JlZW5zaG90OiAnZ2V0Vmlld3BvcnRTY3JlZW5zaG90JyxcbiAgICB2aWV3cG9ydFJlY3Q6ICdnZXRWaWV3cG9ydFJlY3QnLFxuXG4gICAgc3RhcnRQZXJmUmVjb3JkOiAnbW9iaWxlU3RhcnRQZXJmUmVjb3JkJyxcbiAgICBzdG9wUGVyZlJlY29yZDogJ21vYmlsZVN0b3BQZXJmUmVjb3JkJyxcblxuICAgIGluc3RhbGxDZXJ0aWZpY2F0ZTogJ21vYmlsZUluc3RhbGxDZXJ0aWZpY2F0ZScsXG5cbiAgICBzdGFydExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdGFydExvZ3NCcm9hZGNhc3QnLFxuICAgIHN0b3BMb2dzQnJvYWRjYXN0OiAnbW9iaWxlU3RvcExvZ3NCcm9hZGNhc3QnLFxuXG4gICAgYmF0dGVyeUluZm86ICdtb2JpbGVHZXRCYXR0ZXJ5SW5mbycsXG4gICAgZGV2aWNlSW5mbzogJ21vYmlsZUdldERldmljZUluZm8nLFxuICAgIGdldERldmljZVRpbWU6ICdtb2JpbGVHZXREZXZpY2VUaW1lJyxcbiAgICBhY3RpdmVBcHBJbmZvOiAnbW9iaWxlR2V0QWN0aXZlQXBwSW5mbycsXG4gICAgZGV2aWNlU2NyZWVuSW5mbzogJ2dldFNjcmVlbkluZm8nLFxuXG4gICAgcHJlc3NCdXR0b246ICdtb2JpbGVQcmVzc0J1dHRvbicsXG5cbiAgICBlbnJvbGxCaW9tZXRyaWM6ICdtb2JpbGVFbnJvbGxCaW9tZXRyaWMnLFxuICAgIHNlbmRCaW9tZXRyaWNNYXRjaDogJ21vYmlsZVNlbmRCaW9tZXRyaWNNYXRjaCcsXG4gICAgaXNCaW9tZXRyaWNFbnJvbGxlZDogJ21vYmlsZUlzQmlvbWV0cmljRW5yb2xsZWQnLFxuXG4gICAgY2xlYXJLZXljaGFpbnM6ICdtb2JpbGVDbGVhcktleWNoYWlucycsXG5cbiAgICBnZXRQZXJtaXNzaW9uOiAnbW9iaWxlR2V0UGVybWlzc2lvbicsXG4gICAgc2V0UGVybWlzc2lvbjogJ21vYmlsZVNldFBlcm1pc3Npb25zJyxcbiAgICByZXNldFBlcm1pc3Npb246ICdtb2JpbGVSZXNldFBlcm1pc3Npb24nLFxuXG4gICAgZ2V0QXBwZWFyYW5jZTogJ21vYmlsZUdldEFwcGVhcmFuY2UnLFxuICAgIHNldEFwcGVhcmFuY2U6ICdtb2JpbGVTZXRBcHBlYXJhbmNlJyxcblxuICAgIHNpcmlDb21tYW5kOiAnbW9iaWxlU2lyaUNvbW1hbmQnLFxuXG4gICAgZGVsZXRlRmlsZTogJ21vYmlsZURlbGV0ZUZpbGUnLFxuICAgIGRlbGV0ZUZvbGRlcjogJ21vYmlsZURlbGV0ZUZvbGRlcicsXG5cbiAgICBzdGFydEF1ZGlvUmVjb3JkaW5nOiAnc3RhcnRBdWRpb1JlY29yZGluZycsXG4gICAgc3RvcEF1ZGlvUmVjb3JkaW5nOiAnc3RvcEF1ZGlvUmVjb3JkaW5nJyxcblxuICAgIC8vIFhDVGVzdFxuICAgIHJ1blhDVGVzdDogJ21vYmlsZVJ1blhDVGVzdCcsXG4gICAgaW5zdGFsbFhDVGVzdEJ1bmRsZTogJ21vYmlsZUluc3RhbGxYQ1Rlc3RCdW5kbGUnLFxuICAgIGxpc3RYQ1Rlc3RCdW5kbGVzOiAnbW9iaWxlTGlzdFhDVGVzdEJ1bmRsZXMnLFxuICAgIGxpc3RYQ1Rlc3RzSW5UZXN0QnVuZGxlOiAnbW9iaWxlTGlzdFhDVGVzdHNJblRlc3RCdW5kbGUnLFxuXG4gICAgcHVzaE5vdGlmaWNhdGlvbjogJ21vYmlsZVB1c2hOb3RpZmljYXRpb24nLFxuICAgIGV4cGVjdE5vdGlmaWNhdGlvbjogJ21vYmlsZUV4cGVjdE5vdGlmaWNhdGlvbicsXG4gIH07XG5cbiAgaWYgKCFfLmhhcyhjb21tYW5kTWFwLCBtb2JpbGVDb21tYW5kKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuVW5rbm93bkNvbW1hbmRFcnJvcihgVW5rbm93biBtb2JpbGUgY29tbWFuZCAnJHttb2JpbGVDb21tYW5kfScuIE9ubHkgJHtfLmtleXMoY29tbWFuZE1hcCkuam9pbignLCAnKX0gY29tbWFuZHMgYXJlIHN1cHBvcnRlZC5gKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpc1tjb21tYW5kTWFwW21vYmlsZUNvbW1hbmRdXShvcHRzKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGV4dGVuc2lvbnM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0=
113
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9leGVjdXRlLmpzIl0sIm5hbWVzIjpbImV4dGVuc2lvbnMiLCJPYmplY3QiLCJhc3NpZ24iLCJpb3NDb21tYW5kcyIsImV4ZWN1dGUiLCJpb3NFeGVjdXRlIiwic2NyaXB0IiwiYXJncyIsIm1hdGNoIiwiaXNXZWJDb250ZXh0IiwiZXJyb3JzIiwiTm90SW1wbGVtZW50ZWRFcnJvciIsImNhbGwiLCJleGVjdXRlQXN5bmMiLCJjb252ZXJ0RWxlbWVudHNGb3JBdG9tcyIsImFzeW5jV2FpdE1zIiwicHJvbWlzZSIsInJlbW90ZSIsImV4ZWN1dGVBdG9tQXN5bmMiLCJjdXJXZWJGcmFtZXMiLCJ3YWl0Rm9yQXRvbSIsImV4ZWN1dGVNb2JpbGUiLCJtb2JpbGVDb21tYW5kIiwib3B0cyIsImNvbW1hbmRNYXAiLCJ0YXAiLCJzY3JvbGwiLCJzZWxlY3RQaWNrZXJXaGVlbFZhbHVlIiwic3dpcGUiLCJwaW5jaCIsImRvdWJsZVRhcCIsInR3b0ZpbmdlclRhcCIsInRhcFdpdGhOdW1iZXJPZlRhcHMiLCJ0b3VjaEFuZEhvbGQiLCJkcmFnRnJvbVRvRm9yRHVyYXRpb24iLCJyb3RhdGVFbGVtZW50IiwiYWxlcnQiLCJzZXRQYXN0ZWJvYXJkIiwiZ2V0UGFzdGVib2FyZCIsInNvdXJjZSIsImdldENvbnRleHRzIiwiaW5zdGFsbEFwcCIsImlzQXBwSW5zdGFsbGVkIiwicmVtb3ZlQXBwIiwibGF1bmNoQXBwIiwidGVybWluYXRlQXBwIiwicXVlcnlBcHBTdGF0ZSIsImFjdGl2YXRlQXBwIiwidmlld3BvcnRTY3JlZW5zaG90Iiwidmlld3BvcnRSZWN0Iiwic3RhcnRQZXJmUmVjb3JkIiwic3RvcFBlcmZSZWNvcmQiLCJpbnN0YWxsQ2VydGlmaWNhdGUiLCJzdGFydExvZ3NCcm9hZGNhc3QiLCJzdG9wTG9nc0Jyb2FkY2FzdCIsImJhdHRlcnlJbmZvIiwiZGV2aWNlSW5mbyIsImdldERldmljZVRpbWUiLCJhY3RpdmVBcHBJbmZvIiwiZGV2aWNlU2NyZWVuSW5mbyIsInByZXNzQnV0dG9uIiwiZW5yb2xsQmlvbWV0cmljIiwic2VuZEJpb21ldHJpY01hdGNoIiwiaXNCaW9tZXRyaWNFbnJvbGxlZCIsImNsZWFyS2V5Y2hhaW5zIiwiZ2V0UGVybWlzc2lvbiIsInNldFBlcm1pc3Npb24iLCJyZXNldFBlcm1pc3Npb24iLCJnZXRBcHBlYXJhbmNlIiwic2V0QXBwZWFyYW5jZSIsInNpcmlDb21tYW5kIiwiZGVsZXRlRmlsZSIsImRlbGV0ZUZvbGRlciIsInN0YXJ0QXVkaW9SZWNvcmRpbmciLCJzdG9wQXVkaW9SZWNvcmRpbmciLCJydW5YQ1Rlc3QiLCJpbnN0YWxsWENUZXN0QnVuZGxlIiwibGlzdFhDVGVzdEJ1bmRsZXMiLCJsaXN0WENUZXN0c0luVGVzdEJ1bmRsZSIsInB1c2hOb3RpZmljYXRpb24iLCJleHBlY3ROb3RpZmljYXRpb24iLCJwZXJmb3JtSW9IaWRFdmVudCIsIl8iLCJoYXMiLCJVbmtub3duQ29tbWFuZEVycm9yIiwia2V5cyIsImpvaW4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0EsSUFBSUEsVUFBVSxHQUFHLEVBQWpCO0FBRUFDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRixVQUFkLEVBQTBCRyw2QkFBWUMsT0FBdEM7QUFFQSxNQUFNQyxVQUFVLEdBQUdMLFVBQVUsQ0FBQ0ksT0FBOUI7O0FBQ0FKLFVBQVUsQ0FBQ0ksT0FBWCxHQUFxQixlQUFlQSxPQUFmLENBQXdCRSxNQUF4QixFQUFnQ0MsSUFBaEMsRUFBc0M7QUFDekQsTUFBSSxDQUFDRCxNQUFNLENBQUNFLEtBQVAsQ0FBYSxVQUFiLENBQUQsSUFBNkIsQ0FBQyxLQUFLQyxZQUFMLEVBQWxDLEVBQXVEO0FBQ3JELFVBQU0sSUFBSUMseUJBQU9DLG1CQUFYLEVBQU47QUFDRDs7QUFFRCxTQUFPLE1BQU1OLFVBQVUsQ0FBQ08sSUFBWCxDQUFnQixJQUFoQixFQUFzQk4sTUFBdEIsRUFBOEJDLElBQTlCLENBQWI7QUFDRCxDQU5EOztB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QUUscUJBckVFO0FBc0VqQkMsSUFBQUEsYUFBYSxFQUFFLHNCQXRFRTtBQXVFakJDLElBQUFBLGVBQWUsRUFBRSx1QkF2RUE7QUF5RWpCQyxJQUFBQSxhQUFhLEVBQUUscUJBekVFO0FBMEVqQkMsSUFBQUEsYUFBYSxFQUFFLHFCQTFFRTtBQTRFakJDLElBQUFBLFdBQVcsRUFBRSxtQkE1RUk7QUE4RWpCQyxJQUFBQSxVQUFVLEVBQUUsa0JBOUVLO0FBK0VqQkMsSUFBQUEsWUFBWSxFQUFFLG9CQS9FRztBQWlGakJDLElBQUFBLG1CQUFtQixFQUFFLHFCQWpGSjtBQWtGakJDLElBQUFBLGtCQUFrQixFQUFFLG9CQWxGSDtBQXFGakJDLElBQUFBLFNBQVMsRUFBRSxpQkFyRk07QUFzRmpCQyxJQUFBQSxtQkFBbUIsRUFBRSwyQkF0Rko7QUF1RmpCQyxJQUFBQSxpQkFBaUIsRUFBRSx5QkF2RkY7QUF3RmpCQyxJQUFBQSx1QkFBdUIsRUFBRSwrQkF4RlI7QUEwRmpCQyxJQUFBQSxnQkFBZ0IsRUFBRSx3QkExRkQ7QUEyRmpCQyxJQUFBQSxrQkFBa0IsRUFBRSwwQkEzRkg7QUE2RmpCQyxJQUFBQSxpQkFBaUIsRUFBRTtBQTdGRixHQUFuQjs7QUFnR0EsTUFBSSxDQUFDQyxnQkFBRUMsR0FBRixDQUFNM0QsVUFBTixFQUFrQkYsYUFBbEIsQ0FBTCxFQUF1QztBQUNyQyxVQUFNLElBQUlaLHlCQUFPMEUsbUJBQVgsQ0FBZ0MsMkJBQTBCOUQsYUFBYyxXQUFVNEQsZ0JBQUVHLElBQUYsQ0FBTzdELFVBQVAsRUFBbUI4RCxJQUFuQixDQUF3QixJQUF4QixDQUE4QiwwQkFBaEgsQ0FBTjtBQUNEOztBQUNELFNBQU8sTUFBTSxLQUFLOUQsVUFBVSxDQUFDRixhQUFELENBQWYsRUFBZ0NDLElBQWhDLENBQWI7QUFDRCxDQXJHRDs7ZUF1R2V2QixVIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGlvc0NvbW1hbmRzIH0gZnJvbSAnYXBwaXVtLWlvcy1kcml2ZXInO1xuaW1wb3J0IHsgZXJyb3JzIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcblxuXG5sZXQgZXh0ZW5zaW9ucyA9IHt9O1xuXG5PYmplY3QuYXNzaWduKGV4dGVuc2lvbnMsIGlvc0NvbW1hbmRzLmV4ZWN1dGUpO1xuXG5jb25zdCBpb3NFeGVjdXRlID0gZXh0ZW5zaW9ucy5leGVjdXRlO1xuZXh0ZW5zaW9ucy5leGVjdXRlID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZSAoc2NyaXB0LCBhcmdzKSB7XG4gIGlmICghc2NyaXB0Lm1hdGNoKC9ebW9iaWxlOi8pICYmICF0aGlzLmlzV2ViQ29udGV4dCgpKSB7XG4gICAgdGhyb3cgbmV3IGVycm9ycy5Ob3RJbXBsZW1lbnRlZEVycm9yKCk7XG4gIH1cblxuICByZXR1cm4gYXdhaXQgaW9zRXhlY3V0ZS5jYWxsKHRoaXMsIHNjcmlwdCwgYXJncyk7XG59O1xuXG5leHRlbnNpb25zLmV4ZWN1dGVBc3luYyA9IGFzeW5jIGZ1bmN0aW9uIGV4ZWN1dGVBc3luYyAoc2NyaXB0LCBhcmdzKSB7XG4gIGlmICghdGhpcy5pc1dlYkNvbnRleHQoKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuTm90SW1wbGVtZW50ZWRFcnJvcigpO1xuICB9XG5cbiAgYXJncyA9IHRoaXMuY29udmVydEVsZW1lbnRzRm9yQXRvbXMoYXJncyk7XG4gIHRoaXMuYXN5bmNXYWl0TXMgPSB0aGlzLmFzeW5jV2FpdE1zIHx8IDA7XG4gIGNvbnN0IHByb21pc2UgPSB0aGlzLnJlbW90ZS5leGVjdXRlQXRvbUFzeW5jKCdleGVjdXRlX2FzeW5jX3NjcmlwdCcsIFtzY3JpcHQsIGFyZ3MsIHRoaXMuYXN5bmNXYWl0TXNdLCB0aGlzLmN1cldlYkZyYW1lcyk7XG4gIHJldHVybiBhd2FpdCB0aGlzLndhaXRGb3JBdG9tKHByb21pc2UpO1xufTtcblxuLy8gT3ZlcnJpZGVzIHRoZSAnZXhlY3V0ZU1vYmlsZScgZnVuY3Rpb24gZGVmaW5lZCBpbiBhcHBpdW0taW9zLWRyaXZlclxuZXh0ZW5zaW9ucy5leGVjdXRlTW9iaWxlID0gYXN5bmMgZnVuY3Rpb24gZXhlY3V0ZU1vYmlsZSAobW9iaWxlQ29tbWFuZCwgb3B0cyA9IHt9KSB7XG4gIGNvbnN0IGNvbW1hbmRNYXAgPSB7XG4gICAgLy9yZWdpb24gZ2VzdHVyZXMgc3VwcG9ydFxuICAgIHRhcDogJ21vYmlsZVRhcCcsXG4gICAgc2Nyb2xsOiAnbW9iaWxlU2Nyb2xsJyxcbiAgICBzZWxlY3RQaWNrZXJXaGVlbFZhbHVlOiAnbW9iaWxlU2VsZWN0UGlja2VyV2hlZWxWYWx1ZScsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2Njgtc3dpcGVsZWZ0P2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3NC1zd2lwZXJpZ2h0P2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2Ny1zd2lwZXVwP2xhbmd1YWdlPW9iamNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2NC1zd2lwZWRvd24/bGFuZ3VhZ2U9b2JqY1xuICAgIHN3aXBlOiAnbW9iaWxlU3dpcGUnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjY5LXBpbmNod2l0aHNjYWxlP2xhbmd1YWdlPW9iamNcbiAgICBwaW5jaDogJ21vYmlsZVBpbmNoJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY3My1kb3VibGV0YXA/bGFuZ3VhZ2U9b2JqY1xuICAgIGRvdWJsZVRhcDogJ21vYmlsZURvdWJsZVRhcCcsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NzUtdHdvZmluZ2VydGFwP2xhbmd1YWdlPW9iamNcbiAgICB0d29GaW5nZXJUYXA6ICdtb2JpbGVUd29GaW5nZXJUYXAnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjcxLXRhcHdpdGhudW1iZXJvZnRhcHM/bGFuZ3VhZ2U9b2JqY1xuICAgIHRhcFdpdGhOdW1iZXJPZlRhcHM6ICdtb2JpbGVUYXBXaXRoTnVtYmVyT2ZUYXBzJyxcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5hcHBsZS5jb20vZG9jdW1lbnRhdGlvbi94Y3Rlc3QveGN1aWVsZW1lbnQvMTYxODY2My1wcmVzc2ZvcmR1cmF0aW9uP2xhbmd1YWdlPW9iamNcbiAgICB0b3VjaEFuZEhvbGQ6ICdtb2JpbGVUb3VjaEFuZEhvbGQnLFxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9kb2N1bWVudGF0aW9uL3hjdGVzdC94Y3VpZWxlbWVudC8xNjE4NjcwLXByZXNzZm9yZHVyYXRpb24/bGFuZ3VhZ2U9b2JqY1xuICAgIGRyYWdGcm9tVG9Gb3JEdXJhdGlvbjogJ21vYmlsZURyYWdGcm9tVG9Gb3JEdXJhdGlvbicsXG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2RvY3VtZW50YXRpb24veGN0ZXN0L3hjdWllbGVtZW50LzE2MTg2NjUtcm90YXRlP2xhbmd1YWdlPW9iamNcbiAgICByb3RhdGVFbGVtZW50OiAnbW9iaWxlUm90YXRlRWxlbWVudCcsXG5cbiAgICAvL2VuZHJlZ2lvbiBnZXN0dXJlcyBzdXBwb3J0XG4gICAgYWxlcnQ6ICdtb2JpbGVIYW5kbGVBbGVydCcsXG5cbiAgICBzZXRQYXN0ZWJvYXJkOiAnbW9iaWxlU2V0UGFzdGVib2FyZCcsXG4gICAgZ2V0UGFzdGVib2FyZDogJ21vYmlsZUdldFBhc3RlYm9hcmQnLFxuXG4gICAgc291cmNlOiAnbW9iaWxlR2V0U291cmNlJyxcbiAgICBnZXRDb250ZXh0czogJ21vYmlsZUdldENvbnRleHRzJyxcblxuICAgIC8vcmVnaW9uIG11bHRpcGxlIGFwcHMgbWFuYWdlbWVudFxuICAgIGluc3RhbGxBcHA6ICdtb2JpbGVJbnN0YWxsQXBwJyxcbiAgICBpc0FwcEluc3RhbGxlZDogJ21vYmlsZUlzQXBwSW5zdGFsbGVkJyxcbiAgICByZW1vdmVBcHA6ICdtb2JpbGVSZW1vdmVBcHAnLFxuICAgIGxhdW5jaEFwcDogJ21vYmlsZUxhdW5jaEFwcCcsXG4gICAgdGVybWluYXRlQXBwOiAnbW9iaWxlVGVybWluYXRlQXBwJyxcbiAgICBxdWVyeUFwcFN0YXRlOiAnbW9iaWxlUXVlcnlBcHBTdGF0ZScsXG4gICAgYWN0aXZhdGVBcHA6ICdtb2JpbGVBY3RpdmF0ZUFwcCcsXG4gICAgLy9lbmRyZWdpb24gbXVsdGlwbGUgYXBwcyBtYW5hZ2VtZW50XG5cbiAgICB2aWV3cG9ydFNjcmVlbnNob3Q6ICdnZXRWaWV3cG9ydFNjcmVlbnNob3QnLFxuICAgIHZpZXdwb3J0UmVjdDogJ2dldFZpZXdwb3J0UmVjdCcsXG5cbiAgICBzdGFydFBlcmZSZWNvcmQ6ICdtb2JpbGVTdGFydFBlcmZSZWNvcmQnLFxuICAgIHN0b3BQZXJmUmVjb3JkOiAnbW9iaWxlU3RvcFBlcmZSZWNvcmQnLFxuXG4gICAgaW5zdGFsbENlcnRpZmljYXRlOiAnbW9iaWxlSW5zdGFsbENlcnRpZmljYXRlJyxcblxuICAgIHN0YXJ0TG9nc0Jyb2FkY2FzdDogJ21vYmlsZVN0YXJ0TG9nc0Jyb2FkY2FzdCcsXG4gICAgc3RvcExvZ3NCcm9hZGNhc3Q6ICdtb2JpbGVTdG9wTG9nc0Jyb2FkY2FzdCcsXG5cbiAgICBiYXR0ZXJ5SW5mbzogJ21vYmlsZUdldEJhdHRlcnlJbmZvJyxcbiAgICBkZXZpY2VJbmZvOiAnbW9iaWxlR2V0RGV2aWNlSW5mbycsXG4gICAgZ2V0RGV2aWNlVGltZTogJ21vYmlsZUdldERldmljZVRpbWUnLFxuICAgIGFjdGl2ZUFwcEluZm86ICdtb2JpbGVHZXRBY3RpdmVBcHBJbmZvJyxcbiAgICBkZXZpY2VTY3JlZW5JbmZvOiAnZ2V0U2NyZWVuSW5mbycsXG5cbiAgICBwcmVzc0J1dHRvbjogJ21vYmlsZVByZXNzQnV0dG9uJyxcblxuICAgIGVucm9sbEJpb21ldHJpYzogJ21vYmlsZUVucm9sbEJpb21ldHJpYycsXG4gICAgc2VuZEJpb21ldHJpY01hdGNoOiAnbW9iaWxlU2VuZEJpb21ldHJpY01hdGNoJyxcbiAgICBpc0Jpb21ldHJpY0Vucm9sbGVkOiAnbW9iaWxlSXNCaW9tZXRyaWNFbnJvbGxlZCcsXG5cbiAgICBjbGVhcktleWNoYWluczogJ21vYmlsZUNsZWFyS2V5Y2hhaW5zJyxcblxuICAgIGdldFBlcm1pc3Npb246ICdtb2JpbGVHZXRQZXJtaXNzaW9uJyxcbiAgICBzZXRQZXJtaXNzaW9uOiAnbW9iaWxlU2V0UGVybWlzc2lvbnMnLFxuICAgIHJlc2V0UGVybWlzc2lvbjogJ21vYmlsZVJlc2V0UGVybWlzc2lvbicsXG5cbiAgICBnZXRBcHBlYXJhbmNlOiAnbW9iaWxlR2V0QXBwZWFyYW5jZScsXG4gICAgc2V0QXBwZWFyYW5jZTogJ21vYmlsZVNldEFwcGVhcmFuY2UnLFxuXG4gICAgc2lyaUNvbW1hbmQ6ICdtb2JpbGVTaXJpQ29tbWFuZCcsXG5cbiAgICBkZWxldGVGaWxlOiAnbW9iaWxlRGVsZXRlRmlsZScsXG4gICAgZGVsZXRlRm9sZGVyOiAnbW9iaWxlRGVsZXRlRm9sZGVyJyxcblxuICAgIHN0YXJ0QXVkaW9SZWNvcmRpbmc6ICdzdGFydEF1ZGlvUmVjb3JkaW5nJyxcbiAgICBzdG9wQXVkaW9SZWNvcmRpbmc6ICdzdG9wQXVkaW9SZWNvcmRpbmcnLFxuXG4gICAgLy8gWENUZXN0XG4gICAgcnVuWENUZXN0OiAnbW9iaWxlUnVuWENUZXN0JyxcbiAgICBpbnN0YWxsWENUZXN0QnVuZGxlOiAnbW9iaWxlSW5zdGFsbFhDVGVzdEJ1bmRsZScsXG4gICAgbGlzdFhDVGVzdEJ1bmRsZXM6ICdtb2JpbGVMaXN0WENUZXN0QnVuZGxlcycsXG4gICAgbGlzdFhDVGVzdHNJblRlc3RCdW5kbGU6ICdtb2JpbGVMaXN0WENUZXN0c0luVGVzdEJ1bmRsZScsXG5cbiAgICBwdXNoTm90aWZpY2F0aW9uOiAnbW9iaWxlUHVzaE5vdGlmaWNhdGlvbicsXG4gICAgZXhwZWN0Tm90aWZpY2F0aW9uOiAnbW9iaWxlRXhwZWN0Tm90aWZpY2F0aW9uJyxcblxuICAgIHBlcmZvcm1Jb0hpZEV2ZW50OiAnbW9iaWxlUGVyZm9ybUlvSGlkRXZlbnQnLFxuICB9O1xuXG4gIGlmICghXy5oYXMoY29tbWFuZE1hcCwgbW9iaWxlQ29tbWFuZCkpIHtcbiAgICB0aHJvdyBuZXcgZXJyb3JzLlVua25vd25Db21tYW5kRXJyb3IoYFVua25vd24gbW9iaWxlIGNvbW1hbmQgJyR7bW9iaWxlQ29tbWFuZH0nLiBPbmx5ICR7Xy5rZXlzKGNvbW1hbmRNYXApLmpvaW4oJywgJyl9IGNvbW1hbmRzIGFyZSBzdXBwb3J0ZWQuYCk7XG4gIH1cbiAgcmV0dXJuIGF3YWl0IHRoaXNbY29tbWFuZE1hcFttb2JpbGVDb21tYW5kXV0ob3B0cyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBleHRlbnNpb25zO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvZXhlY3V0ZS5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
@@ -77,10 +77,12 @@ var _xctest = _interopRequireDefault(require("./xctest"));
77
77
 
78
78
  var _notifications = _interopRequireDefault(require("./notifications"));
79
79
 
80
- let commands = {};
81
- Object.assign(commands, _context.default, _execute.default, _gesture.default, _find.default, _proxyHelper.default, _source.default, _general.default, _log.default, _web.default, _timeouts.default, _navigation.default, _element.default, _fileMovement.default, _alert.default, _screenshots.default, _pasteboard.default, _location.default, _lock.default, _recordscreen.default, _appManagement.default, _performance.default, _clipboard.default, _certificate.default, _battery.default, _cookies.default, _biometric.default, _keychains.default, _permissions.default, _deviceInfo.default, _activeAppInfo.default, _recordAudio.default, _appearance.default, _xctest.default, _notifications.default);
80
+ var _iohid = _interopRequireDefault(require("./iohid"));
81
+
82
+ const commands = {};
83
+ Object.assign(commands, _context.default, _execute.default, _gesture.default, _find.default, _proxyHelper.default, _source.default, _general.default, _log.default, _web.default, _timeouts.default, _navigation.default, _element.default, _fileMovement.default, _alert.default, _screenshots.default, _pasteboard.default, _location.default, _lock.default, _recordscreen.default, _appManagement.default, _performance.default, _clipboard.default, _certificate.default, _battery.default, _cookies.default, _biometric.default, _keychains.default, _permissions.default, _deviceInfo.default, _activeAppInfo.default, _recordAudio.default, _appearance.default, _xctest.default, _notifications.default, _iohid.default);
82
84
  var _default = commands;
83
85
  exports.default = _default;require('source-map-support').install();
84
86
 
85
87
 
86
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImNvbnRleHRDb21tYW5kcyIsImV4ZWN1dGVFeHRlbnNpb25zIiwiZ2VzdHVyZUV4dGVuc2lvbnMiLCJmaW5kRXh0ZW5zaW9ucyIsInByb3h5SGVscGVyRXh0ZW5zaW9ucyIsInNvdXJjZUV4dGVuc2lvbnMiLCJnZW5lcmFsRXh0ZW5zaW9ucyIsImxvZ0V4dGVuc2lvbnMiLCJ3ZWJFeHRlbnNpb25zIiwidGltZW91dEV4dGVuc2lvbnMiLCJuYXZpZ2F0aW9uRXh0ZW5zaW9ucyIsImVsZW1lbnRFeHRlbnNpb25zIiwiZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyIsImFsZXJ0RXh0ZW5zaW9ucyIsInNjcmVlbnNob3RFeHRlbnNpb25zIiwicGFzdGVib2FyZEV4dGVuc2lvbnMiLCJsb2NhdGlvbkV4dGVuc2lvbnMiLCJsb2NrRXh0ZW5zaW9ucyIsInJlY29yZFNjcmVlbkV4dGVuc2lvbnMiLCJhcHBNYW5hZ2VtZW50RXh0ZW5zaW9ucyIsInBlcmZvcm1hbmNlRXh0ZW5zaW9ucyIsImNsaXBib2FyZEV4dGVuc2lvbnMiLCJjZXJ0aWZpY2F0ZUV4dGVuc2lvbnMiLCJiYXR0ZXJ5RXh0ZW5zaW9ucyIsImNvb2tpZXNFeHRlbnNpb25zIiwiYmlvbWV0cmljRXh0ZW5zaW9ucyIsImtleWNoYWluc0V4dGVuc2lvbnMiLCJwZXJtaXNzaW9uc0V4dGVuc2lvbnMiLCJkZXZpY2VJbmZvRXh0ZW5zaW9ucyIsImFjdGl2ZUFwcEluZm9FeHRlbnNpb25zIiwicmVjb3JkQXVkaW9FeHRlbnNpb25zIiwiYXBwZWFyYW5jZUV4dGVuc2lvbnMiLCJ4Y3Rlc3RFeHRlbnNpb25zIiwibm90aWZpY2F0aW9uc0V4dGVuc2lvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsSUFBSUEsUUFBUSxHQUFHLEVBQWY7QUFFQUMsTUFBTSxDQUFDQyxNQUFQLENBQWNGLFFBQWQsRUFBd0JHLGdCQUF4QixFQUF5Q0MsZ0JBQXpDLEVBQ0VDLGdCQURGLEVBQ3FCQyxhQURyQixFQUNxQ0Msb0JBRHJDLEVBQzREQyxlQUQ1RCxFQUVFQyxnQkFGRixFQUVxQkMsWUFGckIsRUFFb0NDLFlBRnBDLEVBRW1EQyxpQkFGbkQsRUFHRUMsbUJBSEYsRUFHd0JDLGdCQUh4QixFQUcyQ0MscUJBSDNDLEVBSUVDLGNBSkYsRUFJbUJDLG9CQUpuQixFQUl5Q0MsbUJBSnpDLEVBSStEQyxpQkFKL0QsRUFLRUMsYUFMRixFQUtrQkMscUJBTGxCLEVBSzBDQyxzQkFMMUMsRUFLbUVDLG9CQUxuRSxFQU1FQyxrQkFORixFQU11QkMsb0JBTnZCLEVBTThDQyxnQkFOOUMsRUFNaUVDLGdCQU5qRSxFQU9FQyxrQkFQRixFQU91QkMsa0JBUHZCLEVBTzRDQyxvQkFQNUMsRUFPbUVDLG1CQVBuRSxFQVFFQyxzQkFSRixFQVEyQkMsb0JBUjNCLEVBUWtEQyxtQkFSbEQsRUFRd0VDLGVBUnhFLEVBU0VDLHNCQVRGO2VBWWVwQyxRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbnRleHRDb21tYW5kcyBmcm9tICcuL2NvbnRleHQnO1xuaW1wb3J0IGV4ZWN1dGVFeHRlbnNpb25zIGZyb20gJy4vZXhlY3V0ZSc7XG5pbXBvcnQgZ2VzdHVyZUV4dGVuc2lvbnMgZnJvbSAnLi9nZXN0dXJlJztcbmltcG9ydCBmaW5kRXh0ZW5zaW9ucyBmcm9tICcuL2ZpbmQnO1xuaW1wb3J0IHByb3h5SGVscGVyRXh0ZW5zaW9ucyBmcm9tICcuL3Byb3h5LWhlbHBlcic7XG5pbXBvcnQgYWxlcnRFeHRlbnNpb25zIGZyb20gJy4vYWxlcnQnO1xuaW1wb3J0IHNvdXJjZUV4dGVuc2lvbnMgZnJvbSAnLi9zb3VyY2UnO1xuaW1wb3J0IGdlbmVyYWxFeHRlbnNpb25zIGZyb20gJy4vZ2VuZXJhbCc7XG5pbXBvcnQgbG9nRXh0ZW5zaW9ucyBmcm9tICcuL2xvZyc7XG5pbXBvcnQgd2ViRXh0ZW5zaW9ucyBmcm9tICcuL3dlYic7XG5pbXBvcnQgdGltZW91dEV4dGVuc2lvbnMgZnJvbSAnLi90aW1lb3V0cyc7XG5pbXBvcnQgbmF2aWdhdGlvbkV4dGVuc2lvbnMgZnJvbSAnLi9uYXZpZ2F0aW9uJztcbmltcG9ydCBlbGVtZW50RXh0ZW5zaW9ucyBmcm9tICcuL2VsZW1lbnQnO1xuaW1wb3J0IGZpbGVNb3ZlbWVudEV4dGVuc2lvbnMgZnJvbSAnLi9maWxlLW1vdmVtZW50JztcbmltcG9ydCBzY3JlZW5zaG90RXh0ZW5zaW9ucyBmcm9tICcuL3NjcmVlbnNob3RzJztcbmltcG9ydCBwYXN0ZWJvYXJkRXh0ZW5zaW9ucyBmcm9tICcuL3Bhc3RlYm9hcmQnO1xuaW1wb3J0IGxvY2F0aW9uRXh0ZW5zaW9ucyBmcm9tICcuL2xvY2F0aW9uJztcbmltcG9ydCByZWNvcmRBdWRpb0V4dGVuc2lvbnMgZnJvbSAnLi9yZWNvcmQtYXVkaW8nO1xuaW1wb3J0IHJlY29yZFNjcmVlbkV4dGVuc2lvbnMgZnJvbSAnLi9yZWNvcmRzY3JlZW4nO1xuaW1wb3J0IGxvY2tFeHRlbnNpb25zIGZyb20gJy4vbG9jayc7XG5pbXBvcnQgYXBwTWFuYWdlbWVudEV4dGVuc2lvbnMgZnJvbSAnLi9hcHAtbWFuYWdlbWVudCc7XG5pbXBvcnQgcGVyZm9ybWFuY2VFeHRlbnNpb25zIGZyb20gJy4vcGVyZm9ybWFuY2UnO1xuaW1wb3J0IGNsaXBib2FyZEV4dGVuc2lvbnMgZnJvbSAnLi9jbGlwYm9hcmQnO1xuaW1wb3J0IGNlcnRpZmljYXRlRXh0ZW5zaW9ucyBmcm9tICcuL2NlcnRpZmljYXRlJztcbmltcG9ydCBiYXR0ZXJ5RXh0ZW5zaW9ucyBmcm9tICcuL2JhdHRlcnknO1xuaW1wb3J0IGRldmljZUluZm9FeHRlbnNpb25zIGZyb20gJy4vZGV2aWNlSW5mbyc7XG5pbXBvcnQgYWN0aXZlQXBwSW5mb0V4dGVuc2lvbnMgZnJvbSAnLi9hY3RpdmVBcHBJbmZvJztcbmltcG9ydCBjb29raWVzRXh0ZW5zaW9ucyBmcm9tICcuL2Nvb2tpZXMnO1xuaW1wb3J0IGJpb21ldHJpY0V4dGVuc2lvbnMgZnJvbSAnLi9iaW9tZXRyaWMnO1xuaW1wb3J0IGtleWNoYWluc0V4dGVuc2lvbnMgZnJvbSAnLi9rZXljaGFpbnMnO1xuaW1wb3J0IHBlcm1pc3Npb25zRXh0ZW5zaW9ucyBmcm9tICcuL3Blcm1pc3Npb25zJztcbmltcG9ydCBhcHBlYXJhbmNlRXh0ZW5zaW9ucyBmcm9tICcuL2FwcGVhcmFuY2UnO1xuaW1wb3J0IHhjdGVzdEV4dGVuc2lvbnMgZnJvbSAnLi94Y3Rlc3QnO1xuaW1wb3J0IG5vdGlmaWNhdGlvbnNFeHRlbnNpb25zIGZyb20gJy4vbm90aWZpY2F0aW9ucyc7XG5cbmxldCBjb21tYW5kcyA9IHt9O1xuXG5PYmplY3QuYXNzaWduKGNvbW1hbmRzLCBjb250ZXh0Q29tbWFuZHMsIGV4ZWN1dGVFeHRlbnNpb25zLFxuICBnZXN0dXJlRXh0ZW5zaW9ucywgZmluZEV4dGVuc2lvbnMsIHByb3h5SGVscGVyRXh0ZW5zaW9ucywgc291cmNlRXh0ZW5zaW9ucyxcbiAgZ2VuZXJhbEV4dGVuc2lvbnMsIGxvZ0V4dGVuc2lvbnMsIHdlYkV4dGVuc2lvbnMsIHRpbWVvdXRFeHRlbnNpb25zLFxuICBuYXZpZ2F0aW9uRXh0ZW5zaW9ucywgZWxlbWVudEV4dGVuc2lvbnMsIGZpbGVNb3ZlbWVudEV4dGVuc2lvbnMsXG4gIGFsZXJ0RXh0ZW5zaW9ucywgc2NyZWVuc2hvdEV4dGVuc2lvbnMsIHBhc3RlYm9hcmRFeHRlbnNpb25zLCBsb2NhdGlvbkV4dGVuc2lvbnMsXG4gIGxvY2tFeHRlbnNpb25zLCByZWNvcmRTY3JlZW5FeHRlbnNpb25zLCBhcHBNYW5hZ2VtZW50RXh0ZW5zaW9ucywgcGVyZm9ybWFuY2VFeHRlbnNpb25zLFxuICBjbGlwYm9hcmRFeHRlbnNpb25zLCBjZXJ0aWZpY2F0ZUV4dGVuc2lvbnMsIGJhdHRlcnlFeHRlbnNpb25zLCBjb29raWVzRXh0ZW5zaW9ucyxcbiAgYmlvbWV0cmljRXh0ZW5zaW9ucywga2V5Y2hhaW5zRXh0ZW5zaW9ucywgcGVybWlzc2lvbnNFeHRlbnNpb25zLCBkZXZpY2VJbmZvRXh0ZW5zaW9ucyxcbiAgYWN0aXZlQXBwSW5mb0V4dGVuc2lvbnMsIHJlY29yZEF1ZGlvRXh0ZW5zaW9ucywgYXBwZWFyYW5jZUV4dGVuc2lvbnMsIHhjdGVzdEV4dGVuc2lvbnMsXG4gIG5vdGlmaWNhdGlvbnNFeHRlbnNpb25zLFxuKTtcblxuZXhwb3J0IGRlZmF1bHQgY29tbWFuZHM7XG4iXSwiZmlsZSI6ImxpYi9jb21tYW5kcy9pbmRleC5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9
88
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pbmRleC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImNvbnRleHRDb21tYW5kcyIsImV4ZWN1dGVFeHRlbnNpb25zIiwiZ2VzdHVyZUV4dGVuc2lvbnMiLCJmaW5kRXh0ZW5zaW9ucyIsInByb3h5SGVscGVyRXh0ZW5zaW9ucyIsInNvdXJjZUV4dGVuc2lvbnMiLCJnZW5lcmFsRXh0ZW5zaW9ucyIsImxvZ0V4dGVuc2lvbnMiLCJ3ZWJFeHRlbnNpb25zIiwidGltZW91dEV4dGVuc2lvbnMiLCJuYXZpZ2F0aW9uRXh0ZW5zaW9ucyIsImVsZW1lbnRFeHRlbnNpb25zIiwiZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyIsImFsZXJ0RXh0ZW5zaW9ucyIsInNjcmVlbnNob3RFeHRlbnNpb25zIiwicGFzdGVib2FyZEV4dGVuc2lvbnMiLCJsb2NhdGlvbkV4dGVuc2lvbnMiLCJsb2NrRXh0ZW5zaW9ucyIsInJlY29yZFNjcmVlbkV4dGVuc2lvbnMiLCJhcHBNYW5hZ2VtZW50RXh0ZW5zaW9ucyIsInBlcmZvcm1hbmNlRXh0ZW5zaW9ucyIsImNsaXBib2FyZEV4dGVuc2lvbnMiLCJjZXJ0aWZpY2F0ZUV4dGVuc2lvbnMiLCJiYXR0ZXJ5RXh0ZW5zaW9ucyIsImNvb2tpZXNFeHRlbnNpb25zIiwiYmlvbWV0cmljRXh0ZW5zaW9ucyIsImtleWNoYWluc0V4dGVuc2lvbnMiLCJwZXJtaXNzaW9uc0V4dGVuc2lvbnMiLCJkZXZpY2VJbmZvRXh0ZW5zaW9ucyIsImFjdGl2ZUFwcEluZm9FeHRlbnNpb25zIiwicmVjb3JkQXVkaW9FeHRlbnNpb25zIiwiYXBwZWFyYW5jZUV4dGVuc2lvbnMiLCJ4Y3Rlc3RFeHRlbnNpb25zIiwibm90aWZpY2F0aW9uc0V4dGVuc2lvbnMiLCJpb2hpZEV4dGVuc2lvbnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCO0FBRUFDLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRixRQUFkLEVBQXdCRyxnQkFBeEIsRUFBeUNDLGdCQUF6QyxFQUNFQyxnQkFERixFQUNxQkMsYUFEckIsRUFDcUNDLG9CQURyQyxFQUM0REMsZUFENUQsRUFFRUMsZ0JBRkYsRUFFcUJDLFlBRnJCLEVBRW9DQyxZQUZwQyxFQUVtREMsaUJBRm5ELEVBR0VDLG1CQUhGLEVBR3dCQyxnQkFIeEIsRUFHMkNDLHFCQUgzQyxFQUlFQyxjQUpGLEVBSW1CQyxvQkFKbkIsRUFJeUNDLG1CQUp6QyxFQUkrREMsaUJBSi9ELEVBS0VDLGFBTEYsRUFLa0JDLHFCQUxsQixFQUswQ0Msc0JBTDFDLEVBS21FQyxvQkFMbkUsRUFNRUMsa0JBTkYsRUFNdUJDLG9CQU52QixFQU04Q0MsZ0JBTjlDLEVBTWlFQyxnQkFOakUsRUFPRUMsa0JBUEYsRUFPdUJDLGtCQVB2QixFQU80Q0Msb0JBUDVDLEVBT21FQyxtQkFQbkUsRUFRRUMsc0JBUkYsRUFRMkJDLG9CQVIzQixFQVFrREMsbUJBUmxELEVBUXdFQyxlQVJ4RSxFQVNFQyxzQkFURixFQVMyQkMsY0FUM0I7ZUFZZXJDLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY29udGV4dENvbW1hbmRzIGZyb20gJy4vY29udGV4dCc7XG5pbXBvcnQgZXhlY3V0ZUV4dGVuc2lvbnMgZnJvbSAnLi9leGVjdXRlJztcbmltcG9ydCBnZXN0dXJlRXh0ZW5zaW9ucyBmcm9tICcuL2dlc3R1cmUnO1xuaW1wb3J0IGZpbmRFeHRlbnNpb25zIGZyb20gJy4vZmluZCc7XG5pbXBvcnQgcHJveHlIZWxwZXJFeHRlbnNpb25zIGZyb20gJy4vcHJveHktaGVscGVyJztcbmltcG9ydCBhbGVydEV4dGVuc2lvbnMgZnJvbSAnLi9hbGVydCc7XG5pbXBvcnQgc291cmNlRXh0ZW5zaW9ucyBmcm9tICcuL3NvdXJjZSc7XG5pbXBvcnQgZ2VuZXJhbEV4dGVuc2lvbnMgZnJvbSAnLi9nZW5lcmFsJztcbmltcG9ydCBsb2dFeHRlbnNpb25zIGZyb20gJy4vbG9nJztcbmltcG9ydCB3ZWJFeHRlbnNpb25zIGZyb20gJy4vd2ViJztcbmltcG9ydCB0aW1lb3V0RXh0ZW5zaW9ucyBmcm9tICcuL3RpbWVvdXRzJztcbmltcG9ydCBuYXZpZ2F0aW9uRXh0ZW5zaW9ucyBmcm9tICcuL25hdmlnYXRpb24nO1xuaW1wb3J0IGVsZW1lbnRFeHRlbnNpb25zIGZyb20gJy4vZWxlbWVudCc7XG5pbXBvcnQgZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyBmcm9tICcuL2ZpbGUtbW92ZW1lbnQnO1xuaW1wb3J0IHNjcmVlbnNob3RFeHRlbnNpb25zIGZyb20gJy4vc2NyZWVuc2hvdHMnO1xuaW1wb3J0IHBhc3RlYm9hcmRFeHRlbnNpb25zIGZyb20gJy4vcGFzdGVib2FyZCc7XG5pbXBvcnQgbG9jYXRpb25FeHRlbnNpb25zIGZyb20gJy4vbG9jYXRpb24nO1xuaW1wb3J0IHJlY29yZEF1ZGlvRXh0ZW5zaW9ucyBmcm9tICcuL3JlY29yZC1hdWRpbyc7XG5pbXBvcnQgcmVjb3JkU2NyZWVuRXh0ZW5zaW9ucyBmcm9tICcuL3JlY29yZHNjcmVlbic7XG5pbXBvcnQgbG9ja0V4dGVuc2lvbnMgZnJvbSAnLi9sb2NrJztcbmltcG9ydCBhcHBNYW5hZ2VtZW50RXh0ZW5zaW9ucyBmcm9tICcuL2FwcC1tYW5hZ2VtZW50JztcbmltcG9ydCBwZXJmb3JtYW5jZUV4dGVuc2lvbnMgZnJvbSAnLi9wZXJmb3JtYW5jZSc7XG5pbXBvcnQgY2xpcGJvYXJkRXh0ZW5zaW9ucyBmcm9tICcuL2NsaXBib2FyZCc7XG5pbXBvcnQgY2VydGlmaWNhdGVFeHRlbnNpb25zIGZyb20gJy4vY2VydGlmaWNhdGUnO1xuaW1wb3J0IGJhdHRlcnlFeHRlbnNpb25zIGZyb20gJy4vYmF0dGVyeSc7XG5pbXBvcnQgZGV2aWNlSW5mb0V4dGVuc2lvbnMgZnJvbSAnLi9kZXZpY2VJbmZvJztcbmltcG9ydCBhY3RpdmVBcHBJbmZvRXh0ZW5zaW9ucyBmcm9tICcuL2FjdGl2ZUFwcEluZm8nO1xuaW1wb3J0IGNvb2tpZXNFeHRlbnNpb25zIGZyb20gJy4vY29va2llcyc7XG5pbXBvcnQgYmlvbWV0cmljRXh0ZW5zaW9ucyBmcm9tICcuL2Jpb21ldHJpYyc7XG5pbXBvcnQga2V5Y2hhaW5zRXh0ZW5zaW9ucyBmcm9tICcuL2tleWNoYWlucyc7XG5pbXBvcnQgcGVybWlzc2lvbnNFeHRlbnNpb25zIGZyb20gJy4vcGVybWlzc2lvbnMnO1xuaW1wb3J0IGFwcGVhcmFuY2VFeHRlbnNpb25zIGZyb20gJy4vYXBwZWFyYW5jZSc7XG5pbXBvcnQgeGN0ZXN0RXh0ZW5zaW9ucyBmcm9tICcuL3hjdGVzdCc7XG5pbXBvcnQgbm90aWZpY2F0aW9uc0V4dGVuc2lvbnMgZnJvbSAnLi9ub3RpZmljYXRpb25zJztcbmltcG9ydCBpb2hpZEV4dGVuc2lvbnMgZnJvbSAnLi9pb2hpZCc7XG5cbmNvbnN0IGNvbW1hbmRzID0ge307XG5cbk9iamVjdC5hc3NpZ24oY29tbWFuZHMsIGNvbnRleHRDb21tYW5kcywgZXhlY3V0ZUV4dGVuc2lvbnMsXG4gIGdlc3R1cmVFeHRlbnNpb25zLCBmaW5kRXh0ZW5zaW9ucywgcHJveHlIZWxwZXJFeHRlbnNpb25zLCBzb3VyY2VFeHRlbnNpb25zLFxuICBnZW5lcmFsRXh0ZW5zaW9ucywgbG9nRXh0ZW5zaW9ucywgd2ViRXh0ZW5zaW9ucywgdGltZW91dEV4dGVuc2lvbnMsXG4gIG5hdmlnYXRpb25FeHRlbnNpb25zLCBlbGVtZW50RXh0ZW5zaW9ucywgZmlsZU1vdmVtZW50RXh0ZW5zaW9ucyxcbiAgYWxlcnRFeHRlbnNpb25zLCBzY3JlZW5zaG90RXh0ZW5zaW9ucywgcGFzdGVib2FyZEV4dGVuc2lvbnMsIGxvY2F0aW9uRXh0ZW5zaW9ucyxcbiAgbG9ja0V4dGVuc2lvbnMsIHJlY29yZFNjcmVlbkV4dGVuc2lvbnMsIGFwcE1hbmFnZW1lbnRFeHRlbnNpb25zLCBwZXJmb3JtYW5jZUV4dGVuc2lvbnMsXG4gIGNsaXBib2FyZEV4dGVuc2lvbnMsIGNlcnRpZmljYXRlRXh0ZW5zaW9ucywgYmF0dGVyeUV4dGVuc2lvbnMsIGNvb2tpZXNFeHRlbnNpb25zLFxuICBiaW9tZXRyaWNFeHRlbnNpb25zLCBrZXljaGFpbnNFeHRlbnNpb25zLCBwZXJtaXNzaW9uc0V4dGVuc2lvbnMsIGRldmljZUluZm9FeHRlbnNpb25zLFxuICBhY3RpdmVBcHBJbmZvRXh0ZW5zaW9ucywgcmVjb3JkQXVkaW9FeHRlbnNpb25zLCBhcHBlYXJhbmNlRXh0ZW5zaW9ucywgeGN0ZXN0RXh0ZW5zaW9ucyxcbiAgbm90aWZpY2F0aW9uc0V4dGVuc2lvbnMsIGlvaGlkRXh0ZW5zaW9ucyxcbik7XG5cbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvaW5kZXguanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -0,0 +1,45 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.default = exports.commands = void 0;
7
+
8
+ require("source-map-support/register");
9
+
10
+ var _appiumBaseDriver = require("appium-base-driver");
11
+
12
+ const commands = {};
13
+ exports.commands = commands;
14
+
15
+ commands.mobilePerformIoHidEvent = async function mobilePerformIoHidEvent(opts = {}) {
16
+ const page = parseInt(opts.page, 10);
17
+
18
+ if (Number.isNaN(page)) {
19
+ throw new _appiumBaseDriver.errors.InvalidArgumentError(`'page' argument must be a valid integer`);
20
+ }
21
+
22
+ const usage = parseInt(opts.usage, 10);
23
+
24
+ if (Number.isNaN(usage)) {
25
+ throw new _appiumBaseDriver.errors.InvalidArgumentError(`'usage' argument must be a valid integer`);
26
+ }
27
+
28
+ const duration = parseFloat(opts.durationSeconds);
29
+
30
+ if (Number.isNaN(duration)) {
31
+ throw new _appiumBaseDriver.errors.InvalidArgumentError(`'durationSeconds' argument must be a valid number`);
32
+ }
33
+
34
+ return await this.proxyCommand('/wda/performIoHidEvent', 'POST', {
35
+ page,
36
+ usage,
37
+ duration
38
+ });
39
+ };
40
+
41
+ var _default = commands;
42
+ exports.default = _default;require('source-map-support').install();
43
+
44
+
45
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9jb21tYW5kcy9pb2hpZC5qcyJdLCJuYW1lcyI6WyJjb21tYW5kcyIsIm1vYmlsZVBlcmZvcm1Jb0hpZEV2ZW50Iiwib3B0cyIsInBhZ2UiLCJwYXJzZUludCIsIk51bWJlciIsImlzTmFOIiwiZXJyb3JzIiwiSW52YWxpZEFyZ3VtZW50RXJyb3IiLCJ1c2FnZSIsImR1cmF0aW9uIiwicGFyc2VGbG9hdCIsImR1cmF0aW9uU2Vjb25kcyIsInByb3h5Q29tbWFuZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBRUEsTUFBTUEsUUFBUSxHQUFHLEVBQWpCOzs7QUF1QkFBLFFBQVEsQ0FBQ0MsdUJBQVQsR0FBbUMsZUFBZUEsdUJBQWYsQ0FBd0NDLElBQUksR0FBRyxFQUEvQyxFQUFtRDtBQUNwRixRQUFNQyxJQUFJLEdBQUdDLFFBQVEsQ0FBQ0YsSUFBSSxDQUFDQyxJQUFOLEVBQVksRUFBWixDQUFyQjs7QUFDQSxNQUFJRSxNQUFNLENBQUNDLEtBQVAsQ0FBYUgsSUFBYixDQUFKLEVBQXdCO0FBQ3RCLFVBQU0sSUFBSUkseUJBQU9DLG9CQUFYLENBQWlDLHlDQUFqQyxDQUFOO0FBQ0Q7O0FBQ0QsUUFBTUMsS0FBSyxHQUFHTCxRQUFRLENBQUNGLElBQUksQ0FBQ08sS0FBTixFQUFhLEVBQWIsQ0FBdEI7O0FBQ0EsTUFBSUosTUFBTSxDQUFDQyxLQUFQLENBQWFHLEtBQWIsQ0FBSixFQUF5QjtBQUN2QixVQUFNLElBQUlGLHlCQUFPQyxvQkFBWCxDQUFpQywwQ0FBakMsQ0FBTjtBQUNEOztBQUNELFFBQU1FLFFBQVEsR0FBR0MsVUFBVSxDQUFDVCxJQUFJLENBQUNVLGVBQU4sQ0FBM0I7O0FBQ0EsTUFBSVAsTUFBTSxDQUFDQyxLQUFQLENBQWFJLFFBQWIsQ0FBSixFQUE0QjtBQUMxQixVQUFNLElBQUlILHlCQUFPQyxvQkFBWCxDQUFpQyxtREFBakMsQ0FBTjtBQUNEOztBQUNELFNBQU8sTUFBTSxLQUFLSyxZQUFMLENBQWtCLHdCQUFsQixFQUE0QyxNQUE1QyxFQUFvRDtBQUFFVixJQUFBQSxJQUFGO0FBQVFNLElBQUFBLEtBQVI7QUFBZUMsSUFBQUE7QUFBZixHQUFwRCxDQUFiO0FBQ0QsQ0FkRDs7ZUFpQmVWLFEiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBlcnJvcnMgfSBmcm9tICdhcHBpdW0tYmFzZS1kcml2ZXInO1xuXG5jb25zdCBjb21tYW5kcyA9IHt9O1xuXG4vKipcbiAqIEB0eXBlZGVmIHtPYmplY3R9IEhJREV2ZW50T3B0aW9uc1xuICogQHByb3BlcnR5IHshbnVtYmVyfHN0cmluZ30gcGFnZSBUaGUgZXZlbnQgcGFnZSBpZGVudGlmaWVyXG4gKiBAcHJvcGVydHkgeyFudW1iZXJ8c3RyaW5nfSB1c2FnZSBUaGUgZXZlbnQgdXNhZ2UgaWRlbnRpZmllciAodXNhZ2VzIGFyZSBkZWZpbmVkIHBlci1wYWdlKVxuICogQHByb3BlcnR5IHshbnVtYmVyfHN0cmluZ30gZHVyYXRpb25TZWNvbmRzIFRoZSBldmVudCBkdXJhdGlvbiBpbiBmbG9hdCBzZWNvbmRzXG4gKiAoWENUZXN0IHVzZXMgMC4wMDUgZm9yIGEgc2luZ2xlIHByZXNzIGV2ZW50KVxuICovXG5cbi8qKlxuICogRW11bGF0ZXMgdHJpZ2dlcmluZyBvZiB0aGUgZ2l2ZW4gbG93LWxldmVsIElPIEhJRCBkZXZpY2UgZXZlbnQuIFRoZSBjb25zdGFudHMgZm9yIHBvc3NpYmxlIGV2ZW50cyBhcmUgZGVmaW5lZFxuICogaW4gaHR0cHM6Ly91bml4LnN1cGVyZ2xvYmFsbWVnYWNvcnAuY29tL3hudS9uZXdzcmMvaW9raXQvSU9LaXQvaGlkc3lzdGVtL0lPSElEVXNhZ2VUYWJsZXMuaC5odG1sXG4gKiBQb3B1bGFyIGNvbnN0YW50czpcbiAqIC0ga0hJRFBhZ2VfQ29uc3VtZXIgPSAweDBDXG4gKiAtIGtISURVc2FnZV9Dc21yX1ZvbHVtZUluY3JlbWVudCAgPSAweEU5IChWb2x1bWUgVXApXG4gKiAtIGtISURVc2FnZV9Dc21yX1ZvbHVtZURlY3JlbWVudCAgPSAweEVBIChWb2x1bWUgRG93bilcbiAqIC0ga0hJRFVzYWdlX0NzbXJfTWVudSA9IDB4NDAgKEhvbWUpXG4gKiAtIGtISURVc2FnZV9Dc21yX1Bvd2VyICA9IDB4MzAgKFBvd2VyKVxuICogLSBrSElEVXNhZ2VfQ3Ntcl9TbmFwc2hvdCAgPSAweDY1IChQb3dlciArIEhvbWUpXG4gKlxuICogQHBhcmFtIHtISURFdmVudE9wdGlvbnN9IG9wdHNcbiAqL1xuY29tbWFuZHMubW9iaWxlUGVyZm9ybUlvSGlkRXZlbnQgPSBhc3luYyBmdW5jdGlvbiBtb2JpbGVQZXJmb3JtSW9IaWRFdmVudCAob3B0cyA9IHt9KSB7XG4gIGNvbnN0IHBhZ2UgPSBwYXJzZUludChvcHRzLnBhZ2UsIDEwKTtcbiAgaWYgKE51bWJlci5pc05hTihwYWdlKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdwYWdlJyBhcmd1bWVudCBtdXN0IGJlIGEgdmFsaWQgaW50ZWdlcmApO1xuICB9XG4gIGNvbnN0IHVzYWdlID0gcGFyc2VJbnQob3B0cy51c2FnZSwgMTApO1xuICBpZiAoTnVtYmVyLmlzTmFOKHVzYWdlKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCd1c2FnZScgYXJndW1lbnQgbXVzdCBiZSBhIHZhbGlkIGludGVnZXJgKTtcbiAgfVxuICBjb25zdCBkdXJhdGlvbiA9IHBhcnNlRmxvYXQob3B0cy5kdXJhdGlvblNlY29uZHMpO1xuICBpZiAoTnVtYmVyLmlzTmFOKGR1cmF0aW9uKSkge1xuICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZEFyZ3VtZW50RXJyb3IoYCdkdXJhdGlvblNlY29uZHMnIGFyZ3VtZW50IG11c3QgYmUgYSB2YWxpZCBudW1iZXJgKTtcbiAgfVxuICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy93ZGEvcGVyZm9ybUlvSGlkRXZlbnQnLCAnUE9TVCcsIHsgcGFnZSwgdXNhZ2UsIGR1cmF0aW9uIH0pO1xufTtcblxuZXhwb3J0IHsgY29tbWFuZHMgfTtcbmV4cG9ydCBkZWZhdWx0IGNvbW1hbmRzO1xuIl0sImZpbGUiOiJsaWIvY29tbWFuZHMvaW9oaWQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -248,6 +248,12 @@ let desiredCapConstraints = _lodash.default.defaults({
248
248
  },
249
249
  includeDeviceCapsToSessionInfo: {
250
250
  isBoolean: true
251
+ },
252
+ disableAutomaticScreenshots: {
253
+ isBoolean: true
254
+ },
255
+ shouldTerminateApp: {
256
+ isBoolean: true
251
257
  }
252
258
  }, _appiumIosDriver.desiredCapConstraints);
253
259
 
@@ -256,4 +262,4 @@ var _default = desiredCapConstraints;
256
262
  exports.default = _default;require('source-map-support').install();
257
263
 
258
264
 
259
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXNpcmVkLWNhcHMuanMiXSwibmFtZXMiOlsiUExBVEZPUk1fTkFNRV9JT1MiLCJQTEFURk9STV9OQU1FX1RWT1MiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJfIiwiZGVmYXVsdHMiLCJwbGF0Zm9ybU5hbWUiLCJwcmVzZW5jZSIsImlzU3RyaW5nIiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwiZGV2aWNlTmFtZSIsInNob3dYY29kZUxvZyIsImlzQm9vbGVhbiIsIndkYUxvY2FsUG9ydCIsImlzTnVtYmVyIiwid2RhQmFzZVVybCIsImlvc0luc3RhbGxQYXVzZSIsInhjb2RlQ29uZmlnRmlsZSIsInhjb2RlT3JnSWQiLCJ4Y29kZVNpZ25pbmdJZCIsImtleWNoYWluUGF0aCIsImtleWNoYWluUGFzc3dvcmQiLCJib290c3RyYXBQYXRoIiwiYWdlbnRQYXRoIiwidGFwV2l0aFNob3J0UHJlc3NEdXJhdGlvbiIsInNjYWxlRmFjdG9yIiwidXNlUHJlYnVpbHRXREEiLCJjdXN0b21TU0xDZXJ0Iiwid2ViRHJpdmVyQWdlbnRVcmwiLCJkZXJpdmVkRGF0YVBhdGgiLCJsYXVuY2hXaXRoSURCIiwidXNlTmV3V0RBIiwid2RhTGF1bmNoVGltZW91dCIsIndkYUNvbm5lY3Rpb25UaW1lb3V0IiwidXBkYXRlZFdEQUJ1bmRsZUlkIiwicmVzZXRPblNlc3Npb25TdGFydE9ubHkiLCJjb21tYW5kVGltZW91dHMiLCJ3ZGFTdGFydHVwUmV0cmllcyIsIndkYVN0YXJ0dXBSZXRyeUludGVydmFsIiwicHJlYnVpbGRXREEiLCJjb25uZWN0SGFyZHdhcmVLZXlib2FyZCIsInNpbXVsYXRvclBhc3RlYm9hcmRBdXRvbWF0aWNTeW5jIiwic2ltdWxhdG9yRGV2aWNlc1NldFBhdGgiLCJjYWxlbmRhckFjY2Vzc0F1dGhvcml6ZWQiLCJ1c2VTaW1wbGVCdWlsZFRlc3QiLCJ3YWl0Rm9yUXVpZXNjZW5jZSIsIm1heFR5cGluZ0ZyZXF1ZW5jeSIsIm5hdGl2ZVR5cGluZyIsInNpbXBsZUlzVmlzaWJsZUNoZWNrIiwic2hvdWxkVXNlU2luZ2xldG9uVGVzdE1hbmFnZXIiLCJpc0hlYWRsZXNzIiwidXNlWGN0ZXN0cnVuRmlsZSIsImFic29sdXRlV2ViTG9jYXRpb25zIiwic2ltdWxhdG9yV2luZG93Q2VudGVyIiwic2ltdWxhdG9yU3RhcnR1cFRpbWVvdXQiLCJzaW11bGF0b3JUcmFjZVBvaW50ZXIiLCJ1c2VKU09OU291cmNlIiwiZW5mb3JjZUZyZXNoU2ltdWxhdG9yQ3JlYXRpb24iLCJzaHV0ZG93bk90aGVyU2ltdWxhdG9ycyIsImtleWNoYWluc0V4Y2x1ZGVQYXR0ZXJucyIsInNob3dTYWZhcmlDb25zb2xlTG9nIiwic2hvd1NhZmFyaU5ldHdvcmtMb2ciLCJzYWZhcmlHYXJiYWdlQ29sbGVjdCIsInNhZmFyaUdsb2JhbFByZWZlcmVuY2VzIiwiaXNPYmplY3QiLCJzYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uIiwic2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAiLCJzYWZhcmlTb2NrZXRDaHVua1NpemUiLCJtanBlZ1NlcnZlclBvcnQiLCJyZWR1Y2VNb3Rpb24iLCJtanBlZ1NjcmVlbnNob3RVcmwiLCJwZXJtaXNzaW9ucyIsInNjcmVlbnNob3RRdWFsaXR5Iiwic2tpcExvZ0NhcHR1cmUiLCJ3ZGFFdmVudGxvb3BJZGxlRGVsYXkiLCJvdGhlckFwcHMiLCJpbmNsdWRlU2FmYXJpSW5XZWJ2aWV3cyIsImFkZGl0aW9uYWxXZWJ2aWV3QnVuZGxlSWRzIiwid2Vidmlld0Nvbm5lY3RUaW1lb3V0IiwiaW9zU2ltdWxhdG9yTG9nc1ByZWRpY2F0ZSIsImFwcFB1c2hUaW1lb3V0IiwibmF0aXZlV2ViVGFwU3RyaWN0Iiwic2FmYXJpV2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgiLCJhbGxvd1Byb3Zpc2lvbmluZ0RldmljZVJlZ2lzdHJhdGlvbiIsIndhaXRGb3JJZGxlVGltZW91dCIsInJlc3VsdEJ1bmRsZVBhdGgiLCJyZXN1bHRCdW5kbGVWZXJzaW9uIiwic2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzIiwiaW5jbHVkZURldmljZUNhcHNUb1Nlc3Npb25JbmZvIiwiaW9zRGVzaXJlZENhcENvbnN0cmFpbnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLE1BQU1BLGlCQUFpQixHQUFHLEtBQTFCOztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLE1BQTNCOzs7QUFFQSxJQUFJQyxxQkFBcUIsR0FBR0MsZ0JBQUVDLFFBQUYsQ0FBVztBQUNyQ0MsRUFBQUEsWUFBWSxFQUFFO0FBQ1pDLElBQUFBLFFBQVEsRUFBRSxJQURFO0FBRVpDLElBQUFBLFFBQVEsRUFBRSxJQUZFO0FBR1pDLElBQUFBLHdCQUF3QixFQUFFLENBQUNSLGlCQUFELEVBQW9CQyxrQkFBcEI7QUFIZCxHQUR1QjtBQU1yQ1EsRUFBQUEsVUFBVSxFQUFFO0FBQ1ZILElBQUFBLFFBQVEsRUFBRSxJQURBO0FBRVZDLElBQUFBLFFBQVEsRUFBRTtBQUZBLEdBTnlCO0FBVXJDRyxFQUFBQSxZQUFZLEVBQUU7QUFDWkMsSUFBQUEsU0FBUyxFQUFFO0FBREMsR0FWdUI7QUFhckNDLEVBQUFBLFlBQVksRUFBRTtBQUNaQyxJQUFBQSxRQUFRLEVBQUU7QUFERSxHQWJ1QjtBQWdCckNDLEVBQUFBLFVBQVUsRUFBRTtBQUNWUCxJQUFBQSxRQUFRLEVBQUU7QUFEQSxHQWhCeUI7QUFtQnJDUSxFQUFBQSxlQUFlLEVBQUU7QUFDZkYsSUFBQUEsUUFBUSxFQUFFO0FBREssR0FuQm9CO0FBc0JyQ0csRUFBQUEsZUFBZSxFQUFFO0FBQ2ZULElBQUFBLFFBQVEsRUFBRTtBQURLLEdBdEJvQjtBQXlCckNVLEVBQUFBLFVBQVUsRUFBRTtBQUNWVixJQUFBQSxRQUFRLEVBQUU7QUFEQSxHQXpCeUI7QUE0QnJDVyxFQUFBQSxjQUFjLEVBQUU7QUFDZFgsSUFBQUEsUUFBUSxFQUFFO0FBREksR0E1QnFCO0FBK0JyQ1ksRUFBQUEsWUFBWSxFQUFFO0FBQ1paLElBQUFBLFFBQVEsRUFBRTtB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RTtBQUNsQnJFLElBQUFBLFNBQVMsRUFBRTtBQURPLEdBck5pQjtBQXdOckNzRSxFQUFBQSxnQ0FBZ0MsRUFBRTtBQUNoQ3BFLElBQUFBLFFBQVEsRUFBRTtBQURzQixHQXhORztBQTJOckNxRSxFQUFBQSxtQ0FBbUMsRUFBRTtBQUNuQ3ZFLElBQUFBLFNBQVMsRUFBRTtBQUR3QixHQTNOQTtBQThOckN3RSxFQUFBQSxrQkFBa0IsRUFBRTtBQUNsQnRFLElBQUFBLFFBQVEsRUFBRTtBQURRLEdBOU5pQjtBQWlPckN1RSxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNoQjdFLElBQUFBLFFBQVEsRUFBRTtBQURNLEdBak9tQjtBQW9PckM4RSxFQUFBQSxtQkFBbUIsRUFBRTtBQUNuQnhFLElBQUFBLFFBQVEsRUFBRTtBQURTLEdBcE9nQjtBQXVPckN5RSxFQUFBQSx3QkFBd0IsRUFBRTtBQUN4Qi9FLElBQUFBLFFBQVEsRUFBRTtBQURjLEdBdk9XO0FBME9yQ2dGLEVBQUFBLDhCQUE4QixFQUFFO0FBQzlCNUUsSUFBQUEsU0FBUyxFQUFFO0FBRG1CO0FBMU9LLENBQVgsRUE2T3pCNkUsc0NBN095QixDQUE1Qjs7O2VBZ1BldEYscUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZGVzaXJlZENhcENvbnN0cmFpbnRzIGFzIGlvc0Rlc2lyZWRDYXBDb25zdHJhaW50cyB9IGZyb20gJ2FwcGl1bS1pb3MtZHJpdmVyJztcblxuLy8gVGhlc2UgcGxhdGZvcm0gbmFtZXMgc2hvdWxkIGJlIHZhbGlkIGluIHNpbXVsYXRvciBuYW1lXG5jb25zdCBQTEFURk9STV9OQU1FX0lPUyA9ICdpT1MnO1xuY29uc3QgUExBVEZPUk1fTkFNRV9UVk9TID0gJ3R2T1MnO1xuXG5sZXQgZGVzaXJlZENhcENvbnN0cmFpbnRzID0gXy5kZWZhdWx0cyh7XG4gIHBsYXRmb3JtTmFtZTogeyAvLyBvdmVycmlkZVxuICAgIHByZXNlbmNlOiB0cnVlLFxuICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZTogW1BMQVRGT1JNX05BTUVfSU9TLCBQTEFURk9STV9OQU1FX1RWT1NdXG4gIH0sXG4gIGRldmljZU5hbWU6IHtcbiAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBzaG93WGNvZGVMb2c6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgd2RhTG9jYWxQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgd2RhQmFzZVVybDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGlvc0luc3RhbGxQYXVzZToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHhjb2RlQ29uZmlnRmlsZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHhjb2RlT3JnSWQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB4Y29kZVNpZ25pbmdJZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleWNoYWluUGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleWNoYWluUGFzc3dvcmQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBib290c3RyYXBQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYWdlbnRQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgdGFwV2l0aFNob3J0UHJlc3NEdXJhdGlvbjoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHNjYWxlRmFjdG9yOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgdXNlUHJlYnVpbHRXREE6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgY3VzdG9tU1NMQ2VydDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHdlYkRyaXZlckFnZW50VXJsOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgZGVyaXZlZERhdGFQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbGF1bmNoV2l0aElEQjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1c2VOZXdXREE6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgd2RhTGF1bmNoVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHdkYUNvbm5lY3Rpb25UaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgdXBkYXRlZFdEQUJ1bmRsZUlkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgcmVzZXRPblNlc3Npb25TdGFydE9ubHk6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgY29tbWFuZFRpbWVvdXRzOiB7XG4gICAgLy8gcmVjb2duaXplIHRoZSBjYXAsXG4gICAgLy8gYnV0IHZhbGlkYXRlIGluIHRoZSBkcml2ZXIjdmFsaWRhdGVEZXNpcmVkQ2FwcyBtZXRob2RcbiAgfSxcbiAgd2RhU3RhcnR1cFJldHJpZXM6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB3ZGFTdGFydHVwUmV0cnlJbnRlcnZhbDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHByZWJ1aWxkV0RBOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNvbm5lY3RIYXJkd2FyZUtleWJvYXJkOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNpbXVsYXRvclBhc3RlYm9hcmRBdXRvbWF0aWNTeW5jOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2ltdWxhdG9yRGV2aWNlc1NldFBhdGg6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBjYWxlbmRhckFjY2Vzc0F1dGhvcml6ZWQ6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdXNlU2ltcGxlQnVpbGRUZXN0OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHdhaXRGb3JRdWllc2NlbmNlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIG1heFR5cGluZ0ZyZXF1ZW5jeToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG5hdGl2ZVR5cGluZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaW1wbGVJc1Zpc2libGVDaGVjazoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaG91bGRVc2VTaW5nbGV0b25UZXN0TWFuYWdlcjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBpc0hlYWRsZXNzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVzZVhjdGVzdHJ1bkZpbGU6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYWJzb2x1dGVXZWJMb2NhdGlvbnM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2ltdWxhdG9yV2luZG93Q2VudGVyOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2ltdWxhdG9yU3RhcnR1cFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBzaW11bGF0b3JUcmFjZVBvaW50ZXI6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdXNlSlNPTlNvdXJjZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBlbmZvcmNlRnJlc2hTaW11bGF0b3JDcmVhdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaHV0ZG93bk90aGVyU2ltdWxhdG9yczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBrZXljaGFpbnNFeGNsdWRlUGF0dGVybnM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBzaG93U2FmYXJpQ29uc29sZUxvZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaG93U2FmYXJpTmV0d29ya0xvZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzYWZhcmlHYXJiYWdlQ29sbGVjdDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzYWZhcmlHbG9iYWxQcmVmZXJlbmNlczoge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIHNhZmFyaUxvZ0FsbENvbW11bmljYXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpU29ja2V0Q2h1bmtTaXplOiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgbWpwZWdTZXJ2ZXJQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgcmVkdWNlTW90aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIG1qcGVnU2NyZWVuc2hvdFVybDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHBlcm1pc3Npb25zOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2NyZWVuc2hvdFF1YWxpdHk6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBza2lwTG9nQ2FwdHVyZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB3ZGFFdmVudGxvb3BJZGxlRGVsYXk6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBvdGhlckFwcHM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBpbmNsdWRlU2FmYXJpSW5XZWJ2aWV3czoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkczoge1xuICAgIC8vIHJlY29nbml6ZSB0aGUgY2FwYWJpbGl0eVxuICAgIC8vIGJ1dCB2YWxpZGF0ZSBpbiBkcml2ZXIjdmFsaWRhdGVEZXNpcmVkQ2Fwc1xuICB9LFxuICB3ZWJ2aWV3Q29ubmVjdFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBpb3NTaW11bGF0b3JMb2dzUHJlZGljYXRlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwUHVzaFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBuYXRpdmVXZWJUYXBTdHJpY3Q6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpV2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGg6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhbGxvd1Byb3Zpc2lvbmluZ0RldmljZVJlZ2lzdHJhdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB3YWl0Rm9ySWRsZVRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICByZXN1bHRCdW5kbGVQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgcmVzdWx0QnVuZGxlVmVyc2lvbjoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lczoge1xuICAgIGlzU3RyaW5nOiB0cnVlLFxuICB9LFxuICBpbmNsdWRlRGV2aWNlQ2Fwc1RvU2Vzc2lvbkluZm86IHtcbiAgICBpc0Jvb2xlYW46IHRydWUsXG4gIH1cbn0sIGlvc0Rlc2lyZWRDYXBDb25zdHJhaW50cyk7XG5cbmV4cG9ydCB7IGRlc2lyZWRDYXBDb25zdHJhaW50cywgUExBVEZPUk1fTkFNRV9JT1MsIFBMQVRGT1JNX05BTUVfVFZPUyB9O1xuZXhwb3J0IGRlZmF1bHQgZGVzaXJlZENhcENvbnN0cmFpbnRzO1xuIl0sImZpbGUiOiJsaWIvZGVzaXJlZC1jYXBzLmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
265
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXNpcmVkLWNhcHMuanMiXSwibmFtZXMiOlsiUExBVEZPUk1fTkFNRV9JT1MiLCJQTEFURk9STV9OQU1FX1RWT1MiLCJkZXNpcmVkQ2FwQ29uc3RyYWludHMiLCJfIiwiZGVmYXVsdHMiLCJwbGF0Zm9ybU5hbWUiLCJwcmVzZW5jZSIsImlzU3RyaW5nIiwiaW5jbHVzaW9uQ2FzZUluc2Vuc2l0aXZlIiwiZGV2aWNlTmFtZSIsInNob3dYY29kZUxvZyIsImlzQm9vbGVhbiIsIndkYUxvY2FsUG9ydCIsImlzTnVtYmVyIiwid2RhQmFzZVVybCIsImlvc0luc3RhbGxQYXVzZSIsInhjb2RlQ29uZmlnRmlsZSIsInhjb2RlT3JnSWQiLCJ4Y29kZVNpZ25pbmdJZCIsImtleWNoYWluUGF0aCIsImtleWNoYWluUGFzc3dvcmQiLCJib290c3RyYXBQYXRoIiwiYWdlbnRQYXRoIiwidGFwV2l0aFNob3J0UHJlc3NEdXJhdGlvbiIsInNjYWxlRmFjdG9yIiwidXNlUHJlYnVpbHRXREEiLCJjdXN0b21TU0xDZXJ0Iiwid2ViRHJpdmVyQWdlbnRVcmwiLCJkZXJpdmVkRGF0YVBhdGgiLCJsYXVuY2hXaXRoSURCIiwidXNlTmV3V0RBIiwid2RhTGF1bmNoVGltZW91dCIsIndkYUNvbm5lY3Rpb25UaW1lb3V0IiwidXBkYXRlZFdEQUJ1bmRsZUlkIiwicmVzZXRPblNlc3Npb25TdGFydE9ubHkiLCJjb21tYW5kVGltZW91dHMiLCJ3ZGFTdGFydHVwUmV0cmllcyIsIndkYVN0YXJ0dXBSZXRyeUludGVydmFsIiwicHJlYnVpbGRXREEiLCJjb25uZWN0SGFyZHdhcmVLZXlib2FyZCIsInNpbXVsYXRvclBhc3RlYm9hcmRBdXRvbWF0aWNTeW5jIiwic2ltdWxhdG9yRGV2aWNlc1NldFBhdGgiLCJjYWxlbmRhckFjY2Vzc0F1dGhvcml6ZWQiLCJ1c2VTaW1wbGVCdWlsZFRlc3QiLCJ3YWl0Rm9yUXVpZXNjZW5jZSIsIm1heFR5cGluZ0ZyZXF1ZW5jeSIsIm5hdGl2ZVR5cGluZyIsInNpbXBsZUlzVmlzaWJsZUNoZWNrIiwic2hvdWxkVXNlU2luZ2xldG9uVGVzdE1hbmFnZXIiLCJpc0hlYWRsZXNzIiwidXNlWGN0ZXN0cnVuRmlsZSIsImFic29sdXRlV2ViTG9jYXRpb25zIiwic2ltdWxhdG9yV2luZG93Q2VudGVyIiwic2ltdWxhdG9yU3RhcnR1cFRpbWVvdXQiLCJzaW11bGF0b3JUcmFjZVBvaW50ZXIiLCJ1c2VKU09OU291cmNlIiwiZW5mb3JjZUZyZXNoU2ltdWxhdG9yQ3JlYXRpb24iLCJzaHV0ZG93bk90aGVyU2ltdWxhdG9ycyIsImtleWNoYWluc0V4Y2x1ZGVQYXR0ZXJucyIsInNob3dTYWZhcmlDb25zb2xlTG9nIiwic2hvd1NhZmFyaU5ldHdvcmtMb2ciLCJzYWZhcmlHYXJiYWdlQ29sbGVjdCIsInNhZmFyaUdsb2JhbFByZWZlcmVuY2VzIiwiaXNPYmplY3QiLCJzYWZhcmlMb2dBbGxDb21tdW5pY2F0aW9uIiwic2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXAiLCJzYWZhcmlTb2NrZXRDaHVua1NpemUiLCJtanBlZ1NlcnZlclBvcnQiLCJyZWR1Y2VNb3Rpb24iLCJtanBlZ1NjcmVlbnNob3RVcmwiLCJwZXJtaXNzaW9ucyIsInNjcmVlbnNob3RRdWFsaXR5Iiwic2tpcExvZ0NhcHR1cmUiLCJ3ZGFFdmVudGxvb3BJZGxlRGVsYXkiLCJvdGhlckFwcHMiLCJpbmNsdWRlU2FmYXJpSW5XZWJ2aWV3cyIsImFkZGl0aW9uYWxXZWJ2aWV3QnVuZGxlSWRzIiwid2Vidmlld0Nvbm5lY3RUaW1lb3V0IiwiaW9zU2ltdWxhdG9yTG9nc1ByZWRpY2F0ZSIsImFwcFB1c2hUaW1lb3V0IiwibmF0aXZlV2ViVGFwU3RyaWN0Iiwic2FmYXJpV2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGgiLCJhbGxvd1Byb3Zpc2lvbmluZ0RldmljZVJlZ2lzdHJhdGlvbiIsIndhaXRGb3JJZGxlVGltZW91dCIsInJlc3VsdEJ1bmRsZVBhdGgiLCJyZXN1bHRCdW5kbGVWZXJzaW9uIiwic2FmYXJpSWdub3JlV2ViSG9zdG5hbWVzIiwiaW5jbHVkZURldmljZUNhcHNUb1Nlc3Npb25JbmZvIiwiZGlzYWJsZUF1dG9tYXRpY1NjcmVlbnNob3RzIiwic2hvdWxkVGVybWluYXRlQXBwIiwiaW9zRGVzaXJlZENhcENvbnN0cmFpbnRzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUdBLE1BQU1BLGlCQUFpQixHQUFHLEtBQTFCOztBQUNBLE1BQU1DLGtCQUFrQixHQUFHLE1BQTNCOzs7QUFFQSxJQUFJQyxxQkFBcUIsR0FBR0MsZ0JBQUVDLFFBQUYsQ0FBVztBQUNyQ0MsRUFBQUEsWUFBWSxFQUFFO0FBQ1pDLElBQUFBLFFBQVEsRUFBRSxJQURFO0FBRVpDLElBQUFBLFFBQVEsRUFBRSxJQUZFO0FBR1pDLElBQUFBLHdCQUF3QixFQUFFLENBQUNSLGlCQUFELEVBQW9CQyxrQkFBcEI7QUFIZCxHQUR1QjtBQU1yQ1EsRUFBQUEsVUFBVSxFQUFFO0FBQ1ZILElBQUFBLFFBQVEsRUFBRSxJQURBO0FBRVZDLElBQUFBLFFBQVEsRUFBRTtBQUZBLEdBTnlCO0FBVXJDRyxFQUFBQSxZQUFZLEVBQUU7QUFDWkMsSUFBQUEsU0FBUyxFQUFFO0FBREMsR0FWdUI7QUFhckNDLEVBQUFBLFlBQVksRUFBRTtBQUNaQyxJQUFBQSxRQUFRLEVBQUU7QUFERSxHQWJ1QjtBQWdCckNDLEVBQUFBLFVBQVUsRUFBRTtBQUNWUCxJQUFBQSxRQUFRLEVBQUU7QUFEQSxHQWhCeUI7QUFtQnJDUSxFQUFBQSxlQUFlLEVBQUU7QUFDZkYsSUFBQUEsUUFBUSxFQUFFO0FBREssR0FuQm9CO0FBc0JyQ0csRUFBQUEsZUFBZSxFQUFFO0FBQ2ZULElBQUFBLFFBQVEsRUFBRTtBQURLLEdBdEJvQjtBQXlCckNVLEVBQUFBLFVBQVUsRUFBRTtBQUNWVixJQUFBQSxRQUFRLEVBQUU7QUFEQSxHQXpCeUI7QUE0QnJDVyxFQUFBQSxjQUFjLEVBQUU7QUFDZFgsSUFBQUEsUUFBUSxFQUFFO0FBREksR0E1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QUFBLFFBQVEsRUFBRTtBQURJLEdBbE5xQjtBQXFOckNtRSxFQUFBQSxrQkFBa0IsRUFBRTtBQUNsQnJFLElBQUFBLFNBQVMsRUFBRTtBQURPLEdBck5pQjtBQXdOckNzRSxFQUFBQSxnQ0FBZ0MsRUFBRTtBQUNoQ3BFLElBQUFBLFFBQVEsRUFBRTtBQURzQixHQXhORztBQTJOckNxRSxFQUFBQSxtQ0FBbUMsRUFBRTtBQUNuQ3ZFLElBQUFBLFNBQVMsRUFBRTtBQUR3QixHQTNOQTtBQThOckN3RSxFQUFBQSxrQkFBa0IsRUFBRTtBQUNsQnRFLElBQUFBLFFBQVEsRUFBRTtBQURRLEdBOU5pQjtBQWlPckN1RSxFQUFBQSxnQkFBZ0IsRUFBRTtBQUNoQjdFLElBQUFBLFFBQVEsRUFBRTtBQURNLEdBak9tQjtBQW9PckM4RSxFQUFBQSxtQkFBbUIsRUFBRTtBQUNuQnhFLElBQUFBLFFBQVEsRUFBRTtBQURTLEdBcE9nQjtBQXVPckN5RSxFQUFBQSx3QkFBd0IsRUFBRTtBQUN4Qi9FLElBQUFBLFFBQVEsRUFBRTtBQURjLEdBdk9XO0FBME9yQ2dGLEVBQUFBLDhCQUE4QixFQUFFO0FBQzlCNUUsSUFBQUEsU0FBUyxFQUFFO0FBRG1CLEdBMU9LO0FBNk9yQzZFLEVBQUFBLDJCQUEyQixFQUFFO0FBQzNCN0UsSUFBQUEsU0FBUyxFQUFFO0FBRGdCLEdBN09RO0FBZ1ByQzhFLEVBQUFBLGtCQUFrQixFQUFFO0FBQ2xCOUUsSUFBQUEsU0FBUyxFQUFFO0FBRE87QUFoUGlCLENBQVgsRUFtUHpCK0Usc0NBblB5QixDQUE1Qjs7O2VBc1BleEYscUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZGVzaXJlZENhcENvbnN0cmFpbnRzIGFzIGlvc0Rlc2lyZWRDYXBDb25zdHJhaW50cyB9IGZyb20gJ2FwcGl1bS1pb3MtZHJpdmVyJztcblxuLy8gVGhlc2UgcGxhdGZvcm0gbmFtZXMgc2hvdWxkIGJlIHZhbGlkIGluIHNpbXVsYXRvciBuYW1lXG5jb25zdCBQTEFURk9STV9OQU1FX0lPUyA9ICdpT1MnO1xuY29uc3QgUExBVEZPUk1fTkFNRV9UVk9TID0gJ3R2T1MnO1xuXG5sZXQgZGVzaXJlZENhcENvbnN0cmFpbnRzID0gXy5kZWZhdWx0cyh7XG4gIHBsYXRmb3JtTmFtZTogeyAvLyBvdmVycmlkZVxuICAgIHByZXNlbmNlOiB0cnVlLFxuICAgIGlzU3RyaW5nOiB0cnVlLFxuICAgIGluY2x1c2lvbkNhc2VJbnNlbnNpdGl2ZTogW1BMQVRGT1JNX05BTUVfSU9TLCBQTEFURk9STV9OQU1FX1RWT1NdXG4gIH0sXG4gIGRldmljZU5hbWU6IHtcbiAgICBwcmVzZW5jZTogdHJ1ZSxcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBzaG93WGNvZGVMb2c6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgd2RhTG9jYWxQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgd2RhQmFzZVVybDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGlvc0luc3RhbGxQYXVzZToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHhjb2RlQ29uZmlnRmlsZToge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHhjb2RlT3JnSWQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICB4Y29kZVNpZ25pbmdJZDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleWNoYWluUGF0aDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIGtleWNoYWluUGFzc3dvcmQ6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBib290c3RyYXBQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYWdlbnRQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgdGFwV2l0aFNob3J0UHJlc3NEdXJhdGlvbjoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHNjYWxlRmFjdG9yOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgdXNlUHJlYnVpbHRXREE6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgY3VzdG9tU1NMQ2VydDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHdlYkRyaXZlckFnZW50VXJsOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgZGVyaXZlZERhdGFQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgbGF1bmNoV2l0aElEQjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB1c2VOZXdXREE6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgd2RhTGF1bmNoVGltZW91dDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHdkYUNvbm5lY3Rpb25UaW1lb3V0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgdXBkYXRlZFdEQUJ1bmRsZUlkOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgcmVzZXRPblNlc3Npb25TdGFydE9ubHk6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgY29tbWFuZFRpbWVvdXRzOiB7XG4gICAgLy8gcmVjb2duaXplIHRoZSBjYXAsXG4gICAgLy8gYnV0IHZhbGlkYXRlIGluIHRoZSBkcml2ZXIjdmFsaWRhdGVEZXNpcmVkQ2FwcyBtZXRob2RcbiAgfSxcbiAgd2RhU3RhcnR1cFJldHJpZXM6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICB3ZGFTdGFydHVwUmV0cnlJbnRlcnZhbDoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHByZWJ1aWxkV0RBOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIGNvbm5lY3RIYXJkd2FyZUtleWJvYXJkOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHNpbXVsYXRvclBhc3RlYm9hcmRBdXRvbWF0aWNTeW5jOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2ltdWxhdG9yRGV2aWNlc1NldFBhdGg6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBjYWxlbmRhckFjY2Vzc0F1dGhvcml6ZWQ6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdXNlU2ltcGxlQnVpbGRUZXN0OiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHdhaXRGb3JRdWllc2NlbmNlOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIG1heFR5cGluZ0ZyZXF1ZW5jeToge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIG5hdGl2ZVR5cGluZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaW1wbGVJc1Zpc2libGVDaGVjazoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaG91bGRVc2VTaW5nbGV0b25UZXN0TWFuYWdlcjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBpc0hlYWRsZXNzOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIHVzZVhjdGVzdHJ1bkZpbGU6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgYWJzb2x1dGVXZWJMb2NhdGlvbnM6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2ltdWxhdG9yV2luZG93Q2VudGVyOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2ltdWxhdG9yU3RhcnR1cFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBzaW11bGF0b3JUcmFjZVBvaW50ZXI6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgdXNlSlNPTlNvdXJjZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBlbmZvcmNlRnJlc2hTaW11bGF0b3JDcmVhdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaHV0ZG93bk90aGVyU2ltdWxhdG9yczoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBrZXljaGFpbnNFeGNsdWRlUGF0dGVybnM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBzaG93U2FmYXJpQ29uc29sZUxvZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzaG93U2FmYXJpTmV0d29ya0xvZzoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzYWZhcmlHYXJiYWdlQ29sbGVjdDoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBzYWZhcmlHbG9iYWxQcmVmZXJlbmNlczoge1xuICAgIGlzT2JqZWN0OiB0cnVlXG4gIH0sXG4gIHNhZmFyaUxvZ0FsbENvbW11bmljYXRpb246IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpTG9nQWxsQ29tbXVuaWNhdGlvbkhleER1bXA6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpU29ja2V0Q2h1bmtTaXplOiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgbWpwZWdTZXJ2ZXJQb3J0OiB7XG4gICAgaXNOdW1iZXI6IHRydWVcbiAgfSxcbiAgcmVkdWNlTW90aW9uOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlXG4gIH0sXG4gIG1qcGVnU2NyZWVuc2hvdFVybDoge1xuICAgIGlzU3RyaW5nOiB0cnVlXG4gIH0sXG4gIHBlcm1pc3Npb25zOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgc2NyZWVuc2hvdFF1YWxpdHk6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBza2lwTG9nQ2FwdHVyZToge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB3ZGFFdmVudGxvb3BJZGxlRGVsYXk6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBvdGhlckFwcHM6IHtcbiAgICBpc1N0cmluZzogdHJ1ZVxuICB9LFxuICBpbmNsdWRlU2FmYXJpSW5XZWJ2aWV3czoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICBhZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkczoge1xuICAgIC8vIHJlY29nbml6ZSB0aGUgY2FwYWJpbGl0eVxuICAgIC8vIGJ1dCB2YWxpZGF0ZSBpbiBkcml2ZXIjdmFsaWRhdGVEZXNpcmVkQ2Fwc1xuICB9LFxuICB3ZWJ2aWV3Q29ubmVjdFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBpb3NTaW11bGF0b3JMb2dzUHJlZGljYXRlOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgYXBwUHVzaFRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBuYXRpdmVXZWJUYXBTdHJpY3Q6IHtcbiAgICBpc0Jvb2xlYW46IHRydWVcbiAgfSxcbiAgc2FmYXJpV2ViSW5zcGVjdG9yTWF4RnJhbWVMZW5ndGg6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICBhbGxvd1Byb3Zpc2lvbmluZ0RldmljZVJlZ2lzdHJhdGlvbjoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZVxuICB9LFxuICB3YWl0Rm9ySWRsZVRpbWVvdXQ6IHtcbiAgICBpc051bWJlcjogdHJ1ZVxuICB9LFxuICByZXN1bHRCdW5kbGVQYXRoOiB7XG4gICAgaXNTdHJpbmc6IHRydWVcbiAgfSxcbiAgcmVzdWx0QnVuZGxlVmVyc2lvbjoge1xuICAgIGlzTnVtYmVyOiB0cnVlXG4gIH0sXG4gIHNhZmFyaUlnbm9yZVdlYkhvc3RuYW1lczoge1xuICAgIGlzU3RyaW5nOiB0cnVlLFxuICB9LFxuICBpbmNsdWRlRGV2aWNlQ2Fwc1RvU2Vzc2lvbkluZm86IHtcbiAgICBpc0Jvb2xlYW46IHRydWUsXG4gIH0sXG4gIGRpc2FibGVBdXRvbWF0aWNTY3JlZW5zaG90czoge1xuICAgIGlzQm9vbGVhbjogdHJ1ZSxcbiAgfSxcbiAgc2hvdWxkVGVybWluYXRlQXBwOiB7XG4gICAgaXNCb29sZWFuOiB0cnVlLFxuICB9XG59LCBpb3NEZXNpcmVkQ2FwQ29uc3RyYWludHMpO1xuXG5leHBvcnQgeyBkZXNpcmVkQ2FwQ29uc3RyYWludHMsIFBMQVRGT1JNX05BTUVfSU9TLCBQTEFURk9STV9OQU1FX1RWT1MgfTtcbmV4cG9ydCBkZWZhdWx0IGRlc2lyZWRDYXBDb25zdHJhaW50cztcbiJdLCJmaWxlIjoibGliL2Rlc2lyZWQtY2Fwcy5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
@@ -127,8 +127,7 @@ class IOSSimulatorLog extends _iosLog.IOSLog {
127
127
  return;
128
128
  }
129
129
 
130
- _appiumSupport.logger.warn('Cannot stop log capture process. Sending SIGKILL...');
131
-
130
+ log.warn('Cannot stop log capture process. Sending SIGKILL');
132
131
  await this.proc.stop('SIGKILL');
133
132
  }
134
133
  }
@@ -158,4 +157,4 @@ var _default = IOSSimulatorLog;
158
157
  exports.default = _default;require('source-map-support').install();
159
158
 
160
159
 
161
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXZpY2UtbG9nL2lvcy1zaW11bGF0b3ItbG9nLmpzIl0sIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciIsIlNUQVJUX1RJTUVPVVQiLCJJT1NTaW11bGF0b3JMb2ciLCJJT1NMb2ciLCJjb25zdHJ1Y3RvciIsInNpbSIsInNob3dMb2dzIiwieGNvZGVWZXJzaW9uIiwiaW9zU2ltdWxhdG9yTG9nc1ByZWRpY2F0ZSIsInByZWRpY2F0ZSIsInByb2MiLCJzdGFydENhcHR1cmUiLCJfIiwiaXNVbmRlZmluZWQiLCJ1ZGlkIiwiRXJyb3IiLCJpc1J1bm5pbmciLCJzcGF3bkFyZ3MiLCJwdXNoIiwiZGVidWciLCJqb2luIiwiaWduIiwic2ltY3RsIiwic3Bhd25TdWJQcm9jZXNzIiwiZmluaXNoU3RhcnRpbmdMb2dDYXB0dXJlIiwiZSIsIm1lc3NhZ2UiLCJlcnJvckFuZFRocm93IiwiZmlyc3RMaW5lIiwibG9nUm93Iiwib24iLCJzdGRvdXQiLCJzdGRlcnIiLCJlbmRzV2l0aCIsIm9uT3V0cHV0Iiwic2QiLCJ0ZXN0Iiwic3RhcnQiLCJzdG9wQ2FwdHVyZSIsImtpbGxMb2dTdWJQcm9jZXNzIiwic3RvcCIsIndhcm4iLCJpc0NhcHR1cmluZyIsInByZWZpeCIsImxvZ3MiLCJjbG9uZURlZXAiLCJzcGxpdCIsImxvZ0xpbmUiLCJicm9hZGNhc3QiLCJzcGFjZSIsImxlbmd0aCIsImluZm8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxzQkFBT0MsU0FBUCxDQUFpQixpQkFBakIsQ0FBWjs7QUFFQSxNQUFNQyxhQUFhLEdBQUcsS0FBdEI7O0FBRUEsTUFBTUMsZUFBTixTQUE4QkMsY0FBOUIsQ0FBcUM7QUFDbkNDLEVBQUFBLFdBQVcsQ0FBRTtBQUFDQyxJQUFBQSxHQUFEO0FBQU1DLElBQUFBLFFBQU47QUFBZ0JDLElBQUFBLFlBQWhCO0FBQThCQyxJQUFB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LFVBQUksQ0FBQ0csT0FBTCxFQUFjO0FBQ2QsV0FBS0MsU0FBTCxDQUFlRCxPQUFmOztBQUNBLFVBQUksS0FBS3pDLFFBQVQsRUFBbUI7QUFDakIsY0FBTTJDLEtBQUssR0FBR04sTUFBTSxDQUFDTyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CLEdBQXBCLEdBQTBCLEVBQXhDO0FBQ0FwRCxRQUFBQSxHQUFHLENBQUNxRCxJQUFKLENBQVUsa0JBQWlCRixLQUFNLEdBQUVOLE1BQU8sS0FBSUksT0FBUSxFQUF0RDtBQUNEO0FBQ0Y7QUFDRjs7QUFqSGtDOzs7ZUFxSHRCN0MsZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBJT1NMb2cgfSBmcm9tICcuL2lvcy1sb2cnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0lPU1NpbXVsYXRvckxvZycpO1xuXG5jb25zdCBTVEFSVF9USU1FT1VUID0gMTAwMDA7XG5cbmNsYXNzIElPU1NpbXVsYXRvckxvZyBleHRlbmRzIElPU0xvZyB7XG4gIGNvbnN0cnVjdG9yICh7c2ltLCBzaG93TG9ncywgeGNvZGVWZXJzaW9uLCBpb3NTaW11bGF0b3JMb2dzUHJlZGljYXRlfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zaW0gPSBzaW07XG4gICAgdGhpcy5zaG93TG9ncyA9ICEhc2hvd0xvZ3M7XG4gICAgdGhpcy54Y29kZVZlcnNpb24gPSB4Y29kZVZlcnNpb247XG4gICAgdGhpcy5wcmVkaWNhdGUgPSBpb3NTaW11bGF0b3JMb2dzUHJlZGljYXRlO1xuICAgIHRoaXMucHJvYyA9IG51bGw7XG4gIH1cblxuICBhc3luYyBzdGFydENhcHR1cmUgKCkge1xuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuc2ltLnVkaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYExvZyBjYXB0dXJlIHJlcXVpcmVzIGEgc2ltIHVkaWRgKTtcbiAgICB9XG5cbiAgICBpZiAoIWF3YWl0IHRoaXMuc2ltLmlzUnVubmluZygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGlPUyBTaW11bGF0b3Igd2l0aCB1ZGlkICcke3RoaXMuc2ltLnVkaWR9JyBpcyBub3QgcnVubmluZ2ApO1xuICAgIH1cbiAgICBjb25zdCBzcGF3bkFyZ3MgPSBbXG4gICAgICAnbG9nJyxcbiAgICAgICdzdHJlYW0nLFxuICAgICAgJy0tc3R5bGUnLCAnY29tcGFjdCcsXG4gICAgXTtcbiAgICBpZiAodGhpcy5wcmVkaWNhdGUpIHtcbiAgICAgIHNwYXduQXJncy5wdXNoKCctLXByZWRpY2F0ZScsIHRoaXMucHJlZGljYXRlKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBTdGFydGluZyBsb2cgY2FwdHVyZSBmb3IgaU9TIFNpbXVsYXRvciB3aXRoIHVkaWQgJyR7dGhpcy5zaW0udWRpZH0nIGAgK1xuICAgICAgYHVzaW5nIHNpbWN0bGApO1xuICAgIHRyeSB7XG4gICAgICAvLyBjbGVhbnVwIGV4aXN0aW5nIGxpc3RlbmVycyBpZiB0aGUgcHJldmlvdXMgc2Vzc2lvbiBoYXMgbm90IGJlZW4gdGVybWluYXRlZCBwcm9wZXJseVxuICAgICAgYXdhaXQgZXhlYygncGtpbGwnLCBbJy1mJywgW3RoaXMuc2ltLnVkaWQsIC4uLnNwYXduQXJnc10uam9pbignICcpXSk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnByb2MgPSBhd2FpdCB0aGlzLnNpbS5zaW1jdGwuc3Bhd25TdWJQcm9jZXNzKHNwYXduQXJncyk7XG4gICAgICBhd2FpdCB0aGlzLmZpbmlzaFN0YXJ0aW5nTG9nQ2FwdHVyZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2ltdWxhdG9yIGxvZyBjYXB0dXJlIGZhaWxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpbmlzaFN0YXJ0aW5nTG9nQ2FwdHVyZSAoKSB7XG4gICAgaWYgKCF0aGlzLnByb2MpIHtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KCdDb3VsZCBub3QgY2FwdHVyZSBzaW11bGF0b3IgbG9nJyk7XG4gICAgfVxuICAgIGxldCBmaXJzdExpbmUgPSB0cnVlO1xuICAgIGxldCBsb2dSb3cgPSAnJztcbiAgICB0aGlzLnByb2Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgaWYgKHN0ZG91dCkge1xuICAgICAgICBpZiAoZmlyc3RMaW5lKSB7XG4gICAgICAgICAgaWYgKHN0ZG91dC5lbmRzV2l0aCgnXFxuJykpIHtcbiAgICAgICAgICAgIC8vIGRvbid0IHN0b3JlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBsb2cgYmVjYXVzZSBpdCBjYW1lIGJlZm9yZSB0aGUgc2ltIHdhcyBsYXVuY2hlZFxuICAgICAgICAgICAgZmlyc3RMaW5lID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZ1JvdyArPSBzdGRvdXQ7XG4gICAgICAgICAgaWYgKHN0ZG91dC5lbmRzV2l0aCgnXFxuJykpIHtcbiAgICAgICAgICAgIHRoaXMub25PdXRwdXQobG9nUm93KTtcbiAgICAgICAgICAgIGxvZ1JvdyA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN0ZGVycikge1xuICAgICAgICB0aGlzLm9uT3V0cHV0KGxvZ1JvdywgJ1NUREVSUicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IHNkID0gKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICBpZiAoL2V4ZWN2cFxcKFxcKS8udGVzdChzdGRlcnIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaU9TIGxvZyBjYXB0dXJlIHByb2Nlc3MgZmFpbGVkIHRvIHN0YXJ0Jyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3Rkb3V0IHx8IHN0ZGVycjtcbiAgICB9O1xuICAgIGF3YWl0IHRoaXMucHJvYy5zdGFydChzZCwgU1RBUlRfVElNRU9VVCk7XG4gIH1cblxuICBhc3luYyBzdG9wQ2FwdHVyZSAoKSB7XG4gICAgaWYgKCF0aGlzLnByb2MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5raWxsTG9nU3ViUHJvY2VzcygpO1xuICAgIHRoaXMucHJvYyA9IG51bGw7XG4gIH1cblxuICBhc3luYyBraWxsTG9nU3ViUHJvY2VzcyAoKSB7XG4gICAgaWYgKCF0aGlzLnByb2MuaXNSdW5uaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgaU9TIGxvZyBjYXB0dXJlJyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdURVJNJywgMTAwMCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCF0aGlzLnByb2MuaXNSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxvZ2dlci53YXJuKCdDYW5ub3Qgc3RvcCBsb2cgY2FwdHVyZSBwcm9jZXNzLiBTZW5kaW5nIFNJR0tJTEwuLi4nKTtcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzQ2FwdHVyaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9jICYmIHRoaXMucHJvYy5pc1J1bm5pbmc7XG4gIH1cblxuICBvbk91dHB1dCAobG9nUm93LCBwcmVmaXggPSAnJykge1xuICAgIGNvbnN0IGxvZ3MgPSBfLmNsb25lRGVlcChsb2dSb3cuc3BsaXQoJ1xcbicpKTtcbiAgICBmb3IgKGNvbnN0IGxvZ0xpbmUgb2YgbG9ncykge1xuICAgICAgaWYgKCFsb2dMaW5lKSBjb250aW51ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuICAgICAgdGhpcy5icm9hZGNhc3QobG9nTGluZSk7XG4gICAgICBpZiAodGhpcy5zaG93TG9ncykge1xuICAgICAgICBjb25zdCBzcGFjZSA9IHByZWZpeC5sZW5ndGggPiAwID8gJyAnIDogJyc7XG4gICAgICAgIGxvZy5pbmZvKGBbSU9TX1NZU0xPR19ST1cke3NwYWNlfSR7cHJlZml4fV0gJHtsb2dMaW5lfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgeyBJT1NTaW11bGF0b3JMb2cgfTtcbmV4cG9ydCBkZWZhdWx0IElPU1NpbXVsYXRvckxvZztcbiJdLCJmaWxlIjoibGliL2RldmljZS1sb2cvaW9zLXNpbXVsYXRvci1sb2cuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
160
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kZXZpY2UtbG9nL2lvcy1zaW11bGF0b3ItbG9nLmpzIl0sIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciIsIlNUQVJUX1RJTUVPVVQiLCJJT1NTaW11bGF0b3JMb2ciLCJJT1NMb2ciLCJjb25zdHJ1Y3RvciIsInNpbSIsInNob3dMb2dzIiwieGNvZGVWZXJzaW9uIiwiaW9zU2ltdWxhdG9yTG9nc1ByZWRpY2F0ZSIsInByZWRpY2F0ZSIsInByb2MiLCJzdGFydENhcHR1cmUiLCJfIiwiaXNVbmRlZmluZWQiLCJ1ZGlkIiwiRXJyb3IiLCJpc1J1bm5pbmciLCJzcGF3bkFyZ3MiLCJwdXNoIiwiZGVidWciLCJqb2luIiwiaWduIiwic2ltY3RsIiwic3Bhd25TdWJQcm9jZXNzIiwiZmluaXNoU3RhcnRpbmdMb2dDYXB0dXJlIiwiZSIsIm1lc3NhZ2UiLCJlcnJvckFuZFRocm93IiwiZmlyc3RMaW5lIiwibG9nUm93Iiwib24iLCJzdGRvdXQiLCJzdGRlcnIiLCJlbmRzV2l0aCIsIm9uT3V0cHV0Iiwic2QiLCJ0ZXN0Iiwic3RhcnQiLCJzdG9wQ2FwdHVyZSIsImtpbGxMb2dTdWJQcm9jZXNzIiwic3RvcCIsIndhcm4iLCJpc0NhcHR1cmluZyIsInByZWZpeCIsImxvZ3MiLCJjbG9uZURlZXAiLCJzcGxpdCIsImxvZ0xpbmUiLCJicm9hZGNhc3QiLCJzcGFjZSIsImxlbmd0aCIsImluZm8iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsR0FBRyxHQUFHQyxzQkFBT0MsU0FBUCxDQUFpQixpQkFBakIsQ0FBWjs7QUFFQSxNQUFNQyxhQUFhLEdBQUcsS0FBdEI7O0FBRUEsTUFBTUMsZUFBTixTQUE4QkMsY0FBOUIsQ0FBcUM7QUFDbkNDLEVBQUFBLFdBQVcsQ0FBRTtBQUFDQyxJQUFBQSxHQUFEO0FBQU1DLElBQUFBLFFBQU47QUFBZ0JDLElBQUFBLFlBQWhCO0FBQThCQyxJQUFB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QTRCO0FBQzFCLFVBQUksQ0FBQ0csT0FBTCxFQUFjO0FBQ2QsV0FBS0MsU0FBTCxDQUFlRCxPQUFmOztBQUNBLFVBQUksS0FBS3pDLFFBQVQsRUFBbUI7QUFDakIsY0FBTTJDLEtBQUssR0FBR04sTUFBTSxDQUFDTyxNQUFQLEdBQWdCLENBQWhCLEdBQW9CLEdBQXBCLEdBQTBCLEVBQXhDO0FBQ0FwRCxRQUFBQSxHQUFHLENBQUNxRCxJQUFKLENBQVUsa0JBQWlCRixLQUFNLEdBQUVOLE1BQU8sS0FBSUksT0FBUSxFQUF0RDtBQUNEO0FBQ0Y7QUFDRjs7QUFqSGtDOzs7ZUFxSHRCN0MsZSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBJT1NMb2cgfSBmcm9tICcuL2lvcy1sb2cnO1xuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0lPU1NpbXVsYXRvckxvZycpO1xuXG5jb25zdCBTVEFSVF9USU1FT1VUID0gMTAwMDA7XG5cbmNsYXNzIElPU1NpbXVsYXRvckxvZyBleHRlbmRzIElPU0xvZyB7XG4gIGNvbnN0cnVjdG9yICh7c2ltLCBzaG93TG9ncywgeGNvZGVWZXJzaW9uLCBpb3NTaW11bGF0b3JMb2dzUHJlZGljYXRlfSkge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5zaW0gPSBzaW07XG4gICAgdGhpcy5zaG93TG9ncyA9ICEhc2hvd0xvZ3M7XG4gICAgdGhpcy54Y29kZVZlcnNpb24gPSB4Y29kZVZlcnNpb247XG4gICAgdGhpcy5wcmVkaWNhdGUgPSBpb3NTaW11bGF0b3JMb2dzUHJlZGljYXRlO1xuICAgIHRoaXMucHJvYyA9IG51bGw7XG4gIH1cblxuICBhc3luYyBzdGFydENhcHR1cmUgKCkge1xuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRoaXMuc2ltLnVkaWQpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYExvZyBjYXB0dXJlIHJlcXVpcmVzIGEgc2ltIHVkaWRgKTtcbiAgICB9XG5cbiAgICBpZiAoIWF3YWl0IHRoaXMuc2ltLmlzUnVubmluZygpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYGlPUyBTaW11bGF0b3Igd2l0aCB1ZGlkICcke3RoaXMuc2ltLnVkaWR9JyBpcyBub3QgcnVubmluZ2ApO1xuICAgIH1cbiAgICBjb25zdCBzcGF3bkFyZ3MgPSBbXG4gICAgICAnbG9nJyxcbiAgICAgICdzdHJlYW0nLFxuICAgICAgJy0tc3R5bGUnLCAnY29tcGFjdCcsXG4gICAgXTtcbiAgICBpZiAodGhpcy5wcmVkaWNhdGUpIHtcbiAgICAgIHNwYXduQXJncy5wdXNoKCctLXByZWRpY2F0ZScsIHRoaXMucHJlZGljYXRlKTtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBTdGFydGluZyBsb2cgY2FwdHVyZSBmb3IgaU9TIFNpbXVsYXRvciB3aXRoIHVkaWQgJyR7dGhpcy5zaW0udWRpZH0nIGAgK1xuICAgICAgYHVzaW5nIHNpbWN0bGApO1xuICAgIHRyeSB7XG4gICAgICAvLyBjbGVhbnVwIGV4aXN0aW5nIGxpc3RlbmVycyBpZiB0aGUgcHJldmlvdXMgc2Vzc2lvbiBoYXMgbm90IGJlZW4gdGVybWluYXRlZCBwcm9wZXJseVxuICAgICAgYXdhaXQgZXhlYygncGtpbGwnLCBbJy1mJywgW3RoaXMuc2ltLnVkaWQsIC4uLnNwYXduQXJnc10uam9pbignICcpXSk7XG4gICAgfSBjYXRjaCAoaWduKSB7fVxuICAgIHRyeSB7XG4gICAgICB0aGlzLnByb2MgPSBhd2FpdCB0aGlzLnNpbS5zaW1jdGwuc3Bhd25TdWJQcm9jZXNzKHNwYXduQXJncyk7XG4gICAgICBhd2FpdCB0aGlzLmZpbmlzaFN0YXJ0aW5nTG9nQ2FwdHVyZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgU2ltdWxhdG9yIGxvZyBjYXB0dXJlIGZhaWxlZC4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpbmlzaFN0YXJ0aW5nTG9nQ2FwdHVyZSAoKSB7XG4gICAgaWYgKCF0aGlzLnByb2MpIHtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KCdDb3VsZCBub3QgY2FwdHVyZSBzaW11bGF0b3IgbG9nJyk7XG4gICAgfVxuICAgIGxldCBmaXJzdExpbmUgPSB0cnVlO1xuICAgIGxldCBsb2dSb3cgPSAnJztcbiAgICB0aGlzLnByb2Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgaWYgKHN0ZG91dCkge1xuICAgICAgICBpZiAoZmlyc3RMaW5lKSB7XG4gICAgICAgICAgaWYgKHN0ZG91dC5lbmRzV2l0aCgnXFxuJykpIHtcbiAgICAgICAgICAgIC8vIGRvbid0IHN0b3JlIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBsb2cgYmVjYXVzZSBpdCBjYW1lIGJlZm9yZSB0aGUgc2ltIHdhcyBsYXVuY2hlZFxuICAgICAgICAgICAgZmlyc3RMaW5lID0gZmFsc2U7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGxvZ1JvdyArPSBzdGRvdXQ7XG4gICAgICAgICAgaWYgKHN0ZG91dC5lbmRzV2l0aCgnXFxuJykpIHtcbiAgICAgICAgICAgIHRoaXMub25PdXRwdXQobG9nUm93KTtcbiAgICAgICAgICAgIGxvZ1JvdyA9ICcnO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKHN0ZGVycikge1xuICAgICAgICB0aGlzLm9uT3V0cHV0KGxvZ1JvdywgJ1NUREVSUicpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgbGV0IHNkID0gKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICBpZiAoL2V4ZWN2cFxcKFxcKS8udGVzdChzdGRlcnIpKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignaU9TIGxvZyBjYXB0dXJlIHByb2Nlc3MgZmFpbGVkIHRvIHN0YXJ0Jyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gc3Rkb3V0IHx8IHN0ZGVycjtcbiAgICB9O1xuICAgIGF3YWl0IHRoaXMucHJvYy5zdGFydChzZCwgU1RBUlRfVElNRU9VVCk7XG4gIH1cblxuICBhc3luYyBzdG9wQ2FwdHVyZSAoKSB7XG4gICAgaWYgKCF0aGlzLnByb2MpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgYXdhaXQgdGhpcy5raWxsTG9nU3ViUHJvY2VzcygpO1xuICAgIHRoaXMucHJvYyA9IG51bGw7XG4gIH1cblxuICBhc3luYyBraWxsTG9nU3ViUHJvY2VzcyAoKSB7XG4gICAgaWYgKCF0aGlzLnByb2MuaXNSdW5uaW5nKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGxvZy5kZWJ1ZygnU3RvcHBpbmcgaU9TIGxvZyBjYXB0dXJlJyk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdURVJNJywgMTAwMCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKCF0aGlzLnByb2MuaXNSdW5uaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGxvZy53YXJuKCdDYW5ub3Qgc3RvcCBsb2cgY2FwdHVyZSBwcm9jZXNzLiBTZW5kaW5nIFNJR0tJTEwnKTtcbiAgICAgIGF3YWl0IHRoaXMucHJvYy5zdG9wKCdTSUdLSUxMJyk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IGlzQ2FwdHVyaW5nICgpIHtcbiAgICByZXR1cm4gdGhpcy5wcm9jICYmIHRoaXMucHJvYy5pc1J1bm5pbmc7XG4gIH1cblxuICBvbk91dHB1dCAobG9nUm93LCBwcmVmaXggPSAnJykge1xuICAgIGNvbnN0IGxvZ3MgPSBfLmNsb25lRGVlcChsb2dSb3cuc3BsaXQoJ1xcbicpKTtcbiAgICBmb3IgKGNvbnN0IGxvZ0xpbmUgb2YgbG9ncykge1xuICAgICAgaWYgKCFsb2dMaW5lKSBjb250aW51ZTsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBjdXJseVxuICAgICAgdGhpcy5icm9hZGNhc3QobG9nTGluZSk7XG4gICAgICBpZiAodGhpcy5zaG93TG9ncykge1xuICAgICAgICBjb25zdCBzcGFjZSA9IHByZWZpeC5sZW5ndGggPiAwID8gJyAnIDogJyc7XG4gICAgICAgIGxvZy5pbmZvKGBbSU9TX1NZU0xPR19ST1cke3NwYWNlfSR7cHJlZml4fV0gJHtsb2dMaW5lfWApO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgeyBJT1NTaW11bGF0b3JMb2cgfTtcbmV4cG9ydCBkZWZhdWx0IElPU1NpbXVsYXRvckxvZztcbiJdLCJmaWxlIjoibGliL2RldmljZS1sb2cvaW9zLXNpbXVsYXRvci1sb2cuanMiLCJzb3VyY2VSb290IjoiLi4vLi4vLi4ifQ==
@@ -896,7 +896,7 @@ class XCUITestDriver extends _appiumBaseDriver.BaseDriver {
896
896
  }
897
897
 
898
898
  async startWdaSession(bundleId, processArguments) {
899
- var _this$opts$wdaEventlo, _this$opts$waitForQui, _this$opts$simpleIsVi, _this$opts$maxTypingF, _this$opts$shouldUseS;
899
+ var _this$opts$wdaEventlo, _this$opts$waitForQui, _this$opts$simpleIsVi, _this$opts$maxTypingF, _this$opts$shouldUseS, _this$opts$shouldTerm;
900
900
 
901
901
  const args = processArguments ? processArguments.args || [] : [];
902
902
 
@@ -930,7 +930,9 @@ class XCUITestDriver extends _appiumBaseDriver.BaseDriver {
930
930
  shouldUseSingletonTestManager: (_this$opts$shouldUseS = this.opts.shouldUseSingletonTestManager) !== null && _this$opts$shouldUseS !== void 0 ? _this$opts$shouldUseS : true,
931
931
  waitForIdleTimeout: this.opts.waitForIdleTimeout,
932
932
  shouldUseCompactResponses: this.opts.shouldUseCompactResponses,
933
- elementResponseFields: this.opts.elementResponseFields
933
+ elementResponseFields: this.opts.elementResponseFields,
934
+ disableAutomaticScreenshots: this.opts.disableAutomaticScreenshots,
935
+ shouldTerminateApp: (_this$opts$shouldTerm = this.opts.shouldTerminateApp) !== null && _this$opts$shouldTerm !== void 0 ? _this$opts$shouldTerm : true
934
936
  };
935
937
 
936
938
  if (this.opts.autoAcceptAlerts) {
@@ -1250,4 +1252,4 @@ var _default = XCUITestDriver;
1250
1252
  exports.default = _default;require('source-map-support').install();
1251
1253
 
1252
1254
 
1253
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwibmFtZXMiOlsiU0hVVERPV05fT1RIRVJfRkVBVF9OQU1FIiwiQ1VTVE9NSVpFX1JFU1VMVF9CVU5EUEVfUEFUSCIsIlNBRkFSSV9CVU5ETEVfSUQiLCJXREFfU0lNX1NUQVJUVVBfUkVUUklFUyIsIldEQV9SRUFMX0RFVl9TVEFSVFVQX1JFVFJJRVMiLCJXREFfUkVBTF9ERVZfVFVUT1JJQUxfVVJMIiwiV0RBX1NUQVJUVVBfUkVUUllfSU5URVJWQUwiLCJERUZBVUxUX1NFVFRJTkdTIiwibmF0aXZlV2ViVGFwIiwibmF0aXZlV2ViVGFwU3RyaWN0IiwidXNlSlNPTlNvdXJjZSIsInNob3VsZFVzZUNvbXBhY3RSZXNwb25zZXMiLCJlbGVtZW50UmVzcG9uc2VBdHRyaWJ1dGVzIiwibWpwZWdTZXJ2ZXJTY3JlZW5zaG90UXVhbGl0eSIsIm1qcGVnU2VydmVyRnJhbWVyYXRlIiwic2NyZWVuc2hvdFF1YWxpdHkiLCJtanBlZ1NjYWxpbmdGYWN0b3IiLCJyZWR1Y2VNb3Rpb24iLCJTSEFSRURfUkVTT1VSQ0VTX0dVQVJEIiwiQXN5bmNMb2NrIiwiTk9fUFJPWFlfTkFUSVZFX0xJU1QiLCJOT19QUk9YWV9XRUJfTElTVCIsImNvbmNhdCIsIk1FTU9JWkVEX0ZVTkNUSU9OUyIsIlhDVUlUZXN0RHJpdmVyIiwiQmFzZURyaXZlciIsImNvbnN0cnVjdG9yIiwib3B0cyIsInNob3VsZFZhbGlkYXRlQ2FwcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsImxvY2F0b3JTdHJhdGVnaWVzIiwid2ViTG9jYXRvclN0cmF0ZWdpZXMiLCJyZXNldElvcyIsInNldHRpbmdzIiwiRGV2aWNlU2V0dGluZ3MiLCJvblNldHRpbmdzVXBkYXRlIiwiYmluZCIsImxvZ3MiLCJmbiIsIl8iLCJtZW1vaXplIiwia2V5IiwidmFsdWUiLCJwcm94eUNvbW1hbmQiLCJ3ZGEiLCJkZXZpY2UiLCJqd3BQcm94eUFjdGl2ZSIsInByb3h5UmVxUmVzIiwiandwUHJveHlBdm9pZCIsInNhZmFyaSIsImNhY2hlZFdkYVN0YXR1cyIsImN1cldlYkZyYW1lcyIsIndlYkVsZW1lbnRJZHMiLCJfY3VycmVudFVybCIsImN1ckNvbnRleHQiLCJ4Y29kZVZlcnNpb24iLCJjb250ZXh0cyIsImltcGxpY2l0V2FpdE1zIiwiYXN5bmNsaWJXYWl0TXMiLCJwYWdlTG9hZE1zIiwibGFuZHNjYXBlV2ViQ29vcmRzT2Zmc2V0IiwicmVtb3RlIiwiZHJpdmVyRGF0YSIsImdldFN0YXR1cyIsImRyaXZlckluZm8iLCJzdGF0dXMiLCJidWlsZCIsInZlcnNpb24iLCJjcmVhdGVTZXNzaW9uIiwiYXJncyIsImxpZmVjeWNsZURhdGEiLCJzZXNzaW9uSWQiLCJjYXBzIiwic3RhcnQiLCJPYmplY3QiLCJhc3NpZ24iLCJkZWZhdWx0U2VydmVyQ2FwcyIsInVkaWQiLCJoYXMiLCJ1cGRhdGVTZXR0aW5ncyIsIndkYVNldHRpbmdzIiwibG9nIiwiaW5mbyIsIm1qcGVnU2NyZWVuc2hvdFVybCIsIm1qcGVnU3RyZWFtIiwibWpwZWciLCJNSnBlZ1N0cmVhbSIsImUiLCJlcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJkZWxldGVTZXNzaW9uIiwibm9SZXNldCIsImZ1bGxSZXNldCIsImlvc1Nka1ZlcnNpb24iLCJyZWFsRGV2aWNlIiwiZGV0ZXJtaW5lRGV2aWNlIiwic2ltdWxhdG9yRGV2aWNlc1NldFBhdGgiLCJkZXZpY2VzU2V0UGF0aCIsInBsYXRmb3JtVmVyc2lvbiIsImdldFBsYXRmb3JtVmVyc2lvbiIsIm5vcm1hbGl6ZWRWZXJzaW9uIiwidXRpbCIsImNvbXBhcmVWZXJzaW9ucyIsIkVycm9yIiwiaXNFbXB0eSIsIndlYkRyaXZlckFnZW50VXJsIiwibG9nRXZlbnQiLCJ0b0xvd2VyIiwiYnJvd3Nlck5hbWUiLCJhcHAiLCJ1bmRlZmluZWQiLCJwcm9jZXNzQXJndW1lbnRzIiwiYnVuZGxlSWQiLCJzYWZhcmlJbml0aWFsVXJsIiwiaXNSZWFsRGV2aWNlIiwiYWRkcmVzcyIsInBvcnQiLCJjb25maWd1cmVBcHAiLCJhcHBVdGlscyIsImV4dHJhY3RCdW5kbGVJZCIsInJ1blJlc2V0IiwiV2ViRHJpdmVyQWdlbnQiLCJyZXRyaWV2ZURlcml2ZWREYXRhUGF0aCIsImNhdGNoIiwiZGVidWciLCJtZW1vaXplZExvZ0luZm8iLCJsb2dJbmZvIiwic3RhcnRMb2dDYXB0dXJlIiwic2tpcExvZ0NhcHR1cmUiLCJyZXN1bHQiLCJpc0xvZ0NhcHR1cmVTdGFydGVkIiwiaXNTaW11bGF0b3IiLCJzaHV0ZG93bk90aGVyU2ltdWxhdG9ycyIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwiaXNTYWZhcmkiLCJzYWZhcmlHbG9iYWxQcmVmZXJlbmNlcyIsInVwZGF0ZVNhZmFyaUdsb2JhbFNldHRpbmdzIiwibG9jYWxDb25maWciLCJpb3NTZXR0aW5ncyIsInNldExvY2FsZUFuZFByZWZlcmVuY2VzIiwic2ltIiwiY3VzdG9tU1NMQ2VydCIsImNlcnRIZWFkIiwidHJ1bmNhdGUiLCJsZW5ndGgiLCJzaW1jdGwiLCJhZGRSb290Q2VydGlmaWNhdGUiLCJyYXciLCJpZ24iLCJzdGFydFNpbSIsImxhdW5jaFdpdGhJREIiLCJpZGIiLCJJREIiLCJjb25uZWN0IiwibWVzc2FnZSIsImluc3RhbGxBVVQiLCJpc0FwcEluc3RhbGxlZCIsImVycm9yQW5kVGhyb3ciLCJwZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zTWFwcGluZyIsInRvUGFpcnMiLCJwYXJzZSIsInNldFBlcm1pc3Npb25zIiwid2FybiIsImNhbGVuZGFyQWNjZXNzQXV0aG9yaXplZCIsImVuYWJsZUNhbGVuZGFyQWNjZXNzIiwiZGlzYWJsZUNhbGVuZGFyQWNjZXNzIiwic3RhcnRXZGEiLCJzZXRSZWR1Y2VNb3Rpb24iLCJzZXRJbml0aWFsT3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsIm9wZW5VcmwiLCJhdXRvV2VidmlldyIsIm5hdlRvSW5pdGlhbFdlYnZpZXciLCJzZXRVcmwiLCJoYXNWYWx1ZSIsImNsZWFudXBPYnNvbGV0ZVByb2Nlc3NlcyIsInVzZVBvcnRGb3J3YXJkaW5nIiwid2RhQmFzZVVybCIsIkRFVklDRV9DT05ORUNUSU9OU19GQUNUT1JZIiwicmVxdWVzdENvbm5lY3Rpb24iLCJ1cmwiLCJkZXZpY2VQb3J0Iiwid2RhUmVtb3RlUG9ydCIsInN5bmNocm9uaXphdGlvbktleSIsIm5hbWUiLCJ1c2VYY3Rlc3RydW5GaWxlIiwiaXNTb3VyY2VGcmVzaCIsImRlcml2ZWREYXRhUGF0aCIsInBhdGgiLCJub3JtYWxpemUiLCJpc0J1c3kiLCJib290c3RyYXBQYXRoIiwiYWNxdWlyZSIsInVzZU5ld1dEQSIsInF1aXRBbmRVbmluc3RhbGwiLCJzZXR1cENhY2hpbmciLCJtc2ciLCJyZXN1bHRCdW5kbGVQYXRoIiwic3RhcnR1cFJldHJpZXMiLCJ3ZGFTdGFydHVwUmV0cmllcyIsInN0YXJ0dXBSZXRyeUludGVydmFsIiwid2RhU3RhcnR1cFJldHJ5SW50ZXJ2YWwiLCJyZXRyeUNvdW50IiwicmV0cmllcyIsIm1ham9yIiwibGF1bmNoIiwiZXJyIiwiZXJyb3JNc2ciLCJvcmlnaW5hbFN0YWNrdHJhY2UiLCJzdGFydFdkYVNlc3Npb24iLCJzdGFjayIsImNsZWFyU3lzdGVtRmlsZXMiLCJmdWxseVN0YXJ0ZWQiLCJzZXJ2ZXIiLCJyZWNvcmRlciIsImNvbXBhY3QiLCJfcmVjZW50U2NyZWVuUmVjb3JkZXIiLCJfYXVkaW9SZWNvcmRlciIsImludGVycnVwdCIsImNsZWFudXAiLCJfcGVyZlJlY29yZGVycyIsIkIiLCJhbGwiLCJtYXAiLCJ4Iiwic3RvcCIsInN0b3BSZW1vdGUiLCJyZXNldE9uU2Vzc2lvblN0YXJ0T25seSIsImVuZm9yY2VTaW11bGF0b3JTaHV0ZG93biIsImNyZWF0ZVNpbSIsImRlbGV0ZSIsInN5c2xvZyIsInN0b3BDYXB0dXJlIiwiandwcm94eSIsInF1aXQiLCJyZWxlYXNlQ29ubmVjdGlvbiIsImV4ZWN1dGVDb21tYW5kIiwiY21kIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2UiLCJhcHBJc1BhY2thZ2VPckJ1bmRsZSIsInRlc3QiLCJoZWxwZXJzIiwiZGV2aWNlTmFtZSIsInNldHVwVmVyc2lvbkNhcHMiLCJ0b0xvd2VyQ2FzZSIsImRldmljZVBsYXRmb3JtIiwiZGV2aWNlcyIsImpvaW4iLCJpbmNsdWRlcyIsImVuZm9yY2VGcmVzaFNpbXVsYXRvckNyZWF0aW9uIiwicnVuT3B0cyIsInNjYWxlRmFjdG9yIiwiY29ubmVjdEhhcmR3YXJlS2V5Ym9hcmQiLCJwYXN0ZWJvYXJkQXV0b21hdGljU3luYyIsInNpbXVsYXRvclBhc3RlYm9hcmRBdXRvbWF0aWNTeW5jIiwiaXNIZWFkbGVzcyIsInRyYWNlUG9pbnRlciIsInNpbXVsYXRvclRyYWNlUG9pbnRlciIsImRldmljZVByZWZlcmVuY2VzIiwiU2ltdWxhdG9yV2luZG93Q2VudGVyIiwiaXNJbnRlZ2VyIiwic2ltdWxhdG9yU3RhcnR1cFRpbWVvdXQiLCJzdGFydHVwVGltZW91dCIsImlzU3RyaW5nIiwidG9VcHBlckNhc2UiLCJTaW11bGF0b3JXaW5kb3dPcmllbnRhdGlvbiIsIlNpbXVsYXRvcldpbmRvd1JvdGF0aW9uQW5nbGUiLCJydW4iLCJwbGF0Zm9ybU5hbWUiLCJpc1R2T1MiLCJQTEFURk9STV9OQU1FX1RWT1MiLCJQTEFURk9STV9OQU1FX0lPUyIsImxhdW5jaEFwcCIsIkFQUF9MQVVOQ0hfVElNRU9VVCIsImNoZWNrU3RhdHVzIiwicmVzcG9uc2UiLCJjdXJyZW50QXBwIiwiYnVuZGxlSUQiLCJwYXJzZUludCIsImlzQXJyYXkiLCJlbnYiLCJpc1BsYWluT2JqZWN0IiwibGFuZ3VhZ2UiLCJwdXNoIiwibG9jYWxlIiwid2RhQ2FwcyIsImF1dG9MYXVuY2giLCJhcmd1bWVudHMiLCJlbnZpcm9ubWVudCIsImV2ZW50bG9vcElkbGVEZWxheVNlYyIsIndkYUV2ZW50bG9vcElkbGVEZWxheSIsInNob3VsZFdhaXRGb3JRdWllc2NlbmNlIiwid2FpdEZvclF1aWVzY2VuY2UiLCJzaG91bGRVc2VUZXN0TWFuYWdlckZvclZpc2liaWxpdHlEZXRlY3Rpb24iLCJzaW1wbGVJc1Zpc2libGVDaGVjayIsIm1heFR5cGluZ0ZyZXF1ZW5jeSIsInNob3VsZFVzZVNpbmdsZXRvblRlc3RNYW5hZ2VyIiwid2FpdEZvcklkbGVUaW1lb3V0IiwiZWxlbWVudFJlc3BvbnNlRmllbGRzIiwiYXV0b0FjY2VwdEFsZXJ0cyIsImRlZmF1bHRBbGVydEFjdGlvbiIsImF1dG9EaXNtaXNzQWxlcnRzIiwiY2FwYWJpbGl0aWVzIiwiZmlyc3RNYXRjaCIsImFsd2F5c01hdGNoIiwicHJveHlBY3RpdmUiLCJnZXRQcm94eUF2b2lkTGlzdCIsImlzV2VidmlldyIsImNhblByb3h5IiwiaXNXZWJDb250ZXh0IiwidmFsaWRhdGVMb2NhdG9yU3RyYXRlZ3kiLCJzdHJhdGVneSIsInZhbGlkYXRlRGVzaXJlZENhcHMiLCJjb2VyY2VWZXJzaW9uIiwidmVyaWZ5UHJvY2Vzc0FyZ3VtZW50IiwiaXNOaWwiLCJrZXljaGFpblBhdGgiLCJrZXljaGFpblBhc3N3b3JkIiwiY29tbWFuZFRpbWVvdXRzIiwicHJvdG9jb2wiLCJob3N0IiwicGVybXMiLCJhZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkcyIsInBhcnNlQ2Fwc0FycmF5IiwidGltZW91dCIsImFwcFB1c2hUaW1lb3V0IiwibmV3U2ltdWxhdG9yIiwib3RoZXJBcHBzIiwiaW5zdGFsbE90aGVyQXBwcyIsImlvc0luc3RhbGxQYXVzZSIsInBhdXNlIiwiZGVsYXkiLCJvdGhlckFwcCIsImlzRW5hYmxlZCIsImlzQm9vbGVhbiIsImN1ck9yaWVudGF0aW9uIiwiX2dldENvbW1hbmRUaW1lb3V0IiwiY21kTmFtZSIsIkRFRkFVTFRfVElNRU9VVF9LRVkiLCJnZXRTZXNzaW9uIiwiZHJpdmVyU2Vzc2lvbiIsInNob3VsZEdldERldmljZUNhcHMiLCJpbmNsdWRlRGV2aWNlQ2Fwc1RvU2Vzc2lvbkluZm8iLCJkZXZpY2VDYXBzIiwic3RhdHVzQmFyU2l6ZSIsInNjYWxlIiwiZ2V0U2NyZWVuSW5mbyIsInBpeGVsUmF0aW8iLCJzdGF0QmFySGVpZ2h0IiwiaGVpZ2h0Iiwidmlld3BvcnRSZWN0IiwiZ2V0Vmlld3BvcnRSZWN0IiwicmVzZXQiLCJjbG9uZURlZXAiLCJzaHV0ZG93bkhhbmRsZXIiLCJyZXNldE9uVW5leHBlY3RlZFNodXRkb3duIiwicHJvdG90eXBlIiwiY29tbWFuZHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBT0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsd0JBQXdCLEdBQUcscUJBQWpDO0FBQ0EsTUFBTUMsNEJBQTRCLEdBQUcsOEJBQXJDO0FBRUEsTUFBTUMsZ0JBQWdCLEdBQUcsd0JBQXpCO0FBQ0EsTUFBTUMsdUJBQXVCLEdBQUcsQ0FBaEM7QUFDQSxNQUFNQyw0QkFBNEIsR0FBRyxDQUFyQztBQUNBLE1BQU1DLHlCQUF5QixHQUFHLHlGQUFsQztBQUNBLE1BQU1DLDBCQUEwQixHQUFHLEtBQW5DO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUc7QUFDdkJDLEVBQUFBLFlBQVksRUFBRSxLQURTO0FBRXZCQyxFQUFBQSxrQkFBa0IsRUFBRSxLQUZHO0FBR3ZCQyxFQUFBQSxhQUFhLEVBQUUsS0FIUTtBQUl2QkMsRUFBQUEseUJBQXlCLEVBQUUsSUFKSjtBQUt2QkMsRUFBQUEseUJBQXlCLEVBQUUsWUFMSjtBQU92QkMsRUFBQUEsNEJBQTRCLEVBQUUsRUFQUDtBQVF2QkMsRUFBQUEsb0JBQW9CLEVBQUUsRUFSQztBQVN2QkMsRUFBQUEsaUJBQWlCLEVBQUUsQ0FUSTtBQVV2QkMsRUFBQUEsa0JBQWtCLEVBQUUsR0FWRztBQVl2QkMsRUFBQUEsWUFBWSxFQUFFO0FBWlMsQ0FBekI7QUFnQkEsTUFBTUMsc0JBQXNCLEdBQUcsSUFBSUMsa0JBQUosRUFBL0I7QUFHQSxNQUFNQyxvQkFBb0IsR0FBRyxDQUMzQixDQUFDLFFBQUQsRUFBVyxRQUFYLENBRDJC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QjtBQUtEOztBQUNEaFIsb0JBQUlDLElBQUosQ0FBUywrREFBVDs7QUFDQSxXQUFPUixNQUFNLENBQUNDLE1BQVAsQ0FBYztBQUFDRSxNQUFBQSxJQUFJLEVBQUUsS0FBS2xELElBQUwsQ0FBVWtEO0FBQWpCLEtBQWQsRUFBc0N5USxhQUF0QyxFQUNMLEtBQUt2RCxPQUFMLENBQWFpQixZQURSLEVBQ3NCLEtBQUt5QyxVQUFMLElBQW1CLEVBRHpDLENBQVA7QUFFRDs7QUFFVSxRQUFMUyxLQUFLLEdBQUk7QUFDYixRQUFJLEtBQUt2VSxJQUFMLENBQVVpRSxPQUFkLEVBQXVCO0FBRXJCLFVBQUlqRSxJQUFJLEdBQUdZLGdCQUFFNFQsU0FBRixDQUFZLEtBQUt4VSxJQUFqQixDQUFYOztBQUNBQSxNQUFBQSxJQUFJLENBQUNpRSxPQUFMLEdBQWUsS0FBZjtBQUNBakUsTUFBQUEsSUFBSSxDQUFDa0UsU0FBTCxHQUFpQixLQUFqQjtBQUNBLFlBQU11USxlQUFlLEdBQUcsS0FBS0MseUJBQTdCOztBQUNBLFdBQUtBLHlCQUFMLEdBQWlDLE1BQU0sQ0FBRSxDQUF6Qzs7QUFDQSxVQUFJO0FBQ0YsY0FBTSxLQUFLNU8sUUFBTCxDQUFjOUYsSUFBZCxDQUFOO0FBQ0QsT0FGRCxTQUVVO0FBQ1IsYUFBSzBVLHlCQUFMLEdBQWlDRCxlQUFqQztBQUNEO0FBQ0Y7O0FBQ0QsVUFBTSxNQUFNRixLQUFOLEVBQU47QUFDRDs7QUEzbUNxQzs7O0FBOG1DeEN4UixNQUFNLENBQUNDLE1BQVAsQ0FBY25ELGNBQWMsQ0FBQzhVLFNBQTdCLEVBQXdDQyxjQUF4QztlQUVlL1UsYyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEJhc2VEcml2ZXIsIERldmljZVNldHRpbmdzIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCB7IHV0aWwsIG1qcGVnIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcbmltcG9ydCB7IFdlYkRyaXZlckFnZW50IH0gZnJvbSAnYXBwaXVtLXdlYmRyaXZlcmFnZW50JztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlU2ltLCBnZXRFeGlzdGluZ1NpbSwgcnVuU2ltdWxhdG9yUmVzZXQsIGluc3RhbGxUb1NpbXVsYXRvcixcbiAgc2h1dGRvd25PdGhlclNpbXVsYXRvcnMsIHNodXRkb3duU2ltdWxhdG9yIH0gZnJvbSAnLi9zaW11bGF0b3ItbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBnZXRTaW11bGF0b3IsIGluc3RhbGxTU0xDZXJ0LCBoYXNTU0xDZXJ0IH0gZnJvbSAnYXBwaXVtLWlvcy1zaW11bGF0b3InO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCwgcmV0cnkgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBzZXR0aW5ncyBhcyBpb3NTZXR0aW5ncywgZGVmYXVsdFNlcnZlckNhcHMsIGFwcFV0aWxzIH0gZnJvbSAnYXBwaXVtLWlvcy1kcml2ZXInO1xuaW1wb3J0IHsgZGVzaXJlZENhcENvbnN0cmFpbnRzLCBQTEFURk9STV9OQU1FX0lPUywgUExBVEZPUk1fTkFNRV9UVk9TIH0gZnJvbSAnLi9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IGNvbW1hbmRzIGZyb20gJy4vY29tbWFuZHMvaW5kZXgnO1xuaW1wb3J0IHtcbiAgZGV0ZWN0VWRpZCwgZ2V0QW5kQ2hlY2tYY29kZVZlcnNpb24sIGdldEFuZENoZWNrSW9zU2RrVmVyc2lvbixcbiAgY2hlY2tBcHBQcmVzZW50LCBnZXREcml2ZXJJbmZvLFxuICBjbGVhclN5c3RlbUZpbGVzLCB0cmFuc2xhdGVEZXZpY2VOYW1lLCBub3JtYWxpemVDb21tYW5kVGltZW91dHMsXG4gIERFRkFVTFRfVElNRU9VVF9LRVksIG1hcmtTeXN0ZW1GaWxlc0ZvckNsZWFudXAsXG4gIHByaW50VXNlciwgcmVtb3ZlQWxsU2Vzc2lvbldlYlNvY2tldEhhbmRsZXJzLCB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtLFxuICBub3JtYWxpemVQbGF0Zm9ybVZlcnNpb24sIGlzTG9jYWxIb3N0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge1xuICBnZXRDb25uZWN0ZWREZXZpY2VzLCBydW5SZWFsRGV2aWNlUmVzZXQsIGluc3RhbGxUb1JlYWxEZXZpY2UsXG4gIGdldFJlYWxEZXZpY2VPYmogfSBmcm9tICcuL3JlYWwtZGV2aWNlLW1hbmFnZW1lbnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IElEQiBmcm9tICdhcHBpdW0taWRiJztcbmltcG9ydCBERVZJQ0VfQ09OTkVDVElPTlNfRkFDVE9SWSBmcm9tICcuL2RldmljZS1jb25uZWN0aW9ucy1mYWN0b3J5JztcblxuXG5jb25zdCBTSFVURE9XTl9PVEhFUl9GRUFUX05BTUUgPSAnc2h1dGRvd25fb3RoZXJfc2ltcyc7XG5jb25zdCBDVVNUT01JWkVfUkVTVUxUX0JVTkRQRV9QQVRIID0gJ2N1c3RvbWl6ZV9yZXN1bHRfYnVuZGxlX3BhdGgnO1xuXG5jb25zdCBTQUZBUklfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5tb2JpbGVzYWZhcmknO1xuY29uc3QgV0RBX1NJTV9TVEFSVFVQX1JFVFJJRVMgPSAyO1xuY29uc3QgV0RBX1JFQUxfREVWX1NUQVJUVVBfUkVUUklFUyA9IDE7XG5jb25zdCBXREFfUkVBTF9ERVZfVFVUT1JJQUxfVVJMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtLXhjdWl0ZXN0LWRyaXZlci9ibG9iL21hc3Rlci9kb2NzL3JlYWwtZGV2aWNlLWNvbmZpZy5tZCc7XG5jb25zdCBXREFfU1RBUlRVUF9SRVRSWV9JTlRFUlZBTCA9IDEwMDAwO1xuY29uc3QgREVGQVVMVF9TRVRUSU5HUyA9IHtcbiAgbmF0aXZlV2ViVGFwOiBmYWxzZSxcbiAgbmF0aXZlV2ViVGFwU3RyaWN0OiBmYWxzZSxcbiAgdXNlSlNPTlNvdXJjZTogZmFsc2UsXG4gIHNob3VsZFVzZUNvbXBhY3RSZXNwb25zZXM6IHRydWUsXG4gIGVsZW1lbnRSZXNwb25zZUF0dHJpYnV0ZXM6ICd0eXBlLGxhYmVsJyxcbiAgLy8gUmVhZCBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL1dlYkRyaXZlckFnZW50L2Jsb2IvbWFzdGVyL1dlYkRyaXZlckFnZW50TGliL1V0aWxpdGllcy9GQkNvbmZpZ3VyYXRpb24ubSBmb3IgZm9sbG93aW5nIHNldHRpbmdzJyB2YWx1ZXNcbiAgbWpwZWdTZXJ2ZXJTY3JlZW5zaG90UXVhbGl0eTogMjUsXG4gIG1qcGVnU2VydmVyRnJhbWVyYXRlOiAxMCxcbiAgc2NyZWVuc2hvdFF1YWxpdHk6IDEsXG4gIG1qcGVnU2NhbGluZ0ZhY3RvcjogMTAwLFxuICAvLyBzZXQgYHJlZHVjZU1vdGlvbmAgdG8gYG51bGxgIHNvIHRoYXQgaXQgd2lsbCBiZSB2ZXJpZmllZCBidXQgc3RpbGwgc2V0IGVpdGhlciB0cnVlL2ZhbHNlXG4gIHJlZHVjZU1vdGlvbjogbnVsbCxcbn07XG4vLyBUaGlzIGxvY2sgYXNzdXJlcywgdGhhdCBlYWNoIGRyaXZlciBzZXNzaW9uIGRvZXMgbm90XG4vLyBhZmZlY3Qgc2hhcmVkIHJlc291cmNlcyBvZiB0aGUgb3RoZXIgcGFyYWxsZWwgc2Vzc2lvbnNcbmNvbnN0IFNIQVJFRF9SRVNPVVJDRVNfR1VBUkQgPSBuZXcgQXN5bmNMb2NrKCk7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZWxlc3MtZXNjYXBlICovXG5jb25zdCBOT19QUk9YWV9OQVRJVkVfTElTVCA9IFtcbiAgWydERUxFVEUnLCAvd2luZG93L10sXG4gIFsnR0VUJywgL15cXC9zZXNzaW9uXFwvW15cXC9dKyQvXSxcbiAgWydHRVQnLCAvYWxlcnRfdGV4dC9dLFxuICBbJ0dFVCcsIC9hbGVydFxcL1teXFwvXSsvXSxcbiAgWydHRVQnLCAvYXBwaXVtL10sXG4gIFsnR0VUJywgL2F0dHJpYnV0ZS9dLFxuICBbJ0dFVCcsIC9jb250ZXh0L10sXG4gIFsnR0VUJywgL2xvY2F0aW9uL10sXG4gIFsnR0VUJywgL2xvZy9dLFxuICBbJ0dFVCcsIC9zY3JlZW5zaG90L10sXG4gIFsnR0VUJywgL3NpemUvXSxcbiAgWydHRVQnLCAvc291cmNlL10sXG4gIFsnR0VUJywgL3RpbWVvdXRzJC9dLFxuICBbJ0dFVCcsIC91cmwvXSxcbiAgWydHRVQnLCAvd2luZG93L10sXG4gIFsnUE9TVCcsIC9hY2NlcHRfYWxlcnQvXSxcbiAgWydQT1NUJywgL2FjdGlvbnMkL10sXG4gIFsnUE9TVCcsIC9hbGVydF90ZXh0L10sXG4gIFsnUE9TVCcsIC9hbGVydFxcL1teXFwvXSsvXSxcbiAgWydQT1NUJywgL2FwcGl1bS9dLFxuICBbJ1BPU1QnLCAvYXBwaXVtXFwvZGV2aWNlXFwvaXNfbG9ja2VkL10sXG4gIFsnUE9TVCcsIC9hcHBpdW1cXC9kZXZpY2VcXC9sb2NrL10sXG4gIFsnUE9TVCcsIC9hcHBpdW1cXC9kZXZpY2VcXC91bmxvY2svXSxcbiAgWydQT1NUJywgL2JhY2svXSxcbiAgWydQT1NUJywgL2NsZWFyL10sXG4gIFsnUE9TVCcsIC9jb250ZXh0L10sXG4gIFsnUE9TVCcsIC9kaXNtaXNzX2FsZXJ0L10sXG4gIFsnUE9TVCcsIC9lbGVtZW50XFwvYWN0aXZlL10sIC8vIE1KU09OV1AgZ2V0IGFjdGl2ZSBlbGVtZW50IHNob3VsZCBwcm94eVxuICBbJ1BPU1QnLCAvZWxlbWVudCQvXSxcbiAgWydQT1NUJywgL2VsZW1lbnRzJC9dLFxuICBbJ1BPU1QnLCAvZXhlY3V0ZS9dLFxuICBbJ1BPU1QnLCAva2V5cy9dLFxuICBbJ1BPU1QnLCAvbG9nL10sXG4gIFsnUE9TVCcsIC9tb3ZldG8vXSxcbiAgWydQT1NUJywgL3JlY2VpdmVfYXN5bmNfcmVzcG9uc2UvXSwgLy8gYWx3YXlzLCBpbiBjYXNlIGNvbnRleHQgc3dpdGNoZXMgd2hpbGUgd2FpdGluZ1xuICBbJ1BPU1QnLCAvc2Vzc2lvblxcL1teXFwvXStcXC9sb2NhdGlvbi9dLCAvLyBnZW8gbG9jYXRpb24sIGJ1dCBub3QgZWxlbWVudCBsb2NhdGlvblxuICBbJ1BPU1QnLCAvc2hha2UvXSxcbiAgWydQT1NUJywgL3RpbWVvdXRzL10sXG4gIFsnUE9TVCcsIC90b3VjaC9dLFxuICBbJ1BPU1QnLCAvdXJsL10sXG4gIFsnUE9TVCcsIC92YWx1ZS9dLFxuICBbJ1BPU1QnLCAvd2luZG93L10sXG4gIFsnREVMRVRFJywgL2Nvb2tpZS9dLFxuICBbJ0dFVCcsIC9jb29raWUvXSxcbiAgWydQT1NUJywgL2Nvb2tpZS9dLFxuXTtcbmNvbnN0IE5PX1BST1hZX1dFQl9MSVNUID0gW1xuICBbJ0dFVCcsIC9hdHRyaWJ1dGUvXSxcbiAgWydHRVQnLCAvZWxlbWVudC9dLFxuICBbJ0dFVCcsIC90ZXh0L10sXG4gIFsnR0VUJywgL3RpdGxlL10sXG4gIFsnUE9TVCcsIC9jbGVhci9dLFxuICBbJ1BPU1QnLCAvY2xpY2svXSxcbiAgWydQT1NUJywgL2VsZW1lbnQvXSxcbiAgWydQT1NUJywgL2ZvcndhcmQvXSxcbiAgWydQT1NUJywgL2ZyYW1lL10sXG4gIFsnUE9TVCcsIC9rZXlzL10sXG4gIFsnUE9TVCcsIC9yZWZyZXNoL10sXG5dLmNvbmNhdChOT19QUk9YWV9OQVRJVkVfTElTVCk7XG4vKiBlc2xpbnQtZW5hYmxlIG5vLXVzZWxlc3MtZXNjYXBlICovXG5cbmNvbnN0IE1FTU9JWkVEX0ZVTkNUSU9OUyA9IFtcbiAgJ2dldFN0YXR1c0JhckhlaWdodCcsXG4gICdnZXREZXZpY2VQaXhlbFJhdGlvJyxcbiAgJ2dldFNjcmVlbkluZm8nLFxuXTtcblxuY2xhc3MgWENVSVRlc3REcml2ZXIgZXh0ZW5kcyBCYXNlRHJpdmVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSwgc2hvdWxkVmFsaWRhdGVDYXBzID0gdHJ1ZSkge1xuICAgIHN1cGVyKG9wdHMsIHNob3VsZFZhbGlkYXRlQ2Fwcyk7XG5cbiAgICB0aGlzLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IGRlc2lyZWRDYXBDb25zdHJhaW50cztcblxuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAneHBhdGgnLFxuICAgICAgJ2lkJyxcbiAgICAgICduYW1lJyxcbiAgICAgICdjbGFzcyBuYW1lJyxcbiAgICAgICctaW9zIHByZWRpY2F0ZSBzdHJpbmcnLFxuICAgICAgJy1pb3MgY2xhc3MgY2hhaW4nLFxuICAgICAgJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgICAgJ2NzcyBzZWxlY3RvcicsXG4gICAgXTtcbiAgICB0aGlzLndlYkxvY2F0b3JTdHJhdGVnaWVzID0gW1xuICAgICAgJ2xpbmsgdGV4dCcsXG4gICAgICAnY3NzIHNlbGVjdG9yJyxcbiAgICAgICd0YWcgbmFtZScsXG4gICAgICAnbGluayB0ZXh0JyxcbiAgICAgICdwYXJ0aWFsIGxpbmsgdGV4dCcsXG4gICAgXTtcbiAgICB0aGlzLnJlc2V0SW9zKCk7XG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyhERUZBVUxUX1NFVFRJTkdTLCB0aGlzLm9uU2V0dGluZ3NVcGRhdGUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5sb2dzID0ge307XG5cbiAgICAvLyBtZW1vaXplIGZ1bmN0aW9ucyBoZXJlLCBzbyB0aGF0IHRoZXkgYXJlIGRvbmUgb24gYSBwZXItaW5zdGFuY2UgYmFzaXNcbiAgICBmb3IgKGNvbnN0IGZuIG9mIE1FTU9JWkVEX0ZVTkNUSU9OUykge1xuICAgICAgdGhpc1tmbl0gPSBfLm1lbW9pemUodGhpc1tmbl0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uU2V0dGluZ3NVcGRhdGUgKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5ICE9PSAnbmF0aXZlV2ViVGFwJyAmJiBrZXkgIT09ICduYXRpdmVXZWJUYXBTdHJpY3QnKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy9hcHBpdW0vc2V0dGluZ3MnLCAnUE9TVCcsIHtcbiAgICAgICAgc2V0dGluZ3M6IHtba2V5XTogdmFsdWV9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5vcHRzW2tleV0gPSAhIXZhbHVlO1xuICB9XG5cbiAgcmVzZXRJb3MgKCkge1xuICAgIHRoaXMub3B0cyA9IHRoaXMub3B0cyB8fCB7fTtcbiAgICB0aGlzLndkYSA9IG51bGw7XG4gICAgdGhpcy5vcHRzLmRldmljZSA9IG51bGw7XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSBudWxsO1xuICAgIHRoaXMuandwUHJveHlBdm9pZCA9IFtdO1xuICAgIHRoaXMuc2FmYXJpID0gZmFsc2U7XG4gICAgdGhpcy5jYWNoZWRXZGFTdGF0dXMgPSBudWxsO1xuXG4gICAgLy8gc29tZSB0aGluZ3MgdGhhdCBjb21tYW5kcyBpbXBvcnRlZCBmcm9tIGFwcGl1bS1pb3MtZHJpdmVyIG5lZWRcbiAgICB0aGlzLmN1cldlYkZyYW1lcyA9IFtdO1xuICAgIHRoaXMud2ViRWxlbWVudElkcyA9IFtdO1xuICAgIHRoaXMuX2N1cnJlbnRVcmwgPSBudWxsO1xuICAgIHRoaXMuY3VyQ29udGV4dCA9IG51bGw7XG4gICAgdGhpcy54Y29kZVZlcnNpb24gPSB7fTtcbiAgICB0aGlzLmNvbnRleHRzID0gW107XG4gICAgdGhpcy5pbXBsaWNpdFdhaXRNcyA9IDA7XG4gICAgdGhpcy5hc3luY2xpYldhaXRNcyA9IDA7XG4gICAgdGhpcy5wYWdlTG9hZE1zID0gNjAwMDtcbiAgICB0aGlzLmxhbmRzY2FwZVdlYkNvb3Jkc09mZnNldCA9IDA7XG4gICAgdGhpcy5yZW1vdGUgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGRyaXZlckRhdGEgKCkge1xuICAgIC8vIFRPRE8gZmlsbCBvdXQgcmVzb3VyY2UgaW5mbyBoZXJlXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgYXN5bmMgZ2V0U3RhdHVzICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuZHJpdmVySW5mbyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuZHJpdmVySW5mbyA9IGF3YWl0IGdldERyaXZlckluZm8oKTtcbiAgICB9XG4gICAgbGV0IHN0YXR1cyA9IHtidWlsZDoge3ZlcnNpb246IHRoaXMuZHJpdmVySW5mby52ZXJzaW9ufX07XG4gICAgaWYgKHRoaXMuY2FjaGVkV2RhU3RhdHVzKSB7XG4gICAgICBzdGF0dXMud2RhID0gdGhpcy5jYWNoZWRXZGFTdGF0dXM7XG4gICAgfVxuICAgIHJldHVybiBzdGF0dXM7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uICguLi5hcmdzKSB7XG4gICAgdGhpcy5saWZlY3ljbGVEYXRhID0ge307IC8vIHRoaXMgaXMgdXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUgc3RhdGUgd2Ugc3RhcnQgc28gd2hlbiB3ZSBkZWxldGUgdGhlIHNlc3Npb24gd2UgY2FuIHB1dCB0aGluZ3MgYmFja1xuICAgIHRyeSB7XG4gICAgICAvLyBUT0RPIGFkZCB2YWxpZGF0aW9uIG9uIGNhcHNcbiAgICAgIGxldCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IHN1cGVyLmNyZWF0ZVNlc3Npb24oLi4uYXJncyk7XG4gICAgICB0aGlzLm9wdHMuc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0KCk7XG5cbiAgICAgIC8vIG1lcmdlIHNlcnZlciBjYXBhYmlsaXRpZXMgKyBkZXNpcmVkIGNhcGFiaWxpdGllc1xuICAgICAgY2FwcyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRTZXJ2ZXJDYXBzLCBjYXBzKTtcbiAgICAgIC8vIHVwZGF0ZSB0aGUgdWRpZCB3aXRoIHdoYXQgaXMgYWN0dWFsbHkgdXNlZFxuICAgICAgY2Fwcy51ZGlkID0gdGhpcy5vcHRzLnVkaWQ7XG4gICAgICAvLyBlbnN1cmUgd2UgdHJhY2sgbmF0aXZlV2ViVGFwIGNhcGFiaWxpdHkgYXMgYSBzZXR0aW5nIGFzIHdlbGxcbiAgICAgIGlmIChfLmhhcyh0aGlzLm9wdHMsICduYXRpdmVXZWJUYXAnKSkge1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVNldHRpbmdzKHtuYXRpdmVXZWJUYXA6IHRoaXMub3B0cy5uYXRpdmVXZWJUYXB9KTtcbiAgICAgIH1cbiAgICAgIC8vIGVuc3VyZSB3ZSB0cmFjayBuYXRpdmVXZWJUYXBTdHJpY3QgY2FwYWJpbGl0eSBhcyBhIHNldHRpbmcgYXMgd2VsbFxuICAgICAgaWYgKF8uaGFzKHRoaXMub3B0cywgJ25hdGl2ZVdlYlRhcFN0cmljdCcpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlU2V0dGluZ3Moe25hdGl2ZVdlYlRhcFN0cmljdDogdGhpcy5vcHRzLm5hdGl2ZVdlYlRhcFN0cmljdH0pO1xuICAgICAgfVxuICAgICAgLy8gZW5zdXJlIHdlIHRyYWNrIHVzZUpTT05Tb3VyY2UgY2FwYWJpbGl0eSBhcyBhIHNldHRpbmcgYXMgd2VsbFxuICAgICAgaWYgKF8uaGFzKHRoaXMub3B0cywgJ3VzZUpTT05Tb3VyY2UnKSkge1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVNldHRpbmdzKHt1c2VKU09OU291cmNlOiB0aGlzLm9wdHMudXNlSlNPTlNvdXJjZX0pO1xuICAgICAgfVxuXG4gICAgICBsZXQgd2RhU2V0dGluZ3MgPSB7XG4gICAgICAgIGVsZW1lbnRSZXNwb25zZUF0dHJpYnV0ZXM6IERFRkFVTFRfU0VUVElOR1MuZWxlbWVudFJlc3BvbnNlQXR0cmlidXRlcyxcbiAgICAgICAgc2hvdWxkVXNlQ29tcGFjdFJlc3BvbnNlczogREVGQVVMVF9TRVRUSU5HUy5zaG91bGRVc2VDb21wYWN0UmVzcG9uc2VzLFxuICAgICAgfTtcbiAgICAgIGlmIChfLmhhcyh0aGlzLm9wdHMsICdlbGVtZW50UmVzcG9uc2VBdHRyaWJ1dGVzJykpIHtcbiAgICAgICAgd2RhU2V0dGluZ3MuZWxlbWVudFJlc3BvbnNlQXR0cmlidXRlcyA9IHRoaXMub3B0cy5lbGVtZW50UmVzcG9uc2VBdHRyaWJ1dGVzO1xuICAgICAgfVxuICAgICAgaWYgKF8uaGFzKHRoaXMub3B0cywgJ3Nob3VsZFVzZUNvbXBhY3RSZXNwb25zZXMnKSkge1xuICAgICAgICB3ZGFTZXR0aW5ncy5zaG91bGRVc2VDb21wYWN0UmVzcG9uc2VzID0gdGhpcy5vcHRzLnNob3VsZFVzZUNvbXBhY3RSZXNwb25zZXM7XG4gICAgICB9XG4gICAgICBpZiAoXy5oYXModGhpcy5vcHRzLCAnbWpwZWdTZXJ2ZXJTY3JlZW5zaG90UXVhbGl0eScpKSB7XG4gICAgICAgIHdkYVNldHRpbmdzLm1qcGVnU2VydmVyU2NyZWVuc2hvdFF1YWxpdHkgPSB0aGlzLm9wdHMubWpwZWdTZXJ2ZXJTY3JlZW5zaG90UXVhbGl0eTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmhhcyh0aGlzLm9wdHMsICdtanBlZ1NlcnZlckZyYW1lcmF0ZScpKSB7XG4gICAgICAgIHdkYVNldHRpbmdzLm1qcGVnU2VydmVyRnJhbWVyYXRlID0gdGhpcy5vcHRzLm1qcGVnU2VydmVyRnJhbWVyYXRlO1xuICAgICAgfVxuICAgICAgaWYgKF8uaGFzKHRoaXMub3B0cywgJ3NjcmVlbnNob3RRdWFsaXR5JykpIHtcbiAgICAgICAgbG9nLmluZm8oYFNldHRpbmcgdGhlIHF1YWxpdHkgb2YgcGhvbmUgc2NyZWVuc2hvdDogJyR7dGhpcy5vcHRzLnNjcmVlbnNob3RRdWFsaXR5fSdgKTtcbiAgICAgICAgd2RhU2V0dGluZ3Muc2NyZWVuc2hvdFF1YWxpdHkgPSB0aGlzLm9wdHMuc2NyZWVuc2hvdFF1YWxpdHk7XG4gICAgICB9XG4gICAgICAvLyBlbnN1cmUgV0RBIGdldHMgb3VyIGRlZmF1bHRzIGluc3RlYWQgb2Ygd2hhdGV2ZXIgaXRzIG93biBtaWdodCBiZVxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVTZXR0aW5ncyh3ZGFTZXR0aW5ncyk7XG5cbiAgICAgIC8vIHR1cm4gb24gbWpwZWcgc3RyZWFtIHJlYWRpbmcgaWYgcmVxdWVzdGVkXG4gICAgICBpZiAodGhpcy5vcHRzLm1qcGVnU2NyZWVuc2hvdFVybCkge1xuICAgICAgICBsb2cuaW5mbyhgU3RhcnRpbmcgTUpQRUcgc3RyZWFtIHJlYWRpbmcgVVJMOiAnJHt0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsfSdgKTtcbiAgICAgICAgdGhpcy5tanBlZ1N0cmVhbSA9IG5ldyBtanBlZy5NSnBlZ1N0cmVhbSh0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tanBlZ1N0cmVhbS5zdGFydCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtzZXNzaW9uSWQsIGNhcHNdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy5lcnJvcihKU09OLnN0cmluZ2lmeShlKSk7XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnQgKCkge1xuICAgIHRoaXMub3B0cy5ub1Jlc2V0ID0gISF0aGlzLm9wdHMubm9SZXNldDtcbiAgICB0aGlzLm9wdHMuZnVsbFJlc2V0ID0gISF0aGlzLm9wdHMuZnVsbFJlc2V0O1xuXG4gICAgYXdhaXQgcHJpbnRVc2VyKCk7XG5cbiAgICB0aGlzLm9wdHMuaW9zU2RrVmVyc2lvbiA9IG51bGw7IC8vIEZvciBXREEgYW5kIHhjb2RlYnVpbGRcbiAgICBjb25zdCB7ZGV2aWNlLCB1ZGlkLCByZWFsRGV2aWNlfSA9IGF3YWl0IHRoaXMuZGV0ZXJtaW5lRGV2aWNlKCk7XG4gICAgbG9nLmluZm8oYERldGVybWluaW5nIGRldmljZSB0byBydW4gdGVzdHMgb246IHVkaWQ6ICcke3VkaWR9JywgcmVhbCBkZXZpY2U6ICR7cmVhbERldmljZX1gKTtcbiAgICB0aGlzLm9wdHMuZGV2aWNlID0gZGV2aWNlO1xuICAgIHRoaXMub3B0cy51ZGlkID0gdWRpZDtcbiAgICB0aGlzLm9wdHMucmVhbERldmljZSA9IHJlYWxEZXZpY2U7XG5cbiAgICBpZiAodGhpcy5vcHRzLnNpbXVsYXRvckRldmljZXNTZXRQYXRoKSB7XG4gICAgICBpZiAocmVhbERldmljZSkge1xuICAgICAgICBsb2cuaW5mbyhgVGhlICdzaW11bGF0b3JEZXZpY2VzU2V0UGF0aCcgY2FwYWJpbGl0eSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgU2ltdWxhdG9yIGRldmljZXNgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5pbmZvKGBTZXR0aW5nIHNpbXVsYXRvciBkZXZpY2VzIHNldCBwYXRoIHRvICcke3RoaXMub3B0cy5zaW11bGF0b3JEZXZpY2VzU2V0UGF0aH0nYCk7XG4gICAgICAgIHRoaXMub3B0cy5kZXZpY2UuZGV2aWNlc1NldFBhdGggPSB0aGlzLm9wdHMuc2ltdWxhdG9yRGV2aWNlc1NldFBhdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYXQgdGhpcyBwb2ludCBpZiB0aGVyZSBpcyBubyBwbGF0Zm9ybVZlcnNpb24sIGdldCBpdCBmcm9tIHRoZSBkZXZpY2VcbiAgICBpZiAoIXRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24gJiYgdGhpcy5vcHRzLmRldmljZSkge1xuICAgICAgdGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZ2V0UGxhdGZvcm1WZXJzaW9uKCk7XG4gICAgICBsb2cuaW5mbyhgTm8gcGxhdGZvcm1WZXJzaW9uIHNwZWNpZmllZC4gVXNpbmcgZGV2aWNlIHZlcnNpb246ICcke3RoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb259J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRWZXJzaW9uID0gbm9ybWFsaXplUGxhdGZvcm1WZXJzaW9uKHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24pO1xuICAgIGlmICh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uICE9PSBub3JtYWxpemVkVmVyc2lvbikge1xuICAgICAgbG9nLmluZm8oYE5vcm1hbGl6ZWQgcGxhdGZvcm1WZXJzaW9uIGNhcGFiaWxpdHkgdmFsdWUgJyR7dGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbn0nIHRvICcke25vcm1hbGl6ZWRWZXJzaW9ufSdgKTtcbiAgICAgIHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24gPSBub3JtYWxpemVkVmVyc2lvbjtcbiAgICB9XG4gICAgaWYgKHV0aWwuY29tcGFyZVZlcnNpb25zKHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24sICc8JywgJzkuMycpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsYXRmb3JtIHZlcnNpb24gbXVzdCBiZSA5LjMgb3IgYWJvdmUuICcke3RoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb259JyBpcyBub3Qgc3VwcG9ydGVkLmApO1xuICAgIH1cblxuICAgIGlmIChfLmlzRW1wdHkodGhpcy54Y29kZVZlcnNpb24pICYmICghdGhpcy5vcHRzLndlYkRyaXZlckFnZW50VXJsIHx8ICF0aGlzLm9wdHMucmVhbERldmljZSkpIHtcbiAgICAgIC8vIG5vIGB3ZWJEcml2ZXJBZ2VudFVybGAsIG9yIG9uIGEgc2ltdWxhdG9yLCBzbyB3ZSBuZWVkIGFuIFhjb2RlIHZlcnNpb25cbiAgICAgIHRoaXMueGNvZGVWZXJzaW9uID0gYXdhaXQgZ2V0QW5kQ2hlY2tYY29kZVZlcnNpb24oKTtcbiAgICB9XG4gICAgdGhpcy5sb2dFdmVudCgneGNvZGVEZXRhaWxzUmV0cmlldmVkJyk7XG5cbiAgICBpZiAoXy50b0xvd2VyKHRoaXMub3B0cy5icm93c2VyTmFtZSkgPT09ICdzYWZhcmknKSB7XG4gICAgICBsb2cuaW5mbygnU2FmYXJpIHRlc3QgcmVxdWVzdGVkJyk7XG4gICAgICB0aGlzLnNhZmFyaSA9IHRydWU7XG4gICAgICB0aGlzLm9wdHMuYXBwID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vcHRzLnByb2Nlc3NBcmd1bWVudHMgPSB0aGlzLm9wdHMucHJvY2Vzc0FyZ3VtZW50cyB8fCB7fTtcbiAgICAgIHRoaXMub3B0cy5idW5kbGVJZCA9IFNBRkFSSV9CVU5ETEVfSUQ7XG4gICAgICB0aGlzLl9jdXJyZW50VXJsID0gdGhpcy5vcHRzLnNhZmFyaUluaXRpYWxVcmwgfHwgKFxuICAgICAgICB0aGlzLmlzUmVhbERldmljZSgpXG4gICAgICAgICAgPyAnaHR0cDovL2FwcGl1bS5pbydcbiAgICAgICAgICA6IGBodHRwOi8vJHt0aGlzLm9wdHMuYWRkcmVzc306JHt0aGlzLm9wdHMucG9ydH0vd2VsY29tZWBcbiAgICAgICk7XG4gICAgICBpZiAodXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgJzwnLCAnMTIuMicpKSB7XG4gICAgICAgIC8vIHRoaXMgb3B0aW9uIGRvZXMgbm90IHdvcmsgb24gMTIuMiBhbmQgYWJvdmVcbiAgICAgICAgdGhpcy5vcHRzLnByb2Nlc3NBcmd1bWVudHMuYXJncyA9IFsnLXUnLCB0aGlzLl9jdXJyZW50VXJsXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5hcHAgfHwgdGhpcy5vcHRzLmJ1bmRsZUlkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ3VyZUFwcCgpO1xuICAgIH1cbiAgICB0aGlzLmxvZ0V2ZW50KCdhcHBDb25maWd1cmVkJyk7XG5cbiAgICAvLyBmYWlsIHZlcnkgZWFybHkgaWYgdGhlIGFwcCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0XG4gICAgLy8gb3IgaWYgYnVuZGxlIGlkIGRvZXNuJ3QgcG9pbnQgdG8gYW4gaW5zdGFsbGVkIGFwcFxuICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICBhd2FpdCBjaGVja0FwcFByZXNlbnQodGhpcy5vcHRzLmFwcCk7XG5cbiAgICAgIGlmICghdGhpcy5vcHRzLmJ1bmRsZUlkKSB7XG4gICAgICAgIHRoaXMub3B0cy5idW5kbGVJZCA9IGF3YWl0IGFwcFV0aWxzLmV4dHJhY3RCdW5kbGVJZCh0aGlzLm9wdHMuYXBwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJ1blJlc2V0KCk7XG5cbiAgICB0aGlzLndkYSA9IG5ldyBXZWJEcml2ZXJBZ2VudCh0aGlzLnhjb2RlVmVyc2lvbiwgdGhpcy5vcHRzKTtcbiAgICAvLyBEZXJpdmVkIGRhdGEgcGF0aCByZXRyaWV2YWwgaXMgYW4gZXhwZW5zaXZlIG9wZXJhdGlvblxuICAgIC8vIFdlIGNvdWxkIHN0YXJ0IHRoYXQgbm93IGluIGJhY2tncm91bmQgYW5kIGdldCB0aGUgY2FjaGVkIHJlc3VsdFxuICAgIC8vIHdoZW5ldmVyIGl0IGlzIG5lZWRlZFxuICAgIHRoaXMud2RhLnJldHJpZXZlRGVyaXZlZERhdGFQYXRoKCkuY2F0Y2goKGUpID0+IGxvZy5kZWJ1ZyhlKSk7XG5cbiAgICBjb25zdCBtZW1vaXplZExvZ0luZm8gPSBfLm1lbW9pemUoZnVuY3Rpb24gbG9nSW5mbyAoKSB7XG4gICAgICBsb2cuaW5mbyhcIidza2lwTG9nQ2FwdHVyZScgaXMgc2V0LiBTa2lwcGluZyBzdGFydGluZyBsb2dzIHN1Y2ggYXMgY3Jhc2gsIHN5c3RlbSwgc2FmYXJpIGNvbnNvbGUgYW5kIHNhZmFyaSBuZXR3b3JrLlwiKTtcbiAgICB9KTtcbiAgICBjb25zdCBzdGFydExvZ0NhcHR1cmUgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5vcHRzLnNraXBMb2dDYXB0dXJlKSB7XG4gICAgICAgIG1lbW9pemVkTG9nSW5mbygpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc3RhcnRMb2dDYXB0dXJlKCk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMubG9nRXZlbnQoJ2xvZ0NhcHR1cmVTdGFydGVkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgY29uc3QgaXNMb2dDYXB0dXJlU3RhcnRlZCA9IGF3YWl0IHN0YXJ0TG9nQ2FwdHVyZSgpO1xuXG4gICAgbG9nLmluZm8oYFNldHRpbmcgdXAgJHt0aGlzLmlzUmVhbERldmljZSgpID8gJ3JlYWwgZGV2aWNlJyA6ICdzaW11bGF0b3InfWApO1xuXG4gICAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgICAgaWYgKHRoaXMub3B0cy5zaHV0ZG93bk90aGVyU2ltdWxhdG9ycykge1xuICAgICAgICB0aGlzLmVuc3VyZUZlYXR1cmVFbmFibGVkKFNIVVRET1dOX09USEVSX0ZFQVRfTkFNRSk7XG4gICAgICAgIGF3YWl0IHNodXRkb3duT3RoZXJTaW11bGF0b3JzKHRoaXMub3B0cy5kZXZpY2UpO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGlzIHNob3VsZCBiZSBkb25lIGJlZm9yZSB0aGUgc2ltdWxhdG9yIGlzIHN0YXJ0ZWRcbiAgICAgIC8vIGlmIGl0IGlzIGFscmVhZHkgcnVubmluZywgdGhpcyBjYXAgd29uJ3Qgd29yaywgd2hpY2ggaXMgZG9jdW1lbnRlZFxuICAgICAgaWYgKHRoaXMuaXNTYWZhcmkoKSAmJiB0aGlzLm9wdHMuc2FmYXJpR2xvYmFsUHJlZmVyZW5jZXMpIHtcbiAgICAgICAgaWYgKGF3YWl0IHRoaXMub3B0cy5kZXZpY2UudXBkYXRlU2FmYXJpR2xvYmFsU2V0dGluZ3ModGhpcy5vcHRzLnNhZmFyaUdsb2JhbFByZWZlcmVuY2VzKSkge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgU2FmYXJpIGdsb2JhbCBwcmVmZXJlbmNlcyB1cGRhdGVkYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2NhbENvbmZpZyA9IGF3YWl0IGlvc1NldHRpbmdzLnNldExvY2FsZUFuZFByZWZlcmVuY2VzKHRoaXMub3B0cy5kZXZpY2UsIHRoaXMub3B0cywgdGhpcy5pc1NhZmFyaSgpLCBhc3luYyAoc2ltKSA9PiB7XG4gICAgICAgIGF3YWl0IHNodXRkb3duU2ltdWxhdG9yKHNpbSk7XG5cbiAgICAgICAgLy8gd2UgZG9uJ3Qga25vdyBpZiB0aGVyZSBuZWVkcyB0byBiZSBjaGFuZ2VzIGEgcHJpb3JpLCBzbyBjaGFuZ2UgZmlyc3QuXG4gICAgICAgIC8vIHNvbWV0aW1lcyB0aGUgc2h1dGRvd24gcHJvY2VzcyBjaGFuZ2VzIHRoZSBzZXR0aW5ncywgc28gcmVzZXQgdGhlbSxcbiAgICAgICAgLy8ga25vd2luZyB0aGF0IHRoZSBzaW0gaXMgYWxyZWFkeSBzaHV0XG4gICAgICAgIGF3YWl0IGlvc1NldHRpbmdzLnNldExvY2FsZUFuZFByZWZlcmVuY2VzKHNpbSwgdGhpcy5vcHRzLCB0aGlzLmlzU2FmYXJpKCkpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLm9wdHMuY3VzdG9tU1NMQ2VydCkge1xuICAgICAgICBjb25zdCBjZXJ0SGVhZCA9IF8udHJ1bmNhdGUodGhpcy5vcHRzLmN1c3RvbVNTTENlcnQsIHtsZW5ndGg6IDIwfSk7XG4gICAgICAgIGxvZy5pbmZvKGBJbnN0YWxsaW5nIHRoZSBjdXN0b20gU1NMIGNlcnRpZmljYXRlICcke2NlcnRIZWFkfSdgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnNpbWN0bC5hZGRSb290Q2VydGlmaWNhdGUodGhpcy5vcHRzLmN1c3RvbVNTTENlcnQsIHtyYXc6IHRydWV9KTtcbiAgICAgICAgfSBjYXRjaCAoaWduKSB7XG4gICAgICAgICAgaWYgKGF3YWl0IGhhc1NTTENlcnQodGhpcy5vcHRzLmN1c3RvbVNTTENlcnQsIHRoaXMub3B0cy51ZGlkKSkge1xuICAgICAgICAgICAgbG9nLmluZm8oYFNTTCBjZXJ0aWZpY2F0ZSAnJHtjZXJ0SGVhZH0nIGFscmVhZHkgaW5zdGFsbGVkYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZy5pbmZvKGBNYWtpbmcgc3VyZSBTaW11bGF0b3IgaXMgc2h1dCBkb3duLCAnICtcbiAgICAgICAgICAgICAgJ3NvIHRoYXQgU1NMIGNlcnRpZmljYXRlIGluc3RhbGxhdGlvbiB0YWtlcyBlZmZlY3RgKTtcbiAgICAgICAgICAgIGF3YWl0IHNodXRkb3duU2ltdWxhdG9yKHRoaXMub3B0cy5kZXZpY2UpO1xuICAgICAgICAgICAgYXdhaXQgaW5zdGFsbFNTTENlcnQodGhpcy5vcHRzLmN1c3RvbVNTTENlcnQsIHRoaXMub3B0cy51ZGlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dFdmVudCgnY3VzdG9tQ2VydEluc3RhbGxlZCcpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0U2ltKCk7XG5cbiAgICAgIGlmICh0aGlzLm9wdHMubGF1bmNoV2l0aElEQiAmJiB0aGlzLmlzU2ltdWxhdG9yKCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBpZGIgPSBuZXcgSURCKHt1ZGlkfSk7XG4gICAgICAgICAgYXdhaXQgaWRiLmNvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLm9wdHMuZGV2aWNlLmlkYiA9IGlkYjtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGxvZy5pbmZvKGBpZGIgd2lsbCBub3QgYmUgdXNlZCBmb3IgU2ltdWxhdG9yIGludGVyYWN0aW9uLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2dFdmVudCgnc2ltU3RhcnRlZCcpO1xuICAgICAgaWYgKCFpc0xvZ0NhcHR1cmVTdGFydGVkKSB7XG4gICAgICAgIC8vIFJldHJ5IGxvZyBjYXB0dXJlIGlmIFNpbXVsYXRvciB3YXMgbm90IHJ1bm5pbmcgYmVmb3JlXG4gICAgICAgIGF3YWl0IHN0YXJ0TG9nQ2FwdHVyZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICBhd2FpdCB0aGlzLmluc3RhbGxBVVQoKTtcbiAgICAgIHRoaXMubG9nRXZlbnQoJ2FwcEluc3RhbGxlZCcpO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIG9ubHkgaGF2ZSBidW5kbGUgaWRlbnRpZmllciBhbmQgbm8gYXBwLCBmYWlsIGlmIGl0IGlzIG5vdCBhbHJlYWR5IGluc3RhbGxlZFxuICAgIGlmICghdGhpcy5vcHRzLmFwcCAmJiB0aGlzLm9wdHMuYnVuZGxlSWQgJiYgIXRoaXMuc2FmYXJpKSB7XG4gICAgICBpZiAoIWF3YWl0IHRoaXMub3B0cy5kZXZpY2UuaXNBcHBJbnN0YWxsZWQodGhpcy5vcHRzLmJ1bmRsZUlkKSkge1xuICAgICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgQXBwIHdpdGggYnVuZGxlIGlkZW50aWZpZXIgJyR7dGhpcy5vcHRzLmJ1bmRsZUlkfScgdW5rbm93bmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMucGVybWlzc2lvbnMpIHtcbiAgICAgIGlmICh0aGlzLmlzU2ltdWxhdG9yKCkpIHtcbiAgICAgICAgbG9nLmRlYnVnKCdTZXR0aW5nIHRoZSByZXF1ZXN0ZWQgcGVybWlzc2lvbnMgYmVmb3JlIFdEQSBpcyBzdGFydGVkJyk7XG4gICAgICAgIGZvciAoY29uc3QgW2J1bmRsZUlkLCBwZXJtaXNzaW9uc01hcHBpbmddIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHRoaXMub3B0cy5wZXJtaXNzaW9ucykpKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5zZXRQZXJtaXNzaW9ucyhidW5kbGVJZCwgcGVybWlzc2lvbnNNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLndhcm4oJ1NldHRpbmcgcGVybWlzc2lvbnMgaXMgb25seSBzdXBwb3J0ZWQgb24gU2ltdWxhdG9yLiAnICtcbiAgICAgICAgICAnVGhlIFwicGVybWlzc2lvbnNcIiBjYXBhYmlsaXR5IHdpbGwgYmUgaWdub3JlZC4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmNhbGVuZGFyQWNjZXNzQXV0aG9yaXplZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLmVuYWJsZUNhbGVuZGFyQWNjZXNzKHRoaXMub3B0cy5idW5kbGVJZCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5jYWxlbmRhckFjY2Vzc0F1dGhvcml6ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZGlzYWJsZUNhbGVuZGFyQWNjZXNzKHRoaXMub3B0cy5idW5kbGVJZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zdGFydFdkYSh0aGlzLm9wdHMuc2Vzc2lvbklkLCByZWFsRGV2aWNlKTtcblxuICAgIGF3YWl0IHRoaXMuc2V0UmVkdWNlTW90aW9uKHRoaXMub3B0cy5yZWR1Y2VNb3Rpb24pO1xuXG4gICAgYXdhaXQgdGhpcy5zZXRJbml0aWFsT3JpZW50YXRpb24odGhpcy5vcHRzLm9yaWVudGF0aW9uKTtcbiAgICB0aGlzLmxvZ0V2ZW50KCdvcmllbnRhdGlvblNldCcpO1xuXG4gICAgLy8gcmVhbCBkZXZpY2VzIHdpbGwgYmUgaGFuZGxlZCBsYXRlciwgYWZ0ZXIgdGhlIHdlYiBjb250ZXh0IGhhcyBiZWVuIGluaXRpYWxpemVkXG4gICAgaWYgKHRoaXMuaXNTYWZhcmkoKSAmJiAhdGhpcy5pc1JlYWxEZXZpY2UoKVxuICAgICAgJiYgdXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgJz49JywgJzEyLjInKSkge1xuICAgICAgLy8gb24gMTIuMiB0aGUgcGFnZSBpcyBub3Qgb3BlbmVkIGluIFdEQVxuICAgICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5vcGVuVXJsKHRoaXMuX2N1cnJlbnRVcmwpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2FmYXJpKCkgfHwgdGhpcy5vcHRzLmF1dG9XZWJ2aWV3KSB7XG4gICAgICBsb2cuZGVidWcoJ1dhaXRpbmcgZm9yIGluaXRpYWwgd2VidmlldycpO1xuICAgICAgYXdhaXQgdGhpcy5uYXZUb0luaXRpYWxXZWJ2aWV3KCk7XG4gICAgICB0aGlzLmxvZ0V2ZW50KCdpbml0aWFsV2Vidmlld05hdmlnYXRlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2FmYXJpKCkgJiYgdGhpcy5pc1JlYWxEZXZpY2UoKSAmJiB1dGlsLmNvbXBhcmVWZXJzaW9ucyh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLCAnPj0nLCAnMTIuMicpKSB7XG4gICAgICAvLyBvbiAxMi4yIHRoZSBwYWdlIGlzIG5vdCBvcGVuZWQgaW4gV0RBXG4gICAgICBhd2FpdCB0aGlzLnNldFVybCh0aGlzLl9jdXJyZW50VXJsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgV2ViRHJpdmVyQWdlbnRSdW5uZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlc3Npb25JZCAtIFRoZSBpZCBvZiB0aGUgdGFyZ2V0IHNlc3Npb24gdG8gbGF1bmNoIFdEQSB3aXRoLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlYWxEZXZpY2UgLSBFcXVhbHMgdG8gdHJ1ZSBpZiB0aGUgdGVzdCB0YXJnZXQgZGV2aWNlIGlzIGEgcmVhbCBkZXZpY2UuXG4gICAqL1xuICBhc3luYyBzdGFydFdkYSAoc2Vzc2lvbklkLCByZWFsRGV2aWNlKSB7XG4gICAgLy8gRG9uJ3QgY2xlYW51cCB0aGUgcHJvY2Vzc2VzIGlmIHdlYkRyaXZlckFnZW50VXJsIGlzIHNldFxuICAgIGlmICghdXRpbC5oYXNWYWx1ZSh0aGlzLndkYS53ZWJEcml2ZXJBZ2VudFVybCkpIHtcbiAgICAgIGF3YWl0IHRoaXMud2RhLmNsZWFudXBPYnNvbGV0ZVByb2Nlc3NlcygpO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZVBvcnRGb3J3YXJkaW5nID0gdGhpcy5pc1JlYWxEZXZpY2UoKVxuICAgICAgJiYgIXRoaXMud2RhLndlYkRyaXZlckFnZW50VXJsXG4gICAgICAmJiBpc0xvY2FsSG9zdCh0aGlzLndkYS53ZGFCYXNlVXJsKTtcbiAgICBhd2FpdCBERVZJQ0VfQ09OTkVDVElPTlNfRkFDVE9SWS5yZXF1ZXN0Q29ubmVjdGlvbih0aGlzLm9wdHMudWRpZCwgdGhpcy53ZGEudXJsLnBvcnQsIHtcbiAgICAgIGRldmljZVBvcnQ6IHVzZVBvcnRGb3J3YXJkaW5nID8gdGhpcy53ZGEud2RhUmVtb3RlUG9ydCA6IG51bGwsXG4gICAgICB1c2VQb3J0Rm9yd2FyZGluZyxcbiAgICB9KTtcblxuICAgIC8vIExldCBtdWx0aXBsZSBXREEgYmluYXJpZXMgd2l0aCBkaWZmZXJlbnQgZGVyaXZlZCBkYXRhIGZvbGRlcnMgYmUgYnVpbHQgaW4gcGFyYWxsZWxcbiAgICAvLyBDb25jdXJyZW50IFdEQSBidWlsZHMgZnJvbSB0aGUgc2FtZSBzb3VyY2Ugd2lsbCBjYXVzZSB4Y29kZWJ1aWxkIHN5bmNocm9uaXphdGlvbiBlcnJvcnNcbiAgICBsZXQgc3luY2hyb25pemF0aW9uS2V5ID0gWENVSVRlc3REcml2ZXIubmFtZTtcbiAgICBpZiAodGhpcy5vcHRzLnVzZVhjdGVzdHJ1bkZpbGUgfHwgIShhd2FpdCB0aGlzLndkYS5pc1NvdXJjZUZyZXNoKCkpKSB7XG4gICAgICAvLyBGaXJzdC10aW1lIGNvbXBpbGF0aW9uIGlzIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24sIHdoaWNoIGlzIGRvbmUgZmFzdGVyIGlmIGV4ZWN1dGVkXG4gICAgICAvLyBzZXF1ZW50aWFsbHkuIFhjb2RlYnVpbGQgc3ByZWFkcyB0aGUgbG9hZCBjYXVzZWQgYnkgdGhlIGNsYW5nIGNvbXBpbGVyIHRvIGFsbCBhdmFpbGFibGUgQ1BVIGNvcmVzXG4gICAgICBjb25zdCBkZXJpdmVkRGF0YVBhdGggPSBhd2FpdCB0aGlzLndkYS5yZXRyaWV2ZURlcml2ZWREYXRhUGF0aCgpO1xuICAgICAgaWYgKGRlcml2ZWREYXRhUGF0aCkge1xuICAgICAgICBzeW5jaHJvbml6YXRpb25LZXkgPSBwYXRoLm5vcm1hbGl6ZShkZXJpdmVkRGF0YVBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBsb2cuZGVidWcoYFN0YXJ0aW5nIFdlYkRyaXZlckFnZW50IGluaXRpYWxpemF0aW9uIHdpdGggdGhlIHN5bmNocm9uaXphdGlvbiBrZXkgJyR7c3luY2hyb25pemF0aW9uS2V5fSdgKTtcbiAgICBpZiAoU0hBUkVEX1JFU09VUkNFU19HVUFSRC5pc0J1c3koKSAmJiAhdGhpcy5vcHRzLmRlcml2ZWREYXRhUGF0aCAmJiAhdGhpcy5vcHRzLmJvb3RzdHJhcFBhdGgpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgQ29uc2lkZXIgc2V0dGluZyBhIHVuaXF1ZSAnZGVyaXZlZERhdGFQYXRoJyBjYXBhYmlsaXR5IHZhbHVlIGZvciBlYWNoIHBhcmFsbGVsIGRyaXZlciBpbnN0YW5jZSBgICtcbiAgICAgICAgYHRvIGF2b2lkIGNvbmZsaWN0cyBhbmQgc3BlZWQgdXAgdGhlIGJ1aWxkaW5nIHByb2Nlc3NgKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IFNIQVJFRF9SRVNPVVJDRVNfR1VBUkQuYWNxdWlyZShzeW5jaHJvbml6YXRpb25LZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGlmICh0aGlzLm9wdHMudXNlTmV3V0RBKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgQ2FwYWJpbGl0eSAndXNlTmV3V0RBJyBzZXQgdG8gdHJ1ZSwgc28gdW5pbnN0YWxsaW5nIFdEQSBiZWZvcmUgcHJvY2VlZGluZ2ApO1xuICAgICAgICBhd2FpdCB0aGlzLndkYS5xdWl0QW5kVW5pbnN0YWxsKCk7XG4gICAgICAgIHRoaXMubG9nRXZlbnQoJ3dkYVVuaW5zdGFsbGVkJyk7XG4gICAgICB9IGVsc2UgaWYgKCF1dGlsLmhhc1ZhbHVlKHRoaXMud2RhLndlYkRyaXZlckFnZW50VXJsKSkge1xuICAgICAgICBhd2FpdCB0aGlzLndkYS5zZXR1cENhY2hpbmcoKTtcbiAgICAgIH1cblxuICAgICAgLy8gbG9jYWwgaGVscGVyIGZvciB0aGUgdHdvIHBsYWNlcyB3ZSBuZWVkIHRvIHVuaW5zdGFsbCB3ZGEgYW5kIHJlLXN0YXJ0IGl0XG4gICAgICBjb25zdCBxdWl0QW5kVW5pbnN0YWxsID0gYXN5bmMgKG1zZykgPT4ge1xuICAgICAgICBsb2cuZGVidWcobXNnKTtcbiAgICAgICAgaWYgKHRoaXMub3B0cy53ZWJEcml2ZXJBZ2VudFVybCkge1xuICAgICAgICAgIGxvZy5kZWJ1ZygnTm90IHF1aXR0aW5nL3VuaW5zdGFsbGluZyBXZWJEcml2ZXJBZ2VudCBzaW5jZSB3ZWJEcml2ZXJBZ2VudFVybCBjYXBhYmlsaXR5IGlzIHByb3ZpZGVkJyk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nLndhcm4oJ1F1aXR0aW5nIGFuZCB1bmluc3RhbGxpbmcgV2ViRHJpdmVyQWdlbnQnKTtcbiAgICAgICAgYXdhaXQgdGhpcy53ZGEucXVpdEFuZFVuaW5zdGFsbCgpO1xuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfTtcblxuICAgICAgLy8gVXNlZCBpbiB0aGUgZm9sbG93aW5nIFdEQSBidWlsZFxuICAgICAgaWYgKHRoaXMub3B0cy5yZXN1bHRCdW5kbGVQYXRoKSB7XG4gICAgICAgIHRoaXMuZW5zdXJlRmVhdHVyZUVuYWJsZWQoQ1VTVE9NSVpFX1JFU1VMVF9CVU5EUEVfUEFUSCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXJ0dXBSZXRyaWVzID0gdGhpcy5vcHRzLndkYVN0YXJ0dXBSZXRyaWVzIHx8ICh0aGlzLmlzUmVhbERldmljZSgpID8gV0RBX1JFQUxfREVWX1NUQVJUVVBfUkVUUklFUyA6IFdEQV9TSU1fU1RBUlRVUF9SRVRSSUVTKTtcbiAgICAgIGNvbnN0IHN0YXJ0dXBSZXRyeUludGVydmFsID0gdGhpcy5vcHRzLndkYVN0YXJ0dXBSZXRyeUludGVydmFsIHx8IFdEQV9TVEFSVFVQX1JFVFJZX0lOVEVSVkFMO1xuICAgICAgbG9nLmRlYnVnKGBUcnlpbmcgdG8gc3RhcnQgV2ViRHJpdmVyQWdlbnQgJHtzdGFydHVwUmV0cmllc30gdGltZXMgd2l0aCAke3N0YXJ0dXBSZXRyeUludGVydmFsfW1zIGludGVydmFsYCk7XG4gICAgICBpZiAoIXV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLndkYVN0YXJ0dXBSZXRyaWVzKSAmJiAhdXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMud2RhU3RhcnR1cFJldHJ5SW50ZXJ2YWwpKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgVGhlc2UgdmFsdWVzIGNhbiBiZSBjdXN0b21pemVkIGJ5IGNoYW5naW5nIHdkYVN0YXJ0dXBSZXRyaWVzL3dkYVN0YXJ0dXBSZXRyeUludGVydmFsIGNhcGFiaWxpdGllc2ApO1xuICAgICAgfVxuICAgICAgbGV0IHJldHJ5Q291bnQgPSAwO1xuICAgICAgYXdhaXQgcmV0cnlJbnRlcnZhbChzdGFydHVwUmV0cmllcywgc3RhcnR1cFJldHJ5SW50ZXJ2YWwsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2dFdmVudCgnd2RhU3RhcnRBdHRlbXB0ZWQnKTtcbiAgICAgICAgaWYgKHJldHJ5Q291bnQgPiAwKSB7XG4gICAgICAgICAgbG9nLmluZm8oYFJldHJ5aW5nIFdEQSBzdGFydHVwICgke3JldHJ5Q291bnQgKyAxfSBvZiAke3N0YXJ0dXBSZXRyaWVzfSlgKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIG9uIHhjb2RlIDEwIGluc3RhbGxkIHdpbGwgb2Z0ZW4gdHJ5IHRvIGFjY2VzcyB0aGUgYXBwIGZyb20gaXRzIHN0YWdpbmdcbiAgICAgICAgICAvLyBkaXJlY3RvcnkgYmVmb3JlIGZ1bGx5IG1vdmluZyBpdCB0aGVyZSwgYW5kIGZhaWwuIFJldHJ5aW5nIG9uY2VcbiAgICAgICAgICAvLyBpbW1lZGlhdGVseSBoZWxwc1xuICAgICAgICAgIGNvbnN0IHJldHJpZXMgPSB0aGlzLnhjb2RlVmVyc2lvbi5tYWpvciA+PSAxMCA/IDIgOiAxO1xuICAgICAgICAgIHRoaXMuY2FjaGVkV2RhU3RhdHVzID0gYXdhaXQgcmV0cnkocmV0cmllcywgdGhpcy53ZGEubGF1bmNoLmJpbmQodGhpcy53ZGEpLCBzZXNzaW9uSWQsIHJlYWxEZXZpY2UpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmxvZ0V2ZW50KCd3ZGFTdGFydEZhaWxlZCcpO1xuICAgICAgICAgIHJldHJ5Q291bnQrKztcbiAgICAgICAgICBsZXQgZXJyb3JNc2cgPSBgVW5hYmxlIHRvIGxhdW5jaCBXZWJEcml2ZXJBZ2VudCBiZWNhdXNlIG9mIHhjb2RlYnVpbGQgZmFpbHVyZTogJHtlcnIubWVzc2FnZX1gO1xuICAgICAgICAgIGlmICh0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgICAgICAgICBlcnJvck1zZyArPSBgLiBNYWtlIHN1cmUgeW91IGZvbGxvdyB0aGUgdHV0b3JpYWwgYXQgJHtXREFfUkVBTF9ERVZfVFVUT1JJQUxfVVJMfS4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgVHJ5IHRvIHJlbW92ZSB0aGUgV2ViRHJpdmVyQWdlbnRSdW5uZXIgYXBwbGljYXRpb24gZnJvbSB0aGUgZGV2aWNlIGlmIGl0IGlzIGluc3RhbGxlZCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBhbmQgcmVib290IHRoZSBkZXZpY2UuYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgcXVpdEFuZFVuaW5zdGFsbChlcnJvck1zZyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy53ZGEucHJveHlSZXFSZXMuYmluZCh0aGlzLndkYSk7XG4gICAgICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgIGxldCBvcmlnaW5hbFN0YWNrdHJhY2UgPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwoMTUsIDEwMDAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nRXZlbnQoJ3dkYVNlc3Npb25BdHRlbXB0ZWQnKTtcbiAgICAgICAgICAgIGxvZy5kZWJ1ZygnU2VuZGluZyBjcmVhdGVTZXNzaW9uIGNvbW1hbmQgdG8gV0RBJyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB0aGlzLmNhY2hlZFdkYVN0YXR1cyA9IHRoaXMuY2FjaGVkV2RhU3RhdHVzIHx8IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvc3RhdHVzJywgJ0dFVCcpO1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0V2RhU2Vzc2lvbih0aGlzLm9wdHMuYnVuZGxlSWQsIHRoaXMub3B0cy5wcm9jZXNzQXJndW1lbnRzKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBvcmlnaW5hbFN0YWNrdHJhY2UgPSBlcnIuc3RhY2s7XG4gICAgICAgICAgICAgIGxvZy5kZWJ1ZyhgRmFpbGVkIHRvIGNyZWF0ZSBXREEgc2Vzc2lvbiAoJHtlcnIubWVzc2FnZX0pLiBSZXRyeWluZy4uLmApO1xuICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5sb2dFdmVudCgnd2RhU2Vzc2lvblN0YXJ0ZWQnKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKG9yaWdpbmFsU3RhY2t0cmFjZSkge1xuICAgICAgICAgICAgbG9nLmRlYnVnKG9yaWdpbmFsU3RhY2t0cmFjZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBlcnJvck1zZyA9IGBVbmFibGUgdG8gc3RhcnQgV2ViRHJpdmVyQWdlbnQgc2Vzc2lvbiBiZWNhdXNlIG9mIHhjb2RlYnVpbGQgZmFpbHVyZTogJHtlcnIubWVzc2FnZX1gO1xuICAgICAgICAgIGlmICh0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgICAgICAgICBlcnJvck1zZyArPSBgIE1ha2Ugc3VyZSB5b3UgZm9sbG93IHRoZSB0dXRvcmlhbCBhdCAke1dEQV9SRUFMX0RFVl9UVVRPUklBTF9VUkx9LiBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBUcnkgdG8gcmVtb3ZlIHRoZSBXZWJEcml2ZXJBZ2VudFJ1bm5lciBhcHBsaWNhdGlvbiBmcm9tIHRoZSBkZXZpY2UgaWYgaXQgaXMgaW5zdGFsbGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYGFuZCByZWJvb3QgdGhlIGRldmljZS5gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBxdWl0QW5kVW5pbnN0YWxsKGVycm9yTXNnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdHMuY2xlYXJTeXN0ZW1GaWxlcyAmJiAhdGhpcy5vcHRzLndlYkRyaXZlckFnZW50VXJsKSB7XG4gICAgICAgICAgYXdhaXQgbWFya1N5c3RlbUZpbGVzRm9yQ2xlYW51cCh0aGlzLndkYSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3ZSBleHBlY3QgY2VydGFpbiBzb2NrZXQgZXJyb3JzIHVudGlsIHRoaXMgcG9pbnQsIGJ1dCBub3dcbiAgICAgICAgLy8gbWFyayB0aGluZ3MgYXMgZnVsbHkgd29ya2luZ1xuICAgICAgICB0aGlzLndkYS5mdWxseVN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvZ0V2ZW50KCd3ZGFTdGFydGVkJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJ1blJlc2V0IChvcHRzID0gbnVsbCkge1xuICAgIHRoaXMubG9nRXZlbnQoJ3Jlc2V0U3RhcnRlZCcpO1xuICAgIGlmICh0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgICBhd2FpdCBydW5SZWFsRGV2aWNlUmVzZXQodGhpcy5vcHRzLmRldmljZSwgb3B0cyB8fCB0aGlzLm9wdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBydW5TaW11bGF0b3JSZXNldCh0aGlzLm9wdHMuZGV2aWNlLCBvcHRzIHx8IHRoaXMub3B0cyk7XG4gICAgfVxuICAgIHRoaXMubG9nRXZlbnQoJ3Jlc2V0Q29tcGxldGUnKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIGF3YWl0IHJlbW92ZUFsbFNlc3Npb25XZWJTb2NrZXRIYW5kbGVycyh0aGlzLnNlcnZlciwgdGhpcy5zZXNzaW9uSWQpO1xuXG4gICAgZm9yIChjb25zdCByZWNvcmRlciBvZiBfLmNvbXBhY3QoW3RoaXMuX3JlY2VudFNjcmVlblJlY29yZGVyLCB0aGlzLl9hdWRpb1JlY29yZGVyXSkpIHtcbiAgICAgIGF3YWl0IHJlY29yZGVyLmludGVycnVwdCh0cnVlKTtcbiAgICAgIGF3YWl0IHJlY29yZGVyLmNsZWFudXAoKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9wZXJmUmVjb3JkZXJzKSkge1xuICAgICAgYXdhaXQgQi5hbGwodGhpcy5fcGVyZlJlY29yZGVycy5tYXAoKHgpID0+IHguc3RvcCh0cnVlKSkpO1xuICAgICAgdGhpcy5fcGVyZlJlY29yZGVycyA9IFtdO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc3RvcCgpO1xuXG4gICAgaWYgKHRoaXMud2RhICYmICF0aGlzLm9wdHMud2ViRHJpdmVyQWdlbnRVcmwpIHtcbiAgICAgIGlmICh0aGlzLm9wdHMuY2xlYXJTeXN0ZW1GaWxlcykge1xuICAgICAgICBsZXQgc3luY2hyb25pemF0aW9uS2V5ID0gWENVSVRlc3REcml2ZXIubmFtZTtcbiAgICAgICAgY29uc3QgZGVyaXZlZERhdGFQYXRoID0gYXdhaXQgdGhpcy53ZGEucmV0cmlldmVEZXJpdmVkRGF0YVBhdGgoKTtcbiAgICAgICAgaWYgKGRlcml2ZWREYXRhUGF0aCkge1xuICAgICAgICAgIHN5bmNocm9uaXphdGlvbktleSA9IHBhdGgubm9ybWFsaXplKGRlcml2ZWREYXRhUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgU0hBUkVEX1JFU09VUkNFU19HVUFSRC5hY3F1aXJlKHN5bmNocm9uaXphdGlvbktleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGNsZWFyU3lzdGVtRmlsZXModGhpcy53ZGEpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5kZWJ1ZygnTm90IGNsZWFyaW5nIGxvZyBmaWxlcy4gVXNlIGBjbGVhclN5c3RlbUZpbGVzYCBjYXBhYmlsaXR5IHRvIHR1cm4gb24uJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVtb3RlKSB7XG4gICAgICBsb2cuZGVidWcoJ0ZvdW5kIGEgcmVtb3RlIGRlYnVnZ2VyIHNlc3Npb24uIFJlbW92aW5nLi4uJyk7XG4gICAgICBhd2FpdCB0aGlzLnN0b3BSZW1vdGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLnJlc2V0T25TZXNzaW9uU3RhcnRPbmx5ID09PSBmYWxzZSkge1xuICAgICAgYXdhaXQgdGhpcy5ydW5SZXNldChPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtcbiAgICAgICAgZW5mb3JjZVNpbXVsYXRvclNodXRkb3duOiB0cnVlLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2ltdWxhdG9yKCkgJiYgIXRoaXMub3B0cy5ub1Jlc2V0ICYmICEhdGhpcy5vcHRzLmRldmljZSkge1xuICAgICAgaWYgKHRoaXMubGlmZWN5Y2xlRGF0YS5jcmVhdGVTaW0pIHtcbiAgICAgICAgbG9nLmRlYnVnKGBEZWxldGluZyBzaW11bGF0b3IgY3JlYXRlZCBmb3IgdGhpcyBydW4gKHVkaWQ6ICcke3RoaXMub3B0cy51ZGlkfScpYCk7XG4gICAgICAgIGF3YWl0IHNodXRkb3duU2ltdWxhdG9yKHRoaXMub3B0cy5kZXZpY2UpO1xuICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLmRlbGV0ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghXy5pc0VtcHR5KHRoaXMubG9ncykpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9ncy5zeXNsb2cuc3RvcENhcHR1cmUoKTtcbiAgICAgIHRoaXMubG9ncyA9IHt9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1qcGVnU3RyZWFtKSB7XG4gICAgICBsb2cuaW5mbygnQ2xvc2luZyBNSlBFRyBzdHJlYW0nKTtcbiAgICAgIHRoaXMubWpwZWdTdHJlYW0uc3RvcCgpO1xuICAgIH1cblxuICAgIHRoaXMucmVzZXRJb3MoKTtcblxuICAgIGF3YWl0IHN1cGVyLmRlbGV0ZVNlc3Npb24oKTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AgKCkge1xuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLnByb3h5UmVxUmVzID0gbnVsbDtcblxuXG4gICAgaWYgKHRoaXMud2RhICYmIHRoaXMud2RhLmZ1bGx5U3RhcnRlZCkge1xuICAgICAgaWYgKHRoaXMud2RhLmp3cHJveHkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3Nlc3Npb24vJHt0aGlzLnNlc3Npb25JZH1gLCAnREVMRVRFJyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIC8vIGFuIGVycm9yIGhlcmUgc2hvdWxkIG5vdCBzaG9ydC1jaXJjdWl0IHRoZSByZXN0IG9mIGNsZWFuIHVwXG4gICAgICAgICAgbG9nLmRlYnVnKGBVbmFibGUgdG8gREVMRVRFIHNlc3Npb24gb24gV0RBOiAnJHtlcnIubWVzc2FnZX0nLiBDb250aW51aW5nIHNodXRkb3duLmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMud2RhLndlYkRyaXZlckFnZW50VXJsICYmIHRoaXMub3B0cy51c2VOZXdXREEpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53ZGEucXVpdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIERFVklDRV9DT05ORUNUSU9OU19GQUNUT1JZLnJlbGVhc2VDb25uZWN0aW9uKHRoaXMub3B0cy51ZGlkKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGVDb21tYW5kIChjbWQsIC4uLmFyZ3MpIHtcbiAgICBsb2cuZGVidWcoYEV4ZWN1dGluZyBjb21tYW5kICcke2NtZH0nYCk7XG5cbiAgICBpZiAoY21kID09PSAncmVjZWl2ZUFzeW5jUmVzcG9uc2UnKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWNlaXZlQXN5bmNSZXNwb25zZSguLi5hcmdzKTtcbiAgICB9XG4gICAgLy8gVE9ETzogb25jZSB0aGlzIGZpeCBnZXRzIGludG8gYmFzZSBkcml2ZXIgcmVtb3ZlIGZyb20gaGVyZVxuICAgIGlmIChjbWQgPT09ICdnZXRTdGF0dXMnKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRTdGF0dXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmV4ZWN1dGVDb21tYW5kKGNtZCwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBjb25maWd1cmVBcHAgKCkge1xuICAgIGZ1bmN0aW9uIGFwcElzUGFja2FnZU9yQnVuZGxlIChhcHApIHtcbiAgICAgIHJldHVybiAoL14oW2EtekEtWjAtOVxcLV9dK1xcLlthLXpBLVowLTlcXC1fXSspKyQvKS50ZXN0KGFwcCk7XG4gICAgfVxuXG4gICAgLy8gdGhlIGFwcCBuYW1lIGlzIGEgYnVuZGxlSWQgYXNzaWduIGl0IHRvIHRoZSBidW5kbGVJZCBwcm9wZXJ0eVxuICAgIGlmICghdGhpcy5vcHRzLmJ1bmRsZUlkICYmIGFwcElzUGFja2FnZU9yQnVuZGxlKHRoaXMub3B0cy5hcHApKSB7XG4gICAgICB0aGlzLm9wdHMuYnVuZGxlSWQgPSB0aGlzLm9wdHMuYXBwO1xuICAgICAgdGhpcy5vcHRzLmFwcCA9ICcnO1xuICAgIH1cbiAgICAvLyB3ZSBoYXZlIGEgYnVuZGxlIElELCBidXQgbm8gYXBwLCBvciBhcHAgaXMgYWxzbyBhIGJ1bmRsZVxuICAgIGlmICgodGhpcy5vcHRzLmJ1bmRsZUlkICYmIGFwcElzUGFja2FnZU9yQnVuZGxlKHRoaXMub3B0cy5idW5kbGVJZCkpICYmXG4gICAgICAgICh0aGlzLm9wdHMuYXBwID09PSAnJyB8fCBhcHBJc1BhY2thZ2VPckJ1bmRsZSh0aGlzLm9wdHMuYXBwKSkpIHtcbiAgICAgIGxvZy5kZWJ1ZygnQXBwIGlzIGFuIGlPUyBidW5kbGUsIHdpbGwgYXR0ZW1wdCB0byBydW4gYXMgcHJlLWV4aXN0aW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgZm9yIHN1cHBvcnRlZCBidWlsZC1pbiBhcHBzXG4gICAgc3dpdGNoIChfLnRvTG93ZXIodGhpcy5vcHRzLmFwcCkpIHtcbiAgICAgIGNhc2UgJ3NldHRpbmdzJzpcbiAgICAgICAgdGhpcy5vcHRzLmJ1bmRsZUlkID0gJ2NvbS5hcHBsZS5QcmVmZXJlbmNlcyc7XG4gICAgICAgIHRoaXMub3B0cy5hcHAgPSBudWxsO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdjYWxlbmRhcic6XG4gICAgICAgIHRoaXMub3B0cy5idW5kbGVJZCA9ICdjb20uYXBwbGUubW9iaWxlY2FsJztcbiAgICAgICAgdGhpcy5vcHRzLmFwcCA9IG51bGw7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gZG93bmxvYWQgaWYgbmVjZXNzYXJ5XG4gICAgICB0aGlzLm9wdHMuYXBwID0gYXdhaXQgdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcCh0aGlzLm9wdHMuYXBwLCAnLmFwcCcpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKGVycik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCBhcHA6ICR7dGhpcy5vcHRzLmFwcH0uIGAgK1xuICAgICAgICBgQXBwIHBhdGhzIG5lZWQgdG8gYmUgYWJzb2x1dGUgb3IgYW4gVVJMIHRvIGEgY29tcHJlc3NlZCBhcHAgZmlsZTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZXRlcm1pbmVEZXZpY2UgKCkge1xuICAgIC8vIGluIHRoZSBvbmUgY2FzZSB3aGVyZSB3ZSBjcmVhdGUgYSBzaW0sIHdlIHdpbGwgc2V0IHRoaXMgc3RhdGVcbiAgICB0aGlzLmxpZmVjeWNsZURhdGEuY3JlYXRlU2ltID0gZmFsc2U7XG5cbiAgICAvLyBpZiB3ZSBnZXQgZ2VuZXJpYyBuYW1lcywgdHJhbnNsYXRlIHRoZW1cbiAgICB0aGlzLm9wdHMuZGV2aWNlTmFtZSA9IHRyYW5zbGF0ZURldmljZU5hbWUodGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgdGhpcy5vcHRzLmRldmljZU5hbWUpO1xuXG4gICAgY29uc3Qgc2V0dXBWZXJzaW9uQ2FwcyA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMub3B0cy5pb3NTZGtWZXJzaW9uID0gYXdhaXQgZ2V0QW5kQ2hlY2tJb3NTZGtWZXJzaW9uKCk7XG4gICAgICBsb2cuaW5mbyhgaU9TIFNESyBWZXJzaW9uIHNldCB0byAnJHt0aGlzLm9wdHMuaW9zU2RrVmVyc2lvbn0nYCk7XG4gICAgICBpZiAoIXRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24gJiYgdGhpcy5vcHRzLmlvc1Nka1ZlcnNpb24pIHtcbiAgICAgICAgbG9nLmluZm8oYE5vIHBsYXRmb3JtVmVyc2lvbiBzcGVjaWZpZWQuIFVzaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiBYY29kZSBzdXBwb3J0czogJyR7dGhpcy5vcHRzLmlvc1Nka1ZlcnNpb259Jy4gYCArXG4gICAgICAgICAgYFRoaXMgbWF5IGNhdXNlIHByb2JsZW1zIGlmIGEgc2ltdWxhdG9yIGRvZXMgbm90IGV4aXN0IGZvciB0aGlzIHBsYXRmb3JtIHZlcnNpb24uYCk7XG4gICAgICAgIHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24gPSBub3JtYWxpemVQbGF0Zm9ybVZlcnNpb24odGhpcy5vcHRzLmlvc1Nka1ZlcnNpb24pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcHRzLnVkaWQpIHtcbiAgICAgIGlmICh0aGlzLm9wdHMudWRpZC50b0xvd2VyQ2FzZSgpID09PSAnYXV0bycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLm9wdHMudWRpZCA9IGF3YWl0IGRldGVjdFVkaWQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgLy8gVHJ5aW5nIHRvIGZpbmQgbWF0Y2hpbmcgVURJRCBmb3IgU2ltdWxhdG9yXG4gICAgICAgICAgbG9nLndhcm4oYENhbm5vdCBkZXRlY3QgYW55IGNvbm5lY3RlZCByZWFsIGRldmljZXMuIEZhbGxpbmcgYmFjayB0byBTaW11bGF0b3IuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGdldEV4aXN0aW5nU2ltKHRoaXMub3B0cyk7XG4gICAgICAgICAgaWYgKCFkZXZpY2UpIHtcbiAgICAgICAgICAgIC8vIE5vIG1hdGNoaW5nIFNpbXVsYXRvciBpcyBmb3VuZC4gVGhyb3cgYW4gZXJyb3JcbiAgICAgICAgICAgIGxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgZGV0ZWN0IHVkaWQgZm9yICR7dGhpcy5vcHRzLmRldmljZU5hbWV9IFNpbXVsYXRvciBydW5uaW5nIGlPUyAke3RoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb259YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gTWF0Y2hpbmcgU2ltdWxhdG9yIGV4aXN0cyBhbmQgaXMgZm91bmQuIFVzZSBpdFxuICAgICAgICAgIHRoaXMub3B0cy51ZGlkID0gZGV2aWNlLnVkaWQ7XG4gICAgICAgICAgY29uc3QgZGV2aWNlUGxhdGZvcm0gPSBub3JtYWxpemVQbGF0Zm9ybVZlcnNpb24oYXdhaXQgZGV2aWNlLmdldFBsYXRmb3JtVmVyc2lvbigpKTtcbiAgICAgICAgICBpZiAodGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiAhPT0gZGV2aWNlUGxhdGZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24gPSBkZXZpY2VQbGF0Zm9ybTtcbiAgICAgICAgICAgIGxvZy5pbmZvKGBTZXQgcGxhdGZvcm1WZXJzaW9uIHRvICcke2RldmljZVBsYXRmb3JtfScgdG8gbWF0Y2ggdGhlIGRldmljZSB3aXRoIGdpdmVuIFVESURgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgc2V0dXBWZXJzaW9uQ2FwcygpO1xuICAgICAgICAgIHJldHVybiB7ZGV2aWNlLCByZWFsRGV2aWNlOiBmYWxzZSwgdWRpZDogZGV2aWNlLnVkaWR9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBtYWtlIHN1cmUgaXQgaXMgYSBjb25uZWN0ZWQgZGV2aWNlLiBJZiBub3QsIHRoZSB1ZGlkIHBhc3NlZCBpbiBpcyBpbnZhbGlkXG4gICAgICAgIGNvbnN0IGRldmljZXMgPSBhd2FpdCBnZXRDb25uZWN0ZWREZXZpY2VzKCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgQXZhaWxhYmxlIGRldmljZXM6ICR7ZGV2aWNlcy5qb2luKCcsICcpfWApO1xuICAgICAgICBpZiAoIWRldmljZXMuaW5jbHVkZXModGhpcy5vcHRzLnVkaWQpKSB7XG4gICAgICAgICAgLy8gY2hlY2sgZm9yIGEgcGFydGljdWxhciBzaW11bGF0b3JcbiAgICAgICAgICBsb2cuZGVidWcoYE5vIHJlYWwgZGV2aWNlIHdpdGggdWRpZCAnJHt0aGlzLm9wdHMudWRpZH0nLiBMb29raW5nIGZvciBzaW11bGF0b3JgKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGV2aWNlID0gYXdhaXQgZ2V0U2ltdWxhdG9yKHRoaXMub3B0cy51ZGlkLCB7XG4gICAgICAgICAgICAgIGRldmljZXNTZXRQYXRoOiB0aGlzLm9wdHMuc2ltdWxhdG9yRGV2aWNlc1NldFBhdGgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB7ZGV2aWNlLCByZWFsRGV2aWNlOiBmYWxzZSwgdWRpZDogdGhpcy5vcHRzLnVkaWR9O1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRldmljZSBvciBzaW11bGF0b3IgVURJRDogJyR7dGhpcy5vcHRzLnVkaWR9J2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCBnZXRSZWFsRGV2aWNlT2JqKHRoaXMub3B0cy51ZGlkKTtcbiAgICAgIHJldHVybiB7ZGV2aWNlLCByZWFsRGV2aWNlOiB0cnVlLCB1ZGlkOiB0aGlzLm9wdHMudWRpZH07XG4gICAgfVxuXG4gICAgLy8gTm93IHdlIGtub3cgZm9yIHN1cmUgdGhlIGRldmljZSB3aWxsIGJlIGEgU2ltdWxhdG9yXG4gICAgYXdhaXQgc2V0dXBWZXJzaW9uQ2FwcygpO1xuICAgIGlmICh0aGlzLm9wdHMuZW5mb3JjZUZyZXNoU2ltdWxhdG9yQ3JlYXRpb24pIHtcbiAgICAgIGxvZy5kZWJ1ZyhgTmV3IHNpbXVsYXRvciBpcyByZXF1ZXN0ZWQuIElmIHRoaXMgaXMgbm90IHdhbnRlZCwgc2V0ICdlbmZvcmNlRnJlc2hTaW11bGF0b3JDcmVhdGlvbicgY2FwYWJpbGl0eSB0byBmYWxzZWApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IHNpbXVsYXRvciB0byB1c2UsIGdpdmVuIHRoZSBkZXNpcmVkIGNhcGFiaWxpdGllc1xuICAgICAgY29uc3QgZGV2aWNlID0gYXdhaXQgZ2V0RXhpc3RpbmdTaW0odGhpcy5vcHRzKTtcblxuICAgICAgLy8gY2hlY2sgZm9yIGFuIGV4aXN0aW5nIHNpbXVsYXRvclxuICAgICAgaWYgKGRldmljZSkge1xuICAgICAgICByZXR1cm4ge2RldmljZSwgcmVhbERldmljZTogZmFsc2UsIHVkaWQ6IGRldmljZS51ZGlkfTtcbiAgICAgIH1cblxuICAgICAgbG9nLmluZm8oJ1NpbXVsYXRvciB1ZGlkIG5vdCBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIC8vIG5vIGRldmljZSBvZiB0aGlzIHR5cGUgZXhpc3RzLCBvciB0aGV5IHJlcXVlc3QgbmV3IHNpbSwgc28gY3JlYXRlIG9uZVxuICAgIGxvZy5pbmZvKCdVc2luZyBkZXNpcmVkIGNhcHMgdG8gY3JlYXRlIGEgbmV3IHNpbXVsYXRvcicpO1xuICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IHRoaXMuY3JlYXRlU2ltKCk7XG4gICAgcmV0dXJuIHtkZXZpY2UsIHJlYWxEZXZpY2U6IGZhbHNlLCB1ZGlkOiBkZXZpY2UudWRpZH07XG4gIH1cblxuICBhc3luYyBzdGFydFNpbSAoKSB7XG4gICAgY29uc3QgcnVuT3B0cyA9IHtcbiAgICAgIHNjYWxlRmFjdG9yOiB0aGlzLm9wdHMuc2NhbGVGYWN0b3IsXG4gICAgICBjb25uZWN0SGFyZHdhcmVLZXlib2FyZDogISF0aGlzLm9wdHMuY29ubmVjdEhhcmR3YXJlS2V5Ym9hcmQsXG4gICAgICBwYXN0ZWJvYXJkQXV0b21hdGljU3luYzogdGhpcy5vcHRzLnNpbXVsYXRvclBhc3RlYm9hcmRBdXRvbWF0aWNTeW5jID8/ICdvZmYnLFxuICAgICAgaXNIZWFkbGVzczogISF0aGlzLm9wdHMuaXNIZWFkbGVzcyxcbiAgICAgIHRyYWNlUG9pbnRlcjogdGhpcy5vcHRzLnNpbXVsYXRvclRyYWNlUG9pbnRlcixcbiAgICAgIGRldmljZVByZWZlcmVuY2VzOiB7fSxcbiAgICB9O1xuXG4gICAgLy8gYWRkIHRoZSB3aW5kb3cgY2VudGVyLCBpZiBpdCBpcyBzcGVjaWZpZWRcbiAgICBpZiAodGhpcy5vcHRzLlNpbXVsYXRvcldpbmRvd0NlbnRlcikge1xuICAgICAgcnVuT3B0cy5kZXZpY2VQcmVmZXJlbmNlcy5TaW11bGF0b3JXaW5kb3dDZW50ZXIgPSB0aGlzLm9wdHMuU2ltdWxhdG9yV2luZG93Q2VudGVyO1xuICAgIH1cblxuICAgIGlmIChfLmlzSW50ZWdlcih0aGlzLm9wdHMuc2ltdWxhdG9yU3RhcnR1cFRpbWVvdXQpKSB7XG4gICAgICBydW5PcHRzLnN0YXJ0dXBUaW1lb3V0ID0gdGhpcy5vcHRzLnNpbXVsYXRvclN0YXJ0dXBUaW1lb3V0O1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgdG8gd29ya2Fyb3VuZCBYQ1Rlc3QgYnVnIGFib3V0IGNoYW5naW5nIFNpbXVsYXRvclxuICAgIC8vIG9yaWVudGF0aW9uIGlzIG5vdCBzeW5jaHJvbml6ZWQgdG8gdGhlIGFjdHVhbCB3aW5kb3cgb3JpZW50YXRpb25cbiAgICBjb25zdCBvcmllbnRhdGlvbiA9IF8uaXNTdHJpbmcodGhpcy5vcHRzLm9yaWVudGF0aW9uKSAmJiB0aGlzLm9wdHMub3JpZW50YXRpb24udG9VcHBlckNhc2UoKTtcbiAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICBjYXNlICdMQU5EU0NBUEUnOlxuICAgICAgICBydW5PcHRzLmRldmljZVByZWZlcmVuY2VzLlNpbXVsYXRvcldpbmRvd09yaWVudGF0aW9uID0gJ0xhbmRzY2FwZUxlZnQnO1xuICAgICAgICBydW5PcHRzLmRldmljZVByZWZlcmVuY2VzLlNpbXVsYXRvcldpbmRvd1JvdGF0aW9uQW5nbGUgPSA5MDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdQT1JUUkFJVCc6XG4gICAgICAgIHJ1bk9wdHMuZGV2aWNlUHJlZmVyZW5jZXMuU2ltdWxhdG9yV2luZG93T3JpZW50YXRpb24gPSAnUG9ydHJhaXQnO1xuICAgICAgICBydW5PcHRzLmRldmljZVByZWZlcmVuY2VzLlNpbXVsYXRvcldpbmRvd1JvdGF0aW9uQW5nbGUgPSAwO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnJ1bihydW5PcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNpbSAoKSB7XG4gICAgdGhpcy5saWZlY3ljbGVEYXRhLmNyZWF0ZVNpbSA9IHRydWU7XG5cbiAgICAvLyBHZXQgcGxhdGZvcm0gbmFtZSBmcm9tIGNvbnN0IHNpbmNlIGl0IG11c3QgYmUgY2FzZSBzZW5zaXRpdmUgdG8gY3JlYXRlIGEgbmV3IHNpbXVsYXRvclxuICAgIGNvbnN0IHBsYXRmb3JtTmFtZSA9IHRoaXMuaXNUdk9TKCkgPyBQTEFURk9STV9OQU1FX1RWT1MgOiBQTEFURk9STV9OQU1FX0lPUztcblxuICAgIC8vIGNyZWF0ZSBzaW0gZm9yIGNhcHNcbiAgICBjb25zdCBzaW0gPSBhd2FpdCBjcmVhdGVTaW0odGhpcy5vcHRzLCBwbGF0Zm9ybU5hbWUpO1xuICAgIGxvZy5pbmZvKGBDcmVhdGVkIHNpbXVsYXRvciB3aXRoIHVkaWQgJyR7c2ltLnVkaWR9Jy5gKTtcblxuICAgIHJldHVybiBzaW07XG4gIH1cblxuICBhc3luYyBsYXVuY2hBcHAgKCkge1xuICAgIGNvbnN0IEFQUF9MQVVOQ0hfVElNRU9VVCA9IDIwICogMTAwMDtcblxuICAgIHRoaXMubG9nRXZlbnQoJ2FwcExhdW5jaEF0dGVtcHRlZCcpO1xuICAgIGF3YWl0IHRoaXMub3B0cy5kZXZpY2Uuc2ltY3RsLmxhdW5jaEFwcCh0aGlzLm9wdHMuYnVuZGxlSWQpO1xuXG4gICAgbGV0IGNoZWNrU3RhdHVzID0gYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICBsZXQgY3VycmVudEFwcCA9IHJlc3BvbnNlLmN1cnJlbnRBcHAuYnVuZGxlSUQ7XG4gICAgICBpZiAoY3VycmVudEFwcCAhPT0gdGhpcy5vcHRzLmJ1bmRsZUlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLm9wdHMuYnVuZGxlSWR9IG5vdCBpbiBmb3JlZ3JvdW5kLiAke2N1cnJlbnRBcHB9IGlzIGluIGZvcmVncm91bmRgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbG9nLmluZm8oYFdhaXRpbmcgZm9yICcke3RoaXMub3B0cy5idW5kbGVJZH0nIHRvIGJlIGluIGZvcmVncm91bmRgKTtcbiAgICBsZXQgcmV0cmllcyA9IHBhcnNlSW50KEFQUF9MQVVOQ0hfVElNRU9VVCAvIDIwMCwgMTApO1xuICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgMjAwLCBjaGVja1N0YXR1cyk7XG4gICAgbG9nLmluZm8oYCR7dGhpcy5vcHRzLmJ1bmRsZUlkfSBpcyBpbiBmb3JlZ3JvdW5kYCk7XG4gICAgdGhpcy5sb2dFdmVudCgnYXBwTGF1bmNoZWQnKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0V2RhU2Vzc2lvbiAoYnVuZGxlSWQsIHByb2Nlc3NBcmd1bWVudHMpIHtcbiAgICBjb25zdCBhcmdzID0gcHJvY2Vzc0FyZ3VtZW50cyA/IChwcm9jZXNzQXJndW1lbnRzLmFyZ3MgfHwgW10pIDogW107XG4gICAgaWYgKCFfLmlzQXJyYXkoYXJncykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvY2Vzc0FyZ3VtZW50cy5hcmdzIGNhcGFiaWxpdHkgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gYXJyYXkuIGAgK1xuICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShhcmdzKX0gaXMgZ2l2ZW4gaW5zdGVhZGApO1xuICAgIH1cbiAgICBjb25zdCBlbnYgPSBwcm9jZXNzQXJndW1lbnRzID8gKHByb2Nlc3NBcmd1bWVudHMuZW52IHx8IHt9KSA6IHt9O1xuICAgIGlmICghXy5pc1BsYWluT2JqZWN0KGVudikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvY2Vzc0FyZ3VtZW50cy5lbnYgY2FwYWJpbGl0eSBpcyBleHBlY3RlZCB0byBiZSBhIGRpY3Rpb25hcnkuIGAgK1xuICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShlbnYpfSBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gICAgfVxuXG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLmxhbmd1YWdlKSkge1xuICAgICAgYXJncy5wdXNoKCctQXBwbGVMYW5ndWFnZXMnLCBgKCR7dGhpcy5vcHRzLmxhbmd1YWdlfSlgKTtcbiAgICAgIGFyZ3MucHVzaCgnLU5TTGFuZ3VhZ2VzJywgYCgke3RoaXMub3B0cy5sYW5ndWFnZX0pYCk7XG4gICAgfVxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5sb2NhbGUpKSB7XG4gICAgICBhcmdzLnB1c2goJy1BcHBsZUxvY2FsZScsIHRoaXMub3B0cy5sb2NhbGUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdkYUNhcHMgPSB7XG4gICAgICBidW5kbGVJZDogdGhpcy5vcHRzLmF1dG9MYXVuY2ggPT09IGZhbHNlID8gdW5kZWZpbmVkIDogYnVuZGxlSWQsXG4gICAgICBhcmd1bWVudHM6IGFyZ3MsXG4gICAgICBlbnZpcm9ubWVudDogZW52LFxuICAgICAgZXZlbnRsb29wSWRsZURlbGF5U2VjOiB0aGlzLm9wdHMud2RhRXZlbnRsb29wSWRsZURlbGF5ID8/IDAsXG4gICAgICBzaG91bGRXYWl0Rm9yUXVpZXNjZW5jZTogdGhpcy5vcHRzLndhaXRGb3JRdWllc2NlbmNlID8/IHRydWUsXG4gICAgICBzaG91bGRVc2VUZXN0TWFuYWdlckZvclZpc2liaWxpdHlEZXRlY3Rpb246IHRoaXMub3B0cy5zaW1wbGVJc1Zpc2libGVDaGVjayA/PyBmYWxzZSxcbiAgICAgIG1heFR5cGluZ0ZyZXF1ZW5jeTogdGhpcy5vcHRzLm1heFR5cGluZ0ZyZXF1ZW5jeSA/PyA2MCxcbiAgICAgIHNob3VsZFVzZVNpbmdsZXRvblRlc3RNYW5hZ2VyOiB0aGlzLm9wdHMuc2hvdWxkVXNlU2luZ2xldG9uVGVzdE1hbmFnZXIgPz8gdHJ1ZSxcbiAgICAgIHdhaXRGb3JJZGxlVGltZW91dDogdGhpcy5vcHRzLndhaXRGb3JJZGxlVGltZW91dCxcbiAgICAgIHNob3VsZFVzZUNvbXBhY3RSZXNwb25zZXM6IHRoaXMub3B0cy5zaG91bGRVc2VDb21wYWN0UmVzcG9uc2VzLFxuICAgICAgZWxlbWVudFJlc3BvbnNlRmllbGRzOiB0aGlzLm9wdHMuZWxlbWVudFJlc3BvbnNlRmllbGRzLFxuICAgIH07XG4gICAgaWYgKHRoaXMub3B0cy5hdXRvQWNjZXB0QWxlcnRzKSB7XG4gICAgICB3ZGFDYXBzLmRlZmF1bHRBbGVydEFjdGlvbiA9ICdhY2NlcHQnO1xuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLmF1dG9EaXNtaXNzQWxlcnRzKSB7XG4gICAgICB3ZGFDYXBzLmRlZmF1bHRBbGVydEFjdGlvbiA9ICdkaXNtaXNzJztcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL3Nlc3Npb24nLCAnUE9TVCcsIHtcbiAgICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgICBmaXJzdE1hdGNoOiBbd2RhQ2Fwc10sXG4gICAgICAgIGFsd2F5c01hdGNoOiB7fSxcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIC8vIE92ZXJyaWRlIFByb3h5IG1ldGhvZHMgZnJvbSBCYXNlRHJpdmVyXG4gIHByb3h5QWN0aXZlICgpIHtcbiAgICByZXR1cm4gdGhpcy5qd3BQcm94eUFjdGl2ZTtcbiAgfVxuXG4gIGdldFByb3h5QXZvaWRMaXN0ICgpIHtcbiAgICBpZiAodGhpcy5pc1dlYnZpZXcoKSkge1xuICAgICAgcmV0dXJuIE5PX1BST1hZX1dFQl9MSVNUO1xuICAgIH1cbiAgICByZXR1cm4gTk9fUFJPWFlfTkFUSVZFX0xJU1Q7XG4gIH1cblxuICBjYW5Qcm94eSAoKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpc1NhZmFyaSAoKSB7XG4gICAgcmV0dXJuICEhdGhpcy5zYWZhcmk7XG4gIH1cblxuICBpc1JlYWxEZXZpY2UgKCkge1xuICAgIHJldHVybiB0aGlzLm9wdHMucmVhbERldmljZTtcbiAgfVxuXG4gIGlzU2ltdWxhdG9yICgpIHtcbiAgICByZXR1cm4gIXRoaXMub3B0cy5yZWFsRGV2aWNlO1xuICB9XG5cbiAgaXNUdk9TICgpIHtcbiAgICByZXR1cm4gXy50b0xvd2VyKHRoaXMub3B0cy5wbGF0Zm9ybU5hbWUpID09PSBfLnRvTG93ZXIoUExBVEZPUk1fTkFNRV9UVk9TKTtcbiAgfVxuXG4gIGlzV2VidmlldyAoKSB7XG4gICAgcmV0dXJuIHRoaXMuaXNTYWZhcmkoKSB8fCB0aGlzLmlzV2ViQ29udGV4dCgpO1xuICB9XG5cbiAgdmFsaWRhdGVMb2NhdG9yU3RyYXRlZ3kgKHN0cmF0ZWd5KSB7XG4gICAgc3VwZXIudmFsaWRhdGVMb2NhdG9yU3RyYXRlZ3koc3RyYXRlZ3ksIHRoaXMuaXNXZWJDb250ZXh0KCkpO1xuICB9XG5cbiAgdmFsaWRhdGVEZXNpcmVkQ2FwcyAoY2Fwcykge1xuICAgIGlmICghc3VwZXIudmFsaWRhdGVEZXNpcmVkQ2FwcyhjYXBzKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIG1ha2Ugc3VyZSB0aGF0IHRoZSBjYXBhYmlsaXRpZXMgaGF2ZSBvbmUgb2YgYGFwcGAgb3IgYGJ1bmRsZUlkYFxuICAgIGlmIChfLnRvTG93ZXIoY2Fwcy5icm93c2VyTmFtZSkgIT09ICdzYWZhcmknICYmICFjYXBzLmFwcCAmJiAhY2Fwcy5idW5kbGVJZCkge1xuICAgICAgbG9nLmluZm8oJ1RoZSBkZXNpcmVkIGNhcGFiaWxpdGllcyBpbmNsdWRlIG5laXRoZXIgYW4gYXBwIG5vciBhIGJ1bmRsZUlkLiAnICtcbiAgICAgICAgJ1dlYkRyaXZlckFnZW50IHdpbGwgYmUgc3RhcnRlZCB3aXRob3V0IHRoZSBkZWZhdWx0IGFwcCcpO1xuICAgIH1cblxuICAgIGlmICghdXRpbC5jb2VyY2VWZXJzaW9uKGNhcHMucGxhdGZvcm1WZXJzaW9uLCBmYWxzZSkpIHtcbiAgICAgIGxvZy53YXJuKGAncGxhdGZvcm1WZXJzaW9uJyBjYXBhYmlsaXR5ICgnJHtjYXBzLnBsYXRmb3JtVmVyc2lvbn0nKSBpcyBub3QgYSB2YWxpZCB2ZXJzaW9uIG51bWJlci4gYCArXG4gICAgICAgIGBDb25zaWRlciBmaXhpbmcgaXQgb3IgYmUgcmVhZHkgdG8gZXhwZXJpZW5jZSBhbiBpbmNvbnNpc3RlbnQgZHJpdmVyIGJlaGF2aW9yLmApO1xuICAgIH1cblxuICAgIGxldCB2ZXJpZnlQcm9jZXNzQXJndW1lbnQgPSAocHJvY2Vzc0FyZ3VtZW50cykgPT4ge1xuICAgICAgY29uc3Qge2FyZ3MsIGVudn0gPSBwcm9jZXNzQXJndW1lbnRzO1xuICAgICAgaWYgKCFfLmlzTmlsKGFyZ3MpICYmICFfLmlzQXJyYXkoYXJncykpIHtcbiAgICAgICAgbG9nLmVycm9yQW5kVGhyb3coJ3Byb2Nlc3NBcmd1bWVudHMuYXJncyBtdXN0IGJlIGFuIGFycmF5IG9mIHN0cmluZ3MnKTtcbiAgICAgIH1cbiAgICAgIGlmICghXy5pc05pbChlbnYpICYmICFfLmlzUGxhaW5PYmplY3QoZW52KSkge1xuICAgICAgICBsb2cuZXJyb3JBbmRUaHJvdygncHJvY2Vzc0FyZ3VtZW50cy5lbnYgbXVzdCBiZSBhbiBvYmplY3QgPGtleSx2YWx1ZT4gcGFpciB7YTpiLCBjOmR9Jyk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIC8vIGBwcm9jZXNzQXJndW1lbnRzYCBzaG91bGQgYmUgSlNPTiBzdHJpbmcgb3IgYW4gb2JqZWN0IHdpdGggYXJndW1lbnRzIGFuZC8gZW52aXJvbm1lbnQgZGV0YWlsc1xuICAgIGlmIChjYXBzLnByb2Nlc3NBcmd1bWVudHMpIHtcbiAgICAgIGlmIChfLmlzU3RyaW5nKGNhcHMucHJvY2Vzc0FyZ3VtZW50cykpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyB0cnkgdG8gcGFyc2UgdGhlIHN0cmluZyBhcyBKU09OXG4gICAgICAgICAgY2Fwcy5wcm9jZXNzQXJndW1lbnRzID0gSlNPTi5wYXJzZShjYXBzLnByb2Nlc3NBcmd1bWVudHMpO1xuICAgICAgICAgIHZlcmlmeVByb2Nlc3NBcmd1bWVudChjYXBzLnByb2Nlc3NBcmd1bWVudHMpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgcHJvY2Vzc0FyZ3VtZW50cyBtdXN0IGJlIGEgSlNPTiBmb3JtYXQgb3IgYW4gb2JqZWN0IHdpdGggZm9ybWF0IHthcmdzIDogW10sIGVudiA6IHthOmIsIGM6ZH19LiBgICtcbiAgICAgICAgICAgIGBCb3RoIGVudmlyb25tZW50IGFuZCBhcmd1bWVudCBjYW4gYmUgbnVsbC4gRXJyb3I6ICR7ZXJyfWApO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKF8uaXNQbGFpbk9iamVjdChjYXBzLnByb2Nlc3NBcmd1bWVudHMpKSB7XG4gICAgICAgIHZlcmlmeVByb2Nlc3NBcmd1bWVudChjYXBzLnByb2Nlc3NBcmd1bWVudHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLmVycm9yQW5kVGhyb3coYCdwcm9jZXNzQXJndW1lbnRzIG11c3QgYmUgYW4gb2JqZWN0LCBvciBhIHN0cmluZyBKU09OIG9iamVjdCB3aXRoIGZvcm1hdCB7YXJncyA6IFtdLCBlbnYgOiB7YTpiLCBjOmR9fS4gYCArXG4gICAgICAgICAgYEJvdGggZW52aXJvbm1lbnQgYW5kIGFyZ3VtZW50IGNhbiBiZSBudWxsLmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIHRoZXJlIGlzIG5vIHBvaW50IGluIGhhdmluZyBga2V5Y2hhaW5QYXRoYCB3aXRob3V0IGBrZXljaGFpblBhc3N3b3JkYFxuICAgIGlmICgoY2Fwcy5rZXljaGFpblBhdGggJiYgIWNhcHMua2V5Y2hhaW5QYXNzd29yZCkgfHwgKCFjYXBzLmtleWNoYWluUGF0aCAmJiBjYXBzLmtleWNoYWluUGFzc3dvcmQpKSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgSWYgJ2tleWNoYWluUGF0aCcgaXMgc2V0LCAna2V5Y2hhaW5QYXNzd29yZCcgbXVzdCBhbHNvIGJlIHNldCAoYW5kIHZpY2UgdmVyc2EpLmApO1xuICAgIH1cblxuICAgIC8vIGByZXNldE9uU2Vzc2lvblN0YXJ0T25seWAgc2hvdWxkIGJlIHNldCB0byB0cnVlIGJ5IGRlZmF1bHRcbiAgICB0aGlzLm9wdHMucmVzZXRPblNlc3Npb25TdGFydE9ubHkgPSAhdXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMucmVzZXRPblNlc3Npb25TdGFydE9ubHkpIHx8IHRoaXMub3B0cy5yZXNldE9uU2Vzc2lvblN0YXJ0T25seTtcbiAgICB0aGlzLm9wdHMudXNlTmV3V0RBID0gdXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMudXNlTmV3V0RBKSA/IHRoaXMub3B0cy51c2VOZXdXREEgOiBmYWxzZTtcblxuICAgIGlmIChjYXBzLmNvbW1hbmRUaW1lb3V0cykge1xuICAgICAgY2Fwcy5jb21tYW5kVGltZW91dHMgPSBub3JtYWxpemVDb21tYW5kVGltZW91dHMoY2Fwcy5jb21tYW5kVGltZW91dHMpO1xuICAgIH1cblxuICAgIGlmIChfLmlzU3RyaW5nKGNhcHMud2ViRHJpdmVyQWdlbnRVcmwpKSB7XG4gICAgICBjb25zdCB7cHJvdG9jb2wsIGhvc3R9ID0gdXJsLnBhcnNlKGNhcHMud2ViRHJpdmVyQWdlbnRVcmwpO1xuICAgICAgaWYgKF8uaXNFbXB0eShwcm90b2NvbCkgfHwgXy5pc0VtcHR5KGhvc3QpKSB7XG4gICAgICAgIGxvZy5lcnJvckFuZFRocm93KGAnd2ViRHJpdmVyQWdlbnRVcmwnIGNhcGFiaWxpdHkgaXMgZXhwZWN0ZWQgdG8gY29udGFpbiBhIHZhbGlkIFdlYkRyaXZlckFnZW50IHNlcnZlciBVUkwuIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgICBgJyR7Y2Fwcy53ZWJEcml2ZXJBZ2VudFVybH0nIGlzIGdpdmVuIGluc3RlYWRgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2Fwcy5icm93c2VyTmFtZSkge1xuICAgICAgaWYgKGNhcHMuYnVuZGxlSWQpIHtcbiAgICAgICAgbG9nLmVycm9yQW5kVGhyb3coYCdicm93c2VyTmFtZScgY2Fubm90IGJlIHNldCB0b2dldGhlciB3aXRoICdidW5kbGVJZCcgY2FwYWJpbGl0eWApO1xuICAgICAgfVxuICAgICAgLy8gd2FybiBpZiB0aGUgY2FwYWJpbGl0aWVzIGhhdmUgYm90aCBgYXBwYCBhbmQgYGJyb3dzZXIsIGFsdGhvdWdoIHRoaXNcbiAgICAgIC8vIGlzIGNvbW1vbiB3aXRoIHNlbGVuaXVtIGdyaWRcbiAgICAgIGlmIChjYXBzLmFwcCkge1xuICAgICAgICBsb2cud2FybihgVGhlIGNhcGFiaWxpdGllcyBzaG91bGQgZ2VuZXJhbGx5IG5vdCBpbmNsdWRlIGJvdGggYW4gJ2FwcCcgYW5kIGEgJ2Jyb3dzZXJOYW1lJ2ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjYXBzLnBlcm1pc3Npb25zKSB7XG4gICAgICB0cnkge1xuICAgICAgICBmb3IgKGNvbnN0IFtidW5kbGVJZCwgcGVybXNdIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKGNhcHMucGVybWlzc2lvbnMpKSkge1xuICAgICAgICAgIGlmICghXy5pc1N0cmluZyhidW5kbGVJZCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7SlNPTi5zdHJpbmdpZnkoYnVuZGxlSWQpfScgbXVzdCBiZSBhIHN0cmluZ2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoIV8uaXNQbGFpbk9iamVjdChwZXJtcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgJyR7SlNPTi5zdHJpbmdpZnkocGVybXMpfScgbXVzdCBiZSBhIEpTT04gb2JqZWN0YCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGxvZy5lcnJvckFuZFRocm93KGAnJHtjYXBzLnBlcm1pc3Npb25zfScgaXMgZXhwZWN0ZWQgdG8gYmUgYSB2YWxpZCBvYmplY3Qgd2l0aCBmb3JtYXQgYCArXG4gICAgICAgICAgYHtcIjxidW5kbGVJZDE+XCI6IHtcIjxzZXJ2aWNlTmFtZTE+XCI6IFwiPHNlcnZpY2VTdGF0dXMxPlwiLCAuLi59LCAuLi59LiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNhcHMucGxhdGZvcm1WZXJzaW9uICYmICF1dGlsLmNvZXJjZVZlcnNpb24oY2Fwcy5wbGF0Zm9ybVZlcnNpb24sIGZhbHNlKSkge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYCdwbGF0Zm9ybVZlcnNpb24nIG11c3QgYmUgYSB2YWxpZCB2ZXJzaW9uIG51bWJlci4gYCArXG4gICAgICAgIGAnJHtjYXBzLnBsYXRmb3JtVmVyc2lvbn0nIGlzIGdpdmVuIGluc3RlYWQuYCk7XG4gICAgfVxuXG4gICAgLy8gYWRkaXRpb25hbFdlYnZpZXdCdW5kbGVJZHMgaXMgYW4gYXJyYXksIEpTT04gYXJyYXksIG9yIHN0cmluZ1xuICAgIGlmIChjYXBzLmFkZGl0aW9uYWxXZWJ2aWV3QnVuZGxlSWRzKSB7XG4gICAgICBjYXBzLmFkZGl0aW9uYWxXZWJ2aWV3QnVuZGxlSWRzID0gdGhpcy5oZWxwZXJzLnBhcnNlQ2Fwc0FycmF5KGNhcHMuYWRkaXRpb25hbFdlYnZpZXdCdW5kbGVJZHMpO1xuICAgIH1cblxuICAgIC8vIGZpbmFsbHksIHJldHVybiB0cnVlIHNpbmNlIHRoZSBzdXBlcmNsYXNzIGNoZWNrIHBhc3NlZCwgYXMgZGlkIHRoaXNcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGFzeW5jIGluc3RhbGxBVVQgKCkge1xuICAgIGlmICh0aGlzLmlzU2FmYXJpKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBhd2FpdCB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtKHRoaXMub3B0cy5hcHAsIHtcbiAgICAgIGlzU2ltdWxhdG9yOiB0aGlzLmlzU2ltdWxhdG9yKCksXG4gICAgICBpc1R2T1M6IHRoaXMuaXNUdk9TKCksXG4gICAgfSk7XG5cbiAgICBpZiAodGhpcy5pc1JlYWxEZXZpY2UoKSkge1xuICAgICAgYXdhaXQgaW5zdGFsbFRvUmVhbERldmljZSh0aGlzLm9wdHMuZGV2aWNlLCB0aGlzLm9wdHMuYXBwLCB0aGlzLm9wdHMuYnVuZGxlSWQsIHtcbiAgICAgICAgbm9SZXNldDogdGhpcy5vcHRzLm5vUmVzZXQsXG4gICAgICAgIHRpbWVvdXQ6IHRoaXMub3B0cy5hcHBQdXNoVGltZW91dCxcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBpbnN0YWxsVG9TaW11bGF0b3IodGhpcy5vcHRzLmRldmljZSwgdGhpcy5vcHRzLmFwcCwgdGhpcy5vcHRzLmJ1bmRsZUlkLCB7XG4gICAgICAgIG5vUmVzZXQ6IHRoaXMub3B0cy5ub1Jlc2V0LFxuICAgICAgICBuZXdTaW11bGF0b3I6IHRoaXMubGlmZWN5Y2xlRGF0YS5jcmVhdGVTaW0sXG4gICAgICB9KTtcbiAgICB9XG4gICAgaWYgKHRoaXMub3B0cy5vdGhlckFwcHMpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW5zdGFsbE90aGVyQXBwcyh0aGlzLm9wdHMub3RoZXJBcHBzKTtcbiAgICB9XG5cbiAgICBpZiAodXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMuaW9zSW5zdGFsbFBhdXNlKSkge1xuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2FwcGl1bS9hcHBpdW0vaXNzdWVzLzY4ODlcbiAgICAgIGxldCBwYXVzZSA9IHBhcnNlSW50KHRoaXMub3B0cy5pb3NJbnN0YWxsUGF1c2UsIDEwKTtcbiAgICAgIGxvZy5kZWJ1ZyhgaW9zSW5zdGFsbFBhdXNlIHNldC4gUGF1c2luZyAke3BhdXNlfSBtcyBiZWZvcmUgY29udGludWluZ2ApO1xuICAgICAgYXdhaXQgQi5kZWxheShwYXVzZSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5zdGFsbE90aGVyQXBwcyAob3RoZXJBcHBzKSB7XG4gICAgaWYgKHRoaXMuaXNSZWFsRGV2aWNlKCkpIHtcbiAgICAgIGxvZy53YXJuKCdDYXBhYmlsaXR5IG90aGVyQXBwcyBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgU2ltdWxhdG9ycycpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgb3RoZXJBcHBzID0gdGhpcy5oZWxwZXJzLnBhcnNlQ2Fwc0FycmF5KG90aGVyQXBwcyk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYENvdWxkIG5vdCBwYXJzZSBcIm90aGVyQXBwc1wiIGNhcGFiaWxpdHk6ICR7ZS5tZXNzYWdlfWApO1xuICAgIH1cbiAgICBmb3IgKGNvbnN0IG90aGVyQXBwIG9mIG90aGVyQXBwcykge1xuICAgICAgYXdhaXQgaW5zdGFsbFRvU2ltdWxhdG9yKHRoaXMub3B0cy5kZXZpY2UsIG90aGVyQXBwLCB1bmRlZmluZWQsIHtcbiAgICAgICAgbm9SZXNldDogdGhpcy5vcHRzLm5vUmVzZXQsXG4gICAgICAgIG5ld1NpbXVsYXRvcjogdGhpcy5saWZlY3ljbGVEYXRhLmNyZWF0ZVNpbSxcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTZXQgcmVkdWNlTW90aW9uIGFzICdpc0VuYWJsZWQnIG9ubHkgd2hlbiB0aGUgY2FwYWJpbGl0aWVzIGhhcyAncmVkdWNlTW90aW9uJ1xuICAgKiBUaGUgY2FsbCBpcyBpZ25vcmVkIGZvciByZWFsIGRldmljZXMuXG4gICAqIEBwYXJhbSB7P2Jvb2xlYW59IGlzRW5hYmxlZCBXZXRoZXIgZW5hYmxlIHJlZHVjZU1vdGlvblxuICAgKi9cbiAgYXN5bmMgc2V0UmVkdWNlTW90aW9uIChpc0VuYWJsZWQpIHtcbiAgICBpZiAodGhpcy5pc1JlYWxEZXZpY2UoKSB8fCAhXy5pc0Jvb2xlYW4oaXNFbmFibGVkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxvZy5pbmZvKGBTZXR0aW5nIHJlZHVjZU1vdGlvbiB0byAke2lzRW5hYmxlZH1gKTtcbiAgICBhd2FpdCB0aGlzLnVwZGF0ZVNldHRpbmdzKHtyZWR1Y2VNb3Rpb246IGlzRW5hYmxlZH0pO1xuICB9XG5cbiAgYXN5bmMgc2V0SW5pdGlhbE9yaWVudGF0aW9uIChvcmllbnRhdGlvbikge1xuICAgIGlmICghXy5pc1N0cmluZyhvcmllbnRhdGlvbikpIHtcbiAgICAgIGxvZy5pbmZvKCdTa2lwcGluZyBzZXR0aW5nIG9mIHRoZSBpbml0aWFsIGRpc3BsYXkgb3JpZW50YXRpb24uICcgK1xuICAgICAgICAnU2V0IHRoZSBcIm9yaWVudGF0aW9uXCIgY2FwYWJpbGl0eSB0byBlaXRoZXIgXCJMQU5EU0NBUEVcIiBvciBcIlBPUlRSQUlUXCIsIGlmIHRoaXMgaXMgYW4gdW5kZXNpcmVkIGJlaGF2aW9yLicpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBvcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uLnRvVXBwZXJDYXNlKCk7XG4gICAgaWYgKCFfLmluY2x1ZGVzKFsnTEFORFNDQVBFJywgJ1BPUlRSQUlUJ10sIG9yaWVudGF0aW9uKSkge1xuICAgICAgbG9nLmRlYnVnKGBVbmFibGUgdG8gc2V0IGluaXRpYWwgb3JpZW50YXRpb24gdG8gJyR7b3JpZW50YXRpb259J2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYFNldHRpbmcgaW5pdGlhbCBvcmllbnRhdGlvbiB0byAnJHtvcmllbnRhdGlvbn0nYCk7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvb3JpZW50YXRpb24nLCAnUE9TVCcsIHtvcmllbnRhdGlvbn0pO1xuICAgICAgdGhpcy5vcHRzLmN1ck9yaWVudGF0aW9uID0gb3JpZW50YXRpb247XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cud2FybihgU2V0dGluZyBpbml0aWFsIG9yaWVudGF0aW9uIGZhaWxlZCB3aXRoOiAke2Vyci5tZXNzYWdlfWApO1xuICAgIH1cbiAgfVxuXG4gIF9nZXRDb21tYW5kVGltZW91dCAoY21kTmFtZSkge1xuICAgIGlmICh0aGlzLm9wdHMuY29tbWFuZFRpbWVvdXRzKSB7XG4gICAgICBpZiAoY21kTmFtZSAmJiBfLmhhcyh0aGlzLm9wdHMuY29tbWFuZFRpbWVvdXRzLCBjbWROYW1lKSkge1xuICAgICAgICByZXR1cm4gdGhpcy5vcHRzLmNvbW1hbmRUaW1lb3V0c1tjbWROYW1lXTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB0aGlzLm9wdHMuY29tbWFuZFRpbWVvdXRzW0RFRkFVTFRfVElNRU9VVF9LRVldO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgc2Vzc2lvbiBjYXBhYmlsaXRpZXMgbWVyZ2VkIHdpdGggd2hhdCBXREEgcmVwb3J0c1xuICAgKiBUaGlzIGlzIGEgbGlicmFyeSBjb21tYW5kIGJ1dCBuZWVkcyB0byBjYWxsICdzdXBlcicgc28gY2FuJ3QgYmUgb25cbiAgICogYSBoZWxwZXIgb2JqZWN0XG4gICAqL1xuICBhc3luYyBnZXRTZXNzaW9uICgpIHtcbiAgICAvLyBjYWxsIHN1cGVyIHRvIGdldCBldmVudCB0aW1pbmdzLCBldGMuLi5cbiAgICBjb25zdCBkcml2ZXJTZXNzaW9uID0gYXdhaXQgc3VwZXIuZ2V0U2Vzc2lvbigpO1xuICAgIGlmICghdGhpcy53ZGFDYXBzKSB7XG4gICAgICB0aGlzLndkYUNhcHMgPSBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnLycsICdHRVQnKTtcbiAgICB9XG5cbiAgICBjb25zdCBzaG91bGRHZXREZXZpY2VDYXBzID0gXy5pc0Jvb2xlYW4odGhpcy5vcHRzLmluY2x1ZGVEZXZpY2VDYXBzVG9TZXNzaW9uSW5mbylcbiAgICAgID8gdGhpcy5vcHRzLmluY2x1ZGVEZXZpY2VDYXBzVG9TZXNzaW9uSW5mb1xuICAgICAgOiB0cnVlOyAvLyBCYWNrd2FyZCBjb21wYXRpYmlsaXR5XG4gICAgaWYgKHNob3VsZEdldERldmljZUNhcHMgJiYgIXRoaXMuZGV2aWNlQ2Fwcykge1xuICAgICAgY29uc3Qge3N0YXR1c0JhclNpemUsIHNjYWxlfSA9IGF3YWl0IHRoaXMuZ2V0U2NyZWVuSW5mbygpO1xuICAgICAgdGhpcy5kZXZpY2VDYXBzID0ge1xuICAgICAgICBwaXhlbFJhdGlvOiBzY2FsZSxcbiAgICAgICAgc3RhdEJhckhlaWdodDogc3RhdHVzQmFyU2l6ZS5oZWlnaHQsXG4gICAgICAgIHZpZXdwb3J0UmVjdDogYXdhaXQgdGhpcy5nZXRWaWV3cG9ydFJlY3QoKSxcbiAgICAgIH07XG4gICAgfVxuICAgIGxvZy5pbmZvKCdNZXJnaW5nIFdEQSBjYXBzIG92ZXIgQXBwaXVtIGNhcHMgZm9yIHNlc3Npb24gZGV0YWlsIHJlc3BvbnNlJyk7XG4gICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oe3VkaWQ6IHRoaXMub3B0cy51ZGlkfSwgZHJpdmVyU2Vzc2lvbixcbiAgICAgIHRoaXMud2RhQ2Fwcy5jYXBhYmlsaXRpZXMsIHRoaXMuZGV2aWNlQ2FwcyB8fCB7fSk7XG4gIH1cblxuICBhc3luYyByZXNldCAoKSB7XG4gICAgaWYgKHRoaXMub3B0cy5ub1Jlc2V0KSB7XG4gICAgICAvLyBUaGlzIGlzIHRvIG1ha2Ugc3VyZSByZXNldCBoYXBwZW5zIGV2ZW4gaWYgbm9SZXNldCBpcyBzZXQgdG8gdHJ1ZVxuICAgICAgbGV0IG9wdHMgPSBfLmNsb25lRGVlcCh0aGlzLm9wdHMpO1xuICAgICAgb3B0cy5ub1Jlc2V0ID0gZmFsc2U7XG4gICAgICBvcHRzLmZ1bGxSZXNldCA9IGZhbHNlO1xuICAgICAgY29uc3Qgc2h1dGRvd25IYW5kbGVyID0gdGhpcy5yZXNldE9uVW5leHBlY3RlZFNodXRkb3duO1xuICAgICAgdGhpcy5yZXNldE9uVW5leHBlY3RlZFNodXRkb3duID0gKCkgPT4ge307XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLnJ1blJlc2V0KG9wdHMpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgdGhpcy5yZXNldE9uVW5leHBlY3RlZFNodXRkb3duID0gc2h1dGRvd25IYW5kbGVyO1xuICAgICAgfVxuICAgIH1cbiAgICBhd2FpdCBzdXBlci5yZXNldCgpO1xuICB9XG59XG5cbk9iamVjdC5hc3NpZ24oWENVSVRlc3REcml2ZXIucHJvdG90eXBlLCBjb21tYW5kcyk7XG5cbmV4cG9ydCBkZWZhdWx0IFhDVUlUZXN0RHJpdmVyO1xuZXhwb3J0IHsgWENVSVRlc3REcml2ZXIgfTtcbiJdLCJmaWxlIjoibGliL2RyaXZlci5qcyIsInNvdXJjZVJvb3QiOiIuLi8uLiJ9
1255
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9kcml2ZXIuanMiXSwibmFtZXMiOlsiU0hVVERPV05fT1RIRVJfRkVBVF9OQU1FIiwiQ1VTVE9NSVpFX1JFU1VMVF9CVU5EUEVfUEFUSCIsIlNBRkFSSV9CVU5ETEVfSUQiLCJXREFfU0lNX1NUQVJUVVBfUkVUUklFUyIsIldEQV9SRUFMX0RFVl9TVEFSVFVQX1JFVFJJRVMiLCJXREFfUkVBTF9ERVZfVFVUT1JJQUxfVVJMIiwiV0RBX1NUQVJUVVBfUkVUUllfSU5URVJWQUwiLCJERUZBVUxUX1NFVFRJTkdTIiwibmF0aXZlV2ViVGFwIiwibmF0aXZlV2ViVGFwU3RyaWN0IiwidXNlSlNPTlNvdXJjZSIsInNob3VsZFVzZUNvbXBhY3RSZXNwb25zZXMiLCJlbGVtZW50UmVzcG9uc2VBdHRyaWJ1dGVzIiwibWpwZWdTZXJ2ZXJTY3JlZW5zaG90UXVhbGl0eSIsIm1qcGVnU2VydmVyRnJhbWVyYXRlIiwic2NyZWVuc2hvdFF1YWxpdHkiLCJtanBlZ1NjYWxpbmdGYWN0b3IiLCJyZWR1Y2VNb3Rpb24iLCJTSEFSRURfUkVTT1VSQ0VTX0dVQVJEIiwiQXN5bmNMb2NrIiwiTk9fUFJPWFlfTkFUSVZFX0xJU1QiLCJOT19QUk9YWV9XRUJfTElTVCIsImNvbmNhdCIsIk1FTU9JWkVEX0ZVTkNUSU9OUyIsIlhDVUlUZXN0RHJpdmVyIiwiQmFzZURyaXZlciIsImNvbnN0cnVjdG9yIiwib3B0cyIsInNob3VsZFZhbGlkYXRlQ2FwcyIsImRlc2lyZWRDYXBDb25zdHJhaW50cyIsImxvY2F0b3JTdHJhdGVnaWVzIiwid2ViTG9jYXRvclN0cmF0ZWdpZXMiLCJyZXNldElvcyIsInNldHRpbmdzIiwiRGV2aWNlU2V0dGluZ3MiLCJvblNldHRpbmdzVXBkYXRlIiwiYmluZCIsImxvZ3MiLCJmbiIsIl8iLCJtZW1vaXplIiwia2V5IiwidmFsdWUiLCJwcm94eUNvbW1hbmQiLCJ3ZGEiLCJkZXZpY2UiLCJqd3BQcm94eUFjdGl2ZSIsInByb3h5UmVxUmVzIiwiandwUHJveHlBdm9pZCIsInNhZmFyaSIsImNhY2hlZFdkYVN0YXR1cyIsImN1cldlYkZyYW1lcyIsIndlYkVsZW1lbnRJZHMiLCJfY3VycmVudFVybCIsImN1ckNvbnRleHQiLCJ4Y29kZVZlcnNpb24iLCJjb250ZXh0cyIsImltcGxpY2l0V2FpdE1zIiwiYXN5bmNsaWJXYWl0TXMiLCJwYWdlTG9hZE1zIiwibGFuZHNjYXBlV2ViQ29vcmRzT2Zmc2V0IiwicmVtb3RlIiwiZHJpdmVyRGF0YSIsImdldFN0YXR1cyIsImRyaXZlckluZm8iLCJzdGF0dXMiLCJidWlsZCIsInZlcnNpb24iLCJjcmVhdGVTZXNzaW9uIiwiYXJncyIsImxpZmVjeWNsZURhdGEiLCJzZXNzaW9uSWQiLCJjYXBzIiwic3RhcnQiLCJPYmplY3QiLCJhc3NpZ24iLCJkZWZhdWx0U2VydmVyQ2FwcyIsInVkaWQiLCJoYXMiLCJ1cGRhdGVTZXR0aW5ncyIsIndkYVNldHRpbmdzIiwibG9nIiwiaW5mbyIsIm1qcGVnU2NyZWVuc2hvdFVybCIsIm1qcGVnU3RyZWFtIiwibWpwZWciLCJNSnBlZ1N0cmVhbSIsImUiLCJlcnJvciIsIkpTT04iLCJzdHJpbmdpZnkiLCJkZWxldGVTZXNzaW9uIiwibm9SZXNldCIsImZ1bGxSZXNldCIsImlvc1Nka1ZlcnNpb24iLCJyZWFsRGV2aWNlIiwiZGV0ZXJtaW5lRGV2aWNlIiwic2ltdWxhdG9yRGV2aWNlc1NldFBhdGgiLCJkZXZpY2VzU2V0UGF0aCIsInBsYXRmb3JtVmVyc2lvbiIsImdldFBsYXRmb3JtVmVyc2lvbiIsIm5vcm1hbGl6ZWRWZXJzaW9uIiwidXRpbCIsImNvbXBhcmVWZXJzaW9ucyIsIkVycm9yIiwiaXNFbXB0eSIsIndlYkRyaXZlckFnZW50VXJsIiwibG9nRXZlbnQiLCJ0b0xvd2VyIiwiYnJvd3Nlck5hbWUiLCJhcHAiLCJ1bmRlZmluZWQiLCJwcm9jZXNzQXJndW1lbnRzIiwiYnVuZGxlSWQiLCJzYWZhcmlJbml0aWFsVXJsIiwiaXNSZWFsRGV2aWNlIiwiYWRkcmVzcyIsInBvcnQiLCJjb25maWd1cmVBcHAiLCJhcHBVdGlscyIsImV4dHJhY3RCdW5kbGVJZCIsInJ1blJlc2V0IiwiV2ViRHJpdmVyQWdlbnQiLCJyZXRyaWV2ZURlcml2ZWREYXRhUGF0aCIsImNhdGNoIiwiZGVidWciLCJtZW1vaXplZExvZ0luZm8iLCJsb2dJbmZvIiwic3RhcnRMb2dDYXB0dXJlIiwic2tpcExvZ0NhcHR1cmUiLCJyZXN1bHQiLCJpc0xvZ0NhcHR1cmVTdGFydGVkIiwiaXNTaW11bGF0b3IiLCJzaHV0ZG93bk90aGVyU2ltdWxhdG9ycyIsImVuc3VyZUZlYXR1cmVFbmFibGVkIiwiaXNTYWZhcmkiLCJzYWZhcmlHbG9iYWxQcmVmZXJlbmNlcyIsInVwZGF0ZVNhZmFyaUdsb2JhbFNldHRpbmdzIiwibG9jYWxDb25maWciLCJpb3NTZXR0aW5ncyIsInNldExvY2FsZUFuZFByZWZlcmVuY2VzIiwic2ltIiwiY3VzdG9tU1NMQ2VydCIsImNlcnRIZWFkIiwidHJ1bmNhdGUiLCJsZW5ndGgiLCJzaW1jdGwiLCJhZGRSb290Q2VydGlmaWNhdGUiLCJyYXciLCJpZ24iLCJzdGFydFNpbSIsImxhdW5jaFdpdGhJREIiLCJpZGIiLCJJREIiLCJjb25uZWN0IiwibWVzc2FnZSIsImluc3RhbGxBVVQiLCJpc0FwcEluc3RhbGxlZCIsImVycm9yQW5kVGhyb3ciLCJwZXJtaXNzaW9ucyIsInBlcm1pc3Npb25zTWFwcGluZyIsInRvUGFpcnMiLCJwYXJzZSIsInNldFBlcm1pc3Npb25zIiwid2FybiIsImNhbGVuZGFyQWNjZXNzQXV0aG9yaXplZCIsImVuYWJsZUNhbGVuZGFyQWNjZXNzIiwiZGlzYWJsZUNhbGVuZGFyQWNjZXNzIiwic3RhcnRXZGEiLCJzZXRSZWR1Y2VNb3Rpb24iLCJzZXRJbml0aWFsT3JpZW50YXRpb24iLCJvcmllbnRhdGlvbiIsIm9wZW5VcmwiLCJhdXRvV2VidmlldyIsIm5hdlRvSW5pdGlhbFdlYnZpZXciLCJzZXRVcmwiLCJoYXNWYWx1ZSIsImNsZWFudXBPYnNvbGV0ZVByb2Nlc3NlcyIsInVzZVBvcnRGb3J3YXJkaW5nIiwid2RhQmFzZVVybCIsIkRFVklDRV9DT05ORUNUSU9OU19GQUNUT1JZIiwicmVxdWVzdENvbm5lY3Rpb24iLCJ1cmwiLCJkZXZpY2VQb3J0Iiwid2RhUmVtb3RlUG9ydCIsInN5bmNocm9uaXphdGlvbktleSIsIm5hbWUiLCJ1c2VYY3Rlc3RydW5GaWxlIiwiaXNTb3VyY2VGcmVzaCIsImRlcml2ZWREYXRhUGF0aCIsInBhdGgiLCJub3JtYWxpemUiLCJpc0J1c3kiLCJib290c3RyYXBQYXRoIiwiYWNxdWlyZSIsInVzZU5ld1dEQSIsInF1aXRBbmRVbmluc3RhbGwiLCJzZXR1cENhY2hpbmciLCJtc2ciLCJyZXN1bHRCdW5kbGVQYXRoIiwic3RhcnR1cFJldHJpZXMiLCJ3ZGFTdGFydHVwUmV0cmllcyIsInN0YXJ0dXBSZXRyeUludGVydmFsIiwid2RhU3RhcnR1cFJldHJ5SW50ZXJ2YWwiLCJyZXRyeUNvdW50IiwicmV0cmllcyIsIm1ham9yIiwibGF1bmNoIiwiZXJyIiwiZXJyb3JNc2ciLCJvcmlnaW5hbFN0YWNrdHJhY2UiLCJzdGFydFdkYVNlc3Npb24iLCJzdGFjayIsImNsZWFyU3lzdGVtRmlsZXMiLCJmdWxseVN0YXJ0ZWQiLCJzZXJ2ZXIiLCJyZWNvcmRlciIsImNvbXBhY3QiLCJfcmVjZW50U2NyZWVuUmVjb3JkZXIiLCJfYXVkaW9SZWNvcmRlciIsImludGVycnVwdCIsImNsZWFudXAiLCJfcGVyZlJlY29yZGVycyIsIkIiLCJhbGwiLCJtYXAiLCJ4Iiwic3RvcCIsInN0b3BSZW1vdGUiLCJyZXNldE9uU2Vzc2lvblN0YXJ0T25seSIsImVuZm9yY2VTaW11bGF0b3JTaHV0ZG93biIsImNyZWF0ZVNpbSIsImRlbGV0ZSIsInN5c2xvZyIsInN0b3BDYXB0dXJlIiwiandwcm94eSIsInF1aXQiLCJyZWxlYXNlQ29ubmVjdGlvbiIsImV4ZWN1dGVDb21tYW5kIiwiY21kIiwicmVjZWl2ZUFzeW5jUmVzcG9uc2UiLCJhcHBJc1BhY2thZ2VPckJ1bmRsZSIsInRlc3QiLCJoZWxwZXJzIiwiZGV2aWNlTmFtZSIsInNldHVwVmVyc2lvbkNhcHMiLCJ0b0xvd2VyQ2FzZSIsImRldmljZVBsYXRmb3JtIiwiZGV2aWNlcyIsImpvaW4iLCJpbmNsdWRlcyIsImVuZm9yY2VGcmVzaFNpbXVsYXRvckNyZWF0aW9uIiwicnVuT3B0cyIsInNjYWxlRmFjdG9yIiwiY29ubmVjdEhhcmR3YXJlS2V5Ym9hcmQiLCJwYXN0ZWJvYXJkQXV0b21hdGljU3luYyIsInNpbXVsYXRvclBhc3RlYm9hcmRBdXRvbWF0aWNTeW5jIiwiaXNIZWFkbGVzcyIsInRyYWNlUG9pbnRlciIsInNpbXVsYXRvclRyYWNlUG9pbnRlciIsImRldmljZVByZWZlcmVuY2VzIiwiU2ltdWxhdG9yV2luZG93Q2VudGVyIiwiaXNJbnRlZ2VyIiwic2ltdWxhdG9yU3RhcnR1cFRpbWVvdXQiLCJzdGFydHVwVGltZW91dCIsImlzU3RyaW5nIiwidG9VcHBlckNhc2UiLCJTaW11bGF0b3JXaW5kb3dPcmllbnRhdGlvbiIsIlNpbXVsYXRvcldpbmRvd1JvdGF0aW9uQW5nbGUiLCJydW4iLCJwbGF0Zm9ybU5hbWUiLCJpc1R2T1MiLCJQTEFURk9STV9OQU1FX1RWT1MiLCJQTEFURk9STV9OQU1FX0lPUyIsImxhdW5jaEFwcCIsIkFQUF9MQVVOQ0hfVElNRU9VVCIsImNoZWNrU3RhdHVzIiwicmVzcG9uc2UiLCJjdXJyZW50QXBwIiwiYnVuZGxlSUQiLCJwYXJzZUludCIsImlzQXJyYXkiLCJlbnYiLCJpc1BsYWluT2JqZWN0IiwibGFuZ3VhZ2UiLCJwdXNoIiwibG9jYWxlIiwid2RhQ2FwcyIsImF1dG9MYXVuY2giLCJhcmd1bWVudHMiLCJlbnZpcm9ubWVudCIsImV2ZW50bG9vcElkbGVEZWxheVNlYyIsIndkYUV2ZW50bG9vcElkbGVEZWxheSIsInNob3VsZFdhaXRGb3JRdWllc2NlbmNlIiwid2FpdEZvclF1aWVzY2VuY2UiLCJzaG91bGRVc2VUZXN0TWFuYWdlckZvclZpc2liaWxpdHlEZXRlY3Rpb24iLCJzaW1wbGVJc1Zpc2libGVDaGVjayIsIm1heFR5cGluZ0ZyZXF1ZW5jeSIsInNob3VsZFVzZVNpbmdsZXRvblRlc3RNYW5hZ2VyIiwid2FpdEZvcklkbGVUaW1lb3V0IiwiZWxlbWVudFJlc3BvbnNlRmllbGRzIiwiZGlzYWJsZUF1dG9tYXRpY1NjcmVlbnNob3RzIiwic2hvdWxkVGVybWluYXRlQXBwIiwiYXV0b0FjY2VwdEFsZXJ0cyIsImRlZmF1bHRBbGVydEFjdGlvbiIsImF1dG9EaXNtaXNzQWxlcnRzIiwiY2FwYWJpbGl0aWVzIiwiZmlyc3RNYXRjaCIsImFsd2F5c01hdGNoIiwicHJveHlBY3RpdmUiLCJnZXRQcm94eUF2b2lkTGlzdCIsImlzV2VidmlldyIsImNhblByb3h5IiwiaXNXZWJDb250ZXh0IiwidmFsaWRhdGVMb2NhdG9yU3RyYXRlZ3kiLCJzdHJhdGVneSIsInZhbGlkYXRlRGVzaXJlZENhcHMiLCJjb2VyY2VWZXJzaW9uIiwidmVyaWZ5UHJvY2Vzc0FyZ3VtZW50IiwiaXNOaWwiLCJrZXljaGFpblBhdGgiLCJrZXljaGFpblBhc3N3b3JkIiwiY29tbWFuZFRpbWVvdXRzIiwicHJvdG9jb2wiLCJob3N0IiwicGVybXMiLCJhZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkcyIsInBhcnNlQ2Fwc0FycmF5IiwidGltZW91dCIsImFwcFB1c2hUaW1lb3V0IiwibmV3U2ltdWxhdG9yIiwib3RoZXJBcHBzIiwiaW5zdGFsbE90aGVyQXBwcyIsImlvc0luc3RhbGxQYXVzZSIsInBhdXNlIiwiZGVsYXkiLCJvdGhlckFwcCIsImlzRW5hYmxlZCIsImlzQm9vbGVhbiIsImN1ck9yaWVudGF0aW9uIiwiX2dldENvbW1hbmRUaW1lb3V0IiwiY21kTmFtZSIsIkRFRkFVTFRfVElNRU9VVF9LRVkiLCJnZXRTZXNzaW9uIiwiZHJpdmVyU2Vzc2lvbiIsInNob3VsZEdldERldmljZUNhcHMiLCJpbmNsdWRlRGV2aWNlQ2Fwc1RvU2Vzc2lvbkluZm8iLCJkZXZpY2VDYXBzIiwic3RhdHVzQmFyU2l6ZSIsInNjYWxlIiwiZ2V0U2NyZWVuSW5mbyIsInBpeGVsUmF0aW8iLCJzdGF0QmFySGVpZ2h0IiwiaGVpZ2h0Iiwidmlld3BvcnRSZWN0IiwiZ2V0Vmlld3BvcnRSZWN0IiwicmVzZXQiLCJjbG9uZURlZXAiLCJzaHV0ZG93bkhhbmRsZXIiLCJyZXNldE9uVW5leHBlY3RlZFNodXRkb3duIiwicHJvdG90eXBlIiwiY29tbWFuZHMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBT0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsd0JBQXdCLEdBQUcscUJBQWpDO0FBQ0EsTUFBTUMsNEJBQTRCLEdBQUcsOEJBQXJDO0FBRUEsTUFBTUMsZ0JBQWdCLEdBQUcsd0JBQXpCO0FBQ0EsTUFBTUMsdUJBQXVCLEdBQUcsQ0FBaEM7QUFDQSxNQUFNQyw0QkFBNEIsR0FBRyxDQUFyQztBQUNBLE1BQU1DLHlCQUF5QixHQUFHLHlGQUFsQztBQUNBLE1BQU1DLDBCQUEwQixHQUFHLEtBQW5DO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUc7QUFDdkJDLEVBQUFBLFlBQVksRUFBRSxLQURTO0FBRXZCQyxFQUFBQSxrQkFBa0IsRUFBRSxLQUZHO0FBR3ZCQyxFQUFBQSxhQUFhLEVBQUUsS0FIUTtBQUl2QkMsRUFBQUEseUJBQXlCLEVBQUUsSUFKSjtBQUt2QkMsRUFBQUEseUJBQXlCLEVBQUUsWUFMSjtBQU92QkMsRUFBQUEsNEJBQTRCLEVBQUUsRUFQUDtBQVF2QkMsRUFBQUEsb0JBQW9CLEVBQUUsRUFSQztBQVN2QkMsRUFBQUEsaUJBQWlCLEVBQUUsQ0FUSTtBQVV2QkMsRUFBQUEsa0JBQWtCLEVBQUUsR0FWRztBQVl2QkMsRUFBQUEsWUFBWSxFQUFFO0FBWlMsQ0FBekI7QUFnQkEsTUFBTUMsc0JBQXNCLEdBQUcsSUFBSUMsa0JBQUosRUFBL0I7QUFH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dCB7IEJhc2VEcml2ZXIsIERldmljZVNldHRpbmdzIH0gZnJvbSAnYXBwaXVtLWJhc2UtZHJpdmVyJztcbmltcG9ydCB7IHV0aWwsIG1qcGVnIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB1cmwgZnJvbSAndXJsJztcbmltcG9ydCB7IFdlYkRyaXZlckFnZW50IH0gZnJvbSAnYXBwaXVtLXdlYmRyaXZlcmFnZW50JztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IHtcbiAgY3JlYXRlU2ltLCBnZXRFeGlzdGluZ1NpbSwgcnVuU2ltdWxhdG9yUmVzZXQsIGluc3RhbGxUb1NpbXVsYXRvcixcbiAgc2h1dGRvd25PdGhlclNpbXVsYXRvcnMsIHNodXRkb3duU2ltdWxhdG9yIH0gZnJvbSAnLi9zaW11bGF0b3ItbWFuYWdlbWVudCc7XG5pbXBvcnQgeyBnZXRTaW11bGF0b3IsIGluc3RhbGxTU0xDZXJ0LCBoYXNTU0xDZXJ0IH0gZnJvbSAnYXBwaXVtLWlvcy1zaW11bGF0b3InO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCwgcmV0cnkgfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBzZXR0aW5ncyBhcyBpb3NTZXR0aW5ncywgZGVmYXVsdFNlcnZlckNhcHMsIGFwcFV0aWxzIH0gZnJvbSAnYXBwaXVtLWlvcy1kcml2ZXInO1xuaW1wb3J0IHsgZGVzaXJlZENhcENvbnN0cmFpbnRzLCBQTEFURk9STV9OQU1FX0lPUywgUExBVEZPUk1fTkFNRV9UVk9TIH0gZnJvbSAnLi9kZXNpcmVkLWNhcHMnO1xuaW1wb3J0IGNvbW1hbmRzIGZyb20gJy4vY29tbWFuZHMvaW5kZXgnO1xuaW1wb3J0IHtcbiAgZGV0ZWN0VWRpZCwgZ2V0QW5kQ2hlY2tYY29kZVZlcnNpb24sIGdldEFuZENoZWNrSW9zU2RrVmVyc2lvbixcbiAgY2hlY2tBcHBQcmVzZW50LCBnZXREcml2ZXJJbmZvLFxuICBjbGVhclN5c3RlbUZpbGVzLCB0cmFuc2xhdGVEZXZpY2VOYW1lLCBub3JtYWxpemVDb21tYW5kVGltZW91dHMsXG4gIERFRkFVTFRfVElNRU9VVF9LRVksIG1hcmtTeXN0ZW1GaWxlc0ZvckNsZWFudXAsXG4gIHByaW50VXNlciwgcmVtb3ZlQWxsU2Vzc2lvbldlYlNvY2tldEhhbmRsZXJzLCB2ZXJpZnlBcHBsaWNhdGlvblBsYXRmb3JtLFxuICBub3JtYWxpemVQbGF0Zm9ybVZlcnNpb24sIGlzTG9jYWxIb3N0IH0gZnJvbSAnLi91dGlscyc7XG5pbXBvcnQge1xuICBnZXRDb25uZWN0ZWREZXZpY2VzLCBydW5SZWFsRGV2aWNlUmVzZXQsIGluc3RhbGxUb1JlYWxEZXZpY2UsXG4gIGdldFJlYWxEZXZpY2VPYmogfSBmcm9tICcuL3JlYWwtZGV2aWNlLW1hbmFnZW1lbnQnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IEFzeW5jTG9jayBmcm9tICdhc3luYy1sb2NrJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IElEQiBmcm9tICdhcHBpdW0taWRiJztcbmltcG9ydCBERVZJQ0VfQ09OTkVDVElPTlNfRkFDVE9SWSBmcm9tICcuL2RldmljZS1jb25uZWN0aW9ucy1mYWN0b3J5JztcblxuXG5jb25zdCBTSFVURE9XTl9PVEhFUl9GRUFUX05BTUUgPSAnc2h1dGRvd25fb3RoZXJfc2ltcyc7XG5jb25zdCBDVVNUT01JWkVfUkVTVUxUX0JVTkRQRV9QQVRIID0gJ2N1c3RvbWl6ZV9yZXN1bHRfYnVuZGxlX3BhdGgnO1xuXG5jb25zdCBTQUZBUklfQlVORExFX0lEID0gJ2NvbS5hcHBsZS5tb2JpbGVzYWZhcmknO1xuY29uc3QgV0RBX1NJTV9TVEFSVFVQX1JFVFJJRVMgPSAyO1xuY29uc3QgV0RBX1JFQUxfREVWX1NUQVJUVVBfUkVUUklFUyA9IDE7XG5jb25zdCBXREFfUkVBTF9ERVZfVFVUT1JJQUxfVVJMID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtLXhjdWl0ZXN0LWRyaXZlci9ibG9iL21hc3Rlci9kb2NzL3JlYWwtZGV2aWNlLWNvbmZpZy5tZCc7XG5jb25zdCBXREFfU1RBUlRVUF9SRVRSWV9JTlRFUlZBTCA9IDEwMDAwO1xuY29uc3QgREVGQVVMVF9TRVRUSU5HUyA9IHtcbiAgbmF0aXZlV2ViVGFwOiBmYWxzZSxcbiAgbmF0aXZlV2ViVGFwU3RyaWN0OiBmYWxzZSxcbiAgdXNlSlNPTlNvdXJjZTogZmFsc2UsXG4gIHNob3VsZFVzZUNvbXBhY3RSZXNwb25zZXM6IHRydWUsXG4gIGVsZW1lbnRSZXNwb25zZUF0dHJpYnV0ZXM6ICd0eXBlLGxhYmVsJyxcbiAgLy8gUmVhZCBodHRwczovL2dpdGh1Yi5jb20vYXBwaXVtL1dlYkRyaXZlckFnZW50L2Jsb2IvbWFzdGVyL1dlYkRyaXZlckFnZW50TGliL1V0aWxpdGllcy9GQkNvbmZpZ3VyYXRpb24ubSBmb3IgZm9sbG93aW5nIHNldHRpbmdzJyB2YWx1ZXNcbiAgbWpwZWdTZXJ2ZXJTY3JlZW5zaG90UXVhbGl0eTogMjUsXG4gIG1qcGVnU2VydmVyRnJhbWVyYXRlOiAxMCxcbiAgc2NyZWVuc2hvdFF1YWxpdHk6IDEsXG4gIG1qcGVnU2NhbGluZ0ZhY3RvcjogMTAwLFxuICAvLyBzZXQgYHJlZHVjZU1vdGlvbmAgdG8gYG51bGxgIHNvIHRoYXQgaXQgd2lsbCBiZSB2ZXJpZmllZCBidXQgc3RpbGwgc2V0IGVpdGhlciB0cnVlL2ZhbHNlXG4gIHJlZHVjZU1vdGlvbjogbnVsbCxcbn07XG4vLyBUaGlzIGxvY2sgYXNzdXJlcywgdGhhdCBlYWNoIGRyaXZlciBzZXNzaW9uIGRvZXMgbm90XG4vLyBhZmZlY3Qgc2hhcmVkIHJlc291cmNlcyBvZiB0aGUgb3RoZXIgcGFyYWxsZWwgc2Vzc2lvbnNcbmNvbnN0IFNIQVJFRF9SRVNPVVJDRVNfR1VBUkQgPSBuZXcgQXN5bmNMb2NrKCk7XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLXVzZWxlc3MtZXNjYXBlICovXG5jb25zdCBOT19QUk9YWV9OQVRJVkVfTElTVCA9IFtcbiAgWydERUxFVEUnLCAvd2luZG93L10sXG4gIFsnR0VUJywgL15cXC9zZXNzaW9uXFwvW15cXC9dKyQvXSxcbiAgWydHRVQnLCAvYWxlcnRfdGV4dC9dLFxuICBbJ0dFVCcsIC9hbGVydFxcL1teXFwvXSsvXSxcbiAgWydHRVQnLCAvYXBwaXVtL10sXG4gIFsnR0VUJywgL2F0dHJpYnV0ZS9dLFxuICBbJ0dFVCcsIC9jb250ZXh0L10sXG4gIFsnR0VUJywgL2xvY2F0aW9uL10sXG4gIFsnR0VUJywgL2xvZy9dLFxuICBbJ0dFVCcsIC9zY3JlZW5zaG90L10sXG4gIFsnR0VUJywgL3NpemUvXSxcbiAgWydHRVQnLCAvc291cmNlL10sXG4gIFsnR0VUJywgL3RpbWVvdXRzJC9dLFxuICBbJ0dFVCcsIC91cmwvXSxcbiAgWydHRVQnLCAvd2luZG93L10sXG4gIFsnUE9TVCcsIC9hY2NlcHRfYWxlcnQvXSxcbiAgWydQT1NUJywgL2FjdGlvbnMkL10sXG4gIFsnUE9TVCcsIC9hbGVydF90ZXh0L10sXG4gIFsnUE9TVCcsIC9hbGVydFxcL1teXFwvXSsvXSxcbiAgWydQT1NUJywgL2FwcGl1bS9dLFxuICBbJ1BPU1QnLCAvYXBwaXVtXFwvZGV2aWNlXFwvaXNfbG9ja2VkL10sXG4gIFsnUE9TVCcsIC9hcHBpdW1cXC9kZXZpY2VcXC9sb2NrL10sXG4gIFsnUE9TVCcsIC9hcHBpdW1cXC9kZXZpY2VcXC91bmxvY2svXSxcbiAgWydQT1NUJywgL2JhY2svXSxcbiAgWydQT1NUJywgL2NsZWFyL10sXG4gIFsnUE9TVCcsIC9jb250ZXh0L10sXG4gIFsnUE9TVCcsIC9kaXNtaXNzX2FsZXJ0L10sXG4gIFsnUE9TVCcsIC9lbGVtZW50XFwvYWN0aXZlL10sIC8vIE1KU09OV1AgZ2V0IGFjdGl2ZSBlbGVtZW50IHNob3VsZCBwcm94eVxuICBbJ1BPU1QnLCAvZWxlbWVudCQvXSxcbiAgWydQT1NUJywgL2VsZW1lbnRzJC9dLFxuICBbJ1BPU1QnLCAvZXhlY3V0ZS9dLFxuICBbJ1BPU1QnLCAva2V5cy9dLFxuICBbJ1BPU1QnLCAvbG9nL10sXG4gIFsnUE9TVCcsIC9tb3ZldG8vXSxcbiAgWydQT1NUJywgL3JlY2VpdmVfYXN5bmNfcmVzcG9uc2UvXSwgLy8gYWx3YXlzLCBpbiBjYXNlIGNvbnRleHQgc3dpdGNoZXMgd2hpbGUgd2FpdGluZ1xuICBbJ1BPU1QnLCAvc2Vzc2lvblxcL1teXFwvXStcXC9sb2NhdGlvbi9dLCAvLyBnZW8gbG9jYXRpb24sIGJ1dCBub3QgZWxlbWVudCBsb2NhdGlvblxuICBbJ1BPU1QnLCAvc2hha2UvXSxcbiAgWydQT1NUJywgL3RpbWVvdXRzL10sXG4gIFsnUE9TVCcsIC90b3VjaC9dLFxuICBbJ1BPU1QnLCAvdXJsL10sXG4gIFsnUE9TVCcsIC92YWx1ZS9dLFxuICBbJ1BPU1QnLCAvd2luZG93L10sXG4gIFsnREVMRVRFJywgL2Nvb2tpZS9dLFxuICBbJ0dFVCcsIC9jb29raWUvXSxcbiAgWydQT1NUJywgL2Nvb2tpZS9dLFxuXTtcbmNvbnN0IE5PX1BST1hZX1dFQl9MSVNUID0gW1xuICBbJ0dFVCcsIC9hdHRyaWJ1dGUvXSxcbiAgWydHRVQnLCAvZWxlbWVudC9dLFxuICBbJ0dFVCcsIC90ZXh0L10sXG4gIFsnR0VUJywgL3RpdGxlL10sXG4gIFsnUE9TVCcsIC9jbGVhci9dLFxuICBbJ1BPU1QnLCAvY2xpY2svXSxcbiAgWydQT1NUJywgL2VsZW1lbnQvXSxcbiAgWydQT1NUJywgL2ZvcndhcmQvXSxcbiAgWydQT1NUJywgL2ZyYW1lL10sXG4gIFsnUE9TVCcsIC9rZXlzL10sXG4gIFsnUE9TVCcsIC9yZWZyZXNoL10sXG5dLmNvbmNhdChOT19QUk9YWV9OQVRJVkVfTElTVCk7XG4vKiBlc2xpbnQtZW5hYmxlIG5vLXVzZWxlc3MtZXNjYXBlICovXG5cbmNvbnN0IE1FTU9JWkVEX0ZVTkNUSU9OUyA9IFtcbiAgJ2dldFN0YXR1c0JhckhlaWdodCcsXG4gICdnZXREZXZpY2VQaXhlbFJhdGlvJyxcbiAgJ2dldFNjcmVlbkluZm8nLFxuXTtcblxuY2xhc3MgWENVSVRlc3REcml2ZXIgZXh0ZW5kcyBCYXNlRHJpdmVyIHtcbiAgY29uc3RydWN0b3IgKG9wdHMgPSB7fSwgc2hvdWxkVmFsaWRhdGVDYXBzID0gdHJ1ZSkge1xuICAgIHN1cGVyKG9wdHMsIHNob3VsZFZhbGlkYXRlQ2Fwcyk7XG5cbiAgICB0aGlzLmRlc2lyZWRDYXBDb25zdHJhaW50cyA9IGRlc2lyZWRDYXBDb25zdHJhaW50cztcblxuICAgIHRoaXMubG9jYXRvclN0cmF0ZWdpZXMgPSBbXG4gICAgICAneHBhdGgnLFxuICAgICAgJ2lkJyxcbiAgICAgICduYW1lJyxcbiAgICAgICdjbGFzcyBuYW1lJyxcbiAgICAgICctaW9zIHByZWRpY2F0ZSBzdHJpbmcnLFxuICAgICAgJy1pb3MgY2xhc3MgY2hhaW4nLFxuICAgICAgJ2FjY2Vzc2liaWxpdHkgaWQnLFxuICAgICAgJ2NzcyBzZWxlY3RvcicsXG4gICAgXTtcbiAgICB0aGlzLndlYkxvY2F0b3JTdHJhdGVnaWVzID0gW1xuICAgICAgJ2xpbmsgdGV4dCcsXG4gICAgICAnY3NzIHNlbGVjdG9yJyxcbiAgICAgICd0YWcgbmFtZScsXG4gICAgICAnbGluayB0ZXh0JyxcbiAgICAgICdwYXJ0aWFsIGxpbmsgdGV4dCcsXG4gICAgXTtcbiAgICB0aGlzLnJlc2V0SW9zKCk7XG4gICAgdGhpcy5zZXR0aW5ncyA9IG5ldyBEZXZpY2VTZXR0aW5ncyhERUZBVUxUX1NFVFRJTkdTLCB0aGlzLm9uU2V0dGluZ3NVcGRhdGUuYmluZCh0aGlzKSk7XG4gICAgdGhpcy5sb2dzID0ge307XG5cbiAgICAvLyBtZW1vaXplIGZ1bmN0aW9ucyBoZXJlLCBzbyB0aGF0IHRoZXkgYXJlIGRvbmUgb24gYSBwZXItaW5zdGFuY2UgYmFzaXNcbiAgICBmb3IgKGNvbnN0IGZuIG9mIE1FTU9JWkVEX0ZVTkNUSU9OUykge1xuICAgICAgdGhpc1tmbl0gPSBfLm1lbW9pemUodGhpc1tmbl0pO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIG9uU2V0dGluZ3NVcGRhdGUgKGtleSwgdmFsdWUpIHtcbiAgICBpZiAoa2V5ICE9PSAnbmF0aXZlV2ViVGFwJyAmJiBrZXkgIT09ICduYXRpdmVXZWJUYXBTdHJpY3QnKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy9hcHBpdW0vc2V0dGluZ3MnLCAnUE9TVCcsIHtcbiAgICAgICAgc2V0dGluZ3M6IHtba2V5XTogdmFsdWV9XG4gICAgICB9KTtcbiAgICB9XG4gICAgdGhpcy5vcHRzW2tleV0gPSAhIXZhbHVlO1xuICB9XG5cbiAgcmVzZXRJb3MgKCkge1xuICAgIHRoaXMub3B0cyA9IHRoaXMub3B0cyB8fCB7fTtcbiAgICB0aGlzLndkYSA9IG51bGw7XG4gICAgdGhpcy5vcHRzLmRldmljZSA9IG51bGw7XG4gICAgdGhpcy5qd3BQcm94eUFjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSBudWxsO1xuICAgIHRoaXMuandwUHJveHlBdm9pZCA9IFtdO1xuICAgIHRoaXMuc2FmYXJpID0gZmFsc2U7XG4gICAgdGhpcy5jYWNoZWRXZGFTdGF0dXMgPSBudWxsO1xuXG4gICAgLy8gc29tZSB0aGluZ3MgdGhhdCBjb21tYW5kcyBpbXBvcnRlZCBmcm9tIGFwcGl1bS1pb3MtZHJpdmVyIG5lZWRcbiAgICB0aGlzLmN1cldlYkZyYW1lcyA9IFtdO1xuICAgIHRoaXMud2ViRWxlbWVudElkcyA9IFtdO1xuICAgIHRoaXMuX2N1cnJlbnRVcmwgPSBudWxsO1xuICAgIHRoaXMuY3VyQ29udGV4dCA9IG51bGw7XG4gICAgdGhpcy54Y29kZVZlcnNpb24gPSB7fTtcbiAgICB0aGlzLmNvbnRleHRzID0gW107XG4gICAgdGhpcy5pbXBsaWNpdFdhaXRNcyA9IDA7XG4gICAgdGhpcy5hc3luY2xpYldhaXRNcyA9IDA7XG4gICAgdGhpcy5wYWdlTG9hZE1zID0gNjAwMDtcbiAgICB0aGlzLmxhbmRzY2FwZVdlYkNvb3Jkc09mZnNldCA9IDA7XG4gICAgdGhpcy5yZW1vdGUgPSBudWxsO1xuICB9XG5cbiAgZ2V0IGRyaXZlckRhdGEgKCkge1xuICAgIC8vIFRPRE8gZmlsbCBvdXQgcmVzb3VyY2UgaW5mbyBoZXJlXG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgYXN5bmMgZ2V0U3RhdHVzICgpIHtcbiAgICBpZiAodHlwZW9mIHRoaXMuZHJpdmVySW5mbyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIHRoaXMuZHJpdmVySW5mbyA9IGF3YWl0IGdldERyaXZlckluZm8oKTtcbiAgICB9XG4gICAgbGV0IHN0YXR1cyA9IHtidWlsZDoge3ZlcnNpb246IHRoaXMuZHJpdmVySW5mby52ZXJzaW9ufX07XG4gICAgaWYgKHRoaXMuY2FjaGVkV2RhU3RhdHVzKSB7XG4gICAgICBzdGF0dXMud2RhID0gdGhpcy5jYWNoZWRXZGFTdGF0dXM7XG4gICAgfVxuICAgIHJldHVybiBzdGF0dXM7XG4gIH1cblxuICBhc3luYyBjcmVhdGVTZXNzaW9uICguLi5hcmdzKSB7XG4gICAgdGhpcy5saWZlY3ljbGVEYXRhID0ge307IC8vIHRoaXMgaXMgdXNlZCBmb3Iga2VlcGluZyB0cmFjayBvZiB0aGUgc3RhdGUgd2Ugc3RhcnQgc28gd2hlbiB3ZSBkZWxldGUgdGhlIHNlc3Npb24gd2UgY2FuIHB1dCB0aGluZ3MgYmFja1xuICAgIHRyeSB7XG4gICAgICAvLyBUT0RPIGFkZCB2YWxpZGF0aW9uIG9uIGNhcHNcbiAgICAgIGxldCBbc2Vzc2lvbklkLCBjYXBzXSA9IGF3YWl0IHN1cGVyLmNyZWF0ZVNlc3Npb24oLi4uYXJncyk7XG4gICAgICB0aGlzLm9wdHMuc2Vzc2lvbklkID0gc2Vzc2lvbklkO1xuXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0KCk7XG5cbiAgICAgIC8vIG1lcmdlIHNlcnZlciBjYXBhYmlsaXRpZXMgKyBkZXNpcmVkIGNhcGFiaWxpdGllc1xuICAgICAgY2FwcyA9IE9iamVjdC5hc3NpZ24oe30sIGRlZmF1bHRTZXJ2ZXJDYXBzLCBjYXBzKTtcbiAgICAgIC8vIHVwZGF0ZSB0aGUgdWRpZCB3aXRoIHdoYXQgaXMgYWN0dWFsbHkgdXNlZFxuICAgICAgY2Fwcy51ZGlkID0gdGhpcy5vcHRzLnVkaWQ7XG4gICAgICAvLyBlbnN1cmUgd2UgdHJhY2sgbmF0aXZlV2ViVGFwIGNhcGFiaWxpdHkgYXMgYSBzZXR0aW5nIGFzIHdlbGxcbiAgICAgIGlmIChfLmhhcyh0aGlzLm9wdHMsICduYXRpdmVXZWJUYXAnKSkge1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVNldHRpbmdzKHtuYXRpdmVXZWJUYXA6IHRoaXMub3B0cy5uYXRpdmVXZWJUYXB9KTtcbiAgICAgIH1cbiAgICAgIC8vIGVuc3VyZSB3ZSB0cmFjayBuYXRpdmVXZWJUYXBTdHJpY3QgY2FwYWJpbGl0eSBhcyBhIHNldHRpbmcgYXMgd2VsbFxuICAgICAgaWYgKF8uaGFzKHRoaXMub3B0cywgJ25hdGl2ZVdlYlRhcFN0cmljdCcpKSB7XG4gICAgICAgIGF3YWl0IHRoaXMudXBkYXRlU2V0dGluZ3Moe25hdGl2ZVdlYlRhcFN0cmljdDogdGhpcy5vcHRzLm5hdGl2ZVdlYlRhcFN0cmljdH0pO1xuICAgICAgfVxuICAgICAgLy8gZW5zdXJlIHdlIHRyYWNrIHVzZUpTT05Tb3VyY2UgY2FwYWJpbGl0eSBhcyBhIHNldHRpbmcgYXMgd2VsbFxuICAgICAgaWYgKF8uaGFzKHRoaXMub3B0cywgJ3VzZUpTT05Tb3VyY2UnKSkge1xuICAgICAgICBhd2FpdCB0aGlzLnVwZGF0ZVNldHRpbmdzKHt1c2VKU09OU291cmNlOiB0aGlzLm9wdHMudXNlSlNPTlNvdXJjZX0pO1xuICAgICAgfVxuXG4gICAgICBsZXQgd2RhU2V0dGluZ3MgPSB7XG4gICAgICAgIGVsZW1lbnRSZXNwb25zZUF0dHJpYnV0ZXM6IERFRkFVTFRfU0VUVElOR1MuZWxlbWVudFJlc3BvbnNlQXR0cmlidXRlcyxcbiAgICAgICAgc2hvdWxkVXNlQ29tcGFjdFJlc3BvbnNlczogREVGQVVMVF9TRVRUSU5HUy5zaG91bGRVc2VDb21wYWN0UmVzcG9uc2VzLFxuICAgICAgfTtcbiAgICAgIGlmIChfLmhhcyh0aGlzLm9wdHMsICdlbGVtZW50UmVzcG9uc2VBdHRyaWJ1dGVzJykpIHtcbiAgICAgICAgd2RhU2V0dGluZ3MuZWxlbWVudFJlc3BvbnNlQXR0cmlidXRlcyA9IHRoaXMub3B0cy5lbGVtZW50UmVzcG9uc2VBdHRyaWJ1dGVzO1xuICAgICAgfVxuICAgICAgaWYgKF8uaGFzKHRoaXMub3B0cywgJ3Nob3VsZFVzZUNvbXBhY3RSZXNwb25zZXMnKSkge1xuICAgICAgICB3ZGFTZXR0aW5ncy5zaG91bGRVc2VDb21wYWN0UmVzcG9uc2VzID0gdGhpcy5vcHRzLnNob3VsZFVzZUNvbXBhY3RSZXNwb25zZXM7XG4gICAgICB9XG4gICAgICBpZiAoXy5oYXModGhpcy5vcHRzLCAnbWpwZWdTZXJ2ZXJTY3JlZW5zaG90UXVhbGl0eScpKSB7XG4gICAgICAgIHdkYVNldHRpbmdzLm1qcGVnU2VydmVyU2NyZWVuc2hvdFF1YWxpdHkgPSB0aGlzLm9wdHMubWpwZWdTZXJ2ZXJTY3JlZW5zaG90UXVhbGl0eTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmhhcyh0aGlzLm9wdHMsICdtanBlZ1NlcnZlckZyYW1lcmF0ZScpKSB7XG4gICAgICAgIHdkYVNldHRpbmdzLm1qcGVnU2VydmVyRnJhbWVyYXRlID0gdGhpcy5vcHRzLm1qcGVnU2VydmVyRnJhbWVyYXRlO1xuICAgICAgfVxuICAgICAgaWYgKF8uaGFzKHRoaXMub3B0cywgJ3NjcmVlbnNob3RRdWFsaXR5JykpIHtcbiAgICAgICAgbG9nLmluZm8oYFNldHRpbmcgdGhlIHF1YWxpdHkgb2YgcGhvbmUgc2NyZWVuc2hvdDogJyR7dGhpcy5vcHRzLnNjcmVlbnNob3RRdWFsaXR5fSdgKTtcbiAgICAgICAgd2RhU2V0dGluZ3Muc2NyZWVuc2hvdFF1YWxpdHkgPSB0aGlzLm9wdHMuc2NyZWVuc2hvdFF1YWxpdHk7XG4gICAgICB9XG4gICAgICAvLyBlbnN1cmUgV0RBIGdldHMgb3VyIGRlZmF1bHRzIGluc3RlYWQgb2Ygd2hhdGV2ZXIgaXRzIG93biBtaWdodCBiZVxuICAgICAgYXdhaXQgdGhpcy51cGRhdGVTZXR0aW5ncyh3ZGFTZXR0aW5ncyk7XG5cbiAgICAgIC8vIHR1cm4gb24gbWpwZWcgc3RyZWFtIHJlYWRpbmcgaWYgcmVxdWVzdGVkXG4gICAgICBpZiAodGhpcy5vcHRzLm1qcGVnU2NyZWVuc2hvdFVybCkge1xuICAgICAgICBsb2cuaW5mbyhgU3RhcnRpbmcgTUpQRUcgc3RyZWFtIHJlYWRpbmcgVVJMOiAnJHt0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsfSdgKTtcbiAgICAgICAgdGhpcy5tanBlZ1N0cmVhbSA9IG5ldyBtanBlZy5NSnBlZ1N0cmVhbSh0aGlzLm9wdHMubWpwZWdTY3JlZW5zaG90VXJsKTtcbiAgICAgICAgYXdhaXQgdGhpcy5tanBlZ1N0cmVhbS5zdGFydCgpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIFtzZXNzaW9uSWQsIGNhcHNdO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy5lcnJvcihKU09OLnN0cmluZ2lmeShlKSk7XG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZVNlc3Npb24oKTtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnQgKCkge1xuICAgIHRoaXMub3B0cy5ub1Jlc2V0ID0gISF0aGlzLm9wdHMubm9SZXNldDtcbiAgICB0aGlzLm9wdHMuZnVsbFJlc2V0ID0gISF0aGlzLm9wdHMuZnVsbFJlc2V0O1xuXG4gICAgYXdhaXQgcHJpbnRVc2VyKCk7XG5cbiAgICB0aGlzLm9wdHMuaW9zU2RrVmVyc2lvbiA9IG51bGw7IC8vIEZvciBXREEgYW5kIHhjb2RlYnVpbGRcbiAgICBjb25zdCB7ZGV2aWNlLCB1ZGlkLCByZWFsRGV2aWNlfSA9IGF3YWl0IHRoaXMuZGV0ZXJtaW5lRGV2aWNlKCk7XG4gICAgbG9nLmluZm8oYERldGVybWluaW5nIGRldmljZSB0byBydW4gdGVzdHMgb246IHVkaWQ6ICcke3VkaWR9JywgcmVhbCBkZXZpY2U6ICR7cmVhbERldmljZX1gKTtcbiAgICB0aGlzLm9wdHMuZGV2aWNlID0gZGV2aWNlO1xuICAgIHRoaXMub3B0cy51ZGlkID0gdWRpZDtcbiAgICB0aGlzLm9wdHMucmVhbERldmljZSA9IHJlYWxEZXZpY2U7XG5cbiAgICBpZiAodGhpcy5vcHRzLnNpbXVsYXRvckRldmljZXNTZXRQYXRoKSB7XG4gICAgICBpZiAocmVhbERldmljZSkge1xuICAgICAgICBsb2cuaW5mbyhgVGhlICdzaW11bGF0b3JEZXZpY2VzU2V0UGF0aCcgY2FwYWJpbGl0eSBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgU2ltdWxhdG9yIGRldmljZXNgKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5pbmZvKGBTZXR0aW5nIHNpbXVsYXRvciBkZXZpY2VzIHNldCBwYXRoIHRvICcke3RoaXMub3B0cy5zaW11bGF0b3JEZXZpY2VzU2V0UGF0aH0nYCk7XG4gICAgICAgIHRoaXMub3B0cy5kZXZpY2UuZGV2aWNlc1NldFBhdGggPSB0aGlzLm9wdHMuc2ltdWxhdG9yRGV2aWNlc1NldFBhdGg7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gYXQgdGhpcyBwb2ludCBpZiB0aGVyZSBpcyBubyBwbGF0Zm9ybVZlcnNpb24sIGdldCBpdCBmcm9tIHRoZSBkZXZpY2VcbiAgICBpZiAoIXRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24gJiYgdGhpcy5vcHRzLmRldmljZSkge1xuICAgICAgdGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiA9IGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZ2V0UGxhdGZvcm1WZXJzaW9uKCk7XG4gICAgICBsb2cuaW5mbyhgTm8gcGxhdGZvcm1WZXJzaW9uIHNwZWNpZmllZC4gVXNpbmcgZGV2aWNlIHZlcnNpb246ICcke3RoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb259J2ApO1xuICAgIH1cblxuICAgIGNvbnN0IG5vcm1hbGl6ZWRWZXJzaW9uID0gbm9ybWFsaXplUGxhdGZvcm1WZXJzaW9uKHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24pO1xuICAgIGlmICh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uICE9PSBub3JtYWxpemVkVmVyc2lvbikge1xuICAgICAgbG9nLmluZm8oYE5vcm1hbGl6ZWQgcGxhdGZvcm1WZXJzaW9uIGNhcGFiaWxpdHkgdmFsdWUgJyR7dGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbn0nIHRvICcke25vcm1hbGl6ZWRWZXJzaW9ufSdgKTtcbiAgICAgIHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24gPSBub3JtYWxpemVkVmVyc2lvbjtcbiAgICB9XG4gICAgaWYgKHV0aWwuY29tcGFyZVZlcnNpb25zKHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24sICc8JywgJzkuMycpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYFBsYXRmb3JtIHZlcnNpb24gbXVzdCBiZSA5LjMgb3IgYWJvdmUuICcke3RoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb259JyBpcyBub3Qgc3VwcG9ydGVkLmApO1xuICAgIH1cblxuICAgIGlmIChfLmlzRW1wdHkodGhpcy54Y29kZVZlcnNpb24pICYmICghdGhpcy5vcHRzLndlYkRyaXZlckFnZW50VXJsIHx8ICF0aGlzLm9wdHMucmVhbERldmljZSkpIHtcbiAgICAgIC8vIG5vIGB3ZWJEcml2ZXJBZ2VudFVybGAsIG9yIG9uIGEgc2ltdWxhdG9yLCBzbyB3ZSBuZWVkIGFuIFhjb2RlIHZlcnNpb25cbiAgICAgIHRoaXMueGNvZGVWZXJzaW9uID0gYXdhaXQgZ2V0QW5kQ2hlY2tYY29kZVZlcnNpb24oKTtcbiAgICB9XG4gICAgdGhpcy5sb2dFdmVudCgneGNvZGVEZXRhaWxzUmV0cmlldmVkJyk7XG5cbiAgICBpZiAoXy50b0xvd2VyKHRoaXMub3B0cy5icm93c2VyTmFtZSkgPT09ICdzYWZhcmknKSB7XG4gICAgICBsb2cuaW5mbygnU2FmYXJpIHRlc3QgcmVxdWVzdGVkJyk7XG4gICAgICB0aGlzLnNhZmFyaSA9IHRydWU7XG4gICAgICB0aGlzLm9wdHMuYXBwID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5vcHRzLnByb2Nlc3NBcmd1bWVudHMgPSB0aGlzLm9wdHMucHJvY2Vzc0FyZ3VtZW50cyB8fCB7fTtcbiAgICAgIHRoaXMub3B0cy5idW5kbGVJZCA9IFNBRkFSSV9CVU5ETEVfSUQ7XG4gICAgICB0aGlzLl9jdXJyZW50VXJsID0gdGhpcy5vcHRzLnNhZmFyaUluaXRpYWxVcmwgfHwgKFxuICAgICAgICB0aGlzLmlzUmVhbERldmljZSgpXG4gICAgICAgICAgPyAnaHR0cDovL2FwcGl1bS5pbydcbiAgICAgICAgICA6IGBodHRwOi8vJHt0aGlzLm9wdHMuYWRkcmVzc306JHt0aGlzLm9wdHMucG9ydH0vd2VsY29tZWBcbiAgICAgICk7XG4gICAgICBpZiAodXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgJzwnLCAnMTIuMicpKSB7XG4gICAgICAgIC8vIHRoaXMgb3B0aW9uIGRvZXMgbm90IHdvcmsgb24gMTIuMiBhbmQgYWJvdmVcbiAgICAgICAgdGhpcy5vcHRzLnByb2Nlc3NBcmd1bWVudHMuYXJncyA9IFsnLXUnLCB0aGlzLl9jdXJyZW50VXJsXTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5hcHAgfHwgdGhpcy5vcHRzLmJ1bmRsZUlkKSB7XG4gICAgICBhd2FpdCB0aGlzLmNvbmZpZ3VyZUFwcCgpO1xuICAgIH1cbiAgICB0aGlzLmxvZ0V2ZW50KCdhcHBDb25maWd1cmVkJyk7XG5cbiAgICAvLyBmYWlsIHZlcnkgZWFybHkgaWYgdGhlIGFwcCBkb2Vzbid0IGFjdHVhbGx5IGV4aXN0XG4gICAgLy8gb3IgaWYgYnVuZGxlIGlkIGRvZXNuJ3QgcG9pbnQgdG8gYW4gaW5zdGFsbGVkIGFwcFxuICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICBhd2FpdCBjaGVja0FwcFByZXNlbnQodGhpcy5vcHRzLmFwcCk7XG5cbiAgICAgIGlmICghdGhpcy5vcHRzLmJ1bmRsZUlkKSB7XG4gICAgICAgIHRoaXMub3B0cy5idW5kbGVJZCA9IGF3YWl0IGFwcFV0aWxzLmV4dHJhY3RCdW5kbGVJZCh0aGlzLm9wdHMuYXBwKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLnJ1blJlc2V0KCk7XG5cbiAgICB0aGlzLndkYSA9IG5ldyBXZWJEcml2ZXJBZ2VudCh0aGlzLnhjb2RlVmVyc2lvbiwgdGhpcy5vcHRzKTtcbiAgICAvLyBEZXJpdmVkIGRhdGEgcGF0aCByZXRyaWV2YWwgaXMgYW4gZXhwZW5zaXZlIG9wZXJhdGlvblxuICAgIC8vIFdlIGNvdWxkIHN0YXJ0IHRoYXQgbm93IGluIGJhY2tncm91bmQgYW5kIGdldCB0aGUgY2FjaGVkIHJlc3VsdFxuICAgIC8vIHdoZW5ldmVyIGl0IGlzIG5lZWRlZFxuICAgIHRoaXMud2RhLnJldHJpZXZlRGVyaXZlZERhdGFQYXRoKCkuY2F0Y2goKGUpID0+IGxvZy5kZWJ1ZyhlKSk7XG5cbiAgICBjb25zdCBtZW1vaXplZExvZ0luZm8gPSBfLm1lbW9pemUoZnVuY3Rpb24gbG9nSW5mbyAoKSB7XG4gICAgICBsb2cuaW5mbyhcIidza2lwTG9nQ2FwdHVyZScgaXMgc2V0LiBTa2lwcGluZyBzdGFydGluZyBsb2dzIHN1Y2ggYXMgY3Jhc2gsIHN5c3RlbSwgc2FmYXJpIGNvbnNvbGUgYW5kIHNhZmFyaSBuZXR3b3JrLlwiKTtcbiAgICB9KTtcbiAgICBjb25zdCBzdGFydExvZ0NhcHR1cmUgPSBhc3luYyAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5vcHRzLnNraXBMb2dDYXB0dXJlKSB7XG4gICAgICAgIG1lbW9pemVkTG9nSW5mbygpO1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuc3RhcnRMb2dDYXB0dXJlKCk7XG4gICAgICBpZiAocmVzdWx0KSB7XG4gICAgICAgIHRoaXMubG9nRXZlbnQoJ2xvZ0NhcHR1cmVTdGFydGVkJyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgY29uc3QgaXNMb2dDYXB0dXJlU3RhcnRlZCA9IGF3YWl0IHN0YXJ0TG9nQ2FwdHVyZSgpO1xuXG4gICAgbG9nLmluZm8oYFNldHRpbmcgdXAgJHt0aGlzLmlzUmVhbERldmljZSgpID8gJ3JlYWwgZGV2aWNlJyA6ICdzaW11bGF0b3InfWApO1xuXG4gICAgaWYgKHRoaXMuaXNTaW11bGF0b3IoKSkge1xuICAgICAgaWYgKHRoaXMub3B0cy5zaHV0ZG93bk90aGVyU2ltdWxhdG9ycykge1xuICAgICAgICB0aGlzLmVuc3VyZUZlYXR1cmVFbmFibGVkKFNIVVRET1dOX09USEVSX0ZFQVRfTkFNRSk7XG4gICAgICAgIGF3YWl0IHNodXRkb3duT3RoZXJTaW11bGF0b3JzKHRoaXMub3B0cy5kZXZpY2UpO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGlzIHNob3VsZCBiZSBkb25lIGJlZm9yZSB0aGUgc2ltdWxhdG9yIGlzIHN0YXJ0ZWRcbiAgICAgIC8vIGlmIGl0IGlzIGFscmVhZHkgcnVubmluZywgdGhpcyBjYXAgd29uJ3Qgd29yaywgd2hpY2ggaXMgZG9jdW1lbnRlZFxuICAgICAgaWYgKHRoaXMuaXNTYWZhcmkoKSAmJiB0aGlzLm9wdHMuc2FmYXJpR2xvYmFsUHJlZmVyZW5jZXMpIHtcbiAgICAgICAgaWYgKGF3YWl0IHRoaXMub3B0cy5kZXZpY2UudXBkYXRlU2FmYXJpR2xvYmFsU2V0dGluZ3ModGhpcy5vcHRzLnNhZmFyaUdsb2JhbFByZWZlcmVuY2VzKSkge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgU2FmYXJpIGdsb2JhbCBwcmVmZXJlbmNlcyB1cGRhdGVkYCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2NhbENvbmZpZyA9IGF3YWl0IGlvc1NldHRpbmdzLnNldExvY2FsZUFuZFByZWZlcmVuY2VzKHRoaXMub3B0cy5kZXZpY2UsIHRoaXMub3B0cywgdGhpcy5pc1NhZmFyaSgpLCBhc3luYyAoc2ltKSA9PiB7XG4gICAgICAgIGF3YWl0IHNodXRkb3duU2ltdWxhdG9yKHNpbSk7XG5cbiAgICAgICAgLy8gd2UgZG9uJ3Qga25vdyBpZiB0aGVyZSBuZWVkcyB0byBiZSBjaGFuZ2VzIGEgcHJpb3JpLCBzbyBjaGFuZ2UgZmlyc3QuXG4gICAgICAgIC8vIHNvbWV0aW1lcyB0aGUgc2h1dGRvd24gcHJvY2VzcyBjaGFuZ2VzIHRoZSBzZXR0aW5ncywgc28gcmVzZXQgdGhlbSxcbiAgICAgICAgLy8ga25vd2luZyB0aGF0IHRoZSBzaW0gaXMgYWxyZWFkeSBzaHV0XG4gICAgICAgIGF3YWl0IGlvc1NldHRpbmdzLnNldExvY2FsZUFuZFByZWZlcmVuY2VzKHNpbSwgdGhpcy5vcHRzLCB0aGlzLmlzU2FmYXJpKCkpO1xuICAgICAgfSk7XG5cbiAgICAgIGlmICh0aGlzLm9wdHMuY3VzdG9tU1NMQ2VydCkge1xuICAgICAgICBjb25zdCBjZXJ0SGVhZCA9IF8udHJ1bmNhdGUodGhpcy5vcHRzLmN1c3RvbVNTTENlcnQsIHtsZW5ndGg6IDIwfSk7XG4gICAgICAgIGxvZy5pbmZvKGBJbnN0YWxsaW5nIHRoZSBjdXN0b20gU1NMIGNlcnRpZmljYXRlICcke2NlcnRIZWFkfSdgKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnNpbWN0bC5hZGRSb290Q2VydGlmaWNhdGUodGhpcy5vcHRzLmN1c3RvbVNTTENlcnQsIHtyYXc6IHRydWV9KTtcbiAgICAgICAgfSBjYXRjaCAoaWduKSB7XG4gICAgICAgICAgaWYgKGF3YWl0IGhhc1NTTENlcnQodGhpcy5vcHRzLmN1c3RvbVNTTENlcnQsIHRoaXMub3B0cy51ZGlkKSkge1xuICAgICAgICAgICAgbG9nLmluZm8oYFNTTCBjZXJ0aWZpY2F0ZSAnJHtjZXJ0SGVhZH0nIGFscmVhZHkgaW5zdGFsbGVkYCk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGxvZy5pbmZvKGBNYWtpbmcgc3VyZSBTaW11bGF0b3IgaXMgc2h1dCBkb3duLCAnICtcbiAgICAgICAgICAgICAgJ3NvIHRoYXQgU1NMIGNlcnRpZmljYXRlIGluc3RhbGxhdGlvbiB0YWtlcyBlZmZlY3RgKTtcbiAgICAgICAgICAgIGF3YWl0IHNodXRkb3duU2ltdWxhdG9yKHRoaXMub3B0cy5kZXZpY2UpO1xuICAgICAgICAgICAgYXdhaXQgaW5zdGFsbFNTTENlcnQodGhpcy5vcHRzLmN1c3RvbVNTTENlcnQsIHRoaXMub3B0cy51ZGlkKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5sb2dFdmVudCgnY3VzdG9tQ2VydEluc3RhbGxlZCcpO1xuICAgICAgfVxuXG4gICAgICBhd2FpdCB0aGlzLnN0YXJ0U2ltKCk7XG5cbiAgICAgIGlmICh0aGlzLm9wdHMubGF1bmNoV2l0aElEQiAmJiB0aGlzLmlzU2ltdWxhdG9yKCkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBpZGIgPSBuZXcgSURCKHt1ZGlkfSk7XG4gICAgICAgICAgYXdhaXQgaWRiLmNvbm5lY3QoKTtcbiAgICAgICAgICB0aGlzLm9wdHMuZGV2aWNlLmlkYiA9IGlkYjtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGxvZy5pbmZvKGBpZGIgd2lsbCBub3QgYmUgdXNlZCBmb3IgU2ltdWxhdG9yIGludGVyYWN0aW9uLiBPcmlnaW5hbCBlcnJvcjogJHtlLm1lc3NhZ2V9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2dFdmVudCgnc2ltU3RhcnRlZCcpO1xuICAgICAgaWYgKCFpc0xvZ0NhcHR1cmVTdGFydGVkKSB7XG4gICAgICAgIC8vIFJldHJ5IGxvZyBjYXB0dXJlIGlmIFNpbXVsYXRvciB3YXMgbm90IHJ1bm5pbmcgYmVmb3JlXG4gICAgICAgIGF3YWl0IHN0YXJ0TG9nQ2FwdHVyZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMuYXBwKSB7XG4gICAgICBhd2FpdCB0aGlzLmluc3RhbGxBVVQoKTtcbiAgICAgIHRoaXMubG9nRXZlbnQoJ2FwcEluc3RhbGxlZCcpO1xuICAgIH1cblxuICAgIC8vIGlmIHdlIG9ubHkgaGF2ZSBidW5kbGUgaWRlbnRpZmllciBhbmQgbm8gYXBwLCBmYWlsIGlmIGl0IGlzIG5vdCBhbHJlYWR5IGluc3RhbGxlZFxuICAgIGlmICghdGhpcy5vcHRzLmFwcCAmJiB0aGlzLm9wdHMuYnVuZGxlSWQgJiYgIXRoaXMuc2FmYXJpKSB7XG4gICAgICBpZiAoIWF3YWl0IHRoaXMub3B0cy5kZXZpY2UuaXNBcHBJbnN0YWxsZWQodGhpcy5vcHRzLmJ1bmRsZUlkKSkge1xuICAgICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgQXBwIHdpdGggYnVuZGxlIGlkZW50aWZpZXIgJyR7dGhpcy5vcHRzLmJ1bmRsZUlkfScgdW5rbm93bmApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdHMucGVybWlzc2lvbnMpIHtcbiAgICAgIGlmICh0aGlzLmlzU2ltdWxhdG9yKCkpIHtcbiAgICAgICAgbG9nLmRlYnVnKCdTZXR0aW5nIHRoZSByZXF1ZXN0ZWQgcGVybWlzc2lvbnMgYmVmb3JlIFdEQSBpcyBzdGFydGVkJyk7XG4gICAgICAgIGZvciAoY29uc3QgW2J1bmRsZUlkLCBwZXJtaXNzaW9uc01hcHBpbmddIG9mIF8udG9QYWlycyhKU09OLnBhcnNlKHRoaXMub3B0cy5wZXJtaXNzaW9ucykpKSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5zZXRQZXJtaXNzaW9ucyhidW5kbGVJZCwgcGVybWlzc2lvbnNNYXBwaW5nKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbG9nLndhcm4oJ1NldHRpbmcgcGVybWlzc2lvbnMgaXMgb25seSBzdXBwb3J0ZWQgb24gU2ltdWxhdG9yLiAnICtcbiAgICAgICAgICAnVGhlIFwicGVybWlzc2lvbnNcIiBjYXBhYmlsaXR5IHdpbGwgYmUgaWdub3JlZC4nKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc1NpbXVsYXRvcigpKSB7XG4gICAgICBpZiAodGhpcy5vcHRzLmNhbGVuZGFyQWNjZXNzQXV0aG9yaXplZCkge1xuICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLmVuYWJsZUNhbGVuZGFyQWNjZXNzKHRoaXMub3B0cy5idW5kbGVJZCk7XG4gICAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5jYWxlbmRhckFjY2Vzc0F1dGhvcml6ZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIGF3YWl0IHRoaXMub3B0cy5kZXZpY2UuZGlzYWJsZUNhbGVuZGFyQWNjZXNzKHRoaXMub3B0cy5idW5kbGVJZCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5zdGFydFdkYSh0aGlzLm9wdHMuc2Vzc2lvbklkLCByZWFsRGV2aWNlKTtcblxuICAgIGF3YWl0IHRoaXMuc2V0UmVkdWNlTW90aW9uKHRoaXMub3B0cy5yZWR1Y2VNb3Rpb24pO1xuXG4gICAgYXdhaXQgdGhpcy5zZXRJbml0aWFsT3JpZW50YXRpb24odGhpcy5vcHRzLm9yaWVudGF0aW9uKTtcbiAgICB0aGlzLmxvZ0V2ZW50KCdvcmllbnRhdGlvblNldCcpO1xuXG4gICAgLy8gcmVhbCBkZXZpY2VzIHdpbGwgYmUgaGFuZGxlZCBsYXRlciwgYWZ0ZXIgdGhlIHdlYiBjb250ZXh0IGhhcyBiZWVuIGluaXRpYWxpemVkXG4gICAgaWYgKHRoaXMuaXNTYWZhcmkoKSAmJiAhdGhpcy5pc1JlYWxEZXZpY2UoKVxuICAgICAgJiYgdXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgJz49JywgJzEyLjInKSkge1xuICAgICAgLy8gb24gMTIuMiB0aGUgcGFnZSBpcyBub3Qgb3BlbmVkIGluIFdEQVxuICAgICAgYXdhaXQgdGhpcy5vcHRzLmRldmljZS5vcGVuVXJsKHRoaXMuX2N1cnJlbnRVcmwpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2FmYXJpKCkgfHwgdGhpcy5vcHRzLmF1dG9XZWJ2aWV3KSB7XG4gICAgICBsb2cuZGVidWcoJ1dhaXRpbmcgZm9yIGluaXRpYWwgd2VidmlldycpO1xuICAgICAgYXdhaXQgdGhpcy5uYXZUb0luaXRpYWxXZWJ2aWV3KCk7XG4gICAgICB0aGlzLmxvZ0V2ZW50KCdpbml0aWFsV2Vidmlld05hdmlnYXRlZCcpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2FmYXJpKCkgJiYgdGhpcy5pc1JlYWxEZXZpY2UoKSAmJiB1dGlsLmNvbXBhcmVWZXJzaW9ucyh0aGlzLm9wdHMucGxhdGZvcm1WZXJzaW9uLCAnPj0nLCAnMTIuMicpKSB7XG4gICAgICAvLyBvbiAxMi4yIHRoZSBwYWdlIGlzIG5vdCBvcGVuZWQgaW4gV0RBXG4gICAgICBhd2FpdCB0aGlzLnNldFVybCh0aGlzLl9jdXJyZW50VXJsKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU3RhcnQgV2ViRHJpdmVyQWdlbnRSdW5uZXJcbiAgICogQHBhcmFtIHtzdHJpbmd9IHNlc3Npb25JZCAtIFRoZSBpZCBvZiB0aGUgdGFyZ2V0IHNlc3Npb24gdG8gbGF1bmNoIFdEQSB3aXRoLlxuICAgKiBAcGFyYW0ge2Jvb2xlYW59IHJlYWxEZXZpY2UgLSBFcXVhbHMgdG8gdHJ1ZSBpZiB0aGUgdGVzdCB0YXJnZXQgZGV2aWNlIGlzIGEgcmVhbCBkZXZpY2UuXG4gICAqL1xuICBhc3luYyBzdGFydFdkYSAoc2Vzc2lvbklkLCByZWFsRGV2aWNlKSB7XG4gICAgLy8gRG9uJ3QgY2xlYW51cCB0aGUgcHJvY2Vzc2VzIGlmIHdlYkRyaXZlckFnZW50VXJsIGlzIHNldFxuICAgIGlmICghdXRpbC5oYXNWYWx1ZSh0aGlzLndkYS53ZWJEcml2ZXJBZ2VudFVybCkpIHtcbiAgICAgIGF3YWl0IHRoaXMud2RhLmNsZWFudXBPYnNvbGV0ZVByb2Nlc3NlcygpO1xuICAgIH1cblxuICAgIGNvbnN0IHVzZVBvcnRGb3J3YXJkaW5nID0gdGhpcy5pc1JlYWxEZXZpY2UoKVxuICAgICAgJiYgIXRoaXMud2RhLndlYkRyaXZlckFnZW50VXJsXG4gICAgICAmJiBpc0xvY2FsSG9zdCh0aGlzLndkYS53ZGFCYXNlVXJsKTtcbiAgICBhd2FpdCBERVZJQ0VfQ09OTkVDVElPTlNfRkFDVE9SWS5yZXF1ZXN0Q29ubmVjdGlvbih0aGlzLm9wdHMudWRpZCwgdGhpcy53ZGEudXJsLnBvcnQsIHtcbiAgICAgIGRldmljZVBvcnQ6IHVzZVBvcnRGb3J3YXJkaW5nID8gdGhpcy53ZGEud2RhUmVtb3RlUG9ydCA6IG51bGwsXG4gICAgICB1c2VQb3J0Rm9yd2FyZGluZyxcbiAgICB9KTtcblxuICAgIC8vIExldCBtdWx0aXBsZSBXREEgYmluYXJpZXMgd2l0aCBkaWZmZXJlbnQgZGVyaXZlZCBkYXRhIGZvbGRlcnMgYmUgYnVpbHQgaW4gcGFyYWxsZWxcbiAgICAvLyBDb25jdXJyZW50IFdEQSBidWlsZHMgZnJvbSB0aGUgc2FtZSBzb3VyY2Ugd2lsbCBjYXVzZSB4Y29kZWJ1aWxkIHN5bmNocm9uaXphdGlvbiBlcnJvcnNcbiAgICBsZXQgc3luY2hyb25pemF0aW9uS2V5ID0gWENVSVRlc3REcml2ZXIubmFtZTtcbiAgICBpZiAodGhpcy5vcHRzLnVzZVhjdGVzdHJ1bkZpbGUgfHwgIShhd2FpdCB0aGlzLndkYS5pc1NvdXJjZUZyZXNoKCkpKSB7XG4gICAgICAvLyBGaXJzdC10aW1lIGNvbXBpbGF0aW9uIGlzIGFuIGV4cGVuc2l2ZSBvcGVyYXRpb24sIHdoaWNoIGlzIGRvbmUgZmFzdGVyIGlmIGV4ZWN1dGVkXG4gICAgICAvLyBzZXF1ZW50aWFsbHkuIFhjb2RlYnVpbGQgc3ByZWFkcyB0aGUgbG9hZCBjYXVzZWQgYnkgdGhlIGNsYW5nIGNvbXBpbGVyIHRvIGFsbCBhdmFpbGFibGUgQ1BVIGNvcmVzXG4gICAgICBjb25zdCBkZXJpdmVkRGF0YVBhdGggPSBhd2FpdCB0aGlzLndkYS5yZXRyaWV2ZURlcml2ZWREYXRhUGF0aCgpO1xuICAgICAgaWYgKGRlcml2ZWREYXRhUGF0aCkge1xuICAgICAgICBzeW5jaHJvbml6YXRpb25LZXkgPSBwYXRoLm5vcm1hbGl6ZShkZXJpdmVkRGF0YVBhdGgpO1xuICAgICAgfVxuICAgIH1cbiAgICBsb2cuZGVidWcoYFN0YXJ0aW5nIFdlYkRyaXZlckFnZW50IGluaXRpYWxpemF0aW9uIHdpdGggdGhlIHN5bmNocm9uaXphdGlvbiBrZXkgJyR7c3luY2hyb25pemF0aW9uS2V5fSdgKTtcbiAgICBpZiAoU0hBUkVEX1JFU09VUkNFU19HVUFSRC5pc0J1c3koKSAmJiAhdGhpcy5vcHRzLmRlcml2ZWREYXRhUGF0aCAmJiAhdGhpcy5vcHRzLmJvb3RzdHJhcFBhdGgpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgQ29uc2lkZXIgc2V0dGluZyBhIHVuaXF1ZSAnZGVyaXZlZERhdGFQYXRoJyBjYXBhYmlsaXR5IHZhbHVlIGZvciBlYWNoIHBhcmFsbGVsIGRyaXZlciBpbnN0YW5jZSBgICtcbiAgICAgICAgYHRvIGF2b2lkIGNvbmZsaWN0cyBhbmQgc3BlZWQgdXAgdGhlIGJ1aWxkaW5nIHByb2Nlc3NgKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IFNIQVJFRF9SRVNPVVJDRVNfR1VBUkQuYWNxdWlyZShzeW5jaHJvbml6YXRpb25LZXksIGFzeW5jICgpID0+IHtcbiAgICAgIGlmICh0aGlzLm9wdHMudXNlTmV3V0RBKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgQ2FwYWJpbGl0eSAndXNlTmV3V0RBJyBzZXQgdG8gdHJ1ZSwgc28gdW5pbnN0YWxsaW5nIFdEQSBiZWZvcmUgcHJvY2VlZGluZ2ApO1xuICAgICAgICBhd2FpdCB0aGlzLndkYS5xdWl0QW5kVW5pbnN0YWxsKCk7XG4gICAgICAgIHRoaXMubG9nRXZlbnQoJ3dkYVVuaW5zdGFsbGVkJyk7XG4gICAgICB9IGVsc2UgaWYgKCF1dGlsLmhhc1ZhbHVlKHRoaXMud2RhLndlYkRyaXZlckFnZW50VXJsKSkge1xuICAgICAgICBhd2FpdCB0aGlzLndkYS5zZXR1cENhY2hpbmcoKTtcbiAgICAgIH1cblxuICAgICAgLy8gbG9jYWwgaGVscGVyIGZvciB0aGUgdHdvIHBsYWNlcyB3ZSBuZWVkIHRvIHVuaW5zdGFsbCB3ZGEgYW5kIHJlLXN0YXJ0IGl0XG4gICAgICBjb25zdCBxdWl0QW5kVW5pbnN0YWxsID0gYXN5bmMgKG1zZykgPT4ge1xuICAgICAgICBsb2cuZGVidWcobXNnKTtcbiAgICAgICAgaWYgKHRoaXMub3B0cy53ZWJEcml2ZXJBZ2VudFVybCkge1xuICAgICAgICAgIGxvZy5kZWJ1ZygnTm90IHF1aXR0aW5nL3VuaW5zdGFsbGluZyBXZWJEcml2ZXJBZ2VudCBzaW5jZSB3ZWJEcml2ZXJBZ2VudFVybCBjYXBhYmlsaXR5IGlzIHByb3ZpZGVkJyk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICAgIH1cbiAgICAgICAgbG9nLndhcm4oJ1F1aXR0aW5nIGFuZCB1bmluc3RhbGxpbmcgV2ViRHJpdmVyQWdlbnQnKTtcbiAgICAgICAgYXdhaXQgdGhpcy53ZGEucXVpdEFuZFVuaW5zdGFsbCgpO1xuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihtc2cpO1xuICAgICAgfTtcblxuICAgICAgLy8gVXNlZCBpbiB0aGUgZm9sbG93aW5nIFdEQSBidWlsZFxuICAgICAgaWYgKHRoaXMub3B0cy5yZXN1bHRCdW5kbGVQYXRoKSB7XG4gICAgICAgIHRoaXMuZW5zdXJlRmVhdHVyZUVuYWJsZWQoQ1VTVE9NSVpFX1JFU1VMVF9CVU5EUEVfUEFUSCk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHN0YXJ0dXBSZXRyaWVzID0gdGhpcy5vcHRzLndkYVN0YXJ0dXBSZXRyaWVzIHx8ICh0aGlzLmlzUmVhbERldmljZSgpID8gV0RBX1JFQUxfREVWX1NUQVJUVVBfUkVUUklFUyA6IFdEQV9TSU1fU1RBUlRVUF9SRVRSSUVTKTtcbiAgICAgIGNvbnN0IHN0YXJ0dXBSZXRyeUludGVydmFsID0gdGhpcy5vcHRzLndkYVN0YXJ0dXBSZXRyeUludGVydmFsIHx8IFdEQV9TVEFSVFVQX1JFVFJZX0lOVEVSVkFMO1xuICAgICAgbG9nLmRlYnVnKGBUcnlpbmcgdG8gc3RhcnQgV2ViRHJpdmVyQWdlbnQgJHtzdGFydHVwUmV0cmllc30gdGltZXMgd2l0aCAke3N0YXJ0dXBSZXRyeUludGVydmFsfW1zIGludGVydmFsYCk7XG4gICAgICBpZiAoIXV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLndkYVN0YXJ0dXBSZXRyaWVzKSAmJiAhdXRpbC5oYXNWYWx1ZSh0aGlzLm9wdHMud2RhU3RhcnR1cFJldHJ5SW50ZXJ2YWwpKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgVGhlc2UgdmFsdWVzIGNhbiBiZSBjdXN0b21pemVkIGJ5IGNoYW5naW5nIHdkYVN0YXJ0dXBSZXRyaWVzL3dkYVN0YXJ0dXBSZXRyeUludGVydmFsIGNhcGFiaWxpdGllc2ApO1xuICAgICAgfVxuICAgICAgbGV0IHJldHJ5Q291bnQgPSAwO1xuICAgICAgYXdhaXQgcmV0cnlJbnRlcnZhbChzdGFydHVwUmV0cmllcywgc3RhcnR1cFJldHJ5SW50ZXJ2YWwsIGFzeW5jICgpID0+IHtcbiAgICAgICAgdGhpcy5sb2dFdmVudCgnd2RhU3RhcnRBdHRlbXB0ZWQnKTtcbiAgICAgICAgaWYgKHJldHJ5Q291bnQgPiAwKSB7XG4gICAgICAgICAgbG9nLmluZm8oYFJldHJ5aW5nIFdEQSBzdGFydHVwICgke3JldHJ5Q291bnQgKyAxfSBvZiAke3N0YXJ0dXBSZXRyaWVzfSlgKTtcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgIC8vIG9uIHhjb2RlIDEwIGluc3RhbGxkIHdpbGwgb2Z0ZW4gdHJ5IHRvIGFjY2VzcyB0aGUgYXBwIGZyb20gaXRzIHN0YWdpbmdcbiAgICAgICAgICAvLyBkaXJlY3RvcnkgYmVmb3JlIGZ1bGx5IG1vdmluZyBpdCB0aGVyZSwgYW5kIGZhaWwuIFJldHJ5aW5nIG9uY2VcbiAgICAgICAgICAvLyBpbW1lZGlhdGVseSBoZWxwc1xuICAgICAgICAgIGNvbnN0IHJldHJpZXMgPSB0aGlzLnhjb2RlVmVyc2lvbi5tYWpvciA+PSAxMCA/IDIgOiAxO1xuICAgICAgICAgIHRoaXMuY2FjaGVkV2RhU3RhdHVzID0gYXdhaXQgcmV0cnkocmV0cmllcywgdGhpcy53ZGEubGF1bmNoLmJpbmQodGhpcy53ZGEpLCBzZXNzaW9uSWQsIHJlYWxEZXZpY2UpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICB0aGlzLmxvZ0V2ZW50KCd3ZGFTdGFydEZhaWxlZCcpO1xuICAgICAgICAgIHJldHJ5Q291bnQrKztcbiAgICAgICAgICBsZXQgZXJyb3JNc2cgPSBgVW5hYmxlIHRvIGxhdW5jaCBXZWJEcml2ZXJBZ2VudCBiZWNhdXNlIG9mIHhjb2RlYnVpbGQgZmFpbHVyZTogJHtlcnIubWVzc2FnZX1gO1xuICAgICAgICAgIGlmICh0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgICAgICAgICBlcnJvck1zZyArPSBgLiBNYWtlIHN1cmUgeW91IGZvbGxvdyB0aGUgdHV0b3JpYWwgYXQgJHtXREFfUkVBTF9ERVZfVFVUT1JJQUxfVVJMfS4gYCArXG4gICAgICAgICAgICAgICAgICAgICAgICBgVHJ5IHRvIHJlbW92ZSB0aGUgV2ViRHJpdmVyQWdlbnRSdW5uZXIgYXBwbGljYXRpb24gZnJvbSB0aGUgZGV2aWNlIGlmIGl0IGlzIGluc3RhbGxlZCBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBhbmQgcmVib290IHRoZSBkZXZpY2UuYDtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgcXVpdEFuZFVuaW5zdGFsbChlcnJvck1zZyk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy53ZGEucHJveHlSZXFSZXMuYmluZCh0aGlzLndkYSk7XG4gICAgICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSB0cnVlO1xuXG4gICAgICAgIGxldCBvcmlnaW5hbFN0YWNrdHJhY2UgPSBudWxsO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwoMTUsIDEwMDAsIGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMubG9nRXZlbnQoJ3dkYVNlc3Npb25BdHRlbXB0ZWQnKTtcbiAgICAgICAgICAgIGxvZy5kZWJ1ZygnU2VuZGluZyBjcmVhdGVTZXNzaW9uIGNvbW1hbmQgdG8gV0RBJyk7XG4gICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICB0aGlzLmNhY2hlZFdkYVN0YXR1cyA9IHRoaXMuY2FjaGVkV2RhU3RhdHVzIHx8IGF3YWl0IHRoaXMucHJveHlDb21tYW5kKCcvc3RhdHVzJywgJ0dFVCcpO1xuICAgICAgICAgICAgICBhd2FpdCB0aGlzLnN0YXJ0V2RhU2Vzc2lvbih0aGlzLm9wdHMuYnVuZGxlSWQsIHRoaXMub3B0cy5wcm9jZXNzQXJndW1lbnRzKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgICBvcmlnaW5hbFN0YWNrdHJhY2UgPSBlcnIuc3RhY2s7XG4gICAgICAgICAgICAgIGxvZy5kZWJ1ZyhgRmFpbGVkIHRvIGNyZWF0ZSBXREEgc2Vzc2lvbiAoJHtlcnIubWVzc2FnZX0pLiBSZXRyeWluZy4uLmApO1xuICAgICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5sb2dFdmVudCgnd2RhU2Vzc2lvblN0YXJ0ZWQnKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgaWYgKG9yaWdpbmFsU3RhY2t0cmFjZSkge1xuICAgICAgICAgICAgbG9nLmRlYnVnKG9yaWdpbmFsU3RhY2t0cmFjZSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGxldCBlcnJvck1zZyA9IGBVbmFibGUgdG8gc3RhcnQgV2ViRHJpdmVyQWdlbnQgc2Vzc2lvbiBiZWNhdXNlIG9mIHhjb2RlYnVpbGQgZmFpbHVyZTogJHtlcnIubWVzc2FnZX1gO1xuICAgICAgICAgIGlmICh0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgICAgICAgICBlcnJvck1zZyArPSBgIE1ha2Ugc3VyZSB5b3UgZm9sbG93IHRoZSB0dXRvcmlhbCBhdCAke1dEQV9SRUFMX0RFVl9UVVRPUklBTF9VUkx9LiBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgIGBUcnkgdG8gcmVtb3ZlIHRoZSBXZWJEcml2ZXJBZ2VudFJ1bm5lciBhcHBsaWNhdGlvbiBmcm9tIHRoZSBkZXZpY2UgaWYgaXQgaXMgaW5zdGFsbGVkIGAgK1xuICAgICAgICAgICAgICAgICAgICAgICAgYGFuZCByZWJvb3QgdGhlIGRldmljZS5gO1xuICAgICAgICAgIH1cbiAgICAgICAgICBhd2FpdCBxdWl0QW5kVW5pbnN0YWxsKGVycm9yTXNnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm9wdHMuY2xlYXJTeXN0ZW1GaWxlcyAmJiAhdGhpcy5vcHRzLndlYkRyaXZlckFnZW50VXJsKSB7XG4gICAgICAgICAgYXdhaXQgbWFya1N5c3RlbUZpbGVzRm9yQ2xlYW51cCh0aGlzLndkYSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyB3ZSBleHBlY3QgY2VydGFpbiBzb2NrZXQgZXJyb3JzIHVudGlsIHRoaXMgcG9pbnQsIGJ1dCBub3dcbiAgICAgICAgLy8gbWFyayB0aGluZ3MgYXMgZnVsbHkgd29ya2luZ1xuICAgICAgICB0aGlzLndkYS5mdWxseVN0YXJ0ZWQgPSB0cnVlO1xuICAgICAgICB0aGlzLmxvZ0V2ZW50KCd3ZGFTdGFydGVkJyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJ1blJlc2V0IChvcHRzID0gbnVsbCkge1xuICAgIHRoaXMubG9nRXZlbnQoJ3Jlc2V0U3RhcnRlZCcpO1xuICAgIGlmICh0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgICBhd2FpdCBydW5SZWFsRGV2aWNlUmVzZXQodGhpcy5vcHRzLmRldmljZSwgb3B0cyB8fCB0aGlzLm9wdHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBydW5TaW11bGF0b3JSZXNldCh0aGlzLm9wdHMuZGV2aWNlLCBvcHRzIHx8IHRoaXMub3B0cyk7XG4gICAgfVxuICAgIHRoaXMubG9nRXZlbnQoJ3Jlc2V0Q29tcGxldGUnKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIGF3YWl0IHJlbW92ZUFsbFNlc3Npb25XZWJTb2NrZXRIYW5kbGVycyh0aGlzLnNlcnZlciwgdGhpcy5zZXNzaW9uSWQpO1xuXG4gICAgZm9yIChjb25zdCByZWNvcmRlciBvZiBfLmNvbXBhY3QoW3RoaXMuX3JlY2VudFNjcmVlblJlY29yZGVyLCB0aGlzLl9hdWRpb1JlY29yZGVyXSkpIHtcbiAgICAgIGF3YWl0IHJlY29yZGVyLmludGVycnVwdCh0cnVlKTtcbiAgICAgIGF3YWl0IHJlY29yZGVyLmNsZWFudXAoKTtcbiAgICB9XG5cbiAgICBpZiAoIV8uaXNFbXB0eSh0aGlzLl9wZXJmUmVjb3JkZXJzKSkge1xuICAgICAgYXdhaXQgQi5hbGwodGhpcy5fcGVyZlJlY29yZGVycy5tYXAoKHgpID0+IHguc3RvcCh0cnVlKSkpO1xuICAgICAgdGhpcy5fcGVyZlJlY29yZGVycyA9IFtdO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuc3RvcCgpO1xuXG4gICAgaWYgKHRoaXMud2RhICYmICF0aGlzLm9wdHMud2ViRHJpdmVyQWdlbnRVcmwpIHtcbiAgICAgIGlmICh0aGlzLm9wdHMuY2xlYXJTeXN0ZW1GaWxlcykge1xuICAgICAgICBsZXQgc3luY2hyb25pemF0aW9uS2V5ID0gWENVSVRlc3REcml2ZXIubmFtZTtcbiAgICAgICAgY29uc3QgZGVyaXZlZERhdGFQYXRoID0gYXdhaXQgdGhpcy53ZGEucmV0cmlldmVEZXJpdmVkRGF0YVBhdGgoKTtcbiAgICAgICAgaWYgKGRlcml2ZWREYXRhUGF0aCkge1xuICAgICAgICAgIHN5bmNocm9uaXphdGlvbktleSA9IHBhdGgubm9ybWFsaXplKGRlcml2ZWREYXRhUGF0aCk7XG4gICAgICAgIH1cbiAgICAgICAgYXdhaXQgU0hBUkVEX1JFU09VUkNFU19HVUFSRC5hY3F1aXJlKHN5bmNocm9uaXphdGlvbktleSwgYXN5bmMgKCkgPT4ge1xuICAgICAgICAgIGF3YWl0IGNsZWFyU3lzdGVtRmlsZXModGhpcy53ZGEpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5kZWJ1ZygnTm90IGNsZWFyaW5nIGxvZyBmaWxlcy4gVXNlIGBjbGVhclN5c3RlbUZpbGVzYCBjYXBhYmlsaXR5IHRvIHR1cm4gb24uJyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHRoaXMucmVtb3RlKSB7XG4gICAgICBsb2cuZGVidWcoJ0ZvdW5kIGEgcmVtb3RlIGRlYnVnZ2VyIHNlc3Npb24uIFJlbW92aW5nLi4uJyk7XG4gICAgICBhd2FpdCB0aGlzLnN0b3BSZW1vdGUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRzLnJlc2V0T25TZXNzaW9uU3RhcnRPbmx5ID09PSBmYWxzZSkge1xuICAgICAgYXdhaXQgdGhpcy5ydW5SZXNldChPYmplY3QuYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtcbiAgICAgICAgZW5mb3JjZVNpbXVsYXRvclNodXRkb3duOiB0cnVlLFxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLmlzU2ltdWxhdG9yKCkgJiYgIXRoaXMub3B0cy5ub1Jlc2V0ICYmICEhdGhpcy5vcHRzLmRldmljZSkge1xuICAgICAgaWYgKHRoaXMubGlmZWN5Y2xlRGF0YS5jcmVhdGVTaW0pIHtcbiAgICAgICAgbG9nLmRlYnVnKGBEZWxldGluZyBzaW11bGF0b3IgY3JlYXRlZCBmb3IgdGhpcyBydW4gKHVkaWQ6ICcke3RoaXMub3B0cy51ZGlkfScpYCk7XG4gICAgICAgIGF3YWl0IHNodXRkb3duU2ltdWxhdG9yKHRoaXMub3B0cy5kZXZpY2UpO1xuICAgICAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLmRlbGV0ZSgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghXy5pc0VtcHR5KHRoaXMubG9ncykpIHtcbiAgICAgIGF3YWl0IHRoaXMubG9ncy5zeXNsb2cuc3RvcENhcHR1cmUoKTtcbiAgICAgIHRoaXMubG9ncyA9IHt9O1xuICAgIH1cblxuICAgIGlmICh0aGlzLm1qcGVnU3RyZWFtKSB7XG4gICAgICBsb2cuaW5mbygnQ2xvc2luZyBNSlBFRyBzdHJlYW0nKTtcbiAgICAgIHRoaXMubWpwZWdTdHJlYW0uc3RvcCgpO1xuICAgIH1cblxuICAgIHRoaXMucmVzZXRJb3MoKTtcblxuICAgIGF3YWl0IHN1cGVyLmRlbGV0ZVNlc3Npb24oKTtcbiAgfVxuXG4gIGFzeW5jIHN0b3AgKCkge1xuICAgIHRoaXMuandwUHJveHlBY3RpdmUgPSBmYWxzZTtcbiAgICB0aGlzLnByb3h5UmVxUmVzID0gbnVsbDtcblxuXG4gICAgaWYgKHRoaXMud2RhICYmIHRoaXMud2RhLmZ1bGx5U3RhcnRlZCkge1xuICAgICAgaWYgKHRoaXMud2RhLmp3cHJveHkpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZChgL3Nlc3Npb24vJHt0aGlzLnNlc3Npb25JZH1gLCAnREVMRVRFJyk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgIC8vIGFuIGVycm9yIGhlcmUgc2hvdWxkIG5vdCBzaG9ydC1jaXJjdWl0IHRoZSByZXN0IG9mIGNsZWFuIHVwXG4gICAgICAgICAgbG9nLmRlYnVnKGBVbmFibGUgdG8gREVMRVRFIHNlc3Npb24gb24gV0RBOiAnJHtlcnIubWVzc2FnZX0nLiBDb250aW51aW5nIHNodXRkb3duLmApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoIXRoaXMud2RhLndlYkRyaXZlckFnZW50VXJsICYmIHRoaXMub3B0cy51c2VOZXdXREEpIHtcbiAgICAgICAgYXdhaXQgdGhpcy53ZGEucXVpdCgpO1xuICAgICAgfVxuICAgIH1cblxuICAgIERFVklDRV9DT05ORUNUSU9OU19GQUNUT1JZLnJlbGVhc2VDb25uZWN0aW9uKHRoaXMub3B0cy51ZGlkKTtcbiAgfVxuXG4gIGFzeW5jIGV4ZWN1dGVDb21tYW5kIChjbWQsIC4uLmFyZ3MpIHtcbiAgICBsb2cuZGVidWcoYEV4ZWN1dGluZyBjb21tYW5kICcke2NtZH0nYCk7XG5cbiAgICBpZiAoY21kID09PSAncmVjZWl2ZUFzeW5jUmVzcG9uc2UnKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZWNlaXZlQXN5bmNSZXNwb25zZSguLi5hcmdzKTtcbiAgICB9XG4gICAgLy8gVE9ETzogb25jZSB0aGlzIGZpeCBnZXRzIGludG8gYmFzZSBkcml2ZXIgcmVtb3ZlIGZyb20gaGVyZVxuICAgIGlmIChjbWQgPT09ICdnZXRTdGF0dXMnKSB7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5nZXRTdGF0dXMoKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLmV4ZWN1dGVDb21tYW5kKGNtZCwgLi4uYXJncyk7XG4gIH1cblxuICBhc3luYyBjb25maWd1cmVBcHAgKCkge1xuICAgIGZ1bmN0aW9uIGFwcElzUGFja2FnZU9yQnVuZGxlIChhcHApIHtcbiAgICAgIHJldHVybiAoL14oW2EtekEtWjAtOVxcLV9dK1xcLlthLXpBLVowLTlcXC1fXSspKyQvKS50ZXN0KGFwcCk7XG4gICAgfVxuXG4gICAgLy8gdGhlIGFwcCBuYW1lIGlzIGEgYnVuZGxlSWQgYXNzaWduIGl0IHRvIHRoZSBidW5kbGVJZCBwcm9wZXJ0eVxuICAgIGlmICghdGhpcy5vcHRzLmJ1bmRsZUlkICYmIGFwcElzUGFja2FnZU9yQnVuZGxlKHRoaXMub3B0cy5hcHApKSB7XG4gICAgICB0aGlzLm9wdHMuYnVuZGxlSWQgPSB0aGlzLm9wdHMuYXBwO1xuICAgICAgdGhpcy5vcHRzLmFwcCA9ICcnO1xuICAgIH1cbiAgICAvLyB3ZSBoYXZlIGEgYnVuZGxlIElELCBidXQgbm8gYXBwLCBvciBhcHAgaXMgYWxzbyBhIGJ1bmRsZVxuICAgIGlmICgodGhpcy5vcHRzLmJ1bmRsZUlkICYmIGFwcElzUGFja2FnZU9yQnVuZGxlKHRoaXMub3B0cy5idW5kbGVJZCkpICYmXG4gICAgICAgICh0aGlzLm9wdHMuYXBwID09PSAnJyB8fCBhcHBJc1BhY2thZ2VPckJ1bmRsZSh0aGlzLm9wdHMuYXBwKSkpIHtcbiAgICAgIGxvZy5kZWJ1ZygnQXBwIGlzIGFuIGlPUyBidW5kbGUsIHdpbGwgYXR0ZW1wdCB0byBydW4gYXMgcHJlLWV4aXN0aW5nJyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gY2hlY2sgZm9yIHN1cHBvcnRlZCBidWlsZC1pbiBhcHBzXG4gICAgc3dpdGNoIChfLnRvTG93ZXIodGhpcy5vcHRzLmFwcCkpIHtcbiAgICAgIGNhc2UgJ3NldHRpbmdzJzpcbiAgICAgICAgdGhpcy5vcHRzLmJ1bmRsZUlkID0gJ2NvbS5hcHBsZS5QcmVmZXJlbmNlcyc7XG4gICAgICAgIHRoaXMub3B0cy5hcHAgPSBudWxsO1xuICAgICAgICByZXR1cm47XG4gICAgICBjYXNlICdjYWxlbmRhcic6XG4gICAgICAgIHRoaXMub3B0cy5idW5kbGVJZCA9ICdjb20uYXBwbGUubW9iaWxlY2FsJztcbiAgICAgICAgdGhpcy5vcHRzLmFwcCA9IG51bGw7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgLy8gZG93bmxvYWQgaWYgbmVjZXNzYXJ5XG4gICAgICB0aGlzLm9wdHMuYXBwID0gYXdhaXQgdGhpcy5oZWxwZXJzLmNvbmZpZ3VyZUFwcCh0aGlzLm9wdHMuYXBwLCAnLmFwcCcpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLmVycm9yKGVycik7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYEJhZCBhcHA6ICR7dGhpcy5vcHRzLmFwcH0uIGAgK1xuICAgICAgICBgQXBwIHBhdGhzIG5lZWQgdG8gYmUgYWJzb2x1dGUgb3IgYW4gVVJMIHRvIGEgY29tcHJlc3NlZCBhcHAgZmlsZTogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBkZXRlcm1pbmVEZXZpY2UgKCkge1xuICAgIC8vIGluIHRoZSBvbmUgY2FzZSB3aGVyZSB3ZSBjcmVhdGUgYSBzaW0sIHdlIHdpbGwgc2V0IHRoaXMgc3RhdGVcbiAgICB0aGlzLmxpZmVjeWNsZURhdGEuY3JlYXRlU2ltID0gZmFsc2U7XG5cbiAgICAvLyBpZiB3ZSBnZXQgZ2VuZXJpYyBuYW1lcywgdHJhbnNsYXRlIHRoZW1cbiAgICB0aGlzLm9wdHMuZGV2aWNlTmFtZSA9IHRyYW5zbGF0ZURldmljZU5hbWUodGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiwgdGhpcy5vcHRzLmRldmljZU5hbWUpO1xuXG4gICAgY29uc3Qgc2V0dXBWZXJzaW9uQ2FwcyA9IGFzeW5jICgpID0+IHtcbiAgICAgIHRoaXMub3B0cy5pb3NTZGtWZXJzaW9uID0gYXdhaXQgZ2V0QW5kQ2hlY2tJb3NTZGtWZXJzaW9uKCk7XG4gICAgICBsb2cuaW5mbyhgaU9TIFNESyBWZXJzaW9uIHNldCB0byAnJHt0aGlzLm9wdHMuaW9zU2RrVmVyc2lvbn0nYCk7XG4gICAgICBpZiAoIXRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24gJiYgdGhpcy5vcHRzLmlvc1Nka1ZlcnNpb24pIHtcbiAgICAgICAgbG9nLmluZm8oYE5vIHBsYXRmb3JtVmVyc2lvbiBzcGVjaWZpZWQuIFVzaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiBYY29kZSBzdXBwb3J0czogJyR7dGhpcy5vcHRzLmlvc1Nka1ZlcnNpb259Jy4gYCArXG4gICAgICAgICAgYFRoaXMgbWF5IGNhdXNlIHByb2JsZW1zIGlmIGEgc2ltdWxhdG9yIGRvZXMgbm90IGV4aXN0IGZvciB0aGlzIHBsYXRmb3JtIHZlcnNpb24uYCk7XG4gICAgICAgIHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24gPSBub3JtYWxpemVQbGF0Zm9ybVZlcnNpb24odGhpcy5vcHRzLmlvc1Nka1ZlcnNpb24pO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcHRzLnVkaWQpIHtcbiAgICAgIGlmICh0aGlzLm9wdHMudWRpZC50b0xvd2VyQ2FzZSgpID09PSAnYXV0bycpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICB0aGlzLm9wdHMudWRpZCA9IGF3YWl0IGRldGVjdFVkaWQoKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgLy8gVHJ5aW5nIHRvIGZpbmQgbWF0Y2hpbmcgVURJRCBmb3IgU2ltdWxhdG9yXG4gICAgICAgICAgbG9nLndhcm4oYENhbm5vdCBkZXRlY3QgYW55IGNvbm5lY3RlZCByZWFsIGRldmljZXMuIEZhbGxpbmcgYmFjayB0byBTaW11bGF0b3IuIE9yaWdpbmFsIGVycm9yOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IGdldEV4aXN0aW5nU2ltKHRoaXMub3B0cyk7XG4gICAgICAgICAgaWYgKCFkZXZpY2UpIHtcbiAgICAgICAgICAgIC8vIE5vIG1hdGNoaW5nIFNpbXVsYXRvciBpcyBmb3VuZC4gVGhyb3cgYW4gZXJyb3JcbiAgICAgICAgICAgIGxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgZGV0ZWN0IHVkaWQgZm9yICR7dGhpcy5vcHRzLmRldmljZU5hbWV9IFNpbXVsYXRvciBydW5uaW5nIGlPUyAke3RoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb259YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgLy8gTWF0Y2hpbmcgU2ltdWxhdG9yIGV4aXN0cyBhbmQgaXMgZm91bmQuIFVzZSBpdFxuICAgICAgICAgIHRoaXMub3B0cy51ZGlkID0gZGV2aWNlLnVkaWQ7XG4gICAgICAgICAgY29uc3QgZGV2aWNlUGxhdGZvcm0gPSBub3JtYWxpemVQbGF0Zm9ybVZlcnNpb24oYXdhaXQgZGV2aWNlLmdldFBsYXRmb3JtVmVyc2lvbigpKTtcbiAgICAgICAgICBpZiAodGhpcy5vcHRzLnBsYXRmb3JtVmVyc2lvbiAhPT0gZGV2aWNlUGxhdGZvcm0pIHtcbiAgICAgICAgICAgIHRoaXMub3B0cy5wbGF0Zm9ybVZlcnNpb24gPSBkZXZpY2VQbGF0Zm9ybTtcbiAgICAgICAgICAgIGxvZy5pbmZvKGBTZXQgcGxhdGZvcm1WZXJzaW9uIHRvICcke2RldmljZVBsYXRmb3JtfScgdG8gbWF0Y2ggdGhlIGRldmljZSB3aXRoIGdpdmVuIFVESURgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYXdhaXQgc2V0dXBWZXJzaW9uQ2FwcygpO1xuICAgICAgICAgIHJldHVybiB7ZGV2aWNlLCByZWFsRGV2aWNlOiBmYWxzZSwgdWRpZDogZGV2aWNlLnVkaWR9O1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBtYWtlIHN1cmUgaXQgaXMgYSBjb25uZWN0ZWQgZGV2aWNlLiBJZiBub3QsIHRoZSB1ZGlkIHBhc3NlZCBpbiBpcyBpbnZhbGlkXG4gICAgICAgIGNvbnN0IGRldmljZXMgPSBhd2FpdCBnZXRDb25uZWN0ZWREZXZpY2VzKCk7XG4gICAgICAgIGxvZy5kZWJ1ZyhgQXZhaWxhYmxlIGRldmljZXM6ICR7ZGV2aWNlcy5qb2luKCcsICcpfWApO1xuICAgICAgICBpZiAoIWRldmljZXMuaW5jbHVkZXModGhpcy5vcHRzLnVkaWQpKSB7XG4gICAgICAgICAgLy8gY2hlY2sgZm9yIGEgcGFydGljdWxhciBzaW11bGF0b3JcbiAgICAgICAgICBsb2cuZGVidWcoYE5vIHJlYWwgZGV2aWNlIHdpdGggdWRpZCAnJHt0aGlzLm9wdHMudWRpZH0nLiBMb29raW5nIGZvciBzaW11bGF0b3JgKTtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgY29uc3QgZGV2aWNlID0gYXdhaXQgZ2V0U2ltdWxhdG9yKHRoaXMub3B0cy51ZGlkLCB7XG4gICAgICAgICAgICAgIGRldmljZXNTZXRQYXRoOiB0aGlzLm9wdHMuc2ltdWxhdG9yRGV2aWNlc1NldFBhdGgsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB7ZGV2aWNlLCByZWFsRGV2aWNlOiBmYWxzZSwgdWRpZDogdGhpcy5vcHRzLnVkaWR9O1xuICAgICAgICAgIH0gY2F0Y2ggKGlnbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtub3duIGRldmljZSBvciBzaW11bGF0b3IgVURJRDogJyR7dGhpcy5vcHRzLnVkaWR9J2ApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBjb25zdCBkZXZpY2UgPSBhd2FpdCBnZXRSZWFsRGV2aWNlT2JqKHRoaXMub3B0cy51ZGlkKTtcbiAgICAgIHJldHVybiB7ZGV2aWNlLCByZWFsRGV2aWNlOiB0cnVlLCB1ZGlkOiB0aGlzLm9wdHMudWRpZH07XG4gICAgfVxuXG4gICAgLy8gTm93IHdlIGtub3cgZm9yIHN1cmUgdGhlIGRldmljZSB3aWxsIGJlIGEgU2ltdWxhdG9yXG4gICAgYXdhaXQgc2V0dXBWZXJzaW9uQ2FwcygpO1xuICAgIGlmICh0aGlzLm9wdHMuZW5mb3JjZUZyZXNoU2ltdWxhdG9yQ3JlYXRpb24pIHtcbiAgICAgIGxvZy5kZWJ1ZyhgTmV3IHNpbXVsYXRvciBpcyByZXF1ZXN0ZWQuIElmIHRoaXMgaXMgbm90IHdhbnRlZCwgc2V0ICdlbmZvcmNlRnJlc2hTaW11bGF0b3JDcmVhdGlvbicgY2FwYWJpbGl0eSB0byBmYWxzZWApO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBmaWd1cmUgb3V0IHRoZSBjb3JyZWN0IHNpbXVsYXRvciB0byB1c2UsIGdpdmVuIHRoZSBkZXNpcmVkIGNhcGFiaWxpdGllc1xuICAgICAgY29uc3QgZGV2aWNlID0gYXdhaXQgZ2V0RXhpc3RpbmdTaW0odGhpcy5vcHRzKTtcblxuICAgICAgLy8gY2hlY2sgZm9yIGFuIGV4aXN0aW5nIHNpbXVsYXRvclxuICAgICAgaWYgKGRldmljZSkge1xuICAgICAgICByZXR1cm4ge2RldmljZSwgcmVhbERldmljZTogZmFsc2UsIHVkaWQ6IGRldmljZS51ZGlkfTtcbiAgICAgIH1cblxuICAgICAgbG9nLmluZm8oJ1NpbXVsYXRvciB1ZGlkIG5vdCBwcm92aWRlZCcpO1xuICAgIH1cblxuICAgIC8vIG5vIGRldmljZSBvZiB0aGlzIHR5cGUgZXhpc3RzLCBvciB0aGV5IHJlcXVlc3QgbmV3IHNpbSwgc28gY3JlYXRlIG9uZVxuICAgIGxvZy5pbmZvKCdVc2luZyBkZXNpcmVkIGNhcHMgdG8gY3JlYXRlIGEgbmV3IHNpbXVsYXRvcicpO1xuICAgIGNvbnN0IGRldmljZSA9IGF3YWl0IHRoaXMuY3JlYXRlU2ltKCk7XG4gICAgcmV0dXJuIHtkZXZpY2UsIHJlYWxEZXZpY2U6IGZhbHNlLCB1ZGlkOiBkZXZpY2UudWRpZH07XG4gIH1cblxuICBhc3luYyBzdGFydFNpbSAoKSB7XG4gICAgY29uc3QgcnVuT3B0cyA9IHtcbiAgICAgIHNjYWxlRmFjdG9yOiB0aGlzLm9wdHMuc2NhbGVGYWN0b3IsXG4gICAgICBjb25uZWN0SGFyZHdhcmVLZXlib2FyZDogISF0aGlzLm9wdHMuY29ubmVjdEhhcmR3YXJlS2V5Ym9hcmQsXG4gICAgICBwYXN0ZWJvYXJkQXV0b21hdGljU3luYzogdGhpcy5vcHRzLnNpbXVsYXRvclBhc3RlYm9hcmRBdXRvbWF0aWNTeW5jID8/ICdvZmYnLFxuICAgICAgaXNIZWFkbGVzczogISF0aGlzLm9wdHMuaXNIZWFkbGVzcyxcbiAgICAgIHRyYWNlUG9pbnRlcjogdGhpcy5vcHRzLnNpbXVsYXRvclRyYWNlUG9pbnRlcixcbiAgICAgIGRldmljZVByZWZlcmVuY2VzOiB7fSxcbiAgICB9O1xuXG4gICAgLy8gYWRkIHRoZSB3aW5kb3cgY2VudGVyLCBpZiBpdCBpcyBzcGVjaWZpZWRcbiAgICBpZiAodGhpcy5vcHRzLlNpbXVsYXRvcldpbmRvd0NlbnRlcikge1xuICAgICAgcnVuT3B0cy5kZXZpY2VQcmVmZXJlbmNlcy5TaW11bGF0b3JXaW5kb3dDZW50ZXIgPSB0aGlzLm9wdHMuU2ltdWxhdG9yV2luZG93Q2VudGVyO1xuICAgIH1cblxuICAgIGlmIChfLmlzSW50ZWdlcih0aGlzLm9wdHMuc2ltdWxhdG9yU3RhcnR1cFRpbWVvdXQpKSB7XG4gICAgICBydW5PcHRzLnN0YXJ0dXBUaW1lb3V0ID0gdGhpcy5vcHRzLnNpbXVsYXRvclN0YXJ0dXBUaW1lb3V0O1xuICAgIH1cblxuICAgIC8vIFRoaXMgaXMgdG8gd29ya2Fyb3VuZCBYQ1Rlc3QgYnVnIGFib3V0IGNoYW5naW5nIFNpbXVsYXRvclxuICAgIC8vIG9yaWVudGF0aW9uIGlzIG5vdCBzeW5jaHJvbml6ZWQgdG8gdGhlIGFjdHVhbCB3aW5kb3cgb3JpZW50YXRpb25cbiAgICBjb25zdCBvcmllbnRhdGlvbiA9IF8uaXNTdHJpbmcodGhpcy5vcHRzLm9yaWVudGF0aW9uKSAmJiB0aGlzLm9wdHMub3JpZW50YXRpb24udG9VcHBlckNhc2UoKTtcbiAgICBzd2l0Y2ggKG9yaWVudGF0aW9uKSB7XG4gICAgICBjYXNlICdMQU5EU0NBUEUnOlxuICAgICAgICBydW5PcHRzLmRldmljZVByZWZlcmVuY2VzLlNpbXVsYXRvcldpbmRvd09yaWVudGF0aW9uID0gJ0xhbmRzY2FwZUxlZnQnO1xuICAgICAgICBydW5PcHRzLmRldmljZVByZWZlcmVuY2VzLlNpbXVsYXRvcldpbmRvd1JvdGF0aW9uQW5nbGUgPSA5MDtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlICdQT1JUUkFJVCc6XG4gICAgICAgIHJ1bk9wdHMuZGV2aWNlUHJlZmVyZW5jZXMuU2ltdWxhdG9yV2luZG93T3JpZW50YXRpb24gPSAnUG9ydHJhaXQnO1xuICAgICAgICBydW5PcHRzLmRldmljZVByZWZlcmVuY2VzLlNpbXVsYXRvcldpbmRvd1JvdGF0aW9uQW5nbGUgPSAwO1xuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLm9wdHMuZGV2aWNlLnJ1bihydW5PcHRzKTtcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVNpbSAoKSB7XG4gICAgdGhpcy5saWZlY3ljbGVEYXRhLmNyZWF0ZVNpbSA9IHRydWU7XG5cbiAgICAvLyBHZXQgcGxhdGZvcm0gbmFtZSBmcm9tIGNvbnN0IHNpbmNlIGl0IG11c3QgYmUgY2FzZSBzZW5zaXRpdmUgdG8gY3JlYXRlIGEgbmV3IHNpbXVsYXRvclxuICAgIGNvbnN0IHBsYXRmb3JtTmFtZSA9IHRoaXMuaXNUdk9TKCkgPyBQTEFURk9STV9OQU1FX1RWT1MgOiBQTEFURk9STV9OQU1FX0lPUztcblxuICAgIC8vIGNyZWF0ZSBzaW0gZm9yIGNhcHNcbiAgICBjb25zdCBzaW0gPSBhd2FpdCBjcmVhdGVTaW0odGhpcy5vcHRzLCBwbGF0Zm9ybU5hbWUpO1xuICAgIGxvZy5pbmZvKGBDcmVhdGVkIHNpbXVsYXRvciB3aXRoIHVkaWQgJyR7c2ltLnVkaWR9Jy5gKTtcblxuICAgIHJldHVybiBzaW07XG4gIH1cblxuICBhc3luYyBsYXVuY2hBcHAgKCkge1xuICAgIGNvbnN0IEFQUF9MQVVOQ0hfVElNRU9VVCA9IDIwICogMTAwMDtcblxuICAgIHRoaXMubG9nRXZlbnQoJ2FwcExhdW5jaEF0dGVtcHRlZCcpO1xuICAgIGF3YWl0IHRoaXMub3B0cy5kZXZpY2Uuc2ltY3RsLmxhdW5jaEFwcCh0aGlzLm9wdHMuYnVuZGxlSWQpO1xuXG4gICAgbGV0IGNoZWNrU3RhdHVzID0gYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHJlc3BvbnNlID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICBsZXQgY3VycmVudEFwcCA9IHJlc3BvbnNlLmN1cnJlbnRBcHAuYnVuZGxlSUQ7XG4gICAgICBpZiAoY3VycmVudEFwcCAhPT0gdGhpcy5vcHRzLmJ1bmRsZUlkKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgJHt0aGlzLm9wdHMuYnVuZGxlSWR9IG5vdCBpbiBmb3JlZ3JvdW5kLiAke2N1cnJlbnRBcHB9IGlzIGluIGZvcmVncm91bmRgKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgbG9nLmluZm8oYFdhaXRpbmcgZm9yICcke3RoaXMub3B0cy5idW5kbGVJZH0nIHRvIGJlIGluIGZvcmVncm91bmRgKTtcbiAgICBsZXQgcmV0cmllcyA9IHBhcnNlSW50KEFQUF9MQVVOQ0hfVElNRU9VVCAvIDIwMCwgMTApO1xuICAgIGF3YWl0IHJldHJ5SW50ZXJ2YWwocmV0cmllcywgMjAwLCBjaGVja1N0YXR1cyk7XG4gICAgbG9nLmluZm8oYCR7dGhpcy5vcHRzLmJ1bmRsZUlkfSBpcyBpbiBmb3JlZ3JvdW5kYCk7XG4gICAgdGhpcy5sb2dFdmVudCgnYXBwTGF1bmNoZWQnKTtcbiAgfVxuXG4gIGFzeW5jIHN0YXJ0V2RhU2Vzc2lvbiAoYnVuZGxlSWQsIHByb2Nlc3NBcmd1bWVudHMpIHtcbiAgICBjb25zdCBhcmdzID0gcHJvY2Vzc0FyZ3VtZW50cyA/IChwcm9jZXNzQXJndW1lbnRzLmFyZ3MgfHwgW10pIDogW107XG4gICAgaWYgKCFfLmlzQXJyYXkoYXJncykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvY2Vzc0FyZ3VtZW50cy5hcmdzIGNhcGFiaWxpdHkgaXMgZXhwZWN0ZWQgdG8gYmUgYW4gYXJyYXkuIGAgK1xuICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShhcmdzKX0gaXMgZ2l2ZW4gaW5zdGVhZGApO1xuICAgIH1cbiAgICBjb25zdCBlbnYgPSBwcm9jZXNzQXJndW1lbnRzID8gKHByb2Nlc3NBcmd1bWVudHMuZW52IHx8IHt9KSA6IHt9O1xuICAgIGlmICghXy5pc1BsYWluT2JqZWN0KGVudikpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgcHJvY2Vzc0FyZ3VtZW50cy5lbnYgY2FwYWJpbGl0eSBpcyBleHBlY3RlZCB0byBiZSBhIGRpY3Rpb25hcnkuIGAgK1xuICAgICAgICBgJHtKU09OLnN0cmluZ2lmeShlbnYpfSBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gICAgfVxuXG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLmxhbmd1YWdlKSkge1xuICAgICAgYXJncy5wdXNoKCctQXBwbGVMYW5ndWFnZXMnLCBgKCR7dGhpcy5vcHRzLmxhbmd1YWdlfSlgKTtcbiAgICAgIGFyZ3MucHVzaCgnLU5TTGFuZ3VhZ2VzJywgYCgke3RoaXMub3B0cy5sYW5ndWFnZX0pYCk7XG4gICAgfVxuICAgIGlmICh1dGlsLmhhc1ZhbHVlKHRoaXMub3B0cy5sb2NhbGUpKSB7XG4gICAgICBhcmdzLnB1c2goJy1BcHBsZUxvY2FsZScsIHRoaXMub3B0cy5sb2NhbGUpO1xuICAgIH1cblxuICAgIGNvbnN0IHdkYUNhcHMgPSB7XG4gICAgICBidW5kbGVJZDogdGhpcy5vcHRzLmF1dG9MYXVuY2ggPT09IGZhbHNlID8gdW5kZWZpbmVkIDogYnVuZGxlSWQsXG4gICAgICBhcmd1bWVudHM6IGFyZ3MsXG4gICAgICBlbnZpcm9ubWVudDogZW52LFxuICAgICAgZXZlbnRsb29wSWRsZURlbGF5U2VjOiB0aGlzLm9wdHMud2RhRXZlbnRsb29wSWRsZURlbGF5ID8/IDAsXG4gICAgICBzaG91bGRXYWl0Rm9yUXVpZXNjZW5jZTogdGhpcy5vcHRzLndhaXRGb3JRdWllc2NlbmNlID8/IHRydWUsXG4gICAgICBzaG91bGRVc2VUZXN0TWFuYWdlckZvclZpc2liaWxpdHlEZXRlY3Rpb246IHRoaXMub3B0cy5zaW1wbGVJc1Zpc2libGVDaGVjayA/PyBmYWxzZSxcbiAgICAgIG1heFR5cGluZ0ZyZXF1ZW5jeTogdGhpcy5vcHRzLm1heFR5cGluZ0ZyZXF1ZW5jeSA/PyA2MCxcbiAgICAgIHNob3VsZFVzZVNpbmdsZXRvblRlc3RNYW5hZ2VyOiB0aGlzLm9wdHMuc2hvdWxkVXNlU2luZ2xldG9uVGVzdE1hbmFnZXIgPz8gdHJ1ZSxcbiAgICAgIHdhaXRGb3JJZGxlVGltZW91dDogdGhpcy5vcHRzLndhaXRGb3JJZGxlVGltZW91dCxcbiAgICAgIHNob3VsZFVzZUNvbXBhY3RSZXNwb25zZXM6IHRoaXMub3B0cy5zaG91bGRVc2VDb21wYWN0UmVzcG9uc2VzLFxuICAgICAgZWxlbWVudFJlc3BvbnNlRmllbGRzOiB0aGlzLm9wdHMuZWxlbWVudFJlc3BvbnNlRmllbGRzLFxuICAgICAgZGlzYWJsZUF1dG9tYXRpY1NjcmVlbnNob3RzOiB0aGlzLm9wdHMuZGlzYWJsZUF1dG9tYXRpY1NjcmVlbnNob3RzLFxuICAgICAgc2hvdWxkVGVybWluYXRlQXBwOiB0aGlzLm9wdHMuc2hvdWxkVGVybWluYXRlQXBwID8/IHRydWVcbiAgICB9O1xuICAgIGlmICh0aGlzLm9wdHMuYXV0b0FjY2VwdEFsZXJ0cykge1xuICAgICAgd2RhQ2Fwcy5kZWZhdWx0QWxlcnRBY3Rpb24gPSAnYWNjZXB0JztcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy5hdXRvRGlzbWlzc0FsZXJ0cykge1xuICAgICAgd2RhQ2Fwcy5kZWZhdWx0QWxlcnRBY3Rpb24gPSAnZGlzbWlzcyc7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy9zZXNzaW9uJywgJ1BPU1QnLCB7XG4gICAgICBjYXBhYmlsaXRpZXM6IHtcbiAgICAgICAgZmlyc3RNYXRjaDogW3dkYUNhcHNdLFxuICAgICAgICBhbHdheXNNYXRjaDoge30sXG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICAvLyBPdmVycmlkZSBQcm94eSBtZXRob2RzIGZyb20gQmFzZURyaXZlclxuICBwcm94eUFjdGl2ZSAoKSB7XG4gICAgcmV0dXJuIHRoaXMuandwUHJveHlBY3RpdmU7XG4gIH1cblxuICBnZXRQcm94eUF2b2lkTGlzdCAoKSB7XG4gICAgaWYgKHRoaXMuaXNXZWJ2aWV3KCkpIHtcbiAgICAgIHJldHVybiBOT19QUk9YWV9XRUJfTElTVDtcbiAgICB9XG4gICAgcmV0dXJuIE5PX1BST1hZX05BVElWRV9MSVNUO1xuICB9XG5cbiAgY2FuUHJveHkgKCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaXNTYWZhcmkgKCkge1xuICAgIHJldHVybiAhIXRoaXMuc2FmYXJpO1xuICB9XG5cbiAgaXNSZWFsRGV2aWNlICgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRzLnJlYWxEZXZpY2U7XG4gIH1cblxuICBpc1NpbXVsYXRvciAoKSB7XG4gICAgcmV0dXJuICF0aGlzLm9wdHMucmVhbERldmljZTtcbiAgfVxuXG4gIGlzVHZPUyAoKSB7XG4gICAgcmV0dXJuIF8udG9Mb3dlcih0aGlzLm9wdHMucGxhdGZvcm1OYW1lKSA9PT0gXy50b0xvd2VyKFBMQVRGT1JNX05BTUVfVFZPUyk7XG4gIH1cblxuICBpc1dlYnZpZXcgKCkge1xuICAgIHJldHVybiB0aGlzLmlzU2FmYXJpKCkgfHwgdGhpcy5pc1dlYkNvbnRleHQoKTtcbiAgfVxuXG4gIHZhbGlkYXRlTG9jYXRvclN0cmF0ZWd5IChzdHJhdGVneSkge1xuICAgIHN1cGVyLnZhbGlkYXRlTG9jYXRvclN0cmF0ZWd5KHN0cmF0ZWd5LCB0aGlzLmlzV2ViQ29udGV4dCgpKTtcbiAgfVxuXG4gIHZhbGlkYXRlRGVzaXJlZENhcHMgKGNhcHMpIHtcbiAgICBpZiAoIXN1cGVyLnZhbGlkYXRlRGVzaXJlZENhcHMoY2FwcykpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgY2FwYWJpbGl0aWVzIGhhdmUgb25lIG9mIGBhcHBgIG9yIGBidW5kbGVJZGBcbiAgICBpZiAoXy50b0xvd2VyKGNhcHMuYnJvd3Nlck5hbWUpICE9PSAnc2FmYXJpJyAmJiAhY2Fwcy5hcHAgJiYgIWNhcHMuYnVuZGxlSWQpIHtcbiAgICAgIGxvZy5pbmZvKCdUaGUgZGVzaXJlZCBjYXBhYmlsaXRpZXMgaW5jbHVkZSBuZWl0aGVyIGFuIGFwcCBub3IgYSBidW5kbGVJZC4gJyArXG4gICAgICAgICdXZWJEcml2ZXJBZ2VudCB3aWxsIGJlIHN0YXJ0ZWQgd2l0aG91dCB0aGUgZGVmYXVsdCBhcHAnKTtcbiAgICB9XG5cbiAgICBpZiAoIXV0aWwuY29lcmNlVmVyc2lvbihjYXBzLnBsYXRmb3JtVmVyc2lvbiwgZmFsc2UpKSB7XG4gICAgICBsb2cud2FybihgJ3BsYXRmb3JtVmVyc2lvbicgY2FwYWJpbGl0eSAoJyR7Y2Fwcy5wbGF0Zm9ybVZlcnNpb259JykgaXMgbm90IGEgdmFsaWQgdmVyc2lvbiBudW1iZXIuIGAgK1xuICAgICAgICBgQ29uc2lkZXIgZml4aW5nIGl0IG9yIGJlIHJlYWR5IHRvIGV4cGVyaWVuY2UgYW4gaW5jb25zaXN0ZW50IGRyaXZlciBiZWhhdmlvci5gKTtcbiAgICB9XG5cbiAgICBsZXQgdmVyaWZ5UHJvY2Vzc0FyZ3VtZW50ID0gKHByb2Nlc3NBcmd1bWVudHMpID0+IHtcbiAgICAgIGNvbnN0IHthcmdzLCBlbnZ9ID0gcHJvY2Vzc0FyZ3VtZW50cztcbiAgICAgIGlmICghXy5pc05pbChhcmdzKSAmJiAhXy5pc0FycmF5KGFyZ3MpKSB7XG4gICAgICAgIGxvZy5lcnJvckFuZFRocm93KCdwcm9jZXNzQXJndW1lbnRzLmFyZ3MgbXVzdCBiZSBhbiBhcnJheSBvZiBzdHJpbmdzJyk7XG4gICAgICB9XG4gICAgICBpZiAoIV8uaXNOaWwoZW52KSAmJiAhXy5pc1BsYWluT2JqZWN0KGVudikpIHtcbiAgICAgICAgbG9nLmVycm9yQW5kVGhyb3coJ3Byb2Nlc3NBcmd1bWVudHMuZW52IG11c3QgYmUgYW4gb2JqZWN0IDxrZXksdmFsdWU+IHBhaXIge2E6YiwgYzpkfScpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICAvLyBgcHJvY2Vzc0FyZ3VtZW50c2Agc2hvdWxkIGJlIEpTT04gc3RyaW5nIG9yIGFuIG9iamVjdCB3aXRoIGFyZ3VtZW50cyBhbmQvIGVudmlyb25tZW50IGRldGFpbHNcbiAgICBpZiAoY2Fwcy5wcm9jZXNzQXJndW1lbnRzKSB7XG4gICAgICBpZiAoXy5pc1N0cmluZyhjYXBzLnByb2Nlc3NBcmd1bWVudHMpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gdHJ5IHRvIHBhcnNlIHRoZSBzdHJpbmcgYXMgSlNPTlxuICAgICAgICAgIGNhcHMucHJvY2Vzc0FyZ3VtZW50cyA9IEpTT04ucGFyc2UoY2Fwcy5wcm9jZXNzQXJndW1lbnRzKTtcbiAgICAgICAgICB2ZXJpZnlQcm9jZXNzQXJndW1lbnQoY2Fwcy5wcm9jZXNzQXJndW1lbnRzKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbG9nLmVycm9yQW5kVGhyb3coYHByb2Nlc3NBcmd1bWVudHMgbXVzdCBiZSBhIEpTT04gZm9ybWF0IG9yIGFuIG9iamVjdCB3aXRoIGZvcm1hdCB7YXJncyA6IFtdLCBlbnYgOiB7YTpiLCBjOmR9fS4gYCArXG4gICAgICAgICAgICBgQm90aCBlbnZpcm9ubWVudCBhbmQgYXJndW1lbnQgY2FuIGJlIG51bGwuIEVycm9yOiAke2Vycn1gKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChfLmlzUGxhaW5PYmplY3QoY2Fwcy5wcm9jZXNzQXJndW1lbnRzKSkge1xuICAgICAgICB2ZXJpZnlQcm9jZXNzQXJndW1lbnQoY2Fwcy5wcm9jZXNzQXJndW1lbnRzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy5lcnJvckFuZFRocm93KGAncHJvY2Vzc0FyZ3VtZW50cyBtdXN0IGJlIGFuIG9iamVjdCwgb3IgYSBzdHJpbmcgSlNPTiBvYmplY3Qgd2l0aCBmb3JtYXQge2FyZ3MgOiBbXSwgZW52IDoge2E6YiwgYzpkfX0uIGAgK1xuICAgICAgICAgIGBCb3RoIGVudmlyb25tZW50IGFuZCBhcmd1bWVudCBjYW4gYmUgbnVsbC5gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyB0aGVyZSBpcyBubyBwb2ludCBpbiBoYXZpbmcgYGtleWNoYWluUGF0aGAgd2l0aG91dCBga2V5Y2hhaW5QYXNzd29yZGBcbiAgICBpZiAoKGNhcHMua2V5Y2hhaW5QYXRoICYmICFjYXBzLmtleWNoYWluUGFzc3dvcmQpIHx8ICghY2Fwcy5rZXljaGFpblBhdGggJiYgY2Fwcy5rZXljaGFpblBhc3N3b3JkKSkge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coYElmICdrZXljaGFpblBhdGgnIGlzIHNldCwgJ2tleWNoYWluUGFzc3dvcmQnIG11c3QgYWxzbyBiZSBzZXQgKGFuZCB2aWNlIHZlcnNhKS5gKTtcbiAgICB9XG5cbiAgICAvLyBgcmVzZXRPblNlc3Npb25TdGFydE9ubHlgIHNob3VsZCBiZSBzZXQgdG8gdHJ1ZSBieSBkZWZhdWx0XG4gICAgdGhpcy5vcHRzLnJlc2V0T25TZXNzaW9uU3RhcnRPbmx5ID0gIXV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLnJlc2V0T25TZXNzaW9uU3RhcnRPbmx5KSB8fCB0aGlzLm9wdHMucmVzZXRPblNlc3Npb25TdGFydE9ubHk7XG4gICAgdGhpcy5vcHRzLnVzZU5ld1dEQSA9IHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLnVzZU5ld1dEQSkgPyB0aGlzLm9wdHMudXNlTmV3V0RBIDogZmFsc2U7XG5cbiAgICBpZiAoY2Fwcy5jb21tYW5kVGltZW91dHMpIHtcbiAgICAgIGNhcHMuY29tbWFuZFRpbWVvdXRzID0gbm9ybWFsaXplQ29tbWFuZFRpbWVvdXRzKGNhcHMuY29tbWFuZFRpbWVvdXRzKTtcbiAgICB9XG5cbiAgICBpZiAoXy5pc1N0cmluZyhjYXBzLndlYkRyaXZlckFnZW50VXJsKSkge1xuICAgICAgY29uc3Qge3Byb3RvY29sLCBob3N0fSA9IHVybC5wYXJzZShjYXBzLndlYkRyaXZlckFnZW50VXJsKTtcbiAgICAgIGlmIChfLmlzRW1wdHkocHJvdG9jb2wpIHx8IF8uaXNFbXB0eShob3N0KSkge1xuICAgICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgJ3dlYkRyaXZlckFnZW50VXJsJyBjYXBhYmlsaXR5IGlzIGV4cGVjdGVkIHRvIGNvbnRhaW4gYSB2YWxpZCBXZWJEcml2ZXJBZ2VudCBzZXJ2ZXIgVVJMLiBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYCcke2NhcHMud2ViRHJpdmVyQWdlbnRVcmx9JyBpcyBnaXZlbiBpbnN0ZWFkYCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGNhcHMuYnJvd3Nlck5hbWUpIHtcbiAgICAgIGlmIChjYXBzLmJ1bmRsZUlkKSB7XG4gICAgICAgIGxvZy5lcnJvckFuZFRocm93KGAnYnJvd3Nlck5hbWUnIGNhbm5vdCBiZSBzZXQgdG9nZXRoZXIgd2l0aCAnYnVuZGxlSWQnIGNhcGFiaWxpdHlgKTtcbiAgICAgIH1cbiAgICAgIC8vIHdhcm4gaWYgdGhlIGNhcGFiaWxpdGllcyBoYXZlIGJvdGggYGFwcGAgYW5kIGBicm93c2VyLCBhbHRob3VnaCB0aGlzXG4gICAgICAvLyBpcyBjb21tb24gd2l0aCBzZWxlbml1bSBncmlkXG4gICAgICBpZiAoY2Fwcy5hcHApIHtcbiAgICAgICAgbG9nLndhcm4oYFRoZSBjYXBhYmlsaXRpZXMgc2hvdWxkIGdlbmVyYWxseSBub3QgaW5jbHVkZSBib3RoIGFuICdhcHAnIGFuZCBhICdicm93c2VyTmFtZSdgKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY2Fwcy5wZXJtaXNzaW9ucykge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZm9yIChjb25zdCBbYnVuZGxlSWQsIHBlcm1zXSBvZiBfLnRvUGFpcnMoSlNPTi5wYXJzZShjYXBzLnBlcm1pc3Npb25zKSkpIHtcbiAgICAgICAgICBpZiAoIV8uaXNTdHJpbmcoYnVuZGxlSWQpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke0pTT04uc3RyaW5naWZ5KGJ1bmRsZUlkKX0nIG11c3QgYmUgYSBzdHJpbmdgKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKCFfLmlzUGxhaW5PYmplY3QocGVybXMpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke0pTT04uc3RyaW5naWZ5KHBlcm1zKX0nIG11c3QgYmUgYSBKU09OIG9iamVjdGApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBsb2cuZXJyb3JBbmRUaHJvdyhgJyR7Y2Fwcy5wZXJtaXNzaW9uc30nIGlzIGV4cGVjdGVkIHRvIGJlIGEgdmFsaWQgb2JqZWN0IHdpdGggZm9ybWF0IGAgK1xuICAgICAgICAgIGB7XCI8YnVuZGxlSWQxPlwiOiB7XCI8c2VydmljZU5hbWUxPlwiOiBcIjxzZXJ2aWNlU3RhdHVzMT5cIiwgLi4ufSwgLi4ufS4gT3JpZ2luYWwgZXJyb3I6ICR7ZS5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChjYXBzLnBsYXRmb3JtVmVyc2lvbiAmJiAhdXRpbC5jb2VyY2VWZXJzaW9uKGNhcHMucGxhdGZvcm1WZXJzaW9uLCBmYWxzZSkpIHtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGAncGxhdGZvcm1WZXJzaW9uJyBtdXN0IGJlIGEgdmFsaWQgdmVyc2lvbiBudW1iZXIuIGAgK1xuICAgICAgICBgJyR7Y2Fwcy5wbGF0Zm9ybVZlcnNpb259JyBpcyBnaXZlbiBpbnN0ZWFkLmApO1xuICAgIH1cblxuICAgIC8vIGFkZGl0aW9uYWxXZWJ2aWV3QnVuZGxlSWRzIGlzIGFuIGFycmF5LCBKU09OIGFycmF5LCBvciBzdHJpbmdcbiAgICBpZiAoY2Fwcy5hZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkcykge1xuICAgICAgY2Fwcy5hZGRpdGlvbmFsV2Vidmlld0J1bmRsZUlkcyA9IHRoaXMuaGVscGVycy5wYXJzZUNhcHNBcnJheShjYXBzLmFkZGl0aW9uYWxXZWJ2aWV3QnVuZGxlSWRzKTtcbiAgICB9XG5cbiAgICAvLyBmaW5hbGx5LCByZXR1cm4gdHJ1ZSBzaW5jZSB0aGUgc3VwZXJjbGFzcyBjaGVjayBwYXNzZWQsIGFzIGRpZCB0aGlzXG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBhc3luYyBpbnN0YWxsQVVUICgpIHtcbiAgICBpZiAodGhpcy5pc1NhZmFyaSgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgYXdhaXQgdmVyaWZ5QXBwbGljYXRpb25QbGF0Zm9ybSh0aGlzLm9wdHMuYXBwLCB7XG4gICAgICBpc1NpbXVsYXRvcjogdGhpcy5pc1NpbXVsYXRvcigpLFxuICAgICAgaXNUdk9TOiB0aGlzLmlzVHZPUygpLFxuICAgIH0pO1xuXG4gICAgaWYgKHRoaXMuaXNSZWFsRGV2aWNlKCkpIHtcbiAgICAgIGF3YWl0IGluc3RhbGxUb1JlYWxEZXZpY2UodGhpcy5vcHRzLmRldmljZSwgdGhpcy5vcHRzLmFwcCwgdGhpcy5vcHRzLmJ1bmRsZUlkLCB7XG4gICAgICAgIG5vUmVzZXQ6IHRoaXMub3B0cy5ub1Jlc2V0LFxuICAgICAgICB0aW1lb3V0OiB0aGlzLm9wdHMuYXBwUHVzaFRpbWVvdXQsXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgaW5zdGFsbFRvU2ltdWxhdG9yKHRoaXMub3B0cy5kZXZpY2UsIHRoaXMub3B0cy5hcHAsIHRoaXMub3B0cy5idW5kbGVJZCwge1xuICAgICAgICBub1Jlc2V0OiB0aGlzLm9wdHMubm9SZXNldCxcbiAgICAgICAgbmV3U2ltdWxhdG9yOiB0aGlzLmxpZmVjeWNsZURhdGEuY3JlYXRlU2ltLFxuICAgICAgfSk7XG4gICAgfVxuICAgIGlmICh0aGlzLm9wdHMub3RoZXJBcHBzKSB7XG4gICAgICBhd2FpdCB0aGlzLmluc3RhbGxPdGhlckFwcHModGhpcy5vcHRzLm90aGVyQXBwcyk7XG4gICAgfVxuXG4gICAgaWYgKHV0aWwuaGFzVmFsdWUodGhpcy5vcHRzLmlvc0luc3RhbGxQYXVzZSkpIHtcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9hcHBpdW0vYXBwaXVtL2lzc3Vlcy82ODg5XG4gICAgICBsZXQgcGF1c2UgPSBwYXJzZUludCh0aGlzLm9wdHMuaW9zSW5zdGFsbFBhdXNlLCAxMCk7XG4gICAgICBsb2cuZGVidWcoYGlvc0luc3RhbGxQYXVzZSBzZXQuIFBhdXNpbmcgJHtwYXVzZX0gbXMgYmVmb3JlIGNvbnRpbnVpbmdgKTtcbiAgICAgIGF3YWl0IEIuZGVsYXkocGF1c2UpO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGluc3RhbGxPdGhlckFwcHMgKG90aGVyQXBwcykge1xuICAgIGlmICh0aGlzLmlzUmVhbERldmljZSgpKSB7XG4gICAgICBsb2cud2FybignQ2FwYWJpbGl0eSBvdGhlckFwcHMgaXMgb25seSBzdXBwb3J0ZWQgZm9yIFNpbXVsYXRvcnMnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIG90aGVyQXBwcyA9IHRoaXMuaGVscGVycy5wYXJzZUNhcHNBcnJheShvdGhlckFwcHMpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGxvZy5lcnJvckFuZFRocm93KGBDb3VsZCBub3QgcGFyc2UgXCJvdGhlckFwcHNcIiBjYXBhYmlsaXR5OiAke2UubWVzc2FnZX1gKTtcbiAgICB9XG4gICAgZm9yIChjb25zdCBvdGhlckFwcCBvZiBvdGhlckFwcHMpIHtcbiAgICAgIGF3YWl0IGluc3RhbGxUb1NpbXVsYXRvcih0aGlzLm9wdHMuZGV2aWNlLCBvdGhlckFwcCwgdW5kZWZpbmVkLCB7XG4gICAgICAgIG5vUmVzZXQ6IHRoaXMub3B0cy5ub1Jlc2V0LFxuICAgICAgICBuZXdTaW11bGF0b3I6IHRoaXMubGlmZWN5Y2xlRGF0YS5jcmVhdGVTaW0sXG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogU2V0IHJlZHVjZU1vdGlvbiBhcyAnaXNFbmFibGVkJyBvbmx5IHdoZW4gdGhlIGNhcGFiaWxpdGllcyBoYXMgJ3JlZHVjZU1vdGlvbidcbiAgICogVGhlIGNhbGwgaXMgaWdub3JlZCBmb3IgcmVhbCBkZXZpY2VzLlxuICAgKiBAcGFyYW0gez9ib29sZWFufSBpc0VuYWJsZWQgV2V0aGVyIGVuYWJsZSByZWR1Y2VNb3Rpb25cbiAgICovXG4gIGFzeW5jIHNldFJlZHVjZU1vdGlvbiAoaXNFbmFibGVkKSB7XG4gICAgaWYgKHRoaXMuaXNSZWFsRGV2aWNlKCkgfHwgIV8uaXNCb29sZWFuKGlzRW5hYmxlZCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsb2cuaW5mbyhgU2V0dGluZyByZWR1Y2VNb3Rpb24gdG8gJHtpc0VuYWJsZWR9YCk7XG4gICAgYXdhaXQgdGhpcy51cGRhdGVTZXR0aW5ncyh7cmVkdWNlTW90aW9uOiBpc0VuYWJsZWR9KTtcbiAgfVxuXG4gIGFzeW5jIHNldEluaXRpYWxPcmllbnRhdGlvbiAob3JpZW50YXRpb24pIHtcbiAgICBpZiAoIV8uaXNTdHJpbmcob3JpZW50YXRpb24pKSB7XG4gICAgICBsb2cuaW5mbygnU2tpcHBpbmcgc2V0dGluZyBvZiB0aGUgaW5pdGlhbCBkaXNwbGF5IG9yaWVudGF0aW9uLiAnICtcbiAgICAgICAgJ1NldCB0aGUgXCJvcmllbnRhdGlvblwiIGNhcGFiaWxpdHkgdG8gZWl0aGVyIFwiTEFORFNDQVBFXCIgb3IgXCJQT1JUUkFJVFwiLCBpZiB0aGlzIGlzIGFuIHVuZGVzaXJlZCBiZWhhdmlvci4nKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgb3JpZW50YXRpb24gPSBvcmllbnRhdGlvbi50b1VwcGVyQ2FzZSgpO1xuICAgIGlmICghXy5pbmNsdWRlcyhbJ0xBTkRTQ0FQRScsICdQT1JUUkFJVCddLCBvcmllbnRhdGlvbikpIHtcbiAgICAgIGxvZy5kZWJ1ZyhgVW5hYmxlIHRvIHNldCBpbml0aWFsIG9yaWVudGF0aW9uIHRvICcke29yaWVudGF0aW9ufSdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBTZXR0aW5nIGluaXRpYWwgb3JpZW50YXRpb24gdG8gJyR7b3JpZW50YXRpb259J2ApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLnByb3h5Q29tbWFuZCgnL29yaWVudGF0aW9uJywgJ1BPU1QnLCB7b3JpZW50YXRpb259KTtcbiAgICAgIHRoaXMub3B0cy5jdXJPcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLndhcm4oYFNldHRpbmcgaW5pdGlhbCBvcmllbnRhdGlvbiBmYWlsZWQgd2l0aDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0Q29tbWFuZFRpbWVvdXQgKGNtZE5hbWUpIHtcbiAgICBpZiAodGhpcy5vcHRzLmNvbW1hbmRUaW1lb3V0cykge1xuICAgICAgaWYgKGNtZE5hbWUgJiYgXy5oYXModGhpcy5vcHRzLmNvbW1hbmRUaW1lb3V0cywgY21kTmFtZSkpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMub3B0cy5jb21tYW5kVGltZW91dHNbY21kTmFtZV07XG4gICAgICB9XG4gICAgICByZXR1cm4gdGhpcy5vcHRzLmNvbW1hbmRUaW1lb3V0c1tERUZBVUxUX1RJTUVPVVRfS0VZXTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0IHNlc3Npb24gY2FwYWJpbGl0aWVzIG1lcmdlZCB3aXRoIHdoYXQgV0RBIHJlcG9ydHNcbiAgICogVGhpcyBpcyBhIGxpYnJhcnkgY29tbWFuZCBidXQgbmVlZHMgdG8gY2FsbCAnc3VwZXInIHNvIGNhbid0IGJlIG9uXG4gICAqIGEgaGVscGVyIG9iamVjdFxuICAgKi9cbiAgYXN5bmMgZ2V0U2Vzc2lvbiAoKSB7XG4gICAgLy8gY2FsbCBzdXBlciB0byBnZXQgZXZlbnQgdGltaW5ncywgZXRjLi4uXG4gICAgY29uc3QgZHJpdmVyU2Vzc2lvbiA9IGF3YWl0IHN1cGVyLmdldFNlc3Npb24oKTtcbiAgICBpZiAoIXRoaXMud2RhQ2Fwcykge1xuICAgICAgdGhpcy53ZGFDYXBzID0gYXdhaXQgdGhpcy5wcm94eUNvbW1hbmQoJy8nLCAnR0VUJyk7XG4gICAgfVxuXG4gICAgY29uc3Qgc2hvdWxkR2V0RGV2aWNlQ2FwcyA9IF8uaXNCb29sZWFuKHRoaXMub3B0cy5pbmNsdWRlRGV2aWNlQ2Fwc1RvU2Vzc2lvbkluZm8pXG4gICAgICA/IHRoaXMub3B0cy5pbmNsdWRlRGV2aWNlQ2Fwc1RvU2Vzc2lvbkluZm9cbiAgICAgIDogdHJ1ZTsgLy8gQmFja3dhcmQgY29tcGF0aWJpbGl0eVxuICAgIGlmIChzaG91bGRHZXREZXZpY2VDYXBzICYmICF0aGlzLmRldmljZUNhcHMpIHtcbiAgICAgIGNvbnN0IHtzdGF0dXNCYXJTaXplLCBzY2FsZX0gPSBhd2FpdCB0aGlzLmdldFNjcmVlbkluZm8oKTtcbiAgICAgIHRoaXMuZGV2aWNlQ2FwcyA9IHtcbiAgICAgICAgcGl4ZWxSYXRpbzogc2NhbGUsXG4gICAgICAgIHN0YXRCYXJIZWlnaHQ6IHN0YXR1c0JhclNpemUuaGVpZ2h0LFxuICAgICAgICB2aWV3cG9ydFJlY3Q6IGF3YWl0IHRoaXMuZ2V0Vmlld3BvcnRSZWN0KCksXG4gICAgICB9O1xuICAgIH1cbiAgICBsb2cuaW5mbygnTWVyZ2luZyBXREEgY2FwcyBvdmVyIEFwcGl1bSBjYXBzIGZvciBzZXNzaW9uIGRldGFpbCByZXNwb25zZScpO1xuICAgIHJldHVybiBPYmplY3QuYXNzaWduKHt1ZGlkOiB0aGlzLm9wdHMudWRpZH0sIGRyaXZlclNlc3Npb24sXG4gICAgICB0aGlzLndkYUNhcHMuY2FwYWJpbGl0aWVzLCB0aGlzLmRldmljZUNhcHMgfHwge30pO1xuICB9XG5cbiAgYXN5bmMgcmVzZXQgKCkge1xuICAgIGlmICh0aGlzLm9wdHMubm9SZXNldCkge1xuICAgICAgLy8gVGhpcyBpcyB0byBtYWtlIHN1cmUgcmVzZXQgaGFwcGVucyBldmVuIGlmIG5vUmVzZXQgaXMgc2V0IHRvIHRydWVcbiAgICAgIGxldCBvcHRzID0gXy5jbG9uZURlZXAodGhpcy5vcHRzKTtcbiAgICAgIG9wdHMubm9SZXNldCA9IGZhbHNlO1xuICAgICAgb3B0cy5mdWxsUmVzZXQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IHNodXRkb3duSGFuZGxlciA9IHRoaXMucmVzZXRPblVuZXhwZWN0ZWRTaHV0ZG93bjtcbiAgICAgIHRoaXMucmVzZXRPblVuZXhwZWN0ZWRTaHV0ZG93biA9ICgpID0+IHt9O1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5ydW5SZXNldChvcHRzKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHRoaXMucmVzZXRPblVuZXhwZWN0ZWRTaHV0ZG93biA9IHNodXRkb3duSGFuZGxlcjtcbiAgICAgIH1cbiAgICB9XG4gICAgYXdhaXQgc3VwZXIucmVzZXQoKTtcbiAgfVxufVxuXG5PYmplY3QuYXNzaWduKFhDVUlUZXN0RHJpdmVyLnByb3RvdHlwZSwgY29tbWFuZHMpO1xuXG5leHBvcnQgZGVmYXVsdCBYQ1VJVGVzdERyaXZlcjtcbmV4cG9ydCB7IFhDVUlUZXN0RHJpdmVyIH07XG4iXSwiZmlsZSI6ImxpYi9kcml2ZXIuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
@@ -121,6 +121,8 @@ extensions.executeMobile = async function executeMobile (mobileCommand, opts = {
121
121
 
122
122
  pushNotification: 'mobilePushNotification',
123
123
  expectNotification: 'mobileExpectNotification',
124
+
125
+ performIoHidEvent: 'mobilePerformIoHidEvent',
124
126
  };
125
127
 
126
128
  if (!_.has(commandMap, mobileCommand)) {
@@ -32,8 +32,9 @@ import permissionsExtensions from './permissions';
32
32
  import appearanceExtensions from './appearance';
33
33
  import xctestExtensions from './xctest';
34
34
  import notificationsExtensions from './notifications';
35
+ import iohidExtensions from './iohid';
35
36
 
36
- let commands = {};
37
+ const commands = {};
37
38
 
38
39
  Object.assign(commands, contextCommands, executeExtensions,
39
40
  gestureExtensions, findExtensions, proxyHelperExtensions, sourceExtensions,
@@ -44,7 +45,7 @@ Object.assign(commands, contextCommands, executeExtensions,
44
45
  clipboardExtensions, certificateExtensions, batteryExtensions, cookiesExtensions,
45
46
  biometricExtensions, keychainsExtensions, permissionsExtensions, deviceInfoExtensions,
46
47
  activeAppInfoExtensions, recordAudioExtensions, appearanceExtensions, xctestExtensions,
47
- notificationsExtensions,
48
+ notificationsExtensions, iohidExtensions,
48
49
  );
49
50
 
50
51
  export default commands;
@@ -0,0 +1,43 @@
1
+ import { errors } from 'appium-base-driver';
2
+
3
+ const commands = {};
4
+
5
+ /**
6
+ * @typedef {Object} HIDEventOptions
7
+ * @property {!number|string} page The event page identifier
8
+ * @property {!number|string} usage The event usage identifier (usages are defined per-page)
9
+ * @property {!number|string} durationSeconds The event duration in float seconds
10
+ * (XCTest uses 0.005 for a single press event)
11
+ */
12
+
13
+ /**
14
+ * Emulates triggering of the given low-level IO HID device event. The constants for possible events are defined
15
+ * in https://unix.superglobalmegacorp.com/xnu/newsrc/iokit/IOKit/hidsystem/IOHIDUsageTables.h.html
16
+ * Popular constants:
17
+ * - kHIDPage_Consumer = 0x0C
18
+ * - kHIDUsage_Csmr_VolumeIncrement = 0xE9 (Volume Up)
19
+ * - kHIDUsage_Csmr_VolumeDecrement = 0xEA (Volume Down)
20
+ * - kHIDUsage_Csmr_Menu = 0x40 (Home)
21
+ * - kHIDUsage_Csmr_Power = 0x30 (Power)
22
+ * - kHIDUsage_Csmr_Snapshot = 0x65 (Power + Home)
23
+ *
24
+ * @param {HIDEventOptions} opts
25
+ */
26
+ commands.mobilePerformIoHidEvent = async function mobilePerformIoHidEvent (opts = {}) {
27
+ const page = parseInt(opts.page, 10);
28
+ if (Number.isNaN(page)) {
29
+ throw new errors.InvalidArgumentError(`'page' argument must be a valid integer`);
30
+ }
31
+ const usage = parseInt(opts.usage, 10);
32
+ if (Number.isNaN(usage)) {
33
+ throw new errors.InvalidArgumentError(`'usage' argument must be a valid integer`);
34
+ }
35
+ const duration = parseFloat(opts.durationSeconds);
36
+ if (Number.isNaN(duration)) {
37
+ throw new errors.InvalidArgumentError(`'durationSeconds' argument must be a valid number`);
38
+ }
39
+ return await this.proxyCommand('/wda/performIoHidEvent', 'POST', { page, usage, duration });
40
+ };
41
+
42
+ export { commands };
43
+ export default commands;
@@ -241,6 +241,12 @@ let desiredCapConstraints = _.defaults({
241
241
  },
242
242
  includeDeviceCapsToSessionInfo: {
243
243
  isBoolean: true,
244
+ },
245
+ disableAutomaticScreenshots: {
246
+ isBoolean: true,
247
+ },
248
+ shouldTerminateApp: {
249
+ isBoolean: true,
244
250
  }
245
251
  }, iosDesiredCapConstraints);
246
252
 
@@ -101,7 +101,7 @@ class IOSSimulatorLog extends IOSLog {
101
101
  if (!this.proc.isRunning) {
102
102
  return;
103
103
  }
104
- logger.warn('Cannot stop log capture process. Sending SIGKILL...');
104
+ log.warn('Cannot stop log capture process. Sending SIGKILL');
105
105
  await this.proc.stop('SIGKILL');
106
106
  }
107
107
  }
package/lib/driver.js CHANGED
@@ -956,6 +956,8 @@ class XCUITestDriver extends BaseDriver {
956
956
  waitForIdleTimeout: this.opts.waitForIdleTimeout,
957
957
  shouldUseCompactResponses: this.opts.shouldUseCompactResponses,
958
958
  elementResponseFields: this.opts.elementResponseFields,
959
+ disableAutomaticScreenshots: this.opts.disableAutomaticScreenshots,
960
+ shouldTerminateApp: this.opts.shouldTerminateApp ?? true
959
961
  };
960
962
  if (this.opts.autoAcceptAlerts) {
961
963
  wdaCaps.defaultAlertAction = 'accept';
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "xcuitest",
9
9
  "xctest"
10
10
  ],
11
- "version": "3.40.0",
11
+ "version": "3.43.0",
12
12
  "author": "appium",
13
13
  "license": "Apache-2.0",
14
14
  "repository": {
@@ -51,7 +51,7 @@
51
51
  "appium-ios-simulator": "^3.25.1",
52
52
  "appium-remote-debugger": "^8.13.2",
53
53
  "appium-support": "^2.47.1",
54
- "appium-webdriveragent": "^3.4.0",
54
+ "appium-webdriveragent": "^3.8.0",
55
55
  "appium-xcode": "^3.8.0",
56
56
  "async-lock": "^1.0.0",
57
57
  "asyncbox": "^2.3.1",
@@ -116,7 +116,7 @@
116
116
  "pngjs": "^6.0.0",
117
117
  "pre-commit": "^1.1.3",
118
118
  "semantic-release": "^17.1.2",
119
- "sinon": "^9.0.0",
119
+ "sinon": "^10.0.0",
120
120
  "wd": "^1.5.0"
121
121
  }
122
122
  }