appium-remote-debugger 5.6.0 → 5.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/lib/rpc-client.js +17 -4
- package/lib/rpc-client.js +12 -1
- package/package.json +1 -1
package/build/lib/rpc-client.js
CHANGED
|
@@ -45,6 +45,7 @@ class RpcClient {
|
|
|
45
45
|
specialMessageHandlers = {},
|
|
46
46
|
logFullResponse = false
|
|
47
47
|
} = opts;
|
|
48
|
+
this.isSafari = isSafari;
|
|
48
49
|
this.connected = false;
|
|
49
50
|
this.connId = _uuidJs.default.create().toString();
|
|
50
51
|
this.senderId = _uuidJs.default.create().toString();
|
|
@@ -84,9 +85,21 @@ class RpcClient {
|
|
|
84
85
|
}
|
|
85
86
|
|
|
86
87
|
if (_appiumSupport.util.compareVersions(this.platformVersion, '<', '13.0') && _lodash.default.isEmpty(this.getTarget(appIdKey, pageIdKey))) {
|
|
87
|
-
this.
|
|
88
|
-
|
|
89
|
-
|
|
88
|
+
if (this.isSafari) {
|
|
89
|
+
this.addTarget({
|
|
90
|
+
targetId: `page-${pageIdKey}`
|
|
91
|
+
});
|
|
92
|
+
} else {
|
|
93
|
+
const targets = this.targets[appIdKey];
|
|
94
|
+
|
|
95
|
+
const targetIds = _lodash.default.values(targets).map(targetId => targetId.replace('page-', '')).sort();
|
|
96
|
+
|
|
97
|
+
const lastTargetId = _lodash.default.last(targetIds) || 0;
|
|
98
|
+
this.addTarget({
|
|
99
|
+
targetId: `page-${lastTargetId + 1}`
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
|
|
90
103
|
return;
|
|
91
104
|
}
|
|
92
105
|
|
|
@@ -381,4 +394,4 @@ class RpcClient {
|
|
|
381
394
|
exports.default = RpcClient;require('source-map-support').install();
|
|
382
395
|
|
|
383
396
|
|
|
384
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMtY2xpZW50LmpzIl0sIm5hbWVzIjpbIkRBVEFfTE9HX0xFTkdUSCIsImxlbmd0aCIsIldBSVRfRk9SX1RBUkdFVF9SRVRSSUVTIiwiV0FJVF9GT1JfVEFSR0VUX0lOVEVSVkFMIiwiR0VORVJJQ19UQVJHRVRfSUQiLCJScGNDbGllbnQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJfdGFyZ2V0cyIsIl9zaG91bGRDaGVja0ZvclRhcmdldCIsInNob3VsZENoZWNrRm9yVGFyZ2V0IiwiYnVuZGxlSWQiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc1NhZmFyaSIsInNwZWNpYWxNZXNzYWdlSGFuZGxlcnMiLCJsb2dGdWxsUmVzcG9uc2UiLCJjb25uZWN0ZWQiLCJjb25uSWQiLCJVVUlEIiwiY3JlYXRlIiwidG9TdHJpbmciLCJzZW5kZXJJZCIsIm1zZ0lkIiwic2V0Q29tbXVuaWNhdGlvblByb3RvY29sIiwiaXNUYXJnZXRCYXNlZCIsImxvZyIsIndhcm4iLCJyZW1vdGVNZXNzYWdlcyIsIlJlbW90ZU1lc3NhZ2VzIiwibWVzc2FnZUhhbmRsZXIiLCJScGNNZXNzYWdlSGFuZGxlciIsIm5lZWRzVGFyZ2V0Iiwid2FpdEZvclRhcmdldCIsImFwcElkS2V5IiwicGFnZUlkS2V5IiwidXRpbCIsImNvbXBhcmVWZXJzaW9ucyIsIl8iLCJpc0VtcHR5IiwiZ2V0VGFyZ2V0IiwiYWRkVGFyZ2V0IiwidGFyZ2V0SWQiLCJFcnJvciIsImVyciIsImRlYnVnIiwic2VuZCIsImNvbW1hbmQiLCJzdGFydFRpbWUiLCJwcm9jZXNzIiwiaHJ0aW1lIiwic2VuZFRvRGV2aWNlIiwibWVzc2FnZSIsImluY2x1ZGVzIiwiZ2V0TG9nZ2FibGVSZXNwb25zZSIsInJlcyIsImlzU3RyaW5nIiwiSlNPTiIsInN0cmluZ2lmeSIsInRydW5jYXRlIiwiQiIsInJlc29sdmUiLCJyZWplY3QiLCJzZW5kT3B0cyIsImRlZmF1bHRzIiwiY21kIiwiZ2V0UmVtb3RlQ29tbWFuZCIsIm1lc3NhZ2VIYW5kbGVkIiwiaGFzU3BlY2lhbE1lc3NhZ2VIYW5kbGVyIiwiX19zZWxlY3RvciIsInNwZWNpYWxNZXNzYWdlSGFuZGxlciIsImdldFNwZWNpYWxNZXNzYWdlSGFuZGxlciIsInNldFNwZWNpYWxNZXNzYWdlSGFuZGxlciIsImFyZ3MiLCJfX2FyZ3VtZW50IiwiV0lSU29ja2V0RGF0YUtleSIsImVycm9ySGFuZGxlciIsIm1zZyIsImNvZGUiLCJzZXREYXRhTWVzc2FnZUhhbmRsZXIiLCJ2YWx1ZSIsInBhcmFtcyIsImlkIiwiQnVmZmVyIiwiZnJvbSIsInNlbmRNZXNzYWdlIiwidGFyZ2V0SW5mbyIsImlzVW5kZWZpbmVkIiwicGVuZGluZ1RhcmdldE5vdGlmaWNhdGlvbiIsInRhcmdldHMiLCJyZW1vdmVUYXJnZXQiLCJwdWxsIiwidGFyZ2V0IiwiY29ubmVjdCIsImRpc2Nvbm5lY3QiLCJpc0Nvbm5lY3RlZCIsImtleSIsImhhbmRsZXIiLCJhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwiYWxsb3ciLCJzZWxlY3RQYWdlIiwic2VsZWN0QXBwIiwiYXBwbGljYXRpb25Db25uZWN0ZWRIYW5kbGVyIiwib25BcHBDaGFuZ2UiLCJkaWN0Iiwib2xkQXBwSWRLZXkiLCJXSVJIb3N0QXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiY29ycmVjdEFwcElkS2V5IiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwicGFnZURpY3QiLCJjb25uZWN0ZWRBcHBJZEtleSIsImZpbmFsbHkiLCJyZWNlaXZlIiwic2V0VGltZWxpbmVFdmVudEhhbmRsZXIiLCJ0aW1lbGluZUV2ZW50SGFuZGxlciIsInNldENvbnNvbGVMb2dFdmVudEhhbmRsZXIiLCJjb25zb2xlRXZlbnRIYW5kbGVyIiwic2V0TmV0d29ya0xvZ0V2ZW50SGFuZGxlciIsIm5ldHdvcmtFdmVudEhhbmRsZXIiLCJzZXROZXR3b3JrRXZlbnRIYW5kbGVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztB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QkFBdUIsQ0FBRUMsb0JBQUYsRUFBd0I7QUFDN0MsU0FBS0Esb0JBQUwsR0FBNEJBLG9CQUE1QjtBQUNBLFNBQUtwRixjQUFMLENBQW9CbUYsdUJBQXBCLENBQTRDQyxvQkFBNUM7QUFDRDs7QUFFREMsRUFBQUEseUJBQXlCLENBQUVDLG1CQUFGLEVBQXVCO0FBQzlDLFNBQUtBLG1CQUFMLEdBQTJCQSxtQkFBM0I7QUFDQSxTQUFLdEYsY0FBTCxDQUFvQnFGLHlCQUFwQixDQUE4Q0MsbUJBQTlDO0FBQ0Q7O0FBRURDLEVBQUFBLHlCQUF5QixDQUFFQyxtQkFBRixFQUF1QjtBQUM5QyxTQUFLQSxtQkFBTCxHQUEyQkEsbUJBQTNCO0FBQ0EsU0FBS3hGLGNBQUwsQ0FBb0J5RixzQkFBcEIsQ0FBMkNELG1CQUEzQztBQUNEOztBQTdWNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVtb3RlTWVzc2FnZXMgZnJvbSAnLi9yZW1vdGUtbWVzc2FnZXMnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBVVUlEIGZyb20gJ3V1aWQtanMnO1xuaW1wb3J0IFJwY01lc3NhZ2VIYW5kbGVyIGZyb20gJy4vcmVtb3RlLWRlYnVnZ2VyLW1lc3NhZ2UtaGFuZGxlcic7XG5pbXBvcnQgeyBpc1RhcmdldEJhc2VkLCBnZXRFbGFwc2VkVGltZSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuXG5cbmNvbnN0IERBVEFfTE9HX0xFTkdUSCA9IHtsZW5ndGg6IDIwMH07XG5cbmNvbnN0IFdBSVRfRk9SX1RBUkdFVF9SRVRSSUVTID0gMTA7XG5jb25zdCBXQUlUX0ZPUl9UQVJHRVRfSU5URVJWQUwgPSAxMDAwO1xuXG5jb25zdCBHRU5FUklDX1RBUkdFVF9JRCA9ICdwYWdlLTYnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBScGNDbGllbnQge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgdGhpcy5fdGFyZ2V0cyA9IFtdO1xuICAgIHRoaXMuX3Nob3VsZENoZWNrRm9yVGFyZ2V0ID0gISFvcHRzLnNob3VsZENoZWNrRm9yVGFyZ2V0O1xuXG4gICAgY29uc3Qge1xuICAgICAgYnVuZGxlSWQsXG4gICAgICBwbGF0Zm9ybVZlcnNpb24gPSB7fSxcbiAgICAgIGlzU2FmYXJpID0gdHJ1ZSxcbiAgICAgIHNwZWNpYWxNZXNzYWdlSGFuZGxlcnMgPSB7fSxcbiAgICAgIGxvZ0Z1bGxSZXNwb25zZSA9IGZhbHNlLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgdGhpcy5jb25uZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbm5JZCA9IFVVSUQuY3JlYXRlKCkudG9TdHJpbmcoKTtcbiAgICB0aGlzLnNlbmRlcklkID0gVVVJRC5jcmVhdGUoKS50b1N0cmluZygpO1xuICAgIHRoaXMubXNnSWQgPSAwO1xuICAgIHRoaXMubG9nRnVsbFJlc3BvbnNlID0gbG9nRnVsbFJlc3BvbnNlO1xuXG4gICAgdGhpcy5idW5kbGVJZCA9IGJ1bmRsZUlkO1xuICAgIHRoaXMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuXG4gICAgLy8gbWVzc2FnZSBoYW5kbGVyc1xuICAgIHRoaXMuc3BlY2lhbE1lc3NhZ2VIYW5kbGVycyA9IHNwZWNpYWxNZXNzYWdlSGFuZGxlcnM7XG5cbiAgICAvLyBzdGFydCB3aXRoIGEgYmVzdCBndWVzcyBmb3IgdGhlIHByb3RvY29sXG4gICAgdGhpcy5zZXRDb21tdW5pY2F0aW9uUHJvdG9jb2woaXNUYXJnZXRCYXNlZChpc1NhZmFyaSwgdGhpcy5wbGF0Zm9ybVZlcnNpb24pKTtcbiAgfVxuXG4gIHNldENvbW11bmljYXRpb25Qcm90b2NvbCAoaXNUYXJnZXRCYXNlZCA9IGZhbHNlKSB7XG4gICAgbG9nLndhcm4oYFNldHRpbmcgY29tbXVuaWNhdGlvbiBwcm90b2NvbDogdXNpbmcgJHtpc1RhcmdldEJhc2VkID8gJ1RhcmdldC1iYXNlZCcgOiAnZnVsbCBXZWIgSW5zcGVjdG9yIHByb3RvY29sJ30gY29tbXVuaWNhdGlvbmApO1xuICAgIHRoaXMuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG5cbiAgICBpZiAoIXRoaXMucmVtb3RlTWVzc2FnZXMpIHtcbiAgICAgIHRoaXMucmVtb3RlTWVzc2FnZXMgPSBuZXcgUmVtb3RlTWVzc2FnZXMoaXNUYXJnZXRCYXNlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3RlTWVzc2FnZXMuc2V0Q29tbXVuaWNhdGlvblByb3RvY29sKGlzVGFyZ2V0QmFzZWQpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5tZXNzYWdlSGFuZGxlcikge1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlciA9IG5ldyBScGNNZXNzYWdlSGFuZGxlcih0aGlzLnNwZWNpYWxNZXNzYWdlSGFuZGxlcnMsIGlzVGFyZ2V0QmFzZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNldENvbW11bmljYXRpb25Qcm90b2NvbChpc1RhcmdldEJhc2VkKTtcbiAgICB9XG4gIH1cblxuICBuZWVkc1RhcmdldCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgJiYgdGhpcy5pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgd2FpdEZvclRhcmdldCAoYXBwSWRLZXksIHBhZ2VJZEtleSkge1xuICAgIGlmICghdGhpcy5uZWVkc1RhcmdldCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gb24gaU9TIGxlc3MgdGhhbiAxMyBoYXZlIHRhcmdldHMgdGhhdCBjYW4gYmUgY29tcHV0ZWQgZWFzaWx5XG4gICAgLy8gYW5kIHNvbWV0aW1lcyBpcyBub3QgcmVwb3J0ZWQgYnkgdGhlIFdlYiBJbnNwZWN0b3JcbiAgICBpZiAodXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5wbGF0Zm9ybVZlcnNpb24sICc8JywgJzEzLjAnKSAmJiBfLmlzRW1wdHkodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpKSB7XG4gICAgICB0aGlzLmFkZFRhcmdldCh7dGFyZ2V0SWQ6IGBwYWdlLSR7cGFnZUlkS2V5fWB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBvdGhlcndpc2Ugd2FpdGluZyBpcyBuZWNlc3NhcnkgdG8gc2VlIHdoYXQgdGhlIHRhcmdldCBpc1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCByZXRyeUludGVydmFsKFdBSVRfRk9SX1RBUkdFVF9SRVRSSUVTLCBXQUlUX0ZPUl9UQVJHRVRfSU5URVJWQUwsICgpID0+IHtcbiAgICAgICAgaWYgKF8uaXNFbXB0eSh0aGlzLmdldFRhcmdldChhcHBJZEtleSwgcGFnZUlkS2V5KSkpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vIHRhcmdldHMgZm91bmQsIHVuYWJsZSB0byBjb21tdW5pY2F0ZSB3aXRoIGRldmljZScpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIC8vIG9uIHNvbWUgc3lzdGVtcyBzb21ldGltZXMgdGhlIFdlYiBJbnNwZWN0b3IgbmV2ZXIgc2VuZHMgdGhlIHRhcmdldCBldmVudFxuICAgICAgLy8gdGhvdWdoIHRoZSB0YXJnZXQgaXMgYXZhaWxhYmxlXG4gICAgICBsb2cuZGVidWcoYE5vIHRhcmdldCBmb3VuZC4gVHJ5aW5nICcke0dFTkVSSUNfVEFSR0VUX0lEfScsIHdoaWNoIHNlZW1zIHRvIHdvcmtgKTtcbiAgICAgIHRoaXMuYWRkVGFyZ2V0KHt0YXJnZXRJZDogR0VORVJJQ19UQVJHRVRfSUR9KTtcbiAgICB9XG4gIH1cblxuICBhc3luYyBzZW5kIChjb21tYW5kLCBvcHRzID0ge30pIHtcbiAgICBjb25zdCBzdGFydFRpbWUgPSBwcm9jZXNzLmhydGltZSgpO1xuICAgIGNvbnN0IHtcbiAgICAgIGFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5XG4gICAgfSA9IG9wdHM7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IHRoaXMud2FpdEZvclRhcmdldChhcHBJZEtleSwgcGFnZUlkS2V5KTtcbiAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRUb0RldmljZShjb21tYW5kLCBvcHRzKTtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIGlmIChlcnIubWVzc2FnZS5pbmNsdWRlcyhgJ1RhcmdldCcgZG9tYWluIHdhcyBub3QgZm91bmRgKSkge1xuICAgICAgICB0aGlzLnNldENvbW11bmljYXRpb25Qcm90b2NvbChmYWxzZSk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRUb0RldmljZShjb21tYW5kLCBvcHRzKTtcbiAgICAgIH0gZWxzZSBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoYGRvbWFpbiB3YXMgbm90IGZvdW5kYCkpIHtcbiAgICAgICAgdGhpcy5zZXRDb21tdW5pY2F0aW9uUHJvdG9jb2wodHJ1ZSk7XG4gICAgICAgIGF3YWl0IHRoaXMud2FpdEZvclRhcmdldChhcHBJZEtleSwgcGFnZUlkS2V5KTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuc2VuZFRvRGV2aWNlKGNvbW1hbmQsIG9wdHMpO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGxvZy5kZWJ1ZyhgU2VuZGluZyB0byBXZWIgSW5zcGVjdG9yIHRvb2sgJHtnZXRFbGFwc2VkVGltZShzdGFydFRpbWUpfW1zYCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0TG9nZ2FibGVSZXNwb25zZSAocmVzKSB7XG4gICAgcmV0dXJuIF8uaXNTdHJpbmcocmVzKVxuICAgICAgPyByZXNcbiAgICAgIDogdGhpcy5sb2dGdWxsUmVzcG9uc2VcbiAgICAgICAgPyBKU09OLnN0cmluZ2lmeShyZXMsIG51bGwsIDIpXG4gICAgICAgIDogXy50cnVuY2F0ZShKU09OLnN0cmluZ2lmeShyZXMpLCBEQVRBX0xPR19MRU5HVEgpO1xuICB9XG5cbiAgYXN5bmMgc2VuZFRvRGV2aWNlIChjb21tYW5kLCBvcHRzID0ge30pIHtcbiAgICByZXR1cm4gYXdhaXQgbmV3IEIoYXN5bmMgKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgLy8gcHJvbWlzZSB0byBiZSByZXNvbHZlZCB3aGVuZXZlciByZW1vdGUgZGVidWdnZXJcbiAgICAgIC8vIHJlcGxpZXMgdG8gb3VyIHJlcXVlc3RcblxuICAgICAgLy8ga2VlcCB0cmFjayBvZiB0aGUgbWVzc2FnZXMgY29taW5nIGFuZCBnb2luZyB1c2luZyBhIHNpbXBsZSBzZXF1ZW50aWFsIGlkXG4gICAgICBjb25zdCBtc2dJZCA9IHRoaXMubXNnSWQrKztcblxuICAgICAgLy8gcmV0cmlldmUgdGhlIGNvcnJlY3QgY29tbWFuZCB0byBzZW5kXG4gICAgICBjb25zdCBzZW5kT3B0cyA9IF8uZGVmYXVsdHMoe2Nvbm5JZDogdGhpcy5jb25uSWQsIHNlbmRlcklkOiB0aGlzLnNlbmRlcklkfSwgb3B0cyk7XG4gICAgICBjb25zdCBjbWQgPSB0aGlzLnJlbW90ZU1lc3NhZ2VzLmdldFJlbW90ZUNvbW1hbmQoY29tbWFuZCwgc2VuZE9wdHMpO1xuXG4gICAgICBsZXQgbWVzc2FnZUhhbmRsZWQgPSBmYWxzZTtcbiAgICAgIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyLmhhc1NwZWNpYWxNZXNzYWdlSGFuZGxlcihjbWQuX19zZWxlY3RvcikpIHtcbiAgICAgICAgbWVzc2FnZUhhbmRsZWQgPSB0cnVlO1xuXG4gICAgICAgIC8vIHNwZWNpYWwgcmVwbGllcyB3aWxsIHJldHVybiBhbnkgbnVtYmVyIG9mIGFyZ3VtZW50c1xuICAgICAgICAvLyB0ZW1wb3JhcmlseSB3cmFwIHdpdGggcHJvbWlzZSBoYW5kbGluZ1xuICAgICAgICBjb25zdCBzcGVjaWFsTWVzc2FnZUhhbmRsZXIgPSB0aGlzLmdldFNwZWNpYWxNZXNzYWdlSGFuZGxlcihjbWQuX19zZWxlY3Rvcik7XG4gICAgICAgIHRoaXMuc2V0U3BlY2lhbE1lc3NhZ2VIYW5kbGVyKGNtZC5fX3NlbGVjdG9yLCByZWplY3QsICguLi5hcmdzKSA9PiB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCByZXNwb25zZSBmcm9tIHNlbmQgKGlkOiAke21zZ0lkfSk6ICcke3RoaXMuZ2V0TG9nZ2FibGVSZXNwb25zZShhcmdzKX0nYCk7XG5cbiAgICAgICAgICAvLyBjYWxsIHRoZSBvcmlnaW5hbCBsaXN0ZW5lciwgYW5kIHB1dCBpdCBiYWNrLCBpZiBuZWNlc3NhcnlcbiAgICAgICAgICBzcGVjaWFsTWVzc2FnZUhhbmRsZXIoLi4uYXJncyk7XG4gICAgICAgICAgaWYgKHRoaXMubWVzc2FnZUhhbmRsZXIuaGFzU3BlY2lhbE1lc3NhZ2VIYW5kbGVyKGNtZC5fX3NlbGVjdG9yKSkge1xuICAgICAgICAgICAgLy8gdGhpcyBtZWFucyB0aGF0IHRoZSBzeXN0ZW0gaGFzIG5vdCByZW1vdmVkIHRoaXMgbGlzdGVuZXJcbiAgICAgICAgICAgIHRoaXMuc2V0U3BlY2lhbE1lc3NhZ2VIYW5kbGVyKGNtZC5fX3NlbGVjdG9yLCBudWxsLCBzcGVjaWFsTWVzc2FnZUhhbmRsZXIpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUoYXJncyk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIGlmIChjbWQuX19hcmd1bWVudCAmJiBjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5KSB7XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVkID0gdHJ1ZTtcblxuICAgICAgICBjb25zdCBlcnJvckhhbmRsZXIgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICAgICAgY29uc3QgbXNnID0gYFJlbW90ZSBkZWJ1Z2dlciBlcnJvciB3aXRoIGNvZGUgJyR7ZXJyLmNvZGV9JzogJHtlcnIubWVzc2FnZX1gO1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IobXNnKSk7XG4gICAgICAgIH07XG5cbiAgICAgICAgdGhpcy5zZXREYXRhTWVzc2FnZUhhbmRsZXIobXNnSWQudG9TdHJpbmcoKSwgZXJyb3JIYW5kbGVyLCAodmFsdWUpID0+IHtcbiAgICAgICAgICBsb2cuZGVidWcoYFJlY2VpdmVkIGRhdGEgcmVzcG9uc2UgZnJvbSBzZW5kIChpZDogJHttc2dJZH0pOiAnJHt0aGlzLmdldExvZ2dhYmxlUmVzcG9uc2UodmFsdWUpfSdgKTtcbiAgICAgICAgICByZXNvbHZlKHZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gbWFrZSBzdXJlIHRoZSBtZXNzYWdlIGJlaW5nIHNlbnQgaGFzIGFsbCB0aGUgaW5mb3JtYXRpb24gdGhhdCBpcyBuZWVkZWRcbiAgICAgICAgaWYgKGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkucGFyYW1zKSB7XG4gICAgICAgICAgY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleS5wYXJhbXMuaWQgPSBtc2dJZDtcbiAgICAgICAgICBpZiAoIWNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkucGFyYW1zLnRhcmdldElkICYmIHRoaXMubmVlZHNUYXJnZXQoKSkge1xuICAgICAgICAgICAgY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleS5wYXJhbXMudGFyZ2V0SWQgPSB0aGlzLmdldFRhcmdldChzZW5kT3B0cy5hcHBJZEtleSwgc2VuZE9wdHMucGFnZUlkS2V5KTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkucGFyYW1zLm1lc3NhZ2UpIHtcbiAgICAgICAgICAgIGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkucGFyYW1zLm1lc3NhZ2UuaWQgPSBtc2dJZDtcbiAgICAgICAgICAgIGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkucGFyYW1zLm1lc3NhZ2UgPSBKU09OLnN0cmluZ2lmeShjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LnBhcmFtcy5tZXNzYWdlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleS5pZCA9IG1zZ0lkO1xuICAgICAgICBjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5ID1cbiAgICAgICAgICBCdWZmZXIuZnJvbShKU09OLnN0cmluZ2lmeShjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5KSk7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1zZyA9IGBTZW5kaW5nICcke2NtZC5fX3NlbGVjdG9yfScgbWVzc2FnZWAgK1xuICAgICAgICAoc2VuZE9wdHMuYXBwSWRLZXkgPyBgIHRvIGFwcCAnJHtzZW5kT3B0cy5hcHBJZEtleX0nYCA6ICcnKSArXG4gICAgICAgIChzZW5kT3B0cy5wYWdlSWRLZXkgPyBgLCBwYWdlICcke3NlbmRPcHRzLnBhZ2VJZEtleX0nYCA6ICcnKSArXG4gICAgICAgICh0aGlzLm5lZWRzVGFyZ2V0KCkgPyBgLCB0YXJnZXQgJyR7dGhpcy5nZXRUYXJnZXQoc2VuZE9wdHMuYXBwSWRLZXksIHNlbmRPcHRzLnBhZ2VJZEtleSl9J2AgOiAnJykgK1xuICAgICAgICBgIChpZDogJHttc2dJZH0pYDtcbiAgICAgIGxvZy5kZWJ1Zyhtc2cpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgdGhpcy5zZW5kTWVzc2FnZShjbWQpO1xuICAgICAgICBpZiAoIW1lc3NhZ2VIYW5kbGVkKSB7XG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9XG4gICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHJlamVjdChlcnIpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UgKC8qIGNvbW1hbmQgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdzZW5kTWVzc2FnZScgZnVuY3Rpb25gKTtcbiAgfVxuXG4gIGFkZFRhcmdldCAodGFyZ2V0SW5mbykge1xuICAgIGlmIChfLmlzVW5kZWZpbmVkKHRhcmdldEluZm8pIHx8IF8uaXNVbmRlZmluZWQodGFyZ2V0SW5mby50YXJnZXRJZCkpIHtcbiAgICAgIGxvZy53YXJuKGBSZWNlaXZlZCAndGFyZ2V0Q3JlYXRlZCcgZXZlbnQgd2l0aCBubyB0YXJnZXQuIFNraXBwaW5nYCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChfLmlzRW1wdHkodGhpcy5wZW5kaW5nVGFyZ2V0Tm90aWZpY2F0aW9uKSkge1xuICAgICAgbG9nLndhcm4oYFJlY2VpdmVkICd0YXJnZXRDcmVhdGVkJyBldmVudCB3aXRoIG5vIHBlbmRpbmcgcmVxdWVzdDogJHtKU09OLnN0cmluZ2lmeSh0YXJnZXRJbmZvKX1gKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbYXBwSWRLZXksIHBhZ2VJZEtleV0gPSB0aGlzLnBlbmRpbmdUYXJnZXROb3RpZmljYXRpb24gfHwgW107XG4gICAgdGhpcy5wZW5kaW5nVGFyZ2V0Tm90aWZpY2F0aW9uID0gbnVsbDtcblxuICAgIGxvZy5kZWJ1ZyhgVGFyZ2V0IGNyZWF0ZWQgZm9yIGFwcCAnJHthcHBJZEtleX0nIGFuZCBwYWdlICcke3BhZ2VJZEtleX0nOiAke0pTT04uc3RyaW5naWZ5KHRhcmdldEluZm8pfWApO1xuICAgIHRoaXMudGFyZ2V0c1thcHBJZEtleV0gPSB0aGlzLnRhcmdldHNbYXBwSWRLZXldIHx8IHt9O1xuICAgIGlmIChfLmlzRW1wdHkodGhpcy50YXJnZXRzW2FwcElkS2V5XVtwYWdlSWRLZXldKSkge1xuICAgICAgdGhpcy50YXJnZXRzW2FwcElkS2V5XVtwYWdlSWRLZXldID0gdGFyZ2V0SW5mby50YXJnZXRJZDtcbiAgICB9XG4gIH1cblxuICByZW1vdmVUYXJnZXQgKHRhcmdldEluZm8pIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0YXJnZXRJbmZvKSB8fCBfLmlzVW5kZWZpbmVkKHRhcmdldEluZm8udGFyZ2V0SWQpKSB7XG4gICAgICBsb2cuZGVidWcoYFJlY2VpdmVkICd0YXJnZXREZXN0cm95ZWQnIGV2ZW50IHdpdGggbm8gdGFyZ2V0LiBTa2lwcGluZ2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBsb2cuZGVidWcoYFRhcmdldCBkZXN0cm95ZWQ6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0SW5mbyl9YCk7XG4gICAgXy5wdWxsKHRoaXMudGFyZ2V0cywgdGFyZ2V0SW5mby50YXJnZXRJZCk7XG4gIH1cblxuICBnZXQgdGFyZ2V0cyAoKSB7XG4gICAgdGhpcy5fdGFyZ2V0cyA9IHRoaXMuX3RhcmdldHMgfHwge307XG4gICAgcmV0dXJuIHRoaXMuX3RhcmdldHM7XG4gIH1cblxuICBnZXRUYXJnZXQgKGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICBjb25zdCB0YXJnZXQgPSAodGhpcy50YXJnZXRzW2FwcElkS2V5XSB8fCB7fSlbcGFnZUlkS2V5XTtcbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9XG5cbiAgZ2V0IHNob3VsZENoZWNrRm9yVGFyZ2V0ICgpIHtcbiAgICByZXR1cm4gdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQ7XG4gIH1cblxuICBzZXQgc2hvdWxkQ2hlY2tGb3JUYXJnZXQgKHNob3VsZENoZWNrRm9yVGFyZ2V0KSB7XG4gICAgdGhpcy5fc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSAhIXNob3VsZENoZWNrRm9yVGFyZ2V0O1xuICB9XG5cbiAgYXN5bmMgY29ubmVjdCAoKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAgIHRocm93IG5ldyBFcnJvcihgU3ViLWNsYXNzZXMgbmVlZCB0byBpbXBsZW1lbnQgYSAnY29ubmVjdCcgZnVuY3Rpb25gKTtcbiAgfVxuXG4gIGFzeW5jIGRpc2Nvbm5lY3QgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFN1Yi1jbGFzc2VzIG5lZWQgdG8gaW1wbGVtZW50IGEgJ2Rpc2Nvbm5lY3QnIGZ1bmN0aW9uYCk7XG4gIH1cblxuICBpc0Nvbm5lY3RlZCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuY29ubmVjdGVkO1xuICB9XG5cbiAgc2V0U3BlY2lhbE1lc3NhZ2VIYW5kbGVyIChrZXksIGVycm9ySGFuZGxlciwgaGFuZGxlcikge1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXIuc2V0U3BlY2lhbE1lc3NhZ2VIYW5kbGVyKGtleSwgZXJyb3JIYW5kbGVyLCBoYW5kbGVyKTtcbiAgfVxuXG4gIGdldFNwZWNpYWxNZXNzYWdlSGFuZGxlciAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMubWVzc2FnZUhhbmRsZXIuZ2V0U3BlY2lhbE1lc3NhZ2VIYW5kbGVyKGtleSk7XG4gIH1cblxuICBzZXREYXRhTWVzc2FnZUhhbmRsZXIgKGtleSwgZXJyb3JIYW5kbGVyLCBoYW5kbGVyKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5zZXREYXRhTWVzc2FnZUhhbmRsZXIoa2V5LCBlcnJvckhhbmRsZXIsIGhhbmRsZXIpO1xuICB9XG5cbiAgYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZCAoYWxsb3cgPSB0cnVlKSB7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5hbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkKGFsbG93KTtcbiAgfVxuXG4gIGFzeW5jIHNlbGVjdFBhZ2UgKGFwcElkS2V5LCBwYWdlSWRLZXkpIHtcbiAgICB0aGlzLnBlbmRpbmdUYXJnZXROb3RpZmljYXRpb24gPSBbYXBwSWRLZXksIHBhZ2VJZEtleV07XG4gICAgdGhpcy5zaG91bGRDaGVja0ZvclRhcmdldCA9IGZhbHNlO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnc2V0U2VuZGVyS2V5Jywge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgfSk7XG4gICAgbG9nLmRlYnVnKCdTZW5kZXIga2V5IHNldCcpO1xuXG4gICAgdGhpcy5zaG91bGRDaGVja0ZvclRhcmdldCA9IHRydWU7XG4gICAgYXdhaXQgdGhpcy5zZW5kKCdlbmFibGVQYWdlJywge1xuICAgICAgYXBwSWRLZXksXG4gICAgICBwYWdlSWRLZXksXG4gICAgfSk7XG4gICAgbG9nLmRlYnVnKCdFbmFibGVkIGFjdGl2aXR5IG9uIHBhZ2UnKTtcbiAgfVxuXG4gIGFzeW5jIHNlbGVjdEFwcCAoYXBwSWRLZXksIGFwcGxpY2F0aW9uQ29ubmVjdGVkSGFuZGxlcikge1xuICAgIHJldHVybiBhd2FpdCBuZXcgQigocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgICAvLyBsb2NhbCBjYWxsYmFjaywgdGVtcG9yYXJpbHkgYWRkZWQgYXMgY2FsbGJhY2sgdG9cbiAgICAgIC8vIGBfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOmAgcmVtb3RlIGRlYnVnZ2VyIHJlc3BvbnNlXG4gICAgICAvLyB0byBoYW5kbGUgdGhlIGluaXRpYWwgY29ubmVjdGlvblxuICAgICAgY29uc3Qgb25BcHBDaGFuZ2UgPSAoZGljdCkgPT4ge1xuICAgICAgICAvLyBmcm9tIHRoZSBkaWN0aW9uYXJ5IHJldHVybmVkLCBnZXQgdGhlIGlkc1xuICAgICAgICBsZXQgb2xkQXBwSWRLZXkgPSBkaWN0LldJUkhvc3RBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG4gICAgICAgIGxldCBjb3JyZWN0QXBwSWRLZXkgPSBkaWN0LldJUkFwcGxpY2F0aW9uSWRlbnRpZmllcktleTtcblxuICAgICAgICAvLyBpZiB0aGlzIGlzIGEgcmVwb3J0IG9mIGEgcHJveHkgcmVkaXJlY3QgZnJvbSB0aGUgcmVtb3RlIGRlYnVnZ2VyXG4gICAgICAgIC8vIHdlIHdhbnQgdG8gdXBkYXRlIG91ciBkaWN0aW9uYXJ5IGFuZCBnZXQgYSBuZXcgYXBwIGlkXG4gICAgICAgIGlmIChvbGRBcHBJZEtleSAmJiBjb3JyZWN0QXBwSWRLZXkgIT09IG9sZEFwcElkS2V5KSB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBXZSB3ZXJlIG5vdGlmaWVkIHdlIG1pZ2h0IGhhdmUgY29ubmVjdGVkIHRvIHRoZSB3cm9uZyBhcHAuIGAgK1xuICAgICAgICAgICAgICAgICAgICBgVXNpbmcgaWQgJHtjb3JyZWN0QXBwSWRLZXl9IGluc3RlYWQgb2YgJHtvbGRBcHBJZEtleX1gKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGFwcGxpY2F0aW9uQ29ubmVjdGVkSGFuZGxlcihkaWN0KTtcbiAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignTmV3IGFwcGxpY2F0aW9uIGhhcyBjb25uZWN0ZWQnKSk7XG4gICAgICB9O1xuICAgICAgdGhpcy5zZXRTcGVjaWFsTWVzc2FnZUhhbmRsZXIoJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgcmVqZWN0LCBvbkFwcENoYW5nZSk7XG5cbiAgICAgIC8vIGRvIHRoZSBhY3R1YWwgY29ubmVjdGluZyB0byB0aGUgYXBwXG4gICAgICByZXR1cm4gKGFzeW5jICgpID0+IHtcbiAgICAgICAgbGV0IHBhZ2VEaWN0LCBjb25uZWN0ZWRBcHBJZEtleTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAoW2Nvbm5lY3RlZEFwcElkS2V5LCBwYWdlRGljdF0gPSBhd2FpdCB0aGlzLnNlbmQoJ2Nvbm5lY3RUb0FwcCcsIHtcbiAgICAgICAgICAgIGFwcElkS2V5XG4gICAgICAgICAgfSkpO1xuICAgICAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgICAgICBsb2cud2FybihgVW5hYmxlIHRvIGNvbm5lY3QgdG8gYXBwOiAke2Vyci5tZXNzYWdlfWApO1xuICAgICAgICAgIHJlamVjdChlcnIpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc29tZXRpbWVzIHRoZSBjb25uZWN0IGxvZ2ljIGhhcHBlbnMsIGJ1dCB3aXRoIGFuIGVtcHR5IGRpY3Rpb25hcnlcbiAgICAgICAgLy8gd2hpY2ggbGVhZHMgdG8gdGhlIHJlbW90ZSBkZWJ1Z2dlciBnZXR0aW5nIGRpc2Nvbm5lY3RlZCwgYW5kIGludG8gYSBsb29wXG4gICAgICAgIGlmIChfLmlzRW1wdHkocGFnZURpY3QpKSB7XG4gICAgICAgICAgbGV0IG1zZyA9ICdFbXB0eSBwYWdlIGRpY3Rpb25hcnkgcmVjZWl2ZWQnO1xuICAgICAgICAgIGxvZy5kZWJ1Zyhtc2cpO1xuICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IobXNnKSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmVzb2x2ZShbY29ubmVjdGVkQXBwSWRLZXksIHBhZ2VEaWN0XSk7XG4gICAgICAgIH1cbiAgICAgIH0pKCk7XG4gICAgfSkuZmluYWxseSgoKSA9PiB7XG4gICAgICAvLyBubyBtYXR0ZXIgd2hhdCwgd2Ugd2FudCB0byByZXN0b3JlIHRoZSBoYW5kbGVyIHRoYXQgd2FzIGNoYW5nZWQuXG4gICAgICB0aGlzLnNldFNwZWNpYWxNZXNzYWdlSGFuZGxlcignX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDonLCBudWxsLCBhcHBsaWNhdGlvbkNvbm5lY3RlZEhhbmRsZXIpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgcmVjZWl2ZSAoLyogZGF0YSAqLykgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFN1Yi1jbGFzc2VzIG5lZWQgdG8gaW1wbGVtZW50IGEgJ3JlY2VpdmUnIGZ1bmN0aW9uYCk7XG4gIH1cblxuICBzZXRUaW1lbGluZUV2ZW50SGFuZGxlciAodGltZWxpbmVFdmVudEhhbmRsZXIpIHtcbiAgICB0aGlzLnRpbWVsaW5lRXZlbnRIYW5kbGVyID0gdGltZWxpbmVFdmVudEhhbmRsZXI7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5zZXRUaW1lbGluZUV2ZW50SGFuZGxlcih0aW1lbGluZUV2ZW50SGFuZGxlcik7XG4gIH1cblxuICBzZXRDb25zb2xlTG9nRXZlbnRIYW5kbGVyIChjb25zb2xlRXZlbnRIYW5kbGVyKSB7XG4gICAgdGhpcy5jb25zb2xlRXZlbnRIYW5kbGVyID0gY29uc29sZUV2ZW50SGFuZGxlcjtcbiAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNldENvbnNvbGVMb2dFdmVudEhhbmRsZXIoY29uc29sZUV2ZW50SGFuZGxlcik7XG4gIH1cblxuICBzZXROZXR3b3JrTG9nRXZlbnRIYW5kbGVyIChuZXR3b3JrRXZlbnRIYW5kbGVyKSB7XG4gICAgdGhpcy5uZXR3b3JrRXZlbnRIYW5kbGVyID0gbmV0d29ya0V2ZW50SGFuZGxlcjtcbiAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNldE5ldHdvcmtFdmVudEhhbmRsZXIobmV0d29ya0V2ZW50SGFuZGxlcik7XG4gIH1cbn1cbiJdLCJmaWxlIjoibGliL3JwYy1jbGllbnQuanMiLCJzb3VyY2VSb290IjoiLi4vLi4ifQ==
|
|
397
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImxpYi9ycGMtY2xpZW50LmpzIl0sIm5hbWVzIjpbIkRBVEFfTE9HX0xFTkdUSCIsImxlbmd0aCIsIldBSVRfRk9SX1RBUkdFVF9SRVRSSUVTIiwiV0FJVF9GT1JfVEFSR0VUX0lOVEVSVkFMIiwiR0VORVJJQ19UQVJHRVRfSUQiLCJScGNDbGllbnQiLCJjb25zdHJ1Y3RvciIsIm9wdHMiLCJfdGFyZ2V0cyIsIl9zaG91bGRDaGVja0ZvclRhcmdldCIsInNob3VsZENoZWNrRm9yVGFyZ2V0IiwiYnVuZGxlSWQiLCJwbGF0Zm9ybVZlcnNpb24iLCJpc1NhZmFyaSIsInNwZWNpYWxNZXNzYWdlSGFuZGxlcnMiLCJsb2dGdWxsUmVzcG9uc2UiLCJjb25uZWN0ZWQiLCJjb25uSWQiLCJVVUlEIiwiY3JlYXRlIiwidG9TdHJpbmciLCJzZW5kZXJJZCIsIm1zZ0lkIiwic2V0Q29tbXVuaWNhdGlvblByb3RvY29sIiwiaXNUYXJnZXRCYXNlZCIsImxvZyIsIndhcm4iLCJyZW1vdGVNZXNzYWdlcyIsIlJlbW90ZU1lc3NhZ2VzIiwibWVzc2FnZUhhbmRsZXIiLCJScGNNZXNzYWdlSGFuZGxlciIsIm5lZWRzVGFyZ2V0Iiwid2FpdEZvclRhcmdldCIsImFwcElkS2V5IiwicGFnZUlkS2V5IiwidXRpbCIsImNvbXBhcmVWZXJzaW9ucyIsIl8iLCJpc0VtcHR5IiwiZ2V0VGFyZ2V0IiwiYWRkVGFyZ2V0IiwidGFyZ2V0SWQiLCJ0YXJnZXRzIiwidGFyZ2V0SWRzIiwidmFsdWVzIiwibWFwIiwicmVwbGFjZSIsInNvcnQiLCJsYXN0VGFyZ2V0SWQiLCJsYXN0IiwiRXJyb3IiLCJlcnIiLCJkZWJ1ZyIsInNlbmQiLCJjb21tYW5kIiwic3RhcnRUaW1lIiwicHJvY2VzcyIsImhydGltZSIsInNlbmRUb0RldmljZSIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsImdldExvZ2dhYmxlUmVzcG9uc2UiLCJyZXMiLCJpc1N0cmluZyIsIkpTT04iLCJzdHJpbmdpZnkiLCJ0cnVuY2F0ZSIsIkIiLCJyZXNvbHZlIiwicmVqZWN0Iiwic2VuZE9wdHMiLCJkZWZhdWx0cyIsImNtZCIsImdldFJlbW90ZUNvbW1hbmQiLCJtZXNzYWdlSGFuZGxlZCIsImhhc1NwZWNpYWxNZXNzYWdlSGFuZGxlciIsIl9fc2VsZWN0b3IiLCJzcGVjaWFsTWVzc2FnZUhhbmRsZXIiLCJnZXRTcGVjaWFsTWVzc2FnZUhhbmRsZXIiLCJzZXRTcGVjaWFsTWVzc2FnZUhhbmRsZXIiLCJhcmdzIiwiX19hcmd1bWVudCIsIldJUlNvY2tldERhdGFLZXkiLCJlcnJvckhhbmRsZXIiLCJtc2ciLCJjb2RlIiwic2V0RGF0YU1lc3NhZ2VIYW5kbGVyIiwidmFsdWUiLCJwYXJhbXMiLCJpZCIsIkJ1ZmZlciIsImZyb20iLCJzZW5kTWVzc2FnZSIsInRhcmdldEluZm8iLCJpc1VuZGVmaW5lZCIsInBlbmRpbmdUYXJnZXROb3RpZmljYXRpb24iLCJyZW1vdmVUYXJnZXQiLCJwdWxsIiwidGFyZ2V0IiwiY29ubmVjdCIsImRpc2Nvbm5lY3QiLCJpc0Nvbm5lY3RlZCIsImtleSIsImhhbmRsZXIiLCJhbGxvd05hdmlnYXRpb25XaXRob3V0UmVsb2FkIiwiYWxsb3ciLCJzZWxlY3RQYWdlIiwic2VsZWN0QXBwIiwiYXBwbGljYXRpb25Db25uZWN0ZWRIYW5kbGVyIiwib25BcHBDaGFuZ2UiLCJkaWN0Iiwib2xkQXBwSWRLZXkiLCJXSVJIb3N0QXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwiY29ycmVjdEFwcElkS2V5IiwiV0lSQXBwbGljYXRpb25JZGVudGlmaWVyS2V5IiwicGFnZURpY3QiLCJjb25uZWN0ZWRBcHBJZEtleSIsImZpbmFsbHkiLCJyZWNlaXZlIiwic2V0VGltZWxpbmVFdmVudEhhbmRsZXIiLCJ0aW1lbGluZUV2ZW50SGFuZGxlciIsInNldENvbnNvbGVMb2dFdmVudEhhbmRsZXIiLCJjb25zb2xlRXZlbnRIYW5kbGVyIiwic2V0TmV0d29ya0xvZ0V2ZW50SGFuZGxlciIsIm5ldHdvcmtFdmVudEhhbmRsZXIiLCJz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O0FBQ0Q7O0FBSUQsWUFBSWQsZ0JBQUVDLE9BQUYsQ0FBVTZFLFFBQVYsQ0FBSixFQUF5QjtBQUN2QixjQUFJL0IsR0FBRyxHQUFHLGdDQUFWOztBQUNBM0QsMEJBQUkyQixLQUFKLENBQVVnQyxHQUFWOztBQUNBZixVQUFBQSxNQUFNLENBQUMsSUFBSW5CLEtBQUosQ0FBVWtDLEdBQVYsQ0FBRCxDQUFOO0FBQ0QsU0FKRCxNQUlPO0FBQ0xoQixVQUFBQSxPQUFPLENBQUMsQ0FBQ2dELGlCQUFELEVBQW9CRCxRQUFwQixDQUFELENBQVA7QUFDRDtBQUNGLE9BcEJNLEdBQVA7QUFxQkQsS0EzQ1ksRUEyQ1ZFLE9BM0NVLENBMkNGLE1BQU07QUFFZixXQUFLdEMsd0JBQUwsQ0FBOEIsNEJBQTlCLEVBQTRELElBQTVELEVBQWtFNkIsMkJBQWxFO0FBQ0QsS0E5Q1ksQ0FBYjtBQStDRDs7QUFFRCxRQUFNVSxPQUFOLEdBQTJCO0FBQ3pCLFVBQU0sSUFBSXBFLEtBQUosQ0FBVyxvREFBWCxDQUFOO0FBQ0Q7O0FBRURxRSxFQUFBQSx1QkFBdUIsQ0FBRUMsb0JBQUYsRUFBd0I7QUFDN0MsU0FBS0Esb0JBQUwsR0FBNEJBLG9CQUE1QjtBQUNBLFNBQUszRixjQUFMLENBQW9CMEYsdUJBQXBCLENBQTRDQyxvQkFBNUM7QUFDRDs7QUFFREMsRUFBQUEseUJBQXlCLENBQUVDLG1CQUFGLEVBQXVCO0FBQzlDLFNBQUtBLG1CQUFMLEdBQTJCQSxtQkFBM0I7QUFDQSxTQUFLN0YsY0FBTCxDQUFvQjRGLHlCQUFwQixDQUE4Q0MsbUJBQTlDO0FBQ0Q7O0FBRURDLEVBQUFBLHlCQUF5QixDQUFFQyxtQkFBRixFQUF1QjtBQUM5QyxTQUFLQSxtQkFBTCxHQUEyQkEsbUJBQTNCO0FBQ0EsU0FBSy9GLGNBQUwsQ0FBb0JnRyxzQkFBcEIsQ0FBMkNELG1CQUEzQztBQUNEOztBQXhXNEIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVtb3RlTWVzc2FnZXMgZnJvbSAnLi9yZW1vdGUtbWVzc2FnZXMnO1xuaW1wb3J0IHsgcmV0cnlJbnRlcnZhbCB9IGZyb20gJ2FzeW5jYm94JztcbmltcG9ydCBsb2cgZnJvbSAnLi9sb2dnZXInO1xuaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCBCIGZyb20gJ2JsdWViaXJkJztcbmltcG9ydCBVVUlEIGZyb20gJ3V1aWQtanMnO1xuaW1wb3J0IFJwY01lc3NhZ2VIYW5kbGVyIGZyb20gJy4vcmVtb3RlLWRlYnVnZ2VyLW1lc3NhZ2UtaGFuZGxlcic7XG5pbXBvcnQgeyBpc1RhcmdldEJhc2VkLCBnZXRFbGFwc2VkVGltZSB9IGZyb20gJy4vaGVscGVycyc7XG5pbXBvcnQgeyB1dGlsIH0gZnJvbSAnYXBwaXVtLXN1cHBvcnQnO1xuXG5cbmNvbnN0IERBVEFfTE9HX0xFTkdUSCA9IHtsZW5ndGg6IDIwMH07XG5cbmNvbnN0IFdBSVRfRk9SX1RBUkdFVF9SRVRSSUVTID0gMTA7XG5jb25zdCBXQUlUX0ZPUl9UQVJHRVRfSU5URVJWQUwgPSAxMDAwO1xuXG5jb25zdCBHRU5FUklDX1RBUkdFVF9JRCA9ICdwYWdlLTYnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBScGNDbGllbnQge1xuICBjb25zdHJ1Y3RvciAob3B0cyA9IHt9KSB7XG4gICAgdGhpcy5fdGFyZ2V0cyA9IFtdO1xuICAgIHRoaXMuX3Nob3VsZENoZWNrRm9yVGFyZ2V0ID0gISFvcHRzLnNob3VsZENoZWNrRm9yVGFyZ2V0O1xuXG4gICAgY29uc3Qge1xuICAgICAgYnVuZGxlSWQsXG4gICAgICBwbGF0Zm9ybVZlcnNpb24gPSB7fSxcbiAgICAgIGlzU2FmYXJpID0gdHJ1ZSxcbiAgICAgIHNwZWNpYWxNZXNzYWdlSGFuZGxlcnMgPSB7fSxcbiAgICAgIGxvZ0Z1bGxSZXNwb25zZSA9IGZhbHNlLFxuICAgIH0gPSBvcHRzO1xuXG4gICAgdGhpcy5pc1NhZmFyaSA9IGlzU2FmYXJpO1xuXG4gICAgdGhpcy5jb25uZWN0ZWQgPSBmYWxzZTtcbiAgICB0aGlzLmNvbm5JZCA9IFVVSUQuY3JlYXRlKCkudG9TdHJpbmcoKTtcbiAgICB0aGlzLnNlbmRlcklkID0gVVVJRC5jcmVhdGUoKS50b1N0cmluZygpO1xuICAgIHRoaXMubXNnSWQgPSAwO1xuICAgIHRoaXMubG9nRnVsbFJlc3BvbnNlID0gbG9nRnVsbFJlc3BvbnNlO1xuXG4gICAgdGhpcy5idW5kbGVJZCA9IGJ1bmRsZUlkO1xuICAgIHRoaXMucGxhdGZvcm1WZXJzaW9uID0gcGxhdGZvcm1WZXJzaW9uO1xuXG4gICAgLy8gbWVzc2FnZSBoYW5kbGVyc1xuICAgIHRoaXMuc3BlY2lhbE1lc3NhZ2VIYW5kbGVycyA9IHNwZWNpYWxNZXNzYWdlSGFuZGxlcnM7XG5cbiAgICAvLyBzdGFydCB3aXRoIGEgYmVzdCBndWVzcyBmb3IgdGhlIHByb3RvY29sXG4gICAgdGhpcy5zZXRDb21tdW5pY2F0aW9uUHJvdG9jb2woaXNUYXJnZXRCYXNlZChpc1NhZmFyaSwgdGhpcy5wbGF0Zm9ybVZlcnNpb24pKTtcbiAgfVxuXG4gIHNldENvbW11bmljYXRpb25Qcm90b2NvbCAoaXNUYXJnZXRCYXNlZCA9IGZhbHNlKSB7XG4gICAgbG9nLndhcm4oYFNldHRpbmcgY29tbXVuaWNhdGlvbiBwcm90b2NvbDogdXNpbmcgJHtpc1RhcmdldEJhc2VkID8gJ1RhcmdldC1iYXNlZCcgOiAnZnVsbCBXZWIgSW5zcGVjdG9yIHByb3RvY29sJ30gY29tbXVuaWNhdGlvbmApO1xuICAgIHRoaXMuaXNUYXJnZXRCYXNlZCA9IGlzVGFyZ2V0QmFzZWQ7XG5cbiAgICBpZiAoIXRoaXMucmVtb3RlTWVzc2FnZXMpIHtcbiAgICAgIHRoaXMucmVtb3RlTWVzc2FnZXMgPSBuZXcgUmVtb3RlTWVzc2FnZXMoaXNUYXJnZXRCYXNlZCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVtb3RlTWVzc2FnZXMuc2V0Q29tbXVuaWNhdGlvblByb3RvY29sKGlzVGFyZ2V0QmFzZWQpO1xuICAgIH1cblxuICAgIGlmICghdGhpcy5tZXNzYWdlSGFuZGxlcikge1xuICAgICAgdGhpcy5tZXNzYWdlSGFuZGxlciA9IG5ldyBScGNNZXNzYWdlSGFuZGxlcih0aGlzLnNwZWNpYWxNZXNzYWdlSGFuZGxlcnMsIGlzVGFyZ2V0QmFzZWQpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNldENvbW11bmljYXRpb25Qcm90b2NvbChpc1RhcmdldEJhc2VkKTtcbiAgICB9XG4gIH1cblxuICBuZWVkc1RhcmdldCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgJiYgdGhpcy5pc1RhcmdldEJhc2VkO1xuICB9XG5cbiAgYXN5bmMgd2FpdEZvclRhcmdldCAoYXBwSWRLZXksIHBhZ2VJZEtleSkge1xuICAgIGlmICghdGhpcy5uZWVkc1RhcmdldCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gb24gaU9TIGxlc3MgdGhhbiAxMyBoYXZlIHRhcmdldHMgdGhhdCBjYW4gYmUgY29tcHV0ZWQgZWFzaWx5XG4gICAgLy8gYW5kIHNvbWV0aW1lcyBpcyBub3QgcmVwb3J0ZWQgYnkgdGhlIFdlYiBJbnNwZWN0b3JcbiAgICBpZiAodXRpbC5jb21wYXJlVmVyc2lvbnModGhpcy5wbGF0Zm9ybVZlcnNpb24sICc8JywgJzEzLjAnKSAmJiBfLmlzRW1wdHkodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpKSB7XG4gICAgICBpZiAodGhpcy5pc1NhZmFyaSkge1xuICAgICAgICB0aGlzLmFkZFRhcmdldCh7dGFyZ2V0SWQ6IGBwYWdlLSR7cGFnZUlkS2V5fWB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IHRhcmdldHMgPSB0aGlzLnRhcmdldHNbYXBwSWRLZXldO1xuICAgICAgICBjb25zdCB0YXJnZXRJZHMgPSBfLnZhbHVlcyh0YXJnZXRzKVxuICAgICAgICAgIC5tYXAoKHRhcmdldElkKSA9PiB0YXJnZXRJZC5yZXBsYWNlKCdwYWdlLScsICcnKSlcbiAgICAgICAgICAuc29ydCgpO1xuICAgICAgICBjb25zdCBsYXN0VGFyZ2V0SWQgPSBfLmxhc3QodGFyZ2V0SWRzKSB8fCAwO1xuICAgICAgICB0aGlzLmFkZFRhcmdldCh7dGFyZ2V0SWQ6IGBwYWdlLSR7bGFzdFRhcmdldElkICsgMX1gfSk7XG4gICAgICB9XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gb3RoZXJ3aXNlIHdhaXRpbmcgaXMgbmVjZXNzYXJ5IHRvIHNlZSB3aGF0IHRoZSB0YXJnZXQgaXNcbiAgICB0cnkge1xuICAgICAgYXdhaXQgcmV0cnlJbnRlcnZhbChXQUlUX0ZPUl9UQVJHRVRfUkVUUklFUywgV0FJVF9GT1JfVEFSR0VUX0lOVEVSVkFMLCAoKSA9PiB7XG4gICAgICAgIGlmIChfLmlzRW1wdHkodGhpcy5nZXRUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSkpKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdObyB0YXJnZXRzIGZvdW5kLCB1bmFibGUgdG8gY29tbXVuaWNhdGUgd2l0aCBkZXZpY2UnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAvLyBvbiBzb21lIHN5c3RlbXMgc29tZXRpbWVzIHRoZSBXZWIgSW5zcGVjdG9yIG5ldmVyIHNlbmRzIHRoZSB0YXJnZXQgZXZlbnRcbiAgICAgIC8vIHRob3VnaCB0aGUgdGFyZ2V0IGlzIGF2YWlsYWJsZVxuICAgICAgbG9nLmRlYnVnKGBObyB0YXJnZXQgZm91bmQuIFRyeWluZyAnJHtHRU5FUklDX1RBUkdFVF9JRH0nLCB3aGljaCBzZWVtcyB0byB3b3JrYCk7XG4gICAgICB0aGlzLmFkZFRhcmdldCh7dGFyZ2V0SWQ6IEdFTkVSSUNfVEFSR0VUX0lEfSk7XG4gICAgfVxuICB9XG5cbiAgYXN5bmMgc2VuZCAoY29tbWFuZCwgb3B0cyA9IHt9KSB7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gcHJvY2Vzcy5ocnRpbWUoKTtcbiAgICBjb25zdCB7XG4gICAgICBhcHBJZEtleSxcbiAgICAgIHBhZ2VJZEtleVxuICAgIH0gPSBvcHRzO1xuICAgIHRyeSB7XG4gICAgICBhd2FpdCB0aGlzLndhaXRGb3JUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVG9EZXZpY2UoY29tbWFuZCwgb3B0cyk7XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICBpZiAoZXJyLm1lc3NhZ2UuaW5jbHVkZXMoYCdUYXJnZXQnIGRvbWFpbiB3YXMgbm90IGZvdW5kYCkpIHtcbiAgICAgICAgdGhpcy5zZXRDb21tdW5pY2F0aW9uUHJvdG9jb2woZmFsc2UpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5zZW5kVG9EZXZpY2UoY29tbWFuZCwgb3B0cyk7XG4gICAgICB9IGVsc2UgaWYgKGVyci5tZXNzYWdlLmluY2x1ZGVzKGBkb21haW4gd2FzIG5vdCBmb3VuZGApKSB7XG4gICAgICAgIHRoaXMuc2V0Q29tbXVuaWNhdGlvblByb3RvY29sKHRydWUpO1xuICAgICAgICBhd2FpdCB0aGlzLndhaXRGb3JUYXJnZXQoYXBwSWRLZXksIHBhZ2VJZEtleSk7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnNlbmRUb0RldmljZShjb21tYW5kLCBvcHRzKTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBFcnJvcihlcnIpO1xuICAgIH0gZmluYWxseSB7XG4gICAgICBsb2cuZGVidWcoYFNlbmRpbmcgdG8gV2ViIEluc3BlY3RvciB0b29rICR7Z2V0RWxhcHNlZFRpbWUoc3RhcnRUaW1lKX1tc2ApO1xuICAgIH1cbiAgfVxuXG4gIGdldExvZ2dhYmxlUmVzcG9uc2UgKHJlcykge1xuICAgIHJldHVybiBfLmlzU3RyaW5nKHJlcylcbiAgICAgID8gcmVzXG4gICAgICA6IHRoaXMubG9nRnVsbFJlc3BvbnNlXG4gICAgICAgID8gSlNPTi5zdHJpbmdpZnkocmVzLCBudWxsLCAyKVxuICAgICAgICA6IF8udHJ1bmNhdGUoSlNPTi5zdHJpbmdpZnkocmVzKSwgREFUQV9MT0dfTEVOR1RIKTtcbiAgfVxuXG4gIGFzeW5jIHNlbmRUb0RldmljZSAoY29tbWFuZCwgb3B0cyA9IHt9KSB7XG4gICAgcmV0dXJuIGF3YWl0IG5ldyBCKGFzeW5jIChyZXNvbHZlLCByZWplY3QpID0+IHtcbiAgICAgIC8vIHByb21pc2UgdG8gYmUgcmVzb2x2ZWQgd2hlbmV2ZXIgcmVtb3RlIGRlYnVnZ2VyXG4gICAgICAvLyByZXBsaWVzIHRvIG91ciByZXF1ZXN0XG5cbiAgICAgIC8vIGtlZXAgdHJhY2sgb2YgdGhlIG1lc3NhZ2VzIGNvbWluZyBhbmQgZ29pbmcgdXNpbmcgYSBzaW1wbGUgc2VxdWVudGlhbCBpZFxuICAgICAgY29uc3QgbXNnSWQgPSB0aGlzLm1zZ0lkKys7XG5cbiAgICAgIC8vIHJldHJpZXZlIHRoZSBjb3JyZWN0IGNvbW1hbmQgdG8gc2VuZFxuICAgICAgY29uc3Qgc2VuZE9wdHMgPSBfLmRlZmF1bHRzKHtjb25uSWQ6IHRoaXMuY29ubklkLCBzZW5kZXJJZDogdGhpcy5zZW5kZXJJZH0sIG9wdHMpO1xuICAgICAgY29uc3QgY21kID0gdGhpcy5yZW1vdGVNZXNzYWdlcy5nZXRSZW1vdGVDb21tYW5kKGNvbW1hbmQsIHNlbmRPcHRzKTtcblxuICAgICAgbGV0IG1lc3NhZ2VIYW5kbGVkID0gZmFsc2U7XG4gICAgICBpZiAodGhpcy5tZXNzYWdlSGFuZGxlci5oYXNTcGVjaWFsTWVzc2FnZUhhbmRsZXIoY21kLl9fc2VsZWN0b3IpKSB7XG4gICAgICAgIG1lc3NhZ2VIYW5kbGVkID0gdHJ1ZTtcblxuICAgICAgICAvLyBzcGVjaWFsIHJlcGxpZXMgd2lsbCByZXR1cm4gYW55IG51bWJlciBvZiBhcmd1bWVudHNcbiAgICAgICAgLy8gdGVtcG9yYXJpbHkgd3JhcCB3aXRoIHByb21pc2UgaGFuZGxpbmdcbiAgICAgICAgY29uc3Qgc3BlY2lhbE1lc3NhZ2VIYW5kbGVyID0gdGhpcy5nZXRTcGVjaWFsTWVzc2FnZUhhbmRsZXIoY21kLl9fc2VsZWN0b3IpO1xuICAgICAgICB0aGlzLnNldFNwZWNpYWxNZXNzYWdlSGFuZGxlcihjbWQuX19zZWxlY3RvciwgcmVqZWN0LCAoLi4uYXJncykgPT4ge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgUmVjZWl2ZWQgcmVzcG9uc2UgZnJvbSBzZW5kIChpZDogJHttc2dJZH0pOiAnJHt0aGlzLmdldExvZ2dhYmxlUmVzcG9uc2UoYXJncyl9J2ApO1xuXG4gICAgICAgICAgLy8gY2FsbCB0aGUgb3JpZ2luYWwgbGlzdGVuZXIsIGFuZCBwdXQgaXQgYmFjaywgaWYgbmVjZXNzYXJ5XG4gICAgICAgICAgc3BlY2lhbE1lc3NhZ2VIYW5kbGVyKC4uLmFyZ3MpO1xuICAgICAgICAgIGlmICh0aGlzLm1lc3NhZ2VIYW5kbGVyLmhhc1NwZWNpYWxNZXNzYWdlSGFuZGxlcihjbWQuX19zZWxlY3RvcikpIHtcbiAgICAgICAgICAgIC8vIHRoaXMgbWVhbnMgdGhhdCB0aGUgc3lzdGVtIGhhcyBub3QgcmVtb3ZlZCB0aGlzIGxpc3RlbmVyXG4gICAgICAgICAgICB0aGlzLnNldFNwZWNpYWxNZXNzYWdlSGFuZGxlcihjbWQuX19zZWxlY3RvciwgbnVsbCwgc3BlY2lhbE1lc3NhZ2VIYW5kbGVyKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKGFyZ3MpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAoY21kLl9fYXJndW1lbnQgJiYgY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSkge1xuICAgICAgICBtZXNzYWdlSGFuZGxlZCA9IHRydWU7XG5cbiAgICAgICAgY29uc3QgZXJyb3JIYW5kbGVyID0gZnVuY3Rpb24gKGVycikge1xuICAgICAgICAgIGNvbnN0IG1zZyA9IGBSZW1vdGUgZGVidWdnZXIgZXJyb3Igd2l0aCBjb2RlICcke2Vyci5jb2RlfSc6ICR7ZXJyLm1lc3NhZ2V9YDtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKG1zZykpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHRoaXMuc2V0RGF0YU1lc3NhZ2VIYW5kbGVyKG1zZ0lkLnRvU3RyaW5nKCksIGVycm9ySGFuZGxlciwgKHZhbHVlKSA9PiB7XG4gICAgICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCBkYXRhIHJlc3BvbnNlIGZyb20gc2VuZCAoaWQ6ICR7bXNnSWR9KTogJyR7dGhpcy5nZXRMb2dnYWJsZVJlc3BvbnNlKHZhbHVlKX0nYCk7XG4gICAgICAgICAgcmVzb2x2ZSh2YWx1ZSk7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgbWVzc2FnZSBiZWluZyBzZW50IGhhcyBhbGwgdGhlIGluZm9ybWF0aW9uIHRoYXQgaXMgbmVlZGVkXG4gICAgICAgIGlmIChjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LnBhcmFtcykge1xuICAgICAgICAgIGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkucGFyYW1zLmlkID0gbXNnSWQ7XG4gICAgICAgICAgaWYgKCFjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LnBhcmFtcy50YXJnZXRJZCAmJiB0aGlzLm5lZWRzVGFyZ2V0KCkpIHtcbiAgICAgICAgICAgIGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkucGFyYW1zLnRhcmdldElkID0gdGhpcy5nZXRUYXJnZXQoc2VuZE9wdHMuYXBwSWRLZXksIHNlbmRPcHRzLnBhZ2VJZEtleSk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LnBhcmFtcy5tZXNzYWdlKSB7XG4gICAgICAgICAgICBjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LnBhcmFtcy5tZXNzYWdlLmlkID0gbXNnSWQ7XG4gICAgICAgICAgICBjbWQuX19hcmd1bWVudC5XSVJTb2NrZXREYXRhS2V5LnBhcmFtcy5tZXNzYWdlID0gSlNPTi5zdHJpbmdpZnkoY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleS5wYXJhbXMubWVzc2FnZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGNtZC5fX2FyZ3VtZW50LldJUlNvY2tldERhdGFLZXkuaWQgPSBtc2dJZDtcbiAgICAgICAgY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSA9XG4gICAgICAgICAgQnVmZmVyLmZyb20oSlNPTi5zdHJpbmdpZnkoY21kLl9fYXJndW1lbnQuV0lSU29ja2V0RGF0YUtleSkpO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBtc2cgPSBgU2VuZGluZyAnJHtjbWQuX19zZWxlY3Rvcn0nIG1lc3NhZ2VgICtcbiAgICAgICAgKHNlbmRPcHRzLmFwcElkS2V5ID8gYCB0byBhcHAgJyR7c2VuZE9wdHMuYXBwSWRLZXl9J2AgOiAnJykgK1xuICAgICAgICAoc2VuZE9wdHMucGFnZUlkS2V5ID8gYCwgcGFnZSAnJHtzZW5kT3B0cy5wYWdlSWRLZXl9J2AgOiAnJykgK1xuICAgICAgICAodGhpcy5uZWVkc1RhcmdldCgpID8gYCwgdGFyZ2V0ICcke3RoaXMuZ2V0VGFyZ2V0KHNlbmRPcHRzLmFwcElkS2V5LCBzZW5kT3B0cy5wYWdlSWRLZXkpfSdgIDogJycpICtcbiAgICAgICAgYCAoaWQ6ICR7bXNnSWR9KWA7XG4gICAgICBsb2cuZGVidWcobXNnKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuc2VuZE1lc3NhZ2UoY21kKTtcbiAgICAgICAgaWYgKCFtZXNzYWdlSGFuZGxlZCkge1xuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfVxuICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiByZWplY3QoZXJyKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHNlbmRNZXNzYWdlICgvKiBjb21tYW5kICovKSB7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgcmVxdWlyZS1hd2FpdFxuICAgIHRocm93IG5ldyBFcnJvcihgU3ViLWNsYXNzZXMgbmVlZCB0byBpbXBsZW1lbnQgYSAnc2VuZE1lc3NhZ2UnIGZ1bmN0aW9uYCk7XG4gIH1cblxuICBhZGRUYXJnZXQgKHRhcmdldEluZm8pIHtcbiAgICBpZiAoXy5pc1VuZGVmaW5lZCh0YXJnZXRJbmZvKSB8fCBfLmlzVW5kZWZpbmVkKHRhcmdldEluZm8udGFyZ2V0SWQpKSB7XG4gICAgICBsb2cud2FybihgUmVjZWl2ZWQgJ3RhcmdldENyZWF0ZWQnIGV2ZW50IHdpdGggbm8gdGFyZ2V0LiBTa2lwcGluZ2ApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoXy5pc0VtcHR5KHRoaXMucGVuZGluZ1RhcmdldE5vdGlmaWNhdGlvbikpIHtcbiAgICAgIGxvZy53YXJuKGBSZWNlaXZlZCAndGFyZ2V0Q3JlYXRlZCcgZXZlbnQgd2l0aCBubyBwZW5kaW5nIHJlcXVlc3Q6ICR7SlNPTi5zdHJpbmdpZnkodGFyZ2V0SW5mbyl9YCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgW2FwcElkS2V5LCBwYWdlSWRLZXldID0gdGhpcy5wZW5kaW5nVGFyZ2V0Tm90aWZpY2F0aW9uIHx8IFtdO1xuICAgIHRoaXMucGVuZGluZ1RhcmdldE5vdGlmaWNhdGlvbiA9IG51bGw7XG5cbiAgICBsb2cuZGVidWcoYFRhcmdldCBjcmVhdGVkIGZvciBhcHAgJyR7YXBwSWRLZXl9JyBhbmQgcGFnZSAnJHtwYWdlSWRLZXl9JzogJHtKU09OLnN0cmluZ2lmeSh0YXJnZXRJbmZvKX1gKTtcbiAgICB0aGlzLnRhcmdldHNbYXBwSWRLZXldID0gdGhpcy50YXJnZXRzW2FwcElkS2V5XSB8fCB7fTtcbiAgICBpZiAoXy5pc0VtcHR5KHRoaXMudGFyZ2V0c1thcHBJZEtleV1bcGFnZUlkS2V5XSkpIHtcbiAgICAgIHRoaXMudGFyZ2V0c1thcHBJZEtleV1bcGFnZUlkS2V5XSA9IHRhcmdldEluZm8udGFyZ2V0SWQ7XG4gICAgfVxuICB9XG5cbiAgcmVtb3ZlVGFyZ2V0ICh0YXJnZXRJbmZvKSB7XG4gICAgaWYgKF8uaXNVbmRlZmluZWQodGFyZ2V0SW5mbykgfHwgXy5pc1VuZGVmaW5lZCh0YXJnZXRJbmZvLnRhcmdldElkKSkge1xuICAgICAgbG9nLmRlYnVnKGBSZWNlaXZlZCAndGFyZ2V0RGVzdHJveWVkJyBldmVudCB3aXRoIG5vIHRhcmdldC4gU2tpcHBpbmdgKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgbG9nLmRlYnVnKGBUYXJnZXQgZGVzdHJveWVkOiAke0pTT04uc3RyaW5naWZ5KHRhcmdldEluZm8pfWApO1xuICAgIF8ucHVsbCh0aGlzLnRhcmdldHMsIHRhcmdldEluZm8udGFyZ2V0SWQpO1xuICB9XG5cbiAgZ2V0IHRhcmdldHMgKCkge1xuICAgIHRoaXMuX3RhcmdldHMgPSB0aGlzLl90YXJnZXRzIHx8IHt9O1xuICAgIHJldHVybiB0aGlzLl90YXJnZXRzO1xuICB9XG5cbiAgZ2V0VGFyZ2V0IChhcHBJZEtleSwgcGFnZUlkS2V5KSB7XG4gICAgY29uc3QgdGFyZ2V0ID0gKHRoaXMudGFyZ2V0c1thcHBJZEtleV0gfHwge30pW3BhZ2VJZEtleV07XG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfVxuXG4gIGdldCBzaG91bGRDaGVja0ZvclRhcmdldCAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3Nob3VsZENoZWNrRm9yVGFyZ2V0O1xuICB9XG5cbiAgc2V0IHNob3VsZENoZWNrRm9yVGFyZ2V0IChzaG91bGRDaGVja0ZvclRhcmdldCkge1xuICAgIHRoaXMuX3Nob3VsZENoZWNrRm9yVGFyZ2V0ID0gISFzaG91bGRDaGVja0ZvclRhcmdldDtcbiAgfVxuXG4gIGFzeW5jIGNvbm5lY3QgKCkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIHJlcXVpcmUtYXdhaXRcbiAgICB0aHJvdyBuZXcgRXJyb3IoYFN1Yi1jbGFzc2VzIG5lZWQgdG8gaW1wbGVtZW50IGEgJ2Nvbm5lY3QnIGZ1bmN0aW9uYCk7XG4gIH1cblxuICBhc3luYyBkaXNjb25uZWN0ICgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdkaXNjb25uZWN0JyBmdW5jdGlvbmApO1xuICB9XG5cbiAgaXNDb25uZWN0ZWQgKCkge1xuICAgIHJldHVybiB0aGlzLmNvbm5lY3RlZDtcbiAgfVxuXG4gIHNldFNwZWNpYWxNZXNzYWdlSGFuZGxlciAoa2V5LCBlcnJvckhhbmRsZXIsIGhhbmRsZXIpIHtcbiAgICB0aGlzLm1lc3NhZ2VIYW5kbGVyLnNldFNwZWNpYWxNZXNzYWdlSGFuZGxlcihrZXksIGVycm9ySGFuZGxlciwgaGFuZGxlcik7XG4gIH1cblxuICBnZXRTcGVjaWFsTWVzc2FnZUhhbmRsZXIgKGtleSkge1xuICAgIHJldHVybiB0aGlzLm1lc3NhZ2VIYW5kbGVyLmdldFNwZWNpYWxNZXNzYWdlSGFuZGxlcihrZXkpO1xuICB9XG5cbiAgc2V0RGF0YU1lc3NhZ2VIYW5kbGVyIChrZXksIGVycm9ySGFuZGxlciwgaGFuZGxlcikge1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXIuc2V0RGF0YU1lc3NhZ2VIYW5kbGVyKGtleSwgZXJyb3JIYW5kbGVyLCBoYW5kbGVyKTtcbiAgfVxuXG4gIGFsbG93TmF2aWdhdGlvbldpdGhvdXRSZWxvYWQgKGFsbG93ID0gdHJ1ZSkge1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXIuYWxsb3dOYXZpZ2F0aW9uV2l0aG91dFJlbG9hZChhbGxvdyk7XG4gIH1cblxuICBhc3luYyBzZWxlY3RQYWdlIChhcHBJZEtleSwgcGFnZUlkS2V5KSB7XG4gICAgdGhpcy5wZW5kaW5nVGFyZ2V0Tm90aWZpY2F0aW9uID0gW2FwcElkS2V5LCBwYWdlSWRLZXldO1xuICAgIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSBmYWxzZTtcbiAgICBhd2FpdCB0aGlzLnNlbmQoJ3NldFNlbmRlcktleScsIHtcbiAgICAgIGFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5LFxuICAgIH0pO1xuICAgIGxvZy5kZWJ1ZygnU2VuZGVyIGtleSBzZXQnKTtcblxuICAgIHRoaXMuc2hvdWxkQ2hlY2tGb3JUYXJnZXQgPSB0cnVlO1xuICAgIGF3YWl0IHRoaXMuc2VuZCgnZW5hYmxlUGFnZScsIHtcbiAgICAgIGFwcElkS2V5LFxuICAgICAgcGFnZUlkS2V5LFxuICAgIH0pO1xuICAgIGxvZy5kZWJ1ZygnRW5hYmxlZCBhY3Rpdml0eSBvbiBwYWdlJyk7XG4gIH1cblxuICBhc3luYyBzZWxlY3RBcHAgKGFwcElkS2V5LCBhcHBsaWNhdGlvbkNvbm5lY3RlZEhhbmRsZXIpIHtcbiAgICByZXR1cm4gYXdhaXQgbmV3IEIoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xuICAgICAgLy8gbG9jYWwgY2FsbGJhY2ssIHRlbXBvcmFyaWx5IGFkZGVkIGFzIGNhbGxiYWNrIHRvXG4gICAgICAvLyBgX3JwY19hcHBsaWNhdGlvbkNvbm5lY3RlZDpgIHJlbW90ZSBkZWJ1Z2dlciByZXNwb25zZVxuICAgICAgLy8gdG8gaGFuZGxlIHRoZSBpbml0aWFsIGNvbm5lY3Rpb25cbiAgICAgIGNvbnN0IG9uQXBwQ2hhbmdlID0gKGRpY3QpID0+IHtcbiAgICAgICAgLy8gZnJvbSB0aGUgZGljdGlvbmFyeSByZXR1cm5lZCwgZ2V0IHRoZSBpZHNcbiAgICAgICAgbGV0IG9sZEFwcElkS2V5ID0gZGljdC5XSVJIb3N0QXBwbGljYXRpb25JZGVudGlmaWVyS2V5O1xuICAgICAgICBsZXQgY29ycmVjdEFwcElkS2V5ID0gZGljdC5XSVJBcHBsaWNhdGlvbklkZW50aWZpZXJLZXk7XG5cbiAgICAgICAgLy8gaWYgdGhpcyBpcyBhIHJlcG9ydCBvZiBhIHByb3h5IHJlZGlyZWN0IGZyb20gdGhlIHJlbW90ZSBkZWJ1Z2dlclxuICAgICAgICAvLyB3ZSB3YW50IHRvIHVwZGF0ZSBvdXIgZGljdGlvbmFyeSBhbmQgZ2V0IGEgbmV3IGFwcCBpZFxuICAgICAgICBpZiAob2xkQXBwSWRLZXkgJiYgY29ycmVjdEFwcElkS2V5ICE9PSBvbGRBcHBJZEtleSkge1xuICAgICAgICAgIGxvZy5kZWJ1ZyhgV2Ugd2VyZSBub3RpZmllZCB3ZSBtaWdodCBoYXZlIGNvbm5lY3RlZCB0byB0aGUgd3JvbmcgYXBwLiBgICtcbiAgICAgICAgICAgICAgICAgICAgYFVzaW5nIGlkICR7Y29ycmVjdEFwcElkS2V5fSBpbnN0ZWFkIG9mICR7b2xkQXBwSWRLZXl9YCk7XG4gICAgICAgIH1cblxuICAgICAgICBhcHBsaWNhdGlvbkNvbm5lY3RlZEhhbmRsZXIoZGljdCk7XG4gICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ05ldyBhcHBsaWNhdGlvbiBoYXMgY29ubmVjdGVkJykpO1xuICAgICAgfTtcbiAgICAgIHRoaXMuc2V0U3BlY2lhbE1lc3NhZ2VIYW5kbGVyKCdfcnBjX2FwcGxpY2F0aW9uQ29ubmVjdGVkOicsIHJlamVjdCwgb25BcHBDaGFuZ2UpO1xuXG4gICAgICAvLyBkbyB0aGUgYWN0dWFsIGNvbm5lY3RpbmcgdG8gdGhlIGFwcFxuICAgICAgcmV0dXJuIChhc3luYyAoKSA9PiB7XG4gICAgICAgIGxldCBwYWdlRGljdCwgY29ubmVjdGVkQXBwSWRLZXk7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgKFtjb25uZWN0ZWRBcHBJZEtleSwgcGFnZURpY3RdID0gYXdhaXQgdGhpcy5zZW5kKCdjb25uZWN0VG9BcHAnLCB7XG4gICAgICAgICAgICBhcHBJZEtleVxuICAgICAgICAgIH0pKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgbG9nLndhcm4oYFVuYWJsZSB0byBjb25uZWN0IHRvIGFwcDogJHtlcnIubWVzc2FnZX1gKTtcbiAgICAgICAgICByZWplY3QoZXJyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIHNvbWV0aW1lcyB0aGUgY29ubmVjdCBsb2dpYyBoYXBwZW5zLCBidXQgd2l0aCBhbiBlbXB0eSBkaWN0aW9uYXJ5XG4gICAgICAgIC8vIHdoaWNoIGxlYWRzIHRvIHRoZSByZW1vdGUgZGVidWdnZXIgZ2V0dGluZyBkaXNjb25uZWN0ZWQsIGFuZCBpbnRvIGEgbG9vcFxuICAgICAgICBpZiAoXy5pc0VtcHR5KHBhZ2VEaWN0KSkge1xuICAgICAgICAgIGxldCBtc2cgPSAnRW1wdHkgcGFnZSBkaWN0aW9uYXJ5IHJlY2VpdmVkJztcbiAgICAgICAgICBsb2cuZGVidWcobXNnKTtcbiAgICAgICAgICByZWplY3QobmV3IEVycm9yKG1zZykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJlc29sdmUoW2Nvbm5lY3RlZEFwcElkS2V5LCBwYWdlRGljdF0pO1xuICAgICAgICB9XG4gICAgICB9KSgpO1xuICAgIH0pLmZpbmFsbHkoKCkgPT4ge1xuICAgICAgLy8gbm8gbWF0dGVyIHdoYXQsIHdlIHdhbnQgdG8gcmVzdG9yZSB0aGUgaGFuZGxlciB0aGF0IHdhcyBjaGFuZ2VkLlxuICAgICAgdGhpcy5zZXRTcGVjaWFsTWVzc2FnZUhhbmRsZXIoJ19ycGNfYXBwbGljYXRpb25Db25uZWN0ZWQ6JywgbnVsbCwgYXBwbGljYXRpb25Db25uZWN0ZWRIYW5kbGVyKTtcbiAgICB9KTtcbiAgfVxuXG4gIGFzeW5jIHJlY2VpdmUgKC8qIGRhdGEgKi8pIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSByZXF1aXJlLWF3YWl0XG4gICAgdGhyb3cgbmV3IEVycm9yKGBTdWItY2xhc3NlcyBuZWVkIHRvIGltcGxlbWVudCBhICdyZWNlaXZlJyBmdW5jdGlvbmApO1xuICB9XG5cbiAgc2V0VGltZWxpbmVFdmVudEhhbmRsZXIgKHRpbWVsaW5lRXZlbnRIYW5kbGVyKSB7XG4gICAgdGhpcy50aW1lbGluZUV2ZW50SGFuZGxlciA9IHRpbWVsaW5lRXZlbnRIYW5kbGVyO1xuICAgIHRoaXMubWVzc2FnZUhhbmRsZXIuc2V0VGltZWxpbmVFdmVudEhhbmRsZXIodGltZWxpbmVFdmVudEhhbmRsZXIpO1xuICB9XG5cbiAgc2V0Q29uc29sZUxvZ0V2ZW50SGFuZGxlciAoY29uc29sZUV2ZW50SGFuZGxlcikge1xuICAgIHRoaXMuY29uc29sZUV2ZW50SGFuZGxlciA9IGNvbnNvbGVFdmVudEhhbmRsZXI7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5zZXRDb25zb2xlTG9nRXZlbnRIYW5kbGVyKGNvbnNvbGVFdmVudEhhbmRsZXIpO1xuICB9XG5cbiAgc2V0TmV0d29ya0xvZ0V2ZW50SGFuZGxlciAobmV0d29ya0V2ZW50SGFuZGxlcikge1xuICAgIHRoaXMubmV0d29ya0V2ZW50SGFuZGxlciA9IG5ldHdvcmtFdmVudEhhbmRsZXI7XG4gICAgdGhpcy5tZXNzYWdlSGFuZGxlci5zZXROZXR3b3JrRXZlbnRIYW5kbGVyKG5ldHdvcmtFdmVudEhhbmRsZXIpO1xuICB9XG59XG4iXSwiZmlsZSI6ImxpYi9ycGMtY2xpZW50LmpzIiwic291cmNlUm9vdCI6Ii4uLy4uIn0=
|
package/lib/rpc-client.js
CHANGED
|
@@ -29,6 +29,8 @@ export default class RpcClient {
|
|
|
29
29
|
logFullResponse = false,
|
|
30
30
|
} = opts;
|
|
31
31
|
|
|
32
|
+
this.isSafari = isSafari;
|
|
33
|
+
|
|
32
34
|
this.connected = false;
|
|
33
35
|
this.connId = UUID.create().toString();
|
|
34
36
|
this.senderId = UUID.create().toString();
|
|
@@ -74,7 +76,16 @@ export default class RpcClient {
|
|
|
74
76
|
// on iOS less than 13 have targets that can be computed easily
|
|
75
77
|
// and sometimes is not reported by the Web Inspector
|
|
76
78
|
if (util.compareVersions(this.platformVersion, '<', '13.0') && _.isEmpty(this.getTarget(appIdKey, pageIdKey))) {
|
|
77
|
-
this.
|
|
79
|
+
if (this.isSafari) {
|
|
80
|
+
this.addTarget({targetId: `page-${pageIdKey}`});
|
|
81
|
+
} else {
|
|
82
|
+
const targets = this.targets[appIdKey];
|
|
83
|
+
const targetIds = _.values(targets)
|
|
84
|
+
.map((targetId) => targetId.replace('page-', ''))
|
|
85
|
+
.sort();
|
|
86
|
+
const lastTargetId = _.last(targetIds) || 0;
|
|
87
|
+
this.addTarget({targetId: `page-${lastTargetId + 1}`});
|
|
88
|
+
}
|
|
78
89
|
return;
|
|
79
90
|
}
|
|
80
91
|
|