nsc-react-component 4.3.2 → 4.3.4

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.
@@ -96,9 +96,12 @@ class FormPage extends PureComponent {
96
96
  const {
97
97
  defaultValue
98
98
  } = this.props;
99
+ console.log('');
99
100
  return convertStringToObj(defaultValue, this.props.Utils || {}, {
100
101
  funcs: this.props.funcs,
101
- pageRef: this.props.pageRef
102
+ pageRef: this.props.pageRef,
103
+ formRef: this.formRef,
104
+ refs: this.refList
102
105
  });
103
106
  }
104
107
  //表单显示
@@ -420,7 +423,8 @@ class FormPage extends PureComponent {
420
423
  data,
421
424
  formRef: this.formRef,
422
425
  funcs: this.props.funcs || {},
423
- refs: this.refList
426
+ refs: this.refList,
427
+ pageRef: this.props.pageRef
424
428
  };
425
429
  const Utils = this.props.Utils || {};
426
430
  if (type == "Select") {
@@ -601,19 +605,22 @@ class FormPage extends PureComponent {
601
605
  let newFormsObj = {};
602
606
  let formGroups = [];
603
607
  let otherGrups = [];
604
-
608
+ let showForms = [];
605
609
  //处理表单数据
606
610
  forms.map(item => {
607
- if (item.groupName && formGroups.indexOf(item.groupName) < 0) {
608
- formGroups.push(item.groupName);
609
- } else if (!item.groupName) {
610
- otherGrups.push(item);
611
+ if (item.show !== false) {
612
+ showForms.push(item);
613
+ if (item.groupName && formGroups.indexOf(item.groupName) < 0) {
614
+ formGroups.push(item.groupName);
615
+ } else if (!item.groupName) {
616
+ otherGrups.push(item);
617
+ }
611
618
  }
612
619
  });
613
620
  if (formGroups.length > 0) {
614
621
  formGroups.map(item => {
615
622
  let groupForms = [];
616
- forms.map(form => {
623
+ showForms.map(form => {
617
624
  if (form.groupName == item) {
618
625
  groupForms.push(form);
619
626
  }
@@ -649,9 +656,9 @@ class FormPage extends PureComponent {
649
656
  changeValid: this.props.changeValid
650
657
  }, props), /*#__PURE__*/React.createElement("div", {
651
658
  className: "nsc-form-page"
652
- }, formGroups.length == 0 ? this.props.formType !== "page" ? this.renderForm(forms, label) : /*#__PURE__*/React.createElement("div", {
659
+ }, formGroups.length == 0 ? this.props.formType !== "page" ? this.renderForm(showForms, label) : /*#__PURE__*/React.createElement("div", {
653
660
  className: "nsc-form-pane"
654
- }, this.renderForm(forms, label)) : Object.keys(newFormsObj).map(key => {
661
+ }, this.renderForm(showForms, label)) : Object.keys(newFormsObj).map(key => {
655
662
  return /*#__PURE__*/React.createElement("div", {
656
663
  key: key,
657
664
  className: "nsc-form-pane"
@@ -666,7 +673,7 @@ class FormPage extends PureComponent {
666
673
  key: index
667
674
  }, PaneWithoutPageType(Pane, _objectSpread({}, Pane.props)));
668
675
  }), formType === "page" && footer == true && /*#__PURE__*/React.createElement("div", {
669
- className: cls("nsc-form-page-footer", [this.state.width ? "nsc-form-page-footer-width" : ""], this.props.footerClassName)
676
+ className: cls(this.props.footerClassName, "nsc-form-page-footer", [this.state.width ? "nsc-form-page-footer-width" : ""])
670
677
  }, /*#__PURE__*/React.createElement(Button, _extends({}, this.props.cancelButtonProps, {
671
678
  onClick: () => {
672
679
  if (this.props.onCancel) {
@@ -694,4 +701,4 @@ class FormPage extends PureComponent {
694
701
  }
695
702
  }
696
703
  export default FormPage;
697
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZ2V0TG9jYWxTdG9yZSIsImRheWpzIiwibG9kYXNoIiwiQnV0dG9uIiwiVXBsb2FkIiwiY2xzIiwiTnNjUmVxdWVzdCIsImNvbnZlcnRTdHJpbmdUb09iaiIsIkZvcm1QYWdlIiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJsb2FkaW5nIiwibGFiZWwiLCJwcm9wcyIsImVkaXRUeXBlIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJ3aWR0aCIsImVkaXRJZCIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImNsb3NlIiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRNb3VudCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiZm9ybVR5cGUiLCJyZXF1ZXN0T2JqZWN0IiwiZGV0YWlsVXJsIiwiZ2V0IiwicGFyYW1zIiwiaWQiLCJzdGF0ZSIsInhzc0ZpbHRlciIsImF1dG9QcmVmaXgiLCJ0aGVuIiwicmVzIiwiY29kZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2V0RmllbGRzVmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwiZGVmYXVsdFZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MiIsImNvbnZlcnREZWZhdWx0VmFsdWUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJVdGlscyIsImZ1bmNzIiwicGFnZVJlZiIsInNob3ciLCJvcmdWYWx1ZSIsImVkaXRvcmZsYWciLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJjYWxsQmFjayIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJjb252ZXJ0VmFsdWUiLCJzaG93Rm9ybSIsImFmdGVyUmVuZGVyIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ1Iiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NiIsInNldExvYWRpbmciLCJzZXRFZGl0VHlwZSIsInR5cGUiLCJzZXRFZGl0SWQiLCJnZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3IiwiZm9ybVZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJjbG9uZURlZXAiLCJmaWxlRm9ybWF0IiwibmV3RmlsZUxpc3QiLCJtYXAiLCJpdGVtIiwiZ2V0RmlsZUxpc3QiLCJzdWJtaXRGbGFnIiwiZXJyb3IiLCJkYXRlVmFsdWVGb3JtYXQiLCJrZXkiLCJvbGRkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwicmFuZ2VyRGF0ZSIsImRhdGVGb3JtYXQiLCJlIiwibmV3RGF0YSIsInN0cmluZ2lmeSIsInZhbHVlcyIsImZvckVhY2giLCJmaWxlS2V5IiwidmFsdWUxIiwidmFsdWUyIiwic2V0Rm9ybVZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50OCIsIm5ld1ZhbHVlIiwiZG9TdWJtaXQiLCJmb3JtZGF0YSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDkiLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJyZXF1ZXN0Q29uZmlnIiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIiwidXJsIiwiZnVuYyIsIkZ1bmN0aW9uIiwiY29udmVyUGFyYW1zIiwiY29uc29sZSIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwib25TdWJtaXQiLCJub1VuZGVmaW5lZCIsIm1zZyIsInN1Y2Nlc3MiLCJzZXRUaW1lb3V0Iiwib2JqIiwiZmlsZUlkIiwiZmlsZU5hbWUiLCJzdGF0dXMiLCJwdXNoIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MTAiLCJ2YWxpZCIsInZhbGlkYXRlRmllbGRzIiwicmV0dXJuRGF0YSIsImNhdGNoIiwiZXJyb3JJbmZvIiwidmFsdWVDaGFuZ2UiLCJfcmVmIiwidmFsdWVPcHRpb24iLCJkaWN0TmFtZSIsIm5ld05hbWVzIiwib25DaGFuZ2UiLCJldmVudE9wdGlvbiIsInJlZnMiLCJyZWZMaXN0IiwidmFsdWVTdHIiLCJzZWxmRnVuYyIsInJlbmRlckZvcm0iLCJmb3JtcyIsIm5ld1ZhbGlkIiwiY3JlYXRlRWxlbWVudCIsImd1dHRlciIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJzcGxpdCIsImFsbG93Q2hhcnMiLCJwbGFjZWhvbGRlciIsImNvbmNhdCIsImJpbmQiLCJkYXRhVHlwZSIsImRpc2FibGVkIiwicnVsZXMiLCJyZXF1aXJlZCIsIml0ZW1SZWYiLCJfaXRlbSRwcm9wczIiLCJzcGFuIiwic3R5bGUiLCJkaXNwbGF5IiwiSXRlbSIsImNvbXBvbmVudE5hbWUiLCJub1N0eWxlIiwiZm9ybVJlbmRlciIsInJlZiIsIl9pdGVtJHByb3BzMyIsIl9pdGVtJHByb3BzNCIsIl9pdGVtJHByb3BzNSIsIl9leHRlbmRzIiwib25MaXN0Q2hhbmdlIiwibGlzdCIsInNob3dVcGxvYWRMaXN0Iiwic2hvd0Rvd25sb2FkSWNvbiIsInNob3dSZW1vdmVJY29uIiwiY2hpbGRyZW4iLCJyZW5kZXIiLCJmb290ZXIiLCJ0aXRsZSIsIm1vZGFsUHJvcHMiLCJkZWZhdWx0TW9kYWxQcm9wcyIsImRyYXdlclByb3BzIiwiZGVmYXVsdERyYXdlclByb3BzIiwic2VsZkJ1dHRvbnMiLCJzZWxmUGFuZXMiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsInBhZ2VUeXBlIiwib25PayIsIm9uQ2FuY2VsIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwiZm9vdGVyQnV0dG9uIiwib25DbG9zZSIsIm5ld0Zvcm1zT2JqIiwiZm9ybUdyb3VwcyIsIm90aGVyR3J1cHMiLCJncm91cE5hbWUiLCJpbmRleE9mIiwiZ3JvdXBGb3JtcyIsImZvcm0iLCJQYW5lV2l0aG91dFBhZ2VUeXBlIiwiUGFuZSIsImNsZWFuUHJvcHMiLCJfZXhjbHVkZWQyIiwic2hvd01vZGVsIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiwgZ2V0TG9jYWxTdG9yZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSBcIi4uLy4uL2Jhc2UvdXBsb2FkXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5pbXBvcnQgTnNjUmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IENvbXBvdW5kZWRTcGFjZSBmcm9tIFwiYW50ZC9lcy9zcGFjZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0U3RyaW5nVG9PYmogfSBmcm9tIFwiLi4vU2V0dGluZ1V0aWwvdXRpbHNcIjtcclxuZXhwb3J0IGludGVyZmFjZSBGb3JtUGFnZVByb3BzIHtcclxuICBmb3Jtcz86IEFycmF5PGFueT47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBmb290ZXJDbGFzc05hbWU/OiBhbnk7XHJcbiAgb2tCdXR0b25Qcm9wcz86IGFueTtcclxuICBjYW5jZWxCdXR0b25Qcm9wcz86IGFueTtcclxuICBmb290ZXI/OiBSZWFjdE5vZGUgfCBib29sZWFuO1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uRm9ybUNoYW5nZT86ICh2YWx1ZT86IGFueSwgYWxsVmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgc3VibWl0UGFyYW1zPzogYW55OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBmdW5jcz86IGFueTtcclxuICBwcm9wcz86IElGb3JtUHJvcHM7XHJcbiAgcmVxdWVzdE9iamVjdD86IHtcclxuICAgIGFkZFVybD86IHN0cmluZztcclxuICAgIGVkaXRvclVybD86IHN0cmluZztcclxuICAgIGFkZFBhcmFtcz86IGFueTtcclxuICAgIGVkaXRvclBhcmFtcz86IGFueTtcclxuICAgIGRldGFpbFVybD86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgZm9vdGVyV2lkdGg/OiBib29sZWFuO1xyXG4gIGVkaXRUeXBlPzogXCLmlrDlop5cIiB8IFwi57yW6L6RXCIgfCBcIuafpeeci1wiO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGVkaXRJZD86IHN0cmluZztcclxuICBtb2RhbFByb3BzPzphbnlcclxuICBkcmF3ZXJQcm9wcz86YW55XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNsYXNzIEZvcm1QYWdlIGV4dGVuZHMgUHVyZUNvbXBvbmVudDxGb3JtUGFnZVByb3BzLCBhbnk+IHtcclxuICBmb3JtUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzdGF0ZSA9IHtcclxuICAgIGxvYWRpbmc6IGZhbHNlLFxyXG4gICAgbGFiZWw6IHRoaXMucHJvcHMuZWRpdFR5cGUgfHwgXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgICBmaWxlTGlzdDoge30gYXMgYW55LFxyXG4gICAgd2lkdGg6IGdldExvY2FsU3RvcmUoXCJuc2MtaG9tZS1tZW51Q29sbHNhcGVcIikgfHwgZmFsc2UsXHJcbiAgICBlZGl0SWQ6IHRoaXMucHJvcHMuZWRpdElkIHx8IFwiXCIsXHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZmlsZUZvcm1hdCA9IFtdIGFzIGFueTtcclxuICByYW5nZXJEYXRlID0ge30gYXMgYW55O1xyXG4gIHJlZkxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgc3VibWl0RmxhZyA9IHRydWU7XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKTogdm9pZCB7XHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZm9ybVR5cGUgPSBcInBhZ2VcIixcclxuICAgICAgcmVxdWVzdE9iamVjdCA9IHt9LFxyXG4gICAgICBlZGl0VHlwZSA9IFwi5paw5aKeXCIsXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChmb3JtVHlwZSA9PSBcInBhZ2VcIikge1xyXG4gICAgICBpZiAocmVxdWVzdE9iamVjdC5kZXRhaWxVcmwgJiYgZWRpdFR5cGUgIT09IFwi5paw5aKeXCIpIHtcclxuICAgICAgICBOc2NSZXF1ZXN0LmdldChyZXF1ZXN0T2JqZWN0LmRldGFpbFVybCwge1xyXG4gICAgICAgICAgcGFyYW1zOiB7IGlkOiB0aGlzLnN0YXRlLmVkaXRJZCB9LFxyXG4gICAgICAgICAgeHNzRmlsdGVyOiBmYWxzZSxcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgfSkudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh7IC4uLnJlcy5kYXRhIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGVkaXRUeXBlID09IFwi5paw5aKeXCIpIHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wcy5kZWZhdWx0VmFsdWUpIHtcclxuICAgICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB0aGlzLmNvbnZlcnREZWZhdWx0VmFsdWUoKTtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZShkZWZhdWx0VmFsdWUgfHwge30pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBsaXN0ZW5NZXNzYWdlID0gKGV2KSA9PiB7XHJcbiAgICBjb25zdCBkYXRhID0gdHlwZW9mIGV2LmRhdGEgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGV2LmRhdGEpIDogZXYuZGF0YTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT0gXCJtZW51Q29sbHNhcGVcIikge1xyXG4gICAgICBjb25zdCB7IHBheWxvYWQgfSA9IGRhdGE7XHJcbiAgICAgIGlmIChwYXlsb2FkLmNsb3NlID09PSB0cnVlIHx8IHBheWxvYWQuY2xvc2UgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyB3aWR0aDogcGF5bG9hZC5jbG9zZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgY29udmVydERlZmF1bHRWYWx1ZSgpIHtcclxuICAgIGNvbnN0IHsgZGVmYXVsdFZhbHVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgcmV0dXJuIGNvbnZlcnRTdHJpbmdUb09iaihkZWZhdWx0VmFsdWUsIHRoaXMucHJvcHMuVXRpbHMgfHwge30sIHtcclxuICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+ihqOWNleaYvuekulxyXG4gIHNob3cob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiAoZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgICAgZWRpdElkOiBvcmdWYWx1ZS5pZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKG9yZ1ZhbHVlLCBsYWJlbCk7XHJcbiAgICAgICAgICAvL+WkhOeQhuaWh+S7tuaVsOaNrlxyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlXHJcbiAgICAgICAgICAgID8gdGhpcy5jb252ZXJ0RGVmYXVsdFZhbHVlKClcclxuICAgICAgICAgICAgOiB7fTtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybShkZWZhdWx0VmFsdWUgfHwge30sIHtcclxuICAgICAgICAgICAgYWZ0ZXJSZW5kZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoaWRlKGhpZGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IG9uSGlkZUZvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25IaWRlRm9ybSkge1xyXG4gICAgICBvbkhpZGVGb3JtICYmIG9uSGlkZUZvcm0oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICBoaWRlICYmIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIHNob3dGb3JtKG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvdyhvcmdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spO1xyXG4gIH1cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBsb2FkaW5nIH0pO1xyXG4gIH1cclxuICBzZXRFZGl0VHlwZSh0eXBlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgbGFiZWw6IHR5cGUsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0RWRpdElkKGlkKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWRpdElkOiBpZCxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRGb3JtVmFsdWUoKSB7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IGRhdGEgPSBsb2Rhc2guY2xvbmVEZWVwKHsgLi4uZm9ybVZhbHVlLCAuLi5kaWN0TmFtZXMgfSk7XHJcbiAgICBpZiAodGhpcy5maWxlRm9ybWF0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IG5ld0ZpbGVMaXN0ID0ge30gYXMgYW55O1xyXG4gICAgICB0aGlzLmZpbGVGb3JtYXQubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbGVMaXN0W2l0ZW1dLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChmaWxlTGlzdFtpdGVtXSB8fCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgLi4ubmV3RmlsZUxpc3QgfTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zdWJtaXRGbGFnKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXCLor7fnrYnlvoXmiYDmnInmlofku7bkuIrkvKDlrozmiJDvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBkYXRhW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yYW5nZXJEYXRlW2tleV0pIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZGF0YVt0aGlzLnJhbmdlckRhdGVba2V5XVswXV0gPSBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZGF0YVt0aGlzLnJhbmdlckRhdGVba2V5XVsxXV0gPSBkYXlqcyhvbGRkYXRhWzFdKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBkYXlqcyhvbGRkYXRhKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobGFiZWwgPT0gXCLnvJbovpFcIikge1xyXG4gICAgICBkYXRhID0geyAuLi5kYXRhLCBpZDogdmFsdWU/LmlkIHx8IHRoaXMuc3RhdGUuZWRpdElkIH07XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3RGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgcmV0dXJuIG5ld0RhdGE7XHJcbiAgfVxyXG4gIGNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbHVlcyA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBmaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0LmZvckVhY2goKGZpbGVLZXkpID0+IHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1tmaWxlS2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSAmJiBBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICBmaWxlTGlzdFtmaWxlS2V5XSA9IHRoaXMuZ2V0RmlsZUxpc3Qob2xkZGF0YSB8fCBbXSwgdHlwZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2ZpbGVLZXldID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBmaWxlTGlzdCB9KTtcclxuICAgIH1cclxuICAgIC8v5aSE55CG5pel5pyf5qC85byP5pWw5o2uXHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZXNba2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlc1trZXldID0gZGF5anMob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yYW5nZXJEYXRlW2tleV0pIHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlMSA9IHZhbHVlc1t0aGlzLnJhbmdlckRhdGVba2V5XVswXV07XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTIgPSB2YWx1ZXNbdGhpcy5yYW5nZXJEYXRlW2tleV1bMV1dO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUxICYmIHZhbHVlMikge1xyXG4gICAgICAgICAgICAgIHZhbHVlc1trZXldID0gW1xyXG4gICAgICAgICAgICAgICAgZGF5anModmFsdWUxLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgICBkYXlqcyh2YWx1ZTIsIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzO1xyXG4gIH1cclxuICBzZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUgPSBcIuafpeeci1wiKSB7XHJcbiAgICBjb25zdCBuZXdWYWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKHZhbHVlLCB0eXBlKTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZShuZXdWYWx1ZSk7XHJcbiAgfVxyXG4gIGRvU3VibWl0KGZvcm1kYXRhLCBsYWJlbCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdWJtaXRVcmwsXHJcbiAgICAgIHN1Ym1pdFBhcmFtcyA9IHt9LFxyXG4gICAgICBjYWxsQmFjayxcclxuICAgICAgcmVxdWVzdE9iamVjdCA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWRkVXJsLCBlZGl0b3JVcmwsIGFkZFBhcmFtcywgZWRpdG9yUGFyYW1zIH0gPSByZXF1ZXN0T2JqZWN0O1xyXG4gICAgbGV0IHVybCA9IHN1Ym1pdFVybDtcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgaWYgKCFsYWJlbCB8fCBsYWJlbCA9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgIHVybCA9IGFkZFVybCA/IGFkZFVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGFkZFBhcmFtcyAmJiB0eXBlb2YgYWRkUGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBhZGRQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gYWRkUGFyYW1zID8gYWRkUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgdXJsID0gZWRpdG9yVXJsID8gZWRpdG9yVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoZWRpdG9yUGFyYW1zICYmIHR5cGVvZiBlZGl0b3JQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIGVkaXRvclBhcmFtcyk7XHJcbiAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBlZGl0b3JQYXJhbXMgPyBlZGl0b3JQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLphY3nva5VcmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/Lm9uU3VibWl0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICBkYXRhOiB7IC4uLmZvcm1kYXRhLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgbm9VbmRlZmluZWQ6IGxhYmVsID09IFwi57yW6L6RXCIsXHJcbiAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlLCBtc2cgfSA9IHJlcztcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKGxhYmVsICsgXCLmiJDlip9cIik7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgfSwgNTAwKTtcclxuXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRGaWxlTGlzdChkYXRhLCBsYWJlbCA9IFwi5paw5aKeXCIpIHtcclxuICAgIHRoaXMuc3VibWl0RmxhZyA9IHRydWU7XHJcbiAgICBsZXQgZmlsZUxpc3QgPSBbXSBhcyBhbnk7XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgZmlsZUlkOiBpdGVtLmZpbGVJZCxcclxuICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLmZpbGVOYW1lLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICBvYmouc3RhdHVzID0gXCJkb25lXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYWJlbCAhPT0gXCLmn6XnnItcIiAmJiBpdGVtLnN0YXR1cyAhPT0gXCJkb25lXCIpIHtcclxuICAgICAgICAgIHRoaXMuc3VibWl0RmxhZyA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaWxlTGlzdC5wdXNoKG9iaik7XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGZpbGVMaXN0O1xyXG4gIH1cclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCB7IG9uU3VibWl0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBsZXQgdmFsaWQgPSB0aGlzLnZhbGlkO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnRcclxuICAgICAgPy52YWxpZGF0ZUZpZWxkcygpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBsZXQgcmV0dXJuRGF0YSA9IGxvZGFzaC5jbG9uZURlZXAoZGF0YSk7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChyZXR1cm5EYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7fSk7XHJcbiAgfVxyXG4gIHZhbHVlQ2hhbmdlKHsgdHlwZSwgZGljdE5hbWUgfSwgcHJvcHMsIHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSkge1xyXG4gICAgaWYgKHZhbHVlT3B0aW9uKSB7XHJcbiAgICAgIGlmIChkaWN0TmFtZSkge1xyXG4gICAgICAgIGNvbnN0IHsgZGljdE5hbWVzIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgIGNvbnN0IG5ld05hbWVzID0geyAuLi5kaWN0TmFtZXMgfSBhcyBhbnk7XHJcbiAgICAgICAgbmV3TmFtZXNbZGljdE5hbWVdID0gdmFsdWVPcHRpb24ubGFiZWw7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICBkaWN0TmFtZXM6IG5ld05hbWVzLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAocHJvcHMub25DaGFuZ2UpIHtcclxuICAgICAgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7XHJcbiAgICAgICAgICB2YWx1ZSxcclxuICAgICAgICAgIGRhdGEsXHJcbiAgICAgICAgICBmb3JtUmVmOiB0aGlzLmZvcm1SZWYsXHJcbiAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyB8fCB7fSxcclxuICAgICAgICAgIHJlZnM6IHRoaXMucmVmTGlzdCxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gXCJTZWxlY3RcIikge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVPcHRpb24gPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLmRhdGEgPSBkYXRhO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSBcIkRhdGVQaWNrZXJcIiB8fCB0eXBlID09IFwiUmFuZ2VQaWNrZXJcIikge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVTdHIgPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZkZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvblwiLCBcIlV0aWxzXCIsIHByb3BzLm9uQ2hhbmdlKTtcclxuICAgICAgICBzZWxmRnVuYyhldmVudE9wdGlvbiwgVXRpbHMpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICByZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCkge1xyXG4gICAgY29uc3QgbmV3VmFsaWQ6IGFueVtdID0gW107XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Um93IGd1dHRlcj17MjR9PlxyXG4gICAgICAgIHtmb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgY29uc3QgaXRlbVByb3BzID0gaXRlbS5wcm9wcyB8fCB7fTtcclxuICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID1cclxuICAgICAgICAgICAgICBpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtpdGVtLm5hbWVdID0gaXRlbVByb3BzLmZvcm1hdDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpdGVtLnR5cGUgPT0gXCJSYW5nZVBpY2tlclwiICYmIGl0ZW0ubmFtZS5zcGxpdChcIixcIikubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICB0aGlzLnJhbmdlckRhdGVbaXRlbS5uYW1lXSA9IGl0ZW0ubmFtZS5zcGxpdChcIixcIik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBsZXQgYWxsb3dDaGFycyA9IGl0ZW0ucHJvcHM/LmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICAgIHBsYWNlaG9sZGVyOiBg6K+36L6T5YWlJHtpdGVtLmxhYmVsfWAsXHJcbiAgICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXHJcbiAgICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQoXHJcbiAgICAgICAgICAgICAgdGhpcyxcclxuICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgICBkaWN0TmFtZTogaXRlbS5kaWN0TmFtZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIHsgLi4uaXRlbS5wcm9wcyB9XHJcbiAgICAgICAgICAgICksXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgICAgaWYgKCFpdGVtLnR5cGUgfHwgaXRlbS50eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgICAgICAgICBwcm9wcy5hbGxvd0NoYXJzID0gdHJ1ZTsgLy9mb3JtLml0ZW0g5L2/55SoaW5wdXTnu4Tku7ZhbGxvd0NoYXJz5b+F6aG76buY6K6kdHJ1ZSzkuI3nhLbovpPlhaXnibnmrorlrZfnrKbmi7/liLDnmoTlgLzkuI3lr7lcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy52YWx1ZUZvcm1hdDtcclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMuZGF0YVR5cGU7XHJcbiAgICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICAgIHByb3BzLnBsYWNlaG9sZGVyID0gXCJcIjtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmICgoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHx8IGl0ZW0ucmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgbmV3VmFsaWQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnN0IGl0ZW1SZWY6IGFueSA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgICAgICAgICB0aGlzLnJlZkxpc3RbaXRlbS5uYW1lXSA9IGl0ZW1SZWY7XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlICE9PSBcIlVwbG9hZFwiKSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfVxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGl0ZW0uaGlkZSA/IFwibm9uZVwiIDogXCJibG9ja1wiIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZD17aXRlbS5yZXF1aXJlZH1cclxuICAgICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgICAgbm9TdHlsZT17aXRlbS5ub1N0eWxlIHx8IGZhbHNlfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5mb3JtUmVuZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgPyBpdGVtLmZvcm1SZW5kZXIocHJvcHMpXHJcbiAgICAgICAgICAgICAgICAgICAgOiBnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZWY6IGl0ZW1SZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmlsZUZvcm1hdC5wdXNoKGl0ZW0ubmFtZSk7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPENvbFxyXG4gICAgICAgICAgICAgICAgc3Bhbj17aXRlbS5zcGFuIHx8IDEyfVxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGl0ZW0uaGlkZSA/IFwibm9uZVwiIDogXCJibG9ja1wiIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPEZvcm0uSXRlbVxyXG4gICAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgICBydWxlcz17aXRlbS5ydWxlc31cclxuICAgICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdD17dGhpcy5zdGF0ZS5maWxlTGlzdFtpdGVtLm5hbWVdIHx8IFtdfVxyXG4gICAgICAgICAgICAgICAgICAgIG9uTGlzdENoYW5nZT17KGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q6IHsgLi4uZmlsZUxpc3QsIFtpdGVtLm5hbWVdOiBsaXN0IH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0PXt7XHJcbiAgICAgICAgICAgICAgICAgICAgICBzaG93RG93bmxvYWRJY29uOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd1JlbW92ZUljb246IGxhYmVsICE9PSBcIuafpeeci1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgcmVmPXtpdGVtUmVmfVxyXG4gICAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLnByb3BzPy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgPyBpdGVtLnByb3BzPy5jaGlsZHJlblxyXG4gICAgICAgICAgICAgICAgICAgICAgOiBsYWJlbCAhPT0gXCLmn6XnnItcIiAmJiA8QnV0dG9uPuS4iuS8oOaWh+S7tjwvQnV0dG9uPn1cclxuICAgICAgICAgICAgICAgICAgPC9VcGxvYWQ+XHJcbiAgICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgICA8L0NvbD5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9Sb3c+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXIoKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGZvcm1zID0gW10sXHJcbiAgICAgIHByb3BzID0ge30sXHJcbiAgICAgIGZvb3RlciA9IHRydWUsXHJcbiAgICAgIGNoaWxkcmVuLFxyXG4gICAgICBmb3JtVHlwZSA9IFwicGFnZVwiLFxyXG4gICAgICB0aXRsZSA9IFwiXCIsXHJcbiAgICAgIG1vZGFsUHJvcHM6ZGVmYXVsdE1vZGFsUHJvcHM9e30sXHJcbiAgICAgIGRyYXdlclByb3BzOmRlZmF1bHREcmF3ZXJQcm9wc1xyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgbGV0IHNlbGZQYW5lcyA9IFtdIGFzIGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtUGFuZVwiKSB7XHJcbiAgICAgICAgICAgICAgdHlwZW9mIGl0ZW0gPT0gXCJvYmplY3RcIiAmJiBzZWxmUGFuZXMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0eXBlb2YgaXRlbSA9PSBcIm9iamVjdFwiICYmIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1QYW5lXCIpIHtcclxuICAgICAgICB0eXBlb2YgY2hpbGRyZW4gPT0gXCJvYmplY3RcIiAmJiBzZWxmUGFuZXMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdHlwZW9mIGNoaWxkcmVuID09IFwib2JqZWN0XCIgJiYgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBtb2RhbFByb3BzID0ge1xyXG4gICAgICB0aXRsZTogbGFiZWwgKyB0aXRsZSxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgICBmb290ZXJCdXR0b246IHNlbGZCdXR0b25zLFxyXG4gICAgICAuLi5kZWZhdWx0TW9kYWxQcm9wc1xyXG4gICAgfSBhcyBhbnk7XHJcblxyXG4gICAgbGV0IGRyYXdlclByb3BzID0ge1xyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICAgIGZvb3RlckJ1dHRvbjogc2VsZkJ1dHRvbnMsXHJcbiAgICAgIC4uLmRlZmF1bHREcmF3ZXJQcm9wc1xyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICBtb2RhbFByb3BzLmZvb3RlciA9IG51bGw7XHJcbiAgICAgIGRyYXdlclByb3BzLmZvb3RlciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdCA9IHt9O1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmZpbGVGb3JtYXQgPSBbXTtcclxuICAgIGxldCBuZXdGb3Jtc09iaiA9IHt9IGFzIGFueTtcclxuICAgIGxldCBmb3JtR3JvdXBzID0gW10gYXMgYW55O1xyXG4gICAgbGV0IG90aGVyR3J1cHMgPSBbXSBhcyBhbnk7XHJcblxyXG4gICAgLy/lpITnkIbooajljZXmlbDmja5cclxuICAgIGZvcm1zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmdyb3VwTmFtZSAmJiBmb3JtR3JvdXBzLmluZGV4T2YoaXRlbS5ncm91cE5hbWUpIDwgMCkge1xyXG4gICAgICAgIGZvcm1Hcm91cHMucHVzaChpdGVtLmdyb3VwTmFtZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIWl0ZW0uZ3JvdXBOYW1lKSB7XHJcbiAgICAgICAgb3RoZXJHcnVwcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChmb3JtR3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9ybUdyb3Vwcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBncm91cEZvcm1zID0gW10gYXMgYW55O1xyXG4gICAgICAgIGZvcm1zLm1hcCgoZm9ybTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZm9ybS5ncm91cE5hbWUgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBncm91cEZvcm1zLnB1c2goZm9ybSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbmV3Rm9ybXNPYmpbaXRlbV0gPSBncm91cEZvcm1zO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKG90aGVyR3J1cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW1wibm9Hcm91cE5hbWVcIl0gPSBvdGhlckdydXBzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBQYW5lV2l0aG91dFBhZ2VUeXBlID0gKFBhbmUsIHByb3BzKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgcGFnZVR5cGUsIC4uLmNsZWFuUHJvcHMgfSA9IHByb3BzO1xyXG4gICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChQYW5lLnR5cGUsIGNsZWFuUHJvcHMpO1xyXG4gICAgfTtcclxuICAgIC8v6Ieq5a6a5LmJ5oyJ6ZKuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Rm9ybVxyXG4gICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgIHNob3dNb2RlbD17dGhpcy5wcm9wcy5mb3JtVHlwZSA9PSBcInBhZ2VcIiA/IG51bGwgOiB0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgLy8gbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgLy8gd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFnZVwiPlxyXG4gICAgICAgICAge2Zvcm1Hcm91cHMubGVuZ3RoID09IDAgPyAoXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuZm9ybVR5cGUgIT09IFwicGFnZVwiID8gKFxyXG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyRm9ybShmb3JtcywgbGFiZWwpXHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYW5lXCI+XHJcbiAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG5ld0Zvcm1zT2JqKS5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGtleT17a2V5fSBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgIHtrZXkgIT0gXCJub0dyb3VwTmFtZVwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXRpdGxlXCI+e2tleX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucmVuZGVyRm9ybShuZXdGb3Jtc09ialtrZXldLCBsYWJlbCl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7c2VsZlBhbmVzLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgc2VsZlBhbmVzLm1hcCgoUGFuZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYW5lXCIga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgIHtQYW5lV2l0aG91dFBhZ2VUeXBlKFBhbmUsIHsgLi4uUGFuZS5wcm9wcyB9KX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAge2Zvcm1UeXBlID09PSBcInBhZ2VcIiAmJiBmb290ZXIgPT0gdHJ1ZSAmJiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgIFwibnNjLWZvcm0tcGFnZS1mb290ZXJcIixcclxuICAgICAgICAgICAgICAgIFt0aGlzLnN0YXRlLndpZHRoID8gXCJuc2MtZm9ybS1wYWdlLWZvb3Rlci13aWR0aFwiIDogXCJcIl0sXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmZvb3RlckNsYXNzTmFtZVxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5jYW5jZWxCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25DYW5jZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMub2tCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCgpO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9e3RoaXMuc3RhdGUubG9hZGluZ31cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17XCJuc2MtZm9ybS1wYWdlLWZvb3Rlci1idG5cIn1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDkv53lrZhcclxuICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICB7c2VsZkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyLWJ0blwifSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7Zm9ybVR5cGUgPT09IFwicGFnZVwiICYmIGZvb3RlciAhPT0gdHJ1ZSAmJiB0aGlzLnByb3BzLmZvb3Rlcn1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZvcm1QYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQWtCQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxT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
704
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZ2V0TG9jYWxTdG9yZSIsImRheWpzIiwibG9kYXNoIiwiQnV0dG9uIiwiVXBsb2FkIiwiY2xzIiwiTnNjUmVxdWVzdCIsImNvbnZlcnRTdHJpbmdUb09iaiIsIkZvcm1QYWdlIiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJsb2FkaW5nIiwibGFiZWwiLCJwcm9wcyIsImVkaXRUeXBlIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJ3aWR0aCIsImVkaXRJZCIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImNsb3NlIiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRNb3VudCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiZm9ybVR5cGUiLCJyZXF1ZXN0T2JqZWN0IiwiZGV0YWlsVXJsIiwiZ2V0IiwicGFyYW1zIiwiaWQiLCJzdGF0ZSIsInhzc0ZpbHRlciIsImF1dG9QcmVmaXgiLCJ0aGVuIiwicmVzIiwiY29kZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2V0RmllbGRzVmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwiZGVmYXVsdFZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MiIsImNvbnZlcnREZWZhdWx0VmFsdWUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJjb25zb2xlIiwibG9nIiwiVXRpbHMiLCJmdW5jcyIsInBhZ2VSZWYiLCJyZWZzIiwicmVmTGlzdCIsInNob3ciLCJvcmdWYWx1ZSIsImVkaXRvcmZsYWciLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJjYWxsQmFjayIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJjb252ZXJ0VmFsdWUiLCJzaG93Rm9ybSIsImFmdGVyUmVuZGVyIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ1Iiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NiIsInNldExvYWRpbmciLCJzZXRFZGl0VHlwZSIsInR5cGUiLCJzZXRFZGl0SWQiLCJnZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3IiwiZm9ybVZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJjbG9uZURlZXAiLCJmaWxlRm9ybWF0IiwibmV3RmlsZUxpc3QiLCJtYXAiLCJpdGVtIiwiZ2V0RmlsZUxpc3QiLCJzdWJtaXRGbGFnIiwiZXJyb3IiLCJkYXRlVmFsdWVGb3JtYXQiLCJrZXkiLCJvbGRkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwicmFuZ2VyRGF0ZSIsImRhdGVGb3JtYXQiLCJlIiwibmV3RGF0YSIsInN0cmluZ2lmeSIsInZhbHVlcyIsImZvckVhY2giLCJmaWxlS2V5IiwidmFsdWUxIiwidmFsdWUyIiwic2V0Rm9ybVZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50OCIsIm5ld1ZhbHVlIiwiZG9TdWJtaXQiLCJmb3JtZGF0YSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDkiLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJyZXF1ZXN0Q29uZmlnIiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIiwidXJsIiwiZnVuYyIsIkZ1bmN0aW9uIiwiY29udmVyUGFyYW1zIiwib3RoZXJQYXJhbXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfZXhjbHVkZWQiLCJvblN1Ym1pdCIsIm5vVW5kZWZpbmVkIiwibXNnIiwic3VjY2VzcyIsInNldFRpbWVvdXQiLCJvYmoiLCJmaWxlSWQiLCJmaWxlTmFtZSIsInN0YXR1cyIsInB1c2giLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQxMCIsInZhbGlkIiwidmFsaWRhdGVGaWVsZHMiLCJyZXR1cm5EYXRhIiwiY2F0Y2giLCJlcnJvckluZm8iLCJ2YWx1ZUNoYW5nZSIsIl9yZWYiLCJ2YWx1ZU9wdGlvbiIsImRpY3ROYW1lIiwibmV3TmFtZXMiLCJvbkNoYW5nZSIsImV2ZW50T3B0aW9uIiwidmFsdWVTdHIiLCJzZWxmRnVuYyIsInJlbmRlckZvcm0iLCJmb3JtcyIsIm5ld1ZhbGlkIiwiY3JlYXRlRWxlbWVudCIsImd1dHRlciIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJzcGxpdCIsImFsbG93Q2hhcnMiLCJwbGFjZWhvbGRlciIsImNvbmNhdCIsImJpbmQiLCJkYXRhVHlwZSIsImRpc2FibGVkIiwicnVsZXMiLCJyZXF1aXJlZCIsIml0ZW1SZWYiLCJfaXRlbSRwcm9wczIiLCJzcGFuIiwic3R5bGUiLCJkaXNwbGF5IiwiSXRlbSIsImNvbXBvbmVudE5hbWUiLCJub1N0eWxlIiwiZm9ybVJlbmRlciIsInJlZiIsIl9pdGVtJHByb3BzMyIsIl9pdGVtJHByb3BzNCIsIl9pdGVtJHByb3BzNSIsIl9leHRlbmRzIiwib25MaXN0Q2hhbmdlIiwibGlzdCIsInNob3dVcGxvYWRMaXN0Iiwic2hvd0Rvd25sb2FkSWNvbiIsInNob3dSZW1vdmVJY29uIiwiY2hpbGRyZW4iLCJyZW5kZXIiLCJmb290ZXIiLCJ0aXRsZSIsIm1vZGFsUHJvcHMiLCJkZWZhdWx0TW9kYWxQcm9wcyIsImRyYXdlclByb3BzIiwiZGVmYXVsdERyYXdlclByb3BzIiwic2VsZkJ1dHRvbnMiLCJzZWxmUGFuZXMiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsInBhZ2VUeXBlIiwib25PayIsIm9uQ2FuY2VsIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwiZm9vdGVyQnV0dG9uIiwib25DbG9zZSIsIm5ld0Zvcm1zT2JqIiwiZm9ybUdyb3VwcyIsIm90aGVyR3J1cHMiLCJzaG93Rm9ybXMiLCJncm91cE5hbWUiLCJpbmRleE9mIiwiZ3JvdXBGb3JtcyIsImZvcm0iLCJQYW5lV2l0aG91dFBhZ2VUeXBlIiwiUGFuZSIsImNsZWFuUHJvcHMiLCJfZXhjbHVkZWQyIiwic2hvd01vZGVsIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiwgZ2V0TG9jYWxTdG9yZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSBcIi4uLy4uL2Jhc2UvdXBsb2FkXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5pbXBvcnQgTnNjUmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IENvbXBvdW5kZWRTcGFjZSBmcm9tIFwiYW50ZC9lcy9zcGFjZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0U3RyaW5nVG9PYmogfSBmcm9tIFwiLi4vU2V0dGluZ1V0aWwvdXRpbHNcIjtcclxuZXhwb3J0IGludGVyZmFjZSBGb3JtUGFnZVByb3BzIHtcclxuICBmb3Jtcz86IEFycmF5PGFueT47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBmb290ZXJDbGFzc05hbWU/OiBhbnk7XHJcbiAgb2tCdXR0b25Qcm9wcz86IGFueTtcclxuICBjYW5jZWxCdXR0b25Qcm9wcz86IGFueTtcclxuICBmb290ZXI/OiBSZWFjdE5vZGUgfCBib29sZWFuO1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uRm9ybUNoYW5nZT86ICh2YWx1ZT86IGFueSwgYWxsVmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgc3VibWl0UGFyYW1zPzogYW55OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBmdW5jcz86IGFueTtcclxuICBwcm9wcz86IElGb3JtUHJvcHM7XHJcbiAgcmVxdWVzdE9iamVjdD86IHtcclxuICAgIGFkZFVybD86IHN0cmluZztcclxuICAgIGVkaXRvclVybD86IHN0cmluZztcclxuICAgIGFkZFBhcmFtcz86IGFueTtcclxuICAgIGVkaXRvclBhcmFtcz86IGFueTtcclxuICAgIGRldGFpbFVybD86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgZm9vdGVyV2lkdGg/OiBib29sZWFuO1xyXG4gIGVkaXRUeXBlPzogXCLmlrDlop5cIiB8IFwi57yW6L6RXCIgfCBcIuafpeeci1wiO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGVkaXRJZD86IHN0cmluZztcclxuICBtb2RhbFByb3BzPzogYW55O1xyXG4gIGRyYXdlclByb3BzPzogYW55O1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jbGFzcyBGb3JtUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8Rm9ybVBhZ2VQcm9wcywgYW55PiB7XHJcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIGxhYmVsOiB0aGlzLnByb3BzLmVkaXRUeXBlIHx8IFwiXCIsXHJcbiAgICBlZGl0b3JGbGFnOiB0cnVlLFxyXG4gICAgdmFsdWU6IHt9IGFzIGFueSxcclxuICAgIGRpY3ROYW1lczoge30gYXMgYW55LFxyXG4gICAgZmlsZUxpc3Q6IHt9IGFzIGFueSxcclxuICAgIHdpZHRoOiBnZXRMb2NhbFN0b3JlKFwibnNjLWhvbWUtbWVudUNvbGxzYXBlXCIpIHx8IGZhbHNlLFxyXG4gICAgZWRpdElkOiB0aGlzLnByb3BzLmVkaXRJZCB8fCBcIlwiLFxyXG4gIH07XHJcbiAgdmFsaWQ6IGFueSA9IFtdO1xyXG4gIGRhdGVWYWx1ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGZpbGVGb3JtYXQgPSBbXSBhcyBhbnk7XHJcbiAgcmFuZ2VyRGF0ZSA9IHt9IGFzIGFueTtcclxuICByZWZMaXN0ID0ge30gYXMgYW55O1xyXG4gIHN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGZvcm1UeXBlID0gXCJwYWdlXCIsXHJcbiAgICAgIHJlcXVlc3RPYmplY3QgPSB7fSxcclxuICAgICAgZWRpdFR5cGUgPSBcIuaWsOWinlwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoZm9ybVR5cGUgPT0gXCJwYWdlXCIpIHtcclxuICAgICAgaWYgKHJlcXVlc3RPYmplY3QuZGV0YWlsVXJsICYmIGVkaXRUeXBlICE9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgICAgTnNjUmVxdWVzdC5nZXQocmVxdWVzdE9iamVjdC5kZXRhaWxVcmwsIHtcclxuICAgICAgICAgIHBhcmFtczogeyBpZDogdGhpcy5zdGF0ZS5lZGl0SWQgfSxcclxuICAgICAgICAgIHhzc0ZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgIH0pLnRoZW4oKHJlcykgPT4ge1xyXG4gICAgICAgICAgaWYgKHJlcy5jb2RlID09IDIwMCkge1xyXG4gICAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUoeyAuLi5yZXMuZGF0YSB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIGlmIChlZGl0VHlwZSA9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlKSB7XHJcbiAgICAgICAgICBsZXQgZGVmYXVsdFZhbHVlID0gdGhpcy5jb252ZXJ0RGVmYXVsdFZhbHVlKCk7XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUoZGVmYXVsdFZhbHVlIHx8IHt9KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwibWVudUNvbGxzYXBlXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAocGF5bG9hZC5jbG9zZSA9PT0gdHJ1ZSB8fCBwYXlsb2FkLmNsb3NlID09PSBmYWxzZSkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgd2lkdGg6IHBheWxvYWQuY2xvc2UgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIGNvbnZlcnREZWZhdWx0VmFsdWUoKSB7XHJcbiAgICBjb25zdCB7IGRlZmF1bHRWYWx1ZSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnNvbGUubG9nKCcnKVxyXG4gICAgcmV0dXJuIGNvbnZlcnRTdHJpbmdUb09iaihkZWZhdWx0VmFsdWUsIHRoaXMucHJvcHMuVXRpbHMgfHwge30sIHtcclxuICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgZm9ybVJlZjogdGhpcy5mb3JtUmVmLFxyXG4gICAgICByZWZzOiB0aGlzLnJlZkxpc3QsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/ooajljZXmmL7npLpcclxuICBzaG93KG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGxldCBsYWJlbCA9IFwi5paw5aKeXCI7XHJcbiAgICBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLnvJbovpFcIjtcclxuICAgIH0gZWxzZSBpZiAob3JnVmFsdWUgJiYgKGVkaXRvcmZsYWcgPT0gXCJkZXRhaWxcIiB8fCBlZGl0b3JmbGFnID09IFwic2VhcmNoXCIpKSB7XHJcbiAgICAgIGxhYmVsID0gXCLmn6XnnItcIjtcclxuICAgIH1cclxuICAgIGlmIChvcmdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgIHZhbHVlOiBvcmdWYWx1ZSxcclxuICAgICAgICAgIGVkaXRJZDogb3JnVmFsdWUuaWQsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZShvcmdWYWx1ZSwgbGFiZWwpO1xyXG4gICAgICAgICAgLy/lpITnkIbmlofku7bmlbDmja5cclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh2YWx1ZSwge1xyXG4gICAgICAgICAgICBhZnRlclJlbmRlcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCBkZWZhdWx0VmFsdWUgPSB0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZVxyXG4gICAgICAgICAgICA/IHRoaXMuY29udmVydERlZmF1bHRWYWx1ZSgpXHJcbiAgICAgICAgICAgIDoge307XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0oZGVmYXVsdFZhbHVlIHx8IHt9LCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9XHJcbiAgaGlkZShoaWRlID0gdHJ1ZSkge1xyXG4gICAgY29uc3QgeyBvbkhpZGVGb3JtIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKG9uSGlkZUZvcm0pIHtcclxuICAgICAgb25IaWRlRm9ybSAmJiBvbkhpZGVGb3JtKCk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgaGlkZSAmJiB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBzaG93Rm9ybShvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIsIGNhbGxCYWNrPzogYW55KSB7XHJcbiAgICB0aGlzLnNob3cob3JnVmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICB9XHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogbG9hZGluZyB9KTtcclxuICB9XHJcbiAgc2V0RWRpdFR5cGUodHlwZSkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGxhYmVsOiB0eXBlLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHNldEVkaXRJZChpZCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGVkaXRJZDogaWQsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgZ2V0Rm9ybVZhbHVlKCkge1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCBkYXRhID0gbG9kYXNoLmNsb25lRGVlcCh7IC4uLmZvcm1WYWx1ZSwgLi4uZGljdE5hbWVzIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBuZXdGaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChmaWxlTGlzdFtpdGVtXS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3QoZmlsZUxpc3RbaXRlbV0gfHwgW10pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIC4uLm5ld0ZpbGVMaXN0IH07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKFwi6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlVmFsdWVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gZGF0YVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmFuZ2VyRGF0ZVtrZXldKSB7XHJcbiAgICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGRhdGFbdGhpcy5yYW5nZXJEYXRlW2tleV1bMF1dID0gZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRba2V5XVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRhdGFbdGhpcy5yYW5nZXJEYXRlW2tleV1bMV1dID0gZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRba2V5XVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgIGRlbGV0ZSBkYXRhW2tleV07XHJcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZSkge31cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gZGF5anMob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgaWQ6IHZhbHVlPy5pZCB8fCB0aGlzLnN0YXRlLmVkaXRJZCB9O1xyXG4gICAgfVxyXG4gICAgbGV0IG5ld0RhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KGRhdGEpKTtcclxuICAgIHJldHVybiBuZXdEYXRhO1xyXG4gIH1cclxuICBjb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGxldCB2YWx1ZXMgPSBsb2Rhc2guY2xvbmVEZWVwKHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5mb3JFYWNoKChmaWxlS2V5KSA9PiB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZXNbZmlsZUtleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEgJiYgQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgZmlsZUxpc3RbZmlsZUtleV0gPSB0aGlzLmdldEZpbGVMaXN0KG9sZGRhdGEgfHwgW10sIHR5cGUpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBmaWxlTGlzdFtmaWxlS2V5XSA9IFtdO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogZmlsZUxpc3QgfSk7XHJcbiAgICB9XHJcbiAgICAvL+WkhOeQhuaXpeacn+agvOW8j+aVsOaNrlxyXG4gICAgaWYgKCFpc0VtcHR5T2JqKHRoaXMuZGF0ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVzW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIHZhbHVlc1trZXldID0gW1xyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMF0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzFdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgIF07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZXNba2V5XSA9IGRheWpzKG9sZGRhdGEsIHRoaXMuZGF0ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKHRoaXMucmFuZ2VyRGF0ZVtrZXldKSB7XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTEgPSB2YWx1ZXNbdGhpcy5yYW5nZXJEYXRlW2tleV1bMF1dO1xyXG4gICAgICAgICAgICBsZXQgdmFsdWUyID0gdmFsdWVzW3RoaXMucmFuZ2VyRGF0ZVtrZXldWzFdXTtcclxuICAgICAgICAgICAgaWYgKHZhbHVlMSAmJiB2YWx1ZTIpIHtcclxuICAgICAgICAgICAgICB2YWx1ZXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICAgIGRheWpzKHZhbHVlMSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgICAgZGF5anModmFsdWUyLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlcztcclxuICB9XHJcbiAgc2V0Rm9ybVZhbHVlKHZhbHVlLCB0eXBlID0gXCLmn6XnnItcIikge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUobmV3VmFsdWUpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChmb3JtZGF0YSwgbGFiZWwpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3VibWl0VXJsLFxyXG4gICAgICBzdWJtaXRQYXJhbXMgPSB7fSxcclxuICAgICAgY2FsbEJhY2ssXHJcbiAgICAgIHJlcXVlc3RPYmplY3QgPSB7fSxcclxuICAgICAgcmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGFkZFVybCwgZWRpdG9yVXJsLCBhZGRQYXJhbXMsIGVkaXRvclBhcmFtcyB9ID0gcmVxdWVzdE9iamVjdDtcclxuICAgIGxldCB1cmwgPSBzdWJtaXRVcmw7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcclxuICAgIGlmICghbGFiZWwgfHwgbGFiZWwgPT0gXCLmlrDlop5cIikge1xyXG4gICAgICB1cmwgPSBhZGRVcmwgPyBhZGRVcmwgOiBzdWJtaXRVcmw7XHJcbiAgICAgIGlmIChhZGRQYXJhbXMgJiYgdHlwZW9mIGFkZFBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgYWRkUGFyYW1zKTtcclxuICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgICAgcGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IGFkZFBhcmFtcyA/IGFkZFBhcmFtcyA6IHN1Ym1pdFBhcmFtcztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgIHVybCA9IGVkaXRvclVybCA/IGVkaXRvclVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGVkaXRvclBhcmFtcyAmJiB0eXBlb2YgZWRpdG9yUGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBlZGl0b3JQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gZWRpdG9yUGFyYW1zID8gZWRpdG9yUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXVybCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwi6YWN572uVXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGRhdGEgPSB7fSwgLi4ub3RoZXJQYXJhbXMgfSA9IHBhcmFtcztcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5vblN1Ym1pdChcclxuICAgICAgdXJsLFxyXG4gICAgICB7XHJcbiAgICAgICAgZGF0YTogeyAuLi5mb3JtZGF0YSwgLi4uZGF0YSB9LFxyXG4gICAgICAgIG5vVW5kZWZpbmVkOiBsYWJlbCA9PSBcIue8lui+kVwiLFxyXG4gICAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgICAgLi4ub3RoZXJQYXJhbXMsXHJcbiAgICAgIH0sXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgY29kZSwgbXNnIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0RmlsZUxpc3QoZGF0YSwgbGFiZWwgPSBcIuaWsOWinlwiKSB7XHJcbiAgICB0aGlzLnN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gICAgbGV0IGZpbGVMaXN0ID0gW10gYXMgYW55O1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgIGZpbGVJZDogaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgb2JqLnN0YXR1cyA9IFwiZG9uZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFiZWwgIT09IFwi5p+l55yLXCIgJiYgaXRlbS5zdGF0dXMgIT09IFwiZG9uZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEZsYWcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZUxpc3QucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlTGlzdDtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgY29uc3QgeyBvblN1Ym1pdCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHZhbGlkID0gdGhpcy52YWxpZDtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50XHJcbiAgICAgID8udmFsaWRhdGVGaWVsZHMoKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmdldEZvcm1WYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChvblN1Ym1pdCkge1xyXG4gICAgICAgICAgbGV0IHJldHVybkRhdGEgPSBsb2Rhc2guY2xvbmVEZWVwKGRhdGEpO1xyXG4gICAgICAgICAgb25TdWJtaXQgJiYgb25TdWJtaXQocmV0dXJuRGF0YSwgbGFiZWwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnJvckluZm86IGFueSkgPT4ge30pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgcHJvcHMub25DaGFuZ2UodmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgZm9ybVJlZjogdGhpcy5mb3JtUmVmLFxyXG4gICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MgfHwge30sXHJcbiAgICAgICAgICByZWZzOiB0aGlzLnJlZkxpc3QsXHJcbiAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICAgIGlmICh0eXBlID09IFwiU2VsZWN0XCIpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlT3B0aW9uID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgICBldmVudE9wdGlvbi5kYXRhID0gZGF0YTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJEYXRlUGlja2VyXCIgfHwgdHlwZSA9PSBcIlJhbmdlUGlja2VyXCIpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlU3RyID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNlbGZGdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb25cIiwgXCJVdGlsc1wiLCBwcm9wcy5vbkNoYW5nZSk7XHJcbiAgICAgICAgc2VsZkZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyRm9ybShmb3JtcywgbGFiZWwpIHtcclxuICAgIGNvbnN0IG5ld1ZhbGlkOiBhbnlbXSA9IFtdO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPFJvdyBndXR0ZXI9ezI0fT5cclxuICAgICAgICB7Zm9ybXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWVGb3JtYXRbaXRlbS5uYW1lXSA9XHJcbiAgICAgICAgICAgICAgaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlID09IFwiUmFuZ2VQaWNrZXJcIiAmJiBpdGVtLm5hbWUuc3BsaXQoXCIsXCIpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5yYW5nZXJEYXRlW2l0ZW0ubmFtZV0gPSBpdGVtLm5hbWUuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGFsbG93Q2hhcnMgPSBpdGVtLnByb3BzPy5hbGxvd0NoYXJzIHx8IGZhbHNlO1xyXG4gICAgICAgICAgbGV0IHByb3BzID0ge1xyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgICAuLi5pdGVtLnByb3BzLFxyXG4gICAgICAgICAgICBvbkNoYW5nZTogdGhpcy52YWx1ZUNoYW5nZS5iaW5kKFxyXG4gICAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgICAgZGljdE5hbWU6IGl0ZW0uZGljdE5hbWUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7IC4uLml0ZW0ucHJvcHMgfVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7IC8vZm9ybS5pdGVtIOS9v+eUqGlucHV057uE5Lu2YWxsb3dDaGFyc+W/hemhu+m7mOiupHRydWUs5LiN54S26L6T5YWl54m55q6K5a2X56ym5ou/5Yiw55qE5YC85LiN5a+5XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgZGVsZXRlIHByb3BzLmRhdGFUeXBlO1xyXG4gICAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgICAgcHJvcHMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBwcm9wcy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoKGl0ZW0ucnVsZXMgJiYgaXRlbS5ydWxlcy5sZW5ndGggPiAwKSB8fCBpdGVtLnJlcXVpcmVkID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpbmRleCArIDEgPT09IGZvcm1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkID0gbmV3VmFsaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpdGVtUmVmOiBhbnkgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gICAgICAgICAgdGhpcy5yZWZMaXN0W2l0ZW0ubmFtZV0gPSBpdGVtUmVmO1xyXG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSAhPT0gXCJVcGxvYWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn1cclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBpdGVtLmhpZGUgPyBcIm5vbmVcIiA6IFwiYmxvY2tcIiB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU9e2l0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIn1cclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICAgIG5vU3R5bGU9e2l0ZW0ubm9TdHlsZSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW0uZm9ybVJlbmRlclxyXG4gICAgICAgICAgICAgICAgICAgID8gaXRlbS5mb3JtUmVuZGVyKHByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgIDogZ2V0Tm9kZShpdGVtLnR5cGUsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBpdGVtUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVGb3JtYXQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn1cclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBpdGVtLmhpZGUgPyBcIm5vbmVcIiA6IFwiYmxvY2tcIiB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3RbaXRlbS5uYW1lXSB8fCBbXX1cclxuICAgICAgICAgICAgICAgICAgICBvbkxpc3RDaGFuZ2U9eyhsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVMaXN0OiB7IC4uLmZpbGVMaXN0LCBbaXRlbS5uYW1lXTogbGlzdCB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdD17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHNob3dSZW1vdmVJY29uOiBsYWJlbCAhPT0gXCLmn6XnnItcIixcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHJlZj17aXRlbVJlZn1cclxuICAgICAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcz8uY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5wcm9wcz8uY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWwgIT09IFwi5p+l55yLXCIgJiYgPEJ1dHRvbj7kuIrkvKDmlofku7Y8L0J1dHRvbj59XHJcbiAgICAgICAgICAgICAgICAgIDwvVXBsb2FkPlxyXG4gICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvUm93PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBmb3JtcyA9IFtdLFxyXG4gICAgICBwcm9wcyA9IHt9LFxyXG4gICAgICBmb290ZXIgPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgZm9ybVR5cGUgPSBcInBhZ2VcIixcclxuICAgICAgdGl0bGUgPSBcIlwiLFxyXG4gICAgICBtb2RhbFByb3BzOiBkZWZhdWx0TW9kYWxQcm9wcyA9IHt9LFxyXG4gICAgICBkcmF3ZXJQcm9wczogZGVmYXVsdERyYXdlclByb3BzLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgbGV0IHNlbGZQYW5lcyA9IFtdIGFzIGFueTtcclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtUGFuZVwiKSB7XHJcbiAgICAgICAgICAgICAgdHlwZW9mIGl0ZW0gPT0gXCJvYmplY3RcIiAmJiBzZWxmUGFuZXMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0eXBlb2YgaXRlbSA9PSBcIm9iamVjdFwiICYmIHNlbGZCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoY2hpbGRyZW4pIHtcclxuICAgICAgY29uc3QgeyBwcm9wcyB9OiBhbnkgPSBjaGlsZHJlbjtcclxuICAgICAgaWYgKHByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1QYW5lXCIpIHtcclxuICAgICAgICB0eXBlb2YgY2hpbGRyZW4gPT0gXCJvYmplY3RcIiAmJiBzZWxmUGFuZXMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdHlwZW9mIGNoaWxkcmVuID09IFwib2JqZWN0XCIgJiYgc2VsZkJ1dHRvbnMucHVzaChjaGlsZHJlbik7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCBtb2RhbFByb3BzID0ge1xyXG4gICAgICB0aXRsZTogbGFiZWwgKyB0aXRsZSxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgICBmb290ZXJCdXR0b246IHNlbGZCdXR0b25zLFxyXG4gICAgICAuLi5kZWZhdWx0TW9kYWxQcm9wcyxcclxuICAgIH0gYXMgYW55O1xyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgICBmb290ZXJCdXR0b246IHNlbGZCdXR0b25zLFxyXG4gICAgICAuLi5kZWZhdWx0RHJhd2VyUHJvcHMsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdO1xyXG4gICAgbGV0IG5ld0Zvcm1zT2JqID0ge30gYXMgYW55O1xyXG4gICAgbGV0IGZvcm1Hcm91cHMgPSBbXSBhcyBhbnk7XHJcbiAgICBsZXQgb3RoZXJHcnVwcyA9IFtdIGFzIGFueTtcclxuICAgIGxldCBzaG93Rm9ybXMgPSBbXSBhcyBhbnk7XHJcbiAgICAvL+WkhOeQhuihqOWNleaVsOaNrlxyXG4gICAgZm9ybXMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKGl0ZW0uc2hvdyAhPT0gZmFsc2UpIHtcclxuICAgICAgICBzaG93Rm9ybXMucHVzaChpdGVtKTtcclxuICAgICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICAgIGZvcm1Hcm91cHMucHVzaChpdGVtLmdyb3VwTmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmICghaXRlbS5ncm91cE5hbWUpIHtcclxuICAgICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgaWYgKGZvcm1Hcm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3JtR3JvdXBzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGdyb3VwRm9ybXMgPSBbXSBhcyBhbnk7XHJcbiAgICAgICAgc2hvd0Zvcm1zLm1hcCgoZm9ybTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZm9ybS5ncm91cE5hbWUgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBncm91cEZvcm1zLnB1c2goZm9ybSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbmV3Rm9ybXNPYmpbaXRlbV0gPSBncm91cEZvcm1zO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKG90aGVyR3J1cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW1wibm9Hcm91cE5hbWVcIl0gPSBvdGhlckdydXBzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBQYW5lV2l0aG91dFBhZ2VUeXBlID0gKFBhbmUsIHByb3BzKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgcGFnZVR5cGUsIC4uLmNsZWFuUHJvcHMgfSA9IHByb3BzO1xyXG4gICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChQYW5lLnR5cGUsIGNsZWFuUHJvcHMpO1xyXG4gICAgfTtcclxuICAgIC8v6Ieq5a6a5LmJ5oyJ6ZKuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Rm9ybVxyXG4gICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgIHNob3dNb2RlbD17dGhpcy5wcm9wcy5mb3JtVHlwZSA9PSBcInBhZ2VcIiA/IG51bGwgOiB0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgLy8gbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgLy8gd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFnZVwiPlxyXG4gICAgICAgICAge2Zvcm1Hcm91cHMubGVuZ3RoID09IDAgPyAoXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuZm9ybVR5cGUgIT09IFwicGFnZVwiID8gKFxyXG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyRm9ybShzaG93Rm9ybXMsIGxhYmVsKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAge3RoaXMucmVuZGVyRm9ybShzaG93Rm9ybXMsIGxhYmVsKX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKVxyXG4gICAgICAgICAgKSA6IChcclxuICAgICAgICAgICAgT2JqZWN0LmtleXMobmV3Rm9ybXNPYmopLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgICAge2tleSAhPSBcIm5vR3JvdXBOYW1lXCIgJiYgKFxyXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tdGl0bGVcIj57a2V5fTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLWNvbnRlbnRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJGb3JtKG5ld0Zvcm1zT2JqW2tleV0sIGxhYmVsKX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICB7c2VsZlBhbmVzLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgc2VsZlBhbmVzLm1hcCgoUGFuZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYW5lXCIga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgIHtQYW5lV2l0aG91dFBhZ2VUeXBlKFBhbmUsIHsgLi4uUGFuZS5wcm9wcyB9KX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAge2Zvcm1UeXBlID09PSBcInBhZ2VcIiAmJiBmb290ZXIgPT0gdHJ1ZSAmJiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuZm9vdGVyQ2xhc3NOYW1lLFxyXG4gICAgICAgICAgICAgICAgXCJuc2MtZm9ybS1wYWdlLWZvb3RlclwiLFxyXG4gICAgICAgICAgICAgICAgW3RoaXMuc3RhdGUud2lkdGggPyBcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyLXdpZHRoXCIgOiBcIlwiXVxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5jYW5jZWxCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25DYW5jZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMub2tCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCgpO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9e3RoaXMuc3RhdGUubG9hZGluZ31cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17XCJuc2MtZm9ybS1wYWdlLWZvb3Rlci1idG5cIn1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDkv53lrZhcclxuICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICB7c2VsZkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyLWJ0blwifSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7Zm9ybVR5cGUgPT09IFwicGFnZVwiICYmIGZvb3RlciAhPT0gdHJ1ZSAmJiB0aGlzLnByb3BzLmZvb3Rlcn1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZvcm1QYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQWtCQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxTQUFTQyxVQUFVLEVBQUVDLGFBQWEsUUFBUSxtQkFBbUI7QUFDN0QsT0FBT0MsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBTyxxQkFBcUI7QUFDNUIsT0FBT0MsTUFBTSxNQUFNLFFBQVE7QUFDM0IsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBRTVCLE9BQU9DLFVBQVUsTUFBTSxhQUFhO0FBR3BDLFNBQVNDLGtCQUFrQixRQUFRLHNCQUFzQjtBQThCekQsTUFBTUMsUUFBUSxTQUFTZixhQUFhLENBQXFCO0VBQUFnQixZQUFBO0lBQUEsU0FBQUMsU0FBQTtJQUFBQyxlQUFBLCtCQUM3Q25CLEtBQUssQ0FBQ29CLFNBQVMsQ0FBTSxDQUFDO0lBQUFELGVBQUEsZ0JBQ3hCO01BQ05FLE9BQU8sRUFBRSxLQUFLO01BQ2RDLEtBQUssRUFBRSxJQUFJLENBQUNDLEtBQUssQ0FBQ0MsUUFBUSxJQUFJLEVBQUU7TUFDaENDLFVBQVUsRUFBRSxJQUFJO01BQ2hCQyxLQUFLLEVBQUUsQ0FBQyxDQUFRO01BQ2hCQyxTQUFTLEVBQUUsQ0FBQyxDQUFRO01BQ3BCQyxRQUFRLEVBQUUsQ0FBQyxDQUFRO01BQ25CQyxLQUFLLEVBQUVyQixhQUFhLENBQUMsdUJBQXVCLENBQUMsSUFBSSxLQUFLO01BQ3RE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