barsa-sap-ui 1.0.416 → 1.0.417

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.
@@ -123,10 +123,10 @@ export class BarsaUlvMainComponent extends BaseComponent {
123
123
  }
124
124
  }
125
125
  BarsaUlvMainComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaUlvMainComponent, deps: [{ token: i0.ElementRef }, { token: i1.DialogService }], target: i0.ɵɵFactoryTarget.Component });
126
- BarsaUlvMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaUlvMainComponent, selector: "bsu-barsa-ulv-main", inputs: { viewerControl: "viewerControl", loading: "loading", viewerLoading: "viewerLoading", isReportPage: "isReportPage", deviceSize: "deviceSize", title: "title", searchPanelUi: "searchPanelUi", breadCrumbs: "breadCrumbs", allSearchPanelSettings: "allSearchPanelSettings", isAnonymous: "isAnonymous", canSaveGridSetting: "canSaveGridSetting", rtl: "rtl", selectedSearchPanelSettings: "selectedSearchPanelSettings", searchPanelMoChanged: "searchPanelMoChanged", selectedSearchPanelSettingsId: "selectedSearchPanelSettingsId", hideSearchPanel: "hideSearchPanel", pagingSetting: "pagingSetting", contentDensity: "contentDensity", context: "context", isMobile: "isMobile", standalone: "standalone", landscape: "landscape" }, outputs: { close: "close", searchPanelMoChange: "searchPanelMoChange", openManageFilters: "openManageFilters", collapsedChange: "collapsedChange", hideSearchPanelClick: "hideSearchPanelClick", filterSave: "filterSave", filterSaveAs: "filterSaveAs", pageChange: "pageChange", showFilterFieldsSetting: "showFilterFieldsSetting", manageFilters: "manageFilters", clearSearch: "clearSearch", search: "search", selectSearchPanelSettings: "selectSearchPanelSettings" }, viewQueries: [{ propertyName: "_dynamicPageComponent", first: true, predicate: DynamicPageComponent, descendants: true }, { propertyName: "dialogTemplate", first: true, predicate: ["searchpanelDialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- <ng-container *ngIf=\"isReportPage; else reportTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n reportPageTemplate;\n context: {\n $implicit: viewerControl,\n tabMode: viewerControl.Setting?.ClassNames?.CustomUi?.Parameters?.TabMode\n }\n \"\n >\n </ng-container>\n</ng-container> -->\n<ng-container\n *ngTemplateOutlet=\"\n isReportPage ? reportPageTemplate : reportTemplate;\n context: {\n $implicit: viewerControl,\n tabMode: viewerControl?.Setting?.ClassNames?.CustomUi?.Parameters?.TabMode\n }\n \"\n>\n</ng-container>\n<bsu-mask *ngIf=\"loading\" size=\"m\"></bsu-mask>\n<ng-template #reportPageTemplate let-viewerControl let-tabMode=\"tabMode\">\n <fd-dynamic-page\n formClose\n mobile\n [attr.isMobile]=\"isMobile\"\n [isMobile]=\"isMobile\"\n [size]=\"deviceSize | dynamicPageSize\"\n [attr.tabMode]=\"tabMode\"\n [autoResponsive]=\"false\"\n >\n <fd-dynamic-page-header\n [title]=\"\n (title | bbbTranslate)\n ? (title | bbbTranslate)\n : isMobile && breadCrumbs.length\n ? breadCrumbs[breadCrumbs.length - 1].label\n : ''\n \"\n class=\"p-b0\"\n >\n <fd-breadcrumb *ngIf=\"!isMobile\">\n <ng-container *ngIf=\"breadCrumbs\">\n <ng-container\n *ngFor=\"\n let breadCrumb of breadCrumbs | slice: 0:breadCrumbs.length;\n let i = index;\n let last = last\n \"\n >\n <fd-breadcrumb-item *ngIf=\"last\">\n <bsu-breadcrumb\n [index]=\"i\"\n [isLast]=\"last\"\n [breadCrumb]=\"breadCrumb\"\n [allBreadCrumb]=\"breadCrumbs\"\n ></bsu-breadcrumb>\n </fd-breadcrumb-item>\n </ng-container>\n </ng-container>\n </fd-breadcrumb>\n <!-- <fd-dynamic-page-title-content>\u06AF\u0632\u0627\u0631\u0634 </fd-dynamic-page-title-content> -->\n\n <fd-dynamic-page-global-actions *untilInView=\"el\" style=\"min-width: auto\">\n <fd-toolbar [shouldOverflow]=\"true\" Style=\"display:none\"> </fd-toolbar>\n <!-- added this because in mobile landscape toolbar disapper -->\n <fd-toolbar\n *ngIf=\"searchPanelUi\"\n class=\"global-actions\"\n fdType=\"transparent\"\n [clearBorder]=\"true\"\n [shouldOverflow]=\"deviceSize === 's'\"\n >\n <fd-popover\n fd-toolbar-item\n #popover\n fdOverflowPriority=\"never\"\n *ngIf=\"isAnonymous === false && canSaveGridSetting\"\n >\n <fd-popover-control>\n <div style=\"display: flex; align-items: center\">\n <h3 class=\"header-search\" [attr.rtl]=\"rtl\" fd-title>\n {{\n selectedSearchPanelSettings?.IsStandard\n ? ''\n : selectedSearchPanelSettings?.Title\n }}\n <strong *ngIf=\"searchPanelMoChanged\">*</strong>\n </h3>\n <button\n fd-button\n glyph=\"slim-arrow-down\"\n fdType=\"transparent\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </div>\n </fd-popover-control>\n <fd-popover-body mobile>\n <div fd-popover-body-header>\n <div fd-bar [fdCozy]>\n <div fd-bar-left>\n <fd-bar-element>{{ 'Filters' | bbbTranslate }}</fd-bar-element>\n </div>\n </div>\n </div>\n <ul fd-list style=\"min-height: 200px; background-color: var(--sapBackgroundColor, #f7f7f7)\">\n <li\n fd-list-item\n *ngFor=\"let option of allSearchPanelSettings\"\n [selected]=\"option.Id === selectedSearchPanelSettingsId\"\n (click)=\"onSelectSearchPanelSettings(option.Id, popover)\"\n >\n <span fd-list-title>{{ option.Title }}</span>\n </li>\n </ul>\n <div fd-popover-body-footer>\n <div fd-bar [barDesign]=\"'footer'\" [fdCozy]>\n <div fd-bar-right *ngIf=\"selectedSearchPanelSettings\">\n <fd-button-bar\n *ngIf=\"!selectedSearchPanelSettings.IsPrimary && searchPanelMoChanged\"\n [label]=\"'Save' | bbbTranslate\"\n fdType=\"emphasized\"\n (click)=\"onFilterSave(popover)\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"searchPanelMoChanged\"\n [label]=\"'SaveAs' | bbbTranslate\"\n [fdType]=\"\n selectedSearchPanelSettings.IsDefault ? 'emphasized' : 'transparent'\n \"\n (click)=\"onFilterSaveAs(popover)\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'Manage' | bbbTranslate\"\n fdInitialFocus\n fdType=\"transparent\"\n (click)=\"onManageFilters(popover)\"\n >\n </fd-button-bar>\n </div>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n <fd-toolbar-spacer *ngIf=\"deviceSize !== 's'\"></fd-toolbar-spacer>\n <button\n fd-button\n *ngIf=\"isMobile\"\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n (click)=\"onShowSearchpanelDialog()\"\n [glyph]=\"'filter'\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n fdType=\"emphasized\"\n [label]=\"'Search' | bbbTranslate\"\n (click)=\"onSearch()\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdType=\"transparent\"\n fdOverflowPriority=\"low\"\n [label]=\"'Filters' | bbbTranslate\"\n (click)=\"onShowFilterFieldsSetting()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdType=\"transparent\"\n fdOverflowPriority=\"low\"\n [label]=\"'Clear' | bbbTranslate\"\n (click)=\"onClearSearch()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n fd-toolbar-item\n *ngIf=\"!isMobile && !sideContentMode\"\n fdType=\"transparent\"\n [label]=\"hideSearchPanel ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\n (click)=\"onHideSearchPanelClick()\"\n fdOverflowPriority=\"low\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </fd-toolbar>\n </fd-dynamic-page-global-actions>\n <fd-dynamic-page-layout-actions>\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"close.emit()\" title=\"Close\">\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\n </button>\n </fd-toolbar>\n </fd-dynamic-page-layout-actions>\n </fd-dynamic-page-header>\n <fd-dynamic-page-subheader\n [pinnable]=\"true\"\n [collapsible]=\"false\"\n *ngIf=\"!hideSearchPanel && searchPanelUi && !sideContentMode\"\n >\n <bsu-search-panel\n *ngIf=\"!isMobile\"\n [hideButtons]=\"true\"\n [searchPanelUi]=\"searchPanelUi\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </fd-dynamic-page-subheader>\n <fd-dynamic-page-content *ngIf=\"!tabMode\">\n <ng-container\n *ngTemplateOutlet=\"\n sideContentMode ? sideContentTemplate : viewerTemplate;\n context: { noRenderPageing: true }\n \"\n ></ng-container>\n </fd-dynamic-page-content>\n <fd-dynamic-page-footer *ngIf=\"pagingSetting?.TotalPages\">\n <!-- page footer content goes here -->\n <div fd-bar [barDesign]=\"'footer'\">\n <div fd-bar-middle>\n <ng-container\n [renderUlvPaging]=\"context\"\n [pagingSetting]=\"pagingSetting\"\n (pageChange)=\"onPageChange($event)\"\n ></ng-container>\n </div>\n </div>\n </fd-dynamic-page-footer>\n </fd-dynamic-page>\n <ng-container *ngIf=\"tabMode\">\n <ng-container *ngTemplateOutlet=\"viewerTemplate\"></ng-container>\n </ng-container>\n</ng-template>\n<ng-template #reportTemplate>\n <bsu-mask *ngIf=\"loading\" size=\"s\"></bsu-mask>\n <ng-container *ngIf=\"!hideSearchPanel && searchPanelUi && !sideContentMode\">\n <ng-container *ngTemplateOutlet=\"searchpanelTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"sideContentMode ? sideContentTemplate : viewerTemplate\"> </ng-container>\n</ng-template>\n<ng-template #sideContentTemplate>\n <fd-dynamic-side-content [class.rtl]=\"rtl\" [size]=\"deviceSize | sapSize\">\n <fd-dynamic-side-content-side>\n <ng-container\n *ngTemplateOutlet=\"searchpanelTemplate; context: { isSearcPanelInSideContent: true }\"\n ></ng-container>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main [style.width]=\"deviceSize !== 's' ? mainContentWidth : null\">\n <ng-container *ngTemplateOutlet=\"viewerTemplate\"></ng-container>\n </fd-dynamic-side-content-main>\n </fd-dynamic-side-content>\n</ng-template>\n<ng-template #searchpanelTemplate let-isSearcPanelInSideContent=\"isSearcPanelInSideContent\">\n <ng-container *ngIf=\"!isSearcPanelInSideContent; else searchpanelCardTempate\">\n <bsu-search-panel\n *ngIf=\"!hideSearchPanel && searchPanelUi\"\n [searchPanelUi]=\"searchPanelUi\"\n [isSearcPanelInSideContent]=\"isSearcPanelInSideContent\"\n [hideButtons]=\"true\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </ng-container>\n <ng-template #searchpanelCardTempate>\n <fd-card class=\"searchpanel-card\">\n <fd-card-header>\n <h2 fd-card-title>\n <fd-icon glyph=\"filter\"></fd-icon><span>{{ 'Filter' | bbbTranslate }}</span>\n </h2>\n </fd-card-header>\n <fd-card-content> </fd-card-content>\n <fd-card-footer>\n <button\n *fdCardFooterActionItem\n fd-button\n fdType=\"emphasized\"\n [label]=\"'Search' | bbbTranslate\"\n (click)=\"onSearch()\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n [label]=\"('Delete' | bbbTranslate) + ' ' + ('Filters' | bbbTranslate)\"\n (click)=\"onClearSearch()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </fd-card-footer>\n </fd-card>\n </ng-template>\n</ng-template>\n<ng-template #viewerTemplate let-noRenderPageing=\"noRenderPageing\">\n <div\n class=\"viewer-container\"\n fillEmptySpace\n [disable]=\"isReportPage || !fillPage\"\n [decrement]=\"deviceSize !== 's' ? '100px' : '75px'\"\n [style.height]=\"viewerLoading ? '100%' : 'auto'\"\n [style.min-height]=\"isReportPage ? '100%' : null\"\n [style.position]=\"viewerLoading ? 'relative' : null\"\n >\n <bsu-mask *ngIf=\"viewerLoading\" size=\"m\"></bsu-mask>\n <ng-container *ngIf=\"viewerControl\" [renderUlvViewer]=\"viewerControl\"></ng-container>\n </div>\n <ng-container\n *ngIf=\"!noRenderPageing && pagingSetting?.TotalPages && !hidePageing\"\n [renderUlvPaging]=\"context\"\n [pagingSetting]=\"pagingSetting\"\n (pageChange)=\"onPageChange($event)\"\n ></ng-container>\n</ng-template>\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #searchpanelDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Filters' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\n </fd-dialog-header>\n <fd-dialog-body>\n <bsu-search-panel\n [hideButtons]=\"true\"\n [searchPanelUi]=\"searchPanelUi\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"emphasized\"\n (click)=\"dialog.dismiss(); onSearch()\"\n [label]=\"'Search' | bbbTranslate\"\n ></button>\n </fd-dialog-footer-button>\n <fd-dialog-footer-button>\n <button fd-button [label]=\"'Clear' | bbbTranslate\" (click)=\"onClearSearch()\"></button>\n </fd-dialog-footer-button>\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"transparent\"\n (click)=\"dialog.dismiss('Close button')\"\n [label]=\"'Cancel' | bbbTranslate\"\n ></button>\n </fd-dialog-footer-button>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;height:100%;flex-grow:1}:host ::ng-deep .fd-dynamic-page__toolbar-container{margin:0!important}:host ::ng-deep .fd-dynamic-page__collapsible-header{padding-top:0!important;padding-bottom:0!important}:host ::ng-deep .fd-dynamic-page__toolbar-container{flex:1}:host ::ng-deep .global-actions .fd-toolbar{padding:0}:host ::ng-deep fd-dynamic-page[tabMode=true] .fd-dynamic-page{height:auto!important}:host ::ng-deep fd-dynamic-page[tabMode=true] .fd-dynamic-page .fd-dynamic-page__collapsible-header-visibility-container{box-shadow:none}:host .searchpanel-card fd-card-header{pointer-events:none;cursor:default;padding:.5rem}:host .searchpanel-card h2[fd-card-title]{font-size:1rem;display:flex;align-items:center;gap:.5rem}:host .searchpanel-card h2[fd-card-title] fd-icon{font-size:1.2rem}fd-dynamic-side-content{background-color:var(--sapBaseColor);min-height:100%;height:auto}fd-dynamic-side-content-main{border:.0625rem solid var(--sapTile_SeparatorColor, #ccc)!important}fd-dynamic-side-content-side fd-card-content{padding:.5rem}fd-dynamic-page-global-actions{flex:1;width:100%}h3[rtl=true]{margin-left:5px}h3[rtl=false]{margin-right:5px}.header-search{color:var(--sapButton_TextColor, #0854a0)!important}.filter-wrapper{border-bottom:1px solid var(--sapObjectHeader_BorderColor, #d9d9d9)}.report-toolbar-container{display:flex}.report-toolbar-container .global-actions{flex-grow:1}fd-popover-body{min-width:380px}fd-popover-body.mobile{min-width:80vw}@media (max-width: 599px){.fd-dynamic-page,fd-dynamic-page-content{padding:1rem 0!important}.report-toolbar-container{flex-direction:column-reverse}.report-toolbar-container .layout-actions{flex-grow:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RenderUlvViewerDirective, selector: "[renderUlvViewer]", inputs: ["mask", "renderUlvViewer"] }, { kind: "directive", type: i3.RenderUlvPaginDirective, selector: "[renderUlvPaging]", inputs: ["mask", "pagingSetting", "renderUlvPaging"], outputs: ["pageChange"] }, { kind: "directive", type: i3.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "directive", type: i3.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "dontUseTopBound"] }, { kind: "directive", type: i3.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "directive", type: i3.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i4.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i5.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i5.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i5.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i5.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i5.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i5.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i6.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["containerElement", "reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i6.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i7.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i8.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i8.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "component", type: i8.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i8.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "component", type: i8.CardFooterComponent, selector: "fd-card-footer" }, { kind: "directive", type: i8.CardFooterActionItemDirective, selector: "[fdCardFooterActionItem]" }, { kind: "component", type: i9.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["role", "ariaLabel", "background", "autoResponsive", "size", "offset", "expandContent"] }, { kind: "component", type: i9.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "subtitle"] }, { kind: "component", type: i9.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i9.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i9.DynamicPageSubheaderComponent, selector: "fd-dynamic-page-subheader", inputs: ["collapsible", "pinnable", "collapsed", "expandLabel", "collapseLabel", "role", "id", "headerAriaLabel", "pinAriaLabel", "unpinAriaLabel"], outputs: ["collapsedChange"] }, { kind: "component", type: i9.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i9.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i10.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i10.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i10.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "component", type: i11.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i12.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i12.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i12.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: i13.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i13.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i13.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i13.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i13.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i13.DialogFooterButtonComponent, selector: "fd-dialog-footer-button" }, { kind: "component", type: i14.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i15.InitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus", "enabled", "focusLastElement"] }, { kind: "component", type: i16.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i16.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "directive", type: i16.PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "directive", type: i16.PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "component", type: i16.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i17.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i17.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i17.ToolbarSpacerComponent, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "directive", type: i17.ToolbarOverflowPriorityDirective, selector: "[fdOverflowPriority]", inputs: ["fdOverflowPriority"] }, { kind: "directive", type: i17.ToolbarOverflowGroupDirective, selector: "[fdOverflowGroup]", inputs: ["fdOverflowGroup"] }, { kind: "component", type: i18.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i19.SearchPanelComponent, selector: "bsu-search-panel", inputs: ["searchPanelUi", "hideButtons", "isSearcPanelInSideContent"], outputs: ["moChanged"] }, { kind: "component", type: i20.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i21.DynamicPageSizePipe, name: "dynamicPageSize" }, { kind: "pipe", type: i22.SapSizePipe, name: "sapSize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
126
+ BarsaUlvMainComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: BarsaUlvMainComponent, selector: "bsu-barsa-ulv-main", inputs: { viewerControl: "viewerControl", loading: "loading", viewerLoading: "viewerLoading", isReportPage: "isReportPage", deviceSize: "deviceSize", title: "title", searchPanelUi: "searchPanelUi", breadCrumbs: "breadCrumbs", allSearchPanelSettings: "allSearchPanelSettings", isAnonymous: "isAnonymous", canSaveGridSetting: "canSaveGridSetting", rtl: "rtl", selectedSearchPanelSettings: "selectedSearchPanelSettings", searchPanelMoChanged: "searchPanelMoChanged", selectedSearchPanelSettingsId: "selectedSearchPanelSettingsId", hideSearchPanel: "hideSearchPanel", pagingSetting: "pagingSetting", contentDensity: "contentDensity", context: "context", isMobile: "isMobile", standalone: "standalone", landscape: "landscape" }, outputs: { close: "close", searchPanelMoChange: "searchPanelMoChange", openManageFilters: "openManageFilters", collapsedChange: "collapsedChange", hideSearchPanelClick: "hideSearchPanelClick", filterSave: "filterSave", filterSaveAs: "filterSaveAs", pageChange: "pageChange", showFilterFieldsSetting: "showFilterFieldsSetting", manageFilters: "manageFilters", clearSearch: "clearSearch", search: "search", selectSearchPanelSettings: "selectSearchPanelSettings" }, viewQueries: [{ propertyName: "_dynamicPageComponent", first: true, predicate: DynamicPageComponent, descendants: true }, { propertyName: "dialogTemplate", first: true, predicate: ["searchpanelDialog"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<!-- <ng-container *ngIf=\"isReportPage; else reportTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n reportPageTemplate;\n context: {\n $implicit: viewerControl,\n tabMode: viewerControl.Setting?.ClassNames?.CustomUi?.Parameters?.TabMode\n }\n \"\n >\n </ng-container>\n</ng-container> -->\n<ng-container\n *ngTemplateOutlet=\"\n isReportPage ? reportPageTemplate : reportTemplate;\n context: {\n $implicit: viewerControl,\n tabMode: viewerControl?.Setting?.ClassNames?.CustomUi?.Parameters?.TabMode\n }\n \"\n>\n</ng-container>\n<bsu-mask *ngIf=\"loading\" size=\"m\"></bsu-mask>\n<ng-template #reportPageTemplate let-viewerControl let-tabMode=\"tabMode\">\n <fd-dynamic-page\n formClose\n mobile\n [attr.isMobile]=\"isMobile\"\n [isMobile]=\"isMobile\"\n [size]=\"deviceSize | dynamicPageSize\"\n [attr.tabMode]=\"tabMode\"\n [autoResponsive]=\"false\"\n >\n <fd-dynamic-page-header\n [title]=\"\n (title | bbbTranslate)\n ? (title | bbbTranslate)\n : isMobile && breadCrumbs.length\n ? breadCrumbs[breadCrumbs.length - 1].label\n : ''\n \"\n class=\"p-b0\"\n >\n <fd-breadcrumb *ngIf=\"!isMobile\">\n <ng-container *ngIf=\"breadCrumbs\">\n <ng-container\n *ngFor=\"\n let breadCrumb of breadCrumbs | slice: 0:breadCrumbs.length;\n let i = index;\n let last = last\n \"\n >\n <fd-breadcrumb-item *ngIf=\"last\">\n <bsu-breadcrumb\n [index]=\"i\"\n [isLast]=\"last\"\n [breadCrumb]=\"breadCrumb\"\n [allBreadCrumb]=\"breadCrumbs\"\n ></bsu-breadcrumb>\n </fd-breadcrumb-item>\n </ng-container>\n </ng-container>\n </fd-breadcrumb>\n <!-- <fd-dynamic-page-title-content>\u06AF\u0632\u0627\u0631\u0634 </fd-dynamic-page-title-content> -->\n\n <fd-dynamic-page-global-actions *untilInView=\"el\" style=\"min-width: auto\">\n <fd-toolbar [shouldOverflow]=\"true\" Style=\"display:none\"> </fd-toolbar>\n <!-- added this because in mobile landscape toolbar disapper -->\n <fd-toolbar\n *ngIf=\"searchPanelUi\"\n class=\"global-actions\"\n fdType=\"transparent\"\n [clearBorder]=\"true\"\n [shouldOverflow]=\"deviceSize === 's'\"\n >\n <fd-popover\n fd-toolbar-item\n #popover\n fdOverflowPriority=\"never\"\n *ngIf=\"isAnonymous === false && canSaveGridSetting\"\n >\n <fd-popover-control>\n <div style=\"display: flex; align-items: center\">\n <h3 class=\"header-search\" [attr.rtl]=\"rtl\" fd-title>\n {{\n selectedSearchPanelSettings?.IsStandard\n ? ''\n : selectedSearchPanelSettings?.Title\n }}\n <strong *ngIf=\"searchPanelMoChanged\">*</strong>\n </h3>\n <button\n fd-button\n glyph=\"slim-arrow-down\"\n fdType=\"transparent\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </div>\n </fd-popover-control>\n <fd-popover-body mobile>\n <div fd-popover-body-header>\n <div fd-bar [fdCozy]>\n <div fd-bar-left>\n <fd-bar-element>{{ 'Filters' | bbbTranslate }}</fd-bar-element>\n </div>\n </div>\n </div>\n <ul fd-list style=\"min-height: 200px; background-color: var(--sapBackgroundColor, #f7f7f7)\">\n <li\n fd-list-item\n *ngFor=\"let option of allSearchPanelSettings\"\n [selected]=\"option.Id === selectedSearchPanelSettingsId\"\n (click)=\"onSelectSearchPanelSettings(option.Id, popover)\"\n >\n <span fd-list-title>{{ option.Title }}</span>\n </li>\n </ul>\n <div fd-popover-body-footer>\n <div fd-bar [barDesign]=\"'footer'\" [fdCozy]>\n <div fd-bar-right *ngIf=\"selectedSearchPanelSettings\">\n <fd-button-bar\n *ngIf=\"!selectedSearchPanelSettings.IsPrimary && searchPanelMoChanged\"\n [label]=\"'Save' | bbbTranslate\"\n fdType=\"emphasized\"\n (click)=\"onFilterSave(popover)\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"searchPanelMoChanged\"\n [label]=\"'SaveAs' | bbbTranslate\"\n [fdType]=\"\n selectedSearchPanelSettings.IsDefault ? 'emphasized' : 'transparent'\n \"\n (click)=\"onFilterSaveAs(popover)\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'Manage' | bbbTranslate\"\n fdInitialFocus\n fdType=\"transparent\"\n (click)=\"onManageFilters(popover)\"\n >\n </fd-button-bar>\n </div>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n <fd-toolbar-spacer *ngIf=\"deviceSize !== 's'\"></fd-toolbar-spacer>\n <button\n fd-button\n *ngIf=\"isMobile\"\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n (click)=\"onShowSearchpanelDialog()\"\n [glyph]=\"'filter'\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n fdType=\"emphasized\"\n [label]=\"'Search' | bbbTranslate\"\n (click)=\"onSearch()\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdType=\"transparent\"\n fdOverflowPriority=\"low\"\n [label]=\"'Filters' | bbbTranslate\"\n (click)=\"onShowFilterFieldsSetting()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdType=\"transparent\"\n fdOverflowPriority=\"low\"\n [label]=\"'Clear' | bbbTranslate\"\n (click)=\"onClearSearch()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n fd-toolbar-item\n *ngIf=\"!isMobile && !sideContentMode\"\n fdType=\"transparent\"\n [label]=\"hideSearchPanel ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\n (click)=\"onHideSearchPanelClick()\"\n fdOverflowPriority=\"low\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </fd-toolbar>\n </fd-dynamic-page-global-actions>\n <fd-dynamic-page-layout-actions>\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"close.emit()\" title=\"Close\">\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\n </button>\n </fd-toolbar>\n </fd-dynamic-page-layout-actions>\n </fd-dynamic-page-header>\n <fd-dynamic-page-subheader\n [pinnable]=\"true\"\n [collapsible]=\"false\"\n *ngIf=\"!hideSearchPanel && searchPanelUi && !sideContentMode\"\n >\n <bsu-search-panel\n *ngIf=\"!isMobile\"\n [hideButtons]=\"true\"\n [searchPanelUi]=\"searchPanelUi\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </fd-dynamic-page-subheader>\n <fd-dynamic-page-content *ngIf=\"!tabMode\">\n <ng-container\n *ngTemplateOutlet=\"\n sideContentMode ? sideContentTemplate : viewerTemplate;\n context: { noRenderPageing: true }\n \"\n ></ng-container>\n </fd-dynamic-page-content>\n <fd-dynamic-page-footer *ngIf=\"pagingSetting?.TotalPages\">\n <!-- page footer content goes here -->\n <div fd-bar [barDesign]=\"'footer'\">\n <div fd-bar-middle>\n <ng-container\n [renderUlvPaging]=\"context\"\n [pagingSetting]=\"pagingSetting\"\n (pageChange)=\"onPageChange($event)\"\n ></ng-container>\n </div>\n </div>\n </fd-dynamic-page-footer>\n </fd-dynamic-page>\n <ng-container *ngIf=\"tabMode\">\n <ng-container *ngTemplateOutlet=\"viewerTemplate\"></ng-container>\n </ng-container>\n</ng-template>\n<ng-template #reportTemplate>\n <bsu-mask *ngIf=\"loading\" size=\"s\"></bsu-mask>\n <ng-container *ngIf=\"!hideSearchPanel && searchPanelUi && !sideContentMode\">\n <ng-container *ngTemplateOutlet=\"searchpanelTemplate; context: { hideButtons: false }\"></ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"sideContentMode ? sideContentTemplate : viewerTemplate\"> </ng-container>\n</ng-template>\n<ng-template #sideContentTemplate>\n <fd-dynamic-side-content [class.rtl]=\"rtl\" [size]=\"deviceSize | sapSize\">\n <fd-dynamic-side-content-side>\n <ng-container\n *ngTemplateOutlet=\"searchpanelTemplate; context: { isSearcPanelInSideContent: true }\"\n ></ng-container>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main [style.width]=\"deviceSize !== 's' ? mainContentWidth : null\">\n <ng-container *ngTemplateOutlet=\"viewerTemplate\"></ng-container>\n </fd-dynamic-side-content-main>\n </fd-dynamic-side-content>\n</ng-template>\n<ng-template\n #searchpanelTemplate\n let-isSearcPanelInSideContent=\"isSearcPanelInSideContent\"\n let-hideButtons=\"hideButtons\"\n>\n <ng-container *ngIf=\"!isSearcPanelInSideContent; else searchpanelCardTempate\">\n <bsu-search-panel\n *ngIf=\"!hideSearchPanel && searchPanelUi\"\n [searchPanelUi]=\"searchPanelUi\"\n [isSearcPanelInSideContent]=\"isSearcPanelInSideContent\"\n [hideButtons]=\"hideButtons\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </ng-container>\n <ng-template #searchpanelCardTempate>\n <fd-card class=\"searchpanel-card\">\n <fd-card-header>\n <h2 fd-card-title>\n <fd-icon glyph=\"filter\"></fd-icon><span>{{ 'Filter' | bbbTranslate }}</span>\n </h2>\n </fd-card-header>\n <fd-card-content> </fd-card-content>\n <fd-card-footer>\n <button\n *fdCardFooterActionItem\n fd-button\n fdType=\"emphasized\"\n [label]=\"'Search' | bbbTranslate\"\n (click)=\"onSearch()\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n [label]=\"('Delete' | bbbTranslate) + ' ' + ('Filters' | bbbTranslate)\"\n (click)=\"onClearSearch()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </fd-card-footer>\n </fd-card>\n </ng-template>\n</ng-template>\n<ng-template #viewerTemplate let-noRenderPageing=\"noRenderPageing\">\n <div\n class=\"viewer-container\"\n fillEmptySpace\n [disable]=\"isReportPage || !fillPage\"\n [decrement]=\"deviceSize !== 's' ? '100px' : '75px'\"\n [style.height]=\"viewerLoading ? '100%' : 'auto'\"\n [style.min-height]=\"isReportPage ? '100%' : null\"\n [style.position]=\"viewerLoading ? 'relative' : null\"\n >\n <bsu-mask *ngIf=\"viewerLoading\" size=\"m\"></bsu-mask>\n <ng-container *ngIf=\"viewerControl\" [renderUlvViewer]=\"viewerControl\"></ng-container>\n </div>\n <ng-container\n *ngIf=\"!noRenderPageing && pagingSetting?.TotalPages && !hidePageing\"\n [renderUlvPaging]=\"context\"\n [pagingSetting]=\"pagingSetting\"\n (pageChange)=\"onPageChange($event)\"\n ></ng-container>\n</ng-template>\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #searchpanelDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Filters' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\n </fd-dialog-header>\n <fd-dialog-body>\n <bsu-search-panel\n [hideButtons]=\"true\"\n [searchPanelUi]=\"searchPanelUi\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"emphasized\"\n (click)=\"dialog.dismiss(); onSearch()\"\n [label]=\"'Search' | bbbTranslate\"\n ></button>\n </fd-dialog-footer-button>\n <fd-dialog-footer-button>\n <button fd-button [label]=\"'Clear' | bbbTranslate\" (click)=\"onClearSearch()\"></button>\n </fd-dialog-footer-button>\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"transparent\"\n (click)=\"dialog.dismiss('Close button')\"\n [label]=\"'Cancel' | bbbTranslate\"\n ></button>\n </fd-dialog-footer-button>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;height:100%;flex-grow:1}:host ::ng-deep .fd-dynamic-page__toolbar-container{margin:0!important}:host ::ng-deep .fd-dynamic-page__collapsible-header{padding-top:0!important;padding-bottom:0!important}:host ::ng-deep .fd-dynamic-page__toolbar-container{flex:1}:host ::ng-deep .global-actions .fd-toolbar{padding:0}:host ::ng-deep fd-dynamic-page[tabMode=true] .fd-dynamic-page{height:auto!important}:host ::ng-deep fd-dynamic-page[tabMode=true] .fd-dynamic-page .fd-dynamic-page__collapsible-header-visibility-container{box-shadow:none}:host .searchpanel-card fd-card-header{pointer-events:none;cursor:default;padding:.5rem}:host .searchpanel-card h2[fd-card-title]{font-size:1rem;display:flex;align-items:center;gap:.5rem}:host .searchpanel-card h2[fd-card-title] fd-icon{font-size:1.2rem}fd-dynamic-side-content{background-color:var(--sapBaseColor);min-height:100%;height:auto}fd-dynamic-side-content-main{border:.0625rem solid var(--sapTile_SeparatorColor, #ccc)!important}fd-dynamic-side-content-side fd-card-content{padding:.5rem}fd-dynamic-page-global-actions{flex:1;width:100%}h3[rtl=true]{margin-left:5px}h3[rtl=false]{margin-right:5px}.header-search{color:var(--sapButton_TextColor, #0854a0)!important}.filter-wrapper{border-bottom:1px solid var(--sapObjectHeader_BorderColor, #d9d9d9)}.report-toolbar-container{display:flex}.report-toolbar-container .global-actions{flex-grow:1}fd-popover-body{min-width:380px}fd-popover-body.mobile{min-width:80vw}@media (max-width: 599px){.fd-dynamic-page,fd-dynamic-page-content{padding:1rem 0!important}.report-toolbar-container{flex-direction:column-reverse}.report-toolbar-container .layout-actions{flex-grow:1}}\n"], dependencies: [{ kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i2.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i2.NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "directive", type: i3.RenderUlvViewerDirective, selector: "[renderUlvViewer]", inputs: ["mask", "renderUlvViewer"] }, { kind: "directive", type: i3.RenderUlvPaginDirective, selector: "[renderUlvPaging]", inputs: ["mask", "pagingSetting", "renderUlvPaging"], outputs: ["pageChange"] }, { kind: "directive", type: i3.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "directive", type: i3.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "dontUseTopBound"] }, { kind: "directive", type: i3.FormCloseDirective, selector: "[formClose]", inputs: ["isMobile"] }, { kind: "directive", type: i3.MobileDirective, selector: "[mobile]" }, { kind: "directive", type: i4.ContentDensityDirective, selector: "[fdContentDensity]:not([fdCompact]):not([fdCondensed]):not([fdCozy]), [fdCompact]:not([fdContentDensity]):not([fdCondensed]):not([fdCozy]), [fdCondensed]:not([fdContentDensity]):not([fdCompact]):not([fdCozy]), [fdCozy]:not([fdContentDensity]):not([fdCompact]):not([fdCondensed])", inputs: ["fdContentDensity", "fdCompact", "fdCondensed", "fdCozy"], exportAs: ["fdContentDensity"] }, { kind: "component", type: i5.BarComponent, selector: "[fd-bar]", inputs: ["class", "barDesign", "inPage", "inHomePage", "size"] }, { kind: "directive", type: i5.BarLeftDirective, selector: "[fd-bar-left]" }, { kind: "directive", type: i5.BarMiddleDirective, selector: "[fd-bar-middle]" }, { kind: "directive", type: i5.BarRightDirective, selector: "[fd-bar-right]" }, { kind: "directive", type: i5.BarElementDirective, selector: "fd-bar-element", inputs: ["fullWidth", "isTitle"] }, { kind: "component", type: i5.ButtonBarComponent, selector: "fd-button-bar", inputs: ["fullWidth", "fdType", "title", "ariaLabel", "ariaLabelledby", "id"] }, { kind: "component", type: i6.BreadcrumbComponent, selector: "fd-breadcrumb", inputs: ["containerElement", "reverse", "tabIndex"], outputs: ["visibleItemsCount", "hiddenItemsCount"] }, { kind: "component", type: i6.BreadcrumbItemComponent, selector: "fd-breadcrumb-item" }, { kind: "component", type: i7.ButtonComponent, selector: "button[fd-button], a[fd-button]", inputs: ["class"], exportAs: ["fd-button"] }, { kind: "component", type: i8.CardComponent, selector: "fd-card", inputs: ["badge", "isLoading", "cardType", "id", "role"] }, { kind: "component", type: i8.CardHeaderComponent, selector: "fd-card-header", inputs: ["interactive", "tabindex"] }, { kind: "component", type: i8.CardContentComponent, selector: "fd-card-content" }, { kind: "directive", type: i8.CardTitleDirective, selector: "[fd-card-title]" }, { kind: "component", type: i8.CardFooterComponent, selector: "fd-card-footer" }, { kind: "directive", type: i8.CardFooterActionItemDirective, selector: "[fdCardFooterActionItem]" }, { kind: "component", type: i9.DynamicPageComponent, selector: "fd-dynamic-page", inputs: ["role", "ariaLabel", "background", "autoResponsive", "size", "offset", "expandContent"] }, { kind: "component", type: i9.DynamicPageHeaderComponent, selector: "fd-dynamic-page-header", inputs: ["title", "subtitle"] }, { kind: "component", type: i9.DynamicPageGlobalActionsComponent, selector: "fd-dynamic-page-global-actions" }, { kind: "component", type: i9.DynamicPageLayoutActionsComponent, selector: "fd-dynamic-page-layout-actions" }, { kind: "component", type: i9.DynamicPageSubheaderComponent, selector: "fd-dynamic-page-subheader", inputs: ["collapsible", "pinnable", "collapsed", "expandLabel", "collapseLabel", "role", "id", "headerAriaLabel", "pinAriaLabel", "unpinAriaLabel"], outputs: ["collapsedChange"] }, { kind: "component", type: i9.DynamicPageContentComponent, selector: "fd-dynamic-page-content", inputs: ["tabLabel", "id"] }, { kind: "component", type: i9.DynamicPageFooterComponent, selector: "fd-dynamic-page-footer" }, { kind: "component", type: i10.DynamicSideContentComponent, selector: "fd-dynamic-side-content", inputs: ["position", "size", "id"] }, { kind: "component", type: i10.DynamicSideContentSideComponent, selector: "fd-dynamic-side-content-side", inputs: ["id"] }, { kind: "component", type: i10.DynamicSideContentMainComponent, selector: "fd-dynamic-side-content-main", inputs: ["id"] }, { kind: "component", type: i11.IconComponent, selector: "fd-icon", inputs: ["glyph", "font", "class", "ariaLabel"] }, { kind: "component", type: i12.ListComponent, selector: "[fd-list], [fdList]", inputs: ["dropdownMode", "multiInputMode", "mobileMode", "hasMessage", "noBorder", "navigationIndicator", "selection", "keyboardSupport", "byline"], outputs: ["focusEscapeList"] }, { kind: "component", type: i12.ListItemComponent, selector: "[fdListItem] ,[fd-list-item]", inputs: ["selected", "ariaDescribedBy", "noData", "action", "interactive", "growing", "counter", "unread", "selectedListItemScreenReaderText", "navigatedListItemScreenReaderText", "navigatableListItemScreenReaderText"], outputs: ["keyDown"] }, { kind: "directive", type: i12.ListTitleDirective, selector: "[fd-list-title], [fdListTitle]", inputs: ["wrap"] }, { kind: "component", type: i13.DialogComponent, selector: "fd-dialog", inputs: ["class", "dialogRef", "dialogConfig"] }, { kind: "component", type: i13.DialogBodyComponent, selector: "fd-dialog-body" }, { kind: "component", type: i13.DialogFooterComponent, selector: "fd-dialog-footer" }, { kind: "component", type: i13.DialogHeaderComponent, selector: "fd-dialog-header" }, { kind: "component", type: i13.DialogCloseButtonComponent, selector: "[fd-dialog-close-button]", inputs: ["mobile", "title"] }, { kind: "component", type: i13.DialogFooterButtonComponent, selector: "fd-dialog-footer-button" }, { kind: "component", type: i14.TitleComponent, selector: "h1[fd-title], h2[fd-title], h3[fd-title], h4[fd-title], h5[fd-title], h6[fd-title]", inputs: ["headerSize", "wrap"], exportAs: ["fd-title"] }, { kind: "directive", type: i15.InitialFocusDirective, selector: "[fdInitialFocus], [fd-initial-focus]", inputs: ["fd-initial-focus", "enabled", "focusLastElement"] }, { kind: "component", type: i16.PopoverControlComponent, selector: "fd-popover-control" }, { kind: "component", type: i16.PopoverBodyComponent, selector: "fd-popover-body" }, { kind: "directive", type: i16.PopoverBodyHeaderDirective, selector: "[fdPopoverBodyHeader], [fd-popover-body-header]" }, { kind: "directive", type: i16.PopoverBodyFooterDirective, selector: "[fdPopoverBodyFooter], [fd-popover-body-footer]" }, { kind: "component", type: i16.PopoverComponent, selector: "fd-popover", inputs: ["title", "trigger", "fixedPosition", "id", "mobile", "mobileConfig"] }, { kind: "component", type: i17.ToolbarComponent, selector: "fd-toolbar", inputs: ["class", "shouldOverflow", "fdType", "hasTitle", "title", "active", "clearBorder", "forceOverflow", "tabindex"] }, { kind: "directive", type: i17.ToolbarItemDirective, selector: "[fd-toolbar-item]" }, { kind: "component", type: i17.ToolbarSpacerComponent, selector: "fd-toolbar-spacer", inputs: ["width", "class", "fixed"] }, { kind: "directive", type: i17.ToolbarOverflowPriorityDirective, selector: "[fdOverflowPriority]", inputs: ["fdOverflowPriority"] }, { kind: "directive", type: i17.ToolbarOverflowGroupDirective, selector: "[fdOverflowGroup]", inputs: ["fdOverflowGroup"] }, { kind: "component", type: i18.MaskComponent, selector: "bsu-mask", inputs: ["size", "top"] }, { kind: "component", type: i19.SearchPanelComponent, selector: "bsu-search-panel", inputs: ["searchPanelUi", "hideButtons", "isSearcPanelInSideContent"], outputs: ["moChanged"] }, { kind: "component", type: i20.BreadcrumbComponent, selector: "bsu-breadcrumb", inputs: ["breadCrumb", "allBreadCrumb", "isLast", "index"] }, { kind: "pipe", type: i2.SlicePipe, name: "slice" }, { kind: "pipe", type: i3.BbbTranslatePipe, name: "bbbTranslate" }, { kind: "pipe", type: i21.DynamicPageSizePipe, name: "dynamicPageSize" }, { kind: "pipe", type: i22.SapSizePipe, name: "sapSize" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
127
127
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: BarsaUlvMainComponent, decorators: [{
128
128
  type: Component,
129
- args: [{ selector: 'bsu-barsa-ulv-main', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <ng-container *ngIf=\"isReportPage; else reportTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n reportPageTemplate;\n context: {\n $implicit: viewerControl,\n tabMode: viewerControl.Setting?.ClassNames?.CustomUi?.Parameters?.TabMode\n }\n \"\n >\n </ng-container>\n</ng-container> -->\n<ng-container\n *ngTemplateOutlet=\"\n isReportPage ? reportPageTemplate : reportTemplate;\n context: {\n $implicit: viewerControl,\n tabMode: viewerControl?.Setting?.ClassNames?.CustomUi?.Parameters?.TabMode\n }\n \"\n>\n</ng-container>\n<bsu-mask *ngIf=\"loading\" size=\"m\"></bsu-mask>\n<ng-template #reportPageTemplate let-viewerControl let-tabMode=\"tabMode\">\n <fd-dynamic-page\n formClose\n mobile\n [attr.isMobile]=\"isMobile\"\n [isMobile]=\"isMobile\"\n [size]=\"deviceSize | dynamicPageSize\"\n [attr.tabMode]=\"tabMode\"\n [autoResponsive]=\"false\"\n >\n <fd-dynamic-page-header\n [title]=\"\n (title | bbbTranslate)\n ? (title | bbbTranslate)\n : isMobile && breadCrumbs.length\n ? breadCrumbs[breadCrumbs.length - 1].label\n : ''\n \"\n class=\"p-b0\"\n >\n <fd-breadcrumb *ngIf=\"!isMobile\">\n <ng-container *ngIf=\"breadCrumbs\">\n <ng-container\n *ngFor=\"\n let breadCrumb of breadCrumbs | slice: 0:breadCrumbs.length;\n let i = index;\n let last = last\n \"\n >\n <fd-breadcrumb-item *ngIf=\"last\">\n <bsu-breadcrumb\n [index]=\"i\"\n [isLast]=\"last\"\n [breadCrumb]=\"breadCrumb\"\n [allBreadCrumb]=\"breadCrumbs\"\n ></bsu-breadcrumb>\n </fd-breadcrumb-item>\n </ng-container>\n </ng-container>\n </fd-breadcrumb>\n <!-- <fd-dynamic-page-title-content>\u06AF\u0632\u0627\u0631\u0634 </fd-dynamic-page-title-content> -->\n\n <fd-dynamic-page-global-actions *untilInView=\"el\" style=\"min-width: auto\">\n <fd-toolbar [shouldOverflow]=\"true\" Style=\"display:none\"> </fd-toolbar>\n <!-- added this because in mobile landscape toolbar disapper -->\n <fd-toolbar\n *ngIf=\"searchPanelUi\"\n class=\"global-actions\"\n fdType=\"transparent\"\n [clearBorder]=\"true\"\n [shouldOverflow]=\"deviceSize === 's'\"\n >\n <fd-popover\n fd-toolbar-item\n #popover\n fdOverflowPriority=\"never\"\n *ngIf=\"isAnonymous === false && canSaveGridSetting\"\n >\n <fd-popover-control>\n <div style=\"display: flex; align-items: center\">\n <h3 class=\"header-search\" [attr.rtl]=\"rtl\" fd-title>\n {{\n selectedSearchPanelSettings?.IsStandard\n ? ''\n : selectedSearchPanelSettings?.Title\n }}\n <strong *ngIf=\"searchPanelMoChanged\">*</strong>\n </h3>\n <button\n fd-button\n glyph=\"slim-arrow-down\"\n fdType=\"transparent\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </div>\n </fd-popover-control>\n <fd-popover-body mobile>\n <div fd-popover-body-header>\n <div fd-bar [fdCozy]>\n <div fd-bar-left>\n <fd-bar-element>{{ 'Filters' | bbbTranslate }}</fd-bar-element>\n </div>\n </div>\n </div>\n <ul fd-list style=\"min-height: 200px; background-color: var(--sapBackgroundColor, #f7f7f7)\">\n <li\n fd-list-item\n *ngFor=\"let option of allSearchPanelSettings\"\n [selected]=\"option.Id === selectedSearchPanelSettingsId\"\n (click)=\"onSelectSearchPanelSettings(option.Id, popover)\"\n >\n <span fd-list-title>{{ option.Title }}</span>\n </li>\n </ul>\n <div fd-popover-body-footer>\n <div fd-bar [barDesign]=\"'footer'\" [fdCozy]>\n <div fd-bar-right *ngIf=\"selectedSearchPanelSettings\">\n <fd-button-bar\n *ngIf=\"!selectedSearchPanelSettings.IsPrimary && searchPanelMoChanged\"\n [label]=\"'Save' | bbbTranslate\"\n fdType=\"emphasized\"\n (click)=\"onFilterSave(popover)\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"searchPanelMoChanged\"\n [label]=\"'SaveAs' | bbbTranslate\"\n [fdType]=\"\n selectedSearchPanelSettings.IsDefault ? 'emphasized' : 'transparent'\n \"\n (click)=\"onFilterSaveAs(popover)\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'Manage' | bbbTranslate\"\n fdInitialFocus\n fdType=\"transparent\"\n (click)=\"onManageFilters(popover)\"\n >\n </fd-button-bar>\n </div>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n <fd-toolbar-spacer *ngIf=\"deviceSize !== 's'\"></fd-toolbar-spacer>\n <button\n fd-button\n *ngIf=\"isMobile\"\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n (click)=\"onShowSearchpanelDialog()\"\n [glyph]=\"'filter'\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n fdType=\"emphasized\"\n [label]=\"'Search' | bbbTranslate\"\n (click)=\"onSearch()\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdType=\"transparent\"\n fdOverflowPriority=\"low\"\n [label]=\"'Filters' | bbbTranslate\"\n (click)=\"onShowFilterFieldsSetting()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdType=\"transparent\"\n fdOverflowPriority=\"low\"\n [label]=\"'Clear' | bbbTranslate\"\n (click)=\"onClearSearch()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n fd-toolbar-item\n *ngIf=\"!isMobile && !sideContentMode\"\n fdType=\"transparent\"\n [label]=\"hideSearchPanel ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\n (click)=\"onHideSearchPanelClick()\"\n fdOverflowPriority=\"low\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </fd-toolbar>\n </fd-dynamic-page-global-actions>\n <fd-dynamic-page-layout-actions>\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"close.emit()\" title=\"Close\">\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\n </button>\n </fd-toolbar>\n </fd-dynamic-page-layout-actions>\n </fd-dynamic-page-header>\n <fd-dynamic-page-subheader\n [pinnable]=\"true\"\n [collapsible]=\"false\"\n *ngIf=\"!hideSearchPanel && searchPanelUi && !sideContentMode\"\n >\n <bsu-search-panel\n *ngIf=\"!isMobile\"\n [hideButtons]=\"true\"\n [searchPanelUi]=\"searchPanelUi\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </fd-dynamic-page-subheader>\n <fd-dynamic-page-content *ngIf=\"!tabMode\">\n <ng-container\n *ngTemplateOutlet=\"\n sideContentMode ? sideContentTemplate : viewerTemplate;\n context: { noRenderPageing: true }\n \"\n ></ng-container>\n </fd-dynamic-page-content>\n <fd-dynamic-page-footer *ngIf=\"pagingSetting?.TotalPages\">\n <!-- page footer content goes here -->\n <div fd-bar [barDesign]=\"'footer'\">\n <div fd-bar-middle>\n <ng-container\n [renderUlvPaging]=\"context\"\n [pagingSetting]=\"pagingSetting\"\n (pageChange)=\"onPageChange($event)\"\n ></ng-container>\n </div>\n </div>\n </fd-dynamic-page-footer>\n </fd-dynamic-page>\n <ng-container *ngIf=\"tabMode\">\n <ng-container *ngTemplateOutlet=\"viewerTemplate\"></ng-container>\n </ng-container>\n</ng-template>\n<ng-template #reportTemplate>\n <bsu-mask *ngIf=\"loading\" size=\"s\"></bsu-mask>\n <ng-container *ngIf=\"!hideSearchPanel && searchPanelUi && !sideContentMode\">\n <ng-container *ngTemplateOutlet=\"searchpanelTemplate\"></ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"sideContentMode ? sideContentTemplate : viewerTemplate\"> </ng-container>\n</ng-template>\n<ng-template #sideContentTemplate>\n <fd-dynamic-side-content [class.rtl]=\"rtl\" [size]=\"deviceSize | sapSize\">\n <fd-dynamic-side-content-side>\n <ng-container\n *ngTemplateOutlet=\"searchpanelTemplate; context: { isSearcPanelInSideContent: true }\"\n ></ng-container>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main [style.width]=\"deviceSize !== 's' ? mainContentWidth : null\">\n <ng-container *ngTemplateOutlet=\"viewerTemplate\"></ng-container>\n </fd-dynamic-side-content-main>\n </fd-dynamic-side-content>\n</ng-template>\n<ng-template #searchpanelTemplate let-isSearcPanelInSideContent=\"isSearcPanelInSideContent\">\n <ng-container *ngIf=\"!isSearcPanelInSideContent; else searchpanelCardTempate\">\n <bsu-search-panel\n *ngIf=\"!hideSearchPanel && searchPanelUi\"\n [searchPanelUi]=\"searchPanelUi\"\n [isSearcPanelInSideContent]=\"isSearcPanelInSideContent\"\n [hideButtons]=\"true\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </ng-container>\n <ng-template #searchpanelCardTempate>\n <fd-card class=\"searchpanel-card\">\n <fd-card-header>\n <h2 fd-card-title>\n <fd-icon glyph=\"filter\"></fd-icon><span>{{ 'Filter' | bbbTranslate }}</span>\n </h2>\n </fd-card-header>\n <fd-card-content> </fd-card-content>\n <fd-card-footer>\n <button\n *fdCardFooterActionItem\n fd-button\n fdType=\"emphasized\"\n [label]=\"'Search' | bbbTranslate\"\n (click)=\"onSearch()\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n [label]=\"('Delete' | bbbTranslate) + ' ' + ('Filters' | bbbTranslate)\"\n (click)=\"onClearSearch()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </fd-card-footer>\n </fd-card>\n </ng-template>\n</ng-template>\n<ng-template #viewerTemplate let-noRenderPageing=\"noRenderPageing\">\n <div\n class=\"viewer-container\"\n fillEmptySpace\n [disable]=\"isReportPage || !fillPage\"\n [decrement]=\"deviceSize !== 's' ? '100px' : '75px'\"\n [style.height]=\"viewerLoading ? '100%' : 'auto'\"\n [style.min-height]=\"isReportPage ? '100%' : null\"\n [style.position]=\"viewerLoading ? 'relative' : null\"\n >\n <bsu-mask *ngIf=\"viewerLoading\" size=\"m\"></bsu-mask>\n <ng-container *ngIf=\"viewerControl\" [renderUlvViewer]=\"viewerControl\"></ng-container>\n </div>\n <ng-container\n *ngIf=\"!noRenderPageing && pagingSetting?.TotalPages && !hidePageing\"\n [renderUlvPaging]=\"context\"\n [pagingSetting]=\"pagingSetting\"\n (pageChange)=\"onPageChange($event)\"\n ></ng-container>\n</ng-template>\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #searchpanelDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Filters' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\n </fd-dialog-header>\n <fd-dialog-body>\n <bsu-search-panel\n [hideButtons]=\"true\"\n [searchPanelUi]=\"searchPanelUi\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"emphasized\"\n (click)=\"dialog.dismiss(); onSearch()\"\n [label]=\"'Search' | bbbTranslate\"\n ></button>\n </fd-dialog-footer-button>\n <fd-dialog-footer-button>\n <button fd-button [label]=\"'Clear' | bbbTranslate\" (click)=\"onClearSearch()\"></button>\n </fd-dialog-footer-button>\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"transparent\"\n (click)=\"dialog.dismiss('Close button')\"\n [label]=\"'Cancel' | bbbTranslate\"\n ></button>\n </fd-dialog-footer-button>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;height:100%;flex-grow:1}:host ::ng-deep .fd-dynamic-page__toolbar-container{margin:0!important}:host ::ng-deep .fd-dynamic-page__collapsible-header{padding-top:0!important;padding-bottom:0!important}:host ::ng-deep .fd-dynamic-page__toolbar-container{flex:1}:host ::ng-deep .global-actions .fd-toolbar{padding:0}:host ::ng-deep fd-dynamic-page[tabMode=true] .fd-dynamic-page{height:auto!important}:host ::ng-deep fd-dynamic-page[tabMode=true] .fd-dynamic-page .fd-dynamic-page__collapsible-header-visibility-container{box-shadow:none}:host .searchpanel-card fd-card-header{pointer-events:none;cursor:default;padding:.5rem}:host .searchpanel-card h2[fd-card-title]{font-size:1rem;display:flex;align-items:center;gap:.5rem}:host .searchpanel-card h2[fd-card-title] fd-icon{font-size:1.2rem}fd-dynamic-side-content{background-color:var(--sapBaseColor);min-height:100%;height:auto}fd-dynamic-side-content-main{border:.0625rem solid var(--sapTile_SeparatorColor, #ccc)!important}fd-dynamic-side-content-side fd-card-content{padding:.5rem}fd-dynamic-page-global-actions{flex:1;width:100%}h3[rtl=true]{margin-left:5px}h3[rtl=false]{margin-right:5px}.header-search{color:var(--sapButton_TextColor, #0854a0)!important}.filter-wrapper{border-bottom:1px solid var(--sapObjectHeader_BorderColor, #d9d9d9)}.report-toolbar-container{display:flex}.report-toolbar-container .global-actions{flex-grow:1}fd-popover-body{min-width:380px}fd-popover-body.mobile{min-width:80vw}@media (max-width: 599px){.fd-dynamic-page,fd-dynamic-page-content{padding:1rem 0!important}.report-toolbar-container{flex-direction:column-reverse}.report-toolbar-container .layout-actions{flex-grow:1}}\n"] }]
129
+ args: [{ selector: 'bsu-barsa-ulv-main', changeDetection: ChangeDetectionStrategy.OnPush, template: "<!-- <ng-container *ngIf=\"isReportPage; else reportTemplate\">\n <ng-container\n *ngTemplateOutlet=\"\n reportPageTemplate;\n context: {\n $implicit: viewerControl,\n tabMode: viewerControl.Setting?.ClassNames?.CustomUi?.Parameters?.TabMode\n }\n \"\n >\n </ng-container>\n</ng-container> -->\n<ng-container\n *ngTemplateOutlet=\"\n isReportPage ? reportPageTemplate : reportTemplate;\n context: {\n $implicit: viewerControl,\n tabMode: viewerControl?.Setting?.ClassNames?.CustomUi?.Parameters?.TabMode\n }\n \"\n>\n</ng-container>\n<bsu-mask *ngIf=\"loading\" size=\"m\"></bsu-mask>\n<ng-template #reportPageTemplate let-viewerControl let-tabMode=\"tabMode\">\n <fd-dynamic-page\n formClose\n mobile\n [attr.isMobile]=\"isMobile\"\n [isMobile]=\"isMobile\"\n [size]=\"deviceSize | dynamicPageSize\"\n [attr.tabMode]=\"tabMode\"\n [autoResponsive]=\"false\"\n >\n <fd-dynamic-page-header\n [title]=\"\n (title | bbbTranslate)\n ? (title | bbbTranslate)\n : isMobile && breadCrumbs.length\n ? breadCrumbs[breadCrumbs.length - 1].label\n : ''\n \"\n class=\"p-b0\"\n >\n <fd-breadcrumb *ngIf=\"!isMobile\">\n <ng-container *ngIf=\"breadCrumbs\">\n <ng-container\n *ngFor=\"\n let breadCrumb of breadCrumbs | slice: 0:breadCrumbs.length;\n let i = index;\n let last = last\n \"\n >\n <fd-breadcrumb-item *ngIf=\"last\">\n <bsu-breadcrumb\n [index]=\"i\"\n [isLast]=\"last\"\n [breadCrumb]=\"breadCrumb\"\n [allBreadCrumb]=\"breadCrumbs\"\n ></bsu-breadcrumb>\n </fd-breadcrumb-item>\n </ng-container>\n </ng-container>\n </fd-breadcrumb>\n <!-- <fd-dynamic-page-title-content>\u06AF\u0632\u0627\u0631\u0634 </fd-dynamic-page-title-content> -->\n\n <fd-dynamic-page-global-actions *untilInView=\"el\" style=\"min-width: auto\">\n <fd-toolbar [shouldOverflow]=\"true\" Style=\"display:none\"> </fd-toolbar>\n <!-- added this because in mobile landscape toolbar disapper -->\n <fd-toolbar\n *ngIf=\"searchPanelUi\"\n class=\"global-actions\"\n fdType=\"transparent\"\n [clearBorder]=\"true\"\n [shouldOverflow]=\"deviceSize === 's'\"\n >\n <fd-popover\n fd-toolbar-item\n #popover\n fdOverflowPriority=\"never\"\n *ngIf=\"isAnonymous === false && canSaveGridSetting\"\n >\n <fd-popover-control>\n <div style=\"display: flex; align-items: center\">\n <h3 class=\"header-search\" [attr.rtl]=\"rtl\" fd-title>\n {{\n selectedSearchPanelSettings?.IsStandard\n ? ''\n : selectedSearchPanelSettings?.Title\n }}\n <strong *ngIf=\"searchPanelMoChanged\">*</strong>\n </h3>\n <button\n fd-button\n glyph=\"slim-arrow-down\"\n fdType=\"transparent\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </div>\n </fd-popover-control>\n <fd-popover-body mobile>\n <div fd-popover-body-header>\n <div fd-bar [fdCozy]>\n <div fd-bar-left>\n <fd-bar-element>{{ 'Filters' | bbbTranslate }}</fd-bar-element>\n </div>\n </div>\n </div>\n <ul fd-list style=\"min-height: 200px; background-color: var(--sapBackgroundColor, #f7f7f7)\">\n <li\n fd-list-item\n *ngFor=\"let option of allSearchPanelSettings\"\n [selected]=\"option.Id === selectedSearchPanelSettingsId\"\n (click)=\"onSelectSearchPanelSettings(option.Id, popover)\"\n >\n <span fd-list-title>{{ option.Title }}</span>\n </li>\n </ul>\n <div fd-popover-body-footer>\n <div fd-bar [barDesign]=\"'footer'\" [fdCozy]>\n <div fd-bar-right *ngIf=\"selectedSearchPanelSettings\">\n <fd-button-bar\n *ngIf=\"!selectedSearchPanelSettings.IsPrimary && searchPanelMoChanged\"\n [label]=\"'Save' | bbbTranslate\"\n fdType=\"emphasized\"\n (click)=\"onFilterSave(popover)\"\n >\n </fd-button-bar>\n <fd-button-bar\n *ngIf=\"searchPanelMoChanged\"\n [label]=\"'SaveAs' | bbbTranslate\"\n [fdType]=\"\n selectedSearchPanelSettings.IsDefault ? 'emphasized' : 'transparent'\n \"\n (click)=\"onFilterSaveAs(popover)\"\n >\n </fd-button-bar>\n <fd-button-bar\n [label]=\"'Manage' | bbbTranslate\"\n fdInitialFocus\n fdType=\"transparent\"\n (click)=\"onManageFilters(popover)\"\n >\n </fd-button-bar>\n </div>\n </div>\n </div>\n </fd-popover-body>\n </fd-popover>\n <fd-toolbar-spacer *ngIf=\"deviceSize !== 's'\"></fd-toolbar-spacer>\n <button\n fd-button\n *ngIf=\"isMobile\"\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n (click)=\"onShowSearchpanelDialog()\"\n [glyph]=\"'filter'\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdOverflowPriority=\"never\"\n fdType=\"emphasized\"\n [label]=\"'Search' | bbbTranslate\"\n (click)=\"onSearch()\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdType=\"transparent\"\n fdOverflowPriority=\"low\"\n [label]=\"'Filters' | bbbTranslate\"\n (click)=\"onShowFilterFieldsSetting()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n *ngIf=\"!isMobile && !sideContentMode\"\n fd-toolbar-item\n fdType=\"transparent\"\n fdOverflowPriority=\"low\"\n [label]=\"'Clear' | bbbTranslate\"\n (click)=\"onClearSearch()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n fd-button\n fd-toolbar-item\n *ngIf=\"!isMobile && !sideContentMode\"\n fdType=\"transparent\"\n [label]=\"hideSearchPanel ? ('Show' | bbbTranslate) : ('Hide' | bbbTranslate)\"\n (click)=\"onHideSearchPanelClick()\"\n fdOverflowPriority=\"low\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </fd-toolbar>\n </fd-dynamic-page-global-actions>\n <fd-dynamic-page-layout-actions>\n <fd-toolbar fdType=\"transparent\" [clearBorder]=\"true\">\n <button fd-button fdType=\"transparent\" aria-label=\"Close\" (click)=\"close.emit()\" title=\"Close\">\n <i [class]=\"'sap-icon--' + (isMobile ? (rtl ? 'arrow-right' : 'arrow-left') : 'decline')\"></i>\n </button>\n </fd-toolbar>\n </fd-dynamic-page-layout-actions>\n </fd-dynamic-page-header>\n <fd-dynamic-page-subheader\n [pinnable]=\"true\"\n [collapsible]=\"false\"\n *ngIf=\"!hideSearchPanel && searchPanelUi && !sideContentMode\"\n >\n <bsu-search-panel\n *ngIf=\"!isMobile\"\n [hideButtons]=\"true\"\n [searchPanelUi]=\"searchPanelUi\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </fd-dynamic-page-subheader>\n <fd-dynamic-page-content *ngIf=\"!tabMode\">\n <ng-container\n *ngTemplateOutlet=\"\n sideContentMode ? sideContentTemplate : viewerTemplate;\n context: { noRenderPageing: true }\n \"\n ></ng-container>\n </fd-dynamic-page-content>\n <fd-dynamic-page-footer *ngIf=\"pagingSetting?.TotalPages\">\n <!-- page footer content goes here -->\n <div fd-bar [barDesign]=\"'footer'\">\n <div fd-bar-middle>\n <ng-container\n [renderUlvPaging]=\"context\"\n [pagingSetting]=\"pagingSetting\"\n (pageChange)=\"onPageChange($event)\"\n ></ng-container>\n </div>\n </div>\n </fd-dynamic-page-footer>\n </fd-dynamic-page>\n <ng-container *ngIf=\"tabMode\">\n <ng-container *ngTemplateOutlet=\"viewerTemplate\"></ng-container>\n </ng-container>\n</ng-template>\n<ng-template #reportTemplate>\n <bsu-mask *ngIf=\"loading\" size=\"s\"></bsu-mask>\n <ng-container *ngIf=\"!hideSearchPanel && searchPanelUi && !sideContentMode\">\n <ng-container *ngTemplateOutlet=\"searchpanelTemplate; context: { hideButtons: false }\"></ng-container>\n </ng-container>\n <ng-container *ngTemplateOutlet=\"sideContentMode ? sideContentTemplate : viewerTemplate\"> </ng-container>\n</ng-template>\n<ng-template #sideContentTemplate>\n <fd-dynamic-side-content [class.rtl]=\"rtl\" [size]=\"deviceSize | sapSize\">\n <fd-dynamic-side-content-side>\n <ng-container\n *ngTemplateOutlet=\"searchpanelTemplate; context: { isSearcPanelInSideContent: true }\"\n ></ng-container>\n </fd-dynamic-side-content-side>\n <fd-dynamic-side-content-main [style.width]=\"deviceSize !== 's' ? mainContentWidth : null\">\n <ng-container *ngTemplateOutlet=\"viewerTemplate\"></ng-container>\n </fd-dynamic-side-content-main>\n </fd-dynamic-side-content>\n</ng-template>\n<ng-template\n #searchpanelTemplate\n let-isSearcPanelInSideContent=\"isSearcPanelInSideContent\"\n let-hideButtons=\"hideButtons\"\n>\n <ng-container *ngIf=\"!isSearcPanelInSideContent; else searchpanelCardTempate\">\n <bsu-search-panel\n *ngIf=\"!hideSearchPanel && searchPanelUi\"\n [searchPanelUi]=\"searchPanelUi\"\n [isSearcPanelInSideContent]=\"isSearcPanelInSideContent\"\n [hideButtons]=\"hideButtons\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </ng-container>\n <ng-template #searchpanelCardTempate>\n <fd-card class=\"searchpanel-card\">\n <fd-card-header>\n <h2 fd-card-title>\n <fd-icon glyph=\"filter\"></fd-icon><span>{{ 'Filter' | bbbTranslate }}</span>\n </h2>\n </fd-card-header>\n <fd-card-content> </fd-card-content>\n <fd-card-footer>\n <button\n *fdCardFooterActionItem\n fd-button\n fdType=\"emphasized\"\n [label]=\"'Search' | bbbTranslate\"\n (click)=\"onSearch()\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n <button\n *fdCardFooterActionItem\n fd-button\n fdType=\"transparent\"\n [label]=\"('Delete' | bbbTranslate) + ' ' + ('Filters' | bbbTranslate)\"\n (click)=\"onClearSearch()\"\n [fdOverflowGroup]=\"1\"\n [fdContentDensity]=\"contentDensity\"\n ></button>\n </fd-card-footer>\n </fd-card>\n </ng-template>\n</ng-template>\n<ng-template #viewerTemplate let-noRenderPageing=\"noRenderPageing\">\n <div\n class=\"viewer-container\"\n fillEmptySpace\n [disable]=\"isReportPage || !fillPage\"\n [decrement]=\"deviceSize !== 's' ? '100px' : '75px'\"\n [style.height]=\"viewerLoading ? '100%' : 'auto'\"\n [style.min-height]=\"isReportPage ? '100%' : null\"\n [style.position]=\"viewerLoading ? 'relative' : null\"\n >\n <bsu-mask *ngIf=\"viewerLoading\" size=\"m\"></bsu-mask>\n <ng-container *ngIf=\"viewerControl\" [renderUlvViewer]=\"viewerControl\"></ng-container>\n </div>\n <ng-container\n *ngIf=\"!noRenderPageing && pagingSetting?.TotalPages && !hidePageing\"\n [renderUlvPaging]=\"context\"\n [pagingSetting]=\"pagingSetting\"\n (pageChange)=\"onPageChange($event)\"\n ></ng-container>\n</ng-template>\n<ng-template let-dialog let-dialogConfig=\"dialogConfig\" #searchpanelDialog>\n <fd-dialog [dialogConfig]=\"dialogConfig\" [dialogRef]=\"dialog\">\n <fd-dialog-header>\n <h1 id=\"fd-dialog-header-10\" fd-title>{{ 'Filters' | bbbTranslate }}</h1>\n <button fd-dialog-close-button (click)=\"dialog.dismiss('Close button')\"></button>\n </fd-dialog-header>\n <fd-dialog-body>\n <bsu-search-panel\n [hideButtons]=\"true\"\n [searchPanelUi]=\"searchPanelUi\"\n (moChanged)=\"onSearchPanelMoChanged()\"\n ></bsu-search-panel>\n </fd-dialog-body>\n\n <fd-dialog-footer>\n <fd-dialog-footer-button>\n <button\n fd-button\n fd-initial-focus\n fdType=\"emphasized\"\n (click)=\"dialog.dismiss(); onSearch()\"\n [label]=\"'Search' | bbbTranslate\"\n ></button>\n </fd-dialog-footer-button>\n <fd-dialog-footer-button>\n <button fd-button [label]=\"'Clear' | bbbTranslate\" (click)=\"onClearSearch()\"></button>\n </fd-dialog-footer-button>\n <fd-dialog-footer-button>\n <button\n fd-button\n fdType=\"transparent\"\n (click)=\"dialog.dismiss('Close button')\"\n [label]=\"'Cancel' | bbbTranslate\"\n ></button>\n </fd-dialog-footer-button>\n </fd-dialog-footer>\n </fd-dialog>\n</ng-template>\n", styles: [":host{display:block;height:100%;flex-grow:1}:host ::ng-deep .fd-dynamic-page__toolbar-container{margin:0!important}:host ::ng-deep .fd-dynamic-page__collapsible-header{padding-top:0!important;padding-bottom:0!important}:host ::ng-deep .fd-dynamic-page__toolbar-container{flex:1}:host ::ng-deep .global-actions .fd-toolbar{padding:0}:host ::ng-deep fd-dynamic-page[tabMode=true] .fd-dynamic-page{height:auto!important}:host ::ng-deep fd-dynamic-page[tabMode=true] .fd-dynamic-page .fd-dynamic-page__collapsible-header-visibility-container{box-shadow:none}:host .searchpanel-card fd-card-header{pointer-events:none;cursor:default;padding:.5rem}:host .searchpanel-card h2[fd-card-title]{font-size:1rem;display:flex;align-items:center;gap:.5rem}:host .searchpanel-card h2[fd-card-title] fd-icon{font-size:1.2rem}fd-dynamic-side-content{background-color:var(--sapBaseColor);min-height:100%;height:auto}fd-dynamic-side-content-main{border:.0625rem solid var(--sapTile_SeparatorColor, #ccc)!important}fd-dynamic-side-content-side fd-card-content{padding:.5rem}fd-dynamic-page-global-actions{flex:1;width:100%}h3[rtl=true]{margin-left:5px}h3[rtl=false]{margin-right:5px}.header-search{color:var(--sapButton_TextColor, #0854a0)!important}.filter-wrapper{border-bottom:1px solid var(--sapObjectHeader_BorderColor, #d9d9d9)}.report-toolbar-container{display:flex}.report-toolbar-container .global-actions{flex-grow:1}fd-popover-body{min-width:380px}fd-popover-body.mobile{min-width:80vw}@media (max-width: 599px){.fd-dynamic-page,fd-dynamic-page-content{padding:1rem 0!important}.report-toolbar-container{flex-direction:column-reverse}.report-toolbar-container .layout-actions{flex-grow:1}}\n"] }]
130
130
  }], ctorParameters: function () { return [{ type: i0.ElementRef }, { type: i1.DialogService }]; }, propDecorators: { _dynamicPageComponent: [{
131
131
  type: ViewChild,
132
132
  args: [DynamicPageComponent]
@@ -204,4 +204,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImpor
204
204
  }], selectSearchPanelSettings: [{
205
205
  type: Output
206
206
  }] } });
207
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdWx2LW1haW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdWx2LW1haW4vYmFyc2EtdWx2LW1haW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdWx2LW1haW4vYmFyc2EtdWx2LW1haW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosU0FBUyxFQUlaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUIsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBRUgsYUFBYSxFQUNiLGlCQUFpQixFQUVqQixRQUFRLEVBRVgsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUTlCLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxhQUFhO0lBNENwRCxZQUFtQixFQUFjLEVBQVksY0FBNkI7UUFDdEUsS0FBSyxFQUFFLENBQUM7UUFETyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVksbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFuQmhFLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDOUMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFF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QkFBeUI7c0JBQWxDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY1BhZ2VDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXG4gICAgQmFzZUNvbXBvbmVudCxcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcbiAgICBCcmVhZENydW1iSW5mbyxcbiAgICBCYXJzYUFwaSxcbiAgICBQYWdpbmdTZXR0aW5nXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdWx2LW1haW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS11bHYtbWFpbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdWx2LW1haW4uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVVsdk1haW5Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKER5bmFtaWNQYWdlQ29tcG9uZW50KSBfZHluYW1pY1BhZ2VDb21wb25lbnQ6IER5bmFtaWNQYWdlQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaHBhbmVsRGlhbG9nJykgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgdmlld2VyQ29udHJvbDogYW55O1xuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgQElucHV0KCkgdmlld2VyTG9hZGluZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc1JlcG9ydFBhZ2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2VhcmNoUGFuZWxVaTogYW55O1xuICAgIEBJbnB1dCgpIGJyZWFkQ3J1bWJzOiBCcmVhZENydW1iSW5mb1tdO1xuICAgIEBJbnB1dCgpIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3M6IGFueVtdO1xuICAgIEBJbnB1dCgpIGlzQW5vbnltb3VzOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNhblNhdmVHcmlkU2V0dGluZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzOiBhbnk7XG4gICAgQElucHV0KCkgc2VhcmNoUGFuZWxNb0NoYW5nZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBoaWRlU2VhcmNoUGFuZWw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcGFnaW5nU2V0dGluZzogUGFnaW5nU2V0dGluZztcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogYW55O1xuICAgIEBJbnB1dCgpIGNvbnRleHQ6IGFueTtcbiAgICBASW5wdXQoKSBpc01vYmlsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzdGFuZGFsb25lOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGxhbmRzY2FwZTogYm9vbGVhbjtcbiAgICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHNlYXJjaFBhbmVsTW9DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9wZW5NYW5hZ2VGaWx0ZXJzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBjb2xsYXBzZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIGhpZGVTZWFyY2hQYW5lbENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXJTYXZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXJTYXZlQXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgc2hvd0ZpbHRlckZpZWxkc1NldHRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG1hbmFnZUZpbHRlcnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGNsZWFyU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdFNlYXJjaFBhbmVsU2V0dGluZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBpc1NlcnZpY2VEZXNrID0gZmFsc2U7XG4gICAgZmlsbFBhZ2UgPSBmYWxzZTtcbiAgICBzaWRlQ29udGVudE1vZGUgPSBmYWxzZTtcbiAgICBtb2JpbGVCb3R0b21CYXI6IGJvb2xlYW47XG4gICAgaGlkZVBhZ2Vpbmc6IGJvb2xlYW47XG4gICAgbWFpbkNvbnRlbnRXaWR0aDogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHJvdGVjdGVkIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaXNTZXJ2aWNlRGVzayA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNTZXJ2aWNlRGVzazsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5oaWRlUGFnZWluZyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LFxuICAgICAgICAgICAgJ1NldHRpbmcuQ2xhc3NOYW1lcy5DdXN0b21VaS5QYXJhbWV0ZXJzLkhpZGVQYWdlaW5nJyxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmlsbFBhZ2UgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCxcbiAgICAgICAgICAgICdTZXR0aW5nLkNsYXNzTmFtZXMuQ3VzdG9tVWkuUGFyYW1ldGVycy5GaWxsUGFnZScsXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNpZGVDb250ZW50TW9kZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LFxuICAgICAgICAgICAgJ1NldHRpbmcuQ2xhc3NOYW1lcy5DdXN0b21VaS5QYXJhbWV0ZXJzLlNlYXJjaHBhbmVsSW5TaWRlQ29udGVudCcsXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1haW5Db250ZW50V2lkdGggPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCxcbiAgICAgICAgICAgICdTZXR0aW5nLkNsYXNzTmFtZXMuQ3VzdG9tVWkuUGFyYW1ldGVycy5NYWluQ29udGVudFdpZHRoJyxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XG4gICAgICAgIHRoaXMubW9iaWxlQm90dG9tQmFyID0gdGhpcy5pc01vYmlsZSAmJiAhdGhpcy5zdGFuZGFsb25lO1xuICAgIH1cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5fZHluYW1pY1BhZ2VDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRldmljZVNpemUgPT09ICd4bCcgJiYgdGhpcy5fZHluYW1pY1BhZ2VDb21wb25lbnQuc2l6ZSAhPT0gJ2V4dHJhLWxhcmdlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNQYWdlQ29tcG9uZW50LnJlZnJlc2hTaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gICAgfVxuICAgIG9uU2VhcmNoUGFuZWxNb0NoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxNb0NoYW5nZS5lbWl0KCk7XG4gICAgfVxuICAgIG9uU2hvd1NlYXJjaHBhbmVsRGlhbG9nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW5EaWFsb2codGhpcy5kaWFsb2dUZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgb3BlbkRpYWxvZyhkaWFsb2c6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKGRpYWxvZywge1xuICAgICAgICAgICAgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUsXG4gICAgICAgICAgICBmdWxsU2NyZWVuOiB0cnVlLFxuICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxuICAgICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdGaXRsZXJzJyxcbiAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeTogJ0ZpdGxlcnMnLFxuICAgICAgICAgICAgZm9jdXNUcmFwcGVkOiB0cnVlLFxuICAgICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uT3Blbk1hbmFnZUZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3Blbk1hbmFnZUZpbHRlcnMuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uQ29sbGFwc2VkQ2hhbmdlKGNvbGxhcHNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbGxhcHNlZENoYW5nZS5lbWl0KGNvbGxhcHNlZCk7XG4gICAgfVxuICAgIG9uSGlkZVNlYXJjaFBhbmVsQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZVNlYXJjaFBhbmVsQ2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIG9uRmlsdGVyU2F2ZShwb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIHBvcG92ZXIuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJTYXZlLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvbkZpbHRlclNhdmVBcyhwb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIHBvcG92ZXIuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJTYXZlQXMuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uU2hvd0ZpbHRlckZpZWxkc1NldHRpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlckZpZWxkc1NldHRpbmcuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uTWFuYWdlRmlsdGVycyhwb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIHBvcG92ZXIuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VGaWx0ZXJzLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvbkNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyU2VhcmNoLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvblNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2guZW1pdCgpO1xuICAgIH1cbiAgICBvblBhZ2VDaGFuZ2UoZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KGUpO1xuICAgIH1cbiAgICBvblNlbGVjdFNlYXJjaFBhbmVsU2V0dGluZ3Moc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQ6IHN0cmluZywgcG9wb3Zlcik6IHZvaWQge1xuICAgICAgICBwb3BvdmVyLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0U2VhcmNoUGFuZWxTZXR0aW5ncy5lbWl0KHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkKTtcbiAgICB9XG59XG4iLCI8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JlcG9ydFBhZ2U7IGVsc2UgcmVwb3J0VGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICByZXBvcnRQYWdlVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgJGltcGxpY2l0OiB2aWV3ZXJDb250cm9sLFxuICAgICAgICAgICAgICAgIHRhYk1vZGU6IHZpZXdlckNvbnRyb2wuU2V0dGluZz8uQ2xhc3NOYW1lcz8uQ3VzdG9tVWk/LlBhcmFtZXRlcnM/LlRhYk1vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgXCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4gLS0+XG48bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgaXNSZXBvcnRQYWdlID8gcmVwb3J0UGFnZVRlbXBsYXRlIDogcmVwb3J0VGVtcGxhdGU7XG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICRpbXBsaWNpdDogdmlld2VyQ29udHJvbCxcbiAgICAgICAgICAgIHRhYk1vZGU6IHZpZXdlckNvbnRyb2w/LlNldHRpbmc/LkNsYXNzTmFtZXM/LkN1c3RvbVVpPy5QYXJhbWV0ZXJzPy5UYWJNb2RlXG4gICAgICAgIH1cbiAgICBcIlxuPlxuPC9uZy1jb250YWluZXI+XG48YnN1LW1hc2sgKm5nSWY9XCJsb2FkaW5nXCIgc2l6ZT1cIm1cIj48L2JzdS1tYXNrPlxuPG5nLXRlbXBsYXRlICNyZXBvcnRQYWdlVGVtcGxhdGUgbGV0LXZpZXdlckNvbnRyb2wgbGV0LXRhYk1vZGU9XCJ0YWJNb2RlXCI+XG4gICAgPGZkLWR5bmFtaWMtcGFnZVxuICAgICAgICBmb3JtQ2xvc2VcbiAgICAgICAgbW9iaWxlXG4gICAgICAgIFthdHRyLmlzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICAgICAgW3NpemVdPVwiZGV2aWNlU2l6ZSB8IGR5bmFtaWNQYWdlU2l6ZVwiXG4gICAgICAgIFthdHRyLnRhYk1vZGVdPVwidGFiTW9kZVwiXG4gICAgICAgIFthdXRvUmVzcG9uc2l2ZV09XCJmYWxzZVwiXG4gICAgPlxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWhlYWRlclxuICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICh0aXRsZSB8IGJiYlRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgPyAodGl0bGUgfCBiYmJUcmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgIDogaXNNb2JpbGUgJiYgYnJlYWRDcnVtYnMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gYnJlYWRDcnVtYnNbYnJlYWRDcnVtYnMubGVuZ3RoIC0gMV0ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwicC1iMFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC1icmVhZGNydW1iICpuZ0lmPVwiIWlzTW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkQ3J1bWJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBicmVhZENydW1iIG9mIGJyZWFkQ3J1bWJzIHwgc2xpY2U6IDA6YnJlYWRDcnVtYnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxhc3QgPSBsYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYi1pdGVtICpuZ0lmPVwibGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxic3UtYnJlYWRjcnVtYlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xhc3RdPVwibGFzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFticmVhZENydW1iXT1cImJyZWFkQ3J1bWJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsQnJlYWRDcnVtYl09XCJicmVhZENydW1ic1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnN1LWJyZWFkY3J1bWI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWI+XG4gICAgICAgICAgICA8IS0tIDxmZC1keW5hbWljLXBhZ2UtdGl0bGUtY29udGVudD7ar9iy2KfYsdi0IDwvZmQtZHluYW1pYy1wYWdlLXRpdGxlLWNvbnRlbnQ+IC0tPlxuXG4gICAgICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWdsb2JhbC1hY3Rpb25zICp1bnRpbEluVmlldz1cImVsXCIgc3R5bGU9XCJtaW4td2lkdGg6IGF1dG9cIj5cbiAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhciBbc2hvdWxkT3ZlcmZsb3ddPVwidHJ1ZVwiIFN0eWxlPVwiZGlzcGxheTpub25lXCI+IDwvZmQtdG9vbGJhcj5cbiAgICAgICAgICAgICAgICA8IS0tIGFkZGVkIHRoaXMgYmVjYXVzZSBpbiBtb2JpbGUgbGFuZHNjYXBlIHRvb2xiYXIgZGlzYXBwZXIgLS0+XG4gICAgICAgICAgICAgICAgPGZkLXRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hQYW5lbFVpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnbG9iYWwtYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsZWFyQm9yZGVyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvdWxkT3ZlcmZsb3ddPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICNwb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJuZXZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzQW5vbnltb3VzID09PSBmYWxzZSAmJiBjYW5TYXZlR3JpZFNldHRpbmdcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImhlYWRlci1zZWFyY2hcIiBbYXR0ci5ydGxdPVwicnRsXCIgZmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncz8uSXNTdGFuZGFyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzPy5UaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgKm5nSWY9XCJzZWFyY2hQYW5lbE1vQ2hhbmdlZFwiPio8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keSBtb2JpbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1wb3BvdmVyLWJvZHktaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBbZmRDb3p5XT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50Pnt7ICdGaWx0ZXJzJyB8IGJiYlRyYW5zbGF0ZSB9fTwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGZkLWxpc3Qgc3R5bGU9XCJtaW4taGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2FwQmFja2dyb3VuZENvbG9yLCAjZjdmN2Y3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhbGxTZWFyY2hQYW5lbFNldHRpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJvcHRpb24uSWQgPT09IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdFNlYXJjaFBhbmVsU2V0dGluZ3Mob3B0aW9uLklkLCBwb3BvdmVyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgb3B0aW9uLlRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1wb3BvdmVyLWJvZHktZm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBbYmFyRGVzaWduXT1cIidmb290ZXInXCIgW2ZkQ296eV0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodCAqbmdJZj1cInNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5Jc1ByaW1hcnkgJiYgc2VhcmNoUGFuZWxNb0NoYW5nZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NhdmUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlclNhdmUocG9wb3ZlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hQYW5lbE1vQ2hhbmdlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU2F2ZUFzJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuSXNEZWZhdWx0ID8gJ2VtcGhhc2l6ZWQnIDogJ3RyYW5zcGFyZW50J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXJTYXZlQXMocG9wb3ZlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidNYW5hZ2UnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NYW5hZ2VGaWx0ZXJzKHBvcG92ZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyICpuZ0lmPVwiZGV2aWNlU2l6ZSAhPT0gJ3MnXCI+PC9mZC10b29sYmFyLXNwYWNlcj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd1ByaW9yaXR5PVwibmV2ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd1NlYXJjaHBhbmVsRGlhbG9nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cIidmaWx0ZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlICYmICFzaWRlQ29udGVudE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJuZXZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU2VhcmNoJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc01vYmlsZSAmJiAhc2lkZUNvbnRlbnRNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd1ByaW9yaXR5PVwibG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInRmlsdGVycycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd0ZpbHRlckZpZWxkc1NldHRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRPdmVyZmxvd0dyb3VwXT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNNb2JpbGUgJiYgIXNpZGVDb250ZW50TW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dQcmlvcml0eT1cImxvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NsZWFyJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmZE92ZXJmbG93R3JvdXBdPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlICYmICFzaWRlQ29udGVudE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImhpZGVTZWFyY2hQYW5lbCA/ICgnU2hvdycgfCBiYmJUcmFuc2xhdGUpIDogKCdIaWRlJyB8IGJiYlRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSGlkZVNlYXJjaFBhbmVsQ2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJsb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZkT3ZlcmZsb3dHcm91cF09XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cbiAgICAgICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWdsb2JhbC1hY3Rpb25zPlxuICAgICAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhciBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIFtjbGVhckJvcmRlcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNsb3NlLmVtaXQoKVwiIHRpdGxlPVwiQ2xvc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCInc2FwLWljb24tLScgKyAoaXNNb2JpbGUgPyAocnRsID8gJ2Fycm93LXJpZ2h0JyA6ICdhcnJvdy1sZWZ0JykgOiAnZGVjbGluZScpXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLXRvb2xiYXI+XG4gICAgICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtaGVhZGVyPlxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLXN1YmhlYWRlclxuICAgICAgICAgICAgW3Bpbm5hYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW2NvbGxhcHNpYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVTZWFyY2hQYW5lbCAmJiBzZWFyY2hQYW5lbFVpICYmICFzaWRlQ29udGVudE1vZGVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnN1LXNlYXJjaC1wYW5lbFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlXCJcbiAgICAgICAgICAgICAgICBbaGlkZUJ1dHRvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3NlYXJjaFBhbmVsVWldPVwic2VhcmNoUGFuZWxVaVwiXG4gICAgICAgICAgICAgICAgKG1vQ2hhbmdlZCk9XCJvblNlYXJjaFBhbmVsTW9DaGFuZ2VkKClcIlxuICAgICAgICAgICAgPjwvYnN1LXNlYXJjaC1wYW5lbD5cbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2Utc3ViaGVhZGVyPlxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQgKm5nSWY9XCIhdGFiTW9kZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHNpZGVDb250ZW50TW9kZSA/IHNpZGVDb250ZW50VGVtcGxhdGUgOiB2aWV3ZXJUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBub1JlbmRlclBhZ2Vpbmc6IHRydWUgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQ+XG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtZm9vdGVyICpuZ0lmPVwicGFnaW5nU2V0dGluZz8uVG90YWxQYWdlc1wiPlxuICAgICAgICAgICAgPCEtLSBwYWdlIGZvb3RlciBjb250ZW50IGdvZXMgaGVyZSAtLT5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyIFtiYXJEZXNpZ25dPVwiJ2Zvb3RlcidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1taWRkbGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZW5kZXJVbHZQYWdpbmddPVwiY29udGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5nU2V0dGluZ109XCJwYWdpbmdTZXR0aW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWZvb3Rlcj5cbiAgICA8L2ZkLWR5bmFtaWMtcGFnZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiTW9kZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmlld2VyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlcG9ydFRlbXBsYXRlPlxuICAgIDxic3UtbWFzayAqbmdJZj1cImxvYWRpbmdcIiBzaXplPVwic1wiPjwvYnN1LW1hc2s+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlU2VhcmNoUGFuZWwgJiYgc2VhcmNoUGFuZWxVaSAmJiAhc2lkZUNvbnRlbnRNb2RlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hwYW5lbFRlbXBsYXRlXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVDb250ZW50TW9kZSA/IHNpZGVDb250ZW50VGVtcGxhdGUgOiB2aWV3ZXJUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NpZGVDb250ZW50VGVtcGxhdGU+XG4gICAgPGZkLWR5bmFtaWMtc2lkZS1jb250ZW50IFtjbGFzcy5ydGxdPVwicnRsXCIgW3NpemVdPVwiZGV2aWNlU2l6ZSB8IHNhcFNpemVcIj5cbiAgICAgICAgPGZkLWR5bmFtaWMtc2lkZS1jb250ZW50LXNpZGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hwYW5lbFRlbXBsYXRlOyBjb250ZXh0OiB7IGlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQ6IHRydWUgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtZHluYW1pYy1zaWRlLWNvbnRlbnQtc2lkZT5cbiAgICAgICAgPGZkLWR5bmFtaWMtc2lkZS1jb250ZW50LW1haW4gW3N0eWxlLndpZHRoXT1cImRldmljZVNpemUgIT09ICdzJyA/IG1haW5Db250ZW50V2lkdGggOiBudWxsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmlld2VyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1keW5hbWljLXNpZGUtY29udGVudC1tYWluPlxuICAgIDwvZmQtZHluYW1pYy1zaWRlLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICNzZWFyY2hwYW5lbFRlbXBsYXRlIGxldC1pc1NlYXJjUGFuZWxJblNpZGVDb250ZW50PVwiaXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudFwiPlxuICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhaXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudDsgZWxzZSBzZWFyY2hwYW5lbENhcmRUZW1wYXRlXCI+XG4gICAgICAgIDxic3Utc2VhcmNoLXBhbmVsXG4gICAgICAgICAgICAqbmdJZj1cIiFoaWRlU2VhcmNoUGFuZWwgJiYgc2VhcmNoUGFuZWxVaVwiXG4gICAgICAgICAgICBbc2VhcmNoUGFuZWxVaV09XCJzZWFyY2hQYW5lbFVpXCJcbiAgICAgICAgICAgIFtpc1NlYXJjUGFuZWxJblNpZGVDb250ZW50XT1cImlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnRcIlxuICAgICAgICAgICAgW2hpZGVCdXR0b25zXT1cInRydWVcIlxuICAgICAgICAgICAgKG1vQ2hhbmdlZCk9XCJvblNlYXJjaFBhbmVsTW9DaGFuZ2VkKClcIlxuICAgICAgICA+PC9ic3Utc2VhcmNoLXBhbmVsPlxuICAgIDwvbmctY29udGFpbmVyPlxuICAgIDxuZy10ZW1wbGF0ZSAjc2VhcmNocGFuZWxDYXJkVGVtcGF0ZT5cbiAgICAgICAgPGZkLWNhcmQgY2xhc3M9XCJzZWFyY2hwYW5lbC1jYXJkXCI+XG4gICAgICAgICAgICA8ZmQtY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICAgICAgPGgyIGZkLWNhcmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1pY29uIGdseXBoPVwiZmlsdGVyXCI+PC9mZC1pY29uPjxzcGFuPnt7ICdGaWx0ZXInIHwgYmJiVHJhbnNsYXRlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvaDI+XG4gICAgICAgICAgICA8L2ZkLWNhcmQtaGVhZGVyPlxuICAgICAgICAgICAgPGZkLWNhcmQtY29udGVudD4gPC9mZC1jYXJkLWNvbnRlbnQ+XG4gICAgICAgICAgICA8ZmQtY2FyZC1mb290ZXI+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAqZmRDYXJkRm9vdGVyQWN0aW9uSXRlbVxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU2VhcmNoJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpmZENhcmRGb290ZXJBY3Rpb25JdGVtXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCIoJ0RlbGV0ZScgfCBiYmJUcmFuc2xhdGUpICsgJyAnICsgKCdGaWx0ZXJzJyB8IGJiYlRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZkT3ZlcmZsb3dHcm91cF09XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZmQtY2FyZC1mb290ZXI+XG4gICAgICAgIDwvZmQtY2FyZD5cbiAgICA8L25nLXRlbXBsYXRlPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSAjdmlld2VyVGVtcGxhdGUgbGV0LW5vUmVuZGVyUGFnZWluZz1cIm5vUmVuZGVyUGFnZWluZ1wiPlxuICAgIDxkaXZcbiAgICAgICAgY2xhc3M9XCJ2aWV3ZXItY29udGFpbmVyXCJcbiAgICAgICAgZmlsbEVtcHR5U3BhY2VcbiAgICAgICAgW2Rpc2FibGVdPVwiaXNSZXBvcnRQYWdlIHx8ICFmaWxsUGFnZVwiXG4gICAgICAgIFtkZWNyZW1lbnRdPVwiZGV2aWNlU2l6ZSAhPT0gJ3MnID8gJzEwMHB4JyA6ICc3NXB4J1wiXG4gICAgICAgIFtzdHlsZS5oZWlnaHRdPVwidmlld2VyTG9hZGluZyA/ICcxMDAlJyA6ICdhdXRvJ1wiXG4gICAgICAgIFtzdHlsZS5taW4taGVpZ2h0XT1cImlzUmVwb3J0UGFnZSA/ICcxMDAlJyA6IG51bGxcIlxuICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwidmlld2VyTG9hZGluZyA/ICdyZWxhdGl2ZScgOiBudWxsXCJcbiAgICA+XG4gICAgICAgIDxic3UtbWFzayAqbmdJZj1cInZpZXdlckxvYWRpbmdcIiBzaXplPVwibVwiPjwvYnN1LW1hc2s+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJ2aWV3ZXJDb250cm9sXCIgW3JlbmRlclVsdlZpZXdlcl09XCJ2aWV3ZXJDb250cm9sXCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9kaXY+XG4gICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAqbmdJZj1cIiFub1JlbmRlclBhZ2VpbmcgJiYgcGFnaW5nU2V0dGluZz8uVG90YWxQYWdlcyAmJiAhaGlkZVBhZ2VpbmdcIlxuICAgICAgICBbcmVuZGVyVWx2UGFnaW5nXT1cImNvbnRleHRcIlxuICAgICAgICBbcGFnaW5nU2V0dGluZ109XCJwYWdpbmdTZXR0aW5nXCJcbiAgICAgICAgKHBhZ2VDaGFuZ2UpPVwib25QYWdlQ2hhbmdlKCRldmVudClcIlxuICAgID48L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgbGV0LWRpYWxvZyBsZXQtZGlhbG9nQ29uZmlnPVwiZGlhbG9nQ29uZmlnXCIgI3NlYXJjaHBhbmVsRGlhbG9nPlxuICAgIDxmZC1kaWFsb2cgW2RpYWxvZ0NvbmZpZ109XCJkaWFsb2dDb25maWdcIiBbZGlhbG9nUmVmXT1cImRpYWxvZ1wiPlxuICAgICAgICA8ZmQtZGlhbG9nLWhlYWRlcj5cbiAgICAgICAgICAgIDxoMSBpZD1cImZkLWRpYWxvZy1oZWFkZXItMTBcIiBmZC10aXRsZT57eyAnRmlsdGVycycgfCBiYmJUcmFuc2xhdGUgfX08L2gxPlxuICAgICAgICAgICAgPGJ1dHRvbiBmZC1kaWFsb2ctY2xvc2UtYnV0dG9uIChjbGljayk9XCJkaWFsb2cuZGlzbWlzcygnQ2xvc2UgYnV0dG9uJylcIj48L2J1dHRvbj5cbiAgICAgICAgPC9mZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICA8ZmQtZGlhbG9nLWJvZHk+XG4gICAgICAgICAgICA8YnN1LXNlYXJjaC1wYW5lbFxuICAgICAgICAgICAgICAgIFtoaWRlQnV0dG9uc109XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICBbc2VhcmNoUGFuZWxVaV09XCJzZWFyY2hQYW5lbFVpXCJcbiAgICAgICAgICAgICAgICAobW9DaGFuZ2VkKT1cIm9uU2VhcmNoUGFuZWxNb0NoYW5nZWQoKVwiXG4gICAgICAgICAgICA+PC9ic3Utc2VhcmNoLXBhbmVsPlxuICAgICAgICA8L2ZkLWRpYWxvZy1ib2R5PlxuXG4gICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyPlxuICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWluaXRpYWwtZm9jdXNcbiAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2cuZGlzbWlzcygpOyBvblNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTZWFyY2gnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIFtsYWJlbF09XCInQ2xlYXInIHwgYmJiVHJhbnNsYXRlXCIgKGNsaWNrKT1cIm9uQ2xlYXJTZWFyY2goKVwiPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgIDxmZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJkaWFsb2cuZGlzbWlzcygnQ2xvc2UgYnV0dG9uJylcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NhbmNlbCcgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlcj5cbiAgICA8L2ZkLWRpYWxvZz5cbjwvbmctdGVtcGxhdGU+XG4iXX0=
207
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFyc2EtdWx2LW1haW4uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdWx2LW1haW4vYmFyc2EtdWx2LW1haW4uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvYmFyc2EtdWx2LW1haW4vYmFyc2EtdWx2LW1haW4uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUNILFNBQVMsRUFDVCx1QkFBdUIsRUFDdkIsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBRVosU0FBUyxFQUlaLE1BQU0sZUFBZSxDQUFDO0FBQ3ZCLE9BQU8sRUFBaUIsb0JBQW9CLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUM1RSxPQUFPLEVBRUgsYUFBYSxFQUNiLGlCQUFpQixFQUVqQixRQUFRLEVBRVgsTUFBTSxzQkFBc0IsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBUTlCLE1BQU0sT0FBTyxxQkFBc0IsU0FBUSxhQUFhO0lBNENwRCxZQUFtQixFQUFjLEVBQVksY0FBNkI7UUFDdEUsS0FBSyxFQUFFLENBQUM7UUFETyxPQUFFLEdBQUYsRUFBRSxDQUFZO1FBQVksbUJBQWMsR0FBZCxjQUFjLENBQWU7UUFuQmhFLFVBQUssR0FBRyxJQUFJLFlBQVksRUFBRSxDQUFDO1FBQzNCLHdCQUFtQixHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7UUFDekMsc0JBQWlCLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2QyxvQkFBZSxHQUFHLElBQUksWUFBWSxFQUFXLENBQUM7UUFDOUMseUJBQW9CLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUMxQyxlQUFVLEdBQUcsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNoQyxpQkFBWSxHQUFHLElBQUksWUFBWSxFQUFF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QkFBeUI7c0JBQWxDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENvbXBvbmVudCxcbiAgICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgICBJbnB1dCxcbiAgICBPdXRwdXQsXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIEFmdGVyVmlld0luaXQsXG4gICAgVmlld0NoaWxkLFxuICAgIEVsZW1lbnRSZWYsXG4gICAgT25Jbml0LFxuICAgIFRlbXBsYXRlUmVmXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgRGlhbG9nU2VydmljZSwgRHluYW1pY1BhZ2VDb21wb25lbnQgfSBmcm9tICdAZnVuZGFtZW50YWwtbmd4L2NvcmUnO1xuaW1wb3J0IHtcbiAgICBBYmJyZXZhdGlvbkRldmljZVNpemUsXG4gICAgQmFzZUNvbXBvbmVudCxcbiAgICBnZXREZXZpY2VJc01vYmlsZSxcbiAgICBCcmVhZENydW1iSW5mbyxcbiAgICBCYXJzYUFwaSxcbiAgICBQYWdpbmdTZXR0aW5nXG59IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcblxuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICdic3UtYmFyc2EtdWx2LW1haW4nLFxuICAgIHRlbXBsYXRlVXJsOiAnLi9iYXJzYS11bHYtbWFpbi5jb21wb25lbnQuaHRtbCcsXG4gICAgc3R5bGVVcmxzOiBbJy4vYmFyc2EtdWx2LW1haW4uY29tcG9uZW50LnNjc3MnXSxcbiAgICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBCYXJzYVVsdk1haW5Db21wb25lbnQgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0IHtcbiAgICBAVmlld0NoaWxkKER5bmFtaWNQYWdlQ29tcG9uZW50KSBfZHluYW1pY1BhZ2VDb21wb25lbnQ6IER5bmFtaWNQYWdlQ29tcG9uZW50O1xuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaHBhbmVsRGlhbG9nJykgZGlhbG9nVGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgdmlld2VyQ29udHJvbDogYW55O1xuICAgIEBJbnB1dCgpIGxvYWRpbmc6IGJvb2xlYW47XG4gICAgQElucHV0KCkgdmlld2VyTG9hZGluZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBpc1JlcG9ydFBhZ2U6IGJvb2xlYW47XG4gICAgQElucHV0KCkgZGV2aWNlU2l6ZTogQWJicmV2YXRpb25EZXZpY2VTaXplO1xuICAgIEBJbnB1dCgpIHRpdGxlOiBzdHJpbmc7XG4gICAgQElucHV0KCkgc2VhcmNoUGFuZWxVaTogYW55O1xuICAgIEBJbnB1dCgpIGJyZWFkQ3J1bWJzOiBCcmVhZENydW1iSW5mb1tdO1xuICAgIEBJbnB1dCgpIGFsbFNlYXJjaFBhbmVsU2V0dGluZ3M6IGFueVtdO1xuICAgIEBJbnB1dCgpIGlzQW5vbnltb3VzOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGNhblNhdmVHcmlkU2V0dGluZzogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBydGw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzOiBhbnk7XG4gICAgQElucHV0KCkgc2VhcmNoUGFuZWxNb0NoYW5nZWQ6IGJvb2xlYW47XG4gICAgQElucHV0KCkgc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQ6IHN0cmluZztcbiAgICBASW5wdXQoKSBoaWRlU2VhcmNoUGFuZWw6IGJvb2xlYW47XG4gICAgQElucHV0KCkgcGFnaW5nU2V0dGluZzogUGFnaW5nU2V0dGluZztcbiAgICBASW5wdXQoKSBjb250ZW50RGVuc2l0eTogYW55O1xuICAgIEBJbnB1dCgpIGNvbnRleHQ6IGFueTtcbiAgICBASW5wdXQoKSBpc01vYmlsZTogYm9vbGVhbjtcbiAgICBASW5wdXQoKSBzdGFuZGFsb25lOiBib29sZWFuO1xuICAgIEBJbnB1dCgpIGxhbmRzY2FwZTogYm9vbGVhbjtcbiAgICBAT3V0cHV0KCkgY2xvc2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHNlYXJjaFBhbmVsTW9DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG9wZW5NYW5hZ2VGaWx0ZXJzID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBjb2xsYXBzZWRDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XG4gICAgQE91dHB1dCgpIGhpZGVTZWFyY2hQYW5lbENsaWNrID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXJTYXZlID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBmaWx0ZXJTYXZlQXMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHBhZ2VDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPG51bWJlcj4oKTtcbiAgICBAT3V0cHV0KCkgc2hvd0ZpbHRlckZpZWxkc1NldHRpbmcgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIG1hbmFnZUZpbHRlcnMgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIGNsZWFyU2VhcmNoID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuICAgIEBPdXRwdXQoKSBzZWFyY2ggPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdFNlYXJjaFBhbmVsU2V0dGluZ3MgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcbiAgICBpc1NlcnZpY2VEZXNrID0gZmFsc2U7XG4gICAgZmlsbFBhZ2UgPSBmYWxzZTtcbiAgICBzaWRlQ29udGVudE1vZGUgPSBmYWxzZTtcbiAgICBtb2JpbGVCb3R0b21CYXI6IGJvb2xlYW47XG4gICAgaGlkZVBhZ2Vpbmc6IGJvb2xlYW47XG4gICAgbWFpbkNvbnRlbnRXaWR0aDogc3RyaW5nO1xuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBlbDogRWxlbWVudFJlZiwgcHJvdGVjdGVkIF9kaWFsb2dTZXJ2aWNlOiBEaWFsb2dTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgICAgIHRoaXMuaXNTZXJ2aWNlRGVzayA9IEJhcnNhQXBpLkxvZ2luRm9ybURhdGEuSXNTZXJ2aWNlRGVzazsgLy8gZXNsaW50LWRpc2FibGUtbGluZVxuICAgIH1cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIubmdPbkluaXQoKTtcbiAgICAgICAgdGhpcy5oaWRlUGFnZWluZyA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LFxuICAgICAgICAgICAgJ1NldHRpbmcuQ2xhc3NOYW1lcy5DdXN0b21VaS5QYXJhbWV0ZXJzLkhpZGVQYWdlaW5nJyxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMuZmlsbFBhZ2UgPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCxcbiAgICAgICAgICAgICdTZXR0aW5nLkNsYXNzTmFtZXMuQ3VzdG9tVWkuUGFyYW1ldGVycy5GaWxsUGFnZScsXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLnNpZGVDb250ZW50TW9kZSA9IEJhcnNhQXBpLkNvbW1vbi5VdGlsLlRyeUdldFZhbHVlKFxuICAgICAgICAgICAgdGhpcy5jb250ZXh0LFxuICAgICAgICAgICAgJ1NldHRpbmcuQ2xhc3NOYW1lcy5DdXN0b21VaS5QYXJhbWV0ZXJzLlNlYXJjaHBhbmVsSW5TaWRlQ29udGVudCcsXG4gICAgICAgICAgICBmYWxzZVxuICAgICAgICApO1xuICAgICAgICB0aGlzLm1haW5Db250ZW50V2lkdGggPSBCYXJzYUFwaS5Db21tb24uVXRpbC5UcnlHZXRWYWx1ZShcbiAgICAgICAgICAgIHRoaXMuY29udGV4dCxcbiAgICAgICAgICAgICdTZXR0aW5nLkNsYXNzTmFtZXMuQ3VzdG9tVWkuUGFyYW1ldGVycy5NYWluQ29udGVudFdpZHRoJyxcbiAgICAgICAgICAgIGZhbHNlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5pc01vYmlsZSA9IGdldERldmljZUlzTW9iaWxlKCk7XG4gICAgICAgIHRoaXMubW9iaWxlQm90dG9tQmFyID0gdGhpcy5pc01vYmlsZSAmJiAhdGhpcy5zdGFuZGFsb25lO1xuICAgIH1cbiAgICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLm5nQWZ0ZXJWaWV3SW5pdCgpO1xuICAgICAgICBpZiAodGhpcy5fZHluYW1pY1BhZ2VDb21wb25lbnQpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLmRldmljZVNpemUgPT09ICd4bCcgJiYgdGhpcy5fZHluYW1pY1BhZ2VDb21wb25lbnQuc2l6ZSAhPT0gJ2V4dHJhLWxhcmdlJykge1xuICAgICAgICAgICAgICAgIHRoaXMuX2R5bmFtaWNQYWdlQ29tcG9uZW50LnJlZnJlc2hTaXplKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgb25DbG9zZSgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5jbG9zZS5lbWl0KCk7XG4gICAgfVxuICAgIG9uU2VhcmNoUGFuZWxNb0NoYW5nZWQoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VhcmNoUGFuZWxNb0NoYW5nZS5lbWl0KCk7XG4gICAgfVxuICAgIG9uU2hvd1NlYXJjaHBhbmVsRGlhbG9nKCk6IHZvaWQge1xuICAgICAgICB0aGlzLm9wZW5EaWFsb2codGhpcy5kaWFsb2dUZW1wbGF0ZSk7XG4gICAgfVxuXG4gICAgb3BlbkRpYWxvZyhkaWFsb2c6IFRlbXBsYXRlUmVmPGFueT4pOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZGlhbG9nU2VydmljZS5vcGVuKGRpYWxvZywge1xuICAgICAgICAgICAgcmVzcG9uc2l2ZVBhZGRpbmc6IHRydWUsXG4gICAgICAgICAgICBmdWxsU2NyZWVuOiB0cnVlLFxuICAgICAgICAgICAgbW9iaWxlOiB0cnVlLFxuICAgICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdGaXRsZXJzJyxcbiAgICAgICAgICAgIGFyaWFEZXNjcmliZWRCeTogJ0ZpdGxlcnMnLFxuICAgICAgICAgICAgZm9jdXNUcmFwcGVkOiB0cnVlLFxuICAgICAgICAgICAgY2xvc2VPbk5hdmlnYXRpb246IHRydWVcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIG9uT3Blbk1hbmFnZUZpbHRlcnMoKTogdm9pZCB7XG4gICAgICAgIHRoaXMub3Blbk1hbmFnZUZpbHRlcnMuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uQ29sbGFwc2VkQ2hhbmdlKGNvbGxhcHNlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICB0aGlzLmNvbGxhcHNlZENoYW5nZS5lbWl0KGNvbGxhcHNlZCk7XG4gICAgfVxuICAgIG9uSGlkZVNlYXJjaFBhbmVsQ2xpY2soKTogdm9pZCB7XG4gICAgICAgIHRoaXMuaGlkZVNlYXJjaFBhbmVsQ2xpY2suZW1pdCgpO1xuICAgIH1cblxuICAgIG9uRmlsdGVyU2F2ZShwb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIHBvcG92ZXIuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJTYXZlLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvbkZpbHRlclNhdmVBcyhwb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIHBvcG92ZXIuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5maWx0ZXJTYXZlQXMuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uU2hvd0ZpbHRlckZpZWxkc1NldHRpbmcoKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2hvd0ZpbHRlckZpZWxkc1NldHRpbmcuZW1pdCgpO1xuICAgIH1cblxuICAgIG9uTWFuYWdlRmlsdGVycyhwb3BvdmVyKTogdm9pZCB7XG4gICAgICAgIHBvcG92ZXIuY2xvc2UoKTtcbiAgICAgICAgdGhpcy5tYW5hZ2VGaWx0ZXJzLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvbkNsZWFyU2VhcmNoKCk6IHZvaWQge1xuICAgICAgICB0aGlzLmNsZWFyU2VhcmNoLmVtaXQoKTtcbiAgICB9XG5cbiAgICBvblNlYXJjaCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWFyY2guZW1pdCgpO1xuICAgIH1cbiAgICBvblBhZ2VDaGFuZ2UoZTogbnVtYmVyKTogdm9pZCB7XG4gICAgICAgIHRoaXMucGFnZUNoYW5nZS5lbWl0KGUpO1xuICAgIH1cbiAgICBvblNlbGVjdFNlYXJjaFBhbmVsU2V0dGluZ3Moc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzSWQ6IHN0cmluZywgcG9wb3Zlcik6IHZvaWQge1xuICAgICAgICBwb3BvdmVyLmNsb3NlKCk7XG4gICAgICAgIHRoaXMuc2VsZWN0U2VhcmNoUGFuZWxTZXR0aW5ncy5lbWl0KHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkKTtcbiAgICB9XG59XG4iLCI8IS0tIDxuZy1jb250YWluZXIgKm5nSWY9XCJpc1JlcG9ydFBhZ2U7IGVsc2UgcmVwb3J0VGVtcGxhdGVcIj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICByZXBvcnRQYWdlVGVtcGxhdGU7XG4gICAgICAgICAgICBjb250ZXh0OiB7XG4gICAgICAgICAgICAgICAgJGltcGxpY2l0OiB2aWV3ZXJDb250cm9sLFxuICAgICAgICAgICAgICAgIHRhYk1vZGU6IHZpZXdlckNvbnRyb2wuU2V0dGluZz8uQ2xhc3NOYW1lcz8uQ3VzdG9tVWk/LlBhcmFtZXRlcnM/LlRhYk1vZGVcbiAgICAgICAgICAgIH1cbiAgICAgICAgXCJcbiAgICA+XG4gICAgPC9uZy1jb250YWluZXI+XG48L25nLWNvbnRhaW5lcj4gLS0+XG48bmctY29udGFpbmVyXG4gICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJcbiAgICAgICAgaXNSZXBvcnRQYWdlID8gcmVwb3J0UGFnZVRlbXBsYXRlIDogcmVwb3J0VGVtcGxhdGU7XG4gICAgICAgIGNvbnRleHQ6IHtcbiAgICAgICAgICAgICRpbXBsaWNpdDogdmlld2VyQ29udHJvbCxcbiAgICAgICAgICAgIHRhYk1vZGU6IHZpZXdlckNvbnRyb2w/LlNldHRpbmc/LkNsYXNzTmFtZXM/LkN1c3RvbVVpPy5QYXJhbWV0ZXJzPy5UYWJNb2RlXG4gICAgICAgIH1cbiAgICBcIlxuPlxuPC9uZy1jb250YWluZXI+XG48YnN1LW1hc2sgKm5nSWY9XCJsb2FkaW5nXCIgc2l6ZT1cIm1cIj48L2JzdS1tYXNrPlxuPG5nLXRlbXBsYXRlICNyZXBvcnRQYWdlVGVtcGxhdGUgbGV0LXZpZXdlckNvbnRyb2wgbGV0LXRhYk1vZGU9XCJ0YWJNb2RlXCI+XG4gICAgPGZkLWR5bmFtaWMtcGFnZVxuICAgICAgICBmb3JtQ2xvc2VcbiAgICAgICAgbW9iaWxlXG4gICAgICAgIFthdHRyLmlzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICAgICAgW2lzTW9iaWxlXT1cImlzTW9iaWxlXCJcbiAgICAgICAgW3NpemVdPVwiZGV2aWNlU2l6ZSB8IGR5bmFtaWNQYWdlU2l6ZVwiXG4gICAgICAgIFthdHRyLnRhYk1vZGVdPVwidGFiTW9kZVwiXG4gICAgICAgIFthdXRvUmVzcG9uc2l2ZV09XCJmYWxzZVwiXG4gICAgPlxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWhlYWRlclxuICAgICAgICAgICAgW3RpdGxlXT1cIlxuICAgICAgICAgICAgICAgICh0aXRsZSB8IGJiYlRyYW5zbGF0ZSlcbiAgICAgICAgICAgICAgICAgICAgPyAodGl0bGUgfCBiYmJUcmFuc2xhdGUpXG4gICAgICAgICAgICAgICAgICAgIDogaXNNb2JpbGUgJiYgYnJlYWRDcnVtYnMubGVuZ3RoXG4gICAgICAgICAgICAgICAgICAgID8gYnJlYWRDcnVtYnNbYnJlYWRDcnVtYnMubGVuZ3RoIC0gMV0ubGFiZWxcbiAgICAgICAgICAgICAgICAgICAgOiAnJ1xuICAgICAgICAgICAgXCJcbiAgICAgICAgICAgIGNsYXNzPVwicC1iMFwiXG4gICAgICAgID5cbiAgICAgICAgICAgIDxmZC1icmVhZGNydW1iICpuZ0lmPVwiIWlzTW9iaWxlXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cImJyZWFkQ3J1bWJzXCI+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBicmVhZENydW1iIG9mIGJyZWFkQ3J1bWJzIHwgc2xpY2U6IDA6YnJlYWRDcnVtYnMubGVuZ3RoO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCBpID0gaW5kZXg7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IGxhc3QgPSBsYXN0XG4gICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtYnJlYWRjcnVtYi1pdGVtICpuZ0lmPVwibGFzdFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxic3UtYnJlYWRjcnVtYlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaW5kZXhdPVwiaVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0xhc3RdPVwibGFzdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFticmVhZENydW1iXT1cImJyZWFkQ3J1bWJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYWxsQnJlYWRDcnVtYl09XCJicmVhZENydW1ic1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPjwvYnN1LWJyZWFkY3J1bWI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWItaXRlbT5cbiAgICAgICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2ZkLWJyZWFkY3J1bWI+XG4gICAgICAgICAgICA8IS0tIDxmZC1keW5hbWljLXBhZ2UtdGl0bGUtY29udGVudD7ar9iy2KfYsdi0IDwvZmQtZHluYW1pYy1wYWdlLXRpdGxlLWNvbnRlbnQ+IC0tPlxuXG4gICAgICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWdsb2JhbC1hY3Rpb25zICp1bnRpbEluVmlldz1cImVsXCIgc3R5bGU9XCJtaW4td2lkdGg6IGF1dG9cIj5cbiAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhciBbc2hvdWxkT3ZlcmZsb3ddPVwidHJ1ZVwiIFN0eWxlPVwiZGlzcGxheTpub25lXCI+IDwvZmQtdG9vbGJhcj5cbiAgICAgICAgICAgICAgICA8IS0tIGFkZGVkIHRoaXMgYmVjYXVzZSBpbiBtb2JpbGUgbGFuZHNjYXBlIHRvb2xiYXIgZGlzYXBwZXIgLS0+XG4gICAgICAgICAgICAgICAgPGZkLXRvb2xiYXJcbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hQYW5lbFVpXCJcbiAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJnbG9iYWwtYWN0aW9uc1wiXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsZWFyQm9yZGVyXT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBbc2hvdWxkT3ZlcmZsb3ddPVwiZGV2aWNlU2l6ZSA9PT0gJ3MnXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxmZC1wb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICNwb3BvdmVyXG4gICAgICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJuZXZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzQW5vbnltb3VzID09PSBmYWxzZSAmJiBjYW5TYXZlR3JpZFNldHRpbmdcIlxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzcz1cImhlYWRlci1zZWFyY2hcIiBbYXR0ci5ydGxdPVwicnRsXCIgZmQtdGl0bGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncz8uSXNTdGFuZGFyZFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICcnXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogc2VsZWN0ZWRTZWFyY2hQYW5lbFNldHRpbmdzPy5UaXRsZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzdHJvbmcgKm5nSWY9XCJzZWFyY2hQYW5lbE1vQ2hhbmdlZFwiPio8L3N0cm9uZz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbHlwaD1cInNsaW0tYXJyb3ctZG93blwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlci1jb250cm9sPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGZkLXBvcG92ZXItYm9keSBtb2JpbGU+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1wb3BvdmVyLWJvZHktaGVhZGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBbZmRDb3p5XT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgZmQtYmFyLWxlZnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJhci1lbGVtZW50Pnt7ICdGaWx0ZXJzJyB8IGJiYlRyYW5zbGF0ZSB9fTwvZmQtYmFyLWVsZW1lbnQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsIGZkLWxpc3Qgc3R5bGU9XCJtaW4taGVpZ2h0OiAyMDBweDsgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tc2FwQmFja2dyb3VuZENvbG9yLCAjZjdmN2Y3KVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZkLWxpc3QtaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBhbGxTZWFyY2hQYW5lbFNldHRpbmdzXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtzZWxlY3RlZF09XCJvcHRpb24uSWQgPT09IHNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc0lkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvblNlbGVjdFNlYXJjaFBhbmVsU2V0dGluZ3Mob3B0aW9uLklkLCBwb3BvdmVyKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGZkLWxpc3QtdGl0bGU+e3sgb3B0aW9uLlRpdGxlIH19PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdWw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBmZC1wb3BvdmVyLWJvZHktZm9vdGVyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhciBbYmFyRGVzaWduXT1cIidmb290ZXInXCIgW2ZkQ296eV0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1yaWdodCAqbmdJZj1cInNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5nc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmZC1idXR0b24tYmFyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIXNlbGVjdGVkU2VhcmNoUGFuZWxTZXR0aW5ncy5Jc1ByaW1hcnkgJiYgc2VhcmNoUGFuZWxNb0NoYW5nZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NhdmUnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwiZW1waGFzaXplZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkZpbHRlclNhdmUocG9wb3ZlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJzZWFyY2hQYW5lbE1vQ2hhbmdlZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU2F2ZUFzJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtmZFR5cGVdPVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZFNlYXJjaFBhbmVsU2V0dGluZ3MuSXNEZWZhdWx0ID8gJ2VtcGhhc2l6ZWQnIDogJ3RyYW5zcGFyZW50J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25GaWx0ZXJTYXZlQXMocG9wb3ZlcilcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2ZkLWJ1dHRvbi1iYXI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZkLWJ1dHRvbi1iYXJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidNYW5hZ2UnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRJbml0aWFsRm9jdXNcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25NYW5hZ2VGaWx0ZXJzKHBvcG92ZXIpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1idXR0b24tYmFyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9mZC1wb3BvdmVyLWJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvZmQtcG9wb3Zlcj5cbiAgICAgICAgICAgICAgICAgICAgPGZkLXRvb2xiYXItc3BhY2VyICpuZ0lmPVwiZGV2aWNlU2l6ZSAhPT0gJ3MnXCI+PC9mZC10b29sYmFyLXNwYWNlcj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cImlzTW9iaWxlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd1ByaW9yaXR5PVwibmV2ZXJcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd1NlYXJjaHBhbmVsRGlhbG9nKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2dseXBoXT1cIidmaWx0ZXInXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlICYmICFzaWRlQ29udGVudE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtdG9vbGJhci1pdGVtXG4gICAgICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJuZXZlclwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInU2VhcmNoJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25TZWFyY2goKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICAqbmdJZj1cIiFpc01vYmlsZSAmJiAhc2lkZUNvbnRlbnRNb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLXRvb2xiYXItaXRlbVxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRPdmVyZmxvd1ByaW9yaXR5PVwibG93XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInRmlsdGVycycgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2hvd0ZpbHRlckZpZWxkc1NldHRpbmcoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRPdmVyZmxvd0dyb3VwXT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZkQ29udGVudERlbnNpdHldPVwiY29udGVudERlbnNpdHlcIlxuICAgICAgICAgICAgICAgICAgICA+PC9idXR0b24+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCIhaXNNb2JpbGUgJiYgIXNpZGVDb250ZW50TW9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGZkT3ZlcmZsb3dQcmlvcml0eT1cImxvd1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ0NsZWFyJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25DbGVhclNlYXJjaCgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmZE92ZXJmbG93R3JvdXBdPVwiMVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICAgICBmZC10b29sYmFyLWl0ZW1cbiAgICAgICAgICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlICYmICFzaWRlQ29udGVudE1vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgZmRUeXBlPVwidHJhbnNwYXJlbnRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cImhpZGVTZWFyY2hQYW5lbCA/ICgnU2hvdycgfCBiYmJUcmFuc2xhdGUpIDogKCdIaWRlJyB8IGJiYlRyYW5zbGF0ZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uSGlkZVNlYXJjaFBhbmVsQ2xpY2soKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBmZE92ZXJmbG93UHJpb3JpdHk9XCJsb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2ZkT3ZlcmZsb3dHcm91cF09XCIxXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtmZENvbnRlbnREZW5zaXR5XT1cImNvbnRlbnREZW5zaXR5XCJcbiAgICAgICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZmQtdG9vbGJhcj5cbiAgICAgICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWdsb2JhbC1hY3Rpb25zPlxuICAgICAgICAgICAgPGZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cbiAgICAgICAgICAgICAgICA8ZmQtdG9vbGJhciBmZFR5cGU9XCJ0cmFuc3BhcmVudFwiIFtjbGVhckJvcmRlcl09XCJ0cnVlXCI+XG4gICAgICAgICAgICAgICAgICAgIDxidXR0b24gZmQtYnV0dG9uIGZkVHlwZT1cInRyYW5zcGFyZW50XCIgYXJpYS1sYWJlbD1cIkNsb3NlXCIgKGNsaWNrKT1cImNsb3NlLmVtaXQoKVwiIHRpdGxlPVwiQ2xvc2VcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpIFtjbGFzc109XCInc2FwLWljb24tLScgKyAoaXNNb2JpbGUgPyAocnRsID8gJ2Fycm93LXJpZ2h0JyA6ICdhcnJvdy1sZWZ0JykgOiAnZGVjbGluZScpXCI+PC9pPlxuICAgICAgICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgICAgICA8L2ZkLXRvb2xiYXI+XG4gICAgICAgICAgICA8L2ZkLWR5bmFtaWMtcGFnZS1sYXlvdXQtYWN0aW9ucz5cbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2UtaGVhZGVyPlxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLXN1YmhlYWRlclxuICAgICAgICAgICAgW3Bpbm5hYmxlXT1cInRydWVcIlxuICAgICAgICAgICAgW2NvbGxhcHNpYmxlXT1cImZhbHNlXCJcbiAgICAgICAgICAgICpuZ0lmPVwiIWhpZGVTZWFyY2hQYW5lbCAmJiBzZWFyY2hQYW5lbFVpICYmICFzaWRlQ29udGVudE1vZGVcIlxuICAgICAgICA+XG4gICAgICAgICAgICA8YnN1LXNlYXJjaC1wYW5lbFxuICAgICAgICAgICAgICAgICpuZ0lmPVwiIWlzTW9iaWxlXCJcbiAgICAgICAgICAgICAgICBbaGlkZUJ1dHRvbnNdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgW3NlYXJjaFBhbmVsVWldPVwic2VhcmNoUGFuZWxVaVwiXG4gICAgICAgICAgICAgICAgKG1vQ2hhbmdlZCk9XCJvblNlYXJjaFBhbmVsTW9DaGFuZ2VkKClcIlxuICAgICAgICAgICAgPjwvYnN1LXNlYXJjaC1wYW5lbD5cbiAgICAgICAgPC9mZC1keW5hbWljLXBhZ2Utc3ViaGVhZGVyPlxuICAgICAgICA8ZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQgKm5nSWY9XCIhdGFiTW9kZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxuICAgICAgICAgICAgICAgICpuZ1RlbXBsYXRlT3V0bGV0PVwiXG4gICAgICAgICAgICAgICAgICAgIHNpZGVDb250ZW50TW9kZSA/IHNpZGVDb250ZW50VGVtcGxhdGUgOiB2aWV3ZXJUZW1wbGF0ZTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dDogeyBub1JlbmRlclBhZ2Vpbmc6IHRydWUgfVxuICAgICAgICAgICAgICAgIFwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWNvbnRlbnQ+XG4gICAgICAgIDxmZC1keW5hbWljLXBhZ2UtZm9vdGVyICpuZ0lmPVwicGFnaW5nU2V0dGluZz8uVG90YWxQYWdlc1wiPlxuICAgICAgICAgICAgPCEtLSBwYWdlIGZvb3RlciBjb250ZW50IGdvZXMgaGVyZSAtLT5cbiAgICAgICAgICAgIDxkaXYgZmQtYmFyIFtiYXJEZXNpZ25dPVwiJ2Zvb3RlcidcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGZkLWJhci1taWRkbGU+XG4gICAgICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtyZW5kZXJVbHZQYWdpbmddPVwiY29udGV4dFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbcGFnaW5nU2V0dGluZ109XCJwYWdpbmdTZXR0aW5nXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIChwYWdlQ2hhbmdlKT1cIm9uUGFnZUNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgPjwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZmQtZHluYW1pYy1wYWdlLWZvb3Rlcj5cbiAgICA8L2ZkLWR5bmFtaWMtcGFnZT5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwidGFiTW9kZVwiPlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmlld2VyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3JlcG9ydFRlbXBsYXRlPlxuICAgIDxic3UtbWFzayAqbmdJZj1cImxvYWRpbmdcIiBzaXplPVwic1wiPjwvYnN1LW1hc2s+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFoaWRlU2VhcmNoUGFuZWwgJiYgc2VhcmNoUGFuZWxVaSAmJiAhc2lkZUNvbnRlbnRNb2RlXCI+XG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hwYW5lbFRlbXBsYXRlOyBjb250ZXh0OiB7IGhpZGVCdXR0b25zOiBmYWxzZSB9XCI+PC9uZy1jb250YWluZXI+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLWNvbnRhaW5lciAqbmdUZW1wbGF0ZU91dGxldD1cInNpZGVDb250ZW50TW9kZSA/IHNpZGVDb250ZW50VGVtcGxhdGUgOiB2aWV3ZXJUZW1wbGF0ZVwiPiA8L25nLWNvbnRhaW5lcj5cbjwvbmctdGVtcGxhdGU+XG48bmctdGVtcGxhdGUgI3NpZGVDb250ZW50VGVtcGxhdGU+XG4gICAgPGZkLWR5bmFtaWMtc2lkZS1jb250ZW50IFtjbGFzcy5ydGxdPVwicnRsXCIgW3NpemVdPVwiZGV2aWNlU2l6ZSB8IHNhcFNpemVcIj5cbiAgICAgICAgPGZkLWR5bmFtaWMtc2lkZS1jb250ZW50LXNpZGU+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyXG4gICAgICAgICAgICAgICAgKm5nVGVtcGxhdGVPdXRsZXQ9XCJzZWFyY2hwYW5lbFRlbXBsYXRlOyBjb250ZXh0OiB7IGlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQ6IHRydWUgfVwiXG4gICAgICAgICAgICA+PC9uZy1jb250YWluZXI+XG4gICAgICAgIDwvZmQtZHluYW1pYy1zaWRlLWNvbnRlbnQtc2lkZT5cbiAgICAgICAgPGZkLWR5bmFtaWMtc2lkZS1jb250ZW50LW1haW4gW3N0eWxlLndpZHRoXT1cImRldmljZVNpemUgIT09ICdzJyA/IG1haW5Db250ZW50V2lkdGggOiBudWxsXCI+XG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ1RlbXBsYXRlT3V0bGV0PVwidmlld2VyVGVtcGxhdGVcIj48L25nLWNvbnRhaW5lcj5cbiAgICAgICAgPC9mZC1keW5hbWljLXNpZGUtY29udGVudC1tYWluPlxuICAgIDwvZmQtZHluYW1pYy1zaWRlLWNvbnRlbnQ+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlXG4gICAgI3NlYXJjaHBhbmVsVGVtcGxhdGVcbiAgICBsZXQtaXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudD1cImlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnRcIlxuICAgIGxldC1oaWRlQnV0dG9ucz1cImhpZGVCdXR0b25zXCJcbj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWlzU2VhcmNQYW5lbEluU2lkZUNvbnRlbnQ7IGVsc2Ugc2VhcmNocGFuZWxDYXJkVGVtcGF0ZVwiPlxuICAgICAgICA8YnN1LXNlYXJjaC1wYW5lbFxuICAgICAgICAgICAgKm5nSWY9XCIhaGlkZVNlYXJjaFBhbmVsICYmIHNlYXJjaFBhbmVsVWlcIlxuICAgICAgICAgICAgW3NlYXJjaFBhbmVsVWldPVwic2VhcmNoUGFuZWxVaVwiXG4gICAgICAgICAgICBbaXNTZWFyY1BhbmVsSW5TaWRlQ29udGVudF09XCJpc1NlYXJjUGFuZWxJblNpZGVDb250ZW50XCJcbiAgICAgICAgICAgIFtoaWRlQnV0dG9uc109XCJoaWRlQnV0dG9uc1wiXG4gICAgICAgICAgICAobW9DaGFuZ2VkKT1cIm9uU2VhcmNoUGFuZWxNb0NoYW5nZWQoKVwiXG4gICAgICAgID48L2JzdS1zZWFyY2gtcGFuZWw+XG4gICAgPC9uZy1jb250YWluZXI+XG4gICAgPG5nLXRlbXBsYXRlICNzZWFyY2hwYW5lbENhcmRUZW1wYXRlPlxuICAgICAgICA8ZmQtY2FyZCBjbGFzcz1cInNlYXJjaHBhbmVsLWNhcmRcIj5cbiAgICAgICAgICAgIDxmZC1jYXJkLWhlYWRlcj5cbiAgICAgICAgICAgICAgICA8aDIgZmQtY2FyZC10aXRsZT5cbiAgICAgICAgICAgICAgICAgICAgPGZkLWljb24gZ2x5cGg9XCJmaWx0ZXJcIj48L2ZkLWljb24+PHNwYW4+e3sgJ0ZpbHRlcicgfCBiYmJUcmFuc2xhdGUgfX08L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9oMj5cbiAgICAgICAgICAgIDwvZmQtY2FyZC1oZWFkZXI+XG4gICAgICAgICAgICA8ZmQtY2FyZC1jb250ZW50PiA8L2ZkLWNhcmQtY29udGVudD5cbiAgICAgICAgICAgIDxmZC1jYXJkLWZvb3Rlcj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgICpmZENhcmRGb290ZXJBY3Rpb25JdGVtXG4gICAgICAgICAgICAgICAgICAgIGZkLWJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIidTZWFyY2gnIHwgYmJiVHJhbnNsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgKmZkQ2FyZEZvb3RlckFjdGlvbkl0ZW1cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgW2xhYmVsXT1cIignRGVsZXRlJyB8IGJiYlRyYW5zbGF0ZSkgKyAnICcgKyAoJ0ZpbHRlcnMnIHwgYmJiVHJhbnNsYXRlKVwiXG4gICAgICAgICAgICAgICAgICAgIChjbGljayk9XCJvbkNsZWFyU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICBbZmRPdmVyZmxvd0dyb3VwXT1cIjFcIlxuICAgICAgICAgICAgICAgICAgICBbZmRDb250ZW50RGVuc2l0eV09XCJjb250ZW50RGVuc2l0eVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mZC1jYXJkLWZvb3Rlcj5cbiAgICAgICAgPC9mZC1jYXJkPlxuICAgIDwvbmctdGVtcGxhdGU+XG48L25nLXRlbXBsYXRlPlxuPG5nLXRlbXBsYXRlICN2aWV3ZXJUZW1wbGF0ZSBsZXQtbm9SZW5kZXJQYWdlaW5nPVwibm9SZW5kZXJQYWdlaW5nXCI+XG4gICAgPGRpdlxuICAgICAgICBjbGFzcz1cInZpZXdlci1jb250YWluZXJcIlxuICAgICAgICBmaWxsRW1wdHlTcGFjZVxuICAgICAgICBbZGlzYWJsZV09XCJpc1JlcG9ydFBhZ2UgfHwgIWZpbGxQYWdlXCJcbiAgICAgICAgW2RlY3JlbWVudF09XCJkZXZpY2VTaXplICE9PSAncycgPyAnMTAwcHgnIDogJzc1cHgnXCJcbiAgICAgICAgW3N0eWxlLmhlaWdodF09XCJ2aWV3ZXJMb2FkaW5nID8gJzEwMCUnIDogJ2F1dG8nXCJcbiAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHRdPVwiaXNSZXBvcnRQYWdlID8gJzEwMCUnIDogbnVsbFwiXG4gICAgICAgIFtzdHlsZS5wb3NpdGlvbl09XCJ2aWV3ZXJMb2FkaW5nID8gJ3JlbGF0aXZlJyA6IG51bGxcIlxuICAgID5cbiAgICAgICAgPGJzdS1tYXNrICpuZ0lmPVwidmlld2VyTG9hZGluZ1wiIHNpemU9XCJtXCI+PC9ic3UtbWFzaz5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cInZpZXdlckNvbnRyb2xcIiBbcmVuZGVyVWx2Vmlld2VyXT1cInZpZXdlckNvbnRyb2xcIj48L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyXG4gICAgICAgICpuZ0lmPVwiIW5vUmVuZGVyUGFnZWluZyAmJiBwYWdpbmdTZXR0aW5nPy5Ub3RhbFBhZ2VzICYmICFoaWRlUGFnZWluZ1wiXG4gICAgICAgIFtyZW5kZXJVbHZQYWdpbmddPVwiY29udGV4dFwiXG4gICAgICAgIFtwYWdpbmdTZXR0aW5nXT1cInBhZ2luZ1NldHRpbmdcIlxuICAgICAgICAocGFnZUNoYW5nZSk9XCJvblBhZ2VDaGFuZ2UoJGV2ZW50KVwiXG4gICAgPjwvbmctY29udGFpbmVyPlxuPC9uZy10ZW1wbGF0ZT5cbjxuZy10ZW1wbGF0ZSBsZXQtZGlhbG9nIGxldC1kaWFsb2dDb25maWc9XCJkaWFsb2dDb25maWdcIiAjc2VhcmNocGFuZWxEaWFsb2c+XG4gICAgPGZkLWRpYWxvZyBbZGlhbG9nQ29uZmlnXT1cImRpYWxvZ0NvbmZpZ1wiIFtkaWFsb2dSZWZdPVwiZGlhbG9nXCI+XG4gICAgICAgIDxmZC1kaWFsb2ctaGVhZGVyPlxuICAgICAgICAgICAgPGgxIGlkPVwiZmQtZGlhbG9nLWhlYWRlci0xMFwiIGZkLXRpdGxlPnt7ICdGaWx0ZXJzJyB8IGJiYlRyYW5zbGF0ZSB9fTwvaDE+XG4gICAgICAgICAgICA8YnV0dG9uIGZkLWRpYWxvZy1jbG9zZS1idXR0b24gKGNsaWNrKT1cImRpYWxvZy5kaXNtaXNzKCdDbG9zZSBidXR0b24nKVwiPjwvYnV0dG9uPlxuICAgICAgICA8L2ZkLWRpYWxvZy1oZWFkZXI+XG4gICAgICAgIDxmZC1kaWFsb2ctYm9keT5cbiAgICAgICAgICAgIDxic3Utc2VhcmNoLXBhbmVsXG4gICAgICAgICAgICAgICAgW2hpZGVCdXR0b25zXT1cInRydWVcIlxuICAgICAgICAgICAgICAgIFtzZWFyY2hQYW5lbFVpXT1cInNlYXJjaFBhbmVsVWlcIlxuICAgICAgICAgICAgICAgIChtb0NoYW5nZWQpPVwib25TZWFyY2hQYW5lbE1vQ2hhbmdlZCgpXCJcbiAgICAgICAgICAgID48L2JzdS1zZWFyY2gtcGFuZWw+XG4gICAgICAgIDwvZmQtZGlhbG9nLWJvZHk+XG5cbiAgICAgICAgPGZkLWRpYWxvZy1mb290ZXI+XG4gICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgICAgICBmZC1idXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtaW5pdGlhbC1mb2N1c1xuICAgICAgICAgICAgICAgICAgICBmZFR5cGU9XCJlbXBoYXNpemVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRpYWxvZy5kaXNtaXNzKCk7IG9uU2VhcmNoKClcIlxuICAgICAgICAgICAgICAgICAgICBbbGFiZWxdPVwiJ1NlYXJjaCcgfCBiYmJUcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgID48L2J1dHRvbj5cbiAgICAgICAgICAgIDwvZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICA8ZmQtZGlhbG9nLWZvb3Rlci1idXR0b24+XG4gICAgICAgICAgICAgICAgPGJ1dHRvbiBmZC1idXR0b24gW2xhYmVsXT1cIidDbGVhcicgfCBiYmJUcmFuc2xhdGVcIiAoY2xpY2spPVwib25DbGVhclNlYXJjaCgpXCI+PC9idXR0b24+XG4gICAgICAgICAgICA8L2ZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgPGZkLWRpYWxvZy1mb290ZXItYnV0dG9uPlxuICAgICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICAgICAgZmQtYnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGZkVHlwZT1cInRyYW5zcGFyZW50XCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cImRpYWxvZy5kaXNtaXNzKCdDbG9zZSBidXR0b24nKVwiXG4gICAgICAgICAgICAgICAgICAgIFtsYWJlbF09XCInQ2FuY2VsJyB8IGJiYlRyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgPjwvYnV0dG9uPlxuICAgICAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyLWJ1dHRvbj5cbiAgICAgICAgPC9mZC1kaWFsb2ctZm9vdGVyPlxuICAgIDwvZmQtZGlhbG9nPlxuPC9uZy10ZW1wbGF0ZT5cbiJdfQ==
@@ -6,9 +6,9 @@ import * as i2 from "../barsa-asp-viewer/barsa-asp-viewer.component";
6
6
  export class UiAspReportViewerComponent extends SapUiReportBaseComponent {
7
7
  }
8
8
  UiAspReportViewerComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiAspReportViewerComponent, deps: null, target: i0.ɵɵFactoryTarget.Component });
9
- UiAspReportViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiAspReportViewerComponent, selector: "bsu-ui-asp-report-viewer", usesInheritance: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\n <bsu-barsa-asp-viewer\n fillEmptySpace\n [dontUseTopBound]=\"true\"\n [context]=\"context\"\n [style.min-height.px]=\"parentHeight\"\n [parentHeight]=\"parentHeight\"\n ></bsu-barsa-asp-viewer>\n</ng-container>\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "directive", type: i1.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "dontUseTopBound"] }, { kind: "component", type: i2.BarsaAspViewerComponent, selector: "bsu-barsa-asp-viewer", inputs: ["context", "parentHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
9
+ UiAspReportViewerComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "14.2.7", type: UiAspReportViewerComponent, selector: "bsu-ui-asp-report-viewer", usesInheritance: true, ngImport: i0, template: "<ng-container *untilInView=\"el\">\r\n <bsu-barsa-asp-viewer\r\n fillEmptySpace\r\n [dontUseTopBound]=\"true\"\r\n [context]=\"context\"\r\n [style.min-height.px]=\"parentHeight\"\r\n [parentHeight]=\"parentHeight\"\r\n ></bsu-barsa-asp-viewer>\r\n</ng-container>\r\n", styles: [":host{display:block;width:100%;height:100%}\n"], dependencies: [{ kind: "directive", type: i1.UntilInViewDirective, selector: "[untilInView]", inputs: ["untilInView", "intersectionDebounce"] }, { kind: "directive", type: i1.FillEmptySpaceDirective, selector: "[fillEmptySpace]", inputs: ["containerDom", "decrement", "disable", "dontUseTopBound"] }, { kind: "component", type: i2.BarsaAspViewerComponent, selector: "bsu-barsa-asp-viewer", inputs: ["context", "parentHeight"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
10
10
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "14.2.7", ngImport: i0, type: UiAspReportViewerComponent, decorators: [{
11
11
  type: Component,
12
- args: [{ selector: 'bsu-ui-asp-report-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *untilInView=\"el\">\n <bsu-barsa-asp-viewer\n fillEmptySpace\n [dontUseTopBound]=\"true\"\n [context]=\"context\"\n [style.min-height.px]=\"parentHeight\"\n [parentHeight]=\"parentHeight\"\n ></bsu-barsa-asp-viewer>\n</ng-container>\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
12
+ args: [{ selector: 'bsu-ui-asp-report-viewer', changeDetection: ChangeDetectionStrategy.OnPush, template: "<ng-container *untilInView=\"el\">\r\n <bsu-barsa-asp-viewer\r\n fillEmptySpace\r\n [dontUseTopBound]=\"true\"\r\n [context]=\"context\"\r\n [style.min-height.px]=\"parentHeight\"\r\n [parentHeight]=\"parentHeight\"\r\n ></bsu-barsa-asp-viewer>\r\n</ng-container>\r\n", styles: [":host{display:block;width:100%;height:100%}\n"] }]
13
13
  }] });
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYXNwLXJlcG9ydC12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktYXNwLXJlcG9ydC12aWV3ZXIvdWktYXNwLXJlcG9ydC12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktYXNwLXJlcG9ydC12aWV3ZXIvdWktYXNwLXJlcG9ydC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQVEzRSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsd0JBQWlEOzt1SEFBcEYsMEJBQTBCOzJHQUExQiwwQkFBMEIsdUZDWHZDLG9TQVNBOzJGREVhLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDSSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZyB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgU2FwVWlSZXBvcnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2FwLXVpLXJlcG9ydC1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXVpLWFzcC1yZXBvcnQtdmlld2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1hc3AtcmVwb3J0LXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS1hc3AtcmVwb3J0LXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpQXNwUmVwb3J0Vmlld2VyQ29tcG9uZW50IGV4dGVuZHMgU2FwVWlSZXBvcnRCYXNlQ29tcG9uZW50PFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPiB7fVxyXG4iLCI8bmctY29udGFpbmVyICp1bnRpbEluVmlldz1cImVsXCI+XG4gICAgPGJzdS1iYXJzYS1hc3Atdmlld2VyXG4gICAgICAgIGZpbGxFbXB0eVNwYWNlXG4gICAgICAgIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiXG4gICAgICAgIFtjb250ZXh0XT1cImNvbnRleHRcIlxuICAgICAgICBbc3R5bGUubWluLWhlaWdodC5weF09XCJwYXJlbnRIZWlnaHRcIlxuICAgICAgICBbcGFyZW50SGVpZ2h0XT1cInBhcmVudEhlaWdodFwiXG4gICAgPjwvYnN1LWJhcnNhLWFzcC12aWV3ZXI+XG48L25nLWNvbnRhaW5lcj5cbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidWktYXNwLXJlcG9ydC12aWV3ZXIuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktYXNwLXJlcG9ydC12aWV3ZXIvdWktYXNwLXJlcG9ydC12aWV3ZXIuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYmFyc2Etc2FwLXVpL3NyYy9saWIvdWktYXNwLXJlcG9ydC12aWV3ZXIvdWktYXNwLXJlcG9ydC12aWV3ZXIuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLHVCQUF1QixFQUFFLFNBQVMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUduRSxPQUFPLEVBQUUsd0JBQXdCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQzs7OztBQVEzRSxNQUFNLE9BQU8sMEJBQTJCLFNBQVEsd0JBQWlEOzt1SEFBcEYsMEJBQTBCOzJHQUExQiwwQkFBMEIsdUZDWHZDLHNUQVNBOzJGREVhLDBCQUEwQjtrQkFOdEMsU0FBUzsrQkFDSSwwQkFBMEIsbUJBR25CLHVCQUF1QixDQUFDLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSwgQ29tcG9uZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcblxyXG5pbXBvcnQgeyBVaVJlcG9ydFZpZXdCYXNlU2V0dGluZyB9IGZyb20gJ2JhcnNhLW5vdmluLXJheS1jb3JlJztcclxuaW1wb3J0IHsgU2FwVWlSZXBvcnRCYXNlQ29tcG9uZW50IH0gZnJvbSAnLi4vc2FwLXVpLXJlcG9ydC1iYXNlLmNvbXBvbmVudCc7XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHNlbGVjdG9yOiAnYnN1LXVpLWFzcC1yZXBvcnQtdmlld2VyJyxcclxuICAgIHRlbXBsYXRlVXJsOiAnLi91aS1hc3AtcmVwb3J0LXZpZXdlci5jb21wb25lbnQuaHRtbCcsXHJcbiAgICBzdHlsZVVybHM6IFsnLi91aS1hc3AtcmVwb3J0LXZpZXdlci5jb21wb25lbnQuc2NzcyddLFxyXG4gICAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcclxufSlcclxuZXhwb3J0IGNsYXNzIFVpQXNwUmVwb3J0Vmlld2VyQ29tcG9uZW50IGV4dGVuZHMgU2FwVWlSZXBvcnRCYXNlQ29tcG9uZW50PFVpUmVwb3J0Vmlld0Jhc2VTZXR0aW5nPiB7fVxyXG4iLCI8bmctY29udGFpbmVyICp1bnRpbEluVmlldz1cImVsXCI+XHJcbiAgICA8YnN1LWJhcnNhLWFzcC12aWV3ZXJcclxuICAgICAgICBmaWxsRW1wdHlTcGFjZVxyXG4gICAgICAgIFtkb250VXNlVG9wQm91bmRdPVwidHJ1ZVwiXHJcbiAgICAgICAgW2NvbnRleHRdPVwiY29udGV4dFwiXHJcbiAgICAgICAgW3N0eWxlLm1pbi1oZWlnaHQucHhdPVwicGFyZW50SGVpZ2h0XCJcclxuICAgICAgICBbcGFyZW50SGVpZ2h0XT1cInBhcmVudEhlaWdodFwiXHJcbiAgICA+PC9ic3UtYmFyc2EtYXNwLXZpZXdlcj5cclxuPC9uZy1jb250YWluZXI+XHJcbiJdfQ==