@libs-ui/components-draw-line 0.2.356-38 → 0.2.356-40

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.
@@ -74,9 +74,8 @@ export class MoCanvasConnectNavigationNewElementUtil {
74
74
  endPath: LEnd,
75
75
  };
76
76
  }
77
- let lineCurveSubY = lineCurve;
78
77
  if (Math.abs((endPath.y ?? 0) - endPosition.y) < lineCurve * 2) {
79
- lineCurveSubY = Math.abs((endPath.y ?? 0) - endPosition.y) / 2;
78
+ const lineCurveSubY = Math.abs((endPath.y ?? 0) - endPosition.y) / 2;
80
79
  const coordQ1 = MoCanvasCalculatorDirectionElementUtil.drawLineQ({ x: endPath.x ?? 0, y: endPath.y ?? 0 }, `right-${directionY === 'above' ? 'above' : 'under'}`, lineCurveSubY * 2, lineCurveSubY); // tính đoạn cong từ đường ngang sang đường thẳng
81
80
  const pathQ1 = `Q ${coordQ1.x1},${coordQ1.y1} ${coordQ1.x},${coordQ1.y}`; // từ ngang sang thẳng phải có đường cong
82
81
  const coordQ2 = MoCanvasCalculatorDirectionElementUtil.drawLineQ({ x: coordQ1.x ?? 0, y: coordQ1.y ?? 0 }, `${directionY === 'above' ? 'above' : 'under'}-right`, lineCurveSubY * 2, lineCurveSubY); // tính đoạn cong từ đường thẳng sang ngang
@@ -375,4 +374,4 @@ export class MoCanvasConnectNavigationNewElementUtil {
375
374
  };
376
375
  }
377
376
  }
378
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC1uYXZpZ2F0aW9uLW5ldy1lbGVtZW50LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhdy1saW5lL3NyYy91dGlsL2Nvbm5lY3QtbmF2aWdhdGlvbi1uZXctZWxlbWVudC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsOENBQThDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1sRyxNQUFNLE9BQU8sdUNBQXVDO0lBQ2xELE1BQU0sQ0FBQyxxQ0FBcUMsR0FBRyxFQUFFLENBQUM7SUFDbEQsTUFBTSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7SUFFakMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQWtCLEVBQUUsV0FBa0IsRUFBRSxZQUFxQixFQUFFLGVBQStCLEVBQUUsS0FBYTtRQUN2SSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFrQixFQUFFLFdBQWtCLEVBQUUsWUFBcUIsRUFBRSxlQUErQixFQUFFLEtBQWE7UUFDbEksSUFBSSxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztRQUMvRixJQUFJLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcs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Q0FBQyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1FBRXRMLElBQUksVUFBVSxLQUFLLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsWUFBWSxDQUFDLENBQUMsRUFBRSxDQUFDO1lBQ2hFLGdCQUFnQixHQUFHLEVBQUUsQ0FBQztZQUN0QixZQUFZLENBQUMsT0FBTyxHQUFHLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ2xFLENBQUM7UUFDRCxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsZ0JBQWdCLENBQUMsQ0FBQztRQUMxQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxXQUFXLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsQ0FBQztRQUUxSixPQUFPO1lBQ0wsS0FBSyxFQUFFLEVBQUU7U0FDVixDQUFDO0lBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGNsb25lRGVlcCB9IGZyb20gJ0BsaWJzLXVpL3V0aWxzJztcbmltcG9ydCB7IElQb2ludCwgSVBvaW50cywgSVJlY3QgfSBmcm9tICcuLi9kcmF3LWxpbmUuaW50ZXJmYWNlJztcbmltcG9ydCB7IE1vQ2FudmFzQ2FsY3VsYXRvckJyYW5jaFV0aWwgfSBmcm9tICcuL2NhbGN1bGF0b3ItYnJhbmNoLnV0aWwnO1xuaW1wb3J0IHsgTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwgfSBmcm9tICcuL2NhbGN1bGF0b3ItZGlyZXRpb24tZWxlbWVudC51bnRpbCc7XG5pbXBvcnQgeyBNb0NhbnZhc0Nvbm5lY3ROYXZpZ2F0aW9uQm90dG9tTGVmdEVsZW1lbnRVdGlsIH0gZnJvbSAnLi9saW5lLWNvbm5lY3QtYm90dG9tLWxlZnQudW50aWwnO1xuXG5leHBvcnQgaW50ZXJmYWNlIElQb3NpdGlvblhZIHtcbiAgeDogbnVtYmVyO1xuICB5OiBudW1iZXI7XG59XG5leHBvcnQgY2xhc3MgTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbk5ld0VsZW1lbnRVdGlsIHtcbiAgc3RhdGljIEVMRU1FTlRfTUFSR0lOX0JFVFdFRU5fQlJBTkNIX0RFRkFVTFQgPSAzMjtcbiAgc3RhdGljIFNUQVJUX01PREUgPSAncmlnaHQtbGVmdCc7XG5cbiAgc3RhdGljIHNldFhZQ29ubmVjdEVsZW1lbnRzKGVsZW1lbnRGcm9tOiBJUmVjdCwgZWxlbWVudE5leHQ6IElSZWN0LCBvYnN0YWNsZVJlY3Q6IElSZWN0W10sIHNlcGFyYXRlZFBvaW50czogQXJyYXk8SVBvaW50cz4sIGN1cnZlOiBudW1iZXIpIHtcbiAgICB0aGlzLmRyYXdMaW5lQ29ubmVjdChlbGVtZW50RnJvbSwgZWxlbWVudE5leHQsIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzLCBjdXJ2ZSk7XG4gIH1cblxuICBzdGF0aWMgZHJhd0xpbmVDb25uZWN0KGVsZW1lbnRGcm9tOiBJUmVjdCwgZWxlbWVudE5leHQ6IElSZWN0LCBvYnN0YWNsZVJlY3Q6IElSZWN0W10sIHNlcGFyYXRlZFBvaW50czogQXJyYXk8SVBvaW50cz4sIGN1cnZlOiBudW1iZXIpIHtcbiAgICBsZXQgc3RhcnRfeCA9IChlbGVtZW50RnJvbS54ID8/IDApICsgKGVsZW1lbnRGcm9tLndpZHRoID8/IDApOyAvLyDEkWnhu4NtIG91dCBsdcO0biDhu58gcGjDrWEgYsOqbiBwaOG6o2lcbiAgICBsZXQgc3RhcnRfeSA9IChlbGVtZW50RnJvbS55ID8/IDApICsgKGVsZW1lbnRGcm9tLmhlaWdodCA/PyAwKSAvIDI7IC8vIMSRaeG7g20gb3V0IGx1w7RuIOG7nyBwaMOtYSBiw6puIHBo4bqjaVxuXG4gICAgaWYgKE1vQ2FudmFzQ29ubmVjdE5hdmlnYXRpb25OZXdFbGVtZW50VXRpbC5TVEFSVF9NT0RFID09PSAnYm90dG9tLXRvcCcpIHtcbiAgICAgIC8vIMSRaeG7g20gb3V0IGx1w7RuIOG7nyBwaMOtYSBiw6puIGTGsOG7m2lcbiAgICAgIHN0YXJ0X3ggPSAoZWxlbWVudEZyb20ueCA/PyAwKSArIChlbGVtZW50RnJvbS53aWR0aCA/PyAwKSAvIDI7XG4gICAgICBzdGFydF95ID0gKGVsZW1lbnRGcm9tLnkgPz8gMCkgKyAoZWxlbWVudEZyb20uaGVpZ2h0ID8/IDApO1xuICAgIH1cbiAgICBpZiAoTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbk5ld0VsZW1lbnRVdGlsLlNUQVJUX01PREUgPT09ICdib3R0b20tbGVmdCcpIHtcbiAgICAgIC8vIMSRaeG7g20gb3V0IGx1w7RuIOG7nyBwaMOtYSBiw6puIGTGsOG7m2lcbiAgICAgIHN0YXJ0X3ggPSAoZWxlbWVudEZyb20ueCA/PyAwKSArIChlbGVtZW50RnJvbS53aWR0aCA/PyAwKSAvIDI7XG4gICAgICBzdGFydF95ID0gKGVsZW1lbnRGcm9tLnkgPz8gMCkgKyAoZWxlbWVudEZyb20uaGVpZ2h0ID8/IDApO1xuICAgIH1cbiAgICBjb25zdCBNX3N0YXJ0OiBJUG9pbnQgPSB7IHg6IHN0YXJ0X3gsIHk6IHN0YXJ0X3kgfTtcblxuICAgIGNvbnN0IGRpcmVjdGlvblggPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChzdGFydF94LCBlbGVtZW50TmV4dC54LCAneCcpO1xuXG4gICAgc3dpdGNoIChNb0NhbnZhc0Nvbm5lY3ROYXZpZ2F0aW9uTmV3RWxlbWVudFV0aWwuU1RBUlRfTU9ERSkge1xuICAgICAgY2FzZSAncmlnaHQtbGVmdCc6XG4gICAgICAgIGlmIChkaXJlY3Rpb25YID09PSAnbGVmdCcpIHtcbiAgICAgICAgICB0aGlzLmxpbmVDb25uZWN0TGVmdChlbGVtZW50TmV4dCwgZWxlbWVudEZyb20sIE1fc3RhcnQsIGN1cnZlLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saW5lQ29ubmVjdFJpZ2h0KGVsZW1lbnROZXh0LCBNX3N0YXJ0LCBjdXJ2ZSwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tLXRvcCc6XG4gICAgICAgIGlmIChkaXJlY3Rpb25YID09PSAnbGVmdCcpIHtcbiAgICAgICAgICB0aGlzLmxpbmVDb25uZWN0TGVmdFdpdGhCb3R0b21TdGFydChlbGVtZW50TmV4dCwgZWxlbWVudEZyb20sIE1fc3RhcnQsIGN1cnZlLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5saW5lQ29ubmVjdFJpZ2h0V2l0aEJvdHRvbVN0YXJ0KGVsZW1lbnROZXh0LCBNX3N0YXJ0LCBjdXJ2ZSwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHMpO1xuICAgICAgICBicmVhaztcblxuICAgICAgY2FzZSAnYm90dG9tLWxlZnQnOlxuICAgICAgICBpZiAoZGlyZWN0aW9uWCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbkJvdHRvbUxlZnRFbGVtZW50VXRpbC5saW5lTGVmdChlbGVtZW50TmV4dCwgZWxlbWVudEZyb20sIE1fc3RhcnQsIGN1cnZlLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbkJvdHRvbUxlZnRFbGVtZW50VXRpbC5yaWdodExlZnQoZWxlbWVudE5leHQsIE1fc3RhcnQsIGN1cnZlLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50cyk7XG4gICAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGxpbmVDb25uZWN0UmlnaHQoZWxlbWVudE5leHQ6IElSZWN0LCBzdGFydDogSVBvaW50LCBsaW5lQ3VydmU6IG51bWJlciwgb2JzdGFjbGVSZWN0OiBJUmVjdFtdLCBzZXBhcmF0ZWRQb2ludHM6IEFycmF5PElQb2ludHM+KSB7XG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSB7XG4gICAgICB4OiAoZWxlbWVudE5leHQueCA/PyAwKSAtIGxpbmVDdXJ2ZSAqIDMsXG4gICAgICB5OiAoZWxlbWVudE5leHQueSA/PyAwKSArIChlbGVtZW50TmV4dC5oZWlnaHQgPz8gMCkgLyAyLFxuICAgIH07XG5cbiAgICBjb25zdCBlbmRQb3NpdGlvblggPSBjbG9uZURlZXAoZW5kUG9zaXRpb24pO1xuXG4gICAgbGV0IHNlcGFyYXRlZFBvaW50c0NoZWNrQW5kQXZvaWRCbG9ja3M6IEFycmF5PElQb2ludHM+ID0gW107XG4gICAgbGV0IHsgcGF0aCwgZW5kUGF0aCB9ID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2NrcyhzdGFydC54ID8/IDAsIHN0YXJ0LnkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvblgsIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2Nrcyk7XG5cbiAgICBpZiAoTWF0aC5hYnMoKHN0YXJ0LnggPz8gMCkgLSBlbmRQb3NpdGlvbi54KSA8IDEwKSB7XG4gICAgICBwYXRoID0gJyc7XG4gICAgICBlbmRQYXRoID0ge1xuICAgICAgICB4OiBzdGFydC54LFxuICAgICAgICB5OiBzdGFydC55LFxuICAgICAgfTtcblxuICAgICAgc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2NrcyA9IFtdO1xuICAgIH1cblxuICAgIHNlcGFyYXRlZFBvaW50cy5zcGxpY2Uoc2VwYXJhdGVkUG9pbnRzLmxlbmd0aCwgMCwgLi4uc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2Nrcyk7XG5cbiAgICAvLyBzYXUga2hpIMSRw6MgxJFpIG5nYW5nIHbDoCB0csOhbmggY8OhYyBraOG7kWksIHRp4bq/cCB0aGVvIGzDoCDEkWkgdGnhur9wIGjGsOG7m25nIGzDqm4geHXhu5FuZyDEkeG7gyB24buBIGto4buRaSBj4bqnbiBu4buRaSB04bubaSwgY+G6p24gY2hlY2sgeGVtIMSRaeG7g20gZW5kIFggbsOzIMSRYW5nIOG7nyBoxrDhu5tuZyBuw6BvXG4gICAgY29uc3QgZGlyZWN0aW9uWSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KGVuZFBhdGgueSwgZW5kUG9zaXRpb24ueSwgJ3knKTtcblxuICAgIGlmIChkaXJlY3Rpb25ZID09PSAnY2VudGVyJykge1xuICAgICAgY29uc3QgTEVuZCA9IHsgeDogZWxlbWVudE5leHQueCA/PyAwLCB5OiBlbmRQYXRoLnkgfTtcblxuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogZW5kUGF0aCwgZW5kOiBMRW5kLCBtb2RlOiAnaG9yaXpvbnRhbCcsIGlkOiAnZicgfSk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRQYXRoOiBgJHtwYXRofSBMICR7TEVuZC54fSAke0xFbmQueX1gLFxuICAgICAgICBlbmRQYXRoOiBMRW5kLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQgbGluZUN1cnZlU3ViWSA9IGxpbmVDdXJ2ZTtcblxuICAgIGlmIChNYXRoLmFicygoZW5kUGF0aC55ID8/IDApIC0gZW5kUG9zaXRpb24ueSkgPCBsaW5lQ3VydmUgKiAyKSB7XG4gICAgICBsaW5lQ3VydmVTdWJZID0gTWF0aC5hYnMoKGVuZFBhdGgueSA/PyAwKSAtIGVuZFBvc2l0aW9uLnkpIC8gMjtcblxuICAgICAgY29uc3QgY29vcmRRMSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IGVuZFBhdGgueCA/PyAwLCB5OiBlbmRQYXRoLnkgPz8gMCB9LCBgcmlnaHQtJHtkaXJlY3Rpb25ZID09PSAnYWJvdmUnID8gJ2Fib3ZlJyA6ICd1bmRlcid9YCwgbGluZUN1cnZlU3ViWSAqIDIsIGxpbmVDdXJ2ZVN1YlkpOyAvLyB0w61uaCDEkW/huqFuIGNvbmcgdOG7qyDEkcaw4budbmcgbmdhbmcgc2FuZyDEkcaw4budbmcgdGjhurNuZ1xuICAgICAgY29uc3QgcGF0aFExID0gYFEgJHtjb29yZFExLngxfSwke2Nvb3JkUTEueTF9ICR7Y29vcmRRMS54fSwke2Nvb3JkUTEueX1gOyAvLyB04burIG5nYW5nIHNhbmcgdGjhurNuZyBwaOG6o2kgY8OzIMSRxrDhu51uZyBjb25nXG4gICAgICBjb25zdCBjb29yZFEyID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogY29vcmRRMS54ID8/IDAsIHk6IGNvb3JkUTEueSA/PyAwIH0sIGAke2RpcmVjdGlvblkgPT09ICdhYm92ZScgPyAnYWJvdmUnIDogJ3VuZGVyJ30tcmlnaHRgLCBsaW5lQ3VydmVTdWJZICogMiwgbGluZUN1cnZlU3ViWSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyB0aOG6s25nIHNhbmcgbmdhbmdcbiAgICAgIGNvbnN0IHBhdGhRMiA9IGBRICR7Y29vcmRRMi54MX0sJHtjb29yZFEyLnkxfSAke2Nvb3JkUTIueH0sJHtjb29yZFEyLnl9YDtcblxuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogZW5kUGF0aCwgZW5kOiB7IHg6IGNvb3JkUTEueCA/PyAwLCB5OiBjb29yZFExLnkgPz8gMCB9LCBtb2RlOiAnaG9yaXpvbnRhbC1zaW5nbGUtY3VydmUnLCBpZDogJ2cnIH0pO1xuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBjb29yZFExLnggPz8gMCwgeTogY29vcmRRMS55ID8/IDAgfSwgZW5kOiB7IHg6IGNvb3JkUTIueCA/PyAwLCB5OiBjb29yZFEyLnkgPz8gMCB9LCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICdqJyB9KTtcbiAgICAgIGNvbnN0IGxpbmVDbG9zZSA9IHRoaXMuY2xvc2VMaW5lKHsgeDogY29vcmRRMi54ID8/IDAsIHk6IGNvb3JkUTIueSA/PyAwIH0sIGVuZFBvc2l0aW9uLCBsaW5lQ3VydmUsIGVsZW1lbnROZXh0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkUGF0aDogYCR7cGF0aH0gJHtwYXRoUTF9ICR7cGF0aFEyfSAke2xpbmVDbG9zZX1gLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBjb29yZFExID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSA/PyAwIH0sIGByaWdodC0ke2RpcmVjdGlvblkgPT09ICdhYm92ZScgPyAnYWJvdmUnIDogJ3VuZGVyJ31gLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG5cbiAgICBjb25zdCBwYXRoUTEgPSBgUSAke2Nvb3JkUTEueDF9LCR7Y29vcmRRMS55MX0gJHtjb29yZFExLnh9LCR7Y29vcmRRMS55fWA7IC8vIHThu6sgbmdhbmcgc2FuZyB0aOG6s25nIHBo4bqjaSBjw7MgxJHGsOG7nW5nIGNvbmdcbiAgICBjb25zdCBlbmRQb3NpdGlvblkgPSBjbG9uZURlZXAoZW5kUG9zaXRpb24pO1xuXG4gICAgZW5kUG9zaXRpb25ZLnkgPSBNb0NhbnZhc0NhbGN1bGF0b3JCcmFuY2hVdGlsLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb25ZLCBlbmRQb3NpdGlvbi55LCBsaW5lQ3VydmUpO1xuXG4gICAgY29uc3Qgc3RyYWlnaHRMaW5lID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2Nrc1koY29vcmRRMS54ID8/IDAsIGNvb3JkUTEueSA/PyAwLCBsaW5lQ3VydmUsIGVuZFBvc2l0aW9uWSwgZGlyZWN0aW9uWSwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgY29uc3QgY29vcmRRMiA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgeTogc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwIH0sIGAke2RpcmVjdGlvblkgPT09ICdhYm92ZScgPyAnYWJvdmUnIDogJ3VuZGVyJ30tcmlnaHRgLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyB0aOG6s25nIHNhbmcgbmdhbmdcbiAgICBjb25zdCBwYXRoUTIgPSBgUSAke2Nvb3JkUTIueDF9LCR7Y29vcmRRMi55MX0gJHtjb29yZFEyLnh9LCR7Y29vcmRRMi55fWA7IC8vIHThu6sgbmdhbmcgc2FuZyB0aOG6s25nIHBo4bqjaSBjw7MgxJHGsOG7nW5nIGNvbmdcblxuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSB9LCBlbmQ6IHsgeDogY29vcmRRMS54ID8/IDAsIHk6IGNvb3JkUTEueSA/PyAwIH0sIG1vZGU6ICdob3Jpem9udGFsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnZycgfSk7XG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDAsIHk6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnkgPz8gMCB9LCBlbmQ6IHsgeDogY29vcmRRMi54ID8/IDAsIHk6IGNvb3JkUTIueSA/PyAwIH0sIG1vZGU6ICd2ZXJ0aWNhbC1zaW5nbGUtY3VydmUnLCBpZDogJ2onIH0pO1xuICAgIGNvbnN0IGxpbmVDbG9zZSA9IHRoaXMuY2xvc2VMaW5lKHsgeDogY29vcmRRMi54ID8/IDAsIHk6IGNvb3JkUTIueSA/PyAwIH0sIGVuZFBvc2l0aW9uLCBsaW5lQ3VydmUsIGVsZW1lbnROZXh0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRQYXRoOiBgJHtwYXRofSAke3BhdGhRMX0gJHtzdHJhaWdodExpbmUucGF0aH0gJHtwYXRoUTJ9ICR7bGluZUNsb3NlfWAsXG4gICAgICBlbmRQYXRoOiBzdHJhaWdodExpbmUuZW5kUGF0aCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbGluZUNvbm5lY3RMZWZ0KGVsZW1lbnROZXh0OiBJUmVjdCwgZWxlbWVudEZyb206IElSZWN0LCBzdGFydDogSVBvaW50LCBsaW5lQ3VydmU6IG51bWJlciwgb2JzdGFjbGVSZWN0OiBJUmVjdFtdLCBzZXBhcmF0ZWRQb2ludHM6IEFycmF5PElQb2ludHM+KSB7XG4gICAgY29uc3QgZW5kUG9zaXRpb25PcmlnaW4gPSB7XG4gICAgICB4OiAoZWxlbWVudE5leHQueCA/PyAwKSAtIGxpbmVDdXJ2ZSAqIDEuNSxcbiAgICAgIHk6IChlbGVtZW50TmV4dC55ID8/IDApICsgKGVsZW1lbnROZXh0LmhlaWdodCA/PyAwKSAvIDIsXG4gICAgfTtcblxuICAgIGNvbnN0IGVuZFBvc2l0aW9uID0gY2xvbmVEZWVwKGVuZFBvc2l0aW9uT3JpZ2luKTtcbiAgICBjb25zdCBkaXJlY3Rpb25TdGFydFkgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChzdGFydC55LCBlbmRQb3NpdGlvbk9yaWdpbi55LCAneScpO1xuXG4gICAgY29uc3QgZW5kWSA9IGRpcmVjdGlvblN0YXJ0WSA9PT0gJ3VuZGVyJyB8fCBkaXJlY3Rpb25TdGFydFkgPT09ICdjZW50ZXInID8gKGVsZW1lbnROZXh0LnkgPz8gMCkgOiAoZWxlbWVudE5leHQueSA/PyAwKSArIChlbGVtZW50TmV4dC5oZWlnaHQgPz8gMCk7XG5cbiAgICBlbmRQb3NpdGlvbi55ID0gTW9DYW52YXNDYWxjdWxhdG9yQnJhbmNoVXRpbC5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uU3RhcnRZLCBlbmRZLCBsaW5lQ3VydmUgKiAyKTtcblxuICAgIGNvbnN0IHBhdGhRID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogKHN0YXJ0LnggPz8gMCkgKyAxMCwgeTogc3RhcnQueSA/PyAwIH0sIGByaWdodC0ke2RpcmVjdGlvblN0YXJ0WSA9PT0gJ3VuZGVyJyA/ICd1bmRlcicgOiAnYWJvdmUnfWAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTtcbiAgICBjb25zdCBzdGFydFFMID0geyBseDogcGF0aFEueCwgbHk6IE1vQ2FudmFzQ2FsY3VsYXRvckJyYW5jaFV0aWwubWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvblN0YXJ0WSwgcGF0aFEueSA/PyAwLCAoZWxlbWVudEZyb20uaGVpZ2h0ID8/IDApIC8gMiwgdHJ1ZSkgfTtcblxuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHsgeDogc3RhcnQueCA/PyAwLCB5OiBzdGFydC55ID8/IDAgfSwgZW5kOiB7IHg6IHBhdGhRLnggPz8gMCwgeTogcGF0aFEueSA/PyAwIH0sIG1vZGU6ICdob3Jpem9udGFsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnMScgfSk7XG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBwYXRoUS54ID8/IDAsIHk6IHBhdGhRLnkgPz8gMCB9LCBlbmQ6IHsgeDogc3RhcnRRTC5seCA/PyAwLCB5OiBzdGFydFFMLmx5IH0sIG1vZGU6ICdob3Jpem9udGFsJywgaWQ6ICcyJyB9KTtcblxuICAgIGlmIChkaXJlY3Rpb25TdGFydFkgPT09ICdjZW50ZXInKSB7XG4gICAgICBjb25zdCBjb29yZFExID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogc3RhcnRRTC5seCA/PyAwLCB5OiBzdGFydFFMLmx5ID8/IDAgfSwgYGFib3ZlLWxlZnRgLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG5cbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHsgeDogc3RhcnRRTC5seCA/PyAwLCB5OiBzdGFydFFMLmx5IH0sIGVuZDogeyB4OiBjb29yZFExLnggPz8gMCwgeTogY29vcmRRMS55ID8/IDAgfSwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnMycgfSk7XG5cbiAgICAgIGNvbnN0IGVuZFBhdGggPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja0FuZEF2b2lkQmxvY2tzTGVmdChjb29yZFExLnggPz8gMCwgY29vcmRRMS55ID8/IDAsIGxpbmVDdXJ2ZSwgZW5kUG9zaXRpb24sIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzKTtcblxuICAgICAgY29uc3QgZGlyZWN0aW9uU3RhcnRZMiA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KGVuZFBhdGgueSwgZW5kUG9zaXRpb25PcmlnaW4ueSwgJ3knKTtcblxuICAgICAgY29uc3QgY29vcmRRMiA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IGVuZFBhdGgueCA/PyAwLCB5OiBlbmRQYXRoLnkgPz8gMCB9LCBgbGVmdC0ke2RpcmVjdGlvblN0YXJ0WTIgPT09ICdhYm92ZScgPyAnYWJvdmUnIDogJ3VuZGVyJ31gLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG5cbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSA/PyAwIH0sIGVuZDogeyB4OiBjb29yZFEyLnggPz8gMCwgeTogY29vcmRRMi55ID8/IDAgfSwgbW9kZTogJ2hvcml6b250YWwtc2luZ2xlLWN1cnZlJywgaWQ6ICc0JyB9KTtcbiAgICAgIHRoaXMuY2xvc2VMaW5lKHsgeDogY29vcmRRMi54ID8/IDAsIHk6IGNvb3JkUTIueSA/PyAwIH0sIGVuZFBvc2l0aW9uT3JpZ2luLCBsaW5lQ3VydmUsIGVsZW1lbnROZXh0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkUGF0aDogYGAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IHN0cmFpZ2h0TGluZSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3NZTGVmdChzdGFydFFMLmx4ID8/IDAsIHN0YXJ0UUwubHkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvbiwgZGlyZWN0aW9uU3RhcnRZLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICBpZiAoTWF0aC5hYnMoKGVuZFBvc2l0aW9uLnggPz8gMCkgLSAoc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwKSkgPD0gbGluZUN1cnZlICogMikge1xuICAgICAgZW5kUG9zaXRpb24ueCA9IHN0cmFpZ2h0TGluZS5lbmRQYXRoLng7XG4gICAgfVxuXG4gICAgaWYgKChkaXJlY3Rpb25TdGFydFkgPT09ICd1bmRlcicgJiYgc3RhcnRRTC5seSA+IGVuZFBvc2l0aW9uLnkpIHx8IChkaXJlY3Rpb25TdGFydFkgPT09ICdhYm92ZScgJiYgc3RhcnRRTC5seSA8IGVuZFBvc2l0aW9uLnkpIHx8IHN0YXJ0UUwubHkgPT09IGVuZFBvc2l0aW9uLnkpIHtcbiAgICAgIGxldCBjb25kaXRpb24gPSB0cnVlO1xuXG4gICAgICB3aGlsZSAoY29uZGl0aW9uKSB7XG4gICAgICAgIGNvbnN0IGNoZWNrQW5kQXZvaWRCbG9ja3NZTGVmdCA9IHNlcGFyYXRlZFBvaW50cy5maW5kSW5kZXgoKGl0ZW0pID0+IGl0ZW0uaWQgPT09ICdjaGVja0FuZEF2b2lkQmxvY2tzWUxlZnQnKTtcblxuICAgICAgICBpZiAoY2hlY2tBbmRBdm9pZEJsb2Nrc1lMZWZ0ICE9PSAtMSkge1xuICAgICAgICAgIHNlcGFyYXRlZFBvaW50cy5zcGxpY2UoY2hlY2tBbmRBdm9pZEJsb2Nrc1lMZWZ0LCAxKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hlY2tBbmRBdm9pZEJsb2Nrc1lMZWZ0ID09PSAtMSkge1xuICAgICAgICAgIGNvbmRpdGlvbiA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHN0cmFpZ2h0TGluZS5wYXRoID0gJyc7XG4gICAgICBzdHJhaWdodExpbmUuZW5kUGF0aCA9IHtcbiAgICAgICAgeDogc3RhcnRRTC5seCA/PyAwLFxuICAgICAgICB5OiBzdGFydFFMLmx5ID8/IDAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmIChlbmRQb3NpdGlvbi54ID09PSBzdHJhaWdodExpbmUuZW5kUGF0aC54KSB7XG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBzdHJhaWdodExpbmUuZW5kUGF0aCwgZW5kOiBlbmRQb3NpdGlvbk9yaWdpbiwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnNmEgJyArIGRpcmVjdGlvblN0YXJ0WSB9KTtcbiAgICAgIHRoaXMuY2xvc2VMaW5lKHsgeDogZW5kUG9zaXRpb25PcmlnaW4ueCA/PyAwLCB5OiBlbmRQb3NpdGlvbk9yaWdpbi55ID8/IDAgfSwgZW5kUG9zaXRpb25PcmlnaW4sIGxpbmVDdXJ2ZSwgZWxlbWVudE5leHQsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyBraeG7g20gdHJhIG5nYXkga2hpIGN1YSBjw7Mgdsaw4bubbmcgYWkga2jDtG5nIHLhu5NpIGjhurVuZyB24bq9IFExLFxuICAgIGNvbnN0IGVsZW1lbnRCbG9ja1JvYWQgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja0xpbmVQYXNzQmxvY2tIb3Jpem9udGFsKHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgZW5kUG9zaXRpb24ueCwgc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwLCAneCcsIG9ic3RhY2xlUmVjdCkgYXMgSVJlY3Q7XG4gICAgY29uc3QgZGlyZWN0aW9uTmV4dFggPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDAsIGVuZFBvc2l0aW9uT3JpZ2luLngsICd4Jyk7XG4gICAgY29uc3QgY29vcmRRMSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgeTogc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwIH0sIGAke2RpcmVjdGlvblN0YXJ0WX0tJHtkaXJlY3Rpb25OZXh0WH1gLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG4gICAgY29uc3QgZWxlbWVudEJsb2NrUm9hZFggPSAoZWxlbWVudEJsb2NrUm9hZD8ueCA/PyAwKSArIChlbGVtZW50QmxvY2tSb2FkPy53aWR0aCA/PyAwKTtcblxuICAgIGlmIChlbGVtZW50QmxvY2tSb2FkICYmIE1hdGguYWJzKGVsZW1lbnRCbG9ja1JvYWRYIC0gKHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCkpIDw9IGxpbmVDdXJ2ZSAqIDIpIHtcbiAgICAgIGNvb3JkUTEueDEgPSBzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDA7XG4gICAgICBjb29yZFExLnkxID0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwO1xuICAgICAgY29vcmRRMS54ID0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwO1xuICAgICAgY29vcmRRMS55ID0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwO1xuICAgIH1cblxuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLCBlbmQ6IHsgeDogY29vcmRRMS54ID8/IDAsIHk6IGNvb3JkUTEueSA/PyAwIH0sIG1vZGU6ICd2ZXJ0aWNhbC1zaW5nbGUtY3VydmUnLCBpZDogJzZhICcgKyBkaXJlY3Rpb25TdGFydFkgfSk7XG5cbiAgICBjb25zdCBlbmRQYXRoID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2Nrc0xlZnQoY29vcmRRMS54ID8/IDAsIGNvb3JkUTEueSA/PyAwLCBsaW5lQ3VydmUsIGVuZFBvc2l0aW9uLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50cyk7XG4gICAgY29uc3QgZGlyZWN0aW9uU3RhcnRZMiA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KGVuZFBhdGgueSwgZW5kUG9zaXRpb25PcmlnaW4ueSwgJ3knKTtcbiAgICBjb25zdCBkaXJlY3Rpb25OZXh0WSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KGNvb3JkUTEueCA/PyAwLCBlbmRQYXRoLngsICd4Jyk7XG4gICAgY29uc3QgY29vcmRRMiA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IGVuZFBhdGgueCA/PyAwLCB5OiBlbmRQYXRoLnkgPz8gMCB9LCBgJHtkaXJlY3Rpb25OZXh0WX0tJHtkaXJlY3Rpb25TdGFydFkyID09PSAnYWJvdmUnID8gJ2Fib3ZlJyA6ICd1bmRlcid9YCwgbGluZUN1cnZlLCBsaW5lQ3VydmUpOyAvLyB0w61uaCDEkW/huqFuIGNvbmcgdOG7qyDEkcaw4budbmcgbmdhbmcgc2FuZyDEkcaw4budbmcgdGjhurNuZ1xuXG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogZW5kUGF0aCwgZW5kOiB7IHg6IGNvb3JkUTIueCA/PyAwLCB5OiBjb29yZFEyLnkgPz8gMCB9LCBtb2RlOiAnaG9yaXpvbnRhbC1zaW5nbGUtY3VydmUnLCBpZDogJzYnIH0pO1xuXG4gICAgdGhpcy5jbG9zZUxpbmUoeyB4OiBjb29yZFEyLnggPz8gMCwgeTogY29vcmRRMi55ID8/IDAgfSwgZW5kUG9zaXRpb25PcmlnaW4sIGxpbmVDdXJ2ZSwgZWxlbWVudE5leHQsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZFBhdGg6IGBgLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjbG9zZUxpbmUoc3RhcnQ6IElQb3NpdGlvblhZLCBlbmQ6IElQb3NpdGlvblhZLCBsaW5lQ3VydmU6IG51bWJlciwgZWxlbWVudE5leHQ6IElSZWN0LCBzZXBhcmF0ZWRQb2ludHM6IEFycmF5PElQb2ludHM+KSB7XG4gICAgY29uc3QgZGlyZWN0aW9uWSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KHN0YXJ0LnksIGVuZC55LCAneScpO1xuXG4gICAgaWYgKHN0YXJ0LnkgPT09IGVuZC55KSB7XG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0LCBlbmQ6IHsgeDogZWxlbWVudE5leHQueCA/PyAwLCB5OiBlbmQueSA/PyAwIH0sIG1vZGU6ICdob3Jpem9udGFsJywgaWQ6ICc3JyB9KTtcblxuICAgICAgcmV0dXJuIGBMICR7ZWxlbWVudE5leHQueH0gJHtlbmQueX1gO1xuICAgIH1cblxuICAgIGNvbnN0IGxpbmUgPSB7IHg6IHN0YXJ0LngsIHk6IHN0YXJ0LnkgfTtcbiAgICBjb25zdCBlbmRQb2ludCA9IHtcbiAgICAgIHg6IGVsZW1lbnROZXh0LngsXG4gICAgICB5OiBlbmQueSxcbiAgICB9O1xuICAgIGxldCBwYXRoUTEgPSAnJztcblxuICAgIGlmIChNYXRoLmFicyhzdGFydC55IC0gZW5kLnkpID4gbGluZUN1cnZlKSB7XG4gICAgICBjb25zdCB0b1kgPSBNb0NhbnZhc0NhbGN1bGF0b3JCcmFuY2hVdGlsLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb25ZLCBlbmQueSwgbGluZUN1cnZlKTtcblxuICAgICAgbGluZS55ID0gdG9ZO1xuXG4gICAgICBjb25zdCBkaXJlY3Rpb25YID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQobGluZS54LCBlbGVtZW50TmV4dC54LCAneCcpO1xuICAgICAgY29uc3QgY29vcmRRMSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IGxpbmUueCA/PyAwLCB5OiBsaW5lLnkgPz8gMCB9LCBgJHtkaXJlY3Rpb25ZID09PSAnYWJvdmUnID8gJ2Fib3ZlJyA6ICd1bmRlcid9LSR7ZGlyZWN0aW9uWH1gLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG5cbiAgICAgIGxldCBsaW5lTCA9ICcnO1xuXG4gICAgICBpZiAoY29vcmRRMS55ID09PSBlbmQueSkge1xuICAgICAgICBsaW5lTCA9IGBMICR7ZW5kUG9pbnQueH0gJHtlbmRQb2ludC55fWA7XG4gICAgICB9XG5cbiAgICAgIHBhdGhRMSA9IGBRICR7Y29vcmRRMS54MX0sJHtjb29yZFExLnkxfSAke2Nvb3JkUTEueH0sJHtjb29yZFExLnl9ICR7bGluZUx9YDsgLy8gdOG7qyBuZ2FuZyBzYW5nIHRo4bqzbmcgcGjhuqNpIGPDsyDEkcaw4budbmcgY29uZ1xuICAgIH1cblxuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQsIGVuZDogbGluZSwgbW9kZTogJ2hvcml6b250YWwnLCBpZDogJzgnIH0pO1xuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IGxpbmUsIGVuZDogZW5kUG9pbnQsIG1vZGU6ICd2ZXJ0aWNhbC1zaW5nbGUtY3VydmUnLCBpZDogJzknIH0pO1xuXG4gICAgcmV0dXJuIGBMICR7bGluZS54fSAke2xpbmUueX0gJHtwYXRoUTF9YDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGxpbmVDb25uZWN0TGVmdFdpdGhCb3R0b21TdGFydChlbGVtZW50TmV4dDogSVJlY3QsIGVsZW1lbnRGcm9tOiBJUmVjdCwgc3RhcnQ6IElQb2ludCwgbGluZUN1cnZlOiBudW1iZXIsIG9ic3RhY2xlUmVjdDogSVJlY3RbXSwgc2VwYXJhdGVkUG9pbnRzOiBBcnJheTxJUG9pbnRzPikge1xuICAgIGNvbnN0IGVuZFBvc2l0aW9uT3JpZ2luID0ge1xuICAgICAgeDogKGVsZW1lbnROZXh0LnggPz8gMCkgKyAoZWxlbWVudE5leHQud2lkdGggPz8gMCkgLyAyLFxuICAgICAgeTogKGVsZW1lbnROZXh0LnkgPz8gMCkgLSBsaW5lQ3VydmUsXG4gICAgfTtcbiAgICBjb25zdCBlbmRQb3NpdGlvbiA9IGNsb25lRGVlcChlbmRQb3NpdGlvbk9yaWdpbik7XG4gICAgY29uc3QgZGlyZWN0aW9uU3RhcnRZID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoc3RhcnQueSwgZW5kUG9zaXRpb25PcmlnaW4ueSwgJ3knKTtcbiAgICBjb25zdCBlbmRZID0gZWxlbWVudE5leHQueSA/PyAwO1xuXG4gICAgaWYgKGRpcmVjdGlvblN0YXJ0WSA9PT0gJ3VuZGVyJykge1xuICAgICAgZW5kUG9zaXRpb24ueSA9IGVuZFkgLSBsaW5lQ3VydmUgKiAzO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0UUwgPSB7IGx4OiBzdGFydC54LCBseTogKHN0YXJ0LnkgPz8gMCkgKyBsaW5lQ3VydmUgfTtcbiAgICBjb25zdCBsaW5lID0ge1xuICAgICAgc3RhcnQ6IHsgeDogc3RhcnQueCA/PyAwLCB5OiBzdGFydC55ID8/IDAgfSxcbiAgICAgIGVuZDogeyB4OiBzdGFydFFMLmx4ID8/IDAsIHk6IHN0YXJ0UUwubHkgPz8gMCB9LFxuICAgIH07XG4gICAgY29uc3QgbmV3RW5kID0geyB4OiBlbGVtZW50RnJvbS54IC0gbGluZUN1cnZlICogMiwgeTogbGluZS5lbmQueSAtIGxpbmVDdXJ2ZSB9O1xuXG4gICAgaWYgKGRpcmVjdGlvblN0YXJ0WSA9PT0gJ2Fib3ZlJykge1xuICAgICAgbGluZS5lbmQgPSB7IHg6IChzdGFydC54ID8/IDApIC0gbGluZUN1cnZlLCB5OiAoc3RhcnQueSA/PyAwKSArIGxpbmVDdXJ2ZSAqIDIgfTtcblxuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogbGluZS5lbmQsIGVuZDogbmV3RW5kLCBtb2RlOiAnaG9yaXpvbnRhbC1zaW5nbGUtY3VydmUnLCBpZDogJzEnIH0pO1xuICAgIH1cbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBsaW5lLnN0YXJ0LCBlbmQ6IGxpbmUuZW5kLCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICcxJyB9KTsgLy8gbGluZSB24bq9IMSRaSBraOG7j2kga2jhu5FpIMSR4bqndSB0acOqblxuICAgIGNvbnN0IHN0YXJ0TmV3TGluZSA9IGRpcmVjdGlvblN0YXJ0WSA9PT0gJ2Fib3ZlJyA/IG5ld0VuZCA6IGxpbmUuZW5kO1xuXG4gICAgaWYgKGRpcmVjdGlvblN0YXJ0WSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgIGNvbnN0IGNvb3JkUTEgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5kcmF3TGluZVEoeyB4OiBzdGFydFFMLmx4ID8/IDAsIHk6IHN0YXJ0UUwubHkgPz8gMCB9LCBgYWJvdmUtbGVmdGAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIG5nYW5nIHNhbmcgxJHGsOG7nW5nIHRo4bqzbmdcblxuICAgICAgLy8gdOG7qyBuZ2FuZyBzYW5nIHRo4bqzbmcgcGjhuqNpIGPDsyDEkcaw4budbmcgY29uZ1xuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBzdGFydFFMLmx4ID8/IDAsIHk6IHN0YXJ0UUwubHkgfSwgZW5kOiB7IHg6IGNvb3JkUTEueCA/PyAwLCB5OiBjb29yZFExLnkgPz8gMCB9LCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICczJyB9KTtcblxuICAgICAgY29uc3QgZW5kUGF0aCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3NMZWZ0KGNvb3JkUTEueCA/PyAwLCBjb29yZFExLnkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvbiwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHMpO1xuICAgICAgY29uc3QgZGlyZWN0aW9uU3RhcnRZMiA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KGVuZFBhdGgueSwgZW5kUG9zaXRpb25PcmlnaW4ueSwgJ3knKTtcbiAgICAgIGNvbnN0IGNvb3JkUTIgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5kcmF3TGluZVEoeyB4OiBlbmRQYXRoLnggPz8gMCwgeTogZW5kUGF0aC55ID8/IDAgfSwgYGxlZnQtJHtkaXJlY3Rpb25TdGFydFkyID09PSAnYWJvdmUnID8gJ2Fib3ZlJyA6ICd1bmRlcid9YCwgbGluZUN1cnZlLCBsaW5lQ3VydmUpOyAvLyB0w61uaCDEkW/huqFuIGNvbmcgdOG7qyDEkcaw4budbmcgbmdhbmcgc2FuZyDEkcaw4budbmcgdGjhurNuZ1xuXG4gICAgICAvLyB04burIG5nYW5nIHNhbmcgdGjhurNuZyBwaOG6o2kgY8OzIMSRxrDhu51uZyBjb25nXG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiB7IHg6IGVuZFBhdGgueCA/PyAwLCB5OiBlbmRQYXRoLnkgPz8gMCB9LCBlbmQ6IHsgeDogY29vcmRRMi54ID8/IDAsIHk6IGNvb3JkUTIueSA/PyAwIH0sIG1vZGU6ICdob3Jpem9udGFsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnNCcgfSk7XG4gICAgICB0aGlzLmNsb3NlTGluZSh7IHg6IGNvb3JkUTIueCA/PyAwLCB5OiBjb29yZFEyLnkgPz8gMCB9LCBlbmRQb3NpdGlvbk9yaWdpbiwgbGluZUN1cnZlLCBlbGVtZW50TmV4dCwgc2VwYXJhdGVkUG9pbnRzKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZFBhdGg6IGBgLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBraeG7g20gdHJhIGjGsOG7m25nIHRo4bqzbmcgxJHhur9uIGVuZCwgbuG6v3UgY8OzIGto4buRaSB0aMOsIHRyw6FuaFxuICAgIGNvbnN0IHN0cmFpZ2h0TGluZSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3NZTGVmdChzdGFydE5ld0xpbmUueCA/PyAwLCBzdGFydE5ld0xpbmUueSA/PyAwLCBsaW5lQ3VydmUsIGVuZFBvc2l0aW9uLCBkaXJlY3Rpb25TdGFydFksIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzKTtcblxuICAgIGNvbnN0IGRpcmVjdGlvblN0YXJ0WCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KHN0YXJ0LngsIGVuZFBvc2l0aW9uT3JpZ2luLngsICd4Jyk7XG5cbiAgICBpZiAoZGlyZWN0aW9uU3RhcnRYID09PSAnY2VudGVyJyAmJiBkaXJlY3Rpb25TdGFydFkgPT09ICd1bmRlcicpIHtcbiAgICAgIHRoaXMuY2xvc2VMaW5lV2l0aExpbmVUb3BCb3R0b20oeyB4OiBzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDAsIHk6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnkgPz8gMCB9LCBlbmRQb3NpdGlvbk9yaWdpbiwgbGluZUN1cnZlLCBlbGVtZW50TmV4dCwgc2VwYXJhdGVkUG9pbnRzKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgZFBhdGg6IGBgLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpZiAoKGRpcmVjdGlvblN0YXJ0WSA9PT0gJ3VuZGVyJyAmJiBzdGFydFFMLmx5ID4gZW5kUG9zaXRpb24ueSkgfHwgKGRpcmVjdGlvblN0YXJ0WSA9PT0gJ2Fib3ZlJyAmJiBzdGFydFFMLmx5IDwgZW5kUG9zaXRpb24ueSkgfHwgc3RhcnRRTC5seSA9PT0gZW5kUG9zaXRpb24ueSkge1xuICAgICAgbGV0IGNvbmRpdGlvbiA9IHRydWU7XG5cbiAgICAgIHdoaWxlIChjb25kaXRpb24pIHtcbiAgICAgICAgY29uc3QgY2hlY2tBbmRBdm9pZEJsb2Nrc1lMZWZ0ID0gc2VwYXJhdGVkUG9pbnRzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gJ2NoZWNrQW5kQXZvaWRCbG9ja3NZTGVmdCcpO1xuXG4gICAgICAgIGlmIChjaGVja0FuZEF2b2lkQmxvY2tzWUxlZnQgIT09IC0xKSB7XG4gICAgICAgICAgc2VwYXJhdGVkUG9pbnRzLnNwbGljZShjaGVja0FuZEF2b2lkQmxvY2tzWUxlZnQsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGVja0FuZEF2b2lkQmxvY2tzWUxlZnQgPT09IC0xKSB7XG4gICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3RyYWlnaHRMaW5lLnBhdGggPSAnJztcbiAgICAgIHN0cmFpZ2h0TGluZS5lbmRQYXRoID0ge1xuICAgICAgICB4OiBzdGFydFFMLmx4ID8/IDAsXG4gICAgICAgIHk6IHN0YXJ0UUwubHkgPz8gMCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgLy8ga2nhu4NtIHRyYSBuZ2F5IGtoaSBjdWEgY8OzIHbGsOG7m25nIGFpIGtow7RuZyBy4buTaSBo4bq1bmcgduG6vSBRMVxuICAgIGNvbnN0IGVsZW1lbnRCbG9ja1JvYWQgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja0xpbmVQYXNzQmxvY2tIb3Jpem9udGFsKHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgZW5kUG9zaXRpb24ueCwgc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwLCAneCcsIG9ic3RhY2xlUmVjdCkgYXMgSVJlY3Q7XG4gICAgY29uc3QgZGlyZWN0aW9uTmV4dFggPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDAsIGVuZFBvc2l0aW9uT3JpZ2luLngsICd4Jyk7XG4gICAgY29uc3QgY29vcmRRMSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgeTogc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwIH0sIGAke2RpcmVjdGlvblN0YXJ0WX0tJHtkaXJlY3Rpb25OZXh0WH1gLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG4gICAgY29uc3QgZWxlbWVudEJsb2NrUm9hZFggPSAoZWxlbWVudEJsb2NrUm9hZD8ueCA/PyAwKSArIChlbGVtZW50QmxvY2tSb2FkPy53aWR0aCA/PyAwKTtcblxuICAgIGlmIChlbGVtZW50QmxvY2tSb2FkICYmIE1hdGguYWJzKGVsZW1lbnRCbG9ja1JvYWRYIC0gKHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCkpIDw9IGxpbmVDdXJ2ZSAqIDIpIHtcbiAgICAgIGNvb3JkUTEueDEgPSBzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDA7XG4gICAgICBjb29yZFExLnkxID0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwO1xuICAgICAgY29vcmRRMS54ID0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwO1xuICAgICAgY29vcmRRMS55ID0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwO1xuICAgIH1cblxuICAgIC8vIGtp4buDbSB0cmEgdsOgIHbhur0gaMaw4bubbmcgbmdhbmdcbiAgICBjb25zdCBkaXJlY3Rpb25YVG9FbmQgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChjb29yZFExLnggPz8gMCwgZW5kUG9zaXRpb25PcmlnaW4ueCwgJ3gnKTtcblxuICAgIGVuZFBvc2l0aW9uLnggPSBNb0NhbnZhc0NhbGN1bGF0b3JCcmFuY2hVdGlsLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb25YVG9FbmQsIGVuZFBvc2l0aW9uLngsIGxpbmVDdXJ2ZSk7XG4gICAgaWYgKE1hdGguYWJzKChjb29yZFExLnkgPz8gMCkgLSBlbmRQb3NpdGlvbi55KSA8PSBsaW5lQ3VydmUpIHtcbiAgICAgIGVuZFBvc2l0aW9uLnkgLT0gbGluZUN1cnZlO1xuICAgIH1cbiAgICBjb25zdCBwYXRoSG9yaXpvbnRhbDogSVBvaW50c1tdID0gW107XG4gICAgY29uc3QgZW5kUGF0aCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3NMZWZ0KGNvb3JkUTEueCA/PyAwLCBjb29yZFExLnkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvbiwgb2JzdGFjbGVSZWN0LCBwYXRoSG9yaXpvbnRhbCk7XG5cbiAgICBpZiAoZGlyZWN0aW9uWFRvRW5kID09PSAnbGVmdCcgJiYgZW5kUGF0aC54ID4gKGNvb3JkUTEueCA/PyAwKSkge1xuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogc3RyYWlnaHRMaW5lLmVuZFBhdGgsIGVuZDogZW5kUG9zaXRpb25PcmlnaW4sIG1vZGU6ICd2ZXJ0aWNhbCcsIGlkOiAnNmEgJyArIGRpcmVjdGlvblN0YXJ0WSB9KTtcbiAgICAgIHRoaXMuY2xvc2VMaW5lV2l0aExpbmVUb3BCb3R0b20oZW5kUG9zaXRpb25PcmlnaW4sIGVuZFBvc2l0aW9uT3JpZ2luLCBsaW5lQ3VydmUsIGVsZW1lbnROZXh0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goLi4ucGF0aEhvcml6b250YWwpO1xuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLCBlbmQ6IHsgeDogY29vcmRRMS54ID8/IDAgLSAxMCwgeTogY29vcmRRMS55ID8/IDAgfSwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnNmEgJyArIGRpcmVjdGlvblN0YXJ0WSB9KTtcbiAgICB0aGlzLmNsb3NlTGluZVdpdGhMaW5lVG9wQm90dG9tKHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSA/PyAwIH0sIGVuZFBvc2l0aW9uT3JpZ2luLCBsaW5lQ3VydmUsIGVsZW1lbnROZXh0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRQYXRoOiBgYCxcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgY2xvc2VMaW5lV2l0aExpbmVUb3BCb3R0b20oc3RhcnQ6IElQb3NpdGlvblhZLCBlbmQ6IElQb3NpdGlvblhZLCBsaW5lQ3VydmU6IG51bWJlciwgZWxlbWVudE5leHQ6IElSZWN0LCBzZXBhcmF0ZWRQb2ludHM6IEFycmF5PElQb2ludHM+KSB7XG4gICAgY29uc3QgZGlyZWN0aW9uWCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KHN0YXJ0LngsIGVuZC54LCAneCcpO1xuXG4gICAgaWYgKHN0YXJ0LnggPT09IGVuZC54KSB7XG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0LCBlbmQ6IHsgeDogKGVsZW1lbnROZXh0LnggPz8gMCkgKyAoZWxlbWVudE5leHQud2lkdGggPz8gMCkgLyAyLCB5OiBlbGVtZW50TmV4dC55ID8/IDAgfSwgbW9kZTogJ2hvcml6b250YWwnLCBpZDogJzcnIH0pO1xuXG4gICAgICByZXR1cm4gYEwgJHtlbGVtZW50TmV4dC54fSAke2VuZC55fWA7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZSA9IHsgeDogc3RhcnQueCwgeTogc3RhcnQueSB9O1xuICAgIGNvbnN0IGVuZFBvaW50ID0ge1xuICAgICAgeDogZW5kLngsXG4gICAgICB5OiBlbGVtZW50TmV4dC55LFxuICAgIH07XG4gICAgY29uc3QgcGF0aFExID0gJyc7XG5cbiAgICBpZiAoTWF0aC5hYnMoc3RhcnQueCAtIGVuZC54KSA+IGxpbmVDdXJ2ZSkge1xuICAgICAgY29uc3QgZGlyZWN0aW9uWSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KHN0YXJ0LnksIGVuZFBvaW50LnksICd5Jyk7XG4gICAgICBjb25zdCB0b1ggPSBNb0NhbnZhc0NhbGN1bGF0b3JCcmFuY2hVdGlsLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb25YLCBlbmQueCwgbGluZUN1cnZlKTtcbiAgICAgIGNvbnN0IHRvWSA9IE1vQ2FudmFzQ2FsY3VsYXRvckJyYW5jaFV0aWwubWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvblksIGVuZC55LCBsaW5lQ3VydmUpO1xuXG4gICAgICBsaW5lLnggPSB0b1g7XG4gICAgICBsaW5lLnkgPSB0b1k7XG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBzdGFydCwgZW5kOiBsaW5lLCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICc5JyB9KTtcbiAgICB9XG5cbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBsaW5lLCBlbmQ6IGVuZFBvaW50LCBtb2RlOiAnaG9yaXpvbnRhbC1zaW5nbGUtY3VydmUnLCBpZDogJzknIH0pO1xuXG4gICAgcmV0dXJuIGBMICR7bGluZS54fSAke2xpbmUueX0gJHtwYXRoUTF9YDtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGxpbmVDb25uZWN0UmlnaHRXaXRoQm90dG9tU3RhcnQoZWxlbWVudE5leHQ6IElSZWN0LCBzdGFydDogSVBvaW50LCBsaW5lQ3VydmU6IG51bWJlciwgb2JzdGFjbGVSZWN0OiBJUmVjdFtdLCBzZXBhcmF0ZWRQb2ludHM6IEFycmF5PElQb2ludHM+KSB7XG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSB7XG4gICAgICB4OiAoZWxlbWVudE5leHQueCA/PyAwKSArIChlbGVtZW50TmV4dC53aWR0aCA/PyAwKSAvIDIsXG4gICAgICB5OiAoZWxlbWVudE5leHQueSA/PyAwKSAtIGxpbmVDdXJ2ZSxcbiAgICB9O1xuXG4gICAgLy8gduG6vSAxIMSRxrDhu51uZyB0aOG6s25nIHThu6sgxJFp4buDbSBzdGFydCByYSBuZ2/DoGkgxJHDo1xuICAgIGNvbnN0IGVuZCA9IHsgeDogKHN0YXJ0LnggPz8gMCkgKyAxMCwgeTogKHN0YXJ0LnkgPz8gMCkgKyAyMCB9O1xuXG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBzdGFydC54ID8/IDAsIHk6IHN0YXJ0LnkgPz8gMCB9LCBlbmQ6IGVuZCwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnMScgfSk7XG5cbiAgICBjb25zdCBlbmRQb3NpdGlvblggPSBjbG9uZURlZXAoZW5kUG9zaXRpb24pO1xuXG4gICAgZW5kUG9zaXRpb25YLnggLT0gMTA7XG5cbiAgICBsZXQgc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2NrczogQXJyYXk8SVBvaW50cz4gPSBbXTtcbiAgICBsZXQgeyBwYXRoLCBlbmRQYXRoIH0gPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja0FuZEF2b2lkQmxvY2tzKGVuZC54ID8/IDAsIGVuZC55ID8/IDAsIGxpbmVDdXJ2ZSwgZW5kUG9zaXRpb25YLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50c0NoZWNrQW5kQXZvaWRCbG9ja3MpO1xuXG4gICAgaWYgKE1hdGguYWJzKChzdGFydC54ID8/IDApIC0gZW5kUG9zaXRpb24ueCkgPCAxMCkge1xuICAgICAgcGF0aCA9ICcnO1xuICAgICAgZW5kUGF0aCA9IHtcbiAgICAgICAgeDogc3RhcnQueCxcbiAgICAgICAgeTogc3RhcnQueSxcbiAgICAgIH07XG5cbiAgICAgIHNlcGFyYXRlZFBvaW50c0NoZWNrQW5kQXZvaWRCbG9ja3MgPSBbXTtcbiAgICB9XG5cbiAgICBzZXBhcmF0ZWRQb2ludHMuc3BsaWNlKHNlcGFyYXRlZFBvaW50cy5sZW5ndGgsIDAsIC4uLnNlcGFyYXRlZFBvaW50c0NoZWNrQW5kQXZvaWRCbG9ja3MpO1xuXG4gICAgLy8gc2F1IGtoaSDEkcOjIMSRaSBuZ2FuZyB2w6AgdHLDoW5oIGPDoWMga2jhu5FpLCB0aeG6v3AgdGhlbyBsw6AgxJFpIHRp4bq/cCBoxrDhu5tuZyBsw6puIHh14buRbmcgxJHhu4MgduG7gSBraOG7kWkgY+G6p24gbuG7kWkgdOG7m2ksIGPhuqduIGNoZWNrIHhlbSDEkWnhu4NtIGVuZCBYIG7DsyDEkWFuZyDhu58gaMaw4bubbmcgbsOgb1xuICAgIGNvbnN0IGRpcmVjdGlvblkgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChlbmRQYXRoLnksIGVuZFBvc2l0aW9uLnksICd5Jyk7XG5cbiAgICBpZiAoZGlyZWN0aW9uWSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgIGNvbnN0IExFbmQgPSB7IHg6IGVsZW1lbnROZXh0LnggPz8gMCwgeTogZW5kUGF0aC55IH07XG5cbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IGVuZFBhdGgsIGVuZDogTEVuZCwgbW9kZTogJ2hvcml6b250YWwnLCBpZDogJ2YnIH0pO1xuXG4gICAgICAvLyDEkW/huqFuIG7DoHkgY2jGsGEgb2NlXG4gICAgICB0aGlzLmNsb3NlTGluZVdpdGhMaW5lVG9wQm90dG9tKExFbmQsIGVuZFBvc2l0aW9uLCBsaW5lQ3VydmUsIGVsZW1lbnROZXh0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkUGF0aDogYCR7cGF0aH0gTCAke0xFbmQueH0gJHtMRW5kLnl9YCxcbiAgICAgICAgZW5kUGF0aDogTEVuZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3QgY29vcmRRMSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IGVuZFBhdGgueCA/PyAwLCB5OiBlbmRQYXRoLnkgPz8gMCB9LCBgcmlnaHQtJHtkaXJlY3Rpb25ZID09PSAnYWJvdmUnID8gJ2Fib3ZlJyA6ICd1bmRlcid9YCwgbGluZUN1cnZlLCBsaW5lQ3VydmUpOyAvLyB0w61uaCDEkW/huqFuIGNvbmcgdOG7qyDEkcaw4budbmcgbmdhbmcgc2FuZyDEkcaw4budbmcgdGjhurNuZ1xuICAgIGNvbnN0IGVuZFBvc2l0aW9uWSA9IGNsb25lRGVlcChlbmRQb3NpdGlvbik7XG5cbiAgICBlbmRQb3NpdGlvblkueSA9IE1vQ2FudmFzQ2FsY3VsYXRvckJyYW5jaFV0aWwubWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvblksIGVuZFBvc2l0aW9uLnksIGxpbmVDdXJ2ZSkgLSAxMDtcblxuICAgIC8vIGPhuqduIGNoZWNrIGtoaSDEkWkgdGjhurNuZyBsw6puIGPDsyB2xrDhu5tuZyBraOG7kWkgbsOgbyBraMO0bmcgxJHhu4MgdGnhur9uIGzDqm5cbiAgICBjb25zdCBlbGVtZW50QmxvY2tSb2FkU3RyYWlnaHRMaW5lWSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQmxvY2tzRWxlbWVudFN0cmFpZ2h0WSgoZW5kUGF0aC54ID8/IDApICsgMTAsIGVuZFBhdGgueSA/PyAwLCBlbmRQb3NpdGlvblksIG9ic3RhY2xlUmVjdCk7XG5cbiAgICBpZiAoZWxlbWVudEJsb2NrUm9hZFN0cmFpZ2h0TGluZVkpIHtcbiAgICAgIGNvb3JkUTEueCA9IChlbGVtZW50QmxvY2tSb2FkU3RyYWlnaHRMaW5lWS54ID8/IDApICsgKGVsZW1lbnRCbG9ja1JvYWRTdHJhaWdodExpbmVZLndpZHRoID8/IDApICsgbGluZUN1cnZlO1xuICAgIH1cbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiB7IHg6IGVuZFBhdGgueCA/PyAwLCB5OiBlbmRQYXRoLnkgfSwgZW5kOiB7IHg6IGNvb3JkUTEueCA/PyAwLCB5OiBjb29yZFExLnkgPz8gMCB9LCBtb2RlOiAnaG9yaXpvbnRhbC1zaW5nbGUtY3VydmUnLCBpZDogJ2cnIH0pO1xuXG4gICAgbGV0IGF2b2lkQmxvY2tzWUxpbmU6IElQb2ludHNbXSA9IFtdO1xuICAgIGNvbnN0IHN0cmFpZ2h0TGluZSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3NZKGNvb3JkUTEueCA/PyAwLCBjb29yZFExLnkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvblksIGRpcmVjdGlvblksIG9ic3RhY2xlUmVjdCwgYXZvaWRCbG9ja3NZTGluZSk7XG5cbiAgICBpZiAoZGlyZWN0aW9uWSA9PT0gJ3VuZGVyJyAmJiAoY29vcmRRMS55ID8/IDApID4gZW5kUG9zaXRpb25ZLnkpIHtcbiAgICAgIGF2b2lkQmxvY2tzWUxpbmUgPSBbXTtcbiAgICAgIHN0cmFpZ2h0TGluZS5lbmRQYXRoID0geyB4OiBjb29yZFExLnggPz8gMCwgeTogY29vcmRRMS55ID8/IDAgfTtcbiAgICB9XG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goLi4uYXZvaWRCbG9ja3NZTGluZSk7XG4gICAgdGhpcy5jbG9zZUxpbmVXaXRoTGluZVRvcEJvdHRvbSh7IHg6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgeTogc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwIH0sIGVuZFBvc2l0aW9uLCBsaW5lQ3VydmUsIGVsZW1lbnROZXh0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRQYXRoOiBgYCxcbiAgICB9O1xuICB9XG59XG4iXX0=
377
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29ubmVjdC1uYXZpZ2F0aW9uLW5ldy1lbGVtZW50LnV0aWwuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzLXVpL2NvbXBvbmVudHMvZHJhdy1saW5lL3NyYy91dGlsL2Nvbm5lY3QtbmF2aWdhdGlvbi1uZXctZWxlbWVudC51dGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUUzQyxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUM3RixPQUFPLEVBQUUsOENBQThDLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQU1sRyxNQUFNLE9BQU8sdUNBQXVDO0lBQ2xELE1BQU0sQ0FBQyxxQ0FBcUMsR0FBRyxFQUFFLENBQUM7SUFDbEQsTUFBTSxDQUFDLFVBQVUsR0FBRyxZQUFZLENBQUM7SUFFakMsTUFBTSxDQUFDLG9CQUFvQixDQUFDLFdBQWtCLEVBQUUsV0FBa0IsRUFBRSxZQUFxQixFQUFFLGVBQStCLEVBQUUsS0FBYTtRQUN2SSxJQUFJLENBQUMsZUFBZSxDQUFDLFdBQVcsRUFBRSxXQUFXLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUN2RixDQUFDO0lBRUQsTUFBTSxDQUFDLGVBQWUsQ0FBQyxXQUFrQixFQUFFLFdBQWtCLEVBQUUsWUFBcUIsRUFBRSxlQUErQixFQUFFLEtBQWE7UUFDbEksSUFBSSxPQUFPLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEtBQUssSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLGdDQUFnQztRQUMvRixJQUFJLE9BQU8sR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcs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QyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLFVBQVUsS0FBSyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxRQUFRLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsMkNBQTJDO1FBQzlQLE1BQU0sTUFBTSxHQUFHLEtBQUssT0FBTyxDQUFDLEVBQUUsSUFBSSxPQUFPLENBQUMsRUFBRSxJQUFJLE9BQU8sQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMseUNBQXlDO1FBRW5ILGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxDQUFDO1FBQzlKLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsSUFBSSxFQUFFLHVCQUF1QixFQUFFLEVB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QUFFLENBQUMsQ0FBQztRQUMzSixlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7UUFFL0ksSUFBSSxlQUFlLEtBQUssUUFBUSxFQUFFLENBQUM7WUFDakMsTUFBTSxPQUFPLEdBQUcsc0NBQXNDLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLFlBQVksRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FBQyxpREFBaUQ7WUFFbk0sZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7WUFFOUosTUFBTSxPQUFPLEdBQUcsc0NBQXNDLENBQUMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsU0FBUyxFQUFFLFdBQVcsRUFBRSxZ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QUFFLFVBQVUsRUFBRSxZQUFZLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUV0TCxJQUFJLFVBQVUsS0FBSyxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNoRSxnQkFBZ0IsR0FBRyxFQUFFLENBQUM7WUFDdEIsWUFBWSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNsRSxDQUFDO1FBQ0QsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLGdCQUFnQixDQUFDLENBQUM7UUFDMUMsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEVBQUUsQ0FBQyxFQUFFLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLEVBQUUsV0FBVyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLENBQUM7UUFFMUosT0FBTztZQUNMLEtBQUssRUFBRSxFQUFFO1NBQ1YsQ0FBQztJQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBJUG9pbnQsIElQb2ludHMsIElSZWN0IH0gZnJvbSAnLi4vZHJhdy1saW5lLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNb0NhbnZhc0NhbGN1bGF0b3JCcmFuY2hVdGlsIH0gZnJvbSAnLi9jYWxjdWxhdG9yLWJyYW5jaC51dGlsJztcbmltcG9ydCB7IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsIH0gZnJvbSAnLi9jYWxjdWxhdG9yLWRpcmV0aW9uLWVsZW1lbnQudW50aWwnO1xuaW1wb3J0IHsgTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbkJvdHRvbUxlZnRFbGVtZW50VXRpbCB9IGZyb20gJy4vbGluZS1jb25uZWN0LWJvdHRvbS1sZWZ0LnVudGlsJztcblxuZXhwb3J0IGludGVyZmFjZSBJUG9zaXRpb25YWSB7XG4gIHg6IG51bWJlcjtcbiAgeTogbnVtYmVyO1xufVxuZXhwb3J0IGNsYXNzIE1vQ2FudmFzQ29ubmVjdE5hdmlnYXRpb25OZXdFbGVtZW50VXRpbCB7XG4gIHN0YXRpYyBFTEVNRU5UX01BUkdJTl9CRVRXRUVOX0JSQU5DSF9ERUZBVUxUID0gMzI7XG4gIHN0YXRpYyBTVEFSVF9NT0RFID0gJ3JpZ2h0LWxlZnQnO1xuXG4gIHN0YXRpYyBzZXRYWUNvbm5lY3RFbGVtZW50cyhlbGVtZW50RnJvbTogSVJlY3QsIGVsZW1lbnROZXh0OiBJUmVjdCwgb2JzdGFjbGVSZWN0OiBJUmVjdFtdLCBzZXBhcmF0ZWRQb2ludHM6IEFycmF5PElQb2ludHM+LCBjdXJ2ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5kcmF3TGluZUNvbm5lY3QoZWxlbWVudEZyb20sIGVsZW1lbnROZXh0LCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50cywgY3VydmUpO1xuICB9XG5cbiAgc3RhdGljIGRyYXdMaW5lQ29ubmVjdChlbGVtZW50RnJvbTogSVJlY3QsIGVsZW1lbnROZXh0OiBJUmVjdCwgb2JzdGFjbGVSZWN0OiBJUmVjdFtdLCBzZXBhcmF0ZWRQb2ludHM6IEFycmF5PElQb2ludHM+LCBjdXJ2ZTogbnVtYmVyKSB7XG4gICAgbGV0IHN0YXJ0X3ggPSAoZWxlbWVudEZyb20ueCA/PyAwKSArIChlbGVtZW50RnJvbS53aWR0aCA/PyAwKTsgLy8gxJFp4buDbSBvdXQgbHXDtG4g4bufIHBow61hIGLDqm4gcGjhuqNpXG4gICAgbGV0IHN0YXJ0X3kgPSAoZWxlbWVudEZyb20ueSA/PyAwKSArIChlbGVtZW50RnJvbS5oZWlnaHQgPz8gMCkgLyAyOyAvLyDEkWnhu4NtIG91dCBsdcO0biDhu58gcGjDrWEgYsOqbiBwaOG6o2lcblxuICAgIGlmIChNb0NhbnZhc0Nvbm5lY3ROYXZpZ2F0aW9uTmV3RWxlbWVudFV0aWwuU1RBUlRfTU9ERSA9PT0gJ2JvdHRvbS10b3AnKSB7XG4gICAgICAvLyDEkWnhu4NtIG91dCBsdcO0biDhu58gcGjDrWEgYsOqbiBkxrDhu5tpXG4gICAgICBzdGFydF94ID0gKGVsZW1lbnRGcm9tLnggPz8gMCkgKyAoZWxlbWVudEZyb20ud2lkdGggPz8gMCkgLyAyO1xuICAgICAgc3RhcnRfeSA9IChlbGVtZW50RnJvbS55ID8/IDApICsgKGVsZW1lbnRGcm9tLmhlaWdodCA/PyAwKTtcbiAgICB9XG4gICAgaWYgKE1vQ2FudmFzQ29ubmVjdE5hdmlnYXRpb25OZXdFbGVtZW50VXRpbC5TVEFSVF9NT0RFID09PSAnYm90dG9tLWxlZnQnKSB7XG4gICAgICAvLyDEkWnhu4NtIG91dCBsdcO0biDhu58gcGjDrWEgYsOqbiBkxrDhu5tpXG4gICAgICBzdGFydF94ID0gKGVsZW1lbnRGcm9tLnggPz8gMCkgKyAoZWxlbWVudEZyb20ud2lkdGggPz8gMCkgLyAyO1xuICAgICAgc3RhcnRfeSA9IChlbGVtZW50RnJvbS55ID8/IDApICsgKGVsZW1lbnRGcm9tLmhlaWdodCA/PyAwKTtcbiAgICB9XG4gICAgY29uc3QgTV9zdGFydDogSVBvaW50ID0geyB4OiBzdGFydF94LCB5OiBzdGFydF95IH07XG5cbiAgICBjb25zdCBkaXJlY3Rpb25YID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoc3RhcnRfeCwgZWxlbWVudE5leHQueCwgJ3gnKTtcblxuICAgIHN3aXRjaCAoTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbk5ld0VsZW1lbnRVdGlsLlNUQVJUX01PREUpIHtcbiAgICAgIGNhc2UgJ3JpZ2h0LWxlZnQnOlxuICAgICAgICBpZiAoZGlyZWN0aW9uWCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgdGhpcy5saW5lQ29ubmVjdExlZnQoZWxlbWVudE5leHQsIGVsZW1lbnRGcm9tLCBNX3N0YXJ0LCBjdXJ2ZSwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGluZUNvbm5lY3RSaWdodChlbGVtZW50TmV4dCwgTV9zdGFydCwgY3VydmUsIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbS10b3AnOlxuICAgICAgICBpZiAoZGlyZWN0aW9uWCA9PT0gJ2xlZnQnKSB7XG4gICAgICAgICAgdGhpcy5saW5lQ29ubmVjdExlZnRXaXRoQm90dG9tU3RhcnQoZWxlbWVudE5leHQsIGVsZW1lbnRGcm9tLCBNX3N0YXJ0LCBjdXJ2ZSwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHRoaXMubGluZUNvbm5lY3RSaWdodFdpdGhCb3R0b21TdGFydChlbGVtZW50TmV4dCwgTV9zdGFydCwgY3VydmUsIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgJ2JvdHRvbS1sZWZ0JzpcbiAgICAgICAgaWYgKGRpcmVjdGlvblggPT09ICdsZWZ0Jykge1xuICAgICAgICAgIE1vQ2FudmFzQ29ubmVjdE5hdmlnYXRpb25Cb3R0b21MZWZ0RWxlbWVudFV0aWwubGluZUxlZnQoZWxlbWVudE5leHQsIGVsZW1lbnRGcm9tLCBNX3N0YXJ0LCBjdXJ2ZSwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE1vQ2FudmFzQ29ubmVjdE5hdmlnYXRpb25Cb3R0b21MZWZ0RWxlbWVudFV0aWwucmlnaHRMZWZ0KGVsZW1lbnROZXh0LCBNX3N0YXJ0LCBjdXJ2ZSwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHMpO1xuICAgICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBsaW5lQ29ubmVjdFJpZ2h0KGVsZW1lbnROZXh0OiBJUmVjdCwgc3RhcnQ6IElQb2ludCwgbGluZUN1cnZlOiBudW1iZXIsIG9ic3RhY2xlUmVjdDogSVJlY3RbXSwgc2VwYXJhdGVkUG9pbnRzOiBBcnJheTxJUG9pbnRzPikge1xuICAgIGNvbnN0IGVuZFBvc2l0aW9uID0ge1xuICAgICAgeDogKGVsZW1lbnROZXh0LnggPz8gMCkgLSBsaW5lQ3VydmUgKiAzLFxuICAgICAgeTogKGVsZW1lbnROZXh0LnkgPz8gMCkgKyAoZWxlbWVudE5leHQuaGVpZ2h0ID8/IDApIC8gMixcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kUG9zaXRpb25YID0gY2xvbmVEZWVwKGVuZFBvc2l0aW9uKTtcblxuICAgIGxldCBzZXBhcmF0ZWRQb2ludHNDaGVja0FuZEF2b2lkQmxvY2tzOiBBcnJheTxJUG9pbnRzPiA9IFtdO1xuICAgIGxldCB7IHBhdGgsIGVuZFBhdGggfSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3Moc3RhcnQueCA/PyAwLCBzdGFydC55ID8/IDAsIGxpbmVDdXJ2ZSwgZW5kUG9zaXRpb25YLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50c0NoZWNrQW5kQXZvaWRCbG9ja3MpO1xuXG4gICAgaWYgKE1hdGguYWJzKChzdGFydC54ID8/IDApIC0gZW5kUG9zaXRpb24ueCkgPCAxMCkge1xuICAgICAgcGF0aCA9ICcnO1xuICAgICAgZW5kUGF0aCA9IHtcbiAgICAgICAgeDogc3RhcnQueCxcbiAgICAgICAgeTogc3RhcnQueSxcbiAgICAgIH07XG5cbiAgICAgIHNlcGFyYXRlZFBvaW50c0NoZWNrQW5kQXZvaWRCbG9ja3MgPSBbXTtcbiAgICB9XG5cbiAgICBzZXBhcmF0ZWRQb2ludHMuc3BsaWNlKHNlcGFyYXRlZFBvaW50cy5sZW5ndGgsIDAsIC4uLnNlcGFyYXRlZFBvaW50c0NoZWNrQW5kQXZvaWRCbG9ja3MpO1xuXG4gICAgLy8gc2F1IGtoaSDEkcOjIMSRaSBuZ2FuZyB2w6AgdHLDoW5oIGPDoWMga2jhu5FpLCB0aeG6v3AgdGhlbyBsw6AgxJFpIHRp4bq/cCBoxrDhu5tuZyBsw6puIHh14buRbmcgxJHhu4MgduG7gSBraOG7kWkgY+G6p24gbuG7kWkgdOG7m2ksIGPhuqduIGNoZWNrIHhlbSDEkWnhu4NtIGVuZCBYIG7DsyDEkWFuZyDhu58gaMaw4bubbmcgbsOgb1xuICAgIGNvbnN0IGRpcmVjdGlvblkgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChlbmRQYXRoLnksIGVuZFBvc2l0aW9uLnksICd5Jyk7XG5cbiAgICBpZiAoZGlyZWN0aW9uWSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgIGNvbnN0IExFbmQgPSB7IHg6IGVsZW1lbnROZXh0LnggPz8gMCwgeTogZW5kUGF0aC55IH07XG5cbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IGVuZFBhdGgsIGVuZDogTEVuZCwgbW9kZTogJ2hvcml6b250YWwnLCBpZDogJ2YnIH0pO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkUGF0aDogYCR7cGF0aH0gTCAke0xFbmQueH0gJHtMRW5kLnl9YCxcbiAgICAgICAgZW5kUGF0aDogTEVuZCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKE1hdGguYWJzKChlbmRQYXRoLnkgPz8gMCkgLSBlbmRQb3NpdGlvbi55KSA8IGxpbmVDdXJ2ZSAqIDIpIHtcbiAgICAgIGNvbnN0IGxpbmVDdXJ2ZVN1YlkgPSBNYXRoLmFicygoZW5kUGF0aC55ID8/IDApIC0gZW5kUG9zaXRpb24ueSkgLyAyO1xuXG4gICAgICBjb25zdCBjb29yZFExID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSA/PyAwIH0sIGByaWdodC0ke2RpcmVjdGlvblkgPT09ICdhYm92ZScgPyAnYWJvdmUnIDogJ3VuZGVyJ31gLCBsaW5lQ3VydmVTdWJZICogMiwgbGluZUN1cnZlU3ViWSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG4gICAgICBjb25zdCBwYXRoUTEgPSBgUSAke2Nvb3JkUTEueDF9LCR7Y29vcmRRMS55MX0gJHtjb29yZFExLnh9LCR7Y29vcmRRMS55fWA7IC8vIHThu6sgbmdhbmcgc2FuZyB0aOG6s25nIHBo4bqjaSBjw7MgxJHGsOG7nW5nIGNvbmdcbiAgICAgIGNvbnN0IGNvb3JkUTIgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5kcmF3TGluZVEoeyB4OiBjb29yZFExLnggPz8gMCwgeTogY29vcmRRMS55ID8/IDAgfSwgYCR7ZGlyZWN0aW9uWSA9PT0gJ2Fib3ZlJyA/ICdhYm92ZScgOiAndW5kZXInfS1yaWdodGAsIGxpbmVDdXJ2ZVN1YlkgKiAyLCBsaW5lQ3VydmVTdWJZKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIHRo4bqzbmcgc2FuZyBuZ2FuZ1xuICAgICAgY29uc3QgcGF0aFEyID0gYFEgJHtjb29yZFEyLngxfSwke2Nvb3JkUTIueTF9ICR7Y29vcmRRMi54fSwke2Nvb3JkUTIueX1gO1xuXG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBlbmRQYXRoLCBlbmQ6IHsgeDogY29vcmRRMS54ID8/IDAsIHk6IGNvb3JkUTEueSA/PyAwIH0sIG1vZGU6ICdob3Jpem9udGFsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnZycgfSk7XG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiB7IHg6IGNvb3JkUTEueCA/PyAwLCB5OiBjb29yZFExLnkgPz8gMCB9LCBlbmQ6IHsgeDogY29vcmRRMi54ID8/IDAsIHk6IGNvb3JkUTIueSA/PyAwIH0sIG1vZGU6ICd2ZXJ0aWNhbC1zaW5nbGUtY3VydmUnLCBpZDogJ2onIH0pO1xuICAgICAgY29uc3QgbGluZUNsb3NlID0gdGhpcy5jbG9zZUxpbmUoeyB4OiBjb29yZFEyLnggPz8gMCwgeTogY29vcmRRMi55ID8/IDAgfSwgZW5kUG9zaXRpb24sIGxpbmVDdXJ2ZSwgZWxlbWVudE5leHQsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRQYXRoOiBgJHtwYXRofSAke3BhdGhRMX0gJHtwYXRoUTJ9ICR7bGluZUNsb3NlfWAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGNvbnN0IGNvb3JkUTEgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5kcmF3TGluZVEoeyB4OiBlbmRQYXRoLnggPz8gMCwgeTogZW5kUGF0aC55ID8/IDAgfSwgYHJpZ2h0LSR7ZGlyZWN0aW9uWSA9PT0gJ2Fib3ZlJyA/ICdhYm92ZScgOiAndW5kZXInfWAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIG5nYW5nIHNhbmcgxJHGsOG7nW5nIHRo4bqzbmdcblxuICAgIGNvbnN0IHBhdGhRMSA9IGBRICR7Y29vcmRRMS54MX0sJHtjb29yZFExLnkxfSAke2Nvb3JkUTEueH0sJHtjb29yZFExLnl9YDsgLy8gdOG7qyBuZ2FuZyBzYW5nIHRo4bqzbmcgcGjhuqNpIGPDsyDEkcaw4budbmcgY29uZ1xuICAgIGNvbnN0IGVuZFBvc2l0aW9uWSA9IGNsb25lRGVlcChlbmRQb3NpdGlvbik7XG5cbiAgICBlbmRQb3NpdGlvblkueSA9IE1vQ2FudmFzQ2FsY3VsYXRvckJyYW5jaFV0aWwubWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvblksIGVuZFBvc2l0aW9uLnksIGxpbmVDdXJ2ZSk7XG5cbiAgICBjb25zdCBzdHJhaWdodExpbmUgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja0FuZEF2b2lkQmxvY2tzWShjb29yZFExLnggPz8gMCwgY29vcmRRMS55ID8/IDAsIGxpbmVDdXJ2ZSwgZW5kUG9zaXRpb25ZLCBkaXJlY3Rpb25ZLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICBjb25zdCBjb29yZFEyID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwLCB5OiBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDAgfSwgYCR7ZGlyZWN0aW9uWSA9PT0gJ2Fib3ZlJyA/ICdhYm92ZScgOiAndW5kZXInfS1yaWdodGAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIHRo4bqzbmcgc2FuZyBuZ2FuZ1xuICAgIGNvbnN0IHBhdGhRMiA9IGBRICR7Y29vcmRRMi54MX0sJHtjb29yZFEyLnkxfSAke2Nvb3JkUTIueH0sJHtjb29yZFEyLnl9YDsgLy8gdOG7qyBuZ2FuZyBzYW5nIHRo4bqzbmcgcGjhuqNpIGPDsyDEkcaw4budbmcgY29uZ1xuXG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBlbmRQYXRoLnggPz8gMCwgeTogZW5kUGF0aC55IH0sIGVuZDogeyB4OiBjb29yZFExLnggPz8gMCwgeTogY29vcmRRMS55ID8/IDAgfSwgbW9kZTogJ2hvcml6b250YWwtc2luZ2xlLWN1cnZlJywgaWQ6ICdnJyB9KTtcbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiB7IHg6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgeTogc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwIH0sIGVuZDogeyB4OiBjb29yZFEyLnggPz8gMCwgeTogY29vcmRRMi55ID8/IDAgfSwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnaicgfSk7XG4gICAgY29uc3QgbGluZUNsb3NlID0gdGhpcy5jbG9zZUxpbmUoeyB4OiBjb29yZFEyLnggPz8gMCwgeTogY29vcmRRMi55ID8/IDAgfSwgZW5kUG9zaXRpb24sIGxpbmVDdXJ2ZSwgZWxlbWVudE5leHQsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZFBhdGg6IGAke3BhdGh9ICR7cGF0aFExfSAke3N0cmFpZ2h0TGluZS5wYXRofSAke3BhdGhRMn0gJHtsaW5lQ2xvc2V9YCxcbiAgICAgIGVuZFBhdGg6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBsaW5lQ29ubmVjdExlZnQoZWxlbWVudE5leHQ6IElSZWN0LCBlbGVtZW50RnJvbTogSVJlY3QsIHN0YXJ0OiBJUG9pbnQsIGxpbmVDdXJ2ZTogbnVtYmVyLCBvYnN0YWNsZVJlY3Q6IElSZWN0W10sIHNlcGFyYXRlZFBvaW50czogQXJyYXk8SVBvaW50cz4pIHtcbiAgICBjb25zdCBlbmRQb3NpdGlvbk9yaWdpbiA9IHtcbiAgICAgIHg6IChlbGVtZW50TmV4dC54ID8/IDApIC0gbGluZUN1cnZlICogMS41LFxuICAgICAgeTogKGVsZW1lbnROZXh0LnkgPz8gMCkgKyAoZWxlbWVudE5leHQuaGVpZ2h0ID8/IDApIC8gMixcbiAgICB9O1xuXG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSBjbG9uZURlZXAoZW5kUG9zaXRpb25PcmlnaW4pO1xuICAgIGNvbnN0IGRpcmVjdGlvblN0YXJ0WSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KHN0YXJ0LnksIGVuZFBvc2l0aW9uT3JpZ2luLnksICd5Jyk7XG5cbiAgICBjb25zdCBlbmRZID0gZGlyZWN0aW9uU3RhcnRZID09PSAndW5kZXInIHx8IGRpcmVjdGlvblN0YXJ0WSA9PT0gJ2NlbnRlcicgPyAoZWxlbWVudE5leHQueSA/PyAwKSA6IChlbGVtZW50TmV4dC55ID8/IDApICsgKGVsZW1lbnROZXh0LmhlaWdodCA/PyAwKTtcblxuICAgIGVuZFBvc2l0aW9uLnkgPSBNb0NhbnZhc0NhbGN1bGF0b3JCcmFuY2hVdGlsLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb25TdGFydFksIGVuZFksIGxpbmVDdXJ2ZSAqIDIpO1xuXG4gICAgY29uc3QgcGF0aFEgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5kcmF3TGluZVEoeyB4OiAoc3RhcnQueCA/PyAwKSArIDEwLCB5OiBzdGFydC55ID8/IDAgfSwgYHJpZ2h0LSR7ZGlyZWN0aW9uU3RhcnRZID09PSAndW5kZXInID8gJ3VuZGVyJyA6ICdhYm92ZSd9YCwgbGluZUN1cnZlLCBsaW5lQ3VydmUpO1xuICAgIGNvbnN0IHN0YXJ0UUwgPSB7IGx4OiBwYXRoUS54LCBseTogTW9DYW52YXNDYWxjdWxhdG9yQnJhbmNoVXRpbC5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uU3RhcnRZLCBwYXRoUS55ID8/IDAsIChlbGVtZW50RnJvbS5oZWlnaHQgPz8gMCkgLyAyLCB0cnVlKSB9O1xuXG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBzdGFydC54ID8/IDAsIHk6IHN0YXJ0LnkgPz8gMCB9LCBlbmQ6IHsgeDogcGF0aFEueCA/PyAwLCB5OiBwYXRoUS55ID8/IDAgfSwgbW9kZTogJ2hvcml6b250YWwtc2luZ2xlLWN1cnZlJywgaWQ6ICcxJyB9KTtcbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiB7IHg6IHBhdGhRLnggPz8gMCwgeTogcGF0aFEueSA/PyAwIH0sIGVuZDogeyB4OiBzdGFydFFMLmx4ID8/IDAsIHk6IHN0YXJ0UUwubHkgfSwgbW9kZTogJ2hvcml6b250YWwnLCBpZDogJzInIH0pO1xuXG4gICAgaWYgKGRpcmVjdGlvblN0YXJ0WSA9PT0gJ2NlbnRlcicpIHtcbiAgICAgIGNvbnN0IGNvb3JkUTEgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5kcmF3TGluZVEoeyB4OiBzdGFydFFMLmx4ID8/IDAsIHk6IHN0YXJ0UUwubHkgPz8gMCB9LCBgYWJvdmUtbGVmdGAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIG5nYW5nIHNhbmcgxJHGsOG7nW5nIHRo4bqzbmdcblxuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBzdGFydFFMLmx4ID8/IDAsIHk6IHN0YXJ0UUwubHkgfSwgZW5kOiB7IHg6IGNvb3JkUTEueCA/PyAwLCB5OiBjb29yZFExLnkgPz8gMCB9LCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICczJyB9KTtcblxuICAgICAgY29uc3QgZW5kUGF0aCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3NMZWZ0KGNvb3JkUTEueCA/PyAwLCBjb29yZFExLnkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvbiwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgICBjb25zdCBkaXJlY3Rpb25TdGFydFkyID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoZW5kUGF0aC55LCBlbmRQb3NpdGlvbk9yaWdpbi55LCAneScpO1xuXG4gICAgICBjb25zdCBjb29yZFEyID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSA/PyAwIH0sIGBsZWZ0LSR7ZGlyZWN0aW9uU3RhcnRZMiA9PT0gJ2Fib3ZlJyA/ICdhYm92ZScgOiAndW5kZXInfWAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIG5nYW5nIHNhbmcgxJHGsOG7nW5nIHRo4bqzbmdcblxuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBlbmRQYXRoLnggPz8gMCwgeTogZW5kUGF0aC55ID8/IDAgfSwgZW5kOiB7IHg6IGNvb3JkUTIueCA/PyAwLCB5OiBjb29yZFEyLnkgPz8gMCB9LCBtb2RlOiAnaG9yaXpvbnRhbC1zaW5nbGUtY3VydmUnLCBpZDogJzQnIH0pO1xuICAgICAgdGhpcy5jbG9zZUxpbmUoeyB4OiBjb29yZFEyLnggPz8gMCwgeTogY29vcmRRMi55ID8/IDAgfSwgZW5kUG9zaXRpb25PcmlnaW4sIGxpbmVDdXJ2ZSwgZWxlbWVudE5leHQsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRQYXRoOiBgYCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgY29uc3Qgc3RyYWlnaHRMaW5lID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2Nrc1lMZWZ0KHN0YXJ0UUwubHggPz8gMCwgc3RhcnRRTC5seSA/PyAwLCBsaW5lQ3VydmUsIGVuZFBvc2l0aW9uLCBkaXJlY3Rpb25TdGFydFksIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzKTtcblxuICAgIGlmIChNYXRoLmFicygoZW5kUG9zaXRpb24ueCA/PyAwKSAtIChzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDApKSA8PSBsaW5lQ3VydmUgKiAyKSB7XG4gICAgICBlbmRQb3NpdGlvbi54ID0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueDtcbiAgICB9XG5cbiAgICBpZiAoKGRpcmVjdGlvblN0YXJ0WSA9PT0gJ3VuZGVyJyAmJiBzdGFydFFMLmx5ID4gZW5kUG9zaXRpb24ueSkgfHwgKGRpcmVjdGlvblN0YXJ0WSA9PT0gJ2Fib3ZlJyAmJiBzdGFydFFMLmx5IDwgZW5kUG9zaXRpb24ueSkgfHwgc3RhcnRRTC5seSA9PT0gZW5kUG9zaXRpb24ueSkge1xuICAgICAgbGV0IGNvbmRpdGlvbiA9IHRydWU7XG5cbiAgICAgIHdoaWxlIChjb25kaXRpb24pIHtcbiAgICAgICAgY29uc3QgY2hlY2tBbmRBdm9pZEJsb2Nrc1lMZWZ0ID0gc2VwYXJhdGVkUG9pbnRzLmZpbmRJbmRleCgoaXRlbSkgPT4gaXRlbS5pZCA9PT0gJ2NoZWNrQW5kQXZvaWRCbG9ja3NZTGVmdCcpO1xuXG4gICAgICAgIGlmIChjaGVja0FuZEF2b2lkQmxvY2tzWUxlZnQgIT09IC0xKSB7XG4gICAgICAgICAgc2VwYXJhdGVkUG9pbnRzLnNwbGljZShjaGVja0FuZEF2b2lkQmxvY2tzWUxlZnQsIDEpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGVja0FuZEF2b2lkQmxvY2tzWUxlZnQgPT09IC0xKSB7XG4gICAgICAgICAgY29uZGl0aW9uID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgc3RyYWlnaHRMaW5lLnBhdGggPSAnJztcbiAgICAgIHN0cmFpZ2h0TGluZS5lbmRQYXRoID0ge1xuICAgICAgICB4OiBzdGFydFFMLmx4ID8/IDAsXG4gICAgICAgIHk6IHN0YXJ0UUwubHkgPz8gMCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgaWYgKGVuZFBvc2l0aW9uLnggPT09IHN0cmFpZ2h0TGluZS5lbmRQYXRoLngpIHtcbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLCBlbmQ6IGVuZFBvc2l0aW9uT3JpZ2luLCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICc2YSAnICsgZGlyZWN0aW9uU3RhcnRZIH0pO1xuICAgICAgdGhpcy5jbG9zZUxpbmUoeyB4OiBlbmRQb3NpdGlvbk9yaWdpbi54ID8/IDAsIHk6IGVuZFBvc2l0aW9uT3JpZ2luLnkgPz8gMCB9LCBlbmRQb3NpdGlvbk9yaWdpbiwgbGluZUN1cnZlLCBlbGVtZW50TmV4dCwgc2VwYXJhdGVkUG9pbnRzKTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGtp4buDbSB0cmEgbmdheSBraGkgY3VhIGPDsyB2xrDhu5tuZyBhaSBraMO0bmcgcuG7k2kgaOG6tW5nIHbhur0gUTEsXG4gICAgY29uc3QgZWxlbWVudEJsb2NrUm9hZCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrTGluZVBhc3NCbG9ja0hvcml6b250YWwoc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwLCBlbmRQb3NpdGlvbi54LCBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDAsICd4Jywgb2JzdGFjbGVSZWN0KSBhcyBJUmVjdDtcbiAgICBjb25zdCBkaXJlY3Rpb25OZXh0WCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgZW5kUG9zaXRpb25PcmlnaW4ueCwgJ3gnKTtcbiAgICBjb25zdCBjb29yZFExID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwLCB5OiBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDAgfSwgYCR7ZGlyZWN0aW9uU3RhcnRZfS0ke2RpcmVjdGlvbk5leHRYfWAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIG5nYW5nIHNhbmcgxJHGsOG7nW5nIHRo4bqzbmdcbiAgICBjb25zdCBlbGVtZW50QmxvY2tSb2FkWCA9IChlbGVtZW50QmxvY2tSb2FkPy54ID8/IDApICsgKGVsZW1lbnRCbG9ja1JvYWQ/LndpZHRoID8/IDApO1xuXG4gICAgaWYgKGVsZW1lbnRCbG9ja1JvYWQgJiYgTWF0aC5hYnMoZWxlbWVudEJsb2NrUm9hZFggLSAoc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwKSkgPD0gbGluZUN1cnZlICogMikge1xuICAgICAgY29vcmRRMS54MSA9IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMDtcbiAgICAgIGNvb3JkUTEueTEgPSBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDA7XG4gICAgICBjb29yZFExLnggPSBzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDA7XG4gICAgICBjb29yZFExLnkgPSBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDA7XG4gICAgfVxuXG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogc3RyYWlnaHRMaW5lLmVuZFBhdGgsIGVuZDogeyB4OiBjb29yZFExLnggPz8gMCwgeTogY29vcmRRMS55ID8/IDAgfSwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnNmEgJyArIGRpcmVjdGlvblN0YXJ0WSB9KTtcblxuICAgIGNvbnN0IGVuZFBhdGggPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja0FuZEF2b2lkQmxvY2tzTGVmdChjb29yZFExLnggPz8gMCwgY29vcmRRMS55ID8/IDAsIGxpbmVDdXJ2ZSwgZW5kUG9zaXRpb24sIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzKTtcbiAgICBjb25zdCBkaXJlY3Rpb25TdGFydFkyID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoZW5kUGF0aC55LCBlbmRQb3NpdGlvbk9yaWdpbi55LCAneScpO1xuICAgIGNvbnN0IGRpcmVjdGlvbk5leHRZID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoY29vcmRRMS54ID8/IDAsIGVuZFBhdGgueCwgJ3gnKTtcbiAgICBjb25zdCBjb29yZFEyID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSA/PyAwIH0sIGAke2RpcmVjdGlvbk5leHRZfS0ke2RpcmVjdGlvblN0YXJ0WTIgPT09ICdhYm92ZScgPyAnYWJvdmUnIDogJ3VuZGVyJ31gLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG5cbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBlbmRQYXRoLCBlbmQ6IHsgeDogY29vcmRRMi54ID8/IDAsIHk6IGNvb3JkUTIueSA/PyAwIH0sIG1vZGU6ICdob3Jpem9udGFsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnNicgfSk7XG5cbiAgICB0aGlzLmNsb3NlTGluZSh7IHg6IGNvb3JkUTIueCA/PyAwLCB5OiBjb29yZFEyLnkgPz8gMCB9LCBlbmRQb3NpdGlvbk9yaWdpbiwgbGluZUN1cnZlLCBlbGVtZW50TmV4dCwgc2VwYXJhdGVkUG9pbnRzKTtcblxuICAgIHJldHVybiB7XG4gICAgICBkUGF0aDogYGAsXG4gICAgfTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNsb3NlTGluZShzdGFydDogSVBvc2l0aW9uWFksIGVuZDogSVBvc2l0aW9uWFksIGxpbmVDdXJ2ZTogbnVtYmVyLCBlbGVtZW50TmV4dDogSVJlY3QsIHNlcGFyYXRlZFBvaW50czogQXJyYXk8SVBvaW50cz4pIHtcbiAgICBjb25zdCBkaXJlY3Rpb25ZID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoc3RhcnQueSwgZW5kLnksICd5Jyk7XG5cbiAgICBpZiAoc3RhcnQueSA9PT0gZW5kLnkpIHtcbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQsIGVuZDogeyB4OiBlbGVtZW50TmV4dC54ID8/IDAsIHk6IGVuZC55ID8/IDAgfSwgbW9kZTogJ2hvcml6b250YWwnLCBpZDogJzcnIH0pO1xuXG4gICAgICByZXR1cm4gYEwgJHtlbGVtZW50TmV4dC54fSAke2VuZC55fWA7XG4gICAgfVxuXG4gICAgY29uc3QgbGluZSA9IHsgeDogc3RhcnQueCwgeTogc3RhcnQueSB9O1xuICAgIGNvbnN0IGVuZFBvaW50ID0ge1xuICAgICAgeDogZWxlbWVudE5leHQueCxcbiAgICAgIHk6IGVuZC55LFxuICAgIH07XG4gICAgbGV0IHBhdGhRMSA9ICcnO1xuXG4gICAgaWYgKE1hdGguYWJzKHN0YXJ0LnkgLSBlbmQueSkgPiBsaW5lQ3VydmUpIHtcbiAgICAgIGNvbnN0IHRvWSA9IE1vQ2FudmFzQ2FsY3VsYXRvckJyYW5jaFV0aWwubWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvblksIGVuZC55LCBsaW5lQ3VydmUpO1xuXG4gICAgICBsaW5lLnkgPSB0b1k7XG5cbiAgICAgIGNvbnN0IGRpcmVjdGlvblggPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChsaW5lLngsIGVsZW1lbnROZXh0LngsICd4Jyk7XG4gICAgICBjb25zdCBjb29yZFExID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogbGluZS54ID8/IDAsIHk6IGxpbmUueSA/PyAwIH0sIGAke2RpcmVjdGlvblkgPT09ICdhYm92ZScgPyAnYWJvdmUnIDogJ3VuZGVyJ30tJHtkaXJlY3Rpb25YfWAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIG5nYW5nIHNhbmcgxJHGsOG7nW5nIHRo4bqzbmdcblxuICAgICAgbGV0IGxpbmVMID0gJyc7XG5cbiAgICAgIGlmIChjb29yZFExLnkgPT09IGVuZC55KSB7XG4gICAgICAgIGxpbmVMID0gYEwgJHtlbmRQb2ludC54fSAke2VuZFBvaW50Lnl9YDtcbiAgICAgIH1cblxuICAgICAgcGF0aFExID0gYFEgJHtjb29yZFExLngxfSwke2Nvb3JkUTEueTF9ICR7Y29vcmRRMS54fSwke2Nvb3JkUTEueX0gJHtsaW5lTH1gOyAvLyB04burIG5nYW5nIHNhbmcgdGjhurNuZyBwaOG6o2kgY8OzIMSRxrDhu51uZyBjb25nXG4gICAgfVxuXG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydCwgZW5kOiBsaW5lLCBtb2RlOiAnaG9yaXpvbnRhbCcsIGlkOiAnOCcgfSk7XG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogbGluZSwgZW5kOiBlbmRQb2ludCwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnOScgfSk7XG5cbiAgICByZXR1cm4gYEwgJHtsaW5lLnh9ICR7bGluZS55fSAke3BhdGhRMX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbGluZUNvbm5lY3RMZWZ0V2l0aEJvdHRvbVN0YXJ0KGVsZW1lbnROZXh0OiBJUmVjdCwgZWxlbWVudEZyb206IElSZWN0LCBzdGFydDogSVBvaW50LCBsaW5lQ3VydmU6IG51bWJlciwgb2JzdGFjbGVSZWN0OiBJUmVjdFtdLCBzZXBhcmF0ZWRQb2ludHM6IEFycmF5PElQb2ludHM+KSB7XG4gICAgY29uc3QgZW5kUG9zaXRpb25PcmlnaW4gPSB7XG4gICAgICB4OiAoZWxlbWVudE5leHQueCA/PyAwKSArIChlbGVtZW50TmV4dC53aWR0aCA/PyAwKSAvIDIsXG4gICAgICB5OiAoZWxlbWVudE5leHQueSA/PyAwKSAtIGxpbmVDdXJ2ZSxcbiAgICB9O1xuICAgIGNvbnN0IGVuZFBvc2l0aW9uID0gY2xvbmVEZWVwKGVuZFBvc2l0aW9uT3JpZ2luKTtcbiAgICBjb25zdCBkaXJlY3Rpb25TdGFydFkgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChzdGFydC55LCBlbmRQb3NpdGlvbk9yaWdpbi55LCAneScpO1xuICAgIGNvbnN0IGVuZFkgPSBlbGVtZW50TmV4dC55ID8/IDA7XG5cbiAgICBpZiAoZGlyZWN0aW9uU3RhcnRZID09PSAndW5kZXInKSB7XG4gICAgICBlbmRQb3NpdGlvbi55ID0gZW5kWSAtIGxpbmVDdXJ2ZSAqIDM7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRRTCA9IHsgbHg6IHN0YXJ0LngsIGx5OiAoc3RhcnQueSA/PyAwKSArIGxpbmVDdXJ2ZSB9O1xuICAgIGNvbnN0IGxpbmUgPSB7XG4gICAgICBzdGFydDogeyB4OiBzdGFydC54ID8/IDAsIHk6IHN0YXJ0LnkgPz8gMCB9LFxuICAgICAgZW5kOiB7IHg6IHN0YXJ0UUwubHggPz8gMCwgeTogc3RhcnRRTC5seSA/PyAwIH0sXG4gICAgfTtcbiAgICBjb25zdCBuZXdFbmQgPSB7IHg6IGVsZW1lbnRGcm9tLnggLSBsaW5lQ3VydmUgKiAyLCB5OiBsaW5lLmVuZC55IC0gbGluZUN1cnZlIH07XG5cbiAgICBpZiAoZGlyZWN0aW9uU3RhcnRZID09PSAnYWJvdmUnKSB7XG4gICAgICBsaW5lLmVuZCA9IHsgeDogKHN0YXJ0LnggPz8gMCkgLSBsaW5lQ3VydmUsIHk6IChzdGFydC55ID8/IDApICsgbGluZUN1cnZlICogMiB9O1xuXG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBsaW5lLmVuZCwgZW5kOiBuZXdFbmQsIG1vZGU6ICdob3Jpem9udGFsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnMScgfSk7XG4gICAgfVxuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IGxpbmUuc3RhcnQsIGVuZDogbGluZS5lbmQsIG1vZGU6ICd2ZXJ0aWNhbC1zaW5nbGUtY3VydmUnLCBpZDogJzEnIH0pOyAvLyBsaW5lIHbhur0gxJFpIGto4buPaSBraOG7kWkgxJHhuqd1IHRpw6puXG4gICAgY29uc3Qgc3RhcnROZXdMaW5lID0gZGlyZWN0aW9uU3RhcnRZID09PSAnYWJvdmUnID8gbmV3RW5kIDogbGluZS5lbmQ7XG5cbiAgICBpZiAoZGlyZWN0aW9uU3RhcnRZID09PSAnY2VudGVyJykge1xuICAgICAgY29uc3QgY29vcmRRMSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IHN0YXJ0UUwubHggPz8gMCwgeTogc3RhcnRRTC5seSA/PyAwIH0sIGBhYm92ZS1sZWZ0YCwgbGluZUN1cnZlLCBsaW5lQ3VydmUpOyAvLyB0w61uaCDEkW/huqFuIGNvbmcgdOG7qyDEkcaw4budbmcgbmdhbmcgc2FuZyDEkcaw4budbmcgdGjhurNuZ1xuXG4gICAgICAvLyB04burIG5nYW5nIHNhbmcgdGjhurNuZyBwaOG6o2kgY8OzIMSRxrDhu51uZyBjb25nXG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiB7IHg6IHN0YXJ0UUwubHggPz8gMCwgeTogc3RhcnRRTC5seSB9LCBlbmQ6IHsgeDogY29vcmRRMS54ID8/IDAsIHk6IGNvb3JkUTEueSA/PyAwIH0sIG1vZGU6ICd2ZXJ0aWNhbC1zaW5nbGUtY3VydmUnLCBpZDogJzMnIH0pO1xuXG4gICAgICBjb25zdCBlbmRQYXRoID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2Nrc0xlZnQoY29vcmRRMS54ID8/IDAsIGNvb3JkUTEueSA/PyAwLCBsaW5lQ3VydmUsIGVuZFBvc2l0aW9uLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50cyk7XG4gICAgICBjb25zdCBkaXJlY3Rpb25TdGFydFkyID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoZW5kUGF0aC55LCBlbmRQb3NpdGlvbk9yaWdpbi55LCAneScpO1xuICAgICAgY29uc3QgY29vcmRRMiA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IGVuZFBhdGgueCA/PyAwLCB5OiBlbmRQYXRoLnkgPz8gMCB9LCBgbGVmdC0ke2RpcmVjdGlvblN0YXJ0WTIgPT09ICdhYm92ZScgPyAnYWJvdmUnIDogJ3VuZGVyJ31gLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG5cbiAgICAgIC8vIHThu6sgbmdhbmcgc2FuZyB0aOG6s25nIHBo4bqjaSBjw7MgxJHGsOG7nW5nIGNvbmdcbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSA/PyAwIH0sIGVuZDogeyB4OiBjb29yZFEyLnggPz8gMCwgeTogY29vcmRRMi55ID8/IDAgfSwgbW9kZTogJ2hvcml6b250YWwtc2luZ2xlLWN1cnZlJywgaWQ6ICc0JyB9KTtcbiAgICAgIHRoaXMuY2xvc2VMaW5lKHsgeDogY29vcmRRMi54ID8/IDAsIHk6IGNvb3JkUTIueSA/PyAwIH0sIGVuZFBvc2l0aW9uT3JpZ2luLCBsaW5lQ3VydmUsIGVsZW1lbnROZXh0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkUGF0aDogYGAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIC8vIGtp4buDbSB0cmEgaMaw4bubbmcgdGjhurNuZyDEkeG6v24gZW5kLCBu4bq/dSBjw7Mga2jhu5FpIHRow6wgdHLDoW5oXG4gICAgY29uc3Qgc3RyYWlnaHRMaW5lID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2Nrc1lMZWZ0KHN0YXJ0TmV3TGluZS54ID8/IDAsIHN0YXJ0TmV3TGluZS55ID8/IDAsIGxpbmVDdXJ2ZSwgZW5kUG9zaXRpb24sIGRpcmVjdGlvblN0YXJ0WSwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgY29uc3QgZGlyZWN0aW9uU3RhcnRYID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoc3RhcnQueCwgZW5kUG9zaXRpb25PcmlnaW4ueCwgJ3gnKTtcblxuICAgIGlmIChkaXJlY3Rpb25TdGFydFggPT09ICdjZW50ZXInICYmIGRpcmVjdGlvblN0YXJ0WSA9PT0gJ3VuZGVyJykge1xuICAgICAgdGhpcy5jbG9zZUxpbmVXaXRoTGluZVRvcEJvdHRvbSh7IHg6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgeTogc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwIH0sIGVuZFBvc2l0aW9uT3JpZ2luLCBsaW5lQ3VydmUsIGVsZW1lbnROZXh0LCBzZXBhcmF0ZWRQb2ludHMpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICBkUGF0aDogYGAsXG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICgoZGlyZWN0aW9uU3RhcnRZID09PSAndW5kZXInICYmIHN0YXJ0UUwubHkgPiBlbmRQb3NpdGlvbi55KSB8fCAoZGlyZWN0aW9uU3RhcnRZID09PSAnYWJvdmUnICYmIHN0YXJ0UUwubHkgPCBlbmRQb3NpdGlvbi55KSB8fCBzdGFydFFMLmx5ID09PSBlbmRQb3NpdGlvbi55KSB7XG4gICAgICBsZXQgY29uZGl0aW9uID0gdHJ1ZTtcblxuICAgICAgd2hpbGUgKGNvbmRpdGlvbikge1xuICAgICAgICBjb25zdCBjaGVja0FuZEF2b2lkQmxvY2tzWUxlZnQgPSBzZXBhcmF0ZWRQb2ludHMuZmluZEluZGV4KChpdGVtKSA9PiBpdGVtLmlkID09PSAnY2hlY2tBbmRBdm9pZEJsb2Nrc1lMZWZ0Jyk7XG5cbiAgICAgICAgaWYgKGNoZWNrQW5kQXZvaWRCbG9ja3NZTGVmdCAhPT0gLTEpIHtcbiAgICAgICAgICBzZXBhcmF0ZWRQb2ludHMuc3BsaWNlKGNoZWNrQW5kQXZvaWRCbG9ja3NZTGVmdCwgMSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoZWNrQW5kQXZvaWRCbG9ja3NZTGVmdCA9PT0gLTEpIHtcbiAgICAgICAgICBjb25kaXRpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBzdHJhaWdodExpbmUucGF0aCA9ICcnO1xuICAgICAgc3RyYWlnaHRMaW5lLmVuZFBhdGggPSB7XG4gICAgICAgIHg6IHN0YXJ0UUwubHggPz8gMCxcbiAgICAgICAgeTogc3RhcnRRTC5seSA/PyAwLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICAvLyBraeG7g20gdHJhIG5nYXkga2hpIGN1YSBjw7Mgdsaw4bubbmcgYWkga2jDtG5nIHLhu5NpIGjhurVuZyB24bq9IFExXG4gICAgY29uc3QgZWxlbWVudEJsb2NrUm9hZCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrTGluZVBhc3NCbG9ja0hvcml6b250YWwoc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwLCBlbmRQb3NpdGlvbi54LCBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDAsICd4Jywgb2JzdGFjbGVSZWN0KSBhcyBJUmVjdDtcbiAgICBjb25zdCBkaXJlY3Rpb25OZXh0WCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgZW5kUG9zaXRpb25PcmlnaW4ueCwgJ3gnKTtcbiAgICBjb25zdCBjb29yZFExID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwLCB5OiBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDAgfSwgYCR7ZGlyZWN0aW9uU3RhcnRZfS0ke2RpcmVjdGlvbk5leHRYfWAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIG5nYW5nIHNhbmcgxJHGsOG7nW5nIHRo4bqzbmdcbiAgICBjb25zdCBlbGVtZW50QmxvY2tSb2FkWCA9IChlbGVtZW50QmxvY2tSb2FkPy54ID8/IDApICsgKGVsZW1lbnRCbG9ja1JvYWQ/LndpZHRoID8/IDApO1xuXG4gICAgaWYgKGVsZW1lbnRCbG9ja1JvYWQgJiYgTWF0aC5hYnMoZWxlbWVudEJsb2NrUm9hZFggLSAoc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwKSkgPD0gbGluZUN1cnZlICogMikge1xuICAgICAgY29vcmRRMS54MSA9IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMDtcbiAgICAgIGNvb3JkUTEueTEgPSBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDA7XG4gICAgICBjb29yZFExLnggPSBzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDA7XG4gICAgICBjb29yZFExLnkgPSBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDA7XG4gICAgfVxuXG4gICAgLy8ga2nhu4NtIHRyYSB2w6AgduG6vSBoxrDhu5tuZyBuZ2FuZ1xuICAgIGNvbnN0IGRpcmVjdGlvblhUb0VuZCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KGNvb3JkUTEueCA/PyAwLCBlbmRQb3NpdGlvbk9yaWdpbi54LCAneCcpO1xuXG4gICAgZW5kUG9zaXRpb24ueCA9IE1vQ2FudmFzQ2FsY3VsYXRvckJyYW5jaFV0aWwubWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvblhUb0VuZCwgZW5kUG9zaXRpb24ueCwgbGluZUN1cnZlKTtcbiAgICBpZiAoTWF0aC5hYnMoKGNvb3JkUTEueSA/PyAwKSAtIGVuZFBvc2l0aW9uLnkpIDw9IGxpbmVDdXJ2ZSkge1xuICAgICAgZW5kUG9zaXRpb24ueSAtPSBsaW5lQ3VydmU7XG4gICAgfVxuICAgIGNvbnN0IHBhdGhIb3Jpem9udGFsOiBJUG9pbnRzW10gPSBbXTtcbiAgICBjb25zdCBlbmRQYXRoID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2Nrc0xlZnQoY29vcmRRMS54ID8/IDAsIGNvb3JkUTEueSA/PyAwLCBsaW5lQ3VydmUsIGVuZFBvc2l0aW9uLCBvYnN0YWNsZVJlY3QsIHBhdGhIb3Jpem9udGFsKTtcblxuICAgIGlmIChkaXJlY3Rpb25YVG9FbmQgPT09ICdsZWZ0JyAmJiBlbmRQYXRoLnggPiAoY29vcmRRMS54ID8/IDApKSB7XG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBzdHJhaWdodExpbmUuZW5kUGF0aCwgZW5kOiBlbmRQb3NpdGlvbk9yaWdpbiwgbW9kZTogJ3ZlcnRpY2FsJywgaWQ6ICc2YSAnICsgZGlyZWN0aW9uU3RhcnRZIH0pO1xuICAgICAgdGhpcy5jbG9zZUxpbmVXaXRoTGluZVRvcEJvdHRvbShlbmRQb3NpdGlvbk9yaWdpbiwgZW5kUG9zaXRpb25PcmlnaW4sIGxpbmVDdXJ2ZSwgZWxlbWVudE5leHQsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCguLi5wYXRoSG9yaXpvbnRhbCk7XG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogc3RyYWlnaHRMaW5lLmVuZFBhdGgsIGVuZDogeyB4OiBjb29yZFExLnggPz8gMCAtIDEwLCB5OiBjb29yZFExLnkgPz8gMCB9LCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICc2YSAnICsgZGlyZWN0aW9uU3RhcnRZIH0pO1xuICAgIHRoaXMuY2xvc2VMaW5lV2l0aExpbmVUb3BCb3R0b20oeyB4OiBlbmRQYXRoLnggPz8gMCwgeTogZW5kUGF0aC55ID8/IDAgfSwgZW5kUG9zaXRpb25PcmlnaW4sIGxpbmVDdXJ2ZSwgZWxlbWVudE5leHQsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZFBhdGg6IGBgLFxuICAgIH07XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjbG9zZUxpbmVXaXRoTGluZVRvcEJvdHRvbShzdGFydDogSVBvc2l0aW9uWFksIGVuZDogSVBvc2l0aW9uWFksIGxpbmVDdXJ2ZTogbnVtYmVyLCBlbGVtZW50TmV4dDogSVJlY3QsIHNlcGFyYXRlZFBvaW50czogQXJyYXk8SVBvaW50cz4pIHtcbiAgICBjb25zdCBkaXJlY3Rpb25YID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoc3RhcnQueCwgZW5kLngsICd4Jyk7XG5cbiAgICBpZiAoc3RhcnQueCA9PT0gZW5kLngpIHtcbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQsIGVuZDogeyB4OiAoZWxlbWVudE5leHQueCA/PyAwKSArIChlbGVtZW50TmV4dC53aWR0aCA/PyAwKSAvIDIsIHk6IGVsZW1lbnROZXh0LnkgPz8gMCB9LCBtb2RlOiAnaG9yaXpvbnRhbCcsIGlkOiAnNycgfSk7XG5cbiAgICAgIHJldHVybiBgTCAke2VsZW1lbnROZXh0Lnh9ICR7ZW5kLnl9YDtcbiAgICB9XG5cbiAgICBjb25zdCBsaW5lID0geyB4OiBzdGFydC54LCB5OiBzdGFydC55IH07XG4gICAgY29uc3QgZW5kUG9pbnQgPSB7XG4gICAgICB4OiBlbmQueCxcbiAgICAgIHk6IGVsZW1lbnROZXh0LnksXG4gICAgfTtcbiAgICBjb25zdCBwYXRoUTEgPSAnJztcblxuICAgIGlmIChNYXRoLmFicyhzdGFydC54IC0gZW5kLngpID4gbGluZUN1cnZlKSB7XG4gICAgICBjb25zdCBkaXJlY3Rpb25ZID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoc3RhcnQueSwgZW5kUG9pbnQueSwgJ3knKTtcbiAgICAgIGNvbnN0IHRvWCA9IE1vQ2FudmFzQ2FsY3VsYXRvckJyYW5jaFV0aWwubWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvblgsIGVuZC54LCBsaW5lQ3VydmUpO1xuICAgICAgY29uc3QgdG9ZID0gTW9DYW52YXNDYWxjdWxhdG9yQnJhbmNoVXRpbC5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uWSwgZW5kLnksIGxpbmVDdXJ2ZSk7XG5cbiAgICAgIGxpbmUueCA9IHRvWDtcbiAgICAgIGxpbmUueSA9IHRvWTtcbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHN0YXJ0LCBlbmQ6IGxpbmUsIG1vZGU6ICd2ZXJ0aWNhbC1zaW5nbGUtY3VydmUnLCBpZDogJzknIH0pO1xuICAgIH1cblxuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IGxpbmUsIGVuZDogZW5kUG9pbnQsIG1vZGU6ICdob3Jpem9udGFsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnOScgfSk7XG5cbiAgICByZXR1cm4gYEwgJHtsaW5lLnh9ICR7bGluZS55fSAke3BhdGhRMX1gO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbGluZUNvbm5lY3RSaWdodFdpdGhCb3R0b21TdGFydChlbGVtZW50TmV4dDogSVJlY3QsIHN0YXJ0OiBJUG9pbnQsIGxpbmVDdXJ2ZTogbnVtYmVyLCBvYnN0YWNsZVJlY3Q6IElSZWN0W10sIHNlcGFyYXRlZFBvaW50czogQXJyYXk8SVBvaW50cz4pIHtcbiAgICBjb25zdCBlbmRQb3NpdGlvbiA9IHtcbiAgICAgIHg6IChlbGVtZW50TmV4dC54ID8/IDApICsgKGVsZW1lbnROZXh0LndpZHRoID8/IDApIC8gMixcbiAgICAgIHk6IChlbGVtZW50TmV4dC55ID8/IDApIC0gbGluZUN1cnZlLFxuICAgIH07XG5cbiAgICAvLyB24bq9IDEgxJHGsOG7nW5nIHRo4bqzbmcgdOG7qyDEkWnhu4NtIHN0YXJ0IHJhIG5nb8OgaSDEkcOjXG4gICAgY29uc3QgZW5kID0geyB4OiAoc3RhcnQueCA/PyAwKSArIDEwLCB5OiAoc3RhcnQueSA/PyAwKSArIDIwIH07XG5cbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiB7IHg6IHN0YXJ0LnggPz8gMCwgeTogc3RhcnQueSA/PyAwIH0sIGVuZDogZW5kLCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICcxJyB9KTtcblxuICAgIGNvbnN0IGVuZFBvc2l0aW9uWCA9IGNsb25lRGVlcChlbmRQb3NpdGlvbik7XG5cbiAgICBlbmRQb3NpdGlvblgueCAtPSAxMDtcblxuICAgIGxldCBzZXBhcmF0ZWRQb2ludHNDaGVja0FuZEF2b2lkQmxvY2tzOiBBcnJheTxJUG9pbnRzPiA9IFtdO1xuICAgIGxldCB7IHBhdGgsIGVuZFBhdGggfSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3MoZW5kLnggPz8gMCwgZW5kLnkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvblgsIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2Nrcyk7XG5cbiAgICBpZiAoTWF0aC5hYnMoKHN0YXJ0LnggPz8gMCkgLSBlbmRQb3NpdGlvbi54KSA8IDEwKSB7XG4gICAgICBwYXRoID0gJyc7XG4gICAgICBlbmRQYXRoID0ge1xuICAgICAgICB4OiBzdGFydC54LFxuICAgICAgICB5OiBzdGFydC55LFxuICAgICAgfTtcblxuICAgICAgc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2NrcyA9IFtdO1xuICAgIH1cblxuICAgIHNlcGFyYXRlZFBvaW50cy5zcGxpY2Uoc2VwYXJhdGVkUG9pbnRzLmxlbmd0aCwgMCwgLi4uc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2Nrcyk7XG5cbiAgICAvLyBzYXUga2hpIMSRw6MgxJFpIG5nYW5nIHbDoCB0csOhbmggY8OhYyBraOG7kWksIHRp4bq/cCB0aGVvIGzDoCDEkWkgdGnhur9wIGjGsOG7m25nIGzDqm4geHXhu5FuZyDEkeG7gyB24buBIGto4buRaSBj4bqnbiBu4buRaSB04bubaSwgY+G6p24gY2hlY2sgeGVtIMSRaeG7g20gZW5kIFggbsOzIMSRYW5nIOG7nyBoxrDhu5tuZyBuw6BvXG4gICAgY29uc3QgZGlyZWN0aW9uWSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KGVuZFBhdGgueSwgZW5kUG9zaXRpb24ueSwgJ3knKTtcblxuICAgIGlmIChkaXJlY3Rpb25ZID09PSAnY2VudGVyJykge1xuICAgICAgY29uc3QgTEVuZCA9IHsgeDogZWxlbWVudE5leHQueCA/PyAwLCB5OiBlbmRQYXRoLnkgfTtcblxuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogZW5kUGF0aCwgZW5kOiBMRW5kLCBtb2RlOiAnaG9yaXpvbnRhbCcsIGlkOiAnZicgfSk7XG5cbiAgICAgIC8vIMSRb+G6oW4gbsOgeSBjaMawYSBvY2VcbiAgICAgIHRoaXMuY2xvc2VMaW5lV2l0aExpbmVUb3BCb3R0b20oTEVuZCwgZW5kUG9zaXRpb24sIGxpbmVDdXJ2ZSwgZWxlbWVudE5leHQsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGRQYXRoOiBgJHtwYXRofSBMICR7TEVuZC54fSAke0xFbmQueX1gLFxuICAgICAgICBlbmRQYXRoOiBMRW5kLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBjb25zdCBjb29yZFExID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSA/PyAwIH0sIGByaWdodC0ke2RpcmVjdGlvblkgPT09ICdhYm92ZScgPyAnYWJvdmUnIDogJ3VuZGVyJ31gLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG4gICAgY29uc3QgZW5kUG9zaXRpb25ZID0gY2xvbmVEZWVwKGVuZFBvc2l0aW9uKTtcblxuICAgIGVuZFBvc2l0aW9uWS55ID0gTW9DYW52YXNDYWxjdWxhdG9yQnJhbmNoVXRpbC5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uWSwgZW5kUG9zaXRpb24ueSwgbGluZUN1cnZlKSAtIDEwO1xuXG4gICAgLy8gY+G6p24gY2hlY2sga2hpIMSRaSB0aOG6s25nIGzDqm4gY8OzIHbGsOG7m25nIGto4buRaSBuw6BvIGtow7RuZyDEkeG7gyB0aeG6v24gbMOqblxuICAgIGNvbnN0IGVsZW1lbnRCbG9ja1JvYWRTdHJhaWdodExpbmVZID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tCbG9ja3NFbGVtZW50U3RyYWlnaHRZKChlbmRQYXRoLnggPz8gMCkgKyAxMCwgZW5kUGF0aC55ID8/IDAsIGVuZFBvc2l0aW9uWSwgb2JzdGFjbGVSZWN0KTtcblxuICAgIGlmIChlbGVtZW50QmxvY2tSb2FkU3RyYWlnaHRMaW5lWSkge1xuICAgICAgY29vcmRRMS54ID0gKGVsZW1lbnRCbG9ja1JvYWRTdHJhaWdodExpbmVZLnggPz8gMCkgKyAoZWxlbWVudEJsb2NrUm9hZFN0cmFpZ2h0TGluZVkud2lkdGggPz8gMCkgKyBsaW5lQ3VydmU7XG4gICAgfVxuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSB9LCBlbmQ6IHsgeDogY29vcmRRMS54ID8/IDAsIHk6IGNvb3JkUTEueSA/PyAwIH0sIG1vZGU6ICdob3Jpem9udGFsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnZycgfSk7XG5cbiAgICBsZXQgYXZvaWRCbG9ja3NZTGluZTogSVBvaW50c1tdID0gW107XG4gICAgY29uc3Qgc3RyYWlnaHRMaW5lID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2Nrc1koY29vcmRRMS54ID8/IDAsIGNvb3JkUTEueSA/PyAwLCBsaW5lQ3VydmUsIGVuZFBvc2l0aW9uWSwgZGlyZWN0aW9uWSwgb2JzdGFjbGVSZWN0LCBhdm9pZEJsb2Nrc1lMaW5lKTtcblxuICAgIGlmIChkaXJlY3Rpb25ZID09PSAndW5kZXInICYmIChjb29yZFExLnkgPz8gMCkgPiBlbmRQb3NpdGlvblkueSkge1xuICAgICAgYXZvaWRCbG9ja3NZTGluZSA9IFtdO1xuICAgICAgc3RyYWlnaHRMaW5lLmVuZFBhdGggPSB7IHg6IGNvb3JkUTEueCA/PyAwLCB5OiBjb29yZFExLnkgPz8gMCB9O1xuICAgIH1cbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCguLi5hdm9pZEJsb2Nrc1lMaW5lKTtcbiAgICB0aGlzLmNsb3NlTGluZVdpdGhMaW5lVG9wQm90dG9tKHsgeDogc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwLCB5OiBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDAgfSwgZW5kUG9zaXRpb24sIGxpbmVDdXJ2ZSwgZWxlbWVudE5leHQsIHNlcGFyYXRlZFBvaW50cyk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgZFBhdGg6IGBgLFxuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -141,7 +141,6 @@ export class MoCanvasConnectNavigationBottomLeftElementUtil {
141
141
  }
142
142
  separatedPoints.push(...avoidBlocksYLine);
143
143
  separatedPoints.push({ start: { x: straightLine.endPath.x ?? 0, y: straightLine.endPath.y ?? 0 }, end: endPosition, mode: 'vertical-single-curve', id: '4' });
144
- return;
145
144
  }
146
145
  }
147
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jb25uZWN0LWJvdHRvbS1sZWZ0LnVudGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RyYXctbGluZS9zcmMvdXRpbC9saW5lLWNvbm5lY3QtYm90dG9tLWxlZnQudW50aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTdGLE1BQU0sT0FBTyw4Q0FBOEM7SUFDekQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFnQixFQUFFLFVBQWlCLEVBQUUsS0FBYSxFQUFFLFNBQWlCLEVBQUUsWUFBcUIsRUFBRSxlQUErQjtRQUMzSSxNQUFNLGlCQUFpQixHQUFHO1lBQ3hCLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNkLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNmLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRCxNQUFNLGVBQWUsR0FBRyxzQ0FBc0MsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV2SCxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFeEIsSUFBSSxlQUFlLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDaEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUM1RSxNQUFNLElBQUksR0FB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QUFLLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztRQUU5SixPQUFPO0lBQ1QsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgY2xvbmVEZWVwIH0gZnJvbSAnQGxpYnMtdWkvdXRpbHMnO1xuaW1wb3J0IHsgSVBvaW50LCBJUG9pbnRzLCBJUmVjdCB9IGZyb20gJy4uL2RyYXctbGluZS5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTW9DYW52YXNDYWxjdWxhdG9yQnJhbmNoVXRpbCB9IGZyb20gJy4vY2FsY3VsYXRvci1icmFuY2gudXRpbCc7XG5pbXBvcnQgeyBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbCB9IGZyb20gJy4vY2FsY3VsYXRvci1kaXJldGlvbi1lbGVtZW50LnVudGlsJztcblxuZXhwb3J0IGNsYXNzIE1vQ2FudmFzQ29ubmVjdE5hdmlnYXRpb25Cb3R0b21MZWZ0RWxlbWVudFV0aWwge1xuICBzdGF0aWMgbGluZUxlZnQocG9pbnROZXh0OiBJUmVjdCwgcG9pbnRTdGFydDogSVJlY3QsIHN0YXJ0OiBJUG9pbnQsIGxpbmVDdXJ2ZTogbnVtYmVyLCBvYnN0YWNsZVJlY3Q6IElSZWN0W10sIHNlcGFyYXRlZFBvaW50czogQXJyYXk8SVBvaW50cz4pIHtcbiAgICBjb25zdCBlbmRQb3NpdGlvbk9yaWdpbiA9IHtcbiAgICAgIHg6IHBvaW50TmV4dC54LFxuICAgICAgeTogcG9pbnROZXh0LnksXG4gICAgfTtcbiAgICBjb25zdCBlbmRQb3NpdGlvbiA9IGNsb25lRGVlcChlbmRQb3NpdGlvbk9yaWdpbik7XG4gICAgY29uc3QgZGlyZWN0aW9uU3RhcnRZID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoc3RhcnQueSwgZW5kUG9zaXRpb25PcmlnaW4ueSwgJ3knKTtcblxuICAgIGxldCBuZXdQb3NpdGlvbiA9IHN0YXJ0O1xuXG4gICAgaWYgKGRpcmVjdGlvblN0YXJ0WSA9PT0gJ2Fib3ZlJykge1xuICAgICAgY29uc3Qgc3RhcnRRTCA9IHsgbHg6IHN0YXJ0LnggLSBsaW5lQ3VydmUsIGx5OiAoc3RhcnQueSA/PyAwKSArIGxpbmVDdXJ2ZSB9O1xuICAgICAgY29uc3QgbGluZSA9IHtcbiAgICAgICAgc3RhcnQ6IHsgeDogc3RhcnQueCA/PyAwLCB5OiBzdGFydC55ID8/IDAgfSxcbiAgICAgICAgZW5kOiB7IHg6IHN0YXJ0UUwubHggPz8gMCwgeTogc3RhcnRRTC5seSA/PyAwIH0sXG4gICAgICB9O1xuXG4gICAgICBuZXdQb3NpdGlvbiA9IHtcbiAgICAgICAgeDogcG9pbnRTdGFydC54IC0gKGxpbmVDdXJ2ZSArIDEwKSxcbiAgICAgICAgeTogTW9DYW52YXNDYWxjdWxhdG9yQnJhbmNoVXRpbC5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uU3RhcnRZLCBsaW5lLmVuZC55LCBsaW5lQ3VydmUsIHRydWUpLFxuICAgICAgfTtcblxuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogbGluZS5zdGFydCwgZW5kOiBsaW5lLmVuZCwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnMScgfSk7IC8vIGxpbmUgduG6vSDEkWkga2jhu49pIGto4buRaSDEkeG6p3UgdGnDqm5cbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IGxpbmUuZW5kLCBlbmQ6IG5ld1Bvc2l0aW9uLCBtb2RlOiAnaG9yaXpvbnRhbC1zaW5nbGUtY3VydmUnLCBpZDogJzEnIH0pOyAvLyBsaW5lIHbhur0gxJFpIGto4buPaSBraOG7kWkgxJHhuqd1IHRpw6puXG4gICAgfVxuXG4gICAgLy8ga2nhu4NtIHRyYSBoxrDhu5tuZyB0aOG6s25nIMSR4bq/biBlbmQsIG7hur91IGPDsyBraOG7kWkgdGjDrCB0csOhbmhcbiAgICBlbmRQb3NpdGlvbk9yaWdpbi55ID0gTW9DYW52YXNDYWxjdWxhdG9yQnJhbmNoVXRpbC5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uU3RhcnRZLCBlbmRQb3NpdGlvbk9yaWdpbi55LCBsaW5lQ3VydmUpO1xuICAgIGNvbnN0IHN0cmFpZ2h0TGluZSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3NZTGVmdChuZXdQb3NpdGlvbi54ID8/IDAsIG5ld1Bvc2l0aW9uLnkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvbk9yaWdpbiwgZGlyZWN0aW9uU3RhcnRZLCBvYnN0YWNsZVJlY3QsIHNlcGFyYXRlZFBvaW50cyk7XG4gICAgY29uc3QgZGlyZWN0aW9uU3RhcnRYID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tVcERvd25MZWZ0UmlnaHQoc3RyYWlnaHRMaW5lLmVuZFBhdGgueCwgZW5kUG9zaXRpb25PcmlnaW4ueCwgJ3gnKTtcblxuICAgIGlmIChkaXJlY3Rpb25TdGFydFggPT09ICdjZW50ZXInICYmIGRpcmVjdGlvblN0YXJ0WSA9PT0gJ3VuZGVyJykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChNYXRoLmFicygoc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwKSAtIGVuZFBvc2l0aW9uT3JpZ2luLngpIDwgbGluZUN1cnZlKSB7XG4gICAgICBjb25zdCBsaXN0TGluZSA9IHNlcGFyYXRlZFBvaW50cy5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uaWQgPT09ICdjaGVja0FuZEF2b2lkQmxvY2tzWUxlZnQnKTtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gbGlzdExpbmUuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnN0YXJ0LnggPT09IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggfHwgaXRlbS5lbmQueCA9PT0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueCk7XG5cbiAgICAgIGVsZW1lbnRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uc3RhcnQueCA9PT0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueCkge1xuICAgICAgICAgIGl0ZW0uc3RhcnQueCA9IE1vQ2FudmFzQ2FsY3VsYXRvckJyYW5jaFV0aWwubWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvblN0YXJ0WCwgaXRlbS5zdGFydC54LCBsaW5lQ3VydmUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmVuZC54ID09PSBzdHJhaWdodExpbmUuZW5kUGF0aC54KSB7XG4gICAgICAgICAgaXRlbS5lbmQueCA9IE1vQ2FudmFzQ2FsY3VsYXRvckJyYW5jaFV0aWwubWF0aE9wZXJhdG9yc0NhbGN1bGF0aW9uKGRpcmVjdGlvblN0YXJ0WCwgaXRlbS5lbmQueCwgbGluZUN1cnZlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgLy8gLy8ga2nhu4NtIHRyYSBuZ2F5IGtoaSBjdWEgY8OzIHbGsOG7m25nIGFpIGtow7RuZyBy4buTaSBo4bq1bmcgduG6vSBRMVxuICAgIGNvbnN0IGVsZW1lbnRCbG9ja1JvYWQgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja0xpbmVQYXNzQmxvY2tIb3Jpem9udGFsKHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgZW5kUG9zaXRpb25PcmlnaW4ueCwgc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwLCAneCcsIG9ic3RhY2xlUmVjdCkgYXMgSVJlY3Q7XG4gICAgY29uc3QgZGlyZWN0aW9uTmV4dFggPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDAsIGVuZFBvc2l0aW9uT3JpZ2luLngsICd4Jyk7XG4gICAgY29uc3QgY29vcmRRMSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmRyYXdMaW5lUSh7IHg6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgeTogc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwIH0sIGAke2RpcmVjdGlvblN0YXJ0WX0tJHtkaXJlY3Rpb25OZXh0WH1gLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG4gICAgY29uc3QgZWxlbWVudEJsb2NrUm9hZFggPSAoZWxlbWVudEJsb2NrUm9hZD8ueCA/PyAwKSArIChlbGVtZW50QmxvY2tSb2FkPy53aWR0aCA/PyAwKTtcblxuICAgIGlmIChlbGVtZW50QmxvY2tSb2FkICYmIE1hdGguYWJzKGVsZW1lbnRCbG9ja1JvYWRYIC0gKHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCkpIDw9IGxpbmVDdXJ2ZSAqIDIpIHtcbiAgICAgIGNvb3JkUTEueDEgPSBzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDA7XG4gICAgICBjb29yZFExLnkxID0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwO1xuICAgICAgY29vcmRRMS54ID0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwO1xuICAgICAgY29vcmRRMS55ID0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA/PyAwO1xuICAgIH1cblxuICAgIC8vIGtp4buDbSB0cmEgdsOgIHbhur0gaMaw4bubbmcgbmdhbmdcbiAgICBjb25zdCBkaXJlY3Rpb25YVG9FbmQgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChjb29yZFExLnggPz8gMCwgZW5kUG9zaXRpb24ueCwgJ3gnKTtcbiAgICBjb25zdCBwYXRoSG9yaXpvbnRhbDogSVBvaW50c1tdID0gW107XG4gICAgY29uc3QgZW5kUGF0aCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3NMZWZ0KGNvb3JkUTEueCA/PyAwLCBjb29yZFExLnkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvbiwgb2JzdGFjbGVSZWN0LCBwYXRoSG9yaXpvbnRhbCk7XG5cbiAgICBpZiAoZGlyZWN0aW9uWFRvRW5kID09PSAnbGVmdCcgJiYgZW5kUGF0aC54ID4gKGNvb3JkUTEueCA/PyAwKSkge1xuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogc3RyYWlnaHRMaW5lLmVuZFBhdGgsIGVuZDogZW5kUG9zaXRpb24sIG1vZGU6ICd2ZXJ0aWNhbCcsIGlkOiAnNmEgJyArIGRpcmVjdGlvblN0YXJ0WSB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBjb25zdCBlbmQgPSB7IHg6IGNvb3JkUTEueCA/PyAwLCB5OiBjb29yZFExLnkgPz8gMCB9O1xuXG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goLi4ucGF0aEhvcml6b250YWwpO1xuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLCBlbmQ6IGVuZCwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnNmEgJyArIGRpcmVjdGlvblN0YXJ0WSB9KTsgLy8gZ8OzYyBjb25nIHThu6sgxJHGsOG7nW5nIHRo4bqzbmcgc2FuZyBuZ2FuZ1xuICAgIGlmIChlbmRQYXRoLnggPT09IGVuZFBvc2l0aW9uLnggJiYgZW5kUGF0aC55IDwgZW5kUG9zaXRpb24ueSkge1xuICAgICAgY29uc3QgaXRlbUxhc3QgPSBwYXRoSG9yaXpvbnRhbC5maW5kKChpdGVtKSA9PiBpdGVtLmVuZC54ID09PSBlbmRQYXRoLngpO1xuXG4gICAgICBpZiAoaXRlbUxhc3QpIHtcbiAgICAgICAgaXRlbUxhc3QuZW5kLnggPSBlbmRQb3NpdGlvbi54ICsgNTA7XG4gICAgICAgIGVuZFBhdGgueCA9IGl0ZW1MYXN0LmVuZC54O1xuICAgICAgfVxuICAgIH1cbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBlbmRQYXRoLCBlbmQ6IHsgeDogcG9pbnROZXh0LngsIHk6IHBvaW50TmV4dC55IH0sIG1vZGU6ICdob3Jpem9udGFsJywgaWQ6ICdsaW5lRW5kJyB9KTtcbiAgfVxuXG4gIHN0YXRpYyByaWdodExlZnQoZWxlbWVudE5leHQ6IElSZWN0LCBzdGFydDogSVBvaW50LCBsaW5lQ3VydmU6IG51bWJlciwgb2JzdGFjbGVSZWN0OiBJUmVjdFtdLCBzZXBhcmF0ZWRQb2ludHM6IEFycmF5PElQb2ludHM+KSB7XG4gICAgY29uc3QgZW5kUG9zaXRpb24gPSB7XG4gICAgICB4OiBlbGVtZW50TmV4dC54LFxuICAgICAgeTogZWxlbWVudE5leHQueSxcbiAgICB9O1xuXG4gICAgLy8gduG6vSAxIMSRxrDhu51uZyB0aOG6s25nIHThu6sgxJFp4buDbSBzdGFydCByYSBuZ2/DoGkgxJHDo1xuICAgIGNvbnN0IGVuZCA9IHsgeDogKHN0YXJ0LnggPz8gMCkgKyAxMCwgeTogKHN0YXJ0LnkgPz8gMCkgKyAxMCB9O1xuXG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBzdGFydC54ID8/IDAsIHk6IHN0YXJ0LnkgPz8gMCB9LCBlbmQ6IGVuZCwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnMScgfSk7XG5cbiAgICBjb25zdCBlbmRQb3NpdGlvblggPSBjbG9uZURlZXAoZW5kUG9zaXRpb24pO1xuXG4gICAgZW5kUG9zaXRpb25YLnggLT0gNTA7XG5cbiAgICBsZXQgc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2NrczogQXJyYXk8SVBvaW50cz4gPSBbXTtcblxuICAgIGxldCB7IGVuZFBhdGggfSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3MoZW5kLnggPz8gMCwgZW5kLnkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvblgsIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2Nrcyk7XG5cbiAgICBpZiAoTWF0aC5hYnMoKHN0YXJ0LnggPz8gMCkgLSBlbmRQb3NpdGlvbi54KSA8IDEwIHx8IGVuZC54ID4gZW5kUGF0aC54KSB7XG4gICAgICBlbmRQYXRoID0ge1xuICAgICAgICB4OiBlbmQueCxcbiAgICAgICAgeTogZW5kLnksXG4gICAgICB9O1xuXG4gICAgICBzZXBhcmF0ZWRQb2ludHNDaGVja0FuZEF2b2lkQmxvY2tzID0gW107XG4gICAgfVxuXG4gICAgaWYgKE1hdGguYWJzKChlbmRQYXRoLnkgPz8gMCkgLSBlbmRQb3NpdGlvbi55KSA8IDE1KSB7XG4gICAgICBjb25zdCBlbGVtZW50ID0gc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2Nrcy5maW5kKChpdGVtKSA9PiBpdGVtLmVuZC55ID09PSBlbmRQYXRoLnkgJiYgaXRlbS5lbmQueCA9PT0gZW5kUGF0aC54KTtcbiAgICAgIGNvbnN0IGVsZW1lbnRRUiA9IHNlcGFyYXRlZFBvaW50c0NoZWNrQW5kQXZvaWRCbG9ja3MuZmluZCgoaXRlbSkgPT4gaXRlbS5lbmQueSA9PT0gZWxlbWVudD8uc3RhcnQueSAmJiBpdGVtLmVuZC54ID09PSBlbGVtZW50LnN0YXJ0LngpO1xuXG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50LnN0YXJ0LnkgPSBlbmRQb3NpdGlvbi55O1xuICAgICAgICBlbGVtZW50LmVuZC55ID0gZW5kUG9zaXRpb24ueTtcbiAgICAgIH1cbiAgICAgIGlmIChlbGVtZW50UVIpIHtcbiAgICAgICAgZWxlbWVudFFSLmVuZC55ID0gZW5kUG9zaXRpb24ueTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXBhcmF0ZWRQb2ludHMuc3BsaWNlKHNlcGFyYXRlZFBvaW50cy5sZW5ndGgsIDAsIC4uLnNlcGFyYXRlZFBvaW50c0NoZWNrQW5kQXZvaWRCbG9ja3MpO1xuXG4gICAgaWYgKGVuZFBhdGgueSA9PT0gZW5kUG9zaXRpb24ueSkge1xuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBlbmRQYXRoLnggPz8gMCwgeTogZW5kUGF0aC55IH0sIGVuZDogZW5kUG9zaXRpb24sIG1vZGU6ICdob3Jpem9udGFsJyB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoTWF0aC5hYnMoKGVuZFBhdGgueSA/PyAwKSAtIGVuZFBvc2l0aW9uLnkpIDwgMTUpIHtcbiAgICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSB9LCBlbmQ6IGVuZFBvc2l0aW9uLCBtb2RlOiAndmVydGljYWwnIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gLy8gc2F1IGtoaSDEkcOjIMSRaSBuZ2FuZyB2w6AgdHLDoW5oIGPDoWMga2jhu5FpLCB0aeG6v3AgdGhlbyBsw6AgxJFpIHRp4bq/cCBoxrDhu5tuZyBsw6puIHh14buRbmcgxJHhu4MgduG7gSBraOG7kWkgY+G6p24gbuG7kWkgdOG7m2ksIGPhuqduIGNoZWNrIHhlbSDEkWnhu4NtIGVuZCBYIG7DsyDEkWFuZyDhu58gaMaw4bubbmcgbsOgb1xuICAgIGNvbnN0IGRpcmVjdGlvblkgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChlbmRQYXRoLnksIGVuZFBvc2l0aW9uLnksICd5Jyk7XG5cbiAgICBjb25zdCBjb29yZFExID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogZW5kUGF0aC54ID8/IDAsIHk6IGVuZFBhdGgueSA/PyAwIH0sIGByaWdodC0ke2RpcmVjdGlvblkgPT09ICdhYm92ZScgPyAnYWJvdmUnIDogJ3VuZGVyJ31gLCBsaW5lQ3VydmUsIGxpbmVDdXJ2ZSk7IC8vIHTDrW5oIMSRb+G6oW4gY29uZyB04burIMSRxrDhu51uZyBuZ2FuZyBzYW5nIMSRxrDhu51uZyB0aOG6s25nXG4gICAgY29uc3QgZW5kUG9zaXRpb25ZID0gY2xvbmVEZWVwKGVuZFBvc2l0aW9uKTtcblxuICAgIGVuZFBvc2l0aW9uWS55ID0gTW9DYW52YXNDYWxjdWxhdG9yQnJhbmNoVXRpbC5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uWSwgZW5kUG9zaXRpb25ZLnksIGxpbmVDdXJ2ZSk7XG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBlbmRQYXRoLnggPz8gMCwgeTogZW5kUGF0aC55IH0sIGVuZDogeyB4OiBjb29yZFExLnggPz8gMCwgeTogY29vcmRRMS55ID8/IDAgfSwgbW9kZTogJ2hvcml6b250YWwtc2luZ2xlLWN1cnZlJywgaWQ6ICdnJyB9KTtcblxuICAgIGxldCBhdm9pZEJsb2Nrc1lMaW5lOiBJUG9pbnRzW10gPSBbXTtcbiAgICBjb25zdCBzdHJhaWdodExpbmUgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja0FuZEF2b2lkQmxvY2tzWShjb29yZFExLnggPz8gMCwgY29vcmRRMS55ID8/IDAsIGxpbmVDdXJ2ZSwgZW5kUG9zaXRpb25ZLCBkaXJlY3Rpb25ZLCBvYnN0YWNsZVJlY3QsIGF2b2lkQmxvY2tzWUxpbmUpO1xuXG4gICAgaWYgKGRpcmVjdGlvblkgPT09ICd1bmRlcicgJiYgKGNvb3JkUTEueSA/PyAwKSA+IGVuZFBvc2l0aW9uWS55KSB7XG4gICAgICBhdm9pZEJsb2Nrc1lMaW5lID0gW107XG4gICAgICBzdHJhaWdodExpbmUuZW5kUGF0aCA9IHsgeDogY29vcmRRMS54ID8/IDAsIHk6IGNvb3JkUTEueSA/PyAwIH07XG4gICAgfVxuICAgIGlmIChkaXJlY3Rpb25ZID09PSAnYWJvdmUnICYmIHN0cmFpZ2h0TGluZS5lbmRQYXRoLnkgPD0gZW5kUG9zaXRpb24ueSkge1xuICAgICAgYXZvaWRCbG9ja3NZTGluZSA9IFtdO1xuICAgICAgc3RyYWlnaHRMaW5lLmVuZFBhdGggPSB7IHg6IGNvb3JkUTEueCA/PyAwLCB5OiBjb29yZFExLnkgPz8gMCB9O1xuICAgIH1cbiAgICBpZiAoTWF0aC5hYnMoKHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCkgLSBlbmRQb3NpdGlvbi54KSA8IDE1KSB7XG4gICAgICBjb25zdCBlbGVtZW50cyA9IGF2b2lkQmxvY2tzWUxpbmUuZmlsdGVyKChpdGVtKSA9PiBpdGVtLnN0YXJ0LnggPT09IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggfHwgaXRlbS5lbmQueCA9PT0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueCk7XG5cbiAgICAgIGVsZW1lbnRzLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uc3RhcnQueCA9PT0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueCkge1xuICAgICAgICAgIGl0ZW0uc3RhcnQueCArPSAzMDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoaXRlbS5lbmQueCA9PT0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueCkge1xuICAgICAgICAgIGl0ZW0uZW5kLnggKz0gMzA7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKC4uLmF2b2lkQmxvY2tzWUxpbmUpO1xuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IHsgeDogc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwLCB5OiBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDAgfSwgZW5kOiBlbmRQb3NpdGlvbiwgbW9kZTogJ3ZlcnRpY2FsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnNCcgfSk7XG5cbiAgICByZXR1cm47XG4gIH1cbn1cbiJdfQ==
146
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGluZS1jb25uZWN0LWJvdHRvbS1sZWZ0LnVudGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vbGlicy11aS9jb21wb25lbnRzL2RyYXctbGluZS9zcmMvdXRpbC9saW5lLWNvbm5lY3QtYm90dG9tLWxlZnQudW50aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTNDLE9BQU8sRUFBRSw0QkFBNEIsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hFLE9BQU8sRUFBRSxzQ0FBc0MsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBRTdGLE1BQU0sT0FBTyw4Q0FBOEM7SUFDekQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFnQixFQUFFLFVBQWlCLEVBQUUsS0FBYSxFQUFFLFNBQWlCLEVBQUUsWUFBcUIsRUFBRSxlQUErQjtRQUMzSSxNQUFNLGlCQUFpQixHQUFHO1lBQ3hCLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztZQUNkLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQztTQUNmLENBQUM7UUFDRixNQUFNLFdBQVcsR0FBRyxTQUFTLENBQUMsaUJBQWlCLENBQUMsQ0FBQztRQUNqRCxNQUFNLGVBQWUsR0FBRyxzQ0FBc0MsQ0FBQyxvQkFBb0IsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLGlCQUFpQixDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQztRQUV2SCxJQUFJLFdBQVcsR0FBRyxLQUFLLENBQUM7UUFFeEIsSUFBSSxlQUFlLEtBQUssT0FBTyxFQUFFLENBQUM7WUFDaEMsTUFBTSxPQUFPLEdBQUcsRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQztZQUM1RSxNQUFNLElBQUksR0FB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QUFLLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUM7b0JBQzFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDbkIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxDQUFDO1FBQzFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxHQUFHLEVBQUUsV0FBVyxFQUFFLElBQUksRUFBRSx1QkFBdUIsRUFBRSxFQUFFLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQztJQUNoSyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjbG9uZURlZXAgfSBmcm9tICdAbGlicy11aS91dGlscyc7XG5pbXBvcnQgeyBJUG9pbnQsIElQb2ludHMsIElSZWN0IH0gZnJvbSAnLi4vZHJhdy1saW5lLmludGVyZmFjZSc7XG5pbXBvcnQgeyBNb0NhbnZhc0NhbGN1bGF0b3JCcmFuY2hVdGlsIH0gZnJvbSAnLi9jYWxjdWxhdG9yLWJyYW5jaC51dGlsJztcbmltcG9ydCB7IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsIH0gZnJvbSAnLi9jYWxjdWxhdG9yLWRpcmV0aW9uLWVsZW1lbnQudW50aWwnO1xuXG5leHBvcnQgY2xhc3MgTW9DYW52YXNDb25uZWN0TmF2aWdhdGlvbkJvdHRvbUxlZnRFbGVtZW50VXRpbCB7XG4gIHN0YXRpYyBsaW5lTGVmdChwb2ludE5leHQ6IElSZWN0LCBwb2ludFN0YXJ0OiBJUmVjdCwgc3RhcnQ6IElQb2ludCwgbGluZUN1cnZlOiBudW1iZXIsIG9ic3RhY2xlUmVjdDogSVJlY3RbXSwgc2VwYXJhdGVkUG9pbnRzOiBBcnJheTxJUG9pbnRzPikge1xuICAgIGNvbnN0IGVuZFBvc2l0aW9uT3JpZ2luID0ge1xuICAgICAgeDogcG9pbnROZXh0LngsXG4gICAgICB5OiBwb2ludE5leHQueSxcbiAgICB9O1xuICAgIGNvbnN0IGVuZFBvc2l0aW9uID0gY2xvbmVEZWVwKGVuZFBvc2l0aW9uT3JpZ2luKTtcbiAgICBjb25zdCBkaXJlY3Rpb25TdGFydFkgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChzdGFydC55LCBlbmRQb3NpdGlvbk9yaWdpbi55LCAneScpO1xuXG4gICAgbGV0IG5ld1Bvc2l0aW9uID0gc3RhcnQ7XG5cbiAgICBpZiAoZGlyZWN0aW9uU3RhcnRZID09PSAnYWJvdmUnKSB7XG4gICAgICBjb25zdCBzdGFydFFMID0geyBseDogc3RhcnQueCAtIGxpbmVDdXJ2ZSwgbHk6IChzdGFydC55ID8/IDApICsgbGluZUN1cnZlIH07XG4gICAgICBjb25zdCBsaW5lID0ge1xuICAgICAgICBzdGFydDogeyB4OiBzdGFydC54ID8/IDAsIHk6IHN0YXJ0LnkgPz8gMCB9LFxuICAgICAgICBlbmQ6IHsgeDogc3RhcnRRTC5seCA/PyAwLCB5OiBzdGFydFFMLmx5ID8/IDAgfSxcbiAgICAgIH07XG5cbiAgICAgIG5ld1Bvc2l0aW9uID0ge1xuICAgICAgICB4OiBwb2ludFN0YXJ0LnggLSAobGluZUN1cnZlICsgMTApLFxuICAgICAgICB5OiBNb0NhbnZhc0NhbGN1bGF0b3JCcmFuY2hVdGlsLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb25TdGFydFksIGxpbmUuZW5kLnksIGxpbmVDdXJ2ZSwgdHJ1ZSksXG4gICAgICB9O1xuXG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBsaW5lLnN0YXJ0LCBlbmQ6IGxpbmUuZW5kLCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICcxJyB9KTsgLy8gbGluZSB24bq9IMSRaSBraOG7j2kga2jhu5FpIMSR4bqndSB0acOqblxuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogbGluZS5lbmQsIGVuZDogbmV3UG9zaXRpb24sIG1vZGU6ICdob3Jpem9udGFsLXNpbmdsZS1jdXJ2ZScsIGlkOiAnMScgfSk7IC8vIGxpbmUgduG6vSDEkWkga2jhu49pIGto4buRaSDEkeG6p3UgdGnDqm5cbiAgICB9XG5cbiAgICAvLyBraeG7g20gdHJhIGjGsOG7m25nIHRo4bqzbmcgxJHhur9uIGVuZCwgbuG6v3UgY8OzIGto4buRaSB0aMOsIHRyw6FuaFxuICAgIGVuZFBvc2l0aW9uT3JpZ2luLnkgPSBNb0NhbnZhc0NhbGN1bGF0b3JCcmFuY2hVdGlsLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb25TdGFydFksIGVuZFBvc2l0aW9uT3JpZ2luLnksIGxpbmVDdXJ2ZSk7XG4gICAgY29uc3Qgc3RyYWlnaHRMaW5lID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2Nrc1lMZWZ0KG5ld1Bvc2l0aW9uLnggPz8gMCwgbmV3UG9zaXRpb24ueSA/PyAwLCBsaW5lQ3VydmUsIGVuZFBvc2l0aW9uT3JpZ2luLCBkaXJlY3Rpb25TdGFydFksIG9ic3RhY2xlUmVjdCwgc2VwYXJhdGVkUG9pbnRzKTtcbiAgICBjb25zdCBkaXJlY3Rpb25TdGFydFggPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5jaGVja1VwRG93bkxlZnRSaWdodChzdHJhaWdodExpbmUuZW5kUGF0aC54LCBlbmRQb3NpdGlvbk9yaWdpbi54LCAneCcpO1xuXG4gICAgaWYgKGRpcmVjdGlvblN0YXJ0WCA9PT0gJ2NlbnRlcicgJiYgZGlyZWN0aW9uU3RhcnRZID09PSAndW5kZXInKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKE1hdGguYWJzKChzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDApIC0gZW5kUG9zaXRpb25PcmlnaW4ueCkgPCBsaW5lQ3VydmUpIHtcbiAgICAgIGNvbnN0IGxpc3RMaW5lID0gc2VwYXJhdGVkUG9pbnRzLmZpbHRlcigoaXRlbSkgPT4gaXRlbS5pZCA9PT0gJ2NoZWNrQW5kQXZvaWRCbG9ja3NZTGVmdCcpO1xuICAgICAgY29uc3QgZWxlbWVudHMgPSBsaXN0TGluZS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc3RhcnQueCA9PT0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueCB8fCBpdGVtLmVuZC54ID09PSBzdHJhaWdodExpbmUuZW5kUGF0aC54KTtcblxuICAgICAgZWxlbWVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5zdGFydC54ID09PSBzdHJhaWdodExpbmUuZW5kUGF0aC54KSB7XG4gICAgICAgICAgaXRlbS5zdGFydC54ID0gTW9DYW52YXNDYWxjdWxhdG9yQnJhbmNoVXRpbC5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uU3RhcnRYLCBpdGVtLnN0YXJ0LngsIGxpbmVDdXJ2ZSk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGl0ZW0uZW5kLnggPT09IHN0cmFpZ2h0TGluZS5lbmRQYXRoLngpIHtcbiAgICAgICAgICBpdGVtLmVuZC54ID0gTW9DYW52YXNDYWxjdWxhdG9yQnJhbmNoVXRpbC5tYXRoT3BlcmF0b3JzQ2FsY3VsYXRpb24oZGlyZWN0aW9uU3RhcnRYLCBpdGVtLmVuZC54LCBsaW5lQ3VydmUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyAvLyBraeG7g20gdHJhIG5nYXkga2hpIGN1YSBjw7Mgdsaw4bubbmcgYWkga2jDtG5nIHLhu5NpIGjhurVuZyB24bq9IFExXG4gICAgY29uc3QgZWxlbWVudEJsb2NrUm9hZCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrTGluZVBhc3NCbG9ja0hvcml6b250YWwoc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwLCBlbmRQb3NpdGlvbk9yaWdpbi54LCBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDAsICd4Jywgb2JzdGFjbGVSZWN0KSBhcyBJUmVjdDtcbiAgICBjb25zdCBkaXJlY3Rpb25OZXh0WCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMCwgZW5kUG9zaXRpb25PcmlnaW4ueCwgJ3gnKTtcbiAgICBjb25zdCBjb29yZFExID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuZHJhd0xpbmVRKHsgeDogc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwLCB5OiBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDAgfSwgYCR7ZGlyZWN0aW9uU3RhcnRZfS0ke2RpcmVjdGlvbk5leHRYfWAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIG5nYW5nIHNhbmcgxJHGsOG7nW5nIHRo4bqzbmdcbiAgICBjb25zdCBlbGVtZW50QmxvY2tSb2FkWCA9IChlbGVtZW50QmxvY2tSb2FkPy54ID8/IDApICsgKGVsZW1lbnRCbG9ja1JvYWQ/LndpZHRoID8/IDApO1xuXG4gICAgaWYgKGVsZW1lbnRCbG9ja1JvYWQgJiYgTWF0aC5hYnMoZWxlbWVudEJsb2NrUm9hZFggLSAoc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwKSkgPD0gbGluZUN1cnZlICogMikge1xuICAgICAgY29vcmRRMS54MSA9IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnggPz8gMDtcbiAgICAgIGNvb3JkUTEueTEgPSBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDA7XG4gICAgICBjb29yZFExLnggPSBzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDA7XG4gICAgICBjb29yZFExLnkgPSBzdHJhaWdodExpbmUuZW5kUGF0aC55ID8/IDA7XG4gICAgfVxuXG4gICAgLy8ga2nhu4NtIHRyYSB2w6AgduG6vSBoxrDhu5tuZyBuZ2FuZ1xuICAgIGNvbnN0IGRpcmVjdGlvblhUb0VuZCA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KGNvb3JkUTEueCA/PyAwLCBlbmRQb3NpdGlvbi54LCAneCcpO1xuICAgIGNvbnN0IHBhdGhIb3Jpem9udGFsOiBJUG9pbnRzW10gPSBbXTtcbiAgICBjb25zdCBlbmRQYXRoID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2Nrc0xlZnQoY29vcmRRMS54ID8/IDAsIGNvb3JkUTEueSA/PyAwLCBsaW5lQ3VydmUsIGVuZFBvc2l0aW9uLCBvYnN0YWNsZVJlY3QsIHBhdGhIb3Jpem9udGFsKTtcblxuICAgIGlmIChkaXJlY3Rpb25YVG9FbmQgPT09ICdsZWZ0JyAmJiBlbmRQYXRoLnggPiAoY29vcmRRMS54ID8/IDApKSB7XG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiBzdHJhaWdodExpbmUuZW5kUGF0aCwgZW5kOiBlbmRQb3NpdGlvbiwgbW9kZTogJ3ZlcnRpY2FsJywgaWQ6ICc2YSAnICsgZGlyZWN0aW9uU3RhcnRZIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IGVuZCA9IHsgeDogY29vcmRRMS54ID8/IDAsIHk6IGNvb3JkUTEueSA/PyAwIH07XG5cbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCguLi5wYXRoSG9yaXpvbnRhbCk7XG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogc3RyYWlnaHRMaW5lLmVuZFBhdGgsIGVuZDogZW5kLCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICc2YSAnICsgZGlyZWN0aW9uU3RhcnRZIH0pOyAvLyBnw7NjIGNvbmcgdOG7qyDEkcaw4budbmcgdGjhurNuZyBzYW5nIG5nYW5nXG4gICAgaWYgKGVuZFBhdGgueCA9PT0gZW5kUG9zaXRpb24ueCAmJiBlbmRQYXRoLnkgPCBlbmRQb3NpdGlvbi55KSB7XG4gICAgICBjb25zdCBpdGVtTGFzdCA9IHBhdGhIb3Jpem9udGFsLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZW5kLnggPT09IGVuZFBhdGgueCk7XG5cbiAgICAgIGlmIChpdGVtTGFzdCkge1xuICAgICAgICBpdGVtTGFzdC5lbmQueCA9IGVuZFBvc2l0aW9uLnggKyA1MDtcbiAgICAgICAgZW5kUGF0aC54ID0gaXRlbUxhc3QuZW5kLng7XG4gICAgICB9XG4gICAgfVxuICAgIHNlcGFyYXRlZFBvaW50cy5wdXNoKHsgc3RhcnQ6IGVuZFBhdGgsIGVuZDogeyB4OiBwb2ludE5leHQueCwgeTogcG9pbnROZXh0LnkgfSwgbW9kZTogJ2hvcml6b250YWwnLCBpZDogJ2xpbmVFbmQnIH0pO1xuICB9XG5cbiAgc3RhdGljIHJpZ2h0TGVmdChlbGVtZW50TmV4dDogSVJlY3QsIHN0YXJ0OiBJUG9pbnQsIGxpbmVDdXJ2ZTogbnVtYmVyLCBvYnN0YWNsZVJlY3Q6IElSZWN0W10sIHNlcGFyYXRlZFBvaW50czogQXJyYXk8SVBvaW50cz4pIHtcbiAgICBjb25zdCBlbmRQb3NpdGlvbiA9IHtcbiAgICAgIHg6IGVsZW1lbnROZXh0LngsXG4gICAgICB5OiBlbGVtZW50TmV4dC55LFxuICAgIH07XG5cbiAgICAvLyB24bq9IDEgxJHGsOG7nW5nIHRo4bqzbmcgdOG7qyDEkWnhu4NtIHN0YXJ0IHJhIG5nb8OgaSDEkcOjXG4gICAgY29uc3QgZW5kID0geyB4OiAoc3RhcnQueCA/PyAwKSArIDEwLCB5OiAoc3RhcnQueSA/PyAwKSArIDEwIH07XG5cbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiB7IHg6IHN0YXJ0LnggPz8gMCwgeTogc3RhcnQueSA/PyAwIH0sIGVuZDogZW5kLCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICcxJyB9KTtcblxuICAgIGNvbnN0IGVuZFBvc2l0aW9uWCA9IGNsb25lRGVlcChlbmRQb3NpdGlvbik7XG5cbiAgICBlbmRQb3NpdGlvblgueCAtPSA1MDtcblxuICAgIGxldCBzZXBhcmF0ZWRQb2ludHNDaGVja0FuZEF2b2lkQmxvY2tzOiBBcnJheTxJUG9pbnRzPiA9IFtdO1xuXG4gICAgbGV0IHsgZW5kUGF0aCB9ID0gTW9DYW52YXNDYWxjdWxhdG9yRGlyZWN0aW9uRWxlbWVudFV0aWwuY2hlY2tBbmRBdm9pZEJsb2NrcyhlbmQueCA/PyAwLCBlbmQueSA/PyAwLCBsaW5lQ3VydmUsIGVuZFBvc2l0aW9uWCwgb2JzdGFjbGVSZWN0LCBzZXBhcmF0ZWRQb2ludHNDaGVja0FuZEF2b2lkQmxvY2tzKTtcblxuICAgIGlmIChNYXRoLmFicygoc3RhcnQueCA/PyAwKSAtIGVuZFBvc2l0aW9uLngpIDwgMTAgfHwgZW5kLnggPiBlbmRQYXRoLngpIHtcbiAgICAgIGVuZFBhdGggPSB7XG4gICAgICAgIHg6IGVuZC54LFxuICAgICAgICB5OiBlbmQueSxcbiAgICAgIH07XG5cbiAgICAgIHNlcGFyYXRlZFBvaW50c0NoZWNrQW5kQXZvaWRCbG9ja3MgPSBbXTtcbiAgICB9XG5cbiAgICBpZiAoTWF0aC5hYnMoKGVuZFBhdGgueSA/PyAwKSAtIGVuZFBvc2l0aW9uLnkpIDwgMTUpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBzZXBhcmF0ZWRQb2ludHNDaGVja0FuZEF2b2lkQmxvY2tzLmZpbmQoKGl0ZW0pID0+IGl0ZW0uZW5kLnkgPT09IGVuZFBhdGgueSAmJiBpdGVtLmVuZC54ID09PSBlbmRQYXRoLngpO1xuICAgICAgY29uc3QgZWxlbWVudFFSID0gc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2Nrcy5maW5kKChpdGVtKSA9PiBpdGVtLmVuZC55ID09PSBlbGVtZW50Py5zdGFydC55ICYmIGl0ZW0uZW5kLnggPT09IGVsZW1lbnQuc3RhcnQueCk7XG5cbiAgICAgIGlmIChlbGVtZW50KSB7XG4gICAgICAgIGVsZW1lbnQuc3RhcnQueSA9IGVuZFBvc2l0aW9uLnk7XG4gICAgICAgIGVsZW1lbnQuZW5kLnkgPSBlbmRQb3NpdGlvbi55O1xuICAgICAgfVxuICAgICAgaWYgKGVsZW1lbnRRUikge1xuICAgICAgICBlbGVtZW50UVIuZW5kLnkgPSBlbmRQb3NpdGlvbi55O1xuICAgICAgfVxuICAgIH1cblxuICAgIHNlcGFyYXRlZFBvaW50cy5zcGxpY2Uoc2VwYXJhdGVkUG9pbnRzLmxlbmd0aCwgMCwgLi4uc2VwYXJhdGVkUG9pbnRzQ2hlY2tBbmRBdm9pZEJsb2Nrcyk7XG5cbiAgICBpZiAoZW5kUGF0aC55ID09PSBlbmRQb3NpdGlvbi55KSB7XG4gICAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiB7IHg6IGVuZFBhdGgueCA/PyAwLCB5OiBlbmRQYXRoLnkgfSwgZW5kOiBlbmRQb3NpdGlvbiwgbW9kZTogJ2hvcml6b250YWwnIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmIChNYXRoLmFicygoZW5kUGF0aC55ID8/IDApIC0gZW5kUG9zaXRpb24ueSkgPCAxNSkge1xuICAgICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBlbmRQYXRoLnggPz8gMCwgeTogZW5kUGF0aC55IH0sIGVuZDogZW5kUG9zaXRpb24sIG1vZGU6ICd2ZXJ0aWNhbCcgfSk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICAvLyAvLyBzYXUga2hpIMSRw6MgxJFpIG5nYW5nIHbDoCB0csOhbmggY8OhYyBraOG7kWksIHRp4bq/cCB0aGVvIGzDoCDEkWkgdGnhur9wIGjGsOG7m25nIGzDqm4geHXhu5FuZyDEkeG7gyB24buBIGto4buRaSBj4bqnbiBu4buRaSB04bubaSwgY+G6p24gY2hlY2sgeGVtIMSRaeG7g20gZW5kIFggbsOzIMSRYW5nIOG7nyBoxrDhu5tuZyBuw6BvXG4gICAgY29uc3QgZGlyZWN0aW9uWSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrVXBEb3duTGVmdFJpZ2h0KGVuZFBhdGgueSwgZW5kUG9zaXRpb24ueSwgJ3knKTtcblxuICAgIGNvbnN0IGNvb3JkUTEgPSBNb0NhbnZhc0NhbGN1bGF0b3JEaXJlY3Rpb25FbGVtZW50VXRpbC5kcmF3TGluZVEoeyB4OiBlbmRQYXRoLnggPz8gMCwgeTogZW5kUGF0aC55ID8/IDAgfSwgYHJpZ2h0LSR7ZGlyZWN0aW9uWSA9PT0gJ2Fib3ZlJyA/ICdhYm92ZScgOiAndW5kZXInfWAsIGxpbmVDdXJ2ZSwgbGluZUN1cnZlKTsgLy8gdMOtbmggxJFv4bqhbiBjb25nIHThu6sgxJHGsOG7nW5nIG5nYW5nIHNhbmcgxJHGsOG7nW5nIHRo4bqzbmdcbiAgICBjb25zdCBlbmRQb3NpdGlvblkgPSBjbG9uZURlZXAoZW5kUG9zaXRpb24pO1xuXG4gICAgZW5kUG9zaXRpb25ZLnkgPSBNb0NhbnZhc0NhbGN1bGF0b3JCcmFuY2hVdGlsLm1hdGhPcGVyYXRvcnNDYWxjdWxhdGlvbihkaXJlY3Rpb25ZLCBlbmRQb3NpdGlvblkueSwgbGluZUN1cnZlKTtcbiAgICBzZXBhcmF0ZWRQb2ludHMucHVzaCh7IHN0YXJ0OiB7IHg6IGVuZFBhdGgueCA/PyAwLCB5OiBlbmRQYXRoLnkgfSwgZW5kOiB7IHg6IGNvb3JkUTEueCA/PyAwLCB5OiBjb29yZFExLnkgPz8gMCB9LCBtb2RlOiAnaG9yaXpvbnRhbC1zaW5nbGUtY3VydmUnLCBpZDogJ2cnIH0pO1xuXG4gICAgbGV0IGF2b2lkQmxvY2tzWUxpbmU6IElQb2ludHNbXSA9IFtdO1xuICAgIGNvbnN0IHN0cmFpZ2h0TGluZSA9IE1vQ2FudmFzQ2FsY3VsYXRvckRpcmVjdGlvbkVsZW1lbnRVdGlsLmNoZWNrQW5kQXZvaWRCbG9ja3NZKGNvb3JkUTEueCA/PyAwLCBjb29yZFExLnkgPz8gMCwgbGluZUN1cnZlLCBlbmRQb3NpdGlvblksIGRpcmVjdGlvblksIG9ic3RhY2xlUmVjdCwgYXZvaWRCbG9ja3NZTGluZSk7XG5cbiAgICBpZiAoZGlyZWN0aW9uWSA9PT0gJ3VuZGVyJyAmJiAoY29vcmRRMS55ID8/IDApID4gZW5kUG9zaXRpb25ZLnkpIHtcbiAgICAgIGF2b2lkQmxvY2tzWUxpbmUgPSBbXTtcbiAgICAgIHN0cmFpZ2h0TGluZS5lbmRQYXRoID0geyB4OiBjb29yZFExLnggPz8gMCwgeTogY29vcmRRMS55ID8/IDAgfTtcbiAgICB9XG4gICAgaWYgKGRpcmVjdGlvblkgPT09ICdhYm92ZScgJiYgc3RyYWlnaHRMaW5lLmVuZFBhdGgueSA8PSBlbmRQb3NpdGlvbi55KSB7XG4gICAgICBhdm9pZEJsb2Nrc1lMaW5lID0gW107XG4gICAgICBzdHJhaWdodExpbmUuZW5kUGF0aCA9IHsgeDogY29vcmRRMS54ID8/IDAsIHk6IGNvb3JkUTEueSA/PyAwIH07XG4gICAgfVxuICAgIGlmIChNYXRoLmFicygoc3RyYWlnaHRMaW5lLmVuZFBhdGgueCA/PyAwKSAtIGVuZFBvc2l0aW9uLngpIDwgMTUpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnRzID0gYXZvaWRCbG9ja3NZTGluZS5maWx0ZXIoKGl0ZW0pID0+IGl0ZW0uc3RhcnQueCA9PT0gc3RyYWlnaHRMaW5lLmVuZFBhdGgueCB8fCBpdGVtLmVuZC54ID09PSBzdHJhaWdodExpbmUuZW5kUGF0aC54KTtcblxuICAgICAgZWxlbWVudHMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICBpZiAoaXRlbS5zdGFydC54ID09PSBzdHJhaWdodExpbmUuZW5kUGF0aC54KSB7XG4gICAgICAgICAgaXRlbS5zdGFydC54ICs9IDMwO1xuICAgICAgICB9XG4gICAgICAgIGlmIChpdGVtLmVuZC54ID09PSBzdHJhaWdodExpbmUuZW5kUGF0aC54KSB7XG4gICAgICAgICAgaXRlbS5lbmQueCArPSAzMDtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goLi4uYXZvaWRCbG9ja3NZTGluZSk7XG4gICAgc2VwYXJhdGVkUG9pbnRzLnB1c2goeyBzdGFydDogeyB4OiBzdHJhaWdodExpbmUuZW5kUGF0aC54ID8/IDAsIHk6IHN0cmFpZ2h0TGluZS5lbmRQYXRoLnkgPz8gMCB9LCBlbmQ6IGVuZFBvc2l0aW9uLCBtb2RlOiAndmVydGljYWwtc2luZ2xlLWN1cnZlJywgaWQ6ICc0JyB9KTtcbiAgfVxufVxuIl19