appium-espresso-driver 2.5.0 → 2.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +47 -0
- package/build/index.js +10 -38
- package/build/lib/commands/execute.js +7 -4
- package/build/lib/commands/general.js +9 -9
- package/build/lib/driver.js +27 -12
- package/build/lib/espresso-runner.js +5 -5
- package/build/lib/logger.js +2 -2
- package/build/lib/server-builder.js +2 -2
- package/build/lib/utils.js +2 -2
- package/espresso-server/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk +0 -0
- package/index.js +2 -26
- package/lib/commands/execute.js +5 -1
- package/lib/commands/general.js +2 -2
- package/lib/driver.js +20 -7
- package/lib/espresso-runner.js +2 -2
- package/lib/logger.js +1 -1
- package/lib/server-builder.js +1 -1
- package/lib/utils.js +1 -1
- package/npm-shrinkwrap.json +2755 -1019
- package/package.json +5 -4
- package/build/lib/server.js +0 -39
- package/lib/server.js +0 -18
|
@@ -9,7 +9,7 @@ exports.default = exports.TEST_APK_PKG = exports.REQUIRED_PARAMS = exports.Espre
|
|
|
9
9
|
|
|
10
10
|
require("source-map-support/register");
|
|
11
11
|
|
|
12
|
-
var
|
|
12
|
+
var _driver = require("appium/driver");
|
|
13
13
|
|
|
14
14
|
var _asyncbox = require("asyncbox");
|
|
15
15
|
|
|
@@ -17,7 +17,7 @@ var _serverBuilder = require("./server-builder");
|
|
|
17
17
|
|
|
18
18
|
var _path = _interopRequireDefault(require("path"));
|
|
19
19
|
|
|
20
|
-
var _support = require("
|
|
20
|
+
var _support = require("appium/support");
|
|
21
21
|
|
|
22
22
|
var _package = require("../../package.json");
|
|
23
23
|
|
|
@@ -38,7 +38,7 @@ exports.REQUIRED_PARAMS = REQUIRED_PARAMS;
|
|
|
38
38
|
const ESPRESSO_SERVER_LAUNCH_TIMEOUT_MS = 45000;
|
|
39
39
|
const TARGET_PACKAGE_CONTAINER = '/data/local/tmp/espresso.apppackage';
|
|
40
40
|
|
|
41
|
-
class EspressoProxy extends
|
|
41
|
+
class EspressoProxy extends _driver.JWProxy {
|
|
42
42
|
async proxyCommand(url, method, body = null) {
|
|
43
43
|
const {
|
|
44
44
|
crashed,
|
|
@@ -46,7 +46,7 @@ class EspressoProxy extends _baseDriver.JWProxy {
|
|
|
46
46
|
} = this.instrumentationState;
|
|
47
47
|
|
|
48
48
|
if (exited) {
|
|
49
|
-
throw new
|
|
49
|
+
throw new _driver.errors.InvalidContextError(`'${method} ${url}' cannot be proxied to Espresso server because ` + `the instrumentation process has ${crashed ? 'crashed' : 'been unexpectedly terminated'}. ` + `Check the Appium server log and the logcat output for more details`);
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
return await super.proxyCommand(url, method, body);
|
|
@@ -354,4 +354,4 @@ var _default = EspressoRunner;
|
|
|
354
354
|
exports.default = _default;require('source-map-support').install();
|
|
355
355
|
|
|
356
356
|
|
|
357
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2VzcHJlc3NvLXJ1bm5lci5qcyIsIm5hbWVzIjpbIlRFU1RfU0VSVkVSX1JPT1QiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsIlRFU1RfQVBLX1BLRyIsIlJFUVVJUkVEX1BBUkFNUyIsIkVTUFJFU1NPX1NFUlZFUl9MQVVOQ0hfVElNRU9VVF9NUyIsIlRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUiIsIkVzcHJlc3NvUHJveHkiLCJKV1Byb3h5IiwicHJveHlDb21tYW5kIiwidXJsIiwibWV0aG9kIiwiYm9keSIsImNyYXNoZWQiLCJleGl0ZWQiLCJpbnN0cnVtZW50YXRpb25TdGF0ZSIsImVycm9ycyIsIkludmFsaWRDb250ZXh0RXJyb3IiLCJFc3ByZXNzb1J1bm5lciIsImNvbnN0cnVjdG9yIiwibG9nIiwib3B0cyIsInJlcSIsInV0aWwiLCJoYXNWYWx1ZSIsIkVycm9yIiwiandwcm94eSIsInNlcnZlciIsImhvc3QiLCJwb3J0Iiwic3lzdGVtUG9ydCIsImJhc2UiLCJrZWVwQWxpdmUiLCJwcm94eVJlcVJlcyIsImJpbmQiLCJjb21tYW5kIiwibW9kU2VydmVyTmFtZSIsImZzIiwic2FuaXRpemVOYW1lIiwidmVyc2lvbiIsImFwcFBhY2thZ2UiLCJhZGIiLCJjdXJEZXZpY2VJZCIsInJlcGxhY2VtZW50IiwibW9kU2VydmVyUGF0aCIsInRtcERpciIsInNob3dHcmFkbGVMb2ciLCJlc3ByZXNzb0J1aWxkQ29uZmlnIiwic2VydmVyTGF1bmNoVGltZW91dCIsImFuZHJvaWRJbnN0YWxsVGltZW91dCIsImRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlIiwidXNlS2V5c3RvcmUiLCJrZXlzdG9yZVBhdGgiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsInNpZ25pbmdDb25maWciLCJidWlsZFNlcnZlclNpZ25pbmdDb25maWciLCJrZXlzdG9yZUZpbGUiLCJpc0FwcFBhY2thZ2VDaGFuZ2VkIiwiZmlsZUV4aXN0cyIsImRlYnVnIiwicHJldmlvdXNBcHBQYWNrYWdlIiwic2hlbGwiLCJ0cmltIiwiaW5zdGFsbFNlcnZlciIsImFwcFN0YXRlIiwiZ2V0QXBwbGljYXRpb25JbnN0YWxsU3RhdGUiLCJzaG91bGRVbmluc3RhbGxBcHAiLCJBUFBfSU5TVEFMTF9TVEFURSIsIk9MREVSX1ZFUlNJT05fSU5TVEFMTEVEIiwiTkVXRVJfVkVSU0lPTl9JTlNUQUxMRUQiLCJpbmNsdWRlcyIsInNob3VsZEluc3RhbGxBcHAiLCJOT1RfSU5TVEFMTEVEIiwiaW5mbyIsInVuaW5zdGFsbEFwayIsImVyciIsIndhcm4iLCJtZXNzYWdlIiwiaW5zdGFsbCIsInJlcGxhY2UiLCJ0aW1lb3V0IiwiZXJyb3JBbmRUaHJvdyIsImluc3RhbGxUZXN0QXBrIiwicmVidWlsZCIsImZvcmNlRXNwcmVzc29SZWJ1aWxkIiwiZXhpc3RzIiwidW5saW5rIiwiYnVpbGROZXdNb2RTZXJ2ZXIiLCJpc1NpZ25lZCIsImNoZWNrQXBrQ2VydCIsInNpZ24iLCJidWlsZENvbmZpZ3VyYXRpb24iLCJidWlsZENvbmZpZ3VyYXRpb25TdHIiLCJyZWFkRmlsZSIsIkpTT04iLCJwYXJzZSIsImUiLCJlcnJvciIsImRpck5hbWUiLCJzZXJ2ZXJQYXRoIiwicmltcmFmIiwibWtkaXJwIiwiY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSIsIlNlcnZlckJ1aWxkZXIiLCJ0ZXN0QXBwUGFja2FnZSIsImJ1aWxkIiwiYXBrUGF0aCIsImNvcHlGaWxlIiwiY2xlYW51cFNlc3Npb25MZWZ0b3ZlcnMiLCJ2YWx1ZSIsImF4aW9zIiwiZGF0YSIsImFjdGl2ZVNlc3Npb25JZHMiLCJtYXAiLCJzZXNzIiwiaWQiLCJsZW5ndGgiLCJzdHJpbmdpZnkiLCJCIiwiYWxsIiwiZGVsYXkiLCJzdGFydFNlc3Npb24iLCJjYXBzIiwiY21kIiwicHJvY2VzcyIsImVudiIsIkVTUFJFU1NPX0pBVkFfREVCVUciLCJfIiwiaXNCb29sZWFuIiwicHVzaCIsImpvaW4iLCJoYXNTb2NrZXRFcnJvciIsImluc3RQcm9jZXNzIiwiY3JlYXRlU3ViUHJvY2VzcyIsIm9uIiwiY29kZSIsInNpZ25hbCIsInN0ZG91dCIsInN0ZGVyciIsImxpbmUiLCJpc0VtcHR5IiwidG9Mb3dlckNhc2UiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJ3YWl0Rm9yQ29uZGl0aW9uIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsInRlc3QiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInJlY29yZFRhcmdldEFwcFBhY2thZ2UiLCJkZWxldGVTZXNzaW9uIiwiaXNSdW5uaW5nIiwic3RvcCJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9lc3ByZXNzby1ydW5uZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSldQcm94eSwgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgU2VydmVyQnVpbGRlciwgYnVpbGRTZXJ2ZXJTaWduaW5nQ29uZmlnIH0gZnJvbSAnLi9zZXJ2ZXItYnVpbGRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZzLCB1dGlsLCBta2RpcnAsIHRpbWluZyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQvbm8tdW5yZXNvbHZlZFxuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNvcHlHcmFkbGVQcm9qZWN0UmVjdXJzaXZlbHkgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cblxuY29uc3QgVEVTVF9TRVJWRVJfUk9PVCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICdlc3ByZXNzby1zZXJ2ZXInKTtcbmNvbnN0IFRFU1RfQVBLX1BLRyA9ICdpby5hcHBpdW0uZXNwcmVzc29zZXJ2ZXIudGVzdCc7XG5jb25zdCBSRVFVSVJFRF9QQVJBTVMgPSBbXG4gICdhZGInLFxuICAndG1wRGlyJyxcbiAgJ2hvc3QnLFxuICAnc3lzdGVtUG9ydCcsXG4gICdkZXZpY2VQb3J0JyxcbiAgJ2FwcFBhY2thZ2UnLFxuICAnZm9yY2VFc3ByZXNzb1JlYnVpbGQnLFxuXTtcbmNvbnN0IEVTUFJFU1NPX1NFUlZFUl9MQVVOQ0hfVElNRU9VVF9NUyA9IDQ1MDAwO1xuY29uc3QgVEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSID0gJy9kYXRhL2xvY2FsL3RtcC9lc3ByZXNzby5hcHBwYWNrYWdlJztcblxuY2xhc3MgRXNwcmVzc29Qcm94eSBleHRlbmRzIEpXUHJveHkge1xuICBhc3luYyBwcm94eUNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGNvbnN0IHtjcmFzaGVkLCBleGl0ZWR9ID0gdGhpcy5pbnN0cnVtZW50YXRpb25TdGF0ZTtcbiAgICBpZiAoZXhpdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRDb250ZXh0RXJyb3IoYCcke21ldGhvZH0gJHt1cmx9JyBjYW5ub3QgYmUgcHJveGllZCB0byBFc3ByZXNzbyBzZXJ2ZXIgYmVjYXVzZSBgICtcbiAgICAgICAgYHRoZSBpbnN0cnVtZW50YXRpb24gcHJvY2VzcyBoYXMgJHtjcmFzaGVkID8gJ2NyYXNoZWQnIDogJ2JlZW4gdW5leHBlY3RlZGx5IHRlcm1pbmF0ZWQnfS4gYCArXG4gICAgICAgIGBDaGVjayB0aGUgQXBwaXVtIHNlcnZlciBsb2cgYW5kIHRoZSBsb2djYXQgb3V0cHV0IGZvciBtb3JlIGRldGFpbHNgKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLnByb3h5Q29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cbn1cblxuY2xhc3MgRXNwcmVzc29SdW5uZXIge1xuICBjb25zdHJ1Y3RvciAobG9nLCBvcHRzID0ge30pIHtcbiAgICBmb3IgKGxldCByZXEgb2YgUkVRVUlSRURfUEFSQU1TKSB7XG4gICAgICBpZiAoIW9wdHMgfHwgIXV0aWwuaGFzVmFsdWUob3B0c1tyZXFdKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9wdGlvbiAnJHtyZXF9JyBpcyByZXF1aXJlZCFgKTtcbiAgICAgIH1cbiAgICAgIHRoaXNbcmVxXSA9IG9wdHNbcmVxXTtcbiAgICB9XG4gICAgdGhpcy5sb2cgPSBsb2c7XG4gICAgdGhpcy5qd3Byb3h5ID0gbmV3IEVzcHJlc3NvUHJveHkoe1xuICAgICAgbG9nLFxuICAgICAgc2VydmVyOiB0aGlzLmhvc3QsXG4gICAgICBwb3J0OiB0aGlzLnN5c3RlbVBvcnQsXG4gICAgICBiYXNlOiAnJyxcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy5qd3Byb3h5LnByb3h5UmVxUmVzLmJpbmQodGhpcy5qd3Byb3h5KTtcbiAgICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMuandwcm94eS5jb21tYW5kLmJpbmQodGhpcy5qd3Byb3h5KTtcbiAgICB0aGlzLmp3cHJveHkuaW5zdHJ1bWVudGF0aW9uU3RhdGUgPSB7XG4gICAgICBleGl0ZWQ6IGZhbHNlLFxuICAgICAgY3Jhc2hlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIGNvbnN0IG1vZFNlcnZlck5hbWUgPSBmcy5zYW5pdGl6ZU5hbWUoYCR7VEVTVF9BUEtfUEtHfV8ke3ZlcnNpb259XyR7dGhpcy5hcHBQYWNrYWdlfV8ke3RoaXMuYWRiLmN1ckRldmljZUlkfS5hcGtgLCB7XG4gICAgICByZXBsYWNlbWVudDogJy0nLFxuICAgIH0pO1xuICAgIHRoaXMubW9kU2VydmVyUGF0aCA9IHBhdGgucmVzb2x2ZSh0aGlzLnRtcERpciwgbW9kU2VydmVyTmFtZSk7XG4gICAgdGhpcy5zaG93R3JhZGxlTG9nID0gb3B0cy5zaG93R3JhZGxlTG9nO1xuICAgIHRoaXMuZXNwcmVzc29CdWlsZENvbmZpZyA9IG9wdHMuZXNwcmVzc29CdWlsZENvbmZpZztcblxuICAgIHRoaXMuc2VydmVyTGF1bmNoVGltZW91dCA9IG9wdHMuc2VydmVyTGF1bmNoVGltZW91dCB8fCBFU1BSRVNTT19TRVJWRVJfTEFVTkNIX1RJTUVPVVRfTVM7XG4gICAgdGhpcy5hbmRyb2lkSW5zdGFsbFRpbWVvdXQgPSBvcHRzLmFuZHJvaWRJbnN0YWxsVGltZW91dDtcblxuICAgIHRoaXMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UgPSBvcHRzLmRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlO1xuXG4gICAgLy8gRXNwcmVzc28gU2VydmVyIGFwcCBuZWVkcyB0byBiZSBzaWduZWQgd2l0aCBzYW1lIGtleVN0b3JlIGFzIGFwcFBhY2thZ2VcbiAgICBpZiAob3B0cy51c2VLZXlzdG9yZSAmJiBvcHRzLmtleXN0b3JlUGF0aCAmJiBvcHRzLmtleXN0b3JlUGFzc3dvcmQgJiYgb3B0cy5rZXlBbGlhcyAmJiBvcHRzLmtleVBhc3N3b3JkKSB7XG4gICAgICB0aGlzLnNpZ25pbmdDb25maWcgPSBidWlsZFNlcnZlclNpZ25pbmdDb25maWcoe1xuICAgICAgICBrZXlzdG9yZUZpbGU6IG9wdHMua2V5c3RvcmVQYXRoLFxuICAgICAgICBrZXlzdG9yZVBhc3N3b3JkOiBvcHRzLmtleXN0b3JlUGFzc3dvcmQsXG4gICAgICAgIGtleUFsaWFzOiBvcHRzLmtleUFsaWFzLFxuICAgICAgICBrZXlQYXNzd29yZDogb3B0cy5rZXlQYXNzd29yZFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2lnbmluZ0NvbmZpZyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaXNBcHBQYWNrYWdlQ2hhbmdlZCAoKSB7XG4gICAgaWYgKCFhd2FpdCB0aGlzLmFkYi5maWxlRXhpc3RzKFRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUikpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdUaGUgcHJldmlvdXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHBhY2thZ2UgaXMgdW5rbm93bicpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHByZXZpb3VzQXBwUGFja2FnZSA9IChhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2NhdCcsIFRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUl0pKS50cmltKCk7XG4gICAgdGhpcy5sb2cuZGVidWcoYFRoZSBwcmV2aW91cyB0YXJnZXQgYXBwbGljYXRpb24gcGFja2FnZSB3YXMgJyR7cHJldmlvdXNBcHBQYWNrYWdlfScuIGAgK1xuICAgICAgYFRoZSBjdXJyZW50IHBhY2thZ2UgaXMgJyR7dGhpcy5hcHBQYWNrYWdlfSdgKTtcbiAgICByZXR1cm4gcHJldmlvdXNBcHBQYWNrYWdlICE9PSB0aGlzLmFwcFBhY2thZ2U7XG4gIH1cblxuICAvKipcbiAgICogSW5zdGFsbHMgRXNwcmVzc28gc2VydmVyIGFwayBvbiB0byB0aGUgZGV2aWNlIG9yIGVtdWxhdG9yLlxuICAgKiBFYWNoIGFkYiBjb21tYW5kIHVzZXMgZGVmYXVsdCB0aW1lb3V0IGJ5IHRoZW0uXG4gICAqL1xuICBhc3luYyBpbnN0YWxsU2VydmVyICgpIHtcbiAgICBjb25zdCBhcHBTdGF0ZSA9IGF3YWl0IHRoaXMuYWRiLmdldEFwcGxpY2F0aW9uSW5zdGFsbFN0YXRlKHRoaXMubW9kU2VydmVyUGF0aCwgVEVTVF9BUEtfUEtHKTtcblxuICAgIGNvbnN0IHNob3VsZFVuaW5zdGFsbEFwcCA9IFtcbiAgICAgIHRoaXMuYWRiLkFQUF9JTlNUQUxMX1NUQVRFLk9MREVSX1ZFUlNJT05fSU5TVEFMTEVELFxuICAgICAgdGhpcy5hZGIuQVBQX0lOU1RBTExfU1RBVEUuTkVXRVJfVkVSU0lPTl9JTlNUQUxMRURcbiAgICBdLmluY2x1ZGVzKGFwcFN0YXRlKTtcbiAgICBjb25zdCBzaG91bGRJbnN0YWxsQXBwID0gc2hvdWxkVW5pbnN0YWxsQXBwIHx8IFtcbiAgICAgIHRoaXMuYWRiLkFQUF9JTlNUQUxMX1NUQVRFLk5PVF9JTlNUQUxMRURcbiAgICBdLmluY2x1ZGVzKGFwcFN0YXRlKTtcblxuICAgIGlmIChzaG91bGRVbmluc3RhbGxBcHApIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYFVuaW5zdGFsbGluZyBFc3ByZXNzbyBUZXN0IFNlcnZlciBhcGsgZnJvbSB0aGUgdGFyZ2V0IGRldmljZSAocGtnOiAnJHtURVNUX0FQS19QS0d9JylgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayhURVNUX0FQS19QS0cpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYEVycm9yIHVuaW5zdGFsbGluZyAnJHtURVNUX0FQS19QS0d9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkSW5zdGFsbEFwcCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgSW5zdGFsbGluZyBFc3ByZXNzbyBUZXN0IFNlcnZlciBhcGsgZnJvbSB0aGUgdGFyZ2V0IGRldmljZSAocGF0aDogJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofScpYCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5pbnN0YWxsKHRoaXMubW9kU2VydmVyUGF0aCwgeyByZXBsYWNlOiBmYWxzZSwgdGltZW91dDogdGhpcy5hbmRyb2lkSW5zdGFsbFRpbWVvdXQgfSk7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYEluc3RhbGxlZCBFc3ByZXNzbyBUZXN0IFNlcnZlciBhcGsgJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofScgKHBrZzogJyR7VEVTVF9BUEtfUEtHfScpYCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ2Fubm90IGluc3RhbGwgJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofScgYmVjYXVzZSBvZiAnJHtlcnIubWVzc2FnZX0nYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5zdGFsbFRlc3RBcGsgKCkge1xuICAgIGxldCByZWJ1aWxkID0gdGhpcy5mb3JjZUVzcHJlc3NvUmVidWlsZDtcbiAgICBpZiAocmVidWlsZCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYCdmb3JjZUVzcHJlc3NvUmVidWlsZCcgY2FwYWJpbGl0eSBpcyBlbmFibGVkYCk7XG4gICAgfSBlbHNlIGlmIChhd2FpdCB0aGlzLmlzQXBwUGFja2FnZUNoYW5nZWQoKSkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgRm9yY2luZyBFc3ByZXNzbyBzZXJ2ZXIgcmVidWlsZCBiZWNhdXNlIG9mIGNoYW5nZWQgYXBwbGljYXRpb24gcGFja2FnZWApO1xuICAgICAgcmVidWlsZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJlYnVpbGQgJiYgYXdhaXQgZnMuZXhpc3RzKHRoaXMubW9kU2VydmVyUGF0aCkpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBEZWxldGluZyB0aGUgb2Jzb2xldGUgRXNwcmVzc28gc2VydmVyIHBhY2thZ2UgJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofSdgKTtcbiAgICAgIGF3YWl0IGZzLnVubGluayh0aGlzLm1vZFNlcnZlclBhdGgpO1xuICAgIH1cbiAgICBpZiAoIShhd2FpdCBmcy5leGlzdHModGhpcy5tb2RTZXJ2ZXJQYXRoKSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuYnVpbGROZXdNb2RTZXJ2ZXIoKTtcbiAgICB9XG4gICAgY29uc3QgaXNTaWduZWQgPSBhd2FpdCB0aGlzLmFkYi5jaGVja0Fwa0NlcnQodGhpcy5tb2RTZXJ2ZXJQYXRoLCBURVNUX0FQS19QS0cpO1xuICAgIGlmICghaXNTaWduZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNpZ24odGhpcy5tb2RTZXJ2ZXJQYXRoKTtcbiAgICB9XG4gICAgaWYgKChyZWJ1aWxkIHx8ICFpc1NpZ25lZCkgJiYgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKFRFU1RfQVBLX1BLRykpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ1VuaW5zdGFsbGVkIHRoZSBvYnNvbGV0ZSBFc3ByZXNzbyBzZXJ2ZXIgcGFja2FnZSBmcm9tIHRoZSBkZXZpY2UgdW5kZXIgdGVzdCcpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuaW5zdGFsbFNlcnZlcigpO1xuICB9XG5cbiAgYXN5bmMgYnVpbGROZXdNb2RTZXJ2ZXIgKCkge1xuICAgIGxldCBidWlsZENvbmZpZ3VyYXRpb24gPSB7fTtcbiAgICBpZiAodGhpcy5lc3ByZXNzb0J1aWxkQ29uZmlnKSB7XG4gICAgICBsZXQgYnVpbGRDb25maWd1cmF0aW9uU3RyO1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyh0aGlzLmVzcHJlc3NvQnVpbGRDb25maWcpKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYExvYWRpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZnJvbSAnJHt0aGlzLmVzcHJlc3NvQnVpbGRDb25maWd9J2ApO1xuICAgICAgICBidWlsZENvbmZpZ3VyYXRpb25TdHIgPSBhd2FpdCBmcy5yZWFkRmlsZSh0aGlzLmVzcHJlc3NvQnVpbGRDb25maWcsICd1dGY4Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBMb2FkaW5nIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZyb20gJ2VzcHJlc3NvQnVpbGRDb25maWcnIGNhcGFiaWxpdHlgKTtcbiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uU3RyID0gdGhpcy5lc3ByZXNzb0J1aWxkQ29uZmlnO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gSlNPTi5wYXJzZShidWlsZENvbmZpZ3VyYXRpb25TdHIpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvcignQ2Fubm90IHBhcnNlIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIEpTT04nLCBlKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZGlyTmFtZSA9IGZzLnNhbml0aXplTmFtZShgZXNwcmVzc28tc2VydmVyLSR7dGhpcy5hZGIuY3VyRGV2aWNlSWR9YCwge1xuICAgICAgcmVwbGFjZW1lbnQ6ICctJyxcbiAgICB9KTtcbiAgICBjb25zdCBzZXJ2ZXJQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMudG1wRGlyLCBkaXJOYW1lKTtcbiAgICB0aGlzLmxvZy5pbmZvKGBCdWlsZGluZyBlc3ByZXNzbyBzZXJ2ZXIgaW4gJyR7c2VydmVyUGF0aH0nYCk7XG4gICAgdGhpcy5sb2cuZGVidWcoYFRoZSBidWlsZCBmb2xkZXIgcm9vdCBjb3VsZCBiZSBjdXN0b21pemVkIGJ5IGNoYW5naW5nIHRoZSAndG1wRGlyJyBjYXBhYmlsaXR5YCk7XG4gICAgYXdhaXQgZnMucmltcmFmKHNlcnZlclBhdGgpO1xuICAgIGF3YWl0IG1rZGlycChzZXJ2ZXJQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgQ29weWluZyBlc3ByZXNzbyBzZXJ2ZXIgdGVtcGxhdGUgZnJvbSAoJyR7VEVTVF9TRVJWRVJfUk9PVH0nIHRvICcke3NlcnZlclBhdGh9JylgKTtcbiAgICBhd2FpdCBjb3B5R3JhZGxlUHJvamVjdFJlY3Vyc2l2ZWx5KFRFU1RfU0VSVkVSX1JPT1QsIHNlcnZlclBhdGgpO1xuICAgIHRoaXMubG9nLmRlYnVnKCdCdWxkaW5nIGVzcHJlc3NvIHNlcnZlcicpO1xuICAgIGF3YWl0IG5ldyBTZXJ2ZXJCdWlsZGVyKHRoaXMubG9nLCB7XG4gICAgICBzZXJ2ZXJQYXRoLCBidWlsZENvbmZpZ3VyYXRpb24sXG4gICAgICBzaG93R3JhZGxlTG9nOiB0aGlzLnNob3dHcmFkbGVMb2csXG4gICAgICB0ZXN0QXBwUGFja2FnZTogdGhpcy5hcHBQYWNrYWdlLFxuICAgICAgc2lnbmluZ0NvbmZpZzogdGhpcy5zaWduaW5nQ29uZmlnXG4gICAgfSkuYnVpbGQoKTtcbiAgICBjb25zdCBhcGtQYXRoID0gcGF0aC5yZXNvbHZlKHNlcnZlclBhdGgsICdhcHAnLCAnYnVpbGQnLCAnb3V0cHV0cycsICdhcGsnLCAnYW5kcm9pZFRlc3QnLCAnZGVidWcnLCAnYXBwLWRlYnVnLWFuZHJvaWRUZXN0LmFwaycpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBDb3B5aW5nIGJ1aWx0IGFwayBmcm9tICcke2Fwa1BhdGh9JyB0byAnJHt0aGlzLm1vZFNlcnZlclBhdGh9J2ApO1xuICAgIGF3YWl0IGZzLmNvcHlGaWxlKGFwa1BhdGgsIHRoaXMubW9kU2VydmVyUGF0aCk7XG4gIH1cblxuICBhc3luYyBjbGVhbnVwU2Vzc2lvbkxlZnRvdmVycyAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ1BlcmZvcm1pbmcgY2xlYW51cCBvZiBhdXRvbWF0aW9uIGxlZnRvdmVycycpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmw6IGBodHRwOi8vJHt0aGlzLmhvc3R9OiR7dGhpcy5zeXN0ZW1Qb3J0fS9zZXNzaW9uc2AsXG4gICAgICAgIHRpbWVvdXQ6IDUwMCxcbiAgICAgIH0pKS5kYXRhO1xuICAgICAgY29uc3QgYWN0aXZlU2Vzc2lvbklkcyA9IHZhbHVlLm1hcCgoc2VzcykgPT4gc2Vzcy5pZCk7XG4gICAgICBpZiAoYWN0aXZlU2Vzc2lvbklkcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYFRoZSBmb2xsb3dpbmcgb2Jzb2xldGUgc2Vzc2lvbnMgYXJlIHN0aWxsIHJ1bm5pbmc6ICR7SlNPTi5zdHJpbmdpZnkoYWN0aXZlU2Vzc2lvbklkcyl9YCk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKCdDbGVhbmluZyB1cCB0aGUgb2Jzb2xldGUgc2Vzc2lvbnMnKTtcbiAgICAgICAgYXdhaXQgQi5hbGwoYWN0aXZlU2Vzc2lvbklkcy5tYXAoKGlkKSA9PlxuICAgICAgICAgIGF4aW9zKHtcbiAgICAgICAgICAgIHVybDogYGh0dHA6Ly8ke3RoaXMuaG9zdH06JHt0aGlzLnN5c3RlbVBvcnR9L3Nlc3Npb24vJHtpZH1gLFxuICAgICAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgICAgICB9KVxuICAgICAgICApKTtcbiAgICAgICAgLy8gTGV0IGFsbCBzZXNzaW9ucyB0byBiZSBwcm9wZXJseSB0ZXJtaW5hdGVkIGJlZm9yZSBjb250aW51aW5nXG4gICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZygnTm8gb2Jzb2xldGUgc2Vzc2lvbnMgaGF2ZSBiZWVuIGRldGVjdGVkJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYE5vIG9ic29sZXRlIHNlc3Npb25zIGhhdmUgYmVlbiBkZXRlY3RlZCAoJHtlLm1lc3NhZ2V9KWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0YXJ0U2Vzc2lvbiAoY2Fwcykge1xuICAgIGF3YWl0IHRoaXMuY2xlYW51cFNlc3Npb25MZWZ0b3ZlcnMoKTtcblxuICAgIGNvbnN0IGNtZCA9IFtcbiAgICAgICdzaGVsbCcsXG4gICAgICAnYW0nLCAnaW5zdHJ1bWVudCcsXG4gICAgICAnLXcnLFxuICAgICAgJy1lJywgJ2RlYnVnJywgcHJvY2Vzcy5lbnYuRVNQUkVTU09fSkFWQV9ERUJVRyA9PT0gJ3RydWUnLFxuICAgICAgJy1lJywgJ2Rpc2FibGVBbmFseXRpY3MnLCB0cnVlLCAvLyBUbyBhdm9pZCB1bmV4cGVjdGVkIGVycm9yIGJ5IGdvb2dsZSBhbmFseXRpY3NcbiAgICBdO1xuXG4gICAgaWYgKF8uaXNCb29sZWFuKHRoaXMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UpKSB7XG4gICAgICBjbWQucHVzaCgnLWUnLCAnRElTQUJMRV9TVVBQUkVTU19BQ0NFU1NJQklMSVRZX1NFUlZJQ0VTJywgdGhpcy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSk7XG4gICAgfVxuXG4gICAgY21kLnB1c2goYCR7VEVTVF9BUEtfUEtHfS9hbmRyb2lkeC50ZXN0LnJ1bm5lci5BbmRyb2lkSlVuaXRSdW5uZXJgKTtcblxuICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nIEVzcHJlc3NvIFNlcnZlciB2JHt2ZXJzaW9ufSB3aXRoIGNtZDogYWRiICR7Y21kLmpvaW4oJyAnKX1gKTtcblxuICAgIGxldCBoYXNTb2NrZXRFcnJvciA9IGZhbHNlO1xuICAgIC8vIHN0YXJ0IHRoZSBpbnN0cnVtZW50YXRpb24gcHJvY2Vzc1xuICAgIHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZSA9IHtcbiAgICAgIGV4aXRlZDogZmFsc2UsXG4gICAgICBjcmFzaGVkOiBmYWxzZSxcbiAgICB9O1xuICAgIHRoaXMuaW5zdFByb2Nlc3MgPSB0aGlzLmFkYi5jcmVhdGVTdWJQcm9jZXNzKGNtZCk7XG4gICAgdGhpcy5pbnN0UHJvY2Vzcy5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgIHRoaXMubG9nLmluZm8oYEluc3RydW1lbnRhdGlvbiBwcm9jZXNzIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfSBmcm9tIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICAgIHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZS5leGl0ZWQgPSB0cnVlO1xuICAgIH0pO1xuICAgIHRoaXMuaW5zdFByb2Nlc3Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IHN0ZG91dCB8fCBzdGRlcnI7XG4gICAgICBpZiAoXy5pc0VtcHR5KGxpbmUudHJpbSgpKSkge1xuICAgICAgICAvLyBEbyBub3QgcHJpbnQgZW1wdHkgbGluZXMgaW50byB0aGUgc3lzdGVtIGxvZ1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9nLmRlYnVnKGBbSW5zdHJ1bWVudGF0aW9uXSAke2xpbmUudHJpbSgpfWApO1xuICAgICAgLy8gQSAnU29ja2V0RXhjZXB0aW9uJyBpbmRpY2F0ZXMgdGhhdCB3ZSBjb3VsZG4ndCBjb25uZWN0IHRvIHRoZSBFc3ByZXNzbyBzZXJ2ZXIsXG4gICAgICAvLyBiZWNhdXNlIHRoZSBJTlRFUk5FVCBwZXJtaXNzaW9uIGlzIG5vdCBzZXRcbiAgICAgIGlmIChsaW5lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2phdmEubmV0LnNvY2tldGV4Y2VwdGlvbicpKSB7XG4gICAgICAgIGhhc1NvY2tldEVycm9yID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobGluZS5pbmNsdWRlcygnUHJvY2VzcyBjcmFzaGVkJykpIHtcbiAgICAgICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlLmNyYXNoZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmluc3RQcm9jZXNzLnN0YXJ0KDApO1xuICAgIHRoaXMubG9nLmluZm8oYFdhaXRpbmcgdXAgdG8gJHt0aGlzLnNlcnZlckxhdW5jaFRpbWVvdXR9bXMgZm9yIEVzcHJlc3NvIHNlcnZlciB0byBiZSBvbmxpbmVgKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChoYXNTb2NrZXRFcnJvcikge1xuICAgICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYEVzcHJlc3NvIHNlcnZlciBoYXMgZmFpbGVkIHRvIHN0YXJ0IGR1ZSB0byBhbiB1bmV4cGVjdGVkIGV4Y2VwdGlvbi4gYCArXG4gICAgICAgICAgICBgTWFrZSBzdXJlIHRoZSAnSU5URVJORVQnIHBlcm1pc3Npb24gaXMgcmVxdWVzdGVkIGluIHRoZSBBbmRyb2lkIG1hbmlmZXN0IG9mIHlvdXIgYCArXG4gICAgICAgICAgICBgYXBwbGljYXRpb24gdW5kZXIgdGVzdCAoPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9XCJhbmRyb2lkLnBlcm1pc3Npb24uSU5URVJORVRcIiAvPilgKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmp3cHJveHkuaW5zdHJ1bWVudGF0aW9uU3RhdGUuZXhpdGVkKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgRXNwcmVzc28gc2VydmVyIHByb2Nlc3MgaGFzIGJlZW4gdW5leHBlY3RlZGx5IHRlcm1pbmF0ZWQuIGAgK1xuICAgICAgICAgICAgYENoZWNrIHRoZSBBcHBpdW0gc2VydmVyIGxvZyBhbmQgdGhlIGxvZ2NhdCBvdXRwdXQgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5qd3Byb3h5LmNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgd2FpdE1zOiB0aGlzLnNlcnZlckxhdW5jaFRpbWVvdXQsXG4gICAgICAgIGludGVydmFsTXM6IDUwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICgvQ29uZGl0aW9uIHVubWV0Ly50ZXN0KGUubWVzc2FnZSkpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGltZWQgb3V0IHdhaXRpbmcgZm9yIEVzcHJlc3NvIHNlcnZlciB0byBiZSBgICtcbiAgICAgICAgICBgb25saW5lIHdpdGhpbiAke3RoaXMuc2VydmVyTGF1bmNoVGltZW91dH1tcy4gVGhlIHRpbWVvdXQgdmFsdWUgY291bGQgYmUgYCArXG4gICAgICAgICAgYGN1c3RvbWl6ZWQgdXNpbmcgJ2VzcHJlc3NvU2VydmVyTGF1bmNoVGltZW91dCcgY2FwYWJpbGl0eWApO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgdGhpcy5sb2cuaW5mbyhgRXNwcmVzc28gc2VydmVyIGlzIG9ubGluZS4gYCArXG4gICAgICBgVGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgdG9vayAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgIHRoaXMubG9nLmluZm8oJ1N0YXJ0aW5nIHRoZSBzZXNzaW9uJyk7XG5cbiAgICBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCgnL3Nlc3Npb24nLCAnUE9TVCcsIHtcbiAgICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgICBmaXJzdE1hdGNoOiBbY2Fwc10sXG4gICAgICAgIGFsd2F5c01hdGNoOiB7fVxuICAgICAgfVxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMucmVjb3JkVGFyZ2V0QXBwUGFja2FnZSgpO1xuICB9XG5cbiAgYXN5bmMgcmVjb3JkVGFyZ2V0QXBwUGFja2FnZSAoKSB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2hlbGwoW2BlY2hvIFwiJHt0aGlzLmFwcFBhY2thZ2V9XCIgPiBcIiR7VEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSfVwiYF0pO1xuICAgIHRoaXMubG9nLmluZm8oYFJlY29yZGVkIHRoZSB0YXJnZXQgYXBwbGljYXRpb24gcGFja2FnZSAnJHt0aGlzLmFwcFBhY2thZ2V9JyB0byAke1RBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUn1gKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdEZWxldGluZyBFc3ByZXNzbyBzZXJ2ZXIgc2Vzc2lvbicpO1xuICAgIC8vIHJlbHkgb24gandwcm94eSdzIGludGVsbGlnZW5jZSB0byBrbm93IHdoYXQgd2UncmUgdGFsa2luZyBhYm91dCBhbmRcbiAgICAvLyBkZWxldGUgdGhlIGN1cnJlbnQgc2Vzc2lvblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCgnLycsICdERUxFVEUnKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oYERpZCBub3QgZ2V0IGNvbmZpcm1hdGlvbiBFc3ByZXNzbyBkZWxldGVTZXNzaW9uIHdvcmtlZDsgYCArXG4gICAgICAgICAgYEVycm9yIHdhczogJHtlcnJ9YCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5zdFByb2Nlc3MgJiYgdGhpcy5pbnN0UHJvY2Vzcy5pc1J1bm5pbmcpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW5zdFByb2Nlc3Muc3RvcCgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgeyBFc3ByZXNzb1J1bm5lciwgUkVRVUlSRURfUEFSQU1TLCBURVNUX0FQS19QS0cgfTtcbmV4cG9ydCBkZWZhdWx0IEVzcHJlc3NvUnVubmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLGdCQUFnQixHQUFHQyxhQUFBLENBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixJQUE5QixFQUFvQyxpQkFBcEMsQ0FBekI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHLCtCQUFyQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUcsQ0FDdEIsS0FEc0IsRUFFdEIsUUFGc0IsRUFHdEIsTUFIc0IsRUFJdEIsWUFKc0IsRUFLdEIsWUFMc0IsRUFNdEIsWUFOc0IsRUFPdEIsc0JBUHNCLENBQXhCOztBQVNBLE1BQU1DLGlDQUFpQyxHQUFHLEtBQTFDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcscUNBQWpDOztBQUVBLE1BQU1DLGFBQU4sU0FBNEJDLG1CQUE1QixDQUFvQztFQUNoQixNQUFaQyxZQUFZLENBQUVDLEdBQUYsRUFB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
|
|
357
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2VzcHJlc3NvLXJ1bm5lci5qcyIsIm5hbWVzIjpbIlRFU1RfU0VSVkVSX1JPT1QiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsIlRFU1RfQVBLX1BLRyIsIlJFUVVJUkVEX1BBUkFNUyIsIkVTUFJFU1NPX1NFUlZFUl9MQVVOQ0hfVElNRU9VVF9NUyIsIlRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUiIsIkVzcHJlc3NvUHJveHkiLCJKV1Byb3h5IiwicHJveHlDb21tYW5kIiwidXJsIiwibWV0aG9kIiwiYm9keSIsImNyYXNoZWQiLCJleGl0ZWQiLCJpbnN0cnVtZW50YXRpb25TdGF0ZSIsImVycm9ycyIsIkludmFsaWRDb250ZXh0RXJyb3IiLCJFc3ByZXNzb1J1bm5lciIsImNvbnN0cnVjdG9yIiwibG9nIiwib3B0cyIsInJlcSIsInV0aWwiLCJoYXNWYWx1ZSIsIkVycm9yIiwiandwcm94eSIsInNlcnZlciIsImhvc3QiLCJwb3J0Iiwic3lzdGVtUG9ydCIsImJhc2UiLCJrZWVwQWxpdmUiLCJwcm94eVJlcVJlcyIsImJpbmQiLCJjb21tYW5kIiwibW9kU2VydmVyTmFtZSIsImZzIiwic2FuaXRpemVOYW1lIiwidmVyc2lvbiIsImFwcFBhY2thZ2UiLCJhZGIiLCJjdXJEZXZpY2VJZCIsInJlcGxhY2VtZW50IiwibW9kU2VydmVyUGF0aCIsInRtcERpciIsInNob3dHcmFkbGVMb2ciLCJlc3ByZXNzb0J1aWxkQ29uZmlnIiwic2VydmVyTGF1bmNoVGltZW91dCIsImFuZHJvaWRJbnN0YWxsVGltZW91dCIsImRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlIiwidXNlS2V5c3RvcmUiLCJrZXlzdG9yZVBhdGgiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsInNpZ25pbmdDb25maWciLCJidWlsZFNlcnZlclNpZ25pbmdDb25maWciLCJrZXlzdG9yZUZpbGUiLCJpc0FwcFBhY2thZ2VDaGFuZ2VkIiwiZmlsZUV4aXN0cyIsImRlYnVnIiwicHJldmlvdXNBcHBQYWNrYWdlIiwic2hlbGwiLCJ0cmltIiwiaW5zdGFsbFNlcnZlciIsImFwcFN0YXRlIiwiZ2V0QXBwbGljYXRpb25JbnN0YWxsU3RhdGUiLCJzaG91bGRVbmluc3RhbGxBcHAiLCJBUFBfSU5TVEFMTF9TVEFURSIsIk9MREVSX1ZFUlNJT05fSU5TVEFMTEVEIiwiTkVXRVJfVkVSU0lPTl9JTlNUQUxMRUQiLCJpbmNsdWRlcyIsInNob3VsZEluc3RhbGxBcHAiLCJOT1RfSU5TVEFMTEVEIiwiaW5mbyIsInVuaW5zdGFsbEFwayIsImVyciIsIndhcm4iLCJtZXNzYWdlIiwiaW5zdGFsbCIsInJlcGxhY2UiLCJ0aW1lb3V0IiwiZXJyb3JBbmRUaHJvdyIsImluc3RhbGxUZXN0QXBrIiwicmVidWlsZCIsImZvcmNlRXNwcmVzc29SZWJ1aWxkIiwiZXhpc3RzIiwidW5saW5rIiwiYnVpbGROZXdNb2RTZXJ2ZXIiLCJpc1NpZ25lZCIsImNoZWNrQXBrQ2VydCIsInNpZ24iLCJidWlsZENvbmZpZ3VyYXRpb24iLCJidWlsZENvbmZpZ3VyYXRpb25TdHIiLCJyZWFkRmlsZSIsIkpTT04iLCJwYXJzZSIsImUiLCJlcnJvciIsImRpck5hbWUiLCJzZXJ2ZXJQYXRoIiwicmltcmFmIiwibWtkaXJwIiwiY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSIsIlNlcnZlckJ1aWxkZXIiLCJ0ZXN0QXBwUGFja2FnZSIsImJ1aWxkIiwiYXBrUGF0aCIsImNvcHlGaWxlIiwiY2xlYW51cFNlc3Npb25MZWZ0b3ZlcnMiLCJ2YWx1ZSIsImF4aW9zIiwiZGF0YSIsImFjdGl2ZVNlc3Npb25JZHMiLCJtYXAiLCJzZXNzIiwiaWQiLCJsZW5ndGgiLCJzdHJpbmdpZnkiLCJCIiwiYWxsIiwiZGVsYXkiLCJzdGFydFNlc3Npb24iLCJjYXBzIiwiY21kIiwicHJvY2VzcyIsImVudiIsIkVTUFJFU1NPX0pBVkFfREVCVUciLCJfIiwiaXNCb29sZWFuIiwicHVzaCIsImpvaW4iLCJoYXNTb2NrZXRFcnJvciIsImluc3RQcm9jZXNzIiwiY3JlYXRlU3ViUHJvY2VzcyIsIm9uIiwiY29kZSIsInNpZ25hbCIsInN0ZG91dCIsInN0ZGVyciIsImxpbmUiLCJpc0VtcHR5IiwidG9Mb3dlckNhc2UiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJ3YWl0Rm9yQ29uZGl0aW9uIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsInRlc3QiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInJlY29yZFRhcmdldEFwcFBhY2thZ2UiLCJkZWxldGVTZXNzaW9uIiwiaXNSdW5uaW5nIiwic3RvcCJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9lc3ByZXNzby1ydW5uZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSldQcm94eSwgZXJyb3JzIH0gZnJvbSAnYXBwaXVtL2RyaXZlcic7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgU2VydmVyQnVpbGRlciwgYnVpbGRTZXJ2ZXJTaWduaW5nQ29uZmlnIH0gZnJvbSAnLi9zZXJ2ZXItYnVpbGRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZzLCB1dGlsLCBta2RpcnAsIHRpbWluZyB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9uby11bnJlc29sdmVkXG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuXG5jb25zdCBURVNUX1NFUlZFUl9ST09UID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2VzcHJlc3NvLXNlcnZlcicpO1xuY29uc3QgVEVTVF9BUEtfUEtHID0gJ2lvLmFwcGl1bS5lc3ByZXNzb3NlcnZlci50ZXN0JztcbmNvbnN0IFJFUVVJUkVEX1BBUkFNUyA9IFtcbiAgJ2FkYicsXG4gICd0bXBEaXInLFxuICAnaG9zdCcsXG4gICdzeXN0ZW1Qb3J0JyxcbiAgJ2RldmljZVBvcnQnLFxuICAnYXBwUGFja2FnZScsXG4gICdmb3JjZUVzcHJlc3NvUmVidWlsZCcsXG5dO1xuY29uc3QgRVNQUkVTU09fU0VSVkVSX0xBVU5DSF9USU1FT1VUX01TID0gNDUwMDA7XG5jb25zdCBUQVJHRVRfUEFDS0FHRV9DT05UQUlORVIgPSAnL2RhdGEvbG9jYWwvdG1wL2VzcHJlc3NvLmFwcHBhY2thZ2UnO1xuXG5jbGFzcyBFc3ByZXNzb1Byb3h5IGV4dGVuZHMgSldQcm94eSB7XG4gIGFzeW5jIHByb3h5Q29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgY29uc3Qge2NyYXNoZWQsIGV4aXRlZH0gPSB0aGlzLmluc3RydW1lbnRhdGlvblN0YXRlO1xuICAgIGlmIChleGl0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZENvbnRleHRFcnJvcihgJyR7bWV0aG9kfSAke3VybH0nIGNhbm5vdCBiZSBwcm94aWVkIHRvIEVzcHJlc3NvIHNlcnZlciBiZWNhdXNlIGAgK1xuICAgICAgICBgdGhlIGluc3RydW1lbnRhdGlvbiBwcm9jZXNzIGhhcyAke2NyYXNoZWQgPyAnY3Jhc2hlZCcgOiAnYmVlbiB1bmV4cGVjdGVkbHkgdGVybWluYXRlZCd9LiBgICtcbiAgICAgICAgYENoZWNrIHRoZSBBcHBpdW0gc2VydmVyIGxvZyBhbmQgdGhlIGxvZ2NhdCBvdXRwdXQgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgc3VwZXIucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxufVxuXG5jbGFzcyBFc3ByZXNzb1J1bm5lciB7XG4gIGNvbnN0cnVjdG9yIChsb2csIG9wdHMgPSB7fSkge1xuICAgIGZvciAobGV0IHJlcSBvZiBSRVFVSVJFRF9QQVJBTVMpIHtcbiAgICAgIGlmICghb3B0cyB8fCAhdXRpbC5oYXNWYWx1ZShvcHRzW3JlcV0pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgT3B0aW9uICcke3JlcX0nIGlzIHJlcXVpcmVkIWApO1xuICAgICAgfVxuICAgICAgdGhpc1tyZXFdID0gb3B0c1tyZXFdO1xuICAgIH1cbiAgICB0aGlzLmxvZyA9IGxvZztcbiAgICB0aGlzLmp3cHJveHkgPSBuZXcgRXNwcmVzc29Qcm94eSh7XG4gICAgICBsb2csXG4gICAgICBzZXJ2ZXI6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMuc3lzdGVtUG9ydCxcbiAgICAgIGJhc2U6ICcnLFxuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLmp3cHJveHkucHJveHlSZXFSZXMuYmluZCh0aGlzLmp3cHJveHkpO1xuICAgIHRoaXMucHJveHlDb21tYW5kID0gdGhpcy5qd3Byb3h5LmNvbW1hbmQuYmluZCh0aGlzLmp3cHJveHkpO1xuICAgIHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZSA9IHtcbiAgICAgIGV4aXRlZDogZmFsc2UsXG4gICAgICBjcmFzaGVkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3QgbW9kU2VydmVyTmFtZSA9IGZzLnNhbml0aXplTmFtZShgJHtURVNUX0FQS19QS0d9XyR7dmVyc2lvbn1fJHt0aGlzLmFwcFBhY2thZ2V9XyR7dGhpcy5hZGIuY3VyRGV2aWNlSWR9LmFwa2AsIHtcbiAgICAgIHJlcGxhY2VtZW50OiAnLScsXG4gICAgfSk7XG4gICAgdGhpcy5tb2RTZXJ2ZXJQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMudG1wRGlyLCBtb2RTZXJ2ZXJOYW1lKTtcbiAgICB0aGlzLnNob3dHcmFkbGVMb2cgPSBvcHRzLnNob3dHcmFkbGVMb2c7XG4gICAgdGhpcy5lc3ByZXNzb0J1aWxkQ29uZmlnID0gb3B0cy5lc3ByZXNzb0J1aWxkQ29uZmlnO1xuXG4gICAgdGhpcy5zZXJ2ZXJMYXVuY2hUaW1lb3V0ID0gb3B0cy5zZXJ2ZXJMYXVuY2hUaW1lb3V0IHx8IEVTUFJFU1NPX1NFUlZFUl9MQVVOQ0hfVElNRU9VVF9NUztcbiAgICB0aGlzLmFuZHJvaWRJbnN0YWxsVGltZW91dCA9IG9wdHMuYW5kcm9pZEluc3RhbGxUaW1lb3V0O1xuXG4gICAgdGhpcy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSA9IG9wdHMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2U7XG5cbiAgICAvLyBFc3ByZXNzbyBTZXJ2ZXIgYXBwIG5lZWRzIHRvIGJlIHNpZ25lZCB3aXRoIHNhbWUga2V5U3RvcmUgYXMgYXBwUGFja2FnZVxuICAgIGlmIChvcHRzLnVzZUtleXN0b3JlICYmIG9wdHMua2V5c3RvcmVQYXRoICYmIG9wdHMua2V5c3RvcmVQYXNzd29yZCAmJiBvcHRzLmtleUFsaWFzICYmIG9wdHMua2V5UGFzc3dvcmQpIHtcbiAgICAgIHRoaXMuc2lnbmluZ0NvbmZpZyA9IGJ1aWxkU2VydmVyU2lnbmluZ0NvbmZpZyh7XG4gICAgICAgIGtleXN0b3JlRmlsZTogb3B0cy5rZXlzdG9yZVBhdGgsXG4gICAgICAgIGtleXN0b3JlUGFzc3dvcmQ6IG9wdHMua2V5c3RvcmVQYXNzd29yZCxcbiAgICAgICAga2V5QWxpYXM6IG9wdHMua2V5QWxpYXMsXG4gICAgICAgIGtleVBhc3N3b3JkOiBvcHRzLmtleVBhc3N3b3JkXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaWduaW5nQ29uZmlnID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpc0FwcFBhY2thZ2VDaGFuZ2VkICgpIHtcbiAgICBpZiAoIWF3YWl0IHRoaXMuYWRiLmZpbGVFeGlzdHMoVEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ1RoZSBwcmV2aW91cyB0YXJnZXQgYXBwbGljYXRpb24gcGFja2FnZSBpcyB1bmtub3duJyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgcHJldmlvdXNBcHBQYWNrYWdlID0gKGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnY2F0JywgVEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSXSkpLnRyaW0oKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIHByZXZpb3VzIHRhcmdldCBhcHBsaWNhdGlvbiBwYWNrYWdlIHdhcyAnJHtwcmV2aW91c0FwcFBhY2thZ2V9Jy4gYCArXG4gICAgICBgVGhlIGN1cnJlbnQgcGFja2FnZSBpcyAnJHt0aGlzLmFwcFBhY2thZ2V9J2ApO1xuICAgIHJldHVybiBwcmV2aW91c0FwcFBhY2thZ2UgIT09IHRoaXMuYXBwUGFja2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyBFc3ByZXNzbyBzZXJ2ZXIgYXBrIG9uIHRvIHRoZSBkZXZpY2Ugb3IgZW11bGF0b3IuXG4gICAqIEVhY2ggYWRiIGNvbW1hbmQgdXNlcyBkZWZhdWx0IHRpbWVvdXQgYnkgdGhlbS5cbiAgICovXG4gIGFzeW5jIGluc3RhbGxTZXJ2ZXIgKCkge1xuICAgIGNvbnN0IGFwcFN0YXRlID0gYXdhaXQgdGhpcy5hZGIuZ2V0QXBwbGljYXRpb25JbnN0YWxsU3RhdGUodGhpcy5tb2RTZXJ2ZXJQYXRoLCBURVNUX0FQS19QS0cpO1xuXG4gICAgY29uc3Qgc2hvdWxkVW5pbnN0YWxsQXBwID0gW1xuICAgICAgdGhpcy5hZGIuQVBQX0lOU1RBTExfU1RBVEUuT0xERVJfVkVSU0lPTl9JTlNUQUxMRUQsXG4gICAgICB0aGlzLmFkYi5BUFBfSU5TVEFMTF9TVEFURS5ORVdFUl9WRVJTSU9OX0lOU1RBTExFRFxuICAgIF0uaW5jbHVkZXMoYXBwU3RhdGUpO1xuICAgIGNvbnN0IHNob3VsZEluc3RhbGxBcHAgPSBzaG91bGRVbmluc3RhbGxBcHAgfHwgW1xuICAgICAgdGhpcy5hZGIuQVBQX0lOU1RBTExfU1RBVEUuTk9UX0lOU1RBTExFRFxuICAgIF0uaW5jbHVkZXMoYXBwU3RhdGUpO1xuXG4gICAgaWYgKHNob3VsZFVuaW5zdGFsbEFwcCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgVW5pbnN0YWxsaW5nIEVzcHJlc3NvIFRlc3QgU2VydmVyIGFwayBmcm9tIHRoZSB0YXJnZXQgZGV2aWNlIChwa2c6ICcke1RFU1RfQVBLX1BLR30nKWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKFRFU1RfQVBLX1BLRyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgRXJyb3IgdW5pbnN0YWxsaW5nICcke1RFU1RfQVBLX1BLR30nOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzaG91bGRJbnN0YWxsQXBwKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBJbnN0YWxsaW5nIEVzcHJlc3NvIFRlc3QgU2VydmVyIGFwayBmcm9tIHRoZSB0YXJnZXQgZGV2aWNlIChwYXRoOiAnJHt0aGlzLm1vZFNlcnZlclBhdGh9JylgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmluc3RhbGwodGhpcy5tb2RTZXJ2ZXJQYXRoLCB7IHJlcGxhY2U6IGZhbHNlLCB0aW1lb3V0OiB0aGlzLmFuZHJvaWRJbnN0YWxsVGltZW91dCB9KTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgSW5zdGFsbGVkIEVzcHJlc3NvIFRlc3QgU2VydmVyIGFwayAnJHt0aGlzLm1vZFNlcnZlclBhdGh9JyAocGtnOiAnJHtURVNUX0FQS19QS0d9JylgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgaW5zdGFsbCAnJHt0aGlzLm1vZFNlcnZlclBhdGh9JyBiZWNhdXNlIG9mICcke2Vyci5tZXNzYWdlfSdgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBpbnN0YWxsVGVzdEFwayAoKSB7XG4gICAgbGV0IHJlYnVpbGQgPSB0aGlzLmZvcmNlRXNwcmVzc29SZWJ1aWxkO1xuICAgIGlmIChyZWJ1aWxkKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgJ2ZvcmNlRXNwcmVzc29SZWJ1aWxkJyBjYXBhYmlsaXR5IGlzIGVuYWJsZWRgKTtcbiAgICB9IGVsc2UgaWYgKGF3YWl0IHRoaXMuaXNBcHBQYWNrYWdlQ2hhbmdlZCgpKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBGb3JjaW5nIEVzcHJlc3NvIHNlcnZlciByZWJ1aWxkIGJlY2F1c2Ugb2YgY2hhbmdlZCBhcHBsaWNhdGlvbiBwYWNrYWdlYCk7XG4gICAgICByZWJ1aWxkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocmVidWlsZCAmJiBhd2FpdCBmcy5leGlzdHModGhpcy5tb2RTZXJ2ZXJQYXRoKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYERlbGV0aW5nIHRoZSBvYnNvbGV0ZSBFc3ByZXNzbyBzZXJ2ZXIgcGFja2FnZSAnJHt0aGlzLm1vZFNlcnZlclBhdGh9J2ApO1xuICAgICAgYXdhaXQgZnMudW5saW5rKHRoaXMubW9kU2VydmVyUGF0aCk7XG4gICAgfVxuICAgIGlmICghKGF3YWl0IGZzLmV4aXN0cyh0aGlzLm1vZFNlcnZlclBhdGgpKSkge1xuICAgICAgYXdhaXQgdGhpcy5idWlsZE5ld01vZFNlcnZlcigpO1xuICAgIH1cbiAgICBjb25zdCBpc1NpZ25lZCA9IGF3YWl0IHRoaXMuYWRiLmNoZWNrQXBrQ2VydCh0aGlzLm1vZFNlcnZlclBhdGgsIFRFU1RfQVBLX1BLRyk7XG4gICAgaWYgKCFpc1NpZ25lZCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuc2lnbih0aGlzLm1vZFNlcnZlclBhdGgpO1xuICAgIH1cbiAgICBpZiAoKHJlYnVpbGQgfHwgIWlzU2lnbmVkKSAmJiBhd2FpdCB0aGlzLmFkYi51bmluc3RhbGxBcGsoVEVTVF9BUEtfUEtHKSkge1xuICAgICAgdGhpcy5sb2cuaW5mbygnVW5pbnN0YWxsZWQgdGhlIG9ic29sZXRlIEVzcHJlc3NvIHNlcnZlciBwYWNrYWdlIGZyb20gdGhlIGRldmljZSB1bmRlciB0ZXN0Jyk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5pbnN0YWxsU2VydmVyKCk7XG4gIH1cblxuICBhc3luYyBidWlsZE5ld01vZFNlcnZlciAoKSB7XG4gICAgbGV0IGJ1aWxkQ29uZmlndXJhdGlvbiA9IHt9O1xuICAgIGlmICh0aGlzLmVzcHJlc3NvQnVpbGRDb25maWcpIHtcbiAgICAgIGxldCBidWlsZENvbmZpZ3VyYXRpb25TdHI7XG4gICAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHRoaXMuZXNwcmVzc29CdWlsZENvbmZpZykpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgTG9hZGluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmcm9tICcke3RoaXMuZXNwcmVzc29CdWlsZENvbmZpZ30nYCk7XG4gICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvblN0ciA9IGF3YWl0IGZzLnJlYWRGaWxlKHRoaXMuZXNwcmVzc29CdWlsZENvbmZpZywgJ3V0ZjgnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYExvYWRpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZnJvbSAnZXNwcmVzc29CdWlsZENvbmZpZycgY2FwYWJpbGl0eWApO1xuICAgICAgICBidWlsZENvbmZpZ3VyYXRpb25TdHIgPSB0aGlzLmVzcHJlc3NvQnVpbGRDb25maWc7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSBKU09OLnBhcnNlKGJ1aWxkQ29uZmlndXJhdGlvblN0cik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yKCdDYW5ub3QgcGFyc2UgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gSlNPTicsIGUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkaXJOYW1lID0gZnMuc2FuaXRpemVOYW1lKGBlc3ByZXNzby1zZXJ2ZXItJHt0aGlzLmFkYi5jdXJEZXZpY2VJZH1gLCB7XG4gICAgICByZXBsYWNlbWVudDogJy0nLFxuICAgIH0pO1xuICAgIGNvbnN0IHNlcnZlclBhdGggPSBwYXRoLnJlc29sdmUodGhpcy50bXBEaXIsIGRpck5hbWUpO1xuICAgIHRoaXMubG9nLmluZm8oYEJ1aWxkaW5nIGVzcHJlc3NvIHNlcnZlciBpbiAnJHtzZXJ2ZXJQYXRofSdgKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIGJ1aWxkIGZvbGRlciByb290IGNvdWxkIGJlIGN1c3RvbWl6ZWQgYnkgY2hhbmdpbmcgdGhlICd0bXBEaXInIGNhcGFiaWxpdHlgKTtcbiAgICBhd2FpdCBmcy5yaW1yYWYoc2VydmVyUGF0aCk7XG4gICAgYXdhaXQgbWtkaXJwKHNlcnZlclBhdGgpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBDb3B5aW5nIGVzcHJlc3NvIHNlcnZlciB0ZW1wbGF0ZSBmcm9tICgnJHtURVNUX1NFUlZFUl9ST09UfScgdG8gJyR7c2VydmVyUGF0aH0nKWApO1xuICAgIGF3YWl0IGNvcHlHcmFkbGVQcm9qZWN0UmVjdXJzaXZlbHkoVEVTVF9TRVJWRVJfUk9PVCwgc2VydmVyUGF0aCk7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0J1bGRpbmcgZXNwcmVzc28gc2VydmVyJyk7XG4gICAgYXdhaXQgbmV3IFNlcnZlckJ1aWxkZXIodGhpcy5sb2csIHtcbiAgICAgIHNlcnZlclBhdGgsIGJ1aWxkQ29uZmlndXJhdGlvbixcbiAgICAgIHNob3dHcmFkbGVMb2c6IHRoaXMuc2hvd0dyYWRsZUxvZyxcbiAgICAgIHRlc3RBcHBQYWNrYWdlOiB0aGlzLmFwcFBhY2thZ2UsXG4gICAgICBzaWduaW5nQ29uZmlnOiB0aGlzLnNpZ25pbmdDb25maWdcbiAgICB9KS5idWlsZCgpO1xuICAgIGNvbnN0IGFwa1BhdGggPSBwYXRoLnJlc29sdmUoc2VydmVyUGF0aCwgJ2FwcCcsICdidWlsZCcsICdvdXRwdXRzJywgJ2FwaycsICdhbmRyb2lkVGVzdCcsICdkZWJ1ZycsICdhcHAtZGVidWctYW5kcm9pZFRlc3QuYXBrJyk7XG4gICAgdGhpcy5sb2cuZGVidWcoYENvcHlpbmcgYnVpbHQgYXBrIGZyb20gJyR7YXBrUGF0aH0nIHRvICcke3RoaXMubW9kU2VydmVyUGF0aH0nYCk7XG4gICAgYXdhaXQgZnMuY29weUZpbGUoYXBrUGF0aCwgdGhpcy5tb2RTZXJ2ZXJQYXRoKTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFudXBTZXNzaW9uTGVmdG92ZXJzICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnUGVyZm9ybWluZyBjbGVhbnVwIG9mIGF1dG9tYXRpb24gbGVmdG92ZXJzJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qge3ZhbHVlfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogYGh0dHA6Ly8ke3RoaXMuaG9zdH06JHt0aGlzLnN5c3RlbVBvcnR9L3Nlc3Npb25zYCxcbiAgICAgICAgdGltZW91dDogNTAwLFxuICAgICAgfSkpLmRhdGE7XG4gICAgICBjb25zdCBhY3RpdmVTZXNzaW9uSWRzID0gdmFsdWUubWFwKChzZXNzKSA9PiBzZXNzLmlkKTtcbiAgICAgIGlmIChhY3RpdmVTZXNzaW9uSWRzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIGZvbGxvd2luZyBvYnNvbGV0ZSBzZXNzaW9ucyBhcmUgc3RpbGwgcnVubmluZzogJHtKU09OLnN0cmluZ2lmeShhY3RpdmVTZXNzaW9uSWRzKX1gKTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoJ0NsZWFuaW5nIHVwIHRoZSBvYnNvbGV0ZSBzZXNzaW9ucycpO1xuICAgICAgICBhd2FpdCBCLmFsbChhY3RpdmVTZXNzaW9uSWRzLm1hcCgoaWQpID0+XG4gICAgICAgICAgYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBgaHR0cDovLyR7dGhpcy5ob3N0fToke3RoaXMuc3lzdGVtUG9ydH0vc2Vzc2lvbi8ke2lkfWAsXG4gICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICAgIH0pXG4gICAgICAgICkpO1xuICAgICAgICAvLyBMZXQgYWxsIHNlc3Npb25zIHRvIGJlIHByb3Blcmx5IHRlcm1pbmF0ZWQgYmVmb3JlIGNvbnRpbnVpbmdcbiAgICAgICAgYXdhaXQgQi5kZWxheSgxMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKCdObyBvYnNvbGV0ZSBzZXNzaW9ucyBoYXZlIGJlZW4gZGV0ZWN0ZWQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgTm8gb2Jzb2xldGUgc2Vzc2lvbnMgaGF2ZSBiZWVuIGRldGVjdGVkICgke2UubWVzc2FnZX0pYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnRTZXNzaW9uIChjYXBzKSB7XG4gICAgYXdhaXQgdGhpcy5jbGVhbnVwU2Vzc2lvbkxlZnRvdmVycygpO1xuXG4gICAgY29uc3QgY21kID0gW1xuICAgICAgJ3NoZWxsJyxcbiAgICAgICdhbScsICdpbnN0cnVtZW50JyxcbiAgICAgICctdycsXG4gICAgICAnLWUnLCAnZGVidWcnLCBwcm9jZXNzLmVudi5FU1BSRVNTT19KQVZBX0RFQlVHID09PSAndHJ1ZScsXG4gICAgICAnLWUnLCAnZGlzYWJsZUFuYWx5dGljcycsIHRydWUsIC8vIFRvIGF2b2lkIHVuZXhwZWN0ZWQgZXJyb3IgYnkgZ29vZ2xlIGFuYWx5dGljc1xuICAgIF07XG5cbiAgICBpZiAoXy5pc0Jvb2xlYW4odGhpcy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSkpIHtcbiAgICAgIGNtZC5wdXNoKCctZScsICdESVNBQkxFX1NVUFBSRVNTX0FDQ0VTU0lCSUxJVFlfU0VSVklDRVMnLCB0aGlzLmRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBjbWQucHVzaChgJHtURVNUX0FQS19QS0d9L2FuZHJvaWR4LnRlc3QucnVubmVyLkFuZHJvaWRKVW5pdFJ1bm5lcmApO1xuXG4gICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgRXNwcmVzc28gU2VydmVyIHYke3ZlcnNpb259IHdpdGggY21kOiBhZGIgJHtjbWQuam9pbignICcpfWApO1xuXG4gICAgbGV0IGhhc1NvY2tldEVycm9yID0gZmFsc2U7XG4gICAgLy8gc3RhcnQgdGhlIGluc3RydW1lbnRhdGlvbiBwcm9jZXNzXG4gICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlID0ge1xuICAgICAgZXhpdGVkOiBmYWxzZSxcbiAgICAgIGNyYXNoZWQ6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5pbnN0UHJvY2VzcyA9IHRoaXMuYWRiLmNyZWF0ZVN1YlByb2Nlc3MoY21kKTtcbiAgICB0aGlzLmluc3RQcm9jZXNzLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgSW5zdHJ1bWVudGF0aW9uIHByb2Nlc3MgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9IGZyb20gc2lnbmFsICR7c2lnbmFsfWApO1xuICAgICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlLmV4aXRlZCA9IHRydWU7XG4gICAgfSk7XG4gICAgdGhpcy5pbnN0UHJvY2Vzcy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICBjb25zdCBsaW5lID0gc3Rkb3V0IHx8IHN0ZGVycjtcbiAgICAgIGlmIChfLmlzRW1wdHkobGluZS50cmltKCkpKSB7XG4gICAgICAgIC8vIERvIG5vdCBwcmludCBlbXB0eSBsaW5lcyBpbnRvIHRoZSBzeXN0ZW0gbG9nXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2cuZGVidWcoYFtJbnN0cnVtZW50YXRpb25dICR7bGluZS50cmltKCl9YCk7XG4gICAgICAvLyBBICdTb2NrZXRFeGNlcHRpb24nIGluZGljYXRlcyB0aGF0IHdlIGNvdWxkbid0IGNvbm5lY3QgdG8gdGhlIEVzcHJlc3NvIHNlcnZlcixcbiAgICAgIC8vIGJlY2F1c2UgdGhlIElOVEVSTkVUIHBlcm1pc3Npb24gaXMgbm90IHNldFxuICAgICAgaWYgKGxpbmUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnamF2YS5uZXQuc29ja2V0ZXhjZXB0aW9uJykpIHtcbiAgICAgICAgaGFzU29ja2V0RXJyb3IgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChsaW5lLmluY2x1ZGVzKCdQcm9jZXNzIGNyYXNoZWQnKSkge1xuICAgICAgICB0aGlzLmp3cHJveHkuaW5zdHJ1bWVudGF0aW9uU3RhdGUuY3Jhc2hlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGF3YWl0IHRoaXMuaW5zdFByb2Nlc3Muc3RhcnQoMCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgV2FpdGluZyB1cCB0byAke3RoaXMuc2VydmVyTGF1bmNoVGltZW91dH1tcyBmb3IgRXNwcmVzc28gc2VydmVyIHRvIGJlIG9ubGluZWApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGhhc1NvY2tldEVycm9yKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgRXNwcmVzc28gc2VydmVyIGhhcyBmYWlsZWQgdG8gc3RhcnQgZHVlIHRvIGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uLiBgICtcbiAgICAgICAgICAgIGBNYWtlIHN1cmUgdGhlICdJTlRFUk5FVCcgcGVybWlzc2lvbiBpcyByZXF1ZXN0ZWQgaW4gdGhlIEFuZHJvaWQgbWFuaWZlc3Qgb2YgeW91ciBgICtcbiAgICAgICAgICAgIGBhcHBsaWNhdGlvbiB1bmRlciB0ZXN0ICg8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT1cImFuZHJvaWQucGVybWlzc2lvbi5JTlRFUk5FVFwiIC8+KWApO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZS5leGl0ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBFc3ByZXNzbyBzZXJ2ZXIgcHJvY2VzcyBoYXMgYmVlbiB1bmV4cGVjdGVkbHkgdGVybWluYXRlZC4gYCArXG4gICAgICAgICAgICBgQ2hlY2sgdGhlIEFwcGl1bSBzZXJ2ZXIgbG9nIGFuZCB0aGUgbG9nY2F0IG91dHB1dCBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IHRoaXMuc2VydmVyTGF1bmNoVGltZW91dCxcbiAgICAgICAgaW50ZXJ2YWxNczogNTAwLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKC9Db25kaXRpb24gdW5tZXQvLnRlc3QoZS5tZXNzYWdlKSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgRXNwcmVzc28gc2VydmVyIHRvIGJlIGAgK1xuICAgICAgICAgIGBvbmxpbmUgd2l0aGluICR7dGhpcy5zZXJ2ZXJMYXVuY2hUaW1lb3V0fW1zLiBUaGUgdGltZW91dCB2YWx1ZSBjb3VsZCBiZSBgICtcbiAgICAgICAgICBgY3VzdG9taXplZCB1c2luZyAnZXNwcmVzc29TZXJ2ZXJMYXVuY2hUaW1lb3V0JyBjYXBhYmlsaXR5YCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICB0aGlzLmxvZy5pbmZvKGBFc3ByZXNzbyBzZXJ2ZXIgaXMgb25saW5lLiBgICtcbiAgICAgIGBUaGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyB0b29rICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYCk7XG4gICAgdGhpcy5sb2cuaW5mbygnU3RhcnRpbmcgdGhlIHNlc3Npb24nKTtcblxuICAgIGF3YWl0IHRoaXMuandwcm94eS5jb21tYW5kKCcvc2Vzc2lvbicsICdQT1NUJywge1xuICAgICAgY2FwYWJpbGl0aWVzOiB7XG4gICAgICAgIGZpcnN0TWF0Y2g6IFtjYXBzXSxcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHt9XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5yZWNvcmRUYXJnZXRBcHBQYWNrYWdlKCk7XG4gIH1cblxuICBhc3luYyByZWNvcmRUYXJnZXRBcHBQYWNrYWdlICgpIHtcbiAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbYGVjaG8gXCIke3RoaXMuYXBwUGFja2FnZX1cIiA+IFwiJHtUQVJHRVRfUEFDS0FHRV9DT05UQUlORVJ9XCJgXSk7XG4gICAgdGhpcy5sb2cuaW5mbyhgUmVjb3JkZWQgdGhlIHRhcmdldCBhcHBsaWNhdGlvbiBwYWNrYWdlICcke3RoaXMuYXBwUGFja2FnZX0nIHRvICR7VEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSfWApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0RlbGV0aW5nIEVzcHJlc3NvIHNlcnZlciBzZXNzaW9uJyk7XG4gICAgLy8gcmVseSBvbiBqd3Byb3h5J3MgaW50ZWxsaWdlbmNlIHRvIGtub3cgd2hhdCB3ZSdyZSB0YWxraW5nIGFib3V0IGFuZFxuICAgIC8vIGRlbGV0ZSB0aGUgY3VycmVudCBzZXNzaW9uXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuandwcm94eS5jb21tYW5kKCcvJywgJ0RFTEVURScpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cud2FybihgRGlkIG5vdCBnZXQgY29uZmlybWF0aW9uIEVzcHJlc3NvIGRlbGV0ZVNlc3Npb24gd29ya2VkOyBgICtcbiAgICAgICAgICBgRXJyb3Igd2FzOiAke2Vycn1gKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbnN0UHJvY2VzcyAmJiB0aGlzLmluc3RQcm9jZXNzLmlzUnVubmluZykge1xuICAgICAgYXdhaXQgdGhpcy5pbnN0UHJvY2Vzcy5zdG9wKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IEVzcHJlc3NvUnVubmVyLCBSRVFVSVJFRF9QQVJBTVMsIFRFU1RfQVBLX1BLRyB9O1xuZXhwb3J0IGRlZmF1bHQgRXNwcmVzc29SdW5uZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsZ0JBQWdCLEdBQUdDLGFBQUEsQ0FBS0MsT0FBTCxDQUFhQyxTQUFiLEVBQXdCLElBQXhCLEVBQThCLElBQTlCLEVBQW9DLGlCQUFwQyxDQUF6Qjs7QUFDQSxNQUFNQyxZQUFZLEdBQUcsK0JBQXJCOztBQUNBLE1BQU1DLGVBQWUsR0FBRyxDQUN0QixLQURzQixFQUV0QixRQUZzQixFQUd0QixNQUhzQixFQUl0QixZQUpzQixFQUt0QixZQUxzQixFQU10QixZQU5zQixFQU90QixzQkFQc0IsQ0FBeEI7O0FBU0EsTUFBTUMsaUNBQWlDLEdBQUcsS0FBMUM7QUFDQSxNQUFNQyx3QkFBd0IsR0FBRyxxQ0FBakM7O0FBRUEsTUFBTUMsYUFBTixTQUE0QkMsZUFBNUIsQ0FBb0M7RUFDaEIsTUFBWkMsWUFBWSxDQUFFQyxHQUFGLEVBQU9DLE1BQVAs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
|
package/build/lib/logger.js
CHANGED
|
@@ -7,7 +7,7 @@ exports.default = void 0;
|
|
|
7
7
|
|
|
8
8
|
require("source-map-support/register");
|
|
9
9
|
|
|
10
|
-
var _support = require("
|
|
10
|
+
var _support = require("appium/support");
|
|
11
11
|
|
|
12
12
|
const log = _support.logger.getLogger('Espresso');
|
|
13
13
|
|
|
@@ -15,4 +15,4 @@ var _default = log;
|
|
|
15
15
|
exports.default = _default;require('source-map-support').install();
|
|
16
16
|
|
|
17
17
|
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnYXBwaXVtL3N1cHBvcnQnO1xuXG5cbmNvbnN0IGxvZyA9IGxvZ2dlci5nZXRMb2dnZXIoJ0VzcHJlc3NvJyk7XG5cbmV4cG9ydCBkZWZhdWx0IGxvZztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7O0FBR0EsTUFBTUEsR0FBRyxHQUFHQyxlQUFBLENBQU9DLFNBQVAsQ0FBaUIsVUFBakIsQ0FBWjs7ZUFFZUYsRyJ9
|
|
@@ -13,7 +13,7 @@ require("source-map-support/register");
|
|
|
13
13
|
|
|
14
14
|
var _teen_process = require("teen_process");
|
|
15
15
|
|
|
16
|
-
var _support = require("
|
|
16
|
+
var _support = require("appium/support");
|
|
17
17
|
|
|
18
18
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
19
19
|
|
|
@@ -203,4 +203,4 @@ var _default = ServerBuilder;
|
|
|
203
203
|
exports.default = _default;require('source-map-support').install();
|
|
204
204
|
|
|
205
205
|
|
|
206
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3NlcnZlci1idWlsZGVyLmpzIiwibmFtZXMiOlsiR1JBRExFX1ZFUlNJT05fS0VZIiwiR1JBRExFX1VSTF9QUkVGSVgiLCJHUkFETEVfVVJMX1RFTVBMQVRFIiwiR1JBRExFX01BWF9FUlJPUl9MT0dfTElORVMiLCJERVBFTkRFTkNZX1BST1BfTkFNRVMiLCJWRVJTSU9OX0tFWVMiLCJidWlsZFNlcnZlclNpZ25pbmdDb25maWciLCJhcmdzIiwiemlwQWxpZ24iLCJrZXlzdG9yZUZpbGUiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsIlNlcnZlckJ1aWxkZXIiLCJjb25zdHJ1Y3RvciIsImxvZyIsInNlcnZlclBhdGgiLCJzaG93R3JhZGxlTG9nIiwiYnVpbGRDb25maWd1cmF0aW9uIiwidmVyc2lvbkNvbmZpZ3VyYXRpb24iLCJ0b29sc1ZlcnNpb25zIiwic2VydmVyVmVyc2lvbnMiLCJfIiwicmVkdWNlIiwiYWNjIiwidmFsdWUiLCJrZXkiLCJpbmNsdWRlcyIsIndhcm4iLCJ0ZXN0QXBwUGFja2FnZSIsInNpZ25pbmdDb25maWciLCJwcm9wTmFtZSIsImJ1aWxkIiwic2V0R3JhZGxlV3JhcHBlclZlcnNpb24iLCJpbnNlcnRBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIiwicnVuQnVpbGRQcm9jZXNzIiwiZ2V0Q29tbWFuZCIsImNtZCIsInN5c3RlbSIsImlzV2luZG93cyIsInBhdGgiLCJyZXNvbHZlIiwiYnVpbGRQcm9wZXJ0eSIsImZpbHRlciIsIm1hcCIsInNlcnZlclZlcnNpb24iLCJncmFkbGVQcm9wZXJ0eSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJCb29sZWFuIiwicHVzaCIsImtleXMiLCJ1cHBlckZpcnN0IiwiayIsInYiLCJ2ZXJzaW9uIiwicHJvcGVydGllc1BhdGgiLCJvcmlnaW5hbFByb3BlcnRpZXMiLCJmcyIsInJlYWRGaWxlIiwibmV3UHJvcGVydGllcyIsInVwZGF0ZUdyYWRsZURpc3RVcmwiLCJ3cml0ZUZpbGUiLCJwcm9wZXJ0aWVzQ29udGVudCIsInJlcGxhY2UiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJoYXNBZGRpdGlvbmFsRGVwcyIsImlzQXJyYXkiLCJFcnJvciIsImlzRW1wdHkiLCJsaW5lIiwidHJpbSIsImRlcCIsInRlc3QiLCJidWlsZFBhdGgiLCJjb25maWd1cmF0aW9uIiwicHJlZml4IiwiZGVwcyIsImluZm8iLCJ1cGRhdGVEZXBlbmRlbmN5TGluZXMiLCJkZWJ1ZyIsImpvaW4iLCJncmFkbGVidWlsZCIsIlN1YlByb2Nlc3MiLCJjd2QiLCJzdGRpbyIsIndpbmRvd3NWZXJiYXRpbUFyZ3VtZW50cyIsImJ1aWxkTGFzdExpbmVzIiwibG9nTXNnIiwib24iLCJzdGFydHNXaXRoIiwiRU9MIiwibGVuZ3RoIiwic3RhcnQiLCJlcnIiLCJtc2ciLCJtZXNzYWdlIiwiZXJyb3JBbmRUaHJvdyJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9zZXJ2ZXItYnVpbGRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IGZzLCBzeXN0ZW0gfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRU9MIH0gZnJvbSAnb3MnO1xuaW1wb3J0IHsgdXBkYXRlRGVwZW5kZW5jeUxpbmVzIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IEdSQURMRV9WRVJTSU9OX0tFWSA9ICdncmFkbGUnO1xuY29uc3QgR1JBRExFX1VSTF9QUkVGSVggPSAnZGlzdHJpYnV0aW9uVXJsPSc7XG5jb25zdCBHUkFETEVfVVJMX1RFTVBMQVRFID0gJ2h0dHBzXFxcXDovL3NlcnZpY2VzLmdyYWRsZS5vcmcvZGlzdHJpYnV0aW9ucy9ncmFkbGUtVkVSU0lPTi1hbGwuemlwJztcbmNvbnN0IEdSQURMRV9NQVhfRVJST1JfTE9HX0xJTkVTID0gMTU7XG5jb25zdCBERVBFTkRFTkNZX1BST1BfTkFNRVMgPSBbJ2FkZGl0aW9uYWxBcHBEZXBlbmRlbmNpZXMnLCAnYWRkaXRpb25hbEFuZHJvaWRUZXN0RGVwZW5kZW5jaWVzJ107XG5cbmNvbnN0IFZFUlNJT05fS0VZUyA9IFtcbiAgR1JBRExFX1ZFUlNJT05fS0VZLFxuICAnYW5kcm9pZEdyYWRsZVBsdWdpbicsXG4gICdjb21waWxlU2RrJyxcbiAgJ2J1aWxkVG9vbHMnLFxuICAnbWluU2RrJyxcbiAgJ3RhcmdldFNkaycsXG4gICdrb3RsaW4nLFxuICAnc291cmNlQ29tcGF0aWJpbGl0eScsXG4gICd0YXJnZXRDb21wYXRpYmlsaXR5JyxcbiAgJ2p2bVRhcmdldCcsXG4gICdjb21wb3NlVmVyc2lvbicsXG4gICdhbm5vdGF0aW9uVmVyc2lvbidcbl07XG5cbmZ1bmN0aW9uIGJ1aWxkU2VydmVyU2lnbmluZ0NvbmZpZyAoYXJncykge1xuICByZXR1cm4ge1xuICAgIHppcEFsaWduOiB0cnVlLFxuICAgIGtleXN0b3JlRmlsZTogYXJncy5rZXlzdG9yZUZpbGUsXG4gICAga2V5c3RvcmVQYXNzd29yZDogYXJncy5rZXlzdG9yZVBhc3N3b3JkLFxuICAgIGtleUFsaWFzOiBhcmdzLmtleUFsaWFzLFxuICAgIGtleVBhc3N3b3JkOiBhcmdzLmtleVBhc3N3b3JkXG4gIH07XG59XG5cbmNsYXNzIFNlcnZlckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvciAobG9nLCBhcmdzID0ge30pIHtcbiAgICB0aGlzLmxvZyA9IGxvZztcbiAgICB0aGlzLnNlcnZlclBhdGggPSBhcmdzLnNlcnZlclBhdGg7XG4gICAgdGhpcy5zaG93R3JhZGxlTG9nID0gYXJncy5zaG93R3JhZGxlTG9nO1xuXG4gICAgY29uc3QgYnVpbGRDb25maWd1cmF0aW9uID0gYXJncy5idWlsZENvbmZpZ3VyYXRpb24gfHwge307XG5cbiAgICBjb25zdCB2ZXJzaW9uQ29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbi50b29sc1ZlcnNpb25zIHx8IHt9O1xuICAgIHRoaXMuc2VydmVyVmVyc2lvbnMgPSBfLnJlZHVjZSh2ZXJzaW9uQ29uZmlndXJhdGlvbiwgKGFjYywgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKFZFUlNJT05fS0VZUy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cud2FybihgR290IHVuZXhwZWN0ZWQgJyR7a2V5fScgaW4gdG9vbHNWZXJzaW9uIGJsb2NrIG9mIHRoZSBidWlsZCBjb25maWd1cmF0aW9uYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcblxuICAgIHRoaXMudGVzdEFwcFBhY2thZ2UgPSBhcmdzLnRlc3RBcHBQYWNrYWdlO1xuICAgIHRoaXMuc2lnbmluZ0NvbmZpZyA9IGFyZ3Muc2lnbmluZ0NvbmZpZztcblxuICAgIGZvciAoY29uc3QgcHJvcE5hbWUgb2YgREVQRU5ERU5DWV9QUk9QX05BTUVTKSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IGJ1aWxkQ29uZmlndXJhdGlvbltwcm9wTmFtZV0gfHwgW107XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYnVpbGQgKCkge1xuICAgIGlmICh0aGlzLnNlcnZlclZlcnNpb25zW0dSQURMRV9WRVJTSU9OX0tFWV0pIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0R3JhZGxlV3JhcHBlclZlcnNpb24odGhpcy5zZXJ2ZXJWZXJzaW9uc1tHUkFETEVfVkVSU0lPTl9LRVldKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmluc2VydEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMoKTtcblxuICAgIGF3YWl0IHRoaXMucnVuQnVpbGRQcm9jZXNzKCk7XG4gIH1cblxuICBnZXRDb21tYW5kICgpIHtcbiAgICBjb25zdCBjbWQgPSBzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnZ3JhZGxldy5iYXQnIDogcGF0aC5yZXNvbHZlKHRoaXMuc2VydmVyUGF0aCwgJ2dyYWRsZXcnKTtcbiAgICBjb25zdCBidWlsZFByb3BlcnR5ID0gKGtleSwgdmFsdWUpID0+IHZhbHVlID8gYC1QJHtrZXl9PSR7dmFsdWV9YCA6IG51bGw7XG4gICAgbGV0IGFyZ3MgPSBWRVJTSU9OX0tFWVNcbiAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5ICE9PSBHUkFETEVfVkVSU0lPTl9LRVkpXG4gICAgICAubWFwKChrZXkpID0+IHtcbiAgICAgICAgY29uc3Qgc2VydmVyVmVyc2lvbiA9IHRoaXMuc2VydmVyVmVyc2lvbnNba2V5XTtcbiAgICAgICAgY29uc3QgZ3JhZGxlUHJvcGVydHkgPSBgYXBwaXVtJHtrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtrZXkuc2xpY2UoMSl9YDtcbiAgICAgICAgcmV0dXJuIGJ1aWxkUHJvcGVydHkoZ3JhZGxlUHJvcGVydHksIHNlcnZlclZlcnNpb24pO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBpZiAodGhpcy5zaWduaW5nQ29uZmlnKSB7XG4gICAgICBhcmdzLnB1c2goLi4uKFxuICAgICAgICBfLmtleXModGhpcy5zaWduaW5nQ29uZmlnKVxuICAgICAgICAubWFwKChrZXkpID0+IFtgYXBwaXVtJHtfLnVwcGVyRmlyc3Qoa2V5KX1gLCB0aGlzLnNpZ25pbmdDb25maWdba2V5XV0pXG4gICAgICAgIC5tYXAoKFtrLCB2XSkgPT4gYnVpbGRQcm9wZXJ0eShrLCB2KSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGVzdEFwcFBhY2thZ2UpIHtcbiAgICAgIGFyZ3MucHVzaChidWlsZFByb3BlcnR5KCdhcHBpdW1UYXJnZXRQYWNrYWdlJywgdGhpcy50ZXN0QXBwUGFja2FnZSkpO1xuICAgIH1cbiAgICBhcmdzLnB1c2goJ2FwcDphc3NlbWJsZUFuZHJvaWRUZXN0Jyk7XG5cbiAgICByZXR1cm4ge2NtZCwgYXJnc307XG4gIH1cblxuICBhc3luYyBzZXRHcmFkbGVXcmFwcGVyVmVyc2lvbiAodmVyc2lvbikge1xuICAgIGNvbnN0IHByb3BlcnRpZXNQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMuc2VydmVyUGF0aCwgJ2dyYWRsZScsICd3cmFwcGVyJywgJ2dyYWRsZS13cmFwcGVyLnByb3BlcnRpZXMnKTtcbiAgICBjb25zdCBvcmlnaW5hbFByb3BlcnRpZXMgPSBhd2FpdCBmcy5yZWFkRmlsZShwcm9wZXJ0aWVzUGF0aCwgJ3V0ZjgnKTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0aWVzID0gdGhpcy51cGRhdGVHcmFkbGVEaXN0VXJsKG9yaWdpbmFsUHJvcGVydGllcywgdmVyc2lvbik7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHByb3BlcnRpZXNQYXRoLCBuZXdQcm9wZXJ0aWVzLCAndXRmOCcpO1xuICB9XG5cbiAgdXBkYXRlR3JhZGxlRGlzdFVybCAocHJvcGVydGllc0NvbnRlbnQsIHZlcnNpb24pIHtcbiAgICByZXR1cm4gcHJvcGVydGllc0NvbnRlbnQucmVwbGFjZShcbiAgICAgIG5ldyBSZWdFeHAoYF4oJHtfLmVzY2FwZVJlZ0V4cChHUkFETEVfVVJMX1BSRUZJWCl9KS4rJGAsICdnbScpLFxuICAgICAgYCQxJHtHUkFETEVfVVJMX1RFTVBMQVRFLnJlcGxhY2UoJ1ZFUlNJT04nLCB2ZXJzaW9uKX1gXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgKCkge1xuICAgIGxldCBoYXNBZGRpdGlvbmFsRGVwcyA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgcHJvcE5hbWUgb2YgREVQRU5ERU5DWV9QUk9QX05BTUVTKSB7XG4gICAgICBpZiAoIV8uaXNBcnJheSh0aGlzW3Byb3BOYW1lXSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtwcm9wTmFtZX0nIG11c3QgYmUgYW4gYXJyYXlgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkodGhpc1twcm9wTmFtZV0uZmlsdGVyKChsaW5lKSA9PiBfLnRyaW0obGluZSkpKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkZXAgb2YgdGhpc1twcm9wTmFtZV0pIHtcbiAgICAgICAgaWYgKC9bXFxzJ1xcXFwkXS8udGVzdChkZXApKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaW5nbGUgcXVvdGVzLCBkb2xsYXIgY2hhcmFjdGVycyBhbmQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzJyArXG4gICAgICAgICAgICBgIGFyZSBkaXNhbGxvd2VkIGluIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzOiAke2RlcH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaGFzQWRkaXRpb25hbERlcHMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoIWhhc0FkZGl0aW9uYWxEZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMuc2VydmVyUGF0aCwgJ2FwcCcsICdidWlsZC5ncmFkbGUua3RzJyk7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBmcy5yZWFkRmlsZShidWlsZFBhdGgsICd1dGY4Jyk7XG4gICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBERVBFTkRFTkNZX1BST1BfTkFNRVMpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHByb3BOYW1lID09PSBERVBFTkRFTkNZX1BST1BfTkFNRVNbMF1cbiAgICAgICAgPyAnaW1wbGVtZW50YXRpb24nXG4gICAgICAgIDogJ2FuZHJvaWRUZXN0SW1wbGVtZW50YXRpb24nO1xuICAgICAgY29uc3QgZGVwcyA9IHRoaXNbcHJvcE5hbWVdXG4gICAgICAgIC5maWx0ZXIoKGxpbmUpID0+IF8udHJpbShsaW5lKSlcbiAgICAgICAgLm1hcCgobGluZSkgPT4gYCR7cHJlZml4fShcIiR7bGluZX1cIilgKTtcbiAgICAgIGlmIChfLmlzRW1wdHkoZGVwcykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9nLmluZm8oYEFkZGluZyB0aGUgZm9sbG93aW5nICR7cHJvcE5hbWV9IHRvIGJ1aWxkLmdyYWRsZS5rdHM6ICR7ZGVwc31gKTtcbiAgICAgIGNvbmZpZ3VyYXRpb24gPSB1cGRhdGVEZXBlbmRlbmN5TGluZXMoY29uZmlndXJhdGlvbiwgcHJvcE5hbWUsIGRlcHMpO1xuICAgIH1cbiAgICBhd2FpdCBmcy53cml0ZUZpbGUoYnVpbGRQYXRoLCBjb25maWd1cmF0aW9uLCAndXRmOCcpO1xuICB9XG5cbiAgYXN5bmMgcnVuQnVpbGRQcm9jZXNzICgpIHtcbiAgICBjb25zdCB7Y21kLCBhcmdzfSA9IHRoaXMuZ2V0Q29tbWFuZCgpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBCZWdpbm5pbmcgYnVpbGQgd2l0aCBjb21tYW5kICcke2NtZH0gJHthcmdzLmpvaW4oJyAnKX0nIGAgK1xuICAgICAgYGluIGRpcmVjdG9yeSAnJHt0aGlzLnNlcnZlclBhdGh9J2ApO1xuICAgIGNvbnN0IGdyYWRsZWJ1aWxkID0gbmV3IFN1YlByb2Nlc3MoY21kLCBhcmdzLCB7XG4gICAgICBjd2Q6IHRoaXMuc2VydmVyUGF0aCxcbiAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICAgIHdpbmRvd3NWZXJiYXRpbUFyZ3VtZW50czogdHJ1ZVxuICAgIH0pO1xuICAgIGxldCBidWlsZExhc3RMaW5lcyA9IFtdO1xuXG4gICAgY29uc3QgbG9nTXNnID0gYE91dHB1dCBmcm9tIEdyYWRsZSAke3RoaXMuc2hvd0dyYWRsZUxvZyA/ICd3aWxsJyA6ICd3aWxsIG5vdCd9IGJlIGxvZ2dlZGA7XG4gICAgdGhpcy5sb2cuZGVidWcoYCR7bG9nTXNnfS4gVG8gY2hhbmdlIHRoaXMsIHVzZSAnc2hvd0dyYWRsZUxvZycgZGVzaXJlZCBjYXBhYmlsaXR5YCk7XG4gICAgZ3JhZGxlYnVpbGQub24oJ3N0cmVhbS1saW5lJywgKGxpbmUpID0+IHtcbiAgICAgIGlmICh0aGlzLnNob3dHcmFkbGVMb2cpIHtcbiAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgnW1NUREVSUl0nKSkge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYFtHcmFkbGVdICR7bGluZX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGBbR3JhZGxlXSAke2xpbmV9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJ1aWxkTGFzdExpbmVzLnB1c2goYCR7RU9MfSR7bGluZX1gKTtcbiAgICAgIGlmIChidWlsZExhc3RMaW5lcy5sZW5ndGggPiBHUkFETEVfTUFYX0VSUk9SX0xPR19MSU5FUykge1xuICAgICAgICBidWlsZExhc3RMaW5lcyA9IGJ1aWxkTGFzdExpbmVzLnNsaWNlKC1HUkFETEVfTUFYX0VSUk9SX0xPR19MSU5FUyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZ3JhZGxlYnVpbGQuc3RhcnQoKTtcbiAgICAgIGF3YWl0IGdyYWRsZWJ1aWxkLmpvaW4oKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxldCBtc2cgPSBgVW5hYmxlIHRvIGJ1aWxkIEVzcHJlc3NvIHNlcnZlciAtICR7ZXJyLm1lc3NhZ2V9XFxuYCArXG4gICAgICAgIGBHcmFkbGUgZXJyb3IgbWVzc2FnZToke0VPTH0ke2J1aWxkTGFzdExpbmVzfWA7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KG1zZyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IFNlcnZlckJ1aWxkZXIsIFZFUlNJT05fS0VZUywgR1JBRExFX1VSTF9URU1QTEFURSwgYnVpbGRTZXJ2ZXJTaWduaW5nQ29uZmlnIH07XG5leHBvcnQgZGVmYXVsdCBTZXJ2ZXJCdWlsZGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FB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
|
|
206
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3NlcnZlci1idWlsZGVyLmpzIiwibmFtZXMiOlsiR1JBRExFX1ZFUlNJT05fS0VZIiwiR1JBRExFX1VSTF9QUkVGSVgiLCJHUkFETEVfVVJMX1RFTVBMQVRFIiwiR1JBRExFX01BWF9FUlJPUl9MT0dfTElORVMiLCJERVBFTkRFTkNZX1BST1BfTkFNRVMiLCJWRVJTSU9OX0tFWVMiLCJidWlsZFNlcnZlclNpZ25pbmdDb25maWciLCJhcmdzIiwiemlwQWxpZ24iLCJrZXlzdG9yZUZpbGUiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsIlNlcnZlckJ1aWxkZXIiLCJjb25zdHJ1Y3RvciIsImxvZyIsInNlcnZlclBhdGgiLCJzaG93R3JhZGxlTG9nIiwiYnVpbGRDb25maWd1cmF0aW9uIiwidmVyc2lvbkNvbmZpZ3VyYXRpb24iLCJ0b29sc1ZlcnNpb25zIiwic2VydmVyVmVyc2lvbnMiLCJfIiwicmVkdWNlIiwiYWNjIiwidmFsdWUiLCJrZXkiLCJpbmNsdWRlcyIsIndhcm4iLCJ0ZXN0QXBwUGFja2FnZSIsInNpZ25pbmdDb25maWciLCJwcm9wTmFtZSIsImJ1aWxkIiwic2V0R3JhZGxlV3JhcHBlclZlcnNpb24iLCJpbnNlcnRBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIiwicnVuQnVpbGRQcm9jZXNzIiwiZ2V0Q29tbWFuZCIsImNtZCIsInN5c3RlbSIsImlzV2luZG93cyIsInBhdGgiLCJyZXNvbHZlIiwiYnVpbGRQcm9wZXJ0eSIsImZpbHRlciIsIm1hcCIsInNlcnZlclZlcnNpb24iLCJncmFkbGVQcm9wZXJ0eSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJCb29sZWFuIiwicHVzaCIsImtleXMiLCJ1cHBlckZpcnN0IiwiayIsInYiLCJ2ZXJzaW9uIiwicHJvcGVydGllc1BhdGgiLCJvcmlnaW5hbFByb3BlcnRpZXMiLCJmcyIsInJlYWRGaWxlIiwibmV3UHJvcGVydGllcyIsInVwZGF0ZUdyYWRsZURpc3RVcmwiLCJ3cml0ZUZpbGUiLCJwcm9wZXJ0aWVzQ29udGVudCIsInJlcGxhY2UiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJoYXNBZGRpdGlvbmFsRGVwcyIsImlzQXJyYXkiLCJFcnJvciIsImlzRW1wdHkiLCJsaW5lIiwidHJpbSIsImRlcCIsInRlc3QiLCJidWlsZFBhdGgiLCJjb25maWd1cmF0aW9uIiwicHJlZml4IiwiZGVwcyIsImluZm8iLCJ1cGRhdGVEZXBlbmRlbmN5TGluZXMiLCJkZWJ1ZyIsImpvaW4iLCJncmFkbGVidWlsZCIsIlN1YlByb2Nlc3MiLCJjd2QiLCJzdGRpbyIsIndpbmRvd3NWZXJiYXRpbUFyZ3VtZW50cyIsImJ1aWxkTGFzdExpbmVzIiwibG9nTXNnIiwib24iLCJzdGFydHNXaXRoIiwiRU9MIiwibGVuZ3RoIiwic3RhcnQiLCJlcnIiLCJtc2ciLCJtZXNzYWdlIiwiZXJyb3JBbmRUaHJvdyJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9zZXJ2ZXItYnVpbGRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IGZzLCBzeXN0ZW0gfSBmcm9tICdhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBFT0wgfSBmcm9tICdvcyc7XG5pbXBvcnQgeyB1cGRhdGVEZXBlbmRlbmN5TGluZXMgfSBmcm9tICcuL3V0aWxzJztcblxuY29uc3QgR1JBRExFX1ZFUlNJT05fS0VZID0gJ2dyYWRsZSc7XG5jb25zdCBHUkFETEVfVVJMX1BSRUZJWCA9ICdkaXN0cmlidXRpb25Vcmw9JztcbmNvbnN0IEdSQURMRV9VUkxfVEVNUExBVEUgPSAnaHR0cHNcXFxcOi8vc2VydmljZXMuZ3JhZGxlLm9yZy9kaXN0cmlidXRpb25zL2dyYWRsZS1WRVJTSU9OLWFsbC56aXAnO1xuY29uc3QgR1JBRExFX01BWF9FUlJPUl9MT0dfTElORVMgPSAxNTtcbmNvbnN0IERFUEVOREVOQ1lfUFJPUF9OQU1FUyA9IFsnYWRkaXRpb25hbEFwcERlcGVuZGVuY2llcycsICdhZGRpdGlvbmFsQW5kcm9pZFRlc3REZXBlbmRlbmNpZXMnXTtcblxuY29uc3QgVkVSU0lPTl9LRVlTID0gW1xuICBHUkFETEVfVkVSU0lPTl9LRVksXG4gICdhbmRyb2lkR3JhZGxlUGx1Z2luJyxcbiAgJ2NvbXBpbGVTZGsnLFxuICAnYnVpbGRUb29scycsXG4gICdtaW5TZGsnLFxuICAndGFyZ2V0U2RrJyxcbiAgJ2tvdGxpbicsXG4gICdzb3VyY2VDb21wYXRpYmlsaXR5JyxcbiAgJ3RhcmdldENvbXBhdGliaWxpdHknLFxuICAnanZtVGFyZ2V0JyxcbiAgJ2NvbXBvc2VWZXJzaW9uJyxcbiAgJ2Fubm90YXRpb25WZXJzaW9uJ1xuXTtcblxuZnVuY3Rpb24gYnVpbGRTZXJ2ZXJTaWduaW5nQ29uZmlnIChhcmdzKSB7XG4gIHJldHVybiB7XG4gICAgemlwQWxpZ246IHRydWUsXG4gICAga2V5c3RvcmVGaWxlOiBhcmdzLmtleXN0b3JlRmlsZSxcbiAgICBrZXlzdG9yZVBhc3N3b3JkOiBhcmdzLmtleXN0b3JlUGFzc3dvcmQsXG4gICAga2V5QWxpYXM6IGFyZ3Mua2V5QWxpYXMsXG4gICAga2V5UGFzc3dvcmQ6IGFyZ3Mua2V5UGFzc3dvcmRcbiAgfTtcbn1cblxuY2xhc3MgU2VydmVyQnVpbGRlciB7XG4gIGNvbnN0cnVjdG9yIChsb2csIGFyZ3MgPSB7fSkge1xuICAgIHRoaXMubG9nID0gbG9nO1xuICAgIHRoaXMuc2VydmVyUGF0aCA9IGFyZ3Muc2VydmVyUGF0aDtcbiAgICB0aGlzLnNob3dHcmFkbGVMb2cgPSBhcmdzLnNob3dHcmFkbGVMb2c7XG5cbiAgICBjb25zdCBidWlsZENvbmZpZ3VyYXRpb24gPSBhcmdzLmJ1aWxkQ29uZmlndXJhdGlvbiB8fCB7fTtcblxuICAgIGNvbnN0IHZlcnNpb25Db25maWd1cmF0aW9uID0gYnVpbGRDb25maWd1cmF0aW9uLnRvb2xzVmVyc2lvbnMgfHwge307XG4gICAgdGhpcy5zZXJ2ZXJWZXJzaW9ucyA9IF8ucmVkdWNlKHZlcnNpb25Db25maWd1cmF0aW9uLCAoYWNjLCB2YWx1ZSwga2V5KSA9PiB7XG4gICAgICBpZiAoVkVSU0lPTl9LRVlTLmluY2x1ZGVzKGtleSkpIHtcbiAgICAgICAgYWNjW2tleV0gPSB2YWx1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZy53YXJuKGBHb3QgdW5leHBlY3RlZCAnJHtrZXl9JyBpbiB0b29sc1ZlcnNpb24gYmxvY2sgb2YgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb25gKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBhY2M7XG4gICAgfSwge30pO1xuXG4gICAgdGhpcy50ZXN0QXBwUGFja2FnZSA9IGFyZ3MudGVzdEFwcFBhY2thZ2U7XG4gICAgdGhpcy5zaWduaW5nQ29uZmlnID0gYXJncy5zaWduaW5nQ29uZmlnO1xuXG4gICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBERVBFTkRFTkNZX1BST1BfTkFNRVMpIHtcbiAgICAgIHRoaXNbcHJvcE5hbWVdID0gYnVpbGRDb25maWd1cmF0aW9uW3Byb3BOYW1lXSB8fCBbXTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBidWlsZCAoKSB7XG4gICAgaWYgKHRoaXMuc2VydmVyVmVyc2lvbnNbR1JBRExFX1ZFUlNJT05fS0VZXSkge1xuICAgICAgYXdhaXQgdGhpcy5zZXRHcmFkbGVXcmFwcGVyVmVyc2lvbih0aGlzLnNlcnZlclZlcnNpb25zW0dSQURMRV9WRVJTSU9OX0tFWV0pO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuaW5zZXJ0QWRkaXRpb25hbERlcGVuZGVuY2llcygpO1xuXG4gICAgYXdhaXQgdGhpcy5ydW5CdWlsZFByb2Nlc3MoKTtcbiAgfVxuXG4gIGdldENvbW1hbmQgKCkge1xuICAgIGNvbnN0IGNtZCA9IHN5c3RlbS5pc1dpbmRvd3MoKSA/ICdncmFkbGV3LmJhdCcgOiBwYXRoLnJlc29sdmUodGhpcy5zZXJ2ZXJQYXRoLCAnZ3JhZGxldycpO1xuICAgIGNvbnN0IGJ1aWxkUHJvcGVydHkgPSAoa2V5LCB2YWx1ZSkgPT4gdmFsdWUgPyBgLVAke2tleX09JHt2YWx1ZX1gIDogbnVsbDtcbiAgICBsZXQgYXJncyA9IFZFUlNJT05fS0VZU1xuICAgICAgLmZpbHRlcigoa2V5KSA9PiBrZXkgIT09IEdSQURMRV9WRVJTSU9OX0tFWSlcbiAgICAgIC5tYXAoKGtleSkgPT4ge1xuICAgICAgICBjb25zdCBzZXJ2ZXJWZXJzaW9uID0gdGhpcy5zZXJ2ZXJWZXJzaW9uc1trZXldO1xuICAgICAgICBjb25zdCBncmFkbGVQcm9wZXJ0eSA9IGBhcHBpdW0ke2tleS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKX0ke2tleS5zbGljZSgxKX1gO1xuICAgICAgICByZXR1cm4gYnVpbGRQcm9wZXJ0eShncmFkbGVQcm9wZXJ0eSwgc2VydmVyVmVyc2lvbik7XG4gICAgICB9KVxuICAgICAgLmZpbHRlcihCb29sZWFuKTtcblxuICAgIGlmICh0aGlzLnNpZ25pbmdDb25maWcpIHtcbiAgICAgIGFyZ3MucHVzaCguLi4oXG4gICAgICAgIF8ua2V5cyh0aGlzLnNpZ25pbmdDb25maWcpXG4gICAgICAgIC5tYXAoKGtleSkgPT4gW2BhcHBpdW0ke18udXBwZXJGaXJzdChrZXkpfWAsIHRoaXMuc2lnbmluZ0NvbmZpZ1trZXldXSlcbiAgICAgICAgLm1hcCgoW2ssIHZdKSA9PiBidWlsZFByb3BlcnR5KGssIHYpKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICApKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50ZXN0QXBwUGFja2FnZSkge1xuICAgICAgYXJncy5wdXNoKGJ1aWxkUHJvcGVydHkoJ2FwcGl1bVRhcmdldFBhY2thZ2UnLCB0aGlzLnRlc3RBcHBQYWNrYWdlKSk7XG4gICAgfVxuICAgIGFyZ3MucHVzaCgnYXBwOmFzc2VtYmxlQW5kcm9pZFRlc3QnKTtcblxuICAgIHJldHVybiB7Y21kLCBhcmdzfTtcbiAgfVxuXG4gIGFzeW5jIHNldEdyYWRsZVdyYXBwZXJWZXJzaW9uICh2ZXJzaW9uKSB7XG4gICAgY29uc3QgcHJvcGVydGllc1BhdGggPSBwYXRoLnJlc29sdmUodGhpcy5zZXJ2ZXJQYXRoLCAnZ3JhZGxlJywgJ3dyYXBwZXInLCAnZ3JhZGxlLXdyYXBwZXIucHJvcGVydGllcycpO1xuICAgIGNvbnN0IG9yaWdpbmFsUHJvcGVydGllcyA9IGF3YWl0IGZzLnJlYWRGaWxlKHByb3BlcnRpZXNQYXRoLCAndXRmOCcpO1xuICAgIGNvbnN0IG5ld1Byb3BlcnRpZXMgPSB0aGlzLnVwZGF0ZUdyYWRsZURpc3RVcmwob3JpZ2luYWxQcm9wZXJ0aWVzLCB2ZXJzaW9uKTtcbiAgICBhd2FpdCBmcy53cml0ZUZpbGUocHJvcGVydGllc1BhdGgsIG5ld1Byb3BlcnRpZXMsICd1dGY4Jyk7XG4gIH1cblxuICB1cGRhdGVHcmFkbGVEaXN0VXJsIChwcm9wZXJ0aWVzQ29udGVudCwgdmVyc2lvbikge1xuICAgIHJldHVybiBwcm9wZXJ0aWVzQ29udGVudC5yZXBsYWNlKFxuICAgICAgbmV3IFJlZ0V4cChgXigke18uZXNjYXBlUmVnRXhwKEdSQURMRV9VUkxfUFJFRklYKX0pLiskYCwgJ2dtJyksXG4gICAgICBgJDEke0dSQURMRV9VUkxfVEVNUExBVEUucmVwbGFjZSgnVkVSU0lPTicsIHZlcnNpb24pfWBcbiAgICApO1xuICB9XG5cbiAgYXN5bmMgaW5zZXJ0QWRkaXRpb25hbERlcGVuZGVuY2llcyAoKSB7XG4gICAgbGV0IGhhc0FkZGl0aW9uYWxEZXBzID0gZmFsc2U7XG4gICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBERVBFTkRFTkNZX1BST1BfTkFNRVMpIHtcbiAgICAgIGlmICghXy5pc0FycmF5KHRoaXNbcHJvcE5hbWVdKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYCcke3Byb3BOYW1lfScgbXVzdCBiZSBhbiBhcnJheWApO1xuICAgICAgfVxuICAgICAgaWYgKF8uaXNFbXB0eSh0aGlzW3Byb3BOYW1lXS5maWx0ZXIoKGxpbmUpID0+IF8udHJpbShsaW5lKSkpKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBmb3IgKGNvbnN0IGRlcCBvZiB0aGlzW3Byb3BOYW1lXSkge1xuICAgICAgICBpZiAoL1tcXHMnXFxcXCRdLy50ZXN0KGRlcCkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1NpbmdsZSBxdW90ZXMsIGRvbGxhciBjaGFyYWN0ZXJzIGFuZCB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMnICtcbiAgICAgICAgICAgIGAgYXJlIGRpc2FsbG93ZWQgaW4gYWRkaXRpb25hbCBkZXBlbmRlbmNpZXM6ICR7ZGVwfWApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBoYXNBZGRpdGlvbmFsRGVwcyA9IHRydWU7XG4gICAgfVxuICAgIGlmICghaGFzQWRkaXRpb25hbERlcHMpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBidWlsZFBhdGggPSBwYXRoLnJlc29sdmUodGhpcy5zZXJ2ZXJQYXRoLCAnYXBwJywgJ2J1aWxkLmdyYWRsZS5rdHMnKTtcbiAgICBsZXQgY29uZmlndXJhdGlvbiA9IGF3YWl0IGZzLnJlYWRGaWxlKGJ1aWxkUGF0aCwgJ3V0ZjgnKTtcbiAgICBmb3IgKGNvbnN0IHByb3BOYW1lIG9mIERFUEVOREVOQ1lfUFJPUF9OQU1FUykge1xuICAgICAgY29uc3QgcHJlZml4ID0gcHJvcE5hbWUgPT09IERFUEVOREVOQ1lfUFJPUF9OQU1FU1swXVxuICAgICAgICA/ICdpbXBsZW1lbnRhdGlvbidcbiAgICAgICAgOiAnYW5kcm9pZFRlc3RJbXBsZW1lbnRhdGlvbic7XG4gICAgICBjb25zdCBkZXBzID0gdGhpc1twcm9wTmFtZV1cbiAgICAgICAgLmZpbHRlcigobGluZSkgPT4gXy50cmltKGxpbmUpKVxuICAgICAgICAubWFwKChsaW5lKSA9PiBgJHtwcmVmaXh9KFwiJHtsaW5lfVwiKWApO1xuICAgICAgaWYgKF8uaXNFbXB0eShkZXBzKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2cuaW5mbyhgQWRkaW5nIHRoZSBmb2xsb3dpbmcgJHtwcm9wTmFtZX0gdG8gYnVpbGQuZ3JhZGxlLmt0czogJHtkZXBzfWApO1xuICAgICAgY29uZmlndXJhdGlvbiA9IHVwZGF0ZURlcGVuZGVuY3lMaW5lcyhjb25maWd1cmF0aW9uLCBwcm9wTmFtZSwgZGVwcyk7XG4gICAgfVxuICAgIGF3YWl0IGZzLndyaXRlRmlsZShidWlsZFBhdGgsIGNvbmZpZ3VyYXRpb24sICd1dGY4Jyk7XG4gIH1cblxuICBhc3luYyBydW5CdWlsZFByb2Nlc3MgKCkge1xuICAgIGNvbnN0IHtjbWQsIGFyZ3N9ID0gdGhpcy5nZXRDb21tYW5kKCk7XG4gICAgdGhpcy5sb2cuZGVidWcoYEJlZ2lubmluZyBidWlsZCB3aXRoIGNvbW1hbmQgJyR7Y21kfSAke2FyZ3Muam9pbignICcpfScgYCArXG4gICAgICBgaW4gZGlyZWN0b3J5ICcke3RoaXMuc2VydmVyUGF0aH0nYCk7XG4gICAgY29uc3QgZ3JhZGxlYnVpbGQgPSBuZXcgU3ViUHJvY2VzcyhjbWQsIGFyZ3MsIHtcbiAgICAgIGN3ZDogdGhpcy5zZXJ2ZXJQYXRoLFxuICAgICAgc3RkaW86IFsnaWdub3JlJywgJ3BpcGUnLCAncGlwZSddLFxuICAgICAgd2luZG93c1ZlcmJhdGltQXJndW1lbnRzOiB0cnVlXG4gICAgfSk7XG4gICAgbGV0IGJ1aWxkTGFzdExpbmVzID0gW107XG5cbiAgICBjb25zdCBsb2dNc2cgPSBgT3V0cHV0IGZyb20gR3JhZGxlICR7dGhpcy5zaG93R3JhZGxlTG9nID8gJ3dpbGwnIDogJ3dpbGwgbm90J30gYmUgbG9nZ2VkYDtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgJHtsb2dNc2d9LiBUbyBjaGFuZ2UgdGhpcywgdXNlICdzaG93R3JhZGxlTG9nJyBkZXNpcmVkIGNhcGFiaWxpdHlgKTtcbiAgICBncmFkbGVidWlsZC5vbignc3RyZWFtLWxpbmUnLCAobGluZSkgPT4ge1xuICAgICAgaWYgKHRoaXMuc2hvd0dyYWRsZUxvZykge1xuICAgICAgICBpZiAobGluZS5zdGFydHNXaXRoKCdbU1RERVJSXScpKSB7XG4gICAgICAgICAgdGhpcy5sb2cud2FybihgW0dyYWRsZV0gJHtsaW5lfWApO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMubG9nLmluZm8oYFtHcmFkbGVdICR7bGluZX1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnVpbGRMYXN0TGluZXMucHVzaChgJHtFT0x9JHtsaW5lfWApO1xuICAgICAgaWYgKGJ1aWxkTGFzdExpbmVzLmxlbmd0aCA+IEdSQURMRV9NQVhfRVJST1JfTE9HX0xJTkVTKSB7XG4gICAgICAgIGJ1aWxkTGFzdExpbmVzID0gYnVpbGRMYXN0TGluZXMuc2xpY2UoLUdSQURMRV9NQVhfRVJST1JfTE9HX0xJTkVTKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBncmFkbGVidWlsZC5zdGFydCgpO1xuICAgICAgYXdhaXQgZ3JhZGxlYnVpbGQuam9pbigpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbGV0IG1zZyA9IGBVbmFibGUgdG8gYnVpbGQgRXNwcmVzc28gc2VydmVyIC0gJHtlcnIubWVzc2FnZX1cXG5gICtcbiAgICAgICAgYEdyYWRsZSBlcnJvciBtZXNzYWdlOiR7RU9MfSR7YnVpbGRMYXN0TGluZXN9YDtcbiAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3cobXNnKTtcbiAgICB9XG4gIH1cbn1cblxuZXhwb3J0IHsgU2VydmVyQnVpbGRlciwgVkVSU0lPTl9LRVlTLCBHUkFETEVfVVJMX1RFTVBMQVRFLCBidWlsZFNlcnZlclNpZ25pbmdDb25maWcgfTtcbmV4cG9ydCBkZWZhdWx0IFNlcnZlckJ1aWxkZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFD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
|
package/build/lib/utils.js
CHANGED
|
@@ -12,7 +12,7 @@ exports.updateDependencyLines = updateDependencyLines;
|
|
|
12
12
|
|
|
13
13
|
require("source-map-support/register");
|
|
14
14
|
|
|
15
|
-
var _support = require("
|
|
15
|
+
var _support = require("appium/support");
|
|
16
16
|
|
|
17
17
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
18
18
|
|
|
@@ -82,4 +82,4 @@ function updateDependencyLines(originalContent, dependencyPlaceholder, dependenc
|
|
|
82
82
|
}require('source-map-support').install();
|
|
83
83
|
|
|
84
84
|
|
|
85
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
85
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3V0aWxzLmpzIiwibmFtZXMiOlsicXVhbGlmeUFjdGl2aXR5TmFtZSIsImFjdGl2aXR5TmFtZSIsInBhY2thZ2VOYW1lIiwic29tZSIsIm5hbWUiLCJfIiwiaW5jbHVkZXMiLCJkb3RQb3MiLCJpbmRleE9mIiwiY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSIsInNvdXJjZUJhc2VEaXIiLCJ0YXJnZXRCYXNlRGlyIiwiZnMiLCJ3YWxrRGlyIiwiaXRlbVBhdGgiLCJpc0RpcmVjdG9yeSIsInJlbGF0aXZlUGF0aCIsInBhdGgiLCJyZWxhdGl2ZSIsInRhcmdldFBhdGgiLCJyZXNvbHZlIiwiaXNJbkdyYWRsZUJ1aWxkRGlyIiwic2VwIiwibWtkaXJwIiwiY29weUZpbGUiLCJyZXF1aXJlT3B0aW9ucyIsIm9wdHMiLCJyZXF1aXJlZEtleXMiLCJtaXNzaW5nS2V5cyIsImRpZmZlcmVuY2UiLCJrZXlzIiwiaXNFbXB0eSIsIkVycm9yIiwidXBkYXRlRGVwZW5kZW5jeUxpbmVzIiwib3JpZ2luYWxDb250ZW50IiwiZGVwZW5kZW5jeVBsYWNlaG9sZGVyIiwiZGVwZW5kZW5jeUxpbmVzIiwiY29uZmlndXJhdGlvbkxpbmVzIiwic3BsaXQiLCJzZWFyY2hSZSIsIlJlZ0V4cCIsImVzY2FwZVJlZ0V4cCIsInBsYWNlaG9sZGVySW5kZXgiLCJmaW5kSW5kZXgiLCJsaW5lIiwidGVzdCIsInBsYWNlaG9sZGVyTGluZSIsImluZGVudExlbiIsImxlbmd0aCIsInRyaW1TdGFydCIsInNwbGljZSIsIm1hcCIsInJlcGVhdCIsImpvaW4iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnMsIG1rZGlycCB9IGZyb20gJ2FwcGl1bS9zdXBwb3J0JztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuLyoqXG4gKiBodHRwczovL2FuZHJvaWQuZ29vZ2xlc291cmNlLmNvbS9wbGF0Zm9ybS9mcmFtZXdvcmtzL2Jhc2UvKy9tYXN0ZXIvdG9vbHMvYWFwdC9SZXNvdXJjZS5jcHAjNzU1XG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGl2aXR5TmFtZVxuICogQHBhcmFtIHtzdHJpbmd9IHBhY2thZ2VOYW1lXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBUaGUgcXVhbGlmaWVkIGFjdGl2aXR5IG5hbWVcbiAqL1xuZnVuY3Rpb24gcXVhbGlmeUFjdGl2aXR5TmFtZSAoYWN0aXZpdHlOYW1lLCBwYWNrYWdlTmFtZSkge1xuICAvLyBpZiBlaXRoZXIgYWN0aXZpdHkgb3IgcGFja2FnZSBuYW1lIGlzIG5vdCBzZXRcbiAgLy8gb3IgYW55IG9mIHRoZXNlIGNvbnRhaW4gd2lsZGNhcmRzIHRoZW4gdGhlcmUgaXNcbiAgLy8gbm8gcG9pbnQgaW4gcXVhbGlmeWluZyB0aGUgYWN0aXZpdHkgbmFtZVxuICBpZiAoW2FjdGl2aXR5TmFtZSwgcGFja2FnZU5hbWVdLnNvbWUoKG5hbWUpID0+ICFuYW1lIHx8IF8uaW5jbHVkZXMobmFtZSwgJyonKSkpIHtcbiAgICByZXR1cm4gYWN0aXZpdHlOYW1lO1xuICB9XG5cbiAgY29uc3QgZG90UG9zID0gYWN0aXZpdHlOYW1lLmluZGV4T2YoJy4nKTtcbiAgaWYgKGRvdFBvcyA+IDApIHtcbiAgICByZXR1cm4gYWN0aXZpdHlOYW1lO1xuICB9XG4gIHJldHVybiBgJHtwYWNrYWdlTmFtZX0ke2RvdFBvcyA9PT0gMCA/ICcnIDogJy4nfSR7YWN0aXZpdHlOYW1lfWA7XG59XG5cbi8qKlxuICogUmVjdXJzaXZlbHkgY29weSBhbGwgZmlsZXMgZXhjZXB0IGJ1aWxkIGRpcmVjdG9yaWVzIGNvbnRlbnRzXG4gKiBAcGFyYW0gc291cmNlQmFzZURpciB7c3RyaW5nfSBkaXJlY3RvcnkgdG8gY29weSBmaWxlcyBmcm9tXG4gKiBAcGFyYW0gdGFyZ2V0QmFzZURpciB7c3RyaW5nfSBkaXJlY3RvcnkgdG8gY29weSBmaWxlcyB0b1xuICovXG5hc3luYyBmdW5jdGlvbiBjb3B5R3JhZGxlUHJvamVjdFJlY3Vyc2l2ZWx5IChzb3VyY2VCYXNlRGlyLCB0YXJnZXRCYXNlRGlyKSB7XG4gIGF3YWl0IGZzLndhbGtEaXIoc291cmNlQmFzZURpciwgdHJ1ZSwgYXN5bmMgKGl0ZW1QYXRoLCBpc0RpcmVjdG9yeSkgPT4ge1xuICAgIGNvbnN0IHJlbGF0aXZlUGF0aCA9IHBhdGgucmVsYXRpdmUoc291cmNlQmFzZURpciwgaXRlbVBhdGgpO1xuICAgIGNvbnN0IHRhcmdldFBhdGggPSBwYXRoLnJlc29sdmUodGFyZ2V0QmFzZURpciwgcmVsYXRpdmVQYXRoKTtcblxuICAgIGNvbnN0IGlzSW5HcmFkbGVCdWlsZERpciA9IGAke3BhdGguc2VwfSR7aXRlbVBhdGh9YC5pbmNsdWRlcyhgJHtwYXRoLnNlcH1idWlsZCR7cGF0aC5zZXB9YCk7XG4gICAgaWYgKGlzSW5HcmFkbGVCdWlsZERpcikge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChpc0RpcmVjdG9yeSkge1xuICAgICAgYXdhaXQgbWtkaXJwKHRhcmdldFBhdGgpO1xuICAgIH0gZWxzZSB7XG4gICAgICBhd2FpdCBmcy5jb3B5RmlsZShpdGVtUGF0aCwgdGFyZ2V0UGF0aCk7XG4gICAgfVxuICAgIHJldHVybiBmYWxzZTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHJlcXVpcmVPcHRpb25zIChvcHRzLCByZXF1aXJlZEtleXMgPSBbXSkge1xuICBjb25zdCBtaXNzaW5nS2V5cyA9IF8uZGlmZmVyZW5jZShyZXF1aXJlZEtleXMsIF8ua2V5cyhvcHRzKSk7XG4gIGlmICghXy5pc0VtcHR5KG1pc3NpbmdLZXlzKSkge1xuICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFyZSByZXF1aXJlZDogJHttaXNzaW5nS2V5c31gKTtcbiAgfVxuICByZXR1cm4gb3B0cztcbn1cblxuZnVuY3Rpb24gdXBkYXRlRGVwZW5kZW5jeUxpbmVzIChvcmlnaW5hbENvbnRlbnQsIGRlcGVuZGVuY3lQbGFjZWhvbGRlciwgZGVwZW5kZW5jeUxpbmVzKSB7XG4gIGNvbnN0IGNvbmZpZ3VyYXRpb25MaW5lcyA9IG9yaWdpbmFsQ29udGVudC5zcGxpdCgnXFxuJyk7XG4gIGNvbnN0IHNlYXJjaFJlID0gbmV3IFJlZ0V4cChgXlxcXFxzKi8vXFxcXHMqXFxcXGIke18uZXNjYXBlUmVnRXhwKGRlcGVuZGVuY3lQbGFjZWhvbGRlcil9XFxcXGJgLCAnbScpO1xuICBjb25zdCBwbGFjZWhvbGRlckluZGV4ID0gY29uZmlndXJhdGlvbkxpbmVzLmZpbmRJbmRleCgobGluZSkgPT4gc2VhcmNoUmUudGVzdChsaW5lKSk7XG4gIGlmIChwbGFjZWhvbGRlckluZGV4IDwgMCkge1xuICAgIHJldHVybiBvcmlnaW5hbENvbnRlbnQ7XG4gIH1cblxuICBjb25zdCBwbGFjZWhvbGRlckxpbmUgPSBjb25maWd1cmF0aW9uTGluZXNbcGxhY2Vob2xkZXJJbmRleF07XG4gIGNvbnN0IGluZGVudExlbiA9IHBsYWNlaG9sZGVyTGluZS5sZW5ndGggLSBfLnRyaW1TdGFydChwbGFjZWhvbGRlckxpbmUpLmxlbmd0aDtcbiAgY29uZmlndXJhdGlvbkxpbmVzLnNwbGljZShwbGFjZWhvbGRlckluZGV4ICsgMSwgMCwgLi4uKGRlcGVuZGVuY3lMaW5lc1xuICAgIC5tYXAoKGxpbmUpID0+IGAkeycgJy5yZXBlYXQoaW5kZW50TGVuKX0ke2xpbmV9YCkpKTtcbiAgcmV0dXJuIGNvbmZpZ3VyYXRpb25MaW5lcy5qb2luKCdcXG4nKTtcbn1cblxuZXhwb3J0IHsgcXVhbGlmeUFjdGl2aXR5TmFtZSwgY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSwgcmVxdWlyZU9wdGlvbnMsIHVwZGF0ZURlcGVuZGVuY3lMaW5lcyB9O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQVNBLFNBQVNBLG1CQUFULENBQThCQyxZQUE5QixFQUE0Q0MsV0FB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
|
|
Binary file
|
package/index.js
CHANGED
|
@@ -1,29 +1,5 @@
|
|
|
1
1
|
// transpile:main
|
|
2
|
+
import { EspressoDriver } from './lib/driver';
|
|
2
3
|
|
|
3
|
-
|
|
4
|
-
import * as driver from './lib/driver';
|
|
5
|
-
import * as server from './lib/server';
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
const { EspressoDriver } = driver;
|
|
9
|
-
const { startServer } = server;
|
|
10
|
-
|
|
11
|
-
const DEFAULT_HOST = 'localhost';
|
|
12
|
-
const DEFAULT_PORT = 4884;
|
|
13
|
-
|
|
14
|
-
async function main () {
|
|
15
|
-
const getArgValue = (argName) => {
|
|
16
|
-
const argIndex = process.argv.indexOf(argName);
|
|
17
|
-
return argIndex > 0 ? process.argv[argIndex + 1] : null;
|
|
18
|
-
};
|
|
19
|
-
const port = parseInt(getArgValue('--port'), 10) || DEFAULT_PORT;
|
|
20
|
-
const host = getArgValue('--host') || DEFAULT_HOST;
|
|
21
|
-
return await startServer(port, host);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
if (require.main === module) {
|
|
25
|
-
asyncify(main);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export { EspressoDriver, startServer };
|
|
4
|
+
export { EspressoDriver };
|
|
29
5
|
export default EspressoDriver;
|
package/lib/commands/execute.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { errors } from '
|
|
2
|
+
import { errors } from 'appium/driver';
|
|
3
3
|
|
|
4
4
|
const extensions = {};
|
|
5
5
|
|
|
@@ -64,6 +64,10 @@ extensions.executeMobile = async function executeMobile (mobileCommand, opts = {
|
|
|
64
64
|
unlock: 'mobileUnlock',
|
|
65
65
|
|
|
66
66
|
refreshGpsCache: 'mobileRefreshGpsCache',
|
|
67
|
+
|
|
68
|
+
startMediaProjectionRecording: 'mobileStartMediaProjectionRecording',
|
|
69
|
+
isMediaProjectionRecordingRunning: 'mobileIsMediaProjectionRecordingRunning',
|
|
70
|
+
stopMediaProjectionRecording: 'mobileStopMediaProjectionRecording',
|
|
67
71
|
};
|
|
68
72
|
|
|
69
73
|
if (!_.has(mobileCommandsMapping, mobileCommand)) {
|
package/lib/commands/general.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
|
-
import { util } from '
|
|
2
|
+
import { util } from 'appium/support';
|
|
3
3
|
import validate from 'validate.js';
|
|
4
|
-
import { errors } from '
|
|
4
|
+
import { errors } from 'appium/driver';
|
|
5
5
|
import { qualifyActivityName } from '../utils';
|
|
6
6
|
|
|
7
7
|
const commands = {}, helpers = {}, extensions = {};
|
package/lib/driver.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import _ from 'lodash';
|
|
2
2
|
import path from 'path';
|
|
3
|
-
import
|
|
3
|
+
import B from 'bluebird';
|
|
4
|
+
import { BaseDriver, errors, isErrorType, DeviceSettings} from 'appium/driver';
|
|
4
5
|
import { EspressoRunner, TEST_APK_PKG } from './espresso-runner';
|
|
5
|
-
import { fs, tempDir, zip } from '
|
|
6
|
+
import { fs, tempDir, zip } from 'appium/support';
|
|
6
7
|
import commands from './commands';
|
|
7
8
|
import { DEFAULT_ADB_PORT } from 'appium-adb';
|
|
8
9
|
import { androidHelpers, androidCommands, SETTINGS_HELPER_PKG_ID } from 'appium-android-driver';
|
|
@@ -561,16 +562,22 @@ class EspressoDriver extends BaseDriver {
|
|
|
561
562
|
async deleteSession () {
|
|
562
563
|
this.log.debug('Deleting espresso session');
|
|
563
564
|
|
|
564
|
-
|
|
565
|
+
const screenRecordingStopTasks = [async () => {
|
|
565
566
|
if (!_.isEmpty(this._screenRecordingProperties)) {
|
|
566
567
|
await this.stopRecordingScreen();
|
|
567
568
|
}
|
|
568
|
-
}
|
|
569
|
+
}, async () => {
|
|
570
|
+
if (await this.mobileIsMediaProjectionRecordingRunning()) {
|
|
571
|
+
await this.mobileStopMediaProjectionRecording();
|
|
572
|
+
}
|
|
573
|
+
}, async () => {
|
|
574
|
+
if (!_.isEmpty(this._screenStreamingProps)) {
|
|
575
|
+
await this.mobileStopScreenStreaming();
|
|
576
|
+
}
|
|
577
|
+
}];
|
|
569
578
|
|
|
570
579
|
await androidHelpers.removeAllSessionWebSocketHandlers(this.server, this.sessionId);
|
|
571
580
|
|
|
572
|
-
await this.mobileStopScreenStreaming();
|
|
573
|
-
|
|
574
581
|
if (this.espresso) {
|
|
575
582
|
if (this.jwpProxyActive) {
|
|
576
583
|
await this.espresso.deleteSession();
|
|
@@ -579,8 +586,14 @@ class EspressoDriver extends BaseDriver {
|
|
|
579
586
|
}
|
|
580
587
|
this.jwpProxyActive = false;
|
|
581
588
|
|
|
582
|
-
// TODO below logic is duplicated from uiautomator2
|
|
583
589
|
if (this.adb) {
|
|
590
|
+
await B.all(screenRecordingStopTasks.map((task) => {
|
|
591
|
+
(async () => {
|
|
592
|
+
try {
|
|
593
|
+
await task();
|
|
594
|
+
} catch (ign) {}
|
|
595
|
+
})();
|
|
596
|
+
}));
|
|
584
597
|
if (this.wasAnimationEnabled) {
|
|
585
598
|
try {
|
|
586
599
|
await this.adb.setAnimationState(true);
|
package/lib/espresso-runner.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { JWProxy, errors } from '
|
|
1
|
+
import { JWProxy, errors } from 'appium/driver';
|
|
2
2
|
import { waitForCondition } from 'asyncbox';
|
|
3
3
|
import { ServerBuilder, buildServerSigningConfig } from './server-builder';
|
|
4
4
|
import path from 'path';
|
|
5
|
-
import { fs, util, mkdirp, timing } from '
|
|
5
|
+
import { fs, util, mkdirp, timing } from 'appium/support';
|
|
6
6
|
import { version } from '../../package.json'; // eslint-disable-line import/no-unresolved
|
|
7
7
|
import B from 'bluebird';
|
|
8
8
|
import _ from 'lodash';
|
package/lib/logger.js
CHANGED
package/lib/server-builder.js
CHANGED
package/lib/utils.js
CHANGED