nsc-react-component 4.0.6 → 4.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/page/BasePage/index.js +8 -146
- package/lib/page/BasePage/index.js.map +1 -1
- package/lib/page/BasePage/utils.d.ts +5 -0
- package/lib/page/BasePage/utils.js +178 -0
- package/lib/page/BasePage/utils.js.map +1 -0
- package/lib/page/FormPage/index.js +2 -2
- package/lib/page/FormPage/index.js.map +1 -1
- package/lib/page/HeaderSearch/index.js +18 -5
- package/lib/page/HeaderSearch/index.js.map +1 -1
- package/lib/page/SettingTab/index.js +4 -2
- package/lib/page/SettingTab/index.js.map +1 -1
- package/lib/page/SettingTab/index.less +2 -2
- package/lib/page/SettingTable/index.d.ts +3 -0
- package/lib/page/SettingTable/index.js +92 -36
- package/lib/page/SettingTable/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
2
|
+
function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { _defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
3
|
+
function _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
4
|
+
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == typeof i ? i : String(i); }
|
|
5
|
+
function _toPrimitive(t, r) { if ("object" != typeof t || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != typeof i) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
|
|
6
|
+
import React from 'react';
|
|
7
|
+
import Button from '../../base/button';
|
|
8
|
+
import nscfile from 'nsc-file';
|
|
9
|
+
import lodash from 'lodash';
|
|
10
|
+
export const convertColumns = (columns, _ref) => {
|
|
11
|
+
let {
|
|
12
|
+
searchForms = [],
|
|
13
|
+
editorForms = []
|
|
14
|
+
} = _ref;
|
|
15
|
+
columns.map(item => {
|
|
16
|
+
let temp = _objectSpread({
|
|
17
|
+
width: 100
|
|
18
|
+
}, item);
|
|
19
|
+
if (item.children && item.children.length > 0) {
|
|
20
|
+
convertColumns(item.children, {
|
|
21
|
+
searchForms,
|
|
22
|
+
editorForms
|
|
23
|
+
});
|
|
24
|
+
} else {
|
|
25
|
+
var _temp$search;
|
|
26
|
+
if (temp.search === true || ((_temp$search = temp.search) === null || _temp$search === void 0 ? void 0 : _temp$search.show) === true) {
|
|
27
|
+
var _temp$search2, _temp$search3, _temp$search4;
|
|
28
|
+
let props = temp.props ? _objectSpread({}, temp.props) : {};
|
|
29
|
+
delete props.onChange;
|
|
30
|
+
searchForms.push({
|
|
31
|
+
name: temp.field || temp.dataIndex,
|
|
32
|
+
label: ((_temp$search2 = temp.search) === null || _temp$search2 === void 0 ? void 0 : _temp$search2.label) || temp.title,
|
|
33
|
+
type: temp.type,
|
|
34
|
+
props: props,
|
|
35
|
+
labelCol: (_temp$search3 = temp.search) === null || _temp$search3 === void 0 ? void 0 : _temp$search3.labelCol,
|
|
36
|
+
wrapperCol: (_temp$search4 = temp.search) === null || _temp$search4 === void 0 ? void 0 : _temp$search4.wrapperCol,
|
|
37
|
+
rules: temp.searchRules ? temp.searchRules : []
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
temp.editor !== false && editorForms.push({
|
|
41
|
+
name: temp.field || temp.dataIndex,
|
|
42
|
+
label: temp.title,
|
|
43
|
+
rules: temp.rules ? temp.rules : [],
|
|
44
|
+
type: temp.type,
|
|
45
|
+
span: temp.span,
|
|
46
|
+
dictName: temp.dictName,
|
|
47
|
+
required: temp.required,
|
|
48
|
+
props: _objectSpread({}, temp.props)
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
return {
|
|
53
|
+
searchForms,
|
|
54
|
+
editorForms
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
const getText = (props, text) => {
|
|
58
|
+
var _props$data;
|
|
59
|
+
let newText = text;
|
|
60
|
+
if (props !== null && props !== void 0 && props.data && (props === null || props === void 0 || (_props$data = props.data) === null || _props$data === void 0 ? void 0 : _props$data.length) > 0) {
|
|
61
|
+
let data = props.data;
|
|
62
|
+
for (let i = 0; i < (data === null || data === void 0 ? void 0 : data.length); i++) {
|
|
63
|
+
if (data[i].value == text) {
|
|
64
|
+
newText = data[i].label;
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return newText;
|
|
69
|
+
};
|
|
70
|
+
export const getNewColumns = (columns, props) => {
|
|
71
|
+
let data = lodash.cloneDeep(columns);
|
|
72
|
+
function converData(data) {
|
|
73
|
+
return data.map(obj => {
|
|
74
|
+
var _tempProp$data, _temp, _temp2;
|
|
75
|
+
let temp = _objectSpread({
|
|
76
|
+
width: 150
|
|
77
|
+
}, obj);
|
|
78
|
+
delete temp.search;
|
|
79
|
+
delete temp.rules;
|
|
80
|
+
delete temp.span;
|
|
81
|
+
delete temp.required;
|
|
82
|
+
if (temp.children) {
|
|
83
|
+
temp.children = temp.children.filter(child => child.columnShow !== false);
|
|
84
|
+
}
|
|
85
|
+
if (temp.columnSearch) {
|
|
86
|
+
temp.filterProps = {
|
|
87
|
+
type: temp.type,
|
|
88
|
+
props: temp.props
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
let tempProp = _objectSpread({}, temp.props);
|
|
92
|
+
if (tempProp !== null && tempProp !== void 0 && tempProp.data && (tempProp === null || tempProp === void 0 || (_tempProp$data = tempProp.data) === null || _tempProp$data === void 0 ? void 0 : _tempProp$data.length) > 0) {
|
|
93
|
+
temp = _objectSpread({
|
|
94
|
+
ellipsis: {
|
|
95
|
+
showTitle: false
|
|
96
|
+
},
|
|
97
|
+
render: text => {
|
|
98
|
+
return getText(tempProp, text);
|
|
99
|
+
}
|
|
100
|
+
}, temp);
|
|
101
|
+
}
|
|
102
|
+
delete temp.props;
|
|
103
|
+
delete temp.props;
|
|
104
|
+
if (temp.render && typeof temp.render == 'string') {
|
|
105
|
+
let renderStr = temp.render;
|
|
106
|
+
temp = _objectSpread(_objectSpread({}, temp), {}, {
|
|
107
|
+
render: (_text, _record, _index) => {
|
|
108
|
+
const eventOption = {
|
|
109
|
+
text: _text,
|
|
110
|
+
record: _record,
|
|
111
|
+
index: _index,
|
|
112
|
+
funcs: props.funcs
|
|
113
|
+
};
|
|
114
|
+
const func = new Function('eventOption,Utils', renderStr);
|
|
115
|
+
const res = func(eventOption, props.Utils);
|
|
116
|
+
return res;
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
if (temp.type == "Upload" && ((_temp = temp) === null || _temp === void 0 ? void 0 : _temp.columnShow) !== false) {
|
|
121
|
+
temp = _objectSpread({
|
|
122
|
+
render: (_text, record) => {
|
|
123
|
+
if (Array.isArray(record[temp.dataIndex])) {
|
|
124
|
+
const files = record[temp.dataIndex];
|
|
125
|
+
if (files.length == 1) {
|
|
126
|
+
var _files$;
|
|
127
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
128
|
+
type: "link",
|
|
129
|
+
onClick: () => {
|
|
130
|
+
nscfile.download(files[0].fileId);
|
|
131
|
+
}
|
|
132
|
+
}, (_files$ = files[0]) === null || _files$ === void 0 ? void 0 : _files$.fileName);
|
|
133
|
+
} else if (files.length > 1) {
|
|
134
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
135
|
+
type: "link",
|
|
136
|
+
onClick: () => {
|
|
137
|
+
let fileIds = [];
|
|
138
|
+
files.map(item => {
|
|
139
|
+
fileIds.push(item.fileId);
|
|
140
|
+
});
|
|
141
|
+
nscfile.downloadZip(fileIds.join(","));
|
|
142
|
+
}
|
|
143
|
+
}, "文件下载");
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}, temp);
|
|
148
|
+
}
|
|
149
|
+
if (temp.type == "Image" && ((_temp2 = temp) === null || _temp2 === void 0 ? void 0 : _temp2.columnShow) !== false) {
|
|
150
|
+
temp = _objectSpread({
|
|
151
|
+
render: (_text, record) => {
|
|
152
|
+
if (Array.isArray(record[temp.dataIndex])) {
|
|
153
|
+
const files = record[temp.dataIndex];
|
|
154
|
+
if (files.length == 1) {
|
|
155
|
+
var _files$2;
|
|
156
|
+
return /*#__PURE__*/React.createElement("div", {
|
|
157
|
+
className: "nsc-basepage-table-img"
|
|
158
|
+
}, (_files$2 = files[0]) === null || _files$2 === void 0 ? void 0 : _files$2.fileName);
|
|
159
|
+
} else if (files.length > 1) {
|
|
160
|
+
return /*#__PURE__*/React.createElement(Button, {
|
|
161
|
+
type: "link",
|
|
162
|
+
onClick: () => {}
|
|
163
|
+
}, "\u56FE\u7247\u67E5\u770B");
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}, temp);
|
|
168
|
+
}
|
|
169
|
+
return temp.columnShow !== false ? temp : null;
|
|
170
|
+
}).filter(column => column !== null);
|
|
171
|
+
}
|
|
172
|
+
const filteredColumns = converData(data);
|
|
173
|
+
return filteredColumns;
|
|
174
|
+
// 使用map遍历树中的每个节点并应用修改函数
|
|
175
|
+
|
|
176
|
+
// const newData = data.map(item=>)
|
|
177
|
+
};
|
|
178
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIkJ1dHRvbiIsIm5zY2ZpbGUiLCJsb2Rhc2giLCJjb252ZXJ0Q29sdW1ucyIsImNvbHVtbnMiLCJfcmVmIiwic2VhcmNoRm9ybXMiLCJlZGl0b3JGb3JtcyIsIm1hcCIsIml0ZW0iLCJ0ZW1wIiwiX29iamVjdFNwcmVhZCIsIndpZHRoIiwiY2hpbGRyZW4iLCJsZW5ndGgiLCJfdGVtcCRzZWFyY2giLCJzZWFyY2giLCJzaG93IiwiX3RlbXAkc2VhcmNoMiIsIl90ZW1wJHNlYXJjaDMiLCJfdGVtcCRzZWFyY2g0IiwicHJvcHMiLCJvbkNoYW5nZSIsInB1c2giLCJuYW1lIiwiZmllbGQiLCJkYXRhSW5kZXgiLCJsYWJlbCIsInRpdGxlIiwidHlwZSIsImxhYmVsQ29sIiwid3JhcHBlckNvbCIsInJ1bGVzIiwic2VhcmNoUnVsZXMiLCJlZGl0b3IiLCJzcGFuIiwiZGljdE5hbWUiLCJyZXF1aXJlZCIsImdldFRleHQiLCJ0ZXh0IiwiX3Byb3BzJGRhdGEiLCJuZXdUZXh0IiwiZGF0YSIsImkiLCJ2YWx1ZSIsImdldE5ld0NvbHVtbnMiLCJjbG9uZURlZXAiLCJjb252ZXJEYXRhIiwib2JqIiwiX3RlbXBQcm9wJGRhdGEiLCJfdGVtcCIsIl90ZW1wMiIsImZpbHRlciIsImNoaWxkIiwiY29sdW1uU2hvdyIsImNvbHVtblNlYXJjaCIsImZpbHRlclByb3BzIiwidGVtcFByb3AiLCJlbGxpcHNpcyIsInNob3dUaXRsZSIsInJlbmRlciIsInJlbmRlclN0ciIsIl90ZXh0IiwiX3JlY29yZCIsIl9pbmRleCIsImV2ZW50T3B0aW9uIiwicmVjb3JkIiwiaW5kZXgiLCJmdW5jcyIsImZ1bmMiLCJGdW5jdGlvbiIsInJlcyIsIlV0aWxzIiwiQXJyYXkiLCJpc0FycmF5IiwiZmlsZXMiLCJfZmlsZXMkIiwiY3JlYXRlRWxlbWVudCIsIm9uQ2xpY2siLCJkb3dubG9hZCIsImZpbGVJZCIsImZpbGVOYW1lIiwiZmlsZUlkcyIsImRvd25sb2FkWmlwIiwiam9pbiIsIl9maWxlcyQyIiwiY2xhc3NOYW1lIiwiY29sdW1uIiwiZmlsdGVyZWRDb2x1bW5zIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9CYXNlUGFnZS91dGlscy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcclxuaW1wb3J0IEJ1dHRvbiBmcm9tICcuLi8uLi9iYXNlL2J1dHRvbic7XHJcbmltcG9ydCBuc2NmaWxlIGZyb20gJ25zYy1maWxlJ1xyXG5pbXBvcnQgbG9kYXNoIGZyb20gJ2xvZGFzaCdcclxuZXhwb3J0IGNvbnN0IGNvbnZlcnRDb2x1bW5zID0gKGNvbHVtbnM6IGFueSwgeyBzZWFyY2hGb3JtcyA9IFtdLCBlZGl0b3JGb3JtcyA9IFtdIH06IGFueSkgPT4ge1xyXG4gIGNvbHVtbnMubWFwKChpdGVtOiBhbnkpID0+IHtcclxuICAgIGxldCB0ZW1wID0geyB3aWR0aDogMTAwLCAuLi5pdGVtIH07XHJcbiAgICBpZiAoaXRlbS5jaGlsZHJlbiAmJiBpdGVtLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcclxuICAgICAgY29udmVydENvbHVtbnMoaXRlbS5jaGlsZHJlbiwgeyBzZWFyY2hGb3JtcywgZWRpdG9yRm9ybXMgfSlcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmICh0ZW1wLnNlYXJjaCA9PT0gdHJ1ZSB8fCB0ZW1wLnNlYXJjaD8uc2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIGxldCBwcm9wcyA9IHRlbXAucHJvcHMgPyB7IC4uLnRlbXAucHJvcHMgfSA6IHt9O1xyXG4gICAgICAgIGRlbGV0ZSBwcm9wcy5vbkNoYW5nZTtcclxuICAgICAgICBzZWFyY2hGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC5zZWFyY2g/LmxhYmVsIHx8IHRlbXAudGl0bGUsXHJcbiAgICAgICAgICB0eXBlOiB0ZW1wLnR5cGUsXHJcbiAgICAgICAgICBwcm9wczogcHJvcHMsXHJcbiAgICAgICAgICBsYWJlbENvbDogdGVtcC5zZWFyY2g/LmxhYmVsQ29sLFxyXG4gICAgICAgICAgd3JhcHBlckNvbDogdGVtcC5zZWFyY2g/LndyYXBwZXJDb2wsXHJcbiAgICAgICAgICBydWxlczogdGVtcC5zZWFyY2hSdWxlcyA/IHRlbXAuc2VhcmNoUnVsZXMgOiBbXSxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICB0ZW1wLmVkaXRvciAhPT0gZmFsc2UgJiZcclxuICAgICAgICBlZGl0b3JGb3Jtcy5wdXNoKHtcclxuICAgICAgICAgIG5hbWU6IHRlbXAuZmllbGQgfHwgdGVtcC5kYXRhSW5kZXgsXHJcbiAgICAgICAgICBsYWJlbDogdGVtcC50aXRsZSxcclxuICAgICAgICAgIHJ1bGVzOiB0ZW1wLnJ1bGVzID8gdGVtcC5ydWxlcyA6IFtdLFxyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgc3BhbjogdGVtcC5zcGFuLFxyXG4gICAgICAgICAgZGljdE5hbWU6IHRlbXAuZGljdE5hbWUsXHJcbiAgICAgICAgICByZXF1aXJlZDogdGVtcC5yZXF1aXJlZCxcclxuICAgICAgICAgIHByb3BzOiB7IC4uLnRlbXAucHJvcHMgfSxcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgfSk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHNlYXJjaEZvcm1zLFxyXG4gICAgZWRpdG9yRm9ybXMsXHJcbiAgfVxyXG5cclxufVxyXG5jb25zdCBnZXRUZXh0ID0gKHByb3BzLCB0ZXh0KSA9PiB7XHJcbiAgbGV0IG5ld1RleHQgPSB0ZXh0O1xyXG4gIGlmIChwcm9wcz8uZGF0YSAmJiBwcm9wcz8uZGF0YT8ubGVuZ3RoID4gMCkge1xyXG4gICAgbGV0IGRhdGEgPSBwcm9wcy5kYXRhO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBkYXRhPy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoZGF0YVtpXS52YWx1ZSA9PSB0ZXh0KSB7XHJcbiAgICAgICAgbmV3VGV4dCA9IGRhdGFbaV0ubGFiZWw7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG5ld1RleHQ7XHJcbn1cclxuZXhwb3J0IGNvbnN0IGdldE5ld0NvbHVtbnMgPSAoY29sdW1uczogYW55LCBwcm9wczogYW55KSA9PiB7XHJcbiAgbGV0IGRhdGEgPSBsb2Rhc2guY2xvbmVEZWVwKGNvbHVtbnMpO1xyXG5cclxuICBmdW5jdGlvbiBjb252ZXJEYXRhKGRhdGEpIHtcclxuICAgIHJldHVybiBkYXRhLm1hcChvYmogPT4ge1xyXG4gICAgICBsZXQgdGVtcCA9IHsgd2lkdGg6IDE1MCwgLi4ub2JqIH1cclxuICAgICAgZGVsZXRlIHRlbXAuc2VhcmNoO1xyXG4gICAgICBkZWxldGUgdGVtcC5ydWxlcztcclxuICAgICAgZGVsZXRlIHRlbXAuc3BhbjtcclxuICAgICAgZGVsZXRlIHRlbXAucmVxdWlyZWQ7XHJcbiAgICAgIGlmICh0ZW1wLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgdGVtcC5jaGlsZHJlbiA9IHRlbXAuY2hpbGRyZW4uZmlsdGVyKGNoaWxkID0+IGNoaWxkLmNvbHVtblNob3cgIT09IGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAodGVtcC5jb2x1bW5TZWFyY2gpIHtcclxuICAgICAgICB0ZW1wLmZpbHRlclByb3BzID0ge1xyXG4gICAgICAgICAgdHlwZTogdGVtcC50eXBlLFxyXG4gICAgICAgICAgcHJvcHM6IHRlbXAucHJvcHMsXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgdGVtcFByb3AgPSB7IC4uLnRlbXAucHJvcHMgfTtcclxuICAgICAgaWYgKHRlbXBQcm9wPy5kYXRhICYmIHRlbXBQcm9wPy5kYXRhPy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIGVsbGlwc2lzOiB7IHNob3dUaXRsZTogZmFsc2UgfSxcclxuICAgICAgICAgIHJlbmRlcjogKHRleHQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gZ2V0VGV4dCh0ZW1wUHJvcCwgdGV4dCk7XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGRlbGV0ZSB0ZW1wLnByb3BzO1xyXG4gICAgICBkZWxldGUgdGVtcC5wcm9wcztcclxuICAgICAgaWYgKHRlbXAucmVuZGVyICYmIHR5cGVvZiB0ZW1wLnJlbmRlciA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGxldCByZW5kZXJTdHIgPSB0ZW1wLnJlbmRlclxyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICAuLi50ZW1wLFxyXG4gICAgICAgICAgcmVuZGVyOiAoX3RleHQsIF9yZWNvcmQsIF9pbmRleCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBldmVudE9wdGlvbiA9IHsgdGV4dDogX3RleHQsIHJlY29yZDogX3JlY29yZCwgaW5kZXg6IF9pbmRleCwgZnVuY3M6IHByb3BzLmZ1bmNzIH1cclxuICAgICAgICAgICAgY29uc3QgZnVuYyA9IG5ldyBGdW5jdGlvbignZXZlbnRPcHRpb24sVXRpbHMnLCByZW5kZXJTdHIpXHJcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGZ1bmMoZXZlbnRPcHRpb24sIHByb3BzLlV0aWxzKVxyXG4gICAgICAgICAgICByZXR1cm4gcmVzXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0ZW1wLnR5cGUgPT0gXCJVcGxvYWRcIiAmJiB0ZW1wPy5jb2x1bW5TaG93ICE9PSBmYWxzZSkge1xyXG4gICAgICAgIHRlbXAgPSB7XHJcbiAgICAgICAgICByZW5kZXI6IChfdGV4dCwgcmVjb3JkKSA9PiB7XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHJlY29yZFt0ZW1wLmRhdGFJbmRleF0pKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsZXMgPSByZWNvcmRbdGVtcC5kYXRhSW5kZXhdO1xyXG4gICAgICAgICAgICAgIGlmIChmaWxlcy5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIG5zY2ZpbGUuZG93bmxvYWQoZmlsZXNbMF0uZmlsZUlkKTtcclxuICAgICAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICAgICAge2ZpbGVzWzBdPy5maWxlTmFtZX1cclxuICAgICAgICAgICAgICAgICAgPC9CdXR0b24+XHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZXMubGVuZ3RoID4gMSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgICAgICAgPEJ1dHRvblxyXG4gICAgICAgICAgICAgICAgICAgIHR5cGU9e1wibGlua1wifVxyXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGxldCBmaWxlSWRzID0gW10gYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgICAgICAgZmlsZXMubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJZHMucHVzaChpdGVtLmZpbGVJZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICAgIG5zY2ZpbGUuZG93bmxvYWRaaXAoZmlsZUlkcy5qb2luKFwiLFwiKSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtcIuaWh+S7tuS4i+i9vVwifVxyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0ZW1wLnR5cGUgPT0gXCJJbWFnZVwiICYmIHRlbXA/LmNvbHVtblNob3cgIT09IGZhbHNlKSB7XHJcbiAgICAgICAgdGVtcCA9IHtcclxuICAgICAgICAgIHJlbmRlcjogKF90ZXh0LCByZWNvcmQpID0+IHtcclxuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmVjb3JkW3RlbXAuZGF0YUluZGV4XSkpIHtcclxuICAgICAgICAgICAgICBjb25zdCBmaWxlcyA9IHJlY29yZFt0ZW1wLmRhdGFJbmRleF07XHJcbiAgICAgICAgICAgICAgaWYgKGZpbGVzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm5zYy1iYXNlcGFnZS10YWJsZS1pbWdcIj5cclxuICAgICAgICAgICAgICAgICAgICB7ZmlsZXNbMF0/LmZpbGVOYW1lfVxyXG4gICAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlcy5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9e1wibGlua1wifSBvbkNsaWNrPXsoKSA9PiB7IH19PlxyXG4gICAgICAgICAgICAgICAgICAgIOWbvueJh+afpeeci1xyXG4gICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgLi4udGVtcCxcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB0ZW1wLmNvbHVtblNob3cgIT09IGZhbHNlID8gdGVtcCA6IG51bGw7XHJcbiAgICB9KS5maWx0ZXIoY29sdW1uID0+IGNvbHVtbiAhPT0gbnVsbCk7XHJcbiAgfVxyXG5cclxuICBjb25zdCBmaWx0ZXJlZENvbHVtbnMgPSBjb252ZXJEYXRhKGRhdGEpO1xyXG4gIHJldHVybiBmaWx0ZXJlZENvbHVtbnNcclxuICAvLyDkvb/nlKhtYXDpgY3ljobmoJHkuK3nmoTmr4/kuKroioLngrnlubblupTnlKjkv67mlLnlh73mlbBcclxuXHJcbiAgLy8gY29uc3QgbmV3RGF0YSA9IGRhdGEubWFwKGl0ZW09PilcclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBT0EsS0FBSyxNQUFNLE9BQU87QUFDekIsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxPQUFPLE1BQU0sVUFBVTtBQUM5QixPQUFPQyxNQUFNLE1BQU0sUUFBUTtBQUMzQixPQUFPLE1BQU1DLGNBQWMsR0FBR0EsQ0FBQ0MsT0FBWSxFQUFBQyxJQUFBLEtBQWtEO0VBQUEsSUFBaEQ7SUFBRUMsV0FBVyxHQUFHLEVBQUU7SUFBRUMsV0FBVyxHQUFHO0VBQVEsQ0FBQyxHQUFBRixJQUFBO0VBQ3RGRCxPQUFPLENBQUNJLEdBQUcsQ0FBRUMsSUFBUyxJQUFLO0lBQ3pCLElBQUlDLElBQUksR0FBQUMsYUFBQTtNQUFLQyxLQUFLLEVBQUU7SUFBRyxHQUFLSCxJQUFJLENBQUU7SUFDbEMsSUFBSUEsSUFBSSxDQUFDSSxRQUFRLElBQUlKLElBQUksQ0FBQ0ksUUFBUSxDQUFDQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO01BQzdDWCxjQUFjLENBQUNNLElBQUksQ0FBQ0ksUUFBUSxFQUFFO1FBQUVQLFdBQVc7UUFBRUM7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
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","names":["React","Button","nscfile","lodash","convertColumns","columns","_ref","searchForms","editorForms","map","item","temp","_objectSpread","width","children","length","_temp$search","search","show","_temp$search2","_temp$search3","_temp$search4","props","onChange","push","name","field","dataIndex","label","title","type","labelCol","wrapperCol","rules","searchRules","editor","span","dictName","required","getText","text","_props$data","newText","data","i","value","getNewColumns","cloneDeep","converData","obj","_tempProp$data","_temp","_temp2","filter","child","columnShow","columnSearch","filterProps","tempProp","ellipsis","showTitle","render","renderStr","_text","_record","_index","eventOption","record","index","funcs","func","Function","res","Utils","Array","isArray","files","_files$","createElement","onClick","download","fileId","fileName","fileIds","downloadZip","join","_files$2","className","column","filteredColumns"],"sources":["../../../src/components/page/BasePage/utils.tsx"],"sourcesContent":["import React from 'react';\r\nimport Button from '../../base/button';\r\nimport nscfile from 'nsc-file'\r\nimport lodash from 'lodash'\r\nexport const convertColumns = (columns: any, { searchForms = [], editorForms = [] }: any) => {\r\n columns.map((item: any) => {\r\n let temp = { width: 100, ...item };\r\n if (item.children && item.children.length > 0) {\r\n convertColumns(item.children, { searchForms, editorForms })\r\n } else {\r\n if (temp.search === true || temp.search?.show === true) {\r\n let props = temp.props ? { ...temp.props } : {};\r\n delete props.onChange;\r\n searchForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.search?.label || temp.title,\r\n type: temp.type,\r\n props: props,\r\n labelCol: temp.search?.labelCol,\r\n wrapperCol: temp.search?.wrapperCol,\r\n rules: temp.searchRules ? temp.searchRules : [],\r\n });\r\n }\r\n temp.editor !== false &&\r\n editorForms.push({\r\n name: temp.field || temp.dataIndex,\r\n label: temp.title,\r\n rules: temp.rules ? temp.rules : [],\r\n type: temp.type,\r\n span: temp.span,\r\n dictName: temp.dictName,\r\n required: temp.required,\r\n props: { ...temp.props },\r\n });\r\n }\r\n\r\n });\r\n return {\r\n searchForms,\r\n editorForms,\r\n }\r\n\r\n}\r\nconst 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\nexport const getNewColumns = (columns: any, props: any) => {\r\n let data = lodash.cloneDeep(columns);\r\n\r\n function converData(data) {\r\n return data.map(obj => {\r\n let temp = { width: 150, ...obj }\r\n delete temp.search;\r\n delete temp.rules;\r\n delete temp.span;\r\n delete temp.required;\r\n if (temp.children) {\r\n temp.children = temp.children.filter(child => child.columnShow !== false);\r\n }\r\n if (temp.columnSearch) {\r\n temp.filterProps = {\r\n type: temp.type,\r\n props: temp.props,\r\n };\r\n }\r\n let tempProp = { ...temp.props };\r\n if (tempProp?.data && tempProp?.data?.length > 0) {\r\n temp = {\r\n ellipsis: { showTitle: false },\r\n render: (text: any) => {\r\n return getText(tempProp, text);\r\n },\r\n ...temp,\r\n };\r\n }\r\n delete temp.props;\r\n delete temp.props;\r\n if (temp.render && typeof temp.render == 'string') {\r\n let renderStr = temp.render\r\n temp = {\r\n ...temp,\r\n render: (_text, _record, _index) => {\r\n const eventOption = { text: _text, record: _record, index: _index, funcs: props.funcs }\r\n const func = new Function('eventOption,Utils', renderStr)\r\n const res = func(eventOption, props.Utils)\r\n return res\r\n }\r\n }\r\n }\r\n if (temp.type == \"Upload\" && temp?.columnShow !== false) {\r\n temp = {\r\n render: (_text, record) => {\r\n if (Array.isArray(record[temp.dataIndex])) {\r\n const files = record[temp.dataIndex];\r\n if (files.length == 1) {\r\n return (\r\n <Button\r\n type={\"link\"}\r\n onClick={() => {\r\n nscfile.download(files[0].fileId);\r\n }}\r\n >\r\n {files[0]?.fileName}\r\n </Button>\r\n );\r\n } else if (files.length > 1) {\r\n return (\r\n <Button\r\n type={\"link\"}\r\n onClick={() => {\r\n let fileIds = [] as any;\r\n files.map((item) => {\r\n fileIds.push(item.fileId);\r\n });\r\n nscfile.downloadZip(fileIds.join(\",\"));\r\n }}\r\n >\r\n {\"文件下载\"}\r\n </Button>\r\n );\r\n }\r\n }\r\n },\r\n ...temp,\r\n };\r\n }\r\n if (temp.type == \"Image\" && temp?.columnShow !== false) {\r\n temp = {\r\n render: (_text, record) => {\r\n if (Array.isArray(record[temp.dataIndex])) {\r\n const files = record[temp.dataIndex];\r\n if (files.length == 1) {\r\n return (\r\n <div className=\"nsc-basepage-table-img\">\r\n {files[0]?.fileName}\r\n </div>\r\n );\r\n } else if (files.length > 1) {\r\n return (\r\n <Button type={\"link\"} onClick={() => { }}>\r\n 图片查看\r\n </Button>\r\n );\r\n }\r\n }\r\n },\r\n ...temp,\r\n };\r\n }\r\n return temp.columnShow !== false ? temp : null;\r\n }).filter(column => column !== null);\r\n }\r\n\r\n const filteredColumns = converData(data);\r\n return filteredColumns\r\n // 使用map遍历树中的每个节点并应用修改函数\r\n\r\n // const newData = data.map(item=>)\r\n}\r\n"],"mappings":";;;;;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,mBAAmB;AACtC,OAAOC,OAAO,MAAM,UAAU;AAC9B,OAAOC,MAAM,MAAM,QAAQ;AAC3B,OAAO,MAAMC,cAAc,GAAGA,CAACC,OAAY,EAAAC,IAAA,KAAkD;EAAA,IAAhD;IAAEC,WAAW,GAAG,EAAE;IAAEC,WAAW,GAAG;EAAQ,CAAC,GAAAF,IAAA;EACtFD,OAAO,CAACI,GAAG,CAAEC,IAAS,IAAK;IACzB,IAAIC,IAAI,GAAAC,aAAA;MAAKC,KAAK,EAAE;IAAG,GAAKH,IAAI,CAAE;IAClC,IAAIA,IAAI,CAACI,QAAQ,IAAIJ,IAAI,CAACI,QAAQ,CAACC,MAAM,GAAG,CAAC,EAAE;MAC7CX,cAAc,CAACM,IAAI,CAACI,QAAQ,EAAE;QAAEP,WAAW;QAAEC;MAAY,CAAC,CAAC;IAC7D,CAAC,MAAM;MAAA,IAAAQ,YAAA;MACL,IAAIL,IAAI,CAACM,MAAM,KAAK,IAAI,IAAI,EAAAD,YAAA,GAAAL,IAAI,CAACM,MAAM,cAAAD,YAAA,uBAAXA,YAAA,CAAaE,IAAI,MAAK,IAAI,EAAE;QAAA,IAAAC,aAAA,EAAAC,aAAA,EAAAC,aAAA;QACtD,IAAIC,KAAK,GAAGX,IAAI,CAACW,KAAK,GAAAV,aAAA,KAAQD,IAAI,CAACW,KAAK,IAAK,CAAC,CAAC;QAC/C,OAAOA,KAAK,CAACC,QAAQ;QACrBhB,WAAW,CAACiB,IAAI,CAAC;UACfC,IAAI,EAAEd,IAAI,CAACe,KAAK,IAAIf,IAAI,CAACgB,SAAS;UAClCC,KAAK,EAAE,EAAAT,aAAA,GAAAR,IAAI,CAACM,MAAM,cAAAE,aAAA,uBAAXA,aAAA,CAAaS,KAAK,KAAIjB,IAAI,CAACkB,KAAK;UACvCC,IAAI,EAAEnB,IAAI,CAACmB,IAAI;UACfR,KAAK,EAAEA,KAAK;UACZS,QAAQ,GAAAX,aAAA,GAAET,IAAI,CAACM,MAAM,cAAAG,aAAA,uBAAXA,aAAA,CAAaW,QAAQ;UAC/BC,UAAU,GAAAX,aAAA,GAAEV,IAAI,CAACM,MAAM,cAAAI,aAAA,uBAAXA,aAAA,CAAaW,UAAU;UACnCC,KAAK,EAAEtB,IAAI,CAACuB,WAAW,GAAGvB,IAAI,CAACuB,WAAW,GAAG;QAC/C,CAAC,CAAC;MACJ;MACAvB,IAAI,CAACwB,MAAM,KAAK,KAAK,IACnB3B,WAAW,CAACgB,IAAI,CAAC;QACfC,IAAI,EAAEd,IAAI,CAACe,KAAK,IAAIf,IAAI,CAACgB,SAAS;QAClCC,KAAK,EAAEjB,IAAI,CAACkB,KAAK;QACjBI,KAAK,EAAEtB,IAAI,CAACsB,KAAK,GAAGtB,IAAI,CAACsB,KAAK,GAAG,EAAE;QACnCH,IAAI,EAAEnB,IAAI,CAACmB,IAAI;QACfM,IAAI,EAAEzB,IAAI,CAACyB,IAAI;QACfC,QAAQ,EAAE1B,IAAI,CAAC0B,QAAQ;QACvBC,QAAQ,EAAE3B,IAAI,CAAC2B,QAAQ;QACvBhB,KAAK,EAAAV,aAAA,KAAOD,IAAI,CAACW,KAAK;MACxB,CAAC,CAAC;IACN;EAEF,CAAC,CAAC;EACF,OAAO;IACLf,WAAW;IACXC;EACF,CAAC;AAEH,CAAC;AACD,MAAM+B,OAAO,GAAGA,CAACjB,KAAK,EAAEkB,IAAI,KAAK;EAAA,IAAAC,WAAA;EAC/B,IAAIC,OAAO,GAAGF,IAAI;EAClB,IAAIlB,KAAK,aAALA,KAAK,eAALA,KAAK,CAAEqB,IAAI,IAAI,CAAArB,KAAK,aAALA,KAAK,gBAAAmB,WAAA,GAALnB,KAAK,CAAEqB,IAAI,cAAAF,WAAA,uBAAXA,WAAA,CAAa1B,MAAM,IAAG,CAAC,EAAE;IAC1C,IAAI4B,IAAI,GAAGrB,KAAK,CAACqB,IAAI;IACrB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,IAAGD,IAAI,aAAJA,IAAI,uBAAJA,IAAI,CAAE5B,MAAM,GAAE6B,CAAC,EAAE,EAAE;MACrC,IAAID,IAAI,CAACC,CAAC,CAAC,CAACC,KAAK,IAAIL,IAAI,EAAE;QACzBE,OAAO,GAAGC,IAAI,CAACC,CAAC,CAAC,CAAChB,KAAK;MACzB;IACF;EACF;EACA,OAAOc,OAAO;AAChB,CAAC;AACD,OAAO,MAAMI,aAAa,GAAGA,CAACzC,OAAY,EAAEiB,KAAU,KAAK;EACzD,IAAIqB,IAAI,GAAGxC,MAAM,CAAC4C,SAAS,CAAC1C,OAAO,CAAC;EAEpC,SAAS2C,UAAUA,CAACL,IAAI,EAAE;IACxB,OAAOA,IAAI,CAAClC,GAAG,CAACwC,GAAG,IAAI;MAAA,IAAAC,cAAA,EAAAC,KAAA,EAAAC,MAAA;MACrB,IAAIzC,IAAI,GAAAC,aAAA;QAAKC,KAAK,EAAE;MAAG,GAAKoC,GAAG,CAAE;MACjC,OAAOtC,IAAI,CAACM,MAAM;MAClB,OAAON,IAAI,CAACsB,KAAK;MACjB,OAAOtB,IAAI,CAACyB,IAAI;MAChB,OAAOzB,IAAI,CAAC2B,QAAQ;MACpB,IAAI3B,IAAI,CAACG,QAAQ,EAAE;QACjBH,IAAI,CAACG,QAAQ,GAAGH,IAAI,CAACG,QAAQ,CAACuC,MAAM,CAACC,KAAK,IAAIA,KAAK,CAACC,UAAU,KAAK,KAAK,CAAC;MAC3E;MACA,IAAI5C,IAAI,CAAC6C,YAAY,EAAE;QACrB7C,IAAI,CAAC8C,WAAW,GAAG;UACjB3B,IAAI,EAAEnB,IAAI,CAACmB,IAAI;UACfR,KAAK,EAAEX,IAAI,CAACW;QACd,CAAC;MACH;MACA,IAAIoC,QAAQ,GAAA9C,aAAA,KAAQD,IAAI,CAACW,KAAK,CAAE;MAChC,IAAIoC,QAAQ,aAARA,QAAQ,eAARA,QAAQ,CAAEf,IAAI,IAAI,CAAAe,QAAQ,aAARA,QAAQ,gBAAAR,cAAA,GAARQ,QAAQ,CAAEf,IAAI,cAAAO,cAAA,uBAAdA,cAAA,CAAgBnC,MAAM,IAAG,CAAC,EAAE;QAChDJ,IAAI,GAAAC,aAAA;UACF+C,QAAQ,EAAE;YAAEC,SAAS,EAAE;UAAM,CAAC;UAC9BC,MAAM,EAAGrB,IAAS,IAAK;YACrB,OAAOD,OAAO,CAACmB,QAAQ,EAAElB,IAAI,CAAC;UAChC;QAAC,GACE7B,IAAI,CACR;MACH;MACA,OAAOA,IAAI,CAACW,KAAK;MACjB,OAAOX,IAAI,CAACW,KAAK;MACjB,IAAIX,IAAI,CAACkD,MAAM,IAAI,OAAOlD,IAAI,CAACkD,MAAM,IAAI,QAAQ,EAAE;QACjD,IAAIC,SAAS,GAAGnD,IAAI,CAACkD,MAAM;QAC3BlD,IAAI,GAAAC,aAAA,CAAAA,aAAA,KACCD,IAAI;UACPkD,MAAM,EAAEA,CAACE,KAAK,EAAEC,OAAO,EAAEC,MAAM,KAAK;YAClC,MAAMC,WAAW,GAAG;cAAE1B,IAAI,EAAEuB,KAAK;cAAEI,MAAM,EAAEH,OAAO;cAAEI,KAAK,EAAEH,MAAM;cAAEI,KAAK,EAAE/C,KAAK,CAAC+C;YAAM,CAAC;YACvF,MAAMC,IAAI,GAAG,IAAIC,QAAQ,CAAC,mBAAmB,EAAET,SAAS,CAAC;YACzD,MAAMU,GAAG,GAAGF,IAAI,CAACJ,WAAW,EAAE5C,KAAK,CAACmD,KAAK,CAAC;YAC1C,OAAOD,GAAG;UACZ;QAAC,EACF;MACH;MACA,IAAI7D,IAAI,CAACmB,IAAI,IAAI,QAAQ,IAAI,EAAAqB,KAAA,GAAAxC,IAAI,cAAAwC,KAAA,uBAAJA,KAAA,CAAMI,UAAU,MAAK,KAAK,EAAE;QACvD5C,IAAI,GAAAC,aAAA;UACFiD,MAAM,EAAEA,CAACE,KAAK,EAAEI,MAAM,KAAK;YACzB,IAAIO,KAAK,CAACC,OAAO,CAACR,MAAM,CAACxD,IAAI,CAACgB,SAAS,CAAC,CAAC,EAAE;cACzC,MAAMiD,KAAK,GAAGT,MAAM,CAACxD,IAAI,CAACgB,SAAS,CAAC;cACpC,IAAIiD,KAAK,CAAC7D,MAAM,IAAI,CAAC,EAAE;gBAAA,IAAA8D,OAAA;gBACrB,oBACE7E,KAAA,CAAA8E,aAAA,CAAC7E,MAAM;kBACL6B,IAAI,EAAE,MAAO;kBACbiD,OAAO,EAAEA,CAAA,KAAM;oBACb7E,OAAO,CAAC8E,QAAQ,CAACJ,KAAK,CAAC,CAAC,CAAC,CAACK,MAAM,CAAC;kBACnC;gBAAE,IAAAJ,OAAA,GAEDD,KAAK,CAAC,CAAC,CAAC,cAAAC,OAAA,uBAARA,OAAA,CAAUK,QACL,CAAC;cAEb,CAAC,MAAM,IAAIN,KAAK,CAAC7D,MAAM,GAAG,CAAC,EAAE;gBAC3B,oBACEf,KAAA,CAAA8E,aAAA,CAAC7E,MAAM;kBACL6B,IAAI,EAAE,MAAO;kBACbiD,OAAO,EAAEA,CAAA,KAAM;oBACb,IAAII,OAAO,GAAG,EAAS;oBACvBP,KAAK,CAACnE,GAAG,CAAEC,IAAI,IAAK;sBAClByE,OAAO,CAAC3D,IAAI,CAACd,IAAI,CAACuE,MAAM,CAAC;oBAC3B,CAAC,CAAC;oBACF/E,OAAO,CAACkF,WAAW,CAACD,OAAO,CAACE,IAAI,CAAC,GAAG,CAAC,CAAC;kBACxC;gBAAE,GAED,MACK,CAAC;cAEb;YACF;UACF;QAAC,GACE1E,IAAI,CACR;MACH;MACA,IAAIA,IAAI,CAACmB,IAAI,IAAI,OAAO,IAAI,EAAAsB,MAAA,GAAAzC,IAAI,cAAAyC,MAAA,uBAAJA,MAAA,CAAMG,UAAU,MAAK,KAAK,EAAE;QACtD5C,IAAI,GAAAC,aAAA;UACFiD,MAAM,EAAEA,CAACE,KAAK,EAAEI,MAAM,KAAK;YACzB,IAAIO,KAAK,CAACC,OAAO,CAACR,MAAM,CAACxD,IAAI,CAACgB,SAAS,CAAC,CAAC,EAAE;cACzC,MAAMiD,KAAK,GAAGT,MAAM,CAACxD,IAAI,CAACgB,SAAS,CAAC;cACpC,IAAIiD,KAAK,CAAC7D,MAAM,IAAI,CAAC,EAAE;gBAAA,IAAAuE,QAAA;gBACrB,oBACEtF,KAAA,CAAA8E,aAAA;kBAAKS,SAAS,EAAC;gBAAwB,IAAAD,QAAA,GACpCV,KAAK,CAAC,CAAC,CAAC,cAAAU,QAAA,uBAARA,QAAA,CAAUJ,QACR,CAAC;cAEV,CAAC,MAAM,IAAIN,KAAK,CAAC7D,MAAM,GAAG,CAAC,EAAE;gBAC3B,oBACEf,KAAA,CAAA8E,aAAA,CAAC7E,MAAM;kBAAC6B,IAAI,EAAE,MAAO;kBAACiD,OAAO,EAAEA,CAAA,KAAM,CAAE;gBAAE,GAAC,0BAElC,CAAC;cAEb;YACF;UACF;QAAC,GACEpE,IAAI,CACR;MACH;MACA,OAAOA,IAAI,CAAC4C,UAAU,KAAK,KAAK,GAAG5C,IAAI,GAAG,IAAI;IAChD,CAAC,CAAC,CAAC0C,MAAM,CAACmC,MAAM,IAAIA,MAAM,KAAK,IAAI,CAAC;EACtC;EAEA,MAAMC,eAAe,GAAGzC,UAAU,CAACL,IAAI,CAAC;EACxC,OAAO8C,eAAe;EACtB;;EAEA;AACF,CAAC"}
|
|
@@ -46,7 +46,7 @@ class FormPage extends PureComponent {
|
|
|
46
46
|
let label = "新增";
|
|
47
47
|
if (orgValue && editorflag == "editor") {
|
|
48
48
|
label = "编辑";
|
|
49
|
-
} else if (orgValue && editorflag == "detail") {
|
|
49
|
+
} else if (orgValue && (editorflag == "detail" || editorflag == "search")) {
|
|
50
50
|
label = "查看";
|
|
51
51
|
}
|
|
52
52
|
if (orgValue) {
|
|
@@ -561,4 +561,4 @@ class FormPage extends PureComponent {
|
|
|
561
561
|
}
|
|
562
562
|
}
|
|
563
563
|
export default FormPage;
|
|
564
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZGF5anMiLCJsb2Rhc2giLCJCdXR0b24iLCJVcGxvYWQiLCJjbHMiLCJGb3JtUGFnZSIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJzZXRTdGF0ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImNvbnZlcnRWYWx1ZSIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2hvd0Zvcm0iLCJhZnRlclJlbmRlciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJwcm9wcyIsImRlZmF1bHRWYWx1ZSIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsInNldExvYWRpbmciLCJnZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ1Iiwic3RhdGUiLCJmb3JtVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsImRhdGEiLCJfb2JqZWN0U3ByZWFkIiwiZmlsZUZvcm1hdCIsIm5ld0ZpbGVMaXN0IiwibWFwIiwiaXRlbSIsImdldEZpbGVMaXN0Iiwic3VibWl0RmxhZyIsImVycm9yIiwiZGF0ZVZhbHVlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsImlkIiwidHlwZSIsInZhbHVlcyIsImNsb25lRGVlcCIsImRhdGVGb3JtYXQiLCJzZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ2IiwibmV3VmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdE9iamVjdCIsInJlcXVlc3RDb25maWciLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJ1cmwiLCJwYXJhbXMiLCJVdGlscyIsImZ1bmMiLCJGdW5jdGlvbiIsImNvbnZlclBhcmFtcyIsImNvbnNvbGUiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm9uU3VibWl0Iiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsIm9iaiIsImZpbGVJZCIsImZpbGVOYW1lIiwic3RhdHVzIiwicHVzaCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5IiwidmFsaWQiLCJ2YWxpZGF0ZUZpZWxkcyIsInRoZW4iLCJjYXRjaCIsImVycm9ySW5mbyIsInZhbHVlQ2hhbmdlIiwiX3JlZiIsInZhbHVlT3B0aW9uIiwiZGljdE5hbWUiLCJuZXdOYW1lcyIsIm9uQ2hhbmdlIiwiZXZlbnRPcHRpb24iLCJmdW5jcyIsInJlZnMiLCJyZWZMaXN0IiwidmFsdWVTdHIiLCJzZWxmRnVuYyIsInJlbmRlckZvcm0iLCJmb3JtcyIsIm5ld1ZhbGlkIiwiY3JlYXRlRWxlbWVudCIsImd1dHRlciIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJiaW5kIiwiZGF0YVR5cGUiLCJkaXNhYmxlZCIsInJ1bGVzIiwicmVxdWlyZWQiLCJpdGVtUmVmIiwiX2l0ZW0kcHJvcHMyIiwic3BhbiIsIkl0ZW0iLCJjb21wb25lbnROYW1lIiwicmVmIiwiX2l0ZW0kcHJvcHMzIiwiX2V4dGVuZHMiLCJvbkxpc3RDaGFuZ2UiLCJsaXN0Iiwic2hvd1VwbG9hZExpc3QiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1JlbW92ZUljb24iLCJjaGlsZHJlbiIsInJlbmRlciIsImZvb3RlciIsIm1vZGFsUHJvcHMiLCJ0aXRsZSIsIm9uT2siLCJvbkNhbmNlbCIsIm9rQnV0dG9uUHJvcHMiLCJjZW50ZXJlZCIsIndpZHRoIiwiZHJhd2VyUHJvcHMiLCJvbkNsb3NlIiwibmV3Rm9ybXNPYmoiLCJmb3JtR3JvdXBzIiwib3RoZXJHcnVwcyIsImdyb3VwTmFtZSIsImluZGV4T2YiLCJncm91cEZvcm1zIiwiZm9ybSIsInNlbGZCdXR0b25zIiwic2hvd01vZGVsIiwiZm9ybVR5cGUiLCJsYWJlbENvbCIsImZsZXgiLCJ3cmFwcGVyQ29sIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSAnLi4vLi4vYmFzZS91cGxvYWQnXHJcbmltcG9ydCBjbHMgZnJvbSAnY2xhc3NuYW1lcydcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1QYWdlUHJvcHMge1xyXG4gIGZvcm1zPzogQXJyYXk8YW55PjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGZvb3RlckNsYXNzTmFtZT86IGFueTtcclxuICBva0J1dHRvblByb3BzPzogYW55O1xyXG4gIGNhbmNlbEJ1dHRvblByb3BzPzogYW55O1xyXG4gIGZvb3Rlcj86IFJlYWN0Tm9kZSB8IGJvb2xlYW47XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25Gb3JtQ2hhbmdlPzogKHZhbHVlPzogYW55LCBhbGxWYWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBzdWJtaXRQYXJhbXM/OiBhbnk7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHByb3BzPzogSUZvcm1Qcm9wcztcclxuICByZXF1ZXN0T2JqZWN0Pzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nLFxyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nLFxyXG4gICAgYWRkUGFyYW1zPzogYW55LFxyXG4gICAgZWRpdG9yUGFyYW1zPzogYW55XHJcbiAgfVxyXG4gIHJlcXVlc3RDb25maWc/OiBhbnlcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY2xhc3MgRm9ybVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEZvcm1QYWdlUHJvcHMsIGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgICBmaWxlTGlzdDoge30gYXMgYW55XHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZmlsZUZvcm1hdCA9IFtdIGFzIGFueTtcclxuICByZWZMaXN0ID0ge30gYXMgYW55O1xyXG4gIHN1Ym1pdEZsYWcgPSB0cnVlXHJcbiAgLy/ooajljZXmmL7npLpcclxuICBzaG93KG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGxldCBsYWJlbCA9IFwi5paw5aKeXCI7XHJcbiAgICBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLnvJbovpFcIjtcclxuICAgIH0gZWxzZSBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImRldGFpbFwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLmn6XnnItcIjtcclxuICAgIH1cclxuICAgIGlmIChvcmdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgIHZhbHVlOiBvcmdWYWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKG9yZ1ZhbHVlLCBsYWJlbCk7XHJcbiAgICAgICAgICAvL+WkhOeQhuaWh+S7tuaVsOaNrlxyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSwge1xyXG4gICAgICAgICAgICBhZnRlclJlbmRlcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoaWRlKGhpZGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IG9uSGlkZUZvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25IaWRlRm9ybSkge1xyXG4gICAgICBvbkhpZGVGb3JtICYmIG9uSGlkZUZvcm0oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICBoaWRlICYmIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIHNob3dGb3JtKG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvdyhvcmdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spXHJcbiAgfVxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGxvYWRpbmcgfSk7XHJcbiAgfVxyXG4gIGdldEZvcm1WYWx1ZSgpIHtcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgZGF0YSA9IHsgLi4uZm9ybVZhbHVlLCAuLi5kaWN0TmFtZXMgfTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgbmV3RmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBpZiAoZmlsZUxpc3RbaXRlbV0ubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFmb3JtVmFsdWVbaXRlbV0pIHtcclxuICAgICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSB0aGlzLmdldEZpbGVMaXN0KGZpbGVMaXN0W2l0ZW1dIHx8IFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIC4uLm5ld0ZpbGVMaXN0IH07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKCfor7fnrYnlvoXmiYDmnInmlofku7bkuIrkvKDlrozmiJDvvIEnKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlVmFsdWVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gZGF0YVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IGRheWpzKG9sZGRhdGEpLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIGlkOiB2YWx1ZT8uaWQgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuICBjb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGxldCB2YWx1ZXMgPSBsb2Rhc2guY2xvbmVEZWVwKHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1tpdGVtXTtcclxuICAgICAgICBpZiAob2xkZGF0YSAmJiBBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICBmaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3Qob2xkZGF0YSB8fCBbXSwgdHlwZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2l0ZW1dID0gW11cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogZmlsZUxpc3QgfSlcclxuICAgIH1cclxuICAgIC8v5aSE55CG5pel5pyf5qC85byP5pWw5o2uXHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZXNba2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlc1trZXldID0gZGF5anMob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlc1xyXG4gIH1cclxuICBzZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKG5ld1ZhbHVlKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZm9ybWRhdGEsIGxhYmVsKSB7XHJcbiAgICBjb25zdCB7IHN1Ym1pdFVybCwgc3VibWl0UGFyYW1zID0ge30sIGNhbGxCYWNrLCByZXF1ZXN0T2JqZWN0ID0ge30sIHJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWRkVXJsLCBlZGl0b3JVcmwsIGFkZFBhcmFtcywgZWRpdG9yUGFyYW1zIH0gPSByZXF1ZXN0T2JqZWN0XHJcbiAgICBsZXQgdXJsID0gJyc7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcclxuICAgIGlmIChsYWJlbCA9PSAn5paw5aKeJykge1xyXG4gICAgICB1cmwgPSBhZGRVcmwgPyBhZGRVcmwgOiBzdWJtaXRVcmw7XHJcbiAgICAgIGlmIChhZGRQYXJhbXMgJiYgdHlwZW9mIGFkZFBhcmFtcyA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fVxyXG4gICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKCdVdGlscycsIGFkZFBhcmFtcyk7XHJcbiAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpXHJcbiAgICAgICAgcGFyYW1zID0gY29udmVyUGFyYW1zXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gYWRkUGFyYW1zID8gYWRkUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09ICfnvJbovpEnKSB7XHJcbiAgICAgIHVybCA9IGVkaXRvclVybCA/IGVkaXRvclVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGVkaXRvclBhcmFtcyAmJiB0eXBlb2YgZWRpdG9yUGFyYW1zID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oJ1V0aWxzJywgZWRpdG9yUGFyYW1zKTtcclxuICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscylcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXNcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBlZGl0b3JQYXJhbXMgPyBlZGl0b3JQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLphY3nva5VcmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/Lm9uU3VibWl0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICBkYXRhOiB7IC4uLmZvcm1kYXRhLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgbm9VbmRlZmluZWQ6IGxhYmVsID09IFwi57yW6L6RXCIsXHJcbiAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0RmlsZUxpc3QoZGF0YSwgbGFiZWwgPSAn5paw5aKeJykge1xyXG4gICAgdGhpcy5zdWJtaXRGbGFnID0gdHJ1ZVxyXG4gICAgbGV0IGZpbGVMaXN0ID0gW10gYXMgYW55O1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgIGZpbGVJZDogaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobGFiZWwgPT0gJ+afpeeciycpIHtcclxuICAgICAgICAgIG9iai5zdGF0dXMgPSAnZG9uZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYWJlbCAhPT0gJ+afpeeciycgJiYgaXRlbS5zdGF0dXMgIT09ICdkb25lJykge1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXRGbGFnID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbGVMaXN0LnB1c2gob2JqKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsZUxpc3Q7XHJcbiAgfTtcclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCB7IG9uU3VibWl0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCB2YWxpZCA9IHRoaXMudmFsaWQ7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudFxyXG4gICAgICA/LnZhbGlkYXRlRmllbGRzKHZhbGlkKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmdldEZvcm1WYWx1ZSgpXHJcbiAgICAgICAgaWYgKCF0aGlzLnN1Ym1pdEZsYWcpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoJ+ivt+etieW+heaJgOacieaWh+S7tuS4iuS8oOWujOaIkO+8gScpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChvblN1Ym1pdCkge1xyXG4gICAgICAgICAgb25TdWJtaXQgJiYgb25TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnJvckluZm86IGFueSkgPT4geyB9KTtcclxuICB9XHJcbiAgdmFsdWVDaGFuZ2UoeyB0eXBlLCBkaWN0TmFtZSB9LCBwcm9wcywgdmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKSB7XHJcbiAgICBpZiAodmFsdWVPcHRpb24pIHtcclxuICAgICAgaWYgKGRpY3ROYW1lKSB7XHJcbiAgICAgICAgY29uc3QgeyBkaWN0TmFtZXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgY29uc3QgbmV3TmFtZXMgPSB7IC4uLmRpY3ROYW1lcyB9IGFzIGFueTtcclxuICAgICAgICBuZXdOYW1lc1tkaWN0TmFtZV0gPSB2YWx1ZU9wdGlvbi5sYWJlbDtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRpY3ROYW1lczogbmV3TmFtZXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwcm9wcy5vbkNoYW5nZSkge1xyXG4gICAgICBpZiAodHlwZW9mIHByb3BzLm9uQ2hhbmdlID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0geyB2YWx1ZSwgZGF0YSwgZm9ybVJlZjogdGhpcy5mb3JtUmVmLCBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyB8fCB7fSwgcmVmczogdGhpcy5yZWZMaXN0IH0gYXMgYW55O1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fVxyXG4gICAgICAgIGlmICh0eXBlID09ICdTZWxlY3QnKSB7XHJcbiAgICAgICAgICBldmVudE9wdGlvbi52YWx1ZU9wdGlvbiA9IHZhbHVlT3B0aW9uO1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24uZGF0YSA9IGRhdGFcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ0RhdGVQaWNrZXInIHx8IHR5cGUgPT0gJ1JhbmdlUGlja2VyJykge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVTdHIgPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZkZ1bmMgPSBuZXcgRnVuY3Rpb24oJ2V2ZW50T3B0aW9uJywgJ1V0aWxzJywgcHJvcHMub25DaGFuZ2UpO1xyXG4gICAgICAgIHNlbGZGdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKSB7XHJcbiAgICBjb25zdCBuZXdWYWxpZDogYW55W10gPSBbXTtcclxuICAgIHJldHVybiA8Um93IGd1dHRlcj17MjR9PlxyXG4gICAgICB7Zm9ybXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBpdGVtUHJvcHMgPSBpdGVtLnByb3BzIHx8IHt9O1xyXG4gICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlVmFsdWVGb3JtYXRbaXRlbS5uYW1lXSA9XHJcbiAgICAgICAgICAgIGl0ZW1Qcm9wcy5mb3JtYXQgfHwgaXRlbVByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2l0ZW0ubmFtZV0gPSBpdGVtUHJvcHMuZm9ybWF0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYWxsb3dDaGFycyA9IGl0ZW0ucHJvcHM/LmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgbGV0IHByb3BzID0ge1xyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IGDor7fovpPlhaUke2l0ZW0ubGFiZWx9YCxcclxuICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXHJcbiAgICAgICAgICBvbkNoYW5nZTogdGhpcy52YWx1ZUNoYW5nZS5iaW5kKFxyXG4gICAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgIGRpY3ROYW1lOiBpdGVtLmRpY3ROYW1lLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IC4uLml0ZW0ucHJvcHMgfVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgIHByb3BzLmFsbG93Q2hhcnMgPSB0cnVlOyAgLy9mb3JtLml0ZW0g5L2/55SoaW5wdXTnu4Tku7ZhbGxvd0NoYXJz5b+F6aG76buY6K6kdHJ1ZSzkuI3nhLbovpPlhaXnibnmrorlrZfnrKbmi7/liLDnmoTlgLzkuI3lr7lcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVsZXRlIHByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgIGRlbGV0ZSBwcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgZGVsZXRlIHByb3BzLmRhdGFUeXBlO1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICBwcm9wcy5wbGFjZWhvbGRlciA9ICcnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHx8IGl0ZW0ucmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkID0gbmV3VmFsaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGl0ZW1SZWY6IGFueSA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KClcclxuICAgICAgICB0aGlzLnJlZkxpc3RbaXRlbS5uYW1lXSA9IGl0ZW1SZWZcclxuICAgICAgICBpZiAoaXRlbS50eXBlICE9PSAnVXBsb2FkJykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPENvbCBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICB0eXBlPXtpdGVtLnByb3BzPy50eXBlfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICByZWY6IGl0ZW1SZWYsXHJcbiAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5maWxlRm9ybWF0LnB1c2goaXRlbS5uYW1lKVxyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPENvbCBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3RbaXRlbS5uYW1lXSB8fCBbXX1cclxuICAgICAgICAgICAgICAgICAgb25MaXN0Q2hhbmdlPXsobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGVMaXN0OiB7IC4uLmZpbGVMaXN0LCBbaXRlbS5uYW1lXTogbGlzdCB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3Q9e3sgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSwgc2hvd1JlbW92ZUljb246IGxhYmVsICE9PSAn5p+l55yLJyB9fVxyXG4gICAgICAgICAgICAgICAgICByZWY9e2l0ZW1SZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc30+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtLnByb3BzLmNoaWxkcmVuID8gaXRlbS5wcm9wcy5jaGlsZHJlbiA6IChsYWJlbCAhPT0gJ+afpeeciycgJiYgPEJ1dHRvbj7kuIrkvKDmlofku7Y8L0J1dHRvbj4pfVxyXG4gICAgICAgICAgICAgICAgPC9VcGxvYWQ+XHJcbiAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pfVxyXG4gICAgPC9Sb3c+XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9ybXMgPSBbXSwgcHJvcHMgPSB7fSwgZm9vdGVyID0gdHJ1ZSwgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG1vZGFsUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcblxyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdXHJcbiAgICBsZXQgbmV3Rm9ybXNPYmogPSB7fSBhcyBhbnk7XHJcbiAgICBsZXQgZm9ybUdyb3VwcyA9IFtdIGFzIGFueVxyXG4gICAgbGV0IG90aGVyR3J1cHMgPSBbXSBhcyBhbnlcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKGZvcm1Hcm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3JtR3JvdXBzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGdyb3VwRm9ybXMgPSBbXSBhcyBhbnlcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBuZXdGb3Jtc09ialtpdGVtXSA9IGdyb3VwRm9ybXNcclxuICAgICAgfSlcclxuICAgICAgbmV3Rm9ybXNPYmpbJ25vR3JvdXBOYW1lJ10gPSBvdGhlckdydXBzXHJcbiAgICB9XHJcbiAgICAvL+iHquWumuS5ieaMiemSrlxyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSAnb2JqZWN0JyAmJiBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFnZVwiPlxyXG4gICAgICAgICAge2Zvcm1Hcm91cHMubGVuZ3RoID09IDAgPyB0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKSA6IE9iamVjdC5rZXlzKG5ld0Zvcm1zT2JqKS5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgIHtrZXkgIT0gXCJub0dyb3VwTmFtZVwiICYmIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tdGl0bGVcIj57a2V5fTwvZGl2Pn1cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tY29udGVudFwiPnt0aGlzLnJlbmRlckZvcm0obmV3Rm9ybXNPYmpba2V5XSwgbGFiZWwpfTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9KX1cclxuICAgICAgICAgIHshdGhpcy5wcm9wcy5mb3JtVHlwZSAmJiBmb290ZXIgPT0gdHJ1ZSAmJlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKCduc2MtZm9ybS1wYWdlLWZvb3RlcicsIHRoaXMucHJvcHMuZm9vdGVyQ2xhc3NOYW1lKX0+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvbiB7Li4udGhpcy5wcm9wcy5jYW5jZWxCdXR0b25Qcm9wc30gb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25DYW5jZWwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbmNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICB9fT7lj5bmtog8L0J1dHRvbj5cclxuICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgey4uLnRoaXMucHJvcHMub2tCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCgpXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgbG9hZGluZz17dGhpcy5zdGF0ZS5sb2FkaW5nfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnbnNjLWZvcm0tcGFnZS1mb290ZXItYnRuJ31cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDkv53lrZhcclxuICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICB7c2VsZkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17J25zYy1mb3JtLXBhZ2UtZm9vdGVyLWJ0bid9IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PlxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHshdGhpcy5wcm9wcy5mb3JtVHlwZSAmJiBmb290ZXIgIT09IHRydWUgJiYgdGhpcy5wcm9wcy5mb290ZXJ9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvRm9ybT5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3JtUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQWtCQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxTQUFTQyxVQUFVLFFBQVEsbUJBQW1CO0FBQzlDLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU8scUJBQXFCO0FBQzVCLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsTUFBTSxNQUFNLG1CQUFtQjtBQUN0QyxPQUFPQyxHQUFHLE1BQU0sWUFB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
|
|
564
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJSZWFjdCIsIlB1cmVDb21wb25lbnQiLCJGb3JtIiwiZ2V0Tm9kZSIsIm1lc3NhZ2UiLCJDb2wiLCJSb3ciLCJpc0VtcHR5T2JqIiwiZGF5anMiLCJsb2Rhc2giLCJCdXR0b24iLCJVcGxvYWQiLCJjbHMiLCJGb3JtUGFnZSIsImNvbnN0cnVjdG9yIiwiYXJndW1lbnRzIiwiX2RlZmluZVByb3BlcnR5IiwiY3JlYXRlUmVmIiwibG9hZGluZyIsImxhYmVsIiwiZWRpdG9yRmxhZyIsInZhbHVlIiwiZGljdE5hbWVzIiwiZmlsZUxpc3QiLCJzaG93Iiwib3JnVmFsdWUiLCJlZGl0b3JmbGFnIiwibGVuZ3RoIiwidW5kZWZpbmVkIiwiY2FsbEJhY2siLCJzZXRTdGF0ZSIsIl90aGlzJGZvcm1SZWYkY3VycmVudCIsImNvbnZlcnRWYWx1ZSIsImZvcm1SZWYiLCJjdXJyZW50Iiwic2hvd0Zvcm0iLCJhZnRlclJlbmRlciIsIl90aGlzJGZvcm1SZWYkY3VycmVudDIiLCJwcm9wcyIsImRlZmF1bHRWYWx1ZSIsImhpZGUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQzIiwib25IaWRlRm9ybSIsImhpZGVGb3JtIiwiX3RoaXMkZm9ybVJlZiRjdXJyZW50NCIsInNldExvYWRpbmciLCJnZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ1Iiwic3RhdGUiLCJmb3JtVmFsdWUiLCJnZXRGaWVsZHNWYWx1ZSIsImRhdGEiLCJfb2JqZWN0U3ByZWFkIiwiZmlsZUZvcm1hdCIsIm5ld0ZpbGVMaXN0IiwibWFwIiwiaXRlbSIsImdldEZpbGVMaXN0Iiwic3VibWl0RmxhZyIsImVycm9yIiwiZGF0ZVZhbHVlRm9ybWF0Iiwia2V5Iiwib2xkZGF0YSIsIkFycmF5IiwiaXNBcnJheSIsImZvcm1hdCIsImlkIiwidHlwZSIsInZhbHVlcyIsImNsb25lRGVlcCIsImRhdGVGb3JtYXQiLCJzZXRGb3JtVmFsdWUiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ2IiwibmV3VmFsdWUiLCJzZXRGaWVsZHNWYWx1ZSIsImRvU3VibWl0IiwiZm9ybWRhdGEiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ3Iiwic3VibWl0VXJsIiwic3VibWl0UGFyYW1zIiwicmVxdWVzdE9iamVjdCIsInJlcXVlc3RDb25maWciLCJhZGRVcmwiLCJlZGl0b3JVcmwiLCJhZGRQYXJhbXMiLCJlZGl0b3JQYXJhbXMiLCJ1cmwiLCJwYXJhbXMiLCJVdGlscyIsImZ1bmMiLCJGdW5jdGlvbiIsImNvbnZlclBhcmFtcyIsImNvbnNvbGUiLCJvdGhlclBhcmFtcyIsIl9vYmplY3RXaXRob3V0UHJvcGVydGllcyIsIl9leGNsdWRlZCIsIm9uU3VibWl0Iiwibm9VbmRlZmluZWQiLCJyZXMiLCJjb2RlIiwic3VjY2VzcyIsIm9iaiIsImZpbGVJZCIsImZpbGVOYW1lIiwic3RhdHVzIiwicHVzaCIsIl90aGlzJGZvcm1SZWYkY3VycmVudDgiLCJfdGhpcyRmb3JtUmVmJGN1cnJlbnQ5IiwidmFsaWQiLCJ2YWxpZGF0ZUZpZWxkcyIsInRoZW4iLCJjYXRjaCIsImVycm9ySW5mbyIsInZhbHVlQ2hhbmdlIiwiX3JlZiIsInZhbHVlT3B0aW9uIiwiZGljdE5hbWUiLCJuZXdOYW1lcyIsIm9uQ2hhbmdlIiwiZXZlbnRPcHRpb24iLCJmdW5jcyIsInJlZnMiLCJyZWZMaXN0IiwidmFsdWVTdHIiLCJzZWxmRnVuYyIsInJlbmRlckZvcm0iLCJmb3JtcyIsIm5ld1ZhbGlkIiwiY3JlYXRlRWxlbWVudCIsImd1dHRlciIsImluZGV4IiwiX2l0ZW0kcHJvcHMiLCJpdGVtUHJvcHMiLCJ2YWx1ZUZvcm1hdCIsIm5hbWUiLCJhbGxvd0NoYXJzIiwicGxhY2Vob2xkZXIiLCJjb25jYXQiLCJiaW5kIiwiZGF0YVR5cGUiLCJkaXNhYmxlZCIsInJ1bGVzIiwicmVxdWlyZWQiLCJpdGVtUmVmIiwiX2l0ZW0kcHJvcHMyIiwic3BhbiIsIkl0ZW0iLCJjb21wb25lbnROYW1lIiwicmVmIiwiX2l0ZW0kcHJvcHMzIiwiX2V4dGVuZHMiLCJvbkxpc3RDaGFuZ2UiLCJsaXN0Iiwic2hvd1VwbG9hZExpc3QiLCJzaG93RG93bmxvYWRJY29uIiwic2hvd1JlbW92ZUljb24iLCJjaGlsZHJlbiIsInJlbmRlciIsImZvb3RlciIsIm1vZGFsUHJvcHMiLCJ0aXRsZSIsIm9uT2siLCJvbkNhbmNlbCIsIm9rQnV0dG9uUHJvcHMiLCJjZW50ZXJlZCIsIndpZHRoIiwiZHJhd2VyUHJvcHMiLCJvbkNsb3NlIiwibmV3Rm9ybXNPYmoiLCJmb3JtR3JvdXBzIiwib3RoZXJHcnVwcyIsImdyb3VwTmFtZSIsImluZGV4T2YiLCJncm91cEZvcm1zIiwiZm9ybSIsInNlbGZCdXR0b25zIiwic2hvd01vZGVsIiwiZm9ybVR5cGUiLCJsYWJlbENvbCIsImZsZXgiLCJ3cmFwcGVyQ29sIiwib25WYWx1ZXNDaGFuZ2UiLCJjaGFuZ2VkVmFsdWVzIiwiYWxsVmFsdWVzIiwib25Gb3JtQ2hhbmdlIiwiY2hhbmdlVmFsaWQiLCJjbGFzc05hbWUiLCJPYmplY3QiLCJrZXlzIiwiZm9vdGVyQ2xhc3NOYW1lIiwiY2FuY2VsQnV0dG9uUHJvcHMiLCJvbkNsaWNrIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvcGFnZS9Gb3JtUGFnZS9pbmRleC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IFB1cmVDb21wb25lbnQsIFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xyXG5pbXBvcnQgRm9ybSBmcm9tIFwiLi4vLi4vYmFzZS9mb3JtXCI7XHJcbmltcG9ydCB7IGdldExlc3MsIGdldE5vZGUgfSBmcm9tIFwiLi4vLi4vdXRpbHNcIjtcclxuaW1wb3J0IG1lc3NhZ2UgZnJvbSBcIi4uLy4uL2Jhc2UvbWVzc2FnZVwiO1xyXG5pbXBvcnQgQ29sIGZyb20gXCIuLi8uLi9iYXNlL2dyaWQvQ29sXCI7XHJcbmltcG9ydCBSb3cgZnJvbSBcIi4uLy4uL2Jhc2UvZ3JpZC9Sb3dcIjtcclxuaW1wb3J0IHsgaXNFbXB0eU9iaiB9IGZyb20gXCJAYmotbnNjL2Z1bmN0aW9uc1wiO1xyXG5pbXBvcnQgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBcIi4vaW5kZXgubW9kdWxlLmxlc3NcIjtcclxuaW1wb3J0IGxvZGFzaCBmcm9tIFwibG9kYXNoXCI7XHJcbmltcG9ydCBCdXR0b24gZnJvbSBcIi4uLy4uL2Jhc2UvYnV0dG9uXCI7XHJcbmltcG9ydCBVcGxvYWQgZnJvbSAnLi4vLi4vYmFzZS91cGxvYWQnXHJcbmltcG9ydCBjbHMgZnJvbSAnY2xhc3NuYW1lcydcclxuaW1wb3J0IHsgSUZvcm1Qcm9wcyB9IGZyb20gXCJzcmMvY29tcG9uZW50cy9iYXNlL2Zvcm0vRm9ybVwiO1xyXG5leHBvcnQgaW50ZXJmYWNlIEZvcm1QYWdlUHJvcHMge1xyXG4gIGZvcm1zPzogQXJyYXk8YW55PjsgLy/mmK/lkKbmmL7npLrmk43kvZzliJdcclxuICBzdWJtaXRVcmw/OiBzdHJpbmc7XHJcbiAgb25TdWJtaXQ/OiAodmFsdWU/OiBhbnksIGxhYmVsPzogYW55KSA9PiB2b2lkO1xyXG4gIGZvb3RlckNsYXNzTmFtZT86IGFueTtcclxuICBva0J1dHRvblByb3BzPzogYW55O1xyXG4gIGNhbmNlbEJ1dHRvblByb3BzPzogYW55O1xyXG4gIGZvb3Rlcj86IFJlYWN0Tm9kZSB8IGJvb2xlYW47XHJcbiAgY2hpbGRyZW4/OiBSZWFjdC5SZWFjdE5vZGU7XHJcbiAgb25Gb3JtQ2hhbmdlPzogKHZhbHVlPzogYW55LCBhbGxWYWx1ZT86IGFueSkgPT4gdm9pZDtcclxuICBzdWJtaXRQYXJhbXM/OiBhbnk7IC8v5re75Yqg5Y+C5pWw77yM6buY6K6kbW90aG9kOnBvc3TvvIwg5Y+C5pWw6YCa6L+HZGF0YeS8oOmAklxyXG4gIGZ1bmNzPzogYW55O1xyXG4gIHByb3BzPzogSUZvcm1Qcm9wcztcclxuICByZXF1ZXN0T2JqZWN0Pzoge1xyXG4gICAgYWRkVXJsPzogc3RyaW5nLFxyXG4gICAgZWRpdG9yVXJsPzogc3RyaW5nLFxyXG4gICAgYWRkUGFyYW1zPzogYW55LFxyXG4gICAgZWRpdG9yUGFyYW1zPzogYW55XHJcbiAgfVxyXG4gIHJlcXVlc3RDb25maWc/OiBhbnlcclxuICBbcHJvcHNOYW1lOiBzdHJpbmddOiBhbnk7XHJcbn1cclxuY2xhc3MgRm9ybVBhZ2UgZXh0ZW5kcyBQdXJlQ29tcG9uZW50PEZvcm1QYWdlUHJvcHMsIGFueT4ge1xyXG4gIGZvcm1SZWYgPSBSZWFjdC5jcmVhdGVSZWY8YW55PigpO1xyXG4gIHN0YXRlID0ge1xyXG4gICAgbG9hZGluZzogZmFsc2UsXHJcbiAgICBsYWJlbDogXCJcIixcclxuICAgIGVkaXRvckZsYWc6IHRydWUsXHJcbiAgICB2YWx1ZToge30gYXMgYW55LFxyXG4gICAgZGljdE5hbWVzOiB7fSBhcyBhbnksXHJcbiAgICBmaWxlTGlzdDoge30gYXMgYW55XHJcbiAgfTtcclxuICB2YWxpZDogYW55ID0gW107XHJcbiAgZGF0ZVZhbHVlRm9ybWF0ID0ge30gYXMgYW55O1xyXG4gIGRhdGVGb3JtYXQgPSB7fSBhcyBhbnk7XHJcbiAgZmlsZUZvcm1hdCA9IFtdIGFzIGFueTtcclxuICByZWZMaXN0ID0ge30gYXMgYW55O1xyXG4gIHN1Ym1pdEZsYWcgPSB0cnVlXHJcbiAgLy/ooajljZXmmL7npLpcclxuICBzaG93KG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIGxldCBsYWJlbCA9IFwi5paw5aKeXCI7XHJcbiAgICBpZiAob3JnVmFsdWUgJiYgZWRpdG9yZmxhZyA9PSBcImVkaXRvclwiKSB7XHJcbiAgICAgIGxhYmVsID0gXCLnvJbovpFcIjtcclxuICAgIH0gZWxzZSBpZiAob3JnVmFsdWUgJiYgKGVkaXRvcmZsYWcgPT0gXCJkZXRhaWxcIiB8fCBlZGl0b3JmbGFnID09IFwic2VhcmNoXCIpKSB7XHJcbiAgICAgIGxhYmVsID0gXCLmn6XnnItcIjtcclxuICAgIH1cclxuICAgIGlmIChvcmdWYWx1ZSkge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICAgIHZhbHVlOiBvcmdWYWx1ZSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuY29udmVydFZhbHVlKG9yZ1ZhbHVlLCBsYWJlbCk7XHJcbiAgICAgICAgICAvL+WkhOeQhuaWh+S7tuaVsOaNrlxyXG4gICAgICAgICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNob3dGb3JtKHZhbHVlLCB7XHJcbiAgICAgICAgICAgIGFmdGVyUmVuZGVyOiAoKSA9PiB7XHJcbiAgICAgICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnNldFN0YXRlKFxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGxhYmVsOiBsYWJlbCxcclxuICAgICAgICB9LFxyXG4gICAgICAgICgpID0+IHtcclxuICAgICAgICAgIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5zaG93Rm9ybSh0aGlzLnByb3BzLmRlZmF1bHRWYWx1ZSwge1xyXG4gICAgICAgICAgICBhZnRlclJlbmRlcjogKCkgPT4ge1xyXG4gICAgICAgICAgICAgIGNhbGxCYWNrICYmIGNhbGxCYWNrKClcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICApO1xyXG4gICAgfVxyXG4gIH1cclxuICBoaWRlKGhpZGUgPSB0cnVlKSB7XHJcbiAgICBjb25zdCB7IG9uSGlkZUZvcm0gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBpZiAob25IaWRlRm9ybSkge1xyXG4gICAgICBvbkhpZGVGb3JtICYmIG9uSGlkZUZvcm0oKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlLCBmaWxlTGlzdDoge30gfSk7XHJcbiAgICBoaWRlICYmIHRoaXMuZm9ybVJlZi5jdXJyZW50Py5oaWRlRm9ybSgpO1xyXG4gIH1cclxuICBoaWRlRm9ybSgpIHtcclxuICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSwgZmlsZUxpc3Q6IHt9IH0pO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmhpZGVGb3JtKCk7XHJcbiAgfVxyXG4gIHNob3dGb3JtKG9yZ1ZhbHVlPzogYW55LCBlZGl0b3JmbGFnID0gXCJhZGRcIiwgY2FsbEJhY2s/OiBhbnkpIHtcclxuICAgIHRoaXMuc2hvdyhvcmdWYWx1ZSwgZWRpdG9yZmxhZywgY2FsbEJhY2spXHJcbiAgfVxyXG4gIHNldExvYWRpbmcobG9hZGluZzogYm9vbGVhbikge1xyXG4gICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGxvYWRpbmcgfSk7XHJcbiAgfVxyXG4gIGdldEZvcm1WYWx1ZSgpIHtcclxuICAgIGNvbnN0IHsgbGFiZWwsIHZhbHVlLCBkaWN0TmFtZXMsIGZpbGVMaXN0IH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgY29uc3QgZm9ybVZhbHVlID0gdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LmdldEZpZWxkc1ZhbHVlKCk7XHJcbiAgICBsZXQgZGF0YSA9IHsgLi4uZm9ybVZhbHVlLCAuLi5kaWN0TmFtZXMgfTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgbmV3RmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBpZiAoZmlsZUxpc3RbaXRlbV0ubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgIG5ld0ZpbGVMaXN0W2l0ZW1dID0gbnVsbDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaWYgKCFmb3JtVmFsdWVbaXRlbV0pIHtcclxuICAgICAgICAgICAgbmV3RmlsZUxpc3RbaXRlbV0gPSB0aGlzLmdldEZpbGVMaXN0KGZpbGVMaXN0W2l0ZW1dIHx8IFtdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIC4uLm5ld0ZpbGVMaXN0IH07XHJcbiAgICB9XHJcbiAgICBpZiAoIXRoaXMuc3VibWl0RmxhZykge1xyXG4gICAgICBtZXNzYWdlLmVycm9yKCfor7fnrYnlvoXmiYDmnInmlofku7bkuIrkvKDlrozmiJDvvIEnKVxyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlVmFsdWVGb3JtYXQpKSB7XHJcbiAgICAgIGZvciAobGV0IGtleSBpbiB0aGlzLmRhdGVWYWx1ZUZvcm1hdCkge1xyXG4gICAgICAgIGxldCBvbGRkYXRhID0gZGF0YVtrZXldO1xyXG4gICAgICAgIGlmIChvbGRkYXRhKSB7XHJcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShvbGRkYXRhKSkge1xyXG4gICAgICAgICAgICBkYXRhW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSkuZm9ybWF0KHRoaXMuZGF0ZVZhbHVlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0pLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRhdGFba2V5XSA9IGRheWpzKG9sZGRhdGEpLmZvcm1hdCh0aGlzLmRhdGVWYWx1ZUZvcm1hdFtrZXldKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChsYWJlbCA9PSBcIue8lui+kVwiKSB7XHJcbiAgICAgIGRhdGEgPSB7IC4uLmRhdGEsIGlkOiB2YWx1ZT8uaWQgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBkYXRhO1xyXG4gIH1cclxuICBjb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGxldCB2YWx1ZXMgPSBsb2Rhc2guY2xvbmVEZWVwKHZhbHVlKTtcclxuICAgIGlmICh0aGlzLmZpbGVGb3JtYXQubGVuZ3RoID4gMCkge1xyXG4gICAgICBsZXQgZmlsZUxpc3QgPSB7fSBhcyBhbnk7XHJcbiAgICAgIHRoaXMuZmlsZUZvcm1hdC5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICBsZXQgb2xkZGF0YSA9IHZhbHVlc1tpdGVtXTtcclxuICAgICAgICBpZiAob2xkZGF0YSAmJiBBcnJheS5pc0FycmF5KG9sZGRhdGEpKSB7XHJcbiAgICAgICAgICBmaWxlTGlzdFtpdGVtXSA9IHRoaXMuZ2V0RmlsZUxpc3Qob2xkZGF0YSB8fCBbXSwgdHlwZSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZpbGVMaXN0W2l0ZW1dID0gW11cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMuc2V0U3RhdGUoeyBmaWxlTGlzdDogZmlsZUxpc3QgfSlcclxuICAgIH1cclxuICAgIC8v5aSE55CG5pel5pyf5qC85byP5pWw5o2uXHJcbiAgICBpZiAoIWlzRW1wdHlPYmoodGhpcy5kYXRlRm9ybWF0KSkge1xyXG4gICAgICBmb3IgKGxldCBrZXkgaW4gdGhpcy5kYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgbGV0IG9sZGRhdGEgPSB2YWx1ZXNba2V5XTtcclxuICAgICAgICBpZiAob2xkZGF0YSkge1xyXG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkob2xkZGF0YSkpIHtcclxuICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBbXHJcbiAgICAgICAgICAgICAgZGF5anMob2xkZGF0YVswXSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pLFxyXG4gICAgICAgICAgICAgIGRheWpzKG9sZGRhdGFbMV0sIHRoaXMuZGF0ZUZvcm1hdFtrZXldKSxcclxuICAgICAgICAgICAgXTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHZhbHVlc1trZXldID0gZGF5anMob2xkZGF0YSwgdGhpcy5kYXRlRm9ybWF0W2tleV0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHZhbHVlc1xyXG4gIH1cclxuICBzZXRGb3JtVmFsdWUodmFsdWUsIHR5cGUpIHtcclxuICAgIGNvbnN0IG5ld1ZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUodmFsdWUsIHR5cGUpO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/LnNldEZpZWxkc1ZhbHVlKG5ld1ZhbHVlKTtcclxuICB9XHJcbiAgZG9TdWJtaXQoZm9ybWRhdGEsIGxhYmVsKSB7XHJcbiAgICBjb25zdCB7IHN1Ym1pdFVybCwgc3VibWl0UGFyYW1zID0ge30sIGNhbGxCYWNrLCByZXF1ZXN0T2JqZWN0ID0ge30sIHJlcXVlc3RDb25maWcgPSB7fSB9ID0gdGhpcy5wcm9wcztcclxuICAgIGNvbnN0IHsgYWRkVXJsLCBlZGl0b3JVcmwsIGFkZFBhcmFtcywgZWRpdG9yUGFyYW1zIH0gPSByZXF1ZXN0T2JqZWN0XHJcbiAgICBsZXQgdXJsID0gJyc7XHJcbiAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcclxuICAgIGlmIChsYWJlbCA9PSAn5paw5aKeJykge1xyXG4gICAgICB1cmwgPSBhZGRVcmwgPyBhZGRVcmwgOiBzdWJtaXRVcmw7XHJcbiAgICAgIGlmIChhZGRQYXJhbXMgJiYgdHlwZW9mIGFkZFBhcmFtcyA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fVxyXG4gICAgICAgIGxldCBmdW5jID0gbmV3IEZ1bmN0aW9uKCdVdGlscycsIGFkZFBhcmFtcyk7XHJcbiAgICAgICAgbGV0IGNvbnZlclBhcmFtcyA9IGZ1bmMoVXRpbHMpXHJcbiAgICAgICAgcGFyYW1zID0gY29udmVyUGFyYW1zXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcGFyYW1zID0gYWRkUGFyYW1zID8gYWRkUGFyYW1zIDogc3VibWl0UGFyYW1zO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2UgaWYgKGxhYmVsID09ICfnvJbovpEnKSB7XHJcbiAgICAgIHVybCA9IGVkaXRvclVybCA/IGVkaXRvclVybCA6IHN1Ym1pdFVybDtcclxuICAgICAgaWYgKGVkaXRvclBhcmFtcyAmJiB0eXBlb2YgZWRpdG9yUGFyYW1zID09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgVXRpbHMgPSB0aGlzLnByb3BzLlV0aWxzIHx8IHt9XHJcbiAgICAgICAgbGV0IGZ1bmMgPSBuZXcgRnVuY3Rpb24oJ1V0aWxzJywgZWRpdG9yUGFyYW1zKTtcclxuICAgICAgICBsZXQgY29udmVyUGFyYW1zID0gZnVuYyhVdGlscylcclxuICAgICAgICBwYXJhbXMgPSBjb252ZXJQYXJhbXNcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwYXJhbXMgPSBlZGl0b3JQYXJhbXMgPyBlZGl0b3JQYXJhbXMgOiBzdWJtaXRQYXJhbXM7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICghdXJsKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLphY3nva5VcmzkuI3og73kuLrnqbrvvIFcIik7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuICAgIGNvbnN0IHsgZGF0YSA9IHt9LCAuLi5vdGhlclBhcmFtcyB9ID0gcGFyYW1zO1xyXG4gICAgdGhpcy5mb3JtUmVmLmN1cnJlbnQ/Lm9uU3VibWl0KFxyXG4gICAgICB1cmwsXHJcbiAgICAgIHtcclxuICAgICAgICBkYXRhOiB7IC4uLmZvcm1kYXRhLCAuLi5kYXRhIH0sXHJcbiAgICAgICAgbm9VbmRlZmluZWQ6IGxhYmVsID09IFwi57yW6L6RXCIsXHJcbiAgICAgICAgLi4ucmVxdWVzdENvbmZpZyxcclxuICAgICAgICAuLi5vdGhlclBhcmFtcyxcclxuICAgICAgfSxcclxuICAgICAgKHJlczogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc3QgeyBjb2RlIH0gPSByZXM7XHJcbiAgICAgICAgdGhpcy5zZXRTdGF0ZSh7IGxvYWRpbmc6IGZhbHNlIH0pO1xyXG4gICAgICAgIGlmIChjb2RlID09PSAyMDApIHtcclxuICAgICAgICAgIG1lc3NhZ2Uuc3VjY2VzcyhsYWJlbCArIFwi5oiQ5YqfXCIpO1xyXG4gICAgICAgICAgdGhpcy5oaWRlKHRydWUpO1xyXG4gICAgICAgICAgY2FsbEJhY2sgJiYgY2FsbEJhY2soKTtcclxuICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5oaWRlKGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgKTtcclxuICB9XHJcbiAgZ2V0RmlsZUxpc3QoZGF0YSwgbGFiZWwgPSAn5paw5aKeJykge1xyXG4gICAgdGhpcy5zdWJtaXRGbGFnID0gdHJ1ZVxyXG4gICAgbGV0IGZpbGVMaXN0ID0gW10gYXMgYW55O1xyXG4gICAgaWYgKGRhdGEgJiYgZGF0YS5sZW5ndGggPiAwKSB7XHJcbiAgICAgIGRhdGEubWFwKChpdGVtKSA9PiB7XHJcbiAgICAgICAgbGV0IG9iaiA9IHtcclxuICAgICAgICAgIGZpbGVJZDogaXRlbS5maWxlSWQsXHJcbiAgICAgICAgICBmaWxlTmFtZTogaXRlbS5maWxlTmFtZSxcclxuICAgICAgICB9IGFzIGFueTtcclxuICAgICAgICBpZiAobGFiZWwgPT0gJ+afpeeciycpIHtcclxuICAgICAgICAgIG9iai5zdGF0dXMgPSAnZG9uZSc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChsYWJlbCAhPT0gJ+afpeeciycgJiYgaXRlbS5zdGF0dXMgIT09ICdkb25lJykge1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXRGbGFnID0gZmFsc2U7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbGVMaXN0LnB1c2gob2JqKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gZmlsZUxpc3Q7XHJcbiAgfTtcclxuXHJcbiAgb25TdWJtaXQoKSB7XHJcbiAgICBjb25zdCB7IG9uU3VibWl0IH0gPSB0aGlzLnByb3BzO1xyXG4gICAgY29uc3QgeyBsYWJlbCwgdmFsdWUsIGRpY3ROYW1lcywgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICBjb25zdCBmb3JtVmFsdWUgPSB0aGlzLmZvcm1SZWYuY3VycmVudD8uZ2V0RmllbGRzVmFsdWUoKTtcclxuICAgIGxldCB2YWxpZCA9IHRoaXMudmFsaWQ7XHJcbiAgICB0aGlzLmZvcm1SZWYuY3VycmVudFxyXG4gICAgICA/LnZhbGlkYXRlRmllbGRzKHZhbGlkKVxyXG4gICAgICAudGhlbigoKSA9PiB7XHJcbiAgICAgICAgbGV0IGRhdGEgPSB0aGlzLmdldEZvcm1WYWx1ZSgpXHJcbiAgICAgICAgaWYgKCF0aGlzLnN1Ym1pdEZsYWcpIHtcclxuICAgICAgICAgIG1lc3NhZ2UuZXJyb3IoJ+ivt+etieW+heaJgOacieaWh+S7tuS4iuS8oOWujOaIkO+8gScpXHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiB0cnVlIH0pO1xyXG4gICAgICAgIGlmIChvblN1Ym1pdCkge1xyXG4gICAgICAgICAgb25TdWJtaXQgJiYgb25TdWJtaXQoZGF0YSwgbGFiZWwpO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmRvU3VibWl0KGRhdGEsIGxhYmVsKTtcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKChlcnJvckluZm86IGFueSkgPT4geyB9KTtcclxuICB9XHJcbiAgdmFsdWVDaGFuZ2UoeyB0eXBlLCBkaWN0TmFtZSB9LCBwcm9wcywgdmFsdWUsIHZhbHVlT3B0aW9uLCBkYXRhKSB7XHJcbiAgICBpZiAodmFsdWVPcHRpb24pIHtcclxuICAgICAgaWYgKGRpY3ROYW1lKSB7XHJcbiAgICAgICAgY29uc3QgeyBkaWN0TmFtZXMgfSA9IHRoaXMuc3RhdGU7XHJcbiAgICAgICAgY29uc3QgbmV3TmFtZXMgPSB7IC4uLmRpY3ROYW1lcyB9IGFzIGFueTtcclxuICAgICAgICBuZXdOYW1lc1tkaWN0TmFtZV0gPSB2YWx1ZU9wdGlvbi5sYWJlbDtcclxuICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgIGRpY3ROYW1lczogbmV3TmFtZXMsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwcm9wcy5vbkNoYW5nZSkge1xyXG4gICAgICBpZiAodHlwZW9mIHByb3BzLm9uQ2hhbmdlID09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICBwcm9wcy5vbkNoYW5nZSh2YWx1ZSwgdmFsdWVPcHRpb24sIGRhdGEpO1xyXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcy5vbkNoYW5nZSA9PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IGV2ZW50T3B0aW9uID0geyB2YWx1ZSwgZGF0YSwgZm9ybVJlZjogdGhpcy5mb3JtUmVmLCBmdW5jczogdGhpcy5wcm9wcy5mdW5jcyB8fCB7fSwgcmVmczogdGhpcy5yZWZMaXN0IH0gYXMgYW55O1xyXG4gICAgICAgIGNvbnN0IFV0aWxzID0gdGhpcy5wcm9wcy5VdGlscyB8fCB7fVxyXG4gICAgICAgIGlmICh0eXBlID09ICdTZWxlY3QnKSB7XHJcbiAgICAgICAgICBldmVudE9wdGlvbi52YWx1ZU9wdGlvbiA9IHZhbHVlT3B0aW9uO1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24uZGF0YSA9IGRhdGFcclxuICAgICAgICB9IGVsc2UgaWYgKHR5cGUgPT0gJ0RhdGVQaWNrZXInIHx8IHR5cGUgPT0gJ1JhbmdlUGlja2VyJykge1xyXG4gICAgICAgICAgZXZlbnRPcHRpb24udmFsdWVTdHIgPSB2YWx1ZU9wdGlvbjtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3Qgc2VsZkZ1bmMgPSBuZXcgRnVuY3Rpb24oJ2V2ZW50T3B0aW9uJywgJ1V0aWxzJywgcHJvcHMub25DaGFuZ2UpO1xyXG4gICAgICAgIHNlbGZGdW5jKGV2ZW50T3B0aW9uLCBVdGlscyk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKSB7XHJcbiAgICBjb25zdCBuZXdWYWxpZDogYW55W10gPSBbXTtcclxuICAgIHJldHVybiA8Um93IGd1dHRlcj17MjR9PlxyXG4gICAgICB7Zm9ybXMubWFwKChpdGVtOiBhbnksIGluZGV4OiBudW1iZXIpID0+IHtcclxuICAgICAgICBjb25zdCBpdGVtUHJvcHMgPSBpdGVtLnByb3BzIHx8IHt9O1xyXG4gICAgICAgIGlmIChpdGVtUHJvcHMuZm9ybWF0IHx8IGl0ZW1Qcm9wcy52YWx1ZUZvcm1hdCkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlVmFsdWVGb3JtYXRbaXRlbS5uYW1lXSA9XHJcbiAgICAgICAgICAgIGl0ZW1Qcm9wcy5mb3JtYXQgfHwgaXRlbVByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaXRlbVByb3BzLmZvcm1hdCkge1xyXG4gICAgICAgICAgdGhpcy5kYXRlRm9ybWF0W2l0ZW0ubmFtZV0gPSBpdGVtUHJvcHMuZm9ybWF0O1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgYWxsb3dDaGFycyA9IGl0ZW0ucHJvcHM/LmFsbG93Q2hhcnMgfHwgZmFsc2U7XHJcbiAgICAgICAgbGV0IHByb3BzID0ge1xyXG4gICAgICAgICAgcGxhY2Vob2xkZXI6IGDor7fovpPlhaUke2l0ZW0ubGFiZWx9YCxcclxuICAgICAgICAgIC4uLml0ZW0ucHJvcHMsXHJcbiAgICAgICAgICBvbkNoYW5nZTogdGhpcy52YWx1ZUNoYW5nZS5iaW5kKFxyXG4gICAgICAgICAgICB0aGlzLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogaXRlbS50eXBlLFxyXG4gICAgICAgICAgICAgIGRpY3ROYW1lOiBpdGVtLmRpY3ROYW1lLFxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7IC4uLml0ZW0ucHJvcHMgfVxyXG4gICAgICAgICAgKSxcclxuICAgICAgICB9O1xyXG4gICAgICAgIGlmICghaXRlbS50eXBlIHx8IGl0ZW0udHlwZSA9PSBcIklucHV0XCIpIHtcclxuICAgICAgICAgIHByb3BzLmFsbG93Q2hhcnMgPSB0cnVlOyAgLy9mb3JtLml0ZW0g5L2/55SoaW5wdXTnu4Tku7ZhbGxvd0NoYXJz5b+F6aG76buY6K6kdHJ1ZSzkuI3nhLbovpPlhaXnibnmrorlrZfnrKbmi7/liLDnmoTlgLzkuI3lr7lcclxuICAgICAgICB9XHJcbiAgICAgICAgZGVsZXRlIHByb3BzLnZhbHVlRm9ybWF0O1xyXG4gICAgICAgIGRlbGV0ZSBwcm9wcy5mb3JtYXQ7XHJcbiAgICAgICAgZGVsZXRlIHByb3BzLmRhdGFUeXBlO1xyXG4gICAgICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgICAgICBwcm9wcy5kaXNhYmxlZCA9IHRydWU7XHJcbiAgICAgICAgICBwcm9wcy5wbGFjZWhvbGRlciA9ICcnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICgoaXRlbS5ydWxlcyAmJiBpdGVtLnJ1bGVzLmxlbmd0aCA+IDApIHx8IGl0ZW0ucmVxdWlyZWQgPT09IHRydWUpIHtcclxuICAgICAgICAgIG5ld1ZhbGlkLnB1c2goaXRlbS5uYW1lKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGluZGV4ICsgMSA9PT0gZm9ybXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICB0aGlzLnZhbGlkID0gbmV3VmFsaWQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IGl0ZW1SZWY6IGFueSA9IFJlYWN0LmNyZWF0ZVJlZjxhbnk+KClcclxuICAgICAgICB0aGlzLnJlZkxpc3RbaXRlbS5uYW1lXSA9IGl0ZW1SZWZcclxuICAgICAgICBpZiAoaXRlbS50eXBlICE9PSAnVXBsb2FkJykge1xyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPENvbCBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgY29tcG9uZW50TmFtZT17aXRlbS50eXBlID8gaXRlbS50eXBlIDogXCJJbnB1dFwifVxyXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2l0ZW0ucmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICB0eXBlPXtpdGVtLnByb3BzPy50eXBlfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIHtnZXROb2RlKGl0ZW0udHlwZSwge1xyXG4gICAgICAgICAgICAgICAgICByZWY6IGl0ZW1SZWYsXHJcbiAgICAgICAgICAgICAgICAgIC4uLnByb3BzLFxyXG4gICAgICAgICAgICAgICAgfSl9XHJcbiAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5maWxlRm9ybWF0LnB1c2goaXRlbS5uYW1lKVxyXG4gICAgICAgICAgcmV0dXJuIChcclxuICAgICAgICAgICAgPENvbCBzcGFuPXtpdGVtLnNwYW4gfHwgMTJ9IGtleT17aW5kZXh9PlxyXG4gICAgICAgICAgICAgIDxGb3JtLkl0ZW1cclxuICAgICAgICAgICAgICAgIGxhYmVsPXtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgbmFtZT17aXRlbS5uYW1lfVxyXG4gICAgICAgICAgICAgICAgcnVsZXM9e2l0ZW0ucnVsZXN9XHJcbiAgICAgICAgICAgICAgICBhbGxvd0NoYXJzPXthbGxvd0NoYXJzfVxyXG4gICAgICAgICAgICAgICAgdHlwZT17aXRlbS5wcm9wcz8udHlwZX1cclxuICAgICAgICAgICAgICAgIHJlcXVpcmVkPXtpdGVtLnJlcXVpcmVkfVxyXG4gICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgIDxVcGxvYWRcclxuICAgICAgICAgICAgICAgICAgZmlsZUxpc3Q9e3RoaXMuc3RhdGUuZmlsZUxpc3RbaXRlbS5uYW1lXSB8fCBbXX1cclxuICAgICAgICAgICAgICAgICAgb25MaXN0Q2hhbmdlPXsobGlzdCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHsgZmlsZUxpc3QgfSA9IHRoaXMuc3RhdGVcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldFN0YXRlKHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGVMaXN0OiB7IC4uLmZpbGVMaXN0LCBbaXRlbS5uYW1lXTogbGlzdCB9XHJcbiAgICAgICAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgc2hvd1VwbG9hZExpc3Q9e3sgc2hvd0Rvd25sb2FkSWNvbjogdHJ1ZSwgc2hvd1JlbW92ZUljb246IGxhYmVsICE9PSAn5p+l55yLJyB9fVxyXG4gICAgICAgICAgICAgICAgICByZWY9e2l0ZW1SZWZ9XHJcbiAgICAgICAgICAgICAgICAgIHsuLi5wcm9wc30+XHJcbiAgICAgICAgICAgICAgICAgIHtpdGVtLnByb3BzLmNoaWxkcmVuID8gaXRlbS5wcm9wcy5jaGlsZHJlbiA6IChsYWJlbCAhPT0gJ+afpeeciycgJiYgPEJ1dHRvbj7kuIrkvKDmlofku7Y8L0J1dHRvbj4pfVxyXG4gICAgICAgICAgICAgICAgPC9VcGxvYWQ+XHJcbiAgICAgICAgICAgICAgPC9Gb3JtLkl0ZW0+XHJcbiAgICAgICAgICAgIDwvQ29sPlxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pfVxyXG4gICAgPC9Sb3c+XHJcbiAgfVxyXG4gIHJlbmRlcigpIHtcclxuICAgIGNvbnN0IHsgZm9ybXMgPSBbXSwgcHJvcHMgPSB7fSwgZm9vdGVyID0gdHJ1ZSwgY2hpbGRyZW4gfSA9IHRoaXMucHJvcHM7XHJcbiAgICBjb25zdCB7IGxvYWRpbmcsIGxhYmVsIH0gPSB0aGlzLnN0YXRlO1xyXG4gICAgbGV0IG1vZGFsUHJvcHMgPSB7XHJcbiAgICAgIHRpdGxlOiBsYWJlbCxcclxuICAgICAgb25PazogdGhpcy5vblN1Ym1pdC5iaW5kKHRoaXMpLFxyXG4gICAgICBvbkNhbmNlbDogdGhpcy5oaWRlLmJpbmQodGhpcyksXHJcbiAgICAgIG9rQnV0dG9uUHJvcHM6IHsgbG9hZGluZzogbG9hZGluZyB9LFxyXG4gICAgICBjZW50ZXJlZDogdHJ1ZSxcclxuICAgICAgd2lkdGg6IFwiNTB2d1wiLFxyXG4gICAgfSBhcyBhbnk7XHJcblxyXG5cclxuICAgIGxldCBkcmF3ZXJQcm9wcyA9IHtcclxuICAgICAgdGl0bGU6IGxhYmVsLFxyXG4gICAgICBvbk9rOiB0aGlzLm9uU3VibWl0LmJpbmQodGhpcyksXHJcbiAgICAgIG9uQ2xvc2U6IHRoaXMuaGlkZS5iaW5kKHRoaXMpLFxyXG4gICAgICB3aWR0aDogXCI1MHZ3XCIsXHJcbiAgICB9IGFzIGFueTtcclxuICAgIGlmIChsYWJlbCA9PSBcIuafpeeci1wiKSB7XHJcbiAgICAgIG1vZGFsUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgICAgZHJhd2VyUHJvcHMuZm9vdGVyID0gbnVsbDtcclxuICAgIH1cclxuICAgIHRoaXMuZGF0ZVZhbHVlRm9ybWF0ID0ge307XHJcbiAgICB0aGlzLmRhdGVGb3JtYXQgPSB7fTtcclxuICAgIHRoaXMuZmlsZUZvcm1hdCA9IFtdXHJcbiAgICBsZXQgbmV3Rm9ybXNPYmogPSB7fSBhcyBhbnk7XHJcbiAgICBsZXQgZm9ybUdyb3VwcyA9IFtdIGFzIGFueVxyXG4gICAgbGV0IG90aGVyR3J1cHMgPSBbXSBhcyBhbnlcclxuICAgIC8v5aSE55CG6KGo5Y2V5pWw5o2uXHJcbiAgICBmb3Jtcy5tYXAoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICBpZiAoaXRlbS5ncm91cE5hbWUgJiYgZm9ybUdyb3Vwcy5pbmRleE9mKGl0ZW0uZ3JvdXBOYW1lKSA8IDApIHtcclxuICAgICAgICBmb3JtR3JvdXBzLnB1c2goaXRlbS5ncm91cE5hbWUpO1xyXG4gICAgICB9IGVsc2UgaWYgKCFpdGVtLmdyb3VwTmFtZSkge1xyXG4gICAgICAgIG90aGVyR3J1cHMucHVzaChpdGVtKVxyXG4gICAgICB9XHJcbiAgICB9KVxyXG4gICAgaWYgKGZvcm1Hcm91cHMubGVuZ3RoID4gMCkge1xyXG4gICAgICBmb3JtR3JvdXBzLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IGdyb3VwRm9ybXMgPSBbXSBhcyBhbnlcclxuICAgICAgICBmb3Jtcy5tYXAoKGZvcm06IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGZvcm0uZ3JvdXBOYW1lID09IGl0ZW0pIHtcclxuICAgICAgICAgICAgZ3JvdXBGb3Jtcy5wdXNoKGZvcm0pXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgICBuZXdGb3Jtc09ialtpdGVtXSA9IGdyb3VwRm9ybXNcclxuICAgICAgfSlcclxuICAgICAgbmV3Rm9ybXNPYmpbJ25vR3JvdXBOYW1lJ10gPSBvdGhlckdydXBzXHJcbiAgICB9XHJcbiAgICAvL+iHquWumuS5ieaMiemSrlxyXG4gICAgbGV0IHNlbGZCdXR0b25zID0gW10gYXMgYW55O1xyXG4gICAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XHJcbiAgICAgIGNoaWxkcmVuLm1hcCgoaXRlbTogYW55KSA9PiB7XHJcbiAgICAgICAgdHlwZW9mIGl0ZW0gPT0gJ29iamVjdCcgJiYgc2VsZkJ1dHRvbnMucHVzaChpdGVtKTtcclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2UgaWYgKGNoaWxkcmVuKSB7XHJcbiAgICAgIHR5cGVvZiBjaGlsZHJlbiA9PSAnb2JqZWN0JyAmJiBzZWxmQnV0dG9ucy5wdXNoKGNoaWxkcmVuKTtcclxuICAgIH1cclxuICAgIHJldHVybiAoXHJcbiAgICAgIDxGb3JtXHJcbiAgICAgICAgcmVmPXt0aGlzLmZvcm1SZWZ9XHJcbiAgICAgICAgc2hvd01vZGVsPXt0aGlzLnByb3BzLmZvcm1UeXBlfVxyXG4gICAgICAgIG1vZGFsUHJvcHM9e3sgLi4ubW9kYWxQcm9wcyB9fVxyXG4gICAgICAgIGRyYXdlclByb3BzPXt7IC4uLmRyYXdlclByb3BzIH19XHJcbiAgICAgICAgbGFiZWxDb2w9e3sgZmxleDogXCIxMDBweFwiIH19XHJcbiAgICAgICAgd3JhcHBlckNvbD17eyBmbGV4OiBcIjE1dndcIiB9fVxyXG4gICAgICAgIG9uVmFsdWVzQ2hhbmdlPXsoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCB7IG9uRm9ybUNoYW5nZSB9ID0gdGhpcy5wcm9wcztcclxuICAgICAgICAgIG9uRm9ybUNoYW5nZSAmJiBvbkZvcm1DaGFuZ2UoY2hhbmdlZFZhbHVlcywgYWxsVmFsdWVzKTtcclxuICAgICAgICB9fVxyXG4gICAgICAgIGNoYW5nZVZhbGlkPXt0aGlzLnByb3BzLmNoYW5nZVZhbGlkfVxyXG4gICAgICAgIHsuLi5wcm9wc31cclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tcGFnZVwiPlxyXG4gICAgICAgICAge2Zvcm1Hcm91cHMubGVuZ3RoID09IDAgPyB0aGlzLnJlbmRlckZvcm0oZm9ybXMsIGxhYmVsKSA6IE9iamVjdC5rZXlzKG5ld0Zvcm1zT2JqKS5tYXAoKGtleSkgPT4ge1xyXG4gICAgICAgICAgICByZXR1cm4gKFxyXG4gICAgICAgICAgICAgIDxkaXYga2V5PXtrZXl9IGNsYXNzTmFtZT1cIm5zYy1mb3JtLXBhbmVcIj5cclxuICAgICAgICAgICAgICAgIHtrZXkgIT0gXCJub0dyb3VwTmFtZVwiICYmIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tdGl0bGVcIj57a2V5fTwvZGl2Pn1cclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibnNjLWZvcm0tY29udGVudFwiPnt0aGlzLnJlbmRlckZvcm0obmV3Rm9ybXNPYmpba2V5XSwgbGFiZWwpfTwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICApXHJcbiAgICAgICAgICB9KX1cclxuICAgICAgICAgIHshdGhpcy5wcm9wcy5mb3JtVHlwZSAmJiBmb290ZXIgPT0gdHJ1ZSAmJlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xzKCduc2MtZm9ybS1wYWdlLWZvb3RlcicsIHRoaXMucHJvcHMuZm9vdGVyQ2xhc3NOYW1lKX0+XHJcbiAgICAgICAgICAgICAgPEJ1dHRvbiB7Li4udGhpcy5wcm9wcy5jYW5jZWxCdXR0b25Qcm9wc30gb25DbGljaz17KCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMucHJvcHMub25DYW5jZWwpIHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5wcm9wcy5vbkNhbmNlbCgpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0U3RhdGUoeyBsb2FkaW5nOiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICB9fT7lj5bmtog8L0J1dHRvbj5cclxuICAgICAgICAgICAgICA8QnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgey4uLnRoaXMucHJvcHMub2tCdXR0b25Qcm9wc31cclxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcclxuICAgICAgICAgICAgICAgICAgdGhpcy5vblN1Ym1pdCgpXHJcbiAgICAgICAgICAgICAgICB9fVxyXG4gICAgICAgICAgICAgICAgbG9hZGluZz17dGhpcy5zdGF0ZS5sb2FkaW5nfVxyXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnbnNjLWZvcm0tcGFnZS1mb290ZXItYnRuJ31cclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICDkv53lrZhcclxuICAgICAgICAgICAgICA8L0J1dHRvbj5cclxuICAgICAgICAgICAgICB7c2VsZkJ1dHRvbnMubWFwKChpdGVtOiBhbnksIGluZGV4OiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgIHJldHVybiA8ZGl2IGNsYXNzTmFtZT17J25zYy1mb3JtLXBhZ2UtZm9vdGVyLWJ0bid9IGtleT17aW5kZXh9PntpdGVtfTwvZGl2PlxyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHshdGhpcy5wcm9wcy5mb3JtVHlwZSAmJiBmb290ZXIgIT09IHRydWUgJiYgdGhpcy5wcm9wcy5mb290ZXJ9XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvRm9ybT5cclxuICAgICk7XHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBGb3JtUGFnZTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSxPQUFPQSxLQUFLLElBQUlDLGFBQWEsUUFBbUIsT0FBTztBQUN2RCxPQUFPQyxJQUFJLE1BQU0saUJBQWlCO0FBQ2xDLFNBQWtCQyxPQUFPLFFBQVEsYUFBYTtBQUM5QyxPQUFPQyxPQUFPLE1BQU0sb0JBQW9CO0FBQ3hDLE9BQU9DLEdBQUcsTUFBTSxxQkFBcUI7QUFDckMsT0FBT0MsR0FBRyxNQUFNLHFCQUFxQjtBQUNyQyxTQUFTQyxVQUFVLFFBQVEsbUJBQW1CO0FBQzlDLE9BQU9DLEtBQUssTUFBTSxPQUFPO0FBQ3pCLE9BQU8scUJBQXFCO0FBQzVCLE9BQU9DLE1BQU0sTUFBTSxRQUFRO0FBQzNCLE9BQU9DLE1BQU0sTUFBTSxtQkFBbUI7QUFDdEMsT0FBT0MsTUFBTSxNQUFNLG1C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
|