nsc-react-component 4.2.9 → 4.3.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.
@@ -22,6 +22,7 @@ import Button from "../../base/button";
22
22
  import Upload from "../../base/upload";
23
23
  import cls from "classnames";
24
24
  import NscRequest from "nsc-request";
25
+ import { convertStringToObj } from "../SettingUtil/utils";
25
26
  class FormPage extends PureComponent {
26
27
  constructor() {
27
28
  super(...arguments);
@@ -71,7 +72,8 @@ class FormPage extends PureComponent {
71
72
  params: {
72
73
  id: this.state.editId
73
74
  },
74
- xssFilter: false
75
+ xssFilter: false,
76
+ autoPrefix: true
75
77
  }).then(res => {
76
78
  if (res.code == 200) {
77
79
  var _this$formRef$current;
@@ -79,14 +81,23 @@ class FormPage extends PureComponent {
79
81
  }
80
82
  });
81
83
  } else if (editType == "新增") {
82
- var _this$formRef$current2;
83
- (_this$formRef$current2 = this.formRef.current) === null || _this$formRef$current2 === void 0 || _this$formRef$current2.setFieldsValue(this.props.defaultValu || {});
84
+ if (this.props.defaultValue) {
85
+ var _this$formRef$current2;
86
+ let defaultValue = this.convertDefaultValue();
87
+ (_this$formRef$current2 = this.formRef.current) === null || _this$formRef$current2 === void 0 || _this$formRef$current2.setFieldsValue(defaultValue || {});
88
+ }
84
89
  }
85
90
  }
86
91
  }
87
92
  componentWillUnmount() {
88
93
  window.removeEventListener("message", this.listenMessage);
89
94
  }
95
+ convertDefaultValue() {
96
+ const {
97
+ defaultValue
98
+ } = this.props;
99
+ return convertStringToObj(defaultValue, this.props.Utils || {});
100
+ }
90
101
  //表单显示
91
102
  show(orgValue) {
92
103
  let editorflag = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "add";
@@ -117,7 +128,8 @@ class FormPage extends PureComponent {
117
128
  label: label
118
129
  }, () => {
119
130
  var _this$formRef$current4;
120
- (_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 || _this$formRef$current4.showForm(this.props.defaultValue, {
131
+ let defaultValue = this.props.defaultValue ? this.convertDefaultValue() : {};
132
+ (_this$formRef$current4 = this.formRef.current) === null || _this$formRef$current4 === void 0 || _this$formRef$current4.showForm(defaultValue || {}, {
121
133
  afterRender: () => {
122
134
  callBack && callBack();
123
135
  }
@@ -282,7 +294,7 @@ class FormPage extends PureComponent {
282
294
  } = requestObject;
283
295
  let url = submitUrl;
284
296
  let params = {};
285
- if (label == "新增") {
297
+ if (!label || label == "新增") {
286
298
  url = addUrl ? addUrl : submitUrl;
287
299
  if (addParams && typeof addParams == "string") {
288
300
  const Utils = this.props.Utils || {};
@@ -584,7 +596,7 @@ class FormPage extends PureComponent {
584
596
  let newFormsObj = {};
585
597
  let formGroups = [];
586
598
  let otherGrups = [];
587
- let defalutValue = {};
599
+ let defaultValue = {};
588
600
 
589
601
  //处理表单数据
590
602
  forms.map(item => {
@@ -678,4 +690,4 @@ class FormPage extends PureComponent {
678
690
  }
679
691
  }
680
692
  export default FormPage;
681
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZ2V0TG9jYWxTdG9yZSIsImRheWpzIiwibG9kYXNoIiwiQnV0dG9uIiwiVXBsb2FkIiwiY2xzIiwiTnNjUmVxdWVzdCIsIkZvcm1QYWdlIiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJsb2FkaW5nIiwibGFiZWwiLCJwcm9wcyIsImVkaXRUeXBlIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJ3aWR0aCIsImVkaXRJZCIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImNsb3NlIiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRNb3VudCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiZm9ybVR5cGUiLCJyZXF1ZXN0T2JqZWN0IiwiZGV0YWlsVXJsIiwiZ2V0IiwicGFyYW1zIiwiaWQiLCJzdGF0ZSIsInhzc0ZpbHRlciIsInRoZW4iLCJyZXMiLCJjb2RlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50IiwiZm9ybVJlZiIsImN1cnJlbnQiLCJzZXRGaWVsZHNWYWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQyIiwiZGVmYXVsdFZhbHUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwiY29udmVydFZhbHVlIiwic2hvd0Zvcm0iLCJhZnRlclJlbmRlciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDQiLCJkZWZhdWx0VmFsdWUiLCJoaWRlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NSIsIm9uSGlkZUZvcm0iLCJoaWRlRm9ybSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDYiLCJzZXRMb2FkaW5nIiwic2V0RWRpdFR5cGUiLCJ0eXBlIiwic2V0RWRpdElkIiwiZ2V0Rm9ybVZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NyIsImZvcm1WYWx1ZSIsImdldEZpZWxkc1ZhbHVlIiwiY2xvbmVEZWVwIiwiZmlsZUZvcm1hdCIsIm5ld0ZpbGVMaXN0IiwibWFwIiwiaXRlbSIsImdldEZpbGVMaXN0Iiwic3VibWl0RmxhZyIsImVycm9yIiwiZGF0ZVZhbHVlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsInJhbmdlckRhdGUiLCJkYXRlRm9ybWF0IiwiZSIsIm5ld0RhdGEiLCJzdHJpbmdpZnkiLCJ2YWx1ZXMiLCJmb3JFYWNoIiwiZmlsZUtleSIsInZhbHVlMSIsInZhbHVlMiIsInNldEZvcm1WYWx1ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJuZXdWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdENvbmZpZyIsImFkZFVybCIsImVkaXRvclVybCIsImFkZFBhcmFtcyIsImVkaXRvclBhcmFtcyIsInVybCIsIlV0aWxzIiwiZnVuYyIsIkZ1bmN0aW9uIiwiY29udmVyUGFyYW1zIiwiY29uc29sZSIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwib25TdWJtaXQiLCJub1VuZGVmaW5lZCIsIm1zZyIsInN1Y2Nlc3MiLCJzZXRUaW1lb3V0Iiwib2JqIiwiZmlsZUlkIiwiZmlsZU5hbWUiLCJzdGF0dXMiLCJwdXNoIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MTAiLCJ2YWxpZCIsInZhbGlkYXRlRmllbGRzIiwicmV0dXJuRGF0YSIsImNhdGNoIiwiZXJyb3JJbmZvIiwidmFsdWVDaGFuZ2UiLCJfcmVmIiwidmFsdWVPcHRpb24iLCJkaWN0TmFtZSIsIm5ld05hbWVzIiwib25DaGFuZ2UiLCJldmVudE9wdGlvbiIsImZ1bmNzIiwicmVmcyIsInJlZkxpc3QiLCJ2YWx1ZVN0ciIsInNlbGZGdW5jIiwicmVuZGVyRm9ybSIsImZvcm1zIiwibmV3VmFsaWQiLCJjcmVhdGVFbGVtZW50IiwiZ3V0dGVyIiwiaW5kZXgiLCJfaXRlbSRwcm9wcyIsIml0ZW1Qcm9wcyIsInZhbHVlRm9ybWF0IiwibmFtZSIsInNwbGl0IiwiYWxsb3dDaGFycyIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwiYmluZCIsImRhdGFUeXBlIiwiZGlzYWJsZWQiLCJydWxlcyIsInJlcXVpcmVkIiwiaXRlbVJlZiIsIl9pdGVtJHByb3BzMiIsInNwYW4iLCJzdHlsZSIsImRpc3BsYXkiLCJJdGVtIiwiY29tcG9uZW50TmFtZSIsIm5vU3R5bGUiLCJmb3JtUmVuZGVyIiwicmVmIiwiX2l0ZW0kcHJvcHMzIiwiX2l0ZW0kcHJvcHM0IiwiX2l0ZW0kcHJvcHM1IiwiX2V4dGVuZHMiLCJvbkxpc3RDaGFuZ2UiLCJsaXN0Iiwic2hvd1VwbG9hZExpc3QiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1JlbW92ZUljb24iLCJjaGlsZHJlbiIsInJlbmRlciIsImZvb3RlciIsInRpdGxlIiwic2VsZkJ1dHRvbnMiLCJzZWxmUGFuZXMiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsInBhZ2VUeXBlIiwibW9kYWxQcm9wcyIsIm9uT2siLCJvbkNhbmNlbCIsIm9rQnV0dG9uUHJvcHMiLCJjZW50ZXJlZCIsImZvb3RlckJ1dHRvbiIsImRyYXdlclByb3BzIiwib25DbG9zZSIsIm5ld0Zvcm1zT2JqIiwiZm9ybUdyb3VwcyIsIm90aGVyR3J1cHMiLCJkZWZhbHV0VmFsdWUiLCJncm91cE5hbWUiLCJpbmRleE9mIiwiZ3JvdXBGb3JtcyIsImZvcm0iLCJQYW5lV2l0aG91dFBhZ2VUeXBlIiwiUGFuZSIsImNsZWFuUHJvcHMiLCJfZXhjbHVkZWQyIiwic2hvd01vZGVsIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiwgZ2V0TG9jYWxTdG9yZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSBcIi4uLy4uL2Jhc2UvdXBsb2FkXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5pbXBvcnQgTnNjUmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IENvbXBvdW5kZWRTcGFjZSBmcm9tIFwiYW50ZC9lcy9zcGFjZVwiO1xyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1QYWdlUHJvcHMge1xyXG4gIGZvcm1zPzogQXJyYXk8YW55PjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGZvb3RlckNsYXNzTmFtZT86IGFueTtcclxuICBva0J1dHRvblByb3BzPzogYW55O1xyXG4gIGNhbmNlbEJ1dHRvblByb3BzPzogYW55O1xyXG4gIGZvb3Rlcj86IFJlYWN0Tm9kZSB8IGJvb2xlYW47XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25Gb3JtQ2hhbmdlPzogKHZhbHVlPzogYW55LCBhbGxWYWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBzdWJtaXRQYXJhbXM/OiBhbnk7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHByb3BzPzogSUZvcm1Qcm9wcztcclxuICByZXF1ZXN0T2JqZWN0Pzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nO1xyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nO1xyXG4gICAgYWRkUGFyYW1zPzogYW55O1xyXG4gICAgZWRpdG9yUGFyYW1zPzogYW55O1xyXG4gICAgZGV0YWlsVXJsPzogc3RyaW5nO1xyXG4gIH07XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueTtcclxuICBmb290ZXJXaWR0aD86IGJvb2xlYW47XHJcbiAgZWRpdFR5cGU/OiBcIuaWsOWinlwiIHwgXCLnvJbovpFcIiB8IFwi5p+l55yLXCI7XHJcbiAgdGl0bGU/OiBzdHJpbmc7XHJcbiAgZWRpdElkPzogc3RyaW5nO1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jbGFzcyBGb3JtUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8Rm9ybVBhZ2VQcm9wcywgYW55PiB7XHJcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIGxhYmVsOiB0aGlzLnByb3BzLmVkaXRUeXBlIHx8IFwiXCIsXHJcbiAgICBlZGl0b3JGbGFnOiB0cnVlLFxyXG4gICAgdmFsdWU6IHt9IGFzIGFueSxcclxuICAgIGRpY3ROYW1lczoge30gYXMgYW55LFxyXG4gICAgZmlsZUxpc3Q6IHt9IGFzIGFueSxcclxuICAgIHdpZHRoOiBnZXRMb2NhbFN0b3JlKFwibnNjLWhvbWUtbWVudUNvbGxzYXBlXCIpIHx8IGZhbHNlLFxyXG4gICAgZWRpdElkOiB0aGlzLnByb3BzLmVkaXRJZCB8fCBcIlwiLFxyXG4gIH07XHJcbiAgdmFsaWQ6IGFueSA9IFtdO1xyXG4gIGRhdGVWYWx1ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBkYXRlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGZpbGVGb3JtYXQgPSBbXSBhcyBhbnk7XHJcbiAgcmFuZ2VyRGF0ZSA9IHt9IGFzIGFueTtcclxuICByZWZMaXN0ID0ge30gYXMgYW55O1xyXG4gIHN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gIGNvbXBvbmVudERpZE1vdW50KCk6IHZvaWQge1xyXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIHRoaXMubGlzdGVuTWVzc2FnZSk7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIGZvcm1UeXBlID0gXCJwYWdlXCIsXHJcbiAgICAgIHJlcXVlc3RPYmplY3QgPSB7fSxcclxuICAgICAgZWRpdFR5cGUgPSBcIuaWsOWinlwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAoZm9ybVR5cGUgPT0gXCJwYWdlXCIpIHtcclxuICAgICAgaWYgKHJlcXVlc3RPYmplY3QuZGV0YWlsVXJsICYmIGVkaXRUeXBlICE9PSBcIuaWsOWinlwiKSB7XHJcbiAgICAgICAgTnNjUmVxdWVzdC5nZXQocmVxdWVzdE9iamVjdC5kZXRhaWxVcmwsIHtcclxuICAgICAgICAgIHBhcmFtczogeyBpZDogdGhpcy5zdGF0ZS5lZGl0SWQgfSxcclxuICAgICAgICAgIHhzc0ZpbHRlcjogZmFsc2UsXHJcbiAgICAgICAgfSkudGhlbigocmVzKSA9PiB7XHJcbiAgICAgICAgICBpZiAocmVzLmNvZGUgPT0gMjAwKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZSh7IC4uLnJlcy5kYXRhIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2UgaWYgKGVkaXRUeXBlID09IFwi5paw5aKeXCIpIHtcclxuICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUodGhpcy5wcm9wcy5kZWZhdWx0VmFsdSB8fCB7fSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgdGhpcy5saXN0ZW5NZXNzYWdlKTtcclxuICB9XHJcbiAgbGlzdGVuTWVzc2FnZSA9IChldikgPT4ge1xyXG4gICAgY29uc3QgZGF0YSA9IHR5cGVvZiBldi5kYXRhID09PSBcInN0cmluZ1wiID8gSlNPTi5wYXJzZShldi5kYXRhKSA6IGV2LmRhdGE7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgaWYgKGRhdGEuZXZlbnRUeXBlID09IFwibWVudUNvbGxzYXBlXCIpIHtcclxuICAgICAgY29uc3QgeyBwYXlsb2FkIH0gPSBkYXRhO1xyXG4gICAgICBpZiAocGF5bG9hZC5jbG9zZSA9PT0gdHJ1ZSB8fCBwYXlsb2FkLmNsb3NlID09PSBmYWxzZSkge1xyXG4gICAgICAgIF90aGlzLnNldFN0YXRlKHsgd2lkdGg6IHBheWxvYWQuY2xvc2UgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG4gIC8v6KGo5Y2V5pi+56S6XHJcbiAgc2hvdyhvcmdWYWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIsIGNhbGxCYWNrPzogYW55KSB7XHJcbiAgICBsZXQgbGFiZWwgPSBcIuaWsOWinlwiO1xyXG4gICAgaWYgKG9yZ1ZhbHVlICYmIGVkaXRvcmZsYWcgPT0gXCJlZGl0b3JcIikge1xyXG4gICAgICBsYWJlbCA9IFwi57yW6L6RXCI7XHJcbiAgICB9IGVsc2UgaWYgKG9yZ1ZhbHVlICYmIChlZGl0b3JmbGFnID09IFwiZGV0YWlsXCIgfHwgZWRpdG9yZmxhZyA9PSBcInNlYXJjaFwiKSkge1xyXG4gICAgICBsYWJlbCA9IFwi5p+l55yLXCI7XHJcbiAgICB9XHJcbiAgICBpZiAob3JnVmFsdWUpIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgICB2YWx1ZTogb3JnVmFsdWUsXHJcbiAgICAgICAgICBlZGl0SWQ6IG9yZ1ZhbHVlLmlkLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUob3JnVmFsdWUsIGxhYmVsKTtcclxuICAgICAgICAgIC8v5aSE55CG5paH5Lu25pWw5o2uXHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odmFsdWUsIHtcclxuICAgICAgICAgICAgYWZ0ZXJSZW5kZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZShcclxuICAgICAgICB7XHJcbiAgICAgICAgICBsYWJlbDogbGFiZWwsXHJcbiAgICAgICAgfSxcclxuICAgICAgICAoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odGhpcy5wcm9wcy5kZWZhdWx0VmFsdWUsIHtcclxuICAgICAgICAgICAgYWZ0ZXJSZW5kZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoaWRlKGhpZGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IG9uSGlkZUZvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25IaWRlRm9ybSkge1xyXG4gICAgICBvbkhpZGVGb3JtICYmIG9uSGlkZUZvcm0oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICBoaWRlICYmIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIHNob3dGb3JtKG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvdyhvcmdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spO1xyXG4gIH1cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBsb2FkaW5nIH0pO1xyXG4gIH1cclxuICBzZXRFZGl0VHlwZSh0eXBlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgbGFiZWw6IHR5cGUsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0RWRpdElkKGlkKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWRpdElkOiBpZCxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRGb3JtVmFsdWUoKSB7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IGRhdGEgPSBsb2Rhc2guY2xvbmVEZWVwKHsgLi4uZm9ybVZhbHVlLCAuLi5kaWN0TmFtZXMgfSk7XHJcbiAgICBpZiAodGhpcy5maWxlRm9ybWF0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IG5ld0ZpbGVMaXN0ID0ge30gYXMgYW55O1xyXG4gICAgICB0aGlzLmZpbGVGb3JtYXQubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbGVMaXN0W2l0ZW1dLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChmaWxlTGlzdFtpdGVtXSB8fCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgLi4ubmV3RmlsZUxpc3QgfTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zdWJtaXRGbGFnKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXCLor7fnrYnlvoXmiYDmnInmlofku7bkuIrkvKDlrozmiJDvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBkYXRhW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yYW5nZXJEYXRlW2tleV0pIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZGF0YVt0aGlzLnJhbmdlckRhdGVba2V5XVswXV0gPSBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZGF0YVt0aGlzLnJhbmdlckRhdGVba2V5XVsxXV0gPSBkYXlqcyhvbGRkYXRhWzFdKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBkYXlqcyhvbGRkYXRhKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobGFiZWwgPT0gXCLnvJbovpFcIikge1xyXG4gICAgICBkYXRhID0geyAuLi5kYXRhLCBpZDogdmFsdWU/LmlkIHx8IHRoaXMuc3RhdGUuZWRpdElkIH07XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3RGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgcmV0dXJuIG5ld0RhdGE7XHJcbiAgfVxyXG4gIGNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbHVlcyA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBmaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0LmZvckVhY2goKGZpbGVLZXkpID0+IHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1tmaWxlS2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSAmJiBBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICBmaWxlTGlzdFtmaWxlS2V5XSA9IHRoaXMuZ2V0RmlsZUxpc3Qob2xkZGF0YSB8fCBbXSwgdHlwZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2ZpbGVLZXldID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBmaWxlTGlzdCB9KTtcclxuICAgIH1cclxuICAgIC8v5aSE55CG5pel5pyf5qC85byP5pWw5o2uXHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZXNba2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlc1trZXldID0gZGF5anMob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yYW5nZXJEYXRlW2tleV0pIHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlMSA9IHZhbHVlc1t0aGlzLnJhbmdlckRhdGVba2V5XVswXV07XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTIgPSB2YWx1ZXNbdGhpcy5yYW5nZXJEYXRlW2tleV1bMV1dO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUxICYmIHZhbHVlMikge1xyXG4gICAgICAgICAgICAgIHZhbHVlc1trZXldID0gW1xyXG4gICAgICAgICAgICAgICAgZGF5anModmFsdWUxLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgICBkYXlqcyh2YWx1ZTIsIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzO1xyXG4gIH1cclxuICBzZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKG5ld1ZhbHVlKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZm9ybWRhdGEsIGxhYmVsKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN1Ym1pdFVybCxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIGNhbGxCYWNrLFxyXG4gICAgICByZXF1ZXN0T2JqZWN0ID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBhZGRVcmwsIGVkaXRvclVybCwgYWRkUGFyYW1zLCBlZGl0b3JQYXJhbXMgfSA9IHJlcXVlc3RPYmplY3Q7XHJcbiAgICBsZXQgdXJsID0gc3VibWl0VXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0ge307XHJcbiAgICBpZiAobGFiZWwgPT0gXCLmlrDlop5cIikge1xyXG4gICAgICB1cmwgPSBhZGRVcmwgPyBhZGRVcmwgOiBzdWJtaXRVcmw7XHJcbiAgICAgIGlmIChhZGRQYXJhbXMgJiYgdHlwZW9mIGFkZFBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgYWRkUGFyYW1zKTtcclxuICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgICAgcGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IGFkZFBhcmFtcyA/IGFkZFBhcmFtcyA6IHN1Ym1pdFBhcmFtcztcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgIHVybCA9IGVkaXRvclVybCA/IGVkaXRvclVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGVkaXRvclBhcmFtcyAmJiB0eXBlb2YgZWRpdG9yUGFyYW1zID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBlZGl0b3JQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gZWRpdG9yUGFyYW1zID8gZWRpdG9yUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoIXVybCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKFwi6YWN572uVXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zdCB7IGRhdGEgPSB7fSwgLi4ub3RoZXJQYXJhbXMgfSA9IHBhcmFtcztcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5vblN1Ym1pdChcclxuICAgICAgdXJsLFxyXG4gICAgICB7XHJcbiAgICAgICAgZGF0YTogeyAuLi5mb3JtZGF0YSwgLi4uZGF0YSB9LFxyXG4gICAgICAgIG5vVW5kZWZpbmVkOiBsYWJlbCA9PSBcIue8lui+kVwiLFxyXG4gICAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgICAgLi4ub3RoZXJQYXJhbXMsXHJcbiAgICAgIH0sXHJcbiAgICAgIChyZXM6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnN0IHsgY29kZSwgbXNnIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlkZSh0cnVlKTtcclxuICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIH0sIDUwMCk7XHJcblxyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0RmlsZUxpc3QoZGF0YSwgbGFiZWwgPSBcIuaWsOWinlwiKSB7XHJcbiAgICB0aGlzLnN1Ym1pdEZsYWcgPSB0cnVlO1xyXG4gICAgbGV0IGZpbGVMaXN0ID0gW10gYXMgYW55O1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgIGZpbGVJZDogaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICAgICAgb2JqLnN0YXR1cyA9IFwiZG9uZVwiO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGFiZWwgIT09IFwi5p+l55yLXCIgJiYgaXRlbS5zdGF0dXMgIT09IFwiZG9uZVwiKSB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEZsYWcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZUxpc3QucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlTGlzdDtcclxuICB9XHJcblxyXG4gIG9uU3VibWl0KCkge1xyXG4gICAgY29uc3QgeyBvblN1Ym1pdCB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHZhbGlkID0gdGhpcy52YWxpZDtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50XHJcbiAgICAgID8udmFsaWRhdGVGaWVsZHMoKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmdldEZvcm1WYWx1ZSgpO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChvblN1Ym1pdCkge1xyXG4gICAgICAgICAgbGV0IHJldHVybkRhdGEgPSBsb2Rhc2guY2xvbmVEZWVwKGRhdGEpO1xyXG4gICAgICAgICAgb25TdWJtaXQgJiYgb25TdWJtaXQocmV0dXJuRGF0YSwgbGFiZWwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnJvckluZm86IGFueSkgPT4ge30pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgcHJvcHMub25DaGFuZ2UodmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKTtcclxuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0ge1xyXG4gICAgICAgICAgdmFsdWUsXHJcbiAgICAgICAgICBkYXRhLFxyXG4gICAgICAgICAgZm9ybVJlZjogdGhpcy5mb3JtUmVmLFxyXG4gICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MgfHwge30sXHJcbiAgICAgICAgICByZWZzOiB0aGlzLnJlZkxpc3QsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICAgIGlmICh0eXBlID09IFwiU2VsZWN0XCIpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlT3B0aW9uID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgICBldmVudE9wdGlvbi5kYXRhID0gZGF0YTtcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gXCJEYXRlUGlja2VyXCIgfHwgdHlwZSA9PSBcIlJhbmdlUGlja2VyXCIpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlU3RyID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IHNlbGZGdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb25cIiwgXCJVdGlsc1wiLCBwcm9wcy5vbkNoYW5nZSk7XHJcbiAgICAgICAgc2VsZkZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyRm9ybShmb3JtcywgbGFiZWwpIHtcclxuICAgIGNvbnN0IG5ld1ZhbGlkOiBhbnlbXSA9IFtdO1xyXG4gICAgcmV0dXJuIChcclxuICAgICAgPFJvdyBndXR0ZXI9ezI0fT5cclxuICAgICAgICB7Zm9ybXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlVmFsdWVGb3JtYXRbaXRlbS5uYW1lXSA9XHJcbiAgICAgICAgICAgICAgaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCkge1xyXG4gICAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaXRlbS50eXBlID09IFwiUmFuZ2VQaWNrZXJcIiAmJiBpdGVtLm5hbWUuc3BsaXQoXCIsXCIpLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgdGhpcy5yYW5nZXJEYXRlW2l0ZW0ubmFtZV0gPSBpdGVtLm5hbWUuc3BsaXQoXCIsXCIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgbGV0IGFsbG93Q2hhcnMgPSBpdGVtLnByb3BzPy5hbGxvd0NoYXJzIHx8IGZhbHNlO1xyXG4gICAgICAgICAgbGV0IHByb3BzID0ge1xyXG4gICAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgICAuLi5pdGVtLnByb3BzLFxyXG4gICAgICAgICAgICBvbkNoYW5nZTogdGhpcy52YWx1ZUNoYW5nZS5iaW5kKFxyXG4gICAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgICAgZGljdE5hbWU6IGl0ZW0uZGljdE5hbWUsXHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB7IC4uLml0ZW0ucHJvcHMgfVxyXG4gICAgICAgICAgICApLFxyXG4gICAgICAgICAgfTtcclxuICAgICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7IC8vZm9ybS5pdGVtIOS9v+eUqGlucHV057uE5Lu2YWxsb3dDaGFyc+W/hemhu+m7mOiupHRydWUs5LiN54S26L6T5YWl54m55q6K5a2X56ym5ou/5Yiw55qE5YC85LiN5a+5XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgICBkZWxldGUgcHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgZGVsZXRlIHByb3BzLmRhdGFUeXBlO1xyXG4gICAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgICAgcHJvcHMuZGlzYWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICBwcm9wcy5wbGFjZWhvbGRlciA9IFwiXCI7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoKGl0ZW0ucnVsZXMgJiYgaXRlbS5ydWxlcy5sZW5ndGggPiAwKSB8fCBpdGVtLnJlcXVpcmVkID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChpbmRleCArIDEgPT09IGZvcm1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLnZhbGlkID0gbmV3VmFsaWQ7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb25zdCBpdGVtUmVmOiBhbnkgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gICAgICAgICAgdGhpcy5yZWZMaXN0W2l0ZW0ubmFtZV0gPSBpdGVtUmVmO1xyXG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSAhPT0gXCJVcGxvYWRcIikge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn1cclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBpdGVtLmhpZGUgPyBcIm5vbmVcIiA6IFwiYmxvY2tcIiB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU9e2l0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIn1cclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICAgIG5vU3R5bGU9e2l0ZW0ubm9TdHlsZSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW0uZm9ybVJlbmRlclxyXG4gICAgICAgICAgICAgICAgICAgID8gaXRlbS5mb3JtUmVuZGVyKHByb3BzKVxyXG4gICAgICAgICAgICAgICAgICAgIDogZ2V0Tm9kZShpdGVtLnR5cGUsIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgcmVmOiBpdGVtUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5wcm9wcyxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmZpbGVGb3JtYXQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxDb2xcclxuICAgICAgICAgICAgICAgIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn1cclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBpdGVtLmhpZGUgPyBcIm5vbmVcIiA6IFwiYmxvY2tcIiB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgICAgbGFiZWw9e2l0ZW0ubGFiZWx9XHJcbiAgICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICAgIGFsbG93Q2hhcnM9e2FsbG93Q2hhcnN9XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3RbaXRlbS5uYW1lXSB8fCBbXX1cclxuICAgICAgICAgICAgICAgICAgICBvbkxpc3RDaGFuZ2U9eyhsaXN0KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVMaXN0OiB7IC4uLmZpbGVMaXN0LCBbaXRlbS5uYW1lXTogbGlzdCB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBzaG93VXBsb2FkTGlzdD17e1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSxcclxuICAgICAgICAgICAgICAgICAgICAgIHNob3dSZW1vdmVJY29uOiBsYWJlbCAhPT0gXCLmn6XnnItcIixcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICAgIHJlZj17aXRlbVJlZn1cclxuICAgICAgICAgICAgICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcz8uY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgICAgICAgID8gaXRlbS5wcm9wcz8uY2hpbGRyZW5cclxuICAgICAgICAgICAgICAgICAgICAgIDogbGFiZWwgIT09IFwi5p+l55yLXCIgJiYgPEJ1dHRvbj7kuIrkvKDmlofku7Y8L0J1dHRvbj59XHJcbiAgICAgICAgICAgICAgICAgIDwvVXBsb2FkPlxyXG4gICAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvUm93PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBmb3JtcyA9IFtdLFxyXG4gICAgICBwcm9wcyA9IHt9LFxyXG4gICAgICBmb290ZXIgPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgZm9ybVR5cGUgPSBcInBhZ2VcIixcclxuICAgICAgdGl0bGUgPSBcIlwiLFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgbGV0IHNlbGZQYW5lcyA9IFtdIGFzIGFueTtcclxuXHJcbiAgICBpZiAoQXJyYXkuaXNBcnJheShjaGlsZHJlbikpIHtcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShpdGVtKSkge1xyXG4gICAgICAgICAgaXRlbS5tYXAoKGNoaWxkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiZm9ybVBhbmVcIikge1xyXG4gICAgICAgICAgICAgIHR5cGVvZiBpdGVtID09IFwib2JqZWN0XCIgJiYgc2VsZlBhbmVzLnB1c2goY2hpbGQpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdHlwZW9mIGl0ZW0gPT0gXCJvYmplY3RcIiAmJiBzZWxmQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJmb3JtUGFuZVwiKSB7XHJcbiAgICAgICAgdHlwZW9mIGNoaWxkcmVuID09IFwib2JqZWN0XCIgJiYgc2VsZlBhbmVzLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSBcIm9iamVjdFwiICYmIHNlbGZCdXR0b25zLnB1c2goY2hpbGRyZW4pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBsZXQgbW9kYWxQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsICsgdGl0bGUsXHJcbiAgICAgIG9uT2s6IHRoaXMub25TdWJtaXQuYmluZCh0aGlzKSxcclxuICAgICAgb25DYW5jZWw6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICBva0J1dHRvblByb3BzOiB7IGxvYWRpbmc6IGxvYWRpbmcgfSxcclxuICAgICAgY2VudGVyZWQ6IHRydWUsXHJcbiAgICAgIHdpZHRoOiBcIjUwdndcIixcclxuICAgICAgZm9vdGVyQnV0dG9uOiBzZWxmQnV0dG9ucyxcclxuICAgIH0gYXMgYW55O1xyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICAgIGZvb3RlckJ1dHRvbjogc2VsZkJ1dHRvbnMsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdO1xyXG4gICAgbGV0IG5ld0Zvcm1zT2JqID0ge30gYXMgYW55O1xyXG4gICAgbGV0IGZvcm1Hcm91cHMgPSBbXSBhcyBhbnk7XHJcbiAgICBsZXQgb3RoZXJHcnVwcyA9IFtdIGFzIGFueTtcclxuICAgIGxldCBkZWZhbHV0VmFsdWUgPSB7fSBhcyBhbnk7XHJcblxyXG4gICAgLy/lpITnkIbooajljZXmlbDmja5cclxuICAgIGZvcm1zLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgIGlmIChpdGVtLmdyb3VwTmFtZSAmJiBmb3JtR3JvdXBzLmluZGV4T2YoaXRlbS5ncm91cE5hbWUpIDwgMCkge1xyXG4gICAgICAgIGZvcm1Hcm91cHMucHVzaChpdGVtLmdyb3VwTmFtZSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoIWl0ZW0uZ3JvdXBOYW1lKSB7XHJcbiAgICAgICAgb3RoZXJHcnVwcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGlmIChmb3JtR3JvdXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgZm9ybUdyb3Vwcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGxldCBncm91cEZvcm1zID0gW10gYXMgYW55O1xyXG4gICAgICAgIGZvcm1zLm1hcCgoZm9ybTogYW55KSA9PiB7XHJcbiAgICAgICAgICBpZiAoZm9ybS5ncm91cE5hbWUgPT0gaXRlbSkge1xyXG4gICAgICAgICAgICBncm91cEZvcm1zLnB1c2goZm9ybSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgbmV3Rm9ybXNPYmpbaXRlbV0gPSBncm91cEZvcm1zO1xyXG4gICAgICB9KTtcclxuICAgICAgaWYgKG90aGVyR3J1cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW1wibm9Hcm91cE5hbWVcIl0gPSBvdGhlckdydXBzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb25zdCBQYW5lV2l0aG91dFBhZ2VUeXBlID0gKFBhbmUsIHByb3BzKSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgcGFnZVR5cGUsIC4uLmNsZWFuUHJvcHMgfSA9IHByb3BzO1xyXG4gICAgICByZXR1cm4gUmVhY3QuY3JlYXRlRWxlbWVudChQYW5lLnR5cGUsIGNsZWFuUHJvcHMpO1xyXG4gICAgfTtcclxuICAgIC8v6Ieq5a6a5LmJ5oyJ6ZKuXHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8Rm9ybVxyXG4gICAgICAgIHJlZj17dGhpcy5mb3JtUmVmfVxyXG4gICAgICAgIHNob3dNb2RlbD17dGhpcy5wcm9wcy5mb3JtVHlwZSA9PSBcInBhZ2VcIiA/IG51bGwgOiB0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgLy8gbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgLy8gd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFnZVwiPlxyXG4gICAgICAgICAge2Zvcm1Hcm91cHMubGVuZ3RoID09IDAgPyAoXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuZm9ybVR5cGUgIT09IFwicGFnZVwiID8gKFxyXG4gICAgICAgICAgICAgIHRoaXMucmVuZGVyRm9ybShmb3JtcywgbGFiZWwpXHJcbiAgICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYW5lXCI+XHJcbiAgICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCl9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgICkgOiAoXHJcbiAgICAgICAgICAgIE9iamVjdC5rZXlzKG5ld0Zvcm1zT2JqKS5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGtleT17a2V5fSBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYW5lXCI+XHJcbiAgICAgICAgICAgICAgICAgIHtrZXkgIT0gXCJub0dyb3VwTmFtZVwiICYmIChcclxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXRpdGxlXCI+e2tleX08L2Rpdj5cclxuICAgICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1jb250ZW50XCI+XHJcbiAgICAgICAgICAgICAgICAgICAge3RoaXMucmVuZGVyRm9ybShuZXdGb3Jtc09ialtrZXldLCBsYWJlbCl9XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7c2VsZlBhbmVzLmxlbmd0aCA+IDAgJiZcclxuICAgICAgICAgICAgc2VsZlBhbmVzLm1hcCgoUGFuZSwgaW5kZXgpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1wYW5lXCIga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgIHtQYW5lV2l0aG91dFBhZ2VUeXBlKFBhbmUsIHsgLi4uUGFuZS5wcm9wcyB9KX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAge2Zvcm1UeXBlID09PSBcInBhZ2VcIiAmJiBmb290ZXIgPT0gdHJ1ZSAmJiAoXHJcbiAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgIFwibnNjLWZvcm0tcGFnZS1mb290ZXJcIixcclxuICAgICAgICAgICAgICAgIFt0aGlzLnN0YXRlLndpZHRoID8gXCJuc2MtZm9ybS1wYWdlLWZvb3Rlci13aWR0aFwiIDogXCJcIl0sXHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb3BzLmZvb3RlckNsYXNzTmFtZVxyXG4gICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgICB7Li4udGhpcy5wcm9wcy5jYW5jZWxCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25DYW5jZWwpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5Y+W5raIXHJcbiAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgdHlwZT1cInByaW1hcnlcIlxyXG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMub2tCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCgpO1xyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIGxvYWRpbmc9e3RoaXMuc3RhdGUubG9hZGluZ31cclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17XCJuc2MtZm9ybS1wYWdlLWZvb3Rlci1idG5cIn1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDkv53lrZhcclxuICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICB7c2VsZkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyLWJ0blwifSBrZXk9e2luZGV4fT5cclxuICAgICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgICB7Zm9ybVR5cGUgPT09IFwicGFnZVwiICYmIGZvb3RlciAhPT0gdHJ1ZSAmJiB0aGlzLnByb3BzLmZvb3Rlcn1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZvcm1QYWdlO1xyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlC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
693
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZ2V0TG9jYWxTdG9yZSIsImRheWpzIiwibG9kYXNoIiwiQnV0dG9uIiwiVXBsb2FkIiwiY2xzIiwiTnNjUmVxdWVzdCIsImNvbnZlcnRTdHJpbmdUb09iaiIsIkZvcm1QYWdlIiwiY29uc3RydWN0b3IiLCJhcmd1bWVudHMiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJsb2FkaW5nIiwibGFiZWwiLCJwcm9wcyIsImVkaXRUeXBlIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJ3aWR0aCIsImVkaXRJZCIsImV2IiwiZGF0YSIsIkpTT04iLCJwYXJzZSIsIl90aGlzIiwiZXZlbnRUeXBlIiwicGF5bG9hZCIsImNsb3NlIiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRNb3VudCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5NZXNzYWdlIiwiZm9ybVR5cGUiLCJyZXF1ZXN0T2JqZWN0IiwiZGV0YWlsVXJsIiwiZ2V0IiwicGFyYW1zIiwiaWQiLCJzdGF0ZSIsInhzc0ZpbHRlciIsImF1dG9QcmVmaXgiLCJ0aGVuIiwicmVzIiwiY29kZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2V0RmllbGRzVmFsdWUiLCJfb2JqZWN0U3ByZWFkIiwiZGVmYXVsdFZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MiIsImNvbnZlcnREZWZhdWx0VmFsdWUiLCJjb21wb25lbnRXaWxsVW5tb3VudCIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJVdGlscyIsInNob3ciLCJvcmdWYWx1ZSIsImVkaXRvcmZsYWciLCJsZW5ndGgiLCJ1bmRlZmluZWQiLCJjYWxsQmFjayIsIl90aGlzJGZvcm1SZWYkY3VycmVudDMiLCJjb252ZXJ0VmFsdWUiLCJzaG93Rm9ybSIsImFmdGVyUmVuZGVyIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ1Iiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NiIsInNldExvYWRpbmciLCJzZXRFZGl0VHlwZSIsInR5cGUiLCJzZXRFZGl0SWQiLCJnZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3IiwiZm9ybVZhbHVlIiwiZ2V0RmllbGRzVmFsdWUiLCJjbG9uZURlZXAiLCJmaWxlRm9ybWF0IiwibmV3RmlsZUxpc3QiLCJtYXAiLCJpdGVtIiwiZ2V0RmlsZUxpc3QiLCJzdWJtaXRGbGFnIiwiZXJyb3IiLCJkYXRlVmFsdWVGb3JtYXQiLCJrZXkiLCJvbGRkYXRhIiwiQXJyYXkiLCJpc0FycmF5IiwiZm9ybWF0IiwicmFuZ2VyRGF0ZSIsImRhdGVGb3JtYXQiLCJlIiwibmV3RGF0YSIsInN0cmluZ2lmeSIsInZhbHVlcyIsImZvckVhY2giLCJmaWxlS2V5IiwidmFsdWUxIiwidmFsdWUyIiwic2V0Rm9ybVZhbHVlIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50OCIsIm5ld1ZhbHVlIiwiZG9TdWJtaXQiLCJmb3JtZGF0YSIsIl90aGlzJGZvcm1SZWYkY3VycmVudDkiLCJzdWJtaXRVcmwiLCJzdWJtaXRQYXJhbXMiLCJyZXF1ZXN0Q29uZmlnIiwiYWRkVXJsIiwiZWRpdG9yVXJsIiwiYWRkUGFyYW1zIiwiZWRpdG9yUGFyYW1zIiwidXJsIiwiZnVuYyIsIkZ1bmN0aW9uIiwiY29udmVyUGFyYW1zIiwiY29uc29sZSIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwib25TdWJtaXQiLCJub1VuZGVmaW5lZCIsIm1zZyIsInN1Y2Nlc3MiLCJzZXRUaW1lb3V0Iiwib2JqIiwiZmlsZUlkIiwiZmlsZU5hbWUiLCJzdGF0dXMiLCJwdXNoIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50MTAiLCJ2YWxpZCIsInZhbGlkYXRlRmllbGRzIiwicmV0dXJuRGF0YSIsImNhdGNoIiwiZXJyb3JJbmZvIiwidmFsdWVDaGFuZ2UiLCJfcmVmIiwidmFsdWVPcHRpb24iLCJkaWN0TmFtZSIsIm5ld05hbWVzIiwib25DaGFuZ2UiLCJldmVudE9wdGlvbiIsImZ1bmNzIiwicmVmcyIsInJlZkxpc3QiLCJ2YWx1ZVN0ciIsInNlbGZGdW5jIiwicmVuZGVyRm9ybSIsImZvcm1zIiwibmV3VmFsaWQiLCJjcmVhdGVFbGVtZW50IiwiZ3V0dGVyIiwiaW5kZXgiLCJfaXRlbSRwcm9wcyIsIml0ZW1Qcm9wcyIsInZhbHVlRm9ybWF0IiwibmFtZSIsInNwbGl0IiwiYWxsb3dDaGFycyIsInBsYWNlaG9sZGVyIiwiY29uY2F0IiwiYmluZCIsImRhdGFUeXBlIiwiZGlzYWJsZWQiLCJydWxlcyIsInJlcXVpcmVkIiwiaXRlbVJlZiIsIl9pdGVtJHByb3BzMiIsInNwYW4iLCJzdHlsZSIsImRpc3BsYXkiLCJJdGVtIiwiY29tcG9uZW50TmFtZSIsIm5vU3R5bGUiLCJmb3JtUmVuZGVyIiwicmVmIiwiX2l0ZW0kcHJvcHMzIiwiX2l0ZW0kcHJvcHM0IiwiX2l0ZW0kcHJvcHM1IiwiX2V4dGVuZHMiLCJvbkxpc3RDaGFuZ2UiLCJsaXN0Iiwic2hvd1VwbG9hZExpc3QiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1JlbW92ZUljb24iLCJjaGlsZHJlbiIsInJlbmRlciIsImZvb3RlciIsInRpdGxlIiwic2VsZkJ1dHRvbnMiLCJzZWxmUGFuZXMiLCJjaGlsZCIsIl9jaGlsZCRwcm9wcyIsInBhZ2VUeXBlIiwibW9kYWxQcm9wcyIsIm9uT2siLCJvbkNhbmNlbCIsIm9rQnV0dG9uUHJvcHMiLCJjZW50ZXJlZCIsImZvb3RlckJ1dHRvbiIsImRyYXdlclByb3BzIiwib25DbG9zZSIsIm5ld0Zvcm1zT2JqIiwiZm9ybUdyb3VwcyIsIm90aGVyR3J1cHMiLCJncm91cE5hbWUiLCJpbmRleE9mIiwiZ3JvdXBGb3JtcyIsImZvcm0iLCJQYW5lV2l0aG91dFBhZ2VUeXBlIiwiUGFuZSIsImNsZWFuUHJvcHMiLCJfZXhjbHVkZWQyIiwic2hvd01vZGVsIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiwgZ2V0TG9jYWxTdG9yZSB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSBcIi4uLy4uL2Jhc2UvdXBsb2FkXCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5pbXBvcnQgTnNjUmVxdWVzdCBmcm9tIFwibnNjLXJlcXVlc3RcIjtcclxuaW1wb3J0IG9taXQgZnJvbSBcIm9taXQuanNcIjtcclxuaW1wb3J0IENvbXBvdW5kZWRTcGFjZSBmcm9tIFwiYW50ZC9lcy9zcGFjZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0U3RyaW5nVG9PYmogfSBmcm9tIFwiLi4vU2V0dGluZ1V0aWwvdXRpbHNcIjtcclxuZXhwb3J0IGludGVyZmFjZSBGb3JtUGFnZVByb3BzIHtcclxuICBmb3Jtcz86IEFycmF5PGFueT47IC8v5piv5ZCm5pi+56S65pON5L2c5YiXXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBmb290ZXJDbGFzc05hbWU/OiBhbnk7XHJcbiAgb2tCdXR0b25Qcm9wcz86IGFueTtcclxuICBjYW5jZWxCdXR0b25Qcm9wcz86IGFueTtcclxuICBmb290ZXI/OiBSZWFjdE5vZGUgfCBib29sZWFuO1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uRm9ybUNoYW5nZT86ICh2YWx1ZT86IGFueSwgYWxsVmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgc3VibWl0UGFyYW1zPzogYW55OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBmdW5jcz86IGFueTtcclxuICBwcm9wcz86IElGb3JtUHJvcHM7XHJcbiAgcmVxdWVzdE9iamVjdD86IHtcclxuICAgIGFkZFVybD86IHN0cmluZztcclxuICAgIGVkaXRvclVybD86IHN0cmluZztcclxuICAgIGFkZFBhcmFtcz86IGFueTtcclxuICAgIGVkaXRvclBhcmFtcz86IGFueTtcclxuICAgIGRldGFpbFVybD86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgZm9vdGVyV2lkdGg/OiBib29sZWFuO1xyXG4gIGVkaXRUeXBlPzogXCLmlrDlop5cIiB8IFwi57yW6L6RXCIgfCBcIuafpeeci1wiO1xyXG4gIHRpdGxlPzogc3RyaW5nO1xyXG4gIGVkaXRJZD86IHN0cmluZztcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY2xhc3MgRm9ybVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEZvcm1QYWdlUHJvcHMsIGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogdGhpcy5wcm9wcy5lZGl0VHlwZSB8fCBcIlwiLFxyXG4gICAgZWRpdG9yRmxhZzogdHJ1ZSxcclxuICAgIHZhbHVlOiB7fSBhcyBhbnksXHJcbiAgICBkaWN0TmFtZXM6IHt9IGFzIGFueSxcclxuICAgIGZpbGVMaXN0OiB7fSBhcyBhbnksXHJcbiAgICB3aWR0aDogZ2V0TG9jYWxTdG9yZShcIm5zYy1ob21lLW1lbnVDb2xsc2FwZVwiKSB8fCBmYWxzZSxcclxuICAgIGVkaXRJZDogdGhpcy5wcm9wcy5lZGl0SWQgfHwgXCJcIixcclxuICB9O1xyXG4gIHZhbGlkOiBhbnkgPSBbXTtcclxuICBkYXRlVmFsdWVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBmaWxlRm9ybWF0ID0gW10gYXMgYW55O1xyXG4gIHJhbmdlckRhdGUgPSB7fSBhcyBhbnk7XHJcbiAgcmVmTGlzdCA9IHt9IGFzIGFueTtcclxuICBzdWJtaXRGbGFnID0gdHJ1ZTtcclxuICBjb21wb25lbnREaWRNb3VudCgpOiB2b2lkIHtcclxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBmb3JtVHlwZSA9IFwicGFnZVwiLFxyXG4gICAgICByZXF1ZXN0T2JqZWN0ID0ge30sXHJcbiAgICAgIGVkaXRUeXBlID0gXCLmlrDlop5cIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgaWYgKGZvcm1UeXBlID09IFwicGFnZVwiKSB7XHJcbiAgICAgIGlmIChyZXF1ZXN0T2JqZWN0LmRldGFpbFVybCAmJiBlZGl0VHlwZSAhPT0gXCLmlrDlop5cIikge1xyXG4gICAgICAgIE5zY1JlcXVlc3QuZ2V0KHJlcXVlc3RPYmplY3QuZGV0YWlsVXJsLCB7XHJcbiAgICAgICAgICBwYXJhbXM6IHsgaWQ6IHRoaXMuc3RhdGUuZWRpdElkIH0sXHJcbiAgICAgICAgICB4c3NGaWx0ZXI6IGZhbHNlLFxyXG4gICAgICAgICAgYXV0b1ByZWZpeDogdHJ1ZSxcclxuICAgICAgICB9KS50aGVuKChyZXMpID0+IHtcclxuICAgICAgICAgIGlmIChyZXMuY29kZSA9PSAyMDApIHtcclxuICAgICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKHsgLi4ucmVzLmRhdGEgfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0gZWxzZSBpZiAoZWRpdFR5cGUgPT0gXCLmlrDlop5cIikge1xyXG4gICAgICAgIGlmICh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSkge1xyXG4gICAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IHRoaXMuY29udmVydERlZmF1bHRWYWx1ZSgpOyBcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zZXRGaWVsZHNWYWx1ZShkZWZhdWx0VmFsdWUgfHwge30pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBjb21wb25lbnRXaWxsVW5tb3VudCgpIHtcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKFwibWVzc2FnZVwiLCB0aGlzLmxpc3Rlbk1lc3NhZ2UpO1xyXG4gIH1cclxuICBsaXN0ZW5NZXNzYWdlID0gKGV2KSA9PiB7XHJcbiAgICBjb25zdCBkYXRhID0gdHlwZW9mIGV2LmRhdGEgPT09IFwic3RyaW5nXCIgPyBKU09OLnBhcnNlKGV2LmRhdGEpIDogZXYuZGF0YTtcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAoZGF0YS5ldmVudFR5cGUgPT0gXCJtZW51Q29sbHNhcGVcIikge1xyXG4gICAgICBjb25zdCB7IHBheWxvYWQgfSA9IGRhdGE7XHJcbiAgICAgIGlmIChwYXlsb2FkLmNsb3NlID09PSB0cnVlIHx8IHBheWxvYWQuY2xvc2UgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgX3RoaXMuc2V0U3RhdGUoeyB3aWR0aDogcGF5bG9hZC5jbG9zZSB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgY29udmVydERlZmF1bHRWYWx1ZSgpIHtcclxuICAgIGNvbnN0IHsgZGVmYXVsdFZhbHVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgcmV0dXJuIGNvbnZlcnRTdHJpbmdUb09iaihkZWZhdWx0VmFsdWUsIHRoaXMucHJvcHMuVXRpbHMgfHwge30pO1xyXG4gIH1cclxuICAvL+ihqOWNleaYvuekulxyXG4gIHNob3cob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiAoZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgICAgZWRpdElkOiBvcmdWYWx1ZS5pZCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKG9yZ1ZhbHVlLCBsYWJlbCk7XHJcbiAgICAgICAgICAvL+WkhOeQhuaWh+S7tuaVsOaNrlxyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IGRlZmF1bHRWYWx1ZSA9IHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlXHJcbiAgICAgICAgICAgID8gdGhpcy5jb252ZXJ0RGVmYXVsdFZhbHVlKClcclxuICAgICAgICAgICAgOiB7fTtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybShkZWZhdWx0VmFsdWUgfHwge30sIHtcclxuICAgICAgICAgICAgYWZ0ZXJSZW5kZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoaWRlKGhpZGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IG9uSGlkZUZvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25IaWRlRm9ybSkge1xyXG4gICAgICBvbkhpZGVGb3JtICYmIG9uSGlkZUZvcm0oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICBoaWRlICYmIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIHNob3dGb3JtKG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvdyhvcmdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spO1xyXG4gIH1cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBsb2FkaW5nIH0pO1xyXG4gIH1cclxuICBzZXRFZGl0VHlwZSh0eXBlKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgbGFiZWw6IHR5cGUsXHJcbiAgICB9KTtcclxuICB9XHJcbiAgc2V0RWRpdElkKGlkKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWRpdElkOiBpZCxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRGb3JtVmFsdWUoKSB7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IGRhdGEgPSBsb2Rhc2guY2xvbmVEZWVwKHsgLi4uZm9ybVZhbHVlLCAuLi5kaWN0TmFtZXMgfSk7XHJcbiAgICBpZiAodGhpcy5maWxlRm9ybWF0Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IG5ld0ZpbGVMaXN0ID0ge30gYXMgYW55O1xyXG4gICAgICB0aGlzLmZpbGVGb3JtYXQubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgaWYgKGZpbGVMaXN0W2l0ZW1dLmxlbmd0aCA9PSAwKSB7XHJcbiAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IG51bGw7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChmaWxlTGlzdFtpdGVtXSB8fCBbXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgLi4ubmV3RmlsZUxpc3QgfTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zdWJtaXRGbGFnKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoXCLor7fnrYnlvoXmiYDmnInmlofku7bkuIrkvKDlrozmiJDvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBkYXRhW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5yYW5nZXJEYXRlW2tleV0pIHtcclxuICAgICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgZGF0YVt0aGlzLnJhbmdlckRhdGVba2V5XVswXV0gPSBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZGF0YVt0aGlzLnJhbmdlckRhdGVba2V5XVsxXV0gPSBkYXlqcyhvbGRkYXRhWzFdKS5mb3JtYXQoXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMuZGF0ZUZvcm1hdFtrZXldXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgZGVsZXRlIGRhdGFba2V5XTtcclxuICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7fVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBkYXlqcyhvbGRkYXRhKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAobGFiZWwgPT0gXCLnvJbovpFcIikge1xyXG4gICAgICBkYXRhID0geyAuLi5kYXRhLCBpZDogdmFsdWU/LmlkIHx8IHRoaXMuc3RhdGUuZWRpdElkIH07XHJcbiAgICB9XHJcbiAgICBsZXQgbmV3RGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgcmV0dXJuIG5ld0RhdGE7XHJcbiAgfVxyXG4gIGNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbHVlcyA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBmaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0LmZvckVhY2goKGZpbGVLZXkpID0+IHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1tmaWxlS2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSAmJiBBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICBmaWxlTGlzdFtmaWxlS2V5XSA9IHRoaXMuZ2V0RmlsZUxpc3Qob2xkZGF0YSB8fCBbXSwgdHlwZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2ZpbGVLZXldID0gW107XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBmaWxlTGlzdCB9KTtcclxuICAgIH1cclxuICAgIC8v5aSE55CG5pel5pyf5qC85byP5pWw5o2uXHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZXNba2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlc1trZXldID0gZGF5anMob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAodGhpcy5yYW5nZXJEYXRlW2tleV0pIHtcclxuICAgICAgICAgICAgbGV0IHZhbHVlMSA9IHZhbHVlc1t0aGlzLnJhbmdlckRhdGVba2V5XVswXV07XHJcbiAgICAgICAgICAgIGxldCB2YWx1ZTIgPSB2YWx1ZXNbdGhpcy5yYW5nZXJEYXRlW2tleV1bMV1dO1xyXG4gICAgICAgICAgICBpZiAodmFsdWUxICYmIHZhbHVlMikge1xyXG4gICAgICAgICAgICAgIHZhbHVlc1trZXldID0gW1xyXG4gICAgICAgICAgICAgICAgZGF5anModmFsdWUxLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgICBkYXlqcyh2YWx1ZTIsIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzO1xyXG4gIH1cclxuICBzZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKG5ld1ZhbHVlKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZm9ybWRhdGEsIGxhYmVsKSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHN1Ym1pdFVybCxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIGNhbGxCYWNrLFxyXG4gICAgICByZXF1ZXN0T2JqZWN0ID0ge30sXHJcbiAgICAgIHJlcXVlc3RDb25maWcgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBhZGRVcmwsIGVkaXRvclVybCwgYWRkUGFyYW1zLCBlZGl0b3JQYXJhbXMgfSA9IHJlcXVlc3RPYmplY3Q7XHJcbiAgICBsZXQgdXJsID0gc3VibWl0VXJsO1xyXG4gICAgbGV0IHBhcmFtczogYW55ID0ge307XHJcbiAgICBpZiAoIWxhYmVsIHx8IGxhYmVsID09IFwi5paw5aKeXCIpIHtcclxuICAgICAgdXJsID0gYWRkVXJsID8gYWRkVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoYWRkUGFyYW1zICYmIHR5cGVvZiBhZGRQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbihcIlV0aWxzXCIsIGFkZFBhcmFtcyk7XHJcbiAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpO1xyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtcztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBhZGRQYXJhbXMgPyBhZGRQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gXCLnvJbovpFcIikge1xyXG4gICAgICB1cmwgPSBlZGl0b3JVcmwgPyBlZGl0b3JVcmwgOiBzdWJtaXRVcmw7XHJcbiAgICAgIGlmIChlZGl0b3JQYXJhbXMgJiYgdHlwZW9mIGVkaXRvclBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9O1xyXG4gICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgZWRpdG9yUGFyYW1zKTtcclxuICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgICAgcGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IGVkaXRvclBhcmFtcyA/IGVkaXRvclBhcmFtcyA6IHN1Ym1pdFBhcmFtcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIumFjee9rlVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBkYXRhID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBwYXJhbXM7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ub25TdWJtaXQoXHJcbiAgICAgIHVybCxcclxuICAgICAge1xyXG4gICAgICAgIGRhdGE6IHsgLi4uZm9ybWRhdGEsIC4uLmRhdGEgfSxcclxuICAgICAgICBub1VuZGVmaW5lZDogbGFiZWwgPT0gXCLnvJbovpFcIixcclxuICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAgIC4uLm90aGVyUGFyYW1zLFxyXG4gICAgICB9LFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB7IGNvZGUsIG1zZyB9ID0gcmVzO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MobGFiZWwgKyBcIuaIkOWKn1wiKTtcclxuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKCk7XHJcbiAgICAgICAgICB9LCA1MDApO1xyXG5cclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICk7XHJcbiAgfVxyXG4gIGdldEZpbGVMaXN0KGRhdGEsIGxhYmVsID0gXCLmlrDlop5cIikge1xyXG4gICAgdGhpcy5zdWJtaXRGbGFnID0gdHJ1ZTtcclxuICAgIGxldCBmaWxlTGlzdCA9IFtdIGFzIGFueTtcclxuICAgIGlmIChkYXRhICYmIGRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICBkYXRhLm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGxldCBvYmogPSB7XHJcbiAgICAgICAgICBmaWxlSWQ6IGl0ZW0uZmlsZUlkLFxyXG4gICAgICAgICAgZmlsZU5hbWU6IGl0ZW0uZmlsZU5hbWUsXHJcbiAgICAgICAgfSBhcyBhbnk7XHJcbiAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgIG9iai5zdGF0dXMgPSBcImRvbmVcIjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhYmVsICE9PSBcIuafpeeci1wiICYmIGl0ZW0uc3RhdHVzICE9PSBcImRvbmVcIikge1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXRGbGFnID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbGVMaXN0LnB1c2gob2JqKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsZUxpc3Q7XHJcbiAgfVxyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGNvbnN0IHsgb25TdWJtaXQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCB2YWxpZCA9IHRoaXMudmFsaWQ7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudFxyXG4gICAgICA/LnZhbGlkYXRlRmllbGRzKClcclxuICAgICAgLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgIGxldCBkYXRhID0gdGhpcy5nZXRGb3JtVmFsdWUoKTtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogdHJ1ZSB9KTtcclxuICAgICAgICBpZiAob25TdWJtaXQpIHtcclxuICAgICAgICAgIGxldCByZXR1cm5EYXRhID0gbG9kYXNoLmNsb25lRGVlcChkYXRhKTtcclxuICAgICAgICAgIG9uU3VibWl0ICYmIG9uU3VibWl0KHJldHVybkRhdGEsIGxhYmVsKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgIH0pXHJcbiAgICAgIC5jYXRjaCgoZXJyb3JJbmZvOiBhbnkpID0+IHt9KTtcclxuICB9XHJcbiAgdmFsdWVDaGFuZ2UoeyB0eXBlLCBkaWN0TmFtZSB9LCBwcm9wcywgdmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKSB7XHJcbiAgICBpZiAodmFsdWVPcHRpb24pIHtcclxuICAgICAgaWYgKGRpY3ROYW1lKSB7XHJcbiAgICAgICAgY29uc3QgeyBkaWN0TmFtZXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgY29uc3QgbmV3TmFtZXMgPSB7IC4uLmRpY3ROYW1lcyB9IGFzIGFueTtcclxuICAgICAgICBuZXdOYW1lc1tkaWN0TmFtZV0gPSB2YWx1ZU9wdGlvbi5sYWJlbDtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRpY3ROYW1lczogbmV3TmFtZXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwcm9wcy5vbkNoYW5nZSkge1xyXG4gICAgICBpZiAodHlwZW9mIHByb3BzLm9uQ2hhbmdlID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLm9uQ2hhbmdlID09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHtcclxuICAgICAgICAgIHZhbHVlLFxyXG4gICAgICAgICAgZGF0YSxcclxuICAgICAgICAgIGZvcm1SZWY6IHRoaXMuZm9ybVJlZixcclxuICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzIHx8IHt9LFxyXG4gICAgICAgICAgcmVmczogdGhpcy5yZWZMaXN0LFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgICBpZiAodHlwZSA9PSBcIlNlbGVjdFwiKSB7XHJcbiAgICAgICAgICBldmVudE9wdGlvbi52YWx1ZU9wdGlvbiA9IHZhbHVlT3B0aW9uO1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24uZGF0YSA9IGRhdGE7XHJcbiAgICAgICAgfSBlbHNlIGlmICh0eXBlID09IFwiRGF0ZVBpY2tlclwiIHx8IHR5cGUgPT0gXCJSYW5nZVBpY2tlclwiKSB7XHJcbiAgICAgICAgICBldmVudE9wdGlvbi52YWx1ZVN0ciA9IHZhbHVlT3B0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzZWxmRnVuYyA9IG5ldyBGdW5jdGlvbihcImV2ZW50T3B0aW9uXCIsIFwiVXRpbHNcIiwgcHJvcHMub25DaGFuZ2UpO1xyXG4gICAgICAgIHNlbGZGdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKSB7XHJcbiAgICBjb25zdCBuZXdWYWxpZDogYW55W10gPSBbXTtcclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxSb3cgZ3V0dGVyPXsyNH0+XHJcbiAgICAgICAge2Zvcm1zLm1hcCgoaXRlbTogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCBpdGVtUHJvcHMgPSBpdGVtLnByb3BzIHx8IHt9O1xyXG4gICAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQgfHwgaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2l0ZW0ubmFtZV0gPVxyXG4gICAgICAgICAgICAgIGl0ZW1Qcm9wcy5mb3JtYXQgfHwgaXRlbVByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQpIHtcclxuICAgICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2l0ZW0ubmFtZV0gPSBpdGVtUHJvcHMuZm9ybWF0O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKGl0ZW0udHlwZSA9PSBcIlJhbmdlUGlja2VyXCIgJiYgaXRlbS5uYW1lLnNwbGl0KFwiLFwiKS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMucmFuZ2VyRGF0ZVtpdGVtLm5hbWVdID0gaXRlbS5uYW1lLnNwbGl0KFwiLFwiKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGxldCBhbGxvd0NoYXJzID0gaXRlbS5wcm9wcz8uYWxsb3dDaGFycyB8fCBmYWxzZTtcclxuICAgICAgICAgIGxldCBwcm9wcyA9IHtcclxuICAgICAgICAgICAgcGxhY2Vob2xkZXI6IGDor7fovpPlhaUke2l0ZW0ubGFiZWx9YCxcclxuICAgICAgICAgICAgLi4uaXRlbS5wcm9wcyxcclxuICAgICAgICAgICAgb25DaGFuZ2U6IHRoaXMudmFsdWVDaGFuZ2UuYmluZChcclxuICAgICAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgIHR5cGU6IGl0ZW0udHlwZSxcclxuICAgICAgICAgICAgICAgIGRpY3ROYW1lOiBpdGVtLmRpY3ROYW1lLFxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgeyAuLi5pdGVtLnByb3BzIH1cclxuICAgICAgICAgICAgKSxcclxuICAgICAgICAgIH07XHJcbiAgICAgICAgICBpZiAoIWl0ZW0udHlwZSB8fCBpdGVtLnR5cGUgPT0gXCJJbnB1dFwiKSB7XHJcbiAgICAgICAgICAgIHByb3BzLmFsbG93Q2hhcnMgPSB0cnVlOyAvL2Zvcm0uaXRlbSDkvb/nlKhpbnB1dOe7hOS7tmFsbG93Q2hhcnPlv4Xpobvpu5jorqR0cnVlLOS4jeeEtui+k+WFpeeJueauiuWtl+espuaLv+WIsOeahOWAvOS4jeWvuVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZGVsZXRlIHByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgICAgZGVsZXRlIHByb3BzLmZvcm1hdDtcclxuICAgICAgICAgIGRlbGV0ZSBwcm9wcy5kYXRhVHlwZTtcclxuICAgICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICAgIHByb3BzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgcHJvcHMucGxhY2Vob2xkZXIgPSBcIlwiO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKChpdGVtLnJ1bGVzICYmIGl0ZW0ucnVsZXMubGVuZ3RoID4gMCkgfHwgaXRlbS5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICBuZXdWYWxpZC5wdXNoKGl0ZW0ubmFtZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoaW5kZXggKyAxID09PSBmb3Jtcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZCA9IG5ld1ZhbGlkO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29uc3QgaXRlbVJlZjogYW55ID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICAgICAgICAgIHRoaXMucmVmTGlzdFtpdGVtLm5hbWVdID0gaXRlbVJlZjtcclxuICAgICAgICAgIGlmIChpdGVtLnR5cGUgIT09IFwiVXBsb2FkXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8Q29sXHJcbiAgICAgICAgICAgICAgICBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogaXRlbS5oaWRlID8gXCJub25lXCIgOiBcImJsb2NrXCIgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICBuYW1lPXtpdGVtLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgICBjb21wb25lbnROYW1lPXtpdGVtLnR5cGUgPyBpdGVtLnR5cGUgOiBcIklucHV0XCJ9XHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgICB0eXBlPXtpdGVtLnByb3BzPy50eXBlfVxyXG4gICAgICAgICAgICAgICAgICBub1N0eWxlPXtpdGVtLm5vU3R5bGUgfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtLmZvcm1SZW5kZXJcclxuICAgICAgICAgICAgICAgICAgICA/IGl0ZW0uZm9ybVJlbmRlcihwcm9wcylcclxuICAgICAgICAgICAgICAgICAgICA6IGdldE5vZGUoaXRlbS50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlZjogaXRlbVJlZixcclxuICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5maWxlRm9ybWF0LnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICA8Q29sXHJcbiAgICAgICAgICAgICAgICBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9XHJcbiAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogaXRlbS5oaWRlID8gXCJub25lXCIgOiBcImJsb2NrXCIgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICBuYW1lPXtpdGVtLm5hbWV9XHJcbiAgICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgICB0eXBlPXtpdGVtLnByb3BzPy50eXBlfVxyXG4gICAgICAgICAgICAgICAgICByZXF1aXJlZD17aXRlbS5yZXF1aXJlZH1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPFVwbG9hZFxyXG4gICAgICAgICAgICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0W2l0ZW0ubmFtZV0gfHwgW119XHJcbiAgICAgICAgICAgICAgICAgICAgb25MaXN0Q2hhbmdlPXsobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgY29uc3QgeyBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdDogeyAuLi5maWxlTGlzdCwgW2l0ZW0ubmFtZV06IGxpc3QgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3Q9e3tcclxuICAgICAgICAgICAgICAgICAgICAgIHNob3dEb3dubG9hZEljb246IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICBzaG93UmVtb3ZlSWNvbjogbGFiZWwgIT09IFwi5p+l55yLXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICByZWY9e2l0ZW1SZWZ9XHJcbiAgICAgICAgICAgICAgICAgICAgey4uLnByb3BzfVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW0ucHJvcHM/LmNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICAgICAgICA/IGl0ZW0ucHJvcHM/LmNoaWxkcmVuXHJcbiAgICAgICAgICAgICAgICAgICAgICA6IGxhYmVsICE9PSBcIuafpeeci1wiICYmIDxCdXR0b24+5LiK5Lyg5paH5Lu2PC9CdXR0b24+fVxyXG4gICAgICAgICAgICAgICAgICA8L1VwbG9hZD5cclxuICAgICAgICAgICAgICAgIDwvRm9ybS5JdGVtPlxyXG4gICAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pfVxyXG4gICAgICA8L1Jvdz5cclxuICAgICk7XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZm9ybXMgPSBbXSxcclxuICAgICAgcHJvcHMgPSB7fSxcclxuICAgICAgZm9vdGVyID0gdHJ1ZSxcclxuICAgICAgY2hpbGRyZW4sXHJcbiAgICAgIGZvcm1UeXBlID0gXCJwYWdlXCIsXHJcbiAgICAgIHRpdGxlID0gXCJcIixcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsb2FkaW5nLCBsYWJlbCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGxldCBzZWxmQnV0dG9ucyA9IFtdIGFzIGFueTtcclxuICAgIGxldCBzZWxmUGFuZXMgPSBbXSBhcyBhbnk7XHJcblxyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoaXRlbSkpIHtcclxuICAgICAgICAgIGl0ZW0ubWFwKChjaGlsZCkgPT4ge1xyXG4gICAgICAgICAgICBpZiAoY2hpbGQ/LnByb3BzPy5wYWdlVHlwZSA9PSBcImZvcm1QYW5lXCIpIHtcclxuICAgICAgICAgICAgICB0eXBlb2YgaXRlbSA9PSBcIm9iamVjdFwiICYmIHNlbGZQYW5lcy5wdXNoKGNoaWxkKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHR5cGVvZiBpdGVtID09IFwib2JqZWN0XCIgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChjaGlsZHJlbikge1xyXG4gICAgICBjb25zdCB7IHByb3BzIH06IGFueSA9IGNoaWxkcmVuO1xyXG4gICAgICBpZiAocHJvcHM/LnBhZ2VUeXBlID09IFwiZm9ybVBhbmVcIikge1xyXG4gICAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSBcIm9iamVjdFwiICYmIHNlbGZQYW5lcy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0eXBlb2YgY2hpbGRyZW4gPT0gXCJvYmplY3RcIiAmJiBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgbGV0IG1vZGFsUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCArIHRpdGxlLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2FuY2VsOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgb2tCdXR0b25Qcm9wczogeyBsb2FkaW5nOiBsb2FkaW5nIH0sXHJcbiAgICAgIGNlbnRlcmVkOiB0cnVlLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICAgIGZvb3RlckJ1dHRvbjogc2VsZkJ1dHRvbnMsXHJcbiAgICB9IGFzIGFueTtcclxuXHJcbiAgICBsZXQgZHJhd2VyUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNsb3NlOiB0aGlzLmhpZGUuYmluZCh0aGlzKSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgICBmb290ZXJCdXR0b246IHNlbGZCdXR0b25zLFxyXG4gICAgfSBhcyBhbnk7XHJcbiAgICBpZiAobGFiZWwgPT0gXCLmn6XnnItcIikge1xyXG4gICAgICBtb2RhbFByb3BzLmZvb3RlciA9IG51bGw7XHJcbiAgICAgIGRyYXdlclByb3BzLmZvb3RlciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdCA9IHt9O1xyXG4gICAgdGhpcy5kYXRlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmZpbGVGb3JtYXQgPSBbXTtcclxuICAgIGxldCBuZXdGb3Jtc09iaiA9IHt9IGFzIGFueTtcclxuICAgIGxldCBmb3JtR3JvdXBzID0gW10gYXMgYW55O1xyXG4gICAgbGV0IG90aGVyR3J1cHMgPSBbXSBhcyBhbnk7XHJcbiAgICBsZXQgZGVmYXVsdFZhbHVlID0ge30gYXMgYW55O1xyXG5cclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBpZiAoZm9ybUdyb3Vwcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGZvcm1Hcm91cHMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgICBsZXQgZ3JvdXBGb3JtcyA9IFtdIGFzIGFueTtcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIG5ld0Zvcm1zT2JqW2l0ZW1dID0gZ3JvdXBGb3JtcztcclxuICAgICAgfSk7XHJcbiAgICAgIGlmIChvdGhlckdydXBzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBuZXdGb3Jtc09ialtcIm5vR3JvdXBOYW1lXCJdID0gb3RoZXJHcnVwcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29uc3QgUGFuZVdpdGhvdXRQYWdlVHlwZSA9IChQYW5lLCBwcm9wcykgPT4ge1xyXG4gICAgICBjb25zdCB7IHBhZ2VUeXBlLCAuLi5jbGVhblByb3BzIH0gPSBwcm9wcztcclxuICAgICAgcmV0dXJuIFJlYWN0LmNyZWF0ZUVsZW1lbnQoUGFuZS50eXBlLCBjbGVhblByb3BzKTtcclxuICAgIH07XHJcbiAgICAvL+iHquWumuS5ieaMiemSrlxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPEZvcm1cclxuICAgICAgICByZWY9e3RoaXMuZm9ybVJlZn1cclxuICAgICAgICBzaG93TW9kZWw9e3RoaXMucHJvcHMuZm9ybVR5cGUgPT0gXCJwYWdlXCIgPyBudWxsIDogdGhpcy5wcm9wcy5mb3JtVHlwZX1cclxuICAgICAgICBtb2RhbFByb3BzPXt7IC4uLm1vZGFsUHJvcHMgfX1cclxuICAgICAgICBkcmF3ZXJQcm9wcz17eyAuLi5kcmF3ZXJQcm9wcyB9fVxyXG4gICAgICAgIC8vIGxhYmVsQ29sPXt7IGZsZXg6IFwiMTAwcHhcIiB9fVxyXG4gICAgICAgIC8vIHdyYXBwZXJDb2w9e3sgZmxleDogXCIxNXZ3XCIgfX1cclxuICAgICAgICBvblZhbHVlc0NoYW5nZT17KGNoYW5nZWRWYWx1ZXMsIGFsbFZhbHVlcykgPT4ge1xyXG4gICAgICAgICAgY29uc3QgeyBvbkZvcm1DaGFuZ2UgfSA9IHRoaXMucHJvcHM7XHJcbiAgICAgICAgICBvbkZvcm1DaGFuZ2UgJiYgb25Gb3JtQ2hhbmdlKGNoYW5nZWRWYWx1ZXMsIGFsbFZhbHVlcyk7XHJcbiAgICAgICAgfX1cclxuICAgICAgICBjaGFuZ2VWYWxpZD17dGhpcy5wcm9wcy5jaGFuZ2VWYWxpZH1cclxuICAgICAgICB7Li4ucHJvcHN9XHJcbiAgICAgID5cclxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhZ2VcIj5cclxuICAgICAgICAgIHtmb3JtR3JvdXBzLmxlbmd0aCA9PSAwID8gKFxyXG4gICAgICAgICAgICB0aGlzLnByb3BzLmZvcm1UeXBlICE9PSBcInBhZ2VcIiA/IChcclxuICAgICAgICAgICAgICB0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKVxyXG4gICAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAge3RoaXMucmVuZGVyRm9ybShmb3JtcywgbGFiZWwpfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICBPYmplY3Qua2V5cyhuZXdGb3Jtc09iaikubWFwKChrZXkpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAgICB7a2V5ICE9IFwibm9Hcm91cE5hbWVcIiAmJiAoXHJcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS10aXRsZVwiPntrZXl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt0aGlzLnJlbmRlckZvcm0obmV3Rm9ybXNPYmpba2V5XSwgbGFiZWwpfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAge3NlbGZQYW5lcy5sZW5ndGggPiAwICYmXHJcbiAgICAgICAgICAgIHNlbGZQYW5lcy5tYXAoKFBhbmUsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiIGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgICAgICB7UGFuZVdpdGhvdXRQYWdlVHlwZShQYW5lLCB7IC4uLlBhbmUucHJvcHMgfSl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgIHtmb3JtVHlwZSA9PT0gXCJwYWdlXCIgJiYgZm9vdGVyID09IHRydWUgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICBcIm5zYy1mb3JtLXBhZ2UtZm9vdGVyXCIsXHJcbiAgICAgICAgICAgICAgICBbdGhpcy5zdGF0ZS53aWR0aCA/IFwibnNjLWZvcm0tcGFnZS1mb290ZXItd2lkdGhcIiA6IFwiXCJdLFxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5mb290ZXJDbGFzc05hbWVcclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgey4uLnRoaXMucHJvcHMuY2FuY2VsQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnByb3BzLm9uQ2FuY2VsKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbmNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOWPlua2iFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICAgIHR5cGU9XCJwcmltYXJ5XCJcclxuICAgICAgICAgICAgICAgIHsuLi50aGlzLnByb3BzLm9rQnV0dG9uUHJvcHN9XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIHRoaXMub25TdWJtaXQoKTtcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e1wibnNjLWZvcm0tcGFnZS1mb290ZXItYnRuXCJ9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAg5L+d5a2YXHJcbiAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAge3NlbGZCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17XCJuc2MtZm9ybS1wYWdlLWZvb3Rlci1idG5cIn0ga2V5PXtpbmRleH0+XHJcbiAgICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAge2Zvcm1UeXBlID09PSBcInBhZ2VcIiAmJiBmb290ZXIgIT09IHRydWUgJiYgdGhpcy5wcm9wcy5mb290ZXJ9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvRm9ybT5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3JtUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBQUEsT0FBT0EsS0FBSyxJQUFJQyxhQUFhLFFBQW1CLE9BQU87QUFDdkQsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUNsQyxTQUFrQkMsT0FBTyxRQUFRLGFBQWE7QUFDOUMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxHQUFHLE1BQU0scUJBQXFCO0FBQ3JDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsU0FBU0MsVUFBVSxFQUFFQyxhQUFhLFFBQVEsbUJBQW1CO0FBQzdELE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU8scUJBQXFCO0FBQzVCLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxHQUFHLE1BQU0sWUFBWTtBQUU1QixPQUFPQyxVQUFVLE1BQU0sYUFBYTtBQUdwQyxTQUFTQyxrQkFBa0IsUUFBUSxzQkFBc0I7QUE0QnpELE1BQU1DLFFBQVEsU0FB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