@1money/react-ui 1.14.0-alpha.25 → 1.14.0-alpha.26

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.
@@ -140,11 +140,12 @@ export var InputAmount = function InputAmount(props) {
140
140
  allowNegative: negative
141
141
  });
142
142
  var isAdd = val.length > ((_a = _value2 === null || _value2 === void 0 ? void 0 : _value2.length) !== null && _a !== void 0 ? _a : 0);
143
+ var directionOffset = isAdd ? 1 : -1;
143
144
  var ignoreOldPos = isAdd ? val.length - ((_b = _value2 === null || _value2 === void 0 ? void 0 : _value2.length) !== null && _b !== void 0 ? _b : 0) > 1 : false;
144
- var position = (_c = currPos !== null && currPos !== void 0 ? currPos : inputRef.current.selectionStart) !== null && _c !== void 0 ? _c : 0;
145
+ var position = (_c = currPos !== null && currPos !== void 0 ? currPos : inputRef.current.selectionEnd) !== null && _c !== void 0 ? _c : 0;
145
146
  if (!ignoreOldPos) {
146
- var oldPosVal = _formattedValue.slice(0, Math.max(position - (isAdd ? 1 : -1), 0));
147
- position = oldPosVal.split(',').join('').length + (isAdd ? 1 : -1);
147
+ var oldPosVal = _formattedValue.slice(0, Math.max(position, 0));
148
+ position = oldPosVal.split(',').join('').length + directionOffset;
148
149
  }
149
150
  var posVal = val.slice(0, position);
150
151
  formattedNewVal.split('').reduce(function (acc, _char, ind) {
@@ -185,12 +186,10 @@ export var InputAmount = function InputAmount(props) {
185
186
  var maxDecimals = Number(maxFractionDigits);
186
187
  if (decimal != null && decimal.length > maxDecimals) {
187
188
  var _formattedValue$split = formattedValue.split('.'),
188
- _formattedValue$split2 = _slicedToArray(_formattedValue$split, 2),
189
- oldInt = _formattedValue$split2[0],
190
- _formattedValue$split3 = _formattedValue$split2[1],
191
- oldDecimal = _formattedValue$split3 === void 0 ? decimal.slice(0, maxDecimals) : _formattedValue$split3;
189
+ _formattedValue$split2 = _slicedToArray(_formattedValue$split, 1),
190
+ oldInt = _formattedValue$split2[0];
192
191
  if (oldInt.split(',').join('') == _int) return;
193
- val = "".concat(_int, ".").concat(oldDecimal);
192
+ val = "".concat(_int, ".").concat(decimal.slice(0, maxDecimals));
194
193
  }
195
194
  }
196
195
  if (typeof min === 'number' || typeof min === 'bigint' || typeof max === 'number' || typeof max === 'bigint') {
@@ -207,7 +206,7 @@ export var InputAmount = function InputAmount(props) {
207
206
  }
208
207
  if (typeof value === 'undefined') {
209
208
  setValue(val === '' ? null : val);
210
- calcCaretPos(val, hasDecimalPoint ? 2 : 0);
209
+ calcCaretPos(val, hasDecimalPoint ? 3 : 0);
211
210
  ignoreSelectRef.current = true;
212
211
  } else {
213
212
  e.stopPropagation();
@@ -221,7 +220,7 @@ export var InputAmount = function InputAmount(props) {
221
220
  ignoreSelectRef.current = false;
222
221
  return;
223
222
  }
224
- var currPos = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.selectionStart;
223
+ var currPos = (_a = inputRef.current) === null || _a === void 0 ? void 0 : _a.selectionEnd;
225
224
  if (typeof currPos === 'number') inputCaretPositionRef.current = currPos;
226
225
  }, []);
227
226
  useLayoutEffect(function () {
@@ -250,12 +249,11 @@ export var InputAmount = function InputAmount(props) {
250
249
  if (_value.startsWith('-')) setValue(_value.slice(1));
251
250
  }, [negative, value, _value]);
252
251
  useLayoutEffect(function () {
253
- var _a, _b, _c, _d, _e;
252
+ var _a, _b, _c;
254
253
  var val = value;
255
254
  var hasDecimalPoint = false;
256
255
  var _valueRef$current3 = valueRef.current,
257
256
  _value = _valueRef$current3._value,
258
- previousValue = _valueRef$current3.value,
259
257
  formattedValue = _valueRef$current3.formattedValue;
260
258
  if (typeof val === 'string') {
261
259
  if (val === '') {
@@ -287,13 +285,11 @@ export var InputAmount = function InputAmount(props) {
287
285
  decimal = _split2[1];
288
286
  var maxDecimals = Number(maxFractionDigits);
289
287
  if (decimal != null && decimal.length > maxDecimals) {
290
- var _formattedValue$split4 = formattedValue.split('.'),
291
- _formattedValue$split5 = _slicedToArray(_formattedValue$split4, 2),
292
- oldInt = _formattedValue$split5[0],
293
- _formattedValue$split6 = _formattedValue$split5[1],
294
- oldDecimal = _formattedValue$split6 === void 0 ? decimal.slice(0, maxDecimals) : _formattedValue$split6;
288
+ var _formattedValue$split3 = formattedValue.split('.'),
289
+ _formattedValue$split4 = _slicedToArray(_formattedValue$split3, 1),
290
+ oldInt = _formattedValue$split4[0];
295
291
  if (oldInt.split(',').join('') == _int2) return;
296
- val = "".concat(_int2, ".").concat(oldDecimal);
292
+ val = "".concat(_int2, ".").concat(decimal.slice(0, maxDecimals));
297
293
  }
298
294
  }
299
295
  if (typeof val === 'string' || typeof val === 'number' || typeof val === 'bigint') {
@@ -312,14 +308,7 @@ export var InputAmount = function InputAmount(props) {
312
308
  var res = "".concat(normalized).concat(hasDecimalPoint ? '.' : '').trim();
313
309
  setValue(res);
314
310
  }
315
- 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);
316
- var isLikeKeyboardInput = originOffset === 1 || originOffset === -1;
317
- var formattedOffset = numericFormatter(val !== null && val !== void 0 ? val : '', {
318
- thousandSeparator: true,
319
- allowNegative: negative
320
- }).length - formattedValue.length;
321
- var offset = Math.max(!isLikeKeyboardInput ? formattedOffset : originOffset, 0) + (hasDecimalPoint ? originOffset < 0 ? 3 : 2 : 0);
322
- calcCaretPos(val !== null && val !== void 0 ? val : '', offset, Math.max(inputCaretPositionRef.current, 0));
311
+ calcCaretPos(val !== null && val !== void 0 ? val : '', hasDecimalPoint ? 3 : 0, Math.max(inputCaretPositionRef.current, 0));
323
312
  ignoreSelectRef.current = true;
324
313
  }, [value, maxFractionDigits, min, max, negative]);
325
314
  useEffect(function () {
@@ -409,4 +398,4 @@ export var InputAmount = function InputAmount(props) {
409
398
  });
410
399
  };
411
400
  export default /*#__PURE__*/memo(InputAmount);
412
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiU2tlbGV0b24iLCJTcGlubmVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsInByb3BzIiwidmFsdWUiLCJfcHJvcHMkdHlwZSIsInR5cGUiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsImNoaWxkcmVuIiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJmb290bm90ZSIsImZvb3Rub3RlQ2xzIiwiY2xhc3NOYW1lIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJwcmVmaXhFbGVDbHMiLCJzdWZmaXhFbGVDbHMiLCJpbnZhbGlkIiwibmVnYXRpdmUiLCJyZXF1aXJlZCIsImxvYWRpbmciLCJzdWNjZXNzIiwiZGlzYWJsZWQiLCJyZWFkT25seSIsImxhYmVsIiwicHJlZml4Iiwic3VmZml4IiwiY3VycmVuY3kiLCJtZXNzYWdlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJjb25jYXQiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsImlnbm9yZVNlbGVjdFJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJ2YWx1ZVJlZiIsInNjcm9sbFRvRW5kIiwic3RpY2t5IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX2EiLCJpbnB1dCIsImN1cnJlbnQiLCJsZW4iLCJwb3NpdGlvbiIsInNjcm9sbExlZnQiLCJzaG91bGRUb0VuZCIsInN0YXJ0Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJzY3JvbGxXaWR0aCIsImZvY3VzIiwiY2FsY0NhcmV0UG9zIiwib2Zmc2V0IiwiY3VyclBvcyIsIl9iIiwiX2MiLCJfdmFsdWVSZWYkY3VycmVudCIsImZvcm1hdHRlZE5ld1ZhbCIsImlzQWRkIiwiaWdub3JlT2xkUG9zIiwic2VsZWN0aW9uU3RhcnQiLCJvbGRQb3NWYWwiLCJzbGljZSIsIk1hdGgiLCJzcGxpdCIsImpvaW4iLCJwb3NWYWwiLCJyZWR1Y2UiLCJhY2MiLCJjaGFyIiwiaW5kIiwicHVzaCIsImhhbmRsZUNoYW5nZSIsIl92YWx1ZVJlZiRjdXJyZW50MiIsInRhcmdldCIsImhhc0RlY2ltYWxQb2ludCIsImVuZHNXaXRoIiwiaW5jbHVkZXMiLCJpc1N0YW5kYWxvbmVNaW51cyIsIl92YWwkc3BsaXQiLCJfdmFsJHNwbGl0MiIsImludCIsImRlY2ltYWwiLCJtYXhEZWNpbWFscyIsIk51bWJlciIsIl9mb3JtYXR0ZWRWYWx1ZSRzcGxpdCIsIl9mb3JtYXR0ZWRWYWx1ZSRzcGxpdDIiLCJvbGRJbnQiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQzIiwib2xkRGVjaW1hbCIsImRlY2ltYWxzIiwibWF0Y2giLCJibiIsIm5vcm1hbGl6ZWQiLCJ0b0ZpeGVkIiwidHJpbSIsInN0YXJ0c1dpdGgiLCJpc1plcm8iLCJzdG9wUHJvcGFnYXRpb24iLCJwcmV2ZW50RGVmYXVsdCIsImhhbmRsZVNlbGVjdCIsIl9kIiwiX2UiLCJfZiIsIl9nIiwiX2giLCJfaiIsIl9rIiwiY29udGFpbmVyV2lkdGgiLCJvZmZzZXRXaWR0aCIsInByZWZpeFdpZHRoIiwic3VmZml4V2lkdGgiLCJjdXJyZW5jeVdpZHRoIiwiZmFrZVdpZHRoIiwiZ2FwV2lkdGgiLCJtYXhXaWR0aCIsImlzTWF4IiwiX3ZhbHVlUmVmJGN1cnJlbnQzIiwicHJldmlvdXNWYWx1ZSIsImFicyIsInplcm8iLCJCaWdJbnQiLCJfc3BsaXQiLCJfc3BsaXQyIiwiX2Zvcm1hdHRlZFZhbHVlJHNwbGl0NCIsIl9mb3JtYXR0ZWRWYWx1ZSRzcGxpdDUiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQ2Iiwic3RyVmFsIiwicmVzIiwib3JpZ2luT2Zmc2V0IiwiaXNMaWtlS2V5Ym9hcmRJbnB1dCIsImZvcm1hdHRlZE9mZnNldCIsIndpZHRoIiwiaGVpZ2h0IiwicmVmIiwib25DbGljayIsIkhUTUxJbnB1dEVsZW1lbnQiLCJhc3NpZ24iLCJzdHlsZSIsIm9uU2VsZWN0Iiwic3Ryb2tlV2lkdGgiXSwibWFwcGluZ3MiOiI7QUFB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O01BQUEvQixRQUFBLEVBQUEsQ0FDdEQwQixPQUFPLElBQUkvRCxJQUFBLENBQUEsS0FBQSxFQUFBO1FBQUs0QyxTQUFTLEVBQUV3QixPQUFPLENBQUMsU0FBUyxFQUFFbkIsVUFBVSxDQUFDO1FBQUFaLFFBQUEsRUFBRzBCO01BQU8sQ0FBQSxDQUFPLEVBQzFFckIsUUFBUSxJQUFJMUMsSUFBQSxDQUFBLEtBQUEsRUFBQTtRQUFLNEMsU0FBUyxFQUFFd0IsT0FBTyxDQUFDLFVBQVUsRUFBRXpCLFdBQVcsQ0FBQztRQUFBTixRQUFBLEVBQUdLO01BQVEsQ0FBQSxDQUFPO0lBQUEsQ0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZXZDLElBQUksQ0FBQzRCLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAncHJpbWVyZWFjdC9za2VsZXRvbic7XG5pbXBvcnQgU3Bpbm5lciBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5jb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKC9bXFx1MzAwMlxcdWZmMGVcXHVmZjYxXS9nLCAnLicpXG4gICAgLnJlcGxhY2UoL1tcXHVGRjBDXS9nLCAnLCcpO1xuY29uc3QgY2FsY1ZhbHVlSW5SYW5nZSA9ICh2YWwsIG1pbiwgbWF4KSA9PiB7XG4gICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09PSAnLScgfHwgaXNOYU4oK3ZhbCkpXG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgbGV0IGNhbGNWYWwgPSB2YWw7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWluO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4ID09PSAnYmlnaW50Jykge1xuICAgICAgICBjb25zdCBtYXhCbiA9IEJpZ051bWJlcihtYXgpO1xuICAgICAgICBpZiAoYm5WYWwuZ3QobWF4Qm4pKSB7XG4gICAgICAgICAgICBjYWxjVmFsID0gJycgKyBtYXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbGNWYWw7XG59O1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUgPSAncHJpbWFyeScsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgcGxhY2Vob2xkZXIgPSAnMCcsIG1pbiwgbWF4LCBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgc2l6ZSA9ICdsYXJnZScsIGZvb3Rub3RlLCBmb290bm90ZUNscywgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBsYWJlbENscywgcHJlZml4Q2xzID0gJ2lucHV0LWFtb3VudCcsIG1lc3NhZ2VDbHMsIHByZWZpeEVsZUNscywgc3VmZml4RWxlQ2xzLCBpbnZhbGlkLCBuZWdhdGl2ZSwgcmVxdWlyZWQsIGxvYWRpbmcsIHN1Y2Nlc3MsIGRpc2FibGVkLCByZWFkT25seSwgbGFiZWwsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbWVzc2FnZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwidHlwZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJwbGFjZWhvbGRlclwiLCBcIm1pblwiLCBcIm1heFwiLCBcInNpemVcIiwgXCJmb290bm90ZVwiLCBcImZvb3Rub3RlQ2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcInByZWZpeEVsZUNsc1wiLCBcInN1ZmZpeEVsZUNsc1wiLCBcImludmFsaWRcIiwgXCJuZWdhdGl2ZVwiLCBcInJlcXVpcmVkXCIsIFwibG9hZGluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwibGFiZWxcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJjdXJyZW5jeVwiLCBcIm1lc3NhZ2VcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke3ByZWZpeENsc30tJHt0eXBlfWApO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGlnbm9yZVNlbGVjdFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW193aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUoTUlOX0lOUFVUX1dJRFRIKTtcbiAgICBjb25zdCBbaXNNYXhXaWR0aCwgc2V0SXNNYXhXaWR0aF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlLCBuZWdhdGl2ZV0pO1xuICAgIGNvbnN0IHZhbHVlUmVmID0gdXNlUmVmKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIF92YWx1ZSxcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgIG1pbixcbiAgICAgICAgbWF4LFxuICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHMsXG4gICAgfSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBjYWxjQ2FyZXRQb3MgPSB1c2VDYWxsYmFjaygodmFsLCBvZmZzZXQgPSAwLCBjdXJyUG9zKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgeyBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaXNBZGQgPSB2YWwubGVuZ3RoID4gKChfYSA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApO1xuICAgICAgICAgICAgY29uc3QgaWdub3JlT2xkUG9zID0gaXNBZGQgPyB2YWwubGVuZ3RoIC0gKChfYiA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IDApID4gMSA6IGZhbHNlO1xuICAgICAgICAgICAgbGV0IHBvc2l0aW9uID0gKF9jID0gY3VyclBvcyAhPT0gbnVsbCAmJiBjdXJyUG9zICE9PSB2b2lkIDAgPyBjdXJyUG9zIDogaW5wdXRSZWYuY3VycmVudC5zZWxlY3Rpb25TdGFydCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICAgICAgICAgIGlmICghaWdub3JlT2xkUG9zKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkUG9zVmFsID0gZm9ybWF0dGVkVmFsdWUuc2xpY2UoMCwgTWF0aC5tYXgoKHBvc2l0aW9uIC0gKGlzQWRkID8gMSA6IC0xKSksIDApKTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IG9sZFBvc1ZhbC5zcGxpdCgnLCcpLmpvaW4oJycpLmxlbmd0aCArIChpc0FkZCA/IDEgOiAtMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBwb3NWYWwgPSB2YWwuc2xpY2UoMCwgcG9zaXRpb24pO1xuICAgICAgICAgICAgZm9ybWF0dGVkTmV3VmFsLnNwbGl0KCcnKS5yZWR1Y2UoKGFjYywgY2hhciwgaW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGNoYXIgPT09ICcsJylcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICBlbHNlXG4gICAgICAgICAgICAgICAgICAgIGFjYy5wdXNoKGNoYXIpO1xuICAgICAgICAgICAgICAgIGlmIChhY2Muam9pbignJykgPT09IHBvc1ZhbCkge1xuICAgICAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IGluZCArIDE7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhY2M7XG4gICAgICAgICAgICB9LCBbXSk7XG4gICAgICAgICAgICBpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCA9IHBvc2l0aW9uICsgb2Zmc2V0O1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChlKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBpZiAoZGlzYWJsZWQgfHwgcmVhZE9ubHkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHsgdmFsdWUsIF92YWx1ZSwgZm9ybWF0dGVkVmFsdWUsIG1pbiwgbWF4LCBuZWdhdGl2ZSwgbWF4RnJhY3Rpb25EaWdpdHMgfSA9IHZhbHVlUmVmLmN1cnJlbnQ7XG4gICAgICAgIGxldCB2YWwgPSBlLnRhcmdldC52YWx1ZTtcbiAgICAgICAgaWYgKHZhbCAhPSBudWxsKVxuICAgICAgICAgICAgdmFsID0gbm9ybWFsaXplTnVtYmVySW5wdXQodmFsKS5zcGxpdCgnLCcpLmpvaW4oJycpO1xuICAgICAgICBjb25zdCBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgaWYgKGhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHZhbCA9IHZhbC5zbGljZSgwLCAtMSk7XG4gICAgICAgIGlmICghbmVnYXRpdmUgJiYgKHZhbCA9PT0gbnVsbCB8fCB2YWwgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZhbC5pbmNsdWRlcygnLScpKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgaXNTdGFuZGFsb25lTWludXMgPSBuZWdhdGl2ZSAmJiB2YWwgPT09ICctJztcbiAgICAgICAgaWYgKCFpc1N0YW5kYWxvbmVNaW51cyAmJiBpc05hTigrdmFsKSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHZhbCA9PT0gX3ZhbHVlICYmICFoYXNEZWNpbWFsUG9pbnQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgbWF4RnJhY3Rpb25EaWdpdHMgPT09ICdudW1iZXInIHx8IHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gdmFsLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICBjb25zdCBtYXhEZWNpbWFscyA9IE51bWJlcihtYXhGcmFjdGlvbkRpZ2l0cyk7XG4gICAgICAgICAgICBpZiAoZGVjaW1hbCAhPSBudWxsICYmIGRlY2ltYWwubGVuZ3RoID4gbWF4RGVjaW1hbHMpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBbb2xkSW50LCBvbGREZWNpbWFsID0gZGVjaW1hbC5zbGljZSgwLCBtYXhEZWNpbWFscyldID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAob2xkSW50LnNwbGl0KCcsJykuam9pbignJykgPT0gaW50KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7aW50fS4ke29sZERlY2ltYWx9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoKHR5cGVvZiBtaW4gPT09ICdudW1iZXInIHx8IHR5cGVvZiBtaW4gPT09ICdiaWdpbnQnKSB8fCAodHlwZW9mIG1heCA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heCA9PT0gJ2JpZ2ludCcpKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKHZhbCwgbWluLCBtYXgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh2YWwgIT09ICcnICYmICFpc1N0YW5kYWxvbmVNaW51cykge1xuICAgICAgICAgICAgY29uc3QgZGVjaW1hbHMgPSAoX2MgPSAoX2IgPSAoX2EgPSB2YWwubWF0Y2goL1xcLihcXGQrKSQvKSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hWzFdKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IubGVuZ3RoKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiAwO1xuICAgICAgICAgICAgY29uc3QgYm4gPSBCaWdOdW1iZXIodmFsKTtcbiAgICAgICAgICAgIGxldCBub3JtYWxpemVkID0gYm4udG9GaXhlZChkZWNpbWFscyk7XG4gICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsLnRyaW0oKS5zdGFydHNXaXRoKCctJykgJiYgYm4uaXNaZXJvKCkpIHtcbiAgICAgICAgICAgICAgICBub3JtYWxpemVkID0gbm9ybWFsaXplZC5zdGFydHNXaXRoKCctJykgPyBub3JtYWxpemVkIDogYC0ke25vcm1hbGl6ZWR9YDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhbCA9IGAke25vcm1hbGl6ZWR9JHtoYXNEZWNpbWFsUG9pbnQgPyAnLicgOiAnJ31gLnRyaW0oKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgICAgc2V0VmFsdWUodmFsID09PSAnJyA/IG51bGwgOiB2YWwpO1xuICAgICAgICAgICAgY2FsY0NhcmV0UG9zKHZhbCwgaGFzRGVjaW1hbFBvaW50ID8gMiA6IDApO1xuICAgICAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZSA9PT0gbnVsbCB8fCBvbkNoYW5nZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogb25DaGFuZ2UoZSwgdmFsKTtcbiAgICB9LCBbb25DaGFuZ2UsIGRpc2FibGVkLCByZWFkT25seV0pO1xuICAgIGNvbnN0IGhhbmRsZVNlbGVjdCA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBpZiAoaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlnbm9yZVNlbGVjdFJlZi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY3VyclBvcyA9IChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5zZWxlY3Rpb25TdGFydDtcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyUG9zID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgIGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50ID0gY3VyclBvcztcbiAgICB9LCBbXSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgICAgIGlmIChpc0ZvY3VzKVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZSwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5LCBpc0ZvY3VzXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gY2xlYXIgbmVnYXRpdmUgc2lnbiBpZiBub3QgYWxsb3dlZFxuICAgICAgICBpZiAobmVnYXRpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoX3ZhbHVlID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChfdmFsdWUgPT09ICctJykge1xuICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF92YWx1ZS5zdGFydHNXaXRoKCctJykpXG4gICAgICAgICAgICBzZXRWYWx1ZShfdmFsdWUuc2xpY2UoMSkpO1xuICAgIH0sIFtuZWdhdGl2ZSwgdmFsdWUsIF92YWx1ZV0pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZCwgX2U7XG4gICAgICAgIGxldCB2YWwgPSB2YWx1ZTtcbiAgICAgICAgbGV0IGhhc0RlY2ltYWxQb2ludCA9IGZhbHNlO1xuICAgICAgICBjb25zdCB7IF92YWx1ZSwgdmFsdWU6IHByZXZpb3VzVmFsdWUsIGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmICghbmVnYXRpdmUpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsID09PSAnLScpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoJy0nKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghbmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguYWJzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsIDwgemVybyA/IC12YWwgOiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW29sZEludCwgb2xkRGVjaW1hbCA9IGRlY2ltYWwuc2xpY2UoMCwgbWF4RGVjaW1hbHMpXSA9IGZvcm1hdHRlZFZhbHVlLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKG9sZEludC5zcGxpdCgnLCcpLmpvaW4oJycpID09IGludClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHZhbCA9IGAke2ludH0uJHtvbGREZWNpbWFsfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc3RyVmFsID0gJycgKyB2YWw7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9IHN0clZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICBjb25zdCBibiA9IEJpZ051bWJlcihzdHJWYWwpO1xuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiBzdHJWYWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy0nKSA/IG5vcm1hbGl6ZWQgOiBgLSR7bm9ybWFsaXplZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzID0gYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpO1xuICAgICAgICAgICAgc2V0VmFsdWUocmVzKTtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBvcmlnaW5PZmZzZXQgPSAoKF9kID0gdmFsID09PSBudWxsIHx8IHZhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFsLmxlbmd0aCkgIT09IG51bGwgJiYgX2QgIT09IHZvaWQgMCA/IF9kIDogMCkgLSAoKF9lID0gX3ZhbHVlID09PSBudWxsIHx8IF92YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZhbHVlLmxlbmd0aCkgIT09IG51bGwgJiYgX2UgIT09IHZvaWQgMCA/IF9lIDogMCk7XG4gICAgICAgIGNvbnN0IGlzTGlrZUtleWJvYXJkSW5wdXQgPSBvcmlnaW5PZmZzZXQgPT09IDEgfHwgb3JpZ2luT2Zmc2V0ID09PSAtMTtcbiAgICAgICAgY29uc3QgZm9ybWF0dGVkT2Zmc2V0ID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwgIT09IG51bGwgJiYgdmFsICE9PSB2b2lkIDAgPyB2YWwgOiAnJywge1xuICAgICAgICAgICAgdGhvdXNhbmRTZXBhcmF0b3I6IHRydWUsXG4gICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgfSkubGVuZ3RoIC0gZm9ybWF0dGVkVmFsdWUubGVuZ3RoO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSBNYXRoLm1heCghaXNMaWtlS2V5Ym9hcmRJbnB1dCA/IGZvcm1hdHRlZE9mZnNldCA6IG9yaWdpbk9mZnNldCwgMCkgKyAoaGFzRGVjaW1hbFBvaW50ID8gb3JpZ2luT2Zmc2V0IDwgMCA/IDMgOiAyIDogMCk7XG4gICAgICAgIGNhbGNDYXJldFBvcyh2YWwgIT09IG51bGwgJiYgdmFsICE9PSB2b2lkIDAgPyB2YWwgOiAnJywgb2Zmc2V0LCBNYXRoLm1heChpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCwgMCkpO1xuICAgICAgICBpZ25vcmVTZWxlY3RSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfSwgW3ZhbHVlLCBtYXhGcmFjdGlvbkRpZ2l0cywgbWluLCBtYXgsIG5lZ2F0aXZlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgX3ZhbHVlLFxuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgICBtaW4sXG4gICAgICAgICAgICBtYXgsXG4gICAgICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgICAgIG1heEZyYWN0aW9uRGlnaXRzXG4gICAgICAgIH07XG4gICAgfSwgW192YWx1ZSwgdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzXSk7XG4gICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd3cmFwcGVyJywgam9pbkNscyh3cmFwcGVyQ2xzLCBjbGFzc2VzKHNpemUpLCBpbnZhbGlkICYmIGNsYXNzZXMoJ2ludmFsaWQnKSwgc3VjY2VzcyAmJiBjbGFzc2VzKCdzdWNjZXNzJyksIGRpc2FibGVkICYmIGNsYXNzZXMoJ2Rpc2FibGVkJyksIHJlYWRPbmx5ICYmIGNsYXNzZXMoJ3JlYWRvbmx5JyksIF92YWx1ZSAmJiBjbGFzc2VzKCdmaWxsZWQnKSkpLCBjaGlsZHJlbjogW2xhYmVsXG4gICAgICAgICAgICAgICAgPyBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgID8gX2pzeChTa2VsZXRvbiwgeyB3aWR0aDogJzcycHgnLCBoZWlnaHQ6ICcxOHB4JywgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbC1sb2FkaW5nJykgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnLCBqb2luQ2xzKHJlcXVpcmVkICYmIGNsYXNzZXMoJ2xhYmVsLXJlcXVpcmVkJyksIGxhYmVsQ2xzKSksIGNoaWxkcmVuOiBsYWJlbCB9KVxuICAgICAgICAgICAgICAgIDogbnVsbCwgX2pzeHMoXCJkaXZcIiwgeyByZWY6IGNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKHZvaWQgMCwgam9pbkNscyhjbGFzc05hbWUsIGlzRm9jdXMgJiYgY2xhc3NlcygnZm9jdXMnKSkpLCBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXhXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvRW5kKCk7XG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IHByZWZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnLCBwcmVmaXhFbGVDbHMpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbGVtZW50JywgKCFpc0ZvY3VzICYmIGlzTWF4V2lkdGgpID8gY2xhc3NlcygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZWFkT25seTogcmVhZE9ubHksIGRpc2FibGVkOiBkaXNhYmxlZCwgc3R5bGU6IHsgJy0taW5wdXQtd2lkdGgnOiBgJHtfd2lkdGh9cHhgIH0sIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uU2VsZWN0OiBoYW5kbGVTZWxlY3QsIG9uRm9jdXM6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgb25CbHVyOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSB9KSwgY3VycmVuY3kgJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IGN1cnJlbmN5UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSwgbG9hZGluZyA/IF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeC1sb2FkaW5nJyksIHN0cm9rZVdpZHRoOiAnNCcgfSkgOiBzdWZmaXggPyBfanN4KFwic3BhblwiLCB7IHJlZjogc3VmZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcsIHN1ZmZpeEVsZUNscyksIGNoaWxkcmVuOiBzdWZmaXggfSkgOiBudWxsLCBfanN4KFwic3BhblwiLCB7IHJlZjogZmFrZUVsZVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmYWtlJyksIG9uQ2xpY2s6IGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSwgY2hpbGRyZW46IGZvcm1hdHRlZFZhbHVlIH0pXSB9KSwgKG1lc3NhZ2UgfHwgZm9vdG5vdGUpICYmIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdleHRyYScpLCBjaGlsZHJlbjogW21lc3NhZ2UgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScsIG1lc3NhZ2VDbHMpLCBjaGlsZHJlbjogbWVzc2FnZSB9KSwgZm9vdG5vdGUgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZm9vdG5vdGUnLCBmb290bm90ZUNscyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSldIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oSW5wdXRBbW91bnQpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==
401
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvSW5wdXRBbW91bnQvSW5wdXRBbW91bnQuanMiLCJjb21wb25lbnRzL3NyYy9jb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LnRzeCJdLCJuYW1lcyI6WyJfX3Jlc3QiLCJzIiwiZSIsInQiLCJwIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaW5kZXhPZiIsImdldE93blByb3BlcnR5U3ltYm9scyIsImkiLCJsZW5ndGgiLCJwcm9wZXJ0eUlzRW51bWVyYWJsZSIsImpzeCIsIl9qc3giLCJqc3hzIiwiX2pzeHMiLCJtZW1vIiwidXNlTWVtbyIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1c2VSZWYiLCJ1c2VFZmZlY3QiLCJ1c2VMYXlvdXRFZmZlY3QiLCJCaWdOdW1iZXIiLCJudW1lcmljRm9ybWF0dGVyIiwiU2tlbGV0b24iLCJTcGlubmVyIiwiZGVmYXVsdCIsImNsYXNzbmFtZXMiLCJqb2luQ2xzIiwiTUlOX0lOUFVUX1dJRFRIIiwibm9ybWFsaXplTnVtYmVySW5wdXQiLCJ2YWwiLCJyZXBsYWNlIiwiY2FsY1ZhbHVlSW5SYW5nZSIsIm1pbiIsIm1heCIsImlzTmFOIiwiY2FsY1ZhbCIsImJuVmFsIiwibWluQm4iLCJsdCIsIm1heEJuIiwiZ3QiLCJJbnB1dEFtb3VudCIsInByb3BzIiwidmFsdWUiLCJfcHJvcHMkdHlwZSIsInR5cGUiLCJtYXhGcmFjdGlvbkRpZ2l0cyIsImNoaWxkcmVuIiwiX3Byb3BzJHBsYWNlaG9sZGVyIiwicGxhY2Vob2xkZXIiLCJfcHJvcHMkc2l6ZSIsInNpemUiLCJmb290bm90ZSIsImZvb3Rub3RlQ2xzIiwiY2xhc3NOYW1lIiwid3JhcHBlckNscyIsImxhYmVsQ2xzIiwiX3Byb3BzJHByZWZpeENscyIsInByZWZpeENscyIsIm1lc3NhZ2VDbHMiLCJwcmVmaXhFbGVDbHMiLCJzdWZmaXhFbGVDbHMiLCJpbnZhbGlkIiwibmVnYXRpdmUiLCJyZXF1aXJlZCIsImxvYWRpbmciLCJzdWNjZXNzIiwiZGlzYWJsZWQiLCJyZWFkT25seSIsImxhYmVsIiwicHJlZml4Iiwic3VmZml4IiwiY3VycmVuY3kiLCJtZXNzYWdlIiwib25DaGFuZ2UiLCJvbkJsdXIiLCJvbkZvY3VzIiwicmVzdCIsImNsYXNzZXMiLCJjb25jYXQiLCJpbnB1dFJlZiIsImZha2VFbGVSZWYiLCJwcmVmaXhSZWYiLCJzdWZmaXhSZWYiLCJjdXJyZW5jeVJlZiIsImNvbnRhaW5lclJlZiIsImlucHV0Q2FyZXRQb3NpdGlvblJlZiIsImlnbm9yZVNlbGVjdFJlZiIsIl91c2VTdGF0ZSIsIl91c2VTdGF0ZTIiLCJfc2xpY2VkVG9BcnJheSIsIl92YWx1ZSIsInNldFZhbHVlIiwiX3VzZVN0YXRlMyIsIl91c2VTdGF0ZTQiLCJfd2lkdGgiLCJzZXRXaWR0aCIsIl91c2VTdGF0ZTUiLCJfdXNlU3RhdGU2IiwiaXNNYXhXaWR0aCIsInNldElzTWF4V2lkdGgiLCJfdXNlU3RhdGU3IiwiX3VzZVN0YXRlOCIsImlzRm9jdXMiLCJzZXRJc0ZvY3VzIiwiZm9ybWF0dGVkVmFsdWUiLCJ0aG91c2FuZFNlcGFyYXRvciIsImFsbG93TmVnYXRpdmUiLCJ2YWx1ZVJlZiIsInNjcm9sbFRvRW5kIiwic3RpY2t5IiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiX2EiLCJpbnB1dCIsImN1cnJlbnQiLCJsZW4iLCJwb3NpdGlvbiIsInNjcm9sbExlZnQiLCJzaG91bGRUb0VuZCIsInN0YXJ0Iiwic2V0U2VsZWN0aW9uUmFuZ2UiLCJzY3JvbGxXaWR0aCIsImZvY3VzIiwiY2FsY0NhcmV0UG9zIiwib2Zmc2V0IiwiY3VyclBvcyIsIl9iIiwiX2MiLCJfdmFsdWVSZWYkY3VycmVudCIsImZvcm1hdHRlZE5ld1ZhbCIsImlzQWRkIiwiZGlyZWN0aW9uT2Zmc2V0IiwiaWdub3JlT2xkUG9zIiwic2VsZWN0aW9uRW5kIiwib2xkUG9zVmFsIiwic2xpY2UiLCJNYXRoIiwic3BsaXQiLCJqb2luIiwicG9zVmFsIiwicmVkdWNlIiwiYWNjIiwiY2hhciIsImluZCIsInB1c2giLCJoYW5kbGVDaGFuZ2UiLCJfdmFsdWVSZWYkY3VycmVudDIiLCJ0YXJnZXQiLCJoYXNEZWNpbWFsUG9pbnQiLCJlbmRzV2l0aCIsImluY2x1ZGVzIiwiaXNTdGFuZGFsb25lTWludXMiLCJfdmFsJHNwbGl0IiwiX3ZhbCRzcGxpdDIiLCJpbnQiLCJkZWNpbWFsIiwibWF4RGVjaW1hbHMiLCJOdW1iZXIiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQyIiwib2xkSW50IiwiZGVjaW1hbHMiLCJtYXRjaCIsImJuIiwibm9ybWFsaXplZCIsInRvRml4ZWQiLCJ0cmltIiwic3RhcnRzV2l0aCIsImlzWmVybyIsInN0b3BQcm9wYWdhdGlvbiIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlU2VsZWN0IiwiX2QiLCJfZSIsIl9mIiwiX2ciLCJfaCIsIl9qIiwiX2siLCJjb250YWluZXJXaWR0aCIsIm9mZnNldFdpZHRoIiwicHJlZml4V2lkdGgiLCJzdWZmaXhXaWR0aCIsImN1cnJlbmN5V2lkdGgiLCJmYWtlV2lkdGgiLCJnYXBXaWR0aCIsIm1heFdpZHRoIiwiaXNNYXgiLCJfdmFsdWVSZWYkY3VycmVudDMiLCJhYnMiLCJ6ZXJvIiwiQmlnSW50IiwiX3NwbGl0IiwiX3NwbGl0MiIsIl9mb3JtYXR0ZWRWYWx1ZSRzcGxpdDMiLCJfZm9ybWF0dGVkVmFsdWUkc3BsaXQ0Iiwic3RyVmFsIiwicmVzIiwid2lkdGgiLCJoZWlnaHQiLCJyZWYiLCJvbkNsaWNrIiwiSFRNTElucHV0RWxlbWVudCIsImFzc2lnbiIsInN0eWxlIiwib25TZWxlY3QiLCJzdHJva2VXaWR0aCJdLCJtYXBwaW5ncyI6IjtBQUFBLElBQUlBLE1BQU0sR0FBSSxJQUFJLElBQUksSUFBSSxDQUFDQSxNQUFNLElBQUssVUFBVUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUU7RUFDbEQsSUFBSUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztFQUNWLEtBQUss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TyxDQUFDLFVBQVUsRUFBRXpCLFdBQVcsQ0FBQztRQUFBTixRQUFBLEVBQUdLO01BQVEsQ0FBQSxDQUFPO0lBQUEsQ0FBQSxDQUMzRTtFQUFBLENBQUEsQ0FFSjtBQUNSLENBQUM7QUFFRCw0QkFBZXZDLElBQUksQ0FBQzRCLFdBQVcsQ0FBQyIsImZpbGUiOiJjb21wb25lbnRzL0lucHV0QW1vdW50L0lucHV0QW1vdW50LmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIF9fcmVzdCA9ICh0aGlzICYmIHRoaXMuX19yZXN0KSB8fCBmdW5jdGlvbiAocywgZSkge1xuICAgIHZhciB0ID0ge307XG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXG4gICAgICAgIHRbcF0gPSBzW3BdO1xuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xuICAgICAgICB9XG4gICAgcmV0dXJuIHQ7XG59O1xuaW1wb3J0IHsganN4IGFzIF9qc3gsIGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IG1lbW8sIHVzZU1lbW8sIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgdXNlUmVmLCB1c2VFZmZlY3QsIHVzZUxheW91dEVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBCaWdOdW1iZXIgZnJvbSAnYmlnbnVtYmVyLmpzJztcbmltcG9ydCB7IG51bWVyaWNGb3JtYXR0ZXIgfSBmcm9tICdyZWFjdC1udW1iZXItZm9ybWF0JztcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAncHJpbWVyZWFjdC9za2VsZXRvbic7XG5pbXBvcnQgU3Bpbm5lciBmcm9tICcuLi9TcGlubmVyJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgY2xhc3NuYW1lcywgam9pbkNscyB9IGZyb20gJy4uLy4uL3V0aWxzL2NsYXNzbmFtZXMnO1xuY29uc3QgTUlOX0lOUFVUX1dJRFRIID0gMzM7XG5jb25zdCBub3JtYWxpemVOdW1iZXJJbnB1dCA9ICh2YWwpID0+IHZhbFxuICAgIC5yZXBsYWNlKC9bXFx1MzAwMlxcdWZmMGVcXHVmZjYxXS9nLCAnLicpXG4gICAgLnJlcGxhY2UoL1tcXHVGRjBDXS9nLCAnLCcpO1xuY29uc3QgY2FsY1ZhbHVlSW5SYW5nZSA9ICh2YWwsIG1pbiwgbWF4KSA9PiB7XG4gICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09PSAnLScgfHwgaXNOYU4oK3ZhbCkpXG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgbGV0IGNhbGNWYWwgPSB2YWw7XG4gICAgY29uc3QgYm5WYWwgPSBCaWdOdW1iZXIodmFsKTtcbiAgICBpZiAodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHtcbiAgICAgICAgY29uc3QgbWluQm4gPSBCaWdOdW1iZXIobWluKTtcbiAgICAgICAgaWYgKGJuVmFsLmx0KG1pbkJuKSkge1xuICAgICAgICAgICAgY2FsY1ZhbCA9ICcnICsgbWluO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4ID09PSAnYmlnaW50Jykge1xuICAgICAgICBjb25zdCBtYXhCbiA9IEJpZ051bWJlcihtYXgpO1xuICAgICAgICBpZiAoYm5WYWwuZ3QobWF4Qm4pKSB7XG4gICAgICAgICAgICBjYWxjVmFsID0gJycgKyBtYXg7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGNhbGNWYWw7XG59O1xuZXhwb3J0IGNvbnN0IElucHV0QW1vdW50ID0gcHJvcHMgPT4ge1xuICAgIGNvbnN0IHsgdmFsdWUsIHR5cGUgPSAncHJpbWFyeScsIG1heEZyYWN0aW9uRGlnaXRzLCBjaGlsZHJlbiwgcGxhY2Vob2xkZXIgPSAnMCcsIG1pbiwgbWF4LCBcbiAgICAvLyBAdHMtZXhwZWN0LWVycm9yXG4gICAgc2l6ZSA9ICdsYXJnZScsIGZvb3Rub3RlLCBmb290bm90ZUNscywgY2xhc3NOYW1lLCB3cmFwcGVyQ2xzLCBsYWJlbENscywgcHJlZml4Q2xzID0gJ2lucHV0LWFtb3VudCcsIG1lc3NhZ2VDbHMsIHByZWZpeEVsZUNscywgc3VmZml4RWxlQ2xzLCBpbnZhbGlkLCBuZWdhdGl2ZSwgcmVxdWlyZWQsIGxvYWRpbmcsIHN1Y2Nlc3MsIGRpc2FibGVkLCByZWFkT25seSwgbGFiZWwsIHByZWZpeCwgc3VmZml4LCBjdXJyZW5jeSwgbWVzc2FnZSwgb25DaGFuZ2UsIG9uQmx1ciwgb25Gb2N1cyB9ID0gcHJvcHMsIHJlc3QgPSBfX3Jlc3QocHJvcHMsIFtcInZhbHVlXCIsIFwidHlwZVwiLCBcIm1heEZyYWN0aW9uRGlnaXRzXCIsIFwiY2hpbGRyZW5cIiwgXCJwbGFjZWhvbGRlclwiLCBcIm1pblwiLCBcIm1heFwiLCBcInNpemVcIiwgXCJmb290bm90ZVwiLCBcImZvb3Rub3RlQ2xzXCIsIFwiY2xhc3NOYW1lXCIsIFwid3JhcHBlckNsc1wiLCBcImxhYmVsQ2xzXCIsIFwicHJlZml4Q2xzXCIsIFwibWVzc2FnZUNsc1wiLCBcInByZWZpeEVsZUNsc1wiLCBcInN1ZmZpeEVsZUNsc1wiLCBcImludmFsaWRcIiwgXCJuZWdhdGl2ZVwiLCBcInJlcXVpcmVkXCIsIFwibG9hZGluZ1wiLCBcInN1Y2Nlc3NcIiwgXCJkaXNhYmxlZFwiLCBcInJlYWRPbmx5XCIsIFwibGFiZWxcIiwgXCJwcmVmaXhcIiwgXCJzdWZmaXhcIiwgXCJjdXJyZW5jeVwiLCBcIm1lc3NhZ2VcIiwgXCJvbkNoYW5nZVwiLCBcIm9uQmx1clwiLCBcIm9uRm9jdXNcIl0pO1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKGAke3ByZWZpeENsc30tJHt0eXBlfWApO1xuICAgIGNvbnN0IGlucHV0UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGZha2VFbGVSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJlZml4UmVmID0gdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IHN1ZmZpeFJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjdXJyZW5jeVJlZiA9IHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250YWluZXJSZWYgPSB1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgaW5wdXRDYXJldFBvc2l0aW9uUmVmID0gdXNlUmVmKDApO1xuICAgIGNvbnN0IGlnbm9yZVNlbGVjdFJlZiA9IHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW192YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW193aWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGUoTUlOX0lOUFVUX1dJRFRIKTtcbiAgICBjb25zdCBbaXNNYXhXaWR0aCwgc2V0SXNNYXhXaWR0aF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2lzRm9jdXMsIHNldElzRm9jdXNdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGZvcm1hdHRlZFZhbHVlID0gdXNlTWVtbygoKSA9PiB7XG4gICAgICAgIHJldHVybiBudW1lcmljRm9ybWF0dGVyKCcnICsgKF92YWx1ZSA9PSBudWxsID8gJycgOiBfdmFsdWUpLCB7XG4gICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgIGFsbG93TmVnYXRpdmU6IG5lZ2F0aXZlLFxuICAgICAgICB9KTtcbiAgICB9LCBbX3ZhbHVlLCBuZWdhdGl2ZV0pO1xuICAgIGNvbnN0IHZhbHVlUmVmID0gdXNlUmVmKHtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIF92YWx1ZSxcbiAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgIG1pbixcbiAgICAgICAgbWF4LFxuICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgbWF4RnJhY3Rpb25EaWdpdHMsXG4gICAgfSk7XG4gICAgY29uc3Qgc2Nyb2xsVG9FbmQgPSB1c2VDYWxsYmFjaygoc3RpY2t5ID0gZmFsc2UpID0+IHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICBjb25zdCBpbnB1dCA9IGlucHV0UmVmLmN1cnJlbnQ7XG4gICAgICAgIGlmICghaW5wdXQpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGxlbiA9IChfYSA9IGlucHV0LnZhbHVlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EubGVuZ3RoO1xuICAgICAgICBjb25zdCBwb3NpdGlvbiA9IGlucHV0LnNjcm9sbExlZnQ7XG4gICAgICAgIGNvbnN0IHNob3VsZFRvRW5kID0gIXN0aWNreTtcbiAgICAgICAgY29uc3Qgc3RhcnQgPSBzaG91bGRUb0VuZCA/IGxlbiA6IGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50O1xuICAgICAgICBpbnB1dC5zZXRTZWxlY3Rpb25SYW5nZShzdGFydCwgc3RhcnQpO1xuICAgICAgICBpbnB1dC5zY3JvbGxMZWZ0ID0gc2hvdWxkVG9FbmQgPyBpbnB1dC5zY3JvbGxXaWR0aCA6IHBvc2l0aW9uO1xuICAgICAgICBpbnB1dC5mb2N1cygpO1xuICAgIH0sIFtdKTtcbiAgICBjb25zdCBjYWxjQ2FyZXRQb3MgPSB1c2VDYWxsYmFjaygodmFsLCBvZmZzZXQgPSAwLCBjdXJyUG9zKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBpZiAoaW5wdXRSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgY29uc3QgeyBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICAgICAgY29uc3QgZm9ybWF0dGVkTmV3VmFsID0gbnVtZXJpY0Zvcm1hdHRlcih2YWwsIHtcbiAgICAgICAgICAgICAgICB0aG91c2FuZFNlcGFyYXRvcjogdHJ1ZSxcbiAgICAgICAgICAgICAgICBhbGxvd05lZ2F0aXZlOiBuZWdhdGl2ZSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3QgaXNBZGQgPSB2YWwubGVuZ3RoID4gKChfYSA9IF92YWx1ZSA9PT0gbnVsbCB8fCBfdmFsdWUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF92YWx1ZS5sZW5ndGgpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IDApO1xuICAgICAgICAgICAgY29uc3QgZGlyZWN0aW9uT2Zmc2V0ID0gaXNBZGQgPyAxIDogLTE7XG4gICAgICAgICAgICBjb25zdCBpZ25vcmVPbGRQb3MgPSBpc0FkZCA/IHZhbC5sZW5ndGggLSAoKF9iID0gX3ZhbHVlID09PSBudWxsIHx8IF92YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3ZhbHVlLmxlbmd0aCkgIT09IG51bGwgJiYgX2IgIT09IHZvaWQgMCA/IF9iIDogMCkgPiAxIDogZmFsc2U7XG4gICAgICAgICAgICBsZXQgcG9zaXRpb24gPSAoX2MgPSBjdXJyUG9zICE9PSBudWxsICYmIGN1cnJQb3MgIT09IHZvaWQgMCA/IGN1cnJQb3MgOiBpbnB1dFJlZi5jdXJyZW50LnNlbGVjdGlvbkVuZCkgIT09IG51bGwgJiYgX2MgIT09IHZvaWQgMCA/IF9jIDogMDtcbiAgICAgICAgICAgIGlmICghaWdub3JlT2xkUG9zKSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgb2xkUG9zVmFsID0gZm9ybWF0dGVkVmFsdWUuc2xpY2UoMCwgTWF0aC5tYXgocG9zaXRpb24sIDApKTtcbiAgICAgICAgICAgICAgICBwb3NpdGlvbiA9IG9sZFBvc1ZhbC5zcGxpdCgnLCcpLmpvaW4oJycpLmxlbmd0aCArIGRpcmVjdGlvbk9mZnNldDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IHBvc1ZhbCA9IHZhbC5zbGljZSgwLCBwb3NpdGlvbik7XG4gICAgICAgICAgICBmb3JtYXR0ZWROZXdWYWwuc3BsaXQoJycpLnJlZHVjZSgoYWNjLCBjaGFyLCBpbmQpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoY2hhciA9PT0gJywnKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgICAgICAgICAgYWNjLnB1c2goY2hhcik7XG4gICAgICAgICAgICAgICAgaWYgKGFjYy5qb2luKCcnKSA9PT0gcG9zVmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHBvc2l0aW9uID0gaW5kICsgMTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgIGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50ID0gcG9zaXRpb24gKyBvZmZzZXQ7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG4gICAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soKGUpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2M7XG4gICAgICAgIGlmIChkaXNhYmxlZCB8fCByZWFkT25seSlcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgY29uc3QgeyB2YWx1ZSwgX3ZhbHVlLCBmb3JtYXR0ZWRWYWx1ZSwgbWluLCBtYXgsIG5lZ2F0aXZlLCBtYXhGcmFjdGlvbkRpZ2l0cyB9ID0gdmFsdWVSZWYuY3VycmVudDtcbiAgICAgICAgbGV0IHZhbCA9IGUudGFyZ2V0LnZhbHVlO1xuICAgICAgICBpZiAodmFsICE9IG51bGwpXG4gICAgICAgICAgICB2YWwgPSBub3JtYWxpemVOdW1iZXJJbnB1dCh2YWwpLnNwbGl0KCcsJykuam9pbignJyk7XG4gICAgICAgIGNvbnN0IGhhc0RlY2ltYWxQb2ludCA9ICEhdmFsICYmIHZhbC5lbmRzV2l0aCgnLicpO1xuICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgdmFsID0gdmFsLnNsaWNlKDAsIC0xKTtcbiAgICAgICAgaWYgKCFuZWdhdGl2ZSAmJiAodmFsID09PSBudWxsIHx8IHZhbCA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFsLmluY2x1ZGVzKCctJykpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBpc1N0YW5kYWxvbmVNaW51cyA9IG5lZ2F0aXZlICYmIHZhbCA9PT0gJy0nO1xuICAgICAgICBpZiAoIWlzU3RhbmRhbG9uZU1pbnVzICYmIGlzTmFOKCt2YWwpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAodmFsID09PSBfdmFsdWUgJiYgIWhhc0RlY2ltYWxQb2ludClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgaWYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgY29uc3QgW2ludCwgZGVjaW1hbF0gPSB2YWwuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgIGNvbnN0IG1heERlY2ltYWxzID0gTnVtYmVyKG1heEZyYWN0aW9uRGlnaXRzKTtcbiAgICAgICAgICAgIGlmIChkZWNpbWFsICE9IG51bGwgJiYgZGVjaW1hbC5sZW5ndGggPiBtYXhEZWNpbWFscykge1xuICAgICAgICAgICAgICAgIGNvbnN0IFtvbGRJbnQsXSA9IGZvcm1hdHRlZFZhbHVlLnNwbGl0KCcuJyk7XG4gICAgICAgICAgICAgICAgaWYgKG9sZEludC5zcGxpdCgnLCcpLmpvaW4oJycpID09IGludClcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIHZhbCA9IGAke2ludH0uJHtkZWNpbWFsLnNsaWNlKDAsIG1heERlY2ltYWxzKX1gO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmICgodHlwZW9mIG1pbiA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1pbiA9PT0gJ2JpZ2ludCcpIHx8ICh0eXBlb2YgbWF4ID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgbWF4ID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIHZhbCA9IGNhbGNWYWx1ZUluUmFuZ2UodmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCAhPT0gJycgJiYgIWlzU3RhbmRhbG9uZU1pbnVzKSB7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9IHZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICBjb25zdCBibiA9IEJpZ051bWJlcih2YWwpO1xuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiB2YWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy0nKSA/IG5vcm1hbGl6ZWQgOiBgLSR7bm9ybWFsaXplZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFsID0gYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpO1xuICAgICAgICB9XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICBzZXRWYWx1ZSh2YWwgPT09ICcnID8gbnVsbCA6IHZhbCk7XG4gICAgICAgICAgICBjYWxjQ2FyZXRQb3ModmFsLCBoYXNEZWNpbWFsUG9pbnQgPyAzIDogMCk7XG4gICAgICAgICAgICBpZ25vcmVTZWxlY3RSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlID09PSBudWxsIHx8IG9uQ2hhbmdlID09PSB2b2lkIDAgPyB2b2lkIDAgOiBvbkNoYW5nZShlLCB2YWwpO1xuICAgIH0sIFtvbkNoYW5nZSwgZGlzYWJsZWQsIHJlYWRPbmx5XSk7XG4gICAgY29uc3QgaGFuZGxlU2VsZWN0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIGlmIChpZ25vcmVTZWxlY3RSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgaWdub3JlU2VsZWN0UmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zdCBjdXJyUG9zID0gKF9hID0gaW5wdXRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnNlbGVjdGlvbkVuZDtcbiAgICAgICAgaWYgKHR5cGVvZiBjdXJyUG9zID09PSAnbnVtYmVyJylcbiAgICAgICAgICAgIGlucHV0Q2FyZXRQb3NpdGlvblJlZi5jdXJyZW50ID0gY3VyclBvcztcbiAgICB9LCBbXSk7XG4gICAgdXNlTGF5b3V0RWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFyIF9hLCBfYiwgX2MsIF9kLCBfZSwgX2YsIF9nLCBfaCwgX2osIF9rO1xuICAgICAgICBjb25zdCBjb250YWluZXJXaWR0aCA9IChfYiA9IChfYSA9IGNvbnRhaW5lclJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Eub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IE1JTl9JTlBVVF9XSURUSDtcbiAgICAgICAgY29uc3QgcHJlZml4V2lkdGggPSAoX2QgPSAoX2MgPSBwcmVmaXhSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2MgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfZCAhPT0gdm9pZCAwID8gX2QgOiAwO1xuICAgICAgICBjb25zdCBzdWZmaXhXaWR0aCA9IChfZiA9IChfZSA9IHN1ZmZpeFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2Uub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9mICE9PSB2b2lkIDAgPyBfZiA6IDA7XG4gICAgICAgIGNvbnN0IGN1cnJlbmN5V2lkdGggPSAoX2ggPSAoX2cgPSBjdXJyZW5jeVJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfZyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2cub2Zmc2V0V2lkdGgpICE9PSBudWxsICYmIF9oICE9PSB2b2lkIDAgPyBfaCA6IDA7XG4gICAgICAgIGNvbnN0IGZha2VXaWR0aCA9IChfayA9IChfaiA9IGZha2VFbGVSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2ogPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9qLm9mZnNldFdpZHRoKSAhPT0gbnVsbCAmJiBfayAhPT0gdm9pZCAwID8gX2sgOiAwO1xuICAgICAgICBjb25zdCBnYXBXaWR0aCA9IHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGhcbiAgICAgICAgICAgID8gMjRcbiAgICAgICAgICAgIDogKHByZWZpeFdpZHRoICYmIHN1ZmZpeFdpZHRoKSB8fCAocHJlZml4V2lkdGggJiYgY3VycmVuY3lXaWR0aCkgfHwgKHN1ZmZpeFdpZHRoICYmIGN1cnJlbmN5V2lkdGgpXG4gICAgICAgICAgICAgICAgPyAxNlxuICAgICAgICAgICAgICAgIDogcHJlZml4V2lkdGggfHwgc3VmZml4V2lkdGggfHwgY3VycmVuY3lXaWR0aFxuICAgICAgICAgICAgICAgICAgICA/IDhcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICBjb25zdCBtYXhXaWR0aCA9IGNvbnRhaW5lcldpZHRoIC0gcHJlZml4V2lkdGggLSBzdWZmaXhXaWR0aCAtIGN1cnJlbmN5V2lkdGggLSBnYXBXaWR0aDtcbiAgICAgICAgY29uc3QgaXNNYXggPSBmYWtlV2lkdGggPj0gbWF4V2lkdGg7XG4gICAgICAgIHNldFdpZHRoKE1hdGgubWluKG1heFdpZHRoLCBNYXRoLm1heChmYWtlV2lkdGgsIE1JTl9JTlBVVF9XSURUSCkpKTtcbiAgICAgICAgc2V0SXNNYXhXaWR0aChpc01heCk7XG4gICAgICAgIGlmIChpc0ZvY3VzKVxuICAgICAgICAgICAgc2Nyb2xsVG9FbmQodHJ1ZSk7XG4gICAgfSwgW192YWx1ZSwgcHJlZml4LCBzdWZmaXgsIGN1cnJlbmN5LCBpc0ZvY3VzXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgLy8gY2xlYXIgbmVnYXRpdmUgc2lnbiBpZiBub3QgYWxsb3dlZFxuICAgICAgICBpZiAobmVnYXRpdmUpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09ICd1bmRlZmluZWQnKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoX3ZhbHVlID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmIChfdmFsdWUgPT09ICctJykge1xuICAgICAgICAgICAgc2V0VmFsdWUobnVsbCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKF92YWx1ZS5zdGFydHNXaXRoKCctJykpXG4gICAgICAgICAgICBzZXRWYWx1ZShfdmFsdWUuc2xpY2UoMSkpO1xuICAgIH0sIFtuZWdhdGl2ZSwgdmFsdWUsIF92YWx1ZV0pO1xuICAgIHVzZUxheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jO1xuICAgICAgICBsZXQgdmFsID0gdmFsdWU7XG4gICAgICAgIGxldCBoYXNEZWNpbWFsUG9pbnQgPSBmYWxzZTtcbiAgICAgICAgY29uc3QgeyBfdmFsdWUsIGZvcm1hdHRlZFZhbHVlIH0gPSB2YWx1ZVJlZi5jdXJyZW50O1xuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGlmICh2YWwgPT09ICcnKSB7XG4gICAgICAgICAgICAgICAgdmFsID0gbnVsbDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHZhbCA9IG5vcm1hbGl6ZU51bWJlcklucHV0KHZhbCkuc3BsaXQoJywnKS5qb2luKCcnKTtcbiAgICAgICAgICAgICAgICBoYXNEZWNpbWFsUG9pbnQgPSAhIXZhbCAmJiB2YWwuZW5kc1dpdGgoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRGVjaW1hbFBvaW50KVxuICAgICAgICAgICAgICAgICAgICB2YWwgPSB2YWwuc2xpY2UoMCwgLTEpO1xuICAgICAgICAgICAgICAgIGlmICghbmVnYXRpdmUpXG4gICAgICAgICAgICAgICAgICAgIHZhbCA9IHZhbC5yZXBsYWNlKC8tL2csICcnKTtcbiAgICAgICAgICAgICAgICBpZiAobmVnYXRpdmUgJiYgdmFsID09PSAnLScpIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoJy0nKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoaXNOYU4oK3ZhbCkpXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmICh2YWwgIT09IG51bGwgJiYgdHlwZW9mIHZhbCAhPT0gJ251bWJlcicgJiYgdHlwZW9mIHZhbCAhPT0gJ2JpZ2ludCcpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGlmICghbmVnYXRpdmUpIHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgICAgICAgICAgICAgIHZhbCA9IE1hdGguYWJzKHZhbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnYmlnaW50Jykge1xuICAgICAgICAgICAgICAgIGNvbnN0IHplcm8gPSBCaWdJbnQoMCk7XG4gICAgICAgICAgICAgICAgdmFsID0gdmFsIDwgemVybyA/IC12YWwgOiB2YWw7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCh0eXBlb2YgdmFsID09PSAnc3RyaW5nJyB8fCB0eXBlb2YgdmFsID09PSAnbnVtYmVyJykgJiYgKHR5cGVvZiBtYXhGcmFjdGlvbkRpZ2l0cyA9PT0gJ251bWJlcicgfHwgdHlwZW9mIG1heEZyYWN0aW9uRGlnaXRzID09PSAnYmlnaW50JykpIHtcbiAgICAgICAgICAgIGNvbnN0IFtpbnQsIGRlY2ltYWxdID0gKCcnICsgdmFsKS5zcGxpdCgnLicpO1xuICAgICAgICAgICAgY29uc3QgbWF4RGVjaW1hbHMgPSBOdW1iZXIobWF4RnJhY3Rpb25EaWdpdHMpO1xuICAgICAgICAgICAgaWYgKGRlY2ltYWwgIT0gbnVsbCAmJiBkZWNpbWFsLmxlbmd0aCA+IG1heERlY2ltYWxzKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgW29sZEludCxdID0gZm9ybWF0dGVkVmFsdWUuc3BsaXQoJy4nKTtcbiAgICAgICAgICAgICAgICBpZiAob2xkSW50LnNwbGl0KCcsJykuam9pbignJykgPT0gaW50KVxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgdmFsID0gYCR7aW50fS4ke2RlY2ltYWwuc2xpY2UoMCwgbWF4RGVjaW1hbHMpfWA7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWwgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWwgPT09ICdiaWdpbnQnKSB7XG4gICAgICAgICAgICB2YWwgPSBjYWxjVmFsdWVJblJhbmdlKCcnICsgdmFsLCBtaW4sIG1heCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHZhbCA9PT0gJycgfHwgdmFsID09IG51bGwpIHtcbiAgICAgICAgICAgIHNldFZhbHVlKG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY29uc3Qgc3RyVmFsID0gJycgKyB2YWw7XG4gICAgICAgICAgICBjb25zdCBkZWNpbWFscyA9IChfYyA9IChfYiA9IChfYSA9IHN0clZhbC5tYXRjaCgvXFwuKFxcZCspJC8pKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2FbMV0pID09PSBudWxsIHx8IF9iID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYi5sZW5ndGgpICE9PSBudWxsICYmIF9jICE9PSB2b2lkIDAgPyBfYyA6IDA7XG4gICAgICAgICAgICBjb25zdCBibiA9IEJpZ051bWJlcihzdHJWYWwpO1xuICAgICAgICAgICAgbGV0IG5vcm1hbGl6ZWQgPSBibi50b0ZpeGVkKGRlY2ltYWxzKTtcbiAgICAgICAgICAgIGlmIChuZWdhdGl2ZSAmJiBzdHJWYWwudHJpbSgpLnN0YXJ0c1dpdGgoJy0nKSAmJiBibi5pc1plcm8oKSkge1xuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnN0YXJ0c1dpdGgoJy0nKSA/IG5vcm1hbGl6ZWQgOiBgLSR7bm9ybWFsaXplZH1gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgcmVzID0gYCR7bm9ybWFsaXplZH0ke2hhc0RlY2ltYWxQb2ludCA/ICcuJyA6ICcnfWAudHJpbSgpO1xuICAgICAgICAgICAgc2V0VmFsdWUocmVzKTtcbiAgICAgICAgfVxuICAgICAgICBjYWxjQ2FyZXRQb3ModmFsICE9PSBudWxsICYmIHZhbCAhPT0gdm9pZCAwID8gdmFsIDogJycsIGhhc0RlY2ltYWxQb2ludCA/IDMgOiAwLCBNYXRoLm1heChpbnB1dENhcmV0UG9zaXRpb25SZWYuY3VycmVudCwgMCkpO1xuICAgICAgICBpZ25vcmVTZWxlY3RSZWYuY3VycmVudCA9IHRydWU7XG4gICAgfSwgW3ZhbHVlLCBtYXhGcmFjdGlvbkRpZ2l0cywgbWluLCBtYXgsIG5lZ2F0aXZlXSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHtcbiAgICAgICAgICAgIHZhbHVlLFxuICAgICAgICAgICAgX3ZhbHVlLFxuICAgICAgICAgICAgZm9ybWF0dGVkVmFsdWUsXG4gICAgICAgICAgICBtaW4sXG4gICAgICAgICAgICBtYXgsXG4gICAgICAgICAgICBuZWdhdGl2ZSxcbiAgICAgICAgICAgIG1heEZyYWN0aW9uRGlnaXRzXG4gICAgICAgIH07XG4gICAgfSwgW192YWx1ZSwgdmFsdWUsIGZvcm1hdHRlZFZhbHVlLCBtaW4sIG1heCwgbmVnYXRpdmUsIG1heEZyYWN0aW9uRGlnaXRzXSk7XG4gICAgcmV0dXJuIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCd3cmFwcGVyJywgam9pbkNscyh3cmFwcGVyQ2xzLCBjbGFzc2VzKHNpemUpLCBpbnZhbGlkICYmIGNsYXNzZXMoJ2ludmFsaWQnKSwgc3VjY2VzcyAmJiBjbGFzc2VzKCdzdWNjZXNzJyksIGRpc2FibGVkICYmIGNsYXNzZXMoJ2Rpc2FibGVkJyksIHJlYWRPbmx5ICYmIGNsYXNzZXMoJ3JlYWRvbmx5JyksIF92YWx1ZSAmJiBjbGFzc2VzKCdmaWxsZWQnKSkpLCBjaGlsZHJlbjogW2xhYmVsXG4gICAgICAgICAgICAgICAgPyBsb2FkaW5nXG4gICAgICAgICAgICAgICAgICAgID8gX2pzeChTa2VsZXRvbiwgeyB3aWR0aDogJzcycHgnLCBoZWlnaHQ6ICcxOHB4JywgY2xhc3NOYW1lOiBjbGFzc2VzKCdsYWJlbC1sb2FkaW5nJykgfSlcbiAgICAgICAgICAgICAgICAgICAgOiBfanN4KFwic3BhblwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbGFiZWwnLCBqb2luQ2xzKHJlcXVpcmVkICYmIGNsYXNzZXMoJ2xhYmVsLXJlcXVpcmVkJyksIGxhYmVsQ2xzKSksIGNoaWxkcmVuOiBsYWJlbCB9KVxuICAgICAgICAgICAgICAgIDogbnVsbCwgX2pzeHMoXCJkaXZcIiwgeyByZWY6IGNvbnRhaW5lclJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKHZvaWQgMCwgam9pbkNscyhjbGFzc05hbWUsIGlzRm9jdXMgJiYgY2xhc3NlcygnZm9jdXMnKSkpLCBvbkNsaWNrOiAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICAgICAgICAgIGlmIChlLnRhcmdldCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQpXG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICAgICAgICAgIChfYSA9IGlucHV0UmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF9hID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYS5mb2N1cygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNNYXhXaWR0aClcbiAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbFRvRW5kKCk7XG4gICAgICAgICAgICAgICAgfSwgY2hpbGRyZW46IFtwcmVmaXggJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IHByZWZpeFJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdwcmVmaXgnLCBwcmVmaXhFbGVDbHMpLCBjaGlsZHJlbjogcHJlZml4IH0pLCBfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdlbGVtZW50JywgKCFpc0ZvY3VzICYmIGlzTWF4V2lkdGgpID8gY2xhc3NlcygnZWxlbWVudC1tYXgnKSA6ICcnKSwgY2hpbGRyZW46IF9qc3goXCJpbnB1dFwiLCBPYmplY3QuYXNzaWduKHt9LCByZXN0LCB7IHJlZjogaW5wdXRSZWYsIHZhbHVlOiBmb3JtYXR0ZWRWYWx1ZSwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyLCByZWFkT25seTogcmVhZE9ubHksIGRpc2FibGVkOiBkaXNhYmxlZCwgc3R5bGU6IHsgJy0taW5wdXQtd2lkdGgnOiBgJHtfd2lkdGh9cHhgIH0sIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsIG9uU2VsZWN0OiBoYW5kbGVTZWxlY3QsIG9uRm9jdXM6IGUgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRJc0ZvY3VzKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzID09PSBudWxsIHx8IG9uRm9jdXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uRm9jdXMoZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSwgb25CbHVyOiBlID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SXNGb2N1cyhmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uQmx1ciA9PT0gbnVsbCB8fCBvbkJsdXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG9uQmx1cihlKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IH0pKSB9KSwgY3VycmVuY3kgJiYgX2pzeChcInNwYW5cIiwgeyByZWY6IGN1cnJlbmN5UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ2N1cnJlbmN5JyksIGNoaWxkcmVuOiBjdXJyZW5jeSB9KSwgbG9hZGluZyA/IF9qc3goU3Bpbm5lciwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeC1sb2FkaW5nJyksIHN0cm9rZVdpZHRoOiAnNCcgfSkgOiBzdWZmaXggPyBfanN4KFwic3BhblwiLCB7IHJlZjogc3VmZml4UmVmLCBjbGFzc05hbWU6IGNsYXNzZXMoJ3N1ZmZpeCcsIHN1ZmZpeEVsZUNscyksIGNoaWxkcmVuOiBzdWZmaXggfSkgOiBudWxsLCBfanN4KFwic3BhblwiLCB7IHJlZjogZmFrZUVsZVJlZiwgY2xhc3NOYW1lOiBjbGFzc2VzKCdmYWtlJyksIG9uQ2xpY2s6IGUgPT4gZS5zdG9wUHJvcGFnYXRpb24oKSwgY2hpbGRyZW46IGZvcm1hdHRlZFZhbHVlIH0pXSB9KSwgKG1lc3NhZ2UgfHwgZm9vdG5vdGUpICYmIF9qc3hzKFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBjbGFzc2VzKCdleHRyYScpLCBjaGlsZHJlbjogW21lc3NhZ2UgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnbWVzc2FnZScsIG1lc3NhZ2VDbHMpLCBjaGlsZHJlbjogbWVzc2FnZSB9KSwgZm9vdG5vdGUgJiYgX2pzeChcImRpdlwiLCB7IGNsYXNzTmFtZTogY2xhc3NlcygnZm9vdG5vdGUnLCBmb290bm90ZUNscyksIGNoaWxkcmVuOiBmb290bm90ZSB9KV0gfSldIH0pO1xufTtcbmV4cG9ydCBkZWZhdWx0IG1lbW8oSW5wdXRBbW91bnQpOyIsbnVsbF0sInNvdXJjZVJvb3QiOiIuLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMifQ==