oxygen-cli 1.22.0-beta.2 → 1.22.2

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/CHANGELOG.md CHANGED
@@ -1,5 +1,29 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## v1.22.1 (2022-04-28)
4
+
5
+ #### :beetle: Bug Fix
6
+ * Fix test execution on Firefox.
7
+ * Convert body to object in http.get when nessasry.
8
+ * Catch and ignore device logs retrieval issue, if cloud provider doesn't support this operation.
9
+
10
+ ## v1.22.0 (2022-01-14)
11
+
12
+ #### :tada: New Feature
13
+ * Add `utils.xmlToJson`.
14
+
15
+ #### :beetle: Bug Fix
16
+ * Invalid line number printed for certain errors.
17
+ * Number of issues with BrowserStack integration.
18
+ * Number of issues with `shell` module.
19
+
20
+ #### :nail_care: Polish
21
+ * Documentation improvements.
22
+ * Increase `http` module's default response timeout from 30 to 60 seconds.
23
+
24
+ #### :house: Internal
25
+ * Bump dependencies.
26
+
3
27
  ## v1.21.0 (2022-01-17)
4
28
 
5
29
  #### :boom: Breaking Change
@@ -35,6 +35,7 @@ const ERROR_CODES = {
35
35
  DB_CONNECTION_ERROR: 'DB_CONNECTION_ERROR',
36
36
  DB_QUERY_ERROR: 'DB_QUERY_ERROR',
37
37
  SOAP_ERROR: 'SOAP_ERROR',
38
+ SHELL_ERROR: 'SHELL_ERROR',
38
39
  NOT_IMPLEMENTED_ERROR: 'NOT_IMPLEMENTED_ERROR',
39
40
  SERIAL_PORT_ERROR: 'SERIAL_PORT_ERROR',
40
41
  HTTP_ERROR: 'HTTP_ERROR',
@@ -285,4 +286,4 @@ function extractOriginalError(msg) {
285
286
 
286
287
  return msg;
287
288
  }
288
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvaGVscGVyLmpzIl0sIm5hbWVzIjpbInV0aWwiLCJyZXF1aXJlIiwiRVJST1JfQ09ERVMiLCJTQ1JJUFRfRVJST1IiLCJVTktOT1dOX0VSUk9SIiwiQVNTRVJUX0VSUk9SIiwiUERGX0VSUk9SIiwiVkVSSUZZX0VSUk9SIiwiRUxFTUVOVF9OT1RfRk9VTkQiLCJGUkFNRV9OT1RfRk9VTkQiLCJVTktOT1dOX0NPTU1BTkRfRVJST1IiLCJTVEFMRV9FTEVNRU5UX1JFRkVSRU5DRSIsIkVMRU1FTlRfTk9UX1ZJU0lCTEUiLCJFTEVNRU5UX05PVF9JTlRFUkFDVEFCTEUiLCJMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFMiLCJFTEVNRU5UX1NUSUxMX0VYSVNUUyIsIkJST1dTRVJfSlNfRVhFQ1VURV9FUlJPUiIsIlRJTUVPVVQiLCJXSU5ET1dfTk9UX0ZPVU5EIiwiVU5FWFBFQ1RFRF9BTEVSVF9PUEVOIiwiTk9fQUxFUlRfT1BFTl9FUlJPUiIsIk1BSUxJTkFUT1JfRVJST1IiLCJBUFBJVU1fVU5SRUFDSEFCTEVfRVJST1IiLCJTRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUiIsIkNIUk9NRURSSVZFUl9FUlJPUiIsIldFQkRSSVZFUl9FUlJPUiIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJEQl9RVUVSWV9FUlJPUiIsIlNPQVBfRVJST1IiLCJOT1RfSU1QTEVNRU5URURfRVJST1IiLCJTRVJJQUxfUE9SVF9FUlJPUiIsIkhUVFBfRVJST1IiLCJFTUFJTF9FUlJPUiIsIk1PRFVMRV9OT1RfSU5JVElBTElaRURfRVJST1IiLCJERVZJQ0VfTk9UX0ZPVU5EIiwiUEFSQU1FVEVSU19FUlJPUiIsIklOVkFMSURfQ0FQQUJJTElUSUVTIiwiQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SIiwiQVBQSVVNX0NPTk5FQ1RJT05fRVJST1IiLCJBUFBJVU1fU0VTU0lPTl9FUlJPUiIsIlNFTEVOSVVNX1NFU1NJT05fRVJST1IiLCJTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQiLCJTRUxFTklVTV9DT05ORUNUSU9OX0VSUk9SIiwiVVJMX09QRU5fRVJST1IiLCJPUFRJT05fTk9UX0ZPVU5EIiwiQVRUUklCVVRFX05PVF9GT1VORCIsIkVMRU1FTlRfU1RBVEVfRVJST1IiLCJNT0JJTEVfQ09OVEVYVF9FUlJPUiIsIkFQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUiIsIlRXSUxJT19FUlJPUiIsIkhPT0tfRVJST1IiLCJOT1RfU1VQUE9SVEVEIiwiQVNTRVJUX1BBU1NFRCIsIk1PRFVMRV9OT1RfRk9VTkQiLCJGSUxFX0JST1dTRV9FUlJPUiIsIkNTVl9FUlJPUiIsIkNSWVBUT19FUlJPUiIsIkROU19FUlJPUiIsIkNJUkNVTEFSX0VSUk9SIiwiWE1MX0VSUk9SIiwiQ0hBSV9FUlJPUl9DT0RFUyIsIkFzc2VydGlvbkVycm9yIiwiU0NSSVBUX0VSUk9SX0NPREVTIiwiVHlwZUVycm9yIiwiU3ludGF4RXJyb3IiLCJSZWZlcmVuY2VFcnJvciIsIm1vZHVsZSIsImV4cG9ydHMiLCJnZXRGYWlsdXJlRnJvbUVycm9yIiwiZXJyIiwiT3hFcnJvciIsImdldE94eWdlbkVycm9yIiwidHlwZSIsIm1lc3NhZ2UiLCJkYXRhIiwibG9jYXRpb24iLCJzdGFja3RyYWNlIiwiZ2V0RGJFcnJvck1lc3NhZ2UiLCJvZGJjRXJyb3JzIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwibWFwIiwiaXRlbSIsImNtZCIsImFyZ3MiLCJlcnJUeXBlIiwibmFtZSIsImluY2x1ZGVzIiwibWF0Y2hlcyIsIm1hdGNoIiwic3RhcnRzV2l0aCIsImV4dHJhY3RPcmlnaW5hbEVycm9yIiwiT1JJR0lOQUxfRVJST1JfTUVTU0FHRSIsImluc3BlY3QiLCJjb2RlIiwiZXJyTWVzc2FnZSIsInJlcGxhY2UiLCJveEVycm9yQ29kZSIsIkFTU0VSVCIsImluZGV4T2YiLCJWRVJJRlkiLCJjb25zb2xlIiwibG9nIiwiZ2V0U2VsZW5pdW1Jbml0RXJyb3IiLCJpZVpvb21FcnJvck1zZyIsInRvU3RyaW5nIiwiY2hyb21lRHJpdmVyTXNnIiwiZ2V0QXBwaXVtSW5pdEVycm9yIiwiZ2V0QXNzZXJ0RXJyb3IiLCJleHBlY3RlZCIsImFjdHVhbCIsImVycm9yQ29kZSIsIlVOS05PV05fRVJST1JfTUVTU0FHRSIsIm1zZyIsImVycm9ySW5kZXgxIiwiZXJyb3JJbmRleDIiLCJzdWJzdHJpbmciLCJ1bmtub3duRXJyb3JJbmRleCJdLCJtYXBwaW5ncyI6Ijs7OztBQWFBOzs7O0FBQ0EsTUFBTUEsSUFBSSxHQUFHQyxPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFFQSxNQUFNQyxXQUFXLEdBQUc7QUFDaEJDLEVBQUFBLFlBQVksRUFBRSxjQURFO0FBRWhCQyxFQUFBQSxhQUFhLEVBQUUsZUFGQztBQUdoQkMsRUFBQUEsWUFBWSxFQUFFLGNBSEU7QUFJaEJDLEVBQUFBLFNBQVMsRUFBRSxXQUpLO0FBS2hCQyxFQUFBQSxZQUFZLEVBQUUsY0FMRTtBQU1oQkMsRUFBQUEsaUJBQWlCLEVBQUUsbUJBTkg7QUFPaEJDLEVBQUFBLGVBQWUsRUFBRSxpQkFQRDtBQVFoQkMsRUFBQUEscUJBQXFCLEVBQUUsdUJBUlA7QUFTaEJDLEVBQUFBLHVCQUF1QixFQUFFLHlCQVRUO0FBVWhCQyxFQUFBQSxtQkFBbUIsRUFBRSxxQkFWTDtBQVdoQkMsRUFBQUEsd0JBQXdCLEVBQUUsMEJBWFY7QUFZaEJDLEVBQUFBLGlDQUFpQyxFQUFFLG1DQVpuQjtBQWFoQkMsRUFBQUEsb0JBQW9CLEVBQUUsc0JBYk47QUFjaEJDLEVBQUFBLHdCQUF3QixFQUFFLDBCQWRWO0FBZWhCQyxFQUFBQSxPQUFPLEVBQUUsU0FmTztBQWdCaEJDLEVBQUFBLGdCQUFnQixFQUFFLGtCQWhCRjtBQWlCaEJDLEVBQUFBLHFCQUFxQixFQUFFLHVCQWpCUDtBQWtCaEJDLEVBQUFBLG1CQUFtQixFQUFFLHFCQWxCTDtBQW1CaEJDLEVBQUFBLGdCQUFnQixFQUFFLGtCQW5CRjtBQW9CaEJDLEVBQUFBLHdCQUF3QixFQUFFLDBCQXBCVjtBQXFC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Q0FBZixHQUFtQkEsV0FBbkIsR0FBaUNELFdBQWxDLElBQWtEdEIsc0JBQXNCLENBQUNaLE1BQXZGLENBQU47QUFHQSxNQUFJcUMsaUJBQWlCLEdBQUdKLEdBQUcsQ0FBQ2QsT0FBSixDQUFZYSxxQkFBWixDQUF4Qjs7QUFDQSxNQUFJSyxpQkFBaUIsR0FBRyxDQUFDLENBQXpCLEVBQTRCO0FBQ3hCLFdBQU9KLEdBQUcsQ0FBQ0csU0FBSixDQUFjQyxpQkFBaUIsR0FBR0wscUJBQXFCLENBQUNoQyxNQUF4RCxDQUFQO0FBQ0g7O0FBRUQsU0FBT2lDLEdBQVA7QUFDSCIsInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxuLyoqXHJcbiAqIEhlbHBlciBtb2R1bGUgZm9yIGhhbmRsaW5nIGFuZCBjb252ZXJ0aW5nIHZhcmlvdXMgZXJyb3IgdHlwZXNcclxuICovXHJcblxyXG5pbXBvcnQgT3hFcnJvciBmcm9tICcuL094eWdlbkVycm9yJztcclxuY29uc3QgdXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcclxuXHJcbmNvbnN0IEVSUk9SX0NPREVTID0ge1xyXG4gICAgU0NSSVBUX0VSUk9SOiAnU0NSSVBUX0VSUk9SJyxcclxuICAgIFVOS05PV05fRVJST1I6ICdVTktOT1dOX0VSUk9SJyxcclxuICAgIEFTU0VSVF9FUlJPUjogJ0FTU0VSVF9FUlJPUicsXHJcbiAgICBQREZfRVJST1I6ICdQREZfRVJST1InLFxyXG4gICAgVkVSSUZZX0VSUk9SOiAnVkVSSUZZX0VSUk9SJyxcclxuICAgIEVMRU1FTlRfTk9UX0ZPVU5EOiAnRUxFTUVOVF9OT1RfRk9VTkQnLFxyXG4gICAgRlJBTUVfTk9UX0ZPVU5EOiAnRlJBTUVfTk9UX0ZPVU5EJyxcclxuICAgIFVOS05PV05fQ09NTUFORF9FUlJPUjogJ1VOS05PV05fQ09NTUFORF9FUlJPUicsXHJcbiAgICBTVEFMRV9FTEVNRU5UX1JFRkVSRU5DRTogJ1NUQUxFX0VMRU1FTlRfUkVGRVJFTkNFJyxcclxuICAgIEVMRU1FTlRfTk9UX1ZJU0lCTEU6ICdFTEVNRU5UX05PVF9WSVNJQkxFJyxcclxuICAgIEVMRU1FTlRfTk9UX0lOVEVSQUNUQUJMRTogJ0VMRU1FTlRfTk9UX0lOVEVSQUNUQUJMRScsXHJcbiAgICBMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFM6ICdMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFMnLFxyXG4gICAgRUxFTUVOVF9TVElMTF9FWElTVFM6ICdFTEVNRU5UX1NUSUxMX0VYSVNUUycsXHJcbiAgICBCUk9XU0VSX0pTX0VYRUNVVEVfRVJST1I6ICdCUk9XU0VSX0pTX0VYRUNVVEVfRVJST1InLFxyXG4gICAgVElNRU9VVDogJ1RJTUVPVVQnLFxyXG4gICAgV0lORE9XX05PVF9GT1VORDogJ1dJTkRPV19OT1RfRk9VTkQnLFxyXG4gICAgVU5FWFBFQ1RFRF9BTEVSVF9PUEVOOiAnVU5FWFBFQ1RFRF9BTEVSVF9PUEVOJyxcclxuICAgIE5PX0FMRVJUX09QRU5fRVJST1I6ICdOT19BTEVSVF9PUEVOX0VSUk9SJyxcclxuICAgIE1BSUxJTkFUT1JfRVJST1I6ICdNQUlMSU5BVE9SX0VSUk9SJyxcclxuICAgIEFQUElVTV9VTlJFQUNIQUJMRV9FUlJPUjogJ0FQUElVTV9VTlJFQUNIQUJMRV9FUlJPUicsXHJcbiAgICBTRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUjogJ1NFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SJyxcclxuICAgIENIUk9NRURSSVZFUl9FUlJPUjogJ0NIUk9NRURSSVZFUl9FUlJPUicsXHJcbiAgICBXRUJEUklWRVJfRVJST1I6ICdXRUJEUklWRVJfRVJST1InLFxyXG4gICAgREJfQ09OTkVDVElPTl9FUlJPUjogJ0RCX0NPTk5FQ1RJT05fRVJST1InLFxyXG4gICAgREJfUVVFUllfRVJST1I6ICdEQl9RVUVSWV9FUlJPUicsXHJcbiAgICBTT0FQX0VSUk9SOiAnU09BUF9FUlJPUicsXHJcbiAgICBOT1RfSU1QTEVNRU5URURfRVJST1I6ICdOT1RfSU1QTEVNRU5URURfRVJST1InLFxyXG4gICAgU0VSSUFMX1BPUlRfRVJST1I6ICdTRVJJQUxfUE9SVF9FUlJPUicsXHJcbiAgICBIVFRQX0VSUk9SOiAnSFRUUF9FUlJPUicsXHJcbiAgICBFTUFJTF9FUlJPUjogJ0VNQUlMX0VSUk9SJyxcclxuICAgIE1PRFVMRV9OT1RfSU5JVElBTElaRURfRVJST1I6ICdNT0RVTEVfTk9UX0lOSVRJQUxJWkVEX0VSUk9SJyxcclxuICAgIERFVklDRV9OT1RfRk9VTkQ6ICdERVZJQ0VfTk9UX0ZPVU5EJyxcclxuICAgIFBBUkFNRVRFUlNfRVJST1I6ICdQQVJBTUVURVJTX0VSUk9SJyxcclxuICAgIElOVkFMSURfQ0FQQUJJTElUSUVTOiAnSU5WQUxJRF9DQVBBQklMSVRJRVMnLFxyXG4gICAgQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SOiAnQlJPV1NFUl9DT05GSUdVUkFUSU9OX0VSUk9SJyxcclxuICAgIEFQUElVTV9DT05ORUNUSU9OX0VSUk9SOiAnQVBQSVVNX0NPTk5FQ1RJT05fRVJST1InLFxyXG4gICAgQVBQSVVNX1NFU1NJT05fRVJST1I6ICdBUFBJVU1fU0VTU0lPTl9FUlJPUicsXHJcbiAgICBTRUxFTklVTV9TRVNTSU9OX0VSUk9SOiAnU0VMRU5JVU1fU0VTU0lPTl9FUlJPUicsXHJcbiAgICBTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQ6ICdTRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQnLFxyXG4gICAgU0VMRU5JVU1fQ09OTkVDVElPTl9FUlJPUjogJ1NFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1InLFxyXG4gICAgVVJMX09QRU5fRVJST1I6ICdVUkxfT1BFTl9FUlJPUicsXHJcbiAgICBPUFRJT05fTk9UX0ZPVU5EOiAnT1BUSU9OX05PVF9GT1VORCcsXHJcbiAgICBBVFRSSUJVVEVfTk9UX0ZPVU5EOiAnQVRUUklCVVRFX05PVF9GT1VORCcsXHJcbiAgICBFTEVNRU5UX1NUQVRFX0VSUk9SOiAnRUxFTUVOVF9TVEFURV9FUlJPUicsXHJcbiAgICBNT0JJTEVfQ09OVEVYVF9FUlJPUjogJ01PQklMRV9DT05URVhUX0VSUk9SJyxcclxuICAgIEFQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUjogJ0FQUExJQ0FUSU9OX05PVF9GT1VORF9FUlJPUicsXHJcbiAgICBUV0lMSU9fRVJST1I6ICdUV0lMSU9fRVJST1InLFxyXG4gICAgSE9PS19FUlJPUjogJ0hPT0tfRVJST1InLFxyXG4gICAgTk9UX1NVUFBPUlRFRDogJ05PVF9TVVBQT1JURUQnLFxyXG4gICAgQVNTRVJUX1BBU1NFRDogJ0FTU0VSVF9QQVNTRUQnLFxyXG4gICAgTU9EVUxFX05PVF9GT1VORDogJ01PRFVMRV9OT1RfRk9VTkQnLFxyXG4gICAgRklMRV9CUk9XU0VfRVJST1I6ICdGSUxFX0JST1dTRV9FUlJPUicsXHJcbiAgICBDU1ZfRVJST1I6ICdDU1ZfRVJST1InLFxyXG4gICAgQ1JZUFRPX0VSUk9SOiAnQ1JZUFRPX0VSUk9SJyxcclxuICAgIEROU19FUlJPUjogJ0ROU19FUlJPUicsXHJcbiAgICBDSVJDVUxBUl9FUlJPUjogJ0NJUkNVTEFSX0VSUk9SJyxcclxuICAgIFhNTF9FUlJPUjogJ1hNTF9FUlJPUidcclxufTtcclxuXHJcbi8vIENoYWkgdG8gT3h5Z2VuIGVycm9yIGNvZGVzIG1hcHBpbmdcclxuY29uc3QgQ0hBSV9FUlJPUl9DT0RFUyA9IHtcclxuICAgIEFzc2VydGlvbkVycm9yOiBFUlJPUl9DT0RFUy5BU1NFUlRfRVJST1JcclxufTtcclxuXHJcbi8vIEdlbmVyYWwgSmF2YVNjcmlwdCBlcnJvciBjb2RlcyBtYXBwaW5nXHJcbmNvbnN0IFNDUklQVF9FUlJPUl9DT0RFUyA9IHtcclxuICAgIFR5cGVFcnJvcjogRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLFxyXG4gICAgU3ludGF4RXJyb3I6IEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUixcclxuICAgIFJlZmVyZW5jZUVycm9yOiBFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsXHJcbn07XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuICAgIGdldEZhaWx1cmVGcm9tRXJyb3I6IGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgIGlmICghZXJyKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIShlcnIgaW5zdGFuY2VvZiBPeEVycm9yKSkge1xyXG4gICAgICAgICAgICBlcnIgPSB0aGlzLmdldE94eWdlbkVycm9yKGVycik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHR5cGU6IGVyci50eXBlLFxyXG4gICAgICAgICAgICBtZXNzYWdlOiBlcnIubWVzc2FnZSxcclxuICAgICAgICAgICAgZGF0YTogZXJyLmRhdGEsXHJcbiAgICAgICAgICAgIGxvY2F0aW9uOiBlcnIubG9jYXRpb24sXHJcbiAgICAgICAgICAgIHN0YWNrdHJhY2U6IGVyci5zdGFja3RyYWNlIHx8IG51bGxcclxuICAgICAgICB9O1xyXG4gICAgfSxcclxuICAgIGdldERiRXJyb3JNZXNzYWdlOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBsZXQgbWVzc2FnZSA9ICcnO1xyXG5cclxuICAgICAgICBpZiAoZXJyICYmIGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIG1lc3NhZ2UgKz0gZXJyLm1lc3NhZ2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGVyciAmJlxyXG4gICAgICAgICAgICBlcnIub2RiY0Vycm9ycyAmJlxyXG4gICAgICAgICAgICBBcnJheS5pc0FycmF5KGVyci5vZGJjRXJyb3JzKSAmJlxyXG4gICAgICAgICAgICBlcnIub2RiY0Vycm9ycy5sZW5ndGggPiAwXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGVyci5vZGJjRXJyb3JzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgICAgICAgIGl0ZW0gJiZcclxuICAgICAgICAgICAgICAgICAgICBpdGVtLm1lc3NhZ2VcclxuICAgICAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgKz0gJzogJyAraXRlbS5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBtZXNzYWdlO1xyXG4gICAgfSxcclxuICAgIGdldE94eWdlbkVycm9yOiBmdW5jdGlvbihlcnIsIG1vZHVsZSwgY21kLCBhcmdzKSB7XHJcbiAgICAgICAgLy8gcmV0dXJuIHRoZSBlcnJvciBhcyBpcyBpZiBpdCBoYXMgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZFxyXG4gICAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBPeEVycm9yKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBlcnI7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB2YXIgZXJyVHlwZSA9IGVyci50eXBlIHx8IGVyci5uYW1lIHx8IHR5cGVvZiBlcnI7XHJcbiAgICAgICAgLy8gaGFuZGxlIFwiQ2FuJ3QgY2FsbCA8Y29tbWFuZD4gb24gZWxlbWVudCB3aXRoIHNlbGVjdG9yIDxzZWxlY3Rvcj4gYmVjYXVzZSBlbGVtZW50IHdhc24ndCBmb3VuZFwiXHJcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdiZWNhdXNlIGVsZW1lbnQgd2FzblxcJ3QgZm91bmQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuRUxFTUVOVF9OT1RfRk9VTkQsIGVyci5tZXNzYWdlLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBoYW5kbGUgXCJpbnZhbGlkIGFyZ3VtZW50OiBVbnN1cHBvcnRlZCBsb2NhdG9yIHN0cmF0ZWd5OiAtYW5kcm9pZCB1aWF1dG9tYXRvclwiIGZvciBtb2JpbGUuXHJcbiAgICAgICAgLy8gdXN1YWxseSBkdWUgdG8gbm90IHVzaW5nIHRoZSBjb3JyZWN0IGNvbnRleHRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5zdXBwb3J0ZWQgbG9jYXRvciBzdHJhdGVneScpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goL2ludmFsaWQgYXJndW1lbnQ6ICguKikvaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5NT0JJTEVfQ09OVEVYVF9FUlJPUiwgKG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSArXHJcbiAgICAgICAgICAgICAgICAnLiBNYWtlIHN1cmUgeW91IGFyZSB1c2luZyB0aGUgY29ycmVjdCBtb2JpbGUgY29udGV4dC4gU2VlIG1vYi5zZXROYXRpdmVDb250ZXh0IGFuZCBtb2Iuc2V0V2ViVmlld0NvbnRleHQuJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGhhbmRsZSBcImludmFsaWQgc2VsZWN0b3I6IFVuYWJsZSB0byBsb2NhdGUgYW4gZWxlbWVudCB3aXRoIHRoZSB4cGF0aCBleHByZXNzaW9uXCJcclxuICAgICAgICAvLyB1c3VhbGx5IGR1ZSB0byBpbnZhbGlkIHhwYXRoXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBsb2NhdGUgYW4gZWxlbWVudCB3aXRoIHRoZSB4cGF0aCBleHByZXNzaW9uJykpIHtcclxuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBlcnIubWVzc2FnZS5tYXRjaCgvKFRoZSBzdHJpbmcgJy4qJyBpcyBub3QgYSB2YWxpZCBYUGF0aCBleHByZXNzaW9uLikvaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGludmFsaWQgY3NzIGxvY2F0b3Igb24gQ2hyb21lL0lFLiBlLmcuIGNzcz0jXFw6cDBcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnQW4gaW52YWxpZCBvciBpbGxlZ2FsIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLCAnQW4gaW52YWxpZCBvciBpbGxlZ2FsIHNlbGVjdG9yIHdhcyBzcGVjaWZpZWQnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW52YWxpZCBjc3MgbG9jYXRvciBvbiBGaXJlZm94LiBlLmcuIGNzcz0jXFw6cDBcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdHaXZlbiBjc3Mgc2VsZWN0b3IgZXhwcmVzc2lvbicpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goLyhHaXZlbiBjc3Mgc2VsZWN0b3IgZXhwcmVzc2lvbiBcIi4qXCIgaXMgaW52YWxpZCkuKi9pKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gYXV0b21hdGUgQ2hyb21lIHZlcnNpb24nKSB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZS5pbmNsdWRlcygnTm8gQ2hyb21lZHJpdmVyIGZvdW5kIHRoYXQgY2FuIGF1dG9tYXRlJykpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGhhbmRsZSB2YXJpb3VzIHR5cGVzIG9mICdPcmlnaW5hbCBlcnJvcidcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcyhPUklHSU5BTF9FUlJPUl9NRVNTQUdFKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVU5LTk9XTl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpLCB1dGlsLmluc3BlY3QoZXJyKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGludmFsaWQgVVJMIGluIG9wZW4gY29tbWFuZFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdJbnZhbGlkIFVSTCcpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goLyggSW52YWxpZCBVUkw6IC4qJCkuKi9pKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdXN1YWxseSBvbiBtb2JpbGUgQ2hyb21lIHdoZW4gZWxlbWVudCBpcyBvdmVybGFwcGVkIGJ5IGFub3RoZXIgZWxlbWVudFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ2VsZW1lbnQgY2xpY2sgaW50ZXJjZXB0ZWQnKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IGVyci5tZXNzYWdlLm1hdGNoKC9lbGVtZW50IGNsaWNrIGludGVyY2VwdGVkOiAoLiopL2kpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuRUxFTUVOVF9OT1RfVklTSUJMRSwgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGggPT09IDIgPyBtYXRjaGVzWzFdIDogZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gdXN1YWxseSBiZWNhdXNlIFNlbGVuaXVtIGhhcyBraWxsZWQgdGhlIHNlc3Npb24gZHVlIHRvIGV4Y2VlZGluZyAnLXRpbWVvdXQnIHRpbWVvdXRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdObyBhY3RpdmUgc2Vzc2lvbiB3aXRoIElEJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1NFU1NJT05fRVJST1IsICdFeGVjdXRpb24gdGltZSBleGNlZWRlZCB0aGUgdGltZW91dCBzZXQgYnkgU2VsZW5pdW0nKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2hlbiBkcml2ZXIgKElFRHJpdmVyU2VydmVyLCBDaHJvbWVEcml2ZXIsIGV0YykgY3Jhc2hlc1xyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlID09PSAnamF2YS5uZXQuQ29ubmVjdEV4Y2VwdGlvbjogQ29ubmVjdGlvbiByZWZ1c2VkOiBjb25uZWN0Jykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuV0VCRFJJVkVSX0VSUk9SLCAnVGhlIHVuZGVybHlpbmcgV2ViRHJpdmVyIHNlZW1zIHRvIGhhdmUgY3Jhc2hlZDogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gc3RhbGUgZWxlbWVudCByZWZlcmVuY2VcclxuICAgICAgICBlbHNlIGlmIChlcnIubmFtZSAmJiBlcnIubmFtZS5pbmNsdWRlcygnc3RhbGUgZWxlbWVudCByZWZlcmVuY2UnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU1RBTEVfRUxFTUVOVF9SRUZFUkVOQ0UsIGVyci5uYW1lICsgJyAnICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChlcnIuY29kZSAmJiBlcnIuY29kZSA9PT0gJ01PRFVMRV9OT1RfRk9VTkQnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5NT0RVTEVfTk9UX0ZPVU5ELCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vICB3aGVuIGRvaW5nIGFuIG9wZXJhdGlvbiBvbiBhbiBlbGVtZW50IChlLmcuIGNsaWNrKSBidXQgdGhlIHdpbmRvdyB3YXMgYWxyZWFkeSBjbG9zZWRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnbm8gc3VjaCB3aW5kb3cnKSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygndGFyZ2V0IHdpbmRvdyBhbHJlYWR5IGNsb3NlZCcpICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCd3ZWIgdmlldyBub3QgZm91bmQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuV0lORE9XX05PVF9GT1VORCwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBleGFtcGxlOiBUaGUgZWxlbWVudCB3aXRoIHNlbGVjdG9yICoqKiB5b3UgdHJ5aW5nIHRvIHBhc3MgaW50byB0aGUgZXhlY3V0ZSBtZXRob2Qgd2Fzbid0IGZvdW5kXHJcbiAgICAgICAgLy8gd2hlbiBlbGVtZW50IHdhcyBkZWxldGVkIGZyb20gRE9NXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ3lvdSB0cnlpbmcgdG8gcGFzcyBpbnRvIHRoZSBleGVjdXRlIG1ldGhvZCB3YXNuXFwndCBmb3VuZCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5FTEVNRU5UX05PVF9GT1VORCwgIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gd2hlbiBkb2luZyBhbiBvcGVyYXRpb24gb24gYW4gZWxlbWVudCByZWZlcmVuY2UgKGUuZy4gY2xpY2spIGJ1dCB0aGUgcGFnZSB3YXMgYWxyZWFkeSBjaGFuZ2VkXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2VsZW1lbnQgbm90IGludGVyYWN0YWJsZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5FTEVNRU5UX05PVF9JTlRFUkFDVEFCTEUsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaW52YWxpZCBzZWxlY3RvcjogamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbjogVW5hYmxlIHRvIGNvbXBpbGUgc2VsZWN0b3IgLi4uXHJcbiAgICAgICAgZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIGVyci5uYW1lICYmXHJcbiAgICAgICAgICAgIGVyci5uYW1lID09PSAnaW52YWxpZCBzZWxlY3RvcidcclxuICAgICAgICApIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBSZXF1ZXN0RXJyb3I6IFRpbWVvdXQgYXdhaXRpbmcgJ3JlcXVlc3QnIGZvciAzMTAwMDBtcywgbmFtZTogJ1RpbWVvdXRFcnJvcidcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVGltZW91dCBhd2FpdGluZyBcXCdyZXF1ZXN0XFwnIGZvcicpKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGVyck1lc3NhZ2UgPSBlcnIubWVzc2FnZS5yZXBsYWNlKFxyXG4gICAgICAgICAgICAgICAgJ1RpbWVvdXQgYXdhaXRpbmcgXFwncmVxdWVzdFxcJyBmb3InLFxyXG4gICAgICAgICAgICAgICAgJ0NvdWxkblxcJ3QgZ2V0IGEgcmVzcG9uc2UgZnJvbSBTZWxlbml1bS9XZWJEcml2ZXIgd2l0aGluJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VULCBlcnJNZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyICYmIGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdzb2NrZXQgaGFuZyB1cCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyciAmJiBlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVGltZWQgb3V0IHJlY2VpdmluZyBtZXNzYWdlIGZyb20gcmVuZGVyZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9TRVNTSU9OX1RJTUVPVVQsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRyeSB0byByZXNvbHZlIENoYWkgZXJyb3IgY29kZVxyXG4gICAgICAgIHZhciBveEVycm9yQ29kZSA9IENIQUlfRVJST1JfQ09ERVNbZXJyVHlwZV07XHJcbiAgICAgICAgaWYgKG94RXJyb3JDb2RlKSB7XHJcbiAgICAgICAgICAgIC8vIHRocm93IG5vbi1mYXRhbCBlcnJvciBpZiBpdCdzIGEgXCJ2ZXJpZnlcIiBtb2R1bGUgb3IgbWV0aG9kIFxyXG4gICAgICAgICAgICBpZiAob3hFcnJvckNvZGUgPT09IEVSUk9SX0NPREVTLkFTU0VSVCAmJlxyXG5cdFx0XHRcdChtb2R1bGUgPT09ICd2ZXJpZnknIHx8IGNtZC5pbmRleE9mKCd2ZXJpZnknKSA9PT0gMCkpIHsgLy8gdmVyaWZ5LiosICoudmVyaWZ5KlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlZFUklGWSwgZXJyLm1lc3NhZ2UsIG51bGwsIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3Iob3hFcnJvckNvZGUsIGVyci5tZXNzYWdlLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgLy8gdHJ5IHRvIHJlc29sdmUgSmF2YVNjcmlwdCBlcnJvciBjb2RlXHJcbiAgICAgICAgb3hFcnJvckNvZGUgPSBTQ1JJUFRfRVJST1JfQ09ERVNbZXJyVHlwZV07XHJcbiAgICAgICAgaWYgKG94RXJyb3JDb2RlKSB7XHJcbiAgICAgICAgICAgIC8vIHRocm93IG5vbi1mYXRhbCBlcnJvciBpZiBpdCdzIGEgXCJ2ZXJpZnlcIiBtb2R1bGUgb3IgbWV0aG9kIFxyXG4gICAgICAgICAgICBpZiAob3hFcnJvckNvZGUgPT09IEVSUk9SX0NPREVTLkFTU0VSVCAmJlxyXG5cdFx0XHRcdChtb2R1bGUgPT09ICd2ZXJpZnknIHx8IGNtZC5pbmRleE9mKCd2ZXJpZnknKSA9PT0gMCkpIHsgLy8gdmVyaWZ5LiosICoudmVyaWZ5KlxyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlZFUklGWSwgZXJyLm1lc3NhZ2UsIG51bGwsIGZhbHNlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3Iob3hFcnJvckNvZGUsIGVyci5tZXNzYWdlIHx8IG51bGwsIG51bGwsIHRydWUsIGVycik7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnPT09IEVycm9yIERldGFpbHMgPT09Jyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1R5cGU6ICcgKyBlcnIudHlwZSArICcgTmFtZTogJyArIGVyci5uYW1lICsgJyBDb2RlOiAnICsgZXJyLmNvZGUgKyAnIE1zZzogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh1dGlsLmluc3BlY3QoZXJyKSk7XHJcblxyXG4gICAgICAgIGNvbnN0IGVyck1lc3NhZ2UgPSBlcnIubWVzc2FnZSA/IGAke2VyclR5cGV9OiAke2Vyci5tZXNzYWdlfWAgOiBgJHtlcnJUeXBlfWA7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlVOS05PV05fRVJST1IsIGVyck1lc3NhZ2UsIHV0aWwuaW5zcGVjdChlcnIpLCB0cnVlLCBlcnIpO1xyXG4gICAgfSxcclxuICAgIGdldFNlbGVuaXVtSW5pdEVycm9yOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpIHtcclxuICAgICAgICAgICAgdmFyIGllWm9vbUVycm9yTXNnID0gZXJyLm1lc3NhZ2UubWF0Y2goLyhVbmV4cGVjdGVkIGVycm9yIGxhdW5jaGluZyBJbnRlcm5ldCBFeHBsb3JlclxcLiBCcm93c2VyIHpvb20gbGV2ZWwgd2FzIHNldCB0byBcXGQrJVxcLiBJdCBzaG91bGQgYmUgc2V0IHRvIFxcZCslKS9nbSk7XHJcbiAgICAgICAgICAgIGlmIChpZVpvb21FcnJvck1zZykge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkJST1dTRVJfQ09ORklHVVJBVElPTl9FUlJPUiwgaWVab29tRXJyb3JNc2cudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGNyZWF0ZSBuZXcgc2VydmljZTogQ2hyb21lRHJpdmVyU2VydmljZScpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBlcnIubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgaWYgKGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gY3JlYXRlIG5ldyBzZXJ2aWNlOicpKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fVU5SRUFDSEFCTEVfRVJST1IsIGVyci5tZXNzYWdlLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgY2hyb21lRHJpdmVyTXNnID0gZXJyLm1lc3NhZ2UubWF0Y2goLyhUaGlzIHZlcnNpb24gb2YgQ2hyb21lRHJpdmVyIG9ubHkgc3VwcG9ydHMgQ2hyb21lIHZlcnNpb24gWzAtOV0qKS9nbSk7XHJcbiAgICAgICAgICAgIGlmIChjaHJvbWVEcml2ZXJNc2cpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGNocm9tZURyaXZlck1zZy50b1N0cmluZygpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdjYW5ub3QgZmluZCBDaHJvbWUgYmluYXJ5JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgJ0Nhbm5vdCBmaW5kIENocm9tZSBiaW5hcnknKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5jb2RlID09PSAnRUNPTk5SRUZVU0VEJyB8fCBlcnIuY29kZSA9PT0gJ0VDT05OUkVTRVQnIHx8IGVyci5jb2RlID09PSAnRU5PVEZPVU5EJyB8fCBlcnIubWVzc2FnZSA9PT0gJ0ZhaWxlZCB0byBjcmVhdGUgc2Vzc2lvbi5cXG5zb2NrZXQgaGFuZyB1cCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SLCBcIkNvdWxkbid0IGNvbm5lY3QgdG8gU2VsZW5pdW0gc2VydmVyXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgPT09ICdBbGwgbWludXRlcyBmb3IgdGhpcyBvcmdhbml6YXRpb24gaGFzIGJlZW4gZXhhdXN0ZWQnIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlID09PSAnNDAxIFVuYXV0aG9yaXplZCcgfHxcclxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnRmFpbGVkIHRvIGNyZWF0ZSBzZXNzaW9uLicpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9DT05ORUNUSU9OX0VSUk9SLCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGNyZWF0ZSBuZXcgc2VydmljZTonKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fQ09OTkVDVElPTl9FUlJPUiwgZXJyLm1lc3NhZ2UgKyAnXFxuXFxuVGhpcyBpcyBwcm9iYWJseSBkdWUgdG8gbWlzc2luZyBDaHJvbWVEcml2ZXIvSUVEcml2ZXJTZXJ2ZXIvR2Vja29Ecml2ZXIgYmluYXJ5LlxcbicpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJz09PSBFcnJvciBEZXRhaWxzID09PScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUeXBlOiAnICsgZXJyLnR5cGUgKyAnIE5hbWU6ICcgKyBlcnIubmFtZSArICcgQ29kZTogJyArIGVyci5jb2RlICsgJyBNc2c6ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codXRpbC5pbnNwZWN0KGVycikpO1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVU5LTk9XTl9FUlJPUiwgZXJyLnR5cGUgKyAnOiAnICsgZXJyLm1lc3NhZ2UsIHV0aWwuaW5zcGVjdChlcnIpKTtcclxuICAgIH0sXHJcbiAgICBnZXRBcHBpdW1Jbml0RXJyb3I6IGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnY2Fubm90IGZpbmQgQ2hyb21lIGJpbmFyeScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsICdDYW5ub3QgZmluZCBDaHJvbWUgYmluYXJ5Jyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIuY29kZSA9PT0gJ0VDT05OUkVGVVNFRCcgfHwgZXJyLmNvZGUgPT09ICdFQ09OTlJFU0VUJyB8fCBlcnIuY29kZSA9PT0gJ0VOT1RGT1VORCcgfHwgZXJyLm1lc3NhZ2UgPT09ICdGYWlsZWQgdG8gY3JlYXRlIHNlc3Npb24uXFxuc29ja2V0IGhhbmcgdXAnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5BUFBJVU1fVU5SRUFDSEFCTEVfRVJST1IsIFwiQ291bGRuJ3QgY29ubmVjdCB0byBBcHBpdW0gc2VydmVyXCIpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0NvdWxkIG5vdCBmaW5kIGEgY29ubmVjdGVkIEFuZHJvaWQgZGV2aWNlJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkRFVklDRV9OT1RfRk9VTkQsICdDb3VsZCBub3QgZmluZCBhIGNvbm5lY3RlZCBBbmRyb2lkIGRldmljZScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBhdXRvbWF0ZSBDaHJvbWUgdmVyc2lvbicpKSB7ICAgICAgICAgIC8vIGFwcGl1bSA8PSAxLjE0XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnTm8gQ2hyb21lZHJpdmVyIGZvdW5kIHRoYXQgY2FuIGF1dG9tYXRlJykpIHsgICAgLy8gYXBwaXVtID49IDEuMTVcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gZmluZCBhbiBhY3RpdmUgZGV2aWNlIG9yIGVtdWxhdG9yIHdpdGgnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuREVWSUNFX05PVF9GT1VORCwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdpcyBub3QgaW5zdGFsbGVkIG9uIGRldmljZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5BUFBMSUNBVElPTl9OT1RfRk9VTkRfRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSA9PT0gJ0FsbCBtaW51dGVzIGZvciB0aGlzIG9yZ2FuaXphdGlvbiBoYXMgYmVlbiBleGF1c3RlZCcgfHxcclxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UgPT09ICc0MDEgVW5hdXRob3JpemVkJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVBQSVVNX0NPTk5FQ1RJT05fRVJST1IsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIChcclxuICAgICAgICAgICAgICAgIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdBIG5ldyBzZXNzaW9uIGNvdWxkIG5vdCBiZSBjcmVhdGVkLicpIHx8XHJcbiAgICAgICAgICAgICAgICBlcnIubWVzc2FnZS5pbmNsdWRlcygnRmFpbGVkIHRvIGNyZWF0ZSBzZXNzaW9uLicpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVBQSVVNX1NFU1NJT05fRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSwgbnVsbCwgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zb2xlLmxvZygnPT09IEVycm9yIERldGFpbHMgPT09Jyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ1R5cGU6ICcgKyBlcnIudHlwZSArICcgTmFtZTogJyArIGVyci5uYW1lICsgJyBDb2RlOiAnICsgZXJyLmNvZGUgKyAnIE1zZzogJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICBjb25zb2xlLmxvZyh1dGlsLmluc3BlY3QoZXJyKSk7XHJcblxyXG4gICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5VTktOT1dOX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSksIHV0aWwuaW5zcGVjdChlcnIpKTtcclxuICAgIH0sXHJcbiAgICBnZXRBc3NlcnRFcnJvcjogZnVuY3Rpb24oZXhwZWN0ZWQsIGFjdHVhbCkge1xyXG4gICAgICAgIGFjdHVhbCA9IGFjdHVhbC50b1N0cmluZygpLnJlcGxhY2UoL1xcbi9nLCAnXFxcXG4nKTtcclxuICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVNTRVJUX0VSUk9SLCBgRXhwZWN0ZWQ6IFwiJHtleHBlY3RlZH1cIi4gR290OiBcIiR7YWN0dWFsfVwiYCk7XHJcbiAgICB9LFxyXG4gICAgZXJyb3JDb2RlOiBFUlJPUl9DT0RFU1xyXG59O1xyXG5cclxuY29uc3QgT1JJR0lOQUxfRVJST1JfTUVTU0FHRSA9ICdPcmlnaW5hbCBlcnJvcjogJztcclxuY29uc3QgVU5LTk9XTl9FUlJPUl9NRVNTQUdFID0gJ3Vua25vd24gZXJyb3I6ICc7XHJcblxyXG5mdW5jdGlvbiBleHRyYWN0T3JpZ2luYWxFcnJvcihtc2cpIHtcclxuICAgIGlmICghbXNnKSB7XHJcbiAgICAgICAgcmV0dXJuICcnO1xyXG4gICAgfVxyXG5cclxuICAgIHZhciBlcnJvckluZGV4MSA9IG1zZy5pbmRleE9mKE9SSUdJTkFMX0VSUk9SX01FU1NBR0UpO1xyXG4gICAgaWYgKGVycm9ySW5kZXgxID09PSAtMSkge1xyXG4gICAgICAgIHJldHVybiBtc2c7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gdGhlcmUgY291bGQgYW5vdGhlIG5lc3RlZCBcIm9yaWdpbmFsIGVycm9yXCJcclxuICAgIHZhciBlcnJvckluZGV4MiA9IG1zZy5pbmRleE9mKE9SSUdJTkFMX0VSUk9SX01FU1NBR0UsIGVycm9ySW5kZXgxICsgT1JJR0lOQUxfRVJST1JfTUVTU0FHRS5sZW5ndGgpO1xyXG5cclxuICAgIG1zZyA9IG1zZy5zdWJzdHJpbmcoKGVycm9ySW5kZXgyID4gLTEgPyBlcnJvckluZGV4MiA6IGVycm9ySW5kZXgxKSAgKyBPUklHSU5BTF9FUlJPUl9NRVNTQUdFLmxlbmd0aCk7XHJcblxyXG4gICAgLy8gc3RyaXAgJ3Vua25vd24gZXJyb3I6J1xyXG4gICAgdmFyIHVua25vd25FcnJvckluZGV4ID0gbXNnLmluZGV4T2YoVU5LTk9XTl9FUlJPUl9NRVNTQUdFKTtcclxuICAgIGlmICh1bmtub3duRXJyb3JJbmRleCA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIG1zZy5zdWJzdHJpbmcodW5rbm93bkVycm9ySW5kZXggKyBVTktOT1dOX0VSUk9SX01FU1NBR0UubGVuZ3RoKTtcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gbXNnO1xyXG59XHJcbiJdfQ==
289
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9lcnJvcnMvaGVscGVyLmpzIl0sIm5hbWVzIjpbInV0aWwiLCJyZXF1aXJlIiwiRVJST1JfQ09ERVMiLCJTQ1JJUFRfRVJST1IiLCJVTktOT1dOX0VSUk9SIiwiQVNTRVJUX0VSUk9SIiwiUERGX0VSUk9SIiwiVkVSSUZZX0VSUk9SIiwiRUxFTUVOVF9OT1RfRk9VTkQiLCJGUkFNRV9OT1RfRk9VTkQiLCJVTktOT1dOX0NPTU1BTkRfRVJST1IiLCJTVEFMRV9FTEVNRU5UX1JFRkVSRU5DRSIsIkVMRU1FTlRfTk9UX1ZJU0lCTEUiLCJFTEVNRU5UX05PVF9JTlRFUkFDVEFCTEUiLCJMT0NBVE9SX01BVENIRVNfTVVMVElQTEVfRUxFTUVOVFMiLCJFTEVNRU5UX1NUSUxMX0VYSVNUUyIsIkJST1dTRVJfSlNfRVhFQ1VURV9FUlJPUiIsIlRJTUVPVVQiLCJXSU5ET1dfTk9UX0ZPVU5EIiwiVU5FWFBFQ1RFRF9BTEVSVF9PUEVOIiwiTk9fQUxFUlRfT1BFTl9FUlJPUiIsIk1BSUxJTkFUT1JfRVJST1IiLCJBUFBJVU1fVU5SRUFDSEFCTEVfRVJST1IiLCJTRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUiIsIkNIUk9NRURSSVZFUl9FUlJPUiIsIldFQkRSSVZFUl9FUlJPUiIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJEQl9RVUVSWV9FUlJPUiIsIlNPQVBfRVJST1IiLCJTSEVMTF9FUlJPUiIsIk5PVF9JTVBMRU1FTlRFRF9FUlJPUiIsIlNFUklBTF9QT1JUX0VSUk9SIiwiSFRUUF9FUlJPUiIsIkVNQUlMX0VSUk9SIiwiTU9EVUxFX05PVF9JTklUSUFMSVpFRF9FUlJPUiIsIkRFVklDRV9OT1RfRk9VTkQiLCJQQVJBTUVURVJTX0VSUk9SIiwiSU5WQUxJRF9DQVBBQklMSVRJRVMiLCJCUk9XU0VSX0NPTkZJR1VSQVRJT05fRVJST1IiLCJBUFBJVU1fQ09OTkVDVElPTl9FUlJPUiIsIkFQUElVTV9TRVNTSU9OX0VSUk9SIiwiU0VMRU5JVU1fU0VTU0lPTl9FUlJPUiIsIlNFTEVOSVVNX1NFU1NJT05fVElNRU9VVCIsIlNFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1IiLCJVUkxfT1BFTl9FUlJPUiIsIk9QVElPTl9OT1RfRk9VTkQiLCJBVFRSSUJVVEVfTk9UX0ZPVU5EIiwiRUxFTUVOVF9TVEFURV9FUlJPUiIsIk1PQklMRV9DT05URVhUX0VSUk9SIiwiQVBQTElDQVRJT05fTk9UX0ZPVU5EX0VSUk9SIiwiVFdJTElPX0VSUk9SIiwiSE9PS19FUlJPUiIsIk5PVF9TVVBQT1JURUQiLCJBU1NFUlRfUEFTU0VEIiwiTU9EVUxFX05PVF9GT1VORCIsIkZJTEVfQlJPV1NFX0VSUk9SIiwiQ1NWX0VSUk9SIiwiQ1JZUFRPX0VSUk9SIiwiRE5TX0VSUk9SIiwiQ0lSQ1VMQVJfRVJST1IiLCJYTUxfRVJST1IiLCJDSEFJX0VSUk9SX0NPREVTIiwiQXNzZXJ0aW9uRXJyb3IiLCJTQ1JJUFRfRVJST1JfQ09ERVMiLCJUeXBlRXJyb3IiLCJTeW50YXhFcnJvciIsIlJlZmVyZW5jZUVycm9yIiwibW9kdWxlIiwiZXhwb3J0cyIsImdldEZhaWx1cmVGcm9tRXJyb3IiLCJlcnIiLCJPeEVycm9yIiwiZ2V0T3h5Z2VuRXJyb3IiLCJ0eXBlIiwibWVzc2FnZSIsImRhdGEiLCJsb2NhdGlvbiIsInN0YWNrdHJhY2UiLCJnZXREYkVycm9yTWVzc2FnZSIsIm9kYmNFcnJvcnMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJtYXAiLCJpdGVtIiwiY21kIiwiYXJncyIsImVyclR5cGUiLCJuYW1lIiwiaW5jbHVkZXMiLCJtYXRjaGVzIiwibWF0Y2giLCJzdGFydHNXaXRoIiwiZXh0cmFjdE9yaWdpbmFsRXJyb3IiLCJPUklHSU5BTF9FUlJPUl9NRVNTQUdFIiwiaW5zcGVjdCIsImNvZGUiLCJlcnJNZXNzYWdlIiwicmVwbGFjZSIsIm94RXJyb3JDb2RlIiwiQVNTRVJUIiwiaW5kZXhPZiIsIlZFUklGWSIsImNvbnNvbGUiLCJsb2ciLCJnZXRTZWxlbml1bUluaXRFcnJvciIsImllWm9vbUVycm9yTXNnIiwidG9TdHJpbmciLCJjaHJvbWVEcml2ZXJNc2ciLCJnZXRBcHBpdW1Jbml0RXJyb3IiLCJnZXRBc3NlcnRFcnJvciIsImV4cGVjdGVkIiwiYWN0dWFsIiwiZXJyb3JDb2RlIiwiVU5LTk9XTl9FUlJPUl9NRVNTQUdFIiwibXNnIiwiZXJyb3JJbmRleDEiLCJlcnJvckluZGV4MiIsInN1YnN0cmluZyIsInVua25vd25FcnJvckluZGV4Il0sIm1hcHBpbmdzIjoiOzs7O0FBYUE7Ozs7QUFDQSxNQUFNQSxJQUFJLEdBQUdDLE9BQU8sQ0FBQyxNQUFELENBQXBCOztBQUVBLE1BQU1DLFdBQVcsR0FBRztBQUNoQkMsRUFBQUEsWUFBWSxFQUFFLGNBREU7QUFFaEJDLEVBQUFBLGFBQWEsRUFBRSxlQUZDO0FBR2hCQyxFQUFBQSxZQUFZLEVBQUUsY0FIRTtBQUloQkMsRUFBQUEsU0FBUyxFQUFFLFdBSks7QUFLaEJDLEVBQUFBLFlBQVksRUFBRSxjQUxFO0FBTWhCQyxFQUFBQSxpQkFBaUIsRUFBRSxtQkFOSDtBQU9oQkMsRUFBQUEsZUFBZSxFQUFFLGlCQVBEO0FBUWhCQyxFQUFBQSxxQkFBcUIsRUFBRSx1QkFSUDtBQVNoQkMsRUFBQUEsdUJBQXVCLEVBQUUseUJBVFQ7QUFVaEJDLEVBQUFBLG1CQUFtQixFQUFFLHFCQVZMO0FBV2hCQyxFQUFBQSx3QkFBd0IsRUFBRSwwQkFYVjtBQVloQkMsRUFBQUEsaUNBQWlDLEVBQUUsbUNBWm5CO0FBYWhCQyxFQUFBQSxvQkFBb0IsRUFBRSxzQkFiTjtBQWNoQkMsRUFBQUEsd0JBQXdCLEVBQUUsMEJBZFY7QUFlaEJDLEVBQUFBLE9BQU8sRUFBRSxTQWZPO0FBZ0JoQkMsRUFBQUEsZ0JBQWdCLEVBQUUsa0JBaEJGO0FBaUJoQkMsRUFBQUEscUJBQXFCLEVBQUUsdUJBakJQO0FBa0JoQkMsRUFBQUEsbUJBQW1CLEVBQUUscUJBbEJMO0FBbUJoQkMsRUFBQUEsZ0JBQWdCLEVBQUUsa0JBbkJGO0FBb0JoQkMsRUFBQUEsd0JBQXdCLEVB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QSxHQUFHLENBQUNHLFNBQUosQ0FBYyxDQUFDRCxXQUFXLEdBQUcsQ0FBQyxDQUFmLEdBQW1CQSxXQUFuQixHQUFpQ0QsV0FBbEMsSUFBa0R0QixzQkFBc0IsQ0FBQ1osTUFBdkYsQ0FBTjtBQUdBLE1BQUlxQyxpQkFBaUIsR0FBR0osR0FBRyxDQUFDZCxPQUFKLENBQVlhLHFCQUFaLENBQXhCOztBQUNBLE1BQUlLLGlCQUFpQixHQUFHLENBQUMsQ0FBekIsRUFBNEI7QUFDeEIsV0FBT0osR0FBRyxDQUFDRyxTQUFKLENBQWNDLGlCQUFpQixHQUFHTCxxQkFBcUIsQ0FBQ2hDLE1BQXhELENBQVA7QUFDSDs7QUFFRCxTQUFPaUMsR0FBUDtBQUNIIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogSGVscGVyIG1vZHVsZSBmb3IgaGFuZGxpbmcgYW5kIGNvbnZlcnRpbmcgdmFyaW91cyBlcnJvciB0eXBlc1xyXG4gKi9cclxuXHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4vT3h5Z2VuRXJyb3InO1xyXG5jb25zdCB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xyXG5cclxuY29uc3QgRVJST1JfQ09ERVMgPSB7XHJcbiAgICBTQ1JJUFRfRVJST1I6ICdTQ1JJUFRfRVJST1InLFxyXG4gICAgVU5LTk9XTl9FUlJPUjogJ1VOS05PV05fRVJST1InLFxyXG4gICAgQVNTRVJUX0VSUk9SOiAnQVNTRVJUX0VSUk9SJyxcclxuICAgIFBERl9FUlJPUjogJ1BERl9FUlJPUicsXHJcbiAgICBWRVJJRllfRVJST1I6ICdWRVJJRllfRVJST1InLFxyXG4gICAgRUxFTUVOVF9OT1RfRk9VTkQ6ICdFTEVNRU5UX05PVF9GT1VORCcsXHJcbiAgICBGUkFNRV9OT1RfRk9VTkQ6ICdGUkFNRV9OT1RfRk9VTkQnLFxyXG4gICAgVU5LTk9XTl9DT01NQU5EX0VSUk9SOiAnVU5LTk9XTl9DT01NQU5EX0VSUk9SJyxcclxuICAgIFNUQUxFX0VMRU1FTlRfUkVGRVJFTkNFOiAnU1RBTEVfRUxFTUVOVF9SRUZFUkVOQ0UnLFxyXG4gICAgRUxFTUVOVF9OT1RfVklTSUJMRTogJ0VMRU1FTlRfTk9UX1ZJU0lCTEUnLFxyXG4gICAgRUxFTUVOVF9OT1RfSU5URVJBQ1RBQkxFOiAnRUxFTUVOVF9OT1RfSU5URVJBQ1RBQkxFJyxcclxuICAgIExPQ0FUT1JfTUFUQ0hFU19NVUxUSVBMRV9FTEVNRU5UUzogJ0xPQ0FUT1JfTUFUQ0hFU19NVUxUSVBMRV9FTEVNRU5UUycsXHJcbiAgICBFTEVNRU5UX1NUSUxMX0VYSVNUUzogJ0VMRU1FTlRfU1RJTExfRVhJU1RTJyxcclxuICAgIEJST1dTRVJfSlNfRVhFQ1VURV9FUlJPUjogJ0JST1dTRVJfSlNfRVhFQ1VURV9FUlJPUicsXHJcbiAgICBUSU1FT1VUOiAnVElNRU9VVCcsXHJcbiAgICBXSU5ET1dfTk9UX0ZPVU5EOiAnV0lORE9XX05PVF9GT1VORCcsXHJcbiAgICBVTkVYUEVDVEVEX0FMRVJUX09QRU46ICdVTkVYUEVDVEVEX0FMRVJUX09QRU4nLFxyXG4gICAgTk9fQUxFUlRfT1BFTl9FUlJPUjogJ05PX0FMRVJUX09QRU5fRVJST1InLFxyXG4gICAgTUFJTElOQVRPUl9FUlJPUjogJ01BSUxJTkFUT1JfRVJST1InLFxyXG4gICAgQVBQSVVNX1VOUkVBQ0hBQkxFX0VSUk9SOiAnQVBQSVVNX1VOUkVBQ0hBQkxFX0VSUk9SJyxcclxuICAgIFNFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SOiAnU0VMRU5JVU1fVU5SRUFDSEFCTEVfRVJST1InLFxyXG4gICAgQ0hST01FRFJJVkVSX0VSUk9SOiAnQ0hST01FRFJJVkVSX0VSUk9SJyxcclxuICAgIFdFQkRSSVZFUl9FUlJPUjogJ1dFQkRSSVZFUl9FUlJPUicsXHJcbiAgICBEQl9DT05ORUNUSU9OX0VSUk9SOiAnREJfQ09OTkVDVElPTl9FUlJPUicsXHJcbiAgICBEQl9RVUVSWV9FUlJPUjogJ0RCX1FVRVJZX0VSUk9SJyxcclxuICAgIFNPQVBfRVJST1I6ICdTT0FQX0VSUk9SJyxcclxuICAgIFNIRUxMX0VSUk9SOiAnU0hFTExfRVJST1InLFxyXG4gICAgTk9UX0lNUExFTUVOVEVEX0VSUk9SOiAnTk9UX0lNUExFTUVOVEVEX0VSUk9SJyxcclxuICAgIFNFUklBTF9QT1JUX0VSUk9SOiAnU0VSSUFMX1BPUlRfRVJST1InLFxyXG4gICAgSFRUUF9FUlJPUjogJ0hUVFBfRVJST1InLFxyXG4gICAgRU1BSUxfRVJST1I6ICdFTUFJTF9FUlJPUicsXHJcbiAgICBNT0RVTEVfTk9UX0lOSVRJQUxJWkVEX0VSUk9SOiAnTU9EVUxFX05PVF9JTklUSUFMSVpFRF9FUlJPUicsXHJcbiAgICBERVZJQ0VfTk9UX0ZPVU5EOiAnREVWSUNFX05PVF9GT1VORCcsXHJcbiAgICBQQVJBTUVURVJTX0VSUk9SOiAnUEFSQU1FVEVSU19FUlJPUicsXHJcbiAgICBJTlZBTElEX0NBUEFCSUxJVElFUzogJ0lOVkFMSURfQ0FQQUJJTElUSUVTJyxcclxuICAgIEJST1dTRVJfQ09ORklHVVJBVElPTl9FUlJPUjogJ0JST1dTRVJfQ09ORklHVVJBVElPTl9FUlJPUicsXHJcbiAgICBBUFBJVU1fQ09OTkVDVElPTl9FUlJPUjogJ0FQUElVTV9DT05ORUNUSU9OX0VSUk9SJyxcclxuICAgIEFQUElVTV9TRVNTSU9OX0VSUk9SOiAnQVBQSVVNX1NFU1NJT05fRVJST1InLFxyXG4gICAgU0VMRU5JVU1fU0VTU0lPTl9FUlJPUjogJ1NFTEVOSVVNX1NFU1NJT05fRVJST1InLFxyXG4gICAgU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VUOiAnU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VUJyxcclxuICAgIFNFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1I6ICdTRUxFTklVTV9DT05ORUNUSU9OX0VSUk9SJyxcclxuICAgIFVSTF9PUEVOX0VSUk9SOiAnVVJMX09QRU5fRVJST1InLFxyXG4gICAgT1BUSU9OX05PVF9GT1VORDogJ09QVElPTl9OT1RfRk9VTkQnLFxyXG4gICAgQVRUUklCVVRFX05PVF9GT1VORDogJ0FUVFJJQlVURV9OT1RfRk9VTkQnLFxyXG4gICAgRUxFTUVOVF9TVEFURV9FUlJPUjogJ0VMRU1FTlRfU1RBVEVfRVJST1InLFxyXG4gICAgTU9CSUxFX0NPTlRFWFRfRVJST1I6ICdNT0JJTEVfQ09OVEVYVF9FUlJPUicsXHJcbiAgICBBUFBMSUNBVElPTl9OT1RfRk9VTkRfRVJST1I6ICdBUFBMSUNBVElPTl9OT1RfRk9VTkRfRVJST1InLFxyXG4gICAgVFdJTElPX0VSUk9SOiAnVFdJTElPX0VSUk9SJyxcclxuICAgIEhPT0tfRVJST1I6ICdIT09LX0VSUk9SJyxcclxuICAgIE5PVF9TVVBQT1JURUQ6ICdOT1RfU1VQUE9SVEVEJyxcclxuICAgIEFTU0VSVF9QQVNTRUQ6ICdBU1NFUlRfUEFTU0VEJyxcclxuICAgIE1PRFVMRV9OT1RfRk9VTkQ6ICdNT0RVTEVfTk9UX0ZPVU5EJyxcclxuICAgIEZJTEVfQlJPV1NFX0VSUk9SOiAnRklMRV9CUk9XU0VfRVJST1InLFxyXG4gICAgQ1NWX0VSUk9SOiAnQ1NWX0VSUk9SJyxcclxuICAgIENSWVBUT19FUlJPUjogJ0NSWVBUT19FUlJPUicsXHJcbiAgICBETlNfRVJST1I6ICdETlNfRVJST1InLFxyXG4gICAgQ0lSQ1VMQVJfRVJST1I6ICdDSVJDVUxBUl9FUlJPUicsXHJcbiAgICBYTUxfRVJST1I6ICdYTUxfRVJST1InXHJcbn07XHJcblxyXG4vLyBDaGFpIHRvIE94eWdlbiBlcnJvciBjb2RlcyBtYXBwaW5nXHJcbmNvbnN0IENIQUlfRVJST1JfQ09ERVMgPSB7XHJcbiAgICBBc3NlcnRpb25FcnJvcjogRVJST1JfQ09ERVMuQVNTRVJUX0VSUk9SXHJcbn07XHJcblxyXG4vLyBHZW5lcmFsIEphdmFTY3JpcHQgZXJyb3IgY29kZXMgbWFwcGluZ1xyXG5jb25zdCBTQ1JJUFRfRVJST1JfQ09ERVMgPSB7XHJcbiAgICBUeXBlRXJyb3I6IEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUixcclxuICAgIFN5bnRheEVycm9yOiBFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsXHJcbiAgICBSZWZlcmVuY2VFcnJvcjogRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLFxyXG59O1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSB7XHJcbiAgICBnZXRGYWlsdXJlRnJvbUVycm9yOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBpZiAoIWVycikge1xyXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCEoZXJyIGluc3RhbmNlb2YgT3hFcnJvcikpIHtcclxuICAgICAgICAgICAgZXJyID0gdGhpcy5nZXRPeHlnZW5FcnJvcihlcnIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0eXBlOiBlcnIudHlwZSxcclxuICAgICAgICAgICAgbWVzc2FnZTogZXJyLm1lc3NhZ2UsXHJcbiAgICAgICAgICAgIGRhdGE6IGVyci5kYXRhLFxyXG4gICAgICAgICAgICBsb2NhdGlvbjogZXJyLmxvY2F0aW9uLFxyXG4gICAgICAgICAgICBzdGFja3RyYWNlOiBlcnIuc3RhY2t0cmFjZSB8fCBudWxsXHJcbiAgICAgICAgfTtcclxuICAgIH0sXHJcbiAgICBnZXREYkVycm9yTWVzc2FnZTogZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgbGV0IG1lc3NhZ2UgPSAnJztcclxuXHJcbiAgICAgICAgaWYgKGVyciAmJiBlcnIubWVzc2FnZSkge1xyXG4gICAgICAgICAgICBtZXNzYWdlICs9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBlcnIgJiZcclxuICAgICAgICAgICAgZXJyLm9kYmNFcnJvcnMgJiZcclxuICAgICAgICAgICAgQXJyYXkuaXNBcnJheShlcnIub2RiY0Vycm9ycykgJiZcclxuICAgICAgICAgICAgZXJyLm9kYmNFcnJvcnMubGVuZ3RoID4gMFxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgICBlcnIub2RiY0Vycm9ycy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgICAgICAgICBpdGVtICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaXRlbS5tZXNzYWdlXHJcbiAgICAgICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICc6ICcgK2l0ZW0ubWVzc2FnZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gbWVzc2FnZTtcclxuICAgIH0sXHJcbiAgICBnZXRPeHlnZW5FcnJvcjogZnVuY3Rpb24oZXJyLCBtb2R1bGUsIGNtZCwgYXJncykge1xyXG4gICAgICAgIC8vIHJldHVybiB0aGUgZXJyb3IgYXMgaXMgaWYgaXQgaGFzIGJlZW4gYWxyZWFkeSBwcm9jZXNzZWRcclxuICAgICAgICBpZiAoZXJyIGluc3RhbmNlb2YgT3hFcnJvcikge1xyXG4gICAgICAgICAgICByZXR1cm4gZXJyO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdmFyIGVyclR5cGUgPSBlcnIudHlwZSB8fCBlcnIubmFtZSB8fCB0eXBlb2YgZXJyO1xyXG4gICAgICAgIC8vIGhhbmRsZSBcIkNhbid0IGNhbGwgPGNvbW1hbmQ+IG9uIGVsZW1lbnQgd2l0aCBzZWxlY3RvciA8c2VsZWN0b3I+IGJlY2F1c2UgZWxlbWVudCB3YXNuJ3QgZm91bmRcIlxyXG4gICAgICAgIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnYmVjYXVzZSBlbGVtZW50IHdhc25cXCd0IGZvdW5kJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkVMRU1FTlRfTk9UX0ZPVU5ELCBlcnIubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gaGFuZGxlIFwiaW52YWxpZCBhcmd1bWVudDogVW5zdXBwb3J0ZWQgbG9jYXRvciBzdHJhdGVneTogLWFuZHJvaWQgdWlhdXRvbWF0b3JcIiBmb3IgbW9iaWxlLlxyXG4gICAgICAgIC8vIHVzdWFsbHkgZHVlIHRvIG5vdCB1c2luZyB0aGUgY29ycmVjdCBjb250ZXh0XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1Vuc3VwcG9ydGVkIGxvY2F0b3Igc3RyYXRlZ3knKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IGVyci5tZXNzYWdlLm1hdGNoKC9pbnZhbGlkIGFyZ3VtZW50OiAoLiopL2kpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuTU9CSUxFX0NPTlRFWFRfRVJST1IsIChtYXRjaGVzLmxlbmd0aCA9PT0gMiA/IG1hdGNoZXNbMV0gOiBlcnIubWVzc2FnZSkgK1xyXG4gICAgICAgICAgICAgICAgJy4gTWFrZSBzdXJlIHlvdSBhcmUgdXNpbmcgdGhlIGNvcnJlY3QgbW9iaWxlIGNvbnRleHQuIFNlZSBtb2Iuc2V0TmF0aXZlQ29udGV4dCBhbmQgbW9iLnNldFdlYlZpZXdDb250ZXh0LicpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBoYW5kbGUgXCJpbnZhbGlkIHNlbGVjdG9yOiBVbmFibGUgdG8gbG9jYXRlIGFuIGVsZW1lbnQgd2l0aCB0aGUgeHBhdGggZXhwcmVzc2lvblwiXHJcbiAgICAgICAgLy8gdXN1YWxseSBkdWUgdG8gaW52YWxpZCB4cGF0aFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gbG9jYXRlIGFuIGVsZW1lbnQgd2l0aCB0aGUgeHBhdGggZXhwcmVzc2lvbicpKSB7XHJcbiAgICAgICAgICAgIGxldCBtYXRjaGVzID0gZXJyLm1lc3NhZ2UubWF0Y2goLyhUaGUgc3RyaW5nICcuKicgaXMgbm90IGEgdmFsaWQgWFBhdGggZXhwcmVzc2lvbi4pL2kpO1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0NSSVBUX0VSUk9SLCAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCA9PT0gMiA/IG1hdGNoZXNbMV0gOiBlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbnZhbGlkIGNzcyBsb2NhdG9yIG9uIENocm9tZS9JRS4gZS5nLiBjc3M9I1xcOnAwXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0FuIGludmFsaWQgb3IgaWxsZWdhbCBzZWxlY3RvciB3YXMgc3BlY2lmaWVkJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNDUklQVF9FUlJPUiwgJ0FuIGludmFsaWQgb3IgaWxsZWdhbCBzZWxlY3RvciB3YXMgc3BlY2lmaWVkJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGludmFsaWQgY3NzIGxvY2F0b3Igb24gRmlyZWZveC4gZS5nLiBjc3M9I1xcOnAwXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnR2l2ZW4gY3NzIHNlbGVjdG9yIGV4cHJlc3Npb24nKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oR2l2ZW4gY3NzIHNlbGVjdG9yIGV4cHJlc3Npb24gXCIuKlwiIGlzIGludmFsaWQpLiovaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIChlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGF1dG9tYXRlIENocm9tZSB2ZXJzaW9uJykgfHxcclxuICAgICAgICAgICAgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ05vIENocm9tZWRyaXZlciBmb3VuZCB0aGF0IGNhbiBhdXRvbWF0ZScpKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBoYW5kbGUgdmFyaW91cyB0eXBlcyBvZiAnT3JpZ2luYWwgZXJyb3InXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoT1JJR0lOQUxfRVJST1JfTUVTU0FHRSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlVOS05PV05fRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSwgdXRpbC5pbnNwZWN0KGVycikpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBpbnZhbGlkIFVSTCBpbiBvcGVuIGNvbW1hbmRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnSW52YWxpZCBVUkwnKSkge1xyXG4gICAgICAgICAgICBsZXQgbWF0Y2hlcyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oIEludmFsaWQgVVJMOiAuKiQpLiovaSk7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHVzdWFsbHkgb24gbW9iaWxlIENocm9tZSB3aGVuIGVsZW1lbnQgaXMgb3ZlcmxhcHBlZCBieSBhbm90aGVyIGVsZW1lbnRcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5zdGFydHNXaXRoKCdlbGVtZW50IGNsaWNrIGludGVyY2VwdGVkJykpIHtcclxuICAgICAgICAgICAgbGV0IG1hdGNoZXMgPSBlcnIubWVzc2FnZS5tYXRjaCgvZWxlbWVudCBjbGljayBpbnRlcmNlcHRlZDogKC4qKS9pKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkVMRU1FTlRfTk9UX1ZJU0lCTEUsIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoID09PSAyID8gbWF0Y2hlc1sxXSA6IGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHVzdWFsbHkgYmVjYXVzZSBTZWxlbml1bSBoYXMga2lsbGVkIHRoZSBzZXNzaW9uIGR1ZSB0byBleGNlZWRpbmcgJy10aW1lb3V0JyB0aW1lb3V0XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2Uuc3RhcnRzV2l0aCgnTm8gYWN0aXZlIHNlc3Npb24gd2l0aCBJRCcpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9TRVNTSU9OX0VSUk9SLCAnRXhlY3V0aW9uIHRpbWUgZXhjZWVkZWQgdGhlIHRpbWVvdXQgc2V0IGJ5IFNlbGVuaXVtJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHdoZW4gZHJpdmVyIChJRURyaXZlclNlcnZlciwgQ2hyb21lRHJpdmVyLCBldGMpIGNyYXNoZXNcclxuICAgICAgICBlbHNlIGlmIChlcnIubWVzc2FnZSA9PT0gJ2phdmEubmV0LkNvbm5lY3RFeGNlcHRpb246IENvbm5lY3Rpb24gcmVmdXNlZDogY29ubmVjdCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLldFQkRSSVZFUl9FUlJPUiwgJ1RoZSB1bmRlcmx5aW5nIFdlYkRyaXZlciBzZWVtcyB0byBoYXZlIGNyYXNoZWQ6ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHN0YWxlIGVsZW1lbnQgcmVmZXJlbmNlXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm5hbWUgJiYgZXJyLm5hbWUuaW5jbHVkZXMoJ3N0YWxlIGVsZW1lbnQgcmVmZXJlbmNlJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNUQUxFX0VMRU1FTlRfUkVGRVJFTkNFLCBlcnIubmFtZSArICcgJyArIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLmNvZGUgJiYgZXJyLmNvZGUgPT09ICdNT0RVTEVfTk9UX0ZPVU5EJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuTU9EVUxFX05PVF9GT1VORCwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyAgd2hlbiBkb2luZyBhbiBvcGVyYXRpb24gb24gYW4gZWxlbWVudCAoZS5nLiBjbGljaykgYnV0IHRoZSB3aW5kb3cgd2FzIGFscmVhZHkgY2xvc2VkXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ25vIHN1Y2ggd2luZG93JykgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ3RhcmdldCB3aW5kb3cgYWxyZWFkeSBjbG9zZWQnKSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnd2ViIHZpZXcgbm90IGZvdW5kJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLldJTkRPV19OT1RfRk9VTkQsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gZXhhbXBsZTogVGhlIGVsZW1lbnQgd2l0aCBzZWxlY3RvciAqKiogeW91IHRyeWluZyB0byBwYXNzIGludG8gdGhlIGV4ZWN1dGUgbWV0aG9kIHdhc24ndCBmb3VuZFxyXG4gICAgICAgIC8vIHdoZW4gZWxlbWVudCB3YXMgZGVsZXRlZCBmcm9tIERPTVxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCd5b3UgdHJ5aW5nIHRvIHBhc3MgaW50byB0aGUgZXhlY3V0ZSBtZXRob2Qgd2FzblxcJ3QgZm91bmQnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuRUxFTUVOVF9OT1RfRk9VTkQsICBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIHdoZW4gZG9pbmcgYW4gb3BlcmF0aW9uIG9uIGFuIGVsZW1lbnQgcmVmZXJlbmNlIChlLmcuIGNsaWNrKSBidXQgdGhlIHBhZ2Ugd2FzIGFscmVhZHkgY2hhbmdlZFxyXG4gICAgICAgIGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdlbGVtZW50IG5vdCBpbnRlcmFjdGFibGUnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuRUxFTUVOVF9OT1RfSU5URVJBQ1RBQkxFLCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8vIGludmFsaWQgc2VsZWN0b3I6IGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb246IFVuYWJsZSB0byBjb21waWxlIHNlbGVjdG9yIC4uLlxyXG4gICAgICAgIGVsc2UgaWYgKFxyXG4gICAgICAgICAgICBlcnIubmFtZSAmJlxyXG4gICAgICAgICAgICBlcnIubmFtZSA9PT0gJ2ludmFsaWQgc2VsZWN0b3InXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TQ1JJUFRfRVJST1IsIGVyci5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgLy8gUmVxdWVzdEVycm9yOiBUaW1lb3V0IGF3YWl0aW5nICdyZXF1ZXN0JyBmb3IgMzEwMDAwbXMsIG5hbWU6ICdUaW1lb3V0RXJyb3InXHJcbiAgICAgICAgZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1RpbWVvdXQgYXdhaXRpbmcgXFwncmVxdWVzdFxcJyBmb3InKSkge1xyXG4gICAgICAgICAgICBjb25zdCBlcnJNZXNzYWdlID0gZXJyLm1lc3NhZ2UucmVwbGFjZShcclxuICAgICAgICAgICAgICAgICdUaW1lb3V0IGF3YWl0aW5nIFxcJ3JlcXVlc3RcXCcgZm9yJyxcclxuICAgICAgICAgICAgICAgICdDb3VsZG5cXCd0IGdldCBhIHJlc3BvbnNlIGZyb20gU2VsZW5pdW0vV2ViRHJpdmVyIHdpdGhpbidcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1NFU1NJT05fVElNRU9VVCwgZXJyTWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGVyciAmJiBlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnc29ja2V0IGhhbmcgdXAnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VULCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIgJiYgZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1RpbWVkIG91dCByZWNlaXZpbmcgbWVzc2FnZSBmcm9tIHJlbmRlcmUnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fU0VTU0lPTl9USU1FT1VULCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyB0cnkgdG8gcmVzb2x2ZSBDaGFpIGVycm9yIGNvZGVcclxuICAgICAgICB2YXIgb3hFcnJvckNvZGUgPSBDSEFJX0VSUk9SX0NPREVTW2VyclR5cGVdO1xyXG4gICAgICAgIGlmIChveEVycm9yQ29kZSkge1xyXG4gICAgICAgICAgICAvLyB0aHJvdyBub24tZmF0YWwgZXJyb3IgaWYgaXQncyBhIFwidmVyaWZ5XCIgbW9kdWxlIG9yIG1ldGhvZCBcclxuICAgICAgICAgICAgaWYgKG94RXJyb3JDb2RlID09PSBFUlJPUl9DT0RFUy5BU1NFUlQgJiZcclxuXHRcdFx0XHQobW9kdWxlID09PSAndmVyaWZ5JyB8fCBjbWQuaW5kZXhPZigndmVyaWZ5JykgPT09IDApKSB7IC8vIHZlcmlmeS4qLCAqLnZlcmlmeSpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5WRVJJRlksIGVyci5tZXNzYWdlLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKG94RXJyb3JDb2RlLCBlcnIubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIC8vIHRyeSB0byByZXNvbHZlIEphdmFTY3JpcHQgZXJyb3IgY29kZVxyXG4gICAgICAgIG94RXJyb3JDb2RlID0gU0NSSVBUX0VSUk9SX0NPREVTW2VyclR5cGVdO1xyXG4gICAgICAgIGlmIChveEVycm9yQ29kZSkge1xyXG4gICAgICAgICAgICAvLyB0aHJvdyBub24tZmF0YWwgZXJyb3IgaWYgaXQncyBhIFwidmVyaWZ5XCIgbW9kdWxlIG9yIG1ldGhvZCBcclxuICAgICAgICAgICAgaWYgKG94RXJyb3JDb2RlID09PSBFUlJPUl9DT0RFUy5BU1NFUlQgJiZcclxuXHRcdFx0XHQobW9kdWxlID09PSAndmVyaWZ5JyB8fCBjbWQuaW5kZXhPZigndmVyaWZ5JykgPT09IDApKSB7IC8vIHZlcmlmeS4qLCAqLnZlcmlmeSpcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5WRVJJRlksIGVyci5tZXNzYWdlLCBudWxsLCBmYWxzZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKG94RXJyb3JDb2RlLCBlcnIubWVzc2FnZSB8fCBudWxsLCBudWxsLCB0cnVlLCBlcnIpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJz09PSBFcnJvciBEZXRhaWxzID09PScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUeXBlOiAnICsgZXJyLnR5cGUgKyAnIE5hbWU6ICcgKyBlcnIubmFtZSArICcgQ29kZTogJyArIGVyci5jb2RlICsgJyBNc2c6ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codXRpbC5pbnNwZWN0KGVycikpO1xyXG5cclxuICAgICAgICBjb25zdCBlcnJNZXNzYWdlID0gZXJyLm1lc3NhZ2UgPyBgJHtlcnJUeXBlfTogJHtlcnIubWVzc2FnZX1gIDogYCR7ZXJyVHlwZX1gO1xyXG4gICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5VTktOT1dOX0VSUk9SLCBlcnJNZXNzYWdlLCB1dGlsLmluc3BlY3QoZXJyKSwgdHJ1ZSwgZXJyKTtcclxuICAgIH0sXHJcbiAgICBnZXRTZWxlbml1bUluaXRFcnJvcjogZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgaWYgKGVyci5tZXNzYWdlKSB7XHJcbiAgICAgICAgICAgIHZhciBpZVpvb21FcnJvck1zZyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oVW5leHBlY3RlZCBlcnJvciBsYXVuY2hpbmcgSW50ZXJuZXQgRXhwbG9yZXJcXC4gQnJvd3NlciB6b29tIGxldmVsIHdhcyBzZXQgdG8gXFxkKyVcXC4gSXQgc2hvdWxkIGJlIHNldCB0byBcXGQrJSkvZ20pO1xyXG4gICAgICAgICAgICBpZiAoaWVab29tRXJyb3JNc2cpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5CUk9XU0VSX0NPTkZJR1VSQVRJT05fRVJST1IsIGllWm9vbUVycm9yTXNnLnRvU3RyaW5nKCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBjcmVhdGUgbmV3IHNlcnZpY2U6IENocm9tZURyaXZlclNlcnZpY2UnKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkNIUk9NRURSSVZFUl9FUlJPUiwgZXJyLm1lc3NhZ2UsIG51bGwsIHRydWUsIGVycik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGNyZWF0ZSBuZXcgc2VydmljZTonKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX1VOUkVBQ0hBQkxFX0VSUk9SLCBlcnIubWVzc2FnZSwgbnVsbCwgdHJ1ZSwgZXJyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIGNocm9tZURyaXZlck1zZyA9IGVyci5tZXNzYWdlLm1hdGNoKC8oVGhpcyB2ZXJzaW9uIG9mIENocm9tZURyaXZlciBvbmx5IHN1cHBvcnRzIENocm9tZSB2ZXJzaW9uIFswLTldKikvZ20pO1xyXG4gICAgICAgICAgICBpZiAoY2hyb21lRHJpdmVyTXNnKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBjaHJvbWVEcml2ZXJNc2cudG9TdHJpbmcoKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnY2Fubm90IGZpbmQgQ2hyb21lIGJpbmFyeScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsICdDYW5ub3QgZmluZCBDaHJvbWUgYmluYXJ5Jyk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIuY29kZSA9PT0gJ0VDT05OUkVGVVNFRCcgfHwgZXJyLmNvZGUgPT09ICdFQ09OTlJFU0VUJyB8fCBlcnIuY29kZSA9PT0gJ0VOT1RGT1VORCcgfHwgZXJyLm1lc3NhZ2UgPT09ICdGYWlsZWQgdG8gY3JlYXRlIHNlc3Npb24uXFxuc29ja2V0IGhhbmcgdXAnKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5TRUxFTklVTV9VTlJFQUNIQUJMRV9FUlJPUiwgXCJDb3VsZG4ndCBjb25uZWN0IHRvIFNlbGVuaXVtIHNlcnZlclwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlID09PSAnQWxsIG1pbnV0ZXMgZm9yIHRoaXMgb3JnYW5pemF0aW9uIGhhcyBiZWVuIGV4YXVzdGVkJyB8fFxyXG4gICAgICAgICAgICBlcnIubWVzc2FnZSA9PT0gJzQwMSBVbmF1dGhvcml6ZWQnIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLnN0YXJ0c1dpdGgoJ0ZhaWxlZCB0byBjcmVhdGUgc2Vzc2lvbi4nKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuU0VMRU5JVU1fQ09OTkVDVElPTl9FUlJPUiwgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ1VuYWJsZSB0byBjcmVhdGUgbmV3IHNlcnZpY2U6JykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlNFTEVOSVVNX0NPTk5FQ1RJT05fRVJST1IsIGVyci5tZXNzYWdlICsgJ1xcblxcblRoaXMgaXMgcHJvYmFibHkgZHVlIHRvIG1pc3NpbmcgQ2hyb21lRHJpdmVyL0lFRHJpdmVyU2VydmVyL0dlY2tvRHJpdmVyIGJpbmFyeS5cXG4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIGNvbnNvbGUubG9nKCc9PT0gRXJyb3IgRGV0YWlscyA9PT0nKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnVHlwZTogJyArIGVyci50eXBlICsgJyBOYW1lOiAnICsgZXJyLm5hbWUgKyAnIENvZGU6ICcgKyBlcnIuY29kZSArICcgTXNnOiAnICsgZXJyLm1lc3NhZ2UpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKHV0aWwuaW5zcGVjdChlcnIpKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLlVOS05PV05fRVJST1IsIGVyci50eXBlICsgJzogJyArIGVyci5tZXNzYWdlLCB1dGlsLmluc3BlY3QoZXJyKSk7XHJcbiAgICB9LFxyXG4gICAgZ2V0QXBwaXVtSW5pdEVycm9yOiBmdW5jdGlvbihlcnIpIHtcclxuICAgICAgICBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ2Nhbm5vdCBmaW5kIENocm9tZSBiaW5hcnknKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCAnQ2Fubm90IGZpbmQgQ2hyb21lIGJpbmFyeScpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLmNvZGUgPT09ICdFQ09OTlJFRlVTRUQnIHx8IGVyci5jb2RlID09PSAnRUNPTk5SRVNFVCcgfHwgZXJyLmNvZGUgPT09ICdFTk9URk9VTkQnIHx8IGVyci5tZXNzYWdlID09PSAnRmFpbGVkIHRvIGNyZWF0ZSBzZXNzaW9uLlxcbnNvY2tldCBoYW5nIHVwJykge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVBQSVVNX1VOUkVBQ0hBQkxFX0VSUk9SLCBcIkNvdWxkbid0IGNvbm5lY3QgdG8gQXBwaXVtIHNlcnZlclwiKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdDb3VsZCBub3QgZmluZCBhIGNvbm5lY3RlZCBBbmRyb2lkIGRldmljZScpKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5ERVZJQ0VfTk9UX0ZPVU5ELCAnQ291bGQgbm90IGZpbmQgYSBjb25uZWN0ZWQgQW5kcm9pZCBkZXZpY2UnKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlICYmIGVyci5tZXNzYWdlLmluY2x1ZGVzKCdVbmFibGUgdG8gYXV0b21hdGUgQ2hyb21lIHZlcnNpb24nKSkgeyAgICAgICAgICAvLyBhcHBpdW0gPD0gMS4xNFxyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQ0hST01FRFJJVkVSX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgJiYgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ05vIENocm9tZWRyaXZlciBmb3VuZCB0aGF0IGNhbiBhdXRvbWF0ZScpKSB7ICAgIC8vIGFwcGl1bSA+PSAxLjE1XHJcbiAgICAgICAgICAgIHJldHVybiBuZXcgT3hFcnJvcihFUlJPUl9DT0RFUy5DSFJPTUVEUklWRVJfRVJST1IsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnVW5hYmxlIHRvIGZpbmQgYW4gYWN0aXZlIGRldmljZSBvciBlbXVsYXRvciB3aXRoJykpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkRFVklDRV9OT1RfRk9VTkQsIGV4dHJhY3RPcmlnaW5hbEVycm9yKGVyci5tZXNzYWdlKSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiBlcnIubWVzc2FnZS5pbmNsdWRlcygnaXMgbm90IGluc3RhbGxlZCBvbiBkZXZpY2UnKSkge1xyXG4gICAgICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuQVBQTElDQVRJT05fTk9UX0ZPVU5EX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSkpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UgPT09ICdBbGwgbWludXRlcyBmb3IgdGhpcyBvcmdhbml6YXRpb24gaGFzIGJlZW4gZXhhdXN0ZWQnIHx8XHJcbiAgICAgICAgICAgIGVyci5tZXNzYWdlID09PSAnNDAxIFVuYXV0aG9yaXplZCcpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFQUElVTV9DT05ORUNUSU9OX0VSUk9SLCBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlcnIubWVzc2FnZSAmJiAoXHJcbiAgICAgICAgICAgICAgICBlcnIubWVzc2FnZS5pbmNsdWRlcygnQSBuZXcgc2Vzc2lvbiBjb3VsZCBub3QgYmUgY3JlYXRlZC4nKSB8fFxyXG4gICAgICAgICAgICAgICAgZXJyLm1lc3NhZ2UuaW5jbHVkZXMoJ0ZhaWxlZCB0byBjcmVhdGUgc2Vzc2lvbi4nKSkpIHtcclxuICAgICAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFQUElVTV9TRVNTSU9OX0VSUk9SLCBleHRyYWN0T3JpZ2luYWxFcnJvcihlcnIubWVzc2FnZSksIG51bGwsIHRydWUpO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc29sZS5sb2coJz09PSBFcnJvciBEZXRhaWxzID09PScpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUeXBlOiAnICsgZXJyLnR5cGUgKyAnIE5hbWU6ICcgKyBlcnIubmFtZSArICcgQ29kZTogJyArIGVyci5jb2RlICsgJyBNc2c6ICcgKyBlcnIubWVzc2FnZSk7XHJcbiAgICAgICAgY29uc29sZS5sb2codXRpbC5pbnNwZWN0KGVycikpO1xyXG5cclxuICAgICAgICByZXR1cm4gbmV3IE94RXJyb3IoRVJST1JfQ09ERVMuVU5LTk9XTl9FUlJPUiwgZXh0cmFjdE9yaWdpbmFsRXJyb3IoZXJyLm1lc3NhZ2UpLCB1dGlsLmluc3BlY3QoZXJyKSk7XHJcbiAgICB9LFxyXG4gICAgZ2V0QXNzZXJ0RXJyb3I6IGZ1bmN0aW9uKGV4cGVjdGVkLCBhY3R1YWwpIHtcclxuICAgICAgICBhY3R1YWwgPSBhY3R1YWwudG9TdHJpbmcoKS5yZXBsYWNlKC9cXG4vZywgJ1xcXFxuJyk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBPeEVycm9yKEVSUk9SX0NPREVTLkFTU0VSVF9FUlJPUiwgYEV4cGVjdGVkOiBcIiR7ZXhwZWN0ZWR9XCIuIEdvdDogXCIke2FjdHVhbH1cImApO1xyXG4gICAgfSxcclxuICAgIGVycm9yQ29kZTogRVJST1JfQ09ERVNcclxufTtcclxuXHJcbmNvbnN0IE9SSUdJTkFMX0VSUk9SX01FU1NBR0UgPSAnT3JpZ2luYWwgZXJyb3I6ICc7XHJcbmNvbnN0IFVOS05PV05fRVJST1JfTUVTU0FHRSA9ICd1bmtub3duIGVycm9yOiAnO1xyXG5cclxuZnVuY3Rpb24gZXh0cmFjdE9yaWdpbmFsRXJyb3IobXNnKSB7XHJcbiAgICBpZiAoIW1zZykge1xyXG4gICAgICAgIHJldHVybiAnJztcclxuICAgIH1cclxuXHJcbiAgICB2YXIgZXJyb3JJbmRleDEgPSBtc2cuaW5kZXhPZihPUklHSU5BTF9FUlJPUl9NRVNTQUdFKTtcclxuICAgIGlmIChlcnJvckluZGV4MSA9PT0gLTEpIHtcclxuICAgICAgICByZXR1cm4gbXNnO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIHRoZXJlIGNvdWxkIGFub3RoZSBuZXN0ZWQgXCJvcmlnaW5hbCBlcnJvclwiXHJcbiAgICB2YXIgZXJyb3JJbmRleDIgPSBtc2cuaW5kZXhPZihPUklHSU5BTF9FUlJPUl9NRVNTQUdFLCBlcnJvckluZGV4MSArIE9SSUdJTkFMX0VSUk9SX01FU1NBR0UubGVuZ3RoKTtcclxuXHJcbiAgICBtc2cgPSBtc2cuc3Vic3RyaW5nKChlcnJvckluZGV4MiA+IC0xID8gZXJyb3JJbmRleDIgOiBlcnJvckluZGV4MSkgICsgT1JJR0lOQUxfRVJST1JfTUVTU0FHRS5sZW5ndGgpO1xyXG5cclxuICAgIC8vIHN0cmlwICd1bmtub3duIGVycm9yOidcclxuICAgIHZhciB1bmtub3duRXJyb3JJbmRleCA9IG1zZy5pbmRleE9mKFVOS05PV05fRVJST1JfTUVTU0FHRSk7XHJcbiAgICBpZiAodW5rbm93bkVycm9ySW5kZXggPiAtMSkge1xyXG4gICAgICAgIHJldHVybiBtc2cuc3Vic3RyaW5nKHVua25vd25FcnJvckluZGV4ICsgVU5LTk9XTl9FUlJPUl9NRVNTQUdFLmxlbmd0aCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1zZztcclxufVxyXG4iXX0=
package/build/lib/cli.js CHANGED
@@ -132,4 +132,4 @@ Web test options:
132
132
  Mobile test options:
133
133
  -s, --server=SERVER_URL Appium server URL. Default is http://localhost:4723/wd/hub.`);
134
134
  }
135
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwibGF1bmNoZXIiLCJMYXVuY2hlciIsInJ1biIsImdlbmVyYXRlUmVwb3J0cyIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQUEsT0FBTyxDQUFDQyxFQUFSLENBQVcsUUFBWCxFQUFxQkMsWUFBckI7QUFDQUYsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0NFLEtBQUssSUFBSTtBQUNyQ0MsRUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsbUJBQWQsRUFBbUNBLEtBQW5DO0FBQ0gsQ0FGRDtBQUlBSCxPQUFPLENBQUNDLEVBQVIsQ0FBVyxvQkFBWCxFQUFpQ0UsS0FBSyxJQUFJO0FBQ3RDQyxFQUFBQSxPQUFPLENBQUNELEtBQVIsQ0FBYyxvQkFBZCxFQUFvQ0EsS0FBcEM7QUFDSCxDQUZEOztBQUtBLE1BQU1FLElBQUksR0FBR0MsT0FBTyxDQUFDLFVBQUQs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QUFFQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLHlCQUFKLENBQXFCYixPQUFyQixDQUFqQjtBQUNBLFVBQU1jLFFBQVEsR0FBRyxJQUFJQyxpQkFBSixDQUFhZixPQUFiLEVBQXNCWSxRQUF0QixDQUFqQjtBQUNBakMsSUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQVksaUJBQVo7QUFDQSxVQUFNNkIsUUFBUSxDQUFDRSxHQUFULENBQWFQLE9BQWIsQ0FBTjtBQUNBRyxJQUFBQSxRQUFRLENBQUNLLGVBQVQ7QUFDQU4sSUFBQUEsUUFBUSxHQUFHQyxRQUFRLENBQUNNLFdBQVQsRUFBWDtBQUNILEdBUEQsQ0FRQSxPQUFPZixDQUFQLEVBQVU7QUFDTnhCLElBQUFBLE9BQU8sQ0FBQ0QsS0FBUixDQUFjLGFBQWQsRUFBNkJ5QixDQUE3QjtBQUNBeEIsSUFBQUEsT0FBTyxDQUFDd0MsS0FBUjtBQUNBNUMsSUFBQUEsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYjtBQUNIOztBQUNELFNBQU95QixRQUFQO0FBQ0g7O0FBRUQsU0FBU2xDLFlBQVQsR0FBd0I7QUFFcEIyQyxFQUFBQSxVQUFVLENBQUMsTUFBTTdDLE9BQU8sQ0FBQ1csSUFBUixDQUFhLENBQWIsQ0FBUCxFQUF3QixJQUF4QixDQUFWO0FBQ0g7O0FBRUQsU0FBU0csVUFBVCxHQUFzQjtBQUNsQlYsRUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFoQ0k7QUFpQ0giLCJzb3VyY2VzQ29udGVudCI6WyIjISAvdXNyL2Jpbi9lbnYgbm9kZVxyXG4vKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuaW1wb3J0ICogYXMgY2xpdXRpbCBmcm9tICcuL2NsaS11dGlsJztcclxuaW1wb3J0IExhdW5jaGVyIGZyb20gJy4vbGF1bmNoZXInO1xyXG5pbXBvcnQgUmVwb3J0QWdncmVnYXRvciBmcm9tICcuLi9yZXBvcnRlci9SZXBvcnRBZ2dyZWdhdG9yJztcclxuXHJcbnByb2Nlc3Mub24oJ1NJR0lOVCcsIGhhbmRsZVNpZ0ludCk7XHJcbnByb2Nlc3Mub24oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZXJyb3IgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvcik7XHJcbn0pO1xyXG5cclxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IgPT4ge1xyXG4gICAgY29uc29sZS5lcnJvcigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IpO1xyXG59KTtcclxuXHJcbi8vIHBhcnNlIGNvbW1hbmQgbGluZSBhcmd1bWVudHNcclxuY29uc3QgYXJndiA9IHJlcXVpcmUoJ21pbmltaXN0JykocHJvY2Vzcy5hcmd2LnNsaWNlKDIpKTtcclxuXHJcbmlmIChhcmd2LnYgfHwgYXJndi52ZXJzaW9uKSB7XHJcbiAgICBjb25zb2xlLmxvZyhyZXF1aXJlKCcuLi8uLi9wYWNrYWdlLmpzb24nKS52ZXJzaW9uKTtcclxuICAgIHByb2Nlc3MuZXhpdCgwKTtcclxufSBlbHNlIGlmICh0eXBlb2YoYXJndi5fWzBdKSA9PT0gJ3VuZGVmaW5lZCcgfHwgYXJndi5oZWxwKSB7XHJcbiAgICBwcmludFVzYWdlKCk7XHJcbiAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbn1cclxuXHJcbmlmIChhcmd2LmQgfHwgYXJndi5kZWxheSkge1xyXG4gICAgY29uc3QgZGVsYXkgPSBhcmd2LmQgfHwgYXJndi5kZWxheTtcclxuICAgIGlmICghKHBhcnNlSW50KGRlbGF5KSA+IDApKSB7XHJcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgYXJndW1lbnQgLSAnZGVsYXknIHNob3VsZCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuXCIpO1xyXG4gICAgICAgIHByaW50VXNhZ2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbn1cclxuXHJcbmNvbnN0IHRhcmdldEZpbGUgPSBjbGl1dGlsLnByb2Nlc3NUYXJnZXRQYXRoKGFyZ3YuX1swXSk7XHJcbmlmICh0YXJnZXRGaWxlID09IG51bGwpIHtcclxuICAgIHByaW50VXNhZ2UoKTtcclxuICAgIHByb2Nlc3MuZXhpdCgxKTtcclxufVxyXG5cclxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcclxuXHJcbmNsaXV0aWwuZ2VuZXJhdGVUZXN0T3B0aW9ucyhjb25maWcsIGFyZ3YpLnRoZW4oXHJcbiAgICAob3B0aW9ucykgPT4ge1xyXG4gICAgICAgIHByZXBhcmVBbmRTdGFydFRoZVRlc3Qob3B0aW9ucykudGhlbihcclxuICAgICAgICAgICAgKGNvZGUpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KGNvZGUpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignVGVzdCBmYWlsZWQ6ICcsIGUpO1xyXG4gICAgICAgICAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgKTtcclxuICAgIH0sXHJcbiAgICAoZSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkIG9uIGdlbmVyYXRlIHN0YXRlOiAnLCBlKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbik7XHJcblxyXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcclxuICAgIGlmIChvcHRpb25zLmZyYW1ld29yayA9PT0gJ294eWdlbicgJiYgKCFvcHRpb25zLnN1aXRlcyB8fCAhQXJyYXkuaXNBcnJheShvcHRpb25zLnN1aXRlcykpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDYW5ub3Qgc3RhcnQgdGhlIHRlc3QgLSBubyBzdWl0ZXMgYXJlIHNwZWNpZmllZC4nKTtcclxuICAgIH1cclxuICAgIGxldCBjYXBzQXJyID0gb3B0aW9ucy5jYXBhYmlsaXRpZXMgfHwgW3t9XTtcclxuICAgIC8vIGNoZWNrIGlmIGNhcGFiaWxpdGllcyBvYmplY3QgaXMgYW4gYXJyYXkgb3IgYSBoYXNodGFibGVcclxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcclxuICAgICAgICBjYXBzQXJyID0gW2NhcHNBcnJdO1xyXG4gICAgfVxyXG4gICAgbGV0IGV4aXRDb2RlID0gMDtcclxuICAgIC8vIHN0YXJ0IGxhdW5jaGVyXHJcbiAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XHJcbiAgICAgICAgY29uc3QgbGF1bmNoZXIgPSBuZXcgTGF1bmNoZXIob3B0aW9ucywgcmVwb3J0ZXIpO1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdUZXN0IHN0YXJ0ZWQuLi4nKTtcclxuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XHJcbiAgICAgICAgcmVwb3J0ZXIuZ2VuZXJhdGVSZXBvcnRzKCk7XHJcbiAgICAgICAgZXhpdENvZGUgPSByZXBvcnRlci5nZXRFeGl0Q29kZSgpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdGYXRhbCBlcnJvcicsIGUpO1xyXG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcclxuICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZXhpdENvZGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcclxuICAgIC8vIGRlbGF5IHByb2Nlc3MgZXhpdCB0byBsZXQgT3h5Z2VuIHRvIHByb3Blcmx5IGRpc3Bvc2VcclxuICAgIHNldFRpbWVvdXQoKCkgPT4gcHJvY2Vzcy5leGl0KDApLCAyMDAwKTtcclxufVxyXG5cclxuZnVuY3Rpb24gcHJpbnRVc2FnZSgpIHtcclxuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXHJcblxyXG5GSUxFIC0gUGF0aCB0byBhIHRlc3Qgc2NyaXB0ICguanMpIG9yIGEgcHJvamVjdCBjb25maWd1cmF0aW9uICguanNvbikgZmlsZS5cclxuXHJcbkdlbmVyYWwgb3B0aW9uczpcclxuICAtZCwgLS1kZWxheT1TRUNPTkRTICAgICAgICBEZWxheSBiZXR3ZWVuIGVhY2ggY29tbWFuZCBpbiBzZWNvbmRzLlxyXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cclxuICAgICAgLS1ybz1QQVRIICAgICAgICAgICAgICBPdXRwdXQgcGF0aCBmb3IgcmVwb3J0IGZpbGUuIElmIHNwZWNpZmllZCwgdGhlIHJlcG9ydFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgb3ZlcndyaXRlIGFueSBwcmV2aW91cyByZXBvcnRzLlxyXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cclxuICAtcCwgLS1wYXJhbT1GSUxFICAgICAgICAgICBQYXJhbWV0ZXJzIGZpbGUuIElmIG5vdCBzcGVjaWZpZWQgYW4gYXR0ZW1wdCB3aWxsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgbWFkZSB0byBsb2FkIHBhcmFtZXRlcnMgZnJvbSBhIGZpbGUgbmFtZWQgc2FtZVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhdmluZyBleHRlbnNpb24gLSB4bHN4LCB4bHMsIGNzdiwgb3IgdHh0LlxyXG4gICAgICAtLXBtPXtzZXF8cmFuZG9tfGFsbH0gIE9yZGVyIGluIHdoaWNoIHRvIHJlYWQgdGhlIHBhcmFtZXRlcnMgLSBzZXF1ZW50aWFsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbiAnc2VxJyBhbmQgJ3JhbmRvbScgbW9kZXMgdGVzdCB3aWxsIHJ1biBleGFjdCBudW1iZXJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aW1lcyBzcGVjaWZpZWQgd2l0aCB0aGUgLWkgb3B0aW9uLlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXF1ZW50aWFsbHkuIFRoaXMgb3B0aW9uIGlzIG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLWkgb3B0aW9uLlxyXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXHJcbiAgICAgIC0tc3VpdGVzICAgICAgICAgICAgICAgRmlsdGVyIG91dCBzdWl0ZXMgYnkgbmFtZVxyXG4gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBpbmZvcm1hdGlvbiBhbmQgZXhpdC5cclxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuXHJcblxyXG5XZWIgdGVzdCBvcHRpb25zOlxyXG4gIC1iLCAtLWJyb3dzZXI9e2Nocm9tZXxpZXxzYWZhcml8ZmlyZWZveH0gIEJyb3dzZXIgbmFtZS4gRGVmYXVsdCBpcyBjaHJvbWUuXHJcbiAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgICAgU2VsZW5pdW0gaHViIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ0NDQvd2QvaHViLlxyXG4gICAgICAtLXJlb3Blbj17dHJ1ZXxmYWxzZX0gIFJlb3BlbiBicm93c2VyIG9uIGVhY2ggaXRlcmF0aW9uLiBEZWZhdWx0IGlzIGZhbHNlLlxyXG4gICAgICBcclxuTW9iaWxlIHRlc3Qgb3B0aW9uczpcclxuICAgIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICBBcHBpdW0gc2VydmVyIFVSTC4gRGVmYXVsdCBpcyBodHRwOi8vbG9jYWxob3N0OjQ3MjMvd2QvaHViLmApO1xyXG59Il19
135
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvY2xpLmpzIl0sIm5hbWVzIjpbInByb2Nlc3MiLCJvbiIsImhhbmRsZVNpZ0ludCIsImVycm9yIiwiY29uc29sZSIsImFyZ3YiLCJyZXF1aXJlIiwic2xpY2UiLCJ2IiwidmVyc2lvbiIsImxvZyIsImV4aXQiLCJfIiwiaGVscCIsInByaW50VXNhZ2UiLCJkIiwiZGVsYXkiLCJwYXJzZUludCIsInRhcmdldEZpbGUiLCJjbGl1dGlsIiwicHJvY2Vzc1RhcmdldFBhdGgiLCJjb25maWciLCJnZXRDb25maWd1cmF0aW9ucyIsImdlbmVyYXRlVGVzdE9wdGlvbnMiLCJ0aGVuIiwib3B0aW9ucyIsInByZXBhcmVBbmRTdGFydFRoZVRlc3QiLCJjb2RlIiwiZSIsImZyYW1ld29yayIsInN1aXRlcyIsIkFycmF5IiwiaXNBcnJheSIsIkVycm9yIiwiY2Fwc0FyciIsImNhcGFiaWxpdGllcyIsImV4aXRDb2RlIiwicmVwb3J0ZXIiLCJSZXBvcnRBZ2dyZWdhdG9yIiwibGF1bmNoZXIiLCJMYXVuY2hlciIsInJ1biIsImdlbmVyYXRlUmVwb3J0cyIsImdldEV4aXRDb2RlIiwidHJhY2UiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFQUEsT0FBTyxDQUFDQyxFQUFSLENBQVcsUUFBWCxFQUFxQkMsWUFBckI7QUFDQUYsT0FBTyxDQUFDQyxFQUFSLENBQVcsbUJBQVgsRUFBZ0NFLEtBQUssSUFBSTtBQUNyQ0MsRUFBQUEsT0FBTyxDQUFDRCxLQUFSLENBQWMsbUJBQWQsRUFBbUNBLEtBQW5DO0FBQ0gsQ0FGRDtBQUlBSCxPQUFPLENBQUNDLEVBQVIsQ0FBVyxvQkFBWCxFQUFpQ0UsS0FBSyxJQUFJO0FBQ3RDQyxFQUFBQSxPQUFPLENBQUNELEtBQVIsQ0FBYyxvQkFBZCxFQUFvQ0EsS0FBcEM7QUFDSCxDQUZEOztBQUtBLE1BQU1FLElBQUksR0FBR0MsT0FBTyxDQUFDLFVBQUQs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QUFFQSxNQUFJO0FBQ0EsVUFBTUMsUUFBUSxHQUFHLElBQUlDLHlCQUFKLENBQXFCYixPQUFyQixDQUFqQjtBQUNBLFVBQU1jLFFBQVEsR0FBRyxJQUFJQyxpQkFBSixDQUFhZixPQUFiLEVBQXNCWSxRQUF0QixDQUFqQjtBQUNBakMsSUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQVksaUJBQVo7QUFDQSxVQUFNNkIsUUFBUSxDQUFDRSxHQUFULENBQWFQLE9BQWIsQ0FBTjtBQUNBRyxJQUFBQSxRQUFRLENBQUNLLGVBQVQ7QUFDQU4sSUFBQUEsUUFBUSxHQUFHQyxRQUFRLENBQUNNLFdBQVQsRUFBWDtBQUNILEdBUEQsQ0FRQSxPQUFPZixDQUFQLEVBQVU7QUFDTnhCLElBQUFBLE9BQU8sQ0FBQ0QsS0FBUixDQUFjLGFBQWQsRUFBNkJ5QixDQUE3QjtBQUNBeEIsSUFBQUEsT0FBTyxDQUFDd0MsS0FBUjtBQUNBNUMsSUFBQUEsT0FBTyxDQUFDVyxJQUFSLENBQWEsQ0FBYjtBQUNIOztBQUNELFNBQU95QixRQUFQO0FBQ0g7O0FBRUQsU0FBU2xDLFlBQVQsR0FBd0I7QUFFcEIyQyxFQUFBQSxVQUFVLENBQUMsTUFBTTdDLE9BQU8sQ0FBQ1csSUFBUixDQUFhLENBQWIsQ0FBUCxFQUF3QixJQUF4QixDQUFWO0FBQ0g7O0FBRUQsU0FBU0csVUFBVCxHQUFzQjtBQUNsQlYsRUFBQUEsT0FBTyxDQUFDTSxHQUFSLENBQWE7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx5RkFoQ0k7QUFpQ0giLCJzb3VyY2VzQ29udGVudCI6WyIjISAvdXNyL2Jpbi9lbnYgbm9kZVxuLypcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXG4gKlxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cbiAqL1xuaW1wb3J0ICogYXMgY2xpdXRpbCBmcm9tICcuL2NsaS11dGlsJztcbmltcG9ydCBMYXVuY2hlciBmcm9tICcuL2xhdW5jaGVyJztcbmltcG9ydCBSZXBvcnRBZ2dyZWdhdG9yIGZyb20gJy4uL3JlcG9ydGVyL1JlcG9ydEFnZ3JlZ2F0b3InO1xuXG5wcm9jZXNzLm9uKCdTSUdJTlQnLCBoYW5kbGVTaWdJbnQpO1xucHJvY2Vzcy5vbigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvciA9PiB7XG4gICAgY29uc29sZS5lcnJvcigndW5jYXVnaHRFeGNlcHRpb24nLCBlcnJvcik7XG59KTtcblxucHJvY2Vzcy5vbigndW5oYW5kbGVkUmVqZWN0aW9uJywgZXJyb3IgPT4ge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3VuaGFuZGxlZFJlamVjdGlvbicsIGVycm9yKTtcbn0pO1xuXG4vLyBwYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzXG5jb25zdCBhcmd2ID0gcmVxdWlyZSgnbWluaW1pc3QnKShwcm9jZXNzLmFyZ3Yuc2xpY2UoMikpO1xuXG5pZiAoYXJndi52IHx8IGFyZ3YudmVyc2lvbikge1xuICAgIGNvbnNvbGUubG9nKHJlcXVpcmUoJy4uLy4uL3BhY2thZ2UuanNvbicpLnZlcnNpb24pO1xuICAgIHByb2Nlc3MuZXhpdCgwKTtcbn0gZWxzZSBpZiAodHlwZW9mKGFyZ3YuX1swXSkgPT09ICd1bmRlZmluZWQnIHx8IGFyZ3YuaGVscCkge1xuICAgIHByaW50VXNhZ2UoKTtcbiAgICBwcm9jZXNzLmV4aXQoMSk7XG59XG5cbmlmIChhcmd2LmQgfHwgYXJndi5kZWxheSkge1xuICAgIGNvbnN0IGRlbGF5ID0gYXJndi5kIHx8IGFyZ3YuZGVsYXk7XG4gICAgaWYgKCEocGFyc2VJbnQoZGVsYXkpID4gMCkpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihcIkludmFsaWQgYXJndW1lbnQgLSAnZGVsYXknIHNob3VsZCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuXCIpO1xuICAgICAgICBwcmludFVzYWdlKCk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG59XG5cbmNvbnN0IHRhcmdldEZpbGUgPSBjbGl1dGlsLnByb2Nlc3NUYXJnZXRQYXRoKGFyZ3YuX1swXSk7XG5pZiAodGFyZ2V0RmlsZSA9PSBudWxsKSB7XG4gICAgcHJpbnRVc2FnZSgpO1xuICAgIHByb2Nlc3MuZXhpdCgxKTtcbn1cblxuY29uc3QgY29uZmlnID0gY2xpdXRpbC5nZXRDb25maWd1cmF0aW9ucyh0YXJnZXRGaWxlLCBhcmd2KTtcblxuY2xpdXRpbC5nZW5lcmF0ZVRlc3RPcHRpb25zKGNvbmZpZywgYXJndikudGhlbihcbiAgICAob3B0aW9ucykgPT4ge1xuICAgICAgICBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpLnRoZW4oXG4gICAgICAgICAgICAoY29kZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdEb25lIScpO1xuICAgICAgICAgICAgICAgIHByb2Nlc3MuZXhpdChjb2RlKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ1Rlc3QgZmFpbGVkOiAnLCBlKTtcbiAgICAgICAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG4gICAgfSxcbiAgICAoZSkgPT4ge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdUZXN0IGZhaWxlZCBvbiBnZW5lcmF0ZSBzdGF0ZTogJywgZSk7XG4gICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICB9XG4pO1xuXG5hc3luYyBmdW5jdGlvbiBwcmVwYXJlQW5kU3RhcnRUaGVUZXN0KG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucy5mcmFtZXdvcmsgPT09ICdveHlnZW4nICYmICghb3B0aW9ucy5zdWl0ZXMgfHwgIUFycmF5LmlzQXJyYXkob3B0aW9ucy5zdWl0ZXMpKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Nhbm5vdCBzdGFydCB0aGUgdGVzdCAtIG5vIHN1aXRlcyBhcmUgc3BlY2lmaWVkLicpO1xuICAgIH1cbiAgICBsZXQgY2Fwc0FyciA9IG9wdGlvbnMuY2FwYWJpbGl0aWVzIHx8IFt7fV07XG4gICAgLy8gY2hlY2sgaWYgY2FwYWJpbGl0aWVzIG9iamVjdCBpcyBhbiBhcnJheSBvciBhIGhhc2h0YWJsZVxuICAgIGlmICghKGNhcHNBcnIgaW5zdGFuY2VvZiBBcnJheSkpIHtcbiAgICAgICAgY2Fwc0FyciA9IFtjYXBzQXJyXTtcbiAgICB9XG4gICAgbGV0IGV4aXRDb2RlID0gMDtcbiAgICAvLyBzdGFydCBsYXVuY2hlclxuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcG9ydGVyID0gbmV3IFJlcG9ydEFnZ3JlZ2F0b3Iob3B0aW9ucyk7XG4gICAgICAgIGNvbnN0IGxhdW5jaGVyID0gbmV3IExhdW5jaGVyKG9wdGlvbnMsIHJlcG9ydGVyKTtcbiAgICAgICAgY29uc29sZS5sb2coJ1Rlc3Qgc3RhcnRlZC4uLicpO1xuICAgICAgICBhd2FpdCBsYXVuY2hlci5ydW4oY2Fwc0Fycik7XG4gICAgICAgIHJlcG9ydGVyLmdlbmVyYXRlUmVwb3J0cygpO1xuICAgICAgICBleGl0Q29kZSA9IHJlcG9ydGVyLmdldEV4aXRDb2RlKCk7XG4gICAgfVxuICAgIGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsIGVycm9yJywgZSk7XG4gICAgICAgIGNvbnNvbGUudHJhY2UoKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KDEpO1xuICAgIH1cbiAgICByZXR1cm4gZXhpdENvZGU7XG59XG5cbmZ1bmN0aW9uIGhhbmRsZVNpZ0ludCgpIHtcbiAgICAvLyBkZWxheSBwcm9jZXNzIGV4aXQgdG8gbGV0IE94eWdlbiB0byBwcm9wZXJseSBkaXNwb3NlXG4gICAgc2V0VGltZW91dCgoKSA9PiBwcm9jZXNzLmV4aXQoMCksIDIwMDApO1xufVxuXG5mdW5jdGlvbiBwcmludFVzYWdlKCkge1xuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogb3h5Z2VuIFtPUFRJT05TXS4uLiBGSUxFXG5cbkZJTEUgLSBQYXRoIHRvIGEgdGVzdCBzY3JpcHQgKC5qcykgb3IgYSBwcm9qZWN0IGNvbmZpZ3VyYXRpb24gKC5qc29uKSBmaWxlLlxuXG5HZW5lcmFsIG9wdGlvbnM6XG4gIC1kLCAtLWRlbGF5PVNFQ09ORFMgICAgICAgIERlbGF5IGJldHdlZW4gZWFjaCBjb21tYW5kIGluIHNlY29uZHMuXG4gICAgICAtLXJmPXtodG1sfHBkZnx4bWx8ZXhjZWx8anVuaXR8anNvbn0gIFJlcG9ydHMgZmlsZSBmb3JtYXQuIERlZmF1bHQgaXMgaHRtbC5cbiAgICAgIC0tcm89UEFUSCAgICAgICAgICAgICAgT3V0cHV0IHBhdGggZm9yIHJlcG9ydCBmaWxlLiBJZiBzcGVjaWZpZWQsIHRoZSByZXBvcnRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBvdmVyd3JpdGUgYW55IHByZXZpb3VzIHJlcG9ydHMuXG4gIC1pLCAtLWl0ZXI9Q09VTlQgICAgICAgICAgIE51bWJlciBvZiB0aW1lcyB0byBydW4gdGhlIHRlc3QuIERlZmF1bHQgaXMgMS5cbiAgLXAsIC0tcGFyYW09RklMRSAgICAgICAgICAgUGFyYW1ldGVycyBmaWxlLiBJZiBub3Qgc3BlY2lmaWVkIGFuIGF0dGVtcHQgd2lsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZSBtYWRlIHRvIGxvYWQgcGFyYW1ldGVycyBmcm9tIGEgZmlsZSBuYW1lZCBzYW1lXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSB0ZXN0IHNjcmlwdCwgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnksXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBoYXZpbmcgZXh0ZW5zaW9uIC0geGxzeCwgeGxzLCBjc3YsIG9yIHR4dC5cbiAgICAgIC0tcG09e3NlcXxyYW5kb218YWxsfSAgT3JkZXIgaW4gd2hpY2ggdG8gcmVhZCB0aGUgcGFyYW1ldGVycyAtIHNlcXVlbnRpYWwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmRvbSwgYWxsLiBEZWZhdWx0IGlzIHNlcS5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW4gJ3NlcScgYW5kICdyYW5kb20nIG1vZGVzIHRlc3Qgd2lsbCBydW4gZXhhY3QgbnVtYmVyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRpbWVzIHNwZWNpZmllZCB3aXRoIHRoZSAtaSBvcHRpb24uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEluICdhbGwnIG1vZGUsIGFsbCBhdmFpbGFibGUgcGFyYW1ldGVycyB3aWxsIGJlIHJlYWRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VxdWVudGlhbGx5LiBUaGlzIG9wdGlvbiBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtaSBvcHRpb24uXG4gICAgICAtLWRiZ3BvcnQ9UE9SVCAgICAgICAgIERlYnVnZ2VyIHBvcnQuXG4gICAgICAtLXN1aXRlcyAgICAgICAgICAgICAgIEZpbHRlciBvdXQgc3VpdGVzIGJ5IG5hbWVcbiAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgRGlzcGxheSB0aGlzIGluZm9ybWF0aW9uIGFuZCBleGl0LlxuICAtdiwgLS12ZXJzaW9uICAgICAgICAgICAgICBEaXNwbGF5IHZlcnNpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQuXG5cbldlYiB0ZXN0IG9wdGlvbnM6XG4gIC1iLCAtLWJyb3dzZXI9e2Nocm9tZXxpZXxzYWZhcml8ZmlyZWZveH0gIEJyb3dzZXIgbmFtZS4gRGVmYXVsdCBpcyBjaHJvbWUuXG4gIC1zLCAtLXNlcnZlcj1TRVJWRVJfVVJMICAgIFNlbGVuaXVtIGh1YiBVUkwuIERlZmF1bHQgaXMgaHR0cDovL2xvY2FsaG9zdDo0NDQ0L3dkL2h1Yi5cbiAgICAgIC0tcmVvcGVuPXt0cnVlfGZhbHNlfSAgUmVvcGVuIGJyb3dzZXIgb24gZWFjaCBpdGVyYXRpb24uIERlZmF1bHQgaXMgZmFsc2UuXG4gICAgICBcbk1vYmlsZSB0ZXN0IG9wdGlvbnM6XG4gICAgLXMsIC0tc2VydmVyPVNFUlZFUl9VUkwgIEFwcGl1bSBzZXJ2ZXIgVVJMLiBEZWZhdWx0IGlzIGh0dHA6Ly9sb2NhbGhvc3Q6NDcyMy93ZC9odWIuYCk7XG59Il19
@@ -140,7 +140,32 @@ module.exports = function () {
140
140
  await connection.close();
141
141
  }
142
142
  };
143
+ /**
144
+ * @summary Calls a stored procedure.
145
+ * @function callProcedure
146
+ * @param {String} name - Name of the procedure to call.
147
+ * @param {...Object} args - Procedure arguments. If procedure produces output parameters then these need to be specified using `undefined`.
148
+ * @return {Object} Procedure output if any.
149
+ * @example <caption>[javascript] Usage example</caption>
150
+ * // calls a procedure which expects two input parameters and one output parameter.
151
+ * var result = db.callProcedure('test', 3, 4, undefined);
152
+ * log.info(result);
153
+ */
154
+
155
+
156
+ module.callProcedure = async function (name, ...args) {
157
+ await module._openDbConn();
158
+
159
+ try {
160
+ const querySyncRetval = await connection.callProcedure(null, null, name, [...args]);
161
+ return querySyncRetval;
162
+ } catch (e) {
163
+ throw new _OxygenError.default(errHelper.errorCode.DB_QUERY_ERROR, errHelper.getDbErrorMessage(e));
164
+ } finally {
165
+ await connection.close();
166
+ }
167
+ };
143
168
 
144
169
  return module;
145
170
  };
146
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYi5qcyJdLCJuYW1lcyI6WyJjb25uZWN0aW9uIiwiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwiX29wZW5EYkNvbm4iLCJjb25uU3RyaW5nIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJkYiIsImUiLCJNb2R1bGVVbmF2YWlsYWJsZUVycm9yIiwibWVzc2FnZSIsImNvbm5lY3QiLCJnZXREYkVycm9yTWVzc2FnZSIsInNldENvbm5lY3Rpb25TdHJpbmciLCJnZXRTY2FsYXIiLCJxdWVyeSIsInJlc3VsdFNldCIsImxlbmd0aCIsImZpcnN0Um93IiwiZmlyc3RDb2wiLCJPYmplY3QiLCJrZXlzIiwiREJfUVVFUllfRVJST1IiLCJjbG9zZSIsImV4ZWN1dGVRdWVyeSIsInF1ZXJ5U3luY1JldHZhbCIsImV4ZWN1dGVOb25RdWVyeSJdLCJtYXBwaW5ncyI6Ijs7OztBQW9CQTs7OztBQXBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxVQUFKOztBQUdBLElBQUlDLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsWUFBVztBQUN4QjtBQUNBRCxFQUFBQSxNQUFNLENBQUNFLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPLElBQVA7QUFDSCxHQUZEOztBQUlBRixFQUFBQSxNQUFNLENBQUNHLFdBQVAsR0FBcUIsa0JBQWlCO0FBQ2xDLFFBQUksQ0FBQyxLQUFLQyxVQUFWLEVBQXNCO0FBQ2xCLFlBQU0sSUFBSUMsb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CQyxtQkFBaEMsRUFBcUQsK0RBQXJELENBQU47QUFDSDs7QUFFRCxR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QkEsS0FBakIsQ0FBTjtBQUNILEtBRkQsQ0FFRSxPQUFPUCxDQUFQLEVBQVU7QUFDUixZQUFNLElBQUlKLG9CQUFKLENBQVlQLFNBQVMsQ0FBQ1EsU0FBVixDQUFvQmlCLGNBQWhDLEVBQWdEekIsU0FBUyxDQUFDZSxpQkFBVixDQUE0QkosQ0FBNUIsQ0FBaEQsQ0FBTjtBQUNILEtBSkQsU0FJVTtBQUNOLFlBQU1aLFVBQVUsQ0FBQzJCLEtBQVgsRUFBTjtBQUNIO0FBQ0osR0FURDs7QUFXQSxTQUFPeEIsTUFBUDtBQUNILENBeEdEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG4vKipcclxuICogQG5hbWUgZGJcclxuICogQGRlc2NyaXB0aW9uIFByb3ZpZGVzIG1ldGhvZHMgZm9yIHdvcmtpbmcgd2l0aCBEYXRhIEJhc2VzIHRocm91Z2ggT0RCQy5cclxuICogQG5vdGUgQmVmb3JlIHVzaW5nIHRoaXMgbW9kdWxlLCBtYWtlIHN1cmUgdG8gaW5zdGFsbCBgdW5peG9kYmNgOiAgXHJcbiAqICAgKiBXaW5kb3dzIC0gSW5zdGFsbCBgV2luZG93cyBTREtgICBcclxuICogICAqIE9TIFggLSAgYGJyZXcgaW5zdGFsbCB1bml4b2RiY2AgIFxyXG4gKiAgICogTGludXggLSBgc3VkbyBhcHQtZ2V0IGluc3RhbGwgdW5peG9kYmMgdW5peG9kYmMtZGV2YCBvciBgc3VkbyBkbmYgaW5zdGFsbCB1bml4T0RCQyB1bml4T0RCQy1kZXZlbGBcclxuICovXHJcblxyXG52YXIgY29ubmVjdGlvbjtcclxuXHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbnZhciBlcnJIZWxwZXIgPSByZXF1aXJlKCcuLi9lcnJvcnMvaGVscGVyJyk7XHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xyXG4gICAgLy8gRklYTUU6IGNoYW5nZSBzZXRDb25uZWN0aW9uU3RyaW5nIHRvIGluaXQgYW5kIGFkZCBoYWRubGluZyBpbiBoZXJlXHJcbiAgICBtb2R1bGUuaXNJbml0aWFsaXplZCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUuX29wZW5EYkNvbm4gPSBhc3luYyBmdW5jdGlvbigpIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29ublN0cmluZykge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkRCX0NPTk5FQ1RJT05fRVJST1IsICdObyBjb25uZWN0aW9uIHN0cmluZyBzcGVjaWZpZWQuIFVzZSBkYi5zZXRDb25uZWN0aW9uU3RyaW5nKCkuJyk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAvLyBpZ25vcmUgdGhpcyBtb2R1bGUgaWYgb2RiYyB3YXNuJ3QgaW5zdGFsbGVkXHJcbiAgICAgICAgICAgIHZhciBkYjtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGRiID0gcmVxdWlyZSgnb2RiYycpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBjb3VsZCBoYXBwZW4gb25seSBvbiB1bml4IGR1ZSB0byBtaXNzaW5nIHVuaXhvZGJjIGJpbmFyaWVzXHJcbiAgICAgICAgICAgICAgICBjb25zdCBNb2R1bGVVbmF2YWlsYWJsZUVycm9yID0gcmVxdWlyZSgnLi4vZXJyb3JzL01vZHVsZVVuYXZhaWxhYmxlRXJyb3InKTtcclxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBNb2R1bGVVbmF2YWlsYWJsZUVycm9yKCdVbmFibGUgdG8gbG9hZCBEQiBtb2R1bGUuICcrZS5tZXNzYWdlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgY29ubmVjdGlvbiA9IGF3YWl0IGRiLmNvbm5lY3QodGhpcy5jb25uU3RyaW5nKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfQ09OTkVDVElPTl9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgKiBAc3VtbWFyeSBTZXRzIERCIGNvbm5lY3Rpb24gc3RyaW5nIHRvIGJlIHVzZWQgYnkgb3RoZXIgbWV0aG9kcy5cclxuICAgICogQGRlc2NyaXB0aW9uIFRoaXMgbWV0aG9kIGRvZXNuJ3QgYWN0dWFsbHkgb3BlbiB0aGUgY29ubmVjdGlvbiBhcyBpdCdzIG9wZW5lZC9jbG9zZWRcclxuICAgICogICAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgYnkgcXVlcnkgbWV0aG9kcy4gIFxyXG4gICAgKiAgICAgICAgICAgICAgRXhhbXBsZSBjb25uZWN0aW9uIHN0cmluZ3M6ICBcclxuICAgICogICAgICAgICAgICAgIC0gYERyaXZlcj17TXlTUUwgT0RCQyA1LjMgVU5JQ09ERSBEcml2ZXJ9O1NlcnZlcj1sb2NhbGhvc3Q7RGF0YWJhc2U9bXlEYXRhYmFzZTtcclxuICAgICogICAgICAgICAgICAgICAgVXNlcj1teVVzZXJuYW1lO1Bhc3N3b3JkPW15UGFzc3dvcmQ7T3B0aW9uPTM7YCAgXHJcbiAgICAqICAgICAgICAgICAgICAtIGBEcml2ZXI9e09yYWNsZSBpbiBpbnN0YW50Y2xpZW50XzExXzJ9O2RicT0xMjcuMC4wLjE6MTUyMS9YRTt1aWQ9bXlVc2VybmFtZTtcclxuICAgICogICAgICAgICAgICAgICAgcHdkPW15UGFzc3dvcmQ7YFxyXG4gICAgKiBAZnVuY3Rpb24gc2V0Q29ubmVjdGlvblN0cmluZ1xyXG4gICAgKiBAcGFyYW0ge1N0cmluZ30gY29ublN0cmluZyAtIE9EQkMgY29ubmVjdGlvbiBzdHJpbmcuXHJcbiAgICAqL1xyXG4gICAgbW9kdWxlLnNldENvbm5lY3Rpb25TdHJpbmcgPSBmdW5jdGlvbihjb25uU3RyaW5nKSB7XHJcbiAgICAgICAgbW9kdWxlLmNvbm5TdHJpbmcgPSBjb25uU3RyaW5nO1xyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIFNRTCBxdWVyeSBhbmQgcmV0dXJucyB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSBmaXJzdCByb3cgaW4gdGhlIHJlc3VsdCBzZXQuXHJcbiAgICAgKiBAZnVuY3Rpb24gZ2V0U2NhbGFyXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcXVlcnkgLSBUaGUgcXVlcnkgdG8gZXhlY3V0ZS5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIGZpcnN0IGNvbHVtbiBvZiB0aGUgZmlyc3Qgcm93IGluIHRoZSByZXN1bHQgc2V0LCBvciBudWxsIGlmIHRoZSByZXN1bHRcclxuICAgICAqICAgICAgICAgICAgICAgICAgc2V0IGlzIGVtcHR5LlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZ2V0U2NhbGFyID0gYXN5bmMgZnVuY3Rpb24ocXVlcnkpIHtcclxuICAgICAgICBhd2FpdCBtb2R1bGUuX29wZW5EYkNvbm4oKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICB2YXIgcmVzdWx0U2V0ID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShxdWVyeSk7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHRTZXQubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB2YXIgZmlyc3RSb3cgPSByZXN1bHRTZXRbMF07XHJcbiAgICAgICAgICAgIHZhciBmaXJzdENvbCA9IGZpcnN0Um93W09iamVjdC5rZXlzKGZpcnN0Um93KVswXV07XHJcbiAgICAgICAgICAgIHJldHVybiBmaXJzdENvbDtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfUVVFUllfRVJST1IsIGVyckhlbHBlci5nZXREYkVycm9yTWVzc2FnZShlKSk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBAc3VtbWFyeSBFeGVjdXRlcyBTUUwgcXVlcnkgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBzZXQuXHJcbiAgICAgKiBAZnVuY3Rpb24gZXhlY3V0ZVF1ZXJ5XHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gcXVlcnkgLSBUaGUgcXVlcnkgdG8gZXhlY3V0ZS5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gVGhlIHJlc3VsdCBzZXQuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5leGVjdXRlUXVlcnkgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3luY1JldHZhbCA9IGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkocXVlcnkpO1xyXG4gICAgICAgICAgICByZXR1cm4gcXVlcnlTeW5jUmV0dmFsO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIFNRTCBzdGF0ZW1lbnQuXHJcbiAgICAgKiBAZGVzY3JpcHRpb24gQW55IHJlc3VsdHMgZnJvbSB0aGUgcXVlcnkgYXJlIGRpc2NhcmRlZC5cclxuICAgICAqIEBmdW5jdGlvbiBleGVjdXRlTm9uUXVlcnlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICovXHJcbiAgICBtb2R1bGUuZXhlY3V0ZU5vblF1ZXJ5ID0gYXN5bmMgZnVuY3Rpb24ocXVlcnkpIHtcclxuICAgICAgICBhd2FpdCBtb2R1bGUuX29wZW5EYkNvbm4oKTtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KHF1ZXJ5KTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfUVVFUllfRVJST1IsIGVyckhlbHBlci5nZXREYkVycm9yTWVzc2FnZShlKSk7XHJcbiAgICAgICAgfSBmaW5hbGx5IHtcclxuICAgICAgICAgICAgYXdhaXQgY29ubmVjdGlvbi5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl19
171
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9veF9tb2R1bGVzL21vZHVsZS1kYi5qcyJdLCJuYW1lcyI6WyJjb25uZWN0aW9uIiwiZXJySGVscGVyIiwicmVxdWlyZSIsIm1vZHVsZSIsImV4cG9ydHMiLCJpc0luaXRpYWxpemVkIiwiX29wZW5EYkNvbm4iLCJjb25uU3RyaW5nIiwiT3hFcnJvciIsImVycm9yQ29kZSIsIkRCX0NPTk5FQ1RJT05fRVJST1IiLCJkYiIsImUiLCJNb2R1bGVVbmF2YWlsYWJsZUVycm9yIiwibWVzc2FnZSIsImNvbm5lY3QiLCJnZXREYkVycm9yTWVzc2FnZSIsInNldENvbm5lY3Rpb25TdHJpbmciLCJnZXRTY2FsYXIiLCJxdWVyeSIsInJlc3VsdFNldCIsImxlbmd0aCIsImZpcnN0Um93IiwiZmlyc3RDb2wiLCJPYmplY3QiLCJrZXlzIiwiREJfUVVFUllfRVJST1IiLCJjbG9zZSIsImV4ZWN1dGVRdWVyeSIsInF1ZXJ5U3luY1JldHZhbCIsImV4ZWN1dGVOb25RdWVyeSIsImNhbGxQcm9jZWR1cmUiLCJuYW1lIiwiYXJncyJdLCJtYXBwaW5ncyI6Ijs7OztBQW9CQTs7OztBQXBCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFJQSxVQUFKOztBQUdBLElBQUlDLFNBQVMsR0FBR0MsT0FBTyxDQUFDLGtCQUFELENBQXZCOztBQUVBQyxNQUFNLENBQUNDLE9BQVAsR0FBaUIsWUFBVztBQUN4QjtBQUNBRCxFQUFBQSxNQUFNLENBQUNFLGFBQVAsR0FBdUIsWUFBVztBQUM5QixXQUFPLElBQVA7QUFDSCxHQUZEOztBQUlBRixFQUFBQSxNQUFNLENBQUNHLFdBQVAsR0FBcUIsa0JBQWlCO0FBQ2xDLFFBQUksQ0FBQyxLQUFLQyxVQUFWLEVBQXNCO0FBQ2xCLFlBQU0sSUFBSUMsb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CQyxtQkFBaEMs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Q0EsWUFBTU4sVUFBVSxDQUFDbUIsS0FBWCxDQUFpQkEsS0FBakIsQ0FBTjtBQUNILEtBRkQsQ0FFRSxPQUFPUCxDQUFQLEVBQVU7QUFDUixZQUFNLElBQUlKLG9CQUFKLENBQVlQLFNBQVMsQ0FBQ1EsU0FBVixDQUFvQmlCLGNBQWhDLEVBQWdEekIsU0FBUyxDQUFDZSxpQkFBVixDQUE0QkosQ0FBNUIsQ0FBaEQsQ0FBTjtBQUNILEtBSkQsU0FJVTtBQUNOLFlBQU1aLFVBQVUsQ0FBQzJCLEtBQVgsRUFBTjtBQUNIO0FBQ0osR0FURDtBQVdBO0FBQ0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUNJeEIsRUFBQUEsTUFBTSxDQUFDNEIsYUFBUCxHQUF1QixnQkFBZUMsSUFBZixFQUFxQixHQUFHQyxJQUF4QixFQUE4QjtBQUNqRCxVQUFNOUIsTUFBTSxDQUFDRyxXQUFQLEVBQU47O0FBRUEsUUFBSTtBQUNBLFlBQU11QixlQUFlLEdBQUcsTUFBTTdCLFVBQVUsQ0FBQytCLGFBQVgsQ0FBeUIsSUFBekIsRUFBK0IsSUFBL0IsRUFBcUNDLElBQXJDLEVBQTJDLENBQUMsR0FBR0MsSUFBSixDQUEzQyxDQUE5QjtBQUNBLGFBQU9KLGVBQVA7QUFDSCxLQUhELENBR0UsT0FBT2pCLENBQVAsRUFBVTtBQUNSLFlBQU0sSUFBSUosb0JBQUosQ0FBWVAsU0FBUyxDQUFDUSxTQUFWLENBQW9CaUIsY0FBaEMsRUFBZ0R6QixTQUFTLENBQUNlLGlCQUFWLENBQTRCSixDQUE1QixDQUFoRCxDQUFOO0FBQ0gsS0FMRCxTQUtVO0FBQ04sWUFBTVosVUFBVSxDQUFDMkIsS0FBWCxFQUFOO0FBQ0g7QUFDSixHQVhEOztBQWFBLFNBQU94QixNQUFQO0FBQ0gsQ0FoSUQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbi8qKlxyXG4gKiBAbmFtZSBkYlxyXG4gKiBAZGVzY3JpcHRpb24gUHJvdmlkZXMgbWV0aG9kcyBmb3Igd29ya2luZyB3aXRoIERhdGEgQmFzZXMgdGhyb3VnaCBPREJDLlxyXG4gKiBAbm90ZSBCZWZvcmUgdXNpbmcgdGhpcyBtb2R1bGUsIG1ha2Ugc3VyZSB0byBpbnN0YWxsIGB1bml4b2RiY2A6ICBcclxuICogICAqIFdpbmRvd3MgLSBJbnN0YWxsIGBXaW5kb3dzIFNES2AgIFxyXG4gKiAgICogT1MgWCAtICBgYnJldyBpbnN0YWxsIHVuaXhvZGJjYCAgXHJcbiAqICAgKiBMaW51eCAtIGBzdWRvIGFwdC1nZXQgaW5zdGFsbCB1bml4b2RiYyB1bml4b2RiYy1kZXZgIG9yIGBzdWRvIGRuZiBpbnN0YWxsIHVuaXhPREJDIHVuaXhPREJDLWRldmVsYFxyXG4gKi9cclxuXHJcbnZhciBjb25uZWN0aW9uO1xyXG5cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxudmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAvLyBGSVhNRTogY2hhbmdlIHNldENvbm5lY3Rpb25TdHJpbmcgdG8gaW5pdCBhbmQgYWRkIGhhZG5saW5nIGluIGhlcmVcclxuICAgIG1vZHVsZS5pc0luaXRpYWxpemVkID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5fb3BlbkRiQ29ubiA9IGFzeW5jIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5jb25uU3RyaW5nKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuREJfQ09OTkVDVElPTl9FUlJPUiwgJ05vIGNvbm5lY3Rpb24gc3RyaW5nIHNwZWNpZmllZC4gVXNlIGRiLnNldENvbm5lY3Rpb25TdHJpbmcoKS4nKTtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIC8vIGlnbm9yZSB0aGlzIG1vZHVsZSBpZiBvZGJjIHdhc24ndCBpbnN0YWxsZWRcclxuICAgICAgICAgICAgdmFyIGRiO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZGIgPSByZXF1aXJlKCdvZGJjJyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIC8vIGNvdWxkIGhhcHBlbiBvbmx5IG9uIHVuaXggZHVlIHRvIG1pc3NpbmcgdW5peG9kYmMgYmluYXJpZXNcclxuICAgICAgICAgICAgICAgIGNvbnN0IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IgPSByZXF1aXJlKCcuLi9lcnJvcnMvTW9kdWxlVW5hdmFpbGFibGVFcnJvcicpO1xyXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE1vZHVsZVVuYXZhaWxhYmxlRXJyb3IoJ1VuYWJsZSB0byBsb2FkIERCIG1vZHVsZS4gJytlLm1lc3NhZ2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICBjb25uZWN0aW9uID0gYXdhaXQgZGIuY29ubmVjdCh0aGlzLmNvbm5TdHJpbmcpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9DT05ORUNUSU9OX0VSUk9SLCBlcnJIZWxwZXIuZ2V0RGJFcnJvck1lc3NhZ2UoZSkpO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgLyoqXHJcbiAgICAqIEBzdW1tYXJ5IFNldHMgREIgY29ubmVjdGlvbiBzdHJpbmcgdG8gYmUgdXNlZCBieSBvdGhlciBtZXRob2RzLlxyXG4gICAgKiBAZGVzY3JpcHRpb24gVGhpcyBtZXRob2QgZG9lc24ndCBhY3R1YWxseSBvcGVuIHRoZSBjb25uZWN0aW9uIGFzIGl0J3Mgb3BlbmVkL2Nsb3NlZFxyXG4gICAgKiAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBieSBxdWVyeSBtZXRob2RzLiAgXHJcbiAgICAqICAgICAgICAgICAgICBFeGFtcGxlIGNvbm5lY3Rpb24gc3RyaW5nczogIFxyXG4gICAgKiAgICAgICAgICAgICAgLSBgRHJpdmVyPXtNeVNRTCBPREJDIDUuMyBVTklDT0RFIERyaXZlcn07U2VydmVyPWxvY2FsaG9zdDtEYXRhYmFzZT1teURhdGFiYXNlO1xyXG4gICAgKiAgICAgICAgICAgICAgICBVc2VyPW15VXNlcm5hbWU7UGFzc3dvcmQ9bXlQYXNzd29yZDtPcHRpb249MztgICBcclxuICAgICogICAgICAgICAgICAgIC0gYERyaXZlcj17T3JhY2xlIGluIGluc3RhbnRjbGllbnRfMTFfMn07ZGJxPTEyNy4wLjAuMToxNTIxL1hFO3VpZD1teVVzZXJuYW1lO1xyXG4gICAgKiAgICAgICAgICAgICAgICBwd2Q9bXlQYXNzd29yZDtgXHJcbiAgICAqIEBmdW5jdGlvbiBzZXRDb25uZWN0aW9uU3RyaW5nXHJcbiAgICAqIEBwYXJhbSB7U3RyaW5nfSBjb25uU3RyaW5nIC0gT0RCQyBjb25uZWN0aW9uIHN0cmluZy5cclxuICAgICovXHJcbiAgICBtb2R1bGUuc2V0Q29ubmVjdGlvblN0cmluZyA9IGZ1bmN0aW9uKGNvbm5TdHJpbmcpIHtcclxuICAgICAgICBtb2R1bGUuY29ublN0cmluZyA9IGNvbm5TdHJpbmc7XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHF1ZXJ5IGFuZCByZXR1cm5zIHRoZSBmaXJzdCBjb2x1bW4gb2YgdGhlIGZpcnN0IHJvdyBpbiB0aGUgcmVzdWx0IHNldC5cclxuICAgICAqIEBmdW5jdGlvbiBnZXRTY2FsYXJcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgZmlyc3QgY29sdW1uIG9mIHRoZSBmaXJzdCByb3cgaW4gdGhlIHJlc3VsdCBzZXQsIG9yIG51bGwgaWYgdGhlIHJlc3VsdFxyXG4gICAgICogICAgICAgICAgICAgICAgICBzZXQgaXMgZW1wdHkuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5nZXRTY2FsYXIgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHZhciByZXN1bHRTZXQgPSBhd2FpdCBjb25uZWN0aW9uLnF1ZXJ5KHF1ZXJ5KTtcclxuICAgICAgICAgICAgaWYgKHJlc3VsdFNldC5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHZhciBmaXJzdFJvdyA9IHJlc3VsdFNldFswXTtcclxuICAgICAgICAgICAgdmFyIGZpcnN0Q29sID0gZmlyc3RSb3dbT2JqZWN0LmtleXMoZmlyc3RSb3cpWzBdXTtcclxuICAgICAgICAgICAgcmV0dXJuIGZpcnN0Q29sO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IEV4ZWN1dGVzIFNRTCBxdWVyeSBhbmQgcmV0dXJucyB0aGUgcmVzdWx0IHNldC5cclxuICAgICAqIEBmdW5jdGlvbiBleGVjdXRlUXVlcnlcclxuICAgICAqIEBwYXJhbSB7U3RyaW5nfSBxdWVyeSAtIFRoZSBxdWVyeSB0byBleGVjdXRlLlxyXG4gICAgICogQHJldHVybiB7T2JqZWN0fSBUaGUgcmVzdWx0IHNldC5cclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmV4ZWN1dGVRdWVyeSA9IGFzeW5jIGZ1bmN0aW9uKHF1ZXJ5KSB7XHJcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgcXVlcnlTeW5jUmV0dmFsID0gYXdhaXQgY29ubmVjdGlvbi5xdWVyeShxdWVyeSk7XHJcbiAgICAgICAgICAgIHJldHVybiBxdWVyeVN5bmNSZXR2YWw7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB0aHJvdyBuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLkRCX1FVRVJZX0VSUk9SLCBlcnJIZWxwZXIuZ2V0RGJFcnJvck1lc3NhZ2UoZSkpO1xyXG4gICAgICAgIH0gZmluYWxseSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24uY2xvc2UoKTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogQHN1bW1hcnkgRXhlY3V0ZXMgU1FMIHN0YXRlbWVudC5cclxuICAgICAqIEBkZXNjcmlwdGlvbiBBbnkgcmVzdWx0cyBmcm9tIHRoZSBxdWVyeSBhcmUgZGlzY2FyZGVkLlxyXG4gICAgICogQGZ1bmN0aW9uIGV4ZWN1dGVOb25RdWVyeVxyXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IHF1ZXJ5IC0gVGhlIHF1ZXJ5IHRvIGV4ZWN1dGUuXHJcbiAgICAgKi9cclxuICAgIG1vZHVsZS5leGVjdXRlTm9uUXVlcnkgPSBhc3luYyBmdW5jdGlvbihxdWVyeSkge1xyXG4gICAgICAgIGF3YWl0IG1vZHVsZS5fb3BlbkRiQ29ubigpO1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGF3YWl0IGNvbm5lY3Rpb24ucXVlcnkocXVlcnkpO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEBzdW1tYXJ5IENhbGxzIGEgc3RvcmVkIHByb2NlZHVyZS5cclxuICAgICAqIEBmdW5jdGlvbiBjYWxsUHJvY2VkdXJlXHJcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gbmFtZSAtIE5hbWUgb2YgdGhlIHByb2NlZHVyZSB0byBjYWxsLlxyXG4gICAgICogQHBhcmFtIHsuLi5PYmplY3R9IGFyZ3MgLSBQcm9jZWR1cmUgYXJndW1lbnRzLiBJZiBwcm9jZWR1cmUgcHJvZHVjZXMgb3V0cHV0IHBhcmFtZXRlcnMgdGhlbiB0aGVzZSBuZWVkIHRvIGJlIHNwZWNpZmllZCB1c2luZyBgdW5kZWZpbmVkYC5cclxuICAgICAqIEByZXR1cm4ge09iamVjdH0gUHJvY2VkdXJlIG91dHB1dCBpZiBhbnkuXHJcbiAgICAgKiBAZXhhbXBsZSA8Y2FwdGlvbj5bamF2YXNjcmlwdF0gVXNhZ2UgZXhhbXBsZTwvY2FwdGlvbj5cclxuICAgICAqIC8vIGNhbGxzIGEgcHJvY2VkdXJlIHdoaWNoIGV4cGVjdHMgdHdvIGlucHV0IHBhcmFtZXRlcnMgYW5kIG9uZSBvdXRwdXQgcGFyYW1ldGVyLlxyXG4gICAgICogdmFyIHJlc3VsdCA9IGRiLmNhbGxQcm9jZWR1cmUoJ3Rlc3QnLCAzLCA0LCB1bmRlZmluZWQpO1xyXG4gICAgICogbG9nLmluZm8ocmVzdWx0KTtcclxuICAgICAqL1xyXG4gICAgbW9kdWxlLmNhbGxQcm9jZWR1cmUgPSBhc3luYyBmdW5jdGlvbihuYW1lLCAuLi5hcmdzKSB7XHJcbiAgICAgICAgYXdhaXQgbW9kdWxlLl9vcGVuRGJDb25uKCk7XHJcblxyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHF1ZXJ5U3luY1JldHZhbCA9IGF3YWl0IGNvbm5lY3Rpb24uY2FsbFByb2NlZHVyZShudWxsLCBudWxsLCBuYW1lLCBbLi4uYXJnc10pO1xyXG4gICAgICAgICAgICByZXR1cm4gcXVlcnlTeW5jUmV0dmFsO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5EQl9RVUVSWV9FUlJPUiwgZXJySGVscGVyLmdldERiRXJyb3JNZXNzYWdlKGUpKTtcclxuICAgICAgICB9IGZpbmFsbHkge1xyXG4gICAgICAgICAgICBhd2FpdCBjb25uZWN0aW9uLmNsb3NlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXX0=