Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

rookout

Package Overview
Dependencies
Maintainers
1
Versions
272
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rookout - npm Package Compare versions

Comparing version 0.97.0 to 0.98.0

4

com_ws/information.js

@@ -190,4 +190,4 @@ "use strict";

return {
"version": "0.97.0",
"commit": "a9d2c6c8e4320b0b87445dde94d97dc73b281441"
"version": "0.98.0",
"commit": "a94e9727d16968819dbf1b8c00c98fe239daf9c2"
};

@@ -194,0 +194,0 @@ }

@@ -20,4 +20,4 @@ "use strict";

this.VersionConfiguration = {
VERSION: "0.97.0",
COMMIT: "a9d2c6c8e4320b0b87445dde94d97dc73b281441"
VERSION: "0.98.0",
COMMIT: "a94e9727d16968819dbf1b8c00c98fe239daf9c2"
};

@@ -24,0 +24,0 @@ this.ControllerAddress = {

{
"name": "rookout",
"commit": "a9d2c6c8e4320b0b87445dde94d97dc73b281441",
"version": "0.97.0",
"commit": "a94e9727d16968819dbf1b8c00c98fe239daf9c2",
"version": "0.98.0",
"description": "Rook is a package for on the fly debugging and data extraction for applications in production",

@@ -6,0 +6,0 @@ "main": "index.js",

@@ -239,3 +239,3 @@ "use strict";

variant2Writer.writeAttributeValues(symbol, (object, variant2Writer) => {
self.dumpJSObject(obj[symbol], variant2Writer, childrenDepth, logErrors);
self.dumpJSObject(obj[symbol], variant2Writer, childrenDepth, dumpConfig, logErrors);
});

@@ -406,2 +406,2 @@ }

exports.default = NamespaceSerializer2;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ2YXJpYW50X3BiIiwicmVxdWlyZSIsInRpbWVzdGFtcF9wYiIsInV0aWwiLCJOYW1lc3BhY2VTZXJpYWxpemVyMiIsIk5hbWVzcGFjZVNlcmlhbGl6ZXJCYXNlIiwiY29uc3RydWN0b3IiLCJkdW1wcyIsIm5hbWVzcGFjZSIsImxvZ0Vycm9ycyIsInZhcmlhbnQyV3JpdGVyIiwiVmFyaWFudDJXcml0ZXIiLCJkdW1wIiwicG9zaXRpb24iLCJnZXRQb3NpdGlvbiIsImR1bXBVbnNhZmUiLCJlIiwibWVzc2FnZSIsInJlc2V0UG9zaXRpb24iLCJzYWZlRXJyb3IiLCJkdW1wQ29udGFpbmVyTmFtZXNwYWNlIiwid3JpdGVWYXJpYW50VHlwZSIsIlZhcmlhbnQiLCJUeXBlIiwiVkFSSUFOVF9OQU1FU1BBQ0UiLCJzZWxmIiwibmFtZXMiLCJrZXkiLCJPYmplY3QiLCJrZXlzIiwibmFtZXNwYWNlcyIsInB1c2giLCJnZXRTdHJpbmdJbmRleEluQ2FjaGUiLCJ3cml0ZUF0dHJpYnV0ZVZhbHVlcyIsIm9iamVjdCIsIndyaXRlQXR0cmlidXRlTmFtZXNJbkNhY2hlIiwiZHVtcEpTT2JqZWN0Iiwib2JqIiwiY3VycmVudERlcHRoIiwiZHVtcENvbmZpZyIsInVuc2FmZUR1bXBKU09iamVjdCIsInVuZGVmaW5lZCIsIlZBUklBTlRfVU5ERUZJTkVEIiwiVkFSSUFOVF9OT05FIiwiZHVtcE9yaWdpbmFsVHlwZSIsIlZBUklBTlRfTE9ORyIsIndyaXRlTG9uZ1ZhbHVlIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwiZHVtcERvdWJsZSIsImlzRmxvYXQiLCJTdHJpbmciLCJkdW1wU3RyaW5nIiwiRGF0ZSIsIlZBUklBTlRfVElNRSIsImRhdGUiLCJUaW1lc3RhbXAiLCJpc05hTiIsImdldFRpbWUiLCJmcm9tRGF0ZSIsIndyaXRlVGltZVZhbHVlIiwid3JpdGVyIiwic2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIiLCJBcnJheSIsImlzQXJyYXkiLCJCdWZmZXIiLCJkdW1wQXJyYXkiLCJTZXQiLCJkdW1wU2V0IiwiTWFwIiwiZHVtcE1hcCIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkVycm9yIiwiZHVtcEV4Y2VwdGlvbiIsIlZBUklBTlRfQ09ERV9PQkpFQ1QiLCJ3cml0ZUNvZGVWYWx1ZXMiLCJ3cml0ZVN0cmluZyIsIm5hbWUiLCJkdW1wVXNlckNsYXNzIiwiVkFSSUFOVF9TVFJJTkciLCJsZW5ndGgiLCJtYXhTdHJpbmciLCJ3cml0ZU9yaWdpbmFsU2l6ZSIsIndyaXRlQnl0ZXNJbmRleEluQ2FjaGUiLCJzdWJzdHJpbmciLCJ0eXBlIiwiX19wcm90b19fIiwid3JpdGVUeXBlSW5kZXhJbkNhY2hlIiwiZ2V0T2JqZWN0VHlwZSIsInN5bWJvbHMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvYmplY3RLZXlzIiwib2JqZWN0V2lkdGgiLCJjaGlsZHJlbkRlcHRoIiwibWF4V2lkdGgiLCJtYXhEZXB0aCIsIlZBUklBTlRfT0JKRUNUIiwicGFyc2VJbnQiLCJ0b1N0cmluZyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIlZBUklBTlRfRFlOQU1JQyIsImluZGV4Iiwic3ltYm9sIiwic3ltYm9sTmFtZSIsIlZBUklBTlRfRE9VQkxFIiwid3JpdGVEb3VibGVWYWx1ZSIsIm1heENvbGxlY3Rpb25EZXB0aCIsIlZBUklBTlRfTElTVCIsImNvdW50VG9Xcml0ZSIsIk1hdGgiLCJtaW4iLCJpIiwid3JpdGVDb2xsZWN0aW9uVmFsdWVzIiwic2l6ZSIsIml0ZW0iLCJWQVJJQU5UX01BUCIsIndyaXRlQ29sbGVjdGlvbktleXMiLCJza2lwU3RhY2t0cmFjZSIsInN0YWNrIiwiZHVtcExpc3ROYW1lc3BhY2UiLCJsaXN0IiwiZHVtcEluc3BlY3RvclRyYWNlYmFja05hbWVzcGFjZSIsInN0cmVhbUR1bXAiLCJzdHIiLCJleGNlcHRpb24iLCJWQVJJQU5UX0VSUk9SIiwibG9nZ2VyIiwibmV3UG9zaXRpb24iLCJsYXN0QmxvY2siLCJlbmNvZGVyXyIsImVuZCIsImJsb2Nrc18iLCJ0b3RhbExlbmd0aF8iLCJ0b3RhbExlbmd0aCIsImZvcm1hdCIsInBvcCIsIm5ld0Jsb2NrU2l6ZSIsImJ1ZmZlcl8iLCJzbGljZSIsImJvb2ttYXJrc18iLCJib29rbWFya3NDb3VudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm9jZXNzb3IvTmFtZXNwYWNlU2VyaWFsaXplcjIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmNvbnN0IHZhcmlhbnRfcGIgPSByZXF1aXJlKCcuLi9wcm90b2J1Zi92YXJpYW50X3BiJyk7XG5cbmNvbnN0IHRpbWVzdGFtcF9wYiA9IHJlcXVpcmUoJ2dvb2dsZS1wcm90b2J1Zi9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wX3BiJyk7XG5jb25zdCB1dGlsID0gcmVxdWlyZShcInV0aWxcIik7XG5pbXBvcnQge2xvZ2dlcn0gZnJvbSBcIi4uL2xvZ2dlclwiO1xuXG5pbXBvcnQgTmFtZXNwYWNlU2VyaWFsaXplckJhc2UgZnJvbSBcIi4vTmFtZXNwYWNlU2VyaWFsaXplckJhc2VcIjtcblxuaW1wb3J0IFZhcmlhbnQyV3JpdGVyIGZyb20gXCIuL1ZhcmlhbnQyV3JpdGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5hbWVzcGFjZVNlcmlhbGl6ZXIyIGV4dGVuZHMgTmFtZXNwYWNlU2VyaWFsaXplckJhc2V7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHRydWUpO1xuICAgIH1cblxuICAgIGR1bXBzKG5hbWVzcGFjZSwgbG9nRXJyb3JzID0gdHJ1ZSkge1xuICAgICAgICBsZXQgdmFyaWFudDJXcml0ZXIgPSBuZXcgVmFyaWFudDJXcml0ZXIoKTtcbiAgICAgICAgdGhpcy5kdW1wKG5hbWVzcGFjZSwgdmFyaWFudDJXcml0ZXIsIGxvZ0Vycm9ycyk7XG4gICAgICAgIHJldHVybiB2YXJpYW50MldyaXRlcjtcbiAgICB9XG5cbiAgICBkdW1wKG5hbWVzcGFjZSwgdmFyaWFudDJXcml0ZXIsIGxvZ0Vycm9ycyA9IHRydWUpIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB2YXJpYW50MldyaXRlci5nZXRQb3NpdGlvbigpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmR1bXBVbnNhZmUobmFtZXNwYWNlLCB2YXJpYW50MldyaXRlciwgbG9nRXJyb3JzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IFwiRmFpbGVkIHRvIHNlcmlhbGl6ZSBuYW1lc3BhY2VcIjtcblxuICAgICAgICAgICAgdGhpcy5yZXNldFBvc2l0aW9uKHZhcmlhbnQyV3JpdGVyLCBwb3NpdGlvbik7XG4gICAgICAgICAgICB0aGlzLnNhZmVFcnJvcih2YXJpYW50MldyaXRlciwgbWVzc2FnZSwgZSwgbG9nRXJyb3JzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGR1bXBDb250YWluZXJOYW1lc3BhY2UobmFtZXNwYWNlLCB2YXJpYW50MldyaXRlciwgbG9nRXJyb3JzKSB7XG4gICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlVmFyaWFudFR5cGUodmFyaWFudF9wYi5WYXJpYW50LlR5cGUuVkFSSUFOVF9OQU1FU1BBQ0UpO1xuXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBsZXQgbmFtZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMobmFtZXNwYWNlLm5hbWVzcGFjZXMpKSB7XG4gICAgICAgICAgICBuYW1lcy5wdXNoKHRoaXMuZ2V0U3RyaW5nSW5kZXhJbkNhY2hlKGtleSkpO1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVBdHRyaWJ1dGVWYWx1ZXMobmFtZXNwYWNlLm5hbWVzcGFjZXNba2V5XSwgKG9iamVjdCwgdmFyaWFudDJXcml0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICBzZWxmLmR1bXAob2JqZWN0LCB2YXJpYW50MldyaXRlciwgbG9nRXJyb3JzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVBdHRyaWJ1dGVOYW1lc0luQ2FjaGUobmFtZXMpO1xuICAgIH1cblxuICAgIGR1bXBKU09iamVjdChvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycykge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHZhcmlhbnQyV3JpdGVyLmdldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMudW5zYWZlRHVtcEpTT2JqZWN0KG9iaiwgdmFyaWFudDJXcml0ZXIsIGN1cnJlbnREZXB0aCwgZHVtcENvbmZpZywgbG9nRXJyb3JzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IFwiRmFpbGVkIHRvIHNlcmlhbGl6ZSBvYmplY3RcIjtcblxuICAgICAgICAgICAgdGhpcy5yZXNldFBvc2l0aW9uKHZhcmlhbnQyV3JpdGVyLCBwb3NpdGlvbik7XG4gICAgICAgICAgICB0aGlzLnNhZmVFcnJvcih2YXJpYW50MldyaXRlciwgbWVzc2FnZSwgZSwgbG9nRXJyb3JzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuc2FmZUR1bXBKU09iamVjdChvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycykge1xuICAgICAgICBpZiAodW5kZWZpbmVkID09PSBvYmopIHtcbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlVmFyaWFudFR5cGUodmFyaWFudF9wYi5WYXJpYW50LlR5cGUuVkFSSUFOVF9VTkRFRklORUQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG51bGwgPT09IG9iaikge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX05PTkUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kdW1wT3JpZ2luYWxUeXBlKG9iaiwgdmFyaWFudDJXcml0ZXIpO1xuXG4gICAgICAgIGlmIChvYmogPT09IHRydWUgfHwgb2JqID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xPTkcpO1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVMb25nVmFsdWUob2JqID8gMSA6IDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIob2JqKSkge1xuICAgICAgICAgICAgaWYgKG9iaiA+PSAweDdmZmZmZmZmZmZmZmZmZmYgfHwgb2JqIDwgLTB4N2ZmZmZmZmZmZmZmZmZmZikge1xuICAgICAgICAgICAgICAgIHRoaXMuZHVtcERvdWJsZShvYmosIHZhcmlhbnQyV3JpdGVyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xPTkcpO1xuICAgICAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlTG9uZ1ZhbHVlKG9iaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0Zsb2F0KG9iaikpIHtcbiAgICAgICAgICAgIHRoaXMuZHVtcERvdWJsZShvYmosIHZhcmlhbnQyV3JpdGVyKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyB8fCBvYmogaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuZHVtcFN0cmluZyhvYmosIHZhcmlhbnQyV3JpdGVyLCBkdW1wQ29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZVZhcmlhbnRUeXBlKHZhcmlhbnRfcGIuVmFyaWFudC5UeXBlLlZBUklBTlRfVElNRSk7XG5cbiAgICAgICAgICAgIGxldCBkYXRlID0gbmV3IHRpbWVzdGFtcF9wYi5UaW1lc3RhbXAoKTtcblxuICAgICAgICAgICAgaWYgKGlzTmFOKG9iai5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICAgICAgLy8gZGF0ZSBpcyBub3QgdmFsaWRcbiAgICAgICAgICAgICAgICBvYmogPSBuZXcgRGF0ZSgwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZS5mcm9tRGF0ZShvYmopO1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVUaW1lVmFsdWUoZGF0ZSwgKGRhdGUsIHdyaXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcF9wYi5UaW1lc3RhbXAuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIoZGF0ZSwgd3JpdGVyKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopIHx8IG9iaiBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgdGhpcy5kdW1wQXJyYXkob2JqLCB2YXJpYW50MldyaXRlciwgY3VycmVudERlcHRoLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICAgICAgdGhpcy5kdW1wU2V0KG9iaiwgdmFyaWFudDJXcml0ZXIsIGN1cnJlbnREZXB0aCwgZHVtcENvbmZpZywgbG9nRXJyb3JzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgIHRoaXMuZHVtcE1hcChvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZHVtcEFycmF5KG5ldyBVaW50OEFycmF5KG9iaiksIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuZHVtcEV4Y2VwdGlvbihvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0NPREVfT0JKRUNUKTtcblxuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVDb2RlVmFsdWVzKFtvYmpdLCAob2JqLCB3cml0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVTdHJpbmcoMSwgb2JqLm5hbWUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHVtcFVzZXJDbGFzcyhvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgfVxuXG4gICAgZHVtcFN0cmluZyhvYmosIHZhcmlhbnQyV3JpdGVyLCBkdW1wQ29uZmlnKSB7XG4gICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlVmFyaWFudFR5cGUodmFyaWFudF9wYi5WYXJpYW50LlR5cGUuVkFSSUFOVF9TVFJJTkcpO1xuXG4gICAgICAgIGlmIChvYmoubGVuZ3RoID4gZHVtcENvbmZpZy5tYXhTdHJpbmcpIHtcbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlT3JpZ2luYWxTaXplKG9iai5sZW5ndGgpO1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVCeXRlc0luZGV4SW5DYWNoZSh0aGlzLmdldFN0cmluZ0luZGV4SW5DYWNoZShvYmouc3Vic3RyaW5nKDAsIGR1bXBDb25maWcubWF4U3RyaW5nKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVCeXRlc0luZGV4SW5DYWNoZSh0aGlzLmdldFN0cmluZ0luZGV4SW5DYWNoZShvYmopKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGR1bXBPcmlnaW5hbFR5cGUob2JqLCB2YXJpYW50MldyaXRlcikge1xuICAgICAgICBsZXQgdHlwZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHR5cGUgPSBvYmouX19wcm90b19fLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlb2Ygb2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVUeXBlSW5kZXhJbkNhY2hlKHRoaXMuZ2V0U3RyaW5nSW5kZXhJbkNhY2hlKHR5cGUpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0T2JqZWN0VHlwZShvYmopIHtcbiAgICAgICAgbGV0IHR5cGU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHR5cGUgPSBvYmouX19wcm90b19fLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlb2Ygb2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuXG4gICAgZHVtcFVzZXJDbGFzcyhvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycykge1xuICAgICAgICBsZXQgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqKTtcbiAgICAgICAgbGV0IG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBsZXQgb2JqZWN0V2lkdGggPSBzeW1ib2xzLmxlbmd0aCArIG9iamVjdEtleXMubGVuZ3RoO1xuICAgICAgICBsZXQgY2hpbGRyZW5EZXB0aCA9IGN1cnJlbnREZXB0aCArICgob2JqZWN0V2lkdGggPj0gZHVtcENvbmZpZy5tYXhXaWR0aCkgPyAyIDogMSk7XG5cbiAgICAgICAgaWYgKChjaGlsZHJlbkRlcHRoID49IGR1bXBDb25maWcubWF4RGVwdGgpKSB7XG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZVZhcmlhbnRUeXBlKHZhcmlhbnRfcGIuVmFyaWFudC5UeXBlLlZBUklBTlRfT0JKRUNULCBvYmplY3RXaWR0aCA+IDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX09CSkVDVCk7XG5cbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGxldCBuYW1lcyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGtleSBvZiBvYmplY3RLZXlzKSB7XG4gICAgICAgICAgICBpZiAob2JqW2tleV0gPT09IG9iaikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgaXQncyBhbiBBcnJheSwgaWdub3JlIGl0J3MgaW5kZXggYXR0cmlidXRlc1xuXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopICYmIHBhcnNlSW50KGtleSkudG9TdHJpbmcoKSA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5hbWVzLnB1c2godGhpcy5nZXRTdHJpbmdJbmRleEluQ2FjaGUoa2V5KSk7XG5cbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlQXR0cmlidXRlVmFsdWVzKGtleSwgKG9iamVjdCwgdmFyaWFudDJXcml0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoJ2dldCcgaW4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0RZTkFNSUMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KG9ialtrZXldLCB2YXJpYW50MldyaXRlciwgY2hpbGRyZW5EZXB0aCwgZHVtcENvbmZpZywgbG9nRXJyb3JzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGluZGV4IGluIHN5bWJvbHMpIHtcbiAgICAgICAgICAgIGxldCBzeW1ib2wgPSBzeW1ib2xzW2luZGV4XTtcbiAgICAgICAgICAgIGxldCBzeW1ib2xOYW1lID0gc3ltYm9sLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIG5hbWVzLnB1c2godGhpcy5nZXRTdHJpbmdJbmRleEluQ2FjaGUoc3ltYm9sTmFtZSkpO1xuXG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZUF0dHJpYnV0ZVZhbHVlcyhzeW1ib2wsIChvYmplY3QsIHZhcmlhbnQyV3JpdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgc2VsZi5kdW1wSlNPYmplY3Qob2JqW3N5bWJvbF0sIHZhcmlhbnQyV3JpdGVyLCBjaGlsZHJlbkRlcHRoLCBsb2dFcnJvcnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZUF0dHJpYnV0ZU5hbWVzSW5DYWNoZShuYW1lcyk7XG4gICAgfVxuXG4gICAgZHVtcERvdWJsZShvYmosIHdyaXRlcikge1xuICAgICAgICB3cml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0RPVUJMRSk7XG4gICAgICAgIHdyaXRlci53cml0ZURvdWJsZVZhbHVlKG9iaik7XG4gICAgfVxuXG4gICAgZHVtcEFycmF5KG9iaiwgdmFyaWFudDJXcml0ZXIsIGN1cnJlbnREZXB0aCwgZHVtcENvbmZpZywgbG9nRXJyb3JzKSB7XG4gICAgICAgIGlmIChjdXJyZW50RGVwdGggPj0gZHVtcENvbmZpZy5tYXhDb2xsZWN0aW9uRGVwdGggJiYgb2JqLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlVmFyaWFudFR5cGUodmFyaWFudF9wYi5WYXJpYW50LlR5cGUuVkFSSUFOVF9MSVNULCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlVmFyaWFudFR5cGUodmFyaWFudF9wYi5WYXJpYW50LlR5cGUuVkFSSUFOVF9MSVNUKTtcblxuICAgICAgICBjb25zdCBjb3VudFRvV3JpdGUgPSBNYXRoLm1pbihvYmoubGVuZ3RoLCBkdW1wQ29uZmlnLm1heFdpZHRoKTtcbiAgICAgICAgaWYgKGNvdW50VG9Xcml0ZSAhPT0gb2JqLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVPcmlnaW5hbFNpemUob2JqLmxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50VG9Xcml0ZTsgKytpKSB7XG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZUNvbGxlY3Rpb25WYWx1ZXMoaSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KG9ialtpXSwgdmFyaWFudDJXcml0ZXIsIGN1cnJlbnREZXB0aCArIDEsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGR1bXBTZXQob2JqLCB2YXJpYW50MldyaXRlciwgY3VycmVudERlcHRoLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnREZXB0aCA+PSBkdW1wQ29uZmlnLm1heENvbGxlY3Rpb25EZXB0aCAmJiBvYmoubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xJU1QsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xJU1QpO1xuXG4gICAgICAgIGNvbnN0IGNvdW50VG9Xcml0ZSA9IE1hdGgubWluKG9iai5zaXplLCBkdW1wQ29uZmlnLm1heFdpZHRoKTtcbiAgICAgICAgaWYgKGNvdW50VG9Xcml0ZSAhPT0gb2JqLnNpemUpIHtcbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlT3JpZ2luYWxTaXplKG9iai5zaXplKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBvYmopIHtcbiAgICAgICAgICAgIGlmIChpID49IGNvdW50VG9Xcml0ZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZUNvbGxlY3Rpb25WYWx1ZXMoaSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KGl0ZW0sIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGggKyAxLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICsraTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGR1bXBNYXAob2JqLCB2YXJpYW50MldyaXRlciwgY3VycmVudERlcHRoLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnREZXB0aCA+PSBkdW1wQ29uZmlnLm1heENvbGxlY3Rpb25EZXB0aCAmJiBvYmoubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xJU1QsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX01BUCk7XG5cbiAgICAgICAgY29uc3QgY291bnRUb1dyaXRlID0gTWF0aC5taW4ob2JqLnNpemUsIGR1bXBDb25maWcubWF4V2lkdGgpO1xuICAgICAgICBpZiAoY291bnRUb1dyaXRlICE9PSBvYmouc2l6ZSkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVPcmlnaW5hbFNpemUob2JqLnNpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG9iaikge1xuICAgICAgICAgICAgaWYgKGkgPj0gY291bnRUb1dyaXRlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlQ29sbGVjdGlvbktleXMoaSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KGl0ZW1bMF0sIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGggKyAxLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlQ29sbGVjdGlvblZhbHVlcyhpLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2VsZi5kdW1wSlNPYmplY3QoaXRlbVsxXSwgdmFyaWFudDJXcml0ZXIsIGN1cnJlbnREZXB0aCArIDEsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgKytpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHVtcEV4Y2VwdGlvbihvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycykge1xuICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZVZhcmlhbnRUeXBlKHZhcmlhbnRfcGIuVmFyaWFudC5UeXBlLlZBUklBTlRfT0JKRUNUKTtcblxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgbGV0IG5hbWVzID0gW11cblxuICAgICAgICBuYW1lcy5wdXNoKHRoaXMuZ2V0U3RyaW5nSW5kZXhJbkNhY2hlKCdtZXNzYWdlJykpO1xuICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZUF0dHJpYnV0ZVZhbHVlcyhvYmoubWVzc2FnZSwgKG1lc3NhZ2UsIHZhcmlhbnQyV3JpdGVyKSA9PiB7XG4gICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KG1lc3NhZ2UsIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGggKyAxLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWR1bXBDb25maWcuc2tpcFN0YWNrdHJhY2UpIHtcbiAgICAgICAgICAgIG5hbWVzLnB1c2godGhpcy5nZXRTdHJpbmdJbmRleEluQ2FjaGUoJ3N0YWNrJykpO1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVBdHRyaWJ1dGVWYWx1ZXMob2JqLnN0YWNrLCAoc3RhY2ssIHdyaXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KHN0YWNrLCB3cml0ZXIsIGN1cnJlbnREZXB0aCArIDEsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlQXR0cmlidXRlTmFtZXNJbkNhY2hlKG5hbWVzKTtcbiAgICB9XG5cbiAgICBkdW1wTGlzdE5hbWVzcGFjZShuYW1lc3BhY2UsIHZhcmlhbnQyV3JpdGVyLCBsb2dFcnJvcnMpIHtcbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xJU1QpXG5cbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBuYW1lc3BhY2UubGlzdCkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVDb2xsZWN0aW9uVmFsdWVzKGl0ZW0sIChpdGVtLCB2YXJpYW50MldyaXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuZHVtcChpdGVtLCB2YXJpYW50MldyaXRlciwgbG9nRXJyb3JzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHVtcEluc3BlY3RvclRyYWNlYmFja05hbWVzcGFjZShuYW1lc3BhY2UsIHZhcmlhbnQyV3JpdGVyKSB7XG4gICAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgICAgbmFtZXNwYWNlLnN0cmVhbUR1bXAodmFyaWFudDJXcml0ZXIsIChzdHIpID0+IHNlbGYuZ2V0U3RyaW5nSW5kZXhJbkNhY2hlKHN0cikpO1xuICAgIH1cblxuICAgIHNhZmVFcnJvcih2YXJpYW50MldyaXRlciwgbWVzc2FnZSwgZXhjZXB0aW9uLCBsb2dFcnJvcnMpIHtcbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0VSUk9SKTtcblxuICAgICAgICBpZiAobG9nRXJyb3JzKSB7XG4gICAgICAgICAgICAvLyBUb2RvIC0gc2VuZCB3YXJuaW5nIHdoZW4gVXNlcldhcm5pbmdzIHdpbGwgYmUgc3RhdGljXG4gICAgICAgICAgICBsb2dnZXIuZXhjZXB0aW9uKG1lc3NhZ2UsIGV4Y2VwdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldFBvc2l0aW9uKHZhcmlhbnQyV3JpdGVyLCBuZXdQb3NpdGlvbikge1xuICAgICAgICAvLyBGaW5pc2ggdGhlIGJsb2NrIGluIHByb2dyZXNzXG4gICAgICAgIGxldCBsYXN0QmxvY2sgPSB2YXJpYW50MldyaXRlci5lbmNvZGVyXy5lbmQoKTtcbiAgICAgICAgdmFyaWFudDJXcml0ZXIuYmxvY2tzXy5wdXNoKGxhc3RCbG9jayk7XG4gICAgICAgIHZhcmlhbnQyV3JpdGVyLnRvdGFsTGVuZ3RoXyArPSBsYXN0QmxvY2subGVuZ3RoO1xuXG4gICAgICAgIC8vIENoZWNrIHBvc2l0aW9uIGlzIHdpdGhpbiBib3VuZHNcbiAgICAgICAgaWYgKG5ld1Bvc2l0aW9uLnRvdGFsTGVuZ3RoIDwgMCB8fCBuZXdQb3NpdGlvbi50b3RhbExlbmd0aCA+IHZhcmlhbnQyV3JpdGVyLnRvdGFsTGVuZ3RoXykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHV0aWwuZm9ybWF0KFwiQ2FuJ3QgcmVzZXQgdG8gYSBwb3NpdGlvbiBiZXlvbmQgdGhlIHdyaXRlIGJvdW5kYXJpZXMhLCBuZXdQb3NpdGlvbjogJWQsIHRvdGFsTGVuZ3RoOiAlZFwiLCBuZXdQb3NpdGlvbi50b3RhbExlbmd0aCwgdmFyaWFudDJXcml0ZXIudG90YWxMZW5ndGhfKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW1vdmUgYmxvY2tzIHVudGlsIHdlIGFyZSBiZWxvdyB0aGUgdGFyZ2V0XG4gICAgICAgIHdoaWxlICh2YXJpYW50MldyaXRlci50b3RhbExlbmd0aF8gPiBuZXdQb3NpdGlvbi50b3RhbExlbmd0aCkge1xuICAgICAgICAgICAgbGFzdEJsb2NrID0gdmFyaWFudDJXcml0ZXIuYmxvY2tzXy5wb3AoKTtcbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLnRvdGFsTGVuZ3RoXyAtPSBsYXN0QmxvY2subGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2xpY2UgdGhlIGxhc3QgYmxvY2sgZG93biB0byB0aGUgZGVzaXJlZCBzaXplIGFuZCBwdXQgaXQgYmFjayBpbnRvIGFjdGl2ZSBzdGF0ZVxuICAgICAgICBjb25zdCBuZXdCbG9ja1NpemUgPSBuZXdQb3NpdGlvbi50b3RhbExlbmd0aCAtIHZhcmlhbnQyV3JpdGVyLnRvdGFsTGVuZ3RoXztcbiAgICAgICAgdmFyaWFudDJXcml0ZXIuZW5jb2Rlcl8uYnVmZmVyXyA9IGxhc3RCbG9jay5zbGljZSgwLCBuZXdCbG9ja1NpemUpO1xuXG4gICAgICAgIC8vIFBvcCBhbGwgc3RhbGUgYm9va21hcmtzXG4gICAgICAgIC8vIE5PVEU6IFdlIHJlbW92ZSB0aGUgYm9va21hcmsgZm9yIHRoaXMgcG9zaXRpb24gYXMgd2VsbCwgd2hpY2ggbWF5IGJlIHRoZSB3cm9uZyB0aGluZyB0byBkbyBpbiBzb21lIGNhc2VzXG4gICAgICAgIHdoaWxlICh2YXJpYW50MldyaXRlci5ib29rbWFya3NfLmxlbmd0aCA+IG5ld1Bvc2l0aW9uLmJvb2ttYXJrc0NvdW50KSB7XG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci5ib29rbWFya3NfLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztBQU1BOztBQUVBOztBQUVBOzs7O0FBUkEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsd0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUMsWUFBWSxHQUFHRCxPQUFPLENBQUMsOENBQUQsQ0FBNUI7O0FBQ0EsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFPZSxNQUFNRyxvQkFBTixTQUFtQ0MsZ0NBQW5DLENBQTBEO0VBQ3JFQyxXQUFXLEdBQUc7SUFDVixNQUFNLElBQU47RUFDSDs7RUFFREMsS0FBSyxDQUFDQyxTQUFELEVBQVlDLFNBQVMsR0FBRyxJQUF4QixFQUE4QjtJQUMvQixJQUFJQyxjQUFjLEdBQUcsSUFBSUMsdUJBQUosRUFBckI7SUFDQSxLQUFLQyxJQUFMLENBQVVKLFNBQVYsRUFBcUJFLGNBQXJCLEVBQXFDRCxTQUFyQztJQUNBLE9BQU9DLGNBQVA7RUFDSDs7RUFFREUsSUFBSSxDQUFDSixTQUFELEVBQVlFLGNBQVosRUFBNEJELFNBQVMsR0FBRyxJQUF4QyxFQUE4QztJQUM5QyxNQUFNSSxRQUFRLEdBQUdILGNBQWMsQ0FBQ0ksV0FBZixFQUFqQjs7SUFFQSxJQUFJO01BQ0EsS0FBS0MsVUFBTCxDQUFnQlAsU0FBaEIsRUFBMkJFLGNBQTNCLEVBQTJDRCxTQUEzQztJQUNILENBRkQsQ0FFRSxPQUFPTyxDQUFQLEVBQVU7TUFDUixNQUFNQyxPQUFPLEdBQUcsK0JBQWhCO01BRUEsS0FBS0MsYUFBTCxDQUFtQlIsY0FBbkIsRUFBbUNHLFFBQW5DO01BQ0EsS0FBS00sU0FBTCxD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
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ2YXJpYW50X3BiIiwicmVxdWlyZSIsInRpbWVzdGFtcF9wYiIsInV0aWwiLCJOYW1lc3BhY2VTZXJpYWxpemVyMiIsIk5hbWVzcGFjZVNlcmlhbGl6ZXJCYXNlIiwiY29uc3RydWN0b3IiLCJkdW1wcyIsIm5hbWVzcGFjZSIsImxvZ0Vycm9ycyIsInZhcmlhbnQyV3JpdGVyIiwiVmFyaWFudDJXcml0ZXIiLCJkdW1wIiwicG9zaXRpb24iLCJnZXRQb3NpdGlvbiIsImR1bXBVbnNhZmUiLCJlIiwibWVzc2FnZSIsInJlc2V0UG9zaXRpb24iLCJzYWZlRXJyb3IiLCJkdW1wQ29udGFpbmVyTmFtZXNwYWNlIiwid3JpdGVWYXJpYW50VHlwZSIsIlZhcmlhbnQiLCJUeXBlIiwiVkFSSUFOVF9OQU1FU1BBQ0UiLCJzZWxmIiwibmFtZXMiLCJrZXkiLCJPYmplY3QiLCJrZXlzIiwibmFtZXNwYWNlcyIsInB1c2giLCJnZXRTdHJpbmdJbmRleEluQ2FjaGUiLCJ3cml0ZUF0dHJpYnV0ZVZhbHVlcyIsIm9iamVjdCIsIndyaXRlQXR0cmlidXRlTmFtZXNJbkNhY2hlIiwiZHVtcEpTT2JqZWN0Iiwib2JqIiwiY3VycmVudERlcHRoIiwiZHVtcENvbmZpZyIsInVuc2FmZUR1bXBKU09iamVjdCIsInVuZGVmaW5lZCIsIlZBUklBTlRfVU5ERUZJTkVEIiwiVkFSSUFOVF9OT05FIiwiZHVtcE9yaWdpbmFsVHlwZSIsIlZBUklBTlRfTE9ORyIsIndyaXRlTG9uZ1ZhbHVlIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwiZHVtcERvdWJsZSIsImlzRmxvYXQiLCJTdHJpbmciLCJkdW1wU3RyaW5nIiwiRGF0ZSIsIlZBUklBTlRfVElNRSIsImRhdGUiLCJUaW1lc3RhbXAiLCJpc05hTiIsImdldFRpbWUiLCJmcm9tRGF0ZSIsIndyaXRlVGltZVZhbHVlIiwid3JpdGVyIiwic2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIiLCJBcnJheSIsImlzQXJyYXkiLCJCdWZmZXIiLCJkdW1wQXJyYXkiLCJTZXQiLCJkdW1wU2V0IiwiTWFwIiwiZHVtcE1hcCIsIkFycmF5QnVmZmVyIiwiVWludDhBcnJheSIsIkVycm9yIiwiZHVtcEV4Y2VwdGlvbiIsIlZBUklBTlRfQ09ERV9PQkpFQ1QiLCJ3cml0ZUNvZGVWYWx1ZXMiLCJ3cml0ZVN0cmluZyIsIm5hbWUiLCJkdW1wVXNlckNsYXNzIiwiVkFSSUFOVF9TVFJJTkciLCJsZW5ndGgiLCJtYXhTdHJpbmciLCJ3cml0ZU9yaWdpbmFsU2l6ZSIsIndyaXRlQnl0ZXNJbmRleEluQ2FjaGUiLCJzdWJzdHJpbmciLCJ0eXBlIiwiX19wcm90b19fIiwid3JpdGVUeXBlSW5kZXhJbkNhY2hlIiwiZ2V0T2JqZWN0VHlwZSIsInN5bWJvbHMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJvYmplY3RLZXlzIiwib2JqZWN0V2lkdGgiLCJjaGlsZHJlbkRlcHRoIiwibWF4V2lkdGgiLCJtYXhEZXB0aCIsIlZBUklBTlRfT0JKRUNUIiwicGFyc2VJbnQiLCJ0b1N0cmluZyIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIlZBUklBTlRfRFlOQU1JQyIsImluZGV4Iiwic3ltYm9sIiwic3ltYm9sTmFtZSIsIlZBUklBTlRfRE9VQkxFIiwid3JpdGVEb3VibGVWYWx1ZSIsIm1heENvbGxlY3Rpb25EZXB0aCIsIlZBUklBTlRfTElTVCIsImNvdW50VG9Xcml0ZSIsIk1hdGgiLCJtaW4iLCJpIiwid3JpdGVDb2xsZWN0aW9uVmFsdWVzIiwic2l6ZSIsIml0ZW0iLCJWQVJJQU5UX01BUCIsIndyaXRlQ29sbGVjdGlvbktleXMiLCJza2lwU3RhY2t0cmFjZSIsInN0YWNrIiwiZHVtcExpc3ROYW1lc3BhY2UiLCJsaXN0IiwiZHVtcEluc3BlY3RvclRyYWNlYmFja05hbWVzcGFjZSIsInN0cmVhbUR1bXAiLCJzdHIiLCJleGNlcHRpb24iLCJWQVJJQU5UX0VSUk9SIiwibG9nZ2VyIiwibmV3UG9zaXRpb24iLCJsYXN0QmxvY2siLCJlbmNvZGVyXyIsImVuZCIsImJsb2Nrc18iLCJ0b3RhbExlbmd0aF8iLCJ0b3RhbExlbmd0aCIsImZvcm1hdCIsInBvcCIsIm5ld0Jsb2NrU2l6ZSIsImJ1ZmZlcl8iLCJzbGljZSIsImJvb2ttYXJrc18iLCJib29rbWFya3NDb3VudCJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm9jZXNzb3IvTmFtZXNwYWNlU2VyaWFsaXplcjIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmNvbnN0IHZhcmlhbnRfcGIgPSByZXF1aXJlKCcuLi9wcm90b2J1Zi92YXJpYW50X3BiJyk7XG5cbmNvbnN0IHRpbWVzdGFtcF9wYiA9IHJlcXVpcmUoJ2dvb2dsZS1wcm90b2J1Zi9nb29nbGUvcHJvdG9idWYvdGltZXN0YW1wX3BiJyk7XG5jb25zdCB1dGlsID0gcmVxdWlyZShcInV0aWxcIik7XG5pbXBvcnQge2xvZ2dlcn0gZnJvbSBcIi4uL2xvZ2dlclwiO1xuXG5pbXBvcnQgTmFtZXNwYWNlU2VyaWFsaXplckJhc2UgZnJvbSBcIi4vTmFtZXNwYWNlU2VyaWFsaXplckJhc2VcIjtcblxuaW1wb3J0IFZhcmlhbnQyV3JpdGVyIGZyb20gXCIuL1ZhcmlhbnQyV3JpdGVyXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE5hbWVzcGFjZVNlcmlhbGl6ZXIyIGV4dGVuZHMgTmFtZXNwYWNlU2VyaWFsaXplckJhc2V7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHN1cGVyKHRydWUpO1xuICAgIH1cblxuICAgIGR1bXBzKG5hbWVzcGFjZSwgbG9nRXJyb3JzID0gdHJ1ZSkge1xuICAgICAgICBsZXQgdmFyaWFudDJXcml0ZXIgPSBuZXcgVmFyaWFudDJXcml0ZXIoKTtcbiAgICAgICAgdGhpcy5kdW1wKG5hbWVzcGFjZSwgdmFyaWFudDJXcml0ZXIsIGxvZ0Vycm9ycyk7XG4gICAgICAgIHJldHVybiB2YXJpYW50MldyaXRlcjtcbiAgICB9XG5cbiAgICBkdW1wKG5hbWVzcGFjZSwgdmFyaWFudDJXcml0ZXIsIGxvZ0Vycm9ycyA9IHRydWUpIHtcbiAgICAgICAgY29uc3QgcG9zaXRpb24gPSB2YXJpYW50MldyaXRlci5nZXRQb3NpdGlvbigpO1xuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICB0aGlzLmR1bXBVbnNhZmUobmFtZXNwYWNlLCB2YXJpYW50MldyaXRlciwgbG9nRXJyb3JzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IFwiRmFpbGVkIHRvIHNlcmlhbGl6ZSBuYW1lc3BhY2VcIjtcblxuICAgICAgICAgICAgdGhpcy5yZXNldFBvc2l0aW9uKHZhcmlhbnQyV3JpdGVyLCBwb3NpdGlvbik7XG4gICAgICAgICAgICB0aGlzLnNhZmVFcnJvcih2YXJpYW50MldyaXRlciwgbWVzc2FnZSwgZSwgbG9nRXJyb3JzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGR1bXBDb250YWluZXJOYW1lc3BhY2UobmFtZXNwYWNlLCB2YXJpYW50MldyaXRlciwgbG9nRXJyb3JzKSB7XG4gICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlVmFyaWFudFR5cGUodmFyaWFudF9wYi5WYXJpYW50LlR5cGUuVkFSSUFOVF9OQU1FU1BBQ0UpO1xuXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuICAgICAgICBsZXQgbmFtZXMgPSBbXTtcblxuICAgICAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMobmFtZXNwYWNlLm5hbWVzcGFjZXMpKSB7XG4gICAgICAgICAgICBuYW1lcy5wdXNoKHRoaXMuZ2V0U3RyaW5nSW5kZXhJbkNhY2hlKGtleSkpO1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVBdHRyaWJ1dGVWYWx1ZXMobmFtZXNwYWNlLm5hbWVzcGFjZXNba2V5XSwgKG9iamVjdCwgdmFyaWFudDJXcml0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICBzZWxmLmR1bXAob2JqZWN0LCB2YXJpYW50MldyaXRlciwgbG9nRXJyb3JzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVBdHRyaWJ1dGVOYW1lc0luQ2FjaGUobmFtZXMpO1xuICAgIH1cblxuICAgIGR1bXBKU09iamVjdChvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycykge1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IHZhcmlhbnQyV3JpdGVyLmdldFBvc2l0aW9uKCk7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHRoaXMudW5zYWZlRHVtcEpTT2JqZWN0KG9iaiwgdmFyaWFudDJXcml0ZXIsIGN1cnJlbnREZXB0aCwgZHVtcENvbmZpZywgbG9nRXJyb3JzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgICAgY29uc3QgbWVzc2FnZSA9IFwiRmFpbGVkIHRvIHNlcmlhbGl6ZSBvYmplY3RcIjtcblxuICAgICAgICAgICAgdGhpcy5yZXNldFBvc2l0aW9uKHZhcmlhbnQyV3JpdGVyLCBwb3NpdGlvbik7XG4gICAgICAgICAgICB0aGlzLnNhZmVFcnJvcih2YXJpYW50MldyaXRlciwgbWVzc2FnZSwgZSwgbG9nRXJyb3JzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHVuc2FmZUR1bXBKU09iamVjdChvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycykge1xuICAgICAgICBpZiAodW5kZWZpbmVkID09PSBvYmopIHtcbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlVmFyaWFudFR5cGUodmFyaWFudF9wYi5WYXJpYW50LlR5cGUuVkFSSUFOVF9VTkRFRklORUQpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG51bGwgPT09IG9iaikge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX05PTkUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5kdW1wT3JpZ2luYWxUeXBlKG9iaiwgdmFyaWFudDJXcml0ZXIpO1xuXG4gICAgICAgIGlmIChvYmogPT09IHRydWUgfHwgb2JqID09PSBmYWxzZSkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xPTkcpO1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVMb25nVmFsdWUob2JqID8gMSA6IDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKE51bWJlci5pc0ludGVnZXIob2JqKSkge1xuICAgICAgICAgICAgaWYgKG9iaiA+PSAweDdmZmZmZmZmZmZmZmZmZmYgfHwgb2JqIDwgLTB4N2ZmZmZmZmZmZmZmZmZmZikge1xuICAgICAgICAgICAgICAgIHRoaXMuZHVtcERvdWJsZShvYmosIHZhcmlhbnQyV3JpdGVyKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xPTkcpO1xuICAgICAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlTG9uZ1ZhbHVlKG9iaik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5pc0Zsb2F0KG9iaikpIHtcbiAgICAgICAgICAgIHRoaXMuZHVtcERvdWJsZShvYmosIHZhcmlhbnQyV3JpdGVyKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJyB8fCBvYmogaW5zdGFuY2VvZiBTdHJpbmcpIHtcbiAgICAgICAgICAgIHRoaXMuZHVtcFN0cmluZyhvYmosIHZhcmlhbnQyV3JpdGVyLCBkdW1wQ29uZmlnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBEYXRlKSB7XG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZVZhcmlhbnRUeXBlKHZhcmlhbnRfcGIuVmFyaWFudC5UeXBlLlZBUklBTlRfVElNRSk7XG5cbiAgICAgICAgICAgIGxldCBkYXRlID0gbmV3IHRpbWVzdGFtcF9wYi5UaW1lc3RhbXAoKTtcblxuICAgICAgICAgICAgaWYgKGlzTmFOKG9iai5nZXRUaW1lKCkpKSB7XG4gICAgICAgICAgICAgICAgLy8gZGF0ZSBpcyBub3QgdmFsaWRcbiAgICAgICAgICAgICAgICBvYmogPSBuZXcgRGF0ZSgwKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgZGF0ZS5mcm9tRGF0ZShvYmopO1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVUaW1lVmFsdWUoZGF0ZSwgKGRhdGUsIHdyaXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHRpbWVzdGFtcF9wYi5UaW1lc3RhbXAuc2VyaWFsaXplQmluYXJ5VG9Xcml0ZXIoZGF0ZSwgd3JpdGVyKTtcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopIHx8IG9iaiBpbnN0YW5jZW9mIEJ1ZmZlcikge1xuICAgICAgICAgICAgdGhpcy5kdW1wQXJyYXkob2JqLCB2YXJpYW50MldyaXRlciwgY3VycmVudERlcHRoLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9iaiBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgICAgICAgdGhpcy5kdW1wU2V0KG9iaiwgdmFyaWFudDJXcml0ZXIsIGN1cnJlbnREZXB0aCwgZHVtcENvbmZpZywgbG9nRXJyb3JzKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChvYmogaW5zdGFuY2VvZiBNYXApIHtcbiAgICAgICAgICAgIHRoaXMuZHVtcE1hcChvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICAgICAgICAgIHRoaXMuZHVtcEFycmF5KG5ldyBVaW50OEFycmF5KG9iaiksIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob2JqIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgICAgIHRoaXMuZHVtcEV4Y2VwdGlvbihvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodHlwZW9mIG9iaiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0NPREVfT0JKRUNUKTtcblxuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVDb2RlVmFsdWVzKFtvYmpdLCAob2JqLCB3cml0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICB3cml0ZXIud3JpdGVTdHJpbmcoMSwgb2JqLm5hbWUpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZHVtcFVzZXJDbGFzcyhvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgfVxuXG4gICAgZHVtcFN0cmluZyhvYmosIHZhcmlhbnQyV3JpdGVyLCBkdW1wQ29uZmlnKSB7XG4gICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlVmFyaWFudFR5cGUodmFyaWFudF9wYi5WYXJpYW50LlR5cGUuVkFSSUFOVF9TVFJJTkcpO1xuXG4gICAgICAgIGlmIChvYmoubGVuZ3RoID4gZHVtcENvbmZpZy5tYXhTdHJpbmcpIHtcbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlT3JpZ2luYWxTaXplKG9iai5sZW5ndGgpO1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVCeXRlc0luZGV4SW5DYWNoZSh0aGlzLmdldFN0cmluZ0luZGV4SW5DYWNoZShvYmouc3Vic3RyaW5nKDAsIGR1bXBDb25maWcubWF4U3RyaW5nKSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVCeXRlc0luZGV4SW5DYWNoZSh0aGlzLmdldFN0cmluZ0luZGV4SW5DYWNoZShvYmopKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGR1bXBPcmlnaW5hbFR5cGUob2JqLCB2YXJpYW50MldyaXRlcikge1xuICAgICAgICBsZXQgdHlwZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHR5cGUgPSBvYmouX19wcm90b19fLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlb2Ygb2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVUeXBlSW5kZXhJbkNhY2hlKHRoaXMuZ2V0U3RyaW5nSW5kZXhJbkNhY2hlKHR5cGUpKTtcbiAgICB9XG5cbiAgICBzdGF0aWMgZ2V0T2JqZWN0VHlwZShvYmopIHtcbiAgICAgICAgbGV0IHR5cGU7XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHR5cGUgPSBvYmouX19wcm90b19fLmNvbnN0cnVjdG9yLm5hbWU7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICAgIHR5cGUgPSB0eXBlb2Ygb2JqO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgfVxuXG4gICAgZHVtcFVzZXJDbGFzcyhvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycykge1xuICAgICAgICBsZXQgc3ltYm9scyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMob2JqKTtcbiAgICAgICAgbGV0IG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyhvYmopO1xuICAgICAgICBsZXQgb2JqZWN0V2lkdGggPSBzeW1ib2xzLmxlbmd0aCArIG9iamVjdEtleXMubGVuZ3RoO1xuICAgICAgICBsZXQgY2hpbGRyZW5EZXB0aCA9IGN1cnJlbnREZXB0aCArICgob2JqZWN0V2lkdGggPj0gZHVtcENvbmZpZy5tYXhXaWR0aCkgPyAyIDogMSk7XG5cbiAgICAgICAgaWYgKChjaGlsZHJlbkRlcHRoID49IGR1bXBDb25maWcubWF4RGVwdGgpKSB7XG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZVZhcmlhbnRUeXBlKHZhcmlhbnRfcGIuVmFyaWFudC5UeXBlLlZBUklBTlRfT0JKRUNULCBvYmplY3RXaWR0aCA+IDApO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX09CSkVDVCk7XG5cbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG4gICAgICAgIGxldCBuYW1lcyA9IFtdO1xuXG4gICAgICAgIGZvciAobGV0IGtleSBvZiBvYmplY3RLZXlzKSB7XG4gICAgICAgICAgICBpZiAob2JqW2tleV0gPT09IG9iaikge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gSWYgaXQncyBhbiBBcnJheSwgaWdub3JlIGl0J3MgaW5kZXggYXR0cmlidXRlc1xuXG4gICAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvYmopICYmIHBhcnNlSW50KGtleSkudG9TdHJpbmcoKSA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIG5hbWVzLnB1c2godGhpcy5nZXRTdHJpbmdJbmRleEluQ2FjaGUoa2V5KSk7XG5cbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlQXR0cmlidXRlVmFsdWVzKGtleSwgKG9iamVjdCwgdmFyaWFudDJXcml0ZXIpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoJ2dldCcgaW4gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihvYmosIGtleSkpIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0RZTkFNSUMpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KG9ialtrZXldLCB2YXJpYW50MldyaXRlciwgY2hpbGRyZW5EZXB0aCwgZHVtcENvbmZpZywgbG9nRXJyb3JzKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAobGV0IGluZGV4IGluIHN5bWJvbHMpIHtcbiAgICAgICAgICAgIGxldCBzeW1ib2wgPSBzeW1ib2xzW2luZGV4XTtcbiAgICAgICAgICAgIGxldCBzeW1ib2xOYW1lID0gc3ltYm9sLnRvU3RyaW5nKCk7XG5cbiAgICAgICAgICAgIG5hbWVzLnB1c2godGhpcy5nZXRTdHJpbmdJbmRleEluQ2FjaGUoc3ltYm9sTmFtZSkpO1xuXG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZUF0dHJpYnV0ZVZhbHVlcyhzeW1ib2wsIChvYmplY3QsIHZhcmlhbnQyV3JpdGVyKSA9PiB7XG4gICAgICAgICAgICAgICAgc2VsZi5kdW1wSlNPYmplY3Qob2JqW3N5bWJvbF0sIHZhcmlhbnQyV3JpdGVyLCBjaGlsZHJlbkRlcHRoLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZUF0dHJpYnV0ZU5hbWVzSW5DYWNoZShuYW1lcyk7XG4gICAgfVxuXG4gICAgZHVtcERvdWJsZShvYmosIHdyaXRlcikge1xuICAgICAgICB3cml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0RPVUJMRSk7XG4gICAgICAgIHdyaXRlci53cml0ZURvdWJsZVZhbHVlKG9iaik7XG4gICAgfVxuXG4gICAgZHVtcEFycmF5KG9iaiwgdmFyaWFudDJXcml0ZXIsIGN1cnJlbnREZXB0aCwgZHVtcENvbmZpZywgbG9nRXJyb3JzKSB7XG4gICAgICAgIGlmIChjdXJyZW50RGVwdGggPj0gZHVtcENvbmZpZy5tYXhDb2xsZWN0aW9uRGVwdGggJiYgb2JqLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlVmFyaWFudFR5cGUodmFyaWFudF9wYi5WYXJpYW50LlR5cGUuVkFSSUFOVF9MSVNULCB0cnVlKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlVmFyaWFudFR5cGUodmFyaWFudF9wYi5WYXJpYW50LlR5cGUuVkFSSUFOVF9MSVNUKTtcblxuICAgICAgICBjb25zdCBjb3VudFRvV3JpdGUgPSBNYXRoLm1pbihvYmoubGVuZ3RoLCBkdW1wQ29uZmlnLm1heFdpZHRoKTtcbiAgICAgICAgaWYgKGNvdW50VG9Xcml0ZSAhPT0gb2JqLmxlbmd0aCkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVPcmlnaW5hbFNpemUob2JqLmxlbmd0aCk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcblxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNvdW50VG9Xcml0ZTsgKytpKSB7XG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZUNvbGxlY3Rpb25WYWx1ZXMoaSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KG9ialtpXSwgdmFyaWFudDJXcml0ZXIsIGN1cnJlbnREZXB0aCArIDEsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGR1bXBTZXQob2JqLCB2YXJpYW50MldyaXRlciwgY3VycmVudERlcHRoLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnREZXB0aCA+PSBkdW1wQ29uZmlnLm1heENvbGxlY3Rpb25EZXB0aCAmJiBvYmoubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xJU1QsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xJU1QpO1xuXG4gICAgICAgIGNvbnN0IGNvdW50VG9Xcml0ZSA9IE1hdGgubWluKG9iai5zaXplLCBkdW1wQ29uZmlnLm1heFdpZHRoKTtcbiAgICAgICAgaWYgKGNvdW50VG9Xcml0ZSAhPT0gb2JqLnNpemUpIHtcbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlT3JpZ2luYWxTaXplKG9iai5zaXplKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNlbGYgPSB0aGlzO1xuXG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBvYmopIHtcbiAgICAgICAgICAgIGlmIChpID49IGNvdW50VG9Xcml0ZSkge1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZUNvbGxlY3Rpb25WYWx1ZXMoaSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KGl0ZW0sIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGggKyAxLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICsraTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGR1bXBNYXAob2JqLCB2YXJpYW50MldyaXRlciwgY3VycmVudERlcHRoLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpIHtcbiAgICAgICAgaWYgKGN1cnJlbnREZXB0aCA+PSBkdW1wQ29uZmlnLm1heENvbGxlY3Rpb25EZXB0aCAmJiBvYmoubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xJU1QsIHRydWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX01BUCk7XG5cbiAgICAgICAgY29uc3QgY291bnRUb1dyaXRlID0gTWF0aC5taW4ob2JqLnNpemUsIGR1bXBDb25maWcubWF4V2lkdGgpO1xuICAgICAgICBpZiAoY291bnRUb1dyaXRlICE9PSBvYmouc2l6ZSkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVPcmlnaW5hbFNpemUob2JqLnNpemUpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKGxldCBpdGVtIG9mIG9iaikge1xuICAgICAgICAgICAgaWYgKGkgPj0gY291bnRUb1dyaXRlKSB7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlQ29sbGVjdGlvbktleXMoaSwgKCkgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KGl0ZW1bMF0sIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGggKyAxLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpO1xuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlQ29sbGVjdGlvblZhbHVlcyhpLCAoKSA9PiB7XG4gICAgICAgICAgICAgICAgc2VsZi5kdW1wSlNPYmplY3QoaXRlbVsxXSwgdmFyaWFudDJXcml0ZXIsIGN1cnJlbnREZXB0aCArIDEsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgKytpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHVtcEV4Y2VwdGlvbihvYmosIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGgsIGR1bXBDb25maWcsIGxvZ0Vycm9ycykge1xuICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZVZhcmlhbnRUeXBlKHZhcmlhbnRfcGIuVmFyaWFudC5UeXBlLlZBUklBTlRfT0JKRUNUKTtcblxuICAgICAgICBjb25zdCBzZWxmID0gdGhpcztcbiAgICAgICAgbGV0IG5hbWVzID0gW11cblxuICAgICAgICBuYW1lcy5wdXNoKHRoaXMuZ2V0U3RyaW5nSW5kZXhJbkNhY2hlKCdtZXNzYWdlJykpO1xuICAgICAgICB2YXJpYW50MldyaXRlci53cml0ZUF0dHJpYnV0ZVZhbHVlcyhvYmoubWVzc2FnZSwgKG1lc3NhZ2UsIHZhcmlhbnQyV3JpdGVyKSA9PiB7XG4gICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KG1lc3NhZ2UsIHZhcmlhbnQyV3JpdGVyLCBjdXJyZW50RGVwdGggKyAxLCBkdW1wQ29uZmlnLCBsb2dFcnJvcnMpO1xuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIWR1bXBDb25maWcuc2tpcFN0YWNrdHJhY2UpIHtcbiAgICAgICAgICAgIG5hbWVzLnB1c2godGhpcy5nZXRTdHJpbmdJbmRleEluQ2FjaGUoJ3N0YWNrJykpO1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVBdHRyaWJ1dGVWYWx1ZXMob2JqLnN0YWNrLCAoc3RhY2ssIHdyaXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuZHVtcEpTT2JqZWN0KHN0YWNrLCB3cml0ZXIsIGN1cnJlbnREZXB0aCArIDEsIGR1bXBDb25maWcsIGxvZ0Vycm9ycyk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhcmlhbnQyV3JpdGVyLndyaXRlQXR0cmlidXRlTmFtZXNJbkNhY2hlKG5hbWVzKTtcbiAgICB9XG5cbiAgICBkdW1wTGlzdE5hbWVzcGFjZShuYW1lc3BhY2UsIHZhcmlhbnQyV3JpdGVyLCBsb2dFcnJvcnMpIHtcbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0xJU1QpXG5cbiAgICAgICAgY29uc3Qgc2VsZiA9IHRoaXM7XG5cbiAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBuYW1lc3BhY2UubGlzdCkge1xuICAgICAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVDb2xsZWN0aW9uVmFsdWVzKGl0ZW0sIChpdGVtLCB2YXJpYW50MldyaXRlcikgPT4ge1xuICAgICAgICAgICAgICAgIHNlbGYuZHVtcChpdGVtLCB2YXJpYW50MldyaXRlciwgbG9nRXJyb3JzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgZHVtcEluc3BlY3RvclRyYWNlYmFja05hbWVzcGFjZShuYW1lc3BhY2UsIHZhcmlhbnQyV3JpdGVyKSB7XG4gICAgICAgIGxldCBzZWxmID0gdGhpcztcbiAgICAgICAgbmFtZXNwYWNlLnN0cmVhbUR1bXAodmFyaWFudDJXcml0ZXIsIChzdHIpID0+IHNlbGYuZ2V0U3RyaW5nSW5kZXhJbkNhY2hlKHN0cikpO1xuICAgIH1cblxuICAgIHNhZmVFcnJvcih2YXJpYW50MldyaXRlciwgbWVzc2FnZSwgZXhjZXB0aW9uLCBsb2dFcnJvcnMpIHtcbiAgICAgICAgdmFyaWFudDJXcml0ZXIud3JpdGVWYXJpYW50VHlwZSh2YXJpYW50X3BiLlZhcmlhbnQuVHlwZS5WQVJJQU5UX0VSUk9SKTtcblxuICAgICAgICBpZiAobG9nRXJyb3JzKSB7XG4gICAgICAgICAgICAvLyBUb2RvIC0gc2VuZCB3YXJuaW5nIHdoZW4gVXNlcldhcm5pbmdzIHdpbGwgYmUgc3RhdGljXG4gICAgICAgICAgICBsb2dnZXIuZXhjZXB0aW9uKG1lc3NhZ2UsIGV4Y2VwdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXNldFBvc2l0aW9uKHZhcmlhbnQyV3JpdGVyLCBuZXdQb3NpdGlvbikge1xuICAgICAgICAvLyBGaW5pc2ggdGhlIGJsb2NrIGluIHByb2dyZXNzXG4gICAgICAgIGxldCBsYXN0QmxvY2sgPSB2YXJpYW50MldyaXRlci5lbmNvZGVyXy5lbmQoKTtcbiAgICAgICAgdmFyaWFudDJXcml0ZXIuYmxvY2tzXy5wdXNoKGxhc3RCbG9jayk7XG4gICAgICAgIHZhcmlhbnQyV3JpdGVyLnRvdGFsTGVuZ3RoXyArPSBsYXN0QmxvY2subGVuZ3RoO1xuXG4gICAgICAgIC8vIENoZWNrIHBvc2l0aW9uIGlzIHdpdGhpbiBib3VuZHNcbiAgICAgICAgaWYgKG5ld1Bvc2l0aW9uLnRvdGFsTGVuZ3RoIDwgMCB8fCBuZXdQb3NpdGlvbi50b3RhbExlbmd0aCA+IHZhcmlhbnQyV3JpdGVyLnRvdGFsTGVuZ3RoXykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHV0aWwuZm9ybWF0KFwiQ2FuJ3QgcmVzZXQgdG8gYSBwb3NpdGlvbiBiZXlvbmQgdGhlIHdyaXRlIGJvdW5kYXJpZXMhLCBuZXdQb3NpdGlvbjogJWQsIHRvdGFsTGVuZ3RoOiAlZFwiLCBuZXdQb3NpdGlvbi50b3RhbExlbmd0aCwgdmFyaWFudDJXcml0ZXIudG90YWxMZW5ndGhfKSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBSZW1vdmUgYmxvY2tzIHVudGlsIHdlIGFyZSBiZWxvdyB0aGUgdGFyZ2V0XG4gICAgICAgIHdoaWxlICh2YXJpYW50MldyaXRlci50b3RhbExlbmd0aF8gPiBuZXdQb3NpdGlvbi50b3RhbExlbmd0aCkge1xuICAgICAgICAgICAgbGFzdEJsb2NrID0gdmFyaWFudDJXcml0ZXIuYmxvY2tzXy5wb3AoKTtcbiAgICAgICAgICAgIHZhcmlhbnQyV3JpdGVyLnRvdGFsTGVuZ3RoXyAtPSBsYXN0QmxvY2subGVuZ3RoO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gU2xpY2UgdGhlIGxhc3QgYmxvY2sgZG93biB0byB0aGUgZGVzaXJlZCBzaXplIGFuZCBwdXQgaXQgYmFjayBpbnRvIGFjdGl2ZSBzdGF0ZVxuICAgICAgICBjb25zdCBuZXdCbG9ja1NpemUgPSBuZXdQb3NpdGlvbi50b3RhbExlbmd0aCAtIHZhcmlhbnQyV3JpdGVyLnRvdGFsTGVuZ3RoXztcbiAgICAgICAgdmFyaWFudDJXcml0ZXIuZW5jb2Rlcl8uYnVmZmVyXyA9IGxhc3RCbG9jay5zbGljZSgwLCBuZXdCbG9ja1NpemUpO1xuXG4gICAgICAgIC8vIFBvcCBhbGwgc3RhbGUgYm9va21hcmtzXG4gICAgICAgIC8vIE5PVEU6IFdlIHJlbW92ZSB0aGUgYm9va21hcmsgZm9yIHRoaXMgcG9zaXRpb24gYXMgd2VsbCwgd2hpY2ggbWF5IGJlIHRoZSB3cm9uZyB0aGluZyB0byBkbyBpbiBzb21lIGNhc2VzXG4gICAgICAgIHdoaWxlICh2YXJpYW50MldyaXRlci5ib29rbWFya3NfLmxlbmd0aCA+IG5ld1Bvc2l0aW9uLmJvb2ttYXJrc0NvdW50KSB7XG4gICAgICAgICAgICB2YXJpYW50MldyaXRlci5ib29rbWFya3NfLnBvcCgpO1xuICAgICAgICB9XG4gICAgfVxufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7OztBQU1BOztBQUVBOztBQUVBOzs7O0FBUkEsTUFBTUEsVUFBVSxHQUFHQyxPQUFPLENBQUMsd0JBQUQsQ0FBMUI7O0FBRUEsTUFBTUMsWUFBWSxHQUFHRCxPQUFPLENBQUMsOENBQUQsQ0FBNUI7O0FBQ0EsTUFBTUUsSUFBSSxHQUFHRixPQUFPLENBQUMsTUFBRCxDQUFwQjs7QUFPZSxNQUFNRyxvQkFBTixTQUFtQ0MsZ0NBQW5DLENBQTBEO0VBQ3JFQyxXQUFXLEdBQUc7SUFDVixNQUFNLElBQU47RUFDSDs7RUFFREMsS0FBSyxDQUFDQyxTQUFELEVBQVlDLFNBQVMsR0FBRyxJQUF4QixFQUE4QjtJQUMvQixJQUFJQyxjQUFjLEdBQUcsSUFBSUMsdUJBQUosRUFBckI7SUFDQSxLQUFLQyxJQUFMLENBQVVKLFNBQVYsRUFBcUJFLGNBQXJCLEVBQXFDRCxTQUFyQztJQUNBLE9BQU9DLGNBQVA7RUFDSDs7RUFFREUsSUFBSSxDQUFDSixTQUFELEVBQVlFLGNBQVosRUFBNEJELFNBQVMsR0FBRyxJQUF4QyxFQUE4QztJQUM5QyxNQUFNSSxRQUFRLEdBQUdILGNBQWMsQ0FBQ0ksV0FBZixFQUFqQjs7SUFFQSxJQUFJO01BQ0EsS0FBS0MsVUFBTCxDQUFnQlAsU0FBaEIsRUFBMkJFLGNBQTNCLEVBQTJDRCxTQUEzQztJQUNILENBRkQsQ0FFRSxPQUFPTyxDQUFQLEVBQVU7TUFDUixNQUFNQyxPQUFPLEdBQUcsK0JBQWhCO01BRUEsS0FBS0MsYUFBTCxDQUFtQlIsY0FBbkIsRUFBbUNHLFFBQW5DO01BQ0Es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
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc