@1money/react-ui 1.14.0-alpha.2 → 1.14.0-alpha.21

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.
@@ -28,32 +28,23 @@ var MIN_INPUT_WIDTH = 33;
28
28
  var normalizeNumberInput = function normalizeNumberInput(val) {
29
29
  return val.replace(/[\u3002\uff0e\uff61]/g, '.').replace(/[\uFF0C]/g, ',');
30
30
  };
31
- var clampValueInRange = function clampValueInRange(val, min, max) {
32
- if (val === '' || val === '-' || isNaN(+val)) return {
33
- val: val,
34
- clamped: false
35
- };
36
- var clampedVal = val;
37
- var clamped = false;
31
+ var calcValueInRange = function calcValueInRange(val, min, max) {
32
+ if (val === '' || val === '-' || isNaN(+val)) return val;
33
+ var calcVal = val;
38
34
  var bnVal = (0, _bignumber["default"])(val);
39
35
  if (typeof min === 'number' || typeof min === 'bigint') {
40
36
  var minBn = (0, _bignumber["default"])(min);
41
37
  if (bnVal.lt(minBn)) {
42
- clampedVal = '' + min;
43
- clamped = true;
38
+ calcVal = '' + min;
44
39
  }
45
40
  }
46
41
  if (typeof max === 'number' || typeof max === 'bigint') {
47
42
  var maxBn = (0, _bignumber["default"])(max);
48
43
  if (bnVal.gt(maxBn)) {
49
- clampedVal = '' + max;
50
- clamped = true;
44
+ calcVal = '' + max;
51
45
  }
52
46
  }
53
- return {
54
- val: clampedVal,
55
- clamped: clamped
56
- };
47
+ return calcVal;
57
48
  };
58
49
  var InputAmount = exports.InputAmount = function InputAmount(props) {
59
50
  var value = props.value,
@@ -75,6 +66,8 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
75
66
  _props$prefixCls = props.prefixCls,
76
67
  prefixCls = _props$prefixCls === void 0 ? 'input-amount' : _props$prefixCls,
77
68
  messageCls = props.messageCls,
69
+ prefixEleCls = props.prefixEleCls,
70
+ suffixEleCls = props.suffixEleCls,
78
71
  invalid = props.invalid,
79
72
  negative = props.negative,
80
73
  required = props.required,
@@ -90,7 +83,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
90
83
  onChange = props.onChange,
91
84
  _onBlur = props.onBlur,
92
85
  _onFocus = props.onFocus,
93
- rest = __rest(props, ["value", "type", "maxFractionDigits", "children", "placeholder", "min", "max", "size", "footnote", "footnoteCls", "className", "wrapperCls", "labelCls", "prefixCls", "messageCls", "invalid", "negative", "required", "loading", "success", "disabled", "readOnly", "label", "prefix", "suffix", "currency", "message", "onChange", "onBlur", "onFocus"]);
86
+ rest = __rest(props, ["value", "type", "maxFractionDigits", "children", "placeholder", "min", "max", "size", "footnote", "footnoteCls", "className", "wrapperCls", "labelCls", "prefixCls", "messageCls", "prefixEleCls", "suffixEleCls", "invalid", "negative", "required", "loading", "success", "disabled", "readOnly", "label", "prefix", "suffix", "currency", "message", "onChange", "onBlur", "onFocus"]);
94
87
  var classes = (0, _classnames["default"])("".concat(prefixCls, "-").concat(type));
95
88
  var inputRef = (0, _react.useRef)(null);
96
89
  var fakeEleRef = (0, _react.useRef)(null);
@@ -99,9 +92,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
99
92
  var currencyRef = (0, _react.useRef)(null);
100
93
  var containerRef = (0, _react.useRef)(null);
101
94
  var inputCaretPositionRef = (0, _react.useRef)(0);
102
- var prevValueRef = (0, _react.useRef)(null);
103
- var prevFocusRef = (0, _react.useRef)(false);
104
- var pendingCaretSyncRef = (0, _react.useRef)(false);
95
+ var ignoreSelectRef = (0, _react.useRef)(false);
105
96
  var _useState = (0, _react.useState)(null),
106
97
  _useState2 = (0, _slicedToArray2["default"])(_useState, 2),
107
98
  _value = _useState2[0],
@@ -124,6 +115,15 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
124
115
  allowNegative: negative
125
116
  });
126
117
  }, [_value, negative]);
118
+ var valueRef = (0, _react.useRef)({
119
+ value: value,
120
+ _value: _value,
121
+ formattedValue: formattedValue,
122
+ min: min,
123
+ max: max,
124
+ negative: negative,
125
+ maxFractionDigits: maxFractionDigits
126
+ });
127
127
  var scrollToEnd = (0, _react.useCallback)(function () {
128
128
  var sticky = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
129
129
  var _a;
@@ -137,11 +137,49 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
137
137
  input.scrollLeft = shouldToEnd ? input.scrollWidth : position;
138
138
  input.focus();
139
139
  }, []);
140
+ var calcCaretPos = (0, _react.useCallback)(function (val) {
141
+ var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
142
+ var currPos = arguments.length > 2 ? arguments[2] : undefined;
143
+ var _a, _b, _c;
144
+ if (inputRef.current) {
145
+ var _valueRef$current = valueRef.current,
146
+ _value2 = _valueRef$current._value,
147
+ _formattedValue = _valueRef$current.formattedValue;
148
+ var formattedNewVal = (0, _reactNumberFormat.numericFormatter)(val, {
149
+ thousandSeparator: true,
150
+ allowNegative: negative
151
+ });
152
+ var isAdd = val.length > ((_a = _value2 === null || _value2 === void 0 ? void 0 : _value2.length) !== null && _a !== void 0 ? _a : 0);
153
+ var ignoreOldPos = isAdd ? val.length - ((_b = _value2 === null || _value2 === void 0 ? void 0 : _value2.length) !== null && _b !== void 0 ? _b : 0) > 1 : false;
154
+ var position = (_c = currPos !== null && currPos !== void 0 ? currPos : inputRef.current.selectionStart) !== null && _c !== void 0 ? _c : 0;
155
+ if (!ignoreOldPos) {
156
+ var oldPosVal = _formattedValue.slice(0, Math.max(position - (isAdd ? 1 : -1), 0));
157
+ position = oldPosVal.split(',').join('').length + (isAdd ? 1 : -1);
158
+ }
159
+ var posVal = val.slice(0, position);
160
+ formattedNewVal.split('').reduce(function (acc, _char, ind) {
161
+ if (_char === ',') return acc;else acc.push(_char);
162
+ if (acc.join('') === posVal) {
163
+ position = ind + 1;
164
+ return acc;
165
+ }
166
+ return acc;
167
+ }, []);
168
+ inputCaretPositionRef.current = position + offset;
169
+ }
170
+ }, []);
140
171
  var handleChange = (0, _react.useCallback)(function (e) {
141
- var _a, _b, _c, _d, _e, _f;
172
+ var _a, _b, _c;
142
173
  if (disabled || readOnly) return;
174
+ var _valueRef$current2 = valueRef.current,
175
+ value = _valueRef$current2.value,
176
+ _value = _valueRef$current2._value,
177
+ formattedValue = _valueRef$current2.formattedValue,
178
+ min = _valueRef$current2.min,
179
+ max = _valueRef$current2.max,
180
+ negative = _valueRef$current2.negative,
181
+ maxFractionDigits = _valueRef$current2.maxFractionDigits;
143
182
  var val = e.target.value;
144
- var truncatedFraction = false;
145
183
  if (val != null) val = normalizeNumberInput(val).split(',').join('');
146
184
  var hasDecimalPoint = !!val && val.endsWith('.');
147
185
  if (hasDecimalPoint) val = val.slice(0, -1);
@@ -155,49 +193,24 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
155
193
  _int = _val$split2[0],
156
194
  decimal = _val$split2[1];
157
195
  if (decimal != null && decimal.length > Number(maxFractionDigits)) {
158
- val = "".concat(_int, ".").concat(decimal.slice(0, Number(maxFractionDigits)));
159
- truncatedFraction = true;
196
+ var _formattedValue$split = formattedValue.split('.'),
197
+ _formattedValue$split2 = (0, _slicedToArray2["default"])(_formattedValue$split, 2),
198
+ oldInt = _formattedValue$split2[0],
199
+ oldDecimal = _formattedValue$split2[1];
200
+ if (oldInt.split(',').join('') == _int) return;
201
+ val = "".concat(_int, ".").concat(oldDecimal);
160
202
  }
161
203
  }
162
- var clampedByRange = false;
163
- if (typeof min === 'number' || typeof min === 'bigint' || typeof max === 'number' || typeof max === 'bigint') {
164
- var res = clampValueInRange(val, min, max);
165
- val = res.val;
166
- clampedByRange = res.clamped;
167
- }
168
- if (inputRef.current) {
169
- var selectionStart = (_a = inputRef.current.selectionStart) !== null && _a !== void 0 ? _a : 0;
170
- var currentSlice = (_c = (_b = e.target.value) === null || _b === void 0 ? void 0 : _b.slice(0, selectionStart)) !== null && _c !== void 0 ? _c : '';
171
- var caretRawLength = normalizeNumberInput(currentSlice).split(',').join('').length;
172
- var formattedNewVal = (0, _reactNumberFormat.numericFormatter)(val, {
173
- thousandSeparator: true,
174
- allowNegative: negative
175
- });
176
- var targetRawPos = Math.min(caretRawLength, val.length);
177
- var caretPos = formattedNewVal.length;
178
- var seen = 0;
179
- for (var i = 0; i < formattedNewVal.length; i++) {
180
- if (formattedNewVal[i] === ',') continue;
181
- seen += 1;
182
- if (seen === targetRawPos) {
183
- caretPos = i + 1;
184
- break;
185
- }
186
- }
187
- if (targetRawPos === 0) caretPos = 0;
188
- if (hasDecimalPoint && !truncatedFraction && targetRawPos === val.length) {
189
- caretPos = Math.min(formattedNewVal.length + 1, caretPos + 1);
190
- }
191
- inputCaretPositionRef.current = truncatedFraction ? formattedNewVal.length : clampedByRange ? formattedNewVal.length : caretPos;
192
- pendingCaretSyncRef.current = true;
193
- }
194
204
  if (typeof value === 'undefined') {
205
+ if (typeof min === 'number' || typeof min === 'bigint' || typeof max === 'number' || typeof max === 'bigint') {
206
+ val = calcValueInRange(val, min, max);
207
+ }
195
208
  if (val === '') {
196
209
  setValue(null);
197
210
  } else if (isStandaloneMinus) {
198
211
  setValue('-');
199
212
  } else {
200
- var decimals = (_f = (_e = (_d = val.match(/\.(\d+)$/)) === null || _d === void 0 ? void 0 : _d[1]) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0;
213
+ var decimals = (_c = (_b = (_a = val.match(/\.(\d+)$/)) === null || _a === void 0 ? void 0 : _a[1]) === null || _b === void 0 ? void 0 : _b.length) !== null && _c !== void 0 ? _c : 0;
201
214
  var bn = (0, _bignumber["default"])(val);
202
215
  var normalized = bn.toFixed(decimals);
203
216
  if (negative && val.trim().startsWith('-') && bn.isZero()) {
@@ -205,10 +218,21 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
205
218
  }
206
219
  setValue("".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim());
207
220
  }
221
+ calcCaretPos(val, hasDecimalPoint ? 2 : 0);
222
+ ignoreSelectRef.current = true;
208
223
  }
209
- onChange === null || onChange === void 0 ? void 0 : onChange(e);
210
- }, [onChange, _value, value, formattedValue, maxFractionDigits, min, max, negative, disabled, readOnly]);
211
- (0, _react.useEffect)(function () {
224
+ onChange === null || onChange === void 0 ? void 0 : onChange(e, val);
225
+ }, [onChange, disabled, readOnly]);
226
+ var handleSelect = (0, _react.useCallback)(function () {
227
+ var _a;
228
+ if (ignoreSelectRef.current) {
229
+ ignoreSelectRef.current = false;
230
+ return;
231
+ }
232
+ var currPos = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.selectionStart;
233
+ if (typeof currPos === 'number') inputCaretPositionRef.current = currPos;
234
+ }, []);
235
+ (0, _react.useLayoutEffect)(function () {
212
236
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
213
237
  var containerWidth = (_b = (_a = containerRef.current) === null || _a === void 0 ? void 0 : _a.offsetWidth) !== null && _b !== void 0 ? _b : MIN_INPUT_WIDTH;
214
238
  var prefixWidth = (_d = (_c = prefixRef.current) === null || _c === void 0 ? void 0 : _c.offsetWidth) !== null && _d !== void 0 ? _d : 0;
@@ -220,13 +244,8 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
220
244
  var isMax = fakeWidth >= maxWidth;
221
245
  setWidth(Math.min(maxWidth, Math.max(fakeWidth, MIN_INPUT_WIDTH)));
222
246
  setIsMaxWidth(isMax);
223
- if (isFocus && (_value !== prevValueRef.current || !prevFocusRef.current) && pendingCaretSyncRef.current) {
224
- scrollToEnd(true);
225
- pendingCaretSyncRef.current = false;
226
- }
227
- prevValueRef.current = _value;
228
- prevFocusRef.current = isFocus;
229
- }, [_value, prefix, suffix, currency, isFocus, scrollToEnd]);
247
+ if (isFocus) scrollToEnd(true);
248
+ }, [_value, prefix, suffix, currency, isFocus]);
230
249
  (0, _react.useEffect)(function () {
231
250
  // clear negative sign if not allowed
232
251
  if (negative) return;
@@ -239,9 +258,12 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
239
258
  if (_value.startsWith('-')) setValue(_value.slice(1));
240
259
  }, [negative, value, _value]);
241
260
  (0, _react.useEffect)(function () {
242
- var _a, _b, _c;
261
+ var _a, _b, _c, _d, _e;
243
262
  var val = value;
244
263
  var hasDecimalPoint = false;
264
+ var _valueRef$current3 = valueRef.current,
265
+ _value = _valueRef$current3._value,
266
+ formattedValue = _valueRef$current3.formattedValue;
245
267
  if (typeof val === 'string') {
246
268
  if (val === '') {
247
269
  val = null;
@@ -271,12 +293,16 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
271
293
  _int2 = _split2[0],
272
294
  decimal = _split2[1];
273
295
  if (decimal != null && decimal.length > Number(maxFractionDigits)) {
274
- val = _int2 + '.' + decimal.slice(0, Number(maxFractionDigits));
296
+ var _formattedValue$split3 = formattedValue.split('.'),
297
+ _formattedValue$split4 = (0, _slicedToArray2["default"])(_formattedValue$split3, 2),
298
+ oldInt = _formattedValue$split4[0],
299
+ oldDecimal = _formattedValue$split4[1];
300
+ if (oldInt.split(',').join('') == _int2) return;
301
+ val = "".concat(_int2, ".").concat(oldDecimal);
275
302
  }
276
303
  }
277
304
  if (typeof val === 'string' || typeof val === 'number' || typeof val === 'bigint') {
278
- var res = clampValueInRange('' + val, min, max);
279
- val = res.val;
305
+ val = calcValueInRange('' + val, min, max);
280
306
  }
281
307
  if (val === '' || val == null) {
282
308
  setValue(null);
@@ -288,11 +314,37 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
288
314
  if (negative && strVal.trim().startsWith('-') && bn.isZero()) {
289
315
  normalized = normalized.startsWith('-') ? normalized : "-".concat(normalized);
290
316
  }
291
- setValue("".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim());
317
+ var res = "".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim();
318
+ setValue(res);
292
319
  }
320
+ var originOffset = ((_d = val === null || val === void 0 ? void 0 : val.length) !== null && _d !== void 0 ? _d : 0) - ((_e = _value === null || _value === void 0 ? void 0 : _value.length) !== null && _e !== void 0 ? _e : 0);
321
+ var isLikeKeyboardInput = originOffset === 1 || originOffset === -1;
322
+ var formattedOffset = (0, _reactNumberFormat.numericFormatter)(val !== null && val !== void 0 ? val : '', {
323
+ thousandSeparator: true,
324
+ allowNegative: negative
325
+ }).length - formattedValue.length;
326
+ var offset = Math.max(!isLikeKeyboardInput ? formattedOffset : originOffset, 0) + (hasDecimalPoint ? originOffset < 0 ? 3 : 2 : 0);
327
+ console.info('offset', offset);
328
+ console.info('originOffset', originOffset);
329
+ console.info('formattedOffset', formattedOffset);
330
+ console.info('isLikeKeyboardInput', isLikeKeyboardInput);
331
+ console.info('inputCaretPositionRef.current', inputCaretPositionRef.current);
332
+ calcCaretPos(val !== null && val !== void 0 ? val : '', offset, Math.max(inputCaretPositionRef.current, 0));
333
+ ignoreSelectRef.current = true;
293
334
  }, [value, maxFractionDigits, min, max, negative]);
335
+ (0, _react.useEffect)(function () {
336
+ valueRef.current = {
337
+ value: value,
338
+ _value: _value,
339
+ formattedValue: formattedValue,
340
+ min: min,
341
+ max: max,
342
+ negative: negative,
343
+ maxFractionDigits: maxFractionDigits
344
+ };
345
+ }, [_value, value, formattedValue, min, max, negative, maxFractionDigits]);
294
346
  return (0, _jsxRuntime.jsxs)("div", {
295
- className: classes('wrapper', (0, _classnames.joinCls)(wrapperCls, invalid && classes('invalid'), success && classes('success'), disabled && classes('disabled'), readOnly && classes('readonly'), _value && classes('filled'))),
347
+ className: classes('wrapper', (0, _classnames.joinCls)(wrapperCls, classes(size), invalid && classes('invalid'), success && classes('success'), disabled && classes('disabled'), readOnly && classes('readonly'), _value && classes('filled'))),
296
348
  children: [label ? loading ? (0, _jsxRuntime.jsx)(_skeleton.Skeleton, {
297
349
  width: '72px',
298
350
  height: '18px',
@@ -311,7 +363,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
311
363
  },
312
364
  children: [prefix && (0, _jsxRuntime.jsx)("span", {
313
365
  ref: prefixRef,
314
- className: classes('prefix'),
366
+ className: classes('prefix', prefixEleCls),
315
367
  children: prefix
316
368
  }), (0, _jsxRuntime.jsx)("div", {
317
369
  className: classes('element', !isFocus && isMaxWidth ? classes('element-max') : ''),
@@ -325,6 +377,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
325
377
  '--input-width': "".concat(_width, "px")
326
378
  },
327
379
  onChange: handleChange,
380
+ onSelect: handleSelect,
328
381
  onFocus: function onFocus(e) {
329
382
  setIsFocus(true);
330
383
  _onFocus === null || _onFocus === void 0 ? void 0 : _onFocus(e);
@@ -343,7 +396,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
343
396
  strokeWidth: '4'
344
397
  }) : suffix ? (0, _jsxRuntime.jsx)("span", {
345
398
  ref: suffixRef,
346
- className: classes('suffix'),
399
+ className: classes('suffix', suffixEleCls),
347
400
  children: suffix
348
401
  }) : null, (0, _jsxRuntime.jsx)("span", {
349
402
  ref: fakeEleRef,
@@ -351,10 +404,7 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
351
404
  onClick: function onClick(e) {
352
405
  return e.stopPropagation();
353
406
  },
354
- children: (0, _reactNumberFormat.numericFormatter)('' + (_value == null ? '' : _value), {
355
- thousandSeparator: true,
356
- allowNegative: negative
357
- })
407
+ children: formattedValue
358
408
  })]
359
409
  }), (message || footnote) && (0, _jsxRuntime.jsxs)("div", {
360
410
  className: classes('extra'),
@@ -369,4 +419,4 @@ var InputAmount = exports.InputAmount = function InputAmount(props) {
369
419
  });
370
420
  };
371
421
  var _default = exports["default"] = /*#__PURE__*/(0, _react.memo)(InputAmount);
372
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfYmlnbnVtYmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdE51bWJlckZvcm1hdCIsIl9za2VsZXRvbiIsIl9TcGlubmVyIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2xhbXBWYWx1ZUluUmFuZ2UiLCJtaW4iLCJtYXgiLCJpc05hTiIsImNsYW1wZWQiLCJjbGFtcGVkVmFsIiwiYm5WYWwiLCJCaWdOdW1iZXIiLCJtaW5CbiIsImx0IiwibWF4Qm4iLCJndCIsIklucHV0QW1vdW50IiwiZXhwb3J0cyIsInByb3BzIiwidmFsdWUiLCJfcHJvcHMkdHlwZSIsInR5cGUiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsImNoaWxkcmVuIiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJmb290bm90ZSIsImZvb3Rub3RlQ2xzIiwiY2xhc3NOYW1lIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJpbnZhbGlkIiwibmVnYXRpdmUiLCJyZXF1aXJlZCIsImxvYWRpbmciLCJzdWNjZXNzIiwiZGlzYWJsZWQiLCJyZWFkT25seSIsImxhYmVsIiwicHJlZml4Iiwic3VmZml4IiwiY3VycmVuY3kiLCJtZXNzYWdlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiY29uY2F0IiwiaW5wdXRSZWYiLCJ1c2VSZWYiLCJmYWtlRWxlUmVmIiwicHJlZml4UmVmIiwic3VmZml4UmVmIiwiY3VycmVuY3lSZWYiLCJjb250YWluZXJSZWYiLCJpbnB1dENhcmV0UG9zaXRpb25SZWYiLCJwcmV2VmFsdWVSZWYiLCJwcmV2Rm9jdXNSZWYiLCJwZW5kaW5nQ2FyZXRTeW5jUmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiX3ZhbHVlIiwic2V0VmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIl93aWR0aCIsInNldFdpZHRoIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc01heFdpZHRoIiwic2V0SXNNYXhXaWR0aCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNGb2N1cyIsInNldElzRm9jdXMiLCJmb3JtYXR0ZWRWYWx1ZSIsInVzZU1lbW8iLCJudW1lcmljRm9ybWF0dGVyIiwidGhvdXNhbmRTZXBhcmF0b3IiLCJhbGxvd05lZ2F0aXZlIiwic2Nyb2xsVG9FbmQiLCJ1c2VDYWxsYmFjayIsInN0aWNreSIsImFyZ3VtZW50cyIsInVuZGVmaW5lZCIsIl9hIiwiaW5wdXQiLCJjdXJyZW50IiwibGVuIiwicG9zaXRpb24iLCJzY3JvbGxMZWZ0Iiwic2hvdWxkVG9FbmQiLCJzdGFydCIsInNldFNlbGVjdGlvblJhbmdlIiwic2Nyb2xsV2lkdGgiLCJmb2N1cyIsImhhbmRsZUNoYW5nZSIsIl9iIiwiX2MiLCJfZCIsIl9lIiwiX2YiLCJ0YXJnZXQiLCJ0cnVuY2F0ZWRGcmFjdGlvbiIsInNwbGl0Iiwiam9pbiIsImhhc0RlY2ltYWxQb2ludCIsImVuZHNXaXRoIiwic2xpY2UiLCJpbmNsdWRlcyIsImlzU3RhbmRhbG9uZU1pbnVzIiwiX3ZhbCRzcGxpdCIsIl92YWwkc3BsaXQyIiwiaW50IiwiZGVjaW1hbCIsIk51bWJlciIsImNsYW1wZWRCeVJhbmdlIiwicmVzIiwic2VsZWN0aW9uU3RhcnQiLCJjdXJyZW50U2xpY2UiLCJjYXJldFJhd0xlbmd0aCIsImZvcm1hdHRlZE5ld1ZhbCIsInRhcmdldFJhd1BvcyIsIk1hdGgiLCJjYXJldFBvcyIsInNlZW4iLCJkZWNpbWFscyIsIm1hdGNoIiwiYm4iLCJub3JtYWxpemVkIiwidG9GaXhlZCIsInRyaW0iLCJzdGFydHNXaXRoIiwiaXNaZXJvIiwidXNlRWZmZWN0IiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJhYnMiLCJ6ZXJvIiwiQmlnSW50IiwiX3NwbGl0IiwiX3NwbGl0MiIsInN0clZhbCIsIl9qc3hzIiwiam9pbkNscyIsIl9qc3giLCJTa2VsZXRvbiIsIndpZHRoIiwiaGVpZ2h0IiwicmVmIiwib25DbGljayIsIkhUTUxJbnB1dEVsZW1lbnQiLCJhc3NpZ24iLCJzdHlsZSIsIlNwaW5uZXIiLCJzdHJva2VXaWR0aCIsInN0b3BQcm9wYWdhdGlvbiIsIl9kZWZhdWx0IiwibWVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBV0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDWEEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFB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QUE7UUFBS3ZJLFNBQVMsRUFBRXNCLE9BQU8sQ0FBQyxVQUFVLEVBQUV2QixXQUFXLENBQUM7UUFBQU4sUUFBQSxFQUFHSztNQUFRLENBQUEsQ0FBTztJQUFBLENBQUEsQ0FDM0U7RUFBQSxDQUFBLENBRUo7QUFDUixDQUFDO0FBQUMsSUFBQXFKLFFBQUEsR0FBQWhLLE9BQUEsMkJBRWEsSUFBQWlLLFdBQUksRUFBQ2xLLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQmlnTnVtYmVyIGZyb20gJ2JpZ251bWJlci5qcyc7XG5pbXBvcnQgeyBudW1lcmljRm9ybWF0dGVyIH0gZnJvbSAncmVhY3QtbnVtYmVyLWZvcm1hdCc7XG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJ3ByaW1lcmVhY3Qvc2tlbGV0b24nO1xuaW1wb3J0IFNwaW5uZXIgZnJvbSAnLi4vU3Bpbm5lcic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmNvbnN0IE1JTl9JTlBVVF9XSURUSCA9IDMzO1xuY29uc3Qgbm9ybWFsaXplTnVtYmVySW5wdXQgPSAodmFsKSA9PiB2YWxcbiAgICAucmVwbGFjZSgvW1xcdTMwMDJcXHVmZjBlXFx1ZmY2MV0vZywgJy4nKVxuICAgIC5yZXBsYWNlKC9bXFx1RkYwQ10vZywgJywnKTtcbmNvbnN0IGNsYW1wVmFsdWVJblJhbmdlID0gKHZhbCwgbWluLCBtYXgpID0+IHtcbiAgICBpZiAodmFsID09PSAnJyB8fCB2YWwgPT09ICctJyB8fCBpc05hTigrdmFsKSlcbiAgICAgICAgcmV0dXJuIHsgdmFsLCBjbGFtcGVkOiBmYWxzZSB9O1xuICAgIGxldCBjbGFtcGVkVmFsID0gdmFsO1xuICAgIGxldCBjbGFtcGVkID0gZmFsc2U7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2xhbXBlZFZhbCA9ICcnICsgbWluO1xuICAgICAgICAgICAgY2xhbXBlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiBtYXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXggPT09ICdiaWdpbnQnKSB7XG4gICAgICAgIGNvbnN0IG1heEJuID0gQmlnTnVtYmVyKG1heCk7XG4gICAgICAgIGlmIChiblZhbC5ndChtYXhCbikpIHtcbiAgICAgICAgICAgIGNsYW1wZWRWYWwgPSAnJyArIG1heDtcbiAgICAgICAgICAgIGNsYW1wZWQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7IHZhbDogY2xhbXBlZFZhbCwgY2xhbXBlZCB9O1xufTtcbmV4cG9ydCBjb25zdCBJbnB1dEFtb3VudCA9IHByb3BzID0+IHtcbiAgICBjb25zdCB7IHZhbHVlLCB0eXBlID0gJ3ByaW1hcnknLCBtYXhGcmFjdGlvbkRpZ2l0cywgY2hpbGRyZW4sIHBsYWNlaG9sZGVyID0gJzAnLCBtaW4sIG1heCwgXG4gICAgLy8gQHRzLWV4cGVjdC1lcnJvclxuICAgIHNpemUgPSAnbGFyZ2UnLCBmb290bm90ZSwgZm9vdG5vdGVDbHMsIGNsYXNzTmFtZSwgd3JhcHBlckNscywgbGFiZWxDbHMsIHByZWZpeENscyA9ICdpbnB1dC1hbW91bnQnLCBtZXNzYWdlQ2xzLCBpbnZhbGlkLCBuZWdhdGl2ZSwgcmVxdWlyZWQsIGxvYWRpbmcsIHN1Y2Nlc3MsIGRpc2FibGVkLCByZWFkT25seSwgbGFiZWwsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbWVzc2FnZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwidHlwZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJwbGFjZWhvbGRlclwiLCBcIm1pblwiLCBcIm1heFwiLCBcInNpemVcIiwgXCJmb290bm90ZVwiLCBcImZvb3Rub3RlQ2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcImludmFsaWRcIiwgXCJuZWdhdGl2ZVwiLCBcInJlcXVpcmVkXCIsIFwibG9hZGluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwibGFiZWxcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJjdXJyZW5jeVwiLCBcIm1lc3NhZ2VcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke3ByZWZpeENsc30tJHt0eXBlfWApO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IHByZXZWYWx1ZVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBwcmV2Rm9jdXNSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHBlbmRpbmdDYXJldFN5bmNSZWYgPSB1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IFtfdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFtfd2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlKE1JTl9JTlBVVF9XSURUSCk7XG4gICAgY29uc3QgW2lzTWF4V2lkdGgsIHNldElzTWF4V2lkdGhdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtpc0ZvY3VzLCBzZXRJc0ZvY3VzXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBmb3JtYXR0ZWRWYWx1ZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgICAgICByZXR1cm4gbnVtZXJpY0Zvcm1hdHRlcignJyArIChfdmFsdWUgPT0gbnVsbCA/ICcnIDogX3ZhbHVlKSwge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgfSk7XG4gICAgfSwgW192YWx1ZSwgbmVnYXRpdmVdKTtcbiAgICBjb25zdCBzY3JvbGxUb0VuZCA9IHVzZUNhbGxiYWNrKChzdGlja3kgPSBmYWxzZSkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGNvbnN0IGlucHV0ID0gaW5wdXRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKCFpbnB1dClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgbGVuID0gKF9hID0gaW5wdXQudmFsdWUpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5sZW5ndGg7XG4gICAgICAgIGNvbnN0IHBvc2l0aW9uID0gaW5wdXQuc2Nyb2xsTGVmdDtcbiAgICAgICAgY29uc3Qgc2hvdWxkVG9FbmQgPSAhc3RpY2t5O1xuICAgICAgICBjb25zdCBzdGFydCA9IHNob3VsZFRvRW5kID8gbGVuIDogaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQ7XG4gICAgICAgIGlucHV0LnNldFNlbGVjdGlvblJhbmdlKHN0YXJ0LCBzdGFydCk7XG4gICAgICAgIGlucHV0LnNjcm9sbExlZnQgPSBzaG91bGRUb0VuZCA/IGlucHV0LnNjcm9sbFdpZHRoIDogcG9zaXRpb247XG4gICAgICAgIGlucHV0LmZvY3VzKCk7XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mO1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZE9ubHkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgbGV0IHRydW5jYXRlZEZyYWN0aW9uID0gZmFsc2U7XG4gICAgICAgIGlmICh2YWwgIT0gbnVsbClcbiAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgY29uc3QgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlICYmICh2YWwgPT09IG51bGwgfHwgdmFsID09PSB2b2lkIDAgPyB2b2lkIDAgOiB2YWwuaW5jbHVkZXMoJy0nKSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGlzU3RhbmRhbG9uZU1pbnVzID0gbmVnYXRpdmUgJiYgdmFsID09PSAnLSc7XG4gICAgICAgIGlmICghaXNTdGFuZGFsb25lTWludXMgJiYgaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh2YWwgPT09IF92YWx1ZSAmJiAhaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9IHZhbC5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBgJHtpbnR9LiR7ZGVjaW1hbC5zbGljZSgwLCBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKX1gO1xuICAgICAgICAgICAgICAgIHRydW5jYXRlZEZyYWN0aW9uID0gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBsZXQgY2xhbXBlZEJ5UmFuZ2UgPSBmYWxzZTtcbiAgICAgICAgaWYgKCh0eXBlb2YgbWluID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWluID09PSAnYmlnaW50JykgfHwgKHR5cGVvZiBtYXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXggPT09ICdiaWdpbnQnKSkge1xuICAgICAgICAgICAgY29uc3QgcmVzID0gY2xhbXBWYWx1ZUluUmFuZ2UodmFsLCBtaW4sIG1heCk7XG4gICAgICAgICAgICB2YWwgPSByZXMudmFsO1xuICAgICAgICAgICAgY2xhbXBlZEJ5UmFuZ2UgPSByZXMuY2xhbXBlZDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3Qgc2VsZWN0aW9uU3RhcnQgPSAoX2EgPSBpbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvblN0YXJ0KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiAwO1xuICAgICAgICAgICAgY29uc3QgY3VycmVudFNsaWNlID0gKF9jID0gKF9iID0gZS50YXJnZXQudmFsdWUpID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5zbGljZSgwLCBzZWxlY3Rpb25TdGFydCkpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6ICcnO1xuICAgICAgICAgICAgY29uc3QgY2FyZXRSYXdMZW5ndGggPSBub3JtYWxpemVOdW1iZXJJbnB1dChjdXJyZW50U2xpY2UpLnNwbGl0KCcsJykuam9pbignJykubGVuZ3RoO1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0UmF3UG9zID0gTWF0aC5taW4oY2FyZXRSYXdMZW5ndGgsIHZhbC5sZW5ndGgpO1xuICAgICAgICAgICAgbGV0IGNhcmV0UG9zID0gZm9ybWF0dGVkTmV3VmFsLmxlbmd0aDtcbiAgICAgICAgICAgIGxldCBzZWVuID0gMDtcbiAgICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZm9ybWF0dGVkTmV3VmFsLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlZE5ld1ZhbFtpXSA9PT0gJywnKVxuICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBzZWVuICs9IDE7XG4gICAgICAgICAgICAgICAgaWYgKHNlZW4gPT09IHRhcmdldFJhd1Bvcykge1xuICAgICAgICAgICAgICAgICAgICBjYXJldFBvcyA9IGkgKyAxO1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGFyZ2V0UmF3UG9zID09PSAwKVxuICAgICAgICAgICAgICAgIGNhcmV0UG9zID0gMDtcbiAgICAgICAgICAgIGlmIChoYXNEZWNpbWFsUG9pbnQgJiYgIXRydW5jYXRlZEZyYWN0aW9uICYmIHRhcmdldFJhd1BvcyA9PT0gdmFsLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGNhcmV0UG9zID0gTWF0aC5taW4oZm9ybWF0dGVkTmV3VmFsLmxlbmd0aCArIDEsIGNhcmV0UG9zICsgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHRydW5jYXRlZEZyYWN0aW9uXG4gICAgICAgICAgICAgICAgPyBmb3JtYXR0ZWROZXdWYWwubGVuZ3RoXG4gICAgICAgICAgICAgICAgOiBjbGFtcGVkQnlSYW5nZVxuICAgICAgICAgICAgICAgICAgICA/IGZvcm1hdHRlZE5ld1ZhbC5sZW5ndGhcbiAgICAgICAgICAgICAgICAgICAgOiBjYXJldFBvcztcbiAgICAgICAgICAgIHBlbmRpbmdDYXJldFN5bmNSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmIChpc1N0YW5kYWxvbmVNaW51cykge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKCctJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfZiA9IChfZSA9IChfZCA9IHZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfZCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2RbMV0pID09PSBudWxsIHx8IF9lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfZS5sZW5ndGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIodmFsKTtcbiAgICAgICAgICAgICAgICBsZXQgbm9ybWFsaXplZCA9IGJuLnRvRml4ZWQoZGVjaW1hbHMpO1xuICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiB2YWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoZSk7XG4gICAgfSwgW29uQ2hhbmdlLCBfdmFsdWUsIHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG1pbiwgbWF4LCBuZWdhdGl2ZSwgZGlzYWJsZWQsIHJlYWRPbmx5XSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgICAgIGlmIChpc0ZvY3VzICYmXG4gICAgICAgICAgICAoX3ZhbHVlICE9PSBwcmV2VmFsdWVSZWYuY3VycmVudCB8fCAhcHJldkZvY3VzUmVmLmN1cnJlbnQpICYmXG4gICAgICAgICAgICBwZW5kaW5nQ2FyZXRTeW5jUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHNjcm9sbFRvRW5kKHRydWUpO1xuICAgICAgICAgICAgcGVuZGluZ0NhcmV0U3luY1JlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgcHJldlZhbHVlUmVmLmN1cnJlbnQgPSBfdmFsdWU7XG4gICAgICAgIHByZXZGb2N1c1JlZi5jdXJyZW50ID0gaXNGb2N1cztcbiAgICB9LCBbX3ZhbHVlLCBwcmVmaXgsIHN1ZmZpeCwgY3VycmVuY3ksIGlzRm9jdXMsIHNjcm9sbFRvRW5kXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gY2xlYXIgbmVnYXRpdmUgc2lnbiBpZiBub3QgYWxsb3dlZFxuICAgICAgICBpZiAobmVnYXRpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoX3ZhbHVlID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChfdmFsdWUgPT09ICctJykge1xuICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF92YWx1ZS5zdGFydHNXaXRoKCctJykpXG4gICAgICAgICAgICBzZXRWYWx1ZShfdmFsdWUuc2xpY2UoMSkpO1xuICAgIH0sIFtuZWdhdGl2ZSwgdmFsdWUsIF92YWx1ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGxldCBoYXNEZWNpbWFsUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBub3JtYWxpemVOdW1iZXJJbnB1dCh2YWwpLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgICAgICAgICAgaGFzRGVjaW1hbFBvaW50ID0gISF2YWwgJiYgdmFsLmVuZHNXaXRoKCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgICAgICAgICBpZiAoIW5lZ2F0aXZlKVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwucmVwbGFjZSgvLS9nLCAnJyk7XG4gICAgICAgICAgICAgICAgaWYgKG5lZ2F0aXZlICYmIHZhbCA9PT0gJy0nKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKCctJyk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKGlzTmFOKCt2YWwpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAodmFsICE9PSBudWxsICYmIHR5cGVvZiB2YWwgIT09ICdudW1iZXInICYmIHR5cGVvZiB2YWwgIT09ICdiaWdpbnQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoIW5lZ2F0aXZlKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICB2YWwgPSBNYXRoLmFicyh2YWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAodHlwZW9mIHZhbCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCB6ZXJvID0gQmlnSW50KDApO1xuICAgICAgICAgICAgICAgIHZhbCA9IHZhbCA8IHplcm8gPyAtdmFsIDogdmFsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicpICYmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICBjb25zdCBbaW50LCBkZWNpbWFsXSA9ICgnJyArIHZhbCkuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gaW50ICsgJy4nICsgZGVjaW1hbC5zbGljZSgwLCBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIHZhbCA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgIGNvbnN0IHJlcyA9IGNsYW1wVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgICAgICB2YWwgPSByZXMudmFsO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgPT09ICcnIHx8IHZhbCA9PSBudWxsKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHN0clZhbCA9ICcnICsgdmFsO1xuICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSBzdHJWYWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIoc3RyVmFsKTtcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgc3RyVmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNldFZhbHVlKGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgIH1cbiAgICB9LCBbdmFsdWUsIG1heEZyYWN0aW9uRGlnaXRzLCBtaW4sIG1heCwgbmVnYXRpdmVdKTtcbiAgICByZXR1cm4gX2pzeHMoXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3dyYXBwZXInLCBqb2luQ2xzKHdyYXBwZXJDbHMsIGludmFsaWQgJiYgY2xhc3NlcygnaW52YWxpZCcpLCBzdWNjZXNzICYmIGNsYXNzZXMoJ3N1Y2Nlc3MnKSwgZGlzYWJsZWQgJiYgY2xhc3NlcygnZGlzYWJsZWQnKSwgcmVhZE9ubHkgJiYgY2xhc3NlcygncmVhZG9ubHknKSwgX3ZhbHVlICYmIGNsYXNzZXMoJ2ZpbGxlZCcpKSksIGNoaWxkcmVuOiBbbGFiZWxcbiAgICAgICAgICAgICAgICA/IGxvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgPyBfanN4KFNrZWxldG9uLCB7IHdpZHRoOiAnNzJweCcsIGhlaWdodDogJzE4cHgnLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsLWxvYWRpbmcnKSB9KVxuICAgICAgICAgICAgICAgICAgICA6IF9qc3goXCJzcGFuXCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbCcsIGpvaW5DbHMocmVxdWlyZWQgJiYgY2xhc3NlcygnbGFiZWwtcmVxdWlyZWQnKSwgbGFiZWxDbHMpKSwgY2hpbGRyZW46IGxhYmVsIH0pXG4gICAgICAgICAgICAgICAgOiBudWxsLCBfanN4cyhcImRpdlwiLCB7IHJlZjogY29udGFpbmVyUmVmLCBjbGFzc05hbWU6IGNsYXNzZXModm9pZCAwLCBqb2luQ2xzKGNsYXNzTmFtZSwgaXNGb2N1cyAmJiBjbGFzc2VzKCdmb2N1cycpKSksIG9uQ2xpY2s6IChlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGUudGFyZ2V0IGluc3RhbmNlb2YgSFRNTElucHV0RWxlbWVudClcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmZvY3VzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc01heFdpZHRoKVxuICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsVG9FbmQoKTtcbiAgICAgICAgICAgICAgICB9LCBjaGlsZHJlbjogW3ByZWZpeCAmJiBfanN4KFwic3BhblwiLCB7IHJlZjogcHJlZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3ByZWZpeCcpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbGVtZW50JywgKCFpc0ZvY3VzICYmIGlzTWF4V2lkdGgpID8gY2xhc3NlcygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZWFkT25seTogcmVhZE9ubHksIGRpc2FibGVkOiBkaXNhYmxlZCwgc3R5bGU6IHsgJy0taW5wdXQtd2lkdGgnOiBgJHtfd2lkdGh9cHhgIH0sIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uRm9jdXM6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgb25CbHVyOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSB9KSwgY3VycmVuY3kgJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IGN1cnJlbmN5UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSwgbG9hZGluZyA/IF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeC1sb2FkaW5nJyksIHN0cm9rZVdpZHRoOiAnNCcgfSkgOiBzdWZmaXggPyBfanN4KFwic3BhblwiLCB7IHJlZjogc3VmZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcpLCBjaGlsZHJlbjogc3VmZml4IH0pIDogbnVsbCwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dOZWdhdGl2ZTogbmVnYXRpdmUsXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
422
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfanN4UnVudGltZSIsInJlcXVpcmUiLCJfcmVhY3QiLCJfYmlnbnVtYmVyIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsIl9yZWFjdE51bWJlckZvcm1hdCIsIl9za2VsZXRvbiIsIl9TcGlubmVyIiwiX2NsYXNzbmFtZXMiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSIsImUiLCJXZWFrTWFwIiwiciIsInQiLCJfX2VzTW9kdWxlIiwiX3R5cGVvZiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fcmVzdCIsInMiLCJwIiwicHJvdG90eXBlIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImxlbmd0aCIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwiQmlnTnVtYmVyIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsImV4cG9ydHMiLCJwcm9wcyIsInZhbHVlIiwiX3Byb3BzJHR5cGUiLCJ0eXBlIiwibWF4RnJhY3Rpb25EaWdpdHMiLCJjaGlsZHJlbiIsIl9wcm9wcyRwbGFjZWhvbGRlciIsInBsYWNlaG9sZGVyIiwiX3Byb3BzJHNpemUiLCJzaXplIiwiZm9vdG5vdGUiLCJmb290bm90ZUNscyIsImNsYXNzTmFtZSIsIndyYXBwZXJDbHMiLCJsYWJlbENscyIsIl9wcm9wcyRwcmVmaXhDbHMiLCJwcmVmaXhDbHMiLCJtZXNzYWdlQ2xzIiwicHJlZml4RWxlQ2xzIiwic3VmZml4RWxlQ2xzIiwiaW52YWxpZCIsIm5lZ2F0aXZlIiwicmVxdWlyZWQiLCJsb2FkaW5nIiwic3VjY2VzcyIsImRpc2FibGVkIiwicmVhZE9ubHkiLCJsYWJlbCIsInByZWZpeCIsInN1ZmZpeCIsImN1cnJlbmN5IiwibWVzc2FnZSIsIm9uQ2hhbmdlIiwib25CbHVyIiwib25Gb2N1cyIsInJlc3QiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsImNvbmNhdCIsImlucHV0UmVmIiwidXNlUmVmIiwiZmFrZUVsZVJlZiIsInByZWZpeFJlZiIsInN1ZmZpeFJlZiIsImN1cnJlbmN5UmVmIiwiY29udGFpbmVyUmVmIiwiaW5wdXRDYXJldFBvc2l0aW9uUmVmIiwiaWdub3JlU2VsZWN0UmVmIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiX3ZhbHVlIiwic2V0VmFsdWUiLCJfdXNlU3RhdGUzIiwiX3VzZVN0YXRlNCIsIl93aWR0aCIsInNldFdpZHRoIiwiX3VzZVN0YXRlNSIsIl91c2VTdGF0ZTYiLCJpc01heFdpZHRoIiwic2V0SXNNYXhXaWR0aCIsIl91c2VTdGF0ZTciLCJfdXNlU3RhdGU4IiwiaXNGb2N1cyIsInNldElzRm9jdXMiLCJmb3JtYXR0ZWRWYWx1ZSIsInVzZU1lbW8iLCJudW1lcmljRm9ybWF0dGVyIiwidGhvdXNhbmRTZXBhcmF0b3IiLCJhbGxvd05lZ2F0aXZlIiwidmFsdWVSZWYiLCJzY3JvbGxUb0VuZCIsInVzZUNhbGxiYWNrIiwic3RpY2t5IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX2EiLCJpbnB1dCIsImN1cnJlbnQiLCJsZW4iLCJwb3NpdGlvbiIsInNjcm9sbExlZnQiLCJzaG91bGRUb0VuZCIsInN0YXJ0Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJzY3JvbGxXaWR0aCIsImZvY3VzIiwiY2FsY0NhcmV0UG9zIiwib2Zmc2V0IiwiY3VyclBvcyIsIl9iIiwiX2MiLCJfdmFsdWVSZWYkY3VycmVudCIsImZvcm1hdHRlZE5ld1ZhbCIsImlzQWRkIiwiaWdub3JlT2xkUG9zIiwic2VsZWN0aW9uU3RhcnQiLCJvbGRQb3NWYWwiLCJzbGljZSIsIk1hdGgiLCJzcGxpdCIsImpvaW4iLCJwb3NWYWwiLCJyZWR1Y2UiLCJhY2MiLCJjaGFyIiwiaW5kIiwicHVzaCIsImhhbmRsZUNoYW5nZSIsIl92YWx1ZVJlZiRjdXJyZW50MiIsInRhcmdldCIsImhhc0RlY2ltYWxQb2ludCIsImVuZHNXaXRoIiwiaW5jbHVkZXMiLCJpc1N0YW5kYWxvbmVNaW51cyIsIl92YWwkc3BsaXQiLCJfdmFsJHNwbGl0MiIsImludCIsImRlY2ltYWwiLCJOdW1iZXIiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQyIiwib2xkSW50Iiwib2xkRGVjaW1hbCIsImRlY2ltYWxzIiwibWF0Y2giLCJibiIsIm5vcm1hbGl6ZWQiLCJ0b0ZpeGVkIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJpc1plcm8iLCJoYW5kbGVTZWxlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJfZCIsIl9lIiwiX2YiLCJfZyIsIl9oIiwiX2oiLCJfayIsImNvbnRhaW5lcldpZHRoIiwib2Zmc2V0V2lkdGgiLCJwcmVmaXhXaWR0aCIsInN1ZmZpeFdpZHRoIiwiY3VycmVuY3lXaWR0aCIsImZha2VXaWR0aCIsImdhcFdpZHRoIiwibWF4V2lkdGgiLCJpc01heCIsInVzZUVmZmVjdCIsIl92YWx1ZVJlZiRjdXJyZW50MyIsImFicyIsInplcm8iLCJCaWdJbnQiLCJfc3BsaXQiLCJfc3BsaXQyIiwiX2Zvcm1hdHRlZFZhbHVlJHNwbGl0MyIsIl9mb3JtYXR0ZWRWYWx1ZSRzcGxpdDQiLCJzdHJWYWwiLCJyZXMiLCJvcmlnaW5PZmZzZXQiLCJpc0xpa2VLZXlib2FyZElucHV0IiwiZm9ybWF0dGVkT2Zmc2V0IiwiY29uc29sZSIsImluZm8iLCJfanN4cyIsImpvaW5DbHMiLCJfanN4IiwiU2tlbGV0b24iLCJ3aWR0aCIsImhlaWdodCIsInJlZiIsIm9uQ2xpY2siLCJIVE1MSW5wdXRFbGVtZW50IiwiYXNzaWduIiwic3R5bGUiLCJvblNlbGVjdCIsIlNwaW5uZXIiLCJzdHJva2VXaWR0aCIsInN0b3BQcm9wYWdhdGlvbiIsIl9kZWZhdWx0IiwibWVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBV0EsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDWEEsSUFBQUMsTUFBQSxHQUFBRCxPQUFBO0FBQ0EsSUFBQUUsVUFBQSxHQUFBQyxzQkFBQSxDQUFBSCxPQUFBO0FBQ0EsSUFBQUksa0JBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFNBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLFFBQUEsR0FBQUgsc0JBQUEsQ0FBQUgsT0FBQTtBQUNBLElBQUFPLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQVIsT0FBQTtBQUF3RSxTQUFBUyx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUYsd0JBQUFFLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxnQkFBQUssT0FBQSxDQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFB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UUFDRUksR0FBRyxFQUFFcEksVUFBVTtRQUNmN0IsU0FBUyxFQUFFd0IsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUMxQjBJLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFMU4sQ0FBQztVQUFBLE9BQUlBLENBQUMsQ0FBQ2lPLGVBQWUsQ0FBQSxDQUFFO1FBQUE7UUFBQWhMLFFBQUEsRUFFL0I2RDtNQUFjLENBQUEsQ0FDWDtJQUFBLENBQUEsQ0FDSCxFQUVKLENBQUNuQyxPQUFPLElBQUlyQixRQUFRLEtBQUssSUFBQTZKLGdCQUFBLEVBQUEsS0FBQSxFQUFBO01BQUszSixTQUFTLEVBQUV3QixPQUFPLENBQUMsT0FBTyxDQUFDO01BQUEvQixRQUFBLEVBQUEsQ0FDdEQwQixPQUFPLElBQUksSUFBQTBJLGVBQUEsRUFBQSxLQUFBLEVBQUE7UUFBSzdKLFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxTQUFTLEVBQUVuQixVQUFVLENBQUM7UUFBQVosUUFBQSxFQUFHMEI7TUFBTyxDQUFBLENBQU8sRUFDMUVyQixRQUFRLElBQUksSUFBQStKLGVBQUEsRUFBQSxLQUFBLEVBQUE7UUFBSzdKLFNBQVMsRUFBRXdCLE9BQU8sQ0FBQyxVQUFVLEVBQUV6QixXQUFXLENBQUM7UUFBQU4sUUFBQSxFQUFHSztNQUFRLENBQUEsQ0FBTztJQUFBLENBQUEsQ0FDM0U7RUFBQSxDQUFBLENBRUo7QUFDUixDQUFDO0FBQUMsSUFBQTRLLFFBQUEsR0FBQXZMLE9BQUEsMkJBRWEsSUFBQXdMLFdBQUksRUFBQ3pMLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAncHJpbWVyZWFjdC9za2VsZXRvbic7XG5pbXBvcnQgU3Bpbm5lciBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5jb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKC9bXFx1MzAwMlxcdWZmMGVcXHVmZjYxXS9nLCAnLicpXG4gICAgLnJlcGxhY2UoL1tcXHVGRjBDXS9nLCAnLCcpO1xuY29uc3QgY2FsY1ZhbHVlSW5SYW5nZSA9ICh2YWwsIG1pbiwgbWF4KSA9PiB7XG4gICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09PSAnLScgfHwgaXNOYU4oK3ZhbCkpXG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgbGV0IGNhbGNWYWwgPSB2YWw7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWluO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4ID09PSAnYmlnaW50Jykge1xuICAgICAgICBjb25zdCBtYXhCbiA9IEJpZ051bWJlcihtYXgpO1xuICAgICAgICBpZiAoYm5WYWwuZ3QobWF4Qm4pKSB7XG4gICAgICAgICAgICBjYWxjVmFsID0gJycgKyBtYXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbGNWYWw7XG59O1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUgPSAncHJpbWFyeScsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgcGxhY2Vob2xkZXIgPSAnMCcsIG1pbiwgbWF4LCBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgc2l6ZSA9ICdsYXJnZScsIGZvb3Rub3RlLCBmb290bm90ZUNscywgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBsYWJlbENscywgcHJlZml4Q2xzID0gJ2lucHV0LWFtb3VudCcsIG1lc3NhZ2VDbHMsIHByZWZpeEVsZUNscywgc3VmZml4RWxlQ2xzLCBpbnZhbGlkLCBuZWdhdGl2ZSwgcmVxdWlyZWQsIGxvYWRpbmcsIHN1Y2Nlc3MsIGRpc2FibGVkLCByZWFkT25seSwgbGFiZWwsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbWVzc2FnZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwidHlwZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJwbGFjZWhvbGRlclwiLCBcIm1pblwiLCBcIm1heFwiLCBcInNpemVcIiwgXCJmb290bm90ZVwiLCBcImZvb3Rub3RlQ2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcInByZWZpeEVsZUNsc1wiLCBcInN1ZmZpeEVsZUNsc1wiLCBcImludmFsaWRcIiwgXCJuZWdhdGl2ZVwiLCBcInJlcXVpcmVkXCIsIFwibG9hZGluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwibGFiZWxcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJjdXJyZW5jeVwiLCBcIm1lc3NhZ2VcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke3ByZWZpeENsc30tJHt0eXBlfWApO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGlnbm9yZVNlbGVjdFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW193aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUoTUlOX0lOUFVUX1dJRFRIKTtcbiAgICBjb25zdCBbaXNNYXhXaWR0aCwgc2V0SXNNYXhXaWR0aF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlLCBuZWdhdGl2ZV0pO1xuICAgIGNvbnN0IHZhbHVlUmVmID0gdXNlUmVmKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIF92YWx1ZSxcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgIG1pbixcbiAgICAgICAgbWF4LFxuICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHMsXG4gICAgfSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBjYWxjQ2FyZXRQb3MgPSB1c2VDYWxsYmFjaygodmFsLCBvZmZzZXQgPSAwLCBjdXJyUG9zKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgeyBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaXNBZGQgPSB2YWwubGVuZ3RoID4gKChfYSA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApO1xuICAgICAgICAgICAgY29uc3QgaWdub3JlT2xkUG9zID0gaXNBZGQgPyB2YWwubGVuZ3RoIC0gKChfYiA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDApID4gMSA6IGZhbHNlO1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gKF9jID0gY3VyclBvcyAhPT0gbnVsbCAmJiBjdXJyUG9zICE9PSB2b2lkIDAgPyBjdXJyUG9zIDogaW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICAgICAgICAgIGlmICghaWdub3JlT2xkUG9zKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkUG9zVmFsID0gZm9ybWF0dGVkVmFsdWUuc2xpY2UoMCwgTWF0aC5tYXgoKHBvc2l0aW9uIC0gKGlzQWRkID8gMSA6IC0xKSksIDApKTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IG9sZFBvc1ZhbC5zcGxpdCgnLCcpLmpvaW4oJycpLmxlbmd0aCArIChpc0FkZCA/IDEgOiAtMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwb3NWYWwgPSB2YWwuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcsJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Muam9pbignJykgPT09IHBvc1ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGluZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHBvc2l0aW9uICsgb2Zmc2V0O1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZE9ubHkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIF92YWx1ZSwgZm9ybWF0dGVkVmFsdWUsIG1pbiwgbWF4LCBuZWdhdGl2ZSwgbWF4RnJhY3Rpb25EaWdpdHMgfSA9IHZhbHVlUmVmLmN1cnJlbnQ7XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKVxuICAgICAgICAgICAgdmFsID0gbm9ybWFsaXplTnVtYmVySW5wdXQodmFsKS5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICBjb25zdCBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGlmICghbmVnYXRpdmUgJiYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbC5pbmNsdWRlcygnLScpKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgaXNTdGFuZGFsb25lTWludXMgPSBuZWdhdGl2ZSAmJiB2YWwgPT09ICctJztcbiAgICAgICAgaWYgKCFpc1N0YW5kYWxvbmVNaW51cyAmJiBpc05hTigrdmFsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHZhbCA9PT0gX3ZhbHVlICYmICFoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gdmFsLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbCAhPSBudWxsICYmIGRlY2ltYWwubGVuZ3RoID4gTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtvbGRJbnQsIG9sZERlY2ltYWxdID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAob2xkSW50LnNwbGl0KCcsJykuam9pbignJykgPT0gaW50KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7aW50fS4ke29sZERlY2ltYWx9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgaWYgKCh0eXBlb2YgbWluID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWluID09PSAnYmlnaW50JykgfHwgKHR5cGVvZiBtYXggPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXggPT09ICdiaWdpbnQnKSkge1xuICAgICAgICAgICAgICAgIHZhbCA9IGNhbGNWYWx1ZUluUmFuZ2UodmFsLCBtaW4sIG1heCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodmFsID09PSAnJykge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNTdGFuZGFsb25lTWludXMpIHtcbiAgICAgICAgICAgICAgICBzZXRWYWx1ZSgnLScpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSB2YWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgICAgIGNvbnN0IGJuID0gQmlnTnVtYmVyKHZhbCk7XG4gICAgICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgbm9ybWFsaXplZCA9IG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLScpID8gbm9ybWFsaXplZCA6IGAtJHtub3JtYWxpemVkfWA7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHNldFZhbHVlKGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjYWxjQ2FyZXRQb3ModmFsLCBoYXNEZWNpbWFsUG9pbnQgPyAyIDogMCk7XG4gICAgICAgICAgICBpZ25vcmVTZWxlY3RSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgb25DaGFuZ2UgPT09IG51bGwgfHwgb25DaGFuZ2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQ2hhbmdlKGUsIHZhbCk7XG4gICAgfSwgW29uQ2hhbmdlLCBkaXNhYmxlZCwgcmVhZE9ubHldKTtcbiAgICBjb25zdCBoYW5kbGVTZWxlY3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgICAgIHZhciBfYTtcbiAgICAgICAgaWYgKGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgICBpZ25vcmVTZWxlY3RSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGN1cnJQb3MgPSAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Euc2VsZWN0aW9uU3RhcnQ7XG4gICAgICAgIGlmICh0eXBlb2YgY3VyclBvcyA9PT0gJ251bWJlcicpXG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IGN1cnJQb3M7XG4gICAgfSwgW10pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2UsIF9mLCBfZywgX2gsIF9qLCBfaztcbiAgICAgICAgY29uc3QgY29udGFpbmVyV2lkdGggPSAoX2IgPSAoX2EgPSBjb250YWluZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiBNSU5fSU5QVVRfV0lEVEg7XG4gICAgICAgIGNvbnN0IHByZWZpeFdpZHRoID0gKF9kID0gKF9jID0gcHJlZml4UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMDtcbiAgICAgICAgY29uc3Qgc3VmZml4V2lkdGggPSAoX2YgPSAoX2UgPSBzdWZmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2UgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9lLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZiAhPT0gdm9pZCAwID8gX2YgOiAwO1xuICAgICAgICBjb25zdCBjdXJyZW5jeVdpZHRoID0gKF9oID0gKF9nID0gY3VycmVuY3lSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2cgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfaCAhPT0gdm9pZCAwID8gX2ggOiAwO1xuICAgICAgICBjb25zdCBmYWtlV2lkdGggPSAoX2sgPSAoX2ogPSBmYWtlRWxlUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9qID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfai5vZmZzZXRXaWR0aCkgIT09IG51bGwgJiYgX2sgIT09IHZvaWQgMCA/IF9rIDogMDtcbiAgICAgICAgY29uc3QgZ2FwV2lkdGggPSBwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoXG4gICAgICAgICAgICA/IDI0XG4gICAgICAgICAgICA6IChwcmVmaXhXaWR0aCAmJiBzdWZmaXhXaWR0aCkgfHwgKHByZWZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpIHx8IChzdWZmaXhXaWR0aCAmJiBjdXJyZW5jeVdpZHRoKVxuICAgICAgICAgICAgICAgID8gMTZcbiAgICAgICAgICAgICAgICA6IHByZWZpeFdpZHRoIHx8IHN1ZmZpeFdpZHRoIHx8IGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgICAgICAgICAgPyA4XG4gICAgICAgICAgICAgICAgICAgIDogMDtcbiAgICAgICAgY29uc3QgbWF4V2lkdGggPSBjb250YWluZXJXaWR0aCAtIHByZWZpeFdpZHRoIC0gc3VmZml4V2lkdGggLSBjdXJyZW5jeVdpZHRoIC0gZ2FwV2lkdGg7XG4gICAgICAgIGNvbnN0IGlzTWF4ID0gZmFrZVdpZHRoID49IG1heFdpZHRoO1xuICAgICAgICBzZXRXaWR0aChNYXRoLm1pbihtYXhXaWR0aCwgTWF0aC5tYXgoZmFrZVdpZHRoLCBNSU5fSU5QVVRfV0lEVEgpKSk7XG4gICAgICAgIHNldElzTWF4V2lkdGgoaXNNYXgpO1xuICAgICAgICBpZiAoaXNGb2N1cylcbiAgICAgICAgICAgIHNjcm9sbFRvRW5kKHRydWUpO1xuICAgIH0sIFtfdmFsdWUsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgaXNGb2N1c10pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIC8vIGNsZWFyIG5lZ2F0aXZlIHNpZ24gaWYgbm90IGFsbG93ZWRcbiAgICAgICAgaWYgKG5lZ2F0aXZlKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKF92YWx1ZSA9PSBudWxsKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoX3ZhbHVlID09PSAnLScpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChfdmFsdWUuc3RhcnRzV2l0aCgnLScpKVxuICAgICAgICAgICAgc2V0VmFsdWUoX3ZhbHVlLnNsaWNlKDEpKTtcbiAgICB9LCBbbmVnYXRpdmUsIHZhbHVlLCBfdmFsdWVdKTtcbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICB2YXIgX2EsIF9iLCBfYywgX2QsIF9lO1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGxldCBoYXNEZWNpbWFsUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgeyBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmICghbmVnYXRpdmUpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsID09PSAnLScpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoJy0nKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghbmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguYWJzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsIDwgemVybyA/IC12YWwgOiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cykpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbb2xkSW50LCBvbGREZWNpbWFsXSA9IGZvcm1hdHRlZFZhbHVlLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKG9sZEludC5zcGxpdCgnLCcpLmpvaW4oJycpID09IGludClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHZhbCA9IGAke2ludH0uJHtvbGREZWNpbWFsfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc3RyVmFsID0gJycgKyB2YWw7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9IHN0clZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICBjb25zdCBibiA9IEJpZ051bWJlcihzdHJWYWwpO1xuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiBzdHJWYWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy0nKSA/IG5vcm1hbGl6ZWQgOiBgLSR7bm9ybWFsaXplZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzID0gYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpO1xuICAgICAgICAgICAgc2V0VmFsdWUocmVzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmlnaW5PZmZzZXQgPSAoKF9kID0gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFsLmxlbmd0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMCkgLSAoKF9lID0gX3ZhbHVlID09PSBudWxsIHx8IF92YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZhbHVlLmxlbmd0aCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMCk7XG4gICAgICAgIGNvbnN0IGlzTGlrZUtleWJvYXJkSW5wdXQgPSBvcmlnaW5PZmZzZXQgPT09IDEgfHwgb3JpZ2luT2Zmc2V0ID09PSAtMTtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkT2Zmc2V0ID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwgIT09IG51bGwgJiYgdmFsICE9PSB2b2lkIDAgPyB2YWwgOiAnJywge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgfSkubGVuZ3RoIC0gZm9ybWF0dGVkVmFsdWUubGVuZ3RoO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBNYXRoLm1heCghaXNMaWtlS2V5Ym9hcmRJbnB1dCA/IGZvcm1hdHRlZE9mZnNldCA6IG9yaWdpbk9mZnNldCwgMCkgKyAoaGFzRGVjaW1hbFBvaW50ID8gb3JpZ2luT2Zmc2V0IDwgMCA/IDMgOiAyIDogMCk7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnb2Zmc2V0Jywgb2Zmc2V0KTtcbiAgICAgICAgY29uc29sZS5pbmZvKCdvcmlnaW5PZmZzZXQnLCBvcmlnaW5PZmZzZXQpO1xuICAgICAgICBjb25zb2xlLmluZm8oJ2Zvcm1hdHRlZE9mZnNldCcsIGZvcm1hdHRlZE9mZnNldCk7XG4gICAgICAgIGNvbnNvbGUuaW5mbygnaXNMaWtlS2V5Ym9hcmRJbnB1dCcsIGlzTGlrZUtleWJvYXJkSW5wdXQpO1xuICAgICAgICBjb25zb2xlLmluZm8oJ2lucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50JywgaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQpO1xuICAgICAgICBjYWxjQ2FyZXRQb3ModmFsICE9PSBudWxsICYmIHZhbCAhPT0gdm9pZCAwID8gdmFsIDogJycsIG9mZnNldCwgTWF0aC5tYXgoaW5wdXRDYXJldFBvc2l0aW9uUmVmLmN1cnJlbnQsIDApKTtcbiAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgIH0sIFt2YWx1ZSwgbWF4RnJhY3Rpb25EaWdpdHMsIG1pbiwgbWF4LCBuZWdhdGl2ZV0pO1xuICAgIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIF92YWx1ZSxcbiAgICAgICAgICAgIGZvcm1hdHRlZFZhbHVlLFxuICAgICAgICAgICAgbWluLFxuICAgICAgICAgICAgbWF4LFxuICAgICAgICAgICAgbmVnYXRpdmUsXG4gICAgICAgICAgICBtYXhGcmFjdGlvbkRpZ2l0c1xuICAgICAgICB9O1xuICAgIH0sIFtfdmFsdWUsIHZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWluLCBtYXgsIG5lZ2F0aXZlLCBtYXhGcmFjdGlvbkRpZ2l0c10pO1xuICAgIHJldHVybiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3Nlcygnd3JhcHBlcicsIGpvaW5DbHMod3JhcHBlckNscywgY2xhc3NlcyhzaXplKSwgaW52YWxpZCAmJiBjbGFzc2VzKCdpbnZhbGlkJyksIHN1Y2Nlc3MgJiYgY2xhc3Nlcygnc3VjY2VzcycpLCBkaXNhYmxlZCAmJiBjbGFzc2VzKCdkaXNhYmxlZCcpLCByZWFkT25seSAmJiBjbGFzc2VzKCdyZWFkb25seScpLCBfdmFsdWUgJiYgY2xhc3NlcygnZmlsbGVkJykpKSwgY2hpbGRyZW46IFtsYWJlbFxuICAgICAgICAgICAgICAgID8gbG9hZGluZ1xuICAgICAgICAgICAgICAgICAgICA/IF9qc3goU2tlbGV0b24sIHsgd2lkdGg6ICc3MnB4JywgaGVpZ2h0OiAnMThweCcsIGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwtbG9hZGluZycpIH0pXG4gICAgICAgICAgICAgICAgICAgIDogX2pzeChcInNwYW5cIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2xhYmVsJywgam9pbkNscyhyZXF1aXJlZCAmJiBjbGFzc2VzKCdsYWJlbC1yZXF1aXJlZCcpLCBsYWJlbENscykpLCBjaGlsZHJlbjogbGFiZWwgfSlcbiAgICAgICAgICAgICAgICA6IG51bGwsIF9qc3hzKFwiZGl2XCIsIHsgcmVmOiBjb250YWluZXJSZWYsIGNsYXNzTmFtZTogY2xhc3Nlcyh2b2lkIDAsIGpvaW5DbHMoY2xhc3NOYW1lLCBpc0ZvY3VzICYmIGNsYXNzZXMoJ2ZvY3VzJykpKSwgb25DbGljazogKGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZS50YXJnZXQgaW5zdGFuY2VvZiBIVE1MSW5wdXRFbGVtZW50KVxuICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAgICAoX2EgPSBpbnB1dFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuZm9jdXMoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlzTWF4V2lkdGgpXG4gICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGxUb0VuZCgpO1xuICAgICAgICAgICAgICAgIH0sIGNoaWxkcmVuOiBbcHJlZml4ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBwcmVmaXhSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygncHJlZml4JywgcHJlZml4RWxlQ2xzKSwgY2hpbGRyZW46IHByZWZpeCB9KSwgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZWxlbWVudCcsICghaXNGb2N1cyAmJiBpc01heFdpZHRoKSA/IGNsYXNzZXMoJ2VsZW1lbnQtbWF4JykgOiAnJyksIGNoaWxkcmVuOiBfanN4KFwiaW5wdXRcIiwgT2JqZWN0LmFzc2lnbih7fSwgcmVzdCwgeyByZWY6IGlucHV0UmVmLCB2YWx1ZTogZm9ybWF0dGVkVmFsdWUsIHBsYWNlaG9sZGVyOiBwbGFjZWhvbGRlciwgcmVhZE9ubHk6IHJlYWRPbmx5LCBkaXNhYmxlZDogZGlzYWJsZWQsIHN0eWxlOiB7ICctLWlucHV0LXdpZHRoJzogYCR7X3dpZHRofXB4YCB9LCBvbkNoYW5nZTogaGFuZGxlQ2hhbmdlLCBvblNlbGVjdDogaGFuZGxlU2VsZWN0LCBvbkZvY3VzOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25Gb2N1cyA9PT0gbnVsbCB8fCBvbkZvY3VzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkZvY3VzKGUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0sIG9uQmx1cjogZSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldElzRm9jdXMoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkJsdXIgPT09IG51bGwgfHwgb25CbHVyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkJsdXIoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSB9KSkgfSksIGN1cnJlbmN5ICYmIF9qc3goXCJzcGFuXCIsIHsgcmVmOiBjdXJyZW5jeVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdjdXJyZW5jeScpLCBjaGlsZHJlbjogY3VycmVuY3kgfSksIGxvYWRpbmcgPyBfanN4KFNwaW5uZXIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgtbG9hZGluZycpLCBzdHJva2VXaWR0aDogJzQnIH0pIDogc3VmZml4ID8gX2pzeChcInNwYW5cIiwgeyByZWY6IHN1ZmZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdzdWZmaXgnLCBzdWZmaXhFbGVDbHMpLCBjaGlsZHJlbjogc3VmZml4IH0pIDogbnVsbCwgX2pzeChcInNwYW5cIiwgeyByZWY6IGZha2VFbGVSZWYsIGNsYXNzTmFtZTogY2xhc3NlcygnZmFrZScpLCBvbkNsaWNrOiBlID0+IGUuc3RvcFByb3BhZ2F0aW9uKCksIGNoaWxkcmVuOiBmb3JtYXR0ZWRWYWx1ZSB9KV0gfSksIChtZXNzYWdlIHx8IGZvb3Rub3RlKSAmJiBfanN4cyhcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZXh0cmEnKSwgY2hpbGRyZW46IFttZXNzYWdlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ21lc3NhZ2UnLCBtZXNzYWdlQ2xzKSwgY2hpbGRyZW46IG1lc3NhZ2UgfSksIGZvb3Rub3RlICYmIF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2Zvb3Rub3RlJywgZm9vdG5vdGVDbHMpLCBjaGlsZHJlbjogZm9vdG5vdGUgfSldIH0pXSB9KTtcbn07XG5leHBvcnQgZGVmYXVsdCBtZW1vKElucHV0QW1vdW50KTsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -12,6 +12,8 @@ export interface InputAmountBaseProps {
12
12
  wrapperCls?: string;
13
13
  labelCls?: string;
14
14
  messageCls?: string;
15
+ prefixEleCls?: string;
16
+ suffixEleCls?: string;
15
17
  invalid?: boolean;
16
18
  negative?: boolean;
17
19
  required?: boolean;
@@ -25,7 +27,7 @@ export interface InputAmountBaseProps {
25
27
  suffix?: ReactNode;
26
28
  message?: ReactNode;
27
29
  onClick?: (e: MouseEvent<HTMLInputElement>) => void;
28
- onChange?: (e: ChangeEvent<HTMLInputElement>) => void;
30
+ onChange?: (e: ChangeEvent<HTMLInputElement>, value: string) => void;
29
31
  onKeyDown?: (e: KeyboardEvent<HTMLInputElement>) => void;
30
32
  onKeyUp?: (e: KeyboardEvent<HTMLInputElement>) => void;
31
33
  onFocus?: (e: FocusEvent<HTMLInputElement>) => void;