intl-messageformat 9.4.3 → 9.4.7

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,6 +28,8 @@
28
28
  };
29
29
 
30
30
  function __extends(d, b) {
31
+ if (typeof b !== "function" && b !== null)
32
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
31
33
  extendStatics(d, b);
32
34
  function __() { this.constructor = d; }
33
35
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
@@ -44,6 +46,7 @@
44
46
  return __assign.apply(this, arguments);
45
47
  };
46
48
 
49
+ /** @deprecated */
47
50
  function __spreadArrays() {
48
51
  for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
49
52
  for (var r = Array(s), k = 0, i = 0; i < il; i++)
@@ -260,6 +263,8 @@
260
263
  }
261
264
  var FRACTION_PRECISION_REGEX = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g;
262
265
  var SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\+|#+)?$/g;
266
+ var INTEGER_WIDTH_REGEX = /(\*)(0+)|(#+)(0+)|(0+)/g;
267
+ var CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;
263
268
  function parseSignificantPrecision(str) {
264
269
  var result = {};
265
270
  str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {
@@ -293,33 +298,71 @@
293
298
  signDisplay: 'auto',
294
299
  };
295
300
  case 'sign-accounting':
301
+ case '()':
296
302
  return {
297
303
  currencySign: 'accounting',
298
304
  };
299
305
  case 'sign-always':
306
+ case '+!':
300
307
  return {
301
308
  signDisplay: 'always',
302
309
  };
303
310
  case 'sign-accounting-always':
311
+ case '()!':
304
312
  return {
305
313
  signDisplay: 'always',
306
314
  currencySign: 'accounting',
307
315
  };
308
316
  case 'sign-except-zero':
317
+ case '+?':
309
318
  return {
310
319
  signDisplay: 'exceptZero',
311
320
  };
312
321
  case 'sign-accounting-except-zero':
322
+ case '()?':
313
323
  return {
314
324
  signDisplay: 'exceptZero',
315
325
  currencySign: 'accounting',
316
326
  };
317
327
  case 'sign-never':
328
+ case '+_':
318
329
  return {
319
330
  signDisplay: 'never',
320
331
  };
321
332
  }
322
333
  }
334
+ function parseConciseScientificAndEngineeringStem(stem) {
335
+ // Engineering
336
+ var result;
337
+ if (stem[0] === 'E' && stem[1] === 'E') {
338
+ result = {
339
+ notation: 'engineering',
340
+ };
341
+ stem = stem.slice(2);
342
+ }
343
+ else if (stem[0] === 'E') {
344
+ result = {
345
+ notation: 'scientific',
346
+ };
347
+ stem = stem.slice(1);
348
+ }
349
+ if (result) {
350
+ var signDisplay = stem.slice(0, 2);
351
+ if (signDisplay === '+!') {
352
+ result.signDisplay = 'always';
353
+ stem = stem.slice(2);
354
+ }
355
+ else if (signDisplay === '+?') {
356
+ result.signDisplay = 'exceptZero';
357
+ stem = stem.slice(2);
358
+ }
359
+ if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {
360
+ throw new Error('Malformed concise eng/scientific notation');
361
+ }
362
+ result.minimumIntegerDigits = stem.length;
363
+ }
364
+ return result;
365
+ }
323
366
  function parseNotationOptions(opt) {
324
367
  var result = {};
325
368
  var signOpts = parseSign(opt);
@@ -337,13 +380,19 @@
337
380
  var token = tokens_1[_i];
338
381
  switch (token.stem) {
339
382
  case 'percent':
383
+ case '%':
384
+ result.style = 'percent';
385
+ continue;
386
+ case '%x100':
340
387
  result.style = 'percent';
388
+ result.scale = 100;
341
389
  continue;
342
390
  case 'currency':
343
391
  result.style = 'currency';
344
392
  result.currency = token.options[0];
345
393
  continue;
346
394
  case 'group-off':
395
+ case ',_':
347
396
  result.useGrouping = false;
348
397
  continue;
349
398
  case 'precision-integer':
@@ -351,14 +400,17 @@
351
400
  result.maximumFractionDigits = 0;
352
401
  continue;
353
402
  case 'measure-unit':
403
+ case 'unit':
354
404
  result.style = 'unit';
355
405
  result.unit = icuUnitToEcma(token.options[0]);
356
406
  continue;
357
407
  case 'compact-short':
408
+ case 'K':
358
409
  result.notation = 'compact';
359
410
  result.compactDisplay = 'short';
360
411
  continue;
361
412
  case 'compact-long':
413
+ case 'KK':
362
414
  result.notation = 'compact';
363
415
  result.compactDisplay = 'long';
364
416
  continue;
@@ -390,11 +442,34 @@
390
442
  case 'scale':
391
443
  result.scale = parseFloat(token.options[0]);
392
444
  continue;
445
+ // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width
446
+ case 'integer-width':
447
+ if (token.options.length > 1) {
448
+ throw new RangeError('integer-width stems only accept a single optional option');
449
+ }
450
+ token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {
451
+ if (g1) {
452
+ result.minimumIntegerDigits = g2.length;
453
+ }
454
+ else if (g3 && g4) {
455
+ throw new Error('We currently do not support maximum integer digits');
456
+ }
457
+ else if (g5) {
458
+ throw new Error('We currently do not support exact integer digits');
459
+ }
460
+ return '';
461
+ });
462
+ continue;
463
+ }
464
+ // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width
465
+ if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {
466
+ result.minimumIntegerDigits = token.stem.length;
467
+ continue;
393
468
  }
394
- // Precision
395
- // https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#fraction-precision
396
- // precision-integer case
397
469
  if (FRACTION_PRECISION_REGEX.test(token.stem)) {
470
+ // Precision
471
+ // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision
472
+ // precision-integer case
398
473
  if (token.options.length > 1) {
399
474
  throw new RangeError('Fraction-precision stems only accept a single optional option');
400
475
  }
@@ -423,6 +498,7 @@
423
498
  }
424
499
  continue;
425
500
  }
501
+ // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision
426
502
  if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {
427
503
  result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));
428
504
  continue;
@@ -431,6 +507,10 @@
431
507
  if (signOpts) {
432
508
  result = __assign(__assign({}, result), signOpts);
433
509
  }
510
+ var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);
511
+ if (conciseScientificAndEngineeringOpts) {
512
+ result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);
513
+ }
434
514
  }
435
515
  return result;
436
516
  }
@@ -3710,6 +3790,7 @@
3710
3790
  strategies: strategies
3711
3791
  }));
3712
3792
 
3793
+ exports.ErrorCode = void 0;
3713
3794
  (function (ErrorCode) {
3714
3795
  // When we have a placeholder but no value to format
3715
3796
  ErrorCode["MISSING_VALUE"] = "MISSING_VALUE";
@@ -3753,6 +3834,7 @@
3753
3834
  return MissingValueError;
3754
3835
  }(FormatError));
3755
3836
 
3837
+ exports.PART_TYPE = void 0;
3756
3838
  (function (PART_TYPE) {
3757
3839
  PART_TYPE[PART_TYPE["literal"] = 0] = "literal";
3758
3840
  PART_TYPE[PART_TYPE["object"] = 1] = "object";
@@ -4169,4 +4251,4 @@
4169
4251
  Object.defineProperty(exports, '__esModule', { value: true });
4170
4252
 
4171
4253
  })));
4172
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50bC1tZXNzYWdlZm9ybWF0LnVtZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyL2xpYi9zcmMvdHlwZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW50bC1tZXNzYWdlZm9ybWF0LXBhcnNlci9saWIvc3JjL3NrZWxldG9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGwtbWVzc2FnZWZvcm1hdC1wYXJzZXIvbGliL3NyYy9wYXJzZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW50bC1tZXNzYWdlZm9ybWF0LXBhcnNlci9saWIvc3JjL25vcm1hbGl6ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9mYXN0LW1lbW9pemUvc3JjL2luZGV4LmpzIiwibGliL3NyYy9lcnJvci5qcyIsImxpYi9zcmMvZm9ybWF0dGVycy5qcyIsImxpYi9zcmMvY29yZS5qcyIsImxpYi9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fbWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpIHtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5tZXRhZGF0YSA9PT0gXCJmdW5jdGlvblwiKSByZXR1cm4gUmVmbGVjdC5tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2F3YWl0ZXIodGhpc0FyZywgX2FyZ3VtZW50cywgUCwgZ2VuZXJhdG9yKSB7XHJcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGZ1bmN0aW9uKCkgeyByZXR1cm4gbVtrXTsgfSB9KTtcclxufSkgOiAoZnVuY3Rpb24obywgbSwgaywgazIpIHtcclxuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XHJcbiAgICBvW2syXSA9IG1ba107XHJcbn0pO1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXhwb3J0U3RhcihtLCBvKSB7XHJcbiAgICBmb3IgKHZhciBwIGluIG0pIGlmIChwICE9PSBcImRlZmF1bHRcIiAmJiAhT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG8sIHApKSBfX2NyZWF0ZUJpbmRpbmcobywgbSwgcCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3ZhbHVlcyhvKSB7XHJcbiAgICB2YXIgcyA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBTeW1ib2wuaXRlcmF0b3IsIG0gPSBzICYmIG9bc10sIGkgPSAwO1xyXG4gICAgaWYgKG0pIHJldHVybiBtLmNhbGwobyk7XHJcbiAgICBpZiAobyAmJiB0eXBlb2Ygby5sZW5ndGggPT09IFwibnVtYmVyXCIpIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IocyA/IFwiT2JqZWN0IGlzIG5vdCBpdGVyYWJsZS5cIiA6IFwiU3ltYm9sLml0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XHJcbn0pIDogZnVuY3Rpb24obywgdikge1xyXG4gICAgb1tcImRlZmF1bHRcIl0gPSB2O1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XHJcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwKSB7XHJcbiAgICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByaXZhdGVNYXAuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHByaXZhdGVNYXAsIHZhbHVlKSB7XHJcbiAgICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gc2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZU1hcC5zZXQocmVjZWl2ZXIsIHZhbHVlKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxufVxyXG4iLCJleHBvcnQgdmFyIFRZUEU7XG4oZnVuY3Rpb24gKFRZUEUpIHtcbiAgICAvKipcbiAgICAgKiBSYXcgdGV4dFxuICAgICAqL1xuICAgIFRZUEVbVFlQRVtcImxpdGVyYWxcIl0gPSAwXSA9IFwibGl0ZXJhbFwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvbyBhbnkgZm9ybWF0LCBlLmcgYHZhcmAgaW4gYHRoaXMgaXMgYSB7dmFyfWBcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJhcmd1bWVudFwiXSA9IDFdID0gXCJhcmd1bWVudFwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvIG51bWJlciBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJudW1iZXJcIl0gPSAyXSA9IFwibnVtYmVyXCI7XG4gICAgLyoqXG4gICAgICogVmFyaWFibGUgdy8gZGF0ZSBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJkYXRlXCJdID0gM10gPSBcImRhdGVcIjtcbiAgICAvKipcbiAgICAgKiBWYXJpYWJsZSB3LyB0aW1lIGZvcm1hdFxuICAgICAqL1xuICAgIFRZUEVbVFlQRVtcInRpbWVcIl0gPSA0XSA9IFwidGltZVwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvIHNlbGVjdCBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJzZWxlY3RcIl0gPSA1XSA9IFwic2VsZWN0XCI7XG4gICAgLyoqXG4gICAgICogVmFyaWFibGUgdy8gcGx1cmFsIGZvcm1hdFxuICAgICAqL1xuICAgIFRZUEVbVFlQRVtcInBsdXJhbFwiXSA9IDZdID0gXCJwbHVyYWxcIjtcbiAgICAvKipcbiAgICAgKiBPbmx5IHBvc3NpYmxlIHdpdGhpbiBwbHVyYWwgYXJndW1lbnQuXG4gICAgICogVGhpcyBpcyB0aGUgYCNgIHN5bWJvbCB0aGF0IHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgY291bnQuXG4gICAgICovXG4gICAgVFlQRVtUWVBFW1wicG91bmRcIl0gPSA3XSA9IFwicG91bmRcIjtcbiAgICAvKipcbiAgICAgKiBYTUwtbGlrZSB0YWdcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJ0YWdcIl0gPSA4XSA9IFwidGFnXCI7XG59KShUWVBFIHx8IChUWVBFID0ge30pKTtcbmV4cG9ydCB2YXIgU0tFTEVUT05fVFlQRTtcbihmdW5jdGlvbiAoU0tFTEVUT05fVFlQRSkge1xuICAgIFNLRUxFVE9OX1RZUEVbU0tFTEVUT05fVFlQRVtcIm51bWJlclwiXSA9IDBdID0gXCJudW1iZXJcIjtcbiAgICBTS0VMRVRPTl9UWVBFW1NLRUxFVE9OX1RZUEVbXCJkYXRlVGltZVwiXSA9IDFdID0gXCJkYXRlVGltZVwiO1xufSkoU0tFTEVUT05fVFlQRSB8fCAoU0tFTEVUT05fVFlQRSA9IHt9KSk7XG4vKipcbiAqIFR5cGUgR3VhcmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xpdGVyYWxFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUubGl0ZXJhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0FyZ3VtZW50RWxlbWVudChlbCkge1xuICAgIHJldHVybiBlbC50eXBlID09PSBUWVBFLmFyZ3VtZW50O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyRWxlbWVudChlbCkge1xuICAgIHJldHVybiBlbC50eXBlID09PSBUWVBFLm51bWJlcjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGVFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUuZGF0ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1RpbWVFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUudGltZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdEVsZW1lbnQoZWwpIHtcbiAgICByZXR1cm4gZWwudHlwZSA9PT0gVFlQRS5zZWxlY3Q7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNQbHVyYWxFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUucGx1cmFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUG91bmRFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUucG91bmQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUYWdFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUudGFnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyU2tlbGV0b24oZWwpIHtcbiAgICByZXR1cm4gISEoZWwgJiYgdHlwZW9mIGVsID09PSAnb2JqZWN0JyAmJiBlbC50eXBlID09PSAwIC8qIG51bWJlciAqLyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlVGltZVNrZWxldG9uKGVsKSB7XG4gICAgcmV0dXJuICEhKGVsICYmIHR5cGVvZiBlbCA9PT0gJ29iamVjdCcgJiYgZWwudHlwZSA9PT0gMSAvKiBkYXRlVGltZSAqLyk7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGl0ZXJhbEVsZW1lbnQodmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBUWVBFLmxpdGVyYWwsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU51bWJlckVsZW1lbnQodmFsdWUsIHN0eWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogVFlQRS5udW1iZXIsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgIH07XG59XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuLyoqXG4gKiBodHRwczovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL2NhcmlkeS9pbnRsLWRhdGV0aW1lZm9ybWF0LXBhdHRlcm4vYmxvYi9tYXN0ZXIvaW5kZXguanNcbiAqIHdpdGggc29tZSB0d2Vha3NcbiAqL1xudmFyIERBVEVfVElNRV9SRUdFWCA9IC8oPzpbRWVjXXsxLDZ9fEd7MSw1fXxbUXFdezEsNX18KD86W3lZdXJdK3xVezEsNX0pfFtNTF17MSw1fXxkezEsMn18RHsxLDN9fEZ7MX18W2FiQl17MSw1fXxbaGtIS117MSwyfXx3ezEsMn18V3sxfXxtezEsMn18c3sxLDJ9fFt6Wk92VnhYXXsxLDR9KSg/PShbXiddKidbXiddKicpKlteJ10qJCkvZztcbi8qKlxuICogUGFyc2UgRGF0ZSB0aW1lIHNrZWxldG9uIGludG8gSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnNcbiAqIFJlZjogaHR0cHM6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiBAcHVibGljXG4gKiBAcGFyYW0gc2tlbGV0b24gc2tlbGV0b24gc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGVUaW1lU2tlbGV0b24oc2tlbGV0b24pIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgc2tlbGV0b24ucmVwbGFjZShEQVRFX1RJTUVfUkVHRVgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICB2YXIgbGVuID0gbWF0Y2gubGVuZ3RoO1xuICAgICAgICBzd2l0Y2ggKG1hdGNoWzBdKSB7XG4gICAgICAgICAgICAvLyBFcmFcbiAgICAgICAgICAgIGNhc2UgJ0cnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5lcmEgPSBsZW4gPT09IDQgPyAnbG9uZycgOiBsZW4gPT09IDUgPyAnbmFycm93JyA6ICdzaG9ydCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBZZWFyXG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXN1bHQueWVhciA9IGxlbiA9PT0gMiA/ICcyLWRpZ2l0JyA6ICdudW1lcmljJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1knOlxuICAgICAgICAgICAgY2FzZSAndSc6XG4gICAgICAgICAgICBjYXNlICdVJzpcbiAgICAgICAgICAgIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgWS91L1UvcmAgKHllYXIpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkLCB1c2UgYHlgIGluc3RlYWQnKTtcbiAgICAgICAgICAgIC8vIFF1YXJ0ZXJcbiAgICAgICAgICAgIGNhc2UgJ3EnOlxuICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BxL1FgIChxdWFydGVyKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgLy8gTW9udGhcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm1vbnRoID0gWydudW1lcmljJywgJzItZGlnaXQnLCAnc2hvcnQnLCAnbG9uZycsICduYXJyb3cnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIFdlZWtcbiAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2B3L1dgICh3ZWVrKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmRheSA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgIGNhc2UgJ0YnOlxuICAgICAgICAgICAgY2FzZSAnZyc6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BEL0YvZ2AgKGRheSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgZGAgaW5zdGVhZCcpO1xuICAgICAgICAgICAgLy8gV2Vla2RheVxuICAgICAgICAgICAgY2FzZSAnRSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LndlZWtkYXkgPSBsZW4gPT09IDQgPyAnc2hvcnQnIDogbGVuID09PSA1ID8gJ25hcnJvdycgOiAnc2hvcnQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZSc6XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA8IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BlLi5lZWVgICh3ZWVrZGF5KSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQud2Vla2RheSA9IFsnc2hvcnQnLCAnbG9uZycsICduYXJyb3cnLCAnc2hvcnQnXVtsZW4gLSA0XTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgIGlmIChsZW4gPCA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgYy4uY2NjYCAod2Vla2RheSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LndlZWtkYXkgPSBbJ3Nob3J0JywgJ2xvbmcnLCAnbmFycm93JywgJ3Nob3J0J11bbGVuIC0gNF07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBQZXJpb2RcbiAgICAgICAgICAgIGNhc2UgJ2EnOiAvLyBBTSwgUE1cbiAgICAgICAgICAgICAgICByZXN1bHQuaG91cjEyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2InOiAvLyBhbSwgcG0sIG5vb24sIG1pZG5pZ2h0XG4gICAgICAgICAgICBjYXNlICdCJzogLy8gZmxleGlibGUgZGF5IHBlcmlvZHNcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYGIvQmAgKHBlcmlvZCkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgYWAgaW5zdGVhZCcpO1xuICAgICAgICAgICAgLy8gSG91clxuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXJDeWNsZSA9ICdoMTInO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyQ3ljbGUgPSAnaDIzJztcbiAgICAgICAgICAgICAgICByZXN1bHQuaG91ciA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdLJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuaG91ckN5Y2xlID0gJ2gxMSc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXIgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnayc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXJDeWNsZSA9ICdoMjQnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2onOlxuICAgICAgICAgICAgY2FzZSAnSic6XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYGovSi9DYCAoaG91cikgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgaC9IL0sva2AgaW5zdGVhZCcpO1xuICAgICAgICAgICAgLy8gTWludXRlXG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXN1bHQubWludXRlID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIFNlY29uZFxuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LnNlY29uZCA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgUy9BYCAoc2Vjb25kKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCwgdXNlIGBzYCBpbnN0ZWFkJyk7XG4gICAgICAgICAgICAvLyBab25lXG4gICAgICAgICAgICBjYXNlICd6JzogLy8gMS4uMywgNDogc3BlY2lmaWMgbm9uLWxvY2F0aW9uIGZvcm1hdFxuICAgICAgICAgICAgICAgIHJlc3VsdC50aW1lWm9uZU5hbWUgPSBsZW4gPCA0ID8gJ3Nob3J0JyA6ICdsb25nJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1onOiAvLyAxLi4zLCA0LCA1OiBUaGUgSVNPODYwMSB2YXJpb3MgZm9ybWF0c1xuICAgICAgICAgICAgY2FzZSAnTyc6IC8vIDEsIDQ6IG1pbGlzZWNvbmRzIGluIGRheSBzaG9ydCwgbG9uZ1xuICAgICAgICAgICAgY2FzZSAndic6IC8vIDEsIDQ6IGdlbmVyaWMgbm9uLWxvY2F0aW9uIGZvcm1hdFxuICAgICAgICAgICAgY2FzZSAnVic6IC8vIDEsIDIsIDMsIDQ6IHRpbWUgem9uZSBJRCBvciBjaXR5XG4gICAgICAgICAgICBjYXNlICdYJzogLy8gMSwgMiwgMywgNDogVGhlIElTTzg2MDEgdmFyaW9zIGZvcm1hdHNcbiAgICAgICAgICAgIGNhc2UgJ3gnOiAvLyAxLCAyLCAzLCA0OiBUaGUgSVNPODYwMSB2YXJpb3MgZm9ybWF0c1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgWi9PL3YvVi9YL3hgICh0aW1lWm9uZSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgemAgaW5zdGVhZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gaWN1VW5pdFRvRWNtYSh1bml0KSB7XG4gICAgcmV0dXJuIHVuaXQucmVwbGFjZSgvXiguKj8pLS8sICcnKTtcbn1cbnZhciBGUkFDVElPTl9QUkVDSVNJT05fUkVHRVggPSAvXlxcLig/OigwKykoXFwqKT98KCMrKXwoMCspKCMrKSkkL2c7XG52YXIgU0lHTklGSUNBTlRfUFJFQ0lTSU9OX1JFR0VYID0gL14oQCspPyhcXCt8IyspPyQvZztcbmZ1bmN0aW9uIHBhcnNlU2lnbmlmaWNhbnRQcmVjaXNpb24oc3RyKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIHN0ci5yZXBsYWNlKFNJR05JRklDQU5UX1BSRUNJU0lPTl9SRUdFWCwgZnVuY3Rpb24gKF8sIGcxLCBnMikge1xuICAgICAgICAvLyBAQEAgY2FzZVxuICAgICAgICBpZiAodHlwZW9mIGcyICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgcmVzdWx0Lm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGcxLmxlbmd0aDtcbiAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQEBAKyBjYXNlXG4gICAgICAgIGVsc2UgaWYgKGcyID09PSAnKycpIHtcbiAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgLy8gLiMjIyBjYXNlXG4gICAgICAgIGVsc2UgaWYgKGcxWzBdID09PSAnIycpIHtcbiAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgIH1cbiAgICAgICAgLy8gLkBAIyMgb3IgLkBAQCBjYXNlXG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcmVzdWx0Lm1pbmltdW1TaWduaWZpY2FudERpZ2l0cyA9IGcxLmxlbmd0aDtcbiAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMgPVxuICAgICAgICAgICAgICAgIGcxLmxlbmd0aCArICh0eXBlb2YgZzIgPT09ICdzdHJpbmcnID8gZzIubGVuZ3RoIDogMCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICcnO1xuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBwYXJzZVNpZ24oc3RyKSB7XG4gICAgc3dpdGNoIChzdHIpIHtcbiAgICAgICAgY2FzZSAnc2lnbi1hdXRvJzpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICdhdXRvJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3NpZ24tYWNjb3VudGluZyc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGN1cnJlbmN5U2lnbjogJ2FjY291bnRpbmcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnc2lnbi1hbHdheXMnOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaWduRGlzcGxheTogJ2Fsd2F5cycsXG4gICAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdzaWduLWFjY291bnRpbmctYWx3YXlzJzpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICdhbHdheXMnLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5U2lnbjogJ2FjY291bnRpbmcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnc2lnbi1leGNlcHQtemVybyc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAnZXhjZXB0WmVybycsXG4gICAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdzaWduLWFjY291bnRpbmctZXhjZXB0LXplcm8nOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaWduRGlzcGxheTogJ2V4Y2VwdFplcm8nLFxuICAgICAgICAgICAgICAgIGN1cnJlbmN5U2lnbjogJ2FjY291bnRpbmcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnc2lnbi1uZXZlcic6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAnbmV2ZXInLFxuICAgICAgICAgICAgfTtcbiAgICB9XG59XG5mdW5jdGlvbiBwYXJzZU5vdGF0aW9uT3B0aW9ucyhvcHQpIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIHNpZ25PcHRzID0gcGFyc2VTaWduKG9wdCk7XG4gICAgaWYgKHNpZ25PcHRzKSB7XG4gICAgICAgIHJldHVybiBzaWduT3B0cztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2tlbGV0b24tc3RlbXMtYW5kLW9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnVtYmVyU2tlbGV0b24odG9rZW5zKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGZvciAodmFyIF9pID0gMCwgdG9rZW5zXzEgPSB0b2tlbnM7IF9pIDwgdG9rZW5zXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciB0b2tlbiA9IHRva2Vuc18xW19pXTtcbiAgICAgICAgc3dpdGNoICh0b2tlbi5zdGVtKSB7XG4gICAgICAgICAgICBjYXNlICdwZXJjZW50JzpcbiAgICAgICAgICAgICAgICByZXN1bHQuc3R5bGUgPSAncGVyY2VudCc7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdjdXJyZW5jeSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LnN0eWxlID0gJ2N1cnJlbmN5JztcbiAgICAgICAgICAgICAgICByZXN1bHQuY3VycmVuY3kgPSB0b2tlbi5vcHRpb25zWzBdO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnZ3JvdXAtb2ZmJzpcbiAgICAgICAgICAgICAgICByZXN1bHQudXNlR3JvdXBpbmcgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3ByZWNpc2lvbi1pbnRlZ2VyJzpcbiAgICAgICAgICAgIGNhc2UgJy4nOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSAwO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnbWVhc3VyZS11bml0JzpcbiAgICAgICAgICAgICAgICByZXN1bHQuc3R5bGUgPSAndW5pdCc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnVuaXQgPSBpY3VVbml0VG9FY21hKHRva2VuLm9wdGlvbnNbMF0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnY29tcGFjdC1zaG9ydCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5vdGF0aW9uID0gJ2NvbXBhY3QnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wYWN0RGlzcGxheSA9ICdzaG9ydCc7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdjb21wYWN0LWxvbmcnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5ub3RhdGlvbiA9ICdjb21wYWN0JztcbiAgICAgICAgICAgICAgICByZXN1bHQuY29tcGFjdERpc3BsYXkgPSAnbG9uZyc7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdzY2llbnRpZmljJzpcbiAgICAgICAgICAgICAgICByZXN1bHQgPSBfX2Fzc2lnbihfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdWx0KSwgeyBub3RhdGlvbjogJ3NjaWVudGlmaWMnIH0pLCB0b2tlbi5vcHRpb25zLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBvcHQpIHsgcmV0dXJuIChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYWxsKSwgcGFyc2VOb3RhdGlvbk9wdGlvbnMob3B0KSkpOyB9LCB7fSkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnZW5naW5lZXJpbmcnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCB7IG5vdGF0aW9uOiAnZW5naW5lZXJpbmcnIH0pLCB0b2tlbi5vcHRpb25zLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBvcHQpIHsgcmV0dXJuIChfX2Fzc2lnbihfX2Fzc2lnbih7fSwgYWxsKSwgcGFyc2VOb3RhdGlvbk9wdGlvbnMob3B0KSkpOyB9LCB7fSkpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnbm90YXRpb24tc2ltcGxlJzpcbiAgICAgICAgICAgICAgICByZXN1bHQubm90YXRpb24gPSAnc3RhbmRhcmQnO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9pY3U0Yy9zb3VyY2UvaTE4bi91bmljb2RlL3VudW1iZXJmb3JtYXR0ZXIuaFxuICAgICAgICAgICAgY2FzZSAndW5pdC13aWR0aC1uYXJyb3cnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5jdXJyZW5jeURpc3BsYXkgPSAnbmFycm93U3ltYm9sJztcbiAgICAgICAgICAgICAgICByZXN1bHQudW5pdERpc3BsYXkgPSAnbmFycm93JztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3VuaXQtd2lkdGgtc2hvcnQnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5jdXJyZW5jeURpc3BsYXkgPSAnY29kZSc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnVuaXREaXNwbGF5ID0gJ3Nob3J0JztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3VuaXQtd2lkdGgtZnVsbC1uYW1lJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuY3VycmVuY3lEaXNwbGF5ID0gJ25hbWUnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC51bml0RGlzcGxheSA9ICdsb25nJztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3VuaXQtd2lkdGgtaXNvLWNvZGUnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5jdXJyZW5jeURpc3BsYXkgPSAnc3ltYm9sJztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3NjYWxlJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuc2NhbGUgPSBwYXJzZUZsb2F0KHRva2VuLm9wdGlvbnNbMF0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFByZWNpc2lvblxuICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2RvY3MvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5tZCNmcmFjdGlvbi1wcmVjaXNpb25cbiAgICAgICAgLy8gcHJlY2lzaW9uLWludGVnZXIgY2FzZVxuICAgICAgICBpZiAoRlJBQ1RJT05fUFJFQ0lTSU9OX1JFR0VYLnRlc3QodG9rZW4uc3RlbSkpIHtcbiAgICAgICAgICAgIGlmICh0b2tlbi5vcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignRnJhY3Rpb24tcHJlY2lzaW9uIHN0ZW1zIG9ubHkgYWNjZXB0IGEgc2luZ2xlIG9wdGlvbmFsIG9wdGlvbicpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdG9rZW4uc3RlbS5yZXBsYWNlKEZSQUNUSU9OX1BSRUNJU0lPTl9SRUdFWCwgZnVuY3Rpb24gKF8sIGcxLCBnMiwgZzMsIGc0LCBnNSkge1xuICAgICAgICAgICAgICAgIC8vIC4wMDAqIGNhc2UgKGJlZm9yZSBJQ1U2NyBpdCB3YXMgLjAwMCspXG4gICAgICAgICAgICAgICAgaWYgKGcyID09PSAnKicpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGcxLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gLiMjIyBjYXNlXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZzMgJiYgZzNbMF0gPT09ICcjJykge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gZzMubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyAuMDAjIyBjYXNlXG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZzQgJiYgZzUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1pbmltdW1GcmFjdGlvbkRpZ2l0cyA9IGc0Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGc0Lmxlbmd0aCArIGc1Lmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiAnJztcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgaWYgKHRva2VuLm9wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHBhcnNlU2lnbmlmaWNhbnRQcmVjaXNpb24odG9rZW4ub3B0aW9uc1swXSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKFNJR05JRklDQU5UX1BSRUNJU0lPTl9SRUdFWC50ZXN0KHRva2VuLnN0ZW0pKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdWx0KSwgcGFyc2VTaWduaWZpY2FudFByZWNpc2lvbih0b2tlbi5zdGVtKSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgc2lnbk9wdHMgPSBwYXJzZVNpZ24odG9rZW4uc3RlbSk7XG4gICAgICAgIGlmIChzaWduT3B0cykge1xuICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHNpZ25PcHRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIiwiLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbi8vIEBnZW5lcmF0ZWRcbmltcG9ydCB7IFRZUEUsIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBwYXJzZURhdGVUaW1lU2tlbGV0b24sIHBhcnNlTnVtYmVyU2tlbGV0b24gfSBmcm9tICcuL3NrZWxldG9uJztcbnZhciBTeW50YXhFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU3ludGF4RXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3ludGF4RXJyb3IobWVzc2FnZSwgZXhwZWN0ZWQsIGZvdW5kLCBsb2NhdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgX3RoaXMuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgICAgICAgX3RoaXMuZm91bmQgPSBmb3VuZDtcbiAgICAgICAgX3RoaXMubG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICAgICAgX3RoaXMubmFtZSA9IFwiU3ludGF4RXJyb3JcIjtcbiAgICAgICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShfdGhpcywgU3ludGF4RXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgU3ludGF4RXJyb3IuYnVpbGRNZXNzYWdlID0gZnVuY3Rpb24gKGV4cGVjdGVkLCBmb3VuZCkge1xuICAgICAgICBmdW5jdGlvbiBoZXgoY2gpIHtcbiAgICAgICAgICAgIHJldHVybiBjaC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGxpdGVyYWxFc2NhcGUocykge1xuICAgICAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1wiL2csIFwiXFxcXFxcXCJcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFwwL2csIFwiXFxcXDBcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFx0L2csIFwiXFxcXHRcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxyL2csIFwiXFxcXHJcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceDAwLVxceDBGXS9nLCBmdW5jdGlvbiAoY2gpIHsgcmV0dXJuIFwiXFxcXHgwXCIgKyBoZXgoY2gpOyB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24gKGNoKSB7IHJldHVybiBcIlxcXFx4XCIgKyBoZXgoY2gpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjbGFzc0VzY2FwZShzKSB7XG4gICAgICAgICAgICByZXR1cm4gc1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxdL2csIFwiXFxcXF1cIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxeL2csIFwiXFxcXF5cIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLS9nLCBcIlxcXFwtXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcMC9nLCBcIlxcXFwwXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcdC9nLCBcIlxcXFx0XCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcci9nLCBcIlxcXFxyXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgZnVuY3Rpb24gKGNoKSB7IHJldHVybiBcIlxcXFx4MFwiICsgaGV4KGNoKTsgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceDEwLVxceDFGXFx4N0YtXFx4OUZdL2csIGZ1bmN0aW9uIChjaCkgeyByZXR1cm4gXCJcXFxceFwiICsgaGV4KGNoKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZGVzY3JpYmVFeHBlY3RhdGlvbihleHBlY3RhdGlvbikge1xuICAgICAgICAgICAgc3dpdGNoIChleHBlY3RhdGlvbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcImxpdGVyYWxcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXFxcIlwiICsgbGl0ZXJhbEVzY2FwZShleHBlY3RhdGlvbi50ZXh0KSArIFwiXFxcIlwiO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJjbGFzc1wiOlxuICAgICAgICAgICAgICAgICAgICB2YXIgZXNjYXBlZFBhcnRzID0gZXhwZWN0YXRpb24ucGFydHMubWFwKGZ1bmN0aW9uIChwYXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJ0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2xhc3NFc2NhcGUocGFydFswXSkgKyBcIi1cIiArIGNsYXNzRXNjYXBlKHBhcnRbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjbGFzc0VzY2FwZShwYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIltcIiArIChleHBlY3RhdGlvbi5pbnZlcnRlZCA/IFwiXlwiIDogXCJcIikgKyBlc2NhcGVkUGFydHMgKyBcIl1cIjtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYW55XCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImFueSBjaGFyYWN0ZXJcIjtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImVuZCBvZiBpbnB1dFwiO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJvdGhlclwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb24uZGVzY3JpcHRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZDEpIHtcbiAgICAgICAgICAgIHZhciBkZXNjcmlwdGlvbnMgPSBleHBlY3RlZDEubWFwKGRlc2NyaWJlRXhwZWN0YXRpb24pO1xuICAgICAgICAgICAgdmFyIGk7XG4gICAgICAgICAgICB2YXIgajtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9ucy5zb3J0KCk7XG4gICAgICAgICAgICBpZiAoZGVzY3JpcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBqID0gMTsgaSA8IGRlc2NyaXB0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRpb25zW2kgLSAxXSAhPT0gZGVzY3JpcHRpb25zW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbnNbal0gPSBkZXNjcmlwdGlvbnNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBqKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb25zLmxlbmd0aCA9IGo7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF07XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zWzBdICsgXCIgb3IgXCIgKyBkZXNjcmlwdGlvbnNbMV07XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9ucy5zbGljZSgwLCAtMSkuam9pbihcIiwgXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICArIFwiLCBvciBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKyBkZXNjcmlwdGlvbnNbZGVzY3JpcHRpb25zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGRlc2NyaWJlRm91bmQoZm91bmQxKSB7XG4gICAgICAgICAgICByZXR1cm4gZm91bmQxID8gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGZvdW5kMSkgKyBcIlxcXCJcIiA6IFwiZW5kIG9mIGlucHV0XCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiRXhwZWN0ZWQgXCIgKyBkZXNjcmliZUV4cGVjdGVkKGV4cGVjdGVkKSArIFwiIGJ1dCBcIiArIGRlc2NyaWJlRm91bmQoZm91bmQpICsgXCIgZm91bmQuXCI7XG4gICAgfTtcbiAgICByZXR1cm4gU3ludGF4RXJyb3I7XG59KEVycm9yKSk7XG5leHBvcnQgeyBTeW50YXhFcnJvciB9O1xuZnVuY3Rpb24gcGVnJHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMgOiB7fTtcbiAgICB2YXIgcGVnJEZBSUxFRCA9IHt9O1xuICAgIHZhciBwZWckc3RhcnRSdWxlRnVuY3Rpb25zID0geyBzdGFydDogcGVnJHBhcnNlc3RhcnQgfTtcbiAgICB2YXIgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uID0gcGVnJHBhcnNlc3RhcnQ7XG4gICAgdmFyIHBlZyRjMCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICFpZ25vcmVUYWc7IH07XG4gICAgdmFyIHBlZyRjMSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9O1xuICAgIHZhciBwZWckYzIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpZ25vcmVUYWc7IH07XG4gICAgdmFyIHBlZyRjMyA9IFwiPFwiO1xuICAgIHZhciBwZWckYzQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiPFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNSA9IGZ1bmN0aW9uIChwYXJ0cykge1xuICAgICAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM2ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJzwnOyB9O1xuICAgIHZhciBwZWckYzcgPSBmdW5jdGlvbiAobWVzc2FnZVRleHQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogVFlQRS5saXRlcmFsLCB2YWx1ZTogbWVzc2FnZVRleHQgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM4ID0gXCIjXCI7XG4gICAgdmFyIHBlZyRjOSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIjXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxMCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogVFlQRS5wb3VuZCB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzExID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJ0YWdFbGVtZW50XCIpO1xuICAgIHZhciBwZWckYzEyID0gZnVuY3Rpb24gKG9wZW4sIGNoaWxkcmVuLCBjbG9zZSkge1xuICAgICAgICBpZiAob3BlbiAhPT0gY2xvc2UpIHtcbiAgICAgICAgICAgIGVycm9yKFwiTWlzbWF0Y2ggdGFnIFxcXCJcIiArIG9wZW4gKyBcIlxcXCIgIT09IFxcXCJcIiArIGNsb3NlICsgXCJcXFwiXCIsIGxvY2F0aW9uKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IFRZUEUudGFnLCB2YWx1ZTogb3BlbiwgY2hpbGRyZW46IGNoaWxkcmVuIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMTMgPSBcIi8+XCI7XG4gICAgdmFyIHBlZyRjMTQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiLz5cIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzE1ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IFRZUEUubGl0ZXJhbCwgdmFsdWU6IHZhbHVlLmpvaW4oJycpIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMTYgPSBcIj5cIjtcbiAgICB2YXIgcGVnJGMxNyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI+XCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxOCA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHRhZzsgfTtcbiAgICB2YXIgcGVnJGMxOSA9IFwiPC9cIjtcbiAgICB2YXIgcGVnJGMyMCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI8L1wiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMjEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImFyZ3VtZW50RWxlbWVudFwiKTtcbiAgICB2YXIgcGVnJGMyMiA9IFwie1wiO1xuICAgIHZhciBwZWckYzIzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIntcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzI0ID0gXCJ9XCI7XG4gICAgdmFyIHBlZyRjMjUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwifVwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMjYgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogVFlQRS5hcmd1bWVudCwgdmFsdWU6IHZhbHVlIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMjcgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIm51bWJlclNrZWxldG9uSWRcIik7XG4gICAgdmFyIHBlZyRjMjggPSAvXlsnXFwve31dLztcbiAgICB2YXIgcGVnJGMyOSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIidcIiwgXCIvXCIsIFwie1wiLCBcIn1cIl0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMzAgPSBwZWckYW55RXhwZWN0YXRpb24oKTtcbiAgICB2YXIgcGVnJGMzMSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwibnVtYmVyU2tlbGV0b25Ub2tlbk9wdGlvblwiKTtcbiAgICB2YXIgcGVnJGMzMiA9IFwiL1wiO1xuICAgIHZhciBwZWckYzMzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIi9cIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzM0ID0gZnVuY3Rpb24gKG9wdGlvbikgeyByZXR1cm4gb3B0aW9uOyB9O1xuICAgIHZhciBwZWckYzM1ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJudW1iZXJTa2VsZXRvblRva2VuXCIpO1xuICAgIHZhciBwZWckYzM2ID0gZnVuY3Rpb24gKHN0ZW0sIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHsgc3RlbTogc3RlbSwgb3B0aW9uczogb3B0aW9ucyB9O1xuICAgIH07XG4gICAgdmFyIHBlZyRjMzcgPSBmdW5jdGlvbiAodG9rZW5zKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IDAgLyogbnVtYmVyICovLCB0b2tlbnM6IHRva2VucywgcGFyc2VkT3B0aW9uczogc2hvdWxkUGFyc2VTa2VsZXRvbiA/IHBhcnNlTnVtYmVyU2tlbGV0b24odG9rZW5zKSA6IHt9IH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMzggPSBcIjo6XCI7XG4gICAgdmFyIHBlZyRjMzkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiOjpcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzQwID0gZnVuY3Rpb24gKHNrZWxldG9uKSB7IHJldHVybiBza2VsZXRvbjsgfTtcbiAgICB2YXIgcGVnJGM0MSA9IGZ1bmN0aW9uICgpIHsgbWVzc2FnZUN0eC5wdXNoKCdudW1iZXJBcmdTdHlsZScpOyByZXR1cm4gdHJ1ZTsgfTtcbiAgICB2YXIgcGVnJGM0MiA9IGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgICBtZXNzYWdlQ3R4LnBvcCgpO1xuICAgICAgICByZXR1cm4gc3R5bGUucmVwbGFjZSgvXFxzKiQvLCAnJyk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM0MyA9IFwiLFwiO1xuICAgIHZhciBwZWckYzQ0ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIixcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzQ1ID0gXCJudW1iZXJcIjtcbiAgICB2YXIgcGVnJGM0NiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJudW1iZXJcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzQ3ID0gZnVuY3Rpb24gKHZhbHVlLCB0eXBlLCBzdHlsZSkge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiB0eXBlID09PSAnbnVtYmVyJyA/IFRZUEUubnVtYmVyIDogdHlwZSA9PT0gJ2RhdGUnID8gVFlQRS5kYXRlIDogVFlQRS50aW1lLCBzdHlsZTogc3R5bGUgJiYgc3R5bGVbMl0sIHZhbHVlOiB2YWx1ZSB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzQ4ID0gXCInXCI7XG4gICAgdmFyIHBlZyRjNDkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJ1wiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNTAgPSAvXlteJ10vO1xuICAgIHZhciBwZWckYzUxID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiJ1wiXSwgdHJ1ZSwgZmFsc2UpO1xuICAgIHZhciBwZWckYzUyID0gL15bXmEtekEtWid7fV0vO1xuICAgIHZhciBwZWckYzUzID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXSwgXCInXCIsIFwie1wiLCBcIn1cIl0sIHRydWUsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM1NCA9IC9eW2EtekEtWl0vO1xuICAgIHZhciBwZWckYzU1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXV0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNTYgPSBmdW5jdGlvbiAocGF0dGVybikge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiAxIC8qIGRhdGVUaW1lICovLCBwYXR0ZXJuOiBwYXR0ZXJuLCBwYXJzZWRPcHRpb25zOiBzaG91bGRQYXJzZVNrZWxldG9uID8gcGFyc2VEYXRlVGltZVNrZWxldG9uKHBhdHRlcm4pIDoge30gfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM1NyA9IGZ1bmN0aW9uICgpIHsgbWVzc2FnZUN0eC5wdXNoKCdkYXRlT3JUaW1lQXJnU3R5bGUnKTsgcmV0dXJuIHRydWU7IH07XG4gICAgdmFyIHBlZyRjNTggPSBcImRhdGVcIjtcbiAgICB2YXIgcGVnJGM1OSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJkYXRlXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM2MCA9IFwidGltZVwiO1xuICAgIHZhciBwZWckYzYxID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInRpbWVcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzYyID0gXCJwbHVyYWxcIjtcbiAgICB2YXIgcGVnJGM2MyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJwbHVyYWxcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzY0ID0gXCJzZWxlY3RvcmRpbmFsXCI7XG4gICAgdmFyIHBlZyRjNjUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwic2VsZWN0b3JkaW5hbFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNjYgPSBcIm9mZnNldDpcIjtcbiAgICB2YXIgcGVnJGM2NyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJvZmZzZXQ6XCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM2OCA9IGZ1bmN0aW9uICh2YWx1ZSwgcGx1cmFsVHlwZSwgb2Zmc2V0LCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IFRZUEUucGx1cmFsLCBwbHVyYWxUeXBlOiBwbHVyYWxUeXBlID09PSAncGx1cmFsJyA/ICdjYXJkaW5hbCcgOiAnb3JkaW5hbCcsIHZhbHVlOiB2YWx1ZSwgb2Zmc2V0OiBvZmZzZXQgPyBvZmZzZXRbMl0gOiAwLCBvcHRpb25zOiBvcHRpb25zLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBfYSkge1xuICAgICAgICAgICAgICAgIHZhciBpZCA9IF9hLmlkLCB2YWx1ZSA9IF9hLnZhbHVlLCBvcHRpb25Mb2NhdGlvbiA9IF9hLmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGlmIChpZCBpbiBhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IoXCJEdXBsaWNhdGUgb3B0aW9uIFxcXCJcIiArIGlkICsgXCJcXFwiIGluIHBsdXJhbCBlbGVtZW50OiBcXFwiXCIgKyB0ZXh0KCkgKyBcIlxcXCJcIiwgbG9jYXRpb24oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFsbFtpZF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IG9wdGlvbkxvY2F0aW9uXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWxsO1xuICAgICAgICAgICAgfSwge30pIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjNjkgPSBcInNlbGVjdFwiO1xuICAgIHZhciBwZWckYzcwID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInNlbGVjdFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNzEgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogVFlQRS5zZWxlY3QsIHZhbHVlOiB2YWx1ZSwgb3B0aW9uczogb3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWQgPSBfYS5pZCwgdmFsdWUgPSBfYS52YWx1ZSwgb3B0aW9uTG9jYXRpb24gPSBfYS5sb2NhdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAoaWQgaW4gYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yKFwiRHVwbGljYXRlIG9wdGlvbiBcXFwiXCIgKyBpZCArIFwiXFxcIiBpbiBzZWxlY3QgZWxlbWVudDogXFxcIlwiICsgdGV4dCgpICsgXCJcXFwiXCIsIGxvY2F0aW9uKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhbGxbaWRdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBvcHRpb25Mb2NhdGlvblxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFsbDtcbiAgICAgICAgICAgIH0sIHt9KSB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzcyID0gXCI9XCI7XG4gICAgdmFyIHBlZyRjNzMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiPVwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNzQgPSBmdW5jdGlvbiAoaWQpIHsgbWVzc2FnZUN0eC5wdXNoKCdzZWxlY3QnKTsgcmV0dXJuIHRydWU7IH07XG4gICAgdmFyIHBlZyRjNzUgPSBmdW5jdGlvbiAoaWQsIHZhbHVlKSB7XG4gICAgICAgIG1lc3NhZ2VDdHgucG9wKCk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IGlkOiBpZCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzc2ID0gZnVuY3Rpb24gKGlkKSB7IG1lc3NhZ2VDdHgucHVzaCgncGx1cmFsJyk7IHJldHVybiB0cnVlOyB9O1xuICAgIHZhciBwZWckYzc3ID0gZnVuY3Rpb24gKGlkLCB2YWx1ZSkge1xuICAgICAgICBtZXNzYWdlQ3R4LnBvcCgpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyBpZDogaWQsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM3OCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwid2hpdGVzcGFjZVwiKTtcbiAgICB2YXIgcGVnJGM3OSA9IC9eW1xcdC1cXHIgXFx4ODVcXHhBMFxcdTE2ODBcXHUyMDAwLVxcdTIwMEFcXHUyMDI4XFx1MjAyOVxcdTIwMkZcXHUyMDVGXFx1MzAwMF0vO1xuICAgIHZhciBwZWckYzgwID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIlxcdFwiLCBcIlxcclwiXSwgXCIgXCIsIFwiXFx4ODVcIiwgXCJcXHhBMFwiLCBcIlxcdTE2ODBcIiwgW1wiXFx1MjAwMFwiLCBcIlxcdTIwMEFcIl0sIFwiXFx1MjAyOFwiLCBcIlxcdTIwMjlcIiwgXCJcXHUyMDJGXCIsIFwiXFx1MjA1RlwiLCBcIlxcdTMwMDBcIl0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjODEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcInN5bnRheCBwYXR0ZXJuXCIpO1xuICAgIHZhciBwZWckYzgyID0gL15bIS1cXC86LUBbLVxcXmB7LX5cXHhBMS1cXHhBN1xceEE5XFx4QUJcXHhBQ1xceEFFXFx4QjBcXHhCMVxceEI2XFx4QkJcXHhCRlxceEQ3XFx4RjdcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwM0VcXHUyMDQxLVxcdTIwNTNcXHUyMDU1LVxcdTIwNUVcXHUyMTkwLVxcdTI0NUZcXHUyNTAwLVxcdTI3NzVcXHUyNzk0LVxcdTJCRkZcXHUyRTAwLVxcdTJFN0ZcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMjBcXHUzMDMwXFx1RkQzRVxcdUZEM0ZcXHVGRTQ1XFx1RkU0Nl0vO1xuICAgIHZhciBwZWckYzgzID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIiFcIiwgXCIvXCJdLCBbXCI6XCIsIFwiQFwiXSwgW1wiW1wiLCBcIl5cIl0sIFwiYFwiLCBbXCJ7XCIsIFwiflwiXSwgW1wiXFx4QTFcIiwgXCJcXHhBN1wiXSwgXCJcXHhBOVwiLCBcIlxceEFCXCIsIFwiXFx4QUNcIiwgXCJcXHhBRVwiLCBcIlxceEIwXCIsIFwiXFx4QjFcIiwgXCJcXHhCNlwiLCBcIlxceEJCXCIsIFwiXFx4QkZcIiwgXCJcXHhEN1wiLCBcIlxceEY3XCIsIFtcIlxcdTIwMTBcIiwgXCJcXHUyMDI3XCJdLCBbXCJcXHUyMDMwXCIsIFwiXFx1MjAzRVwiXSwgW1wiXFx1MjA0MVwiLCBcIlxcdTIwNTNcIl0sIFtcIlxcdTIwNTVcIiwgXCJcXHUyMDVFXCJdLCBbXCJcXHUyMTkwXCIsIFwiXFx1MjQ1RlwiXSwgW1wiXFx1MjUwMFwiLCBcIlxcdTI3NzVcIl0sIFtcIlxcdTI3OTRcIiwgXCJcXHUyQkZGXCJdLCBbXCJcXHUyRTAwXCIsIFwiXFx1MkU3RlwiXSwgW1wiXFx1MzAwMVwiLCBcIlxcdTMwMDNcIl0sIFtcIlxcdTMwMDhcIiwgXCJcXHUzMDIwXCJdLCBcIlxcdTMwMzBcIiwgXCJcXHVGRDNFXCIsIFwiXFx1RkQzRlwiLCBcIlxcdUZFNDVcIiwgXCJcXHVGRTQ2XCJdLCBmYWxzZSwgZmFsc2UpO1xuICAgIHZhciBwZWckYzg0ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJvcHRpb25hbCB3aGl0ZXNwYWNlXCIpO1xuICAgIHZhciBwZWckYzg1ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJudW1iZXJcIik7XG4gICAgdmFyIHBlZyRjODYgPSBcIi1cIjtcbiAgICB2YXIgcGVnJGM4NyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCItXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM4OCA9IGZ1bmN0aW9uIChuZWdhdGl2ZSwgbnVtKSB7XG4gICAgICAgIHJldHVybiBudW1cbiAgICAgICAgICAgID8gbmVnYXRpdmVcbiAgICAgICAgICAgICAgICA/IC1udW1cbiAgICAgICAgICAgICAgICA6IG51bVxuICAgICAgICAgICAgOiAwO1xuICAgIH07XG4gICAgdmFyIHBlZyRjODkgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImFwb3N0cm9waGVcIik7XG4gICAgdmFyIHBlZyRjOTAgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImRvdWJsZSBhcG9zdHJvcGhlc1wiKTtcbiAgICB2YXIgcGVnJGM5MSA9IFwiJydcIjtcbiAgICB2YXIgcGVnJGM5MiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCInJ1wiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjOTMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBcIidcIjsgfTtcbiAgICB2YXIgcGVnJGM5NCA9IGZ1bmN0aW9uIChlc2NhcGVkQ2hhciwgcXVvdGVkQ2hhcnMpIHtcbiAgICAgICAgcmV0dXJuIGVzY2FwZWRDaGFyICsgcXVvdGVkQ2hhcnMucmVwbGFjZShcIicnXCIsIFwiJ1wiKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzk1ID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuICh4ICE9PSAnPCcgJiZcbiAgICAgICAgICAgIHggIT09ICd7JyAmJlxuICAgICAgICAgICAgIShpc0luUGx1cmFsT3B0aW9uKCkgJiYgeCA9PT0gJyMnKSAmJlxuICAgICAgICAgICAgIShpc05lc3RlZE1lc3NhZ2VUZXh0KCkgJiYgeCA9PT0gJ30nKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM5NiA9IFwiXFxuXCI7XG4gICAgdmFyIHBlZyRjOTcgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxuXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM5OCA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiB4ID09PSAnPCcgfHwgeCA9PT0gJz4nIHx8IHggPT09ICd7JyB8fCB4ID09PSAnfScgfHwgKGlzSW5QbHVyYWxPcHRpb24oKSAmJiB4ID09PSAnIycpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjOTkgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImFyZ05hbWVPck51bWJlclwiKTtcbiAgICB2YXIgcGVnJGMxMDAgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcInZhbGlkVGFnXCIpO1xuICAgIHZhciBwZWckYzEwMSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiYXJnTnVtYmVyXCIpO1xuICAgIHZhciBwZWckYzEwMiA9IFwiMFwiO1xuICAgIHZhciBwZWckYzEwMyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIwXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxMDQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9O1xuICAgIHZhciBwZWckYzEwNSA9IC9eWzEtOV0vO1xuICAgIHZhciBwZWckYzEwNiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCIxXCIsIFwiOVwiXV0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMTA3ID0gL15bMC05XS87XG4gICAgdmFyIHBlZyRjMTA4ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIjBcIiwgXCI5XCJdXSwgZmFsc2UsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxMDkgPSBmdW5jdGlvbiAoZGlnaXRzKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludChkaWdpdHMuam9pbignJyksIDEwKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzExMCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiYXJnTmFtZVwiKTtcbiAgICB2YXIgcGVnJGMxMTEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcInRhZ05hbWVcIik7XG4gICAgdmFyIHBlZyRjdXJyUG9zID0gMDtcbiAgICB2YXIgcGVnJHNhdmVkUG9zID0gMDtcbiAgICB2YXIgcGVnJHBvc0RldGFpbHNDYWNoZSA9IFt7IGxpbmU6IDEsIGNvbHVtbjogMSB9XTtcbiAgICB2YXIgcGVnJG1heEZhaWxQb3MgPSAwO1xuICAgIHZhciBwZWckbWF4RmFpbEV4cGVjdGVkID0gW107XG4gICAgdmFyIHBlZyRzaWxlbnRGYWlscyA9IDA7XG4gICAgdmFyIHBlZyRyZXN1bHQ7XG4gICAgaWYgKG9wdGlvbnMuc3RhcnRSdWxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKCEob3B0aW9ucy5zdGFydFJ1bGUgaW4gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHN0YXJ0IHBhcnNpbmcgZnJvbSBydWxlIFxcXCJcIiArIG9wdGlvbnMuc3RhcnRSdWxlICsgXCJcXFwiLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc3RhcnRSdWxlRnVuY3Rpb24gPSBwZWckc3RhcnRSdWxlRnVuY3Rpb25zW29wdGlvbnMuc3RhcnRSdWxlXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0LnN1YnN0cmluZyhwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbG9jYXRpb24oKSB7XG4gICAgICAgIHJldHVybiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBleHBlY3RlZChkZXNjcmlwdGlvbiwgbG9jYXRpb24xKSB7XG4gICAgICAgIGxvY2F0aW9uMSA9IGxvY2F0aW9uMSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGxvY2F0aW9uMVxuICAgICAgICAgICAgOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICAgICAgICB0aHJvdyBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoW3BlZyRvdGhlckV4cGVjdGF0aW9uKGRlc2NyaXB0aW9uKV0sIGlucHV0LnN1YnN0cmluZyhwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKSwgbG9jYXRpb24xKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZXJyb3IobWVzc2FnZSwgbG9jYXRpb24xKSB7XG4gICAgICAgIGxvY2F0aW9uMSA9IGxvY2F0aW9uMSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGxvY2F0aW9uMVxuICAgICAgICAgICAgOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICAgICAgICB0aHJvdyBwZWckYnVpbGRTaW1wbGVFcnJvcihtZXNzYWdlLCBsb2NhdGlvbjEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKHRleHQxLCBpZ25vcmVDYXNlKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwibGl0ZXJhbFwiLCB0ZXh0OiB0ZXh0MSwgaWdub3JlQ2FzZTogaWdub3JlQ2FzZSB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckY2xhc3NFeHBlY3RhdGlvbihwYXJ0cywgaW52ZXJ0ZWQsIGlnbm9yZUNhc2UpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJjbGFzc1wiLCBwYXJ0czogcGFydHMsIGludmVydGVkOiBpbnZlcnRlZCwgaWdub3JlQ2FzZTogaWdub3JlQ2FzZSB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckYW55RXhwZWN0YXRpb24oKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiYW55XCIgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGVuZEV4cGVjdGF0aW9uKCkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImVuZFwiIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRvdGhlckV4cGVjdGF0aW9uKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwib3RoZXJcIiwgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRjb21wdXRlUG9zRGV0YWlscyhwb3MpIHtcbiAgICAgICAgdmFyIGRldGFpbHMgPSBwZWckcG9zRGV0YWlsc0NhY2hlW3Bvc107XG4gICAgICAgIHZhciBwO1xuICAgICAgICBpZiAoZGV0YWlscykge1xuICAgICAgICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwID0gcG9zIC0gMTtcbiAgICAgICAgICAgIHdoaWxlICghcGVnJHBvc0RldGFpbHNDYWNoZVtwXSkge1xuICAgICAgICAgICAgICAgIHAtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRldGFpbHMgPSBwZWckcG9zRGV0YWlsc0NhY2hlW3BdO1xuICAgICAgICAgICAgZGV0YWlscyA9IHtcbiAgICAgICAgICAgICAgICBsaW5lOiBkZXRhaWxzLmxpbmUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBkZXRhaWxzLmNvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdoaWxlIChwIDwgcG9zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocCkgPT09IDEwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRldGFpbHMubGluZSsrO1xuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLmNvbHVtbiA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLmNvbHVtbisrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWckcG9zRGV0YWlsc0NhY2hlW3Bvc10gPSBkZXRhaWxzO1xuICAgICAgICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGNvbXB1dGVMb2NhdGlvbihzdGFydFBvcywgZW5kUG9zKSB7XG4gICAgICAgIHZhciBzdGFydFBvc0RldGFpbHMgPSBwZWckY29tcHV0ZVBvc0RldGFpbHMoc3RhcnRQb3MpO1xuICAgICAgICB2YXIgZW5kUG9zRGV0YWlscyA9IHBlZyRjb21wdXRlUG9zRGV0YWlscyhlbmRQb3MpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IHN0YXJ0UG9zLFxuICAgICAgICAgICAgICAgIGxpbmU6IHN0YXJ0UG9zRGV0YWlscy5saW5lLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogc3RhcnRQb3NEZXRhaWxzLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuZDoge1xuICAgICAgICAgICAgICAgIG9mZnNldDogZW5kUG9zLFxuICAgICAgICAgICAgICAgIGxpbmU6IGVuZFBvc0RldGFpbHMubGluZSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IGVuZFBvc0RldGFpbHMuY29sdW1uXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRmYWlsKGV4cGVjdGVkMSkge1xuICAgICAgICBpZiAocGVnJGN1cnJQb3MgPCBwZWckbWF4RmFpbFBvcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZWckY3VyclBvcyA+IHBlZyRtYXhGYWlsUG9zKSB7XG4gICAgICAgICAgICBwZWckbWF4RmFpbFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQucHVzaChleHBlY3RlZDEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckYnVpbGRTaW1wbGVFcnJvcihtZXNzYWdlLCBsb2NhdGlvbjEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTeW50YXhFcnJvcihtZXNzYWdlLCBbXSwgXCJcIiwgbG9jYXRpb24xKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKGV4cGVjdGVkMSwgZm91bmQsIGxvY2F0aW9uMSkge1xuICAgICAgICByZXR1cm4gbmV3IFN5bnRheEVycm9yKFN5bnRheEVycm9yLmJ1aWxkTWVzc2FnZShleHBlY3RlZDEsIGZvdW5kKSwgZXhwZWN0ZWQxLCBmb3VuZCwgbG9jYXRpb24xKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlc3RhcnQoKSB7XG4gICAgICAgIHZhciBzMDtcbiAgICAgICAgczAgPSBwZWckcGFyc2VtZXNzYWdlKCk7XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbWVzc2FnZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgczAgPSBbXTtcbiAgICAgICAgczEgPSBwZWckcGFyc2VtZXNzYWdlRWxlbWVudCgpO1xuICAgICAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2VtZXNzYWdlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbWVzc2FnZUVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckYzAoKTtcbiAgICAgICAgaWYgKHMxKSB7XG4gICAgICAgICAgICBzMSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNldGFnRWxlbWVudCgpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzEoczIpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRwYXJzZWxpdGVyYWxFbGVtZW50KCk7XG4gICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRwYXJzZWFyZ3VtZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRwYXJzZXNpbXBsZUZvcm1hdEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRwYXJzZXBsdXJhbEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJHBhcnNlc2VsZWN0RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRwYXJzZXBvdW5kRWxlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW1lc3NhZ2VUZXh0KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjMigpO1xuICAgICAgICBpZiAoczEpIHtcbiAgICAgICAgICAgIHMxID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBbXTtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlZG91YmxlQXBvc3Ryb3BoZXMoKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlcXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNldW5xdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckYzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VxdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNldW5xdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckYzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNShzMik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMSA9IFtdO1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VxdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2V1bnF1b3RlZFN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbm9uVGFnU3RhcnRpbmdBbmdsZUJyYWNrZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlcXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXVucXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbm9uVGFnU3RhcnRpbmdBbmdsZUJyYWNrZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNShzMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbm9uVGFnU3RhcnRpbmdBbmdsZUJyYWNrZXQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczIgPSBwZWckcGFyc2VvcGVuaW5nVGFnKCk7XG4gICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VjbG9zaW5nVGFnKCk7XG4gICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXNlbGZDbG9zaW5nVGFnKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MCkge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJGMzO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM2KCk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWxpdGVyYWxFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZW1lc3NhZ2VUZXh0KCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNyhzMSk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2Vwb3VuZEVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzUpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM4O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTAoKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXRhZ0VsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJHBhcnNlc2VsZkNsb3NpbmdUYWcoKTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2VvcGVuaW5nVGFnKCk7XG4gICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VjbG9zaW5nVGFnKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTIoczEsIHMyLCBzMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzExKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXNlbGZDbG9zaW5nVGFnKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MCkge1xuICAgICAgICAgICAgczIgPSBwZWckYzM7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZXZhbGlkVGFnKCk7XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjMTMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxMztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IFtzMiwgczMsIHM0LCBzNV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHMyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzE1KHMxKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW9wZW5pbmdUYWcoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MCkge1xuICAgICAgICAgICAgczEgPSBwZWckYzM7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXZhbGlkVGFnKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYyKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGMxNjtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxNyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTgoczIpO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWNsb3NpbmdUYWcoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjMTkpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMxOTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXZhbGlkVGFnKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYyKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGMxNjtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxNyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTgoczIpO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWFyZ3VtZW50RWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczU7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgczEgPSBwZWckYzIyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VhcmdOYW1lT3JOdW1iZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMyNihzMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJTa2VsZXRvbklkKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBbXTtcbiAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHM0ID0gcGVnJHBhcnNld2hpdGVTcGFjZSgpO1xuICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChwZWckYzI4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMyA9IFtzMywgczRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuT3B0aW9uKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDcpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMzMjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW51bWJlclNrZWxldG9uSWQoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGMzNChzMik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvbklkKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b25Ub2tlbk9wdGlvbigpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuT3B0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzM2KHMyLCBzMyk7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzM1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW51bWJlclNrZWxldG9uKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBbXTtcbiAgICAgICAgczIgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuKCk7XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGMzNyhzMSk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJBcmdTdHlsZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzM4KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMzg7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvbigpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzQwKHMyKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczEgPSBwZWckYzQxKCk7XG4gICAgICAgICAgICBpZiAoczEpIHtcbiAgICAgICAgICAgICAgICBzMSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbWVzc2FnZVRleHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0MihzMik7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJGb3JtYXRFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMCwgczExLCBzMTI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMjI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikgPT09IHBlZyRjNDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM0NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0Nik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0NCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZW51bWJlckFyZ1N0eWxlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gW3MxMCwgczExLCBzMTJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gczEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDcoczMsIHM3LCBzOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b25MaXRlcmFsKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzkpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM0ODtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0OSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IFtdO1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjNTAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjNTAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1MSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzOSkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRjNDg7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMSA9IFtzMSwgczIsIHMzXTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IFtdO1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjNTIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjNTIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1Myk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvblBhdHRlcm4oKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHMwID0gW107XG4gICAgICAgIGlmIChwZWckYzU0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1NSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMC5wdXNoKHMxKTtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGM1NC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1NSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VkYXRlVGltZVNrZWxldG9uKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMyID0gW107XG4gICAgICAgIHMzID0gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvbkxpdGVyYWwoKTtcbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b25QYXR0ZXJuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b25MaXRlcmFsKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvblBhdHRlcm4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IGlucHV0LnN1YnN0cmluZyhzMSwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzU2KHMxKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWRhdGVPclRpbWVBcmdTdHlsZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzM4KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMzg7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VkYXRlVGltZVNrZWxldG9uKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDAoczIpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNTcoKTtcbiAgICAgICAgICAgIGlmIChzMSkge1xuICAgICAgICAgICAgICAgIHMxID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VtZXNzYWdlVGV4dCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzQyKHMyKTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWRhdGVPclRpbWVGb3JtYXRFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMCwgczExLCBzMTI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMjI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNCkgPT09IHBlZyRjNTgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM1ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1OSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA0KSA9PT0gcGVnJGM2MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM2MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM2MSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJGM0MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VkYXRlT3JUaW1lQXJnU3R5bGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBbczEwLCBzMTEsIHMxMl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBzMTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckYzI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0NyhzMywgczcsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlc2ltcGxlRm9ybWF0RWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwO1xuICAgICAgICBzMCA9IHBlZyRwYXJzZW51bWJlckZvcm1hdEVsZW1lbnQoKTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRwYXJzZWRhdGVPclRpbWVGb3JtYXRFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VwbHVyYWxFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMCwgczExLCBzMTIsIHMxMywgczE0LCBzMTU7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMjI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikgPT09IHBlZyRjNjIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM2MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM2Myk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAxMykgPT09IHBlZyRjNjQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjNjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzY1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDcpID09PSBwZWckYzY2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJGM2NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNjcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTMgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTQgPSBwZWckcGFyc2VudW1iZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gW3MxMiwgczEzLCBzMTRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gczEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxNCA9IHBlZyRwYXJzZXBsdXJhbE9wdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczE0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczE0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEzLnB1c2goczE0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTQgPSBwZWckcGFyc2VwbHVyYWxPcHRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczE0ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxNSA9IHBlZyRjMjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczE1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNjgoczMsIHM3LCBzMTEsIHMxMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlc2VsZWN0RWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTAsIHMxMSwgczEyLCBzMTM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMjI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikgPT09IHBlZyRjNjkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM2OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM3MCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZXNlbGVjdE9wdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExLnB1c2goczEyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJHBhcnNlc2VsZWN0T3B0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEzID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzcxKHMzLCBzMTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VwbHVyYWxSdWxlU2VsZWN0VmFsdWUoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MSkge1xuICAgICAgICAgICAgczIgPSBwZWckYzcyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzczKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlbnVtYmVyKCk7XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IFtzMiwgczNdO1xuICAgICAgICAgICAgICAgIHMxID0gczI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJHBhcnNlYXJnTmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlc2VsZWN0T3B0aW9uKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3O1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZWFyZ05hbWUoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckYzIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzc0KHMyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VtZXNzYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjMjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzUoczIsIHM2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlcGx1cmFsT3B0aW9uKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3O1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXBsdXJhbFJ1bGVTZWxlY3RWYWx1ZSgpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRjMjI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjNzYoczIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZW1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM3NyhzMiwgczYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2V3aGl0ZVNwYWNlKCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgaWYgKHBlZyRjNzkudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM3OCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VwYXR0ZXJuU3ludGF4KCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgaWYgKHBlZyRjODIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzgzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4MSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VfKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gW107XG4gICAgICAgIHMyID0gcGVnJHBhcnNld2hpdGVTcGFjZSgpO1xuICAgICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2V3aGl0ZVNwYWNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4NCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXIoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NSkge1xuICAgICAgICAgICAgczEgPSBwZWckYzg2O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzg3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlYXJnTnVtYmVyKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjODgoczEsIHMyKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzg1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWFwb3N0cm9waGUoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM5KSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjNDg7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzg5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTEpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM5MTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM5Mik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM5MygpO1xuICAgICAgICB9XG4gICAgICAgIHMwID0gczE7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzkwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXF1b3RlZFN0cmluZygpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczU7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzkpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM0ODtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0OSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZWVzY2FwZWRDaGFyKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHM0ID0gW107XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTEpIHtcbiAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzkxO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzkyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjNTAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzUxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzkxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjOTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjOTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjNTAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1MSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cmluZyhzMywgcGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBzNDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJGM0ODtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0OSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM5NChzMiwgczMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2V1bnF1b3RlZFN0cmluZygpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHMzID0gcGVnJGM5NShzMik7XG4gICAgICAgICAgICBpZiAoczMpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyID0gW3MyLCBzM107XG4gICAgICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTApIHtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjOTY7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjOTcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlZXNjYXBlZENoYXIoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMyA9IHBlZyRjOTgoczIpO1xuICAgICAgICAgICAgaWYgKHMzKSB7XG4gICAgICAgICAgICAgICAgczMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IFtzMiwgczNdO1xuICAgICAgICAgICAgICAgIHMxID0gczI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlYXJnTnVtYmVyKCk7XG4gICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2VhcmdOYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM5OSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2V2YWxpZFRhZygpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlYXJnTnVtYmVyKCk7XG4gICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2V0YWdOYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlYXJnTnVtYmVyKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0OCkge1xuICAgICAgICAgICAgczEgPSBwZWckYzEwMjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMDMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTA0KCk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIGlmIChwZWckYzEwNS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzEwNik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGMxMDcudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTA4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzEwNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTA4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBbczIsIHMzXTtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMDkoczEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlYXJnTmFtZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gW107XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXBhdHRlcm5TeW50YXgoKTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VwYXR0ZXJuU3ludGF4KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzExMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2V0YWdOYW1lKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBbXTtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NSkge1xuICAgICAgICAgICAgczIgPSBwZWckYzg2O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzg3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlcGF0dGVyblN5bnRheCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgICAgIHMyID0gczM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ1KSB7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJGM4NjtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4Nyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXBhdHRlcm5TeW50YXgoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzExMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICB2YXIgbWVzc2FnZUN0eCA9IFsncm9vdCddO1xuICAgIGZ1bmN0aW9uIGlzTmVzdGVkTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlQ3R4Lmxlbmd0aCA+IDE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSW5QbHVyYWxPcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlQ3R4W21lc3NhZ2VDdHgubGVuZ3RoIC0gMV0gPT09ICdwbHVyYWwnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpbnNlcnRMb2NhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMgJiYgb3B0aW9ucy5jYXB0dXJlTG9jYXRpb24gPyB7XG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24oKVxuICAgICAgICB9IDoge307XG4gICAgfVxuICAgIHZhciBpZ25vcmVUYWcgPSBvcHRpb25zICYmIG9wdGlvbnMuaWdub3JlVGFnO1xuICAgIHZhciBzaG91bGRQYXJzZVNrZWxldG9uID0gb3B0aW9ucyAmJiBvcHRpb25zLnNob3VsZFBhcnNlU2tlbGV0b247XG4gICAgcGVnJHJlc3VsdCA9IHBlZyRzdGFydFJ1bGVGdW5jdGlvbigpO1xuICAgIGlmIChwZWckcmVzdWx0ICE9PSBwZWckRkFJTEVEICYmIHBlZyRjdXJyUG9zID09PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHBlZyRyZXN1bHQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAocGVnJHJlc3VsdCAhPT0gcGVnJEZBSUxFRCAmJiBwZWckY3VyclBvcyA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcGVnJGZhaWwocGVnJGVuZEV4cGVjdGF0aW9uKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihwZWckbWF4RmFpbEV4cGVjdGVkLCBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aCA/IGlucHV0LmNoYXJBdChwZWckbWF4RmFpbFBvcykgOiBudWxsLCBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aFxuICAgICAgICAgICAgPyBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRtYXhGYWlsUG9zLCBwZWckbWF4RmFpbFBvcyArIDEpXG4gICAgICAgICAgICA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJG1heEZhaWxQb3MsIHBlZyRtYXhGYWlsUG9zKSk7XG4gICAgfVxufVxuZXhwb3J0IHZhciBwZWdQYXJzZSA9IHBlZyRwYXJzZTtcbiIsImltcG9ydCB7IF9fc3ByZWFkQXJyYXlzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc1BsdXJhbEVsZW1lbnQsIGlzTGl0ZXJhbEVsZW1lbnQsIGlzU2VsZWN0RWxlbWVudCwgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHBlZ1BhcnNlIH0gZnJvbSAnLi9wYXJzZXInO1xudmFyIFBMVVJBTF9IQVNIVEFHX1JFR0VYID0gLyhefFteXFxcXF0pIy9nO1xuLyoqXG4gKiBXaGV0aGVyIHRvIGNvbnZlcnQgYCNgIGluIHBsdXJhbCBydWxlIG9wdGlvbnNcbiAqIHRvIGB7dmFyLCBudW1iZXJ9YFxuICogQHBhcmFtIGVsIEFTVCBFbGVtZW50XG4gKiBAcGFyYW0gcGx1cmFsU3RhY2sgY3VycmVudCBwbHVyYWwgc3RhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUhhc2h0YWdJblBsdXJhbChlbHMpIHtcbiAgICBlbHMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgLy8gSWYgd2UncmUgZW5jb3VudGVyaW5nIGEgcGx1cmFsIGVsXG4gICAgICAgIGlmICghaXNQbHVyYWxFbGVtZW50KGVsKSAmJiAhaXNTZWxlY3RFbGVtZW50KGVsKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEdvIGRvd24gdGhlIG9wdGlvbnMgYW5kIHNlYXJjaCBmb3IgIyBpbiBhbnkgbGl0ZXJhbCBlbGVtZW50XG4gICAgICAgIE9iamVjdC5rZXlzKGVsLm9wdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgb3B0ID0gZWwub3B0aW9uc1tpZF07XG4gICAgICAgICAgICAvLyBJZiB3ZSBnb3QgYSBtYXRjaCwgd2UgaGF2ZSB0byBzcGxpdCB0aGlzXG4gICAgICAgICAgICAvLyBhbmQgaW5qZWN0IGEgTnVtYmVyRWxlbWVudCBpbiB0aGUgbWlkZGxlXG4gICAgICAgICAgICB2YXIgbWF0Y2hpbmdMaXRlcmFsRWxJbmRleCA9IC0xO1xuICAgICAgICAgICAgdmFyIGxpdGVyYWxFbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3B0LnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVsXzEgPSBvcHQudmFsdWVbaV07XG4gICAgICAgICAgICAgICAgaWYgKGlzTGl0ZXJhbEVsZW1lbnQoZWxfMSkgJiYgUExVUkFMX0hBU0hUQUdfUkVHRVgudGVzdChlbF8xLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ0xpdGVyYWxFbEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbEVsID0gZWxfMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpdGVyYWxFbCkge1xuICAgICAgICAgICAgICAgIHZhciBuZXdWYWx1ZSA9IGxpdGVyYWxFbC52YWx1ZS5yZXBsYWNlKFBMVVJBTF9IQVNIVEFHX1JFR0VYLCBcIiQxe1wiICsgZWwudmFsdWUgKyBcIiwgbnVtYmVyfVwiKTtcbiAgICAgICAgICAgICAgICB2YXIgbmV3RWxzID0gcGVnUGFyc2UobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIChfYSA9IG9wdC52YWx1ZSkuc3BsaWNlLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5cyhbbWF0Y2hpbmdMaXRlcmFsRWxJbmRleCwgMV0sIG5ld0VscykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsKG9wdC52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHBlZ1BhcnNlIH0gZnJvbSAnLi9zcmMvcGFyc2VyJztcbmltcG9ydCB7IG5vcm1hbGl6ZUhhc2h0YWdJblBsdXJhbCB9IGZyb20gJy4vc3JjL25vcm1hbGl6ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9wYXJzZXInO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRzKSB7XG4gICAgb3B0cyA9IF9fYXNzaWduKHsgbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsOiB0cnVlLCBzaG91bGRQYXJzZVNrZWxldG9uOiB0cnVlIH0sIChvcHRzIHx8IHt9KSk7XG4gICAgdmFyIGVscyA9IHBlZ1BhcnNlKGlucHV0LCBvcHRzKTtcbiAgICBpZiAob3B0cy5ub3JtYWxpemVIYXNodGFnSW5QbHVyYWwpIHtcbiAgICAgICAgbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsKGVscyk7XG4gICAgfVxuICAgIHJldHVybiBlbHM7XG59XG4iLCIvL1xuLy8gTWFpblxuLy9cblxuZnVuY3Rpb24gbWVtb2l6ZSAoZm4sIG9wdGlvbnMpIHtcbiAgdmFyIGNhY2hlID0gb3B0aW9ucyAmJiBvcHRpb25zLmNhY2hlXG4gICAgPyBvcHRpb25zLmNhY2hlXG4gICAgOiBjYWNoZURlZmF1bHRcblxuICB2YXIgc2VyaWFsaXplciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5zZXJpYWxpemVyXG4gICAgPyBvcHRpb25zLnNlcmlhbGl6ZXJcbiAgICA6IHNlcmlhbGl6ZXJEZWZhdWx0XG5cbiAgdmFyIHN0cmF0ZWd5ID0gb3B0aW9ucyAmJiBvcHRpb25zLnN0cmF0ZWd5XG4gICAgPyBvcHRpb25zLnN0cmF0ZWd5XG4gICAgOiBzdHJhdGVneURlZmF1bHRcblxuICByZXR1cm4gc3RyYXRlZ3koZm4sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplcjogc2VyaWFsaXplclxuICB9KVxufVxuXG4vL1xuLy8gU3RyYXRlZ3lcbi8vXG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlICh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIC8vIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAndW5zYWZlJyBwcmltaXRpdmUgZm9yIG91ciBuZWVkc1xufVxuXG5mdW5jdGlvbiBtb25hZGljIChmbiwgY2FjaGUsIHNlcmlhbGl6ZXIsIGFyZykge1xuICB2YXIgY2FjaGVLZXkgPSBpc1ByaW1pdGl2ZShhcmcpID8gYXJnIDogc2VyaWFsaXplcihhcmcpXG5cbiAgdmFyIGNvbXB1dGVkVmFsdWUgPSBjYWNoZS5nZXQoY2FjaGVLZXkpXG4gIGlmICh0eXBlb2YgY29tcHV0ZWRWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb21wdXRlZFZhbHVlID0gZm4uY2FsbCh0aGlzLCBhcmcpXG4gICAgY2FjaGUuc2V0KGNhY2hlS2V5LCBjb21wdXRlZFZhbHVlKVxuICB9XG5cbiAgcmV0dXJuIGNvbXB1dGVkVmFsdWVcbn1cblxuZnVuY3Rpb24gdmFyaWFkaWMgKGZuLCBjYWNoZSwgc2VyaWFsaXplcikge1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMylcbiAgdmFyIGNhY2hlS2V5ID0gc2VyaWFsaXplcihhcmdzKVxuXG4gIHZhciBjb21wdXRlZFZhbHVlID0gY2FjaGUuZ2V0KGNhY2hlS2V5KVxuICBpZiAodHlwZW9mIGNvbXB1dGVkVmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29tcHV0ZWRWYWx1ZSA9IGZuLmFwcGx5KHRoaXMsIGFyZ3MpXG4gICAgY2FjaGUuc2V0KGNhY2hlS2V5LCBjb21wdXRlZFZhbHVlKVxuICB9XG5cbiAgcmV0dXJuIGNvbXB1dGVkVmFsdWVcbn1cblxuZnVuY3Rpb24gYXNzZW1ibGUgKGZuLCBjb250ZXh0LCBzdHJhdGVneSwgY2FjaGUsIHNlcmlhbGl6ZSkge1xuICByZXR1cm4gc3RyYXRlZ3kuYmluZChcbiAgICBjb250ZXh0LFxuICAgIGZuLFxuICAgIGNhY2hlLFxuICAgIHNlcmlhbGl6ZVxuICApXG59XG5cbmZ1bmN0aW9uIHN0cmF0ZWd5RGVmYXVsdCAoZm4sIG9wdGlvbnMpIHtcbiAgdmFyIHN0cmF0ZWd5ID0gZm4ubGVuZ3RoID09PSAxID8gbW9uYWRpYyA6IHZhcmlhZGljXG5cbiAgcmV0dXJuIGFzc2VtYmxlKFxuICAgIGZuLFxuICAgIHRoaXMsXG4gICAgc3RyYXRlZ3ksXG4gICAgb3B0aW9ucy5jYWNoZS5jcmVhdGUoKSxcbiAgICBvcHRpb25zLnNlcmlhbGl6ZXJcbiAgKVxufVxuXG5mdW5jdGlvbiBzdHJhdGVneVZhcmlhZGljIChmbiwgb3B0aW9ucykge1xuICB2YXIgc3RyYXRlZ3kgPSB2YXJpYWRpY1xuXG4gIHJldHVybiBhc3NlbWJsZShcbiAgICBmbixcbiAgICB0aGlzLFxuICAgIHN0cmF0ZWd5LFxuICAgIG9wdGlvbnMuY2FjaGUuY3JlYXRlKCksXG4gICAgb3B0aW9ucy5zZXJpYWxpemVyXG4gIClcbn1cblxuZnVuY3Rpb24gc3RyYXRlZ3lNb25hZGljIChmbiwgb3B0aW9ucykge1xuICB2YXIgc3RyYXRlZ3kgPSBtb25hZGljXG5cbiAgcmV0dXJuIGFzc2VtYmxlKFxuICAgIGZuLFxuICAgIHRoaXMsXG4gICAgc3RyYXRlZ3ksXG4gICAgb3B0aW9ucy5jYWNoZS5jcmVhdGUoKSxcbiAgICBvcHRpb25zLnNlcmlhbGl6ZXJcbiAgKVxufVxuXG4vL1xuLy8gU2VyaWFsaXplclxuLy9cblxuZnVuY3Rpb24gc2VyaWFsaXplckRlZmF1bHQgKCkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJndW1lbnRzKVxufVxuXG4vL1xuLy8gQ2FjaGVcbi8vXG5cbmZ1bmN0aW9uIE9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZSAoKSB7XG4gIHRoaXMuY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpXG59XG5cbk9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gKGtleSBpbiB0aGlzLmNhY2hlKVxufVxuXG5PYmplY3RXaXRob3V0UHJvdG90eXBlQ2FjaGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuY2FjaGVba2V5XVxufVxuXG5PYmplY3RXaXRob3V0UHJvdG90eXBlQ2FjaGUucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRoaXMuY2FjaGVba2V5XSA9IHZhbHVlXG59XG5cbnZhciBjYWNoZURlZmF1bHQgPSB7XG4gIGNyZWF0ZTogZnVuY3Rpb24gY3JlYXRlICgpIHtcbiAgICByZXR1cm4gbmV3IE9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZSgpXG4gIH1cbn1cblxuLy9cbi8vIEFQSVxuLy9cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplXG5tb2R1bGUuZXhwb3J0cy5zdHJhdGVnaWVzID0ge1xuICB2YXJpYWRpYzogc3RyYXRlZ3lWYXJpYWRpYyxcbiAgbW9uYWRpYzogc3RyYXRlZ3lNb25hZGljXG59XG4iLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmV4cG9ydCB2YXIgRXJyb3JDb2RlO1xuKGZ1bmN0aW9uIChFcnJvckNvZGUpIHtcbiAgICAvLyBXaGVuIHdlIGhhdmUgYSBwbGFjZWhvbGRlciBidXQgbm8gdmFsdWUgdG8gZm9ybWF0XG4gICAgRXJyb3JDb2RlW1wiTUlTU0lOR19WQUxVRVwiXSA9IFwiTUlTU0lOR19WQUxVRVwiO1xuICAgIC8vIFdoZW4gdmFsdWUgc3VwcGxpZWQgaXMgaW52YWxpZFxuICAgIEVycm9yQ29kZVtcIklOVkFMSURfVkFMVUVcIl0gPSBcIklOVkFMSURfVkFMVUVcIjtcbiAgICAvLyBXaGVuIHdlIG5lZWQgc3BlY2lmaWMgSW50bCBBUEkgYnV0IGl0J3Mgbm90IGF2YWlsYWJsZVxuICAgIEVycm9yQ29kZVtcIk1JU1NJTkdfSU5UTF9BUElcIl0gPSBcIk1JU1NJTkdfSU5UTF9BUElcIjtcbn0pKEVycm9yQ29kZSB8fCAoRXJyb3JDb2RlID0ge30pKTtcbnZhciBGb3JtYXRFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRm9ybWF0RXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRm9ybWF0RXJyb3IobXNnLCBjb2RlLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbXNnKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jb2RlID0gY29kZTtcbiAgICAgICAgX3RoaXMub3JpZ2luYWxNZXNzYWdlID0gb3JpZ2luYWxNZXNzYWdlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEZvcm1hdEVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiW2Zvcm1hdGpzIEVycm9yOiBcIiArIHRoaXMuY29kZSArIFwiXSBcIiArIHRoaXMubWVzc2FnZTtcbiAgICB9O1xuICAgIHJldHVybiBGb3JtYXRFcnJvcjtcbn0oRXJyb3IpKTtcbmV4cG9ydCB7IEZvcm1hdEVycm9yIH07XG52YXIgSW52YWxpZFZhbHVlRXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEludmFsaWRWYWx1ZUVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEludmFsaWRWYWx1ZUVycm9yKHZhcmlhYmxlSWQsIHZhbHVlLCBvcHRpb25zLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiSW52YWxpZCB2YWx1ZXMgZm9yIFxcXCJcIiArIHZhcmlhYmxlSWQgKyBcIlxcXCI6IFxcXCJcIiArIHZhbHVlICsgXCJcXFwiLiBPcHRpb25zIGFyZSBcXFwiXCIgKyBPYmplY3Qua2V5cyhvcHRpb25zKS5qb2luKCdcIiwgXCInKSArIFwiXFxcIlwiLCBcIklOVkFMSURfVkFMVUVcIiAvKiBJTlZBTElEX1ZBTFVFICovLCBvcmlnaW5hbE1lc3NhZ2UpIHx8IHRoaXM7XG4gICAgfVxuICAgIHJldHVybiBJbnZhbGlkVmFsdWVFcnJvcjtcbn0oRm9ybWF0RXJyb3IpKTtcbmV4cG9ydCB7IEludmFsaWRWYWx1ZUVycm9yIH07XG52YXIgSW52YWxpZFZhbHVlVHlwZUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJbnZhbGlkVmFsdWVUeXBlRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSW52YWxpZFZhbHVlVHlwZUVycm9yKHZhbHVlLCB0eXBlLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiVmFsdWUgZm9yIFxcXCJcIiArIHZhbHVlICsgXCJcXFwiIG11c3QgYmUgb2YgdHlwZSBcIiArIHR5cGUsIFwiSU5WQUxJRF9WQUxVRVwiIC8qIElOVkFMSURfVkFMVUUgKi8sIG9yaWdpbmFsTWVzc2FnZSkgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIEludmFsaWRWYWx1ZVR5cGVFcnJvcjtcbn0oRm9ybWF0RXJyb3IpKTtcbmV4cG9ydCB7IEludmFsaWRWYWx1ZVR5cGVFcnJvciB9O1xudmFyIE1pc3NpbmdWYWx1ZUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNaXNzaW5nVmFsdWVFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNaXNzaW5nVmFsdWVFcnJvcih2YXJpYWJsZUlkLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiVGhlIGludGwgc3RyaW5nIGNvbnRleHQgdmFyaWFibGUgXFxcIlwiICsgdmFyaWFibGVJZCArIFwiXFxcIiB3YXMgbm90IHByb3ZpZGVkIHRvIHRoZSBzdHJpbmcgXFxcIlwiICsgb3JpZ2luYWxNZXNzYWdlICsgXCJcXFwiXCIsIFwiTUlTU0lOR19WQUxVRVwiIC8qIE1JU1NJTkdfVkFMVUUgKi8sIG9yaWdpbmFsTWVzc2FnZSkgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIE1pc3NpbmdWYWx1ZUVycm9yO1xufShGb3JtYXRFcnJvcikpO1xuZXhwb3J0IHsgTWlzc2luZ1ZhbHVlRXJyb3IgfTtcbiIsImltcG9ydCB7IGlzQXJndW1lbnRFbGVtZW50LCBpc0RhdGVFbGVtZW50LCBpc0RhdGVUaW1lU2tlbGV0b24sIGlzTGl0ZXJhbEVsZW1lbnQsIGlzTnVtYmVyRWxlbWVudCwgaXNOdW1iZXJTa2VsZXRvbiwgaXNQbHVyYWxFbGVtZW50LCBpc1BvdW5kRWxlbWVudCwgaXNTZWxlY3RFbGVtZW50LCBpc1RpbWVFbGVtZW50LCBpc1RhZ0VsZW1lbnQsIH0gZnJvbSAnaW50bC1tZXNzYWdlZm9ybWF0LXBhcnNlcic7XG5pbXBvcnQgeyBNaXNzaW5nVmFsdWVFcnJvciwgSW52YWxpZFZhbHVlRXJyb3IsIEZvcm1hdEVycm9yLCBJbnZhbGlkVmFsdWVUeXBlRXJyb3IsIH0gZnJvbSAnLi9lcnJvcic7XG5leHBvcnQgdmFyIFBBUlRfVFlQRTtcbihmdW5jdGlvbiAoUEFSVF9UWVBFKSB7XG4gICAgUEFSVF9UWVBFW1BBUlRfVFlQRVtcImxpdGVyYWxcIl0gPSAwXSA9IFwibGl0ZXJhbFwiO1xuICAgIFBBUlRfVFlQRVtQQVJUX1RZUEVbXCJvYmplY3RcIl0gPSAxXSA9IFwib2JqZWN0XCI7XG59KShQQVJUX1RZUEUgfHwgKFBBUlRfVFlQRSA9IHt9KSk7XG5mdW5jdGlvbiBtZXJnZUxpdGVyYWwocGFydHMpIHtcbiAgICBpZiAocGFydHMubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0cy5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgcGFydCkge1xuICAgICAgICB2YXIgbGFzdFBhcnQgPSBhbGxbYWxsLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoIWxhc3RQYXJ0IHx8XG4gICAgICAgICAgICBsYXN0UGFydC50eXBlICE9PSAwIC8qIGxpdGVyYWwgKi8gfHxcbiAgICAgICAgICAgIHBhcnQudHlwZSAhPT0gMCAvKiBsaXRlcmFsICovKSB7XG4gICAgICAgICAgICBhbGwucHVzaChwYXJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxhc3RQYXJ0LnZhbHVlICs9IHBhcnQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFsbDtcbiAgICB9LCBbXSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNGb3JtYXRYTUxFbGVtZW50Rm4oZWwpIHtcbiAgICByZXR1cm4gdHlwZW9mIGVsID09PSAnZnVuY3Rpb24nO1xufVxuLy8gVE9ETyhza2VsZXRvbik6IGFkZCBza2VsZXRvbiBzdXBwb3J0XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VG9QYXJ0cyhlbHMsIGxvY2FsZXMsIGZvcm1hdHRlcnMsIGZvcm1hdHMsIHZhbHVlcywgY3VycmVudFBsdXJhbFZhbHVlLCBcbi8vIEZvciBkZWJ1Z2dpbmdcbm9yaWdpbmFsTWVzc2FnZSkge1xuICAgIC8vIEhvdCBwYXRoIGZvciBzdHJhaWdodCBzaW1wbGUgbXNnIHRyYW5zbGF0aW9uc1xuICAgIGlmIChlbHMubGVuZ3RoID09PSAxICYmIGlzTGl0ZXJhbEVsZW1lbnQoZWxzWzBdKSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IDAgLyogbGl0ZXJhbCAqLyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZWxzWzBdLnZhbHVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMCwgZWxzXzEgPSBlbHM7IF9pIDwgZWxzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBlbCA9IGVsc18xW19pXTtcbiAgICAgICAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5nIHBhcnRzLlxuICAgICAgICBpZiAoaXNMaXRlcmFsRWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGVsLnZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPOiBzaG91bGQgdGhpcyBwYXJ0IGJlIGxpdGVyYWwgdHlwZT9cbiAgICAgICAgLy8gUmVwbGFjZSBgI2AgaW4gcGx1cmFsIHJ1bGVzIHdpdGggdGhlIGFjdHVhbCBudW1lcmljIHZhbHVlLlxuICAgICAgICBpZiAoaXNQb3VuZEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRQbHVyYWxWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IDAgLyogbGl0ZXJhbCAqLyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnMuZ2V0TnVtYmVyRm9ybWF0KGxvY2FsZXMpLmZvcm1hdChjdXJyZW50UGx1cmFsVmFsdWUpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhck5hbWUgPSBlbC52YWx1ZTtcbiAgICAgICAgLy8gRW5mb3JjZSB0aGF0IGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIuXG4gICAgICAgIGlmICghKHZhbHVlcyAmJiB2YXJOYW1lIGluIHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNaXNzaW5nVmFsdWVFcnJvcih2YXJOYW1lLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IHZhbHVlc1t2YXJOYW1lXTtcbiAgICAgICAgaWYgKGlzQXJndW1lbnRFbGVtZW50KGVsKSkge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyAwIC8qIGxpdGVyYWwgKi8gOiAxIC8qIG9iamVjdCAqLyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZvcm1hdCBwbHVyYWwgYW5kIHNlbGVjdCBwYXJ0cycgb3B0aW9uIOKAlCB3aGljaCBjYW4gYmUgYVxuICAgICAgICAvLyBuZXN0ZWQgcGF0dGVybiBzdHJ1Y3R1cmUuIFRoZSBjaG9vc2luZyBvZiB0aGUgb3B0aW9uIHRvIHVzZSBpc1xuICAgICAgICAvLyBhYnN0cmFjdGVkLWJ5IGFuZCBkZWxlZ2F0ZWQtdG8gdGhlIHBhcnQgaGVscGVyIG9iamVjdC5cbiAgICAgICAgaWYgKGlzRGF0ZUVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgc3R5bGUgPSB0eXBlb2YgZWwuc3R5bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBmb3JtYXRzLmRhdGVbZWwuc3R5bGVdXG4gICAgICAgICAgICAgICAgOiBpc0RhdGVUaW1lU2tlbGV0b24oZWwuc3R5bGUpXG4gICAgICAgICAgICAgICAgICAgID8gZWwuc3R5bGUucGFyc2VkT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnNcbiAgICAgICAgICAgICAgICAgICAgLmdldERhdGVUaW1lRm9ybWF0KGxvY2FsZXMsIHN0eWxlKVxuICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHZhbHVlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVGltZUVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgc3R5bGUgPSB0eXBlb2YgZWwuc3R5bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBmb3JtYXRzLnRpbWVbZWwuc3R5bGVdXG4gICAgICAgICAgICAgICAgOiBpc0RhdGVUaW1lU2tlbGV0b24oZWwuc3R5bGUpXG4gICAgICAgICAgICAgICAgICAgID8gZWwuc3R5bGUucGFyc2VkT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnNcbiAgICAgICAgICAgICAgICAgICAgLmdldERhdGVUaW1lRm9ybWF0KGxvY2FsZXMsIHN0eWxlKVxuICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHZhbHVlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTnVtYmVyRWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIHZhciBzdHlsZSA9IHR5cGVvZiBlbC5zdHlsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IGZvcm1hdHMubnVtYmVyW2VsLnN0eWxlXVxuICAgICAgICAgICAgICAgIDogaXNOdW1iZXJTa2VsZXRvbihlbC5zdHlsZSlcbiAgICAgICAgICAgICAgICAgICAgPyBlbC5zdHlsZS5wYXJzZWRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHN0eWxlICYmIHN0eWxlLnNjYWxlKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSAqXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3R5bGUuc2NhbGUgfHwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgdHlwZTogMCAvKiBsaXRlcmFsICovLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZXJzXG4gICAgICAgICAgICAgICAgICAgIC5nZXROdW1iZXJGb3JtYXQobG9jYWxlcywgc3R5bGUpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQodmFsdWUpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNUYWdFbGVtZW50KGVsKSkge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZWwuY2hpbGRyZW4sIHZhbHVlXzEgPSBlbC52YWx1ZTtcbiAgICAgICAgICAgIHZhciBmb3JtYXRGbiA9IHZhbHVlc1t2YWx1ZV8xXTtcbiAgICAgICAgICAgIGlmICghaXNGb3JtYXRYTUxFbGVtZW50Rm4oZm9ybWF0Rm4pKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRWYWx1ZVR5cGVFcnJvcih2YWx1ZV8xLCAnZnVuY3Rpb24nLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHBhcnRzID0gZm9ybWF0VG9QYXJ0cyhjaGlsZHJlbiwgbG9jYWxlcywgZm9ybWF0dGVycywgZm9ybWF0cywgdmFsdWVzLCBjdXJyZW50UGx1cmFsVmFsdWUpO1xuICAgICAgICAgICAgdmFyIGNodW5rcyA9IGZvcm1hdEZuKHBhcnRzLm1hcChmdW5jdGlvbiAocCkgeyByZXR1cm4gcC52YWx1ZTsgfSkpO1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNodW5rcykpIHtcbiAgICAgICAgICAgICAgICBjaHVua3MgPSBbY2h1bmtzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoLmFwcGx5KHJlc3VsdCwgY2h1bmtzLm1hcChmdW5jdGlvbiAoYykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVvZiBjID09PSAnc3RyaW5nJyA/IDAgLyogbGl0ZXJhbCAqLyA6IDEgLyogb2JqZWN0ICovLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1NlbGVjdEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgb3B0ID0gZWwub3B0aW9uc1t2YWx1ZV0gfHwgZWwub3B0aW9ucy5vdGhlcjtcbiAgICAgICAgICAgIGlmICghb3B0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRWYWx1ZUVycm9yKGVsLnZhbHVlLCB2YWx1ZSwgT2JqZWN0LmtleXMoZWwub3B0aW9ucyksIG9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaC5hcHBseShyZXN1bHQsIGZvcm1hdFRvUGFydHMob3B0LnZhbHVlLCBsb2NhbGVzLCBmb3JtYXR0ZXJzLCBmb3JtYXRzLCB2YWx1ZXMpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1BsdXJhbEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgb3B0ID0gZWwub3B0aW9uc1tcIj1cIiArIHZhbHVlXTtcbiAgICAgICAgICAgIGlmICghb3B0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJbnRsLlBsdXJhbFJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFcnJvcihcIkludGwuUGx1cmFsUnVsZXMgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LlxcblRyeSBwb2x5ZmlsbGluZyBpdCB1c2luZyBcXFwiQGZvcm1hdGpzL2ludGwtcGx1cmFscnVsZXNcXFwiXFxuXCIsIFwiTUlTU0lOR19JTlRMX0FQSVwiIC8qIE1JU1NJTkdfSU5UTF9BUEkgKi8sIG9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBydWxlID0gZm9ybWF0dGVyc1xuICAgICAgICAgICAgICAgICAgICAuZ2V0UGx1cmFsUnVsZXMobG9jYWxlcywgeyB0eXBlOiBlbC5wbHVyYWxUeXBlIH0pXG4gICAgICAgICAgICAgICAgICAgIC5zZWxlY3QodmFsdWUgLSAoZWwub2Zmc2V0IHx8IDApKTtcbiAgICAgICAgICAgICAgICBvcHQgPSBlbC5vcHRpb25zW3J1bGVdIHx8IGVsLm9wdGlvbnMub3RoZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9wdCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVmFsdWVFcnJvcihlbC52YWx1ZSwgdmFsdWUsIE9iamVjdC5rZXlzKGVsLm9wdGlvbnMpLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2guYXBwbHkocmVzdWx0LCBmb3JtYXRUb1BhcnRzKG9wdC52YWx1ZSwgbG9jYWxlcywgZm9ybWF0dGVycywgZm9ybWF0cywgdmFsdWVzLCB2YWx1ZSAtIChlbC5vZmZzZXQgfHwgMCkpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXJnZUxpdGVyYWwocmVzdWx0KTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgKGMpIDIwMTQsIFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5Db3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuXG5TZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX3NwcmVhZEFycmF5cyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyJztcbmltcG9ydCAqIGFzIG1lbW9pemUgZnJvbSAnZmFzdC1tZW1vaXplJztcbmltcG9ydCB7IGZvcm1hdFRvUGFydHMsIH0gZnJvbSAnLi9mb3JtYXR0ZXJzJztcbi8vIC0tIE1lc3NhZ2VGb3JtYXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnKGMxLCBjMikge1xuICAgIGlmICghYzIpIHtcbiAgICAgICAgcmV0dXJuIGMxO1xuICAgIH1cbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIChjMSB8fCB7fSkpLCAoYzIgfHwge30pKSwgT2JqZWN0LmtleXMoYzEpLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBrKSB7XG4gICAgICAgIGFsbFtrXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBjMVtrXSksIChjMltrXSB8fCB7fSkpO1xuICAgICAgICByZXR1cm4gYWxsO1xuICAgIH0sIHt9KSk7XG59XG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3MoZGVmYXVsdENvbmZpZywgY29uZmlncykge1xuICAgIGlmICghY29uZmlncykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdENvbmZpZztcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGRlZmF1bHRDb25maWcpLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBrKSB7XG4gICAgICAgIGFsbFtrXSA9IG1lcmdlQ29uZmlnKGRlZmF1bHRDb25maWdba10sIGNvbmZpZ3Nba10pO1xuICAgICAgICByZXR1cm4gYWxsO1xuICAgIH0sIF9fYXNzaWduKHt9LCBkZWZhdWx0Q29uZmlnKSk7XG59XG5mdW5jdGlvbiBjcmVhdGVGYXN0TWVtb2l6ZUNhY2hlKHN0b3JlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY3JlYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5IGluIHN0b3JlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZVtrZXldO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbi8vIEB0cy1pZ25vcmUgdGhpcyBpcyB0byBkZWFsIHdpdGggcm9sbHVwJ3MgZGVmYXVsdCBpbXBvcnQgc2hlbmFuaWdhbnNcbnZhciBfbWVtb2l6ZUludGwgPSBtZW1vaXplLmRlZmF1bHQgfHwgbWVtb2l6ZTtcbnZhciBtZW1vaXplSW50bCA9IF9tZW1vaXplSW50bDtcbmZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRGb3JtYXR0ZXJzKGNhY2hlKSB7XG4gICAgaWYgKGNhY2hlID09PSB2b2lkIDApIHsgY2FjaGUgPSB7XG4gICAgICAgIG51bWJlcjoge30sXG4gICAgICAgIGRhdGVUaW1lOiB7fSxcbiAgICAgICAgcGx1cmFsUnVsZXM6IHt9LFxuICAgIH07IH1cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXROdW1iZXJGb3JtYXQ6IG1lbW9pemVJbnRsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgKChfYSA9IEludGwuTnVtYmVyRm9ybWF0KS5iaW5kLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5cyhbdm9pZCAwXSwgYXJncykpKSgpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjYWNoZTogY3JlYXRlRmFzdE1lbW9pemVDYWNoZShjYWNoZS5udW1iZXIpLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IG1lbW9pemVJbnRsLnN0cmF0ZWdpZXMudmFyaWFkaWMsXG4gICAgICAgIH0pLFxuICAgICAgICBnZXREYXRlVGltZUZvcm1hdDogbWVtb2l6ZUludGwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyAoKF9hID0gSW50bC5EYXRlVGltZUZvcm1hdCkuYmluZC5hcHBseShfYSwgX19zcHJlYWRBcnJheXMoW3ZvaWQgMF0sIGFyZ3MpKSkoKTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgY2FjaGU6IGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoY2FjaGUuZGF0ZVRpbWUpLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IG1lbW9pemVJbnRsLnN0cmF0ZWdpZXMudmFyaWFkaWMsXG4gICAgICAgIH0pLFxuICAgICAgICBnZXRQbHVyYWxSdWxlczogbWVtb2l6ZUludGwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyAoKF9hID0gSW50bC5QbHVyYWxSdWxlcykuYmluZC5hcHBseShfYSwgX19zcHJlYWRBcnJheXMoW3ZvaWQgMF0sIGFyZ3MpKSkoKTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgY2FjaGU6IGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoY2FjaGUucGx1cmFsUnVsZXMpLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IG1lbW9pemVJbnRsLnN0cmF0ZWdpZXMudmFyaWFkaWMsXG4gICAgICAgIH0pLFxuICAgIH07XG59XG52YXIgSW50bE1lc3NhZ2VGb3JtYXQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gSW50bE1lc3NhZ2VGb3JtYXQobWVzc2FnZSwgbG9jYWxlcywgb3ZlcnJpZGVGb3JtYXRzLCBvcHRzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChsb2NhbGVzID09PSB2b2lkIDApIHsgbG9jYWxlcyA9IEludGxNZXNzYWdlRm9ybWF0LmRlZmF1bHRMb2NhbGU7IH1cbiAgICAgICAgdGhpcy5mb3JtYXR0ZXJDYWNoZSA9IHtcbiAgICAgICAgICAgIG51bWJlcjoge30sXG4gICAgICAgICAgICBkYXRlVGltZToge30sXG4gICAgICAgICAgICBwbHVyYWxSdWxlczoge30sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICAgICAgICAgICAgdmFyIHBhcnRzID0gX3RoaXMuZm9ybWF0VG9QYXJ0cyh2YWx1ZXMpO1xuICAgICAgICAgICAgLy8gSG90IHBhdGggZm9yIHN0cmFpZ2h0IHNpbXBsZSBtc2cgdHJhbnNsYXRpb25zXG4gICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnRzWzBdLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnRzLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBwYXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhbGwubGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgICAgIHBhcnQudHlwZSAhPT0gMCAvKiBsaXRlcmFsICovIHx8XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBhbGxbYWxsLmxlbmd0aCAtIDFdICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBhbGwucHVzaChwYXJ0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFsbFthbGwubGVuZ3RoIC0gMV0gKz0gcGFydC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFsbDtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0WzBdIHx8ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mb3JtYXRUb1BhcnRzID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFRvUGFydHMoX3RoaXMuYXN0LCBfdGhpcy5sb2NhbGVzLCBfdGhpcy5mb3JtYXR0ZXJzLCBfdGhpcy5mb3JtYXRzLCB2YWx1ZXMsIHVuZGVmaW5lZCwgX3RoaXMubWVzc2FnZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVzb2x2ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGxvY2FsZTogSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKF90aGlzLmxvY2FsZXMpWzBdLFxuICAgICAgICB9KTsgfTtcbiAgICAgICAgdGhpcy5nZXRBc3QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5hc3Q7IH07XG4gICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgICAgICBpZiAoIUludGxNZXNzYWdlRm9ybWF0Ll9fcGFyc2UpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnRsTWVzc2FnZUZvcm1hdC5fX3BhcnNlIG11c3QgYmUgc2V0IHRvIHByb2Nlc3MgYG1lc3NhZ2VgIG9mIHR5cGUgYHN0cmluZ2AnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFBhcnNlIHN0cmluZyBtZXNzYWdlcyBpbnRvIGFuIEFTVC5cbiAgICAgICAgICAgIHRoaXMuYXN0ID0gSW50bE1lc3NhZ2VGb3JtYXQuX19wYXJzZShtZXNzYWdlLCB7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpZ25vcmVUYWc6IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5pZ25vcmVUYWcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXN0ID0gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5hc3QpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIG1lc3NhZ2UgbXVzdCBiZSBwcm92aWRlZCBhcyBhIFN0cmluZyBvciBBU1QuJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ3JlYXRlcyBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGBmb3JtYXRzYCBtZXJnZWQgd2l0aCB0aGUgZGVmYXVsdFxuICAgICAgICAvLyBmb3JtYXRzLlxuICAgICAgICB0aGlzLmZvcm1hdHMgPSBtZXJnZUNvbmZpZ3MoSW50bE1lc3NhZ2VGb3JtYXQuZm9ybWF0cywgb3ZlcnJpZGVGb3JtYXRzKTtcbiAgICAgICAgLy8gRGVmaW5lZCBmaXJzdCBiZWNhdXNlIGl0J3MgdXNlZCB0byBidWlsZCB0aGUgZm9ybWF0IHBhdHRlcm4uXG4gICAgICAgIHRoaXMubG9jYWxlcyA9IGxvY2FsZXM7XG4gICAgICAgIHRoaXMuZm9ybWF0dGVycyA9XG4gICAgICAgICAgICAob3B0cyAmJiBvcHRzLmZvcm1hdHRlcnMpIHx8IGNyZWF0ZURlZmF1bHRGb3JtYXR0ZXJzKHRoaXMuZm9ybWF0dGVyQ2FjaGUpO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSW50bE1lc3NhZ2VGb3JtYXQsIFwiZGVmYXVsdExvY2FsZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCFJbnRsTWVzc2FnZUZvcm1hdC5tZW1vaXplZERlZmF1bHRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICBJbnRsTWVzc2FnZUZvcm1hdC5tZW1vaXplZERlZmF1bHRMb2NhbGUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gSW50bE1lc3NhZ2VGb3JtYXQubWVtb2l6ZWREZWZhdWx0TG9jYWxlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgSW50bE1lc3NhZ2VGb3JtYXQubWVtb2l6ZWREZWZhdWx0TG9jYWxlID0gbnVsbDtcbiAgICBJbnRsTWVzc2FnZUZvcm1hdC5fX3BhcnNlID0gcGFyc2U7XG4gICAgLy8gRGVmYXVsdCBmb3JtYXQgb3B0aW9ucyB1c2VkIGFzIHRoZSBwcm90b3R5cGUgb2YgdGhlIGBmb3JtYXRzYCBwcm92aWRlZCB0byB0aGVcbiAgICAvLyBjb25zdHJ1Y3Rvci4gVGhlc2UgYXJlIHVzZWQgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGludGVybmFsIEludGwuTnVtYmVyRm9ybWF0XG4gICAgLy8gYW5kIEludGwuRGF0ZVRpbWVGb3JtYXQgaW5zdGFuY2VzLlxuICAgIEludGxNZXNzYWdlRm9ybWF0LmZvcm1hdHMgPSB7XG4gICAgICAgIG51bWJlcjoge1xuICAgICAgICAgICAgY3VycmVuY3k6IHtcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwZXJjZW50OiB7XG4gICAgICAgICAgICAgICAgc3R5bGU6ICdwZXJjZW50JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGU6IHtcbiAgICAgICAgICAgIHNob3J0OiB7XG4gICAgICAgICAgICAgICAgbW9udGg6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICB5ZWFyOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVkaXVtOiB7XG4gICAgICAgICAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdWxsOiB7XG4gICAgICAgICAgICAgICAgd2Vla2RheTogJ2xvbmcnLFxuICAgICAgICAgICAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdGltZToge1xuICAgICAgICAgICAgc2hvcnQ6IHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVkaXVtOiB7XG4gICAgICAgICAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIHNlY29uZDogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lOiAnc2hvcnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZ1bGw6IHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lOiAnc2hvcnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBJbnRsTWVzc2FnZUZvcm1hdDtcbn0oKSk7XG5leHBvcnQgeyBJbnRsTWVzc2FnZUZvcm1hdCB9O1xuIiwiLypcbkNvcHlyaWdodCAoYykgMjAxNCwgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbkNvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS5cblNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4qL1xuaW1wb3J0IHsgSW50bE1lc3NhZ2VGb3JtYXQgfSBmcm9tICcuL3NyYy9jb3JlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2Zvcm1hdHRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29yZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9lcnJvcic7XG5leHBvcnQgZGVmYXVsdCBJbnRsTWVzc2FnZUZvcm1hdDtcbiJdLCJuYW1lcyI6WyJFcnJvckNvZGUiLCJQQVJUX1RZUEUiLCJtZW1vaXplLmRlZmF1bHQiLCJtZW1vaXplIl0sIm1hcHBpbmdzIjoiOzs7Ozs7SUFBQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLElBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNuQyxJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYztJQUN6QyxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxZQUFZLEtBQUssSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEYsUUFBUSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUcsSUFBSSxPQUFPLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0Y7SUFDTyxTQUFTLFNBQVMsQ0FBQyxD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RyxNQUFNLENBQUM7SUFDekIsSUFBSSxJQUFJLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsSUFBSSxJQUFJLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDekIsSUFBSSxJQUFJLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEQsSUFBSSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDM0IsSUFBSSxJQUFJLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsSUFBSSxJQUFJLE9BQU8sR0FBRyxlQUFlLENBQUM7SUFDbEMsSUFBSSxJQUFJLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxlQUFlLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDakUsSUFBSSxJQUFJLE9BQU8sR0FBRyxTQUFTLENBQUM7SUFDNUIsSUFBSSxJQUFJLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDM0QsSUFBSSxJQUFJLE9BQU8sR0FBRyxVQUFVLEtBQUssRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRTtJQUNoRSxRQUFRLE9BQU8sUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUUsVUFBVSxFQUFFLFVBQVUsS0FBSyxRQUFRLEdBQUcsVUFBVSxHQUFHLFNBQVMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEdBQUcsRUFBRSxFQUFFLEVBQUU7SUFDcE0sZ0JBQWdCLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxFQUFFLEVBQUUsS0FBSyxHQUFHLEVBQUUsQ0FBQyxLQUFLLEVBQUUsY0FBYyxHQUFHLEVBQUUsQ0FBQyxRQUFRLENBQUM7SUFDL0UsZ0JB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
4254
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50bC1tZXNzYWdlZm9ybWF0LnVtZC5qcyIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3RzbGliL3RzbGliLmVzNi5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyL2xpYi9zcmMvdHlwZXMuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW50bC1tZXNzYWdlZm9ybWF0LXBhcnNlci9saWIvc3JjL3NrZWxldG9uLmpzIiwiLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2ludGwtbWVzc2FnZWZvcm1hdC1wYXJzZXIvbGliL3NyYy9wYXJzZXIuanMiLCIuLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvaW50bC1tZXNzYWdlZm9ybWF0LXBhcnNlci9saWIvc3JjL25vcm1hbGl6ZS5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9pbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyL2xpYi9pbmRleC5qcyIsIi4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9mYXN0LW1lbW9pemUvc3JjL2luZGV4LmpzIiwibGliL3NyYy9lcnJvci5qcyIsImxpYi9zcmMvZm9ybWF0dGVycy5qcyIsImxpYi9zcmMvY29yZS5qcyIsImxpYi9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiEgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcclxuQ29weXJpZ2h0IChjKSBNaWNyb3NvZnQgQ29ycG9yYXRpb24uXHJcblxyXG5QZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBhbmQvb3IgZGlzdHJpYnV0ZSB0aGlzIHNvZnR3YXJlIGZvciBhbnlcclxucHVycG9zZSB3aXRoIG9yIHdpdGhvdXQgZmVlIGlzIGhlcmVieSBncmFudGVkLlxyXG5cclxuVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiBBTkQgVEhFIEFVVEhPUiBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSFxyXG5SRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFlcclxuQU5EIEZJVE5FU1MuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1IgQkUgTElBQkxFIEZPUiBBTlkgU1BFQ0lBTCwgRElSRUNULFxyXG5JTkRJUkVDVCwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST01cclxuTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIE5FR0xJR0VOQ0UgT1JcclxuT1RIRVIgVE9SVElPVVMgQUNUSU9OLCBBUklTSU5HIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFVTRSBPUlxyXG5QRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLlxyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiAqL1xyXG4vKiBnbG9iYWwgUmVmbGVjdCwgUHJvbWlzZSAqL1xyXG5cclxudmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbihkLCBiKSB7XHJcbiAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxyXG4gICAgICAgIGZ1bmN0aW9uIChkLCBiKSB7IGZvciAodmFyIHAgaW4gYikgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChiLCBwKSkgZFtwXSA9IGJbcF07IH07XHJcbiAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2xhc3MgZXh0ZW5kcyB2YWx1ZSBcIiArIFN0cmluZyhiKSArIFwiIGlzIG5vdCBhIGNvbnN0cnVjdG9yIG9yIG51bGxcIik7XHJcbiAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xyXG4gICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XHJcbiAgICBkLnByb3RvdHlwZSA9IGIgPT09IG51bGwgPyBPYmplY3QuY3JlYXRlKGIpIDogKF9fLnByb3RvdHlwZSA9IGIucHJvdG90eXBlLCBuZXcgX18oKSk7XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19hc3NpZ24gPSBmdW5jdGlvbigpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0O1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3Jlc3QocywgZSkge1xyXG4gICAgdmFyIHQgPSB7fTtcclxuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxyXG4gICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgaWYgKHMgIT0gbnVsbCAmJiB0eXBlb2YgT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyA9PT0gXCJmdW5jdGlvblwiKVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDAgJiYgT2JqZWN0LnByb3RvdHlwZS5wcm9wZXJ0eUlzRW51bWVyYWJsZS5jYWxsKHMsIHBbaV0pKVxyXG4gICAgICAgICAgICAgICAgdFtwW2ldXSA9IHNbcFtpXV07XHJcbiAgICAgICAgfVxyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxyXG4gICAgcmV0dXJuIG5ldyAoUCB8fCAoUCA9IFByb21pc2UpKShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XHJcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxyXG4gICAgICAgIGZ1bmN0aW9uIHN0ZXAocmVzdWx0KSB7IHJlc3VsdC5kb25lID8gcmVzb2x2ZShyZXN1bHQudmFsdWUpIDogYWRvcHQocmVzdWx0LnZhbHVlKS50aGVuKGZ1bGZpbGxlZCwgcmVqZWN0ZWQpOyB9XHJcbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xyXG4gICAgfSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2dlbmVyYXRvcih0aGlzQXJnLCBib2R5KSB7XHJcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xyXG4gICAgcmV0dXJuIGcgPSB7IG5leHQ6IHZlcmIoMCksIFwidGhyb3dcIjogdmVyYigxKSwgXCJyZXR1cm5cIjogdmVyYigyKSB9LCB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgKGdbU3ltYm9sLml0ZXJhdG9yXSA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gdGhpczsgfSksIGc7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgcmV0dXJuIGZ1bmN0aW9uICh2KSB7IHJldHVybiBzdGVwKFtuLCB2XSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcclxuICAgICAgICBpZiAoZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkdlbmVyYXRvciBpcyBhbHJlYWR5IGV4ZWN1dGluZy5cIik7XHJcbiAgICAgICAgd2hpbGUgKF8pIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcclxuICAgICAgICAgICAgaWYgKHkgPSAwLCB0KSBvcCA9IFtvcFswXSAmIDIsIHQudmFsdWVdO1xyXG4gICAgICAgICAgICBzd2l0Y2ggKG9wWzBdKSB7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcclxuICAgICAgICAgICAgICAgIGNhc2UgNDogXy5sYWJlbCsrOyByZXR1cm4geyB2YWx1ZTogb3BbMV0sIGRvbmU6IGZhbHNlIH07XHJcbiAgICAgICAgICAgICAgICBjYXNlIDU6IF8ubGFiZWwrKzsgeSA9IG9wWzFdOyBvcCA9IFswXTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgICAgIGlmICghKHQgPSBfLnRyeXMsIHQgPSB0Lmxlbmd0aCA+IDAgJiYgdFt0Lmxlbmd0aCAtIDFdKSAmJiAob3BbMF0gPT09IDYgfHwgb3BbMF0gPT09IDIpKSB7IF8gPSAwOyBjb250aW51ZTsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSA2ICYmIF8ubGFiZWwgPCB0WzFdKSB7IF8ubGFiZWwgPSB0WzFdOyB0ID0gb3A7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHQgJiYgXy5sYWJlbCA8IHRbMl0pIHsgXy5sYWJlbCA9IHRbMl07IF8ub3BzLnB1c2gob3ApOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcclxuICAgICAgICAgICAgICAgICAgICBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xyXG4gICAgICAgIH0gY2F0Y2ggKGUpIHsgb3AgPSBbNiwgZV07IHkgPSAwOyB9IGZpbmFsbHkgeyBmID0gdCA9IDA7IH1cclxuICAgICAgICBpZiAob3BbMF0gJiA1KSB0aHJvdyBvcFsxXTsgcmV0dXJuIHsgdmFsdWU6IG9wWzBdID8gb3BbMV0gOiB2b2lkIDAsIGRvbmU6IHRydWUgfTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IHZhciBfX2NyZWF0ZUJpbmRpbmcgPSBPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIGsyLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24oKSB7IHJldHVybiBtW2tdOyB9IH0pO1xyXG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIG9bazJdID0gbVtrXTtcclxufSk7XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIG8pIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKHAgIT09IFwiZGVmYXVsdFwiICYmICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwobywgcCkpIF9fY3JlYXRlQmluZGluZyhvLCBtLCBwKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBzID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIFN5bWJvbC5pdGVyYXRvciwgbSA9IHMgJiYgb1tzXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIGlmIChvICYmIHR5cGVvZiBvLmxlbmd0aCA9PT0gXCJudW1iZXJcIikgcmV0dXJuIHtcclxuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIGlmIChvICYmIGkgPj0gby5sZW5ndGgpIG8gPSB2b2lkIDA7XHJcbiAgICAgICAgICAgIHJldHVybiB7IHZhbHVlOiBvICYmIG9baSsrXSwgZG9uZTogIW8gfTtcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihzID8gXCJPYmplY3QgaXMgbm90IGl0ZXJhYmxlLlwiIDogXCJTeW1ib2wuaXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZWFkKG8sIG4pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXTtcclxuICAgIGlmICghbSkgcmV0dXJuIG87XHJcbiAgICB2YXIgaSA9IG0uY2FsbChvKSwgciwgYXIgPSBbXSwgZTtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgd2hpbGUgKChuID09PSB2b2lkIDAgfHwgbi0tID4gMCkgJiYgIShyID0gaS5uZXh0KCkpLmRvbmUpIGFyLnB1c2goci52YWx1ZSk7XHJcbiAgICB9XHJcbiAgICBjYXRjaCAoZXJyb3IpIHsgZSA9IHsgZXJyb3I6IGVycm9yIH07IH1cclxuICAgIGZpbmFsbHkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGlmIChyICYmICFyLmRvbmUgJiYgKG0gPSBpW1wicmV0dXJuXCJdKSkgbS5jYWxsKGkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBmaW5hbGx5IHsgaWYgKGUpIHRocm93IGUuZXJyb3I7IH1cclxuICAgIH1cclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuLyoqIEBkZXByZWNhdGVkICovXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5cygpIHtcclxuICAgIGZvciAodmFyIHMgPSAwLCBpID0gMCwgaWwgPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgaWw7IGkrKykgcyArPSBhcmd1bWVudHNbaV0ubGVuZ3RoO1xyXG4gICAgZm9yICh2YXIgciA9IEFycmF5KHMpLCBrID0gMCwgaSA9IDA7IGkgPCBpbDsgaSsrKVxyXG4gICAgICAgIGZvciAodmFyIGEgPSBhcmd1bWVudHNbaV0sIGogPSAwLCBqbCA9IGEubGVuZ3RoOyBqIDwgamw7IGorKywgaysrKVxyXG4gICAgICAgICAgICByW2tdID0gYVtqXTtcclxuICAgIHJldHVybiByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zcHJlYWRBcnJheSh0bywgZnJvbSkge1xyXG4gICAgZm9yICh2YXIgaSA9IDAsIGlsID0gZnJvbS5sZW5ndGgsIGogPSB0by5sZW5ndGg7IGkgPCBpbDsgaSsrLCBqKyspXHJcbiAgICAgICAgdG9bal0gPSBmcm9tW2ldO1xyXG4gICAgcmV0dXJuIHRvO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IG4gPT09IFwicmV0dXJuXCIgfSA6IGYgPyBmKHYpIDogdjsgfSA6IGY7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNWYWx1ZXMobykge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBtID0gb1tTeW1ib2wuYXN5bmNJdGVyYXRvcl0sIGk7XHJcbiAgICByZXR1cm4gbSA/IG0uY2FsbChvKSA6IChvID0gdHlwZW9mIF9fdmFsdWVzID09PSBcImZ1bmN0aW9uXCIgPyBfX3ZhbHVlcyhvKSA6IG9bU3ltYm9sLml0ZXJhdG9yXSgpLCBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaSk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaVtuXSA9IG9bbl0gJiYgZnVuY3Rpb24gKHYpIHsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdiA9IG9bbl0odiksIHNldHRsZShyZXNvbHZlLCByZWplY3QsIHYuZG9uZSwgdi52YWx1ZSk7IH0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCBkLCB2KSB7IFByb21pc2UucmVzb2x2ZSh2KS50aGVuKGZ1bmN0aW9uKHYpIHsgcmVzb2x2ZSh7IHZhbHVlOiB2LCBkb25lOiBkIH0pOyB9LCByZWplY3QpOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcblxyXG52YXIgX19zZXRNb2R1bGVEZWZhdWx0ID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCB2KSB7XHJcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgXCJkZWZhdWx0XCIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHYgfSk7XHJcbn0pIDogZnVuY3Rpb24obywgdikge1xyXG4gICAgb1tcImRlZmF1bHRcIl0gPSB2O1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0U3Rhcihtb2QpIHtcclxuICAgIGlmIChtb2QgJiYgbW9kLl9fZXNNb2R1bGUpIHJldHVybiBtb2Q7XHJcbiAgICB2YXIgcmVzdWx0ID0ge307XHJcbiAgICBpZiAobW9kICE9IG51bGwpIGZvciAodmFyIGsgaW4gbW9kKSBpZiAoayAhPT0gXCJkZWZhdWx0XCIgJiYgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG1vZCwgaykpIF9fY3JlYXRlQmluZGluZyhyZXN1bHQsIG1vZCwgayk7XHJcbiAgICBfX3NldE1vZHVsZURlZmF1bHQocmVzdWx0LCBtb2QpO1xyXG4gICAgcmV0dXJuIHJlc3VsdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9faW1wb3J0RGVmYXVsdChtb2QpIHtcclxuICAgIHJldHVybiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSA/IG1vZCA6IHsgZGVmYXVsdDogbW9kIH07XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2NsYXNzUHJpdmF0ZUZpZWxkR2V0KHJlY2VpdmVyLCBwcml2YXRlTWFwKSB7XHJcbiAgICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gZ2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIHByaXZhdGVNYXAuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHByaXZhdGVNYXAsIHZhbHVlKSB7XHJcbiAgICBpZiAoIXByaXZhdGVNYXAuaGFzKHJlY2VpdmVyKSkge1xyXG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJhdHRlbXB0ZWQgdG8gc2V0IHByaXZhdGUgZmllbGQgb24gbm9uLWluc3RhbmNlXCIpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZU1hcC5zZXQocmVjZWl2ZXIsIHZhbHVlKTtcclxuICAgIHJldHVybiB2YWx1ZTtcclxufVxyXG4iLCJleHBvcnQgdmFyIFRZUEU7XG4oZnVuY3Rpb24gKFRZUEUpIHtcbiAgICAvKipcbiAgICAgKiBSYXcgdGV4dFxuICAgICAqL1xuICAgIFRZUEVbVFlQRVtcImxpdGVyYWxcIl0gPSAwXSA9IFwibGl0ZXJhbFwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvbyBhbnkgZm9ybWF0LCBlLmcgYHZhcmAgaW4gYHRoaXMgaXMgYSB7dmFyfWBcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJhcmd1bWVudFwiXSA9IDFdID0gXCJhcmd1bWVudFwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvIG51bWJlciBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJudW1iZXJcIl0gPSAyXSA9IFwibnVtYmVyXCI7XG4gICAgLyoqXG4gICAgICogVmFyaWFibGUgdy8gZGF0ZSBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJkYXRlXCJdID0gM10gPSBcImRhdGVcIjtcbiAgICAvKipcbiAgICAgKiBWYXJpYWJsZSB3LyB0aW1lIGZvcm1hdFxuICAgICAqL1xuICAgIFRZUEVbVFlQRVtcInRpbWVcIl0gPSA0XSA9IFwidGltZVwiO1xuICAgIC8qKlxuICAgICAqIFZhcmlhYmxlIHcvIHNlbGVjdCBmb3JtYXRcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJzZWxlY3RcIl0gPSA1XSA9IFwic2VsZWN0XCI7XG4gICAgLyoqXG4gICAgICogVmFyaWFibGUgdy8gcGx1cmFsIGZvcm1hdFxuICAgICAqL1xuICAgIFRZUEVbVFlQRVtcInBsdXJhbFwiXSA9IDZdID0gXCJwbHVyYWxcIjtcbiAgICAvKipcbiAgICAgKiBPbmx5IHBvc3NpYmxlIHdpdGhpbiBwbHVyYWwgYXJndW1lbnQuXG4gICAgICogVGhpcyBpcyB0aGUgYCNgIHN5bWJvbCB0aGF0IHdpbGwgYmUgc3Vic3RpdHV0ZWQgd2l0aCB0aGUgY291bnQuXG4gICAgICovXG4gICAgVFlQRVtUWVBFW1wicG91bmRcIl0gPSA3XSA9IFwicG91bmRcIjtcbiAgICAvKipcbiAgICAgKiBYTUwtbGlrZSB0YWdcbiAgICAgKi9cbiAgICBUWVBFW1RZUEVbXCJ0YWdcIl0gPSA4XSA9IFwidGFnXCI7XG59KShUWVBFIHx8IChUWVBFID0ge30pKTtcbmV4cG9ydCB2YXIgU0tFTEVUT05fVFlQRTtcbihmdW5jdGlvbiAoU0tFTEVUT05fVFlQRSkge1xuICAgIFNLRUxFVE9OX1RZUEVbU0tFTEVUT05fVFlQRVtcIm51bWJlclwiXSA9IDBdID0gXCJudW1iZXJcIjtcbiAgICBTS0VMRVRPTl9UWVBFW1NLRUxFVE9OX1RZUEVbXCJkYXRlVGltZVwiXSA9IDFdID0gXCJkYXRlVGltZVwiO1xufSkoU0tFTEVUT05fVFlQRSB8fCAoU0tFTEVUT05fVFlQRSA9IHt9KSk7XG4vKipcbiAqIFR5cGUgR3VhcmRzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc0xpdGVyYWxFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUubGl0ZXJhbDtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0FyZ3VtZW50RWxlbWVudChlbCkge1xuICAgIHJldHVybiBlbC50eXBlID09PSBUWVBFLmFyZ3VtZW50O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyRWxlbWVudChlbCkge1xuICAgIHJldHVybiBlbC50eXBlID09PSBUWVBFLm51bWJlcjtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc0RhdGVFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUuZGF0ZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1RpbWVFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUudGltZTtcbn1cbmV4cG9ydCBmdW5jdGlvbiBpc1NlbGVjdEVsZW1lbnQoZWwpIHtcbiAgICByZXR1cm4gZWwudHlwZSA9PT0gVFlQRS5zZWxlY3Q7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNQbHVyYWxFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUucGx1cmFsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzUG91bmRFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUucG91bmQ7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNUYWdFbGVtZW50KGVsKSB7XG4gICAgcmV0dXJuIGVsLnR5cGUgPT09IFRZUEUudGFnO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGlzTnVtYmVyU2tlbGV0b24oZWwpIHtcbiAgICByZXR1cm4gISEoZWwgJiYgdHlwZW9mIGVsID09PSAnb2JqZWN0JyAmJiBlbC50eXBlID09PSAwIC8qIG51bWJlciAqLyk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNEYXRlVGltZVNrZWxldG9uKGVsKSB7XG4gICAgcmV0dXJuICEhKGVsICYmIHR5cGVvZiBlbCA9PT0gJ29iamVjdCcgJiYgZWwudHlwZSA9PT0gMSAvKiBkYXRlVGltZSAqLyk7XG59XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGl0ZXJhbEVsZW1lbnQodmFsdWUpIHtcbiAgICByZXR1cm4ge1xuICAgICAgICB0eXBlOiBUWVBFLmxpdGVyYWwsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU51bWJlckVsZW1lbnQodmFsdWUsIHN0eWxlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdHlwZTogVFlQRS5udW1iZXIsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgc3R5bGU6IHN0eWxlLFxuICAgIH07XG59XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuLyoqXG4gKiBodHRwczovL3VuaWNvZGUub3JnL3JlcG9ydHMvdHIzNS90cjM1LWRhdGVzLmh0bWwjRGF0ZV9GaWVsZF9TeW1ib2xfVGFibGVcbiAqIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL2NhcmlkeS9pbnRsLWRhdGV0aW1lZm9ybWF0LXBhdHRlcm4vYmxvYi9tYXN0ZXIvaW5kZXguanNcbiAqIHdpdGggc29tZSB0d2Vha3NcbiAqL1xudmFyIERBVEVfVElNRV9SRUdFWCA9IC8oPzpbRWVjXXsxLDZ9fEd7MSw1fXxbUXFdezEsNX18KD86W3lZdXJdK3xVezEsNX0pfFtNTF17MSw1fXxkezEsMn18RHsxLDN9fEZ7MX18W2FiQl17MSw1fXxbaGtIS117MSwyfXx3ezEsMn18V3sxfXxtezEsMn18c3sxLDJ9fFt6Wk92VnhYXXsxLDR9KSg/PShbXiddKidbXiddKicpKlteJ10qJCkvZztcbi8qKlxuICogUGFyc2UgRGF0ZSB0aW1lIHNrZWxldG9uIGludG8gSW50bC5EYXRlVGltZUZvcm1hdE9wdGlvbnNcbiAqIFJlZjogaHR0cHM6Ly91bmljb2RlLm9yZy9yZXBvcnRzL3RyMzUvdHIzNS1kYXRlcy5odG1sI0RhdGVfRmllbGRfU3ltYm9sX1RhYmxlXG4gKiBAcHVibGljXG4gKiBAcGFyYW0gc2tlbGV0b24gc2tlbGV0b24gc3RyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZURhdGVUaW1lU2tlbGV0b24oc2tlbGV0b24pIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgc2tlbGV0b24ucmVwbGFjZShEQVRFX1RJTUVfUkVHRVgsIGZ1bmN0aW9uIChtYXRjaCkge1xuICAgICAgICB2YXIgbGVuID0gbWF0Y2gubGVuZ3RoO1xuICAgICAgICBzd2l0Y2ggKG1hdGNoWzBdKSB7XG4gICAgICAgICAgICAvLyBFcmFcbiAgICAgICAgICAgIGNhc2UgJ0cnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5lcmEgPSBsZW4gPT09IDQgPyAnbG9uZycgOiBsZW4gPT09IDUgPyAnbmFycm93JyA6ICdzaG9ydCc7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBZZWFyXG4gICAgICAgICAgICBjYXNlICd5JzpcbiAgICAgICAgICAgICAgICByZXN1bHQueWVhciA9IGxlbiA9PT0gMiA/ICcyLWRpZ2l0JyA6ICdudW1lcmljJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1knOlxuICAgICAgICAgICAgY2FzZSAndSc6XG4gICAgICAgICAgICBjYXNlICdVJzpcbiAgICAgICAgICAgIGNhc2UgJ3InOlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgWS91L1UvcmAgKHllYXIpIHBhdHRlcm5zIGFyZSBub3Qgc3VwcG9ydGVkLCB1c2UgYHlgIGluc3RlYWQnKTtcbiAgICAgICAgICAgIC8vIFF1YXJ0ZXJcbiAgICAgICAgICAgIGNhc2UgJ3EnOlxuICAgICAgICAgICAgY2FzZSAnUSc6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BxL1FgIChxdWFydGVyKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgLy8gTW9udGhcbiAgICAgICAgICAgIGNhc2UgJ00nOlxuICAgICAgICAgICAgY2FzZSAnTCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm1vbnRoID0gWydudW1lcmljJywgJzItZGlnaXQnLCAnc2hvcnQnLCAnbG9uZycsICduYXJyb3cnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIFdlZWtcbiAgICAgICAgICAgIGNhc2UgJ3cnOlxuICAgICAgICAgICAgY2FzZSAnVyc6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2B3L1dgICh3ZWVrKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgY2FzZSAnZCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmRheSA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdEJzpcbiAgICAgICAgICAgIGNhc2UgJ0YnOlxuICAgICAgICAgICAgY2FzZSAnZyc6XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BEL0YvZ2AgKGRheSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgZGAgaW5zdGVhZCcpO1xuICAgICAgICAgICAgLy8gV2Vla2RheVxuICAgICAgICAgICAgY2FzZSAnRSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LndlZWtkYXkgPSBsZW4gPT09IDQgPyAnc2hvcnQnIDogbGVuID09PSA1ID8gJ25hcnJvdycgOiAnc2hvcnQnO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnZSc6XG4gICAgICAgICAgICAgICAgaWYgKGxlbiA8IDQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2BlLi5lZWVgICh3ZWVrZGF5KSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXN1bHQud2Vla2RheSA9IFsnc2hvcnQnLCAnbG9uZycsICduYXJyb3cnLCAnc2hvcnQnXVtsZW4gLSA0XTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2MnOlxuICAgICAgICAgICAgICAgIGlmIChsZW4gPCA0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgYy4uY2NjYCAod2Vla2RheSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQnKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmVzdWx0LndlZWtkYXkgPSBbJ3Nob3J0JywgJ2xvbmcnLCAnbmFycm93JywgJ3Nob3J0J11bbGVuIC0gNF07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAvLyBQZXJpb2RcbiAgICAgICAgICAgIGNhc2UgJ2EnOiAvLyBBTSwgUE1cbiAgICAgICAgICAgICAgICByZXN1bHQuaG91cjEyID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2InOiAvLyBhbSwgcG0sIG5vb24sIG1pZG5pZ2h0XG4gICAgICAgICAgICBjYXNlICdCJzogLy8gZmxleGlibGUgZGF5IHBlcmlvZHNcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYGIvQmAgKHBlcmlvZCkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgYWAgaW5zdGVhZCcpO1xuICAgICAgICAgICAgLy8gSG91clxuICAgICAgICAgICAgY2FzZSAnaCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXJDeWNsZSA9ICdoMTInO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ0gnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyQ3ljbGUgPSAnaDIzJztcbiAgICAgICAgICAgICAgICByZXN1bHQuaG91ciA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdLJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuaG91ckN5Y2xlID0gJ2gxMSc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXIgPSBbJ251bWVyaWMnLCAnMi1kaWdpdCddW2xlbiAtIDFdO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAnayc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmhvdXJDeWNsZSA9ICdoMjQnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5ob3VyID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ2onOlxuICAgICAgICAgICAgY2FzZSAnSic6XG4gICAgICAgICAgICBjYXNlICdDJzpcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignYGovSi9DYCAoaG91cikgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgaC9IL0sva2AgaW5zdGVhZCcpO1xuICAgICAgICAgICAgLy8gTWludXRlXG4gICAgICAgICAgICBjYXNlICdtJzpcbiAgICAgICAgICAgICAgICByZXN1bHQubWludXRlID0gWydudW1lcmljJywgJzItZGlnaXQnXVtsZW4gLSAxXTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIC8vIFNlY29uZFxuICAgICAgICAgICAgY2FzZSAncyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LnNlY29uZCA9IFsnbnVtZXJpYycsICcyLWRpZ2l0J11bbGVuIC0gMV07XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlICdTJzpcbiAgICAgICAgICAgIGNhc2UgJ0EnOlxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgUy9BYCAoc2Vjb25kKSBwYXR0ZXJucyBhcmUgbm90IHN1cHBvcnRlZCwgdXNlIGBzYCBpbnN0ZWFkJyk7XG4gICAgICAgICAgICAvLyBab25lXG4gICAgICAgICAgICBjYXNlICd6JzogLy8gMS4uMywgNDogc3BlY2lmaWMgbm9uLWxvY2F0aW9uIGZvcm1hdFxuICAgICAgICAgICAgICAgIHJlc3VsdC50aW1lWm9uZU5hbWUgPSBsZW4gPCA0ID8gJ3Nob3J0JyA6ICdsb25nJztcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgJ1onOiAvLyAxLi4zLCA0LCA1OiBUaGUgSVNPODYwMSB2YXJpb3MgZm9ybWF0c1xuICAgICAgICAgICAgY2FzZSAnTyc6IC8vIDEsIDQ6IG1pbGlzZWNvbmRzIGluIGRheSBzaG9ydCwgbG9uZ1xuICAgICAgICAgICAgY2FzZSAndic6IC8vIDEsIDQ6IGdlbmVyaWMgbm9uLWxvY2F0aW9uIGZvcm1hdFxuICAgICAgICAgICAgY2FzZSAnVic6IC8vIDEsIDIsIDMsIDQ6IHRpbWUgem9uZSBJRCBvciBjaXR5XG4gICAgICAgICAgICBjYXNlICdYJzogLy8gMSwgMiwgMywgNDogVGhlIElTTzg2MDEgdmFyaW9zIGZvcm1hdHNcbiAgICAgICAgICAgIGNhc2UgJ3gnOiAvLyAxLCAyLCAzLCA0OiBUaGUgSVNPODYwMSB2YXJpb3MgZm9ybWF0c1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdgWi9PL3YvVi9YL3hgICh0aW1lWm9uZSkgcGF0dGVybnMgYXJlIG5vdCBzdXBwb3J0ZWQsIHVzZSBgemAgaW5zdGVhZCcpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gaWN1VW5pdFRvRWNtYSh1bml0KSB7XG4gICAgcmV0dXJuIHVuaXQucmVwbGFjZSgvXiguKj8pLS8sICcnKTtcbn1cbnZhciBGUkFDVElPTl9QUkVDSVNJT05fUkVHRVggPSAvXlxcLig/OigwKykoXFwqKT98KCMrKXwoMCspKCMrKSkkL2c7XG52YXIgU0lHTklGSUNBTlRfUFJFQ0lTSU9OX1JFR0VYID0gL14oQCspPyhcXCt8IyspPyQvZztcbnZhciBJTlRFR0VSX1dJRFRIX1JFR0VYID0gLyhcXCopKDArKXwoIyspKDArKXwoMCspL2c7XG52YXIgQ09OQ0lTRV9JTlRFR0VSX1dJRFRIX1JFR0VYID0gL14oMCspJC87XG5mdW5jdGlvbiBwYXJzZVNpZ25pZmljYW50UHJlY2lzaW9uKHN0cikge1xuICAgIHZhciByZXN1bHQgPSB7fTtcbiAgICBzdHIucmVwbGFjZShTSUdOSUZJQ0FOVF9QUkVDSVNJT05fUkVHRVgsIGZ1bmN0aW9uIChfLCBnMSwgZzIpIHtcbiAgICAgICAgLy8gQEBAIGNhc2VcbiAgICAgICAgaWYgKHR5cGVvZiBnMiAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgICAgICByZXN1bHQubWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIC8vIEBAQCsgY2FzZVxuICAgICAgICBlbHNlIGlmIChnMiA9PT0gJysnKSB7XG4gICAgICAgICAgICByZXN1bHQubWluaW11bVNpZ25pZmljYW50RGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIC8vIC4jIyMgY2FzZVxuICAgICAgICBlbHNlIGlmIChnMVswXSA9PT0gJyMnKSB7XG4gICAgICAgICAgICByZXN1bHQubWF4aW11bVNpZ25pZmljYW50RGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICAgIC8vIC5AQCMjIG9yIC5AQEAgY2FzZVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtU2lnbmlmaWNhbnREaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgICAgICByZXN1bHQubWF4aW11bVNpZ25pZmljYW50RGlnaXRzID1cbiAgICAgICAgICAgICAgICBnMS5sZW5ndGggKyAodHlwZW9mIGcyID09PSAnc3RyaW5nJyA/IGcyLmxlbmd0aCA6IDApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiAnJztcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xufVxuZnVuY3Rpb24gcGFyc2VTaWduKHN0cikge1xuICAgIHN3aXRjaCAoc3RyKSB7XG4gICAgICAgIGNhc2UgJ3NpZ24tYXV0byc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAnYXV0bycsXG4gICAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdzaWduLWFjY291bnRpbmcnOlxuICAgICAgICBjYXNlICcoKSc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGN1cnJlbmN5U2lnbjogJ2FjY291bnRpbmcnLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnc2lnbi1hbHdheXMnOlxuICAgICAgICBjYXNlICcrISc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAnYWx3YXlzJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3NpZ24tYWNjb3VudGluZy1hbHdheXMnOlxuICAgICAgICBjYXNlICcoKSEnOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaWduRGlzcGxheTogJ2Fsd2F5cycsXG4gICAgICAgICAgICAgICAgY3VycmVuY3lTaWduOiAnYWNjb3VudGluZycsXG4gICAgICAgICAgICB9O1xuICAgICAgICBjYXNlICdzaWduLWV4Y2VwdC16ZXJvJzpcbiAgICAgICAgY2FzZSAnKz8nOlxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBzaWduRGlzcGxheTogJ2V4Y2VwdFplcm8nLFxuICAgICAgICAgICAgfTtcbiAgICAgICAgY2FzZSAnc2lnbi1hY2NvdW50aW5nLWV4Y2VwdC16ZXJvJzpcbiAgICAgICAgY2FzZSAnKCk/JzpcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgc2lnbkRpc3BsYXk6ICdleGNlcHRaZXJvJyxcbiAgICAgICAgICAgICAgICBjdXJyZW5jeVNpZ246ICdhY2NvdW50aW5nJyxcbiAgICAgICAgICAgIH07XG4gICAgICAgIGNhc2UgJ3NpZ24tbmV2ZXInOlxuICAgICAgICBjYXNlICcrXyc6XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHNpZ25EaXNwbGF5OiAnbmV2ZXInLFxuICAgICAgICAgICAgfTtcbiAgICB9XG59XG5mdW5jdGlvbiBwYXJzZUNvbmNpc2VTY2llbnRpZmljQW5kRW5naW5lZXJpbmdTdGVtKHN0ZW0pIHtcbiAgICAvLyBFbmdpbmVlcmluZ1xuICAgIHZhciByZXN1bHQ7XG4gICAgaWYgKHN0ZW1bMF0gPT09ICdFJyAmJiBzdGVtWzFdID09PSAnRScpIHtcbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgbm90YXRpb246ICdlbmdpbmVlcmluZycsXG4gICAgICAgIH07XG4gICAgICAgIHN0ZW0gPSBzdGVtLnNsaWNlKDIpO1xuICAgIH1cbiAgICBlbHNlIGlmIChzdGVtWzBdID09PSAnRScpIHtcbiAgICAgICAgcmVzdWx0ID0ge1xuICAgICAgICAgICAgbm90YXRpb246ICdzY2llbnRpZmljJyxcbiAgICAgICAgfTtcbiAgICAgICAgc3RlbSA9IHN0ZW0uc2xpY2UoMSk7XG4gICAgfVxuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgICAgdmFyIHNpZ25EaXNwbGF5ID0gc3RlbS5zbGljZSgwLCAyKTtcbiAgICAgICAgaWYgKHNpZ25EaXNwbGF5ID09PSAnKyEnKSB7XG4gICAgICAgICAgICByZXN1bHQuc2lnbkRpc3BsYXkgPSAnYWx3YXlzJztcbiAgICAgICAgICAgIHN0ZW0gPSBzdGVtLnNsaWNlKDIpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHNpZ25EaXNwbGF5ID09PSAnKz8nKSB7XG4gICAgICAgICAgICByZXN1bHQuc2lnbkRpc3BsYXkgPSAnZXhjZXB0WmVybyc7XG4gICAgICAgICAgICBzdGVtID0gc3RlbS5zbGljZSgyKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUNPTkNJU0VfSU5URUdFUl9XSURUSF9SRUdFWC50ZXN0KHN0ZW0pKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ01hbGZvcm1lZCBjb25jaXNlIGVuZy9zY2llbnRpZmljIG5vdGF0aW9uJyk7XG4gICAgICAgIH1cbiAgICAgICAgcmVzdWx0Lm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gc3RlbS5sZW5ndGg7XG4gICAgfVxuICAgIHJldHVybiByZXN1bHQ7XG59XG5mdW5jdGlvbiBwYXJzZU5vdGF0aW9uT3B0aW9ucyhvcHQpIHtcbiAgICB2YXIgcmVzdWx0ID0ge307XG4gICAgdmFyIHNpZ25PcHRzID0gcGFyc2VTaWduKG9wdCk7XG4gICAgaWYgKHNpZ25PcHRzKSB7XG4gICAgICAgIHJldHVybiBzaWduT3B0cztcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbn1cbi8qKlxuICogaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9ibG9iL21hc3Rlci9kb2NzL3VzZXJndWlkZS9mb3JtYXRfcGFyc2UvbnVtYmVycy9za2VsZXRvbnMubWQjc2tlbGV0b24tc3RlbXMtYW5kLW9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlTnVtYmVyU2tlbGV0b24odG9rZW5zKSB7XG4gICAgdmFyIHJlc3VsdCA9IHt9O1xuICAgIGZvciAodmFyIF9pID0gMCwgdG9rZW5zXzEgPSB0b2tlbnM7IF9pIDwgdG9rZW5zXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciB0b2tlbiA9IHRva2Vuc18xW19pXTtcbiAgICAgICAgc3dpdGNoICh0b2tlbi5zdGVtKSB7XG4gICAgICAgICAgICBjYXNlICdwZXJjZW50JzpcbiAgICAgICAgICAgIGNhc2UgJyUnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5zdHlsZSA9ICdwZXJjZW50JztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJyV4MTAwJzpcbiAgICAgICAgICAgICAgICByZXN1bHQuc3R5bGUgPSAncGVyY2VudCc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnNjYWxlID0gMTAwO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnY3VycmVuY3knOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5zdHlsZSA9ICdjdXJyZW5jeSc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmN1cnJlbmN5ID0gdG9rZW4ub3B0aW9uc1swXTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ2dyb3VwLW9mZic6XG4gICAgICAgICAgICBjYXNlICcsXyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LnVzZUdyb3VwaW5nID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdwcmVjaXNpb24taW50ZWdlcic6XG4gICAgICAgICAgICBjYXNlICcuJzpcbiAgICAgICAgICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gMDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ21lYXN1cmUtdW5pdCc6XG4gICAgICAgICAgICBjYXNlICd1bml0JzpcbiAgICAgICAgICAgICAgICByZXN1bHQuc3R5bGUgPSAndW5pdCc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnVuaXQgPSBpY3VVbml0VG9FY21hKHRva2VuLm9wdGlvbnNbMF0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnY29tcGFjdC1zaG9ydCc6XG4gICAgICAgICAgICBjYXNlICdLJzpcbiAgICAgICAgICAgICAgICByZXN1bHQubm90YXRpb24gPSAnY29tcGFjdCc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LmNvbXBhY3REaXNwbGF5ID0gJ3Nob3J0JztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ2NvbXBhY3QtbG9uZyc6XG4gICAgICAgICAgICBjYXNlICdLSyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0Lm5vdGF0aW9uID0gJ2NvbXBhY3QnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC5jb21wYWN0RGlzcGxheSA9ICdsb25nJztcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGNhc2UgJ3NjaWVudGlmaWMnOlxuICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCB7IG5vdGF0aW9uOiAnc2NpZW50aWZpYycgfSksIHRva2VuLm9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIG9wdCkgeyByZXR1cm4gKF9fYXNzaWduKF9fYXNzaWduKHt9LCBhbGwpLCBwYXJzZU5vdGF0aW9uT3B0aW9ucyhvcHQpKSk7IH0sIHt9KSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdlbmdpbmVlcmluZyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIHsgbm90YXRpb246ICdlbmdpbmVlcmluZycgfSksIHRva2VuLm9wdGlvbnMucmVkdWNlKGZ1bmN0aW9uIChhbGwsIG9wdCkgeyByZXR1cm4gKF9fYXNzaWduKF9fYXNzaWduKHt9LCBhbGwpLCBwYXJzZU5vdGF0aW9uT3B0aW9ucyhvcHQpKSk7IH0sIHt9KSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICBjYXNlICdub3RhdGlvbi1zaW1wbGUnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5ub3RhdGlvbiA9ICdzdGFuZGFyZCc7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2Jsb2IvbWFzdGVyL2ljdTRjL3NvdXJjZS9pMThuL3VuaWNvZGUvdW51bWJlcmZvcm1hdHRlci5oXG4gICAgICAgICAgICBjYXNlICd1bml0LXdpZHRoLW5hcnJvdyc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmN1cnJlbmN5RGlzcGxheSA9ICduYXJyb3dTeW1ib2wnO1xuICAgICAgICAgICAgICAgIHJlc3VsdC51bml0RGlzcGxheSA9ICduYXJyb3cnO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAndW5pdC13aWR0aC1zaG9ydCc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmN1cnJlbmN5RGlzcGxheSA9ICdjb2RlJztcbiAgICAgICAgICAgICAgICByZXN1bHQudW5pdERpc3BsYXkgPSAnc2hvcnQnO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAndW5pdC13aWR0aC1mdWxsLW5hbWUnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5jdXJyZW5jeURpc3BsYXkgPSAnbmFtZSc7XG4gICAgICAgICAgICAgICAgcmVzdWx0LnVuaXREaXNwbGF5ID0gJ2xvbmcnO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAndW5pdC13aWR0aC1pc28tY29kZSc6XG4gICAgICAgICAgICAgICAgcmVzdWx0LmN1cnJlbmN5RGlzcGxheSA9ICdzeW1ib2wnO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgY2FzZSAnc2NhbGUnOlxuICAgICAgICAgICAgICAgIHJlc3VsdC5zY2FsZSA9IHBhcnNlRmxvYXQodG9rZW4ub3B0aW9uc1swXSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAvLyBodHRwczovL3VuaWNvZGUtb3JnLmdpdGh1Yi5pby9pY3UvdXNlcmd1aWRlL2Zvcm1hdF9wYXJzZS9udW1iZXJzL3NrZWxldG9ucy5odG1sI2ludGVnZXItd2lkdGhcbiAgICAgICAgICAgIGNhc2UgJ2ludGVnZXItd2lkdGgnOlxuICAgICAgICAgICAgICAgIGlmICh0b2tlbi5vcHRpb25zLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ2ludGVnZXItd2lkdGggc3RlbXMgb25seSBhY2NlcHQgYSBzaW5nbGUgb3B0aW9uYWwgb3B0aW9uJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRva2VuLm9wdGlvbnNbMF0ucmVwbGFjZShJTlRFR0VSX1dJRFRIX1JFR0VYLCBmdW5jdGlvbiAoXywgZzEsIGcyLCBnMywgZzQsIGc1KSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChnMSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1pbmltdW1JbnRlZ2VyRGlnaXRzID0gZzIubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGczICYmIGc0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1dlIGN1cnJlbnRseSBkbyBub3Qgc3VwcG9ydCBtYXhpbXVtIGludGVnZXIgZGlnaXRzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoZzUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignV2UgY3VycmVudGx5IGRvIG5vdCBzdXBwb3J0IGV4YWN0IGludGVnZXIgZGlnaXRzJyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcnO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLmh0bWwjaW50ZWdlci13aWR0aFxuICAgICAgICBpZiAoQ09OQ0lTRV9JTlRFR0VSX1dJRFRIX1JFR0VYLnRlc3QodG9rZW4uc3RlbSkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtSW50ZWdlckRpZ2l0cyA9IHRva2VuLnN0ZW0ubGVuZ3RoO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKEZSQUNUSU9OX1BSRUNJU0lPTl9SRUdFWC50ZXN0KHRva2VuLnN0ZW0pKSB7XG4gICAgICAgICAgICAvLyBQcmVjaXNpb25cbiAgICAgICAgICAgIC8vIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLmh0bWwjZnJhY3Rpb24tcHJlY2lzaW9uXG4gICAgICAgICAgICAvLyBwcmVjaXNpb24taW50ZWdlciBjYXNlXG4gICAgICAgICAgICBpZiAodG9rZW4ub3B0aW9ucy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0ZyYWN0aW9uLXByZWNpc2lvbiBzdGVtcyBvbmx5IGFjY2VwdCBhIHNpbmdsZSBvcHRpb25hbCBvcHRpb24nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRva2VuLnN0ZW0ucmVwbGFjZShGUkFDVElPTl9QUkVDSVNJT05fUkVHRVgsIGZ1bmN0aW9uIChfLCBnMSwgZzIsIGczLCBnNCwgZzUpIHtcbiAgICAgICAgICAgICAgICAvLyAuMDAwKiBjYXNlIChiZWZvcmUgSUNVNjcgaXQgd2FzIC4wMDArKVxuICAgICAgICAgICAgICAgIGlmIChnMiA9PT0gJyonKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBnMS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIC8vIC4jIyMgY2FzZVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGczICYmIGczWzBdID09PSAnIycpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0Lm1heGltdW1GcmFjdGlvbkRpZ2l0cyA9IGczLmxlbmd0aDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLy8gLjAwIyMgY2FzZVxuICAgICAgICAgICAgICAgIGVsc2UgaWYgKGc0ICYmIGc1KSB7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5taW5pbXVtRnJhY3Rpb25EaWdpdHMgPSBnNC5sZW5ndGg7XG4gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5tYXhpbXVtRnJhY3Rpb25EaWdpdHMgPSBnNC5sZW5ndGggKyBnNS5sZW5ndGg7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubWluaW11bUZyYWN0aW9uRGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubWF4aW11bUZyYWN0aW9uRGlnaXRzID0gZzEubGVuZ3RoO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gJyc7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmICh0b2tlbi5vcHRpb25zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCBwYXJzZVNpZ25pZmljYW50UHJlY2lzaW9uKHRva2VuLm9wdGlvbnNbMF0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIGh0dHBzOi8vdW5pY29kZS1vcmcuZ2l0aHViLmlvL2ljdS91c2VyZ3VpZGUvZm9ybWF0X3BhcnNlL251bWJlcnMvc2tlbGV0b25zLmh0bWwjc2lnbmlmaWNhbnQtZGlnaXRzLXByZWNpc2lvblxuICAgICAgICBpZiAoU0lHTklGSUNBTlRfUFJFQ0lTSU9OX1JFR0VYLnRlc3QodG9rZW4uc3RlbSkpIHtcbiAgICAgICAgICAgIHJlc3VsdCA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCByZXN1bHQpLCBwYXJzZVNpZ25pZmljYW50UHJlY2lzaW9uKHRva2VuLnN0ZW0pKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBzaWduT3B0cyA9IHBhcnNlU2lnbih0b2tlbi5zdGVtKTtcbiAgICAgICAgaWYgKHNpZ25PcHRzKSB7XG4gICAgICAgICAgICByZXN1bHQgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdWx0KSwgc2lnbk9wdHMpO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjb25jaXNlU2NpZW50aWZpY0FuZEVuZ2luZWVyaW5nT3B0cyA9IHBhcnNlQ29uY2lzZVNjaWVudGlmaWNBbmRFbmdpbmVlcmluZ1N0ZW0odG9rZW4uc3RlbSk7XG4gICAgICAgIGlmIChjb25jaXNlU2NpZW50aWZpY0FuZEVuZ2luZWVyaW5nT3B0cykge1xuICAgICAgICAgICAgcmVzdWx0ID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHJlc3VsdCksIGNvbmNpc2VTY2llbnRpZmljQW5kRW5naW5lZXJpbmdPcHRzKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuIiwiLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IF9fYXNzaWduLCBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbi8vIEBnZW5lcmF0ZWRcbmltcG9ydCB7IFRZUEUsIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgeyBwYXJzZURhdGVUaW1lU2tlbGV0b24sIHBhcnNlTnVtYmVyU2tlbGV0b24gfSBmcm9tICcuL3NrZWxldG9uJztcbnZhciBTeW50YXhFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoU3ludGF4RXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gU3ludGF4RXJyb3IobWVzc2FnZSwgZXhwZWN0ZWQsIGZvdW5kLCBsb2NhdGlvbikge1xuICAgICAgICB2YXIgX3RoaXMgPSBfc3VwZXIuY2FsbCh0aGlzKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5tZXNzYWdlID0gbWVzc2FnZTtcbiAgICAgICAgX3RoaXMuZXhwZWN0ZWQgPSBleHBlY3RlZDtcbiAgICAgICAgX3RoaXMuZm91bmQgPSBmb3VuZDtcbiAgICAgICAgX3RoaXMubG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICAgICAgX3RoaXMubmFtZSA9IFwiU3ludGF4RXJyb3JcIjtcbiAgICAgICAgaWYgKHR5cGVvZiBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgICAgICBFcnJvci5jYXB0dXJlU3RhY2tUcmFjZShfdGhpcywgU3ludGF4RXJyb3IpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfdGhpcztcbiAgICB9XG4gICAgU3ludGF4RXJyb3IuYnVpbGRNZXNzYWdlID0gZnVuY3Rpb24gKGV4cGVjdGVkLCBmb3VuZCkge1xuICAgICAgICBmdW5jdGlvbiBoZXgoY2gpIHtcbiAgICAgICAgICAgIHJldHVybiBjaC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGxpdGVyYWxFc2NhcGUocykge1xuICAgICAgICAgICAgcmV0dXJuIHNcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxcXC9nLCBcIlxcXFxcXFxcXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1wiL2csIFwiXFxcXFxcXCJcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFwwL2csIFwiXFxcXDBcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFx0L2csIFwiXFxcXHRcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxuL2csIFwiXFxcXG5cIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxyL2csIFwiXFxcXHJcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceDAwLVxceDBGXS9nLCBmdW5jdGlvbiAoY2gpIHsgcmV0dXJuIFwiXFxcXHgwXCIgKyBoZXgoY2gpOyB9KVxuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9bXFx4MTAtXFx4MUZcXHg3Ri1cXHg5Rl0vZywgZnVuY3Rpb24gKGNoKSB7IHJldHVybiBcIlxcXFx4XCIgKyBoZXgoY2gpOyB9KTtcbiAgICAgICAgfVxuICAgICAgICBmdW5jdGlvbiBjbGFzc0VzY2FwZShzKSB7XG4gICAgICAgICAgICByZXR1cm4gc1xuICAgICAgICAgICAgICAgIC5yZXBsYWNlKC9cXFxcL2csIFwiXFxcXFxcXFxcIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxdL2csIFwiXFxcXF1cIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvXFxeL2csIFwiXFxcXF5cIilcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvLS9nLCBcIlxcXFwtXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcMC9nLCBcIlxcXFwwXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcdC9nLCBcIlxcXFx0XCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcbi9nLCBcIlxcXFxuXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1xcci9nLCBcIlxcXFxyXCIpXG4gICAgICAgICAgICAgICAgLnJlcGxhY2UoL1tcXHgwMC1cXHgwRl0vZywgZnVuY3Rpb24gKGNoKSB7IHJldHVybiBcIlxcXFx4MFwiICsgaGV4KGNoKTsgfSlcbiAgICAgICAgICAgICAgICAucmVwbGFjZSgvW1xceDEwLVxceDFGXFx4N0YtXFx4OUZdL2csIGZ1bmN0aW9uIChjaCkgeyByZXR1cm4gXCJcXFxceFwiICsgaGV4KGNoKTsgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZGVzY3JpYmVFeHBlY3RhdGlvbihleHBlY3RhdGlvbikge1xuICAgICAgICAgICAgc3dpdGNoIChleHBlY3RhdGlvbi50eXBlKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcImxpdGVyYWxcIjpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFwiXFxcIlwiICsgbGl0ZXJhbEVzY2FwZShleHBlY3RhdGlvbi50ZXh0KSArIFwiXFxcIlwiO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJjbGFzc1wiOlxuICAgICAgICAgICAgICAgICAgICB2YXIgZXNjYXBlZFBhcnRzID0gZXhwZWN0YXRpb24ucGFydHMubWFwKGZ1bmN0aW9uIChwYXJ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQXJyYXkuaXNBcnJheShwYXJ0KVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2xhc3NFc2NhcGUocGFydFswXSkgKyBcIi1cIiArIGNsYXNzRXNjYXBlKHBhcnRbMV0pXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBjbGFzc0VzY2FwZShwYXJ0KTtcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcIltcIiArIChleHBlY3RhdGlvbi5pbnZlcnRlZCA/IFwiXlwiIDogXCJcIikgKyBlc2NhcGVkUGFydHMgKyBcIl1cIjtcbiAgICAgICAgICAgICAgICBjYXNlIFwiYW55XCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImFueSBjaGFyYWN0ZXJcIjtcbiAgICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBcImVuZCBvZiBpbnB1dFwiO1xuICAgICAgICAgICAgICAgIGNhc2UgXCJvdGhlclwiOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0YXRpb24uZGVzY3JpcHRpb247XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZnVuY3Rpb24gZGVzY3JpYmVFeHBlY3RlZChleHBlY3RlZDEpIHtcbiAgICAgICAgICAgIHZhciBkZXNjcmlwdGlvbnMgPSBleHBlY3RlZDEubWFwKGRlc2NyaWJlRXhwZWN0YXRpb24pO1xuICAgICAgICAgICAgdmFyIGk7XG4gICAgICAgICAgICB2YXIgajtcbiAgICAgICAgICAgIGRlc2NyaXB0aW9ucy5zb3J0KCk7XG4gICAgICAgICAgICBpZiAoZGVzY3JpcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgICAgICBmb3IgKGkgPSAxLCBqID0gMTsgaSA8IGRlc2NyaXB0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoZGVzY3JpcHRpb25zW2kgLSAxXSAhPT0gZGVzY3JpcHRpb25zW2ldKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbnNbal0gPSBkZXNjcmlwdGlvbnNbaV07XG4gICAgICAgICAgICAgICAgICAgICAgICBqKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZGVzY3JpcHRpb25zLmxlbmd0aCA9IGo7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzd2l0Y2ggKGRlc2NyaXB0aW9ucy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBkZXNjcmlwdGlvbnNbMF07XG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGVzY3JpcHRpb25zWzBdICsgXCIgb3IgXCIgKyBkZXNjcmlwdGlvbnNbMV07XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlc2NyaXB0aW9ucy5zbGljZSgwLCAtMSkuam9pbihcIiwgXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICArIFwiLCBvciBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKyBkZXNjcmlwdGlvbnNbZGVzY3JpcHRpb25zLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIGRlc2NyaWJlRm91bmQoZm91bmQxKSB7XG4gICAgICAgICAgICByZXR1cm4gZm91bmQxID8gXCJcXFwiXCIgKyBsaXRlcmFsRXNjYXBlKGZvdW5kMSkgKyBcIlxcXCJcIiA6IFwiZW5kIG9mIGlucHV0XCI7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFwiRXhwZWN0ZWQgXCIgKyBkZXNjcmliZUV4cGVjdGVkKGV4cGVjdGVkKSArIFwiIGJ1dCBcIiArIGRlc2NyaWJlRm91bmQoZm91bmQpICsgXCIgZm91bmQuXCI7XG4gICAgfTtcbiAgICByZXR1cm4gU3ludGF4RXJyb3I7XG59KEVycm9yKSk7XG5leHBvcnQgeyBTeW50YXhFcnJvciB9O1xuZnVuY3Rpb24gcGVnJHBhcnNlKGlucHV0LCBvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgIT09IHVuZGVmaW5lZCA/IG9wdGlvbnMgOiB7fTtcbiAgICB2YXIgcGVnJEZBSUxFRCA9IHt9O1xuICAgIHZhciBwZWckc3RhcnRSdWxlRnVuY3Rpb25zID0geyBzdGFydDogcGVnJHBhcnNlc3RhcnQgfTtcbiAgICB2YXIgcGVnJHN0YXJ0UnVsZUZ1bmN0aW9uID0gcGVnJHBhcnNlc3RhcnQ7XG4gICAgdmFyIHBlZyRjMCA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuICFpZ25vcmVUYWc7IH07XG4gICAgdmFyIHBlZyRjMSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9O1xuICAgIHZhciBwZWckYzIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBpZ25vcmVUYWc7IH07XG4gICAgdmFyIHBlZyRjMyA9IFwiPFwiO1xuICAgIHZhciBwZWckYzQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiPFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNSA9IGZ1bmN0aW9uIChwYXJ0cykge1xuICAgICAgICByZXR1cm4gcGFydHMuam9pbignJyk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM2ID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJzwnOyB9O1xuICAgIHZhciBwZWckYzcgPSBmdW5jdGlvbiAobWVzc2FnZVRleHQpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogVFlQRS5saXRlcmFsLCB2YWx1ZTogbWVzc2FnZVRleHQgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM4ID0gXCIjXCI7XG4gICAgdmFyIHBlZyRjOSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIjXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxMCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogVFlQRS5wb3VuZCB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzExID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJ0YWdFbGVtZW50XCIpO1xuICAgIHZhciBwZWckYzEyID0gZnVuY3Rpb24gKG9wZW4sIGNoaWxkcmVuLCBjbG9zZSkge1xuICAgICAgICBpZiAob3BlbiAhPT0gY2xvc2UpIHtcbiAgICAgICAgICAgIGVycm9yKFwiTWlzbWF0Y2ggdGFnIFxcXCJcIiArIG9wZW4gKyBcIlxcXCIgIT09IFxcXCJcIiArIGNsb3NlICsgXCJcXFwiXCIsIGxvY2F0aW9uKCkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IFRZUEUudGFnLCB2YWx1ZTogb3BlbiwgY2hpbGRyZW46IGNoaWxkcmVuIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMTMgPSBcIi8+XCI7XG4gICAgdmFyIHBlZyRjMTQgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiLz5cIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzE1ID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IFRZUEUubGl0ZXJhbCwgdmFsdWU6IHZhbHVlLmpvaW4oJycpIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMTYgPSBcIj5cIjtcbiAgICB2YXIgcGVnJGMxNyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI+XCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxOCA9IGZ1bmN0aW9uICh0YWcpIHsgcmV0dXJuIHRhZzsgfTtcbiAgICB2YXIgcGVnJGMxOSA9IFwiPC9cIjtcbiAgICB2YXIgcGVnJGMyMCA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCI8L1wiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMjEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImFyZ3VtZW50RWxlbWVudFwiKTtcbiAgICB2YXIgcGVnJGMyMiA9IFwie1wiO1xuICAgIHZhciBwZWckYzIzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIntcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzI0ID0gXCJ9XCI7XG4gICAgdmFyIHBlZyRjMjUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwifVwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMjYgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogVFlQRS5hcmd1bWVudCwgdmFsdWU6IHZhbHVlIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMjcgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcIm51bWJlclNrZWxldG9uSWRcIik7XG4gICAgdmFyIHBlZyRjMjggPSAvXlsnXFwve31dLztcbiAgICB2YXIgcGVnJGMyOSA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtcIidcIiwgXCIvXCIsIFwie1wiLCBcIn1cIl0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMzAgPSBwZWckYW55RXhwZWN0YXRpb24oKTtcbiAgICB2YXIgcGVnJGMzMSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwibnVtYmVyU2tlbGV0b25Ub2tlbk9wdGlvblwiKTtcbiAgICB2YXIgcGVnJGMzMiA9IFwiL1wiO1xuICAgIHZhciBwZWckYzMzID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIi9cIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzM0ID0gZnVuY3Rpb24gKG9wdGlvbikgeyByZXR1cm4gb3B0aW9uOyB9O1xuICAgIHZhciBwZWckYzM1ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJudW1iZXJTa2VsZXRvblRva2VuXCIpO1xuICAgIHZhciBwZWckYzM2ID0gZnVuY3Rpb24gKHN0ZW0sIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIHsgc3RlbTogc3RlbSwgb3B0aW9uczogb3B0aW9ucyB9O1xuICAgIH07XG4gICAgdmFyIHBlZyRjMzcgPSBmdW5jdGlvbiAodG9rZW5zKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IDAgLyogbnVtYmVyICovLCB0b2tlbnM6IHRva2VucywgcGFyc2VkT3B0aW9uczogc2hvdWxkUGFyc2VTa2VsZXRvbiA/IHBhcnNlTnVtYmVyU2tlbGV0b24odG9rZW5zKSA6IHt9IH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjMzggPSBcIjo6XCI7XG4gICAgdmFyIHBlZyRjMzkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiOjpcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzQwID0gZnVuY3Rpb24gKHNrZWxldG9uKSB7IHJldHVybiBza2VsZXRvbjsgfTtcbiAgICB2YXIgcGVnJGM0MSA9IGZ1bmN0aW9uICgpIHsgbWVzc2FnZUN0eC5wdXNoKCdudW1iZXJBcmdTdHlsZScpOyByZXR1cm4gdHJ1ZTsgfTtcbiAgICB2YXIgcGVnJGM0MiA9IGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgICBtZXNzYWdlQ3R4LnBvcCgpO1xuICAgICAgICByZXR1cm4gc3R5bGUucmVwbGFjZSgvXFxzKiQvLCAnJyk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM0MyA9IFwiLFwiO1xuICAgIHZhciBwZWckYzQ0ID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcIixcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzQ1ID0gXCJudW1iZXJcIjtcbiAgICB2YXIgcGVnJGM0NiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJudW1iZXJcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzQ3ID0gZnVuY3Rpb24gKHZhbHVlLCB0eXBlLCBzdHlsZSkge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiB0eXBlID09PSAnbnVtYmVyJyA/IFRZUEUubnVtYmVyIDogdHlwZSA9PT0gJ2RhdGUnID8gVFlQRS5kYXRlIDogVFlQRS50aW1lLCBzdHlsZTogc3R5bGUgJiYgc3R5bGVbMl0sIHZhbHVlOiB2YWx1ZSB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzQ4ID0gXCInXCI7XG4gICAgdmFyIHBlZyRjNDkgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiJ1wiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNTAgPSAvXlteJ10vO1xuICAgIHZhciBwZWckYzUxID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1wiJ1wiXSwgdHJ1ZSwgZmFsc2UpO1xuICAgIHZhciBwZWckYzUyID0gL15bXmEtekEtWid7fV0vO1xuICAgIHZhciBwZWckYzUzID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXSwgXCInXCIsIFwie1wiLCBcIn1cIl0sIHRydWUsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM1NCA9IC9eW2EtekEtWl0vO1xuICAgIHZhciBwZWckYzU1ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcImFcIiwgXCJ6XCJdLCBbXCJBXCIsIFwiWlwiXV0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNTYgPSBmdW5jdGlvbiAocGF0dGVybikge1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyB0eXBlOiAxIC8qIGRhdGVUaW1lICovLCBwYXR0ZXJuOiBwYXR0ZXJuLCBwYXJzZWRPcHRpb25zOiBzaG91bGRQYXJzZVNrZWxldG9uID8gcGFyc2VEYXRlVGltZVNrZWxldG9uKHBhdHRlcm4pIDoge30gfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM1NyA9IGZ1bmN0aW9uICgpIHsgbWVzc2FnZUN0eC5wdXNoKCdkYXRlT3JUaW1lQXJnU3R5bGUnKTsgcmV0dXJuIHRydWU7IH07XG4gICAgdmFyIHBlZyRjNTggPSBcImRhdGVcIjtcbiAgICB2YXIgcGVnJGM1OSA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJkYXRlXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM2MCA9IFwidGltZVwiO1xuICAgIHZhciBwZWckYzYxID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInRpbWVcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzYyID0gXCJwbHVyYWxcIjtcbiAgICB2YXIgcGVnJGM2MyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJwbHVyYWxcIiwgZmFsc2UpO1xuICAgIHZhciBwZWckYzY0ID0gXCJzZWxlY3RvcmRpbmFsXCI7XG4gICAgdmFyIHBlZyRjNjUgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwic2VsZWN0b3JkaW5hbFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNjYgPSBcIm9mZnNldDpcIjtcbiAgICB2YXIgcGVnJGM2NyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCJvZmZzZXQ6XCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM2OCA9IGZ1bmN0aW9uICh2YWx1ZSwgcGx1cmFsVHlwZSwgb2Zmc2V0LCBvcHRpb25zKSB7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IHR5cGU6IFRZUEUucGx1cmFsLCBwbHVyYWxUeXBlOiBwbHVyYWxUeXBlID09PSAncGx1cmFsJyA/ICdjYXJkaW5hbCcgOiAnb3JkaW5hbCcsIHZhbHVlOiB2YWx1ZSwgb2Zmc2V0OiBvZmZzZXQgPyBvZmZzZXRbMl0gOiAwLCBvcHRpb25zOiBvcHRpb25zLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBfYSkge1xuICAgICAgICAgICAgICAgIHZhciBpZCA9IF9hLmlkLCB2YWx1ZSA9IF9hLnZhbHVlLCBvcHRpb25Mb2NhdGlvbiA9IF9hLmxvY2F0aW9uO1xuICAgICAgICAgICAgICAgIGlmIChpZCBpbiBhbGwpIHtcbiAgICAgICAgICAgICAgICAgICAgZXJyb3IoXCJEdXBsaWNhdGUgb3B0aW9uIFxcXCJcIiArIGlkICsgXCJcXFwiIGluIHBsdXJhbCBlbGVtZW50OiBcXFwiXCIgKyB0ZXh0KCkgKyBcIlxcXCJcIiwgbG9jYXRpb24oKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGFsbFtpZF0gPSB7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgICAgICAgICAgICAgbG9jYXRpb246IG9wdGlvbkxvY2F0aW9uXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICByZXR1cm4gYWxsO1xuICAgICAgICAgICAgfSwge30pIH0sIGluc2VydExvY2F0aW9uKCkpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjNjkgPSBcInNlbGVjdFwiO1xuICAgIHZhciBwZWckYzcwID0gcGVnJGxpdGVyYWxFeHBlY3RhdGlvbihcInNlbGVjdFwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNzEgPSBmdW5jdGlvbiAodmFsdWUsIG9wdGlvbnMpIHtcbiAgICAgICAgcmV0dXJuIF9fYXNzaWduKHsgdHlwZTogVFlQRS5zZWxlY3QsIHZhbHVlOiB2YWx1ZSwgb3B0aW9uczogb3B0aW9ucy5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgX2EpIHtcbiAgICAgICAgICAgICAgICB2YXIgaWQgPSBfYS5pZCwgdmFsdWUgPSBfYS52YWx1ZSwgb3B0aW9uTG9jYXRpb24gPSBfYS5sb2NhdGlvbjtcbiAgICAgICAgICAgICAgICBpZiAoaWQgaW4gYWxsKSB7XG4gICAgICAgICAgICAgICAgICAgIGVycm9yKFwiRHVwbGljYXRlIG9wdGlvbiBcXFwiXCIgKyBpZCArIFwiXFxcIiBpbiBzZWxlY3QgZWxlbWVudDogXFxcIlwiICsgdGV4dCgpICsgXCJcXFwiXCIsIGxvY2F0aW9uKCkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBhbGxbaWRdID0ge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBvcHRpb25Mb2NhdGlvblxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFsbDtcbiAgICAgICAgICAgIH0sIHt9KSB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzcyID0gXCI9XCI7XG4gICAgdmFyIHBlZyRjNzMgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiPVwiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjNzQgPSBmdW5jdGlvbiAoaWQpIHsgbWVzc2FnZUN0eC5wdXNoKCdzZWxlY3QnKTsgcmV0dXJuIHRydWU7IH07XG4gICAgdmFyIHBlZyRjNzUgPSBmdW5jdGlvbiAoaWQsIHZhbHVlKSB7XG4gICAgICAgIG1lc3NhZ2VDdHgucG9wKCk7XG4gICAgICAgIHJldHVybiBfX2Fzc2lnbih7IGlkOiBpZCxcbiAgICAgICAgICAgIHZhbHVlOiB2YWx1ZSB9LCBpbnNlcnRMb2NhdGlvbigpKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzc2ID0gZnVuY3Rpb24gKGlkKSB7IG1lc3NhZ2VDdHgucHVzaCgncGx1cmFsJyk7IHJldHVybiB0cnVlOyB9O1xuICAgIHZhciBwZWckYzc3ID0gZnVuY3Rpb24gKGlkLCB2YWx1ZSkge1xuICAgICAgICBtZXNzYWdlQ3R4LnBvcCgpO1xuICAgICAgICByZXR1cm4gX19hc3NpZ24oeyBpZDogaWQsXG4gICAgICAgICAgICB2YWx1ZTogdmFsdWUgfSwgaW5zZXJ0TG9jYXRpb24oKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM3OCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwid2hpdGVzcGFjZVwiKTtcbiAgICB2YXIgcGVnJGM3OSA9IC9eW1xcdC1cXHIgXFx4ODVcXHhBMFxcdTE2ODBcXHUyMDAwLVxcdTIwMEFcXHUyMDI4XFx1MjAyOVxcdTIwMkZcXHUyMDVGXFx1MzAwMF0vO1xuICAgIHZhciBwZWckYzgwID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIlxcdFwiLCBcIlxcclwiXSwgXCIgXCIsIFwiXFx4ODVcIiwgXCJcXHhBMFwiLCBcIlxcdTE2ODBcIiwgW1wiXFx1MjAwMFwiLCBcIlxcdTIwMEFcIl0sIFwiXFx1MjAyOFwiLCBcIlxcdTIwMjlcIiwgXCJcXHUyMDJGXCIsIFwiXFx1MjA1RlwiLCBcIlxcdTMwMDBcIl0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjODEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcInN5bnRheCBwYXR0ZXJuXCIpO1xuICAgIHZhciBwZWckYzgyID0gL15bIS1cXC86LUBbLVxcXmB7LX5cXHhBMS1cXHhBN1xceEE5XFx4QUJcXHhBQ1xceEFFXFx4QjBcXHhCMVxceEI2XFx4QkJcXHhCRlxceEQ3XFx4RjdcXHUyMDEwLVxcdTIwMjdcXHUyMDMwLVxcdTIwM0VcXHUyMDQxLVxcdTIwNTNcXHUyMDU1LVxcdTIwNUVcXHUyMTkwLVxcdTI0NUZcXHUyNTAwLVxcdTI3NzVcXHUyNzk0LVxcdTJCRkZcXHUyRTAwLVxcdTJFN0ZcXHUzMDAxLVxcdTMwMDNcXHUzMDA4LVxcdTMwMjBcXHUzMDMwXFx1RkQzRVxcdUZEM0ZcXHVGRTQ1XFx1RkU0Nl0vO1xuICAgIHZhciBwZWckYzgzID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIiFcIiwgXCIvXCJdLCBbXCI6XCIsIFwiQFwiXSwgW1wiW1wiLCBcIl5cIl0sIFwiYFwiLCBbXCJ7XCIsIFwiflwiXSwgW1wiXFx4QTFcIiwgXCJcXHhBN1wiXSwgXCJcXHhBOVwiLCBcIlxceEFCXCIsIFwiXFx4QUNcIiwgXCJcXHhBRVwiLCBcIlxceEIwXCIsIFwiXFx4QjFcIiwgXCJcXHhCNlwiLCBcIlxceEJCXCIsIFwiXFx4QkZcIiwgXCJcXHhEN1wiLCBcIlxceEY3XCIsIFtcIlxcdTIwMTBcIiwgXCJcXHUyMDI3XCJdLCBbXCJcXHUyMDMwXCIsIFwiXFx1MjAzRVwiXSwgW1wiXFx1MjA0MVwiLCBcIlxcdTIwNTNcIl0sIFtcIlxcdTIwNTVcIiwgXCJcXHUyMDVFXCJdLCBbXCJcXHUyMTkwXCIsIFwiXFx1MjQ1RlwiXSwgW1wiXFx1MjUwMFwiLCBcIlxcdTI3NzVcIl0sIFtcIlxcdTI3OTRcIiwgXCJcXHUyQkZGXCJdLCBbXCJcXHUyRTAwXCIsIFwiXFx1MkU3RlwiXSwgW1wiXFx1MzAwMVwiLCBcIlxcdTMwMDNcIl0sIFtcIlxcdTMwMDhcIiwgXCJcXHUzMDIwXCJdLCBcIlxcdTMwMzBcIiwgXCJcXHVGRDNFXCIsIFwiXFx1RkQzRlwiLCBcIlxcdUZFNDVcIiwgXCJcXHVGRTQ2XCJdLCBmYWxzZSwgZmFsc2UpO1xuICAgIHZhciBwZWckYzg0ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJvcHRpb25hbCB3aGl0ZXNwYWNlXCIpO1xuICAgIHZhciBwZWckYzg1ID0gcGVnJG90aGVyRXhwZWN0YXRpb24oXCJudW1iZXJcIik7XG4gICAgdmFyIHBlZyRjODYgPSBcIi1cIjtcbiAgICB2YXIgcGVnJGM4NyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCItXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM4OCA9IGZ1bmN0aW9uIChuZWdhdGl2ZSwgbnVtKSB7XG4gICAgICAgIHJldHVybiBudW1cbiAgICAgICAgICAgID8gbmVnYXRpdmVcbiAgICAgICAgICAgICAgICA/IC1udW1cbiAgICAgICAgICAgICAgICA6IG51bVxuICAgICAgICAgICAgOiAwO1xuICAgIH07XG4gICAgdmFyIHBlZyRjODkgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImFwb3N0cm9waGVcIik7XG4gICAgdmFyIHBlZyRjOTAgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImRvdWJsZSBhcG9zdHJvcGhlc1wiKTtcbiAgICB2YXIgcGVnJGM5MSA9IFwiJydcIjtcbiAgICB2YXIgcGVnJGM5MiA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCInJ1wiLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjOTMgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBcIidcIjsgfTtcbiAgICB2YXIgcGVnJGM5NCA9IGZ1bmN0aW9uIChlc2NhcGVkQ2hhciwgcXVvdGVkQ2hhcnMpIHtcbiAgICAgICAgcmV0dXJuIGVzY2FwZWRDaGFyICsgcXVvdGVkQ2hhcnMucmVwbGFjZShcIicnXCIsIFwiJ1wiKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzk1ID0gZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuICh4ICE9PSAnPCcgJiZcbiAgICAgICAgICAgIHggIT09ICd7JyAmJlxuICAgICAgICAgICAgIShpc0luUGx1cmFsT3B0aW9uKCkgJiYgeCA9PT0gJyMnKSAmJlxuICAgICAgICAgICAgIShpc05lc3RlZE1lc3NhZ2VUZXh0KCkgJiYgeCA9PT0gJ30nKSk7XG4gICAgfTtcbiAgICB2YXIgcGVnJGM5NiA9IFwiXFxuXCI7XG4gICAgdmFyIHBlZyRjOTcgPSBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKFwiXFxuXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGM5OCA9IGZ1bmN0aW9uICh4KSB7XG4gICAgICAgIHJldHVybiB4ID09PSAnPCcgfHwgeCA9PT0gJz4nIHx8IHggPT09ICd7JyB8fCB4ID09PSAnfScgfHwgKGlzSW5QbHVyYWxPcHRpb24oKSAmJiB4ID09PSAnIycpO1xuICAgIH07XG4gICAgdmFyIHBlZyRjOTkgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcImFyZ05hbWVPck51bWJlclwiKTtcbiAgICB2YXIgcGVnJGMxMDAgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcInZhbGlkVGFnXCIpO1xuICAgIHZhciBwZWckYzEwMSA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiYXJnTnVtYmVyXCIpO1xuICAgIHZhciBwZWckYzEwMiA9IFwiMFwiO1xuICAgIHZhciBwZWckYzEwMyA9IHBlZyRsaXRlcmFsRXhwZWN0YXRpb24oXCIwXCIsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxMDQgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAwOyB9O1xuICAgIHZhciBwZWckYzEwNSA9IC9eWzEtOV0vO1xuICAgIHZhciBwZWckYzEwNiA9IHBlZyRjbGFzc0V4cGVjdGF0aW9uKFtbXCIxXCIsIFwiOVwiXV0sIGZhbHNlLCBmYWxzZSk7XG4gICAgdmFyIHBlZyRjMTA3ID0gL15bMC05XS87XG4gICAgdmFyIHBlZyRjMTA4ID0gcGVnJGNsYXNzRXhwZWN0YXRpb24oW1tcIjBcIiwgXCI5XCJdXSwgZmFsc2UsIGZhbHNlKTtcbiAgICB2YXIgcGVnJGMxMDkgPSBmdW5jdGlvbiAoZGlnaXRzKSB7XG4gICAgICAgIHJldHVybiBwYXJzZUludChkaWdpdHMuam9pbignJyksIDEwKTtcbiAgICB9O1xuICAgIHZhciBwZWckYzExMCA9IHBlZyRvdGhlckV4cGVjdGF0aW9uKFwiYXJnTmFtZVwiKTtcbiAgICB2YXIgcGVnJGMxMTEgPSBwZWckb3RoZXJFeHBlY3RhdGlvbihcInRhZ05hbWVcIik7XG4gICAgdmFyIHBlZyRjdXJyUG9zID0gMDtcbiAgICB2YXIgcGVnJHNhdmVkUG9zID0gMDtcbiAgICB2YXIgcGVnJHBvc0RldGFpbHNDYWNoZSA9IFt7IGxpbmU6IDEsIGNvbHVtbjogMSB9XTtcbiAgICB2YXIgcGVnJG1heEZhaWxQb3MgPSAwO1xuICAgIHZhciBwZWckbWF4RmFpbEV4cGVjdGVkID0gW107XG4gICAgdmFyIHBlZyRzaWxlbnRGYWlscyA9IDA7XG4gICAgdmFyIHBlZyRyZXN1bHQ7XG4gICAgaWYgKG9wdGlvbnMuc3RhcnRSdWxlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKCEob3B0aW9ucy5zdGFydFJ1bGUgaW4gcGVnJHN0YXJ0UnVsZUZ1bmN0aW9ucykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkNhbid0IHN0YXJ0IHBhcnNpbmcgZnJvbSBydWxlIFxcXCJcIiArIG9wdGlvbnMuc3RhcnRSdWxlICsgXCJcXFwiLlwiKTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc3RhcnRSdWxlRnVuY3Rpb24gPSBwZWckc3RhcnRSdWxlRnVuY3Rpb25zW29wdGlvbnMuc3RhcnRSdWxlXTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdGV4dCgpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0LnN1YnN0cmluZyhwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gbG9jYXRpb24oKSB7XG4gICAgICAgIHJldHVybiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBleHBlY3RlZChkZXNjcmlwdGlvbiwgbG9jYXRpb24xKSB7XG4gICAgICAgIGxvY2F0aW9uMSA9IGxvY2F0aW9uMSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGxvY2F0aW9uMVxuICAgICAgICAgICAgOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICAgICAgICB0aHJvdyBwZWckYnVpbGRTdHJ1Y3R1cmVkRXJyb3IoW3BlZyRvdGhlckV4cGVjdGF0aW9uKGRlc2NyaXB0aW9uKV0sIGlucHV0LnN1YnN0cmluZyhwZWckc2F2ZWRQb3MsIHBlZyRjdXJyUG9zKSwgbG9jYXRpb24xKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gZXJyb3IobWVzc2FnZSwgbG9jYXRpb24xKSB7XG4gICAgICAgIGxvY2F0aW9uMSA9IGxvY2F0aW9uMSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICA/IGxvY2F0aW9uMVxuICAgICAgICAgICAgOiBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRzYXZlZFBvcywgcGVnJGN1cnJQb3MpO1xuICAgICAgICB0aHJvdyBwZWckYnVpbGRTaW1wbGVFcnJvcihtZXNzYWdlLCBsb2NhdGlvbjEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckbGl0ZXJhbEV4cGVjdGF0aW9uKHRleHQxLCBpZ25vcmVDYXNlKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwibGl0ZXJhbFwiLCB0ZXh0OiB0ZXh0MSwgaWdub3JlQ2FzZTogaWdub3JlQ2FzZSB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckY2xhc3NFeHBlY3RhdGlvbihwYXJ0cywgaW52ZXJ0ZWQsIGlnbm9yZUNhc2UpIHtcbiAgICAgICAgcmV0dXJuIHsgdHlwZTogXCJjbGFzc1wiLCBwYXJ0czogcGFydHMsIGludmVydGVkOiBpbnZlcnRlZCwgaWdub3JlQ2FzZTogaWdub3JlQ2FzZSB9O1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckYW55RXhwZWN0YXRpb24oKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwiYW55XCIgfTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGVuZEV4cGVjdGF0aW9uKCkge1xuICAgICAgICByZXR1cm4geyB0eXBlOiBcImVuZFwiIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRvdGhlckV4cGVjdGF0aW9uKGRlc2NyaXB0aW9uKSB7XG4gICAgICAgIHJldHVybiB7IHR5cGU6IFwib3RoZXJcIiwgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRjb21wdXRlUG9zRGV0YWlscyhwb3MpIHtcbiAgICAgICAgdmFyIGRldGFpbHMgPSBwZWckcG9zRGV0YWlsc0NhY2hlW3Bvc107XG4gICAgICAgIHZhciBwO1xuICAgICAgICBpZiAoZGV0YWlscykge1xuICAgICAgICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwID0gcG9zIC0gMTtcbiAgICAgICAgICAgIHdoaWxlICghcGVnJHBvc0RldGFpbHNDYWNoZVtwXSkge1xuICAgICAgICAgICAgICAgIHAtLTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGRldGFpbHMgPSBwZWckcG9zRGV0YWlsc0NhY2hlW3BdO1xuICAgICAgICAgICAgZGV0YWlscyA9IHtcbiAgICAgICAgICAgICAgICBsaW5lOiBkZXRhaWxzLmxpbmUsXG4gICAgICAgICAgICAgICAgY29sdW1uOiBkZXRhaWxzLmNvbHVtblxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdoaWxlIChwIDwgcG9zKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocCkgPT09IDEwKSB7XG4gICAgICAgICAgICAgICAgICAgIGRldGFpbHMubGluZSsrO1xuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLmNvbHVtbiA9IDE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLmNvbHVtbisrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwZWckcG9zRGV0YWlsc0NhY2hlW3Bvc10gPSBkZXRhaWxzO1xuICAgICAgICAgICAgcmV0dXJuIGRldGFpbHM7XG4gICAgICAgIH1cbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGNvbXB1dGVMb2NhdGlvbihzdGFydFBvcywgZW5kUG9zKSB7XG4gICAgICAgIHZhciBzdGFydFBvc0RldGFpbHMgPSBwZWckY29tcHV0ZVBvc0RldGFpbHMoc3RhcnRQb3MpO1xuICAgICAgICB2YXIgZW5kUG9zRGV0YWlscyA9IHBlZyRjb21wdXRlUG9zRGV0YWlscyhlbmRQb3MpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgc3RhcnQ6IHtcbiAgICAgICAgICAgICAgICBvZmZzZXQ6IHN0YXJ0UG9zLFxuICAgICAgICAgICAgICAgIGxpbmU6IHN0YXJ0UG9zRGV0YWlscy5saW5lLFxuICAgICAgICAgICAgICAgIGNvbHVtbjogc3RhcnRQb3NEZXRhaWxzLmNvbHVtblxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGVuZDoge1xuICAgICAgICAgICAgICAgIG9mZnNldDogZW5kUG9zLFxuICAgICAgICAgICAgICAgIGxpbmU6IGVuZFBvc0RldGFpbHMubGluZSxcbiAgICAgICAgICAgICAgICBjb2x1bW46IGVuZFBvc0RldGFpbHMuY29sdW1uXG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRmYWlsKGV4cGVjdGVkMSkge1xuICAgICAgICBpZiAocGVnJGN1cnJQb3MgPCBwZWckbWF4RmFpbFBvcykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwZWckY3VyclBvcyA+IHBlZyRtYXhGYWlsUG9zKSB7XG4gICAgICAgICAgICBwZWckbWF4RmFpbFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJG1heEZhaWxFeHBlY3RlZCA9IFtdO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRtYXhGYWlsRXhwZWN0ZWQucHVzaChleHBlY3RlZDEpO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckYnVpbGRTaW1wbGVFcnJvcihtZXNzYWdlLCBsb2NhdGlvbjEpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTeW50YXhFcnJvcihtZXNzYWdlLCBbXSwgXCJcIiwgbG9jYXRpb24xKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJGJ1aWxkU3RydWN0dXJlZEVycm9yKGV4cGVjdGVkMSwgZm91bmQsIGxvY2F0aW9uMSkge1xuICAgICAgICByZXR1cm4gbmV3IFN5bnRheEVycm9yKFN5bnRheEVycm9yLmJ1aWxkTWVzc2FnZShleHBlY3RlZDEsIGZvdW5kKSwgZXhwZWN0ZWQxLCBmb3VuZCwgbG9jYXRpb24xKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlc3RhcnQoKSB7XG4gICAgICAgIHZhciBzMDtcbiAgICAgICAgczAgPSBwZWckcGFyc2VtZXNzYWdlKCk7XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbWVzc2FnZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgczAgPSBbXTtcbiAgICAgICAgczEgPSBwZWckcGFyc2VtZXNzYWdlRWxlbWVudCgpO1xuICAgICAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2VtZXNzYWdlRWxlbWVudCgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbWVzc2FnZUVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckYzAoKTtcbiAgICAgICAgaWYgKHMxKSB7XG4gICAgICAgICAgICBzMSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNldGFnRWxlbWVudCgpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzEoczIpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRwYXJzZWxpdGVyYWxFbGVtZW50KCk7XG4gICAgICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRwYXJzZWFyZ3VtZW50RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRwYXJzZXNpbXBsZUZvcm1hdEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRwYXJzZXBsdXJhbEVsZW1lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJHBhcnNlc2VsZWN0RWxlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRwYXJzZXBvdW5kRWxlbWVudCgpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW1lc3NhZ2VUZXh0KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjMigpO1xuICAgICAgICBpZiAoczEpIHtcbiAgICAgICAgICAgIHMxID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBbXTtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlZG91YmxlQXBvc3Ryb3BoZXMoKTtcbiAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlcXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNldW5xdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckYzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VxdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNldW5xdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczMgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckYzM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNShzMik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMSA9IFtdO1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VxdW90ZWRTdHJpbmcoKTtcbiAgICAgICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2V1bnF1b3RlZFN0cmluZygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbm9uVGFnU3RhcnRpbmdBbmdsZUJyYWNrZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlcXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXVucXVvdGVkU3RyaW5nKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbm9uVGFnU3RhcnRpbmdBbmdsZUJyYWNrZXQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNShzMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlbm9uVGFnU3RhcnRpbmdBbmdsZUJyYWNrZXQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczIgPSBwZWckcGFyc2VvcGVuaW5nVGFnKCk7XG4gICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VjbG9zaW5nVGFnKCk7XG4gICAgICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXNlbGZDbG9zaW5nVGFnKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgIGlmIChzMiA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSB1bmRlZmluZWQ7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MCkge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJGMzO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGM2KCk7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWxpdGVyYWxFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZW1lc3NhZ2VUZXh0KCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNyhzMSk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2Vwb3VuZEVsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzUpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM4O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTAoKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXRhZ0VsZW1lbnQoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJHBhcnNlc2VsZkNsb3NpbmdUYWcoKTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2VvcGVuaW5nVGFnKCk7XG4gICAgICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VjbG9zaW5nVGFnKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTIoczEsIHMyLCBzMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzExKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXNlbGZDbG9zaW5nVGFnKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNTtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MCkge1xuICAgICAgICAgICAgczIgPSBwZWckYzM7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZXZhbGlkVGFnKCk7XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjMTMpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJGMxMztcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxNCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IFtzMiwgczMsIHM0LCBzNV07XG4gICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHMyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzE1KHMxKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW9wZW5pbmdUYWcoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MCkge1xuICAgICAgICAgICAgczEgPSBwZWckYzM7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXZhbGlkVGFnKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYyKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGMxNjtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxNyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTgoczIpO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWNsb3NpbmdUYWcoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjMTkpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMxOTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXZhbGlkVGFnKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDYyKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGMxNjtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxNyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjMTgoczIpO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWFyZ3VtZW50RWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczU7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgczEgPSBwZWckYzIyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VhcmdOYW1lT3JOdW1iZXIoKTtcbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjMjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGMyNihzMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJTa2VsZXRvbklkKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBbXTtcbiAgICAgICAgczIgPSBwZWckY3VyclBvcztcbiAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHM0ID0gcGVnJHBhcnNld2hpdGVTcGFjZSgpO1xuICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChwZWckYzI4LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjMjgudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMzO1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMyA9IFtzMywgczRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuT3B0aW9uKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDcpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGMzMjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMyk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZW51bWJlclNrZWxldG9uSWQoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGMzNChzMik7XG4gICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvbklkKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IFtdO1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlbnVtYmVyU2tlbGV0b25Ub2tlbk9wdGlvbigpO1xuICAgICAgICAgICAgICAgIHdoaWxlIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMy5wdXNoKHM0KTtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuT3B0aW9uKCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzM2KHMyLCBzMyk7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzM1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZW51bWJlclNrZWxldG9uKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBbXTtcbiAgICAgICAgczIgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuKCk7XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgd2hpbGUgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczEucHVzaChzMik7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvblRva2VuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGMzNyhzMSk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJBcmdTdHlsZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzM4KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMzg7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VudW1iZXJTa2VsZXRvbigpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckYzQwKHMyKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzMCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczEgPSBwZWckYzQxKCk7XG4gICAgICAgICAgICBpZiAoczEpIHtcbiAgICAgICAgICAgICAgICBzMSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlbWVzc2FnZVRleHQoKTtcbiAgICAgICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0MihzMik7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXJGb3JtYXRFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMCwgczExLCBzMTI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMjI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikgPT09IHBlZyRjNDUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM0NTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0Nik7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0NCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZW51bWJlckFyZ1N0eWxlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gW3MxMCwgczExLCBzMTJdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gczEwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzOTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDcoczMsIHM3LCBzOSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b25MaXRlcmFsKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzkpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM0ODtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0OSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IFtdO1xuICAgICAgICAgICAgczMgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjNTAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTEpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMyLnB1c2goczMpO1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMyA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjNTAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1MSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAzOSkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRjNDg7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDkpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMSA9IFtzMSwgczIsIHMzXTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IFtdO1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2Vkb3VibGVBcG9zdHJvcGhlcygpO1xuICAgICAgICAgICAgaWYgKHMxID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRjNTIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzMSA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNTMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMwLnB1c2goczEpO1xuICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjNTIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1Myk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvblBhdHRlcm4oKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHMwID0gW107XG4gICAgICAgIGlmIChwZWckYzU0LnRlc3QoaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKSkpIHtcbiAgICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1NSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMC5wdXNoKHMxKTtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGM1NC50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1NSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VkYXRlVGltZVNrZWxldG9uKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMyID0gW107XG4gICAgICAgIHMzID0gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvbkxpdGVyYWwoKTtcbiAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b25QYXR0ZXJuKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMi5wdXNoKHMzKTtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWRhdGVUaW1lU2tlbGV0b25MaXRlcmFsKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlZGF0ZVRpbWVTa2VsZXRvblBhdHRlcm4oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IGlucHV0LnN1YnN0cmluZyhzMSwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgczEgPSBwZWckYzU2KHMxKTtcbiAgICAgICAgfVxuICAgICAgICBzMCA9IHMxO1xuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWRhdGVPclRpbWVBcmdTdHlsZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzM4KSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMzg7XG4gICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VkYXRlVGltZVNrZWxldG9uKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNDAoczIpO1xuICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMSA9IHBlZyRjNTcoKTtcbiAgICAgICAgICAgIGlmIChzMSkge1xuICAgICAgICAgICAgICAgIHMxID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckcGFyc2VtZXNzYWdlVGV4dCgpO1xuICAgICAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzQyKHMyKTtcbiAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWRhdGVPclRpbWVGb3JtYXRFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMCwgczExLCBzMTI7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMjI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNCkgPT09IHBlZyRjNTgpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM1ODtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1OSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCA0KSA9PT0gcGVnJGM2MCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM2MDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM2MSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczggPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczggIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJGM0MztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTAgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VkYXRlT3JUaW1lQXJnU3R5bGUoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTAgPSBbczEwLCBzMTEsIHMxMl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBzMTA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHM5O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM5ID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM5ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckYzI0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM0NyhzMywgczcsIHM5KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlc2ltcGxlRm9ybWF0RWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwO1xuICAgICAgICBzMCA9IHBlZyRwYXJzZW51bWJlckZvcm1hdEVsZW1lbnQoKTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRwYXJzZWRhdGVPclRpbWVGb3JtYXRFbGVtZW50KCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VwbHVyYWxFbGVtZW50KCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3LCBzOCwgczksIHMxMCwgczExLCBzMTIsIHMxMywgczE0LCBzMTU7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMjI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikgPT09IHBlZyRjNjIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM2MjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM2Myk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuc3Vic3RyKHBlZyRjdXJyUG9zLCAxMykgPT09IHBlZyRjNjQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjNjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgKz0gMTM7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzY1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDcpID09PSBwZWckYzY2KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJGM2NjtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSA3O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNjcpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTMgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTQgPSBwZWckcGFyc2VudW1iZXIoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gW3MxMiwgczEzLCBzMTRdO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gczEyO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMSA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczExICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEzID0gW107XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxNCA9IHBlZyRwYXJzZXBsdXJhbE9wdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczE0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoczE0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEzLnB1c2goczE0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTQgPSBwZWckcGFyc2VwbHVyYWxPcHRpb24oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczE0ID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxNSA9IHBlZyRjMjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzI1KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczE1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNjgoczMsIHM3LCBzMTEsIHMxMyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlc2VsZWN0RWxlbWVudCgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczUsIHM2LCBzNywgczgsIHM5LCBzMTAsIHMxMSwgczEyLCBzMTM7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMjI7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ0KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgNikgPT09IHBlZyRjNjkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGM2OTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDY7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM3MCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzOCA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzOCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gNDQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckYzQzO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczkgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzQ0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczkgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEwID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczEwICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTEgPSBbXTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxMiA9IHBlZyRwYXJzZXNlbGVjdE9wdGlvbigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChzMTIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExLnB1c2goczEyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEyID0gcGVnJHBhcnNlc2VsZWN0T3B0aW9uKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczExID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTIgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMxMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEzID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMTMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMTMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczEgPSBwZWckYzcxKHMzLCBzMTEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VwbHVyYWxSdWxlU2VsZWN0VmFsdWUoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA2MSkge1xuICAgICAgICAgICAgczIgPSBwZWckYzcyO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzczKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlbnVtYmVyKCk7XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IFtzMiwgczNdO1xuICAgICAgICAgICAgICAgIHMxID0gczI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gcGVnJHBhcnNlYXJnTmFtZSgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlc2VsZWN0T3B0aW9uKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3O1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZWFyZ05hbWUoKTtcbiAgICAgICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJHBhcnNlXygpO1xuICAgICAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDEyMykge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckYzIyO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzIzKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzc0KHMyKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczYgPSBwZWckcGFyc2VtZXNzYWdlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM2ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTI1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRjMjQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczcgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjUpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMSA9IHBlZyRjNzUoczIsIHM2KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gczE7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlcGx1cmFsT3B0aW9uKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0LCBzNSwgczYsIHM3O1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRwYXJzZV8oKTtcbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZXBsdXJhbFJ1bGVTZWxlY3RWYWx1ZSgpO1xuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckcGFyc2VfKCk7XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTIzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRjMjI7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMjMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjNzYoczIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM1KSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNiA9IHBlZyRwYXJzZW1lc3NhZ2UoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoczYgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSAxMjUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM3ID0gcGVnJGMyNDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMyNSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHM3ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM3NyhzMiwgczYpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2V3aGl0ZVNwYWNlKCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgaWYgKHBlZyRjNzkudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzgwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM3OCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VwYXR0ZXJuU3ludGF4KCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgaWYgKHBlZyRjODIudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgczAgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzgzKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4MSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VfKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMjtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gW107XG4gICAgICAgIHMyID0gcGVnJHBhcnNld2hpdGVTcGFjZSgpO1xuICAgICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICAgICAgczIgPSBwZWckcGFyc2V3aGl0ZVNwYWNlKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4NCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2VudW1iZXIoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NSkge1xuICAgICAgICAgICAgczEgPSBwZWckYzg2O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzg3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJHBhcnNlYXJnTnVtYmVyKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjODgoczEsIHMyKTtcbiAgICAgICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzg1KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWFwb3N0cm9waGUoKSB7XG4gICAgICAgIHZhciBzMCwgczE7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDM5KSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjNDg7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjNDkpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzg5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWRvdWJsZUFwb3N0cm9waGVzKCkge1xuICAgICAgICB2YXIgczAsIHMxO1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTEpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM5MTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zICs9IDI7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM5Mik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgIHMxID0gcGVnJGM5MygpO1xuICAgICAgICB9XG4gICAgICAgIHMwID0gczE7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzkwKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZXF1b3RlZFN0cmluZygpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNCwgczU7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzkpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJGM0ODtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0OSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRwYXJzZWVzY2FwZWRDaGFyKCk7XG4gICAgICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgICAgIHM0ID0gW107XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0LnN1YnN0cihwZWckY3VyclBvcywgMikgPT09IHBlZyRjOTEpIHtcbiAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckYzkxO1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzkyKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczUgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjNTAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzUxKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoczUgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQucHVzaChzNSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5zdWJzdHIocGVnJGN1cnJQb3MsIDIpID09PSBwZWckYzkxKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNSA9IHBlZyRjOTE7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyArPSAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjOTIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChzNSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRjNTAudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM1ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczUgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM1MSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IGlucHV0LnN1YnN0cmluZyhzMywgcGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgczMgPSBzNDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMzkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJGM0ODtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM0OSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBzMDtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJGM5NChzMiwgczMpO1xuICAgICAgICAgICAgICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMwID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczA7XG4gICAgICAgICAgICBzMCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2V1bnF1b3RlZFN0cmluZygpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzO1xuICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBzMSA9IHBlZyRjdXJyUG9zO1xuICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgIHMyID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBwZWckc2F2ZWRQb3MgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIHMzID0gcGVnJGM5NShzMik7XG4gICAgICAgICAgICBpZiAoczMpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMyAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMyID0gW3MyLCBzM107XG4gICAgICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgczEgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMTtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIGlmIChpbnB1dC5jaGFyQ29kZUF0KHBlZyRjdXJyUG9zKSA9PT0gMTApIHtcbiAgICAgICAgICAgICAgICBzMSA9IHBlZyRjOTY7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjOTcpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlZXNjYXBlZENoYXIoKSB7XG4gICAgICAgIHZhciBzMCwgczEsIHMyLCBzMztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICBzMiA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMyA9IHBlZyRjOTgoczIpO1xuICAgICAgICAgICAgaWYgKHMzKSB7XG4gICAgICAgICAgICAgICAgczMgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMiA9IFtzMiwgczNdO1xuICAgICAgICAgICAgICAgIHMxID0gczI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gczA7XG4gICAgfVxuICAgIGZ1bmN0aW9uIHBlZyRwYXJzZWFyZ05hbWVPck51bWJlcigpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlYXJnTnVtYmVyKCk7XG4gICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2VhcmdOYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM5OSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2V2YWxpZFRhZygpIHtcbiAgICAgICAgdmFyIHMwLCBzMTtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gcGVnJHBhcnNlYXJnTnVtYmVyKCk7XG4gICAgICAgIGlmIChzMSA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgczEgPSBwZWckcGFyc2V0YWdOYW1lKCk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMxICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IGlucHV0LnN1YnN0cmluZyhzMCwgcGVnJGN1cnJQb3MpO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMDApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlYXJnTnVtYmVyKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0OCkge1xuICAgICAgICAgICAgczEgPSBwZWckYzEwMjtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMDMpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgcGVnJHNhdmVkUG9zID0gczA7XG4gICAgICAgICAgICBzMSA9IHBlZyRjMTA0KCk7XG4gICAgICAgIH1cbiAgICAgICAgczAgPSBzMTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMCA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgczEgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgIGlmIChwZWckYzEwNS50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgczIgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzEwNik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgczMgPSBbXTtcbiAgICAgICAgICAgICAgICBpZiAocGVnJGMxMDcudGVzdChpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpKSkge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zKys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTA4KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB3aGlsZSAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczMucHVzaChzNCk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChwZWckYzEwNy50ZXN0KGlucHV0LmNoYXJBdChwZWckY3VyclBvcykpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcysrO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMTA4KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoczMgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBbczIsIHMzXTtcbiAgICAgICAgICAgICAgICAgICAgczEgPSBzMjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczE7XG4gICAgICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMxO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzMSAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHBlZyRzYXZlZFBvcyA9IHMwO1xuICAgICAgICAgICAgICAgIHMxID0gcGVnJGMxMDkoczEpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgczAgPSBzMTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHMwID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMSA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMxMDEpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBzMDtcbiAgICB9XG4gICAgZnVuY3Rpb24gcGVnJHBhcnNlYXJnTmFtZSgpIHtcbiAgICAgICAgdmFyIHMwLCBzMSwgczIsIHMzLCBzNDtcbiAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgIHMwID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMxID0gW107XG4gICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXBhdHRlcm5TeW50YXgoKTtcbiAgICAgICAgfVxuICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHdoaWxlIChzMiAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHMxLnB1c2goczIpO1xuICAgICAgICAgICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckY3VyclBvcztcbiAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgczQgPSBwZWckcGFyc2VwYXR0ZXJuU3ludGF4KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbnB1dC5sZW5ndGggPiBwZWckY3VyclBvcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgczQgPSBpbnB1dC5jaGFyQXQocGVnJGN1cnJQb3MpO1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzMwKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoczQgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgICAgICAgICBzMiA9IHMzO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzExMCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICBmdW5jdGlvbiBwZWckcGFyc2V0YWdOYW1lKCkge1xuICAgICAgICB2YXIgczAsIHMxLCBzMiwgczMsIHM0O1xuICAgICAgICBwZWckc2lsZW50RmFpbHMrKztcbiAgICAgICAgczAgPSBwZWckY3VyclBvcztcbiAgICAgICAgczEgPSBbXTtcbiAgICAgICAgaWYgKGlucHV0LmNoYXJDb2RlQXQocGVnJGN1cnJQb3MpID09PSA0NSkge1xuICAgICAgICAgICAgczIgPSBwZWckYzg2O1xuICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzg3KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBpZiAoczIgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICBzMyA9IHBlZyRjdXJyUG9zO1xuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzKys7XG4gICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgICAgIGlmIChzNCA9PT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgIHM0ID0gcGVnJHBhcnNlcGF0dGVyblN5bnRheCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcGVnJHNpbGVudEZhaWxzLS07XG4gICAgICAgICAgICBpZiAoczQgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgczMgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgaWYgKGlucHV0Lmxlbmd0aCA+IHBlZyRjdXJyUG9zKSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gaW5wdXQuY2hhckF0KHBlZyRjdXJyUG9zKTtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGMzMCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHM0ICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgICAgIHMyID0gczM7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBwZWckY3VyclBvcyA9IHMyO1xuICAgICAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICBzMiA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHMyICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICB3aGlsZSAoczIgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgICAgICBzMS5wdXNoKHMyKTtcbiAgICAgICAgICAgICAgICBpZiAoaW5wdXQuY2hhckNvZGVBdChwZWckY3VyclBvcykgPT09IDQ1KSB7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJGM4NjtcbiAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHBlZyRzaWxlbnRGYWlscyA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGZhaWwocGVnJGM4Nyk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHMyID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgIHMzID0gcGVnJGN1cnJQb3M7XG4gICAgICAgICAgICAgICAgICAgIHBlZyRzaWxlbnRGYWlscysrO1xuICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXdoaXRlU3BhY2UoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzNCA9IHBlZyRwYXJzZXBhdHRlcm5TeW50YXgoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBwZWckc2lsZW50RmFpbHMtLTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHM0ID09PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczM7XG4gICAgICAgICAgICAgICAgICAgICAgICBzMyA9IHBlZyRGQUlMRUQ7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHMzICE9PSBwZWckRkFJTEVEKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaW5wdXQubGVuZ3RoID4gcGVnJGN1cnJQb3MpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzNCA9IGlucHV0LmNoYXJBdChwZWckY3VyclBvcyk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MrKztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHM0ID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGVnJHNpbGVudEZhaWxzID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRmYWlsKHBlZyRjMzApO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzNCAhPT0gcGVnJEZBSUxFRCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMzID0gW3MzLCBzNF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBzMztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBlZyRjdXJyUG9zID0gczI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgczIgPSBwZWckRkFJTEVEO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGVnJGN1cnJQb3MgPSBzMjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHMyID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoczEgIT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMwID0gaW5wdXQuc3Vic3RyaW5nKHMwLCBwZWckY3VyclBvcyk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBzMCA9IHMxO1xuICAgICAgICB9XG4gICAgICAgIHBlZyRzaWxlbnRGYWlscy0tO1xuICAgICAgICBpZiAoczAgPT09IHBlZyRGQUlMRUQpIHtcbiAgICAgICAgICAgIHMxID0gcGVnJEZBSUxFRDtcbiAgICAgICAgICAgIGlmIChwZWckc2lsZW50RmFpbHMgPT09IDApIHtcbiAgICAgICAgICAgICAgICBwZWckZmFpbChwZWckYzExMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHMwO1xuICAgIH1cbiAgICB2YXIgbWVzc2FnZUN0eCA9IFsncm9vdCddO1xuICAgIGZ1bmN0aW9uIGlzTmVzdGVkTWVzc2FnZVRleHQoKSB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlQ3R4Lmxlbmd0aCA+IDE7XG4gICAgfVxuICAgIGZ1bmN0aW9uIGlzSW5QbHVyYWxPcHRpb24oKSB7XG4gICAgICAgIHJldHVybiBtZXNzYWdlQ3R4W21lc3NhZ2VDdHgubGVuZ3RoIC0gMV0gPT09ICdwbHVyYWwnO1xuICAgIH1cbiAgICBmdW5jdGlvbiBpbnNlcnRMb2NhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMgJiYgb3B0aW9ucy5jYXB0dXJlTG9jYXRpb24gPyB7XG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24oKVxuICAgICAgICB9IDoge307XG4gICAgfVxuICAgIHZhciBpZ25vcmVUYWcgPSBvcHRpb25zICYmIG9wdGlvbnMuaWdub3JlVGFnO1xuICAgIHZhciBzaG91bGRQYXJzZVNrZWxldG9uID0gb3B0aW9ucyAmJiBvcHRpb25zLnNob3VsZFBhcnNlU2tlbGV0b247XG4gICAgcGVnJHJlc3VsdCA9IHBlZyRzdGFydFJ1bGVGdW5jdGlvbigpO1xuICAgIGlmIChwZWckcmVzdWx0ICE9PSBwZWckRkFJTEVEICYmIHBlZyRjdXJyUG9zID09PSBpbnB1dC5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIHBlZyRyZXN1bHQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBpZiAocGVnJHJlc3VsdCAhPT0gcGVnJEZBSUxFRCAmJiBwZWckY3VyclBvcyA8IGlucHV0Lmxlbmd0aCkge1xuICAgICAgICAgICAgcGVnJGZhaWwocGVnJGVuZEV4cGVjdGF0aW9uKCkpO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IHBlZyRidWlsZFN0cnVjdHVyZWRFcnJvcihwZWckbWF4RmFpbEV4cGVjdGVkLCBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aCA/IGlucHV0LmNoYXJBdChwZWckbWF4RmFpbFBvcykgOiBudWxsLCBwZWckbWF4RmFpbFBvcyA8IGlucHV0Lmxlbmd0aFxuICAgICAgICAgICAgPyBwZWckY29tcHV0ZUxvY2F0aW9uKHBlZyRtYXhGYWlsUG9zLCBwZWckbWF4RmFpbFBvcyArIDEpXG4gICAgICAgICAgICA6IHBlZyRjb21wdXRlTG9jYXRpb24ocGVnJG1heEZhaWxQb3MsIHBlZyRtYXhGYWlsUG9zKSk7XG4gICAgfVxufVxuZXhwb3J0IHZhciBwZWdQYXJzZSA9IHBlZyRwYXJzZTtcbiIsImltcG9ydCB7IF9fc3ByZWFkQXJyYXlzIH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgeyBpc1BsdXJhbEVsZW1lbnQsIGlzTGl0ZXJhbEVsZW1lbnQsIGlzU2VsZWN0RWxlbWVudCwgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCB7IHBlZ1BhcnNlIH0gZnJvbSAnLi9wYXJzZXInO1xudmFyIFBMVVJBTF9IQVNIVEFHX1JFR0VYID0gLyhefFteXFxcXF0pIy9nO1xuLyoqXG4gKiBXaGV0aGVyIHRvIGNvbnZlcnQgYCNgIGluIHBsdXJhbCBydWxlIG9wdGlvbnNcbiAqIHRvIGB7dmFyLCBudW1iZXJ9YFxuICogQHBhcmFtIGVsIEFTVCBFbGVtZW50XG4gKiBAcGFyYW0gcGx1cmFsU3RhY2sgY3VycmVudCBwbHVyYWwgc3RhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUhhc2h0YWdJblBsdXJhbChlbHMpIHtcbiAgICBlbHMuZm9yRWFjaChmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgLy8gSWYgd2UncmUgZW5jb3VudGVyaW5nIGEgcGx1cmFsIGVsXG4gICAgICAgIGlmICghaXNQbHVyYWxFbGVtZW50KGVsKSAmJiAhaXNTZWxlY3RFbGVtZW50KGVsKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIC8vIEdvIGRvd24gdGhlIG9wdGlvbnMgYW5kIHNlYXJjaCBmb3IgIyBpbiBhbnkgbGl0ZXJhbCBlbGVtZW50XG4gICAgICAgIE9iamVjdC5rZXlzKGVsLm9wdGlvbnMpLmZvckVhY2goZnVuY3Rpb24gKGlkKSB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICB2YXIgb3B0ID0gZWwub3B0aW9uc1tpZF07XG4gICAgICAgICAgICAvLyBJZiB3ZSBnb3QgYSBtYXRjaCwgd2UgaGF2ZSB0byBzcGxpdCB0aGlzXG4gICAgICAgICAgICAvLyBhbmQgaW5qZWN0IGEgTnVtYmVyRWxlbWVudCBpbiB0aGUgbWlkZGxlXG4gICAgICAgICAgICB2YXIgbWF0Y2hpbmdMaXRlcmFsRWxJbmRleCA9IC0xO1xuICAgICAgICAgICAgdmFyIGxpdGVyYWxFbCA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb3B0LnZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVsXzEgPSBvcHQudmFsdWVbaV07XG4gICAgICAgICAgICAgICAgaWYgKGlzTGl0ZXJhbEVsZW1lbnQoZWxfMSkgJiYgUExVUkFMX0hBU0hUQUdfUkVHRVgudGVzdChlbF8xLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ0xpdGVyYWxFbEluZGV4ID0gaTtcbiAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbEVsID0gZWxfMTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGxpdGVyYWxFbCkge1xuICAgICAgICAgICAgICAgIHZhciBuZXdWYWx1ZSA9IGxpdGVyYWxFbC52YWx1ZS5yZXBsYWNlKFBMVVJBTF9IQVNIVEFHX1JFR0VYLCBcIiQxe1wiICsgZWwudmFsdWUgKyBcIiwgbnVtYmVyfVwiKTtcbiAgICAgICAgICAgICAgICB2YXIgbmV3RWxzID0gcGVnUGFyc2UobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIChfYSA9IG9wdC52YWx1ZSkuc3BsaWNlLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5cyhbbWF0Y2hpbmdMaXRlcmFsRWxJbmRleCwgMV0sIG5ld0VscykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsKG9wdC52YWx1ZSk7XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCB7IHBlZ1BhcnNlIH0gZnJvbSAnLi9zcmMvcGFyc2VyJztcbmltcG9ydCB7IG5vcm1hbGl6ZUhhc2h0YWdJblBsdXJhbCB9IGZyb20gJy4vc3JjL25vcm1hbGl6ZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy90eXBlcyc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9wYXJzZXInO1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlKGlucHV0LCBvcHRzKSB7XG4gICAgb3B0cyA9IF9fYXNzaWduKHsgbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsOiB0cnVlLCBzaG91bGRQYXJzZVNrZWxldG9uOiB0cnVlIH0sIChvcHRzIHx8IHt9KSk7XG4gICAgdmFyIGVscyA9IHBlZ1BhcnNlKGlucHV0LCBvcHRzKTtcbiAgICBpZiAob3B0cy5ub3JtYWxpemVIYXNodGFnSW5QbHVyYWwpIHtcbiAgICAgICAgbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsKGVscyk7XG4gICAgfVxuICAgIHJldHVybiBlbHM7XG59XG4iLCIvL1xuLy8gTWFpblxuLy9cblxuZnVuY3Rpb24gbWVtb2l6ZSAoZm4sIG9wdGlvbnMpIHtcbiAgdmFyIGNhY2hlID0gb3B0aW9ucyAmJiBvcHRpb25zLmNhY2hlXG4gICAgPyBvcHRpb25zLmNhY2hlXG4gICAgOiBjYWNoZURlZmF1bHRcblxuICB2YXIgc2VyaWFsaXplciA9IG9wdGlvbnMgJiYgb3B0aW9ucy5zZXJpYWxpemVyXG4gICAgPyBvcHRpb25zLnNlcmlhbGl6ZXJcbiAgICA6IHNlcmlhbGl6ZXJEZWZhdWx0XG5cbiAgdmFyIHN0cmF0ZWd5ID0gb3B0aW9ucyAmJiBvcHRpb25zLnN0cmF0ZWd5XG4gICAgPyBvcHRpb25zLnN0cmF0ZWd5XG4gICAgOiBzdHJhdGVneURlZmF1bHRcblxuICByZXR1cm4gc3RyYXRlZ3koZm4sIHtcbiAgICBjYWNoZTogY2FjaGUsXG4gICAgc2VyaWFsaXplcjogc2VyaWFsaXplclxuICB9KVxufVxuXG4vL1xuLy8gU3RyYXRlZ3lcbi8vXG5cbmZ1bmN0aW9uIGlzUHJpbWl0aXZlICh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ2Jvb2xlYW4nIC8vIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJzdHJpbmdcIiAndW5zYWZlJyBwcmltaXRpdmUgZm9yIG91ciBuZWVkc1xufVxuXG5mdW5jdGlvbiBtb25hZGljIChmbiwgY2FjaGUsIHNlcmlhbGl6ZXIsIGFyZykge1xuICB2YXIgY2FjaGVLZXkgPSBpc1ByaW1pdGl2ZShhcmcpID8gYXJnIDogc2VyaWFsaXplcihhcmcpXG5cbiAgdmFyIGNvbXB1dGVkVmFsdWUgPSBjYWNoZS5nZXQoY2FjaGVLZXkpXG4gIGlmICh0eXBlb2YgY29tcHV0ZWRWYWx1ZSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBjb21wdXRlZFZhbHVlID0gZm4uY2FsbCh0aGlzLCBhcmcpXG4gICAgY2FjaGUuc2V0KGNhY2hlS2V5LCBjb21wdXRlZFZhbHVlKVxuICB9XG5cbiAgcmV0dXJuIGNvbXB1dGVkVmFsdWVcbn1cblxuZnVuY3Rpb24gdmFyaWFkaWMgKGZuLCBjYWNoZSwgc2VyaWFsaXplcikge1xuICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMylcbiAgdmFyIGNhY2hlS2V5ID0gc2VyaWFsaXplcihhcmdzKVxuXG4gIHZhciBjb21wdXRlZFZhbHVlID0gY2FjaGUuZ2V0KGNhY2hlS2V5KVxuICBpZiAodHlwZW9mIGNvbXB1dGVkVmFsdWUgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgY29tcHV0ZWRWYWx1ZSA9IGZuLmFwcGx5KHRoaXMsIGFyZ3MpXG4gICAgY2FjaGUuc2V0KGNhY2hlS2V5LCBjb21wdXRlZFZhbHVlKVxuICB9XG5cbiAgcmV0dXJuIGNvbXB1dGVkVmFsdWVcbn1cblxuZnVuY3Rpb24gYXNzZW1ibGUgKGZuLCBjb250ZXh0LCBzdHJhdGVneSwgY2FjaGUsIHNlcmlhbGl6ZSkge1xuICByZXR1cm4gc3RyYXRlZ3kuYmluZChcbiAgICBjb250ZXh0LFxuICAgIGZuLFxuICAgIGNhY2hlLFxuICAgIHNlcmlhbGl6ZVxuICApXG59XG5cbmZ1bmN0aW9uIHN0cmF0ZWd5RGVmYXVsdCAoZm4sIG9wdGlvbnMpIHtcbiAgdmFyIHN0cmF0ZWd5ID0gZm4ubGVuZ3RoID09PSAxID8gbW9uYWRpYyA6IHZhcmlhZGljXG5cbiAgcmV0dXJuIGFzc2VtYmxlKFxuICAgIGZuLFxuICAgIHRoaXMsXG4gICAgc3RyYXRlZ3ksXG4gICAgb3B0aW9ucy5jYWNoZS5jcmVhdGUoKSxcbiAgICBvcHRpb25zLnNlcmlhbGl6ZXJcbiAgKVxufVxuXG5mdW5jdGlvbiBzdHJhdGVneVZhcmlhZGljIChmbiwgb3B0aW9ucykge1xuICB2YXIgc3RyYXRlZ3kgPSB2YXJpYWRpY1xuXG4gIHJldHVybiBhc3NlbWJsZShcbiAgICBmbixcbiAgICB0aGlzLFxuICAgIHN0cmF0ZWd5LFxuICAgIG9wdGlvbnMuY2FjaGUuY3JlYXRlKCksXG4gICAgb3B0aW9ucy5zZXJpYWxpemVyXG4gIClcbn1cblxuZnVuY3Rpb24gc3RyYXRlZ3lNb25hZGljIChmbiwgb3B0aW9ucykge1xuICB2YXIgc3RyYXRlZ3kgPSBtb25hZGljXG5cbiAgcmV0dXJuIGFzc2VtYmxlKFxuICAgIGZuLFxuICAgIHRoaXMsXG4gICAgc3RyYXRlZ3ksXG4gICAgb3B0aW9ucy5jYWNoZS5jcmVhdGUoKSxcbiAgICBvcHRpb25zLnNlcmlhbGl6ZXJcbiAgKVxufVxuXG4vL1xuLy8gU2VyaWFsaXplclxuLy9cblxuZnVuY3Rpb24gc2VyaWFsaXplckRlZmF1bHQgKCkge1xuICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoYXJndW1lbnRzKVxufVxuXG4vL1xuLy8gQ2FjaGVcbi8vXG5cbmZ1bmN0aW9uIE9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZSAoKSB7XG4gIHRoaXMuY2FjaGUgPSBPYmplY3QuY3JlYXRlKG51bGwpXG59XG5cbk9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZS5wcm90b3R5cGUuaGFzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gKGtleSBpbiB0aGlzLmNhY2hlKVxufVxuXG5PYmplY3RXaXRob3V0UHJvdG90eXBlQ2FjaGUucHJvdG90eXBlLmdldCA9IGZ1bmN0aW9uIChrZXkpIHtcbiAgcmV0dXJuIHRoaXMuY2FjaGVba2V5XVxufVxuXG5PYmplY3RXaXRob3V0UHJvdG90eXBlQ2FjaGUucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHRoaXMuY2FjaGVba2V5XSA9IHZhbHVlXG59XG5cbnZhciBjYWNoZURlZmF1bHQgPSB7XG4gIGNyZWF0ZTogZnVuY3Rpb24gY3JlYXRlICgpIHtcbiAgICByZXR1cm4gbmV3IE9iamVjdFdpdGhvdXRQcm90b3R5cGVDYWNoZSgpXG4gIH1cbn1cblxuLy9cbi8vIEFQSVxuLy9cblxubW9kdWxlLmV4cG9ydHMgPSBtZW1vaXplXG5tb2R1bGUuZXhwb3J0cy5zdHJhdGVnaWVzID0ge1xuICB2YXJpYWRpYzogc3RyYXRlZ3lWYXJpYWRpYyxcbiAgbW9uYWRpYzogc3RyYXRlZ3lNb25hZGljXG59XG4iLCJpbXBvcnQgeyBfX2V4dGVuZHMgfSBmcm9tIFwidHNsaWJcIjtcbmV4cG9ydCB2YXIgRXJyb3JDb2RlO1xuKGZ1bmN0aW9uIChFcnJvckNvZGUpIHtcbiAgICAvLyBXaGVuIHdlIGhhdmUgYSBwbGFjZWhvbGRlciBidXQgbm8gdmFsdWUgdG8gZm9ybWF0XG4gICAgRXJyb3JDb2RlW1wiTUlTU0lOR19WQUxVRVwiXSA9IFwiTUlTU0lOR19WQUxVRVwiO1xuICAgIC8vIFdoZW4gdmFsdWUgc3VwcGxpZWQgaXMgaW52YWxpZFxuICAgIEVycm9yQ29kZVtcIklOVkFMSURfVkFMVUVcIl0gPSBcIklOVkFMSURfVkFMVUVcIjtcbiAgICAvLyBXaGVuIHdlIG5lZWQgc3BlY2lmaWMgSW50bCBBUEkgYnV0IGl0J3Mgbm90IGF2YWlsYWJsZVxuICAgIEVycm9yQ29kZVtcIk1JU1NJTkdfSU5UTF9BUElcIl0gPSBcIk1JU1NJTkdfSU5UTF9BUElcIjtcbn0pKEVycm9yQ29kZSB8fCAoRXJyb3JDb2RlID0ge30pKTtcbnZhciBGb3JtYXRFcnJvciA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICBfX2V4dGVuZHMoRm9ybWF0RXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gRm9ybWF0RXJyb3IobXNnLCBjb2RlLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmNhbGwodGhpcywgbXNnKSB8fCB0aGlzO1xuICAgICAgICBfdGhpcy5jb2RlID0gY29kZTtcbiAgICAgICAgX3RoaXMub3JpZ2luYWxNZXNzYWdlID0gb3JpZ2luYWxNZXNzYWdlO1xuICAgICAgICByZXR1cm4gX3RoaXM7XG4gICAgfVxuICAgIEZvcm1hdEVycm9yLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIFwiW2Zvcm1hdGpzIEVycm9yOiBcIiArIHRoaXMuY29kZSArIFwiXSBcIiArIHRoaXMubWVzc2FnZTtcbiAgICB9O1xuICAgIHJldHVybiBGb3JtYXRFcnJvcjtcbn0oRXJyb3IpKTtcbmV4cG9ydCB7IEZvcm1hdEVycm9yIH07XG52YXIgSW52YWxpZFZhbHVlRXJyb3IgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgX19leHRlbmRzKEludmFsaWRWYWx1ZUVycm9yLCBfc3VwZXIpO1xuICAgIGZ1bmN0aW9uIEludmFsaWRWYWx1ZUVycm9yKHZhcmlhYmxlSWQsIHZhbHVlLCBvcHRpb25zLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiSW52YWxpZCB2YWx1ZXMgZm9yIFxcXCJcIiArIHZhcmlhYmxlSWQgKyBcIlxcXCI6IFxcXCJcIiArIHZhbHVlICsgXCJcXFwiLiBPcHRpb25zIGFyZSBcXFwiXCIgKyBPYmplY3Qua2V5cyhvcHRpb25zKS5qb2luKCdcIiwgXCInKSArIFwiXFxcIlwiLCBcIklOVkFMSURfVkFMVUVcIiAvKiBJTlZBTElEX1ZBTFVFICovLCBvcmlnaW5hbE1lc3NhZ2UpIHx8IHRoaXM7XG4gICAgfVxuICAgIHJldHVybiBJbnZhbGlkVmFsdWVFcnJvcjtcbn0oRm9ybWF0RXJyb3IpKTtcbmV4cG9ydCB7IEludmFsaWRWYWx1ZUVycm9yIH07XG52YXIgSW52YWxpZFZhbHVlVHlwZUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhJbnZhbGlkVmFsdWVUeXBlRXJyb3IsIF9zdXBlcik7XG4gICAgZnVuY3Rpb24gSW52YWxpZFZhbHVlVHlwZUVycm9yKHZhbHVlLCB0eXBlLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiVmFsdWUgZm9yIFxcXCJcIiArIHZhbHVlICsgXCJcXFwiIG11c3QgYmUgb2YgdHlwZSBcIiArIHR5cGUsIFwiSU5WQUxJRF9WQUxVRVwiIC8qIElOVkFMSURfVkFMVUUgKi8sIG9yaWdpbmFsTWVzc2FnZSkgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIEludmFsaWRWYWx1ZVR5cGVFcnJvcjtcbn0oRm9ybWF0RXJyb3IpKTtcbmV4cG9ydCB7IEludmFsaWRWYWx1ZVR5cGVFcnJvciB9O1xudmFyIE1pc3NpbmdWYWx1ZUVycm9yID0gLyoqIEBjbGFzcyAqLyAoZnVuY3Rpb24gKF9zdXBlcikge1xuICAgIF9fZXh0ZW5kcyhNaXNzaW5nVmFsdWVFcnJvciwgX3N1cGVyKTtcbiAgICBmdW5jdGlvbiBNaXNzaW5nVmFsdWVFcnJvcih2YXJpYWJsZUlkLCBvcmlnaW5hbE1lc3NhZ2UpIHtcbiAgICAgICAgcmV0dXJuIF9zdXBlci5jYWxsKHRoaXMsIFwiVGhlIGludGwgc3RyaW5nIGNvbnRleHQgdmFyaWFibGUgXFxcIlwiICsgdmFyaWFibGVJZCArIFwiXFxcIiB3YXMgbm90IHByb3ZpZGVkIHRvIHRoZSBzdHJpbmcgXFxcIlwiICsgb3JpZ2luYWxNZXNzYWdlICsgXCJcXFwiXCIsIFwiTUlTU0lOR19WQUxVRVwiIC8qIE1JU1NJTkdfVkFMVUUgKi8sIG9yaWdpbmFsTWVzc2FnZSkgfHwgdGhpcztcbiAgICB9XG4gICAgcmV0dXJuIE1pc3NpbmdWYWx1ZUVycm9yO1xufShGb3JtYXRFcnJvcikpO1xuZXhwb3J0IHsgTWlzc2luZ1ZhbHVlRXJyb3IgfTtcbiIsImltcG9ydCB7IGlzQXJndW1lbnRFbGVtZW50LCBpc0RhdGVFbGVtZW50LCBpc0RhdGVUaW1lU2tlbGV0b24sIGlzTGl0ZXJhbEVsZW1lbnQsIGlzTnVtYmVyRWxlbWVudCwgaXNOdW1iZXJTa2VsZXRvbiwgaXNQbHVyYWxFbGVtZW50LCBpc1BvdW5kRWxlbWVudCwgaXNTZWxlY3RFbGVtZW50LCBpc1RpbWVFbGVtZW50LCBpc1RhZ0VsZW1lbnQsIH0gZnJvbSAnaW50bC1tZXNzYWdlZm9ybWF0LXBhcnNlcic7XG5pbXBvcnQgeyBNaXNzaW5nVmFsdWVFcnJvciwgSW52YWxpZFZhbHVlRXJyb3IsIEZvcm1hdEVycm9yLCBJbnZhbGlkVmFsdWVUeXBlRXJyb3IsIH0gZnJvbSAnLi9lcnJvcic7XG5leHBvcnQgdmFyIFBBUlRfVFlQRTtcbihmdW5jdGlvbiAoUEFSVF9UWVBFKSB7XG4gICAgUEFSVF9UWVBFW1BBUlRfVFlQRVtcImxpdGVyYWxcIl0gPSAwXSA9IFwibGl0ZXJhbFwiO1xuICAgIFBBUlRfVFlQRVtQQVJUX1RZUEVbXCJvYmplY3RcIl0gPSAxXSA9IFwib2JqZWN0XCI7XG59KShQQVJUX1RZUEUgfHwgKFBBUlRfVFlQRSA9IHt9KSk7XG5mdW5jdGlvbiBtZXJnZUxpdGVyYWwocGFydHMpIHtcbiAgICBpZiAocGFydHMubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gcGFydHM7XG4gICAgfVxuICAgIHJldHVybiBwYXJ0cy5yZWR1Y2UoZnVuY3Rpb24gKGFsbCwgcGFydCkge1xuICAgICAgICB2YXIgbGFzdFBhcnQgPSBhbGxbYWxsLmxlbmd0aCAtIDFdO1xuICAgICAgICBpZiAoIWxhc3RQYXJ0IHx8XG4gICAgICAgICAgICBsYXN0UGFydC50eXBlICE9PSAwIC8qIGxpdGVyYWwgKi8gfHxcbiAgICAgICAgICAgIHBhcnQudHlwZSAhPT0gMCAvKiBsaXRlcmFsICovKSB7XG4gICAgICAgICAgICBhbGwucHVzaChwYXJ0KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGxhc3RQYXJ0LnZhbHVlICs9IHBhcnQudmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFsbDtcbiAgICB9LCBbXSk7XG59XG5leHBvcnQgZnVuY3Rpb24gaXNGb3JtYXRYTUxFbGVtZW50Rm4oZWwpIHtcbiAgICByZXR1cm4gdHlwZW9mIGVsID09PSAnZnVuY3Rpb24nO1xufVxuLy8gVE9ETyhza2VsZXRvbik6IGFkZCBza2VsZXRvbiBzdXBwb3J0XG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0VG9QYXJ0cyhlbHMsIGxvY2FsZXMsIGZvcm1hdHRlcnMsIGZvcm1hdHMsIHZhbHVlcywgY3VycmVudFBsdXJhbFZhbHVlLCBcbi8vIEZvciBkZWJ1Z2dpbmdcbm9yaWdpbmFsTWVzc2FnZSkge1xuICAgIC8vIEhvdCBwYXRoIGZvciBzdHJhaWdodCBzaW1wbGUgbXNnIHRyYW5zbGF0aW9uc1xuICAgIGlmIChlbHMubGVuZ3RoID09PSAxICYmIGlzTGl0ZXJhbEVsZW1lbnQoZWxzWzBdKSkge1xuICAgICAgICByZXR1cm4gW1xuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIHR5cGU6IDAgLyogbGl0ZXJhbCAqLyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogZWxzWzBdLnZhbHVlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgXTtcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMCwgZWxzXzEgPSBlbHM7IF9pIDwgZWxzXzEubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIHZhciBlbCA9IGVsc18xW19pXTtcbiAgICAgICAgLy8gRXhpdCBlYXJseSBmb3Igc3RyaW5nIHBhcnRzLlxuICAgICAgICBpZiAoaXNMaXRlcmFsRWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGVsLnZhbHVlLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICAvLyBUT0RPOiBzaG91bGQgdGhpcyBwYXJ0IGJlIGxpdGVyYWwgdHlwZT9cbiAgICAgICAgLy8gUmVwbGFjZSBgI2AgaW4gcGx1cmFsIHJ1bGVzIHdpdGggdGhlIGFjdHVhbCBudW1lcmljIHZhbHVlLlxuICAgICAgICBpZiAoaXNQb3VuZEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGN1cnJlbnRQbHVyYWxWYWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IDAgLyogbGl0ZXJhbCAqLyxcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnMuZ2V0TnVtYmVyRm9ybWF0KGxvY2FsZXMpLmZvcm1hdChjdXJyZW50UGx1cmFsVmFsdWUpLFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHZhck5hbWUgPSBlbC52YWx1ZTtcbiAgICAgICAgLy8gRW5mb3JjZSB0aGF0IGFsbCByZXF1aXJlZCB2YWx1ZXMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBjYWxsZXIuXG4gICAgICAgIGlmICghKHZhbHVlcyAmJiB2YXJOYW1lIGluIHZhbHVlcykpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBNaXNzaW5nVmFsdWVFcnJvcih2YXJOYW1lLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICB9XG4gICAgICAgIHZhciB2YWx1ZSA9IHZhbHVlc1t2YXJOYW1lXTtcbiAgICAgICAgaWYgKGlzQXJndW1lbnRFbGVtZW50KGVsKSkge1xuICAgICAgICAgICAgaWYgKCF2YWx1ZSB8fCB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZSA9XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgPyBTdHJpbmcodmFsdWUpXG4gICAgICAgICAgICAgICAgICAgICAgICA6ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xuICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgPyAwIC8qIGxpdGVyYWwgKi8gOiAxIC8qIG9iamVjdCAqLyxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFJlY3Vyc2l2ZWx5IGZvcm1hdCBwbHVyYWwgYW5kIHNlbGVjdCBwYXJ0cycgb3B0aW9uIOKAlCB3aGljaCBjYW4gYmUgYVxuICAgICAgICAvLyBuZXN0ZWQgcGF0dGVybiBzdHJ1Y3R1cmUuIFRoZSBjaG9vc2luZyBvZiB0aGUgb3B0aW9uIHRvIHVzZSBpc1xuICAgICAgICAvLyBhYnN0cmFjdGVkLWJ5IGFuZCBkZWxlZ2F0ZWQtdG8gdGhlIHBhcnQgaGVscGVyIG9iamVjdC5cbiAgICAgICAgaWYgKGlzRGF0ZUVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgc3R5bGUgPSB0eXBlb2YgZWwuc3R5bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBmb3JtYXRzLmRhdGVbZWwuc3R5bGVdXG4gICAgICAgICAgICAgICAgOiBpc0RhdGVUaW1lU2tlbGV0b24oZWwuc3R5bGUpXG4gICAgICAgICAgICAgICAgICAgID8gZWwuc3R5bGUucGFyc2VkT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnNcbiAgICAgICAgICAgICAgICAgICAgLmdldERhdGVUaW1lRm9ybWF0KGxvY2FsZXMsIHN0eWxlKVxuICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHZhbHVlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzVGltZUVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgc3R5bGUgPSB0eXBlb2YgZWwuc3R5bGUgPT09ICdzdHJpbmcnXG4gICAgICAgICAgICAgICAgPyBmb3JtYXRzLnRpbWVbZWwuc3R5bGVdXG4gICAgICAgICAgICAgICAgOiBpc0RhdGVUaW1lU2tlbGV0b24oZWwuc3R5bGUpXG4gICAgICAgICAgICAgICAgICAgID8gZWwuc3R5bGUucGFyc2VkT3B0aW9uc1xuICAgICAgICAgICAgICAgICAgICA6IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICB0eXBlOiAwIC8qIGxpdGVyYWwgKi8sXG4gICAgICAgICAgICAgICAgdmFsdWU6IGZvcm1hdHRlcnNcbiAgICAgICAgICAgICAgICAgICAgLmdldERhdGVUaW1lRm9ybWF0KGxvY2FsZXMsIHN0eWxlKVxuICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KHZhbHVlKSxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGlzTnVtYmVyRWxlbWVudChlbCkpIHtcbiAgICAgICAgICAgIHZhciBzdHlsZSA9IHR5cGVvZiBlbC5zdHlsZSA9PT0gJ3N0cmluZydcbiAgICAgICAgICAgICAgICA/IGZvcm1hdHMubnVtYmVyW2VsLnN0eWxlXVxuICAgICAgICAgICAgICAgIDogaXNOdW1iZXJTa2VsZXRvbihlbC5zdHlsZSlcbiAgICAgICAgICAgICAgICAgICAgPyBlbC5zdHlsZS5wYXJzZWRPcHRpb25zXG4gICAgICAgICAgICAgICAgICAgIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgaWYgKHN0eWxlICYmIHN0eWxlLnNjYWxlKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPVxuICAgICAgICAgICAgICAgICAgICB2YWx1ZSAqXG4gICAgICAgICAgICAgICAgICAgICAgICAoc3R5bGUuc2NhbGUgfHwgMSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgdHlwZTogMCAvKiBsaXRlcmFsICovLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBmb3JtYXR0ZXJzXG4gICAgICAgICAgICAgICAgICAgIC5nZXROdW1iZXJGb3JtYXQobG9jYWxlcywgc3R5bGUpXG4gICAgICAgICAgICAgICAgICAgIC5mb3JtYXQodmFsdWUpLFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXNUYWdFbGVtZW50KGVsKSkge1xuICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gZWwuY2hpbGRyZW4sIHZhbHVlXzEgPSBlbC52YWx1ZTtcbiAgICAgICAgICAgIHZhciBmb3JtYXRGbiA9IHZhbHVlc1t2YWx1ZV8xXTtcbiAgICAgICAgICAgIGlmICghaXNGb3JtYXRYTUxFbGVtZW50Rm4oZm9ybWF0Rm4pKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRWYWx1ZVR5cGVFcnJvcih2YWx1ZV8xLCAnZnVuY3Rpb24nLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHBhcnRzID0gZm9ybWF0VG9QYXJ0cyhjaGlsZHJlbiwgbG9jYWxlcywgZm9ybWF0dGVycywgZm9ybWF0cywgdmFsdWVzLCBjdXJyZW50UGx1cmFsVmFsdWUpO1xuICAgICAgICAgICAgdmFyIGNodW5rcyA9IGZvcm1hdEZuKHBhcnRzLm1hcChmdW5jdGlvbiAocCkgeyByZXR1cm4gcC52YWx1ZTsgfSkpO1xuICAgICAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KGNodW5rcykpIHtcbiAgICAgICAgICAgICAgICBjaHVua3MgPSBbY2h1bmtzXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoLmFwcGx5KHJlc3VsdCwgY2h1bmtzLm1hcChmdW5jdGlvbiAoYykge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIHR5cGU6IHR5cGVvZiBjID09PSAnc3RyaW5nJyA/IDAgLyogbGl0ZXJhbCAqLyA6IDEgLyogb2JqZWN0ICovLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYyxcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1NlbGVjdEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgb3B0ID0gZWwub3B0aW9uc1t2YWx1ZV0gfHwgZWwub3B0aW9ucy5vdGhlcjtcbiAgICAgICAgICAgIGlmICghb3B0KSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEludmFsaWRWYWx1ZUVycm9yKGVsLnZhbHVlLCB2YWx1ZSwgT2JqZWN0LmtleXMoZWwub3B0aW9ucyksIG9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaC5hcHBseShyZXN1bHQsIGZvcm1hdFRvUGFydHMob3B0LnZhbHVlLCBsb2NhbGVzLCBmb3JtYXR0ZXJzLCBmb3JtYXRzLCB2YWx1ZXMpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpc1BsdXJhbEVsZW1lbnQoZWwpKSB7XG4gICAgICAgICAgICB2YXIgb3B0ID0gZWwub3B0aW9uc1tcIj1cIiArIHZhbHVlXTtcbiAgICAgICAgICAgIGlmICghb3B0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFJbnRsLlBsdXJhbFJ1bGVzKSB7XG4gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBGb3JtYXRFcnJvcihcIkludGwuUGx1cmFsUnVsZXMgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGlzIGVudmlyb25tZW50LlxcblRyeSBwb2x5ZmlsbGluZyBpdCB1c2luZyBcXFwiQGZvcm1hdGpzL2ludGwtcGx1cmFscnVsZXNcXFwiXFxuXCIsIFwiTUlTU0lOR19JTlRMX0FQSVwiIC8qIE1JU1NJTkdfSU5UTF9BUEkgKi8sIG9yaWdpbmFsTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZhciBydWxlID0gZm9ybWF0dGVyc1xuICAgICAgICAgICAgICAgICAgICAuZ2V0UGx1cmFsUnVsZXMobG9jYWxlcywgeyB0eXBlOiBlbC5wbHVyYWxUeXBlIH0pXG4gICAgICAgICAgICAgICAgICAgIC5zZWxlY3QodmFsdWUgLSAoZWwub2Zmc2V0IHx8IDApKTtcbiAgICAgICAgICAgICAgICBvcHQgPSBlbC5vcHRpb25zW3J1bGVdIHx8IGVsLm9wdGlvbnMub3RoZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW9wdCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbnZhbGlkVmFsdWVFcnJvcihlbC52YWx1ZSwgdmFsdWUsIE9iamVjdC5rZXlzKGVsLm9wdGlvbnMpLCBvcmlnaW5hbE1lc3NhZ2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzdWx0LnB1c2guYXBwbHkocmVzdWx0LCBmb3JtYXRUb1BhcnRzKG9wdC52YWx1ZSwgbG9jYWxlcywgZm9ybWF0dGVycywgZm9ybWF0cywgdmFsdWVzLCB2YWx1ZSAtIChlbC5vZmZzZXQgfHwgMCkpKTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBtZXJnZUxpdGVyYWwocmVzdWx0KTtcbn1cbiIsIi8qXG5Db3B5cmlnaHQgKGMpIDIwMTQsIFlhaG9vISBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXG5Db3B5cmlnaHRzIGxpY2Vuc2VkIHVuZGVyIHRoZSBOZXcgQlNEIExpY2Vuc2UuXG5TZWUgdGhlIGFjY29tcGFueWluZyBMSUNFTlNFIGZpbGUgZm9yIHRlcm1zLlxuKi9cbmltcG9ydCB7IF9fYXNzaWduLCBfX3NwcmVhZEFycmF5cyB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0IHsgcGFyc2UgfSBmcm9tICdpbnRsLW1lc3NhZ2Vmb3JtYXQtcGFyc2VyJztcbmltcG9ydCAqIGFzIG1lbW9pemUgZnJvbSAnZmFzdC1tZW1vaXplJztcbmltcG9ydCB7IGZvcm1hdFRvUGFydHMsIH0gZnJvbSAnLi9mb3JtYXR0ZXJzJztcbi8vIC0tIE1lc3NhZ2VGb3JtYXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbmZ1bmN0aW9uIG1lcmdlQ29uZmlnKGMxLCBjMikge1xuICAgIGlmICghYzIpIHtcbiAgICAgICAgcmV0dXJuIGMxO1xuICAgIH1cbiAgICByZXR1cm4gX19hc3NpZ24oX19hc3NpZ24oX19hc3NpZ24oe30sIChjMSB8fCB7fSkpLCAoYzIgfHwge30pKSwgT2JqZWN0LmtleXMoYzEpLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBrKSB7XG4gICAgICAgIGFsbFtrXSA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBjMVtrXSksIChjMltrXSB8fCB7fSkpO1xuICAgICAgICByZXR1cm4gYWxsO1xuICAgIH0sIHt9KSk7XG59XG5mdW5jdGlvbiBtZXJnZUNvbmZpZ3MoZGVmYXVsdENvbmZpZywgY29uZmlncykge1xuICAgIGlmICghY29uZmlncykge1xuICAgICAgICByZXR1cm4gZGVmYXVsdENvbmZpZztcbiAgICB9XG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKGRlZmF1bHRDb25maWcpLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBrKSB7XG4gICAgICAgIGFsbFtrXSA9IG1lcmdlQ29uZmlnKGRlZmF1bHRDb25maWdba10sIGNvbmZpZ3Nba10pO1xuICAgICAgICByZXR1cm4gYWxsO1xuICAgIH0sIF9fYXNzaWduKHt9LCBkZWZhdWx0Q29uZmlnKSk7XG59XG5mdW5jdGlvbiBjcmVhdGVGYXN0TWVtb2l6ZUNhY2hlKHN0b3JlKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgICAgY3JlYXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGhhczogZnVuY3Rpb24gKGtleSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ga2V5IGluIHN0b3JlO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoa2V5KSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBzdG9yZVtrZXldO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgc2V0OiBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBzdG9yZVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfTtcbn1cbi8vIEB0cy1pZ25vcmUgdGhpcyBpcyB0byBkZWFsIHdpdGggcm9sbHVwJ3MgZGVmYXVsdCBpbXBvcnQgc2hlbmFuaWdhbnNcbnZhciBfbWVtb2l6ZUludGwgPSBtZW1vaXplLmRlZmF1bHQgfHwgbWVtb2l6ZTtcbnZhciBtZW1vaXplSW50bCA9IF9tZW1vaXplSW50bDtcbmZ1bmN0aW9uIGNyZWF0ZURlZmF1bHRGb3JtYXR0ZXJzKGNhY2hlKSB7XG4gICAgaWYgKGNhY2hlID09PSB2b2lkIDApIHsgY2FjaGUgPSB7XG4gICAgICAgIG51bWJlcjoge30sXG4gICAgICAgIGRhdGVUaW1lOiB7fSxcbiAgICAgICAgcGx1cmFsUnVsZXM6IHt9LFxuICAgIH07IH1cbiAgICByZXR1cm4ge1xuICAgICAgICBnZXROdW1iZXJGb3JtYXQ6IG1lbW9pemVJbnRsKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIHZhciBhcmdzID0gW107XG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDA7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgICAgICAgIGFyZ3NbX2ldID0gYXJndW1lbnRzW19pXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBuZXcgKChfYSA9IEludGwuTnVtYmVyRm9ybWF0KS5iaW5kLmFwcGx5KF9hLCBfX3NwcmVhZEFycmF5cyhbdm9pZCAwXSwgYXJncykpKSgpO1xuICAgICAgICB9LCB7XG4gICAgICAgICAgICBjYWNoZTogY3JlYXRlRmFzdE1lbW9pemVDYWNoZShjYWNoZS5udW1iZXIpLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IG1lbW9pemVJbnRsLnN0cmF0ZWdpZXMudmFyaWFkaWMsXG4gICAgICAgIH0pLFxuICAgICAgICBnZXREYXRlVGltZUZvcm1hdDogbWVtb2l6ZUludGwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyAoKF9hID0gSW50bC5EYXRlVGltZUZvcm1hdCkuYmluZC5hcHBseShfYSwgX19zcHJlYWRBcnJheXMoW3ZvaWQgMF0sIGFyZ3MpKSkoKTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgY2FjaGU6IGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoY2FjaGUuZGF0ZVRpbWUpLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IG1lbW9pemVJbnRsLnN0cmF0ZWdpZXMudmFyaWFkaWMsXG4gICAgICAgIH0pLFxuICAgICAgICBnZXRQbHVyYWxSdWxlczogbWVtb2l6ZUludGwoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyAoKF9hID0gSW50bC5QbHVyYWxSdWxlcykuYmluZC5hcHBseShfYSwgX19zcHJlYWRBcnJheXMoW3ZvaWQgMF0sIGFyZ3MpKSkoKTtcbiAgICAgICAgfSwge1xuICAgICAgICAgICAgY2FjaGU6IGNyZWF0ZUZhc3RNZW1vaXplQ2FjaGUoY2FjaGUucGx1cmFsUnVsZXMpLFxuICAgICAgICAgICAgc3RyYXRlZ3k6IG1lbW9pemVJbnRsLnN0cmF0ZWdpZXMudmFyaWFkaWMsXG4gICAgICAgIH0pLFxuICAgIH07XG59XG52YXIgSW50bE1lc3NhZ2VGb3JtYXQgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gSW50bE1lc3NhZ2VGb3JtYXQobWVzc2FnZSwgbG9jYWxlcywgb3ZlcnJpZGVGb3JtYXRzLCBvcHRzKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmIChsb2NhbGVzID09PSB2b2lkIDApIHsgbG9jYWxlcyA9IEludGxNZXNzYWdlRm9ybWF0LmRlZmF1bHRMb2NhbGU7IH1cbiAgICAgICAgdGhpcy5mb3JtYXR0ZXJDYWNoZSA9IHtcbiAgICAgICAgICAgIG51bWJlcjoge30sXG4gICAgICAgICAgICBkYXRlVGltZToge30sXG4gICAgICAgICAgICBwbHVyYWxSdWxlczoge30sXG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZm9ybWF0ID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICAgICAgICAgICAgdmFyIHBhcnRzID0gX3RoaXMuZm9ybWF0VG9QYXJ0cyh2YWx1ZXMpO1xuICAgICAgICAgICAgLy8gSG90IHBhdGggZm9yIHN0cmFpZ2h0IHNpbXBsZSBtc2cgdHJhbnNsYXRpb25zXG4gICAgICAgICAgICBpZiAocGFydHMubGVuZ3RoID09PSAxKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHBhcnRzWzBdLnZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIHJlc3VsdCA9IHBhcnRzLnJlZHVjZShmdW5jdGlvbiAoYWxsLCBwYXJ0KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFhbGwubGVuZ3RoIHx8XG4gICAgICAgICAgICAgICAgICAgIHBhcnQudHlwZSAhPT0gMCAvKiBsaXRlcmFsICovIHx8XG4gICAgICAgICAgICAgICAgICAgIHR5cGVvZiBhbGxbYWxsLmxlbmd0aCAtIDFdICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgICAgICAgICBhbGwucHVzaChwYXJ0LnZhbHVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIGFsbFthbGwubGVuZ3RoIC0gMV0gKz0gcGFydC52YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgcmV0dXJuIGFsbDtcbiAgICAgICAgICAgIH0sIFtdKTtcbiAgICAgICAgICAgIGlmIChyZXN1bHQubGVuZ3RoIDw9IDEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0WzBdIHx8ICcnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5mb3JtYXRUb1BhcnRzID0gZnVuY3Rpb24gKHZhbHVlcykge1xuICAgICAgICAgICAgcmV0dXJuIGZvcm1hdFRvUGFydHMoX3RoaXMuYXN0LCBfdGhpcy5sb2NhbGVzLCBfdGhpcy5mb3JtYXR0ZXJzLCBfdGhpcy5mb3JtYXRzLCB2YWx1ZXMsIHVuZGVmaW5lZCwgX3RoaXMubWVzc2FnZSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMucmVzb2x2ZWRPcHRpb25zID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gKHtcbiAgICAgICAgICAgIGxvY2FsZTogSW50bC5OdW1iZXJGb3JtYXQuc3VwcG9ydGVkTG9jYWxlc09mKF90aGlzLmxvY2FsZXMpWzBdLFxuICAgICAgICB9KTsgfTtcbiAgICAgICAgdGhpcy5nZXRBc3QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBfdGhpcy5hc3Q7IH07XG4gICAgICAgIGlmICh0eXBlb2YgbWVzc2FnZSA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIHRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7XG4gICAgICAgICAgICBpZiAoIUludGxNZXNzYWdlRm9ybWF0Ll9fcGFyc2UpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdJbnRsTWVzc2FnZUZvcm1hdC5fX3BhcnNlIG11c3QgYmUgc2V0IHRvIHByb2Nlc3MgYG1lc3NhZ2VgIG9mIHR5cGUgYHN0cmluZ2AnKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIFBhcnNlIHN0cmluZyBtZXNzYWdlcyBpbnRvIGFuIEFTVC5cbiAgICAgICAgICAgIHRoaXMuYXN0ID0gSW50bE1lc3NhZ2VGb3JtYXQuX19wYXJzZShtZXNzYWdlLCB7XG4gICAgICAgICAgICAgICAgbm9ybWFsaXplSGFzaHRhZ0luUGx1cmFsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBpZ25vcmVUYWc6IG9wdHMgPT09IG51bGwgfHwgb3B0cyA9PT0gdm9pZCAwID8gdm9pZCAwIDogb3B0cy5pZ25vcmVUYWcsXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYXN0ID0gbWVzc2FnZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkodGhpcy5hc3QpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBIG1lc3NhZ2UgbXVzdCBiZSBwcm92aWRlZCBhcyBhIFN0cmluZyBvciBBU1QuJyk7XG4gICAgICAgIH1cbiAgICAgICAgLy8gQ3JlYXRlcyBhIG5ldyBvYmplY3Qgd2l0aCB0aGUgc3BlY2lmaWVkIGBmb3JtYXRzYCBtZXJnZWQgd2l0aCB0aGUgZGVmYXVsdFxuICAgICAgICAvLyBmb3JtYXRzLlxuICAgICAgICB0aGlzLmZvcm1hdHMgPSBtZXJnZUNvbmZpZ3MoSW50bE1lc3NhZ2VGb3JtYXQuZm9ybWF0cywgb3ZlcnJpZGVGb3JtYXRzKTtcbiAgICAgICAgLy8gRGVmaW5lZCBmaXJzdCBiZWNhdXNlIGl0J3MgdXNlZCB0byBidWlsZCB0aGUgZm9ybWF0IHBhdHRlcm4uXG4gICAgICAgIHRoaXMubG9jYWxlcyA9IGxvY2FsZXM7XG4gICAgICAgIHRoaXMuZm9ybWF0dGVycyA9XG4gICAgICAgICAgICAob3B0cyAmJiBvcHRzLmZvcm1hdHRlcnMpIHx8IGNyZWF0ZURlZmF1bHRGb3JtYXR0ZXJzKHRoaXMuZm9ybWF0dGVyQ2FjaGUpO1xuICAgIH1cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoSW50bE1lc3NhZ2VGb3JtYXQsIFwiZGVmYXVsdExvY2FsZVwiLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgaWYgKCFJbnRsTWVzc2FnZUZvcm1hdC5tZW1vaXplZERlZmF1bHRMb2NhbGUpIHtcbiAgICAgICAgICAgICAgICBJbnRsTWVzc2FnZUZvcm1hdC5tZW1vaXplZERlZmF1bHRMb2NhbGUgPSBuZXcgSW50bC5OdW1iZXJGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gSW50bE1lc3NhZ2VGb3JtYXQubWVtb2l6ZWREZWZhdWx0TG9jYWxlO1xuICAgICAgICB9LFxuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiB0cnVlXG4gICAgfSk7XG4gICAgSW50bE1lc3NhZ2VGb3JtYXQubWVtb2l6ZWREZWZhdWx0TG9jYWxlID0gbnVsbDtcbiAgICBJbnRsTWVzc2FnZUZvcm1hdC5fX3BhcnNlID0gcGFyc2U7XG4gICAgLy8gRGVmYXVsdCBmb3JtYXQgb3B0aW9ucyB1c2VkIGFzIHRoZSBwcm90b3R5cGUgb2YgdGhlIGBmb3JtYXRzYCBwcm92aWRlZCB0byB0aGVcbiAgICAvLyBjb25zdHJ1Y3Rvci4gVGhlc2UgYXJlIHVzZWQgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGludGVybmFsIEludGwuTnVtYmVyRm9ybWF0XG4gICAgLy8gYW5kIEludGwuRGF0ZVRpbWVGb3JtYXQgaW5zdGFuY2VzLlxuICAgIEludGxNZXNzYWdlRm9ybWF0LmZvcm1hdHMgPSB7XG4gICAgICAgIG51bWJlcjoge1xuICAgICAgICAgICAgY3VycmVuY3k6IHtcbiAgICAgICAgICAgICAgICBzdHlsZTogJ2N1cnJlbmN5JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBwZXJjZW50OiB7XG4gICAgICAgICAgICAgICAgc3R5bGU6ICdwZXJjZW50JyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIGRhdGU6IHtcbiAgICAgICAgICAgIHNob3J0OiB7XG4gICAgICAgICAgICAgICAgbW9udGg6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICBkYXk6ICdudW1lcmljJyxcbiAgICAgICAgICAgICAgICB5ZWFyOiAnMi1kaWdpdCcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVkaXVtOiB7XG4gICAgICAgICAgICAgICAgbW9udGg6ICdzaG9ydCcsXG4gICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgICAgICBtb250aDogJ2xvbmcnLFxuICAgICAgICAgICAgICAgIGRheTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIHllYXI6ICdudW1lcmljJyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmdWxsOiB7XG4gICAgICAgICAgICAgICAgd2Vla2RheTogJ2xvbmcnLFxuICAgICAgICAgICAgICAgIG1vbnRoOiAnbG9uZycsXG4gICAgICAgICAgICAgICAgZGF5OiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgeWVhcjogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICAgICAgdGltZToge1xuICAgICAgICAgICAgc2hvcnQ6IHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbWVkaXVtOiB7XG4gICAgICAgICAgICAgICAgaG91cjogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIG1pbnV0ZTogJ251bWVyaWMnLFxuICAgICAgICAgICAgICAgIHNlY29uZDogJ251bWVyaWMnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGxvbmc6IHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lOiAnc2hvcnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZ1bGw6IHtcbiAgICAgICAgICAgICAgICBob3VyOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgbWludXRlOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgc2Vjb25kOiAnbnVtZXJpYycsXG4gICAgICAgICAgICAgICAgdGltZVpvbmVOYW1lOiAnc2hvcnQnLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiBJbnRsTWVzc2FnZUZvcm1hdDtcbn0oKSk7XG5leHBvcnQgeyBJbnRsTWVzc2FnZUZvcm1hdCB9O1xuIiwiLypcbkNvcHlyaWdodCAoYykgMjAxNCwgWWFob28hIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC5cbkNvcHlyaWdodHMgbGljZW5zZWQgdW5kZXIgdGhlIE5ldyBCU0QgTGljZW5zZS5cblNlZSB0aGUgYWNjb21wYW55aW5nIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMuXG4qL1xuaW1wb3J0IHsgSW50bE1lc3NhZ2VGb3JtYXQgfSBmcm9tICcuL3NyYy9jb3JlJztcbmV4cG9ydCAqIGZyb20gJy4vc3JjL2Zvcm1hdHRlcnMnO1xuZXhwb3J0ICogZnJvbSAnLi9zcmMvY29yZSc7XG5leHBvcnQgKiBmcm9tICcuL3NyYy9lcnJvcic7XG5leHBvcnQgZGVmYXVsdCBJbnRsTWVzc2FnZUZvcm1hdDtcbiJdLCJuYW1lcyI6WyJFcnJvckNvZGUiLCJQQVJUX1RZUEUiLCJtZW1vaXplLmRlZmF1bHQiLCJtZW1vaXplIl0sIm1hcHBpbmdzIjoiOzs7Ozs7SUFBQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0FBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7QUFDQTtJQUNBLElBQUksYUFBYSxHQUFHLFNBQVMsQ0FBQyxFQUFFLENBQUMsRUFBRTtJQUNuQyxJQUFJLGFBQWEsR0FBRyxNQUFNLENBQUMsY0FBYztJQUN6QyxTQUFTLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxZQUFZLEtBQUssSUFBSSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDcEYsUUFBUSxVQUFVLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDMUcsSUFBSSxPQUFPLGFBQWEsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ0Y7SUFDTyxTQUFTLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFO0lBQ2hDLElBQUksSUFBSSxPQUFPLENBQUMsS0FBSyxVQUFVLElBQUksQ0FBQyxLQUFLLElBQUk7SUFDN0MsUUFBUSxNQUFNLElBQUksU0FBUyxDQUFDLHNCQUFzQixHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRywrQkFBK0IsQ0FBQyxDQUFDO0lBQ2xHLElBQUksYUFBYSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLFNBQVMsRUFBRSxHQUFHLEVBQUUsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsRUFBRTtJQUMzQyxJQUFJLENBQUMsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxLQUFLLElBQUksR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxTQUFTLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxJQUFJLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDekYsQ0FBQztBQUNEO0lBQ08sSUFBSSxRQUFRLEdBQUcsV0FBVztJQUNqQyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLFNBQVMsUUFBUSxDQUFDLENBQUMsRUFBRTtJQUNyRCxRQUFRLEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQzdELFlBQVksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM3QixZQUFZLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3pGLFNBQVM7SUFDVCxRQUFRLE9BQU8sQ0FBQyxDQUFDO0lBQ2pCLE1BQUs7SUFDTCxJQUFJLE9BQU8sUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDM0MsRUFBQztBQWtIRDtJQUNBO0lBQ08sU0FBUyxjQUFjLEdBQUc7SUFDakMsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUM7SUFDeEYsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUU7SUFDcEQsUUFBUSxLQUFLLElBQUksQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFO0lBQ3pFLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4QixJQUFJLE9BQU8sQ0FBQyxDQUFDO0lBQ2I7O0lDbEtPLElBQUksSUFBSSxDQUFDO0lBQ2hCLENBQUMsVUFBVSxJQUFJLEVBQUU7SUFDakI7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUMxQztJQUNBO0lBQ0E7SUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQzVDO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDeEM7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE1BQU0sQ0FBQztJQUNwQztJQUNBO0lBQ0E7SUFDQSxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3BDO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxRQUFRLENBQUM7SUFDeEM7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUN4QztJQUNBO0lBQ0E7SUFDQTtJQUNBLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxPQUFPLENBQUM7SUFDdEM7SUFDQTtJQUNBO0lBQ0EsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEtBQUssQ0FBQztJQUNsQyxDQUFDLEVBQUUsSUFBSSxLQUFLLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2pCLElBQUksYUFBYSxDQUFDO0lBQ3pCLENBQUMsVUFBVSxhQUFhLEVBQUU7SUFDMUIsSUFBSSxhQUFhLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLFFBQVEsQ0FBQztJQUMxRCxJQUFJLGFBQWEsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsVUFBVSxDQUFDO0lBQzlELENBQUMsRUFBRSxhQUFhLEtBQUssYUFBYSxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDMUM7SUFDQTtJQUNBO0lBQ08sU0FBUyxnQkFBZ0IsQ0FBQyxFQUFFLEVBQUU7SUFDckMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUNwQyxDQUFDO0lBQ00sU0FBUyxpQkFBaUIsQ0FBQyxFQUFFLEVBQUU7SUFDdEMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUNyQyxDQUFDO0lBQ00sU0FBUyxlQUFlLENBQUMsRUFBRSxFQUFFO0lBQ3BDLElBQUksT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUNNLFNBQVMsYUFBYSxDQUFDLEVBQUUsRUFBRTtJQUNsQyxJQUFJLE9BQU8sRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUFDTSxTQUFTLGFBQWEsQ0FBQyxFQUFFLEVBQUU7SUFDbEMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQztJQUNqQyxDQUFDO0lBQ00sU0FBUyxlQUFlLENBQUMsRUFBRSxFQUFFO0lBQ3BDLElBQUksT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxNQUFNLENBQUM7SUFDbkMsQ0FBQztJQUNNLFNBQVMsZUFBZSxDQUFDLEVBQUUsRUFBRTtJQUNwQyxJQUFJLE9BQU8sRUFBRSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ25DLENBQUM7SUFDTSxTQUFTLGNBQWMsQ0FBQyxFQUFFLEVBQUU7SUFDbkMsSUFBSSxPQUFPLEVBQUUsQ0FBQyxJQUFJLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQztJQUNsQyxDQUFDO0lBQ00sU0FBUyxZQUFZLENBQUMsRUFBRSxFQUFFO0lBQ2pDLElBQUksT0FBTyxFQUFFLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUM7SUFDaEMsQ0FBQztJQUNNLFNBQVMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFO0lBQ3JDLElBQUksT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLE9BQU8sRUFBRSxLQUFLLFFBQVEsSUFBSSxFQUFFLENBQUMsSUFBSSxLQUFLLENBQUMsY0FBYyxDQUFDO0lBQzFFLENBQUM7SUFDTSxTQUFTLGtCQUFrQixDQUFDLEVBQUUsRUFBRTtJQUN2QyxJQUFJLE9BQU8sQ0FBQyxFQUFFLEVBQUUsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLElBQUksRUFBRSxDQUFDLElBQUksS0FBSyxDQUFDLGdCQUFnQixDQUFDO0lBQzVFOztJQy9FQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsSUFBSSxlQUFlLEdBQUcsMktBQTJLLENBQUM7SUFDbE07SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ08sU0FBUyxxQkFBcUIsQ0FBQyxRQUFRLEVBQUU7SUFDaEQsSUFBSSxJQUFJLE1BQU0sR0FBRyxFQUFFLENBQUM7SUFDcEIsSUFBSSxRQUFRLENBQUMsT0FBTyxDQUFDLGVBQWUsRUFBRSxVQUFVLEtBQUssRUFBRTtJQUN2RCxRQUFRLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUM7SUFDL0IsUUFBUSxRQUFRLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDeEI7SUFDQSxZQUFZLEtBQUssR0FBRztJQUNwQixnQkFBZ0IsTUFBTSxDQUFDLEdBQUcsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLE1BQU0sR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDakYsZ0JBQWdCLE1BQU07SUFDdEI7SUFDQSxZQUFZLEtBQUssR0FBRztJQUNwQixnQkFBZ0IsTUFBTSxDQUFDLElBQUksR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLFNBQVMsR0FBRyxTQUFTLENBQUM7SUFDaEUsZ0JBQWdCLE1BQU07SUFDdEIsWUFBWSxLQUFLLEdBQUcsQ0FBQztJQUNyQixZQUFZLEtBQUssR0FBRyxDQUFDO0lBQ3JCLFlBQVksS0FBSyxHQUFHLENBQUM7SUFDckIsWUFBWSxLQUFLLEdBQUc7SUFDcEIsZ0JBQWdCLE1BQU0sSUFBSSxVQUFVLENBQUMsOERBQThELENBQUMsQ0FBQztJQUNyRztJQUNBLFlBQVksS0FBSyxHQUFHLENBQUM7SUFDckIsWUFBWSxLQUFLLEdBQUc7SUFDcEIsZ0JBQWdCLE1BQU0sSUFBSSxVQUFVLENBQUMsNENBQTRDLENBQUMsQ0FBQztJQUNuRjtJQUNBLFlBQVksS0FBSyxHQUFHLENBQUM7SUFDckIsWUFBWSxLQUFLLEdBQUc7SUFDcEIsZ0JBQWdCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzFGLGdCQUFnQixNQUFNO0lBQ3RCO0lBQ0EsWUFBWSxLQUFLLEdBQUcsQ0FBQztJQUNyQixZQUFZLEtBQUssR0FBRztJQUNwQixnQkFBZ0IsTUFBTSxJQUFJLFVBQVUsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFDO0lBQ2hGLFlBQVksS0FBSyxHQUFHO0lBQ3BCLGdCQUFnQixNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM3RCxnQkFBZ0IsTUFBTTtJQUN0QixZQUFZLEtBQUssR0FBRyxDQUFDO0lBQ3JCLFlBQVksS0FBSyxHQUFHLENBQUM7SUFDckIsWUFBWSxLQUFLLEdBQUc7SUFDcEIsZ0JBQWdCLE1BQU0sSUFBSSxVQUFVLENBQUMsMkRBQTJELENBQUMsQ0FBQztJQUNsRztJQUNBLFlBQVksS0FBSyxHQUFHO0lBQ3BCLGdCQUFnQixNQUFNLENBQUMsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsT0FBTyxHQUFHLEdBQUcsS0FBSyxDQUFDLEdBQUcsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUN0RixnQkFBZ0IsTUFBTTtJQUN0QixZQUFZLEtBQUssR0FBRztJQUNwQixnQkFBZ0IsSUFBSSxHQUFHLEdBQUcsQ0FBQyxFQUFFO0lBQzdCLG9CQUFvQixNQUFNLElBQUksVUFBVSxDQUFDLCtDQUErQyxDQUFDLENBQUM7SUFDMUYsaUJBQWlCO0lBQ2pCLGdCQUFnQixNQUFNLENBQUMsT0FBTyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsT0FBTyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQy9FLGdCQUFnQixNQUFNO0lBQ3RCLFlBQVksS0FBSyxHQUFHO0lBQ3BCLGdCQUFnQixJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUU7SUFDN0Isb0JBQW9CLE1BQU0sSUFBSSxVQUFVLENBQUMsK0NBQStDLENBQUMsQ0FBQztJQUMxRixpQkFBaUI7SUFDakIsZ0JBQWdCLE1BQU0sQ0FBQyxPQUFPLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0UsZ0JBQWdCLE1BQU07SUFDdEI7SUFDQSxZQUFZLEtBQUssR0FBRztJQUNwQixnQkFBZ0IsTUFBTSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDckMsZ0JBQWdCLE1BQU07SUFDdEIsWUFBWSxLQUFLLEdBQUcsQ0FBQztJQUNyQixZQUFZLEtBQUssR0FBRztJQUNwQixnQkFBZ0IsTUFBTSxJQUFJLFVBQVUsQ0FBQyw0REFBNEQsQ0FBQyxDQUFDO0lBQ25HO0lBQ0EsWUFBWSxLQUFLLEdBQUc7SUFDcEIsZ0JBQWdCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pDLGdCQUFnQixNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5RCxnQkFBZ0IsTUFBTTtJQUN0QixZQUFZLEtBQUssR0FBRztJQUNwQixnQkFBZ0IsTUFBTSxDQUFDLFNBQVMsR0FBRyxLQUFLLENBQUM7SUFDekMsZ0JBQWdCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBQzlELGdCQUFnQixNQUFNO0lBQ3RCLFlBQVksS0FBSyxHQUFHO0lBQ3BCLGdCQUFnQixNQUFNLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QyxnQkFBZ0IsTUFBTSxDQUFDLElBQUksR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDOUQsZ0JBQWdCLE1BQU07SUFDdEIsWUFBWSxLQUFLLEdBQUc7SUFDcEIsZ0JBQWdCLE1BQU0sQ0FBQyxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBQ3pDLGdCQUFnQixNQUFNLENBQUMsSUFBSSxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUM5RCxnQkFBZ0IsTUFBTTtJQUN0QixZQUFZLEtBQUssR0FBRyxDQUFDO0lBQ3JCLFlBQVksS0FBSyxHQUFHLENBQUM7SUFDckIsWUFBWSxLQUFLLEdBQUc7SUFDcEIsZ0JBQWdCLE1BQU0sSUFBSSxVQUFVLENBQUMsa0VBQWtFLENBQUMsQ0FBQztJQUN6RztJQUNBLFlBQVksS0FBSyxHQUFHO0lBQ3BCLGdCQUFnQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRSxnQkFBZ0IsTUFBTTtJQUN0QjtJQUNBLFlBQVksS0FBSyxHQUFHO0lBQ3BCLGdCQUFnQixNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUNoRSxnQkFBZ0IsTUFBTTtJQUN0QixZQUFZLEtBQUssR0FBRyxDQUFDO0lBQ3JCLFlBQVksS0FBSyxHQUFHO0lBQ3BCLGdCQUFnQixNQUFNLElBQUksVUFBVSxDQUFDLDREQUE0RCxDQUFDLENBQUM7SUFDbkc7SUFDQSxZQUFZLEtBQUssR0FBRztJQUNwQixnQkFBZ0IsTUFBTSxDQUFDLFlBQVksR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLE9BQU8sR0FBRyxNQUFNLENBQUM7SUFDakUsZ0JBQWdCLE1BQU07SUFDdEIsWUFBWSxLQUFLLEdBQUcsQ0FBQztJQUNyQixZQUFZLEtBQUssR0FBRyxDQUFDO0lBQ3JCLFlBQVksS0FBSyxHQUFHLENBQUM7SUFDckIsWUFBWSxLQUFLLEdBQUcsQ0FBQztJQUNyQixZQUFZLEtBQUssR0FBRyxDQUFDO0lBQ3JCLFlBQVksS0FBSyxHQUFHO0lBQ3BCLGdCQUFnQixNQUFNLElBQUksVUFBVSxDQUFDLHNFQUFzRSxDQUFDLENBQUM7SUFDN0csU0FBUztJQUNULFFBQVEsT0FBTyxFQUFFLENBQUM7SUFDbEIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxTQUFTLGFBQWEsQ0FBQyxJQUFJLEVBQUU7SUFDN0IsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFDRCxJQUFJLHdCQUF3QixHQUFHLGtDQUFrQyxDQUFDO0lBQ2xFLElBQUksMkJBQTJCLEdBQUcsa0JBQWtCLENBQUM7SUFDckQsSUFBSSxtQkFBbUIsR0FBRyx5QkFBeUIsQ0FBQztJQUNwRCxJQUFJLDJCQUEyQixHQUFHLFFBQVEsQ0FBQztJQUMzQyxTQUFTLHlCQUF5QixDQUFDLEdBQUcsRUFBRTtJQUN4QyxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNwQixJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsMkJBQTJCLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUNsRTtJQUNBLFFBQVEsSUFBSSxPQUFPLEVBQUUsS0FBSyxRQUFRLEVBQUU7SUFDcEMsWUFBWSxNQUFNLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUN4RCxZQUFZLE1BQU0sQ0FBQyx3QkFBd0IsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3hELFNBQVM7SUFDVDtJQUNBLGFBQWEsSUFBSSxFQUFFLEtBQUssR0FBRyxFQUFFO0lBQzdCLFlBQVksTUFBTSxDQUFDLHdCQUF3QixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDeEQsU0FBUztJQUNUO0lBQ0EsYUFBYSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7SUFDaEMsWUFBWSxNQUFNLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUN4RCxTQUFTO0lBQ1Q7SUFDQSxhQUFhO0lBQ2IsWUFBWSxNQUFNLENBQUMsd0JBQXdCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUN4RCxZQUFZLE1BQU0sQ0FBQyx3QkFBd0I7SUFDM0MsZ0JBQWdCLEVBQUUsQ0FBQyxNQUFNLElBQUksT0FBTyxFQUFFLEtBQUssUUFBUSxHQUFHLEVBQUUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckUsU0FBUztJQUNULFFBQVEsT0FBTyxFQUFFLENBQUM7SUFDbEIsS0FBSyxDQUFDLENBQUM7SUFDUCxJQUFJLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxTQUFTLFNBQVMsQ0FBQyxHQUFHLEVBQUU7SUFDeEIsSUFBSSxRQUFRLEdBQUc7SUFDZixRQUFRLEtBQUssV0FBVztJQUN4QixZQUFZLE9BQU87SUFDbkIsZ0JBQWdCLFdBQVcsRUFBRSxNQUFNO0lBQ25DLGFBQWEsQ0FBQztJQUNkLFFBQVEsS0FBSyxpQkFBaUIsQ0FBQztJQUMvQixRQUFRLEtBQUssSUFBSTtJQUNqQixZQUFZLE9BQU87SUFDbkIsZ0JBQWdCLFlBQVksRUFBRSxZQUFZO0lBQzFDLGFBQWEsQ0FBQztJQUNkLFFBQVEsS0FBSyxhQUFhLENBQUM7SUFDM0IsUUFBUSxLQUFLLElBQUk7SUFDakIsWUFBWSxPQUFPO0lBQ25CLGdCQUFnQixXQUFXLEVBQUUsUUFBUTtJQUNyQyxhQUFhLENBQUM7SUFDZCxRQUFRLEtBQUssd0JBQXdCLENBQUM7SUFDdEMsUUFBUSxLQUFLLEtBQUs7SUFDbEIsWUFBWSxPQUFPO0lBQ25CLGdCQUFnQixXQUFXLEVBQUUsUUFBUTtJQUNyQyxnQkFBZ0IsWUFBWSxFQUFFLFlBQVk7SUFDMUMsYUFBYSxDQUFDO0lBQ2QsUUFBUSxLQUFLLGtCQUFrQixDQUFDO0lBQ2hDLFFBQVEsS0FBSyxJQUFJO0lBQ2pCLFlBQVksT0FBTztJQUNuQixnQkFBZ0IsV0FBVyxFQUFFLFlBQVk7SUFDekMsYUFBYSxDQUFDO0lBQ2QsUUFBUSxLQUFLLDZCQUE2QixDQUFDO0lBQzNDLFFBQVEsS0FBSyxLQUFLO0lBQ2xCLFlBQVksT0FBTztJQUNuQixnQkFBZ0IsV0FBVyxFQUFFLFlBQVk7SUFDekMsZ0JBQWdCLFlBQVksRUFBRSxZQUFZO0lBQzFDLGFBQWEsQ0FBQztJQUNkLFFBQVEsS0FBSyxZQUFZLENBQUM7SUFDMUIsUUFBUSxLQUFLLElBQUk7SUFDakIsWUFBWSxPQUFPO0lBQ25CLGdCQUFnQixXQUFXLEVBQUUsT0FBTztJQUNwQyxhQUFhLENBQUM7SUFDZCxLQUFLO0lBQ0wsQ0FBQztJQUNELFNBQVMsd0NBQXdDLENBQUMsSUFBSSxFQUFFO0lBQ3hEO0lBQ0EsSUFBSSxJQUFJLE1BQU0sQ0FBQztJQUNmLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssR0FBRyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7SUFDNUMsUUFBUSxNQUFNLEdBQUc7SUFDakIsWUFBWSxRQUFRLEVBQUUsYUFBYTtJQUNuQyxTQUFTLENBQUM7SUFDVixRQUFRLElBQUksR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzdCLEtBQUs7SUFDTCxTQUFTLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLEdBQUcsRUFBRTtJQUM5QixRQUFRLE1BQU0sR0FBRztJQUNqQixZQUFZLFFBQVEsRUFBRSxZQUFZO0lBQ2xDLFNBQVMsQ0FBQztJQUNWLFFBQVEsSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDN0IsS0FBSztJQUNMLElBQUksSUFBSSxNQUFNLEVBQUU7SUFDaEIsUUFBUSxJQUFJLFdBQVcsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUMzQyxRQUFRLElBQUksV0FBVyxLQUFLLElBQUksRUFBRTtJQUNsQyxZQUFZLE1BQU0sQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO0lBQzFDLFlBQVksSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakMsU0FBUztJQUNULGFBQWEsSUFBSSxXQUFXLEtBQUssSUFBSSxFQUFFO0lBQ3ZDLFlBQVksTUFBTSxDQUFDLFdBQVcsR0FBRyxZQUFZLENBQUM7SUFDOUMsWUFBWSxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNqQyxTQUFTO0lBQ1QsUUFBUSxJQUFJLENBQUMsMkJBQTJCLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ3JELFlBQVksTUFBTSxJQUFJLEtBQUssQ0FBQywyQ0FBMkMsQ0FBQyxDQUFDO0lBQ3pFLFNBQVM7SUFDVCxRQUFRLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ2xELEtBQUs7SUFDTCxJQUFJLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFDRCxTQUFTLG9CQUFvQixDQUFDLEdBQUcsRUFBRTtJQUNuQyxJQUFJLElBQUksTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNwQixJQUFJLElBQUksUUFBUSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUNsQyxJQUFJLElBQUksUUFBUSxFQUFFO0lBQ2xCLFFBQVEsT0FBTyxRQUFRLENBQUM7SUFDeEIsS0FBSztJQUNMLElBQUksT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUNEO0lBQ0E7SUFDQTtJQUNPLFNBQVMsbUJBQW1CLENBQUMsTUFBTSxFQUFFO0lBQzVDLElBQUksSUFBSSxNQUFNLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLElBQUksS0FBSyxJQUFJLEVBQUUsR0FBRyxDQUFDLEVBQUUsUUFBUSxHQUFHLE1BQU0sRUFBRSxFQUFFLEdBQUcsUUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUNwRSxRQUFRLElBQUksS0FBSyxHQUFHLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUNqQyxRQUFRLFFBQVEsS0FBSyxDQUFDLElBQUk7SUFDMUIsWUFBWSxLQUFLLFNBQVMsQ0FBQztJQUMzQixZQUFZLEtBQUssR0FBRztJQUNwQixnQkFBZ0IsTUFBTSxDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7SUFDekMsZ0JBQWdCLFNBQVM7SUFDekIsWUFBWSxLQUFLLE9BQU87SUFDeEIsZ0JBQWdCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsU0FBUyxDQUFDO0lBQ3pDLGdCQUFnQixNQUFNLENBQUMsS0FBSyxHQUFHLEdBQUcsQ0FBQztJQUNuQyxnQkFBZ0IsU0FBUztJQUN6QixZQUFZLEtBQUssVUFBVTtJQUMzQixnQkFBZ0IsTUFBTSxDQUFDLEtBQUssR0FBRyxVQUFVLENBQUM7SUFDMUMsZ0JBQWdCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNuRCxnQkFBZ0IsU0FBUztJQUN6QixZQUFZLEtBQUssV0FBVyxDQUFDO0lBQzdCLFlBQVksS0FBSyxJQUFJO0lBQ3JCLGdCQUFnQixNQUFNLENBQUMsV0FBVyxHQUFHLEtBQUssQ0FBQztJQUMzQyxnQkFBZ0IsU0FBUztJQUN6QixZQUFZLEtBQUssbUJBQW1CLENBQUM7SUFDckMsWUFBWSxLQUFLLEdBQUc7SUFDcEIsZ0JBQWdCLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxDQUFDLENBQUM7SUFDakQsZ0JBQWdCLFNBQVM7SUFDekIsWUFBWSxLQUFLLGNBQWMsQ0FBQztJQUNoQyxZQUFZLEtBQUssTUFBTTtJQUN2QixnQkFBZ0IsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUM7SUFDdEMsZ0JBQWdCLE1BQU0sQ0FBQyxJQUFJLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5RCxnQkFBZ0IsU0FBUztJQUN6QixZQUFZLEtBQUssZUFBZSxDQUFDO0lBQ2pDLFlBQVksS0FBSyxHQUFHO0lBQ3BCLGdCQUFnQixNQUFNLENBQUMsUUFBUSxHQUFHLFNBQVMsQ0FBQztJQUM1QyxnQkFBZ0IsTUFBTSxDQUFDLGNBQWMsR0FBRyxPQUFPLENBQUM7SUFDaEQsZ0JBQWdCLFNBQVM7SUFDekIsWUFBWSxLQUFLLGNBQWMsQ0FBQztJQUNoQyxZQUFZLEtBQUssSUFBSTtJQUNyQixnQkFBZ0IsTUFBTSxDQUFDLFFBQVEsR0FBRyxTQUFTLENBQUM7SUFDNUMsZ0JBQWdCLE1BQU0sQ0FBQyxjQUFjLEdBQUcsTUFBTSxDQUFDO0lBQy9DLGdCQUFnQixTQUFTO0lBQ3pCLFlBQVksS0FBSyxZQUFZO0lBQzdCLGdCQUFnQixNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ2xOLGdCQUFnQixTQUFTO0lBQ3pCLFlBQVksS0FBSyxhQUFhO0lBQzlCLGdCQUFnQixNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxDQUFDLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsR0FBRyxFQUFFLEVBQUUsUUFBUSxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxHQUFHLENBQUMsRUFBRSxvQkFBb0IsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25OLGdCQUFnQixTQUFTO0lBQ3pCLFlBQVksS0FBSyxpQkFBaUI7SUFDbEMsZ0JBQWdCLE1BQU0sQ0FBQyxRQUFRLEdBQUcsVUFBVSxDQUFDO0lBQzdDLGdCQUFnQixTQUFTO0lBQ3pCO0lBQ0EsWUFBWSxLQUFLLG1CQUFtQjtJQUNwQyxnQkFBZ0IsTUFBTSxDQUFDLGVBQWUsR0FBRyxjQUFjLENBQUM7SUFDeEQsZ0JBQWdCLE1BQU0sQ0FBQyxXQUFXLEdBQUcsUUFBUSxDQUFDO0lBQzlDLGdCQUFnQixTQUFTO0lBQ3pCLFlBQVksS0FBSyxrQkFBa0I7SUFDbkMsZ0JBQWdCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsTUFBTSxDQUFDO0lBQ2hELGdCQUFnQixNQUFNLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUM3QyxnQkFBZ0IsU0FBUztJQUN6QixZQUFZLEtBQUssc0JBQXNCO0lBQ3ZDLGdCQUFnQixNQUFNLENBQUMsZUFBZSxHQUFHLE1BQU0sQ0FBQztJQUNoRCxnQkFBZ0IsTUFBTSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUM7SUFDNUMsZ0JBQWdCLFNBQVM7SUFDekIsWUFBWSxLQUFLLHFCQUFxQjtJQUN0QyxnQkFBZ0IsTUFBTSxDQUFDLGVBQWUsR0FBRyxRQUFRLENBQUM7SUFDbEQsZ0JBQWdCLFNBQVM7SUFDekIsWUFBWSxLQUFLLE9BQU87SUFDeEIsZ0JBQWdCLE1BQU0sQ0FBQyxLQUFLLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM1RCxnQkFBZ0IsU0FBUztJQUN6QjtJQUNBLFlBQVksS0FBSyxlQUFlO0lBQ2hDLGdCQUFnQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtJQUM5QyxvQkFBb0IsTUFBTSxJQUFJLFVBQVUsQ0FBQywwREFBMEQsQ0FBQyxDQUFDO0lBQ3JHLGlCQUFpQjtJQUNqQixnQkFBZ0IsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsVUFBVSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtJQUMvRixvQkFBb0IsSUFBSSxFQUFFLEVBQUU7SUFDNUIsd0JBQXdCLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ2hFLHFCQUFxQjtJQUNyQix5QkFBeUIsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFO0lBQ3ZDLHdCQUF3QixNQUFNLElBQUksS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUM7SUFDOUYscUJBQXFCO0lBQ3JCLHlCQUF5QixJQUFJLEVBQUUsRUFBRTtJQUNqQyx3QkFBd0IsTUFBTSxJQUFJLEtBQUssQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO0lBQzVGLHFCQUFxQjtJQUNyQixvQkFBb0IsT0FBTyxFQUFFLENBQUM7SUFDOUIsaUJBQWlCLENBQUMsQ0FBQztJQUNuQixnQkFBZ0IsU0FBUztJQUN6QixTQUFTO0lBQ1Q7SUFDQSxRQUFRLElBQUksMkJBQTJCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUMxRCxZQUFZLE1BQU0sQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztJQUM1RCxZQUFZLFNBQVM7SUFDckIsU0FBUztJQUNULFFBQVEsSUFBSSx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFO0lBQ3ZEO0lBQ0E7SUFDQTtJQUNBLFlBQVksSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDMUMsZ0JBQWdCLE1BQU0sSUFBSSxVQUFVLENBQUMsK0RBQStELENBQUMsQ0FBQztJQUN0RyxhQUFhO0lBQ2IsWUFBWSxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyx3QkFBd0IsRUFBRSxVQUFVLENBQUMsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFO0lBQzFGO0lBQ0EsZ0JBQWdCLElBQUksRUFBRSxLQUFLLEdBQUcsRUFBRTtJQUNoQyxvQkFBb0IsTUFBTSxDQUFDLHFCQUFxQixHQUFHLEVBQUUsQ0FBQyxNQUFNLENBQUM7SUFDN0QsaUJBQWlCO0lBQ2pCO0lBQ0EscUJBQXFCLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEVBQUU7SUFDOUMsb0JBQW9CLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQzdELGlCQUFpQjtJQUNqQjtJQUNBLHFCQUFxQixJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUU7SUFDbkMsb0JBQW9CLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQzdELG9CQUFvQixNQUFNLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDLE1BQU0sR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQ3pFLGlCQUFpQjtJQUNqQixxQkFBcUI7SUFDckIsb0JBQW9CLE1BQU0sQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDO0lBQzdELG9CQUFvQixNQUFNLENBQUMscUJBQXFCLEdBQUcsRUFBRSxDQUFDLE1BQU0sQ0FBQztJQUM3RCxpQkFBaUI7SUFDakIsZ0JBQWdCLE9BQU8sRUFBRSxDQUFDO0lBQzFCLGFBQWEsQ0FBQyxDQUFDO0lBQ2YsWUFBWSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFO0lBQ3RDLGdCQUFnQixNQUFNLEdBQUcsUUFBUSxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUseUJBQXlCLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDckcsYUFBYTtJQUNiLFlBQVksU0FBUztJQUNyQixTQUFTO0lBQ1Q7SUFDQSxRQUFRLElBQUksMkJBQTJCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRTtJQUMxRCxZQUFZLE1BQU0sR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSx5QkFBeUIsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRixZQUFZLFNBQVM7SUFDckIsU0FBUztJQUNULFFBQVEsSUFBSSxRQUFRLEdBQUcsU0FBUyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QyxRQUFRLElBQUksUUFBUSxFQUFFO0lBQ3RCLFlBQVksTUFBTSxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLE1BQU0sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzlELFNBQVM7SUFDVCxRQUFRLElBQUksbUNBQW1DLEdBQUcsd0NBQXdDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZHLFFBQVEsSUFBSSxtQ0FBbUMsRUFBRTtJQUNqRCxZQUFZLE1BQU0sR0FBRyxRQUFRLENBQUMsUUFBUSxDQUFDLEVBQUUsRUFBRSxNQUFNLENBQUMsRUFBRSxtQ0FBbUMsQ0FBQyxDQUFDO0lBQ3pGLFNBQVM7SUFDVCxLQUFLO0lBQ0wsSUFBSSxPQUFPLE1BQU0sQ0FBQztJQUNsQjs7SUN6WEE7SUFLQSxJQUFJLFdBQVcsa0JBQWtCLFVBQVUsTUFBTSxFQUFFO0lBQ25ELElBQUksU0FBUyxDQUFDLFdBQVcsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNuQyxJQUFJLFNBQVMsV0FBVyxDQUFDLE9BQU8sRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRTtJQUM3RCxRQUFRLElBQUksS0FBSyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDO0lBQzlDLFFBQVEsS0FBSyxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDaEMsUUFBUSxLQUFLLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztJQUNsQyxRQUFRLEtBQUssQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO0lBQzVCLFFBQVEsS0FBSyxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7SUFDbEMsUUFBUSxLQUFLLENBQUMsSUFBSSxHQUFHLGFBQWEsQ0FBQztJQUNuQyxRQUFRLElBQUksT0FBTyxLQUFLLENBQUMsaUJBQWlCLEtBQUssVUFBVSxFQUFFO0lBQzNELFlBQVksS0FBSyxDQUFDLGlCQUFpQixDQUFDLEtBQUssRUFBRSxXQUFXLENBQUMsQ0FBQztJQUN4RCxTQUFTO0lBQ1QsUUFBUSxPQUFPLEtBQUssQ0FBQztJQUNyQixLQUFLO0lBQ0wsSUFBSSxXQUFXLENBQUMsWUFBWSxHQUFHLFVBQVUsUUFBUSxFQUFFLEtBQUssRUFBRTtJQUMxRCxRQUFRLFNBQVMsR0FBRyxDQUFDLEVBQUUsRUFBRTtJQUN6QixZQUFZLE9BQU8sRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDL0QsU0FBUztJQUNULFFBQVEsU0FBUyxhQUFhLENBQUMsQ0FBQyxFQUFFO0lBQ2xDLFlBQVksT0FBTyxDQUFDO0lBQ3BCLGlCQUFpQixPQUFPLENBQUMsS0FBSyxFQUFFLE1BQU0sQ0FBQztJQUN2QyxpQkFBaUIsT0FBTyxDQUFDLElBQUksRUFBRSxNQUFNLENBQUM7SUFDdEMsaUJBQWlCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLGlCQUFpQixPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUN0QyxpQkFBaUIsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7SUFDdEMsaUJBQWlCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLGlCQUFpQixPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwRixpQkFBaUIsT0FBTyxDQUFDLHVCQUF1QixFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLFNBQVM7SUFDVCxRQUFRLFNBQVMsV0FBVyxDQUFDLENBQUMsRUFBRTtJQUNoQyxZQUFZLE9BQU8sQ0FBQztJQUNwQixpQkFBaUIsT0FBTyxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUM7SUFDdkMsaUJBQWlCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLGlCQUFpQixPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUN0QyxpQkFBaUIsT0FBTyxDQUFDLElBQUksRUFBRSxLQUFLLENBQUM7SUFDckMsaUJBQWlCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLGlCQUFpQixPQUFPLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQztJQUN0QyxpQkFBaUIsT0FBTyxDQUFDLEtBQUssRUFBRSxLQUFLLENBQUM7SUFDdEMsaUJBQWlCLE9BQU8sQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDO0lBQ3RDLGlCQUFpQixPQUFPLENBQUMsY0FBYyxFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxNQUFNLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNwRixpQkFBaUIsT0FBTyxDQUFDLHVCQUF1QixFQUFFLFVBQVUsRUFBRSxFQUFFLEVBQUUsT0FBTyxLQUFLLEdBQUcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzdGLFNBQVM7SUFDVCxRQUFRLFNBQVMsbUJBQW1CLENBQUMsV0FBVyxFQUFFO0lBQ2xELFlBQVksUUFBUSxXQUFXLENBQUMsSUFBSTtJQUNwQyxnQkFBZ0IsS0FBSyxTQUFTO0lBQzlCLG9CQUFvQixPQUFPLElBQUksR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksQ0FBQztJQUN6RSxnQkFBZ0IsS0FBSyxPQUFPO0lBQzVCLG9CQUFvQixJQUFJLFlBQVksR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLElBQUksRUFBRTtJQUM3RSx3QkFBd0IsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztJQUNsRCw4QkFBOEIsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEdBQUcsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQy9FLDhCQUE4QixXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEQscUJBQXFCLENBQUMsQ0FBQztJQUN2QixvQkFBb0IsT0FBTyxHQUFHLElBQUksV0FBVyxDQUFDLFFBQVEsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsWUFBWSxHQUFHLEdBQUcsQ0FBQztJQUN4RixnQkFBZ0IsS0FBSyxLQUFLO0lBQzFCLG9CQUFvQixPQUFPLGVBQWUsQ0FBQztJQUMzQyxnQkFBZ0IsS0FBSyxLQUFLO0lBQzFCLG9CQUFvQixPQUFPLGNBQWMsQ0FBQztJQUMxQyxnQkFBZ0IsS0FBSyxPQUFPO0lBQzVCLG9CQUFvQixPQUFPLFdBQVcsQ0FBQyxXQUFXLENBQUM7SUFDbkQsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLFNBQVMsZ0JBQWdCLENBQUMsU0FBUyxFQUFFO0lBQzdDLFlBQVksSUFBSSxZQUFZLEdBQUcsU0FBUyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBQ2xFLFlBQVksSUFBSSxDQUFDLENBQUM7SUFDbEIsWUFBWSxJQUFJLENBQUMsQ0FBQztJQUNsQixZQUFZLFlBQVksQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNoQyxZQUFZLElBQUksWUFBWSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDekMsZ0JBQWdCLEtBQUssQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxZQUFZLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2pFLG9CQUFvQixJQUFJLFlBQVksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQyxFQUFFO0lBQ2pFLHdCQUF3QixZQUFZLENBQUMsQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzFELHdCQUF3QixDQUFDLEVBQUUsQ0FBQztJQUM1QixxQkFBcUI7SUFDckIsaUJBQWlCO0lBQ2pCLGdCQUFnQixZQUFZLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUN4QyxhQUFhO0lBQ2IsWUFBWSxRQUFRLFlBQVksQ0FBQyxNQUFNO0lBQ3ZDLGdCQUFnQixLQUFLLENBQUM7SUFDdEIsb0JBQW9CLE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzNDLGdCQUFnQixLQUFLLENBQUM7SUFDdEIsb0JBQW9CLE9BQU8sWUFBWSxDQUFDLENBQUMsQ0FBQyxHQUFHLE1BQU0sR0FBRyxZQUFZLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDdEUsZ0JBQWdCO0lBQ2hCLG9CQUFvQixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztJQUMvRCwwQkFBMEIsT0FBTztJQUNqQywwQkFBMEIsWUFBWSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDaEUsYUFBYTtJQUNiLFNBQVM7SUFDVCxRQUFRLFNBQVMsYUFBYSxDQUFDLE1BQU0sRUFBRTtJQUN2QyxZQUFZLE9BQU8sTUFBTSxHQUFHLElBQUksR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxHQUFHLGNBQWMsQ0FBQztJQUNqRixTQUFTO0lBQ1QsUUFBUSxPQUFPLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxRQUFRLENBQUMsR0FBRyxPQUFPLEdBQUcsYUFBYSxDQUFDLEtBQUssQ0FBQyxHQUFHLFNBQVMsQ0FBQztJQUNyRyxLQUFLLENBQUM7SUFDTixJQUFJLE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO0lBRVYsU0FBUyxTQUFTLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRTtJQUNuQyxJQUFJLE9BQU8sR0FBRyxPQUFPLEtBQUssU0FBUyxHQUFHLE9BQU8sR0FBRyxFQUFFLENBQUM7SUFDbkQsSUFBSSxJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFDeEIsSUFBSSxJQUFJLHNCQUFzQixHQUFHLEVBQUUsS0FBSyxFQUFFLGNBQWMsRUFBRSxDQUFDO0lBQzNELElBQUksSUFBSSxxQkFBcUIsR0FBRyxjQUFjLENBQUM7SUFDL0MsSUFBSSxJQUFJLE1BQU0sR0FBRyxZQUFZLEVBQUUsT0FBTyxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUM7SUFDcEQsSUFBSSxJQUFJLE1BQU0sR0FBRyxVQUFVLENBQUMsRUFBRSxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUM1QyxJQUFJLElBQUksTUFBTSxHQUFHLFlBQVksRUFBRSxPQUFPLFNBQVMsQ0FBQyxFQUFFLENBQUM7SUFDbkQsSUFBSSxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDckIsSUFBSSxJQUFJLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsSUFBSSxJQUFJLE1BQU0sR0FBRyxVQUFVLEtBQUssRUFBRTtJQUNsQyxRQUFRLE9BQU8sS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM5QixLQUFLLENBQUM7SUFDTixJQUFJLElBQUksTUFBTSxHQUFHLFlBQVksRUFBRSxPQUFPLEdBQUcsQ0FBQyxFQUFFLENBQUM7SUFDN0MsSUFBSSxJQUFJLE1BQU0sR0FBRyxVQUFVLFdBQVcsRUFBRTtJQUN4QyxRQUFRLE9BQU8sUUFBUSxDQUFDLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDdEYsS0FBSyxDQUFDO0lBQ04sSUFBSSxJQUFJLE1BQU0sR0FBRyxHQUFHLENBQUM7SUFDckIsSUFBSSxJQUFJLE1BQU0sR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDcEQsSUFBSSxJQUFJLE9BQU8sR0FBRyxZQUFZO0lBQzlCLFFBQVEsT0FBTyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDaEUsS0FBSyxDQUFDO0lBQ04sSUFBSSxJQUFJLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsSUFBSSxFQUFFLFFBQVEsRUFBRSxLQUFLLEVBQUU7SUFDbkQsUUFBUSxJQUFJLElBQUksS0FBSyxLQUFLLEVBQUU7SUFDNUIsWUFBWSxLQUFLLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxHQUFHLFdBQVcsR0FBRyxLQUFLLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDckYsU0FBUztJQUNULFFBQVEsT0FBTyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQy9GLEtBQUssQ0FBQztJQUNOLElBQUksSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLElBQUksSUFBSSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELElBQUksSUFBSSxPQUFPLEdBQUcsVUFBVSxLQUFLLEVBQUU7SUFDbkMsUUFBUSxPQUFPLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUN6RixLQUFLLENBQUM7SUFDTixJQUFJLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN0QixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsR0FBRyxFQUFFLEVBQUUsT0FBTyxHQUFHLENBQUMsRUFBRSxDQUFDO0lBQ2pELElBQUksSUFBSSxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLElBQUksSUFBSSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsSUFBSSxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3RELElBQUksSUFBSSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUMxRCxJQUFJLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN0QixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN0QixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsS0FBSyxFQUFFO0lBQ25DLFFBQVEsT0FBTyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUNqRixLQUFLLENBQUM7SUFDTixJQUFJLElBQUksT0FBTyxHQUFHLG9CQUFvQixDQUFDLGtCQUFrQixDQUFDLENBQUM7SUFDM0QsSUFBSSxJQUFJLE9BQU8sR0FBRyxVQUFVLENBQUM7SUFDN0IsSUFBSSxJQUFJLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRSxJQUFJLElBQUksT0FBTyxHQUFHLGtCQUFrQixFQUFFLENBQUM7SUFDdkMsSUFBSSxJQUFJLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDO0lBQ3BFLElBQUksSUFBSSxPQUFPLEdBQUcsR0FBRyxDQUFDO0lBQ3RCLElBQUksSUFBSSxPQUFPLEdBQUcsc0JBQXNCLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3JELElBQUksSUFBSSxPQUFPLEdBQUcsVUFBVSxNQUFNLEVBQUUsRUFBRSxPQUFPLE1BQU0sQ0FBQyxFQUFFLENBQUM7SUFDdkQsSUFBSSxJQUFJLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO0lBQzlELElBQUksSUFBSSxPQUFPLEdBQUcsVUFBVSxJQUFJLEVBQUUsT0FBTyxFQUFFO0lBQzNDLFFBQVEsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2hELEtBQUssQ0FBQztJQUNOLElBQUksSUFBSSxPQUFPLEdBQUcsVUFBVSxNQUFNLEVBQUU7SUFDcEMsUUFBUSxPQUFPLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLGVBQWUsTUFBTSxFQUFFLE1BQU0sRUFBRSxhQUFhLEVBQUUsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsRUFBRSxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUMzSixLQUFLLENBQUM7SUFDTixJQUFJLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQztJQUN2QixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN0RCxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsUUFBUSxFQUFFLEVBQUUsT0FBTyxRQUFRLENBQUMsRUFBRSxDQUFDO0lBQzNELElBQUksSUFBSSxPQUFPLEdBQUcsWUFBWSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUNsRixJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsS0FBSyxFQUFFO0lBQ25DLFFBQVEsVUFBVSxDQUFDLEdBQUcsRUFBRSxDQUFDO0lBQ3pCLFFBQVEsT0FBTyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsQ0FBQztJQUN6QyxLQUFLLENBQUM7SUFDTixJQUFJLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN0QixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUMzQixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUU7SUFDaEQsUUFBUSxPQUFPLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLEtBQUssUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxLQUFLLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDdkssS0FBSyxDQUFDO0lBQ04sSUFBSSxJQUFJLE9BQU8sR0FBRyxHQUFHLENBQUM7SUFDdEIsSUFBSSxJQUFJLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDckQsSUFBSSxJQUFJLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDMUIsSUFBSSxJQUFJLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQztJQUNsQyxJQUFJLElBQUksT0FBTyxHQUFHLG9CQUFvQixDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDN0YsSUFBSSxJQUFJLE9BQU8sR0FBRyxXQUFXLENBQUM7SUFDOUIsSUFBSSxJQUFJLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQy9FLElBQUksSUFBSSxPQUFPLEdBQUcsVUFBVSxPQUFPLEVBQUU7SUFDckMsUUFBUSxPQUFPLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxDQUFDLGlCQUFpQixPQUFPLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxtQkFBbUIsR0FBRyxxQkFBcUIsQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsRUFBRSxjQUFjLEVBQUUsQ0FBQyxDQUFDO0lBQ2xLLEtBQUssQ0FBQztJQUNOLElBQUksSUFBSSxPQUFPLEdBQUcsWUFBWSxFQUFFLFVBQVUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUN0RixJQUFJLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN6QixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RCxJQUFJLElBQUksT0FBTyxHQUFHLE1BQU0sQ0FBQztJQUN6QixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN4RCxJQUFJLElBQUksT0FBTyxHQUFHLFFBQVEsQ0FBQztJQUMzQixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMxRCxJQUFJLElBQUksT0FBTyxHQUFHLGVBQWUsQ0FBQztJQUNsQyxJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNqRSxJQUFJLElBQUksT0FBTyxHQUFHLFNBQVMsQ0FBQztJQUM1QixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLFNBQVMsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUMzRCxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsS0FBSyxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0lBQ2hFLFFBQVEsT0FBTyxRQUFRLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRSxVQUFVLEVBQUUsVUFBVSxLQUFLLFFBQVEsR0FBRyxVQUFVLEdBQUcsU0FBUyxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLE1BQU0sR0FBRyxNQUFNLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFLEVBQUUsRUFBRTtJQUNwTSxnQkFBZ0IsSUFBSSxFQUFFLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxLQUFLLEdBQUcsRUFBRSxDQUFDLEtBQUssRUFBRSxjQUFjLEdBQUcsRUFBRSxDQUFDLFFBQVEsQ0FBQztJQUMvRSxnQkFBZ0IsSUFBSSxFQUFFLElBQUksR0FBRyxFQUFFO0lBQy9CLG9CQUFvQixLQUFLLENBQUMscUJBQXFCLEdBQUcsRUFBRSxHQUFHLDBCQUEwQixHQUFHLElBQUksRUFBRSxHQUFHLElBQUksRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQy9HLGlCQUFpQjtJQUNqQixnQkFBZ0IsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHO0lBQzFCLG9CQUFvQixLQUFLLEVBQUUsS0FBSztJQUNoQyxvQkFBb0IsUUFBUSxFQUFFLGNBQWM7SUFDNUMsaUJBQWlCLENBQUM7SUFDbEIsZ0JBQWdCLE9BQU8sR0FBRyxDQUFDO0lBQzNCLGFBQWEsRUFBRSxFQUFFLENBQUMsRUFBRSxFQUFFLGNBQWMsRUFBRSxDQUFDLENBQUM7SUFDeEMsS0FBSyxDQUFDO0lBQ04sSUFBSSxJQUFJLE9BQU8sR0FBRyxRQUFRLENBQUM7SUFDM0IsSUFBSSxJQUFJLE9BQU8sR0FBRyxzQkFBc0IsQ0FBQyxRQUFRLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDMUQsSUFBSSxJQUFJLE9BQU8sR0FBRyxVQUFVLEtBQUssRUFBRSxPQUFPLEVBQUU7SUFDNUMsUUFBUSxPQUFPLFFBQVEsQ0FBQyxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxHQUFHLEVBQUUsRUFBRSxFQUFFO0lBQ3RHLGdCQUFnQixJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsRUFBRSxFQUFFLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxFQUFFLGNBQWMsR0FBRyxFQUFFLENBQUMsUUFBUSxDQUFDO0lBQy9FLGdCQUFnQixJQUFJLEVBQUUsSUFBSSxHQUFHLEVBQUU7SUFDL0Isb0JBQW9CLEtBQUssQ0FBQyxxQkFBcUIsR0FBRyxFQUFFLEdBQUcsMEJBQTBCLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDL0csaUJBQWlCO0lBQ2pCLGdCQUFnQixHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUc7SUFDMUIsb0JBQW9CLEtBQUssRUFBRSxLQUFLO0lBQ2hDLG9CQUFvQixRQUFRLEVBQUUsY0FBYztJQUM1QyxpQkFBaUIsQ0FBQztJQUNsQixnQkFBZ0IsT0FBTyxHQUFHLENBQUM7SUFDM0IsYUFBYSxFQUFFLEVBQUUsQ0FBQyxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUN4QyxLQUFLLENBQUM7SUFDTixJQUFJLElBQUksT0FBTyxHQUFHLEdBQUcsQ0FBQztJQUN0QixJQUFJLElBQUksT0FBTyxHQUFHLHNCQUFzQixDQUFDLEdBQUcsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNyRCxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUM1RSxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRTtJQUN2QyxRQUFRLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLE9BQU8sUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDaEMsWUFBWSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUM5QyxLQUFLLENBQUM7SUFDTixJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRSxFQUFFLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sSUFBSSxDQUFDLEVBQUUsQ0FBQztJQUM1RSxJQUFJLElBQUksT0FBTyxHQUFHLFVBQVUsRUFBRSxFQUFFLEtBQUssRUFBRTtJQUN2QyxRQUFRLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztJQUN6QixRQUFRLE9BQU8sUUFBUSxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUU7SUFDaEMsWUFBWSxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsY0FBYyxFQUFFLENBQUMsQ0FBQztJQUM5QyxLQUFLLENBQUM7SUFDTixJQUFJLElBQUksT0FBTyxHQUFHLG9CQUFvQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ3JELElBQUksSUFBSSxPQUFPLEdBQUcsb0VBQW9FLENBQUM7SUFDdkYsSUFBSSxJQUFJLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQzVLLElBQUksSUFBSSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUN6RCxJQUFJLElBQUksT0FBTyxHQUFHLHlPQUF5TyxDQUFDO0lBQzVQLElBQUksSUFBSSxPQUFPLEdBQUcsb0JBQW9CLENBQUMsQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDO0lBQ3BlLElBQUksSUFBSSxPQUFPLEdBQUcsb0JBQW9C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