appium-ios-simulator
Advanced tools
Comparing version
@@ -17,2 +17,6 @@ 'use strict'; | ||
var _logger = require('./logger'); | ||
var _logger2 = _interopRequireDefault(_logger); | ||
// tails a file, promise resolves when input string is written to file | ||
@@ -54,5 +58,31 @@ function tailUntil(filePath, until) { | ||
}, null, _this); | ||
})['finally'](function () { | ||
// no matter what, stop the tail process | ||
proc.stop(); | ||
})['finally'](function callee$1$0() { | ||
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) { | ||
while (1) switch (context$2$0.prev = context$2$0.next) { | ||
case 0: | ||
if (!proc.isRunning) { | ||
context$2$0.next = 9; | ||
break; | ||
} | ||
context$2$0.prev = 1; | ||
context$2$0.next = 4; | ||
return _regeneratorRuntime.awrap(proc.stop()); | ||
case 4: | ||
context$2$0.next = 9; | ||
break; | ||
case 6: | ||
context$2$0.prev = 6; | ||
context$2$0.t0 = context$2$0['catch'](1); | ||
// there is not much we can do here, unfortunately, but log | ||
_logger2['default'].info('Stopping tail process failed: ' + context$2$0.t0.message); | ||
case 9: | ||
case 'end': | ||
return context$2$0.stop(); | ||
} | ||
}, null, _this, [[1, 6]]); | ||
})); | ||
@@ -78,2 +108,4 @@ | ||
/* eslint-enable */ | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90YWlsLXVudGlsLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7NEJBQTJCLGNBQWM7O3dCQUMzQixVQUFVOzs7OztBQUd4QixTQUFlLFNBQVMsQ0FBRSxRQUFRLEVBQUUsS0FBSztNQUFFLE9BQU8seURBQUcsSUFBSTtNQUNuRCxJQUFJLEVBUUosYUFBYTs7Ozs7O0FBUmIsWUFBSSxHQUFHLDZCQUFlLE1BQU0sRUFBRSxDQUFDLElBQUksRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDOztBQVE1RCxxQkFBYSxHQUFHLFNBQWhCLGFBQWEsQ0FBSSxNQUFNLEVBQUs7QUFDOUIsaUJBQU8sTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNuQzs7NENBRU0sMEJBQU0sb0JBQU8sT0FBTyxFQUFFLE1BQU07Y0FDN0IsT0FBTyxFQUdQLFFBQVE7Ozs7QUFIUix1QkFBTyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDO0FBR25DLHdCQUFRLEdBQUcsc0JBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxZQUFNO0FBQ3pDLHlCQUFPLE1BQU0sbUJBQWlCLFFBQVEsc0JBQWlCLE9BQU8sUUFBSyxDQUFDO2lCQUNyRSxDQUFDOztpREFHSSxzQkFBRSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLENBQUM7Ozs7QUFFakMsdUJBQU8sRUFBRSxDQUFDOzs7Ozs7O1NBQ1gsQ0FBQyxXQUFRLENBQUMsWUFBTTs7QUFFZixjQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDYixDQUFDOzs7Ozs7O0NBQ0g7O1FBRVEsU0FBUyxHQUFULFNBQVMiLCJmaWxlIjoibGliL3RhaWwtdW50aWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcblxuLy8gdGFpbHMgYSBmaWxlLCBwcm9taXNlIHJlc29sdmVzIHdoZW4gaW5wdXQgc3RyaW5nIGlzIHdyaXR0ZW4gdG8gZmlsZVxuYXN5bmMgZnVuY3Rpb24gdGFpbFVudGlsIChmaWxlUGF0aCwgdW50aWwsIHRpbWVvdXQgPSA1MDAwKSB7XG4gIGxldCBwcm9jID0gbmV3IFN1YlByb2Nlc3MoJ3RhaWwnLCBbJy1mJywgJy1uJywgJzEwMCcsIGZpbGVQYXRoXSk7XG5cbiAgLy8gLy8gZm9yIGRlYnVnZ2luZ1xuICAvLyBmdW5jdGlvbiBjb25zb2xlT3V0ICguLi5hcmdzKSB7XG4gIC8vICAgY29uc29sZS5sb2coYD4+PiAke2FyZ3N9YCk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tY29uc29sZVxuICAvLyB9XG4gIC8vIHByb2Mub24oJ291dHB1dCcsIGNvbnNvbGVPdXQpO1xuXG4gIGxldCBzdGFydERldGVjdG9yID0gKHN0ZG91dCkgPT4ge1xuICAgIHJldHVybiBzdGRvdXQuaW5kZXhPZih1bnRpbCkgPiAtMTtcbiAgfTtcblxuICByZXR1cm4gbmV3IEIoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgIGxldCBzdGFydGVkID0gcHJvYy5zdGFydChzdGFydERldGVjdG9yKTtcblxuICAgIC8qIGVzbGludC1kaXNhYmxlIHByb21pc2UvcHJlZmVyLWF3YWl0LXRvLXRoZW4gKi9cbiAgICBsZXQgdGltZWRvdXQgPSBCLmRlbGF5KHRpbWVvdXQpLnRoZW4oKCkgPT4ge1xuICAgICAgcmV0dXJuIHJlamVjdChgdGFpbGluZyBmaWxlICR7ZmlsZVBhdGh9IGZhaWxlZCBhZnRlciAke3RpbWVvdXR9bXNgKTtcbiAgICB9KTtcbiAgICAvKiBlc2xpbnQtZW5hYmxlICovXG5cbiAgICBhd2FpdCBCLnJhY2UoW3N0YXJ0ZWQsIHRpbWVkb3V0XSk7XG5cbiAgICByZXNvbHZlKCk7XG4gIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgIC8vIG5vIG1hdHRlciB3aGF0LCBzdG9wIHRoZSB0YWlsIHByb2Nlc3NcbiAgICBwcm9jLnN0b3AoKTtcbiAgfSk7XG59XG5cbmV4cG9ydCB7IHRhaWxVbnRpbCB9O1xuIl0sInNvdXJjZVJvb3QiOiIuLi8uLiJ9 | ||
// no matter what, stop the tail process | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi90YWlsLXVudGlsLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7NEJBQTJCLGNBQWM7O3dCQUMzQixVQUFVOzs7O3NCQUNSLFVBQVU7Ozs7O0FBRzFCLFNBQWUsU0FBUyxDQUFFLFFBQVEsRUFBRSxLQUFLO01BQUUsT0FBTyx5REFBRyxJQUFJO01BQ25ELElBQUksRUFRSixhQUFhOzs7Ozs7QUFSYixZQUFJLEdBQUcsNkJBQWUsTUFBTSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7O0FBUTVELHFCQUFhLEdBQUcsU0FBaEIsYUFBYSxDQUFJLE1BQU0sRUFBSztBQUM5QixpQkFBTyxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1NBQ25DOzs0Q0FFTSwwQkFBTSxvQkFBTyxPQUFPLEVBQUUsTUFBTTtjQUM3QixPQUFPLEVBR1AsUUFBUTs7OztBQUhSLHVCQUFPLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxhQUFhLENBQUM7QUFHbkMsd0JBQVEsR0FBRyxzQkFBRSxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQU07QUFDekMseUJBQU8sTUFBTSxtQkFBaUIsUUFBUSxzQkFBaUIsT0FBTyxRQUFLLENBQUM7aUJBQ3JFLENBQUM7O2lEQUdJLHNCQUFFLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxRQUFRLENBQUMsQ0FBQzs7OztBQUVqQyx1QkFBTyxFQUFFLENBQUM7Ozs7Ozs7U0FDWCxDQUFDLFdBQVEsQ0FBQzs7OztxQkFFTCxJQUFJLENBQUMsU0FBUzs7Ozs7OztpREFFUixJQUFJLENBQUMsSUFBSSxFQUFFOzs7Ozs7Ozs7OztBQUdqQixvQ0FBSSxJQUFJLG9DQUFrQyxlQUFJLE9BQU8sQ0FBRyxDQUFDOzs7Ozs7O1NBRzlELENBQUM7Ozs7Ozs7Q0FDSDs7UUFFUSxTQUFTLEdBQVQsU0FBUyIsImZpbGUiOiJsaWIvdGFpbC11bnRpbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN1YlByb2Nlc3MgfSBmcm9tICd0ZWVuX3Byb2Nlc3MnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5cbi8vIHRhaWxzIGEgZmlsZSwgcHJvbWlzZSByZXNvbHZlcyB3aGVuIGlucHV0IHN0cmluZyBpcyB3cml0dGVuIHRvIGZpbGVcbmFzeW5jIGZ1bmN0aW9uIHRhaWxVbnRpbCAoZmlsZVBhdGgsIHVudGlsLCB0aW1lb3V0ID0gNTAwMCkge1xuICBsZXQgcHJvYyA9IG5ldyBTdWJQcm9jZXNzKCd0YWlsJywgWyctZicsICctbicsICcxMDAnLCBmaWxlUGF0aF0pO1xuXG4gIC8vIC8vIGZvciBkZWJ1Z2dpbmdcbiAgLy8gZnVuY3Rpb24gY29uc29sZU91dCAoLi4uYXJncykge1xuICAvLyAgIGNvbnNvbGUubG9nKGA+Pj4gJHthcmdzfWApOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLWNvbnNvbGVcbiAgLy8gfVxuICAvLyBwcm9jLm9uKCdvdXRwdXQnLCBjb25zb2xlT3V0KTtcblxuICBsZXQgc3RhcnREZXRlY3RvciA9IChzdGRvdXQpID0+IHtcbiAgICByZXR1cm4gc3Rkb3V0LmluZGV4T2YodW50aWwpID4gLTE7XG4gIH07XG5cbiAgcmV0dXJuIG5ldyBCKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICBsZXQgc3RhcnRlZCA9IHByb2Muc3RhcnQoc3RhcnREZXRlY3Rvcik7XG5cbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuICovXG4gICAgbGV0IHRpbWVkb3V0ID0gQi5kZWxheSh0aW1lb3V0KS50aGVuKCgpID0+IHtcbiAgICAgIHJldHVybiByZWplY3QoYHRhaWxpbmcgZmlsZSAke2ZpbGVQYXRofSBmYWlsZWQgYWZ0ZXIgJHt0aW1lb3V0fW1zYCk7XG4gICAgfSk7XG4gICAgLyogZXNsaW50LWVuYWJsZSAqL1xuXG4gICAgYXdhaXQgQi5yYWNlKFtzdGFydGVkLCB0aW1lZG91dF0pO1xuXG4gICAgcmVzb2x2ZSgpO1xuICB9KS5maW5hbGx5KGFzeW5jICgpID0+IHtcbiAgICAvLyBubyBtYXR0ZXIgd2hhdCwgc3RvcCB0aGUgdGFpbCBwcm9jZXNzXG4gICAgaWYgKHByb2MuaXNSdW5uaW5nKSB7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCBwcm9jLnN0b3AoKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAvLyB0aGVyZSBpcyBub3QgbXVjaCB3ZSBjYW4gZG8gaGVyZSwgdW5mb3J0dW5hdGVseSwgYnV0IGxvZ1xuICAgICAgICBsb2cuaW5mbyhgU3RvcHBpbmcgdGFpbCBwcm9jZXNzIGZhaWxlZDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgeyB0YWlsVW50aWwgfTtcbiJdLCJzb3VyY2VSb290IjoiLi4vLi4ifQ== |
@@ -391,24 +391,56 @@ 'use strict'; | ||
case 0: | ||
tempFileName = _path2['default'].resolve(__dirname + '/temp-ssl-cert.pem'); | ||
pathToKeychain = _path2['default'].resolve(new _simulatorXcode62['default'](udid).getDir()); | ||
context$1$0.next = 4; | ||
context$1$0.prev = 0; | ||
context$1$0.next = 3; | ||
return _regeneratorRuntime.awrap(_appiumSupport.fs.which('openssl')); | ||
case 3: | ||
context$1$0.next = 9; | ||
break; | ||
case 5: | ||
context$1$0.prev = 5; | ||
context$1$0.t0 = context$1$0['catch'](0); | ||
_logger2['default'].debug('customSSLCert requires openssl to be available on path'); | ||
_logger2['default'].errorAndThrow('Command \'openssl\' not found'); | ||
case 9: | ||
tempFileName = _path2['default'].resolve(__dirname, 'temp-ssl-cert.pem'); | ||
pathToKeychain = new _simulatorXcode62['default'](udid).getDir(); | ||
context$1$0.next = 13; | ||
return _regeneratorRuntime.awrap(_appiumSupport.fs.writeFile(tempFileName, pemText)); | ||
case 4: | ||
case 13: | ||
context$1$0.prev = 13; | ||
context$1$0.next = 16; | ||
return _regeneratorRuntime.awrap(_appiumSupport.fs.stat(pathToKeychain)); | ||
case 16: | ||
context$1$0.next = 22; | ||
break; | ||
case 18: | ||
context$1$0.prev = 18; | ||
context$1$0.t1 = context$1$0['catch'](13); | ||
_logger2['default'].debug('Could not install SSL certificate. No simulator with udid \'' + udid + '\''); | ||
_logger2['default'].errorAndThrow(context$1$0.t1); | ||
case 22: | ||
certificate = new _certificate.Certificate(tempFileName); | ||
context$1$0.next = 7; | ||
context$1$0.next = 25; | ||
return _regeneratorRuntime.awrap(certificate.add(pathToKeychain)); | ||
case 7: | ||
context$1$0.next = 9; | ||
case 25: | ||
context$1$0.next = 27; | ||
return _regeneratorRuntime.awrap(_appiumSupport.fs.unlink(tempFileName)); | ||
case 9: | ||
return context$1$0.abrupt('return', context$1$0.sent); | ||
case 27: | ||
return context$1$0.abrupt('return', certificate); | ||
case 10: | ||
case 28: | ||
case 'end': | ||
return context$1$0.stop(); | ||
} | ||
}, null, this); | ||
}, null, this, [[0, 5], [13, 18]]); | ||
} | ||
@@ -421,24 +453,32 @@ | ||
case 0: | ||
tempFileName = _path2['default'].resolve(__dirname + '/temp-ssl-cert.pem'); | ||
context$1$0.prev = 0; | ||
tempFileName = _path2['default'].resolve(__dirname, 'temp-ssl-cert.pem'); | ||
pathToKeychain = _path2['default'].resolve(new _simulatorXcode62['default'](udid).getDir()); | ||
context$1$0.next = 4; | ||
context$1$0.next = 5; | ||
return _regeneratorRuntime.awrap(_appiumSupport.fs.writeFile(tempFileName, pemText)); | ||
case 4: | ||
case 5: | ||
certificate = new _certificate.Certificate(tempFileName); | ||
context$1$0.next = 7; | ||
context$1$0.next = 8; | ||
return _regeneratorRuntime.awrap(certificate.remove(pathToKeychain)); | ||
case 7: | ||
context$1$0.next = 9; | ||
case 8: | ||
context$1$0.next = 10; | ||
return _regeneratorRuntime.awrap(_appiumSupport.fs.unlink(tempFileName)); | ||
case 9: | ||
return context$1$0.abrupt('return', context$1$0.sent); | ||
case 10: | ||
return context$1$0.abrupt('return', certificate); | ||
case 10: | ||
case 13: | ||
context$1$0.prev = 13; | ||
context$1$0.t0 = context$1$0['catch'](0); | ||
_logger2['default'].debug('Could not uninstall SSL certificate. No simulator with udid \'' + udid + '\''); | ||
_logger2['default'].errorAndThrow(context$1$0.t0); | ||
case 17: | ||
case 'end': | ||
return context$1$0.stop(); | ||
} | ||
}, null, this); | ||
}, null, this, [[0, 13]]); | ||
} | ||
@@ -459,2 +499,4 @@ | ||
// see the README for github.com/appium/node-simctl for example output of getDevices() | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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LEdBQUcsa0JBQUssT0FBTyxDQUFDLGlDQUFjLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDOzt5Q0FDekQsa0JBQUcsU0FBUyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUM7OztBQUNyQyxtQkFBVyxHQUFHLDZCQUFnQixZQUFZLENBQUM7O3lDQUN6QyxXQUFXLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQzs7Ozt5Q0FDeEIsa0JBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQzs7Ozs7Ozs7OztDQUNyQzs7QUFFRCxTQUFlLGdCQUFnQixDQUFFLE9BQU8sRUFBRSxJQUFJO01BQ3hDLFlBQVksRUFDWixjQUFjLEVBRWQsV0FBVzs7OztBQUhYLG9CQUFZLEdBQUcsa0JBQUssT0FBTyxDQUFJLFNBQVMsd0JBQXFCO0FBQzdELHNCQUFjLEdBQUcsa0JBQUssT0FBTyxDQUFDLGlDQUFjLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDOzt5Q0FDekQsa0JBQUcsU0FBUyxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUM7OztBQUNyQyxtQkFBVyxHQUFHLDZCQUFnQixZQUFZLENBQUM7O3lDQUN6QyxXQUFXLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQzs7Ozt5Q0FDM0Isa0JBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQzs7Ozs7Ozs7OztDQUNyQzs7UUFFUSxpQkFBaUIsR0FBakIsaUJBQWlCO1FBQUUsc0JBQXNCLEdBQXRCLHNCQUFzQjtRQUFFLFVBQVUsR0FBVixVQUFVO1FBQUUsU0FBUyxHQUFULFNBQVM7UUFBRSxjQUFjLEdBQWQsY0FBYztRQUFFLGdCQUFnQixHQUFoQixnQkFBZ0IiLCJmaWxlIjoibGliL3V0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvZyBmcm9tICcuL2xvZ2dlcic7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgZXhlYyB9IGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgZ2V0VmVyc2lvbiB9IGZyb20gJ2FwcGl1bS14Y29kZSc7XG5pbXBvcnQgeyBnZXREZXZpY2VzIH0gZnJvbSAnbm9kZS1zaW1jdGwnO1xuaW1wb3J0IHsgZnMgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgeyBDZXJ0aWZpY2F0ZSB9IGZyb20gJy4vY2VydGlmaWNhdGUnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgU2ltdWxhdG9yIGZyb20gJy4vc2ltdWxhdG9yLXhjb2RlLTYnO1xuXG5jb25zdCBPU0FTQ1JJUFRfVElNRU9VVCA9IDEwMDAwO1xuXG5hc3luYyBmdW5jdGlvbiBraWxsQWxsU2ltdWxhdG9ycyAodGltZW91dCA9IE9TQVNDUklQVF9USU1FT1VUKSB7XG4gIGxvZy5kZWJ1ZygnS2lsbGluZyBhbGwgaU9TIFNpbXVsYXRvcnMnKTtcblxuICBsZXQgYXBwTmFtZTtcbiAgbGV0IHhjb2RlVmVyc2lvbiA9IGF3YWl0IGdldFZlcnNpb24odHJ1ZSk7XG4gIGlmICh4Y29kZVZlcnNpb24ubWFqb3IgPj0gNykge1xuICAgIGFwcE5hbWUgPSAnU2ltdWxhdG9yJztcbiAgfSBlbHNlIHtcbiAgICBhcHBOYW1lID0gJ2lPUyBTaW11bGF0b3InO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBhd2FpdCBleGVjKCdvc2FzY3JpcHQnLCBbJy1lJywgYHF1aXQgYXBwIFwiJHthcHBOYW1lfVwiYF0sIHt0aW1lb3V0fSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsZXQgZXJyU3RyaW5nID0gSlNPTi5zdHJpbmdpZnkoZSk7XG4gICAgaWYgKGVyclN0cmluZy5tYXRjaCgvQXBwbGljYXRpb24gaXNuLnQgcnVubmluZy8pKSB7XG4gICAgICAvLyBvbiBzb21lIHN5c3RlbXMgd2UgZ2V0IGFuIGVycm9yIHRoYXQgdGhlIGFwcGxpY2F0aW9uIGlzIG5vdCBydW5uaW5nXG4gICAgICBsb2cuZGVidWcoJ0FwcGxpY2F0aW9uIGlzIG5vdCBydW5uaW5nLiBDb250aW51aW5nJyk7XG4gICAgfSBlbHNlIGlmIChlLm1lc3NhZ2UubWF0Y2goL3RpbWVkIG91dC8pKSB7XG4gICAgICAvLyBzb21ldGltZXMsIGVzcGVjaWFsbHkgaW4geGNvZGUgOCwgdGhlIHNpbSBoYW5nc1xuICAgICAgbG9nLmRlYnVnKCdLaWxsaW5nIHNpbXVsYXRvciB0aW1lZCBvdXQuIFVzaW5nIGtpbGxhbGwgc2lnbmFsJyk7XG4gICAgICBhd2FpdCBleGVjKCdraWxsYWxsJywgW2FwcE5hbWVdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmVycm9yQW5kVGhyb3coZSk7XG4gICAgfVxuICB9XG5cbiAgLy8gd2FpdCBmb3IgYWxsIHRoZSBkZXZpY2VzIHRvIGJlIHNodXRkb3duIGJlZm9yZSBDb250aW51aW5nXG4gIC8vIGJ1dCBvbmx5IHByaW50IG91dCB0aGUgZmFpbGVkIG9uZXMgd2hlbiB0aGV5IGFyZSBhY3R1YWxseSBmdWxseSBmYWlsZWRcbiAgbGV0IHJlbWFpbmluZ0RldmljZXM7XG4gIGFzeW5jIGZ1bmN0aW9uIGFsbFNpbXNBcmVEb3duICgpIHtcbiAgICByZW1haW5pbmdEZXZpY2VzID0gW107XG4gICAgbGV0IGRldmljZXMgPSBhd2FpdCBnZXREZXZpY2VzKCk7XG4gICAgZGV2aWNlcyA9IF8uZmxhdHRlbihfLnZhbHVlcyhkZXZpY2VzKSk7XG4gICAgcmV0dXJuIF8uZXZlcnkoZGV2aWNlcywgKHNpbSkgPT4ge1xuICAgICAgbGV0IHN0YXRlID0gc2ltLnN0YXRlLnRvTG93ZXJDYXNlKCk7XG4gICAgICBsZXQgZG9uZSA9IHN0YXRlID09PSAnc2h1dGRvd24nIHx8XG4gICAgICAgICAgICAgICAgIHN0YXRlID09PSAndW5hdmFpbGFibGUnIHx8XG4gICAgICAgICAgICAgICAgIHN0YXRlID09PSAnZGlzY29ubmVjdGVkJztcbiAgICAgIGlmICghZG9uZSkge1xuICAgICAgICByZW1haW5pbmdEZXZpY2VzLnB1c2goYFNpbXVsYXRvciBub3Qgc2h1dCBkb3duOiAke3NpbS5uYW1lfSAoJHtzaW0uc2RrfSwgdWRpZDogYCArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgJHtzaW0udWRpZH0pIGlzIHN0aWxsIGluIHN0YXRlICcke3N0YXRlfSdgKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBkb25lO1xuICAgIH0pO1xuICB9XG4gIHRyeSB7XG4gICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhbGxTaW1zQXJlRG93biwge1xuICAgICAgd2FpdE1zOiA2MCAqIDEwMDAsXG4gICAgICBpbnRlcnZhbE1zOiAyMDBcbiAgICB9KTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKHJlbWFpbmluZ0RldmljZXMgJiYgcmVtYWluaW5nRGV2aWNlcy5sZW5ndGggIT09IDApIHtcbiAgICAgIGxvZy5lcnJvcignVGhlIGZvbGxvd2luZyBkZXZpY2VzIGFyZSBub3QgaW4gdGhlIGNvcnJlY3Qgc3RhdGU6Jyk7XG4gICAgICBmb3IgKGxldCBkZXZpY2Ugb2YgcmVtYWluaW5nRGV2aWNlcykge1xuICAgICAgICBsb2cuZXJyb3IoYCAgICAke2RldmljZX1gKTtcbiAgICAgIH1cbiAgICB9XG4gICAgdGhyb3cgZXJyO1xuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGVuZEFsbFNpbXVsYXRvckRhZW1vbnMgKCkge1xuICBsb2cuZGVidWcoJ0VuZGluZyBhbGwgc2ltdWxhdG9yIGRhZW1vbnMnKTtcbiAgZm9yIChsZXQgc2VydmljZVBhdHRlcm4gb2YgWydjb20uYXBwbGUuaXBob25lc2ltdWxhdG9yJywgJ2NvbS5hcHBsZS5Db3JlU2ltdWxhdG9yJ10pIHtcbiAgICBsb2cuZGVidWcoYEtpbGxpbmcgYW55IG90aGVyICR7c2VydmljZVBhdHRlcm59IGRhZW1vbnNgKTtcbiAgICBsZXQgbGF1bmNoQ3RsQ29tbWFuZCA9IGBsYXVuY2hjdGwgbGlzdCB8IGdyZXAgJHtzZXJ2aWNlUGF0dGVybn0gfCBjdXQgLWYgMyB8IHhhcmdzIC1uIDEgbGF1bmNoY3RsYDtcbiAgICB0cnkge1xuICAgICAgbGV0IHN0b3BDbWQgPSBgJHtsYXVuY2hDdGxDb21tYW5kfSBzdG9wYDtcbiAgICAgIGF3YWl0IGV4ZWMoJ2Jhc2gnLCBbJy1jJywgc3RvcENtZF0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLndhcm4oYENvdWxkIG5vdCBzdG9wICR7c2VydmljZVBhdHRlcm59IGRhZW1vbnMsIGNhcnJ5aW5nIG9uIGFueXdheSFgKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgIGxldCByZW1vdmVDbWQgPSBgJHtsYXVuY2hDdGxDb21tYW5kfSByZW1vdmVgO1xuICAgICAgYXdhaXQgZXhlYygnYmFzaCcsIFsnLWMnLCByZW1vdmVDbWRdKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxvZy53YXJuKGBDb3VsZCBub3QgcmVtb3ZlICR7c2VydmljZVBhdHRlcm59IGRhZW1vbnMsIGNhcnJ5aW5nIG9uIGFueXdheSFgKTtcbiAgICB9XG4gIH1cbiAgLy8gd2FpdGluZyB1bnRpbCB0aGUgc2ltdWxhdG9yIHNlcnZpY2UgaGFzIGRpZWQuXG4gIHRyeSB7XG4gICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICBsZXQge3N0ZG91dH0gPSBhd2FpdCBleGVjKCdiYXNoJywgWyctYycsXG4gICAgICAgIGBwcyAtZSAgfCBncmVwIGxhdW5jaGRfc2ltIHwgZ3JlcCAtdiBiYXNoIHwgZ3JlcCAtdiBncmVwIHwgYXdrIHsncHJpbnQkMSd9YF0pO1xuICAgICAgcmV0dXJuIHN0ZG91dC50cmltKCkubGVuZ3RoID09PSAwO1xuICAgIH0sIHt3YWl0TXM6IDUwMDAsIGludGVydmFsTXM6IDUwMH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBsb2cud2FybihgQ291bGQgbm90IGVuZCBhbGwgc2ltdWxhdG9yIGRhZW1vbnMsIGNhcnJ5aW5nIG9uIWApO1xuICB9XG4gIGxvZy5kZWJ1ZygnRmluaXNoaW5nIGVuZGluZyBhbGwgc2ltdWxhdG9yIGRhZW1vbnMnKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2ltRXhpc3RzICh1ZGlkKSB7XG4gIC8vIHNlZSB0aGUgUkVBRE1FIGZvciBnaXRodWIuY29tL2FwcGl1bS9ub2RlLXNpbWN0bCBmb3IgZXhhbXBsZSBvdXRwdXQgb2YgZ2V0RGV2aWNlcygpXG4gIGxldCBkZXZpY2VzID0gYXdhaXQgZ2V0RGV2aWNlcygpO1xuXG4gIGRldmljZXMgPSBfLnRvUGFpcnMoZGV2aWNlcykubWFwKChwYWlyKSA9PiB7XG4gICAgcmV0dXJuIHBhaXJbMV07XG4gIH0pLnJlZHVjZSgoYSwgYikgPT4ge1xuICAgIHJldHVybiBhLmNvbmNhdChiKTtcbiAgfSwgW10pO1xuICByZXR1cm4gISFfLmZpbmQoZGV2aWNlcywgKHNpbSkgPT4ge1xuICAgIHJldHVybiBzaW0udWRpZCA9PT0gdWRpZDtcbiAgfSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHNhZmVSaW1SYWYgKGRlbFBhdGgsIHRyeU51bSA9IDApIHtcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy5yaW1yYWYoZGVsUGF0aCk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGlmICh0cnlOdW0gPCAyMCkge1xuICAgICAgaWYgKGVyci5tZXNzYWdlLmluZGV4T2YoJ0VOT1RFTVBUWScpICE9PSAtMSkge1xuICAgICAgICBsb2cuZGVidWcoYFBhdGggJyR7ZGVsUGF0aH0nIHdhcyBub3QgZW1wdHkgZHVyaW5nIGRlbGV0ZTsgcmV0cnlpbmdgKTtcbiAgICAgICAgcmV0dXJuIHNhZmVSaW1SYWYoZGVsUGF0aCwgdHJ5TnVtICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlLmluZGV4T2YoJ0VOT0VOVCcpICE9PSAtMSkge1xuICAgICAgICBsb2cuZGVidWcoYFBhdGggJyR7ZGVsUGF0aH0nJyBkaWQgbm90IGV4aXN0IHdoZW4gd2UgdHJpZWQgdG8gZGVsZXRlLCBpZ25vcmluZ2ApO1xuICAgICAgICByZXR1cm4gc2FmZVJpbVJhZihkZWxQYXRoLCB0cnlOdW0gKyAxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gaW5zdGFsbFNTTENlcnQgKHBlbVRleHQsIHVkaWQpIHtcbiAgbGV0IHRlbXBGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShgJHtfX2Rpcm5hbWV9L3RlbXAtc3NsLWNlcnQucGVtYCk7XG4gIGxldCBwYXRoVG9LZXljaGFpbiA9IHBhdGgucmVzb2x2ZShuZXcgU2ltdWxhdG9yKHVkaWQpLmdldERpcigpKTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHRlbXBGaWxlTmFtZSwgcGVtVGV4dCk7XG4gIGxldCBjZXJ0aWZpY2F0ZSA9IG5ldyBDZXJ0aWZpY2F0ZSh0ZW1wRmlsZU5hbWUpO1xuICBhd2FpdCBjZXJ0aWZpY2F0ZS5hZGQocGF0aFRvS2V5Y2hhaW4pO1xuICByZXR1cm4gYXdhaXQgZnMudW5saW5rKHRlbXBGaWxlTmFtZSk7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaW5zdGFsbFNTTENlcnQgKHBlbVRleHQsIHVkaWQpIHtcbiAgbGV0IHRlbXBGaWxlTmFtZSA9IHBhdGgucmVzb2x2ZShgJHtfX2Rpcm5hbWV9L3RlbXAtc3NsLWNlcnQucGVtYCk7XG4gIGxldCBwYXRoVG9LZXljaGFpbiA9IHBhdGgucmVzb2x2ZShuZXcgU2ltdWxhdG9yKHVkaWQpLmdldERpcigpKTtcbiAgYXdhaXQgZnMud3JpdGVGaWxlKHRlbXBGaWxlTmFtZSwgcGVtVGV4dCk7XG4gIGxldCBjZXJ0aWZpY2F0ZSA9IG5ldyBDZXJ0aWZpY2F0ZSh0ZW1wRmlsZU5hbWUpO1xuICBhd2FpdCBjZXJ0aWZpY2F0ZS5yZW1vdmUocGF0aFRvS2V5Y2hhaW4pO1xuICByZXR1cm4gYXdhaXQgZnMudW5saW5rKHRlbXBGaWxlTmFtZSk7XG59XG5cbmV4cG9ydCB7IGtpbGxBbGxTaW11bGF0b3JzLCBlbmRBbGxTaW11bGF0b3JEYWVtb25zLCBzYWZlUmltUmFmLCBzaW1FeGlzdHMsIGluc3RhbGxTU0xDZXJ0LCB1bmluc3RhbGxTU0xDZXJ0IH07XG4iXSwic291cmNlUm9vdCI6Ii4uLy4uIn0= | ||
// Check that openssl is installed on the path | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,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QUFpQixHQUFqQixpQkFBaUI7UUFBRSxzQkFBc0IsR0FBdEIsc0JBQXNCO1FBQUUsVUFBVSxHQUFWLFVBQVU7UUFBRSxTQUFTLEdBQVQsU0FBUztRQUFFLGNBQWMsR0FBZCxjQUFjO1FBQUUsZ0JBQWdCLEdBQWhCLGdCQUFnQiIsImZpbGUiOiJsaWIvdXRpbHMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCBfIGZyb20gJ2xvZGFzaCc7XG5pbXBvcnQgeyBleGVjIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBnZXRWZXJzaW9uIH0gZnJvbSAnYXBwaXVtLXhjb2RlJztcbmltcG9ydCB7IGdldERldmljZXMgfSBmcm9tICdub2RlLXNpbWN0bCc7XG5pbXBvcnQgeyBmcyB9IGZyb20gJ2FwcGl1bS1zdXBwb3J0JztcbmltcG9ydCB7IENlcnRpZmljYXRlIH0gZnJvbSAnLi9jZXJ0aWZpY2F0ZSc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCBTaW11bGF0b3IgZnJvbSAnLi9zaW11bGF0b3IteGNvZGUtNic7XG5cbmNvbnN0IE9TQVNDUklQVF9USU1FT1VUID0gMTAwMDA7XG5cbmFzeW5jIGZ1bmN0aW9uIGtpbGxBbGxTaW11bGF0b3JzICh0aW1lb3V0ID0gT1NBU0NSSVBUX1RJTUVPVVQpIHtcbiAgbG9nLmRlYnVnKCdLaWxsaW5nIGFsbCBpT1MgU2ltdWxhdG9ycycpO1xuXG4gIGxldCBhcHBOYW1lO1xuICBsZXQgeGNvZGVWZXJzaW9uID0gYXdhaXQgZ2V0VmVyc2lvbih0cnVlKTtcbiAgaWYgKHhjb2RlVmVyc2lvbi5tYWpvciA+PSA3KSB7XG4gICAgYXBwTmFtZSA9ICdTaW11bGF0b3InO1xuICB9IGVsc2Uge1xuICAgIGFwcE5hbWUgPSAnaU9TIFNpbXVsYXRvcic7XG4gIH1cblxuICB0cnkge1xuICAgIGF3YWl0IGV4ZWMoJ29zYXNjcmlwdCcsIFsnLWUnLCBgcXVpdCBhcHAgXCIke2FwcE5hbWV9XCJgXSwge3RpbWVvdXR9KTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGxldCBlcnJTdHJpbmcgPSBKU09OLnN0cmluZ2lmeShlKTtcbiAgICBpZiAoZXJyU3RyaW5nLm1hdGNoKC9BcHBsaWNhdGlvbiBpc24udCBydW5uaW5nLykpIHtcbiAgICAgIC8vIG9uIHNvbWUgc3lzdGVtcyB3ZSBnZXQgYW4gZXJyb3IgdGhhdCB0aGUgYXBwbGljYXRpb24gaXMgbm90IHJ1bm5pbmdcbiAgICAgIGxvZy5kZWJ1ZygnQXBwbGljYXRpb24gaXMgbm90IHJ1bm5pbmcuIENvbnRpbnVpbmcnKTtcbiAgICB9IGVsc2UgaWYgKGUubWVzc2FnZS5tYXRjaCgvdGltZWQgb3V0LykpIHtcbiAgICAgIC8vIHNvbWV0aW1lcywgZXNwZWNpYWxseSBpbiB4Y29kZSA4LCB0aGUgc2ltIGhhbmdzXG4gICAgICBsb2cuZGVidWcoJ0tpbGxpbmcgc2ltdWxhdG9yIHRpbWVkIG91dC4gVXNpbmcga2lsbGFsbCBzaWduYWwnKTtcbiAgICAgIGF3YWl0IGV4ZWMoJ2tpbGxhbGwnLCBbYXBwTmFtZV0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsb2cuZXJyb3JBbmRUaHJvdyhlKTtcbiAgICB9XG4gIH1cblxuICAvLyB3YWl0IGZvciBhbGwgdGhlIGRldmljZXMgdG8gYmUgc2h1dGRvd24gYmVmb3JlIENvbnRpbnVpbmdcbiAgLy8gYnV0IG9ubHkgcHJpbnQgb3V0IHRoZSBmYWlsZWQgb25lcyB3aGVuIHRoZXkgYXJlIGFjdHVhbGx5IGZ1bGx5IGZhaWxlZFxuICBsZXQgcmVtYWluaW5nRGV2aWNlcztcbiAgYXN5bmMgZnVuY3Rpb24gYWxsU2ltc0FyZURvd24gKCkge1xuICAgIHJlbWFpbmluZ0RldmljZXMgPSBbXTtcbiAgICBsZXQgZGV2aWNlcyA9IGF3YWl0IGdldERldmljZXMoKTtcbiAgICBkZXZpY2VzID0gXy5mbGF0dGVuKF8udmFsdWVzKGRldmljZXMpKTtcbiAgICByZXR1cm4gXy5ldmVyeShkZXZpY2VzLCAoc2ltKSA9PiB7XG4gICAgICBsZXQgc3RhdGUgPSBzaW0uc3RhdGUudG9Mb3dlckNhc2UoKTtcbiAgICAgIGxldCBkb25lID0gc3RhdGUgPT09ICdzaHV0ZG93bicgfHxcbiAgICAgICAgICAgICAgICAgc3RhdGUgPT09ICd1bmF2YWlsYWJsZScgfHxcbiAgICAgICAgICAgICAgICAgc3RhdGUgPT09ICdkaXNjb25uZWN0ZWQnO1xuICAgICAgaWYgKCFkb25lKSB7XG4gICAgICAgIHJlbWFpbmluZ0RldmljZXMucHVzaChgU2ltdWxhdG9yIG5vdCBzaHV0IGRvd246ICR7c2ltLm5hbWV9ICgke3NpbS5zZGt9LCB1ZGlkOiBgICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGAke3NpbS51ZGlkfSkgaXMgc3RpbGwgaW4gc3RhdGUgJyR7c3RhdGV9J2ApO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGRvbmU7XG4gICAgfSk7XG4gIH1cbiAgdHJ5IHtcbiAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFsbFNpbXNBcmVEb3duLCB7XG4gICAgICB3YWl0TXM6IDYwICogMTAwMCxcbiAgICAgIGludGVydmFsTXM6IDIwMFxuICAgIH0pO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICBpZiAocmVtYWluaW5nRGV2aWNlcyAmJiByZW1haW5pbmdEZXZpY2VzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgbG9nLmVycm9yKCdUaGUgZm9sbG93aW5nIGRldmljZXMgYXJlIG5vdCBpbiB0aGUgY29ycmVjdCBzdGF0ZTonKTtcbiAgICAgIGZvciAobGV0IGRldmljZSBvZiByZW1haW5pbmdEZXZpY2VzKSB7XG4gICAgICAgIGxvZy5lcnJvcihgICAgICR7ZGV2aWNlfWApO1xuICAgICAgfVxuICAgIH1cbiAgICB0aHJvdyBlcnI7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gZW5kQWxsU2ltdWxhdG9yRGFlbW9ucyAoKSB7XG4gIGxvZy5kZWJ1ZygnRW5kaW5nIGFsbCBzaW11bGF0b3IgZGFlbW9ucycpO1xuICBmb3IgKGxldCBzZXJ2aWNlUGF0dGVybiBvZiBbJ2NvbS5hcHBsZS5pcGhvbmVzaW11bGF0b3InLCAnY29tLmFwcGxlLkNvcmVTaW11bGF0b3InXSkge1xuICAgIGxvZy5kZWJ1ZyhgS2lsbGluZyBhbnkgb3RoZXIgJHtzZXJ2aWNlUGF0dGVybn0gZGFlbW9uc2ApO1xuICAgIGxldCBsYXVuY2hDdGxDb21tYW5kID0gYGxhdW5jaGN0bCBsaXN0IHwgZ3JlcCAke3NlcnZpY2VQYXR0ZXJufSB8IGN1dCAtZiAzIHwgeGFyZ3MgLW4gMSBsYXVuY2hjdGxgO1xuICAgIHRyeSB7XG4gICAgICBsZXQgc3RvcENtZCA9IGAke2xhdW5jaEN0bENvbW1hbmR9IHN0b3BgO1xuICAgICAgYXdhaXQgZXhlYygnYmFzaCcsIFsnLWMnLCBzdG9wQ21kXSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBsb2cud2FybihgQ291bGQgbm90IHN0b3AgJHtzZXJ2aWNlUGF0dGVybn0gZGFlbW9ucywgY2Fycnlpbmcgb24gYW55d2F5IWApO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgbGV0IHJlbW92ZUNtZCA9IGAke2xhdW5jaEN0bENvbW1hbmR9IHJlbW92ZWA7XG4gICAgICBhd2FpdCBleGVjKCdiYXNoJywgWyctYycsIHJlbW92ZUNtZF0pO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgbG9nLndhcm4oYENvdWxkIG5vdCByZW1vdmUgJHtzZXJ2aWNlUGF0dGVybn0gZGFlbW9ucywgY2Fycnlpbmcgb24gYW55d2F5IWApO1xuICAgIH1cbiAgfVxuICAvLyB3YWl0aW5nIHVudGlsIHRoZSBzaW11bGF0b3Igc2VydmljZSBoYXMgZGllZC5cbiAgdHJ5IHtcbiAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgIGxldCB7c3Rkb3V0fSA9IGF3YWl0IGV4ZWMoJ2Jhc2gnLCBbJy1jJyxcbiAgICAgICAgYHBzIC1lICB8IGdyZXAgbGF1bmNoZF9zaW0gfCBncmVwIC12IGJhc2ggfCBncmVwIC12IGdyZXAgfCBhd2sgeydwcmludCQxJ31gXSk7XG4gICAgICByZXR1cm4gc3Rkb3V0LnRyaW0oKS5sZW5ndGggPT09IDA7XG4gICAgfSwge3dhaXRNczogNTAwMCwgaW50ZXJ2YWxNczogNTAwfSk7XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGxvZy53YXJuKGBDb3VsZCBub3QgZW5kIGFsbCBzaW11bGF0b3IgZGFlbW9ucywgY2Fycnlpbmcgb24hYCk7XG4gIH1cbiAgbG9nLmRlYnVnKCdGaW5pc2hpbmcgZW5kaW5nIGFsbCBzaW11bGF0b3IgZGFlbW9ucycpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzaW1FeGlzdHMgKHVkaWQpIHtcbiAgLy8gc2VlIHRoZSBSRUFETUUgZm9yIGdpdGh1Yi5jb20vYXBwaXVtL25vZGUtc2ltY3RsIGZvciBleGFtcGxlIG91dHB1dCBvZiBnZXREZXZpY2VzKClcbiAgbGV0IGRldmljZXMgPSBhd2FpdCBnZXREZXZpY2VzKCk7XG5cbiAgZGV2aWNlcyA9IF8udG9QYWlycyhkZXZpY2VzKS5tYXAoKHBhaXIpID0+IHtcbiAgICByZXR1cm4gcGFpclsxXTtcbiAgfSkucmVkdWNlKChhLCBiKSA9PiB7XG4gICAgcmV0dXJuIGEuY29uY2F0KGIpO1xuICB9LCBbXSk7XG4gIHJldHVybiAhIV8uZmluZChkZXZpY2VzLCAoc2ltKSA9PiB7XG4gICAgcmV0dXJuIHNpbS51ZGlkID09PSB1ZGlkO1xuICB9KTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2FmZVJpbVJhZiAoZGVsUGF0aCwgdHJ5TnVtID0gMCkge1xuICB0cnkge1xuICAgIGF3YWl0IGZzLnJpbXJhZihkZWxQYXRoKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgaWYgKHRyeU51bSA8IDIwKSB7XG4gICAgICBpZiAoZXJyLm1lc3NhZ2UuaW5kZXhPZignRU5PVEVNUFRZJykgIT09IC0xKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUGF0aCAnJHtkZWxQYXRofScgd2FzIG5vdCBlbXB0eSBkdXJpbmcgZGVsZXRlOyByZXRyeWluZ2ApO1xuICAgICAgICByZXR1cm4gc2FmZVJpbVJhZihkZWxQYXRoLCB0cnlOdW0gKyAxKTtcbiAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UuaW5kZXhPZignRU5PRU5UJykgIT09IC0xKSB7XG4gICAgICAgIGxvZy5kZWJ1ZyhgUGF0aCAnJHtkZWxQYXRofScnIGRpZCBub3QgZXhpc3Qgd2hlbiB3ZSB0cmllZCB0byBkZWxldGUsIGlnbm9yaW5nYCk7XG4gICAgICAgIHJldHVybiBzYWZlUmltUmFmKGRlbFBhdGgsIHRyeU51bSArIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5cbmFzeW5jIGZ1bmN0aW9uIGluc3RhbGxTU0xDZXJ0IChwZW1UZXh0LCB1ZGlkKSB7XG4gIC8vIENoZWNrIHRoYXQgb3BlbnNzbCBpcyBpbnN0YWxsZWQgb24gdGhlIHBhdGhcbiAgdHJ5IHtcbiAgICBhd2FpdCBmcy53aGljaCgnb3BlbnNzbCcpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmRlYnVnKGBjdXN0b21TU0xDZXJ0IHJlcXVpcmVzIG9wZW5zc2wgdG8gYmUgYXZhaWxhYmxlIG9uIHBhdGhgKTtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhgQ29tbWFuZCAnb3BlbnNzbCcgbm90IGZvdW5kYCk7XG4gIH1cblxuICBsZXQgdGVtcEZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3RlbXAtc3NsLWNlcnQucGVtJyk7XG4gIGxldCBwYXRoVG9LZXljaGFpbiA9IG5ldyBTaW11bGF0b3IodWRpZCkuZ2V0RGlyKCk7XG4gIGF3YWl0IGZzLndyaXRlRmlsZSh0ZW1wRmlsZU5hbWUsIHBlbVRleHQpO1xuICB0cnkge1xuICAgIGF3YWl0IGZzLnN0YXQocGF0aFRvS2V5Y2hhaW4pO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmRlYnVnKGBDb3VsZCBub3QgaW5zdGFsbCBTU0wgY2VydGlmaWNhdGUuIE5vIHNpbXVsYXRvciB3aXRoIHVkaWQgJyR7dWRpZH0nYCk7XG4gICAgbG9nLmVycm9yQW5kVGhyb3coZSk7XG4gIH1cbiAgbGV0IGNlcnRpZmljYXRlID0gbmV3IENlcnRpZmljYXRlKHRlbXBGaWxlTmFtZSk7XG4gIGF3YWl0IGNlcnRpZmljYXRlLmFkZChwYXRoVG9LZXljaGFpbik7XG4gIGF3YWl0IGZzLnVubGluayh0ZW1wRmlsZU5hbWUpO1xuICByZXR1cm4gY2VydGlmaWNhdGU7XG59XG5cbmFzeW5jIGZ1bmN0aW9uIHVuaW5zdGFsbFNTTENlcnQgKHBlbVRleHQsIHVkaWQpIHtcbiAgdHJ5IHtcbiAgICBsZXQgdGVtcEZpbGVOYW1lID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3RlbXAtc3NsLWNlcnQucGVtJyk7XG4gICAgbGV0IHBhdGhUb0tleWNoYWluID0gcGF0aC5yZXNvbHZlKG5ldyBTaW11bGF0b3IodWRpZCkuZ2V0RGlyKCkpO1xuICAgIGF3YWl0IGZzLndyaXRlRmlsZSh0ZW1wRmlsZU5hbWUsIHBlbVRleHQpO1xuICAgIGxldCBjZXJ0aWZpY2F0ZSA9IG5ldyBDZXJ0aWZpY2F0ZSh0ZW1wRmlsZU5hbWUpO1xuICAgIGF3YWl0IGNlcnRpZmljYXRlLnJlbW92ZShwYXRoVG9LZXljaGFpbik7XG4gICAgYXdhaXQgZnMudW5saW5rKHRlbXBGaWxlTmFtZSk7XG4gICAgcmV0dXJuIGNlcnRpZmljYXRlO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nLmRlYnVnKGBDb3VsZCBub3QgdW5pbnN0YWxsIFNTTCBjZXJ0aWZpY2F0ZS4gTm8gc2ltdWxhdG9yIHdpdGggdWRpZCAnJHt1ZGlkfSdgKTtcbiAgICBsb2cuZXJyb3JBbmRUaHJvdyhlKTtcbiAgfVxufVxuXG5leHBvcnQgeyBraWxsQWxsU2ltdWxhdG9ycywgZW5kQWxsU2ltdWxhdG9yRGFlbW9ucywgc2FmZVJpbVJhZiwgc2ltRXhpc3RzLCBpbnN0YWxsU1NMQ2VydCwgdW5pbnN0YWxsU1NMQ2VydCB9O1xuIl0sInNvdXJjZVJvb3QiOiIuLi8uLiJ9 |
@@ -183,2 +183,3 @@ require('source-map-support').install(); | ||
return simProm.then(function (sim) { | ||
// eslint-disable-line promise/prefer-await-to-then | ||
return sim.stat(); | ||
@@ -562,2 +563,2 @@ }); | ||
}); | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdW5pdC9zaW11bGF0b3Itc3BlY3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O2dCQUU4QyxPQUFPOztrQ0FDekIsNkJBQTZCOzs7O2tDQUM3Qiw2QkFBNkI7Ozs7MEJBQ2pDLGFBQWE7O0lBQXpCLE1BQU07O29CQUNELE1BQU07Ozs7OEJBQ0ksa0JBQWtCOzs7O3FCQUMzQixPQUFPOzs7O2dDQUNELHNCQUFzQjs7d0JBQ2hDLFVBQVU7Ozs7MkJBQ04sY0FBYzs7OztBQUVoQyxrQkFBSyxNQUFNLEVBQUUsQ0FBQztBQUNkLGtCQUFLLEdBQUcsNkJBQWdCLENBQUM7O0FBRXpCLElBQU0sSUFBSSxHQUFHLDBCQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFcEMsUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFNO0FBQzFCLE1BQUksU0FBUyxZQUFBLENBQUM7QUFDZCxNQUFJLGNBQWMsWUFBQSxDQUFDOztBQUVuQixZQUFVLENBQUMsWUFBTTtBQUNmLGFBQVMsR0FBRyxtQkFBTSxJQUFJLDBCQUFPLENBQUM7QUFDOUIsa0JBQWMsR0FBRyxtQkFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2xELGtCQUFjLENBQUMsT0FBTyxDQUFDLHNCQUFFLE9BQU8sMkJBQVMsQ0FBQyxDQUFDO0dBQzVDLENBQUMsQ0FBQztBQUNILFdBQVMsQ0FBQyxZQUFNO0FBQ2QsYUFBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3BCLFVBQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7R0FDN0IsQ0FBQyxDQUFDOztBQUVILFVBQVEsQ0FBQyxjQUFjLEVBQUUsWUFBTTtBQUM3QixNQUFFLENBQUMsc0RBQXNELEVBQUU7VUFDckQsWUFBWSxFQUdaLEdBQUc7Ozs7QUFISCx3QkFBWSxHQUFHLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFDOztBQUNy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QUFDOzsrQ0FDekMsdUJBQWdCLEVBQUMsVUFBVSxFQUFFLG9CQUFvQixFQUFDLENBQUM7OztBQUFsRSxvQkFBTTs7QUFDVixvQkFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQzs7Ozs7OztPQUN6QyxDQUFDLENBQUM7QUFDSCxRQUFFLENBQUMsNkJBQTZCLEVBQUU7WUFFNUIsTUFBTTs7OztBQURWLHVCQUFTLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxzQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQzs7K0NBQ3pDLHVCQUFnQixFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUMsQ0FBQzs7O0FBQXRELG9CQUFNOztBQUNWLG9CQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDOzs7Ozs7O09BQ3pDLENBQUMsQ0FBQztLQUNKLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L3VuaXQvc2ltdWxhdG9yLXNwZWNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCB7IGdldFNpbXVsYXRvciwgZ2V0RGV2aWNlU3RyaW5nIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IFNpbXVsYXRvclhjb2RlNiBmcm9tICcuLi8uLi9saWIvc2ltdWxhdG9yLXhjb2RlLTYnO1xuaW1wb3J0IFNpbXVsYXRvclhjb2RlNyBmcm9tICcuLi8uLi9saWIvc2ltdWxhdG9yLXhjb2RlLTcnO1xuaW1wb3J0ICogYXMgc2ltY3RsIGZyb20gJ25vZGUtc2ltY3RsJztcbmltcG9ydCBjaGFpIGZyb20gJ2NoYWknO1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCB7IGRldmljZXMgfSBmcm9tICcuLi9hc3NldHMvZGV2aWNlTGlzdCc7XG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgeGNvZGUgZnJvbSAnYXBwaXVtLXhjb2RlJztcblxuY2hhaS5zaG91bGQoKTtcbmNoYWkudXNlKGNoYWlBc1Byb21pc2VkKTtcblxuY29uc3QgVURJRCA9IGRldmljZXNbJzcuMSddWzBdLnVkaWQ7XG5cbmRlc2NyaWJlKCdzaW11bGF0b3InLCAoKSA9PiB7XG4gIGxldCB4Y29kZU1vY2s7XG4gIGxldCBnZXREZXZpY2VzU3R1YjtcblxuICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICB4Y29kZU1vY2sgPSBzaW5vbi5tb2NrKHhjb2RlKTtcbiAgICBnZXREZXZpY2VzU3R1YiA9IHNpbm9uLnN0dWIoc2ltY3RsLCAnZ2V0RGV2aWNlcycpO1xuICAgIGdldERldmljZXNTdHViLnJldHVybnMoQi5yZXNvbHZlKGRldmljZXMpKTtcbiAgfSk7XG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgeGNvZGVNb2NrLnJlc3RvcmUoKTtcbiAgICBzaW1jdGwuZ2V0RGV2aWNlcy5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdnZXRTaW11bGF0b3InLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgYSBzaW11bGF0b3Igd2l0aCBkZWZhdWx0IHhjb2RlIHZlcnNpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgeGNvZGVWZXJzaW9uID0ge21ham9yOiA2LCB2ZXJzaW9uU3RyaW5nOiAnNi4wLjAnfTtcbiAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRWZXJzaW9uJykucmV0dXJucyhCLnJlc29sdmUoeGNvZGVWZXJzaW9uKSk7XG5cbiAgICAgIGxldCBzaW0gPSBhd2FpdCBnZXRTaW11bGF0b3IoVURJRCk7XG4gICAgICBzaW0ueGNvZGVWZXJzaW9uLnNob3VsZC5lcXVhbCh4Y29kZVZlcnNpb24pO1xuICAgICAgc2ltLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKFNpbXVsYXRvclhjb2RlNik7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGNyZWF0ZSBhbiB4Y29kZSA3IHNpbXVsYXRvciB3aXRoIHhjb2RlIHZlcnNpb24gNycsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCB4Y29kZVZlcnNpb24gPSB7bWFqb3I6IDcsIHZlcnNpb25TdHJpbmc6ICc3LjAuMCd9O1xuICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldFZlcnNpb24nKS5yZXR1cm5zKEIucmVzb2x2ZSh4Y29kZVZlcnNpb24pKTtcblxuICAgICAgbGV0IHNpbSA9IGF3YWl0IGdldFNpbXVsYXRvcihVRElEKTtcbiAgICAgIHNpbS54Y29kZVZlcnNpb24uc2hvdWxkLmVxdWFsKHhjb2RlVmVyc2lvbik7XG4gICAgICBzaW0uc2hvdWxkLmJlLmFuLmluc3RhbmNlb2YoU2ltdWxhdG9yWGNvZGU3KTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgeGNvZGUgdmVyc2lvbiBsZXNzIHRoYW4gNicsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCB4Y29kZVZlcnNpb24gPSB7bWFqb3I6IDUsIHZlcnNpb25TdHJpbmc6ICc1LjQuMCd9O1xuICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldFZlcnNpb24nKS5yZXR1cm5zKEIucmVzb2x2ZSh4Y29kZVZlcnNpb24pKTtcblxuICAgICAgYXdhaXQgZ2V0U2ltdWxhdG9yKFVESUQpLnNob3VsZC5ldmVudHVhbGx5LmJlLnJlamVjdGVkV2l0aCgndmVyc2lvbicpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCB0aHJvdyBhbiBlcnJvciBpZiB4Y29kZSB2ZXJzaW9uIGFib3ZlIDgnLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgeGNvZGVWZXJzaW9uID0ge21ham9yOiA5LCB2ZXJzaW9uU3RyaW5nOiAnOS4wLjAnfTtcbiAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRWZXJzaW9uJykucmV0dXJucyhCLnJlc29sdmUoeGNvZGVWZXJzaW9uKSk7XG5cbiAgICAgIGF3YWl0IGdldFNpbXVsYXRvcihVRElEKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoJ25vdCB5ZXQnKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgdWRpZCBkb2VzIG5vdCBleGlzdCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGdldFNpbXVsYXRvcignMTIzJykuc2hvdWxkLmJlLnJlamVjdGVkV2l0aCgnTm8gc2ltIGZvdW5kJyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIGxpc3Qgc3RhdHMgZm9yIHNpbScsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCB4Y29kZVZlcnNpb24gPSB7bWFqb3I6IDYsIHZlcnNpb25TdHJpbmc6ICc2LjAuMCd9O1xuICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldFZlcnNpb24nKS5hdExlYXN0KDEpLnJldHVybnMoQi5yZXNvbHZlKHhjb2RlVmVyc2lvbikpO1xuXG4gICAgICBsZXQgc2ltcyA9IFtcbiAgICAgICAgZ2V0U2ltdWxhdG9yKCdGMzM3ODNCMi05RUU5LTRBOTktODY2RS1FMTI2QURCQUQ0MTAnKSxcbiAgICAgICAgZ2V0U2ltdWxhdG9yKCdERkJDMjk3MC05NDU1LTRGRDktQkI2Mi05RTRBRTVBQTY5NTQnKSxcbiAgICAgIF07XG5cbiAgICAgIGxldCBzdGF0cyA9IHNpbXMubWFwKChzaW1Qcm9tKSA9PiB7XG4gICAgICAgIHJldHVybiBzaW1Qcm9tLnRoZW4oKHNpbSkgPT4ge1xuICAgICAgICAgIHJldHVybiBzaW0uc3RhdCgpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuXG4gICAgICBzdGF0cyA9IGF3YWl0IEIuYWxsKHN0YXRzKTtcblxuICAgICAgc3RhdHNbMF0uc3RhdGUuc2hvdWxkLmVxdWFsKCdTaHV0ZG93bicpO1xuICAgICAgc3RhdHNbMF0ubmFtZS5zaG91bGQuZXF1YWwoJ1Jlc2l6YWJsZSBpUGhvbmUnKTtcbiAgICAgIHN0YXRzWzFdLnN0YXRlLnNob3VsZC5lcXVhbCgnU2h1dGRvd24nKTtcbiAgICAgIHN0YXRzWzFdLm5hbWUuc2hvdWxkLmVxdWFsKCdSZXNpemFibGUgaVBhZCcpO1xuICAgIH0pO1xuICB9KTtcblxuXG4gIGRlc2NyaWJlKCdnZXREZXZpY2VTdHJpbmcnLCAoKSA9PiB7XG4gICAgZGVzY3JpYmUoJ1hjb2RlIDYnLCAoKSA9PiB7XG4gICAgICBsZXQgeGNvZGVWZXJzaW9uID0ge21ham9yOiA2LCB2ZXJzaW9uU3RyaW5nOiAnNi4wLjAnfTtcblxuICAgICAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRWZXJzaW9uJykucmV0dXJucyhCLnJlc29sdmUoeGNvZGVWZXJzaW9uKSk7XG4gICAgICB9KTtcblxuICAgICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvcnJlY3QgZGV2aWNlIGZvciBpT1MgOCsnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRNYXhJT1NTREsnKS5yZXR1cm5zKEIucmVzb2x2ZSg4LjQpKTtcbiAgICAgICAgbGV0IGRldmljZSA9IGF3YWl0IGdldERldmljZVN0cmluZygpO1xuICAgICAgICBkZXZpY2Uuc2hvdWxkLmVxdWFsKCdpUGhvbmUgNiAoOC40IFNpbXVsYXRvciknKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvcnJlY3QgZGV2aWNlIGZvciBpT1MgOCsgd2hlbiBwbGF0Zm9ybSB2ZXJzaW9uIHBhc3NlZCBpbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbGV0IGRldmljZSA9IGF3YWl0IGdldERldmljZVN0cmluZyh7cGxhdGZvcm1WZXJzaW9uOiAnOC4xJ30pO1xuICAgICAgICBkZXZpY2Uuc2hvdWxkLmVxdWFsKCdpUGhvbmUgNiAoOC4xIFNpbXVsYXRvciknKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvcnJlY3QgZGV2aWNlIGZvciBpT1MgNysnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRNYXhJT1NTREsnKS5yZXR1cm5zKEIucmVzb2x2ZSg3LjEpKTtcbiAgICAgICAgbGV0IGRldmljZSA9IGF3YWl0IGdldERldmljZVN0cmluZygpO1xuICAgICAgICBkZXZpY2Uuc2hvdWxkLmVxdWFsKCdpUGhvbmUgNXMgKDcuMSBTaW11bGF0b3IpJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBjb3JyZWN0IGRldmljZSBmb3IgaU9TIDcrIHdoZW4gcGxhdGZvcm0gdmVyc2lvbiBwYXNzZWQgaW4nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBnZXREZXZpY2VTdHJpbmcoe3BsYXRmb3JtVmVyc2lvbjogJzcuMSd9KTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnaVBob25lIDVzICg3LjEgU2ltdWxhdG9yKScpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHBhc3MgdGhyb3VnaCBkZXZpY2UgbmFtZSB3aGVuIHBhc3NlZCB3aXRoID0nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRNYXhJT1NTREsnKS5yZXR1cm5zKEIucmVzb2x2ZSg4LjQpKTtcbiAgICAgICAgbGV0IGRldmljZSA9IGF3YWl0IGdldERldmljZVN0cmluZyh7ZGV2aWNlTmFtZTogJz1mYW5jeSBkZXZpY2UnfSk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2ZhbmN5IGRldmljZScpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGFkZCBhIGRldmljZSBuYW1lIHdoZW4gcGFzc2VkIHdpdGhvdXQgPScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldE1heElPU1NESycpLnJldHVybnMoQi5yZXNvbHZlKDguNCkpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKHtkZXZpY2VOYW1lOiAnZmFuY3kgZGV2aWNlJ30pO1xuICAgICAgICBkZXZpY2Uuc2hvdWxkLmVxdWFsKCdmYW5jeSBkZXZpY2UgKDguNCBTaW11bGF0b3IpJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIHN0cmluZyBwbGF0Zm9ybSB2ZXJzaW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0TWF4SU9TU0RLJykucmV0dXJucyhCLnJlc29sdmUoJzguNCcpKTtcbiAgICAgICAgbGV0IGRldmljZSA9IGF3YWl0IGdldERldmljZVN0cmluZygpO1xuICAgICAgICBkZXZpY2Uuc2hvdWxkLmVxdWFsKCdpUGhvbmUgNiAoOC40IFNpbXVsYXRvciknKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBzdHJpcCBcIiBTaW11bGF0b3JcIiB3aGVuIG5vdCBuZWNlc3NhcnknLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRNYXhJT1NTREsnKS5yZXR1cm5zKEIucmVzb2x2ZSgnOC40JykpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKHtkZXZpY2VOYW1lOiBcImlQaG9uZSA2IFNpbXVsYXRvclwifSk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA2ICg4LjQgU2ltdWxhdG9yKScpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGhhbmRsZSBiYXJlIFwiaVBob25lXCInLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRNYXhJT1NTREsnKS5yZXR1cm5zKEIucmVzb2x2ZSgnOC40JykpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKHtkZXZpY2VOYW1lOiBcImlQaG9uZVwifSk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA2ICg4LjQgU2ltdWxhdG9yKScpO1xuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICBkZXNjcmliZSgnWGNvZGUgNycsICgpID0+IHtcbiAgICAgIGxldCB4Y29kZVZlcnNpb24gPSB7bWFqb3I6IDcsIHZlcnNpb25TdHJpbmc6ICc3LjAuMCd9O1xuXG4gICAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldFZlcnNpb24nKS5yZXR1cm5zKEIucmVzb2x2ZSh4Y29kZVZlcnNpb24pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGdldCB0aGUgY29ycmVjdCBkZXZpY2UgZm9yIGlPUyA4KycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldE1heElPU1NESycpLnJldHVybnMoQi5yZXNvbHZlKDguNCkpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKCk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA2ICg4LjQpJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBjb3JyZWN0IGRldmljZSBmb3IgaU9TIDgrIHdoZW4gcGxhdGZvcm0gdmVyc2lvbiBwYXNzZWQgaW4nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBTaW11bGF0b3JYY29kZTcuZ2V0RGV2aWNlU3RyaW5nKHtwbGF0Zm9ybVZlcnNpb246ICc4LjEnfSk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA2ICg4LjEpJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBjb3JyZWN0IGRldmljZSBmb3IgaU9TIDkrJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0TWF4SU9TU0RLJykucmV0dXJucyhCLnJlc29sdmUoOSkpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKCk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA2ICg5LjApIFsnKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvcnJlY3QgZGV2aWNlIGZvciBpT1MgOSsgd2hlbiBwbGF0Zm9ybSB2ZXJzaW9uIHBhc3NlZCBpbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbGV0IGRldmljZSA9IGF3YWl0IGdldERldmljZVN0cmluZyh7cGxhdGZvcm1WZXJzaW9uOiAnOS4wJ30pO1xuICAgICAgICBkZXZpY2Uuc2hvdWxkLmVxdWFsKCdpUGhvbmUgNiAoOS4wKSBbJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgcGFzcyB0aHJvdWdoIGRldmljZSBuYW1lIHdoZW4gcGFzc2VkIHdpdGggPScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldE1heElPU1NESycpLnJldHVybnMoQi5yZXNvbHZlKDkuMCkpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKHtkZXZpY2VOYW1lOiAnPWZhbmN5IGRldmljZSd9KTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnZmFuY3kgZGV2aWNlJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgYWRkIGEgZGV2aWNlIG5hbWUgd2hlbiBwYXNzZWQgd2l0aG91dCA9JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0TWF4SU9TU0RLJykucmV0dXJucyhCLnJlc29sdmUoOS4wKSk7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBnZXREZXZpY2VTdHJpbmcoe2RldmljZU5hbWU6ICdmYW5jeSBkZXZpY2UnfSk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2ZhbmN5IGRldmljZSAoOS4wKScpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHN0cmlwIFwiIFNpbXVsYXRvclwiIHdoZW4gbm90IG5lY2Vzc2FyeScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldE1heElPU1NESycpLnJldHVybnMoQi5yZXNvbHZlKCc5LjAnKSk7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBnZXREZXZpY2VTdHJpbmcoe2RldmljZU5hbWU6IFwiaVBob25lIDYgU2ltdWxhdG9yXCJ9KTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnaVBob25lIDYgKDkuMCkgWycpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGhhbmRsZSBiYXJlIFwiaVBob25lXCInLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRNYXhJT1NTREsnKS5yZXR1cm5zKEIucmVzb2x2ZSgnOS4wJykpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKHtkZXZpY2VOYW1lOiBcImlQaG9uZVwifSk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA2ICg5LjApIFsnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9 | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdW5pdC9zaW11bGF0b3Itc3BlY3MuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O2dCQUU4QyxPQUFPOztrQ0FDekIsNkJBQTZCOzs7O2tDQUM3Qiw2QkFBNkI7Ozs7MEJBQ2pDLGFBQWE7O0lBQXpCLE1BQU07O29CQUNELE1BQU07Ozs7OEJBQ0ksa0JBQWtCOzs7O3FCQUMzQixPQUFPOzs7O2dDQUNELHNCQUFzQjs7d0JBQ2hDLFVBQVU7Ozs7MkJBQ04sY0FBYzs7OztBQUVoQyxrQkFBSyxNQUFNLEVBQUUsQ0FBQztBQUNkLGtCQUFLLEdBQUcsNkJBQWdCLENBQUM7O0FBRXpCLElBQU0sSUFBSSxHQUFHLDBCQUFRLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQzs7QUFFcEMsUUFBUSxDQUFDLFdBQVcsRUFBRSxZQUFNO0FBQzFCLE1BQUksU0FBUyxZQUFBLENBQUM7QUFDZCxNQUFJLGNBQWMsWUFBQSxDQUFDOztBQUVuQixZQUFVLENBQUMsWUFBTTtBQUNmLGFBQVMsR0FBRyxtQkFBTSxJQUFJLDBCQUFPLENBQUM7QUFDOUIsa0JBQWMsR0FBRyxtQkFBTSxJQUFJLENBQUMsTUFBTSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQ2xELGtCQUFjLENBQUMsT0FBTyxDQUFDLHNCQUFFLE9BQU8sMkJBQVMsQ0FBQyxDQUFDO0dBQzVDLENBQUMsQ0FBQztBQUNILFdBQVMsQ0FBQyxZQUFNO0FBQ2QsYUFBUyxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3BCLFVBQU0sQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7R0FDN0IsQ0FBQyxDQUFDOztBQUVILFVBQVEsQ0FBQyxjQUFjLEVBQUUsWUFBTTtBQUM3QixNQUFFLENBQUMsc0RBQXNELEVBQUU7VUFDckQsWUFBWSxFQUdaLEdBQUc7Ozs7QUFISCx3QkFBWSxHQUFHLEVBQUMsS0FBSyxFQUFFLENBQUMsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFDOztBQUNy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Q0FBQzs7K0NBQ3pDLHVCQUFnQixFQUFDLFVBQVUsRUFBRSxvQkFBb0IsRUFBQyxDQUFDOzs7QUFBbEUsb0JBQU07O0FBQ1Ysb0JBQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7Ozs7Ozs7T0FDekMsQ0FBQyxDQUFDO0FBQ0gsUUFBRSxDQUFDLDZCQUE2QixFQUFFO1lBRTVCLE1BQU07Ozs7QUFEVix1QkFBUyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsc0JBQUUsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7OytDQUN6Qyx1QkFBZ0IsRUFBQyxVQUFVLEVBQUUsUUFBUSxFQUFDLENBQUM7OztBQUF0RCxvQkFBTTs7QUFDVixvQkFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsQ0FBQzs7Ozs7OztPQUN6QyxDQUFDLENBQUM7S0FDSixDQUFDLENBQUM7R0FDSixDQUFDLENBQUM7Q0FDSixDQUFDLENBQUMiLCJmaWxlIjoidGVzdC91bml0L3NpbXVsYXRvci1zcGVjcy5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHRyYW5zcGlsZTptb2NoYVxuXG5pbXBvcnQgeyBnZXRTaW11bGF0b3IsIGdldERldmljZVN0cmluZyB9IGZyb20gJy4uLy4uJztcbmltcG9ydCBTaW11bGF0b3JYY29kZTYgZnJvbSAnLi4vLi4vbGliL3NpbXVsYXRvci14Y29kZS02JztcbmltcG9ydCBTaW11bGF0b3JYY29kZTcgZnJvbSAnLi4vLi4vbGliL3NpbXVsYXRvci14Y29kZS03JztcbmltcG9ydCAqIGFzIHNpbWN0bCBmcm9tICdub2RlLXNpbWN0bCc7XG5pbXBvcnQgY2hhaSBmcm9tICdjaGFpJztcbmltcG9ydCBjaGFpQXNQcm9taXNlZCBmcm9tICdjaGFpLWFzLXByb21pc2VkJztcbmltcG9ydCBzaW5vbiBmcm9tICdzaW5vbic7XG5pbXBvcnQgeyBkZXZpY2VzIH0gZnJvbSAnLi4vYXNzZXRzL2RldmljZUxpc3QnO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IHhjb2RlIGZyb20gJ2FwcGl1bS14Y29kZSc7XG5cbmNoYWkuc2hvdWxkKCk7XG5jaGFpLnVzZShjaGFpQXNQcm9taXNlZCk7XG5cbmNvbnN0IFVESUQgPSBkZXZpY2VzWyc3LjEnXVswXS51ZGlkO1xuXG5kZXNjcmliZSgnc2ltdWxhdG9yJywgKCkgPT4ge1xuICBsZXQgeGNvZGVNb2NrO1xuICBsZXQgZ2V0RGV2aWNlc1N0dWI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgeGNvZGVNb2NrID0gc2lub24ubW9jayh4Y29kZSk7XG4gICAgZ2V0RGV2aWNlc1N0dWIgPSBzaW5vbi5zdHViKHNpbWN0bCwgJ2dldERldmljZXMnKTtcbiAgICBnZXREZXZpY2VzU3R1Yi5yZXR1cm5zKEIucmVzb2x2ZShkZXZpY2VzKSk7XG4gIH0pO1xuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIHhjb2RlTW9jay5yZXN0b3JlKCk7XG4gICAgc2ltY3RsLmdldERldmljZXMucmVzdG9yZSgpO1xuICB9KTtcblxuICBkZXNjcmliZSgnZ2V0U2ltdWxhdG9yJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY3JlYXRlIGEgc2ltdWxhdG9yIHdpdGggZGVmYXVsdCB4Y29kZSB2ZXJzaW9uJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHhjb2RlVmVyc2lvbiA9IHttYWpvcjogNiwgdmVyc2lvblN0cmluZzogJzYuMC4wJ307XG4gICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0VmVyc2lvbicpLnJldHVybnMoQi5yZXNvbHZlKHhjb2RlVmVyc2lvbikpO1xuXG4gICAgICBsZXQgc2ltID0gYXdhaXQgZ2V0U2ltdWxhdG9yKFVESUQpO1xuICAgICAgc2ltLnhjb2RlVmVyc2lvbi5zaG91bGQuZXF1YWwoeGNvZGVWZXJzaW9uKTtcbiAgICAgIHNpbS5zaG91bGQuYmUuYW4uaW5zdGFuY2VvZihTaW11bGF0b3JYY29kZTYpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBjcmVhdGUgYW4geGNvZGUgNyBzaW11bGF0b3Igd2l0aCB4Y29kZSB2ZXJzaW9uIDcnLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgeGNvZGVWZXJzaW9uID0ge21ham9yOiA3LCB2ZXJzaW9uU3RyaW5nOiAnNy4wLjAnfTtcbiAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRWZXJzaW9uJykucmV0dXJucyhCLnJlc29sdmUoeGNvZGVWZXJzaW9uKSk7XG5cbiAgICAgIGxldCBzaW0gPSBhd2FpdCBnZXRTaW11bGF0b3IoVURJRCk7XG4gICAgICBzaW0ueGNvZGVWZXJzaW9uLnNob3VsZC5lcXVhbCh4Y29kZVZlcnNpb24pO1xuICAgICAgc2ltLnNob3VsZC5iZS5hbi5pbnN0YW5jZW9mKFNpbXVsYXRvclhjb2RlNyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHhjb2RlIHZlcnNpb24gbGVzcyB0aGFuIDYnLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgeGNvZGVWZXJzaW9uID0ge21ham9yOiA1LCB2ZXJzaW9uU3RyaW5nOiAnNS40LjAnfTtcbiAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRWZXJzaW9uJykucmV0dXJucyhCLnJlc29sdmUoeGNvZGVWZXJzaW9uKSk7XG5cbiAgICAgIGF3YWl0IGdldFNpbXVsYXRvcihVRElEKS5zaG91bGQuZXZlbnR1YWxseS5iZS5yZWplY3RlZFdpdGgoJ3ZlcnNpb24nKTtcbiAgICB9KTtcblxuICAgIGl0KCdzaG91bGQgdGhyb3cgYW4gZXJyb3IgaWYgeGNvZGUgdmVyc2lvbiBhYm92ZSA4JywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IHhjb2RlVmVyc2lvbiA9IHttYWpvcjogOSwgdmVyc2lvblN0cmluZzogJzkuMC4wJ307XG4gICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0VmVyc2lvbicpLnJldHVybnMoQi5yZXNvbHZlKHhjb2RlVmVyc2lvbikpO1xuXG4gICAgICBhd2FpdCBnZXRTaW11bGF0b3IoVURJRCkuc2hvdWxkLmV2ZW50dWFsbHkuYmUucmVqZWN0ZWRXaXRoKCdub3QgeWV0Jyk7XG4gICAgfSk7XG5cbiAgICBpdCgnc2hvdWxkIHRocm93IGFuIGVycm9yIGlmIHVkaWQgZG9lcyBub3QgZXhpc3QnLCBhc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBnZXRTaW11bGF0b3IoJzEyMycpLnNob3VsZC5iZS5yZWplY3RlZFdpdGgoJ05vIHNpbSBmb3VuZCcpO1xuICAgIH0pO1xuXG4gICAgaXQoJ3Nob3VsZCBsaXN0IHN0YXRzIGZvciBzaW0nLCBhc3luYyAoKSA9PiB7XG4gICAgICBsZXQgeGNvZGVWZXJzaW9uID0ge21ham9yOiA2LCB2ZXJzaW9uU3RyaW5nOiAnNi4wLjAnfTtcbiAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRWZXJzaW9uJykuYXRMZWFzdCgxKS5yZXR1cm5zKEIucmVzb2x2ZSh4Y29kZVZlcnNpb24pKTtcblxuICAgICAgbGV0IHNpbXMgPSBbXG4gICAgICAgIGdldFNpbXVsYXRvcignRjMzNzgzQjItOUVFOS00QTk5LTg2NkUtRTEyNkFEQkFENDEwJyksXG4gICAgICAgIGdldFNpbXVsYXRvcignREZCQzI5NzAtOTQ1NS00RkQ5LUJCNjItOUU0QUU1QUE2OTU0JyksXG4gICAgICBdO1xuXG4gICAgICBsZXQgc3RhdHMgPSBzaW1zLm1hcCgoc2ltUHJvbSkgPT4ge1xuICAgICAgICByZXR1cm4gc2ltUHJvbS50aGVuKChzaW0pID0+IHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBwcm9taXNlL3ByZWZlci1hd2FpdC10by10aGVuXG4gICAgICAgICAgcmV0dXJuIHNpbS5zdGF0KCk7XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHN0YXRzID0gYXdhaXQgQi5hbGwoc3RhdHMpO1xuXG4gICAgICBzdGF0c1swXS5zdGF0ZS5zaG91bGQuZXF1YWwoJ1NodXRkb3duJyk7XG4gICAgICBzdGF0c1swXS5uYW1lLnNob3VsZC5lcXVhbCgnUmVzaXphYmxlIGlQaG9uZScpO1xuICAgICAgc3RhdHNbMV0uc3RhdGUuc2hvdWxkLmVxdWFsKCdTaHV0ZG93bicpO1xuICAgICAgc3RhdHNbMV0ubmFtZS5zaG91bGQuZXF1YWwoJ1Jlc2l6YWJsZSBpUGFkJyk7XG4gICAgfSk7XG4gIH0pO1xuXG5cbiAgZGVzY3JpYmUoJ2dldERldmljZVN0cmluZycsICgpID0+IHtcbiAgICBkZXNjcmliZSgnWGNvZGUgNicsICgpID0+IHtcbiAgICAgIGxldCB4Y29kZVZlcnNpb24gPSB7bWFqb3I6IDYsIHZlcnNpb25TdHJpbmc6ICc2LjAuMCd9O1xuXG4gICAgICBiZWZvcmVFYWNoKCgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldFZlcnNpb24nKS5yZXR1cm5zKEIucmVzb2x2ZSh4Y29kZVZlcnNpb24pKTtcbiAgICAgIH0pO1xuXG4gICAgICBpdCgnc2hvdWxkIGdldCB0aGUgY29ycmVjdCBkZXZpY2UgZm9yIGlPUyA4KycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldE1heElPU1NESycpLnJldHVybnMoQi5yZXNvbHZlKDguNCkpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKCk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA2ICg4LjQgU2ltdWxhdG9yKScpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGdldCB0aGUgY29ycmVjdCBkZXZpY2UgZm9yIGlPUyA4KyB3aGVuIHBsYXRmb3JtIHZlcnNpb24gcGFzc2VkIGluJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKHtwbGF0Zm9ybVZlcnNpb246ICc4LjEnfSk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA2ICg4LjEgU2ltdWxhdG9yKScpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGdldCB0aGUgY29ycmVjdCBkZXZpY2UgZm9yIGlPUyA3KycsIGFzeW5jICgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldE1heElPU1NESycpLnJldHVybnMoQi5yZXNvbHZlKDcuMSkpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKCk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA1cyAoNy4xIFNpbXVsYXRvciknKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvcnJlY3QgZGV2aWNlIGZvciBpT1MgNysgd2hlbiBwbGF0Zm9ybSB2ZXJzaW9uIHBhc3NlZCBpbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbGV0IGRldmljZSA9IGF3YWl0IGdldERldmljZVN0cmluZyh7cGxhdGZvcm1WZXJzaW9uOiAnNy4xJ30pO1xuICAgICAgICBkZXZpY2Uuc2hvdWxkLmVxdWFsKCdpUGhvbmUgNXMgKDcuMSBTaW11bGF0b3IpJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgcGFzcyB0aHJvdWdoIGRldmljZSBuYW1lIHdoZW4gcGFzc2VkIHdpdGggPScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldE1heElPU1NESycpLnJldHVybnMoQi5yZXNvbHZlKDguNCkpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKHtkZXZpY2VOYW1lOiAnPWZhbmN5IGRldmljZSd9KTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnZmFuY3kgZGV2aWNlJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgYWRkIGEgZGV2aWNlIG5hbWUgd2hlbiBwYXNzZWQgd2l0aG91dCA9JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0TWF4SU9TU0RLJykucmV0dXJucyhCLnJlc29sdmUoOC40KSk7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBnZXREZXZpY2VTdHJpbmcoe2RldmljZU5hbWU6ICdmYW5jeSBkZXZpY2UnfSk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2ZhbmN5IGRldmljZSAoOC40IFNpbXVsYXRvciknKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBoYW5kbGUgc3RyaW5nIHBsYXRmb3JtIHZlcnNpb24nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRNYXhJT1NTREsnKS5yZXR1cm5zKEIucmVzb2x2ZSgnOC40JykpO1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKCk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA2ICg4LjQgU2ltdWxhdG9yKScpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIHN0cmlwIFwiIFNpbXVsYXRvclwiIHdoZW4gbm90IG5lY2Vzc2FyeScsIGFzeW5jICgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldE1heElPU1NESycpLnJldHVybnMoQi5yZXNvbHZlKCc4LjQnKSk7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBnZXREZXZpY2VTdHJpbmcoe2RldmljZU5hbWU6IFwiaVBob25lIDYgU2ltdWxhdG9yXCJ9KTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnaVBob25lIDYgKDguNCBTaW11bGF0b3IpJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGJhcmUgXCJpUGhvbmVcIicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldE1heElPU1NESycpLnJldHVybnMoQi5yZXNvbHZlKCc4LjQnKSk7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBnZXREZXZpY2VTdHJpbmcoe2RldmljZU5hbWU6IFwiaVBob25lXCJ9KTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnaVBob25lIDYgKDguNCBTaW11bGF0b3IpJyk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIGRlc2NyaWJlKCdYY29kZSA3JywgKCkgPT4ge1xuICAgICAgbGV0IHhjb2RlVmVyc2lvbiA9IHttYWpvcjogNywgdmVyc2lvblN0cmluZzogJzcuMC4wJ307XG5cbiAgICAgIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0VmVyc2lvbicpLnJldHVybnMoQi5yZXNvbHZlKHhjb2RlVmVyc2lvbikpO1xuICAgICAgfSk7XG5cbiAgICAgIGl0KCdzaG91bGQgZ2V0IHRoZSBjb3JyZWN0IGRldmljZSBmb3IgaU9TIDgrJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0TWF4SU9TU0RLJykucmV0dXJucyhCLnJlc29sdmUoOC40KSk7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBnZXREZXZpY2VTdHJpbmcoKTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnaVBob25lIDYgKDguNCknKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvcnJlY3QgZGV2aWNlIGZvciBpT1MgOCsgd2hlbiBwbGF0Zm9ybSB2ZXJzaW9uIHBhc3NlZCBpbicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgbGV0IGRldmljZSA9IGF3YWl0IFNpbXVsYXRvclhjb2RlNy5nZXREZXZpY2VTdHJpbmcoe3BsYXRmb3JtVmVyc2lvbjogJzguMSd9KTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnaVBob25lIDYgKDguMSknKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBnZXQgdGhlIGNvcnJlY3QgZGV2aWNlIGZvciBpT1MgOSsnLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRNYXhJT1NTREsnKS5yZXR1cm5zKEIucmVzb2x2ZSg5KSk7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBnZXREZXZpY2VTdHJpbmcoKTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnaVBob25lIDYgKDkuMCkgWycpO1xuICAgICAgfSk7XG4gICAgICBpdCgnc2hvdWxkIGdldCB0aGUgY29ycmVjdCBkZXZpY2UgZm9yIGlPUyA5KyB3aGVuIHBsYXRmb3JtIHZlcnNpb24gcGFzc2VkIGluJywgYXN5bmMgKCkgPT4ge1xuICAgICAgICBsZXQgZGV2aWNlID0gYXdhaXQgZ2V0RGV2aWNlU3RyaW5nKHtwbGF0Zm9ybVZlcnNpb246ICc5LjAnfSk7XG4gICAgICAgIGRldmljZS5zaG91bGQuZXF1YWwoJ2lQaG9uZSA2ICg5LjApIFsnKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBwYXNzIHRocm91Z2ggZGV2aWNlIG5hbWUgd2hlbiBwYXNzZWQgd2l0aCA9JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0TWF4SU9TU0RLJykucmV0dXJucyhCLnJlc29sdmUoOS4wKSk7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBnZXREZXZpY2VTdHJpbmcoe2RldmljZU5hbWU6ICc9ZmFuY3kgZGV2aWNlJ30pO1xuICAgICAgICBkZXZpY2Uuc2hvdWxkLmVxdWFsKCdmYW5jeSBkZXZpY2UnKTtcbiAgICAgIH0pO1xuICAgICAgaXQoJ3Nob3VsZCBhZGQgYSBkZXZpY2UgbmFtZSB3aGVuIHBhc3NlZCB3aXRob3V0ID0nLCBhc3luYyAoKSA9PiB7XG4gICAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRNYXhJT1NTREsnKS5yZXR1cm5zKEIucmVzb2x2ZSg5LjApKTtcbiAgICAgICAgbGV0IGRldmljZSA9IGF3YWl0IGdldERldmljZVN0cmluZyh7ZGV2aWNlTmFtZTogJ2ZhbmN5IGRldmljZSd9KTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnZmFuY3kgZGV2aWNlICg5LjApJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgc3RyaXAgXCIgU2ltdWxhdG9yXCIgd2hlbiBub3QgbmVjZXNzYXJ5JywgYXN5bmMgKCkgPT4ge1xuICAgICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0TWF4SU9TU0RLJykucmV0dXJucyhCLnJlc29sdmUoJzkuMCcpKTtcbiAgICAgICAgbGV0IGRldmljZSA9IGF3YWl0IGdldERldmljZVN0cmluZyh7ZGV2aWNlTmFtZTogXCJpUGhvbmUgNiBTaW11bGF0b3JcIn0pO1xuICAgICAgICBkZXZpY2Uuc2hvdWxkLmVxdWFsKCdpUGhvbmUgNiAoOS4wKSBbJyk7XG4gICAgICB9KTtcbiAgICAgIGl0KCdzaG91bGQgaGFuZGxlIGJhcmUgXCJpUGhvbmVcIicsIGFzeW5jICgpID0+IHtcbiAgICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldE1heElPU1NESycpLnJldHVybnMoQi5yZXNvbHZlKCc5LjAnKSk7XG4gICAgICAgIGxldCBkZXZpY2UgPSBhd2FpdCBnZXREZXZpY2VTdHJpbmcoe2RldmljZU5hbWU6IFwiaVBob25lXCJ9KTtcbiAgICAgICAgZGV2aWNlLnNob3VsZC5lcXVhbCgnaVBob25lIDYgKDkuMCkgWycpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0= |
@@ -47,4 +47,15 @@ require('source-map-support').install(); | ||
var _libSimulatorXcode6 = require('../../lib/simulator-xcode-6'); | ||
var _libSimulatorXcode62 = _interopRequireDefault(_libSimulatorXcode6); | ||
var _appiumSupport = require('appium-support'); | ||
var _path = require('path'); | ||
var _path2 = _interopRequireDefault(_path); | ||
_chai2['default'].should(); | ||
_chai2['default'].use(_chaiAsPromised2['default']); | ||
var expect = _chai2['default'].expect; | ||
@@ -66,2 +77,4 @@ var XCODE_VERSION_7 = { | ||
var assetsDir = process.cwd() + '/test/assets'; | ||
describe('util', function () { | ||
@@ -304,2 +317,100 @@ var execStub = undefined; | ||
}); | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdW5pdC91dGlscy1zcGVjcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztvQkFFaUIsTUFBTTs7Ozs4QkFDSSxrQkFBa0I7Ozs7cUJBQzNCLE9BQU87Ozs7d0JBQ1gsVUFBVTs7Ozs0QkFDSyxjQUFjOztJQUEvQixXQUFXOzsyQkFDTCxjQUFjOzs7OzBCQUNKLGFBQWE7O0lBQTdCLFVBQVU7O2dCQUMrQyxPQUFPOztnQ0FDcEQsc0JBQXNCOztBQUc5QyxrQkFBSyxNQUFNLEVBQUUsQ0FBQztBQUNkLGtCQUFLLEdBQUcsNkJBQWdCLENBQUM7O0FBRXpCLElBQU0sZUFBZSxHQUFHO0FBQ3RCLGVBQWEsRUFBRSxPQUFPO0FBQ3RCLGNBQVksRUFBRSxHQUFHO0FBQ2pCLE9BQUssRUFBRSxDQUFDO0FBQ1IsT0FBSyxFQUFFLENBQUM7QUFDUixPQUFLLEVBQUUsQ0FBQztDQUNULENBQUM7QUFDRixJQUFNLGVBQWUsR0FBRztBQUN0QixlQUFhLEVBQUUsT0FBTztBQUN0QixjQUFZLEVBQUUsR0FBRztBQUNqQixPQUFLLEVBQUUsQ0FBQztBQUNSLE9BQUssRUFBRSxDQUFDO0FBQ1IsT0FBSyxFQUFFLENBQUM7Q0FDVCxDQUFDOztBQUVGLFFBQVEsQ0FBQyxNQUFNLEVBQUUsWUFBTTtBQUNyQixNQUFJLFFBQVEsWUFBQSxDQUFDO0FBQ2IsTUFBSSxTQUFTLFlBQUEsQ0FBQztBQUNkLE1BQUksY0FBYyxZQUFBLENBQUM7O0FBRW5CLFlBQVUsQ0FBQyxZQUFNO0FBQ2YsWUFBUSxHQUFHLG1CQUFNLElBQUksQ0FBQyxXQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7QUFDM0MsYUFBUyxHQUFHLG1CQUFNLElBQUksMEJBQU8sQ0FBQztBQUM5QixrQkFBYyxHQUFHLG1CQUFNLElBQUksQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7QUFDdEQsa0JBQWMsQ0FBQyxPQUFPLENBQUMsc0JBQUUsT0FBTywyQkFBUyxDQUFDLENBQUM7R0FD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LHFCQUFTLEdBQUcsRUFBRTs7QUFDbEIscUJBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQVUsc0NBQXNDLENBQUMsQ0FBQyxDQUFDO0FBQ2xFLHFCQUFTLENBQUMsSUFBSSxDQUFDLGlCQUFVLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDbEMscUJBQVMsQ0FBQyxJQUFJLENBQUMsaUJBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7OzZDQUVULHNCQUFFLEdBQUcsQ0FBQyxTQUFTLENBQUM7OztBQUFoQyxtQkFBTzs7Ozs7O0FBRVgsMkNBQW1CLE9BQU8seUdBQUU7QUFBbkIsb0JBQU07O0FBQ2Isb0JBQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxTQUFNLENBQUM7YUFDeEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztLQUNGLENBQUMsQ0FBQztHQUNKLENBQUMsQ0FBQztDQUNKLENBQUMsQ0FBQyIsImZpbGUiOiJ0ZXN0L3VuaXQvdXRpbHMtc3BlY3MuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyB0cmFuc3BpbGU6bW9jaGFcblxuaW1wb3J0IGNoYWkgZnJvbSAnY2hhaSc7XG5pbXBvcnQgY2hhaUFzUHJvbWlzZWQgZnJvbSAnY2hhaS1hcy1wcm9taXNlZCc7XG5pbXBvcnQgc2lub24gZnJvbSAnc2lub24nO1xuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0ICogYXMgVGVlblByb2Nlc3MgZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB4Y29kZSBmcm9tICdhcHBpdW0teGNvZGUnO1xuaW1wb3J0ICogYXMgbm9kZVNpbWN0bCBmcm9tICdub2RlLXNpbWN0bCc7XG5pbXBvcnQgeyBraWxsQWxsU2ltdWxhdG9ycywgZW5kQWxsU2ltdWxhdG9yRGFlbW9ucywgc2ltRXhpc3RzIH0gZnJvbSAnLi4vLi4nO1xuaW1wb3J0IHsgZGV2aWNlcyB9IGZyb20gJy4uL2Fzc2V0cy9kZXZpY2VMaXN0JztcblxuXG5jaGFpLnNob3VsZCgpO1xuY2hhaS51c2UoY2hhaUFzUHJvbWlzZWQpO1xuXG5jb25zdCBYQ09ERV9WRVJTSU9OXzcgPSB7XG4gIHZlcnNpb25TdHJpbmc6ICc3LjEuMScsXG4gIHZlcnNpb25GbG9hdDogNy4xLFxuICBtYWpvcjogNyxcbiAgbWlub3I6IDEsXG4gIHBhdGNoOiAxXG59O1xuY29uc3QgWENPREVfVkVSU0lPTl82ID0ge1xuICB2ZXJzaW9uU3RyaW5nOiAnNi4xLjEnLFxuICB2ZXJzaW9uRmxvYXQ6IDYuMSxcbiAgbWFqb3I6IDYsXG4gIG1pbm9yOiAxLFxuICBwYXRjaDogMVxufTtcblxuZGVzY3JpYmUoJ3V0aWwnLCAoKSA9PiB7XG4gIGxldCBleGVjU3R1YjtcbiAgbGV0IHhjb2RlTW9jaztcbiAgbGV0IGdldERldmljZXNTdHViO1xuXG4gIGJlZm9yZUVhY2goKCkgPT4ge1xuICAgIGV4ZWNTdHViID0gc2lub24uc3R1YihUZWVuUHJvY2VzcywgJ2V4ZWMnKTtcbiAgICB4Y29kZU1vY2sgPSBzaW5vbi5tb2NrKHhjb2RlKTtcbiAgICBnZXREZXZpY2VzU3R1YiA9IHNpbm9uLnN0dWIobm9kZVNpbWN0bCwgJ2dldERldmljZXMnKTtcbiAgICBnZXREZXZpY2VzU3R1Yi5yZXR1cm5zKEIucmVzb2x2ZShkZXZpY2VzKSk7XG4gIH0pO1xuICBhZnRlckVhY2goKCkgPT4ge1xuICAgIGV4ZWNTdHViLnJlc3RvcmUoKTtcbiAgICB4Y29kZU1vY2sucmVzdG9yZSgpO1xuICAgIG5vZGVTaW1jdGwuZ2V0RGV2aWNlcy5yZXN0b3JlKCk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdraWxsQWxsU2ltdWxhdG9ycycsICgpID0+IHtcbiAgICBpdCgnc2hvdWxkIGNhbGwgZXhlYyB3aXRoIFNpbXVsYXRvciBmb3IgWGNvZGUgNycsIGFzeW5jICgpID0+IHtcbiAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRWZXJzaW9uJykud2l0aEFyZ3ModHJ1ZSkucmV0dXJucyhCLnJlc29sdmUoWENPREVfVkVSU0lPTl83KSk7XG4gICAgICBhd2FpdCBraWxsQWxsU2ltdWxhdG9ycygpO1xuICAgICAgZXhlY1N0dWIuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGNhbGwgZXhlYyB3aXRoIGlPUyBTaW11bGF0b3IgZm9yIFhjb2RlIDYnLCBhc3luYyAoKSA9PiB7XG4gICAgICB4Y29kZU1vY2suZXhwZWN0cygnZ2V0VmVyc2lvbicpLndpdGhBcmdzKHRydWUpLnJldHVybnMoQi5yZXNvbHZlKFhDT0RFX1ZFUlNJT05fNikpO1xuICAgICAgYXdhaXQga2lsbEFsbFNpbXVsYXRvcnMoKTtcbiAgICAgIGV4ZWNTdHViLmNhbGxlZE9uY2Uuc2hvdWxkLmJlLnRydWU7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBjb250aW51ZSBpZiBhcHBsaWNhdGlvbiBpcyBub3QgcnVubmluZyBlcnJvciBnZXRzIHRocm93bicsIGFzeW5jICgpID0+IHtcbiAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRWZXJzaW9uJykud2l0aEFyZ3ModHJ1ZSkucmV0dXJucyhCLnJlc29sdmUoWENPREVfVkVSU0lPTl83KSk7XG4gICAgICBleGVjU3R1Yi50aHJvd3MoJ3tcInN0ZG91dFwiOlwiXCIsXCJzdGRlcnJcIjpcIjA6MjQ6IGV4ZWN1dGlvbiBlcnJvcjogaU9TIFNpbXVsYXRvciBnb3QgYW4gZXJyb3I6IEFwcGxpY2F0aW9uIGlzbuKAmXQgcnVubmluZy4gKC02MDApXFxuXCIsXCJjb2RlXCI6MX0nKTtcbiAgICAgIGF3YWl0IGtpbGxBbGxTaW11bGF0b3JzKCk7XG4gICAgfSk7XG4gIH0pO1xuXG4gIGRlc2NyaWJlKCdlbmRBbGxTaW11bGF0b3JEYWVtb25zJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY2FsbCBleGVjIGZpdmUgdGltZXMgdG8gc3RvcCBhbmQgcmVtb3ZlIGVhY2ggc2VydmljZScsIGFzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IGVuZEFsbFNpbXVsYXRvckRhZW1vbnMoKTtcbiAgICAgIGV4ZWNTdHViLmNhbGxDb3VudC5zaG91bGQuZXF1YWwoNSk7XG4gICAgfSk7XG4gICAgaXQoJ3Nob3VsZCBpZ25vcmUgYWxsIGVycm9ycycsIGFzeW5jICgpID0+IHtcbiAgICAgIGV4ZWNTdHViLnRocm93cygpO1xuICAgICAgYXdhaXQgZW5kQWxsU2ltdWxhdG9yRGFlbW9ucygpLnNob3VsZC5ub3QuYmUucmVqZWN0ZWQ7XG4gICAgICBleGVjU3R1Yi5jYWxsQ291bnQuc2hvdWxkLmVxdWFsKDUpO1xuICAgICAgZXhlY1N0dWIudGhyZXcoKS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ3NpbUV4aXN0cycsICgpID0+IHtcbiAgICBpdCgncmV0dXJucyB0cnVlIGlmIGRldmljZSBpcyBmb3VuZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBleGlzdGVuY2UgPSBbXG4gICAgICAgIHNpbUV4aXN0cygnQzA5QjM0RTUtN0RDQi00NDJFLUI3OUMtQUI2QkMwMzU3NDE3JyksXG4gICAgICAgIHNpbUV4aXN0cygnRkE1Qzk3MUQtNEUwNS00QUEzLUI0OEItQzk2MTlDNzQ1M0JFJyksXG4gICAgICAgIHNpbUV4aXN0cygnRTQ2RUZBNTktRTJCNC00RkY5LUIyOTAtQjYxRjNDRkVDQzY1JyksXG4gICAgICAgIHNpbUV4aXN0cygnRjMzNzgzQjItOUVFOS00QTk5LTg2NkUtRTEyNkFEQkFENDEwJylcbiAgICAgIF07XG5cbiAgICAgIGxldCByZXN1bHRzID0gYXdhaXQgQi5hbGwoZXhpc3RlbmNlKTtcblxuICAgICAgZm9yIChsZXQgcmVzdWx0IG9mIHJlc3VsdHMpIHtcbiAgICAgICAgcmVzdWx0LnNob3VsZC5iZS50cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaXQoJ3JldHVybnMgZmFsc2UgaWYgZGV2aWNlIGlzIG5vdCBmb3VuZCcsIGFzeW5jICgpID0+IHtcbiAgICAgIGxldCBleGlzdGVuY2UgPSBbXTtcbiAgICAgIGV4aXN0ZW5jZS5wdXNoKHNpbUV4aXN0cygnQTk0RTRDRDctRDQxMi00MTk4LUJDRDQtMjY3OTk2NzI5NzVFJykpO1xuICAgICAgZXhpc3RlbmNlLnB1c2goc2ltRXhpc3RzKCdhc2RmJykpO1xuICAgICAgZXhpc3RlbmNlLnB1c2goc2ltRXhpc3RzKDQpKTtcblxuICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBCLmFsbChleGlzdGVuY2UpO1xuXG4gICAgICBmb3IgKGxldCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICByZXN1bHQuc2hvdWxkLmJlLmZhbHNlO1xuICAgICAgfVxuICAgIH0pO1xuICB9KTtcbn0pO1xuIl0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLiJ9 | ||
describe('installSSLCert and uninstallSSLCert', function () { | ||
it('should install and uninstall certs in keychain directories', function callee$1$0() { | ||
var simulatorGetDirStub, testPem, certificate, certExistsInAssetsDir; | ||
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) { | ||
while (1) switch (context$2$0.prev = context$2$0.next) { | ||
case 0: | ||
simulatorGetDirStub = _sinon2['default'].stub(_libSimulatorXcode62['default'].prototype, 'getDir', function () { | ||
return _path2['default'].resolve(assetsDir); | ||
}); | ||
context$2$0.next = 3; | ||
return _regeneratorRuntime.awrap(_appiumSupport.fs.readFile(_path2['default'].resolve(assetsDir, 'test-pem.pem'))); | ||
case 3: | ||
testPem = context$2$0.sent; | ||
context$2$0.next = 6; | ||
return _regeneratorRuntime.awrap((0, _.installSSLCert)(testPem, 'using mock, udid doesn\'t matter')); | ||
case 6: | ||
certificate = context$2$0.sent; | ||
context$2$0.next = 9; | ||
return _regeneratorRuntime.awrap(certificate.has(assetsDir)); | ||
case 9: | ||
certExistsInAssetsDir = context$2$0.sent; | ||
expect(certExistsInAssetsDir).to.be['true']; | ||
context$2$0.next = 13; | ||
return _regeneratorRuntime.awrap((0, _.uninstallSSLCert)(testPem, 'using mock, udid doesn\'t matter')); | ||
case 13: | ||
context$2$0.next = 15; | ||
return _regeneratorRuntime.awrap(certificate.has(assetsDir)); | ||
case 15: | ||
certExistsInAssetsDir = context$2$0.sent; | ||
expect(certExistsInAssetsDir).to.be['false']; | ||
simulatorGetDirStub.restore(); | ||
case 18: | ||
case 'end': | ||
return context$2$0.stop(); | ||
} | ||
}, null, _this); | ||
}); | ||
it('should throw exception if openssl is unavailable', function callee$1$0() { | ||
var whichStub; | ||
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) { | ||
while (1) switch (context$2$0.prev = context$2$0.next) { | ||
case 0: | ||
whichStub = _sinon2['default'].stub(_appiumSupport.fs, 'which', function () { | ||
throw 'no openssl'; | ||
}); | ||
context$2$0.next = 3; | ||
return _regeneratorRuntime.awrap((0, _.installSSLCert)('doesn\'t matter', 'doesn\'t matter').should.be.rejected); | ||
case 3: | ||
whichStub.calledOnce.should.be['true']; | ||
whichStub.restore(); | ||
case 5: | ||
case 'end': | ||
return context$2$0.stop(); | ||
} | ||
}, null, _this); | ||
}); | ||
it('should throw exception on installSSLCert if udid is invalid', function callee$1$0() { | ||
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) { | ||
while (1) switch (context$2$0.prev = context$2$0.next) { | ||
case 0: | ||
context$2$0.next = 2; | ||
return _regeneratorRuntime.awrap((0, _.installSSLCert)('pem dummy text', 'invalid UDID').should.be.rejected); | ||
case 2: | ||
case 'end': | ||
return context$2$0.stop(); | ||
} | ||
}, null, _this); | ||
}); | ||
it('should throw exception on uninstallSSLCert if udid is invalid', function callee$1$0() { | ||
return _regeneratorRuntime.async(function callee$1$0$(context$2$0) { | ||
while (1) switch (context$2$0.prev = context$2$0.next) { | ||
case 0: | ||
context$2$0.next = 2; | ||
return _regeneratorRuntime.awrap((0, _.uninstallSSLCert)('pem dummy text', 'invalid UDID').should.be.rejected); | ||
case 2: | ||
case 'end': | ||
return context$2$0.stop(); | ||
} | ||
}, null, _this); | ||
}); | ||
}); | ||
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInRlc3QvdW5pdC91dGlscy1zcGVjcy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7OztvQkFFaUIsTUFBTTs7Ozs4QkFDSSxrQkFBa0I7Ozs7cUJBQzNCLE9BQU87Ozs7d0JBQ1gsVUFBVTs7Ozs0QkFDSyxjQUFjOztJQUEvQixXQUFXOzsyQkFDTCxjQUFjOzs7OzBCQUNKLGFBQWE7O0lBQTdCLFVBQVU7O2dCQUNpRixPQUFPOztnQ0FDdEYsc0JBQXNCOztrQ0FDeEIsNkJBQTZCOzs7OzZCQUNoQyxnQkFBZ0I7O29CQUNsQixNQUFNOzs7O0FBRXZCLGtCQUFLLE1BQU0sRUFBRSxDQUFDO0FBQ2Qsa0JBQUssR0FBRyw2QkFBZ0IsQ0FBQztBQUN6QixJQUFNLE1BQU0sR0FBRyxrQkFBSyxNQUFNLENBQUM7O0FBRTNCLElBQU0sZUFBZSxHQUFHO0FBQ3RCLGVBQWEsRUFBRSxPQUFPO0FBQ3RCLGNBQVksRUFBRSxHQUFHO0FBQ2pCLE9BQUssRUFBRSxDQUFDO0FBQ1IsT0FBSyxFQUFFLENBQUM7QUFDUixPQUFLLEVBQUUsQ0FBQztDQUNULENBQUM7QUFDRixJQUFNLGVBQWUsR0FBRztBQUN0QixlQUFhLEVBQUUsT0FBTztBQUN0QixjQUFZLEVBQUUsR0FBRztBQUNqQixPQUFLLEVBQUUsQ0FBQztBQUNSLE9BQUssRUFBRSxDQUFDO0FBQ1IsT0FBSyxFQUFFLENBQUM7Q0FDVCxDQUFDOztBQUdGLElBQUksU0FBUyxHQUFNLE9BQU8sQ0FBQyxHQUFHLEVBQUUsaUJBQWMsQ0FBQzs7QUFFL0MsUUFBUSxDQUFDLE1BQU0sRUFBRSxZQUFNO0FBQ3JCLE1BQUksUUFBUSxZQUFBLENBQUM7QUFDYixNQUFJLFNBQVMsWUFBQSxDQUFDO0FBQ2QsTUFBSSxjQUFjLFlBQUEsQ0FBQzs7QUFFbkIsWUFBVSxDQUFDLFlBQU07QUFDZixZQUFRLEdBQUcsbUJBQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztBQUMzQyxhQUFTLEdBQUcs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LEdBQUcsQ0FBQyxTQUFTLENBQUM7OztBQUF4RCwrQkFBcUI7O0FBQ3pCLGdCQUFNLENBQUMscUJBQXFCLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxRQUFLLENBQUM7OzJDQUNuQyx3QkFBaUIsT0FBTyxxQ0FBb0M7Ozs7MkNBQ3BDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDOzs7QUFBeEQsK0JBQXFCOztBQUNyQixnQkFBTSxDQUFDLHFCQUFxQixDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsU0FBTSxDQUFDO0FBQzFDLDZCQUFtQixDQUFDLE9BQU8sRUFBRSxDQUFDOzs7Ozs7O0dBQy9CLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsa0RBQWtELEVBQUU7UUFDakQsU0FBUzs7OztBQUFULG1CQUFTLEdBQUcsbUJBQU0sSUFBSSxvQkFBSyxPQUFPLEVBQUUsWUFBTTtBQUM1QyxrQkFBTSxZQUFZLENBQUM7V0FDcEIsQ0FBQzs7MkNBQ0ksMkRBQWtELENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxRQUFROzs7QUFDM0UsbUJBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUUsUUFBSyxDQUFDO0FBQ3BDLG1CQUFTLENBQUMsT0FBTyxFQUFFLENBQUM7Ozs7Ozs7R0FDckIsQ0FBQyxDQUFDOztBQUVILElBQUUsQ0FBQyw2REFBNkQsRUFBRTs7Ozs7MkNBQzFELHNCQUFlLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUTs7Ozs7OztHQUMxRSxDQUFDLENBQUM7O0FBRUgsSUFBRSxDQUFDLCtEQUErRCxFQUFFOzs7OzsyQ0FDNUQsd0JBQWlCLGdCQUFnQixFQUFFLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsUUFBUTs7Ozs7OztHQUM1RSxDQUFDLENBQUM7Q0FFSixDQUFDLENBQUMiLCJmaWxlIjoidGVzdC91bml0L3V0aWxzLXNwZWNzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gdHJhbnNwaWxlOm1vY2hhXG5cbmltcG9ydCBjaGFpIGZyb20gJ2NoYWknO1xuaW1wb3J0IGNoYWlBc1Byb21pc2VkIGZyb20gJ2NoYWktYXMtcHJvbWlzZWQnO1xuaW1wb3J0IHNpbm9uIGZyb20gJ3Npbm9uJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCAqIGFzIFRlZW5Qcm9jZXNzIGZyb20gJ3RlZW5fcHJvY2Vzcyc7XG5pbXBvcnQgeGNvZGUgZnJvbSAnYXBwaXVtLXhjb2RlJztcbmltcG9ydCAqIGFzIG5vZGVTaW1jdGwgZnJvbSAnbm9kZS1zaW1jdGwnO1xuaW1wb3J0IHsga2lsbEFsbFNpbXVsYXRvcnMsIGVuZEFsbFNpbXVsYXRvckRhZW1vbnMsIHNpbUV4aXN0cywgaW5zdGFsbFNTTENlcnQsIHVuaW5zdGFsbFNTTENlcnQgfSBmcm9tICcuLi8uLic7XG5pbXBvcnQgeyBkZXZpY2VzIH0gZnJvbSAnLi4vYXNzZXRzL2RldmljZUxpc3QnO1xuaW1wb3J0IFNpbXVsYXRvciBmcm9tICcuLi8uLi9saWIvc2ltdWxhdG9yLXhjb2RlLTYnO1xuaW1wb3J0IHsgZnMgfSBmcm9tICdhcHBpdW0tc3VwcG9ydCc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcblxuY2hhaS5zaG91bGQoKTtcbmNoYWkudXNlKGNoYWlBc1Byb21pc2VkKTtcbmNvbnN0IGV4cGVjdCA9IGNoYWkuZXhwZWN0O1xuXG5jb25zdCBYQ09ERV9WRVJTSU9OXzcgPSB7XG4gIHZlcnNpb25TdHJpbmc6ICc3LjEuMScsXG4gIHZlcnNpb25GbG9hdDogNy4xLFxuICBtYWpvcjogNyxcbiAgbWlub3I6IDEsXG4gIHBhdGNoOiAxXG59O1xuY29uc3QgWENPREVfVkVSU0lPTl82ID0ge1xuICB2ZXJzaW9uU3RyaW5nOiAnNi4xLjEnLFxuICB2ZXJzaW9uRmxvYXQ6IDYuMSxcbiAgbWFqb3I6IDYsXG4gIG1pbm9yOiAxLFxuICBwYXRjaDogMVxufTtcblxuXG5sZXQgYXNzZXRzRGlyID0gYCR7cHJvY2Vzcy5jd2QoKX0vdGVzdC9hc3NldHNgO1xuXG5kZXNjcmliZSgndXRpbCcsICgpID0+IHtcbiAgbGV0IGV4ZWNTdHViO1xuICBsZXQgeGNvZGVNb2NrO1xuICBsZXQgZ2V0RGV2aWNlc1N0dWI7XG5cbiAgYmVmb3JlRWFjaCgoKSA9PiB7XG4gICAgZXhlY1N0dWIgPSBzaW5vbi5zdHViKFRlZW5Qcm9jZXNzLCAnZXhlYycpO1xuICAgIHhjb2RlTW9jayA9IHNpbm9uLm1vY2soeGNvZGUpO1xuICAgIGdldERldmljZXNTdHViID0gc2lub24uc3R1Yihub2RlU2ltY3RsLCAnZ2V0RGV2aWNlcycpO1xuICAgIGdldERldmljZXNTdHViLnJldHVybnMoQi5yZXNvbHZlKGRldmljZXMpKTtcbiAgfSk7XG4gIGFmdGVyRWFjaCgoKSA9PiB7XG4gICAgZXhlY1N0dWIucmVzdG9yZSgpO1xuICAgIHhjb2RlTW9jay5yZXN0b3JlKCk7XG4gICAgbm9kZVNpbWN0bC5nZXREZXZpY2VzLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2tpbGxBbGxTaW11bGF0b3JzJywgKCkgPT4ge1xuICAgIGl0KCdzaG91bGQgY2FsbCBleGVjIHdpdGggU2ltdWxhdG9yIGZvciBYY29kZSA3JywgYXN5bmMgKCkgPT4ge1xuICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldFZlcnNpb24nKS53aXRoQXJncyh0cnVlKS5yZXR1cm5zKEIucmVzb2x2ZShYQ09ERV9WRVJTSU9OXzcpKTtcbiAgICAgIGF3YWl0IGtpbGxBbGxTaW11bGF0b3JzKCk7XG4gICAgICBleGVjU3R1Yi5jYWxsZWRPbmNlLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuICAgIGl0KCdzaG91bGQgY2FsbCBleGVjIHdpdGggaU9TIFNpbXVsYXRvciBmb3IgWGNvZGUgNicsIGFzeW5jICgpID0+IHtcbiAgICAgIHhjb2RlTW9jay5leHBlY3RzKCdnZXRWZXJzaW9uJykud2l0aEFyZ3ModHJ1ZSkucmV0dXJucyhCLnJlc29sdmUoWENPREVfVkVSU0lPTl82KSk7XG4gICAgICBhd2FpdCBraWxsQWxsU2ltdWxhdG9ycygpO1xuICAgICAgZXhlY1N0dWIuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGNvbnRpbnVlIGlmIGFwcGxpY2F0aW9uIGlzIG5vdCBydW5uaW5nIGVycm9yIGdldHMgdGhyb3duJywgYXN5bmMgKCkgPT4ge1xuICAgICAgeGNvZGVNb2NrLmV4cGVjdHMoJ2dldFZlcnNpb24nKS53aXRoQXJncyh0cnVlKS5yZXR1cm5zKEIucmVzb2x2ZShYQ09ERV9WRVJTSU9OXzcpKTtcbiAgICAgIGV4ZWNTdHViLnRocm93cygne1wic3Rkb3V0XCI6XCJcIixcInN0ZGVyclwiOlwiMDoyNDogZXhlY3V0aW9uIGVycm9yOiBpT1MgU2ltdWxhdG9yIGdvdCBhbiBlcnJvcjogQXBwbGljYXRpb24gaXNu4oCZdCBydW5uaW5nLiAoLTYwMClcXG5cIixcImNvZGVcIjoxfScpO1xuICAgICAgYXdhaXQga2lsbEFsbFNpbXVsYXRvcnMoKTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ2VuZEFsbFNpbXVsYXRvckRhZW1vbnMnLCAoKSA9PiB7XG4gICAgaXQoJ3Nob3VsZCBjYWxsIGV4ZWMgZml2ZSB0aW1lcyB0byBzdG9wIGFuZCByZW1vdmUgZWFjaCBzZXJ2aWNlJywgYXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgZW5kQWxsU2ltdWxhdG9yRGFlbW9ucygpO1xuICAgICAgZXhlY1N0dWIuY2FsbENvdW50LnNob3VsZC5lcXVhbCg1KTtcbiAgICB9KTtcbiAgICBpdCgnc2hvdWxkIGlnbm9yZSBhbGwgZXJyb3JzJywgYXN5bmMgKCkgPT4ge1xuICAgICAgZXhlY1N0dWIudGhyb3dzKCk7XG4gICAgICBhd2FpdCBlbmRBbGxTaW11bGF0b3JEYWVtb25zKCkuc2hvdWxkLm5vdC5iZS5yZWplY3RlZDtcbiAgICAgIGV4ZWNTdHViLmNhbGxDb3VudC5zaG91bGQuZXF1YWwoNSk7XG4gICAgICBleGVjU3R1Yi50aHJldygpLnNob3VsZC5iZS50cnVlO1xuICAgIH0pO1xuICB9KTtcblxuICBkZXNjcmliZSgnc2ltRXhpc3RzJywgKCkgPT4ge1xuICAgIGl0KCdyZXR1cm5zIHRydWUgaWYgZGV2aWNlIGlzIGZvdW5kJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IGV4aXN0ZW5jZSA9IFtcbiAgICAgICAgc2ltRXhpc3RzKCdDMDlCMzRFNS03RENCLTQ0MkUtQjc5Qy1BQjZCQzAzNTc0MTcnKSxcbiAgICAgICAgc2ltRXhpc3RzKCdGQTVDOTcxRC00RTA1LTRBQTMtQjQ4Qi1DOTYxOUM3NDUzQkUnKSxcbiAgICAgICAgc2ltRXhpc3RzKCdFNDZFRkE1OS1FMkI0LTRGRjktQjI5MC1CNjFGM0NGRUNDNjUnKSxcbiAgICAgICAgc2ltRXhpc3RzKCdGMzM3ODNCMi05RUU5LTRBOTktODY2RS1FMTI2QURCQUQ0MTAnKVxuICAgICAgXTtcblxuICAgICAgbGV0IHJlc3VsdHMgPSBhd2FpdCBCLmFsbChleGlzdGVuY2UpO1xuXG4gICAgICBmb3IgKGxldCByZXN1bHQgb2YgcmVzdWx0cykge1xuICAgICAgICByZXN1bHQuc2hvdWxkLmJlLnRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpdCgncmV0dXJucyBmYWxzZSBpZiBkZXZpY2UgaXMgbm90IGZvdW5kJywgYXN5bmMgKCkgPT4ge1xuICAgICAgbGV0IGV4aXN0ZW5jZSA9IFtdO1xuICAgICAgZXhpc3RlbmNlLnB1c2goc2ltRXhpc3RzKCdBOTRFNENENy1ENDEyLTQxOTgtQkNENC0yNjc5OTY3Mjk3NUUnKSk7XG4gICAgICBleGlzdGVuY2UucHVzaChzaW1FeGlzdHMoJ2FzZGYnKSk7XG4gICAgICBleGlzdGVuY2UucHVzaChzaW1FeGlzdHMoNCkpO1xuXG4gICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IEIuYWxsKGV4aXN0ZW5jZSk7XG5cbiAgICAgIGZvciAobGV0IHJlc3VsdCBvZiByZXN1bHRzKSB7XG4gICAgICAgIHJlc3VsdC5zaG91bGQuYmUuZmFsc2U7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuXG59KTtcblxuZGVzY3JpYmUoJ2luc3RhbGxTU0xDZXJ0IGFuZCB1bmluc3RhbGxTU0xDZXJ0JywgKCkgPT4ge1xuXG4gIGl0KCdzaG91bGQgaW5zdGFsbCBhbmQgdW5pbnN0YWxsIGNlcnRzIGluIGtleWNoYWluIGRpcmVjdG9yaWVzJywgYXN5bmMgKCkgPT4ge1xuICAgIGxldCBzaW11bGF0b3JHZXREaXJTdHViID0gc2lub24uc3R1YihTaW11bGF0b3IucHJvdG90eXBlLCAnZ2V0RGlyJywgZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIHBhdGgucmVzb2x2ZShhc3NldHNEaXIpO1xuICAgIH0pO1xuICAgIGxldCB0ZXN0UGVtID0gYXdhaXQgZnMucmVhZEZpbGUocGF0aC5yZXNvbHZlKGFzc2V0c0RpciwgJ3Rlc3QtcGVtLnBlbScpKTtcbiAgICBsZXQgY2VydGlmaWNhdGUgPSBhd2FpdCBpbnN0YWxsU1NMQ2VydCh0ZXN0UGVtLCBgdXNpbmcgbW9jaywgdWRpZCBkb2Vzbid0IG1hdHRlcmApO1xuICAgIGxldCBjZXJ0RXhpc3RzSW5Bc3NldHNEaXIgPSBhd2FpdCBjZXJ0aWZpY2F0ZS5oYXMoYXNzZXRzRGlyKTtcbiAgICBleHBlY3QoY2VydEV4aXN0c0luQXNzZXRzRGlyKS50by5iZS50cnVlO1xuICAgIGF3YWl0IHVuaW5zdGFsbFNTTENlcnQodGVzdFBlbSwgYHVzaW5nIG1vY2ssIHVkaWQgZG9lc24ndCBtYXR0ZXJgKTtcbiAgICBjZXJ0RXhpc3RzSW5Bc3NldHNEaXIgPSBhd2FpdCBjZXJ0aWZpY2F0ZS5oYXMoYXNzZXRzRGlyKTtcbiAgICBleHBlY3QoY2VydEV4aXN0c0luQXNzZXRzRGlyKS50by5iZS5mYWxzZTtcbiAgICBzaW11bGF0b3JHZXREaXJTdHViLnJlc3RvcmUoKTtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBleGNlcHRpb24gaWYgb3BlbnNzbCBpcyB1bmF2YWlsYWJsZScsIGFzeW5jICgpID0+IHtcbiAgICBsZXQgd2hpY2hTdHViID0gc2lub24uc3R1YihmcywgJ3doaWNoJywgKCkgPT4ge1xuICAgICAgdGhyb3cgJ25vIG9wZW5zc2wnO1xuICAgIH0pO1xuICAgIGF3YWl0IGluc3RhbGxTU0xDZXJ0KGBkb2Vzbid0IG1hdHRlcmAsIGBkb2Vzbid0IG1hdHRlcmApLnNob3VsZC5iZS5yZWplY3RlZDtcbiAgICB3aGljaFN0dWIuY2FsbGVkT25jZS5zaG91bGQuYmUudHJ1ZTtcbiAgICB3aGljaFN0dWIucmVzdG9yZSgpO1xuICB9KTtcblxuICBpdCgnc2hvdWxkIHRocm93IGV4Y2VwdGlvbiBvbiBpbnN0YWxsU1NMQ2VydCBpZiB1ZGlkIGlzIGludmFsaWQnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgaW5zdGFsbFNTTENlcnQoJ3BlbSBkdW1teSB0ZXh0JywgJ2ludmFsaWQgVURJRCcpLnNob3VsZC5iZS5yZWplY3RlZDtcbiAgfSk7XG5cbiAgaXQoJ3Nob3VsZCB0aHJvdyBleGNlcHRpb24gb24gdW5pbnN0YWxsU1NMQ2VydCBpZiB1ZGlkIGlzIGludmFsaWQnLCBhc3luYyAoKSA9PiB7XG4gICAgYXdhaXQgdW5pbnN0YWxsU1NMQ2VydCgncGVtIGR1bW15IHRleHQnLCAnaW52YWxpZCBVRElEJykuc2hvdWxkLmJlLnJlamVjdGVkO1xuICB9KTtcblxufSk7XG4iXSwic291cmNlUm9vdCI6Ii4uLy4uLy4uIn0= |
import { SubProcess } from 'teen_process'; | ||
import B from 'bluebird'; | ||
import log from './logger'; | ||
@@ -30,5 +31,12 @@ // tails a file, promise resolves when input string is written to file | ||
resolve(); | ||
}).finally(() => { | ||
}).finally(async () => { | ||
// no matter what, stop the tail process | ||
proc.stop(); | ||
if (proc.isRunning) { | ||
try { | ||
await proc.stop(); | ||
} catch (err) { | ||
// there is not much we can do here, unfortunately, but log | ||
log.info(`Stopping tail process failed: ${err.message}`); | ||
} | ||
} | ||
}); | ||
@@ -35,0 +43,0 @@ } |
@@ -137,20 +137,42 @@ import log from './logger'; | ||
async function installSSLCert (pemText, udid) { | ||
let tempFileName = path.resolve(`${__dirname}/temp-ssl-cert.pem`); | ||
let pathToKeychain = path.resolve(new Simulator(udid).getDir()); | ||
// Check that openssl is installed on the path | ||
try { | ||
await fs.which('openssl'); | ||
} catch (e) { | ||
log.debug(`customSSLCert requires openssl to be available on path`); | ||
log.errorAndThrow(`Command 'openssl' not found`); | ||
} | ||
let tempFileName = path.resolve(__dirname, 'temp-ssl-cert.pem'); | ||
let pathToKeychain = new Simulator(udid).getDir(); | ||
await fs.writeFile(tempFileName, pemText); | ||
try { | ||
await fs.stat(pathToKeychain); | ||
} catch (e) { | ||
log.debug(`Could not install SSL certificate. No simulator with udid '${udid}'`); | ||
log.errorAndThrow(e); | ||
} | ||
let certificate = new Certificate(tempFileName); | ||
await certificate.add(pathToKeychain); | ||
return await fs.unlink(tempFileName); | ||
await fs.unlink(tempFileName); | ||
return certificate; | ||
} | ||
async function uninstallSSLCert (pemText, udid) { | ||
let tempFileName = path.resolve(`${__dirname}/temp-ssl-cert.pem`); | ||
let pathToKeychain = path.resolve(new Simulator(udid).getDir()); | ||
await fs.writeFile(tempFileName, pemText); | ||
let certificate = new Certificate(tempFileName); | ||
await certificate.remove(pathToKeychain); | ||
return await fs.unlink(tempFileName); | ||
try { | ||
let tempFileName = path.resolve(__dirname, 'temp-ssl-cert.pem'); | ||
let pathToKeychain = path.resolve(new Simulator(udid).getDir()); | ||
await fs.writeFile(tempFileName, pemText); | ||
let certificate = new Certificate(tempFileName); | ||
await certificate.remove(pathToKeychain); | ||
await fs.unlink(tempFileName); | ||
return certificate; | ||
} catch (e) { | ||
log.debug(`Could not uninstall SSL certificate. No simulator with udid '${udid}'`); | ||
log.errorAndThrow(e); | ||
} | ||
} | ||
export { killAllSimulators, endAllSimulatorDaemons, safeRimRaf, simExists, installSSLCert, uninstallSSLCert }; |
@@ -7,3 +7,3 @@ { | ||
], | ||
"version": "1.10.0", | ||
"version": "1.10.1", | ||
"author": "appium", | ||
@@ -10,0 +10,0 @@ "license": "Apache-2.0", |
@@ -13,2 +13,3 @@ ## appium-ios-simulator | ||
*Note*: Issue tracking for this repo has been disabled. Please use the [main Appium issue tracker](https://github.com/appium/appium/issues) instead. | ||
@@ -15,0 +16,0 @@ ### Usage |
@@ -80,3 +80,3 @@ // transpile:mocha | ||
let stats = sims.map((simProm) => { | ||
return simProm.then((sim) => { | ||
return simProm.then((sim) => { // eslint-disable-line promise/prefer-await-to-then | ||
return sim.stat(); | ||
@@ -83,0 +83,0 @@ }); |
@@ -10,8 +10,11 @@ // transpile:mocha | ||
import * as nodeSimctl from 'node-simctl'; | ||
import { killAllSimulators, endAllSimulatorDaemons, simExists } from '../..'; | ||
import { killAllSimulators, endAllSimulatorDaemons, simExists, installSSLCert, uninstallSSLCert } from '../..'; | ||
import { devices } from '../assets/deviceList'; | ||
import Simulator from '../../lib/simulator-xcode-6'; | ||
import { fs } from 'appium-support'; | ||
import path from 'path'; | ||
chai.should(); | ||
chai.use(chaiAsPromised); | ||
const expect = chai.expect; | ||
@@ -33,2 +36,5 @@ const XCODE_VERSION_7 = { | ||
let assetsDir = `${process.cwd()}/test/assets`; | ||
describe('util', () => { | ||
@@ -111,2 +117,38 @@ let execStub; | ||
}); | ||
}); | ||
describe('installSSLCert and uninstallSSLCert', () => { | ||
it('should install and uninstall certs in keychain directories', async () => { | ||
let simulatorGetDirStub = sinon.stub(Simulator.prototype, 'getDir', function () { | ||
return path.resolve(assetsDir); | ||
}); | ||
let testPem = await fs.readFile(path.resolve(assetsDir, 'test-pem.pem')); | ||
let certificate = await installSSLCert(testPem, `using mock, udid doesn't matter`); | ||
let certExistsInAssetsDir = await certificate.has(assetsDir); | ||
expect(certExistsInAssetsDir).to.be.true; | ||
await uninstallSSLCert(testPem, `using mock, udid doesn't matter`); | ||
certExistsInAssetsDir = await certificate.has(assetsDir); | ||
expect(certExistsInAssetsDir).to.be.false; | ||
simulatorGetDirStub.restore(); | ||
}); | ||
it('should throw exception if openssl is unavailable', async () => { | ||
let whichStub = sinon.stub(fs, 'which', () => { | ||
throw 'no openssl'; | ||
}); | ||
await installSSLCert(`doesn't matter`, `doesn't matter`).should.be.rejected; | ||
whichStub.calledOnce.should.be.true; | ||
whichStub.restore(); | ||
}); | ||
it('should throw exception on installSSLCert if udid is invalid', async () => { | ||
await installSSLCert('pem dummy text', 'invalid UDID').should.be.rejected; | ||
}); | ||
it('should throw exception on uninstallSSLCert if udid is invalid', async () => { | ||
await uninstallSSLCert('pem dummy text', 'invalid UDID').should.be.rejected; | ||
}); | ||
}); |
Sorry, the diff of this file is not supported yet
677601
1.77%9472
2.47%298
0.34%72
-1.37%