@colijnit/corecomponents_v12 259.1.10 → 259.1.12

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.
@@ -376,9 +376,9 @@ CalendarTemplateComponent.decorators = [
376
376
  </div>
377
377
  </div>
378
378
  <div class="calendar-action-buttons" *ngIf="showButtons">
379
- <span class="set-and-close-button" *ngIf="this.doubleCalendar" (click)="setAndClose()">Instellen</span>
380
- <span class="clear-date-button" *ngIf="this.selectedDate" (click)="clearDate()">Wissen</span>
381
- <span class="cancel-button" (click)="closeDate()">Annuleren</span>
379
+ <span class="set-and-close-button" *ngIf="this.doubleCalendar" (click)="setAndClose()" [textContent]="'SET' | coreLocalize"></span>
380
+ <span class="clear-date-button" *ngIf="this.selectedDate" (click)="clearDate()" [textContent]="'ERASE' | coreLocalize"></span>
381
+ <span class="cancel-button" (click)="closeDate()" [textContent]="'CANCEL' | coreLocalize"></span>
382
382
  </div>
383
383
  </div>
384
384
  `,
@@ -401,4 +401,4 @@ CalendarTemplateComponent.propDecorators = {
401
401
  clearDates: [{ type: Output }],
402
402
  showClass: [{ type: HostBinding, args: ["class.calendar-template",] }]
403
403
  };
404
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLXRlbXBsYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQWlGN0UsTUFBTSxPQUFPLHlCQUF5QjtJQS9FdEM7UUFnRmtCLFVBQUssR0FBOEIsa0JBQWtCLENBQUM7UUFHL0Qsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFaEMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFFM0IsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUd6Qiw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFHM0MsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFHNUIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUEwQ2hDLGlCQUFZLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHNUQsdUJBQWtCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHbEUsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc1RCxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzlELGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUxRCxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFDakMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQU9uQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRXhC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O3FCQUlMLEtBQUs7d0NBR0wsS0FBSzswQkFHTCxLQUFLOzZCQUdMLEtBQUs7MkJBRUwsS0FBSztpQ0FpQkwsS0FBSztpQ0FRTCxLQUFLOzJCQWVMLE1BQU07aUNBR04sTUFBTTsyQkFHTixNQUFNOzZCQUdOLE1BQU07eUJBR04sTUFBTTt3QkFpQ04sV0FBVyxTQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb3JlQ29tcG9uZW50c0ljb259IGZyb20gXCIuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY2FsZW5kYXItdGVtcGxhdGVcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtZGF0ZS1kaXNwbGF5XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWREYXRlXCIgY2xhc3M9XCJzZWxlY3RlZC1kYXRlLXllYXJcIj5cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZERhdGVcIiBjbGFzcz1cInNlbGVjdGVkLWRhdGUtZGF5XCI+XHJcbiAgICAgICAgICAgICAge3sgc2VsZWN0ZWREYXRlIHwgZGF0ZTogJ0VFRSBkIE1NTScgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFzZWxlY3RlZERhdGVcIiBjbGFzcz1cIm5vLWRhdGUtc2VsZWN0ZWRcIiBbdGV4dENvbnRlbnRdPVwiJ1NlbGVjdGVlciBkYXR1bSdcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiICpuZ0lmPVwibW9udGhTZWxlY3Rpb24gfHwgeWVhclNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJjYWxlbmRhci1jaGFuZ2UtbW9udGgtYnV0dG9uXCIgW2ljb25dPVwiaWNvbnMuQXJyb3dQb2ludExlZnRcIiAoY2xpY2spPVwiIW1vbnRoU2VsZWN0aW9uID8gcHJldlllYXIoKSA6IHByZXZNb250aCgpXCI+PC9jby1pY29uPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItdGl0bGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJtb250aFNlbGVjdGlvbiA/IG1vbnRoSGVhZGVyIDogeWVhckhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9udGhTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImNhbGVuZGFyLWNoYW5nZS1tb250aC1idXR0b25cIiBbaWNvbl09XCJpY29ucy5BcnJvd1BvaW50UmlnaHRcIiAoY2xpY2spPVwiIW1vbnRoU2VsZWN0aW9uID8gbmV4dFllYXIoKSA6IG5leHRNb250aCgpXCI+PC9jby1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0aW9uLWdyaWQgbW9udGhcIiAqbmdJZj1cInNob3dNb250aFNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhTZWxlY3Rpb25OYW1lc1wiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItbW9udGgtb3IteWVhclwiXHJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb250aChtb250aClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vbnRoXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoXCIgW3RleHRDb250ZW50XT1cIm1vbnRoXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rpb24tZ3JpZCB5ZWFyXCIgKm5nSWY9XCJzaG93WWVhclNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyU2VsZWN0aW9uWWVhcnNcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLW1vbnRoLW9yLXllYXJcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0WWVhcih5ZWFyKVwiXHJcbiAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJ5ZWFyXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ5ZWFyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInllYXJcIiBbdGV4dENvbnRlbnRdPVwieWVhclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay13cmFwcGVyXCIgKm5nSWY9XCJzaG93V2Vla051bWJlcnMgJiYgc2hvd0NhbGVuZGFyQm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1udW1iZXJcIiBbdGV4dENvbnRlbnRdPVwiJ1cnXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLW51bWJlclwiICpuZ0Zvcj1cImxldCB3ZWVrTnVtYmVyIG9mIHdlZWtOdW1iZXJzXCI+XHJcbiAgICAgICAgICAgICAge3sgd2Vla051bWJlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHlcIiAqbmdJZj1cInNob3dDYWxlbmRhckJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1uYW1lc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrZGF5XCIgKm5nRm9yPVwibGV0IGRheU5hbWUgb2YgZGF5TmFtZXNcIiBbdGV4dENvbnRlbnRdPVwiZGF5TmFtZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNJbk1vbnRoXCIgY2xhc3M9XCJjYWxlbmRhci1kYXlcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5oaWdobGlnaHRlZC1kYXldPVwiZGF5c1RvSGlnaGxpZ2h0LmluY2x1ZGVzKGRheSlcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1kYXldPVwic2VsZWN0ZWREYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gc2VsZWN0ZWREYXRlLmdldFRpbWUoKSkgfHxcclxuICAgICAgICAgICAgc2Vjb25kU2VsZWN0ZWREYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gc2Vjb25kU2VsZWN0ZWREYXRlLmdldFRpbWUoKSkgfHxcclxuICAgICAgICAgICAgdGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gdGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlLmdldFRpbWUoKSlcIlxyXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheSlcIlxyXG4gICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiaGFuZGxlTW91c2VPdmVyRGF5KGRheSlcIj5cclxuICAgICAgICAgICAgICA8IS0tIERheSBudW1iZXIgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRheVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1udW1iZXJcIiBbdGV4dENvbnRlbnRdPVwiZGF5LmdldERhdGUoKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1hY3Rpb24tYnV0dG9uc1wiICpuZ0lmPVwic2hvd0J1dHRvbnNcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2V0LWFuZC1jbG9zZS1idXR0b25cIiAqbmdJZj1cInRoaXMuZG91YmxlQ2FsZW5kYXJcIiAoY2xpY2spPVwic2V0QW5kQ2xvc2UoKVwiPkluc3RlbGxlbjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xlYXItZGF0ZS1idXR0b25cIiAqbmdJZj1cInRoaXMuc2VsZWN0ZWREYXRlXCIgKGNsaWNrKT1cImNsZWFyRGF0ZSgpXCI+V2lzc2VuPC9zcGFuPlxyXG4gICAgICAgICAgPHNwYW4gY2xhc3M9XCJjYW5jZWwtYnV0dG9uXCIgKGNsaWNrKT1cImNsb3NlRGF0ZSgpXCI+QW5udWxlcmVuPC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICBgLFxyXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcclxufSlcclxuZXhwb3J0IGNsYXNzIENhbGVuZGFyVGVtcGxhdGVDb21wb25lbnQge1xyXG4gIHB1YmxpYyByZWFkb25seSBpY29uczogdHlwZW9mIENvcmVDb21wb25lbnRzSWNvbiA9IENvcmVDb21wb25lbnRzSWNvbjtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd1dlZWtOdW1iZXJzOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgcHVibGljIHdlZWtOdW1iZXJzOiBudW1iZXJbXSA9IFtdO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGxvY2FsZTogc3RyaW5nID0gXCJubC1OTFwiO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBoaWdobGlnaHREYXlzQmV0d2VlbkRhdGVzOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dCdXR0b25zOiBib29sZWFuID0gdHJ1ZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZG91YmxlQ2FsZW5kYXI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc2VsZWN0ZWREYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgY29uc3QgZCA9IHRoaXMuX2NvZXJjZVRvRGF0ZSh2YWx1ZSk7XHJcbiAgICB0aGlzLl9zZWxlY3RlZERhdGUgPSBkID8gbmV3IERhdGUoZC5nZXRGdWxsWWVhcigpLCBkLmdldE1vbnRoKCksIGQuZ2V0RGF0ZSgpKSA6IG51bGw7XHJcblxyXG4gICAgaWYgKHRoaXMuX2luaXRpYWxTZWxlY3RlZERhdGUgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5faW5pdGlhbFNlbGVjdGVkRGF0ZSA9IHRoaXMuX3NlbGVjdGVkRGF0ZTtcclxuICAgIH1cclxuXHJcbiAgICBpZiAodGhpcy5zZWNvbmRTZWxlY3RlZERhdGUgJiYgZCAmJiB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgPCB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgJiYgdGhpcy50ZW1wb3JhcnlTZWxlY3RlZFNlY29uZGFyeURhdGUpIHtcclxuICAgICAgdGhpcy5kYXlzVG9IaWdobGlnaHQgPSBbXTtcclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGdldCBzZWxlY3RlZERhdGUoKTogRGF0ZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkRGF0ZTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZWNvbmRTZWxlY3RlZERhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5fY29lcmNlVG9EYXRlKHZhbHVlKTtcclxuICAgIHRoaXMuX3NlY29uZFNlbGVjdGVkRGF0ZSA9IGQgPyBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkpIDogbnVsbDtcclxuICAgIGlmICghdGhpcy5zZWxlY3RlZERhdGUpIHRoaXMuZGF5c1RvSGlnaGxpZ2h0ID0gW107IGVsc2UgdGhpcy5fZmlsbERhdGVzQmV0d2VlblNlbGVjdGVkKCk7XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXQgc2Vjb25kU2VsZWN0ZWREYXRlKCk6IERhdGUgfCBudWxsIHsgcmV0dXJuIHRoaXMuX3NlY29uZFNlbGVjdGVkRGF0ZTsgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgc2Vjb25kSG92ZXJpbmdEYXRlKHZhbHVlOiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCkge1xyXG4gICAgY29uc3QgZCA9IHRoaXMuX2NvZXJjZVRvRGF0ZSh2YWx1ZSk7XHJcbiAgICB0aGlzLl9zZWNvbmRIb3ZlcmluZ0RhdGUgPSBkIHx8IG51bGw7XHJcbiAgICBpZiAoZCkgdGhpcy50ZW1wb3JhcnlTZWxlY3RlZFNlY29uZGFyeURhdGUgPSBudWxsO1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlICYmICF0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSAmJiBkKSB0aGlzLnRlbXBvcmFyeVNlbGVjdGVkU2Vjb25kYXJ5RGF0ZSA9IG5ldyBEYXRlKGQpO1xyXG4gICAgdGhpcy5oYW5kbGVNb3VzZU92ZXJEYXkoZCBhcyBEYXRlKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NvZXJjZVRvRGF0ZSh2OiBEYXRlIHwgc3RyaW5nIHwgbnVtYmVyIHwgbnVsbCB8IHVuZGVmaW5lZCk6IERhdGUgfCBudWxsIHtcclxuICAgIGlmICh2ID09IG51bGwpIHJldHVybiBudWxsO1xyXG4gICAgY29uc3QgZCA9IHYgaW5zdGFuY2VvZiBEYXRlID8gdiA6IG5ldyBEYXRlKHYpO1xyXG4gICAgcmV0dXJuIGlzTmFOKGQuZ2V0VGltZSgpKSA/IG51bGwgOiBkO1xyXG4gIH1cclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGRhdGVTZWxlY3RlZDogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2Vjb25kRGF0ZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBob3ZlcmluZ0RhdGU6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsaWNrZWRPdXRzaWRlOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBjbGVhckRhdGVzOiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIHB1YmxpYyBzaG93Q2FsZW5kYXJCb2R5OiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgc2hvd01vbnRoU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dZZWFyU2VsZWN0aW9uOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHVibGljIHNob3dTZWxlY3RlZE1vbnRoOiBzdHJpbmc7XHJcblxyXG4gIHB1YmxpYyB3b3JraW5nRGF5OiBEYXRlO1xyXG4gIHB1YmxpYyB3b3JraW5nWWVhcjogbnVtYmVyO1xyXG4gIHB1YmxpYyB3b3JraW5nTW9udGg6IG51bWJlcjtcclxuXHJcbiAgcHVibGljIG1vbnRoSGVhZGVyOiBzdHJpbmcgPSAnJztcclxuICBwdWJsaWMgeWVhckhlYWRlcjogc3RyaW5nID0gJyc7XHJcblxyXG4gIHB1YmxpYyBtb250aFNlbGVjdGlvbjogYm9vbGVhbiA9IHRydWU7XHJcbiAgcHVibGljIHllYXJTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgcHVibGljIGRheU5hbWVzID0gW107XHJcbiAgcHVibGljIG1vbnRoTmFtZXMgPSBbXTtcclxuICBwdWJsaWMgbW9udGhTZWxlY3Rpb25OYW1lczogc3RyaW5nW10gPSBbXTtcclxuICBwdWJsaWMgeWVhclNlbGVjdGlvblllYXJzOiBudW1iZXJbXSA9IFtdO1xyXG4gIHB1YmxpYyBkYXlzSW5Nb250aDogRGF0ZVtdID0gW107XHJcblxyXG4gIHB1YmxpYyBkYXlzVW5peFRpbWVzdGFtcHM6IG51bWJlcltdID0gW107XHJcbiAgcHVibGljIGRheXNUb0hpZ2hsaWdodDogRGF0ZVtdID0gW107XHJcbiAgcHVibGljIHRlbXBvcmFyeVNlbGVjdGVkU2Vjb25kYXJ5RGF0ZTogRGF0ZTtcclxuXHJcbiAgcHJpdmF0ZSBfc2Vjb25kSG92ZXJpbmdEYXRlOiBEYXRlO1xyXG4gIHByaXZhdGUgX3NlY29uZFNlbGVjdGVkRGF0ZTogRGF0ZTtcclxuICBwcml2YXRlIF9zZWxlY3RlZERhdGU6IERhdGU7XHJcbiAgcHJpdmF0ZSBfaW5pdGlhbFNlbGVjdGVkRGF0ZTogRGF0ZSB8IG51bGwgPSBudWxsO1xyXG5cclxuICBASG9zdEJpbmRpbmcoXCJjbGFzcy5jYWxlbmRhci10ZW1wbGF0ZVwiKVxyXG4gIHB1YmxpYyBzaG93Q2xhc3MoKSB7XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldEluaXRpYWxWYWx1ZXMoKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVNb250aE5hbWVzKCk7XHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcclxuICAgIHRoaXMuX2ZpbGxEYXRlc0JldHdlZW5TZWxlY3RlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHByZXZNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndvcmtpbmdNb250aCA9PT0gMCkge1xyXG4gICAgICB0aGlzLndvcmtpbmdNb250aCA9IDExO1xyXG4gICAgICB0aGlzLndvcmtpbmdZZWFyLS07XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLndvcmtpbmdNb250aC0tO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XHJcbiAgICB0aGlzLl9maWxsRGF0ZXNCZXR3ZWVuU2VsZWN0ZWQoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlV2Vla051bWJlcnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXh0TW9udGgoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy53b3JraW5nTW9udGggPT09IDExKSB7XHJcbiAgICAgIHRoaXMud29ya2luZ01vbnRoID0gMDtcclxuICAgICAgdGhpcy53b3JraW5nWWVhcisrO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy53b3JraW5nTW9udGgrKztcclxuICAgIH1cclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gICAgdGhpcy5fZmlsbERhdGVzQmV0d2VlblNlbGVjdGVkKCk7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZVdlZWtOdW1iZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldlllYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLndvcmtpbmdZZWFyLS07XHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBuZXh0WWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMud29ya2luZ1llYXIrKztcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlQ2FsZW5kYXIoKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXRNb250aERheXNGb3JEYXRlKHRoaXMud29ya2luZ01vbnRoKTtcclxuXHJcbiAgICAvLyBVcGRhdGUgdGhlIGRpc3BsYXllZCBtb250aFxyXG4gICAgY29uc3QgbW9udGggPSB0aGlzLm1vbnRoTmFtZXNbdGhpcy53b3JraW5nTW9udGhdO1xyXG4gICAgY29uc3QgeWVhciA9IHRoaXMud29ya2luZ1llYXI7XHJcblxyXG4gICAgLy8gVXBkYXRlIGhlYWRlclRleHRcclxuICAgIHRoaXMubW9udGhIZWFkZXIgPSBgJHttb250aH0gJHt5ZWFyfWA7XHJcbiAgICB0aGlzLnllYXJIZWFkZXIgPSBgJHt5ZWFyfWA7XHJcblxyXG4gICAgdGhpcy5nZW5lcmF0ZVllYXJTZWxlY3Rpb25ZZWFycygpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVXZWVrTnVtYmVycygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0SW5pdGlhbFZhbHVlcygpOiB2b2lkIHtcclxuICAgIHRoaXMud29ya2luZ0RheSA9IHRoaXMuc2VsZWN0ZWREYXRlID8gdGhpcy5zZWxlY3RlZERhdGUgOiBuZXcgRGF0ZSgpO1xyXG4gICAgdGhpcy53b3JraW5nWWVhciA9IHRoaXMud29ya2luZ0RheS5nZXRGdWxsWWVhcigpO1xyXG4gICAgdGhpcy53b3JraW5nTW9udGggPSB0aGlzLndvcmtpbmdEYXkuZ2V0TW9udGgoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldE1vbnRoRGF5c0ZvckRhdGUobW9udGhOdW1iZXI6IG51bWJlcik6IHZvaWQge1xyXG4gICAgdGhpcy5kYXlzSW5Nb250aCA9IFtdO1xyXG5cclxuICAgIGNvbnN0IGZpcnN0RGF5T2ZNb250aCA9IG5ldyBEYXRlKHRoaXMud29ya2luZ1llYXIsIG1vbnRoTnVtYmVyLCAwKS5nZXREYXkoKTtcclxuICAgIGNvbnN0IGxhc3REYXlPZk1vbnRoID0gbmV3IERhdGUodGhpcy53b3JraW5nWWVhciwgbW9udGhOdW1iZXIgKyAxLCAwKS5nZXREYXRlKCk7XHJcblxyXG4gICAgLy8gQWRkIG51bGwgdmFsdWVzIHRvIHRoZSBiZWdpbm5pbmcgb2YgdGhlIGFycmF5IHRvIGFsaWduIHRoZSBmaXJzdCBkYXkgd2l0aCB0aGUgY29ycmVjdCBkYXkgb2YgdGhlIHdlZWtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZmlyc3REYXlPZk1vbnRoOyBpKyspIHtcclxuICAgICAgdGhpcy5kYXlzSW5Nb250aC5wdXNoKG51bGwpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkZCB0aGUgZGF5cyBvZiB0aGUgY3VycmVudCBtb250aCB0byB0aGUgYXJyYXlcclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IGxhc3REYXlPZk1vbnRoOyBpKyspIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKHRoaXMud29ya2luZ1llYXIsIHRoaXMud29ya2luZ01vbnRoLCBpKTtcclxuICAgICAgdGhpcy5kYXlzSW5Nb250aC5wdXNoKGRhdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIEFkZCBudWxsIHZhbHVlcyB0byB0aGUgZW5kIG9mIHRoZSBhcnJheSB0byBmaWxsIG91dCB0aGUgZ3JpZFxyXG4gICAgLy8gY29uc3QgcmVtYWluaW5nQ2VsbHMgPSA0MiAtIHRoaXMuZGF5c0luTW9udGgubGVuZ3RoO1xyXG4gICAgLy8gZm9yIChsZXQgaSA9IDA7IGkgPCByZW1haW5pbmdDZWxsczsgaSsrKSB7XHJcbiAgICAvLyAgIHRoaXMuZGF5c0luTW9udGgucHVzaChudWxsKTtcclxuICAgIC8vIH1cclxuXHJcbiAgICB0aGlzLmRheXNVbml4VGltZXN0YW1wcyA9IHRoaXMuZGF5c0luTW9udGgubWFwKGRheSA9PiB7IHJldHVybiBkYXkgPyBkYXkuZ2V0VGltZSgpIDogdW5kZWZpbmVkIH0pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlWWVhclNlbGVjdGlvblllYXJzKCk6IHZvaWQge1xyXG4gICAgY29uc3QgcGFzdFllYXJzID0gNTtcclxuICAgIGNvbnN0IGZ1dHVyZVllYXJzID0gMztcclxuICAgIGNvbnN0IHllYXJzID0gW107XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IHBhc3RZZWFyczsgaSA+PSAxOyBpLS0pIHtcclxuXHJcbiAgICAgIHllYXJzLnB1c2godGhpcy53b3JraW5nWWVhciAtIGkpO1xyXG4gICAgfVxyXG5cclxuICAgIHllYXJzLnB1c2godGhpcy53b3JraW5nWWVhcik7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gZnV0dXJlWWVhcnM7IGkrKykge1xyXG4gICAgICB5ZWFycy5wdXNoKHRoaXMud29ya2luZ1llYXIgKyBpKTtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnllYXJTZWxlY3Rpb25ZZWFycyA9IHllYXJzLnJldmVyc2UoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvcGVuTW9udGhTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhckJvZHkgPSAhdGhpcy5zaG93Q2FsZW5kYXJCb2R5O1xyXG4gICAgdGhpcy5tb250aFNlbGVjdGlvbiA9ICF0aGlzLm1vbnRoU2VsZWN0aW9uO1xyXG4gICAgdGhpcy55ZWFyU2VsZWN0aW9uID0gIXRoaXMueWVhclNlbGVjdGlvbjtcclxuICAgIHRoaXMuc2hvd01vbnRoU2VsZWN0aW9uID0gIXRoaXMuc2hvd01vbnRoU2VsZWN0aW9uO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5ZZWFyU2VsZWN0aW9uKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaG93TW9udGhTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd1llYXJTZWxlY3Rpb24gPSB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdERhdGUoZGF5OiBEYXRlKTogdm9pZCB7XHJcbiAgICBpZiAoZGF5KSB7XHJcbiAgICAgIGlmICghdGhpcy5kb3VibGVDYWxlbmRhcikge1xyXG4gICAgICAgIC8vIFNpbmdsZSBjYWxlbmRhciDihpIgc2VsZWN0IGFuZCBjbG9zZVxyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF5O1xyXG4gICAgICAgIHRoaXMuc2V0QW5kQ2xvc2UoKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IGRheTtcclxuICAgICAgICB0aGlzLl9maWxsRGF0ZXNCZXR3ZWVuU2VsZWN0ZWQoKTtcclxuICAgICAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KG5ldyBEYXRlKHRoaXMuc2VsZWN0ZWREYXRlKSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBzZWxlY3RNb250aChtb250aDogc3RyaW5nKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dTZWxlY3RlZE1vbnRoID0gbW9udGg7XHJcbiAgICB0aGlzLndvcmtpbmdNb250aCA9IHRoaXMubW9udGhTZWxlY3Rpb25OYW1lcy5pbmRleE9mKG1vbnRoKTtcclxuICAgIHRoaXMuc2hvd01vbnRoU2VsZWN0aW9uID0gZmFsc2U7XHJcbiAgICB0aGlzLnllYXJTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMubW9udGhTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5zaG93Q2FsZW5kYXJCb2R5ID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdFllYXIoeWVhcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLndvcmtpbmdZZWFyID0geWVhcjtcclxuICAgIHRoaXMuc2hvd1llYXJTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMuc2hvd01vbnRoU2VsZWN0aW9uID0gdHJ1ZTtcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdlbmVyYXRlTW9udGhOYW1lcygpOiB2b2lkIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgMTI7IGkrKykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAwMCwgaSwgMSk7XHJcbiAgICAgIGNvbnN0IG1vbnRoTmFtZVNob3J0ID0gZGF0ZS50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSwge21vbnRoOiAnc2hvcnQnfSk7XHJcbiAgICAgIGNvbnN0IG1vbnRoTmFtZUZ1bGwgPSBkYXRlLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlLCB7bW9udGg6ICdsb25nJ30pO1xyXG4gICAgICB0aGlzLm1vbnRoU2VsZWN0aW9uTmFtZXMucHVzaCh0aGlzLl9jYXBpdGFsaXplRmlyc3RMZXR0ZXIobW9udGhOYW1lU2hvcnQpKTtcclxuICAgICAgdGhpcy5tb250aE5hbWVzLnB1c2godGhpcy5fY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKG1vbnRoTmFtZUZ1bGwpKTtcclxuICAgIH1cclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSA3OyBpKyspIHtcclxuICAgICAgY29uc3QgZGF0ZSA9IG5ldyBEYXRlKDIwMTgsIDAsIGkpO1xyXG4gICAgICBjb25zdCB3ZWVrZGF5TmFtZSA9IGRhdGUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHsgd2Vla2RheTogJ3Nob3J0JyB9KTtcclxuICAgICAgdGhpcy5kYXlOYW1lcy5wdXNoKHRoaXMuX2NhcGl0YWxpemVGaXJzdExldHRlcih3ZWVrZGF5TmFtZS5jaGFyQXQoMCkpKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVNb3VzZU92ZXJEYXkoZGF5OiBEYXRlKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5oaWdobGlnaHREYXlzQmV0d2VlbkRhdGVzICYmIGRheSAmJiAodGhpcy5zZWxlY3RlZERhdGUgfHwgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUpICYmICEodGhpcy5zZWxlY3RlZERhdGUgJiYgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUpICYmICEodGhpcy5zZWxlY3RlZERhdGUgJiYgIXRoaXMudGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlICYmICF0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSkpIHtcclxuICAgICAgdGhpcy5kYXlzVG9IaWdobGlnaHQgPSBbXTtcclxuICAgICAgaWYgKHRoaXMuZGF5c1VuaXhUaW1lc3RhbXBzLmluY2x1ZGVzKGRheS5nZXRUaW1lKCkpKSB7XHJcbiAgICAgICAgdGhpcy5kYXlzVG9IaWdobGlnaHQucHVzaCguLi50aGlzLmRheXNJbk1vbnRoLm1hcCgoZGF5SW5Nb250aDogRGF0ZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXlJbk1vbnRoICYmXHJcbiAgICAgICAgICAgICAgLy8gZGF5IGluIHRoZSBtb250aCBpcyBhZnRlciBzZWxlY3RlZCBkYXRlIGFuZCBkYXkgaW4gdGhlIG1vbnRoIGlzIGJlZm9yZSB0aGUgaG92ZXJpbmcgZGF5XHJcbiAgICAgICAgICAgICAgKGRheUluTW9udGguZ2V0VGltZSgpID4gdGhpcy5zZWxlY3RlZERhdGUuZ2V0VGltZSgpICYmIGRheUluTW9udGguZ2V0VGltZSgpIDwgZGF5LmdldFRpbWUoKSkgfHxcclxuICAgICAgICAgICAgICAvLyBzZWNvbmQgZGF0ZSBpcyBhZnRlciBzZWxlY3RlZCBkYXRlIGFuZCBkYXkgaW4gdGhlIG1vbnRoIGlzIGJlZm9yZSBob3ZlcmluZyBkYXkgYW5kIGRheSBpbiBtb250aCBpcyBhZnRlciBzZWxlY3RlZCBkYXRlXHJcbiAgICAgICAgICAgICAgKHRoaXMuX3NlY29uZEhvdmVyaW5nRGF0ZSAmJiB0aGlzLl9zZWNvbmRIb3ZlcmluZ0RhdGUuZ2V0VGltZSgpID4gdGhpcy5zZWxlY3RlZERhdGUuZ2V0VGltZSgpICYmIGRheSAmJiBkYXlJbk1vbnRoICYmIGRheUluTW9udGguZ2V0VGltZSgpIDwgZGF5LmdldFRpbWUoKSAmJiBkYXlJbk1vbnRoLmdldFRpbWUoKSA+IHRoaXMuc2VsZWN0ZWREYXRlLmdldFRpbWUoKSkpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZGF5SW5Nb250aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGRheUluTW9udGggJiZcclxuICAgICAgICAgICAgICAvLyBkYXkgaW4gdGhlIG1vbnRoIGlzIGFmdGVyIHNlY29uZCBkYXRlIGFuZCBkYXkgaW4gdGhlIG1vbnRoIGlzIGJlZm9yZSB0aGUgaG92ZXJpbmcgZGF5XHJcbiAgICAgICAgICAgICAgKGRheUluTW9udGguZ2V0VGltZSgpID4gdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUuZ2V0VGltZSgpICYmIGRheUluTW9udGguZ2V0VGltZSgpIDwgZGF5LmdldFRpbWUoKSkpIHtcclxuICAgICAgICAgICAgICByZXR1cm4gZGF5SW5Nb250aDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLmRheXNUb0hpZ2hsaWdodC5wdXNoKC4uLnRoaXMuZGF5c0luTW9udGgubWFwKChkYXkpID0+IHtcclxuICAgICAgICAgIGlmIChkYXkgPiB0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICAgICAgICByZXR1cm4gZGF5O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgdGhpcy5ob3ZlcmluZ0RhdGUubmV4dChkYXkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfZmlsbERhdGVzQmV0d2VlblNlbGVjdGVkKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlICYmIHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuZGF5c1RvSGlnaGxpZ2h0ID0gW107XHJcbiAgICAgIHRoaXMuZGF5c1RvSGlnaGxpZ2h0LnB1c2goLi4udGhpcy5kYXlzSW5Nb250aC5tYXAoKGRheUluTW9udGg6IERhdGUpID0+IHtcclxuICAgICAgICBpZiAoZGF5SW5Nb250aCAmJiAoZGF5SW5Nb250aCA+IHRoaXMuc2VsZWN0ZWREYXRlICYmIGRheUluTW9udGggPCB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSkgfHwgKGRheUluTW9udGggPiB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSAmJiBkYXlJbk1vbnRoIDwgdGhpcy5zZWxlY3RlZERhdGUpKSB7XHJcbiAgICAgICAgICByZXR1cm4gZGF5SW5Nb250aDtcclxuICAgICAgICB9XHJcbiAgICAgIH0pKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX2NhcGl0YWxpemVGaXJzdExldHRlcih2YWx1ZTogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiB2YWx1ZS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSArIHZhbHVlLnNsaWNlKDEpO1xyXG4gIH1cclxuICBwcml2YXRlIGNhbGN1bGF0ZVdlZWtOdW1iZXJzKCk6IHZvaWQge1xyXG4gICAgdGhpcy53ZWVrTnVtYmVycyA9IFtdO1xyXG4gICAgbGV0IHdlZWtOdW1iZXI6IG51bWJlciB8IG51bGwgPSBudWxsO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmRheXNJbk1vbnRoLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGRheSA9IHRoaXMuZGF5c0luTW9udGhbaV07XHJcbiAgICAgIGlmIChkYXkpIHtcclxuICAgICAgICAgIC8vIFN0YXJ0IG9mIGEgbmV3IHdlZWsgb3IgZmlyc3QgZGF5IG9mIHRoZSBtb250aCwgY2FsY3VsYXRlIGFuZCBzZXQgd2Vla051bWJlclxyXG4gICAgICAgICAgd2Vla051bWJlciA9IHRoaXMuZ2V0SVNPV2VlayhkYXkpO1xyXG4gICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHdlZWtOdW1iZXIgaXMgbm90IGFscmVhZHkgaW4gdGhlIGFycmF5XHJcbiAgICAgICAgICBpZiAoIXRoaXMud2Vla051bWJlcnMuaW5jbHVkZXMod2Vla051bWJlcikpIHtcclxuICAgICAgICAgICAgdGhpcy53ZWVrTnVtYmVycy5wdXNoKHdlZWtOdW1iZXIpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHB1YmxpYyBnZXRJU09XZWVrKGRhdGU6IERhdGUpOiBudW1iZXIge1xyXG4gICAgICBjb25zdCBkID0gbmV3IERhdGUoRGF0ZS5VVEMoZGF0ZS5nZXRGdWxsWWVhcigpLCBkYXRlLmdldE1vbnRoKCksIGRhdGUuZ2V0RGF0ZSgpKSk7XHJcbiAgICAgIGQuc2V0VVRDRGF0ZShkLmdldFVUQ0RhdGUoKSArIDQgLSAoZC5nZXRVVENEYXkoKSB8fCA3KSk7XHJcbiAgICAgIGNvbnN0IHllYXJTdGFydCA9IG5ldyBEYXRlKERhdGUuVVRDKGQuZ2V0VVRDRnVsbFllYXIoKSwgMCwgMSkpO1xyXG4gICAgICBjb25zdCB3ZWVrTnVtYmVyID0gTWF0aC5jZWlsKCgoZC52YWx1ZU9mKCkgLSB5ZWFyU3RhcnQudmFsdWVPZigpKSAvIDg2NDAwMDAwICsgMSkgLyA3KTtcclxuICAgICAgcmV0dXJuIHdlZWtOdW1iZXI7XHJcbiAgfVxyXG4gIHB1YmxpYyBzZXRBbmRDbG9zZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLmRhdGVTZWxlY3RlZC5lbWl0KHRoaXMuc2VsZWN0ZWREYXRlKTtcclxuICAgICAgdGhpcy5zZWNvbmREYXRlU2VsZWN0ZWQuZW1pdCh0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSk7Ly8gRW1pdCB0aGUgc2VsZWN0ZWQgZGF0ZVxyXG4gICAgICB0aGlzLmNsb3NlUG9wdXAoKTsgLy8gVHJpZ2dlciBwb3B1cCBjbG9zZVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsZWFyRGF0ZSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQobnVsbCk7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5zZWNvbmRTZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUgPSBudWxsO1xyXG4gICAgICB0aGlzLnNlY29uZERhdGVTZWxlY3RlZC5lbWl0KG51bGwpO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jbGVhckRhdGVzLmVtaXQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjbG9zZURhdGUoKTogdm9pZCB7XHJcbiAgICB0aGlzLnNlbGVjdGVkRGF0ZSA9IHRoaXMuX2luaXRpYWxTZWxlY3RlZERhdGU7XHJcbiAgICB0aGlzLmNsb3NlUG9wdXAoKTsgLy8gVHJpZ2dlciBwb3B1cCBjbG9zZSB3aXRob3V0IG1ha2luZyBjaGFuZ2VzXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGNsb3NlUG9wdXAoKTogdm9pZCB7XHJcbiAgICB0aGlzLmNsaWNrZWRPdXRzaWRlLmVtaXQoKTsgLy8gRW1pdCB0aGUgYGNsaWNrZWRPdXRzaWRlYCBldmVudCB0byBub3RpZnkgdGhlIHBhcmVudFxyXG4gIH1cclxuXHJcblxyXG59XHJcbiJdfQ==
404
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FsZW5kYXItdGVtcGxhdGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29yZWNvbXBvbmVudHMvc3JjL2xpYi9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyLXRlbXBsYXRlLmNvbXBvbmVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsU0FBUyxFQUFjLFlBQVksRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBQyxNQUFNLGVBQWUsQ0FBQztBQUNqSCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwyQ0FBMkMsQ0FBQztBQWlGN0UsTUFBTSxPQUFPLHlCQUF5QjtJQS9FdEM7UUFnRmtCLFVBQUssR0FBOEIsa0JBQWtCLENBQUM7UUFHL0Qsb0JBQWUsR0FBWSxJQUFJLENBQUM7UUFFaEMsZ0JBQVcsR0FBYSxFQUFFLENBQUM7UUFFM0IsV0FBTSxHQUFXLE9BQU8sQ0FBQztRQUd6Qiw4QkFBeUIsR0FBWSxLQUFLLENBQUM7UUFHM0MsZ0JBQVcsR0FBWSxJQUFJLENBQUM7UUFHNUIsbUJBQWMsR0FBWSxLQUFLLENBQUM7UUEwQ2hDLGlCQUFZLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHNUQsdUJBQWtCLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHbEUsaUJBQVksR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUc1RCxtQkFBYyxHQUF1QixJQUFJLFlBQVksRUFBUSxDQUFDO1FBRzlELGVBQVUsR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUUxRCxxQkFBZ0IsR0FBWSxJQUFJLENBQUM7UUFDakMsdUJBQWtCLEdBQVksS0FBSyxDQUFDO1FBQ3BDLHNCQUFpQixHQUFZLEtBQUssQ0FBQztRQU9uQyxnQkFBVyxHQUFXLEVBQUUsQ0FBQztRQUN6QixlQUFVLEdBQVcsRUFBRSxDQUFDO1FBRXhCLG1CQUFjLEdBQVksSUFBSSxDQUFDO1FBQy9CLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBRS9CLGFBQVEsR0FBRyxFQUFFLENBQUM7UUFDZCxlQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLHdCQUFtQixHQUFhLEVBQUUsQ0FBQztRQUNuQyx1QkFBa0IsR0FBYSxFQUFFLENBQUM7UUFDbEMsZ0JBQVcsR0FBVyxFQUFFLENBQUM7UUFFekIsdUJBQWtCLEdBQWEsRUFBRSxDQUFDO1FBQ2xDLG9CQUFlLEdBQVcsRUFBRSxDQUFDO1FBTTVCLHlCQUFvQixHQUFnQixJQUFJLENBQUM7SUErUW5ELENBQUM7SUFsV0MsSUFDVyxZQUFZLENBQUMsS0FBZ0Q7UUFDdEUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsYUFBYSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFLENBQUMsQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1FBRXJGLElBQUksSUFBSSxDQUFDLG9CQUFvQixLQUFLLElBQUksRUFBRTtZQUN0QyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQztTQUNoRDtRQUVELElBQUksSUFBSSxDQUFDLGtCQUFrQixJQUFJLENBQUMsSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLEVBQUUsSUFBSSxJQUFJLENBQUMsOEJBQThCLEVBQUU7WUFDMUksSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7U0FDM0I7SUFDSCxDQUFDO0lBQ0QsSUFBVyxZQUFZO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFDVyxrQkFBa0IsQ0FBQyxLQUFnRDtRQUM1RSxNQUFNLENBQUMsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzRixJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVk7WUFBRSxJQUFJLENBQUMsZUFBZSxHQUFHLEVBQUUsQ0FBQzs7WUFBTSxJQUFJLENBQUMseUJBQXlCLEVBQUUsQ0FBQztJQUMzRixDQUFDO0lBQ0QsSUFBVyxrQkFBa0IsS0FBa0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBRWpGLElBQ1csa0JBQWtCLENBQUMsS0FBZ0Q7UUFDNUUsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwQyxJQUFJLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztRQUNyQyxJQUFJLENBQUM7WUFBRSxJQUFJLENBQUMsOEJBQThCLEdBQUcsSUFBSSxDQUFDO1FBQ2xELElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsSUFBSSxDQUFDO1lBQUUsSUFBSSxDQUFDLDhCQUE4QixHQUFHLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFTLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU8sYUFBYSxDQUFDLENBQTRDO1FBQ2hFLElBQUksQ0FBQyxJQUFJLElBQUk7WUFBRSxPQUFPLElBQUksQ0FBQztRQUMzQixNQUFNLENBQUMsR0FBRyxDQUFDLFlBQVksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzlDLE9BQU8sS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBZ0RNLFNBQVM7UUFDZCxPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFFTSxRQUFRO1FBQ2IsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7UUFDekIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssQ0FBQyxFQUFFO1lBQzNCLElBQUksQ0FBQyxZQUFZLEdBQUcsRUFBRSxDQUFDO1lBQ3ZCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLElBQUksQ0FBQyxZQUFZLEtBQUssRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO1lBQ3RCLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztTQUNwQjthQUFNO1lBQ0wsSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3JCO1FBQ0QsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7UUFDeEIsSUFBSSxDQUFDLHlCQUF5QixFQUFFLENBQUM7UUFDakMsSUFBSSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLFFBQVE7UUFDYixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDbkIsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBRTdDLDZCQUE2QjtRQUM3QixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUNqRCxNQUFNLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1FBRTlCLG9CQUFvQjtRQUNwQixJQUFJLENBQUMsV0FBVyxHQUFHLEdBQUcsS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEdBQUcsR0FBRyxJQUFJLEVBQUUsQ0FBQztRQUU1QixJQUFJLENBQUMsMEJBQTBCLEVBQUUsQ0FBQztRQUNsQyxJQUFJLENBQUMsb0JBQW9CLEVBQUUsQ0FBQztJQUM5QixDQUFDO0lBRU8saUJBQWlCO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNyRSxJQUFJLENBQUMsV0FBVyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsV0FBVyxFQUFFLENBQUM7UUFDakQsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2pELENBQUM7SUFFTyxvQkFBb0IsQ0FBQyxXQUFtQjtRQUM5QyxJQUFJLENBQUMsV0FBVyxHQUFHLEVBQUUsQ0FBQztRQUV0QixNQUFNLGVBQWUsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUM1RSxNQUFNLGNBQWMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLFdBQVcsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFaEYsd0dBQXdHO1FBQ3hHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxlQUFlLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0I7UUFFRCxpREFBaUQ7UUFDakQsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLGNBQWMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN4QyxNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDOUQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDN0I7UUFFRCwrREFBK0Q7UUFDL0QsdURBQXVEO1FBQ3ZELDZDQUE2QztRQUM3QyxpQ0FBaUM7UUFDakMsSUFBSTtRQUVKLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRSxHQUFHLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3BHLENBQUM7SUFFTSwwQkFBMEI7UUFDL0IsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFDO1FBQ3BCLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQztRQUN0QixNQUFNLEtBQUssR0FBRyxFQUFFLENBQUM7UUFFakIsS0FBSyxJQUFJLENBQUMsR0FBRyxTQUFTLEVBQUUsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUVuQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLEdBQUcsQ0FBQyxDQUFDLENBQUM7U0FDbEM7UUFFRCxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztRQUU3QixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksV0FBVyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ3JDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsR0FBRyxDQUFDLENBQUMsQ0FBQztTQUNsQztRQUVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDNUMsQ0FBQztJQUVNLGtCQUFrQjtRQUN2QixJQUFJLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7UUFDL0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxDQUFDLElBQUksQ0FBQyxjQUFjLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDekMsSUFBSSxDQUFDLGtCQUFrQixHQUFHLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDO0lBQ3JELENBQUM7SUFFTSxpQkFBaUI7UUFDdEIsSUFBSSxDQUFDLGtCQUFrQixHQUFHLEtBQUssQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO0lBQ2hDLENBQUM7SUFFTSxVQUFVLENBQUMsR0FBUztRQUN6QixJQUFJLEdBQUcsRUFBRTtZQUNQLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFO2dCQUN4QixxQ0FBcUM7Z0JBQ3JDLElBQUksQ0FBQyxZQUFZLEdBQUcsR0FBRyxDQUFDO2dCQUN4QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDcEI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLFlBQVksR0FBRyxHQUFHLENBQUM7Z0JBQ3hCLElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFDO2dCQUNqQyxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQzthQUNyRDtTQUNGO0lBQ0gsQ0FBQztJQUVNLFdBQVcsQ0FBQyxLQUFhO1FBQzlCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFDL0IsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxrQkFBa0IsR0FBRyxLQUFLLENBQUM7UUFDaEMsSUFBSSxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7UUFDM0IsSUFBSSxDQUFDLGNBQWMsR0FBRyxJQUFJLENBQUM7UUFDM0IsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQztRQUM3QixJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sVUFBVSxDQUFDLElBQVk7UUFDNUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7UUFDeEIsSUFBSSxDQUFDLGlCQUFpQixHQUFHLEtBQUssQ0FBQztRQUMvQixJQUFJLENBQUMsa0JBQWtCLEdBQUcsSUFBSSxDQUFDO1FBQy9CLElBQUksQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSxrQkFBa0I7UUFDdkIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUMzQixNQUFNLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ2xDLE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsQ0FBQyxDQUFDO1lBQzFFLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxDQUFDO1lBQ3hFLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUM7U0FDbEU7UUFFRCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzNCLE1BQU0sSUFBSSxHQUFHLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7WUFDM0UsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ3hFO0lBQ0gsQ0FBQztJQUVNLGtCQUFrQixDQUFDLEdBQVM7UUFDakMsSUFBSSxJQUFJLENBQUMseUJBQXlCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLFlBQVksSUFBSSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsSUFBSSxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFO1lBQzFPLElBQUksQ0FBQyxlQUFlLEdBQUcsRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLGtCQUFrQixDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsRUFBRTtnQkFDbkQsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQWdCLEVBQUUsRUFBRTtvQkFDckUsSUFBSSxJQUFJLENBQUMsWUFBWSxFQUFFO3dCQUNyQixJQUFJLFVBQVU7NEJBQ1osMEZBQTBGOzRCQUMxRixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUM7NEJBQzVGLHlIQUF5SDs0QkFDekgsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLElBQUksSUFBSSxDQUFDLG1CQUFtQixDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLElBQUksR0FBRyxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUU7NEJBQ25OLE9BQU8sVUFBVSxDQUFDO3lCQUNuQjtxQkFDRjt5QkFBTTt3QkFDTCxJQUFJLFVBQVU7NEJBQ1osd0ZBQXdGOzRCQUN4RixDQUFDLFVBQVUsQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLElBQUksVUFBVSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxFQUFFOzRCQUNwRyxPQUFPLFVBQVUsQ0FBQzt5QkFDbkI7cUJBQ0Y7Z0JBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNMO2lCQUFNO2dCQUNMLElBQUksQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRTtvQkFDeEQsSUFBSSxHQUFHLEdBQUcsSUFBSSxDQUFDLFlBQVksRUFBRTt3QkFDM0IsT0FBTyxHQUFHLENBQUM7cUJBQ1o7Z0JBQ0gsQ0FBQyxDQUFDLENBQUMsQ0FBQzthQUNMO1NBQ0Y7UUFDRCxJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBRU8seUJBQXlCO1FBQy9CLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsa0JBQWtCLEVBQUU7WUFDaEQsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUM7WUFDMUIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQWdCLEVBQUUsRUFBRTtnQkFDckUsSUFBSSxVQUFVLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixJQUFJLFVBQVUsR0FBRyxJQUFJLENBQUMsWUFBWSxDQUFDLEVBQUU7b0JBQ3RLLE9BQU8sVUFBVSxDQUFDO2lCQUNuQjtZQUNILENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDTDtJQUNILENBQUM7SUFFTyxzQkFBc0IsQ0FBQyxLQUFhO1FBQzFDLE9BQU8sS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLEVBQUUsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFDTyxvQkFBb0I7UUFDMUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7UUFDdEIsSUFBSSxVQUFVLEdBQWtCLElBQUksQ0FBQztRQUNyQyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLEdBQUcsRUFBRTtnQkFDTCw4RUFBOEU7Z0JBQzlFLFVBQVUsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDO2dCQUNsQyxzREFBc0Q7Z0JBQ3RELElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxVQUFVLENBQUMsRUFBRTtvQkFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7aUJBQ25DO2FBQ0o7U0FDRjtJQUNILENBQUM7SUFDTSxVQUFVLENBQUMsSUFBVTtRQUN4QixNQUFNLENBQUMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQztRQUNsRixDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxVQUFVLEVBQUUsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4RCxNQUFNLFNBQVMsR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUMvRCxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEdBQUcsU0FBUyxDQUFDLE9BQU8sRUFBRSxDQUFDLEdBQUcsUUFBUSxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZGLE9BQU8sVUFBVSxDQUFDO0lBQ3RCLENBQUM7SUFDTSxXQUFXO1FBQ2hCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7WUFDMUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxDQUFBLHlCQUF5QjtZQUMvRSxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyxzQkFBc0I7U0FDMUM7SUFDSCxDQUFDO0lBRU0sU0FBUztRQUNkLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtZQUNyQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztZQUN6QixJQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUM5QjtRQUNELElBQUksSUFBSSxDQUFDLGtCQUFrQixFQUFFO1lBQzNCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLENBQUM7WUFDL0IsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUNwQztRQUNELElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDekIsQ0FBQztJQUVNLFNBQVM7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxvQkFBb0IsQ0FBQztRQUM5QyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQyw2Q0FBNkM7SUFDbEUsQ0FBQztJQUVPLFVBQVU7UUFDaEIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxDQUFDLHVEQUF1RDtJQUNyRixDQUFDOzs7WUFoY0YsU0FBUyxTQUFDO2dCQUNULFFBQVEsRUFBRSxtQkFBbUI7Z0JBQzdCLFFBQVEsRUFBRTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EwRVQ7Z0JBQ0QsYUFBYSxFQUFFLGlCQUFpQixDQUFDLElBQUk7YUFDdEM7Ozs4QkFJRSxLQUFLO3FCQUlMLEtBQUs7d0NBR0wsS0FBSzswQkFHTCxLQUFLOzZCQUdMLEtBQUs7MkJBRUwsS0FBSztpQ0FpQkwsS0FBSztpQ0FRTCxLQUFLOzJCQWVMLE1BQU07aUNBR04sTUFBTTsyQkFHTixNQUFNOzZCQUdOLE1BQU07eUJBR04sTUFBTTt3QkFpQ04sV0FBVyxTQUFDLHlCQUF5QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29tcG9uZW50LCBFbGVtZW50UmVmLCBFdmVudEVtaXR0ZXIsIEhvc3RCaW5kaW5nLCBJbnB1dCwgT3V0cHV0LCBWaWV3RW5jYXBzdWxhdGlvbn0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtDb3JlQ29tcG9uZW50c0ljb259IGZyb20gXCIuLi8uLi9jb3JlL2VudW0vY29yZS1jb21wb25lbnRzLWljb24uZW51bVwiO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6IFwiY2FsZW5kYXItdGVtcGxhdGVcIixcclxuICB0ZW1wbGF0ZTogYFxyXG4gICAgICA8ZGl2IGNsYXNzPVwiY2FsZW5kYXJcIj5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0ZWQtZGF0ZS1kaXNwbGF5XCI+XHJcbiAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwic2VsZWN0ZWREYXRlXCIgY2xhc3M9XCJzZWxlY3RlZC1kYXRlLXllYXJcIj5cclxuICAgICAgICAgICAgICAgIHt7IHNlbGVjdGVkRGF0ZS5nZXRGdWxsWWVhcigpIH19XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJzZWxlY3RlZERhdGVcIiBjbGFzcz1cInNlbGVjdGVkLWRhdGUtZGF5XCI+XHJcbiAgICAgICAgICAgICAge3sgc2VsZWN0ZWREYXRlIHwgZGF0ZTogJ0VFRSBkIE1NTScgfX1cclxuICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8c3BhbiAqbmdJZj1cIiFzZWxlY3RlZERhdGVcIiBjbGFzcz1cIm5vLWRhdGUtc2VsZWN0ZWRcIiBbdGV4dENvbnRlbnRdPVwiJ1NlbGVjdGVlciBkYXR1bSdcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlclwiICpuZ0lmPVwibW9udGhTZWxlY3Rpb24gfHwgeWVhclNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGNvLWljb24gY2xhc3M9XCJjYWxlbmRhci1jaGFuZ2UtbW9udGgtYnV0dG9uXCIgW2ljb25dPVwiaWNvbnMuQXJyb3dQb2ludExlZnRcIiAoY2xpY2spPVwiIW1vbnRoU2VsZWN0aW9uID8gcHJldlllYXIoKSA6IHByZXZNb250aCgpXCI+PC9jby1pY29uPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1oZWFkZXItdGl0bGUtd3JhcHBlclwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhbGVuZGFyLWhlYWRlci10aXRsZVwiIFt0ZXh0Q29udGVudF09XCJtb250aFNlbGVjdGlvbiA/IG1vbnRoSGVhZGVyIDogeWVhckhlYWRlclwiXHJcbiAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvcGVuTW9udGhTZWxlY3Rpb24oKVwiXHJcbiAgICAgICAgICAgID48L3NwYW4+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuXHJcbiAgICAgICAgICA8Y28taWNvbiBjbGFzcz1cImNhbGVuZGFyLWNoYW5nZS1tb250aC1idXR0b25cIiBbaWNvbl09XCJpY29ucy5BcnJvd1BvaW50UmlnaHRcIiAoY2xpY2spPVwiIW1vbnRoU2VsZWN0aW9uID8gbmV4dFllYXIoKSA6IG5leHRNb250aCgpXCI+PC9jby1pY29uPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwic2VsZWN0aW9uLWdyaWQgbW9udGhcIiAqbmdJZj1cInNob3dNb250aFNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgbW9udGggb2YgbW9udGhTZWxlY3Rpb25OYW1lc1wiXHJcbiAgICAgICAgICAgICAgIGNsYXNzPVwiY2FsZW5kYXItbW9udGgtb3IteWVhclwiXHJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3RNb250aChtb250aClcIj5cclxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm1vbnRoXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cIm1vbnRoXCIgW3RleHRDb250ZW50XT1cIm1vbnRoXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9kaXY+XHJcblxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJzZWxlY3Rpb24tZ3JpZCB5ZWFyXCIgKm5nSWY9XCJzaG93WWVhclNlbGVjdGlvblwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgeWVhciBvZiB5ZWFyU2VsZWN0aW9uWWVhcnNcIlxyXG4gICAgICAgICAgICAgICBjbGFzcz1cImNhbGVuZGFyLW1vbnRoLW9yLXllYXJcIlxyXG4gICAgICAgICAgICAgICAoY2xpY2spPVwic2VsZWN0WWVhcih5ZWFyKVwiXHJcbiAgICAgICAgICAgICAgIFt0ZXh0Q29udGVudF09XCJ5ZWFyXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ5ZWFyXCI+XHJcbiAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cInllYXJcIiBbdGV4dENvbnRlbnRdPVwieWVhclwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci13cmFwcGVyXCI+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay13cmFwcGVyXCIgKm5nSWY9XCJzaG93V2Vla051bWJlcnMgJiYgc2hvd0NhbGVuZGFyQm9keVwiPlxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwid2Vlay1udW1iZXJcIiBbdGV4dENvbnRlbnRdPVwiJ1cnXCI+PC9kaXY+XHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrLW51bWJlclwiICpuZ0Zvcj1cImxldCB3ZWVrTnVtYmVyIG9mIHdlZWtOdW1iZXJzXCI+XHJcbiAgICAgICAgICAgICAge3sgd2Vla051bWJlciB9fVxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImNhbGVuZGFyLWJvZHlcIiAqbmdJZj1cInNob3dDYWxlbmRhckJvZHlcIj5cclxuICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1uYW1lc1wiPlxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ3ZWVrZGF5XCIgKm5nRm9yPVwibGV0IGRheU5hbWUgb2YgZGF5TmFtZXNcIiBbdGV4dENvbnRlbnRdPVwiZGF5TmFtZVwiPjwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiAqbmdGb3I9XCJsZXQgZGF5IG9mIGRheXNJbk1vbnRoXCIgY2xhc3M9XCJjYWxlbmRhci1kYXlcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5oaWdobGlnaHRlZC1kYXldPVwiZGF5c1RvSGlnaGxpZ2h0LmluY2x1ZGVzKGRheSlcIlxyXG4gICAgICAgICAgICAgICAgIFtjbGFzcy5zZWxlY3RlZC1kYXldPVwic2VsZWN0ZWREYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gc2VsZWN0ZWREYXRlLmdldFRpbWUoKSkgfHxcclxuICAgICAgICAgICAgc2Vjb25kU2VsZWN0ZWREYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gc2Vjb25kU2VsZWN0ZWREYXRlLmdldFRpbWUoKSkgfHxcclxuICAgICAgICAgICAgdGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlICYmIChkYXkgJiYgZGF5LmdldFRpbWUoKSA9PT0gdGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlLmdldFRpbWUoKSlcIlxyXG4gICAgICAgICAgICAgICAgIChjbGljayk9XCJzZWxlY3REYXRlKGRheSlcIlxyXG4gICAgICAgICAgICAgICAgIChtb3VzZW92ZXIpPVwiaGFuZGxlTW91c2VPdmVyRGF5KGRheSlcIj5cclxuICAgICAgICAgICAgICA8IS0tIERheSBudW1iZXIgLS0+XHJcbiAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImRheVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzcz1cImRheS1udW1iZXJcIiBbdGV4dENvbnRlbnRdPVwiZGF5LmdldERhdGUoKVwiPjwvZGl2PlxyXG4gICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjYWxlbmRhci1hY3Rpb24tYnV0dG9uc1wiICpuZ0lmPVwic2hvd0J1dHRvbnNcIj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwic2V0LWFuZC1jbG9zZS1idXR0b25cIiAqbmdJZj1cInRoaXMuZG91YmxlQ2FsZW5kYXJcIiAoY2xpY2spPVwic2V0QW5kQ2xvc2UoKVwiIFt0ZXh0Q29udGVudF09XCInU0VUJyB8IGNvcmVMb2NhbGl6ZVwiPjwvc3Bhbj5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwiY2xlYXItZGF0ZS1idXR0b25cIiAqbmdJZj1cInRoaXMuc2VsZWN0ZWREYXRlXCIgKGNsaWNrKT1cImNsZWFyRGF0ZSgpXCIgW3RleHRDb250ZW50XT1cIidFUkFTRScgfCBjb3JlTG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgICA8c3BhbiBjbGFzcz1cImNhbmNlbC1idXR0b25cIiAoY2xpY2spPVwiY2xvc2VEYXRlKClcIiBbdGV4dENvbnRlbnRdPVwiJ0NBTkNFTCcgfCBjb3JlTG9jYWxpemVcIj48L3NwYW4+XHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgIDwvZGl2PlxyXG4gIGAsXHJcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2FsZW5kYXJUZW1wbGF0ZUNvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IGljb25zOiB0eXBlb2YgQ29yZUNvbXBvbmVudHNJY29uID0gQ29yZUNvbXBvbmVudHNJY29uO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzaG93V2Vla051bWJlcnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBwdWJsaWMgd2Vla051bWJlcnM6IG51bWJlcltdID0gW107XHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgbG9jYWxlOiBzdHJpbmcgPSBcIm5sLU5MXCI7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGhpZ2hsaWdodERheXNCZXR3ZWVuRGF0ZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2hvd0J1dHRvbnM6IGJvb2xlYW4gPSB0cnVlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBkb3VibGVDYWxlbmRhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZWxlY3RlZERhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5fY29lcmNlVG9EYXRlKHZhbHVlKTtcclxuICAgIHRoaXMuX3NlbGVjdGVkRGF0ZSA9IGQgPyBuZXcgRGF0ZShkLmdldEZ1bGxZZWFyKCksIGQuZ2V0TW9udGgoKSwgZC5nZXREYXRlKCkpIDogbnVsbDtcclxuXHJcbiAgICBpZiAodGhpcy5faW5pdGlhbFNlbGVjdGVkRGF0ZSA9PT0gbnVsbCkge1xyXG4gICAgICB0aGlzLl9pbml0aWFsU2VsZWN0ZWREYXRlID0gdGhpcy5fc2VsZWN0ZWREYXRlO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSAmJiBkICYmIHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlLmdldFRpbWUoKSA8IHRoaXMuc2VsZWN0ZWREYXRlLmdldFRpbWUoKSAmJiB0aGlzLnRlbXBvcmFyeVNlbGVjdGVkU2Vjb25kYXJ5RGF0ZSkge1xyXG4gICAgICB0aGlzLmRheXNUb0hpZ2hsaWdodCA9IFtdO1xyXG4gICAgfVxyXG4gIH1cclxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkRGF0ZSgpOiBEYXRlIHwgbnVsbCB7XHJcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWREYXRlO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgc2V0IHNlY29uZFNlbGVjdGVkRGF0ZSh2YWx1ZTogRGF0ZSB8IHN0cmluZyB8IG51bWJlciB8IG51bGwgfCB1bmRlZmluZWQpIHtcclxuICAgIGNvbnN0IGQgPSB0aGlzLl9jb2VyY2VUb0RhdGUodmFsdWUpO1xyXG4gICAgdGhpcy5fc2Vjb25kU2VsZWN0ZWREYXRlID0gZCA/IG5ldyBEYXRlKGQuZ2V0RnVsbFllYXIoKSwgZC5nZXRNb250aCgpLCBkLmdldERhdGUoKSkgOiBudWxsO1xyXG4gICAgaWYgKCF0aGlzLnNlbGVjdGVkRGF0ZSkgdGhpcy5kYXlzVG9IaWdobGlnaHQgPSBbXTsgZWxzZSB0aGlzLl9maWxsRGF0ZXNCZXR3ZWVuU2VsZWN0ZWQoKTtcclxuICB9XHJcbiAgcHVibGljIGdldCBzZWNvbmRTZWxlY3RlZERhdGUoKTogRGF0ZSB8IG51bGwgeyByZXR1cm4gdGhpcy5fc2Vjb25kU2VsZWN0ZWREYXRlOyB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBzZWNvbmRIb3ZlcmluZ0RhdGUodmFsdWU6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKSB7XHJcbiAgICBjb25zdCBkID0gdGhpcy5fY29lcmNlVG9EYXRlKHZhbHVlKTtcclxuICAgIHRoaXMuX3NlY29uZEhvdmVyaW5nRGF0ZSA9IGQgfHwgbnVsbDtcclxuICAgIGlmIChkKSB0aGlzLnRlbXBvcmFyeVNlbGVjdGVkU2Vjb25kYXJ5RGF0ZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUgJiYgIXRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlICYmIGQpIHRoaXMudGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlID0gbmV3IERhdGUoZCk7XHJcbiAgICB0aGlzLmhhbmRsZU1vdXNlT3ZlckRheShkIGFzIERhdGUpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY29lcmNlVG9EYXRlKHY6IERhdGUgfCBzdHJpbmcgfCBudW1iZXIgfCBudWxsIHwgdW5kZWZpbmVkKTogRGF0ZSB8IG51bGwge1xyXG4gICAgaWYgKHYgPT0gbnVsbCkgcmV0dXJuIG51bGw7XHJcbiAgICBjb25zdCBkID0gdiBpbnN0YW5jZW9mIERhdGUgPyB2IDogbmV3IERhdGUodik7XHJcbiAgICByZXR1cm4gaXNOYU4oZC5nZXRUaW1lKCkpID8gbnVsbCA6IGQ7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGF0ZVNlbGVjdGVkOiBFdmVudEVtaXR0ZXI8RGF0ZT4gPSBuZXcgRXZlbnRFbWl0dGVyPERhdGU+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzZWNvbmREYXRlU2VsZWN0ZWQ6IEV2ZW50RW1pdHRlcjxEYXRlPiA9IG5ldyBFdmVudEVtaXR0ZXI8RGF0ZT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGhvdmVyaW5nRGF0ZTogRXZlbnRFbWl0dGVyPERhdGU+ID0gbmV3IEV2ZW50RW1pdHRlcjxEYXRlPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgY2xpY2tlZE91dHNpZGU6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGNsZWFyRGF0ZXM6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgcHVibGljIHNob3dDYWxlbmRhckJvZHk6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIHB1YmxpYyBzaG93TW9udGhTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1llYXJTZWxlY3Rpb246IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwdWJsaWMgc2hvd1NlbGVjdGVkTW9udGg6IHN0cmluZztcclxuXHJcbiAgcHVibGljIHdvcmtpbmdEYXk6IERhdGU7XHJcbiAgcHVibGljIHdvcmtpbmdZZWFyOiBudW1iZXI7XHJcbiAgcHVibGljIHdvcmtpbmdNb250aDogbnVtYmVyO1xyXG5cclxuICBwdWJsaWMgbW9udGhIZWFkZXI6IHN0cmluZyA9ICcnO1xyXG4gIHB1YmxpYyB5ZWFySGVhZGVyOiBzdHJpbmcgPSAnJztcclxuXHJcbiAgcHVibGljIG1vbnRoU2VsZWN0aW9uOiBib29sZWFuID0gdHJ1ZTtcclxuICBwdWJsaWMgeWVhclNlbGVjdGlvbjogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwdWJsaWMgZGF5TmFtZXMgPSBbXTtcclxuICBwdWJsaWMgbW9udGhOYW1lcyA9IFtdO1xyXG4gIHB1YmxpYyBtb250aFNlbGVjdGlvbk5hbWVzOiBzdHJpbmdbXSA9IFtdO1xyXG4gIHB1YmxpYyB5ZWFyU2VsZWN0aW9uWWVhcnM6IG51bWJlcltdID0gW107XHJcbiAgcHVibGljIGRheXNJbk1vbnRoOiBEYXRlW10gPSBbXTtcclxuXHJcbiAgcHVibGljIGRheXNVbml4VGltZXN0YW1wczogbnVtYmVyW10gPSBbXTtcclxuICBwdWJsaWMgZGF5c1RvSGlnaGxpZ2h0OiBEYXRlW10gPSBbXTtcclxuICBwdWJsaWMgdGVtcG9yYXJ5U2VsZWN0ZWRTZWNvbmRhcnlEYXRlOiBEYXRlO1xyXG5cclxuICBwcml2YXRlIF9zZWNvbmRIb3ZlcmluZ0RhdGU6IERhdGU7XHJcbiAgcHJpdmF0ZSBfc2Vjb25kU2VsZWN0ZWREYXRlOiBEYXRlO1xyXG4gIHByaXZhdGUgX3NlbGVjdGVkRGF0ZTogRGF0ZTtcclxuICBwcml2YXRlIF9pbml0aWFsU2VsZWN0ZWREYXRlOiBEYXRlIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBIb3N0QmluZGluZyhcImNsYXNzLmNhbGVuZGFyLXRlbXBsYXRlXCIpXHJcbiAgcHVibGljIHNob3dDbGFzcygpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5nT25Jbml0KCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2V0SW5pdGlhbFZhbHVlcygpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZU1vbnRoTmFtZXMoKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gICAgdGhpcy5fZmlsbERhdGVzQmV0d2VlblNlbGVjdGVkKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgcHJldk1vbnRoKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMud29ya2luZ01vbnRoID09PSAwKSB7XHJcbiAgICAgIHRoaXMud29ya2luZ01vbnRoID0gMTE7XHJcbiAgICAgIHRoaXMud29ya2luZ1llYXItLTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMud29ya2luZ01vbnRoLS07XHJcbiAgICB9XHJcbiAgICB0aGlzLmdlbmVyYXRlQ2FsZW5kYXIoKTtcclxuICAgIHRoaXMuX2ZpbGxEYXRlc0JldHdlZW5TZWxlY3RlZCgpO1xyXG4gICAgdGhpcy5jYWxjdWxhdGVXZWVrTnVtYmVycygpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5leHRNb250aCgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLndvcmtpbmdNb250aCA9PT0gMTEpIHtcclxuICAgICAgdGhpcy53b3JraW5nTW9udGggPSAwO1xyXG4gICAgICB0aGlzLndvcmtpbmdZZWFyKys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLndvcmtpbmdNb250aCsrO1xyXG4gICAgfVxyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XHJcbiAgICB0aGlzLl9maWxsRGF0ZXNCZXR3ZWVuU2VsZWN0ZWQoKTtcclxuICAgIHRoaXMuY2FsY3VsYXRlV2Vla051bWJlcnMoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwcmV2WWVhcigpOiB2b2lkIHtcclxuICAgIHRoaXMud29ya2luZ1llYXItLTtcclxuICAgIHRoaXMuZ2VuZXJhdGVDYWxlbmRhcigpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG5leHRZZWFyKCk6IHZvaWQge1xyXG4gICAgdGhpcy53b3JraW5nWWVhcisrO1xyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVDYWxlbmRhcigpOiB2b2lkIHtcclxuICAgIHRoaXMuX3NldE1vbnRoRGF5c0ZvckRhdGUodGhpcy53b3JraW5nTW9udGgpO1xyXG5cclxuICAgIC8vIFVwZGF0ZSB0aGUgZGlzcGxheWVkIG1vbnRoXHJcbiAgICBjb25zdCBtb250aCA9IHRoaXMubW9udGhOYW1lc1t0aGlzLndvcmtpbmdNb250aF07XHJcbiAgICBjb25zdCB5ZWFyID0gdGhpcy53b3JraW5nWWVhcjtcclxuXHJcbiAgICAvLyBVcGRhdGUgaGVhZGVyVGV4dFxyXG4gICAgdGhpcy5tb250aEhlYWRlciA9IGAke21vbnRofSAke3llYXJ9YDtcclxuICAgIHRoaXMueWVhckhlYWRlciA9IGAke3llYXJ9YDtcclxuXHJcbiAgICB0aGlzLmdlbmVyYXRlWWVhclNlbGVjdGlvblllYXJzKCk7XHJcbiAgICB0aGlzLmNhbGN1bGF0ZVdlZWtOdW1iZXJzKCk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRJbml0aWFsVmFsdWVzKCk6IHZvaWQge1xyXG4gICAgdGhpcy53b3JraW5nRGF5ID0gdGhpcy5zZWxlY3RlZERhdGUgPyB0aGlzLnNlbGVjdGVkRGF0ZSA6IG5ldyBEYXRlKCk7XHJcbiAgICB0aGlzLndvcmtpbmdZZWFyID0gdGhpcy53b3JraW5nRGF5LmdldEZ1bGxZZWFyKCk7XHJcbiAgICB0aGlzLndvcmtpbmdNb250aCA9IHRoaXMud29ya2luZ0RheS5nZXRNb250aCgpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfc2V0TW9udGhEYXlzRm9yRGF0ZShtb250aE51bWJlcjogbnVtYmVyKTogdm9pZCB7XHJcbiAgICB0aGlzLmRheXNJbk1vbnRoID0gW107XHJcblxyXG4gICAgY29uc3QgZmlyc3REYXlPZk1vbnRoID0gbmV3IERhdGUodGhpcy53b3JraW5nWWVhciwgbW9udGhOdW1iZXIsIDApLmdldERheSgpO1xyXG4gICAgY29uc3QgbGFzdERheU9mTW9udGggPSBuZXcgRGF0ZSh0aGlzLndvcmtpbmdZZWFyLCBtb250aE51bWJlciArIDEsIDApLmdldERhdGUoKTtcclxuXHJcbiAgICAvLyBBZGQgbnVsbCB2YWx1ZXMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgYXJyYXkgdG8gYWxpZ24gdGhlIGZpcnN0IGRheSB3aXRoIHRoZSBjb3JyZWN0IGRheSBvZiB0aGUgd2Vla1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBmaXJzdERheU9mTW9udGg7IGkrKykge1xyXG4gICAgICB0aGlzLmRheXNJbk1vbnRoLnB1c2gobnVsbCk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWRkIHRoZSBkYXlzIG9mIHRoZSBjdXJyZW50IG1vbnRoIHRvIHRoZSBhcnJheVxyXG4gICAgZm9yIChsZXQgaSA9IDE7IGkgPD0gbGFzdERheU9mTW9udGg7IGkrKykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUodGhpcy53b3JraW5nWWVhciwgdGhpcy53b3JraW5nTW9udGgsIGkpO1xyXG4gICAgICB0aGlzLmRheXNJbk1vbnRoLnB1c2goZGF0ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gQWRkIG51bGwgdmFsdWVzIHRvIHRoZSBlbmQgb2YgdGhlIGFycmF5IHRvIGZpbGwgb3V0IHRoZSBncmlkXHJcbiAgICAvLyBjb25zdCByZW1haW5pbmdDZWxscyA9IDQyIC0gdGhpcy5kYXlzSW5Nb250aC5sZW5ndGg7XHJcbiAgICAvLyBmb3IgKGxldCBpID0gMDsgaSA8IHJlbWFpbmluZ0NlbGxzOyBpKyspIHtcclxuICAgIC8vICAgdGhpcy5kYXlzSW5Nb250aC5wdXNoKG51bGwpO1xyXG4gICAgLy8gfVxyXG5cclxuICAgIHRoaXMuZGF5c1VuaXhUaW1lc3RhbXBzID0gdGhpcy5kYXlzSW5Nb250aC5tYXAoZGF5ID0+IHsgcmV0dXJuIGRheSA/IGRheS5nZXRUaW1lKCkgOiB1bmRlZmluZWQgfSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVZZWFyU2VsZWN0aW9uWWVhcnMoKTogdm9pZCB7XHJcbiAgICBjb25zdCBwYXN0WWVhcnMgPSA1O1xyXG4gICAgY29uc3QgZnV0dXJlWWVhcnMgPSAzO1xyXG4gICAgY29uc3QgeWVhcnMgPSBbXTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gcGFzdFllYXJzOyBpID49IDE7IGktLSkge1xyXG5cclxuICAgICAgeWVhcnMucHVzaCh0aGlzLndvcmtpbmdZZWFyIC0gaSk7XHJcbiAgICB9XHJcblxyXG4gICAgeWVhcnMucHVzaCh0aGlzLndvcmtpbmdZZWFyKTtcclxuXHJcbiAgICBmb3IgKGxldCBpID0gMTsgaSA8PSBmdXR1cmVZZWFyczsgaSsrKSB7XHJcbiAgICAgIHllYXJzLnB1c2godGhpcy53b3JraW5nWWVhciArIGkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMueWVhclNlbGVjdGlvblllYXJzID0geWVhcnMucmV2ZXJzZSgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9wZW5Nb250aFNlbGVjdGlvbigpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd0NhbGVuZGFyQm9keSA9ICF0aGlzLnNob3dDYWxlbmRhckJvZHk7XHJcbiAgICB0aGlzLm1vbnRoU2VsZWN0aW9uID0gIXRoaXMubW9udGhTZWxlY3Rpb247XHJcbiAgICB0aGlzLnllYXJTZWxlY3Rpb24gPSAhdGhpcy55ZWFyU2VsZWN0aW9uO1xyXG4gICAgdGhpcy5zaG93TW9udGhTZWxlY3Rpb24gPSAhdGhpcy5zaG93TW9udGhTZWxlY3Rpb247XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgb3BlblllYXJTZWxlY3Rpb24oKTogdm9pZCB7XHJcbiAgICB0aGlzLnNob3dNb250aFNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93WWVhclNlbGVjdGlvbiA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0RGF0ZShkYXk6IERhdGUpOiB2b2lkIHtcclxuICAgIGlmIChkYXkpIHtcclxuICAgICAgaWYgKCF0aGlzLmRvdWJsZUNhbGVuZGFyKSB7XHJcbiAgICAgICAgLy8gU2luZ2xlIGNhbGVuZGFyIOKGkiBzZWxlY3QgYW5kIGNsb3NlXHJcbiAgICAgICAgdGhpcy5zZWxlY3RlZERhdGUgPSBkYXk7XHJcbiAgICAgICAgdGhpcy5zZXRBbmRDbG9zZSgpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gZGF5O1xyXG4gICAgICAgIHRoaXMuX2ZpbGxEYXRlc0JldHdlZW5TZWxlY3RlZCgpO1xyXG4gICAgICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQobmV3IERhdGUodGhpcy5zZWxlY3RlZERhdGUpKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIHNlbGVjdE1vbnRoKG1vbnRoOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuc2hvd1NlbGVjdGVkTW9udGggPSBtb250aDtcclxuICAgIHRoaXMud29ya2luZ01vbnRoID0gdGhpcy5tb250aFNlbGVjdGlvbk5hbWVzLmluZGV4T2YobW9udGgpO1xyXG4gICAgdGhpcy5zaG93TW9udGhTZWxlY3Rpb24gPSBmYWxzZTtcclxuICAgIHRoaXMueWVhclNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5tb250aFNlbGVjdGlvbiA9IHRydWU7XHJcbiAgICB0aGlzLnNob3dDYWxlbmRhckJvZHkgPSB0cnVlO1xyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2VsZWN0WWVhcih5ZWFyOiBudW1iZXIpOiB2b2lkIHtcclxuICAgIHRoaXMud29ya2luZ1llYXIgPSB5ZWFyO1xyXG4gICAgdGhpcy5zaG93WWVhclNlbGVjdGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5zaG93TW9udGhTZWxlY3Rpb24gPSB0cnVlO1xyXG4gICAgdGhpcy5nZW5lcmF0ZUNhbGVuZGFyKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2VuZXJhdGVNb250aE5hbWVzKCk6IHZvaWQge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMjsgaSsrKSB7XHJcbiAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZSgyMDAwLCBpLCAxKTtcclxuICAgICAgY29uc3QgbW9udGhOYW1lU2hvcnQgPSBkYXRlLnRvTG9jYWxlU3RyaW5nKHRoaXMubG9jYWxlLCB7bW9udGg6ICdzaG9ydCd9KTtcclxuICAgICAgY29uc3QgbW9udGhOYW1lRnVsbCA9IGRhdGUudG9Mb2NhbGVTdHJpbmcodGhpcy5sb2NhbGUsIHttb250aDogJ2xvbmcnfSk7XHJcbiAgICAgIHRoaXMubW9udGhTZWxlY3Rpb25OYW1lcy5wdXNoKHRoaXMuX2NhcGl0YWxpemVGaXJzdExldHRlcihtb250aE5hbWVTaG9ydCkpO1xyXG4gICAgICB0aGlzLm1vbnRoTmFtZXMucHVzaCh0aGlzLl9jYXBpdGFsaXplRmlyc3RMZXR0ZXIobW9udGhOYW1lRnVsbCkpO1xyXG4gICAgfVxyXG5cclxuICAgIGZvciAobGV0IGkgPSAxOyBpIDw9IDc7IGkrKykge1xyXG4gICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoMjAxOCwgMCwgaSk7XHJcbiAgICAgIGNvbnN0IHdlZWtkYXlOYW1lID0gZGF0ZS50b0xvY2FsZVN0cmluZyh0aGlzLmxvY2FsZSwgeyB3ZWVrZGF5OiAnc2hvcnQnIH0pO1xyXG4gICAgICB0aGlzLmRheU5hbWVzLnB1c2godGhpcy5fY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHdlZWtkYXlOYW1lLmNoYXJBdCgwKSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZU1vdXNlT3ZlckRheShkYXk6IERhdGUpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLmhpZ2hsaWdodERheXNCZXR3ZWVuRGF0ZXMgJiYgZGF5ICYmICh0aGlzLnNlbGVjdGVkRGF0ZSB8fCB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSkgJiYgISh0aGlzLnNlbGVjdGVkRGF0ZSAmJiB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSkgJiYgISh0aGlzLnNlbGVjdGVkRGF0ZSAmJiAhdGhpcy50ZW1wb3JhcnlTZWxlY3RlZFNlY29uZGFyeURhdGUgJiYgIXRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlKSkge1xyXG4gICAgICB0aGlzLmRheXNUb0hpZ2hsaWdodCA9IFtdO1xyXG4gICAgICBpZiAodGhpcy5kYXlzVW5peFRpbWVzdGFtcHMuaW5jbHVkZXMoZGF5LmdldFRpbWUoKSkpIHtcclxuICAgICAgICB0aGlzLmRheXNUb0hpZ2hsaWdodC5wdXNoKC4uLnRoaXMuZGF5c0luTW9udGgubWFwKChkYXlJbk1vbnRoOiBEYXRlKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUpIHtcclxuICAgICAgICAgICAgaWYgKGRheUluTW9udGggJiZcclxuICAgICAgICAgICAgICAvLyBkYXkgaW4gdGhlIG1vbnRoIGlzIGFmdGVyIHNlbGVjdGVkIGRhdGUgYW5kIGRheSBpbiB0aGUgbW9udGggaXMgYmVmb3JlIHRoZSBob3ZlcmluZyBkYXlcclxuICAgICAgICAgICAgICAoZGF5SW5Nb250aC5nZXRUaW1lKCkgPiB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgJiYgZGF5SW5Nb250aC5nZXRUaW1lKCkgPCBkYXkuZ2V0VGltZSgpKSB8fFxyXG4gICAgICAgICAgICAgIC8vIHNlY29uZCBkYXRlIGlzIGFmdGVyIHNlbGVjdGVkIGRhdGUgYW5kIGRheSBpbiB0aGUgbW9udGggaXMgYmVmb3JlIGhvdmVyaW5nIGRheSBhbmQgZGF5IGluIG1vbnRoIGlzIGFmdGVyIHNlbGVjdGVkIGRhdGVcclxuICAgICAgICAgICAgICAodGhpcy5fc2Vjb25kSG92ZXJpbmdEYXRlICYmIHRoaXMuX3NlY29uZEhvdmVyaW5nRGF0ZS5nZXRUaW1lKCkgPiB0aGlzLnNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgJiYgZGF5ICYmIGRheUluTW9udGggJiYgZGF5SW5Nb250aC5nZXRUaW1lKCkgPCBkYXkuZ2V0VGltZSgpICYmIGRheUluTW9udGguZ2V0VGltZSgpID4gdGhpcy5zZWxlY3RlZERhdGUuZ2V0VGltZSgpKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBkYXlJbk1vbnRoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZGF5SW5Nb250aCAmJlxyXG4gICAgICAgICAgICAgIC8vIGRheSBpbiB0aGUgbW9udGggaXMgYWZ0ZXIgc2Vjb25kIGRhdGUgYW5kIGRheSBpbiB0aGUgbW9udGggaXMgYmVmb3JlIHRoZSBob3ZlcmluZyBkYXlcclxuICAgICAgICAgICAgICAoZGF5SW5Nb250aC5nZXRUaW1lKCkgPiB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZS5nZXRUaW1lKCkgJiYgZGF5SW5Nb250aC5nZXRUaW1lKCkgPCBkYXkuZ2V0VGltZSgpKSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBkYXlJbk1vbnRoO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuZGF5c1RvSGlnaGxpZ2h0LnB1c2goLi4udGhpcy5kYXlzSW5Nb250aC5tYXAoKGRheSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGRheSA+IHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBkYXk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB0aGlzLmhvdmVyaW5nRGF0ZS5uZXh0KGRheSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9maWxsRGF0ZXNCZXR3ZWVuU2VsZWN0ZWQoKTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5zZWxlY3RlZERhdGUgJiYgdGhpcy5zZWNvbmRTZWxlY3RlZERhdGUpIHtcclxuICAgICAgdGhpcy5kYXlzVG9IaWdobGlnaHQgPSBbXTtcclxuICAgICAgdGhpcy5kYXlzVG9IaWdobGlnaHQucHVzaCguLi50aGlzLmRheXNJbk1vbnRoLm1hcCgoZGF5SW5Nb250aDogRGF0ZSkgPT4ge1xyXG4gICAgICAgIGlmIChkYXlJbk1vbnRoICYmIChkYXlJbk1vbnRoID4gdGhpcy5zZWxlY3RlZERhdGUgJiYgZGF5SW5Nb250aCA8IHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlKSB8fCAoZGF5SW5Nb250aCA+IHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlICYmIGRheUluTW9udGggPCB0aGlzLnNlbGVjdGVkRGF0ZSkpIHtcclxuICAgICAgICAgIHJldHVybiBkYXlJbk1vbnRoO1xyXG4gICAgICAgIH1cclxuICAgICAgfSkpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHZhbHVlOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgcmV0dXJuIHZhbHVlLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgdmFsdWUuc2xpY2UoMSk7XHJcbiAgfVxyXG4gIHByaXZhdGUgY2FsY3VsYXRlV2Vla051bWJlcnMoKTogdm9pZCB7XHJcbiAgICB0aGlzLndlZWtOdW1iZXJzID0gW107XHJcbiAgICBsZXQgd2Vla051bWJlcjogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF5c0luTW9udGgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgY29uc3QgZGF5ID0gdGhpcy5kYXlzSW5Nb250aFtpXTtcclxuICAgICAgaWYgKGRheSkge1xyXG4gICAgICAgICAgLy8gU3RhcnQgb2YgYSBuZXcgd2VlayBvciBmaXJzdCBkYXkgb2YgdGhlIG1vbnRoLCBjYWxjdWxhdGUgYW5kIHNldCB3ZWVrTnVtYmVyXHJcbiAgICAgICAgICB3ZWVrTnVtYmVyID0gdGhpcy5nZXRJU09XZWVrKGRheSk7XHJcbiAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgd2Vla051bWJlciBpcyBub3QgYWxyZWFkeSBpbiB0aGUgYXJyYXlcclxuICAgICAgICAgIGlmICghdGhpcy53ZWVrTnVtYmVycy5pbmNsdWRlcyh3ZWVrTnVtYmVyKSkge1xyXG4gICAgICAgICAgICB0aGlzLndlZWtOdW1iZXJzLnB1c2god2Vla051bWJlcik7XHJcbiAgICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcHVibGljIGdldElTT1dlZWsoZGF0ZTogRGF0ZSk6IG51bWJlciB7XHJcbiAgICAgIGNvbnN0IGQgPSBuZXcgRGF0ZShEYXRlLlVUQyhkYXRlLmdldEZ1bGxZZWFyKCksIGRhdGUuZ2V0TW9udGgoKSwgZGF0ZS5nZXREYXRlKCkpKTtcclxuICAgICAgZC5zZXRVVENEYXRlKGQuZ2V0VVRDRGF0ZSgpICsgNCAtIChkLmdldFVUQ0RheSgpIHx8IDcpKTtcclxuICAgICAgY29uc3QgeWVhclN0YXJ0ID0gbmV3IERhdGUoRGF0ZS5VVEMoZC5nZXRVVENGdWxsWWVhcigpLCAwLCAxKSk7XHJcbiAgICAgIGNvbnN0IHdlZWtOdW1iZXIgPSBNYXRoLmNlaWwoKChkLnZhbHVlT2YoKSAtIHllYXJTdGFydC52YWx1ZU9mKCkpIC8gODY0MDAwMDAgKyAxKSAvIDcpO1xyXG4gICAgICByZXR1cm4gd2Vla051bWJlcjtcclxuICB9XHJcbiAgcHVibGljIHNldEFuZENsb3NlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuZGF0ZVNlbGVjdGVkLmVtaXQodGhpcy5zZWxlY3RlZERhdGUpO1xyXG4gICAgICB0aGlzLnNlY29uZERhdGVTZWxlY3RlZC5lbWl0KHRoaXMuc2Vjb25kU2VsZWN0ZWREYXRlKTsvLyBFbWl0IHRoZSBzZWxlY3RlZCBkYXRlXHJcbiAgICAgIHRoaXMuY2xvc2VQb3B1cCgpOyAvLyBUcmlnZ2VyIHBvcHVwIGNsb3NlXHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY2xlYXJEYXRlKCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0ZWREYXRlKSB7XHJcbiAgICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gbnVsbDtcclxuICAgICAgdGhpcy5kYXRlU2VsZWN0ZWQuZW1pdChudWxsKTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSkge1xyXG4gICAgICB0aGlzLnNlY29uZFNlbGVjdGVkRGF0ZSA9IG51bGw7XHJcbiAgICAgIHRoaXMuc2Vjb25kRGF0ZVNlbGVjdGVkLmVtaXQobnVsbCk7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNsZWFyRGF0ZXMuZW1pdCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGNsb3NlRGF0ZSgpOiB2b2lkIHtcclxuICAgIHRoaXMuc2VsZWN0ZWREYXRlID0gdGhpcy5faW5pdGlhbFNlbGVjdGVkRGF0ZTtcclxuICAgIHRoaXMuY2xvc2VQb3B1cCgpOyAvLyBUcmlnZ2VyIHBvcHVwIGNsb3NlIHdpdGhvdXQgbWFraW5nIGNoYW5nZXNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgY2xvc2VQb3B1cCgpOiB2b2lkIHtcclxuICAgIHRoaXMuY2xpY2tlZE91dHNpZGUuZW1pdCgpOyAvLyBFbWl0IHRoZSBgY2xpY2tlZE91dHNpZGVgIGV2ZW50IHRvIG5vdGlmeSB0aGUgcGFyZW50XHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIl19
@@ -1,9 +1,11 @@
1
- import { ContentChildren, Directive, EventEmitter, HostListener, Input, Output } from "@angular/core";
1
+ import { __awaiter } from "tslib";
2
+ import { ChangeDetectorRef, ContentChildren, Directive, EventEmitter, HostListener, Input, Output } from "@angular/core";
2
3
  import { SimpleGridColumnDirective } from "./simple-grid-column.directive";
3
4
  import { moveItemInArray } from "@angular/cdk/drag-drop";
4
5
  import { Subject } from "rxjs";
5
6
  export class BaseSimpleGridComponent {
6
- constructor() {
7
+ constructor(changeDetection) {
8
+ this.changeDetection = changeDetection;
7
9
  this.MIN_COLUMN_WIDTH = 50;
8
10
  this.dataChanged = new Subject();
9
11
  this.dragDropEnabled = false;
@@ -19,6 +21,7 @@ export class BaseSimpleGridComponent {
19
21
  this.emitDragDrop = false;
20
22
  this.onDrop = new EventEmitter();
21
23
  this.selectRow = new EventEmitter();
24
+ this.deselectRow = new EventEmitter();
22
25
  this.dblClickRow = new EventEmitter();
23
26
  this.saveRow = new EventEmitter();
24
27
  this.deleteRow = new EventEmitter();
@@ -96,40 +99,52 @@ export class BaseSimpleGridComponent {
96
99
  return row.singleColumnIndex;
97
100
  }
98
101
  prepareDataRow(row, index) {
102
+ return __awaiter(this, void 0, void 0, function* () {
103
+ });
99
104
  }
100
105
  _setColumns(columns) {
101
106
  this.columns.push(...columns);
102
107
  this.columns.sort((a, b) => a.order < b.order ? -1 : 1);
103
108
  }
104
109
  _prepareData() {
105
- if (this._prepared) {
106
- return;
107
- }
108
- this.disabledRows.length = 0;
109
- if (this.columns && this.columns.length > 0) {
110
- this.headerColumns = this.columns.filter(c => !c.singleColumn);
111
- this.headerColumnsCopy = this.headerColumns;
112
- let singleColumnIndex = -1;
113
- for (let i = 0; i < this.columns.length; i++) {
114
- if (this.columns[i].singleColumn) {
115
- singleColumnIndex = i;
116
- break;
117
- }
110
+ return __awaiter(this, void 0, void 0, function* () {
111
+ if (this._prepared) {
112
+ return;
118
113
  }
119
- // first check if there's single column data
120
- if (singleColumnIndex > -1 && this.data && this.data.length > 0) {
121
- const field = this.columns[singleColumnIndex].field;
122
- for (let i = 0; i < this.data.length; i++) { // then mark row as single column row
123
- if (this.data[i][field] !== undefined && this.data[i][field] !== null && this.data[i][field] !== "") {
124
- // bit nasty to add prop, but cool for now
125
- this.data[i].singleColumnIndex = singleColumnIndex;
114
+ this.disabledRows.length = 0;
115
+ if (this.columns && this.columns.length > 0) {
116
+ this.headerColumns = this.columns.filter(c => !c.singleColumn);
117
+ this.headerColumnsCopy = this.headerColumns;
118
+ let singleColumnIndex = -1;
119
+ for (let i = 0; i < this.columns.length; i++) {
120
+ if (this.columns[i].singleColumn) {
121
+ singleColumnIndex = i;
122
+ break;
123
+ }
124
+ }
125
+ // first check if there's single column data
126
+ if (this.data && this.data.length > 0) {
127
+ if (singleColumnIndex > -1) {
128
+ const field = this.columns[singleColumnIndex].field;
129
+ for (let i = 0; i < this.data.length; i++) { // then mark row as single column row
130
+ if (this.data[i][field] !== undefined && this.data[i][field] !== null && this.data[i][field] !== "") {
131
+ // bit nasty to add prop, but cool for now
132
+ this.data[i].singleColumnIndex = singleColumnIndex;
133
+ }
134
+ yield this.prepareDataRow(this.data[i], i);
135
+ }
136
+ }
137
+ else {
138
+ for (let j = 0; j < this.data.length; j++) {
139
+ yield this.prepareDataRow(this.data[j], j);
140
+ }
126
141
  }
127
- this.prepareDataRow(this.data[i], i);
128
142
  }
143
+ this._prepared = true;
129
144
  }
130
- this._prepared = true;
131
- }
132
- this._resizeColumnsToFit();
145
+ this._resizeColumnsToFit();
146
+ this.changeDetection.detectChanges();
147
+ });
133
148
  }
134
149
  _resizeColumnsToFit() {
135
150
  const calculateColumns = this.columns.filter(c => !c.autoFit && !c.width);
@@ -149,6 +164,9 @@ export class BaseSimpleGridComponent {
149
164
  BaseSimpleGridComponent.decorators = [
150
165
  { type: Directive }
151
166
  ];
167
+ BaseSimpleGridComponent.ctorParameters = () => [
168
+ { type: ChangeDetectorRef }
169
+ ];
152
170
  BaseSimpleGridComponent.propDecorators = {
153
171
  content: [{ type: ContentChildren, args: [SimpleGridColumnDirective,] }],
154
172
  data: [{ type: Input }],
@@ -163,6 +181,7 @@ BaseSimpleGridComponent.propDecorators = {
163
181
  extraColumns: [{ type: Input }],
164
182
  onDrop: [{ type: Output }],
165
183
  selectRow: [{ type: Output }],
184
+ deselectRow: [{ type: Output }],
166
185
  dblClickRow: [{ type: Output }],
167
186
  saveRow: [{ type: Output }],
168
187
  deleteRow: [{ type: Output }],
@@ -171,4 +190,4 @@ BaseSimpleGridComponent.propDecorators = {
171
190
  handleMouseMove: [{ type: HostListener, args: ['document:mousemove', ['$event'],] }],
172
191
  handleMouseUp: [{ type: HostListener, args: ['document:mouseup', ['$event'],] }]
173
192
  };
174
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zaW1wbGUtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2ltcGxlLWdyaWQvYmFzZS1zaW1wbGUtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUFFLFlBQVksRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUEwQixNQUFNLGVBQWUsQ0FBQztBQUM3SCxPQUFPLEVBQUMseUJBQXlCLEVBQUMsTUFBTSxnQ0FBZ0MsQ0FBQztBQUN6RSxPQUFPLEVBQW9DLGVBQWUsRUFBQyxNQUFNLHdCQUF3QixDQUFDO0FBQzFGLE9BQU8sRUFBQyxPQUFPLEVBQUMsTUFBTSxNQUFNLENBQUM7QUFHN0IsTUFBTSxPQUFnQix1QkFBdUI7SUFEN0M7UUFFa0IscUJBQWdCLEdBQVcsRUFBRSxDQUFDO1FBQzlCLGdCQUFXLEdBQWtCLElBQUksT0FBTyxFQUFRLENBQUM7UUE0QjFELG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBR2pDLGNBQVMsR0FBWSxLQUFLLENBQUM7UUFHM0IsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUc1QixhQUFRLEdBQVksS0FBSyxDQUFDO1FBRzFCLGdCQUFXLEdBQVksS0FBSyxDQUFDO1FBRzdCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFFbkM7OztXQUdHO1FBRUksaUJBQVksR0FBWSxLQUFLLENBQUM7UUFROUIsV0FBTSxHQUE2QyxJQUFJLFlBQVksRUFBOEIsQ0FBQztRQUdsRyxjQUFTLEdBQXFCLElBQUksWUFBWSxFQUFNLENBQUM7UUFHckQsZ0JBQVcsR0FBcUIsSUFBSSxZQUFZLEVBQU0sQ0FBQztRQUd2RCxZQUFPLEdBQXFCLElBQUksWUFBWSxFQUFNLENBQUM7UUFHbkQsY0FBUyxHQUFxQixJQUFJLFlBQVksRUFBTSxDQUFDO1FBR3JELFdBQU0sR0FBdUIsSUFBSSxZQUFZLEVBQVEsQ0FBQztRQUd0RCxlQUFVLEdBQXFCLElBQUksWUFBWSxFQUFNLENBQUM7UUFldEQsWUFBTyxHQUFnQyxFQUFFLENBQUM7UUFDMUMsa0JBQWEsR0FBZ0MsRUFBRSxDQUFDO1FBQ2hELHNCQUFpQixHQUFnQyxFQUFFLENBQUM7UUFFakQsVUFBSyxHQUFhLEVBQUUsQ0FBQztRQUNyQixnQkFBVyxHQUFhLEVBQUUsQ0FBQztRQUMzQixpQkFBWSxHQUFhLEVBQUUsQ0FBQztRQUc5QixjQUFTLEdBQVksS0FBSyxDQUFDO0lBaUdyQyxDQUFDO0lBbk1DLElBQWdELE9BQU8sQ0FBQyxnQkFBc0Q7UUFDNUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQzdDLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFDVyxJQUFJLENBQUMsS0FBZTtRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDcEIsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRCxJQUNXLFVBQVUsQ0FBQyxLQUFlO1FBQ25DLElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFXLFVBQVU7UUFDbkIsT0FBTyxJQUFJLENBQUMsV0FBVyxDQUFDO0lBQzFCLENBQUM7SUEyQkQsSUFDVyxZQUFZLENBQUMsS0FBa0M7UUFDeEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixDQUFDO0lBd0JNLGVBQWUsQ0FBQyxLQUFpQjtRQUN0QyxJQUFJLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLE9BQU8sS0FBSyxDQUFDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ2xFLG1IQUFtSDtTQUNwSDtJQUNILENBQUM7SUFHTSxhQUFhLENBQUMsS0FBaUI7UUFDcEMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLFNBQVMsQ0FBQztRQUN0QyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsU0FBUyxDQUFDO0lBQ3BDLENBQUM7SUFjTSxvQkFBb0IsQ0FBQyxLQUFpQixFQUFFLE1BQWlDO1FBQzlFLElBQUksQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO1FBQzdCLElBQUksQ0FBQyxvQkFBb0IsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDO1FBQzFDLElBQUksQ0FBQyxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7UUFDL0IsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsS0FBSyxDQUFDO0lBQ3BFLENBQUM7SUFFTSxpQkFBaUIsQ0FBQyxJQUFhLEVBQUUsSUFBaUI7UUFDdkQsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQTRCO1FBQzVDLElBQUk7WUFDRixNQUFNLElBQUksR0FBVyxLQUFLLENBQUMsYUFBYSxDQUFDO1lBQ3pDLE1BQU0sRUFBRSxHQUFXLEtBQUssQ0FBQyxZQUFZLENBQUM7WUFDdEMsSUFBSSxJQUFJLEtBQUssRUFBRSxFQUFFO2dCQUNmLE9BQU87YUFDUjtZQUNELElBQUksSUFBSSxDQUFDLFlBQVksRUFBRTtnQkFDckIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUMsQ0FBQyxDQUFDO2FBQ3hDO2lCQUFNO2dCQUNMLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQzthQUN0QztTQUNGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDVixPQUFPLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEdBQVc7UUFDbEMsT0FBTyxHQUFHLENBQUMsY0FBYyxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVNLGlCQUFpQixDQUFDLEdBQVc7UUFDbEMsT0FBUSxHQUFXLENBQUMsaUJBQWlCLENBQUM7SUFDeEMsQ0FBQztJQUVTLGNBQWMsQ0FBQyxHQUFRLEVBQUUsS0FBYTtJQUVoRCxDQUFDO0lBRU8sV0FBVyxDQUFDLE9BQW9DO1FBQ3RELElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUM7UUFDOUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxRCxDQUFDO0lBRU8sWUFBWTtRQUNsQixJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUU7WUFDbEIsT0FBTztTQUNSO1FBQ0QsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDO1FBRTdCLElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQy9ELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1lBQzVDLElBQUksaUJBQWlCLEdBQVcsQ0FBQyxDQUFDLENBQUM7WUFDbkMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO2dCQUM1QyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxFQUFFO29CQUNoQyxpQkFBaUIsR0FBRyxDQUFDLENBQUM7b0JBQ3RCLE1BQU07aUJBQ1A7YUFDRjtZQUNELDRDQUE0QztZQUM1QyxJQUFJLGlCQUFpQixHQUFHLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO2dCQUMvRCxNQUFNLEtBQUssR0FBVyxJQUFJLENBQUMsT0FBTyxDQUFDLGlCQUFpQixDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUM1RCxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxxQ0FBcUM7b0JBQ2hGLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxTQUFTLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUU7d0JBQ25HLDBDQUEwQzt3QkFDekMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQVMsQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztxQkFDN0Q7b0JBQ0QsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO2lCQUN0QzthQUNGO1lBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7U0FDdkI7UUFDRCxJQUFJLENBQUMsbUJBQW1CLEVBQUUsQ0FBQztJQUM3QixDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLE1BQU0sZ0JBQWdCLEdBQWdDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3ZHLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDaEQsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxHQUFHLEdBQUcsR0FBRyxHQUFHLGdCQUFnQixDQUFDLE1BQU0sR0FBRyxDQUFDO1NBQ2pFO0lBQ0gsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLE1BQWlDLEVBQUUsRUFBRTtZQUN6RCxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssS0FBSyxTQUFTLElBQUksTUFBTSxDQUFDLEtBQUssS0FBSyxJQUFJLENBQUMsSUFBSSxNQUFNLENBQUMsVUFBVSxJQUFJLE1BQU0sQ0FBQyxVQUFVLENBQUMsYUFBYSxFQUFFO2dCQUNqSCxNQUFNLElBQUksR0FBZSxNQUFNLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxxQkFBcUIsRUFBRSxDQUFDO2dCQUNqRixNQUFNLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUM7YUFDM0I7UUFDSCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7OztZQXRNRixTQUFTOzs7c0JBS1AsZUFBZSxTQUFDLHlCQUF5QjttQkFLekMsS0FBSzt5QkFXTCxLQUFLOzhCQVNMLEtBQUs7d0JBR0wsS0FBSzt5QkFHTCxLQUFLO3VCQUdMLEtBQUs7MEJBR0wsS0FBSzt5QkFHTCxLQUFLOzJCQU9MLEtBQUs7MkJBR0wsS0FBSztxQkFLTCxNQUFNO3dCQUdOLE1BQU07MEJBR04sTUFBTTtzQkFHTixNQUFNO3dCQUdOLE1BQU07cUJBR04sTUFBTTt5QkFHTixNQUFNOzhCQUdOLFlBQVksU0FBQyxvQkFBb0IsRUFBRSxDQUFDLFFBQVEsQ0FBQzs0QkFPN0MsWUFBWSxTQUFDLGtCQUFrQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLCBIb3N0TGlzdGVuZXIsIElucHV0LCBPdXRwdXQsIFF1ZXJ5TGlzdCwgVmlld0NoaWxkcmVufSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge1NpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmV9IGZyb20gXCIuL3NpbXBsZS1ncmlkLWNvbHVtbi5kaXJlY3RpdmVcIjtcclxuaW1wb3J0IHtDZGtEcmFnLCBDZGtEcmFnRHJvcCwgQ2RrRHJvcExpc3QsIG1vdmVJdGVtSW5BcnJheX0gZnJvbSBcIkBhbmd1bGFyL2Nkay9kcmFnLWRyb3BcIjtcclxuaW1wb3J0IHtTdWJqZWN0fSBmcm9tIFwicnhqc1wiO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2ltcGxlR3JpZENvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IE1JTl9DT0xVTU5fV0lEVEg6IG51bWJlciA9IDUwO1xyXG4gIHB1YmxpYyByZWFkb25seSBkYXRhQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZSkgc2V0IGNvbnRlbnQoY29sdW1uQ29tcG9uZW50czogUXVlcnlMaXN0PFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmU+KSB7XHJcbiAgICB0aGlzLl9zZXRDb2x1bW5zKGNvbHVtbkNvbXBvbmVudHMudG9BcnJheSgpKTtcclxuICAgIHRoaXMuX3ByZXBhcmVEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZGF0YSh2YWx1ZTogT2JqZWN0W10pIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3ByZXBhcmVEYXRhKCk7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2VkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBPYmplY3RbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBleHBvcnREYXRhKHZhbHVlOiBPYmplY3RbXSkge1xyXG4gICAgdGhpcy5fZXhwb3J0RGF0YSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBleHBvcnREYXRhKCk6IE9iamVjdFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9leHBvcnREYXRhO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZHJhZ0Ryb3BFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlc2l6YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbmxpbmVFZGl0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dFZGl0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dUb29sYmFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGF1dG9BZGRSb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdWxkIGNvbXBvbmVudCBlbWl0IGRyYWcgYW5kIGRyb3AgYWN0aW9ucyBpbnN0ZWFkIG9mIGhhbmRsZVxyXG4gICAqICh1cGRhdGUgY29sbGVjdGlvbikgYnkgaXRzZWxmXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW1pdERyYWdEcm9wOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBleHRyYUNvbHVtbnModmFsdWU6IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmVbXSkge1xyXG4gICAgdGhpcy5fc2V0Q29sdW1ucyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25Ecm9wOiBFdmVudEVtaXR0ZXI8e2Zyb206IG51bWJlciwgdG86IG51bWJlcn0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7ZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNlbGVjdFJvdzogRXZlbnRFbWl0dGVyPHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkYmxDbGlja1JvdzogRXZlbnRFbWl0dGVyPHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBzYXZlUm93OiBFdmVudEVtaXR0ZXI8e30+ID0gbmV3IEV2ZW50RW1pdHRlcjx7fT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIGRlbGV0ZVJvdzogRXZlbnRFbWl0dGVyPHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBhZGRSb3c6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHJvd1Zpc2libGU6IEV2ZW50RW1pdHRlcjx7fT4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9PigpO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZW1vdmUnLCBbJyRldmVudCddKVxyXG4gIHB1YmxpYyBoYW5kbGVNb3VzZU1vdmUoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLnJlc2l6YWJsZSAmJiBldmVudC5idXR0b25zID09PSAxICYmIHRoaXMuX2NvbHVtbkZvclJlc2l6ZSkge1xyXG4gICAgICAvLyB0aGlzLl9jb2x1bW5Gb3JSZXNpemUud2lkdGggPSB0aGlzLl9jb2x1bW5Gb3JSZXNpemUub3JpZ2luYWxXaWR0aCAtICh0aGlzLl9zdGFydE1vdXNlUG9zaXRpb25YIC0gZXZlbnQuY2xpZW50WCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBASG9zdExpc3RlbmVyKCdkb2N1bWVudDptb3VzZXVwJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgaGFuZGxlTW91c2VVcChldmVudDogTW91c2VFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5fc3RhcnRNb3VzZVBvc2l0aW9uWCA9IHVuZGVmaW5lZDtcclxuICAgIHRoaXMuX2NvbHVtbkZvclJlc2l6ZSA9IHVuZGVmaW5lZDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBjb2x1bW5zOiBTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlW10gPSBbXTtcclxuICBwdWJsaWMgaGVhZGVyQ29sdW1uczogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZVtdID0gW107XHJcbiAgcHVibGljIGhlYWRlckNvbHVtbnNDb3B5OiBTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlW10gPSBbXTtcclxuXHJcbiAgcHJvdGVjdGVkIF9kYXRhOiBPYmplY3RbXSA9IFtdO1xyXG4gIHByb3RlY3RlZCBfZXhwb3J0RGF0YTogT2JqZWN0W10gPSBbXTtcclxuICBwcm90ZWN0ZWQgZGlzYWJsZWRSb3dzOiBudW1iZXJbXSA9IFtdO1xyXG5cclxuICBwcml2YXRlIF9jb2x1bW5Gb3JSZXNpemU6IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmU7XHJcbiAgcHJpdmF0ZSBfcHJlcGFyZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwcml2YXRlIF9zdGFydE1vdXNlUG9zaXRpb25YOiBudW1iZXI7XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVTaXplck1vdXNlRG93bihldmVudDogTW91c2VFdmVudCwgY29sdW1uOiBTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlKTogdm9pZCB7XHJcbiAgICB0aGlzLl9zZXRXaWR0aE9mQWxsQ29sdW1ucygpO1xyXG4gICAgdGhpcy5fc3RhcnRNb3VzZVBvc2l0aW9uWCA9IGV2ZW50LmNsaWVudFg7XHJcbiAgICB0aGlzLl9jb2x1bW5Gb3JSZXNpemUgPSBjb2x1bW47XHJcbiAgICB0aGlzLl9jb2x1bW5Gb3JSZXNpemUub3JpZ2luYWxXaWR0aCA9IHRoaXMuX2NvbHVtbkZvclJlc2l6ZS53aWR0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBoYW5kbGVDYW5EcmFnRHJvcChkcmFnOiBDZGtEcmFnLCBkcm9wOiBDZGtEcm9wTGlzdCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlRHJvcChldmVudDogQ2RrRHJhZ0Ryb3A8T2JqZWN0W10+KTogdm9pZCB7XHJcbiAgICB0cnkge1xyXG4gICAgICBjb25zdCBmcm9tOiBudW1iZXIgPSBldmVudC5wcmV2aW91c0luZGV4O1xyXG4gICAgICBjb25zdCB0bzogbnVtYmVyID0gZXZlbnQuY3VycmVudEluZGV4O1xyXG4gICAgICBpZiAoZnJvbSA9PT0gdG8pIHtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHRoaXMuZW1pdERyYWdEcm9wKSB7XHJcbiAgICAgICAgdGhpcy5vbkRyb3AubmV4dCh7ZnJvbTogZnJvbSwgdG86IHRvfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZGF0YSwgZnJvbSwgdG8pO1xyXG4gICAgICB9XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNTaW5nbGVDb2x1bW5Sb3cocm93OiBPYmplY3QpOiBib29sZWFuIHtcclxuICAgIHJldHVybiByb3cuaGFzT3duUHJvcGVydHkoJ3NpbmdsZUNvbHVtbkluZGV4Jyk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2luZ2xlQ29sdW1uSW5kZXgocm93OiBPYmplY3QpOiBudW1iZXIge1xyXG4gICAgcmV0dXJuIChyb3cgYXMgYW55KS5zaW5nbGVDb2x1bW5JbmRleDtcclxuICB9XHJcblxyXG4gIHByb3RlY3RlZCBwcmVwYXJlRGF0YVJvdyhyb3c6IGFueSwgaW5kZXg6IG51bWJlcik6IHZvaWQge1xyXG5cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldENvbHVtbnMoY29sdW1uczogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZVtdKTogdm9pZCB7XHJcbiAgICB0aGlzLmNvbHVtbnMucHVzaCguLi5jb2x1bW5zKTtcclxuICAgIHRoaXMuY29sdW1ucy5zb3J0KChhLCBiKSA9PiBhLm9yZGVyIDwgYi5vcmRlciA/IC0xIDogMSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9wcmVwYXJlRGF0YSgpOiB2b2lkIHtcclxuICAgIGlmICh0aGlzLl9wcmVwYXJlZCkge1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICB0aGlzLmRpc2FibGVkUm93cy5sZW5ndGggPSAwO1xyXG5cclxuICAgIGlmICh0aGlzLmNvbHVtbnMgJiYgdGhpcy5jb2x1bW5zLmxlbmd0aCA+IDApIHtcclxuICAgICAgdGhpcy5oZWFkZXJDb2x1bW5zID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjID0+ICFjLnNpbmdsZUNvbHVtbik7XHJcbiAgICAgIHRoaXMuaGVhZGVyQ29sdW1uc0NvcHkgPSB0aGlzLmhlYWRlckNvbHVtbnM7XHJcbiAgICAgIGxldCBzaW5nbGVDb2x1bW5JbmRleDogbnVtYmVyID0gLTE7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5jb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuY29sdW1uc1tpXS5zaW5nbGVDb2x1bW4pIHtcclxuICAgICAgICAgIHNpbmdsZUNvbHVtbkluZGV4ID0gaTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBmaXJzdCBjaGVjayBpZiB0aGVyZSdzIHNpbmdsZSBjb2x1bW4gZGF0YVxyXG4gICAgICBpZiAoc2luZ2xlQ29sdW1uSW5kZXggPiAtMSAmJiB0aGlzLmRhdGEgJiYgdGhpcy5kYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICBjb25zdCBmaWVsZDogc3RyaW5nID0gdGhpcy5jb2x1bW5zW3NpbmdsZUNvbHVtbkluZGV4XS5maWVsZDtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuZGF0YS5sZW5ndGg7IGkrKykgeyAvLyB0aGVuIG1hcmsgcm93IGFzIHNpbmdsZSBjb2x1bW4gcm93XHJcbiAgICAgICAgICBpZiAodGhpcy5kYXRhW2ldW2ZpZWxkXSAhPT0gdW5kZWZpbmVkICYmIHRoaXMuZGF0YVtpXVtmaWVsZF0gIT09IG51bGwgJiYgdGhpcy5kYXRhW2ldW2ZpZWxkXSAhPT0gXCJcIikge1xyXG4gICAgICAgICAgICAvLyBiaXQgbmFzdHkgdG8gYWRkIHByb3AsIGJ1dCBjb29sIGZvciBub3dcclxuICAgICAgICAgICAgKHRoaXMuZGF0YVtpXSBhcyBhbnkpLnNpbmdsZUNvbHVtbkluZGV4ID0gc2luZ2xlQ29sdW1uSW5kZXg7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICB0aGlzLnByZXBhcmVEYXRhUm93KHRoaXMuZGF0YVtpXSwgaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcblxyXG4gICAgICB0aGlzLl9wcmVwYXJlZCA9IHRydWU7XHJcbiAgICB9XHJcbiAgICB0aGlzLl9yZXNpemVDb2x1bW5zVG9GaXQoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3Jlc2l6ZUNvbHVtbnNUb0ZpdCgpOiB2b2lkIHtcclxuICAgIGNvbnN0IGNhbGN1bGF0ZUNvbHVtbnM6IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmVbXSA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiAhYy5hdXRvRml0ICYmICFjLndpZHRoKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsY3VsYXRlQ29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjYWxjdWxhdGVDb2x1bW5zW2ldLndpZHRoID0gYCR7MTAwIC8gY2FsY3VsYXRlQ29sdW1ucy5sZW5ndGh9JWA7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRXaWR0aE9mQWxsQ29sdW1ucygpOiB2b2lkIHtcclxuICAgIHRoaXMuY29sdW1ucy5mb3JFYWNoKChjb2x1bW46IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmUpID0+IHtcclxuICAgICAgaWYgKChjb2x1bW4ud2lkdGggPT09IHVuZGVmaW5lZCB8fCBjb2x1bW4ud2lkdGggPT09IG51bGwpICYmIGNvbHVtbi5lbGVtZW50UmVmICYmIGNvbHVtbi5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQpIHtcclxuICAgICAgICBjb25zdCByZWN0OiBDbGllbnRSZWN0ID0gY29sdW1uLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcclxuICAgICAgICBjb2x1bW4ud2lkdGggPSByZWN0LndpZHRoO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG59XHJcbiJdfQ==
193
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1zaW1wbGUtZ3JpZC5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9jb3JlY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMvc2ltcGxlLWdyaWQvYmFzZS1zaW1wbGUtZ3JpZC5jb21wb25lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxpQkFBaUIsRUFDakIsZUFBZSxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQ3RFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBQyx5QkFBeUIsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQ3pFLE9BQU8sRUFBb0MsZUFBZSxFQUFDLE1BQU0sd0JBQXdCLENBQUM7QUFDMUYsT0FBTyxFQUFDLE9BQU8sRUFBQyxNQUFNLE1BQU0sQ0FBQztBQUk3QixNQUFNLE9BQWdCLHVCQUF1QjtJQTRHM0MsWUFDWSxlQUFrQztRQUFsQyxvQkFBZSxHQUFmLGVBQWUsQ0FBbUI7UUE1RzlCLHFCQUFnQixHQUFXLEVBQUUsQ0FBQztRQUM5QixnQkFBVyxHQUFrQixJQUFJLE9BQU8sRUFBUSxDQUFDO1FBNEIxRCxvQkFBZSxHQUFZLEtBQUssQ0FBQztRQUdqQyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBRzNCLGVBQVUsR0FBWSxLQUFLLENBQUM7UUFHNUIsYUFBUSxHQUFZLEtBQUssQ0FBQztRQUcxQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQUc3QixlQUFVLEdBQVksS0FBSyxDQUFDO1FBRW5DOzs7V0FHRztRQUVJLGlCQUFZLEdBQVksS0FBSyxDQUFDO1FBUTlCLFdBQU0sR0FBNkMsSUFBSSxZQUFZLEVBQThCLENBQUM7UUFHbEcsY0FBUyxHQUFxQixJQUFJLFlBQVksRUFBTSxDQUFDO1FBR3JELGdCQUFXLEdBQXVCLElBQUksWUFBWSxFQUFRLENBQUM7UUFHM0QsZ0JB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LENBQUM7Z0JBQ2pGLE1BQU0sQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQzthQUMzQjtRQUNILENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7O1lBck5GLFNBQVM7OztZQVJSLGlCQUFpQjs7O3NCQWFoQixlQUFlLFNBQUMseUJBQXlCO21CQUt6QyxLQUFLO3lCQVdMLEtBQUs7OEJBU0wsS0FBSzt3QkFHTCxLQUFLO3lCQUdMLEtBQUs7dUJBR0wsS0FBSzswQkFHTCxLQUFLO3lCQUdMLEtBQUs7MkJBT0wsS0FBSzsyQkFHTCxLQUFLO3FCQUtMLE1BQU07d0JBR04sTUFBTTswQkFHTixNQUFNOzBCQUdOLE1BQU07c0JBR04sTUFBTTt3QkFHTixNQUFNO3FCQUdOLE1BQU07eUJBR04sTUFBTTs4QkFHTixZQUFZLFNBQUMsb0JBQW9CLEVBQUUsQ0FBQyxRQUFRLENBQUM7NEJBTzdDLFlBQVksU0FBQyxrQkFBa0IsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXHJcbiAgQ29udGVudENoaWxkcmVuLCBEaXJlY3RpdmUsIEV2ZW50RW1pdHRlciwgSG9zdExpc3RlbmVyLCBJbnB1dCwgT3V0cHV0LCBRdWVyeUxpc3QsIFZpZXdDaGlsZHJlblxyXG59IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7U2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZX0gZnJvbSBcIi4vc2ltcGxlLWdyaWQtY29sdW1uLmRpcmVjdGl2ZVwiO1xyXG5pbXBvcnQge0Nka0RyYWcsIENka0RyYWdEcm9wLCBDZGtEcm9wTGlzdCwgbW92ZUl0ZW1JbkFycmF5fSBmcm9tIFwiQGFuZ3VsYXIvY2RrL2RyYWctZHJvcFwiO1xyXG5pbXBvcnQge1N1YmplY3R9IGZyb20gXCJyeGpzXCI7XHJcbmltcG9ydCB7Rm9ybU1hc3RlclNlcnZpY2V9IGZyb20gXCIuLi8uLi9jb3JlL3NlcnZpY2UvZm9ybS1tYXN0ZXIuc2VydmljZVwiO1xyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBCYXNlU2ltcGxlR3JpZENvbXBvbmVudCB7XHJcbiAgcHVibGljIHJlYWRvbmx5IE1JTl9DT0xVTU5fV0lEVEg6IG51bWJlciA9IDUwO1xyXG4gIHB1YmxpYyByZWFkb25seSBkYXRhQ2hhbmdlZDogU3ViamVjdDx2b2lkPiA9IG5ldyBTdWJqZWN0PHZvaWQ+KCk7XHJcblxyXG4gIEBDb250ZW50Q2hpbGRyZW4oU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZSkgc2V0IGNvbnRlbnQoY29sdW1uQ29tcG9uZW50czogUXVlcnlMaXN0PFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmU+KSB7XHJcbiAgICB0aGlzLl9zZXRDb2x1bW5zKGNvbHVtbkNvbXBvbmVudHMudG9BcnJheSgpKTtcclxuICAgIHRoaXMuX3ByZXBhcmVEYXRhKCk7XHJcbiAgfVxyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBzZXQgZGF0YSh2YWx1ZTogT2JqZWN0W10pIHtcclxuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcclxuICAgIHRoaXMuX3ByZXBhcmVEYXRhKCk7XHJcbiAgICB0aGlzLmRhdGFDaGFuZ2VkLm5leHQoKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXQgZGF0YSgpOiBPYmplY3RbXSB7XHJcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcclxuICB9XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBleHBvcnREYXRhKHZhbHVlOiBPYmplY3RbXSkge1xyXG4gICAgdGhpcy5fZXhwb3J0RGF0YSA9IHZhbHVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldCBleHBvcnREYXRhKCk6IE9iamVjdFtdIHtcclxuICAgIHJldHVybiB0aGlzLl9leHBvcnREYXRhO1xyXG4gIH1cclxuXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZHJhZ0Ryb3BFbmFibGVkOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHJlc2l6YWJsZTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKVxyXG4gIHB1YmxpYyBpbmxpbmVFZGl0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dFZGl0OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNob3dUb29sYmFyOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIGF1dG9BZGRSb3c6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgLyoqXHJcbiAgICogU2hvdWxkIGNvbXBvbmVudCBlbWl0IGRyYWcgYW5kIGRyb3AgYWN0aW9ucyBpbnN0ZWFkIG9mIGhhbmRsZVxyXG4gICAqICh1cGRhdGUgY29sbGVjdGlvbikgYnkgaXRzZWxmXHJcbiAgICovXHJcbiAgQElucHV0KClcclxuICBwdWJsaWMgZW1pdERyYWdEcm9wOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpXHJcbiAgcHVibGljIHNldCBleHRyYUNvbHVtbnModmFsdWU6IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmVbXSkge1xyXG4gICAgdGhpcy5fc2V0Q29sdW1ucyh2YWx1ZSk7XHJcbiAgfVxyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgb25Ecm9wOiBFdmVudEVtaXR0ZXI8e2Zyb206IG51bWJlciwgdG86IG51bWJlcn0+ID0gbmV3IEV2ZW50RW1pdHRlcjx7ZnJvbTogbnVtYmVyOyB0bzogbnVtYmVyfT4oKTtcclxuXHJcbiAgQE91dHB1dCgpXHJcbiAgcHVibGljIHNlbGVjdFJvdzogRXZlbnRFbWl0dGVyPHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZXNlbGVjdFJvdzogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgZGJsQ2xpY2tSb3c6IEV2ZW50RW1pdHRlcjx7fT4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgc2F2ZVJvdzogRXZlbnRFbWl0dGVyPHt9PiA9IG5ldyBFdmVudEVtaXR0ZXI8e30+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyBkZWxldGVSb3c6IEV2ZW50RW1pdHRlcjx7fT4gPSBuZXcgRXZlbnRFbWl0dGVyPHt9PigpO1xyXG5cclxuICBAT3V0cHV0KClcclxuICBwdWJsaWMgYWRkUm93OiBFdmVudEVtaXR0ZXI8dm9pZD4gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcblxyXG4gIEBPdXRwdXQoKVxyXG4gIHB1YmxpYyByb3dWaXNpYmxlOiBFdmVudEVtaXR0ZXI8e30+ID0gbmV3IEV2ZW50RW1pdHRlcjx7fT4oKTtcclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2Vtb3ZlJywgWyckZXZlbnQnXSlcclxuICBwdWJsaWMgaGFuZGxlTW91c2VNb3ZlKGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XHJcbiAgICBpZiAodGhpcy5yZXNpemFibGUgJiYgZXZlbnQuYnV0dG9ucyA9PT0gMSAmJiB0aGlzLl9jb2x1bW5Gb3JSZXNpemUpIHtcclxuICAgICAgLy8gdGhpcy5fY29sdW1uRm9yUmVzaXplLndpZHRoID0gdGhpcy5fY29sdW1uRm9yUmVzaXplLm9yaWdpbmFsV2lkdGggLSAodGhpcy5fc3RhcnRNb3VzZVBvc2l0aW9uWCAtIGV2ZW50LmNsaWVudFgpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQEhvc3RMaXN0ZW5lcignZG9jdW1lbnQ6bW91c2V1cCcsIFsnJGV2ZW50J10pXHJcbiAgcHVibGljIGhhbmRsZU1vdXNlVXAoZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N0YXJ0TW91c2VQb3NpdGlvblggPSB1bmRlZmluZWQ7XHJcbiAgICB0aGlzLl9jb2x1bW5Gb3JSZXNpemUgPSB1bmRlZmluZWQ7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgY29sdW1uczogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZVtdID0gW107XHJcbiAgcHVibGljIGhlYWRlckNvbHVtbnM6IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmVbXSA9IFtdO1xyXG4gIHB1YmxpYyBoZWFkZXJDb2x1bW5zQ29weTogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZVtdID0gW107XHJcblxyXG4gIHByb3RlY3RlZCBfZGF0YTogT2JqZWN0W10gPSBbXTtcclxuICBwcm90ZWN0ZWQgX2V4cG9ydERhdGE6IE9iamVjdFtdID0gW107XHJcbiAgcHJvdGVjdGVkIGRpc2FibGVkUm93czogbnVtYmVyW10gPSBbXTtcclxuXHJcbiAgcHJpdmF0ZSBfY29sdW1uRm9yUmVzaXplOiBTaW1wbGVHcmlkQ29sdW1uRGlyZWN0aXZlO1xyXG4gIHByaXZhdGUgX3ByZXBhcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcHJpdmF0ZSBfc3RhcnRNb3VzZVBvc2l0aW9uWDogbnVtYmVyO1xyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByb3RlY3RlZCBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdG9yUmVmXHJcbiAgKSB7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlU2l6ZXJNb3VzZURvd24oZXZlbnQ6IE1vdXNlRXZlbnQsIGNvbHVtbjogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fc2V0V2lkdGhPZkFsbENvbHVtbnMoKTtcclxuICAgIHRoaXMuX3N0YXJ0TW91c2VQb3NpdGlvblggPSBldmVudC5jbGllbnRYO1xyXG4gICAgdGhpcy5fY29sdW1uRm9yUmVzaXplID0gY29sdW1uO1xyXG4gICAgdGhpcy5fY29sdW1uRm9yUmVzaXplLm9yaWdpbmFsV2lkdGggPSB0aGlzLl9jb2x1bW5Gb3JSZXNpemUud2lkdGg7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaGFuZGxlQ2FuRHJhZ0Ryb3AoZHJhZzogQ2RrRHJhZywgZHJvcDogQ2RrRHJvcExpc3QpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGhhbmRsZURyb3AoZXZlbnQ6IENka0RyYWdEcm9wPE9iamVjdFtdPik6IHZvaWQge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgZnJvbTogbnVtYmVyID0gZXZlbnQucHJldmlvdXNJbmRleDtcclxuICAgICAgY29uc3QgdG86IG51bWJlciA9IGV2ZW50LmN1cnJlbnRJbmRleDtcclxuICAgICAgaWYgKGZyb20gPT09IHRvKSB7XHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmVtaXREcmFnRHJvcCkge1xyXG4gICAgICAgIHRoaXMub25Ecm9wLm5leHQoe2Zyb206IGZyb20sIHRvOiB0b30pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmRhdGEsIGZyb20sIHRvKTtcclxuICAgICAgfVxyXG4gICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKGUpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHVibGljIGlzU2luZ2xlQ29sdW1uUm93KHJvdzogT2JqZWN0KTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gcm93Lmhhc093blByb3BlcnR5KCdzaW5nbGVDb2x1bW5JbmRleCcpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNpbmdsZUNvbHVtbkluZGV4KHJvdzogT2JqZWN0KTogbnVtYmVyIHtcclxuICAgIHJldHVybiAocm93IGFzIGFueSkuc2luZ2xlQ29sdW1uSW5kZXg7XHJcbiAgfVxyXG5cclxuICBwcm90ZWN0ZWQgYXN5bmMgcHJlcGFyZURhdGFSb3cocm93OiBhbnksIGluZGV4OiBudW1iZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIF9zZXRDb2x1bW5zKGNvbHVtbnM6IFNpbXBsZUdyaWRDb2x1bW5EaXJlY3RpdmVbXSk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5zLnB1c2goLi4uY29sdW1ucyk7XHJcbiAgICB0aGlzLmNvbHVtbnMuc29ydCgoYSwgYikgPT4gYS5vcmRlciA8IGIub3JkZXIgPyAtMSA6IDEpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBfcHJlcGFyZURhdGEoKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBpZiAodGhpcy5fcHJlcGFyZWQpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgdGhpcy5kaXNhYmxlZFJvd3MubGVuZ3RoID0gMDtcclxuXHJcbiAgICBpZiAodGhpcy5jb2x1bW5zICYmIHRoaXMuY29sdW1ucy5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuaGVhZGVyQ29sdW1ucyA9IHRoaXMuY29sdW1ucy5maWx0ZXIoYyA9PiAhYy5zaW5nbGVDb2x1bW4pO1xyXG4gICAgICB0aGlzLmhlYWRlckNvbHVtbnNDb3B5ID0gdGhpcy5oZWFkZXJDb2x1bW5zO1xyXG4gICAgICBsZXQgc2luZ2xlQ29sdW1uSW5kZXg6IG51bWJlciA9IC0xO1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRoaXMuY29sdW1ucy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGlmICh0aGlzLmNvbHVtbnNbaV0uc2luZ2xlQ29sdW1uKSB7XHJcbiAgICAgICAgICBzaW5nbGVDb2x1bW5JbmRleCA9IGk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8gZmlyc3QgY2hlY2sgaWYgdGhlcmUncyBzaW5nbGUgY29sdW1uIGRhdGFcclxuICAgICAgaWYgKHRoaXMuZGF0YSAmJiB0aGlzLmRhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGlmIChzaW5nbGVDb2x1bW5JbmRleCA+IC0xKSB7XHJcbiAgICAgICAgICBjb25zdCBmaWVsZDogc3RyaW5nID0gdGhpcy5jb2x1bW5zW3NpbmdsZUNvbHVtbkluZGV4XS5maWVsZDtcclxuICAgICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7IC8vIHRoZW4gbWFyayByb3cgYXMgc2luZ2xlIGNvbHVtbiByb3dcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGF0YVtpXVtmaWVsZF0gIT09IHVuZGVmaW5lZCAmJiB0aGlzLmRhdGFbaV1bZmllbGRdICE9PSBudWxsICYmIHRoaXMuZGF0YVtpXVtmaWVsZF0gIT09IFwiXCIpIHtcclxuICAgICAgICAgICAgICAvLyBiaXQgbmFzdHkgdG8gYWRkIHByb3AsIGJ1dCBjb29sIGZvciBub3dcclxuICAgICAgICAgICAgICAodGhpcy5kYXRhW2ldIGFzIGFueSkuc2luZ2xlQ29sdW1uSW5kZXggPSBzaW5nbGVDb2x1bW5JbmRleDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBhd2FpdCB0aGlzLnByZXBhcmVEYXRhUm93KHRoaXMuZGF0YVtpXSwgaSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgdGhpcy5kYXRhLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMucHJlcGFyZURhdGFSb3codGhpcy5kYXRhW2pdLCBqKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuX3ByZXBhcmVkID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIHRoaXMuX3Jlc2l6ZUNvbHVtbnNUb0ZpdCgpO1xyXG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rpb24uZGV0ZWN0Q2hhbmdlcygpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBfcmVzaXplQ29sdW1uc1RvRml0KCk6IHZvaWQge1xyXG4gICAgY29uc3QgY2FsY3VsYXRlQ29sdW1uczogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZVtdID0gdGhpcy5jb2x1bW5zLmZpbHRlcihjID0+ICFjLmF1dG9GaXQgJiYgIWMud2lkdGgpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxjdWxhdGVDb2x1bW5zLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGNhbGN1bGF0ZUNvbHVtbnNbaV0ud2lkdGggPSBgJHsxMDAgLyBjYWxjdWxhdGVDb2x1bW5zLmxlbmd0aH0lYDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgX3NldFdpZHRoT2ZBbGxDb2x1bW5zKCk6IHZvaWQge1xyXG4gICAgdGhpcy5jb2x1bW5zLmZvckVhY2goKGNvbHVtbjogU2ltcGxlR3JpZENvbHVtbkRpcmVjdGl2ZSkgPT4ge1xyXG4gICAgICBpZiAoKGNvbHVtbi53aWR0aCA9PT0gdW5kZWZpbmVkIHx8IGNvbHVtbi53aWR0aCA9PT0gbnVsbCkgJiYgY29sdW1uLmVsZW1lbnRSZWYgJiYgY29sdW1uLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCkge1xyXG4gICAgICAgIGNvbnN0IHJlY3Q6IENsaWVudFJlY3QgPSBjb2x1bW4uZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgIGNvbHVtbi53aWR0aCA9IHJlY3Qud2lkdGg7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbn1cclxuIl19