barsa-sap-ui 2.2.61 → 2.2.62

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.
@@ -101,11 +101,11 @@ export class UlvToolbarComponent extends BaseComponent {
101
101
  }
102
102
  }
103
103
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UlvToolbarComponent, deps: [{ token: i0.ElementRef }, { token: i0.ChangeDetectorRef }], target: i0.ɵɵFactoryTarget.Component }); }
104
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UlvToolbarComponent, selector: "bsu-ulv-toolbar", inputs: { allowGridColumnSort: "allowGridColumnSort", useLayoutItemTextForControl: "useLayoutItemTextForControl", enableSearch: "enableSearch", hideTitle: "hideTitle", title: "title", icon: "icon", deviceName: "deviceName", deviceSize: "deviceSize", access: "access", hideToolbar: "hideToolbar", toolbarButtons: "toolbarButtons", contentDensity: "contentDensity", inlineEditMode: "inlineEditMode", allowInlineEdit: "allowInlineEdit", gridSetting: "gridSetting", viewCollection: "viewCollection", reportView: "reportView", inDialog: "inDialog", isMultiSelect: "isMultiSelect", cls: "cls", hasSelected: "hasSelected", config: "config", hidden: "hidden", buttons: "buttons", moDataListCount: "moDataListCount" }, outputs: { search: "search", groupbyClick: "groupbyClick", sortClick: "sortClick", columnClick: "columnClick", editModeClick: "editModeClick", viewClick: "viewClick", createNewInlineMo: "createNewInlineMo" }, viewQueries: [{ propertyName: "_tlbCmp", first: true, predicate: ["toolbar"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n style=\"width: 100%; height: 0; visibility: hidden; opacity: 0\"\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange($event)\"\r\n></div>\r\n@if (!useLayoutItemTextForControl && !hideToolbar) {\r\n<fd-toolbar\r\n #toolbar\r\n [shouldOverflow]=\"deviceSize === 's'\"\r\n [ngClass]=\"deviceSize\"\r\n [hasTitle]=\"!hideTitle\"\r\n [forceOverflow]=\"true\"\r\n [ngClass]=\"cls\"\r\n>\r\n @if(!hideTitle && deviceSize !== 's' ? (title | bbbTranslate) : ''){ @if(icon){\r\n <fd-icon [glyph]=\"icon\"></fd-icon>\r\n }\r\n <h4 fd-title>{{ title | bbbTranslate }}</h4>\r\n } @if (deviceSize !== 's') {\r\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\r\n } @if (!hideToolbar) { @for (btn of toolbarButtons; track _trackBy(i, btn); let i = $index) { @if (btn !== '-' &&\r\n btn.Command && !btn.Command.CustomUi && !btn.menu) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"btn.itemId === 'Edit' ? 'always' : btn.Command?.IsBuiltin ? 'low' : 'high'\"\r\n [ulvCommandHandler]=\"btn\"\r\n [disable]=\"inlineEditMode && btn.itemId === 'New'\"\r\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\r\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\r\n [glyph]=\"deviceSize === 's' ? null : btn.Command.JsonExtraProp?.Icon\"\r\n [title]=\"(btn.Command?.IsBuiltin ? btn.text : '') | bbbTranslate\"\r\n (click)=\"inlineEditMode && btn.itemId === 'New' && createNewInlineMo.emit()\"\r\n bodyClick\r\n >\r\n @if (!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon) {\r\n <img width=\"16\" [src]=\"btn.icon\" />\r\n } @if (!btn.hideText || deviceSize === 's') {\r\n <span>{{ btn.text | bbbTranslate }}</span>\r\n }\r\n </button>\r\n } @if ((btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile') {\r\n <fd-toolbar-separator fd-toolbar-item></fd-toolbar-separator>\r\n } @if (btn.menu) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdMenu]=\"true\"\r\n [fdType]=\"btn.Command?.IsBuiltin ? 'standard' : 'transparent'\"\r\n [label]=\"btn.text | bbbTranslate\"\r\n [ariaLabel]=\"btn.text | bbbTranslate\"\r\n [fdMenuTrigger]=\"menu\"\r\n bodyClick\r\n >\r\n <fd-menu #menu>\r\n @for (btnCommand of btn.menu.items; track btnCommand) {\r\n <li fd-menu-item [ulvCommandHandler]=\"btnCommand\" (click)=\"menu.close()\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ btnCommand.text | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n </button>\r\n } @if (btn !== '-' && btn.Command && btn.Command.CustomUi) {\r\n <bnrc-dynamic-form-toolbaritem\r\n fd-toolbar-item\r\n [ulvCommandHandler]=\"btn\"\r\n [component]=\"btn.Command?.CustomUi\"\r\n [context]=\"btn\"\r\n [isEnable]=\"btn.Command?._isEnable\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n bodyClick\r\n ></bnrc-dynamic-form-toolbaritem>\r\n } }\r\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\r\n @if (allowInlineEdit && access?.Edit) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\r\n [glyph]=\"'edit'\"\r\n [label]=\"deviceSize === 's' ? ('Inline Edit In List' | bbbTranslate) : ''\"\r\n (click)=\"onEditMode()\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n [title]=\"'Inline Edit In List' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n } @if (gridSetting && gridSetting.Hidden !== true && allowGridColumnSort) { @if (deviceSize === 's') {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onGroupbySettings()\"\r\n [label]=\"'Groups' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onSortSettings()\"\r\n [label]=\"'Sort' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onColumnSettings()\"\r\n [label]=\"'Columns' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n } @if (deviceSize !== 's') {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"'never'\"\r\n [fdMenu]=\"true\"\r\n fdType=\"transparent\"\r\n glyph=\"action-settings\"\r\n [title]=\"'Settings' | bbbTranslate\"\r\n [fdMenuTrigger]=\"tableMenuSettings\"\r\n bodyClick\r\n ></button>\r\n }\r\n <fd-menu #tableMenuSettings>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onColumnSettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"action-settings\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Columns' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onSortSettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"sort\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Sort' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onGroupbySettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"group-2\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Groups' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n </fd-menu>\r\n } @if (viewCollection && viewCollection.length > 1) {\r\n <fd-split-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"deviceSize === 's' ? 'always' : 'low'\"\r\n [fdType]=\"'transparent'\"\r\n [mainAction]=\"{\r\n keepMainAction: true,\r\n mainActionTitle: splitBtnTitle\r\n }\"\r\n >\r\n <fd-menu>\r\n @for (viewObject of viewCollection; track viewObject) {\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\" bodyClick>\r\n <span fd-menu-title>\r\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\r\n </span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n </fd-split-button>\r\n }\r\n <ng-template #splitBtnTitle>\r\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\r\n </ng-template>\r\n <ng-template #splitBtnSettings>\r\n <fd-icon [glyph]=\"'action-settings'\"></fd-icon>\r\n </ng-template>\r\n }\r\n</fd-toolbar>\r\n}\r\n", styles: [":host{display:block;width:100%;position:relative}:host fd-toolbar.border-b-0{border-bottom-width:0px!important}:host ::ng-deep .fd-toolbar{flex-wrap:nowrap!important}:host ::ng-deep .fd-toolbar{border-top:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-left:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-right:var(--sapList_BorderWidth) solid var(--sapList_BorderColor)}:host fd-toolbar.s ::ng-deep .fd-toolbar{justify-content:end}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.DynamicFormToolbaritemComponent, selector: "bnrc-dynamic-form-toolbaritem", inputs: ["mo", "index", "deviceName", "deviceSize", "context", "btn", "isEnable", "showText", "allColumns", "conditionalFormats"], outputs: ["btnClick"] }, { kind: "directive", type: i2.UlvCommandDirective, selector: "[ulvCommandHandler]", inputs: ["ulvCommandHandler", "disable"], outputs: ["commandClick"] }, { kind: "directive", type: i2.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "directive", type: i2.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i5.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i5.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: i5.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i5.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i5.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "directive", type: i5.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i7.SplitButtonComponent, selector: "fd-split-button", inputs: ["glyph", "glyphFont", "disabled", "fdType", "expandButtonTitle", "selected", "fixedWidth", "mainAction", "arialLabel"], outputs: ["primaryButtonClicked"] }, { kind: "component", type: i8.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i8.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i8.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i8.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "directive", type: i9.ContentDensityDirective, selector: "[contentDensity]" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
104
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "18.2.13", type: UlvToolbarComponent, selector: "bsu-ulv-toolbar", inputs: { allowGridColumnSort: "allowGridColumnSort", useLayoutItemTextForControl: "useLayoutItemTextForControl", enableSearch: "enableSearch", hideTitle: "hideTitle", title: "title", icon: "icon", deviceName: "deviceName", deviceSize: "deviceSize", access: "access", hideToolbar: "hideToolbar", toolbarButtons: "toolbarButtons", contentDensity: "contentDensity", inlineEditMode: "inlineEditMode", allowInlineEdit: "allowInlineEdit", gridSetting: "gridSetting", viewCollection: "viewCollection", reportView: "reportView", inDialog: "inDialog", isMultiSelect: "isMultiSelect", cls: "cls", hasSelected: "hasSelected", config: "config", hidden: "hidden", buttons: "buttons", moDataListCount: "moDataListCount" }, outputs: { search: "search", groupbyClick: "groupbyClick", sortClick: "sortClick", columnClick: "columnClick", editModeClick: "editModeClick", viewClick: "viewClick", createNewInlineMo: "createNewInlineMo" }, viewQueries: [{ propertyName: "_tlbCmp", first: true, predicate: ["toolbar"], descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "<div\r\n style=\"width: 100%; height: 0; visibility: hidden; opacity: 0\"\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange($event)\"\r\n></div>\r\n@if (!useLayoutItemTextForControl && !hideToolbar) {\r\n<fd-toolbar\r\n #toolbar\r\n [shouldOverflow]=\"deviceSize === 's'\"\r\n [ngClass]=\"deviceSize\"\r\n [hasTitle]=\"!hideTitle\"\r\n [forceOverflow]=\"true\"\r\n [ngClass]=\"cls\"\r\n>\r\n @if(!hideTitle && deviceSize !== 's' ? (title | bbbTranslate) : ''){ @if(icon){\r\n <fd-icon [glyph]=\"icon\"></fd-icon>\r\n }\r\n <h4 fd-title>{{ title | bbbTranslate }}</h4>\r\n } @if (deviceSize !== 's') {\r\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\r\n } @if (!hideToolbar) { @for (btn of toolbarButtons; track _trackBy(i, btn); let i = $index) { @if (btn !== '-' &&\r\n btn.Command && !btn.Command.CustomUi && !btn.menu) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"btn.itemId === 'Edit' ? 'always' : btn.Command?.IsBuiltin ? 'low' : 'high'\"\r\n [ulvCommandHandler]=\"btn\"\r\n [disable]=\"inlineEditMode && btn.itemId === 'New'\"\r\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\r\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\r\n [glyph]=\"deviceSize === 's' ? null : btn.newIcon || btn.Command.JsonExtraProp?.Icon\"\r\n [title]=\"(btn.Command?.IsBuiltin ? btn.text : '') | bbbTranslate\"\r\n (click)=\"inlineEditMode && btn.itemId === 'New' && createNewInlineMo.emit()\"\r\n bodyClick\r\n >\r\n @if (!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon) {\r\n <img width=\"16\" [src]=\"btn.icon\" />\r\n } @if (!btn.hideText || deviceSize === 's') {\r\n <span>{{ (!btn.text && btn.isCustom ? btn.itemId : btn.text) | bbbTranslate }}</span>\r\n }\r\n </button>\r\n } @if ((btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile') {\r\n <fd-toolbar-separator fd-toolbar-item></fd-toolbar-separator>\r\n } @if (btn.menu) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdMenu]=\"true\"\r\n [fdType]=\"btn.Command?.IsBuiltin ? 'standard' : 'transparent'\"\r\n [label]=\"btn.text | bbbTranslate\"\r\n [ariaLabel]=\"btn.text | bbbTranslate\"\r\n [fdMenuTrigger]=\"menu\"\r\n bodyClick\r\n >\r\n <fd-menu #menu>\r\n @for (btnCommand of btn.menu.items; track btnCommand) {\r\n <li fd-menu-item [ulvCommandHandler]=\"btnCommand\" (click)=\"menu.close()\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ btnCommand.text | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n </button>\r\n } @if (btn !== '-' && btn.Command && btn.Command.CustomUi) {\r\n <bnrc-dynamic-form-toolbaritem\r\n fd-toolbar-item\r\n [ulvCommandHandler]=\"btn\"\r\n [component]=\"btn.Command?.CustomUi\"\r\n [context]=\"btn\"\r\n [isEnable]=\"btn.Command?._isEnable\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n bodyClick\r\n ></bnrc-dynamic-form-toolbaritem>\r\n } }\r\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\r\n @if (allowInlineEdit && access?.Edit) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\r\n [glyph]=\"'edit'\"\r\n [label]=\"deviceSize === 's' ? ('Inline Edit In List' | bbbTranslate) : ''\"\r\n (click)=\"onEditMode()\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n [title]=\"'Inline Edit In List' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n } @if (gridSetting && gridSetting.Hidden !== true && allowGridColumnSort) { @if (deviceSize === 's') {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onGroupbySettings()\"\r\n [label]=\"'Groups' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onSortSettings()\"\r\n [label]=\"'Sort' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onColumnSettings()\"\r\n [label]=\"'Columns' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n } @if (deviceSize !== 's') {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"'never'\"\r\n [fdMenu]=\"true\"\r\n fdType=\"transparent\"\r\n glyph=\"action-settings\"\r\n [title]=\"'Settings' | bbbTranslate\"\r\n [fdMenuTrigger]=\"tableMenuSettings\"\r\n bodyClick\r\n ></button>\r\n }\r\n <fd-menu #tableMenuSettings>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onColumnSettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"action-settings\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Columns' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onSortSettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"sort\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Sort' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onGroupbySettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"group-2\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Groups' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n </fd-menu>\r\n } @if (viewCollection && viewCollection.length > 1) {\r\n <fd-split-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"deviceSize === 's' ? 'always' : 'low'\"\r\n [fdType]=\"'transparent'\"\r\n [mainAction]=\"{\r\n keepMainAction: true,\r\n mainActionTitle: splitBtnTitle\r\n }\"\r\n >\r\n <fd-menu>\r\n @for (viewObject of viewCollection; track viewObject) {\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\" bodyClick>\r\n <span fd-menu-title>\r\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\r\n </span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n </fd-split-button>\r\n }\r\n <ng-template #splitBtnTitle>\r\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\r\n </ng-template>\r\n <ng-template #splitBtnSettings>\r\n <fd-icon [glyph]=\"'action-settings'\"></fd-icon>\r\n </ng-template>\r\n }\r\n</fd-toolbar>\r\n}\r\n", styles: [":host{display:block;width:100%;position:relative}:host fd-toolbar.border-b-0{border-bottom-width:0px!important}:host ::ng-deep .fd-toolbar{flex-wrap:nowrap!important}:host ::ng-deep .fd-toolbar{border-top:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-left:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-right:var(--sapList_BorderWidth) solid var(--sapList_BorderColor)}:host fd-toolbar.s ::ng-deep .fd-toolbar{justify-content:end}\n"], dependencies: [{ kind: "directive", type: i1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "component", type: i2.DynamicFormToolbaritemComponent, selector: "bnrc-dynamic-form-toolbaritem", inputs: ["mo", "index", "deviceName", "deviceSize", "context", "btn", "isEnable", "showText", "allColumns", "conditionalFormats"], outputs: ["btnClick"] }, { kind: "directive", type: i2.UlvCommandDirective, selector: "[ulvCommandHandler]", inputs: ["ulvCommandHandler", "disable"], outputs: ["commandClick"] }, { kind: "directive", type: i2.IntersectionObserverDirective, selector: "[intersectionObserver]", inputs: ["intersectionDebounce", "intersectionRootMargin", "intersectionRoot", "intersectionThreshold"], outputs: ["visibilityChange"] }, { kind: "directive", type: i2.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button], span[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "color", "background", "class", "ariaLabel", "ariaHidden"] }, { kind: "component", type: i5.MenuComponent, selector: "fd-menu", inputs: ["mobile", "disabled", "focusTrapped", "focusAutoCapture", "openOnHoverTime", "mobileConfig", "ariaLabel", "ariaLabelledby", "id"], outputs: ["activePath"] }, { kind: "component", type: i5.MenuItemComponent, selector: "li[fd-menu-item]", inputs: ["disabled", "itemId", "submenu", "parentSubmenu", "hasSeparator"], outputs: ["onSelect"], exportAs: ["fd-menu-item"] }, { kind: "component", type: i5.MenuInteractiveComponent, selector: "[fd-menu-interactive]" }, { kind: "directive", type: i5.MenuTitleDirective, selector: "[fd-menu-title]" }, { kind: "component", type: i5.MenuAddonDirective, selector: "fd-menu-addon", inputs: ["position", "submenuIndicator", "ariaHidden"] }, { kind: "directive", type: i5.MenuTriggerDirective, selector: "[fdMenuTrigger]", inputs: ["fdMenuTrigger"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "component", type: i7.SplitButtonComponent, selector: "fd-split-button", inputs: ["glyph", "glyphFont", "disabled", "fdType", "expandButtonTitle", "selected", "fixedWidth", "mainAction", "arialLabel"], outputs: ["primaryButtonClicked"] }, { kind: "component", type: i8.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "headingLevel", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i8.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i8.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i8.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "directive", type: i9.ContentDensityDirective, selector: "[contentDensity]" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
105
105
  }
106
106
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImport: i0, type: UlvToolbarComponent, decorators: [{
107
107
  type: Component,
108
- args: [{ selector: 'bsu-ulv-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\r\n style=\"width: 100%; height: 0; visibility: hidden; opacity: 0\"\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange($event)\"\r\n></div>\r\n@if (!useLayoutItemTextForControl && !hideToolbar) {\r\n<fd-toolbar\r\n #toolbar\r\n [shouldOverflow]=\"deviceSize === 's'\"\r\n [ngClass]=\"deviceSize\"\r\n [hasTitle]=\"!hideTitle\"\r\n [forceOverflow]=\"true\"\r\n [ngClass]=\"cls\"\r\n>\r\n @if(!hideTitle && deviceSize !== 's' ? (title | bbbTranslate) : ''){ @if(icon){\r\n <fd-icon [glyph]=\"icon\"></fd-icon>\r\n }\r\n <h4 fd-title>{{ title | bbbTranslate }}</h4>\r\n } @if (deviceSize !== 's') {\r\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\r\n } @if (!hideToolbar) { @for (btn of toolbarButtons; track _trackBy(i, btn); let i = $index) { @if (btn !== '-' &&\r\n btn.Command && !btn.Command.CustomUi && !btn.menu) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"btn.itemId === 'Edit' ? 'always' : btn.Command?.IsBuiltin ? 'low' : 'high'\"\r\n [ulvCommandHandler]=\"btn\"\r\n [disable]=\"inlineEditMode && btn.itemId === 'New'\"\r\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\r\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\r\n [glyph]=\"deviceSize === 's' ? null : btn.Command.JsonExtraProp?.Icon\"\r\n [title]=\"(btn.Command?.IsBuiltin ? btn.text : '') | bbbTranslate\"\r\n (click)=\"inlineEditMode && btn.itemId === 'New' && createNewInlineMo.emit()\"\r\n bodyClick\r\n >\r\n @if (!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon) {\r\n <img width=\"16\" [src]=\"btn.icon\" />\r\n } @if (!btn.hideText || deviceSize === 's') {\r\n <span>{{ btn.text | bbbTranslate }}</span>\r\n }\r\n </button>\r\n } @if ((btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile') {\r\n <fd-toolbar-separator fd-toolbar-item></fd-toolbar-separator>\r\n } @if (btn.menu) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdMenu]=\"true\"\r\n [fdType]=\"btn.Command?.IsBuiltin ? 'standard' : 'transparent'\"\r\n [label]=\"btn.text | bbbTranslate\"\r\n [ariaLabel]=\"btn.text | bbbTranslate\"\r\n [fdMenuTrigger]=\"menu\"\r\n bodyClick\r\n >\r\n <fd-menu #menu>\r\n @for (btnCommand of btn.menu.items; track btnCommand) {\r\n <li fd-menu-item [ulvCommandHandler]=\"btnCommand\" (click)=\"menu.close()\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ btnCommand.text | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n </button>\r\n } @if (btn !== '-' && btn.Command && btn.Command.CustomUi) {\r\n <bnrc-dynamic-form-toolbaritem\r\n fd-toolbar-item\r\n [ulvCommandHandler]=\"btn\"\r\n [component]=\"btn.Command?.CustomUi\"\r\n [context]=\"btn\"\r\n [isEnable]=\"btn.Command?._isEnable\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n bodyClick\r\n ></bnrc-dynamic-form-toolbaritem>\r\n } }\r\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\r\n @if (allowInlineEdit && access?.Edit) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\r\n [glyph]=\"'edit'\"\r\n [label]=\"deviceSize === 's' ? ('Inline Edit In List' | bbbTranslate) : ''\"\r\n (click)=\"onEditMode()\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n [title]=\"'Inline Edit In List' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n } @if (gridSetting && gridSetting.Hidden !== true && allowGridColumnSort) { @if (deviceSize === 's') {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onGroupbySettings()\"\r\n [label]=\"'Groups' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onSortSettings()\"\r\n [label]=\"'Sort' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onColumnSettings()\"\r\n [label]=\"'Columns' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n } @if (deviceSize !== 's') {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"'never'\"\r\n [fdMenu]=\"true\"\r\n fdType=\"transparent\"\r\n glyph=\"action-settings\"\r\n [title]=\"'Settings' | bbbTranslate\"\r\n [fdMenuTrigger]=\"tableMenuSettings\"\r\n bodyClick\r\n ></button>\r\n }\r\n <fd-menu #tableMenuSettings>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onColumnSettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"action-settings\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Columns' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onSortSettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"sort\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Sort' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onGroupbySettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"group-2\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Groups' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n </fd-menu>\r\n } @if (viewCollection && viewCollection.length > 1) {\r\n <fd-split-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"deviceSize === 's' ? 'always' : 'low'\"\r\n [fdType]=\"'transparent'\"\r\n [mainAction]=\"{\r\n keepMainAction: true,\r\n mainActionTitle: splitBtnTitle\r\n }\"\r\n >\r\n <fd-menu>\r\n @for (viewObject of viewCollection; track viewObject) {\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\" bodyClick>\r\n <span fd-menu-title>\r\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\r\n </span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n </fd-split-button>\r\n }\r\n <ng-template #splitBtnTitle>\r\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\r\n </ng-template>\r\n <ng-template #splitBtnSettings>\r\n <fd-icon [glyph]=\"'action-settings'\"></fd-icon>\r\n </ng-template>\r\n }\r\n</fd-toolbar>\r\n}\r\n", styles: [":host{display:block;width:100%;position:relative}:host fd-toolbar.border-b-0{border-bottom-width:0px!important}:host ::ng-deep .fd-toolbar{flex-wrap:nowrap!important}:host ::ng-deep .fd-toolbar{border-top:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-left:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-right:var(--sapList_BorderWidth) solid var(--sapList_BorderColor)}:host fd-toolbar.s ::ng-deep .fd-toolbar{justify-content:end}\n"] }]
108
+ args: [{ selector: 'bsu-ulv-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, standalone: false, template: "<div\r\n style=\"width: 100%; height: 0; visibility: hidden; opacity: 0\"\r\n intersectionObserver\r\n [intersectionThreshold]=\"0.1\"\r\n (visibilityChange)=\"onVisibilityChange($event)\"\r\n></div>\r\n@if (!useLayoutItemTextForControl && !hideToolbar) {\r\n<fd-toolbar\r\n #toolbar\r\n [shouldOverflow]=\"deviceSize === 's'\"\r\n [ngClass]=\"deviceSize\"\r\n [hasTitle]=\"!hideTitle\"\r\n [forceOverflow]=\"true\"\r\n [ngClass]=\"cls\"\r\n>\r\n @if(!hideTitle && deviceSize !== 's' ? (title | bbbTranslate) : ''){ @if(icon){\r\n <fd-icon [glyph]=\"icon\"></fd-icon>\r\n }\r\n <h4 fd-title>{{ title | bbbTranslate }}</h4>\r\n } @if (deviceSize !== 's') {\r\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\r\n } @if (!hideToolbar) { @for (btn of toolbarButtons; track _trackBy(i, btn); let i = $index) { @if (btn !== '-' &&\r\n btn.Command && !btn.Command.CustomUi && !btn.menu) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"btn.itemId === 'Edit' ? 'always' : btn.Command?.IsBuiltin ? 'low' : 'high'\"\r\n [ulvCommandHandler]=\"btn\"\r\n [disable]=\"inlineEditMode && btn.itemId === 'New'\"\r\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\r\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\r\n [glyph]=\"deviceSize === 's' ? null : btn.newIcon || btn.Command.JsonExtraProp?.Icon\"\r\n [title]=\"(btn.Command?.IsBuiltin ? btn.text : '') | bbbTranslate\"\r\n (click)=\"inlineEditMode && btn.itemId === 'New' && createNewInlineMo.emit()\"\r\n bodyClick\r\n >\r\n @if (!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon) {\r\n <img width=\"16\" [src]=\"btn.icon\" />\r\n } @if (!btn.hideText || deviceSize === 's') {\r\n <span>{{ (!btn.text && btn.isCustom ? btn.itemId : btn.text) | bbbTranslate }}</span>\r\n }\r\n </button>\r\n } @if ((btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile') {\r\n <fd-toolbar-separator fd-toolbar-item></fd-toolbar-separator>\r\n } @if (btn.menu) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdMenu]=\"true\"\r\n [fdType]=\"btn.Command?.IsBuiltin ? 'standard' : 'transparent'\"\r\n [label]=\"btn.text | bbbTranslate\"\r\n [ariaLabel]=\"btn.text | bbbTranslate\"\r\n [fdMenuTrigger]=\"menu\"\r\n bodyClick\r\n >\r\n <fd-menu #menu>\r\n @for (btnCommand of btn.menu.items; track btnCommand) {\r\n <li fd-menu-item [ulvCommandHandler]=\"btnCommand\" (click)=\"menu.close()\">\r\n <div fd-menu-interactive>\r\n <span fd-menu-title>{{ btnCommand.text | bbbTranslate }}</span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n </button>\r\n } @if (btn !== '-' && btn.Command && btn.Command.CustomUi) {\r\n <bnrc-dynamic-form-toolbaritem\r\n fd-toolbar-item\r\n [ulvCommandHandler]=\"btn\"\r\n [component]=\"btn.Command?.CustomUi\"\r\n [context]=\"btn\"\r\n [isEnable]=\"btn.Command?._isEnable\"\r\n [deviceName]=\"deviceName\"\r\n [deviceSize]=\"deviceSize\"\r\n bodyClick\r\n ></bnrc-dynamic-form-toolbaritem>\r\n } }\r\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\r\n @if (allowInlineEdit && access?.Edit) {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\r\n [glyph]=\"'edit'\"\r\n [label]=\"deviceSize === 's' ? ('Inline Edit In List' | bbbTranslate) : ''\"\r\n (click)=\"onEditMode()\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n [title]=\"'Inline Edit In List' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n } @if (gridSetting && gridSetting.Hidden !== true && allowGridColumnSort) { @if (deviceSize === 's') {\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onGroupbySettings()\"\r\n [label]=\"'Groups' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onSortSettings()\"\r\n [label]=\"'Sort' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n <button\r\n fd-toolbar-item\r\n fd-button\r\n [contentDensity]=\"contentDensity\"\r\n fdType=\"transparent\"\r\n [attr.fdOverflowPriority]=\"'always'\"\r\n (click)=\"onColumnSettings()\"\r\n [label]=\"'Columns' | bbbTranslate\"\r\n bodyClick\r\n ></button>\r\n } @if (deviceSize !== 's') {\r\n <button\r\n fd-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"'never'\"\r\n [fdMenu]=\"true\"\r\n fdType=\"transparent\"\r\n glyph=\"action-settings\"\r\n [title]=\"'Settings' | bbbTranslate\"\r\n [fdMenuTrigger]=\"tableMenuSettings\"\r\n bodyClick\r\n ></button>\r\n }\r\n <fd-menu #tableMenuSettings>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onColumnSettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"action-settings\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Columns' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onSortSettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"sort\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Sort' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onGroupbySettings()\" bodyClick>\r\n <fd-menu-addon position=\"before\" glyph=\"group-2\"></fd-menu-addon>\r\n <span fd-menu-title>\r\n {{ 'Groups' | bbbTranslate }}\r\n </span>\r\n </div>\r\n </li>\r\n </fd-menu>\r\n } @if (viewCollection && viewCollection.length > 1) {\r\n <fd-split-button\r\n fd-toolbar-item\r\n [attr.fdOverflowPriority]=\"deviceSize === 's' ? 'always' : 'low'\"\r\n [fdType]=\"'transparent'\"\r\n [mainAction]=\"{\r\n keepMainAction: true,\r\n mainActionTitle: splitBtnTitle\r\n }\"\r\n >\r\n <fd-menu>\r\n @for (viewObject of viewCollection; track viewObject) {\r\n <li fd-menu-item>\r\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\" bodyClick>\r\n <span fd-menu-title>\r\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\r\n </span>\r\n </div>\r\n </li>\r\n }\r\n </fd-menu>\r\n </fd-split-button>\r\n }\r\n <ng-template #splitBtnTitle>\r\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\r\n </ng-template>\r\n <ng-template #splitBtnSettings>\r\n <fd-icon [glyph]=\"'action-settings'\"></fd-icon>\r\n </ng-template>\r\n }\r\n</fd-toolbar>\r\n}\r\n", styles: [":host{display:block;width:100%;position:relative}:host fd-toolbar.border-b-0{border-bottom-width:0px!important}:host ::ng-deep .fd-toolbar{flex-wrap:nowrap!important}:host ::ng-deep .fd-toolbar{border-top:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-left:var(--sapList_BorderWidth) solid var(--sapList_BorderColor);border-right:var(--sapList_BorderWidth) solid var(--sapList_BorderColor)}:host fd-toolbar.s ::ng-deep .fd-toolbar{justify-content:end}\n"] }]
109
109
  }], ctorParameters: () => [{ type: i0.ElementRef }, { type: i0.ChangeDetectorRef }], propDecorators: { _tlbCmp: [{
110
110
  type: ViewChild,
111
111
  args: ['toolbar']
@@ -174,4 +174,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.13", ngImpo
174
174
  }], createNewInlineMo: [{
175
175
  type: Output
176
176
  }] } });
177
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWx2LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNILGFBQWEsRUFLYixhQUFhLEVBQ2hCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFTakMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGFBQWE7SUF1Q2xELFlBQW1CLEVBQWMsRUFBVSxJQUF1QjtRQUM5RCxLQUFLLEVBQUUsQ0FBQztRQURPLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQWxDekQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQXVCakIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDcEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3ZDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN6QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBQ2pELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFR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Q0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGluamVjdCxcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQmFzZUNvbXBvbmVudCxcclxuICAgIERlZmF1bHRDb21tYW5kc0FjY2VzcyxcclxuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcclxuICAgIERldmljZVNpemUsXHJcbiAgICBVaVJlcG9ydFZpZXdCYXNlLFxyXG4gICAgUG9ydGFsU2VydmljZVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXVsdi10b29sYmFyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91bHYtdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91bHYtdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWx2VG9vbGJhckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gICAgQFZpZXdDaGlsZCgndG9vbGJhcicpIF90bGJDbXA6IFRvb2xiYXJDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBhbGxvd0dyaWRDb2x1bW5Tb3J0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgdXNlTGF5b3V0SXRlbVRleHRGb3JDb250cm9sOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZW5hYmxlU2VhcmNoOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGlkZVRpdGxlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGV2aWNlTmFtZTogRGV2aWNlU2l6ZTtcclxuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcclxuICAgIEBJbnB1dCgpIGFjY2VzczogRGVmYXVsdENvbW1hbmRzQWNjZXNzO1xyXG4gICAgQElucHV0KCkgaGlkZVRvb2xiYXI6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSB0b29sYmFyQnV0dG9uczogYW55W107XHJcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XHJcbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0TW9kZTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGFsbG93SW5saW5lRWRpdDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGdyaWRTZXR0aW5nOiBhbnk7XHJcbiAgICBASW5wdXQoKSB2aWV3Q29sbGVjdGlvbjogYW55W107XHJcbiAgICBASW5wdXQoKSByZXBvcnRWaWV3OiBVaVJlcG9ydFZpZXdCYXNlO1xyXG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc011bHRpU2VsZWN0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2xzOiBhbnk7XHJcblxyXG4gICAgQElucHV0KCkgaGFzU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBjb25maWc6IGFueTtcclxuICAgIEBJbnB1dCgpIGhpZGRlbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGJ1dHRvbnM6IGFueVtdO1xyXG4gICAgQElucHV0KCkgbW9EYXRhTGlzdENvdW50OiBudW1iZXI7XHJcbiAgICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgZ3JvdXBieUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgc29ydENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgY29sdW1uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICAgIEBPdXRwdXQoKSBlZGl0TW9kZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gICAgQE91dHB1dCgpIHZpZXdDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VWlSZXBvcnRWaWV3QmFzZT4oKTtcclxuICAgIEBPdXRwdXQoKSBjcmVhdGVOZXdJbmxpbmVNbyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuICAgIGVuYWJsZTogYm9vbGVhbjtcclxuICAgIF9yZW5kZXJlcjIgPSBpbmplY3QoUmVuZGVyZXIyKTtcclxuICAgIF9wb3J0YWxTZXJ2aWNlID0gaW5qZWN0KFBvcnRhbFNlcnZpY2UpO1xyXG4gICAgdmlzaWJsZWQgPSBmYWxzZTtcclxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHJpdmF0ZSBfY2RyOiBDaGFuZ2VEZXRlY3RvclJlZikge1xyXG4gICAgICAgIHN1cGVyKCk7XHJcbiAgICB9XHJcbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XHJcbiAgICAgICAgdGhpcy5fcG9ydGFsU2VydmljZS53aW5kb3dSZXNpemUkLnBpcGUodGFrZVVudGlsKHRoaXMuX29uRGVzdHJveSQpKS5zdWJzY3JpYmUoKCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnJlZnJlc2hSZXNpemUoKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcclxuICAgICAgICBjb25zdCB7IHRvb2xiYXJCdXR0b25zIH0gPSBjaGFuZ2VzO1xyXG4gICAgICAgIGlmICh0b29sYmFyQnV0dG9ucykge1xyXG4gICAgICAgICAgICBpZiAodG9vbGJhckJ1dHRvbnMuZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUb29sYmFyKCk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUb29sYmFyKCk7XHJcblxyXG4gICAgICAgICAgICAgICAgdGhpcy5fY2RyLmRldGVjdENoYW5nZXMoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIG9uVmlzaWJpbGl0eUNoYW5nZShlKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKGUgPT09ICdWaXNpYmxlJykge1xyXG4gICAgICAgICAgICB0aGlzLl9zZXRXaWR0aCgpO1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMudmlzaWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMudmlzaWJsZWQgPSB0cnVlO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5fcmVmcmVzaFRvb2xiYXIoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHByb3RlY3RlZCBfc2V0V2lkdGgoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMudmlzaWJsZWQgfHwgdGhpcy5oaWRlVG9vbGJhcikge1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRoaXMucmVmcmVzaFJlc2l6ZSgpO1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSByZWZyZXNoUmVzaXplKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IHggPSBNYXRoLmZsb29yKHRoaXMuZWwubmF0aXZlRWxlbWVudC5wYXJlbnROb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKTtcclxuICAgICAgICB0aGlzLl9yZW5kZXJlcjIuc2V0U3R5bGUodGhpcy5lbC5uYXRpdmVFbGVtZW50LCAnd2lkdGgnLCB4ICsgJ3B4Jyk7XHJcbiAgICAgICAgLy8gc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUb29sYmFyKCk7XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Hcm91cGJ5U2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ncm91cGJ5Q2xpY2suZW1pdCh0aGlzLmRldmljZU5hbWUpO1xyXG4gICAgfVxyXG4gICAgb25Tb3J0U2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zb3J0Q2xpY2suZW1pdCh0aGlzLmRldmljZU5hbWUpO1xyXG4gICAgfVxyXG4gICAgb25Db2x1bW5TZXR0aW5ncygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvbHVtbkNsaWNrLmVtaXQodGhpcy5kZXZpY2VOYW1lKTtcclxuICAgIH1cclxuICAgIG9uRWRpdE1vZGUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lZGl0TW9kZUNsaWNrLmVtaXQoKTtcclxuICAgIH1cclxuICAgIG9uQ2hhbmdlVmlldyh2aWV3OiBVaVJlcG9ydFZpZXdCYXNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52aWV3Q2xpY2suZW1pdCh2aWV3KTtcclxuICAgIH1cclxuICAgIF90cmFja0J5KGluZGV4LCBpdGVtKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gaXRlbT8uaXRlbUlkO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGlkZW50aWZ5KGluZGV4LCBpdGVtKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gaXRlbS50ZXh0O1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFRvb2xiYXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3RsYkNtcCkge1xyXG4gICAgICAgICAgICB0aGlzLl90bGJDbXAuZm9yY2VPdmVyZmxvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl90bGJDbXAudXBkYXRlQ29sbGFwc2libGVJdGVtcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgICBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDA7IHZpc2liaWxpdHk6IGhpZGRlbjsgb3BhY2l0eTogMFwiXHJcbiAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxyXG4gICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxyXG4gICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwib25WaXNpYmlsaXR5Q2hhbmdlKCRldmVudClcIlxyXG4+PC9kaXY+XHJcbkBpZiAoIXVzZUxheW91dEl0ZW1UZXh0Rm9yQ29udHJvbCAmJiAhaGlkZVRvb2xiYXIpIHtcclxuPGZkLXRvb2xiYXJcclxuICAgICN0b29sYmFyXHJcbiAgICBbc2hvdWxkT3ZlcmZsb3ddPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCJcclxuICAgIFtuZ0NsYXNzXT1cImRldmljZVNpemVcIlxyXG4gICAgW2hhc1RpdGxlXT1cIiFoaWRlVGl0bGVcIlxyXG4gICAgW2ZvcmNlT3ZlcmZsb3ddPVwidHJ1ZVwiXHJcbiAgICBbbmdDbGFzc109XCJjbHNcIlxyXG4+XHJcbiAgICBAaWYoIWhpZGVUaXRsZSAmJiBkZXZpY2VTaXplICE9PSAncycgPyAodGl0bGUgfCBiYmJUcmFuc2xhdGUpIDogJycpeyBAaWYoaWNvbil7XHJcbiAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiaWNvblwiPjwvZmQtaWNvbj5cclxuICAgIH1cclxuICAgIDxoNCBmZC10aXRsZT57eyB0aXRsZSB8IGJiYlRyYW5zbGF0ZSB9fTwvaDQ+XHJcbiAgICB9IEBpZiAoZGV2aWNlU2l6ZSAhPT0gJ3MnKSB7XHJcbiAgICA8ZmQtdG9vbGJhci1zcGFjZXIgZmQtdG9vbGJhci1pdGVtPjwvZmQtdG9vbGJhci1zcGFjZXI+XHJcbiAgICB9IEBpZiAoIWhpZGVUb29sYmFyKSB7IEBmb3IgKGJ0biBvZiB0b29sYmFyQnV0dG9uczsgdHJhY2sgX3RyYWNrQnkoaSwgYnRuKTsgbGV0IGkgPSAkaW5kZXgpIHsgQGlmIChidG4gIT09ICctJyAmJlxyXG4gICAgYnRuLkNvbW1hbmQgJiYgIWJ0bi5Db21tYW5kLkN1c3RvbVVpICYmICFidG4ubWVudSkge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCJidG4uaXRlbUlkID09PSAnRWRpdCcgPyAnYWx3YXlzJyA6IGJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gPyAnbG93JyA6ICdoaWdoJ1wiXHJcbiAgICAgICAgW3VsdkNvbW1hbmRIYW5kbGVyXT1cImJ0blwiXHJcbiAgICAgICAgW2Rpc2FibGVdPVwiaW5saW5lRWRpdE1vZGUgJiYgYnRuLml0ZW1JZCA9PT0gJ05ldydcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJidG4uQ29tbWFuZC5faXNFbmFibGUgPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICBbZmRUeXBlXT1cIiFidG4uQ29tbWFuZC5faXNFbmFibGUgPyAndHJhbnNwYXJlbnQnIDogYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uRGVzaWduIHx8ICd0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgIFtnbHlwaF09XCJkZXZpY2VTaXplID09PSAncycgPyBudWxsIDogYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uSWNvblwiXHJcbiAgICAgICAgW3RpdGxlXT1cIihidG4uQ29tbWFuZD8uSXNCdWlsdGluID8gYnRuLnRleHQgOiAnJykgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIChjbGljayk9XCJpbmxpbmVFZGl0TW9kZSAmJiBidG4uaXRlbUlkID09PSAnTmV3JyAmJiBjcmVhdGVOZXdJbmxpbmVNby5lbWl0KClcIlxyXG4gICAgICAgIGJvZHlDbGlja1xyXG4gICAgPlxyXG4gICAgICAgIEBpZiAoIWJ0bi5Db21tYW5kLkpzb25FeHRyYVByb3A/Lkljb24gJiYgIWJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gJiYgYnRuLmljb24pIHtcclxuICAgICAgICA8aW1nIHdpZHRoPVwiMTZcIiBbc3JjXT1cImJ0bi5pY29uXCIgLz5cclxuICAgICAgICB9IEBpZiAoIWJ0bi5oaWRlVGV4dCB8fCBkZXZpY2VTaXplID09PSAncycpIHtcclxuICAgICAgICA8c3Bhbj57eyBidG4udGV4dCB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICB9XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIH0gQGlmICgoYnRuID09PSAnLScgfHwgYnRuLnR5cGUgPT09ICdzZXBlcmF0b3InKSAmJiBkZXZpY2VOYW1lICE9PSAnbW9iaWxlJykge1xyXG4gICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yIGZkLXRvb2xiYXItaXRlbT48L2ZkLXRvb2xiYXItc2VwYXJhdG9yPlxyXG4gICAgfSBAaWYgKGJ0bi5tZW51KSB7XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgW2ZkTWVudV09XCJ0cnVlXCJcclxuICAgICAgICBbZmRUeXBlXT1cImJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gPyAnc3RhbmRhcmQnIDogJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgW2xhYmVsXT1cImJ0bi50ZXh0IHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICBbYXJpYUxhYmVsXT1cImJ0bi50ZXh0IHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCJcclxuICAgICAgICBib2R5Q2xpY2tcclxuICAgID5cclxuICAgICAgICA8ZmQtbWVudSAjbWVudT5cclxuICAgICAgICAgICAgQGZvciAoYnRuQ29tbWFuZCBvZiBidG4ubWVudS5pdGVtczsgdHJhY2sgYnRuQ29tbWFuZCkge1xyXG4gICAgICAgICAgICA8bGkgZmQtbWVudS1pdGVtIFt1bHZDb21tYW5kSGFuZGxlcl09XCJidG5Db21tYW5kXCIgKGNsaWNrKT1cIm1lbnUuY2xvc2UoKVwiPlxyXG4gICAgICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgYnRuQ29tbWFuZC50ZXh0IHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2ZkLW1lbnU+XHJcbiAgICA8L2J1dHRvbj5cclxuICAgIH0gQGlmIChidG4gIT09ICctJyAmJiBidG4uQ29tbWFuZCAmJiBidG4uQ29tbWFuZC5DdXN0b21VaSkge1xyXG4gICAgPGJucmMtZHluYW1pYy1mb3JtLXRvb2xiYXJpdGVtXHJcbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgW3VsdkNvbW1hbmRIYW5kbGVyXT1cImJ0blwiXHJcbiAgICAgICAgW2NvbXBvbmVudF09XCJidG4uQ29tbWFuZD8uQ3VzdG9tVWlcIlxyXG4gICAgICAgIFtjb250ZXh0XT1cImJ0blwiXHJcbiAgICAgICAgW2lzRW5hYmxlXT1cImJ0bi5Db21tYW5kPy5faXNFbmFibGVcIlxyXG4gICAgICAgIFtkZXZpY2VOYW1lXT1cImRldmljZU5hbWVcIlxyXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxyXG4gICAgICAgIGJvZHlDbGlja1xyXG4gICAgPjwvYm5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW0+XHJcbiAgICB9IH1cclxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmZC10b29sYmFyLWl0ZW1dXCI+PC9uZy1jb250ZW50PlxyXG4gICAgQGlmIChhbGxvd0lubGluZUVkaXQgJiYgYWNjZXNzPy5FZGl0KSB7XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgW2ZkVHlwZV09XCJpbmxpbmVFZGl0TW9kZSA/ICdlbXBoYXNpemVkJyA6ICd0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgIFtnbHlwaF09XCInZWRpdCdcIlxyXG4gICAgICAgIFtsYWJlbF09XCJkZXZpY2VTaXplID09PSAncycgPyAoJ0lubGluZSBFZGl0IEluIExpc3QnIHwgYmJiVHJhbnNsYXRlKSA6ICcnXCJcclxuICAgICAgICAoY2xpY2spPVwib25FZGl0TW9kZSgpXCJcclxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2Fsd2F5cydcIlxyXG4gICAgICAgIFt0aXRsZV09XCInSW5saW5lIEVkaXQgSW4gTGlzdCcgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIGJvZHlDbGlja1xyXG4gICAgPjwvYnV0dG9uPlxyXG4gICAgfSBAaWYgKGdyaWRTZXR0aW5nICYmIGdyaWRTZXR0aW5nLkhpZGRlbiAhPT0gdHJ1ZSAmJiBhbGxvd0dyaWRDb2x1bW5Tb3J0KSB7IEBpZiAoZGV2aWNlU2l6ZSA9PT0gJ3MnKSB7XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcclxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidhbHdheXMnXCJcclxuICAgICAgICAoY2xpY2spPVwib25Hcm91cGJ5U2V0dGluZ3MoKVwiXHJcbiAgICAgICAgW2xhYmVsXT1cIidHcm91cHMnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICBib2R5Q2xpY2tcclxuICAgID48L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICBmZC1idXR0b25cclxuICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxyXG4gICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2Fsd2F5cydcIlxyXG4gICAgICAgIChjbGljayk9XCJvblNvcnRTZXR0aW5ncygpXCJcclxuICAgICAgICBbbGFiZWxdPVwiJ1NvcnQnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICBib2R5Q2xpY2tcclxuICAgID48L2J1dHRvbj5cclxuICAgIDxidXR0b25cclxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICBmZC1idXR0b25cclxuICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxyXG4gICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2Fsd2F5cydcIlxyXG4gICAgICAgIChjbGljayk9XCJvbkNvbHVtblNldHRpbmdzKClcIlxyXG4gICAgICAgIFtsYWJlbF09XCInQ29sdW1ucycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIGJvZHlDbGlja1xyXG4gICAgPjwvYnV0dG9uPlxyXG4gICAgfSBAaWYgKGRldmljZVNpemUgIT09ICdzJykge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbmV2ZXInXCJcclxuICAgICAgICBbZmRNZW51XT1cInRydWVcIlxyXG4gICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcclxuICAgICAgICBnbHlwaD1cImFjdGlvbi1zZXR0aW5nc1wiXHJcbiAgICAgICAgW3RpdGxlXT1cIidTZXR0aW5ncycgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIFtmZE1lbnVUcmlnZ2VyXT1cInRhYmxlTWVudVNldHRpbmdzXCJcclxuICAgICAgICBib2R5Q2xpY2tcclxuICAgID48L2J1dHRvbj5cclxuICAgIH1cclxuICAgIDxmZC1tZW51ICN0YWJsZU1lbnVTZXR0aW5ncz5cclxuICAgICAgICA8bGkgZmQtbWVudS1pdGVtPlxyXG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cInRhYmxlTWVudVNldHRpbmdzLmNsb3NlKCk7IG9uQ29sdW1uU2V0dGluZ3MoKVwiIGJvZHlDbGljaz5cclxuICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJhY3Rpb24tc2V0dGluZ3NcIj48L2ZkLW1lbnUtYWRkb24+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdDb2x1bW5zJyB8IGJiYlRyYW5zbGF0ZSB9fVxyXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L2xpPlxyXG4gICAgICAgIDxsaSBmZC1tZW51LWl0ZW0+XHJcbiAgICAgICAgICAgIDxkaXYgZmQtbWVudS1pbnRlcmFjdGl2ZSAoY2xpY2spPVwidGFibGVNZW51U2V0dGluZ3MuY2xvc2UoKTsgb25Tb3J0U2V0dGluZ3MoKVwiIGJvZHlDbGljaz5cclxuICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJzb3J0XCI+PC9mZC1tZW51LWFkZG9uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnU29ydCcgfCBiYmJUcmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgZmQtbWVudS1pdGVtPlxyXG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cInRhYmxlTWVudVNldHRpbmdzLmNsb3NlKCk7IG9uR3JvdXBieVNldHRpbmdzKClcIiBib2R5Q2xpY2s+XHJcbiAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvbiBwb3NpdGlvbj1cImJlZm9yZVwiIGdseXBoPVwiZ3JvdXAtMlwiPjwvZmQtbWVudS1hZGRvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ0dyb3VwcycgfCBiYmJUcmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgIDwvZmQtbWVudT5cclxuICAgIH0gQGlmICh2aWV3Q29sbGVjdGlvbiAmJiB2aWV3Q29sbGVjdGlvbi5sZW5ndGggPiAxKSB7XHJcbiAgICA8ZmQtc3BsaXQtYnV0dG9uXHJcbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cImRldmljZVNpemUgPT09ICdzJyA/ICdhbHdheXMnIDogJ2xvdydcIlxyXG4gICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXHJcbiAgICAgICAgW21haW5BY3Rpb25dPVwie1xyXG4gICAgICAgICAgICBrZWVwTWFpbkFjdGlvbjogdHJ1ZSxcclxuICAgICAgICAgICAgbWFpbkFjdGlvblRpdGxlOiBzcGxpdEJ0blRpdGxlXHJcbiAgICAgICAgfVwiXHJcbiAgICA+XHJcbiAgICAgICAgPGZkLW1lbnU+XHJcbiAgICAgICAgICAgIEBmb3IgKHZpZXdPYmplY3Qgb2Ygdmlld0NvbGxlY3Rpb247IHRyYWNrIHZpZXdPYmplY3QpIHtcclxuICAgICAgICAgICAgPGxpIGZkLW1lbnUtaXRlbT5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtbWVudS1pbnRlcmFjdGl2ZSAoY2xpY2spPVwib25DaGFuZ2VWaWV3KHZpZXdPYmplY3QpXCIgYm9keUNsaWNrPlxyXG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJ2aWV3T2JqZWN0LlVpQ29tcG9uZW50LlNldHRpbmdzPy5JY29uXCI+IDwvZmQtaWNvbj5cclxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgPC9saT5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIDwvZmQtbWVudT5cclxuICAgIDwvZmQtc3BsaXQtYnV0dG9uPlxyXG4gICAgfVxyXG4gICAgPG5nLXRlbXBsYXRlICNzcGxpdEJ0blRpdGxlPlxyXG4gICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJyZXBvcnRWaWV3LlVpQ29tcG9uZW50LlNldHRpbmdzPy5JY29uXCI+PC9mZC1pY29uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIDxuZy10ZW1wbGF0ZSAjc3BsaXRCdG5TZXR0aW5ncz5cclxuICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiJ2FjdGlvbi1zZXR0aW5ncydcIj48L2ZkLWljb24+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgfVxyXG48L2ZkLXRvb2xiYXI+XHJcbn1cclxuIl19
177
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWx2LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUV2QixTQUFTLEVBRVQsWUFBWSxFQUNaLE1BQU0sRUFDTixLQUFLLEVBRUwsTUFBTSxFQUNOLFNBQVMsRUFFVCxTQUFTLEVBQ1osTUFBTSxlQUFlLENBQUM7QUFHdkIsT0FBTyxFQUNILGFBQWEsRUFLYixhQUFhLEVBQ2hCLE1BQU0sc0JBQXNCLENBQUM7QUFDOUIsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLE1BQU0sQ0FBQzs7Ozs7Ozs7Ozs7QUFTakMsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGFBQWE7SUF1Q2xELFlBQW1CLEVBQWMsRUFBVSxJQUF1QjtRQUM5RCxLQUFLLEVBQUUsQ0FBQztRQURPLE9BQUUsR0FBRixFQUFFLENBQVk7UUFBVSxTQUFJLEdBQUosSUFBSSxDQUFtQjtRQWxDekQsY0FBUyxHQUFHLEtBQUssQ0FBQztRQXVCakIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDcEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3ZDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN6QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBQ2pELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFR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Q0csTUFBTTtzQkFBZCxLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csZUFBZTtzQkFBdkIsS0FBSztnQkFDSSxNQUFNO3NCQUFmLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLFdBQVc7c0JBQXBCLE1BQU07Z0JBQ0csYUFBYTtzQkFBdEIsTUFBTTtnQkFDRyxTQUFTO3NCQUFsQixNQUFNO2dCQUNHLGlCQUFpQjtzQkFBMUIsTUFBTSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcclxuICAgIENoYW5nZURldGVjdG9yUmVmLFxyXG4gICAgQ29tcG9uZW50LFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIEV2ZW50RW1pdHRlcixcclxuICAgIGluamVjdCxcclxuICAgIElucHV0LFxyXG4gICAgT25DaGFuZ2VzLFxyXG4gICAgT3V0cHV0LFxyXG4gICAgUmVuZGVyZXIyLFxyXG4gICAgU2ltcGxlQ2hhbmdlcyxcclxuICAgIFZpZXdDaGlsZFxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb250ZW50RGVuc2l0eSwgVG9vbGJhckNvbXBvbmVudCB9IGZyb20gJ0BmdW5kYW1lbnRhbC1uZ3gvY29yZSc7XHJcblxyXG5pbXBvcnQge1xyXG4gICAgQmFzZUNvbXBvbmVudCxcclxuICAgIERlZmF1bHRDb21tYW5kc0FjY2VzcyxcclxuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcclxuICAgIERldmljZVNpemUsXHJcbiAgICBVaVJlcG9ydFZpZXdCYXNlLFxyXG4gICAgUG9ydGFsU2VydmljZVxyXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgdGFrZVVudGlsIH0gZnJvbSAncnhqcyc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXVsdi10b29sYmFyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91bHYtdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91bHYtdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2gsXHJcbiAgICBzdGFuZGFsb25lOiBmYWxzZVxyXG59KVxyXG5leHBvcnQgY2xhc3MgVWx2VG9vbGJhckNvbXBvbmVudCBleHRlbmRzIEJhc2VDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMge1xyXG4gICAgQFZpZXdDaGlsZCgndG9vbGJhcicpIF90bGJDbXA6IFRvb2xiYXJDb21wb25lbnQ7XHJcbiAgICBASW5wdXQoKSBhbGxvd0dyaWRDb2x1bW5Tb3J0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgdXNlTGF5b3V0SXRlbVRleHRGb3JDb250cm9sOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgZW5hYmxlU2VhcmNoOiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgaGlkZVRpdGxlID0gZmFsc2U7XHJcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xyXG4gICAgQElucHV0KCkgZGV2aWNlTmFtZTogRGV2aWNlU2l6ZTtcclxuICAgIEBJbnB1dCgpIGRldmljZVNpemU6IEFiYnJldmF0aW9uRGV2aWNlU2l6ZTtcclxuICAgIEBJbnB1dCgpIGFjY2VzczogRGVmYXVsdENvbW1hbmRzQWNjZXNzO1xyXG4gICAgQElucHV0KCkgaGlkZVRvb2xiYXI6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSB0b29sYmFyQnV0dG9uczogYW55W107XHJcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XHJcbiAgICBASW5wdXQoKSBpbmxpbmVFZGl0TW9kZTogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGFsbG93SW5saW5lRWRpdDogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGdyaWRTZXR0aW5nOiBhbnk7XHJcbiAgICBASW5wdXQoKSB2aWV3Q29sbGVjdGlvbjogYW55W107XHJcbiAgICBASW5wdXQoKSByZXBvcnRWaWV3OiBVaVJlcG9ydFZpZXdCYXNlO1xyXG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBpc011bHRpU2VsZWN0OiBib29sZWFuO1xyXG4gICAgQElucHV0KCkgY2xzOiBhbnk7XHJcblxyXG4gICAgQElucHV0KCkgaGFzU2VsZWN0ZWQ6IGJvb2xlYW47XHJcbiAgICBASW5wdXQoKSBjb25maWc6IGFueTtcclxuICAgIEBJbnB1dCgpIGhpZGRlbjogYm9vbGVhbjtcclxuICAgIEBJbnB1dCgpIGJ1dHRvbnM6IGFueVtdO1xyXG4gICAgQElucHV0KCkgbW9EYXRhTGlzdENvdW50OiBudW1iZXI7ICAgIFxyXG4gICAgQE91dHB1dCgpIHNlYXJjaCA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQE91dHB1dCgpIGdyb3VwYnlDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQE91dHB1dCgpIHNvcnRDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gICAgQE91dHB1dCgpIGNvbHVtbkNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XHJcbiAgICBAT3V0cHV0KCkgZWRpdE1vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICAgIEBPdXRwdXQoKSB2aWV3Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFVpUmVwb3J0Vmlld0Jhc2U+KCk7XHJcbiAgICBAT3V0cHV0KCkgY3JlYXRlTmV3SW5saW5lTW8gPSBuZXcgRXZlbnRFbWl0dGVyPHZvaWQ+KCk7XHJcbiAgICBlbmFibGU6IGJvb2xlYW47XHJcbiAgICBfcmVuZGVyZXIyID0gaW5qZWN0KFJlbmRlcmVyMik7XHJcbiAgICBfcG9ydGFsU2VydmljZSA9IGluamVjdChQb3J0YWxTZXJ2aWNlKTtcclxuICAgIHZpc2libGVkID0gZmFsc2U7XHJcbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMgZWw6IEVsZW1lbnRSZWYsIHByaXZhdGUgX2NkcjogQ2hhbmdlRGV0ZWN0b3JSZWYpIHtcclxuICAgICAgICBzdXBlcigpO1xyXG4gICAgfVxyXG4gICAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xyXG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xyXG4gICAgICAgIHRoaXMuX3BvcnRhbFNlcnZpY2Uud2luZG93UmVzaXplJC5waXBlKHRha2VVbnRpbCh0aGlzLl9vbkRlc3Ryb3kkKSkuc3Vic2NyaWJlKCgpID0+IHtcclxuICAgICAgICAgICAgdGhpcy5yZWZyZXNoUmVzaXplKCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XHJcbiAgICAgICAgY29uc3QgeyB0b29sYmFyQnV0dG9ucyB9ID0gY2hhbmdlcztcclxuICAgICAgICBpZiAodG9vbGJhckJ1dHRvbnMpIHtcclxuICAgICAgICAgICAgaWYgKHRvb2xiYXJCdXR0b25zLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoVG9vbGJhcigpO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9yZWZyZXNoVG9vbGJhcigpO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuX2Nkci5kZXRlY3RDaGFuZ2VzKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBvblZpc2liaWxpdHlDaGFuZ2UoZSk6IHZvaWQge1xyXG4gICAgICAgIGlmIChlID09PSAnVmlzaWJsZScpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2V0V2lkdGgoKTtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLnZpc2libGVkKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnZpc2libGVkID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUb29sYmFyKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBwcm90ZWN0ZWQgX3NldFdpZHRoKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICh0aGlzLnZpc2libGVkIHx8IHRoaXMuaGlkZVRvb2xiYXIpIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnJlZnJlc2hSZXNpemUoKTtcclxuICAgIH1cclxuICAgIHByaXZhdGUgcmVmcmVzaFJlc2l6ZSgpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCB4ID0gTWF0aC5mbG9vcih0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucGFyZW50Tm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCk7XHJcbiAgICAgICAgdGhpcy5fcmVuZGVyZXIyLnNldFN0eWxlKHRoaXMuZWwubmF0aXZlRWxlbWVudCwgJ3dpZHRoJywgeCArICdweCcpO1xyXG4gICAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuX3JlZnJlc2hUb29sYmFyKCk7XHJcbiAgICAgICAgLy8gfSk7XHJcbiAgICB9XHJcblxyXG4gICAgb25Hcm91cGJ5U2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5ncm91cGJ5Q2xpY2suZW1pdCh0aGlzLmRldmljZU5hbWUpO1xyXG4gICAgfVxyXG4gICAgb25Tb3J0U2V0dGluZ3MoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5zb3J0Q2xpY2suZW1pdCh0aGlzLmRldmljZU5hbWUpO1xyXG4gICAgfVxyXG4gICAgb25Db2x1bW5TZXR0aW5ncygpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLmNvbHVtbkNsaWNrLmVtaXQodGhpcy5kZXZpY2VOYW1lKTtcclxuICAgIH1cclxuICAgIG9uRWRpdE1vZGUoKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy5lZGl0TW9kZUNsaWNrLmVtaXQoKTtcclxuICAgIH1cclxuICAgIG9uQ2hhbmdlVmlldyh2aWV3OiBVaVJlcG9ydFZpZXdCYXNlKTogdm9pZCB7XHJcbiAgICAgICAgdGhpcy52aWV3Q2xpY2suZW1pdCh2aWV3KTtcclxuICAgIH1cclxuICAgIF90cmFja0J5KGluZGV4LCBpdGVtKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gaXRlbT8uaXRlbUlkO1xyXG4gICAgfVxyXG4gICAgcHVibGljIGlkZW50aWZ5KGluZGV4LCBpdGVtKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gaXRlbS50ZXh0O1xyXG4gICAgfVxyXG4gICAgcHJpdmF0ZSBfcmVmcmVzaFRvb2xiYXIoKTogdm9pZCB7XHJcbiAgICAgICAgaWYgKHRoaXMuX3RsYkNtcCkge1xyXG4gICAgICAgICAgICB0aGlzLl90bGJDbXAuZm9yY2VPdmVyZmxvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLl90bGJDbXAudXBkYXRlQ29sbGFwc2libGVJdGVtcygpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iLCI8ZGl2XHJcbiAgICBzdHlsZT1cIndpZHRoOiAxMDAlOyBoZWlnaHQ6IDA7IHZpc2liaWxpdHk6IGhpZGRlbjsgb3BhY2l0eTogMFwiXHJcbiAgICBpbnRlcnNlY3Rpb25PYnNlcnZlclxyXG4gICAgW2ludGVyc2VjdGlvblRocmVzaG9sZF09XCIwLjFcIlxyXG4gICAgKHZpc2liaWxpdHlDaGFuZ2UpPVwib25WaXNpYmlsaXR5Q2hhbmdlKCRldmVudClcIlxyXG4+PC9kaXY+XHJcbkBpZiAoIXVzZUxheW91dEl0ZW1UZXh0Rm9yQ29udHJvbCAmJiAhaGlkZVRvb2xiYXIpIHtcclxuPGZkLXRvb2xiYXJcclxuICAgICN0b29sYmFyXHJcbiAgICBbc2hvdWxkT3ZlcmZsb3ddPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCJcclxuICAgIFtuZ0NsYXNzXT1cImRldmljZVNpemVcIlxyXG4gICAgW2hhc1RpdGxlXT1cIiFoaWRlVGl0bGVcIlxyXG4gICAgW2ZvcmNlT3ZlcmZsb3ddPVwidHJ1ZVwiXHJcbiAgICBbbmdDbGFzc109XCJjbHNcIlxyXG4+XHJcbiAgICBAaWYoIWhpZGVUaXRsZSAmJiBkZXZpY2VTaXplICE9PSAncycgPyAodGl0bGUgfCBiYmJUcmFuc2xhdGUpIDogJycpeyBAaWYoaWNvbil7XHJcbiAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiaWNvblwiPjwvZmQtaWNvbj5cclxuICAgIH1cclxuICAgIDxoNCBmZC10aXRsZT57eyB0aXRsZSB8IGJiYlRyYW5zbGF0ZSB9fTwvaDQ+XHJcbiAgICB9IEBpZiAoZGV2aWNlU2l6ZSAhPT0gJ3MnKSB7XHJcbiAgICA8ZmQtdG9vbGJhci1zcGFjZXIgZmQtdG9vbGJhci1pdGVtPjwvZmQtdG9vbGJhci1zcGFjZXI+XHJcbiAgICB9IEBpZiAoIWhpZGVUb29sYmFyKSB7IEBmb3IgKGJ0biBvZiB0b29sYmFyQnV0dG9uczsgdHJhY2sgX3RyYWNrQnkoaSwgYnRuKTsgbGV0IGkgPSAkaW5kZXgpIHsgQGlmIChidG4gIT09ICctJyAmJlxyXG4gICAgYnRuLkNvbW1hbmQgJiYgIWJ0bi5Db21tYW5kLkN1c3RvbVVpICYmICFidG4ubWVudSkge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCJidG4uaXRlbUlkID09PSAnRWRpdCcgPyAnYWx3YXlzJyA6IGJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gPyAnbG93JyA6ICdoaWdoJ1wiXHJcbiAgICAgICAgW3VsdkNvbW1hbmRIYW5kbGVyXT1cImJ0blwiXHJcbiAgICAgICAgW2Rpc2FibGVdPVwiaW5saW5lRWRpdE1vZGUgJiYgYnRuLml0ZW1JZCA9PT0gJ05ldydcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCJidG4uQ29tbWFuZC5faXNFbmFibGUgPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgICAgICBbZmRUeXBlXT1cIiFidG4uQ29tbWFuZC5faXNFbmFibGUgPyAndHJhbnNwYXJlbnQnIDogYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uRGVzaWduIHx8ICd0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgIFtnbHlwaF09XCJkZXZpY2VTaXplID09PSAncycgPyBudWxsIDogYnRuLm5ld0ljb24gfHwgYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uSWNvblwiXHJcbiAgICAgICAgW3RpdGxlXT1cIihidG4uQ29tbWFuZD8uSXNCdWlsdGluID8gYnRuLnRleHQgOiAnJykgfCBiYmJUcmFuc2xhdGVcIlxyXG4gICAgICAgIChjbGljayk9XCJpbmxpbmVFZGl0TW9kZSAmJiBidG4uaXRlbUlkID09PSAnTmV3JyAmJiBjcmVhdGVOZXdJbmxpbmVNby5lbWl0KClcIlxyXG4gICAgICAgIGJvZHlDbGlja1xyXG4gICAgPlxyXG4gICAgICAgIEBpZiAoIWJ0bi5Db21tYW5kLkpzb25FeHRyYVByb3A/Lkljb24gJiYgIWJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gJiYgYnRuLmljb24pIHtcclxuICAgICAgICA8aW1nIHdpZHRoPVwiMTZcIiBbc3JjXT1cImJ0bi5pY29uXCIgLz5cclxuICAgICAgICB9IEBpZiAoIWJ0bi5oaWRlVGV4dCB8fCBkZXZpY2VTaXplID09PSAncycpIHtcclxuICAgICAgICA8c3Bhbj57eyAoIWJ0bi50ZXh0ICYmIGJ0bi5pc0N1c3RvbSA/IGJ0bi5pdGVtSWQgOiBidG4udGV4dCkgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgPC9idXR0b24+XHJcbiAgICB9IEBpZiAoKGJ0biA9PT0gJy0nIHx8IGJ0bi50eXBlID09PSAnc2VwZXJhdG9yJykgJiYgZGV2aWNlTmFtZSAhPT0gJ21vYmlsZScpIHtcclxuICAgIDxmZC10b29sYmFyLXNlcGFyYXRvciBmZC10b29sYmFyLWl0ZW0+PC9mZC10b29sYmFyLXNlcGFyYXRvcj5cclxuICAgIH0gQGlmIChidG4ubWVudSkge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgIFtmZE1lbnVdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2ZkVHlwZV09XCJidG4uQ29tbWFuZD8uSXNCdWlsdGluID8gJ3N0YW5kYXJkJyA6ICd0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgIFtsYWJlbF09XCJidG4udGV4dCB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJidG4udGV4dCB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgW2ZkTWVudVRyaWdnZXJdPVwibWVudVwiXHJcbiAgICAgICAgYm9keUNsaWNrXHJcbiAgICA+XHJcbiAgICAgICAgPGZkLW1lbnUgI21lbnU+XHJcbiAgICAgICAgICAgIEBmb3IgKGJ0bkNvbW1hbmQgb2YgYnRuLm1lbnUuaXRlbXM7IHRyYWNrIGJ0bkNvbW1hbmQpIHtcclxuICAgICAgICAgICAgPGxpIGZkLW1lbnUtaXRlbSBbdWx2Q29tbWFuZEhhbmRsZXJdPVwiYnRuQ29tbWFuZFwiIChjbGljayk9XCJtZW51LmNsb3NlKClcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgZmQtbWVudS1pbnRlcmFjdGl2ZT5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPnt7IGJ0bkNvbW1hbmQudGV4dCB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Bhbj5cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2xpPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgPC9mZC1tZW51PlxyXG4gICAgPC9idXR0b24+XHJcbiAgICB9IEBpZiAoYnRuICE9PSAnLScgJiYgYnRuLkNvbW1hbmQgJiYgYnRuLkNvbW1hbmQuQ3VzdG9tVWkpIHtcclxuICAgIDxibnJjLWR5bmFtaWMtZm9ybS10b29sYmFyaXRlbVxyXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgIFt1bHZDb21tYW5kSGFuZGxlcl09XCJidG5cIlxyXG4gICAgICAgIFtjb21wb25lbnRdPVwiYnRuLkNvbW1hbmQ/LkN1c3RvbVVpXCJcclxuICAgICAgICBbY29udGV4dF09XCJidG5cIlxyXG4gICAgICAgIFtpc0VuYWJsZV09XCJidG4uQ29tbWFuZD8uX2lzRW5hYmxlXCJcclxuICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcclxuICAgICAgICBbZGV2aWNlU2l6ZV09XCJkZXZpY2VTaXplXCJcclxuICAgICAgICBib2R5Q2xpY2tcclxuICAgID48L2JucmMtZHluYW1pYy1mb3JtLXRvb2xiYXJpdGVtPlxyXG4gICAgfSB9XHJcbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZmQtdG9vbGJhci1pdGVtXVwiPjwvbmctY29udGVudD5cclxuICAgIEBpZiAoYWxsb3dJbmxpbmVFZGl0ICYmIGFjY2Vzcz8uRWRpdCkge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgIFtmZFR5cGVdPVwiaW5saW5lRWRpdE1vZGUgPyAnZW1waGFzaXplZCcgOiAndHJhbnNwYXJlbnQnXCJcclxuICAgICAgICBbZ2x5cGhdPVwiJ2VkaXQnXCJcclxuICAgICAgICBbbGFiZWxdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnID8gKCdJbmxpbmUgRWRpdCBJbiBMaXN0JyB8IGJiYlRyYW5zbGF0ZSkgOiAnJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uRWRpdE1vZGUoKVwiXHJcbiAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidhbHdheXMnXCJcclxuICAgICAgICBbdGl0bGVdPVwiJ0lubGluZSBFZGl0IEluIExpc3QnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICBib2R5Q2xpY2tcclxuICAgID48L2J1dHRvbj5cclxuICAgIH0gQGlmIChncmlkU2V0dGluZyAmJiBncmlkU2V0dGluZy5IaWRkZW4gIT09IHRydWUgJiYgYWxsb3dHcmlkQ29sdW1uU29ydCkgeyBAaWYgKGRldmljZVNpemUgPT09ICdzJykge1xyXG4gICAgPGJ1dHRvblxyXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgIGZkLWJ1dHRvblxyXG4gICAgICAgIFtjb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXHJcbiAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxyXG4gICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInYWx3YXlzJ1wiXHJcbiAgICAgICAgKGNsaWNrKT1cIm9uR3JvdXBieVNldHRpbmdzKClcIlxyXG4gICAgICAgIFtsYWJlbF09XCInR3JvdXBzJyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgYm9keUNsaWNrXHJcbiAgICA+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcclxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidhbHdheXMnXCJcclxuICAgICAgICAoY2xpY2spPVwib25Tb3J0U2V0dGluZ3MoKVwiXHJcbiAgICAgICAgW2xhYmVsXT1cIidTb3J0JyB8IGJiYlRyYW5zbGF0ZVwiXHJcbiAgICAgICAgYm9keUNsaWNrXHJcbiAgICA+PC9idXR0b24+XHJcbiAgICA8YnV0dG9uXHJcbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXHJcbiAgICAgICAgZmQtYnV0dG9uXHJcbiAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcclxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidhbHdheXMnXCJcclxuICAgICAgICAoY2xpY2spPVwib25Db2x1bW5TZXR0aW5ncygpXCJcclxuICAgICAgICBbbGFiZWxdPVwiJ0NvbHVtbnMnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICBib2R5Q2xpY2tcclxuICAgID48L2J1dHRvbj5cclxuICAgIH0gQGlmIChkZXZpY2VTaXplICE9PSAncycpIHtcclxuICAgIDxidXR0b25cclxuICAgICAgICBmZC1idXR0b25cclxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cclxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ25ldmVyJ1wiXHJcbiAgICAgICAgW2ZkTWVudV09XCJ0cnVlXCJcclxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXHJcbiAgICAgICAgZ2x5cGg9XCJhY3Rpb24tc2V0dGluZ3NcIlxyXG4gICAgICAgIFt0aXRsZV09XCInU2V0dGluZ3MnIHwgYmJiVHJhbnNsYXRlXCJcclxuICAgICAgICBbZmRNZW51VHJpZ2dlcl09XCJ0YWJsZU1lbnVTZXR0aW5nc1wiXHJcbiAgICAgICAgYm9keUNsaWNrXHJcbiAgICA+PC9idXR0b24+XHJcbiAgICB9XHJcbiAgICA8ZmQtbWVudSAjdGFibGVNZW51U2V0dGluZ3M+XHJcbiAgICAgICAgPGxpIGZkLW1lbnUtaXRlbT5cclxuICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlIChjbGljayk9XCJ0YWJsZU1lbnVTZXR0aW5ncy5jbG9zZSgpOyBvbkNvbHVtblNldHRpbmdzKClcIiBib2R5Q2xpY2s+XHJcbiAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvbiBwb3NpdGlvbj1cImJlZm9yZVwiIGdseXBoPVwiYWN0aW9uLXNldHRpbmdzXCI+PC9mZC1tZW51LWFkZG9uPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT5cclxuICAgICAgICAgICAgICAgICAgICB7eyAnQ29sdW1ucycgfCBiYmJUcmFuc2xhdGUgfX1cclxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgICA8bGkgZmQtbWVudS1pdGVtPlxyXG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cInRhYmxlTWVudVNldHRpbmdzLmNsb3NlKCk7IG9uU29ydFNldHRpbmdzKClcIiBib2R5Q2xpY2s+XHJcbiAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvbiBwb3NpdGlvbj1cImJlZm9yZVwiIGdseXBoPVwic29ydFwiPjwvZmQtbWVudS1hZGRvbj5cclxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XHJcbiAgICAgICAgICAgICAgICAgICAge3sgJ1NvcnQnIHwgYmJiVHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgICAgPGxpIGZkLW1lbnUtaXRlbT5cclxuICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlIChjbGljayk9XCJ0YWJsZU1lbnVTZXR0aW5ncy5jbG9zZSgpOyBvbkdyb3VwYnlTZXR0aW5ncygpXCIgYm9keUNsaWNrPlxyXG4gICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb24gcG9zaXRpb249XCJiZWZvcmVcIiBnbHlwaD1cImdyb3VwLTJcIj48L2ZkLW1lbnUtYWRkb24+XHJcbiAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7ICdHcm91cHMnIHwgYmJiVHJhbnNsYXRlIH19XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICA8L2ZkLW1lbnU+XHJcbiAgICB9IEBpZiAodmlld0NvbGxlY3Rpb24gJiYgdmlld0NvbGxlY3Rpb24ubGVuZ3RoID4gMSkge1xyXG4gICAgPGZkLXNwbGl0LWJ1dHRvblxyXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxyXG4gICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCJkZXZpY2VTaXplID09PSAncycgPyAnYWx3YXlzJyA6ICdsb3cnXCJcclxuICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxyXG4gICAgICAgIFttYWluQWN0aW9uXT1cIntcclxuICAgICAgICAgICAga2VlcE1haW5BY3Rpb246IHRydWUsXHJcbiAgICAgICAgICAgIG1haW5BY3Rpb25UaXRsZTogc3BsaXRCdG5UaXRsZVxyXG4gICAgICAgIH1cIlxyXG4gICAgPlxyXG4gICAgICAgIDxmZC1tZW51PlxyXG4gICAgICAgICAgICBAZm9yICh2aWV3T2JqZWN0IG9mIHZpZXdDb2xsZWN0aW9uOyB0cmFjayB2aWV3T2JqZWN0KSB7XHJcbiAgICAgICAgICAgIDxsaSBmZC1tZW51LWl0ZW0+XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cIm9uQ2hhbmdlVmlldyh2aWV3T2JqZWN0KVwiIGJvZHlDbGljaz5cclxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwidmlld09iamVjdC5VaUNvbXBvbmVudC5TZXR0aW5ncz8uSWNvblwiPiA8L2ZkLWljb24+XHJcbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbGk+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICA8L2ZkLW1lbnU+XHJcbiAgICA8L2ZkLXNwbGl0LWJ1dHRvbj5cclxuICAgIH1cclxuICAgIDxuZy10ZW1wbGF0ZSAjc3BsaXRCdG5UaXRsZT5cclxuICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwicmVwb3J0Vmlldy5VaUNvbXBvbmVudC5TZXR0aW5ncz8uSWNvblwiPjwvZmQtaWNvbj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8bmctdGVtcGxhdGUgI3NwbGl0QnRuU2V0dGluZ3M+XHJcbiAgICAgICAgPGZkLWljb24gW2dseXBoXT1cIidhY3Rpb24tc2V0dGluZ3MnXCI+PC9mZC1pY29uPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuICAgIH1cclxuPC9mZC10b29sYmFyPlxyXG59XHJcbiJdfQ==