fantasy-ngzorro 1.3.33 → 1.3.34
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/bundles/fantasy-ngzorro.umd.js +275 -99
- package/bundles/fantasy-ngzorro.umd.js.map +1 -1
- package/bundles/fantasy-ngzorro.umd.min.js +2 -2
- package/bundles/fantasy-ngzorro.umd.min.js.map +1 -1
- package/esm2015/utils.js +192 -101
- package/esm5/utils.js +278 -101
- package/fantasy-ngzorro.metadata.json +1 -1
- package/fesm2015/fantasy-ngzorro.js +190 -99
- package/fesm2015/fantasy-ngzorro.js.map +1 -1
- package/fesm5/fantasy-ngzorro.js +275 -99
- package/fesm5/fantasy-ngzorro.js.map +1 -1
- package/package.json +1 -1
- package/utils.d.ts +29 -5
package/esm2015/utils.js
CHANGED
|
@@ -2,76 +2,99 @@
|
|
|
2
2
|
* @fileoverview added by tsickle
|
|
3
3
|
* @suppress {checkTypes,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc
|
|
4
4
|
*/
|
|
5
|
+
import { round } from 'lodash';
|
|
5
6
|
// 工具类
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
for (let i = 0; i < length; i++) {
|
|
21
|
-
if (returnData[i].name === name) {
|
|
22
|
-
returnData[i].selectOption.selectList = options;
|
|
7
|
+
/** @type {?} */
|
|
8
|
+
export const Utils = {
|
|
9
|
+
/**
|
|
10
|
+
* 填充select控件选项
|
|
11
|
+
* @param {?} formList 入参数组 Array<any>
|
|
12
|
+
* @param {?} name 需要填充options的属性名称
|
|
13
|
+
* @param {?} options 选项列表
|
|
14
|
+
* @return {?}
|
|
15
|
+
*/
|
|
16
|
+
fillSelectOption(formList, name, options) {
|
|
17
|
+
/** @type {?} */
|
|
18
|
+
const returnData = formList;
|
|
19
|
+
if (!returnData || !returnData.length) {
|
|
20
|
+
return returnData;
|
|
23
21
|
}
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
*/
|
|
31
|
-
function (list, obj) {
|
|
32
|
-
/** @type {?} */
|
|
33
|
-
let returnData = [];
|
|
34
|
-
if (!list || !list.length) {
|
|
35
|
-
return returnData;
|
|
36
|
-
}
|
|
37
|
-
/** @type {?} */
|
|
38
|
-
const length = list.length;
|
|
39
|
-
for (let i = 0; i < length; i++) {
|
|
40
|
-
if (obj[list[i].name]) {
|
|
41
|
-
list[i].value = obj[list[i].name];
|
|
22
|
+
/** @type {?} */
|
|
23
|
+
const length = formList.length;
|
|
24
|
+
for (let i = 0; i < length; i++) {
|
|
25
|
+
if (returnData[i].name === name) {
|
|
26
|
+
returnData[i].selectOption.selectList = options;
|
|
27
|
+
}
|
|
42
28
|
}
|
|
43
|
-
}
|
|
44
|
-
return list;
|
|
45
|
-
}, ɵ2 = /**
|
|
46
|
-
* @param {?} list
|
|
47
|
-
* @param {?=} option
|
|
48
|
-
* @return {?}
|
|
49
|
-
*/
|
|
50
|
-
function (list, option) {
|
|
51
|
-
/** @type {?} */
|
|
52
|
-
let returnData = [];
|
|
53
|
-
if (!list || !list.length) {
|
|
54
29
|
return returnData;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
30
|
+
},
|
|
31
|
+
/**
|
|
32
|
+
* 填充FormItem数组:针对入参list的每一个FormItem,判断obj中是否有对应的name字段,如果有,则填充value。
|
|
33
|
+
* @param {?} list 入参数组 Array<FormItem>
|
|
34
|
+
* @param {?} obj 需要填充到list的属性
|
|
35
|
+
* @return {?}
|
|
36
|
+
*/
|
|
37
|
+
fillArrayFormItem(list, obj) {
|
|
38
|
+
/** @type {?} */
|
|
39
|
+
const returnData = [];
|
|
40
|
+
if (!list || !list.length) {
|
|
41
|
+
return returnData;
|
|
42
|
+
}
|
|
43
|
+
/** @type {?} */
|
|
44
|
+
const length = list.length;
|
|
45
|
+
for (let i = 0; i < length; i++) {
|
|
46
|
+
if (obj[list[i].name]) {
|
|
47
|
+
list[i].value = obj[list[i].name];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return list;
|
|
51
|
+
},
|
|
52
|
+
/**
|
|
53
|
+
* 数组转换成选择器的选项数组
|
|
54
|
+
* @param {?} list 入参数组 字符串数组或对象数组
|
|
55
|
+
* @param {?=} option 转换选项
|
|
56
|
+
* 注:list为字符串数组,option不需要传,按照标准的label、value转换
|
|
57
|
+
* @return {?}
|
|
58
|
+
*/
|
|
59
|
+
arrayToSelectOptionList(list, option) {
|
|
60
|
+
/** @type {?} */
|
|
61
|
+
const returnData = [];
|
|
62
|
+
if (!list || !list.length) {
|
|
63
|
+
return returnData;
|
|
64
|
+
}
|
|
65
|
+
if (option) {
|
|
66
|
+
if (option.labelTip && option.valueTip) {
|
|
67
|
+
list.forEach((/**
|
|
68
|
+
* @param {?} item
|
|
69
|
+
* @return {?}
|
|
70
|
+
*/
|
|
71
|
+
(item) => {
|
|
72
|
+
/** @type {?} */
|
|
73
|
+
const returnItem = item;
|
|
74
|
+
returnItem.label = item[option.label];
|
|
75
|
+
returnItem.value = item[option.value];
|
|
76
|
+
if (option.valueTip) {
|
|
77
|
+
returnItem[option.valueTip] = item[option.value];
|
|
78
|
+
}
|
|
79
|
+
if (option.labelTip) {
|
|
80
|
+
returnItem[option.labelTip] = item[option.label];
|
|
81
|
+
}
|
|
82
|
+
returnData.push(returnItem);
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
else {
|
|
86
|
+
list.forEach((/**
|
|
87
|
+
* @param {?} item
|
|
88
|
+
* @return {?}
|
|
89
|
+
*/
|
|
90
|
+
(item) => {
|
|
91
|
+
/** @type {?} */
|
|
92
|
+
const returnItem = item;
|
|
93
|
+
returnItem.label = item[option.label];
|
|
94
|
+
returnItem.value = item[option.value];
|
|
95
|
+
returnData.push(returnItem);
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
75
98
|
}
|
|
76
99
|
else {
|
|
77
100
|
list.forEach((/**
|
|
@@ -80,50 +103,118 @@ function (list, option) {
|
|
|
80
103
|
*/
|
|
81
104
|
(item) => {
|
|
82
105
|
/** @type {?} */
|
|
83
|
-
|
|
84
|
-
returnItem.label = item
|
|
85
|
-
returnItem.value = item
|
|
106
|
+
const returnItem = {};
|
|
107
|
+
returnItem.label = item;
|
|
108
|
+
returnItem.value = item;
|
|
86
109
|
returnData.push(returnItem);
|
|
87
110
|
}));
|
|
88
111
|
}
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
112
|
+
return returnData;
|
|
113
|
+
},
|
|
114
|
+
/**
|
|
115
|
+
* 求和
|
|
116
|
+
* @param {?} nums 数组
|
|
117
|
+
* @param {?=} precision 精度
|
|
118
|
+
* @return {?}
|
|
119
|
+
*/
|
|
120
|
+
add(nums, precision = 2) {
|
|
121
|
+
if (!Array.isArray(nums)) {
|
|
122
|
+
throw new Error('参数必须是数组');
|
|
123
|
+
}
|
|
124
|
+
if (nums.some((/**
|
|
125
|
+
* @param {?} num
|
|
93
126
|
* @return {?}
|
|
94
127
|
*/
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
}
|
|
105
|
-
/** @type {?} */
|
|
106
|
-
export const Utils = {
|
|
128
|
+
num => typeof num !== 'number'))) {
|
|
129
|
+
throw new Error('数组元素必须是数字');
|
|
130
|
+
}
|
|
131
|
+
/** @type {?} */
|
|
132
|
+
let result = 0;
|
|
133
|
+
for (const num of nums) {
|
|
134
|
+
result += num;
|
|
135
|
+
}
|
|
136
|
+
return round(result, precision);
|
|
137
|
+
},
|
|
107
138
|
/**
|
|
108
|
-
*
|
|
109
|
-
* @param
|
|
110
|
-
* @param
|
|
111
|
-
* @
|
|
139
|
+
* 减法
|
|
140
|
+
* @param {?} nums 数组
|
|
141
|
+
* @param {?=} precision 精度
|
|
142
|
+
* @return {?}
|
|
112
143
|
*/
|
|
113
|
-
|
|
144
|
+
subtract(nums, precision = 2) {
|
|
145
|
+
if (!Array.isArray(nums)) {
|
|
146
|
+
throw new Error('参数必须是数组');
|
|
147
|
+
}
|
|
148
|
+
if (nums.some((/**
|
|
149
|
+
* @param {?} num
|
|
150
|
+
* @return {?}
|
|
151
|
+
*/
|
|
152
|
+
num => typeof num !== 'number'))) {
|
|
153
|
+
throw new Error('数组元素必须是数字');
|
|
154
|
+
}
|
|
155
|
+
if (nums.length < 2) {
|
|
156
|
+
throw new Error('减法入参数量至少要2个!');
|
|
157
|
+
}
|
|
158
|
+
/** @type {?} */
|
|
159
|
+
let result = nums.shift();
|
|
160
|
+
for (const num of nums) {
|
|
161
|
+
result -= num;
|
|
162
|
+
}
|
|
163
|
+
return round(result, precision);
|
|
164
|
+
},
|
|
114
165
|
/**
|
|
115
|
-
*
|
|
116
|
-
* @param
|
|
117
|
-
* @param
|
|
166
|
+
* 乘法
|
|
167
|
+
* @param {?} nums 数组
|
|
168
|
+
* @param {?=} precision 精度
|
|
169
|
+
* @return {?}
|
|
118
170
|
*/
|
|
119
|
-
|
|
171
|
+
multiply(nums, precision = 2) {
|
|
172
|
+
if (!Array.isArray(nums)) {
|
|
173
|
+
throw new Error('参数必须是数组');
|
|
174
|
+
}
|
|
175
|
+
if (nums.some((/**
|
|
176
|
+
* @param {?} num
|
|
177
|
+
* @return {?}
|
|
178
|
+
*/
|
|
179
|
+
num => typeof num !== 'number'))) {
|
|
180
|
+
throw new Error('数组元素必须是数字');
|
|
181
|
+
}
|
|
182
|
+
/** @type {?} */
|
|
183
|
+
let result = 1;
|
|
184
|
+
for (const num of nums) {
|
|
185
|
+
result = result * num;
|
|
186
|
+
}
|
|
187
|
+
return round(result, precision);
|
|
188
|
+
},
|
|
120
189
|
/**
|
|
121
|
-
*
|
|
122
|
-
* @param
|
|
123
|
-
* @param
|
|
124
|
-
*
|
|
190
|
+
* 除法
|
|
191
|
+
* @param {?} nums 数组
|
|
192
|
+
* @param {?=} precision 精度
|
|
193
|
+
* @return {?}
|
|
125
194
|
*/
|
|
126
|
-
|
|
195
|
+
divide(nums, precision = 2) {
|
|
196
|
+
if (!Array.isArray(nums)) {
|
|
197
|
+
throw new Error('参数必须是数组');
|
|
198
|
+
}
|
|
199
|
+
if (nums.some((/**
|
|
200
|
+
* @param {?} num
|
|
201
|
+
* @return {?}
|
|
202
|
+
*/
|
|
203
|
+
num => typeof num !== 'number'))) {
|
|
204
|
+
throw new Error('数组元素必须是数字');
|
|
205
|
+
}
|
|
206
|
+
if (nums.length < 2) {
|
|
207
|
+
throw new Error('除法入参数量至少要2个!');
|
|
208
|
+
}
|
|
209
|
+
/** @type {?} */
|
|
210
|
+
let result = nums.shift();
|
|
211
|
+
for (const num of nums) {
|
|
212
|
+
if (num === 0) {
|
|
213
|
+
throw new Error('除数不能为0!');
|
|
214
|
+
}
|
|
215
|
+
result = result / num;
|
|
216
|
+
}
|
|
217
|
+
return round(result, precision);
|
|
218
|
+
}
|
|
127
219
|
};
|
|
128
|
-
export { ɵ0, ɵ1, ɵ2 };
|
|
129
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9mYW50YXN5LW5nem9ycm8vIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVVvQixVQUFVLFFBQW9CLEVBQUUsSUFBWSxFQUFFLE9BQW1COztRQUM3RSxVQUFVLEdBQUcsUUFBUTtJQUN6QixJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtRQUNyQyxPQUFPLFVBQVUsQ0FBQztLQUNuQjs7VUFDSyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU07SUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtRQUMvQixJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO1lBQy9CLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsVUFBVSxHQUFHLE9BQU8sQ0FBQztTQUNqRDtLQUNGO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQzs7Ozs7QUFPa0IsVUFBVSxJQUFxQixFQUFFLEdBQVc7O1FBQ3pELFVBQVUsR0FBRyxFQUFFO0lBQ25CLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1FBQ3pCLE9BQU8sVUFBVSxDQUFDO0tBQ25COztVQUNLLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTTtJQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQy9CLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNyQixJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDbkM7S0FDRjtJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQzs7Ozs7QUFRd0IsVUFBVSxJQUFnQixFQUFFLE1BQStFOztRQUM5SCxVQUFVLEdBQUcsRUFBRTtJQUNuQixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRTtRQUN6QixPQUFPLFVBQVUsQ0FBQztLQUNuQjtJQUNELElBQUksTUFBTSxFQUFFO1FBQ1YsSUFBSSxNQUFNLENBQUMsUUFBUSxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7WUFDdEMsSUFBSSxDQUFDLE9BQU87Ozs7WUFBQyxDQUFDLElBQUksRUFBRSxFQUFFOztvQkFDaEIsVUFBVSxHQUFRLElBQUk7Z0JBQzFCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEMsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLE1BQU0sQ0FBQyxRQUFRLEVBQUU7b0JBQ25CLFVBQVUsQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztpQkFDbEQ7Z0JBQ0QsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFO29CQUNuQixVQUFVLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7aUJBQ2xEO2dCQUNELFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7WUFDOUIsQ0FBQyxFQUFDLENBQUE7U0FDSDthQUFNO1lBQ0wsSUFBSSxDQUFDLE9BQU87Ozs7WUFBQyxDQUFDLElBQUksRUFBRSxFQUFFOztvQkFDaEIsVUFBVSxHQUFRLElBQUk7Z0JBQzFCLFVBQVUsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDdEMsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUN0QyxVQUFVLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQzlCLENBQUMsRUFBQyxDQUFBO1NBQ0g7S0FDRjtTQUFNO1FBQ0wsSUFBSSxDQUFDLE9BQU87Ozs7UUFBQyxDQUFDLElBQUksRUFBRSxFQUFFOztnQkFDaEIsVUFBVSxHQUFRLEVBQUU7WUFDeEIsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDeEIsVUFBVSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUM7WUFDeEIsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUM5QixDQUFDLEVBQUMsQ0FBQTtLQUNIO0lBQ0QsT0FBTyxVQUFVLENBQUM7QUFDcEIsQ0FBQzs7QUFsRkgsTUFBTSxPQUFPLEtBQUssR0FBRzs7Ozs7OztJQU9uQixnQkFBZ0IsTUFZZjs7Ozs7O0lBT0QsaUJBQWlCLE1BWWhCOzs7Ozs7O0lBUUQsdUJBQXVCLE1Bb0N0QjtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm9ybUl0ZW0gfSBmcm9tIFwiLi9oZC1mb3JtL2hkLWZvcm0uc2VydmljZVwiO1xuXG4vLyDlt6XlhbfnsbtcbmV4cG9ydCBjb25zdCBVdGlscyA9IHtcbiAgLyoqXG4gICAqIOWhq+WFhXNlbGVjdOaOp+S7tumAiemhuVxuICAgKiBAcGFyYW0gZm9ybUxpc3Qg5YWl5Y+C5pWw57uEIEFycmF5PGFueT5cbiAgICogQHBhcmFtIG5hbWUg6ZyA6KaB5aGr5YWFb3B0aW9uc+eahOWxnuaAp+WQjeensFxuICAgKiBAcGFyYW0gb3B0aW9ucyDpgInpobnliJfooahcbiAgICovXG4gIGZpbGxTZWxlY3RPcHRpb246IGZ1bmN0aW9uIChmb3JtTGlzdDogQXJyYXk8YW55PiwgbmFtZTogc3RyaW5nLCBvcHRpb25zOiBBcnJheTxhbnk+KSB7XG4gICAgbGV0IHJldHVybkRhdGEgPSBmb3JtTGlzdDtcbiAgICBpZiAoIXJldHVybkRhdGEgfHwgIXJldHVybkRhdGEubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gcmV0dXJuRGF0YTtcbiAgICB9XG4gICAgY29uc3QgbGVuZ3RoID0gZm9ybUxpc3QubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChyZXR1cm5EYXRhW2ldLm5hbWUgPT09IG5hbWUpIHtcbiAgICAgICAgcmV0dXJuRGF0YVtpXS5zZWxlY3RPcHRpb24uc2VsZWN0TGlzdCA9IG9wdGlvbnM7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXR1cm5EYXRhO1xuICB9LFxuXG4gIC8qKlxuICAgKiDloavlhYVGb3JtSXRlbeaVsOe7hO+8mumSiOWvueWFpeWPgmxpc3TnmoTmr4/kuIDkuKpGb3JtSXRlbe+8jOWIpOaWrW9iauS4reaYr+WQpuacieWvueW6lOeahG5hbWXlrZfmrrXvvIzlpoLmnpzmnInvvIzliJnloavlhYV2YWx1ZeOAglxuICAgKiBAcGFyYW0gbGlzdCDlhaXlj4LmlbDnu4QgQXJyYXk8Rm9ybUl0ZW0+XG4gICAqIEBwYXJhbSBvYmog6ZyA6KaB5aGr5YWF5YiwbGlzdOeahOWxnuaAp1xuICAgKi9cbiAgZmlsbEFycmF5Rm9ybUl0ZW06IGZ1bmN0aW9uIChsaXN0OiBBcnJheTxGb3JtSXRlbT4sIG9iajogT2JqZWN0KSB7XG4gICAgbGV0IHJldHVybkRhdGEgPSBbXTtcbiAgICBpZiAoIWxpc3QgfHwgIWxpc3QubGVuZ3RoKSB7XG4gICAgICByZXR1cm4gcmV0dXJuRGF0YTtcbiAgICB9XG4gICAgY29uc3QgbGVuZ3RoID0gbGlzdC5sZW5ndGg7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xuICAgICAgaWYgKG9ialtsaXN0W2ldLm5hbWVdKSB7XG4gICAgICAgIGxpc3RbaV0udmFsdWUgPSBvYmpbbGlzdFtpXS5uYW1lXTtcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGxpc3Q7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOaVsOe7hOi9rOaNouaIkOmAieaLqeWZqOeahOmAiemhueaVsOe7hFxuICAgKiBAcGFyYW0gbGlzdCDlhaXlj4LmlbDnu4Qg5a2X56ym5Liy5pWw57uE5oiW5a+56LGh5pWw57uEXG4gICAqIEBwYXJhbSBvcHRpb24g6L2s5o2i6YCJ6aG5XG4gICAqIOazqO+8mmxpc3TkuLrlrZfnrKbkuLLmlbDnu4TvvIxvcHRpb27kuI3pnIDopoHkvKDvvIzmjInnhafmoIflh4bnmoRsYWJlbOOAgXZhbHVl6L2s5o2iXG4gICAqL1xuICBhcnJheVRvU2VsZWN0T3B0aW9uTGlzdDogZnVuY3Rpb24gKGxpc3Q6IEFycmF5PGFueT4sIG9wdGlvbj86IHsgdmFsdWU6IHN0cmluZywgbGFiZWw6IHN0cmluZywgdmFsdWVUaXA/OiBzdHJpbmcsIGxhYmVsVGlwPzogc3RyaW5nIH0pIHtcbiAgICBsZXQgcmV0dXJuRGF0YSA9IFtdO1xuICAgIGlmICghbGlzdCB8fCAhbGlzdC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiByZXR1cm5EYXRhO1xuICAgIH1cbiAgICBpZiAob3B0aW9uKSB7XG4gICAgICBpZiAob3B0aW9uLmxhYmVsVGlwICYmIG9wdGlvbi52YWx1ZVRpcCkge1xuICAgICAgICBsaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBsZXQgcmV0dXJuSXRlbTogYW55ID0gaXRlbTtcbiAgICAgICAgICByZXR1cm5JdGVtLmxhYmVsID0gaXRlbVtvcHRpb24ubGFiZWxdO1xuICAgICAgICAgIHJldHVybkl0ZW0udmFsdWUgPSBpdGVtW29wdGlvbi52YWx1ZV07XG4gICAgICAgICAgaWYgKG9wdGlvbi52YWx1ZVRpcCkge1xuICAgICAgICAgICAgcmV0dXJuSXRlbVtvcHRpb24udmFsdWVUaXBdID0gaXRlbVtvcHRpb24udmFsdWVdO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAob3B0aW9uLmxhYmVsVGlwKSB7XG4gICAgICAgICAgICByZXR1cm5JdGVtW29wdGlvbi5sYWJlbFRpcF0gPSBpdGVtW29wdGlvbi5sYWJlbF07XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybkRhdGEucHVzaChyZXR1cm5JdGVtKTtcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGxldCByZXR1cm5JdGVtOiBhbnkgPSBpdGVtO1xuICAgICAgICAgIHJldHVybkl0ZW0ubGFiZWwgPSBpdGVtW29wdGlvbi5sYWJlbF07XG4gICAgICAgICAgcmV0dXJuSXRlbS52YWx1ZSA9IGl0ZW1bb3B0aW9uLnZhbHVlXTtcbiAgICAgICAgICByZXR1cm5EYXRhLnB1c2gocmV0dXJuSXRlbSk7XG4gICAgICAgIH0pXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBsZXQgcmV0dXJuSXRlbTogYW55ID0ge307XG4gICAgICAgIHJldHVybkl0ZW0ubGFiZWwgPSBpdGVtO1xuICAgICAgICByZXR1cm5JdGVtLnZhbHVlID0gaXRlbTtcbiAgICAgICAgcmV0dXJuRGF0YS5wdXNoKHJldHVybkl0ZW0pO1xuICAgICAgfSlcbiAgICB9XG4gICAgcmV0dXJuIHJldHVybkRhdGE7XG4gIH1cbn1cbiJdfQ==
|
|
220
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9mYW50YXN5LW5nem9ycm8vIiwic291cmNlcyI6WyJ1dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQ0EsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLFFBQVEsQ0FBQzs7O0FBRS9CLE1BQU0sT0FBTyxLQUFLLEdBQUc7Ozs7Ozs7O0lBT25CLGdCQUFnQixDQUFDLFFBQW9CLEVBQUUsSUFBWSxFQUFFLE9BQW1COztjQUNoRSxVQUFVLEdBQUcsUUFBUTtRQUMzQixJQUFJLENBQUMsVUFBVSxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sRUFBRTtZQUNyQyxPQUFPLFVBQVUsQ0FBQztTQUNuQjs7Y0FDSyxNQUFNLEdBQUcsUUFBUSxDQUFDLE1BQU07UUFDOUIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMvQixJQUFJLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssSUFBSSxFQUFFO2dCQUMvQixVQUFVLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFVBQVUsR0FBRyxPQUFPLENBQUM7YUFDakQ7U0FDRjtRQUNELE9BQU8sVUFBVSxDQUFDO0lBQ3BCLENBQUM7Ozs7Ozs7SUFPRCxpQkFBaUIsQ0FBQyxJQUFxQixFQUFFLEdBQVc7O2NBQzVDLFVBQVUsR0FBRyxFQUFFO1FBQ3JCLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ3pCLE9BQU8sVUFBVSxDQUFDO1NBQ25COztjQUNLLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTTtRQUMxQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQy9CLElBQUksR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFB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QyxDQUFDO0lBQ2xDLENBQUM7Ozs7Ozs7SUFPRCxNQUFNLENBQUMsSUFBYyxFQUFFLFlBQW9CLENBQUM7UUFDMUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQztTQUM1QjtRQUNELElBQUksSUFBSSxDQUFDLElBQUk7Ozs7UUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDLE9BQU8sR0FBRyxLQUFLLFFBQVEsRUFBQyxFQUFFO1lBQzdDLE1BQU0sSUFBSSxLQUFLLENBQUMsV0FBVyxDQUFDLENBQUM7U0FDOUI7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE1BQU0sSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDLENBQUM7U0FDakM7O1lBQ0csTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEVBQUU7UUFDekIsS0FBSyxNQUFNLEdBQUcsSUFBSSxJQUFJLEVBQUU7WUFDdEIsSUFBSSxHQUFHLEtBQUssQ0FBQyxFQUFFO2dCQUNiLE1BQU0sSUFBSSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUM7YUFDNUI7WUFDRCxNQUFNLEdBQUcsTUFBTSxHQUFHLEdBQUcsQ0FBQztTQUN2QjtRQUNELE9BQU8sS0FBSyxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNsQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGb3JtSXRlbSB9IGZyb20gJy4vaGQtZm9ybS9oZC1mb3JtLnNlcnZpY2UnO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tICdsb2Rhc2gnO1xuLy8g5bel5YW357G7XG5leHBvcnQgY29uc3QgVXRpbHMgPSB7XG4gIC8qKlxuICAgKiDloavlhYVzZWxlY3Tmjqfku7bpgInpoblcbiAgICogQHBhcmFtIGZvcm1MaXN0IOWFpeWPguaVsOe7hCBBcnJheTxhbnk+XG4gICAqIEBwYXJhbSBuYW1lIOmcgOimgeWhq+WFhW9wdGlvbnPnmoTlsZ7mgKflkI3np7BcbiAgICogQHBhcmFtIG9wdGlvbnMg6YCJ6aG55YiX6KGoXG4gICAqL1xuICBmaWxsU2VsZWN0T3B0aW9uKGZvcm1MaXN0OiBBcnJheTxhbnk+LCBuYW1lOiBzdHJpbmcsIG9wdGlvbnM6IEFycmF5PGFueT4pIHtcbiAgICBjb25zdCByZXR1cm5EYXRhID0gZm9ybUxpc3Q7XG4gICAgaWYgKCFyZXR1cm5EYXRhIHx8ICFyZXR1cm5EYXRhLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHJldHVybkRhdGE7XG4gICAgfVxuICAgIGNvbnN0IGxlbmd0aCA9IGZvcm1MaXN0Lmxlbmd0aDtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmV0dXJuRGF0YVtpXS5uYW1lID09PSBuYW1lKSB7XG4gICAgICAgIHJldHVybkRhdGFbaV0uc2VsZWN0T3B0aW9uLnNlbGVjdExpc3QgPSBvcHRpb25zO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmV0dXJuRGF0YTtcbiAgfSxcblxuICAvKipcbiAgICog5aGr5YWFRm9ybUl0ZW3mlbDnu4TvvJrpkojlr7nlhaXlj4JsaXN055qE5q+P5LiA5LiqRm9ybUl0ZW3vvIzliKTmlq1vYmrkuK3mmK/lkKbmnInlr7nlupTnmoRuYW1l5a2X5q6177yM5aaC5p6c5pyJ77yM5YiZ5aGr5YWFdmFsdWXjgIJcbiAgICogQHBhcmFtIGxpc3Qg5YWl5Y+C5pWw57uEIEFycmF5PEZvcm1JdGVtPlxuICAgKiBAcGFyYW0gb2JqIOmcgOimgeWhq+WFheWIsGxpc3TnmoTlsZ7mgKdcbiAgICovXG4gIGZpbGxBcnJheUZvcm1JdGVtKGxpc3Q6IEFycmF5PEZvcm1JdGVtPiwgb2JqOiBPYmplY3QpIHtcbiAgICBjb25zdCByZXR1cm5EYXRhID0gW107XG4gICAgaWYgKCFsaXN0IHx8ICFsaXN0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIHJldHVybkRhdGE7XG4gICAgfVxuICAgIGNvbnN0IGxlbmd0aCA9IGxpc3QubGVuZ3RoO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChvYmpbbGlzdFtpXS5uYW1lXSkge1xuICAgICAgICBsaXN0W2ldLnZhbHVlID0gb2JqW2xpc3RbaV0ubmFtZV07XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBsaXN0O1xuICB9LFxuXG4gIC8qKlxuICAgKiDmlbDnu4TovazmjaLmiJDpgInmi6nlmajnmoTpgInpobnmlbDnu4RcbiAgICogQHBhcmFtIGxpc3Qg5YWl5Y+C5pWw57uEIOWtl+espuS4suaVsOe7hOaIluWvueixoeaVsOe7hFxuICAgKiBAcGFyYW0gb3B0aW9uIOi9rOaNoumAiemhuVxuICAgKiDms6jvvJpsaXN05Li65a2X56ym5Liy5pWw57uE77yMb3B0aW9u5LiN6ZyA6KaB5Lyg77yM5oyJ54Wn5qCH5YeG55qEbGFiZWzjgIF2YWx1Zei9rOaNolxuICAgKi9cbiAgYXJyYXlUb1NlbGVjdE9wdGlvbkxpc3QobGlzdDogQXJyYXk8YW55Piwgb3B0aW9uPzoge1xuICAgIHZhbHVlOiBzdHJpbmcsXG4gICAgbGFiZWw6IHN0cmluZyxcbiAgICB2YWx1ZVRpcD86IHN0cmluZyxcbiAgICBsYWJlbFRpcD86IHN0cmluZ1xuICB9KSB7XG4gICAgY29uc3QgcmV0dXJuRGF0YSA9IFtdO1xuICAgIGlmICghbGlzdCB8fCAhbGlzdC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiByZXR1cm5EYXRhO1xuICAgIH1cbiAgICBpZiAob3B0aW9uKSB7XG4gICAgICBpZiAob3B0aW9uLmxhYmVsVGlwICYmIG9wdGlvbi52YWx1ZVRpcCkge1xuICAgICAgICBsaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgICBjb25zdCByZXR1cm5JdGVtOiBhbnkgPSBpdGVtO1xuICAgICAgICAgIHJldHVybkl0ZW0ubGFiZWwgPSBpdGVtW29wdGlvbi5sYWJlbF07XG4gICAgICAgICAgcmV0dXJuSXRlbS52YWx1ZSA9IGl0ZW1bb3B0aW9uLnZhbHVlXTtcbiAgICAgICAgICBpZiAob3B0aW9uLnZhbHVlVGlwKSB7XG4gICAgICAgICAgICByZXR1cm5JdGVtW29wdGlvbi52YWx1ZVRpcF0gPSBpdGVtW29wdGlvbi52YWx1ZV07XG4gICAgICAgICAgfVxuICAgICAgICAgIGlmIChvcHRpb24ubGFiZWxUaXApIHtcbiAgICAgICAgICAgIHJldHVybkl0ZW1bb3B0aW9uLmxhYmVsVGlwXSA9IGl0ZW1bb3B0aW9uLmxhYmVsXTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuRGF0YS5wdXNoKHJldHVybkl0ZW0pO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJldHVybkl0ZW06IGFueSA9IGl0ZW07XG4gICAgICAgICAgcmV0dXJuSXRlbS5sYWJlbCA9IGl0ZW1bb3B0aW9uLmxhYmVsXTtcbiAgICAgICAgICByZXR1cm5JdGVtLnZhbHVlID0gaXRlbVtvcHRpb24udmFsdWVdO1xuICAgICAgICAgIHJldHVybkRhdGEucHVzaChyZXR1cm5JdGVtKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGxpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBjb25zdCByZXR1cm5JdGVtOiBhbnkgPSB7fTtcbiAgICAgICAgcmV0dXJuSXRlbS5sYWJlbCA9IGl0ZW07XG4gICAgICAgIHJldHVybkl0ZW0udmFsdWUgPSBpdGVtO1xuICAgICAgICByZXR1cm5EYXRhLnB1c2gocmV0dXJuSXRlbSk7XG4gICAgICB9KTtcbiAgICB9XG4gICAgcmV0dXJuIHJldHVybkRhdGE7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOaxguWSjFxuICAgKiBAcGFyYW0gbnVtcyDmlbDnu4RcbiAgICogQHBhcmFtIHByZWNpc2lvbiDnsr7luqZcbiAgICovXG4gIGFkZChudW1zOiBudW1iZXJbXSwgcHJlY2lzaW9uOiBudW1iZXIgPSAyKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG51bXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ+WPguaVsOW/hemhu+aYr+aVsOe7hCcpO1xuICAgIH1cbiAgICBpZiAobnVtcy5zb21lKG51bSA9PiB0eXBlb2YgbnVtICE9PSAnbnVtYmVyJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcign5pWw57uE5YWD57Sg5b+F6aG75piv5pWw5a2XJyk7XG4gICAgfVxuICAgIGxldCByZXN1bHQgPSAwO1xuICAgIGZvciAoY29uc3QgbnVtIG9mIG51bXMpIHtcbiAgICAgIHJlc3VsdCArPSBudW07XG4gICAgfVxuICAgIHJldHVybiByb3VuZChyZXN1bHQsIHByZWNpc2lvbik7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOWHj+azlVxuICAgKiBAcGFyYW0gbnVtcyDmlbDnu4RcbiAgICogQHBhcmFtIHByZWNpc2lvbiDnsr7luqZcbiAgICovXG4gIHN1YnRyYWN0KG51bXM6IG51bWJlcltdLCBwcmVjaXNpb246IG51bWJlciA9IDIpIHtcbiAgICBpZiAoIUFycmF5LmlzQXJyYXkobnVtcykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcign5Y+C5pWw5b+F6aG75piv5pWw57uEJyk7XG4gICAgfVxuICAgIGlmIChudW1zLnNvbWUobnVtID0+IHR5cGVvZiBudW0gIT09ICdudW1iZXInKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCfmlbDnu4TlhYPntKDlv4XpobvmmK/mlbDlrZcnKTtcbiAgICB9XG4gICAgaWYgKG51bXMubGVuZ3RoIDwgMikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCflh4/ms5XlhaXlj4LmlbDph4/oh7PlsJHopoEy5Liq77yBJyk7XG4gICAgfVxuICAgIGxldCByZXN1bHQgPSBudW1zLnNoaWZ0KCk7XG4gICAgZm9yIChjb25zdCBudW0gb2YgbnVtcykge1xuICAgICAgcmVzdWx0IC09IG51bTtcbiAgICB9XG4gICAgcmV0dXJuIHJvdW5kKHJlc3VsdCwgcHJlY2lzaW9uKTtcbiAgfSxcblxuICAvKipcbiAgICog5LmY5rOVXG4gICAqIEBwYXJhbSBudW1zIOaVsOe7hFxuICAgKiBAcGFyYW0gcHJlY2lzaW9uIOeyvuW6plxuICAgKi9cbiAgbXVsdGlwbHkobnVtczogbnVtYmVyW10sIHByZWNpc2lvbjogbnVtYmVyID0gMikge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShudW1zKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCflj4LmlbDlv4XpobvmmK/mlbDnu4QnKTtcbiAgICB9XG4gICAgaWYgKG51bXMuc29tZShudW0gPT4gdHlwZW9mIG51bSAhPT0gJ251bWJlcicpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ+aVsOe7hOWFg+e0oOW/hemhu+aYr+aVsOWtlycpO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0ID0gMTtcbiAgICBmb3IgKGNvbnN0IG51bSBvZiBudW1zKSB7XG4gICAgICByZXN1bHQgPSByZXN1bHQgKiBudW07XG4gICAgfVxuICAgIHJldHVybiByb3VuZChyZXN1bHQsIHByZWNpc2lvbik7XG4gIH0sXG5cbiAgLyoqXG4gICAqIOmZpOazlVxuICAgKiBAcGFyYW0gbnVtcyDmlbDnu4RcbiAgICogQHBhcmFtIHByZWNpc2lvbiDnsr7luqZcbiAgICovXG4gIGRpdmlkZShudW1zOiBudW1iZXJbXSwgcHJlY2lzaW9uOiBudW1iZXIgPSAyKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG51bXMpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ+WPguaVsOW/hemhu+aYr+aVsOe7hCcpO1xuICAgIH1cbiAgICBpZiAobnVtcy5zb21lKG51bSA9PiB0eXBlb2YgbnVtICE9PSAnbnVtYmVyJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcign5pWw57uE5YWD57Sg5b+F6aG75piv5pWw5a2XJyk7XG4gICAgfVxuICAgIGlmIChudW1zLmxlbmd0aCA8IDIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcign6Zmk5rOV5YWl5Y+C5pWw6YeP6Iez5bCR6KaBMuS4qu+8gScpO1xuICAgIH1cbiAgICBsZXQgcmVzdWx0ID0gbnVtcy5zaGlmdCgpO1xuICAgIGZvciAoY29uc3QgbnVtIG9mIG51bXMpIHtcbiAgICAgIGlmIChudW0gPT09IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCfpmaTmlbDkuI3og73kuLow77yBJyk7XG4gICAgICB9XG4gICAgICByZXN1bHQgPSByZXN1bHQgLyBudW07XG4gICAgfVxuICAgIHJldHVybiByb3VuZChyZXN1bHQsIHByZWNpc2lvbik7XG4gIH1cbn07XG4iXX0=
|