nsc-react-component 2.1.17 → 2.1.20
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/lib/base/datepick/index.js +6 -1
- package/lib/base/errorboundary/index.js +1 -2
- package/lib/base/form/Form.d.ts +8 -1
- package/lib/base/form/Form.js +160 -25
- package/lib/base/form/index.less +49 -0
- package/lib/base/input/Number.js +5 -2
- package/lib/base/table/index.js +1 -3
- package/lib/base/tree/index.js +1 -2
- package/lib/config.d.ts +2 -0
- package/lib/config.js +3 -2
- package/lib/page/BasePage/Form.d.ts +1 -1
- package/lib/page/BasePage/Form.js +68 -43
- package/lib/page/BasePage/index.d.ts +8 -3
- package/lib/page/BasePage/index.js +75 -38
- package/lib/utils.js +1 -3
- package/package.json +1 -1
package/lib/base/table/index.js
CHANGED
|
@@ -438,8 +438,6 @@ var NSCTable = /*#__PURE__*/function (_React$Component) {
|
|
|
438
438
|
}, {
|
|
439
439
|
key: "filterColumn",
|
|
440
440
|
value: function filterColumn(checkedValue) {
|
|
441
|
-
console.log("checkedValue", checkedValue);
|
|
442
|
-
|
|
443
441
|
if (checkedValue.length == 0) {
|
|
444
442
|
_message.warning("至少显示一列!");
|
|
445
443
|
|
|
@@ -920,4 +918,4 @@ _defineProperty(NSCTable, "defaultProps", {
|
|
|
920
918
|
});
|
|
921
919
|
|
|
922
920
|
export default withZhLocale(NSCTable);
|
|
923
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sIm5hbWVzIjpbIkFwcHN0b3JlT3V0bGluZWQiLCJDaGVja091dGxpbmVkIiwiQ29sdW1uSGVpZ2h0T3V0bGluZWQiLCJTZWFyY2hPdXRsaW5lZCIsIlNvcnRBc2NlbmRpbmdPdXRsaW5lZCIsIlNvcnREZXNjZW5kaW5nT3V0bGluZWQiLCJpc0VtcHR5T2JqIiwiU3RvcmUiLCJQYWdlU3RvcmUiLCJ1dGlscyIsIlJlYWN0IiwiRG5kUHJvdmlkZXIiLCJCb2R5Um93IiwiRG5kQ29udGV4dFR5cGUiLCJJQm9keVJvd1Byb3BzIiwidHJlZVV0aWxzIiwic3R5bGVzIiwiQm9keVJvd0NvbXBvbmVudCIsIkhUTUw1QmFja2VuZCIsIndpdGhaaExvY2FsZSIsIlJlc2l6YWJsZSIsImdldExlc3MiLCJnZXROb2RlIiwiTm9EYXRhIiwiUmVzaXplYWJsZVRpdGxlIiwicHJvcHMiLCJvblJlc2l6ZSIsIndpZHRoIiwicmVzdFByb3BzIiwiZW5hYmxlVXNlclNlbGVjdEhhY2siLCJOU0NUYWJsZSIsImNyZWF0ZVJlZiIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwiY29scyIsInNvcnRzIiwiZmlsdGVyUGFyYW1zIiwidGFibGVTaXplIiwic29ydFR5cGUiLCJzb3J0ZXIiLCJzb3J0SW5mbyIsImRlZmF1bHRTb3J0IiwiY2hlY2tDb2x1bW4iLCJkZWZhdWx0Q2hlY2siLCJvbkJlZm9yZUxvYWQiLCJsb2FkIiwiaGVhZGVyIiwiY2VsbCIsImluZGV4IiwiZSIsInNpemUiLCJzdGF0ZSIsIm5leHRDb2x1bW5zIiwic2V0U3RhdGUiLCJkcmFnSW5kZXgiLCJob3ZlckluZGV4IiwiZHJhZyIsInRhcmdldCIsIl90aGlzIiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJsaXN0ZW5lcnMiLCJsaXN0ZW5lcnNQcm9wcyIsInJlc3RTdG9yZSIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwiZGF0YSIsIm1vZGVsRGF0YSIsInBhZ2luZyIsImdldFBhZ2luYXRpb24iLCJvbkVycm9yTG9hZCIsImVyciIsInJlc3BvbnNlIiwiYXV0b0xvYWQiLCJPYmplY3QiLCJhc3NpZ24iLCJjdXJyZW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImZpbHRlcnMiLCJleHRyYSIsImF1dG9PbkNoYW5nZSIsImF1dG9Tb3J0IiwiYXV0b1BhZ2luYXRpb24iLCJvbkNoYW5nZSIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwiZ2V0UGFnaW5hdGlvbkJ5U3RvcmUiLCJwIiwiY3VycmVudEtleSIsInBhZ2VTaXplS2V5IiwicGFnZVNpemUiLCJhc2NQYXJhbXMiLCJnZXRTb3J0UGFyYW0iLCJvbkNoYW5nZUZuIiwiZ2V0TW9kZWwiLCJ2YWwiLCJjaGVja2VkVmFsdWUiLCJjb25zb2xlIiwibG9nIiwibGVuZ3RoIiwid2FybmluZyIsImZpbHRlckNvbHVtbnMiLCJuZXdDb2wiLCJpbmNsdWRlcyIsImRhdGFJbmRleCIsImluaXRTaG93Iiwic29ydFN0YXRlIiwib3JkZXJJdGVtcyIsImZpZWxkIiwiYXNjIiwib3JkZXIiLCJmb3JFYWNoIiwidiIsIkpTT04iLCJzdHJpbmdpZnkiLCJzb3J0RmllbGRzIiwiZGVmYXVsdFNob3dDb2xzIiwiZmlsdGVyIiwiZWxsaXBzaXMiLCJyZW5kZXIiLCJzaG93VGl0bGUiLCJ0ZXh0IiwiaW5kZXhPZiIsInNvcnRPcmRlciIsIm11bHRpcGxlIiwiaXRlbSIsImZpbHRlclByb3BzIiwib2JqIiwidHlwZSIsInNlYXJjaEtleSIsIkRpdiIsInRpdGxlIiwicGxhY2Vob2xkZXIiLCJyZWYiLCJ0YWJsZVNlYXJjaFJlZiIsImZpbHRlckRyb3Bkb3duIiwic2V0U2VsZWN0ZWRLZXlzIiwic2VsZWN0ZWRLZXlzIiwiY29uZmlybSIsImNsZWFyRmlsdGVycyIsIm5ld0ZpbHRlclBhcmFtcyIsImtleSIsImdldFZhbHVlIiwic29ydFBhcmFtIiwiZmlsdGVySWNvbiIsImZpbHRlckNvbHVtbiIsImNvbExpc3RzIiwic2l6ZUl0ZW0iLCJzb3J0SXRlbSIsInNvcnRDb250ZW50IiwiY3Vyc29yIiwiY29sb3IiLCJzaXplQ29udGVudCIsImNvbnRlbnQiLCJiaW5kIiwibGFiZWwiLCJ2YWx1ZSIsImRpc2FibGVkIiwiZm9udFNpemUiLCJtaW5XaWR0aCIsIm1heFdpZHRoIiwibWFyZ2luUmlnaHQiLCJvbWl0Iiwicm93S2V5IiwiY2xpY2tDaGFuZ2VDb2xvciIsInBvc2l0aW9uIiwic2hvd1NpemVDaGFuZ2VyIiwic2hvd1F1aWNrSnVtcGVyIiwic2hvd1RvdGFsIiwidG90YWwiLCJmcm9tIiwidG8iLCJvblJvd0ZuIiwib25Sb3ciLCJjdXN0b20iLCJvbkNsaWNrRm4iLCJvbkNsaWNrIiwiZXZlbnQiLCJyb3dDbGFzc05hbWUiLCJjbGlja1Jvd1N0eWxlIiwibmV3RGF0YVNvdXJjZSIsImdldFNlYXJjaE1lbnVEYXRhcyIsInRyZWVEYXRhcyIsImV4cGFuZGVkUm93S2V5cyIsIm9wZW5LZXlzIiwiZHJhZ2FibGUiLCJkcmFnYWJsZVByb3BzIiwiY29tcG9uZW50cyIsInJlc2l6ZVByb3BzIiwiRGVmYXVsdFRhYmxlIiwidG9vbGJhciIsInJlbmRlclRvb2xCYXIiLCJnZXRDb2x1bW5zIiwiZW1wdHlUZXh0IiwieCIsIkNvbXBvbmVudCIsImRyYWdVcmwiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQ0VBLGdCQURGLEVBRUVDLGFBRkYsRUFHRUMsb0JBSEYsRUFJRUMsY0FKRixFQUtFQyxxQkFMRixFQU1FQyxzQkFORixRQU9PLG1CQVBQO0FBUUEsU0FBU0MsVUFBVCxRQUEyQixtQkFBM0I7QUFDQSxPQUFPQyxLQUFQLElBQWdCQyxTQUFoQixRQUE2QyxhQUE3QztBQUNBLFNBQVNDLEtBQVQsUUFBc0IsdUJBQXRCO0FBY0EsT0FBTyxLQUFLQyxLQUFaLE1BQXVCLE9BQXZCO0FBQ0EsU0FBU0MsV0FBVCxRQUE0QixXQUE1QjtBQUNBLE9BQU9DLE9BQVAsSUFBa0JDLGNBQWxCLEVBQWtDQyxhQUFsQyxRQUF1RCxtQkFBdkQ7QUFDQSxPQUFPQyxTQUFQLE1BQXNCLGlCQUF0QjtBQUNBLE9BQU9DLE1BQVAsTUFBbUIscUJBQW5CO0FBQ0EsSUFBUUMsZ0JBQVIsR0FBMkNMLE9BQTNDLENBQVFLLGdCQUFSO0FBQUEsSUFBMEJDLFlBQTFCLEdBQTJDTixPQUEzQyxDQUEwQk0sWUFBMUI7QUFDQSxPQUFPQyxZQUFQLE1BQXlCLHdCQUF6QjtBQUNBLFNBQVNDLFNBQVQsUUFBMEIsaUJBQTFCO0FBQ0EsT0FBTyxzQkFBUDtBQUNBLFNBQVNDLE9BQVQsRUFBa0JDLE9BQWxCLFFBQWlDLGFBQWpDO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQiwwQkFBbkI7QUFrQ0EsU0FBU1YsY0FBVCxFQUF5QkMsYUFBekI7O0FBRUEsSUFBTVUsZUFBZSxHQUFHLFNBQWxCQSxlQUFrQixDQUFDQyxLQUFELEVBQWdCO0FBQ3RDLE1BQVFDLFFBQVIsR0FBMENE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QnZCLEVBQUFBLFlBQVksRUFBRSxJQUhNO0FBSXBCbUQsRUFBQUEsT0FBTyxFQUFFLEVBSlc7QUFLcEJwSCxFQUFBQSxjQUFjLEVBQUUsSUFMSTtBQU1wQkQsRUFBQUEsUUFBUSxFQUFFLElBTlU7QUFPcEJELEVBQUFBLFlBQVksRUFBRSxJQVBNO0FBUXBCaEIsRUFBQUEsWUFBWSxFQUFFLElBUk07QUFTcEJnSSxFQUFBQSxPQUFPLEVBQUU7QUFUVyxDOztBQW10QnhCLGVBQWVoTixZQUFZLENBQUNXLFFBQUQsQ0FBM0IiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjMgMDg6NDY6MjBcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTAzLTIzIDEwOjMwOjQyXHJcbiAqL1xyXG5pbXBvcnQge1xyXG4gIEFwcHN0b3JlT3V0bGluZWQsXHJcbiAgQ2hlY2tPdXRsaW5lZCxcclxuICBDb2x1bW5IZWlnaHRPdXRsaW5lZCxcclxuICBTZWFyY2hPdXRsaW5lZCxcclxuICBTb3J0QXNjZW5kaW5nT3V0bGluZWQsXHJcbiAgU29ydERlc2NlbmRpbmdPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIEJ1dHRvbixcclxuICBDaGVja2JveCxcclxuICBDaGVja2JveE9wdGlvblR5cGUsXHJcbiAgTWVudSxcclxuICBtZXNzYWdlLFxyXG4gIFBvcG92ZXIsXHJcbiAgU3BhY2UsXHJcbiAgVGFibGUsXHJcbiAgVGFibGVQcm9wcyxcclxuICBUb29sdGlwLFxyXG59IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCB7IENvbHVtblR5cGUsIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB9IGZyb20gXCJhbnRkL2xpYi90YWJsZVwiO1xyXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IHsgRG5kUHJvdmlkZXIgfSBmcm9tIFwicmVhY3QtZG5kXCI7XHJcbmltcG9ydCBCb2R5Um93LCB7IERuZENvbnRleHRUeXBlLCBJQm9keVJvd1Byb3BzIH0gZnJvbSBcIi4uL2NvbW1vbi9Cb2R5Um93XCI7XHJcbmltcG9ydCB0cmVlVXRpbHMgZnJvbSBcIi4uLy4uL3RyZWVVdGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmNvbnN0IHsgQm9keVJvd0NvbXBvbmVudCwgSFRNTDVCYWNrZW5kIH0gPSBCb2R5Um93O1xyXG5pbXBvcnQgd2l0aFpoTG9jYWxlIGZyb20gXCIuLi9jb21tb24vd2l0aFpoTG9jYWxlXCI7XHJcbmltcG9ydCB7IFJlc2l6YWJsZSB9IGZyb20gXCJyZWFjdC1yZXNpemFibGVcIjtcclxuaW1wb3J0IFwiLi9yZXNpemUubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgTm9EYXRhIGZyb20gXCIuLi8uLi9iYXNlL2NvbW1vbi9Ob0RhdGFcIjtcclxuXHJcbmludGVyZmFjZSBJRHJhZ1BhcmFtcyB7XHJcbiAgaWQ6IHN0cmluZyB8IG51bWJlcjtcclxuICBpZHM6IEFycmF5PHN0cmluZyB8IG51bWJlcj47XHJcbiAgcGFyZW50SWQ6IHN0cmluZyB8IG51bWJlcjtcclxufVxyXG4vLyBpbnRlcmZhY2UgU3RvcmVQcm9wcyB7fVxyXG5cclxuZXhwb3J0IHR5cGUgU3RvcmVUeXBlID0gXCJQYWdlU3RvcmVcIiB8IFwiVHJlZVN0b3JlXCIgfCBcIkJhc2VTdG9yZVwiO1xyXG5cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUGFnaW5hdGlvbiBleHRlbmRzIFRhYmxlUGFnaW5hdGlvbkNvbmZpZyB7XHJcbiAgdG90YWxLZXk/OiBzdHJpbmc7XHJcbiAgcGFnZVNpemVLZXk/OiBzdHJpbmc7XHJcbiAgY3VycmVudEtleT86IHN0cmluZztcclxufVxyXG5cclxuaW50ZXJmYWNlIE5TQ1RhYmxlUHJvcHMgZXh0ZW5kcyBUYWJsZVByb3BzPGFueT4ge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93VG90YWw/OiBib29sZWFuOyAvLyDmmK/lkKbmmL7npLrmgLvmnaHmlbDkv6Hmga/vvIzpu5jorqR0cnVlXHJcbiAgZHJhZ2FibGU/OiBib29sZWFuOyAvLyDmmK/lkKblj6/mi5bliqgsIOm7mOiupGZhbHNlXHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy8g5piv5ZCm5pSv5oyB6L+H5ruk5pi+56S66KGo5qC85YiXLCDpu5jorqR0cnVlXHJcbiAgbW92ZVJvdz86IChwYXJhbXM6IElEcmFnUGFyYW1zKSA9PiB2b2lkOyAvLyDmi5bmi73lrozmiJDlkI7nmoTlm57osINcclxuICBkcmFnVXJsPzogc3RyaW5nOyAvLyDkv53lrZjmi5bmi73mjpLluo/nmoTmjqXlj6NcclxuICBwYWdpbmF0aW9uPzogZmFsc2UgfCBOU0NUYWJsZVBhZ2luYXRpb247XHJcbiAgYXV0b1BhZ2luYXRpb24/OiBib29sZWFuOyAvLyDnu4Tku7bmmK/lkKboh6rliqjlpITnkIbliIbpobVcclxuICBhdXRvU29ydD86IGJvb2xlYW47IC8v57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5o6S5bqPXHJcbiAgYXV0b09uQ2hhbmdlPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqob25DaGFuZ2UsIGZhbHNl5YiZ5LiN5YGa5Lu75L2V5aSE55CG5YWo6YOo5Lqk57uZ6LCD55So5pa5XHJcbiAgcmVzaXplQ29sdW1uPzogYm9vbGVhbjtcclxuICBzb3J0RmllbGRzPzogQXJyYXk8c3RyaW5nPjsgLy/pnIDopoHmjpLluo/nmoTlrZfmrrVJbmRleFxyXG4gIHRvb2xiYXI/OiBib29sZWFuO1xyXG59XHJcblxyXG5leHBvcnQgdHlwZSBJTlNDVGFibGVQcm9wcyA9IHR5cGVvZiBOU0NUYWJsZS5kZWZhdWx0UHJvcHMgJiBOU0NUYWJsZVByb3BzO1xyXG5leHBvcnQgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9O1xyXG5cclxuY29uc3QgUmVzaXplYWJsZVRpdGxlID0gKHByb3BzOiBhbnkpID0+IHtcclxuICBjb25zdCB7IG9uUmVzaXplLCB3aWR0aCwgLi4ucmVzdFByb3BzIH0gPSBwcm9wcztcclxuICByZXR1cm4gKFxyXG4gICAgPFJlc2l6YWJsZVxyXG4gICAgICB3aWR0aD17d2lkdGggfHwgMTUwfVxyXG4gICAgICBoZWlnaHQ9ezB9XHJcbiAgICAgIG9uUmVzaXplPXtvblJlc2l6ZX1cclxuICAgICAgZHJhZ2dhYmxlT3B0cz17eyBlbmFibGVVc2VyU2VsZWN0SGFjazogZmFsc2UgfX1cclxuICAgID5cclxuICAgICAgPHRoIHsuLi5yZXN0UHJvcHN9IC8+XHJcbiAgICA8L1Jlc2l6YWJsZT5cclxuICApO1xyXG59O1xyXG5jbGFzcyBOU0NUYWJsZSBleHRlbmRzIFJlYWN0LkNvbXBvbmVudDxJTlNDVGFibGVQcm9wcz4ge1xyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICBkcmFnYWJsZTogZmFsc2UsXHJcbiAgICBzaG93VG90YWw6IHRydWUsXHJcbiAgICBmaWx0ZXJDb2x1bW46IHRydWUsXHJcbiAgICBkcmFnVXJsOiBcIlwiLFxyXG4gICAgYXV0b1BhZ2luYXRpb246IHRydWUsXHJcbiAgICBhdXRvU29ydDogdHJ1ZSxcclxuICAgIGF1dG9PbkNoYW5nZTogdHJ1ZSxcclxuICAgIHJlc2l6ZUNvbHVtbjogdHJ1ZSxcclxuICAgIHRvb2xiYXI6IHRydWUsXHJcbiAgfTtcclxuXHJcbiAgc3RvcmUgPSB7fSBhcyBTdG9yZVByb3BzO1xyXG4gIHRoSWNvblJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxIVE1MRGl2RWxlbWVudD4oKTtcclxuICB0YWJsZVNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBbXSxcclxuICAgIGNvbHVtbnM6IFtdLFxyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBwYWdpbmF0aW9uOiB7fSxcclxuICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgIC8v5pCc57Si5paH5pysXHJcbiAgICBzZWFyY2hUZXh0OiBudWxsLFxyXG4gICAgZmllbGRPcHRpb246IG51bGwsXHJcbiAgICBzZWFyY2hDb2xvcjogbnVsbCxcclxuICAgIGNvbHM6IFtdLFxyXG4gICAgc29ydHM6IFtdLFxyXG4gICAgZmlsdGVyUGFyYW1zOiB7fSxcclxuICAgIHRhYmxlU2l6ZTogXCJtaWRkbGVcIixcclxuICAgIHNvcnRUeXBlOiBcInNpbmdsZVwiLFxyXG4gICAgc29ydGVyOiBbXSwgLy/orrDlvZXlvZPliY3mjpLluo/lrZfmrrVcclxuICAgIHNvcnRJbmZvOiB7fSxcclxuICAgIGRlZmF1bHRTb3J0OiB0cnVlLFxyXG4gICAgY2hlY2tDb2x1bW46IFtdLFxyXG4gICAgZGVmYXVsdENoZWNrOiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIGxpc3RlbmVycyA9IHtcclxuICAgIG9uQmVmb3JlTG9hZDogbnVsbCxcclxuICAgIGxvYWQ6IG51bGwsXHJcbiAgfTtcclxuXHJcbiAgY29tcG9uZW50cyA9IHtcclxuICAgIGhlYWRlcjoge1xyXG4gICAgICBjZWxsOiBSZXNpemVhYmxlVGl0bGUsXHJcbiAgICB9LFxyXG4gIH07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XHJcbiAgICBzdXBlcihwcm9wcyk7XHJcbiAgICBpZiAocHJvcHMuc3RvcmUgaW5zdGFuY2VvZiBTdG9yZSkge1xyXG4gICAgICB0aGlzLnN0b3JlID0gcHJvcHMuc3RvcmU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBjb25zdCB7IGxpc3RlbmVyczogbGlzdGVuZXJzUHJvcHMgPSB7fSwgLi4ucmVzdFN0b3JlIH0gPVxyXG4gICAgICAgIHByb3BzLnN0b3JlIHx8IHt9O1xyXG4gICAgICBjb25zdCBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgIG1vZGVsOiBcIm1vZGVsXCIsXHJcbiAgICAgICAgY29tcG9uZW50OiB0aGlzLFxyXG4gICAgICAgIGxpc3RlbmVyczoge1xyXG4gICAgICAgICAgb25CZWZvcmVMb2FkOiAoc3RvcmUsIG9wdGlvbnMpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLm9uQmVmb3JlTG9hZCwgdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBwYWdpbmcgPSAhKHRoaXMucHJvcHMucGFnaW5hdGlvbiA9PT0gZmFsc2UpO1xyXG4gICAgICAgICAgICBpZiAocGFnaW5nICYmICF0aGlzLnByb3BzLmRhdGFTb3VyY2UpIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIGRhdGFTb3VyY2U6IG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICAgIHBhZ2luYXRpb246IHN0b3JlLmdldFBhZ2luYXRpb24oKSxcclxuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgYWN0aXZlSW5kZXg6IC0xLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEsIGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5kYXRhQ2hhbmdlZCwgdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICAgIHBhZ2luZyxcclxuICAgICAgICAgICAgXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbG9hZDogKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpID0+IHtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMubG9hZCwgdGhpcywgW2RhdGEsIG1vZGVsRGF0YSwgc3RvcmVdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBvbkVycm9yTG9hZDogKGVyciwgcmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkVycm9yTG9hZCwgdGhpcywgW2VyciwgcmVzcG9uc2VdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICBkYXRhOiByZXN0U3RvcmUuZGF0YVxyXG4gICAgICAgICAgPyByZXN0U3RvcmUuZGF0YVxyXG4gICAgICAgICAgOiBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA/IHByb3BzLmRhdGFTb3VyY2VcclxuICAgICAgICAgIDogbnVsbCxcclxuICAgICAgICAuLi5yZXN0U3RvcmUsXHJcbiAgICAgICAgYXV0b0xvYWQ6IHJlc3RTdG9yZS5hdXRvTG9hZCA9PT0gZmFsc2UgPyBmYWxzZSA6IHRydWUsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgUGFnZVN0b3JlKFxyXG4gICAgICAgIE9iamVjdC5hc3NpZ24oe30sIHN0b3JlUHJvcHMsIHtcclxuICAgICAgICAgIHBhZ2luYXRpb246IHsgY3VycmVudDogMSwgLi4udGhpcy5wcm9wcy5wYWdpbmF0aW9uIH0sXHJcbiAgICAgICAgfSlcclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGhhbmRsZVJlc2l6ZSA9XHJcbiAgICAoaW5kZXg6IGFueSkgPT5cclxuICAgIChlOiBhbnksIHsgc2l6ZSB9OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCBuZXh0Q29sdW1ucyA9IFsuLi5jb2xzXTtcclxuICAgICAgbmV4dENvbHVtbnNbaW5kZXhdID0ge1xyXG4gICAgICAgIC4uLm5leHRDb2x1bW5zW2luZGV4XSxcclxuICAgICAgICB3aWR0aDogc2l6ZS53aWR0aCxcclxuICAgICAgfTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgY29sczogbmV4dENvbHVtbnMsXHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2xzOiBbLi4udGhpcy5wcm9wcy5jb2x1bW5zXSB9KTtcclxuICAgIH1cclxuICAgIGNvbnN0IHN0b3JlID0gdGhpcy5wcm9wcy5zdG9yZTtcclxuICAgIGlmIChzdG9yZSAmJiBzdG9yZS5kYXRhKSB7XHJcbiAgICAgIHRoaXMuc3RvcmUuc2V0RGF0YShzdG9yZS5kYXRhKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShwcmV2UHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICBjb25zdCB7IHJlc2l6ZUNvbHVtbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmICghcmVzaXplQ29sdW1uKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmNvbHVtbnMgIT09IHByZXZQcm9wcy5jb2x1bW5zKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGNvbHVtbnM6IHRoaXMucHJvcHMuY29sdW1ucyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHByZVN0YXRlLmNvbHMgIT09IHRoaXMuc3RhdGUuY29scykge1xyXG4gICAgICAgIHRoaXMucmVzZXRDb2x1bW4oKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVzZXRDb2x1bW4oKSB7XHJcbiAgICBjb25zdCB7IGNvbHMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBuZXdDb2xzOiBhbnkgPSBbXTtcclxuICAgIGxldCBjb2xzcyA9IGNvbHMgfHwgW107XHJcbiAgICBjb2xzcy5tYXAoKGNvbDogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGxldCB0ZW1wID0ge1xyXG4gICAgICAgIC4uLmNvbCxcclxuICAgICAgICBvbkhlYWRlckNlbGw6IChjb2x1bW46IHsgd2lkdGg6IGFueSB9KSA9PiAoe1xyXG4gICAgICAgICAgd2lkdGg6IGNvbHVtbi53aWR0aCxcclxuICAgICAgICAgIG9uUmVzaXplOiB0aGlzLmhhbmRsZVJlc2l6ZShpbmRleCksXHJcbiAgICAgICAgfSksXHJcbiAgICAgIH07XHJcbiAgICAgIG5ld0NvbHMucHVzaCh0ZW1wKTtcclxuICAgIH0pO1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGNvbHVtbnM6IG5ld0NvbHMsXHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOa4hemZpOmAieS4reminOiJslxyXG4gICAqL1xyXG4gIGNsZWFyU2VsZWN0Q29sb3IoKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgYWN0aXZlSW5kZXg6IC0xIH0pO1xyXG4gICAgcmV0dXJuIHRoaXM7XHJcbiAgfVxyXG5cclxuICBnZXRQYWdpbmF0aW9uQnlTdG9yZSgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldFBhZ2luYXRpb24oKTtcclxuICB9XHJcblxyXG4gIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpIHtcclxuICAgIGNvbnN0IHsgYXV0b09uQ2hhbmdlLCBhdXRvU29ydCwgYXV0b1BhZ2luYXRpb24sIG9uQ2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGNvbnN0IHsgZmlsdGVyUGFyYW1zIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgaXNNdWx0aXBsZSA9IEFycmF5LmlzQXJyYXkoc29ydGVyKTtcclxuICAgIGlmIChhdXRvT25DaGFuZ2UgPT09IGZhbHNlKSB7XHJcbiAgICAgIG9uQ2hhbmdlICYmIG9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCBoYW5kbGVQYWdpbmF0aW9uID0gKCkgPT4ge1xyXG4gICAgICBsZXQgcGFyYW1zID0ge30gYXMge1xyXG4gICAgICAgIHNpemU/OiBzdHJpbmc7XHJcbiAgICAgICAgcGFnZVNpemU/OiBzdHJpbmc7XHJcbiAgICAgICAgYXNjcz86IHN0cmluZztcclxuICAgICAgICBkZXNjcz86IHN0cmluZztcclxuICAgICAgICBbcHJvcE5hbWU6IHN0cmluZ106IHN0cmluZztcclxuICAgICAgfTtcclxuXHJcbiAgICAgIGNvbnN0IHBhZ2luZyA9IHRoaXMuZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB8fCB7fTtcclxuXHJcbiAgICAgIGlmICghaXNFbXB0eU9iaihwYWdpbmF0aW9uKSkge1xyXG4gICAgICAgIGNvbnN0IHAgPSB7XHJcbiAgICAgICAgICBbcGFnaW5nLmN1cnJlbnRLZXkgfHwgXCJjdXJyZW50XCJdOiBwYWdpbmF0aW9uLmN1cnJlbnQsXHJcbiAgICAgICAgICBbcGFnaW5nLnBhZ2VTaXplS2V5IHx8IFwic2l6ZVwiXTogcGFnaW5hdGlvbi5wYWdlU2l6ZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIE9iamVjdC5hc3NpZ24ocGFyYW1zLCBwKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgYXNjUGFyYW1zID0gdGhpcy5nZXRTb3J0UGFyYW0oc29ydGVyLCB0cnVlKTtcclxuICAgICAgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpc011bHRpcGxlICYmICFpc0VtcHR5T2JqKHNvcnRlcikpIHtcclxuICAgICAgICBzb3J0ZXIuY29sdW1uICYmXHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbc29ydGVyXSwgZGVmYXVsdFNvcnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdIH0pO1xyXG4gICAgICB9XHJcbiAgICAgIHBhcmFtcyA9IHsgLi4uZmlsdGVyUGFyYW1zLCAuLi5wYXJhbXMsIC4uLmFzY1BhcmFtcyB9O1xyXG4gICAgICBhdXRvU29ydCAmJiB0aGlzLnN0b3JlLnJlbG9hZCh7IHBhcmFtcyB9KTtcclxuICAgIH07XHJcblxyXG4gICAgY29uc3Qgb25DaGFuZ2VGbiA9IHRoaXMucHJvcHMub25DaGFuZ2U7XHJcbiAgICAvLyDnlKjmiLfkvKDkuoZvbkNoYW5nZeS/neeVmeeUqOaIt+iHquS4u+WkhOeQhuihqOagvOWPmOWMlueahOadg+WKm1xyXG4gICAgaWYgKG9uQ2hhbmdlRm4pIHtcclxuICAgICAgdXRpbHMuY2FsbGJhY2sob25DaGFuZ2VGbiwgdGhpcywgW3BhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmFdKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgYXV0b1BhZ2luYXRpb24gJiYgaGFuZGxlUGFnaW5hdGlvbigpO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluaVsOaNruaooeWei+WvueixoVxyXG4gICAqL1xyXG4gIGdldE1vZGVsKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmUuZ2V0TW9kZWwoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiPnOWNleaQnOe0oui/h+a7pOaYvuekulxyXG4gICAqIEBwYXJhbSB7U3RyaW5nfSB2YWxcclxuICAgKi9cclxuICBoYW5kbGVTZWFyY2godmFsLCBmaWVsZE9wdGlvbiwgc2VhcmNoQ29sb3IpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBzZWFyY2hUZXh0OiB2YWwsXHJcbiAgICAgIGZpZWxkT3B0aW9uOiBmaWVsZE9wdGlvbixcclxuICAgICAgc2VhcmNoQ29sb3I6IHNlYXJjaENvbG9yLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmqKHlnZfliJfooajnp7vliqjmjpLluo9cclxuICAgKi9cclxuICBtb3ZlUm93ID0gKGRyYWdJbmRleCwgaG92ZXJJbmRleCwgZHJhZywgdGFyZ2V0KSA9PiB7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgZHJhZ05vZGUgPSBkcmFnLnJlY29yZDtcclxuICAgIGxldCB0YXJnZXROb2RlID0gdGFyZ2V0LnJlY29yZDtcclxuICAgIGRyYWdOb2RlLm1vdmVBcnJheShkcmFnTm9kZSwgdGFyZ2V0Tm9kZSk7XHJcbiAgICBsZXQgaWRzID0gZHJhZ05vZGUucGFyZW50Tm9kZS5nZXRDaGlsZE5vZGVJZHMoKTtcclxuICAgIGxldCBwYXJhbXMgPSB7XHJcbiAgICAgIGlkOiBkcmFnTm9kZS5pZCxcclxuICAgICAgcGFyZW50SWQ6IGRyYWdOb2RlLmF0dHJpYnV0ZS5wYXJlbnRJZCxcclxuICAgICAgaWRzOiBpZHMsXHJcbiAgICB9O1xyXG5cclxuICAgIGlmICh0aGlzLnByb3BzLm1vdmVSb3cpIHtcclxuICAgICAgdGhpcy5wcm9wcy5tb3ZlUm93KHBhcmFtcyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnN0b3JlLnJlbG9hZCgpO1xyXG4gICAgfVxyXG4gIH07XHJcblxyXG4gIGZpbHRlckNvbHVtbihjaGVja2VkVmFsdWUpIHtcclxuICAgIGNvbnNvbGUubG9nKFwiY2hlY2tlZFZhbHVlXCIsIGNoZWNrZWRWYWx1ZSk7XHJcbiAgICBpZiAoY2hlY2tlZFZhbHVlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuiHs+WwkeaYvuekuuS4gOWIl++8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsdGVyQ29sdW1ucyA9IHRoaXMucHJvcHMuY29sdW1ucy5tYXAoKGNvbDogQ29sdW1uVHlwZTx7fT4pID0+IHtcclxuICAgICAgY29uc3QgbmV3Q29sID0geyAuLi5jb2wgfSBhcyBDb2x1bW5UeXBlPHt9PiAmIHsgaW5pdFNob3c6IGJvb2xlYW4gfTtcclxuICAgICAgaWYgKGNoZWNrZWRWYWx1ZS5pbmNsdWRlcyhjb2wuZGF0YUluZGV4KSkge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3Q29sLmluaXRTaG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ld0NvbDtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjb2x1bW5zOiBmaWx0ZXJDb2x1bW5zLFxyXG4gICAgICAgIGNoZWNrQ29sdW1uOiBjaGVja2VkVmFsdWUsXHJcbiAgICAgICAgZGVmYXVsdENoZWNrOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjb2xzOiBmaWx0ZXJDb2x1bW5zLFxyXG4gICAgICAgIGNoZWNrQ29sdW1uOiBjaGVja2VkVmFsdWUsXHJcbiAgICAgICAgZGVmYXVsdENoZWNrOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFNvcnRQYXJhbShzb3J0ZXIsIHNvcnRTdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzb3J0ZXIpO1xyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUpIHtcclxuICAgICAgb3JkZXJJdGVtcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2x1bW46IHNvcnRlci5jb2x1bW4uZmllbGQgfHwgc29ydGVyLmNvbHVtbi5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBhc2M6IHNvcnRlci5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIGlmIChzb3J0ZXIuY29sdW1uKSBzb3J0SW5mb1tzb3J0ZXIuY29sdW1uLmRhdGFJbmRleF0gPSBzb3J0ZXIub3JkZXI7XHJcbiAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgc29ydGVyLmZvckVhY2goKHYpID0+IHtcclxuICAgICAgICBzb3J0SW5mb1t2LmNvbHVtbi5kYXRhSW5kZXhdID0gdi5vcmRlcjtcclxuICAgICAgICBsZXQgZmllbGQgPSB2LmNvbHVtbi5maWVsZCB8fCB2LmNvbHVtbi5kYXRhSW5kZXg7XHJcbiAgICAgICAgb3JkZXJJdGVtcy5wdXNoKHtcclxuICAgICAgICAgIGNvbHVtbjogZmllbGQsXHJcbiAgICAgICAgICBhc2M6IHYub3JkZXIgPT0gXCJhc2NlbmRcIixcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc29ydFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHNvcnRJbmZvOiBzb3J0SW5mbyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBvcmRlckl0ZW1zOiBKU09OLnN0cmluZ2lmeShvcmRlckl0ZW1zKSB9O1xyXG4gIH1cclxuICBnZXRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBzb3J0VHlwZSwgc29ydEluZm8gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNvcnRGaWVsZHMgPSBbXSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcbiAgICBjb25zdCBjb2xzID0gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoY29sLmVsbGlwc2lzICYmICFjb2wucmVuZGVyKSB7XHJcbiAgICAgICAgY29sLmVsbGlwc2lzID0ge1xyXG4gICAgICAgICAgc2hvd1RpdGxlOiBmYWxzZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbC5yZW5kZXIgPSAodGV4dCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFRvb2x0aXAgcGxhY2VtZW50PVwidG9wTGVmdFwiIHRpdGxlPXt0ZXh0fT5cclxuICAgICAgICAgICAgICB7dGV4dH1cclxuICAgICAgICAgICAgPC9Ub29sdGlwPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc29ydEZpZWxkcy5pbmRleE9mKGNvbC5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgICBpZiAoc29ydFR5cGUgPT0gXCJzaW5nbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHRydWU7XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0VHlwZSA9PSBcIm11bHRpcGxlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB7IG11bHRpcGxlOiBpbmRleCB9O1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sO1xyXG4gICAgfSk7XHJcbiAgICBjb2xzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKCFpc0VtcHR5T2JqKGl0ZW0uZmlsdGVyUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHNlYXJjaEtleSB9ID0gaXRlbS5maWx0ZXJQcm9wcztcclxuICAgICAgICBsZXQgRGl2ID0gbnVsbDtcclxuICAgICAgICBsZXQgdGV4dCA9IGl0ZW0udGl0bGU7XHJcbiAgICAgICAgRGl2ID0gZ2V0Tm9kZSh0eXBlLCB7XHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg5pCc57SiJHt0ZXh0fWAsXHJcbiAgICAgICAgICByZWY6IHRoaXMudGFibGVTZWFyY2hSZWYsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgZmlsdGVyRHJvcGRvd246ICh7XHJcbiAgICAgICAgICAgIHNldFNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBjb25maXJtLFxyXG4gICAgICAgICAgICBjbGVhckZpbHRlcnMsXHJcbiAgICAgICAgICB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic3BhY2VcIil9PntEaXZ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8U3BhY2U+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RmlsdGVyUGFyYW1zID0geyAuLi5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBrZXkgPSBpdGVtLmZpZWxkIHx8IGl0ZW0uZGF0YUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbmV3RmlsdGVyUGFyYW1zW2tleV0gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU2VhcmNoUmVmLmN1cnJlbnQ/LmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3J0UGFyYW0gPSB0aGlzLmdldFNvcnRQYXJhbSh0aGlzLnN0YXRlLnNvcnRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zLCAuLi5zb3J0UGFyYW0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImJ1dHRvblwiKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvU3BhY2U+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsdGVySWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPFNlYXJjaE91dGxpbmVkIC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iaixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbHNbaW5kZXhdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2xzO1xyXG4gIH1cclxuICByZW5kZXJUb29sQmFyKCkge1xyXG4gICAgbGV0IHsgdGFibGVTaXplLCBjb2x1bW5zLCBzb3J0VHlwZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IGZpbHRlckNvbHVtbiwgY29sdW1uczogY29sTGlzdHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBzaXplSXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLlrr3mnb5cIiwga2V5OiBcImRlZmF1bHRcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuS4reetiVwiLCBrZXk6IFwibWlkZGxlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLntKflh5FcIiwga2V5OiBcInNtYWxsXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0SXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLljZXlrZfmrrXmjpLluo9cIiwga2V5OiBcInNpbmdsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5aSa5a2X5q615o6S5bqPXCIsIGtleTogXCJtdWx0aXBsZVwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydENvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgPyBcIm5vdC1hbGxvd2VkXCIgOiBcInBvaW50ZXJcIixcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgJiYgXCJyZ2JhKDAsMCwwLC40NSlcIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRTb3J0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdLCBzb3J0SW5mbzoge30sIGRlZmF1bHRTb3J0OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmgaLlpI3pu5jorqTmjpLluo9cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c29ydEl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHNvcnRlcjogW10sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgICAgICAgICAgICAgc29ydFR5cGU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0U29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogXCJyZ2JhKDAsMCwwLC40NSlcIiB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5b2T5YmN5o6S5bqPXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ub3JkZXIgPT0gXCJhc2NlbmRcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnREZXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0uY29sdW1uLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgICBjb25zdCBzaXplQ29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfT7ooajmoLzlr4bluqY8L2Rpdj5cclxuICAgICAgICB7c2l6ZUl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlU2l6ZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gKFxyXG4gICAgICA8Q2hlY2tib3guR3JvdXBcclxuICAgICAgICBvbkNoYW5nZT17dGhpcy5maWx0ZXJDb2x1bW4uYmluZCh0aGlzKX1cclxuICAgICAgICBvcHRpb25zPXtjb2xMaXN0cy5tYXAoXHJcbiAgICAgICAgICAoY29sOiBDb2x1bW5UeXBlPHt9PiAmIHsgZmlsdGVyQ29sdW1uOiBib29sZWFuOyBkYXRhSW5kZXg6IGFueSB9KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghY29sLmRhdGFJbmRleCkge1xyXG4gICAgICAgICAgICAgIGNvbC5kYXRhSW5kZXggPSBjb2wudGl0bGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBsYWJlbDogY29sLnRpdGxlLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBjb2wuZGF0YUluZGV4LFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBjb2wuZmlsdGVyQ29sdW1uID09PSBmYWxzZSxcclxuICAgICAgICAgICAgfSBhcyBDaGVja2JveE9wdGlvblR5cGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKX1cclxuICAgICAgICAvLyBkZWZhdWx0VmFsdWU9e2RlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleCl9XHJcbiAgICAgICAgdmFsdWU9e1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5kZWZhdWx0Q2hlY2tcclxuICAgICAgICAgICAgPyBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zdGF0ZS5jaGVja0NvbHVtblxyXG4gICAgICAgIH1cclxuICAgICAgPjwvQ2hlY2tib3guR3JvdXA+XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRhYmxlLXRvb2wtYmFyXCIpfT5cclxuICAgICAgICB7ZmlsdGVyQ29sdW1uICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHRpdGxlPVwi6YCJ5oup5pi+56S655qE5YiXXCJcclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcclxuICAgICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgICAgIG92ZXJsYXlTdHlsZT17eyBtaW5XaWR0aDogNDEwLCBtYXhXaWR0aDogNDUwIH19XHJcbiAgICAgICAgICAgICAgLy8gZ2V0UG9wdXBDb250YWluZXI9eygpID0+IHRoaXMudGhJY29uUmVmLmN1cnJlbnR9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QXBwc3RvcmVPdXRsaW5lZCBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImFwcC1zdG9yZS1pY29uXCIpfSAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NvcnRDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NpemVDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgPENvbHVtbkhlaWdodE91dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcyxcclxuICAgICAge1xyXG4gICAgICAgIGxvYWRpbmcsXHJcbiAgICAgICAgZGF0YVNvdXJjZSxcclxuICAgICAgICBwYWdpbmF0aW9uID0ge30sXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvcixcclxuICAgICAgICB0YWJsZVNpemUsXHJcbiAgICAgIH0gPSB0aGlzLnN0YXRlLFxyXG4gICAgICBwcm9wcyA9IHV0aWxzLm9taXQoXHJcbiAgICAgICAgdGhpcy5wcm9wcyxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBcInN0b3JlXCIsXHJcbiAgICAgICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgICAgICBcImNvbHVtbnNcIixcclxuICAgICAgICAgIFwicmVzZXRDb2x1bW5cIixcclxuICAgICAgICAgIFwidG9vbGJhclwiLFxyXG4gICAgICAgICAgXCJzb3J0RmllbGRzXCIsXHJcbiAgICAgICAgICBcImZpbHRlckNvbHVtblwiLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcm93S2V5OiBcImlkXCIsXHJcbiAgICAgICAgICBjbGlja0NoYW5nZUNvbG9yOiBmYWxzZSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICBpZiAocHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgcHJvcHMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICBwb3NpdGlvbjogW1wiYm90dG9tUmlnaHRcIl0sXHJcbiAgICAgICAgc2hvd1NpemVDaGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgIHNob3dRdWlja0p1bXBlcjogdHJ1ZSxcclxuICAgICAgICAuLi5wcm9wcy5wYWdpbmF0aW9uLFxyXG4gICAgICAgIC4uLnBhZ2luYXRpb24sXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChwcm9wcy5zaG93VG90YWwgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHByb3BzLnBhZ2luYXRpb24uc2hvd1RvdGFsID0gZnVuY3Rpb24gKHRvdGFsLCBbZnJvbSwgdG9dKSB7XHJcbiAgICAgICAgICAvLyByZXR1cm4gXCLmmL7npLogXCIgKyBmcm9tICsgXCIgLSBcIiArIHRvICsgXCLmnaHvvIzlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgICAgcmV0dXJuIFwi5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm9wcy5vbkNoYW5nZSA9IGZ1bmN0aW9uIChwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICAgIF90aGlzLm9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgfTtcclxuICAgIGlmIChwcm9wcy5jbGlja0NoYW5nZUNvbG9yKSB7XHJcbiAgICAgIGNvbnN0IG9uUm93Rm4gPSBwcm9wcy5vblJvdztcclxuICAgICAgcHJvcHMub25Sb3cgPSBmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xyXG4gICAgICAgIHZhciBjdXN0b20gPSBvblJvd0ZuID8gb25Sb3dGbihyZWNvcmQsIGluZGV4KSA6IHt9O1xyXG4gICAgICAgIGNvbnN0IG9uQ2xpY2tGbiA9IGN1c3RvbS5vbkNsaWNrO1xyXG4gICAgICAgIGN1c3RvbS5vbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGFjdGl2ZUluZGV4OiBpbmRleCwgLy/ojrflj5bngrnlh7vooYznmoTntKLlvJVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdXRpbHMuY2FsbGJhY2sob25DbGlja0ZuLCBfdGhpcywgW2V2ZW50XSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY3VzdG9tO1xyXG4gICAgICB9O1xyXG4gICAgICBwcm9wcy5yb3dDbGFzc05hbWUgPSBmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xyXG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gX3RoaXMuc3RhdGUuYWN0aXZlSW5kZXhcclxuICAgICAgICAgID8gYCR7c3R5bGVzLmNsaWNrUm93U3R5bGV9YFxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0cmVlVXRpbHMuZ2V0U2VhcmNoTWVudURhdGFzKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvclxyXG4gICAgICApO1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YS50cmVlRGF0YXM7XHJcbiAgICAgIHByb3BzLmV4cGFuZGVkUm93S2V5cyA9IGRhdGEub3BlbktleXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICAgIH1cclxuICAgIHByb3BzLnN0b3JlID0gcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9IHByb3BzLnN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIGNvbnN0IHsgZHJhZ2FibGUgfSA9IF90aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZHJhZ2FibGVQcm9wcyA9XHJcbiAgICAgIGRyYWdhYmxlID09PSB0cnVlXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudHM6IEJvZHlSb3dDb21wb25lbnQsXHJcbiAgICAgICAgICAgIG9uUm93OiAocmVjb3JkLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgICByZWNvcmQsXHJcbiAgICAgICAgICAgICAgbW92ZVJvdzogdGhpcy5tb3ZlUm93LFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHt9O1xyXG4gICAgbGV0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGNvbnN0IHJlc2l6ZVByb3BzID1cclxuICAgICAgcmVzaXplQ29sdW1uID09PSB0cnVlID8geyBjb21wb25lbnRzOiB0aGlzLmNvbXBvbmVudHMgfSA6IG51bGw7XHJcblxyXG4gICAgY29uc3QgRGVmYXVsdFRhYmxlID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnRvb2xiYXIgJiYgdGhpcy5yZW5kZXJUb29sQmFyKCl9XHJcbiAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU9XCJjaGlsZE5vZGVzXCJcclxuICAgICAgICAgIGRhdGFTb3VyY2U9e25ld0RhdGFTb3VyY2V9XHJcbiAgICAgICAgICBjb2x1bW5zPXt0aGlzLmdldENvbHVtbnMoKX1cclxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XHJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcIm5zYy10YWJsZVwiXX1cclxuICAgICAgICAgIGxvY2FsZT17eyBlbXB0eVRleHQ6IDxOb0RhdGEgLz4gfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHNpemU9e3RhYmxlU2l6ZX1cclxuICAgICAgICAgIHsuLi5yZXNpemVQcm9wc31cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdfQ==
|
|
921
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdGFibGUvaW5kZXgudHN4Il0sIm5hbWVzIjpbIkFwcHN0b3JlT3V0bGluZWQiLCJDaGVja091dGxpbmVkIiwiQ29sdW1uSGVpZ2h0T3V0bGluZWQiLCJTZWFyY2hPdXRsaW5lZCIsIlNvcnRBc2NlbmRpbmdPdXRsaW5lZCIsIlNvcnREZXNjZW5kaW5nT3V0bGluZWQiLCJpc0VtcHR5T2JqIiwiU3RvcmUiLCJQYWdlU3RvcmUiLCJ1dGlscyIsIlJlYWN0IiwiRG5kUHJvdmlkZXIiLCJCb2R5Um93IiwiRG5kQ29udGV4dFR5cGUiLCJJQm9keVJvd1Byb3BzIiwidHJlZVV0aWxzIiwic3R5bGVzIiwiQm9keVJvd0NvbXBvbmVudCIsIkhUTUw1QmFja2VuZCIsIndpdGhaaExvY2FsZSIsIlJlc2l6YWJsZSIsImdldExlc3MiLCJnZXROb2RlIiwiTm9EYXRhIiwiUmVzaXplYWJsZVRpdGxlIiwicHJvcHMiLCJvblJlc2l6ZSIsIndpZHRoIiwicmVzdFByb3BzIiwiZW5hYmxlVXNlclNlbGVjdEhhY2siLCJOU0NUYWJsZSIsImNyZWF0ZVJlZiIsImRhdGFTb3VyY2UiLCJjb2x1bW5zIiwibG9hZGluZyIsInBhZ2luYXRpb24iLCJhY3RpdmVJbmRleCIsInNlYXJjaFRleHQiLCJmaWVsZE9wdGlvbiIsInNlYXJjaENvbG9yIiwiY29scyIsInNvcnRzIiwiZmlsdGVyUGFyYW1zIiwidGFibGVTaXplIiwic29ydFR5cGUiLCJzb3J0ZXIiLCJzb3J0SW5mbyIsImRlZmF1bHRTb3J0IiwiY2hlY2tDb2x1bW4iLCJkZWZhdWx0Q2hlY2siLCJvbkJlZm9yZUxvYWQiLCJsb2FkIiwiaGVhZGVyIiwiY2VsbCIsImluZGV4IiwiZSIsInNpemUiLCJzdGF0ZSIsIm5leHRDb2x1bW5zIiwic2V0U3RhdGUiLCJkcmFnSW5kZXgiLCJob3ZlckluZGV4IiwiZHJhZyIsInRhcmdldCIsIl90aGlzIiwiZHJhZ05vZGUiLCJyZWNvcmQiLCJ0YXJnZXROb2RlIiwibW92ZUFycmF5IiwiaWRzIiwicGFyZW50Tm9kZSIsImdldENoaWxkTm9kZUlkcyIsInBhcmFtcyIsImlkIiwicGFyZW50SWQiLCJhdHRyaWJ1dGUiLCJtb3ZlUm93Iiwic3RvcmUiLCJyZWxvYWQiLCJsaXN0ZW5lcnMiLCJsaXN0ZW5lcnNQcm9wcyIsInJlc3RTdG9yZSIsInN0b3JlUHJvcHMiLCJtb2RlbCIsImNvbXBvbmVudCIsIm9wdGlvbnMiLCJjYWxsYmFjayIsImRhdGFDaGFuZ2VkIiwiZGF0YSIsIm1vZGVsRGF0YSIsInBhZ2luZyIsImdldFBhZ2luYXRpb24iLCJvbkVycm9yTG9hZCIsImVyciIsInJlc3BvbnNlIiwiYXV0b0xvYWQiLCJPYmplY3QiLCJhc3NpZ24iLCJjdXJyZW50IiwicmVzaXplQ29sdW1uIiwic2V0RGF0YSIsInByZXZQcm9wcyIsInByZVN0YXRlIiwicmVzZXRDb2x1bW4iLCJuZXdDb2xzIiwiY29sc3MiLCJtYXAiLCJjb2wiLCJ0ZW1wIiwib25IZWFkZXJDZWxsIiwiY29sdW1uIiwiaGFuZGxlUmVzaXplIiwicHVzaCIsImZpbHRlcnMiLCJleHRyYSIsImF1dG9PbkNoYW5nZSIsImF1dG9Tb3J0IiwiYXV0b1BhZ2luYXRpb24iLCJvbkNoYW5nZSIsImlzTXVsdGlwbGUiLCJBcnJheSIsImlzQXJyYXkiLCJoYW5kbGVQYWdpbmF0aW9uIiwiZ2V0UGFnaW5hdGlvbkJ5U3RvcmUiLCJwIiwiY3VycmVudEtleSIsInBhZ2VTaXplS2V5IiwicGFnZVNpemUiLCJhc2NQYXJhbXMiLCJnZXRTb3J0UGFyYW0iLCJvbkNoYW5nZUZuIiwiZ2V0TW9kZWwiLCJ2YWwiLCJjaGVja2VkVmFsdWUiLCJsZW5ndGgiLCJ3YXJuaW5nIiwiZmlsdGVyQ29sdW1ucyIsIm5ld0NvbCIsImluY2x1ZGVzIiwiZGF0YUluZGV4IiwiaW5pdFNob3ciLCJzb3J0U3RhdGUiLCJvcmRlckl0ZW1zIiwiZmllbGQiLCJhc2MiLCJvcmRlciIsImZvckVhY2giLCJ2IiwiSlNPTiIsInN0cmluZ2lmeSIsInNvcnRGaWVsZHMiLCJkZWZhdWx0U2hvd0NvbHMiLCJmaWx0ZXIiLCJlbGxpcHNpcyIsInJlbmRlciIsInNob3dUaXRsZSIsInRleHQiLCJpbmRleE9mIiwic29ydE9yZGVyIiwibXVsdGlwbGUiLCJpdGVtIiwiZmlsdGVyUHJvcHMiLCJvYmoiLCJ0eXBlIiwic2VhcmNoS2V5IiwiRGl2IiwidGl0bGUiLCJwbGFjZWhvbGRlciIsInJlZiIsInRhYmxlU2VhcmNoUmVmIiwiZmlsdGVyRHJvcGRvd24iLCJzZXRTZWxlY3RlZEtleXMiLCJzZWxlY3RlZEtleXMiLCJjb25maXJtIiwiY2xlYXJGaWx0ZXJzIiwibmV3RmlsdGVyUGFyYW1zIiwia2V5IiwiZ2V0VmFsdWUiLCJzb3J0UGFyYW0iLCJmaWx0ZXJJY29uIiwiZmlsdGVyQ29sdW1uIiwiY29sTGlzdHMiLCJzaXplSXRlbSIsInNvcnRJdGVtIiwic29ydENvbnRlbnQiLCJjdXJzb3IiLCJjb2xvciIsInNpemVDb250ZW50IiwiY29udGVudCIsImJpbmQiLCJsYWJlbCIsInZhbHVlIiwiZGlzYWJsZWQiLCJmb250U2l6ZSIsIm1pbldpZHRoIiwibWF4V2lkdGgiLCJtYXJnaW5SaWdodCIsIm9taXQiLCJyb3dLZXkiLCJjbGlja0NoYW5nZUNvbG9yIiwicG9zaXRpb24iLCJzaG93U2l6ZUNoYW5nZXIiLCJzaG93UXVpY2tKdW1wZXIiLCJzaG93VG90YWwiLCJ0b3RhbCIsImZyb20iLCJ0byIsIm9uUm93Rm4iLCJvblJvdyIsImN1c3RvbSIsIm9uQ2xpY2tGbiIsIm9uQ2xpY2siLCJldmVudCIsInJvd0NsYXNzTmFtZSIsImNsaWNrUm93U3R5bGUiLCJuZXdEYXRhU291cmNlIiwiZ2V0U2VhcmNoTWVudURhdGFzIiwidHJlZURhdGFzIiwiZXhwYW5kZWRSb3dLZXlzIiwib3BlbktleXMiLCJkcmFnYWJsZSIsImRyYWdhYmxlUHJvcHMiLCJjb21wb25lbnRzIiwicmVzaXplUHJvcHMiLCJEZWZhdWx0VGFibGUiLCJ0b29sYmFyIiwicmVuZGVyVG9vbEJhciIsImdldENvbHVtbnMiLCJlbXB0eVRleHQiLCJ4IiwiQ29tcG9uZW50IiwiZHJhZ1VybCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FDRUEsZ0JBREYsRUFFRUMsYUFGRixFQUdFQyxvQkFIRixFQUlFQyxjQUpGLEVBS0VDLHFCQUxGLEVBTUVDLHNCQU5GLFFBT08sbUJBUFA7QUFRQSxTQUFTQyxVQUFULFFBQTJCLG1CQUEzQjtBQUNBLE9BQU9DLEtBQVAsSUFBZ0JDLFNBQWhCLFFBQTZDLGFBQTdDO0FBQ0EsU0FBU0MsS0FBVCxRQUFzQix1QkFBdEI7QUFjQSxPQUFPLEtBQUtDLEtBQVosTUFBdUIsT0FBdkI7QUFDQSxTQUFTQyxXQUFULFFBQTRCLFdBQTVCO0FBQ0EsT0FBT0MsT0FBUCxJQUFrQkMsY0FBbEIsRUFBa0NDLGFBQWxDLFFBQXVELG1CQUF2RDtBQUNBLE9BQU9DLFNBQVAsTUFBc0IsaUJBQXRCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixxQkFBbkI7QUFDQSxJQUFRQyxnQkFBUixHQUEyQ0wsT0FBM0MsQ0FBUUssZ0JBQVI7QUFBQSxJQUEwQkMsWUFBMUIsR0FBMkNOLE9BQTNDLENBQTBCTSxZQUExQjtBQUNBLE9BQU9DLFlBQVAsTUFBeUIsd0JBQXpCO0FBQ0EsU0FBU0MsU0FBVCxRQUEwQixpQkFBMUI7QUFDQSxPQUFPLHNCQUFQO0FBQ0EsU0FBU0MsT0FBVCxFQUFrQkMsT0FBbEIsUUFBaUMsYUFBakM7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLDBCQUFuQjtBQWtDQSxTQUFTVixjQUFULEVBQXlCQyxhQUF6Qjs7QUFFQSxJQUFNVSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUNDLEtBQUQsRUFBZ0I7QUFDdEMsTUFBUUMsUUFBUixHQUEwQ0QsS0FBMUMsQ0FBUUMsUUFB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Y0FBYyxFQUFFLElBTEk7QUFNcEJELEVBQUFBLFFBQVEsRUFBRSxJQU5VO0FBT3BCRCxFQUFBQSxZQUFZLEVBQUUsSUFQTTtBQVFwQmhCLEVBQUFBLFlBQVksRUFBRSxJQVJNO0FBU3BCOEgsRUFBQUEsT0FBTyxFQUFFO0FBVFcsQzs7QUFrdEJ4QixlQUFlOU0sWUFBWSxDQUFDVyxRQUFELENBQTNCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQERlc2NyaXB0dGlvbjpcclxuICogQHZlcnNpb246XHJcbiAqIEBBdXRob3I6IHJ4emh1XHJcbiAqIEBEYXRlOiAyMDIxLTAzLTIzIDA4OjQ2OjIwXHJcbiAqIEBMYXN0RWRpdG9yczogcnh6aHVcclxuICogQExhc3RFZGl0VGltZTogMjAyMS0wMy0yMyAxMDozMDo0MlxyXG4gKi9cclxuaW1wb3J0IHtcclxuICBBcHBzdG9yZU91dGxpbmVkLFxyXG4gIENoZWNrT3V0bGluZWQsXHJcbiAgQ29sdW1uSGVpZ2h0T3V0bGluZWQsXHJcbiAgU2VhcmNoT3V0bGluZWQsXHJcbiAgU29ydEFzY2VuZGluZ091dGxpbmVkLFxyXG4gIFNvcnREZXNjZW5kaW5nT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGlzRW1wdHlPYmogfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBCdXR0b24sXHJcbiAgQ2hlY2tib3gsXHJcbiAgQ2hlY2tib3hPcHRpb25UeXBlLFxyXG4gIE1lbnUsXHJcbiAgbWVzc2FnZSxcclxuICBQb3BvdmVyLFxyXG4gIFNwYWNlLFxyXG4gIFRhYmxlLFxyXG4gIFRhYmxlUHJvcHMsXHJcbiAgVG9vbHRpcCxcclxufSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgeyBDb2x1bW5UeXBlLCBUYWJsZVBhZ2luYXRpb25Db25maWcgfSBmcm9tIFwiYW50ZC9saWIvdGFibGVcIjtcclxuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IERuZFByb3ZpZGVyIH0gZnJvbSBcInJlYWN0LWRuZFwiO1xyXG5pbXBvcnQgQm9keVJvdywgeyBEbmRDb250ZXh0VHlwZSwgSUJvZHlSb3dQcm9wcyB9IGZyb20gXCIuLi9jb21tb24vQm9keVJvd1wiO1xyXG5pbXBvcnQgdHJlZVV0aWxzIGZyb20gXCIuLi8uLi90cmVlVXRpbHNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5jb25zdCB7IEJvZHlSb3dDb21wb25lbnQsIEhUTUw1QmFja2VuZCB9ID0gQm9keVJvdztcclxuaW1wb3J0IHdpdGhaaExvY2FsZSBmcm9tIFwiLi4vY29tbW9uL3dpdGhaaExvY2FsZVwiO1xyXG5pbXBvcnQgeyBSZXNpemFibGUgfSBmcm9tIFwicmVhY3QtcmVzaXphYmxlXCI7XHJcbmltcG9ydCBcIi4vcmVzaXplLm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IE5vRGF0YSBmcm9tIFwiLi4vLi4vYmFzZS9jb21tb24vTm9EYXRhXCI7XHJcblxyXG5pbnRlcmZhY2UgSURyYWdQYXJhbXMge1xyXG4gIGlkOiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgaWRzOiBBcnJheTxzdHJpbmcgfCBudW1iZXI+O1xyXG4gIHBhcmVudElkOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuLy8gaW50ZXJmYWNlIFN0b3JlUHJvcHMge31cclxuXHJcbmV4cG9ydCB0eXBlIFN0b3JlVHlwZSA9IFwiUGFnZVN0b3JlXCIgfCBcIlRyZWVTdG9yZVwiIHwgXCJCYXNlU3RvcmVcIjtcclxuXHJcbmludGVyZmFjZSBOU0NUYWJsZVBhZ2luYXRpb24gZXh0ZW5kcyBUYWJsZVBhZ2luYXRpb25Db25maWcge1xyXG4gIHRvdGFsS2V5Pzogc3RyaW5nO1xyXG4gIHBhZ2VTaXplS2V5Pzogc3RyaW5nO1xyXG4gIGN1cnJlbnRLZXk/OiBzdHJpbmc7XHJcbn1cclxuXHJcbmludGVyZmFjZSBOU0NUYWJsZVByb3BzIGV4dGVuZHMgVGFibGVQcm9wczxhbnk+IHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgc2hvd1RvdGFsPzogYm9vbGVhbjsgLy8g5piv5ZCm5pi+56S65oC75p2h5pWw5L+h5oGv77yM6buY6K6kdHJ1ZVxyXG4gIGRyYWdhYmxlPzogYm9vbGVhbjsgLy8g5piv5ZCm5Y+v5ouW5YqoLCDpu5jorqRmYWxzZVxyXG4gIGZpbHRlckNvbHVtbj86IGJvb2xlYW47IC8vIOaYr+WQpuaUr+aMgei/h+a7pOaYvuekuuihqOagvOWIlywg6buY6K6kdHJ1ZVxyXG4gIG1vdmVSb3c/OiAocGFyYW1zOiBJRHJhZ1BhcmFtcykgPT4gdm9pZDsgLy8g5ouW5ou95a6M5oiQ5ZCO55qE5Zue6LCDXHJcbiAgZHJhZ1VybD86IHN0cmluZzsgLy8g5L+d5a2Y5ouW5ou95o6S5bqP55qE5o6l5Y+jXHJcbiAgcGFnaW5hdGlvbj86IGZhbHNlIHwgTlNDVGFibGVQYWdpbmF0aW9uO1xyXG4gIGF1dG9QYWdpbmF0aW9uPzogYm9vbGVhbjsgLy8g57uE5Lu25piv5ZCm6Ieq5Yqo5aSE55CG5YiG6aG1XHJcbiAgYXV0b1NvcnQ/OiBib29sZWFuOyAvL+e7hOS7tuaYr+WQpuiHquWKqOWkhOeQhuaOkuW6j1xyXG4gIGF1dG9PbkNoYW5nZT86IGJvb2xlYW47IC8vIOe7hOS7tuaYr+WQpuiHquWKqG9uQ2hhbmdlLCBmYWxzZeWImeS4jeWBmuS7u+S9leWkhOeQhuWFqOmDqOS6pOe7meiwg+eUqOaWuVxyXG4gIHJlc2l6ZUNvbHVtbj86IGJvb2xlYW47XHJcbiAgc29ydEZpZWxkcz86IEFycmF5PHN0cmluZz47IC8v6ZyA6KaB5o6S5bqP55qE5a2X5q61SW5kZXhcclxuICB0b29sYmFyPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSU5TQ1RhYmxlUHJvcHMgPSB0eXBlb2YgTlNDVGFibGUuZGVmYXVsdFByb3BzICYgTlNDVGFibGVQcm9wcztcclxuZXhwb3J0IHsgRG5kQ29udGV4dFR5cGUsIElCb2R5Um93UHJvcHMgfTtcclxuXHJcbmNvbnN0IFJlc2l6ZWFibGVUaXRsZSA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgY29uc3QgeyBvblJlc2l6ZSwgd2lkdGgsIC4uLnJlc3RQcm9wcyB9ID0gcHJvcHM7XHJcbiAgcmV0dXJuIChcclxuICAgIDxSZXNpemFibGVcclxuICAgICAgd2lkdGg9e3dpZHRoIHx8IDE1MH1cclxuICAgICAgaGVpZ2h0PXswfVxyXG4gICAgICBvblJlc2l6ZT17b25SZXNpemV9XHJcbiAgICAgIGRyYWdnYWJsZU9wdHM9e3sgZW5hYmxlVXNlclNlbGVjdEhhY2s6IGZhbHNlIH19XHJcbiAgICA+XHJcbiAgICAgIDx0aCB7Li4ucmVzdFByb3BzfSAvPlxyXG4gICAgPC9SZXNpemFibGU+XHJcbiAgKTtcclxufTtcclxuY2xhc3MgTlNDVGFibGUgZXh0ZW5kcyBSZWFjdC5Db21wb25lbnQ8SU5TQ1RhYmxlUHJvcHM+IHtcclxuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xyXG4gICAgZHJhZ2FibGU6IGZhbHNlLFxyXG4gICAgc2hvd1RvdGFsOiB0cnVlLFxyXG4gICAgZmlsdGVyQ29sdW1uOiB0cnVlLFxyXG4gICAgZHJhZ1VybDogXCJcIixcclxuICAgIGF1dG9QYWdpbmF0aW9uOiB0cnVlLFxyXG4gICAgYXV0b1NvcnQ6IHRydWUsXHJcbiAgICBhdXRvT25DaGFuZ2U6IHRydWUsXHJcbiAgICByZXNpemVDb2x1bW46IHRydWUsXHJcbiAgICB0b29sYmFyOiB0cnVlLFxyXG4gIH07XHJcblxyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICB0aEljb25SZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgdGFibGVTZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgZGF0YVNvdXJjZTogW10sXHJcbiAgICBjb2x1bW5zOiBbXSxcclxuICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgcGFnaW5hdGlvbjoge30sXHJcbiAgICBhY3RpdmVJbmRleDogLTEsXHJcbiAgICAvL+aQnOe0ouaWh+acrFxyXG4gICAgc2VhcmNoVGV4dDogbnVsbCxcclxuICAgIGZpZWxkT3B0aW9uOiBudWxsLFxyXG4gICAgc2VhcmNoQ29sb3I6IG51bGwsXHJcbiAgICBjb2xzOiBbXSxcclxuICAgIHNvcnRzOiBbXSxcclxuICAgIGZpbHRlclBhcmFtczoge30sXHJcbiAgICB0YWJsZVNpemU6IFwibWlkZGxlXCIsXHJcbiAgICBzb3J0VHlwZTogXCJzaW5nbGVcIixcclxuICAgIHNvcnRlcjogW10sIC8v6K6w5b2V5b2T5YmN5o6S5bqP5a2X5q61XHJcbiAgICBzb3J0SW5mbzoge30sXHJcbiAgICBkZWZhdWx0U29ydDogdHJ1ZSxcclxuICAgIGNoZWNrQ29sdW1uOiBbXSxcclxuICAgIGRlZmF1bHRDaGVjazogdHJ1ZSxcclxuICB9O1xyXG5cclxuICBsaXN0ZW5lcnMgPSB7XHJcbiAgICBvbkJlZm9yZUxvYWQ6IG51bGwsXHJcbiAgICBsb2FkOiBudWxsLFxyXG4gIH07XHJcblxyXG4gIGNvbXBvbmVudHMgPSB7XHJcbiAgICBoZWFkZXI6IHtcclxuICAgICAgY2VsbDogUmVzaXplYWJsZVRpdGxlLFxyXG4gICAgfSxcclxuICB9O1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgaWYgKHByb3BzLnN0b3JlIGluc3RhbmNlb2YgU3RvcmUpIHtcclxuICAgICAgdGhpcy5zdG9yZSA9IHByb3BzLnN0b3JlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgY29uc3QgeyBsaXN0ZW5lcnM6IGxpc3RlbmVyc1Byb3BzID0ge30sIC4uLnJlc3RTdG9yZSB9ID1cclxuICAgICAgICBwcm9wcy5zdG9yZSB8fCB7fTtcclxuICAgICAgY29uc3Qgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogKHN0b3JlLCBvcHRpb25zKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQcm9wcy5vbkJlZm9yZUxvYWQsIHRoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGRhdGFDaGFuZ2VkOiAoZGF0YSwgbW9kZWxEYXRhLCBzdG9yZSkgPT4ge1xyXG4gICAgICAgICAgICBsZXQgcGFnaW5nID0gISh0aGlzLnByb3BzLnBhZ2luYXRpb24gPT09IGZhbHNlKTtcclxuICAgICAgICAgICAgaWYgKHBhZ2luZyAmJiAhdGhpcy5wcm9wcy5kYXRhU291cmNlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBkYXRhU291cmNlOiBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiBzdG9yZS5nZXRQYWdpbmF0aW9uKCksXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIGFjdGl2ZUluZGV4OiAtMSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhLCBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMuZGF0YUNoYW5nZWQsIHRoaXMsIFtcclxuICAgICAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgICAgIG1vZGVsRGF0YSxcclxuICAgICAgICAgICAgICBzdG9yZSxcclxuICAgICAgICAgICAgICBwYWdpbmcsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSA9PiB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1Byb3BzLmxvYWQsIHRoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25FcnJvckxvYWQ6IChlcnIsIHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUHJvcHMub25FcnJvckxvYWQsIHRoaXMsIFtlcnIsIHJlc3BvbnNlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZGF0YTogcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgID8gcmVzdFN0b3JlLmRhdGFcclxuICAgICAgICAgIDogcHJvcHMuZGF0YVNvdXJjZVxyXG4gICAgICAgICAgPyBwcm9wcy5kYXRhU291cmNlXHJcbiAgICAgICAgICA6IG51bGwsXHJcbiAgICAgICAgLi4ucmVzdFN0b3JlLFxyXG4gICAgICAgIGF1dG9Mb2FkOiByZXN0U3RvcmUuYXV0b0xvYWQgPT09IGZhbHNlID8gZmFsc2UgOiB0cnVlLFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFBhZ2VTdG9yZShcclxuICAgICAgICBPYmplY3QuYXNzaWduKHt9LCBzdG9yZVByb3BzLCB7XHJcbiAgICAgICAgICBwYWdpbmF0aW9uOiB7IGN1cnJlbnQ6IDEsIC4uLnRoaXMucHJvcHMucGFnaW5hdGlvbiB9LFxyXG4gICAgICAgIH0pXHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBoYW5kbGVSZXNpemUgPVxyXG4gICAgKGluZGV4OiBhbnkpID0+XHJcbiAgICAoZTogYW55LCB7IHNpemUgfTogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY29scyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgbmV4dENvbHVtbnMgPSBbLi4uY29sc107XHJcbiAgICAgIG5leHRDb2x1bW5zW2luZGV4XSA9IHtcclxuICAgICAgICAuLi5uZXh0Q29sdW1uc1tpbmRleF0sXHJcbiAgICAgICAgd2lkdGg6IHNpemUud2lkdGgsXHJcbiAgICAgIH07XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGNvbHM6IG5leHRDb2x1bW5zLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sdW1uczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHsgY29sczogWy4uLnRoaXMucHJvcHMuY29sdW1uc10gfSk7XHJcbiAgICB9XHJcbiAgICBjb25zdCBzdG9yZSA9IHRoaXMucHJvcHMuc3RvcmU7XHJcbiAgICBpZiAoc3RvcmUgJiYgc3RvcmUuZGF0YSkge1xyXG4gICAgICB0aGlzLnN0b3JlLnNldERhdGEoc3RvcmUuZGF0YSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICBpZiAodGhpcy5wcm9wcy5jb2x1bW5zICE9PSBwcmV2UHJvcHMuY29sdW1ucykge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBjb2x1bW5zOiB0aGlzLnByb3BzLmNvbHVtbnMgfSk7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChwcmVTdGF0ZS5jb2xzICE9PSB0aGlzLnN0YXRlLmNvbHMpIHtcclxuICAgICAgICB0aGlzLnJlc2V0Q29sdW1uKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlc2V0Q29sdW1uKCkge1xyXG4gICAgY29uc3QgeyBjb2xzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgbmV3Q29sczogYW55ID0gW107XHJcbiAgICBsZXQgY29sc3MgPSBjb2xzIHx8IFtdO1xyXG4gICAgY29sc3MubWFwKChjb2w6IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAuLi5jb2wsXHJcbiAgICAgICAgb25IZWFkZXJDZWxsOiAoY29sdW1uOiB7IHdpZHRoOiBhbnkgfSkgPT4gKHtcclxuICAgICAgICAgIHdpZHRoOiBjb2x1bW4ud2lkdGgsXHJcbiAgICAgICAgICBvblJlc2l6ZTogdGhpcy5oYW5kbGVSZXNpemUoaW5kZXgpLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9O1xyXG4gICAgICBuZXdDb2xzLnB1c2godGVtcCk7XHJcbiAgICB9KTtcclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBjb2x1bW5zOiBuZXdDb2xzLFxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmuIXpmaTpgInkuK3popzoibJcclxuICAgKi9cclxuICBjbGVhclNlbGVjdENvbG9yKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGFjdGl2ZUluZGV4OiAtMSB9KTtcclxuICAgIHJldHVybiB0aGlzO1xyXG4gIH1cclxuXHJcbiAgZ2V0UGFnaW5hdGlvbkJ5U3RvcmUoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5zdG9yZS5nZXRQYWdpbmF0aW9uKCk7XHJcbiAgfVxyXG5cclxuICBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICBjb25zdCB7IGF1dG9PbkNoYW5nZSwgYXV0b1NvcnQsIGF1dG9QYWdpbmF0aW9uLCBvbkNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuXHJcbiAgICBjb25zdCB7IGZpbHRlclBhcmFtcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGlzTXVsdGlwbGUgPSBBcnJheS5pc0FycmF5KHNvcnRlcik7XHJcbiAgICBpZiAoYXV0b09uQ2hhbmdlID09PSBmYWxzZSkge1xyXG4gICAgICBvbkNoYW5nZSAmJiBvbkNoYW5nZShwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgaGFuZGxlUGFnaW5hdGlvbiA9ICgpID0+IHtcclxuICAgICAgbGV0IHBhcmFtcyA9IHt9IGFzIHtcclxuICAgICAgICBzaXplPzogc3RyaW5nO1xyXG4gICAgICAgIHBhZ2VTaXplPzogc3RyaW5nO1xyXG4gICAgICAgIGFzY3M/OiBzdHJpbmc7XHJcbiAgICAgICAgZGVzY3M/OiBzdHJpbmc7XHJcbiAgICAgICAgW3Byb3BOYW1lOiBzdHJpbmddOiBzdHJpbmc7XHJcbiAgICAgIH07XHJcblxyXG4gICAgICBjb25zdCBwYWdpbmcgPSB0aGlzLmdldFBhZ2luYXRpb25CeVN0b3JlKCkgfHwge307XHJcblxyXG4gICAgICBpZiAoIWlzRW1wdHlPYmoocGFnaW5hdGlvbikpIHtcclxuICAgICAgICBjb25zdCBwID0ge1xyXG4gICAgICAgICAgW3BhZ2luZy5jdXJyZW50S2V5IHx8IFwiY3VycmVudFwiXTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgW3BhZ2luZy5wYWdlU2l6ZUtleSB8fCBcInNpemVcIl06IHBhZ2luYXRpb24ucGFnZVNpemUsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBPYmplY3QuYXNzaWduKHBhcmFtcywgcCk7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGFzY1BhcmFtcyA9IHRoaXMuZ2V0U29ydFBhcmFtKHNvcnRlciwgdHJ1ZSk7XHJcbiAgICAgIGlmIChpc011bHRpcGxlKSB7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlciB9KTtcclxuICAgICAgfSBlbHNlIGlmICghaXNNdWx0aXBsZSAmJiAhaXNFbXB0eU9iaihzb3J0ZXIpKSB7XHJcbiAgICAgICAgc29ydGVyLmNvbHVtbiAmJlxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IHNvcnRlcjogW3NvcnRlcl0sIGRlZmF1bHRTb3J0OiBmYWxzZSB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgc29ydGVyOiBbXSB9KTtcclxuICAgICAgfVxyXG4gICAgICBwYXJhbXMgPSB7IC4uLmZpbHRlclBhcmFtcywgLi4ucGFyYW1zLCAuLi5hc2NQYXJhbXMgfTtcclxuICAgICAgYXV0b1NvcnQgJiYgdGhpcy5zdG9yZS5yZWxvYWQoeyBwYXJhbXMgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IG9uQ2hhbmdlRm4gPSB0aGlzLnByb3BzLm9uQ2hhbmdlO1xyXG4gICAgLy8g55So5oi35Lyg5LqGb25DaGFuZ2Xkv53nlZnnlKjmiLfoh6rkuLvlpITnkIbooajmoLzlj5jljJbnmoTmnYPliptcclxuICAgIGlmIChvbkNoYW5nZUZuKSB7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hhbmdlRm4sIHRoaXMsIFtwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhXSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGF1dG9QYWdpbmF0aW9uICYmIGhhbmRsZVBhZ2luYXRpb24oKTtcclxuICB9XHJcblxyXG4gIGdldFN0b3JlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuc3RvcmU7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDojrflj5bmlbDmja7mqKHlnovlr7nosaFcclxuICAgKi9cclxuICBnZXRNb2RlbCgpIHtcclxuICAgIHJldHVybiB0aGlzLnN0b3JlLmdldE1vZGVsKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDoj5zljZXmkJzntKLov4fmu6TmmL7npLpcclxuICAgKiBAcGFyYW0ge1N0cmluZ30gdmFsXHJcbiAgICovXHJcbiAgaGFuZGxlU2VhcmNoKHZhbCwgZmllbGRPcHRpb24sIHNlYXJjaENvbG9yKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgc2VhcmNoVGV4dDogdmFsLFxyXG4gICAgICBmaWVsZE9wdGlvbjogZmllbGRPcHRpb24sXHJcbiAgICAgIHNlYXJjaENvbG9yOiBzZWFyY2hDb2xvcixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qih5Z2X5YiX6KGo56e75Yqo5o6S5bqPXHJcbiAgICovXHJcbiAgbW92ZVJvdyA9IChkcmFnSW5kZXgsIGhvdmVySW5kZXgsIGRyYWcsIHRhcmdldCkgPT4ge1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgbGV0IGRyYWdOb2RlID0gZHJhZy5yZWNvcmQ7XHJcbiAgICBsZXQgdGFyZ2V0Tm9kZSA9IHRhcmdldC5yZWNvcmQ7XHJcbiAgICBkcmFnTm9kZS5tb3ZlQXJyYXkoZHJhZ05vZGUsIHRhcmdldE5vZGUpO1xyXG4gICAgbGV0IGlkcyA9IGRyYWdOb2RlLnBhcmVudE5vZGUuZ2V0Q2hpbGROb2RlSWRzKCk7XHJcbiAgICBsZXQgcGFyYW1zID0ge1xyXG4gICAgICBpZDogZHJhZ05vZGUuaWQsXHJcbiAgICAgIHBhcmVudElkOiBkcmFnTm9kZS5hdHRyaWJ1dGUucGFyZW50SWQsXHJcbiAgICAgIGlkczogaWRzLFxyXG4gICAgfTtcclxuXHJcbiAgICBpZiAodGhpcy5wcm9wcy5tb3ZlUm93KSB7XHJcbiAgICAgIHRoaXMucHJvcHMubW92ZVJvdyhwYXJhbXMpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zdG9yZS5yZWxvYWQoKTtcclxuICAgIH1cclxuICB9O1xyXG5cclxuICBmaWx0ZXJDb2x1bW4oY2hlY2tlZFZhbHVlKSB7XHJcbiAgICBpZiAoY2hlY2tlZFZhbHVlLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuiHs+WwkeaYvuekuuS4gOWIl++8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZmlsdGVyQ29sdW1ucyA9IHRoaXMucHJvcHMuY29sdW1ucy5tYXAoKGNvbDogQ29sdW1uVHlwZTx7fT4pID0+IHtcclxuICAgICAgY29uc3QgbmV3Q29sID0geyAuLi5jb2wgfSBhcyBDb2x1bW5UeXBlPHt9PiAmIHsgaW5pdFNob3c6IGJvb2xlYW4gfTtcclxuICAgICAgaWYgKGNoZWNrZWRWYWx1ZS5pbmNsdWRlcyhjb2wuZGF0YUluZGV4KSkge1xyXG4gICAgICAgIG5ld0NvbC5pbml0U2hvdyA9IHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbmV3Q29sLmluaXRTaG93ID0gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIG5ld0NvbDtcclxuICAgIH0pO1xyXG4gICAgY29uc3QgeyByZXNpemVDb2x1bW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoIXJlc2l6ZUNvbHVtbikge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjb2x1bW5zOiBmaWx0ZXJDb2x1bW5zLFxyXG4gICAgICAgIGNoZWNrQ29sdW1uOiBjaGVja2VkVmFsdWUsXHJcbiAgICAgICAgZGVmYXVsdENoZWNrOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBjb2xzOiBmaWx0ZXJDb2x1bW5zLFxyXG4gICAgICAgIGNoZWNrQ29sdW1uOiBjaGVja2VkVmFsdWUsXHJcbiAgICAgICAgZGVmYXVsdENoZWNrOiBmYWxzZSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGdldFNvcnRQYXJhbShzb3J0ZXIsIHNvcnRTdGF0ZSA9IGZhbHNlKSB7XHJcbiAgICBjb25zdCBpc011bHRpcGxlID0gQXJyYXkuaXNBcnJheShzb3J0ZXIpO1xyXG4gICAgbGV0IHNvcnRJbmZvID0ge307XHJcbiAgICBsZXQgb3JkZXJJdGVtcyA9IFtdO1xyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHNvcnRlcikgJiYgIWlzTXVsdGlwbGUpIHtcclxuICAgICAgb3JkZXJJdGVtcyA9IFtcclxuICAgICAgICB7XHJcbiAgICAgICAgICBjb2x1bW46IHNvcnRlci5jb2x1bW4uZmllbGQgfHwgc29ydGVyLmNvbHVtbi5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBhc2M6IHNvcnRlci5vcmRlciA9PSBcImFzY2VuZFwiLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF07XHJcbiAgICAgIGlmIChzb3J0ZXIuY29sdW1uKSBzb3J0SW5mb1tzb3J0ZXIuY29sdW1uLmRhdGFJbmRleF0gPSBzb3J0ZXIub3JkZXI7XHJcbiAgICB9IGVsc2UgaWYgKGlzTXVsdGlwbGUpIHtcclxuICAgICAgc29ydGVyLmZvckVhY2goKHYpID0+IHtcclxuICAgICAgICBzb3J0SW5mb1t2LmNvbHVtbi5kYXRhSW5kZXhdID0gdi5vcmRlcjtcclxuICAgICAgICBsZXQgZmllbGQgPSB2LmNvbHVtbi5maWVsZCB8fCB2LmNvbHVtbi5kYXRhSW5kZXg7XHJcbiAgICAgICAgb3JkZXJJdGVtcy5wdXNoKHtcclxuICAgICAgICAgIGNvbHVtbjogZmllbGQsXHJcbiAgICAgICAgICBhc2M6IHYub3JkZXIgPT0gXCJhc2NlbmRcIixcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBpZiAoc29ydFN0YXRlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHNvcnRJbmZvOiBzb3J0SW5mbyxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4geyBvcmRlckl0ZW1zOiBKU09OLnN0cmluZ2lmeShvcmRlckl0ZW1zKSB9O1xyXG4gIH1cclxuICBnZXRDb2x1bW5zKCkge1xyXG4gICAgY29uc3QgeyBjb2x1bW5zLCBzb3J0VHlwZSwgc29ydEluZm8gfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNvcnRGaWVsZHMgPSBbXSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGRlZmF1bHRTaG93Q29scyA9IGNvbHVtbnMuZmlsdGVyKChjb2xzKSA9PiBjb2xzLmluaXRTaG93ICE9PSBmYWxzZSk7XHJcbiAgICBjb25zdCBjb2xzID0gZGVmYXVsdFNob3dDb2xzLm1hcCgoY29sLCBpbmRleCkgPT4ge1xyXG4gICAgICBpZiAoY29sLmVsbGlwc2lzICYmICFjb2wucmVuZGVyKSB7XHJcbiAgICAgICAgY29sLmVsbGlwc2lzID0ge1xyXG4gICAgICAgICAgc2hvd1RpdGxlOiBmYWxzZSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbC5yZW5kZXIgPSAodGV4dCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFRvb2x0aXAgcGxhY2VtZW50PVwidG9wTGVmdFwiIHRpdGxlPXt0ZXh0fT5cclxuICAgICAgICAgICAgICB7dGV4dH1cclxuICAgICAgICAgICAgPC9Ub29sdGlwPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoc29ydEZpZWxkcy5pbmRleE9mKGNvbC5kYXRhSW5kZXgpID4gLTEpIHtcclxuICAgICAgICBpZiAoc29ydFR5cGUgPT0gXCJzaW5nbGVcIikge1xyXG4gICAgICAgICAgY29sLnNvcnRlciA9IHRydWU7XHJcbiAgICAgICAgICBjb2wuc29ydE9yZGVyID0gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgPyBzb3J0SW5mb1tjb2wuZGF0YUluZGV4XVxyXG4gICAgICAgICAgICA6IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIGlmIChzb3J0VHlwZSA9PSBcIm11bHRpcGxlXCIpIHtcclxuICAgICAgICAgIGNvbC5zb3J0ZXIgPSB7IG11bHRpcGxlOiBpbmRleCB9O1xyXG4gICAgICAgICAgY29sLnNvcnRPcmRlciA9IHNvcnRJbmZvW2NvbC5kYXRhSW5kZXhdXHJcbiAgICAgICAgICAgID8gc29ydEluZm9bY29sLmRhdGFJbmRleF1cclxuICAgICAgICAgICAgOiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gY29sO1xyXG4gICAgfSk7XHJcbiAgICBjb2xzLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgaWYgKCFpc0VtcHR5T2JqKGl0ZW0uZmlsdGVyUHJvcHMpKSB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGNvbnN0IHsgdHlwZSwgcHJvcHMsIHNlYXJjaEtleSB9ID0gaXRlbS5maWx0ZXJQcm9wcztcclxuICAgICAgICBsZXQgRGl2ID0gbnVsbDtcclxuICAgICAgICBsZXQgdGV4dCA9IGl0ZW0udGl0bGU7XHJcbiAgICAgICAgRGl2ID0gZ2V0Tm9kZSh0eXBlLCB7XHJcbiAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgIHBsYWNlaG9sZGVyOiBg5pCc57SiJHt0ZXh0fWAsXHJcbiAgICAgICAgICByZWY6IHRoaXMudGFibGVTZWFyY2hSZWYsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgb2JqID0ge1xyXG4gICAgICAgICAgZmlsdGVyRHJvcGRvd246ICh7XHJcbiAgICAgICAgICAgIHNldFNlbGVjdGVkS2V5cyxcclxuICAgICAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICAgICAgICBjb25maXJtLFxyXG4gICAgICAgICAgICBjbGVhckZpbHRlcnMsXHJcbiAgICAgICAgICB9KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwic3BhY2VcIil9PntEaXZ9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8U3BhY2U+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwicHJpbWFyeVwiXHJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uZmlybSgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBmaWx0ZXJQYXJhbXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICBsZXQgbmV3RmlsdGVyUGFyYW1zID0geyAuLi5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBrZXkgPSBpdGVtLmZpZWxkIHx8IGl0ZW0uZGF0YUluZGV4O1xyXG4gICAgICAgICAgICAgICAgICAgICAgbmV3RmlsdGVyUGFyYW1zW2tleV0gPVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlU2VhcmNoUmVmLmN1cnJlbnQ/LmdldFZhbHVlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7IC4uLm5ld0ZpbHRlclBhcmFtcyB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzb3J0UGFyYW0gPSB0aGlzLmdldFNvcnRQYXJhbSh0aGlzLnN0YXRlLnNvcnRlcik7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN0b3JlLmxvYWQoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXM6IHsgLi4ubmV3RmlsdGVyUGFyYW1zLCAuLi5zb3J0UGFyYW0gfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgc2l6ZT1cInNtYWxsXCJcclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImJ1dHRvblwiKX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIOafpeivolxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvU3BhY2U+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmlsdGVySWNvbjogKCkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gPFNlYXJjaE91dGxpbmVkIC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLm9iaixcclxuICAgICAgICB9O1xyXG4gICAgICAgIGNvbHNbaW5kZXhdID0gb2JqO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBjb2xzO1xyXG4gIH1cclxuICByZW5kZXJUb29sQmFyKCkge1xyXG4gICAgbGV0IHsgdGFibGVTaXplLCBjb2x1bW5zLCBzb3J0VHlwZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB7IGZpbHRlckNvbHVtbiwgY29sdW1uczogY29sTGlzdHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBzaXplSXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLlrr3mnb5cIiwga2V5OiBcImRlZmF1bHRcIiB9LFxyXG4gICAgICB7IHRpdGxlOiBcIuS4reetiVwiLCBrZXk6IFwibWlkZGxlXCIgfSxcclxuICAgICAgeyB0aXRsZTogXCLntKflh5FcIiwga2V5OiBcInNtYWxsXCIgfSxcclxuICAgIF07XHJcbiAgICBjb25zdCBzb3J0SXRlbSA9IFtcclxuICAgICAgeyB0aXRsZTogXCLljZXlrZfmrrXmjpLluo9cIiwga2V5OiBcInNpbmdsZVwiIH0sXHJcbiAgICAgIHsgdGl0bGU6IFwi5aSa5a2X5q615o6S5bqPXCIsIGtleTogXCJtdWx0aXBsZVwiIH0sXHJcbiAgICBdO1xyXG4gICAgY29uc3Qgc29ydENvbnRlbnQgPSAoXHJcbiAgICAgIDw+XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJjb3RlbnQtdGl0bGVcIil9XHJcbiAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICBjdXJzb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgPyBcIm5vdC1hbGxvd2VkXCIgOiBcInBvaW50ZXJcIixcclxuICAgICAgICAgICAgY29sb3I6IHRoaXMuc3RhdGUuZGVmYXVsdFNvcnQgJiYgXCJyZ2JhKDAsMCwwLC40NSlcIixcclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnN0YXRlLmRlZmF1bHRTb3J0KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBzb3J0ZXI6IFtdLCBzb3J0SW5mbzoge30sIGRlZmF1bHRTb3J0OiB0cnVlIH0pO1xyXG4gICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB7IC4uLnRoaXMuc3RhdGUuZmlsdGVyUGFyYW1zIH07XHJcbiAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICDmgaLlpI3pu5jorqTmjpLluo9cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB7c29ydEl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHNvcnRlcjogW10sXHJcbiAgICAgICAgICAgICAgICAgIHNvcnRJbmZvOiB7fSxcclxuICAgICAgICAgICAgICAgICAgc29ydFR5cGU6IGl0ZW0ua2V5LFxyXG4gICAgICAgICAgICAgICAgICBkZWZhdWx0U29ydDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHBhcmFtcyA9IHsgLi4udGhpcy5zdGF0ZS5maWx0ZXJQYXJhbXMgfTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc3RvcmUucmVsb2FkKHsgcGFyYW1zIH0pO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgPyAoXHJcbiAgICAgICAgICAgICAgICA8YT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvbnRlbnQtdGllbVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAgICB7c29ydFR5cGUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICAgIHt0aGlzLnN0YXRlLnNvcnRlci5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImNvdGVudC10aXRsZVwiKX1cclxuICAgICAgICAgICAgICBzdHlsZT17eyBjb2xvcjogXCJyZ2JhKDAsMCwwLC40NSlcIiB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAg5b2T5YmN5o6S5bqPXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB7dGhpcy5zdGF0ZS5zb3J0ZXIubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ub3JkZXIgPT0gXCJhc2NlbmRcIiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgIDxTb3J0QXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgPFNvcnREZXNjZW5kaW5nT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0uY29sdW1uLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICA8Lz5cclxuICAgICAgICApfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcbiAgICBjb25zdCBzaXplQ29udGVudCA9IChcclxuICAgICAgPD5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY290ZW50LXRpdGxlXCIpfT7ooajmoLzlr4bluqY8L2Rpdj5cclxuICAgICAgICB7c2l6ZUl0ZW0ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGtleT17aXRlbS5rZXl9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIHRhYmxlU2l6ZTogaXRlbS5rZXksXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RhYmxlU2l6ZSA9PSBpdGVtLmtleSA/IChcclxuICAgICAgICAgICAgICAgIDxhPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IHdpZHRoOiAyMCB9fT5cclxuICAgICAgICAgICAgICAgICAgICAgIHt0YWJsZVNpemUgPT0gaXRlbS5rZXkgJiYgPENoZWNrT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdj4ge2l0ZW0udGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiY29udGVudC10aWVtXCIpfT5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT17eyB3aWR0aDogMjAgfX0+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+IHtpdGVtLnRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0pfVxyXG4gICAgICA8Lz5cclxuICAgICk7XHJcblxyXG4gICAgY29uc3QgZGVmYXVsdFNob3dDb2xzID0gY29sdW1ucy5maWx0ZXIoKGNvbHMpID0+IGNvbHMuaW5pdFNob3cgIT09IGZhbHNlKTtcclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gKFxyXG4gICAgICA8Q2hlY2tib3guR3JvdXBcclxuICAgICAgICBvbkNoYW5nZT17dGhpcy5maWx0ZXJDb2x1bW4uYmluZCh0aGlzKX1cclxuICAgICAgICBvcHRpb25zPXtjb2xMaXN0cy5tYXAoXHJcbiAgICAgICAgICAoY29sOiBDb2x1bW5UeXBlPHt9PiAmIHsgZmlsdGVyQ29sdW1uOiBib29sZWFuOyBkYXRhSW5kZXg6IGFueSB9KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICghY29sLmRhdGFJbmRleCkge1xyXG4gICAgICAgICAgICAgIGNvbC5kYXRhSW5kZXggPSBjb2wudGl0bGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICBsYWJlbDogY29sLnRpdGxlLFxyXG4gICAgICAgICAgICAgIHZhbHVlOiBjb2wuZGF0YUluZGV4LFxyXG4gICAgICAgICAgICAgIGRpc2FibGVkOiBjb2wuZmlsdGVyQ29sdW1uID09PSBmYWxzZSxcclxuICAgICAgICAgICAgfSBhcyBDaGVja2JveE9wdGlvblR5cGU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgKX1cclxuICAgICAgICAvLyBkZWZhdWx0VmFsdWU9e2RlZmF1bHRTaG93Q29scy5tYXAoKGNvbCkgPT4gY29sLmRhdGFJbmRleCl9XHJcbiAgICAgICAgdmFsdWU9e1xyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5kZWZhdWx0Q2hlY2tcclxuICAgICAgICAgICAgPyBkZWZhdWx0U2hvd0NvbHMubWFwKChjb2wpID0+IGNvbC5kYXRhSW5kZXgpXHJcbiAgICAgICAgICAgIDogdGhpcy5zdGF0ZS5jaGVja0NvbHVtblxyXG4gICAgICAgIH1cclxuICAgICAgPjwvQ2hlY2tib3guR3JvdXA+XHJcbiAgICApO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRhYmxlLXRvb2wtYmFyXCIpfT5cclxuICAgICAgICB7ZmlsdGVyQ29sdW1uICYmIChcclxuICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDE0IH19PlxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHRpdGxlPVwi6YCJ5oup5pi+56S655qE5YiXXCJcclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVJpZ2h0XCJcclxuICAgICAgICAgICAgICB0cmlnZ2VyPVwiY2xpY2tcIlxyXG4gICAgICAgICAgICAgIG92ZXJsYXlTdHlsZT17eyBtaW5XaWR0aDogNDEwLCBtYXhXaWR0aDogNDUwIH19XHJcbiAgICAgICAgICAgICAgLy8gZ2V0UG9wdXBDb250YWluZXI9eygpID0+IHRoaXMudGhJY29uUmVmLmN1cnJlbnR9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QXBwc3RvcmVPdXRsaW5lZCBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImFwcC1zdG9yZS1pY29uXCIpfSAvPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NvcnRDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgPFNvcnRBc2NlbmRpbmdPdXRsaW5lZCAvPlxyXG4gICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgc3R5bGU9e3sgbWFyZ2luUmlnaHQ6IDgsIGZvbnRTaXplOiAxNCB9fT5cclxuICAgICAgICAgIDxQb3BvdmVyIHBsYWNlbWVudD1cImJvdHRvbVwiIGNvbnRlbnQ9e3NpemVDb250ZW50fSB0cmlnZ2VyPVwiY2xpY2tcIj5cclxuICAgICAgICAgICAgPENvbHVtbkhlaWdodE91dGxpbmVkIC8+XHJcbiAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgbGV0IF90aGlzID0gdGhpcyxcclxuICAgICAge1xyXG4gICAgICAgIGxvYWRpbmcsXHJcbiAgICAgICAgZGF0YVNvdXJjZSxcclxuICAgICAgICBwYWdpbmF0aW9uID0ge30sXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvcixcclxuICAgICAgICB0YWJsZVNpemUsXHJcbiAgICAgIH0gPSB0aGlzLnN0YXRlLFxyXG4gICAgICBwcm9wcyA9IHV0aWxzLm9taXQoXHJcbiAgICAgICAgdGhpcy5wcm9wcyxcclxuICAgICAgICBbXHJcbiAgICAgICAgICBcInN0b3JlXCIsXHJcbiAgICAgICAgICBcIm9uQ2hhbmdlXCIsXHJcbiAgICAgICAgICBcImNvbHVtbnNcIixcclxuICAgICAgICAgIFwicmVzZXRDb2x1bW5cIixcclxuICAgICAgICAgIFwidG9vbGJhclwiLFxyXG4gICAgICAgICAgXCJzb3J0RmllbGRzXCIsXHJcbiAgICAgICAgICBcImZpbHRlckNvbHVtblwiLFxyXG4gICAgICAgIF0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcm93S2V5OiBcImlkXCIsXHJcbiAgICAgICAgICBjbGlja0NoYW5nZUNvbG9yOiBmYWxzZSxcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICBpZiAocHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UpIHtcclxuICAgICAgcHJvcHMucGFnaW5hdGlvbiA9IHtcclxuICAgICAgICBwb3NpdGlvbjogW1wiYm90dG9tUmlnaHRcIl0sXHJcbiAgICAgICAgc2hvd1NpemVDaGFuZ2VyOiB0cnVlLFxyXG4gICAgICAgIHNob3dRdWlja0p1bXBlcjogdHJ1ZSxcclxuICAgICAgICAuLi5wcm9wcy5wYWdpbmF0aW9uLFxyXG4gICAgICAgIC4uLnBhZ2luYXRpb24sXHJcbiAgICAgIH07XHJcbiAgICAgIGlmIChwcm9wcy5zaG93VG90YWwgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHByb3BzLnBhZ2luYXRpb24uc2hvd1RvdGFsID0gZnVuY3Rpb24gKHRvdGFsLCBbZnJvbSwgdG9dKSB7XHJcbiAgICAgICAgICAvLyByZXR1cm4gXCLmmL7npLogXCIgKyBmcm9tICsgXCIgLSBcIiArIHRvICsgXCLmnaHvvIzlhbEgXCIgKyB0b3RhbCArIFwiIOadoVwiO1xyXG4gICAgICAgICAgcmV0dXJuIFwi5YWxIFwiICsgdG90YWwgKyBcIiDmnaFcIjtcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm9wcy5vbkNoYW5nZSA9IGZ1bmN0aW9uIChwYWdpbmF0aW9uLCBmaWx0ZXJzLCBzb3J0ZXIsIGV4dHJhKSB7XHJcbiAgICAgIF90aGlzLm9uQ2hhbmdlKHBhZ2luYXRpb24sIGZpbHRlcnMsIHNvcnRlciwgZXh0cmEpO1xyXG4gICAgfTtcclxuICAgIGlmIChwcm9wcy5jbGlja0NoYW5nZUNvbG9yKSB7XHJcbiAgICAgIGNvbnN0IG9uUm93Rm4gPSBwcm9wcy5vblJvdztcclxuICAgICAgcHJvcHMub25Sb3cgPSBmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xyXG4gICAgICAgIHZhciBjdXN0b20gPSBvblJvd0ZuID8gb25Sb3dGbihyZWNvcmQsIGluZGV4KSA6IHt9O1xyXG4gICAgICAgIGNvbnN0IG9uQ2xpY2tGbiA9IGN1c3RvbS5vbkNsaWNrO1xyXG4gICAgICAgIGN1c3RvbS5vbkNsaWNrID0gKGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICBfdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGFjdGl2ZUluZGV4OiBpbmRleCwgLy/ojrflj5bngrnlh7vooYznmoTntKLlvJVcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgdXRpbHMuY2FsbGJhY2sob25DbGlja0ZuLCBfdGhpcywgW2V2ZW50XSk7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gY3VzdG9tO1xyXG4gICAgICB9O1xyXG4gICAgICBwcm9wcy5yb3dDbGFzc05hbWUgPSBmdW5jdGlvbiAocmVjb3JkLCBpbmRleCkge1xyXG4gICAgICAgIHJldHVybiBpbmRleCA9PT0gX3RoaXMuc3RhdGUuYWN0aXZlSW5kZXhcclxuICAgICAgICAgID8gYCR7c3R5bGVzLmNsaWNrUm93U3R5bGV9YFxyXG4gICAgICAgICAgOiBcIlwiO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0RhdGFTb3VyY2UgPSBbXTtcclxuICAgIGlmIChzZWFyY2hUZXh0KSB7XHJcbiAgICAgIGNvbnN0IGRhdGEgPSB0cmVlVXRpbHMuZ2V0U2VhcmNoTWVudURhdGFzKFxyXG4gICAgICAgIHRoaXMsXHJcbiAgICAgICAgc2VhcmNoVGV4dCxcclxuICAgICAgICBmaWVsZE9wdGlvbixcclxuICAgICAgICBzZWFyY2hDb2xvclxyXG4gICAgICApO1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YS50cmVlRGF0YXM7XHJcbiAgICAgIHByb3BzLmV4cGFuZGVkUm93S2V5cyA9IGRhdGEub3BlbktleXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBuZXdEYXRhU291cmNlID0gZGF0YVNvdXJjZTtcclxuICAgIH1cclxuICAgIHByb3BzLnN0b3JlID0gcHJvcHMuc3RvcmUgfHwge307XHJcbiAgICBwcm9wcy5zdG9yZS5hdXRvTG9hZCA9IHByb3BzLnN0b3JlLmF1dG9Mb2FkID09PSBmYWxzZSA/IGZhbHNlIDogdHJ1ZTtcclxuICAgIGNvbnN0IHsgZHJhZ2FibGUgfSA9IF90aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZHJhZ2FibGVQcm9wcyA9XHJcbiAgICAgIGRyYWdhYmxlID09PSB0cnVlXHJcbiAgICAgICAgPyB7XHJcbiAgICAgICAgICAgIGNvbXBvbmVudHM6IEJvZHlSb3dDb21wb25lbnQsXHJcbiAgICAgICAgICAgIG9uUm93OiAocmVjb3JkLCBpbmRleCkgPT4gKHtcclxuICAgICAgICAgICAgICBpbmRleCxcclxuICAgICAgICAgICAgICByZWNvcmQsXHJcbiAgICAgICAgICAgICAgbW92ZVJvdzogdGhpcy5tb3ZlUm93LFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgIH1cclxuICAgICAgICA6IHt9O1xyXG4gICAgbGV0IHsgcmVzaXplQ29sdW1uIH0gPSB0aGlzLnByb3BzO1xyXG5cclxuICAgIGNvbnN0IHJlc2l6ZVByb3BzID1cclxuICAgICAgcmVzaXplQ29sdW1uID09PSB0cnVlID8geyBjb21wb25lbnRzOiB0aGlzLmNvbXBvbmVudHMgfSA6IG51bGw7XHJcblxyXG4gICAgY29uc3QgRGVmYXVsdFRhYmxlID0gKFxyXG4gICAgICA8PlxyXG4gICAgICAgIHt0aGlzLnByb3BzLnRvb2xiYXIgJiYgdGhpcy5yZW5kZXJUb29sQmFyKCl9XHJcbiAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICBjaGlsZHJlbkNvbHVtbk5hbWU9XCJjaGlsZE5vZGVzXCJcclxuICAgICAgICAgIGRhdGFTb3VyY2U9e25ld0RhdGFTb3VyY2V9XHJcbiAgICAgICAgICBjb2x1bW5zPXt0aGlzLmdldENvbHVtbnMoKX1cclxuICAgICAgICAgIGxvYWRpbmc9e2xvYWRpbmd9XHJcbiAgICAgICAgICBjbGFzc05hbWU9e3N0eWxlc1tcIm5zYy10YWJsZVwiXX1cclxuICAgICAgICAgIGxvY2FsZT17eyBlbXB0eVRleHQ6IDxOb0RhdGEgLz4gfX1cclxuICAgICAgICAgIHNjcm9sbD17eyB4OiBcIm1heC1jb250ZW50XCIgfX1cclxuICAgICAgICAgIHNpemU9e3RhYmxlU2l6ZX1cclxuICAgICAgICAgIHsuLi5yZXNpemVQcm9wc31cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgIHsuLi5kcmFnYWJsZVByb3BzfVxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvPlxyXG4gICAgKTtcclxuXHJcbiAgICByZXR1cm4gZHJhZ2FibGUgPT09IHRydWUgPyAoXHJcbiAgICAgIDxEbmRQcm92aWRlciBiYWNrZW5kPXtIVE1MNUJhY2tlbmR9PntEZWZhdWx0VGFibGV9PC9EbmRQcm92aWRlcj5cclxuICAgICkgOiAoXHJcbiAgICAgIERlZmF1bHRUYWJsZVxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHdpdGhaaExvY2FsZShOU0NUYWJsZSk7XHJcbiJdfQ==
|
package/lib/base/tree/index.js
CHANGED
|
@@ -92,7 +92,6 @@ var NscTree = /*#__PURE__*/function (_TreePanel) {
|
|
|
92
92
|
restNodeProps = _objectWithoutProperties(nodeProps, _excluded);
|
|
93
93
|
|
|
94
94
|
var nodes = data.map(function (item) {
|
|
95
|
-
console.log("item", item);
|
|
96
95
|
var props = {
|
|
97
96
|
dataref: item
|
|
98
97
|
};
|
|
@@ -304,4 +303,4 @@ _defineProperty(NscTree, "defaultProps", {
|
|
|
304
303
|
});
|
|
305
304
|
|
|
306
305
|
export default NscTree;
|
|
307
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdHJlZS9pbmRleC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJUcmVlUGFuZWwiLCJ1dGlscyIsIlN0b3JlIiwiU3RvcmVDb25maWdUeXBlIiwiVHJlZVNlYXJjaCIsInN0eWxlcyIsIlRyZWVOb2RlIiwiTnNjVHJlZSIsInByb3BzIiwiY3JlYXRlUmVmIiwibm9kZSIsImhhbmRsZUFkZCIsImhhbmRsZUVkaXQiLCJoYW5kbGVEZWxldGUiLCJ0cmVlTm9kZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiX3RoaXMiLCJkYXRhcmVmIiwic3RvcmUiLCJsYXp5TG9hZCIsImZvcmNlVXBkYXRlIiwiZGF0YSIsInJlbmRlckZuIiwibm9kZVByb3BzIiwibm9kZUtleSIsImtleSIsInJlc3ROb2RlUHJvcHMiLCJub2RlcyIsIm1hcCIsIml0ZW0iLCJjb25zb2xlIiwibG9nIiwiY29uZmlnIiwiZmllbGRzIiwiZm9yRWFjaCIsImZpZWxkIiwibmFtZSIsIk9iamVjdCIsImFzc2lnbiIsImNhbGxiYWNrIiwiY2hpbGROb2RlcyIsImF0dHJpYnV0ZSIsInJlbmRlclRyZWVOb2RlcyIsInRpdGxlTm9kZSIsInN1YnRpdGxlIiwidGl0bGUiLCJjb2xvciIsInJlbmRlclRlbXBsYXRlIiwiYmluZCIsIm1vZGVsRGF0YSIsImNoZWNrZWRLZXlzIiwiY2hlY2tlZCIsImhhbGZDaGVja2VkIiwiZm9yRWFjaFRyZWUiLCJwdXNoIiwibnNjVHJlZVJlZiIsImN1cnJlbnQiLCJzdGF0ZSIsImtleUVudGl0aWVzIiwiaGFsZkNoZWNrZWRLZXlzIiwiY29uY2F0IiwiY2hlY2tlZEtleXNBbGwiLCJ0cmVlUHJvcHMiLCJuZXdNZW51RGF0YXMiLCJ0cmVlRGF0YSIsIm9wZW5LZXlzIiwiY2hlY2tQcm9wYWdhdGlvbiIsImNoZWNrU3RyaWN0bHkiLCJzaG93SWNvbiIsImxhenlsb2FkIiwibG9hZERhdGEiLCJfb25Mb2FkRGF0YSIsIm9uQ2hlY2tGbiIsIm9uQ2hlY2siLCJlIiwic2V0U3RhdGUiLCJvblNlbGVjdEZuIiwib25TZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJub2RlSW5mbyIsInNlbGVjdE5vZGUiLCJzZWxlY3RlZCIsInNlbGVjdGVkTm9kZXMiLCJleHBhbmRlZEtleXMiLCJsb2FkaW5nIiwiZWRpdGFibGUiLCJzZWFyY2hhYmxlIiwiaGFuZGxlQWRkTW9kdWxlIiwiaGFuZGxlRWRpdE1vZHVsZSIsImhhbmRsZURlbGV0ZU1vZHVsZSIsIkFycmF5IiwiaXNBcnJheSIsImxlbmd0aCIsInJlbmRlclRyZWVOb2RlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBUCxNQUFrQixPQUFsQjtBQUVBLE9BQU9DLFNBQVAsTUFHTyxxQkFIUDtBQUlBLFNBQVNDLEtBQVQsUUFBc0IsdUJBQXRCO0FBR0EsU0FBU0MsS0FBVCxFQUFnQkMsZUFBaEIsUUFBdUMsYUFBdkM7QUFDQSxPQUFPQyxVQUFQLE1BQXVCLGNBQXZCO0FBQ0EsT0FBT0MsTUFBUCxNQUFtQixjQUFuQjtBQUNBLElBQVFDLFFBQVIsU0FBUUEsUUFBUixDLENBQ0E7O0lBVU1DLE87Ozs7O0FBR0osbUJBQVlDLE1BQVosRUFBbUI7QUFBQTs7QUFBQTs7QUFDakIsK0JBQU1BLE1BQU47O0FBRGlCLCtFQUZOVCxLQUFLLENBQUNVLFNBQU4sRUFFTTs7QUFBQSx1RUEwRUQsVUFBQ0MsSUFBRCxFQUFVO0FBQzFCLFVBQU1DLFNBQVMsR0FBRyxPQUFLSCxLQUFMLENBQVdHLFNBQTdCO0FBQ0FBLE1BQUFBLFNBQVMsSUFBSUEsU0FBUyxDQUFDRCxJQUFELENBQXRCO0FBQ0QsS0E3RWtCOztBQUFBLHdFQStFQSxVQUFDQSxJQUFELEVBQVU7QUFDM0IsVUFBTUUsVUFBVSxHQUFHLE9BQUtKLEtBQUwsQ0FBV0ksVUFBOUI7QUFDQUEsTUFBQUEsVUFBVSxJQUFJQSxVQUFVLENBQUNGLElBQUQsQ0FBeEI7QUFDRCxLQWxGa0I7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S0FBSyxDQUFDc0YsY0FBekMsQ0FESCxDQVZKLENBREYsQ0FERjtBQW1CRDs7OztFQTFKbUI5RixTOztnQkFBaEJPLE8sa0JBUWlDO0FBQUVZLEVBQUFBLEtBQUssRUFBRTtBQUFULEM7O0FBa012QyxlQUFlWixPQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBUcmVlLCBUcmVlUHJvcHMsIFNwaW4sIFRyZWVOb2RlUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgVHJlZVBhbmVsLCB7XHJcbiAgSVRyZWVQYW5lbFByb3BzLFxyXG4gIFRyZWVDb21tb25Qcm9wcyxcclxufSBmcm9tIFwiLi4vY29tbW9uL1RyZWVQYW5lbFwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IFJjVHJlZSBmcm9tIFwicmMtdHJlZVwiO1xyXG5pbXBvcnQgeyBEYXRhTm9kZSwgRXZlbnREYXRhTm9kZSB9IGZyb20gXCJyYy10cmVlL2xpYi9pbnRlcmZhY2VcIjtcclxuZXhwb3J0IHsgU3RvcmUsIFN0b3JlQ29uZmlnVHlwZSB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgVHJlZVNlYXJjaCBmcm9tIFwiLi9UcmVlU2VhcmNoXCI7XHJcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4vaW5kZXgubGVzc1wiO1xyXG5jb25zdCB7IFRyZWVOb2RlIH0gPSBUcmVlO1xyXG4vLyBpbXBvcnQgVHJlZU5vZGUgZnJvbSBcIi4vTnNjVHJlZU5vZGVcIjtcclxudHlwZSBOc2NEYXRhTm9kZVByb3BzID0gRGF0YU5vZGUgJiB7IHByb3BzOiB7IGRhdGFyZWY6IGFueSB9IH07XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5zY1RyZWVQcm9wcyBleHRlbmRzIElUcmVlUGFuZWxQcm9wcyB7XHJcbiAgZWRpdGFibGU/OiBib29sZWFuO1xyXG4gIHRyZWVEYXRhPzogYW55W107XHJcbiAgc2VhcmNoYWJsZT86IGJvb2xlYW47XHJcbiAgbm9kZVByb3BzPzogVHJlZU5vZGVQcm9wcztcclxufVxyXG5cclxuY2xhc3MgTnNjVHJlZSBleHRlbmRzIFRyZWVQYW5lbDxOc2NUcmVlUHJvcHMgJiBUcmVlQ29tbW9uUHJvcHM+IHtcclxuICBuc2NUcmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPFJjVHJlZSAmIFRyZWVQcm9wcz4oKTtcclxuXHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIHRoaXMucmVuZGVyVGVtcGxhdGUgPSB0aGlzLnJlbmRlclRlbXBsYXRlLmJpbmQodGhpcyk7XHJcbiAgfVxyXG5cclxuICBzdGF0aWMgZGVmYXVsdFByb3BzOiB7IHN0b3JlOiB7fSB9ID0geyBzdG9yZToge30gfTtcclxuXHJcbiAgX2RhdGFUb0NoZWNrZWRLZXlzKG1vZGVsRGF0YSk6IGFueSB7XHJcbiAgICBsZXQgY2hlY2tlZEtleXMgPSB7IGNoZWNrZWQ6IFtdLCBoYWxmQ2hlY2tlZDogW10gfTtcclxuICAgIHV0aWxzLmZvckVhY2hUcmVlKG1vZGVsRGF0YSwgZnVuY3Rpb24gKG5vZGUpIHtcclxuICAgICAgaWYgKG5vZGUuY2hlY2tlZCA9PSB0cnVlKSB7XHJcbiAgICAgICAgY2hlY2tlZEtleXMuY2hlY2tlZC5wdXNoKG5vZGUuYXR0cmlidXRlLmtleSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIGNoZWNrZWRLZXlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog5qCR5pCc57SiXHJcbiAgICovXHJcbiAgLy8gaGFuZGxlU2VhcmNoID0gKHZhbHVlKSA9PiB7XHJcbiAgLy8gICB0aGlzLnNldFN0YXRlKHsgc2VhcmNoVGV4dDogdmFsdWUgfSk7XHJcbiAgLy8gfTtcclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W6YCJ5Lit6IqC54K5SUTmlbDnu4RcclxuICAgKiBAcmV0dXJuIFN0cmluZ1tdXHJcbiAgICovXHJcbiAgZ2V0Q2hlY2tlZEtleXMoKSB7XHJcbiAgICBjb25zdCB7IGNoZWNrZWRLZXlzIH0gPSB0aGlzLm5zY1RyZWVSZWYuY3VycmVudDtcclxuICAgIHJldHVybiBjaGVja2VkS2V5cztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPlumAieS4reiKgueCueWvueixoeaVsOe7hFxyXG4gICAqIEByZXR1cm4gbm9kZVtdXHJcbiAgICovXHJcbiAgZ2V0Q2hlY2tlZE5vZGVzKCkge1xyXG4gICAgY29uc3QgeyBjaGVja2VkS2V5cywga2V5RW50aXRpZXMgfSA9IHRoaXMubnNjVHJlZVJlZi5jdXJyZW50LnN0YXRlO1xyXG4gICAgbGV0IG5vZGVzID0gW10gYXMgTnNjRGF0YU5vZGVQcm9wc1tdO1xyXG4gICAgY2hlY2tlZEtleXMubWFwKChrZXkpID0+IHtcclxuICAgICAgLy8gbm9kZXMucHVzaChrZXlFbnRpdGllc1trZXldLm5vZGUucHJvcHMuZGF0YXJlZik7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBrZXlFbnRpdGllc1trZXldLm5vZGUgYXMgTnNjRGF0YU5vZGVQcm9wcztcclxuICAgICAgbm9kZXMucHVzaChub2RlLnByb3BzLmRhdGFyZWYpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDojrflj5blhajpg6jpgInkuK3oioLngrlJRO+8jOWMheWQq+WNiumAieS4reiKgueCuUlEXHJcbiAgICogQHJldHVybiBTdHJpbmdbXVxyXG4gICAqL1xyXG4gIGdldENoZWNrZWRBbGxLZXlzKCkge1xyXG4gICAgY29uc3QgeyBjaGVja2VkS2V5cywgaGFsZkNoZWNrZWRLZXlzIH0gPSB0aGlzLm5zY1RyZWVSZWYuY3VycmVudC5zdGF0ZTtcclxuICAgIHJldHVybiBjaGVja2VkS2V5cy5jb25jYXQoaGFsZkNoZWNrZWRLZXlzKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluWFqOmDqOmAieS4reiKgueCuU5vZGXlr7nosaHvvIzljIXlkKvljYrpgInkuK3oioLngrlOb2Rl5a+56LGhXHJcbiAgICogQHJldHVybiBub2RlW11cclxuICAgKi9cclxuICBnZXRDaGVja2VkQWxsTm9kZXMoKSB7XHJcbiAgICBjb25zdCB7IGNoZWNrZWRLZXlzLCBoYWxmQ2hlY2tlZEtleXMsIGtleUVudGl0aWVzIH0gPVxyXG4gICAgICB0aGlzLm5zY1RyZWVSZWYuY3VycmVudC5zdGF0ZTtcclxuICAgIGxldCBjaGVja2VkS2V5c0FsbCA9IGNoZWNrZWRLZXlzLmNvbmNhdChoYWxmQ2hlY2tlZEtleXMpO1xyXG4gICAgbGV0IG5vZGVzID0gW107XHJcbiAgICBjaGVja2VkS2V5c0FsbC5tYXAoKGtleSkgPT4ge1xyXG4gICAgICBjb25zdCBub2RlID0ga2V5RW50aXRpZXNba2V5XS5ub2RlIGFzIE5zY0RhdGFOb2RlUHJvcHM7XHJcbiAgICAgIG5vZGVzLnB1c2gobm9kZS5wcm9wcy5kYXRhcmVmKTtcclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5vZGVzO1xyXG4gIH1cclxuXHJcbiAgLy8g5re75Yqg5qih5Z2XXHJcbiAgaGFuZGxlQWRkTW9kdWxlID0gKG5vZGUpID0+IHtcclxuICAgIGNvbnN0IGhhbmRsZUFkZCA9IHRoaXMucHJvcHMuaGFuZGxlQWRkO1xyXG4gICAgaGFuZGxlQWRkICYmIGhhbmRsZUFkZChub2RlKTtcclxuICB9O1xyXG5cclxuICBoYW5kbGVFZGl0TW9kdWxlID0gKG5vZGUpID0+IHtcclxuICAgIGNvbnN0IGhhbmRsZUVkaXQgPSB0aGlzLnByb3BzLmhhbmRsZUVkaXQ7XHJcbiAgICBoYW5kbGVFZGl0ICYmIGhhbmRsZUVkaXQobm9kZSk7XHJcbiAgfTtcclxuXHJcbiAgaGFuZGxlRGVsZXRlTW9kdWxlID0gKG5vZGUpID0+IHtcclxuICAgIGNvbnN0IGhhbmRsZURlbGV0ZSA9IHRoaXMucHJvcHMuaGFuZGxlRGVsZXRlO1xyXG4gICAgaGFuZGxlRGVsZXRlICYmIGhhbmRsZURlbGV0ZShub2RlKTtcclxuICB9O1xyXG5cclxuICBfb25Mb2FkRGF0YSA9ICh0cmVlTm9kZTogRXZlbnREYXRhTm9kZSAmIHsgcHJvcHM6IHsgZGF0YXJlZiB9IH0pID0+XHJcbiAgICBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSkgPT4ge1xyXG4gICAgICBjb25zdCBfdGhpcyA9IHRoaXMsXHJcbiAgICAgICAgbm9kZSA9IHRyZWVOb2RlLnByb3BzLmRhdGFyZWY7XHJcbiAgICAgIHRoaXMuc3RvcmUubGF6eUxvYWQobm9kZSwgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJlc29sdmUobm9kZSk7XHJcbiAgICAgICAgX3RoaXMuZm9yY2VVcGRhdGUoKTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuXHJcbiAgcmVuZGVyVGVtcGxhdGUodHJlZVByb3BzID0ge30gYXMgSVRyZWVQYW5lbFByb3BzLCBuZXdNZW51RGF0YXMgPSBbXSkge1xyXG4gICAgY29uc3QgeyB0cmVlRGF0YSwgb3BlbktleXMsIC4uLnByb3BzIH0gPSB0cmVlUHJvcHM7XHJcbiAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAocHJvcHMuY2hlY2tQcm9wYWdhdGlvbikge1xyXG4gICAgICBwcm9wcy5jaGVja1N0cmljdGx5ID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIGlmIChwcm9wcy5zaG93SWNvbiA9PSBudWxsKSB7XHJcbiAgICAgIHByb3BzLnNob3dJY29uID0gdHJ1ZTtcclxuICAgIH1cclxuXHJcbiAgICBsZXQgeyBsYXp5bG9hZCB9ID0gdGhpcy5zdG9yZS5jb25maWc7XHJcbiAgICBpZiAobGF6eWxvYWQpIHtcclxuICAgICAgcHJvcHMubG9hZERhdGEgPSB0aGlzLl9vbkxvYWREYXRhO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb25DaGVja0ZuID0gcHJvcHMub25DaGVjaztcclxuICAgIHByb3BzLm9uQ2hlY2sgPSBmdW5jdGlvbiAoY2hlY2tlZEtleXMsIGUpIHtcclxuICAgICAgX3RoaXMuc2V0U3RhdGUoeyBjaGVja2VkS2V5czogY2hlY2tlZEtleXMgfSk7XHJcbiAgICAgIHV0aWxzLmNhbGxiYWNrKG9uQ2hlY2tGbiwgX3RoaXMsIFtjaGVja2VkS2V5cywgZV0pO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IG9uU2VsZWN0Rm4gPSBwcm9wcy5vblNlbGVjdDtcclxuICAgIHByb3BzLm9uU2VsZWN0ID0gKHNlbGVjdGVkS2V5cywgbm9kZUluZm8pID0+IHtcclxuICAgICAgdXRpbHMuY2FsbGJhY2sob25TZWxlY3RGbiwgX3RoaXMsIFtzZWxlY3RlZEtleXMsIG5vZGVJbmZvXSk7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHNlbGVjdE5vZGU6IG5vZGVJbmZvLnNlbGVjdGVkID8gbm9kZUluZm8uc2VsZWN0ZWROb2Rlc1swXSA6IG51bGwsXHJcbiAgICAgICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgaWYgKG9wZW5LZXlzKSB7XHJcbiAgICAgIHByb3BzLmV4cGFuZGVkS2V5cyA9IG9wZW5LZXlzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZGVsZXRlIHByb3BzLmV4cGFuZGVkS2V5cztcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxTcGluIHNwaW5uaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9PlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtzdHlsZXNbXCJuc2MtdHJlZS1ib3hcIl19PlxyXG4gICAgICAgICAgeyhfdGhpcy5wcm9wcy5lZGl0YWJsZSB8fCBfdGhpcy5wcm9wcy5zZWFyY2hhYmxlKSAmJiAoXHJcbiAgICAgICAgICAgIDxUcmVlU2VhcmNoXHJcbiAgICAgICAgICAgICAgdHJlZUluc3RhbmNlPXt0aGlzfVxyXG4gICAgICAgICAgICAgIGhhbmRsZUFkZE1vZHVsZT17dGhpcy5oYW5kbGVBZGRNb2R1bGV9XHJcbiAgICAgICAgICAgICAgaGFuZGxlRWRpdE1vZHVsZT17dGhpcy5oYW5kbGVFZGl0TW9kdWxlfVxyXG4gICAgICAgICAgICAgIGhhbmRsZURlbGV0ZU1vZHVsZT17dGhpcy5oYW5kbGVEZWxldGVNb2R1bGV9XHJcbiAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAge0FycmF5LmlzQXJyYXkobmV3TWVudURhdGFzKSAmJiBuZXdNZW51RGF0YXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgIDxUcmVlIHJlZj17dGhpcy5uc2NUcmVlUmVmfSBjaGVja2FibGUgey4uLnByb3BzfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJUcmVlTm9kZXMobmV3TWVudURhdGFzLCBwcm9wcy5yZW5kZXJUcmVlTm9kZSl9XHJcbiAgICAgICAgICAgIDwvVHJlZT5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvU3Bpbj5cclxuICAgICk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUcmVlTm9kZXMgPSAoZGF0YSwgcmVuZGVyRm4pID0+IHtcclxuICAgIGNvbnN0IG5vZGVQcm9wcyA9IHRoaXMucHJvcHMubm9kZVByb3BzIHx8IHt9O1xyXG4gICAgY29uc3QgeyBrZXk6IG5vZGVLZXksIC4uLnJlc3ROb2RlUHJvcHMgfSA9IG5vZGVQcm9wcztcclxuICAgIGNvbnN0IG5vZGVzID0gZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgY29uc29sZS5sb2coXCJpdGVtXCIsIGl0ZW0pO1xyXG4gICAgICBsZXQgcHJvcHMgPSB7IGRhdGFyZWY6IGl0ZW0gfSBhcyBUcmVlTm9kZVByb3BzO1xyXG4gICAgICBpdGVtLmNvbmZpZy5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBpZiAoZmllbGQubmFtZSA9PT0gXCJrZXlcIiAmJiBub2RlS2V5KSB7XHJcbiAgICAgICAgICBwcm9wcy5rZXkgPSBpdGVtW25vZGVLZXldO1xyXG4gICAgICAgICAgaXRlbS5rZXkgPSBpdGVtW25vZGVLZXldO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwcm9wc1tmaWVsZC5uYW1lXSA9IGl0ZW1bZmllbGQubmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgT2JqZWN0LmFzc2lnbihwcm9wcywgcmVzdE5vZGVQcm9wcyk7XHJcbiAgICAgIGlmIChyZW5kZXJGbikge1xyXG4gICAgICAgIHByb3BzID0gdXRpbHMuY2FsbGJhY2socmVuZGVyRm4sIHRoaXMsIFtwcm9wcywgaXRlbV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxUcmVlTm9kZSB7Li4ucHJvcHN9IGtleT17aXRlbS5hdHRyaWJ1dGUua2V5fT5cclxuICAgICAgICAgICAge3RoaXMucmVuZGVyVHJlZU5vZGVzKGl0ZW0uY2hpbGROb2RlcywgcmVuZGVyRm4pfVxyXG4gICAgICAgICAgPC9UcmVlTm9kZT5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0aXRsZU5vZGUgPSBudWxsO1xyXG4gICAgICBpZiAoaXRlbS5hdHRyaWJ1dGUuc3VidGl0bGUpIHtcclxuICAgICAgICB0aXRsZU5vZGUgPSAoXHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4+e2l0ZW0udGl0bGV9PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiBcInJnYmEoMCwwLDAsLjQ1KVwiIH19XHJcbiAgICAgICAgICAgID57YO+8iCR7aXRlbS5hdHRyaWJ1dGUuc3VidGl0bGV977yJYH08L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aXRsZU5vZGUgPSA8c3Bhbj57aXRlbS50aXRsZX08L3NwYW4+O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiA8VHJlZU5vZGUgey4uLnByb3BzfSBrZXk9e2l0ZW0uYXR0cmlidXRlLmtleX0gdGl0bGU9e3RpdGxlTm9kZX0gLz47XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTnNjVHJlZTtcclxuIl19
|
|
306
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL2Jhc2UvdHJlZS9pbmRleC50c3giXSwibmFtZXMiOlsiUmVhY3QiLCJUcmVlUGFuZWwiLCJ1dGlscyIsIlN0b3JlIiwiU3RvcmVDb25maWdUeXBlIiwiVHJlZVNlYXJjaCIsInN0eWxlcyIsIlRyZWVOb2RlIiwiTnNjVHJlZSIsInByb3BzIiwiY3JlYXRlUmVmIiwibm9kZSIsImhhbmRsZUFkZCIsImhhbmRsZUVkaXQiLCJoYW5kbGVEZWxldGUiLCJ0cmVlTm9kZSIsIlByb21pc2UiLCJyZXNvbHZlIiwiX3RoaXMiLCJkYXRhcmVmIiwic3RvcmUiLCJsYXp5TG9hZCIsImZvcmNlVXBkYXRlIiwiZGF0YSIsInJlbmRlckZuIiwibm9kZVByb3BzIiwibm9kZUtleSIsImtleSIsInJlc3ROb2RlUHJvcHMiLCJub2RlcyIsIm1hcCIsIml0ZW0iLCJjb25maWciLCJmaWVsZHMiLCJmb3JFYWNoIiwiZmllbGQiLCJuYW1lIiwiT2JqZWN0IiwiYXNzaWduIiwiY2FsbGJhY2siLCJjaGlsZE5vZGVzIiwiYXR0cmlidXRlIiwicmVuZGVyVHJlZU5vZGVzIiwidGl0bGVOb2RlIiwic3VidGl0bGUiLCJ0aXRsZSIsImNvbG9yIiwicmVuZGVyVGVtcGxhdGUiLCJiaW5kIiwibW9kZWxEYXRhIiwiY2hlY2tlZEtleXMiLCJjaGVja2VkIiwiaGFsZkNoZWNrZWQiLCJmb3JFYWNoVHJlZSIsInB1c2giLCJuc2NUcmVlUmVmIiwiY3VycmVudCIsInN0YXRlIiwia2V5RW50aXRpZXMiLCJoYWxmQ2hlY2tlZEtleXMiLCJjb25jYXQiLCJjaGVja2VkS2V5c0FsbCIsInRyZWVQcm9wcyIsIm5ld01lbnVEYXRhcyIsInRyZWVEYXRhIiwib3BlbktleXMiLCJjaGVja1Byb3BhZ2F0aW9uIiwiY2hlY2tTdHJpY3RseSIsInNob3dJY29uIiwibGF6eWxvYWQiLCJsb2FkRGF0YSIsIl9vbkxvYWREYXRhIiwib25DaGVja0ZuIiwib25DaGVjayIsImUiLCJzZXRTdGF0ZSIsIm9uU2VsZWN0Rm4iLCJvblNlbGVjdCIsInNlbGVjdGVkS2V5cyIsIm5vZGVJbmZvIiwic2VsZWN0Tm9kZSIsInNlbGVjdGVkIiwic2VsZWN0ZWROb2RlcyIsImV4cGFuZGVkS2V5cyIsImxvYWRpbmciLCJlZGl0YWJsZSIsInNlYXJjaGFibGUiLCJoYW5kbGVBZGRNb2R1bGUiLCJoYW5kbGVFZGl0TW9kdWxlIiwiaGFuZGxlRGVsZXRlTW9kdWxlIiwiQXJyYXkiLCJpc0FycmF5IiwibGVuZ3RoIiwicmVuZGVyVHJlZU5vZGUiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFQLE1BQWtCLE9BQWxCO0FBRUEsT0FBT0MsU0FBUCxNQUdPLHFCQUhQO0FBSUEsU0FBU0MsS0FBVCxRQUFzQix1QkFBdEI7QUFHQSxTQUFTQyxLQUFULEVBQWdCQyxlQUFoQixRQUF1QyxhQUF2QztBQUNBLE9BQU9DLFVBQVAsTUFBdUIsY0FBdkI7QUFDQSxPQUFPQyxNQUFQLE1BQW1CLGNBQW5CO0FBQ0EsSUFBUUMsUUFBUixTQUFRQSxRQUFSLEMsQ0FDQTs7SUFVTUMsTzs7Ozs7QUFHSixtQkFBWUMsTUFBWixFQUFtQjtBQUFBOztBQUFBOztBQUNqQiwrQkFBTUEsTUFBTjs7QUFEaUIsK0VBRk5ULEtBQUssQ0FBQ1UsU0FBTixFQUVNOztBQUFBLHVFQTBFRCxVQUFDQyxJQUFELEVBQVU7QUFDMUIsVUFBTUMsU0FBUyxHQUFHLE9BQUtILEtBQUwsQ0FBV0csU0FBN0I7QUFDQUEsTUFBQUEsU0FBUyxJQUFJQSxTQUFTLENBQUNELElBQUQsQ0FBdEI7QUFDRCxLQTdFa0I7O0FBQUEsd0VBK0VBLFVBQUNBLElBQUQsRUFBVTtBQUMzQixVQUFNRSxVQUFVLEdBQUcsT0FBS0osS0FBTCxDQUFXSSxVQUE5QjtBQUNBQSxNQUFBQSxVQUFVLElBQUlBLFVBQVUsQ0FBQ0YsSUFBRCxDQUF4QjtBQUNELEtBbEZrQjs7QUFBQSwwRUFvRkUsVUFB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QUFBRVksRUFBQUEsS0FBSyxFQUFFO0FBQVQsQzs7QUFpTXZDLGVBQWVaLE9BQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFRyZWUsIFRyZWVQcm9wcywgU3BpbiwgVHJlZU5vZGVQcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBUcmVlUGFuZWwsIHtcclxuICBJVHJlZVBhbmVsUHJvcHMsXHJcbiAgVHJlZUNvbW1vblByb3BzLFxyXG59IGZyb20gXCIuLi9jb21tb24vVHJlZVBhbmVsXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQgUmNUcmVlIGZyb20gXCJyYy10cmVlXCI7XHJcbmltcG9ydCB7IERhdGFOb2RlLCBFdmVudERhdGFOb2RlIH0gZnJvbSBcInJjLXRyZWUvbGliL2ludGVyZmFjZVwiO1xyXG5leHBvcnQgeyBTdG9yZSwgU3RvcmVDb25maWdUeXBlIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCBUcmVlU2VhcmNoIGZyb20gXCIuL1RyZWVTZWFyY2hcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5sZXNzXCI7XHJcbmNvbnN0IHsgVHJlZU5vZGUgfSA9IFRyZWU7XHJcbi8vIGltcG9ydCBUcmVlTm9kZSBmcm9tIFwiLi9Oc2NUcmVlTm9kZVwiO1xyXG50eXBlIE5zY0RhdGFOb2RlUHJvcHMgPSBEYXRhTm9kZSAmIHsgcHJvcHM6IHsgZGF0YXJlZjogYW55IH0gfTtcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgTnNjVHJlZVByb3BzIGV4dGVuZHMgSVRyZWVQYW5lbFByb3BzIHtcclxuICBlZGl0YWJsZT86IGJvb2xlYW47XHJcbiAgdHJlZURhdGE/OiBhbnlbXTtcclxuICBzZWFyY2hhYmxlPzogYm9vbGVhbjtcclxuICBub2RlUHJvcHM/OiBUcmVlTm9kZVByb3BzO1xyXG59XHJcblxyXG5jbGFzcyBOc2NUcmVlIGV4dGVuZHMgVHJlZVBhbmVsPE5zY1RyZWVQcm9wcyAmIFRyZWVDb21tb25Qcm9wcz4ge1xyXG4gIG5zY1RyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8UmNUcmVlICYgVHJlZVByb3BzPigpO1xyXG5cclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgdGhpcy5yZW5kZXJUZW1wbGF0ZSA9IHRoaXMucmVuZGVyVGVtcGxhdGUuYmluZCh0aGlzKTtcclxuICB9XHJcblxyXG4gIHN0YXRpYyBkZWZhdWx0UHJvcHM6IHsgc3RvcmU6IHt9IH0gPSB7IHN0b3JlOiB7fSB9O1xyXG5cclxuICBfZGF0YVRvQ2hlY2tlZEtleXMobW9kZWxEYXRhKTogYW55IHtcclxuICAgIGxldCBjaGVja2VkS2V5cyA9IHsgY2hlY2tlZDogW10sIGhhbGZDaGVja2VkOiBbXSB9O1xyXG4gICAgdXRpbHMuZm9yRWFjaFRyZWUobW9kZWxEYXRhLCBmdW5jdGlvbiAobm9kZSkge1xyXG4gICAgICBpZiAobm9kZS5jaGVja2VkID09IHRydWUpIHtcclxuICAgICAgICBjaGVja2VkS2V5cy5jaGVja2VkLnB1c2gobm9kZS5hdHRyaWJ1dGUua2V5KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gY2hlY2tlZEtleXM7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiDmoJHmkJzntKJcclxuICAgKi9cclxuICAvLyBoYW5kbGVTZWFyY2ggPSAodmFsdWUpID0+IHtcclxuICAvLyAgIHRoaXMuc2V0U3RhdGUoeyBzZWFyY2hUZXh0OiB2YWx1ZSB9KTtcclxuICAvLyB9O1xyXG5cclxuICAvKipcclxuICAgKiDojrflj5bpgInkuK3oioLngrlJROaVsOe7hFxyXG4gICAqIEByZXR1cm4gU3RyaW5nW11cclxuICAgKi9cclxuICBnZXRDaGVja2VkS2V5cygpIHtcclxuICAgIGNvbnN0IHsgY2hlY2tlZEtleXMgfSA9IHRoaXMubnNjVHJlZVJlZi5jdXJyZW50O1xyXG4gICAgcmV0dXJuIGNoZWNrZWRLZXlzO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W6YCJ5Lit6IqC54K55a+56LGh5pWw57uEXHJcbiAgICogQHJldHVybiBub2RlW11cclxuICAgKi9cclxuICBnZXRDaGVja2VkTm9kZXMoKSB7XHJcbiAgICBjb25zdCB7IGNoZWNrZWRLZXlzLCBrZXlFbnRpdGllcyB9ID0gdGhpcy5uc2NUcmVlUmVmLmN1cnJlbnQuc3RhdGU7XHJcbiAgICBsZXQgbm9kZXMgPSBbXSBhcyBOc2NEYXRhTm9kZVByb3BzW107XHJcbiAgICBjaGVja2VkS2V5cy5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAvLyBub2Rlcy5wdXNoKGtleUVudGl0aWVzW2tleV0ubm9kZS5wcm9wcy5kYXRhcmVmKTtcclxuICAgICAgY29uc3Qgbm9kZSA9IGtleUVudGl0aWVzW2tleV0ubm9kZSBhcyBOc2NEYXRhTm9kZVByb3BzO1xyXG4gICAgICBub2Rlcy5wdXNoKG5vZGUucHJvcHMuZGF0YXJlZik7XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBub2RlcztcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIOiOt+WPluWFqOmDqOmAieS4reiKgueCuUlE77yM5YyF5ZCr5Y2K6YCJ5Lit6IqC54K5SURcclxuICAgKiBAcmV0dXJuIFN0cmluZ1tdXHJcbiAgICovXHJcbiAgZ2V0Q2hlY2tlZEFsbEtleXMoKSB7XHJcbiAgICBjb25zdCB7IGNoZWNrZWRLZXlzLCBoYWxmQ2hlY2tlZEtleXMgfSA9IHRoaXMubnNjVHJlZVJlZi5jdXJyZW50LnN0YXRlO1xyXG4gICAgcmV0dXJuIGNoZWNrZWRLZXlzLmNvbmNhdChoYWxmQ2hlY2tlZEtleXMpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICog6I635Y+W5YWo6YOo6YCJ5Lit6IqC54K5Tm9kZeWvueixoe+8jOWMheWQq+WNiumAieS4reiKgueCuU5vZGXlr7nosaFcclxuICAgKiBAcmV0dXJuIG5vZGVbXVxyXG4gICAqL1xyXG4gIGdldENoZWNrZWRBbGxOb2RlcygpIHtcclxuICAgIGNvbnN0IHsgY2hlY2tlZEtleXMsIGhhbGZDaGVja2VkS2V5cywga2V5RW50aXRpZXMgfSA9XHJcbiAgICAgIHRoaXMubnNjVHJlZVJlZi5jdXJyZW50LnN0YXRlO1xyXG4gICAgbGV0IGNoZWNrZWRLZXlzQWxsID0gY2hlY2tlZEtleXMuY29uY2F0KGhhbGZDaGVja2VkS2V5cyk7XHJcbiAgICBsZXQgbm9kZXMgPSBbXTtcclxuICAgIGNoZWNrZWRLZXlzQWxsLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5vZGUgPSBrZXlFbnRpdGllc1trZXldLm5vZGUgYXMgTnNjRGF0YU5vZGVQcm9wcztcclxuICAgICAgbm9kZXMucHVzaChub2RlLnByb3BzLmRhdGFyZWYpO1xyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfVxyXG5cclxuICAvLyDmt7vliqDmqKHlnZdcclxuICBoYW5kbGVBZGRNb2R1bGUgPSAobm9kZSkgPT4ge1xyXG4gICAgY29uc3QgaGFuZGxlQWRkID0gdGhpcy5wcm9wcy5oYW5kbGVBZGQ7XHJcbiAgICBoYW5kbGVBZGQgJiYgaGFuZGxlQWRkKG5vZGUpO1xyXG4gIH07XHJcblxyXG4gIGhhbmRsZUVkaXRNb2R1bGUgPSAobm9kZSkgPT4ge1xyXG4gICAgY29uc3QgaGFuZGxlRWRpdCA9IHRoaXMucHJvcHMuaGFuZGxlRWRpdDtcclxuICAgIGhhbmRsZUVkaXQgJiYgaGFuZGxlRWRpdChub2RlKTtcclxuICB9O1xyXG5cclxuICBoYW5kbGVEZWxldGVNb2R1bGUgPSAobm9kZSkgPT4ge1xyXG4gICAgY29uc3QgaGFuZGxlRGVsZXRlID0gdGhpcy5wcm9wcy5oYW5kbGVEZWxldGU7XHJcbiAgICBoYW5kbGVEZWxldGUgJiYgaGFuZGxlRGVsZXRlKG5vZGUpO1xyXG4gIH07XHJcblxyXG4gIF9vbkxvYWREYXRhID0gKHRyZWVOb2RlOiBFdmVudERhdGFOb2RlICYgeyBwcm9wczogeyBkYXRhcmVmIH0gfSkgPT5cclxuICAgIG5ldyBQcm9taXNlPHZvaWQ+KChyZXNvbHZlKSA9PiB7XHJcbiAgICAgIGNvbnN0IF90aGlzID0gdGhpcyxcclxuICAgICAgICBub2RlID0gdHJlZU5vZGUucHJvcHMuZGF0YXJlZjtcclxuICAgICAgdGhpcy5zdG9yZS5sYXp5TG9hZChub2RlLCBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmVzb2x2ZShub2RlKTtcclxuICAgICAgICBfdGhpcy5mb3JjZVVwZGF0ZSgpO1xyXG4gICAgICB9KTtcclxuICAgIH0pO1xyXG5cclxuICByZW5kZXJUZW1wbGF0ZSh0cmVlUHJvcHMgPSB7fSBhcyBJVHJlZVBhbmVsUHJvcHMsIG5ld01lbnVEYXRhcyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRyZWVEYXRhLCBvcGVuS2V5cywgLi4ucHJvcHMgfSA9IHRyZWVQcm9wcztcclxuICAgIGNvbnN0IF90aGlzID0gdGhpcztcclxuICAgIGlmIChwcm9wcy5jaGVja1Byb3BhZ2F0aW9uKSB7XHJcbiAgICAgIHByb3BzLmNoZWNrU3RyaWN0bHkgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLnNob3dJY29uID09IG51bGwpIHtcclxuICAgICAgcHJvcHMuc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgfVxyXG5cclxuICAgIGxldCB7IGxhenlsb2FkIH0gPSB0aGlzLnN0b3JlLmNvbmZpZztcclxuICAgIGlmIChsYXp5bG9hZCkge1xyXG4gICAgICBwcm9wcy5sb2FkRGF0YSA9IHRoaXMuX29uTG9hZERhdGE7XHJcbiAgICB9XHJcbiAgICBjb25zdCBvbkNoZWNrRm4gPSBwcm9wcy5vbkNoZWNrO1xyXG4gICAgcHJvcHMub25DaGVjayA9IGZ1bmN0aW9uIChjaGVja2VkS2V5cywgZSkge1xyXG4gICAgICBfdGhpcy5zZXRTdGF0ZSh7IGNoZWNrZWRLZXlzOiBjaGVja2VkS2V5cyB9KTtcclxuICAgICAgdXRpbHMuY2FsbGJhY2sob25DaGVja0ZuLCBfdGhpcywgW2NoZWNrZWRLZXlzLCBlXSk7XHJcbiAgICB9O1xyXG4gICAgY29uc3Qgb25TZWxlY3RGbiA9IHByb3BzLm9uU2VsZWN0O1xyXG4gICAgcHJvcHMub25TZWxlY3QgPSAoc2VsZWN0ZWRLZXlzLCBub2RlSW5mbykgPT4ge1xyXG4gICAgICB1dGlscy5jYWxsYmFjayhvblNlbGVjdEZuLCBfdGhpcywgW3NlbGVjdGVkS2V5cywgbm9kZUluZm9dKTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgc2VsZWN0Tm9kZTogbm9kZUluZm8uc2VsZWN0ZWQgPyBub2RlSW5mby5zZWxlY3RlZE5vZGVzWzBdIDogbnVsbCxcclxuICAgICAgICBzZWxlY3RlZEtleXMsXHJcbiAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICBpZiAob3BlbktleXMpIHtcclxuICAgICAgcHJvcHMuZXhwYW5kZWRLZXlzID0gb3BlbktleXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBkZWxldGUgcHJvcHMuZXhwYW5kZWRLZXlzO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPFNwaW4gc3Bpbm5pbmc9e3RoaXMuc3RhdGUubG9hZGluZ30+XHJcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e3N0eWxlc1tcIm5zYy10cmVlLWJveFwiXX0+XHJcbiAgICAgICAgICB7KF90aGlzLnByb3BzLmVkaXRhYmxlIHx8IF90aGlzLnByb3BzLnNlYXJjaGFibGUpICYmIChcclxuICAgICAgICAgICAgPFRyZWVTZWFyY2hcclxuICAgICAgICAgICAgICB0cmVlSW5zdGFuY2U9e3RoaXN9XHJcbiAgICAgICAgICAgICAgaGFuZGxlQWRkTW9kdWxlPXt0aGlzLmhhbmRsZUFkZE1vZHVsZX1cclxuICAgICAgICAgICAgICBoYW5kbGVFZGl0TW9kdWxlPXt0aGlzLmhhbmRsZUVkaXRNb2R1bGV9XHJcbiAgICAgICAgICAgICAgaGFuZGxlRGVsZXRlTW9kdWxlPXt0aGlzLmhhbmRsZURlbGV0ZU1vZHVsZX1cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7QXJyYXkuaXNBcnJheShuZXdNZW51RGF0YXMpICYmIG5ld01lbnVEYXRhcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgPFRyZWUgcmVmPXt0aGlzLm5zY1RyZWVSZWZ9IGNoZWNrYWJsZSB7Li4ucHJvcHN9PlxyXG4gICAgICAgICAgICAgIHt0aGlzLnJlbmRlclRyZWVOb2RlcyhuZXdNZW51RGF0YXMsIHByb3BzLnJlbmRlclRyZWVOb2RlKX1cclxuICAgICAgICAgICAgPC9UcmVlPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9TcGluPlxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRyZWVOb2RlcyA9IChkYXRhLCByZW5kZXJGbikgPT4ge1xyXG4gICAgY29uc3Qgbm9kZVByb3BzID0gdGhpcy5wcm9wcy5ub2RlUHJvcHMgfHwge307XHJcbiAgICBjb25zdCB7IGtleTogbm9kZUtleSwgLi4ucmVzdE5vZGVQcm9wcyB9ID0gbm9kZVByb3BzO1xyXG4gICAgY29uc3Qgbm9kZXMgPSBkYXRhLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7IGRhdGFyZWY6IGl0ZW0gfSBhcyBUcmVlTm9kZVByb3BzO1xyXG4gICAgICBpdGVtLmNvbmZpZy5maWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IHtcclxuICAgICAgICBpZiAoZmllbGQubmFtZSA9PT0gXCJrZXlcIiAmJiBub2RlS2V5KSB7XHJcbiAgICAgICAgICBwcm9wcy5rZXkgPSBpdGVtW25vZGVLZXldO1xyXG4gICAgICAgICAgaXRlbS5rZXkgPSBpdGVtW25vZGVLZXldO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBwcm9wc1tmaWVsZC5uYW1lXSA9IGl0ZW1bZmllbGQubmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgT2JqZWN0LmFzc2lnbihwcm9wcywgcmVzdE5vZGVQcm9wcyk7XHJcbiAgICAgIGlmIChyZW5kZXJGbikge1xyXG4gICAgICAgIHByb3BzID0gdXRpbHMuY2FsbGJhY2socmVuZGVyRm4sIHRoaXMsIFtwcm9wcywgaXRlbV0pO1xyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAoaXRlbS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxUcmVlTm9kZSB7Li4ucHJvcHN9IGtleT17aXRlbS5hdHRyaWJ1dGUua2V5fT5cclxuICAgICAgICAgICAge3RoaXMucmVuZGVyVHJlZU5vZGVzKGl0ZW0uY2hpbGROb2RlcywgcmVuZGVyRm4pfVxyXG4gICAgICAgICAgPC9UcmVlTm9kZT5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCB0aXRsZU5vZGUgPSBudWxsO1xyXG4gICAgICBpZiAoaXRlbS5hdHRyaWJ1dGUuc3VidGl0bGUpIHtcclxuICAgICAgICB0aXRsZU5vZGUgPSAoXHJcbiAgICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4+e2l0ZW0udGl0bGV9PC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IGNvbG9yOiBcInJnYmEoMCwwLDAsLjQ1KVwiIH19XHJcbiAgICAgICAgICAgID57YO+8iCR7aXRlbS5hdHRyaWJ1dGUuc3VidGl0bGV977yJYH08L3NwYW4+XHJcbiAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aXRsZU5vZGUgPSA8c3Bhbj57aXRlbS50aXRsZX08L3NwYW4+O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiA8VHJlZU5vZGUgey4uLnByb3BzfSBrZXk9e2l0ZW0uYXR0cmlidXRlLmtleX0gdGl0bGU9e3RpdGxlTm9kZX0gLz47XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gbm9kZXM7XHJcbiAgfTtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgTnNjVHJlZTtcclxuIl19
|
package/lib/config.d.ts
CHANGED
|
@@ -9,6 +9,7 @@ interface IComponentConfig {
|
|
|
9
9
|
viewBizUrl?: string;
|
|
10
10
|
antdStyle?: boolean;
|
|
11
11
|
allowChars?: boolean;
|
|
12
|
+
storePrefix?: string;
|
|
12
13
|
}
|
|
13
14
|
export declare const setConfig: (config: IComponentConfig) => {
|
|
14
15
|
loginProjectName: string;
|
|
@@ -21,6 +22,7 @@ export declare const setConfig: (config: IComponentConfig) => {
|
|
|
21
22
|
viewBizUrl: string;
|
|
22
23
|
antdStyle: boolean;
|
|
23
24
|
allowChars: boolean;
|
|
25
|
+
storePrefix: string;
|
|
24
26
|
} & IComponentConfig;
|
|
25
27
|
declare const _default: () => IComponentConfig;
|
|
26
28
|
export default _default;
|
package/lib/config.js
CHANGED
|
@@ -26,7 +26,8 @@ var configData = {
|
|
|
26
26
|
//默认antd样式
|
|
27
27
|
antdStyle: true,
|
|
28
28
|
//input特殊字符全局变量
|
|
29
|
-
allowChars: false
|
|
29
|
+
allowChars: false,
|
|
30
|
+
storePrefix: ""
|
|
30
31
|
};
|
|
31
32
|
export var setConfig = function setConfig(config) {
|
|
32
33
|
return Object.assign(configData, config);
|
|
@@ -34,4 +35,4 @@ export var setConfig = function setConfig(config) {
|
|
|
34
35
|
export default (function () {
|
|
35
36
|
return configData;
|
|
36
37
|
});
|
|
37
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9jb21wb25lbnRzL2NvbmZpZy50cyJdLCJuYW1lcyI6WyJjb25maWdEYXRhIiwibG9naW5Qcm9qZWN0TmFtZSIsImF1dGhvcml6YXRpb24iLCJsb2dpblBhdGgiLCJleGNlcHRpb241MDUiLCJleGNlcHRpb240MDMiLCJpY29uZm9udFVybCIsInZpZXdVcmwiLCJ2aWV3Qml6VXJsIiwiYW50ZFN0eWxlIiwiYWxsb3dDaGFycyIsInN0b3JlUHJlZml4Iiwic2V0Q29uZmlnIiwiY29uZmlnIiwiT2JqZWN0IiwiYXNzaWduIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZUEsSUFBSUEsVUFBVSxHQUFHO0FBQ2Y7QUFDQUMsRUFBQUEsZ0JBQWdCLEVBQUUsZUFGSDtBQUdmO0FBQ0FDLEVBQUFBLGFBQWEsRUFBRSxvQkFKQTtBQUtmO0FBQ0FDLEVBQUFBLFNBQVMsRUFBRSxRQU5JO0FBT2Y7QUFDQUMsRUFBQUEsWUFBWSxFQUFFLGdCQVJDO0FBU2Y7QUFDQUMsRUFBQUEsWUFBWSxFQUFFLGdCQVZDO0FBV2Y7QUFDQUMsRUFBQUEsV0FBVyxFQUFFLEVBWkU7QUFhZjtBQUNBQyxFQUFBQSxPQUFPLEVBQUUscUNBZE07QUFlZjtBQUNBQyxFQUFBQSxVQUFVLEVBQUUseUNBaEJHO0FBaUJmO0FBQ0FDLEVBQUFBLFNBQVMsRUFBRSxJQWxCSTtBQW1CZjtBQUNBQyxFQUFBQSxVQUFVLEVBQUUsS0FwQkc7QUFxQmZDLEVBQUFBLFdBQVcsRUFBRTtBQXJCRSxDQUFqQjtBQXdCQSxPQUFPLElBQU1DLFNBQVMsR0FBRyxTQUFaQSxTQUFZLENBQUNDLE1BQUQ7QUFBQSxTQUN2QkMsTUFBTSxDQUFDQyxNQUFQLENBQWNmLFVBQWQsRUFBMEJhLE1BQTFCLENBRHVCO0FBQUEsQ0FBbEI7QUFFUCxnQkFBZTtBQUFBLFNBQXdCYixVQUF4QjtBQUFBLENBQWYiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBARGVzY3JpcHR0aW9uOlxyXG4gKiBAdmVyc2lvbjpcclxuICogQEF1dGhvcjogcnh6aHVcclxuICogQERhdGU6IDIwMjEtMDMtMjUgMTA6MzQ6NTNcclxuICogQExhc3RFZGl0b3JzOiByeHpodVxyXG4gKiBATGFzdEVkaXRUaW1lOiAyMDIxLTA0LTIzIDE2OjQ1OjAzXHJcbiAqL1xyXG5pbnRlcmZhY2UgSUNvbXBvbmVudENvbmZpZyB7XHJcbiAgbG9naW5Qcm9qZWN0TmFtZT86IHN0cmluZztcclxuICBhdXRob3JpemF0aW9uPzogc3RyaW5nO1xyXG4gIGxvZ2luUGF0aD86IHN0cmluZztcclxuICBleGNlcHRpb241MDU/OiBzdHJpbmc7XHJcbiAgZXhjZXB0aW9uNDAzPzogc3RyaW5nO1xyXG4gIGljb25mb250VXJsPzogc3RyaW5nO1xyXG4gIHZpZXdVcmw/OiBzdHJpbmc7XHJcbiAgdmlld0JpelVybD86IHN0cmluZztcclxuICBhbnRkU3R5bGU/OiBib29sZWFuO1xyXG4gIGFsbG93Q2hhcnM/OiBib29sZWFuO1xyXG4gIHN0b3JlUHJlZml4Pzogc3RyaW5nO1xyXG59XHJcblxyXG5sZXQgY29uZmlnRGF0YSA9IHtcclxuICAvL+eZu+W9leeVjOmdoumhueebruWQjeensFxyXG4gIGxvZ2luUHJvamVjdE5hbWU6IFwiTlNDIEZyYW1ld29ya1wiLFxyXG4gIC8v57O757uf5oyH57q577yM55m75b2V5pe25YCZ6ZyA6KaB5Lyg6YCSXHJcbiAgYXV0aG9yaXphdGlvbjogXCJCYXNpYyBibk5qT201ell3PT1cIixcclxuICAvL+eZu+mZhueVjOmdolVSTFxyXG4gIGxvZ2luUGF0aDogXCIvbG9naW5cIixcclxuICAvLzUwNemUmeivr1VSTFxyXG4gIGV4Y2VwdGlvbjUwNTogXCIvZXhjZXB0aW9uLzUwMFwiLFxyXG4gIC8vNDAz6ZSZ6K+vVVJMXHJcbiAgZXhjZXB0aW9uNDAzOiBcIi9leGNlcHRpb24vNDAzXCIsXHJcbiAgLy/pmL/ph4zlm77moIflupNVUkxcclxuICBpY29uZm9udFVybDogXCJcIixcclxuICAvL+WQjuWPsOezu+e7n+inhuWbvuiOt+WPluWcsOWdgFxyXG4gIHZpZXdVcmw6IFwiL2JsYWRlLXN5c3RlbS9kaWN0L2RpY3Rpb25hcnk/Y29kZT1cIixcclxuICAvL+WQjuWPsOS4muWKoeinhuWbvuiOt+WPluWcsOWdgFxyXG4gIHZpZXdCaXpVcmw6IFwiL2JsYWRlLXN5c3RlbS9kaWN0LWJpei9kaWN0aW9uYXJ5P2NvZGU9XCIsXHJcbiAgLy/pu5jorqRhbnRk5qC35byPXHJcbiAgYW50ZFN0eWxlOiB0cnVlLFxyXG4gIC8vaW5wdXTnibnmrorlrZfnrKblhajlsYDlj5jph49cclxuICBhbGxvd0NoYXJzOiBmYWxzZSxcclxuICBzdG9yZVByZWZpeDogXCJcIixcclxufTtcclxuXHJcbmV4cG9ydCBjb25zdCBzZXRDb25maWcgPSAoY29uZmlnOiBJQ29tcG9uZW50Q29uZmlnKSA9PlxyXG4gIE9iamVjdC5hc3NpZ24oY29uZmlnRGF0YSwgY29uZmlnKTtcclxuZXhwb3J0IGRlZmF1bHQgKCk6IElDb21wb25lbnRDb25maWcgPT4gY29uZmlnRGF0YTtcclxuIl19
|
|
@@ -9,7 +9,7 @@ declare class EditorForm extends PureComponent<any> {
|
|
|
9
9
|
dictNames: any;
|
|
10
10
|
};
|
|
11
11
|
valid: any;
|
|
12
|
-
show(value?: any, editorflag?:
|
|
12
|
+
show(value?: any, editorflag?: string): void;
|
|
13
13
|
hide(hide?: boolean): void;
|
|
14
14
|
hideForm(): void;
|
|
15
15
|
onSubmit(): void;
|