igniteui-angular 12.3.16 → 12.3.17

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.
Files changed (42) hide show
  1. package/README.md +252 -252
  2. package/bundles/igniteui-angular.umd.js +14 -14
  3. package/bundles/igniteui-angular.umd.js.map +1 -1
  4. package/esm2015/lib/carousel/carousel-base.js +1 -1
  5. package/esm2015/lib/carousel/public_api.js +1 -1
  6. package/esm2015/lib/grids/common/cell.interface.js +1 -1
  7. package/esm2015/lib/grids/filtering/advanced-filtering/advanced-filtering-dialog.component.js +2 -2
  8. package/esm2015/lib/grids/filtering/excel-style/excel-style-header.component.js +2 -2
  9. package/esm2015/lib/grids/filtering/excel-style/public_api.js +1 -1
  10. package/esm2015/lib/grids/grid-public-cell.js +1 -1
  11. package/esm2015/lib/grids/grid-public-row.js +1 -1
  12. package/esm2015/lib/grids/grouping/group-by-area.directive.js +1 -1
  13. package/esm2015/lib/grids/toolbar/grid-toolbar-advanced-filtering.component.js +2 -2
  14. package/esm2015/lib/grids/toolbar/grid-toolbar-exporter.component.js +2 -2
  15. package/esm2015/lib/grids/toolbar/grid-toolbar-hiding.component.js +2 -2
  16. package/esm2015/lib/grids/toolbar/grid-toolbar-pinning.component.js +2 -2
  17. package/esm2015/lib/grids/tree-grid/tree-grid.filtering.strategy.js +1 -1
  18. package/esm2015/lib/tabs/bottom-nav/bottom-nav-content.component.js +2 -2
  19. package/esm2015/lib/tabs/bottom-nav/bottom-nav-header.component.js +2 -2
  20. package/esm2015/lib/tabs/bottom-nav/bottom-nav-item.component.js +2 -2
  21. package/esm2015/lib/tabs/bottom-nav/bottom-nav.component.js +2 -2
  22. package/esm2015/lib/tabs/bottom-nav/bottom-nav.directives.js +1 -1
  23. package/esm2015/lib/tabs/bottom-nav/bottom-nav.module.js +1 -1
  24. package/esm2015/lib/tabs/bottom-nav/public_api.js +1 -1
  25. package/esm2015/lib/tabs/public_api.js +1 -1
  26. package/esm2015/lib/tabs/tab-content.directive.js +1 -1
  27. package/esm2015/lib/tabs/tab-header.directive.js +1 -1
  28. package/esm2015/lib/tabs/tab-item.directive.js +1 -1
  29. package/esm2015/lib/tabs/tabs/public_api.js +1 -1
  30. package/esm2015/lib/tabs/tabs/tab-content.component.js +2 -2
  31. package/esm2015/lib/tabs/tabs/tab-header.component.js +2 -2
  32. package/esm2015/lib/tabs/tabs/tab-item.component.js +2 -2
  33. package/esm2015/lib/tabs/tabs/tabs.component.js +2 -2
  34. package/esm2015/lib/tabs/tabs/tabs.directives.js +1 -1
  35. package/esm2015/lib/tabs/tabs/tabs.module.js +1 -1
  36. package/esm2015/lib/tabs/tabs.base.js +1 -1
  37. package/esm2015/lib/tabs/tabs.directive.js +1 -1
  38. package/fesm2015/igniteui-angular.js +14 -14
  39. package/fesm2015/igniteui-angular.js.map +1 -1
  40. package/igniteui-angular.metadata.json +1 -1
  41. package/migrations/update-12_1_0/changes/classes.json +28 -28
  42. package/package.json +1 -1
@@ -254,7 +254,7 @@ export class IgxTabsComponent extends IgxTabsDirective {
254
254
  IgxTabsComponent.decorators = [
255
255
  { type: Component, args: [{
256
256
  selector: 'igx-tabs',
257
- template: "<div #headerContainer class=\"igx-tabs__header\">\r\n <button\r\n #leftButton\r\n igxButton=\"icon\"\r\n igxRipple\r\n class=\"igx-tabs__header-button\"\r\n (click)=\"scrollLeft()\"\r\n >\r\n <igx-icon>navigate_before</igx-icon>\r\n </button>\r\n <div #viewPort class=\"igx-tabs__header-content\">\r\n <div\r\n #itemsWrapper\r\n class=\"igx-tabs__header-wrapper\" \r\n role=\"tablist\"\r\n >\r\n <div \r\n #itemsContainer\r\n class=\"igx-tabs__header-scroll\"\r\n [ngClass]=\"resolveHeaderScrollClasses()\"\r\n >\r\n <ng-container *ngFor=\"let tab of items; let i = index\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div\r\n #selectedIndicator\r\n *ngIf=\"items.length > 0\"\r\n class=\"igx-tabs__header-active-indicator\"\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n <button\r\n #rightButton\r\n igxButton=\"icon\"\r\n igxRipple\r\n class=\"igx-tabs__header-button\"\r\n (click)=\"scrollRight()\"\r\n >\r\n <igx-icon>navigate_next</igx-icon>\r\n </button>\r\n</div>\r\n<div class=\"igx-tabs__panels\">\r\n <ng-container *ngFor=\"let tab of items; let i = index\">\r\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\r\n </ng-container>\r\n</div>\r\n",
257
+ template: "<div #headerContainer class=\"igx-tabs__header\">\n <button\n #leftButton\n igxButton=\"icon\"\n igxRipple\n class=\"igx-tabs__header-button\"\n (click)=\"scrollLeft()\"\n >\n <igx-icon>navigate_before</igx-icon>\n </button>\n <div #viewPort class=\"igx-tabs__header-content\">\n <div\n #itemsWrapper\n class=\"igx-tabs__header-wrapper\" \n role=\"tablist\"\n >\n <div \n #itemsContainer\n class=\"igx-tabs__header-scroll\"\n [ngClass]=\"resolveHeaderScrollClasses()\"\n >\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n </ng-container>\n </div>\n <div\n #selectedIndicator\n *ngIf=\"items.length > 0\"\n class=\"igx-tabs__header-active-indicator\"\n >\n </div>\n </div>\n </div>\n <button\n #rightButton\n igxButton=\"icon\"\n igxRipple\n class=\"igx-tabs__header-button\"\n (click)=\"scrollRight()\"\n >\n <igx-icon>navigate_next</igx-icon>\n </button>\n</div>\n<div class=\"igx-tabs__panels\">\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n </ng-container>\n</div>\n",
258
258
  providers: [{ provide: IgxTabsBase, useExisting: IgxTabsComponent }]
259
259
  },] }
260
260
  ];
@@ -274,4 +274,4 @@ IgxTabsComponent.propDecorators = {
274
274
  rightButton: [{ type: ViewChild, args: ['rightButton',] }],
275
275
  defaultClass: [{ type: HostBinding, args: ['class.igx-tabs',] }]
276
276
  };
277
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvdGFicy90YWJzL3RhYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7SUFDbkMsS0FBSyxFQUFFLE9BQU87SUFDZCxHQUFHLEVBQUUsS0FBSztJQUNWLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxTQUFTO0NBQ3JCLENBQUMsQ0FBQztBQUVILGNBQWM7QUFDZCxJQUFLLG9CQUlKO0FBSkQsV0FBSyxvQkFBb0I7SUFDckIsMkNBQW1CLENBQUE7SUFDbkIseUNBQWlCLENBQUE7SUFDakIsc0RBQThCLENBQUE7QUFDbEMsQ0FBQyxFQUpJLG9CQUFvQixLQUFwQixvQkFBb0IsUUFJeEI7QUFJRCxjQUFjO0FBQ2QsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRXBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQU9ILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUEyRGxELFlBQVksT0FBeUIsRUFBRSxHQUFzQixFQUFVLE1BQWM7UUFDakYsS0FBSyxDQUFD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QUFXLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQzthQUN2RTs7O1lBM0RRLGdCQUFnQjtZQUNELGlCQUFpQjtZQUE2QyxNQUFNOzs7MkJBaUV2RixLQUFLOzhCQWNMLFNBQVMsU0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7dUJBSTdDLFNBQVMsU0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzJCQUl0QyxTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs2QkFJMUMsU0FBUyxTQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQ0FJNUMsU0FBUyxTQUFDLG1CQUFtQjt5QkFJN0IsU0FBUyxTQUFDLFlBQVk7MEJBSXRCLFNBQVMsU0FBQyxhQUFhOzJCQUl2QixXQUFXLFNBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xyXG5pbXBvcnQgeyBBZnRlclZpZXdJbml0LCBDaGFuZ2VEZXRlY3RvclJlZiwgQ29tcG9uZW50LCBFbGVtZW50UmVmLCBIb3N0QmluZGluZywgSW5wdXQsIE5nWm9uZSwgT25EZXN0cm95LCBWaWV3Q2hpbGQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgZ2V0UmVzaXplT2JzZXJ2ZXIsIG1rZW51bSB9IGZyb20gJy4uLy4uL2NvcmUvdXRpbHMnO1xyXG5pbXBvcnQgeyBJZ3hUYWJzQmFzZSB9IGZyb20gJy4uL3RhYnMuYmFzZSc7XHJcbmltcG9ydCB7IElneFRhYnNEaXJlY3RpdmUgfSBmcm9tICcuLi90YWJzLmRpcmVjdGl2ZSc7XHJcblxyXG5leHBvcnQgY29uc3QgSWd4VGFic0FsaWdubWVudCA9IG1rZW51bSh7XHJcbiAgICBzdGFydDogJ3N0YXJ0JyxcclxuICAgIGVuZDogJ2VuZCcsXHJcbiAgICBjZW50ZXI6ICdjZW50ZXInLFxyXG4gICAganVzdGlmeTogJ2p1c3RpZnknXHJcbn0pO1xyXG5cclxuLyoqIEBoaWRkZW4gKi9cclxuZW51bSBUYWJTY3JvbGxCdXR0b25TdHlsZSB7XHJcbiAgICBWaXNpYmxlID0gJ3Zpc2libGUnLFxyXG4gICAgSGlkZGVuID0gJ2hpZGRlbicsXHJcbiAgICBOb3REaXNwbGF5ZWQgPSAnbm90X2Rpc3BsYXllZCdcclxufVxyXG5cclxuZXhwb3J0IHR5cGUgSWd4VGFic0FsaWdubWVudCA9ICh0eXBlb2YgSWd4VGFic0FsaWdubWVudClba2V5b2YgdHlwZW9mIElneFRhYnNBbGlnbm1lbnRdO1xyXG5cclxuLyoqIEBoaWRkZW4gKi9cclxubGV0IE5FWFRfVEFCX0lEID0gMDtcclxuXHJcbi8qKlxyXG4gKiBUYWJzIGNvbXBvbmVudCBpcyB1c2VkIHRvIG9yZ2FuaXplIG9yIHN3aXRjaCBiZXR3ZWVuIHNpbWlsYXIgZGF0YSBzZXRzLlxyXG4gKlxyXG4gKiBAaWd4TW9kdWxlIElneFRhYnNNb2R1bGVcclxuICpcclxuICogQGlneFRoZW1lIGlneC10YWJzLXRoZW1lXHJcbiAqXHJcbiAqIEBpZ3hLZXl3b3JkcyB0YWJzXHJcbiAqXHJcbiAqIEBpZ3hHcm91cCBMYXlvdXRzXHJcbiAqXHJcbiAqIEByZW1hcmtzXHJcbiAqIFRoZSBJZ25pdGUgVUkgZm9yIEFuZ3VsYXIgVGFicyBjb21wb25lbnQgcGxhY2VzIHRhYnMgYXQgdGhlIHRvcCBhbmQgYWxsb3dzIGZvciBzY3JvbGxpbmcgd2hlbiB0aGVyZSBhcmUgbXVsdGlwbGUgdGFiIGl0ZW1zIG9uIHRoZSBzY3JlZW4uXHJcbiAqXHJcbiAqIEBleGFtcGxlXHJcbiAqIGBgYGh0bWxcclxuICogPGlneC10YWJzPlxyXG4gKiAgICAgPGlneC10YWItaXRlbT5cclxuICogICAgICAgICA8aWd4LXRhYi1oZWFkZXI+XHJcbiAqICAgICAgICAgICAgIDxpZ3gtaWNvbiBpZ3hUYWJIZWFkZXJJY29uPmZvbGRlcjwvaWd4LWljb24+XHJcbiAqICAgICAgICAgICAgIDxzcGFuIGlneFRhYkhlYWRlckxhYmVsPlRhYiAxPC9zcGFuPlxyXG4gKiAgICAgICAgIDwvaWd4LXRhYi1oZWFkZXI+XHJcbiAqICAgICAgICAgPGlneC10YWItY29udGVudD5cclxuICogICAgICAgICAgICAgQ29udGVudCAxXHJcbiAqICAgICAgICAgPC9pZ3gtdGFiLWNvbnRlbnQ+XHJcbiAqICAgICA8L2lneC10YWItaXRlbT5cclxuICogICAgIC4uLlxyXG4gKiA8L2lneC10YWJzPlxyXG4gKiBgYGBcclxuICovXHJcbkBDb21wb25lbnQoe1xyXG4gICAgc2VsZWN0b3I6ICdpZ3gtdGFicycsXHJcbiAgICB0ZW1wbGF0ZVVybDogJ3RhYnMuY29tcG9uZW50Lmh0bWwnLFxyXG4gICAgcHJvdmlkZXJzOiBbeyBwcm92aWRlOiBJZ3hUYWJzQmFzZSwgdXNlRXhpc3Rpbmc6IElneFRhYnNDb21wb25lbnQgfV1cclxufSlcclxuXHJcbmV4cG9ydCBjbGFzcyBJZ3hUYWJzQ29tcG9uZW50IGV4dGVuZHMgSWd4VGFic0RpcmVjdGl2ZSBpbXBsZW1lbnRzIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgdGFiIGFsaWdubWVudC4gRGVmYXVsdHMgdG8gYHN0YXJ0YC5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgdGFiQWxpZ25tZW50KCk6IHN0cmluZyB8IElneFRhYnNBbGlnbm1lbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl90YWJBbGlnbm1lbnQ7XHJcbiAgICB9O1xyXG5cclxuICAgIHB1YmxpYyBzZXQgdGFiQWxpZ25tZW50KHZhbHVlOiBzdHJpbmcgfCBJZ3hUYWJzQWxpZ25tZW50KSB7XHJcbiAgICAgICAgdGhpcy5fdGFiQWxpZ25tZW50ID0gdmFsdWU7XHJcbiAgICAgICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCdXR0b25zKCk7XHJcbiAgICAgICAgICAgIHRoaXMucmVhbGlnblNlbGVjdGVkSW5kaWNhdG9yKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIEBWaWV3Q2hpbGQoJ2hlYWRlckNvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgaGVhZGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgQFZpZXdDaGlsZCgndmlld1BvcnQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxyXG4gICAgcHVibGljIHZpZXdQb3J0OiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgQFZpZXdDaGlsZCgnaXRlbXNXcmFwcGVyJywgeyBzdGF0aWM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBpdGVtc1dyYXBwZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBAVmlld0NoaWxkKCdpdGVtc0NvbnRhaW5lcicsIHsgc3RhdGljOiB0cnVlIH0pXHJcbiAgICBwdWJsaWMgaXRlbXNDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBAVmlld0NoaWxkKCdzZWxlY3RlZEluZGljYXRvcicpXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWRJbmRpY2F0b3I6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xyXG5cclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBAVmlld0NoaWxkKCdsZWZ0QnV0dG9uJylcclxuICAgIHB1YmxpYyBsZWZ0QnV0dG9uOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgQFZpZXdDaGlsZCgncmlnaHRCdXR0b24nKVxyXG4gICAgcHVibGljIHJpZ2h0QnV0dG9uOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtdGFicycpXHJcbiAgICBwdWJsaWMgZGVmYXVsdENsYXNzID0gdHJ1ZTtcclxuXHJcbiAgICAvKiogIEBoaWRkZW4gKi9cclxuICAgICBwdWJsaWMgb2Zmc2V0ID0gMDtcclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgcHJvdGVjdGVkIGNvbXBvbmVudE5hbWUgPSAnaWd4LXRhYnMnO1xyXG5cclxuICAgIHByaXZhdGUgX3RhYkFsaWdubWVudDogc3RyaW5nIHwgSWd4VGFic0FsaWdubWVudCA9ICdzdGFydCc7XHJcbiAgICBwcml2YXRlIF9yZXNpemVPYnNlcnZlcjogUmVzaXplT2JzZXJ2ZXI7XHJcblxyXG4gICAgY29uc3RydWN0b3IoYnVpbGRlcjogQW5pbWF0aW9uQnVpbGRlciwgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xyXG4gICAgICAgIHN1cGVyKGJ1aWxkZXIsIGNkcik7XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ0FmdGVyVmlld0luaXQoKTtcclxuXHJcbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLl9yZXNpemVPYnNlcnZlciA9IG5ldyAoZ2V0UmVzaXplT2JzZXJ2ZXIoKSkoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCdXR0b25zKCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWxpZ25TZWxlY3RlZEluZGljYXRvcigpO1xyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLmhlYWRlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50KTtcclxuICAgICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnZpZXdQb3J0Lm5hdGl2ZUVsZW1lbnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaGlkZGVuIEBpbnRlcm5hbCAqL1xyXG4gICAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XHJcblxyXG4gICAgICAgIHRoaXMubmdab25lLnJ1bk91dHNpZGVBbmd1bGFyKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgcHVibGljIHNjcm9sbExlZnQoKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGwoZmFsc2UpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBwdWJsaWMgc2Nyb2xsUmlnaHQoKSB7XHJcbiAgICAgICAgdGhpcy5zY3JvbGwodHJ1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHB1YmxpYyByZWFsaWduU2VsZWN0ZWRJbmRpY2F0b3IoKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRleCA+PTAgJiYgdGhpcy5zZWxlY3RlZEluZGV4IDwgdGhpcy5pdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgICAgY29uc3QgaGVhZGVyID0gdGhpcy5pdGVtcy5nZXQodGhpcy5zZWxlY3RlZEluZGV4KS5oZWFkZXJDb21wb25lbnQubmF0aXZlRWxlbWVudDtcclxuICAgICAgICAgICAgdGhpcy5hbGlnblNlbGVjdGVkSW5kaWNhdG9yKGhlYWRlciwgMCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBwdWJsaWMgcmVzb2x2ZUhlYWRlclNjcm9sbENsYXNzZXMoKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgJ2lneC10YWJzX19oZWFkZXItc2Nyb2xsLS1zdGFydCc6IHRoaXMudGFiQWxpZ25tZW50ID09PSAnc3RhcnQnLFxyXG4gICAgICAgICAgICAnaWd4LXRhYnNfX2hlYWRlci1zY3JvbGwtLWVuZCc6IHRoaXMudGFiQWxpZ25tZW50ID09PSAnZW5kJyxcclxuICAgICAgICAgICAgJ2lneC10YWJzX19oZWFkZXItc2Nyb2xsLS1jZW50ZXInOiB0aGlzLnRhYkFsaWdubWVudCA9PT0gJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICdpZ3gtdGFic19faGVhZGVyLXNjcm9sbC0tanVzdGlmeSc6IHRoaXMudGFiQWxpZ25tZW50ID09PSAnanVzdGlmeScsXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgcHJvdGVjdGVkIHNjcm9sbFRhYkhlYWRlckludG9WaWV3KCkge1xyXG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICBjb25zdCB0YWJJdGVtcyA9IHRoaXMuaXRlbXMudG9BcnJheSgpO1xyXG4gICAgICAgICAgICBjb25zdCB0YWJIZWFkZXJOYXRpdmVFbGVtZW50ID0gdGFiSXRlbXNbdGhpcy5zZWxlY3RlZEluZGV4XS5oZWFkZXJDb21wb25lbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIC8vIFNjcm9sbCBsZWZ0IGlmIHRoZXJlIGlzIG5lZWRcclxuICAgICAgICAgICAgaWYgKHRhYkhlYWRlck5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCA8IHRoaXMub2Zmc2V0KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnQodGFiSGVhZGVyTmF0aXZlRWxlbWVudCwgZmFsc2UpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAvLyBTY3JvbGwgcmlnaHQgaWYgdGhlcmUgaXMgbmVlZFxyXG4gICAgICAgICAgICBjb25zdCB2aWV3UG9ydE9mZnNldFdpZHRoID0gdGhpcy52aWV3UG9ydC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgICAgICBjb25zdCBkZWx0YSA9ICh0YWJIZWFkZXJOYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgKyB0YWJIZWFkZXJOYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSAtICh2aWV3UG9ydE9mZnNldFdpZHRoICsgdGhpcy5vZmZzZXQpO1xyXG5cclxuICAgICAgICAgICAgLy8gRml4IGZvciBJRSAxMSwgYSBkaWZmZXJlbmNlIGlzIGFjY3VtdWxhdGVkIGZyb20gdGhlIHdpZHRocyBjYWxjdWxhdGlvbnNcclxuICAgICAgICAgICAgaWYgKGRlbHRhID4gMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxFbGVtZW50KHRhYkhlYWRlck5hdGl2ZUVsZW1lbnQsIHRydWUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0aGlzLmFsaWduU2VsZWN0ZWRJbmRpY2F0b3IodGFiSGVhZGVyTmF0aXZlRWxlbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5oaWRlU2VsZWN0ZWRJbmRpY2F0b3IoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHByb3RlY3RlZCBnZXROZXh0VGFiSWQoKSB7XHJcbiAgICAgICAgcmV0dXJuIE5FWFRfVEFCX0lEKys7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHByb3RlY3RlZCBvbkl0ZW1DaGFuZ2VzKCkge1xyXG4gICAgICAgIHN1cGVyLm9uSXRlbUNoYW5nZXMoKTtcclxuXHJcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQnV0dG9ucygpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgYWxpZ25TZWxlY3RlZEluZGljYXRvcihlbGVtZW50OiBIVE1MRWxlbWVudCwgZHVyYXRpb24gPSAwLjMpOiB2b2lkIHtcclxuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluZGljYXRvcikge1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kaWNhdG9yLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGljYXRvci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGR1cmF0aW9uID4gMCA/IGAke2R1cmF0aW9ufXNgIDogJ2luaXRpYWwnO1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kaWNhdG9yLm5hdGl2ZUVsZW1lbnQuc3R5bGUud2lkdGggPSBgJHtlbGVtZW50Lm9mZnNldFdpZHRofXB4YDtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGljYXRvci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zZm9ybSA9IGB0cmFuc2xhdGUoJHtlbGVtZW50Lm9mZnNldExlZnR9cHgpYDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBoaWRlU2VsZWN0ZWRJbmRpY2F0b3IoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRpY2F0b3IpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGljYXRvci5uYXRpdmVFbGVtZW50LnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzY3JvbGwoc2Nyb2xsUmlnaHQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB0YWJzQXJyYXkgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcclxuXHJcbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRhYnNBcnJheS5sZW5ndGg7IGluZGV4KyspIHtcclxuICAgICAgICAgICAgY29uc3QgdGFiID0gdGFic0FycmF5W2luZGV4XTtcclxuICAgICAgICAgICAgY29uc3QgZWxlbWVudCA9IHRhYi5oZWFkZXJDb21wb25lbnQubmF0aXZlRWxlbWVudDtcclxuXHJcbiAgICAgICAgICAgIGlmIChzY3JvbGxSaWdodCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQub2Zmc2V0V2lkdGggKyBlbGVtZW50Lm9mZnNldExlZnQgPiB0aGlzLnZpZXdQb3J0Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGggKyB0aGlzLm9mZnNldCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsRWxlbWVudChlbGVtZW50LCBzY3JvbGxSaWdodCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5vZmZzZXRMZWZ0ID49IHRoaXMub2Zmc2V0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxFbGVtZW50KHRhYnNBcnJheVtpbmRleCAtIDFdLmhlYWRlckNvbXBvbmVudC5uYXRpdmVFbGVtZW50LCBzY3JvbGxSaWdodCk7XHJcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzY3JvbGxFbGVtZW50KGVsZW1lbnQ6IGFueSwgc2Nyb2xsUmlnaHQ6IGJvb2xlYW4pOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB2aWV3UG9ydFdpZHRoID0gdGhpcy52aWV3UG9ydC5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG5cclxuICAgICAgICB0aGlzLm9mZnNldCA9IChzY3JvbGxSaWdodCkgPyBlbGVtZW50Lm9mZnNldFdpZHRoICsgZWxlbWVudC5vZmZzZXRMZWZ0IC0gdmlld1BvcnRXaWR0aCA6IGVsZW1lbnQub2Zmc2V0TGVmdDtcclxuICAgICAgICB0aGlzLnZpZXdQb3J0Lm5hdGl2ZUVsZW1lbnQuc2Nyb2xsTGVmdCA9IHRoaXMub2Zmc2V0O1xyXG4gICAgICAgIHRoaXMudXBkYXRlU2Nyb2xsQnV0dG9ucygpO1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdXBkYXRlU2Nyb2xsQnV0dG9ucygpIHtcclxuICAgICAgICBjb25zdCBpdGVtc0NvbnRhaW5lcldpZHRoID0gdGhpcy5nZXRUYWJJdGVtc0NvbnRhaW5lcldpZHRoKCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGxlZnRCdXR0b25TdHlsZSA9IHRoaXMucmVzb2x2ZUxlZnRTY3JvbGxCdXR0b25TdHlsZShpdGVtc0NvbnRhaW5lcldpZHRoKTtcclxuICAgICAgICB0aGlzLnNldFNjcm9sbEJ1dHRvblN0eWxlKHRoaXMubGVmdEJ1dHRvbi5uYXRpdmVFbGVtZW50LCBsZWZ0QnV0dG9uU3R5bGUpO1xyXG5cclxuICAgICAgICBjb25zdCByaWdodEJ1dHRvblN0eWxlID0gdGhpcy5yZXNvbHZlUmlnaHRTY3JvbGxCdXR0b25TdHlsZShpdGVtc0NvbnRhaW5lcldpZHRoKTtcclxuICAgICAgICB0aGlzLnNldFNjcm9sbEJ1dHRvblN0eWxlKHRoaXMucmlnaHRCdXR0b24ubmF0aXZlRWxlbWVudCwgcmlnaHRCdXR0b25TdHlsZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzZXRTY3JvbGxCdXR0b25TdHlsZShidXR0b246IEhUTUxFbGVtZW50LCBidXR0b25TdHlsZTogVGFiU2Nyb2xsQnV0dG9uU3R5bGUpIHtcclxuICAgICAgICBpZiAoYnV0dG9uU3R5bGUgPT09IFRhYlNjcm9sbEJ1dHRvblN0eWxlLlZpc2libGUpIHtcclxuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLnZpc2liaWxpdHkgPSAndmlzaWJsZSc7XHJcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChidXR0b25TdHlsZSA9PT0gVGFiU2Nyb2xsQnV0dG9uU3R5bGUuSGlkZGVuKSB7XHJcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS52aXNpYmlsaXR5ID0gJ2hpZGRlbic7XHJcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJyc7XHJcbiAgICAgICAgfSBlbHNlIGlmIChidXR0b25TdHlsZSA9PT0gVGFiU2Nyb2xsQnV0dG9uU3R5bGUuTm90RGlzcGxheWVkKSB7XHJcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByaXZhdGUgcmVzb2x2ZUxlZnRTY3JvbGxCdXR0b25TdHlsZShpdGVtc0NvbnRhaW5lcldpZHRoOiBudW1iZXIpOiBUYWJTY3JvbGxCdXR0b25TdHlsZSB7XHJcbiAgICAgICAgY29uc3QgaGVhZGVyQ29udGFpbmVyV2lkdGggPSB0aGlzLmhlYWRlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xyXG4gICAgICAgIGNvbnN0IG9mZnNldCA9IHRoaXMub2Zmc2V0O1xyXG5cclxuICAgICAgICBpZiAob2Zmc2V0ID09PSAwKSB7XHJcbiAgICAgICAgICAgIC8vIEZpeCBmb3IgSUUgMTEsIGEgZGlmZmVyZW5jZSBpcyBhY2N1bXVsYXRlZCBmcm9tIHRoZSB3aWR0aHMgY2FsY3VsYXRpb25zLlxyXG4gICAgICAgICAgICBpZiAoaXRlbXNDb250YWluZXJXaWR0aCAtIGhlYWRlckNvbnRhaW5lcldpZHRoIDw9IDEpIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBUYWJTY3JvbGxCdXR0b25TdHlsZS5Ob3REaXNwbGF5ZWQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIFRhYlNjcm9sbEJ1dHRvblN0eWxlLkhpZGRlbjtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICByZXR1cm4gVGFiU2Nyb2xsQnV0dG9uU3R5bGUuVmlzaWJsZTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSByZXNvbHZlUmlnaHRTY3JvbGxCdXR0b25TdHlsZShpdGVtc0NvbnRhaW5lcldpZHRoOiBudW1iZXIpOiBUYWJTY3JvbGxCdXR0b25TdHlsZSB7XHJcbiAgICAgICAgY29uc3Qgdmlld1BvcnRXaWR0aCA9IHRoaXMudmlld1BvcnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcclxuICAgICAgICBjb25zdCBoZWFkZXJDb250YWluZXJXaWR0aCA9IHRoaXMuaGVhZGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XHJcbiAgICAgICAgY29uc3Qgb2Zmc2V0ID0gdGhpcy5vZmZzZXQ7XHJcbiAgICAgICAgY29uc3QgdG90YWwgPSBvZmZzZXQgKyB2aWV3UG9ydFdpZHRoO1xyXG5cclxuICAgICAgICAvLyBGaXggZm9yIElFIDExLCBhIGRpZmZlcmVuY2UgaXMgYWNjdW11bGF0ZWQgZnJvbSB0aGUgd2lkdGhzIGNhbGN1bGF0aW9ucy5cclxuICAgICAgICBpZiAoaXRlbXNDb250YWluZXJXaWR0aCAtIGhlYWRlckNvbnRhaW5lcldpZHRoIDw9IDEgJiYgb2Zmc2V0ID09PSAwKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUYWJTY3JvbGxCdXR0b25TdHlsZS5Ob3REaXNwbGF5ZWQ7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoaXRlbXNDb250YWluZXJXaWR0aCA+IHRvdGFsKSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUYWJTY3JvbGxCdXR0b25TdHlsZS5WaXNpYmxlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHJldHVybiBUYWJTY3JvbGxCdXR0b25TdHlsZS5IaWRkZW47XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgZ2V0VGFiSXRlbXNDb250YWluZXJXaWR0aCgpIHtcclxuICAgICAgICAvLyBXZSB1c2UgdGhpcyBoYWNreSB3YXkgdG8gZ2V0IHRoZSB3aWR0aCBvZiB0aGUgaXRlbXNDb250YWluZXIsXHJcbiAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBpbmNvbnNpc3RlbmN5IGluIElFIHdlIGNhbm5vdCB1c2Ugb2Zmc2V0V2lkdGggb3Igc2Nyb2xsT2Zmc2V0LlxyXG4gICAgICAgIGNvbnN0IGl0ZW1zQ29udGFpbmVyQ2hpbGRyZW5Db3VudCA9IHRoaXMuaXRlbXNDb250YWluZXIubmF0aXZlRWxlbWVudC5jaGlsZHJlbi5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGl0ZW1zQ29udGFpbmVyV2lkdGggPSAwO1xyXG5cclxuICAgICAgICBpZiAoaXRlbXNDb250YWluZXJDaGlsZHJlbkNvdW50ID4gMSkge1xyXG4gICAgICAgICAgICBjb25zdCBsYXN0VGFiID0gdGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2l0ZW1zQ29udGFpbmVyQ2hpbGRyZW5Db3VudCAtIDFdIGFzIEhUTUxFbGVtZW50O1xyXG4gICAgICAgICAgICBpdGVtc0NvbnRhaW5lcldpZHRoID0gbGFzdFRhYi5vZmZzZXRMZWZ0ICsgbGFzdFRhYi5vZmZzZXRXaWR0aDtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHJldHVybiBpdGVtc0NvbnRhaW5lcldpZHRoO1xyXG4gICAgfVxyXG59XHJcblxyXG4iXX0=
277
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvdGFicy90YWJzL3RhYnMuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ3ZELE9BQU8sRUFBaUIsaUJBQWlCLEVBQUUsU0FBUyxFQUFjLFdBQVcsRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFhLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUMxSSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDN0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUMzQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUVyRCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLENBQUM7SUFDbkMsS0FBSyxFQUFFLE9BQU87SUFDZCxHQUFHLEVBQUUsS0FBSztJQUNWLE1BQU0sRUFBRSxRQUFRO0lBQ2hCLE9BQU8sRUFBRSxTQUFTO0NBQ3JCLENBQUMsQ0FBQztBQUVILGNBQWM7QUFDZCxJQUFLLG9CQUlKO0FBSkQsV0FBSyxvQkFBb0I7SUFDckIsMkNBQW1CLENBQUE7SUFDbkIseUNBQWlCLENBQUE7SUFDakIsc0RBQThCLENBQUE7QUFDbEMsQ0FBQyxFQUpJLG9CQUFvQixLQUFwQixvQkFBb0IsUUFJeEI7QUFJRCxjQUFjO0FBQ2QsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFDO0FBRXBCOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQTZCRztBQU9ILE1BQU0sT0FBTyxnQkFBaUIsU0FBUSxnQkFBZ0I7SUEyRGxELFlBQVksT0FBeUIsRUFBRSxHQUFzQixFQUFVLE1BQWM7UUFDakYsS0FBSyxDQUFD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QUFXLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQzthQUN2RTs7O1lBM0RRLGdCQUFnQjtZQUNELGlCQUFpQjtZQUE2QyxNQUFNOzs7MkJBaUV2RixLQUFLOzhCQWNMLFNBQVMsU0FBQyxpQkFBaUIsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUU7dUJBSTdDLFNBQVMsU0FBQyxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFOzJCQUl0QyxTQUFTLFNBQUMsY0FBYyxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTs2QkFJMUMsU0FBUyxTQUFDLGdCQUFnQixFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRTtnQ0FJNUMsU0FBUyxTQUFDLG1CQUFtQjt5QkFJN0IsU0FBUyxTQUFDLFlBQVk7MEJBSXRCLFNBQVMsU0FBQyxhQUFhOzJCQUl2QixXQUFXLFNBQUMsZ0JBQWdCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5pbWF0aW9uQnVpbGRlciB9IGZyb20gJ0Bhbmd1bGFyL2FuaW1hdGlvbnMnO1xuaW1wb3J0IHsgQWZ0ZXJWaWV3SW5pdCwgQ2hhbmdlRGV0ZWN0b3JSZWYsIENvbXBvbmVudCwgRWxlbWVudFJlZiwgSG9zdEJpbmRpbmcsIElucHV0LCBOZ1pvbmUsIE9uRGVzdHJveSwgVmlld0NoaWxkIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBnZXRSZXNpemVPYnNlcnZlciwgbWtlbnVtIH0gZnJvbSAnLi4vLi4vY29yZS91dGlscyc7XG5pbXBvcnQgeyBJZ3hUYWJzQmFzZSB9IGZyb20gJy4uL3RhYnMuYmFzZSc7XG5pbXBvcnQgeyBJZ3hUYWJzRGlyZWN0aXZlIH0gZnJvbSAnLi4vdGFicy5kaXJlY3RpdmUnO1xuXG5leHBvcnQgY29uc3QgSWd4VGFic0FsaWdubWVudCA9IG1rZW51bSh7XG4gICAgc3RhcnQ6ICdzdGFydCcsXG4gICAgZW5kOiAnZW5kJyxcbiAgICBjZW50ZXI6ICdjZW50ZXInLFxuICAgIGp1c3RpZnk6ICdqdXN0aWZ5J1xufSk7XG5cbi8qKiBAaGlkZGVuICovXG5lbnVtIFRhYlNjcm9sbEJ1dHRvblN0eWxlIHtcbiAgICBWaXNpYmxlID0gJ3Zpc2libGUnLFxuICAgIEhpZGRlbiA9ICdoaWRkZW4nLFxuICAgIE5vdERpc3BsYXllZCA9ICdub3RfZGlzcGxheWVkJ1xufVxuXG5leHBvcnQgdHlwZSBJZ3hUYWJzQWxpZ25tZW50ID0gKHR5cGVvZiBJZ3hUYWJzQWxpZ25tZW50KVtrZXlvZiB0eXBlb2YgSWd4VGFic0FsaWdubWVudF07XG5cbi8qKiBAaGlkZGVuICovXG5sZXQgTkVYVF9UQUJfSUQgPSAwO1xuXG4vKipcbiAqIFRhYnMgY29tcG9uZW50IGlzIHVzZWQgdG8gb3JnYW5pemUgb3Igc3dpdGNoIGJldHdlZW4gc2ltaWxhciBkYXRhIHNldHMuXG4gKlxuICogQGlneE1vZHVsZSBJZ3hUYWJzTW9kdWxlXG4gKlxuICogQGlneFRoZW1lIGlneC10YWJzLXRoZW1lXG4gKlxuICogQGlneEtleXdvcmRzIHRhYnNcbiAqXG4gKiBAaWd4R3JvdXAgTGF5b3V0c1xuICpcbiAqIEByZW1hcmtzXG4gKiBUaGUgSWduaXRlIFVJIGZvciBBbmd1bGFyIFRhYnMgY29tcG9uZW50IHBsYWNlcyB0YWJzIGF0IHRoZSB0b3AgYW5kIGFsbG93cyBmb3Igc2Nyb2xsaW5nIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIHRhYiBpdGVtcyBvbiB0aGUgc2NyZWVuLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGBodG1sXG4gKiA8aWd4LXRhYnM+XG4gKiAgICAgPGlneC10YWItaXRlbT5cbiAqICAgICAgICAgPGlneC10YWItaGVhZGVyPlxuICogICAgICAgICAgICAgPGlneC1pY29uIGlneFRhYkhlYWRlckljb24+Zm9sZGVyPC9pZ3gtaWNvbj5cbiAqICAgICAgICAgICAgIDxzcGFuIGlneFRhYkhlYWRlckxhYmVsPlRhYiAxPC9zcGFuPlxuICogICAgICAgICA8L2lneC10YWItaGVhZGVyPlxuICogICAgICAgICA8aWd4LXRhYi1jb250ZW50PlxuICogICAgICAgICAgICAgQ29udGVudCAxXG4gKiAgICAgICAgIDwvaWd4LXRhYi1jb250ZW50PlxuICogICAgIDwvaWd4LXRhYi1pdGVtPlxuICogICAgIC4uLlxuICogPC9pZ3gtdGFicz5cbiAqIGBgYFxuICovXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2lneC10YWJzJyxcbiAgICB0ZW1wbGF0ZVVybDogJ3RhYnMuY29tcG9uZW50Lmh0bWwnLFxuICAgIHByb3ZpZGVyczogW3sgcHJvdmlkZTogSWd4VGFic0Jhc2UsIHVzZUV4aXN0aW5nOiBJZ3hUYWJzQ29tcG9uZW50IH1dXG59KVxuXG5leHBvcnQgY2xhc3MgSWd4VGFic0NvbXBvbmVudCBleHRlbmRzIElneFRhYnNEaXJlY3RpdmUgaW1wbGVtZW50cyBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3kge1xuXG4gICAgLyoqXG4gICAgICogQW4gQElucHV0IHByb3BlcnR5IHdoaWNoIGRldGVybWluZXMgdGhlIHRhYiBhbGlnbm1lbnQuIERlZmF1bHRzIHRvIGBzdGFydGAuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IHRhYkFsaWdubWVudCgpOiBzdHJpbmcgfCBJZ3hUYWJzQWxpZ25tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3RhYkFsaWdubWVudDtcbiAgICB9O1xuXG4gICAgcHVibGljIHNldCB0YWJBbGlnbm1lbnQodmFsdWU6IHN0cmluZyB8IElneFRhYnNBbGlnbm1lbnQpIHtcbiAgICAgICAgdGhpcy5fdGFiQWxpZ25tZW50ID0gdmFsdWU7XG4gICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJ1dHRvbnMoKTtcbiAgICAgICAgICAgIHRoaXMucmVhbGlnblNlbGVjdGVkSW5kaWNhdG9yKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnaGVhZGVyQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgaGVhZGVyQ29udGFpbmVyOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgndmlld1BvcnQnLCB7IHN0YXRpYzogdHJ1ZSB9KVxuICAgIHB1YmxpYyB2aWV3UG9ydDogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2l0ZW1zV3JhcHBlcicsIHsgc3RhdGljOiB0cnVlIH0pXG4gICAgcHVibGljIGl0ZW1zV3JhcHBlcjogRWxlbWVudFJlZjxIVE1MRWxlbWVudD47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIEBWaWV3Q2hpbGQoJ2l0ZW1zQ29udGFpbmVyJywgeyBzdGF0aWM6IHRydWUgfSlcbiAgICBwdWJsaWMgaXRlbXNDb250YWluZXI6IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdzZWxlY3RlZEluZGljYXRvcicpXG4gICAgcHVibGljIHNlbGVjdGVkSW5kaWNhdG9yOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQFZpZXdDaGlsZCgnbGVmdEJ1dHRvbicpXG4gICAgcHVibGljIGxlZnRCdXR0b246IEVsZW1lbnRSZWY8SFRNTEVsZW1lbnQ+O1xuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBAVmlld0NoaWxkKCdyaWdodEJ1dHRvbicpXG4gICAgcHVibGljIHJpZ2h0QnV0dG9uOiBFbGVtZW50UmVmPEhUTUxFbGVtZW50PjtcblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQEhvc3RCaW5kaW5nKCdjbGFzcy5pZ3gtdGFicycpXG4gICAgcHVibGljIGRlZmF1bHRDbGFzcyA9IHRydWU7XG5cbiAgICAvKiogIEBoaWRkZW4gKi9cbiAgICAgcHVibGljIG9mZnNldCA9IDA7XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBjb21wb25lbnROYW1lID0gJ2lneC10YWJzJztcblxuICAgIHByaXZhdGUgX3RhYkFsaWdubWVudDogc3RyaW5nIHwgSWd4VGFic0FsaWdubWVudCA9ICdzdGFydCc7XG4gICAgcHJpdmF0ZSBfcmVzaXplT2JzZXJ2ZXI6IFJlc2l6ZU9ic2VydmVyO1xuXG4gICAgY29uc3RydWN0b3IoYnVpbGRlcjogQW5pbWF0aW9uQnVpbGRlciwgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZiwgcHJpdmF0ZSBuZ1pvbmU6IE5nWm9uZSkge1xuICAgICAgICBzdXBlcihidWlsZGVyLCBjZHIpO1xuICAgIH1cblxuXG4gICAgLyoqIEBoaWRkZW4gQGludGVybmFsICovXG4gICAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIgPSBuZXcgKGdldFJlc2l6ZU9ic2VydmVyKCkpKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNjcm9sbEJ1dHRvbnMoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlYWxpZ25TZWxlY3RlZEluZGljYXRvcigpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB0aGlzLl9yZXNpemVPYnNlcnZlci5vYnNlcnZlKHRoaXMuaGVhZGVyQ29udGFpbmVyLm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLnZpZXdQb3J0Lm5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiBAaW50ZXJuYWwgKi9cbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG5cbiAgICAgICAgdGhpcy5uZ1pvbmUucnVuT3V0c2lkZUFuZ3VsYXIoKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5fcmVzaXplT2JzZXJ2ZXI/LmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwdWJsaWMgc2Nyb2xsTGVmdCgpIHtcbiAgICAgICAgdGhpcy5zY3JvbGwoZmFsc2UpO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHVibGljIHNjcm9sbFJpZ2h0KCkge1xuICAgICAgICB0aGlzLnNjcm9sbCh0cnVlKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyByZWFsaWduU2VsZWN0ZWRJbmRpY2F0b3IoKSB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPj0wICYmIHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBoZWFkZXIgPSB0aGlzLml0ZW1zLmdldCh0aGlzLnNlbGVjdGVkSW5kZXgpLmhlYWRlckNvbXBvbmVudC5uYXRpdmVFbGVtZW50O1xuICAgICAgICAgICAgdGhpcy5hbGlnblNlbGVjdGVkSW5kaWNhdG9yKGhlYWRlciwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyByZXNvbHZlSGVhZGVyU2Nyb2xsQ2xhc3NlcygpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICdpZ3gtdGFic19faGVhZGVyLXNjcm9sbC0tc3RhcnQnOiB0aGlzLnRhYkFsaWdubWVudCA9PT0gJ3N0YXJ0JyxcbiAgICAgICAgICAgICdpZ3gtdGFic19faGVhZGVyLXNjcm9sbC0tZW5kJzogdGhpcy50YWJBbGlnbm1lbnQgPT09ICdlbmQnLFxuICAgICAgICAgICAgJ2lneC10YWJzX19oZWFkZXItc2Nyb2xsLS1jZW50ZXInOiB0aGlzLnRhYkFsaWdubWVudCA9PT0gJ2NlbnRlcicsXG4gICAgICAgICAgICAnaWd4LXRhYnNfX2hlYWRlci1zY3JvbGwtLWp1c3RpZnknOiB0aGlzLnRhYkFsaWdubWVudCA9PT0gJ2p1c3RpZnknLFxuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHNjcm9sbFRhYkhlYWRlckludG9WaWV3KCkge1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID49IDApIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYkl0ZW1zID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XG4gICAgICAgICAgICBjb25zdCB0YWJIZWFkZXJOYXRpdmVFbGVtZW50ID0gdGFiSXRlbXNbdGhpcy5zZWxlY3RlZEluZGV4XS5oZWFkZXJDb21wb25lbnQubmF0aXZlRWxlbWVudDtcblxuICAgICAgICAgICAgLy8gU2Nyb2xsIGxlZnQgaWYgdGhlcmUgaXMgbmVlZFxuICAgICAgICAgICAgaWYgKHRhYkhlYWRlck5hdGl2ZUVsZW1lbnQub2Zmc2V0TGVmdCA8IHRoaXMub2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxFbGVtZW50KHRhYkhlYWRlck5hdGl2ZUVsZW1lbnQsIGZhbHNlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2Nyb2xsIHJpZ2h0IGlmIHRoZXJlIGlzIG5lZWRcbiAgICAgICAgICAgIGNvbnN0IHZpZXdQb3J0T2Zmc2V0V2lkdGggPSB0aGlzLnZpZXdQb3J0Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBkZWx0YSA9ICh0YWJIZWFkZXJOYXRpdmVFbGVtZW50Lm9mZnNldExlZnQgKyB0YWJIZWFkZXJOYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoKSAtICh2aWV3UG9ydE9mZnNldFdpZHRoICsgdGhpcy5vZmZzZXQpO1xuXG4gICAgICAgICAgICAvLyBGaXggZm9yIElFIDExLCBhIGRpZmZlcmVuY2UgaXMgYWNjdW11bGF0ZWQgZnJvbSB0aGUgd2lkdGhzIGNhbGN1bGF0aW9uc1xuICAgICAgICAgICAgaWYgKGRlbHRhID4gMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsRWxlbWVudCh0YWJIZWFkZXJOYXRpdmVFbGVtZW50LCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5hbGlnblNlbGVjdGVkSW5kaWNhdG9yKHRhYkhlYWRlck5hdGl2ZUVsZW1lbnQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5oaWRlU2VsZWN0ZWRJbmRpY2F0b3IoKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGdldE5leHRUYWJJZCgpIHtcbiAgICAgICAgcmV0dXJuIE5FWFRfVEFCX0lEKys7XG4gICAgfVxuXG4gICAgLyoqIEBoaWRkZW4gKi9cbiAgICBwcm90ZWN0ZWQgb25JdGVtQ2hhbmdlcygpIHtcbiAgICAgICAgc3VwZXIub25JdGVtQ2hhbmdlcygpO1xuXG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCdXR0b25zKCk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWxpZ25TZWxlY3RlZEluZGljYXRvcihlbGVtZW50OiBIVE1MRWxlbWVudCwgZHVyYXRpb24gPSAwLjMpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWRJbmRpY2F0b3IpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRpY2F0b3IubmF0aXZlRWxlbWVudC5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGljYXRvci5uYXRpdmVFbGVtZW50LnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9IGR1cmF0aW9uID4gMCA/IGAke2R1cmF0aW9ufXNgIDogJ2luaXRpYWwnO1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGljYXRvci5uYXRpdmVFbGVtZW50LnN0eWxlLndpZHRoID0gYCR7ZWxlbWVudC5vZmZzZXRXaWR0aH1weGA7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kaWNhdG9yLm5hdGl2ZUVsZW1lbnQuc3R5bGUudHJhbnNmb3JtID0gYHRyYW5zbGF0ZSgke2VsZW1lbnQub2Zmc2V0TGVmdH1weClgO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBoaWRlU2VsZWN0ZWRJbmRpY2F0b3IoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kaWNhdG9yKSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kaWNhdG9yLm5hdGl2ZUVsZW1lbnQuc3R5bGUudmlzaWJpbGl0eSA9ICdoaWRkZW4nO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGwoc2Nyb2xsUmlnaHQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3QgdGFic0FycmF5ID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XG5cbiAgICAgICAgZm9yIChsZXQgaW5kZXggPSAwOyBpbmRleCA8IHRhYnNBcnJheS5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICAgIGNvbnN0IHRhYiA9IHRhYnNBcnJheVtpbmRleF07XG4gICAgICAgICAgICBjb25zdCBlbGVtZW50ID0gdGFiLmhlYWRlckNvbXBvbmVudC5uYXRpdmVFbGVtZW50O1xuXG4gICAgICAgICAgICBpZiAoc2Nyb2xsUmlnaHQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZWxlbWVudC5vZmZzZXRXaWR0aCArIGVsZW1lbnQub2Zmc2V0TGVmdCA+IHRoaXMudmlld1BvcnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aCArIHRoaXMub2Zmc2V0KSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsRWxlbWVudChlbGVtZW50LCBzY3JvbGxSaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKGVsZW1lbnQub2Zmc2V0TGVmdCA+PSB0aGlzLm9mZnNldCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcm9sbEVsZW1lbnQodGFic0FycmF5W2luZGV4IC0gMV0uaGVhZGVyQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQsIHNjcm9sbFJpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzY3JvbGxFbGVtZW50KGVsZW1lbnQ6IGFueSwgc2Nyb2xsUmlnaHQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgdmlld1BvcnRXaWR0aCA9IHRoaXMudmlld1BvcnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcblxuICAgICAgICB0aGlzLm9mZnNldCA9IChzY3JvbGxSaWdodCkgPyBlbGVtZW50Lm9mZnNldFdpZHRoICsgZWxlbWVudC5vZmZzZXRMZWZ0IC0gdmlld1BvcnRXaWR0aCA6IGVsZW1lbnQub2Zmc2V0TGVmdDtcbiAgICAgICAgdGhpcy52aWV3UG9ydC5uYXRpdmVFbGVtZW50LnNjcm9sbExlZnQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgdGhpcy51cGRhdGVTY3JvbGxCdXR0b25zKCk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTY3JvbGxCdXR0b25zKCkge1xuICAgICAgICBjb25zdCBpdGVtc0NvbnRhaW5lcldpZHRoID0gdGhpcy5nZXRUYWJJdGVtc0NvbnRhaW5lcldpZHRoKCk7XG5cbiAgICAgICAgY29uc3QgbGVmdEJ1dHRvblN0eWxlID0gdGhpcy5yZXNvbHZlTGVmdFNjcm9sbEJ1dHRvblN0eWxlKGl0ZW1zQ29udGFpbmVyV2lkdGgpO1xuICAgICAgICB0aGlzLnNldFNjcm9sbEJ1dHRvblN0eWxlKHRoaXMubGVmdEJ1dHRvbi5uYXRpdmVFbGVtZW50LCBsZWZ0QnV0dG9uU3R5bGUpO1xuXG4gICAgICAgIGNvbnN0IHJpZ2h0QnV0dG9uU3R5bGUgPSB0aGlzLnJlc29sdmVSaWdodFNjcm9sbEJ1dHRvblN0eWxlKGl0ZW1zQ29udGFpbmVyV2lkdGgpO1xuICAgICAgICB0aGlzLnNldFNjcm9sbEJ1dHRvblN0eWxlKHRoaXMucmlnaHRCdXR0b24ubmF0aXZlRWxlbWVudCwgcmlnaHRCdXR0b25TdHlsZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRTY3JvbGxCdXR0b25TdHlsZShidXR0b246IEhUTUxFbGVtZW50LCBidXR0b25TdHlsZTogVGFiU2Nyb2xsQnV0dG9uU3R5bGUpIHtcbiAgICAgICAgaWYgKGJ1dHRvblN0eWxlID09PSBUYWJTY3JvbGxCdXR0b25TdHlsZS5WaXNpYmxlKSB7XG4gICAgICAgICAgICBidXR0b24uc3R5bGUudmlzaWJpbGl0eSA9ICd2aXNpYmxlJztcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICAgIH0gZWxzZSBpZiAoYnV0dG9uU3R5bGUgPT09IFRhYlNjcm9sbEJ1dHRvblN0eWxlLkhpZGRlbikge1xuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLnZpc2liaWxpdHkgPSAnaGlkZGVuJztcbiAgICAgICAgICAgIGJ1dHRvbi5zdHlsZS5kaXNwbGF5ID0gJyc7XG4gICAgICAgIH0gZWxzZSBpZiAoYnV0dG9uU3R5bGUgPT09IFRhYlNjcm9sbEJ1dHRvblN0eWxlLk5vdERpc3BsYXllZCkge1xuICAgICAgICAgICAgYnV0dG9uLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcHJpdmF0ZSByZXNvbHZlTGVmdFNjcm9sbEJ1dHRvblN0eWxlKGl0ZW1zQ29udGFpbmVyV2lkdGg6IG51bWJlcik6IFRhYlNjcm9sbEJ1dHRvblN0eWxlIHtcbiAgICAgICAgY29uc3QgaGVhZGVyQ29udGFpbmVyV2lkdGggPSB0aGlzLmhlYWRlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLm9mZnNldDtcblxuICAgICAgICBpZiAob2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICAvLyBGaXggZm9yIElFIDExLCBhIGRpZmZlcmVuY2UgaXMgYWNjdW11bGF0ZWQgZnJvbSB0aGUgd2lkdGhzIGNhbGN1bGF0aW9ucy5cbiAgICAgICAgICAgIGlmIChpdGVtc0NvbnRhaW5lcldpZHRoIC0gaGVhZGVyQ29udGFpbmVyV2lkdGggPD0gMSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBUYWJTY3JvbGxCdXR0b25TdHlsZS5Ob3REaXNwbGF5ZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gVGFiU2Nyb2xsQnV0dG9uU3R5bGUuSGlkZGVuO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIFRhYlNjcm9sbEJ1dHRvblN0eWxlLlZpc2libGU7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHJlc29sdmVSaWdodFNjcm9sbEJ1dHRvblN0eWxlKGl0ZW1zQ29udGFpbmVyV2lkdGg6IG51bWJlcik6IFRhYlNjcm9sbEJ1dHRvblN0eWxlIHtcbiAgICAgICAgY29uc3Qgdmlld1BvcnRXaWR0aCA9IHRoaXMudmlld1BvcnQubmF0aXZlRWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgICAgICAgY29uc3QgaGVhZGVyQ29udGFpbmVyV2lkdGggPSB0aGlzLmhlYWRlckNvbnRhaW5lci5uYXRpdmVFbGVtZW50Lm9mZnNldFdpZHRoO1xuICAgICAgICBjb25zdCBvZmZzZXQgPSB0aGlzLm9mZnNldDtcbiAgICAgICAgY29uc3QgdG90YWwgPSBvZmZzZXQgKyB2aWV3UG9ydFdpZHRoO1xuXG4gICAgICAgIC8vIEZpeCBmb3IgSUUgMTEsIGEgZGlmZmVyZW5jZSBpcyBhY2N1bXVsYXRlZCBmcm9tIHRoZSB3aWR0aHMgY2FsY3VsYXRpb25zLlxuICAgICAgICBpZiAoaXRlbXNDb250YWluZXJXaWR0aCAtIGhlYWRlckNvbnRhaW5lcldpZHRoIDw9IDEgJiYgb2Zmc2V0ID09PSAwKSB7XG4gICAgICAgICAgICByZXR1cm4gVGFiU2Nyb2xsQnV0dG9uU3R5bGUuTm90RGlzcGxheWVkO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGl0ZW1zQ29udGFpbmVyV2lkdGggPiB0b3RhbCkge1xuICAgICAgICAgICAgcmV0dXJuIFRhYlNjcm9sbEJ1dHRvblN0eWxlLlZpc2libGU7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gVGFiU2Nyb2xsQnV0dG9uU3R5bGUuSGlkZGVuO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRUYWJJdGVtc0NvbnRhaW5lcldpZHRoKCkge1xuICAgICAgICAvLyBXZSB1c2UgdGhpcyBoYWNreSB3YXkgdG8gZ2V0IHRoZSB3aWR0aCBvZiB0aGUgaXRlbXNDb250YWluZXIsXG4gICAgICAgIC8vIGJlY2F1c2UgdGhlcmUgaXMgaW5jb25zaXN0ZW5jeSBpbiBJRSB3ZSBjYW5ub3QgdXNlIG9mZnNldFdpZHRoIG9yIHNjcm9sbE9mZnNldC5cbiAgICAgICAgY29uc3QgaXRlbXNDb250YWluZXJDaGlsZHJlbkNvdW50ID0gdGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuLmxlbmd0aDtcbiAgICAgICAgbGV0IGl0ZW1zQ29udGFpbmVyV2lkdGggPSAwO1xuXG4gICAgICAgIGlmIChpdGVtc0NvbnRhaW5lckNoaWxkcmVuQ291bnQgPiAxKSB7XG4gICAgICAgICAgICBjb25zdCBsYXN0VGFiID0gdGhpcy5pdGVtc0NvbnRhaW5lci5uYXRpdmVFbGVtZW50LmNoaWxkcmVuW2l0ZW1zQ29udGFpbmVyQ2hpbGRyZW5Db3VudCAtIDFdIGFzIEhUTUxFbGVtZW50O1xuICAgICAgICAgICAgaXRlbXNDb250YWluZXJXaWR0aCA9IGxhc3RUYWIub2Zmc2V0TGVmdCArIGxhc3RUYWIub2Zmc2V0V2lkdGg7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gaXRlbXNDb250YWluZXJXaWR0aDtcbiAgICB9XG59XG5cbiJdfQ==
@@ -13,4 +13,4 @@ IgxTabHeaderIconDirective.decorators = [
13
13
  selector: 'igx-tab-header-icon,[igxTabHeaderIcon]'
14
14
  },] }
15
15
  ];
16
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3RhYnMvdGFicy90YWJzLmRpcmVjdGl2ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUsxQyxNQUFNLE9BQU8sMEJBQTBCOzs7WUFIdEMsU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwwQ0FBMEM7YUFDdkQ7O0FBTUQsTUFBTSxPQUFPLHlCQUF5Qjs7O1lBSHJDLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsd0NBQXdDO2FBQ3JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5ARGlyZWN0aXZlKHtcclxuICAgIHNlbGVjdG9yOiAnaWd4LXRhYi1oZWFkZXItbGFiZWwsW2lneFRhYkhlYWRlckxhYmVsXSdcclxufSlcclxuZXhwb3J0IGNsYXNzIElneFRhYkhlYWRlckxhYmVsRGlyZWN0aXZlIHsgfVxyXG5cclxuQERpcmVjdGl2ZSh7XHJcbiAgICBzZWxlY3RvcjogJ2lneC10YWItaGVhZGVyLWljb24sW2lneFRhYkhlYWRlckljb25dJ1xyXG59KVxyXG5leHBvcnQgY2xhc3MgSWd4VGFiSGVhZGVySWNvbkRpcmVjdGl2ZSB7IH1cclxuIl19
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5kaXJlY3RpdmVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3RhYnMvdGFicy90YWJzLmRpcmVjdGl2ZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUsxQyxNQUFNLE9BQU8sMEJBQTBCOzs7WUFIdEMsU0FBUyxTQUFDO2dCQUNQLFFBQVEsRUFBRSwwQ0FBMEM7YUFDdkQ7O0FBTUQsTUFBTSxPQUFPLHlCQUF5Qjs7O1lBSHJDLFNBQVMsU0FBQztnQkFDUCxRQUFRLEVBQUUsd0NBQXdDO2FBQ3JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRGlyZWN0aXZlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaWd4LXRhYi1oZWFkZXItbGFiZWwsW2lneFRhYkhlYWRlckxhYmVsXSdcbn0pXG5leHBvcnQgY2xhc3MgSWd4VGFiSGVhZGVyTGFiZWxEaXJlY3RpdmUgeyB9XG5cbkBEaXJlY3RpdmUoe1xuICAgIHNlbGVjdG9yOiAnaWd4LXRhYi1oZWFkZXItaWNvbixbaWd4VGFiSGVhZGVySWNvbl0nXG59KVxuZXhwb3J0IGNsYXNzIElneFRhYkhlYWRlckljb25EaXJlY3RpdmUgeyB9XG4iXX0=
@@ -35,4 +35,4 @@ IgxTabsModule.decorators = [
35
35
  imports: [CommonModule, IgxIconModule, IgxRippleModule, IgxPrefixModule, IgxSuffixModule]
36
36
  },] }
37
37
  ];
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvdGFicy90YWJzL3RhYnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUUzRSxjQUFjO0FBc0JkLE1BQU0sT0FBTyxhQUFhOzs7WUFyQnpCLFFBQVEsU0FBQztnQkFDTixZQUFZLEVBQUU7b0JBQ1YsZ0JBQWdCO29CQUNoQixtQkFBbUI7b0JBQ25CLHFCQUFxQjtvQkFDckIsc0JBQXNCO29CQUN0QiwwQkFBMEI7b0JBQzFCLHlCQUF5QjtpQkFDNUI7Z0JBQ0QsT0FBTyxFQUFHO29CQUNOLGdCQUFnQjtvQkFDaEIsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLHNCQUFzQjtvQkFDdEIsMEJBQTBCO29CQUMxQix5QkFBeUI7b0JBQ3pCLGVBQWU7b0JBQ2YsZUFBZTtpQkFDbEI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQzthQUM1RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IE5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IElneFJpcHBsZU1vZHVsZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcmlwcGxlL3JpcHBsZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJZ3hJY29uTW9kdWxlIH0gZnJvbSAnLi4vLi4vaWNvbi9wdWJsaWNfYXBpJztcclxuaW1wb3J0IHsgSWd4VGFiSGVhZGVyQ29tcG9uZW50IH0gZnJvbSAnLi90YWItaGVhZGVyLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElneFRhYkhlYWRlckljb25EaXJlY3RpdmUsIElneFRhYkhlYWRlckxhYmVsRGlyZWN0aXZlIH0gZnJvbSAnLi90YWJzLmRpcmVjdGl2ZXMnO1xyXG5pbXBvcnQgeyBJZ3hUYWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90YWItaXRlbS5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJZ3hUYWJDb250ZW50Q29tcG9uZW50IH0gZnJvbSAnLi90YWItY29udGVudC5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBJZ3hUYWJzQ29tcG9uZW50IH0gZnJvbSAnLi90YWJzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IElneFByZWZpeE1vZHVsZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcHJlZml4L3ByZWZpeC5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBJZ3hTdWZmaXhNb2R1bGUgfSBmcm9tICcuLi8uLi9kaXJlY3RpdmVzL3N1ZmZpeC9zdWZmaXguZGlyZWN0aXZlJztcclxuXHJcbi8qKiBAaGlkZGVuICovXHJcbkBOZ01vZHVsZSh7XHJcbiAgICBkZWNsYXJhdGlvbnM6IFtcclxuICAgICAgICBJZ3hUYWJzQ29tcG9uZW50LFxyXG4gICAgICAgIElneFRhYkl0ZW1Db21wb25lbnQsXHJcbiAgICAgICAgSWd4VGFiSGVhZGVyQ29tcG9uZW50LFxyXG4gICAgICAgIElneFRhYkNvbnRlbnRDb21wb25lbnQsXHJcbiAgICAgICAgSWd4VGFiSGVhZGVyTGFiZWxEaXJlY3RpdmUsXHJcbiAgICAgICAgSWd4VGFiSGVhZGVySWNvbkRpcmVjdGl2ZVxyXG4gICAgXSxcclxuICAgIGV4cG9ydHM6ICBbXHJcbiAgICAgICAgSWd4VGFic0NvbXBvbmVudCxcclxuICAgICAgICBJZ3hUYWJJdGVtQ29tcG9uZW50LFxyXG4gICAgICAgIElneFRhYkhlYWRlckNvbXBvbmVudCxcclxuICAgICAgICBJZ3hUYWJDb250ZW50Q29tcG9uZW50LFxyXG4gICAgICAgIElneFRhYkhlYWRlckxhYmVsRGlyZWN0aXZlLFxyXG4gICAgICAgIElneFRhYkhlYWRlckljb25EaXJlY3RpdmUsXHJcbiAgICAgICAgSWd4UHJlZml4TW9kdWxlLFxyXG4gICAgICAgIElneFN1ZmZpeE1vZHVsZVxyXG4gICAgXSxcclxuICAgIGltcG9ydHM6IFtDb21tb25Nb2R1bGUsIElneEljb25Nb2R1bGUsIElneFJpcHBsZU1vZHVsZSwgSWd4UHJlZml4TW9kdWxlLCBJZ3hTdWZmaXhNb2R1bGVdXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBJZ3hUYWJzTW9kdWxlIHtcclxufVxyXG4iXX0=
38
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvdGFicy90YWJzL3RhYnMubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3pDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUMzRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDdEQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0QsT0FBTyxFQUFFLHlCQUF5QixFQUFFLDBCQUEwQixFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDMUYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDakUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBDQUEwQyxDQUFDO0FBQzNFLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQ0FBMEMsQ0FBQztBQUUzRSxjQUFjO0FBc0JkLE1BQU0sT0FBTyxhQUFhOzs7WUFyQnpCLFFBQVEsU0FBQztnQkFDTixZQUFZLEVBQUU7b0JBQ1YsZ0JBQWdCO29CQUNoQixtQkFBbUI7b0JBQ25CLHFCQUFxQjtvQkFDckIsc0JBQXNCO29CQUN0QiwwQkFBMEI7b0JBQzFCLHlCQUF5QjtpQkFDNUI7Z0JBQ0QsT0FBTyxFQUFHO29CQUNOLGdCQUFnQjtvQkFDaEIsbUJBQW1CO29CQUNuQixxQkFBcUI7b0JBQ3JCLHNCQUFzQjtvQkFDdEIsMEJBQTBCO29CQUMxQix5QkFBeUI7b0JBQ3pCLGVBQWU7b0JBQ2YsZUFBZTtpQkFDbEI7Z0JBQ0QsT0FBTyxFQUFFLENBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsQ0FBQzthQUM1RiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBOZ01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgSWd4UmlwcGxlTW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9yaXBwbGUvcmlwcGxlLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hJY29uTW9kdWxlIH0gZnJvbSAnLi4vLi4vaWNvbi9wdWJsaWNfYXBpJztcbmltcG9ydCB7IElneFRhYkhlYWRlckNvbXBvbmVudCB9IGZyb20gJy4vdGFiLWhlYWRlci5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4VGFiSGVhZGVySWNvbkRpcmVjdGl2ZSwgSWd4VGFiSGVhZGVyTGFiZWxEaXJlY3RpdmUgfSBmcm9tICcuL3RhYnMuZGlyZWN0aXZlcyc7XG5pbXBvcnQgeyBJZ3hUYWJJdGVtQ29tcG9uZW50IH0gZnJvbSAnLi90YWItaXRlbS5jb21wb25lbnQnO1xuaW1wb3J0IHsgSWd4VGFiQ29udGVudENvbXBvbmVudCB9IGZyb20gJy4vdGFiLWNvbnRlbnQuY29tcG9uZW50JztcbmltcG9ydCB7IElneFRhYnNDb21wb25lbnQgfSBmcm9tICcuL3RhYnMuY29tcG9uZW50JztcbmltcG9ydCB7IElneFByZWZpeE1vZHVsZSB9IGZyb20gJy4uLy4uL2RpcmVjdGl2ZXMvcHJlZml4L3ByZWZpeC5kaXJlY3RpdmUnO1xuaW1wb3J0IHsgSWd4U3VmZml4TW9kdWxlIH0gZnJvbSAnLi4vLi4vZGlyZWN0aXZlcy9zdWZmaXgvc3VmZml4LmRpcmVjdGl2ZSc7XG5cbi8qKiBAaGlkZGVuICovXG5ATmdNb2R1bGUoe1xuICAgIGRlY2xhcmF0aW9uczogW1xuICAgICAgICBJZ3hUYWJzQ29tcG9uZW50LFxuICAgICAgICBJZ3hUYWJJdGVtQ29tcG9uZW50LFxuICAgICAgICBJZ3hUYWJIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIElneFRhYkNvbnRlbnRDb21wb25lbnQsXG4gICAgICAgIElneFRhYkhlYWRlckxhYmVsRGlyZWN0aXZlLFxuICAgICAgICBJZ3hUYWJIZWFkZXJJY29uRGlyZWN0aXZlXG4gICAgXSxcbiAgICBleHBvcnRzOiAgW1xuICAgICAgICBJZ3hUYWJzQ29tcG9uZW50LFxuICAgICAgICBJZ3hUYWJJdGVtQ29tcG9uZW50LFxuICAgICAgICBJZ3hUYWJIZWFkZXJDb21wb25lbnQsXG4gICAgICAgIElneFRhYkNvbnRlbnRDb21wb25lbnQsXG4gICAgICAgIElneFRhYkhlYWRlckxhYmVsRGlyZWN0aXZlLFxuICAgICAgICBJZ3hUYWJIZWFkZXJJY29uRGlyZWN0aXZlLFxuICAgICAgICBJZ3hQcmVmaXhNb2R1bGUsXG4gICAgICAgIElneFN1ZmZpeE1vZHVsZVxuICAgIF0sXG4gICAgaW1wb3J0czogW0NvbW1vbk1vZHVsZSwgSWd4SWNvbk1vZHVsZSwgSWd4UmlwcGxlTW9kdWxlLCBJZ3hQcmVmaXhNb2R1bGUsIElneFN1ZmZpeE1vZHVsZV1cbn0pXG5leHBvcnQgY2xhc3MgSWd4VGFic01vZHVsZSB7XG59XG4iXX0=
@@ -10,4 +10,4 @@ export class IgxTabHeaderBase {
10
10
  /** @hidden */
11
11
  export class IgxTabContentBase {
12
12
  }
13
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3RhYnMvdGFicy5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGNBQWM7QUFDZCxNQUFNLE9BQWdCLFdBQVc7Q0FJaEM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxPQUFnQixjQUFjO0NBT25DO0FBRUQsY0FBYztBQUNkLE1BQU0sT0FBZ0IsZ0JBQWdCO0NBRXJDO0FBRUQsY0FBYztBQUNkLE1BQU0sT0FBZ0IsaUJBQWlCO0NBRXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5cclxuLyoqIEBoaWRkZW4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElneFRhYnNCYXNlIHtcclxuICAgIHB1YmxpYyBpdGVtczogUXVlcnlMaXN0PElneFRhYkl0ZW1CYXNlPjtcclxuICAgIHB1YmxpYyBzZWxlY3RlZEluZGV4OiBudW1iZXI7XHJcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2VsZWN0VGFiKHRhYjogSWd4VGFiSXRlbUJhc2UsIHNlbGVjdGVkOiBib29sZWFuKTtcclxufVxyXG5cclxuLyoqIEBoaWRkZW4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElneFRhYkl0ZW1CYXNlIHtcclxuICAgIHB1YmxpYyBkaXNhYmxlZDogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBzZWxlY3RlZDogYm9vbGVhbjtcclxuICAgIHB1YmxpYyBoZWFkZXJUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcclxuICAgIHB1YmxpYyBwYW5lbFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xyXG4gICAgcHVibGljIGhlYWRlckNvbXBvbmVudDogSWd4VGFiSGVhZGVyQmFzZTtcclxuICAgIHB1YmxpYyBwYW5lbENvbXBvbmVudDogSWd4VGFiQ29udGVudEJhc2U7XHJcbn1cclxuXHJcbi8qKiBAaGlkZGVuICovXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJZ3hUYWJIZWFkZXJCYXNlIHtcclxuICAgIHB1YmxpYyBuYXRpdmVFbGVtZW50OiBIVE1MRWxlbWVudDtcclxufVxyXG5cclxuLyoqIEBoaWRkZW4gKi9cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElneFRhYkNvbnRlbnRCYXNlIHtcclxuICAgIHB1YmxpYyBuYXRpdmVFbGVtZW50OiBIVE1MRWxlbWVudDtcclxufVxyXG5cclxuIl19
13
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5iYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvaWduaXRldWktYW5ndWxhci9zcmMvbGliL3RhYnMvdGFicy5iYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLGNBQWM7QUFDZCxNQUFNLE9BQWdCLFdBQVc7Q0FJaEM7QUFFRCxjQUFjO0FBQ2QsTUFBTSxPQUFnQixjQUFjO0NBT25DO0FBRUQsY0FBYztBQUNkLE1BQU0sT0FBZ0IsZ0JBQWdCO0NBRXJDO0FBRUQsY0FBYztBQUNkLE1BQU0sT0FBZ0IsaUJBQWlCO0NBRXRDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUXVlcnlMaXN0LCBUZW1wbGF0ZVJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElneFRhYnNCYXNlIHtcbiAgICBwdWJsaWMgaXRlbXM6IFF1ZXJ5TGlzdDxJZ3hUYWJJdGVtQmFzZT47XG4gICAgcHVibGljIHNlbGVjdGVkSW5kZXg6IG51bWJlcjtcbiAgICBwdWJsaWMgYWJzdHJhY3Qgc2VsZWN0VGFiKHRhYjogSWd4VGFiSXRlbUJhc2UsIHNlbGVjdGVkOiBib29sZWFuKTtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJZ3hUYWJJdGVtQmFzZSB7XG4gICAgcHVibGljIGRpc2FibGVkOiBib29sZWFuO1xuICAgIHB1YmxpYyBzZWxlY3RlZDogYm9vbGVhbjtcbiAgICBwdWJsaWMgaGVhZGVyVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIHBhbmVsVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgcHVibGljIGhlYWRlckNvbXBvbmVudDogSWd4VGFiSGVhZGVyQmFzZTtcbiAgICBwdWJsaWMgcGFuZWxDb21wb25lbnQ6IElneFRhYkNvbnRlbnRCYXNlO1xufVxuXG4vKiogQGhpZGRlbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElneFRhYkhlYWRlckJhc2Uge1xuICAgIHB1YmxpYyBuYXRpdmVFbGVtZW50OiBIVE1MRWxlbWVudDtcbn1cblxuLyoqIEBoaWRkZW4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJZ3hUYWJDb250ZW50QmFzZSB7XG4gICAgcHVibGljIG5hdGl2ZUVsZW1lbnQ6IEhUTUxFbGVtZW50O1xufVxuXG4iXX0=
@@ -243,4 +243,4 @@ IgxTabsDirective.propDecorators = {
243
243
  items: [{ type: ContentChildren, args: [IgxTabItemDirective,] }],
244
244
  panels: [{ type: ContentChildren, args: [IgxTabContentBase, { descendants: true },] }]
245
245
  };
246
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvdGFicy90YWJzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUNZLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUV2RCxLQUFLLEVBQWEsTUFBTSxFQUMzQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFlLE1BQU0sYUFBYSxDQUFDO0FBa0I3RCxNQUFNLE9BQWdCLGdCQUFpQixTQUFRLHdCQUF3QjtJQTZGbkUsY0FBYztJQUNkLFlBQVksT0FBeUIsRUFBRSxHQUFzQjtRQUN6RCxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBbER4Qjs7V0FFRztRQUVJLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFeEQ7O1dBRUc7UUFFSSwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBdUMsQ0FBQztRQUV2Rjs7V0FFRztRQUVJLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFvQyxDQUFDO1FBb0JqRixjQUFjO1FBQ0osc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBUTVCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFNNUIsQ0FBQztJQTlGRDs7O09BR0c7SUFDSCxJQUNXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFF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O1lBRTFGLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtnQkFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2FBQ3RDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUU1QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDNUI7YUFBTTtZQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQzs7O1lBMVJKLFNBQVM7OztZQTVCRCxnQkFBZ0I7WUFDaEIsaUJBQWlCOzs7NEJBa0NyQixLQUFLOytCQThCTCxLQUFLO2tDQVlMLE1BQU07b0NBTU4sTUFBTTtpQ0FNTixNQUFNO29CQU1OLGVBQWUsU0FBQyxtQkFBbUI7cUJBWW5DLGVBQWUsU0FBQyxpQkFBaUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XHJcbmltcG9ydCB7IENoYW5nZURldGVjdG9yUmVmIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7XHJcbiAgICBBZnRlclZpZXdJbml0LCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLFxyXG4gICAgSG9zdEJpbmRpbmcsXHJcbiAgICBJbnB1dCwgT25EZXN0cm95LCBPdXRwdXQsIFF1ZXJ5TGlzdFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgRGlyZWN0aW9uLCBJZ3hDYXJvdXNlbENvbXBvbmVudEJhc2UgfSBmcm9tICcuLi9jYXJvdXNlbC9jYXJvdXNlbC1iYXNlJztcclxuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcclxuaW1wb3J0IHsgSWd4VGFiSXRlbURpcmVjdGl2ZSB9IGZyb20gJy4vdGFiLWl0ZW0uZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgSWd4VGFiQ29udGVudEJhc2UsIElneFRhYnNCYXNlIH0gZnJvbSAnLi90YWJzLmJhc2UnO1xyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFic0Jhc2VFdmVudEFyZ3MgZXh0ZW5kcyBJQmFzZUV2ZW50QXJncyB7XHJcbiAgICByZWFkb25seSBvd25lcjogSWd4VGFic0RpcmVjdGl2ZTtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFic1NlbGVjdGVkSW5kZXhDaGFuZ2luZ0V2ZW50QXJncyBleHRlbmRzIElUYWJzQmFzZUV2ZW50QXJncyB7XHJcbiAgICBjYW5jZWw6IGJvb2xlYW47XHJcbiAgICByZWFkb25seSBvbGRJbmRleDogbnVtYmVyO1xyXG4gICAgbmV3SW5kZXg6IG51bWJlcjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJVGFic1NlbGVjdGVkSXRlbUNoYW5nZUV2ZW50QXJncyBleHRlbmRzIElUYWJzQmFzZUV2ZW50QXJncyB7XHJcbiAgICByZWFkb25seSBvbGRJdGVtOiBJZ3hUYWJJdGVtRGlyZWN0aXZlO1xyXG4gICAgcmVhZG9ubHkgbmV3SXRlbTogSWd4VGFiSXRlbURpcmVjdGl2ZTtcclxufVxyXG5cclxuQERpcmVjdGl2ZSgpXHJcbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBJZ3hUYWJzRGlyZWN0aXZlIGV4dGVuZHMgSWd4Q2Fyb3VzZWxDb21wb25lbnRCYXNlIGltcGxlbWVudHMgSWd4VGFic0Jhc2UsIEFmdGVyVmlld0luaXQsIE9uRGVzdHJveSB7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBBbiBASW5wdXQgcHJvcGVydHkgdGhhdCBnZXRzL3NldHMgdGhlIGluZGV4IG9mIHRoZSBzZWxlY3RlZCBpdGVtLlxyXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyAwIGlmIGNvbnRlbnRzIGFyZSBkZWZpbmVkIG90aGVyd2lzZSBkZWZhdWx0cyB0byAtMS5cclxuICAgICAqL1xyXG4gICAgQElucHV0KClcclxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZEluZGV4O1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBzZXQgc2VsZWN0ZWRJbmRleCh2YWx1ZTogbnVtYmVyKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSW5kZXggIT09IHZhbHVlKSB7XHJcbiAgICAgICAgICAgIGxldCBuZXdJbmRleCA9IHZhbHVlO1xyXG4gICAgICAgICAgICBjb25zdCBvbGRJbmRleCA9IHRoaXMuX3NlbGVjdGVkSW5kZXg7XHJcbiAgICAgICAgICAgIGNvbnN0IGFyZ3M6IElUYWJzU2VsZWN0ZWRJbmRleENoYW5naW5nRXZlbnRBcmdzID0ge1xyXG4gICAgICAgICAgICAgICAgb3duZXI6IHRoaXMsXHJcbiAgICAgICAgICAgICAgICBjYW5jZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgb2xkSW5kZXgsXHJcbiAgICAgICAgICAgICAgICBuZXdJbmRleFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhDaGFuZ2luZy5lbWl0KGFyZ3MpO1xyXG5cclxuICAgICAgICAgICAgaWYgKCFhcmdzLmNhbmNlbCkge1xyXG4gICAgICAgICAgICAgICAgbmV3SW5kZXggPSBhcmdzLm5ld0luZGV4O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IG5ld0luZGV4O1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4Q2hhbmdlLmVtaXQodGhpcy5fc2VsZWN0ZWRJbmRleCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRUYWJzKG9sZEluZGV4KTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSB0cmFuc2l0aW9uIGFuaW1hdGlvbiBvZiB0aGUgY29udGVudHMuXHJcbiAgICAgKi9cclxuICAgIEBJbnB1dCgpXHJcbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVBbmltYXRpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMuX2Rpc2FibGVBbmltYXRpb247XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIHNldCBkaXNhYmxlQW5pbWF0aW9uKHZhbHVlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5fZGlzYWJsZUFuaW1hdGlvbiA9IHZhbHVlO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogT3V0cHV0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0d28td2F5IGJpbmRpbmcgb24gWyhzZWxlY3RlZEluZGV4KV1cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWRJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xyXG5cclxuICAgIC8qKlxyXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCBpbmRleCBpcyBhYm91dCB0byBjaGFuZ2UuXHJcbiAgICAgKi9cclxuICAgIEBPdXRwdXQoKVxyXG4gICAgcHVibGljIHNlbGVjdGVkSW5kZXhDaGFuZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVRhYnNTZWxlY3RlZEluZGV4Q2hhbmdpbmdFdmVudEFyZ3M+KCk7XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIGl0ZW0gaXMgY2hhbmdlZC5cclxuICAgICAqL1xyXG4gICAgQE91dHB1dCgpXHJcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJVGFic1NlbGVjdGVkSXRlbUNoYW5nZUV2ZW50QXJncz4oKTtcclxuXHJcbiAgICAvKipcclxuICAgICAqIFJldHVybnMgdGhlIGl0ZW1zLlxyXG4gICAgICovXHJcbiAgICBAQ29udGVudENoaWxkcmVuKElneFRhYkl0ZW1EaXJlY3RpdmUpXHJcbiAgICBwdWJsaWMgaXRlbXM6IFF1ZXJ5TGlzdDxJZ3hUYWJJdGVtRGlyZWN0aXZlPjtcclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIHNlbGVjdGVkIGl0ZW0uXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWRJdGVtKCk6IElneFRhYkl0ZW1EaXJlY3RpdmUge1xyXG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zICYmIHRoaXMuc2VsZWN0ZWRJbmRleCA+PSAwICYmIHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMuaXRlbXMubGVuZ3RoID9cclxuICAgICAgICAgICAgdGhpcy5pdGVtcy5nZXQodGhpcy5zZWxlY3RlZEluZGV4KSA6IG51bGw7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIEBDb250ZW50Q2hpbGRyZW4oSWd4VGFiQ29udGVudEJhc2UsIHsgZGVzY2VuZGFudHM6IHRydWUgfSlcclxuICAgIHB1YmxpYyBwYW5lbHM6IFF1ZXJ5TGlzdDxJZ3hUYWJDb250ZW50QmFzZT47XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHByb3RlY3RlZCBfZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHByb3RlY3RlZCBjdXJyZW50SXRlbTogSWd4VGFiSXRlbURpcmVjdGl2ZTtcclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBwcm90ZWN0ZWQgcHJldmlvdXNJdGVtOiBJZ3hUYWJJdGVtRGlyZWN0aXZlO1xyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHByb3RlY3RlZCBjb21wb25lbnROYW1lOiBzdHJpbmc7XHJcblxyXG4gICAgcHJpdmF0ZSBfc2VsZWN0ZWRJbmRleCA9IC0xO1xyXG4gICAgcHJpdmF0ZSBfaXRlbUNoYW5nZXMkOiBTdWJzY3JpcHRpb247XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIGNvbnN0cnVjdG9yKGJ1aWxkZXI6IEFuaW1hdGlvbkJ1aWxkZXIsIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICBzdXBlcihidWlsZGVyLCBjZHIpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ID09PSAtMSkge1xyXG4gICAgICAgICAgICBjb25zdCBoYXNTZWxlY3RlZFRhYiA9IHRoaXMuaXRlbXMuc29tZSgodGFiLCBpKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGFiLnNlbGVjdGVkKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IGk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gdGFiLnNlbGVjdGVkO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIGlmICghaGFzU2VsZWN0ZWRUYWIgJiYgdGhpcy5oYXNQYW5lbHMpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSAwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBVc2UgcHJvbWlzZSB0byBhdm9pZCBleHByZXNzaW9uIGNoYW5nZWQgYWZ0ZXIgY2hlY2sgZXJyb3JcclxuICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFRhYnMobnVsbCwgZmFsc2UpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICB0aGlzLl9pdGVtQ2hhbmdlcyQgPSB0aGlzLml0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5vbkl0ZW1DaGFuZ2VzKCk7XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHRoaXMuc2V0QXR0cmlidXRlcygpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX2l0ZW1DaGFuZ2VzJCkge1xyXG4gICAgICAgICAgICB0aGlzLl9pdGVtQ2hhbmdlcyQudW5zdWJzY3JpYmUoKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHB1YmxpYyBzZWxlY3RUYWIodGFiOiBJZ3hUYWJJdGVtRGlyZWN0aXZlLCBzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5pdGVtcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCB0YWJzID0gdGhpcy5pdGVtcy50b0FycmF5KCk7XHJcblxyXG4gICAgICAgIGlmIChzZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBjb25zdCBpbmRleCA9IHRhYnMuaW5kZXhPZih0YWIpO1xyXG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAodGFicy5ldmVyeSh0ID0+ICF0LnNlbGVjdGVkKSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4ID0gLTE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHByb3RlY3RlZCBnZXRQcmV2aW91c0VsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzSXRlbS5wYW5lbENvbXBvbmVudC5uYXRpdmVFbGVtZW50O1xyXG4gICAgfVxyXG5cclxuICAgIC8qKiBAaGlkZGVuICovXHJcbiAgICBwcm90ZWN0ZWQgZ2V0Q3VycmVudEVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRJdGVtLnBhbmVsQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqIEBoaWRkZW4gKi9cclxuICAgIHByb3RlY3RlZCBzY3JvbGxUYWJIZWFkZXJJbnRvVmlldygpIHtcclxuICAgIH1cclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgcHJvdGVjdGVkIG9uSXRlbUNoYW5nZXMoKSB7XHJcbiAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGVzKCk7XHJcblxyXG4gICAgICAgIC8vIENoZWNrIGlmIHRoZXJlIGlzIHNlbGVjdGVkIHRhYlxyXG4gICAgICAgIGxldCBzZWxlY3RlZEluZGV4ID0gLTE7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5zb21lKCh0YWIsIGkpID0+IHtcclxuICAgICAgICAgICAgaWYgKHRhYi5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICAgICAgc2VsZWN0ZWRJbmRleCA9IGk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHRhYi5zZWxlY3RlZDtcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgaWYgKHNlbGVjdGVkSW5kZXggPj0gMCkge1xyXG4gICAgICAgICAgICAvLyBTZXQgdGhlIHNlbGVjdGVkIGluZGV4IHRvIHRoZSB0YWIgdGhhdCBoYXMgc2VsZWN0ZWQ9dHJ1ZVxyXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXg7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSW5kZXggPj0gMCAmJiB0aGlzLnNlbGVjdGVkSW5kZXggPCB0aGlzLml0ZW1zLmxlbmd0aCkge1xyXG4gICAgICAgICAgICAgICAgLy8gU2VsZWN0IHRoZSB0YWIgb24gdGhlIHNhbWUgaW5kZXggdGhlIHByZXZpb3VzIHNlbGVjdGVkIHRhYiB3YXNcclxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU2VsZWN0ZWRUYWJzKG51bGwpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID49IHRoaXMuaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdGhlIGxhc3QgdGFiXHJcbiAgICAgICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldEF0dHJpYnV0ZXMoKSB7XHJcbiAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4gICAgICAgICAgICBpZiAoaXRlbS5wYW5lbENvbXBvbmVudCAmJiAhaXRlbS5oZWFkZXJDb21wb25lbnQubmF0aXZlRWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2lkJykpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXROZXh0VGFiSWQoKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHRhYkhlYWRlcklkID0gYCR7dGhpcy5jb21wb25lbnROYW1lfS1oZWFkZXItJHtpZH1gO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdGFiUGFuZWxJZCA9IGAke3RoaXMuY29tcG9uZW50TmFtZX0tY29udGVudC0ke2lkfWA7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRIZWFkZXJBdHRyaWJ1dGUoaXRlbSwgJ2lkJywgdGFiSGVhZGVySWQpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZXRIZWFkZXJBdHRyaWJ1dGUoaXRlbSwgJ2FyaWEtY29udHJvbHMnLCB0YWJQYW5lbElkKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFuZWxBdHRyaWJ1dGUoaXRlbSwgJ2lkJywgdGFiUGFuZWxJZCk7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNldFBhbmVsQXR0cmlidXRlKGl0ZW0sICdhcmlhLWxhYmVsbGVkYnknLCB0YWJIZWFkZXJJZCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldEhlYWRlckF0dHJpYnV0ZShpdGVtOiBJZ3hUYWJJdGVtRGlyZWN0aXZlLCBhdHRyTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XHJcbiAgICAgICAgaXRlbS5oZWFkZXJDb21wb25lbnQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIHZhbHVlKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHNldFBhbmVsQXR0cmlidXRlKGl0ZW06IElneFRhYkl0ZW1EaXJlY3RpdmUsIGF0dHJOYW1lOiBzdHJpbmcsIHZhbHVlOiBzdHJpbmcpIHtcclxuICAgICAgICBpdGVtLnBhbmVsQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJOYW1lLCB2YWx1ZSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBnZXQgaGFzUGFuZWxzKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnBhbmVscyAmJiB0aGlzLnBhbmVscy5sZW5ndGg7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZFRhYnMob2xkU2VsZWN0ZWRJbmRleDogbnVtYmVyLCByYWlzZUV2ZW50ID0gdHJ1ZSkge1xyXG4gICAgICAgIGlmICghdGhpcy5pdGVtcykge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgbmV3VGFiOiBJZ3hUYWJJdGVtRGlyZWN0aXZlO1xyXG4gICAgICAgIGNvbnN0IG9sZFRhYiA9IHRoaXMuY3VycmVudEl0ZW07XHJcblxyXG4gICAgICAgIC8vIEZpcnN0IHNlbGVjdCB0aGUgbmV3IHRhYlxyXG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ID49IDAgJiYgdGhpcy5fc2VsZWN0ZWRJbmRleCA8IHRoaXMuaXRlbXMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIG5ld1RhYiA9IHRoaXMuaXRlbXMuZ2V0KHRoaXMuX3NlbGVjdGVkSW5kZXgpO1xyXG4gICAgICAgICAgICBuZXdUYWIuc2VsZWN0ZWQgPSB0cnVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyBUaGVuIHVuc2VsZWN0IHRoZSBvdGhlciB0YWJzXHJcbiAgICAgICAgdGhpcy5pdGVtcy5mb3JFYWNoKCh0YWIsIGkpID0+IHtcclxuICAgICAgICAgICAgaWYgKGkgIT09IHRoaXMuX3NlbGVjdGVkSW5kZXgpIHtcclxuICAgICAgICAgICAgICAgIHRhYi5zZWxlY3RlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ICE9PSBvbGRTZWxlY3RlZEluZGV4KSB7XHJcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVGFiSGVhZGVySW50b1ZpZXcoKTtcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyUGFuZWxBbmltYXRpb25zKG9sZFNlbGVjdGVkSW5kZXgpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJhaXNlRXZlbnQgJiYgbmV3VGFiICE9PSBvbGRUYWIpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtQ2hhbmdlLmVtaXQoe1xyXG4gICAgICAgICAgICAgICAgICAgIG93bmVyOiB0aGlzLFxyXG4gICAgICAgICAgICAgICAgICAgIG5ld0l0ZW06IG5ld1RhYixcclxuICAgICAgICAgICAgICAgICAgICBvbGRJdGVtOiBvbGRUYWJcclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdHJpZ2dlclBhbmVsQW5pbWF0aW9ucyhvbGRTZWxlY3RlZEluZGV4OiBudW1iZXIpIHtcclxuICAgICAgICBjb25zdCBpdGVtID0gdGhpcy5pdGVtcy5nZXQodGhpcy5fc2VsZWN0ZWRJbmRleCk7XHJcblxyXG4gICAgICAgIGlmIChpdGVtICYmXHJcbiAgICAgICAgICAgICF0aGlzLmRpc2FibGVBbmltYXRpb24gJiZcclxuICAgICAgICAgICAgdGhpcy5oYXNQYW5lbHMgJiZcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50SXRlbSAmJlxyXG4gICAgICAgICAgICAhdGhpcy5jdXJyZW50SXRlbS5zZWxlY3RlZCkge1xyXG4gICAgICAgICAgICBpdGVtLmRpcmVjdGlvbiA9IHRoaXMuX3NlbGVjdGVkSW5kZXggPiBvbGRTZWxlY3RlZEluZGV4ID8gRGlyZWN0aW9uLk5FWFQgOiBEaXJlY3Rpb24uUFJFVjtcclxuXHJcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXZpb3VzSXRlbSAmJiB0aGlzLnByZXZpb3VzSXRlbS5wcmV2aW91cykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c0l0ZW0ucHJldmlvdXMgPSBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJdGVtLmRpcmVjdGlvbiA9IGl0ZW0uZGlyZWN0aW9uO1xyXG5cclxuICAgICAgICAgICAgdGhpcy5wcmV2aW91c0l0ZW0gPSB0aGlzLmN1cnJlbnRJdGVtO1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRJdGVtID0gaXRlbTtcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyQW5pbWF0aW9ucygpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEl0ZW0gPSBpdGVtO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvKiogQGhpZGRlbiAqL1xyXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IGdldE5leHRUYWJJZCgpO1xyXG59XHJcbiJdfQ==
246
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFicy5kaXJlY3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9pZ25pdGV1aS1hbmd1bGFyL3NyYy9saWIvdGFicy90YWJzLmRpcmVjdGl2ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDbEQsT0FBTyxFQUNZLGVBQWUsRUFBRSxTQUFTLEVBQUUsWUFBWSxFQUV2RCxLQUFLLEVBQWEsTUFBTSxFQUMzQixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQUUsU0FBUyxFQUFFLHdCQUF3QixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFaEYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGlCQUFpQixFQUFlLE1BQU0sYUFBYSxDQUFDO0FBa0I3RCxNQUFNLE9BQWdCLGdCQUFpQixTQUFRLHdCQUF3QjtJQTZGbkUsY0FBYztJQUNkLFlBQVksT0FBeUIsRUFBRSxHQUFzQjtRQUN6RCxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBbER4Qjs7V0FFRztRQUVJLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFFeEQ7O1dBRUc7UUFFSSwwQkFBcUIsR0FBRyxJQUFJLFlBQVksRUFBdUMsQ0FBQztRQUV2Rjs7V0FFRztRQUVJLHVCQUFrQixHQUFHLElBQUksWUFBWSxFQUFvQyxDQUFDO1FBb0JqRixjQUFjO1FBQ0osc0JBQWlCLEdBQUcsS0FBSyxDQUFDO1FBUTVCLG1CQUFjLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFNNUIsQ0FBQztJQTlGRDs7O09BR0c7SUFDSCxJQUNXLGFBQWE7UUFDcEIsT0FBTyxJQUFJLENBQUMsY0FBYyxDQUFDO0lBQy9CLENBQUM7SUFF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O1lBRTFGLElBQUksSUFBSSxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRTtnQkFDakQsSUFBSSxDQUFDLFlBQVksQ0FBQyxRQUFRLEdBQUcsS0FBSyxDQUFDO2FBQ3RDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQztZQUU1QyxJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDckMsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUM7WUFDeEIsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUM7U0FDNUI7YUFBTTtZQUNILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDO1NBQzNCO0lBQ0wsQ0FBQzs7O1lBMVJKLFNBQVM7OztZQTVCRCxnQkFBZ0I7WUFDaEIsaUJBQWlCOzs7NEJBa0NyQixLQUFLOytCQThCTCxLQUFLO2tDQVlMLE1BQU07b0NBTU4sTUFBTTtpQ0FNTixNQUFNO29CQU1OLGVBQWUsU0FBQyxtQkFBbUI7cUJBWW5DLGVBQWUsU0FBQyxpQkFBaUIsRUFBRSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBbmltYXRpb25CdWlsZGVyIH0gZnJvbSAnQGFuZ3VsYXIvYW5pbWF0aW9ucyc7XG5pbXBvcnQgeyBDaGFuZ2VEZXRlY3RvclJlZiB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBZnRlclZpZXdJbml0LCBDb250ZW50Q2hpbGRyZW4sIERpcmVjdGl2ZSwgRXZlbnRFbWl0dGVyLFxuICAgIEhvc3RCaW5kaW5nLFxuICAgIElucHV0LCBPbkRlc3Ryb3ksIE91dHB1dCwgUXVlcnlMaXN0XG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgU3Vic2NyaXB0aW9uIH0gZnJvbSAncnhqcyc7XG5pbXBvcnQgeyBEaXJlY3Rpb24sIElneENhcm91c2VsQ29tcG9uZW50QmFzZSB9IGZyb20gJy4uL2Nhcm91c2VsL2Nhcm91c2VsLWJhc2UnO1xuaW1wb3J0IHsgSUJhc2VFdmVudEFyZ3MgfSBmcm9tICcuLi9jb3JlL3V0aWxzJztcbmltcG9ydCB7IElneFRhYkl0ZW1EaXJlY3RpdmUgfSBmcm9tICcuL3RhYi1pdGVtLmRpcmVjdGl2ZSc7XG5pbXBvcnQgeyBJZ3hUYWJDb250ZW50QmFzZSwgSWd4VGFic0Jhc2UgfSBmcm9tICcuL3RhYnMuYmFzZSc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSVRhYnNCYXNlRXZlbnRBcmdzIGV4dGVuZHMgSUJhc2VFdmVudEFyZ3Mge1xuICAgIHJlYWRvbmx5IG93bmVyOiBJZ3hUYWJzRGlyZWN0aXZlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJzU2VsZWN0ZWRJbmRleENoYW5naW5nRXZlbnRBcmdzIGV4dGVuZHMgSVRhYnNCYXNlRXZlbnRBcmdzIHtcbiAgICBjYW5jZWw6IGJvb2xlYW47XG4gICAgcmVhZG9ubHkgb2xkSW5kZXg6IG51bWJlcjtcbiAgICBuZXdJbmRleDogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIElUYWJzU2VsZWN0ZWRJdGVtQ2hhbmdlRXZlbnRBcmdzIGV4dGVuZHMgSVRhYnNCYXNlRXZlbnRBcmdzIHtcbiAgICByZWFkb25seSBvbGRJdGVtOiBJZ3hUYWJJdGVtRGlyZWN0aXZlO1xuICAgIHJlYWRvbmx5IG5ld0l0ZW06IElneFRhYkl0ZW1EaXJlY3RpdmU7XG59XG5cbkBEaXJlY3RpdmUoKVxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIElneFRhYnNEaXJlY3RpdmUgZXh0ZW5kcyBJZ3hDYXJvdXNlbENvbXBvbmVudEJhc2UgaW1wbGVtZW50cyBJZ3hUYWJzQmFzZSwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95IHtcblxuICAgIC8qKlxuICAgICAqIEFuIEBJbnB1dCBwcm9wZXJ0eSB0aGF0IGdldHMvc2V0cyB0aGUgaW5kZXggb2YgdGhlIHNlbGVjdGVkIGl0ZW0uXG4gICAgICogRGVmYXVsdCB2YWx1ZSBpcyAwIGlmIGNvbnRlbnRzIGFyZSBkZWZpbmVkIG90aGVyd2lzZSBkZWZhdWx0cyB0byAtMS5cbiAgICAgKi9cbiAgICBASW5wdXQoKVxuICAgIHB1YmxpYyBnZXQgc2VsZWN0ZWRJbmRleCgpOiBudW1iZXIge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJbmRleDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0IHNlbGVjdGVkSW5kZXgodmFsdWU6IG51bWJlcikge1xuICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJbmRleCAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIGxldCBuZXdJbmRleCA9IHZhbHVlO1xuICAgICAgICAgICAgY29uc3Qgb2xkSW5kZXggPSB0aGlzLl9zZWxlY3RlZEluZGV4O1xuICAgICAgICAgICAgY29uc3QgYXJnczogSVRhYnNTZWxlY3RlZEluZGV4Q2hhbmdpbmdFdmVudEFyZ3MgPSB7XG4gICAgICAgICAgICAgICAgb3duZXI6IHRoaXMsXG4gICAgICAgICAgICAgICAgY2FuY2VsOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBvbGRJbmRleCxcbiAgICAgICAgICAgICAgICBuZXdJbmRleFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5naW5nLmVtaXQoYXJncyk7XG5cbiAgICAgICAgICAgIGlmICghYXJncy5jYW5jZWwpIHtcbiAgICAgICAgICAgICAgICBuZXdJbmRleCA9IGFyZ3MubmV3SW5kZXg7XG4gICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IG5ld0luZGV4O1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleENoYW5nZS5lbWl0KHRoaXMuX3NlbGVjdGVkSW5kZXgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVGFicyhvbGRJbmRleCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBFbmFibGVzL2Rpc2FibGVzIHRoZSB0cmFuc2l0aW9uIGFuaW1hdGlvbiBvZiB0aGUgY29udGVudHMuXG4gICAgICovXG4gICAgQElucHV0KClcbiAgICBwdWJsaWMgZ2V0IGRpc2FibGVBbmltYXRpb24oKSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9kaXNhYmxlQW5pbWF0aW9uO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXQgZGlzYWJsZUFuaW1hdGlvbih2YWx1ZTogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9kaXNhYmxlQW5pbWF0aW9uID0gdmFsdWU7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogT3V0cHV0IHRvIGVuYWJsZSBzdXBwb3J0IGZvciB0d28td2F5IGJpbmRpbmcgb24gWyhzZWxlY3RlZEluZGV4KV1cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWRJbmRleENoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8bnVtYmVyPigpO1xuXG4gICAgLyoqXG4gICAgICogRW1pdHRlZCB3aGVuIHRoZSBzZWxlY3RlZCBpbmRleCBpcyBhYm91dCB0byBjaGFuZ2UuXG4gICAgICovXG4gICAgQE91dHB1dCgpXG4gICAgcHVibGljIHNlbGVjdGVkSW5kZXhDaGFuZ2luZyA9IG5ldyBFdmVudEVtaXR0ZXI8SVRhYnNTZWxlY3RlZEluZGV4Q2hhbmdpbmdFdmVudEFyZ3M+KCk7XG5cbiAgICAvKipcbiAgICAgKiBFbWl0dGVkIHdoZW4gdGhlIHNlbGVjdGVkIGl0ZW0gaXMgY2hhbmdlZC5cbiAgICAgKi9cbiAgICBAT3V0cHV0KClcbiAgICBwdWJsaWMgc2VsZWN0ZWRJdGVtQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxJVGFic1NlbGVjdGVkSXRlbUNoYW5nZUV2ZW50QXJncz4oKTtcblxuICAgIC8qKlxuICAgICAqIFJldHVybnMgdGhlIGl0ZW1zLlxuICAgICAqL1xuICAgIEBDb250ZW50Q2hpbGRyZW4oSWd4VGFiSXRlbURpcmVjdGl2ZSlcbiAgICBwdWJsaWMgaXRlbXM6IFF1ZXJ5TGlzdDxJZ3hUYWJJdGVtRGlyZWN0aXZlPjtcblxuICAgIC8qKlxuICAgICAqIEdldHMgdGhlIHNlbGVjdGVkIGl0ZW0uXG4gICAgICovXG4gICAgcHVibGljIGdldCBzZWxlY3RlZEl0ZW0oKTogSWd4VGFiSXRlbURpcmVjdGl2ZSB7XG4gICAgICAgIHJldHVybiB0aGlzLml0ZW1zICYmIHRoaXMuc2VsZWN0ZWRJbmRleCA+PSAwICYmIHRoaXMuc2VsZWN0ZWRJbmRleCA8IHRoaXMuaXRlbXMubGVuZ3RoID9cbiAgICAgICAgICAgIHRoaXMuaXRlbXMuZ2V0KHRoaXMuc2VsZWN0ZWRJbmRleCkgOiBudWxsO1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgQENvbnRlbnRDaGlsZHJlbihJZ3hUYWJDb250ZW50QmFzZSwgeyBkZXNjZW5kYW50czogdHJ1ZSB9KVxuICAgIHB1YmxpYyBwYW5lbHM6IFF1ZXJ5TGlzdDxJZ3hUYWJDb250ZW50QmFzZT47XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBfZGlzYWJsZUFuaW1hdGlvbiA9IGZhbHNlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGN1cnJlbnRJdGVtOiBJZ3hUYWJJdGVtRGlyZWN0aXZlO1xuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIHByZXZpb3VzSXRlbTogSWd4VGFiSXRlbURpcmVjdGl2ZTtcbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBjb21wb25lbnROYW1lOiBzdHJpbmc7XG5cbiAgICBwcml2YXRlIF9zZWxlY3RlZEluZGV4ID0gLTE7XG4gICAgcHJpdmF0ZSBfaXRlbUNoYW5nZXMkOiBTdWJzY3JpcHRpb247XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIGNvbnN0cnVjdG9yKGJ1aWxkZXI6IEFuaW1hdGlvbkJ1aWxkZXIsIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcbiAgICAgICAgc3VwZXIoYnVpbGRlciwgY2RyKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ID09PSAtMSkge1xuICAgICAgICAgICAgY29uc3QgaGFzU2VsZWN0ZWRUYWIgPSB0aGlzLml0ZW1zLnNvbWUoKHRhYiwgaSkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0YWIuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRJbmRleCA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiB0YWIuc2VsZWN0ZWQ7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKCFoYXNTZWxlY3RlZFRhYiAmJiB0aGlzLmhhc1BhbmVscykge1xuICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSW5kZXggPSAwO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgLy8gVXNlIHByb21pc2UgdG8gYXZvaWQgZXhwcmVzc2lvbiBjaGFuZ2VkIGFmdGVyIGNoZWNrIGVycm9yXG4gICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWxlY3RlZFRhYnMobnVsbCwgZmFsc2UpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9pdGVtQ2hhbmdlcyQgPSB0aGlzLml0ZW1zLmNoYW5nZXMuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMub25JdGVtQ2hhbmdlcygpO1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZXMoKTtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX2l0ZW1DaGFuZ2VzJCkge1xuICAgICAgICAgICAgdGhpcy5faXRlbUNoYW5nZXMkLnVuc3Vic2NyaWJlKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHB1YmxpYyBzZWxlY3RUYWIodGFiOiBJZ3hUYWJJdGVtRGlyZWN0aXZlLCBzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuaXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHRhYnMgPSB0aGlzLml0ZW1zLnRvQXJyYXkoKTtcblxuICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGluZGV4ID0gdGFicy5pbmRleE9mKHRhYik7XG4gICAgICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleCA9IGluZGV4O1xuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKHRhYnMuZXZlcnkodCA9PiAhdC5zZWxlY3RlZCkpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSAtMTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGdldFByZXZpb3VzRWxlbWVudCgpOiBIVE1MRWxlbWVudCB7XG4gICAgICAgIHJldHVybiB0aGlzLnByZXZpb3VzSXRlbS5wYW5lbENvbXBvbmVudC5uYXRpdmVFbGVtZW50O1xuICAgIH1cblxuICAgIC8qKiBAaGlkZGVuICovXG4gICAgcHJvdGVjdGVkIGdldEN1cnJlbnRFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudEl0ZW0ucGFuZWxDb21wb25lbnQubmF0aXZlRWxlbWVudDtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBzY3JvbGxUYWJIZWFkZXJJbnRvVmlldygpIHtcbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBvbkl0ZW1DaGFuZ2VzKCkge1xuICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZXMoKTtcblxuICAgICAgICAvLyBDaGVjayBpZiB0aGVyZSBpcyBzZWxlY3RlZCB0YWJcbiAgICAgICAgbGV0IHNlbGVjdGVkSW5kZXggPSAtMTtcbiAgICAgICAgdGhpcy5pdGVtcy5zb21lKCh0YWIsIGkpID0+IHtcbiAgICAgICAgICAgIGlmICh0YWIuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICBzZWxlY3RlZEluZGV4ID0gaTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB0YWIuc2VsZWN0ZWQ7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChzZWxlY3RlZEluZGV4ID49IDApIHtcbiAgICAgICAgICAgIC8vIFNldCB0aGUgc2VsZWN0ZWQgaW5kZXggdG8gdGhlIHRhYiB0aGF0IGhhcyBzZWxlY3RlZD10cnVlXG4gICAgICAgICAgICBQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSBzZWxlY3RlZEluZGV4O1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID49IDAgJiYgdGhpcy5zZWxlY3RlZEluZGV4IDwgdGhpcy5pdGVtcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAvLyBTZWxlY3QgdGhlIHRhYiBvbiB0aGUgc2FtZSBpbmRleCB0aGUgcHJldmlvdXMgc2VsZWN0ZWQgdGFiIHdhc1xuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnVwZGF0ZVNlbGVjdGVkVGFicyhudWxsKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RlZEluZGV4ID49IHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgLy8gU2VsZWN0IHRoZSBsYXN0IHRhYlxuICAgICAgICAgICAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXggPSB0aGlzLml0ZW1zLmxlbmd0aCAtIDE7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEF0dHJpYnV0ZXMoKSB7XG4gICAgICAgIHRoaXMuaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmIChpdGVtLnBhbmVsQ29tcG9uZW50ICYmICFpdGVtLmhlYWRlckNvbXBvbmVudC5uYXRpdmVFbGVtZW50LmdldEF0dHJpYnV0ZSgnaWQnKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGlkID0gdGhpcy5nZXROZXh0VGFiSWQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJIZWFkZXJJZCA9IGAke3RoaXMuY29tcG9uZW50TmFtZX0taGVhZGVyLSR7aWR9YDtcbiAgICAgICAgICAgICAgICBjb25zdCB0YWJQYW5lbElkID0gYCR7dGhpcy5jb21wb25lbnROYW1lfS1jb250ZW50LSR7aWR9YDtcblxuICAgICAgICAgICAgICAgIHRoaXMuc2V0SGVhZGVyQXR0cmlidXRlKGl0ZW0sICdpZCcsIHRhYkhlYWRlcklkKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldEhlYWRlckF0dHJpYnV0ZShpdGVtLCAnYXJpYS1jb250cm9scycsIHRhYlBhbmVsSWQpO1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0UGFuZWxBdHRyaWJ1dGUoaXRlbSwgJ2lkJywgdGFiUGFuZWxJZCk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQYW5lbEF0dHJpYnV0ZShpdGVtLCAnYXJpYS1sYWJlbGxlZGJ5JywgdGFiSGVhZGVySWQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG5cbiAgICBwcml2YXRlIHNldEhlYWRlckF0dHJpYnV0ZShpdGVtOiBJZ3hUYWJJdGVtRGlyZWN0aXZlLCBhdHRyTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGl0ZW0uaGVhZGVyQ29tcG9uZW50Lm5hdGl2ZUVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJOYW1lLCB2YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXRQYW5lbEF0dHJpYnV0ZShpdGVtOiBJZ3hUYWJJdGVtRGlyZWN0aXZlLCBhdHRyTmFtZTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nKSB7XG4gICAgICAgIGl0ZW0ucGFuZWxDb21wb25lbnQubmF0aXZlRWxlbWVudC5zZXRBdHRyaWJ1dGUoYXR0ck5hbWUsIHZhbHVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldCBoYXNQYW5lbHMoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhbmVscyAmJiB0aGlzLnBhbmVscy5sZW5ndGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB1cGRhdGVTZWxlY3RlZFRhYnMob2xkU2VsZWN0ZWRJbmRleDogbnVtYmVyLCByYWlzZUV2ZW50ID0gdHJ1ZSkge1xuICAgICAgICBpZiAoIXRoaXMuaXRlbXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBuZXdUYWI6IElneFRhYkl0ZW1EaXJlY3RpdmU7XG4gICAgICAgIGNvbnN0IG9sZFRhYiA9IHRoaXMuY3VycmVudEl0ZW07XG5cbiAgICAgICAgLy8gRmlyc3Qgc2VsZWN0IHRoZSBuZXcgdGFiXG4gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEluZGV4ID49IDAgJiYgdGhpcy5fc2VsZWN0ZWRJbmRleCA8IHRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICBuZXdUYWIgPSB0aGlzLml0ZW1zLmdldCh0aGlzLl9zZWxlY3RlZEluZGV4KTtcbiAgICAgICAgICAgIG5ld1RhYi5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgLy8gVGhlbiB1bnNlbGVjdCB0aGUgb3RoZXIgdGFic1xuICAgICAgICB0aGlzLml0ZW1zLmZvckVhY2goKHRhYiwgaSkgPT4ge1xuICAgICAgICAgICAgaWYgKGkgIT09IHRoaXMuX3NlbGVjdGVkSW5kZXgpIHtcbiAgICAgICAgICAgICAgICB0YWIuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSW5kZXggIT09IG9sZFNlbGVjdGVkSW5kZXgpIHtcbiAgICAgICAgICAgIHRoaXMuc2Nyb2xsVGFiSGVhZGVySW50b1ZpZXcoKTtcbiAgICAgICAgICAgIHRoaXMudHJpZ2dlclBhbmVsQW5pbWF0aW9ucyhvbGRTZWxlY3RlZEluZGV4KTtcblxuICAgICAgICAgICAgaWYgKHJhaXNlRXZlbnQgJiYgbmV3VGFiICE9PSBvbGRUYWIpIHtcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbUNoYW5nZS5lbWl0KHtcbiAgICAgICAgICAgICAgICAgICAgb3duZXI6IHRoaXMsXG4gICAgICAgICAgICAgICAgICAgIG5ld0l0ZW06IG5ld1RhYixcbiAgICAgICAgICAgICAgICAgICAgb2xkSXRlbTogb2xkVGFiXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIHRyaWdnZXJQYW5lbEFuaW1hdGlvbnMob2xkU2VsZWN0ZWRJbmRleDogbnVtYmVyKSB7XG4gICAgICAgIGNvbnN0IGl0ZW0gPSB0aGlzLml0ZW1zLmdldCh0aGlzLl9zZWxlY3RlZEluZGV4KTtcblxuICAgICAgICBpZiAoaXRlbSAmJlxuICAgICAgICAgICAgIXRoaXMuZGlzYWJsZUFuaW1hdGlvbiAmJlxuICAgICAgICAgICAgdGhpcy5oYXNQYW5lbHMgJiZcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEl0ZW0gJiZcbiAgICAgICAgICAgICF0aGlzLmN1cnJlbnRJdGVtLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICBpdGVtLmRpcmVjdGlvbiA9IHRoaXMuX3NlbGVjdGVkSW5kZXggPiBvbGRTZWxlY3RlZEluZGV4ID8gRGlyZWN0aW9uLk5FWFQgOiBEaXJlY3Rpb24uUFJFVjtcblxuICAgICAgICAgICAgaWYgKHRoaXMucHJldmlvdXNJdGVtICYmIHRoaXMucHJldmlvdXNJdGVtLnByZXZpb3VzKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5wcmV2aW91c0l0ZW0ucHJldmlvdXMgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY3VycmVudEl0ZW0uZGlyZWN0aW9uID0gaXRlbS5kaXJlY3Rpb247XG5cbiAgICAgICAgICAgIHRoaXMucHJldmlvdXNJdGVtID0gdGhpcy5jdXJyZW50SXRlbTtcbiAgICAgICAgICAgIHRoaXMuY3VycmVudEl0ZW0gPSBpdGVtO1xuICAgICAgICAgICAgdGhpcy50cmlnZ2VyQW5pbWF0aW9ucygpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5jdXJyZW50SXRlbSA9IGl0ZW07XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICAvKiogQGhpZGRlbiAqL1xuICAgIHByb3RlY3RlZCBhYnN0cmFjdCBnZXROZXh0VGFiSWQoKTtcbn1cbiJdfQ==
@@ -41547,7 +41547,7 @@ IgxExcelStyleHeaderComponent.decorators = [
41547
41547
  { type: Component, args: [{
41548
41548
  preserveWhitespaces: false,
41549
41549
  selector: 'igx-excel-style-header',
41550
- template: "<header *ngIf=\"esf.column\"\r\n class=\"igx-excel-filter__menu-header\">\r\n <h4>{{ esf.column.header || esf.column.field }}</h4>\r\n <div class=\"igx-excel-filter__menu-header-actions\">\r\n <button *ngIf=\"showSelecting\"\r\n igxButton=\"icon\"\r\n (click)=\"esf.onSelect()\"\r\n [ngClass]=\"esf.selectedClass()\"\r\n [attr.aria-label]=\"esf.column.selected ? esf.grid.resourceStrings.igx_grid_excel_deselect : esf.grid.resourceStrings.igx_grid_excel_select\"\r\n >\r\n <igx-icon>done</igx-icon>\r\n </button>\r\n <button *ngIf=\"showPinning\"\r\n igxButton=\"icon\"\r\n (click)=\"esf.onPin()\"\r\n [attr.aria-label]=\"esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin\"\r\n >\r\n <igx-icon family=\"imx-icons\" [name]=\"esf.column.pinned ? 'unpin-left' : 'pin-left'\"></igx-icon>\r\n </button>\r\n <button *ngIf=\"showHiding\"\r\n igxButton=\"icon\"\r\n (click)=\"esf.onHideToggle()\"\r\n [attr.aria-label]=\"esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide\"\r\n >\r\n <igx-icon>{{ esf.column.hidden ? 'visibility' : 'visibility_off' }}</igx-icon>\r\n </button>\r\n </div>\r\n</header>\r\n"
41550
+ template: "<header *ngIf=\"esf.column\"\n class=\"igx-excel-filter__menu-header\">\n <h4>{{ esf.column.header || esf.column.field }}</h4>\n <div class=\"igx-excel-filter__menu-header-actions\">\n <button *ngIf=\"showSelecting\"\n igxButton=\"icon\"\n (click)=\"esf.onSelect()\"\n [ngClass]=\"esf.selectedClass()\"\n [attr.aria-label]=\"esf.column.selected ? esf.grid.resourceStrings.igx_grid_excel_deselect : esf.grid.resourceStrings.igx_grid_excel_select\"\n >\n <igx-icon>done</igx-icon>\n </button>\n <button *ngIf=\"showPinning\"\n igxButton=\"icon\"\n (click)=\"esf.onPin()\"\n [attr.aria-label]=\"esf.column.pinned ? esf.grid.resourceStrings.igx_grid_excel_unpin : esf.grid.resourceStrings.igx_grid_excel_pin\"\n >\n <igx-icon family=\"imx-icons\" [name]=\"esf.column.pinned ? 'unpin-left' : 'pin-left'\"></igx-icon>\n </button>\n <button *ngIf=\"showHiding\"\n igxButton=\"icon\"\n (click)=\"esf.onHideToggle()\"\n [attr.aria-label]=\"esf.column.hidden ? esf.grid.resourceStrings.igx_grid_excel_show : esf.grid.resourceStrings.igx_grid_excel_hide\"\n >\n <igx-icon>{{ esf.column.hidden ? 'visibility' : 'visibility_off' }}</igx-icon>\n </button>\n </div>\n</header>\n"
41551
41551
  },] }
41552
41552
  ];
41553
41553
  IgxExcelStyleHeaderComponent.ctorParameters = () => [
@@ -46510,7 +46510,7 @@ class IgxAdvancedFilteringDialogComponent {
46510
46510
  IgxAdvancedFilteringDialogComponent.decorators = [
46511
46511
  { type: Component, args: [{
46512
46512
  selector: 'igx-advanced-filtering-dialog',
46513
- template: "<article\n *ngIf=\"grid\"\n class=\"igx-advanced-filter\"\n igxDrag\n [ghost]=\"false\"\n [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\"\n (dragEnd)=\"dragEnd()\"\n (dragMove)=\"onDragMove($event)\"\n (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter--cosy': grid.displayDensity === 'cosy',\n 'igx-advanced-filter--compact': grid.displayDensity === 'compact',\n 'igx-advanced-filter--inline': inline\n }\"\n>\n <header class=\"igx-advanced-filter__header\" igxDragHandle>\n <h4 class=\"igx-typography__h6\" style=\"pointer-events: none;\">\n {{ grid.resourceStrings.igx_grid_advanced_filter_title }}\n </h4>\n <div class=\"igx-filter-legend\">\n <div class=\"igx-filter-legend__item--and\">\n <span>{{ grid.resourceStrings.igx_grid_advanced_filter_and_label }}</span>\n </div>\n <div class=\"igx-filter-legend__item--or\">\n <span>{{ grid.resourceStrings.igx_grid_advanced_filter_or_label }}</span>\n </div>\n </div>\n </header>\n\n <article #expressionsContainer\n class=\"igx-advanced-filter__main\"\n (scroll)=\"onExpressionsScrolled()\">\n <ng-container *ngIf=\"!rootGroup\">\n\n <button #addRootAndGroupButton\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"addAndGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_and_group}}</span>\n </button>\n\n <button igxButton=\"outlined\" [displayDensity]=\"displayDensity\" (click)=\"addOrGroup()\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_or_group}}</span>\n </button>\n\n <div class=\"igx-filter-empty\">\n <h6 class=\"igx-filter-empty__title\">\n {{grid.resourceStrings.igx_grid_advanced_filter_initial_text}}\n </h6>\n </div>\n </ng-container>\n\n <ng-template #addExpressionsTemplate let-expressionItem let-afterExpression=\"afterExpression\">\n <button #addConditionButton\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_add_condition}}</span>\n </button>\n\n <button igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addAndGroup(expressionItem, afterExpression)\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_and_group}}</span>\n </button>\n\n <button igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addOrGroup(expressionItem, afterExpression)\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_or_group}}</span>\n </button>\n\n </ng-template>\n\n <ng-template #filterOperandTemplate let-expressionItem>\n <div *ngIf=\"!expressionItem.inEditMode\"\n class=\"igx-filter-tree__expression-item\"\n (mouseenter)=\"expressionItem.hovered = true\"\n (mouseleave)=\"expressionItem.hovered = false\"\n >\n <igx-chip [data]=\"expressionItem\"\n [displayDensity]=\"displayDensity === 'compact' ? 'cosy' : displayDensity\"\n [removable]=\"true\"\n [selected]=\"expressionItem.selected\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onChipClick(expressionItem)\"\n (dblclick)=\"onChipDblClick(expressionItem)\"\n (remove)=\"onChipRemove(expressionItem)\"\n (selectedChanged)=\"onChipSelectionEnd()\"\n >\n <span igxPrefix class=\"igx-filter-tree__expression-column\">{{ expressionItem.columnHeader || expressionItem.expression.fieldName }}</span>\n <igx-prefix>\n <igx-icon family=\"imx-icons\" [name]=\"expressionItem.expression.condition.iconName\">\n </igx-icon>\n </igx-prefix>\n <span class=\"igx-filter-tree__expression-condition\">\n {{ getConditionFriendlyName(expressionItem.expression.condition.name) }}\n </span>\n <span igxSuffix *ngIf=\"!expressionItem.expression.condition.isUnary\">\n {{\n isDate(expressionItem.expression.searchVal)\n ? getFormatter(expressionItem.expression.fieldName)\n ? (expressionItem.expression.searchVal | columnFormatter:getFormatter(expressionItem.expression.fieldName):undefined)\n : (expressionItem.expression.searchVal | date:getFormat(expressionItem.expression.fieldName):undefined:grid.locale)\n : expressionItem.expression.searchVal\n }}\n </span>\n </igx-chip>\n <div class=\"igx-filter-tree__expression-actions\"\n *ngIf=\"(expressionItem.selected && selectedExpressions.length === 1) || expressionItem.hovered\">\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionEdit(expressionItem)\">\n edit\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionAdd(expressionItem)\"\n *ngIf=\"!expressionItem.inAddMode && (expressionItem.parent !== currentGroup || expressionItem !== currentGroup.children[currentGroup.children.length - 1])\"\n >\n add\n </igx-icon>\n </div>\n </div>\n\n <div *ngIf=\"expressionItem.inEditMode\"\n #editingInputsContainer\n class=\"igx-filter-tree__inputs\"\n >\n <igx-select #columnSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"columnSelectOverlaySettings\"\n [placeholder]=\"grid.resourceStrings.igx_grid_advanced_filter_column_placeholder\"\n [(ngModel)]=\"selectedColumn\">\n <igx-select-item *ngFor=\"let column of filterableColumns\" [value]=\"column\">\n {{column.header || column.field}}\n </igx-select-item>\n </igx-select>\n\n <igx-select #conditionSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"conditionSelectOverlaySettings\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_condition_placeholder\"\n [(ngModel)]=\"selectedCondition\"\n [disabled]=\"!selectedColumn\">\n <igx-prefix *ngIf=\"selectedColumn && conditionSelect.value && selectedColumn.filters.condition(conditionSelect.value)\">\n <igx-icon family=\"imx-icons\" [name]=\"selectedColumn.filters.condition(conditionSelect.value).iconName\">\n </igx-icon>\n </igx-prefix>\n <igx-select-item *ngFor=\"let condition of getConditionList()\" [value]=\"condition\" [text]=\"getConditionFriendlyName(condition)\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon family=\"imx-icons\"\n [name]=\"selectedColumn.filters.condition(condition).iconName\">\n </igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{getConditionFriendlyName(condition)}}</span>\n </div>\n </igx-select-item>\n </igx-select>\n\n <igx-input-group *ngIf=\"!selectedColumn || (selectedColumn.dataType !== 'date' && selectedColumn.dataType !== 'time' && selectedColumn.dataType !== 'dateTime')\"\n type=\"box\"\n [displayDensity]=\"'compact'\">\n <input #searchValueInput\n igxInput\n [disabled]=\"!selectedColumn || !selectedCondition\n || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\"\n [type]=\"selectedColumn && selectedColumn.dataType === 'number' ? 'number' : 'text'\"\n [placeholder]=\"grid.resourceStrings.igx_grid_advanced_filter_value_placeholder\"\n [(ngModel)]=\"searchValue\"/>\n </igx-input-group>\n\n <igx-date-picker #picker *ngIf=\"selectedColumn && selectedColumn.dataType === 'date'\"\n [(value)]=\"searchValue\"\n (keydown)=\"openPicker($event)\"\n [formatter]=\"selectedColumn.formatter\"\n [displayFormat]=\"selectedColumn.pipeArgs.format\"\n (click)=\"picker.open()\"\n type=\"box\"\n [readOnly]=\"true\"\n [displayDensity]=\"'compact'\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n [displayFormat]=\"selectedColumn.pipeArgs.format\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_date_placeholder\"\n [disabled]=\"!selectedColumn || !selectedCondition\n || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n\n <igx-time-picker #picker *ngIf=\"selectedColumn && selectedColumn.dataType === 'time'\"\n [inputFormat]=\"selectedColumn.defaultTimeFormat\"\n [(value)]=\"searchValue\"\n [formatter]=\"selectedColumn.formatter\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n (click)=\"picker.open()\"\n (keydown)=\"openPicker($event)\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_time_placeholder\"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"!selectedColumn || !selectedCondition ||\n (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n\n <igx-input-group #inputGroup type=\"box\" *ngIf=\"selectedColumn && selectedColumn.dataType === 'dateTime'\"\n type=\"box\"\n [displayDensity]=\"'compact'\">\n <input #input igxInput tabindex=\"0\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_date_placeholder\"\n [igxDateTimeEditor]=\"selectedColumn.defaultDateTimeFormat\"\n [(ngModel)]=\"searchValue\"\n [disabled]=\"!selectedColumn || !selectedCondition || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\"/>\n </igx-input-group>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitOperandEdit()\">\n <igx-icon>check</igx-icon>\n </button>\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelOperandEdit()\">\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"expressionItem.inAddMode\"\n #addModeContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container *ngTemplateOutlet=\"addExpressionsTemplate; context: context(expressionItem.parent, expressionItem)\"></ng-container>\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelOperandAdd()\">\n <igx-icon>close</igx-icon>\n </button>\n </div>\n\n </ng-template>\n\n <ng-template #expressionTreeTemplate let-expressionItem>\n <div class=\"igx-filter-tree\">\n <div tabindex=\"0\"\n class=\"igx-filter-tree__line\"\n [ngClass]=\"{\n 'igx-filter-tree__line--and': expressionItem.operator === 0,\n 'igx-filter-tree__line--or': expressionItem.operator === 1,\n 'igx-filter-tree__line--selected': expressionItem.selected\n }\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onGroupClick(expressionItem)\"\n ></div>\n\n <div class=\"igx-filter-tree__expression\">\n <ng-container *ngFor=\"let expr of expressionItem.children\">\n <ng-container *ngTemplateOutlet=\"isExpressionGroup(expr) ? expressionTreeTemplate : filterOperandTemplate; context: context(expr)\"></ng-container>\n </ng-container>\n <div *ngIf=\"currentGroup === expressionItem\"\n #currentGroupButtonsContainer\n class=\"igx-filter-tree__buttons\">\n <ng-container *ngTemplateOutlet=\"addExpressionsTemplate; context: context(expressionItem)\"></ng-container>\n <button igxButton=\"outlined\"\n *ngIf=\"expressionItem !== rootGroup\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression || expressionItem.children.length < 2\"\n (click)=\"endGroup(expressionItem)\">\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_end_group}}</span>\n </button>\n </div>\n </div>\n </div>\n\n </ng-template>\n\n <ng-container *ngIf=\"rootGroup\">\n <ng-container *ngTemplateOutlet=\"expressionTreeTemplate; context: context(rootGroup)\"></ng-container>\n </ng-container>\n\n <div igxToggle\n class=\"igx-filter-contextual-menu\"\n (keydown)=\"onKeyDown($event)\"\n (closed)=\"contextMenuClosed()\"\n [ngClass]=\"{\n 'igx-filter-contextual-menu--cosy': displayDensity === 'cosy',\n 'igx-filter-contextual-menu--compact': displayDensity === 'compact'\n }\"\n >\n <button igxButton=\"icon\"\n class=\"igx-filter-contextual-menu__close-btn\"\n (click)=\"clearSelection()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n\n <ng-container *ngIf=\"contextualGroup\">\n <igx-buttongroup [displayDensity]=\"displayDensity\"\n [multiSelection]=\"false\"\n [values]=\"filteringLogics\"\n type=\"outline\"\n (selected)=\"selectFilteringLogic($event)\">\n </igx-buttongroup>\n\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"!contextualGroup.parent\"\n (click)=\"ungroup()\"\n >\n <igx-icon family=\"imx-icons\" name=\"ungroup\"></igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_ungroup}}</span>\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"deleteGroup()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n <igx-icon>delete</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_delete}}</span>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!contextualGroup\">\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"createAndGroup()\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_create_and_group}}\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"createOrGroup()\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_create_or_group}}\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"deleteFilters()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_delete_filters}}\n </button>\n </ng-container>\n </div>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button\n igxButton=\"flat\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button\n igxButton=\"flat\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button\n igxButton=\"raised\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n<div #overlayOutlet\n igxOverlayOutlet\n class=\"igx-advanced-filter__outlet\"\n (pointerdown)=\"onOutletPointerDown($event)\">\n</div>\n"
46513
+ template: "<article\n *ngIf=\"grid\"\n class=\"igx-advanced-filter\"\n igxDrag\n [ghost]=\"false\"\n [dragTolerance]=\"0\"\n (dragStart)=\"dragStart($event)\"\n (dragEnd)=\"dragEnd()\"\n (dragMove)=\"onDragMove($event)\"\n (keydown)=\"onKeyDown($event)\"\n [ngClass]=\"{\n 'igx-advanced-filter--cosy': grid.displayDensity === 'cosy',\n 'igx-advanced-filter--compact': grid.displayDensity === 'compact',\n 'igx-advanced-filter--inline': inline\n }\"\n>\n <header class=\"igx-advanced-filter__header\" igxDragHandle>\n <h4 class=\"igx-typography__h6\" style=\"pointer-events: none;\">\n {{ grid.resourceStrings.igx_grid_advanced_filter_title }}\n </h4>\n <div class=\"igx-filter-legend\">\n <div class=\"igx-filter-legend__item--and\">\n <span>{{ grid.resourceStrings.igx_grid_advanced_filter_and_label }}</span>\n </div>\n <div class=\"igx-filter-legend__item--or\">\n <span>{{ grid.resourceStrings.igx_grid_advanced_filter_or_label }}</span>\n </div>\n </div>\n </header>\n\n <article #expressionsContainer\n class=\"igx-advanced-filter__main\"\n (scroll)=\"onExpressionsScrolled()\">\n <ng-container *ngIf=\"!rootGroup\">\n\n <button #addRootAndGroupButton\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"addAndGroup()\"\n >\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_and_group}}</span>\n </button>\n\n <button igxButton=\"outlined\" [displayDensity]=\"displayDensity\" (click)=\"addOrGroup()\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_or_group}}</span>\n </button>\n\n <div class=\"igx-filter-empty\">\n <h6 class=\"igx-filter-empty__title\">\n {{grid.resourceStrings.igx_grid_advanced_filter_initial_text}}\n </h6>\n </div>\n </ng-container>\n\n <ng-template #addExpressionsTemplate let-expressionItem let-afterExpression=\"afterExpression\">\n <button #addConditionButton\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addCondition(expressionItem, afterExpression)\"\n >\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_add_condition}}</span>\n </button>\n\n <button igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addAndGroup(expressionItem, afterExpression)\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_and_group}}</span>\n </button>\n\n <button igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression\"\n (click)=\"addOrGroup(expressionItem, afterExpression)\">\n <igx-icon>add</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_or_group}}</span>\n </button>\n\n </ng-template>\n\n <ng-template #filterOperandTemplate let-expressionItem>\n <div *ngIf=\"!expressionItem.inEditMode\"\n class=\"igx-filter-tree__expression-item\"\n (mouseenter)=\"expressionItem.hovered = true\"\n (mouseleave)=\"expressionItem.hovered = false\"\n >\n <igx-chip [data]=\"expressionItem\"\n [displayDensity]=\"displayDensity === 'compact' ? 'cosy' : displayDensity\"\n [removable]=\"true\"\n [selected]=\"expressionItem.selected\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onChipClick(expressionItem)\"\n (dblclick)=\"onChipDblClick(expressionItem)\"\n (remove)=\"onChipRemove(expressionItem)\"\n (selectedChanged)=\"onChipSelectionEnd()\"\n >\n <span igxPrefix class=\"igx-filter-tree__expression-column\">{{ expressionItem.columnHeader || expressionItem.expression.fieldName }}</span>\n <igx-prefix>\n <igx-icon family=\"imx-icons\" [name]=\"expressionItem.expression.condition.iconName\">\n </igx-icon>\n </igx-prefix>\n <span class=\"igx-filter-tree__expression-condition\">\n {{ getConditionFriendlyName(expressionItem.expression.condition.name) }}\n </span>\n <span igxSuffix *ngIf=\"!expressionItem.expression.condition.isUnary\">\n {{\n isDate(expressionItem.expression.searchVal)\n ? getFormatter(expressionItem.expression.fieldName)\n ? (expressionItem.expression.searchVal | columnFormatter:getFormatter(expressionItem.expression.fieldName):undefined)\n : (expressionItem.expression.searchVal | date:getFormat(expressionItem.expression.fieldName):undefined:grid.locale)\n : expressionItem.expression.searchVal\n }}\n </span>\n </igx-chip>\n <div class=\"igx-filter-tree__expression-actions\"\n *ngIf=\"(expressionItem.selected && selectedExpressions.length === 1) || expressionItem.hovered\">\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionEdit(expressionItem)\">\n edit\n </igx-icon>\n <igx-icon\n tabindex=\"0\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"enterExpressionAdd(expressionItem)\"\n *ngIf=\"!expressionItem.inAddMode && (expressionItem.parent !== currentGroup || expressionItem !== currentGroup.children[currentGroup.children.length - 1])\"\n >\n add\n </igx-icon>\n </div>\n </div>\n\n <div *ngIf=\"expressionItem.inEditMode\"\n #editingInputsContainer\n class=\"igx-filter-tree__inputs\"\n >\n <igx-select #columnSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"columnSelectOverlaySettings\"\n [placeholder]=\"grid.resourceStrings.igx_grid_advanced_filter_column_placeholder\"\n [(ngModel)]=\"selectedColumn\">\n <igx-select-item *ngFor=\"let column of filterableColumns\" [value]=\"column\">\n {{column.header || column.field}}\n </igx-select-item>\n </igx-select>\n\n <igx-select #conditionSelect\n type=\"box\"\n [displayDensity]=\"'compact'\"\n [overlaySettings]=\"conditionSelectOverlaySettings\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_condition_placeholder\"\n [(ngModel)]=\"selectedCondition\"\n [disabled]=\"!selectedColumn\">\n <igx-prefix *ngIf=\"selectedColumn && conditionSelect.value && selectedColumn.filters.condition(conditionSelect.value)\">\n <igx-icon family=\"imx-icons\" [name]=\"selectedColumn.filters.condition(conditionSelect.value).iconName\">\n </igx-icon>\n </igx-prefix>\n <igx-select-item *ngFor=\"let condition of getConditionList()\" [value]=\"condition\" [text]=\"getConditionFriendlyName(condition)\">\n <div class=\"igx-grid__filtering-dropdown-items\">\n <igx-icon family=\"imx-icons\"\n [name]=\"selectedColumn.filters.condition(condition).iconName\">\n </igx-icon>\n <span class=\"igx-grid__filtering-dropdown-text\">{{getConditionFriendlyName(condition)}}</span>\n </div>\n </igx-select-item>\n </igx-select>\n\n <igx-input-group *ngIf=\"!selectedColumn || (selectedColumn.dataType !== 'date' && selectedColumn.dataType !== 'time' && selectedColumn.dataType !== 'dateTime')\"\n type=\"box\"\n [displayDensity]=\"'compact'\">\n <input #searchValueInput\n igxInput\n [disabled]=\"!selectedColumn || !selectedCondition\n || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\"\n [type]=\"selectedColumn && selectedColumn.dataType === 'number' ? 'number' : 'text'\"\n [placeholder]=\"grid.resourceStrings.igx_grid_advanced_filter_value_placeholder\"\n [(ngModel)]=\"searchValue\"/>\n </igx-input-group>\n\n <igx-date-picker #picker *ngIf=\"selectedColumn && selectedColumn.dataType === 'date'\"\n [(value)]=\"searchValue\"\n (keydown)=\"openPicker($event)\"\n [formatter]=\"selectedColumn.formatter\"\n [displayFormat]=\"selectedColumn.pipeArgs.format\"\n (click)=\"picker.open()\"\n type=\"box\"\n [readOnly]=\"true\"\n [displayDensity]=\"'compact'\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n [displayFormat]=\"selectedColumn.pipeArgs.format\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_date_placeholder\"\n [disabled]=\"!selectedColumn || !selectedCondition\n || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-date-picker>\n\n <igx-time-picker #picker *ngIf=\"selectedColumn && selectedColumn.dataType === 'time'\"\n [inputFormat]=\"selectedColumn.defaultTimeFormat\"\n [(value)]=\"searchValue\"\n [formatter]=\"selectedColumn.formatter\"\n [locale]=\"grid.locale\"\n [outlet]=\"grid.outlet\"\n (click)=\"picker.open()\"\n (keydown)=\"openPicker($event)\"\n [displayDensity]=\"'compact'\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_time_placeholder\"\n type=\"box\"\n [readOnly]=\"true\"\n [disabled]=\"!selectedColumn || !selectedCondition ||\n (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\">\n <!-- disable default icons -->\n <igx-picker-toggle></igx-picker-toggle>\n <igx-picker-clear></igx-picker-clear>\n </igx-time-picker>\n\n <igx-input-group #inputGroup type=\"box\" *ngIf=\"selectedColumn && selectedColumn.dataType === 'dateTime'\"\n type=\"box\"\n [displayDensity]=\"'compact'\">\n <input #input igxInput tabindex=\"0\"\n [placeholder]=\"grid.resourceStrings.igx_grid_filter_row_date_placeholder\"\n [igxDateTimeEditor]=\"selectedColumn.defaultDateTimeFormat\"\n [(ngModel)]=\"searchValue\"\n [disabled]=\"!selectedColumn || !selectedCondition || (selectedColumn && selectedColumn.filters.condition(selectedCondition).isUnary)\"/>\n </igx-input-group>\n\n <div class=\"igx-filter-tree__inputs-actions\">\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"!operandCanBeCommitted()\"\n (click)=\"commitOperandEdit()\">\n <igx-icon>check</igx-icon>\n </button>\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelOperandEdit()\">\n <igx-icon>close</igx-icon>\n </button>\n </div>\n </div>\n\n <div *ngIf=\"expressionItem.inAddMode\"\n #addModeContainer\n class=\"igx-filter-tree__buttons\"\n >\n <ng-container *ngTemplateOutlet=\"addExpressionsTemplate; context: context(expressionItem.parent, expressionItem)\"></ng-container>\n <button igxButton=\"icon\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelOperandAdd()\">\n <igx-icon>close</igx-icon>\n </button>\n </div>\n\n </ng-template>\n\n <ng-template #expressionTreeTemplate let-expressionItem>\n <div class=\"igx-filter-tree\">\n <div tabindex=\"0\"\n class=\"igx-filter-tree__line\"\n [ngClass]=\"{\n 'igx-filter-tree__line--and': expressionItem.operator === 0,\n 'igx-filter-tree__line--or': expressionItem.operator === 1,\n 'igx-filter-tree__line--selected': expressionItem.selected\n }\"\n (keydown)=\"invokeClick($event)\"\n (click)=\"onGroupClick(expressionItem)\"\n ></div>\n\n <div class=\"igx-filter-tree__expression\">\n <ng-container *ngFor=\"let expr of expressionItem.children\">\n <ng-container *ngTemplateOutlet=\"isExpressionGroup(expr) ? expressionTreeTemplate : filterOperandTemplate; context: context(expr)\"></ng-container>\n </ng-container>\n <div *ngIf=\"currentGroup === expressionItem\"\n #currentGroupButtonsContainer\n class=\"igx-filter-tree__buttons\">\n <ng-container *ngTemplateOutlet=\"addExpressionsTemplate; context: context(expressionItem)\"></ng-container>\n <button igxButton=\"outlined\"\n *ngIf=\"expressionItem !== rootGroup\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"hasEditedExpression || expressionItem.children.length < 2\"\n (click)=\"endGroup(expressionItem)\">\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_end_group}}</span>\n </button>\n </div>\n </div>\n </div>\n\n </ng-template>\n\n <ng-container *ngIf=\"rootGroup\">\n <ng-container *ngTemplateOutlet=\"expressionTreeTemplate; context: context(rootGroup)\"></ng-container>\n </ng-container>\n\n <div igxToggle\n class=\"igx-filter-contextual-menu\"\n (keydown)=\"onKeyDown($event)\"\n (closed)=\"contextMenuClosed()\"\n [ngClass]=\"{\n 'igx-filter-contextual-menu--cosy': displayDensity === 'cosy',\n 'igx-filter-contextual-menu--compact': displayDensity === 'compact'\n }\"\n >\n <button igxButton=\"icon\"\n class=\"igx-filter-contextual-menu__close-btn\"\n (click)=\"clearSelection()\"\n >\n <igx-icon>close</igx-icon>\n </button>\n\n <ng-container *ngIf=\"contextualGroup\">\n <igx-buttongroup [displayDensity]=\"displayDensity\"\n [multiSelection]=\"false\"\n [values]=\"filteringLogics\"\n type=\"outline\"\n (selected)=\"selectFilteringLogic($event)\">\n </igx-buttongroup>\n\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n [disabled]=\"!contextualGroup.parent\"\n (click)=\"ungroup()\"\n >\n <igx-icon family=\"imx-icons\" name=\"ungroup\"></igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_ungroup}}</span>\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"deleteGroup()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n <igx-icon>delete</igx-icon>\n <span>{{grid.resourceStrings.igx_grid_advanced_filter_delete}}</span>\n </button>\n </ng-container>\n <ng-container *ngIf=\"!contextualGroup\">\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"createAndGroup()\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_create_and_group}}\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"createOrGroup()\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_create_or_group}}\n </button>\n <button\n igxButton=\"outlined\"\n [displayDensity]=\"displayDensity\"\n (click)=\"deleteFilters()\"\n class=\"igx-filter-contextual-menu__delete-btn\"\n >\n {{grid.resourceStrings.igx_grid_advanced_filter_delete_filters}}\n </button>\n </ng-container>\n </div>\n </article>\n\n <footer class=\"igx-excel-filter__secondary-footer\">\n <div class=\"igx-excel-filter__clear\">\n <button\n igxButton=\"flat\"\n type=\"button\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onClearButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_custom_dialog_clear }}\n </button>\n </div>\n <div class=\"igx-excel-filter__cancel\">\n <button\n igxButton=\"flat\"\n type=\"button\"\n [displayDensity]=\"displayDensity\"\n (click)=\"cancelChanges()\">\n {{ grid.resourceStrings.igx_grid_excel_cancel }}\n </button>\n </div>\n <div class=\"igx-excel-filter__apply\">\n <button\n igxButton=\"raised\"\n type=\"button\"\n [displayDensity]=\"displayDensity\"\n (click)=\"onApplyButtonClick($event)\">\n {{ grid.resourceStrings.igx_grid_excel_apply }}\n </button>\n </div>\n </footer>\n</article>\n<div #overlayOutlet\n igxOverlayOutlet\n class=\"igx-advanced-filter__outlet\"\n (pointerdown)=\"onOutletPointerDown($event)\">\n</div>\n"
46514
46514
  },] }
46515
46515
  ];
46516
46516
  IgxAdvancedFilteringDialogComponent.ctorParameters = () => [
@@ -63403,7 +63403,7 @@ class IgxGridToolbarAdvancedFilteringComponent {
63403
63403
  IgxGridToolbarAdvancedFilteringComponent.decorators = [
63404
63404
  { type: Component, args: [{
63405
63405
  selector: 'igx-grid-toolbar-advanced-filtering',
63406
- template: "<button igxButton=\"outlined\" [displayDensity]=\"grid.displayDensity\" name=\"btnAdvancedFiltering\" igxRipple\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip\"\n (click)=\"grid.openAdvancedFilteringDialog(overlaySettings)\"\n [ngClass]=\"grid.advancedFilteringExpressionsTree ? 'igx-grid-toolbar__adv-filter--filtered' : 'igx-grid-toolbar__adv-filter'\">\n <igx-icon>filter_list</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">{{ grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_label }}</span>\n</button>\n"
63406
+ template: "<button igxButton=\"outlined\" type=\"button\" [displayDensity]=\"grid.displayDensity\" name=\"btnAdvancedFiltering\" igxRipple\n [title]=\"grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_tooltip\"\n (click)=\"grid.openAdvancedFilteringDialog(overlaySettings)\"\n [ngClass]=\"grid.advancedFilteringExpressionsTree ? 'igx-grid-toolbar__adv-filter--filtered' : 'igx-grid-toolbar__adv-filter'\">\n <igx-icon>filter_list</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">{{ grid?.resourceStrings.igx_grid_toolbar_advanced_filtering_button_label }}</span>\n</button>\n"
63407
63407
  },] }
63408
63408
  ];
63409
63409
  IgxGridToolbarAdvancedFilteringComponent.ctorParameters = () => [
@@ -63649,7 +63649,7 @@ class IgxGridToolbarExporterComponent extends BaseToolbarDirective {
63649
63649
  IgxGridToolbarExporterComponent.decorators = [
63650
63650
  { type: Component, args: [{
63651
63651
  selector: 'igx-grid-toolbar-exporter',
63652
- template: "<button [title]=\"grid?.resourceStrings.igx_grid_toolbar_exporter_button_tooltip\" [disabled]=\"isExporting\"\n igxButton=\"outlined\" [displayDensity]=\"grid.displayDensity\" igxRipple #btn (click)=\"toggle(btn, toggleRef)\">\n\n <igx-icon>import_export</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">\n {{ grid.exportText || grid?.resourceStrings.igx_grid_toolbar_exporter_button_label }}\n </span>\n <igx-icon>arrow_drop_down</igx-icon>\n</button>\n\n<div class=\"igx-grid-toolbar__dropdown\" id=\"btnExport\">\n <ul class=\"igx-grid-toolbar__dd-list\" igxToggle #toggleRef=\"toggle\">\n <li *ngIf=\"grid.exportExcel || exportExcel\" #btnExportExcel id=\"btnExportExcel\"\n class=\"igx-grid-toolbar__dd-list-items\" igxRipple (click)=\"export('excel', toggleRef)\">\n\n <ng-template #excel>\n <ng-content select=[excelText],excel-text></ng-content>\n </ng-template>\n <excel-text *ngIf=\"!hasExcelAttr\">\n {{ grid.exportExcelText || grid?.resourceStrings.igx_grid_toolbar_exporter_excel_entry_text}}\n </excel-text>\n <ng-container *ngTemplateOutlet=\"excel\"></ng-container>\n </li>\n\n <li *ngIf=\"grid.exportCsv || exportCSV\" #btnExportCsv id=\"btnExportCsv\" class=\"igx-grid-toolbar__dd-list-items\"\n igxRipple (click)=\"export('csv', toggleRef)\">\n\n <ng-template #csv>\n <ng-content select=[csvText],csv-text></ng-content>\n </ng-template>\n <csv-text *ngIf=\"!hasCSVAttr\">\n {{ grid.exportCsvText || grid?.resourceStrings.igx_grid_toolbar_exporter_csv_entry_text }}</csv-text>\n <ng-container *ngTemplateOutlet=\"csv\"></ng-container>\n </li>\n </ul>\n</div>\n"
63652
+ template: "<button [title]=\"grid?.resourceStrings.igx_grid_toolbar_exporter_button_tooltip\" [disabled]=\"isExporting\"\n igxButton=\"outlined\" type=\"button\" [displayDensity]=\"grid.displayDensity\" igxRipple #btn (click)=\"toggle(btn, toggleRef)\">\n\n <igx-icon>import_export</igx-icon>\n <span #ref>\n <ng-content></ng-content>\n </span>\n <span *ngIf=\"!ref.childNodes.length\">\n {{ grid.exportText || grid?.resourceStrings.igx_grid_toolbar_exporter_button_label }}\n </span>\n <igx-icon>arrow_drop_down</igx-icon>\n</button>\n\n<div class=\"igx-grid-toolbar__dropdown\" id=\"btnExport\">\n <ul class=\"igx-grid-toolbar__dd-list\" igxToggle #toggleRef=\"toggle\">\n <li *ngIf=\"grid.exportExcel || exportExcel\" #btnExportExcel id=\"btnExportExcel\"\n class=\"igx-grid-toolbar__dd-list-items\" igxRipple (click)=\"export('excel', toggleRef)\">\n\n <ng-template #excel>\n <ng-content select=[excelText],excel-text></ng-content>\n </ng-template>\n <excel-text *ngIf=\"!hasExcelAttr\">\n {{ grid.exportExcelText || grid?.resourceStrings.igx_grid_toolbar_exporter_excel_entry_text}}\n </excel-text>\n <ng-container *ngTemplateOutlet=\"excel\"></ng-container>\n </li>\n\n <li *ngIf=\"grid.exportCsv || exportCSV\" #btnExportCsv id=\"btnExportCsv\" class=\"igx-grid-toolbar__dd-list-items\"\n igxRipple (click)=\"export('csv', toggleRef)\">\n\n <ng-template #csv>\n <ng-content select=[csvText],csv-text></ng-content>\n </ng-template>\n <csv-text *ngIf=\"!hasCSVAttr\">\n {{ grid.exportCsvText || grid?.resourceStrings.igx_grid_toolbar_exporter_csv_entry_text }}</csv-text>\n <ng-container *ngTemplateOutlet=\"csv\"></ng-container>\n </li>\n </ul>\n</div>\n"
63653
63653
  },] }
63654
63654
  ];
63655
63655
  IgxGridToolbarExporterComponent.ctorParameters = () => [
@@ -63687,7 +63687,7 @@ class IgxGridToolbarHidingComponent extends BaseToolbarColumnActionsDirective {
63687
63687
  IgxGridToolbarHidingComponent.decorators = [
63688
63688
  { type: Component, args: [{
63689
63689
  selector: 'igx-grid-toolbar-hiding',
63690
- template: "<ng-container *ngIf=\"grid.rendered$ | async\">\n <button [title]=\"grid?.resourceStrings.igx_grid_toolbar_hiding_button_tooltip\" #btn igxButton=\"outlined\"\n name=\"btnColumnHiding\" (click)=\"toggle(btn, ref, actions)\" [displayDensity]=\"grid.displayDensity\">\n <igx-icon>{{ !grid.hiddenColumnsCount ? 'visibility' : 'visibility_off' }}</igx-icon>\n <span>{{ grid.hiddenColumnsCount }}</span>\n <span>{{ grid.hiddenColumnsText }}</span>\n </button>\n <igx-column-actions #actions igxColumnHiding igxToggle (opened)=\"focusSearch(ref.element)\" #ref=\"toggle\"\n [grid]=\"grid\" [title]=\"grid.columnHidingTitleInternal || title || grid?.resourceStrings.igx_grid_toolbar_hiding_title\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\"\n [hideFilter]=\"hideFilter\" [filterCriteria]=\"filterCriteria\" [columnDisplayOrder]=\"columnDisplayOrder\" [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\" [checkAllText]=\"checkAllText\" [indentation]=\"indentetion\">\n </igx-column-actions>\n</ng-container>\n"
63690
+ template: "<ng-container *ngIf=\"grid.rendered$ | async\">\n <button [title]=\"grid?.resourceStrings.igx_grid_toolbar_hiding_button_tooltip\" #btn igxButton=\"outlined\" type=\"button\"\n name=\"btnColumnHiding\" (click)=\"toggle(btn, ref, actions)\" [displayDensity]=\"grid.displayDensity\">\n <igx-icon>{{ !grid.hiddenColumnsCount ? 'visibility' : 'visibility_off' }}</igx-icon>\n <span>{{ grid.hiddenColumnsCount }}</span>\n <span>{{ grid.hiddenColumnsText }}</span>\n </button>\n <igx-column-actions #actions igxColumnHiding igxToggle (opened)=\"focusSearch(ref.element)\" #ref=\"toggle\"\n [grid]=\"grid\" [title]=\"grid.columnHidingTitleInternal || title || grid?.resourceStrings.igx_grid_toolbar_hiding_title\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\"\n [hideFilter]=\"hideFilter\" [filterCriteria]=\"filterCriteria\" [columnDisplayOrder]=\"columnDisplayOrder\" [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\" [checkAllText]=\"checkAllText\" [indentation]=\"indentetion\">\n </igx-column-actions>\n</ng-container>\n"
63691
63691
  },] }
63692
63692
  ];
63693
63693
  IgxGridToolbarHidingComponent.propDecorators = {
@@ -63714,7 +63714,7 @@ class IgxGridToolbarPinningComponent extends BaseToolbarColumnActionsDirective {
63714
63714
  IgxGridToolbarPinningComponent.decorators = [
63715
63715
  { type: Component, args: [{
63716
63716
  selector: 'igx-grid-toolbar-pinning',
63717
- template: "<ng-container *ngIf=\"grid.rendered$ | async\">\n <button [title]=\"grid?.resourceStrings.igx_grid_toolbar_pinning_button_tooltip\" #btn igxButton=\"outlined\"\n name=\"btnColumnPinning\" (click)=\"toggle(btn, ref, actions)\" [displayDensity]=\"grid.displayDensity\">\n <igx-icon family=\"imx-icons\" [name]=\"!grid.pinnedColumnsCount ? 'unpin-left' : 'pin-left'\"></igx-icon>\n <span>{{ grid.pinnedColumnsCount }}</span>\n <span>{{ grid.pinnedColumnsTextInternal }}</span>\n </button>\n <igx-column-actions #actions igxColumnPinning igxToggle (opened)=\"focusSearch(ref.element)\" #ref=\"toggle\"\n [grid]=\"grid\" [title]=\"grid.columnPinningTitleInternal || title || grid?.resourceStrings.igx_grid_toolbar_pinning_title\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\"\n [hideFilter]=\"hideFilter\" [filterCriteria]=\"filterCriteria\" [columnDisplayOrder]=\"columnDisplayOrder\" [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\" [checkAllText]=\"checkAllText\" [indentation]=\"indentetion\">\n </igx-column-actions>\n</ng-container>\n"
63717
+ template: "<ng-container *ngIf=\"grid.rendered$ | async\">\n <button [title]=\"grid?.resourceStrings.igx_grid_toolbar_pinning_button_tooltip\" #btn igxButton=\"outlined\" type=\"button\"\n name=\"btnColumnPinning\" (click)=\"toggle(btn, ref, actions)\" [displayDensity]=\"grid.displayDensity\">\n <igx-icon family=\"imx-icons\" [name]=\"!grid.pinnedColumnsCount ? 'unpin-left' : 'pin-left'\"></igx-icon>\n <span>{{ grid.pinnedColumnsCount }}</span>\n <span>{{ grid.pinnedColumnsTextInternal }}</span>\n </button>\n <igx-column-actions #actions igxColumnPinning igxToggle (opened)=\"focusSearch(ref.element)\" #ref=\"toggle\"\n [grid]=\"grid\" [title]=\"grid.columnPinningTitleInternal || title || grid?.resourceStrings.igx_grid_toolbar_pinning_title\"\n [filterColumnsPrompt]=\"prompt || grid?.resourceStrings.igx_grid_toolbar_actions_filter_prompt\"\n [hideFilter]=\"hideFilter\" [filterCriteria]=\"filterCriteria\" [columnDisplayOrder]=\"columnDisplayOrder\" [columnsAreaMaxHeight]=\"columnsAreaMaxHeight\"\n [uncheckAllText]=\"uncheckAllText\" [checkAllText]=\"checkAllText\" [indentation]=\"indentetion\">\n </igx-column-actions>\n</ng-container>\n"
63718
63718
  },] }
63719
63719
  ];
63720
63720
  IgxGridToolbarPinningComponent.propDecorators = {
@@ -72728,7 +72728,7 @@ class IgxBottomNavComponent extends IgxTabsDirective {
72728
72728
  IgxBottomNavComponent.decorators = [
72729
72729
  { type: Component, args: [{
72730
72730
  selector: 'igx-bottom-nav',
72731
- template: "<ng-container *ngFor=\"let tab of items; let i = index\">\r\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\r\n</ng-container>\r\n\r\n<div\r\n #tablist\r\n role=\"tablist\"\r\n class=\"igx-bottom-nav__menu igx-bottom-nav__menu--bottom\"\r\n aria-orientation=\"horizontal\"\r\n>\r\n <ng-container *ngFor=\"let tab of items; let i = index\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n </ng-container>\r\n</div>\r\n",
72731
+ template: "<ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n</ng-container>\n\n<div\n #tablist\n role=\"tablist\"\n class=\"igx-bottom-nav__menu igx-bottom-nav__menu--bottom\"\n aria-orientation=\"horizontal\"\n>\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n </ng-container>\n</div>\n",
72732
72732
  providers: [{ provide: IgxTabsBase, useExisting: IgxBottomNavComponent }]
72733
72733
  },] }
72734
72734
  ];
@@ -72738,7 +72738,7 @@ class IgxBottomNavItemComponent extends IgxTabItemDirective {
72738
72738
  IgxBottomNavItemComponent.decorators = [
72739
72739
  { type: Component, args: [{
72740
72740
  selector: 'igx-bottom-nav-item',
72741
- template: "<ng-template #headerTemplate>\r\n <ng-content select=\"igx-bottom-nav-header\"></ng-content>\r\n</ng-template>\r\n<ng-template #panelTemplate>\r\n <ng-content select=\"igx-bottom-nav-content\"></ng-content>\r\n</ng-template>\r\n",
72741
+ template: "<ng-template #headerTemplate>\n <ng-content select=\"igx-bottom-nav-header\"></ng-content>\n</ng-template>\n<ng-template #panelTemplate>\n <ng-content select=\"igx-bottom-nav-content\"></ng-content>\n</ng-template>\n",
72742
72742
  providers: [{ provide: IgxTabItemDirective, useExisting: IgxBottomNavItemComponent }]
72743
72743
  },] }
72744
72744
  ];
@@ -72760,7 +72760,7 @@ class IgxBottomNavHeaderComponent extends IgxTabHeaderDirective {
72760
72760
  IgxBottomNavHeaderComponent.decorators = [
72761
72761
  { type: Component, args: [{
72762
72762
  selector: 'igx-bottom-nav-header',
72763
- template: "<ng-content></ng-content>\r\n",
72763
+ template: "<ng-content></ng-content>\n",
72764
72764
  providers: [{ provide: IgxTabHeaderBase, useExisting: IgxBottomNavHeaderComponent }]
72765
72765
  },] }
72766
72766
  ];
@@ -72795,7 +72795,7 @@ class IgxBottomNavContentComponent extends IgxTabContentDirective {
72795
72795
  IgxBottomNavContentComponent.decorators = [
72796
72796
  { type: Component, args: [{
72797
72797
  selector: 'igx-bottom-nav-content',
72798
- template: "<ng-content *ngIf=\"tab.selected || tab.previous\"></ng-content>\r\n",
72798
+ template: "<ng-content *ngIf=\"tab.selected || tab.previous\"></ng-content>\n",
72799
72799
  providers: [{ provide: IgxTabContentBase, useExisting: IgxBottomNavContentComponent }]
72800
72800
  },] }
72801
72801
  ];
@@ -73079,7 +73079,7 @@ class IgxTabsComponent extends IgxTabsDirective {
73079
73079
  IgxTabsComponent.decorators = [
73080
73080
  { type: Component, args: [{
73081
73081
  selector: 'igx-tabs',
73082
- template: "<div #headerContainer class=\"igx-tabs__header\">\r\n <button\r\n #leftButton\r\n igxButton=\"icon\"\r\n igxRipple\r\n class=\"igx-tabs__header-button\"\r\n (click)=\"scrollLeft()\"\r\n >\r\n <igx-icon>navigate_before</igx-icon>\r\n </button>\r\n <div #viewPort class=\"igx-tabs__header-content\">\r\n <div\r\n #itemsWrapper\r\n class=\"igx-tabs__header-wrapper\" \r\n role=\"tablist\"\r\n >\r\n <div \r\n #itemsContainer\r\n class=\"igx-tabs__header-scroll\"\r\n [ngClass]=\"resolveHeaderScrollClasses()\"\r\n >\r\n <ng-container *ngFor=\"let tab of items; let i = index\">\r\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\r\n </ng-container>\r\n </div>\r\n <div\r\n #selectedIndicator\r\n *ngIf=\"items.length > 0\"\r\n class=\"igx-tabs__header-active-indicator\"\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n <button\r\n #rightButton\r\n igxButton=\"icon\"\r\n igxRipple\r\n class=\"igx-tabs__header-button\"\r\n (click)=\"scrollRight()\"\r\n >\r\n <igx-icon>navigate_next</igx-icon>\r\n </button>\r\n</div>\r\n<div class=\"igx-tabs__panels\">\r\n <ng-container *ngFor=\"let tab of items; let i = index\">\r\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\r\n </ng-container>\r\n</div>\r\n",
73082
+ template: "<div #headerContainer class=\"igx-tabs__header\">\n <button\n #leftButton\n igxButton=\"icon\"\n igxRipple\n class=\"igx-tabs__header-button\"\n (click)=\"scrollLeft()\"\n >\n <igx-icon>navigate_before</igx-icon>\n </button>\n <div #viewPort class=\"igx-tabs__header-content\">\n <div\n #itemsWrapper\n class=\"igx-tabs__header-wrapper\" \n role=\"tablist\"\n >\n <div \n #itemsContainer\n class=\"igx-tabs__header-scroll\"\n [ngClass]=\"resolveHeaderScrollClasses()\"\n >\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.headerTemplate\"></ng-container>\n </ng-container>\n </div>\n <div\n #selectedIndicator\n *ngIf=\"items.length > 0\"\n class=\"igx-tabs__header-active-indicator\"\n >\n </div>\n </div>\n </div>\n <button\n #rightButton\n igxButton=\"icon\"\n igxRipple\n class=\"igx-tabs__header-button\"\n (click)=\"scrollRight()\"\n >\n <igx-icon>navigate_next</igx-icon>\n </button>\n</div>\n<div class=\"igx-tabs__panels\">\n <ng-container *ngFor=\"let tab of items; let i = index\">\n <ng-container *ngTemplateOutlet=\"tab.panelTemplate\"></ng-container>\n </ng-container>\n</div>\n",
73083
73083
  providers: [{ provide: IgxTabsBase, useExisting: IgxTabsComponent }]
73084
73084
  },] }
73085
73085
  ];
@@ -73105,7 +73105,7 @@ class IgxTabItemComponent extends IgxTabItemDirective {
73105
73105
  IgxTabItemComponent.decorators = [
73106
73106
  { type: Component, args: [{
73107
73107
  selector: 'igx-tab-item',
73108
- template: "<ng-template #headerTemplate>\r\n <ng-content select=\"igx-tab-header\"></ng-content>\r\n</ng-template>\r\n<ng-template #panelTemplate>\r\n <ng-content select=\"igx-tab-content\"></ng-content>\r\n</ng-template>\r\n",
73108
+ template: "<ng-template #headerTemplate>\n <ng-content select=\"igx-tab-header\"></ng-content>\n</ng-template>\n<ng-template #panelTemplate>\n <ng-content select=\"igx-tab-content\"></ng-content>\n</ng-template>\n",
73109
73109
  providers: [{ provide: IgxTabItemDirective, useExisting: IgxTabItemComponent }]
73110
73110
  },] }
73111
73111
  ];
@@ -73206,7 +73206,7 @@ class IgxTabHeaderComponent extends IgxTabHeaderDirective {
73206
73206
  IgxTabHeaderComponent.decorators = [
73207
73207
  { type: Component, args: [{
73208
73208
  selector: 'igx-tab-header',
73209
- template: "<ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\r\n\r\n<div class=\"igx-tabs__header-item-inner\">\r\n <ng-content></ng-content>\r\n</div>\r\n\r\n<ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\r\n",
73209
+ template: "<ng-content select=\"igx-prefix,[igxPrefix]\"></ng-content>\n\n<div class=\"igx-tabs__header-item-inner\">\n <ng-content></ng-content>\n</div>\n\n<ng-content select=\"igx-suffix,[igxSuffix]\"></ng-content>\n",
73210
73210
  providers: [{ provide: IgxTabHeaderBase, useExisting: IgxTabHeaderComponent }]
73211
73211
  },] }
73212
73212
  ];
@@ -73249,7 +73249,7 @@ class IgxTabContentComponent extends IgxTabContentDirective {
73249
73249
  IgxTabContentComponent.decorators = [
73250
73250
  { type: Component, args: [{
73251
73251
  selector: 'igx-tab-content',
73252
- template: "<ng-content *ngIf=\"tab.selected || tab.previous\"></ng-content>\r\n",
73252
+ template: "<ng-content *ngIf=\"tab.selected || tab.previous\"></ng-content>\n",
73253
73253
  providers: [{ provide: IgxTabContentBase, useExisting: IgxTabContentComponent }]
73254
73254
  },] }
73255
73255
  ];