nsc-react-component 4.5.2 → 4.5.3
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.
|
@@ -1038,7 +1038,7 @@ class BasePage extends PureComponent {
|
|
|
1038
1038
|
columnButtons.push(children);
|
|
1039
1039
|
}
|
|
1040
1040
|
}
|
|
1041
|
-
actionColumn && tableColumn.push({
|
|
1041
|
+
actionColumn && columnButtons.length > 0 && tableColumn.push({
|
|
1042
1042
|
title: "操作",
|
|
1043
1043
|
dataIndex: "action",
|
|
1044
1044
|
align: actionProps !== null && actionProps !== void 0 && actionProps.textAlign ? actionProps === null || actionProps === void 0 ? void 0 : actionProps.textAlign : baseActionColumn.textAlign ? baseActionColumn.textAlign : "left",
|
|
@@ -1247,4 +1247,4 @@ class BasePage extends PureComponent {
|
|
|
1247
1247
|
}
|
|
1248
1248
|
_defineProperty(BasePage, "convertColumns", convertColumns);
|
|
1249
1249
|
export default BasePage;
|
|
1250
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRCdXR0b25QZXJtaXNzb25zIiwiSGVhZGVyU2VhcmNoIiwiY29udmVydENvbHVtbnMiLCJnZXROZXdDb2x1bW5zIiwiaGFzRml4ZWRMZWZ0Q29sdW1ucyIsInRocm90dGxlIiwiY29udmVydFN0cmluZ1RvT2JqIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiY2hlY2tlZFRyZWVLZXlzIiwibmFtZSIsInVzZXJUeXBlIiwiYWNjb3VudCIsInN0YXRlIiwidmFsdWUiLCJkZXB0SWQiLCJvblNlYXJjaCIsInNlbGVjdGVkIiwicmVzIiwia2V5Iiwia2V5cyIsImxlbmd0aCIsInRhYmxlV3JhcHBlclJlZiIsImN1cnJlbnQiLCJ0YWJsZUhlYWRlciIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJoZWFkZXJIZWlnaHQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJoZWlnaHQiLCJ0YWJsZUhlYWRlckhlaWdodCIsInNldFN0YXRlIiwiY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQiLCJ0eXBlIiwic2VsZWN0ZWRSb3dLZXlzIiwic2VsZWN0ZWRSb3dEYXRhcyIsInRyZWVTZWxlY3RlZEtleSIsImV4cGFuZCIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwibW9yZU9wZW4iLCJlbGVtZW50SGVpZ2h0IiwicGVybWlzc2lvbkJ1dHRvbnMiLCJxdWVyeVBhcmFtcyIsImJ1dHRvbnNMb2FkaW5nIiwidHJlZVdpZHRoIiwic2hvd0xlZnQiLCJkZWZhdHVsdEJ1dHRvbiIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiaW5pdERhdGEiLCJwZXJtaXNzb24iLCJwYWdlUmVmIiwiY2xpZW50SGVpZ2h0Iiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsInRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQiLCJzZXRUaW1lb3V0IiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MiIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiZG9TdWJtaXQiLCJkYXRhIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwibGFiZWwiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93Rm9ybSIsIl90aGlzJHByb3BzJGZvcm1QYWdlUCIsImVkaXRvcmZsYWciLCJmb3JtUGFnZVByb3BzIiwiZm9ybVR5cGUiLCJfdGhpcyRwcm9wcyRmb3JtUGFnZVAyIiwiZnVuY3MiLCJwYXRobmFtZSIsImNvbmNhdCIsInRhYmxlQ29kZSIsImlkIiwiaGlzdG9yeSIsInNlcnZpY2VOYW1lIiwic2VydmljZVBhdGgiLCJEYXRlIiwiZ2V0VGltZSIsInRpdGxlIiwiX3RoaXMkZWRpdG9yUmVmIiwibmV3VmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwic2hvdyIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMiIsInNldExvYWRpbmciLCJsb2FkaW5nIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMyIsInNldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNCIsInNldEZvcm1WYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNSIsImdldEZvcm1WYWx1ZSIsIm9uRGVsZXRlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMiIsImRlbGV0ZVBvc2l0aW9uIiwiZGVsZXRlVXJsIiwiZGVsZXRlUGFyYW1zIiwiYnV0dG9uQ2xpY2siLCJyZXF1ZXN0UGFyYW1zIiwicmVxdWVzdFVybHMiLCJyZXF1ZXN0Q29uZmlnIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJ1cmwiLCJ3YXJuaW5nIiwiY29uZmlybSIsImNvbnRlbnQiLCJvbk9rIiwicmVjb3JkIiwiaWRzIiwiVXRpbHMiLCJFcnJvciIsImRhdGFQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4Iiwiam9pbiIsImZpbmFsUGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsIm1zZyIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImRlZmF1bHRSZXF1ZXN0Q29uZmlnIiwidGFibGVQcm9wcyIsInN0b3JlIiwidGFibGVTdG9yZSIsImNvbnZlcnRRdWVyeVBhcmFtcyIsInJlcXVlc3RDb25pZyIsInN0b3JlQ29uZmlnIiwic3RvcmVQYXJhbXMiLCJvdGhlclN0b3JlQ29uZmlnIiwiX2V4Y2x1ZGVkMiIsImxvYWQiLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28yIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIm9uUXVlcnlDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsImF1dG9Mb2FkIiwicmVsb2FkIiwiY2FsbGJhY2siLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwidHJlZUxvYWQiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjkiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX2V4Y2x1ZGVkMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGxhY2VtZW50Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyb3dSZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkNCIsImV2ZW50T3B0aW9uIiwiVWl0bHMiLCJmdW5jIiwiRnVuY3Rpb24iLCJwdXNoIiwiZSIsImV2YWwiLCJudW1iZXIiLCJidXR0b25OdW1iZXIiLCJfaXRlbSRwcm9wczMiLCJfZXhjbHVkZWQ1IiwiTnVtYmVyIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNiIsInRyaWdnZXIiLCJ0cmVlU2VsZWN0Iiwic2VsZWN0ZWRLZXlzIiwib2JqIiwiX3RoaXMkc2VhcmNoUmVmMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1Iiwia2V5d29yZCIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0IiwidHJlZVByb3BzIiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjExIiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50MiIsImhhbmRsZU1vdXNlRG93biIsInByZXZlbnREZWZhdWx0IiwibWFzayIsImRvY3VtZW50IiwiY3NzVGV4dCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImhhbmRsZU1vdXNlTW92ZSIsIm5ld1dpZHRoIiwic2NyZWVuWCIsInRocm90dGxlZE1vdXNlTW92ZSIsImhhbmRsZU1vdXNlVXAiLCJnZXRFbGVtZW50QnlJZCIsInJlbW92ZUNoaWxkIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiX3RoaXMkcHJvcHMkZm9ybVBhZ2VQMyIsIl90aGlzJHByb3BzJGJ1dHRvbkNsaSIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsImJ1dHRvbnMiLCJlZGl0b3JGb3JtIiwib25TaG93Rm9ybSIsImZvcm1DaGFuZ2VWYWxpZCIsInRvb2xCdXR0b25Qb3NpdGlvbiIsInBlcm1pc3Npb24iLCJoYXMiLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwidGFibGVUaXRsZSIsIm90aGVydGFibGVQYXJhbXMiLCJfZXhjbHVkZWQ3IiwibmV3VGFibGVTdG9yZSIsIl9uZXdUYWJsZVN0b3JlJHJlcXVlcyIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkOCIsInRhYmxlUGFyYW1zIiwibGlzdGVuZXJzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJ0YWJsZUxvYWRDYWxsQmFjayIsImRlZmF1bHRWYWx1ZSIsIm1lbnVDb2RlIiwicGVybWlzc29ucyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRvb2xCdXR0b25zIiwiZm9ybUJ1dHRvbiIsImJ1dHRvbk1hcCIsImVkaXRvciIsImRlbGV0ZSIsInNlYXJjaCIsInJldHVybkJ1dHRvbiIsIl9idXR0b25NYXAkY29kZSIsImRlZmF1bHRQcm9wcyIsIm9uRWRpdG9yIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhMiIsIm9uRWRpdG9yQ2FsbEJhY2siLCJvblNlYXJjaENhbGxCYWNrIiwiY2hlY2tQZXJzc2lvbiIsImluZGV4T2YiLCJvbkFkZCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzgiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM5Iiwib25BZGRDYWxsQmFjayIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2NoaWxkJHByb3BzNCIsIl9jaGlsZCRwcm9wczUiLCJfY2hpbGQkcHJvcHM2IiwiX2NoaWxkJHByb3BzNyIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsIl9pdGVtJHByb3BzNyIsIl9pdGVtJHByb3BzOCIsIl9pdGVtJHByb3BzOSIsImRhdGFJbmRleCIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsImZpeGVkRmxhZyIsIm9yZWRlckNvbHVtbiIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwiZ2xvYmFsVGFibGVUb29sIiwidGFibGVUb29sRmxhZyIsInRhYmxlQ29udGVudEhlaWdodCIsIlBhZ2luYXRpb25IZWlnaHQiLCJwYWdpbmF0aW9uIiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0Iiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5Iiwib25Nb3VzZURvd24iLCJjaGVja2FibGUiLCJzZWFyY2hhYmxlIiwib25TZWxlY3QiLCJvblJlc2V0IiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMyIsInNlYXJjaEZvcm1Qcm9wcyIsInBhZ2VDb250ZW50UmVmIiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJfcmVjb3JkJGNoaWxkTm9kZXMiLCJfcmVjb3JkJGNoaWxkTm9kZXMyIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMxMCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzExIiwib25TdW1iaXRDYWxsQmFjayIsImZvcm1zIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJyZXF1ZXN0T2JqZWN0IiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtLCB7IEZvcm1QYWdlUHJvcHMgfSBmcm9tIFwiLi4vRm9ybVBhZ2UvaW5kZXhcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJGdW5jdGlvbiwgZ2V0TGVzcywgZ2V0Tm9kZSwgc2ltcGxpZnlDb2x1bW5zIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0TG9jYWxTdG9yZSwgcHgydncsIGdldEJ1dHRvblBlcm1pc3NvbnMgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0Q29sdW1ucywgZ2V0TmV3Q29sdW1ucywgaGFzRml4ZWRMZWZ0Q29sdW1ucyB9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2gvaXNFcXVhbFwiO1xyXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xyXG5pbXBvcnQgQ29tcG91bmRlZFNwYWNlIGZyb20gXCJhbnRkL2VzL3NwYWNlXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRTdHJpbmdUb09iaiB9IGZyb20gXCIuLi9TZXR0aW5nVXRpbC91dGlsc1wiO1xyXG50eXBlIEJ1dHRvbkl0ZW0gPVxyXG4gIHwgc3RyaW5nXHJcbiAgfCB7XHJcbiAgICAgIGNvZGU6IHN0cmluZztcclxuICAgICAgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG4gICAgICBwcm9wcz86IGFueTtcclxuICAgICAgbmFtZT86IHN0cmluZztcclxuICAgIH07XHJcblxyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1ucz86IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQnV0dG9uSXRlbVtdOyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InLCdkZWxldGVfYmF0Y2gnXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIiB8IFwicGFnZVwiIHwgXCJhdXRvXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICB0YWJsZUxvYWRDYWxsQmFjaz86IGFueTsgLy/liJfooajmn6Xor6Llm57osIMtLWxvYWRcclxuICB9O1xyXG4gIHBhZ2VUeXBlPzogXCJub3JtYWxcIiB8IFwidGFic3BhZ2VcIjtcclxuICBmb3JtUGFnZVByb3BzPzogRm9ybVBhZ2VQcm9wcztcclxuICBidXR0b25DbGljaz86IHtcclxuICAgIG9uQWRkPzogKCkgPT4gdm9pZDtcclxuICAgIG9uRWRpdG9yPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gICAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvbkRlbGV0ZT86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uU3VibWl0PzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICB0YWJsZVdyYXBwZXJSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgc3RhdGljIGNvbnZlcnRDb2x1bW5zID0gY29udmVydENvbHVtbnM7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgIGVsZW1lbnRIZWlnaHQ6IDAsXHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zOiBbXSxcclxuICAgICAgcXVlcnlQYXJhbXM6IHt9LFxyXG4gICAgICB0YWJsZUhlYWRlckhlaWdodDogMCwgLy8g5re75Yqg6KGo5aS06auY5bqm5Yiwc3RhdGVcclxuICAgICAgYnV0dG9uc0xvYWRpbmc6IHt9LFxyXG4gICAgICB0cmVlV2lkdGg6IHRoaXMucHJvcHMuc2hvd0xlZnQgPyAyNjAgOiAwLFxyXG4gICAgICBkZWZhdHVsdEJ1dHRvbjogW1wiYWRkXCIsIFwiZGVsZXRlXCIsIFwic2VhcmNoXCIsIFwiZWRpdG9yXCIsIFwiZGVsZXRlX2JhdGNoXCJdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSwgcGVybWlzc29uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAvLyDmt7vliqDnqpflj6NyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCk7XHJcblxyXG4gICAgLy8g5Yid5aeL6K6h566X6KGo5aS06auY5bqmXHJcbiAgICBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQsIDApO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5zaG93TGVmdCAhPT0gdGhpcy5wcm9wcy5zaG93TGVmdCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlV2lkdGg6IHRoaXMucHJvcHMuc2hvd0xlZnQgPyAyNjAgOiAwLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAvLyDnp7vpmaRyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFxyXG4gICAgICBcInJlc2l6ZVwiLFxyXG4gICAgICB0aGlzLnRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHRcclxuICAgICk7XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGRhdGEsIGxhYmVsID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZvcm1QYWdlUHJvcHM/LmZvcm1UeXBlID09IFwicGFnZVwiKSB7XHJcbiAgICAgIGNvbnN0IHsgZnVuY3MgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgbGV0IHBhdGhuYW1lID0gYC9mb3JtcGFnZS8ke2VkaXRvcmZsYWcgPyBlZGl0b3JmbGFnIDogXCJhZGRcIn0vdGFibGUvJHtcclxuICAgICAgICB0aGlzLnByb3BzLnRhYmxlQ29kZVxyXG4gICAgICB9YDtcclxuICAgICAgaWYgKGVkaXRvcmZsYWcgPT0gXCJlZGl0b3JcIiB8fCBlZGl0b3JmbGFnID09IFwic2VhcmNoXCIpIHtcclxuICAgICAgICBwYXRobmFtZSA9IHBhdGhuYW1lICsgXCI/aWQ9XCIgKyB2YWx1ZS5pZDtcclxuICAgICAgfVxyXG4gICAgICBmdW5jcz8uaGlzdG9yeShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwYXRobmFtZTogcGF0aG5hbWUsXHJcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogXCJzZXR0aW5nLXdlYlwiLFxyXG4gICAgICAgICAgc2VydmljZVBhdGg6IFwiL3NldHRpbmdcIixcclxuICAgICAgICAgIGlkOlxyXG4gICAgICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSArXHJcbiAgICAgICAgICAgICh2YWx1ZT8uaWQgfHwgXCJfXCIpICtcclxuICAgICAgICAgICAgZWRpdG9yZmxhZyArXHJcbiAgICAgICAgICAgIFwi4oCUXCIgK1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLnRhYmxlQ29kZSArXHJcbiAgICAgICAgICAgICh2YWx1ZT8uaWQgPyBcIl9cIiArIHZhbHVlLmlkIDogXCJcIiksXHJcbiAgICAgICAgICB0aXRsZTpcclxuICAgICAgICAgICAgYOOAkCR7XHJcbiAgICAgICAgICAgICAgZWRpdG9yZmxhZyA9PSBcImFkZFwiXHJcbiAgICAgICAgICAgICAgICA/IFwi5paw5aKeXCJcclxuICAgICAgICAgICAgICAgIDogZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICA/IFwi57yW6L6RXCJcclxuICAgICAgICAgICAgICAgIDogXCLmn6XnnItcIlxyXG4gICAgICAgICAgICB944CRYCArIHRoaXMucHJvcHMuZm9ybVBhZ2VQcm9wcz8udGl0bGUgfHwgXCJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiYWRkVGFiXCJcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBuZXdWYWx1ZSA9IHZhbHVlID8geyAuLi52YWx1ZSB9IDogbnVsbDtcclxuICAgICAgdGhpcy5lZGl0b3JSZWY/LmN1cnJlbnQ/LnNob3cobmV3VmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUsIHR5cGUgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnksIGRlbGV0ZVBvc2l0aW9uID0gXCJyb3dcIikge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMgPSB7fSxcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dEYXRhcyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gICAgbGV0IHVybCA9IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA/IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA6IGRlbGV0ZVVybDtcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgID8gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgOiBkZWxldGVQYXJhbXM7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGJ1dHRvbkNsaWNrLm9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25EZWxldGUsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgcmVjb3JkOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93RGF0YXMgOiBkYXRhLFxyXG4gICAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhPy5pZCxcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IGRhdGE6IGRhdGFQYXJhbXMgPSB7fSwgLi4ub3RoZXJQYXJhbXMgfSA9IHBhcmFtcztcclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgICAuLi5kYXRhUGFyYW1zLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgZmluYWxQYXJhbXMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgZmluYWxQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMsIC4uLm90aGVyUGFyYW1zIH07XHJcbiAgICAgICAgcmVxdWVzdCh1cmwsIHtcclxuICAgICAgICAgIC4uLmZpbmFsUGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFyZXMubXNnKSB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlID0ge30gfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG5cclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25pZzogc3RvcmVDb25maWcgPSB7fSB9ID0gdGFibGVTdG9yZTtcclxuICAgIGNvbnN0IHsgcGFyYW1zOiBzdG9yZVBhcmFtcyA9IHt9LCAuLi5vdGhlclN0b3JlQ29uZmlnIH0gPSBzdG9yZUNvbmZpZztcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5vdGhlclN0b3JlQ29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHsgLi4uc3RvcmVQYXJhbXMsIC4uLmZpbmFsUGFyYW1zIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgb25TZWFyY2gsXHJcbiAgICAgIG9uQ2FsbEJhY2tzLFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSA9IHt9IH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHBhcmFtczogcGFyYW1zIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0cmVlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93S2V5cyhkYXRhKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGEpO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAga2V5ID0gcm93S2V5KGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBrZXkgPSBpdGVtW3Jvd0tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCB0b29sYmFyRmxhZykge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUubW9yZU9wZW59XHJcbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIC8vIG9wZW49e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJvd1JlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzLCB0YWJsZVByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBrZXkgPSByb3dLZXkocm93UmVjb3JkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGtleSA9IHJvd1JlY29yZFtyb3dLZXldO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSB0cnVlIHx8IGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IHRydWUpXHJcbiAgICAgIHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHtcclxuICAgICAgICAgICAgICByZWNvcmQ6IHJvd1JlY29yZCxcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IFV0aWxzID0geyAuLi50aGlzLnByb3BzLlVpdGxzIH07XHJcbiAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb24sVXRpbHNcIiwgcmVjb3JkU2hvdyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3cgPSBmdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3JkID0gcm93UmVjb3JkO1xyXG4gICAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgbnVtYmVyID0gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyb3dSZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1trZXldIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXMsIG9iajogb2JqIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gICAgLy8gdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAvLyAgIHNlbGVjdGVkS2V5cyxcclxuICAgIC8vICAgb2JqLFxyXG4gICAgLy8gXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICBjb252ZXJ0UXVlcnlQYXJhbXMoKSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcztcclxuICAgIHJldHVybiBjb252ZXJ0U3RyaW5nVG9PYmoocXVlcnlQYXJhbXMsIHRoaXMucHJvcHMuVXRpbHMgfHwge30sIHtcclxuICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8g6K6h566X6KGo5aS06auY5bqm55qE5pa55rOVXHJcbiAgY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudCkge1xyXG4gICAgICBjb25zdCB0YWJsZUhlYWRlciA9XHJcbiAgICAgICAgdGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgXCJhbnQtdGFibGUtdGhlYWRcIlxyXG4gICAgICAgIClbMF07XHJcbiAgICAgIGlmICh0YWJsZUhlYWRlcikge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRhYmxlSGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgICBpZiAoaGVhZGVySGVpZ2h0ICE9PSB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0KSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgdGFibGVIZWFkZXJIZWlnaHQ6IGhlYWRlckhlaWdodCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgdGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCA9IHRocm90dGxlKFxyXG4gICAgdGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCxcclxuICAgIDUwMFxyXG4gICk7XHJcblxyXG4gIC8vIOS8mOWMluaLluaLveebuOWFs+aWueazlVxyXG4gIGhhbmRsZU1vdXNlRG93bihlOiBSZWFjdC5Nb3VzZUV2ZW50KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgLy8g5Yib5bu66YGu572p5bGC5Lul5aSE55CGaWZyYW1l5Zy65pmvXHJcbiAgICBjb25zdCBtYXNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIG1hc2suc3R5bGUuY3NzVGV4dCA9IGBcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICB6LWluZGV4OiA5OTk5O1xyXG4gICAgICBjdXJzb3I6IGNvbC1yZXNpemU7XHJcbiAgICBgO1xyXG4gICAgbWFzay5pZCA9IFwiZHJhZy1tYXNrXCI7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1hc2spO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU1vdXNlTW92ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld1dpZHRoID0gZS5zY3JlZW5YO1xyXG4gICAgICAvLyDpmZDliLbmnIDlsI8xMDBweO+8jOacgOWkpzUwMHB4XHJcbiAgICAgIGlmIChuZXdXaWR0aCA+PSA1MCAmJiBuZXdXaWR0aCA8PSA4MDApIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdHJlZVdpZHRoOiBuZXdXaWR0aCB9KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB0aHJvdHRsZWRNb3VzZU1vdmUgPSB0aHJvdHRsZShoYW5kbGVNb3VzZU1vdmUsIDE2KTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVNb3VzZVVwID0gKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRocm90dGxlZE1vdXNlTW92ZSk7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGhhbmRsZU1vdXNlVXApO1xyXG4gICAgICAvLyDnp7vpmaTpga7nvanlsYJcclxuICAgICAgY29uc3QgbWFzayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZHJhZy1tYXNrXCIpO1xyXG4gICAgICBpZiAobWFzaykge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobWFzayk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aHJvdHRsZWRNb3VzZU1vdmUpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgaGFuZGxlTW91c2VVcCk7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUHJvcHMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHBlcm1pc3Npb24gPSB7IGhhczogZmFsc2UgfSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0YWJsZVN0b3JlID0ge30sXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgICAgdGl0bGU6IHRhYmxlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IG5ld1RhYmxlU3RvcmUgPSB7IC4uLnRhYmxlU3RvcmUgfTtcclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICBuZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLm5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHtcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIGxvYWQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50YWJsZUxvYWRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50YWJsZUxvYWRDYWxsQmFjayhkYXRhKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5uZXdUYWJsZVN0b3JlLFxyXG4gICAgICB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBvYmogPSBjb252ZXJ0Q29sdW1ucyhjb2x1bW5zLCB7fSk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gZ2V0TmV3Q29sdW1ucyhjb2x1bW5zLCB0aGlzLnByb3BzKTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zID0gb2JqLnNlYXJjaEZvcm1zIHx8IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXMgPSBvYmouZWRpdG9yRm9ybXMgfHwgW107XHJcbiAgICBjb25zdCB0b29sQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCBmb3JtQnV0dG9uOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbnN0IGJ1dHRvbk1hcCA9IHtcclxuICAgICAgZWRpdG9yOiB7IG5hbWU6IFwi57yW6L6RXCIsIGNvZGU6IFwiZWRpdG9yXCIsIGljb246IDxFZGl0T3V0bGluZWQgLz4gfSxcclxuICAgICAgZGVsZXRlOiB7IG5hbWU6IFwi5Yig6ZmkXCIsIGNvZGU6IFwiZGVsZXRlXCIsIGljb246IDxEZWxldGVPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBzZWFyY2g6IHsgbmFtZTogXCLmn6XnnItcIiwgY29kZTogXCJzZWFyY2hcIiwgaWNvbjogPEV5ZU91dGxpbmVkIC8+IH0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmV0dXJuQnV0dG9uID0gKGNvZGUsIHNob3cgPSBcIlwiLCBkZWZhdWx0UHJvcHMgPSB7fSwgbmFtZSkgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgaWNvbjogc2hvd0ljb24gPyBidXR0b25NYXBbY29kZV0uaWNvbiA6IG51bGwsXHJcbiAgICAgICAgdHlwZTogXCJsaW5rXCIsXHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICB9IGFzIGFueTtcclxuXHJcbiAgICAgIGlmIChzaG93KSB7XHJcbiAgICAgICAgcHJvcHMgPSB7IC4uLnByb3BzLCByZWNvcmRTaG93OiBzaG93IH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29kZSA9PSBcImVkaXRvclwiICYmIGJ1dHRvbkNsaWNrLm9uRWRpdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25FZGl0b3IsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gXCJzZWFyY2hcIiAmJiBidXR0b25DbGljay5vblNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uU2VhcmNoLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjYWxsQmFjayA9XHJcbiAgICAgICAgICAgICAgICAgIGNvZGUgPT0gXCJlZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25FZGl0b3JDYWxsQmFja1xyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaztcclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7bmFtZSB8fCBidXR0b25NYXBbY29kZV0/Lm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2hlY2tQZXJzc2lvbiA9IChjb2RlKSA9PiB7XHJcbiAgICAgIGlmICghcGVybWlzc2lvbi5oYXMpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbkJ1dHRvbnMuaW5kZXhPZihjb2RlKSA+IC0xO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgYnV0dG9ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5zdGF0ZS5kZWZhdHVsdEJ1dHRvbi5pbmRleE9mKGl0ZW0pID4gLTEgfHxcclxuICAgICAgICB0aGlzLnN0YXRlLmRlZmF0dWx0QnV0dG9uLmluZGV4T2YoaXRlbS5jb2RlKSA+IC0xXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmICgoaXRlbSA9PSBcImFkZFwiIHx8IGl0ZW0uY29kZSA9PSBcImFkZFwiKSAmJiBjaGVja1BlcnNzaW9uKFwiYWRkXCIpKSB7XHJcbiAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtLCBidXR0b25DbGljayA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJ1dHRvbkNsaWNrPy5vbkFkZCkge1xyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkFkZCxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgICAgb25TaG93Rm9ybShudWxsLCBcImFkZFwiKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShudWxsLCBudWxsLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgey4uLml0ZW0ucHJvcHN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7aXRlbS5uYW1lIHx8IFwi5re75YqgXCJ9XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgKGl0ZW0gPT0gXCJkZWxldGVfYmF0Y2hcIiB8fCBpdGVtLmNvZGUgPT0gXCJkZWxldGVfYmF0Y2hcIikgJiZcclxuICAgICAgICAgIGNoZWNrUGVyc3Npb24oXCJkZWxldGVfYmF0Y2hcIilcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcywgbnVsbCwgXCJ0b29sYmFyXCIpfVxyXG4gICAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgICB7Li4uaXRlbS5wcm9wc31cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtpdGVtLm5hbWUgfHwgXCLmibnph4/liKDpmaRcIn1cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoY2hlY2tQZXJzc2lvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtKSkge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgICAgcmV0dXJuQnV0dG9uKFxyXG4gICAgICAgICAgICAgICAgaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSxcclxuICAgICAgICAgICAgICAgIGl0ZW0ucmVjb3JkU2hvdyxcclxuICAgICAgICAgICAgICAgIGl0ZW0ucHJvcHMgfHwge30sXHJcbiAgICAgICAgICAgICAgICBpdGVtLm5hbWVcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIiAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBmb3JtQnV0dG9uLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpKSB7XHJcbiAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICBwcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgdGFibGVDb2x1bW4ucHVzaCh7XHJcbiAgICAgICAgdGl0bGU6IFwi5pON5L2cXCIsXHJcbiAgICAgICAgZGF0YUluZGV4OiBcImFjdGlvblwiLFxyXG4gICAgICAgIGFsaWduOiBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy50ZXh0QWxpZ25cclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgIDogXCJsZWZ0XCIsXHJcbiAgICAgICAgd2lkdGg6IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgIDogYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChjb2x1bW5PcmRlcikge1xyXG4gICAgICBjb25zdCBmaXhlZEZsYWcgPSBoYXNGaXhlZExlZnRDb2x1bW5zKFsuLi50YWJsZUNvbHVtbl0pO1xyXG4gICAgICBsZXQgb3JlZGVyQ29sdW1uID0ge1xyXG4gICAgICAgIHRpdGxlOiBcIuW6j+WPt1wiLFxyXG4gICAgICAgIHdpZHRoOiA4MCxcclxuICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0LCByZWFjb3JkLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIDw+e2luZGV4ICsgMX08Lz47XHJcbiAgICAgICAgfSxcclxuICAgICAgfSBhcyBhbnk7XHJcbiAgICAgIGlmKGZpeGVkRmxhZyl7XHJcbiAgICAgICAgb3JlZGVyQ29sdW1uLmZpeGVkID0gXCJsZWZ0XCI7XHJcbiAgICAgIH1cclxuICAgICAgdGFibGVDb2x1bW4gPSBbb3JlZGVyQ29sdW1uLCAuLi50YWJsZUNvbHVtbl07XHJcbiAgICB9XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICB0b29sQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcbiAgICBsZXQgaGVhZGVySGVpZ2h0ID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwID8gMTA0IDogMDsgLy/lpLTpg6jmkJzntKLmoI/pq5jluqZcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDUwIDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjAgKiAyOyAvL+S4iuS4i+mXtOi3nVxyXG4gICAgY29uc3QgeyB0YWJsZVRvb2w6IGdsb2JhbFRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdGFibGVUb29sRmxhZzogYW55ID0gZmFsc2U7XHJcbiAgICBpZiAoZ2xvYmFsVGFibGVUb29sLnNob3cgPT09IHRydWUpIHtcclxuICAgICAgdGFibGVUb29sRmxhZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy50b29sYmFyICYmIHRoaXMucHJvcHMudG9vbGJhci5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgIHRhYmxlVG9vbEZsYWcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLVxyXG4gICAgICB0b29sSGVpZ2h0IC1cclxuICAgICAgcGFkZGluZ0hlaWdodCAtXHJcbiAgICAgIGhlYWRlckhlaWdodCAtXHJcbiAgICAgICh0YWJsZVRvb2xGbGFnID8gOCA6IDApO1xyXG4gICAgbGV0IFBhZ2luYXRpb25IZWlnaHQgPSB0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlID8gMzIgKyAxNiA6IDA7IC8vMzIg5Li65YiG6aG15Zmo6auY5bqmLDE25Li6bWFyZ2lu6Ze06LedXHJcblxyXG4gICAgbGV0IHRhYmxlSGVpZ2h0ID1cclxuICAgICAgdGFibGVDb250ZW50SGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodCAtICh0YWJsZVRvb2xGbGFnID8gNDAgOiAwKTtcclxuICAgIGxldCB0YWJsZVNyb2xsSGVpZ2h0ID1cclxuICAgICAgdGFibGVIZWlnaHQgLVxyXG4gICAgICAodGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCB8fCA1NSkgLVxyXG4gICAgICAodGFibGVUb29sRmxhZyA/IDQwIDogMCk7XHJcbiAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgfTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiB0aGlzLnN0YXRlLnRyZWVXaWR0aCB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0cmVlLWRyYWdcIlxyXG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudHJlZVJlZn1cclxuICAgICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1uby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICB3aWR0aDogYGNhbGMoMTAwJSAtICR7dGhpcy5zdGF0ZS50cmVlV2lkdGh9cHggLSAke1xyXG4gICAgICAgICAgICAgICAgc2hvd0xlZnQgPyAxNSA6IDBcclxuICAgICAgICAgICAgICB9cHgpYCxcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1oZWFkZXJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQoe30pO1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3JtUHJvcHM9e3RoaXMucHJvcHMuc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtZ2FwXCIpXTogIXNlYXJjaEZsYWcsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VDb250ZW50UmVmfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgeyh0YWJsZVRpdGxlIHx8IHRvb2xGbGFnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10aXRsZVwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGUtd2lkdGhcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt0YWJsZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyh0b29sQnV0dG9ucywgdG9vbGJhckZsYWcpfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3AyXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVdyYXBwZXJSZWZ9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlQ29udGVudEhlaWdodCB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAgIC8vIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2PjwvZGl2PiAqL31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIHRoaXMucHJvcHMuZm9ybVBhZ2VQcm9wcz8uZm9ybVR5cGUgIT09IFwicGFnZVwiICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmb3Jtcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXQgfHwgdGhpcy5wcm9wcy5idXR0b25DbGljaz8ub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBVdGlscz17dGhpcy5wcm9wcy5VdGlsc31cclxuICAgICAgICAgICAgICByZXF1ZXN0T2JqZWN0PXt7XHJcbiAgICAgICAgICAgICAgICBhZGRVcmw6IHJlcXVlc3RVcmxzLmFkZFVybCxcclxuICAgICAgICAgICAgICAgIGVkaXRvclVybDogcmVxdWVzdFVybHMuZWRpdG9yVXJsLFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmFkZFBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogcmVxdWVzdFBhcmFtcy5lZGl0b3JQYXJhbXMsXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmdW5jcz17dGhpcy5wcm9wcy5mdW5jc31cclxuICAgICAgICAgICAgICBwYWdlUmVmPXt0aGlzLnByb3BzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgICAgey4uLmZvcm1QYWdlUHJvcHN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7Zm9ybUJ1dHRvbn1cclxuICAgICAgICAgICAgPC9FZGl0b3JGb3JtPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxufVxyXG5leHBvcnQgZGVmYXVs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
|
|
1250
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRCdXR0b25QZXJtaXNzb25zIiwiSGVhZGVyU2VhcmNoIiwiY29udmVydENvbHVtbnMiLCJnZXROZXdDb2x1bW5zIiwiaGFzRml4ZWRMZWZ0Q29sdW1ucyIsInRocm90dGxlIiwiY29udmVydFN0cmluZ1RvT2JqIiwic3R5bGVzIiwiQmFzZVBhZ2UiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiY2hlY2tlZFRyZWVLZXlzIiwibmFtZSIsInVzZXJUeXBlIiwiYWNjb3VudCIsInN0YXRlIiwidmFsdWUiLCJkZXB0SWQiLCJvblNlYXJjaCIsInNlbGVjdGVkIiwicmVzIiwia2V5Iiwia2V5cyIsImxlbmd0aCIsInRhYmxlV3JhcHBlclJlZiIsImN1cnJlbnQiLCJ0YWJsZUhlYWRlciIsImdldEVsZW1lbnRzQnlDbGFzc05hbWUiLCJoZWFkZXJIZWlnaHQiLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJoZWlnaHQiLCJ0YWJsZUhlYWRlckhlaWdodCIsInNldFN0YXRlIiwiY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQiLCJ0eXBlIiwic2VsZWN0ZWRSb3dLZXlzIiwic2VsZWN0ZWRSb3dEYXRhcyIsInRyZWVTZWxlY3RlZEtleSIsImV4cGFuZCIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwibW9yZU9wZW4iLCJlbGVtZW50SGVpZ2h0IiwicGVybWlzc2lvbkJ1dHRvbnMiLCJxdWVyeVBhcmFtcyIsImJ1dHRvbnNMb2FkaW5nIiwidHJlZVdpZHRoIiwic2hvd0xlZnQiLCJkZWZhdHVsdEJ1dHRvbiIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50IiwiaW5pdERhdGEiLCJwZXJtaXNzb24iLCJwYWdlUmVmIiwiY2xpZW50SGVpZ2h0Iiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsInRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQiLCJzZXRUaW1lb3V0IiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJldlByb3BzIiwiX3RoaXMkcGFnZVJlZiRjdXJyZW50MiIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiZG9TdWJtaXQiLCJkYXRhIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwibGFiZWwiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93Rm9ybSIsIl90aGlzJHByb3BzJGZvcm1QYWdlUCIsImVkaXRvcmZsYWciLCJmb3JtUGFnZVByb3BzIiwiZm9ybVR5cGUiLCJfdGhpcyRwcm9wcyRmb3JtUGFnZVAyIiwiZnVuY3MiLCJwYXRobmFtZSIsImNvbmNhdCIsInRhYmxlQ29kZSIsImlkIiwiaGlzdG9yeSIsInNlcnZpY2VOYW1lIiwic2VydmljZVBhdGgiLCJEYXRlIiwiZ2V0VGltZSIsInRpdGxlIiwiX3RoaXMkZWRpdG9yUmVmIiwibmV3VmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwic2hvdyIsImhpZGVGb3JtIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMiIsInNldExvYWRpbmciLCJsb2FkaW5nIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlMyIsInNldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNCIsInNldEZvcm1WYWx1ZSIsImdldEVkaXRGb3JtVmFsdWVzIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlNSIsImdldEZvcm1WYWx1ZSIsIm9uRGVsZXRlIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMiIsImRlbGV0ZVBvc2l0aW9uIiwiZGVsZXRlVXJsIiwiZGVsZXRlUGFyYW1zIiwiYnV0dG9uQ2xpY2siLCJyZXF1ZXN0UGFyYW1zIiwicmVxdWVzdFVybHMiLCJyZXF1ZXN0Q29uZmlnIiwiX3RoaXMiLCJ0YWJsZVJlZiIsImdldFNlbGVjdGVkUm93S2V5cyIsImdldFNlbGVjdGVkUm93RGF0YXMiLCJ1cmwiLCJ3YXJuaW5nIiwiY29uZmlybSIsImNvbnRlbnQiLCJvbk9rIiwicmVjb3JkIiwiaWRzIiwiVXRpbHMiLCJFcnJvciIsImRhdGFQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4Iiwiam9pbiIsImZpbmFsUGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsIm1zZyIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImRlZmF1bHRSZXF1ZXN0Q29uZmlnIiwidGFibGVQcm9wcyIsInN0b3JlIiwidGFibGVTdG9yZSIsImNvbnZlcnRRdWVyeVBhcmFtcyIsInJlcXVlc3RDb25pZyIsInN0b3JlQ29uZmlnIiwic3RvcmVQYXJhbXMiLCJvdGhlclN0b3JlQ29uZmlnIiwiX2V4Y2x1ZGVkMiIsImxvYWQiLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28yIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIm9uUXVlcnlDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsImF1dG9Mb2FkIiwicmVsb2FkIiwiY2FsbGJhY2siLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwidHJlZUxvYWQiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjkiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX2V4Y2x1ZGVkMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwicGxhY2VtZW50Iiwib3BlbiIsIm9uT3BlbkNoYW5nZSIsInJlbmRlckNsb3VtbkJ1dHRvbiIsImNvbHVtbkJ1dHRvbnMiLCJyb3dSZWNvcmQiLCJhY3Rpb25Qcm9wcyIsImJhc2VBY3Rpb25Db2x1bW4iLCJuZXdCdXR0b25zIiwic2hvd0ljb24iLCJfaXRlbSRwcm9wczIiLCJyZWNvcmRTaG93IiwiX2V4Y2x1ZGVkNCIsImV2ZW50T3B0aW9uIiwiVWl0bHMiLCJmdW5jIiwiRnVuY3Rpb24iLCJwdXNoIiwiZSIsImV2YWwiLCJudW1iZXIiLCJidXR0b25OdW1iZXIiLCJfaXRlbSRwcm9wczMiLCJfZXhjbHVkZWQ1IiwiTnVtYmVyIiwiX2l0ZW0kcHJvcHM0IiwiX2V4Y2x1ZGVkNiIsInRyaWdnZXIiLCJ0cmVlU2VsZWN0Iiwic2VsZWN0ZWRLZXlzIiwib2JqIiwiX3RoaXMkc2VhcmNoUmVmMyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzQiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM1Iiwia2V5d29yZCIsInNlYXJjaEtleSIsInNlYXJjaEZpZWxkIiwicGFyYW50U2VsZWN0IiwidHJlZVByb3BzIiwic2VsZWN0ZWROb2RlcyIsImRhdGFyZWYiLCJhdHRyaWJ1dGUiLCJpc0xlYWYiLCJvblRyZWVTZWxlY3QiLCJ0cmVlU2VsZWN0Q2FsbEJhY2siLCJyZXNldFNlYXJjaCIsIl90aGlzJHNlYXJjaFJlZiRjdXJyZTIiLCJyZXNldEZpZWxkcyIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiaSIsInNldFRhYmxlRGF0YSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjExIiwic2V0RGF0YSIsInNldFRyZWVEYXRhIiwiX3RoaXMkdHJlZVJlZiRjdXJyZW50MiIsImhhbmRsZU1vdXNlRG93biIsInByZXZlbnREZWZhdWx0IiwibWFzayIsImRvY3VtZW50IiwiY3NzVGV4dCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsImhhbmRsZU1vdXNlTW92ZSIsIm5ld1dpZHRoIiwic2NyZWVuWCIsInRocm90dGxlZE1vdXNlTW92ZSIsImhhbmRsZU1vdXNlVXAiLCJnZXRFbGVtZW50QnlJZCIsInJlbW92ZUNoaWxkIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwiX3RoaXMkcHJvcHMkZm9ybVBhZ2VQMyIsIl90aGlzJHByb3BzJGJ1dHRvbkNsaSIsImNvbHVtbnMiLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJzaG93VG9vbEJ1dHRvbiIsImJ1dHRvbnMiLCJlZGl0b3JGb3JtIiwib25TaG93Rm9ybSIsImZvcm1DaGFuZ2VWYWxpZCIsInRvb2xCdXR0b25Qb3NpdGlvbiIsInBlcm1pc3Npb24iLCJoYXMiLCJmaWx0ZXJDb2x1bW4iLCJhY3Rpb25Db2x1bW4iLCJzaG93Um93U2VsZWN0aW9uIiwiY29sdW1uT3JkZXIiLCJleHBhbmRhYmxlIiwidGFibGVUaXRsZSIsIm90aGVydGFibGVQYXJhbXMiLCJfZXhjbHVkZWQ3IiwibmV3VGFibGVTdG9yZSIsIl9uZXdUYWJsZVN0b3JlJHJlcXVlcyIsInRyZWVTdG9yZSIsInRyZWVTZWFyY2giLCJ0aXRsZUFsaWFzIiwidHJlZVRpdGxlIiwib3RoZXJ0cmVlUGFyYW1zIiwiX2V4Y2x1ZGVkOCIsInRhYmxlUGFyYW1zIiwibGlzdGVuZXJzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJ0YWJsZUxvYWRDYWxsQmFjayIsImRlZmF1bHRWYWx1ZSIsIm1lbnVDb2RlIiwicGVybWlzc29ucyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRvb2xCdXR0b25zIiwiZm9ybUJ1dHRvbiIsImJ1dHRvbk1hcCIsImVkaXRvciIsImRlbGV0ZSIsInNlYXJjaCIsInJldHVybkJ1dHRvbiIsIl9idXR0b25NYXAkY29kZSIsImRlZmF1bHRQcm9wcyIsIm9uRWRpdG9yIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhIiwiX3RoaXMyJHByb3BzJG9uQ2FsbEJhMiIsIm9uRWRpdG9yQ2FsbEJhY2siLCJvblNlYXJjaENhbGxCYWNrIiwiY2hlY2tQZXJzc2lvbiIsImluZGV4T2YiLCJvbkFkZCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzgiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM5Iiwib25BZGRDYWxsQmFjayIsImJpbmQiLCJkYW5nZXIiLCJBcnJheSIsImlzQXJyYXkiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsIl9jaGlsZCRwcm9wczIiLCJfY2hpbGQkcHJvcHMzIiwiX2NoaWxkJHByb3BzNCIsIl9jaGlsZCRwcm9wczUiLCJfY2hpbGQkcHJvcHM2IiwiX2NoaWxkJHByb3BzNyIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsIl9pdGVtJHByb3BzNyIsIl9pdGVtJHByb3BzOCIsIl9pdGVtJHByb3BzOSIsImRhdGFJbmRleCIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsImZpeGVkRmxhZyIsIm9yZWRlckNvbHVtbiIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwiZ2xvYmFsVGFibGVUb29sIiwidGFibGVUb29sRmxhZyIsInRhYmxlQ29udGVudEhlaWdodCIsIlBhZ2luYXRpb25IZWlnaHQiLCJwYWdpbmF0aW9uIiwidGFibGVIZWlnaHQiLCJ0YWJsZVNyb2xsSGVpZ2h0Iiwic2Nyb2xsIiwieCIsInkiLCJyZWYiLCJwYWdlVGl0bGUiLCJkaXNwbGF5Iiwib25Nb3VzZURvd24iLCJjaGVja2FibGUiLCJzZWFyY2hhYmxlIiwib25TZWxlY3QiLCJvblJlc2V0IiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMyIsInNlYXJjaEZvcm1Qcm9wcyIsInBhZ2VDb250ZW50UmVmIiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJfcmVjb3JkJGNoaWxkTm9kZXMiLCJfcmVjb3JkJGNoaWxkTm9kZXMyIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMxMCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzExIiwib25TdW1iaXRDYWxsQmFjayIsImZvcm1zIiwib25TdWJtaXQiLCJvbkhpZGVGb3JtIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJyZXF1ZXN0T2JqZWN0IiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgVGFibGUgZnJvbSBcIi4uLy4uL2Jhc2UvdGFibGVcIjtcclxuaW1wb3J0IFRyZWUgZnJvbSBcIi4uLy4uL2Jhc2UvdHJlZVwiO1xyXG5pbXBvcnQgQnV0dG9uIGZyb20gXCIuLi8uLi9iYXNlL2J1dHRvblwiO1xyXG5pbXBvcnQgTW9kYWwgZnJvbSBcIi4uLy4uL2Jhc2UvbW9kYWxcIjtcclxuaW1wb3J0IFBvcG92ZXIgZnJvbSBcIi4uLy4uL2Jhc2UvcG9wb3ZlclwiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBFZGl0b3JGb3JtLCB7IEZvcm1QYWdlUHJvcHMgfSBmcm9tIFwiLi4vRm9ybVBhZ2UvaW5kZXhcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgXCIuL2luZGV4Lm1vZHVsZS5sZXNzXCI7XHJcbmltcG9ydCBTdG9yZSwgeyBQYWdlU3RvcmUsIFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7XHJcbiAgRG93bk91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG4gIEVkaXRPdXRsaW5lZCxcclxuICBSaWdodE91dGxpbmVkLFxyXG4gIFBsdXNPdXRsaW5lZCxcclxuICBFbGxpcHNpc091dGxpbmVkLFxyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5pbXBvcnQgeyBjb252ZXJGdW5jdGlvbiwgZ2V0TGVzcywgZ2V0Tm9kZSwgc2ltcGxpZnlDb2x1bW5zIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0TG9jYWxTdG9yZSwgcHgydncsIGdldEJ1dHRvblBlcm1pc3NvbnMgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0Q29sdW1ucywgZ2V0TmV3Q29sdW1ucywgaGFzRml4ZWRMZWZ0Q29sdW1ucyB9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCBpc0VxdWFsIGZyb20gXCJsb2Rhc2gvaXNFcXVhbFwiO1xyXG5pbXBvcnQgdGhyb3R0bGUgZnJvbSBcImxvZGFzaC90aHJvdHRsZVwiO1xyXG5pbXBvcnQgQ29tcG91bmRlZFNwYWNlIGZyb20gXCJhbnRkL2VzL3NwYWNlXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRTdHJpbmdUb09iaiB9IGZyb20gXCIuLi9TZXR0aW5nVXRpbC91dGlsc1wiO1xyXG50eXBlIEJ1dHRvbkl0ZW0gPVxyXG4gIHwgc3RyaW5nXHJcbiAgfCB7XHJcbiAgICAgIGNvZGU6IHN0cmluZztcclxuICAgICAgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG4gICAgICBwcm9wcz86IGFueTtcclxuICAgICAgbmFtZT86IHN0cmluZztcclxuICAgIH07XHJcblxyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHt9XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIE5TQ0Jhc2VCYWdlUHJvcHMge1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuWktOmDqOaQnOe0ouagj1xyXG4gIHRhYmxlUHJvcHM/OiBUYWJsZVByb3BzOyAvL+ihqOagvOWPguaVsFxyXG4gIHRyZWVQcm9wcz86IFRyZWVQcm9wczsgLy/lt6bkvqfmoJHlj4LmlbBcclxuICBzdWJtaXRQYXJhbXM/OiBPYmplY3Q7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgY29sdW1ucz86IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQnV0dG9uSXRlbVtdOyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InLCdkZWxldGVfYmF0Y2gnXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIiB8IFwicGFnZVwiIHwgXCJhdXRvXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICB0YWJsZUxvYWRDYWxsQmFjaz86IGFueTsgLy/liJfooajmn6Xor6Llm57osIMtLWxvYWRcclxuICB9O1xyXG4gIHBhZ2VUeXBlPzogXCJub3JtYWxcIiB8IFwidGFic3BhZ2VcIjtcclxuICBmb3JtUGFnZVByb3BzPzogRm9ybVBhZ2VQcm9wcztcclxuICBidXR0b25DbGljaz86IHtcclxuICAgIG9uQWRkPzogKCkgPT4gdm9pZDtcclxuICAgIG9uRWRpdG9yPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gICAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvbkRlbGV0ZT86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uU3VibWl0PzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICB0YWJsZVdyYXBwZXJSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgc3RhdGljIGNvbnZlcnRDb2x1bW5zID0gY29udmVydENvbHVtbnM7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgdGhpcy5zdGF0ZSA9IHtcclxuICAgICAgdHlwZTogXCJhZGRcIixcclxuICAgICAgc2VsZWN0ZWRSb3dLZXlzOiBbXSxcclxuICAgICAgc2VsZWN0ZWRSb3dEYXRhczogW10sXHJcbiAgICAgIHRyZWVTZWxlY3RlZEtleTogXCJcIixcclxuICAgICAgZXhwYW5kOiBmYWxzZSxcclxuICAgICAgdHJlZVNlYXJjaFByYW1zOiB7fSxcclxuICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgIGVsZW1lbnRIZWlnaHQ6IDAsXHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zOiBbXSxcclxuICAgICAgcXVlcnlQYXJhbXM6IHt9LFxyXG4gICAgICB0YWJsZUhlYWRlckhlaWdodDogMCwgLy8g5re75Yqg6KGo5aS06auY5bqm5Yiwc3RhdGVcclxuICAgICAgYnV0dG9uc0xvYWRpbmc6IHt9LFxyXG4gICAgICB0cmVlV2lkdGg6IHRoaXMucHJvcHMuc2hvd0xlZnQgPyAyNjAgOiAwLFxyXG4gICAgICBkZWZhdHVsdEJ1dHRvbjogW1wiYWRkXCIsIFwiZGVsZXRlXCIsIFwic2VhcmNoXCIsIFwiZWRpdG9yXCIsIFwiZGVsZXRlX2JhdGNoXCJdLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgY29uc3QgeyBpbml0RGF0YSwgcGVybWlzc29uID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuXHJcbiAgICAvLyDmt7vliqDnqpflj6NyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMudGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCk7XHJcblxyXG4gICAgLy8g5Yid5aeL6K6h566X6KGo5aS06auY5bqmXHJcbiAgICBzZXRUaW1lb3V0KHRoaXMuY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQsIDApO1xyXG5cclxuICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgfSk7XHJcbiAgICBpbml0RGF0YSAmJiBpbml0RGF0YSgpO1xyXG4gIH1cclxuICBjb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzKSB7XHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlUmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHByZXZQcm9wcy5zaG93TGVmdCAhPT0gdGhpcy5wcm9wcy5zaG93TGVmdCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICB0cmVlV2lkdGg6IHRoaXMucHJvcHMuc2hvd0xlZnQgPyAyNjAgOiAwLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAvLyDnp7vpmaRyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFxyXG4gICAgICBcInJlc2l6ZVwiLFxyXG4gICAgICB0aGlzLnRocm90dGxlQ2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHRcclxuICAgICk7XHJcbiAgfVxyXG4gIHNldFNlYXJjaFBhcmFtcyhwYXJhbXMsIGNhbGxCYWNrKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5zZXRTZWFyY2hQYXJhbXMocGFyYW1zKTtcclxuICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKHBhcmFtcyk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGRhdGEsIGxhYmVsID0gXCLnvJbovpFcIikge1xyXG4gICAgdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gIH1cclxuXHJcbiAgb25TZWxlY3QgPSAoY2hlY2tlZFRyZWVLZXlzOiBhbnkpID0+IHtcclxuICAgIGNvbnN0IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHsgbmFtZSwgdXNlclR5cGUsIGFjY291bnQsIGRlcHRJZDogY2hlY2tlZFRyZWVLZXlzWzBdIH07XHJcbiAgICBpZiAodGhpcy5wcm9wcy5vblNlYXJjaCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uU2VhcmNoKHZhbHVlKTtcclxuICAgIH1cclxuICAgIC8vIHRoaXMudGFibGVMb2FkKHZhbHVlKTtcclxuICB9O1xyXG5cclxuICAvL+aYvuekuuihqOWNlVxyXG4gIHNob3dGb3JtKHZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGlmICh0aGlzLnByb3BzLmZvcm1QYWdlUHJvcHM/LmZvcm1UeXBlID09IFwicGFnZVwiKSB7XHJcbiAgICAgIGNvbnN0IHsgZnVuY3MgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgbGV0IHBhdGhuYW1lID0gYC9mb3JtcGFnZS8ke2VkaXRvcmZsYWcgPyBlZGl0b3JmbGFnIDogXCJhZGRcIn0vdGFibGUvJHtcclxuICAgICAgICB0aGlzLnByb3BzLnRhYmxlQ29kZVxyXG4gICAgICB9YDtcclxuICAgICAgaWYgKGVkaXRvcmZsYWcgPT0gXCJlZGl0b3JcIiB8fCBlZGl0b3JmbGFnID09IFwic2VhcmNoXCIpIHtcclxuICAgICAgICBwYXRobmFtZSA9IHBhdGhuYW1lICsgXCI/aWQ9XCIgKyB2YWx1ZS5pZDtcclxuICAgICAgfVxyXG4gICAgICBmdW5jcz8uaGlzdG9yeShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwYXRobmFtZTogcGF0aG5hbWUsXHJcbiAgICAgICAgICBzZXJ2aWNlTmFtZTogXCJzZXR0aW5nLXdlYlwiLFxyXG4gICAgICAgICAgc2VydmljZVBhdGg6IFwiL3NldHRpbmdcIixcclxuICAgICAgICAgIGlkOlxyXG4gICAgICAgICAgICBuZXcgRGF0ZSgpLmdldFRpbWUoKSArXHJcbiAgICAgICAgICAgICh2YWx1ZT8uaWQgfHwgXCJfXCIpICtcclxuICAgICAgICAgICAgZWRpdG9yZmxhZyArXHJcbiAgICAgICAgICAgIFwi4oCUXCIgK1xyXG4gICAgICAgICAgICB0aGlzLnByb3BzLnRhYmxlQ29kZSArXHJcbiAgICAgICAgICAgICh2YWx1ZT8uaWQgPyBcIl9cIiArIHZhbHVlLmlkIDogXCJcIiksXHJcbiAgICAgICAgICB0aXRsZTpcclxuICAgICAgICAgICAgYOOAkCR7XHJcbiAgICAgICAgICAgICAgZWRpdG9yZmxhZyA9PSBcImFkZFwiXHJcbiAgICAgICAgICAgICAgICA/IFwi5paw5aKeXCJcclxuICAgICAgICAgICAgICAgIDogZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiXHJcbiAgICAgICAgICAgICAgICA/IFwi57yW6L6RXCJcclxuICAgICAgICAgICAgICAgIDogXCLmn6XnnItcIlxyXG4gICAgICAgICAgICB944CRYCArIHRoaXMucHJvcHMuZm9ybVBhZ2VQcm9wcz8udGl0bGUgfHwgXCJcIixcclxuICAgICAgICB9LFxyXG4gICAgICAgIFwiYWRkVGFiXCJcclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGxldCBuZXdWYWx1ZSA9IHZhbHVlID8geyAuLi52YWx1ZSB9IDogbnVsbDtcclxuICAgICAgdGhpcy5lZGl0b3JSZWY/LmN1cnJlbnQ/LnNob3cobmV3VmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUsIHR5cGUgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnksIGRlbGV0ZVBvc2l0aW9uID0gXCJyb3dcIikge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMgPSB7fSxcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dEYXRhcyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gICAgbGV0IHVybCA9IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA/IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA6IGRlbGV0ZVVybDtcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgID8gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgOiBkZWxldGVQYXJhbXM7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGJ1dHRvbkNsaWNrLm9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25EZWxldGUsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgcmVjb3JkOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93RGF0YXMgOiBkYXRhLFxyXG4gICAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhPy5pZCxcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IGRhdGE6IGRhdGFQYXJhbXMgPSB7fSwgLi4ub3RoZXJQYXJhbXMgfSA9IHBhcmFtcztcclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgICAuLi5kYXRhUGFyYW1zLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgZmluYWxQYXJhbXMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgZmluYWxQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMsIC4uLm90aGVyUGFyYW1zIH07XHJcbiAgICAgICAgcmVxdWVzdCh1cmwsIHtcclxuICAgICAgICAgIC4uLmZpbmFsUGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKCFyZXMubXNnKSB7XHJcbiAgICAgICAgICAgICAgICBtZXNzYWdlLmVycm9yKFwi5Yig6Zmk5aSx6LSl77yBXCIpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlID0ge30gfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG5cclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25pZzogc3RvcmVDb25maWcgPSB7fSB9ID0gdGFibGVTdG9yZTtcclxuICAgIGNvbnN0IHsgcGFyYW1zOiBzdG9yZVBhcmFtcyA9IHt9LCAuLi5vdGhlclN0b3JlQ29uZmlnIH0gPSBzdG9yZUNvbmZpZztcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5vdGhlclN0b3JlQ29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHsgLi4uc3RvcmVQYXJhbXMsIC4uLmZpbmFsUGFyYW1zIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgb25TZWFyY2gsXHJcbiAgICAgIG9uQ2FsbEJhY2tzLFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSA9IHt9IH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpO1xyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHBhcmFtczogcGFyYW1zIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0cmVlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93S2V5cyhkYXRhKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGEpO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAga2V5ID0gcm93S2V5KGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBrZXkgPSBpdGVtW3Jvd0tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCB0b29sYmFyRmxhZykge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUubW9yZU9wZW59XHJcbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIC8vIG9wZW49e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wLWJveCddfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCI+XHJcbiAgICAgICAgICAgICAgICAgICAg5pu05aSaIDxEb3duT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IGluZGV4ID09IHRvb2xidXR0b25zLmxlbmd0aCAtIDEgPyAwIDogMTIsXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlckNsb3VtbkJ1dHRvbihjb2x1bW5CdXR0b25zOiBhbnksIHJvd1JlY29yZDogYW55KSB7XHJcbiAgICBjb25zdCB7IGFjdGlvblByb3BzLCB0YWJsZVByb3BzID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgY29uc3QgbmV3QnV0dG9ucyA9IFtdO1xyXG4gICAgY29uc3QgeyByb3dLZXkgPSBcImlkXCIgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBrZXkgPSByb3dLZXkocm93UmVjb3JkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGtleSA9IHJvd1JlY29yZFtyb3dLZXldO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBpZiAoYWN0aW9uUHJvcHM/LnNob3dJY29uID09PSB0cnVlIHx8IGJhc2VBY3Rpb25Db2x1bW4uc2hvd0ljb24gPT09IHRydWUpXHJcbiAgICAgIHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHtcclxuICAgICAgICAgICAgICByZWNvcmQ6IHJvd1JlY29yZCxcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGNvbnN0IFV0aWxzID0geyAuLi50aGlzLnByb3BzLlVpdGxzIH07XHJcbiAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb24sVXRpbHNcIiwgcmVjb3JkU2hvdyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3cgPSBmdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3JkID0gcm93UmVjb3JkO1xyXG4gICAgICAgICAgICBpZiAoZXZhbChyZWNvcmRTaG93KSkge1xyXG4gICAgICAgICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgbnVtYmVyID0gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgOiAzO1xyXG4gICAgbGV0IGZsYWcgPSBmYWxzZTtcclxuICAgIGlmIChudW1iZXIgPT0gXCJhbGxcIikge1xyXG4gICAgICBmbGFnID0gZmFsc2U7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBmbGFnID0gbmV3QnV0dG9ucy5sZW5ndGggPiBudW1iZXI7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgY29udGVudCA9IG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoaW5kZXggPiBOdW1iZXIobnVtYmVyKSAtIDEpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgZGF0YVtyb3dSZWNvcmQuaWRdID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgcmV0dXJuIG5ld0J1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIHJlY29yZFNob3csIGljb24sIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAoZmxhZykge1xyXG4gICAgICAgIGlmIChpbmRleCA8IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249e2ljb259XHJcbiAgICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtzaG93SWNvbiAhPT0gZmFsc2UgJiYgKFxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChpbmRleCA9PSBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxQb3BvdmVyXHJcbiAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgIHRyaWdnZXI9e1tcImNsaWNrXCJdfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5wb3BvcGVuc1trZXldIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgIGxldCBkYXRhID0geyAuLi50aGlzLnN0YXRlLnBvcG9wZW5zIH07XHJcbiAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgIHBvcG9wZW5zOiB7fSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXMsIG9iajogb2JqIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gICAgLy8gdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAvLyAgIHNlbGVjdGVkS2V5cyxcclxuICAgIC8vICAgb2JqLFxyXG4gICAgLy8gXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICBjb252ZXJ0UXVlcnlQYXJhbXMoKSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcztcclxuICAgIHJldHVybiBjb252ZXJ0U3RyaW5nVG9PYmoocXVlcnlQYXJhbXMsIHRoaXMucHJvcHMuVXRpbHMgfHwge30sIHtcclxuICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8g6K6h566X6KGo5aS06auY5bqm55qE5pa55rOVXHJcbiAgY2FsY3VsYXRlVGFibGVIZWFkZXJIZWlnaHQgPSAoKSA9PiB7XHJcbiAgICBpZiAodGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudCkge1xyXG4gICAgICBjb25zdCB0YWJsZUhlYWRlciA9XHJcbiAgICAgICAgdGhpcy50YWJsZVdyYXBwZXJSZWYuY3VycmVudC5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKFxyXG4gICAgICAgICAgXCJhbnQtdGFibGUtdGhlYWRcIlxyXG4gICAgICAgIClbMF07XHJcbiAgICAgIGlmICh0YWJsZUhlYWRlcikge1xyXG4gICAgICAgIGNvbnN0IGhlYWRlckhlaWdodCA9IHRhYmxlSGVhZGVyLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmhlaWdodDtcclxuICAgICAgICBpZiAoaGVhZGVySGVpZ2h0ICE9PSB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0KSB7XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgdGFibGVIZWFkZXJIZWlnaHQ6IGhlYWRlckhlaWdodCxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgdGhyb3R0bGVDYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCA9IHRocm90dGxlKFxyXG4gICAgdGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCxcclxuICAgIDUwMFxyXG4gICk7XHJcblxyXG4gIC8vIOS8mOWMluaLluaLveebuOWFs+aWueazlVxyXG4gIGhhbmRsZU1vdXNlRG93bihlOiBSZWFjdC5Nb3VzZUV2ZW50KSB7XHJcbiAgICBlLnByZXZlbnREZWZhdWx0KCk7XHJcblxyXG4gICAgLy8g5Yib5bu66YGu572p5bGC5Lul5aSE55CGaWZyYW1l5Zy65pmvXHJcbiAgICBjb25zdCBtYXNrID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcclxuICAgIG1hc2suc3R5bGUuY3NzVGV4dCA9IGBcclxuICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICB0b3A6IDA7XHJcbiAgICAgIGxlZnQ6IDA7XHJcbiAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICBoZWlnaHQ6IDEwMCU7XHJcbiAgICAgIGJhY2tncm91bmQ6IHRyYW5zcGFyZW50O1xyXG4gICAgICB6LWluZGV4OiA5OTk5O1xyXG4gICAgICBjdXJzb3I6IGNvbC1yZXNpemU7XHJcbiAgICBgO1xyXG4gICAgbWFzay5pZCA9IFwiZHJhZy1tYXNrXCI7XHJcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKG1hc2spO1xyXG5cclxuICAgIGNvbnN0IGhhbmRsZU1vdXNlTW92ZSA9IChlOiBNb3VzZUV2ZW50KSA9PiB7XHJcbiAgICAgIGNvbnN0IG5ld1dpZHRoID0gZS5zY3JlZW5YO1xyXG4gICAgICAvLyDpmZDliLbmnIDlsI8xMDBweO+8jOacgOWkpzUwMHB4XHJcbiAgICAgIGlmIChuZXdXaWR0aCA+PSA1MCAmJiBuZXdXaWR0aCA8PSA4MDApIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgdHJlZVdpZHRoOiBuZXdXaWR0aCB9KTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCB0aHJvdHRsZWRNb3VzZU1vdmUgPSB0aHJvdHRsZShoYW5kbGVNb3VzZU1vdmUsIDE2KTtcclxuXHJcbiAgICBjb25zdCBoYW5kbGVNb3VzZVVwID0gKCkgPT4ge1xyXG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKFwibW91c2Vtb3ZlXCIsIHRocm90dGxlZE1vdXNlTW92ZSk7XHJcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtb3VzZXVwXCIsIGhhbmRsZU1vdXNlVXApO1xyXG4gICAgICAvLyDnp7vpmaTpga7nvanlsYJcclxuICAgICAgY29uc3QgbWFzayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwiZHJhZy1tYXNrXCIpO1xyXG4gICAgICBpZiAobWFzaykge1xyXG4gICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQobWFzayk7XHJcbiAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLCB0aHJvdHRsZWRNb3VzZU1vdmUpO1xyXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIm1vdXNldXBcIiwgaGFuZGxlTW91c2VVcCk7XHJcbiAgfVxyXG5cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGNvbHVtbnMgPSBbXSxcclxuICAgICAgc2hvd1NlYXJjaCA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBzdWJtaXRVcmwgPSBcIlwiLFxyXG4gICAgICB0YWJsZVByb3BzID0ge30sXHJcbiAgICAgIHRyZWVQcm9wcyA9IHt9LFxyXG4gICAgICBmb3JtUGFnZVByb3BzID0ge30sXHJcbiAgICAgIHNob3dMZWZ0ID0gZmFsc2UsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiA9IHRydWUsXHJcbiAgICAgIGJ1dHRvbnMgPSBbXSxcclxuICAgICAgZWRpdG9yRm9ybSA9IHRydWUsXHJcbiAgICAgIG9uU2hvd0Zvcm0sXHJcbiAgICAgIGZvcm1DaGFuZ2VWYWxpZCA9IHRydWUsXHJcbiAgICAgIGNsYXNzTmFtZSxcclxuICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uID0gXCJidXR0b21cIixcclxuICAgICAgYWN0aW9uUHJvcHMsXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHBlcm1pc3Npb24gPSB7IGhhczogZmFsc2UgfSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0YWJsZVN0b3JlID0ge30sXHJcbiAgICAgIGZpbHRlckNvbHVtbiA9IHRydWUsXHJcbiAgICAgIGFjdGlvbkNvbHVtbiA9IHRydWUsXHJcbiAgICAgIHNob3dSb3dTZWxlY3Rpb24gPSB0cnVlLFxyXG4gICAgICBjb2x1bW5PcmRlciA9IHRydWUsXHJcbiAgICAgIGV4cGFuZGFibGUgPSB7fSxcclxuICAgICAgcGFyYW50U2VsZWN0ID0gdHJ1ZSxcclxuICAgICAgdGl0bGU6IHRhYmxlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydGFibGVQYXJhbXNcclxuICAgIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IG5ld1RhYmxlU3RvcmUgPSB7IC4uLnRhYmxlU3RvcmUgfTtcclxuICAgIGlmIChyZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zKSB7XHJcbiAgICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKTtcclxuICAgICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcz8uZGF0YSB8fCBxdWVyeVBhcmFtcz8ucGFyYW1zIHx8IHt9O1xyXG4gICAgICBuZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWcgPSB7XHJcbiAgICAgICAgcGFyYW1zOiB7IC4uLmRhdGEsIC4uLm5ld1RhYmxlU3RvcmUucmVxdWVzdENvbmZpZz8ucGFyYW1zIH0sXHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN0b3JlOiB0cmVlU3RvcmUgPSB7fSxcclxuICAgICAgc2hvd1NlYXJjaDogdHJlZVNlYXJjaCA9IHRydWUsXHJcbiAgICAgIHRpdGxlQWxpYXMgPSBcInRpdGxlXCIsXHJcbiAgICAgIHRpdGxlOiB0cmVlVGl0bGUsXHJcbiAgICAgIC4uLm90aGVydHJlZVBhcmFtc1xyXG4gICAgfSA9IHRyZWVQcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBsZXQgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIGZpbHRlckNvbHVtbixcclxuICAgICAgc3RvcmU6IHtcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIGxvYWQ6IChkYXRhKSA9PiB7XHJcbiAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50YWJsZUxvYWRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50YWJsZUxvYWRDYWxsQmFjayhkYXRhKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5uZXdUYWJsZVN0b3JlLFxyXG4gICAgICB9LFxyXG4gICAgICAuLi5vdGhlcnRhYmxlUGFyYW1zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBjb25zdCBkZWZhdWx0VmFsdWU6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgY29sdW1uQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGVsZW1lbnRIZWlnaHQgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgcGVybWlzc2lvbkJ1dHRvbnMgPSBbXTtcclxuICAgIGlmIChwZXJtaXNzaW9uLmhhcyAmJiBwZXJtaXNzaW9uLm1lbnVDb2RlKSB7XHJcbiAgICAgIHBlcm1pc3Npb25CdXR0b25zID1cclxuICAgICAgICBnZXRCdXR0b25QZXJtaXNzb25zKHBlcm1pc3Npb24ubWVudUNvZGUpLnBlcm1pc3NvbnMgfHwgW107XHJcbiAgICB9XHJcbiAgICBjb25zdCBvYmogPSBjb252ZXJ0Q29sdW1ucyhjb2x1bW5zLCB7fSk7XHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gZ2V0TmV3Q29sdW1ucyhjb2x1bW5zLCB0aGlzLnByb3BzKTtcclxuICAgIGNvbnN0IHNlYXJjaEZvcm1zID0gb2JqLnNlYXJjaEZvcm1zIHx8IFtdO1xyXG4gICAgY29uc3QgZWRpdG9yRm9ybXMgPSBvYmouZWRpdG9yRm9ybXMgfHwgW107XHJcbiAgICBjb25zdCB0b29sQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCBmb3JtQnV0dG9uOiBhbnkgPSBbXTtcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbnN0IGJ1dHRvbk1hcCA9IHtcclxuICAgICAgZWRpdG9yOiB7IG5hbWU6IFwi57yW6L6RXCIsIGNvZGU6IFwiZWRpdG9yXCIsIGljb246IDxFZGl0T3V0bGluZWQgLz4gfSxcclxuICAgICAgZGVsZXRlOiB7IG5hbWU6IFwi5Yig6ZmkXCIsIGNvZGU6IFwiZGVsZXRlXCIsIGljb246IDxEZWxldGVPdXRsaW5lZCAvPiB9LFxyXG4gICAgICBzZWFyY2g6IHsgbmFtZTogXCLmn6XnnItcIiwgY29kZTogXCJzZWFyY2hcIiwgaWNvbjogPEV5ZU91dGxpbmVkIC8+IH0sXHJcbiAgICB9O1xyXG4gICAgY29uc3QgcmV0dXJuQnV0dG9uID0gKGNvZGUsIHNob3cgPSBcIlwiLCBkZWZhdWx0UHJvcHMgPSB7fSwgbmFtZSkgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgaWNvbjogc2hvd0ljb24gPyBidXR0b25NYXBbY29kZV0uaWNvbiA6IG51bGwsXHJcbiAgICAgICAgdHlwZTogXCJsaW5rXCIsXHJcbiAgICAgICAgLi4uZGVmYXVsdFByb3BzLFxyXG4gICAgICB9IGFzIGFueTtcclxuXHJcbiAgICAgIGlmIChzaG93KSB7XHJcbiAgICAgICAgcHJvcHMgPSB7IC4uLnByb3BzLCByZWNvcmRTaG93OiBzaG93IH07XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIChcclxuICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICBvbkNsaWNrPXsocmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJkZWxldGVcIikge1xyXG4gICAgICAgICAgICAgIHRoaXMub25EZWxldGUocmVjb3JkKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBpZiAoY29kZSA9PSBcImVkaXRvclwiICYmIGJ1dHRvbkNsaWNrLm9uRWRpdG9yKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25FZGl0b3IsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgcmVjb3JkOiByZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCxcclxuICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT0gXCJzZWFyY2hcIiAmJiBidXR0b25DbGljay5vblNlYXJjaCkge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uU2VhcmNoLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlKTtcclxuICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd0Zvcm0ocmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsIGNvZGUsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIGxldCBjYWxsQmFjayA9XHJcbiAgICAgICAgICAgICAgICAgIGNvZGUgPT0gXCJlZGl0b3JcIlxyXG4gICAgICAgICAgICAgICAgICAgID8gdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25FZGl0b3JDYWxsQmFja1xyXG4gICAgICAgICAgICAgICAgICAgIDogdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFjaztcclxuICAgICAgICAgICAgICAgIGNhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIGNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfX1cclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7bmFtZSB8fCBidXR0b25NYXBbY29kZV0/Lm5hbWV9XHJcbiAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICk7XHJcbiAgICB9O1xyXG4gICAgY29uc3QgY2hlY2tQZXJzc2lvbiA9IChjb2RlKSA9PiB7XHJcbiAgICAgIGlmICghcGVybWlzc2lvbi5oYXMpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gcGVybWlzc2lvbkJ1dHRvbnMuaW5kZXhPZihjb2RlKSA+IC0xO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgYnV0dG9ucy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoXHJcbiAgICAgICAgdGhpcy5zdGF0ZS5kZWZhdHVsdEJ1dHRvbi5pbmRleE9mKGl0ZW0pID4gLTEgfHxcclxuICAgICAgICB0aGlzLnN0YXRlLmRlZmF0dWx0QnV0dG9uLmluZGV4T2YoaXRlbS5jb2RlKSA+IC0xXHJcbiAgICAgICkge1xyXG4gICAgICAgIGlmICgoaXRlbSA9PSBcImFkZFwiIHx8IGl0ZW0uY29kZSA9PSBcImFkZFwiKSAmJiBjaGVja1BlcnNzaW9uKFwiYWRkXCIpKSB7XHJcbiAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgeyBvblNob3dGb3JtLCBidXR0b25DbGljayA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgICAgICAgICAgaWYgKGJ1dHRvbkNsaWNrPy5vbkFkZCkge1xyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vbkFkZCxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgaWYgKG9uU2hvd0Zvcm0pIHtcclxuICAgICAgICAgICAgICAgICAgb25TaG93Rm9ybShudWxsLCBcImFkZFwiKTtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zaG93Rm9ybShudWxsLCBudWxsLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgICAgICAgey4uLml0ZW0ucHJvcHN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7aXRlbS5uYW1lIHx8IFwi5re75YqgXCJ9XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgKGl0ZW0gPT0gXCJkZWxldGVfYmF0Y2hcIiB8fCBpdGVtLmNvZGUgPT0gXCJkZWxldGVfYmF0Y2hcIikgJiZcclxuICAgICAgICAgIGNoZWNrUGVyc3Npb24oXCJkZWxldGVfYmF0Y2hcIilcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXt0aGlzLm9uRGVsZXRlLmJpbmQodGhpcywgbnVsbCwgXCJ0b29sYmFyXCIpfVxyXG4gICAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgICB7Li4uaXRlbS5wcm9wc31cclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIHtpdGVtLm5hbWUgfHwgXCLmibnph4/liKDpmaRcIn1cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoY2hlY2tQZXJzc2lvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtKSkge1xyXG4gICAgICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goXHJcbiAgICAgICAgICAgICAgcmV0dXJuQnV0dG9uKFxyXG4gICAgICAgICAgICAgICAgaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSxcclxuICAgICAgICAgICAgICAgIGl0ZW0ucmVjb3JkU2hvdyxcclxuICAgICAgICAgICAgICAgIGl0ZW0ucHJvcHMgfHwge30sXHJcbiAgICAgICAgICAgICAgICBpdGVtLm5hbWVcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1CdXR0b25cIiAmJlxyXG4gICAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oY2hpbGQ/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgICApIHtcclxuICAgICAgICAgICAgICBmb3JtQnV0dG9uLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAgIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHxcclxuICAgICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIChpdGVtPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fFxyXG4gICAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcImNsb3VtbkJ1dHRvblwiKSAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwidG9vbEJ1dHRvblwiICYmIGNoZWNrUGVyc3Npb24ocHJvcHM/LmNvZGUpKSB7XHJcbiAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgKHByb3BzPy5wYWdlVHlwZSA9PSBcImNvbHVtbkJ1dHRvblwiIHx8XHJcbiAgICAgICAgICBwcm9wcz8ucGFnZVR5cGUgPT0gXCJjbG91bW5CdXR0b25cIikgJiZcclxuICAgICAgICBjaGVja1BlcnNzaW9uKHByb3BzPy5jb2RlKVxyXG4gICAgICApIHtcclxuICAgICAgICBjb2x1bW5CdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBhY3Rpb25Db2x1bW4gJiZcclxuICAgICAgY29sdW1uQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICA6IFwibGVmdFwiLFxyXG4gICAgICAgIHdpZHRoOiBhY3Rpb25Qcm9wcz8ud2lkdGhcclxuICAgICAgICAgID8gYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4ud2lkdGhcclxuICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgOiAyMDAsXHJcbiAgICAgICAgZml4ZWQ6IFwicmlnaHRcIixcclxuICAgICAgICByZW5kZXI6ICh0ZXh0OiBhbnksIHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWFjdGlvblwiKX0+XHJcbiAgICAgICAgICAgICAge3RoaXMucmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnMsIHJlY29yZCl9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9LFxyXG4gICAgICB9KTtcclxuXHJcbiAgICBpZiAoY29sdW1uT3JkZXIpIHtcclxuICAgICAgY29uc3QgZml4ZWRGbGFnID0gaGFzRml4ZWRMZWZ0Q29sdW1ucyhbLi4udGFibGVDb2x1bW5dKTtcclxuICAgICAgbGV0IG9yZWRlckNvbHVtbiA9IHtcclxuICAgICAgICB0aXRsZTogXCLluo/lj7dcIixcclxuICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgYWxpZ246IFwiY2VudGVyXCIsXHJcbiAgICAgICAgcmVuZGVyOiAodGV4dCwgcmVhY29yZCwgaW5kZXgpID0+IHtcclxuICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0gYXMgYW55O1xyXG4gICAgICBpZiAoZml4ZWRGbGFnKSB7XHJcbiAgICAgICAgb3JlZGVyQ29sdW1uLmZpeGVkID0gXCJsZWZ0XCI7XHJcbiAgICAgIH1cclxuICAgICAgdGFibGVDb2x1bW4gPSBbb3JlZGVyQ29sdW1uLCAuLi50YWJsZUNvbHVtbl07XHJcbiAgICB9XHJcbiAgICBsZXQgc2VhcmNoRmxhZyA9IHNob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMDtcclxuICAgIGxldCB7IHRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdG9vbEZsYWcgPVxyXG4gICAgICBzaG93VG9vbEJ1dHRvbiAmJlxyXG4gICAgICB0b29sQnV0dG9ucy5sZW5ndGggPiAwICYmXHJcbiAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbiA9PSBcImJ1dHRvbVwiO1xyXG4gICAgbGV0IHRvb2xiYXJGbGFnID0gIShcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyID09IGZhbHNlIHx8XHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhcj8uc2hvdyA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnRvb2xzPy5sZW5ndGggPT0gMCB8fFxyXG4gICAgICB0YWJsZVRvb2w/LnNob3cgPT0gZmFsc2VcclxuICAgICk7XHJcbiAgICBsZXQgaGVhZGVySGVpZ2h0ID0gc2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwID8gMTA0IDogMDsgLy/lpLTpg6jmkJzntKLmoI/pq5jluqZcclxuICAgIGxldCB0b29sSGVpZ2h0ID0gdGFibGVUaXRsZSB8fCB0b29sRmxhZyA/IDUwIDogMDtcclxuICAgIGxldCBwYWRkaW5nSGVpZ2h0ID0gMjAgKiAyOyAvL+S4iuS4i+mXtOi3nVxyXG4gICAgY29uc3QgeyB0YWJsZVRvb2w6IGdsb2JhbFRhYmxlVG9vbCB9ID0gY29uZmlnKCk7XHJcbiAgICBsZXQgdGFibGVUb29sRmxhZzogYW55ID0gZmFsc2U7XHJcbiAgICBpZiAoZ2xvYmFsVGFibGVUb29sLnNob3cgPT09IHRydWUpIHtcclxuICAgICAgdGFibGVUb29sRmxhZyA9IHRydWU7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5wcm9wcy50b29sYmFyICYmIHRoaXMucHJvcHMudG9vbGJhci5zaG93ID09PSB0cnVlKSB7XHJcbiAgICAgIHRhYmxlVG9vbEZsYWcgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgbGV0IHRhYmxlQ29udGVudEhlaWdodCA9XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQgLVxyXG4gICAgICB0b29sSGVpZ2h0IC1cclxuICAgICAgcGFkZGluZ0hlaWdodCAtXHJcbiAgICAgIGhlYWRlckhlaWdodCAtXHJcbiAgICAgICh0YWJsZVRvb2xGbGFnID8gOCA6IDApO1xyXG4gICAgbGV0IFBhZ2luYXRpb25IZWlnaHQgPSB0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlID8gMzIgKyAxNiA6IDA7IC8vMzIg5Li65YiG6aG15Zmo6auY5bqmLDE25Li6bWFyZ2lu6Ze06LedXHJcblxyXG4gICAgbGV0IHRhYmxlSGVpZ2h0ID1cclxuICAgICAgdGFibGVDb250ZW50SGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodCAtICh0YWJsZVRvb2xGbGFnID8gNDAgOiAwKTtcclxuICAgIGxldCB0YWJsZVNyb2xsSGVpZ2h0ID1cclxuICAgICAgdGFibGVIZWlnaHQgLVxyXG4gICAgICAodGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCB8fCA1NSkgLVxyXG4gICAgICAodGFibGVUb29sRmxhZyA/IDQwIDogMCk7XHJcbiAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgfTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1sZWZ0XCIpfVxyXG4gICAgICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiB0aGlzLnN0YXRlLnRyZWVXaWR0aCB9fVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0cmVlLWRyYWdcIlxyXG4gICAgICAgICAgICAgICAgICBvbk1vdXNlRG93bj17dGhpcy5oYW5kbGVNb3VzZURvd24uYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuICAgICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudHJlZVJlZn1cclxuICAgICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1uby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgc3R5bGU9e3tcclxuICAgICAgICAgICAgICB3aWR0aDogYGNhbGMoMTAwJSAtICR7dGhpcy5zdGF0ZS50cmVlV2lkdGh9cHggLSAke1xyXG4gICAgICAgICAgICAgICAgc2hvd0xlZnQgPyAxNSA6IDBcclxuICAgICAgICAgICAgICB9cHgpYCxcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1oZWFkZXJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQoe30pO1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3JtUHJvcHM9e3RoaXMucHJvcHMuc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtZ2FwXCIpXTogIXNlYXJjaEZsYWcsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VDb250ZW50UmVmfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgeyh0YWJsZVRpdGxlIHx8IHRvb2xGbGFnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10aXRsZVwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGUtd2lkdGhcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt0YWJsZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyh0b29sQnV0dG9ucywgdG9vbGJhckZsYWcpfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3AyXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVdyYXBwZXJSZWZ9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBoZWlnaHQ6IHRhYmxlQ29udGVudEhlaWdodCB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUYWJsZVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudGFibGVSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbnM9e3RhYmxlQ29sdW1ufVxyXG4gICAgICAgICAgICAgICAgICBleHBhbmRhYmxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kSWNvbjogKHsgZXhwYW5kZWQsIG9uRXhwYW5kLCByZWNvcmQgfSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgICAgICAgPD5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7ZXhwYW5kZWQgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2RlcyAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAgIC8vIHBhZ2luYXRpb249e2ZhbHNlfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgIHsvKiA8ZGl2PjwvZGl2PiAqL31cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIHtlZGl0b3JGb3JtICYmIHRoaXMucHJvcHMuZm9ybVBhZ2VQcm9wcz8uZm9ybVR5cGUgIT09IFwicGFnZVwiICYmIChcclxuICAgICAgICAgICAgPEVkaXRvckZvcm1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMuZWRpdG9yUmVmfVxyXG4gICAgICAgICAgICAgIGNhbGxCYWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrICYmXHJcbiAgICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uU3VtYml0Q2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlUmVsb2FkKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmb3Jtcz17ZWRpdG9yRm9ybXN9XHJcbiAgICAgICAgICAgICAgc3VibWl0VXJsPXtzdWJtaXRVcmx9XHJcbiAgICAgICAgICAgICAgc3VibWl0UGFyYW1zPXtzdWJtaXRQYXJhbXN9XHJcbiAgICAgICAgICAgICAgb25TdWJtaXQ9e3RoaXMucHJvcHMub25TdWJtaXQgfHwgdGhpcy5wcm9wcy5idXR0b25DbGljaz8ub25TdWJtaXR9XHJcbiAgICAgICAgICAgICAgb25IaWRlRm9ybT17dGhpcy5wcm9wcy5vbkhpZGVGb3JtfVxyXG4gICAgICAgICAgICAgIG9uRm9ybUNoYW5nZT17dGhpcy5wcm9wcy5vbkZvcm1DaGFuZ2V9XHJcbiAgICAgICAgICAgICAgZm9ybVR5cGU9e3RoaXMucHJvcHMuZm9ybVR5cGUgfHwgXCJhdXRvXCJ9XHJcbiAgICAgICAgICAgICAgY2hhbmdlVmFsaWQ9e2Zvcm1DaGFuZ2VWYWxpZH1cclxuICAgICAgICAgICAgICBVdGlscz17dGhpcy5wcm9wcy5VdGlsc31cclxuICAgICAgICAgICAgICByZXF1ZXN0T2JqZWN0PXt7XHJcbiAgICAgICAgICAgICAgICBhZGRVcmw6IHJlcXVlc3RVcmxzLmFkZFVybCxcclxuICAgICAgICAgICAgICAgIGVkaXRvclVybDogcmVxdWVzdFVybHMuZWRpdG9yVXJsLFxyXG4gICAgICAgICAgICAgICAgYWRkUGFyYW1zOiByZXF1ZXN0UGFyYW1zLmFkZFBhcmFtcyxcclxuICAgICAgICAgICAgICAgIGVkaXRvclBhcmFtczogcmVxdWVzdFBhcmFtcy5lZGl0b3JQYXJhbXMsXHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBmdW5jcz17dGhpcy5wcm9wcy5mdW5jc31cclxuICAgICAgICAgICAgICBwYWdlUmVmPXt0aGlzLnByb3BzLnBhZ2VSZWZ9XHJcbiAgICAgICAgICAgICAgey4uLmZvcm1QYWdlUHJvcHN9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7Zm9ybUJ1dHRvbn1cclxuICAgICAgICAgICAgPC9FZGl0b3JGb3JtPlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","converFunction","getLess","request","config","getButtonPermissons","HeaderSearch","convertColumns","getNewColumns","hasFixedLeftColumns","throttle","convertStringToObj","styles","BasePage","constructor","props","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","tableWrapperRef","current","tableHeader","getElementsByClassName","headerHeight","getBoundingClientRect","height","tableHeaderHeight","setState","calculateTableHeaderHeight","type","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","treeSearchPrams","popopens","moreOpen","elementHeight","permissionButtons","queryParams","buttonsLoading","treeWidth","showLeft","defatultButton","componentDidMount","_this$pageRef$current","initData","permisson","pageRef","clientHeight","window","addEventListener","throttleCalculateTableHeaderHeight","setTimeout","componentDidUpdate","prevProps","_this$pageRef$current2","componentWillUnmount","removeEventListener","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","doSubmit","data","_this$editorRef$curre","label","arguments","undefined","editorRef","showForm","_this$props$formPageP","editorflag","formPageProps","formType","_this$props$formPageP2","funcs","pathname","concat","tableCode","id","history","serviceName","servicePath","Date","getTime","title","_this$editorRef","newValue","_objectSpread","show","hideForm","_this$editorRef$curre2","setLoading","loading","_this$editorRef$curre3","setEditFormValues","_this$editorRef$curre4","setFormValue","getEditFormValues","_this$editorRef$curre5","getFormValue","onDelete","_this$tableRef$curren","_this$tableRef$curren2","deletePosition","deleteUrl","deleteParams","buttonClick","requestParams","requestUrls","requestConfig","_this","tableRef","getSelectedRowKeys","getSelectedRowDatas","url","warning","confirm","content","onOk","record","ids","Utils","Error","dataParams","otherParams","_objectWithoutProperties","_excluded","defaultParams","method","autoPrefix","join","finalParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","msg","error","catch","console","log","_tableStore$requestCo","_this$tableRef$curren3","defaultRequestConfig","tableProps","store","tableStore","convertQueryParams","requestConig","storeConfig","storeParams","otherStoreConfig","_excluded2","load","_tableStore$requestCo2","_this$props$onCallBac3","onQueryCallBack","tableReload","_this$tableRef$curren4","autoLoad","reload","callback","_res$data","records","currentPage","_this$tableRef$curren5","treeLoad","_this$treeRef$current","treeRef","_this$tableRef$curren6","_this$tableRef$curren7","setSelectedRowKeys","_this$tableRef$curren8","setSelectedRowDatas","_this$tableRef$curren9","resetSelectedRowKeys","_this$tableRef$curren10","_this$searchRef2","fromValue","getChildrenData","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","showSearch","_item$props","pageType","onClick","icon","_excluded3","createElement","className","_extends","style","marginLeft","marginRight","placement","open","onOpenChange","renderCloumnButton","columnButtons","rowRecord","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded4","eventOption","Uitls","func","Function","push","e","eval","number","buttonNumber","_item$props3","_excluded5","Number","_item$props4","_excluded6","trigger","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac4","_this$props$onCallBac5","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","setTableData","_this$tableRef$curren11","setData","setTreeData","_this$treeRef$current2","handleMouseDown","preventDefault","mask","document","cssText","body","appendChild","handleMouseMove","newWidth","screenX","throttledMouseMove","handleMouseUp","getElementById","removeChild","render","_this2","_tableProps$toolbar","_tableProps$toolbar2","_this$props$formPageP3","_this$props$buttonCli","columns","submitUrl","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","permission","has","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded7","newTableStore","_newTableStore$reques","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded8","tableParams","listeners","_this$props$onCallBac6","_this$props$onCallBac7","tableLoadCallBack","defaultValue","menuCode","permissons","tableColumn","searchForms","editorForms","toolButtons","formButton","buttonMap","editor","delete","search","returnButton","_buttonMap$code","defaultProps","onEditor","_this2$props$onCallBa","_this2$props$onCallBa2","onEditorCallBack","onSearchCallBack","checkPerssion","indexOf","onAdd","_this$props$onCallBac8","_this$props$onCallBac9","onAddCallBack","bind","danger","Array","isArray","child","_child$props","_child$props2","_child$props3","_child$props4","_child$props5","_child$props6","_child$props7","_item$props5","_item$props6","_item$props7","_item$props8","_item$props9","dataIndex","align","textAlign","width","fixed","fixedFlag","orederColumn","reacord","Fragment","searchFlag","tableTool","toolFlag","toolbar","tools","toolHeight","paddingHeight","globalTableTool","tableToolFlag","tableContentHeight","PaginationHeight","pagination","tableHeight","tableSrollHeight","scroll","x","y","ref","pageTitle","display","onMouseDown","checkable","searchable","onSelect","onReset","_this$searchRef$curre3","searchFormProps","pageContentRef","expandIcon","_ref","_record$childNodes","_record$childNodes2","expanded","onExpand","onChange","onToolClick","onRefresh","_this$props$onCallBac10","_this$props$onCallBac11","onSumbitCallBack","forms","onSubmit","onHideForm","onFormChange","changeValid","requestObject","addUrl","editorUrl","addParams","editorParams"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport EditorForm, { FormPageProps } from \"../FormPage/index\";\r\nimport cls from \"classnames\";\r\nimport \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { converFunction, getLess, getNode, simplifyColumns } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport config from \"../../config\";\r\nimport { getLocalStore, px2vw, getButtonPermissons } from \"@bj-nsc/functions\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\nimport nscfile from \"nsc-file\";\r\nimport { convertColumns, getNewColumns, hasFixedLeftColumns } from \"./utils\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport throttle from \"lodash/throttle\";\r\nimport CompoundedSpace from \"antd/es/space\";\r\nimport { convertStringToObj } from \"../SettingUtil/utils\";\r\ntype ButtonItem =\r\n | string\r\n | {\r\n code: string;\r\n recordShow?: string | Function;\r\n props?: any;\r\n name?: string;\r\n };\r\n\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\nconst styles = null;\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends FormPageProps {}\r\n\r\nexport interface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns?: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: ButtonItem[]; //按钮集合 ['add','delete','search','editor','delete_batch']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\" | \"page\" | \"auto\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n actionProps?: {\r\n textAlign?: string;\r\n showIcon?: boolean;\r\n width?: number;\r\n buttonNumber?: number | \"all\";\r\n };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any; //树点击查询后回调\r\n onQueryCallBack?: any; //查询回调,查询数据后回调\r\n onSumbitCallBack?: any; //保存回调,保存数据成功后回调\r\n onDeleteCallBack?: any; //删除按钮回调,删除数据后执行\r\n onEditorCallBack?: any; //编辑按钮回调,打开弹框后执行\r\n onAddCallBack?: any; //添加按钮回调,打开弹框后执行\r\n onSearchCallBack?: any; //列表查询按钮回调,打开弹框后执行\r\n tableLoadCallBack?: any; //列表查询回调--load\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n formPageProps?: FormPageProps;\r\n buttonClick?: {\r\n onAdd?: () => void;\r\n onEditor?: (value?: any) => void;\r\n onSearch?: (value?: any) => void;\r\n onDelete?: (value?: any) => void;\r\n onSubmit?: (value?: any) => void;\r\n };\r\n permission?: {\r\n has?: boolean;\r\n menuCode?: string;\r\n };\r\n requestParams?: {\r\n //需要额外传的固定请求参数\r\n addParams?: Object; //新增固定参数\r\n editorParams?: Object; //编辑固定参数\r\n queryParams?: Object; //查询固定参数\r\n deleteParams?: Object; //删除固定参数\r\n };\r\n requestUrls?: {\r\n addUrl?: string; //新增url\r\n editorUrl?: string; //编辑url\r\n deleteUrl?: string; //删除url\r\n };\r\n funcs?: any;\r\n requestConfig?: any;\r\n [propsName: string]: any;\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n pageRef = React.createRef<any>();\r\n pageContentRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n tableWrapperRef = React.createRef<HTMLDivElement>();\r\n static convertColumns = convertColumns;\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n treeSearchPrams: {},\r\n popopens: {},\r\n moreOpen: false,\r\n elementHeight: 0,\r\n permissionButtons: [],\r\n queryParams: {},\r\n tableHeaderHeight: 0, // 添加表头高度到state\r\n buttonsLoading: {},\r\n treeWidth: this.props.showLeft ? 260 : 0,\r\n defatultButton: [\"add\", \"delete\", \"search\", \"editor\", \"delete_batch\"],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { initData, permisson = {} } = this.props;\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n\r\n // 添加窗口resize监听\r\n window.addEventListener(\"resize\", this.throttleCalculateTableHeaderHeight);\r\n\r\n // 初始计算表头高度\r\n setTimeout(this.calculateTableHeaderHeight, 0);\r\n\r\n this.setState({\r\n elementHeight,\r\n });\r\n initData && initData();\r\n }\r\n componentDidUpdate(prevProps) {\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n if (elementHeight > this.state.elementHeight) {\r\n this.setState({\r\n elementHeight,\r\n });\r\n }\r\n if (prevProps.showLeft !== this.props.showLeft) {\r\n this.setState({\r\n treeWidth: this.props.showLeft ? 260 : 0,\r\n });\r\n }\r\n }\r\n componentWillUnmount() {\r\n // 移除resize监听\r\n window.removeEventListener(\r\n \"resize\",\r\n this.throttleCalculateTableHeaderHeight\r\n );\r\n }\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n doSubmit(data, label = \"编辑\") {\r\n this.editorRef.current?.doSubmit(data, label);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\", callBack?: any) {\r\n if (this.props.formPageProps?.formType == \"page\") {\r\n const { funcs = {} } = this.props;\r\n let pathname = `/formpage/${editorflag ? editorflag : \"add\"}/table/${\r\n this.props.tableCode\r\n }`;\r\n if (editorflag == \"editor\" || editorflag == \"search\") {\r\n pathname = pathname + \"?id=\" + value.id;\r\n }\r\n funcs?.history(\r\n {\r\n pathname: pathname,\r\n serviceName: \"setting-web\",\r\n servicePath: \"/setting\",\r\n id:\r\n new Date().getTime() +\r\n (value?.id || \"_\") +\r\n editorflag +\r\n \"—\" +\r\n this.props.tableCode +\r\n (value?.id ? \"_\" + value.id : \"\"),\r\n title:\r\n `【${\r\n editorflag == \"add\"\r\n ? \"新增\"\r\n : editorflag == \"editor\"\r\n ? \"编辑\"\r\n : \"查看\"\r\n }】` + this.props.formPageProps?.title || \"\",\r\n },\r\n \"addTab\"\r\n );\r\n } else {\r\n let newValue = value ? { ...value } : null;\r\n this.editorRef?.current?.show(newValue, editorflag, callBack);\r\n }\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value, type = \"编辑\") {\r\n this.editorRef.current?.setFormValue(value, type);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFormValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any, deletePosition = \"row\") {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams = {},\r\n buttonClick = {},\r\n requestParams = {},\r\n requestUrls = {},\r\n requestConfig = {},\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n const selectedRowDatas = this.tableRef.current?.getSelectedRowDatas();\r\n let url = requestUrls.deleteUrl ? requestUrls.deleteUrl : deleteUrl;\r\n let params: any = requestParams.deleteParams\r\n ? requestParams.deleteParams\r\n : deleteParams;\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (buttonClick.onDelete) {\r\n converFunction(\r\n buttonClick.onDelete,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: deletePosition == \"toolbar\" ? selectedRowDatas : data,\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys : data?.id,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!url) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const { data: dataParams = {}, ...otherParams } = params;\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n ...dataParams,\r\n },\r\n ...requestConfig,\r\n };\r\n let finalParams = {} as any;\r\n finalParams = { ...defaultParams, ...otherParams };\r\n request(url, {\r\n ...finalParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n converFunction(\r\n _this.props.onCallBacks?.onDeleteCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\r\n _this.tableLoad(value);\r\n } else {\r\n if (!res.msg) {\r\n message.error(\"删除失败!\");\r\n }\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n const {\r\n requestConfig: defaultRequestConfig = {},\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore = {} } = tableProps;\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams.data || queryParams.params || {};\r\n\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n const { requestConig: storeConfig = {} } = tableStore;\r\n const { params: storeParams = {}, ...otherStoreConfig } = storeConfig;\r\n this.tableRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...otherStoreConfig,\r\n ...requestConfig,\r\n params: { ...storeParams, ...finalParams },\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const {\r\n onSearch,\r\n onCallBacks,\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore = {} } = tableProps;\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams.data || queryParams.params || {};\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n if (onSearch) {\r\n onSearch({ ...finalParams, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...finalParams, ...this.state.treeSearchPrams });\r\n onCallBacks?.onQueryCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onQueryCallBack,\r\n { pageRef: this.props.pageRef, params: params },\r\n this.props.Utils\r\n );\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n treeLoad(params: any, requestConfig = {}) {\r\n const { requestConfig: defaultRequestConfig = {} } = this.props;\r\n this.treeRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n return this.tableRef.current?.setSelectedRowKeys(data);\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n return this.tableRef.current?.setSelectedRowDatas(data);\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n let key = \"\";\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(item);\r\n } else {\r\n key = item[rowKey];\r\n }\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, key];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, key];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, toolbarFlag) {\r\n const flag = toolbuttons.length > 5;\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n >\r\n <Button\r\n key={index}\r\n onClick={() => {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n </div>\r\n );\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-tool-buttons\"))}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n key={index}\r\n open={this.state.moreOpen}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n this.setState({\r\n moreOpen: true,\r\n });\r\n } else {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n }\r\n }}\r\n // open={true}\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: index == toolbuttons.length - 1 ? 0 : 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, rowRecord: any) {\r\n const { actionProps, tableProps = {} } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n const { rowKey = \"id\" } = tableProps;\r\n let key = \"\";\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(rowRecord);\r\n } else {\r\n key = rowRecord[rowKey];\r\n }\r\n let showIcon = false;\r\n if (actionProps?.showIcon === true || baseActionColumn.showIcon === true)\r\n showIcon = true;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n try {\r\n const eventOption = {\r\n record: rowRecord,\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n };\r\n const Utils = { ...this.props.Uitls };\r\n let func = new Function(\"eventOption,Utils\", recordShow);\r\n const show = func(eventOption, Utils);\r\n show && newButtons.push(item);\r\n } catch (e) {\r\n let record = rowRecord;\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(rowRecord);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n let number = actionProps?.buttonNumber\r\n ? actionProps?.buttonNumber\r\n : baseActionColumn?.buttonNumber\r\n ? baseActionColumn?.buttonNumber\r\n : 3;\r\n let flag = false;\r\n if (number == \"all\") {\r\n flag = false;\r\n } else {\r\n flag = newButtons.length > number;\r\n }\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > Number(number) - 1) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = { ...this.state.popopens };\r\n data[rowRecord.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(rowRecord);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < number) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(rowRecord);\r\n }}\r\n icon={icon}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n } else if (index == number) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n open={this.state.popopens[key] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[key] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"nsc-basepage-editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(rowRecord);\r\n }}\r\n {...params}\r\n type=\"link\"\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.treeSelectCallBack,\r\n { pageRef: this.props.pageRef, selectedKeys: selectedKeys, obj: obj },\r\n this.props.Utils\r\n );\r\n // utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n // selectedKeys,\r\n // obj,\r\n // ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n convertQueryParams() {\r\n const { requestParams = {} } = this.props;\r\n let queryParams: any = requestParams.queryParams;\r\n return convertStringToObj(queryParams, this.props.Utils || {}, {\r\n funcs: this.props.funcs,\r\n pageRef: this.props.pageRef,\r\n });\r\n }\r\n\r\n // 计算表头高度的方法\r\n calculateTableHeaderHeight = () => {\r\n if (this.tableWrapperRef.current) {\r\n const tableHeader =\r\n this.tableWrapperRef.current.getElementsByClassName(\r\n \"ant-table-thead\"\r\n )[0];\r\n if (tableHeader) {\r\n const headerHeight = tableHeader.getBoundingClientRect().height;\r\n if (headerHeight !== this.state.tableHeaderHeight) {\r\n this.setState({\r\n tableHeaderHeight: headerHeight,\r\n });\r\n }\r\n }\r\n }\r\n };\r\n throttleCalculateTableHeaderHeight = throttle(\r\n this.calculateTableHeaderHeight,\r\n 500\r\n );\r\n\r\n // 优化拖拽相关方法\r\n handleMouseDown(e: React.MouseEvent) {\r\n e.preventDefault();\r\n\r\n // 创建遮罩层以处理iframe场景\r\n const mask = document.createElement(\"div\");\r\n mask.style.cssText = `\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: transparent;\r\n z-index: 9999;\r\n cursor: col-resize;\r\n `;\r\n mask.id = \"drag-mask\";\r\n document.body.appendChild(mask);\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n const newWidth = e.screenX;\r\n // 限制最小100px,最大500px\r\n if (newWidth >= 50 && newWidth <= 800) {\r\n this.setState({ treeWidth: newWidth });\r\n }\r\n };\r\n\r\n const throttledMouseMove = throttle(handleMouseMove, 16);\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener(\"mousemove\", throttledMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n // 移除遮罩层\r\n const mask = document.getElementById(\"drag-mask\");\r\n if (mask) {\r\n document.body.removeChild(mask);\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousemove\", throttledMouseMove);\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n }\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formPageProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionProps,\r\n deletePosition = \"toolbar\",\r\n buttonClick = {},\r\n permission = { has: false },\r\n requestParams = {},\r\n requestUrls = {},\r\n } = this.props;\r\n const {\r\n store: tableStore = {},\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n title: tableTitle,\r\n ...othertableParams\r\n } = tableProps;\r\n let newTableStore = { ...tableStore };\r\n if (requestParams.queryParams) {\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams?.data || queryParams?.params || {};\r\n newTableStore.requestConfig = {\r\n params: { ...data, ...newTableStore.requestConfig?.params },\r\n };\r\n }\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n title: treeTitle,\r\n ...othertreeParams\r\n } = treeProps;\r\n let _this = this;\r\n let tableParams = {\r\n filterColumn,\r\n store: {\r\n listeners: {\r\n load: (data) => {\r\n _this.props.onCallBacks?.tableLoadCallBack &&\r\n _this.props.onCallBacks?.tableLoadCallBack(data);\r\n },\r\n },\r\n ...newTableStore,\r\n },\r\n ...othertableParams,\r\n } as any;\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n let permissionButtons = [];\r\n if (permission.has && permission.menuCode) {\r\n permissionButtons =\r\n getButtonPermissons(permission.menuCode).permissons || [];\r\n }\r\n const obj = convertColumns(columns, {});\r\n let tableColumn: any[] = getNewColumns(columns, this.props);\r\n const searchForms = obj.searchForms || [];\r\n const editorForms = obj.editorForms || [];\r\n const toolButtons: any = [];\r\n const formButton: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n const buttonMap = {\r\n editor: { name: \"编辑\", code: \"editor\", icon: <EditOutlined /> },\r\n delete: { name: \"删除\", code: \"delete\", icon: <DeleteOutlined /> },\r\n search: { name: \"查看\", code: \"search\", icon: <EyeOutlined /> },\r\n };\r\n const returnButton = (code, show = \"\", defaultProps = {}, name) => {\r\n let props = {\r\n icon: showIcon ? buttonMap[code].icon : null,\r\n type: \"link\",\r\n ...defaultProps,\r\n } as any;\r\n\r\n if (show) {\r\n props = { ...props, recordShow: show };\r\n }\r\n return (\r\n <Button\r\n onClick={(record: any) => {\r\n if (code == \"delete\") {\r\n this.onDelete(record);\r\n } else {\r\n if (code == \"editor\" && buttonClick.onEditor) {\r\n converFunction(\r\n buttonClick.onEditor,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n } else if (code == \"search\" && buttonClick.onSearch) {\r\n converFunction(\r\n buttonClick.onSearch,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, code);\r\n return;\r\n }\r\n\r\n this.showForm(record.attribute || record, code, () => {\r\n let callBack =\r\n code == \"editor\"\r\n ? this.props.onCallBacks?.onEditorCallBack\r\n : this.props.onCallBacks?.onSearchCallBack;\r\n callBack &&\r\n converFunction(\r\n callBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n }\r\n }}\r\n {...props}\r\n >\r\n {name || buttonMap[code]?.name}\r\n </Button>\r\n );\r\n };\r\n const checkPerssion = (code) => {\r\n if (!permission.has) {\r\n return true;\r\n } else {\r\n return permissionButtons.indexOf(code) > -1;\r\n }\r\n };\r\n buttons.map((item: any) => {\r\n if (\r\n this.state.defatultButton.indexOf(item) > -1 ||\r\n this.state.defatultButton.indexOf(item.code) > -1\r\n ) {\r\n if ((item == \"add\" || item.code == \"add\") && checkPerssion(\"add\")) {\r\n toolButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm, buttonClick = {} } = this.props;\r\n if (buttonClick?.onAdd) {\r\n converFunction(\r\n buttonClick.onAdd,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm(null, null, () => {\r\n this.props.onCallBacks?.onAddCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onAddCallBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n }}\r\n icon={<PlusOutlined />}\r\n {...item.props}\r\n >\r\n {item.name || \"添加\"}\r\n </Button>\r\n );\r\n } else if (\r\n (item == \"delete_batch\" || item.code == \"delete_batch\") &&\r\n checkPerssion(\"delete_batch\")\r\n ) {\r\n toolButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={this.onDelete.bind(this, null, \"toolbar\")}\r\n icon={<DeleteOutlined />}\r\n danger\r\n {...item.props}\r\n >\r\n {item.name || \"批量删除\"}\r\n </Button>\r\n );\r\n } else {\r\n if (checkPerssion(item.code ? item.code : item)) {\r\n columnButtons.push(\r\n returnButton(\r\n item.code ? item.code : item,\r\n item.recordShow,\r\n item.props || {},\r\n item.name\r\n )\r\n );\r\n }\r\n }\r\n }\r\n });\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (\r\n child?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n toolButtons.push(child);\r\n } else if (\r\n child?.props?.pageType == \"formButton\" &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n formButton.push(child);\r\n } else if (\r\n (child?.props?.pageType == \"columnButton\" ||\r\n child?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (\r\n item?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(item?.props?.code)\r\n ) {\r\n toolButtons.push(item);\r\n } else if (\r\n (item?.props?.pageType == \"columnButton\" ||\r\n item?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(item?.props?.code)\r\n ) {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\" && checkPerssion(props?.code)) {\r\n toolButtons.push(children);\r\n } else if (\r\n (props?.pageType == \"columnButton\" ||\r\n props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(props?.code)\r\n ) {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionProps?.textAlign\r\n ? actionProps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"left\",\r\n width: actionProps?.width\r\n ? actionProps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-basepage-action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n\r\n if (columnOrder) {\r\n const fixedFlag = hasFixedLeftColumns([...tableColumn]);\r\n let orederColumn = {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n } as any;\r\n if(fixedFlag){\r\n orederColumn.fixed = \"left\";\r\n }\r\n tableColumn = [orederColumn, ...tableColumn];\r\n }\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag =\r\n showToolButton &&\r\n toolButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\";\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0; //头部搜索栏高度\r\n let toolHeight = tableTitle || toolFlag ? 50 : 0;\r\n let paddingHeight = 20 * 2; //上下间距\r\n const { tableTool: globalTableTool } = config();\r\n let tableToolFlag: any = false;\r\n if (globalTableTool.show === true) {\r\n tableToolFlag = true;\r\n }\r\n if (this.props.toolbar && this.props.toolbar.show === true) {\r\n tableToolFlag = true;\r\n }\r\n let tableContentHeight =\r\n elementHeight -\r\n toolHeight -\r\n paddingHeight -\r\n headerHeight -\r\n (tableToolFlag ? 8 : 0);\r\n let PaginationHeight = tableProps.pagination !== false ? 32 + 16 : 0; //32 为分页器高度,16为margin间距\r\n\r\n let tableHeight =\r\n tableContentHeight - PaginationHeight - (tableToolFlag ? 40 : 0);\r\n let tableSrollHeight =\r\n tableHeight -\r\n (this.state.tableHeaderHeight || 55) -\r\n (tableToolFlag ? 40 : 0);\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", y: tableSrollHeight, ...scroll },\r\n };\r\n // }\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage\"), className)}\r\n ref={this.pageRef}\r\n >\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"nsc-basepage-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div\r\n className={getLess(styles, \"nsc-basepage-left\")}\r\n style={{ width: this.state.treeWidth }}\r\n >\r\n {treeTitle && (\r\n <div className={getLess(styles, \"tree-title\")}>{treeTitle}</div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"tree-content\"), {\r\n [getLess(styles, \"tree-content-notitle\")]: !treeTitle,\r\n })}\r\n >\r\n <div\r\n className=\"tree-drag\"\r\n onMouseDown={this.handleMouseDown.bind(this)}\r\n ></div>\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n ref={this.treeRef}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-right\"), {\r\n [getLess(styles, \"nsc-basepage-no-left-right\")]: !showLeft,\r\n })}\r\n style={{\r\n width: `calc(100% - ${this.state.treeWidth}px - ${\r\n showLeft ? 15 : 0\r\n }px)`,\r\n }}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <div className={getLess(styles, \"nsc-basepage-headersearch\")}>\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={() => {\r\n if (this.props.onReset) {\r\n this.props.onReset();\r\n return;\r\n }\r\n this.searchRef.current?.resetFields();\r\n this.tableLoad({});\r\n }}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-content\"), {\r\n [getLess(styles, \"nsc-basepage-content-gap\")]: !searchFlag,\r\n })}\r\n ref={this.pageContentRef}\r\n >\r\n {(tableTitle || toolFlag) && (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-table-title\"), {\r\n [getLess(styles, \"nsc-basepage-title-width\")]: !toolbarFlag,\r\n })}\r\n >\r\n <div>{tableTitle}</div>\r\n {toolFlag && this.renderToolButtons(toolButtons, toolbarFlag)}\r\n </div>\r\n )}\r\n\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-table\"),\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top\")]: !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top2\")]:\r\n toolbarFlag && !toolFlag,\r\n }\r\n )}\r\n ref={this.tableWrapperRef}\r\n style={{ height: tableContentHeight }}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded &&\r\n record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n style={{ height: tableHeight }}\r\n {...tableParams}\r\n // pagination={false}\r\n />\r\n {/* <div></div> */}\r\n </div>\r\n </div>\r\n </div>\r\n {editorForm && this.props.formPageProps?.formType !== \"page\" && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onSumbitCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\r\n this.tableReload();\r\n }}\r\n forms={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit || this.props.buttonClick?.onSubmit}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n Utils={this.props.Utils}\r\n requestObject={{\r\n addUrl: requestUrls.addUrl,\r\n editorUrl: requestUrls.editorUrl,\r\n addParams: requestParams.addParams,\r\n editorParams: requestParams.editorParams,\r\n }}\r\n funcs={this.props.funcs}\r\n pageRef={this.props.pageRef}\r\n {...formPageProps}\r\n >\r\n {formButton}\r\n </EditorForm>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","converFunction","getLess","request","config","getButtonPermissons","HeaderSearch","convertColumns","getNewColumns","hasFixedLeftColumns","throttle","convertStringToObj","styles","BasePage","constructor","props","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","tableWrapperRef","current","tableHeader","getElementsByClassName","headerHeight","getBoundingClientRect","height","tableHeaderHeight","setState","calculateTableHeaderHeight","type","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","treeSearchPrams","popopens","moreOpen","elementHeight","permissionButtons","queryParams","buttonsLoading","treeWidth","showLeft","defatultButton","componentDidMount","_this$pageRef$current","initData","permisson","pageRef","clientHeight","window","addEventListener","throttleCalculateTableHeaderHeight","setTimeout","componentDidUpdate","prevProps","_this$pageRef$current2","componentWillUnmount","removeEventListener","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","doSubmit","data","_this$editorRef$curre","label","arguments","undefined","editorRef","showForm","_this$props$formPageP","editorflag","formPageProps","formType","_this$props$formPageP2","funcs","pathname","concat","tableCode","id","history","serviceName","servicePath","Date","getTime","title","_this$editorRef","newValue","_objectSpread","show","hideForm","_this$editorRef$curre2","setLoading","loading","_this$editorRef$curre3","setEditFormValues","_this$editorRef$curre4","setFormValue","getEditFormValues","_this$editorRef$curre5","getFormValue","onDelete","_this$tableRef$curren","_this$tableRef$curren2","deletePosition","deleteUrl","deleteParams","buttonClick","requestParams","requestUrls","requestConfig","_this","tableRef","getSelectedRowKeys","getSelectedRowDatas","url","warning","confirm","content","onOk","record","ids","Utils","Error","dataParams","otherParams","_objectWithoutProperties","_excluded","defaultParams","method","autoPrefix","join","finalParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","msg","error","catch","console","log","_tableStore$requestCo","_this$tableRef$curren3","defaultRequestConfig","tableProps","store","tableStore","convertQueryParams","requestConig","storeConfig","storeParams","otherStoreConfig","_excluded2","load","_tableStore$requestCo2","_this$props$onCallBac3","onQueryCallBack","tableReload","_this$tableRef$curren4","autoLoad","reload","callback","_res$data","records","currentPage","_this$tableRef$curren5","treeLoad","_this$treeRef$current","treeRef","_this$tableRef$curren6","_this$tableRef$curren7","setSelectedRowKeys","_this$tableRef$curren8","setSelectedRowDatas","_this$tableRef$curren9","resetSelectedRowKeys","_this$tableRef$curren10","_this$searchRef2","fromValue","getChildrenData","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","showSearch","_item$props","pageType","onClick","icon","_excluded3","createElement","className","_extends","style","marginLeft","marginRight","placement","open","onOpenChange","renderCloumnButton","columnButtons","rowRecord","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded4","eventOption","Uitls","func","Function","push","e","eval","number","buttonNumber","_item$props3","_excluded5","Number","_item$props4","_excluded6","trigger","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac4","_this$props$onCallBac5","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","setTableData","_this$tableRef$curren11","setData","setTreeData","_this$treeRef$current2","handleMouseDown","preventDefault","mask","document","cssText","body","appendChild","handleMouseMove","newWidth","screenX","throttledMouseMove","handleMouseUp","getElementById","removeChild","render","_this2","_tableProps$toolbar","_tableProps$toolbar2","_this$props$formPageP3","_this$props$buttonCli","columns","submitUrl","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","permission","has","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded7","newTableStore","_newTableStore$reques","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded8","tableParams","listeners","_this$props$onCallBac6","_this$props$onCallBac7","tableLoadCallBack","defaultValue","menuCode","permissons","tableColumn","searchForms","editorForms","toolButtons","formButton","buttonMap","editor","delete","search","returnButton","_buttonMap$code","defaultProps","onEditor","_this2$props$onCallBa","_this2$props$onCallBa2","onEditorCallBack","onSearchCallBack","checkPerssion","indexOf","onAdd","_this$props$onCallBac8","_this$props$onCallBac9","onAddCallBack","bind","danger","Array","isArray","child","_child$props","_child$props2","_child$props3","_child$props4","_child$props5","_child$props6","_child$props7","_item$props5","_item$props6","_item$props7","_item$props8","_item$props9","dataIndex","align","textAlign","width","fixed","fixedFlag","orederColumn","reacord","Fragment","searchFlag","tableTool","toolFlag","toolbar","tools","toolHeight","paddingHeight","globalTableTool","tableToolFlag","tableContentHeight","PaginationHeight","pagination","tableHeight","tableSrollHeight","scroll","x","y","ref","pageTitle","display","onMouseDown","checkable","searchable","onSelect","onReset","_this$searchRef$curre3","searchFormProps","pageContentRef","expandIcon","_ref","_record$childNodes","_record$childNodes2","expanded","onExpand","onChange","onToolClick","onRefresh","_this$props$onCallBac10","_this$props$onCallBac11","onSumbitCallBack","forms","onSubmit","onHideForm","onFormChange","changeValid","requestObject","addUrl","editorUrl","addParams","editorParams"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport EditorForm, { FormPageProps } from \"../FormPage/index\";\r\nimport cls from \"classnames\";\r\nimport \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { converFunction, getLess, getNode, simplifyColumns } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport config from \"../../config\";\r\nimport { getLocalStore, px2vw, getButtonPermissons } from \"@bj-nsc/functions\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\nimport nscfile from \"nsc-file\";\r\nimport { convertColumns, getNewColumns, hasFixedLeftColumns } from \"./utils\";\r\nimport isEqual from \"lodash/isEqual\";\r\nimport throttle from \"lodash/throttle\";\r\nimport CompoundedSpace from \"antd/es/space\";\r\nimport { convertStringToObj } from \"../SettingUtil/utils\";\r\ntype ButtonItem =\r\n | string\r\n | {\r\n code: string;\r\n recordShow?: string | Function;\r\n props?: any;\r\n name?: string;\r\n };\r\n\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\nconst styles = null;\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends FormPageProps {}\r\n\r\nexport interface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns?: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: ButtonItem[]; //按钮集合 ['add','delete','search','editor','delete_batch']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\" | \"page\" | \"auto\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n actionProps?: {\r\n textAlign?: string;\r\n showIcon?: boolean;\r\n width?: number;\r\n buttonNumber?: number | \"all\";\r\n };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any; //树点击查询后回调\r\n onQueryCallBack?: any; //查询回调,查询数据后回调\r\n onSumbitCallBack?: any; //保存回调,保存数据成功后回调\r\n onDeleteCallBack?: any; //删除按钮回调,删除数据后执行\r\n onEditorCallBack?: any; //编辑按钮回调,打开弹框后执行\r\n onAddCallBack?: any; //添加按钮回调,打开弹框后执行\r\n onSearchCallBack?: any; //列表查询按钮回调,打开弹框后执行\r\n tableLoadCallBack?: any; //列表查询回调--load\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n formPageProps?: FormPageProps;\r\n buttonClick?: {\r\n onAdd?: () => void;\r\n onEditor?: (value?: any) => void;\r\n onSearch?: (value?: any) => void;\r\n onDelete?: (value?: any) => void;\r\n onSubmit?: (value?: any) => void;\r\n };\r\n permission?: {\r\n has?: boolean;\r\n menuCode?: string;\r\n };\r\n requestParams?: {\r\n //需要额外传的固定请求参数\r\n addParams?: Object; //新增固定参数\r\n editorParams?: Object; //编辑固定参数\r\n queryParams?: Object; //查询固定参数\r\n deleteParams?: Object; //删除固定参数\r\n };\r\n requestUrls?: {\r\n addUrl?: string; //新增url\r\n editorUrl?: string; //编辑url\r\n deleteUrl?: string; //删除url\r\n };\r\n funcs?: any;\r\n requestConfig?: any;\r\n [propsName: string]: any;\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n pageRef = React.createRef<any>();\r\n pageContentRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n tableWrapperRef = React.createRef<HTMLDivElement>();\r\n static convertColumns = convertColumns;\r\n constructor(props: any) {\r\n super(props);\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n treeSearchPrams: {},\r\n popopens: {},\r\n moreOpen: false,\r\n elementHeight: 0,\r\n permissionButtons: [],\r\n queryParams: {},\r\n tableHeaderHeight: 0, // 添加表头高度到state\r\n buttonsLoading: {},\r\n treeWidth: this.props.showLeft ? 260 : 0,\r\n defatultButton: [\"add\", \"delete\", \"search\", \"editor\", \"delete_batch\"],\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const { initData, permisson = {} } = this.props;\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n\r\n // 添加窗口resize监听\r\n window.addEventListener(\"resize\", this.throttleCalculateTableHeaderHeight);\r\n\r\n // 初始计算表头高度\r\n setTimeout(this.calculateTableHeaderHeight, 0);\r\n\r\n this.setState({\r\n elementHeight,\r\n });\r\n initData && initData();\r\n }\r\n componentDidUpdate(prevProps) {\r\n const elementHeight = this.pageRef.current?.clientHeight;\r\n if (elementHeight > this.state.elementHeight) {\r\n this.setState({\r\n elementHeight,\r\n });\r\n }\r\n if (prevProps.showLeft !== this.props.showLeft) {\r\n this.setState({\r\n treeWidth: this.props.showLeft ? 260 : 0,\r\n });\r\n }\r\n }\r\n componentWillUnmount() {\r\n // 移除resize监听\r\n window.removeEventListener(\r\n \"resize\",\r\n this.throttleCalculateTableHeaderHeight\r\n );\r\n }\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n doSubmit(data, label = \"编辑\") {\r\n this.editorRef.current?.doSubmit(data, label);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\", callBack?: any) {\r\n if (this.props.formPageProps?.formType == \"page\") {\r\n const { funcs = {} } = this.props;\r\n let pathname = `/formpage/${editorflag ? editorflag : \"add\"}/table/${\r\n this.props.tableCode\r\n }`;\r\n if (editorflag == \"editor\" || editorflag == \"search\") {\r\n pathname = pathname + \"?id=\" + value.id;\r\n }\r\n funcs?.history(\r\n {\r\n pathname: pathname,\r\n serviceName: \"setting-web\",\r\n servicePath: \"/setting\",\r\n id:\r\n new Date().getTime() +\r\n (value?.id || \"_\") +\r\n editorflag +\r\n \"—\" +\r\n this.props.tableCode +\r\n (value?.id ? \"_\" + value.id : \"\"),\r\n title:\r\n `【${\r\n editorflag == \"add\"\r\n ? \"新增\"\r\n : editorflag == \"editor\"\r\n ? \"编辑\"\r\n : \"查看\"\r\n }】` + this.props.formPageProps?.title || \"\",\r\n },\r\n \"addTab\"\r\n );\r\n } else {\r\n let newValue = value ? { ...value } : null;\r\n this.editorRef?.current?.show(newValue, editorflag, callBack);\r\n }\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value, type = \"编辑\") {\r\n this.editorRef.current?.setFormValue(value, type);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFormValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any, deletePosition = \"row\") {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams = {},\r\n buttonClick = {},\r\n requestParams = {},\r\n requestUrls = {},\r\n requestConfig = {},\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n const selectedRowDatas = this.tableRef.current?.getSelectedRowDatas();\r\n let url = requestUrls.deleteUrl ? requestUrls.deleteUrl : deleteUrl;\r\n let params: any = requestParams.deleteParams\r\n ? requestParams.deleteParams\r\n : deleteParams;\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (buttonClick.onDelete) {\r\n converFunction(\r\n buttonClick.onDelete,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: deletePosition == \"toolbar\" ? selectedRowDatas : data,\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys : data?.id,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!url) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const { data: dataParams = {}, ...otherParams } = params;\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n ...dataParams,\r\n },\r\n ...requestConfig,\r\n };\r\n let finalParams = {} as any;\r\n finalParams = { ...defaultParams, ...otherParams };\r\n request(url, {\r\n ...finalParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n converFunction(\r\n _this.props.onCallBacks?.onDeleteCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\r\n _this.tableLoad(value);\r\n } else {\r\n if (!res.msg) {\r\n message.error(\"删除失败!\");\r\n }\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n const {\r\n requestConfig: defaultRequestConfig = {},\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore = {} } = tableProps;\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams.data || queryParams.params || {};\r\n\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n const { requestConig: storeConfig = {} } = tableStore;\r\n const { params: storeParams = {}, ...otherStoreConfig } = storeConfig;\r\n this.tableRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...otherStoreConfig,\r\n ...requestConfig,\r\n params: { ...storeParams, ...finalParams },\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const {\r\n onSearch,\r\n onCallBacks,\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore = {} } = tableProps;\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams.data || queryParams.params || {};\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n if (onSearch) {\r\n onSearch({ ...finalParams, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...finalParams, ...this.state.treeSearchPrams });\r\n onCallBacks?.onQueryCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onQueryCallBack,\r\n { pageRef: this.props.pageRef, params: params },\r\n this.props.Utils\r\n );\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n treeLoad(params: any, requestConfig = {}) {\r\n const { requestConfig: defaultRequestConfig = {} } = this.props;\r\n this.treeRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n return this.tableRef.current?.setSelectedRowKeys(data);\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n return this.tableRef.current?.setSelectedRowDatas(data);\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n let key = \"\";\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(item);\r\n } else {\r\n key = item[rowKey];\r\n }\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, key];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, key];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, toolbarFlag) {\r\n const flag = toolbuttons.length > 5;\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n >\r\n <Button\r\n key={index}\r\n onClick={() => {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n </div>\r\n );\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-tool-buttons\"))}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n key={index}\r\n open={this.state.moreOpen}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n this.setState({\r\n moreOpen: true,\r\n });\r\n } else {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n }\r\n }}\r\n // open={true}\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: index == toolbuttons.length - 1 ? 0 : 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, rowRecord: any) {\r\n const { actionProps, tableProps = {} } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n const { rowKey = \"id\" } = tableProps;\r\n let key = \"\";\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(rowRecord);\r\n } else {\r\n key = rowRecord[rowKey];\r\n }\r\n let showIcon = false;\r\n if (actionProps?.showIcon === true || baseActionColumn.showIcon === true)\r\n showIcon = true;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n try {\r\n const eventOption = {\r\n record: rowRecord,\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n };\r\n const Utils = { ...this.props.Uitls };\r\n let func = new Function(\"eventOption,Utils\", recordShow);\r\n const show = func(eventOption, Utils);\r\n show && newButtons.push(item);\r\n } catch (e) {\r\n let record = rowRecord;\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(rowRecord);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n let number = actionProps?.buttonNumber\r\n ? actionProps?.buttonNumber\r\n : baseActionColumn?.buttonNumber\r\n ? baseActionColumn?.buttonNumber\r\n : 3;\r\n let flag = false;\r\n if (number == \"all\") {\r\n flag = false;\r\n } else {\r\n flag = newButtons.length > number;\r\n }\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > Number(number) - 1) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = { ...this.state.popopens };\r\n data[rowRecord.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(rowRecord);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < number) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(rowRecord);\r\n }}\r\n icon={icon}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n } else if (index == number) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n open={this.state.popopens[key] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[key] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"nsc-basepage-editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(rowRecord);\r\n }}\r\n {...params}\r\n type=\"link\"\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.treeSelectCallBack,\r\n { pageRef: this.props.pageRef, selectedKeys: selectedKeys, obj: obj },\r\n this.props.Utils\r\n );\r\n // utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n // selectedKeys,\r\n // obj,\r\n // ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n convertQueryParams() {\r\n const { requestParams = {} } = this.props;\r\n let queryParams: any = requestParams.queryParams;\r\n return convertStringToObj(queryParams, this.props.Utils || {}, {\r\n funcs: this.props.funcs,\r\n pageRef: this.props.pageRef,\r\n });\r\n }\r\n\r\n // 计算表头高度的方法\r\n calculateTableHeaderHeight = () => {\r\n if (this.tableWrapperRef.current) {\r\n const tableHeader =\r\n this.tableWrapperRef.current.getElementsByClassName(\r\n \"ant-table-thead\"\r\n )[0];\r\n if (tableHeader) {\r\n const headerHeight = tableHeader.getBoundingClientRect().height;\r\n if (headerHeight !== this.state.tableHeaderHeight) {\r\n this.setState({\r\n tableHeaderHeight: headerHeight,\r\n });\r\n }\r\n }\r\n }\r\n };\r\n throttleCalculateTableHeaderHeight = throttle(\r\n this.calculateTableHeaderHeight,\r\n 500\r\n );\r\n\r\n // 优化拖拽相关方法\r\n handleMouseDown(e: React.MouseEvent) {\r\n e.preventDefault();\r\n\r\n // 创建遮罩层以处理iframe场景\r\n const mask = document.createElement(\"div\");\r\n mask.style.cssText = `\r\n position: fixed;\r\n top: 0;\r\n left: 0;\r\n width: 100%;\r\n height: 100%;\r\n background: transparent;\r\n z-index: 9999;\r\n cursor: col-resize;\r\n `;\r\n mask.id = \"drag-mask\";\r\n document.body.appendChild(mask);\r\n\r\n const handleMouseMove = (e: MouseEvent) => {\r\n const newWidth = e.screenX;\r\n // 限制最小100px,最大500px\r\n if (newWidth >= 50 && newWidth <= 800) {\r\n this.setState({ treeWidth: newWidth });\r\n }\r\n };\r\n\r\n const throttledMouseMove = throttle(handleMouseMove, 16);\r\n\r\n const handleMouseUp = () => {\r\n document.removeEventListener(\"mousemove\", throttledMouseMove);\r\n document.removeEventListener(\"mouseup\", handleMouseUp);\r\n // 移除遮罩层\r\n const mask = document.getElementById(\"drag-mask\");\r\n if (mask) {\r\n document.body.removeChild(mask);\r\n }\r\n };\r\n\r\n document.addEventListener(\"mousemove\", throttledMouseMove);\r\n document.addEventListener(\"mouseup\", handleMouseUp);\r\n }\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formPageProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionProps,\r\n deletePosition = \"toolbar\",\r\n buttonClick = {},\r\n permission = { has: false },\r\n requestParams = {},\r\n requestUrls = {},\r\n } = this.props;\r\n const {\r\n store: tableStore = {},\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n title: tableTitle,\r\n ...othertableParams\r\n } = tableProps;\r\n let newTableStore = { ...tableStore };\r\n if (requestParams.queryParams) {\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams?.data || queryParams?.params || {};\r\n newTableStore.requestConfig = {\r\n params: { ...data, ...newTableStore.requestConfig?.params },\r\n };\r\n }\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n title: treeTitle,\r\n ...othertreeParams\r\n } = treeProps;\r\n let _this = this;\r\n let tableParams = {\r\n filterColumn,\r\n store: {\r\n listeners: {\r\n load: (data) => {\r\n _this.props.onCallBacks?.tableLoadCallBack &&\r\n _this.props.onCallBacks?.tableLoadCallBack(data);\r\n },\r\n },\r\n ...newTableStore,\r\n },\r\n ...othertableParams,\r\n } as any;\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n let permissionButtons = [];\r\n if (permission.has && permission.menuCode) {\r\n permissionButtons =\r\n getButtonPermissons(permission.menuCode).permissons || [];\r\n }\r\n const obj = convertColumns(columns, {});\r\n let tableColumn: any[] = getNewColumns(columns, this.props);\r\n const searchForms = obj.searchForms || [];\r\n const editorForms = obj.editorForms || [];\r\n const toolButtons: any = [];\r\n const formButton: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n const buttonMap = {\r\n editor: { name: \"编辑\", code: \"editor\", icon: <EditOutlined /> },\r\n delete: { name: \"删除\", code: \"delete\", icon: <DeleteOutlined /> },\r\n search: { name: \"查看\", code: \"search\", icon: <EyeOutlined /> },\r\n };\r\n const returnButton = (code, show = \"\", defaultProps = {}, name) => {\r\n let props = {\r\n icon: showIcon ? buttonMap[code].icon : null,\r\n type: \"link\",\r\n ...defaultProps,\r\n } as any;\r\n\r\n if (show) {\r\n props = { ...props, recordShow: show };\r\n }\r\n return (\r\n <Button\r\n onClick={(record: any) => {\r\n if (code == \"delete\") {\r\n this.onDelete(record);\r\n } else {\r\n if (code == \"editor\" && buttonClick.onEditor) {\r\n converFunction(\r\n buttonClick.onEditor,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n } else if (code == \"search\" && buttonClick.onSearch) {\r\n converFunction(\r\n buttonClick.onSearch,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, code);\r\n return;\r\n }\r\n\r\n this.showForm(record.attribute || record, code, () => {\r\n let callBack =\r\n code == \"editor\"\r\n ? this.props.onCallBacks?.onEditorCallBack\r\n : this.props.onCallBacks?.onSearchCallBack;\r\n callBack &&\r\n converFunction(\r\n callBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n }\r\n }}\r\n {...props}\r\n >\r\n {name || buttonMap[code]?.name}\r\n </Button>\r\n );\r\n };\r\n const checkPerssion = (code) => {\r\n if (!permission.has) {\r\n return true;\r\n } else {\r\n return permissionButtons.indexOf(code) > -1;\r\n }\r\n };\r\n buttons.map((item: any) => {\r\n if (\r\n this.state.defatultButton.indexOf(item) > -1 ||\r\n this.state.defatultButton.indexOf(item.code) > -1\r\n ) {\r\n if ((item == \"add\" || item.code == \"add\") && checkPerssion(\"add\")) {\r\n toolButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm, buttonClick = {} } = this.props;\r\n if (buttonClick?.onAdd) {\r\n converFunction(\r\n buttonClick.onAdd,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm(null, null, () => {\r\n this.props.onCallBacks?.onAddCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onAddCallBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n }}\r\n icon={<PlusOutlined />}\r\n {...item.props}\r\n >\r\n {item.name || \"添加\"}\r\n </Button>\r\n );\r\n } else if (\r\n (item == \"delete_batch\" || item.code == \"delete_batch\") &&\r\n checkPerssion(\"delete_batch\")\r\n ) {\r\n toolButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={this.onDelete.bind(this, null, \"toolbar\")}\r\n icon={<DeleteOutlined />}\r\n danger\r\n {...item.props}\r\n >\r\n {item.name || \"批量删除\"}\r\n </Button>\r\n );\r\n } else {\r\n if (checkPerssion(item.code ? item.code : item)) {\r\n columnButtons.push(\r\n returnButton(\r\n item.code ? item.code : item,\r\n item.recordShow,\r\n item.props || {},\r\n item.name\r\n )\r\n );\r\n }\r\n }\r\n }\r\n });\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (\r\n child?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n toolButtons.push(child);\r\n } else if (\r\n child?.props?.pageType == \"formButton\" &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n formButton.push(child);\r\n } else if (\r\n (child?.props?.pageType == \"columnButton\" ||\r\n child?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (\r\n item?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(item?.props?.code)\r\n ) {\r\n toolButtons.push(item);\r\n } else if (\r\n (item?.props?.pageType == \"columnButton\" ||\r\n item?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(item?.props?.code)\r\n ) {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\" && checkPerssion(props?.code)) {\r\n toolButtons.push(children);\r\n } else if (\r\n (props?.pageType == \"columnButton\" ||\r\n props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(props?.code)\r\n ) {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n columnButtons.length > 0 &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionProps?.textAlign\r\n ? actionProps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"left\",\r\n width: actionProps?.width\r\n ? actionProps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-basepage-action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n\r\n if (columnOrder) {\r\n const fixedFlag = hasFixedLeftColumns([...tableColumn]);\r\n let orederColumn = {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n } as any;\r\n if (fixedFlag) {\r\n orederColumn.fixed = \"left\";\r\n }\r\n tableColumn = [orederColumn, ...tableColumn];\r\n }\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag =\r\n showToolButton &&\r\n toolButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\";\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n let headerHeight = showSearch && searchForms.length > 0 ? 104 : 0; //头部搜索栏高度\r\n let toolHeight = tableTitle || toolFlag ? 50 : 0;\r\n let paddingHeight = 20 * 2; //上下间距\r\n const { tableTool: globalTableTool } = config();\r\n let tableToolFlag: any = false;\r\n if (globalTableTool.show === true) {\r\n tableToolFlag = true;\r\n }\r\n if (this.props.toolbar && this.props.toolbar.show === true) {\r\n tableToolFlag = true;\r\n }\r\n let tableContentHeight =\r\n elementHeight -\r\n toolHeight -\r\n paddingHeight -\r\n headerHeight -\r\n (tableToolFlag ? 8 : 0);\r\n let PaginationHeight = tableProps.pagination !== false ? 32 + 16 : 0; //32 为分页器高度,16为margin间距\r\n\r\n let tableHeight =\r\n tableContentHeight - PaginationHeight - (tableToolFlag ? 40 : 0);\r\n let tableSrollHeight =\r\n tableHeight -\r\n (this.state.tableHeaderHeight || 55) -\r\n (tableToolFlag ? 40 : 0);\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", y: tableSrollHeight, ...scroll },\r\n };\r\n // }\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage\"), className)}\r\n ref={this.pageRef}\r\n >\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"nsc-basepage-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div\r\n className={getLess(styles, \"nsc-basepage-left\")}\r\n style={{ width: this.state.treeWidth }}\r\n >\r\n {treeTitle && (\r\n <div className={getLess(styles, \"tree-title\")}>{treeTitle}</div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"tree-content\"), {\r\n [getLess(styles, \"tree-content-notitle\")]: !treeTitle,\r\n })}\r\n >\r\n <div\r\n className=\"tree-drag\"\r\n onMouseDown={this.handleMouseDown.bind(this)}\r\n ></div>\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n ref={this.treeRef}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-right\"), {\r\n [getLess(styles, \"nsc-basepage-no-left-right\")]: !showLeft,\r\n })}\r\n style={{\r\n width: `calc(100% - ${this.state.treeWidth}px - ${\r\n showLeft ? 15 : 0\r\n }px)`,\r\n }}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <div className={getLess(styles, \"nsc-basepage-headersearch\")}>\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={() => {\r\n if (this.props.onReset) {\r\n this.props.onReset();\r\n return;\r\n }\r\n this.searchRef.current?.resetFields();\r\n this.tableLoad({});\r\n }}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-content\"), {\r\n [getLess(styles, \"nsc-basepage-content-gap\")]: !searchFlag,\r\n })}\r\n ref={this.pageContentRef}\r\n >\r\n {(tableTitle || toolFlag) && (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-table-title\"), {\r\n [getLess(styles, \"nsc-basepage-title-width\")]: !toolbarFlag,\r\n })}\r\n >\r\n <div>{tableTitle}</div>\r\n {toolFlag && this.renderToolButtons(toolButtons, toolbarFlag)}\r\n </div>\r\n )}\r\n\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-table\"),\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top\")]: !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top2\")]:\r\n toolbarFlag && !toolFlag,\r\n }\r\n )}\r\n ref={this.tableWrapperRef}\r\n style={{ height: tableContentHeight }}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded &&\r\n record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n style={{ height: tableHeight }}\r\n {...tableParams}\r\n // pagination={false}\r\n />\r\n {/* <div></div> */}\r\n </div>\r\n </div>\r\n </div>\r\n {editorForm && this.props.formPageProps?.formType !== \"page\" && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onSumbitCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\r\n this.tableReload();\r\n }}\r\n forms={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit || this.props.buttonClick?.onSubmit}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n Utils={this.props.Utils}\r\n requestObject={{\r\n addUrl: requestUrls.addUrl,\r\n editorUrl: requestUrls.editorUrl,\r\n addParams: requestParams.addParams,\r\n editorParams: requestParams.editorParams,\r\n }}\r\n funcs={this.props.funcs}\r\n pageRef={this.props.pageRef}\r\n {...formPageProps}\r\n >\r\n {formButton}\r\n </EditorForm>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":";;;;;;;;;;;;;;;;AAAA,OAAOA,KAAK,IAAIC,aAAa,QAAmB,OAAO;AACvD,OAAOC,KAAK,MAAM,kBAAkB;AACpC,OAAOC,IAAI,MAAM,iBAAiB;AAClC,OAAOC,MAAM,MAAM,mBAAmB;AACtC,OAAOC,KAAK,MAAM,kBAAkB;AACpC,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,OAAO,MAAM,oBAAoB;AACxC,OAAOC,UAAU,MAAyB,mBAAmB;AAC7D,OAAOC,GAAG,MAAM,YAAY;AAC5B,OAAO,qBAAqB;AAG5B,SACEC,YAAY,EACZC,WAAW,EACXC,YAAY,EACZC,aAAa,EACbC,YAAY,EACZC,gBAAgB,EAChBC,cAAc,QACT,mBAAmB;AAC1B,SAASC,cAAc,EAAEC,OAAO,QAAkC,aAAa;AAC/E,OAAOC,OAAO,MAAM,aAAa;AACjC,OAAOC,MAAM,MAAM,cAAc;AACjC,SAA+BC,mBAAmB,QAAQ,mBAAmB;AAC7E,OAAOC,YAAY,MAAM,iBAAiB;AAG1C,SAASC,cAAc,EAAEC,aAAa,EAAEC,mBAAmB,QAAQ,SAAS;AAE5E,OAAOC,QAAQ,MAAM,iBAAiB;AAEtC,SAASC,kBAAkB,QAAQ,sBAAsB;AAmBzD,MAAMC,MAAM,GAAG,IAAI;AAwFnB,MAAMC,QAAQ,SAAS5B,aAAa,CAAwB;EAU1D6B,WAAWA,CAACC,KAAU,EAAE;IACtB,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA,gCAVJhC,KAAK,CAACiC,SAAS,CAAM,CAAC;IAAAD,eAAA,+BACvBhC,KAAK,CAACiC,SAAS,CAAM,CAAC;IAAAD,eAAA,iCACpBhC,KAAK,CAACiC,SAAS,CAAM,CAAC;IAAAD,eAAA,iCACtBhC,KAAK,CAACiC,SAAS,CAAM,CAAC;IAAAD,eAAA,+BACxBhC,KAAK,CAACiC,SAAS,CAAM,CAAC;IAAAD,eAAA,sCACfhC,KAAK,CAACiC,SAAS,CAAM,CAAC;IAAAD,eAAA,qBAC1B,CAAC,CAAC;IAAAA,eAAA,uCACGhC,KAAK,CAACiC,SAAS,CAAiB,CAAC;IAAAD,eAAA,mBAkEvCE,eAAoB,IAAK;MACnC,MAAM;QAAEC,IAAI;QAAEC,QAAQ;QAAEC;MAAQ,CAAC,GAAG,IAAI,CAACC,KAAK;MAC9C,MAAMC,KAAK,GAAG;QAAEJ,IAAI;QAAEC,QAAQ;QAAEC,OAAO;QAAEG,MAAM,EAAEN,eAAe,CAAC,CAAC;MAAE,CAAC;MACrE,IAAI,IAAI,CAACH,KAAK,CAACU,QAAQ,EAAE;QACvB,IAAI,CAACV,KAAK,CAACU,QAAQ,CAACF,KAAK,CAAC;MAC5B;MACA;IACF,CAAC;IAAAP,eAAA,yBAwmBiBU,QAAQ,IAAK;MAC7B,IAAIC,GAAG,GAAG,EAAE;MACZ,KAAK,IAAIC,GAAG,IAAIF,QAAQ,EAAE;QACxB,MAAMG,IAAI,GAAGH,QAAQ,CAACE,GAAG,CAAC;QAC1B,IAAIC,IAAI,CAACC,MAAM,GAAG,CAAC,EAAE;UACnBH,GAAG,GAAG,CAAC,GAAGA,GAAG,EAAE,GAAGE,IAAI,CAAC;QACzB;MACF;MACA,OAAOF,GAAG;IACZ,CAAC;IAWD;IAAAX,eAAA,qCAC6B,MAAM;MACjC,IAAI,IAAI,CAACe,eAAe,CAACC,OAAO,EAAE;QAChC,MAAMC,WAAW,GACf,IAAI,CAACF,eAAe,CAACC,OAAO,CAACE,sBAAsB,CACjD,iBACF,CAAC,CAAC,CAAC,CAAC;QACN,IAAID,WAAW,EAAE;UACf,MAAME,YAAY,GAAGF,WAAW,CAACG,qBAAqB,CAAC,CAAC,CAACC,MAAM;UAC/D,IAAIF,YAAY,KAAK,IAAI,CAACb,KAAK,CAACgB,iBAAiB,EAAE;YACjD,IAAI,CAACC,QAAQ,CAAC;cACZD,iBAAiB,EAAEH;YACrB,CAAC,CAAC;UACJ;QACF;MACF;IACF,CAAC;IAAAnB,eAAA,6CACoCN,QAAQ,CAC3C,IAAI,CAAC8B,0BAA0B,EAC/B,GACF,CAAC;IArtBC,IAAI,CAAClB,KAAK,GAAG;MACXmB,IAAI,EAAE,KAAK;MACXC,eAAe,EAAE,EAAE;MACnBC,gBAAgB,EAAE,EAAE;MACpBC,eAAe,EAAE,EAAE;MACnBC,MAAM,EAAE,KAAK;MACbC,eAAe,EAAE,CAAC,CAAC;MACnBC,QAAQ,EAAE,CAAC,CAAC;MACZC,QAAQ,EAAE,KAAK;MACfC,aAAa,EAAE,CAAC;MAChBC,iBAAiB,EAAE,EAAE;MACrBC,WAAW,EAAE,CAAC,CAAC;MACfb,iBAAiB,EAAE,CAAC;MAAE;MACtBc,cAAc,EAAE,CAAC,CAAC;MAClBC,SAAS,EAAE,IAAI,CAACtC,KAAK,CAACuC,QAAQ,GAAG,GAAG,GAAG,CAAC;MACxCC,cAAc,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,cAAc;IACtE,CAAC;EACH;EAEAC,iBAAiBA,CAAA,EAAG;IAAA,IAAAC,qBAAA;IAClB,MAAM;MAAEC,QAAQ;MAAEC,SAAS,GAAG,CAAC;IAAE,CAAC,GAAG,IAAI,CAAC5C,KAAK;IAC/C,MAAMkC,aAAa,IAAAQ,qBAAA,GAAG,IAAI,CAACG,OAAO,CAAC5B,OAAO,cAAAyB,qBAAA,uBAApBA,qBAAA,CAAsBI,YAAY;;IAExD;IACAC,MAAM,CAACC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAACC,kCAAkC,CAAC;;IAE1E;IACAC,UAAU,CAAC,IAAI,CAACzB,0BAA0B,EAAE,CAAC,CAAC;IAE9C,IAAI,CAACD,QAAQ,CAAC;MACZU;IACF,CAAC,CAAC;IACFS,QAAQ,IAAIA,QAAQ,CAAC,CAAC;EACxB;EACAQ,kBAAkBA,CAACC,SAAS,EAAE;IAAA,IAAAC,sBAAA;IAC5B,MAAMnB,aAAa,IAAAmB,sBAAA,GAAG,IAAI,CAACR,OAAO,CAAC5B,OAAO,cAAAoC,sBAAA,uBAApBA,sBAAA,CAAsBP,YAAY;IACxD,IAAIZ,aAAa,GAAG,IAAI,CAAC3B,KAAK,CAAC2B,aAAa,EAAE;MAC5C,IAAI,CAACV,QAAQ,CAAC;QACZU;MACF,CAAC,CAAC;IACJ;IACA,IAAIkB,SAAS,CAACb,QAAQ,KAAK,IAAI,CAACvC,KAAK,CAACuC,QAAQ,EAAE;MAC9C,IAAI,CAACf,QAAQ,CAAC;QACZc,SAAS,EAAE,IAAI,CAACtC,KAAK,CAACuC,QAAQ,GAAG,GAAG,GAAG;MACzC,CAAC,CAAC;IACJ;EACF;EACAe,oBAAoBA,CAAA,EAAG;IACrB;IACAP,MAAM,CAACQ,mBAAmB,CACxB,QAAQ,EACR,IAAI,CAACN,kCACP,CAAC;EACH;EACAO,eAAeA,CAACC,MAAM,EAAEC,QAAQ,EAAE;IAAA,IAAAC,qBAAA;IAChC,CAAAA,qBAAA,OAAI,CAACC,SAAS,CAAC3C,OAAO,cAAA0C,qBAAA,eAAtBA,qBAAA,CAAwBH,eAAe,CAACC,MAAM,CAAC;IAC/CC,QAAQ,IAAIA,QAAQ,CAACD,MAAM,CAAC;EAC9B;EACAI,QAAQA,CAACC,IAAI,EAAgB;IAAA,IAAAC,qBAAA;IAAA,IAAdC,KAAK,GAAAC,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,IAAI;IACzB,CAAAF,qBAAA,OAAI,CAACI,SAAS,CAAClD,OAAO,cAAA8C,qBAAA,eAAtBA,qBAAA,CAAwBF,QAAQ,CAACC,IAAI,EAAEE,KAAK,CAAC;EAC/C;EAWA;EACAI,QAAQA,CAAC5D,KAAW,EAAsC;IAAA,IAAA6D,qBAAA;IAAA,IAApCC,UAAU,GAAAL,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;IAAA,IAAEP,QAAc,GAAAO,SAAA,CAAAlD,MAAA,OAAAkD,SAAA,MAAAC,SAAA;IACtD,IAAI,EAAAG,qBAAA,OAAI,CAACrE,KAAK,CAACuE,aAAa,cAAAF,qBAAA,uBAAxBA,qBAAA,CAA0BG,QAAQ,KAAI,MAAM,EAAE;MAAA,IAAAC,sBAAA;MAChD,MAAM;QAAEC,KAAK,GAAG,CAAC;MAAE,CAAC,GAAG,IAAI,CAAC1E,KAAK;MACjC,IAAI2E,QAAQ,gBAAAC,MAAA,CAAgBN,UAAU,GAAGA,UAAU,GAAG,KAAK,aAAAM,MAAA,CACzD,IAAI,CAAC5E,KAAK,CAAC6E,SAAS,CACpB;MACF,IAAIP,UAAU,IAAI,QAAQ,IAAIA,UAAU,IAAI,QAAQ,EAAE;QACpDK,QAAQ,GAAGA,QAAQ,GAAG,MAAM,GAAGnE,KAAK,CAACsE,EAAE;MACzC;MACAJ,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEK,OAAO,CACZ;QACEJ,QAAQ,EAAEA,QAAQ;QAClBK,WAAW,EAAE,aAAa;QAC1BC,WAAW,EAAE,UAAU;QACvBH,EAAE,EACA,IAAII,IAAI,CAAC,CAAC,CAACC,OAAO,CAAC,CAAC,IACnB,CAAA3E,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEsE,EAAE,KAAI,GAAG,CAAC,GAClBR,UAAU,GACV,GAAG,GACH,IAAI,CAACtE,KAAK,CAAC6E,SAAS,IACnBrE,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEsE,EAAE,GAAG,GAAG,GAAGtE,KAAK,CAACsE,EAAE,GAAG,EAAE,CAAC;QACnCM,KAAK,EACH,SAAAR,MAAA,CACEN,UAAU,IAAI,KAAK,GACf,IAAI,GACJA,UAAU,IAAI,QAAQ,GACtB,IAAI,GACJ,IAAI,gBAAAG,sBAAA,GACJ,IAAI,CAACzE,KAAK,CAACuE,aAAa,cAAAE,sBAAA,uBAAxBA,sBAAA,CAA0BW,KAAK,KAAI;MAC7C,CAAC,EACD,QACF,CAAC;IACH,CAAC,MAAM;MAAA,IAAAC,eAAA;MACL,IAAIC,QAAQ,GAAG9E,KAAK,GAAA+E,aAAA,KAAQ/E,KAAK,IAAK,IAAI;MAC1C,CAAA6E,eAAA,OAAI,CAAClB,SAAS,cAAAkB,eAAA,gBAAAA,eAAA,GAAdA,eAAA,CAAgBpE,OAAO,cAAAoE,eAAA,eAAvBA,eAAA,CAAyBG,IAAI,CAACF,QAAQ,EAAEhB,UAAU,EAAEZ,QAAQ,CAAC;IAC/D;EACF;;EAEA;EACA+B,QAAQA,CAAA,EAAG;IAAA,IAAAC,sBAAA;IACT,CAAAA,sBAAA,OAAI,CAACvB,SAAS,CAAClD,OAAO,cAAAyE,sBAAA,eAAtBA,sBAAA,CAAwBD,QAAQ,CAAC,CAAC;EACpC;EAEAE,UAAUA,CAACC,OAAgB,EAAE;IAAA,IAAAC,sBAAA;IAC3B,CAAAA,sBAAA,OAAI,CAAC1B,SAAS,CAAClD,OAAO,cAAA4E,sBAAA,eAAtBA,sBAAA,CAAwBF,UAAU,CAACC,OAAO,CAAC;EAC7C;EAEAE,iBAAiBA,CAACtF,KAAK,EAAe;IAAA,IAAAuF,sBAAA;IAAA,IAAbrE,IAAI,GAAAuC,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,IAAI;IAClC,CAAA8B,sBAAA,OAAI,CAAC5B,SAAS,CAAClD,OAAO,cAAA8E,sBAAA,eAAtBA,sBAAA,CAAwBC,YAAY,CAACxF,KAAK,EAAEkB,IAAI,CAAC;EACnD;EAEAuE,iBAAiBA,CAAA,EAAG;IAAA,IAAAC,sBAAA;IAClB,QAAAA,sBAAA,GAAO,IAAI,CAAC/B,SAAS,CAAClD,OAAO,cAAAiF,sBAAA,uBAAtBA,sBAAA,CAAwBC,YAAY,CAAC,CAAC;EAC/C;;EAEA;EACAC,QAAQA,CAACtC,IAAU,EAA0B;IAAA,IAAAuC,qBAAA,EAAAC,sBAAA;IAAA,IAAxBC,cAAc,GAAAtC,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,KAAK;IACzC,MAAM;MACJuC,SAAS;MACTJ,QAAQ;MACRK,YAAY,GAAG,CAAC,CAAC;MACjBC,WAAW,GAAG,CAAC,CAAC;MAChBC,aAAa,GAAG,CAAC,CAAC;MAClBC,WAAW,GAAG,CAAC,CAAC;MAChBC,aAAa,GAAG,CAAC;IACnB,CAAC,GAAG,IAAI,CAAC7G,KAAK;IACd,IAAI8G,KAAK,GAAG,IAAI;IAChB,MAAMnF,eAAe,IAAA0E,qBAAA,GAAG,IAAI,CAACU,QAAQ,CAAC9F,OAAO,cAAAoF,qBAAA,uBAArBA,qBAAA,CAAuBW,kBAAkB,CAAC,CAAC;IACnE,MAAMpF,gBAAgB,IAAA0E,sBAAA,GAAG,IAAI,CAACS,QAAQ,CAAC9F,OAAO,cAAAqF,sBAAA,uBAArBA,sBAAA,CAAuBW,mBAAmB,CAAC,CAAC;IACrE,IAAIC,GAAG,GAAGN,WAAW,CAACJ,SAAS,GAAGI,WAAW,CAACJ,SAAS,GAAGA,SAAS;IACnE,IAAI/C,MAAW,GAAGkD,aAAa,CAACF,YAAY,GACxCE,aAAa,CAACF,YAAY,GAC1BA,YAAY;IAChB,IAAIF,cAAc,IAAI,SAAS,EAAE;MAC/B,IAAI5E,eAAe,CAACZ,MAAM,IAAI,CAAC,EAAE;QAC/BvC,OAAO,CAAC2I,OAAO,CAAC,YAAY,CAAC;QAC7B;MACF;IACF;IACA7I,KAAK,CAAC8I,OAAO,CAAC;MACZC,OAAO,EAAE,YAAY;MACrB;MACAC,IAAI,EAAEA,CAAA,KAAM;QACV,IAAIZ,WAAW,CAACN,QAAQ,EAAE;UACxBlH,cAAc,CACZwH,WAAW,CAACN,QAAQ,EACpB;YACEvD,OAAO,EAAE,IAAI,CAAC7C,KAAK,CAAC6C,OAAO;YAC3B0E,MAAM,EAAEhB,cAAc,IAAI,SAAS,GAAG3E,gBAAgB,GAAGkC,IAAI;YAC7D0D,GAAG,EAAEjB,cAAc,IAAI,SAAS,GAAG5E,eAAe,GAAGmC,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAEgB,EAAE;YAC7DJ,KAAK,EAAE,IAAI,CAAC1E,KAAK,CAAC0E;UACpB,CAAC,EACD,IAAI,CAAC1E,KAAK,CAACyH,KACb,CAAC;UACD;QACF;QACA,IAAIrB,QAAQ,EAAE;UACZA,QAAQ,IACNA,QAAQ,CAACG,cAAc,IAAI,SAAS,GAAG5E,eAAe,GAAGmC,IAAI,CAAC;UAChE;QACF;QACA,IAAI,CAACoD,GAAG,EAAE;UACR,MAAM,IAAIQ,KAAK,CAAC,UAAU,CAAC;QAC7B;QACA,MAAM;YAAE5D,IAAI,EAAE6D,UAAU,GAAG,CAAC;UAAkB,CAAC,GAAGlE,MAAM;UAAtBmE,WAAW,GAAAC,wBAAA,CAAKpE,MAAM,EAAAqE,SAAA;QACxD,MAAMC,aAAa,GAAAxC,aAAA;UACjByC,MAAM,EAAE,MAAM;UACdC,UAAU,EAAE,IAAI;UAChBxE,MAAM,EAAA8B,aAAA;YACJiC,GAAG,EAAEjB,cAAc,IAAI,SAAS,GAAG5E,eAAe,CAACuG,IAAI,CAAC,CAAC,GAAGpE,IAAI,CAACgB;UAAE,GAChE6C,UAAU;QACd,GACEd,aAAa,CACjB;QACD,IAAIsB,WAAW,GAAG,CAAC,CAAQ;QAC3BA,WAAW,GAAA5C,aAAA,CAAAA,aAAA,KAAQwC,aAAa,GAAKH,WAAW,CAAE;QAClDxI,OAAO,CAAC8H,GAAG,EAAA3B,aAAA,KACN4C,WAAW,CACf,CAAC,CACCC,IAAI,CAAC,UAAUxH,GAAQ,EAAE;UACxB,MAAM;YAAEyH;UAAK,CAAC,GAAGzH,GAAG;UACpB,IAAIyH,IAAI,KAAK,GAAG,EAAE;YAAA,IAAAC,eAAA,EAAAC,qBAAA,EAAAC,sBAAA;YAChBhK,OAAO,CAACiK,OAAO,CAAC,OAAO,CAAC;YACxB,IAAIjI,KAAK,IAAA8H,eAAA,GAAGxB,KAAK,CAAClD,SAAS,cAAA0E,eAAA,gBAAAA,eAAA,GAAfA,eAAA,CAAiBrH,OAAO,cAAAqH,eAAA,uBAAxBA,eAAA,CAA0BI,eAAe,CAAC,CAAC;YACvD,EAAAH,qBAAA,GAAAzB,KAAK,CAAC9G,KAAK,CAAC2I,WAAW,cAAAJ,qBAAA,uBAAvBA,qBAAA,CAAyBK,gBAAgB,KACvC1J,cAAc,EAAAsJ,sBAAA,GACZ1B,KAAK,CAAC9G,KAAK,CAAC2I,WAAW,cAAAH,sBAAA,uBAAvBA,sBAAA,CAAyBI,gBAAgB,EACzC;cAAE/F,OAAO,EAAE,IAAI,CAAC7C,KAAK,CAAC6C;YAAQ,CAAC,EAC/B,IAAI,CAAC7C,KAAK,CAACyH,KACb,CAAC;YACHX,KAAK,CAAC+B,SAAS,CAACrI,KAAK,CAAC;UACxB,CAAC,MAAM;YACL,IAAI,CAACI,GAAG,CAACkI,GAAG,EAAE;cACZtK,OAAO,CAACuK,KAAK,CAAC,OAAO,CAAC;YACxB;UACF;QACF,CAAC,CAAC,CACDC,KAAK,CAAC,UAAUD,KAAU,EAAE;UAC3BE,OAAO,CAACC,GAAG,CAAC,OAAO,EAAEH,KAAK,CAAC;QAC7B,CAAC,CAAC;MACN;IACF,CAAC,CAAC;EACJ;EACAF,SAASA,CAACpF,MAAW,EAAsB;IAAA,IAAA0F,qBAAA,EAAAC,sBAAA;IAAA,IAApBvC,aAAa,GAAA5C,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC,CAAC;IACvC,MAAM;MACJ4C,aAAa,EAAEwC,oBAAoB,GAAG,CAAC,CAAC;MACxC1C,aAAa,GAAG,CAAC,CAAC;MAClB2C,UAAU,GAAG,CAAC;IAChB,CAAC,GAAG,IAAI,CAACtJ,KAAK;IACd,MAAM;MAAEuJ,KAAK,EAAEC,UAAU,GAAG,CAAC;IAAE,CAAC,GAAGF,UAAU;IAC7C,IAAIlH,WAAgB,GAAG,IAAI,CAACqH,kBAAkB,CAAC,CAAC;IAChD,IAAI3F,IAAI,GAAG1B,WAAW,CAAC0B,IAAI,IAAI1B,WAAW,CAACqB,MAAM,IAAI,CAAC,CAAC;IAEvD,IAAI0E,WAAW,GAAA5C,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACVzB,IAAI,IAAAqF,qBAAA,GACJK,UAAU,CAAC3C,aAAa,cAAAsC,qBAAA,uBAAxBA,qBAAA,CAA0B1F,MAAM,GAChCA,MAAM,CACV;IACD,MAAM;MAAEiG,YAAY,EAAEC,WAAW,GAAG,CAAC;IAAE,CAAC,GAAGH,UAAU;IACrD,MAAM;QAAE/F,MAAM,EAAEmG,WAAW,GAAG,CAAC;MAAuB,CAAC,GAAGD,WAAW;MAAhCE,gBAAgB,GAAAhC,wBAAA,CAAK8B,WAAW,EAAAG,UAAA;IACrE,CAAAV,sBAAA,OAAI,CAACrC,QAAQ,CAAC9F,OAAO,cAAAmI,sBAAA,eAArBA,sBAAA,CAAuBG,KAAK,CAACQ,IAAI,CAAAxE,aAAA,CAAAA,aAAA,CAAAA,aAAA,CAAAA,aAAA,KAC5B8D,oBAAoB,GACpBQ,gBAAgB,GAChBhD,aAAa;MAChBpD,MAAM,EAAA8B,aAAA,CAAAA,aAAA,KAAOqE,WAAW,GAAKzB,WAAW;IAAE,EAC3C,CAAC;EACJ;EACA;EACAzH,QAAQA,CAAC+C,MAAM,EAAE;IAAA,IAAAuG,sBAAA,EAAAC,sBAAA;IACf,MAAM;MACJvJ,QAAQ;MACRiI,WAAW;MACXhC,aAAa,GAAG,CAAC,CAAC;MAClB2C,UAAU,GAAG,CAAC;IAChB,CAAC,GAAG,IAAI,CAACtJ,KAAK;IACd,MAAM;MAAEuJ,KAAK,EAAEC,UAAU,GAAG,CAAC;IAAE,CAAC,GAAGF,UAAU;IAC7C,IAAIlH,WAAgB,GAAG,IAAI,CAACqH,kBAAkB,CAAC,CAAC;IAChD,IAAI3F,IAAI,GAAG1B,WAAW,CAAC0B,IAAI,IAAI1B,WAAW,CAACqB,MAAM,IAAI,CAAC,CAAC;IACvD,IAAI0E,WAAW,GAAA5C,aAAA,CAAAA,aAAA,CAAAA,aAAA,KACVzB,IAAI,IAAAkG,sBAAA,GACJR,UAAU,CAAC3C,aAAa,cAAAmD,sBAAA,uBAAxBA,sBAAA,CAA0BvG,MAAM,GAChCA,MAAM,CACV;IACD,IAAI/C,QAAQ,EAAE;MACZA,QAAQ,CAAA6E,aAAA,CAAAA,aAAA,KAAM4C,WAAW,GAAK,IAAI,CAAC5H,KAAK,CAACwB,eAAe,CAAE,CAAC;MAC3D;IACF;IACA,IAAI,CAAC8G,SAAS,CAAAtD,aAAA,CAAAA,aAAA,KAAM4C,WAAW,GAAK,IAAI,CAAC5H,KAAK,CAACwB,eAAe,CAAE,CAAC;IACjE,CAAA4G,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEuB,eAAe,KAC1BhL,cAAc,EAAA+K,sBAAA,GACZ,IAAI,CAACjK,KAAK,CAAC2I,WAAW,cAAAsB,sBAAA,uBAAtBA,sBAAA,CAAwBC,eAAe,EACvC;MAAErH,OAAO,EAAE,IAAI,CAAC7C,KAAK,CAAC6C,OAAO;MAAEY,MAAM,EAAEA;IAAO,CAAC,EAC/C,IAAI,CAACzD,KAAK,CAACyH,KACb,CAAC;EACL;EACA;EACA0C,WAAWA,CAAA,EAA+B;IAAA,IAAAC,sBAAA;IAAA,IAA9B3G,MAAM,GAAAQ,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC,CAAC;IAAA,IAAEoG,QAAQ,GAAApG,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,IAAI;IACtC,CAAAmG,sBAAA,OAAI,CAACrD,QAAQ,CAAC9F,OAAO,cAAAmJ,sBAAA,gBAAAA,sBAAA,GAArBA,sBAAA,CAAuBb,KAAK,cAAAa,sBAAA,eAA5BA,sBAAA,CAA8BE,MAAM,CAAC;MACnCC,QAAQ,EAAG3J,GAAG,IAAK;QAAA,IAAA4J,SAAA;QACjB,IACEH,QAAQ,IACR,CAAAzJ,GAAG,aAAHA,GAAG,gBAAA4J,SAAA,GAAH5J,GAAG,CAAEkD,IAAI,cAAA0G,SAAA,gBAAAA,SAAA,GAATA,SAAA,CAAWC,OAAO,cAAAD,SAAA,uBAAlBA,SAAA,CAAoBzJ,MAAM,KAAI,CAAC,IAC/B,IAAI,CAACR,KAAK,CAACmK,WAAW,KAAK,CAAC,EAC5B;UAAA,IAAAC,sBAAA;UACA,CAAAA,sBAAA,OAAI,CAAC5D,QAAQ,CAAC9F,OAAO,cAAA0J,sBAAA,gBAAAA,sBAAA,GAArBA,sBAAA,CAAuBpB,KAAK,cAAAoB,sBAAA,eAA5BA,sBAAA,CAA8BL,MAAM,CAAC;YACnC7G,MAAM,EAAA8B,aAAA;cAAItE,OAAO,EAAE;YAAC,GAAKwC,MAAM;UACjC,CAAC,CAAC;QACJ;MACF;IACF,CAAC,CAAC;EACJ;EACAmH,QAAQA,CAACnH,MAAW,EAAsB;IAAA,IAAAoH,qBAAA;IAAA,IAApBhE,aAAa,GAAA5C,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC,CAAC;IACtC,MAAM;MAAE4C,aAAa,EAAEwC,oBAAoB,GAAG,CAAC;IAAE,CAAC,GAAG,IAAI,CAACrJ,KAAK;IAC/D,CAAA6K,qBAAA,OAAI,CAACC,OAAO,CAAC7J,OAAO,cAAA4J,qBAAA,eAApBA,qBAAA,CAAsBtB,KAAK,CAACQ,IAAI,CAAAxE,aAAA,CAAAA,aAAA,CAAAA,aAAA,KAC3B8D,oBAAoB,GACpBxC,aAAa;MAChBpD,MAAM,EAAEA;IAAM,EACf,CAAC;EACJ;EACAuD,kBAAkBA,CAAA,EAAG;IAAA,IAAA+D,sBAAA;IACnB,QAAAA,sBAAA,GAAO,IAAI,CAAChE,QAAQ,CAAC9F,OAAO,cAAA8J,sBAAA,uBAArBA,sBAAA,CAAuB/D,kBAAkB,CAAC,CAAC;EACpD;EACAC,mBAAmBA,CAAA,EAAG;IAAA,IAAA+D,sBAAA;IACpB,QAAAA,sBAAA,GAAO,IAAI,CAACjE,QAAQ,CAAC9F,OAAO,cAAA+J,sBAAA,uBAArBA,sBAAA,CAAuB/D,mBAAmB,CAAC,CAAC;EACrD;EACAgE,kBAAkBA,CAACnH,IAA4B,EAAE;IAAA,IAAAoH,sBAAA;IAC/C,QAAAA,sBAAA,GAAO,IAAI,CAACnE,QAAQ,CAAC9F,OAAO,cAAAiK,sBAAA,uBAArBA,sBAAA,CAAuBD,kBAAkB,CAACnH,IAAI,CAAC;EACxD;EACAqH,mBAAmBA,CAACrH,IAAmB,EAAE;IAAA,IAAAsH,sBAAA;IACvC,QAAAA,sBAAA,GAAO,IAAI,CAACrE,QAAQ,CAAC9F,OAAO,cAAAmK,sBAAA,uBAArBA,sBAAA,CAAuBD,mBAAmB,CAACrH,IAAI,CAAC;EACzD;EACAuH,oBAAoBA,CAAA,EAAG;IAAA,IAAAC,uBAAA;IACrB,QAAAA,uBAAA,GAAO,IAAI,CAACvE,QAAQ,CAAC9F,OAAO,cAAAqK,uBAAA,uBAArBA,uBAAA,CAAuBD,oBAAoB,CAAC,CAAC;EACtD;EAEA3C,eAAeA,CAAA,EAAG;IAAA,IAAA6C,gBAAA;IAChB,MAAMC,SAAS,IAAAD,gBAAA,GAAG,IAAI,CAAC3H,SAAS,cAAA2H,gBAAA,gBAAAA,gBAAA,GAAdA,gBAAA,CAAgBtK,OAAO,cAAAsK,gBAAA,uBAAvBA,gBAAA,CAAyB7C,eAAe,CAAC,CAAC;IAC5D,OAAAnD,aAAA,CAAAA,aAAA,KAAYiG,SAAS,GAAK,IAAI,CAACjL,KAAK,CAACwB,eAAe;EACtD;EAEA0J,eAAeA,CAAC3H,IAAI,EAAa;IAAA,IAAXhD,IAAI,GAAAmD,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,EAAE;IAC7B,MAAM;MAAEqF;IAAW,CAAC,GAAG,IAAI,CAACtJ,KAAK;IACjC,MAAM;MAAE0L,MAAM,GAAG;IAAK,CAAC,GAAGpC,UAAU;IACpC,IAAIqC,MAAM,GAAG,EAAE;IACf,IAAI9K,GAAG,GAAG,EAAE;IACZ,IAAIiD,IAAI,CAAC8H,UAAU,EAAE;MACnB,MAAMC,QAAQ,GAAG/H,IAAI,CAAC8H,UAAU;MAChCC,QAAQ,CAACC,GAAG,CAAC,CAACC,IAAI,EAAEC,KAAK,KAAK;QAC5B,IAAI,OAAON,MAAM,IAAI,UAAU,EAAE;UAC/B7K,GAAG,GAAG6K,MAAM,CAACK,IAAI,CAAC;QACpB,CAAC,MAAM;UACLlL,GAAG,GAAGkL,IAAI,CAACL,MAAM,CAAC;QACpB;QACA,IAAIK,IAAI,CAACH,UAAU,EAAE;UACnB,IAAI,CAACH,eAAe,CAACM,IAAI,CAACH,UAAU,EAAE9K,IAAI,CAAC;QAC7C,CAAC,MAAM;UACL6K,MAAM,GAAG,CAAC,GAAG7K,IAAI,EAAED,GAAG,CAAC;QACzB;MACF,CAAC,CAAC;IACJ,CAAC,MAAM;MACL8K,MAAM,GAAG,CAAC,GAAG7K,IAAI,EAAED,GAAG,CAAC;IACzB;IACA,OAAO8K,MAAM;EACf;EAEAM,iBAAiBA,CAACC,WAAgB,EAAEC,WAAW,EAAE;IAC/C,MAAMC,IAAI,GAAGF,WAAW,CAACnL,MAAM,GAAG,CAAC;IACnC,MAAM;MAAEsL,UAAU,GAAG;IAAK,CAAC,GAAG,IAAI,CAACrM,KAAK;IACxC,MAAMqH,OAAO,GAAG6E,WAAW,CAACJ,GAAG,CAAC,CAACC,IAAS,EAAEC,KAAU,KAAK;MACzD,MAAAM,WAAA,GAA+DP,IAAI,CAAC/L,KAAK;QAAnE;UAAE6L,QAAQ;UAAEU,QAAQ;UAAEC,OAAO;UAAEC,IAAI;UAAEjH;QAAgB,CAAC,GAAA8G,WAAA;QAAR7I,MAAM,GAAAoE,wBAAA,CAAAyE,WAAA,EAAAI,UAAA;MAC1D,IAAIV,KAAK,GAAG,CAAC,EAAE;QACb,oBACE/N,KAAA,CAAA0O,aAAA;UACEC,SAAS,EAAElO,GAAG,CACZS,OAAO,CAACU,MAAM,EAAE,qBAAqB,CAAC,EACtCV,OAAO,CAACU,MAAM,EAAE,2BAA2B,CAC7C;QAAE,gBAEF5B,KAAA,CAAA0O,aAAA,CAACtO,MAAM,EAAAwO,QAAA;UACLhM,GAAG,EAAEmL,KAAM;UACXQ,OAAO,EAAEA,CAAA,KAAM;YACb,IAAI,CAAChL,QAAQ,CAAC;cACZS,QAAQ,EAAE;YACZ,CAAC,CAAC;YACFuK,OAAO,IAAIA,OAAO,CAAC,CAAC;UACtB;QAAE,GACE/I,MAAM;UACV/B,IAAI,EAAE;QAAO,iBAEbzD,KAAA,CAAA0O,aAAA;UAAMC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,mBAAmB;QAAE,GACnD4M,IACG,CAAC,eACPxO,KAAA,CAAA0O,aAAA;UAAMC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,mBAAmB;QAAE,GACnDgM,QACG,CACA,CACL,CAAC;MAEV;IACF,CAAC,CAAC;IAEF,oBACE5N,KAAA,CAAA0O,aAAA;MACEC,SAAS,EAAElO,GAAG,CAACS,OAAO,CAACU,MAAM,EAAE,2BAA2B,CAAC,CAAE;MAC7DiN,KAAK,EAAE;QAAEC,UAAU,EAAE;MAAE;IAAE,GAExBb,WAAW,CAACJ,GAAG,CAAC,CAACC,IAAS,EAAEC,KAAU,KAAK;MAC1C,IAAII,IAAI,EAAE;QACR,IAAIJ,KAAK,GAAG,CAAC,EAAE;UACb,oBACE/N,KAAA,CAAA0O,aAAA;YACE9L,GAAG,EAAEmL,KAAM;YACXc,KAAK,EAAE;cACLE,WAAW,EAAE;YACf;UAAE,GAEDjB,IACE,CAAC;QAEV,CAAC,MAAM,IAAIC,KAAK,IAAI,CAAC,EAAE;UACrB,oBACE/N,KAAA,CAAA0O,aAAA,CAACpO,OAAO;YACN8I,OAAO,EAAEA,OAAQ;YACjBjC,KAAK,EAAE,IAAK;YACZ6H,SAAS,EAAC,QAAQ;YAClBpM,GAAG,EAAEmL,KAAM;YACXkB,IAAI,EAAE,IAAI,CAAC3M,KAAK,CAAC0B,QAAS;YAC1BkL,YAAY,EAAGD,IAAI,IAAK;cACtB,IAAIA,IAAI,EAAE;gBACR,IAAI,CAAC1L,QAAQ,CAAC;kBACZS,QAAQ,EAAE;gBACZ,CAAC,CAAC;cACJ,CAAC,MAAM;gBACL,IAAI,CAACT,QAAQ,CAAC;kBACZS,QAAQ,EAAE;gBACZ,CAAC,CAAC;cACJ;YACF;YACA;YACA;UAAA,gBAEAhE,KAAA,CAAA0O,aAAA,CAACtO,MAAM;YAACqD,IAAI,EAAC;UAAS,GAAC,eAClB,eAAAzD,KAAA,CAAA0O,aAAA,CAAChO,YAAY,MAAE,CACZ,CACD,CAAC;QAEd,CAAC,MAAM;UACL,OAAO,IAAI;QACb;MACF,CAAC,MAAM;QACL,oBACEV,KAAA,CAAA0O,aAAA;UACE9L,GAAG,EAAEmL,KAAM;UACXc,KAAK,EAAE;YACLE,WAAW,EAAEhB,KAAK,IAAIE,WAAW,CAACnL,MAAM,GAAG,CAAC,GAAG,CAAC,GAAG;UACrD;QAAE,GAEDgL,IACE,CAAC;MAEV;IACF,CAAC,CACE,CAAC;EAEV;EACAqB,kBAAkBA,CAACC,aAAkB,EAAEC,SAAc,EAAE;IACrD,MAAM;MAAEC,WAAW;MAAEjE,UAAU,GAAG,CAAC;IAAE,CAAC,GAAG,IAAI,CAACtJ,KAAK;IACnD,MAAM;MAAEwN;IAAiB,CAAC,GAAGnO,MAAM,CAAC,CAAC;IACrC,MAAMoO,UAAU,GAAG,EAAE;IACrB,MAAM;MAAE/B,MAAM,GAAG;IAAK,CAAC,GAAGpC,UAAU;IACpC,IAAIzI,GAAG,GAAG,EAAE;IACZ,IAAI,OAAO6K,MAAM,IAAI,UAAU,EAAE;MAC/B7K,GAAG,GAAG6K,MAAM,CAAC4B,SAAS,CAAC;IACzB,CAAC,MAAM;MACLzM,GAAG,GAAGyM,SAAS,CAAC5B,MAAM,CAAC;IACzB;IACA,IAAIgC,QAAQ,GAAG,KAAK;IACpB,IAAI,CAAAH,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEG,QAAQ,MAAK,IAAI,IAAIF,gBAAgB,CAACE,QAAQ,KAAK,IAAI,EACtEA,QAAQ,GAAG,IAAI;IACjBL,aAAa,CAACvB,GAAG,CAAC,CAACC,IAAS,EAAEC,KAAU,KAAK;MAC3C,MAAA2B,YAAA,GACE5B,IAAI,CAAC/L,KAAK;QADN;UAAE6L,QAAQ;UAAEU,QAAQ;UAAEC,OAAO;UAAEC,IAAI;UAAEmB;QAAsB,CAAC,GAAAD,YAAA;QAARlK,MAAM,GAAAoE,wBAAA,CAAA8F,YAAA,EAAAE,UAAA;MAEhE,IAAID,UAAU,EAAE;QACd,IAAI,OAAOA,UAAU,IAAI,QAAQ,EAAE;UACjC,IAAI;YACF,MAAME,WAAW,GAAG;cAClBvG,MAAM,EAAE+F,SAAS;cACjBzK,OAAO,EAAE,IAAI,CAAC7C,KAAK,CAAC6C,OAAO;cAC3B6B,KAAK,EAAE,IAAI,CAAC1E,KAAK,CAAC0E;YACpB,CAAC;YACD,MAAM+C,KAAK,GAAAlC,aAAA,KAAQ,IAAI,CAACvF,KAAK,CAAC+N,KAAK,CAAE;YACrC,IAAIC,IAAI,GAAG,IAAIC,QAAQ,CAAC,mBAAmB,EAAEL,UAAU,CAAC;YACxD,MAAMpI,IAAI,GAAGwI,IAAI,CAACF,WAAW,EAAErG,KAAK,CAAC;YACrCjC,IAAI,IAAIiI,UAAU,CAACS,IAAI,CAACnC,IAAI,CAAC;UAC/B,CAAC,CAAC,OAAOoC,CAAC,EAAE;YACV,IAAI5G,MAAM,GAAG+F,SAAS;YACtB,IAAIc,IAAI,CAACR,UAAU,CAAC,EAAE;cACpBH,UAAU,CAACS,IAAI,CAACnC,IAAI,CAAC;YACvB;UACF;QACF,CAAC,MAAM,IAAI,OAAO6B,UAAU,IAAI,UAAU,EAAE;UAC1C,MAAMpI,IAAI,GAAGoI,UAAU,CAACN,SAAS,CAAC;UAClC9H,IAAI,IAAIiI,UAAU,CAACS,IAAI,CAACnC,IAAI,CAAC;QAC/B;MACF,CAAC,MAAM;QACL0B,UAAU,CAACS,IAAI,CAACnC,IAAI,CAAC;MACvB;IACF,CAAC,CAAC;IACF,IAAIsC,MAAM,GAAGd,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEe,YAAY,GAClCf,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEe,YAAY,GACzBd,gBAAgB,aAAhBA,gBAAgB,eAAhBA,gBAAgB,CAAEc,YAAY,GAC9Bd,gBAAgB,aAAhBA,gBAAgB,uBAAhBA,gBAAgB,CAAEc,YAAY,GAC9B,CAAC;IACL,IAAIlC,IAAI,GAAG,KAAK;IAChB,IAAIiC,MAAM,IAAI,KAAK,EAAE;MACnBjC,IAAI,GAAG,KAAK;IACd,CAAC,MAAM;MACLA,IAAI,GAAGqB,UAAU,CAAC1M,MAAM,GAAGsN,MAAM;IACnC;IAEA,MAAMhH,OAAO,GAAGoG,UAAU,CAAC3B,GAAG,CAAC,CAACC,IAAS,EAAEC,KAAU,KAAK;MACxD,MAAAuC,YAAA,GACExC,IAAI,CAAC/L,KAAK;QADN;UAAE6L,QAAQ;UAAEU,QAAQ;UAAEC,OAAO;UAAEoB,UAAU;UAAEnB,IAAI;UAAEjH;QAAgB,CAAC,GAAA+I,YAAA;QAAR9K,MAAM,GAAAoE,wBAAA,CAAA0G,YAAA,EAAAC,UAAA;MAEtE,IAAIxC,KAAK,GAAGyC,MAAM,CAACJ,MAAM,CAAC,GAAG,CAAC,EAAE;QAC9B,oBACEpQ,KAAA,CAAA0O,aAAA,CAACtO,MAAM,EAAAwO,QAAA;UACLD,SAAS,EAAElO,GAAG,CACZS,OAAO,CAACU,MAAM,EAAE,qBAAqB,CAAC,EACtCV,OAAO,CAACU,MAAM,EAAE,2BAA2B,CAC7C,CAAE;UACFgB,GAAG,EAAEmL,KAAM;UACXQ,OAAO,EAAEA,CAAA,KAAM;YACb,IAAI1I,IAAI,GAAAyB,aAAA,KAAQ,IAAI,CAAChF,KAAK,CAACyB,QAAQ,CAAE;YACrC8B,IAAI,CAACwJ,SAAS,CAACxI,EAAE,CAAC,GAAG,KAAK;YAC1B,IAAI,CAACtD,QAAQ,CAAC;cACZQ,QAAQ,EAAE8B;YACZ,CAAC,CAAC;YACF0I,OAAO,IAAIA,OAAO,CAACc,SAAS,CAAC;UAC/B;QAAE,GACE7J,MAAM;UACV/B,IAAI,EAAE;QAAO,IAEZgM,QAAQ,KAAK,KAAK,iBACjBzP,KAAA,CAAA0O,aAAA;UAAMC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,mBAAmB;QAAE,GACnD4M,IACG,CACP,eACDxO,KAAA,CAAA0O,aAAA;UAAMC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,mBAAmB;QAAE,GACnDgM,QACG,CACA,CAAC;MAEb;IACF,CAAC,CAAC;IACF,OAAO4B,UAAU,CAAC3B,GAAG,CAAC,CAACC,IAAS,EAAEC,KAAU,KAAK;MAC/C,MAAA0C,YAAA,GACE3C,IAAI,CAAC/L,KAAK;QADN;UAAE6L,QAAQ;UAAEU,QAAQ;UAAEC,OAAO;UAAEoB,UAAU;UAAEnB;QAAgB,CAAC,GAAAiC,YAAA;QAARjL,MAAM,GAAAoE,wBAAA,CAAA6G,YAAA,EAAAC,UAAA;MAEhE,IAAIvC,IAAI,EAAE;QACR,IAAIJ,KAAK,GAAGqC,MAAM,EAAE;UAClB,oBACEpQ,KAAA,CAAA0O,aAAA,CAACtO,MAAM,EAAAwO,QAAA;YACLD,SAAS,EAAElO,GAAG,CAACS,OAAO,CAACU,MAAM,EAAE,qBAAqB,CAAC,EAAE;cACrD,CAACV,OAAO,CAACU,MAAM,EAAE,2BAA2B,CAAC,GAAGmM,KAAK,KAAK;YAC5D,CAAC,CAAE;YACHnL,GAAG,EAAEmL,KAAM;YACXQ,OAAO,EAAEA,CAAA,KAAM;cACbA,OAAO,IAAIA,OAAO,CAACc,SAAS,CAAC;YAC/B,CAAE;YACFb,IAAI,EAAEA;UAAK,GACPhJ,MAAM;YACV/B,IAAI,EAAE;UAAO,IAEZgM,QAAQ,KAAK,KAAK,iBACjBzP,KAAA,CAAA0O,aAAA;YAAMC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,mBAAmB;UAAE,GACnD4M,IACG,CACP,eACDxO,KAAA,CAAA0O,aAAA;YAAMC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,mBAAmB;UAAE,GACnDgM,QACG,CACA,CAAC;QAEb,CAAC,MAAM,IAAIG,KAAK,IAAIqC,MAAM,EAAE;UAC1B,oBACEpQ,KAAA,CAAA0O,aAAA,CAACpO,OAAO;YACN0O,SAAS,EAAC,QAAQ;YAClB7H,KAAK,EAAE,IAAK;YACZiC,OAAO,EAAEA,OAAQ;YACjBuH,OAAO,EAAE,CAAC,OAAO,CAAE;YACnB/N,GAAG,EAAEmL,KAAM;YACXkB,IAAI,EAAE,IAAI,CAAC3M,KAAK,CAACyB,QAAQ,CAACnB,GAAG,CAAC,IAAI,KAAM;YACxCsM,YAAY,EAAGD,IAAI,IAAK;cACtB,IAAIA,IAAI,EAAE;gBACR,IAAIpJ,IAAI,GAAAyB,aAAA,KAAQ,IAAI,CAAChF,KAAK,CAACyB,QAAQ,CAAE;gBACrC8B,IAAI,CAACjD,GAAG,CAAC,GAAG,IAAI;gBAChB,IAAI,CAACW,QAAQ,CAAC;kBACZQ,QAAQ,EAAE8B;gBACZ,CAAC,CAAC;cACJ,CAAC,MAAM;gBACL,IAAI,CAACtC,QAAQ,CAAC;kBACZQ,QAAQ,EAAE,CAAC;gBACb,CAAC,CAAC;cACJ;YACF;YACA;UAAA,gBAEA/D,KAAA,CAAA0O,aAAA;YAAGC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,qBAAqB;UAAE,gBACnD5B,KAAA,CAAA0O,aAAA,CAAC3N,gBAAgB,MAAE,CAClB,CACI,CAAC;QAEd,CAAC,MAAM;UACL,OAAO,IAAI;QACb;MACF,CAAC,MAAM;QACL,oBACEf,KAAA,CAAA0O,aAAA,CAACtO,MAAM,EAAAwO,QAAA;UACLD,SAAS,EAAElO,GAAG,CAACS,OAAO,CAACU,MAAM,EAAE,qBAAqB,CAAC,EAAE;YACrD,CAACV,OAAO,CAACU,MAAM,EAAE,2BAA2B,CAAC,GAAGmM,KAAK,KAAK;UAC5D,CAAC,CAAE;UACHnL,GAAG,EAAEmL,KAAM;UACXQ,OAAO,EAAEA,CAAA,KAAM;YACbA,OAAO,IAAIA,OAAO,CAACc,SAAS,CAAC;UAC/B;QAAE,GACE7J,MAAM;UACV/B,IAAI,EAAC;QAAM,IAEVgM,QAAQ,KAAK,KAAK,iBACjBzP,KAAA,CAAA0O,aAAA;UAAMC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,mBAAmB;QAAE,GACnD4M,IACG,CACP,eACDxO,KAAA,CAAA0O,aAAA;UAAMC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,mBAAmB;QAAE,GACnDgM,QACG,CACA,CAAC;MAEb;IACF,CAAC,CAAC;IACF;EACF;EACA;EACAgD,UAAUA,CAACC,YAAiB,EAAEC,GAAQ,EAAE;IAAA,IAAAC,gBAAA,EAAAC,sBAAA,EAAAC,sBAAA;IACtC,IAAIC,OAAO,GAAG,EAAE;IAChB,MAAM;MACJC,SAAS,GAAG,KAAK;MACjBC,WAAW,GAAG,EAAE;MAChBC,YAAY,GAAG;IACjB,CAAC,GAAG,IAAI,CAACtP,KAAK,CAACuP,SAAS;IACxB,MAAM;MAAE1N;IAAgB,CAAC,GAAG,IAAI,CAACtB,KAAK;IACtC,MAAM;MAAEI,QAAQ;MAAE6O;IAAc,CAAC,GAAGT,GAAG;IAEvC,IAAIpO,QAAQ,EAAE;MACZwO,OAAO,GAAGK,aAAa,CAAC,CAAC,CAAC,CAACC,OAAO,CAACC,SAAS,CAACN,SAAS,CAAC;MACvD,IAAIE,YAAY,EAAE;QAChB,IAAI,CAAC9N,QAAQ,CAAC;UACZK,eAAe,EAAEiN,YAAY,CAAC,CAAC,CAAC;UAChC/M,eAAe,EAAE;YAAE,CAACsN,WAAW,GAAGF;UAAQ;QAC5C,CAAC,CAAC;MACJ,CAAC,MAAM;QACL,IAAIK,aAAa,CAAC,CAAC,CAAC,CAACG,MAAM,IAAI,CAACH,aAAa,CAAC,CAAC,CAAC,CAAC3D,QAAQ,EAAE;UACzD,IAAIiD,YAAY,CAAC,CAAC,CAAC,KAAKjN,eAAe,EAAE;YACvC,IAAI,CAACL,QAAQ,CAAC;cACZK,eAAe,EAAEiN,YAAY,CAAC,CAAC,CAAC;cAChC/M,eAAe,EAAE;gBAAE,CAACsN,WAAW,GAAGF;cAAQ;YAC5C,CAAC,CAAC;UACJ;QACF;MACF;IACF,CAAC,MAAM;MACL,IAAI,CAAC3N,QAAQ,CAAC;QACZK,eAAe,EAAEsN,OAAO;QACxBpN,eAAe,EAAE,CAAC;MACpB,CAAC,CAAC;IACJ;IACA,IAAI,IAAI,CAAC/B,KAAK,CAAC4P,YAAY,EAAE;MAC3B,IAAI,CAAC5P,KAAK,CAAC4P,YAAY,CAACd,YAAY,EAAEC,GAAG,CAAC;MAC1C;IACF;IACA,MAAMvD,SAAS,GAAG,EAAAwD,gBAAA,OAAI,CAACpL,SAAS,cAAAoL,gBAAA,gBAAAA,gBAAA,GAAdA,gBAAA,CAAgB/N,OAAO,cAAA+N,gBAAA,uBAAvBA,gBAAA,CAAyBtG,eAAe,CAAC,CAAC,KAAI,CAAC,CAAC;IAClE2G,WAAW,IAAI,IAAI,CAACxG,SAAS,CAAAtD,aAAA,CAAAA,aAAA,KAAMiG,SAAS;MAAE,CAAC6D,WAAW,GAAGF;IAAO,EAAE,CAAC;IACvE,EAAAF,sBAAA,OAAI,CAACjP,KAAK,CAAC2I,WAAW,cAAAsG,sBAAA,uBAAtBA,sBAAA,CAAwBY,kBAAkB,KACxC3Q,cAAc,EAAAgQ,sBAAA,GACZ,IAAI,CAAClP,KAAK,CAAC2I,WAAW,cAAAuG,sBAAA,uBAAtBA,sBAAA,CAAwBW,kBAAkB,EAC1C;MAAEhN,OAAO,EAAE,IAAI,CAAC7C,KAAK,CAAC6C,OAAO;MAAEiM,YAAY,EAAEA,YAAY;MAAEC,GAAG,EAAEA;IAAI,CAAC,EACrE,IAAI,CAAC/O,KAAK,CAACyH,KACb,CAAC;IACH;IACA;IACA;IACA;EACF;EACAqI,WAAWA,CAAA,EAAG;IAAA,IAAAC,sBAAA;IACZ,CAAAA,sBAAA,OAAI,CAACnM,SAAS,CAAC3C,OAAO,cAAA8O,sBAAA,eAAtBA,sBAAA,CAAwBC,WAAW,CAAC,CAAC;EACvC;EACAC,OAAOA,CAACjQ,KAAK,EAAEkQ,IAAI,EAAE;IAAA,IAAAC,WAAA;IACnB,IAAIC,OAAO,GAAGF,IAAI;IAClB,IAAIlQ,KAAK,aAALA,KAAK,eAALA,KAAK,CAAE8D,IAAI,IAAI,CAAA9D,KAAK,aAALA,KAAK,gBAAAmQ,WAAA,GAALnQ,KAAK,CAAE8D,IAAI,cAAAqM,WAAA,uBAAXA,WAAA,CAAapP,MAAM,IAAG,CAAC,EAAE;MAC1C,IAAI+C,IAAI,GAAG9D,KAAK,CAAC8D,IAAI;MACrB,KAAK,IAAIuM,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAGvM,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE/C,MAAM,GAAEsP,CAAC,EAAE,EAAE;QACrC,IAAIvM,IAAI,CAACuM,CAAC,CAAC,CAAC7P,KAAK,IAAI0P,IAAI,EAAE;UACzBE,OAAO,GAAGtM,IAAI,CAACuM,CAAC,CAAC,CAACrM,KAAK;QACzB;MACF;IACF;IACA,OAAOoM,OAAO;EAChB;EACAE,YAAYA,CAACxM,IAAI,EAAE;IAAA,IAAAyM,uBAAA;IACjB,CAAAA,uBAAA,OAAI,CAACxJ,QAAQ,CAAC9F,OAAO,cAAAsP,uBAAA,gBAAAA,uBAAA,GAArBA,uBAAA,CAAuBhH,KAAK,cAAAgH,uBAAA,eAA5BA,uBAAA,CAA8BC,OAAO,CAAC1M,IAAI,CAAC;EAC7C;EACA2M,WAAWA,CAAC3M,IAAI,EAAE;IAAA,IAAA4M,sBAAA;IAChB,CAAAA,sBAAA,OAAI,CAAC5F,OAAO,CAAC7J,OAAO,cAAAyP,sBAAA,gBAAAA,sBAAA,GAApBA,sBAAA,CAAsBnH,KAAK,cAAAmH,sBAAA,eAA3BA,sBAAA,CAA6BF,OAAO,CAAC1M,IAAI,CAAC;EAC5C;EAYA2F,kBAAkBA,CAAA,EAAG;IACnB,MAAM;MAAE9C,aAAa,GAAG,CAAC;IAAE,CAAC,GAAG,IAAI,CAAC3G,KAAK;IACzC,IAAIoC,WAAgB,GAAGuE,aAAa,CAACvE,WAAW;IAChD,OAAOxC,kBAAkB,CAACwC,WAAW,EAAE,IAAI,CAACpC,KAAK,CAACyH,KAAK,IAAI,CAAC,CAAC,EAAE;MAC7D/C,KAAK,EAAE,IAAI,CAAC1E,KAAK,CAAC0E,KAAK;MACvB7B,OAAO,EAAE,IAAI,CAAC7C,KAAK,CAAC6C;IACtB,CAAC,CAAC;EACJ;EAwBA;EACA8N,eAAeA,CAACxC,CAAmB,EAAE;IACnCA,CAAC,CAACyC,cAAc,CAAC,CAAC;;IAElB;IACA,MAAMC,IAAI,GAAGC,QAAQ,CAACnE,aAAa,CAAC,KAAK,CAAC;IAC1CkE,IAAI,CAAC/D,KAAK,CAACiE,OAAO,4LASjB;IACDF,IAAI,CAAC/L,EAAE,GAAG,WAAW;IACrBgM,QAAQ,CAACE,IAAI,CAACC,WAAW,CAACJ,IAAI,CAAC;IAE/B,MAAMK,eAAe,GAAI/C,CAAa,IAAK;MACzC,MAAMgD,QAAQ,GAAGhD,CAAC,CAACiD,OAAO;MAC1B;MACA,IAAID,QAAQ,IAAI,EAAE,IAAIA,QAAQ,IAAI,GAAG,EAAE;QACrC,IAAI,CAAC3P,QAAQ,CAAC;UAAEc,SAAS,EAAE6O;QAAS,CAAC,CAAC;MACxC;IACF,CAAC;IAED,MAAME,kBAAkB,GAAG1R,QAAQ,CAACuR,eAAe,EAAE,EAAE,CAAC;IAExD,MAAMI,aAAa,GAAGA,CAAA,KAAM;MAC1BR,QAAQ,CAACvN,mBAAmB,CAAC,WAAW,EAAE8N,kBAAkB,CAAC;MAC7DP,QAAQ,CAACvN,mBAAmB,CAAC,SAAS,EAAE+N,aAAa,CAAC;MACtD;MACA,MAAMT,IAAI,GAAGC,QAAQ,CAACS,cAAc,CAAC,WAAW,CAAC;MACjD,IAAIV,IAAI,EAAE;QACRC,QAAQ,CAACE,IAAI,CAACQ,WAAW,CAACX,IAAI,CAAC;MACjC;IACF,CAAC;IAEDC,QAAQ,CAAC9N,gBAAgB,CAAC,WAAW,EAAEqO,kBAAkB,CAAC;IAC1DP,QAAQ,CAAC9N,gBAAgB,CAAC,SAAS,EAAEsO,aAAa,CAAC;EACrD;EAEAG,MAAMA,CAAA,EAAG;IAAA,IAAAC,MAAA;MAAAC,mBAAA;MAAAC,oBAAA;MAAAC,sBAAA;MAAAC,qBAAA;IACP,MAAM;MACJC,OAAO,GAAG,EAAE;MACZ1F,UAAU,GAAG,IAAI;MACjBR,QAAQ;MACRmG,SAAS,GAAG,EAAE;MACd1I,UAAU,GAAG,CAAC,CAAC;MACfiG,SAAS,GAAG,CAAC,CAAC;MACdhL,aAAa,GAAG,CAAC,CAAC;MAClBhC,QAAQ,GAAG,KAAK;MAChB0P,YAAY,GAAG,CAAC,CAAC;MACjBC,cAAc,GAAG,IAAI;MACrBC,OAAO,GAAG,EAAE;MACZC,UAAU,GAAG,IAAI;MACjBC,UAAU;MACVC,eAAe,GAAG,IAAI;MACtB1F,SAAS;MACT2F,kBAAkB,GAAG,QAAQ;MAC7BhF,WAAW;MACXhH,cAAc,GAAG,SAAS;MAC1BG,WAAW,GAAG,CAAC,CAAC;MAChB8L,UAAU,GAAG;QAAEC,GAAG,EAAE;MAAM,CAAC;MAC3B9L,aAAa,GAAG,CAAC,CAAC;MAClBC,WAAW,GAAG,CAAC;IACjB,CAAC,GAAG,IAAI,CAAC5G,KAAK;IACd,MAAM;QACJuJ,KAAK,EAAEC,UAAU,GAAG,CAAC,CAAC;QACtBkJ,YAAY,GAAG,IAAI;QACnBC,YAAY,GAAG,IAAI;QACnBC,gBAAgB,GAAG,IAAI;QACvBC,WAAW,GAAG,IAAI;QAClBC,UAAU,GAAG,CAAC,CAAC;QACfxD,YAAY,GAAG,IAAI;QACnBlK,KAAK,EAAE2N;MAET,CAAC,GAAGzJ,UAAU;MADT0J,gBAAgB,GAAAnL,wBAAA,CACjByB,UAAU,EAAA2J,UAAA;IACd,IAAIC,aAAa,GAAA3N,aAAA,KAAQiE,UAAU,CAAE;IACrC,IAAI7C,aAAa,CAACvE,WAAW,EAAE;MAAA,IAAA+Q,qBAAA;MAC7B,IAAI/Q,WAAgB,GAAG,IAAI,CAACqH,kBAAkB,CAAC,CAAC;MAChD,IAAI3F,IAAI,GAAG,CAAA1B,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAE0B,IAAI,MAAI1B,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEqB,MAAM,KAAI,CAAC,CAAC;MACzDyP,aAAa,CAACrM,aAAa,GAAG;QAC5BpD,MAAM,EAAA8B,aAAA,CAAAA,aAAA,KAAOzB,IAAI,IAAAqP,qBAAA,GAAKD,aAAa,CAACrM,aAAa,cAAAsM,qBAAA,uBAA3BA,qBAAA,CAA6B1P,MAAM;MAC3D,CAAC;IACH;IACA,MAAM;QACJ8F,KAAK,EAAE6J,SAAS,GAAG,CAAC,CAAC;QACrB/G,UAAU,EAAEgH,UAAU,GAAG,IAAI;QAC7BC,UAAU,GAAG,OAAO;QACpBlO,KAAK,EAAEmO;MAET,CAAC,GAAGhE,SAAS;MADRiE,eAAe,GAAA3L,wBAAA,CAChB0H,SAAS,EAAAkE,UAAA;IACb,IAAI3M,KAAK,GAAG,IAAI;IAChB,IAAI4M,WAAW,GAAAnO,aAAA;MACbmN,YAAY;MACZnJ,KAAK,EAAAhE,aAAA;QACHoO,SAAS,EAAE;UACT5J,IAAI,EAAGjG,IAAI,IAAK;YAAA,IAAA8P,sBAAA,EAAAC,sBAAA;YACd,EAAAD,sBAAA,GAAA9M,KAAK,CAAC9G,KAAK,CAAC2I,WAAW,cAAAiL,sBAAA,uBAAvBA,sBAAA,CAAyBE,iBAAiB,OAAAD,sBAAA,GACxC/M,KAAK,CAAC9G,KAAK,CAAC2I,WAAW,cAAAkL,sBAAA,uBAAvBA,sBAAA,CAAyBC,iBAAiB,CAAChQ,IAAI,CAAC;UACpD;QACF;MAAC,GACEoP,aAAa;IACjB,GACEF,gBAAgB,CACb;IACR,MAAMe,YAAiB,GAAG,CAAC,CAAC;IAC5B,MAAM1G,aAAkB,GAAG,EAAE;IAC7B,MAAM;MAAEnL;IAAc,CAAC,GAAG,IAAI,CAAC3B,KAAK;IACpC,IAAI4B,iBAAiB,GAAG,EAAE;IAC1B,IAAIqQ,UAAU,CAACC,GAAG,IAAID,UAAU,CAACwB,QAAQ,EAAE;MACzC7R,iBAAiB,GACf7C,mBAAmB,CAACkT,UAAU,CAACwB,QAAQ,CAAC,CAACC,UAAU,IAAI,EAAE;IAC7D;IACA,MAAMlF,GAAG,GAAGvP,cAAc,CAACuS,OAAO,EAAE,CAAC,CAAC,CAAC;IACvC,IAAImC,WAAkB,GAAGzU,aAAa,CAACsS,OAAO,EAAE,IAAI,CAAC/R,KAAK,CAAC;IAC3D,MAAMmU,WAAW,GAAGpF,GAAG,CAACoF,WAAW,IAAI,EAAE;IACzC,MAAMC,WAAW,GAAGrF,GAAG,CAACqF,WAAW,IAAI,EAAE;IACzC,MAAMC,WAAgB,GAAG,EAAE;IAC3B,MAAMC,UAAe,GAAG,EAAE;IAC1B,MAAM;MAAE9G;IAAiB,CAAC,GAAGnO,MAAM,CAAC,CAAC;IACrC,IAAIqO,QAAQ,GAAG,IAAI;IACnB,IAAI,CAAAH,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEG,QAAQ,MAAK,KAAK,EAAEA,QAAQ,GAAG,KAAK,CAAC,KACjD,IAAIF,gBAAgB,CAACE,QAAQ,KAAK,KAAK,EAAEA,QAAQ,GAAG,KAAK;IAC9D,MAAM6G,SAAS,GAAG;MAChBC,MAAM,EAAE;QAAEpU,IAAI,EAAE,IAAI;QAAEiI,IAAI,EAAE,QAAQ;QAAEoE,IAAI,eAAExO,KAAA,CAAA0O,aAAA,CAAC9N,YAAY,MAAE;MAAE,CAAC;MAC9D4V,MAAM,EAAE;QAAErU,IAAI,EAAE,IAAI;QAAEiI,IAAI,EAAE,QAAQ;QAAEoE,IAAI,eAAExO,KAAA,CAAA0O,aAAA,CAAC1N,cAAc,MAAE;MAAE,CAAC;MAChEyV,MAAM,EAAE;QAAEtU,IAAI,EAAE,IAAI;QAAEiI,IAAI,EAAE,QAAQ;QAAEoE,IAAI,eAAExO,KAAA,CAAA0O,aAAA,CAAC/N,WAAW,MAAE;MAAE;IAC9D,CAAC;IACD,MAAM+V,YAAY,GAAG,SAAAA,CAACtM,IAAI,EAAyC;MAAA,IAAAuM,eAAA;MAAA,IAAvCpP,IAAI,GAAAvB,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,EAAE;MAAA,IAAE4Q,YAAY,GAAA5Q,SAAA,CAAAlD,MAAA,QAAAkD,SAAA,QAAAC,SAAA,GAAAD,SAAA,MAAG,CAAC,CAAC;MAAA,IAAE7D,IAAI,GAAA6D,SAAA,CAAAlD,MAAA,OAAAkD,SAAA,MAAAC,SAAA;MAC5D,IAAIlE,KAAK,GAAAuF,aAAA;QACPkH,IAAI,EAAEiB,QAAQ,GAAG6G,SAAS,CAAClM,IAAI,CAAC,CAACoE,IAAI,GAAG,IAAI;QAC5C/K,IAAI,EAAE;MAAM,GACTmT,YAAY,CACT;MAER,IAAIrP,IAAI,EAAE;QACRxF,KAAK,GAAAuF,aAAA,CAAAA,aAAA,KAAQvF,KAAK;UAAE4N,UAAU,EAAEpI;QAAI,EAAE;MACxC;MACA,oBACEvH,KAAA,CAAA0O,aAAA,CAACtO,MAAM,EAAAwO,QAAA;QACLL,OAAO,EAAGjF,MAAW,IAAK;UACxB,IAAIc,IAAI,IAAI,QAAQ,EAAE;YACpBqJ,MAAI,CAACtL,QAAQ,CAACmB,MAAM,CAAC;UACvB,CAAC,MAAM;YACL,IAAIc,IAAI,IAAI,QAAQ,IAAI3B,WAAW,CAACoO,QAAQ,EAAE;cAC5C5V,cAAc,CACZwH,WAAW,CAACoO,QAAQ,EACpB;gBACEjS,OAAO,EAAE6O,MAAI,CAAC1R,KAAK,CAAC6C,OAAO;gBAC3B0E,MAAM,EAAEA,MAAM,CAACmI,SAAS,IAAInI,MAAM;gBAClC7C,KAAK,EAAEgN,MAAI,CAAC1R,KAAK,CAAC0E;cACpB,CAAC,EACDgN,MAAI,CAAC1R,KAAK,CAACyH,KACb,CAAC;cACD;YACF,CAAC,MAAM,IAAIY,IAAI,IAAI,QAAQ,IAAI3B,WAAW,CAAChG,QAAQ,EAAE;cACnDxB,cAAc,CACZwH,WAAW,CAAChG,QAAQ,EACpB;gBACEmC,OAAO,EAAE6O,MAAI,CAAC1R,KAAK,CAAC6C,OAAO;gBAC3B0E,MAAM,EAAEA,MAAM,CAACmI,SAAS,IAAInI,MAAM;gBAClC7C,KAAK,EAAEgN,MAAI,CAAC1R,KAAK,CAAC0E;cACpB,CAAC,EACDgN,MAAI,CAAC1R,KAAK,CAACyH,KACb,CAAC;cACD;YACF;YACA,IAAI4K,UAAU,EAAE;cACdA,UAAU,CAAC9K,MAAM,CAACmI,SAAS,IAAInI,MAAM,EAAEc,IAAI,CAAC;cAC5C;YACF;YAEAqJ,MAAI,CAACtN,QAAQ,CAACmD,MAAM,CAACmI,SAAS,IAAInI,MAAM,EAAEc,IAAI,EAAE,MAAM;cAAA,IAAA0M,qBAAA,EAAAC,sBAAA;cACpD,IAAItR,QAAQ,GACV2E,IAAI,IAAI,QAAQ,IAAA0M,qBAAA,GACZrD,MAAI,CAAC1R,KAAK,CAAC2I,WAAW,cAAAoM,qBAAA,uBAAtBA,qBAAA,CAAwBE,gBAAgB,IAAAD,sBAAA,GACxCtD,MAAI,CAAC1R,KAAK,CAAC2I,WAAW,cAAAqM,sBAAA,uBAAtBA,sBAAA,CAAwBE,gBAAgB;cAC9CxR,QAAQ,IACNxE,cAAc,CACZwE,QAAQ,EACR;gBACEb,OAAO,EAAE6O,MAAI,CAAC1R,KAAK,CAAC6C,OAAO;gBAC3B0E,MAAM,EAAEA,MAAM,CAACmI,SAAS,IAAInI,MAAM;gBAClC7C,KAAK,EAAEgN,MAAI,CAAC1R,KAAK,CAAC0E;cACpB,CAAC,EACDgN,MAAI,CAAC1R,KAAK,CAACyH,KACb,CAAC;YACL,CAAC,CAAC;UACJ;QACF;MAAE,GACEzH,KAAK,GAERI,IAAI,MAAAwU,eAAA,GAAIL,SAAS,CAAClM,IAAI,CAAC,cAAAuM,eAAA,uBAAfA,eAAA,CAAiBxU,IAAI,CACxB,CAAC;IAEb,CAAC;IACD,MAAM+U,aAAa,GAAI9M,IAAI,IAAK;MAC9B,IAAI,CAACmK,UAAU,CAACC,GAAG,EAAE;QACnB,OAAO,IAAI;MACb,CAAC,MAAM;QACL,OAAOtQ,iBAAiB,CAACiT,OAAO,CAAC/M,IAAI,CAAC,GAAG,CAAC,CAAC;MAC7C;IACF,CAAC;IACD8J,OAAO,CAACrG,GAAG,CAAEC,IAAS,IAAK;MACzB,IACE,IAAI,CAACxL,KAAK,CAACiC,cAAc,CAAC4S,OAAO,CAACrJ,IAAI,CAAC,GAAG,CAAC,CAAC,IAC5C,IAAI,CAACxL,KAAK,CAACiC,cAAc,CAAC4S,OAAO,CAACrJ,IAAI,CAAC1D,IAAI,CAAC,GAAG,CAAC,CAAC,EACjD;QACA,IAAI,CAAC0D,IAAI,IAAI,KAAK,IAAIA,IAAI,CAAC1D,IAAI,IAAI,KAAK,KAAK8M,aAAa,CAAC,KAAK,CAAC,EAAE;UACjEd,WAAW,CAACnG,IAAI,eACdjQ,KAAA,CAAA0O,aAAA,CAACtO,MAAM,EAAAwO,QAAA;YACLnL,IAAI,EAAE,SAAU;YAChB8K,OAAO,EAAEA,CAAA,KAAM;cACb,MAAM;gBAAE6F,UAAU;gBAAE3L,WAAW,GAAG,CAAC;cAAE,CAAC,GAAG,IAAI,CAAC1G,KAAK;cACnD,IAAI0G,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAE2O,KAAK,EAAE;gBACtBnW,cAAc,CACZwH,WAAW,CAAC2O,KAAK,EACjB;kBACExS,OAAO,EAAE,IAAI,CAAC7C,KAAK,CAAC6C,OAAO;kBAC3B6B,KAAK,EAAE,IAAI,CAAC1E,KAAK,CAAC0E;gBACpB,CAAC,EACD,IAAI,CAAC1E,KAAK,CAACyH,KACb,CAAC;gBACD;cACF;cACA,IAAI4K,UAAU,EAAE;gBACdA,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC;gBACvB;cACF;cACA,IAAI,CAACjO,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM;gBAAA,IAAAkR,sBAAA,EAAAC,sBAAA;gBAC9B,EAAAD,sBAAA,OAAI,CAACtV,KAAK,CAAC2I,WAAW,cAAA2M,sBAAA,uBAAtBA,sBAAA,CAAwBE,aAAa,KACnCtW,cAAc,EAAAqW,sBAAA,GACZ,IAAI,CAACvV,KAAK,CAAC2I,WAAW,cAAA4M,sBAAA,uBAAtBA,sBAAA,CAAwBC,aAAa,EACrC;kBACE3S,OAAO,EAAE,IAAI,CAAC7C,KAAK,CAAC6C,OAAO;kBAC3B6B,KAAK,EAAE,IAAI,CAAC1E,KAAK,CAAC0E;gBACpB,CAAC,EACD,IAAI,CAAC1E,KAAK,CAACyH,KACb,CAAC;cACL,CAAC,CAAC;YACJ,CAAE;YACFgF,IAAI,eAAExO,KAAA,CAAA0O,aAAA,CAAC5N,YAAY,MAAE;UAAE,GACnBgN,IAAI,CAAC/L,KAAK,GAEb+L,IAAI,CAAC3L,IAAI,IAAI,IACR,CACV,CAAC;QACH,CAAC,MAAM,IACL,CAAC2L,IAAI,IAAI,cAAc,IAAIA,IAAI,CAAC1D,IAAI,IAAI,cAAc,KACtD8M,aAAa,CAAC,cAAc,CAAC,EAC7B;UACAd,WAAW,CAACnG,IAAI,eACdjQ,KAAA,CAAA0O,aAAA,CAACtO,MAAM,EAAAwO,QAAA;YACLnL,IAAI,EAAE,SAAU;YAChB8K,OAAO,EAAE,IAAI,CAACpG,QAAQ,CAACqP,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS,CAAE;YACnDhJ,IAAI,eAAExO,KAAA,CAAA0O,aAAA,CAAC1N,cAAc,MAAE,CAAE;YACzByW,MAAM;UAAA,GACF3J,IAAI,CAAC/L,KAAK,GAEb+L,IAAI,CAAC3L,IAAI,IAAI,MACR,CACV,CAAC;QACH,CAAC,MAAM;UACL,IAAI+U,aAAa,CAACpJ,IAAI,CAAC1D,IAAI,GAAG0D,IAAI,CAAC1D,IAAI,GAAG0D,IAAI,CAAC,EAAE;YAC/CsB,aAAa,CAACa,IAAI,CAChByG,YAAY,CACV5I,IAAI,CAAC1D,IAAI,GAAG0D,IAAI,CAAC1D,IAAI,GAAG0D,IAAI,EAC5BA,IAAI,CAAC6B,UAAU,EACf7B,IAAI,CAAC/L,KAAK,IAAI,CAAC,CAAC,EAChB+L,IAAI,CAAC3L,IACP,CACF,CAAC;UACH;QACF;MACF;IACF,CAAC,CAAC;IACF,IAAIuV,KAAK,CAACC,OAAO,CAAC/J,QAAQ,CAAC,EAAE;MAC3BA,QAAQ,CAACC,GAAG,CAAEC,IAAS,IAAK;QAC1B,IAAI4J,KAAK,CAACC,OAAO,CAAC7J,IAAI,CAAC,EAAE;UACvBA,IAAI,CAACD,GAAG,CAAE+J,KAAK,IAAK;YAAA,IAAAC,YAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAC,aAAA,EAAAC,aAAA;YAClB,IACE,CAAAP,KAAK,aAALA,KAAK,gBAAAC,YAAA,GAALD,KAAK,CAAE7V,KAAK,cAAA8V,YAAA,uBAAZA,YAAA,CAAcvJ,QAAQ,KAAI,YAAY,IACtC4I,aAAa,CAACU,KAAK,aAALA,KAAK,gBAAAE,aAAA,GAALF,KAAK,CAAE7V,KAAK,cAAA+V,aAAA,uBAAZA,aAAA,CAAc1N,IAAI,CAAC,EACjC;cACAgM,WAAW,CAACnG,IAAI,CAAC2H,KAAK,CAAC;YACzB,CAAC,MAAM,IACL,CAAAA,KAAK,aAALA,KAAK,gBAAAG,aAAA,GAALH,KAAK,CAAE7V,KAAK,cAAAgW,aAAA,uBAAZA,aAAA,CAAczJ,QAAQ,KAAI,YAAY,IACtC4I,aAAa,CAACU,KAAK,aAALA,KAAK,gBAAAI,aAAA,GAALJ,KAAK,CAAE7V,KAAK,cAAAiW,aAAA,uBAAZA,aAAA,CAAc5N,IAAI,CAAC,EACjC;cACAiM,UAAU,CAACpG,IAAI,CAAC2H,KAAK,CAAC;YACxB,CAAC,MAAM,IACL,CAAC,CAAAA,KAAK,aAALA,KAAK,gBAAAK,aAAA,GAALL,KAAK,CAAE7V,KAAK,cAAAkW,aAAA,uBAAZA,aAAA,CAAc3J,QAAQ,KAAI,cAAc,IACvC,CAAAsJ,KAAK,aAALA,KAAK,gBAAAM,aAAA,GAALN,KAAK,CAAE7V,KAAK,cAAAmW,aAAA,uBAAZA,aAAA,CAAc5J,QAAQ,KAAI,cAAc,KAC1C4I,aAAa,CAACU,KAAK,aAALA,KAAK,gBAAAO,aAAA,GAALP,KAAK,CAAE7V,KAAK,cAAAoW,aAAA,uBAAZA,aAAA,CAAc/N,IAAI,CAAC,EACjC;cACAgF,aAAa,CAACa,IAAI,CAAC2H,KAAK,CAAC;YAC3B;UACF,CAAC,CAAC;QACJ,CAAC,MAAM;UAAA,IAAAQ,YAAA,EAAAC,YAAA,EAAAC,YAAA,EAAAC,YAAA,EAAAC,YAAA;UACL,IACE,CAAA1K,IAAI,aAAJA,IAAI,gBAAAsK,YAAA,GAAJtK,IAAI,CAAE/L,KAAK,cAAAqW,YAAA,uBAAXA,YAAA,CAAa9J,QAAQ,KAAI,YAAY,IACrC4I,aAAa,CAACpJ,IAAI,aAAJA,IAAI,gBAAAuK,YAAA,GAAJvK,IAAI,CAAE/L,KAAK,cAAAsW,YAAA,uBAAXA,YAAA,CAAajO,IAAI,CAAC,EAChC;YACAgM,WAAW,CAACnG,IAAI,CAACnC,IAAI,CAAC;UACxB,CAAC,MAAM,IACL,CAAC,CAAAA,IAAI,aAAJA,IAAI,gBAAAwK,YAAA,GAAJxK,IAAI,CAAE/L,KAAK,cAAAuW,YAAA,uBAAXA,YAAA,CAAahK,QAAQ,KAAI,cAAc,IACtC,CAAAR,IAAI,aAAJA,IAAI,gBAAAyK,YAAA,GAAJzK,IAAI,CAAE/L,KAAK,cAAAwW,YAAA,uBAAXA,YAAA,CAAajK,QAAQ,KAAI,cAAc,KACzC4I,aAAa,CAACpJ,IAAI,aAAJA,IAAI,gBAAA0K,YAAA,GAAJ1K,IAAI,CAAE/L,KAAK,cAAAyW,YAAA,uBAAXA,YAAA,CAAapO,IAAI,CAAC,EAChC;YACAgF,aAAa,CAACa,IAAI,CAACnC,IAAI,CAAC;UAC1B;QACF;MACF,CAAC,CAAC;IACJ,CAAC,MAAM,IAAIF,QAAQ,EAAE;MACnB,MAAM;QAAE7L;MAAW,CAAC,GAAG6L,QAAQ;MAC/B,IAAI,CAAA7L,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEuM,QAAQ,KAAI,YAAY,IAAI4I,aAAa,CAACnV,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEqI,IAAI,CAAC,EAAE;QACjEgM,WAAW,CAACnG,IAAI,CAACrC,QAAQ,CAAC;MAC5B,CAAC,MAAM,IACL,CAAC,CAAA7L,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEuM,QAAQ,KAAI,cAAc,IAChC,CAAAvM,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEuM,QAAQ,KAAI,cAAc,KACnC4I,aAAa,CAACnV,KAAK,aAALA,KAAK,uBAALA,KAAK,CAAEqI,IAAI,CAAC,EAC1B;QACAgF,aAAa,CAACa,IAAI,CAACrC,QAAQ,CAAC;MAC9B;IACF;IACA8G,YAAY,IACVtF,aAAa,CAACtM,MAAM,GAAG,CAAC,IACxBmT,WAAW,CAAChG,IAAI,CAAC;MACf9I,KAAK,EAAE,IAAI;MACXsR,SAAS,EAAE,QAAQ;MACnBC,KAAK,EAAEpJ,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEqJ,SAAS,GACzBrJ,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEqJ,SAAS,GACtBpJ,gBAAgB,CAACoJ,SAAS,GAC1BpJ,gBAAgB,CAACoJ,SAAS,GAC1B,MAAM;MACVC,KAAK,EAAEtJ,WAAW,aAAXA,WAAW,eAAXA,WAAW,CAAEsJ,KAAK,GACrBtJ,WAAW,aAAXA,WAAW,uBAAXA,WAAW,CAAEsJ,KAAK,GAClBrJ,gBAAgB,CAACqJ,KAAK,GACtBrJ,gBAAgB,CAACqJ,KAAK,GACtB,GAAG;MACPC,KAAK,EAAE,OAAO;MACdrF,MAAM,EAAEA,CAACvB,IAAS,EAAE3I,MAAW,KAAK;QAClC,oBACEtJ,KAAA,CAAA0O,aAAA;UAAKC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,qBAAqB;QAAE,GACpD,IAAI,CAACuN,kBAAkB,CAACC,aAAa,EAAE9F,MAAM,CAC3C,CAAC;MAEV;IACF,CAAC,CAAC;IAEJ,IAAIsL,WAAW,EAAE;MACf,MAAMkE,SAAS,GAAGrX,mBAAmB,CAAC,CAAC,GAAGwU,WAAW,CAAC,CAAC;MACvD,IAAI8C,YAAY,GAAG;QACjB5R,KAAK,EAAE,IAAI;QACXyR,KAAK,EAAE,EAAE;QACTF,KAAK,EAAE,QAAQ;QACflF,MAAM,EAAEA,CAACvB,IAAI,EAAE+G,OAAO,EAAEjL,KAAK,KAAK;UAChC,oBAAO/N,KAAA,CAAA0O,aAAA,CAAA1O,KAAA,CAAAiZ,QAAA,QAAGlL,KAAK,GAAG,CAAI,CAAC;QACzB;MACF,CAAQ;MACR,IAAI+K,SAAS,EAAE;QACbC,YAAY,CAACF,KAAK,GAAG,MAAM;MAC7B;MACA5C,WAAW,GAAG,CAAC8C,YAAY,EAAE,GAAG9C,WAAW,CAAC;IAC9C;IACA,IAAIiD,UAAU,GAAG9K,UAAU,IAAI8H,WAAW,CAACpT,MAAM,GAAG,CAAC;IACrD,IAAI;MAAEqW;IAAU,CAAC,GAAG/X,MAAM,CAAC,CAAC;IAC5B,IAAIgY,QAAQ,GACVnF,cAAc,IACdmC,WAAW,CAACtT,MAAM,GAAG,CAAC,IACtBwR,kBAAkB,IAAI,QAAQ;IAChC,IAAIpG,WAAW,GAAG,EAChB7C,UAAU,CAACgO,OAAO,IAAI,KAAK,IAC3B,EAAA3F,mBAAA,GAAArI,UAAU,CAACgO,OAAO,cAAA3F,mBAAA,uBAAlBA,mBAAA,CAAoBnM,IAAI,KAAI,KAAK,IACjC,EAAAoM,oBAAA,GAAAtI,UAAU,CAACgO,OAAO,cAAA1F,oBAAA,gBAAAA,oBAAA,GAAlBA,oBAAA,CAAoB2F,KAAK,cAAA3F,oBAAA,uBAAzBA,oBAAA,CAA2B7Q,MAAM,KAAI,CAAC,IACtC,CAAAqW,SAAS,aAATA,SAAS,uBAATA,SAAS,CAAE5R,IAAI,KAAI,KAAK,CACzB;IACD,IAAIpE,YAAY,GAAGiL,UAAU,IAAI8H,WAAW,CAACpT,MAAM,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;IACnE,IAAIyW,UAAU,GAAGzE,UAAU,IAAIsE,QAAQ,GAAG,EAAE,GAAG,CAAC;IAChD,IAAII,aAAa,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC5B,MAAM;MAAEL,SAAS,EAAEM;IAAgB,CAAC,GAAGrY,MAAM,CAAC,CAAC;IAC/C,IAAIsY,aAAkB,GAAG,KAAK;IAC9B,IAAID,eAAe,CAAClS,IAAI,KAAK,IAAI,EAAE;MACjCmS,aAAa,GAAG,IAAI;IACtB;IACA,IAAI,IAAI,CAAC3X,KAAK,CAACsX,OAAO,IAAI,IAAI,CAACtX,KAAK,CAACsX,OAAO,CAAC9R,IAAI,KAAK,IAAI,EAAE;MAC1DmS,aAAa,GAAG,IAAI;IACtB;IACA,IAAIC,kBAAkB,GACpB1V,aAAa,GACbsV,UAAU,GACVC,aAAa,GACbrW,YAAY,IACXuW,aAAa,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,IAAIE,gBAAgB,GAAGvO,UAAU,CAACwO,UAAU,KAAK,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;;IAEtE,IAAIC,WAAW,GACbH,kBAAkB,GAAGC,gBAAgB,IAAIF,aAAa,GAAG,EAAE,GAAG,CAAC,CAAC;IAClE,IAAIK,gBAAgB,GAClBD,WAAW,IACV,IAAI,CAACxX,KAAK,CAACgB,iBAAiB,IAAI,EAAE,CAAC,IACnCoW,aAAa,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1B,MAAMM,MAAM,GAAGvE,WAAW,CAACuE,MAAM;IACjCvE,WAAW,GAAAnO,aAAA,CAAAA,aAAA,KACNmO,WAAW;MACduE,MAAM,EAAA1S,aAAA;QAAI2S,CAAC,EAAE,aAAa;QAAEC,CAAC,EAAEH;MAAgB,GAAKC,MAAM;IAAE,EAC7D;IACD;IACA,oBACEha,KAAA,CAAA0O,aAAA;MACEC,SAAS,EAAElO,GAAG,CAACS,OAAO,CAACU,MAAM,EAAE,cAAc,CAAC,EAAE+M,SAAS,CAAE;MAC3DwL,GAAG,EAAE,IAAI,CAACvV;IAAQ,GAEjB,IAAI,CAAC7C,KAAK,CAACqY,SAAS,iBACnBpa,KAAA,CAAA0O,aAAA;MAAKC,SAAS,EAAElO,GAAG,CAACS,OAAO,CAACU,MAAM,EAAE,oBAAoB,CAAC;IAAE,GACxD,IAAI,CAACG,KAAK,CAACqY,SACT,CACN,eACDpa,KAAA,CAAA0O,aAAA;MACEC,SAAS,EAAElO,GAAG,CAACS,OAAO,CAACU,MAAM,EAAE,mBAAmB,CAAC,CAAE;MACrDiN,KAAK,EAAE;QAAEwL,OAAO,EAAE;MAAO;IAAE,GAE1B/V,QAAQ,iBACPtE,KAAA,CAAA0O,aAAA;MACEC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,mBAAmB,CAAE;MAChDiN,KAAK,EAAE;QAAE+J,KAAK,EAAE,IAAI,CAACtW,KAAK,CAAC+B;MAAU;IAAE,GAEtCiR,SAAS,iBACRtV,KAAA,CAAA0O,aAAA;MAAKC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,YAAY;IAAE,GAAE0T,SAAe,CAChE,eACDtV,KAAA,CAAA0O,aAAA;MACEC,SAAS,EAAElO,GAAG,CAACS,OAAO,CAACU,MAAM,EAAE,cAAc,CAAC,EAAE;QAC9C,CAACV,OAAO,CAACU,MAAM,EAAE,sBAAsB,CAAC,GAAG,CAAC0T;MAC9C,CAAC;IAAE,gBAEHtV,KAAA,CAAA0O,aAAA;MACEC,SAAS,EAAC,WAAW;MACrB2L,WAAW,EAAE,IAAI,CAAC5H,eAAe,CAAC8E,IAAI,CAAC,IAAI;IAAE,CACzC,CAAC,eACPxX,KAAA,CAAA0O,aAAA,CAACvO,IAAI,EAAAyO,QAAA;MACHtD,KAAK,EAAAhE,aAAA,KAAO6N,SAAS,CAAG;MACxB1F,QAAQ,EAAE,KAAM;MAChB8K,SAAS,EAAE,KAAM;MACjBC,UAAU,EAAEpF,UAAW;MACvBqF,QAAQ,EAAE,IAAI,CAAC7J,UAAU,CAAC4G,IAAI,CAAC,IAAI,CAAE;MACrC3G,YAAY,EAAE,CAAC,IAAI,CAACvO,KAAK,CAACsB,eAAe,CAAE;MAC3CyR,UAAU,EAAEA,UAAW;MACvB8E,GAAG,EAAE,IAAI,CAACtN;IAAQ,GACd0I,eAAe,CACpB,CACE,CACF,CACN,eACDvV,KAAA,CAAA0O,aAAA;MACEC,SAAS,EAAElO,GAAG,CAACS,OAAO,CAACU,MAAM,EAAE,oBAAoB,CAAC,EAAE;QACpD,CAACV,OAAO,CAACU,MAAM,EAAE,4BAA4B,CAAC,GAAG,CAAC0C;MACpD,CAAC,CAAE;MACHuK,KAAK,EAAE;QACL+J,KAAK,iBAAAjS,MAAA,CAAiB,IAAI,CAACrE,KAAK,CAAC+B,SAAS,WAAAsC,MAAA,CACxCrC,QAAQ,GAAG,EAAE,GAAG,CAAC;MAErB;IAAE,GAED8J,UAAU,IAAI8H,WAAW,CAACpT,MAAM,GAAG,CAAC,iBACnC9C,KAAA,CAAA0O,aAAA;MAAKC,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,2BAA2B;IAAE,gBAC3D5B,KAAA,CAAA0O,aAAA,CAACpN,YAAY;MACX4U,WAAW,EAAEA,WAAY;MACzB5B,kBAAkB,EAAEA,kBAAmB;MACvC7R,QAAQ,EAAE,IAAI,CAACA,QAAQ,CAAC+U,IAAI,CAAC,IAAI,CAAE;MACnCkD,OAAO,EAAEA,CAAA,KAAM;QAAA,IAAAC,sBAAA;QACb,IAAI,IAAI,CAAC5Y,KAAK,CAAC2Y,OAAO,EAAE;UACtB,IAAI,CAAC3Y,KAAK,CAAC2Y,OAAO,CAAC,CAAC;UACpB;QACF;QACA,CAAAC,sBAAA,OAAI,CAAChV,SAAS,CAAC3C,OAAO,cAAA2X,sBAAA,eAAtBA,sBAAA,CAAwB5I,WAAW,CAAC,CAAC;QACrC,IAAI,CAACnH,SAAS,CAAC,CAAC,CAAC,CAAC;MACpB,CAAE;MACFuP,GAAG,EAAE,IAAI,CAACxU,SAAU;MACpBiV,eAAe,EAAE,IAAI,CAAC7Y,KAAK,CAAC6Y;IAAgB,CAC7C,CACE,CACN,eACD5a,KAAA,CAAA0O,aAAA;MACEC,SAAS,EAAElO,GAAG,CAACS,OAAO,CAACU,MAAM,EAAE,sBAAsB,CAAC,EAAE;QACtD,CAACV,OAAO,CAACU,MAAM,EAAE,0BAA0B,CAAC,GAAG,CAACsX;MAClD,CAAC,CAAE;MACHiB,GAAG,EAAE,IAAI,CAACU;IAAe,GAExB,CAAC/F,UAAU,IAAIsE,QAAQ,kBACtBpZ,KAAA,CAAA0O,aAAA;MACEC,SAAS,EAAElO,GAAG,CAACS,OAAO,CAACU,MAAM,EAAE,0BAA0B,CAAC,EAAE;QAC1D,CAACV,OAAO,CAACU,MAAM,EAAE,0BAA0B,CAAC,GAAG,CAACsM;MAClD,CAAC;IAAE,gBAEHlO,KAAA,CAAA0O,aAAA,cAAMoG,UAAgB,CAAC,EACtBsE,QAAQ,IAAI,IAAI,CAACpL,iBAAiB,CAACoI,WAAW,EAAElI,WAAW,CACzD,CACN,eAEDlO,KAAA,CAAA0O,aAAA;MACEC,SAAS,EAAElO,GAAG,CACZS,OAAO,CAACU,MAAM,EAAE,oBAAoB,CAAC,EACrC;QACE,CAACV,OAAO,CAACU,MAAM,EAAE,wBAAwB,CAAC,GAAG,CAACsM;MAChD,CAAC,EACD;QACE,CAAChN,OAAO,CAACU,MAAM,EAAE,yBAAyB,CAAC,GACzCsM,WAAW,IAAI,CAACkL;MACpB,CACF,CAAE;MACFe,GAAG,EAAE,IAAI,CAACpX,eAAgB;MAC1B8L,KAAK,EAAE;QAAExL,MAAM,EAAEsW;MAAmB;IAAE,gBAEtC3Z,KAAA,CAAA0O,aAAA,CAACxO,KAAK,EAAA0O,QAAA;MACJuL,GAAG,EAAE,IAAI,CAACrR,QAAS;MACnBgL,OAAO,EAAEmC,WAAY;MACrBpB,UAAU,EAAAvN,aAAA;QACRwT,UAAU,EAAEC,IAAA,IAAoC;UAAA,IAAAC,kBAAA,EAAAC,mBAAA;UAAA,IAAnC;YAAEC,QAAQ;YAAEC,QAAQ;YAAE7R;UAAO,CAAC,GAAAyR,IAAA;UACzC,oBACE/a,KAAA,CAAA0O,aAAA,CAAA1O,KAAA,CAAAiZ,QAAA,QACGiC,QAAQ,IACT5R,MAAM,CAACqE,UAAU,IACjB,EAAAqN,kBAAA,GAAA1R,MAAM,CAACqE,UAAU,cAAAqN,kBAAA,uBAAjBA,kBAAA,CAAmBlY,MAAM,IAAG,CAAC,gBAC3B9C,KAAA,CAAA0O,aAAA,CAAChO,YAAY;YACX6N,OAAO,EAAG2B,CAAC,IAAKiL,QAAQ,CAAC7R,MAAM,EAAE4G,CAAC,CAAE;YACpCvB,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,aAAa;UAAE,CAC3C,CAAC,GACA0H,MAAM,CAACqE,UAAU,IACnB,EAAAsN,mBAAA,GAAA3R,MAAM,CAACqE,UAAU,cAAAsN,mBAAA,uBAAjBA,mBAAA,CAAmBnY,MAAM,IAAG,CAAC,gBAC7B9C,KAAA,CAAA0O,aAAA,CAAC7N,aAAa;YACZ0N,OAAO,EAAG2B,CAAC,IAAKiL,QAAQ,CAAC7R,MAAM,EAAE4G,CAAC,CAAE;YACpCvB,SAAS,EAAEzN,OAAO,CAACU,MAAM,EAAE,aAAa;UAAE,CAC3C,CAAC,GACA,IACJ,CAAC;QAEP;MAAC,GACEiT,UAAU,CACb;MACFD,WAAW,EAAE,IAAK;MAClBwG,QAAQ,EAAGvB,UAAU,IAAK;QACxB,MAAM;UAAEpN;QAAY,CAAC,GAAG,IAAI,CAACnK,KAAK;QAClC,IAAImK,WAAW,KAAKoN,UAAU,CAAC7W,OAAO,EAAE;UACtC,IAAI,CAACO,QAAQ,CAAC;YACZkJ,WAAW,EAAEoN,UAAU,CAAC7W;UAC1B,CAAC,CAAC;QACJ;MACF,CAAE;MACFqW,OAAO,EAAA/R,aAAA;QACL+T,WAAW,EAAE;UACXC,SAAS,EAAEA,CAAA,KAAM;YACf,MAAM9V,MAAM,GAAG,IAAI,CAACiF,eAAe,CAAC,CAAC;YACrC,IAAI,CAACG,SAAS,CAACpF,MAAM,CAAC;UACxB;QACF;MAAC,GACE6F,UAAU,CAACgO,OAAO,CACrB;MACF1E,gBAAgB,EAAEA,gBAAiB;MACnC9F,KAAK,EAAE;QAAExL,MAAM,EAAEyW;MAAY;IAAE,GAC3BrE,WAAW,CAEhB,CAEE,CACF,CACF,CAAC,EACLtB,UAAU,IAAI,EAAAP,sBAAA,OAAI,CAAC7R,KAAK,CAACuE,aAAa,cAAAsN,sBAAA,uBAAxBA,sBAAA,CAA0BrN,QAAQ,MAAK,MAAM,iBAC1DvG,KAAA,CAAA0O,aAAA,CAAClO,UAAU,EAAAoO,QAAA;MACTuL,GAAG,EAAE,IAAI,CAACjU,SAAU;MACpBT,QAAQ,EAAEA,CAAA,KAAM;QAAA,IAAA8V,uBAAA,EAAAC,uBAAA;QACd,EAAAD,uBAAA,OAAI,CAACxZ,KAAK,CAAC2I,WAAW,cAAA6Q,uBAAA,uBAAtBA,uBAAA,CAAwBE,gBAAgB,KACtCxa,cAAc,EAAAua,uBAAA,GACZ,IAAI,CAACzZ,KAAK,CAAC2I,WAAW,cAAA8Q,uBAAA,uBAAtBA,uBAAA,CAAwBC,gBAAgB,EACxC;UAAE7W,OAAO,EAAE,IAAI,CAAC7C,KAAK,CAAC6C;QAAQ,CAAC,EAC/B,IAAI,CAAC7C,KAAK,CAACyH,KACb,CAAC;QACH,IAAI,CAAC0C,WAAW,CAAC,CAAC;MACpB,CAAE;MACFwP,KAAK,EAAEvF,WAAY;MACnBpC,SAAS,EAAEA,SAAU;MACrBC,YAAY,EAAEA,YAAa;MAC3B2H,QAAQ,EAAE,IAAI,CAAC5Z,KAAK,CAAC4Z,QAAQ,MAAA9H,qBAAA,GAAI,IAAI,CAAC9R,KAAK,CAAC0G,WAAW,cAAAoL,qBAAA,uBAAtBA,qBAAA,CAAwB8H,QAAQ,CAAC;MAClEC,UAAU,EAAE,IAAI,CAAC7Z,KAAK,CAAC6Z,UAAW;MAClCC,YAAY,EAAE,IAAI,CAAC9Z,KAAK,CAAC8Z,YAAa;MACtCtV,QAAQ,EAAE,IAAI,CAACxE,KAAK,CAACwE,QAAQ,IAAI,MAAO;MACxCuV,WAAW,EAAEzH,eAAgB;MAC7B7K,KAAK,EAAE,IAAI,CAACzH,KAAK,CAACyH,KAAM;MACxBuS,aAAa,EAAE;QACbC,MAAM,EAAErT,WAAW,CAACqT,MAAM;QAC1BC,SAAS,EAAEtT,WAAW,CAACsT,SAAS;QAChCC,SAAS,EAAExT,aAAa,CAACwT,SAAS;QAClCC,YAAY,EAAEzT,aAAa,CAACyT;MAC9B,CAAE;MACF1V,KAAK,EAAE,IAAI,CAAC1E,KAAK,CAAC0E,KAAM;MACxB7B,OAAO,EAAE,IAAI,CAAC7C,KAAK,CAAC6C;IAAQ,GACxB0B,aAAa,GAEhB+P,UACS,CAEX,CACF,CAAC;EAEV;AACF;AAACrU,eAAA,CAl0CKH,QAAQ,oBASYN,cAAc;AA0zCxC,eAAeM,QAAQ"}
|