barsa-sap-ui 2.0.34 → 2.0.36

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 (36) hide show
  1. package/esm2022/lib/barsa-asp-viewer/barsa-asp-viewer.component.mjs +6 -4
  2. package/esm2022/lib/barsa-chat/barsa-chat.component.mjs +15 -13
  3. package/esm2022/lib/barsa-chat/chat.model.mjs +1 -1
  4. package/esm2022/lib/barsa-chat-list/barsa-chat-list.component.mjs +9 -7
  5. package/esm2022/lib/barsa-chat-message/barsa-chat-message.component.mjs +9 -8
  6. package/esm2022/lib/barsa-form-side-content/barsa-form-side-content.component.mjs +1 -1
  7. package/esm2022/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.mjs +19 -15
  8. package/esm2022/lib/barsa-table-header/barsa-table-header.component.mjs +7 -3
  9. package/esm2022/lib/barsa-table-row/barsa-table-row.component.mjs +2 -2
  10. package/esm2022/lib/barsa-ulv-main/barsa-ulv-main.component.mjs +3 -3
  11. package/esm2022/lib/column-renderer/column-renderer.component.mjs +4 -3
  12. package/esm2022/lib/file-viewer-content/file-viewer-content.component.mjs +1 -1
  13. package/esm2022/lib/ly-label/ly-label.component.mjs +3 -3
  14. package/esm2022/lib/ui-asp-report-viewer/ui-asp-report-viewer.component.mjs +20 -4
  15. package/esm2022/lib/ui-calendar/ui-calendar.component.mjs +1 -1
  16. package/esm2022/lib/ui-editable-grid/ui-editable-grid.component.mjs +1 -1
  17. package/esm2022/lib/ui-gantt-chart/ui-gantt-chart.component.mjs +1 -1
  18. package/esm2022/lib/ui-grid/ui-grid.component.mjs +1 -1
  19. package/esm2022/lib/ui-mo-info-ulv-combo/ui-mo-info-ulv-combo.component.mjs +3 -3
  20. package/esm2022/lib/ui-pdf-viewer/ui-pdf-viewer.component.mjs +1 -1
  21. package/esm2022/lib/ui-report-container/ui-report-container.component.mjs +3 -3
  22. package/esm2022/lib/ui-table-view/ui-table-view.component.mjs +7 -3
  23. package/esm2022/lib/ui-tree/ui-tree.component.mjs +1 -1
  24. package/esm2022/lib/ulv-toolbar/ulv-toolbar.component.mjs +8 -5
  25. package/fesm2022/barsa-sap-ui.mjs +112 -78
  26. package/fesm2022/barsa-sap-ui.mjs.map +1 -1
  27. package/lib/barsa-asp-viewer/barsa-asp-viewer.component.d.ts +2 -1
  28. package/lib/barsa-chat/chat.model.d.ts +3 -13
  29. package/lib/barsa-chat-message/barsa-chat-message.component.d.ts +2 -1
  30. package/lib/barsa-report-one-of-list/barsa-report-one-of-list.component.d.ts +6 -5
  31. package/lib/barsa-table-header/barsa-table-header.component.d.ts +3 -1
  32. package/lib/column-renderer/column-renderer.component.d.ts +1 -0
  33. package/lib/ui-asp-report-viewer/ui-asp-report-viewer.component.d.ts +4 -1
  34. package/lib/ui-table-view/ui-table-view.component.d.ts +3 -1
  35. package/lib/ulv-toolbar/ulv-toolbar.component.d.ts +2 -1
  36. package/package.json +1 -1
@@ -99,7 +99,7 @@ export class UiTreeComponent extends ReportTreeBaseComponent {
99
99
  this.loadChildren(node);
100
100
  }
101
101
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiTreeComponent, deps: null, target: i0.ɵɵFactoryTarget.Component }); }
102
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiTreeComponent, selector: "bsu-ui-tree", inputs: { showOkCancelButtons: "showOkCancelButtons" }, usesInheritance: true, ngImport: i0, template: "<ng-container\n *ngTemplateOutlet=\"\n renderTree;\n context: {\n $implicit: root$ | async,\n moDataList: flatMoDataList,\n isCheckList: context.Setting.View?.IsCheckList,\n columns: visibleColumns$ | async,\n groupby: groupby$ | async,\n toolbarButtons: (toolbarButtons$ | async)!! | seperatorFix,\n contextMenuItems: menuItems$ | async | contextMenu: context.Setting.View?.IsCheckList,\n conditionalFormats: context.Setting.View?.ConditionalFormats,\n deviceName: deviceName$ | async,\n deviceSize: deviceSize$ | async,\n access: context.Setting.Extra?.DefaultCommandsAccess,\n title: title$ | async,\n inlineEditMode: inlineEditMode$ | async,\n allowInlineEdit: allowInlineEdit$ | async,\n hideToolbar: hideToolbar$ | async,\n gridSetting: gridSetting$ | async,\n contentDensity: contentDensity$ | async,\n hasSelected: hasSelected$ | async,\n showOkCancelButtons: showOkCancelButtons,\n hideOpenIcon: viewSetting?.HideOpenIcon,\n openOnClick: viewSetting?.OpenOnClick,\n onlyExecuteLeafNode: viewSetting?.OnlyExecuteLeafNode,\n enableNodeReordering: viewSetting?.EnableNodeReordering,\n viewSettingsContentDensity: viewSetting?.ContentDensity$Caption,\n iconField: viewSetting?.IconField,\n hideIcon: viewSetting?.HideIcon,\n colorField: viewSetting?.ColorField,\n selectedNode: selectedNode$ | async,\n navigationArrow: navigationArrow$ | async,\n collapseIcon: collapseIcon$ | async,\n relationList: context.Setting.View.RelationList,\n allColumns: allColumns,\n rtl: rtl$ | async,\n inDialog: inDialog$ | async,\n isMultiSelect: isMultiSelect$ | async,\n disableOverflowContextMenu: viewSetting?.DisableOverflowContextMenu,\n isHetro: context.Setting.ClassNames.DataClass === 'Ul.HetroTreeUlvDataCtrlr',\n selectedMo: selectedMo$ | async\n }\n \"\n></ng-container>\n\n<ng-template\n #renderTree\n let-root\n let-moDataList=\"moDataList\"\n let-deviceName=\"deviceName\"\n let-deviceSize=\"deviceSize\"\n let-toolbarButtons=\"toolbarButtons\"\n let-title=\"title\"\n let-inlineEditMode=\"inlineEditMode\"\n let-allowInlineEdit=\"allowInlineEdit\"\n let-hideToolbar=\"hideToolbar\"\n let-gridSetting=\"gridSetting\"\n let-contentDensity=\"contentDensity\"\n let-access=\"access\"\n let-contextMenuItems=\"contextMenuItems\"\n let-conditionalFormats=\"conditionalFormats\"\n let-isCheckList=\"isCheckList\"\n let-groupby=\"groupby\"\n let-hasSelected=\"hasSelected\"\n let-showOkCancelButtons=\"showOkCancelButtons\"\n let-selectedNode=\"selectedNode\"\n let-navigationArrow=\"navigationArrow\"\n let-collapseIcon=\"collapseIcon\"\n let-rtl=\"rtl\"\n let-disableOverflowContextMenu=\"disableOverflowContextMenu\"\n let-relationList=\"relationList\"\n let-isHetro=\"isHetro\"\n let-inDialog=\"inDialog\"\n let-isMultiSelect=\"isMultiSelect\"\n let-selectedMo=\"selectedMo\"\n let-hideOpenIcon=\"hideOpenIcon\"\n let-openOnClick=\"openOnClick\"\n let-enableNodeReordering=\"enableNodeReordering\"\n let-onlyExecuteLeafNode=\"onlyExecuteLeafNode\"\n let-iconField=\"iconField\"\n let-colorField=\"colorField\"\n let-allColumns=\"allColumns\"\n let-hideIcon=\"hideIcon\"\n let-viewSettingsContentDensity=\"viewSettingsContentDensity\"\n>\n <bsu-ulv-toolbar\n [hideToolbar]=\"hideToolbar\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [toolbarButtons]=\"toolbarButtons\"\n [gridSetting]=\"gridSetting\"\n [title]=\"title\"\n [hasSelected]=\"hasSelected\"\n [inDialog]=\"inDialog\"\n [isMultiSelect]=\"isMultiSelect\"\n [contentDensity]=\"contentDensity\"\n [inlineEditMode]=\"inlineEditMode\"\n [allowInlineEdit]=\"allowInlineEdit\"\n [moDataListCount]=\"moDataList.length\"\n (sortClick)=\"onSortSettings(deviceName)\"\n (groupbyClick)=\"onGroupbySettings(deviceName)\"\n (columnClick)=\"onColumnSettings(deviceName)\"\n (editModeClick)=\"onEditMode()\"\n >\n <button\n fd-button\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [glyph]=\"'collapse-all'\"\n (click)=\"onCollapseAll()\"\n ></button>\n @if (!showOkCancelButtons && enableNodeReordering) {\n <button\n fd-button\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [glyph]=\"'move'\"\n (click)=\"onOpenMoveToDialog(selectedNode, deviceName, moveDialog)\"\n ></button>\n }\n </bsu-ulv-toolbar>\n <bsu-ui-tree-view\n [leafCursorPointer]=\"onlyExecuteLeafNode && openOnClick\"\n [rtl]=\"rtl\"\n [relationList]=\"relationList\"\n [root]=\"root\"\n [allColumns]=\"allColumns\"\n [hideIcon]=\"hideIcon\"\n [selectedMo]=\"selectedMo\"\n [hideOpenIcon]=\"hideOpenIcon\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [iconField]=\"iconField\"\n [colorField]=\"colorField\"\n [navigationArrow]=\"navigationArrow\"\n [collapseIcon]=\"collapseIcon\"\n [selectedNode]=\"selectedNode\"\n [access]=\"access\"\n [viewSettingsContentDensity]=\"viewSettingsContentDensity\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [enableNodeReordering]=\"enableNodeReordering\"\n [inDialog]=\"inDialog\"\n [isMultiSelect]=\"isMultiSelect\"\n [openOnClick]=\"openOnClick\"\n [contextMenuItems]=\"contextMenuItems\"\n [moDataList]=\"moDataList\"\n [groupby]=\"groupby\"\n [isHetro]=\"isHetro\"\n [isCheckList]=\"isCheckList\"\n [conditionalFormats]=\"conditionalFormats\"\n [showOkCancelButtons]=\"showOkCancelButtons\"\n (checkChange)=\"onCheckChange($event)\"\n (itemDrop)=\"onDrop($event)\"\n (itemDragMoved)=\"onDragMoved($event)\"\n (nodeUlvCommand)=\"onNodeUlvCommand($event)\"\n (nodeViewClick)=\"onNodeViewClick($event)\"\n (loadChildren)=\"onLoadChildren($event)\"\n (nodeSelect)=\"onNodeSelect($event)\"\n (rowCheck)=\"onRowCheck($event)\"\n (rowClick)=\"onRowClick($event)\"\n (allCheckbox)=\"onAllCheckbox($event)\"\n (expandClick)=\"onExpandClick($event)\"\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\n (createNew)=\"onCreateNew($event)\"\n >\n </bsu-ui-tree-view>\n <ng-template let-dialog let-dialogConfig=\"dialogConfig\" #moveDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title>{{ 'Move' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <div class=\"move-to\" (keydown.enter)=\"onConfirmDialog(dialogSelectedNode)\">\n <bsu-ui-tree-view\n [rtl]=\"rtl\"\n [root]=\"root\"\n [access]=\"access\"\n [navigationArrow]=\"navigationArrow\"\n [collapseIcon]=\"collapseIcon\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [viewSettingsContentDensity]=\"viewSettingsContentDensity\"\n [enableNodeReordering]=\"enableNodeReordering\"\n [openOnClick]=\"openOnClick\"\n [selectedNode]=\"dialogSelectedNode\"\n [moDataList]=\"flatMoDataList\"\n [groupby]=\"groupby\"\n [isCheckList]=\"isCheckList\"\n [conditionalFormats]=\"conditionalFormats\"\n (loadChildren)=\"onLoadChildren($event)\"\n (nodeSelect)=\"onSelectNodeInMoveDialog($event)\"\n ></bsu-ui-tree-view>\n </div>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-template fdkTemplate=\"footer\">\n <div fd-bar-right>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'OK' | bbbTranslate\"\n (click)=\"onConfirmDialog(dialogSelectedNode)\"\n >\n </fd-button-bar>\n <fd-button-bar fd-initial-focus [label]=\"'Cancel' | bbbTranslate\" (click)=\"onDismissDialog()\">\n </fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-footer>\n </fd-dialog>\n </ng-template>\n</ng-template>\n", styles: [":host{width:100%;box-sizing:border-box;display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i4.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i4.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i4.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "directive", type: i5.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i8.UlvToolbarComponent, selector: "bsu-ulv-toolbar", inputs: ["allowGridColumnSort", "useLayoutItemTextForControl", "enableSearch", "hideTitle", "title", "deviceName", "deviceSize", "access", "hideToolbar", "toolbarButtons", "contentDensity", "inlineEditMode", "allowInlineEdit", "gridSetting", "viewCollection", "reportView", "inDialog", "isMultiSelect", "hasSelected", "config", "hidden", "buttons", "moDataListCount"], outputs: ["search", "groupbyClick", "sortClick", "columnClick", "editModeClick", "viewClick", "createNewInlineMo"] }, { kind: "component", type: i9.UiTreeViewComponent, selector: "bsu-ui-tree-view", inputs: ["root", "selectedNode", "isHetro", "leafCursorPointer", "relationList", "showOkCancelButtons", "enableNodeReordering", "collapseIcon", "iconField", "colorField", "viewSettingsContentDensity"], outputs: ["checkChange", "nodeSelect", "createNew", "loadChildren", "nodeViewClick", "nodeUlvCommand", "itemDrop", "itemDragMoved"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.SeperatorFixPipe, name: "seperatorFix" }, { kind: "pipe", type: i10.ContextMenuPipe, name: "contextMenu" }, { kind: "pipe", type: i10.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
102
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UiTreeComponent, selector: "bsu-ui-tree", inputs: { showOkCancelButtons: "showOkCancelButtons" }, usesInheritance: true, ngImport: i0, template: "<ng-container\n *ngTemplateOutlet=\"\n renderTree;\n context: {\n $implicit: root$ | async,\n moDataList: flatMoDataList,\n isCheckList: context.Setting.View?.IsCheckList,\n columns: visibleColumns$ | async,\n groupby: groupby$ | async,\n toolbarButtons: (toolbarButtons$ | async)!! | seperatorFix,\n contextMenuItems: menuItems$ | async | contextMenu: context.Setting.View?.IsCheckList,\n conditionalFormats: context.Setting.View?.ConditionalFormats,\n deviceName: deviceName$ | async,\n deviceSize: deviceSize$ | async,\n access: context.Setting.Extra?.DefaultCommandsAccess,\n title: title$ | async,\n inlineEditMode: inlineEditMode$ | async,\n allowInlineEdit: allowInlineEdit$ | async,\n hideToolbar: hideToolbar$ | async,\n gridSetting: gridSetting$ | async,\n contentDensity: contentDensity$ | async,\n hasSelected: hasSelected$ | async,\n showOkCancelButtons: showOkCancelButtons,\n hideOpenIcon: viewSetting?.HideOpenIcon,\n openOnClick: viewSetting?.OpenOnClick,\n onlyExecuteLeafNode: viewSetting?.OnlyExecuteLeafNode,\n enableNodeReordering: viewSetting?.EnableNodeReordering,\n viewSettingsContentDensity: viewSetting?.ContentDensity$Caption,\n iconField: viewSetting?.IconField,\n hideIcon: viewSetting?.HideIcon,\n colorField: viewSetting?.ColorField,\n selectedNode: selectedNode$ | async,\n navigationArrow: navigationArrow$ | async,\n collapseIcon: collapseIcon$ | async,\n relationList: context.Setting.View.RelationList,\n allColumns: allColumns,\n rtl: rtl$ | async,\n inDialog: inDialog$ | async,\n isMultiSelect: isMultiSelect$ | async,\n disableOverflowContextMenu: viewSetting?.DisableOverflowContextMenu,\n isHetro: context.Setting.ClassNames.DataClass === 'Ul.HetroTreeUlvDataCtrlr',\n selectedMo: selectedMo$ | async\n }\n \"\n></ng-container>\n\n<ng-template\n #renderTree\n let-root\n let-moDataList=\"moDataList\"\n let-deviceName=\"deviceName\"\n let-deviceSize=\"deviceSize\"\n let-toolbarButtons=\"toolbarButtons\"\n let-title=\"title\"\n let-inlineEditMode=\"inlineEditMode\"\n let-allowInlineEdit=\"allowInlineEdit\"\n let-hideToolbar=\"hideToolbar\"\n let-gridSetting=\"gridSetting\"\n let-contentDensity=\"contentDensity\"\n let-access=\"access\"\n let-contextMenuItems=\"contextMenuItems\"\n let-conditionalFormats=\"conditionalFormats\"\n let-isCheckList=\"isCheckList\"\n let-groupby=\"groupby\"\n let-hasSelected=\"hasSelected\"\n let-showOkCancelButtons=\"showOkCancelButtons\"\n let-selectedNode=\"selectedNode\"\n let-navigationArrow=\"navigationArrow\"\n let-collapseIcon=\"collapseIcon\"\n let-rtl=\"rtl\"\n let-disableOverflowContextMenu=\"disableOverflowContextMenu\"\n let-relationList=\"relationList\"\n let-isHetro=\"isHetro\"\n let-inDialog=\"inDialog\"\n let-isMultiSelect=\"isMultiSelect\"\n let-selectedMo=\"selectedMo\"\n let-hideOpenIcon=\"hideOpenIcon\"\n let-openOnClick=\"openOnClick\"\n let-enableNodeReordering=\"enableNodeReordering\"\n let-onlyExecuteLeafNode=\"onlyExecuteLeafNode\"\n let-iconField=\"iconField\"\n let-colorField=\"colorField\"\n let-allColumns=\"allColumns\"\n let-hideIcon=\"hideIcon\"\n let-viewSettingsContentDensity=\"viewSettingsContentDensity\"\n>\n <bsu-ulv-toolbar\n [hideToolbar]=\"hideToolbar\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [toolbarButtons]=\"toolbarButtons\"\n [gridSetting]=\"gridSetting\"\n [title]=\"title\"\n [hasSelected]=\"hasSelected\"\n [inDialog]=\"inDialog\"\n [isMultiSelect]=\"isMultiSelect\"\n [contentDensity]=\"contentDensity\"\n [inlineEditMode]=\"inlineEditMode\"\n [allowInlineEdit]=\"allowInlineEdit\"\n [moDataListCount]=\"moDataList.length\"\n (sortClick)=\"onSortSettings(deviceName)\"\n (groupbyClick)=\"onGroupbySettings(deviceName)\"\n (columnClick)=\"onColumnSettings(deviceName)\"\n (editModeClick)=\"onEditMode()\"\n >\n <button\n fd-button\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [glyph]=\"'collapse-all'\"\n (click)=\"onCollapseAll()\"\n ></button>\n @if (!showOkCancelButtons && enableNodeReordering) {\n <button\n fd-button\n fd-toolbar-item\n [fdType]=\"'transparent'\"\n [glyph]=\"'move'\"\n (click)=\"onOpenMoveToDialog(selectedNode, deviceName, moveDialog)\"\n ></button>\n }\n </bsu-ulv-toolbar>\n <bsu-ui-tree-view\n [leafCursorPointer]=\"onlyExecuteLeafNode && openOnClick\"\n [rtl]=\"rtl\"\n [relationList]=\"relationList\"\n [root]=\"root\"\n [allColumns]=\"allColumns\"\n [hideIcon]=\"hideIcon\"\n [selectedMo]=\"selectedMo\"\n [hideOpenIcon]=\"hideOpenIcon\"\n [disableOverflowContextMenu]=\"disableOverflowContextMenu\"\n [iconField]=\"iconField\"\n [colorField]=\"colorField\"\n [navigationArrow]=\"navigationArrow\"\n [collapseIcon]=\"collapseIcon\"\n [selectedNode]=\"selectedNode\"\n [access]=\"access\"\n [viewSettingsContentDensity]=\"viewSettingsContentDensity\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [enableNodeReordering]=\"enableNodeReordering\"\n [inDialog]=\"inDialog\"\n [isMultiSelect]=\"isMultiSelect\"\n [openOnClick]=\"openOnClick\"\n [contextMenuItems]=\"contextMenuItems\"\n [moDataList]=\"moDataList\"\n [groupby]=\"groupby\"\n [isHetro]=\"isHetro\"\n [isCheckList]=\"isCheckList\"\n [conditionalFormats]=\"conditionalFormats\"\n [showOkCancelButtons]=\"showOkCancelButtons\"\n (checkChange)=\"onCheckChange($event)\"\n (itemDrop)=\"onDrop($event)\"\n (itemDragMoved)=\"onDragMoved($event)\"\n (nodeUlvCommand)=\"onNodeUlvCommand($event)\"\n (nodeViewClick)=\"onNodeViewClick($event)\"\n (loadChildren)=\"onLoadChildren($event)\"\n (nodeSelect)=\"onNodeSelect($event)\"\n (rowCheck)=\"onRowCheck($event)\"\n (rowClick)=\"onRowClick($event)\"\n (allCheckbox)=\"onAllCheckbox($event)\"\n (expandClick)=\"onExpandClick($event)\"\n (editFormPanelCancel)=\"onEditFormPanelCancel($event)\"\n (editFormPanelSave)=\"onEditFormPanelSave($event)\"\n (createNew)=\"onCreateNew($event)\"\n >\n </bsu-ui-tree-view>\n <ng-template let-dialog let-dialogConfig=\"dialogConfig\" #moveDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 fd-title>{{ 'Move' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\n </fd-dialog-header>\n\n <fd-dialog-body>\n <div class=\"move-to\" (keydown.enter)=\"onConfirmDialog(dialogSelectedNode)\">\n <bsu-ui-tree-view\n [rtl]=\"rtl\"\n [root]=\"root\"\n [access]=\"access\"\n [navigationArrow]=\"navigationArrow\"\n [collapseIcon]=\"collapseIcon\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n [viewSettingsContentDensity]=\"viewSettingsContentDensity\"\n [enableNodeReordering]=\"enableNodeReordering\"\n [openOnClick]=\"openOnClick\"\n [selectedNode]=\"dialogSelectedNode\"\n [moDataList]=\"flatMoDataList\"\n [groupby]=\"groupby\"\n [isCheckList]=\"isCheckList\"\n [conditionalFormats]=\"conditionalFormats\"\n (loadChildren)=\"onLoadChildren($event)\"\n (nodeSelect)=\"onSelectNodeInMoveDialog($event)\"\n ></bsu-ui-tree-view>\n </div>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <ng-template fdkTemplate=\"footer\">\n <div fd-bar-right>\n <fd-button-bar\n fdType=\"emphasized\"\n [label]=\"'OK' | bbbTranslate\"\n (click)=\"onConfirmDialog(dialogSelectedNode)\"\n >\n </fd-button-bar>\n <fd-button-bar fd-initial-focus [label]=\"'Cancel' | bbbTranslate\" (click)=\"onDismissDialog()\">\n </fd-button-bar>\n </div>\n </ng-template>\n </fd-dialog-footer>\n </fd-dialog>\n </ng-template>\n</ng-template>\n", styles: [":host{width:100%;box-sizing:border-box;display:inline-block}\n"], dependencies: [{ kind: "directive", type: i1.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i2.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "component", type: i2.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabelledby", "id"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i4.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i4.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i4.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i4.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i4.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title", "ariaLabel"] }, { kind: "directive", type: i5.TemplateDirective, selector: "[fdkTemplate]", inputs: ["fdkTemplate"] }, { kind: "component", type: i6.TitleComponent, selector: "[fd-title], [fdTitle]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "component", type: i8.UlvToolbarComponent, selector: "bsu-ulv-toolbar", inputs: ["allowGridColumnSort", "useLayoutItemTextForControl", "enableSearch", "hideTitle", "title", "icon", "deviceName", "deviceSize", "access", "hideToolbar", "toolbarButtons", "contentDensity", "inlineEditMode", "allowInlineEdit", "gridSetting", "viewCollection", "reportView", "inDialog", "isMultiSelect", "hasSelected", "config", "hidden", "buttons", "moDataListCount"], outputs: ["search", "groupbyClick", "sortClick", "columnClick", "editModeClick", "viewClick", "createNewInlineMo"] }, { kind: "component", type: i9.UiTreeViewComponent, selector: "bsu-ui-tree-view", inputs: ["root", "selectedNode", "isHetro", "leafCursorPointer", "relationList", "showOkCancelButtons", "enableNodeReordering", "collapseIcon", "iconField", "colorField", "viewSettingsContentDensity"], outputs: ["checkChange", "nodeSelect", "createNew", "loadChildren", "nodeViewClick", "nodeUlvCommand", "itemDrop", "itemDragMoved"] }, { kind: "pipe", type: i1.AsyncPipe, name: "async" }, { kind: "pipe", type: i10.SeperatorFixPipe, name: "seperatorFix" }, { kind: "pipe", type: i10.ContextMenuPipe, name: "contextMenu" }, { kind: "pipe", type: i10.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
103
103
  }
104
104
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UiTreeComponent, decorators: [{
105
105
  type: Component,
@@ -7,8 +7,9 @@ import * as i2 from "barsa-novin-ray-core";
7
7
  import * as i3 from "@fundamental-ngx/core/button";
8
8
  import * as i4 from "@fundamental-ngx/core/icon";
9
9
  import * as i5 from "@fundamental-ngx/core/menu";
10
- import * as i6 from "@fundamental-ngx/core/split-button";
11
- import * as i7 from "@fundamental-ngx/core/toolbar";
10
+ import * as i6 from "@fundamental-ngx/core/title";
11
+ import * as i7 from "@fundamental-ngx/core/split-button";
12
+ import * as i8 from "@fundamental-ngx/core/toolbar";
12
13
  export class UlvToolbarComponent extends BaseComponent {
13
14
  constructor(el) {
14
15
  super();
@@ -60,11 +61,11 @@ export class UlvToolbarComponent extends BaseComponent {
60
61
  }
61
62
  }
62
63
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UlvToolbarComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
63
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", type: UlvToolbarComponent, selector: "bsu-ulv-toolbar", inputs: { allowGridColumnSort: "allowGridColumnSort", useLayoutItemTextForControl: "useLayoutItemTextForControl", enableSearch: "enableSearch", hideTitle: "hideTitle", title: "title", 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", 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: ToolbarComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (!useLayoutItemTextForControl && !hideToolbar) {\n<fd-toolbar\n #toolbar\n [shouldOverflow]=\"deviceSize === 's'\"\n [ngClass]=\"deviceSize\"\n [hasTitle]=\"!hideTitle\"\n [forceOverflow]=\"true\"\n [title]=\"!hideTitle && deviceSize !== 's' ? (title | bbbTranslate) : ''\"\n>\n @if (deviceSize !== 's') {\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\n } @if (!hideToolbar) { @for (btn of toolbarButtons; track _trackBy(i, btn); let i = $index) { @if (btn !== '-' &&\n btn.Command && !btn.Command.CustomUi && !btn.menu) {\n <button\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"btn.itemId === 'Edit' ? 'always' : btn.Command?.IsBuiltin ? 'low' : 'high'\"\n [ulvCommandHandler]=\"btn\"\n [disable]=\"inlineEditMode && btn.itemId === 'New'\"\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\n [glyph]=\"deviceSize === 's' ? null : btn.Command.JsonExtraProp?.Icon\"\n [title]=\"(btn.Command?.IsBuiltin ? btn.text : '') | bbbTranslate\"\n (click)=\"inlineEditMode && btn.itemId === 'New' && createNewInlineMo.emit()\"\n bodyClick\n >\n @if (!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon) {\n <img width=\"16\" [src]=\"btn.icon\" />\n } @if (!btn.hideText || deviceSize === 's') {\n <span>{{ btn.text | bbbTranslate }}</span>\n }\n </button>\n } @if ((btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile') {\n <fd-toolbar-separator fd-toolbar-item></fd-toolbar-separator>\n } @if (btn.menu) {\n <button\n fd-button\n fd-toolbar-item\n [fdMenu]=\"true\"\n [fdType]=\"btn.Command?.IsBuiltin ? 'standard' : 'transparent'\"\n [label]=\"btn.text | bbbTranslate\"\n [ariaLabel]=\"btn.text | bbbTranslate\"\n [fdMenuTrigger]=\"menu\"\n bodyClick\n >\n <fd-menu #menu>\n @for (btnCommand of btn.menu.items; track btnCommand) {\n <li fd-menu-item [ulvCommandHandler]=\"btnCommand\" (click)=\"menu.close()\">\n <div fd-menu-interactive>\n <span fd-menu-title>{{ btnCommand.text | bbbTranslate }}</span>\n </div>\n </li>\n }\n </fd-menu>\n </button>\n } @if (btn !== '-' && btn.Command && btn.Command.CustomUi) {\n <bnrc-dynamic-form-toolbaritem\n fd-toolbar-item\n [ulvCommandHandler]=\"btn\"\n [component]=\"btn.Command?.CustomUi\"\n [context]=\"btn\"\n [isEnable]=\"btn.Command?._isEnable\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n bodyClick\n ></bnrc-dynamic-form-toolbaritem>\n } }\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\n @if (allowInlineEdit && access?.Edit) {\n <button\n fd-button\n fd-toolbar-item\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\n [glyph]=\"'edit'\"\n [label]=\"deviceSize === 's' ? ('Inline Edit In List' | bbbTranslate) : ''\"\n (click)=\"onEditMode()\"\n [attr.fdOverflowPriority]=\"'always'\"\n [title]=\"'Inline Edit In List' | bbbTranslate\"\n bodyClick\n ></button>\n } @if (gridSetting && gridSetting.Hidden !== true && allowGridColumnSort) { @if (deviceSize === 's') {\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onGroupbySettings()\"\n [label]=\"'Groups' | bbbTranslate\"\n bodyClick\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onSortSettings()\"\n [label]=\"'Sort' | bbbTranslate\"\n bodyClick\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onColumnSettings()\"\n [label]=\"'Columns' | bbbTranslate\"\n bodyClick\n ></button>\n } @if (deviceSize !== 's') {\n <button\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"'never'\"\n [fdMenu]=\"true\"\n fdType=\"transparent\"\n glyph=\"action-settings\"\n [title]=\"'Settings' | bbbTranslate\"\n [fdMenuTrigger]=\"tableMenuSettings\"\n bodyClick\n ></button>\n }\n <fd-menu #tableMenuSettings>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onColumnSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"action-settings\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Columns' | bbbTranslate }}\n </span>\n </div>\n </li>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onSortSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"sort\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Sort' | bbbTranslate }}\n </span>\n </div>\n </li>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onGroupbySettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"group-2\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Groups' | bbbTranslate }}\n </span>\n </div>\n </li>\n </fd-menu>\n } @if (viewCollection && viewCollection.length > 1) {\n <fd-split-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"deviceSize === 's' ? 'always' : 'low'\"\n [fdType]=\"'transparent'\"\n [mainAction]=\"{\n keepMainAction: true,\n mainActionTitle: splitBtnTitle\n }\"\n >\n <fd-menu>\n @for (viewObject of viewCollection; track viewObject) {\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\" bodyClick>\n <span fd-menu-title>\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\n </span>\n </div>\n </li>\n }\n </fd-menu>\n </fd-split-button>\n }\n <ng-template #splitBtnTitle>\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\n </ng-template>\n <ng-template #splitBtnSettings>\n <fd-icon [glyph]=\"'action-settings'\"></fd-icon>\n </ng-template>\n }\n</fd-toolbar>\n}\n", styles: [":host{display:block;width:100%;position:relative}: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.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[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.SplitButtonComponent, selector: "fd-split-button", inputs: ["glyph", "glyphFont", "disabled", "fdType", "expandButtonTitle", "selected", "fixedWidth", "mainAction", "arialLabel"], outputs: ["primaryButtonClicked"] }, { kind: "component", type: i7.ToolbarComponent, selector: "fd-toolbar", inputs: ["titleId", "class", "shouldOverflow", "fdType", "title", "active", "clearBorder", "forceOverflow", "tabindex", "ariaLabel", "ariaLabelledBy"] }, { kind: "directive", type: i7.ToolbarItemDirective, selector: "[fd-toolbar-item], [fdOverflowGroup], [fdOverflowPriority]", inputs: ["fdOverflowPriority", "fdOverflowGroup"] }, { kind: "directive", type: i7.ToolbarSpacerDirective, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "component", type: i7.ToolbarSeparatorComponent, selector: "fd-toolbar-separator" }, { kind: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
64
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "17.3.5", 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", 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: ToolbarComponent, descendants: true }], usesInheritance: true, usesOnChanges: true, ngImport: i0, template: "@if (!useLayoutItemTextForControl && !hideToolbar) {\n<fd-toolbar\n #toolbar\n [shouldOverflow]=\"deviceSize === 's'\"\n [ngClass]=\"deviceSize\"\n [hasTitle]=\"!hideTitle\"\n [forceOverflow]=\"true\"\n>\n @if(!hideTitle && deviceSize !== 's' ? (title | bbbTranslate) : ''){ @if(icon){\n <fd-icon [glyph]=\"icon\"></fd-icon>\n }\n <h4 fd-title>{{ title | bbbTranslate }}</h4>\n } @if (deviceSize !== 's') {\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\n } @if (!hideToolbar) { @for (btn of toolbarButtons; track _trackBy(i, btn); let i = $index) { @if (btn !== '-' &&\n btn.Command && !btn.Command.CustomUi && !btn.menu) {\n <button\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"btn.itemId === 'Edit' ? 'always' : btn.Command?.IsBuiltin ? 'low' : 'high'\"\n [ulvCommandHandler]=\"btn\"\n [disable]=\"inlineEditMode && btn.itemId === 'New'\"\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\n [glyph]=\"deviceSize === 's' ? null : btn.Command.JsonExtraProp?.Icon\"\n [title]=\"(btn.Command?.IsBuiltin ? btn.text : '') | bbbTranslate\"\n (click)=\"inlineEditMode && btn.itemId === 'New' && createNewInlineMo.emit()\"\n bodyClick\n >\n @if (!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon) {\n <img width=\"16\" [src]=\"btn.icon\" />\n } @if (!btn.hideText || deviceSize === 's') {\n <span>{{ btn.text | bbbTranslate }}</span>\n }\n </button>\n } @if ((btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile') {\n <fd-toolbar-separator fd-toolbar-item></fd-toolbar-separator>\n } @if (btn.menu) {\n <button\n fd-button\n fd-toolbar-item\n [fdMenu]=\"true\"\n [fdType]=\"btn.Command?.IsBuiltin ? 'standard' : 'transparent'\"\n [label]=\"btn.text | bbbTranslate\"\n [ariaLabel]=\"btn.text | bbbTranslate\"\n [fdMenuTrigger]=\"menu\"\n bodyClick\n >\n <fd-menu #menu>\n @for (btnCommand of btn.menu.items; track btnCommand) {\n <li fd-menu-item [ulvCommandHandler]=\"btnCommand\" (click)=\"menu.close()\">\n <div fd-menu-interactive>\n <span fd-menu-title>{{ btnCommand.text | bbbTranslate }}</span>\n </div>\n </li>\n }\n </fd-menu>\n </button>\n } @if (btn !== '-' && btn.Command && btn.Command.CustomUi) {\n <bnrc-dynamic-form-toolbaritem\n fd-toolbar-item\n [ulvCommandHandler]=\"btn\"\n [component]=\"btn.Command?.CustomUi\"\n [context]=\"btn\"\n [isEnable]=\"btn.Command?._isEnable\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n bodyClick\n ></bnrc-dynamic-form-toolbaritem>\n } }\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\n @if (allowInlineEdit && access?.Edit) {\n <button\n fd-button\n fd-toolbar-item\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\n [glyph]=\"'edit'\"\n [label]=\"deviceSize === 's' ? ('Inline Edit In List' | bbbTranslate) : ''\"\n (click)=\"onEditMode()\"\n [attr.fdOverflowPriority]=\"'always'\"\n [title]=\"'Inline Edit In List' | bbbTranslate\"\n bodyClick\n ></button>\n } @if (gridSetting && gridSetting.Hidden !== true && allowGridColumnSort) { @if (deviceSize === 's') {\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onGroupbySettings()\"\n [label]=\"'Groups' | bbbTranslate\"\n bodyClick\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onSortSettings()\"\n [label]=\"'Sort' | bbbTranslate\"\n bodyClick\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onColumnSettings()\"\n [label]=\"'Columns' | bbbTranslate\"\n bodyClick\n ></button>\n } @if (deviceSize !== 's') {\n <button\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"'never'\"\n [fdMenu]=\"true\"\n fdType=\"transparent\"\n glyph=\"action-settings\"\n [title]=\"'Settings' | bbbTranslate\"\n [fdMenuTrigger]=\"tableMenuSettings\"\n bodyClick\n ></button>\n }\n <fd-menu #tableMenuSettings>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onColumnSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"action-settings\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Columns' | bbbTranslate }}\n </span>\n </div>\n </li>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onSortSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"sort\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Sort' | bbbTranslate }}\n </span>\n </div>\n </li>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onGroupbySettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"group-2\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Groups' | bbbTranslate }}\n </span>\n </div>\n </li>\n </fd-menu>\n } @if (viewCollection && viewCollection.length > 1) {\n <fd-split-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"deviceSize === 's' ? 'always' : 'low'\"\n [fdType]=\"'transparent'\"\n [mainAction]=\"{\n keepMainAction: true,\n mainActionTitle: splitBtnTitle\n }\"\n >\n <fd-menu>\n @for (viewObject of viewCollection; track viewObject) {\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\" bodyClick>\n <span fd-menu-title>\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\n </span>\n </div>\n </li>\n }\n </fd-menu>\n </fd-split-button>\n }\n <ng-template #splitBtnTitle>\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\n </ng-template>\n <ng-template #splitBtnSettings>\n <fd-icon [glyph]=\"'action-settings'\"></fd-icon>\n </ng-template>\n }\n</fd-toolbar>\n}\n", styles: [":host{display:block;width:100%;position:relative}: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.BodyClickDirective, selector: "[bodyClick]", inputs: ["disableBodyClick"] }, { kind: "component", type: i3.ButtonComponent, selector: "button[fd-button], a[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", "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: "pipe", type: i2.BbbTranslatePipe, name: "bbbTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
64
65
  }
65
66
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: UlvToolbarComponent, decorators: [{
66
67
  type: Component,
67
- args: [{ selector: 'bsu-ulv-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!useLayoutItemTextForControl && !hideToolbar) {\n<fd-toolbar\n #toolbar\n [shouldOverflow]=\"deviceSize === 's'\"\n [ngClass]=\"deviceSize\"\n [hasTitle]=\"!hideTitle\"\n [forceOverflow]=\"true\"\n [title]=\"!hideTitle && deviceSize !== 's' ? (title | bbbTranslate) : ''\"\n>\n @if (deviceSize !== 's') {\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\n } @if (!hideToolbar) { @for (btn of toolbarButtons; track _trackBy(i, btn); let i = $index) { @if (btn !== '-' &&\n btn.Command && !btn.Command.CustomUi && !btn.menu) {\n <button\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"btn.itemId === 'Edit' ? 'always' : btn.Command?.IsBuiltin ? 'low' : 'high'\"\n [ulvCommandHandler]=\"btn\"\n [disable]=\"inlineEditMode && btn.itemId === 'New'\"\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\n [glyph]=\"deviceSize === 's' ? null : btn.Command.JsonExtraProp?.Icon\"\n [title]=\"(btn.Command?.IsBuiltin ? btn.text : '') | bbbTranslate\"\n (click)=\"inlineEditMode && btn.itemId === 'New' && createNewInlineMo.emit()\"\n bodyClick\n >\n @if (!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon) {\n <img width=\"16\" [src]=\"btn.icon\" />\n } @if (!btn.hideText || deviceSize === 's') {\n <span>{{ btn.text | bbbTranslate }}</span>\n }\n </button>\n } @if ((btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile') {\n <fd-toolbar-separator fd-toolbar-item></fd-toolbar-separator>\n } @if (btn.menu) {\n <button\n fd-button\n fd-toolbar-item\n [fdMenu]=\"true\"\n [fdType]=\"btn.Command?.IsBuiltin ? 'standard' : 'transparent'\"\n [label]=\"btn.text | bbbTranslate\"\n [ariaLabel]=\"btn.text | bbbTranslate\"\n [fdMenuTrigger]=\"menu\"\n bodyClick\n >\n <fd-menu #menu>\n @for (btnCommand of btn.menu.items; track btnCommand) {\n <li fd-menu-item [ulvCommandHandler]=\"btnCommand\" (click)=\"menu.close()\">\n <div fd-menu-interactive>\n <span fd-menu-title>{{ btnCommand.text | bbbTranslate }}</span>\n </div>\n </li>\n }\n </fd-menu>\n </button>\n } @if (btn !== '-' && btn.Command && btn.Command.CustomUi) {\n <bnrc-dynamic-form-toolbaritem\n fd-toolbar-item\n [ulvCommandHandler]=\"btn\"\n [component]=\"btn.Command?.CustomUi\"\n [context]=\"btn\"\n [isEnable]=\"btn.Command?._isEnable\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n bodyClick\n ></bnrc-dynamic-form-toolbaritem>\n } }\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\n @if (allowInlineEdit && access?.Edit) {\n <button\n fd-button\n fd-toolbar-item\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\n [glyph]=\"'edit'\"\n [label]=\"deviceSize === 's' ? ('Inline Edit In List' | bbbTranslate) : ''\"\n (click)=\"onEditMode()\"\n [attr.fdOverflowPriority]=\"'always'\"\n [title]=\"'Inline Edit In List' | bbbTranslate\"\n bodyClick\n ></button>\n } @if (gridSetting && gridSetting.Hidden !== true && allowGridColumnSort) { @if (deviceSize === 's') {\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onGroupbySettings()\"\n [label]=\"'Groups' | bbbTranslate\"\n bodyClick\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onSortSettings()\"\n [label]=\"'Sort' | bbbTranslate\"\n bodyClick\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onColumnSettings()\"\n [label]=\"'Columns' | bbbTranslate\"\n bodyClick\n ></button>\n } @if (deviceSize !== 's') {\n <button\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"'never'\"\n [fdMenu]=\"true\"\n fdType=\"transparent\"\n glyph=\"action-settings\"\n [title]=\"'Settings' | bbbTranslate\"\n [fdMenuTrigger]=\"tableMenuSettings\"\n bodyClick\n ></button>\n }\n <fd-menu #tableMenuSettings>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onColumnSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"action-settings\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Columns' | bbbTranslate }}\n </span>\n </div>\n </li>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onSortSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"sort\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Sort' | bbbTranslate }}\n </span>\n </div>\n </li>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onGroupbySettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"group-2\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Groups' | bbbTranslate }}\n </span>\n </div>\n </li>\n </fd-menu>\n } @if (viewCollection && viewCollection.length > 1) {\n <fd-split-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"deviceSize === 's' ? 'always' : 'low'\"\n [fdType]=\"'transparent'\"\n [mainAction]=\"{\n keepMainAction: true,\n mainActionTitle: splitBtnTitle\n }\"\n >\n <fd-menu>\n @for (viewObject of viewCollection; track viewObject) {\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\" bodyClick>\n <span fd-menu-title>\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\n </span>\n </div>\n </li>\n }\n </fd-menu>\n </fd-split-button>\n }\n <ng-template #splitBtnTitle>\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\n </ng-template>\n <ng-template #splitBtnSettings>\n <fd-icon [glyph]=\"'action-settings'\"></fd-icon>\n </ng-template>\n }\n</fd-toolbar>\n}\n", styles: [":host{display:block;width:100%;position:relative}: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"] }]
68
+ args: [{ selector: 'bsu-ulv-toolbar', changeDetection: ChangeDetectionStrategy.OnPush, template: "@if (!useLayoutItemTextForControl && !hideToolbar) {\n<fd-toolbar\n #toolbar\n [shouldOverflow]=\"deviceSize === 's'\"\n [ngClass]=\"deviceSize\"\n [hasTitle]=\"!hideTitle\"\n [forceOverflow]=\"true\"\n>\n @if(!hideTitle && deviceSize !== 's' ? (title | bbbTranslate) : ''){ @if(icon){\n <fd-icon [glyph]=\"icon\"></fd-icon>\n }\n <h4 fd-title>{{ title | bbbTranslate }}</h4>\n } @if (deviceSize !== 's') {\n <fd-toolbar-spacer fd-toolbar-item></fd-toolbar-spacer>\n } @if (!hideToolbar) { @for (btn of toolbarButtons; track _trackBy(i, btn); let i = $index) { @if (btn !== '-' &&\n btn.Command && !btn.Command.CustomUi && !btn.menu) {\n <button\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"btn.itemId === 'Edit' ? 'always' : btn.Command?.IsBuiltin ? 'low' : 'high'\"\n [ulvCommandHandler]=\"btn\"\n [disable]=\"inlineEditMode && btn.itemId === 'New'\"\n [disabled]=\"btn.Command._isEnable === false ? true : false\"\n [fdType]=\"!btn.Command._isEnable ? 'transparent' : btn.Command.JsonExtraProp?.Design || 'transparent'\"\n [glyph]=\"deviceSize === 's' ? null : btn.Command.JsonExtraProp?.Icon\"\n [title]=\"(btn.Command?.IsBuiltin ? btn.text : '') | bbbTranslate\"\n (click)=\"inlineEditMode && btn.itemId === 'New' && createNewInlineMo.emit()\"\n bodyClick\n >\n @if (!btn.Command.JsonExtraProp?.Icon && !btn.Command?.IsBuiltin && btn.icon) {\n <img width=\"16\" [src]=\"btn.icon\" />\n } @if (!btn.hideText || deviceSize === 's') {\n <span>{{ btn.text | bbbTranslate }}</span>\n }\n </button>\n } @if ((btn === '-' || btn.type === 'seperator') && deviceName !== 'mobile') {\n <fd-toolbar-separator fd-toolbar-item></fd-toolbar-separator>\n } @if (btn.menu) {\n <button\n fd-button\n fd-toolbar-item\n [fdMenu]=\"true\"\n [fdType]=\"btn.Command?.IsBuiltin ? 'standard' : 'transparent'\"\n [label]=\"btn.text | bbbTranslate\"\n [ariaLabel]=\"btn.text | bbbTranslate\"\n [fdMenuTrigger]=\"menu\"\n bodyClick\n >\n <fd-menu #menu>\n @for (btnCommand of btn.menu.items; track btnCommand) {\n <li fd-menu-item [ulvCommandHandler]=\"btnCommand\" (click)=\"menu.close()\">\n <div fd-menu-interactive>\n <span fd-menu-title>{{ btnCommand.text | bbbTranslate }}</span>\n </div>\n </li>\n }\n </fd-menu>\n </button>\n } @if (btn !== '-' && btn.Command && btn.Command.CustomUi) {\n <bnrc-dynamic-form-toolbaritem\n fd-toolbar-item\n [ulvCommandHandler]=\"btn\"\n [component]=\"btn.Command?.CustomUi\"\n [context]=\"btn\"\n [isEnable]=\"btn.Command?._isEnable\"\n [deviceName]=\"deviceName\"\n [deviceSize]=\"deviceSize\"\n bodyClick\n ></bnrc-dynamic-form-toolbaritem>\n } }\n <ng-content select=\"[fd-toolbar-item]\"></ng-content>\n @if (allowInlineEdit && access?.Edit) {\n <button\n fd-button\n fd-toolbar-item\n [fdType]=\"inlineEditMode ? 'emphasized' : 'transparent'\"\n [glyph]=\"'edit'\"\n [label]=\"deviceSize === 's' ? ('Inline Edit In List' | bbbTranslate) : ''\"\n (click)=\"onEditMode()\"\n [attr.fdOverflowPriority]=\"'always'\"\n [title]=\"'Inline Edit In List' | bbbTranslate\"\n bodyClick\n ></button>\n } @if (gridSetting && gridSetting.Hidden !== true && allowGridColumnSort) { @if (deviceSize === 's') {\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onGroupbySettings()\"\n [label]=\"'Groups' | bbbTranslate\"\n bodyClick\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onSortSettings()\"\n [label]=\"'Sort' | bbbTranslate\"\n bodyClick\n ></button>\n <button\n fd-toolbar-item\n fd-button\n [contentDensity]=\"contentDensity\"\n fdType=\"transparent\"\n [attr.fdOverflowPriority]=\"'always'\"\n (click)=\"onColumnSettings()\"\n [label]=\"'Columns' | bbbTranslate\"\n bodyClick\n ></button>\n } @if (deviceSize !== 's') {\n <button\n fd-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"'never'\"\n [fdMenu]=\"true\"\n fdType=\"transparent\"\n glyph=\"action-settings\"\n [title]=\"'Settings' | bbbTranslate\"\n [fdMenuTrigger]=\"tableMenuSettings\"\n bodyClick\n ></button>\n }\n <fd-menu #tableMenuSettings>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onColumnSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"action-settings\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Columns' | bbbTranslate }}\n </span>\n </div>\n </li>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onSortSettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"sort\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Sort' | bbbTranslate }}\n </span>\n </div>\n </li>\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"tableMenuSettings.close(); onGroupbySettings()\" bodyClick>\n <fd-menu-addon position=\"before\" glyph=\"group-2\"></fd-menu-addon>\n <span fd-menu-title>\n {{ 'Groups' | bbbTranslate }}\n </span>\n </div>\n </li>\n </fd-menu>\n } @if (viewCollection && viewCollection.length > 1) {\n <fd-split-button\n fd-toolbar-item\n [attr.fdOverflowPriority]=\"deviceSize === 's' ? 'always' : 'low'\"\n [fdType]=\"'transparent'\"\n [mainAction]=\"{\n keepMainAction: true,\n mainActionTitle: splitBtnTitle\n }\"\n >\n <fd-menu>\n @for (viewObject of viewCollection; track viewObject) {\n <li fd-menu-item>\n <div fd-menu-interactive (click)=\"onChangeView(viewObject)\" bodyClick>\n <span fd-menu-title>\n <fd-icon [glyph]=\"viewObject.UiComponent.Settings?.Icon\"> </fd-icon>\n </span>\n </div>\n </li>\n }\n </fd-menu>\n </fd-split-button>\n }\n <ng-template #splitBtnTitle>\n <fd-icon [glyph]=\"reportView.UiComponent.Settings?.Icon\"></fd-icon>\n </ng-template>\n <ng-template #splitBtnSettings>\n <fd-icon [glyph]=\"'action-settings'\"></fd-icon>\n </ng-template>\n }\n</fd-toolbar>\n}\n", styles: [":host{display:block;width:100%;position:relative}: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"] }]
68
69
  }], ctorParameters: () => [{ type: i0.ElementRef }], propDecorators: { _tlbCmp: [{
69
70
  type: ViewChild,
70
71
  args: [ToolbarComponent]
@@ -78,6 +79,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
78
79
  type: Input
79
80
  }], title: [{
80
81
  type: Input
82
+ }], icon: [{
83
+ type: Input
81
84
  }], deviceName: [{
82
85
  type: Input
83
86
  }], deviceSize: [{
@@ -129,4 +132,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
129
132
  }], createNewInlineMo: [{
130
133
  type: Output
131
134
  }] } });
132
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWx2LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RSxPQUFPLEVBQ0gsYUFBYSxFQUtoQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7QUFROUIsTUFBTSxPQUFPLG1CQUFvQixTQUFRLGFBQWE7SUFrQ2xELFlBQW1CLEVBQWM7UUFDN0IsS0FBSyxFQUFFLENBQUM7UUFETyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBN0J4QixjQUFTLEdBQUcsS0FBSyxDQUFDO1FBcUJqQixXQUFNLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUNwQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDMUMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDdkMsZ0JBQVcsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3pDLGtCQUFhLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuQyxjQUFTLEdBQUcsSUFBSSxZQUFZLEVBQW9CLENBQUM7UUFDakQsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUl2RCxDQUFDO0lBQ0QsZUFBZTtRQUNYLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztJQUM1QixD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dHJhdGVneSxcbiAgICBDb21wb25lbnQsXG4gICAgRWxlbWVudFJlZixcbiAgICBFdmVudEVtaXR0ZXIsXG4gICAgSW5wdXQsXG4gICAgT25DaGFuZ2VzLFxuICAgIE91dHB1dCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFZpZXdDaGlsZFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbnRlbnREZW5zaXR5LCBUb29sYmFyQ29tcG9uZW50IH0gZnJvbSAnQGZ1bmRhbWVudGFsLW5neC9jb3JlJztcblxuaW1wb3J0IHtcbiAgICBCYXNlQ29tcG9uZW50LFxuICAgIERlZmF1bHRDb21tYW5kc0FjY2VzcyxcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXG4gICAgRGV2aWNlU2l6ZSxcbiAgICBVaVJlcG9ydFZpZXdCYXNlXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtdWx2LXRvb2xiYXInLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91bHYtdG9vbGJhci5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vdWx2LXRvb2xiYXIuY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBVbHZUb29sYmFyQ29tcG9uZW50IGV4dGVuZHMgQmFzZUNvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcyB7XG4gICAgQFZpZXdDaGlsZChUb29sYmFyQ29tcG9uZW50KSBfdGxiQ21wOiBUb29sYmFyQ29tcG9uZW50O1xuICAgIEBJbnB1dCgpIGFsbG93R3JpZENvbHVtblNvcnQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgdXNlTGF5b3V0SXRlbVRleHRGb3JDb250cm9sOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGVuYWJsZVNlYXJjaDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBoaWRlVGl0bGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKSB0aXRsZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRldmljZU5hbWU6IERldmljZVNpemU7XG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIGFjY2VzczogRGVmYXVsdENvbW1hbmRzQWNjZXNzO1xuICAgIEBJbnB1dCgpIGhpZGVUb29sYmFyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJCdXR0b25zOiBhbnlbXTtcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XG4gICAgQElucHV0KCkgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYWxsb3dJbmxpbmVFZGl0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGdyaWRTZXR0aW5nOiBhbnk7XG4gICAgQElucHV0KCkgdmlld0NvbGxlY3Rpb246IGFueVtdO1xuICAgIEBJbnB1dCgpIHJlcG9ydFZpZXc6IFVpUmVwb3J0Vmlld0Jhc2U7XG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGhhc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICAgIEBJbnB1dCgpIGhpZGRlbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBidXR0b25zOiBhbnlbXTtcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0Q291bnQ6IG51bWJlcjtcbiAgICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGdyb3VwYnlDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBzb3J0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgY29sdW1uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgZWRpdE1vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgdmlld0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxVaVJlcG9ydFZpZXdCYXNlPigpO1xuICAgIEBPdXRwdXQoKSBjcmVhdGVOZXdJbmxpbmVNbyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIGNvbnN0IHsgdG9vbGJhckJ1dHRvbnMgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmICh0b29sYmFyQnV0dG9ucyAmJiAhdG9vbGJhckJ1dHRvbnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUb29sYmFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkdyb3VwYnlTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ncm91cGJ5Q2xpY2suZW1pdCh0aGlzLmRldmljZU5hbWUpO1xuICAgIH1cbiAgICBvblNvcnRTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zb3J0Q2xpY2suZW1pdCh0aGlzLmRldmljZU5hbWUpO1xuICAgIH1cbiAgICBvbkNvbHVtblNldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHVtbkNsaWNrLmVtaXQodGhpcy5kZXZpY2VOYW1lKTtcbiAgICB9XG4gICAgb25FZGl0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0TW9kZUNsaWNrLmVtaXQoKTtcbiAgICB9XG4gICAgb25DaGFuZ2VWaWV3KHZpZXc6IFVpUmVwb3J0Vmlld0Jhc2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3Q2xpY2suZW1pdCh2aWV3KTtcbiAgICB9XG4gICAgX3RyYWNrQnkoaW5kZXgsIGl0ZW0pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbT8uaXRlbUlkO1xuICAgIH1cbiAgICBwdWJsaWMgaWRlbnRpZnkoaW5kZXgsIGl0ZW0pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS50ZXh0O1xuICAgIH1cbiAgICBwcml2YXRlIF9yZWZyZXNoVG9vbGJhcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3RsYkNtcCkge1xuICAgICAgICAgICAgdGhpcy5fdGxiQ21wLmZvcmNlT3ZlcmZsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX3RsYkNtcC51cGRhdGVDb2xsYXBzaWJsZUl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKCF1c2VMYXlvdXRJdGVtVGV4dEZvckNvbnRyb2wgJiYgIWhpZGVUb29sYmFyKSB7XG48ZmQtdG9vbGJhclxuICAgICN0b29sYmFyXG4gICAgW3Nob3VsZE92ZXJmbG93XT1cImRldmljZVNpemUgPT09ICdzJ1wiXG4gICAgW25nQ2xhc3NdPVwiZGV2aWNlU2l6ZVwiXG4gICAgW2hhc1RpdGxlXT1cIiFoaWRlVGl0bGVcIlxuICAgIFtmb3JjZU92ZXJmbG93XT1cInRydWVcIlxuICAgIFt0aXRsZV09XCIhaGlkZVRpdGxlICYmIGRldmljZVNpemUgIT09ICdzJyA/ICh0aXRsZSB8IGJiYlRyYW5zbGF0ZSkgOiAnJ1wiXG4+XG4gICAgQGlmIChkZXZpY2VTaXplICE9PSAncycpIHtcbiAgICA8ZmQtdG9vbGJhci1zcGFjZXIgZmQtdG9vbGJhci1pdGVtPjwvZmQtdG9vbGJhci1zcGFjZXI+XG4gICAgfSBAaWYgKCFoaWRlVG9vbGJhcikgeyBAZm9yIChidG4gb2YgdG9vbGJhckJ1dHRvbnM7IHRyYWNrIF90cmFja0J5KGksIGJ0bik7IGxldCBpID0gJGluZGV4KSB7IEBpZiAoYnRuICE9PSAnLScgJiZcbiAgICBidG4uQ29tbWFuZCAmJiAhYnRuLkNvbW1hbmQuQ3VzdG9tVWkgJiYgIWJ0bi5tZW51KSB7XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCJidG4uaXRlbUlkID09PSAnRWRpdCcgPyAnYWx3YXlzJyA6IGJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gPyAnbG93JyA6ICdoaWdoJ1wiXG4gICAgICAgIFt1bHZDb21tYW5kSGFuZGxlcl09XCJidG5cIlxuICAgICAgICBbZGlzYWJsZV09XCJpbmxpbmVFZGl0TW9kZSAmJiBidG4uaXRlbUlkID09PSAnTmV3J1wiXG4gICAgICAgIFtkaXNhYmxlZF09XCJidG4uQ29tbWFuZC5faXNFbmFibGUgPT09IGZhbHNlID8gdHJ1ZSA6IGZhbHNlXCJcbiAgICAgICAgW2ZkVHlwZV09XCIhYnRuLkNvbW1hbmQuX2lzRW5hYmxlID8gJ3RyYW5zcGFyZW50JyA6IGJ0bi5Db21tYW5kLkpzb25FeHRyYVByb3A/LkRlc2lnbiB8fCAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgW2dseXBoXT1cImRldmljZVNpemUgPT09ICdzJyA/IG51bGwgOiBidG4uQ29tbWFuZC5Kc29uRXh0cmFQcm9wPy5JY29uXCJcbiAgICAgICAgW3RpdGxlXT1cIihidG4uQ29tbWFuZD8uSXNCdWlsdGluID8gYnRuLnRleHQgOiAnJykgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAoY2xpY2spPVwiaW5saW5lRWRpdE1vZGUgJiYgYnRuLml0ZW1JZCA9PT0gJ05ldycgJiYgY3JlYXRlTmV3SW5saW5lTW8uZW1pdCgpXCJcbiAgICAgICAgYm9keUNsaWNrXG4gICAgPlxuICAgICAgICBAaWYgKCFidG4uQ29tbWFuZC5Kc29uRXh0cmFQcm9wPy5JY29uICYmICFidG4uQ29tbWFuZD8uSXNCdWlsdGluICYmIGJ0bi5pY29uKSB7XG4gICAgICAgIDxpbWcgd2lkdGg9XCIxNlwiIFtzcmNdPVwiYnRuLmljb25cIiAvPlxuICAgICAgICB9IEBpZiAoIWJ0bi5oaWRlVGV4dCB8fCBkZXZpY2VTaXplID09PSAncycpIHtcbiAgICAgICAgPHNwYW4+e3sgYnRuLnRleHQgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgIH1cbiAgICA8L2J1dHRvbj5cbiAgICB9IEBpZiAoKGJ0biA9PT0gJy0nIHx8IGJ0bi50eXBlID09PSAnc2VwZXJhdG9yJykgJiYgZGV2aWNlTmFtZSAhPT0gJ21vYmlsZScpIHtcbiAgICA8ZmQtdG9vbGJhci1zZXBhcmF0b3IgZmQtdG9vbGJhci1pdGVtPjwvZmQtdG9vbGJhci1zZXBhcmF0b3I+XG4gICAgfSBAaWYgKGJ0bi5tZW51KSB7XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgIFtmZE1lbnVdPVwidHJ1ZVwiXG4gICAgICAgIFtmZFR5cGVdPVwiYnRuLkNvbW1hbmQ/LklzQnVpbHRpbiA/ICdzdGFuZGFyZCcgOiAndHJhbnNwYXJlbnQnXCJcbiAgICAgICAgW2xhYmVsXT1cImJ0bi50ZXh0IHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgW2FyaWFMYWJlbF09XCJidG4udGV4dCB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIFtmZE1lbnVUcmlnZ2VyXT1cIm1lbnVcIlxuICAgICAgICBib2R5Q2xpY2tcbiAgICA+XG4gICAgICAgIDxmZC1tZW51ICNtZW51PlxuICAgICAgICAgICAgQGZvciAoYnRuQ29tbWFuZCBvZiBidG4ubWVudS5pdGVtczsgdHJhY2sgYnRuQ29tbWFuZCkge1xuICAgICAgICAgICAgPGxpIGZkLW1lbnUtaXRlbSBbdWx2Q29tbWFuZEhhbmRsZXJdPVwiYnRuQ29tbWFuZFwiIChjbGljayk9XCJtZW51LmNsb3NlKClcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmU+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+e3sgYnRuQ29tbWFuZC50ZXh0IHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9mZC1tZW51PlxuICAgIDwvYnV0dG9uPlxuICAgIH0gQGlmIChidG4gIT09ICctJyAmJiBidG4uQ29tbWFuZCAmJiBidG4uQ29tbWFuZC5DdXN0b21VaSkge1xuICAgIDxibnJjLWR5bmFtaWMtZm9ybS10b29sYmFyaXRlbVxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgW3VsdkNvbW1hbmRIYW5kbGVyXT1cImJ0blwiXG4gICAgICAgIFtjb21wb25lbnRdPVwiYnRuLkNvbW1hbmQ/LkN1c3RvbVVpXCJcbiAgICAgICAgW2NvbnRleHRdPVwiYnRuXCJcbiAgICAgICAgW2lzRW5hYmxlXT1cImJ0bi5Db21tYW5kPy5faXNFbmFibGVcIlxuICAgICAgICBbZGV2aWNlTmFtZV09XCJkZXZpY2VOYW1lXCJcbiAgICAgICAgW2RldmljZVNpemVdPVwiZGV2aWNlU2l6ZVwiXG4gICAgICAgIGJvZHlDbGlja1xuICAgID48L2JucmMtZHluYW1pYy1mb3JtLXRvb2xiYXJpdGVtPlxuICAgIH0gfVxuICAgIDxuZy1jb250ZW50IHNlbGVjdD1cIltmZC10b29sYmFyLWl0ZW1dXCI+PC9uZy1jb250ZW50PlxuICAgIEBpZiAoYWxsb3dJbmxpbmVFZGl0ICYmIGFjY2Vzcz8uRWRpdCkge1xuICAgIDxidXR0b25cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICBbZmRUeXBlXT1cImlubGluZUVkaXRNb2RlID8gJ2VtcGhhc2l6ZWQnIDogJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFtnbHlwaF09XCInZWRpdCdcIlxuICAgICAgICBbbGFiZWxdPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnID8gKCdJbmxpbmUgRWRpdCBJbiBMaXN0JyB8IGJiYlRyYW5zbGF0ZSkgOiAnJ1wiXG4gICAgICAgIChjbGljayk9XCJvbkVkaXRNb2RlKClcIlxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2Fsd2F5cydcIlxuICAgICAgICBbdGl0bGVdPVwiJ0lubGluZSBFZGl0IEluIExpc3QnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgYm9keUNsaWNrXG4gICAgPjwvYnV0dG9uPlxuICAgIH0gQGlmIChncmlkU2V0dGluZyAmJiBncmlkU2V0dGluZy5IaWRkZW4gIT09IHRydWUgJiYgYWxsb3dHcmlkQ29sdW1uU29ydCkgeyBAaWYgKGRldmljZVNpemUgPT09ICdzJykge1xuICAgIDxidXR0b25cbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInYWx3YXlzJ1wiXG4gICAgICAgIChjbGljayk9XCJvbkdyb3VwYnlTZXR0aW5ncygpXCJcbiAgICAgICAgW2xhYmVsXT1cIidHcm91cHMnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgYm9keUNsaWNrXG4gICAgPjwvYnV0dG9uPlxuICAgIDxidXR0b25cbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBbY29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInYWx3YXlzJ1wiXG4gICAgICAgIChjbGljayk9XCJvblNvcnRTZXR0aW5ncygpXCJcbiAgICAgICAgW2xhYmVsXT1cIidTb3J0JyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIGJvZHlDbGlja1xuICAgID48L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2Fsd2F5cydcIlxuICAgICAgICAoY2xpY2spPVwib25Db2x1bW5TZXR0aW5ncygpXCJcbiAgICAgICAgW2xhYmVsXT1cIidDb2x1bW5zJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIGJvZHlDbGlja1xuICAgID48L2J1dHRvbj5cbiAgICB9IEBpZiAoZGV2aWNlU2l6ZSAhPT0gJ3MnKSB7XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgIFthdHRyLmZkT3ZlcmZsb3dQcmlvcml0eV09XCInbmV2ZXInXCJcbiAgICAgICAgW2ZkTWVudV09XCJ0cnVlXCJcbiAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBnbHlwaD1cImFjdGlvbi1zZXR0aW5nc1wiXG4gICAgICAgIFt0aXRsZV09XCInU2V0dGluZ3MnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgW2ZkTWVudVRyaWdnZXJdPVwidGFibGVNZW51U2V0dGluZ3NcIlxuICAgICAgICBib2R5Q2xpY2tcbiAgICA+PC9idXR0b24+XG4gICAgfVxuICAgIDxmZC1tZW51ICN0YWJsZU1lbnVTZXR0aW5ncz5cbiAgICAgICAgPGxpIGZkLW1lbnUtaXRlbT5cbiAgICAgICAgICAgIDxkaXYgZmQtbWVudS1pbnRlcmFjdGl2ZSAoY2xpY2spPVwidGFibGVNZW51U2V0dGluZ3MuY2xvc2UoKTsgb25Db2x1bW5TZXR0aW5ncygpXCIgYm9keUNsaWNrPlxuICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJhY3Rpb24tc2V0dGluZ3NcIj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0NvbHVtbnMnIHwgYmJiVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBmZC1tZW51LWl0ZW0+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cInRhYmxlTWVudVNldHRpbmdzLmNsb3NlKCk7IG9uU29ydFNldHRpbmdzKClcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb24gcG9zaXRpb249XCJiZWZvcmVcIiBnbHlwaD1cInNvcnRcIj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ1NvcnQnIHwgYmJiVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgICAgIDxsaSBmZC1tZW51LWl0ZW0+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cInRhYmxlTWVudVNldHRpbmdzLmNsb3NlKCk7IG9uR3JvdXBieVNldHRpbmdzKClcIiBib2R5Q2xpY2s+XG4gICAgICAgICAgICAgICAgPGZkLW1lbnUtYWRkb24gcG9zaXRpb249XCJiZWZvcmVcIiBnbHlwaD1cImdyb3VwLTJcIj48L2ZkLW1lbnUtYWRkb24+XG4gICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAge3sgJ0dyb3VwcycgfCBiYmJUcmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9saT5cbiAgICA8L2ZkLW1lbnU+XG4gICAgfSBAaWYgKHZpZXdDb2xsZWN0aW9uICYmIHZpZXdDb2xsZWN0aW9uLmxlbmd0aCA+IDEpIHtcbiAgICA8ZmQtc3BsaXQtYnV0dG9uXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnID8gJ2Fsd2F5cycgOiAnbG93J1wiXG4gICAgICAgIFtmZFR5cGVdPVwiJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFttYWluQWN0aW9uXT1cIntcbiAgICAgICAgICAgIGtlZXBNYWluQWN0aW9uOiB0cnVlLFxuICAgICAgICAgICAgbWFpbkFjdGlvblRpdGxlOiBzcGxpdEJ0blRpdGxlXG4gICAgICAgIH1cIlxuICAgID5cbiAgICAgICAgPGZkLW1lbnU+XG4gICAgICAgICAgICBAZm9yICh2aWV3T2JqZWN0IG9mIHZpZXdDb2xsZWN0aW9uOyB0cmFjayB2aWV3T2JqZWN0KSB7XG4gICAgICAgICAgICA8bGkgZmQtbWVudS1pdGVtPlxuICAgICAgICAgICAgICAgIDxkaXYgZmQtbWVudS1pbnRlcmFjdGl2ZSAoY2xpY2spPVwib25DaGFuZ2VWaWV3KHZpZXdPYmplY3QpXCIgYm9keUNsaWNrPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gW2dseXBoXT1cInZpZXdPYmplY3QuVWlDb21wb25lbnQuU2V0dGluZ3M/Lkljb25cIj4gPC9mZC1pY29uPlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgfVxuICAgICAgICA8L2ZkLW1lbnU+XG4gICAgPC9mZC1zcGxpdC1idXR0b24+XG4gICAgfVxuICAgIDxuZy10ZW1wbGF0ZSAjc3BsaXRCdG5UaXRsZT5cbiAgICAgICAgPGZkLWljb24gW2dseXBoXT1cInJlcG9ydFZpZXcuVWlDb21wb25lbnQuU2V0dGluZ3M/Lkljb25cIj48L2ZkLWljb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICA8bmctdGVtcGxhdGUgI3NwbGl0QnRuU2V0dGluZ3M+XG4gICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCInYWN0aW9uLXNldHRpbmdzJ1wiPjwvZmQtaWNvbj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICAgIH1cbjwvZmQtdG9vbGJhcj5cbn1cbiJdfQ==
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWx2LXRvb2xiYXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWx2LXRvb2xiYXIvdWx2LXRvb2xiYXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILHVCQUF1QixFQUN2QixTQUFTLEVBRVQsWUFBWSxFQUNaLEtBQUssRUFFTCxNQUFNLEVBRU4sU0FBUyxFQUNaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBa0IsZ0JBQWdCLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUV6RSxPQUFPLEVBQ0gsYUFBYSxFQUtoQixNQUFNLHNCQUFzQixDQUFDOzs7Ozs7Ozs7O0FBUTlCLE1BQU0sT0FBTyxtQkFBb0IsU0FBUSxhQUFhO0lBbUNsRCxZQUFtQixFQUFjO1FBQzdCLEtBQUssRUFBRSxDQUFDO1FBRE8sT0FBRSxHQUFGLEVBQUUsQ0FBWTtRQTlCeEIsY0FBUyxHQUFHLEtBQUssQ0FBQztRQXNCakIsV0FBTSxHQUFHLElBQUksWUFBWSxFQUFVLENBQUM7UUFDcEMsaUJBQVksR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFDLGNBQVMsR0FBRyxJQUFJLFlBQVksRUFBVSxDQUFDO1FBQ3ZDLGdCQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztRQUN6QyxrQkFBYSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDbkMsY0FBUyxHQUFHLElBQUksWUFBWSxFQUFvQixDQUFDO1FBQ2pELHNCQUFpQixHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFJdkQsQ0FBQztJQUNELGVBQWU7UUFDWCxLQUFLLENBQUMsZUFBZSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNELFdBQVcsQ0FBQyxPQUFzQjtRQUM5QixLQUFLLENBQUMsV0FBVyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzNCLE1BQU0sRUFBRSxjQUFjLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDbkMsSUFBSSxjQUFjLElBQUksQ0FBQyxjQUFjLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDaEQsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzNCLENBQUM7SUFDTCxDQUFDO0lBRUQsaUJBQWlCO1FBQ2IsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzVDLENBQUM7SUFDRCxjQUFjO1FBQ1YsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFDRCxnQkFBZ0I7UUFDWixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDM0MsQ0FBQztJQUNELFVBQVU7UUFDTixJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFDRCxZQUFZLENBQUMsSUFBc0I7UUFDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDOUIsQ0FBQztJQUNELFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUNoQixPQUFPLElBQUksRUFBRSxNQUFNLENBQUM7SUFDeEIsQ0FBQztJQUNNLFFBQVEsQ0FBQyxLQUFLLEVBQUUsSUFBSTtRQUN2QixPQUFPLElBQUksQ0FBQyxJQUFJLENBQUM7SUFDckIsQ0FBQztJQUNPLGVBQWU7UUFDbkIsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDZixJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsR0FBRyxLQUFLLENBQUM7WUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQzFDLENBQUM7SUFDTCxDQUFDOzhHQTNFUSxtQkFBbUI7a0dBQW5CLG1CQUFtQiwyK0JBQ2pCLGdCQUFnQiw0RkM1Qi9CLHcvTkF5TEE7OzJGRDlKYSxtQkFBbUI7a0JBTi9CLFNBQVM7K0JBQ0ksaUJBQWlCLG1CQUdWLHVCQUF1QixDQUFDLE1BQU07K0VBR2xCLE9BQU87c0JBQW5DLFNBQVM7dUJBQUMsZ0JBQWdCO2dCQUNsQixtQkFBbUI7c0JBQTNCLEtBQUs7Z0JBQ0csMkJBQTJCO3NCQUFuQyxLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxLQUFLO3NCQUFiLEtBQUs7Z0JBQ0csSUFBSTtzQkFBWixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csV0FBVztzQkFBbkIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBQ0csY0FBYztzQkFBdEIsS0FBSztnQkFDRyxVQUFVO3NCQUFsQixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBQ0csYUFBYTtzQkFBckIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLGVBQWU7c0JBQXZCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLGFBQWE7c0JBQXRCLE1BQU07Z0JBQ0csU0FBUztzQkFBbEIsTUFBTTtnQkFDRyxpQkFBaUI7c0JBQTFCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LFxuICAgIENvbXBvbmVudCxcbiAgICBFbGVtZW50UmVmLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBPbkNoYW5nZXMsXG4gICAgT3V0cHV0LFxuICAgIFNpbXBsZUNoYW5nZXMsXG4gICAgVmlld0NoaWxkXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29udGVudERlbnNpdHksIFRvb2xiYXJDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuXG5pbXBvcnQge1xuICAgIEJhc2VDb21wb25lbnQsXG4gICAgRGVmYXVsdENvbW1hbmRzQWNjZXNzLFxuICAgIEFiYnJldmF0aW9uRGV2aWNlU2l6ZSxcbiAgICBEZXZpY2VTaXplLFxuICAgIFVpUmVwb3J0Vmlld0Jhc2Vcbn0gZnJvbSAnYmFyc2Etbm92aW4tcmF5LWNvcmUnO1xuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ2JzdS11bHYtdG9vbGJhcicsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3Vsdi10b29sYmFyLmNvbXBvbmVudC5odG1sJyxcbiAgICBzdHlsZVVybHM6IFsnLi91bHYtdG9vbGJhci5jb21wb25lbnQuc2NzcyddLFxuICAgIGNoYW5nZURldGVjdGlvbjogQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3kuT25QdXNoXG59KVxuZXhwb3J0IGNsYXNzIFVsdlRvb2xiYXJDb21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25DaGFuZ2VzIHtcbiAgICBAVmlld0NoaWxkKFRvb2xiYXJDb21wb25lbnQpIF90bGJDbXA6IFRvb2xiYXJDb21wb25lbnQ7XG4gICAgQElucHV0KCkgYWxsb3dHcmlkQ29sdW1uU29ydDogYm9vbGVhbjtcbiAgICBASW5wdXQoKSB1c2VMYXlvdXRJdGVtVGV4dEZvckNvbnRyb2w6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZW5hYmxlU2VhcmNoOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGhpZGVUaXRsZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgaWNvbjogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGRldmljZU5hbWU6IERldmljZVNpemU7XG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIGFjY2VzczogRGVmYXVsdENvbW1hbmRzQWNjZXNzO1xuICAgIEBJbnB1dCgpIGhpZGVUb29sYmFyOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIHRvb2xiYXJCdXR0b25zOiBhbnlbXTtcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogQ29udGVudERlbnNpdHk7XG4gICAgQElucHV0KCkgaW5saW5lRWRpdE1vZGU6IGJvb2xlYW47XG4gICAgQElucHV0KCkgYWxsb3dJbmxpbmVFZGl0OiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGdyaWRTZXR0aW5nOiBhbnk7XG4gICAgQElucHV0KCkgdmlld0NvbGxlY3Rpb246IGFueVtdO1xuICAgIEBJbnB1dCgpIHJlcG9ydFZpZXc6IFVpUmVwb3J0Vmlld0Jhc2U7XG4gICAgQElucHV0KCkgaW5EaWFsb2c6IGJvb2xlYW47XG4gICAgQElucHV0KCkgaXNNdWx0aVNlbGVjdDogYm9vbGVhbjtcblxuICAgIEBJbnB1dCgpIGhhc1NlbGVjdGVkOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNvbmZpZzogYW55O1xuICAgIEBJbnB1dCgpIGhpZGRlbjogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBidXR0b25zOiBhbnlbXTtcbiAgICBASW5wdXQoKSBtb0RhdGFMaXN0Q291bnQ6IG51bWJlcjtcbiAgICBAT3V0cHV0KCkgc2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG4gICAgQE91dHB1dCgpIGdyb3VwYnlDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuICAgIEBPdXRwdXQoKSBzb3J0Q2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgY29sdW1uQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBAT3V0cHV0KCkgZWRpdE1vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcbiAgICBAT3V0cHV0KCkgdmlld0NsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxVaVJlcG9ydFZpZXdCYXNlPigpO1xuICAgIEBPdXRwdXQoKSBjcmVhdGVOZXdJbmxpbmVNbyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgY29uc3RydWN0b3IocHVibGljIGVsOiBFbGVtZW50UmVmKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuICAgIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdBZnRlclZpZXdJbml0KCk7XG4gICAgfVxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkNoYW5nZXMoY2hhbmdlcyk7XG4gICAgICAgIGNvbnN0IHsgdG9vbGJhckJ1dHRvbnMgfSA9IGNoYW5nZXM7XG4gICAgICAgIGlmICh0b29sYmFyQnV0dG9ucyAmJiAhdG9vbGJhckJ1dHRvbnMuZmlyc3RDaGFuZ2UpIHtcbiAgICAgICAgICAgIHRoaXMuX3JlZnJlc2hUb29sYmFyKCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBvbkdyb3VwYnlTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ncm91cGJ5Q2xpY2suZW1pdCh0aGlzLmRldmljZU5hbWUpO1xuICAgIH1cbiAgICBvblNvcnRTZXR0aW5ncygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zb3J0Q2xpY2suZW1pdCh0aGlzLmRldmljZU5hbWUpO1xuICAgIH1cbiAgICBvbkNvbHVtblNldHRpbmdzKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbHVtbkNsaWNrLmVtaXQodGhpcy5kZXZpY2VOYW1lKTtcbiAgICB9XG4gICAgb25FZGl0TW9kZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5lZGl0TW9kZUNsaWNrLmVtaXQoKTtcbiAgICB9XG4gICAgb25DaGFuZ2VWaWV3KHZpZXc6IFVpUmVwb3J0Vmlld0Jhc2UpOiB2b2lkIHtcbiAgICAgICAgdGhpcy52aWV3Q2xpY2suZW1pdCh2aWV3KTtcbiAgICB9XG4gICAgX3RyYWNrQnkoaW5kZXgsIGl0ZW0pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbT8uaXRlbUlkO1xuICAgIH1cbiAgICBwdWJsaWMgaWRlbnRpZnkoaW5kZXgsIGl0ZW0pOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gaXRlbS50ZXh0O1xuICAgIH1cbiAgICBwcml2YXRlIF9yZWZyZXNoVG9vbGJhcigpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuX3RsYkNtcCkge1xuICAgICAgICAgICAgdGhpcy5fdGxiQ21wLmZvcmNlT3ZlcmZsb3cgPSBmYWxzZTtcbiAgICAgICAgICAgIHRoaXMuX3RsYkNtcC51cGRhdGVDb2xsYXBzaWJsZUl0ZW1zKCk7XG4gICAgICAgIH1cbiAgICB9XG59XG4iLCJAaWYgKCF1c2VMYXlvdXRJdGVtVGV4dEZvckNvbnRyb2wgJiYgIWhpZGVUb29sYmFyKSB7XG48ZmQtdG9vbGJhclxuICAgICN0b29sYmFyXG4gICAgW3Nob3VsZE92ZXJmbG93XT1cImRldmljZVNpemUgPT09ICdzJ1wiXG4gICAgW25nQ2xhc3NdPVwiZGV2aWNlU2l6ZVwiXG4gICAgW2hhc1RpdGxlXT1cIiFoaWRlVGl0bGVcIlxuICAgIFtmb3JjZU92ZXJmbG93XT1cInRydWVcIlxuPlxuICAgIEBpZighaGlkZVRpdGxlICYmIGRldmljZVNpemUgIT09ICdzJyA/ICh0aXRsZSB8IGJiYlRyYW5zbGF0ZSkgOiAnJyl7IEBpZihpY29uKXtcbiAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiaWNvblwiPjwvZmQtaWNvbj5cbiAgICB9XG4gICAgPGg0IGZkLXRpdGxlPnt7IHRpdGxlIHwgYmJiVHJhbnNsYXRlIH19PC9oND5cbiAgICB9IEBpZiAoZGV2aWNlU2l6ZSAhPT0gJ3MnKSB7XG4gICAgPGZkLXRvb2xiYXItc3BhY2VyIGZkLXRvb2xiYXItaXRlbT48L2ZkLXRvb2xiYXItc3BhY2VyPlxuICAgIH0gQGlmICghaGlkZVRvb2xiYXIpIHsgQGZvciAoYnRuIG9mIHRvb2xiYXJCdXR0b25zOyB0cmFjayBfdHJhY2tCeShpLCBidG4pOyBsZXQgaSA9ICRpbmRleCkgeyBAaWYgKGJ0biAhPT0gJy0nICYmXG4gICAgYnRuLkNvbW1hbmQgJiYgIWJ0bi5Db21tYW5kLkN1c3RvbVVpICYmICFidG4ubWVudSkge1xuICAgIDxidXR0b25cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiYnRuLml0ZW1JZCA9PT0gJ0VkaXQnID8gJ2Fsd2F5cycgOiBidG4uQ29tbWFuZD8uSXNCdWlsdGluID8gJ2xvdycgOiAnaGlnaCdcIlxuICAgICAgICBbdWx2Q29tbWFuZEhhbmRsZXJdPVwiYnRuXCJcbiAgICAgICAgW2Rpc2FibGVdPVwiaW5saW5lRWRpdE1vZGUgJiYgYnRuLml0ZW1JZCA9PT0gJ05ldydcIlxuICAgICAgICBbZGlzYWJsZWRdPVwiYnRuLkNvbW1hbmQuX2lzRW5hYmxlID09PSBmYWxzZSA/IHRydWUgOiBmYWxzZVwiXG4gICAgICAgIFtmZFR5cGVdPVwiIWJ0bi5Db21tYW5kLl9pc0VuYWJsZSA/ICd0cmFuc3BhcmVudCcgOiBidG4uQ29tbWFuZC5Kc29uRXh0cmFQcm9wPy5EZXNpZ24gfHwgJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFtnbHlwaF09XCJkZXZpY2VTaXplID09PSAncycgPyBudWxsIDogYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uSWNvblwiXG4gICAgICAgIFt0aXRsZV09XCIoYnRuLkNvbW1hbmQ/LklzQnVpbHRpbiA/IGJ0bi50ZXh0IDogJycpIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgKGNsaWNrKT1cImlubGluZUVkaXRNb2RlICYmIGJ0bi5pdGVtSWQgPT09ICdOZXcnICYmIGNyZWF0ZU5ld0lubGluZU1vLmVtaXQoKVwiXG4gICAgICAgIGJvZHlDbGlja1xuICAgID5cbiAgICAgICAgQGlmICghYnRuLkNvbW1hbmQuSnNvbkV4dHJhUHJvcD8uSWNvbiAmJiAhYnRuLkNvbW1hbmQ/LklzQnVpbHRpbiAmJiBidG4uaWNvbikge1xuICAgICAgICA8aW1nIHdpZHRoPVwiMTZcIiBbc3JjXT1cImJ0bi5pY29uXCIgLz5cbiAgICAgICAgfSBAaWYgKCFidG4uaGlkZVRleHQgfHwgZGV2aWNlU2l6ZSA9PT0gJ3MnKSB7XG4gICAgICAgIDxzcGFuPnt7IGJ0bi50ZXh0IHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICB9XG4gICAgPC9idXR0b24+XG4gICAgfSBAaWYgKChidG4gPT09ICctJyB8fCBidG4udHlwZSA9PT0gJ3NlcGVyYXRvcicpICYmIGRldmljZU5hbWUgIT09ICdtb2JpbGUnKSB7XG4gICAgPGZkLXRvb2xiYXItc2VwYXJhdG9yIGZkLXRvb2xiYXItaXRlbT48L2ZkLXRvb2xiYXItc2VwYXJhdG9yPlxuICAgIH0gQGlmIChidG4ubWVudSkge1xuICAgIDxidXR0b25cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICBbZmRNZW51XT1cInRydWVcIlxuICAgICAgICBbZmRUeXBlXT1cImJ0bi5Db21tYW5kPy5Jc0J1aWx0aW4gPyAnc3RhbmRhcmQnIDogJ3RyYW5zcGFyZW50J1wiXG4gICAgICAgIFtsYWJlbF09XCJidG4udGV4dCB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIFthcmlhTGFiZWxdPVwiYnRuLnRleHQgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICBbZmRNZW51VHJpZ2dlcl09XCJtZW51XCJcbiAgICAgICAgYm9keUNsaWNrXG4gICAgPlxuICAgICAgICA8ZmQtbWVudSAjbWVudT5cbiAgICAgICAgICAgIEBmb3IgKGJ0bkNvbW1hbmQgb2YgYnRuLm1lbnUuaXRlbXM7IHRyYWNrIGJ0bkNvbW1hbmQpIHtcbiAgICAgICAgICAgIDxsaSBmZC1tZW51LWl0ZW0gW3VsdkNvbW1hbmRIYW5kbGVyXT1cImJ0bkNvbW1hbmRcIiAoY2xpY2spPVwibWVudS5jbG9zZSgpXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBmZC1tZW51LXRpdGxlPnt7IGJ0bkNvbW1hbmQudGV4dCB8IGJiYlRyYW5zbGF0ZSB9fTwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbGk+XG4gICAgICAgICAgICB9XG4gICAgICAgIDwvZmQtbWVudT5cbiAgICA8L2J1dHRvbj5cbiAgICB9IEBpZiAoYnRuICE9PSAnLScgJiYgYnRuLkNvbW1hbmQgJiYgYnRuLkNvbW1hbmQuQ3VzdG9tVWkpIHtcbiAgICA8Ym5yYy1keW5hbWljLWZvcm0tdG9vbGJhcml0ZW1cbiAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgIFt1bHZDb21tYW5kSGFuZGxlcl09XCJidG5cIlxuICAgICAgICBbY29tcG9uZW50XT1cImJ0bi5Db21tYW5kPy5DdXN0b21VaVwiXG4gICAgICAgIFtjb250ZXh0XT1cImJ0blwiXG4gICAgICAgIFtpc0VuYWJsZV09XCJidG4uQ29tbWFuZD8uX2lzRW5hYmxlXCJcbiAgICAgICAgW2RldmljZU5hbWVdPVwiZGV2aWNlTmFtZVwiXG4gICAgICAgIFtkZXZpY2VTaXplXT1cImRldmljZVNpemVcIlxuICAgICAgICBib2R5Q2xpY2tcbiAgICA+PC9ibnJjLWR5bmFtaWMtZm9ybS10b29sYmFyaXRlbT5cbiAgICB9IH1cbiAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbZmQtdG9vbGJhci1pdGVtXVwiPjwvbmctY29udGVudD5cbiAgICBAaWYgKGFsbG93SW5saW5lRWRpdCAmJiBhY2Nlc3M/LkVkaXQpIHtcbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLWJ1dHRvblxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgW2ZkVHlwZV09XCJpbmxpbmVFZGl0TW9kZSA/ICdlbXBoYXNpemVkJyA6ICd0cmFuc3BhcmVudCdcIlxuICAgICAgICBbZ2x5cGhdPVwiJ2VkaXQnXCJcbiAgICAgICAgW2xhYmVsXT1cImRldmljZVNpemUgPT09ICdzJyA/ICgnSW5saW5lIEVkaXQgSW4gTGlzdCcgfCBiYmJUcmFuc2xhdGUpIDogJydcIlxuICAgICAgICAoY2xpY2spPVwib25FZGl0TW9kZSgpXCJcbiAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidhbHdheXMnXCJcbiAgICAgICAgW3RpdGxlXT1cIidJbmxpbmUgRWRpdCBJbiBMaXN0JyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIGJvZHlDbGlja1xuICAgID48L2J1dHRvbj5cbiAgICB9IEBpZiAoZ3JpZFNldHRpbmcgJiYgZ3JpZFNldHRpbmcuSGlkZGVuICE9PSB0cnVlICYmIGFsbG93R3JpZENvbHVtblNvcnQpIHsgQGlmIChkZXZpY2VTaXplID09PSAncycpIHtcbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2Fsd2F5cydcIlxuICAgICAgICAoY2xpY2spPVwib25Hcm91cGJ5U2V0dGluZ3MoKVwiXG4gICAgICAgIFtsYWJlbF09XCInR3JvdXBzJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIGJvZHlDbGlja1xuICAgID48L2J1dHRvbj5cbiAgICA8YnV0dG9uXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICBmZC1idXR0b25cbiAgICAgICAgW2NvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ2Fsd2F5cydcIlxuICAgICAgICAoY2xpY2spPVwib25Tb3J0U2V0dGluZ3MoKVwiXG4gICAgICAgIFtsYWJlbF09XCInU29ydCcgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICBib2R5Q2xpY2tcbiAgICA+PC9idXR0b24+XG4gICAgPGJ1dHRvblxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIFtjb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cIidhbHdheXMnXCJcbiAgICAgICAgKGNsaWNrKT1cIm9uQ29sdW1uU2V0dGluZ3MoKVwiXG4gICAgICAgIFtsYWJlbF09XCInQ29sdW1ucycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICBib2R5Q2xpY2tcbiAgICA+PC9idXR0b24+XG4gICAgfSBAaWYgKGRldmljZVNpemUgIT09ICdzJykge1xuICAgIDxidXR0b25cbiAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICBbYXR0ci5mZE92ZXJmbG93UHJpb3JpdHldPVwiJ25ldmVyJ1wiXG4gICAgICAgIFtmZE1lbnVdPVwidHJ1ZVwiXG4gICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgZ2x5cGg9XCJhY3Rpb24tc2V0dGluZ3NcIlxuICAgICAgICBbdGl0bGVdPVwiJ1NldHRpbmdzJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgIFtmZE1lbnVUcmlnZ2VyXT1cInRhYmxlTWVudVNldHRpbmdzXCJcbiAgICAgICAgYm9keUNsaWNrXG4gICAgPjwvYnV0dG9uPlxuICAgIH1cbiAgICA8ZmQtbWVudSAjdGFibGVNZW51U2V0dGluZ3M+XG4gICAgICAgIDxsaSBmZC1tZW51LWl0ZW0+XG4gICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cInRhYmxlTWVudVNldHRpbmdzLmNsb3NlKCk7IG9uQ29sdW1uU2V0dGluZ3MoKVwiIGJvZHlDbGljaz5cbiAgICAgICAgICAgICAgICA8ZmQtbWVudS1hZGRvbiBwb3NpdGlvbj1cImJlZm9yZVwiIGdseXBoPVwiYWN0aW9uLXNldHRpbmdzXCI+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdDb2x1bW5zJyB8IGJiYlRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgZmQtbWVudS1pdGVtPlxuICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlIChjbGljayk9XCJ0YWJsZU1lbnVTZXR0aW5ncy5jbG9zZSgpOyBvblNvcnRTZXR0aW5ncygpXCIgYm9keUNsaWNrPlxuICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJzb3J0XCI+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdTb3J0JyB8IGJiYlRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2xpPlxuICAgICAgICA8bGkgZmQtbWVudS1pdGVtPlxuICAgICAgICAgICAgPGRpdiBmZC1tZW51LWludGVyYWN0aXZlIChjbGljayk9XCJ0YWJsZU1lbnVTZXR0aW5ncy5jbG9zZSgpOyBvbkdyb3VwYnlTZXR0aW5ncygpXCIgYm9keUNsaWNrPlxuICAgICAgICAgICAgICAgIDxmZC1tZW51LWFkZG9uIHBvc2l0aW9uPVwiYmVmb3JlXCIgZ2x5cGg9XCJncm91cC0yXCI+PC9mZC1tZW51LWFkZG9uPlxuICAgICAgICAgICAgICAgIDxzcGFuIGZkLW1lbnUtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdHcm91cHMnIHwgYmJiVHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvbGk+XG4gICAgPC9mZC1tZW51PlxuICAgIH0gQGlmICh2aWV3Q29sbGVjdGlvbiAmJiB2aWV3Q29sbGVjdGlvbi5sZW5ndGggPiAxKSB7XG4gICAgPGZkLXNwbGl0LWJ1dHRvblxuICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgW2F0dHIuZmRPdmVyZmxvd1ByaW9yaXR5XT1cImRldmljZVNpemUgPT09ICdzJyA/ICdhbHdheXMnIDogJ2xvdydcIlxuICAgICAgICBbZmRUeXBlXT1cIid0cmFuc3BhcmVudCdcIlxuICAgICAgICBbbWFpbkFjdGlvbl09XCJ7XG4gICAgICAgICAgICBrZWVwTWFpbkFjdGlvbjogdHJ1ZSxcbiAgICAgICAgICAgIG1haW5BY3Rpb25UaXRsZTogc3BsaXRCdG5UaXRsZVxuICAgICAgICB9XCJcbiAgICA+XG4gICAgICAgIDxmZC1tZW51PlxuICAgICAgICAgICAgQGZvciAodmlld09iamVjdCBvZiB2aWV3Q29sbGVjdGlvbjsgdHJhY2sgdmlld09iamVjdCkge1xuICAgICAgICAgICAgPGxpIGZkLW1lbnUtaXRlbT5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLW1lbnUtaW50ZXJhY3RpdmUgKGNsaWNrKT1cIm9uQ2hhbmdlVmlldyh2aWV3T2JqZWN0KVwiIGJvZHlDbGljaz5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gZmQtbWVudS10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJ2aWV3T2JqZWN0LlVpQ29tcG9uZW50LlNldHRpbmdzPy5JY29uXCI+IDwvZmQtaWNvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9saT5cbiAgICAgICAgICAgIH1cbiAgICAgICAgPC9mZC1tZW51PlxuICAgIDwvZmQtc3BsaXQtYnV0dG9uPlxuICAgIH1cbiAgICA8bmctdGVtcGxhdGUgI3NwbGl0QnRuVGl0bGU+XG4gICAgICAgIDxmZC1pY29uIFtnbHlwaF09XCJyZXBvcnRWaWV3LlVpQ29tcG9uZW50LlNldHRpbmdzPy5JY29uXCI+PC9mZC1pY29uPlxuICAgIDwvbmctdGVtcGxhdGU+XG4gICAgPG5nLXRlbXBsYXRlICNzcGxpdEJ0blNldHRpbmdzPlxuICAgICAgICA8ZmQtaWNvbiBbZ2x5cGhdPVwiJ2FjdGlvbi1zZXR0aW5ncydcIj48L2ZkLWljb24+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgICB9XG48L2ZkLXRvb2xiYXI+XG59XG4iXX0=