appium-espresso-driver 2.2.6 → 2.3.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/build/index.js +1 -1
- package/build/lib/commands/execute.js +1 -1
- package/build/lib/commands/general.js +1 -1
- package/build/lib/commands/idling-resources.js +1 -1
- package/build/lib/commands/services.js +1 -1
- package/build/lib/driver.js +1 -1
- package/build/lib/espresso-runner.js +1 -1
- package/build/lib/logger.js +1 -1
- package/build/lib/server-builder.js +1 -1
- package/build/lib/server.js +1 -1
- package/build/lib/utils.js +1 -1
- package/espresso-server/app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk +0 -0
- package/espresso-server/app/src/androidTest/java/io/appium/espressoserver/lib/model/AttributesEnum.kt +1 -1
- package/npm-shrinkwrap.json +23831 -2170
- package/package.json +1 -1
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2VzcHJlc3NvLXJ1bm5lci5qcyIsIm5hbWVzIjpbIlRFU1RfU0VSVkVSX1JPT1QiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsIlRFU1RfQVBLX1BLRyIsIlJFUVVJUkVEX1BBUkFNUyIsIkVTUFJFU1NPX1NFUlZFUl9MQVVOQ0hfVElNRU9VVF9NUyIsIlRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUiIsIkVzcHJlc3NvUHJveHkiLCJKV1Byb3h5IiwicHJveHlDb21tYW5kIiwidXJsIiwibWV0aG9kIiwiYm9keSIsImNyYXNoZWQiLCJleGl0ZWQiLCJpbnN0cnVtZW50YXRpb25TdGF0ZSIsImVycm9ycyIsIkludmFsaWRDb250ZXh0RXJyb3IiLCJFc3ByZXNzb1J1bm5lciIsImNvbnN0cnVjdG9yIiwibG9nIiwib3B0cyIsInJlcSIsInV0aWwiLCJoYXNWYWx1ZSIsIkVycm9yIiwiandwcm94eSIsInNlcnZlciIsImhvc3QiLCJwb3J0Iiwic3lzdGVtUG9ydCIsImJhc2UiLCJrZWVwQWxpdmUiLCJwcm94eVJlcVJlcyIsImJpbmQiLCJjb21tYW5kIiwibW9kU2VydmVyTmFtZSIsImZzIiwic2FuaXRpemVOYW1lIiwidmVyc2lvbiIsImFwcFBhY2thZ2UiLCJhZGIiLCJjdXJEZXZpY2VJZCIsInJlcGxhY2VtZW50IiwibW9kU2VydmVyUGF0aCIsInRtcERpciIsInNob3dHcmFkbGVMb2ciLCJlc3ByZXNzb0J1aWxkQ29uZmlnIiwic2VydmVyTGF1bmNoVGltZW91dCIsImFuZHJvaWRJbnN0YWxsVGltZW91dCIsImRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlIiwidXNlS2V5c3RvcmUiLCJrZXlzdG9yZVBhdGgiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsInNpZ25pbmdDb25maWciLCJrZXlzdG9yZUZpbGUiLCJpc0FwcFBhY2thZ2VDaGFuZ2VkIiwiZmlsZUV4aXN0cyIsImRlYnVnIiwicHJldmlvdXNBcHBQYWNrYWdlIiwic2hlbGwiLCJ0cmltIiwiaW5zdGFsbFNlcnZlciIsImFwcFN0YXRlIiwiZ2V0QXBwbGljYXRpb25JbnN0YWxsU3RhdGUiLCJzaG91bGRVbmluc3RhbGxBcHAiLCJBUFBfSU5TVEFMTF9TVEFURSIsIk9MREVSX1ZFUlNJT05fSU5TVEFMTEVEIiwiTkVXRVJfVkVSU0lPTl9JTlNUQUxMRUQiLCJpbmNsdWRlcyIsInNob3VsZEluc3RhbGxBcHAiLCJOT1RfSU5TVEFMTEVEIiwiaW5mbyIsInVuaW5zdGFsbEFwayIsImVyciIsIndhcm4iLCJtZXNzYWdlIiwiaW5zdGFsbCIsInJlcGxhY2UiLCJ0aW1lb3V0IiwiZXJyb3JBbmRUaHJvdyIsImluc3RhbGxUZXN0QXBrIiwicmVidWlsZCIsImZvcmNlRXNwcmVzc29SZWJ1aWxkIiwiZXhpc3RzIiwidW5saW5rIiwiYnVpbGROZXdNb2RTZXJ2ZXIiLCJpc1NpZ25lZCIsImNoZWNrQXBrQ2VydCIsInNpZ24iLCJidWlsZENvbmZpZ3VyYXRpb24iLCJidWlsZENvbmZpZ3VyYXRpb25TdHIiLCJyZWFkRmlsZSIsIkpTT04iLCJwYXJzZSIsImUiLCJlcnJvciIsImRpck5hbWUiLCJzZXJ2ZXJQYXRoIiwicmltcmFmIiwiU2VydmVyQnVpbGRlciIsInRlc3RBcHBQYWNrYWdlIiwiYnVpbGQiLCJhcGtQYXRoIiwiY29weUZpbGUiLCJjbGVhbnVwU2Vzc2lvbkxlZnRvdmVycyIsInZhbHVlIiwiZGF0YSIsImFjdGl2ZVNlc3Npb25JZHMiLCJtYXAiLCJzZXNzIiwiaWQiLCJsZW5ndGgiLCJzdHJpbmdpZnkiLCJCIiwiYWxsIiwiZGVsYXkiLCJzdGFydFNlc3Npb24iLCJjYXBzIiwiY21kIiwicHJvY2VzcyIsImVudiIsIkVTUFJFU1NPX0pBVkFfREVCVUciLCJfIiwiaXNCb29sZWFuIiwicHVzaCIsImpvaW4iLCJoYXNTb2NrZXRFcnJvciIsImluc3RQcm9jZXNzIiwiY3JlYXRlU3ViUHJvY2VzcyIsIm9uIiwiY29kZSIsInNpZ25hbCIsInN0ZG91dCIsInN0ZGVyciIsImxpbmUiLCJpc0VtcHR5IiwidG9Mb3dlckNhc2UiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJ3YWl0TXMiLCJpbnRlcnZhbE1zIiwidGVzdCIsImdldER1cmF0aW9uIiwiYXNNaWxsaVNlY29uZHMiLCJ0b0ZpeGVkIiwiY2FwYWJpbGl0aWVzIiwiZmlyc3RNYXRjaCIsImFsd2F5c01hdGNoIiwicmVjb3JkVGFyZ2V0QXBwUGFja2FnZSIsImRlbGV0ZVNlc3Npb24iLCJpc1J1bm5pbmciLCJzdG9wIl0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL2VzcHJlc3NvLXJ1bm5lci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBKV1Byb3h5LCBlcnJvcnMgfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCB7IHdhaXRGb3JDb25kaXRpb24gfSBmcm9tICdhc3luY2JveCc7XG5pbXBvcnQgeyBTZXJ2ZXJCdWlsZGVyLCBidWlsZFNlcnZlclNpZ25pbmdDb25maWcgfSBmcm9tICcuL3NlcnZlci1idWlsZGVyJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgZnMsIHV0aWwsIG1rZGlycCwgdGltaW5nIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcbmltcG9ydCB7IHZlcnNpb24gfSBmcm9tICcuLi8uLi9wYWNrYWdlLmpzb24nOyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIGltcG9ydC9uby11bnJlc29sdmVkXG5pbXBvcnQgQiBmcm9tICdibHVlYmlyZCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHsgY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSB9IGZyb20gJy4vdXRpbHMnO1xuaW1wb3J0IGF4aW9zIGZyb20gJ2F4aW9zJztcblxuXG5jb25zdCBURVNUX1NFUlZFUl9ST09UID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJy4uJywgJy4uJywgJ2VzcHJlc3NvLXNlcnZlcicpO1xuY29uc3QgVEVTVF9BUEtfUEtHID0gJ2lvLmFwcGl1bS5lc3ByZXNzb3NlcnZlci50ZXN0JztcbmNvbnN0IFJFUVVJUkVEX1BBUkFNUyA9IFtcbiAgJ2FkYicsXG4gICd0bXBEaXInLFxuICAnaG9zdCcsXG4gICdzeXN0ZW1Qb3J0JyxcbiAgJ2RldmljZVBvcnQnLFxuICAnYXBwUGFja2FnZScsXG4gICdmb3JjZUVzcHJlc3NvUmVidWlsZCcsXG5dO1xuY29uc3QgRVNQUkVTU09fU0VSVkVSX0xBVU5DSF9USU1FT1VUX01TID0gNDUwMDA7XG5jb25zdCBUQVJHRVRfUEFDS0FHRV9DT05UQUlORVIgPSAnL2RhdGEvbG9jYWwvdG1wL2VzcHJlc3NvLmFwcHBhY2thZ2UnO1xuXG5jbGFzcyBFc3ByZXNzb1Byb3h5IGV4dGVuZHMgSldQcm94eSB7XG4gIGFzeW5jIHByb3h5Q29tbWFuZCAodXJsLCBtZXRob2QsIGJvZHkgPSBudWxsKSB7XG4gICAgY29uc3Qge2NyYXNoZWQsIGV4aXRlZH0gPSB0aGlzLmluc3RydW1lbnRhdGlvblN0YXRlO1xuICAgIGlmIChleGl0ZWQpIHtcbiAgICAgIHRocm93IG5ldyBlcnJvcnMuSW52YWxpZENvbnRleHRFcnJvcihgJyR7bWV0aG9kfSAke3VybH0nIGNhbm5vdCBiZSBwcm94aWVkIHRvIEVzcHJlc3NvIHNlcnZlciBiZWNhdXNlIGAgK1xuICAgICAgICBgdGhlIGluc3RydW1lbnRhdGlvbiBwcm9jZXNzIGhhcyAke2NyYXNoZWQgPyAnY3Jhc2hlZCcgOiAnYmVlbiB1bmV4cGVjdGVkbHkgdGVybWluYXRlZCd9LiBgICtcbiAgICAgICAgYENoZWNrIHRoZSBBcHBpdW0gc2VydmVyIGxvZyBhbmQgdGhlIGxvZ2NhdCBvdXRwdXQgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgIH1cbiAgICByZXR1cm4gYXdhaXQgc3VwZXIucHJveHlDb21tYW5kKHVybCwgbWV0aG9kLCBib2R5KTtcbiAgfVxufVxuXG5jbGFzcyBFc3ByZXNzb1J1bm5lciB7XG4gIGNvbnN0cnVjdG9yIChsb2csIG9wdHMgPSB7fSkge1xuICAgIGZvciAobGV0IHJlcSBvZiBSRVFVSVJFRF9QQVJBTVMpIHtcbiAgICAgIGlmICghb3B0cyB8fCAhdXRpbC5oYXNWYWx1ZShvcHRzW3JlcV0pKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgT3B0aW9uICcke3JlcX0nIGlzIHJlcXVpcmVkIWApO1xuICAgICAgfVxuICAgICAgdGhpc1tyZXFdID0gb3B0c1tyZXFdO1xuICAgIH1cbiAgICB0aGlzLmxvZyA9IGxvZztcbiAgICB0aGlzLmp3cHJveHkgPSBuZXcgRXNwcmVzc29Qcm94eSh7XG4gICAgICBsb2csXG4gICAgICBzZXJ2ZXI6IHRoaXMuaG9zdCxcbiAgICAgIHBvcnQ6IHRoaXMuc3lzdGVtUG9ydCxcbiAgICAgIGJhc2U6ICcnLFxuICAgICAga2VlcEFsaXZlOiB0cnVlLFxuICAgIH0pO1xuICAgIHRoaXMucHJveHlSZXFSZXMgPSB0aGlzLmp3cHJveHkucHJveHlSZXFSZXMuYmluZCh0aGlzLmp3cHJveHkpO1xuICAgIHRoaXMucHJveHlDb21tYW5kID0gdGhpcy5qd3Byb3h5LmNvbW1hbmQuYmluZCh0aGlzLmp3cHJveHkpO1xuICAgIHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZSA9IHtcbiAgICAgIGV4aXRlZDogZmFsc2UsXG4gICAgICBjcmFzaGVkOiBmYWxzZSxcbiAgICB9O1xuXG4gICAgY29uc3QgbW9kU2VydmVyTmFtZSA9IGZzLnNhbml0aXplTmFtZShgJHtURVNUX0FQS19QS0d9XyR7dmVyc2lvbn1fJHt0aGlzLmFwcFBhY2thZ2V9XyR7dGhpcy5hZGIuY3VyRGV2aWNlSWR9LmFwa2AsIHtcbiAgICAgIHJlcGxhY2VtZW50OiAnLScsXG4gICAgfSk7XG4gICAgdGhpcy5tb2RTZXJ2ZXJQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMudG1wRGlyLCBtb2RTZXJ2ZXJOYW1lKTtcbiAgICB0aGlzLnNob3dHcmFkbGVMb2cgPSBvcHRzLnNob3dHcmFkbGVMb2c7XG4gICAgdGhpcy5lc3ByZXNzb0J1aWxkQ29uZmlnID0gb3B0cy5lc3ByZXNzb0J1aWxkQ29uZmlnO1xuXG4gICAgdGhpcy5zZXJ2ZXJMYXVuY2hUaW1lb3V0ID0gb3B0cy5zZXJ2ZXJMYXVuY2hUaW1lb3V0IHx8IEVTUFJFU1NPX1NFUlZFUl9MQVVOQ0hfVElNRU9VVF9NUztcbiAgICB0aGlzLmFuZHJvaWRJbnN0YWxsVGltZW91dCA9IG9wdHMuYW5kcm9pZEluc3RhbGxUaW1lb3V0O1xuXG4gICAgdGhpcy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSA9IG9wdHMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2U7XG5cbiAgICAvLyBFc3ByZXNzbyBTZXJ2ZXIgYXBwIG5lZWRzIHRvIGJlIHNpZ25lZCB3aXRoIHNhbWUga2V5U3RvcmUgYXMgYXBwUGFja2FnZVxuICAgIGlmIChvcHRzLnVzZUtleXN0b3JlICYmIG9wdHMua2V5c3RvcmVQYXRoICYmIG9wdHMua2V5c3RvcmVQYXNzd29yZCAmJiBvcHRzLmtleUFsaWFzICYmIG9wdHMua2V5UGFzc3dvcmQpIHtcbiAgICAgIHRoaXMuc2lnbmluZ0NvbmZpZyA9IGJ1aWxkU2VydmVyU2lnbmluZ0NvbmZpZyh7XG4gICAgICAgIGtleXN0b3JlRmlsZTogb3B0cy5rZXlzdG9yZVBhdGgsXG4gICAgICAgIGtleXN0b3JlUGFzc3dvcmQ6IG9wdHMua2V5c3RvcmVQYXNzd29yZCxcbiAgICAgICAga2V5QWxpYXM6IG9wdHMua2V5QWxpYXMsXG4gICAgICAgIGtleVBhc3N3b3JkOiBvcHRzLmtleVBhc3N3b3JkXG4gICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaWduaW5nQ29uZmlnID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBpc0FwcFBhY2thZ2VDaGFuZ2VkICgpIHtcbiAgICBpZiAoIWF3YWl0IHRoaXMuYWRiLmZpbGVFeGlzdHMoVEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoJ1RoZSBwcmV2aW91cyB0YXJnZXQgYXBwbGljYXRpb24gcGFja2FnZSBpcyB1bmtub3duJyk7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAgY29uc3QgcHJldmlvdXNBcHBQYWNrYWdlID0gKGF3YWl0IHRoaXMuYWRiLnNoZWxsKFsnY2F0JywgVEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSXSkpLnRyaW0oKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIHByZXZpb3VzIHRhcmdldCBhcHBsaWNhdGlvbiBwYWNrYWdlIHdhcyAnJHtwcmV2aW91c0FwcFBhY2thZ2V9Jy4gYCArXG4gICAgICBgVGhlIGN1cnJlbnQgcGFja2FnZSBpcyAnJHt0aGlzLmFwcFBhY2thZ2V9J2ApO1xuICAgIHJldHVybiBwcmV2aW91c0FwcFBhY2thZ2UgIT09IHRoaXMuYXBwUGFja2FnZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbnN0YWxscyBFc3ByZXNzbyBzZXJ2ZXIgYXBrIG9uIHRvIHRoZSBkZXZpY2Ugb3IgZW11bGF0b3IuXG4gICAqIEVhY2ggYWRiIGNvbW1hbmQgdXNlcyBkZWZhdWx0IHRpbWVvdXQgYnkgdGhlbS5cbiAgICovXG4gIGFzeW5jIGluc3RhbGxTZXJ2ZXIgKCkge1xuICAgIGNvbnN0IGFwcFN0YXRlID0gYXdhaXQgdGhpcy5hZGIuZ2V0QXBwbGljYXRpb25JbnN0YWxsU3RhdGUodGhpcy5tb2RTZXJ2ZXJQYXRoLCBURVNUX0FQS19QS0cpO1xuXG4gICAgY29uc3Qgc2hvdWxkVW5pbnN0YWxsQXBwID0gW1xuICAgICAgdGhpcy5hZGIuQVBQX0lOU1RBTExfU1RBVEUuT0xERVJfVkVSU0lPTl9JTlNUQUxMRUQsXG4gICAgICB0aGlzLmFkYi5BUFBfSU5TVEFMTF9TVEFURS5ORVdFUl9WRVJTSU9OX0lOU1RBTExFRFxuICAgIF0uaW5jbHVkZXMoYXBwU3RhdGUpO1xuICAgIGNvbnN0IHNob3VsZEluc3RhbGxBcHAgPSBzaG91bGRVbmluc3RhbGxBcHAgfHwgW1xuICAgICAgdGhpcy5hZGIuQVBQX0lOU1RBTExfU1RBVEUuTk9UX0lOU1RBTExFRFxuICAgIF0uaW5jbHVkZXMoYXBwU3RhdGUpO1xuXG4gICAgaWYgKHNob3VsZFVuaW5zdGFsbEFwcCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgVW5pbnN0YWxsaW5nIEVzcHJlc3NvIFRlc3QgU2VydmVyIGFwayBmcm9tIHRoZSB0YXJnZXQgZGV2aWNlIChwa2c6ICcke1RFU1RfQVBLX1BLR30nKWApO1xuICAgICAgdHJ5IHtcbiAgICAgICAgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKFRFU1RfQVBLX1BLRyk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cud2FybihgRXJyb3IgdW5pbnN0YWxsaW5nICcke1RFU1RfQVBLX1BLR30nOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChzaG91bGRJbnN0YWxsQXBwKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBJbnN0YWxsaW5nIEVzcHJlc3NvIFRlc3QgU2VydmVyIGFwayBmcm9tIHRoZSB0YXJnZXQgZGV2aWNlIChwYXRoOiAnJHt0aGlzLm1vZFNlcnZlclBhdGh9JylgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLmluc3RhbGwodGhpcy5tb2RTZXJ2ZXJQYXRoLCB7IHJlcGxhY2U6IGZhbHNlLCB0aW1lb3V0OiB0aGlzLmFuZHJvaWRJbnN0YWxsVGltZW91dCB9KTtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgSW5zdGFsbGVkIEVzcHJlc3NvIFRlc3QgU2VydmVyIGFwayAnJHt0aGlzLm1vZFNlcnZlclBhdGh9JyAocGtnOiAnJHtURVNUX0FQS19QS0d9JylgKTtcbiAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBDYW5ub3QgaW5zdGFsbCAnJHt0aGlzLm1vZFNlcnZlclBhdGh9JyBiZWNhdXNlIG9mICcke2Vyci5tZXNzYWdlfSdgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBhc3luYyBpbnN0YWxsVGVzdEFwayAoKSB7XG4gICAgbGV0IHJlYnVpbGQgPSB0aGlzLmZvcmNlRXNwcmVzc29SZWJ1aWxkO1xuICAgIGlmIChyZWJ1aWxkKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgJ2ZvcmNlRXNwcmVzc29SZWJ1aWxkJyBjYXBhYmlsaXR5IGlzIGVuYWJsZWRgKTtcbiAgICB9IGVsc2UgaWYgKGF3YWl0IHRoaXMuaXNBcHBQYWNrYWdlQ2hhbmdlZCgpKSB7XG4gICAgICB0aGlzLmxvZy5pbmZvKGBGb3JjaW5nIEVzcHJlc3NvIHNlcnZlciByZWJ1aWxkIGJlY2F1c2Ugb2YgY2hhbmdlZCBhcHBsaWNhdGlvbiBwYWNrYWdlYCk7XG4gICAgICByZWJ1aWxkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAocmVidWlsZCAmJiBhd2FpdCBmcy5leGlzdHModGhpcy5tb2RTZXJ2ZXJQYXRoKSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYERlbGV0aW5nIHRoZSBvYnNvbGV0ZSBFc3ByZXNzbyBzZXJ2ZXIgcGFja2FnZSAnJHt0aGlzLm1vZFNlcnZlclBhdGh9J2ApO1xuICAgICAgYXdhaXQgZnMudW5saW5rKHRoaXMubW9kU2VydmVyUGF0aCk7XG4gICAgfVxuICAgIGlmICghKGF3YWl0IGZzLmV4aXN0cyh0aGlzLm1vZFNlcnZlclBhdGgpKSkge1xuICAgICAgYXdhaXQgdGhpcy5idWlsZE5ld01vZFNlcnZlcigpO1xuICAgIH1cbiAgICBjb25zdCBpc1NpZ25lZCA9IGF3YWl0IHRoaXMuYWRiLmNoZWNrQXBrQ2VydCh0aGlzLm1vZFNlcnZlclBhdGgsIFRFU1RfQVBLX1BLRyk7XG4gICAgaWYgKCFpc1NpZ25lZCkge1xuICAgICAgYXdhaXQgdGhpcy5hZGIuc2lnbih0aGlzLm1vZFNlcnZlclBhdGgpO1xuICAgIH1cbiAgICBpZiAoKHJlYnVpbGQgfHwgIWlzU2lnbmVkKSAmJiBhd2FpdCB0aGlzLmFkYi51bmluc3RhbGxBcGsoVEVTVF9BUEtfUEtHKSkge1xuICAgICAgdGhpcy5sb2cuaW5mbygnVW5pbnN0YWxsZWQgdGhlIG9ic29sZXRlIEVzcHJlc3NvIHNlcnZlciBwYWNrYWdlIGZyb20gdGhlIGRldmljZSB1bmRlciB0ZXN0Jyk7XG4gICAgfVxuXG4gICAgYXdhaXQgdGhpcy5pbnN0YWxsU2VydmVyKCk7XG4gIH1cblxuICBhc3luYyBidWlsZE5ld01vZFNlcnZlciAoKSB7XG4gICAgbGV0IGJ1aWxkQ29uZmlndXJhdGlvbiA9IHt9O1xuICAgIGlmICh0aGlzLmVzcHJlc3NvQnVpbGRDb25maWcpIHtcbiAgICAgIGxldCBidWlsZENvbmZpZ3VyYXRpb25TdHI7XG4gICAgICBpZiAoYXdhaXQgZnMuZXhpc3RzKHRoaXMuZXNwcmVzc29CdWlsZENvbmZpZykpIHtcbiAgICAgICAgdGhpcy5sb2cuaW5mbyhgTG9hZGluZyB0aGUgYnVpbGQgY29uZmlndXJhdGlvbiBmcm9tICcke3RoaXMuZXNwcmVzc29CdWlsZENvbmZpZ30nYCk7XG4gICAgICAgIGJ1aWxkQ29uZmlndXJhdGlvblN0ciA9IGF3YWl0IGZzLnJlYWRGaWxlKHRoaXMuZXNwcmVzc29CdWlsZENvbmZpZywgJ3V0ZjgnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYExvYWRpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZnJvbSAnZXNwcmVzc29CdWlsZENvbmZpZycgY2FwYWJpbGl0eWApO1xuICAgICAgICBidWlsZENvbmZpZ3VyYXRpb25TdHIgPSB0aGlzLmVzcHJlc3NvQnVpbGRDb25maWc7XG4gICAgICB9XG4gICAgICB0cnkge1xuICAgICAgICBidWlsZENvbmZpZ3VyYXRpb24gPSBKU09OLnBhcnNlKGJ1aWxkQ29uZmlndXJhdGlvblN0cik7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHRoaXMubG9nLmVycm9yKCdDYW5ub3QgcGFyc2UgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gSlNPTicsIGUpO1xuICAgICAgICB0aHJvdyBlO1xuICAgICAgfVxuICAgIH1cbiAgICBjb25zdCBkaXJOYW1lID0gZnMuc2FuaXRpemVOYW1lKGBlc3ByZXNzby1zZXJ2ZXItJHt0aGlzLmFkYi5jdXJEZXZpY2VJZH1gLCB7XG4gICAgICByZXBsYWNlbWVudDogJy0nLFxuICAgIH0pO1xuICAgIGNvbnN0IHNlcnZlclBhdGggPSBwYXRoLnJlc29sdmUodGhpcy50bXBEaXIsIGRpck5hbWUpO1xuICAgIHRoaXMubG9nLmluZm8oYEJ1aWxkaW5nIGVzcHJlc3NvIHNlcnZlciBpbiAnJHtzZXJ2ZXJQYXRofSdgKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIGJ1aWxkIGZvbGRlciByb290IGNvdWxkIGJlIGN1c3RvbWl6ZWQgYnkgY2hhbmdpbmcgdGhlICd0bXBEaXInIGNhcGFiaWxpdHlgKTtcbiAgICBhd2FpdCBmcy5yaW1yYWYoc2VydmVyUGF0aCk7XG4gICAgYXdhaXQgbWtkaXJwKHNlcnZlclBhdGgpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBDb3B5aW5nIGVzcHJlc3NvIHNlcnZlciB0ZW1wbGF0ZSBmcm9tICgnJHtURVNUX1NFUlZFUl9ST09UfScgdG8gJyR7c2VydmVyUGF0aH0nKWApO1xuICAgIGF3YWl0IGNvcHlHcmFkbGVQcm9qZWN0UmVjdXJzaXZlbHkoVEVTVF9TRVJWRVJfUk9PVCwgc2VydmVyUGF0aCk7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0J1bGRpbmcgZXNwcmVzc28gc2VydmVyJyk7XG4gICAgYXdhaXQgbmV3IFNlcnZlckJ1aWxkZXIodGhpcy5sb2csIHtcbiAgICAgIHNlcnZlclBhdGgsIGJ1aWxkQ29uZmlndXJhdGlvbixcbiAgICAgIHNob3dHcmFkbGVMb2c6IHRoaXMuc2hvd0dyYWRsZUxvZyxcbiAgICAgIHRlc3RBcHBQYWNrYWdlOiB0aGlzLmFwcFBhY2thZ2UsXG4gICAgICBzaWduaW5nQ29uZmlnOiB0aGlzLnNpZ25pbmdDb25maWdcbiAgICB9KS5idWlsZCgpO1xuICAgIGNvbnN0IGFwa1BhdGggPSBwYXRoLnJlc29sdmUoc2VydmVyUGF0aCwgJ2FwcCcsICdidWlsZCcsICdvdXRwdXRzJywgJ2FwaycsICdhbmRyb2lkVGVzdCcsICdkZWJ1ZycsICdhcHAtZGVidWctYW5kcm9pZFRlc3QuYXBrJyk7XG4gICAgdGhpcy5sb2cuZGVidWcoYENvcHlpbmcgYnVpbHQgYXBrIGZyb20gJyR7YXBrUGF0aH0nIHRvICcke3RoaXMubW9kU2VydmVyUGF0aH0nYCk7XG4gICAgYXdhaXQgZnMuY29weUZpbGUoYXBrUGF0aCwgdGhpcy5tb2RTZXJ2ZXJQYXRoKTtcbiAgfVxuXG4gIGFzeW5jIGNsZWFudXBTZXNzaW9uTGVmdG92ZXJzICgpIHtcbiAgICB0aGlzLmxvZy5kZWJ1ZygnUGVyZm9ybWluZyBjbGVhbnVwIG9mIGF1dG9tYXRpb24gbGVmdG92ZXJzJyk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3Qge3ZhbHVlfSA9IChhd2FpdCBheGlvcyh7XG4gICAgICAgIHVybDogYGh0dHA6Ly8ke3RoaXMuaG9zdH06JHt0aGlzLnN5c3RlbVBvcnR9L3Nlc3Npb25zYCxcbiAgICAgICAgdGltZW91dDogNTAwLFxuICAgICAgfSkpLmRhdGE7XG4gICAgICBjb25zdCBhY3RpdmVTZXNzaW9uSWRzID0gdmFsdWUubWFwKChzZXNzKSA9PiBzZXNzLmlkKTtcbiAgICAgIGlmIChhY3RpdmVTZXNzaW9uSWRzLmxlbmd0aCkge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZyhgVGhlIGZvbGxvd2luZyBvYnNvbGV0ZSBzZXNzaW9ucyBhcmUgc3RpbGwgcnVubmluZzogJHtKU09OLnN0cmluZ2lmeShhY3RpdmVTZXNzaW9uSWRzKX1gKTtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoJ0NsZWFuaW5nIHVwIHRoZSBvYnNvbGV0ZSBzZXNzaW9ucycpO1xuICAgICAgICBhd2FpdCBCLmFsbChhY3RpdmVTZXNzaW9uSWRzLm1hcCgoaWQpID0+XG4gICAgICAgICAgYXhpb3Moe1xuICAgICAgICAgICAgdXJsOiBgaHR0cDovLyR7dGhpcy5ob3N0fToke3RoaXMuc3lzdGVtUG9ydH0vc2Vzc2lvbi8ke2lkfWAsXG4gICAgICAgICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgICAgIH0pXG4gICAgICAgICkpO1xuICAgICAgICAvLyBMZXQgYWxsIHNlc3Npb25zIHRvIGJlIHByb3Blcmx5IHRlcm1pbmF0ZWQgYmVmb3JlIGNvbnRpbnVpbmdcbiAgICAgICAgYXdhaXQgQi5kZWxheSgxMDAwKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKCdObyBvYnNvbGV0ZSBzZXNzaW9ucyBoYXZlIGJlZW4gZGV0ZWN0ZWQnKTtcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0aGlzLmxvZy5kZWJ1ZyhgTm8gb2Jzb2xldGUgc2Vzc2lvbnMgaGF2ZSBiZWVuIGRldGVjdGVkICgke2UubWVzc2FnZX0pYCk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc3RhcnRTZXNzaW9uIChjYXBzKSB7XG4gICAgYXdhaXQgdGhpcy5jbGVhbnVwU2Vzc2lvbkxlZnRvdmVycygpO1xuXG4gICAgY29uc3QgY21kID0gW1xuICAgICAgJ3NoZWxsJyxcbiAgICAgICdhbScsICdpbnN0cnVtZW50JyxcbiAgICAgICctdycsXG4gICAgICAnLWUnLCAnZGVidWcnLCBwcm9jZXNzLmVudi5FU1BSRVNTT19KQVZBX0RFQlVHID09PSAndHJ1ZScsXG4gICAgICAnLWUnLCAnZGlzYWJsZUFuYWx5dGljcycsIHRydWUsIC8vIFRvIGF2b2lkIHVuZXhwZWN0ZWQgZXJyb3IgYnkgZ29vZ2xlIGFuYWx5dGljc1xuICAgIF07XG5cbiAgICBpZiAoXy5pc0Jvb2xlYW4odGhpcy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSkpIHtcbiAgICAgIGNtZC5wdXNoKCctZScsICdESVNBQkxFX1NVUFBSRVNTX0FDQ0VTU0lCSUxJVFlfU0VSVklDRVMnLCB0aGlzLmRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlKTtcbiAgICB9XG5cbiAgICBjbWQucHVzaChgJHtURVNUX0FQS19QS0d9L2FuZHJvaWR4LnRlc3QucnVubmVyLkFuZHJvaWRKVW5pdFJ1bm5lcmApO1xuXG4gICAgdGhpcy5sb2cuaW5mbyhgU3RhcnRpbmcgRXNwcmVzc28gU2VydmVyIHYke3ZlcnNpb259IHdpdGggY21kOiBhZGIgJHtjbWQuam9pbignICcpfWApO1xuXG4gICAgbGV0IGhhc1NvY2tldEVycm9yID0gZmFsc2U7XG4gICAgLy8gc3RhcnQgdGhlIGluc3RydW1lbnRhdGlvbiBwcm9jZXNzXG4gICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlID0ge1xuICAgICAgZXhpdGVkOiBmYWxzZSxcbiAgICAgIGNyYXNoZWQ6IGZhbHNlLFxuICAgIH07XG4gICAgdGhpcy5pbnN0UHJvY2VzcyA9IHRoaXMuYWRiLmNyZWF0ZVN1YlByb2Nlc3MoY21kKTtcbiAgICB0aGlzLmluc3RQcm9jZXNzLm9uKCdleGl0JywgKGNvZGUsIHNpZ25hbCkgPT4ge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgSW5zdHJ1bWVudGF0aW9uIHByb2Nlc3MgZXhpdGVkIHdpdGggY29kZSAke2NvZGV9IGZyb20gc2lnbmFsICR7c2lnbmFsfWApO1xuICAgICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlLmV4aXRlZCA9IHRydWU7XG4gICAgfSk7XG4gICAgdGhpcy5pbnN0UHJvY2Vzcy5vbignb3V0cHV0JywgKHN0ZG91dCwgc3RkZXJyKSA9PiB7XG4gICAgICBjb25zdCBsaW5lID0gc3Rkb3V0IHx8IHN0ZGVycjtcbiAgICAgIGlmIChfLmlzRW1wdHkobGluZS50cmltKCkpKSB7XG4gICAgICAgIC8vIERvIG5vdCBwcmludCBlbXB0eSBsaW5lcyBpbnRvIHRoZSBzeXN0ZW0gbG9nXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5sb2cuZGVidWcoYFtJbnN0cnVtZW50YXRpb25dICR7bGluZS50cmltKCl9YCk7XG4gICAgICAvLyBBICdTb2NrZXRFeGNlcHRpb24nIGluZGljYXRlcyB0aGF0IHdlIGNvdWxkbid0IGNvbm5lY3QgdG8gdGhlIEVzcHJlc3NvIHNlcnZlcixcbiAgICAgIC8vIGJlY2F1c2UgdGhlIElOVEVSTkVUIHBlcm1pc3Npb24gaXMgbm90IHNldFxuICAgICAgaWYgKGxpbmUudG9Mb3dlckNhc2UoKS5pbmNsdWRlcygnamF2YS5uZXQuc29ja2V0ZXhjZXB0aW9uJykpIHtcbiAgICAgICAgaGFzU29ja2V0RXJyb3IgPSB0cnVlO1xuICAgICAgfSBlbHNlIGlmIChsaW5lLmluY2x1ZGVzKCdQcm9jZXNzIGNyYXNoZWQnKSkge1xuICAgICAgICB0aGlzLmp3cHJveHkuaW5zdHJ1bWVudGF0aW9uU3RhdGUuY3Jhc2hlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb25zdCB0aW1lciA9IG5ldyB0aW1pbmcuVGltZXIoKS5zdGFydCgpO1xuICAgIGF3YWl0IHRoaXMuaW5zdFByb2Nlc3Muc3RhcnQoMCk7XG4gICAgdGhpcy5sb2cuaW5mbyhgV2FpdGluZyB1cCB0byAke3RoaXMuc2VydmVyTGF1bmNoVGltZW91dH1tcyBmb3IgRXNwcmVzc28gc2VydmVyIHRvIGJlIG9ubGluZWApO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB3YWl0Rm9yQ29uZGl0aW9uKGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGhhc1NvY2tldEVycm9yKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgRXNwcmVzc28gc2VydmVyIGhhcyBmYWlsZWQgdG8gc3RhcnQgZHVlIHRvIGFuIHVuZXhwZWN0ZWQgZXhjZXB0aW9uLiBgICtcbiAgICAgICAgICAgIGBNYWtlIHN1cmUgdGhlICdJTlRFUk5FVCcgcGVybWlzc2lvbiBpcyByZXF1ZXN0ZWQgaW4gdGhlIEFuZHJvaWQgbWFuaWZlc3Qgb2YgeW91ciBgICtcbiAgICAgICAgICAgIGBhcHBsaWNhdGlvbiB1bmRlciB0ZXN0ICg8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT1cImFuZHJvaWQucGVybWlzc2lvbi5JTlRFUk5FVFwiIC8+KWApO1xuICAgICAgICB9IGVsc2UgaWYgKHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZS5leGl0ZWQpIHtcbiAgICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBFc3ByZXNzbyBzZXJ2ZXIgcHJvY2VzcyBoYXMgYmVlbiB1bmV4cGVjdGVkbHkgdGVybWluYXRlZC4gYCArXG4gICAgICAgICAgICBgQ2hlY2sgdGhlIEFwcGl1bSBzZXJ2ZXIgbG9nIGFuZCB0aGUgbG9nY2F0IG91dHB1dCBmb3IgbW9yZSBkZXRhaWxzYCk7XG4gICAgICAgIH1cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCgnL3N0YXR1cycsICdHRVQnKTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICB3YWl0TXM6IHRoaXMuc2VydmVyTGF1bmNoVGltZW91dCxcbiAgICAgICAgaW50ZXJ2YWxNczogNTAwLFxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgaWYgKC9Db25kaXRpb24gdW5tZXQvLnRlc3QoZS5tZXNzYWdlKSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KGBUaW1lZCBvdXQgd2FpdGluZyBmb3IgRXNwcmVzc28gc2VydmVyIHRvIGJlIGAgK1xuICAgICAgICAgIGBvbmxpbmUgd2l0aGluICR7dGhpcy5zZXJ2ZXJMYXVuY2hUaW1lb3V0fW1zLiBUaGUgdGltZW91dCB2YWx1ZSBjb3VsZCBiZSBgICtcbiAgICAgICAgICBgY3VzdG9taXplZCB1c2luZyAnZXNwcmVzc29TZXJ2ZXJMYXVuY2hUaW1lb3V0JyBjYXBhYmlsaXR5YCk7XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgICB0aGlzLmxvZy5pbmZvKGBFc3ByZXNzbyBzZXJ2ZXIgaXMgb25saW5lLiBgICtcbiAgICAgIGBUaGUgaW5pdGlhbGl6YXRpb24gcHJvY2VzcyB0b29rICR7dGltZXIuZ2V0RHVyYXRpb24oKS5hc01pbGxpU2Vjb25kcy50b0ZpeGVkKDApfW1zYCk7XG4gICAgdGhpcy5sb2cuaW5mbygnU3RhcnRpbmcgdGhlIHNlc3Npb24nKTtcblxuICAgIGF3YWl0IHRoaXMuandwcm94eS5jb21tYW5kKCcvc2Vzc2lvbicsICdQT1NUJywge1xuICAgICAgY2FwYWJpbGl0aWVzOiB7XG4gICAgICAgIGZpcnN0TWF0Y2g6IFtjYXBzXSxcbiAgICAgICAgYWx3YXlzTWF0Y2g6IHt9XG4gICAgICB9XG4gICAgfSk7XG4gICAgYXdhaXQgdGhpcy5yZWNvcmRUYXJnZXRBcHBQYWNrYWdlKCk7XG4gIH1cblxuICBhc3luYyByZWNvcmRUYXJnZXRBcHBQYWNrYWdlICgpIHtcbiAgICBhd2FpdCB0aGlzLmFkYi5zaGVsbChbYGVjaG8gXCIke3RoaXMuYXBwUGFja2FnZX1cIiA+IFwiJHtUQVJHRVRfUEFDS0FHRV9DT05UQUlORVJ9XCJgXSk7XG4gICAgdGhpcy5sb2cuaW5mbyhgUmVjb3JkZWQgdGhlIHRhcmdldCBhcHBsaWNhdGlvbiBwYWNrYWdlICcke3RoaXMuYXBwUGFja2FnZX0nIHRvICR7VEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSfWApO1xuICB9XG5cbiAgYXN5bmMgZGVsZXRlU2Vzc2lvbiAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ0RlbGV0aW5nIEVzcHJlc3NvIHNlcnZlciBzZXNzaW9uJyk7XG4gICAgLy8gcmVseSBvbiBqd3Byb3h5J3MgaW50ZWxsaWdlbmNlIHRvIGtub3cgd2hhdCB3ZSdyZSB0YWxraW5nIGFib3V0IGFuZFxuICAgIC8vIGRlbGV0ZSB0aGUgY3VycmVudCBzZXNzaW9uXG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMuandwcm94eS5jb21tYW5kKCcvJywgJ0RFTEVURScpO1xuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgdGhpcy5sb2cud2FybihgRGlkIG5vdCBnZXQgY29uZmlybWF0aW9uIEVzcHJlc3NvIGRlbGV0ZVNlc3Npb24gd29ya2VkOyBgICtcbiAgICAgICAgICBgRXJyb3Igd2FzOiAke2Vycn1gKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pbnN0UHJvY2VzcyAmJiB0aGlzLmluc3RQcm9jZXNzLmlzUnVubmluZykge1xuICAgICAgYXdhaXQgdGhpcy5pbnN0UHJvY2Vzcy5zdG9wKCk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IEVzcHJlc3NvUnVubmVyLCBSRVFVSVJFRF9QQVJBTVMsIFRFU1RfQVBLX1BLRyB9O1xuZXhwb3J0IGRlZmF1bHQgRXNwcmVzc29SdW5uZXI7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0EsTUFBTUEsZ0JBQWdCLEdBQUdDLGNBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixJQUE5QixFQUFvQyxpQkFBcEMsQ0FBekI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHLCtCQUFyQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUcsQ0FDdEIsS0FEc0IsRUFFdEIsUUFGc0IsRUFHdEIsTUFIc0IsRUFJdEIsWUFKc0IsRUFLdEIsWUFMc0IsRUFNdEIsWUFOc0IsRUFPdEIsc0JBUHNCLENBQXhCOztBQVNBLE1BQU1DLGlDQUFpQyxHQUFHLEtBQTFDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcscUNBQWpDOztBQUVBLE1BQU1DLGFBQU4sU0FBNEJDLG1CQUE1QixDQUFvQztFQUNoQixNQUFaQyxZQUFZLENBQUVDLEdBQUYsRUFBT0MsTUFBUCxFQUFlQyxJQUFJLEdBQUcsSUFBdEIsRUFBNEI7SUFDNUMsTUFBTTtNQUFDQyxPQUFEO01BQVVDO0lBQVYsSUFBb0IsS0FBS0Msb0JBQS9COztJQUNBLElBQUlE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
|
|
357
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2VzcHJlc3NvLXJ1bm5lci5qcyIsIm5hbWVzIjpbIlRFU1RfU0VSVkVSX1JPT1QiLCJwYXRoIiwicmVzb2x2ZSIsIl9fZGlybmFtZSIsIlRFU1RfQVBLX1BLRyIsIlJFUVVJUkVEX1BBUkFNUyIsIkVTUFJFU1NPX1NFUlZFUl9MQVVOQ0hfVElNRU9VVF9NUyIsIlRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUiIsIkVzcHJlc3NvUHJveHkiLCJKV1Byb3h5IiwicHJveHlDb21tYW5kIiwidXJsIiwibWV0aG9kIiwiYm9keSIsImNyYXNoZWQiLCJleGl0ZWQiLCJpbnN0cnVtZW50YXRpb25TdGF0ZSIsImVycm9ycyIsIkludmFsaWRDb250ZXh0RXJyb3IiLCJFc3ByZXNzb1J1bm5lciIsImNvbnN0cnVjdG9yIiwibG9nIiwib3B0cyIsInJlcSIsInV0aWwiLCJoYXNWYWx1ZSIsIkVycm9yIiwiandwcm94eSIsInNlcnZlciIsImhvc3QiLCJwb3J0Iiwic3lzdGVtUG9ydCIsImJhc2UiLCJrZWVwQWxpdmUiLCJwcm94eVJlcVJlcyIsImJpbmQiLCJjb21tYW5kIiwibW9kU2VydmVyTmFtZSIsImZzIiwic2FuaXRpemVOYW1lIiwidmVyc2lvbiIsImFwcFBhY2thZ2UiLCJhZGIiLCJjdXJEZXZpY2VJZCIsInJlcGxhY2VtZW50IiwibW9kU2VydmVyUGF0aCIsInRtcERpciIsInNob3dHcmFkbGVMb2ciLCJlc3ByZXNzb0J1aWxkQ29uZmlnIiwic2VydmVyTGF1bmNoVGltZW91dCIsImFuZHJvaWRJbnN0YWxsVGltZW91dCIsImRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlIiwidXNlS2V5c3RvcmUiLCJrZXlzdG9yZVBhdGgiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsInNpZ25pbmdDb25maWciLCJidWlsZFNlcnZlclNpZ25pbmdDb25maWciLCJrZXlzdG9yZUZpbGUiLCJpc0FwcFBhY2thZ2VDaGFuZ2VkIiwiZmlsZUV4aXN0cyIsImRlYnVnIiwicHJldmlvdXNBcHBQYWNrYWdlIiwic2hlbGwiLCJ0cmltIiwiaW5zdGFsbFNlcnZlciIsImFwcFN0YXRlIiwiZ2V0QXBwbGljYXRpb25JbnN0YWxsU3RhdGUiLCJzaG91bGRVbmluc3RhbGxBcHAiLCJBUFBfSU5TVEFMTF9TVEFURSIsIk9MREVSX1ZFUlNJT05fSU5TVEFMTEVEIiwiTkVXRVJfVkVSU0lPTl9JTlNUQUxMRUQiLCJpbmNsdWRlcyIsInNob3VsZEluc3RhbGxBcHAiLCJOT1RfSU5TVEFMTEVEIiwiaW5mbyIsInVuaW5zdGFsbEFwayIsImVyciIsIndhcm4iLCJtZXNzYWdlIiwiaW5zdGFsbCIsInJlcGxhY2UiLCJ0aW1lb3V0IiwiZXJyb3JBbmRUaHJvdyIsImluc3RhbGxUZXN0QXBrIiwicmVidWlsZCIsImZvcmNlRXNwcmVzc29SZWJ1aWxkIiwiZXhpc3RzIiwidW5saW5rIiwiYnVpbGROZXdNb2RTZXJ2ZXIiLCJpc1NpZ25lZCIsImNoZWNrQXBrQ2VydCIsInNpZ24iLCJidWlsZENvbmZpZ3VyYXRpb24iLCJidWlsZENvbmZpZ3VyYXRpb25TdHIiLCJyZWFkRmlsZSIsIkpTT04iLCJwYXJzZSIsImUiLCJlcnJvciIsImRpck5hbWUiLCJzZXJ2ZXJQYXRoIiwicmltcmFmIiwibWtkaXJwIiwiY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSIsIlNlcnZlckJ1aWxkZXIiLCJ0ZXN0QXBwUGFja2FnZSIsImJ1aWxkIiwiYXBrUGF0aCIsImNvcHlGaWxlIiwiY2xlYW51cFNlc3Npb25MZWZ0b3ZlcnMiLCJ2YWx1ZSIsImF4aW9zIiwiZGF0YSIsImFjdGl2ZVNlc3Npb25JZHMiLCJtYXAiLCJzZXNzIiwiaWQiLCJsZW5ndGgiLCJzdHJpbmdpZnkiLCJCIiwiYWxsIiwiZGVsYXkiLCJzdGFydFNlc3Npb24iLCJjYXBzIiwiY21kIiwicHJvY2VzcyIsImVudiIsIkVTUFJFU1NPX0pBVkFfREVCVUciLCJfIiwiaXNCb29sZWFuIiwicHVzaCIsImpvaW4iLCJoYXNTb2NrZXRFcnJvciIsImluc3RQcm9jZXNzIiwiY3JlYXRlU3ViUHJvY2VzcyIsIm9uIiwiY29kZSIsInNpZ25hbCIsInN0ZG91dCIsInN0ZGVyciIsImxpbmUiLCJpc0VtcHR5IiwidG9Mb3dlckNhc2UiLCJ0aW1lciIsInRpbWluZyIsIlRpbWVyIiwic3RhcnQiLCJ3YWl0Rm9yQ29uZGl0aW9uIiwid2FpdE1zIiwiaW50ZXJ2YWxNcyIsInRlc3QiLCJnZXREdXJhdGlvbiIsImFzTWlsbGlTZWNvbmRzIiwidG9GaXhlZCIsImNhcGFiaWxpdGllcyIsImZpcnN0TWF0Y2giLCJhbHdheXNNYXRjaCIsInJlY29yZFRhcmdldEFwcFBhY2thZ2UiLCJkZWxldGVTZXNzaW9uIiwiaXNSdW5uaW5nIiwic3RvcCJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9lc3ByZXNzby1ydW5uZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSldQcm94eSwgZXJyb3JzIH0gZnJvbSAnQGFwcGl1bS9iYXNlLWRyaXZlcic7XG5pbXBvcnQgeyB3YWl0Rm9yQ29uZGl0aW9uIH0gZnJvbSAnYXN5bmNib3gnO1xuaW1wb3J0IHsgU2VydmVyQnVpbGRlciwgYnVpbGRTZXJ2ZXJTaWduaW5nQ29uZmlnIH0gZnJvbSAnLi9zZXJ2ZXItYnVpbGRlcic7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IGZzLCB1dGlsLCBta2RpcnAsIHRpbWluZyB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgeyB2ZXJzaW9uIH0gZnJvbSAnLi4vLi4vcGFja2FnZS5qc29uJzsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBpbXBvcnQvbm8tdW5yZXNvbHZlZFxuaW1wb3J0IEIgZnJvbSAnYmx1ZWJpcmQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7IGNvcHlHcmFkbGVQcm9qZWN0UmVjdXJzaXZlbHkgfSBmcm9tICcuL3V0aWxzJztcbmltcG9ydCBheGlvcyBmcm9tICdheGlvcyc7XG5cblxuY29uc3QgVEVTVF9TRVJWRVJfUk9PVCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICcuLicsICcuLicsICdlc3ByZXNzby1zZXJ2ZXInKTtcbmNvbnN0IFRFU1RfQVBLX1BLRyA9ICdpby5hcHBpdW0uZXNwcmVzc29zZXJ2ZXIudGVzdCc7XG5jb25zdCBSRVFVSVJFRF9QQVJBTVMgPSBbXG4gICdhZGInLFxuICAndG1wRGlyJyxcbiAgJ2hvc3QnLFxuICAnc3lzdGVtUG9ydCcsXG4gICdkZXZpY2VQb3J0JyxcbiAgJ2FwcFBhY2thZ2UnLFxuICAnZm9yY2VFc3ByZXNzb1JlYnVpbGQnLFxuXTtcbmNvbnN0IEVTUFJFU1NPX1NFUlZFUl9MQVVOQ0hfVElNRU9VVF9NUyA9IDQ1MDAwO1xuY29uc3QgVEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSID0gJy9kYXRhL2xvY2FsL3RtcC9lc3ByZXNzby5hcHBwYWNrYWdlJztcblxuY2xhc3MgRXNwcmVzc29Qcm94eSBleHRlbmRzIEpXUHJveHkge1xuICBhc3luYyBwcm94eUNvbW1hbmQgKHVybCwgbWV0aG9kLCBib2R5ID0gbnVsbCkge1xuICAgIGNvbnN0IHtjcmFzaGVkLCBleGl0ZWR9ID0gdGhpcy5pbnN0cnVtZW50YXRpb25TdGF0ZTtcbiAgICBpZiAoZXhpdGVkKSB7XG4gICAgICB0aHJvdyBuZXcgZXJyb3JzLkludmFsaWRDb250ZXh0RXJyb3IoYCcke21ldGhvZH0gJHt1cmx9JyBjYW5ub3QgYmUgcHJveGllZCB0byBFc3ByZXNzbyBzZXJ2ZXIgYmVjYXVzZSBgICtcbiAgICAgICAgYHRoZSBpbnN0cnVtZW50YXRpb24gcHJvY2VzcyBoYXMgJHtjcmFzaGVkID8gJ2NyYXNoZWQnIDogJ2JlZW4gdW5leHBlY3RlZGx5IHRlcm1pbmF0ZWQnfS4gYCArXG4gICAgICAgIGBDaGVjayB0aGUgQXBwaXVtIHNlcnZlciBsb2cgYW5kIHRoZSBsb2djYXQgb3V0cHV0IGZvciBtb3JlIGRldGFpbHNgKTtcbiAgICB9XG4gICAgcmV0dXJuIGF3YWl0IHN1cGVyLnByb3h5Q29tbWFuZCh1cmwsIG1ldGhvZCwgYm9keSk7XG4gIH1cbn1cblxuY2xhc3MgRXNwcmVzc29SdW5uZXIge1xuICBjb25zdHJ1Y3RvciAobG9nLCBvcHRzID0ge30pIHtcbiAgICBmb3IgKGxldCByZXEgb2YgUkVRVUlSRURfUEFSQU1TKSB7XG4gICAgICBpZiAoIW9wdHMgfHwgIXV0aWwuaGFzVmFsdWUob3B0c1tyZXFdKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE9wdGlvbiAnJHtyZXF9JyBpcyByZXF1aXJlZCFgKTtcbiAgICAgIH1cbiAgICAgIHRoaXNbcmVxXSA9IG9wdHNbcmVxXTtcbiAgICB9XG4gICAgdGhpcy5sb2cgPSBsb2c7XG4gICAgdGhpcy5qd3Byb3h5ID0gbmV3IEVzcHJlc3NvUHJveHkoe1xuICAgICAgbG9nLFxuICAgICAgc2VydmVyOiB0aGlzLmhvc3QsXG4gICAgICBwb3J0OiB0aGlzLnN5c3RlbVBvcnQsXG4gICAgICBiYXNlOiAnJyxcbiAgICAgIGtlZXBBbGl2ZTogdHJ1ZSxcbiAgICB9KTtcbiAgICB0aGlzLnByb3h5UmVxUmVzID0gdGhpcy5qd3Byb3h5LnByb3h5UmVxUmVzLmJpbmQodGhpcy5qd3Byb3h5KTtcbiAgICB0aGlzLnByb3h5Q29tbWFuZCA9IHRoaXMuandwcm94eS5jb21tYW5kLmJpbmQodGhpcy5qd3Byb3h5KTtcbiAgICB0aGlzLmp3cHJveHkuaW5zdHJ1bWVudGF0aW9uU3RhdGUgPSB7XG4gICAgICBleGl0ZWQ6IGZhbHNlLFxuICAgICAgY3Jhc2hlZDogZmFsc2UsXG4gICAgfTtcblxuICAgIGNvbnN0IG1vZFNlcnZlck5hbWUgPSBmcy5zYW5pdGl6ZU5hbWUoYCR7VEVTVF9BUEtfUEtHfV8ke3ZlcnNpb259XyR7dGhpcy5hcHBQYWNrYWdlfV8ke3RoaXMuYWRiLmN1ckRldmljZUlkfS5hcGtgLCB7XG4gICAgICByZXBsYWNlbWVudDogJy0nLFxuICAgIH0pO1xuICAgIHRoaXMubW9kU2VydmVyUGF0aCA9IHBhdGgucmVzb2x2ZSh0aGlzLnRtcERpciwgbW9kU2VydmVyTmFtZSk7XG4gICAgdGhpcy5zaG93R3JhZGxlTG9nID0gb3B0cy5zaG93R3JhZGxlTG9nO1xuICAgIHRoaXMuZXNwcmVzc29CdWlsZENvbmZpZyA9IG9wdHMuZXNwcmVzc29CdWlsZENvbmZpZztcblxuICAgIHRoaXMuc2VydmVyTGF1bmNoVGltZW91dCA9IG9wdHMuc2VydmVyTGF1bmNoVGltZW91dCB8fCBFU1BSRVNTT19TRVJWRVJfTEFVTkNIX1RJTUVPVVRfTVM7XG4gICAgdGhpcy5hbmRyb2lkSW5zdGFsbFRpbWVvdXQgPSBvcHRzLmFuZHJvaWRJbnN0YWxsVGltZW91dDtcblxuICAgIHRoaXMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UgPSBvcHRzLmRpc2FibGVTdXBwcmVzc0FjY2Vzc2liaWxpdHlTZXJ2aWNlO1xuXG4gICAgLy8gRXNwcmVzc28gU2VydmVyIGFwcCBuZWVkcyB0byBiZSBzaWduZWQgd2l0aCBzYW1lIGtleVN0b3JlIGFzIGFwcFBhY2thZ2VcbiAgICBpZiAob3B0cy51c2VLZXlzdG9yZSAmJiBvcHRzLmtleXN0b3JlUGF0aCAmJiBvcHRzLmtleXN0b3JlUGFzc3dvcmQgJiYgb3B0cy5rZXlBbGlhcyAmJiBvcHRzLmtleVBhc3N3b3JkKSB7XG4gICAgICB0aGlzLnNpZ25pbmdDb25maWcgPSBidWlsZFNlcnZlclNpZ25pbmdDb25maWcoe1xuICAgICAgICBrZXlzdG9yZUZpbGU6IG9wdHMua2V5c3RvcmVQYXRoLFxuICAgICAgICBrZXlzdG9yZVBhc3N3b3JkOiBvcHRzLmtleXN0b3JlUGFzc3dvcmQsXG4gICAgICAgIGtleUFsaWFzOiBvcHRzLmtleUFsaWFzLFxuICAgICAgICBrZXlQYXNzd29yZDogb3B0cy5rZXlQYXNzd29yZFxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2lnbmluZ0NvbmZpZyA9IG51bGw7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaXNBcHBQYWNrYWdlQ2hhbmdlZCAoKSB7XG4gICAgaWYgKCFhd2FpdCB0aGlzLmFkYi5maWxlRXhpc3RzKFRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUikpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKCdUaGUgcHJldmlvdXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHBhY2thZ2UgaXMgdW5rbm93bicpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICAgIGNvbnN0IHByZXZpb3VzQXBwUGFja2FnZSA9IChhd2FpdCB0aGlzLmFkYi5zaGVsbChbJ2NhdCcsIFRBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUl0pKS50cmltKCk7XG4gICAgdGhpcy5sb2cuZGVidWcoYFRoZSBwcmV2aW91cyB0YXJnZXQgYXBwbGljYXRpb24gcGFja2FnZSB3YXMgJyR7cHJldmlvdXNBcHBQYWNrYWdlfScuIGAgK1xuICAgICAgYFRoZSBjdXJyZW50IHBhY2thZ2UgaXMgJyR7dGhpcy5hcHBQYWNrYWdlfSdgKTtcbiAgICByZXR1cm4gcHJldmlvdXNBcHBQYWNrYWdlICE9PSB0aGlzLmFwcFBhY2thZ2U7XG4gIH1cblxuICAvKipcbiAgICogSW5zdGFsbHMgRXNwcmVzc28gc2VydmVyIGFwayBvbiB0byB0aGUgZGV2aWNlIG9yIGVtdWxhdG9yLlxuICAgKiBFYWNoIGFkYiBjb21tYW5kIHVzZXMgZGVmYXVsdCB0aW1lb3V0IGJ5IHRoZW0uXG4gICAqL1xuICBhc3luYyBpbnN0YWxsU2VydmVyICgpIHtcbiAgICBjb25zdCBhcHBTdGF0ZSA9IGF3YWl0IHRoaXMuYWRiLmdldEFwcGxpY2F0aW9uSW5zdGFsbFN0YXRlKHRoaXMubW9kU2VydmVyUGF0aCwgVEVTVF9BUEtfUEtHKTtcblxuICAgIGNvbnN0IHNob3VsZFVuaW5zdGFsbEFwcCA9IFtcbiAgICAgIHRoaXMuYWRiLkFQUF9JTlNUQUxMX1NUQVRFLk9MREVSX1ZFUlNJT05fSU5TVEFMTEVELFxuICAgICAgdGhpcy5hZGIuQVBQX0lOU1RBTExfU1RBVEUuTkVXRVJfVkVSU0lPTl9JTlNUQUxMRURcbiAgICBdLmluY2x1ZGVzKGFwcFN0YXRlKTtcbiAgICBjb25zdCBzaG91bGRJbnN0YWxsQXBwID0gc2hvdWxkVW5pbnN0YWxsQXBwIHx8IFtcbiAgICAgIHRoaXMuYWRiLkFQUF9JTlNUQUxMX1NUQVRFLk5PVF9JTlNUQUxMRURcbiAgICBdLmluY2x1ZGVzKGFwcFN0YXRlKTtcblxuICAgIGlmIChzaG91bGRVbmluc3RhbGxBcHApIHtcbiAgICAgIHRoaXMubG9nLmluZm8oYFVuaW5zdGFsbGluZyBFc3ByZXNzbyBUZXN0IFNlcnZlciBhcGsgZnJvbSB0aGUgdGFyZ2V0IGRldmljZSAocGtnOiAnJHtURVNUX0FQS19QS0d9JylgKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHRoaXMuYWRiLnVuaW5zdGFsbEFwayhURVNUX0FQS19QS0cpO1xuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHRoaXMubG9nLndhcm4oYEVycm9yIHVuaW5zdGFsbGluZyAnJHtURVNUX0FQS19QS0d9JzogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoc2hvdWxkSW5zdGFsbEFwcCkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgSW5zdGFsbGluZyBFc3ByZXNzbyBUZXN0IFNlcnZlciBhcGsgZnJvbSB0aGUgdGFyZ2V0IGRldmljZSAocGF0aDogJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofScpYCk7XG4gICAgICB0cnkge1xuICAgICAgICBhd2FpdCB0aGlzLmFkYi5pbnN0YWxsKHRoaXMubW9kU2VydmVyUGF0aCwgeyByZXBsYWNlOiBmYWxzZSwgdGltZW91dDogdGhpcy5hbmRyb2lkSW5zdGFsbFRpbWVvdXQgfSk7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYEluc3RhbGxlZCBFc3ByZXNzbyBUZXN0IFNlcnZlciBhcGsgJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofScgKHBrZzogJyR7VEVTVF9BUEtfUEtHfScpYCk7XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgQ2Fubm90IGluc3RhbGwgJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofScgYmVjYXVzZSBvZiAnJHtlcnIubWVzc2FnZX0nYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgaW5zdGFsbFRlc3RBcGsgKCkge1xuICAgIGxldCByZWJ1aWxkID0gdGhpcy5mb3JjZUVzcHJlc3NvUmVidWlsZDtcbiAgICBpZiAocmVidWlsZCkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYCdmb3JjZUVzcHJlc3NvUmVidWlsZCcgY2FwYWJpbGl0eSBpcyBlbmFibGVkYCk7XG4gICAgfSBlbHNlIGlmIChhd2FpdCB0aGlzLmlzQXBwUGFja2FnZUNoYW5nZWQoKSkge1xuICAgICAgdGhpcy5sb2cuaW5mbyhgRm9yY2luZyBFc3ByZXNzbyBzZXJ2ZXIgcmVidWlsZCBiZWNhdXNlIG9mIGNoYW5nZWQgYXBwbGljYXRpb24gcGFja2FnZWApO1xuICAgICAgcmVidWlsZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKHJlYnVpbGQgJiYgYXdhaXQgZnMuZXhpc3RzKHRoaXMubW9kU2VydmVyUGF0aCkpIHtcbiAgICAgIHRoaXMubG9nLmRlYnVnKGBEZWxldGluZyB0aGUgb2Jzb2xldGUgRXNwcmVzc28gc2VydmVyIHBhY2thZ2UgJyR7dGhpcy5tb2RTZXJ2ZXJQYXRofSdgKTtcbiAgICAgIGF3YWl0IGZzLnVubGluayh0aGlzLm1vZFNlcnZlclBhdGgpO1xuICAgIH1cbiAgICBpZiAoIShhd2FpdCBmcy5leGlzdHModGhpcy5tb2RTZXJ2ZXJQYXRoKSkpIHtcbiAgICAgIGF3YWl0IHRoaXMuYnVpbGROZXdNb2RTZXJ2ZXIoKTtcbiAgICB9XG4gICAgY29uc3QgaXNTaWduZWQgPSBhd2FpdCB0aGlzLmFkYi5jaGVja0Fwa0NlcnQodGhpcy5tb2RTZXJ2ZXJQYXRoLCBURVNUX0FQS19QS0cpO1xuICAgIGlmICghaXNTaWduZWQpIHtcbiAgICAgIGF3YWl0IHRoaXMuYWRiLnNpZ24odGhpcy5tb2RTZXJ2ZXJQYXRoKTtcbiAgICB9XG4gICAgaWYgKChyZWJ1aWxkIHx8ICFpc1NpZ25lZCkgJiYgYXdhaXQgdGhpcy5hZGIudW5pbnN0YWxsQXBrKFRFU1RfQVBLX1BLRykpIHtcbiAgICAgIHRoaXMubG9nLmluZm8oJ1VuaW5zdGFsbGVkIHRoZSBvYnNvbGV0ZSBFc3ByZXNzbyBzZXJ2ZXIgcGFja2FnZSBmcm9tIHRoZSBkZXZpY2UgdW5kZXIgdGVzdCcpO1xuICAgIH1cblxuICAgIGF3YWl0IHRoaXMuaW5zdGFsbFNlcnZlcigpO1xuICB9XG5cbiAgYXN5bmMgYnVpbGROZXdNb2RTZXJ2ZXIgKCkge1xuICAgIGxldCBidWlsZENvbmZpZ3VyYXRpb24gPSB7fTtcbiAgICBpZiAodGhpcy5lc3ByZXNzb0J1aWxkQ29uZmlnKSB7XG4gICAgICBsZXQgYnVpbGRDb25maWd1cmF0aW9uU3RyO1xuICAgICAgaWYgKGF3YWl0IGZzLmV4aXN0cyh0aGlzLmVzcHJlc3NvQnVpbGRDb25maWcpKSB7XG4gICAgICAgIHRoaXMubG9nLmluZm8oYExvYWRpbmcgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gZnJvbSAnJHt0aGlzLmVzcHJlc3NvQnVpbGRDb25maWd9J2ApO1xuICAgICAgICBidWlsZENvbmZpZ3VyYXRpb25TdHIgPSBhd2FpdCBmcy5yZWFkRmlsZSh0aGlzLmVzcHJlc3NvQnVpbGRDb25maWcsICd1dGY4Jyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5pbmZvKGBMb2FkaW5nIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIGZyb20gJ2VzcHJlc3NvQnVpbGRDb25maWcnIGNhcGFiaWxpdHlgKTtcbiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uU3RyID0gdGhpcy5lc3ByZXNzb0J1aWxkQ29uZmlnO1xuICAgICAgfVxuICAgICAgdHJ5IHtcbiAgICAgICAgYnVpbGRDb25maWd1cmF0aW9uID0gSlNPTi5wYXJzZShidWlsZENvbmZpZ3VyYXRpb25TdHIpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICB0aGlzLmxvZy5lcnJvcignQ2Fubm90IHBhcnNlIHRoZSBidWlsZCBjb25maWd1cmF0aW9uIEpTT04nLCBlKTtcbiAgICAgICAgdGhyb3cgZTtcbiAgICAgIH1cbiAgICB9XG4gICAgY29uc3QgZGlyTmFtZSA9IGZzLnNhbml0aXplTmFtZShgZXNwcmVzc28tc2VydmVyLSR7dGhpcy5hZGIuY3VyRGV2aWNlSWR9YCwge1xuICAgICAgcmVwbGFjZW1lbnQ6ICctJyxcbiAgICB9KTtcbiAgICBjb25zdCBzZXJ2ZXJQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMudG1wRGlyLCBkaXJOYW1lKTtcbiAgICB0aGlzLmxvZy5pbmZvKGBCdWlsZGluZyBlc3ByZXNzbyBzZXJ2ZXIgaW4gJyR7c2VydmVyUGF0aH0nYCk7XG4gICAgdGhpcy5sb2cuZGVidWcoYFRoZSBidWlsZCBmb2xkZXIgcm9vdCBjb3VsZCBiZSBjdXN0b21pemVkIGJ5IGNoYW5naW5nIHRoZSAndG1wRGlyJyBjYXBhYmlsaXR5YCk7XG4gICAgYXdhaXQgZnMucmltcmFmKHNlcnZlclBhdGgpO1xuICAgIGF3YWl0IG1rZGlycChzZXJ2ZXJQYXRoKTtcbiAgICB0aGlzLmxvZy5kZWJ1ZyhgQ29weWluZyBlc3ByZXNzbyBzZXJ2ZXIgdGVtcGxhdGUgZnJvbSAoJyR7VEVTVF9TRVJWRVJfUk9PVH0nIHRvICcke3NlcnZlclBhdGh9JylgKTtcbiAgICBhd2FpdCBjb3B5R3JhZGxlUHJvamVjdFJlY3Vyc2l2ZWx5KFRFU1RfU0VSVkVSX1JPT1QsIHNlcnZlclBhdGgpO1xuICAgIHRoaXMubG9nLmRlYnVnKCdCdWxkaW5nIGVzcHJlc3NvIHNlcnZlcicpO1xuICAgIGF3YWl0IG5ldyBTZXJ2ZXJCdWlsZGVyKHRoaXMubG9nLCB7XG4gICAgICBzZXJ2ZXJQYXRoLCBidWlsZENvbmZpZ3VyYXRpb24sXG4gICAgICBzaG93R3JhZGxlTG9nOiB0aGlzLnNob3dHcmFkbGVMb2csXG4gICAgICB0ZXN0QXBwUGFja2FnZTogdGhpcy5hcHBQYWNrYWdlLFxuICAgICAgc2lnbmluZ0NvbmZpZzogdGhpcy5zaWduaW5nQ29uZmlnXG4gICAgfSkuYnVpbGQoKTtcbiAgICBjb25zdCBhcGtQYXRoID0gcGF0aC5yZXNvbHZlKHNlcnZlclBhdGgsICdhcHAnLCAnYnVpbGQnLCAnb3V0cHV0cycsICdhcGsnLCAnYW5kcm9pZFRlc3QnLCAnZGVidWcnLCAnYXBwLWRlYnVnLWFuZHJvaWRUZXN0LmFwaycpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBDb3B5aW5nIGJ1aWx0IGFwayBmcm9tICcke2Fwa1BhdGh9JyB0byAnJHt0aGlzLm1vZFNlcnZlclBhdGh9J2ApO1xuICAgIGF3YWl0IGZzLmNvcHlGaWxlKGFwa1BhdGgsIHRoaXMubW9kU2VydmVyUGF0aCk7XG4gIH1cblxuICBhc3luYyBjbGVhbnVwU2Vzc2lvbkxlZnRvdmVycyAoKSB7XG4gICAgdGhpcy5sb2cuZGVidWcoJ1BlcmZvcm1pbmcgY2xlYW51cCBvZiBhdXRvbWF0aW9uIGxlZnRvdmVycycpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHt2YWx1ZX0gPSAoYXdhaXQgYXhpb3Moe1xuICAgICAgICB1cmw6IGBodHRwOi8vJHt0aGlzLmhvc3R9OiR7dGhpcy5zeXN0ZW1Qb3J0fS9zZXNzaW9uc2AsXG4gICAgICAgIHRpbWVvdXQ6IDUwMCxcbiAgICAgIH0pKS5kYXRhO1xuICAgICAgY29uc3QgYWN0aXZlU2Vzc2lvbklkcyA9IHZhbHVlLm1hcCgoc2VzcykgPT4gc2Vzcy5pZCk7XG4gICAgICBpZiAoYWN0aXZlU2Vzc2lvbklkcy5sZW5ndGgpIHtcbiAgICAgICAgdGhpcy5sb2cuZGVidWcoYFRoZSBmb2xsb3dpbmcgb2Jzb2xldGUgc2Vzc2lvbnMgYXJlIHN0aWxsIHJ1bm5pbmc6ICR7SlNPTi5zdHJpbmdpZnkoYWN0aXZlU2Vzc2lvbklkcyl9YCk7XG4gICAgICAgIHRoaXMubG9nLmRlYnVnKCdDbGVhbmluZyB1cCB0aGUgb2Jzb2xldGUgc2Vzc2lvbnMnKTtcbiAgICAgICAgYXdhaXQgQi5hbGwoYWN0aXZlU2Vzc2lvbklkcy5tYXAoKGlkKSA9PlxuICAgICAgICAgIGF4aW9zKHtcbiAgICAgICAgICAgIHVybDogYGh0dHA6Ly8ke3RoaXMuaG9zdH06JHt0aGlzLnN5c3RlbVBvcnR9L3Nlc3Npb24vJHtpZH1gLFxuICAgICAgICAgICAgbWV0aG9kOiAnREVMRVRFJyxcbiAgICAgICAgICB9KVxuICAgICAgICApKTtcbiAgICAgICAgLy8gTGV0IGFsbCBzZXNzaW9ucyB0byBiZSBwcm9wZXJseSB0ZXJtaW5hdGVkIGJlZm9yZSBjb250aW51aW5nXG4gICAgICAgIGF3YWl0IEIuZGVsYXkoMTAwMCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLmxvZy5kZWJ1ZygnTm8gb2Jzb2xldGUgc2Vzc2lvbnMgaGF2ZSBiZWVuIGRldGVjdGVkJyk7XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgdGhpcy5sb2cuZGVidWcoYE5vIG9ic29sZXRlIHNlc3Npb25zIGhhdmUgYmVlbiBkZXRlY3RlZCAoJHtlLm1lc3NhZ2V9KWApO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIHN0YXJ0U2Vzc2lvbiAoY2Fwcykge1xuICAgIGF3YWl0IHRoaXMuY2xlYW51cFNlc3Npb25MZWZ0b3ZlcnMoKTtcblxuICAgIGNvbnN0IGNtZCA9IFtcbiAgICAgICdzaGVsbCcsXG4gICAgICAnYW0nLCAnaW5zdHJ1bWVudCcsXG4gICAgICAnLXcnLFxuICAgICAgJy1lJywgJ2RlYnVnJywgcHJvY2Vzcy5lbnYuRVNQUkVTU09fSkFWQV9ERUJVRyA9PT0gJ3RydWUnLFxuICAgICAgJy1lJywgJ2Rpc2FibGVBbmFseXRpY3MnLCB0cnVlLCAvLyBUbyBhdm9pZCB1bmV4cGVjdGVkIGVycm9yIGJ5IGdvb2dsZSBhbmFseXRpY3NcbiAgICBdO1xuXG4gICAgaWYgKF8uaXNCb29sZWFuKHRoaXMuZGlzYWJsZVN1cHByZXNzQWNjZXNzaWJpbGl0eVNlcnZpY2UpKSB7XG4gICAgICBjbWQucHVzaCgnLWUnLCAnRElTQUJMRV9TVVBQUkVTU19BQ0NFU1NJQklMSVRZX1NFUlZJQ0VTJywgdGhpcy5kaXNhYmxlU3VwcHJlc3NBY2Nlc3NpYmlsaXR5U2VydmljZSk7XG4gICAgfVxuXG4gICAgY21kLnB1c2goYCR7VEVTVF9BUEtfUEtHfS9hbmRyb2lkeC50ZXN0LnJ1bm5lci5BbmRyb2lkSlVuaXRSdW5uZXJgKTtcblxuICAgIHRoaXMubG9nLmluZm8oYFN0YXJ0aW5nIEVzcHJlc3NvIFNlcnZlciB2JHt2ZXJzaW9ufSB3aXRoIGNtZDogYWRiICR7Y21kLmpvaW4oJyAnKX1gKTtcblxuICAgIGxldCBoYXNTb2NrZXRFcnJvciA9IGZhbHNlO1xuICAgIC8vIHN0YXJ0IHRoZSBpbnN0cnVtZW50YXRpb24gcHJvY2Vzc1xuICAgIHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZSA9IHtcbiAgICAgIGV4aXRlZDogZmFsc2UsXG4gICAgICBjcmFzaGVkOiBmYWxzZSxcbiAgICB9O1xuICAgIHRoaXMuaW5zdFByb2Nlc3MgPSB0aGlzLmFkYi5jcmVhdGVTdWJQcm9jZXNzKGNtZCk7XG4gICAgdGhpcy5pbnN0UHJvY2Vzcy5vbignZXhpdCcsIChjb2RlLCBzaWduYWwpID0+IHtcbiAgICAgIHRoaXMubG9nLmluZm8oYEluc3RydW1lbnRhdGlvbiBwcm9jZXNzIGV4aXRlZCB3aXRoIGNvZGUgJHtjb2RlfSBmcm9tIHNpZ25hbCAke3NpZ25hbH1gKTtcbiAgICAgIHRoaXMuandwcm94eS5pbnN0cnVtZW50YXRpb25TdGF0ZS5leGl0ZWQgPSB0cnVlO1xuICAgIH0pO1xuICAgIHRoaXMuaW5zdFByb2Nlc3Mub24oJ291dHB1dCcsIChzdGRvdXQsIHN0ZGVycikgPT4ge1xuICAgICAgY29uc3QgbGluZSA9IHN0ZG91dCB8fCBzdGRlcnI7XG4gICAgICBpZiAoXy5pc0VtcHR5KGxpbmUudHJpbSgpKSkge1xuICAgICAgICAvLyBEbyBub3QgcHJpbnQgZW1wdHkgbGluZXMgaW50byB0aGUgc3lzdGVtIGxvZ1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9nLmRlYnVnKGBbSW5zdHJ1bWVudGF0aW9uXSAke2xpbmUudHJpbSgpfWApO1xuICAgICAgLy8gQSAnU29ja2V0RXhjZXB0aW9uJyBpbmRpY2F0ZXMgdGhhdCB3ZSBjb3VsZG4ndCBjb25uZWN0IHRvIHRoZSBFc3ByZXNzbyBzZXJ2ZXIsXG4gICAgICAvLyBiZWNhdXNlIHRoZSBJTlRFUk5FVCBwZXJtaXNzaW9uIGlzIG5vdCBzZXRcbiAgICAgIGlmIChsaW5lLnRvTG93ZXJDYXNlKCkuaW5jbHVkZXMoJ2phdmEubmV0LnNvY2tldGV4Y2VwdGlvbicpKSB7XG4gICAgICAgIGhhc1NvY2tldEVycm9yID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSBpZiAobGluZS5pbmNsdWRlcygnUHJvY2VzcyBjcmFzaGVkJykpIHtcbiAgICAgICAgdGhpcy5qd3Byb3h5Lmluc3RydW1lbnRhdGlvblN0YXRlLmNyYXNoZWQgPSB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29uc3QgdGltZXIgPSBuZXcgdGltaW5nLlRpbWVyKCkuc3RhcnQoKTtcbiAgICBhd2FpdCB0aGlzLmluc3RQcm9jZXNzLnN0YXJ0KDApO1xuICAgIHRoaXMubG9nLmluZm8oYFdhaXRpbmcgdXAgdG8gJHt0aGlzLnNlcnZlckxhdW5jaFRpbWVvdXR9bXMgZm9yIEVzcHJlc3NvIHNlcnZlciB0byBiZSBvbmxpbmVgKTtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgd2FpdEZvckNvbmRpdGlvbihhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChoYXNTb2NrZXRFcnJvcikge1xuICAgICAgICAgIHRoaXMubG9nLmVycm9yQW5kVGhyb3coYEVzcHJlc3NvIHNlcnZlciBoYXMgZmFpbGVkIHRvIHN0YXJ0IGR1ZSB0byBhbiB1bmV4cGVjdGVkIGV4Y2VwdGlvbi4gYCArXG4gICAgICAgICAgICBgTWFrZSBzdXJlIHRoZSAnSU5URVJORVQnIHBlcm1pc3Npb24gaXMgcmVxdWVzdGVkIGluIHRoZSBBbmRyb2lkIG1hbmlmZXN0IG9mIHlvdXIgYCArXG4gICAgICAgICAgICBgYXBwbGljYXRpb24gdW5kZXIgdGVzdCAoPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9XCJhbmRyb2lkLnBlcm1pc3Npb24uSU5URVJORVRcIiAvPilgKTtcbiAgICAgICAgfSBlbHNlIGlmICh0aGlzLmp3cHJveHkuaW5zdHJ1bWVudGF0aW9uU3RhdGUuZXhpdGVkKSB7XG4gICAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgRXNwcmVzc28gc2VydmVyIHByb2Nlc3MgaGFzIGJlZW4gdW5leHBlY3RlZGx5IHRlcm1pbmF0ZWQuIGAgK1xuICAgICAgICAgICAgYENoZWNrIHRoZSBBcHBpdW0gc2VydmVyIGxvZyBhbmQgdGhlIGxvZ2NhdCBvdXRwdXQgZm9yIG1vcmUgZGV0YWlsc2ApO1xuICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgYXdhaXQgdGhpcy5qd3Byb3h5LmNvbW1hbmQoJy9zdGF0dXMnLCAnR0VUJyk7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgd2FpdE1zOiB0aGlzLnNlcnZlckxhdW5jaFRpbWVvdXQsXG4gICAgICAgIGludGVydmFsTXM6IDUwMCxcbiAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGlmICgvQ29uZGl0aW9uIHVubWV0Ly50ZXN0KGUubWVzc2FnZSkpIHtcbiAgICAgICAgdGhpcy5sb2cuZXJyb3JBbmRUaHJvdyhgVGltZWQgb3V0IHdhaXRpbmcgZm9yIEVzcHJlc3NvIHNlcnZlciB0byBiZSBgICtcbiAgICAgICAgICBgb25saW5lIHdpdGhpbiAke3RoaXMuc2VydmVyTGF1bmNoVGltZW91dH1tcy4gVGhlIHRpbWVvdXQgdmFsdWUgY291bGQgYmUgYCArXG4gICAgICAgICAgYGN1c3RvbWl6ZWQgdXNpbmcgJ2VzcHJlc3NvU2VydmVyTGF1bmNoVGltZW91dCcgY2FwYWJpbGl0eWApO1xuICAgICAgfVxuICAgICAgdGhyb3cgZTtcbiAgICB9XG4gICAgdGhpcy5sb2cuaW5mbyhgRXNwcmVzc28gc2VydmVyIGlzIG9ubGluZS4gYCArXG4gICAgICBgVGhlIGluaXRpYWxpemF0aW9uIHByb2Nlc3MgdG9vayAke3RpbWVyLmdldER1cmF0aW9uKCkuYXNNaWxsaVNlY29uZHMudG9GaXhlZCgwKX1tc2ApO1xuICAgIHRoaXMubG9nLmluZm8oJ1N0YXJ0aW5nIHRoZSBzZXNzaW9uJyk7XG5cbiAgICBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCgnL3Nlc3Npb24nLCAnUE9TVCcsIHtcbiAgICAgIGNhcGFiaWxpdGllczoge1xuICAgICAgICBmaXJzdE1hdGNoOiBbY2Fwc10sXG4gICAgICAgIGFsd2F5c01hdGNoOiB7fVxuICAgICAgfVxuICAgIH0pO1xuICAgIGF3YWl0IHRoaXMucmVjb3JkVGFyZ2V0QXBwUGFja2FnZSgpO1xuICB9XG5cbiAgYXN5bmMgcmVjb3JkVGFyZ2V0QXBwUGFja2FnZSAoKSB7XG4gICAgYXdhaXQgdGhpcy5hZGIuc2hlbGwoW2BlY2hvIFwiJHt0aGlzLmFwcFBhY2thZ2V9XCIgPiBcIiR7VEFSR0VUX1BBQ0tBR0VfQ09OVEFJTkVSfVwiYF0pO1xuICAgIHRoaXMubG9nLmluZm8oYFJlY29yZGVkIHRoZSB0YXJnZXQgYXBwbGljYXRpb24gcGFja2FnZSAnJHt0aGlzLmFwcFBhY2thZ2V9JyB0byAke1RBUkdFVF9QQUNLQUdFX0NPTlRBSU5FUn1gKTtcbiAgfVxuXG4gIGFzeW5jIGRlbGV0ZVNlc3Npb24gKCkge1xuICAgIHRoaXMubG9nLmRlYnVnKCdEZWxldGluZyBFc3ByZXNzbyBzZXJ2ZXIgc2Vzc2lvbicpO1xuICAgIC8vIHJlbHkgb24gandwcm94eSdzIGludGVsbGlnZW5jZSB0byBrbm93IHdoYXQgd2UncmUgdGFsa2luZyBhYm91dCBhbmRcbiAgICAvLyBkZWxldGUgdGhlIGN1cnJlbnQgc2Vzc2lvblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLmp3cHJveHkuY29tbWFuZCgnLycsICdERUxFVEUnKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRoaXMubG9nLndhcm4oYERpZCBub3QgZ2V0IGNvbmZpcm1hdGlvbiBFc3ByZXNzbyBkZWxldGVTZXNzaW9uIHdvcmtlZDsgYCArXG4gICAgICAgICAgYEVycm9yIHdhczogJHtlcnJ9YCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaW5zdFByb2Nlc3MgJiYgdGhpcy5pbnN0UHJvY2Vzcy5pc1J1bm5pbmcpIHtcbiAgICAgIGF3YWl0IHRoaXMuaW5zdFByb2Nlc3Muc3RvcCgpO1xuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgeyBFc3ByZXNzb1J1bm5lciwgUkVRVUlSRURfUEFSQU1TLCBURVNUX0FQS19QS0cgfTtcbmV4cG9ydCBkZWZhdWx0IEVzcHJlc3NvUnVubmVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUdBLE1BQU1BLGdCQUFnQixHQUFHQyxhQUFBLENBQUtDLE9BQUwsQ0FBYUMsU0FBYixFQUF3QixJQUF4QixFQUE4QixJQUE5QixFQUFvQyxpQkFBcEMsQ0FBekI7O0FBQ0EsTUFBTUMsWUFBWSxHQUFHLCtCQUFyQjs7QUFDQSxNQUFNQyxlQUFlLEdBQUcsQ0FDdEIsS0FEc0IsRUFFdEIsUUFGc0IsRUFHdEIsTUFIc0IsRUFJdEIsWUFKc0IsRUFLdEIsWUFMc0IsRUFNdEIsWUFOc0IsRUFPdEIsc0JBUHNCLENBQXhCOztBQVNBLE1BQU1DLGlDQUFpQyxHQUFHLEtBQTFDO0FBQ0EsTUFBTUMsd0JBQXdCLEdBQUcscUNBQWpDOztBQUVBLE1BQU1DLGFBQU4sU0FBNEJDLG1CQUE1QixDQUFvQztFQUNoQixNQUFaQyxZQUFZLENBQUVDLEdBQUYsRUFB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
|
package/build/lib/logger.js
CHANGED
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL2xvZ2dlci5qcyIsIm5hbWVzIjpbImxvZyIsImxvZ2dlciIsImdldExvZ2dlciJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9sb2dnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnQGFwcGl1bS9zdXBwb3J0JztcblxuXG5jb25zdCBsb2cgPSBsb2dnZXIuZ2V0TG9nZ2VyKCdFc3ByZXNzbycpO1xuXG5leHBvcnQgZGVmYXVsdCBsb2c7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUdBLE1BQU1BLEdBQUcsR0FBR0MsZUFBQSxDQUFPQyxTQUFQLENBQWlCLFVBQWpCLENBQVo7O2VBRWVGLEcifQ==
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3NlcnZlci1idWlsZGVyLmpzIiwibmFtZXMiOlsiR1JBRExFX1ZFUlNJT05fS0VZIiwiR1JBRExFX1VSTF9QUkVGSVgiLCJHUkFETEVfVVJMX1RFTVBMQVRFIiwiR1JBRExFX01BWF9FUlJPUl9MT0dfTElORVMiLCJERVBFTkRFTkNZX1BST1BfTkFNRVMiLCJWRVJTSU9OX0tFWVMiLCJidWlsZFNlcnZlclNpZ25pbmdDb25maWciLCJhcmdzIiwiemlwQWxpZ24iLCJrZXlzdG9yZUZpbGUiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsIlNlcnZlckJ1aWxkZXIiLCJjb25zdHJ1Y3RvciIsImxvZyIsInNlcnZlclBhdGgiLCJzaG93R3JhZGxlTG9nIiwiYnVpbGRDb25maWd1cmF0aW9uIiwidmVyc2lvbkNvbmZpZ3VyYXRpb24iLCJ0b29sc1ZlcnNpb25zIiwic2VydmVyVmVyc2lvbnMiLCJfIiwicmVkdWNlIiwiYWNjIiwidmFsdWUiLCJrZXkiLCJpbmNsdWRlcyIsIndhcm4iLCJ0ZXN0QXBwUGFja2FnZSIsInNpZ25pbmdDb25maWciLCJwcm9wTmFtZSIsImJ1aWxkIiwic2V0R3JhZGxlV3JhcHBlclZlcnNpb24iLCJpbnNlcnRBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIiwicnVuQnVpbGRQcm9jZXNzIiwiZ2V0Q29tbWFuZCIsImNtZCIsInN5c3RlbSIsImlzV2luZG93cyIsInBhdGgiLCJyZXNvbHZlIiwiYnVpbGRQcm9wZXJ0eSIsImZpbHRlciIsIm1hcCIsInNlcnZlclZlcnNpb24iLCJncmFkbGVQcm9wZXJ0eSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJCb29sZWFuIiwicHVzaCIsImtleXMiLCJ1cHBlckZpcnN0IiwiayIsInYiLCJ2ZXJzaW9uIiwicHJvcGVydGllc1BhdGgiLCJvcmlnaW5hbFByb3BlcnRpZXMiLCJmcyIsInJlYWRGaWxlIiwibmV3UHJvcGVydGllcyIsInVwZGF0ZUdyYWRsZURpc3RVcmwiLCJ3cml0ZUZpbGUiLCJwcm9wZXJ0aWVzQ29udGVudCIsInJlcGxhY2UiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJoYXNBZGRpdGlvbmFsRGVwcyIsImlzQXJyYXkiLCJFcnJvciIsImlzRW1wdHkiLCJsaW5lIiwidHJpbSIsImRlcCIsInRlc3QiLCJidWlsZFBhdGgiLCJjb25maWd1cmF0aW9uIiwicHJlZml4IiwiZGVwcyIsImluZm8iLCJkZWJ1ZyIsImpvaW4iLCJncmFkbGVidWlsZCIsIlN1YlByb2Nlc3MiLCJjd2QiLCJzdGRpbyIsIndpbmRvd3NWZXJiYXRpbUFyZ3VtZW50cyIsImJ1aWxkTGFzdExpbmVzIiwibG9nTXNnIiwib24iLCJzdGFydHNXaXRoIiwiRU9MIiwibGVuZ3RoIiwic3RhcnQiLCJlcnIiLCJtc2ciLCJtZXNzYWdlIiwiZXJyb3JBbmRUaHJvdyJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9zZXJ2ZXItYnVpbGRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IGZzLCBzeXN0ZW0gfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRU9MIH0gZnJvbSAnb3MnO1xuaW1wb3J0IHsgdXBkYXRlRGVwZW5kZW5jeUxpbmVzIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IEdSQURMRV9WRVJTSU9OX0tFWSA9ICdncmFkbGUnO1xuY29uc3QgR1JBRExFX1VSTF9QUkVGSVggPSAnZGlzdHJpYnV0aW9uVXJsPSc7XG5jb25zdCBHUkFETEVfVVJMX1RFTVBMQVRFID0gJ2h0dHBzXFxcXDovL3NlcnZpY2VzLmdyYWRsZS5vcmcvZGlzdHJpYnV0aW9ucy9ncmFkbGUtVkVSU0lPTi1hbGwuemlwJztcbmNvbnN0IEdSQURMRV9NQVhfRVJST1JfTE9HX0xJTkVTID0gMTU7XG5jb25zdCBERVBFTkRFTkNZX1BST1BfTkFNRVMgPSBbJ2FkZGl0aW9uYWxBcHBEZXBlbmRlbmNpZXMnLCAnYWRkaXRpb25hbEFuZHJvaWRUZXN0RGVwZW5kZW5jaWVzJ107XG5cbmNvbnN0IFZFUlNJT05fS0VZUyA9IFtcbiAgR1JBRExFX1ZFUlNJT05fS0VZLFxuICAnYW5kcm9pZEdyYWRsZVBsdWdpbicsXG4gICdjb21waWxlU2RrJyxcbiAgJ2J1aWxkVG9vbHMnLFxuICAnbWluU2RrJyxcbiAgJ3RhcmdldFNkaycsXG4gICdrb3RsaW4nLFxuICAnc291cmNlQ29tcGF0aWJpbGl0eScsXG4gICd0YXJnZXRDb21wYXRpYmlsaXR5JyxcbiAgJ2p2bVRhcmdldCcsXG4gICdjb21wb3NlVmVyc2lvbidcbl07XG5cbmZ1bmN0aW9uIGJ1aWxkU2VydmVyU2lnbmluZ0NvbmZpZyAoYXJncykge1xuICByZXR1cm4ge1xuICAgIHppcEFsaWduOiB0cnVlLFxuICAgIGtleXN0b3JlRmlsZTogYXJncy5rZXlzdG9yZUZpbGUsXG4gICAga2V5c3RvcmVQYXNzd29yZDogYXJncy5rZXlzdG9yZVBhc3N3b3JkLFxuICAgIGtleUFsaWFzOiBhcmdzLmtleUFsaWFzLFxuICAgIGtleVBhc3N3b3JkOiBhcmdzLmtleVBhc3N3b3JkXG4gIH07XG59XG5cbmNsYXNzIFNlcnZlckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvciAobG9nLCBhcmdzID0ge30pIHtcbiAgICB0aGlzLmxvZyA9IGxvZztcbiAgICB0aGlzLnNlcnZlclBhdGggPSBhcmdzLnNlcnZlclBhdGg7XG4gICAgdGhpcy5zaG93R3JhZGxlTG9nID0gYXJncy5zaG93R3JhZGxlTG9nO1xuXG4gICAgY29uc3QgYnVpbGRDb25maWd1cmF0aW9uID0gYXJncy5idWlsZENvbmZpZ3VyYXRpb24gfHwge307XG5cbiAgICBjb25zdCB2ZXJzaW9uQ29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbi50b29sc1ZlcnNpb25zIHx8IHt9O1xuICAgIHRoaXMuc2VydmVyVmVyc2lvbnMgPSBfLnJlZHVjZSh2ZXJzaW9uQ29uZmlndXJhdGlvbiwgKGFjYywgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKFZFUlNJT05fS0VZUy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cud2FybihgR290IHVuZXhwZWN0ZWQgJyR7a2V5fScgaW4gdG9vbHNWZXJzaW9uIGJsb2NrIG9mIHRoZSBidWlsZCBjb25maWd1cmF0aW9uYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcblxuICAgIHRoaXMudGVzdEFwcFBhY2thZ2UgPSBhcmdzLnRlc3RBcHBQYWNrYWdlO1xuICAgIHRoaXMuc2lnbmluZ0NvbmZpZyA9IGFyZ3Muc2lnbmluZ0NvbmZpZztcblxuICAgIGZvciAoY29uc3QgcHJvcE5hbWUgb2YgREVQRU5ERU5DWV9QUk9QX05BTUVTKSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IGJ1aWxkQ29uZmlndXJhdGlvbltwcm9wTmFtZV0gfHwgW107XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYnVpbGQgKCkge1xuICAgIGlmICh0aGlzLnNlcnZlclZlcnNpb25zW0dSQURMRV9WRVJTSU9OX0tFWV0pIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0R3JhZGxlV3JhcHBlclZlcnNpb24odGhpcy5zZXJ2ZXJWZXJzaW9uc1tHUkFETEVfVkVSU0lPTl9LRVldKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmluc2VydEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMoKTtcblxuICAgIGF3YWl0IHRoaXMucnVuQnVpbGRQcm9jZXNzKCk7XG4gIH1cblxuICBnZXRDb21tYW5kICgpIHtcbiAgICBjb25zdCBjbWQgPSBzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnZ3JhZGxldy5iYXQnIDogcGF0aC5yZXNvbHZlKHRoaXMuc2VydmVyUGF0aCwgJ2dyYWRsZXcnKTtcbiAgICBjb25zdCBidWlsZFByb3BlcnR5ID0gKGtleSwgdmFsdWUpID0+IHZhbHVlID8gYC1QJHtrZXl9PSR7dmFsdWV9YCA6IG51bGw7XG4gICAgbGV0IGFyZ3MgPSBWRVJTSU9OX0tFWVNcbiAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5ICE9PSBHUkFETEVfVkVSU0lPTl9LRVkpXG4gICAgICAubWFwKChrZXkpID0+IHtcbiAgICAgICAgY29uc3Qgc2VydmVyVmVyc2lvbiA9IHRoaXMuc2VydmVyVmVyc2lvbnNba2V5XTtcbiAgICAgICAgY29uc3QgZ3JhZGxlUHJvcGVydHkgPSBgYXBwaXVtJHtrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtrZXkuc2xpY2UoMSl9YDtcbiAgICAgICAgcmV0dXJuIGJ1aWxkUHJvcGVydHkoZ3JhZGxlUHJvcGVydHksIHNlcnZlclZlcnNpb24pO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBpZiAodGhpcy5zaWduaW5nQ29uZmlnKSB7XG4gICAgICBhcmdzLnB1c2goLi4uKFxuICAgICAgICBfLmtleXModGhpcy5zaWduaW5nQ29uZmlnKVxuICAgICAgICAubWFwKChrZXkpID0+IFtgYXBwaXVtJHtfLnVwcGVyRmlyc3Qoa2V5KX1gLCB0aGlzLnNpZ25pbmdDb25maWdba2V5XV0pXG4gICAgICAgIC5tYXAoKFtrLCB2XSkgPT4gYnVpbGRQcm9wZXJ0eShrLCB2KSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGVzdEFwcFBhY2thZ2UpIHtcbiAgICAgIGFyZ3MucHVzaChidWlsZFByb3BlcnR5KCdhcHBpdW1UYXJnZXRQYWNrYWdlJywgdGhpcy50ZXN0QXBwUGFja2FnZSkpO1xuICAgIH1cbiAgICBhcmdzLnB1c2goJ2FwcDphc3NlbWJsZUFuZHJvaWRUZXN0Jyk7XG5cbiAgICByZXR1cm4ge2NtZCwgYXJnc307XG4gIH1cblxuICBhc3luYyBzZXRHcmFkbGVXcmFwcGVyVmVyc2lvbiAodmVyc2lvbikge1xuICAgIGNvbnN0IHByb3BlcnRpZXNQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMuc2VydmVyUGF0aCwgJ2dyYWRsZScsICd3cmFwcGVyJywgJ2dyYWRsZS13cmFwcGVyLnByb3BlcnRpZXMnKTtcbiAgICBjb25zdCBvcmlnaW5hbFByb3BlcnRpZXMgPSBhd2FpdCBmcy5yZWFkRmlsZShwcm9wZXJ0aWVzUGF0aCwgJ3V0ZjgnKTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0aWVzID0gdGhpcy51cGRhdGVHcmFkbGVEaXN0VXJsKG9yaWdpbmFsUHJvcGVydGllcywgdmVyc2lvbik7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHByb3BlcnRpZXNQYXRoLCBuZXdQcm9wZXJ0aWVzLCAndXRmOCcpO1xuICB9XG5cbiAgdXBkYXRlR3JhZGxlRGlzdFVybCAocHJvcGVydGllc0NvbnRlbnQsIHZlcnNpb24pIHtcbiAgICByZXR1cm4gcHJvcGVydGllc0NvbnRlbnQucmVwbGFjZShcbiAgICAgIG5ldyBSZWdFeHAoYF4oJHtfLmVzY2FwZVJlZ0V4cChHUkFETEVfVVJMX1BSRUZJWCl9KS4rJGAsICdnbScpLFxuICAgICAgYCQxJHtHUkFETEVfVVJMX1RFTVBMQVRFLnJlcGxhY2UoJ1ZFUlNJT04nLCB2ZXJzaW9uKX1gXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgKCkge1xuICAgIGxldCBoYXNBZGRpdGlvbmFsRGVwcyA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgcHJvcE5hbWUgb2YgREVQRU5ERU5DWV9QUk9QX05BTUVTKSB7XG4gICAgICBpZiAoIV8uaXNBcnJheSh0aGlzW3Byb3BOYW1lXSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtwcm9wTmFtZX0nIG11c3QgYmUgYW4gYXJyYXlgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkodGhpc1twcm9wTmFtZV0uZmlsdGVyKChsaW5lKSA9PiBfLnRyaW0obGluZSkpKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkZXAgb2YgdGhpc1twcm9wTmFtZV0pIHtcbiAgICAgICAgaWYgKC9bXFxzJ1xcXFwkXS8udGVzdChkZXApKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaW5nbGUgcXVvdGVzLCBkb2xsYXIgY2hhcmFjdGVycyBhbmQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzJyArXG4gICAgICAgICAgICBgIGFyZSBkaXNhbGxvd2VkIGluIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzOiAke2RlcH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaGFzQWRkaXRpb25hbERlcHMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoIWhhc0FkZGl0aW9uYWxEZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMuc2VydmVyUGF0aCwgJ2FwcCcsICdidWlsZC5ncmFkbGUua3RzJyk7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBmcy5yZWFkRmlsZShidWlsZFBhdGgsICd1dGY4Jyk7XG4gICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBERVBFTkRFTkNZX1BST1BfTkFNRVMpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHByb3BOYW1lID09PSBERVBFTkRFTkNZX1BST1BfTkFNRVNbMF1cbiAgICAgICAgPyAnaW1wbGVtZW50YXRpb24nXG4gICAgICAgIDogJ2FuZHJvaWRUZXN0SW1wbGVtZW50YXRpb24nO1xuICAgICAgY29uc3QgZGVwcyA9IHRoaXNbcHJvcE5hbWVdXG4gICAgICAgIC5maWx0ZXIoKGxpbmUpID0+IF8udHJpbShsaW5lKSlcbiAgICAgICAgLm1hcCgobGluZSkgPT4gYCR7cHJlZml4fShcIiR7bGluZX1cIilgKTtcbiAgICAgIGlmIChfLmlzRW1wdHkoZGVwcykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9nLmluZm8oYEFkZGluZyB0aGUgZm9sbG93aW5nICR7cHJvcE5hbWV9IHRvIGJ1aWxkLmdyYWRsZS5rdHM6ICR7ZGVwc31gKTtcbiAgICAgIGNvbmZpZ3VyYXRpb24gPSB1cGRhdGVEZXBlbmRlbmN5TGluZXMoY29uZmlndXJhdGlvbiwgcHJvcE5hbWUsIGRlcHMpO1xuICAgIH1cbiAgICBhd2FpdCBmcy53cml0ZUZpbGUoYnVpbGRQYXRoLCBjb25maWd1cmF0aW9uLCAndXRmOCcpO1xuICB9XG5cbiAgYXN5bmMgcnVuQnVpbGRQcm9jZXNzICgpIHtcbiAgICBjb25zdCB7Y21kLCBhcmdzfSA9IHRoaXMuZ2V0Q29tbWFuZCgpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBCZWdpbm5pbmcgYnVpbGQgd2l0aCBjb21tYW5kICcke2NtZH0gJHthcmdzLmpvaW4oJyAnKX0nIGAgK1xuICAgICAgYGluIGRpcmVjdG9yeSAnJHt0aGlzLnNlcnZlclBhdGh9J2ApO1xuICAgIGNvbnN0IGdyYWRsZWJ1aWxkID0gbmV3IFN1YlByb2Nlc3MoY21kLCBhcmdzLCB7XG4gICAgICBjd2Q6IHRoaXMuc2VydmVyUGF0aCxcbiAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICAgIHdpbmRvd3NWZXJiYXRpbUFyZ3VtZW50czogdHJ1ZVxuICAgIH0pO1xuICAgIGxldCBidWlsZExhc3RMaW5lcyA9IFtdO1xuXG4gICAgY29uc3QgbG9nTXNnID0gYE91dHB1dCBmcm9tIEdyYWRsZSAke3RoaXMuc2hvd0dyYWRsZUxvZyA/ICd3aWxsJyA6ICd3aWxsIG5vdCd9IGJlIGxvZ2dlZGA7XG4gICAgdGhpcy5sb2cuZGVidWcoYCR7bG9nTXNnfS4gVG8gY2hhbmdlIHRoaXMsIHVzZSAnc2hvd0dyYWRsZUxvZycgZGVzaXJlZCBjYXBhYmlsaXR5YCk7XG4gICAgZ3JhZGxlYnVpbGQub24oJ3N0cmVhbS1saW5lJywgKGxpbmUpID0+IHtcbiAgICAgIGlmICh0aGlzLnNob3dHcmFkbGVMb2cpIHtcbiAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgnW1NUREVSUl0nKSkge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYFtHcmFkbGVdICR7bGluZX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGBbR3JhZGxlXSAke2xpbmV9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJ1aWxkTGFzdExpbmVzLnB1c2goYCR7RU9MfSR7bGluZX1gKTtcbiAgICAgIGlmIChidWlsZExhc3RMaW5lcy5sZW5ndGggPiBHUkFETEVfTUFYX0VSUk9SX0xPR19MSU5FUykge1xuICAgICAgICBidWlsZExhc3RMaW5lcyA9IGJ1aWxkTGFzdExpbmVzLnNsaWNlKC1HUkFETEVfTUFYX0VSUk9SX0xPR19MSU5FUyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZ3JhZGxlYnVpbGQuc3RhcnQoKTtcbiAgICAgIGF3YWl0IGdyYWRsZWJ1aWxkLmpvaW4oKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxldCBtc2cgPSBgVW5hYmxlIHRvIGJ1aWxkIEVzcHJlc3NvIHNlcnZlciAtICR7ZXJyLm1lc3NhZ2V9XFxuYCArXG4gICAgICAgIGBHcmFkbGUgZXJyb3IgbWVzc2FnZToke0VPTH0ke2J1aWxkTGFzdExpbmVzfWA7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KG1zZyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IFNlcnZlckJ1aWxkZXIsIFZFUlNJT05fS0VZUywgR1JBRExFX1VSTF9URU1QTEFURSwgYnVpbGRTZXJ2ZXJTaWduaW5nQ29uZmlnIH07XG5leHBvcnQgZGVmYXVsdCBTZXJ2ZXJCdWlsZGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsa0JBQWtCLEdBQUcsUUFBM0I7QUFDQSxNQUFN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
|
|
206
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3NlcnZlci1idWlsZGVyLmpzIiwibmFtZXMiOlsiR1JBRExFX1ZFUlNJT05fS0VZIiwiR1JBRExFX1VSTF9QUkVGSVgiLCJHUkFETEVfVVJMX1RFTVBMQVRFIiwiR1JBRExFX01BWF9FUlJPUl9MT0dfTElORVMiLCJERVBFTkRFTkNZX1BST1BfTkFNRVMiLCJWRVJTSU9OX0tFWVMiLCJidWlsZFNlcnZlclNpZ25pbmdDb25maWciLCJhcmdzIiwiemlwQWxpZ24iLCJrZXlzdG9yZUZpbGUiLCJrZXlzdG9yZVBhc3N3b3JkIiwia2V5QWxpYXMiLCJrZXlQYXNzd29yZCIsIlNlcnZlckJ1aWxkZXIiLCJjb25zdHJ1Y3RvciIsImxvZyIsInNlcnZlclBhdGgiLCJzaG93R3JhZGxlTG9nIiwiYnVpbGRDb25maWd1cmF0aW9uIiwidmVyc2lvbkNvbmZpZ3VyYXRpb24iLCJ0b29sc1ZlcnNpb25zIiwic2VydmVyVmVyc2lvbnMiLCJfIiwicmVkdWNlIiwiYWNjIiwidmFsdWUiLCJrZXkiLCJpbmNsdWRlcyIsIndhcm4iLCJ0ZXN0QXBwUGFja2FnZSIsInNpZ25pbmdDb25maWciLCJwcm9wTmFtZSIsImJ1aWxkIiwic2V0R3JhZGxlV3JhcHBlclZlcnNpb24iLCJpbnNlcnRBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIiwicnVuQnVpbGRQcm9jZXNzIiwiZ2V0Q29tbWFuZCIsImNtZCIsInN5c3RlbSIsImlzV2luZG93cyIsInBhdGgiLCJyZXNvbHZlIiwiYnVpbGRQcm9wZXJ0eSIsImZpbHRlciIsIm1hcCIsInNlcnZlclZlcnNpb24iLCJncmFkbGVQcm9wZXJ0eSIsImNoYXJBdCIsInRvVXBwZXJDYXNlIiwic2xpY2UiLCJCb29sZWFuIiwicHVzaCIsImtleXMiLCJ1cHBlckZpcnN0IiwiayIsInYiLCJ2ZXJzaW9uIiwicHJvcGVydGllc1BhdGgiLCJvcmlnaW5hbFByb3BlcnRpZXMiLCJmcyIsInJlYWRGaWxlIiwibmV3UHJvcGVydGllcyIsInVwZGF0ZUdyYWRsZURpc3RVcmwiLCJ3cml0ZUZpbGUiLCJwcm9wZXJ0aWVzQ29udGVudCIsInJlcGxhY2UiLCJSZWdFeHAiLCJlc2NhcGVSZWdFeHAiLCJoYXNBZGRpdGlvbmFsRGVwcyIsImlzQXJyYXkiLCJFcnJvciIsImlzRW1wdHkiLCJsaW5lIiwidHJpbSIsImRlcCIsInRlc3QiLCJidWlsZFBhdGgiLCJjb25maWd1cmF0aW9uIiwicHJlZml4IiwiZGVwcyIsImluZm8iLCJ1cGRhdGVEZXBlbmRlbmN5TGluZXMiLCJkZWJ1ZyIsImpvaW4iLCJncmFkbGVidWlsZCIsIlN1YlByb2Nlc3MiLCJjd2QiLCJzdGRpbyIsIndpbmRvd3NWZXJiYXRpbUFyZ3VtZW50cyIsImJ1aWxkTGFzdExpbmVzIiwibG9nTXNnIiwib24iLCJzdGFydHNXaXRoIiwiRU9MIiwibGVuZ3RoIiwic3RhcnQiLCJlcnIiLCJtc2ciLCJtZXNzYWdlIiwiZXJyb3JBbmRUaHJvdyJdLCJzb3VyY2VSb290IjoiLi4vLi4iLCJzb3VyY2VzIjpbImxpYi9zZXJ2ZXItYnVpbGRlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdWJQcm9jZXNzIH0gZnJvbSAndGVlbl9wcm9jZXNzJztcbmltcG9ydCB7IGZzLCBzeXN0ZW0gfSBmcm9tICdAYXBwaXVtL3N1cHBvcnQnO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRU9MIH0gZnJvbSAnb3MnO1xuaW1wb3J0IHsgdXBkYXRlRGVwZW5kZW5jeUxpbmVzIH0gZnJvbSAnLi91dGlscyc7XG5cbmNvbnN0IEdSQURMRV9WRVJTSU9OX0tFWSA9ICdncmFkbGUnO1xuY29uc3QgR1JBRExFX1VSTF9QUkVGSVggPSAnZGlzdHJpYnV0aW9uVXJsPSc7XG5jb25zdCBHUkFETEVfVVJMX1RFTVBMQVRFID0gJ2h0dHBzXFxcXDovL3NlcnZpY2VzLmdyYWRsZS5vcmcvZGlzdHJpYnV0aW9ucy9ncmFkbGUtVkVSU0lPTi1hbGwuemlwJztcbmNvbnN0IEdSQURMRV9NQVhfRVJST1JfTE9HX0xJTkVTID0gMTU7XG5jb25zdCBERVBFTkRFTkNZX1BST1BfTkFNRVMgPSBbJ2FkZGl0aW9uYWxBcHBEZXBlbmRlbmNpZXMnLCAnYWRkaXRpb25hbEFuZHJvaWRUZXN0RGVwZW5kZW5jaWVzJ107XG5cbmNvbnN0IFZFUlNJT05fS0VZUyA9IFtcbiAgR1JBRExFX1ZFUlNJT05fS0VZLFxuICAnYW5kcm9pZEdyYWRsZVBsdWdpbicsXG4gICdjb21waWxlU2RrJyxcbiAgJ2J1aWxkVG9vbHMnLFxuICAnbWluU2RrJyxcbiAgJ3RhcmdldFNkaycsXG4gICdrb3RsaW4nLFxuICAnc291cmNlQ29tcGF0aWJpbGl0eScsXG4gICd0YXJnZXRDb21wYXRpYmlsaXR5JyxcbiAgJ2p2bVRhcmdldCcsXG4gICdjb21wb3NlVmVyc2lvbidcbl07XG5cbmZ1bmN0aW9uIGJ1aWxkU2VydmVyU2lnbmluZ0NvbmZpZyAoYXJncykge1xuICByZXR1cm4ge1xuICAgIHppcEFsaWduOiB0cnVlLFxuICAgIGtleXN0b3JlRmlsZTogYXJncy5rZXlzdG9yZUZpbGUsXG4gICAga2V5c3RvcmVQYXNzd29yZDogYXJncy5rZXlzdG9yZVBhc3N3b3JkLFxuICAgIGtleUFsaWFzOiBhcmdzLmtleUFsaWFzLFxuICAgIGtleVBhc3N3b3JkOiBhcmdzLmtleVBhc3N3b3JkXG4gIH07XG59XG5cbmNsYXNzIFNlcnZlckJ1aWxkZXIge1xuICBjb25zdHJ1Y3RvciAobG9nLCBhcmdzID0ge30pIHtcbiAgICB0aGlzLmxvZyA9IGxvZztcbiAgICB0aGlzLnNlcnZlclBhdGggPSBhcmdzLnNlcnZlclBhdGg7XG4gICAgdGhpcy5zaG93R3JhZGxlTG9nID0gYXJncy5zaG93R3JhZGxlTG9nO1xuXG4gICAgY29uc3QgYnVpbGRDb25maWd1cmF0aW9uID0gYXJncy5idWlsZENvbmZpZ3VyYXRpb24gfHwge307XG5cbiAgICBjb25zdCB2ZXJzaW9uQ29uZmlndXJhdGlvbiA9IGJ1aWxkQ29uZmlndXJhdGlvbi50b29sc1ZlcnNpb25zIHx8IHt9O1xuICAgIHRoaXMuc2VydmVyVmVyc2lvbnMgPSBfLnJlZHVjZSh2ZXJzaW9uQ29uZmlndXJhdGlvbiwgKGFjYywgdmFsdWUsIGtleSkgPT4ge1xuICAgICAgaWYgKFZFUlNJT05fS0VZUy5pbmNsdWRlcyhrZXkpKSB7XG4gICAgICAgIGFjY1trZXldID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsb2cud2FybihgR290IHVuZXhwZWN0ZWQgJyR7a2V5fScgaW4gdG9vbHNWZXJzaW9uIGJsb2NrIG9mIHRoZSBidWlsZCBjb25maWd1cmF0aW9uYCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gYWNjO1xuICAgIH0sIHt9KTtcblxuICAgIHRoaXMudGVzdEFwcFBhY2thZ2UgPSBhcmdzLnRlc3RBcHBQYWNrYWdlO1xuICAgIHRoaXMuc2lnbmluZ0NvbmZpZyA9IGFyZ3Muc2lnbmluZ0NvbmZpZztcblxuICAgIGZvciAoY29uc3QgcHJvcE5hbWUgb2YgREVQRU5ERU5DWV9QUk9QX05BTUVTKSB7XG4gICAgICB0aGlzW3Byb3BOYW1lXSA9IGJ1aWxkQ29uZmlndXJhdGlvbltwcm9wTmFtZV0gfHwgW107XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgYnVpbGQgKCkge1xuICAgIGlmICh0aGlzLnNlcnZlclZlcnNpb25zW0dSQURMRV9WRVJTSU9OX0tFWV0pIHtcbiAgICAgIGF3YWl0IHRoaXMuc2V0R3JhZGxlV3JhcHBlclZlcnNpb24odGhpcy5zZXJ2ZXJWZXJzaW9uc1tHUkFETEVfVkVSU0lPTl9LRVldKTtcbiAgICB9XG5cbiAgICBhd2FpdCB0aGlzLmluc2VydEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMoKTtcblxuICAgIGF3YWl0IHRoaXMucnVuQnVpbGRQcm9jZXNzKCk7XG4gIH1cblxuICBnZXRDb21tYW5kICgpIHtcbiAgICBjb25zdCBjbWQgPSBzeXN0ZW0uaXNXaW5kb3dzKCkgPyAnZ3JhZGxldy5iYXQnIDogcGF0aC5yZXNvbHZlKHRoaXMuc2VydmVyUGF0aCwgJ2dyYWRsZXcnKTtcbiAgICBjb25zdCBidWlsZFByb3BlcnR5ID0gKGtleSwgdmFsdWUpID0+IHZhbHVlID8gYC1QJHtrZXl9PSR7dmFsdWV9YCA6IG51bGw7XG4gICAgbGV0IGFyZ3MgPSBWRVJTSU9OX0tFWVNcbiAgICAgIC5maWx0ZXIoKGtleSkgPT4ga2V5ICE9PSBHUkFETEVfVkVSU0lPTl9LRVkpXG4gICAgICAubWFwKChrZXkpID0+IHtcbiAgICAgICAgY29uc3Qgc2VydmVyVmVyc2lvbiA9IHRoaXMuc2VydmVyVmVyc2lvbnNba2V5XTtcbiAgICAgICAgY29uc3QgZ3JhZGxlUHJvcGVydHkgPSBgYXBwaXVtJHtrZXkuY2hhckF0KDApLnRvVXBwZXJDYXNlKCl9JHtrZXkuc2xpY2UoMSl9YDtcbiAgICAgICAgcmV0dXJuIGJ1aWxkUHJvcGVydHkoZ3JhZGxlUHJvcGVydHksIHNlcnZlclZlcnNpb24pO1xuICAgICAgfSlcbiAgICAgIC5maWx0ZXIoQm9vbGVhbik7XG5cbiAgICBpZiAodGhpcy5zaWduaW5nQ29uZmlnKSB7XG4gICAgICBhcmdzLnB1c2goLi4uKFxuICAgICAgICBfLmtleXModGhpcy5zaWduaW5nQ29uZmlnKVxuICAgICAgICAubWFwKChrZXkpID0+IFtgYXBwaXVtJHtfLnVwcGVyRmlyc3Qoa2V5KX1gLCB0aGlzLnNpZ25pbmdDb25maWdba2V5XV0pXG4gICAgICAgIC5tYXAoKFtrLCB2XSkgPT4gYnVpbGRQcm9wZXJ0eShrLCB2KSlcbiAgICAgICAgLmZpbHRlcihCb29sZWFuKVxuICAgICAgKSk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudGVzdEFwcFBhY2thZ2UpIHtcbiAgICAgIGFyZ3MucHVzaChidWlsZFByb3BlcnR5KCdhcHBpdW1UYXJnZXRQYWNrYWdlJywgdGhpcy50ZXN0QXBwUGFja2FnZSkpO1xuICAgIH1cbiAgICBhcmdzLnB1c2goJ2FwcDphc3NlbWJsZUFuZHJvaWRUZXN0Jyk7XG5cbiAgICByZXR1cm4ge2NtZCwgYXJnc307XG4gIH1cblxuICBhc3luYyBzZXRHcmFkbGVXcmFwcGVyVmVyc2lvbiAodmVyc2lvbikge1xuICAgIGNvbnN0IHByb3BlcnRpZXNQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMuc2VydmVyUGF0aCwgJ2dyYWRsZScsICd3cmFwcGVyJywgJ2dyYWRsZS13cmFwcGVyLnByb3BlcnRpZXMnKTtcbiAgICBjb25zdCBvcmlnaW5hbFByb3BlcnRpZXMgPSBhd2FpdCBmcy5yZWFkRmlsZShwcm9wZXJ0aWVzUGF0aCwgJ3V0ZjgnKTtcbiAgICBjb25zdCBuZXdQcm9wZXJ0aWVzID0gdGhpcy51cGRhdGVHcmFkbGVEaXN0VXJsKG9yaWdpbmFsUHJvcGVydGllcywgdmVyc2lvbik7XG4gICAgYXdhaXQgZnMud3JpdGVGaWxlKHByb3BlcnRpZXNQYXRoLCBuZXdQcm9wZXJ0aWVzLCAndXRmOCcpO1xuICB9XG5cbiAgdXBkYXRlR3JhZGxlRGlzdFVybCAocHJvcGVydGllc0NvbnRlbnQsIHZlcnNpb24pIHtcbiAgICByZXR1cm4gcHJvcGVydGllc0NvbnRlbnQucmVwbGFjZShcbiAgICAgIG5ldyBSZWdFeHAoYF4oJHtfLmVzY2FwZVJlZ0V4cChHUkFETEVfVVJMX1BSRUZJWCl9KS4rJGAsICdnbScpLFxuICAgICAgYCQxJHtHUkFETEVfVVJMX1RFTVBMQVRFLnJlcGxhY2UoJ1ZFUlNJT04nLCB2ZXJzaW9uKX1gXG4gICAgKTtcbiAgfVxuXG4gIGFzeW5jIGluc2VydEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMgKCkge1xuICAgIGxldCBoYXNBZGRpdGlvbmFsRGVwcyA9IGZhbHNlO1xuICAgIGZvciAoY29uc3QgcHJvcE5hbWUgb2YgREVQRU5ERU5DWV9QUk9QX05BTUVTKSB7XG4gICAgICBpZiAoIV8uaXNBcnJheSh0aGlzW3Byb3BOYW1lXSkpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGAnJHtwcm9wTmFtZX0nIG11c3QgYmUgYW4gYXJyYXlgKTtcbiAgICAgIH1cbiAgICAgIGlmIChfLmlzRW1wdHkodGhpc1twcm9wTmFtZV0uZmlsdGVyKChsaW5lKSA9PiBfLnRyaW0obGluZSkpKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZm9yIChjb25zdCBkZXAgb2YgdGhpc1twcm9wTmFtZV0pIHtcbiAgICAgICAgaWYgKC9bXFxzJ1xcXFwkXS8udGVzdChkZXApKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaW5nbGUgcXVvdGVzLCBkb2xsYXIgY2hhcmFjdGVycyBhbmQgd2hpdGVzcGFjZSBjaGFyYWN0ZXJzJyArXG4gICAgICAgICAgICBgIGFyZSBkaXNhbGxvd2VkIGluIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzOiAke2RlcH1gKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaGFzQWRkaXRpb25hbERlcHMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoIWhhc0FkZGl0aW9uYWxEZXBzKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYnVpbGRQYXRoID0gcGF0aC5yZXNvbHZlKHRoaXMuc2VydmVyUGF0aCwgJ2FwcCcsICdidWlsZC5ncmFkbGUua3RzJyk7XG4gICAgbGV0IGNvbmZpZ3VyYXRpb24gPSBhd2FpdCBmcy5yZWFkRmlsZShidWlsZFBhdGgsICd1dGY4Jyk7XG4gICAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBERVBFTkRFTkNZX1BST1BfTkFNRVMpIHtcbiAgICAgIGNvbnN0IHByZWZpeCA9IHByb3BOYW1lID09PSBERVBFTkRFTkNZX1BST1BfTkFNRVNbMF1cbiAgICAgICAgPyAnaW1wbGVtZW50YXRpb24nXG4gICAgICAgIDogJ2FuZHJvaWRUZXN0SW1wbGVtZW50YXRpb24nO1xuICAgICAgY29uc3QgZGVwcyA9IHRoaXNbcHJvcE5hbWVdXG4gICAgICAgIC5maWx0ZXIoKGxpbmUpID0+IF8udHJpbShsaW5lKSlcbiAgICAgICAgLm1hcCgobGluZSkgPT4gYCR7cHJlZml4fShcIiR7bGluZX1cIilgKTtcbiAgICAgIGlmIChfLmlzRW1wdHkoZGVwcykpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIHRoaXMubG9nLmluZm8oYEFkZGluZyB0aGUgZm9sbG93aW5nICR7cHJvcE5hbWV9IHRvIGJ1aWxkLmdyYWRsZS5rdHM6ICR7ZGVwc31gKTtcbiAgICAgIGNvbmZpZ3VyYXRpb24gPSB1cGRhdGVEZXBlbmRlbmN5TGluZXMoY29uZmlndXJhdGlvbiwgcHJvcE5hbWUsIGRlcHMpO1xuICAgIH1cbiAgICBhd2FpdCBmcy53cml0ZUZpbGUoYnVpbGRQYXRoLCBjb25maWd1cmF0aW9uLCAndXRmOCcpO1xuICB9XG5cbiAgYXN5bmMgcnVuQnVpbGRQcm9jZXNzICgpIHtcbiAgICBjb25zdCB7Y21kLCBhcmdzfSA9IHRoaXMuZ2V0Q29tbWFuZCgpO1xuICAgIHRoaXMubG9nLmRlYnVnKGBCZWdpbm5pbmcgYnVpbGQgd2l0aCBjb21tYW5kICcke2NtZH0gJHthcmdzLmpvaW4oJyAnKX0nIGAgK1xuICAgICAgYGluIGRpcmVjdG9yeSAnJHt0aGlzLnNlcnZlclBhdGh9J2ApO1xuICAgIGNvbnN0IGdyYWRsZWJ1aWxkID0gbmV3IFN1YlByb2Nlc3MoY21kLCBhcmdzLCB7XG4gICAgICBjd2Q6IHRoaXMuc2VydmVyUGF0aCxcbiAgICAgIHN0ZGlvOiBbJ2lnbm9yZScsICdwaXBlJywgJ3BpcGUnXSxcbiAgICAgIHdpbmRvd3NWZXJiYXRpbUFyZ3VtZW50czogdHJ1ZVxuICAgIH0pO1xuICAgIGxldCBidWlsZExhc3RMaW5lcyA9IFtdO1xuXG4gICAgY29uc3QgbG9nTXNnID0gYE91dHB1dCBmcm9tIEdyYWRsZSAke3RoaXMuc2hvd0dyYWRsZUxvZyA/ICd3aWxsJyA6ICd3aWxsIG5vdCd9IGJlIGxvZ2dlZGA7XG4gICAgdGhpcy5sb2cuZGVidWcoYCR7bG9nTXNnfS4gVG8gY2hhbmdlIHRoaXMsIHVzZSAnc2hvd0dyYWRsZUxvZycgZGVzaXJlZCBjYXBhYmlsaXR5YCk7XG4gICAgZ3JhZGxlYnVpbGQub24oJ3N0cmVhbS1saW5lJywgKGxpbmUpID0+IHtcbiAgICAgIGlmICh0aGlzLnNob3dHcmFkbGVMb2cpIHtcbiAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgnW1NUREVSUl0nKSkge1xuICAgICAgICAgIHRoaXMubG9nLndhcm4oYFtHcmFkbGVdICR7bGluZX1gKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmxvZy5pbmZvKGBbR3JhZGxlXSAke2xpbmV9YCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJ1aWxkTGFzdExpbmVzLnB1c2goYCR7RU9MfSR7bGluZX1gKTtcbiAgICAgIGlmIChidWlsZExhc3RMaW5lcy5sZW5ndGggPiBHUkFETEVfTUFYX0VSUk9SX0xPR19MSU5FUykge1xuICAgICAgICBidWlsZExhc3RMaW5lcyA9IGJ1aWxkTGFzdExpbmVzLnNsaWNlKC1HUkFETEVfTUFYX0VSUk9SX0xPR19MSU5FUyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZ3JhZGxlYnVpbGQuc3RhcnQoKTtcbiAgICAgIGF3YWl0IGdyYWRsZWJ1aWxkLmpvaW4oKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGxldCBtc2cgPSBgVW5hYmxlIHRvIGJ1aWxkIEVzcHJlc3NvIHNlcnZlciAtICR7ZXJyLm1lc3NhZ2V9XFxuYCArXG4gICAgICAgIGBHcmFkbGUgZXJyb3IgbWVzc2FnZToke0VPTH0ke2J1aWxkTGFzdExpbmVzfWA7XG4gICAgICB0aGlzLmxvZy5lcnJvckFuZFRocm93KG1zZyk7XG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCB7IFNlcnZlckJ1aWxkZXIsIFZFUlNJT05fS0VZUywgR1JBRExFX1VSTF9URU1QTEFURSwgYnVpbGRTZXJ2ZXJTaWduaW5nQ29uZmlnIH07XG5leHBvcnQgZGVmYXVsdCBTZXJ2ZXJCdWlsZGVyO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUEsTUFBTUEsa0JB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
|
package/build/lib/server.js
CHANGED
|
@@ -36,4 +36,4 @@ var _default = startServer;
|
|
|
36
36
|
exports.default = _default;require('source-map-support').install();
|
|
37
37
|
|
|
38
38
|
|
|
39
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
39
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3NlcnZlci5qcyIsIm5hbWVzIjpbInN0YXJ0U2VydmVyIiwicG9ydCIsImhvc3QiLCJkIiwiRXNwcmVzc29Ecml2ZXIiLCJzZXJ2ZXIiLCJiYXNlU2VydmVyIiwicm91dGVDb25maWd1cmluZ0Z1bmN0aW9uIiwiaG9zdG5hbWUiLCJsb2ciLCJpbmZvIl0sInNvdXJjZVJvb3QiOiIuLi8uLiIsInNvdXJjZXMiOlsibGliL3NlcnZlci5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbG9nIGZyb20gJy4vbG9nZ2VyJztcbmltcG9ydCB7IHNlcnZlciBhcyBiYXNlU2VydmVyLCByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb24gfSBmcm9tICdAYXBwaXVtL2Jhc2UtZHJpdmVyJztcbmltcG9ydCBFc3ByZXNzb0RyaXZlciBmcm9tICcuL2RyaXZlcic7XG5cblxuYXN5bmMgZnVuY3Rpb24gc3RhcnRTZXJ2ZXIgKHBvcnQsIGhvc3QpIHtcbiAgY29uc3QgZCA9IG5ldyBFc3ByZXNzb0RyaXZlcih7cG9ydCwgaG9zdH0pO1xuICBjb25zdCBzZXJ2ZXIgPSBiYXNlU2VydmVyKHtcbiAgICByb3V0ZUNvbmZpZ3VyaW5nRnVuY3Rpb246IHJvdXRlQ29uZmlndXJpbmdGdW5jdGlvbihkKSxcbiAgICBwb3J0LFxuICAgIGhvc3RuYW1lOiBob3N0LFxuICB9KTtcbiAgbG9nLmluZm8oYEFuZHJvaWQgRXNwcmVzc28gRHJpdmVyIGxpc3RlbmluZyBvbiBodHRwOi8vJHtob3N0fToke3BvcnR9YCk7XG4gIHJldHVybiBhd2FpdCBzZXJ2ZXI7XG59XG5cbmV4cG9ydCB7IHN0YXJ0U2VydmVyIH07XG5leHBvcnQgZGVmYXVsdCBzdGFydFNlcnZlcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBQ0E7O0FBR0EsZUFBZUEsV0FBZixDQUE0QkMsSUFBNUIsRUFBa0NDLElBQWxDLEVBQXdDO0VBQ3RDLE1BQU1DLENBQUMsR0FBRyxJQUFJQyxlQUFKLENBQW1CO0lBQUNILElBQUQ7SUFBT0M7RUFBUCxDQUFuQixDQUFWO0VBQ0EsTUFBTUcsTUFBTSxHQUFHLElBQUFDLGtCQUFBLEVBQVc7SUFDeEJDLHdCQUF3QixFQUFFLElBQUFBLG9DQUFBLEVBQXlCSixDQUF6QixDQURGO0lBRXhCRixJQUZ3QjtJQUd4Qk8sUUFBUSxFQUFFTjtFQUhjLENBQVgsQ0FBZjs7RUFLQU8sZUFBQSxDQUFJQyxJQUFKLENBQVUsK0NBQThDUixJQUFLLElBQUdELElBQUssRUFBckU7O0VBQ0EsT0FBTyxNQUFNSSxNQUFiO0FBQ0Q7O2VBR2NMLFcifQ==
|
package/build/lib/utils.js
CHANGED
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGliL3V0aWxzLmpzIiwibmFtZXMiOlsicXVhbGlmeUFjdGl2aXR5TmFtZSIsImFjdGl2aXR5TmFtZSIsInBhY2thZ2VOYW1lIiwic29tZSIsIm5hbWUiLCJfIiwiaW5jbHVkZXMiLCJkb3RQb3MiLCJpbmRleE9mIiwiY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSIsInNvdXJjZUJhc2VEaXIiLCJ0YXJnZXRCYXNlRGlyIiwiZnMiLCJ3YWxrRGlyIiwiaXRlbVBhdGgiLCJpc0RpcmVjdG9yeSIsInJlbGF0aXZlUGF0aCIsInBhdGgiLCJyZWxhdGl2ZSIsInRhcmdldFBhdGgiLCJyZXNvbHZlIiwiaXNJbkdyYWRsZUJ1aWxkRGlyIiwic2VwIiwibWtkaXJwIiwiY29weUZpbGUiLCJyZXF1aXJlT3B0aW9ucyIsIm9wdHMiLCJyZXF1aXJlZEtleXMiLCJtaXNzaW5nS2V5cyIsImRpZmZlcmVuY2UiLCJrZXlzIiwiaXNFbXB0eSIsIkVycm9yIiwidXBkYXRlRGVwZW5kZW5jeUxpbmVzIiwib3JpZ2luYWxDb250ZW50IiwiZGVwZW5kZW5jeVBsYWNlaG9sZGVyIiwiZGVwZW5kZW5jeUxpbmVzIiwiY29uZmlndXJhdGlvbkxpbmVzIiwic3BsaXQiLCJzZWFyY2hSZSIsIlJlZ0V4cCIsImVzY2FwZVJlZ0V4cCIsInBsYWNlaG9sZGVySW5kZXgiLCJmaW5kSW5kZXgiLCJsaW5lIiwidGVzdCIsInBsYWNlaG9sZGVyTGluZSIsImluZGVudExlbiIsImxlbmd0aCIsInRyaW1TdGFydCIsInNwbGljZSIsIm1hcCIsInJlcGVhdCIsImpvaW4iXSwic291cmNlUm9vdCI6Ii4uLy4uIiwic291cmNlcyI6WyJsaWIvdXRpbHMuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZnMsIG1rZGlycCB9IGZyb20gJ0BhcHBpdW0vc3VwcG9ydCc7XG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5cbi8qKlxuICogaHR0cHM6Ly9hbmRyb2lkLmdvb2dsZXNvdXJjZS5jb20vcGxhdGZvcm0vZnJhbWV3b3Jrcy9iYXNlLysvbWFzdGVyL3Rvb2xzL2FhcHQvUmVzb3VyY2UuY3BwIzc1NVxuICpcbiAqIEBwYXJhbSB7c3RyaW5nfSBhY3Rpdml0eU5hbWVcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYWNrYWdlTmFtZVxuICogQHJldHVybnMge3N0cmluZ30gVGhlIHF1YWxpZmllZCBhY3Rpdml0eSBuYW1lXG4gKi9cbmZ1bmN0aW9uIHF1YWxpZnlBY3Rpdml0eU5hbWUgKGFjdGl2aXR5TmFtZSwgcGFja2FnZU5hbWUpIHtcbiAgLy8gaWYgZWl0aGVyIGFjdGl2aXR5IG9yIHBhY2thZ2UgbmFtZSBpcyBub3Qgc2V0XG4gIC8vIG9yIGFueSBvZiB0aGVzZSBjb250YWluIHdpbGRjYXJkcyB0aGVuIHRoZXJlIGlzXG4gIC8vIG5vIHBvaW50IGluIHF1YWxpZnlpbmcgdGhlIGFjdGl2aXR5IG5hbWVcbiAgaWYgKFthY3Rpdml0eU5hbWUsIHBhY2thZ2VOYW1lXS5zb21lKChuYW1lKSA9PiAhbmFtZSB8fCBfLmluY2x1ZGVzKG5hbWUsICcqJykpKSB7XG4gICAgcmV0dXJuIGFjdGl2aXR5TmFtZTtcbiAgfVxuXG4gIGNvbnN0IGRvdFBvcyA9IGFjdGl2aXR5TmFtZS5pbmRleE9mKCcuJyk7XG4gIGlmIChkb3RQb3MgPiAwKSB7XG4gICAgcmV0dXJuIGFjdGl2aXR5TmFtZTtcbiAgfVxuICByZXR1cm4gYCR7cGFja2FnZU5hbWV9JHtkb3RQb3MgPT09IDAgPyAnJyA6ICcuJ30ke2FjdGl2aXR5TmFtZX1gO1xufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGNvcHkgYWxsIGZpbGVzIGV4Y2VwdCBidWlsZCBkaXJlY3RvcmllcyBjb250ZW50c1xuICogQHBhcmFtIHNvdXJjZUJhc2VEaXIge3N0cmluZ30gZGlyZWN0b3J5IHRvIGNvcHkgZmlsZXMgZnJvbVxuICogQHBhcmFtIHRhcmdldEJhc2VEaXIge3N0cmluZ30gZGlyZWN0b3J5IHRvIGNvcHkgZmlsZXMgdG9cbiAqL1xuYXN5bmMgZnVuY3Rpb24gY29weUdyYWRsZVByb2plY3RSZWN1cnNpdmVseSAoc291cmNlQmFzZURpciwgdGFyZ2V0QmFzZURpcikge1xuICBhd2FpdCBmcy53YWxrRGlyKHNvdXJjZUJhc2VEaXIsIHRydWUsIGFzeW5jIChpdGVtUGF0aCwgaXNEaXJlY3RvcnkpID0+IHtcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBwYXRoLnJlbGF0aXZlKHNvdXJjZUJhc2VEaXIsIGl0ZW1QYXRoKTtcbiAgICBjb25zdCB0YXJnZXRQYXRoID0gcGF0aC5yZXNvbHZlKHRhcmdldEJhc2VEaXIsIHJlbGF0aXZlUGF0aCk7XG5cbiAgICBjb25zdCBpc0luR3JhZGxlQnVpbGREaXIgPSBgJHtwYXRoLnNlcH0ke2l0ZW1QYXRofWAuaW5jbHVkZXMoYCR7cGF0aC5zZXB9YnVpbGQke3BhdGguc2VwfWApO1xuICAgIGlmIChpc0luR3JhZGxlQnVpbGREaXIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoaXNEaXJlY3RvcnkpIHtcbiAgICAgIGF3YWl0IG1rZGlycCh0YXJnZXRQYXRoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgZnMuY29weUZpbGUoaXRlbVBhdGgsIHRhcmdldFBhdGgpO1xuICAgIH1cbiAgICByZXR1cm4gZmFsc2U7XG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXF1aXJlT3B0aW9ucyAob3B0cywgcmVxdWlyZWRLZXlzID0gW10pIHtcbiAgY29uc3QgbWlzc2luZ0tleXMgPSBfLmRpZmZlcmVuY2UocmVxdWlyZWRLZXlzLCBfLmtleXMob3B0cykpO1xuICBpZiAoIV8uaXNFbXB0eShtaXNzaW5nS2V5cykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBmb2xsb3dpbmcgb3B0aW9ucyBhcmUgcmVxdWlyZWQ6ICR7bWlzc2luZ0tleXN9YCk7XG4gIH1cbiAgcmV0dXJuIG9wdHM7XG59XG5cbmZ1bmN0aW9uIHVwZGF0ZURlcGVuZGVuY3lMaW5lcyAob3JpZ2luYWxDb250ZW50LCBkZXBlbmRlbmN5UGxhY2Vob2xkZXIsIGRlcGVuZGVuY3lMaW5lcykge1xuICBjb25zdCBjb25maWd1cmF0aW9uTGluZXMgPSBvcmlnaW5hbENvbnRlbnQuc3BsaXQoJ1xcbicpO1xuICBjb25zdCBzZWFyY2hSZSA9IG5ldyBSZWdFeHAoYF5cXFxccyovL1xcXFxzKlxcXFxiJHtfLmVzY2FwZVJlZ0V4cChkZXBlbmRlbmN5UGxhY2Vob2xkZXIpfVxcXFxiYCwgJ20nKTtcbiAgY29uc3QgcGxhY2Vob2xkZXJJbmRleCA9IGNvbmZpZ3VyYXRpb25MaW5lcy5maW5kSW5kZXgoKGxpbmUpID0+IHNlYXJjaFJlLnRlc3QobGluZSkpO1xuICBpZiAocGxhY2Vob2xkZXJJbmRleCA8IDApIHtcbiAgICByZXR1cm4gb3JpZ2luYWxDb250ZW50O1xuICB9XG5cbiAgY29uc3QgcGxhY2Vob2xkZXJMaW5lID0gY29uZmlndXJhdGlvbkxpbmVzW3BsYWNlaG9sZGVySW5kZXhdO1xuICBjb25zdCBpbmRlbnRMZW4gPSBwbGFjZWhvbGRlckxpbmUubGVuZ3RoIC0gXy50cmltU3RhcnQocGxhY2Vob2xkZXJMaW5lKS5sZW5ndGg7XG4gIGNvbmZpZ3VyYXRpb25MaW5lcy5zcGxpY2UocGxhY2Vob2xkZXJJbmRleCArIDEsIDAsIC4uLihkZXBlbmRlbmN5TGluZXNcbiAgICAubWFwKChsaW5lKSA9PiBgJHsnICcucmVwZWF0KGluZGVudExlbil9JHtsaW5lfWApKSk7XG4gIHJldHVybiBjb25maWd1cmF0aW9uTGluZXMuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCB7IHF1YWxpZnlBY3Rpdml0eU5hbWUsIGNvcHlHcmFkbGVQcm9qZWN0UmVjdXJzaXZlbHksIHJlcXVpcmVPcHRpb25zLCB1cGRhdGVEZXBlbmRlbmN5TGluZXMgfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFTQSxTQUFTQSxtQkFBVCxDQUE4QkMsWUFBOUIsRUFBNENDLFdB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
|
|
Binary file
|
|
@@ -59,7 +59,6 @@ class EspressoAttributes : CommonAttributes(commonAttributes + espressoAttribute
|
|
|
59
59
|
AttributesEnum.ADAPTERS,
|
|
60
60
|
AttributesEnum.ADAPTER_TYPE,
|
|
61
61
|
AttributesEnum.CHECKABLE,
|
|
62
|
-
AttributesEnum.CHECKED,
|
|
63
62
|
AttributesEnum.FOCUSABLE,
|
|
64
63
|
AttributesEnum.HINT,
|
|
65
64
|
AttributesEnum.INSTANCE,
|
|
@@ -81,6 +80,7 @@ abstract class CommonAttributes(var attributes: List<AttributesEnum>) {
|
|
|
81
80
|
val commonAttributes: List<AttributesEnum> by lazy {
|
|
82
81
|
listOf(
|
|
83
82
|
AttributesEnum.BOUNDS,
|
|
83
|
+
AttributesEnum.CHECKED,
|
|
84
84
|
AttributesEnum.CLASS,
|
|
85
85
|
AttributesEnum.CLICKABLE,
|
|
86
86
|
AttributesEnum.CONTENT_DESC,
|