nsc-react-component 4.0.20 → 4.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/page/BasePage/index.d.ts +1 -1
- package/lib/page/BasePage/index.js +10 -19
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/FormPage/index.js +5 -5
- package/lib/page/FormPage/index.js.map +1 -1
- package/lib/page/HeaderSearch/index.d.ts +1 -0
- package/lib/page/HeaderSearch/index.js +15 -5
- package/lib/page/HeaderSearch/index.js.map +1 -1
- package/lib/page/SettingTable/index.d.ts +11 -0
- package/lib/page/SettingTable/index.js +76 -15
- package/lib/page/SettingTable/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -293,10 +293,10 @@ class FormPage extends PureComponent {
|
|
|
293
293
|
let valid = this.valid;
|
|
294
294
|
(_this$formRef$current9 = this.formRef.current) === null || _this$formRef$current9 === void 0 || _this$formRef$current9.validateFields(valid).then(() => {
|
|
295
295
|
let data = this.getFormValue();
|
|
296
|
-
if (!this.submitFlag) {
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
}
|
|
296
|
+
// if (!this.submitFlag) {
|
|
297
|
+
// message.error('请等待所有文件上传完成!')
|
|
298
|
+
// return;
|
|
299
|
+
// }
|
|
300
300
|
this.setState({
|
|
301
301
|
loading: true
|
|
302
302
|
});
|
|
@@ -570,4 +570,4 @@ class FormPage extends PureComponent {
|
|
|
570
570
|
}
|
|
571
571
|
}
|
|
572
572
|
export default FormPage;
|
|
573
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZGF5anMiLCJsb2Rhc2giLCJCdXR0b24iLCJVcGxvYWQiLCJjbHMiLCJGb3JtUGFnZSIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJzZXRTdGF0ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImNvbnZlcnRWYWx1ZSIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2hvd0Zvcm0iLCJhZnRlclJlbmRlciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJwcm9wcyIsImRlZmF1bHRWYWx1ZSIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsInNldExvYWRpbmciLCJnZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ1Iiwic3RhdGUiLCJmb3JtVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsImRhdGEiLCJfb2JqZWN0U3ByZWFkIiwiZmlsZUZvcm1hdCIsIm5ld0ZpbGVMaXN0IiwibWFwIiwiaXRlbSIsImdldEZpbGVMaXN0Iiwic3VibWl0RmxhZyIsImVycm9yIiwiZGF0ZVZhbHVlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsImlkIiwidHlwZSIsInZhbHVlcyIsImNsb25lRGVlcCIsImRhdGVGb3JtYXQiLCJzZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ2IiwibmV3VmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdE9iamVjdCIsInJlcXVlc3RDb25maWciLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJ1cmwiLCJwYXJhbXMiLCJVdGlscyIsImZ1bmMiLCJGdW5jdGlvbiIsImNvbnZlclBhcmFtcyIsImNvbnNvbGUiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm9uU3VibWl0Iiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsIm9iaiIsImZpbGVJZCIsImZpbGVOYW1lIiwic3RhdHVzIiwicHVzaCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5IiwidmFsaWQiLCJ2YWxpZGF0ZUZpZWxkcyIsInRoZW4iLCJjYXRjaCIsImVycm9ySW5mbyIsInZhbHVlQ2hhbmdlIiwiX3JlZiIsInZhbHVlT3B0aW9uIiwiZGljdE5hbWUiLCJuZXdOYW1lcyIsIm9uQ2hhbmdlIiwiZXZlbnRPcHRpb24iLCJmdW5jcyIsInJlZnMiLCJyZWZMaXN0IiwidmFsdWVTdHIiLCJzZWxmRnVuYyIsInJlbmRlckZvcm0iLCJmb3JtcyIsIm5ld1ZhbGlkIiwiY3JlYXRlRWxlbWVudCIsImd1dHRlciIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJiaW5kIiwiZGF0YVR5cGUiLCJkaXNhYmxlZCIsInJ1bGVzIiwicmVxdWlyZWQiLCJpdGVtUmVmIiwiX2l0ZW0kcHJvcHMyIiwic3BhbiIsInN0eWxlIiwiZGlzcGxheSIsIkl0ZW0iLCJjb21wb25lbnROYW1lIiwibm9TdHlsZSIsImZvcm1SZW5kZXIiLCJyZWYiLCJfaXRlbSRwcm9wczMiLCJfaXRlbSRwcm9wczQiLCJfaXRlbSRwcm9wczUiLCJfZXh0ZW5kcyIsIm9uTGlzdENoYW5nZSIsImxpc3QiLCJzaG93VXBsb2FkTGlzdCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UmVtb3ZlSWNvbiIsImNoaWxkcmVuIiwicmVuZGVyIiwiZm9vdGVyIiwibW9kYWxQcm9wcyIsInRpdGxlIiwib25PayIsIm9uQ2FuY2VsIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwid2lkdGgiLCJkcmF3ZXJQcm9wcyIsIm9uQ2xvc2UiLCJuZXdGb3Jtc09iaiIsImZvcm1Hcm91cHMiLCJvdGhlckdydXBzIiwiZ3JvdXBOYW1lIiwiaW5kZXhPZiIsImdyb3VwRm9ybXMiLCJmb3JtIiwic2VsZkJ1dHRvbnMiLCJzaG93TW9kZWwiLCJmb3JtVHlwZSIsImxhYmVsQ29sIiwiZmxleCIsIndyYXBwZXJDb2wiLCJvblZhbHVlc0NoYW5nZSIsImNoYW5nZWRWYWx1ZXMiLCJhbGxWYWx1ZXMiLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsImNsYXNzTmFtZSIsIk9iamVjdCIsImtleXMiLCJmb290ZXJDbGFzc05hbWUiLCJjYW5jZWxCdXR0b25Qcm9wcyIsIm9uQ2xpY2siXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Zvcm1QYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBDb2wgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Db2xcIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgbG9kYXNoIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IFVwbG9hZCBmcm9tICcuLi8uLi9iYXNlL3VwbG9hZCdcclxuaW1wb3J0IGNscyBmcm9tICdjbGFzc25hbWVzJ1xyXG5pbXBvcnQgeyBJRm9ybVByb3BzIH0gZnJvbSBcInNyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtXCI7XHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVBhZ2VQcm9wcyB7XHJcbiAgZm9ybXM/OiBBcnJheTxhbnk+OyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgZm9vdGVyQ2xhc3NOYW1lPzogYW55O1xyXG4gIG9rQnV0dG9uUHJvcHM/OiBhbnk7XHJcbiAgY2FuY2VsQnV0dG9uUHJvcHM/OiBhbnk7XHJcbiAgZm9vdGVyPzogUmVhY3ROb2RlIHwgYm9vbGVhbjtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvbkZvcm1DaGFuZ2U/OiAodmFsdWU/OiBhbnksIGFsbFZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIHN1Ym1pdFBhcmFtcz86IGFueTsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcHJvcHM/OiBJRm9ybVByb3BzO1xyXG4gIHJlcXVlc3RPYmplY3Q/OiB7XHJcbiAgICBhZGRVcmw/OiBzdHJpbmcsXHJcbiAgICBlZGl0b3JVcmw/OiBzdHJpbmcsXHJcbiAgICBhZGRQYXJhbXM/OiBhbnksXHJcbiAgICBlZGl0b3JQYXJhbXM/OiBhbnlcclxuICB9XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueVxyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jbGFzcyBGb3JtUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8Rm9ybVBhZ2VQcm9wcywgYW55PiB7XHJcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIGxhYmVsOiBcIlwiLFxyXG4gICAgZWRpdG9yRmxhZzogdHJ1ZSxcclxuICAgIHZhbHVlOiB7fSBhcyBhbnksXHJcbiAgICBkaWN0TmFtZXM6IHt9IGFzIGFueSxcclxuICAgIGZpbGVMaXN0OiB7fSBhcyBhbnlcclxuICB9O1xyXG4gIHZhbGlkOiBhbnkgPSBbXTtcclxuICBkYXRlVmFsdWVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBmaWxlRm9ybWF0ID0gW10gYXMgYW55O1xyXG4gIHJlZkxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgc3VibWl0RmxhZyA9IHRydWVcclxuICAvL+ihqOWNleaYvuekulxyXG4gIHNob3cob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiAoZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUob3JnVmFsdWUsIGxhYmVsKTtcclxuICAgICAgICAgIC8v5aSE55CG5paH5Lu25pWw5o2uXHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odmFsdWUsIHtcclxuICAgICAgICAgICAgYWZ0ZXJSZW5kZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhpZGUoaGlkZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgb25IaWRlRm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvbkhpZGVGb3JtKSB7XHJcbiAgICAgIG9uSGlkZUZvcm0gJiYgb25IaWRlRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIGhpZGUgJiYgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgc2hvd0Zvcm0ob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgdGhpcy5zaG93KG9yZ1ZhbHVlLCBlZGl0b3JmbGFnLCBjYWxsQmFjaylcclxuICB9XHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogbG9hZGluZyB9KTtcclxuICB9XHJcbiAgZ2V0Rm9ybVZhbHVlKCkge1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUsIC4uLmRpY3ROYW1lcyB9O1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBuZXdGaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChmaWxlTGlzdFtpdGVtXS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIWZvcm1WYWx1ZVtpdGVtXSkge1xyXG4gICAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3QoZmlsZUxpc3RbaXRlbV0gfHwgW10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgLi4ubmV3RmlsZUxpc3QgfTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zdWJtaXRGbGFnKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoJ+ivt+etieW+heaJgOacieaWh+S7tuS4iuS8oOWujOaIkO+8gScpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBkYXRhW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gZGF5anMob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgaWQ6IHZhbHVlPy5pZCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG4gIGNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbHVlcyA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBmaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVzW2l0ZW1dO1xyXG4gICAgICAgIGlmIChvbGRkYXRhICYmIEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChvbGRkYXRhIHx8IFtdLCB0eXBlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsZUxpc3RbaXRlbV0gPSBbXVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBmaWxlTGlzdCB9KVxyXG4gICAgfVxyXG4gICAgLy/lpITnkIbml6XmnJ/moLzlvI/mlbDmja5cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1trZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICB2YWx1ZXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBkYXlqcyhvbGRkYXRhLCB0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzXHJcbiAgfVxyXG4gIHNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUobmV3VmFsdWUpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChmb3JtZGF0YSwgbGFiZWwpIHtcclxuICAgIGNvbnN0IHsgc3VibWl0VXJsLCBzdWJtaXRQYXJhbXMgPSB7fSwgY2FsbEJhY2ssIHJlcXVlc3RPYmplY3QgPSB7fSwgcmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBhZGRVcmwsIGVkaXRvclVybCwgYWRkUGFyYW1zLCBlZGl0b3JQYXJhbXMgfSA9IHJlcXVlc3RPYmplY3RcclxuICAgIGxldCB1cmwgPSAnJztcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgaWYgKGxhYmVsID09ICfmlrDlop4nKSB7XHJcbiAgICAgIHVybCA9IGFkZFVybCA/IGFkZFVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGFkZFBhcmFtcyAmJiB0eXBlb2YgYWRkUGFyYW1zID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oJ1V0aWxzJywgYWRkUGFyYW1zKTtcclxuICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscylcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXNcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBhZGRQYXJhbXMgPyBhZGRQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gJ+e8lui+kScpIHtcclxuICAgICAgdXJsID0gZWRpdG9yVXJsID8gZWRpdG9yVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoZWRpdG9yUGFyYW1zICYmIHR5cGVvZiBlZGl0b3JQYXJhbXMgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge31cclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbignVXRpbHMnLCBlZGl0b3JQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKVxyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtc1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IGVkaXRvclBhcmFtcyA/IGVkaXRvclBhcmFtcyA6IHN1Ym1pdFBhcmFtcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIumFjee9rlVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBkYXRhID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBwYXJhbXM7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ub25TdWJtaXQoXHJcbiAgICAgIHVybCxcclxuICAgICAge1xyXG4gICAgICAgIGRhdGE6IHsgLi4uZm9ybWRhdGEsIC4uLmRhdGEgfSxcclxuICAgICAgICBub1VuZGVmaW5lZDogbGFiZWwgPT0gXCLnvJbovpFcIixcclxuICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAgIC4uLm90aGVyUGFyYW1zLFxyXG4gICAgICB9LFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKGxhYmVsICsgXCLmiJDlip9cIik7XHJcbiAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRGaWxlTGlzdChkYXRhLCBsYWJlbCA9ICfmlrDlop4nKSB7XHJcbiAgICB0aGlzLnN1Ym1pdEZsYWcgPSB0cnVlXHJcbiAgICBsZXQgZmlsZUxpc3QgPSBbXSBhcyBhbnk7XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgZmlsZUlkOiBpdGVtLmZpbGVJZCxcclxuICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLmZpbGVOYW1lLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSAn5p+l55yLJykge1xyXG4gICAgICAgICAgb2JqLnN0YXR1cyA9ICdkb25lJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhYmVsICE9PSAn5p+l55yLJyAmJiBpdGVtLnN0YXR1cyAhPT0gJ2RvbmUnKSB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEZsYWcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZUxpc3QucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlTGlzdDtcclxuICB9O1xyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGNvbnN0IHsgb25TdWJtaXQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IHZhbGlkID0gdGhpcy52YWxpZDtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50XHJcbiAgICAgID8udmFsaWRhdGVGaWVsZHModmFsaWQpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0Rm9ybVZhbHVlKClcclxuICAgICAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICAgICAgbWVzc2FnZS5lcnJvcign6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBJylcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7IH0pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLm9uQ2hhbmdlID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7IHZhbHVlLCBkYXRhLCBmb3JtUmVmOiB0aGlzLmZvcm1SZWYsIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzIHx8IHt9LCByZWZzOiB0aGlzLnJlZkxpc3QgfSBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gJ1NlbGVjdCcpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlT3B0aW9uID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgICBldmVudE9wdGlvbi5kYXRhID0gZGF0YVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnRGF0ZVBpY2tlcicgfHwgdHlwZSA9PSAnUmFuZ2VQaWNrZXInKSB7XHJcbiAgICAgICAgICBldmVudE9wdGlvbi52YWx1ZVN0ciA9IHZhbHVlT3B0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzZWxmRnVuYyA9IG5ldyBGdW5jdGlvbignZXZlbnRPcHRpb24nLCAnVXRpbHMnLCBwcm9wcy5vbkNoYW5nZSk7XHJcbiAgICAgICAgc2VsZkZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyRm9ybShmb3JtcywgbGFiZWwpIHtcclxuICAgIGNvbnN0IG5ld1ZhbGlkOiBhbnlbXSA9IFtdO1xyXG4gICAgcmV0dXJuIDxSb3cgZ3V0dGVyPXsyNH0+XHJcbiAgICAgIHtmb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQgfHwgaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID1cclxuICAgICAgICAgICAgaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBhbGxvd0NoYXJzID0gaXRlbS5wcm9wcz8uYWxsb3dDaGFycyB8fCBmYWxzZTtcclxuICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgLi4uaXRlbS5wcm9wcyxcclxuICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQoXHJcbiAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgZGljdE5hbWU6IGl0ZW0uZGljdE5hbWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgLi4uaXRlbS5wcm9wcyB9XHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFpdGVtLnR5cGUgfHwgaXRlbS50eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7ICAvL2Zvcm0uaXRlbSDkvb/nlKhpbnB1dOe7hOS7tmFsbG93Q2hhcnPlv4Xpobvpu5jorqR0cnVlLOS4jeeEtui+k+WFpeeJueauiuWtl+espuaLv+WIsOeahOWAvOS4jeWvuVxyXG4gICAgICAgIH1cclxuICAgICAgICBkZWxldGUgcHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgZGVsZXRlIHByb3BzLmZvcm1hdDtcclxuICAgICAgICBkZWxldGUgcHJvcHMuZGF0YVR5cGU7XHJcbiAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgIHByb3BzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHByb3BzLnBsYWNlaG9sZGVyID0gJydcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChpdGVtLnJ1bGVzICYmIGl0ZW0ucnVsZXMubGVuZ3RoID4gMCkgfHwgaXRlbS5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgbmV3VmFsaWQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBmb3Jtcy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXRlbVJlZjogYW55ID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKVxyXG4gICAgICAgIHRoaXMucmVmTGlzdFtpdGVtLm5hbWVdID0gaXRlbVJlZlxyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgIT09ICdVcGxvYWQnKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Q29sIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn0ga2V5PXtpbmRleH0gc3R5bGU9e3sgZGlzcGxheTogaXRlbS5oaWRlID8gJ25vbmUnIDogJ2Jsb2NrJyB9fT5cclxuICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU9e2l0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIn1cclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgIG5vU3R5bGU9e2l0ZW0ubm9TdHlsZSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7aXRlbS5mb3JtUmVuZGVyID8gaXRlbS5mb3JtUmVuZGVyKHByb3BzKSA6IGdldE5vZGUoaXRlbS50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgIHJlZjogaXRlbVJlZixcclxuICAgICAgICAgICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVGb3JtYXQucHVzaChpdGVtLm5hbWUpXHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Q29sIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn0ga2V5PXtpbmRleH0gc3R5bGU9e3sgZGlzcGxheTogaXRlbS5oaWRlID8gJ25vbmUnIDogJ2Jsb2NrJyB9fT5cclxuICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZD17aXRlbS5yZXF1aXJlZH1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0W2l0ZW0ubmFtZV0gfHwgW119XHJcbiAgICAgICAgICAgICAgICAgIG9uTGlzdENoYW5nZT17KGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdDogeyAuLi5maWxlTGlzdCwgW2l0ZW0ubmFtZV06IGxpc3QgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0PXt7IHNob3dEb3dubG9hZEljb246IHRydWUsIHNob3dSZW1vdmVJY29uOiBsYWJlbCAhPT0gJ+afpeeciycgfX1cclxuICAgICAgICAgICAgICAgICAgcmVmPXtpdGVtUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ucHJvcHN9PlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcz8uY2hpbGRyZW4gPyBpdGVtLnByb3BzPy5jaGlsZHJlbiA6IChsYWJlbCAhPT0gJ+afpeeciycgJiYgPEJ1dHRvbj7kuIrkvKDmlofku7Y8L0J1dHRvbj4pfVxyXG4gICAgICAgICAgICAgICAgPC9VcGxvYWQ+XHJcbiAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pfVxyXG4gICAgPC9Sb3c+XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9ybXMgPSBbXSwgcHJvcHMgPSB7fSwgZm9vdGVyID0gdHJ1ZSwgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG1vZGFsUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcblxyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdXHJcbiAgICBsZXQgbmV3Rm9ybXNPYmogPSB7fSBhcyBhbnk7XHJcbiAgICBsZXQgZm9ybUdyb3VwcyA9IFtdIGFzIGFueVxyXG4gICAgbGV0IG90aGVyR3J1cHMgPSBbXSBhcyBhbnlcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKGZvcm1Hcm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3JtR3JvdXBzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGdyb3VwRm9ybXMgPSBbXSBhcyBhbnlcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBuZXdGb3Jtc09ialtpdGVtXSA9IGdyb3VwRm9ybXNcclxuICAgICAgfSlcclxuICAgICAgbmV3Rm9ybXNPYmpbJ25vR3JvdXBOYW1lJ10gPSBvdGhlckdydXBzXHJcbiAgICB9XHJcbiAgICAvL+iHquWumuS5ieaMiemSrlxyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSAnb2JqZWN0JyAmJiBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFnZVwiPlxyXG4gICAgICAgICAge2Zvcm1Hcm91cHMubGVuZ3RoID09IDAgPyB0aGlzLnByb3BzLmZvcm1UeXBlID8gdGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCkgOiA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj57dGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCl9PC9kaXY+IDogT2JqZWN0LmtleXMobmV3Rm9ybXNPYmopLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAge2tleSAhPSBcIm5vR3JvdXBOYW1lXCIgJiYgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS10aXRsZVwiPntrZXl9PC9kaXY+fVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1jb250ZW50XCI+e3RoaXMucmVuZGVyRm9ybShuZXdGb3Jtc09ialtrZXldLCBsYWJlbCl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciA9PSB0cnVlICYmXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoJ25zYy1mb3JtLXBhZ2UtZm9vdGVyJywgdGhpcy5wcm9wcy5mb290ZXJDbGFzc05hbWUpfT5cclxuICAgICAgICAgICAgICA8QnV0dG9uIHsuLi50aGlzLnByb3BzLmNhbmNlbEJ1dHRvblByb3BzfSBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNhbmNlbCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgIH19PuWPlua2iDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIiB7Li4udGhpcy5wcm9wcy5va0J1dHRvblByb3BzfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0KClcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyduc2MtZm9ybS1wYWdlLWZvb3Rlci1idG4nfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOS/neWtmFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIHtzZWxmQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXsnbnNjLWZvcm0tcGFnZS1mb290ZXItYnRuJ30ga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciAhPT0gdHJ1ZSAmJiB0aGlzLnByb3BzLmZvb3Rlcn1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IEZvcm1QYWdlO1xy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
|
|
573
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZGF5anMiLCJsb2Rhc2giLCJCdXR0b24iLCJVcGxvYWQiLCJjbHMiLCJGb3JtUGFnZSIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJzZXRTdGF0ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImNvbnZlcnRWYWx1ZSIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2hvd0Zvcm0iLCJhZnRlclJlbmRlciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJwcm9wcyIsImRlZmF1bHRWYWx1ZSIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsInNldExvYWRpbmciLCJnZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ1Iiwic3RhdGUiLCJmb3JtVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsImRhdGEiLCJfb2JqZWN0U3ByZWFkIiwiZmlsZUZvcm1hdCIsIm5ld0ZpbGVMaXN0IiwibWFwIiwiaXRlbSIsImdldEZpbGVMaXN0Iiwic3VibWl0RmxhZyIsImVycm9yIiwiZGF0ZVZhbHVlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsImlkIiwidHlwZSIsInZhbHVlcyIsImNsb25lRGVlcCIsImRhdGVGb3JtYXQiLCJzZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ2IiwibmV3VmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdE9iamVjdCIsInJlcXVlc3RDb25maWciLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJ1cmwiLCJwYXJhbXMiLCJVdGlscyIsImZ1bmMiLCJGdW5jdGlvbiIsImNvbnZlclBhcmFtcyIsImNvbnNvbGUiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm9uU3VibWl0Iiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsIm9iaiIsImZpbGVJZCIsImZpbGVOYW1lIiwic3RhdHVzIiwicHVzaCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5IiwidmFsaWQiLCJ2YWxpZGF0ZUZpZWxkcyIsInRoZW4iLCJjYXRjaCIsImVycm9ySW5mbyIsInZhbHVlQ2hhbmdlIiwiX3JlZiIsInZhbHVlT3B0aW9uIiwiZGljdE5hbWUiLCJuZXdOYW1lcyIsIm9uQ2hhbmdlIiwiZXZlbnRPcHRpb24iLCJmdW5jcyIsInJlZnMiLCJyZWZMaXN0IiwidmFsdWVTdHIiLCJzZWxmRnVuYyIsInJlbmRlckZvcm0iLCJmb3JtcyIsIm5ld1ZhbGlkIiwiY3JlYXRlRWxlbWVudCIsImd1dHRlciIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJiaW5kIiwiZGF0YVR5cGUiLCJkaXNhYmxlZCIsInJ1bGVzIiwicmVxdWlyZWQiLCJpdGVtUmVmIiwiX2l0ZW0kcHJvcHMyIiwic3BhbiIsInN0eWxlIiwiZGlzcGxheSIsIkl0ZW0iLCJjb21wb25lbnROYW1lIiwibm9TdHlsZSIsImZvcm1SZW5kZXIiLCJyZWYiLCJfaXRlbSRwcm9wczMiLCJfaXRlbSRwcm9wczQiLCJfaXRlbSRwcm9wczUiLCJfZXh0ZW5kcyIsIm9uTGlzdENoYW5nZSIsImxpc3QiLCJzaG93VXBsb2FkTGlzdCIsInNob3dEb3dubG9hZEljb24iLCJzaG93UmVtb3ZlSWNvbiIsImNoaWxkcmVuIiwicmVuZGVyIiwiZm9vdGVyIiwibW9kYWxQcm9wcyIsInRpdGxlIiwib25PayIsIm9uQ2FuY2VsIiwib2tCdXR0b25Qcm9wcyIsImNlbnRlcmVkIiwid2lkdGgiLCJkcmF3ZXJQcm9wcyIsIm9uQ2xvc2UiLCJuZXdGb3Jtc09iaiIsImZvcm1Hcm91cHMiLCJvdGhlckdydXBzIiwiZ3JvdXBOYW1lIiwiaW5kZXhPZiIsImdyb3VwRm9ybXMiLCJmb3JtIiwic2VsZkJ1dHRvbnMiLCJzaG93TW9kZWwiLCJmb3JtVHlwZSIsImxhYmVsQ29sIiwiZmxleCIsIndyYXBwZXJDb2wiLCJvblZhbHVlc0NoYW5nZSIsImNoYW5nZWRWYWx1ZXMiLCJhbGxWYWx1ZXMiLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsImNsYXNzTmFtZSIsIk9iamVjdCIsImtleXMiLCJmb290ZXJDbGFzc05hbWUiLCJjYW5jZWxCdXR0b25Qcm9wcyIsIm9uQ2xpY2siXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Zvcm1QYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBGb3JtIGZyb20gXCIuLi8uLi9iYXNlL2Zvcm1cIjtcclxuaW1wb3J0IHsgZ2V0TGVzcywgZ2V0Tm9kZSB9IGZyb20gXCIuLi8uLi91dGlsc1wiO1xyXG5pbXBvcnQgbWVzc2FnZSBmcm9tIFwiLi4vLi4vYmFzZS9tZXNzYWdlXCI7XHJcbmltcG9ydCBDb2wgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Db2xcIjtcclxuaW1wb3J0IFJvdyBmcm9tIFwiLi4vLi4vYmFzZS9ncmlkL1Jvd1wiO1xyXG5pbXBvcnQgeyBpc0VtcHR5T2JqIH0gZnJvbSBcIkBiai1uc2MvZnVuY3Rpb25zXCI7XHJcbmltcG9ydCBkYXlqcyBmcm9tIFwiZGF5anNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgbG9kYXNoIGZyb20gXCJsb2Rhc2hcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IFVwbG9hZCBmcm9tICcuLi8uLi9iYXNlL3VwbG9hZCdcclxuaW1wb3J0IGNscyBmcm9tICdjbGFzc25hbWVzJ1xyXG5pbXBvcnQgeyBJRm9ybVByb3BzIH0gZnJvbSBcInNyYy9jb21wb25lbnRzL2Jhc2UvZm9ybS9Gb3JtXCI7XHJcbmV4cG9ydCBpbnRlcmZhY2UgRm9ybVBhZ2VQcm9wcyB7XHJcbiAgZm9ybXM/OiBBcnJheTxhbnk+OyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN1Ym1pdFVybD86IHN0cmluZztcclxuICBvblN1Ym1pdD86ICh2YWx1ZT86IGFueSwgbGFiZWw/OiBhbnkpID0+IHZvaWQ7XHJcbiAgZm9vdGVyQ2xhc3NOYW1lPzogYW55O1xyXG4gIG9rQnV0dG9uUHJvcHM/OiBhbnk7XHJcbiAgY2FuY2VsQnV0dG9uUHJvcHM/OiBhbnk7XHJcbiAgZm9vdGVyPzogUmVhY3ROb2RlIHwgYm9vbGVhbjtcclxuICBjaGlsZHJlbj86IFJlYWN0LlJlYWN0Tm9kZTtcclxuICBvbkZvcm1DaGFuZ2U/OiAodmFsdWU/OiBhbnksIGFsbFZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIHN1Ym1pdFBhcmFtcz86IGFueTsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgZnVuY3M/OiBhbnk7XHJcbiAgcHJvcHM/OiBJRm9ybVByb3BzO1xyXG4gIHJlcXVlc3RPYmplY3Q/OiB7XHJcbiAgICBhZGRVcmw/OiBzdHJpbmcsXHJcbiAgICBlZGl0b3JVcmw/OiBzdHJpbmcsXHJcbiAgICBhZGRQYXJhbXM/OiBhbnksXHJcbiAgICBlZGl0b3JQYXJhbXM/OiBhbnlcclxuICB9XHJcbiAgcmVxdWVzdENvbmZpZz86IGFueVxyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5jbGFzcyBGb3JtUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8Rm9ybVBhZ2VQcm9wcywgYW55PiB7XHJcbiAgZm9ybVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgc3RhdGUgPSB7XHJcbiAgICBsb2FkaW5nOiBmYWxzZSxcclxuICAgIGxhYmVsOiBcIlwiLFxyXG4gICAgZWRpdG9yRmxhZzogdHJ1ZSxcclxuICAgIHZhbHVlOiB7fSBhcyBhbnksXHJcbiAgICBkaWN0TmFtZXM6IHt9IGFzIGFueSxcclxuICAgIGZpbGVMaXN0OiB7fSBhcyBhbnlcclxuICB9O1xyXG4gIHZhbGlkOiBhbnkgPSBbXTtcclxuICBkYXRlVmFsdWVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICBmaWxlRm9ybWF0ID0gW10gYXMgYW55O1xyXG4gIHJlZkxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgc3VibWl0RmxhZyA9IHRydWVcclxuICAvL+ihqOWNleaYvuekulxyXG4gIHNob3cob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IGxhYmVsID0gXCLmlrDlop5cIjtcclxuICAgIGlmIChvcmdWYWx1ZSAmJiBlZGl0b3JmbGFnID09IFwiZWRpdG9yXCIpIHtcclxuICAgICAgbGFiZWwgPSBcIue8lui+kVwiO1xyXG4gICAgfSBlbHNlIGlmIChvcmdWYWx1ZSAmJiAoZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiIHx8IGVkaXRvcmZsYWcgPT0gXCJzZWFyY2hcIikpIHtcclxuICAgICAgbGFiZWwgPSBcIuafpeeci1wiO1xyXG4gICAgfVxyXG4gICAgaWYgKG9yZ1ZhbHVlKSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgICAgdmFsdWU6IG9yZ1ZhbHVlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgbGV0IHZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUob3JnVmFsdWUsIGxhYmVsKTtcclxuICAgICAgICAgIC8v5aSE55CG5paH5Lu25pWw5o2uXHJcbiAgICAgICAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2hvd0Zvcm0odmFsdWUsIHtcclxuICAgICAgICAgICAgYWZ0ZXJSZW5kZXI6ICgpID0+IHtcclxuICAgICAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbGFiZWw6IGxhYmVsLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHRoaXMucHJvcHMuZGVmYXVsdFZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGhpZGUoaGlkZSA9IHRydWUpIHtcclxuICAgIGNvbnN0IHsgb25IaWRlRm9ybSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGlmIChvbkhpZGVGb3JtKSB7XHJcbiAgICAgIG9uSGlkZUZvcm0gJiYgb25IaWRlRm9ybSgpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UsIGZpbGVMaXN0OiB7fSB9KTtcclxuICAgIGhpZGUgJiYgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIGhpZGVGb3JtKCkge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uaGlkZUZvcm0oKTtcclxuICB9XHJcbiAgc2hvd0Zvcm0ob3JnVmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgdGhpcy5zaG93KG9yZ1ZhbHVlLCBlZGl0b3JmbGFnLCBjYWxsQmFjaylcclxuICB9XHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogbG9hZGluZyB9KTtcclxuICB9XHJcbiAgZ2V0Rm9ybVZhbHVlKCkge1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCBkYXRhID0geyAuLi5mb3JtVmFsdWUsIC4uLmRpY3ROYW1lcyB9O1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBuZXdGaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGlmIChmaWxlTGlzdFtpdGVtXS5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSBudWxsO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoIWZvcm1WYWx1ZVtpdGVtXSkge1xyXG4gICAgICAgICAgICBuZXdGaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3QoZmlsZUxpc3RbaXRlbV0gfHwgW10pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgLi4ubmV3RmlsZUxpc3QgfTtcclxuICAgIH1cclxuICAgIGlmICghdGhpcy5zdWJtaXRGbGFnKSB7XHJcbiAgICAgIG1lc3NhZ2UuZXJyb3IoJ+ivt+etieW+heaJgOacieaWh+S7tuS4iuS8oOWujOaIkO+8gScpXHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVWYWx1ZUZvcm1hdCkpIHtcclxuICAgICAgZm9yIChsZXQga2V5IGluIHRoaXMuZGF0ZVZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSBkYXRhW2tleV07XHJcbiAgICAgICAgaWYgKG9sZGRhdGEpIHtcclxuICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdKS5mb3JtYXQodGhpcy5kYXRlVmFsdWVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgZGF0YVtrZXldID0gZGF5anMob2xkZGF0YSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKGxhYmVsID09IFwi57yW6L6RXCIpIHtcclxuICAgICAgZGF0YSA9IHsgLi4uZGF0YSwgaWQ6IHZhbHVlPy5pZCB9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGRhdGE7XHJcbiAgfVxyXG4gIGNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgbGV0IHZhbHVlcyA9IGxvZGFzaC5jbG9uZURlZXAodmFsdWUpO1xyXG4gICAgaWYgKHRoaXMuZmlsZUZvcm1hdC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBmaWxlTGlzdCA9IHt9IGFzIGFueTtcclxuICAgICAgdGhpcy5maWxlRm9ybWF0Lm1hcCgoaXRlbSkgPT4ge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gdmFsdWVzW2l0ZW1dO1xyXG4gICAgICAgIGlmIChvbGRkYXRhICYmIEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2l0ZW1dID0gdGhpcy5nZXRGaWxlTGlzdChvbGRkYXRhIHx8IFtdLCB0eXBlKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZmlsZUxpc3RbaXRlbV0gPSBbXVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7IGZpbGVMaXN0OiBmaWxlTGlzdCB9KVxyXG4gICAgfVxyXG4gICAgLy/lpITnkIbml6XmnJ/moLzlvI/mlbDmja5cclxuICAgIGlmICghaXNFbXB0eU9iaih0aGlzLmRhdGVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVGb3JtYXQpIHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1trZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICB2YWx1ZXNba2V5XSA9IFtcclxuICAgICAgICAgICAgICBkYXlqcyhvbGRkYXRhWzBdLCB0aGlzLmRhdGVGb3JtYXRba2V5XSksXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVsxXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICBdO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBkYXlqcyhvbGRkYXRhLCB0aGlzLmRhdGVGb3JtYXRba2V5XSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdmFsdWVzXHJcbiAgfVxyXG4gIHNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSkge1xyXG4gICAgY29uc3QgbmV3VmFsdWUgPSB0aGlzLmNvbnZlcnRWYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8uc2V0RmllbGRzVmFsdWUobmV3VmFsdWUpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChmb3JtZGF0YSwgbGFiZWwpIHtcclxuICAgIGNvbnN0IHsgc3VibWl0VXJsLCBzdWJtaXRQYXJhbXMgPSB7fSwgY2FsbEJhY2ssIHJlcXVlc3RPYmplY3QgPSB7fSwgcmVxdWVzdENvbmZpZyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBhZGRVcmwsIGVkaXRvclVybCwgYWRkUGFyYW1zLCBlZGl0b3JQYXJhbXMgfSA9IHJlcXVlc3RPYmplY3RcclxuICAgIGxldCB1cmwgPSAnJztcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHt9O1xyXG4gICAgaWYgKGxhYmVsID09ICfmlrDlop4nKSB7XHJcbiAgICAgIHVybCA9IGFkZFVybCA/IGFkZFVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGFkZFBhcmFtcyAmJiB0eXBlb2YgYWRkUGFyYW1zID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oJ1V0aWxzJywgYWRkUGFyYW1zKTtcclxuICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscylcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXNcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBhZGRQYXJhbXMgPyBhZGRQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSBpZiAobGFiZWwgPT0gJ+e8lui+kScpIHtcclxuICAgICAgdXJsID0gZWRpdG9yVXJsID8gZWRpdG9yVXJsIDogc3VibWl0VXJsO1xyXG4gICAgICBpZiAoZWRpdG9yUGFyYW1zICYmIHR5cGVvZiBlZGl0b3JQYXJhbXMgPT0gJ3N0cmluZycpIHtcclxuICAgICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge31cclxuICAgICAgICBsZXQgZnVuYyA9IG5ldyBGdW5jdGlvbignVXRpbHMnLCBlZGl0b3JQYXJhbXMpO1xyXG4gICAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKVxyXG4gICAgICAgIHBhcmFtcyA9IGNvbnZlclBhcmFtc1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhcmFtcyA9IGVkaXRvclBhcmFtcyA/IGVkaXRvclBhcmFtcyA6IHN1Ym1pdFBhcmFtcztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKCF1cmwpIHtcclxuICAgICAgY29uc29sZS5lcnJvcihcIumFjee9rlVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgeyBkYXRhID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBwYXJhbXM7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudD8ub25TdWJtaXQoXHJcbiAgICAgIHVybCxcclxuICAgICAge1xyXG4gICAgICAgIGRhdGE6IHsgLi4uZm9ybWRhdGEsIC4uLmRhdGEgfSxcclxuICAgICAgICBub1VuZGVmaW5lZDogbGFiZWwgPT0gXCLnvJbovpFcIixcclxuICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAgIC4uLm90aGVyUGFyYW1zLFxyXG4gICAgICB9LFxyXG4gICAgICAocmVzOiBhbnkpID0+IHtcclxuICAgICAgICBjb25zdCB7IGNvZGUgfSA9IHJlcztcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHsgbG9hZGluZzogZmFsc2UgfSk7XHJcbiAgICAgICAgaWYgKGNvZGUgPT09IDIwMCkge1xyXG4gICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKGxhYmVsICsgXCLmiJDlip9cIik7XHJcbiAgICAgICAgICB0aGlzLmhpZGUodHJ1ZSk7XHJcbiAgICAgICAgICBjYWxsQmFjayAmJiBjYWxsQmFjaygpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmhpZGUoZmFsc2UpO1xyXG4gICAgICB9XHJcbiAgICApO1xyXG4gIH1cclxuICBnZXRGaWxlTGlzdChkYXRhLCBsYWJlbCA9ICfmlrDlop4nKSB7XHJcbiAgICB0aGlzLnN1Ym1pdEZsYWcgPSB0cnVlXHJcbiAgICBsZXQgZmlsZUxpc3QgPSBbXSBhcyBhbnk7XHJcbiAgICBpZiAoZGF0YSAmJiBkYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgZGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2JqID0ge1xyXG4gICAgICAgICAgZmlsZUlkOiBpdGVtLmZpbGVJZCxcclxuICAgICAgICAgIGZpbGVOYW1lOiBpdGVtLmZpbGVOYW1lLFxyXG4gICAgICAgIH0gYXMgYW55O1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSAn5p+l55yLJykge1xyXG4gICAgICAgICAgb2JqLnN0YXR1cyA9ICdkb25lJztcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGxhYmVsICE9PSAn5p+l55yLJyAmJiBpdGVtLnN0YXR1cyAhPT0gJ2RvbmUnKSB7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdEZsYWcgPSBmYWxzZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmlsZUxpc3QucHVzaChvYmopO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIHJldHVybiBmaWxlTGlzdDtcclxuICB9O1xyXG5cclxuICBvblN1Ym1pdCgpIHtcclxuICAgIGNvbnN0IHsgb25TdWJtaXQgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxhYmVsLCB2YWx1ZSwgZGljdE5hbWVzLCBmaWxlTGlzdCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IGZvcm1WYWx1ZSA9IHRoaXMuZm9ybVJlZi5jdXJyZW50Py5nZXRGaWVsZHNWYWx1ZSgpO1xyXG4gICAgbGV0IHZhbGlkID0gdGhpcy52YWxpZDtcclxuICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50XHJcbiAgICAgID8udmFsaWRhdGVGaWVsZHModmFsaWQpXHJcbiAgICAgIC50aGVuKCgpID0+IHtcclxuICAgICAgICBsZXQgZGF0YSA9IHRoaXMuZ2V0Rm9ybVZhbHVlKClcclxuICAgICAgICAvLyBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICAgIC8vICAgbWVzc2FnZS5lcnJvcign6K+3562J5b6F5omA5pyJ5paH5Lu25LiK5Lyg5a6M5oiQ77yBJylcclxuICAgICAgICAvLyAgIHJldHVybjtcclxuICAgICAgICAvLyB9XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IHRydWUgfSk7XHJcbiAgICAgICAgaWYgKG9uU3VibWl0KSB7XHJcbiAgICAgICAgICBvblN1Ym1pdCAmJiBvblN1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuZG9TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICB9KVxyXG4gICAgICAuY2F0Y2goKGVycm9ySW5mbzogYW55KSA9PiB7IH0pO1xyXG4gIH1cclxuICB2YWx1ZUNoYW5nZSh7IHR5cGUsIGRpY3ROYW1lIH0sIHByb3BzLCB2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpIHtcclxuICAgIGlmICh2YWx1ZU9wdGlvbikge1xyXG4gICAgICBpZiAoZGljdE5hbWUpIHtcclxuICAgICAgICBjb25zdCB7IGRpY3ROYW1lcyB9ID0gdGhpcy5zdGF0ZTtcclxuICAgICAgICBjb25zdCBuZXdOYW1lcyA9IHsgLi4uZGljdE5hbWVzIH0gYXMgYW55O1xyXG4gICAgICAgIG5ld05hbWVzW2RpY3ROYW1lXSA9IHZhbHVlT3B0aW9uLmxhYmVsO1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgZGljdE5hbWVzOiBuZXdOYW1lcyxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHByb3BzLm9uQ2hhbmdlKSB7XHJcbiAgICAgIGlmICh0eXBlb2YgcHJvcHMub25DaGFuZ2UgPT0gJ2Z1bmN0aW9uJykge1xyXG4gICAgICAgIHByb3BzLm9uQ2hhbmdlKHZhbHVlLCB2YWx1ZU9wdGlvbiwgZGF0YSk7XHJcbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHByb3BzLm9uQ2hhbmdlID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7IHZhbHVlLCBkYXRhLCBmb3JtUmVmOiB0aGlzLmZvcm1SZWYsIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzIHx8IHt9LCByZWZzOiB0aGlzLnJlZkxpc3QgfSBhcyBhbnk7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9XHJcbiAgICAgICAgaWYgKHR5cGUgPT0gJ1NlbGVjdCcpIHtcclxuICAgICAgICAgIGV2ZW50T3B0aW9uLnZhbHVlT3B0aW9uID0gdmFsdWVPcHRpb247XHJcbiAgICAgICAgICBldmVudE9wdGlvbi5kYXRhID0gZGF0YVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZSA9PSAnRGF0ZVBpY2tlcicgfHwgdHlwZSA9PSAnUmFuZ2VQaWNrZXInKSB7XHJcbiAgICAgICAgICBldmVudE9wdGlvbi52YWx1ZVN0ciA9IHZhbHVlT3B0aW9uO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBzZWxmRnVuYyA9IG5ldyBGdW5jdGlvbignZXZlbnRPcHRpb24nLCAnVXRpbHMnLCBwcm9wcy5vbkNoYW5nZSk7XHJcbiAgICAgICAgc2VsZkZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyRm9ybShmb3JtcywgbGFiZWwpIHtcclxuICAgIGNvbnN0IG5ld1ZhbGlkOiBhbnlbXSA9IFtdO1xyXG4gICAgcmV0dXJuIDxSb3cgZ3V0dGVyPXsyNH0+XHJcbiAgICAgIHtmb3Jtcy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgIGNvbnN0IGl0ZW1Qcm9wcyA9IGl0ZW0ucHJvcHMgfHwge307XHJcbiAgICAgICAgaWYgKGl0ZW1Qcm9wcy5mb3JtYXQgfHwgaXRlbVByb3BzLnZhbHVlRm9ybWF0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVWYWx1ZUZvcm1hdFtpdGVtLm5hbWVdID1cclxuICAgICAgICAgICAgaXRlbVByb3BzLmZvcm1hdCB8fCBpdGVtUHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0KSB7XHJcbiAgICAgICAgICB0aGlzLmRhdGVGb3JtYXRbaXRlbS5uYW1lXSA9IGl0ZW1Qcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBhbGxvd0NoYXJzID0gaXRlbS5wcm9wcz8uYWxsb3dDaGFycyB8fCBmYWxzZTtcclxuICAgICAgICBsZXQgcHJvcHMgPSB7XHJcbiAgICAgICAgICBwbGFjZWhvbGRlcjogYOivt+i+k+WFpSR7aXRlbS5sYWJlbH1gLFxyXG4gICAgICAgICAgLi4uaXRlbS5wcm9wcyxcclxuICAgICAgICAgIG9uQ2hhbmdlOiB0aGlzLnZhbHVlQ2hhbmdlLmJpbmQoXHJcbiAgICAgICAgICAgIHRoaXMsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiBpdGVtLnR5cGUsXHJcbiAgICAgICAgICAgICAgZGljdE5hbWU6IGl0ZW0uZGljdE5hbWUsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHsgLi4uaXRlbS5wcm9wcyB9XHJcbiAgICAgICAgICApLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgaWYgKCFpdGVtLnR5cGUgfHwgaXRlbS50eXBlID09IFwiSW5wdXRcIikge1xyXG4gICAgICAgICAgcHJvcHMuYWxsb3dDaGFycyA9IHRydWU7ICAvL2Zvcm0uaXRlbSDkvb/nlKhpbnB1dOe7hOS7tmFsbG93Q2hhcnPlv4Xpobvpu5jorqR0cnVlLOS4jeeEtui+k+WFpeeJueauiuWtl+espuaLv+WIsOeahOWAvOS4jeWvuVxyXG4gICAgICAgIH1cclxuICAgICAgICBkZWxldGUgcHJvcHMudmFsdWVGb3JtYXQ7XHJcbiAgICAgICAgZGVsZXRlIHByb3BzLmZvcm1hdDtcclxuICAgICAgICBkZWxldGUgcHJvcHMuZGF0YVR5cGU7XHJcbiAgICAgICAgaWYgKGxhYmVsID09IFwi5p+l55yLXCIpIHtcclxuICAgICAgICAgIHByb3BzLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgICAgIHByb3BzLnBsYWNlaG9sZGVyID0gJydcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKChpdGVtLnJ1bGVzICYmIGl0ZW0ucnVsZXMubGVuZ3RoID4gMCkgfHwgaXRlbS5yZXF1aXJlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgbmV3VmFsaWQucHVzaChpdGVtLm5hbWUpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaW5kZXggKyAxID09PSBmb3Jtcy5sZW5ndGgpIHtcclxuICAgICAgICAgIHRoaXMudmFsaWQgPSBuZXdWYWxpZDtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgaXRlbVJlZjogYW55ID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKVxyXG4gICAgICAgIHRoaXMucmVmTGlzdFtpdGVtLm5hbWVdID0gaXRlbVJlZlxyXG4gICAgICAgIGlmIChpdGVtLnR5cGUgIT09ICdVcGxvYWQnKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Q29sIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn0ga2V5PXtpbmRleH0gc3R5bGU9e3sgZGlzcGxheTogaXRlbS5oaWRlID8gJ25vbmUnIDogJ2Jsb2NrJyB9fT5cclxuICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgIGNvbXBvbmVudE5hbWU9e2l0ZW0udHlwZSA/IGl0ZW0udHlwZSA6IFwiSW5wdXRcIn1cclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgIG5vU3R5bGU9e2l0ZW0ubm9TdHlsZSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7aXRlbS5mb3JtUmVuZGVyID8gaXRlbS5mb3JtUmVuZGVyKHByb3BzKSA6IGdldE5vZGUoaXRlbS50eXBlLCB7XHJcbiAgICAgICAgICAgICAgICAgIHJlZjogaXRlbVJlZixcclxuICAgICAgICAgICAgICAgICAgLi4ucHJvcHMsXHJcbiAgICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICA8L0Zvcm0uSXRlbT5cclxuICAgICAgICAgICAgPC9Db2w+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLmZpbGVGb3JtYXQucHVzaChpdGVtLm5hbWUpXHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8Q29sIHNwYW49e2l0ZW0uc3BhbiB8fCAxMn0ga2V5PXtpbmRleH0gc3R5bGU9e3sgZGlzcGxheTogaXRlbS5oaWRlID8gJ25vbmUnIDogJ2Jsb2NrJyB9fT5cclxuICAgICAgICAgICAgICA8Rm9ybS5JdGVtXHJcbiAgICAgICAgICAgICAgICBsYWJlbD17aXRlbS5sYWJlbH1cclxuICAgICAgICAgICAgICAgIG5hbWU9e2l0ZW0ubmFtZX1cclxuICAgICAgICAgICAgICAgIHJ1bGVzPXtpdGVtLnJ1bGVzfVxyXG4gICAgICAgICAgICAgICAgYWxsb3dDaGFycz17YWxsb3dDaGFyc31cclxuICAgICAgICAgICAgICAgIHR5cGU9e2l0ZW0ucHJvcHM/LnR5cGV9XHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZD17aXRlbS5yZXF1aXJlZH1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8VXBsb2FkXHJcbiAgICAgICAgICAgICAgICAgIGZpbGVMaXN0PXt0aGlzLnN0YXRlLmZpbGVMaXN0W2l0ZW0ubmFtZV0gfHwgW119XHJcbiAgICAgICAgICAgICAgICAgIG9uTGlzdENoYW5nZT17KGxpc3QpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCB7IGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxlTGlzdDogeyAuLi5maWxlTGlzdCwgW2l0ZW0ubmFtZV06IGxpc3QgfVxyXG4gICAgICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dVcGxvYWRMaXN0PXt7IHNob3dEb3dubG9hZEljb246IHRydWUsIHNob3dSZW1vdmVJY29uOiBsYWJlbCAhPT0gJ+afpeeciycgfX1cclxuICAgICAgICAgICAgICAgICAgcmVmPXtpdGVtUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ucHJvcHN9PlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbS5wcm9wcz8uY2hpbGRyZW4gPyBpdGVtLnByb3BzPy5jaGlsZHJlbiA6IChsYWJlbCAhPT0gJ+afpeeciycgJiYgPEJ1dHRvbj7kuIrkvKDmlofku7Y8L0J1dHRvbj4pfVxyXG4gICAgICAgICAgICAgICAgPC9VcGxvYWQ+XHJcbiAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pfVxyXG4gICAgPC9Sb3c+XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9ybXMgPSBbXSwgcHJvcHMgPSB7fSwgZm9vdGVyID0gdHJ1ZSwgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG1vZGFsUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcblxyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdXHJcbiAgICBsZXQgbmV3Rm9ybXNPYmogPSB7fSBhcyBhbnk7XHJcbiAgICBsZXQgZm9ybUdyb3VwcyA9IFtdIGFzIGFueVxyXG4gICAgbGV0IG90aGVyR3J1cHMgPSBbXSBhcyBhbnlcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKGZvcm1Hcm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3JtR3JvdXBzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGdyb3VwRm9ybXMgPSBbXSBhcyBhbnlcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBuZXdGb3Jtc09ialtpdGVtXSA9IGdyb3VwRm9ybXNcclxuICAgICAgfSlcclxuICAgICAgbmV3Rm9ybXNPYmpbJ25vR3JvdXBOYW1lJ10gPSBvdGhlckdydXBzXHJcbiAgICB9XHJcbiAgICAvL+iHquWumuS5ieaMiemSrlxyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSAnb2JqZWN0JyAmJiBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFnZVwiPlxyXG4gICAgICAgICAge2Zvcm1Hcm91cHMubGVuZ3RoID09IDAgPyB0aGlzLnByb3BzLmZvcm1UeXBlID8gdGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCkgOiA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj57dGhpcy5yZW5kZXJGb3JtKGZvcm1zLCBsYWJlbCl9PC9kaXY+IDogT2JqZWN0LmtleXMobmV3Rm9ybXNPYmopLm1hcCgoa2V5KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBrZXk9e2tleX0gY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFuZVwiPlxyXG4gICAgICAgICAgICAgICAge2tleSAhPSBcIm5vR3JvdXBOYW1lXCIgJiYgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS10aXRsZVwiPntrZXl9PC9kaXY+fVxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJuc2MtZm9ybS1jb250ZW50XCI+e3RoaXMucmVuZGVyRm9ybShuZXdGb3Jtc09ialtrZXldLCBsYWJlbCl9PC9kaXY+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIClcclxuICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciA9PSB0cnVlICYmXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoJ25zYy1mb3JtLXBhZ2UtZm9vdGVyJywgdGhpcy5wcm9wcy5mb290ZXJDbGFzc05hbWUpfT5cclxuICAgICAgICAgICAgICA8QnV0dG9uIHsuLi50aGlzLnByb3BzLmNhbmNlbEJ1dHRvblByb3BzfSBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vbkNhbmNlbCkge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FuY2VsKCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVyblxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICAgIH19PuWPlua2iDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIiB7Li4udGhpcy5wcm9wcy5va0J1dHRvblByb3BzfVxyXG4gICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLm9uU3VibWl0KClcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nPXt0aGlzLnN0YXRlLmxvYWRpbmd9XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyduc2MtZm9ybS1wYWdlLWZvb3Rlci1idG4nfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIOS/neWtmFxyXG4gICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgIHtzZWxmQnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPXsnbnNjLWZvcm0tcGFnZS1mb290ZXItYnRuJ30ga2V5PXtpbmRleH0+e2l0ZW19PC9kaXY+XHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgeyF0aGlzLnByb3BzLmZvcm1UeXBlICYmIGZvb3RlciAhPT0gdHJ1ZSAmJiB0aGlzLnByb3BzLmZvb3Rlcn1cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9Gb3JtPlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","dayjs","lodash","Button","Upload","cls","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","editorFlag","value","dictNames","fileList","show","orgValue","editorflag","length","undefined","callBack","setState","_this$formRef$current","convertValue","formRef","current","showForm","afterRender","_this$formRef$current2","props","defaultValue","hide","_this$formRef$current3","onHideForm","hideForm","_this$formRef$current4","setLoading","getFormValue","_this$formRef$current5","state","formValue","getFieldsValue","data","_objectSpread","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","id","type","values","cloneDeep","dateFormat","setFormValue","_this$formRef$current6","newValue","setFieldsValue","doSubmit","formdata","_this$formRef$current7","submitUrl","submitParams","requestObject","requestConfig","addUrl","editorUrl","addParams","editorParams","url","params","Utils","func","Function","converParams","console","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","res","code","success","obj","fileId","fileName","status","push","_this$formRef$current8","_this$formRef$current9","valid","validateFields","then","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","eventOption","funcs","refs","refList","valueStr","selfFunc","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","allowChars","placeholder","concat","bind","dataType","disabled","rules","required","itemRef","_item$props2","span","style","display","Item","componentName","noStyle","formRender","ref","_item$props3","_item$props4","_item$props5","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","children","render","footer","modalProps","title","onOk","onCancel","okButtonProps","centered","width","drawerProps","onClose","newFormsObj","formGroups","otherGrups","groupName","indexOf","groupForms","form","selfButtons","showModel","formType","labelCol","flex","wrapperCol","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from '../../base/upload'\r\nimport cls from 'classnames'\r\nimport { IFormProps } from \"src/components/base/form/Form\";\r\nexport interface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any, allValue?: any) => void;\r\n submitParams?: any; //添加参数,默认mothod:post, 参数通过data传递\r\n funcs?: any;\r\n props?: IFormProps;\r\n requestObject?: {\r\n addUrl?: string,\r\n editorUrl?: string,\r\n addParams?: any,\r\n editorParams?: any\r\n }\r\n requestConfig?: any\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n refList = {} as any;\r\n submitFlag = true\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && (editorflag == \"detail\" || editorflag == \"search\")) {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue, label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value, {\r\n afterRender: () => {\r\n callBack && callBack()\r\n }\r\n });\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue, {\r\n afterRender: () => {\r\n callBack && callBack()\r\n }\r\n });\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n showForm(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n this.show(orgValue, editorflag, callBack)\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = { ...formValue, ...dictNames };\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n if (fileList[item].length == 0) {\r\n newFileList[item] = null;\r\n } else {\r\n if (!formValue[item]) {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n }\r\n }\r\n })\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error('请等待所有文件上传完成!')\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n dayjs(olddata[0]).format(this.dateValueFormat[key]),\r\n dayjs(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n } else {\r\n data[key] = dayjs(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id };\r\n }\r\n return data;\r\n }\r\n convertValue(value, type) {\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n let olddata = values[item];\r\n if (olddata && Array.isArray(olddata)) {\r\n fileList[item] = this.getFileList(olddata || [], type);\r\n } else {\r\n fileList[item] = []\r\n }\r\n })\r\n this.setState({ fileList: fileList })\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = values[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n values[key] = [\r\n dayjs(olddata[0], this.dateFormat[key]),\r\n dayjs(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n values[key] = dayjs(olddata, this.dateFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n return values\r\n }\r\n setFormValue(value, type) {\r\n const newValue = this.convertValue(value, type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const { submitUrl, submitParams = {}, callBack, requestObject = {}, requestConfig = {} } = this.props;\r\n const { addUrl, editorUrl, addParams, editorParams } = requestObject\r\n let url = '';\r\n let params: any = {};\r\n if (label == '新增') {\r\n url = addUrl ? addUrl : submitUrl;\r\n if (addParams && typeof addParams == 'string') {\r\n const Utils = this.props.Utils || {}\r\n let func = new Function('Utils', addParams);\r\n let converParams = func(Utils)\r\n params = converParams\r\n } else {\r\n params = addParams ? addParams : submitParams;\r\n }\r\n } else if (label == '编辑') {\r\n url = editorUrl ? editorUrl : submitUrl;\r\n if (editorParams && typeof editorParams == 'string') {\r\n const Utils = this.props.Utils || {}\r\n let func = new Function('Utils', editorParams);\r\n let converParams = func(Utils)\r\n params = converParams\r\n } else {\r\n params = editorParams ? editorParams : submitParams;\r\n }\r\n }\r\n if (!url) {\r\n console.error(\"配置Url不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = params;\r\n this.formRef.current?.onSubmit(\r\n url,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...requestConfig,\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n this.hide(true);\r\n callBack && callBack();\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n getFileList(data, label = '新增') {\r\n this.submitFlag = true\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == '查看') {\r\n obj.status = 'done';\r\n }\r\n if (label !== '查看' && item.status !== 'done') {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n };\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields(valid)\r\n .then(() => {\r\n let data = this.getFormValue()\r\n if (!this.submitFlag) {\r\n message.error('请等待所有文件上传完成!')\r\n return;\r\n }\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => { });\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n if (typeof props.onChange == 'function') {\r\n props.onChange(value, valueOption, data);\r\n } else if (typeof props.onChange == 'string') {\r\n const eventOption = { value, data, formRef: this.formRef, funcs: this.props.funcs || {}, refs: this.refList } as any;\r\n const Utils = this.props.Utils || {}\r\n if (type == 'Select') {\r\n eventOption.valueOption = valueOption;\r\n eventOption.data = data\r\n } else if (type == 'DatePicker' || type == 'RangePicker') {\r\n eventOption.valueStr = valueOption;\r\n }\r\n const selfFunc = new Function('eventOption', 'Utils', props.onChange);\r\n selfFunc(eventOption, Utils);\r\n }\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true; //form.item 使用input组件allowChars必须默认true,不然输入特殊字符拿到的值不对\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n delete props.dataType;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n props.placeholder = ''\r\n }\r\n if ((item.rules && item.rules.length > 0) || item.required === true) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n const itemRef: any = React.createRef<any>()\r\n this.refList[item.name] = itemRef\r\n if (item.type !== 'Upload') {\r\n return (\r\n <Col span={item.span || 12} key={index} style={{ display: item.hide ? 'none' : 'block' }}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n required={item.required}\r\n type={item.props?.type}\r\n noStyle={item.noStyle || false}\r\n >\r\n {item.formRender ? item.formRender(props) : getNode(item.type, {\r\n ref: itemRef,\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name)\r\n return (\r\n <Col span={item.span || 12} key={index} style={{ display: item.hide ? 'none' : 'block' }}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n type={item.props?.type}\r\n required={item.required}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list }\r\n })\r\n }}\r\n showUploadList={{ showDownloadIcon: true, showRemoveIcon: label !== '查看' }}\r\n ref={itemRef}\r\n {...props}>\r\n {item.props?.children ? item.props?.children : (label !== '查看' && <Button>上传文件</Button>)}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n }\r\n render() {\r\n const { forms = [], props = {}, footer = true, children } = this.props;\r\n const { loading, label } = this.state;\r\n let modalProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n } as any;\r\n\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = []\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any\r\n let otherGrups = [] as any\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item)\r\n }\r\n })\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form)\r\n }\r\n })\r\n newFormsObj[item] = groupForms\r\n })\r\n newFormsObj['noGroupName'] = otherGrups\r\n }\r\n //自定义按钮\r\n let selfButtons = [] as any;\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n typeof item == 'object' && selfButtons.push(item);\r\n });\r\n } else if (children) {\r\n typeof children == 'object' && selfButtons.push(children);\r\n }\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n labelCol={{ flex: \"100px\" }}\r\n wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...props}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? this.props.formType ? this.renderForm(forms, label) : <div className=\"nsc-form-pane\">{this.renderForm(forms, label)}</div> : Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && <div className=\"nsc-form-title\">{key}</div>}\r\n <div className=\"nsc-form-content\">{this.renderForm(newFormsObj[key], label)}</div>\r\n </div>\r\n )\r\n })}\r\n {!this.props.formType && footer == true &&\r\n <div className={cls('nsc-form-page-footer', this.props.footerClassName)}>\r\n <Button {...this.props.cancelButtonProps} onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return\r\n }\r\n this.setState({ loading: false });\r\n }}>取消</Button>\r\n <Button type=\"primary\" {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit()\r\n }}\r\n loading={this.state.loading}\r\n className={'nsc-form-page-footer-btn'}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return <div className={'nsc-form-page-footer-btn'} key={index}>{item}</div>\r\n })\r\n }\r\n </div>\r\n }\r\n {!this.props.formType && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PureComponent","Form","getNode","message","Col","Row","isEmptyObj","dayjs","lodash","Button","Upload","cls","FormPage","constructor","arguments","_defineProperty","createRef","loading","label","editorFlag","value","dictNames","fileList","show","orgValue","editorflag","length","undefined","callBack","setState","_this$formRef$current","convertValue","formRef","current","showForm","afterRender","_this$formRef$current2","props","defaultValue","hide","_this$formRef$current3","onHideForm","hideForm","_this$formRef$current4","setLoading","getFormValue","_this$formRef$current5","state","formValue","getFieldsValue","data","_objectSpread","fileFormat","newFileList","map","item","getFileList","submitFlag","error","dateValueFormat","key","olddata","Array","isArray","format","id","type","values","cloneDeep","dateFormat","setFormValue","_this$formRef$current6","newValue","setFieldsValue","doSubmit","formdata","_this$formRef$current7","submitUrl","submitParams","requestObject","requestConfig","addUrl","editorUrl","addParams","editorParams","url","params","Utils","func","Function","converParams","console","otherParams","_objectWithoutProperties","_excluded","onSubmit","noUndefined","res","code","success","obj","fileId","fileName","status","push","_this$formRef$current8","_this$formRef$current9","valid","validateFields","then","catch","errorInfo","valueChange","_ref","valueOption","dictName","newNames","onChange","eventOption","funcs","refs","refList","valueStr","selfFunc","renderForm","forms","newValid","createElement","gutter","index","_item$props","itemProps","valueFormat","name","allowChars","placeholder","concat","bind","dataType","disabled","rules","required","itemRef","_item$props2","span","style","display","Item","componentName","noStyle","formRender","ref","_item$props3","_item$props4","_item$props5","_extends","onListChange","list","showUploadList","showDownloadIcon","showRemoveIcon","children","render","footer","modalProps","title","onOk","onCancel","okButtonProps","centered","width","drawerProps","onClose","newFormsObj","formGroups","otherGrups","groupName","indexOf","groupForms","form","selfButtons","showModel","formType","labelCol","flex","wrapperCol","onValuesChange","changedValues","allValues","onFormChange","changeValid","className","Object","keys","footerClassName","cancelButtonProps","onClick"],"sources":["../../../src/components/page/FormPage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Form from \"../../base/form\";\r\nimport { getLess, getNode } from \"../../utils\";\r\nimport message from \"../../base/message\";\r\nimport Col from \"../../base/grid/Col\";\r\nimport Row from \"../../base/grid/Row\";\r\nimport { isEmptyObj } from \"@bj-nsc/functions\";\r\nimport dayjs from \"dayjs\";\r\nimport \"./index.module.less\";\r\nimport lodash from \"lodash\";\r\nimport Button from \"../../base/button\";\r\nimport Upload from '../../base/upload'\r\nimport cls from 'classnames'\r\nimport { IFormProps } from \"src/components/base/form/Form\";\r\nexport interface FormPageProps {\r\n forms?: Array<any>; //是否显示操作列\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n footerClassName?: any;\r\n okButtonProps?: any;\r\n cancelButtonProps?: any;\r\n footer?: ReactNode | boolean;\r\n children?: React.ReactNode;\r\n onFormChange?: (value?: any, allValue?: any) => void;\r\n submitParams?: any; //添加参数,默认mothod:post, 参数通过data传递\r\n funcs?: any;\r\n props?: IFormProps;\r\n requestObject?: {\r\n addUrl?: string,\r\n editorUrl?: string,\r\n addParams?: any,\r\n editorParams?: any\r\n }\r\n requestConfig?: any\r\n [propsName: string]: any;\r\n}\r\nclass FormPage extends PureComponent<FormPageProps, any> {\r\n formRef = React.createRef<any>();\r\n state = {\r\n loading: false,\r\n label: \"\",\r\n editorFlag: true,\r\n value: {} as any,\r\n dictNames: {} as any,\r\n fileList: {} as any\r\n };\r\n valid: any = [];\r\n dateValueFormat = {} as any;\r\n dateFormat = {} as any;\r\n fileFormat = [] as any;\r\n refList = {} as any;\r\n submitFlag = true\r\n //表单显示\r\n show(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n let label = \"新增\";\r\n if (orgValue && editorflag == \"editor\") {\r\n label = \"编辑\";\r\n } else if (orgValue && (editorflag == \"detail\" || editorflag == \"search\")) {\r\n label = \"查看\";\r\n }\r\n if (orgValue) {\r\n this.setState(\r\n {\r\n label: label,\r\n value: orgValue,\r\n },\r\n () => {\r\n let value = this.convertValue(orgValue, label);\r\n //处理文件数据\r\n this.formRef.current?.showForm(value, {\r\n afterRender: () => {\r\n callBack && callBack()\r\n }\r\n });\r\n }\r\n );\r\n } else {\r\n this.setState(\r\n {\r\n label: label,\r\n },\r\n () => {\r\n this.formRef.current?.showForm(this.props.defaultValue, {\r\n afterRender: () => {\r\n callBack && callBack()\r\n }\r\n });\r\n }\r\n );\r\n }\r\n }\r\n hide(hide = true) {\r\n const { onHideForm } = this.props;\r\n if (onHideForm) {\r\n onHideForm && onHideForm();\r\n return;\r\n }\r\n this.setState({ loading: false, fileList: {} });\r\n hide && this.formRef.current?.hideForm();\r\n }\r\n hideForm() {\r\n this.setState({ loading: false, fileList: {} });\r\n this.formRef.current?.hideForm();\r\n }\r\n showForm(orgValue?: any, editorflag = \"add\", callBack?: any) {\r\n this.show(orgValue, editorflag, callBack)\r\n }\r\n setLoading(loading: boolean) {\r\n this.setState({ loading: loading });\r\n }\r\n getFormValue() {\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let data = { ...formValue, ...dictNames };\r\n if (this.fileFormat.length > 0) {\r\n let newFileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n if (fileList[item].length == 0) {\r\n newFileList[item] = null;\r\n } else {\r\n if (!formValue[item]) {\r\n newFileList[item] = this.getFileList(fileList[item] || []);\r\n }\r\n }\r\n })\r\n data = { ...data, ...newFileList };\r\n }\r\n if (!this.submitFlag) {\r\n message.error('请等待所有文件上传完成!')\r\n return;\r\n }\r\n if (!isEmptyObj(this.dateValueFormat)) {\r\n for (let key in this.dateValueFormat) {\r\n let olddata = data[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n data[key] = [\r\n dayjs(olddata[0]).format(this.dateValueFormat[key]),\r\n dayjs(olddata[1]).format(this.dateValueFormat[key]),\r\n ];\r\n } else {\r\n data[key] = dayjs(olddata).format(this.dateValueFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n if (label == \"编辑\") {\r\n data = { ...data, id: value?.id };\r\n }\r\n return data;\r\n }\r\n convertValue(value, type) {\r\n let values = lodash.cloneDeep(value);\r\n if (this.fileFormat.length > 0) {\r\n let fileList = {} as any;\r\n this.fileFormat.map((item) => {\r\n let olddata = values[item];\r\n if (olddata && Array.isArray(olddata)) {\r\n fileList[item] = this.getFileList(olddata || [], type);\r\n } else {\r\n fileList[item] = []\r\n }\r\n })\r\n this.setState({ fileList: fileList })\r\n }\r\n //处理日期格式数据\r\n if (!isEmptyObj(this.dateFormat)) {\r\n for (let key in this.dateFormat) {\r\n let olddata = values[key];\r\n if (olddata) {\r\n if (Array.isArray(olddata)) {\r\n values[key] = [\r\n dayjs(olddata[0], this.dateFormat[key]),\r\n dayjs(olddata[1], this.dateFormat[key]),\r\n ];\r\n } else {\r\n values[key] = dayjs(olddata, this.dateFormat[key]);\r\n }\r\n }\r\n }\r\n }\r\n return values\r\n }\r\n setFormValue(value, type) {\r\n const newValue = this.convertValue(value, type);\r\n this.formRef.current?.setFieldsValue(newValue);\r\n }\r\n doSubmit(formdata, label) {\r\n const { submitUrl, submitParams = {}, callBack, requestObject = {}, requestConfig = {} } = this.props;\r\n const { addUrl, editorUrl, addParams, editorParams } = requestObject\r\n let url = '';\r\n let params: any = {};\r\n if (label == '新增') {\r\n url = addUrl ? addUrl : submitUrl;\r\n if (addParams && typeof addParams == 'string') {\r\n const Utils = this.props.Utils || {}\r\n let func = new Function('Utils', addParams);\r\n let converParams = func(Utils)\r\n params = converParams\r\n } else {\r\n params = addParams ? addParams : submitParams;\r\n }\r\n } else if (label == '编辑') {\r\n url = editorUrl ? editorUrl : submitUrl;\r\n if (editorParams && typeof editorParams == 'string') {\r\n const Utils = this.props.Utils || {}\r\n let func = new Function('Utils', editorParams);\r\n let converParams = func(Utils)\r\n params = converParams\r\n } else {\r\n params = editorParams ? editorParams : submitParams;\r\n }\r\n }\r\n if (!url) {\r\n console.error(\"配置Url不能为空!\");\r\n return;\r\n }\r\n const { data = {}, ...otherParams } = params;\r\n this.formRef.current?.onSubmit(\r\n url,\r\n {\r\n data: { ...formdata, ...data },\r\n noUndefined: label == \"编辑\",\r\n ...requestConfig,\r\n ...otherParams,\r\n },\r\n (res: any) => {\r\n const { code } = res;\r\n this.setState({ loading: false });\r\n if (code === 200) {\r\n message.success(label + \"成功\");\r\n this.hide(true);\r\n callBack && callBack();\r\n return;\r\n }\r\n this.hide(false);\r\n }\r\n );\r\n }\r\n getFileList(data, label = '新增') {\r\n this.submitFlag = true\r\n let fileList = [] as any;\r\n if (data && data.length > 0) {\r\n data.map((item) => {\r\n let obj = {\r\n fileId: item.fileId,\r\n fileName: item.fileName,\r\n } as any;\r\n if (label == '查看') {\r\n obj.status = 'done';\r\n }\r\n if (label !== '查看' && item.status !== 'done') {\r\n this.submitFlag = false;\r\n }\r\n fileList.push(obj);\r\n });\r\n }\r\n return fileList;\r\n };\r\n\r\n onSubmit() {\r\n const { onSubmit } = this.props;\r\n const { label, value, dictNames, fileList } = this.state;\r\n const formValue = this.formRef.current?.getFieldsValue();\r\n let valid = this.valid;\r\n this.formRef.current\r\n ?.validateFields(valid)\r\n .then(() => {\r\n let data = this.getFormValue()\r\n // if (!this.submitFlag) {\r\n // message.error('请等待所有文件上传完成!')\r\n // return;\r\n // }\r\n this.setState({ loading: true });\r\n if (onSubmit) {\r\n onSubmit && onSubmit(data, label);\r\n return;\r\n }\r\n this.doSubmit(data, label);\r\n })\r\n .catch((errorInfo: any) => { });\r\n }\r\n valueChange({ type, dictName }, props, value, valueOption, data) {\r\n if (valueOption) {\r\n if (dictName) {\r\n const { dictNames } = this.state;\r\n const newNames = { ...dictNames } as any;\r\n newNames[dictName] = valueOption.label;\r\n this.setState({\r\n dictNames: newNames,\r\n });\r\n }\r\n }\r\n if (props.onChange) {\r\n if (typeof props.onChange == 'function') {\r\n props.onChange(value, valueOption, data);\r\n } else if (typeof props.onChange == 'string') {\r\n const eventOption = { value, data, formRef: this.formRef, funcs: this.props.funcs || {}, refs: this.refList } as any;\r\n const Utils = this.props.Utils || {}\r\n if (type == 'Select') {\r\n eventOption.valueOption = valueOption;\r\n eventOption.data = data\r\n } else if (type == 'DatePicker' || type == 'RangePicker') {\r\n eventOption.valueStr = valueOption;\r\n }\r\n const selfFunc = new Function('eventOption', 'Utils', props.onChange);\r\n selfFunc(eventOption, Utils);\r\n }\r\n }\r\n }\r\n\r\n renderForm(forms, label) {\r\n const newValid: any[] = [];\r\n return <Row gutter={24}>\r\n {forms.map((item: any, index: number) => {\r\n const itemProps = item.props || {};\r\n if (itemProps.format || itemProps.valueFormat) {\r\n this.dateValueFormat[item.name] =\r\n itemProps.format || itemProps.valueFormat;\r\n }\r\n if (itemProps.format) {\r\n this.dateFormat[item.name] = itemProps.format;\r\n }\r\n let allowChars = item.props?.allowChars || false;\r\n let props = {\r\n placeholder: `请输入${item.label}`,\r\n ...item.props,\r\n onChange: this.valueChange.bind(\r\n this,\r\n {\r\n type: item.type,\r\n dictName: item.dictName,\r\n },\r\n { ...item.props }\r\n ),\r\n };\r\n if (!item.type || item.type == \"Input\") {\r\n props.allowChars = true; //form.item 使用input组件allowChars必须默认true,不然输入特殊字符拿到的值不对\r\n }\r\n delete props.valueFormat;\r\n delete props.format;\r\n delete props.dataType;\r\n if (label == \"查看\") {\r\n props.disabled = true;\r\n props.placeholder = ''\r\n }\r\n if ((item.rules && item.rules.length > 0) || item.required === true) {\r\n newValid.push(item.name);\r\n }\r\n if (index + 1 === forms.length) {\r\n this.valid = newValid;\r\n }\r\n const itemRef: any = React.createRef<any>()\r\n this.refList[item.name] = itemRef\r\n if (item.type !== 'Upload') {\r\n return (\r\n <Col span={item.span || 12} key={index} style={{ display: item.hide ? 'none' : 'block' }}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n componentName={item.type ? item.type : \"Input\"}\r\n required={item.required}\r\n type={item.props?.type}\r\n noStyle={item.noStyle || false}\r\n >\r\n {item.formRender ? item.formRender(props) : getNode(item.type, {\r\n ref: itemRef,\r\n ...props,\r\n })}\r\n </Form.Item>\r\n </Col>\r\n );\r\n } else {\r\n this.fileFormat.push(item.name)\r\n return (\r\n <Col span={item.span || 12} key={index} style={{ display: item.hide ? 'none' : 'block' }}>\r\n <Form.Item\r\n label={item.label}\r\n name={item.name}\r\n rules={item.rules}\r\n allowChars={allowChars}\r\n type={item.props?.type}\r\n required={item.required}\r\n >\r\n <Upload\r\n fileList={this.state.fileList[item.name] || []}\r\n onListChange={(list) => {\r\n const { fileList } = this.state\r\n this.setState({\r\n fileList: { ...fileList, [item.name]: list }\r\n })\r\n }}\r\n showUploadList={{ showDownloadIcon: true, showRemoveIcon: label !== '查看' }}\r\n ref={itemRef}\r\n {...props}>\r\n {item.props?.children ? item.props?.children : (label !== '查看' && <Button>上传文件</Button>)}\r\n </Upload>\r\n </Form.Item>\r\n </Col>\r\n );\r\n }\r\n })}\r\n </Row>\r\n }\r\n render() {\r\n const { forms = [], props = {}, footer = true, children } = this.props;\r\n const { loading, label } = this.state;\r\n let modalProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onCancel: this.hide.bind(this),\r\n okButtonProps: { loading: loading },\r\n centered: true,\r\n width: \"50vw\",\r\n } as any;\r\n\r\n\r\n let drawerProps = {\r\n title: label,\r\n onOk: this.onSubmit.bind(this),\r\n onClose: this.hide.bind(this),\r\n width: \"50vw\",\r\n } as any;\r\n if (label == \"查看\") {\r\n modalProps.footer = null;\r\n drawerProps.footer = null;\r\n }\r\n this.dateValueFormat = {};\r\n this.dateFormat = {};\r\n this.fileFormat = []\r\n let newFormsObj = {} as any;\r\n let formGroups = [] as any\r\n let otherGrups = [] as any\r\n //处理表单数据\r\n forms.map((item: any) => {\r\n if (item.groupName && formGroups.indexOf(item.groupName) < 0) {\r\n formGroups.push(item.groupName);\r\n } else if (!item.groupName) {\r\n otherGrups.push(item)\r\n }\r\n })\r\n if (formGroups.length > 0) {\r\n formGroups.map((item: any) => {\r\n let groupForms = [] as any\r\n forms.map((form: any) => {\r\n if (form.groupName == item) {\r\n groupForms.push(form)\r\n }\r\n })\r\n newFormsObj[item] = groupForms\r\n })\r\n newFormsObj['noGroupName'] = otherGrups\r\n }\r\n //自定义按钮\r\n let selfButtons = [] as any;\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n typeof item == 'object' && selfButtons.push(item);\r\n });\r\n } else if (children) {\r\n typeof children == 'object' && selfButtons.push(children);\r\n }\r\n return (\r\n <Form\r\n ref={this.formRef}\r\n showModel={this.props.formType}\r\n modalProps={{ ...modalProps }}\r\n drawerProps={{ ...drawerProps }}\r\n labelCol={{ flex: \"100px\" }}\r\n wrapperCol={{ flex: \"15vw\" }}\r\n onValuesChange={(changedValues, allValues) => {\r\n const { onFormChange } = this.props;\r\n onFormChange && onFormChange(changedValues, allValues);\r\n }}\r\n changeValid={this.props.changeValid}\r\n {...props}\r\n >\r\n <div className=\"nsc-form-page\">\r\n {formGroups.length == 0 ? this.props.formType ? this.renderForm(forms, label) : <div className=\"nsc-form-pane\">{this.renderForm(forms, label)}</div> : Object.keys(newFormsObj).map((key) => {\r\n return (\r\n <div key={key} className=\"nsc-form-pane\">\r\n {key != \"noGroupName\" && <div className=\"nsc-form-title\">{key}</div>}\r\n <div className=\"nsc-form-content\">{this.renderForm(newFormsObj[key], label)}</div>\r\n </div>\r\n )\r\n })}\r\n {!this.props.formType && footer == true &&\r\n <div className={cls('nsc-form-page-footer', this.props.footerClassName)}>\r\n <Button {...this.props.cancelButtonProps} onClick={() => {\r\n if (this.props.onCancel) {\r\n this.props.onCancel();\r\n return\r\n }\r\n this.setState({ loading: false });\r\n }}>取消</Button>\r\n <Button type=\"primary\" {...this.props.okButtonProps}\r\n onClick={() => {\r\n this.onSubmit()\r\n }}\r\n loading={this.state.loading}\r\n className={'nsc-form-page-footer-btn'}\r\n >\r\n 保存\r\n </Button>\r\n {selfButtons.map((item: any, index: any) => {\r\n return <div className={'nsc-form-page-footer-btn'} key={index}>{item}</div>\r\n })\r\n }\r\n </div>\r\n }\r\n {!this.props.formType && footer !== true && this.props.footer}\r\n </div>\r\n </Form>\r\n );\r\n }\r\n}\r\n\r\nexport default FormPage;\r\n"],"mappings":"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"}
|