nsc-react-component 2.14.29 → 2.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -106,7 +106,6 @@ class NscChart extends PureComponent {
106
106
  if (JSON.stringify(prevProps.data) !== JSON.stringify(this.props.data)) {
107
107
  this.init();
108
108
  } else if (JSON.stringify(prevProps.option) !== JSON.stringify(this.props.option)) {
109
- console.log("aaa");
110
109
  this.init();
111
110
  }
112
111
  }
@@ -244,4 +243,4 @@ class NscChart extends PureComponent {
244
243
  }
245
244
  }
246
245
  export default NscChart;
247
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJlY2hhcnRzIiwiU3RvcmUiLCJ1dGlscyIsInB4MnZ3IiwiaXNBcnJheSIsImlzT2JqZWN0IiwiTnNjQ2hhcnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiZGF0YVNvdXJjZSIsImRhdGEiLCJzdG9yZSIsImNoaWxkcmVuIiwib3B0aW9uIiwib3B0aW9ucyIsImF1dG9Mb2FkIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsInN0b3JlcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIkVycm9yIiwiX3RoaXMiLCJzdG9yZVByb3BzIiwiX29iamVjdFNwcmVhZCIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwic2V0U3RhdGUiLCJpc0ZpcnN0IiwiaW5pdCIsImRhdGFDaGFuZ2VkIiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJjb25zb2xlIiwibG9nIiwicmVTZXRDaGFydCIsImlzU3RyaW5nIiwidiIsImNvbXBvbmVudFdpbGxVbm1vdW50Iiwid2luZG93IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsImhhbmRsZUNoYXJ0UmVzaXplIiwiYmluZCIsImlzUmVwbGFjZSIsInRlc3QiLCJyZXBsYWNlIiwic3Vic3RyaW5nIiwibGVuZ3RoIiwiZGF0YUNvbnZlcnNpb24iLCJkYXRhcyIsImRhdGFNYXAiLCJyZXN1bHQiLCJtYXAiLCJpdGVtIiwidmFsdWUiLCJ0ZW1wT2JqIiwia2V5IiwicHVzaCIsIm9iamVjdENvbnZlcnNpb24iLCJvYmoiLCJfbXlDaGFydCRnZXRaciIsIl9teUNoYXJ0JGdldFpyMiIsIk9uQ2xpY2siLCJPblpyQ2xpY2siLCJzdGF0ZSIsIm5ld0RhdGFzIiwibmV3T3B0aW9uIiwieEF4aXMiLCJ5QXhpcyIsInNlcmllcyIsIm15Q2hhcnQiLCJjaGFydFJlZiIsImN1cnJlbnQiLCJjbGVhciIsIm9mZiIsImdldFpyIiwic2V0T3B0aW9uIiwib24iLCJwYXJhbXMiLCJyZXNpemUiLCJhZGRFdmVudExpc3RlbmVyIiwicmVuZGVyIiwid2lkdGgiLCJoZWlnaHQiLCJib3hTdHlsZSIsImNyZWF0ZUVsZW1lbnQiLCJzdHlsZSIsInJlZiIsImlkIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9jaGFydC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0ICogYXMgZWNoYXJ0cyBmcm9tIFwiZWNoYXJ0c1wiO1xyXG5pbXBvcnQgeyBFQ2hhcnRzIH0gZnJvbSBcImVjaGFydHMvbGliL2VjaGFydHNcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFN0b3JlUHJvcHMgfSBmcm9tIFwiQGJqLW5zYy9tc25cIjtcclxuaW1wb3J0IHsgdXRpbHMgfSBmcm9tIFwiQGJqLW5zYy9tc24vbGliL3V0aWxzXCI7XHJcbmltcG9ydCB7IHB4MnZ3IH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCB7IGlzQXJyYXksIGlzT2JqZWN0IH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmludGVyZmFjZSBDaGFydFByb3BzIHtcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgb3B0aW9uOiBhbnk7XHJcbiAgZGF0YT86IEFycmF5PE9iamVjdD4gfCBPYmplY3Q7XHJcbiAgd2lkdGg6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajlrr3luqZcclxuICBoZWlnaHQ6IG51bWJlciB8IHN0cmluZzsgLy/lm77ooajplb/luqZcclxuICBhdXRvTG9hZD86IGJvb2xlYW47IC8v5pWw5o2u5pS55Y+Y77yM6Ieq5Yqo5Yi35paw5Zu+6KGoLOm7mOiupHRydWVcclxuICBPbkNsaWNrPzogKHBhcmFtczogYW55LCBlPzogYW55KSA9PiB2b2lkOyAvL+WbvuihqOeCueWHu+S6i+S7tlxyXG4gIE9uWnJDbGljaz86IChwYXJhbXM6IGFueSwgZT86IGFueSkgPT4gdm9pZDsgLy/lm77ooajngrnlh7vkuovku7ZcclxuICBbcHJvTmFtZXM6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuLy9kYXRh56S65L6LXHJcbi8qKlxyXG4g5pWw57uE77yaXHJcbiBkYXRhPVt7bmFtZTonMeaciCcsdmFsdWU6MjB9LHtuYW1lOicy5pyIJyx2YWx1ZToxMH0se25hbWU6JzPmnIgnLHZhbHVlOjI1fV1cclxuIOWvueixoVxyXG4gZGF0YT17bmFtZTpbJzHmnIgnLCcy5pyIJywnM+aciCddLHZhbHVlOlsyMCwzMCw0MF19XHJcbiAqL1xyXG5jbGFzcyBOc2NDaGFydCBleHRlbmRzIFB1cmVDb21wb25lbnQ8Q2hhcnRQcm9wcz4ge1xyXG4gIGNoYXJ0UmVmID0gUmVhY3QuY3JlYXRlUmVmPEhUTUxEaXZFbGVtZW50PigpO1xyXG4gIG15Q2hhcnQ6IEVDaGFydHMgfCBudWxsID0gbnVsbDtcclxuICBzdG9yZSA9IHt9IGFzIFN0b3JlUHJvcHM7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBkYXRhU291cmNlOiBudWxsLFxyXG4gIH07XHJcbiAgaXNGaXJzdCA9IHRydWU7XHJcbiAgY29uc3RydWN0b3IocHJvcHMpIHtcclxuICAgIHN1cGVyKHByb3BzKTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGF0YSxcclxuICAgICAgc3RvcmUgPSB7fSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIG9wdGlvbjogb3B0aW9ucyxcclxuICAgICAgYXV0b0xvYWQgPSB0cnVlLFxyXG4gICAgfSA9IHByb3BzO1xyXG4gICAgY29uc3QgeyB1cmwsIGxpc3RlbmVyczogbGlzdGVuZXJzUG9wcyA9IHt9LCAuLi5zdG9yZXMgfSA9IHN0b3JlO1xyXG4gICAgaWYgKCFjaGlsZHJlbikge1xyXG4gICAgICBpZiAoIShkYXRhIHx8IHVybCB8fCBvcHRpb25zKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOOAgWRhdGHjgIFvcHRpb27kuI3og73pg73kuLrnqbrvvIFcIik7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IF90aGlzID0gdGhpcztcclxuICAgICAgbGV0IHN0b3JlUHJvcHMgPSB7XHJcbiAgICAgICAgbW9kZWw6IFwibW9kZWxcIixcclxuICAgICAgICBjb21wb25lbnQ6IHRoaXMsXHJcbiAgICAgICAgbGlzdGVuZXJzOiB7XHJcbiAgICAgICAgICBvbkJlZm9yZUxvYWQ6IGZ1bmN0aW9uIChzdG9yZSwgb3B0aW9ucykge1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLm9uQmVmb3JlTG9hZCwgX3RoaXMsIFtzdG9yZSwgb3B0aW9uc10pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGxvYWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoX3RoaXMuaXNGaXJzdCAmJiBhdXRvTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaW5pdCgpO1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaXNGaXJzdCA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMubG9hZCwgX3RoaXMsIFtkYXRhLCBtb2RlbERhdGEsIHN0b3JlXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZGF0YUNoYW5nZWQ6IGZ1bmN0aW9uIChkYXRhLCBtb2RlbERhdGEsIHN0b3JlKSB7XHJcbiAgICAgICAgICAgIF90aGlzLnNldFN0YXRlKHsgZGF0YVNvdXJjZTogbW9kZWxEYXRhIH0sICgpID0+IHtcclxuICAgICAgICAgICAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgICAgICAgICAgIF90aGlzLmluaXQoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB1dGlscy5jYWxsYmFjayhsaXN0ZW5lcnNQb3BzLmRhdGFDaGFuZ2VkLCBfdGhpcywgW1xyXG4gICAgICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICAgICAgbW9kZWxEYXRhLFxyXG4gICAgICAgICAgICAgIHN0b3JlLFxyXG4gICAgICAgICAgICBdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAuLi5zdG9yZXMsXHJcbiAgICAgIH07XHJcbiAgICAgIGlmICh1cmwgJiYgZGF0YSA9PSBudWxsKSB7XHJcbiAgICAgICAgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLntcclxuICAgICAgICAgICAgYXV0b0xvYWQ6IHRydWUsXHJcbiAgICAgICAgICAgIHVybDogdXJsLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnN0b3JlUHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnN0b3JlID0gbmV3IFN0b3JlKHN0b3JlUHJvcHMpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGRhdGEsIGF1dG9Mb2FkID0gdHJ1ZSwgc3RvcmUsIG9wdGlvbiB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChkYXRhICYmIGF1dG9Mb2FkKSB7XHJcbiAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgfSBlbHNlIGlmICghZGF0YSAmJiAhc3RvcmU/LnVybCAmJiBvcHRpb24pIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRVcGRhdGUoXHJcbiAgICBwcmV2UHJvcHM6IFJlYWRvbmx5PENoYXJ0UHJvcHM+LFxyXG4gICAgcHJldlN0YXRlOiBSZWFkb25seTx7fT4sXHJcbiAgICBzbmFwc2hvdD86IGFueVxyXG4gICk6IHZvaWQge1xyXG4gICAgY29uc3QgeyBhdXRvTG9hZCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoYXV0b0xvYWQpIHtcclxuICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5kYXRhKSAhPT0gSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5kYXRhKSkge1xyXG4gICAgICAgIHRoaXMuaW5pdCgpO1xyXG4gICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgIEpTT04uc3RyaW5naWZ5KHByZXZQcm9wcy5vcHRpb24pICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLm9wdGlvbilcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coXCJhYWFcIik7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlU2V0Q2hhcnQoKSB7XHJcbiAgICB0aGlzLmluaXQoKTtcclxuICB9XHJcbiAgaXNTdHJpbmcodikge1xyXG4gICAgcmV0dXJuIHR5cGVvZiB2ID09PSBcInN0cmluZ1wiO1xyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlQ2hhcnRSZXNpemUuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBpc1JlcGxhY2Uodikge1xyXG4gICAgcmV0dXJuIC9eey4qfSQvZ2kudGVzdCh2KTtcclxuICB9XHJcbiAgcmVwbGFjZSh2KSB7XHJcbiAgICByZXR1cm4gdi5zdWJzdHJpbmcoMSwgdi5sZW5ndGggLSAxKTtcclxuICB9XHJcblxyXG4gIGRhdGFDb252ZXJzaW9uKGRhdGEsIGRhdGFzLCBkYXRhTWFwKSB7XHJcbiAgICBsZXQgcmVzdWx0O1xyXG4gICAgaWYgKGRhdGEpIHtcclxuICAgICAgaWYgKHRoaXMuaXNTdHJpbmcoZGF0YSkgJiYgdGhpcy5pc1JlcGxhY2UoZGF0YSkpIHtcclxuICAgICAgICByZXN1bHQgPSBkYXRhTWFwW3RoaXMucmVwbGFjZShkYXRhKV07XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNBcnJheShkYXRhKSkge1xyXG4gICAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdiA9IGl0ZW0/LnZhbHVlO1xyXG4gICAgICAgICAgaWYgKHYgJiYgdGhpcy5pc1JlcGxhY2UodikpIHtcclxuICAgICAgICAgICAgaXRlbS52YWx1ZSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odiwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIHJlc3VsdCA9IGRhdGE7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3QoZGF0YSkpIHtcclxuICAgICAgICByZXN1bHQgPSBbXTtcclxuICAgICAgICBpZiAoaXNBcnJheShkYXRhcykpIHtcclxuICAgICAgICAgIGRhdGFzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgdGVtcE9iaiA9IHt9O1xyXG4gICAgICAgICAgICBmb3IgKGxldCBrZXkgaW4gaXRlbSkge1xyXG4gICAgICAgICAgICAgIGxldCB2ID0gaXRlbVtrZXldO1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLmlzUmVwbGFjZSh2KSkge1xyXG4gICAgICAgICAgICAgICAgdGVtcE9ialtrZXldID0gaXRlbVt0aGlzLnJlcGxhY2UodildO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wT2JqW2tleV0gPSB2O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXN1bHQucHVzaCh0ZW1wT2JqKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxuICB9XHJcbiAgb2JqZWN0Q29udmVyc2lvbihvYmosIGRhdGFzLCBkYXRhTWFwKSB7XHJcbiAgICBsZXQgdGVtcE9iajogYW55O1xyXG4gICAgaWYgKG9iaikge1xyXG4gICAgICBpZiAoaXNBcnJheShvYmopKSB7XHJcbiAgICAgICAgdGVtcE9iaiA9IFsuLi5vYmpdO1xyXG4gICAgICAgIHRlbXBPYmoubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICBpZiAoaXRlbT8uZGF0YSkge1xyXG4gICAgICAgICAgICBpdGVtLmRhdGEgPSB0aGlzLmRhdGFDb252ZXJzaW9uKGl0ZW0uZGF0YSwgZGF0YXMsIGRhdGFNYXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKHRoaXMuaXNTdHJpbmcob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSBvYmo7XHJcbiAgICAgICAgdGVtcE9iai5kYXRhID0gdGhpcy5kYXRhQ29udmVyc2lvbih0ZW1wT2JqLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoaXNPYmplY3Qob2JqKSkge1xyXG4gICAgICAgIHRlbXBPYmogPSB7IC4uLm9iaiB9O1xyXG4gICAgICAgIHRlbXBPYmouZGF0YSA9IHRoaXMuZGF0YUNvbnZlcnNpb24odGVtcE9iai5kYXRhLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0ZW1wT2JqO1xyXG4gIH1cclxuICBpbml0KCkge1xyXG4gICAgY29uc3QgeyBvcHRpb24sIGRhdGEsIE9uQ2xpY2ssIE9uWnJDbGljayB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgZGF0YVNvdXJjZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBkYXRhTWFwOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IG5ld0RhdGFzID0gZGF0YSB8fCBkYXRhU291cmNlO1xyXG4gICAgbGV0IG5ld09wdGlvbjogYW55ID0geyAuLi5vcHRpb24gfTtcclxuICAgIGlmIChpc0FycmF5KG5ld0RhdGFzKSkge1xyXG4gICAgICBuZXdEYXRhcy5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBmb3IgKGxldCBrZXkgaW4gaXRlbSkge1xyXG4gICAgICAgICAgaWYgKGRhdGFNYXBba2V5XSA9PSBudWxsKSB7XHJcbiAgICAgICAgICAgIGRhdGFNYXBba2V5XSA9IFtdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGF0YU1hcFtrZXldLnB1c2goaXRlbVtrZXldKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChpc09iamVjdChuZXdEYXRhcykpIHtcclxuICAgICAgZGF0YU1hcCA9IG5ld0RhdGFzO1xyXG4gICAgfVxyXG4gICAgbmV3T3B0aW9uLnhBeGlzID0gdGhpcy5vYmplY3RDb252ZXJzaW9uKG5ld09wdGlvbi54QXhpcywgbmV3RGF0YXMsIGRhdGFNYXApO1xyXG4gICAgbmV3T3B0aW9uLnlBeGlzID0gdGhpcy5vYmplY3RDb252ZXJzaW9uKG5ld09wdGlvbi55QXhpcywgbmV3RGF0YXMsIGRhdGFNYXApO1xyXG4gICAgbmV3T3B0aW9uLnNlcmllcyA9IHRoaXMub2JqZWN0Q29udmVyc2lvbihcclxuICAgICAgbmV3T3B0aW9uLnNlcmllcyxcclxuICAgICAgbmV3RGF0YXMsXHJcbiAgICAgIGRhdGFNYXBcclxuICAgICk7XHJcbiAgICBjb25zdCBteUNoYXJ0ID0gKHRoaXMubXlDaGFydCA9IGVjaGFydHMuaW5pdChcclxuICAgICAgdGhpcy5jaGFydFJlZi5jdXJyZW50IGFzIEhUTUxEaXZFbGVtZW50XHJcbiAgICApKTsgLy/liJ3lp4vljJZlY2hhcnRz77yM6YCa6L+HcmVm5bGe5oCn6I635Y+WZG9tXHJcbiAgICBteUNoYXJ0LmNsZWFyKCk7XHJcbiAgICBteUNoYXJ0Lm9mZihcImNsaWNrXCIpO1xyXG4gICAgbXlDaGFydD8uZ2V0WnIoKT8ub2ZmKFwiY2xpY2tcIik7XHJcbiAgICBteUNoYXJ0LnNldE9wdGlvbihuZXdPcHRpb24pO1xyXG4gICAgbXlDaGFydC5vbihcImNsaWNrXCIsIGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgICAgT25DbGljayAmJiBPbkNsaWNrKHBhcmFtcywgbXlDaGFydCk7XHJcbiAgICB9KTtcclxuICAgIG15Q2hhcnQ/LmdldFpyKCk/Lm9uKFwiY2xpY2tcIiwgKHBhcmFtcykgPT4ge1xyXG4gICAgICBPblpyQ2xpY2sgJiYgT25ackNsaWNrKHBhcmFtcywgbXlDaGFydCk7XHJcbiAgICB9KTtcclxuICAgIG15Q2hhcnQucmVzaXplKCk7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcInJlc2l6ZVwiLCB0aGlzLmhhbmRsZUNoYXJ0UmVzaXplLmJpbmQodGhpcykpO1xyXG4gIH1cclxuXHJcbiAgaGFuZGxlQ2hhcnRSZXNpemUoKSB7XHJcbiAgICBpZiAodGhpcy5teUNoYXJ0KSB7XHJcbiAgICAgIHRoaXMubXlDaGFydC5yZXNpemUoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgd2lkdGgsIGhlaWdodCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGJveFN0eWxlID0ge1xyXG4gICAgICB3aWR0aDogdHlwZW9mIHdpZHRoID09IFwibnVtYmVyXCIgPyBweDJ2dyh3aWR0aCkgOiB3aWR0aCxcclxuICAgICAgaGVpZ2h0OiB0eXBlb2YgaGVpZ2h0ID09IFwibnVtYmVyXCIgPyBweDJ2dyhoZWlnaHQpIDogaGVpZ2h0LFxyXG4gICAgfTtcclxuICAgIHJldHVybiA8ZGl2IHN0eWxlPXtib3hTdHlsZX0gcmVmPXt0aGlzLmNoYXJ0UmVmfSBpZD1cIm5zY19jaGFydHNcIj48L2Rpdj47XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBOc2ND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
246
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJlY2hhcnRzIiwiU3RvcmUiLCJ1dGlscyIsInB4MnZ3IiwiaXNBcnJheSIsImlzT2JqZWN0IiwiTnNjQ2hhcnQiLCJjb25zdHJ1Y3RvciIsInByb3BzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwiZGF0YVNvdXJjZSIsImRhdGEiLCJzdG9yZSIsImNoaWxkcmVuIiwib3B0aW9uIiwib3B0aW9ucyIsImF1dG9Mb2FkIiwidXJsIiwibGlzdGVuZXJzIiwibGlzdGVuZXJzUG9wcyIsInN0b3JlcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIkVycm9yIiwiX3RoaXMiLCJzdG9yZVByb3BzIiwiX29iamVjdFNwcmVhZCIsIm1vZGVsIiwiY29tcG9uZW50Iiwib25CZWZvcmVMb2FkIiwiY2FsbGJhY2siLCJsb2FkIiwibW9kZWxEYXRhIiwic2V0U3RhdGUiLCJpc0ZpcnN0IiwiaW5pdCIsImRhdGFDaGFuZ2VkIiwiY29tcG9uZW50RGlkTW91bnQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJwcmV2U3RhdGUiLCJzbmFwc2hvdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJyZVNldENoYXJ0IiwiaXNTdHJpbmciLCJ2IiwiY29tcG9uZW50V2lsbFVubW91bnQiLCJ3aW5kb3ciLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiaGFuZGxlQ2hhcnRSZXNpemUiLCJiaW5kIiwiaXNSZXBsYWNlIiwidGVzdCIsInJlcGxhY2UiLCJzdWJzdHJpbmciLCJsZW5ndGgiLCJkYXRhQ29udmVyc2lvbiIsImRhdGFzIiwiZGF0YU1hcCIsInJlc3VsdCIsIm1hcCIsIml0ZW0iLCJ2YWx1ZSIsInRlbXBPYmoiLCJrZXkiLCJwdXNoIiwib2JqZWN0Q29udmVyc2lvbiIsIm9iaiIsIl9teUNoYXJ0JGdldFpyIiwiX215Q2hhcnQkZ2V0WnIyIiwiT25DbGljayIsIk9uWnJDbGljayIsInN0YXRlIiwibmV3RGF0YXMiLCJuZXdPcHRpb24iLCJ4QXhpcyIsInlBeGlzIiwic2VyaWVzIiwibXlDaGFydCIsImNoYXJ0UmVmIiwiY3VycmVudCIsImNsZWFyIiwib2ZmIiwiZ2V0WnIiLCJzZXRPcHRpb24iLCJvbiIsInBhcmFtcyIsInJlc2l6ZSIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZW5kZXIiLCJ3aWR0aCIsImhlaWdodCIsImJveFN0eWxlIiwiY3JlYXRlRWxlbWVudCIsInN0eWxlIiwicmVmIiwiaWQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL2NoYXJ0L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgKiBhcyBlY2hhcnRzIGZyb20gXCJlY2hhcnRzXCI7XHJcbmltcG9ydCB7IEVDaGFydHMgfSBmcm9tIFwiZWNoYXJ0cy9saWIvZWNoYXJ0c1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHsgcHgydncgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHsgaXNBcnJheSwgaXNPYmplY3QgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW50ZXJmYWNlIENoYXJ0UHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBvcHRpb246IGFueTtcclxuICBkYXRhPzogQXJyYXk8T2JqZWN0PiB8IE9iamVjdDtcclxuICB3aWR0aDogbnVtYmVyIHwgc3RyaW5nOyAvL+WbvuihqOWuveW6plxyXG4gIGhlaWdodDogbnVtYmVyIHwgc3RyaW5nOyAvL+WbvuihqOmVv+W6plxyXG4gIGF1dG9Mb2FkPzogYm9vbGVhbjsgLy/mlbDmja7mlLnlj5jvvIzoh6rliqjliLfmlrDlm77ooags6buY6K6kdHJ1ZVxyXG4gIE9uQ2xpY2s/OiAocGFyYW1zOiBhbnksIGU/OiBhbnkpID0+IHZvaWQ7IC8v5Zu+6KGo54K55Ye75LqL5Lu2XHJcbiAgT25ackNsaWNrPzogKHBhcmFtczogYW55LCBlPzogYW55KSA9PiB2b2lkOyAvL+WbvuihqOeCueWHu+S6i+S7tlxyXG4gIFtwcm9OYW1lczogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG4vL2RhdGHnpLrkvotcclxuLyoqXHJcbiDmlbDnu4TvvJpcclxuIGRhdGE9W3tuYW1lOicx5pyIJyx2YWx1ZToyMH0se25hbWU6JzLmnIgnLHZhbHVlOjEwfSx7bmFtZTonM+aciCcsdmFsdWU6MjV9XVxyXG4g5a+56LGhXHJcbiBkYXRhPXtuYW1lOlsnMeaciCcsJzLmnIgnLCcz5pyIJ10sdmFsdWU6WzIwLDMwLDQwXX1cclxuICovXHJcbmNsYXNzIE5zY0NoYXJ0IGV4dGVuZHMgUHVyZUNvbXBvbmVudDxDaGFydFByb3BzPiB7XHJcbiAgY2hhcnRSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgbXlDaGFydDogRUNoYXJ0cyB8IG51bGwgPSBudWxsO1xyXG4gIHN0b3JlID0ge30gYXMgU3RvcmVQcm9wcztcclxuICBzdGF0ZSA9IHtcclxuICAgIGRhdGFTb3VyY2U6IG51bGwsXHJcbiAgfTtcclxuICBpc0ZpcnN0ID0gdHJ1ZTtcclxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkYXRhLFxyXG4gICAgICBzdG9yZSA9IHt9LFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgb3B0aW9uOiBvcHRpb25zLFxyXG4gICAgICBhdXRvTG9hZCA9IHRydWUsXHJcbiAgICB9ID0gcHJvcHM7XHJcbiAgICBjb25zdCB7IHVybCwgbGlzdGVuZXJzOiBsaXN0ZW5lcnNQb3BzID0ge30sIC4uLnN0b3JlcyB9ID0gc3RvcmU7XHJcbiAgICBpZiAoIWNoaWxkcmVuKSB7XHJcbiAgICAgIGlmICghKGRhdGEgfHwgdXJsIHx8IG9wdGlvbnMpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs44CBZGF0YeOAgW9wdGlvbuS4jeiDvemDveS4uuepuu+8gVwiKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgICBsZXQgc3RvcmVQcm9wcyA9IHtcclxuICAgICAgICBtb2RlbDogXCJtb2RlbFwiLFxyXG4gICAgICAgIGNvbXBvbmVudDogdGhpcyxcclxuICAgICAgICBsaXN0ZW5lcnM6IHtcclxuICAgICAgICAgIG9uQmVmb3JlTG9hZDogZnVuY3Rpb24gKHN0b3JlLCBvcHRpb25zKSB7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMub25CZWZvcmVMb2FkLCBfdGhpcywgW3N0b3JlLCBvcHRpb25zXSk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgbG9hZDogZnVuY3Rpb24gKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpIHtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChfdGhpcy5pc0ZpcnN0ICYmIGF1dG9Mb2FkKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5pbml0KCk7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5pc0ZpcnN0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdXRpbHMuY2FsbGJhY2sobGlzdGVuZXJzUG9wcy5sb2FkLCBfdGhpcywgW2RhdGEsIG1vZGVsRGF0YSwgc3RvcmVdKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBkYXRhQ2hhbmdlZDogZnVuY3Rpb24gKGRhdGEsIG1vZGVsRGF0YSwgc3RvcmUpIHtcclxuICAgICAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyBkYXRhU291cmNlOiBtb2RlbERhdGEgfSwgKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGlmIChhdXRvTG9hZCkge1xyXG4gICAgICAgICAgICAgICAgX3RoaXMuaW5pdCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHV0aWxzLmNhbGxiYWNrKGxpc3RlbmVyc1BvcHMuZGF0YUNoYW5nZWQsIF90aGlzLCBbXHJcbiAgICAgICAgICAgICAgZGF0YSxcclxuICAgICAgICAgICAgICBtb2RlbERhdGEsXHJcbiAgICAgICAgICAgICAgc3RvcmUsXHJcbiAgICAgICAgICAgIF0pO1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnN0b3JlcyxcclxuICAgICAgfTtcclxuICAgICAgaWYgKHVybCAmJiBkYXRhID09IG51bGwpIHtcclxuICAgICAgICBzdG9yZVByb3BzID0ge1xyXG4gICAgICAgICAgLi4ue1xyXG4gICAgICAgICAgICBhdXRvTG9hZDogdHJ1ZSxcclxuICAgICAgICAgICAgdXJsOiB1cmwsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4uc3RvcmVQcm9wcyxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc3RvcmUgPSBuZXcgU3RvcmUoc3RvcmVQcm9wcyk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgZGF0YSwgYXV0b0xvYWQgPSB0cnVlLCBzdG9yZSwgb3B0aW9uIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKGRhdGEgJiYgYXV0b0xvYWQpIHtcclxuICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICB9IGVsc2UgaWYgKCFkYXRhICYmICFzdG9yZT8udXJsICYmIG9wdGlvbikge1xyXG4gICAgICB0aGlzLmluaXQoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZShcclxuICAgIHByZXZQcm9wczogUmVhZG9ubHk8Q2hhcnRQcm9wcz4sXHJcbiAgICBwcmV2U3RhdGU6IFJlYWRvbmx5PHt9PixcclxuICAgIHNuYXBzaG90PzogYW55XHJcbiAgKTogdm9pZCB7XHJcbiAgICBjb25zdCB7IGF1dG9Mb2FkID0gdHJ1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChhdXRvTG9hZCkge1xyXG4gICAgICBpZiAoSlNPTi5zdHJpbmdpZnkocHJldlByb3BzLmRhdGEpICE9PSBKU09OLnN0cmluZ2lmeSh0aGlzLnByb3BzLmRhdGEpKSB7XHJcbiAgICAgICAgdGhpcy5pbml0KCk7XHJcbiAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgSlNPTi5zdHJpbmdpZnkocHJldlByb3BzLm9wdGlvbikgIT09IEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMub3B0aW9uKVxyXG4gICAgICApIHtcclxuICAgICAgICB0aGlzLmluaXQoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVTZXRDaGFydCgpIHtcclxuICAgIHRoaXMuaW5pdCgpO1xyXG4gIH1cclxuICBpc1N0cmluZyh2KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHYgPT09IFwic3RyaW5nXCI7XHJcbiAgfVxyXG4gIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xyXG4gICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJyZXNpemVcIiwgdGhpcy5oYW5kbGVDaGFydFJlc2l6ZS5iaW5kKHRoaXMpKTtcclxuICB9XHJcblxyXG4gIGlzUmVwbGFjZSh2KSB7XHJcbiAgICByZXR1cm4gL157Lip9JC9naS50ZXN0KHYpO1xyXG4gIH1cclxuICByZXBsYWNlKHYpIHtcclxuICAgIHJldHVybiB2LnN1YnN0cmluZygxLCB2Lmxlbmd0aCAtIDEpO1xyXG4gIH1cclxuXHJcbiAgZGF0YUNvbnZlcnNpb24oZGF0YSwgZGF0YXMsIGRhdGFNYXApIHtcclxuICAgIGxldCByZXN1bHQ7XHJcbiAgICBpZiAoZGF0YSkge1xyXG4gICAgICBpZiAodGhpcy5pc1N0cmluZyhkYXRhKSAmJiB0aGlzLmlzUmVwbGFjZShkYXRhKSkge1xyXG4gICAgICAgIHJlc3VsdCA9IGRhdGFNYXBbdGhpcy5yZXBsYWNlKGRhdGEpXTtcclxuICAgICAgfSBlbHNlIGlmIChpc0FycmF5KGRhdGEpKSB7XHJcbiAgICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGxldCB2ID0gaXRlbT8udmFsdWU7XHJcbiAgICAgICAgICBpZiAodiAmJiB0aGlzLmlzUmVwbGFjZSh2KSkge1xyXG4gICAgICAgICAgICBpdGVtLnZhbHVlID0gdGhpcy5kYXRhQ29udmVyc2lvbih2LCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmVzdWx0ID0gZGF0YTtcclxuICAgICAgfSBlbHNlIGlmIChpc09iamVjdChkYXRhKSkge1xyXG4gICAgICAgIHJlc3VsdCA9IFtdO1xyXG4gICAgICAgIGlmIChpc0FycmF5KGRhdGFzKSkge1xyXG4gICAgICAgICAgZGF0YXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgIHZhciB0ZW1wT2JqID0ge307XHJcbiAgICAgICAgICAgIGZvciAobGV0IGtleSBpbiBpdGVtKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHYgPSBpdGVtW2tleV07XHJcbiAgICAgICAgICAgICAgaWYgKHRoaXMuaXNSZXBsYWNlKHYpKSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wT2JqW2tleV0gPSBpdGVtW3RoaXMucmVwbGFjZSh2KV07XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRlbXBPYmpba2V5XSA9IHY7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHRlbXBPYmopO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzdWx0O1xyXG4gIH1cclxuICBvYmplY3RDb252ZXJzaW9uKG9iaiwgZGF0YXMsIGRhdGFNYXApIHtcclxuICAgIGxldCB0ZW1wT2JqOiBhbnk7XHJcbiAgICBpZiAob2JqKSB7XHJcbiAgICAgIGlmIChpc0FycmF5KG9iaikpIHtcclxuICAgICAgICB0ZW1wT2JqID0gWy4uLm9ial07XHJcbiAgICAgICAgdGVtcE9iai5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGlmIChpdGVtPy5kYXRhKSB7XHJcbiAgICAgICAgICAgIGl0ZW0uZGF0YSA9IHRoaXMuZGF0YUNvbnZlcnNpb24oaXRlbS5kYXRhLCBkYXRhcywgZGF0YU1hcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5pc1N0cmluZyhvYmopKSB7XHJcbiAgICAgICAgdGVtcE9iaiA9IG9iajtcclxuICAgICAgICB0ZW1wT2JqLmRhdGEgPSB0aGlzLmRhdGFDb252ZXJzaW9uKHRlbXBPYmosIGRhdGFzLCBkYXRhTWFwKTtcclxuICAgICAgfSBlbHNlIGlmIChpc09iamVjdChvYmopKSB7XHJcbiAgICAgICAgdGVtcE9iaiA9IHsgLi4ub2JqIH07XHJcbiAgICAgICAgdGVtcE9iai5kYXRhID0gdGhpcy5kYXRhQ29udmVyc2lvbih0ZW1wT2JqLmRhdGEsIGRhdGFzLCBkYXRhTWFwKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRlbXBPYmo7XHJcbiAgfVxyXG4gIGluaXQoKSB7XHJcbiAgICBjb25zdCB7IG9wdGlvbiwgZGF0YSwgT25DbGljaywgT25ackNsaWNrIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBkYXRhU291cmNlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IGRhdGFNYXA6IGFueSA9IHt9O1xyXG4gICAgY29uc3QgbmV3RGF0YXMgPSBkYXRhIHx8IGRhdGFTb3VyY2U7XHJcbiAgICBsZXQgbmV3T3B0aW9uOiBhbnkgPSB7IC4uLm9wdGlvbiB9O1xyXG4gICAgaWYgKGlzQXJyYXkobmV3RGF0YXMpKSB7XHJcbiAgICAgIG5ld0RhdGFzLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGZvciAobGV0IGtleSBpbiBpdGVtKSB7XHJcbiAgICAgICAgICBpZiAoZGF0YU1hcFtrZXldID09IG51bGwpIHtcclxuICAgICAgICAgICAgZGF0YU1hcFtrZXldID0gW107XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkYXRhTWFwW2tleV0ucHVzaChpdGVtW2tleV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGlzT2JqZWN0KG5ld0RhdGFzKSkge1xyXG4gICAgICBkYXRhTWFwID0gbmV3RGF0YXM7XHJcbiAgICB9XHJcbiAgICBuZXdPcHRpb24ueEF4aXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24obmV3T3B0aW9uLnhBeGlzLCBuZXdEYXRhcywgZGF0YU1hcCk7XHJcbiAgICBuZXdPcHRpb24ueUF4aXMgPSB0aGlzLm9iamVjdENvbnZlcnNpb24obmV3T3B0aW9uLnlBeGlzLCBuZXdEYXRhcywgZGF0YU1hcCk7XHJcbiAgICBuZXdPcHRpb24uc2VyaWVzID0gdGhpcy5vYmplY3RDb252ZXJzaW9uKFxyXG4gICAgICBuZXdPcHRpb24uc2VyaWVzLFxyXG4gICAgICBuZXdEYXRhcyxcclxuICAgICAgZGF0YU1hcFxyXG4gICAgKTtcclxuICAgIGNvbnN0IG15Q2hhcnQgPSAodGhpcy5teUNoYXJ0ID0gZWNoYXJ0cy5pbml0KFxyXG4gICAgICB0aGlzLmNoYXJ0UmVmLmN1cnJlbnQgYXMgSFRNTERpdkVsZW1lbnRcclxuICAgICkpOyAvL+WIneWni+WMlmVjaGFydHPvvIzpgJrov4dyZWblsZ7mgKfojrflj5Zkb21cclxuICAgIG15Q2hhcnQuY2xlYXIoKTtcclxuICAgIG15Q2hhcnQub2ZmKFwiY2xpY2tcIik7XHJcbiAgICBteUNoYXJ0Py5nZXRacigpPy5vZmYoXCJjbGlja1wiKTtcclxuICAgIG15Q2hhcnQuc2V0T3B0aW9uKG5ld09wdGlvbik7XHJcbiAgICBteUNoYXJ0Lm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgICBPbkNsaWNrICYmIE9uQ2xpY2socGFyYW1zLCBteUNoYXJ0KTtcclxuICAgIH0pO1xyXG4gICAgbXlDaGFydD8uZ2V0WnIoKT8ub24oXCJjbGlja1wiLCAocGFyYW1zKSA9PiB7XHJcbiAgICAgIE9uWnJDbGljayAmJiBPblpyQ2xpY2socGFyYW1zLCBteUNoYXJ0KTtcclxuICAgIH0pO1xyXG4gICAgbXlDaGFydC5yZXNpemUoKTtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwicmVzaXplXCIsIHRoaXMuaGFuZGxlQ2hhcnRSZXNpemUuYmluZCh0aGlzKSk7XHJcbiAgfVxyXG5cclxuICBoYW5kbGVDaGFydFJlc2l6ZSgpIHtcclxuICAgIGlmICh0aGlzLm15Q2hhcnQpIHtcclxuICAgICAgdGhpcy5teUNoYXJ0LnJlc2l6ZSgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3QgeyB3aWR0aCwgaGVpZ2h0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgYm94U3R5bGUgPSB7XHJcbiAgICAgIHdpZHRoOiB0eXBlb2Ygd2lkdGggPT0gXCJudW1iZXJcIiA/IHB4MnZ3KHdpZHRoKSA6IHdpZHRoLFxyXG4gICAgICBoZWlnaHQ6IHR5cGVvZiBoZWlnaHQgPT0gXCJudW1iZXJcIiA/IHB4MnZ3KGhlaWdodCkgOiBoZWlnaHQsXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIDxkaXYgc3R5bGU9e2JveFN0eWxlfSByZWY9e3RoaXMuY2hhcnRSZWZ9IGlkPVwibnNjX2NoYXJ0c1wiPjwvZGl2PjtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IE5zY0NoYXJ0O1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJ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QUFDO0lBQ3BCSixPQUFPLGFBQVBBLE9BQU8sZ0JBQUFWLGNBQUEsR0FBUFUsT0FBTyxDQUFFSyxLQUFLLENBQUMsQ0FBQyxjQUFBZixjQUFBLGVBQWhCQSxjQUFBLENBQWtCYyxHQUFHLENBQUMsT0FBTyxDQUFDO0lBQzlCSixPQUFPLENBQUNNLFNBQVMsQ0FBQ1YsU0FBUyxDQUFDO0lBQzVCSSxPQUFPLENBQUNPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsVUFBVUMsTUFBTSxFQUFFO01BQ3BDaEIsT0FBTyxJQUFJQSxPQUFPLENBQUNnQixNQUFNLEVBQUVSLE9BQU8sQ0FBQztJQUNyQyxDQUFDLENBQUM7SUFDRkEsT0FBTyxhQUFQQSxPQUFPLGdCQUFBVCxlQUFBLEdBQVBTLE9BQU8sQ0FBRUssS0FBSyxDQUFDLENBQUMsY0FBQWQsZUFBQSxlQUFoQkEsZUFBQSxDQUFrQmdCLEVBQUUsQ0FBQyxPQUFPLEVBQUdDLE1BQU0sSUFBSztNQUN4Q2YsU0FBUyxJQUFJQSxTQUFTLENBQUNlLE1BQU0sRUFBRVIsT0FBTyxDQUFDO0lBQ3pDLENBQUMsQ0FBQztJQUNGQSxPQUFPLENBQUNTLE1BQU0sQ0FBQyxDQUFDO0lBQ2hCeEMsTUFBTSxDQUFDeUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQ3ZDLGlCQUFpQixDQUFDQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7RUFDdEU7RUFFQUQsaUJBQWlCQSxDQUFBLEVBQUc7SUFDbEIsSUFBSSxJQUFJLENBQUM2QixPQUFPLEVBQUU7TUFDaEIsSUFBSSxDQUFDQSxPQUFPLENBQUNTLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZCO0VBQ0Y7RUFFQUUsTUFBTUEsQ0FBQSxFQUFHO0lBQ1AsTUFBTTtNQUFFQyxLQUFLO01BQUVDO0lBQU8sQ0FBQyxHQUFHLElBQUksQ0FBQ3JGLEtBQUs7SUFDcEMsTUFBTXNGLFFBQVEsR0FBRztNQUNmRixLQUFLLEVBQUUsT0FBT0EsS0FBSyxJQUFJLFFBQVEsR0FBR3pGLEtBQUssQ0FBQ3lGLEtBQUssQ0FBQyxHQUFHQSxLQUFLO01BQ3REQyxNQUFNLEVBQUUsT0FBT0EsTUFBTSxJQUFJLFFBQVEsR0FBRzFGLEtBQUssQ0FBQzBGLE1BQU0sQ0FBQyxHQUFHQTtJQUN0RCxDQUFDO0lBQ0Qsb0JBQU8vRixLQUFBLENBQUFpRyxhQUFBO01BQUtDLEtBQUssRUFBRUYsUUFBUztNQUFDRyxHQUFHLEVBQUUsSUFBSSxDQUFDaEIsUUFBUztNQUFDaUIsRUFBRSxFQUFDO0lBQVksQ0FBTSxDQUFDO0VBQ3pFO0FBQ0Y7QUFFQSxlQUFlNUYsUUFBUSIsImlnbm9yZUxpc3QiOltdfQ==
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","PureComponent","echarts","Store","utils","px2vw","isArray","isObject","NscChart","constructor","props","_defineProperty","createRef","dataSource","data","store","children","option","options","autoLoad","url","listeners","listenersPops","stores","_objectWithoutProperties","_excluded","Error","_this","storeProps","_objectSpread","model","component","onBeforeLoad","callback","load","modelData","setState","isFirst","init","dataChanged","componentDidMount","componentDidUpdate","prevProps","prevState","snapshot","JSON","stringify","console","log","reSetChart","isString","v","componentWillUnmount","window","removeEventListener","handleChartResize","bind","isReplace","test","replace","substring","length","dataConversion","datas","dataMap","result","map","item","value","tempObj","key","push","objectConversion","obj","_myChart$getZr","_myChart$getZr2","OnClick","OnZrClick","state","newDatas","newOption","xAxis","yAxis","series","myChart","chartRef","current","clear","off","getZr","setOption","on","params","resize","addEventListener","render","width","height","boxStyle","createElement","style","ref","id"],"sources":["../../../src/components/base/chart/index.tsx"],"sourcesContent":["import React, { PureComponent } from \"react\";\r\nimport * as echarts from \"echarts\";\r\nimport { ECharts } from \"echarts/lib/echarts\";\r\nimport Store, { StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport { px2vw } from \"../../utils\";\r\nimport { isArray, isObject } from \"@bj-nsc/functions\";\r\ninterface ChartProps {\r\n store?: StoreProps;\r\n option: any;\r\n data?: Array<Object> | Object;\r\n width: number | string; //图表宽度\r\n height: number | string; //图表长度\r\n autoLoad?: boolean; //数据改变,自动刷新图表,默认true\r\n OnClick?: (params: any, e?: any) => void; //图表点击事件\r\n OnZrClick?: (params: any, e?: any) => void; //图表点击事件\r\n [proNames: string]: any;\r\n}\r\n\r\n//data示例\r\n/**\r\n 数组:\r\n data=[{name:'1月',value:20},{name:'2月',value:10},{name:'3月',value:25}]\r\n 对象\r\n data={name:['1月','2月','3月'],value:[20,30,40]}\r\n */\r\nclass NscChart extends PureComponent<ChartProps> {\r\n chartRef = React.createRef<HTMLDivElement>();\r\n myChart: ECharts | null = null;\r\n store = {} as StoreProps;\r\n state = {\r\n dataSource: null,\r\n };\r\n isFirst = true;\r\n constructor(props) {\r\n super(props);\r\n const {\r\n data,\r\n store = {},\r\n children,\r\n option: options,\r\n autoLoad = true,\r\n } = props;\r\n const { url, listeners: listenersPops = {}, ...stores } = store;\r\n if (!children) {\r\n if (!(data || url || options)) {\r\n throw new Error(\"url、data、option不能都为空!\");\r\n }\r\n let _this = this;\r\n let storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: function (store, options) {\r\n utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);\r\n },\r\n load: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (_this.isFirst && autoLoad) {\r\n _this.init();\r\n _this.isFirst = false;\r\n }\r\n });\r\n utils.callback(listenersPops.load, _this, [data, modelData, store]);\r\n },\r\n dataChanged: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (autoLoad) {\r\n _this.init();\r\n }\r\n });\r\n utils.callback(listenersPops.dataChanged, _this, [\r\n data,\r\n modelData,\r\n store,\r\n ]);\r\n },\r\n },\r\n ...stores,\r\n };\r\n if (url && data == null) {\r\n storeProps = {\r\n ...{\r\n autoLoad: true,\r\n url: url,\r\n },\r\n ...storeProps,\r\n };\r\n }\r\n this.store = new Store(storeProps);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const { data, autoLoad = true, store, option } = this.props;\r\n if (data && autoLoad) {\r\n this.init();\r\n } else if (!data && !store?.url && option) {\r\n this.init();\r\n }\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<ChartProps>,\r\n prevState: Readonly<{}>,\r\n snapshot?: any\r\n ): void {\r\n const { autoLoad = true } = this.props;\r\n if (autoLoad) {\r\n if (JSON.stringify(prevProps.data) !== JSON.stringify(this.props.data)) {\r\n this.init();\r\n } else if (\r\n JSON.stringify(prevProps.option) !== JSON.stringify(this.props.option)\r\n ) {\r\n console.log(\"aaa\");\r\n this.init();\r\n }\r\n }\r\n }\r\n\r\n reSetChart() {\r\n this.init();\r\n }\r\n isString(v) {\r\n return typeof v === \"string\";\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n isReplace(v) {\r\n return /^{.*}$/gi.test(v);\r\n }\r\n replace(v) {\r\n return v.substring(1, v.length - 1);\r\n }\r\n\r\n dataConversion(data, datas, dataMap) {\r\n let result;\r\n if (data) {\r\n if (this.isString(data) && this.isReplace(data)) {\r\n result = dataMap[this.replace(data)];\r\n } else if (isArray(data)) {\r\n data.map((item) => {\r\n let v = item?.value;\r\n if (v && this.isReplace(v)) {\r\n item.value = this.dataConversion(v, datas, dataMap);\r\n }\r\n });\r\n result = data;\r\n } else if (isObject(data)) {\r\n result = [];\r\n if (isArray(datas)) {\r\n datas.map((item) => {\r\n var tempObj = {};\r\n for (let key in item) {\r\n let v = item[key];\r\n if (this.isReplace(v)) {\r\n tempObj[key] = item[this.replace(v)];\r\n } else {\r\n tempObj[key] = v;\r\n }\r\n }\r\n result.push(tempObj);\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n objectConversion(obj, datas, dataMap) {\r\n let tempObj: any;\r\n if (obj) {\r\n if (isArray(obj)) {\r\n tempObj = [...obj];\r\n tempObj.map((item) => {\r\n if (item?.data) {\r\n item.data = this.dataConversion(item.data, datas, dataMap);\r\n }\r\n });\r\n } else if (this.isString(obj)) {\r\n tempObj = obj;\r\n tempObj.data = this.dataConversion(tempObj, datas, dataMap);\r\n } else if (isObject(obj)) {\r\n tempObj = { ...obj };\r\n tempObj.data = this.dataConversion(tempObj.data, datas, dataMap);\r\n }\r\n }\r\n return tempObj;\r\n }\r\n init() {\r\n const { option, data, OnClick, OnZrClick } = this.props;\r\n const { dataSource } = this.state;\r\n let dataMap: any = {};\r\n const newDatas = data || dataSource;\r\n let newOption: any = { ...option };\r\n if (isArray(newDatas)) {\r\n newDatas.map((item) => {\r\n for (let key in item) {\r\n if (dataMap[key] == null) {\r\n dataMap[key] = [];\r\n }\r\n dataMap[key].push(item[key]);\r\n }\r\n });\r\n } else if (isObject(newDatas)) {\r\n dataMap = newDatas;\r\n }\r\n newOption.xAxis = this.objectConversion(newOption.xAxis, newDatas, dataMap);\r\n newOption.yAxis = this.objectConversion(newOption.yAxis, newDatas, dataMap);\r\n newOption.series = this.objectConversion(\r\n newOption.series,\r\n newDatas,\r\n dataMap\r\n );\r\n const myChart = (this.myChart = echarts.init(\r\n this.chartRef.current as HTMLDivElement\r\n )); //初始化echarts,通过ref属性获取dom\r\n myChart.clear();\r\n myChart.off(\"click\");\r\n myChart?.getZr()?.off(\"click\");\r\n myChart.setOption(newOption);\r\n myChart.on(\"click\", function (params) {\r\n OnClick && OnClick(params, myChart);\r\n });\r\n myChart?.getZr()?.on(\"click\", (params) => {\r\n OnZrClick && OnZrClick(params, myChart);\r\n });\r\n myChart.resize();\r\n window.addEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n handleChartResize() {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }\r\n\r\n render() {\r\n const { width, height } = this.props;\r\n const boxStyle = {\r\n width: typeof width == \"number\" ? px2vw(width) : width,\r\n height: typeof height == \"number\" ? px2vw(height) : height,\r\n };\r\n return <div style={boxStyle} ref={this.chartRef} id=\"nsc_charts\"></div>;\r\n }\r\n}\r\n\r\nexport default NscChart;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","PureComponent","echarts","Store","utils","px2vw","isArray","isObject","NscChart","constructor","props","_defineProperty","createRef","dataSource","data","store","children","option","options","autoLoad","url","listeners","listenersPops","stores","_objectWithoutProperties","_excluded","Error","_this","storeProps","_objectSpread","model","component","onBeforeLoad","callback","load","modelData","setState","isFirst","init","dataChanged","componentDidMount","componentDidUpdate","prevProps","prevState","snapshot","JSON","stringify","reSetChart","isString","v","componentWillUnmount","window","removeEventListener","handleChartResize","bind","isReplace","test","replace","substring","length","dataConversion","datas","dataMap","result","map","item","value","tempObj","key","push","objectConversion","obj","_myChart$getZr","_myChart$getZr2","OnClick","OnZrClick","state","newDatas","newOption","xAxis","yAxis","series","myChart","chartRef","current","clear","off","getZr","setOption","on","params","resize","addEventListener","render","width","height","boxStyle","createElement","style","ref","id"],"sources":["../../../src/components/base/chart/index.tsx"],"sourcesContent":["import React, { PureComponent } from \"react\";\r\nimport * as echarts from \"echarts\";\r\nimport { ECharts } from \"echarts/lib/echarts\";\r\nimport Store, { StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport { px2vw } from \"../../utils\";\r\nimport { isArray, isObject } from \"@bj-nsc/functions\";\r\ninterface ChartProps {\r\n store?: StoreProps;\r\n option: any;\r\n data?: Array<Object> | Object;\r\n width: number | string; //图表宽度\r\n height: number | string; //图表长度\r\n autoLoad?: boolean; //数据改变,自动刷新图表,默认true\r\n OnClick?: (params: any, e?: any) => void; //图表点击事件\r\n OnZrClick?: (params: any, e?: any) => void; //图表点击事件\r\n [proNames: string]: any;\r\n}\r\n\r\n//data示例\r\n/**\r\n 数组:\r\n data=[{name:'1月',value:20},{name:'2月',value:10},{name:'3月',value:25}]\r\n 对象\r\n data={name:['1月','2月','3月'],value:[20,30,40]}\r\n */\r\nclass NscChart extends PureComponent<ChartProps> {\r\n chartRef = React.createRef<HTMLDivElement>();\r\n myChart: ECharts | null = null;\r\n store = {} as StoreProps;\r\n state = {\r\n dataSource: null,\r\n };\r\n isFirst = true;\r\n constructor(props) {\r\n super(props);\r\n const {\r\n data,\r\n store = {},\r\n children,\r\n option: options,\r\n autoLoad = true,\r\n } = props;\r\n const { url, listeners: listenersPops = {}, ...stores } = store;\r\n if (!children) {\r\n if (!(data || url || options)) {\r\n throw new Error(\"url、data、option不能都为空!\");\r\n }\r\n let _this = this;\r\n let storeProps = {\r\n model: \"model\",\r\n component: this,\r\n listeners: {\r\n onBeforeLoad: function (store, options) {\r\n utils.callback(listenersPops.onBeforeLoad, _this, [store, options]);\r\n },\r\n load: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (_this.isFirst && autoLoad) {\r\n _this.init();\r\n _this.isFirst = false;\r\n }\r\n });\r\n utils.callback(listenersPops.load, _this, [data, modelData, store]);\r\n },\r\n dataChanged: function (data, modelData, store) {\r\n _this.setState({ dataSource: modelData }, () => {\r\n if (autoLoad) {\r\n _this.init();\r\n }\r\n });\r\n utils.callback(listenersPops.dataChanged, _this, [\r\n data,\r\n modelData,\r\n store,\r\n ]);\r\n },\r\n },\r\n ...stores,\r\n };\r\n if (url && data == null) {\r\n storeProps = {\r\n ...{\r\n autoLoad: true,\r\n url: url,\r\n },\r\n ...storeProps,\r\n };\r\n }\r\n this.store = new Store(storeProps);\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const { data, autoLoad = true, store, option } = this.props;\r\n if (data && autoLoad) {\r\n this.init();\r\n } else if (!data && !store?.url && option) {\r\n this.init();\r\n }\r\n }\r\n\r\n componentDidUpdate(\r\n prevProps: Readonly<ChartProps>,\r\n prevState: Readonly<{}>,\r\n snapshot?: any\r\n ): void {\r\n const { autoLoad = true } = this.props;\r\n if (autoLoad) {\r\n if (JSON.stringify(prevProps.data) !== JSON.stringify(this.props.data)) {\r\n this.init();\r\n } else if (\r\n JSON.stringify(prevProps.option) !== JSON.stringify(this.props.option)\r\n ) {\r\n this.init();\r\n }\r\n }\r\n }\r\n\r\n reSetChart() {\r\n this.init();\r\n }\r\n isString(v) {\r\n return typeof v === \"string\";\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n isReplace(v) {\r\n return /^{.*}$/gi.test(v);\r\n }\r\n replace(v) {\r\n return v.substring(1, v.length - 1);\r\n }\r\n\r\n dataConversion(data, datas, dataMap) {\r\n let result;\r\n if (data) {\r\n if (this.isString(data) && this.isReplace(data)) {\r\n result = dataMap[this.replace(data)];\r\n } else if (isArray(data)) {\r\n data.map((item) => {\r\n let v = item?.value;\r\n if (v && this.isReplace(v)) {\r\n item.value = this.dataConversion(v, datas, dataMap);\r\n }\r\n });\r\n result = data;\r\n } else if (isObject(data)) {\r\n result = [];\r\n if (isArray(datas)) {\r\n datas.map((item) => {\r\n var tempObj = {};\r\n for (let key in item) {\r\n let v = item[key];\r\n if (this.isReplace(v)) {\r\n tempObj[key] = item[this.replace(v)];\r\n } else {\r\n tempObj[key] = v;\r\n }\r\n }\r\n result.push(tempObj);\r\n });\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n objectConversion(obj, datas, dataMap) {\r\n let tempObj: any;\r\n if (obj) {\r\n if (isArray(obj)) {\r\n tempObj = [...obj];\r\n tempObj.map((item) => {\r\n if (item?.data) {\r\n item.data = this.dataConversion(item.data, datas, dataMap);\r\n }\r\n });\r\n } else if (this.isString(obj)) {\r\n tempObj = obj;\r\n tempObj.data = this.dataConversion(tempObj, datas, dataMap);\r\n } else if (isObject(obj)) {\r\n tempObj = { ...obj };\r\n tempObj.data = this.dataConversion(tempObj.data, datas, dataMap);\r\n }\r\n }\r\n return tempObj;\r\n }\r\n init() {\r\n const { option, data, OnClick, OnZrClick } = this.props;\r\n const { dataSource } = this.state;\r\n let dataMap: any = {};\r\n const newDatas = data || dataSource;\r\n let newOption: any = { ...option };\r\n if (isArray(newDatas)) {\r\n newDatas.map((item) => {\r\n for (let key in item) {\r\n if (dataMap[key] == null) {\r\n dataMap[key] = [];\r\n }\r\n dataMap[key].push(item[key]);\r\n }\r\n });\r\n } else if (isObject(newDatas)) {\r\n dataMap = newDatas;\r\n }\r\n newOption.xAxis = this.objectConversion(newOption.xAxis, newDatas, dataMap);\r\n newOption.yAxis = this.objectConversion(newOption.yAxis, newDatas, dataMap);\r\n newOption.series = this.objectConversion(\r\n newOption.series,\r\n newDatas,\r\n dataMap\r\n );\r\n const myChart = (this.myChart = echarts.init(\r\n this.chartRef.current as HTMLDivElement\r\n )); //初始化echarts,通过ref属性获取dom\r\n myChart.clear();\r\n myChart.off(\"click\");\r\n myChart?.getZr()?.off(\"click\");\r\n myChart.setOption(newOption);\r\n myChart.on(\"click\", function (params) {\r\n OnClick && OnClick(params, myChart);\r\n });\r\n myChart?.getZr()?.on(\"click\", (params) => {\r\n OnZrClick && OnZrClick(params, myChart);\r\n });\r\n myChart.resize();\r\n window.addEventListener(\"resize\", this.handleChartResize.bind(this));\r\n }\r\n\r\n handleChartResize() {\r\n if (this.myChart) {\r\n this.myChart.resize();\r\n }\r\n }\r\n\r\n render() {\r\n const { width, height } = this.props;\r\n const boxStyle = {\r\n width: typeof width == \"number\" ? px2vw(width) : width,\r\n height: typeof height == \"number\" ? px2vw(height) : height,\r\n };\r\n return <div style={boxStyle} ref={this.chartRef} id=\"nsc_charts\"></div>;\r\n }\r\n}\r\n\r\nexport default NscChart;\r\n"],"mappings":"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","ignoreList":[]}
@@ -30,6 +30,8 @@ function SliderMenu(props) {
30
30
  const [translateX, setTranslateX] = useState(0);
31
31
  const [leftIconClick, rightIconClick] = useMemo(() => {
32
32
  const listItemWidth = data.length * itemWidth;
33
+ console.log('listItemWidth', listItemWidth);
34
+ console.log('listWidth', listWidth);
33
35
  const leftIconClick = translateX < 0;
34
36
  const rightIconClick = translateX == 0 ? listItemWidth > listWidth : listItemWidth + translateX > listWidth;
35
37
  return [leftIconClick, rightIconClick];
@@ -43,6 +45,7 @@ function SliderMenu(props) {
43
45
  const ref = useRef(null);
44
46
  useEffect(() => {
45
47
  const totallist = document.getElementById("nsc-slidermenu-total-list");
48
+ console.log('totallist', totallist);
46
49
  setListWidth(totallist ? totallist === null || totallist === void 0 ? void 0 : totallist.clientWidth : 0);
47
50
  }, [data]);
48
51
  const onIconClick = direaction => {
@@ -99,4 +102,4 @@ SliderMenu.LeftArrow = LeftArrow;
99
102
  SliderMenu.RightArrow = RightArrow;
100
103
  SliderMenu.Content = Content;
101
104
  export default SliderMenu;
102
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldExlc3MiLCJzdHlsZXMiLCJMZWZ0QXJyb3ciLCJwcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJjaGlsZHJlbiIsIlJpZ2h0QXJyb3ciLCJDb250ZW50IiwiY2xhc3NOYW1lIiwiaWQiLCJzdHlsZSIsInRyYW5zZm9ybSIsImNvbmNhdCIsInRyYW5zbGF0ZVgiLCJTbGlkZXJNZW51IiwiZGF0YSIsInRyYW5zbGF0ZVN0ZXAiLCJpdGVtV2lkdGgiLCJsaXN0V2lkdGgiLCJzZXRMaXN0V2lkdGgiLCJzZXRUcmFuc2xhdGVYIiwibGVmdEljb25DbGljayIsInJpZ2h0SWNvbkNsaWNrIiwibGlzdEl0ZW1XaWR0aCIsImxlbmd0aCIsImxlZnRJY29uVmlzaWJsZSIsInJpZ2h0SWNvblZpc2libGUiLCJpc0xlZnRJY29uVmlzaWJsZSIsImlzUmlnaHRJY29uVmlzaWJsZSIsInJlZiIsInRvdGFsbGlzdCIsImRvY3VtZW50IiwiZ2V0RWxlbWVudEJ5SWQiLCJjbGllbnRXaWR0aCIsIm9uSWNvbkNsaWNrIiwiZGlyZWFjdGlvbiIsIm5ld1RyYW5zbGF0ZVgiLCJ0cmFuc2xhdGVEaXN0YW5jZSIsIm9uU3RhdGVDaGFuZ2UiLCJsZWZ0Q2xpY2siLCJyaWdodENsaWNrIiwiQXJyYXkiLCJpc0FycmF5IiwibWFwIiwiaXRlbSIsImluZGV4IiwidHlwZSIsIm9uQ2xpY2siLCJrZXkiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3NsaWRlcm1lbnUvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCB7IGdldExlc3MgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFNsaWRlclByb3BzIHtcclxuICBkYXRhOiBBcnJheTxPYmplY3Q+O1xyXG4gIGl0ZW1XaWR0aDogbnVtYmVyO1xyXG4gIHRyYW5zbGF0ZVN0ZXA6IG51bWJlcjtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvblN0YXRlQ2hhbmdlPzogRnVuY3Rpb247XHJcbn1cclxuXHJcbmNvbnN0IExlZnRBcnJvdyA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgcmV0dXJuIDxkaXY+e3Byb3BzLmNoaWxkcmVufTwvZGl2PjtcclxufTtcclxuXHJcbmNvbnN0IFJpZ2h0QXJyb3cgPSAocHJvcHM6IGFueSkgPT4ge1xyXG4gIHJldHVybiA8ZGl2Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj47XHJcbn07XHJcblxyXG5jb25zdCBDb250ZW50ID0gKHByb3BzOiBhbnkpID0+IHtcclxuICByZXR1cm4gKFxyXG4gICAgPGRpdlxyXG4gICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1zbGlkZXJtZW51LXRhYi1uYXZcIil9XHJcbiAgICAgIGlkPVwibnNjLXNsaWRlcm1lbnUtdG90YWwtbGlzdFwiXHJcbiAgICA+XHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1zbGlkZXJtZW51LW5hdi1saXN0XCIpfVxyXG4gICAgICAgIHN0eWxlPXt7IHRyYW5zZm9ybTogYHRyYW5zbGF0ZVgoJHtwcm9wcy50cmFuc2xhdGVYfXB4KWAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHtwcm9wcy5jaGlsZHJlbn1cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gU2xpZGVyTWVudShwcm9wczogU2xpZGVyUHJvcHMpIHtcclxuICBjb25zdCB7IGNoaWxkcmVuLCBkYXRhLCB0cmFuc2xhdGVTdGVwID0gMTAwLCBpdGVtV2lkdGggPSA0MCB9ID0gcHJvcHM7XHJcbiAgY29uc3QgW2xpc3RXaWR0aCwgc2V0TGlzdFdpZHRoXSA9IHVzZVN0YXRlKDApO1xyXG4gIGNvbnN0IFt0cmFuc2xhdGVYLCBzZXRUcmFuc2xhdGVYXSA9IHVzZVN0YXRlKDApO1xyXG4gIGNvbnN0IFtsZWZ0SWNvbkNsaWNrLCByaWdodEljb25DbGlja10gPSB1c2VNZW1vKCgpID0+IHtcclxuICAgIGNvbnN0IGxpc3RJdGVtV2lkdGggPSBkYXRhLmxlbmd0aCAqIGl0ZW1XaWR0aDtcclxuICAgIGNvbnN0IGxlZnRJY29uQ2xpY2sgPSB0cmFuc2xhdGVYIDwgMDtcclxuICAgIGNvbnN0IHJpZ2h0SWNvbkNsaWNrID1cclxuICAgICAgdHJhbnNsYXRlWCA9PSAwXHJcbiAgICAgICAgPyBsaXN0SXRlbVdpZHRoID4gbGlzdFdpZHRoXHJcbiAgICAgICAgOiBsaXN0SXRlbVdpZHRoICsgdHJhbnNsYXRlWCA+IGxpc3RXaWR0aDtcclxuICAgIHJldHVybiBbbGVmdEljb25DbGljaywgcmlnaHRJY29uQ2xpY2tdO1xyXG4gIH0sIFtkYXRhLmxlbmd0aCwgdHJhbnNsYXRlWCwgbGlzdFdpZHRoXSk7XHJcbiAgY29uc3QgW2xlZnRJY29uVmlzaWJsZSwgcmlnaHRJY29uVmlzaWJsZV0gPSB1c2VNZW1vKCgpID0+IHtcclxuICAgIGNvbnN0IGxpc3RJdGVtV2lkdGggPSBkYXRhLmxlbmd0aCAqIGl0ZW1XaWR0aDtcclxuICAgIGNvbnN0IGlzTGVmdEljb25WaXNpYmxlID0gbGlzdEl0ZW1XaWR0aCA+IGxpc3RXaWR0aDtcclxuICAgIGNvbnN0IGlzUmlnaHRJY29uVmlzaWJsZSA9IGxpc3RJdGVtV2lkdGggPiBsaXN0V2lkdGg7XHJcbiAgICByZXR1cm4gW2lzTGVmdEljb25WaXNpYmxlLCBpc1JpZ2h0SWNvblZpc2libGVdO1xyXG4gIH0sIFtkYXRhLCB0cmFuc2xhdGVYLCBsaXN0V2lkdGhdKTtcclxuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IHRvdGFsbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICBcIm5zYy1zbGlkZXJtZW51LXRvdGFsLWxpc3RcIlxyXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIHNldExpc3RXaWR0aCh0b3RhbGxpc3QgPyB0b3RhbGxpc3Q/LmNsaWVudFdpZHRoIDogMCk7XHJcbiAgfSwgW2RhdGFdKTtcclxuXHJcbiAgY29uc3Qgb25JY29uQ2xpY2sgPSAoZGlyZWFjdGlvbjogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgbmV3VHJhbnNsYXRlWDogbnVtYmVyID0gdHJhbnNsYXRlWDtcclxuICAgIGNvbnN0IHRyYW5zbGF0ZURpc3RhbmNlOiBudW1iZXIgPVxyXG4gICAgICB0cmFuc2xhdGVTdGVwICogKGRpcmVhY3Rpb24gPT09IFwibGVmdFwiID8gMSA6IC0xKTtcclxuICAgIC8vIOeCueWHu+eureWktFxyXG4gICAgaWYgKHRyYW5zbGF0ZURpc3RhbmNlID4gMCkge1xyXG4gICAgICBpZiAoIWxlZnRJY29uQ2xpY2spIHJldHVybjtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbmV3VHJhbnNsYXRlWCArPSB0cmFuc2xhdGVEaXN0YW5jZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0cmFuc2xhdGVEaXN0YW5jZSA8IDApIHtcclxuICAgICAgaWYgKCFyaWdodEljb25DbGljaykgcmV0dXJuO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBuZXdUcmFuc2xhdGVYICs9IHRyYW5zbGF0ZURpc3RhbmNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzZXRUcmFuc2xhdGVYKG5ld1RyYW5zbGF0ZVgpO1xyXG4gIH07XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IHsgb25TdGF0ZUNoYW5nZSB9ID0gcHJvcHM7XHJcbiAgICBvblN0YXRlQ2hhbmdlICYmXHJcbiAgICAgIG9uU3RhdGVDaGFuZ2UoeyBsZWZ0Q2xpY2s6IGxlZnRJY29uQ2xpY2ssIHJpZ2h0Q2xpY2s6IHJpZ2h0SWNvbkNsaWNrIH0pO1xyXG4gIH0sIFtyaWdodEljb25DbGljaywgbGVmdEljb25DbGlja10pO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXNsaWRlcm1lbnUtdG90YWwtbmF2XCIpfT5cclxuICAgICAge2NoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA+IDBcclxuICAgICAgICA/IGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gTGVmdEFycm93ICYmIGxlZnRJY29uVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvbkljb25DbGljayhcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09IFJpZ2h0QXJyb3cgJiYgcmlnaHRJY29uVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvbkljb25DbGljayhcInJpZ2h0XCIpO1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSBDb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxDb250ZW50IHRyYW5zbGF0ZVg9e3RyYW5zbGF0ZVh9IGRhdGE9e2RhdGF9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgIDwvQ29udGVudD5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIDogY2hpbGRyZW59XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblNsaWRlck1lbnUuTGVmdEFycm93ID0gTGVmdEFycm93O1xyXG5TbGlkZXJNZW51LlJpZ2h0QXJyb3cgPSBSaWdodEFycm93O1xyXG5TbGlkZXJNZW51LkNvbnRlbnQgPSBDb250ZW50O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2xpZGVyTWVudTtcclxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLElBQUlDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ25FLE9BQU8sY0FBYztBQUNyQixTQUFTQyxPQUFPLFFBQVEsYUFBYTtBQUNyQyxNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQVNuQixNQUFNQyxTQUFTLEdBQUlDLEtBQVUsSUFBSztFQUNoQyxvQkFBT1IsS0FBQSxDQUFBUyxhQUFBLGNBQU1ELEtBQUssQ0FBQ0UsUUFBYyxDQUFDO0FBQ3BDLENBQUM7QUFFRCxNQUFNQyxVQUFVLEdBQUlILEtBQVUsSUFBSztFQUNqQyxvQkFBT1IsS0FBQSxDQUFB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
105
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsInVzZUVmZmVjdCIsInVzZU1lbW8iLCJ1c2VSZWYiLCJ1c2VTdGF0ZSIsImdldExlc3MiLCJzdHlsZXMiLCJMZWZ0QXJyb3ciLCJwcm9wcyIsImNyZWF0ZUVsZW1lbnQiLCJjaGlsZHJlbiIsIlJpZ2h0QXJyb3ciLCJDb250ZW50IiwiY2xhc3NOYW1lIiwiaWQiLCJzdHlsZSIsInRyYW5zZm9ybSIsImNvbmNhdCIsInRyYW5zbGF0ZVgiLCJTbGlkZXJNZW51IiwiZGF0YSIsInRyYW5zbGF0ZVN0ZXAiLCJpdGVtV2lkdGgiLCJsaXN0V2lkdGgiLCJzZXRMaXN0V2lkdGgiLCJzZXRUcmFuc2xhdGVYIiwibGVmdEljb25DbGljayIsInJpZ2h0SWNvbkNsaWNrIiwibGlzdEl0ZW1XaWR0aCIsImxlbmd0aCIsImNvbnNvbGUiLCJsb2ciLCJsZWZ0SWNvblZpc2libGUiLCJyaWdodEljb25WaXNpYmxlIiwiaXNMZWZ0SWNvblZpc2libGUiLCJpc1JpZ2h0SWNvblZpc2libGUiLCJyZWYiLCJ0b3RhbGxpc3QiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiY2xpZW50V2lkdGgiLCJvbkljb25DbGljayIsImRpcmVhY3Rpb24iLCJuZXdUcmFuc2xhdGVYIiwidHJhbnNsYXRlRGlzdGFuY2UiLCJvblN0YXRlQ2hhbmdlIiwibGVmdENsaWNrIiwicmlnaHRDbGljayIsIkFycmF5IiwiaXNBcnJheSIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInR5cGUiLCJvbkNsaWNrIiwia2V5Il0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS9zbGlkZXJtZW51L2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubGVzc1wiO1xyXG5pbXBvcnQgeyBnZXRMZXNzIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBTbGlkZXJQcm9wcyB7XHJcbiAgZGF0YTogQXJyYXk8T2JqZWN0PjtcclxuICBpdGVtV2lkdGg6IG51bWJlcjtcclxuICB0cmFuc2xhdGVTdGVwOiBudW1iZXI7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TdGF0ZUNoYW5nZT86IEZ1bmN0aW9uO1xyXG59XHJcblxyXG5jb25zdCBMZWZ0QXJyb3cgPSAocHJvcHM6IGFueSkgPT4ge1xyXG4gIHJldHVybiA8ZGl2Pntwcm9wcy5jaGlsZHJlbn08L2Rpdj47XHJcbn07XHJcblxyXG5jb25zdCBSaWdodEFycm93ID0gKHByb3BzOiBhbnkpID0+IHtcclxuICByZXR1cm4gPGRpdj57cHJvcHMuY2hpbGRyZW59PC9kaXY+O1xyXG59O1xyXG5cclxuY29uc3QgQ29udGVudCA9IChwcm9wczogYW55KSA9PiB7XHJcbiAgcmV0dXJuIChcclxuICAgIDxkaXZcclxuICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2Mtc2xpZGVybWVudS10YWItbmF2XCIpfVxyXG4gICAgICBpZD1cIm5zYy1zbGlkZXJtZW51LXRvdGFsLWxpc3RcIlxyXG4gICAgPlxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2Mtc2xpZGVybWVudS1uYXYtbGlzdFwiKX1cclxuICAgICAgICBzdHlsZT17eyB0cmFuc2Zvcm06IGB0cmFuc2xhdGVYKCR7cHJvcHMudHJhbnNsYXRlWH1weClgIH19XHJcbiAgICAgID5cclxuICAgICAgICB7cHJvcHMuY2hpbGRyZW59XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcbiAgKTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIFNsaWRlck1lbnUocHJvcHM6IFNsaWRlclByb3BzKSB7XHJcbiAgY29uc3QgeyBjaGlsZHJlbiwgZGF0YSwgdHJhbnNsYXRlU3RlcCA9IDEwMCwgaXRlbVdpZHRoID0gNDAgfSA9IHByb3BzO1xyXG4gIGNvbnN0IFtsaXN0V2lkdGgsIHNldExpc3RXaWR0aF0gPSB1c2VTdGF0ZSgwKTtcclxuICBjb25zdCBbdHJhbnNsYXRlWCwgc2V0VHJhbnNsYXRlWF0gPSB1c2VTdGF0ZSgwKTtcclxuICBjb25zdCBbbGVmdEljb25DbGljaywgcmlnaHRJY29uQ2xpY2tdID0gdXNlTWVtbygoKSA9PiB7XHJcbiAgICBjb25zdCBsaXN0SXRlbVdpZHRoID0gZGF0YS5sZW5ndGggKiBpdGVtV2lkdGg7XHJcbiAgICBjb25zb2xlLmxvZygnbGlzdEl0ZW1XaWR0aCcsbGlzdEl0ZW1XaWR0aClcclxuICAgIGNvbnNvbGUubG9nKCdsaXN0V2lkdGgnLGxpc3RXaWR0aClcclxuICAgIGNvbnN0IGxlZnRJY29uQ2xpY2sgPSB0cmFuc2xhdGVYIDwgMDtcclxuICAgIGNvbnN0IHJpZ2h0SWNvbkNsaWNrID1cclxuICAgICAgdHJhbnNsYXRlWCA9PSAwXHJcbiAgICAgICAgPyBsaXN0SXRlbVdpZHRoID4gbGlzdFdpZHRoXHJcbiAgICAgICAgOiBsaXN0SXRlbVdpZHRoICsgdHJhbnNsYXRlWCA+IGxpc3RXaWR0aDtcclxuICAgIHJldHVybiBbbGVmdEljb25DbGljaywgcmlnaHRJY29uQ2xpY2tdO1xyXG4gIH0sIFtkYXRhLmxlbmd0aCwgdHJhbnNsYXRlWCwgbGlzdFdpZHRoXSk7XHJcbiAgY29uc3QgW2xlZnRJY29uVmlzaWJsZSwgcmlnaHRJY29uVmlzaWJsZV0gPSB1c2VNZW1vKCgpID0+IHtcclxuICAgIGNvbnN0IGxpc3RJdGVtV2lkdGggPSBkYXRhLmxlbmd0aCAqIGl0ZW1XaWR0aDtcclxuICAgIGNvbnN0IGlzTGVmdEljb25WaXNpYmxlID0gbGlzdEl0ZW1XaWR0aCA+IGxpc3RXaWR0aDtcclxuICAgIGNvbnN0IGlzUmlnaHRJY29uVmlzaWJsZSA9IGxpc3RJdGVtV2lkdGggPiBsaXN0V2lkdGg7XHJcbiAgICByZXR1cm4gW2lzTGVmdEljb25WaXNpYmxlLCBpc1JpZ2h0SWNvblZpc2libGVdO1xyXG4gIH0sIFtkYXRhLCB0cmFuc2xhdGVYLCBsaXN0V2lkdGhdKTtcclxuICBjb25zdCByZWYgPSB1c2VSZWYobnVsbCk7XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IHRvdGFsbGlzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFxyXG4gICAgICBcIm5zYy1zbGlkZXJtZW51LXRvdGFsLWxpc3RcIlxyXG4gICAgKSBhcyBIVE1MRWxlbWVudDtcclxuICAgIGNvbnNvbGUubG9nKCd0b3RhbGxpc3QnLHRvdGFsbGlzdClcclxuICAgIHNldExpc3RXaWR0aCh0b3RhbGxpc3QgPyB0b3RhbGxpc3Q/LmNsaWVudFdpZHRoIDogMCk7XHJcbiAgfSwgW2RhdGFdKTtcclxuXHJcbiAgY29uc3Qgb25JY29uQ2xpY2sgPSAoZGlyZWFjdGlvbjogc3RyaW5nKSA9PiB7XHJcbiAgICBsZXQgbmV3VHJhbnNsYXRlWDogbnVtYmVyID0gdHJhbnNsYXRlWDtcclxuICAgIGNvbnN0IHRyYW5zbGF0ZURpc3RhbmNlOiBudW1iZXIgPVxyXG4gICAgICB0cmFuc2xhdGVTdGVwICogKGRpcmVhY3Rpb24gPT09IFwibGVmdFwiID8gMSA6IC0xKTtcclxuICAgIC8vIOeCueWHu+eureWktFxyXG4gICAgaWYgKHRyYW5zbGF0ZURpc3RhbmNlID4gMCkge1xyXG4gICAgICBpZiAoIWxlZnRJY29uQ2xpY2spIHJldHVybjtcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbmV3VHJhbnNsYXRlWCArPSB0cmFuc2xhdGVEaXN0YW5jZTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmICh0cmFuc2xhdGVEaXN0YW5jZSA8IDApIHtcclxuICAgICAgaWYgKCFyaWdodEljb25DbGljaykgcmV0dXJuO1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBuZXdUcmFuc2xhdGVYICs9IHRyYW5zbGF0ZURpc3RhbmNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzZXRUcmFuc2xhdGVYKG5ld1RyYW5zbGF0ZVgpO1xyXG4gIH07XHJcbiAgdXNlRWZmZWN0KCgpID0+IHtcclxuICAgIGNvbnN0IHsgb25TdGF0ZUNoYW5nZSB9ID0gcHJvcHM7XHJcbiAgICBvblN0YXRlQ2hhbmdlICYmXHJcbiAgICAgIG9uU3RhdGVDaGFuZ2UoeyBsZWZ0Q2xpY2s6IGxlZnRJY29uQ2xpY2ssIHJpZ2h0Q2xpY2s6IHJpZ2h0SWNvbkNsaWNrIH0pO1xyXG4gIH0sIFtyaWdodEljb25DbGljaywgbGVmdEljb25DbGlja10pO1xyXG4gIHJldHVybiAoXHJcbiAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLXNsaWRlcm1lbnUtdG90YWwtbmF2XCIpfT5cclxuICAgICAge2NoaWxkcmVuICYmIEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pICYmIGNoaWxkcmVuLmxlbmd0aCA+IDBcclxuICAgICAgICA/IGNoaWxkcmVuLm1hcCgoaXRlbSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PT0gTGVmdEFycm93ICYmIGxlZnRJY29uVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvbkljb25DbGljayhcImxlZnRcIik7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtLnR5cGUgPT09IFJpZ2h0QXJyb3cgJiYgcmlnaHRJY29uVmlzaWJsZSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBvbkljb25DbGljayhcInJpZ2h0XCIpO1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaXRlbS50eXBlID09PSBDb250ZW50KSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxDb250ZW50IHRyYW5zbGF0ZVg9e3RyYW5zbGF0ZVh9IGRhdGE9e2RhdGF9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcy5jaGlsZHJlbn1cclxuICAgICAgICAgICAgICAgIDwvQ29udGVudD5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIDogY2hpbGRyZW59XHJcbiAgICA8L2Rpdj5cclxuICApO1xyXG59XHJcblNsaWRlck1lbnUuTGVmdEFycm93ID0gTGVmdEFycm93O1xyXG5TbGlkZXJNZW51LlJpZ2h0QXJyb3cgPSBSaWdodEFycm93O1xyXG5TbGlkZXJNZW51LkNvbnRlbnQgPSBDb250ZW50O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgU2xpZGVyTWVudTtcclxuIl0sIm1hcHBpbmdzIjoiQUFBQSxPQUFPQSxLQUFLLElBQUlDLFNBQVMsRUFBRUMsT0FBTyxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsUUFBUSxPQUFPO0FBQ25FLE9BQU8sY0FBYztBQUNyQixTQUFTQyxPQUFPLFFBQVEsYUFBYTtBQUNyQyxNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQVNu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
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useEffect","useMemo","useRef","useState","getLess","styles","LeftArrow","props","createElement","children","RightArrow","Content","className","id","style","transform","concat","translateX","SliderMenu","data","translateStep","itemWidth","listWidth","setListWidth","setTranslateX","leftIconClick","rightIconClick","listItemWidth","length","leftIconVisible","rightIconVisible","isLeftIconVisible","isRightIconVisible","ref","totallist","document","getElementById","clientWidth","onIconClick","direaction","newTranslateX","translateDistance","onStateChange","leftClick","rightClick","Array","isArray","map","item","index","type","onClick","key"],"sources":["../../../src/components/base/slidermenu/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport \"./index.less\";\r\nimport { getLess } from \"../../utils\";\r\nconst styles = null;\r\ninterface SliderProps {\r\n data: Array<Object>;\r\n itemWidth: number;\r\n translateStep: number;\r\n children?: React.ReactNode;\r\n onStateChange?: Function;\r\n}\r\n\r\nconst LeftArrow = (props: any) => {\r\n return <div>{props.children}</div>;\r\n};\r\n\r\nconst RightArrow = (props: any) => {\r\n return <div>{props.children}</div>;\r\n};\r\n\r\nconst Content = (props: any) => {\r\n return (\r\n <div\r\n className={getLess(styles, \"nsc-slidermenu-tab-nav\")}\r\n id=\"nsc-slidermenu-total-list\"\r\n >\r\n <div\r\n className={getLess(styles, \"nsc-slidermenu-nav-list\")}\r\n style={{ transform: `translateX(${props.translateX}px)` }}\r\n >\r\n {props.children}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nfunction SliderMenu(props: SliderProps) {\r\n const { children, data, translateStep = 100, itemWidth = 40 } = props;\r\n const [listWidth, setListWidth] = useState(0);\r\n const [translateX, setTranslateX] = useState(0);\r\n const [leftIconClick, rightIconClick] = useMemo(() => {\r\n const listItemWidth = data.length * itemWidth;\r\n const leftIconClick = translateX < 0;\r\n const rightIconClick =\r\n translateX == 0\r\n ? listItemWidth > listWidth\r\n : listItemWidth + translateX > listWidth;\r\n return [leftIconClick, rightIconClick];\r\n }, [data.length, translateX, listWidth]);\r\n const [leftIconVisible, rightIconVisible] = useMemo(() => {\r\n const listItemWidth = data.length * itemWidth;\r\n const isLeftIconVisible = listItemWidth > listWidth;\r\n const isRightIconVisible = listItemWidth > listWidth;\r\n return [isLeftIconVisible, isRightIconVisible];\r\n }, [data, translateX, listWidth]);\r\n const ref = useRef(null);\r\n useEffect(() => {\r\n const totallist = document.getElementById(\r\n \"nsc-slidermenu-total-list\"\r\n ) as HTMLElement;\r\n setListWidth(totallist ? totallist?.clientWidth : 0);\r\n }, [data]);\r\n\r\n const onIconClick = (direaction: string) => {\r\n let newTranslateX: number = translateX;\r\n const translateDistance: number =\r\n translateStep * (direaction === \"left\" ? 1 : -1);\r\n // 点击箭头\r\n if (translateDistance > 0) {\r\n if (!leftIconClick) return;\r\n else {\r\n newTranslateX += translateDistance;\r\n }\r\n } else if (translateDistance < 0) {\r\n if (!rightIconClick) return;\r\n else {\r\n newTranslateX += translateDistance;\r\n }\r\n }\r\n setTranslateX(newTranslateX);\r\n };\r\n useEffect(() => {\r\n const { onStateChange } = props;\r\n onStateChange &&\r\n onStateChange({ leftClick: leftIconClick, rightClick: rightIconClick });\r\n }, [rightIconClick, leftIconClick]);\r\n return (\r\n <div className={getLess(styles, \"nsc-slidermenu-total-nav\")}>\r\n {children && Array.isArray(children) && children.length > 0\r\n ? children.map((item, index) => {\r\n if (item.type === LeftArrow && leftIconVisible) {\r\n return (\r\n <div\r\n onClick={() => {\r\n onIconClick(\"left\");\r\n }}\r\n key={index}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (item.type === RightArrow && rightIconVisible) {\r\n return (\r\n <div\r\n onClick={() => {\r\n onIconClick(\"right\");\r\n }}\r\n key={index}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (item.type === Content) {\r\n return (\r\n <Content translateX={translateX} data={data} key={index}>\r\n {item.props.children}\r\n </Content>\r\n );\r\n }\r\n })\r\n : children}\r\n </div>\r\n );\r\n}\r\nSliderMenu.LeftArrow = LeftArrow;\r\nSliderMenu.RightArrow = RightArrow;\r\nSliderMenu.Content = Content;\r\n\r\nexport default SliderMenu;\r\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"index.js","names":["React","useEffect","useMemo","useRef","useState","getLess","styles","LeftArrow","props","createElement","children","RightArrow","Content","className","id","style","transform","concat","translateX","SliderMenu","data","translateStep","itemWidth","listWidth","setListWidth","setTranslateX","leftIconClick","rightIconClick","listItemWidth","length","console","log","leftIconVisible","rightIconVisible","isLeftIconVisible","isRightIconVisible","ref","totallist","document","getElementById","clientWidth","onIconClick","direaction","newTranslateX","translateDistance","onStateChange","leftClick","rightClick","Array","isArray","map","item","index","type","onClick","key"],"sources":["../../../src/components/base/slidermenu/index.tsx"],"sourcesContent":["import React, { useEffect, useMemo, useRef, useState } from \"react\";\r\nimport \"./index.less\";\r\nimport { getLess } from \"../../utils\";\r\nconst styles = null;\r\ninterface SliderProps {\r\n data: Array<Object>;\r\n itemWidth: number;\r\n translateStep: number;\r\n children?: React.ReactNode;\r\n onStateChange?: Function;\r\n}\r\n\r\nconst LeftArrow = (props: any) => {\r\n return <div>{props.children}</div>;\r\n};\r\n\r\nconst RightArrow = (props: any) => {\r\n return <div>{props.children}</div>;\r\n};\r\n\r\nconst Content = (props: any) => {\r\n return (\r\n <div\r\n className={getLess(styles, \"nsc-slidermenu-tab-nav\")}\r\n id=\"nsc-slidermenu-total-list\"\r\n >\r\n <div\r\n className={getLess(styles, \"nsc-slidermenu-nav-list\")}\r\n style={{ transform: `translateX(${props.translateX}px)` }}\r\n >\r\n {props.children}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nfunction SliderMenu(props: SliderProps) {\r\n const { children, data, translateStep = 100, itemWidth = 40 } = props;\r\n const [listWidth, setListWidth] = useState(0);\r\n const [translateX, setTranslateX] = useState(0);\r\n const [leftIconClick, rightIconClick] = useMemo(() => {\r\n const listItemWidth = data.length * itemWidth;\r\n console.log('listItemWidth',listItemWidth)\r\n console.log('listWidth',listWidth)\r\n const leftIconClick = translateX < 0;\r\n const rightIconClick =\r\n translateX == 0\r\n ? listItemWidth > listWidth\r\n : listItemWidth + translateX > listWidth;\r\n return [leftIconClick, rightIconClick];\r\n }, [data.length, translateX, listWidth]);\r\n const [leftIconVisible, rightIconVisible] = useMemo(() => {\r\n const listItemWidth = data.length * itemWidth;\r\n const isLeftIconVisible = listItemWidth > listWidth;\r\n const isRightIconVisible = listItemWidth > listWidth;\r\n return [isLeftIconVisible, isRightIconVisible];\r\n }, [data, translateX, listWidth]);\r\n const ref = useRef(null);\r\n useEffect(() => {\r\n const totallist = document.getElementById(\r\n \"nsc-slidermenu-total-list\"\r\n ) as HTMLElement;\r\n console.log('totallist',totallist)\r\n setListWidth(totallist ? totallist?.clientWidth : 0);\r\n }, [data]);\r\n\r\n const onIconClick = (direaction: string) => {\r\n let newTranslateX: number = translateX;\r\n const translateDistance: number =\r\n translateStep * (direaction === \"left\" ? 1 : -1);\r\n // 点击箭头\r\n if (translateDistance > 0) {\r\n if (!leftIconClick) return;\r\n else {\r\n newTranslateX += translateDistance;\r\n }\r\n } else if (translateDistance < 0) {\r\n if (!rightIconClick) return;\r\n else {\r\n newTranslateX += translateDistance;\r\n }\r\n }\r\n setTranslateX(newTranslateX);\r\n };\r\n useEffect(() => {\r\n const { onStateChange } = props;\r\n onStateChange &&\r\n onStateChange({ leftClick: leftIconClick, rightClick: rightIconClick });\r\n }, [rightIconClick, leftIconClick]);\r\n return (\r\n <div className={getLess(styles, \"nsc-slidermenu-total-nav\")}>\r\n {children && Array.isArray(children) && children.length > 0\r\n ? children.map((item, index) => {\r\n if (item.type === LeftArrow && leftIconVisible) {\r\n return (\r\n <div\r\n onClick={() => {\r\n onIconClick(\"left\");\r\n }}\r\n key={index}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (item.type === RightArrow && rightIconVisible) {\r\n return (\r\n <div\r\n onClick={() => {\r\n onIconClick(\"right\");\r\n }}\r\n key={index}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (item.type === Content) {\r\n return (\r\n <Content translateX={translateX} data={data} key={index}>\r\n {item.props.children}\r\n </Content>\r\n );\r\n }\r\n })\r\n : children}\r\n </div>\r\n );\r\n}\r\nSliderMenu.LeftArrow = LeftArrow;\r\nSliderMenu.RightArrow = RightArrow;\r\nSliderMenu.Content = Content;\r\n\r\nexport default SliderMenu;\r\n"],"mappings":"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","ignoreList":[]}
@@ -235,7 +235,7 @@ const withCustomUpload = Component => {
235
235
  } = this.props;
236
236
  const names = file.name.split(".");
237
237
  const suffix = names[names.length - 1];
238
- if (allowFileSuffix.indexOf(suffix) > -1) {
238
+ if (allowFileSuffix.indexOf(suffix) > -1 || allowFileSuffix.indexOf(suffix.toLowerCase()) > -1 || allowFileSuffix.indexOf(suffix.toUperrcase()) > -1) {
239
239
  return true;
240
240
  }
241
241
  return false;
@@ -444,4 +444,4 @@ const NscUpload = withCustomUpload(_Upload);
444
444
  const NscUploadDragger = withCustomUpload(_Upload.Dragger);
445
445
  NscUpload.Dragger = NscUploadDragger;
446
446
  export default NscUpload;
447
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJwcmV2aWV3SW1hZ2UiLCJ3aXRoQ3VzdG9tVXBsb2FkIiwiQ29tcG9uZW50IiwiUHVyZUNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiZmlsZUxpc3QiLCJ2aWV3SWQiLCJmaWxlTGlzdFN0b3JlIiwiZmlsZU5hbWVzIiwib3B0aW9ucyIsIm9uQ29tcGxldGUiLCJvblByb2Nlc3MiLCJzbGljZVNpemUiLCJuZXdWZXJzaW9uIiwicHJvcHMiLCJvblByb2dyZXNzIiwidG90YWxQcm9ncmVzcyIsInBlcmNlbnQiLCJyZXMiLCJwYXJ0U2l6ZSIsInJlcXVlc3RDb25maWciLCJ1cGxvYWRJbmdTaXplIiwiZmlsZUlkIiwiSW1nUmVzIiwiY29kZSIsImRhdGEiLCJhdHRhY2hJZCIsIm9uU3VjY2VzcyIsImxpc3RUeXBlIiwib25FcnJvciIsInVwbG9hZEluZ0xpc3QiLCJwdXNoIiwic3RhdHVzIiwidXJsIiwiZSIsImNvbXBvbmVudERpZE1vdW50IiwiY29udmVydEZpbGVMaXN0IiwibGlzdCIsIm5ld0ZpbGVMaXN0Iiwib2xkTGlzdCIsInNldFN0YXRlIiwiaSIsImxlbmd0aCIsIml0ZW0iLCJ0ZW1wIiwiX29iamVjdFNwcmVhZCIsIm5hbWUiLCJmaWxlTmFtZSIsInR5cGUiLCJzaXplIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJlUHJvcHMiLCJwcmVTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZSIsImdldEZpbGVMaXN0Iiwic2V0RmlsZUxpc3QiLCJiZWZvcmVVcGxvYWQiLCJvZmlsZUxpc3QiLCJtYXhTaXplIiwiYWxsb3dGaWxlU3VmZml4IiwiY2hlY2tTYW1lRmlsZSIsIm1heENvdW50Iiwic2hvd1VwbG9hZExpc3QiLCJwcm9wc0xpc3QiLCJvbkxpc3RDaGFuZ2UiLCJjaGVja0ZpbGVUeXBlIiwiZXJyb3IiLCJjb25jYXQiLCJjaGVja0xpc3QiLCJtYXAiLCJpbmRleE9mIiwibmV3TGlzdCIsInVpZCIsInNwbGljZSIsInVwbG9hZFNpemUiLCJuYW1lcyIsInNwbGl0Iiwic3VmZml4IiwiX3JlZiIsIm5ld0ZpbGUiLCJmaWxlcyIsImluZGV4Iiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInByZWZpeCIsIm9uRGVsZXRlIiwicmVuZGVyIiwiZmlsZUNhcmQiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1ByZXZpZXdJY29uIiwic2hvd1JlbW92ZUljb24iLCJkb3dubG9hZEljb24iLCJyZW1vdmVJY29uIiwicHJldmlld0ljb24iLCJuZXdwcm9wcyIsImRlZmF1bHRQcm9wcyIsImN1c3RvbVJlcXVlc3QiLCJiaW5kIiwibXVsdGlwbGUiLCJpdGVtUmVuZGVyIiwib3JpZ2luTm9kZSIsImN1cnJGaWxlTGlzdCIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJvbkNsaWNrIiwib25QcmV2aWV3Iiwic3R5bGUiLCJjdXJzb3IiLCJvbkRvd25sb2FkIiwib25SZW1vdmUiLCJ3aWR0aCIsIkZyYWdtZW50IiwiX2V4dGVuZHMiLCJOc2NVcGxvYWQiLCJfVXBsb2FkIiwiTnNjVXBsb2FkRHJhZ2dlciIsIkRyYWdnZXIiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9iYXNlL3VwbG9hZC9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCB7IFVwbG9hZCwgVXBsb2FkUHJvcHMgfSBmcm9tIFwiYW50ZFwiO1xyXG5pbXBvcnQgZmlsZSBmcm9tIFwibnNjLWZpbGVcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uL21lc3NhZ2VcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IHsgZ2V0TGVzcyB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgc3R5bGVzIGZyb20gXCIuL2luZGV4Lmxlc3NcIjtcclxuaW1wb3J0IGNscyBmcm9tIFwiY2xhc3NuYW1lc1wiO1xyXG5pbXBvcnQgRmlsZUljb24gZnJvbSBcIi4uL2NvbW1vbi9GaWxlSWNvblwiO1xyXG5pbXBvcnQge1xyXG4gIERlbGV0ZU91dGxpbmVkLFxyXG4gIERvd25sb2FkT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmNvbnN0IHsgdXBsb2FkLCBkb3dubG9hZCwgcHJldmlld0RvY3VtZW50LCBwcmV2aWV3SW1hZ2UgfSA9IGZpbGU7XHJcblxyXG5pbnRlcmZhY2UgSVVwbG9hZFByb3BzIGV4dGVuZHMgVXBsb2FkUHJvcHMge1xyXG4gIHNsaWNlU2l6ZT86IG51bWJlcjtcclxuICBtYXhTaXplPzogbnVtYmVyIHwgYm9vbGVhbjtcclxuICBvblByb2Nlc3M/OiAocHJvY2VzcykgPT4gdm9pZDtcclxuICBvbkNvbXBsZXRlPzogKHsgZmlsZSwgZmlsZUlkLCBzdGF0dXMgfSkgPT4gdm9pZDtcclxuICBhbGxvd0ZpbGVTdWZmaXg/OiBBcnJheTxTdHJpbmc+OyAvL+WFgeiuuOS4iuS8oOaJqeWxleWQjSzkuI3luKYuXHJcbiAgdXNlRGVmYXVsdExpc3Q/OiBib29sZWFuOyAvL+aYr+WQpuS9v+eUqOm7mOiupOeahGZpbGVMaXN0XHJcbiAgZmlsZUNhcmQ/OiBib29sZWFuO1xyXG4gIG9uTGlzdENoYW5nZT86IGFueTtcclxuICBjaGVja1NhbWVGaWxlPzogYm9vbGVhbjtcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIG5ld1ZlcnNpb24/OiBib29sZWFuO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jb25zdCB3aXRoQ3VzdG9tVXBsb2FkID0gKENvbXBvbmVudCkgPT4ge1xyXG4gIC8vIOi/lOWbnuS4gOS4quexu+e7hOS7tlxyXG4gIHJldHVybiBjbGFzcyBleHRlbmRzIFJlYWN0LlB1cmVDb21wb25lbnQ8SVVwbG9hZFByb3BzLCBhbnk+IHtcclxuICAgIHN0YXRlID0ge1xyXG4gICAgICBmaWxlTGlzdDogW10sXHJcbiAgICAgIHZpZXdJZDogXCJcIixcclxuICAgICAgZmlsZUxpc3RTdG9yZTogW10sXHJcbiAgICAgIGZpbGVOYW1lczogW10sXHJcbiAgICB9O1xyXG4gICAgdXBsb2FkSW5nU2l6ZSA9IDA7XHJcbiAgICB1cGxvYWRTaXplID0gMDtcclxuICAgIHVwbG9hZEluZ0xpc3QgPSBbXTtcclxuICAgIHByZXZpZXdVcmwgPSB7fTtcclxuICAgIGNvbXBvbmVudERpZE1vdW50KCkge1xyXG4gICAgICBpZiAodGhpcy5wcm9wcy5maWxlTGlzdCkge1xyXG4gICAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KHRoaXMucHJvcHMuZmlsZUxpc3QpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb252ZXJ0RmlsZUxpc3QobGlzdD86IEFycmF5PE9iamVjdD4pIHtcclxuICAgICAgY29uc3QgeyBmaWxlTGlzdCwgbGlzdFR5cGUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld0ZpbGVMaXN0ID0gW107XHJcbiAgICAgIGxldCBvbGRMaXN0ID0gbGlzdCA/IGxpc3QgOiBmaWxlTGlzdDtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBmaWxlTGlzdFN0b3JlOiBbLi4uZmlsZUxpc3RdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgYXN5bmMgKCkgPT4ge1xyXG4gICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvbGRMaXN0Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtOiBhbnkgPSBvbGRMaXN0W2ldO1xyXG4gICAgICAgICAgICBsZXQgdGVtcCA9IHtcclxuICAgICAgICAgICAgICAuLi5pdGVtLFxyXG4gICAgICAgICAgICAgIHN0YXR1czogaXRlbS5zdGF0dXMsXHJcbiAgICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgICAgICAgICB1cmw6IGl0ZW0udXJsLFxyXG4gICAgICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICAgICAgaWYgKGxpc3RUeXBlID09IFwicGljdHVyZS1jYXJkXCIgJiYgIWl0ZW0udXJsICYmIGl0ZW0uZmlsZUlkKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHJlczogYW55ID0gYXdhaXQgcHJldmlld0ltYWdlKFxyXG4gICAgICAgICAgICAgICAgaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLnJlcXVlc3RDb25maWdcclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgICAgIHRlbXAudXJsID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG5ld0ZpbGVMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgZmlsZUxpc3Q6IFsuLi5uZXdGaWxlTGlzdF0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgICBjb21wb25lbnREaWRVcGRhdGUocHJlUHJvcHMsIHByZVN0YXRlKSB7XHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmZpbGVMaXN0KSB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5wcm9wcy5maWxlTGlzdCkgIT09XHJcbiAgICAgICAgICBKU09OLnN0cmluZ2lmeSh0aGlzLnN0YXRlLmZpbGVMaXN0U3RvcmUpXHJcbiAgICAgICAgKSB7XHJcbiAgICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCh0aGlzLnByb3BzLmZpbGVMaXN0KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGdldEZpbGVMaXN0KCkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdGF0ZS5maWxlTGlzdDtcclxuICAgIH1cclxuICAgIHNldEZpbGVMaXN0KGZpbGVMaXN0OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICAgIHRoaXMuY29udmVydEZpbGVMaXN0KGZpbGVMaXN0KTtcclxuICAgIH1cclxuICAgIGFzeW5jIGJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpIHtcclxuICAgICAgbGV0IHtcclxuICAgICAgICBtYXhTaXplID0gMTAwLFxyXG4gICAgICAgIGFsbG93RmlsZVN1ZmZpeCxcclxuICAgICAgICBjaGVja1NhbWVGaWxlID0gdHJ1ZSxcclxuICAgICAgICBtYXhDb3VudCxcclxuICAgICAgICBzaG93VXBsb2FkTGlzdCxcclxuICAgICAgICBmaWxlTGlzdDogcHJvcHNMaXN0LFxyXG4gICAgICAgIG9uTGlzdENoYW5nZSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGxldCB7IGZpbGVMaXN0LCBmaWxlTGlzdFN0b3JlIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBsZXQgc2l6ZTogbnVtYmVyO1xyXG4gICAgICBpZiAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoZmlsZSkpIHtcclxuICAgICAgICBtZXNzYWdlLmVycm9yKFxyXG4gICAgICAgICAgYCR7ZmlsZS5uYW1lfeaWh+S7tuexu+Wei+S4jeWFgeiuuOS4iuS8oO+8jOivt+S4iuS8oOWQjue8gOS4uiR7YWxsb3dGaWxlU3VmZml4feeahOexu+Wei+aWh+S7tu+8gWBcclxuICAgICAgICApO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBpZiAobWF4U2l6ZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICBpZiAobWF4U2l6ZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgbWF4U2l6ZSA9IDEwMDtcclxuICAgICAgICB9XHJcbiAgICAgICAgc2l6ZSA9IG1heFNpemUgKiAxMDI0ICogMTAyNDtcclxuICAgICAgICBpZiAoc2l6ZSA8IGZpbGUuc2l6ZSkge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcihgJHtmaWxlLm5hbWV95paH5Lu25aSn5bCP6LaF6L+HJHttYXhTaXplfU3vvIzor7fph43mlrDkuIrkvKDvvIFgKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGZpbGVOYW1lcyA9IFtdO1xyXG4gICAgICBpZiAoY2hlY2tTYW1lRmlsZSkge1xyXG4gICAgICAgIGNvbnN0IGNoZWNrTGlzdCA9IHRoaXMucHJvcHMuZmlsZUxpc3QgPyBmaWxlTGlzdFN0b3JlIDogZmlsZUxpc3Q7XHJcbiAgICAgICAgY2hlY2tMaXN0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgICAgZmlsZU5hbWVzLnB1c2goaXRlbS5uYW1lIHx8IGl0ZW0uZmlsZU5hbWUpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGlmIChmaWxlTmFtZXMuaW5kZXhPZihmaWxlLm5hbWUpID4gLTEgJiYgc2hvd1VwbG9hZExpc3QgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgICBtZXNzYWdlLmVycm9yKGDmlofku7Yke2ZpbGUubmFtZX3lt7LlnKjkuIrkvKDliJfooajkuK3vvIzor7fph43mlrDpgInmi6nmlofku7bvvIFgKTtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIGlmICh0aGlzLnByb3BzLmJlZm9yZVVwbG9hZCkge1xyXG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMucHJvcHMuYmVmb3JlVXBsb2FkKGZpbGUsIG9maWxlTGlzdCk7XHJcbiAgICAgICAgaWYgKHJlcyA9PT0gZmFsc2UpIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgbmV3TGlzdCA9IFsuLi5maWxlTGlzdF07XHJcbiAgICAgIG9maWxlTGlzdC5tYXAoYXN5bmMgKGl0ZW0pID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICAhKFxyXG4gICAgICAgICAgICAoYWxsb3dGaWxlU3VmZml4ICYmICF0aGlzLmNoZWNrRmlsZVR5cGUoaXRlbSkpIHx8XHJcbiAgICAgICAgICAgIHNpemUgPCBpdGVtLnNpemUgfHxcclxuICAgICAgICAgICAgKGNoZWNrU2FtZUZpbGUgJiYgZmlsZU5hbWVzLmluZGV4T2YoaXRlbS5uYW1lKSA+IC0xKVxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgY29uc3QgdGVtcCA9IHtcclxuICAgICAgICAgICAgZmlsZU5hbWU6IGl0ZW0ubmFtZSxcclxuICAgICAgICAgICAgcGVyY2VudDogMCxcclxuICAgICAgICAgICAgc3RhdHVzOiBcInVwbG9hZGluZ1wiLFxyXG4gICAgICAgICAgICB1aWQ6IGl0ZW0udWlkLFxyXG4gICAgICAgICAgICBuYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgc2l6ZTogaXRlbS5zaXplLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIG5ld0xpc3QucHVzaCh0ZW1wKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgaWYgKG1heENvdW50ICYmIG5ld0xpc3QubGVuZ3RoID4gbWF4Q291bnQpIHtcclxuICAgICAgICBsZXQgbGVuZ3RoID0gbmV3TGlzdC5sZW5ndGggLSBtYXhDb3VudDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBuZXdMaXN0LnNwbGljZSgwLCAxKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBuZXdMaXN0IH0sKCk9PntcclxuICAgICAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKG5ld0xpc3QpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy51cGxvYWRTaXplID0gb2ZpbGVMaXN0Lmxlbmd0aDtcclxuICAgIH1cclxuICAgIGNoZWNrRmlsZVR5cGUoZmlsZSkge1xyXG4gICAgICBjb25zdCB7IGFsbG93RmlsZVN1ZmZpeCB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmFtZXMgPSBmaWxlLm5hbWUuc3BsaXQoXCIuXCIpO1xyXG4gICAgICBjb25zdCBzdWZmaXggPSBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXTtcclxuICAgICAgaWYgKGFsbG93RmlsZVN1ZmZpeC5pbmRleE9mKHN1ZmZpeCkgPiAtMSkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIG9uUHJvY2Vzcyh7IHBlcmNlbnQsIGZpbGUgfTogYW55KSB7XHJcbiAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgICAgZmlsZUxpc3QubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgaWYgKGZpbGUudWlkID09IGl0ZW0udWlkKSB7XHJcbiAgICAgICAgICBuZXdGaWxlLnBlcmNlbnQgPSBwZXJjZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgICAgfSwoKT0+e1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UoZmlsZUxpc3QpO1xyXG4gICAgICB9KTtcclxuICAgXHJcbiAgICB9XHJcbiAgICBhc3luYyBvbkNvbXBsZXRlKGZpbGVzKSB7XHJcbiAgICAgIHRoaXMudXBsb2FkSW5nU2l6ZSA9IDA7XHJcbiAgICAgIHRoaXMudXBsb2FkU2l6ZSA9IDA7XHJcbiAgICAgIHRoaXMudXBsb2FkSW5nTGlzdCA9IFtdO1xyXG4gICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCB7IG5ld1ZlcnNpb24gPSB0cnVlLCByZXF1ZXN0Q29uZmlnID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld0xpc3Q6IGFueSA9IFtdO1xyXG4gICAgICBmaWxlTGlzdC5tYXAoYXN5bmMgKGl0ZW06IGFueSwgaW5kZXgpID0+IHtcclxuICAgICAgICBjb25zdCBuZXdGaWxlID0geyAuLi5pdGVtIH07XHJcbiAgICAgICAgZmlsZXMubWFwKGFzeW5jIChmaWxlKSA9PiB7XHJcbiAgICAgICAgICBpZiAoZmlsZS5maWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgICAgICBuZXdGaWxlLnN0YXR1cyA9IGZpbGUuc3RhdHVzID09IFwic3VjY2Vzc1wiID8gXCJkb25lXCIgOiBmaWxlLnN0YXR1cztcclxuICAgICAgICAgICAgbmV3RmlsZS5maWxlSWQgPSBmaWxlLmZpbGVJZDtcclxuICAgICAgICAgICAgbmV3RmlsZS51cmwgPSBmaWxlLnVybDtcclxuICAgICAgICAgICAgaWYgKCFuZXdWZXJzaW9uKSB7XHJcbiAgICAgICAgICAgICAgbGV0IHVybCA9IGAvanF1aWNrLXJlc291cmNlL29zcy9lbmRwb2ludC9kb3dubG9hZC1maWxlcz9hdHRhY2hJZD0ke1xyXG4gICAgICAgICAgICAgICAgZmlsZS5maWxlSWRcclxuICAgICAgICAgICAgICB9Jl90cGs9JHt3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oXCJ0b2tlblwiKX1gO1xyXG4gICAgICAgICAgICAgIG5ld0ZpbGUudXJsID0gcmVxdWVzdENvbmZpZy5wcmVmaXhcclxuICAgICAgICAgICAgICAgID8gcmVxdWVzdENvbmZpZy5wcmVmaXggKyB1cmxcclxuICAgICAgICAgICAgICAgIDogXCIvYXBpXCIgKyB1cmw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgICBuZXdMaXN0LnB1c2gobmV3RmlsZSk7XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWxlTGlzdDogWy4uLm5ld0xpc3RdLFxyXG4gICAgICB9LCgpPT57XHJcbiAgICAgICAgY29uc3QgeyBvbkxpc3RDaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBjdXN0b21SZXF1ZXN0ID0gYXN5bmMgKG9wdGlvbnMpID0+IHtcclxuICAgICAgY29uc3QgZmlsZSA9IG9wdGlvbnMuZmlsZTtcclxuICAgICAgY29uc3Qge1xyXG4gICAgICAgIG9uQ29tcGxldGUsXHJcbiAgICAgICAgb25Qcm9jZXNzLFxyXG4gICAgICAgIHNsaWNlU2l6ZSxcclxuICAgICAgICBuZXdWZXJzaW9uID0gdHJ1ZSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG9uUHJvZ3Jlc3MgPSAodG90YWxQcm9ncmVzczogYW55KSA9PiB7XHJcbiAgICAgICAgb3B0aW9ucy5vblByb2dyZXNzKHsgcGVyY2VudDogdG90YWxQcm9ncmVzcyB9LCBmaWxlKTtcclxuICAgICAgICB0aGlzLm9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgICAgb25Qcm9jZXNzICYmIG9uUHJvY2Vzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MsIGZpbGU6IGZpbGUgfSk7XHJcbiAgICAgIH07XHJcbiAgICAgIHRyeSB7XHJcbiAgICAgICAgY29uc3QgcmVzOiBhbnkgPSBhd2FpdCB1cGxvYWQoXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIGZpbGU6IGZpbGUsXHJcbiAgICAgICAgICAgIG9uUHJvZ3Jlc3M6IG9uUHJvZ3Jlc3MsXHJcbiAgICAgICAgICAgIHBhcnRTaXplOiBzbGljZVNpemUsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgdGhpcy5wcm9wcy5yZXF1ZXN0Q29uZmlnXHJcbiAgICAgICAgKTtcclxuICAgICAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSB0aGlzLnVwbG9hZEluZ1NpemUgKyAxO1xyXG4gICAgICAgIGxldCBmaWxlSWQgPSBudWxsO1xyXG4gICAgICAgIGxldCBJbWdSZXMgPSBudWxsO1xyXG4gICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgIGZpbGVJZCA9IHJlcy5kYXRhLmF0dGFjaElkO1xyXG4gICAgICAgICAgb3B0aW9ucy5vblN1Y2Nlc3MoKTtcclxuICAgICAgICAgIGlmICh0aGlzLnByb3BzLmxpc3RUeXBlID09IFwicGljdHVyZS1jYXJkXCIgJiYgbmV3VmVyc2lvbikge1xyXG4gICAgICAgICAgICBJbWdSZXMgPSBhd2FpdCBwcmV2aWV3SW1hZ2UoZmlsZUlkLCB0aGlzLnByb3BzLnJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy51cGxvYWRJbmdMaXN0LnB1c2goe1xyXG4gICAgICAgICAgZmlsZTogb3B0aW9ucy5maWxlLFxyXG4gICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgICAgdXJsOiBJbWdSZXMgPyBJbWdSZXMuZGF0YSA6IG51bGwsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ2N1c3RvbVJlcXVlc3QtdXBsb2FkU2l6ZScsdGhpcy51cGxvYWRTaXplKVxyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdjdXN0b21SZXF1ZXN0LXVwbG9hZEluZ1NpemUnLHRoaXMudXBsb2FkSW5nU2l6ZSlcclxuICAgICAgICAvLyBpZiAodGhpcy51cGxvYWRTaXplID09IHRoaXMudXBsb2FkSW5nU2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5vbkNvbXBsZXRlKHRoaXMudXBsb2FkSW5nTGlzdCk7XHJcbiAgICAgICAgLy8gfVxyXG4gICAgICAgIG9uQ29tcGxldGUgJiZcclxuICAgICAgICAgIG9uQ29tcGxldGUoe1xyXG4gICAgICAgICAgICBmaWxlOiBvcHRpb25zLmZpbGUsXHJcbiAgICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgICBzdGF0dXM6IHJlcy5jb2RlID09IDIwMCA/IFwic3VjY2Vzc1wiIDogXCJlcnJvclwiLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAvLyBpZiAodGhpcy51cGxvYWRTaXplID09IHRoaXMudXBsb2FkSW5nU2l6ZSkge1xyXG4gICAgICAgICAgdGhpcy5vbkNvbXBsZXRlKHRoaXMudXBsb2FkSW5nTGlzdCk7XHJcbiAgICAgICAgICBvcHRpb25zLm9uRXJyb3IoKTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICBcclxuICAgICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgb25EZWxldGUoZmlsZSkge1xyXG4gICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgLy/pgJrov4fmlofku7blkI3liKTmlq3vvIzkuIrkvKDmmK/mlofku7blkI3mmK/llK/kuIDnmoRcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBpdGVtLm5hbWUgIT09IGZpbGUubmFtZSB8fFxyXG4gICAgICAgICAgaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8XHJcbiAgICAgICAgICBpdGVtLnVpZCAhPT0gZmlsZS51aWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgICAgfSwoKT0+e1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgIFxyXG4gICAgfVxyXG4gICAgcmVuZGVyKCk6IFJlYWN0LlJlYWN0Tm9kZSB7XHJcbiAgICAgIGxldCB7XHJcbiAgICAgICAgZmlsZUxpc3QsXHJcbiAgICAgICAgZmlsZUNhcmQsXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3QgPSB7XHJcbiAgICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgICAgc2hvd1ByZXZpZXdJY29uOiBmYWxzZSxcclxuICAgICAgICAgIHNob3dSZW1vdmVJY29uOiB0cnVlLFxyXG4gICAgICAgICAgZG93bmxvYWRJY29uOiBudWxsLFxyXG4gICAgICAgICAgcmVtb3ZlSWNvbjogbnVsbCxcclxuICAgICAgICAgIHByZXZpZXdJY29uOiBudWxsLFxyXG4gICAgICAgIH0gYXMgYW55LFxyXG4gICAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5ld3Byb3BzID0gb21pdCh0aGlzLnByb3BzLCBbXHJcbiAgICAgICAgXCJzbGljZVNpemVcIixcclxuICAgICAgICBcIm1heFNpemVcIixcclxuICAgICAgICBcIm9uQ29tcGxldGVcIixcclxuICAgICAgICBcIm9uUHJvY2Vzc1wiLFxyXG4gICAgICAgIFwiYWxsb3dGaWxlU3VmZml4XCIsXHJcbiAgICAgICAgXCJ1c2VEZWZhdWx0TGlzdFwiLFxyXG4gICAgICAgIFwiZmlsZUNhcmRcIixcclxuICAgICAgICBcIm9uTGlzdENoYW5nZVwiLFxyXG4gICAgICAgIFwibmV3VmVyc2lvblwiLFxyXG4gICAgICAgIFwicmVxdWVzdENvbmZpZ1wiLFxyXG4gICAgICBdKTtcclxuICAgICAgbGV0IGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICBjdXN0b21SZXF1ZXN0OiB0aGlzLmN1c3RvbVJlcXVlc3QuYmluZCh0aGlzKSxcclxuICAgICAgICBtdWx0aXBsZTogdHJ1ZSxcclxuICAgICAgfSBhcyBJVXBsb2FkUHJvcHM7XHJcbiAgICAgIGlmIChmaWxlQ2FyZCkge1xyXG4gICAgICAgIGRlZmF1bHRQcm9wcyA9IHtcclxuICAgICAgICAgIC4uLmRlZmF1bHRQcm9wcyxcclxuICAgICAgICAgIGl0ZW1SZW5kZXI6IChvcmlnaW5Ob2RlLCBmaWxlOiBhbnksIGN1cnJGaWxlTGlzdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lID0gZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWU7XHJcbiAgICAgICAgICAgIGNvbnN0IG5hbWVzID0gbmFtZT8uc3BsaXQoXCIuXCIpO1xyXG4gICAgICAgICAgICBjb25zdCBzdWZmaXggPSBuYW1lcyA/IG5hbWVzW25hbWVzLmxlbmd0aCAtIDFdIDogXCJcIjtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiZmlsZS1pdGVtXCIpfT5cclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJjb250ZW50X2Vycm9yXCIpXTogZmlsZS5zdGF0dXMgPT0gXCJlcnJvclwiLFxyXG4gICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm1hcmstcGljdHVyZVwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAgPEZpbGVJY29uIHN1ZmZpeD17c3VmZml4fSBmaWxlSWQ9e2ZpbGUuZmlsZUlkfSAvPlxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5hbWVcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIHtmaWxlLm5hbWUgfHwgZmlsZS5maWxlTmFtZX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJpY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3Quc2hvd1ByZXZpZXdJY29uICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAoZmlsZS5zdGF0dXMgPT0gXCJkb25lXCJ8fCBmaWxlLmZpbGVJZCkgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25QcmV2aWV3KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25QcmV2aWV3KGZpbGUpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJldmlld0RvY3VtZW50KGZpbGUuZmlsZUlkLCByZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb24gPyAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPEV5ZU91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93RG93bmxvYWRJY29uICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAoZmlsZS5zdGF0dXMgPT0gXCJkb25lXCJ8fCBmaWxlLmZpbGVJZCkgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25Eb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCwgdHJ1ZSwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93UmVtb3ZlSWNvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlbW92ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlbW92ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwcm9jZXNzXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInBlcmNlbnRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogZmlsZS5wZXJjZW50ICsgXCIlXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgICBvbkRvd25sb2FkOiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQsIHRydWUsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25SZW1vdmU6IChmaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVtb3ZlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlbW92ZShmaWxlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25QcmV2aWV3OiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUHJldmlldykge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMub25QcmV2aWV3KGZpbGUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChmaWxlPy5maWxlSWQpIHtcclxuICAgICAgICAgICAgICAgIHByZXZpZXdEb2N1bWVudChmaWxlLmZpbGVJZCwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2hvd1VwbG9hZExpc3Q6IHsgLi4uc2hvd1VwbG9hZExpc3QgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIDxDb21wb25lbnRcclxuICAgICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cclxuICAgICAgICAgICAgey4uLm5ld3Byb3BzfVxyXG4gICAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9O1xyXG59O1xyXG5cclxuY29uc3QgTnNjVXBsb2FkOiBhbnkgPSB3aXRoQ3VzdG9tVXBsb2FkKFVwbG9hZCk7XHJcbi8vIC8vIOS9v+eUqCB3aXRoQ3VzdG9tVXBsb2FkIOWwgeijhSBVcGxvYWQuRHJhZ2dlciDnu4Tku7ZcclxuY29uc3QgTnNjVXBsb2FkRHJhZ2dlciA9IHdpdGhDdXN0b21VcGxvYWQoVXBsb2FkLkRyYWdnZXIpO1xyXG5Oc2NVcGxvYWQuRHJhZ2dlciA9IE5zY1VwbG9hZERyYWdnZXI7XHJcbmV4cG9ydCBkZWZhdWx0IE5zY1VwbG9hZDtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFFOUIsT0FBT0MsSUFBSSxNQUFNLFVBQVU7QUFDM0IsT0FBT0MsT0FBTyxNQUFNLFlBQVk7QUFDaEMsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFDMUIsU0FBU0MsT0FBTyxRQUFRLGFBQWE7QUFDckMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBT0MsUUFBUSxNQUFNLG9CQUFvQjtBQUN6QyxTQUNFQyxjQUFjLEVBQ2RDLGdCQUFnQixFQUNoQkMsV0FBVyxRQUNOLG1CQUFtQjtBQUMxQixNQUFNO0VBQUVDLE1BQU07RUFBRUMsUUFBUTtFQUFFQyxlQUFlO0VBQUVDO0FBQWEsQ0FBQyxHQUFHYixJQUFJO0FBZ0JoRSxNQUFNYyxnQkFBZ0IsR0FBSUMsU0FBUyxJQUFLO0VBQ3RDO0VBQ0EsT0FBTyxjQUFjaEIsS0FBSyxDQUFDaUIsYUFBYSxDQUFvQjtJQUFBQyxZQUFBO01BQUEsU0FBQUMsU0FBQTtNQUFBQyxlQUFBLGdCQUNsRDtRQUNOQyxRQUFRLEVBQUUsRUFBRTtRQUNaQyxNQUFNLEVBQUUsRUFBRTtRQUNWQyxhQUFhLEVBQUUsRUFBRTtRQUNqQkMsU0FBUyxFQUFFO01BQ2IsQ0FBQztNQUFBSixlQUFBLHdCQUNlLENBQUM7TUFBQUEsZUFBQSxxQkFDSixDQUFDO01BQUFBLGVBQUEsd0JBQ0UsRUFBRTtNQUFBQSxlQUFBLHFCQUNMLENBQUMsQ0FBQztNQUFBQSxlQUFBLHdCQXFNQyxNQUFPSyxPQUFPLElBQUs7UUFDakMsTUFBTXhCLElBQUksR0FBR3dCLE9BQU8sQ0FBQ3hCLElBQUk7UUFDekIsTUFBTTtVQUNKeUIsVUFBVTtVQUNWQyxTQUFTO1VBQ1RDLFNBQVM7VUFDVEMsVUFBVSxHQUFHO1FBQ2YsQ0FBQyxHQUFHLElBQUksQ0FBQ0MsS0FBSztRQUNkLE1BQU1DLFVBQVUsR0FBSUMsYUFBa0IsSUFBSztVQUN6Q1AsT0FBTyxDQUFDTSxVQUFVLENBQUM7WUFBRUUsT0FBTyxFQUFFRDtVQUFjLENBQUMsRUFBRS9CLElBQUksQ0FBQztVQUNwRCxJQUFJLENBQUMwQixTQUFTLENBQUM7WUFBRU0sT0FBTyxFQUFFRCxhQUFhO1lBQUUvQixJQUFJLEVBQUVBO1VBQUssQ0FBQyxDQUFDO1VBQ3REMEIsU0FBUyxJQUFJQSxTQUFTLENBQUM7WUFBRU0sT0FBTyxFQUFFRCxhQUFhO1lBQUUvQixJQUFJLEVBQUVBO1VBQUssQ0FBQyxDQUFDO1FBQ2hFLENBQUM7UUFDRCxJQUFJO1VBQ0YsTUFBTWlDLEdBQVEsR0FBRyxNQUFNdkIsTUFBTSxDQUMzQjtZQUNFVixJQUFJLEVBQUVBLElBQUk7WUFDVjhCLFVBQVUsRUFBRUEsVUFBVTtZQUN0QkksUUFBUSxFQUFFUDtVQUNaLENBQUMsRUFDRCxJQUFJLENBQUNFLEtBQUssQ0FBQ00sYUFDYixDQUFDO1VBQ0QsSUFBSSxDQUFDQyxhQUFhLEdBQUcsSUFBSSxDQUFDQSxhQUFhLEdBQUcsQ0FBQztVQUMzQyxJQUFJQyxNQUFNLEdBQUcsSUFBSTtVQUNqQixJQUFJQyxNQUFNLEdBQUcsSUFBSTtVQUNqQixJQUFJTCxHQUFHLENBQUNNLElBQUksSUFBSSxHQUFHLEVBQUU7WUFDbkJGLE1BQU0sR0FBR0osR0FBRyxDQUFDTyxJQUFJLENBQUNDLFFBQVE7WUFDMUJqQixPQUFPLENBQUNrQixTQUFTLENBQUMsQ0FBQztZQUNuQixJQUFJLElBQUksQ0FBQ2IsS0FBSyxDQUFDYyxRQUFRLElBQUksY0FBYyxJQUFJZixVQUFVLEVBQUU7Y0FDdkRVLE1BQU0sR0FBRyxNQUFNekIsWUFBWSxDQUFDd0IsTUFBTSxFQUFFLElBQUksQ0FBQ1IsS0FBSyxDQUFDTSxhQUFhLENBQUM7WUFDL0Q7VUFDRixDQUFDLE1BQU07WUFDTFgsT0FBTyxDQUFDb0IsT0FBTyxDQUFDLENBQUM7VUFDbkI7VUFDQSxJQUFJLENBQUNDLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDO1lBQ3RCOUMsSUFBSSxFQUFFd0IsT0FBTyxDQUFDeEIsSUFBSTtZQUNsQnFDLE1BQU0sRUFBRUEsTUFBTTtZQUNkVSxNQUFNLEVBQUVkLEdBQUcsQ0FBQ00sSUFBSSxJQUFJLEdBQUcsR0FBRyxTQUFTLEdBQUcsT0FBTztZQUM3Q1MsR0FBRyxFQUFFVixNQUFNLEdBQUdBLE1BQU0sQ0FBQ0UsSUFBSSxHQUFHO1VBQzlCLENBQUMsQ0FBQztVQUNGO1VBQ0E7VUFDQTtVQUNFLElBQUksQ0FBQ2YsVUFBVSxDQUFDLElBQUksQ0FBQ29CLGFBQWEsQ0FBQztVQUNyQztVQUNBcEIsVUFBVSxJQUNSQSxVQUFVLENBQUM7WUFDVHpCLElBQUksRUFBRXdCLE9BQU8sQ0FBQ3hCLElBQUk7WUFDbEJxQyxNQUFNLEVBQUVBLE1BQU07WUFDZFUsTUFBTSxFQUFFZCxHQUFHLENBQUNNLElBQUksSUFBSSxHQUFHLEdBQUcsU0FBUyxHQUFHO1VBQ3hDLENBQUMsQ0FBQztRQUNOLENBQUMsQ0FBQyxPQUFPVSxDQUFDLEVBQUU7VUFDVjtVQUNFLElBQUksQ0FBQ3hCLFVBQVUsQ0FBQyxJQUFJLENBQUNvQixhQUFhLENBQUM7VUFDbkNyQixPQUFPLENBQUNvQixPQUFPLENBQUMsQ0FBQztVQUNuQjs7VUFFQW5CLFVBQVUsSUFDUkEsVUFBVSxDQUFDO1lBQUV6QixJQUFJLEVBQUV3QixPQUFPLENBQUN4QixJQUFJO1lBQUVxQyxNQUFNLEVBQUUsRUFBRTtZQUFFVSxNQUFNLEVBQUU7VUFBUSxDQUFDLENBQUM7UUFDbkU7TUFDRixDQUFDO0lBQUE7SUFoUURHLGlCQUFpQkEsQ0FBQSxFQUFHO01BQ2xCLElBQUksSUFBSSxDQUFDckIsS0FBSyxDQUFDVCxRQUFRLEVBQUU7UUFDdkIsSUFBSSxDQUFDK0IsZUFBZSxDQUFDLElBQUksQ0FBQ3RCLEtBQUssQ0FBQ1QsUUFBUSxDQUFDO01BQzNDO0lBQ0Y7SUFDQStCLGVBQWVBLENBQUNDLElBQW9CLEVBQUU7TUFDcEMsTUFBTTtRQUFFaEMsUUFBUTtRQUFFdUI7TUFBUyxDQUFDLEdBQUcsSUFBSSxDQUFDZCxLQUFLO01BQ3pDLE1BQU13QixXQUFXLEdBQUcsRUFBRTtNQUN0QixJQUFJQyxPQUFPLEdBQUdGLElBQUksR0FBR0EsSUFBSSxHQUFHaEMsUUFBUTtNQUNwQyxJQUFJLENBQUNtQyxRQUFRLENBQ1g7UUFDRWpDLGFBQWEsRUFBRSxDQUFDLEdBQUdGLFFBQVE7TUFDN0IsQ0FBQyxFQUNELFlBQVk7UUFDVixLQUFLLElBQUlvQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdGLE9BQU8sQ0FBQ0csTUFBTSxFQUFFRCxDQUFDLEVBQUUsRUFBRTtVQUN2QyxJQUFJRSxJQUFTLEdBQUdKLE9BQU8sQ0FBQ0UsQ0FBQyxDQUFDO1VBQzFCLElBQUlHLElBQUksR0FBQUMsYUFBQSxDQUFBQSxhQUFBLEtBQ0hGLElBQUk7WUFDUFgsTUFBTSxFQUFFVyxJQUFJLENBQUNYLE1BQU07WUFDbkJjLElBQUksRUFBRUgsSUFBSSxDQUFDRyxJQUFJLElBQUlILElBQUksQ0FBQ0ksUUFBUTtZQUNoQ0MsSUFBSSxFQUFFTCxJQUFJLENBQUNLLElBQUk7WUFDZkMsSUFBSSxFQUFFTixJQUFJLENBQUNNLElBQUk7WUFDZmhCLEdBQUcsRUFBRVUsSUFBSSxDQUFDVjtVQUFHLEVBQ1A7VUFDUixJQUFJTCxRQUFRLElBQUksY0FBYyxJQUFJLENBQUNlLElBQUksQ0FBQ1YsR0FBRyxJQUFJVSxJQUFJLENBQUNyQixNQUFNLEVBQUU7WUFDMUQsSUFBSUosR0FBUSxHQUFHLE1BQU1wQixZQUFZLENBQy9CNkMsSUFBSSxDQUFDckIsTUFBTSxFQUNYLElBQUksQ0FBQ1IsS0FBSyxDQUFDTSxhQUNiLENBQUM7WUFDRCxJQUFJRixHQUFHLENBQUNNLElBQUksSUFBSSxHQUFHLEVBQUU7Y0FDbkJvQixJQUFJLENBQUNYLEdBQUcsR0FBR2YsR0FBRyxDQUFDTyxJQUFJO1lBQ3JCO1VBQ0Y7VUFDQWEsV0FBVyxDQUFDUCxJQUFJLENBQUNhLElBQUksQ0FBQztRQUN4QjtRQUNBLElBQUksQ0FBQ0osUUFBUSxDQUFDO1VBQ1puQyxRQUFRLEVBQUUsQ0FBQyxHQUFHaUMsV0FBVztRQUMzQixDQUFDLENBQUM7TUFDSixDQUNGLENBQUM7SUFDSDtJQUNBWSxrQkFBa0JBLENBQUNDLFFBQVEsRUFBRUMsUUFBUSxFQUFFO01BQ3JDLElBQUksSUFBSSxDQUFDdEMsS0FBSyxDQUFDVCxRQUFRLEVBQUU7UUFDdkIsSUFDRWdELElBQUksQ0FBQ0MsU0FBUyxDQUFDLElBQUksQ0FBQ3hDLEtBQUssQ0FBQ1QsUUFBUSxDQUFDLEtBQ25DZ0QsSUFBSSxDQUFDQyxTQUFTLENBQUMsSUFBSSxDQUFDQyxLQUFLLENBQUNoRCxhQUFhLENBQUMsRUFDeEM7VUFDQSxJQUFJLENBQUM2QixlQUFlLENBQUMsSUFBSSxDQUFDdEIsS0FBSyxDQUFDVCxRQUFRLENBQUM7UUFDM0M7TUFDRjtJQUNGO0lBQ0FtRCxXQUFXQSxDQUFBLEVBQUc7TUFDWixPQUFPLElBQUksQ0FBQ0QsS0FBSyxDQUFDbEQsUUFBUTtJQUM1QjtJQUNBb0QsV0FBV0EsQ0FBQ3BELFFBQXVCLEVBQUU7TUFDbkMsSUFBSSxDQUFDK0IsZUFBZSxDQUFDL0IsUUFBUSxDQUFDO0lBQ2hDO0lBQ0EsTUFBTXFELFlBQVlBLENBQUN6RSxJQUFJLEVBQUUwRSxTQUFTLEVBQUU7TUFDbEMsSUFBSTtRQUNGQyxPQUFPLEdBQUcsR0FBRztRQUNiQyxlQUFlO1FBQ2ZDLGFBQWEsR0FBRyxJQUFJO1FBQ3BCQyxRQUFRO1FBQ1JDLGNBQWM7UUFDZDNELFFBQVEsRUFBRTRELFNBQVM7UUFDbkJDO01BQ0YsQ0FBQyxHQUFHLElBQUksQ0FBQ3BELEtBQUs7TUFDZCxJQUFJO1FBQUVULFFBQVE7UUFBRUU7TUFBYyxDQUFDLEdBQUcsSUFBSSxDQUFDZ0QsS0FBSztNQUM1QyxJQUFJTixJQUFZO01BQ2hCLElBQUlZLGVBQWUsSUFBSSxDQUFDLElBQUksQ0FBQ00sYUFBYSxDQUFDbEYsSUFBSSxDQUFDLEVBQUU7UUFDaERDLE9BQU8sQ0FBQ2tGLEtBQUssSUFBQUMsTUFBQSxDQUNScEYsSUFBSSxDQUFDNkQsSUFBSSxzR0FBQXVCLE1BQUEsQ0FBbUJSLGVBQWUseUNBQ2hELENBQUM7UUFDRCxPQUFPLEtBQUs7TUFDZDtNQUNBLElBQUlELE9BQU8sS0FBSyxLQUFLLEVBQUU7UUFDckIsSUFBSUEsT0FBTyxLQUFLLElBQUksRUFBRTtVQUNwQkEsT0FBTyxHQUFHLEdBQUc7UUFDZjtRQUNBWCxJQUFJLEdBQUdXLE9BQU8sR0FBRyxJQUFJLEdBQUcsSUFBSTtRQUM1QixJQUFJWCxJQUFJLEdBQUdoRSxJQUFJLENBQUNnRSxJQUFJLEVBQUU7VUFDcEIvRCxPQUFPLENBQUNrRixLQUFLLElBQUFDLE1BQUEsQ0FBSXBGLElBQUksQ0FBQzZELElBQUksMENBQUF1QixNQUFBLENBQVNULE9BQU8sZ0RBQVUsQ0FBQztVQUNyRCxPQUFPLEtBQUs7UUFDZDtNQUNGO01BQ0EsSUFBSXBELFNBQVMsR0FBRyxFQUFFO01BQ2xCLElBQUlzRCxhQUFhLEVBQUU7UUFDakIsTUFBTVEsU0FBUyxHQUFHLElBQUksQ0FBQ3hELEtBQUssQ0FBQ1QsUUFBUSxHQUFHRSxhQUFhLEdBQUdGLFFBQVE7UUFDaEVpRSxTQUFTLENBQUNDLEdBQUcsQ0FBRTVCLElBQUksSUFBSztVQUN0Qm5DLFNBQVMsQ0FBQ3VCLElBQUksQ0FBQ1ksSUFBSSxDQUFDRyxJQUFJLElBQUlILElBQUksQ0FBQ0ksUUFBUSxDQUFDO1FBQzVDLENBQUMsQ0FBQztRQUNGLElBQUl2QyxTQUFTLENBQUNnRSxPQUFPLENBQUN2RixJQUFJLENBQUM2RCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSWtCLGNBQWMsS0FBSyxLQUFLLEVBQUU7VUFDakU5RSxPQUFPLENBQUNrRixLQUFLLGdCQUFBQyxNQUFBLENBQU1wRixJQUFJLENBQUM2RCxJQUFJLHFHQUFrQixDQUFDO1VBQy9DLE9BQU8sS0FBSztRQUNkO01BQ0Y7TUFFQSxJQUFJLElBQUksQ0FBQ2hDLEtBQUssQ0FBQzRDLFlBQVksRUFBRTtRQUMzQixNQUFNeEMsR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFDSixLQUFLLENBQUM0QyxZQUFZLENBQUN6RSxJQUFJLEVBQUUwRSxTQUFTLENBQUM7UUFDMUQsSUFBSXpDLEdBQUcsS0FBSyxLQUFLLEVBQUU7VUFDakIsT0FBTyxLQUFLO1FBQ2Q7TUFDRjtNQUNBLE1BQU11RCxPQUFPLEdBQUcsQ0FBQyxHQUFHcEUsUUFBUSxDQUFDO01BQzdCc0QsU0FBUyxDQUFDWSxHQUFHLENBQUMsTUFBTzVCLElBQUksSUFBSztRQUM1QixJQUNFLEVBQ0drQixlQUFlLElBQUksQ0FBQyxJQUFJLENBQUNNLGFBQWEsQ0FBQ3hCLElBQUksQ0FBQyxJQUM3Q00sSUFBSSxHQUFHTixJQUFJLENBQUNNLElBQUksSUFDZmEsYUFBYSxJQUFJdEQsU0FBUyxDQUFDZ0UsT0FBTyxDQUFDN0IsSUFBSSxDQUFDRyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUUsQ0FDckQsRUFDRDtVQUNBLE1BQU1GLElBQUksR0FBRztZQUNYRyxRQUFRLEVBQUVKLElBQUksQ0FBQ0csSUFBSTtZQUNuQjdCLE9BQU8sRUFBRSxDQUFDO1lBQ1ZlLE1BQU0sRUFBRSxXQUFXO1lBQ25CMEMsR0FBRyxFQUFFL0IsSUFBSSxDQUFDK0IsR0FBRztZQUNiNUIsSUFBSSxFQUFFSCxJQUFJLENBQUNHLElBQUk7WUFDZkUsSUFBSSxFQUFFTCxJQUFJLENBQUNLLElBQUk7WUFDZkMsSUFBSSxFQUFFTixJQUFJLENBQUNNO1VBQ2IsQ0FBQztVQUNEd0IsT0FBTyxDQUFDMUMsSUFBSSxDQUFDYSxJQUFJLENBQUM7UUFDcEI7TUFDRixDQUFDLENBQUM7TUFFRixJQUFJbUIsUUFBUSxJQUFJVSxPQUFPLENBQUMvQixNQUFNLEdBQUdxQixRQUFRLEVBQUU7UUFDekMsSUFBSXJCLE1BQU0sR0FBRytCLE9BQU8sQ0FBQy9CLE1BQU0sR0FBR3FCLFFBQVE7UUFDdEMsS0FBSyxJQUFJdEIsQ0FBQyxHQUFHLENBQUMsRUFBRUEsQ0FBQyxHQUFHQyxNQUFNLEVBQUVELENBQUMsRUFBRSxFQUFFO1VBQy9CZ0MsT0FBTyxDQUFDRSxNQUFNLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUN0QjtNQUNGO01BQ0EsSUFBSSxDQUFDbkMsUUFBUSxDQUFDO1FBQUVuQyxRQUFRLEVBQUVvRTtNQUFRLENBQUMsRUFBQyxNQUFJO1FBQ3RDUCxZQUFZLElBQUlBLFlBQVksQ0FBQ08sT0FBTyxDQUFDO01BQ3ZDLENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ0csVUFBVSxHQUFHakIsU0FBUyxDQUFDakIsTUFBTTtJQUNwQztJQUNBeUIsYUFBYUEsQ0FBQ2xGLElBQUksRUFBRTtNQUNsQixNQUFNO1FBQUU0RTtNQUFnQixDQUFDLEdBQUcsSUFBSSxDQUFDL0MsS0FBSztNQUN0QyxNQUFNK0QsS0FBSyxHQUFHNUYsSUFBSSxDQUFDNkQsSUFBSSxDQUFDZ0MsS0FBSyxDQUFDLEdBQUcsQ0FBQztNQUNsQyxNQUFNQyxNQUFNLEdBQUdGLEtBQUssQ0FBQ0EsS0FBSyxDQUFDbkMsTUFBTSxHQUFHLENBQUMsQ0FBQztNQUN0QyxJQUFJbUIsZUFBZSxDQUFDVyxPQUFPLENBQUNPLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO1FBQ3hDLE9BQU8sSUFBSTtNQUNiO01BQ0EsT0FBTyxLQUFLO0lBQ2Q7SUFDQXBFLFNBQVNBLENBQUFxRSxJQUFBLEVBQXlCO01BQUEsSUFBeEI7UUFBRS9ELE9BQU87UUFBRWhDO01BQVUsQ0FBQyxHQUFBK0YsSUFBQTtNQUM5QixNQUFNO1FBQUUzRTtNQUFTLENBQUMsR0FBRyxJQUFJLENBQUNrRCxLQUFLO01BQy9CLE1BQU07UUFBRVc7TUFBYSxDQUFDLEdBQUcsSUFBSSxDQUFDcEQsS0FBSztNQUNuQyxNQUFNMkQsT0FBWSxHQUFHLEVBQUU7TUFDdkJwRSxRQUFRLENBQUNrRSxHQUFHLENBQUU1QixJQUFTLElBQUs7UUFDMUIsTUFBTXNDLE9BQU8sR0FBQXBDLGFBQUEsS0FBUUYsSUFBSSxDQUFFO1FBQzNCLElBQUkxRCxJQUFJLENBQUN5RixHQUFHLElBQUkvQixJQUFJLENBQUMrQixHQUFHLEVBQUU7VUFDeEJPLE9BQU8sQ0FBQ2hFLE9BQU8sR0FBR0EsT0FBTztRQUMzQjtRQUNBd0QsT0FBTyxDQUFDMUMsSUFBSSxDQUFDa0QsT0FBTyxDQUFDO01BQ3ZCLENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ3pDLFFBQVEsQ0FBQztRQUNabkMsUUFBUSxFQUFFb0U7TUFDWixDQUFDLEVBQUMsTUFBSTtRQUNKUCxZQUFZLElBQUlBLFlBQVksQ0FBQzdELFFBQVEsQ0FBQztNQUN4QyxDQUFDLENBQUM7SUFFSjtJQUNBLE1BQU1LLFVBQVVBLENBQUN3RSxLQUFLLEVBQUU7TUFDdEIsSUFBSSxDQUFDN0QsYUFBYSxHQUFHLENBQUM7TUFDdEIsSUFBSSxDQUFDdUQsVUFBVSxHQUFHLENBQUM7TUFDbkIsSUFBSSxDQUFDOUMsYUFBYSxHQUFHLEVBQUU7TUFDdkIsTUFBTTtRQUFFekI7TUFBUyxDQUFDLEdBQUcsSUFBSSxDQUFDa0QsS0FBSztNQUMvQixNQUFNO1FBQUUxQyxVQUFVLEdBQUcsSUFBSTtRQUFFTyxhQUFhLEdBQUcsQ0FBQztNQUFFLENBQUMsR0FBRyxJQUFJLENBQUNOLEtBQUs7TUFDNUQsTUFBTTJELE9BQVksR0FBRyxFQUFFO01BQ3ZCcEUsUUFBUSxDQUFDa0UsR0FBRyxDQUFDLE9BQU81QixJQUFTLEVBQUV3QyxLQUFLLEtBQUs7UUFDdkMsTUFBTUYsT0FBTyxHQUFBcEMsYUFBQSxLQUFRRixJQUFJLENBQUU7UUFDM0J1QyxLQUFLLENBQUNYLEdBQUcsQ0FBQyxNQUFPdEYsSUFBSSxJQUFLO1VBQ3hCLElBQUlBLElBQUksQ0FBQ0EsSUFBSSxDQUFDeUYsR0FBRyxJQUFJL0IsSUFBSSxDQUFDK0IsR0FBRyxFQUFFO1lBQzdCTyxPQUFPLENBQUNqRCxNQUFNLEdBQUcvQyxJQUFJLENBQUMrQyxNQUFNLElBQUksU0FBUyxHQUFHLE1BQU0sR0FBRy9DLElBQUksQ0FBQytDLE1BQU07WUFDaEVpRCxPQUFPLENBQUMzRCxNQUFNLEdBQUdyQyxJQUFJLENBQUNxQyxNQUFNO1lBQzVCMkQsT0FBTyxDQUFDaEQsR0FBRyxHQUFHaEQsSUFBSSxDQUFDZ0QsR0FBRztZQUN0QixJQUFJLENBQUNwQixVQUFVLEVBQUU7Y0FDZixJQUFJb0IsR0FBRyw0REFBQW9DLE1BQUEsQ0FDTHBGLElBQUksQ0FBQ3FDLE1BQU0sWUFBQStDLE1BQUEsQ0FDSmUsTUFBTSxDQUFDQyxZQUFZLENBQUNDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBRTtjQUMvQ0wsT0FBTyxDQUFDaEQsR0FBRyxHQUFHYixhQUFhLENBQUNtRSxNQUFNLEdBQzlCbkUsYUFBYSxDQUFDbUUsTUFBTSxHQUFHdEQsR0FBRyxHQUMxQixNQUFNLEdBQUdBLEdBQUc7WUFDbEI7VUFDRjtRQUNGLENBQUMsQ0FBQztRQUNGd0MsT0FBTyxDQUFDMUMsSUFBSSxDQUFDa0QsT0FBTyxDQUFDO01BQ3ZCLENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ3pDLFFBQVEsQ0FBQztRQUNabkMsUUFBUSxFQUFFLENBQUMsR0FBR29FLE9BQU87TUFDdkIsQ0FBQyxFQUFDLE1BQUk7UUFDSixNQUFNO1VBQUVQO1FBQWEsQ0FBQyxHQUFHLElBQUksQ0FBQ3BELEtBQUs7UUFDbkNvRCxZQUFZLElBQUlBLFlBQVksQ0FBQ08sT0FBTyxDQUFDO01BQ3ZDLENBQUMsQ0FBQztJQUNKO0lBOERBZSxRQUFRQSxDQUFDdkcsSUFBSSxFQUFFO01BQ2IsTUFBTTtRQUFFb0I7TUFBUyxDQUFDLEdBQUcsSUFBSSxDQUFDa0QsS0FBSztNQUMvQixNQUFNO1FBQUVXO01BQWEsQ0FBQyxHQUFHLElBQUksQ0FBQ3BELEtBQUs7TUFDbkMsTUFBTTJELE9BQVksR0FBRyxFQUFFO01BQ3ZCcEUsUUFBUSxDQUFDa0UsR0FBRyxDQUFFNUIsSUFBUyxJQUFLO1FBQzFCO1FBQ0EsSUFDRUEsSUFBSSxDQUFDRyxJQUFJLEtBQUs3RCxJQUFJLENBQUM2RCxJQUFJLElBQ3ZCSCxJQUFJLENBQUNyQixNQUFNLEtBQUtyQyxJQUFJLENBQUNxQyxNQUFNLElBQzNCcUIsSUFBSSxDQUFDK0IsR0FBRyxLQUFLekYsSUFBSSxDQUFDeUYsR0FBRyxFQUNyQjtVQUNBRCxPQUFPLENBQUMxQyxJQUFJLENBQUNZLElBQUksQ0FBQztRQUNwQjtNQUNGLENBQUMsQ0FBQztNQUNGLElBQUksQ0FBQ0gsUUFBUSxDQUFDO1FBQ1puQyxRQUFRLEVBQUVvRTtNQUNaLENBQUMsRUFBQyxNQUFJO1FBQ0pQLFlBQVksSUFBSUEsWUFBWSxDQUFDTyxPQUFPLENBQUM7TUFDdkMsQ0FBQyxDQUFDO0lBRUo7SUFDQWdCLE1BQU1BLENBQUEsRUFBb0I7TUFDeEIsSUFBSTtRQUNGcEYsUUFBUTtRQUNScUYsUUFBUTtRQUNSMUIsY0FBYyxHQUFHO1VBQ2YyQixnQkFBZ0IsRUFBRSxJQUFJO1VBQ3RCQyxlQUFlLEVBQUUsS0FBSztVQUN0QkMsY0FBYyxFQUFFLElBQUk7VUFDcEJDLFlBQVksRUFBRSxJQUFJO1VBQ2xCQyxVQUFVLEVBQUUsSUFBSTtVQUNoQkMsV0FBVyxFQUFFO1FBQ2YsQ0FBUTtRQUNSNUUsYUFBYSxHQUFHLENBQUM7TUFDbkIsQ0FBQyxHQUFHLElBQUksQ0FBQ04sS0FBSztNQUNkLE1BQU1tRixRQUFRLEdBQUc5RyxJQUFJLENBQUMsSUFBSSxDQUFDMkIsS0FBSyxFQUFFLENBQ2hDLFdBQVcsRUFDWCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsZ0JBQWdCLEVBQ2hCLFVBQVUsRUFDVixjQUFjLEVBQ2QsWUFBWSxFQUNaLGVBQWUsQ0FDaEIsQ0FBQztNQUNGLElBQUlvRixZQUFZLEdBQUc7UUFDakJDLGFBQWEsRUFBRSxJQUFJLENBQUNBLGFBQWEsQ0FBQ0MsSUFBSSxDQUFDLElBQUksQ0FBQztRQUM1Q0MsUUFBUSxFQUFFO01BQ1osQ0FBaUI7TUFDakIsSUFBSVgsUUFBUSxFQUFFO1FBQ1pRLFlBQVksR0FBQXJELGFBQUEsQ0FBQUEsYUFBQSxLQUNQcUQsWUFBWTtVQUNmSSxVQUFVLEVBQUVBLENBQUNDLFVBQVUsRUFBRXRILElBQVMsRUFBRXVILFlBQVksS0FBSztZQUNuRCxNQUFNMUQsSUFBSSxHQUFHN0QsSUFBSSxDQUFDNkQsSUFBSSxJQUFJN0QsSUFBSSxDQUFDOEQsUUFBUTtZQUN2QyxNQUFNOEIsS0FBSyxHQUFHL0IsSUFBSSxhQUFKQSxJQUFJLHVCQUFKQSxJQUFJLENBQUVnQyxLQUFLLENBQUMsR0FBRyxDQUFDO1lBQzlCLE1BQU1DLE1BQU0sR0FBR0YsS0FBSyxHQUFHQSxLQUFLLENBQUNBLEtBQUssQ0FBQ25DLE1BQU0sR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFO1lBQ25ELG9CQUNFMUQsS0FBQSxDQUFBeUgsYUFBQTtjQUFLQyxTQUFTLEVBQUV0SCxPQUFPLENBQUNDLE1BQU0sRUFBRSxXQUFXO1lBQUUsZ0JBQzNDTCxLQUFBLENBQUF5SCxhQUFBO2NBQ0VDLFNBQVMsRUFBRXBILEdBQUcsQ0FBQ0YsT0FBTyxDQUFDQyxNQUFNLEVBQUUsU0FBUyxDQUFDLEVBQUU7Z0JBQ3pDLENBQUNELE9BQU8sQ0FBQ0MsTUFBTSxFQUFFLGVBQWUsQ0FBQyxHQUFHSixJQUFJLENBQUMrQyxNQUFNLElBQUk7Y0FDckQsQ0FBQztZQUFFLGdCQUVIaEQsS0FBQSxDQUFBeUgsYUFBQTtjQUFLQyxTQUFTLEVBQUV0SCxPQUFPLENBQUNDLE1BQU0sRUFBRSxjQUFjO1lBQUUsZ0JBQzlDTCxLQUFBLENBQUF5SCxhQUFBLENBQUNsSCxRQUFRO2NBQUN3RixNQUFNLEVBQUVBLE1BQU87Y0FBQ3pELE1BQU0sRUFBRXJDLElBQUksQ0FBQ3FDO1lBQU8sQ0FBRSxDQUM3QyxDQUFDLGVBQ050QyxLQUFBLENBQUF5SCxhQUFBO2NBQUtDLFNBQVMsRUFBRXRILE9BQU8sQ0FBQ0MsTUFBTSxFQUFFLE1BQU07WUFBRSxHQUNyQ0osSUFBSSxDQUFDNkQsSUFBSSxJQUFJN0QsSUFBSSxDQUFDOEQsUUFDaEIsQ0FBQyxlQUNOL0QsS0FBQSxDQUFBeUgsYUFBQTtjQUFLQyxTQUFTLEVBQUV0SCxPQUFPLENBQUNDLE1BQU0sRUFBRSxNQUFNO1lBQUUsR0FDckMyRSxjQUFjLENBQUM0QixlQUFlLEtBQzVCM0csSUFBSSxDQUFDK0MsTUFBTSxJQUFJLE1BQU0sSUFBRy9DLElBQUksQ0FBQ3FDLE1BQU0sQ0FBQyxpQkFDbkN0QyxLQUFBLENBQUF5SCxhQUFBO2NBQ0VFLE9BQU8sRUFBRUEsQ0FBQSxLQUFNO2dCQUNiLElBQUksSUFBSSxDQUFDN0YsS0FBSyxDQUFDOEYsU0FBUyxFQUFFO2tCQUN4QixJQUFJLENBQUM5RixLQUFLLENBQUM4RixTQUFTLENBQUMzSCxJQUFJLENBQUM7Z0JBQzVCLENBQUMsTUFBTTtrQkFDTFksZUFBZSxDQUFDWixJQUFJLENBQUNxQyxNQUFNLEVBQUVGLGFBQWEsQ0FBQztnQkFDN0M7Y0FDRixDQUFFO2NBQ0Z5RixLQUFLLEVBQUU7Z0JBQUVDLE1BQU0sRUFBRTtjQUFVO1lBQUUsR0FFNUI5QyxjQUFjLENBQUM4QixZQUFZLEdBQzFCOUIsY0FBYyxDQUFDOEIsWUFBWSxnQkFFM0I5RyxLQUFBLENBQUF5SCxhQUFBLENBQUMvRyxXQUFXLE1BQUUsQ0FFYixDQUNOLEVBQ0ZzRSxjQUFjLENBQUMyQixnQkFBZ0IsS0FDN0IxRyxJQUFJLENBQUMrQyxNQUFNLElBQUksTUFBTSxJQUFHL0MsSUFBSSxDQUFDcUMsTUFBTSxDQUFDLGlCQUNuQ3RDLEtBQUEsQ0FBQXlILGFBQUE7Y0FDRUUsT0FBTyxFQUFFQSxDQUFBLEtBQU07Z0JBQ2IsSUFBSSxJQUFJLENBQUM3RixLQUFLLENBQUNpRyxVQUFVLEVBQUU7a0JBQ3pCLElBQUksQ0FBQ2pHLEtBQUssQ0FBQ2lHLFVBQVUsQ0FBQzlILElBQUksQ0FBQztnQkFDN0IsQ0FBQyxNQUFNO2tCQUNMVyxRQUFRLENBQUNYLElBQUksQ0FBQ3FDLE1BQU0sRUFBRSxJQUFJLEVBQUVGLGFBQWEsQ0FBQztnQkFDNUM7Y0FDRixDQUFFO2NBQ0Z5RixLQUFLLEVBQUU7Z0JBQUVDLE1BQU0sRUFBRTtjQUFVO1lBQUUsR0FFNUI5QyxjQUFjLENBQUM4QixZQUFZLEdBQzFCOUIsY0FBYyxDQUFDOEIsWUFBWSxnQkFFM0I5RyxLQUFBLENBQUF5SCxhQUFBLENBQUNoSCxnQkFBZ0IsTUFBRSxDQUVsQixDQUNOLEVBQ0Z1RSxjQUFjLENBQUM2QixjQUFjLGlCQUM1QjdHLEtBQUEsQ0FBQXlILGFBQUE7Y0FDRUUsT0FBTyxFQUFFQSxDQUFBLEtBQU07Z0JBQ2IsSUFBSSxJQUFJLENBQUM3RixLQUFLLENBQUNrRyxRQUFRLEVBQUU7a0JBQ3ZCLElBQUksQ0FBQ2xHLEtBQUssQ0FBQ2tHLFFBQVEsQ0FBQy9ILElBQUksQ0FBQztnQkFDM0IsQ0FBQyxNQUFNO2tCQUNMLElBQUksQ0FBQ3VHLFFBQVEsQ0FBQ3ZHLElBQUksQ0FBQztnQkFDckI7Y0FDRixDQUFFO2NBQ0Y0SCxLQUFLLEVBQUU7Z0JBQUVDLE1BQU0sRUFBRTtjQUFVO1lBQUUsR0FFNUI5QyxjQUFjLENBQUM4QixZQUFZLEdBQzFCOUIsY0FBYyxDQUFDOEIsWUFBWSxnQkFFM0I5RyxLQUFBLENBQUF5SCxhQUFBLENBQUNqSCxjQUFjLE1BQUUsQ0FFaEIsQ0FFSixDQUNGLENBQUMsRUFDTFAsSUFBSSxDQUFDK0MsTUFBTSxJQUFJLFdBQVcsaUJBQ3pCaEQsS0FBQSxDQUFBeUgsYUFBQTtjQUFLQyxTQUFTLEVBQUV0SCxPQUFPLENBQUNDLE1BQU0sRUFBRSxTQUFTO1lBQUUsZ0JBQ3pDTCxLQUFBLENBQUF5SCxhQUFBO2NBQ0VDLFNBQVMsRUFBRXRILE9BQU8sQ0FBQ0MsTUFBTSxFQUFFLFNBQVMsQ0FBRTtjQUN0Q3dILEtBQUssRUFBRTtnQkFBRUksS0FBSyxFQUFFaEksSUFBSSxDQUFDZ0MsT0FBTyxHQUFHO2NBQUk7WUFBRSxDQUNqQyxDQUNILENBRUosQ0FBQztVQUVWO1FBQUMsRUFDRjtNQUNILENBQUMsTUFBTTtRQUNMaUYsWUFBWSxHQUFBckQsYUFBQSxDQUFBQSxhQUFBLEtBQ1BxRCxZQUFZO1VBQ2ZhLFVBQVUsRUFBRzlILElBQVMsSUFBSztZQUN6QixJQUFJLElBQUksQ0FBQzZCLEtBQUssQ0FBQ2lHLFVBQVUsRUFBRTtjQUN6QixJQUFJLENBQUNqRyxLQUFLLENBQUNpRyxVQUFVLENBQUM5SCxJQUFJLENBQUM7WUFDN0IsQ0FBQyxNQUFNO2NBQ0xXLFFBQVEsQ0FBQ1gsSUFBSSxDQUFDcUMsTUFBTSxFQUFFLElBQUksRUFBRUYsYUFBYSxDQUFDO1lBQzVDO1VBQ0YsQ0FBQztVQUNENEYsUUFBUSxFQUFHL0gsSUFBSSxJQUFLO1lBQ2xCLElBQUksSUFBSSxDQUFDNkIsS0FBSyxDQUFDa0csUUFBUSxFQUFFO2NBQ3ZCLElBQUksQ0FBQ2xHLEtBQUssQ0FBQ2tHLFFBQVEsQ0FBQy9ILElBQUksQ0FBQztZQUMzQixDQUFDLE1BQU07Y0FDTCxJQUFJLENBQUN1RyxRQUFRLENBQUN2RyxJQUFJLENBQUM7WUFDckI7VUFDRixDQUFDO1VBQ0QySCxTQUFTLEVBQUczSCxJQUFTLElBQUs7WUFDeEIsSUFBSSxJQUFJLENBQUM2QixLQUFLLENBQUM4RixTQUFTLEVBQUU7Y0FDeEIsSUFBSSxDQUFDOUYsS0FBSyxDQUFDOEYsU0FBUyxDQUFDM0gsSUFBSSxDQUFDO1lBQzVCLENBQUMsTUFBTTtjQUNMLElBQUlBLElBQUksYUFBSkEsSUFBSSxlQUFKQSxJQUFJLENBQUVxQyxNQUFNLEVBQUU7Z0JBQ2hCekIsZUFBZSxDQUFDWixJQUFJLENBQUNxQyxNQUFNLEVBQUVGLGFBQWEsQ0FBQztjQUM3QztZQUNGO1VBQ0YsQ0FBQztVQUNENEMsY0FBYyxFQUFBbkIsYUFBQSxLQUFPbUIsY0FBYztRQUFFLEVBQ3RDO01BQ0g7TUFDQSxvQkFDRWhGLEtBQUEsQ0FBQXlILGFBQUEsQ0FBQXpILEtBQUEsQ0FBQWtJLFFBQUEscUJBQ0VsSSxLQUFBLENBQUF5SCxhQUFBLENBQUN6RyxTQUFTLEVBQUFtSCxRQUFBLEtBQ0pqQixZQUFZLEVBQ1pELFFBQVE7UUFDWnZDLFlBQVksRUFBRSxJQUFJLENBQUNBLFlBQVksQ0FBQzBDLElBQUksQ0FBQyxJQUFJLENBQUU7UUFDM0MvRixRQUFRLEVBQUUsSUFBSSxDQUFDa0QsS0FBSyxDQUFDbEQ7TUFBUyxFQUMvQixDQUNELENBQUM7SUFFUDtFQUNGLENBQUM7QUFDSCxDQUFDO0FBRUQsTUFBTStHLFNBQWMsR0FBR3JILGdCQUFnQixDQUFBc0gsT0FBTyxDQUFDO0FBQy9DO0FBQ0EsTUFBTUMsZ0JBQWdCLEdBQUd2SCxnQkFBZ0IsQ0FBQ3NILE9BQUEsQ0FBT0UsT0FBTyxDQUFDO0FBQ3pESCxTQUFTLENBQUNHLE9BQU8sR0FBR0QsZ0JBQWdCO0FBQ3BDLGVBQWVGLFNBQVMiLCJpZ25vcmVMaXN0IjpbXX0=
447
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsImZpbGUiLCJtZXNzYWdlIiwib21pdCIsImdldExlc3MiLCJzdHlsZXMiLCJjbHMiLCJGaWxlSWNvbiIsIkRlbGV0ZU91dGxpbmVkIiwiRG93bmxvYWRPdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwidXBsb2FkIiwiZG93bmxvYWQiLCJwcmV2aWV3RG9jdW1lbnQiLCJwcmV2aWV3SW1hZ2UiLCJ3aXRoQ3VzdG9tVXBsb2FkIiwiQ29tcG9uZW50IiwiUHVyZUNvbXBvbmVudCIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiZmlsZUxpc3QiLCJ2aWV3SWQiLCJmaWxlTGlzdFN0b3JlIiwiZmlsZU5hbWVzIiwib3B0aW9ucyIsIm9uQ29tcGxldGUiLCJvblByb2Nlc3MiLCJzbGljZVNpemUiLCJuZXdWZXJzaW9uIiwicHJvcHMiLCJvblByb2dyZXNzIiwidG90YWxQcm9ncmVzcyIsInBlcmNlbnQiLCJyZXMiLCJwYXJ0U2l6ZSIsInJlcXVlc3RDb25maWciLCJ1cGxvYWRJbmdTaXplIiwiZmlsZUlkIiwiSW1nUmVzIiwiY29kZSIsImRhdGEiLCJhdHRhY2hJZCIsIm9uU3VjY2VzcyIsImxpc3RUeXBlIiwib25FcnJvciIsInVwbG9hZEluZ0xpc3QiLCJwdXNoIiwic3RhdHVzIiwidXJsIiwiZSIsImNvbXBvbmVudERpZE1vdW50IiwiY29udmVydEZpbGVMaXN0IiwibGlzdCIsIm5ld0ZpbGVMaXN0Iiwib2xkTGlzdCIsInNldFN0YXRlIiwiaSIsImxlbmd0aCIsIml0ZW0iLCJ0ZW1wIiwiX29iamVjdFNwcmVhZCIsIm5hbWUiLCJmaWxlTmFtZSIsInR5cGUiLCJzaXplIiwiY29tcG9uZW50RGlkVXBkYXRlIiwicHJlUHJvcHMiLCJwcmVTdGF0ZSIsIkpTT04iLCJzdHJpbmdpZnkiLCJzdGF0ZSIsImdldEZpbGVMaXN0Iiwic2V0RmlsZUxpc3QiLCJiZWZvcmVVcGxvYWQiLCJvZmlsZUxpc3QiLCJtYXhTaXplIiwiYWxsb3dGaWxlU3VmZml4IiwiY2hlY2tTYW1lRmlsZSIsIm1heENvdW50Iiwic2hvd1VwbG9hZExpc3QiLCJwcm9wc0xpc3QiLCJvbkxpc3RDaGFuZ2UiLCJjaGVja0ZpbGVUeXBlIiwiZXJyb3IiLCJjb25jYXQiLCJjaGVja0xpc3QiLCJtYXAiLCJpbmRleE9mIiwibmV3TGlzdCIsInVpZCIsInNwbGljZSIsInVwbG9hZFNpemUiLCJuYW1lcyIsInNwbGl0Iiwic3VmZml4IiwidG9Mb3dlckNhc2UiLCJ0b1VwZXJyY2FzZSIsIl9yZWYiLCJuZXdGaWxlIiwiZmlsZXMiLCJpbmRleCIsIndpbmRvdyIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJwcmVmaXgiLCJvbkRlbGV0ZSIsInJlbmRlciIsImZpbGVDYXJkIiwic2hvd0Rvd25sb2FkSWNvbiIsInNob3dQcmV2aWV3SWNvbiIsInNob3dSZW1vdmVJY29uIiwiZG93bmxvYWRJY29uIiwicmVtb3ZlSWNvbiIsInByZXZpZXdJY29uIiwibmV3cHJvcHMiLCJkZWZhdWx0UHJvcHMiLCJjdXN0b21SZXF1ZXN0IiwiYmluZCIsIm11bHRpcGxlIiwiaXRlbVJlbmRlciIsIm9yaWdpbk5vZGUiLCJjdXJyRmlsZUxpc3QiLCJjcmVhdGVFbGVtZW50IiwiY2xhc3NOYW1lIiwib25DbGljayIsIm9uUHJldmlldyIsInN0eWxlIiwiY3Vyc29yIiwib25Eb3dubG9hZCIsIm9uUmVtb3ZlIiwid2lkdGgiLCJGcmFnbWVudCIsIl9leHRlbmRzIiwiTnNjVXBsb2FkIiwiX1VwbG9hZCIsIk5zY1VwbG9hZERyYWdnZXIiLCJEcmFnZ2VyIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvYmFzZS91cGxvYWQvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgeyBVcGxvYWQsIFVwbG9hZFByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IGZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi9tZXNzYWdlXCI7XHJcbmltcG9ydCBvbWl0IGZyb20gXCJvbWl0LmpzXCI7XHJcbmltcG9ydCB7IGdldExlc3MgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHN0eWxlcyBmcm9tIFwiLi9pbmRleC5sZXNzXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IEZpbGVJY29uIGZyb20gXCIuLi9jb21tb24vRmlsZUljb25cIjtcclxuaW1wb3J0IHtcclxuICBEZWxldGVPdXRsaW5lZCxcclxuICBEb3dubG9hZE91dGxpbmVkLFxyXG4gIEV5ZU91dGxpbmVkLFxyXG59IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xyXG5jb25zdCB7IHVwbG9hZCwgZG93bmxvYWQsIHByZXZpZXdEb2N1bWVudCwgcHJldmlld0ltYWdlIH0gPSBmaWxlO1xyXG5cclxuaW50ZXJmYWNlIElVcGxvYWRQcm9wcyBleHRlbmRzIFVwbG9hZFByb3BzIHtcclxuICBzbGljZVNpemU/OiBudW1iZXI7XHJcbiAgbWF4U2l6ZT86IG51bWJlciB8IGJvb2xlYW47XHJcbiAgb25Qcm9jZXNzPzogKHByb2Nlc3MpID0+IHZvaWQ7XHJcbiAgb25Db21wbGV0ZT86ICh7IGZpbGUsIGZpbGVJZCwgc3RhdHVzIH0pID0+IHZvaWQ7XHJcbiAgYWxsb3dGaWxlU3VmZml4PzogQXJyYXk8U3RyaW5nPjsgLy/lhYHorrjkuIrkvKDmianlsZXlkI0s5LiN5bimLlxyXG4gIHVzZURlZmF1bHRMaXN0PzogYm9vbGVhbjsgLy/mmK/lkKbkvb/nlKjpu5jorqTnmoRmaWxlTGlzdFxyXG4gIGZpbGVDYXJkPzogYm9vbGVhbjtcclxuICBvbkxpc3RDaGFuZ2U/OiBhbnk7XHJcbiAgY2hlY2tTYW1lRmlsZT86IGJvb2xlYW47XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBuZXdWZXJzaW9uPzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY29uc3Qgd2l0aEN1c3RvbVVwbG9hZCA9IChDb21wb25lbnQpID0+IHtcclxuICAvLyDov5Tlm57kuIDkuKrnsbvnu4Tku7ZcclxuICByZXR1cm4gY2xhc3MgZXh0ZW5kcyBSZWFjdC5QdXJlQ29tcG9uZW50PElVcGxvYWRQcm9wcywgYW55PiB7XHJcbiAgICBzdGF0ZSA9IHtcclxuICAgICAgZmlsZUxpc3Q6IFtdLFxyXG4gICAgICB2aWV3SWQ6IFwiXCIsXHJcbiAgICAgIGZpbGVMaXN0U3RvcmU6IFtdLFxyXG4gICAgICBmaWxlTmFtZXM6IFtdLFxyXG4gICAgfTtcclxuICAgIHVwbG9hZEluZ1NpemUgPSAwO1xyXG4gICAgdXBsb2FkU2l6ZSA9IDA7XHJcbiAgICB1cGxvYWRJbmdMaXN0ID0gW107XHJcbiAgICBwcmV2aWV3VXJsID0ge307XHJcbiAgICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgICAgaWYgKHRoaXMucHJvcHMuZmlsZUxpc3QpIHtcclxuICAgICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdCh0aGlzLnByb3BzLmZpbGVMaXN0KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29udmVydEZpbGVMaXN0KGxpc3Q/OiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICAgIGNvbnN0IHsgZmlsZUxpc3QsIGxpc3RUeXBlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBuZXdGaWxlTGlzdCA9IFtdO1xyXG4gICAgICBsZXQgb2xkTGlzdCA9IGxpc3QgPyBsaXN0IDogZmlsZUxpc3Q7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZmlsZUxpc3RTdG9yZTogWy4uLmZpbGVMaXN0XSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIGFzeW5jICgpID0+IHtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2xkTGlzdC5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbTogYW55ID0gb2xkTGlzdFtpXTtcclxuICAgICAgICAgICAgbGV0IHRlbXAgPSB7XHJcbiAgICAgICAgICAgICAgLi4uaXRlbSxcclxuICAgICAgICAgICAgICBzdGF0dXM6IGl0ZW0uc3RhdHVzLFxyXG4gICAgICAgICAgICAgIG5hbWU6IGl0ZW0ubmFtZSB8fCBpdGVtLmZpbGVOYW1lLFxyXG4gICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgICBzaXplOiBpdGVtLnNpemUsXHJcbiAgICAgICAgICAgICAgdXJsOiBpdGVtLnVybCxcclxuICAgICAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgICAgIGlmIChsaXN0VHlwZSA9PSBcInBpY3R1cmUtY2FyZFwiICYmICFpdGVtLnVybCAmJiBpdGVtLmZpbGVJZCkge1xyXG4gICAgICAgICAgICAgIGxldCByZXM6IGFueSA9IGF3YWl0IHByZXZpZXdJbWFnZShcclxuICAgICAgICAgICAgICAgIGl0ZW0uZmlsZUlkLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5yZXF1ZXN0Q29uZmlnXHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgICB0ZW1wLnVybCA9IHJlcy5kYXRhO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBuZXdGaWxlTGlzdC5wdXNoKHRlbXApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIGZpbGVMaXN0OiBbLi4ubmV3RmlsZUxpc3RdLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gICAgY29tcG9uZW50RGlkVXBkYXRlKHByZVByb3BzLCBwcmVTdGF0ZSkge1xyXG4gICAgICBpZiAodGhpcy5wcm9wcy5maWxlTGlzdCkge1xyXG4gICAgICAgIGlmIChcclxuICAgICAgICAgIEpTT04uc3RyaW5naWZ5KHRoaXMucHJvcHMuZmlsZUxpc3QpICE9PVxyXG4gICAgICAgICAgSlNPTi5zdHJpbmdpZnkodGhpcy5zdGF0ZS5maWxlTGlzdFN0b3JlKVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy5jb252ZXJ0RmlsZUxpc3QodGhpcy5wcm9wcy5maWxlTGlzdCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBnZXRGaWxlTGlzdCgpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuc3RhdGUuZmlsZUxpc3Q7XHJcbiAgICB9XHJcbiAgICBzZXRGaWxlTGlzdChmaWxlTGlzdDogQXJyYXk8T2JqZWN0Pikge1xyXG4gICAgICB0aGlzLmNvbnZlcnRGaWxlTGlzdChmaWxlTGlzdCk7XHJcbiAgICB9XHJcbiAgICBhc3luYyBiZWZvcmVVcGxvYWQoZmlsZSwgb2ZpbGVMaXN0KSB7XHJcbiAgICAgIGxldCB7XHJcbiAgICAgICAgbWF4U2l6ZSA9IDEwMCxcclxuICAgICAgICBhbGxvd0ZpbGVTdWZmaXgsXHJcbiAgICAgICAgY2hlY2tTYW1lRmlsZSA9IHRydWUsXHJcbiAgICAgICAgbWF4Q291bnQsXHJcbiAgICAgICAgc2hvd1VwbG9hZExpc3QsXHJcbiAgICAgICAgZmlsZUxpc3Q6IHByb3BzTGlzdCxcclxuICAgICAgICBvbkxpc3RDaGFuZ2UsXHJcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBsZXQgeyBmaWxlTGlzdCwgZmlsZUxpc3RTdG9yZSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgbGV0IHNpemU6IG51bWJlcjtcclxuICAgICAgaWYgKGFsbG93RmlsZVN1ZmZpeCAmJiAhdGhpcy5jaGVja0ZpbGVUeXBlKGZpbGUpKSB7XHJcbiAgICAgICAgbWVzc2FnZS5lcnJvcihcclxuICAgICAgICAgIGAke2ZpbGUubmFtZX3mlofku7bnsbvlnovkuI3lhYHorrjkuIrkvKDvvIzor7fkuIrkvKDlkI7nvIDkuLoke2FsbG93RmlsZVN1ZmZpeH3nmoTnsbvlnovmlofku7bvvIFgXHJcbiAgICAgICAgKTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKG1heFNpemUgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgaWYgKG1heFNpemUgPT09IHRydWUpIHtcclxuICAgICAgICAgIG1heFNpemUgPSAxMDA7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHNpemUgPSBtYXhTaXplICogMTAyNCAqIDEwMjQ7XHJcbiAgICAgICAgaWYgKHNpemUgPCBmaWxlLnNpemUpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoYCR7ZmlsZS5uYW1lfeaWh+S7tuWkp+Wwj+i2hei/hyR7bWF4U2l6ZX1N77yM6K+36YeN5paw5LiK5Lyg77yBYCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGxldCBmaWxlTmFtZXMgPSBbXTtcclxuICAgICAgaWYgKGNoZWNrU2FtZUZpbGUpIHtcclxuICAgICAgICBjb25zdCBjaGVja0xpc3QgPSB0aGlzLnByb3BzLmZpbGVMaXN0ID8gZmlsZUxpc3RTdG9yZSA6IGZpbGVMaXN0O1xyXG4gICAgICAgIGNoZWNrTGlzdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIGZpbGVOYW1lcy5wdXNoKGl0ZW0ubmFtZSB8fCBpdGVtLmZpbGVOYW1lKTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoZmlsZU5hbWVzLmluZGV4T2YoZmlsZS5uYW1lKSA+IC0xICYmIHNob3dVcGxvYWRMaXN0ICE9PSBmYWxzZSkge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcihg5paH5Lu2JHtmaWxlLm5hbWV95bey5Zyo5LiK5Lyg5YiX6KGo5Lit77yM6K+36YeN5paw6YCJ5oup5paH5Lu277yBYCk7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICBpZiAodGhpcy5wcm9wcy5iZWZvcmVVcGxvYWQpIHtcclxuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCB0aGlzLnByb3BzLmJlZm9yZVVwbG9hZChmaWxlLCBvZmlsZUxpc3QpO1xyXG4gICAgICAgIGlmIChyZXMgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnN0IG5ld0xpc3QgPSBbLi4uZmlsZUxpc3RdO1xyXG4gICAgICBvZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgIShcclxuICAgICAgICAgICAgKGFsbG93RmlsZVN1ZmZpeCAmJiAhdGhpcy5jaGVja0ZpbGVUeXBlKGl0ZW0pKSB8fFxyXG4gICAgICAgICAgICBzaXplIDwgaXRlbS5zaXplIHx8XHJcbiAgICAgICAgICAgIChjaGVja1NhbWVGaWxlICYmIGZpbGVOYW1lcy5pbmRleE9mKGl0ZW0ubmFtZSkgPiAtMSlcclxuICAgICAgICAgIClcclxuICAgICAgICApIHtcclxuICAgICAgICAgIGNvbnN0IHRlbXAgPSB7XHJcbiAgICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLm5hbWUsXHJcbiAgICAgICAgICAgIHBlcmNlbnQ6IDAsXHJcbiAgICAgICAgICAgIHN0YXR1czogXCJ1cGxvYWRpbmdcIixcclxuICAgICAgICAgICAgdWlkOiBpdGVtLnVpZCxcclxuICAgICAgICAgICAgbmFtZTogaXRlbS5uYW1lLFxyXG4gICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgIHNpemU6IGl0ZW0uc2l6ZSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBuZXdMaXN0LnB1c2godGVtcCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIGlmIChtYXhDb3VudCAmJiBuZXdMaXN0Lmxlbmd0aCA+IG1heENvdW50KSB7XHJcbiAgICAgICAgbGV0IGxlbmd0aCA9IG5ld0xpc3QubGVuZ3RoIC0gbWF4Q291bnQ7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbmV3TGlzdC5zcGxpY2UoMCwgMSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogbmV3TGlzdCB9LCAoKSA9PiB7XHJcbiAgICAgICAgb25MaXN0Q2hhbmdlICYmIG9uTGlzdENoYW5nZShuZXdMaXN0KTtcclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMudXBsb2FkU2l6ZSA9IG9maWxlTGlzdC5sZW5ndGg7XHJcbiAgICB9XHJcbiAgICBjaGVja0ZpbGVUeXBlKGZpbGUpIHtcclxuICAgICAgY29uc3QgeyBhbGxvd0ZpbGVTdWZmaXggfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgIGNvbnN0IG5hbWVzID0gZmlsZS5uYW1lLnNwbGl0KFwiLlwiKTtcclxuICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXNbbmFtZXMubGVuZ3RoIC0gMV07XHJcbiAgICAgIGlmIChhbGxvd0ZpbGVTdWZmaXguaW5kZXhPZihzdWZmaXgpID4gLTEgfHwgYWxsb3dGaWxlU3VmZml4LmluZGV4T2Yoc3VmZml4LnRvTG93ZXJDYXNlKCkpID4gLTEgfHwgYWxsb3dGaWxlU3VmZml4LmluZGV4T2Yoc3VmZml4LnRvVXBlcnJjYXNlKCkpID4gLTEpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBvblByb2Nlc3MoeyBwZXJjZW50LCBmaWxlIH06IGFueSkge1xyXG4gICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGlmIChmaWxlLnVpZCA9PSBpdGVtLnVpZCkge1xyXG4gICAgICAgICAgbmV3RmlsZS5wZXJjZW50ID0gcGVyY2VudDtcclxuICAgICAgICB9XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZmlsZUxpc3Q6IG5ld0xpc3QsXHJcbiAgICAgIH0sICgpID0+IHtcclxuICAgICAgICBvbkxpc3RDaGFuZ2UgJiYgb25MaXN0Q2hhbmdlKGZpbGVMaXN0KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgfVxyXG4gICAgYXN5bmMgb25Db21wbGV0ZShmaWxlcykge1xyXG4gICAgICB0aGlzLnVwbG9hZEluZ1NpemUgPSAwO1xyXG4gICAgICB0aGlzLnVwbG9hZFNpemUgPSAwO1xyXG4gICAgICB0aGlzLnVwbG9hZEluZ0xpc3QgPSBbXTtcclxuICAgICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgY29uc3QgeyBuZXdWZXJzaW9uID0gdHJ1ZSwgcmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBuZXdMaXN0OiBhbnkgPSBbXTtcclxuICAgICAgZmlsZUxpc3QubWFwKGFzeW5jIChpdGVtOiBhbnksIGluZGV4KSA9PiB7XHJcbiAgICAgICAgY29uc3QgbmV3RmlsZSA9IHsgLi4uaXRlbSB9O1xyXG4gICAgICAgIGZpbGVzLm1hcChhc3luYyAoZmlsZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZpbGUuZmlsZS51aWQgPT0gaXRlbS51aWQpIHtcclxuICAgICAgICAgICAgbmV3RmlsZS5zdGF0dXMgPSBmaWxlLnN0YXR1cyA9PSBcInN1Y2Nlc3NcIiA/IFwiZG9uZVwiIDogZmlsZS5zdGF0dXM7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUuZmlsZUlkID0gZmlsZS5maWxlSWQ7XHJcbiAgICAgICAgICAgIG5ld0ZpbGUudXJsID0gZmlsZS51cmw7XHJcbiAgICAgICAgICAgIGlmICghbmV3VmVyc2lvbikge1xyXG4gICAgICAgICAgICAgIGxldCB1cmwgPSBgL2pxdWljay1yZXNvdXJjZS9vc3MvZW5kcG9pbnQvZG93bmxvYWQtZmlsZXM/YXR0YWNoSWQ9JHtmaWxlLmZpbGVJZFxyXG4gICAgICAgICAgICAgICAgfSZfdHBrPSR7d2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFwidG9rZW5cIil9YDtcclxuICAgICAgICAgICAgICBuZXdGaWxlLnVybCA9IHJlcXVlc3RDb25maWcucHJlZml4XHJcbiAgICAgICAgICAgICAgICA/IHJlcXVlc3RDb25maWcucHJlZml4ICsgdXJsXHJcbiAgICAgICAgICAgICAgICA6IFwiL2FwaVwiICsgdXJsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbmV3TGlzdC5wdXNoKG5ld0ZpbGUpO1xyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgZmlsZUxpc3Q6IFsuLi5uZXdMaXN0XSxcclxuICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgb25MaXN0Q2hhbmdlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgY3VzdG9tUmVxdWVzdCA9IGFzeW5jIChvcHRpb25zKSA9PiB7XHJcbiAgICAgIGNvbnN0IGZpbGUgPSBvcHRpb25zLmZpbGU7XHJcbiAgICAgIGNvbnN0IHtcclxuICAgICAgICBvbkNvbXBsZXRlLFxyXG4gICAgICAgIG9uUHJvY2VzcyxcclxuICAgICAgICBzbGljZVNpemUsXHJcbiAgICAgICAgbmV3VmVyc2lvbiA9IHRydWUsXHJcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBvblByb2dyZXNzID0gKHRvdGFsUHJvZ3Jlc3M6IGFueSkgPT4ge1xyXG4gICAgICAgIG9wdGlvbnMub25Qcm9ncmVzcyh7IHBlcmNlbnQ6IHRvdGFsUHJvZ3Jlc3MgfSwgZmlsZSk7XHJcbiAgICAgICAgdGhpcy5vblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICAgIG9uUHJvY2VzcyAmJiBvblByb2Nlc3MoeyBwZXJjZW50OiB0b3RhbFByb2dyZXNzLCBmaWxlOiBmaWxlIH0pO1xyXG4gICAgICB9O1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGNvbnN0IHJlczogYW55ID0gYXdhaXQgdXBsb2FkKFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICBmaWxlOiBmaWxlLFxyXG4gICAgICAgICAgICBvblByb2dyZXNzOiBvblByb2dyZXNzLFxyXG4gICAgICAgICAgICBwYXJ0U2l6ZTogc2xpY2VTaXplLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHRoaXMucHJvcHMucmVxdWVzdENvbmZpZ1xyXG4gICAgICAgICk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRJbmdTaXplID0gdGhpcy51cGxvYWRJbmdTaXplICsgMTtcclxuICAgICAgICBsZXQgZmlsZUlkID0gbnVsbDtcclxuICAgICAgICBsZXQgSW1nUmVzID0gbnVsbDtcclxuICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICBmaWxlSWQgPSByZXMuZGF0YS5hdHRhY2hJZDtcclxuICAgICAgICAgIG9wdGlvbnMub25TdWNjZXNzKCk7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9wcy5saXN0VHlwZSA9PSBcInBpY3R1cmUtY2FyZFwiICYmIG5ld1ZlcnNpb24pIHtcclxuICAgICAgICAgICAgSW1nUmVzID0gYXdhaXQgcHJldmlld0ltYWdlKGZpbGVJZCwgdGhpcy5wcm9wcy5yZXF1ZXN0Q29uZmlnKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMudXBsb2FkSW5nTGlzdC5wdXNoKHtcclxuICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgIGZpbGVJZDogZmlsZUlkLFxyXG4gICAgICAgICAgc3RhdHVzOiByZXMuY29kZSA9PSAyMDAgPyBcInN1Y2Nlc3NcIiA6IFwiZXJyb3JcIixcclxuICAgICAgICAgIHVybDogSW1nUmVzID8gSW1nUmVzLmRhdGEgOiBudWxsLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdjdXN0b21SZXF1ZXN0LXVwbG9hZFNpemUnLHRoaXMudXBsb2FkU2l6ZSlcclxuICAgICAgICAvLyBjb25zb2xlLmxvZygnY3VzdG9tUmVxdWVzdC11cGxvYWRJbmdTaXplJyx0aGlzLnVwbG9hZEluZ1NpemUpXHJcbiAgICAgICAgLy8gaWYgKHRoaXMudXBsb2FkU2l6ZSA9PSB0aGlzLnVwbG9hZEluZ1NpemUpIHtcclxuICAgICAgICB0aGlzLm9uQ29tcGxldGUodGhpcy51cGxvYWRJbmdMaXN0KTtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgb25Db21wbGV0ZSAmJlxyXG4gICAgICAgICAgb25Db21wbGV0ZSh7XHJcbiAgICAgICAgICAgIGZpbGU6IG9wdGlvbnMuZmlsZSxcclxuICAgICAgICAgICAgZmlsZUlkOiBmaWxlSWQsXHJcbiAgICAgICAgICAgIHN0YXR1czogcmVzLmNvZGUgPT0gMjAwID8gXCJzdWNjZXNzXCIgOiBcImVycm9yXCIsXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgIC8vIGlmICh0aGlzLnVwbG9hZFNpemUgPT0gdGhpcy51cGxvYWRJbmdTaXplKSB7XHJcbiAgICAgICAgdGhpcy5vbkNvbXBsZXRlKHRoaXMudXBsb2FkSW5nTGlzdCk7XHJcbiAgICAgICAgb3B0aW9ucy5vbkVycm9yKCk7XHJcbiAgICAgICAgLy8gfVxyXG5cclxuICAgICAgICBvbkNvbXBsZXRlICYmXHJcbiAgICAgICAgICBvbkNvbXBsZXRlKHsgZmlsZTogb3B0aW9ucy5maWxlLCBmaWxlSWQ6IFwiXCIsIHN0YXR1czogXCJlcnJvclwiIH0pO1xyXG4gICAgICB9XHJcbiAgICB9O1xyXG4gICAgb25EZWxldGUoZmlsZSkge1xyXG4gICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICBjb25zdCB7IG9uTGlzdENoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgY29uc3QgbmV3TGlzdDogYW55ID0gW107XHJcbiAgICAgIGZpbGVMaXN0Lm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgLy/pgJrov4fmlofku7blkI3liKTmlq3vvIzkuIrkvKDmmK/mlofku7blkI3mmK/llK/kuIDnmoRcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBpdGVtLm5hbWUgIT09IGZpbGUubmFtZSB8fFxyXG4gICAgICAgICAgaXRlbS5maWxlSWQgIT09IGZpbGUuZmlsZUlkIHx8XHJcbiAgICAgICAgICBpdGVtLnVpZCAhPT0gZmlsZS51aWRcclxuICAgICAgICApIHtcclxuICAgICAgICAgIG5ld0xpc3QucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBmaWxlTGlzdDogbmV3TGlzdCxcclxuICAgICAgfSwgKCkgPT4ge1xyXG4gICAgICAgIG9uTGlzdENoYW5nZSAmJiBvbkxpc3RDaGFuZ2UobmV3TGlzdCk7XHJcbiAgICAgIH0pO1xyXG5cclxuICAgIH1cclxuICAgIHJlbmRlcigpOiBSZWFjdC5SZWFjdE5vZGUge1xyXG4gICAgICBsZXQge1xyXG4gICAgICAgIGZpbGVMaXN0LFxyXG4gICAgICAgIGZpbGVDYXJkLFxyXG4gICAgICAgIHNob3dVcGxvYWRMaXN0ID0ge1xyXG4gICAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICAgIHNob3dQcmV2aWV3SWNvbjogZmFsc2UsXHJcbiAgICAgICAgICBzaG93UmVtb3ZlSWNvbjogdHJ1ZSxcclxuICAgICAgICAgIGRvd25sb2FkSWNvbjogbnVsbCxcclxuICAgICAgICAgIHJlbW92ZUljb246IG51bGwsXHJcbiAgICAgICAgICBwcmV2aWV3SWNvbjogbnVsbCxcclxuICAgICAgICB9IGFzIGFueSxcclxuICAgICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgICBjb25zdCBuZXdwcm9wcyA9IG9taXQodGhpcy5wcm9wcywgW1xyXG4gICAgICAgIFwic2xpY2VTaXplXCIsXHJcbiAgICAgICAgXCJtYXhTaXplXCIsXHJcbiAgICAgICAgXCJvbkNvbXBsZXRlXCIsXHJcbiAgICAgICAgXCJvblByb2Nlc3NcIixcclxuICAgICAgICBcImFsbG93RmlsZVN1ZmZpeFwiLFxyXG4gICAgICAgIFwidXNlRGVmYXVsdExpc3RcIixcclxuICAgICAgICBcImZpbGVDYXJkXCIsXHJcbiAgICAgICAgXCJvbkxpc3RDaGFuZ2VcIixcclxuICAgICAgICBcIm5ld1ZlcnNpb25cIixcclxuICAgICAgICBcInJlcXVlc3RDb25maWdcIixcclxuICAgICAgXSk7XHJcbiAgICAgIGxldCBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgY3VzdG9tUmVxdWVzdDogdGhpcy5jdXN0b21SZXF1ZXN0LmJpbmQodGhpcyksXHJcbiAgICAgICAgbXVsdGlwbGU6IHRydWUsXHJcbiAgICAgIH0gYXMgSVVwbG9hZFByb3BzO1xyXG4gICAgICBpZiAoZmlsZUNhcmQpIHtcclxuICAgICAgICBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgICBpdGVtUmVuZGVyOiAob3JpZ2luTm9kZSwgZmlsZTogYW55LCBjdXJyRmlsZUxpc3QpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IGZpbGUubmFtZSB8fCBmaWxlLmZpbGVOYW1lO1xyXG4gICAgICAgICAgICBjb25zdCBuYW1lcyA9IG5hbWU/LnNwbGl0KFwiLlwiKTtcclxuICAgICAgICAgICAgY29uc3Qgc3VmZml4ID0gbmFtZXMgPyBuYW1lc1tuYW1lcy5sZW5ndGggLSAxXSA6IFwiXCI7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImZpbGUtaXRlbVwiKX0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcImNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwiY29udGVudF9lcnJvclwiKV06IGZpbGUuc3RhdHVzID09IFwiZXJyb3JcIixcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJtYXJrLXBpY3R1cmVcIil9PlxyXG4gICAgICAgICAgICAgICAgICAgIDxGaWxlSWNvbiBzdWZmaXg9e3N1ZmZpeH0gZmlsZUlkPXtmaWxlLmZpbGVJZH0gLz5cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuYW1lXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICB7ZmlsZS5uYW1lIHx8IGZpbGUuZmlsZU5hbWV9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwiaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dQcmV2aWV3SWNvbiAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgKGZpbGUuc3RhdHVzID09IFwiZG9uZVwiIHx8IGZpbGUuZmlsZUlkKSAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblByZXZpZXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblByZXZpZXcoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmV2aWV3RG9jdW1lbnQoZmlsZS5maWxlSWQsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgY3Vyc29yOiBcInBvaW50ZXJcIiB9fVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvblxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8RXllT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LnNob3dEb3dubG9hZEljb24gJiZcclxuICAgICAgICAgICAgICAgICAgICAgIChmaWxlLnN0YXR1cyA9PSBcImRvbmVcIiB8fCBmaWxlLmZpbGVJZCkgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25Eb3dubG9hZCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3dubG9hZChmaWxlLmZpbGVJZCwgdHJ1ZSwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBjdXJzb3I6IFwicG9pbnRlclwiIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICB7c2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3QuZG93bmxvYWRJY29uXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxEb3dubG9hZE91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICAgIHtzaG93VXBsb2FkTGlzdC5zaG93UmVtb3ZlSWNvbiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlbW92ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlbW92ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkRlbGV0ZShmaWxlKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXt7IGN1cnNvcjogXCJwb2ludGVyXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3Nob3dVcGxvYWRMaXN0LmRvd25sb2FkSWNvbiA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdC5kb3dubG9hZEljb25cclxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA8RGVsZXRlT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICB7ZmlsZS5zdGF0dXMgPT0gXCJ1cGxvYWRpbmdcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJwcm9jZXNzXCIpfT5cclxuICAgICAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInBlcmNlbnRcIil9XHJcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogZmlsZS5wZXJjZW50ICsgXCIlXCIgfX1cclxuICAgICAgICAgICAgICAgICAgICA+PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBkZWZhdWx0UHJvcHMgPSB7XHJcbiAgICAgICAgICAuLi5kZWZhdWx0UHJvcHMsXHJcbiAgICAgICAgICBvbkRvd25sb2FkOiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uRG93bmxvYWQpIHtcclxuICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uRG93bmxvYWQoZmlsZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgZG93bmxvYWQoZmlsZS5maWxlSWQsIHRydWUsIHJlcXVlc3RDb25maWcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25SZW1vdmU6IChmaWxlKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUmVtb3ZlKSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlbW92ZShmaWxlKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKGZpbGUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgb25QcmV2aWV3OiAoZmlsZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uUHJldmlldykge1xyXG4gICAgICAgICAgICAgIHRoaXMucHJvcHMub25QcmV2aWV3KGZpbGUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGlmIChmaWxlPy5maWxlSWQpIHtcclxuICAgICAgICAgICAgICAgIHByZXZpZXdEb2N1bWVudChmaWxlLmZpbGVJZCwgcmVxdWVzdENvbmZpZyk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgc2hvd1VwbG9hZExpc3Q6IHsgLi4uc2hvd1VwbG9hZExpc3QgfSxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPD5cclxuICAgICAgICAgIDxDb21wb25lbnRcclxuICAgICAgICAgICAgey4uLmRlZmF1bHRQcm9wc31cclxuICAgICAgICAgICAgey4uLm5ld3Byb3BzfVxyXG4gICAgICAgICAgICBiZWZvcmVVcGxvYWQ9e3RoaXMuYmVmb3JlVXBsb2FkLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0fVxyXG4gICAgICAgICAgLz5cclxuICAgICAgICA8Lz5cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9O1xyXG59O1xyXG5cclxuY29uc3QgTnNjVXBsb2FkOiBhbnkgPSB3aXRoQ3VzdG9tVXBsb2FkKFVwbG9hZCk7XHJcbi8vIC8vIOS9v+eUqCB3aXRoQ3VzdG9tVXBsb2FkIOWwgeijhSBVcGxvYWQuRHJhZ2dlciDnu4Tku7ZcclxuY29uc3QgTnNjVXBsb2FkRHJhZ2dlciA9IHdpdGhDdXN0b21VcGxvYWQoVXBsb2FkLkRyYWdnZXIpO1xyXG5Oc2NVcGxvYWQuRHJhZ2dlciA9IE5zY1VwbG9hZERyYWdnZXI7XHJcbmV4cG9ydCBkZWZhdWx0IE5zY1VwbG9hZDtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBLE9BQU8sS0FBS0EsS0FBSyxNQUFNLE9BQU87QUFFOUIsT0FBT0MsSUFBSSxNQUFNLFVBQVU7QUFDM0IsT0FBT0MsT0FBTyxNQUFNLFlBQVk7QUFDaEMsT0FBT0MsSUFBSSxNQUFNLFNBQVM7QUFDMUIsU0FBU0MsT0FBTyxRQUFRLGFBQWE7QUFDckMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsT0FBT0MsR0FBRyxNQUFNLFlBQVk7QUFDNUIsT0FBT0MsUUFBUSxNQUFNLG9CQUFvQjtBQUN6QyxTQUNFQyxjQUFjLEVBQ2RDLGdCQUFnQixFQUNoQkMsV0FBVyxRQUNOLG1CQUFtQjtBQUMxQixNQUFNO0VBQUVDLE1BQU07RUFBRUMsUUFBUTtFQUFFQyxlQUFlO0VBQUVDO0FBQWEsQ0FBQyxHQUFHYixJQUFJO0FBZ0JoRSxNQUFNYyxnQkFBZ0IsR0FBSUMsU0FBUyxJQUFLO0VBQ3RDO0VBQ0EsT0FBTyxjQUFjaEIsS0FBSyxDQUFDaUIsYUFBYSxDQUFvQjtJQUFBQyxZQUFBO01BQUEsU0FBQUMsU0FBQTtNQUFBQyxlQUFBLGdCQUNsRDtRQUNOQyxRQUFRLEVBQUUsRUFBRTtRQUNaQyxNQUFNLEVBQUUsRUFBRTtRQUNWQyxhQUFhLEVBQUUsRUFBRTtRQUNqQkMsU0FBUyxFQUFFO01BQ2IsQ0FBQztNQUFBSixlQUFBLHdCQUNlLENBQUM7TUFBQUEsZUFBQSxxQkFDSixDQUFDO01BQUFBLGVBQUEsd0JBQ0UsRUFBRTtNQUFBQSxlQUFBLHFCQUNMLENBQUMsQ0FBQztNQUFBQSxlQUFBLHdCQW9NQyxNQUFPSyxPQUFPLElBQUs7UUFDakMsTUFBTXhCLElBQUksR0FBR3dCLE9BQU8sQ0FBQ3hCLElBQUk7UUFDekIsTUFBTTtVQUNKeUIsVUFBVTtVQUNWQyxTQUFTO1VBQ1RDLFNBQVM7VUFDVEMsVUFBVSxHQUFHO1FBQ2YsQ0FBQyxHQUFHLElBQUksQ0FB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