nsc-react-component 4.0.10 → 4.0.11
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.
|
@@ -112,9 +112,11 @@ declare class BasePage extends PureComponent<NSCBaseBageProps, any> {
|
|
|
112
112
|
pageRef: React.RefObject<any>;
|
|
113
113
|
pageContentRef: React.RefObject<any>;
|
|
114
114
|
dateFormat: any;
|
|
115
|
+
tableWrapperRef: React.RefObject<HTMLDivElement>;
|
|
115
116
|
constructor(props: any);
|
|
116
117
|
componentDidMount(): void;
|
|
117
|
-
componentDidUpdate(): void;
|
|
118
|
+
componentDidUpdate(prevProps: any): void;
|
|
119
|
+
componentWillUnmount(): void;
|
|
118
120
|
setSearchParams(params: any, callBack: any): void;
|
|
119
121
|
doSubmit(data: any, label?: string): void;
|
|
120
122
|
onSelect: (checkedTreeKeys: any) => void;
|
|
@@ -144,6 +146,7 @@ declare class BasePage extends PureComponent<NSCBaseBageProps, any> {
|
|
|
144
146
|
setTreeData(data: any): void;
|
|
145
147
|
getSelectedKey: (selected: any) => any[];
|
|
146
148
|
convertQueryParams(): any;
|
|
149
|
+
calculateTableHeaderHeight: () => void;
|
|
147
150
|
render(): React.JSX.Element;
|
|
148
151
|
}
|
|
149
152
|
export default BasePage;
|
|
@@ -43,6 +43,7 @@ class BasePage extends PureComponent {
|
|
|
43
43
|
_defineProperty(this, "pageRef", /*#__PURE__*/React.createRef());
|
|
44
44
|
_defineProperty(this, "pageContentRef", /*#__PURE__*/React.createRef());
|
|
45
45
|
_defineProperty(this, "dateFormat", {});
|
|
46
|
+
_defineProperty(this, "tableWrapperRef", /*#__PURE__*/React.createRef());
|
|
46
47
|
_defineProperty(this, "onSelect", checkedTreeKeys => {
|
|
47
48
|
const {
|
|
48
49
|
name,
|
|
@@ -70,6 +71,20 @@ class BasePage extends PureComponent {
|
|
|
70
71
|
}
|
|
71
72
|
return res;
|
|
72
73
|
});
|
|
74
|
+
// 计算表头高度的方法
|
|
75
|
+
_defineProperty(this, "calculateTableHeaderHeight", () => {
|
|
76
|
+
if (this.tableWrapperRef.current) {
|
|
77
|
+
const tableHeader = this.tableWrapperRef.current.getElementsByClassName('ant-table-thead')[0];
|
|
78
|
+
if (tableHeader) {
|
|
79
|
+
const headerHeight = tableHeader.getBoundingClientRect().height;
|
|
80
|
+
if (headerHeight !== this.state.tableHeaderHeight) {
|
|
81
|
+
this.setState({
|
|
82
|
+
tableHeaderHeight: headerHeight
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
});
|
|
73
88
|
let {
|
|
74
89
|
storePrefix
|
|
75
90
|
} = config();
|
|
@@ -90,7 +105,8 @@ class BasePage extends PureComponent {
|
|
|
90
105
|
moreOpen: false,
|
|
91
106
|
elementHeight: 0,
|
|
92
107
|
permissionButtons: [],
|
|
93
|
-
queryParams: {}
|
|
108
|
+
queryParams: {},
|
|
109
|
+
tableHeaderHeight: 0 // 添加表头高度到state
|
|
94
110
|
};
|
|
95
111
|
}
|
|
96
112
|
componentDidMount() {
|
|
@@ -100,13 +116,23 @@ class BasePage extends PureComponent {
|
|
|
100
116
|
permisson = {}
|
|
101
117
|
} = this.props;
|
|
102
118
|
const elementHeight = (_this$pageContentRef$ = this.pageContentRef.current) === null || _this$pageContentRef$ === void 0 ? void 0 : _this$pageContentRef$.clientHeight;
|
|
119
|
+
|
|
120
|
+
// 添加窗口resize监听
|
|
121
|
+
window.addEventListener('resize', this.calculateTableHeaderHeight);
|
|
122
|
+
|
|
123
|
+
// 初始计算表头高度
|
|
124
|
+
setTimeout(this.calculateTableHeaderHeight, 0);
|
|
103
125
|
this.setState({
|
|
104
126
|
elementHeight
|
|
105
127
|
});
|
|
106
128
|
initData && initData();
|
|
107
129
|
}
|
|
108
|
-
componentDidUpdate() {
|
|
130
|
+
componentDidUpdate(prevProps) {
|
|
109
131
|
var _this$pageContentRef$2;
|
|
132
|
+
// 当columns改变时重新计算表头高度
|
|
133
|
+
if (prevProps.columns !== this.props.columns) {
|
|
134
|
+
setTimeout(this.calculateTableHeaderHeight, 0);
|
|
135
|
+
}
|
|
110
136
|
const elementHeight = (_this$pageContentRef$2 = this.pageContentRef.current) === null || _this$pageContentRef$2 === void 0 ? void 0 : _this$pageContentRef$2.clientHeight;
|
|
111
137
|
if (elementHeight > this.state.elementHeight) {
|
|
112
138
|
this.setState({
|
|
@@ -114,6 +140,10 @@ class BasePage extends PureComponent {
|
|
|
114
140
|
});
|
|
115
141
|
}
|
|
116
142
|
}
|
|
143
|
+
componentWillUnmount() {
|
|
144
|
+
// 移除resize监听
|
|
145
|
+
window.removeEventListener('resize', this.calculateTableHeaderHeight);
|
|
146
|
+
}
|
|
117
147
|
setSearchParams(params, callBack) {
|
|
118
148
|
var _this$searchRef$curre;
|
|
119
149
|
(_this$searchRef$curre = this.searchRef.current) === null || _this$searchRef$curre === void 0 || _this$searchRef$curre.setSearchParams(params);
|
|
@@ -991,13 +1021,12 @@ class BasePage extends PureComponent {
|
|
|
991
1021
|
} = config();
|
|
992
1022
|
let toolFlag = showToolButton && toolButtons.length > 0 && toolButtonPosition == "buttom";
|
|
993
1023
|
let toolbarFlag = !(tableProps.toolbar == false || ((_tableProps$toolbar = tableProps.toolbar) === null || _tableProps$toolbar === void 0 ? void 0 : _tableProps$toolbar.show) == false || ((_tableProps$toolbar2 = tableProps.toolbar) === null || _tableProps$toolbar2 === void 0 || (_tableProps$toolbar2 = _tableProps$toolbar2.tools) === null || _tableProps$toolbar2 === void 0 ? void 0 : _tableProps$toolbar2.length) == 0 || (tableTool === null || tableTool === void 0 ? void 0 : tableTool.show) == false);
|
|
994
|
-
let tableHeaderHeight = 55;
|
|
995
1024
|
let toolHeight = tableTitle || toolFlag ? 50 : 0;
|
|
996
1025
|
let paddingHeight = 20 * 2; //上下间距
|
|
997
1026
|
let tableContentHeight = elementHeight - toolHeight - paddingHeight;
|
|
998
1027
|
let PaginationHeight = tableProps.pagination !== false ? 32 + 16 : 0; //32 为分页器高度,16为margin间距
|
|
999
1028
|
let tableHeight = tableContentHeight - PaginationHeight;
|
|
1000
|
-
let tableSrollHeight = tableContentHeight - tableHeaderHeight - PaginationHeight;
|
|
1029
|
+
let tableSrollHeight = tableContentHeight - this.state.tableHeaderHeight - PaginationHeight;
|
|
1001
1030
|
// if (tableProps.pagination !== false) {
|
|
1002
1031
|
const scroll = tableParams.scroll;
|
|
1003
1032
|
tableParams = _objectSpread(_objectSpread({}, tableParams), {}, {
|
|
@@ -1070,6 +1099,7 @@ class BasePage extends PureComponent {
|
|
|
1070
1099
|
}, {
|
|
1071
1100
|
[getLess(styles, "nsc-basepage-table-top2")]: toolbarFlag && !toolFlag
|
|
1072
1101
|
}),
|
|
1102
|
+
ref: this.tableWrapperRef,
|
|
1073
1103
|
style: {
|
|
1074
1104
|
height: tableContentHeight
|
|
1075
1105
|
}
|
|
@@ -1146,4 +1176,4 @@ class BasePage extends PureComponent {
|
|
|
1146
1176
|
}
|
|
1147
1177
|
}
|
|
1148
1178
|
export default BasePage;
|
|
1149
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInN0eWxlcyIsIkJhc2VQYWdlIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl90eXBlIiwiX3NpemUiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJuYW1lIiwidXNlclR5cGUiLCJhY2NvdW50Iiwic3RhdGUiLCJ2YWx1ZSIsImRlcHRJZCIsIm9uU2VhcmNoIiwic2VsZWN0ZWQiLCJyZXMiLCJrZXkiLCJrZXlzIiwibGVuZ3RoIiwic3RvcmVQcmVmaXgiLCJ0eXBlIiwiY29udGVudCIsInNpemUiLCJzZWxlY3RlZFJvd0tleXMiLCJzZWxlY3RlZFJvd0RhdGFzIiwidHJlZVNlbGVjdGVkS2V5IiwiZXhwYW5kIiwiZm9ybVR5cGUiLCJ0YWJsZVNpemUiLCJ0cmVlU2VhcmNoUHJhbXMiLCJwb3BvcGVucyIsIm1vcmVPcGVuIiwiZWxlbWVudEhlaWdodCIsInBlcm1pc3Npb25CdXR0b25zIiwicXVlcnlQYXJhbXMiLCJjb21wb25lbnREaWRNb3VudCIsIl90aGlzJHBhZ2VDb250ZW50UmVmJCIsImluaXREYXRhIiwicGVybWlzc29uIiwicGFnZUNvbnRlbnRSZWYiLCJjdXJyZW50IiwiY2xpZW50SGVpZ2h0Iiwic2V0U3RhdGUiLCJjb21wb25lbnREaWRVcGRhdGUiLCJfdGhpcyRwYWdlQ29udGVudFJlZiQyIiwic2V0U2VhcmNoUGFyYW1zIiwicGFyYW1zIiwiY2FsbEJhY2siLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUiLCJzZWFyY2hSZWYiLCJkb1N1Ym1pdCIsImRhdGEiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUiLCJsYWJlbCIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsImVkaXRvclJlZiIsInNob3dGb3JtIiwiX3RoaXMkZWRpdG9yUmVmIiwiZWRpdG9yZmxhZyIsIm5ld1ZhbHVlIiwiX29iamVjdFNwcmVhZCIsInNob3ciLCJoaWRlRm9ybSIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTIiLCJzZXRMb2FkaW5nIiwibG9hZGluZyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTMiLCJzZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTQiLCJzZXRGb3JtVmFsdWUiLCJnZXRFZGl0Rm9ybVZhbHVlcyIsIl90aGlzJGVkaXRvclJlZiRjdXJyZTUiLCJnZXRGb3JtVmFsdWUiLCJvbkRlbGV0ZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjIiLCJkZWxldGVVcmwiLCJkZWxldGVQYXJhbXMiLCJkZWxldGVQb3NpdGlvbiIsImJ1dHRvbkNsaWNrIiwicmVxdWVzdFBhcmFtcyIsInJlcXVlc3RVcmxzIiwicmVxdWVzdENvbmZpZyIsIl90aGlzIiwidGFibGVSZWYiLCJnZXRTZWxlY3RlZFJvd0tleXMiLCJnZXRTZWxlY3RlZFJvd0RhdGFzIiwidXJsIiwid2FybmluZyIsImNvbmZpcm0iLCJvbk9rIiwicGFnZVJlZiIsInJlY29yZCIsImlkcyIsImlkIiwiZnVuY3MiLCJVdGlscyIsIkVycm9yIiwiZGF0YVBhcmFtcyIsIm90aGVyUGFyYW1zIiwiX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzIiwiX2V4Y2x1ZGVkIiwiZGVmYXVsdFBhcmFtcyIsIm1ldGhvZCIsImF1dG9QcmVmaXgiLCJqb2luIiwiZmluYWxQYXJhbXMiLCJ0aGVuIiwiY29kZSIsIl90aGlzJHNlYXJjaFJlZiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYyIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzIiLCJzdWNjZXNzIiwiZ2V0U2VhcmNoVmFsdWVzIiwib25DYWxsQmFja3MiLCJvbkRlbGV0ZUNhbGxCYWNrIiwidGFibGVMb2FkIiwiZXJyb3IiLCJjYXRjaCIsImNvbnNvbGUiLCJsb2ciLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4zIiwiZGVmYXVsdFJlcXVlc3RDb25maWciLCJ0YWJsZVByb3BzIiwic3RvcmUiLCJ0YWJsZVN0b3JlIiwiY29udmVydFF1ZXJ5UGFyYW1zIiwicmVxdWVzdENvbmlnIiwic3RvcmVDb25maWciLCJzdG9yZVBhcmFtcyIsIm90aGVyU3RvcmVDb25maWciLCJfZXhjbHVkZWQyIiwibG9hZCIsIl90YWJsZVN0b3JlJHJlcXVlc3RDbzIiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMzIiwib25RdWVyeUNhbGxCYWNrIiwidGFibGVSZWxvYWQiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW40IiwiYXV0b0xvYWQiLCJyZWxvYWQiLCJjYWxsYmFjayIsIl9yZXMkZGF0YSIsInJlY29yZHMiLCJjdXJyZW50UGFnZSIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjUiLCJ0cmVlTG9hZCIsIl90aGlzJHRyZWVSZWYkY3VycmVudCIsInRyZWVSZWYiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW42IiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNyIsInNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjgiLCJzZXRTZWxlY3RlZFJvd0RhdGFzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuOSIsInJlc2V0U2VsZWN0ZWRSb3dLZXlzIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTAiLCJfdGhpcyRzZWFyY2hSZWYyIiwiZnJvbVZhbHVlIiwiZ2V0Q2hpbGRyZW5EYXRhIiwicm93S2V5IiwicmVzS2V5IiwiY2hpbGROb2RlcyIsImNoaWxkcmVuIiwibWFwIiwiaXRlbSIsImluZGV4IiwicmVuZGVyVG9vbEJ1dHRvbnMiLCJ0b29sYnV0dG9ucyIsInRvb2xiYXJGbGFnIiwiZmxhZyIsInNob3dTZWFyY2giLCJfaXRlbSRwcm9wcyIsInBhZ2VUeXBlIiwib25DbGljayIsImljb24iLCJfZXhjbHVkZWQzIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsIl9leHRlbmRzIiwic3R5bGUiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJ0aXRsZSIsInBsYWNlbWVudCIsIm9wZW4iLCJvbk9wZW5DaGFuZ2UiLCJyZW5kZXJDbG91bW5CdXR0b24iLCJjb2x1bW5CdXR0b25zIiwicm93UmVjb3JkIiwiYWN0aW9uUHJvcHMiLCJiYXNlQWN0aW9uQ29sdW1uIiwibmV3QnV0dG9ucyIsInNob3dJY29uIiwiX2l0ZW0kcHJvcHMyIiwicmVjb3JkU2hvdyIsIl9leGNsdWRlZDQiLCJldmVudE9wdGlvbiIsIlVpdGxzIiwiZnVuYyIsIkZ1bmN0aW9uIiwicHVzaCIsImUiLCJldmFsIiwibnVtYmVyIiwiYnV0dG9uTnVtYmVyIiwiX2l0ZW0kcHJvcHMzIiwiX2V4Y2x1ZGVkNSIsIk51bWJlciIsIl9pdGVtJHByb3BzNCIsIl9leGNsdWRlZDYiLCJ0cmlnZ2VyIiwidHJlZVNlbGVjdCIsInNlbGVjdGVkS2V5cyIsIm9iaiIsIl90aGlzJHNlYXJjaFJlZjMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM0IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNSIsImtleXdvcmQiLCJzZWFyY2hLZXkiLCJzZWFyY2hGaWVsZCIsInBhcmFudFNlbGVjdCIsInRyZWVQcm9wcyIsInNlbGVjdGVkTm9kZXMiLCJkYXRhcmVmIiwiYXR0cmlidXRlIiwiaXNMZWFmIiwib25UcmVlU2VsZWN0IiwidHJlZVNlbGVjdENhbGxCYWNrIiwicmVzZXRTZWFyY2giLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUyIiwicmVzZXRGaWVsZHMiLCJnZXRUZXh0IiwidGV4dCIsIl9wcm9wcyRkYXRhIiwibmV3VGV4dCIsImkiLCJzZXRUYWJsZURhdGEiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4xMSIsInNldERhdGEiLCJzZXRUcmVlRGF0YSIsIl90aGlzJHRyZWVSZWYkY3VycmVudDIiLCJjb252ZXJQYXJhbXMiLCJyZW5kZXIiLCJfdGhpczIiLCJfdGFibGVQcm9wcyR0b29sYmFyIiwiX3RhYmxlUHJvcHMkdG9vbGJhcjIiLCJjb2x1bW5zIiwic3VibWl0VXJsIiwiZm9ybVByb3BzIiwiZm9ybVBhZ2VQcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJwZXJtaXNzaW9uIiwiaGFzIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNyIsIm5ld1RhYmxlU3RvcmUiLCJfbmV3VGFibGVTdG9yZSRyZXF1ZXMiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsInRyZWVUaXRsZSIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDgiLCJ0YWJsZVBhcmFtcyIsImRlZmF1bHRWYWx1ZSIsIm1lbnVDb2RlIiwicGVybWlzc29ucyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRvb2xCdXR0b25zIiwiYnV0dG9uTWFwIiwiZWRpdG9yIiwiZGVsZXRlIiwic2VhcmNoIiwicmV0dXJuQnV0dG9uIiwiX2J1dHRvbk1hcCRjb2RlIiwib25FZGl0b3IiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEyIiwib25FZGl0b3JDYWxsQmFjayIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjaGVja1BlcnNzaW9uIiwiaW5kZXhPZiIsIm9uQWRkIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJvbkFkZENhbGxCYWNrIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfY2hpbGQkcHJvcHM0IiwiX2NoaWxkJHByb3BzNSIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsIl9pdGVtJHByb3BzNyIsIl9pdGVtJHByb3BzOCIsIl9pdGVtJHByb3BzOSIsImRhdGFJbmRleCIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInRhYmxlSGVhZGVySGVpZ2h0IiwidG9vbEhlaWdodCIsInBhZGRpbmdIZWlnaHQiLCJ0YWJsZUNvbnRlbnRIZWlnaHQiLCJQYWdpbmF0aW9uSGVpZ2h0IiwicGFnaW5hdGlvbiIsInRhYmxlSGVpZ2h0IiwidGFibGVTcm9sbEhlaWdodCIsInNjcm9sbCIsIngiLCJ5IiwicmVmIiwicGFnZVRpdGxlIiwiZGlzcGxheSIsImNoZWNrYWJsZSIsInNlYXJjaGFibGUiLCJvblNlbGVjdCIsIm9uUmVzZXQiLCJfdGhpcyRzZWFyY2hSZWYkY3VycmUzIiwic2VhcmNoRm9ybVByb3BzIiwiaGVpZ2h0IiwiZXhwYW5kSWNvbiIsIl9yZWYiLCJfcmVjb3JkJGNoaWxkTm9kZXMiLCJfcmVjb3JkJGNoaWxkTm9kZXMyIiwiZXhwYW5kZWQiLCJvbkV4cGFuZCIsIm9uQ2hhbmdlIiwib25Ub29sQ2xpY2siLCJvblJlZnJlc2giLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWM4IiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjOSIsIm9uU3VtYml0Q2FsbEJhY2siLCJmb3JtcyIsIm9uU3VibWl0Iiwib25IaWRlRm9ybSIsIm9uRm9ybUNoYW5nZSIsImNoYW5nZVZhbGlkIiwicmVxdWVzdE9iamVjdCIsImFkZFVybCIsImVkaXRvclVybCIsImFkZFBhcmFtcyIsImVkaXRvclBhcmFtcyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL3BhZ2UvQmFzZVBhZ2UvaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBSZWFjdCwgeyBQdXJlQ29tcG9uZW50LCBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcclxuaW1wb3J0IFRhYmxlIGZyb20gXCIuLi8uLi9iYXNlL3RhYmxlXCI7XHJcbmltcG9ydCBUcmVlIGZyb20gXCIuLi8uLi9iYXNlL3RyZWVcIjtcclxuaW1wb3J0IEJ1dHRvbiBmcm9tIFwiLi4vLi4vYmFzZS9idXR0b25cIjtcclxuaW1wb3J0IE1vZGFsIGZyb20gXCIuLi8uLi9iYXNlL21vZGFsXCI7XHJcbmltcG9ydCBQb3BvdmVyIGZyb20gXCIuLi8uLi9iYXNlL3BvcG92ZXJcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgRWRpdG9yRm9ybSwgeyBGb3JtUGFnZVByb3BzIH0gZnJvbSBcIi4uL0Zvcm1QYWdlL2luZGV4XCI7XHJcbmltcG9ydCBjbHMgZnJvbSBcImNsYXNzbmFtZXNcIjtcclxuaW1wb3J0IFwiLi9pbmRleC5tb2R1bGUubGVzc1wiO1xyXG5pbXBvcnQgU3RvcmUsIHsgUGFnZVN0b3JlLCBTdG9yZVByb3BzIH0gZnJvbSBcIkBiai1uc2MvbXNuXCI7XHJcbmltcG9ydCB7IHV0aWxzIH0gZnJvbSBcIkBiai1uc2MvbXNuL2xpYi91dGlsc1wiO1xyXG5pbXBvcnQge1xyXG4gIERvd25PdXRsaW5lZCxcclxuICBFeWVPdXRsaW5lZCxcclxuICBFZGl0T3V0bGluZWQsXHJcbiAgUmlnaHRPdXRsaW5lZCxcclxuICBQbHVzT3V0bGluZWQsXHJcbiAgRWxsaXBzaXNPdXRsaW5lZCxcclxuICBEZWxldGVPdXRsaW5lZCxcclxufSBmcm9tIFwiQGFudC1kZXNpZ24vaWNvbnNcIjtcclxuaW1wb3J0IHsgY29udmVyRnVuY3Rpb24sIGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IHJlcXVlc3QgZnJvbSBcIm5zYy1yZXF1ZXN0XCI7XHJcbmltcG9ydCBjb25maWcgZnJvbSBcIi4uLy4uL2NvbmZpZ1wiO1xyXG5pbXBvcnQgeyBnZXRTdG9yYWdlLCBweDJ2dywgZ2V0QnV0dG9uUGVybWlzc29ucyB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgSGVhZGVyU2VhcmNoIGZyb20gXCIuLi9IZWFkZXJTZWFyY2hcIjtcclxuaW1wb3J0IHsgUGFnaW5hdGlvblByb3BzIH0gZnJvbSBcImFudGRcIjtcclxuaW1wb3J0IG5zY2ZpbGUgZnJvbSBcIm5zYy1maWxlXCI7XHJcbmltcG9ydCB7IGNvbnZlcnRDb2x1bW5zLCBnZXROZXdDb2x1bW5zIH0gZnJvbSBcIi4vdXRpbHNcIjtcclxuXHJcbnR5cGUgQnV0dG9uSXRlbSA9IHN0cmluZyB8IHtcclxuICBjb2RlOiBzdHJpbmc7XHJcbiAgcmVjb3JkU2hvdz86IHN0cmluZyB8IEZ1bmN0aW9uO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgVGFibGVQcm9wcyB7XHJcbiAgYWN0aW9uQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdG9yZT86IFN0b3JlUHJvcHM7XHJcbiAgZmlsdGVyQ29sdW1uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrov4fmu6TmjInpkq5cclxuICBzaG93Um93U2VsZWN0aW9uPzogYm9vbGVhbjsgLy/mmK/lkKbooajmoLzli77pgInliJdcclxuICBwYWdpbmF0aW9uPzogYm9vbGVhbiB8IFBhZ2luYXRpb25Qcm9wczsgLy/mmK/lkKbmmL7npLrliIbpobVcclxuICBjb2x1bW5PcmRlcj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S66KGo5qC85bqP5YiXXHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmNvbnN0IHN0eWxlcyA9IG51bGw7XHJcbmludGVyZmFjZSBUcmVlUHJvcHMge1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmkJzntKLmoYZcclxuICBzZWFyY2hLZXk/OiBzdHJpbmc7IC8v5pCc57SidmFsdWXlr7nlupTnmoRrZXlcclxuICBzZWFyY2hGaWVsZD86IHN0cmluZzsgLy/mn6Xor6Llr7nlupTnmoRrZXlcclxuICB0aXRsZUFsaWFzPzogc3RyaW5nOyAvL+agkXRpdGxl5a+55bqU55qEa2V5LOm7mOiupHRpdGxlXHJcbiAgbm9kZVBvcnBzPzogb2JqZWN0O1xyXG4gIHBhcmFudFNlbGVjdD86IGJvb2xlYW47XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcbmludGVyZmFjZSBGb3JtUHJvcHMgZXh0ZW5kcyBGb3JtUGFnZVByb3BzIHsgfVxyXG5pbnRlcmZhY2UgTlNDQmFzZUJhZ2VQcm9wcyB7XHJcbiAgc2hvd1NlYXJjaD86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65aS06YOo5pCc57Si5qCPXHJcbiAgdGFibGVQcm9wcz86IFRhYmxlUHJvcHM7IC8v6KGo5qC85Y+C5pWwXHJcbiAgdHJlZVByb3BzPzogVHJlZVByb3BzOyAvL+W3puS+p+agkeWPguaVsFxyXG4gIHN1Ym1pdFBhcmFtcz86IE9iamVjdDsgLy/mt7vliqDlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dkYXRh5Lyg6YCSXHJcbiAgc3VibWl0VXJsPzogc3RyaW5nO1xyXG4gIG9uU3VibWl0PzogKHZhbHVlPzogYW55LCBsYWJlbD86IGFueSkgPT4gdm9pZDtcclxuICBjb2x1bW5zOiBBcnJheTxPYmplY3Q+O1xyXG4gIHNob3dMZWZ0PzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlt6bkvqfnm67lvZXmoJFcclxuICBzaG93VG9vbEJ1dHRvbj86IGJvb2xlYW47IC8v5piv5ZCm5pi+56S65oyJ6ZKu5qCPXHJcbiAgZWRpdG9yRm9ybT86IGJvb2xlYW47IC8v5piv5ZCm6ZyA6KaB6KGo5Y2V5Yqf6IO9ICwg5Li6ZmFsc2Ug57yW6L6R77yM5p+l55yL77yM5paw5aKe5Yqf6IO95Z2H5LiN5Y+v55SoXHJcbiAgZGVsZXRlVXJsPzogc3RyaW5nOyAvL+WIoOmZpHVybFxyXG4gIG9uRGVsZXRlPzogKHNlbGVjdGVkS2V5cz86IEFycmF5PHN0cmluZz4pID0+IHZvaWQ7IC8v5Yig6Zmk5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HaWRz5ou85o6l5Lyg6YCS57uZ5ZCO5Y+wXHJcbiAgZGVsZXRlUG9zaXRpb24/OiBcInRvb2xiYXJcIiB8IFwicm93XCI7XHJcbiAgZGVsZXRlUGFyYW1zPzogT2JqZWN0O1xyXG4gIGNoaWxkcmVuPzogUmVhY3QuUmVhY3ROb2RlO1xyXG4gIG9uU2VhcmNoPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIG9uUmVzZXQ/OiAoKSA9PiB2b2lkO1xyXG4gIGluaXREYXRhPzogYW55OyAvL+WIneWni+WMluWbnuiwg+WHveaVsO+8jOWcqGNvbXBvbmVudERpZE1vdW505Lit6LCD55SoXHJcbiAgYnV0dG9ucz86IEJ1dHRvbkl0ZW1bXTsgLy/mjInpkq7pm4blkIggIFsnYWRkJywnZGVsZXRlJywnc2VhcmNoJywnZWRpdG9yJ11cclxuICBvblNob3dGb3JtPzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uSGlkZUZvcm0/OiAoKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uRm9ybUNoYW5nZT86IChjaGFuZ2VkVmFsdWVzPzogYW55LCBhbGxWYWx1ZXM/OiBhbnkpID0+IHZvaWQ7IC8v6KGo5Y2Vb25DaGFuZ2Xlm57osINcclxuICBmb3JtVHlwZT86IFwibW9kYWxcIiB8IFwiZHJhd2VyXCI7XHJcbiAgZm9ybUNoYW5nZVZhbGlkPzogYm9vbGVhbjsgLy/ooajljZXmoKHpqoxcclxuICBjbGFzc05hbWU/OiBhbnk7XHJcbiAgdG9vbEJ1dHRvblBvc2l0aW9uPzogXCJyaWdodFwiIHwgXCJidXR0b21cIjtcclxuICBwYWdlVGl0bGU/OiBzdHJpbmcgfCBSZWFjdE5vZGU7XHJcbiAgZm9ybVByb3BzPzogRm9ybVByb3BzO1xyXG4gIGFjdGlvblByb3BzPzoge1xyXG4gICAgdGV4dEFsaWduPzogc3RyaW5nO1xyXG4gICAgc2hvd0ljb24/OiBib29sZWFuO1xyXG4gICAgd2lkdGg/OiBudW1iZXI7XHJcbiAgICBidXR0b25OdW1iZXI/OiBudW1iZXIgfCBcImFsbFwiO1xyXG4gIH07XHJcbiAgc2VhcmNoRm9ybVByb3BzPzogeyB3cmFwcGVyQ29sPzogYW55OyBsYWJlbENvbD86IGFueSB9O1xyXG4gIG9uVHJlZVNlbGVjdD86ICh2YWx1ZT86IGFueSwgZWRpdG9yRmxhZz86IHN0cmluZykgPT4gdm9pZDsgLy/miZPlvIDooajljZXlm57osINcclxuICBvbkNhbGxCYWNrcz86IHtcclxuICAgIHRyZWVTZWxlY3RDYWxsQmFjaz86IGFueTsgLy/moJHngrnlh7vmn6Xor6LlkI7lm57osINcclxuICAgIG9uUXVlcnlDYWxsQmFjaz86IGFueTsgLy/mn6Xor6Llm57osIPvvIzmn6Xor6LmlbDmja7lkI7lm57osINcclxuICAgIG9uU3VtYml0Q2FsbEJhY2s/OiBhbnk7IC8v5L+d5a2Y5Zue6LCD77yM5L+d5a2Y5pWw5o2u5oiQ5Yqf5ZCO5Zue6LCDXHJcbiAgICBvbkRlbGV0ZUNhbGxCYWNrPzogYW55OyAvL+WIoOmZpOaMiemSruWbnuiwg++8jOWIoOmZpOaVsOaNruWQjuaJp+ihjFxyXG4gICAgb25FZGl0b3JDYWxsQmFjaz86IGFueTsgLy/nvJbovpHmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uQWRkQ2FsbEJhY2s/OiBhbnk7IC8v5re75Yqg5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgICBvblNlYXJjaENhbGxCYWNrPzogYW55OyAvL+WIl+ihqOafpeivouaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gIH07XHJcbiAgcGFnZVR5cGU/OiBcIm5vcm1hbFwiIHwgXCJ0YWJzcGFnZVwiO1xyXG4gIGZvcm1QYWdlUHJvcHM/OiB7fTtcclxuICBidXR0b25DbGljaz86IHtcclxuICAgIG9uQWRkPzogKCkgPT4gdm9pZDtcclxuICAgIG9uRWRpdG9yPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gICAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvbkRlbGV0ZT86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICB9O1xyXG4gIHBlcm1pc3Npb24/OiB7XHJcbiAgICBoYXM/OiBib29sZWFuO1xyXG4gICAgbWVudUNvZGU/OiBzdHJpbmc7XHJcbiAgfTtcclxuICByZXF1ZXN0UGFyYW1zPzoge1xyXG4gICAgLy/pnIDopoHpop3lpJbkvKDnmoTlm7rlrpror7fmsYLlj4LmlbBcclxuICAgIGFkZFBhcmFtcz86IE9iamVjdDsgLy/mlrDlop7lm7rlrprlj4LmlbBcclxuICAgIGVkaXRvclBhcmFtcz86IE9iamVjdDsgLy/nvJbovpHlm7rlrprlj4LmlbBcclxuICAgIHF1ZXJ5UGFyYW1zPzogT2JqZWN0OyAvL+afpeivouWbuuWumuWPguaVsFxyXG4gICAgZGVsZXRlUGFyYW1zPzogT2JqZWN0OyAvL+WIoOmZpOWbuuWumuWPguaVsFxyXG4gIH07XHJcbiAgcmVxdWVzdFVybHM/OiB7XHJcbiAgICBhZGRVcmw/OiBzdHJpbmc7IC8v5paw5aKedXJsXHJcbiAgICBlZGl0b3JVcmw/OiBzdHJpbmc7IC8v57yW6L6RdXJsXHJcbiAgICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgfTtcclxuICBmdW5jcz86IGFueTtcclxuICByZXF1ZXN0Q29uZmlnPzogYW55O1xyXG4gIFtwcm9wc05hbWU6IHN0cmluZ106IGFueTtcclxufVxyXG5cclxuY2xhc3MgQmFzZVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PE5TQ0Jhc2VCYWdlUHJvcHMsIGFueT4ge1xyXG4gIHRhYmxlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICB0cmVlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBzZWFyY2hSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGVkaXRvclJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgcGFnZVJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgcGFnZUNvbnRlbnRSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IHsgc3RvcmVQcmVmaXggfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHR5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcImZvcm1UeXBlXCIgOiBcImZvcm1UeXBlXCJcclxuICAgICk7XHJcbiAgICB0eXBlID0gdHlwZT8uY29udGVudDtcclxuICAgIGxldCBzaXplID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBzaXplID0gc2l6ZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIHR5cGU6IFwiYWRkXCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICAgIGZvcm1UeXBlOiB0eXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgdGFibGVTaXplOiBzaXplIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgZWxlbWVudEhlaWdodDogMCxcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnM6IFtdLFxyXG4gICAgICBxdWVyeVBhcmFtczoge30sXHJcbiAgICB9O1xyXG4gIH1cclxuICBjb21wb25lbnREaWRNb3VudCgpIHtcclxuICAgIGNvbnN0IHsgaW5pdERhdGEsIHBlcm1pc3NvbiA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgZWxlbWVudEhlaWdodCA9IHRoaXMucGFnZUNvbnRlbnRSZWYuY3VycmVudD8uY2xpZW50SGVpZ2h0O1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICB9KTtcclxuICAgIGluaXREYXRhICYmIGluaXREYXRhKCk7XHJcbiAgfVxyXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VDb250ZW50UmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIGlmIChlbGVtZW50SGVpZ2h0ID4gdGhpcy5zdGF0ZS5lbGVtZW50SGVpZ2h0KSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIGVsZW1lbnRIZWlnaHQsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBzZXRTZWFyY2hQYXJhbXMocGFyYW1zLCBjYWxsQmFjaykge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8uc2V0U2VhcmNoUGFyYW1zKHBhcmFtcyk7XHJcbiAgICBjYWxsQmFjayAmJiBjYWxsQmFjayhwYXJhbXMpO1xyXG4gIH1cclxuICBkb1N1Ym1pdChkYXRhLCBsYWJlbCA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICB9XHJcblxyXG4gIG9uU2VsZWN0ID0gKGNoZWNrZWRUcmVlS2V5czogYW55KSA9PiB7XHJcbiAgICBjb25zdCB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgdmFsdWUgPSB7IG5hbWUsIHVzZXJUeXBlLCBhY2NvdW50LCBkZXB0SWQ6IGNoZWNrZWRUcmVlS2V5c1swXSB9O1xyXG4gICAgaWYgKHRoaXMucHJvcHMub25TZWFyY2gpIHtcclxuICAgICAgdGhpcy5wcm9wcy5vblNlYXJjaCh2YWx1ZSk7XHJcbiAgICB9XHJcbiAgICAvLyB0aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgfTtcclxuXHJcbiAgLy/mmL7npLrooajljZVcclxuICBzaG93Rm9ybSh2YWx1ZT86IGFueSwgZWRpdG9yZmxhZyA9IFwiYWRkXCIsIGNhbGxCYWNrPzogYW55KSB7XHJcbiAgICBsZXQgbmV3VmFsdWUgPSB2YWx1ZSA/IHsgLi4udmFsdWUgfSA6IG51bGw7XHJcbiAgICB0aGlzLmVkaXRvclJlZj8uY3VycmVudD8uc2hvdyhuZXdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spO1xyXG4gIH1cclxuXHJcbiAgLy/lhbPpl63ooajljZVcclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG5cclxuICBzZXRMb2FkaW5nKGxvYWRpbmc6IGJvb2xlYW4pIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldExvYWRpbmcobG9hZGluZyk7XHJcbiAgfVxyXG5cclxuICBzZXRFZGl0Rm9ybVZhbHVlcyh2YWx1ZSwgdHlwZSA9IFwi57yW6L6RXCIpIHtcclxuICAgIHRoaXMuZWRpdG9yUmVmLmN1cnJlbnQ/LnNldEZvcm1WYWx1ZSh2YWx1ZSwgdHlwZSk7XHJcbiAgfVxyXG5cclxuICBnZXRFZGl0Rm9ybVZhbHVlcygpIHtcclxuICAgIHJldHVybiB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5nZXRGb3JtVmFsdWUoKTtcclxuICB9XHJcblxyXG4gIC8v5om56YeP5Yig6ZmkXHJcbiAgb25EZWxldGUoZGF0YT86IGFueSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBkZWxldGVVcmwsXHJcbiAgICAgIG9uRGVsZXRlLFxyXG4gICAgICBkZWxldGVQYXJhbXMgPSB7fSxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcmVxdWVzdFBhcmFtcyA9IHt9LFxyXG4gICAgICByZXF1ZXN0VXJscyA9IHt9LFxyXG4gICAgICByZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBfdGhpcyA9IHRoaXM7XHJcbiAgICBjb25zdCBzZWxlY3RlZFJvd0tleXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dEYXRhcyA9IHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gICAgbGV0IHVybCA9IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA/IHJlcXVlc3RVcmxzLmRlbGV0ZVVybCA6IGRlbGV0ZVVybDtcclxuICAgIGxldCBwYXJhbXM6IGFueSA9IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgID8gcmVxdWVzdFBhcmFtcy5kZWxldGVQYXJhbXNcclxuICAgICAgOiBkZWxldGVQYXJhbXM7XHJcbiAgICBpZiAoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIpIHtcclxuICAgICAgaWYgKHNlbGVjdGVkUm93S2V5cy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIG1lc3NhZ2Uud2FybmluZyhcIuivt+mAieaLqeimgeWIoOmZpOeahOaVsOaNru+8gVwiKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIE1vZGFsLmNvbmZpcm0oe1xyXG4gICAgICBjb250ZW50OiBcIuaYr+WQpuehruiupOWIoOmZpOaJgOmAiemhue+8n1wiLFxyXG4gICAgICAvLyBjZW50ZXJlZDp0cnVlLFxyXG4gICAgICBvbk9rOiAoKSA9PiB7XHJcbiAgICAgICAgaWYgKGJ1dHRvbkNsaWNrLm9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25EZWxldGUsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgcmVjb3JkOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93RGF0YXMgOiBkYXRhLFxyXG4gICAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhPy5pZCxcclxuICAgICAgICAgICAgICBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKG9uRGVsZXRlKSB7XHJcbiAgICAgICAgICBvbkRlbGV0ZSAmJlxyXG4gICAgICAgICAgICBvbkRlbGV0ZShkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cyA6IGRhdGEpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoIXVybCkge1xyXG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwidXJs5LiN6IO95Li656m677yBXCIpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCB7IGRhdGE6IGRhdGFQYXJhbXMgPSB7fSwgLi4ub3RoZXJQYXJhbXMgfSA9IHBhcmFtcztcclxuICAgICAgICBjb25zdCBkZWZhdWx0UGFyYW1zID0ge1xyXG4gICAgICAgICAgbWV0aG9kOiBcInBvc3RcIixcclxuICAgICAgICAgIGF1dG9QcmVmaXg6IHRydWUsXHJcbiAgICAgICAgICBwYXJhbXM6IHtcclxuICAgICAgICAgICAgaWRzOiBkZWxldGVQb3NpdGlvbiA9PSBcInRvb2xiYXJcIiA/IHNlbGVjdGVkUm93S2V5cy5qb2luKCkgOiBkYXRhLmlkLFxyXG4gICAgICAgICAgICAuLi5kYXRhUGFyYW1zLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgICAgfTtcclxuICAgICAgICBsZXQgZmluYWxQYXJhbXMgPSB7fSBhcyBhbnk7XHJcbiAgICAgICAgZmluYWxQYXJhbXMgPSB7IC4uLmRlZmF1bHRQYXJhbXMsIC4uLm90aGVyUGFyYW1zIH07XHJcbiAgICAgICAgcmVxdWVzdCh1cmwsIHtcclxuICAgICAgICAgIC4uLmZpbmFsUGFyYW1zLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgICAudGhlbihmdW5jdGlvbiAocmVzOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgICAgICBtZXNzYWdlLnN1Y2Nlc3MoXCLliKDpmaTmiJDlip/vvIFcIik7XHJcbiAgICAgICAgICAgICAgbGV0IHZhbHVlID0gX3RoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIF90aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkRlbGV0ZUNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIF90aGlzLnRhYmxlTG9hZCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5lcnJvcihcIuWIoOmZpOWksei0pe+8gVwiKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIC5jYXRjaChmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmxvZyhcImVycm9yXCIsIGVycm9yKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRhYmxlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7XHJcbiAgICAgIHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpXHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmlnOiBzdG9yZUNvbmZpZyA9IHt9IH0gPSB0YWJsZVN0b3JlO1xyXG4gICAgY29uc3QgeyBwYXJhbXM6IHN0b3JlUGFyYW1zID0ge30sIC4uLm90aGVyU3RvcmVDb25maWcgfSA9IHN0b3JlQ29uZmlnO1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLm90aGVyU3RvcmVDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogeyAuLi5zdG9yZVBhcmFtcywgLi4uZmluYWxQYXJhbXMgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICAvL+afpeivolxyXG4gIG9uU2VhcmNoKHBhcmFtcykge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBvblNlYXJjaCxcclxuICAgICAgb25DYWxsQmFja3MsXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHN0b3JlOiB0YWJsZVN0b3JlIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSB0aGlzLmNvbnZlcnRRdWVyeVBhcmFtcygpXHJcbiAgICBsZXQgZGF0YSA9IHF1ZXJ5UGFyYW1zLmRhdGEgfHwgcXVlcnlQYXJhbXMucGFyYW1zIHx8IHt9O1xyXG4gICAgbGV0IGZpbmFsUGFyYW1zID0ge1xyXG4gICAgICAuLi5kYXRhLFxyXG4gICAgICAuLi50YWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyxcclxuICAgICAgLi4ucGFyYW1zLFxyXG4gICAgfTtcclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaChmaW5hbFBhcmFtcyk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGlmIChvblNlYXJjaCkge1xyXG4gICAgICBvblNlYXJjaCh7IC4uLmZpbmFsUGFyYW1zLCAuLi50aGlzLnN0YXRlLnRyZWVTZWFyY2hQcmFtcyB9KTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy50YWJsZUxvYWQoeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICBvbkNhbGxCYWNrcz8ub25RdWVyeUNhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgcGFyYW1zOiBwYXJhbXMgfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgfVxyXG4gIC8v6KGo5qC86YeN5paw5Yqg6L29XHJcbiAgdGFibGVSZWxvYWQocGFyYW1zID0ge30sIGF1dG9Mb2FkID0gdHJ1ZSkge1xyXG4gICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgY2FsbGJhY2s6IChyZXMpID0+IHtcclxuICAgICAgICBpZiAoXHJcbiAgICAgICAgICBhdXRvTG9hZCAmJlxyXG4gICAgICAgICAgcmVzPy5kYXRhPy5yZWNvcmRzPy5sZW5ndGggPT0gMCAmJlxyXG4gICAgICAgICAgdGhpcy5zdGF0ZS5jdXJyZW50UGFnZSAhPT0gMVxyXG4gICAgICAgICkge1xyXG4gICAgICAgICAgdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zdG9yZT8ucmVsb2FkKHtcclxuICAgICAgICAgICAgcGFyYW1zOiB7IGN1cnJlbnQ6IDEsIC4uLnBhcmFtcyB9LFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIHRyZWVMb2FkKHBhcmFtczogYW55LCByZXF1ZXN0Q29uZmlnID0ge30pIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdENvbmZpZzogZGVmYXVsdFJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZS5sb2FkKHtcclxuICAgICAgLi4uZGVmYXVsdFJlcXVlc3RDb25maWcsXHJcbiAgICAgIC4uLnJlcXVlc3RDb25maWcsXHJcbiAgICAgIHBhcmFtczogcGFyYW1zLFxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93S2V5cygpO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0RhdGFzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uZ2V0U2VsZWN0ZWRSb3dEYXRhcygpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0tleXMoZGF0YTogQXJyYXk8U3RyaW5nIHwgTnVtYmVyPikge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8uc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGEpO1xyXG4gIH1cclxuICBzZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGE6IEFycmF5PE9iamVjdD4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93RGF0YXMoZGF0YSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VsZWN0ZWRSb3dLZXlzKCkge1xyXG4gICAgcmV0dXJuIHRoaXMudGFibGVSZWYuY3VycmVudD8ucmVzZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcblxyXG4gIGdldFNlYXJjaFZhbHVlcygpIHtcclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKTtcclxuICAgIHJldHVybiB7IC4uLmZyb21WYWx1ZSwgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfTtcclxuICB9XHJcblxyXG4gIGdldENoaWxkcmVuRGF0YShkYXRhLCBrZXlzID0gW10pIHtcclxuICAgIGNvbnN0IHsgdGFibGVQcm9wcyB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG4gICAgbGV0IHJlc0tleSA9IFtdO1xyXG4gICAgbGV0IGtleSA9IFwiXCI7XHJcbiAgICBpZiAoZGF0YS5jaGlsZE5vZGVzKSB7XHJcbiAgICAgIGNvbnN0IGNoaWxkcmVuID0gZGF0YS5jaGlsZE5vZGVzO1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW0sIGluZGV4KSA9PiB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBrZXkgPSByb3dLZXkoaXRlbSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGtleSA9IGl0ZW1bcm93S2V5XTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGl0ZW0uY2hpbGROb2Rlcykge1xyXG4gICAgICAgICAgdGhpcy5nZXRDaGlsZHJlbkRhdGEoaXRlbS5jaGlsZE5vZGVzLCBrZXlzKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcmVzS2V5ID0gWy4uLmtleXMsIGtleV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlc0tleTtcclxuICB9XHJcblxyXG4gIHJlbmRlclRvb2xCdXR0b25zKHRvb2xidXR0b25zOiBhbnksIHRvb2xiYXJGbGFnKSB7XHJcbiAgICBjb25zdCBmbGFnID0gdG9vbGJ1dHRvbnMubGVuZ3RoID4gNTtcclxuICAgIGNvbnN0IHsgc2hvd1NlYXJjaCA9IHRydWUgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCBjb250ZW50ID0gdG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHNob3csIC4uLnBhcmFtcyB9ID0gaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gMykge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2soKTtcclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIChcclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10b29sLWJ1dHRvbnNcIikpfVxyXG4gICAgICAgIHN0eWxlPXt7IG1hcmdpbkxlZnQ6IDAgfX1cclxuICAgICAgPlxyXG4gICAgICAgIHt0b29sYnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICAgICAgaWYgKGluZGV4IDwgNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgbWFyZ2luUmlnaHQ6IDEyLFxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gNCkge1xyXG4gICAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50PXtjb250ZW50fVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZT17bnVsbH1cclxuICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcclxuICAgICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgICAgb3Blbj17dGhpcy5zdGF0ZS5tb3JlT3Blbn1cclxuICAgICAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcGVuKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbW9yZU9wZW46IHRydWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgIC8vIG9wZW49e3RydWV9XHJcbiAgICAgICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcC1ib3gnXX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvbiB0eXBlPVwicHJpbWFyeVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIOabtOWkmiA8RG93bk91dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgICAgICAgPC9Qb3BvdmVyPlxyXG4gICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XHJcbiAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiBpbmRleCA9PSB0b29sYnV0dG9ucy5sZW5ndGggLSAxID8gMCA6IDEyLFxyXG4gICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICB7aXRlbX1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KX1cclxuICAgICAgPC9kaXY+XHJcbiAgICApO1xyXG4gIH1cclxuICByZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9uczogYW55LCByb3dSZWNvcmQ6IGFueSkge1xyXG4gICAgY29uc3QgeyBhY3Rpb25Qcm9wcywgdGFibGVQcm9wcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBiYXNlQWN0aW9uQ29sdW1uIH0gPSBjb25maWcoKTtcclxuICAgIGNvbnN0IG5ld0J1dHRvbnMgPSBbXTtcclxuICAgIGNvbnN0IHsgcm93S2V5ID0gXCJpZFwiIH0gPSB0YWJsZVByb3BzO1xyXG5cclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKHR5cGVvZiByb3dLZXkgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgIGtleSA9IHJvd0tleShyb3dSZWNvcmQpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAga2V5ID0gcm93UmVjb3JkW3Jvd0tleV07XHJcbiAgICB9XHJcbiAgICBsZXQgc2hvd0ljb24gPSB0cnVlO1xyXG4gICAgaWYgKGFjdGlvblByb3BzPy5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBlbHNlIGlmIChiYXNlQWN0aW9uQ29sdW1uLnNob3dJY29uID09PSBmYWxzZSkgc2hvd0ljb24gPSBmYWxzZTtcclxuICAgIGNvbHVtbkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgY29uc3QgeyBjaGlsZHJlbiwgcGFnZVR5cGUsIG9uQ2xpY2ssIGljb24sIHJlY29yZFNob3csIC4uLnBhcmFtcyB9ID1cclxuICAgICAgICBpdGVtLnByb3BzO1xyXG4gICAgICBpZiAocmVjb3JkU2hvdykge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVjb3JkU2hvdyA9PSBcInN0cmluZ1wiKSB7XHJcblxyXG4gICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgY29uc3QgZXZlbnRPcHRpb24gPSB7IHJlY29yZDogcm93UmVjb3JkLCBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzIH07XHJcbiAgICAgICAgICAgIGNvbnN0IFV0aWxzID0geyAuLi50aGlzLnByb3BzLlVpdGxzIH1cclxuICAgICAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJldmVudE9wdGlvbixVdGlsc1wiLCByZWNvcmRTaG93KTtcclxuICAgICAgICAgICAgY29uc3Qgc2hvdyA9IGZ1bmMoZXZlbnRPcHRpb24sIFV0aWxzKTtcclxuICAgICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGxldCByZWNvcmQgPSByb3dSZWNvcmRcclxuICAgICAgICAgICAgaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAvLyBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgIC8vICAgcmVjb3JkU2hvdyxcclxuICAgICAgICAgIC8vICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHJlY29yZDogcmVjb3JkLCB9LFxyXG4gICAgICAgICAgLy8gICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAvLyApO1xyXG4gICAgICAgICAgLy8gaWYgKGV2YWwocmVjb3JkU2hvdykpIHtcclxuICAgICAgICAgIC8vICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgLy8gfVxyXG4gICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICBjb25zdCBzaG93ID0gcmVjb3JkU2hvdyhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgc2hvdyAmJiBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBsZXQgbnVtYmVyID0gYWN0aW9uUHJvcHM/LmJ1dHRvbk51bWJlclxyXG4gICAgICA/IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgICA/IGJhc2VBY3Rpb25Db2x1bW4/LmJ1dHRvbk51bWJlclxyXG4gICAgICAgIDogMztcclxuICAgIGxldCBmbGFnID0gZmFsc2U7XHJcbiAgICBpZiAobnVtYmVyID09IFwiYWxsXCIpIHtcclxuICAgICAgZmxhZyA9IGZhbHNlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgZmxhZyA9IG5ld0J1dHRvbnMubGVuZ3RoID4gbnVtYmVyO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGNvbnRlbnQgPSBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGluZGV4ID4gTnVtYmVyKG51bWJlcikgLSAxKSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSxcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1pdGVtXCIpXHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgIGRhdGFbcm93UmVjb3JkLmlkXSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIHJldHVybiBuZXdCdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCByZWNvcmRTaG93LCBpY29uLCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKGZsYWcpIHtcclxuICAgICAgICBpZiAoaW5kZXggPCBudW1iZXIpIHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvci1maXJzdFwiKV06IGluZGV4ID09PSAwLFxyXG4gICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICBpY29uPXtpY29ufVxyXG4gICAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgICAgdHlwZT17XCJsaW5rXCJ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWljb25cIil9PlxyXG4gICAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoaW5kZXggPT0gbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8UG9wb3ZlclxyXG4gICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICB0cmlnZ2VyPXtbXCJjbGlja1wiXX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUucG9wb3BlbnNba2V5XSB8fCBmYWxzZX1cclxuICAgICAgICAgICAgICBvbk9wZW5DaGFuZ2U9eyhvcGVuKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICBsZXQgZGF0YSA9IHsgLi4udGhpcy5zdGF0ZS5wb3BvcGVucyB9O1xyXG4gICAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSB0cnVlO1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczogZGF0YSxcclxuICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIC8vIG92ZXJsYXlDbGFzc05hbWU9e3N0eWxlc1sncG9wJ119XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICA8YSBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIil9PlxyXG4gICAgICAgICAgICAgICAgPEVsbGlwc2lzT3V0bGluZWQgLz5cclxuICAgICAgICAgICAgICA8L2E+XHJcbiAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICBvbkNsaWNrICYmIG9uQ2xpY2socm93UmVjb3JkKTtcclxuICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgey4uLnBhcmFtc31cclxuICAgICAgICAgICAgdHlwZT1cImxpbmtcIlxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd0ljb24gIT09IGZhbHNlICYmIChcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgIHtpY29ufVxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAge2NoaWxkcmVufVxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICApO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIC8vIH1cclxuICB9XHJcbiAgLy/moJHngrnlh7vkuovku7ZcclxuICB0cmVlU2VsZWN0KHNlbGVjdGVkS2V5czogYW55LCBvYmo6IGFueSkge1xyXG4gICAgbGV0IGtleXdvcmQgPSBcIlwiO1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBzZWFyY2hLZXkgPSBcImtleVwiLFxyXG4gICAgICBzZWFyY2hGaWVsZCA9IFwiXCIsXHJcbiAgICAgIHBhcmFudFNlbGVjdCA9IHRydWUsXHJcbiAgICB9ID0gdGhpcy5wcm9wcy50cmVlUHJvcHM7XHJcbiAgICBjb25zdCB7IHRyZWVTZWxlY3RlZEtleSB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHsgc2VsZWN0ZWQsIHNlbGVjdGVkTm9kZXMgfSA9IG9iajtcclxuXHJcbiAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAga2V5d29yZCA9IHNlbGVjdGVkTm9kZXNbMF0uZGF0YXJlZi5hdHRyaWJ1dGVbc2VhcmNoS2V5XTtcclxuICAgICAgaWYgKHBhcmFudFNlbGVjdCkge1xyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBzZWxlY3RlZEtleXNbMF0sXHJcbiAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChzZWxlY3RlZE5vZGVzWzBdLmlzTGVhZiB8fCAhc2VsZWN0ZWROb2Rlc1swXS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgaWYgKHNlbGVjdGVkS2V5c1swXSAhPT0gdHJlZVNlbGVjdGVkS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgICAgIHRyZWVTZWFyY2hQcmFtczogeyBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0sXHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgdHJlZVNlbGVjdGVkS2V5OiBrZXl3b3JkLFxyXG4gICAgICAgIHRyZWVTZWFyY2hQcmFtczoge30sXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMucHJvcHMub25UcmVlU2VsZWN0KSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25UcmVlU2VsZWN0KHNlbGVjdGVkS2V5cywgb2JqKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29uc3QgZnJvbVZhbHVlID0gdGhpcy5zZWFyY2hSZWY/LmN1cnJlbnQ/LmdldFNlYXJjaFZhbHVlcygpIHx8IHt9O1xyXG4gICAgc2VhcmNoRmllbGQgJiYgdGhpcy50YWJsZUxvYWQoeyAuLi5mcm9tVmFsdWUsIFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSk7XHJcbiAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2sgJiZcclxuICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLFxyXG4gICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBzZWxlY3RlZEtleXM6IHNlbGVjdGVkS2V5cywgb2JqOiBvYmogfSxcclxuICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICk7XHJcbiAgICAvLyB1dGlscy5jYWxsYmFjayh0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy50cmVlU2VsZWN0Q2FsbEJhY2ssIHRoaXMsIFtcclxuICAgIC8vICAgc2VsZWN0ZWRLZXlzLFxyXG4gICAgLy8gICBvYmosXHJcbiAgICAvLyBdKTtcclxuICB9XHJcbiAgcmVzZXRTZWFyY2goKSB7XHJcbiAgICB0aGlzLnNlYXJjaFJlZi5jdXJyZW50Py5yZXNldEZpZWxkcygpO1xyXG4gIH1cclxuICBnZXRUZXh0KHByb3BzLCB0ZXh0KSB7XHJcbiAgICBsZXQgbmV3VGV4dCA9IHRleHQ7XHJcbiAgICBpZiAocHJvcHM/LmRhdGEgJiYgcHJvcHM/LmRhdGE/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGRhdGE/Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGRhdGFbaV0udmFsdWUgPT0gdGV4dCkge1xyXG4gICAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbmV3VGV4dDtcclxuICB9XHJcbiAgc2V0VGFibGVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIHNldFRyZWVEYXRhKGRhdGEpIHtcclxuICAgIHRoaXMudHJlZVJlZi5jdXJyZW50Py5zdG9yZT8uc2V0RGF0YShkYXRhKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRLZXkgPSAoc2VsZWN0ZWQpID0+IHtcclxuICAgIGxldCByZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGtleSBpbiBzZWxlY3RlZCkge1xyXG4gICAgICBjb25zdCBrZXlzID0gc2VsZWN0ZWRba2V5XTtcclxuICAgICAgaWYgKGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHJlcyA9IFsuLi5yZXMsIC4uLmtleXNdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gcmVzO1xyXG4gIH07XHJcblxyXG4gIGNvbnZlcnRRdWVyeVBhcmFtcygpIHtcclxuICAgIGNvbnN0IHsgcmVxdWVzdFBhcmFtcyA9IHt9IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgbGV0IHF1ZXJ5UGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLnF1ZXJ5UGFyYW1zO1xyXG4gICAgaWYgKHF1ZXJ5UGFyYW1zICYmIHR5cGVvZiBxdWVyeVBhcmFtcyA9PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fTtcclxuICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oXCJVdGlsc1wiLCBxdWVyeVBhcmFtcyk7XHJcbiAgICAgIGxldCBjb252ZXJQYXJhbXMgPSBmdW5jKFV0aWxzKTtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBjb252ZXJQYXJhbXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBxdWVyeVBhcmFtcyA9IHF1ZXJ5UGFyYW1zIHx8IHt9O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHF1ZXJ5UGFyYW1zO1xyXG4gIH1cclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjb2x1bW5zID0gW10sXHJcbiAgICAgIHNob3dTZWFyY2ggPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1QYWdlUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYnV0dG9ucyA9IFtdLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgICAgb25TaG93Rm9ybSxcclxuICAgICAgZm9ybUNoYW5nZVZhbGlkID0gdHJ1ZSxcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPSBcImJ1dHRvbVwiLFxyXG4gICAgICBhY3Rpb25Qcm9wcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcGVybWlzc2lvbiA9IHsgaGFzOiBmYWxzZSB9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRhYmxlU3RvcmUgPSB7fSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICAgIGNvbHVtbk9yZGVyID0gdHJ1ZSxcclxuICAgICAgZXhwYW5kYWJsZSA9IHt9LFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgICB0aXRsZTogdGFibGVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtc1xyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgbmV3VGFibGVTdG9yZSA9IHsgLi4udGFibGVTdG9yZSB9XHJcbiAgICBpZiAocmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcykge1xyXG4gICAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXM/LmRhdGEgfHwgcXVlcnlQYXJhbXM/LnBhcmFtcyB8fCB7fTtcclxuICAgICAgbmV3VGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnID0ge1xyXG4gICAgICAgIHBhcmFtczogeyAuLi5kYXRhLCAuLi5uZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdHJlZVN0b3JlID0ge30sXHJcbiAgICAgIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlLFxyXG4gICAgICB0aXRsZUFsaWFzID0gXCJ0aXRsZVwiLFxyXG4gICAgICB0aXRsZTogdHJlZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRyZWVQYXJhbXNcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcblxyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICBmaWx0ZXJDb2x1bW4sXHJcbiAgICAgIHN0b3JlOiB7IC4uLm5ld1RhYmxlU3RvcmUgfSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtcyxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBlbGVtZW50SGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHBlcm1pc3Npb25CdXR0b25zID0gW107XHJcbiAgICBpZiAocGVybWlzc2lvbi5oYXMgJiYgcGVybWlzc2lvbi5tZW51Q29kZSkge1xyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9ucyA9XHJcbiAgICAgICAgZ2V0QnV0dG9uUGVybWlzc29ucyhwZXJtaXNzaW9uLm1lbnVDb2RlKS5wZXJtaXNzb25zIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2JqID0gY29udmVydENvbHVtbnMoY29sdW1ucywge30pXHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gZ2V0TmV3Q29sdW1ucyhjb2x1bW5zLCB0aGlzLnByb3BzKVxyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXMgPSBvYmouc2VhcmNoRm9ybXMgfHwgW11cclxuICAgIGNvbnN0IGVkaXRvckZvcm1zID0gb2JqLmVkaXRvckZvcm1zIHx8IFtdXHJcbiAgICBjb25zdCB0b29sQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb25zdCBidXR0b25NYXAgPSB7XHJcbiAgICAgIC8vIGFkZDogeyBuYW1lOiBcIuaWsOWinlwiLCBjb2RlOiBcImFkZFwiLCBpY29uOiA8UGx1c091dGxpbmVkIC8+IH0sXHJcbiAgICAgIGVkaXRvcjogeyBuYW1lOiBcIue8lui+kVwiLCBjb2RlOiBcImVkaXRvclwiLCBpY29uOiA8RWRpdE91dGxpbmVkIC8+IH0sXHJcbiAgICAgIGRlbGV0ZTogeyBuYW1lOiBcIuWIoOmZpFwiLCBjb2RlOiBcImRlbGV0ZVwiLCBpY29uOiA8RGVsZXRlT3V0bGluZWQgLz4gfSxcclxuICAgICAgc2VhcmNoOiB7IG5hbWU6IFwi5p+l55yLXCIsIGNvZGU6IFwic2VhcmNoXCIsIGljb246IDxFeWVPdXRsaW5lZCAvPiB9LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJldHVybkJ1dHRvbiA9IChjb2RlLCBzaG93ID0gXCJcIikgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7fTtcclxuICAgICAgaWYgKHNob3cpIHtcclxuICAgICAgICBwcm9wcyA9IHsgcmVjb3JkU2hvdzogc2hvdyB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09IFwiZGVsZXRlXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJlZGl0b3JcIiAmJiBidXR0b25DbGljay5vbkVkaXRvcikge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRWRpdG9yLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IFwic2VhcmNoXCIgJiYgYnV0dG9uQ2xpY2sub25TZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vblNlYXJjaCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2FsbEJhY2sgPSBjb2RlID09IFwiZWRpdG9yXCIgPyB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkVkaXRvckNhbGxCYWNrIDogdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFja1xyXG4gICAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXtzaG93SWNvbiA/IGJ1dHRvbk1hcFtjb2RlXS5pY29uIDogbnVsbH1cclxuICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7YnV0dG9uTWFwW2NvZGVdPy5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNoZWNrUGVyc3Npb24gPSAoY29kZSkgPT4ge1xyXG4gICAgICBpZiAoIXBlcm1pc3Npb24uaGFzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25CdXR0b25zLmluZGV4T2YoY29kZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGJ1dHRvbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKChpdGVtID09IFwiYWRkXCIgfHwgaXRlbS5jb2RlID09IFwiYWRkXCIpICYmIGNoZWNrUGVyc3Npb24oXCJhZGRcIikpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSwgYnV0dG9uQ2xpY2sgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgICBpZiAoYnV0dG9uQ2xpY2s/Lm9uQWRkKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25BZGQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKG51bGwsIG51bGwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2sgJiYgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoaXRlbSA9PSBcImRlbGV0ZVwiIHx8IGl0ZW0uY29kZSA9PSBcImRlbGV0ZVwiKSAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24oXCJkZWxldGVcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChyZXR1cm5CdXR0b24oaXRlbS5jb2RlIHx8IGl0ZW0sIGl0ZW0ucmVjb3JkU2hvdykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2hlY2tQZXJzc2lvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtKSkge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICByZXR1cm5CdXR0b24oaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSwgaXRlbS5yZWNvcmRTaG93KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fCBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHwgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiYgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSkpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAocHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHwgcHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgICAgOiBcImxlZnRcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID1cclxuICAgICAgc2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgdG9vbEJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIjtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG4gICAgbGV0IHRhYmxlSGVhZGVySGVpZ2h0ID0gNTU7XHJcbiAgICBsZXQgdG9vbEhlaWdodCA9IHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcgPyA1MCA6IDA7XHJcbiAgICBsZXQgcGFkZGluZ0hlaWdodCA9IDIwICogMjsgLy/kuIrkuIvpl7Tot51cclxuICAgIGxldCB0YWJsZUNvbnRlbnRIZWlnaHQgPVxyXG4gICAgICBlbGVtZW50SGVpZ2h0IC0gdG9vbEhlaWdodCAtIHBhZGRpbmdIZWlnaHQ7XHJcbiAgICBsZXQgUGFnaW5hdGlvbkhlaWdodCA9IHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UgPyAoMzIgKyAxNikgOiAwIC8vMzIg5Li65YiG6aG15Zmo6auY5bqmLDE25Li6bWFyZ2lu6Ze06LedXHJcbiAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSB0YWJsZUhlYWRlckhlaWdodCAtIFBhZ2luYXRpb25IZWlnaHQ7XHJcbiAgICAvLyBpZiAodGFibGVQcm9wcy5wYWdpbmF0aW9uICE9PSBmYWxzZSkge1xyXG4gICAgY29uc3Qgc2Nyb2xsID0gdGFibGVQYXJhbXMuc2Nyb2xsO1xyXG4gICAgdGFibGVQYXJhbXMgPSB7XHJcbiAgICAgIC4uLnRhYmxlUGFyYW1zLFxyXG4gICAgICBzY3JvbGw6IHsgeDogXCJtYXgtY29udGVudFwiLCB5OiB0YWJsZVNyb2xsSGVpZ2h0LCAuLi5zY3JvbGwgfSxcclxuICAgIH07XHJcbiAgICAvLyB9XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICA8ZGl2XHJcbiAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlXCIpLCBjbGFzc05hbWUpfVxyXG4gICAgICAgIHJlZj17dGhpcy5wYWdlUmVmfVxyXG4gICAgICA+XHJcbiAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRpdGxlXCIpKX0+XHJcbiAgICAgICAgICAgIHt0aGlzLnByb3BzLnBhZ2VUaXRsZX1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICl9XHJcbiAgICAgICAgPGRpdlxyXG4gICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXBhbmVcIikpfVxyXG4gICAgICAgICAgc3R5bGU9e3sgZGlzcGxheTogXCJmbGV4XCIgfX1cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7c2hvd0xlZnQgJiYgKFxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWxlZnRcIil9PlxyXG4gICAgICAgICAgICAgIHt0cmVlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcInRyZWUtdGl0bGVcIil9Pnt0cmVlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJ0cmVlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudC1ub3RpdGxlXCIpXTogIXRyZWVUaXRsZSxcclxuICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxUcmVlXHJcbiAgICAgICAgICAgICAgICAgIHN0b3JlPXt7IC4uLnRyZWVTdG9yZSB9fVxyXG4gICAgICAgICAgICAgICAgICBzaG93SWNvbj17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIGNoZWNrYWJsZT17ZmFsc2V9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaGFibGU9e3RyZWVTZWFyY2h9XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VsZWN0PXt0aGlzLnRyZWVTZWxlY3QuYmluZCh0aGlzKX1cclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWRLZXlzPXtbdGhpcy5zdGF0ZS50cmVlU2VsZWN0ZWRLZXldfVxyXG4gICAgICAgICAgICAgICAgICB0aXRsZUFsaWFzPXt0aXRsZUFsaWFzfVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMudHJlZVJlZn1cclxuICAgICAgICAgICAgICAgICAgey4uLm90aGVydHJlZVBhcmFtc31cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgKX1cclxuICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXJpZ2h0XCIpLCB7XHJcbiAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1uby1sZWZ0LXJpZ2h0XCIpXTogIXNob3dMZWZ0LFxyXG4gICAgICAgICAgICB9KX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dTZWFyY2ggJiYgc2VhcmNoRm9ybXMubGVuZ3RoID4gMCAmJiAoXHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1oZWFkZXJzZWFyY2hcIil9PlxyXG4gICAgICAgICAgICAgICAgPEhlYWRlclNlYXJjaFxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3Jtcz17c2VhcmNoRm9ybXN9XHJcbiAgICAgICAgICAgICAgICAgIHRvb2xCdXR0b25Qb3NpdGlvbj17dG9vbEJ1dHRvblBvc2l0aW9ufVxyXG4gICAgICAgICAgICAgICAgICBvblNlYXJjaD17dGhpcy5vblNlYXJjaC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBvblJlc2V0PXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25SZXNldCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vblJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnJlc2V0RmllbGRzKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZUxvYWQoe30pO1xyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICByZWY9e3RoaXMuc2VhcmNoUmVmfVxyXG4gICAgICAgICAgICAgICAgICBzZWFyY2hGb3JtUHJvcHM9e3RoaXMucHJvcHMuc2VhcmNoRm9ybVByb3BzfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50XCIpLCB7XHJcbiAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtZ2FwXCIpXTogIXNlYXJjaEZsYWcsXHJcbiAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLnBhZ2VDb250ZW50UmVmfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgeyh0YWJsZVRpdGxlIHx8IHRvb2xGbGFnKSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10aXRsZVwiKSwge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGUtd2lkdGhcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICA8ZGl2Pnt0YWJsZVRpdGxlfTwvZGl2PlxyXG4gICAgICAgICAgICAgICAgICB7dG9vbEZsYWcgJiYgdGhpcy5yZW5kZXJUb29sQnV0dG9ucyh0b29sQnV0dG9ucywgdG9vbGJhckZsYWcpfVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgKX1cclxuXHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoXHJcbiAgICAgICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZVwiKSxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGFibGUtdG9wXCIpXTogIXRvb2xiYXJGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3AyXCIpXTpcclxuICAgICAgICAgICAgICAgICAgICAgIHRvb2xiYXJGbGFnICYmICF0b29sRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAvLyBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICB7LyogPGRpdj48L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybXM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICAgIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0fVxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfVxyXG4gICAgICAgICAgICAgIG9uSGlkZUZvcm09e3RoaXMucHJvcHMub25IaWRlRm9ybX1cclxuICAgICAgICAgICAgICBvbkZvcm1DaGFuZ2U9e3RoaXMucHJvcHMub25Gb3JtQ2hhbmdlfVxyXG4gICAgICAgICAgICAgIGZvcm1UeXBlPXt0aGlzLnByb3BzLmZvcm1UeXBlIHx8IFwiYXV0b1wifVxyXG4gICAgICAgICAgICAgIGNoYW5nZVZhbGlkPXtmb3JtQ2hhbmdlVmFsaWR9XHJcbiAgICAgICAgICAgICAgVXRpbHM9e3RoaXMucHJvcHMuVXRpbHN9XHJcbiAgICAgICAgICAgICAgcmVxdWVzdE9iamVjdD17e1xyXG4gICAgICAgICAgICAgICAgYWRkVXJsOiByZXF1ZXN0VXJscy5hZGRVcmwsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JVcmw6IHJlcXVlc3RVcmxzLmVkaXRvclVybCxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogcmVxdWVzdFBhcmFtcy5hZGRQYXJhbXMsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IHJlcXVlc3RQYXJhbXMuZWRpdG9yUGFyYW1zLFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZnVuY3M9e3RoaXMucHJvcHMuZnVuY3N9XHJcbiAgICAgICAgICAgICAgey4uLmZvcm1Qcm9wc31cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUNsQyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLFVBQVUsTUFBeUIsbUJBQW1CO0FBQzdELE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU8scUJBQXFCO0FBRzVCLFNBQ0VDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsWUFB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
|
|
1179
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJUYWJsZSIsIlRyZWUiLCJCdXR0b24iLCJNb2RhbCIsIlBvcG92ZXIiLCJtZXNzYWdlIiwiRWRpdG9yRm9ybSIsImNscyIsIkRvd25PdXRsaW5lZCIsIkV5ZU91dGxpbmVkIiwiRWRpdE91dGxpbmVkIiwiUmlnaHRPdXRsaW5lZCIsIlBsdXNPdXRsaW5lZCIsIkVsbGlwc2lzT3V0bGluZWQiLCJEZWxldGVPdXRsaW5lZCIsImNvbnZlckZ1bmN0aW9uIiwiZ2V0TGVzcyIsInJlcXVlc3QiLCJjb25maWciLCJnZXRTdG9yYWdlIiwiZ2V0QnV0dG9uUGVybWlzc29ucyIsIkhlYWRlclNlYXJjaCIsImNvbnZlcnRDb2x1bW5zIiwiZ2V0TmV3Q29sdW1ucyIsInN0eWxlcyIsIkJhc2VQYWdlIiwiY29uc3RydWN0b3IiLCJwcm9wcyIsIl90eXBlIiwiX3NpemUiLCJfZGVmaW5lUHJvcGVydHkiLCJjcmVhdGVSZWYiLCJjaGVja2VkVHJlZUtleXMiLCJuYW1lIiwidXNlclR5cGUiLCJhY2NvdW50Iiwic3RhdGUiLCJ2YWx1ZSIsImRlcHRJZCIsIm9uU2VhcmNoIiwic2VsZWN0ZWQiLCJyZXMiLCJrZXkiLCJrZXlzIiwibGVuZ3RoIiwidGFibGVXcmFwcGVyUmVmIiwiY3VycmVudCIsInRhYmxlSGVhZGVyIiwiZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSIsImhlYWRlckhlaWdodCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImhlaWdodCIsInRhYmxlSGVhZGVySGVpZ2h0Iiwic2V0U3RhdGUiLCJzdG9yZVByZWZpeCIsInR5cGUiLCJjb250ZW50Iiwic2l6ZSIsInNlbGVjdGVkUm93S2V5cyIsInNlbGVjdGVkUm93RGF0YXMiLCJ0cmVlU2VsZWN0ZWRLZXkiLCJleHBhbmQiLCJmb3JtVHlwZSIsInRhYmxlU2l6ZSIsInRyZWVTZWFyY2hQcmFtcyIsInBvcG9wZW5zIiwibW9yZU9wZW4iLCJlbGVtZW50SGVpZ2h0IiwicGVybWlzc2lvbkJ1dHRvbnMiLCJxdWVyeVBhcmFtcyIsImNvbXBvbmVudERpZE1vdW50IiwiX3RoaXMkcGFnZUNvbnRlbnRSZWYkIiwiaW5pdERhdGEiLCJwZXJtaXNzb24iLCJwYWdlQ29udGVudFJlZiIsImNsaWVudEhlaWdodCIsIndpbmRvdyIsImFkZEV2ZW50TGlzdGVuZXIiLCJjYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCIsInNldFRpbWVvdXQiLCJjb21wb25lbnREaWRVcGRhdGUiLCJwcmV2UHJvcHMiLCJfdGhpcyRwYWdlQ29udGVudFJlZiQyIiwiY29sdW1ucyIsImNvbXBvbmVudFdpbGxVbm1vdW50IiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInNldFNlYXJjaFBhcmFtcyIsInBhcmFtcyIsImNhbGxCYWNrIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlIiwic2VhcmNoUmVmIiwiZG9TdWJtaXQiLCJkYXRhIiwiX3RoaXMkZWRpdG9yUmVmJGN1cnJlIiwibGFiZWwiLCJhcmd1bWVudHMiLCJ1bmRlZmluZWQiLCJlZGl0b3JSZWYiLCJzaG93Rm9ybSIsIl90aGlzJGVkaXRvclJlZiIsImVkaXRvcmZsYWciLCJuZXdWYWx1ZSIsIl9vYmplY3RTcHJlYWQiLCJzaG93IiwiaGlkZUZvcm0iLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUyIiwic2V0TG9hZGluZyIsImxvYWRpbmciLCJfdGhpcyRlZGl0b3JSZWYkY3VycmUzIiwic2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU0Iiwic2V0Rm9ybVZhbHVlIiwiZ2V0RWRpdEZvcm1WYWx1ZXMiLCJfdGhpcyRlZGl0b3JSZWYkY3VycmU1IiwiZ2V0Rm9ybVZhbHVlIiwib25EZWxldGUiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4iLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW4yIiwiZGVsZXRlVXJsIiwiZGVsZXRlUGFyYW1zIiwiZGVsZXRlUG9zaXRpb24iLCJidXR0b25DbGljayIsInJlcXVlc3RQYXJhbXMiLCJyZXF1ZXN0VXJscyIsInJlcXVlc3RDb25maWciLCJfdGhpcyIsInRhYmxlUmVmIiwiZ2V0U2VsZWN0ZWRSb3dLZXlzIiwiZ2V0U2VsZWN0ZWRSb3dEYXRhcyIsInVybCIsIndhcm5pbmciLCJjb25maXJtIiwib25PayIsInBhZ2VSZWYiLCJyZWNvcmQiLCJpZHMiLCJpZCIsImZ1bmNzIiwiVXRpbHMiLCJFcnJvciIsImRhdGFQYXJhbXMiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsImRlZmF1bHRQYXJhbXMiLCJtZXRob2QiLCJhdXRvUHJlZml4Iiwiam9pbiIsImZpbmFsUGFyYW1zIiwidGhlbiIsImNvZGUiLCJfdGhpcyRzZWFyY2hSZWYiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMiLCJfdGhpcyRwcm9wcyRvbkNhbGxCYWMyIiwic3VjY2VzcyIsImdldFNlYXJjaFZhbHVlcyIsIm9uQ2FsbEJhY2tzIiwib25EZWxldGVDYWxsQmFjayIsInRhYmxlTG9hZCIsImVycm9yIiwiY2F0Y2giLCJjb25zb2xlIiwibG9nIiwiX3RhYmxlU3RvcmUkcmVxdWVzdENvIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMyIsImRlZmF1bHRSZXF1ZXN0Q29uZmlnIiwidGFibGVQcm9wcyIsInN0b3JlIiwidGFibGVTdG9yZSIsImNvbnZlcnRRdWVyeVBhcmFtcyIsInJlcXVlc3RDb25pZyIsInN0b3JlQ29uZmlnIiwic3RvcmVQYXJhbXMiLCJvdGhlclN0b3JlQ29uZmlnIiwiX2V4Y2x1ZGVkMiIsImxvYWQiLCJfdGFibGVTdG9yZSRyZXF1ZXN0Q28yIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjMyIsIm9uUXVlcnlDYWxsQmFjayIsInRhYmxlUmVsb2FkIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNCIsImF1dG9Mb2FkIiwicmVsb2FkIiwiY2FsbGJhY2siLCJfcmVzJGRhdGEiLCJyZWNvcmRzIiwiY3VycmVudFBhZ2UiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW41IiwidHJlZUxvYWQiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQiLCJ0cmVlUmVmIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuNiIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjciLCJzZXRTZWxlY3RlZFJvd0tleXMiLCJfdGhpcyR0YWJsZVJlZiRjdXJyZW44Iiwic2V0U2VsZWN0ZWRSb3dEYXRhcyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjkiLCJyZXNldFNlbGVjdGVkUm93S2V5cyIsIl90aGlzJHRhYmxlUmVmJGN1cnJlbjEwIiwiX3RoaXMkc2VhcmNoUmVmMiIsImZyb21WYWx1ZSIsImdldENoaWxkcmVuRGF0YSIsInJvd0tleSIsInJlc0tleSIsImNoaWxkTm9kZXMiLCJjaGlsZHJlbiIsIm1hcCIsIml0ZW0iLCJpbmRleCIsInJlbmRlclRvb2xCdXR0b25zIiwidG9vbGJ1dHRvbnMiLCJ0b29sYmFyRmxhZyIsImZsYWciLCJzaG93U2VhcmNoIiwiX2l0ZW0kcHJvcHMiLCJwYWdlVHlwZSIsIm9uQ2xpY2siLCJpY29uIiwiX2V4Y2x1ZGVkMyIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJfZXh0ZW5kcyIsInN0eWxlIiwibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0IiwidGl0bGUiLCJwbGFjZW1lbnQiLCJvcGVuIiwib25PcGVuQ2hhbmdlIiwicmVuZGVyQ2xvdW1uQnV0dG9uIiwiY29sdW1uQnV0dG9ucyIsInJvd1JlY29yZCIsImFjdGlvblByb3BzIiwiYmFzZUFjdGlvbkNvbHVtbiIsIm5ld0J1dHRvbnMiLCJzaG93SWNvbiIsIl9pdGVtJHByb3BzMiIsInJlY29yZFNob3ciLCJfZXhjbHVkZWQ0IiwiZXZlbnRPcHRpb24iLCJVaXRscyIsImZ1bmMiLCJGdW5jdGlvbiIsInB1c2giLCJlIiwiZXZhbCIsIm51bWJlciIsImJ1dHRvbk51bWJlciIsIl9pdGVtJHByb3BzMyIsIl9leGNsdWRlZDUiLCJOdW1iZXIiLCJfaXRlbSRwcm9wczQiLCJfZXhjbHVkZWQ2IiwidHJpZ2dlciIsInRyZWVTZWxlY3QiLCJzZWxlY3RlZEtleXMiLCJvYmoiLCJfdGhpcyRzZWFyY2hSZWYzIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzUiLCJrZXl3b3JkIiwic2VhcmNoS2V5Iiwic2VhcmNoRmllbGQiLCJwYXJhbnRTZWxlY3QiLCJ0cmVlUHJvcHMiLCJzZWxlY3RlZE5vZGVzIiwiZGF0YXJlZiIsImF0dHJpYnV0ZSIsImlzTGVhZiIsIm9uVHJlZVNlbGVjdCIsInRyZWVTZWxlY3RDYWxsQmFjayIsInJlc2V0U2VhcmNoIiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMiIsInJlc2V0RmllbGRzIiwiZ2V0VGV4dCIsInRleHQiLCJfcHJvcHMkZGF0YSIsIm5ld1RleHQiLCJpIiwic2V0VGFibGVEYXRhIiwiX3RoaXMkdGFibGVSZWYkY3VycmVuMTEiLCJzZXREYXRhIiwic2V0VHJlZURhdGEiLCJfdGhpcyR0cmVlUmVmJGN1cnJlbnQyIiwiY29udmVyUGFyYW1zIiwicmVuZGVyIiwiX3RoaXMyIiwiX3RhYmxlUHJvcHMkdG9vbGJhciIsIl90YWJsZVByb3BzJHRvb2xiYXIyIiwic3VibWl0VXJsIiwiZm9ybVByb3BzIiwiZm9ybVBhZ2VQcm9wcyIsInNob3dMZWZ0Iiwic3VibWl0UGFyYW1zIiwic2hvd1Rvb2xCdXR0b24iLCJidXR0b25zIiwiZWRpdG9yRm9ybSIsIm9uU2hvd0Zvcm0iLCJmb3JtQ2hhbmdlVmFsaWQiLCJ0b29sQnV0dG9uUG9zaXRpb24iLCJwZXJtaXNzaW9uIiwiaGFzIiwiZmlsdGVyQ29sdW1uIiwiYWN0aW9uQ29sdW1uIiwic2hvd1Jvd1NlbGVjdGlvbiIsImNvbHVtbk9yZGVyIiwiZXhwYW5kYWJsZSIsInRhYmxlVGl0bGUiLCJvdGhlcnRhYmxlUGFyYW1zIiwiX2V4Y2x1ZGVkNyIsIm5ld1RhYmxlU3RvcmUiLCJfbmV3VGFibGVTdG9yZSRyZXF1ZXMiLCJ0cmVlU3RvcmUiLCJ0cmVlU2VhcmNoIiwidGl0bGVBbGlhcyIsInRyZWVUaXRsZSIsIm90aGVydHJlZVBhcmFtcyIsIl9leGNsdWRlZDgiLCJ0YWJsZVBhcmFtcyIsImRlZmF1bHRWYWx1ZSIsIm1lbnVDb2RlIiwicGVybWlzc29ucyIsInRhYmxlQ29sdW1uIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsInRvb2xCdXR0b25zIiwiYnV0dG9uTWFwIiwiZWRpdG9yIiwiZGVsZXRlIiwic2VhcmNoIiwicmV0dXJuQnV0dG9uIiwiX2J1dHRvbk1hcCRjb2RlIiwib25FZGl0b3IiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEiLCJfdGhpczIkcHJvcHMkb25DYWxsQmEyIiwib25FZGl0b3JDYWxsQmFjayIsIm9uU2VhcmNoQ2FsbEJhY2siLCJjaGVja1BlcnNzaW9uIiwiaW5kZXhPZiIsIm9uQWRkIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjNiIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzciLCJvbkFkZENhbGxCYWNrIiwiYmluZCIsImRhbmdlciIsIkFycmF5IiwiaXNBcnJheSIsImNoaWxkIiwiX2NoaWxkJHByb3BzIiwiX2NoaWxkJHByb3BzMiIsIl9jaGlsZCRwcm9wczMiLCJfY2hpbGQkcHJvcHM0IiwiX2NoaWxkJHByb3BzNSIsIl9pdGVtJHByb3BzNSIsIl9pdGVtJHByb3BzNiIsIl9pdGVtJHByb3BzNyIsIl9pdGVtJHByb3BzOCIsIl9pdGVtJHByb3BzOSIsImRhdGFJbmRleCIsImFsaWduIiwidGV4dEFsaWduIiwid2lkdGgiLCJmaXhlZCIsInJlYWNvcmQiLCJGcmFnbWVudCIsInNlYXJjaEZsYWciLCJ0YWJsZVRvb2wiLCJ0b29sRmxhZyIsInRvb2xiYXIiLCJ0b29scyIsInRvb2xIZWlnaHQiLCJwYWRkaW5nSGVpZ2h0IiwidGFibGVDb250ZW50SGVpZ2h0IiwiUGFnaW5hdGlvbkhlaWdodCIsInBhZ2luYXRpb24iLCJ0YWJsZUhlaWdodCIsInRhYmxlU3JvbGxIZWlnaHQiLCJzY3JvbGwiLCJ4IiwieSIsInJlZiIsInBhZ2VUaXRsZSIsImRpc3BsYXkiLCJjaGVja2FibGUiLCJzZWFyY2hhYmxlIiwib25TZWxlY3QiLCJvblJlc2V0IiwiX3RoaXMkc2VhcmNoUmVmJGN1cnJlMyIsInNlYXJjaEZvcm1Qcm9wcyIsImV4cGFuZEljb24iLCJfcmVmIiwiX3JlY29yZCRjaGlsZE5vZGVzIiwiX3JlY29yZCRjaGlsZE5vZGVzMiIsImV4cGFuZGVkIiwib25FeHBhbmQiLCJvbkNoYW5nZSIsIm9uVG9vbENsaWNrIiwib25SZWZyZXNoIiwiX3RoaXMkcHJvcHMkb25DYWxsQmFjOCIsIl90aGlzJHByb3BzJG9uQ2FsbEJhYzkiLCJvblN1bWJpdENhbGxCYWNrIiwiZm9ybXMiLCJvblN1Ym1pdCIsIm9uSGlkZUZvcm0iLCJvbkZvcm1DaGFuZ2UiLCJjaGFuZ2VWYWxpZCIsInJlcXVlc3RPYmplY3QiLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9wYWdlL0Jhc2VQYWdlL2luZGV4LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgUHVyZUNvbXBvbmVudCwgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBUYWJsZSBmcm9tIFwiLi4vLi4vYmFzZS90YWJsZVwiO1xyXG5pbXBvcnQgVHJlZSBmcm9tIFwiLi4vLi4vYmFzZS90cmVlXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBNb2RhbCBmcm9tIFwiLi4vLi4vYmFzZS9tb2RhbFwiO1xyXG5pbXBvcnQgUG9wb3ZlciBmcm9tIFwiLi4vLi4vYmFzZS9wb3BvdmVyXCI7XHJcbmltcG9ydCBtZXNzYWdlIGZyb20gXCIuLi8uLi9iYXNlL21lc3NhZ2VcIjtcclxuaW1wb3J0IEVkaXRvckZvcm0sIHsgRm9ybVBhZ2VQcm9wcyB9IGZyb20gXCIuLi9Gb3JtUGFnZS9pbmRleFwiO1xyXG5pbXBvcnQgY2xzIGZyb20gXCJjbGFzc25hbWVzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IFN0b3JlLCB7IFBhZ2VTdG9yZSwgU3RvcmVQcm9wcyB9IGZyb20gXCJAYmotbnNjL21zblwiO1xyXG5pbXBvcnQgeyB1dGlscyB9IGZyb20gXCJAYmotbnNjL21zbi9saWIvdXRpbHNcIjtcclxuaW1wb3J0IHtcclxuICBEb3duT3V0bGluZWQsXHJcbiAgRXllT3V0bGluZWQsXHJcbiAgRWRpdE91dGxpbmVkLFxyXG4gIFJpZ2h0T3V0bGluZWQsXHJcbiAgUGx1c091dGxpbmVkLFxyXG4gIEVsbGlwc2lzT3V0bGluZWQsXHJcbiAgRGVsZXRlT3V0bGluZWQsXHJcbn0gZnJvbSBcIkBhbnQtZGVzaWduL2ljb25zXCI7XHJcbmltcG9ydCB7IGNvbnZlckZ1bmN0aW9uLCBnZXRMZXNzLCBnZXROb2RlIH0gZnJvbSBcIi4uLy4uL3V0aWxzXCI7XHJcbmltcG9ydCByZXF1ZXN0IGZyb20gXCJuc2MtcmVxdWVzdFwiO1xyXG5pbXBvcnQgY29uZmlnIGZyb20gXCIuLi8uLi9jb25maWdcIjtcclxuaW1wb3J0IHsgZ2V0U3RvcmFnZSwgcHgydncsIGdldEJ1dHRvblBlcm1pc3NvbnMgfSBmcm9tIFwiQGJqLW5zYy9mdW5jdGlvbnNcIjtcclxuaW1wb3J0IEhlYWRlclNlYXJjaCBmcm9tIFwiLi4vSGVhZGVyU2VhcmNoXCI7XHJcbmltcG9ydCB7IFBhZ2luYXRpb25Qcm9wcyB9IGZyb20gXCJhbnRkXCI7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gXCJuc2MtZmlsZVwiO1xyXG5pbXBvcnQgeyBjb252ZXJ0Q29sdW1ucywgZ2V0TmV3Q29sdW1ucyB9IGZyb20gXCIuL3V0aWxzXCI7XHJcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xyXG5cclxudHlwZSBCdXR0b25JdGVtID0gc3RyaW5nIHwge1xyXG4gIGNvZGU6IHN0cmluZztcclxuICByZWNvcmRTaG93Pzogc3RyaW5nIHwgRnVuY3Rpb247XHJcbn1cclxuXHJcbmludGVyZmFjZSBUYWJsZVByb3BzIHtcclxuICBhY3Rpb25Db2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaTjeS9nOWIl1xyXG4gIHN0b3JlPzogU3RvcmVQcm9wcztcclxuICBmaWx0ZXJDb2x1bW4/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuui/h+a7pOaMiemSrlxyXG4gIHNob3dSb3dTZWxlY3Rpb24/OiBib29sZWFuOyAvL+aYr+WQpuihqOagvOWLvumAieWIl1xyXG4gIHBhZ2luYXRpb24/OiBib29sZWFuIHwgUGFnaW5hdGlvblByb3BzOyAvL+aYr+WQpuaYvuekuuWIhumhtVxyXG4gIGNvbHVtbk9yZGVyPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrooajmoLzluo/liJdcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY29uc3Qgc3R5bGVzID0gbnVsbDtcclxuaW50ZXJmYWNlIFRyZWVQcm9wcyB7XHJcbiAgc3RvcmU/OiBTdG9yZVByb3BzO1xyXG4gIHNob3dTZWFyY2g/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuaQnOe0ouahhlxyXG4gIHNlYXJjaEtleT86IHN0cmluZzsgLy/mkJzntKJ2YWx1ZeWvueW6lOeahGtleVxyXG4gIHNlYXJjaEZpZWxkPzogc3RyaW5nOyAvL+afpeivouWvueW6lOeahGtleVxyXG4gIHRpdGxlQWxpYXM/OiBzdHJpbmc7IC8v5qCRdGl0bGXlr7nlupTnmoRrZXks6buY6K6kdGl0bGVcclxuICBub2RlUG9ycHM/OiBvYmplY3Q7XHJcbiAgcGFyYW50U2VsZWN0PzogYm9vbGVhbjtcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuaW50ZXJmYWNlIEZvcm1Qcm9wcyBleHRlbmRzIEZvcm1QYWdlUHJvcHMgeyB9XHJcbmludGVyZmFjZSBOU0NCYXNlQmFnZVByb3BzIHtcclxuICBzaG93U2VhcmNoPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrlpLTpg6jmkJzntKLmoI9cclxuICB0YWJsZVByb3BzPzogVGFibGVQcm9wczsgLy/ooajmoLzlj4LmlbBcclxuICB0cmVlUHJvcHM/OiBUcmVlUHJvcHM7IC8v5bem5L6n5qCR5Y+C5pWwXHJcbiAgc3VibWl0UGFyYW1zPzogT2JqZWN0OyAvL+a3u+WKoOWPguaVsO+8jOm7mOiupG1vdGhvZDpwb3N077yMIOWPguaVsOmAmui/h2RhdGHkvKDpgJJcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGNvbHVtbnM6IEFycmF5PE9iamVjdD47XHJcbiAgc2hvd0xlZnQ/OiBib29sZWFuOyAvL+aYr+WQpuaYvuekuuW3puS+p+ebruW9leagkVxyXG4gIHNob3dUb29sQnV0dG9uPzogYm9vbGVhbjsgLy/mmK/lkKbmmL7npLrmjInpkq7moI9cclxuICBlZGl0b3JGb3JtPzogYm9vbGVhbjsgLy/mmK/lkKbpnIDopoHooajljZXlip/og70gLCDkuLpmYWxzZSDnvJbovpHvvIzmn6XnnIvvvIzmlrDlop7lip/og73lnYfkuI3lj6/nlKhcclxuICBkZWxldGVVcmw/OiBzdHJpbmc7IC8v5Yig6ZmkdXJsXHJcbiAgb25EZWxldGU/OiAoc2VsZWN0ZWRLZXlzPzogQXJyYXk8c3RyaW5nPikgPT4gdm9pZDsgLy/liKDpmaTlj4LmlbDvvIzpu5jorqRtb3Rob2Q6cG9zdO+8jCDlj4LmlbDpgJrov4dpZHPmi7zmjqXkvKDpgJLnu5nlkI7lj7BcclxuICBkZWxldGVQb3NpdGlvbj86IFwidG9vbGJhclwiIHwgXCJyb3dcIjtcclxuICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25TZWFyY2g/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgb25SZXNldD86ICgpID0+IHZvaWQ7XHJcbiAgaW5pdERhdGE/OiBhbnk7IC8v5Yid5aeL5YyW5Zue6LCD5Ye95pWw77yM5ZyoY29tcG9uZW50RGlkTW91bnTkuK3osIPnlKhcclxuICBidXR0b25zPzogQnV0dG9uSXRlbVtdOyAvL+aMiemSrumbhuWQiCAgWydhZGQnLCdkZWxldGUnLCdzZWFyY2gnLCdlZGl0b3InXVxyXG4gIG9uU2hvd0Zvcm0/OiAodmFsdWU/OiBhbnksIGVkaXRvckZsYWc/OiBzdHJpbmcpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25IaWRlRm9ybT86ICgpID0+IHZvaWQ7IC8v5omT5byA6KGo5Y2V5Zue6LCDXHJcbiAgb25Gb3JtQ2hhbmdlPzogKGNoYW5nZWRWYWx1ZXM/OiBhbnksIGFsbFZhbHVlcz86IGFueSkgPT4gdm9pZDsgLy/ooajljZVvbkNoYW5nZeWbnuiwg1xyXG4gIGZvcm1UeXBlPzogXCJtb2RhbFwiIHwgXCJkcmF3ZXJcIjtcclxuICBmb3JtQ2hhbmdlVmFsaWQ/OiBib29sZWFuOyAvL+ihqOWNleagoemqjFxyXG4gIGNsYXNzTmFtZT86IGFueTtcclxuICB0b29sQnV0dG9uUG9zaXRpb24/OiBcInJpZ2h0XCIgfCBcImJ1dHRvbVwiO1xyXG4gIHBhZ2VUaXRsZT86IHN0cmluZyB8IFJlYWN0Tm9kZTtcclxuICBmb3JtUHJvcHM/OiBGb3JtUHJvcHM7XHJcbiAgYWN0aW9uUHJvcHM/OiB7XHJcbiAgICB0ZXh0QWxpZ24/OiBzdHJpbmc7XHJcbiAgICBzaG93SWNvbj86IGJvb2xlYW47XHJcbiAgICB3aWR0aD86IG51bWJlcjtcclxuICAgIGJ1dHRvbk51bWJlcj86IG51bWJlciB8IFwiYWxsXCI7XHJcbiAgfTtcclxuICBzZWFyY2hGb3JtUHJvcHM/OiB7IHdyYXBwZXJDb2w/OiBhbnk7IGxhYmVsQ29sPzogYW55IH07XHJcbiAgb25UcmVlU2VsZWN0PzogKHZhbHVlPzogYW55LCBlZGl0b3JGbGFnPzogc3RyaW5nKSA9PiB2b2lkOyAvL+aJk+W8gOihqOWNleWbnuiwg1xyXG4gIG9uQ2FsbEJhY2tzPzoge1xyXG4gICAgdHJlZVNlbGVjdENhbGxCYWNrPzogYW55OyAvL+agkeeCueWHu+afpeivouWQjuWbnuiwg1xyXG4gICAgb25RdWVyeUNhbGxCYWNrPzogYW55OyAvL+afpeivouWbnuiwg++8jOafpeivouaVsOaNruWQjuWbnuiwg1xyXG4gICAgb25TdW1iaXRDYWxsQmFjaz86IGFueTsgLy/kv53lrZjlm57osIPvvIzkv53lrZjmlbDmja7miJDlip/lkI7lm57osINcclxuICAgIG9uRGVsZXRlQ2FsbEJhY2s/OiBhbnk7IC8v5Yig6Zmk5oyJ6ZKu5Zue6LCD77yM5Yig6Zmk5pWw5o2u5ZCO5omn6KGMXHJcbiAgICBvbkVkaXRvckNhbGxCYWNrPzogYW55OyAvL+e8lui+keaMiemSruWbnuiwg++8jOaJk+W8gOW8ueahhuWQjuaJp+ihjFxyXG4gICAgb25BZGRDYWxsQmFjaz86IGFueTsgLy/mt7vliqDmjInpkq7lm57osIPvvIzmiZPlvIDlvLnmoYblkI7miafooYxcclxuICAgIG9uU2VhcmNoQ2FsbEJhY2s/OiBhbnk7IC8v5YiX6KGo5p+l6K+i5oyJ6ZKu5Zue6LCD77yM5omT5byA5by55qGG5ZCO5omn6KGMXHJcbiAgfTtcclxuICBwYWdlVHlwZT86IFwibm9ybWFsXCIgfCBcInRhYnNwYWdlXCI7XHJcbiAgZm9ybVBhZ2VQcm9wcz86IHt9O1xyXG4gIGJ1dHRvbkNsaWNrPzoge1xyXG4gICAgb25BZGQ/OiAoKSA9PiB2b2lkO1xyXG4gICAgb25FZGl0b3I/OiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICBvblNlYXJjaD86ICh2YWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICAgIG9uRGVsZXRlPzogKHZhbHVlPzogYW55KSA9PiB2b2lkO1xyXG4gIH07XHJcbiAgcGVybWlzc2lvbj86IHtcclxuICAgIGhhcz86IGJvb2xlYW47XHJcbiAgICBtZW51Q29kZT86IHN0cmluZztcclxuICB9O1xyXG4gIHJlcXVlc3RQYXJhbXM/OiB7XHJcbiAgICAvL+mcgOimgemineWkluS8oOeahOWbuuWumuivt+axguWPguaVsFxyXG4gICAgYWRkUGFyYW1zPzogT2JqZWN0OyAvL+aWsOWinuWbuuWumuWPguaVsFxyXG4gICAgZWRpdG9yUGFyYW1zPzogT2JqZWN0OyAvL+e8lui+keWbuuWumuWPguaVsFxyXG4gICAgcXVlcnlQYXJhbXM/OiBPYmplY3Q7IC8v5p+l6K+i5Zu65a6a5Y+C5pWwXHJcbiAgICBkZWxldGVQYXJhbXM/OiBPYmplY3Q7IC8v5Yig6Zmk5Zu65a6a5Y+C5pWwXHJcbiAgfTtcclxuICByZXF1ZXN0VXJscz86IHtcclxuICAgIGFkZFVybD86IHN0cmluZzsgLy/mlrDlop51cmxcclxuICAgIGVkaXRvclVybD86IHN0cmluZzsgLy/nvJbovpF1cmxcclxuICAgIGRlbGV0ZVVybD86IHN0cmluZzsgLy/liKDpmaR1cmxcclxuICB9O1xyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHJlcXVlc3RDb25maWc/OiBhbnk7XHJcbiAgW3Byb3BzTmFtZTogc3RyaW5nXTogYW55O1xyXG59XHJcblxyXG5jbGFzcyBCYXNlUGFnZSBleHRlbmRzIFB1cmVDb21wb25lbnQ8TlNDQmFzZUJhZ2VQcm9wcywgYW55PiB7XHJcbiAgdGFibGVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHRyZWVSZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHNlYXJjaFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZWRpdG9yUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlUmVmID0gUmVhY3QuY3JlYXRlUmVmPGFueT4oKTtcclxuICBwYWdlQ29udGVudFJlZiA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KCk7XHJcbiAgZGF0ZUZvcm1hdCA9IHt9IGFzIGFueTtcclxuICB0YWJsZVdyYXBwZXJSZWYgPSBSZWFjdC5jcmVhdGVSZWY8SFRNTERpdkVsZW1lbnQ+KCk7XHJcbiAgY29uc3RydWN0b3IocHJvcHM6IGFueSkge1xyXG4gICAgc3VwZXIocHJvcHMpO1xyXG4gICAgbGV0IHsgc3RvcmVQcmVmaXggfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHR5cGUgPSBnZXRTdG9yYWdlKFxyXG4gICAgICBzdG9yZVByZWZpeCA/IHN0b3JlUHJlZml4ICsgXCItXCIgKyBcImZvcm1UeXBlXCIgOiBcImZvcm1UeXBlXCJcclxuICAgICk7XHJcbiAgICB0eXBlID0gdHlwZT8uY29udGVudDtcclxuICAgIGxldCBzaXplID0gZ2V0U3RvcmFnZShcclxuICAgICAgc3RvcmVQcmVmaXggPyBzdG9yZVByZWZpeCArIFwiLVwiICsgXCJ0YWJsZVNpemVcIiA6IFwidGFibGVTaXplXCJcclxuICAgICk7XHJcbiAgICBzaXplID0gc2l6ZT8uY29udGVudDtcclxuICAgIHRoaXMuc3RhdGUgPSB7XHJcbiAgICAgIHR5cGU6IFwiYWRkXCIsXHJcbiAgICAgIHNlbGVjdGVkUm93S2V5czogW10sXHJcbiAgICAgIHNlbGVjdGVkUm93RGF0YXM6IFtdLFxyXG4gICAgICB0cmVlU2VsZWN0ZWRLZXk6IFwiXCIsXHJcbiAgICAgIGV4cGFuZDogZmFsc2UsXHJcbiAgICAgIGZvcm1UeXBlOiB0eXBlIHx8IFwibW9kYWxcIixcclxuICAgICAgdGFibGVTaXplOiBzaXplIHx8IFwiZGVmYXVsdFwiLFxyXG4gICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICBwb3BvcGVuczoge30sXHJcbiAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgZWxlbWVudEhlaWdodDogMCxcclxuICAgICAgcGVybWlzc2lvbkJ1dHRvbnM6IFtdLFxyXG4gICAgICBxdWVyeVBhcmFtczoge30sXHJcbiAgICAgIHRhYmxlSGVhZGVySGVpZ2h0OiAwICAvLyDmt7vliqDooajlpLTpq5jluqbliLBzdGF0ZVxyXG4gICAgfTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XHJcbiAgICBjb25zdCB7IGluaXREYXRhLCBwZXJtaXNzb24gPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IGVsZW1lbnRIZWlnaHQgPSB0aGlzLnBhZ2VDb250ZW50UmVmLmN1cnJlbnQ/LmNsaWVudEhlaWdodDtcclxuICAgIFxyXG4gICAgLy8g5re75Yqg56qX5Y+jcmVzaXpl55uR5ZCsXHJcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgdGhpcy5jYWxjdWxhdGVUYWJsZUhlYWRlckhlaWdodCk7XHJcbiAgICBcclxuICAgIC8vIOWIneWni+iuoeeul+ihqOWktOmrmOW6plxyXG4gICAgc2V0VGltZW91dCh0aGlzLmNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0LCAwKTtcclxuXHJcbiAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgZWxlbWVudEhlaWdodCxcclxuICAgIH0pO1xyXG4gICAgaW5pdERhdGEgJiYgaW5pdERhdGEoKTtcclxuICB9XHJcbiAgY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xyXG4gICAgLy8g5b2TY29sdW1uc+aUueWPmOaXtumHjeaWsOiuoeeul+ihqOWktOmrmOW6plxyXG4gICAgaWYgKHByZXZQcm9wcy5jb2x1bW5zICE9PSB0aGlzLnByb3BzLmNvbHVtbnMpIHtcclxuICAgICAgc2V0VGltZW91dCh0aGlzLmNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0LCAwKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBlbGVtZW50SGVpZ2h0ID0gdGhpcy5wYWdlQ29udGVudFJlZi5jdXJyZW50Py5jbGllbnRIZWlnaHQ7XHJcbiAgICBpZiAoZWxlbWVudEhlaWdodCA+IHRoaXMuc3RhdGUuZWxlbWVudEhlaWdodCkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICBlbGVtZW50SGVpZ2h0LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgY29tcG9uZW50V2lsbFVubW91bnQoKSB7XHJcbiAgICAvLyDnp7vpmaRyZXNpemXnm5HlkKxcclxuICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB0aGlzLmNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0KTtcclxuICB9XHJcbiAgc2V0U2VhcmNoUGFyYW1zKHBhcmFtcywgY2FsbEJhY2spIHtcclxuICAgIHRoaXMuc2VhcmNoUmVmLmN1cnJlbnQ/LnNldFNlYXJjaFBhcmFtcyhwYXJhbXMpO1xyXG4gICAgY2FsbEJhY2sgJiYgY2FsbEJhY2socGFyYW1zKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZGF0YSwgbGFiZWwgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5kb1N1Ym1pdChkYXRhLCBsYWJlbCk7XHJcbiAgfVxyXG5cclxuICBvblNlbGVjdCA9IChjaGVja2VkVHJlZUtleXM6IGFueSkgPT4ge1xyXG4gICAgY29uc3QgeyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCB9ID0gdGhpcy5zdGF0ZTtcclxuICAgIGNvbnN0IHZhbHVlID0geyBuYW1lLCB1c2VyVHlwZSwgYWNjb3VudCwgZGVwdElkOiBjaGVja2VkVHJlZUtleXNbMF0gfTtcclxuICAgIGlmICh0aGlzLnByb3BzLm9uU2VhcmNoKSB7XHJcbiAgICAgIHRoaXMucHJvcHMub25TZWFyY2godmFsdWUpO1xyXG4gICAgfVxyXG4gICAgLy8gdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gIH07XHJcblxyXG4gIC8v5pi+56S66KGo5Y2VXHJcbiAgc2hvd0Zvcm0odmFsdWU/OiBhbnksIGVkaXRvcmZsYWcgPSBcImFkZFwiLCBjYWxsQmFjaz86IGFueSkge1xyXG4gICAgbGV0IG5ld1ZhbHVlID0gdmFsdWUgPyB7IC4uLnZhbHVlIH0gOiBudWxsO1xyXG4gICAgdGhpcy5lZGl0b3JSZWY/LmN1cnJlbnQ/LnNob3cobmV3VmFsdWUsIGVkaXRvcmZsYWcsIGNhbGxCYWNrKTtcclxuICB9XHJcblxyXG4gIC8v5YWz6Zet6KGo5Y2VXHJcbiAgaGlkZUZvcm0oKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuXHJcbiAgc2V0TG9hZGluZyhsb2FkaW5nOiBib29sZWFuKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRMb2FkaW5nKGxvYWRpbmcpO1xyXG4gIH1cclxuXHJcbiAgc2V0RWRpdEZvcm1WYWx1ZXModmFsdWUsIHR5cGUgPSBcIue8lui+kVwiKSB7XHJcbiAgICB0aGlzLmVkaXRvclJlZi5jdXJyZW50Py5zZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gIH1cclxuXHJcbiAgZ2V0RWRpdEZvcm1WYWx1ZXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5lZGl0b3JSZWYuY3VycmVudD8uZ2V0Rm9ybVZhbHVlKCk7XHJcbiAgfVxyXG5cclxuICAvL+aJuemHj+WIoOmZpFxyXG4gIG9uRGVsZXRlKGRhdGE/OiBhbnkpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgZGVsZXRlVXJsLFxyXG4gICAgICBvbkRlbGV0ZSxcclxuICAgICAgZGVsZXRlUGFyYW1zID0ge30sXHJcbiAgICAgIGRlbGV0ZVBvc2l0aW9uID0gXCJ0b29sYmFyXCIsXHJcbiAgICAgIGJ1dHRvbkNsaWNrID0ge30sXHJcbiAgICAgIHJlcXVlc3RQYXJhbXMgPSB7fSxcclxuICAgICAgcmVxdWVzdFVybHMgPSB7fSxcclxuICAgICAgcmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBsZXQgX3RoaXMgPSB0aGlzO1xyXG4gICAgY29uc3Qgc2VsZWN0ZWRSb3dLZXlzID0gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICAgIGNvbnN0IHNlbGVjdGVkUm93RGF0YXMgPSB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICAgIGxldCB1cmwgPSByZXF1ZXN0VXJscy5kZWxldGVVcmwgPyByZXF1ZXN0VXJscy5kZWxldGVVcmwgOiBkZWxldGVVcmw7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSByZXF1ZXN0UGFyYW1zLmRlbGV0ZVBhcmFtc1xyXG4gICAgICA/IHJlcXVlc3RQYXJhbXMuZGVsZXRlUGFyYW1zXHJcbiAgICAgIDogZGVsZXRlUGFyYW1zO1xyXG4gICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgIGlmIChzZWxlY3RlZFJvd0tleXMubGVuZ3RoID09IDApIHtcclxuICAgICAgICBtZXNzYWdlLndhcm5pbmcoXCLor7fpgInmi6nopoHliKDpmaTnmoTmlbDmja7vvIFcIik7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBNb2RhbC5jb25maXJtKHtcclxuICAgICAgY29udGVudDogXCLmmK/lkKbnoa7orqTliKDpmaTmiYDpgInpobnvvJ9cIixcclxuICAgICAgLy8gY2VudGVyZWQ6dHJ1ZSxcclxuICAgICAgb25PazogKCkgPT4ge1xyXG4gICAgICAgIGlmIChidXR0b25DbGljay5vbkRlbGV0ZSkge1xyXG4gICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRGVsZXRlLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgIHJlY29yZDogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0RhdGFzIDogZGF0YSxcclxuICAgICAgICAgICAgICBpZHM6IGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiID8gc2VsZWN0ZWRSb3dLZXlzIDogZGF0YT8uaWQsXHJcbiAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICk7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChvbkRlbGV0ZSkge1xyXG4gICAgICAgICAgb25EZWxldGUgJiZcclxuICAgICAgICAgICAgb25EZWxldGUoZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMgOiBkYXRhKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKCF1cmwpIHtcclxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcInVybOS4jeiDveS4uuepuu+8gVwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgeyBkYXRhOiBkYXRhUGFyYW1zID0ge30sIC4uLm90aGVyUGFyYW1zIH0gPSBwYXJhbXM7XHJcbiAgICAgICAgY29uc3QgZGVmYXVsdFBhcmFtcyA9IHtcclxuICAgICAgICAgIG1ldGhvZDogXCJwb3N0XCIsXHJcbiAgICAgICAgICBhdXRvUHJlZml4OiB0cnVlLFxyXG4gICAgICAgICAgcGFyYW1zOiB7XHJcbiAgICAgICAgICAgIGlkczogZGVsZXRlUG9zaXRpb24gPT0gXCJ0b29sYmFyXCIgPyBzZWxlY3RlZFJvd0tleXMuam9pbigpIDogZGF0YS5pZCxcclxuICAgICAgICAgICAgLi4uZGF0YVBhcmFtcyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgbGV0IGZpbmFsUGFyYW1zID0ge30gYXMgYW55O1xyXG4gICAgICAgIGZpbmFsUGFyYW1zID0geyAuLi5kZWZhdWx0UGFyYW1zLCAuLi5vdGhlclBhcmFtcyB9O1xyXG4gICAgICAgIHJlcXVlc3QodXJsLCB7XHJcbiAgICAgICAgICAuLi5maW5hbFBhcmFtcyxcclxuICAgICAgICB9KVxyXG4gICAgICAgICAgLnRoZW4oZnVuY3Rpb24gKHJlczogYW55KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHsgY29kZSB9ID0gcmVzO1xyXG4gICAgICAgICAgICBpZiAoY29kZSA9PT0gMjAwKSB7XHJcbiAgICAgICAgICAgICAgbWVzc2FnZS5zdWNjZXNzKFwi5Yig6Zmk5oiQ5Yqf77yBXCIpO1xyXG4gICAgICAgICAgICAgIGxldCB2YWx1ZSA9IF90aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICAgICAgICAgICAgX3RoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uRGVsZXRlQ2FsbEJhY2sgJiZcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBfdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25EZWxldGVDYWxsQmFjayxcclxuICAgICAgICAgICAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYgfSxcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICBfdGhpcy50YWJsZUxvYWQodmFsdWUpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoXCLliKDpmaTlpLHotKXvvIFcIik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24gKGVycm9yOiBhbnkpIHtcclxuICAgICAgICAgICAgY29uc29sZS5sb2coXCJlcnJvclwiLCBlcnJvcik7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0YWJsZUxvYWQocGFyYW1zOiBhbnksIHJlcXVlc3RDb25maWcgPSB7fSkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICByZXF1ZXN0Q29uZmlnOiBkZWZhdWx0UmVxdWVzdENvbmZpZyA9IHt9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKVxyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25pZzogc3RvcmVDb25maWcgPSB7fSB9ID0gdGFibGVTdG9yZTtcclxuICAgIGNvbnN0IHsgcGFyYW1zOiBzdG9yZVBhcmFtcyA9IHt9LCAuLi5vdGhlclN0b3JlQ29uZmlnIH0gPSBzdG9yZUNvbmZpZztcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5vdGhlclN0b3JlQ29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHsgLi4uc3RvcmVQYXJhbXMsIC4uLmZpbmFsUGFyYW1zIH0sXHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/mn6Xor6JcclxuICBvblNlYXJjaChwYXJhbXMpIHtcclxuICAgIGNvbnN0IHtcclxuICAgICAgb25TZWFyY2gsXHJcbiAgICAgIG9uQ2FsbEJhY2tzLFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHRhYmxlUHJvcHMgPSB7fSxcclxuICAgIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBzdG9yZTogdGFibGVTdG9yZSB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gdGhpcy5jb252ZXJ0UXVlcnlQYXJhbXMoKVxyXG4gICAgbGV0IGRhdGEgPSBxdWVyeVBhcmFtcy5kYXRhIHx8IHF1ZXJ5UGFyYW1zLnBhcmFtcyB8fCB7fTtcclxuICAgIGxldCBmaW5hbFBhcmFtcyA9IHtcclxuICAgICAgLi4uZGF0YSxcclxuICAgICAgLi4udGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnPy5wYXJhbXMsXHJcbiAgICAgIC4uLnBhcmFtcyxcclxuICAgIH07XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goZmluYWxQYXJhbXMpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAob25TZWFyY2gpIHtcclxuICAgICAgb25TZWFyY2goeyAuLi5maW5hbFBhcmFtcywgLi4udGhpcy5zdGF0ZS50cmVlU2VhcmNoUHJhbXMgfSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIHRoaXMudGFibGVMb2FkKHsgLi4uZmluYWxQYXJhbXMsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH0pO1xyXG4gICAgb25DYWxsQmFja3M/Lm9uUXVlcnlDYWxsQmFjayAmJlxyXG4gICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblF1ZXJ5Q2FsbEJhY2ssXHJcbiAgICAgICAgeyBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsIHBhcmFtczogcGFyYW1zIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gIH1cclxuICAvL+ihqOagvOmHjeaWsOWKoOi9vVxyXG4gIHRhYmxlUmVsb2FkKHBhcmFtcyA9IHt9LCBhdXRvTG9hZCA9IHRydWUpIHtcclxuICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgIGNhbGxiYWNrOiAocmVzKSA9PiB7XHJcbiAgICAgICAgaWYgKFxyXG4gICAgICAgICAgYXV0b0xvYWQgJiZcclxuICAgICAgICAgIHJlcz8uZGF0YT8ucmVjb3Jkcz8ubGVuZ3RoID09IDAgJiZcclxuICAgICAgICAgIHRoaXMuc3RhdGUuY3VycmVudFBhZ2UgIT09IDFcclxuICAgICAgICApIHtcclxuICAgICAgICAgIHRoaXMudGFibGVSZWYuY3VycmVudD8uc3RvcmU/LnJlbG9hZCh7XHJcbiAgICAgICAgICAgIHBhcmFtczogeyBjdXJyZW50OiAxLCAuLi5wYXJhbXMgfSxcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSxcclxuICAgIH0pO1xyXG4gIH1cclxuICB0cmVlTG9hZChwYXJhbXM6IGFueSwgcmVxdWVzdENvbmZpZyA9IHt9KSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RDb25maWc6IGRlZmF1bHRSZXF1ZXN0Q29uZmlnID0ge30gfSA9IHRoaXMucHJvcHM7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmUubG9hZCh7XHJcbiAgICAgIC4uLmRlZmF1bHRSZXF1ZXN0Q29uZmlnLFxyXG4gICAgICAuLi5yZXF1ZXN0Q29uZmlnLFxyXG4gICAgICBwYXJhbXM6IHBhcmFtcyxcclxuICAgIH0pO1xyXG4gIH1cclxuICBnZXRTZWxlY3RlZFJvd0tleXMoKSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5nZXRTZWxlY3RlZFJvd0tleXMoKTtcclxuICB9XHJcbiAgZ2V0U2VsZWN0ZWRSb3dEYXRhcygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LmdldFNlbGVjdGVkUm93RGF0YXMoKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dLZXlzKGRhdGE6IEFycmF5PFN0cmluZyB8IE51bWJlcj4pIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnNldFNlbGVjdGVkUm93S2V5cyhkYXRhKTtcclxuICB9XHJcbiAgc2V0U2VsZWN0ZWRSb3dEYXRhcyhkYXRhOiBBcnJheTxPYmplY3Q+KSB7XHJcbiAgICByZXR1cm4gdGhpcy50YWJsZVJlZi5jdXJyZW50Py5zZXRTZWxlY3RlZFJvd0RhdGFzKGRhdGEpO1xyXG4gIH1cclxuICByZXNldFNlbGVjdGVkUm93S2V5cygpIHtcclxuICAgIHJldHVybiB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnJlc2V0U2VsZWN0ZWRSb3dLZXlzKCk7XHJcbiAgfVxyXG5cclxuICBnZXRTZWFyY2hWYWx1ZXMoKSB7XHJcbiAgICBjb25zdCBmcm9tVmFsdWUgPSB0aGlzLnNlYXJjaFJlZj8uY3VycmVudD8uZ2V0U2VhcmNoVmFsdWVzKCk7XHJcbiAgICByZXR1cm4geyAuLi5mcm9tVmFsdWUsIC4uLnRoaXMuc3RhdGUudHJlZVNlYXJjaFByYW1zIH07XHJcbiAgfVxyXG5cclxuICBnZXRDaGlsZHJlbkRhdGEoZGF0YSwga2V5cyA9IFtdKSB7XHJcbiAgICBjb25zdCB7IHRhYmxlUHJvcHMgfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuICAgIGxldCByZXNLZXkgPSBbXTtcclxuICAgIGxldCBrZXkgPSBcIlwiO1xyXG4gICAgaWYgKGRhdGEuY2hpbGROb2Rlcykge1xyXG4gICAgICBjb25zdCBjaGlsZHJlbiA9IGRhdGEuY2hpbGROb2RlcztcclxuICAgICAgY2hpbGRyZW4ubWFwKChpdGVtLCBpbmRleCkgPT4ge1xyXG4gICAgICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAga2V5ID0gcm93S2V5KGl0ZW0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBrZXkgPSBpdGVtW3Jvd0tleV07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChpdGVtLmNoaWxkTm9kZXMpIHtcclxuICAgICAgICAgIHRoaXMuZ2V0Q2hpbGRyZW5EYXRhKGl0ZW0uY2hpbGROb2Rlcywga2V5cyk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJlc0tleSA9IFsuLi5rZXlzLCBrZXldO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXNLZXkgPSBbLi4ua2V5cywga2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiByZXNLZXk7XHJcbiAgfVxyXG5cclxuICByZW5kZXJUb29sQnV0dG9ucyh0b29sYnV0dG9uczogYW55LCB0b29sYmFyRmxhZykge1xyXG4gICAgY29uc3QgZmxhZyA9IHRvb2xidXR0b25zLmxlbmd0aCA+IDU7XHJcbiAgICBjb25zdCB7IHNob3dTZWFyY2ggPSB0cnVlIH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgY29udGVudCA9IHRvb2xidXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCBzaG93LCAuLi5wYXJhbXMgfSA9IGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IDMpIHtcclxuICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICBnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpLFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1jb250ZW50LWl0ZW1cIilcclxuICAgICAgICAgICAgKX1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKCk7XHJcbiAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGV4dFwiKX0+XHJcbiAgICAgICAgICAgICAgICB7Y2hpbGRyZW59XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdG9vbC1idXR0b25zXCIpKX1cclxuICAgICAgICBzdHlsZT17eyBtYXJnaW5MZWZ0OiAwIH19XHJcbiAgICAgID5cclxuICAgICAgICB7dG9vbGJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgICAgIGlmIChpbmRleCA8IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiAxMixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IDQpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICAgICAgY29udGVudD17Y29udGVudH1cclxuICAgICAgICAgICAgICAgICAgdGl0bGU9e251bGx9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImJvdHRvbVwiXHJcbiAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICAgIG9wZW49e3RoaXMuc3RhdGUubW9yZU9wZW59XHJcbiAgICAgICAgICAgICAgICAgIG9uT3BlbkNoYW5nZT17KG9wZW4pID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3Blbikge1xyXG4gICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1vcmVPcGVuOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtb3JlT3BlbjogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAvLyBvcGVuPXt0cnVlfVxyXG4gICAgICAgICAgICAgICAgLy8gb3ZlcmxheUNsYXNzTmFtZT17c3R5bGVzWydwb3AtYm94J119XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIj5cclxuICAgICAgICAgICAgICAgICAgICDmm7TlpJogPERvd25PdXRsaW5lZCAvPlxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgIDwvUG9wb3Zlcj5cclxuICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XHJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xyXG4gICAgICAgICAgICAgICAgICBtYXJnaW5SaWdodDogaW5kZXggPT0gdG9vbGJ1dHRvbnMubGVuZ3RoIC0gMSA/IDAgOiAxMixcclxuICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAge2l0ZW19XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSl9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbiAgcmVuZGVyQ2xvdW1uQnV0dG9uKGNvbHVtbkJ1dHRvbnM6IGFueSwgcm93UmVjb3JkOiBhbnkpIHtcclxuICAgIGNvbnN0IHsgYWN0aW9uUHJvcHMsIHRhYmxlUHJvcHMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYmFzZUFjdGlvbkNvbHVtbiB9ID0gY29uZmlnKCk7XHJcbiAgICBjb25zdCBuZXdCdXR0b25zID0gW107XHJcbiAgICBjb25zdCB7IHJvd0tleSA9IFwiaWRcIiB9ID0gdGFibGVQcm9wcztcclxuXHJcbiAgICBsZXQga2V5ID0gXCJcIjtcclxuICAgIGlmICh0eXBlb2Ygcm93S2V5ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICBrZXkgPSByb3dLZXkocm93UmVjb3JkKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGtleSA9IHJvd1JlY29yZFtyb3dLZXldO1xyXG4gICAgfVxyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb2x1bW5CdXR0b25zLm1hcCgoaXRlbTogYW55LCBpbmRleDogYW55KSA9PiB7XHJcbiAgICAgIGNvbnN0IHsgY2hpbGRyZW4sIHBhZ2VUeXBlLCBvbkNsaWNrLCBpY29uLCByZWNvcmRTaG93LCAuLi5wYXJhbXMgfSA9XHJcbiAgICAgICAgaXRlbS5wcm9wcztcclxuICAgICAgaWYgKHJlY29yZFNob3cpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlY29yZFNob3cgPT0gXCJzdHJpbmdcIikge1xyXG5cclxuICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0geyByZWNvcmQ6IHJvd1JlY29yZCwgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyB9O1xyXG4gICAgICAgICAgICBjb25zdCBVdGlscyA9IHsgLi4udGhpcy5wcm9wcy5VaXRscyB9XHJcbiAgICAgICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiZXZlbnRPcHRpb24sVXRpbHNcIiwgcmVjb3JkU2hvdyk7XHJcbiAgICAgICAgICAgIGNvbnN0IHNob3cgPSBmdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBsZXQgcmVjb3JkID0gcm93UmVjb3JkXHJcbiAgICAgICAgICAgIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAgICAgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgLy8gY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAvLyAgIHJlY29yZFNob3csXHJcbiAgICAgICAgICAvLyAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLCByZWNvcmQ6IHJlY29yZCwgfSxcclxuICAgICAgICAgIC8vICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgLy8gKTtcclxuICAgICAgICAgIC8vIGlmIChldmFsKHJlY29yZFNob3cpKSB7XHJcbiAgICAgICAgICAvLyAgIG5ld0J1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgICAgIC8vIH1cclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiByZWNvcmRTaG93ID09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgY29uc3Qgc2hvdyA9IHJlY29yZFNob3cocm93UmVjb3JkKTtcclxuICAgICAgICAgIHNob3cgJiYgbmV3QnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgbGV0IG51bWJlciA9IGFjdGlvblByb3BzPy5idXR0b25OdW1iZXJcclxuICAgICAgPyBhY3Rpb25Qcm9wcz8uYnV0dG9uTnVtYmVyXHJcbiAgICAgIDogYmFzZUFjdGlvbkNvbHVtbj8uYnV0dG9uTnVtYmVyXHJcbiAgICAgICAgPyBiYXNlQWN0aW9uQ29sdW1uPy5idXR0b25OdW1iZXJcclxuICAgICAgICA6IDM7XHJcbiAgICBsZXQgZmxhZyA9IGZhbHNlO1xyXG4gICAgaWYgKG51bWJlciA9PSBcImFsbFwiKSB7XHJcbiAgICAgIGZsYWcgPSBmYWxzZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGZsYWcgPSBuZXdCdXR0b25zLmxlbmd0aCA+IG51bWJlcjtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBjb250ZW50ID0gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgc2hvdywgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChpbmRleCA+IE51bWJlcihudW1iZXIpIC0gMSkge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKFxyXG4gICAgICAgICAgICAgIGdldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3JcIiksXHJcbiAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnQtaXRlbVwiKVxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICBkYXRhW3Jvd1JlY29yZC5pZF0gPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgIHBvcG9wZW5zOiBkYXRhLFxyXG4gICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICB0eXBlPXtcImxpbmtcIn1cclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICByZXR1cm4gbmV3QnV0dG9ucy5tYXAoKGl0ZW06IGFueSwgaW5kZXg6IGFueSkgPT4ge1xyXG4gICAgICBjb25zdCB7IGNoaWxkcmVuLCBwYWdlVHlwZSwgb25DbGljaywgcmVjb3JkU2hvdywgaWNvbiwgLi4ucGFyYW1zIH0gPVxyXG4gICAgICAgIGl0ZW0ucHJvcHM7XHJcbiAgICAgIGlmIChmbGFnKSB7XHJcbiAgICAgICAgaWYgKGluZGV4IDwgbnVtYmVyKSB7XHJcbiAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1lZGl0b3ItZmlyc3RcIildOiBpbmRleCA9PT0gMCxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgIG9uQ2xpY2sgJiYgb25DbGljayhyb3dSZWNvcmQpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgaWNvbj17aWNvbn1cclxuICAgICAgICAgICAgICB7Li4ucGFyYW1zfVxyXG4gICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS1pY29uXCIpfT5cclxuICAgICAgICAgICAgICAgICAge2ljb259XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10ZXh0XCIpfT5cclxuICAgICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKGluZGV4ID09IG51bWJlcikge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPFBvcG92ZXJcclxuICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxyXG4gICAgICAgICAgICAgIHRpdGxlPXtudWxsfVxyXG4gICAgICAgICAgICAgIGNvbnRlbnQ9e2NvbnRlbnR9XHJcbiAgICAgICAgICAgICAgdHJpZ2dlcj17W1wiY2xpY2tcIl19XHJcbiAgICAgICAgICAgICAga2V5PXtpbmRleH1cclxuICAgICAgICAgICAgICBvcGVuPXt0aGlzLnN0YXRlLnBvcG9wZW5zW2tleV0gfHwgZmFsc2V9XHJcbiAgICAgICAgICAgICAgb25PcGVuQ2hhbmdlPXsob3BlbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKG9wZW4pIHtcclxuICAgICAgICAgICAgICAgICAgbGV0IGRhdGEgPSB7IC4uLnRoaXMuc3RhdGUucG9wb3BlbnMgfTtcclxuICAgICAgICAgICAgICAgICAgZGF0YVtrZXldID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IGRhdGEsXHJcbiAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgICAgICAgICAgcG9wb3BlbnM6IHt9LFxyXG4gICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAvLyBvdmVybGF5Q2xhc3NOYW1lPXtzdHlsZXNbJ3BvcCddfVxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgPGEgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yXCIpfT5cclxuICAgICAgICAgICAgICAgIDxFbGxpcHNpc091dGxpbmVkIC8+XHJcbiAgICAgICAgICAgICAgPC9hPlxyXG4gICAgICAgICAgICA8L1BvcG92ZXI+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gbnVsbDtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgIDxCdXR0b25cclxuICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWVkaXRvclwiKSwge1xyXG4gICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtZWRpdG9yLWZpcnN0XCIpXTogaW5kZXggPT09IDAsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgICBrZXk9e2luZGV4fVxyXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XHJcbiAgICAgICAgICAgICAgb25DbGljayAmJiBvbkNsaWNrKHJvd1JlY29yZCk7XHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIHsuLi5wYXJhbXN9XHJcbiAgICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgID5cclxuICAgICAgICAgICAge3Nob3dJY29uICE9PSBmYWxzZSAmJiAoXHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtaWNvblwiKX0+XHJcbiAgICAgICAgICAgICAgICB7aWNvbn1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRleHRcIil9PlxyXG4gICAgICAgICAgICAgIHtjaGlsZHJlbn1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICAvLyB9XHJcbiAgfVxyXG4gIC8v5qCR54K55Ye75LqL5Lu2XHJcbiAgdHJlZVNlbGVjdChzZWxlY3RlZEtleXM6IGFueSwgb2JqOiBhbnkpIHtcclxuICAgIGxldCBrZXl3b3JkID0gXCJcIjtcclxuICAgIGNvbnN0IHtcclxuICAgICAgc2VhcmNoS2V5ID0gXCJrZXlcIixcclxuICAgICAgc2VhcmNoRmllbGQgPSBcIlwiLFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgfSA9IHRoaXMucHJvcHMudHJlZVByb3BzO1xyXG4gICAgY29uc3QgeyB0cmVlU2VsZWN0ZWRLZXkgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCB7IHNlbGVjdGVkLCBzZWxlY3RlZE5vZGVzIH0gPSBvYmo7XHJcblxyXG4gICAgaWYgKHNlbGVjdGVkKSB7XHJcbiAgICAgIGtleXdvcmQgPSBzZWxlY3RlZE5vZGVzWzBdLmRhdGFyZWYuYXR0cmlidXRlW3NlYXJjaEtleV07XHJcbiAgICAgIGlmIChwYXJhbnRTZWxlY3QpIHtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIHRyZWVTZWxlY3RlZEtleTogc2VsZWN0ZWRLZXlzWzBdLFxyXG4gICAgICAgICAgdHJlZVNlYXJjaFByYW1zOiB7IFtzZWFyY2hGaWVsZF06IGtleXdvcmQgfSxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoc2VsZWN0ZWROb2Rlc1swXS5pc0xlYWYgfHwgIXNlbGVjdGVkTm9kZXNbMF0uY2hpbGRyZW4pIHtcclxuICAgICAgICAgIGlmIChzZWxlY3RlZEtleXNbMF0gIT09IHRyZWVTZWxlY3RlZEtleSkge1xyXG4gICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICB0cmVlU2VsZWN0ZWRLZXk6IHNlbGVjdGVkS2V5c1swXSxcclxuICAgICAgICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHsgW3NlYXJjaEZpZWxkXToga2V5d29yZCB9LFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgIHRyZWVTZWxlY3RlZEtleToga2V5d29yZCxcclxuICAgICAgICB0cmVlU2VhcmNoUHJhbXM6IHt9LFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnByb3BzLm9uVHJlZVNlbGVjdCkge1xyXG4gICAgICB0aGlzLnByb3BzLm9uVHJlZVNlbGVjdChzZWxlY3RlZEtleXMsIG9iaik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IGZyb21WYWx1ZSA9IHRoaXMuc2VhcmNoUmVmPy5jdXJyZW50Py5nZXRTZWFyY2hWYWx1ZXMoKSB8fCB7fTtcclxuICAgIHNlYXJjaEZpZWxkICYmIHRoaXMudGFibGVMb2FkKHsgLi4uZnJvbVZhbHVlLCBbc2VhcmNoRmllbGRdOiBrZXl3b3JkIH0pO1xyXG4gICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrICYmXHJcbiAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/LnRyZWVTZWxlY3RDYWxsQmFjayxcclxuICAgICAgICB7IHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZiwgc2VsZWN0ZWRLZXlzOiBzZWxlY3RlZEtleXMsIG9iajogb2JqIH0sXHJcbiAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICApO1xyXG4gICAgLy8gdXRpbHMuY2FsbGJhY2sodGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8udHJlZVNlbGVjdENhbGxCYWNrLCB0aGlzLCBbXHJcbiAgICAvLyAgIHNlbGVjdGVkS2V5cyxcclxuICAgIC8vICAgb2JqLFxyXG4gICAgLy8gXSk7XHJcbiAgfVxyXG4gIHJlc2V0U2VhcmNoKCkge1xyXG4gICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICB9XHJcbiAgZ2V0VGV4dChwcm9wcywgdGV4dCkge1xyXG4gICAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gICAgaWYgKHByb3BzPy5kYXRhICYmIHByb3BzPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGxldCBkYXRhID0gcHJvcHMuZGF0YTtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmIChkYXRhW2ldLnZhbHVlID09IHRleHQpIHtcclxuICAgICAgICAgIG5ld1RleHQgPSBkYXRhW2ldLmxhYmVsO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIG5ld1RleHQ7XHJcbiAgfVxyXG4gIHNldFRhYmxlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRhYmxlUmVmLmN1cnJlbnQ/LnN0b3JlPy5zZXREYXRhKGRhdGEpO1xyXG4gIH1cclxuICBzZXRUcmVlRGF0YShkYXRhKSB7XHJcbiAgICB0aGlzLnRyZWVSZWYuY3VycmVudD8uc3RvcmU/LnNldERhdGEoZGF0YSk7XHJcbiAgfVxyXG4gIGdldFNlbGVjdGVkS2V5ID0gKHNlbGVjdGVkKSA9PiB7XHJcbiAgICBsZXQgcmVzID0gW107XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gc2VsZWN0ZWQpIHtcclxuICAgICAgY29uc3Qga2V5cyA9IHNlbGVjdGVkW2tleV07XHJcbiAgICAgIGlmIChrZXlzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICByZXMgPSBbLi4ucmVzLCAuLi5rZXlzXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJlcztcclxuICB9O1xyXG5cclxuICBjb252ZXJ0UXVlcnlQYXJhbXMoKSB7XHJcbiAgICBjb25zdCB7IHJlcXVlc3RQYXJhbXMgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGxldCBxdWVyeVBhcmFtczogYW55ID0gcmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcztcclxuICAgIGlmIChxdWVyeVBhcmFtcyAmJiB0eXBlb2YgcXVlcnlQYXJhbXMgPT0gXCJzdHJpbmdcIikge1xyXG4gICAgICBjb25zdCBVdGlscyA9IHRoaXMucHJvcHMuVXRpbHMgfHwge307XHJcbiAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKFwiVXRpbHNcIiwgcXVlcnlQYXJhbXMpO1xyXG4gICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscyk7XHJcbiAgICAgIHF1ZXJ5UGFyYW1zID0gY29udmVyUGFyYW1zO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcXVlcnlQYXJhbXMgPSBxdWVyeVBhcmFtcyB8fCB7fTtcclxuICAgIH1cclxuICAgIHJldHVybiBxdWVyeVBhcmFtcztcclxuICB9XHJcblxyXG4gIC8vIOiuoeeul+ihqOWktOmrmOW6pueahOaWueazlVxyXG4gIGNhbGN1bGF0ZVRhYmxlSGVhZGVySGVpZ2h0ID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMudGFibGVXcmFwcGVyUmVmLmN1cnJlbnQpIHtcclxuICAgICAgY29uc3QgdGFibGVIZWFkZXIgPSB0aGlzLnRhYmxlV3JhcHBlclJlZi5jdXJyZW50LmdldEVsZW1lbnRzQnlDbGFzc05hbWUoJ2FudC10YWJsZS10aGVhZCcpWzBdO1xyXG4gICAgICBpZiAodGFibGVIZWFkZXIpIHtcclxuICAgICAgICBjb25zdCBoZWFkZXJIZWlnaHQgPSB0YWJsZUhlYWRlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5oZWlnaHQ7XHJcbiAgICAgICAgaWYgKGhlYWRlckhlaWdodCAhPT0gdGhpcy5zdGF0ZS50YWJsZUhlYWRlckhlaWdodCkge1xyXG4gICAgICAgICAgdGhpcy5zZXRTdGF0ZSh7XHJcbiAgICAgICAgICAgIHRhYmxlSGVhZGVySGVpZ2h0OiBoZWFkZXJIZWlnaHRcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcmVuZGVyKCkge1xyXG4gICAgY29uc3Qge1xyXG4gICAgICBjb2x1bW5zID0gW10sXHJcbiAgICAgIHNob3dTZWFyY2ggPSB0cnVlLFxyXG4gICAgICBjaGlsZHJlbixcclxuICAgICAgc3VibWl0VXJsID0gXCJcIixcclxuICAgICAgdGFibGVQcm9wcyA9IHt9LFxyXG4gICAgICB0cmVlUHJvcHMgPSB7fSxcclxuICAgICAgZm9ybVByb3BzID0ge30sXHJcbiAgICAgIGZvcm1QYWdlUHJvcHMgPSB7fSxcclxuICAgICAgc2hvd0xlZnQgPSBmYWxzZSxcclxuICAgICAgc3VibWl0UGFyYW1zID0ge30sXHJcbiAgICAgIHNob3dUb29sQnV0dG9uID0gdHJ1ZSxcclxuICAgICAgYnV0dG9ucyA9IFtdLFxyXG4gICAgICBlZGl0b3JGb3JtID0gdHJ1ZSxcclxuICAgICAgb25TaG93Rm9ybSxcclxuICAgICAgZm9ybUNoYW5nZVZhbGlkID0gdHJ1ZSxcclxuICAgICAgY2xhc3NOYW1lLFxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPSBcImJ1dHRvbVwiLFxyXG4gICAgICBhY3Rpb25Qcm9wcyxcclxuICAgICAgZGVsZXRlUG9zaXRpb24gPSBcInRvb2xiYXJcIixcclxuICAgICAgYnV0dG9uQ2xpY2sgPSB7fSxcclxuICAgICAgcGVybWlzc2lvbiA9IHsgaGFzOiBmYWxzZSB9LFxyXG4gICAgICByZXF1ZXN0UGFyYW1zID0ge30sXHJcbiAgICAgIHJlcXVlc3RVcmxzID0ge30sXHJcbiAgICB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHtcclxuICAgICAgc3RvcmU6IHRhYmxlU3RvcmUgPSB7fSxcclxuICAgICAgZmlsdGVyQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgYWN0aW9uQ29sdW1uID0gdHJ1ZSxcclxuICAgICAgc2hvd1Jvd1NlbGVjdGlvbiA9IHRydWUsXHJcbiAgICAgIGNvbHVtbk9yZGVyID0gdHJ1ZSxcclxuICAgICAgZXhwYW5kYWJsZSA9IHt9LFxyXG4gICAgICBwYXJhbnRTZWxlY3QgPSB0cnVlLFxyXG4gICAgICB0aXRsZTogdGFibGVUaXRsZSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtc1xyXG4gICAgfSA9IHRhYmxlUHJvcHM7XHJcbiAgICBsZXQgbmV3VGFibGVTdG9yZSA9IHsgLi4udGFibGVTdG9yZSB9XHJcbiAgICBpZiAocmVxdWVzdFBhcmFtcy5xdWVyeVBhcmFtcykge1xyXG4gICAgICBsZXQgcXVlcnlQYXJhbXM6IGFueSA9IHRoaXMuY29udmVydFF1ZXJ5UGFyYW1zKCk7XHJcbiAgICAgIGxldCBkYXRhID0gcXVlcnlQYXJhbXM/LmRhdGEgfHwgcXVlcnlQYXJhbXM/LnBhcmFtcyB8fCB7fTtcclxuICAgICAgbmV3VGFibGVTdG9yZS5yZXF1ZXN0Q29uZmlnID0ge1xyXG4gICAgICAgIHBhcmFtczogeyAuLi5kYXRhLCAuLi5uZXdUYWJsZVN0b3JlLnJlcXVlc3RDb25maWc/LnBhcmFtcyB9LFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgY29uc3Qge1xyXG4gICAgICBzdG9yZTogdHJlZVN0b3JlID0ge30sXHJcbiAgICAgIHNob3dTZWFyY2g6IHRyZWVTZWFyY2ggPSB0cnVlLFxyXG4gICAgICB0aXRsZUFsaWFzID0gXCJ0aXRsZVwiLFxyXG4gICAgICB0aXRsZTogdHJlZVRpdGxlLFxyXG4gICAgICAuLi5vdGhlcnRyZWVQYXJhbXNcclxuICAgIH0gPSB0cmVlUHJvcHM7XHJcblxyXG4gICAgbGV0IHRhYmxlUGFyYW1zID0ge1xyXG4gICAgICBmaWx0ZXJDb2x1bW4sXHJcbiAgICAgIHN0b3JlOiB7IC4uLm5ld1RhYmxlU3RvcmUgfSxcclxuICAgICAgLi4ub3RoZXJ0YWJsZVBhcmFtcyxcclxuICAgIH0gYXMgYW55O1xyXG4gICAgY29uc3QgZGVmYXVsdFZhbHVlOiBhbnkgPSB7fTtcclxuICAgIGNvbnN0IGNvbHVtbkJ1dHRvbnM6IGFueSA9IFtdO1xyXG4gICAgY29uc3QgeyBlbGVtZW50SGVpZ2h0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IHBlcm1pc3Npb25CdXR0b25zID0gW107XHJcbiAgICBpZiAocGVybWlzc2lvbi5oYXMgJiYgcGVybWlzc2lvbi5tZW51Q29kZSkge1xyXG4gICAgICBwZXJtaXNzaW9uQnV0dG9ucyA9XHJcbiAgICAgICAgZ2V0QnV0dG9uUGVybWlzc29ucyhwZXJtaXNzaW9uLm1lbnVDb2RlKS5wZXJtaXNzb25zIHx8IFtdO1xyXG4gICAgfVxyXG4gICAgY29uc3Qgb2JqID0gY29udmVydENvbHVtbnMoY29sdW1ucywge30pXHJcbiAgICBsZXQgdGFibGVDb2x1bW46IGFueVtdID0gZ2V0TmV3Q29sdW1ucyhjb2x1bW5zLCB0aGlzLnByb3BzKVxyXG4gICAgY29uc3Qgc2VhcmNoRm9ybXMgPSBvYmouc2VhcmNoRm9ybXMgfHwgW11cclxuICAgIGNvbnN0IGVkaXRvckZvcm1zID0gb2JqLmVkaXRvckZvcm1zIHx8IFtdXHJcbiAgICBjb25zdCB0b29sQnV0dG9uczogYW55ID0gW107XHJcbiAgICBjb25zdCB7IGJhc2VBY3Rpb25Db2x1bW4gfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHNob3dJY29uID0gdHJ1ZTtcclxuICAgIGlmIChhY3Rpb25Qcm9wcz8uc2hvd0ljb24gPT09IGZhbHNlKSBzaG93SWNvbiA9IGZhbHNlO1xyXG4gICAgZWxzZSBpZiAoYmFzZUFjdGlvbkNvbHVtbi5zaG93SWNvbiA9PT0gZmFsc2UpIHNob3dJY29uID0gZmFsc2U7XHJcbiAgICBjb25zdCBidXR0b25NYXAgPSB7XHJcbiAgICAgIC8vIGFkZDogeyBuYW1lOiBcIuaWsOWinlwiLCBjb2RlOiBcImFkZFwiLCBpY29uOiA8UGx1c091dGxpbmVkIC8+IH0sXHJcbiAgICAgIGVkaXRvcjogeyBuYW1lOiBcIue8lui+kVwiLCBjb2RlOiBcImVkaXRvclwiLCBpY29uOiA8RWRpdE91dGxpbmVkIC8+IH0sXHJcbiAgICAgIGRlbGV0ZTogeyBuYW1lOiBcIuWIoOmZpFwiLCBjb2RlOiBcImRlbGV0ZVwiLCBpY29uOiA8RGVsZXRlT3V0bGluZWQgLz4gfSxcclxuICAgICAgc2VhcmNoOiB7IG5hbWU6IFwi5p+l55yLXCIsIGNvZGU6IFwic2VhcmNoXCIsIGljb246IDxFeWVPdXRsaW5lZCAvPiB9LFxyXG4gICAgfTtcclxuICAgIGNvbnN0IHJldHVybkJ1dHRvbiA9IChjb2RlLCBzaG93ID0gXCJcIikgPT4ge1xyXG4gICAgICBsZXQgcHJvcHMgPSB7fTtcclxuICAgICAgaWYgKHNob3cpIHtcclxuICAgICAgICBwcm9wcyA9IHsgcmVjb3JkU2hvdzogc2hvdyB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiAoXHJcbiAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgb25DbGljaz17KHJlY29yZDogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChjb2RlID09IFwiZGVsZXRlXCIpIHtcclxuICAgICAgICAgICAgICB0aGlzLm9uRGVsZXRlKHJlY29yZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgaWYgKGNvZGUgPT0gXCJlZGl0b3JcIiAmJiBidXR0b25DbGljay5vbkVkaXRvcikge1xyXG4gICAgICAgICAgICAgICAgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGJ1dHRvbkNsaWNrLm9uRWRpdG9yLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IFwic2VhcmNoXCIgJiYgYnV0dG9uQ2xpY2sub25TZWFyY2gpIHtcclxuICAgICAgICAgICAgICAgIGNvbnZlckZ1bmN0aW9uKFxyXG4gICAgICAgICAgICAgICAgICBidXR0b25DbGljay5vblNlYXJjaCxcclxuICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIHBhZ2VSZWY6IHRoaXMucHJvcHMucGFnZVJlZixcclxuICAgICAgICAgICAgICAgICAgICByZWNvcmQ6IHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLFxyXG4gICAgICAgICAgICAgICAgICAgIGZ1bmNzOiB0aGlzLnByb3BzLmZ1bmNzLFxyXG4gICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLlV0aWxzXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAob25TaG93Rm9ybSkge1xyXG4gICAgICAgICAgICAgICAgb25TaG93Rm9ybShyZWNvcmQuYXR0cmlidXRlIHx8IHJlY29yZCwgY29kZSk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKHJlY29yZC5hdHRyaWJ1dGUgfHwgcmVjb3JkLCBjb2RlLCAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY2FsbEJhY2sgPSBjb2RlID09IFwiZWRpdG9yXCIgPyB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vbkVkaXRvckNhbGxCYWNrIDogdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TZWFyY2hDYWxsQmFja1xyXG4gICAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIGNhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmLFxyXG4gICAgICAgICAgICAgICAgICAgIHJlY29yZDogcmVjb3JkLmF0dHJpYnV0ZSB8fCByZWNvcmQsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH19XHJcbiAgICAgICAgICBpY29uPXtzaG93SWNvbiA/IGJ1dHRvbk1hcFtjb2RlXS5pY29uIDogbnVsbH1cclxuICAgICAgICAgIHR5cGU9XCJsaW5rXCJcclxuICAgICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgICA+XHJcbiAgICAgICAgICB7YnV0dG9uTWFwW2NvZGVdPy5uYW1lfVxyXG4gICAgICAgIDwvQnV0dG9uPlxyXG4gICAgICApO1xyXG4gICAgfTtcclxuICAgIGNvbnN0IGNoZWNrUGVyc3Npb24gPSAoY29kZSkgPT4ge1xyXG4gICAgICBpZiAoIXBlcm1pc3Npb24uaGFzKSB7XHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHBlcm1pc3Npb25CdXR0b25zLmluZGV4T2YoY29kZSkgPiAtMTtcclxuICAgICAgfVxyXG4gICAgfTtcclxuICAgIGJ1dHRvbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgICAgaWYgKChpdGVtID09IFwiYWRkXCIgfHwgaXRlbS5jb2RlID09IFwiYWRkXCIpICYmIGNoZWNrUGVyc3Npb24oXCJhZGRcIikpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICB0eXBlPXtcInByaW1hcnlcIn1cclxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNvbnN0IHsgb25TaG93Rm9ybSwgYnV0dG9uQ2xpY2sgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgICAgICBpZiAoYnV0dG9uQ2xpY2s/Lm9uQWRkKSB7XHJcbiAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgYnV0dG9uQ2xpY2sub25BZGQsXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChvblNob3dGb3JtKSB7XHJcbiAgICAgICAgICAgICAgICBvblNob3dGb3JtKG51bGwsIFwiYWRkXCIpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB0aGlzLnNob3dGb3JtKG51bGwsIG51bGwsICgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2sgJiYgY29udmVyRnVuY3Rpb24oXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMub25DYWxsQmFja3M/Lm9uQWRkQ2FsbEJhY2ssXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBwYWdlUmVmOiB0aGlzLnByb3BzLnBhZ2VSZWYsXHJcbiAgICAgICAgICAgICAgICAgICAgZnVuY3M6IHRoaXMucHJvcHMuZnVuY3MsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHRoaXMucHJvcHMuVXRpbHNcclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSk7XHJcblxyXG5cclxuXHJcbiAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgIGljb249ezxQbHVzT3V0bGluZWQgLz59XHJcbiAgICAgICAgICA+XHJcbiAgICAgICAgICAgIOa3u+WKoFxyXG4gICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAoaXRlbSA9PSBcImRlbGV0ZVwiIHx8IGl0ZW0uY29kZSA9PSBcImRlbGV0ZVwiKSAmJlxyXG4gICAgICAgIGNoZWNrUGVyc3Npb24oXCJkZWxldGVcIilcclxuICAgICAgKSB7XHJcbiAgICAgICAgaWYgKGRlbGV0ZVBvc2l0aW9uID09IFwidG9vbGJhclwiKSB7XHJcbiAgICAgICAgICB0b29sQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICA8QnV0dG9uXHJcbiAgICAgICAgICAgICAgLy8gdHlwZT17XCJwcmltYXJ5XCJ9XHJcbiAgICAgICAgICAgICAgb25DbGljaz17dGhpcy5vbkRlbGV0ZS5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgIGljb249ezxEZWxldGVPdXRsaW5lZCAvPn1cclxuICAgICAgICAgICAgICBkYW5nZXJcclxuICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgIOWIoOmZpFxyXG4gICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChyZXR1cm5CdXR0b24oaXRlbS5jb2RlIHx8IGl0ZW0sIGl0ZW0ucmVjb3JkU2hvdykpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAoY2hlY2tQZXJzc2lvbihpdGVtLmNvZGUgPyBpdGVtLmNvZGUgOiBpdGVtKSkge1xyXG4gICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKFxyXG4gICAgICAgICAgICByZXR1cm5CdXR0b24oaXRlbS5jb2RlID8gaXRlbS5jb2RlIDogaXRlbSwgaXRlbS5yZWNvcmRTaG93KVxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG5cclxuICAgIGlmIChBcnJheS5pc0FycmF5KGNoaWxkcmVuKSkge1xyXG4gICAgICBjaGlsZHJlbi5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KGl0ZW0pKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcCgoY2hpbGQpID0+IHtcclxuICAgICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICAgIGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiZcclxuICAgICAgICAgICAgICBjaGVja1BlcnNzaW9uKGNoaWxkPy5wcm9wcz8uY29kZSlcclxuICAgICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgICAgdG9vbEJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgICAgKGNoaWxkPy5wcm9wcz8ucGFnZVR5cGUgPT0gXCJjb2x1bW5CdXR0b25cIiB8fCBjaGlsZD8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgICAgY2hlY2tQZXJzc2lvbihjaGlsZD8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAgIGNvbHVtbkJ1dHRvbnMucHVzaChjaGlsZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBpZiAoXHJcbiAgICAgICAgICAgIGl0ZW0/LnByb3BzPy5wYWdlVHlwZSA9PSBcInRvb2xCdXR0b25cIiAmJlxyXG4gICAgICAgICAgICBjaGVja1BlcnNzaW9uKGl0ZW0/LnByb3BzPy5jb2RlKVxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIHRvb2xCdXR0b25zLnB1c2goaXRlbSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICAoaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHwgaXRlbT8ucHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgICAgIGNoZWNrUGVyc3Npb24oaXRlbT8ucHJvcHM/LmNvZGUpXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGl0ZW0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIGNvbnN0IHsgcHJvcHMgfTogYW55ID0gY2hpbGRyZW47XHJcbiAgICAgIGlmIChwcm9wcz8ucGFnZVR5cGUgPT0gXCJ0b29sQnV0dG9uXCIgJiYgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSkpIHtcclxuICAgICAgICB0b29sQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAocHJvcHM/LnBhZ2VUeXBlID09IFwiY29sdW1uQnV0dG9uXCIgfHwgcHJvcHM/LnBhZ2VUeXBlID09IFwiY2xvdW1uQnV0dG9uXCIpICYmXHJcbiAgICAgICAgY2hlY2tQZXJzc2lvbihwcm9wcz8uY29kZSlcclxuICAgICAgKSB7XHJcbiAgICAgICAgY29sdW1uQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgYWN0aW9uQ29sdW1uICYmXHJcbiAgICAgIHRhYmxlQ29sdW1uLnB1c2goe1xyXG4gICAgICAgIHRpdGxlOiBcIuaTjeS9nFwiLFxyXG4gICAgICAgIGRhdGFJbmRleDogXCJhY3Rpb25cIixcclxuICAgICAgICBhbGlnbjogYWN0aW9uUHJvcHM/LnRleHRBbGlnblxyXG4gICAgICAgICAgPyBhY3Rpb25Qcm9wcz8udGV4dEFsaWduXHJcbiAgICAgICAgICA6IGJhc2VBY3Rpb25Db2x1bW4udGV4dEFsaWduXHJcbiAgICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi50ZXh0QWxpZ25cclxuICAgICAgICAgICAgOiBcImxlZnRcIixcclxuICAgICAgICB3aWR0aDogYWN0aW9uUHJvcHM/LndpZHRoXHJcbiAgICAgICAgICA/IGFjdGlvblByb3BzPy53aWR0aFxyXG4gICAgICAgICAgOiBiYXNlQWN0aW9uQ29sdW1uLndpZHRoXHJcbiAgICAgICAgICAgID8gYmFzZUFjdGlvbkNvbHVtbi53aWR0aFxyXG4gICAgICAgICAgICA6IDIwMCxcclxuICAgICAgICBmaXhlZDogXCJyaWdodFwiLFxyXG4gICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSwgcmVjb3JkOiBhbnkpID0+IHtcclxuICAgICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtYWN0aW9uXCIpfT5cclxuICAgICAgICAgICAgICB7dGhpcy5yZW5kZXJDbG91bW5CdXR0b24oY29sdW1uQnV0dG9ucywgcmVjb3JkKX1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH0sXHJcbiAgICAgIH0pO1xyXG5cclxuICAgIGlmIChjb2x1bW5PcmRlcilcclxuICAgICAgdGFibGVDb2x1bW4gPSBbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgdGl0bGU6IFwi5bqP5Y+3XCIsXHJcbiAgICAgICAgICB3aWR0aDogODAsXHJcbiAgICAgICAgICBhbGlnbjogXCJjZW50ZXJcIixcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQsIHJlYWNvcmQsIGluZGV4KSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiA8PntpbmRleCArIDF9PC8+O1xyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgIC4uLnRhYmxlQ29sdW1uLFxyXG4gICAgICBdO1xyXG4gICAgbGV0IHNlYXJjaEZsYWcgPSBzaG93U2VhcmNoICYmIHNlYXJjaEZvcm1zLmxlbmd0aCA+IDA7XHJcbiAgICBsZXQgeyB0YWJsZVRvb2wgfSA9IGNvbmZpZygpO1xyXG4gICAgbGV0IHRvb2xGbGFnID1cclxuICAgICAgc2hvd1Rvb2xCdXR0b24gJiZcclxuICAgICAgdG9vbEJ1dHRvbnMubGVuZ3RoID4gMCAmJlxyXG4gICAgICB0b29sQnV0dG9uUG9zaXRpb24gPT0gXCJidXR0b21cIjtcclxuICAgIGxldCB0b29sYmFyRmxhZyA9ICEoXHJcbiAgICAgIHRhYmxlUHJvcHMudG9vbGJhciA9PSBmYWxzZSB8fFxyXG4gICAgICB0YWJsZVByb3BzLnRvb2xiYXI/LnNob3cgPT0gZmFsc2UgfHxcclxuICAgICAgdGFibGVQcm9wcy50b29sYmFyPy50b29scz8ubGVuZ3RoID09IDAgfHxcclxuICAgICAgdGFibGVUb29sPy5zaG93ID09IGZhbHNlXHJcbiAgICApO1xyXG4gICAgXHJcbiAgICBsZXQgdG9vbEhlaWdodCA9IHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcgPyA1MCA6IDA7XHJcbiAgICBsZXQgcGFkZGluZ0hlaWdodCA9IDIwICogMjsgLy/kuIrkuIvpl7Tot51cclxuICAgIGxldCB0YWJsZUNvbnRlbnRIZWlnaHQgPSBlbGVtZW50SGVpZ2h0IC0gdG9vbEhlaWdodCAtIHBhZGRpbmdIZWlnaHQ7XHJcbiAgICBsZXQgUGFnaW5hdGlvbkhlaWdodCA9IHRhYmxlUHJvcHMucGFnaW5hdGlvbiAhPT0gZmFsc2UgPyAoMzIgKyAxNikgOiAwIC8vMzIg5Li65YiG6aG15Zmo6auY5bqmLDE25Li6bWFyZ2lu6Ze06LedXHJcbiAgICBsZXQgdGFibGVIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSBQYWdpbmF0aW9uSGVpZ2h0O1xyXG4gICAgbGV0IHRhYmxlU3JvbGxIZWlnaHQgPSB0YWJsZUNvbnRlbnRIZWlnaHQgLSB0aGlzLnN0YXRlLnRhYmxlSGVhZGVySGVpZ2h0IC0gUGFnaW5hdGlvbkhlaWdodDtcclxuICAgIC8vIGlmICh0YWJsZVByb3BzLnBhZ2luYXRpb24gIT09IGZhbHNlKSB7XHJcbiAgICBjb25zdCBzY3JvbGwgPSB0YWJsZVBhcmFtcy5zY3JvbGw7XHJcbiAgICB0YWJsZVBhcmFtcyA9IHtcclxuICAgICAgLi4udGFibGVQYXJhbXMsXHJcbiAgICAgIHNjcm9sbDogeyB4OiBcIm1heC1jb250ZW50XCIsIHk6IHRhYmxlU3JvbGxIZWlnaHQsIC4uLnNjcm9sbCB9LFxyXG4gICAgfTtcclxuICAgIC8vIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxkaXZcclxuICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2VcIiksIGNsYXNzTmFtZSl9XHJcbiAgICAgICAgcmVmPXt0aGlzLnBhZ2VSZWZ9XHJcbiAgICAgID5cclxuICAgICAgICB7dGhpcy5wcm9wcy5wYWdlVGl0bGUgJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtdGl0bGVcIikpfT5cclxuICAgICAgICAgICAge3RoaXMucHJvcHMucGFnZVRpdGxlfVxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcGFuZVwiKSl9XHJcbiAgICAgICAgICBzdHlsZT17eyBkaXNwbGF5OiBcImZsZXhcIiB9fVxyXG4gICAgICAgID5cclxuICAgICAgICAgIHtzaG93TGVmdCAmJiAoXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtbGVmdFwiKX0+XHJcbiAgICAgICAgICAgICAge3RyZWVUaXRsZSAmJiAoXHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwidHJlZS10aXRsZVwiKX0+e3RyZWVUaXRsZX08L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xzKGdldExlc3Moc3R5bGVzLCBcInRyZWUtY29udGVudFwiKSwge1xyXG4gICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwidHJlZS1jb250ZW50LW5vdGl0bGVcIildOiAhdHJlZVRpdGxlLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRyZWVcclxuICAgICAgICAgICAgICAgICAgc3RvcmU9e3sgLi4udHJlZVN0b3JlIH19XHJcbiAgICAgICAgICAgICAgICAgIHNob3dJY29uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgY2hlY2thYmxlPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgICAgc2VhcmNoYWJsZT17dHJlZVNlYXJjaH1cclxuICAgICAgICAgICAgICAgICAgb25TZWxlY3Q9e3RoaXMudHJlZVNlbGVjdC5iaW5kKHRoaXMpfVxyXG4gICAgICAgICAgICAgICAgICBzZWxlY3RlZEtleXM9e1t0aGlzLnN0YXRlLnRyZWVTZWxlY3RlZEtleV19XHJcbiAgICAgICAgICAgICAgICAgIHRpdGxlQWxpYXM9e3RpdGxlQWxpYXN9XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50cmVlUmVmfVxyXG4gICAgICAgICAgICAgICAgICB7Li4ub3RoZXJ0cmVlUGFyYW1zfVxyXG4gICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICApfVxyXG4gICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICBjbGFzc05hbWU9e2NscyhnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtcmlnaHRcIiksIHtcclxuICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLW5vLWxlZnQtcmlnaHRcIildOiAhc2hvd0xlZnQsXHJcbiAgICAgICAgICAgIH0pfVxyXG4gICAgICAgICAgPlxyXG4gICAgICAgICAgICB7c2hvd1NlYXJjaCAmJiBzZWFyY2hGb3Jtcy5sZW5ndGggPiAwICYmIChcclxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Z2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWhlYWRlcnNlYXJjaFwiKX0+XHJcbiAgICAgICAgICAgICAgICA8SGVhZGVyU2VhcmNoXHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1zPXtzZWFyY2hGb3Jtc31cclxuICAgICAgICAgICAgICAgICAgdG9vbEJ1dHRvblBvc2l0aW9uPXt0b29sQnV0dG9uUG9zaXRpb259XHJcbiAgICAgICAgICAgICAgICAgIG9uU2VhcmNoPXt0aGlzLm9uU2VhcmNoLmJpbmQodGhpcyl9XHJcbiAgICAgICAgICAgICAgICAgIG9uUmVzZXQ9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5wcm9wcy5vblJlc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uUmVzZXQoKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hSZWYuY3VycmVudD8ucmVzZXRGaWVsZHMoKTtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZCh7fSk7XHJcbiAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy5zZWFyY2hSZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHNlYXJjaEZvcm1Qcm9wcz17dGhpcy5wcm9wcy5zZWFyY2hGb3JtUHJvcHN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApfVxyXG4gICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLWNvbnRlbnRcIiksIHtcclxuICAgICAgICAgICAgICAgIFtnZXRMZXNzKHN0eWxlcywgXCJuc2MtYmFzZXBhZ2UtY29udGVudC1nYXBcIildOiAhc2VhcmNoRmxhZyxcclxuICAgICAgICAgICAgICB9KX1cclxuICAgICAgICAgICAgICByZWY9e3RoaXMucGFnZUNvbnRlbnRSZWZ9XHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICB7KHRhYmxlVGl0bGUgfHwgdG9vbEZsYWcpICYmIChcclxuICAgICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbHMoZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRpdGxlXCIpLCB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10aXRsZS13aWR0aFwiKV06ICF0b29sYmFyRmxhZyxcclxuICAgICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgIDxkaXY+e3RhYmxlVGl0bGV9PC9kaXY+XHJcbiAgICAgICAgICAgICAgICAgIHt0b29sRmxhZyAmJiB0aGlzLnJlbmRlclRvb2xCdXR0b25zKHRvb2xCdXR0b25zLCB0b29sYmFyRmxhZyl9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApfVxyXG5cclxuICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2NscyhcclxuICAgICAgICAgICAgICAgICAgZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlXCIpLFxyXG4gICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgW2dldExlc3Moc3R5bGVzLCBcIm5zYy1iYXNlcGFnZS10YWJsZS10b3BcIildOiAhdG9vbGJhckZsYWcsXHJcbiAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBbZ2V0TGVzcyhzdHlsZXMsIFwibnNjLWJhc2VwYWdlLXRhYmxlLXRvcDJcIildOlxyXG4gICAgICAgICAgICAgICAgICAgICAgdG9vbGJhckZsYWcgJiYgIXRvb2xGbGFnLFxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICApfVxyXG4gICAgICAgICAgICAgICAgcmVmPXt0aGlzLnRhYmxlV3JhcHBlclJlZn1cclxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGhlaWdodDogdGFibGVDb250ZW50SGVpZ2h0IH19XHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPFRhYmxlXHJcbiAgICAgICAgICAgICAgICAgIHJlZj17dGhpcy50YWJsZVJlZn1cclxuICAgICAgICAgICAgICAgICAgY29sdW1ucz17dGFibGVDb2x1bW59XHJcbiAgICAgICAgICAgICAgICAgIGV4cGFuZGFibGU9e3tcclxuICAgICAgICAgICAgICAgICAgICBleHBhbmRJY29uOiAoeyBleHBhbmRlZCwgb25FeHBhbmQsIHJlY29yZCB9KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtleHBhbmRlZCAmJlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3JkLmNoaWxkTm9kZXMgJiZcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29yZC5jaGlsZE5vZGVzPy5sZW5ndGggPiAwID8gKFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPERvd25PdXRsaW5lZFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoZSkgPT4gb25FeHBhbmQocmVjb3JkLCBlKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtnZXRMZXNzKHN0eWxlcywgXCJleHBhbmQtaWNvblwiKX1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgKSA6IHJlY29yZC5jaGlsZE5vZGVzICYmXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvcmQuY2hpbGROb2Rlcz8ubGVuZ3RoID4gMCA/IChcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxSaWdodE91dGxpbmVkXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiBvbkV4cGFuZChyZWNvcmQsIGUpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9e2dldExlc3Moc3R5bGVzLCBcImV4cGFuZC1pY29uXCIpfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICAgICAgICAgICAgICApIDogbnVsbH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgLi4uZXhwYW5kYWJsZSxcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgY29sdW1uT3JkZXI9e3RydWV9XHJcbiAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsocGFnaW5hdGlvbikgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgY3VycmVudFBhZ2UgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRQYWdlICE9PSBwYWdpbmF0aW9uLmN1cnJlbnQpIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UGFnZTogcGFnaW5hdGlvbi5jdXJyZW50LFxyXG4gICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICB0b29sYmFyPXt7XHJcbiAgICAgICAgICAgICAgICAgICAgb25Ub29sQ2xpY2s6IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG9uUmVmcmVzaDogKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBwYXJhbXMgPSB0aGlzLmdldFNlYXJjaFZhbHVlcygpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlTG9hZChwYXJhbXMpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgIC4uLnRhYmxlUHJvcHMudG9vbGJhcixcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1Jvd1NlbGVjdGlvbj17c2hvd1Jvd1NlbGVjdGlvbn1cclxuICAgICAgICAgICAgICAgICAgc3R5bGU9e3sgaGVpZ2h0OiB0YWJsZUhlaWdodCB9fVxyXG4gICAgICAgICAgICAgICAgICB7Li4udGFibGVQYXJhbXN9XHJcbiAgICAgICAgICAgICAgICAvLyBwYWdpbmF0aW9uPXtmYWxzZX1cclxuICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICB7LyogPGRpdj48L2Rpdj4gKi99XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICB7ZWRpdG9yRm9ybSAmJiAoXHJcbiAgICAgICAgICAgIDxFZGl0b3JGb3JtXHJcbiAgICAgICAgICAgICAgcmVmPXt0aGlzLmVkaXRvclJlZn1cclxuICAgICAgICAgICAgICBjYWxsQmFjaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbGxCYWNrcz8ub25TdW1iaXRDYWxsQmFjayAmJlxyXG4gICAgICAgICAgICAgICAgICBjb252ZXJGdW5jdGlvbihcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnByb3BzLm9uQ2FsbEJhY2tzPy5vblN1bWJpdENhbGxCYWNrLFxyXG4gICAgICAgICAgICAgICAgICAgIHsgcGFnZVJlZjogdGhpcy5wcm9wcy5wYWdlUmVmIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5VdGlsc1xyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZVJlbG9hZCgpO1xyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZm9ybXM9e2VkaXRvckZvcm1zfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFVybD17c3VibWl0VXJsfVxyXG4gICAgICAgICAgICAgIHN1Ym1pdFBhcmFtcz17c3VibWl0UGFyYW1zfVxyXG4gICAgICAgICAgICAgIG9uU3VibWl0PXt0aGlzLnByb3BzLm9uU3VibWl0fVxyXG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZT17ZGVmYXVsdFZhbHVlfVxyXG4gICAgICAgICAgICAgIG9uSGlkZUZvcm09e3RoaXMucHJvcHMub25IaWRlRm9ybX1cclxuICAgICAgICAgICAgICBvbkZvcm1DaGFuZ2U9e3RoaXMucHJvcHMub25Gb3JtQ2hhbmdlfVxyXG4gICAgICAgICAgICAgIGZvcm1UeXBlPXt0aGlzLnByb3BzLmZvcm1UeXBlIHx8IFwiYXV0b1wifVxyXG4gICAgICAgICAgICAgIGNoYW5nZVZhbGlkPXtmb3JtQ2hhbmdlVmFsaWR9XHJcbiAgICAgICAgICAgICAgVXRpbHM9e3RoaXMucHJvcHMuVXRpbHN9XHJcbiAgICAgICAgICAgICAgcmVxdWVzdE9iamVjdD17e1xyXG4gICAgICAgICAgICAgICAgYWRkVXJsOiByZXF1ZXN0VXJscy5hZGRVcmwsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JVcmw6IHJlcXVlc3RVcmxzLmVkaXRvclVybCxcclxuICAgICAgICAgICAgICAgIGFkZFBhcmFtczogcmVxdWVzdFBhcmFtcy5hZGRQYXJhbXMsXHJcbiAgICAgICAgICAgICAgICBlZGl0b3JQYXJhbXM6IHJlcXVlc3RQYXJhbXMuZWRpdG9yUGFyYW1zLFxyXG4gICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgZnVuY3M9e3RoaXMucHJvcHMuZnVuY3N9XHJcbiAgICAgICAgICAgICAgey4uLmZvcm1Qcm9wc31cclxuICAgICAgICAgICAgLz5cclxuICAgICAgICAgICl9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgKTtcclxuICB9XHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgQmFzZVBhZ2U7XHJcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLE9BQU9BLEtBQUssSUFBSUMsYUFBYSxRQUFtQixPQUFPO0FBQ3ZELE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsSUFBSSxNQUFNLGlCQUFpQjtBQUNsQyxPQUFPQyxNQUFNLE1BQU0sbUJBQW1CO0FBQ3RDLE9BQU9DLEtBQUssTUFBTSxrQkFBa0I7QUFDcEMsT0FBT0MsT0FBTyxNQUFNLG9CQUFvQjtBQUN4QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLFVBQVUsTUFBeUIsbUJBQW1CO0FBQzdELE9BQU9DLEdBQUcsTUFBTSxZQUFZO0FBQzVCLE9BQU8scUJBQXFCO0FBRzVCLFNBQ0VDLFlBQVksRUFDWkMsV0FBVyxFQUNYQyxZQUFZLEVBQ1pDLGFBQWEsRUFDYkMsWUFBWSxFQUNaQyxnQkFBZ0IsRUFDaEJDLGNBQWMsUUFDVCxtQkFBbUI7QUFDMUIsU0FBU0MsY0FBYyxFQUFFQyxPQUFPLFFBQWlCLGFBQWE7QUFDOUQsT0FBT0MsT0FBTyxNQUFNLGFBQWE7QUFDakMsT0FBT0MsTUFBTSxNQUFNLGNBQWM7QUFDakMsU0FBU0MsVUFBVSxFQUFTQyxtQkFBbUIsUUFBUSxtQkFBbUI7QUFDMUUsT0FBT0MsWUFBWSxNQUFNLGlCQUFpQjtBQUcxQyxTQUFTQyxjQUFjLEVBQUVDLGFBQWEsUUFBUSxTQUFTO0FBaUJ2RCxNQUFNQyxNQUFNLEdBQUcsSUFBSTtBQXVGbkIsTUFBTUMsUUFBUSxTQUFTMUIsYUFBYSxDQUF3QjtFQVMxRDJCLFdBQVdB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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","converFunction","getLess","request","config","getStorage","getButtonPermissons","HeaderSearch","convertColumns","getNewColumns","styles","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","moreOpen","elementHeight","permissionButtons","queryParams","componentDidMount","_this$pageContentRef$","initData","permisson","pageContentRef","current","clientHeight","setState","componentDidUpdate","_this$pageContentRef$2","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","doSubmit","data","_this$editorRef$curre","label","arguments","undefined","editorRef","showForm","_this$editorRef","editorflag","newValue","_objectSpread","show","hideForm","_this$editorRef$curre2","setLoading","loading","_this$editorRef$curre3","setEditFormValues","_this$editorRef$curre4","setFormValue","getEditFormValues","_this$editorRef$curre5","getFormValue","onDelete","_this$tableRef$curren","_this$tableRef$curren2","deleteUrl","deleteParams","deletePosition","buttonClick","requestParams","requestUrls","requestConfig","_this","tableRef","getSelectedRowKeys","getSelectedRowDatas","url","warning","confirm","onOk","pageRef","record","ids","id","funcs","Utils","Error","dataParams","otherParams","_objectWithoutProperties","_excluded","defaultParams","method","autoPrefix","join","finalParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_tableStore$requestCo","_this$tableRef$curren3","defaultRequestConfig","tableProps","store","tableStore","convertQueryParams","requestConig","storeConfig","storeParams","otherStoreConfig","_excluded2","load","_tableStore$requestCo2","_this$props$onCallBac3","onQueryCallBack","tableReload","_this$tableRef$curren4","autoLoad","reload","callback","_res$data","records","currentPage","_this$tableRef$curren5","treeLoad","_this$treeRef$current","treeRef","_this$tableRef$curren6","_this$tableRef$curren7","setSelectedRowKeys","_this$tableRef$curren8","setSelectedRowDatas","_this$tableRef$curren9","resetSelectedRowKeys","_this$tableRef$curren10","_this$searchRef2","fromValue","getChildrenData","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","showSearch","_item$props","pageType","onClick","icon","_excluded3","createElement","className","_extends","style","marginLeft","marginRight","title","placement","open","onOpenChange","renderCloumnButton","columnButtons","rowRecord","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded4","eventOption","Uitls","func","Function","push","e","eval","number","buttonNumber","_item$props3","_excluded5","Number","_item$props4","_excluded6","trigger","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac4","_this$props$onCallBac5","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","setTableData","_this$tableRef$curren11","setData","setTreeData","_this$treeRef$current2","converParams","render","_this2","_tableProps$toolbar","_tableProps$toolbar2","columns","submitUrl","formProps","formPageProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","permission","has","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded7","newTableStore","_newTableStore$reques","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded8","tableParams","defaultValue","menuCode","permissons","tableColumn","searchForms","editorForms","toolButtons","buttonMap","editor","delete","search","returnButton","_buttonMap$code","onEditor","_this2$props$onCallBa","_this2$props$onCallBa2","onEditorCallBack","onSearchCallBack","checkPerssion","indexOf","onAdd","_this$props$onCallBac6","_this$props$onCallBac7","onAddCallBack","bind","danger","Array","isArray","child","_child$props","_child$props2","_child$props3","_child$props4","_child$props5","_item$props5","_item$props6","_item$props7","_item$props8","_item$props9","dataIndex","align","textAlign","width","fixed","reacord","Fragment","searchFlag","tableTool","toolFlag","toolbar","tools","tableHeaderHeight","toolHeight","paddingHeight","tableContentHeight","PaginationHeight","pagination","tableHeight","tableSrollHeight","scroll","x","y","ref","pageTitle","display","checkable","searchable","onSelect","onReset","_this$searchRef$curre3","searchFormProps","height","expandIcon","_ref","_record$childNodes","_record$childNodes2","expanded","onExpand","onChange","onToolClick","onRefresh","_this$props$onCallBac8","_this$props$onCallBac9","onSumbitCallBack","forms","onSubmit","onHideForm","onFormChange","changeValid","requestObject","addUrl","editorUrl","addParams","editorParams"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport EditorForm, { FormPageProps } from \"../FormPage/index\";\r\nimport cls from \"classnames\";\r\nimport \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { converFunction, getLess, getNode } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport config from \"../../config\";\r\nimport { getStorage, px2vw, getButtonPermissons } from \"@bj-nsc/functions\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\nimport nscfile from \"nsc-file\";\r\nimport { convertColumns, getNewColumns } from \"./utils\";\r\n\r\ntype ButtonItem = string | {\r\n code: string;\r\n recordShow?: string | Function;\r\n}\r\n\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\nconst styles = null;\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends FormPageProps { }\r\ninterface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deletePosition?: \"toolbar\" | \"row\";\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: ButtonItem[]; //按钮集合 ['add','delete','search','editor']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n formProps?: FormProps;\r\n actionProps?: {\r\n textAlign?: string;\r\n showIcon?: boolean;\r\n width?: number;\r\n buttonNumber?: number | \"all\";\r\n };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any; //树点击查询后回调\r\n onQueryCallBack?: any; //查询回调,查询数据后回调\r\n onSumbitCallBack?: any; //保存回调,保存数据成功后回调\r\n onDeleteCallBack?: any; //删除按钮回调,删除数据后执行\r\n onEditorCallBack?: any; //编辑按钮回调,打开弹框后执行\r\n onAddCallBack?: any; //添加按钮回调,打开弹框后执行\r\n onSearchCallBack?: any; //列表查询按钮回调,打开弹框后执行\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n formPageProps?: {};\r\n buttonClick?: {\r\n onAdd?: () => void;\r\n onEditor?: (value?: any) => void;\r\n onSearch?: (value?: any) => void;\r\n onDelete?: (value?: any) => void;\r\n };\r\n permission?: {\r\n has?: boolean;\r\n menuCode?: string;\r\n };\r\n requestParams?: {\r\n //需要额外传的固定请求参数\r\n addParams?: Object; //新增固定参数\r\n editorParams?: Object; //编辑固定参数\r\n queryParams?: Object; //查询固定参数\r\n deleteParams?: Object; //删除固定参数\r\n };\r\n requestUrls?: {\r\n addUrl?: string; //新增url\r\n editorUrl?: string; //编辑url\r\n deleteUrl?: string; //删除url\r\n };\r\n funcs?: any;\r\n requestConfig?: any;\r\n [propsName: string]: any;\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n pageRef = React.createRef<any>();\r\n pageContentRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n constructor(props: any) {\r\n super(props);\r\n let { storePrefix } = config();\r\n let type = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"formType\" : \"formType\"\r\n );\r\n type = type?.content;\r\n let size = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"tableSize\" : \"tableSize\"\r\n );\r\n size = size?.content;\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n formType: type || \"modal\",\r\n tableSize: size || \"default\",\r\n treeSearchPrams: {},\r\n popopens: {},\r\n moreOpen: false,\r\n elementHeight: 0,\r\n permissionButtons: [],\r\n queryParams: {},\r\n };\r\n }\r\n componentDidMount() {\r\n const { initData, permisson = {} } = this.props;\r\n const elementHeight = this.pageContentRef.current?.clientHeight;\r\n this.setState({\r\n elementHeight,\r\n });\r\n initData && initData();\r\n }\r\n componentDidUpdate() {\r\n const elementHeight = this.pageContentRef.current?.clientHeight;\r\n if (elementHeight > this.state.elementHeight) {\r\n this.setState({\r\n elementHeight,\r\n });\r\n }\r\n }\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n doSubmit(data, label = \"编辑\") {\r\n this.editorRef.current?.doSubmit(data, label);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\", callBack?: any) {\r\n let newValue = value ? { ...value } : null;\r\n this.editorRef?.current?.show(newValue, editorflag, callBack);\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value, type = \"编辑\") {\r\n this.editorRef.current?.setFormValue(value, type);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFormValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any) {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams = {},\r\n deletePosition = \"toolbar\",\r\n buttonClick = {},\r\n requestParams = {},\r\n requestUrls = {},\r\n requestConfig = {},\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n const selectedRowDatas = this.tableRef.current?.getSelectedRowDatas();\r\n let url = requestUrls.deleteUrl ? requestUrls.deleteUrl : deleteUrl;\r\n let params: any = requestParams.deleteParams\r\n ? requestParams.deleteParams\r\n : deleteParams;\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (buttonClick.onDelete) {\r\n converFunction(\r\n buttonClick.onDelete,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: deletePosition == \"toolbar\" ? selectedRowDatas : data,\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys : data?.id,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!url) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const { data: dataParams = {}, ...otherParams } = params;\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n ...dataParams,\r\n },\r\n ...requestConfig,\r\n };\r\n let finalParams = {} as any;\r\n finalParams = { ...defaultParams, ...otherParams };\r\n request(url, {\r\n ...finalParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n converFunction(\r\n _this.props.onCallBacks?.onDeleteCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\r\n _this.tableLoad(value);\r\n } else {\r\n message.error(\"删除失败!\");\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n const {\r\n requestConfig: defaultRequestConfig = {},\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore } = tableProps;\r\n let queryParams: any = this.convertQueryParams()\r\n let data = queryParams.data || queryParams.params || {};\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n const { requestConig: storeConfig = {} } = tableStore;\r\n const { params: storeParams = {}, ...otherStoreConfig } = storeConfig;\r\n this.tableRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...otherStoreConfig,\r\n ...requestConfig,\r\n params: { ...storeParams, ...finalParams },\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const {\r\n onSearch,\r\n onCallBacks,\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore } = tableProps;\r\n let queryParams: any = this.convertQueryParams()\r\n let data = queryParams.data || queryParams.params || {};\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n if (onSearch) {\r\n onSearch(finalParams);\r\n return;\r\n }\r\n if (onSearch) {\r\n onSearch({ ...finalParams, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...finalParams, ...this.state.treeSearchPrams });\r\n onCallBacks?.onQueryCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onQueryCallBack,\r\n { pageRef: this.props.pageRef, params: params },\r\n this.props.Utils\r\n );\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n treeLoad(params: any, requestConfig = {}) {\r\n const { requestConfig: defaultRequestConfig = {} } = this.props;\r\n this.treeRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n return this.tableRef.current?.setSelectedRowKeys(data);\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n return this.tableRef.current?.setSelectedRowDatas(data);\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n let key = \"\";\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(item);\r\n } else {\r\n key = item[rowKey];\r\n }\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, key];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, key];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, toolbarFlag) {\r\n const flag = toolbuttons.length > 5;\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n >\r\n <Button\r\n key={index}\r\n onClick={() => {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n </div>\r\n );\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-tool-buttons\"))}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n key={index}\r\n open={this.state.moreOpen}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n this.setState({\r\n moreOpen: true,\r\n });\r\n } else {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n }\r\n }}\r\n // open={true}\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: index == toolbuttons.length - 1 ? 0 : 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, rowRecord: any) {\r\n const { actionProps, tableProps = {} } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n const { rowKey = \"id\" } = tableProps;\r\n\r\n let key = \"\";\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(rowRecord);\r\n } else {\r\n key = rowRecord[rowKey];\r\n }\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n\r\n try {\r\n const eventOption = { record: rowRecord, pageRef: this.props.pageRef, funcs: this.props.funcs };\r\n const Utils = { ...this.props.Uitls }\r\n let func = new Function(\"eventOption,Utils\", recordShow);\r\n const show = func(eventOption, Utils);\r\n show && newButtons.push(item);\r\n } catch (e) {\r\n let record = rowRecord\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n }\r\n\r\n // converFunction(\r\n // recordShow,\r\n // { pageRef: this.props.pageRef, record: record, },\r\n // this.props.Utils\r\n // );\r\n // if (eval(recordShow)) {\r\n // newButtons.push(item);\r\n // }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(rowRecord);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n let number = actionProps?.buttonNumber\r\n ? actionProps?.buttonNumber\r\n : baseActionColumn?.buttonNumber\r\n ? baseActionColumn?.buttonNumber\r\n : 3;\r\n let flag = false;\r\n if (number == \"all\") {\r\n flag = false;\r\n } else {\r\n flag = newButtons.length > number;\r\n }\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > Number(number) - 1) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = { ...this.state.popopens };\r\n data[rowRecord.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(rowRecord);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < number) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(rowRecord);\r\n }}\r\n icon={icon}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n } else if (index == number) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n open={this.state.popopens[key] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[key] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"nsc-basepage-editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(rowRecord);\r\n }}\r\n {...params}\r\n type=\"link\"\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.treeSelectCallBack,\r\n { pageRef: this.props.pageRef, selectedKeys: selectedKeys, obj: obj },\r\n this.props.Utils\r\n );\r\n // utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n // selectedKeys,\r\n // obj,\r\n // ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n convertQueryParams() {\r\n const { requestParams = {} } = this.props;\r\n let queryParams: any = requestParams.queryParams;\r\n if (queryParams && typeof queryParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", queryParams);\r\n let converParams = func(Utils);\r\n queryParams = converParams;\r\n } else {\r\n queryParams = queryParams || {};\r\n }\r\n return queryParams;\r\n }\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formProps = {},\r\n formPageProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionProps,\r\n deletePosition = \"toolbar\",\r\n buttonClick = {},\r\n permission = { has: false },\r\n requestParams = {},\r\n requestUrls = {},\r\n } = this.props;\r\n const {\r\n store: tableStore = {},\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n title: tableTitle,\r\n ...othertableParams\r\n } = tableProps;\r\n let newTableStore = { ...tableStore }\r\n if (requestParams.queryParams) {\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams?.data || queryParams?.params || {};\r\n newTableStore.requestConfig = {\r\n params: { ...data, ...newTableStore.requestConfig?.params },\r\n };\r\n }\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n title: treeTitle,\r\n ...othertreeParams\r\n } = treeProps;\r\n\r\n let tableParams = {\r\n filterColumn,\r\n store: { ...newTableStore },\r\n ...othertableParams,\r\n } as any;\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n let permissionButtons = [];\r\n if (permission.has && permission.menuCode) {\r\n permissionButtons =\r\n getButtonPermissons(permission.menuCode).permissons || [];\r\n }\r\n const obj = convertColumns(columns, {})\r\n let tableColumn: any[] = getNewColumns(columns, this.props)\r\n const searchForms = obj.searchForms || []\r\n const editorForms = obj.editorForms || []\r\n const toolButtons: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n const buttonMap = {\r\n // add: { name: \"新增\", code: \"add\", icon: <PlusOutlined /> },\r\n editor: { name: \"编辑\", code: \"editor\", icon: <EditOutlined /> },\r\n delete: { name: \"删除\", code: \"delete\", icon: <DeleteOutlined /> },\r\n search: { name: \"查看\", code: \"search\", icon: <EyeOutlined /> },\r\n };\r\n const returnButton = (code, show = \"\") => {\r\n let props = {};\r\n if (show) {\r\n props = { recordShow: show };\r\n }\r\n return (\r\n <Button\r\n onClick={(record: any) => {\r\n if (code == \"delete\") {\r\n this.onDelete(record);\r\n } else {\r\n if (code == \"editor\" && buttonClick.onEditor) {\r\n converFunction(\r\n buttonClick.onEditor,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n } else if (code == \"search\" && buttonClick.onSearch) {\r\n converFunction(\r\n buttonClick.onSearch,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, code);\r\n return;\r\n }\r\n\r\n this.showForm(record.attribute || record, code, () => {\r\n let callBack = code == \"editor\" ? this.props.onCallBacks?.onEditorCallBack : this.props.onCallBacks?.onSearchCallBack\r\n callBack && converFunction(\r\n callBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n }\r\n }}\r\n icon={showIcon ? buttonMap[code].icon : null}\r\n type=\"link\"\r\n {...props}\r\n >\r\n {buttonMap[code]?.name}\r\n </Button>\r\n );\r\n };\r\n const checkPerssion = (code) => {\r\n if (!permission.has) {\r\n return true;\r\n } else {\r\n return permissionButtons.indexOf(code) > -1;\r\n }\r\n };\r\n buttons.map((item: any) => {\r\n if ((item == \"add\" || item.code == \"add\") && checkPerssion(\"add\")) {\r\n toolButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm, buttonClick = {} } = this.props;\r\n if (buttonClick?.onAdd) {\r\n converFunction(\r\n buttonClick.onAdd,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm(null, null, () => {\r\n this.props.onCallBacks?.onAddCallBack && converFunction(\r\n this.props.onCallBacks?.onAddCallBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n\r\n\r\n\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n } else if (\r\n (item == \"delete\" || item.code == \"delete\") &&\r\n checkPerssion(\"delete\")\r\n ) {\r\n if (deletePosition == \"toolbar\") {\r\n toolButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.onDelete.bind(this)}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n } else {\r\n columnButtons.push(returnButton(item.code || item, item.recordShow));\r\n }\r\n } else {\r\n if (checkPerssion(item.code ? item.code : item)) {\r\n columnButtons.push(\r\n returnButton(item.code ? item.code : item, item.recordShow)\r\n );\r\n }\r\n }\r\n });\r\n\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (\r\n child?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n toolButtons.push(child);\r\n } else if (\r\n (child?.props?.pageType == \"columnButton\" || child?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (\r\n item?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(item?.props?.code)\r\n ) {\r\n toolButtons.push(item);\r\n } else if (\r\n (item?.props?.pageType == \"columnButton\" || item?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(item?.props?.code)\r\n ) {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\" && checkPerssion(props?.code)) {\r\n toolButtons.push(children);\r\n } else if (\r\n (props?.pageType == \"columnButton\" || props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(props?.code)\r\n ) {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionProps?.textAlign\r\n ? actionProps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"left\",\r\n width: actionProps?.width\r\n ? actionProps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-basepage-action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n\r\n if (columnOrder)\r\n tableColumn = [\r\n {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n },\r\n ...tableColumn,\r\n ];\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag =\r\n showToolButton &&\r\n toolButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\";\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n let tableHeaderHeight = 55;\r\n let toolHeight = tableTitle || toolFlag ? 50 : 0;\r\n let paddingHeight = 20 * 2; //上下间距\r\n let tableContentHeight =\r\n elementHeight - toolHeight - paddingHeight;\r\n let PaginationHeight = tableProps.pagination !== false ? (32 + 16) : 0 //32 为分页器高度,16为margin间距\r\n let tableHeight = tableContentHeight - PaginationHeight;\r\n let tableSrollHeight = tableContentHeight - tableHeaderHeight - PaginationHeight;\r\n // if (tableProps.pagination !== false) {\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", y: tableSrollHeight, ...scroll },\r\n };\r\n // }\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage\"), className)}\r\n ref={this.pageRef}\r\n >\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"nsc-basepage-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div className={getLess(styles, \"nsc-basepage-left\")}>\r\n {treeTitle && (\r\n <div className={getLess(styles, \"tree-title\")}>{treeTitle}</div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"tree-content\"), {\r\n [getLess(styles, \"tree-content-notitle\")]: !treeTitle,\r\n })}\r\n >\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n ref={this.treeRef}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-right\"), {\r\n [getLess(styles, \"nsc-basepage-no-left-right\")]: !showLeft,\r\n })}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <div className={getLess(styles, \"nsc-basepage-headersearch\")}>\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={() => {\r\n if (this.props.onReset) {\r\n this.props.onReset();\r\n return;\r\n }\r\n this.searchRef.current?.resetFields();\r\n this.tableLoad({});\r\n }}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-content\"), {\r\n [getLess(styles, \"nsc-basepage-content-gap\")]: !searchFlag,\r\n })}\r\n ref={this.pageContentRef}\r\n >\r\n {(tableTitle || toolFlag) && (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-table-title\"), {\r\n [getLess(styles, \"nsc-basepage-title-width\")]: !toolbarFlag,\r\n })}\r\n >\r\n <div>{tableTitle}</div>\r\n {toolFlag && this.renderToolButtons(toolButtons, toolbarFlag)}\r\n </div>\r\n )}\r\n\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-table\"),\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top\")]: !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top2\")]:\r\n toolbarFlag && !toolFlag,\r\n }\r\n )}\r\n style={{ height: tableContentHeight }}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded &&\r\n record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n style={{ height: tableHeight }}\r\n {...tableParams}\r\n // pagination={false}\r\n />\r\n {/* <div></div> */}\r\n </div>\r\n </div>\r\n </div>\r\n {editorForm && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onSumbitCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\r\n this.tableReload();\r\n }}\r\n forms={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit}\r\n defaultValue={defaultValue}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n Utils={this.props.Utils}\r\n requestObject={{\r\n addUrl: requestUrls.addUrl,\r\n editorUrl: requestUrls.editorUrl,\r\n addParams: requestParams.addParams,\r\n editorParams: requestParams.editorParams,\r\n }}\r\n funcs={this.props.funcs}\r\n {...formProps}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","names":["React","PureComponent","Table","Tree","Button","Modal","Popover","message","EditorForm","cls","DownOutlined","EyeOutlined","EditOutlined","RightOutlined","PlusOutlined","EllipsisOutlined","DeleteOutlined","converFunction","getLess","request","config","getStorage","getButtonPermissons","HeaderSearch","convertColumns","getNewColumns","styles","BasePage","constructor","props","_type","_size","_defineProperty","createRef","checkedTreeKeys","name","userType","account","state","value","deptId","onSearch","selected","res","key","keys","length","tableWrapperRef","current","tableHeader","getElementsByClassName","headerHeight","getBoundingClientRect","height","tableHeaderHeight","setState","storePrefix","type","content","size","selectedRowKeys","selectedRowDatas","treeSelectedKey","expand","formType","tableSize","treeSearchPrams","popopens","moreOpen","elementHeight","permissionButtons","queryParams","componentDidMount","_this$pageContentRef$","initData","permisson","pageContentRef","clientHeight","window","addEventListener","calculateTableHeaderHeight","setTimeout","componentDidUpdate","prevProps","_this$pageContentRef$2","columns","componentWillUnmount","removeEventListener","setSearchParams","params","callBack","_this$searchRef$curre","searchRef","doSubmit","data","_this$editorRef$curre","label","arguments","undefined","editorRef","showForm","_this$editorRef","editorflag","newValue","_objectSpread","show","hideForm","_this$editorRef$curre2","setLoading","loading","_this$editorRef$curre3","setEditFormValues","_this$editorRef$curre4","setFormValue","getEditFormValues","_this$editorRef$curre5","getFormValue","onDelete","_this$tableRef$curren","_this$tableRef$curren2","deleteUrl","deleteParams","deletePosition","buttonClick","requestParams","requestUrls","requestConfig","_this","tableRef","getSelectedRowKeys","getSelectedRowDatas","url","warning","confirm","onOk","pageRef","record","ids","id","funcs","Utils","Error","dataParams","otherParams","_objectWithoutProperties","_excluded","defaultParams","method","autoPrefix","join","finalParams","then","code","_this$searchRef","_this$props$onCallBac","_this$props$onCallBac2","success","getSearchValues","onCallBacks","onDeleteCallBack","tableLoad","error","catch","console","log","_tableStore$requestCo","_this$tableRef$curren3","defaultRequestConfig","tableProps","store","tableStore","convertQueryParams","requestConig","storeConfig","storeParams","otherStoreConfig","_excluded2","load","_tableStore$requestCo2","_this$props$onCallBac3","onQueryCallBack","tableReload","_this$tableRef$curren4","autoLoad","reload","callback","_res$data","records","currentPage","_this$tableRef$curren5","treeLoad","_this$treeRef$current","treeRef","_this$tableRef$curren6","_this$tableRef$curren7","setSelectedRowKeys","_this$tableRef$curren8","setSelectedRowDatas","_this$tableRef$curren9","resetSelectedRowKeys","_this$tableRef$curren10","_this$searchRef2","fromValue","getChildrenData","rowKey","resKey","childNodes","children","map","item","index","renderToolButtons","toolbuttons","toolbarFlag","flag","showSearch","_item$props","pageType","onClick","icon","_excluded3","createElement","className","_extends","style","marginLeft","marginRight","title","placement","open","onOpenChange","renderCloumnButton","columnButtons","rowRecord","actionProps","baseActionColumn","newButtons","showIcon","_item$props2","recordShow","_excluded4","eventOption","Uitls","func","Function","push","e","eval","number","buttonNumber","_item$props3","_excluded5","Number","_item$props4","_excluded6","trigger","treeSelect","selectedKeys","obj","_this$searchRef3","_this$props$onCallBac4","_this$props$onCallBac5","keyword","searchKey","searchField","parantSelect","treeProps","selectedNodes","dataref","attribute","isLeaf","onTreeSelect","treeSelectCallBack","resetSearch","_this$searchRef$curre2","resetFields","getText","text","_props$data","newText","i","setTableData","_this$tableRef$curren11","setData","setTreeData","_this$treeRef$current2","converParams","render","_this2","_tableProps$toolbar","_tableProps$toolbar2","submitUrl","formProps","formPageProps","showLeft","submitParams","showToolButton","buttons","editorForm","onShowForm","formChangeValid","toolButtonPosition","permission","has","filterColumn","actionColumn","showRowSelection","columnOrder","expandable","tableTitle","othertableParams","_excluded7","newTableStore","_newTableStore$reques","treeStore","treeSearch","titleAlias","treeTitle","othertreeParams","_excluded8","tableParams","defaultValue","menuCode","permissons","tableColumn","searchForms","editorForms","toolButtons","buttonMap","editor","delete","search","returnButton","_buttonMap$code","onEditor","_this2$props$onCallBa","_this2$props$onCallBa2","onEditorCallBack","onSearchCallBack","checkPerssion","indexOf","onAdd","_this$props$onCallBac6","_this$props$onCallBac7","onAddCallBack","bind","danger","Array","isArray","child","_child$props","_child$props2","_child$props3","_child$props4","_child$props5","_item$props5","_item$props6","_item$props7","_item$props8","_item$props9","dataIndex","align","textAlign","width","fixed","reacord","Fragment","searchFlag","tableTool","toolFlag","toolbar","tools","toolHeight","paddingHeight","tableContentHeight","PaginationHeight","pagination","tableHeight","tableSrollHeight","scroll","x","y","ref","pageTitle","display","checkable","searchable","onSelect","onReset","_this$searchRef$curre3","searchFormProps","expandIcon","_ref","_record$childNodes","_record$childNodes2","expanded","onExpand","onChange","onToolClick","onRefresh","_this$props$onCallBac8","_this$props$onCallBac9","onSumbitCallBack","forms","onSubmit","onHideForm","onFormChange","changeValid","requestObject","addUrl","editorUrl","addParams","editorParams"],"sources":["../../../src/components/page/BasePage/index.tsx"],"sourcesContent":["import React, { PureComponent, ReactNode } from \"react\";\r\nimport Table from \"../../base/table\";\r\nimport Tree from \"../../base/tree\";\r\nimport Button from \"../../base/button\";\r\nimport Modal from \"../../base/modal\";\r\nimport Popover from \"../../base/popover\";\r\nimport message from \"../../base/message\";\r\nimport EditorForm, { FormPageProps } from \"../FormPage/index\";\r\nimport cls from \"classnames\";\r\nimport \"./index.module.less\";\r\nimport Store, { PageStore, StoreProps } from \"@bj-nsc/msn\";\r\nimport { utils } from \"@bj-nsc/msn/lib/utils\";\r\nimport {\r\n DownOutlined,\r\n EyeOutlined,\r\n EditOutlined,\r\n RightOutlined,\r\n PlusOutlined,\r\n EllipsisOutlined,\r\n DeleteOutlined,\r\n} from \"@ant-design/icons\";\r\nimport { converFunction, getLess, getNode } from \"../../utils\";\r\nimport request from \"nsc-request\";\r\nimport config from \"../../config\";\r\nimport { getStorage, px2vw, getButtonPermissons } from \"@bj-nsc/functions\";\r\nimport HeaderSearch from \"../HeaderSearch\";\r\nimport { PaginationProps } from \"antd\";\r\nimport nscfile from \"nsc-file\";\r\nimport { convertColumns, getNewColumns } from \"./utils\";\r\nimport ReactDOM from 'react-dom';\r\n\r\ntype ButtonItem = string | {\r\n code: string;\r\n recordShow?: string | Function;\r\n}\r\n\r\ninterface TableProps {\r\n actionColumn?: boolean; //是否显示操作列\r\n store?: StoreProps;\r\n filterColumn?: boolean; //是否显示过滤按钮\r\n showRowSelection?: boolean; //是否表格勾选列\r\n pagination?: boolean | PaginationProps; //是否显示分页\r\n columnOrder?: boolean; //是否显示表格序列\r\n [propsName: string]: any;\r\n}\r\nconst styles = null;\r\ninterface TreeProps {\r\n store?: StoreProps;\r\n showSearch?: boolean; //是否显示搜索框\r\n searchKey?: string; //搜索value对应的key\r\n searchField?: string; //查询对应的key\r\n titleAlias?: string; //树title对应的key,默认title\r\n nodePorps?: object;\r\n parantSelect?: boolean;\r\n [propsName: string]: any;\r\n}\r\ninterface FormProps extends FormPageProps { }\r\ninterface NSCBaseBageProps {\r\n showSearch?: boolean; //是否显示头部搜索栏\r\n tableProps?: TableProps; //表格参数\r\n treeProps?: TreeProps; //左侧树参数\r\n submitParams?: Object; //添加参数,默认mothod:post, 参数通过data传递\r\n submitUrl?: string;\r\n onSubmit?: (value?: any, label?: any) => void;\r\n columns: Array<Object>;\r\n showLeft?: boolean; //是否显示左侧目录树\r\n showToolButton?: boolean; //是否显示按钮栏\r\n editorForm?: boolean; //是否需要表单功能 , 为false 编辑,查看,新增功能均不可用\r\n deleteUrl?: string; //删除url\r\n onDelete?: (selectedKeys?: Array<string>) => void; //删除参数,默认mothod:post, 参数通过ids拼接传递给后台\r\n deletePosition?: \"toolbar\" | \"row\";\r\n deleteParams?: Object;\r\n children?: React.ReactNode;\r\n onSearch?: (value?: any) => void;\r\n onReset?: () => void;\r\n initData?: any; //初始化回调函数,在componentDidMount中调用\r\n buttons?: ButtonItem[]; //按钮集合 ['add','delete','search','editor']\r\n onShowForm?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onHideForm?: () => void; //打开表单回调\r\n onFormChange?: (changedValues?: any, allValues?: any) => void; //表单onChange回调\r\n formType?: \"modal\" | \"drawer\";\r\n formChangeValid?: boolean; //表单校验\r\n className?: any;\r\n toolButtonPosition?: \"right\" | \"buttom\";\r\n pageTitle?: string | ReactNode;\r\n formProps?: FormProps;\r\n actionProps?: {\r\n textAlign?: string;\r\n showIcon?: boolean;\r\n width?: number;\r\n buttonNumber?: number | \"all\";\r\n };\r\n searchFormProps?: { wrapperCol?: any; labelCol?: any };\r\n onTreeSelect?: (value?: any, editorFlag?: string) => void; //打开表单回调\r\n onCallBacks?: {\r\n treeSelectCallBack?: any; //树点击查询后回调\r\n onQueryCallBack?: any; //查询回调,查询数据后回调\r\n onSumbitCallBack?: any; //保存回调,保存数据成功后回调\r\n onDeleteCallBack?: any; //删除按钮回调,删除数据后执行\r\n onEditorCallBack?: any; //编辑按钮回调,打开弹框后执行\r\n onAddCallBack?: any; //添加按钮回调,打开弹框后执行\r\n onSearchCallBack?: any; //列表查询按钮回调,打开弹框后执行\r\n };\r\n pageType?: \"normal\" | \"tabspage\";\r\n formPageProps?: {};\r\n buttonClick?: {\r\n onAdd?: () => void;\r\n onEditor?: (value?: any) => void;\r\n onSearch?: (value?: any) => void;\r\n onDelete?: (value?: any) => void;\r\n };\r\n permission?: {\r\n has?: boolean;\r\n menuCode?: string;\r\n };\r\n requestParams?: {\r\n //需要额外传的固定请求参数\r\n addParams?: Object; //新增固定参数\r\n editorParams?: Object; //编辑固定参数\r\n queryParams?: Object; //查询固定参数\r\n deleteParams?: Object; //删除固定参数\r\n };\r\n requestUrls?: {\r\n addUrl?: string; //新增url\r\n editorUrl?: string; //编辑url\r\n deleteUrl?: string; //删除url\r\n };\r\n funcs?: any;\r\n requestConfig?: any;\r\n [propsName: string]: any;\r\n}\r\n\r\nclass BasePage extends PureComponent<NSCBaseBageProps, any> {\r\n tableRef = React.createRef<any>();\r\n treeRef = React.createRef<any>();\r\n searchRef = React.createRef<any>();\r\n editorRef = React.createRef<any>();\r\n pageRef = React.createRef<any>();\r\n pageContentRef = React.createRef<any>();\r\n dateFormat = {} as any;\r\n tableWrapperRef = React.createRef<HTMLDivElement>();\r\n constructor(props: any) {\r\n super(props);\r\n let { storePrefix } = config();\r\n let type = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"formType\" : \"formType\"\r\n );\r\n type = type?.content;\r\n let size = getStorage(\r\n storePrefix ? storePrefix + \"-\" + \"tableSize\" : \"tableSize\"\r\n );\r\n size = size?.content;\r\n this.state = {\r\n type: \"add\",\r\n selectedRowKeys: [],\r\n selectedRowDatas: [],\r\n treeSelectedKey: \"\",\r\n expand: false,\r\n formType: type || \"modal\",\r\n tableSize: size || \"default\",\r\n treeSearchPrams: {},\r\n popopens: {},\r\n moreOpen: false,\r\n elementHeight: 0,\r\n permissionButtons: [],\r\n queryParams: {},\r\n tableHeaderHeight: 0 // 添加表头高度到state\r\n };\r\n }\r\n componentDidMount() {\r\n const { initData, permisson = {} } = this.props;\r\n const elementHeight = this.pageContentRef.current?.clientHeight;\r\n \r\n // 添加窗口resize监听\r\n window.addEventListener('resize', this.calculateTableHeaderHeight);\r\n \r\n // 初始计算表头高度\r\n setTimeout(this.calculateTableHeaderHeight, 0);\r\n\r\n this.setState({\r\n elementHeight,\r\n });\r\n initData && initData();\r\n }\r\n componentDidUpdate(prevProps) {\r\n // 当columns改变时重新计算表头高度\r\n if (prevProps.columns !== this.props.columns) {\r\n setTimeout(this.calculateTableHeaderHeight, 0);\r\n }\r\n\r\n const elementHeight = this.pageContentRef.current?.clientHeight;\r\n if (elementHeight > this.state.elementHeight) {\r\n this.setState({\r\n elementHeight,\r\n });\r\n }\r\n }\r\n componentWillUnmount() {\r\n // 移除resize监听\r\n window.removeEventListener('resize', this.calculateTableHeaderHeight);\r\n }\r\n setSearchParams(params, callBack) {\r\n this.searchRef.current?.setSearchParams(params);\r\n callBack && callBack(params);\r\n }\r\n doSubmit(data, label = \"编辑\") {\r\n this.editorRef.current?.doSubmit(data, label);\r\n }\r\n\r\n onSelect = (checkedTreeKeys: any) => {\r\n const { name, userType, account } = this.state;\r\n const value = { name, userType, account, deptId: checkedTreeKeys[0] };\r\n if (this.props.onSearch) {\r\n this.props.onSearch(value);\r\n }\r\n // this.tableLoad(value);\r\n };\r\n\r\n //显示表单\r\n showForm(value?: any, editorflag = \"add\", callBack?: any) {\r\n let newValue = value ? { ...value } : null;\r\n this.editorRef?.current?.show(newValue, editorflag, callBack);\r\n }\r\n\r\n //关闭表单\r\n hideForm() {\r\n this.editorRef.current?.hideForm();\r\n }\r\n\r\n setLoading(loading: boolean) {\r\n this.editorRef.current?.setLoading(loading);\r\n }\r\n\r\n setEditFormValues(value, type = \"编辑\") {\r\n this.editorRef.current?.setFormValue(value, type);\r\n }\r\n\r\n getEditFormValues() {\r\n return this.editorRef.current?.getFormValue();\r\n }\r\n\r\n //批量删除\r\n onDelete(data?: any) {\r\n const {\r\n deleteUrl,\r\n onDelete,\r\n deleteParams = {},\r\n deletePosition = \"toolbar\",\r\n buttonClick = {},\r\n requestParams = {},\r\n requestUrls = {},\r\n requestConfig = {},\r\n } = this.props;\r\n let _this = this;\r\n const selectedRowKeys = this.tableRef.current?.getSelectedRowKeys();\r\n const selectedRowDatas = this.tableRef.current?.getSelectedRowDatas();\r\n let url = requestUrls.deleteUrl ? requestUrls.deleteUrl : deleteUrl;\r\n let params: any = requestParams.deleteParams\r\n ? requestParams.deleteParams\r\n : deleteParams;\r\n if (deletePosition == \"toolbar\") {\r\n if (selectedRowKeys.length == 0) {\r\n message.warning(\"请选择要删除的数据!\");\r\n return;\r\n }\r\n }\r\n Modal.confirm({\r\n content: \"是否确认删除所选项?\",\r\n // centered:true,\r\n onOk: () => {\r\n if (buttonClick.onDelete) {\r\n converFunction(\r\n buttonClick.onDelete,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: deletePosition == \"toolbar\" ? selectedRowDatas : data,\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys : data?.id,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onDelete) {\r\n onDelete &&\r\n onDelete(deletePosition == \"toolbar\" ? selectedRowKeys : data);\r\n return;\r\n }\r\n if (!url) {\r\n throw new Error(\"url不能为空!\");\r\n }\r\n const { data: dataParams = {}, ...otherParams } = params;\r\n const defaultParams = {\r\n method: \"post\",\r\n autoPrefix: true,\r\n params: {\r\n ids: deletePosition == \"toolbar\" ? selectedRowKeys.join() : data.id,\r\n ...dataParams,\r\n },\r\n ...requestConfig,\r\n };\r\n let finalParams = {} as any;\r\n finalParams = { ...defaultParams, ...otherParams };\r\n request(url, {\r\n ...finalParams,\r\n })\r\n .then(function (res: any) {\r\n const { code } = res;\r\n if (code === 200) {\r\n message.success(\"删除成功!\");\r\n let value = _this.searchRef?.current?.getSearchValues();\r\n _this.props.onCallBacks?.onDeleteCallBack &&\r\n converFunction(\r\n _this.props.onCallBacks?.onDeleteCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\r\n _this.tableLoad(value);\r\n } else {\r\n message.error(\"删除失败!\");\r\n }\r\n })\r\n .catch(function (error: any) {\r\n console.log(\"error\", error);\r\n });\r\n },\r\n });\r\n }\r\n tableLoad(params: any, requestConfig = {}) {\r\n const {\r\n requestConfig: defaultRequestConfig = {},\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore } = tableProps;\r\n let queryParams: any = this.convertQueryParams()\r\n let data = queryParams.data || queryParams.params || {};\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n const { requestConig: storeConfig = {} } = tableStore;\r\n const { params: storeParams = {}, ...otherStoreConfig } = storeConfig;\r\n this.tableRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...otherStoreConfig,\r\n ...requestConfig,\r\n params: { ...storeParams, ...finalParams },\r\n });\r\n }\r\n //查询\r\n onSearch(params) {\r\n const {\r\n onSearch,\r\n onCallBacks,\r\n requestParams = {},\r\n tableProps = {},\r\n } = this.props;\r\n const { store: tableStore } = tableProps;\r\n let queryParams: any = this.convertQueryParams()\r\n let data = queryParams.data || queryParams.params || {};\r\n let finalParams = {\r\n ...data,\r\n ...tableStore.requestConfig?.params,\r\n ...params,\r\n };\r\n if (onSearch) {\r\n onSearch(finalParams);\r\n return;\r\n }\r\n if (onSearch) {\r\n onSearch({ ...finalParams, ...this.state.treeSearchPrams });\r\n return;\r\n }\r\n this.tableLoad({ ...finalParams, ...this.state.treeSearchPrams });\r\n onCallBacks?.onQueryCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onQueryCallBack,\r\n { pageRef: this.props.pageRef, params: params },\r\n this.props.Utils\r\n );\r\n }\r\n //表格重新加载\r\n tableReload(params = {}, autoLoad = true) {\r\n this.tableRef.current?.store?.reload({\r\n callback: (res) => {\r\n if (\r\n autoLoad &&\r\n res?.data?.records?.length == 0 &&\r\n this.state.currentPage !== 1\r\n ) {\r\n this.tableRef.current?.store?.reload({\r\n params: { current: 1, ...params },\r\n });\r\n }\r\n },\r\n });\r\n }\r\n treeLoad(params: any, requestConfig = {}) {\r\n const { requestConfig: defaultRequestConfig = {} } = this.props;\r\n this.treeRef.current?.store.load({\r\n ...defaultRequestConfig,\r\n ...requestConfig,\r\n params: params,\r\n });\r\n }\r\n getSelectedRowKeys() {\r\n return this.tableRef.current?.getSelectedRowKeys();\r\n }\r\n getSelectedRowDatas() {\r\n return this.tableRef.current?.getSelectedRowDatas();\r\n }\r\n setSelectedRowKeys(data: Array<String | Number>) {\r\n return this.tableRef.current?.setSelectedRowKeys(data);\r\n }\r\n setSelectedRowDatas(data: Array<Object>) {\r\n return this.tableRef.current?.setSelectedRowDatas(data);\r\n }\r\n resetSelectedRowKeys() {\r\n return this.tableRef.current?.resetSelectedRowKeys();\r\n }\r\n\r\n getSearchValues() {\r\n const fromValue = this.searchRef?.current?.getSearchValues();\r\n return { ...fromValue, ...this.state.treeSearchPrams };\r\n }\r\n\r\n getChildrenData(data, keys = []) {\r\n const { tableProps } = this.props;\r\n const { rowKey = \"id\" } = tableProps;\r\n let resKey = [];\r\n let key = \"\";\r\n if (data.childNodes) {\r\n const children = data.childNodes;\r\n children.map((item, index) => {\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(item);\r\n } else {\r\n key = item[rowKey];\r\n }\r\n if (item.childNodes) {\r\n this.getChildrenData(item.childNodes, keys);\r\n } else {\r\n resKey = [...keys, key];\r\n }\r\n });\r\n } else {\r\n resKey = [...keys, key];\r\n }\r\n return resKey;\r\n }\r\n\r\n renderToolButtons(toolbuttons: any, toolbarFlag) {\r\n const flag = toolbuttons.length > 5;\r\n const { showSearch = true } = this.props;\r\n const content = toolbuttons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, show, ...params } = item.props;\r\n if (index > 3) {\r\n return (\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n >\r\n <Button\r\n key={index}\r\n onClick={() => {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n onClick && onClick();\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n </div>\r\n );\r\n }\r\n });\r\n\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-tool-buttons\"))}\r\n style={{ marginLeft: 0 }}\r\n >\r\n {toolbuttons.map((item: any, index: any) => {\r\n if (flag) {\r\n if (index < 4) {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n } else if (index == 4) {\r\n return (\r\n <Popover\r\n content={content}\r\n title={null}\r\n placement=\"bottom\"\r\n key={index}\r\n open={this.state.moreOpen}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n this.setState({\r\n moreOpen: true,\r\n });\r\n } else {\r\n this.setState({\r\n moreOpen: false,\r\n });\r\n }\r\n }}\r\n // open={true}\r\n // overlayClassName={styles['pop-box']}\r\n >\r\n <Button type=\"primary\">\r\n 更多 <DownOutlined />\r\n </Button>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <div\r\n key={index}\r\n style={{\r\n marginRight: index == toolbuttons.length - 1 ? 0 : 12,\r\n }}\r\n >\r\n {item}\r\n </div>\r\n );\r\n }\r\n })}\r\n </div>\r\n );\r\n }\r\n renderCloumnButton(columnButtons: any, rowRecord: any) {\r\n const { actionProps, tableProps = {} } = this.props;\r\n const { baseActionColumn } = config();\r\n const newButtons = [];\r\n const { rowKey = \"id\" } = tableProps;\r\n\r\n let key = \"\";\r\n if (typeof rowKey == \"function\") {\r\n key = rowKey(rowRecord);\r\n } else {\r\n key = rowRecord[rowKey];\r\n }\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n columnButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, icon, recordShow, ...params } =\r\n item.props;\r\n if (recordShow) {\r\n if (typeof recordShow == \"string\") {\r\n\r\n try {\r\n const eventOption = { record: rowRecord, pageRef: this.props.pageRef, funcs: this.props.funcs };\r\n const Utils = { ...this.props.Uitls }\r\n let func = new Function(\"eventOption,Utils\", recordShow);\r\n const show = func(eventOption, Utils);\r\n show && newButtons.push(item);\r\n } catch (e) {\r\n let record = rowRecord\r\n if (eval(recordShow)) {\r\n newButtons.push(item);\r\n }\r\n }\r\n\r\n // converFunction(\r\n // recordShow,\r\n // { pageRef: this.props.pageRef, record: record, },\r\n // this.props.Utils\r\n // );\r\n // if (eval(recordShow)) {\r\n // newButtons.push(item);\r\n // }\r\n } else if (typeof recordShow == \"function\") {\r\n const show = recordShow(rowRecord);\r\n show && newButtons.push(item);\r\n }\r\n } else {\r\n newButtons.push(item);\r\n }\r\n });\r\n let number = actionProps?.buttonNumber\r\n ? actionProps?.buttonNumber\r\n : baseActionColumn?.buttonNumber\r\n ? baseActionColumn?.buttonNumber\r\n : 3;\r\n let flag = false;\r\n if (number == \"all\") {\r\n flag = false;\r\n } else {\r\n flag = newButtons.length > number;\r\n }\r\n\r\n const content = newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, show, ...params } =\r\n item.props;\r\n if (index > Number(number) - 1) {\r\n return (\r\n <Button\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-editor\"),\r\n getLess(styles, \"nsc-basepage-content-item\")\r\n )}\r\n key={index}\r\n onClick={() => {\r\n let data = { ...this.state.popopens };\r\n data[rowRecord.id] = false;\r\n this.setState({\r\n popopens: data,\r\n });\r\n onClick && onClick(rowRecord);\r\n }}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n return newButtons.map((item: any, index: any) => {\r\n const { children, pageType, onClick, recordShow, icon, ...params } =\r\n item.props;\r\n if (flag) {\r\n if (index < number) {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(rowRecord);\r\n }}\r\n icon={icon}\r\n {...params}\r\n type={\"link\"}\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n } else if (index == number) {\r\n return (\r\n <Popover\r\n placement=\"bottom\"\r\n title={null}\r\n content={content}\r\n trigger={[\"click\"]}\r\n key={index}\r\n open={this.state.popopens[key] || false}\r\n onOpenChange={(open) => {\r\n if (open) {\r\n let data = { ...this.state.popopens };\r\n data[key] = true;\r\n this.setState({\r\n popopens: data,\r\n });\r\n } else {\r\n this.setState({\r\n popopens: {},\r\n });\r\n }\r\n }}\r\n // overlayClassName={styles['pop']}\r\n >\r\n <a className={getLess(styles, \"nsc-basepage-editor\")}>\r\n <EllipsisOutlined />\r\n </a>\r\n </Popover>\r\n );\r\n } else {\r\n return null;\r\n }\r\n } else {\r\n return (\r\n <Button\r\n className={cls(getLess(styles, \"nsc-basepage-editor\"), {\r\n [getLess(styles, \"nsc-basepage-editor-first\")]: index === 0,\r\n })}\r\n key={index}\r\n onClick={() => {\r\n onClick && onClick(rowRecord);\r\n }}\r\n {...params}\r\n type=\"link\"\r\n >\r\n {showIcon !== false && (\r\n <span className={getLess(styles, \"nsc-basepage-icon\")}>\r\n {icon}\r\n </span>\r\n )}\r\n <span className={getLess(styles, \"nsc-basepage-text\")}>\r\n {children}\r\n </span>\r\n </Button>\r\n );\r\n }\r\n });\r\n // }\r\n }\r\n //树点击事件\r\n treeSelect(selectedKeys: any, obj: any) {\r\n let keyword = \"\";\r\n const {\r\n searchKey = \"key\",\r\n searchField = \"\",\r\n parantSelect = true,\r\n } = this.props.treeProps;\r\n const { treeSelectedKey } = this.state;\r\n const { selected, selectedNodes } = obj;\r\n\r\n if (selected) {\r\n keyword = selectedNodes[0].dataref.attribute[searchKey];\r\n if (parantSelect) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n } else {\r\n if (selectedNodes[0].isLeaf || !selectedNodes[0].children) {\r\n if (selectedKeys[0] !== treeSelectedKey) {\r\n this.setState({\r\n treeSelectedKey: selectedKeys[0],\r\n treeSearchPrams: { [searchField]: keyword },\r\n });\r\n }\r\n }\r\n }\r\n } else {\r\n this.setState({\r\n treeSelectedKey: keyword,\r\n treeSearchPrams: {},\r\n });\r\n }\r\n if (this.props.onTreeSelect) {\r\n this.props.onTreeSelect(selectedKeys, obj);\r\n return;\r\n }\r\n const fromValue = this.searchRef?.current?.getSearchValues() || {};\r\n searchField && this.tableLoad({ ...fromValue, [searchField]: keyword });\r\n this.props.onCallBacks?.treeSelectCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.treeSelectCallBack,\r\n { pageRef: this.props.pageRef, selectedKeys: selectedKeys, obj: obj },\r\n this.props.Utils\r\n );\r\n // utils.callback(this.props.onCallBacks?.treeSelectCallBack, this, [\r\n // selectedKeys,\r\n // obj,\r\n // ]);\r\n }\r\n resetSearch() {\r\n this.searchRef.current?.resetFields();\r\n }\r\n getText(props, text) {\r\n let newText = text;\r\n if (props?.data && props?.data?.length > 0) {\r\n let data = props.data;\r\n for (let i = 0; i < data?.length; i++) {\r\n if (data[i].value == text) {\r\n newText = data[i].label;\r\n }\r\n }\r\n }\r\n return newText;\r\n }\r\n setTableData(data) {\r\n this.tableRef.current?.store?.setData(data);\r\n }\r\n setTreeData(data) {\r\n this.treeRef.current?.store?.setData(data);\r\n }\r\n getSelectedKey = (selected) => {\r\n let res = [];\r\n for (let key in selected) {\r\n const keys = selected[key];\r\n if (keys.length > 0) {\r\n res = [...res, ...keys];\r\n }\r\n }\r\n return res;\r\n };\r\n\r\n convertQueryParams() {\r\n const { requestParams = {} } = this.props;\r\n let queryParams: any = requestParams.queryParams;\r\n if (queryParams && typeof queryParams == \"string\") {\r\n const Utils = this.props.Utils || {};\r\n let func = new Function(\"Utils\", queryParams);\r\n let converParams = func(Utils);\r\n queryParams = converParams;\r\n } else {\r\n queryParams = queryParams || {};\r\n }\r\n return queryParams;\r\n }\r\n\r\n // 计算表头高度的方法\r\n calculateTableHeaderHeight = () => {\r\n if (this.tableWrapperRef.current) {\r\n const tableHeader = this.tableWrapperRef.current.getElementsByClassName('ant-table-thead')[0];\r\n if (tableHeader) {\r\n const headerHeight = tableHeader.getBoundingClientRect().height;\r\n if (headerHeight !== this.state.tableHeaderHeight) {\r\n this.setState({\r\n tableHeaderHeight: headerHeight\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n render() {\r\n const {\r\n columns = [],\r\n showSearch = true,\r\n children,\r\n submitUrl = \"\",\r\n tableProps = {},\r\n treeProps = {},\r\n formProps = {},\r\n formPageProps = {},\r\n showLeft = false,\r\n submitParams = {},\r\n showToolButton = true,\r\n buttons = [],\r\n editorForm = true,\r\n onShowForm,\r\n formChangeValid = true,\r\n className,\r\n toolButtonPosition = \"buttom\",\r\n actionProps,\r\n deletePosition = \"toolbar\",\r\n buttonClick = {},\r\n permission = { has: false },\r\n requestParams = {},\r\n requestUrls = {},\r\n } = this.props;\r\n const {\r\n store: tableStore = {},\r\n filterColumn = true,\r\n actionColumn = true,\r\n showRowSelection = true,\r\n columnOrder = true,\r\n expandable = {},\r\n parantSelect = true,\r\n title: tableTitle,\r\n ...othertableParams\r\n } = tableProps;\r\n let newTableStore = { ...tableStore }\r\n if (requestParams.queryParams) {\r\n let queryParams: any = this.convertQueryParams();\r\n let data = queryParams?.data || queryParams?.params || {};\r\n newTableStore.requestConfig = {\r\n params: { ...data, ...newTableStore.requestConfig?.params },\r\n };\r\n }\r\n const {\r\n store: treeStore = {},\r\n showSearch: treeSearch = true,\r\n titleAlias = \"title\",\r\n title: treeTitle,\r\n ...othertreeParams\r\n } = treeProps;\r\n\r\n let tableParams = {\r\n filterColumn,\r\n store: { ...newTableStore },\r\n ...othertableParams,\r\n } as any;\r\n const defaultValue: any = {};\r\n const columnButtons: any = [];\r\n const { elementHeight } = this.state;\r\n let permissionButtons = [];\r\n if (permission.has && permission.menuCode) {\r\n permissionButtons =\r\n getButtonPermissons(permission.menuCode).permissons || [];\r\n }\r\n const obj = convertColumns(columns, {})\r\n let tableColumn: any[] = getNewColumns(columns, this.props)\r\n const searchForms = obj.searchForms || []\r\n const editorForms = obj.editorForms || []\r\n const toolButtons: any = [];\r\n const { baseActionColumn } = config();\r\n let showIcon = true;\r\n if (actionProps?.showIcon === false) showIcon = false;\r\n else if (baseActionColumn.showIcon === false) showIcon = false;\r\n const buttonMap = {\r\n // add: { name: \"新增\", code: \"add\", icon: <PlusOutlined /> },\r\n editor: { name: \"编辑\", code: \"editor\", icon: <EditOutlined /> },\r\n delete: { name: \"删除\", code: \"delete\", icon: <DeleteOutlined /> },\r\n search: { name: \"查看\", code: \"search\", icon: <EyeOutlined /> },\r\n };\r\n const returnButton = (code, show = \"\") => {\r\n let props = {};\r\n if (show) {\r\n props = { recordShow: show };\r\n }\r\n return (\r\n <Button\r\n onClick={(record: any) => {\r\n if (code == \"delete\") {\r\n this.onDelete(record);\r\n } else {\r\n if (code == \"editor\" && buttonClick.onEditor) {\r\n converFunction(\r\n buttonClick.onEditor,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n } else if (code == \"search\" && buttonClick.onSearch) {\r\n converFunction(\r\n buttonClick.onSearch,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(record.attribute || record, code);\r\n return;\r\n }\r\n\r\n this.showForm(record.attribute || record, code, () => {\r\n let callBack = code == \"editor\" ? this.props.onCallBacks?.onEditorCallBack : this.props.onCallBacks?.onSearchCallBack\r\n callBack && converFunction(\r\n callBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n record: record.attribute || record,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n }\r\n }}\r\n icon={showIcon ? buttonMap[code].icon : null}\r\n type=\"link\"\r\n {...props}\r\n >\r\n {buttonMap[code]?.name}\r\n </Button>\r\n );\r\n };\r\n const checkPerssion = (code) => {\r\n if (!permission.has) {\r\n return true;\r\n } else {\r\n return permissionButtons.indexOf(code) > -1;\r\n }\r\n };\r\n buttons.map((item: any) => {\r\n if ((item == \"add\" || item.code == \"add\") && checkPerssion(\"add\")) {\r\n toolButtons.push(\r\n <Button\r\n type={\"primary\"}\r\n onClick={() => {\r\n const { onShowForm, buttonClick = {} } = this.props;\r\n if (buttonClick?.onAdd) {\r\n converFunction(\r\n buttonClick.onAdd,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n return;\r\n }\r\n if (onShowForm) {\r\n onShowForm(null, \"add\");\r\n return;\r\n }\r\n this.showForm(null, null, () => {\r\n this.props.onCallBacks?.onAddCallBack && converFunction(\r\n this.props.onCallBacks?.onAddCallBack,\r\n {\r\n pageRef: this.props.pageRef,\r\n funcs: this.props.funcs,\r\n },\r\n this.props.Utils\r\n );\r\n });\r\n\r\n\r\n\r\n }}\r\n icon={<PlusOutlined />}\r\n >\r\n 添加\r\n </Button>\r\n );\r\n } else if (\r\n (item == \"delete\" || item.code == \"delete\") &&\r\n checkPerssion(\"delete\")\r\n ) {\r\n if (deletePosition == \"toolbar\") {\r\n toolButtons.push(\r\n <Button\r\n // type={\"primary\"}\r\n onClick={this.onDelete.bind(this)}\r\n icon={<DeleteOutlined />}\r\n danger\r\n >\r\n 删除\r\n </Button>\r\n );\r\n } else {\r\n columnButtons.push(returnButton(item.code || item, item.recordShow));\r\n }\r\n } else {\r\n if (checkPerssion(item.code ? item.code : item)) {\r\n columnButtons.push(\r\n returnButton(item.code ? item.code : item, item.recordShow)\r\n );\r\n }\r\n }\r\n });\r\n\r\n if (Array.isArray(children)) {\r\n children.map((item: any) => {\r\n if (Array.isArray(item)) {\r\n item.map((child) => {\r\n if (\r\n child?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n toolButtons.push(child);\r\n } else if (\r\n (child?.props?.pageType == \"columnButton\" || child?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(child?.props?.code)\r\n ) {\r\n columnButtons.push(child);\r\n }\r\n });\r\n } else {\r\n if (\r\n item?.props?.pageType == \"toolButton\" &&\r\n checkPerssion(item?.props?.code)\r\n ) {\r\n toolButtons.push(item);\r\n } else if (\r\n (item?.props?.pageType == \"columnButton\" || item?.props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(item?.props?.code)\r\n ) {\r\n columnButtons.push(item);\r\n }\r\n }\r\n });\r\n } else if (children) {\r\n const { props }: any = children;\r\n if (props?.pageType == \"toolButton\" && checkPerssion(props?.code)) {\r\n toolButtons.push(children);\r\n } else if (\r\n (props?.pageType == \"columnButton\" || props?.pageType == \"cloumnButton\") &&\r\n checkPerssion(props?.code)\r\n ) {\r\n columnButtons.push(children);\r\n }\r\n }\r\n actionColumn &&\r\n tableColumn.push({\r\n title: \"操作\",\r\n dataIndex: \"action\",\r\n align: actionProps?.textAlign\r\n ? actionProps?.textAlign\r\n : baseActionColumn.textAlign\r\n ? baseActionColumn.textAlign\r\n : \"left\",\r\n width: actionProps?.width\r\n ? actionProps?.width\r\n : baseActionColumn.width\r\n ? baseActionColumn.width\r\n : 200,\r\n fixed: \"right\",\r\n render: (text: any, record: any) => {\r\n return (\r\n <div className={getLess(styles, \"nsc-basepage-action\")}>\r\n {this.renderCloumnButton(columnButtons, record)}\r\n </div>\r\n );\r\n },\r\n });\r\n\r\n if (columnOrder)\r\n tableColumn = [\r\n {\r\n title: \"序号\",\r\n width: 80,\r\n align: \"center\",\r\n render: (text, reacord, index) => {\r\n return <>{index + 1}</>;\r\n },\r\n },\r\n ...tableColumn,\r\n ];\r\n let searchFlag = showSearch && searchForms.length > 0;\r\n let { tableTool } = config();\r\n let toolFlag =\r\n showToolButton &&\r\n toolButtons.length > 0 &&\r\n toolButtonPosition == \"buttom\";\r\n let toolbarFlag = !(\r\n tableProps.toolbar == false ||\r\n tableProps.toolbar?.show == false ||\r\n tableProps.toolbar?.tools?.length == 0 ||\r\n tableTool?.show == false\r\n );\r\n \r\n let toolHeight = tableTitle || toolFlag ? 50 : 0;\r\n let paddingHeight = 20 * 2; //上下间距\r\n let tableContentHeight = elementHeight - toolHeight - paddingHeight;\r\n let PaginationHeight = tableProps.pagination !== false ? (32 + 16) : 0 //32 为分页器高度,16为margin间距\r\n let tableHeight = tableContentHeight - PaginationHeight;\r\n let tableSrollHeight = tableContentHeight - this.state.tableHeaderHeight - PaginationHeight;\r\n // if (tableProps.pagination !== false) {\r\n const scroll = tableParams.scroll;\r\n tableParams = {\r\n ...tableParams,\r\n scroll: { x: \"max-content\", y: tableSrollHeight, ...scroll },\r\n };\r\n // }\r\n return (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage\"), className)}\r\n ref={this.pageRef}\r\n >\r\n {this.props.pageTitle && (\r\n <div className={cls(getLess(styles, \"nsc-basepage-title\"))}>\r\n {this.props.pageTitle}\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-pane\"))}\r\n style={{ display: \"flex\" }}\r\n >\r\n {showLeft && (\r\n <div className={getLess(styles, \"nsc-basepage-left\")}>\r\n {treeTitle && (\r\n <div className={getLess(styles, \"tree-title\")}>{treeTitle}</div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"tree-content\"), {\r\n [getLess(styles, \"tree-content-notitle\")]: !treeTitle,\r\n })}\r\n >\r\n <Tree\r\n store={{ ...treeStore }}\r\n showIcon={false}\r\n checkable={false}\r\n searchable={treeSearch}\r\n onSelect={this.treeSelect.bind(this)}\r\n selectedKeys={[this.state.treeSelectedKey]}\r\n titleAlias={titleAlias}\r\n ref={this.treeRef}\r\n {...othertreeParams}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-right\"), {\r\n [getLess(styles, \"nsc-basepage-no-left-right\")]: !showLeft,\r\n })}\r\n >\r\n {showSearch && searchForms.length > 0 && (\r\n <div className={getLess(styles, \"nsc-basepage-headersearch\")}>\r\n <HeaderSearch\r\n searchForms={searchForms}\r\n toolButtonPosition={toolButtonPosition}\r\n onSearch={this.onSearch.bind(this)}\r\n onReset={() => {\r\n if (this.props.onReset) {\r\n this.props.onReset();\r\n return;\r\n }\r\n this.searchRef.current?.resetFields();\r\n this.tableLoad({});\r\n }}\r\n ref={this.searchRef}\r\n searchFormProps={this.props.searchFormProps}\r\n />\r\n </div>\r\n )}\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-content\"), {\r\n [getLess(styles, \"nsc-basepage-content-gap\")]: !searchFlag,\r\n })}\r\n ref={this.pageContentRef}\r\n >\r\n {(tableTitle || toolFlag) && (\r\n <div\r\n className={cls(getLess(styles, \"nsc-basepage-table-title\"), {\r\n [getLess(styles, \"nsc-basepage-title-width\")]: !toolbarFlag,\r\n })}\r\n >\r\n <div>{tableTitle}</div>\r\n {toolFlag && this.renderToolButtons(toolButtons, toolbarFlag)}\r\n </div>\r\n )}\r\n\r\n <div\r\n className={cls(\r\n getLess(styles, \"nsc-basepage-table\"),\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top\")]: !toolbarFlag,\r\n },\r\n {\r\n [getLess(styles, \"nsc-basepage-table-top2\")]:\r\n toolbarFlag && !toolFlag,\r\n }\r\n )}\r\n ref={this.tableWrapperRef}\r\n style={{ height: tableContentHeight }}\r\n >\r\n <Table\r\n ref={this.tableRef}\r\n columns={tableColumn}\r\n expandable={{\r\n expandIcon: ({ expanded, onExpand, record }) => {\r\n return (\r\n <>\r\n {expanded &&\r\n record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <DownOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : record.childNodes &&\r\n record.childNodes?.length > 0 ? (\r\n <RightOutlined\r\n onClick={(e) => onExpand(record, e)}\r\n className={getLess(styles, \"expand-icon\")}\r\n />\r\n ) : null}\r\n </>\r\n );\r\n },\r\n ...expandable,\r\n }}\r\n columnOrder={true}\r\n onChange={(pagination) => {\r\n const { currentPage } = this.state;\r\n if (currentPage !== pagination.current) {\r\n this.setState({\r\n currentPage: pagination.current,\r\n });\r\n }\r\n }}\r\n toolbar={{\r\n onToolClick: {\r\n onRefresh: () => {\r\n const params = this.getSearchValues();\r\n this.tableLoad(params);\r\n },\r\n },\r\n ...tableProps.toolbar,\r\n }}\r\n showRowSelection={showRowSelection}\r\n style={{ height: tableHeight }}\r\n {...tableParams}\r\n // pagination={false}\r\n />\r\n {/* <div></div> */}\r\n </div>\r\n </div>\r\n </div>\r\n {editorForm && (\r\n <EditorForm\r\n ref={this.editorRef}\r\n callBack={() => {\r\n this.props.onCallBacks?.onSumbitCallBack &&\r\n converFunction(\r\n this.props.onCallBacks?.onSumbitCallBack,\r\n { pageRef: this.props.pageRef },\r\n this.props.Utils\r\n );\r\n this.tableReload();\r\n }}\r\n forms={editorForms}\r\n submitUrl={submitUrl}\r\n submitParams={submitParams}\r\n onSubmit={this.props.onSubmit}\r\n defaultValue={defaultValue}\r\n onHideForm={this.props.onHideForm}\r\n onFormChange={this.props.onFormChange}\r\n formType={this.props.formType || \"auto\"}\r\n changeValid={formChangeValid}\r\n Utils={this.props.Utils}\r\n requestObject={{\r\n addUrl: requestUrls.addUrl,\r\n editorUrl: requestUrls.editorUrl,\r\n addParams: requestParams.addParams,\r\n editorParams: requestParams.editorParams,\r\n }}\r\n funcs={this.props.funcs}\r\n {...formProps}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\nexport default BasePage;\r\n"],"mappings":"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"}
|